[
  {
    "path": ".gitignore",
    "content": "*.o\n*.d\n*.elf\n*.moc\nmoc_*.cpp\nui_*.h\n*.pro.user\n"
  },
  {
    "path": ".travis.yml",
    "content": "language: cpp\nsudo: required\ndist: xenial\n\nos: linux\n\nenv:\n  global:\n    - DISPLAY=:99\n    - MXE_TRIPLE=i686-w64-mingw32.shared\n\nbefore_install:\n  - chmod a+x ./ci/tests-environment.sh\n  - ./ci/tests-environment.sh\n\nscript:\n - chmod a+x ./ci/tests-ci.sh\n - ./ci/tests-ci.sh\n\nafter_success:\n  - wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh\n  # quick fix for issue 223\n  - if [ \"$TRAVIS_TAG\" != \"$TRAVIS_BRANCH\" ] && [ \"$TRAVIS_BRANCH\" != \"master\" ]; then export TRAVIS_EVENT_TYPE=pull_request; fi\n  - bash ./upload.sh ./Embedded_IDE-*.AppImage ./Embedded_IDE-*.zip ./Embedded_IDE-*.tar.bz2\n\nbranches:\n  except:\n    - # Do not build tags that we create when we upload to GitHub Releases\n    - /^(?i:continuous)$/\n"
  },
  {
    "path": "3rdpart/astyle/ASBeautifier.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASBeautifier.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#include \"astyle.h\"\n\n#include <algorithm>\n\n\nnamespace astyle {\n\n// this must be global\nstatic int g_preprocessorCppExternCBracket;\n\n/**\n * ASBeautifier's constructor\n * This constructor is called only once for each source file.\n * The cloned ASBeautifier objects are created with the copy constructor.\n */\nASBeautifier::ASBeautifier()\n{\n\tg_preprocessorCppExternCBracket = 0;\n\n\twaitingBeautifierStack = NULL;\n\tactiveBeautifierStack = NULL;\n\twaitingBeautifierStackLengthStack = NULL;\n\tactiveBeautifierStackLengthStack = NULL;\n\n\theaderStack = NULL;\n\ttempStacks = NULL;\n\tblockParenDepthStack = NULL;\n\tblockStatementStack = NULL;\n\tparenStatementStack = NULL;\n\tbracketBlockStateStack = NULL;\n\tinStatementIndentStack = NULL;\n\tinStatementIndentStackSizeStack = NULL;\n\tparenIndentStack = NULL;\n\tpreprocIndentStack = NULL;\n\tsourceIterator = NULL;\n\tisModeManuallySet = false;\n\tshouldForceTabIndentation = false;\n\tsetSpaceIndentation(4);\n\tsetMinConditionalIndentOption(MINCOND_TWO);\n\tsetMaxInStatementIndentLength(40);\n\tclassInitializerIndents = 1;\n\ttabLength = 0;\n\tsetClassIndent(false);\n\tsetModifierIndent(false);\n\tsetSwitchIndent(false);\n\tsetCaseIndent(false);\n\tsetBlockIndent(false);\n\tsetBracketIndent(false);\n\tsetBracketIndentVtk(false);\n\tsetNamespaceIndent(false);\n\tsetLabelIndent(false);\n\tsetEmptyLineFill(false);\n\tsetCStyle();\n\tsetPreprocDefineIndent(false);\n\tsetPreprocConditionalIndent(false);\n\tsetAlignMethodColon(false);\n\n\t// initialize ASBeautifier member vectors\n\tbeautifierFileType = 9;\t\t// reset to an invalid type\n\theaders = new vector<const string*>;\n\tnonParenHeaders = new vector<const string*>;\n\tassignmentOperators = new vector<const string*>;\n\tnonAssignmentOperators = new vector<const string*>;\n\tpreBlockStatements = new vector<const string*>;\n\tpreCommandHeaders = new vector<const string*>;\n\tindentableHeaders = new vector<const string*>;\n}\n\n/**\n * ASBeautifier's copy constructor\n * Copy the vector objects to vectors in the new ASBeautifier\n * object so the new object can be destroyed without deleting\n * the vector objects in the copied vector.\n * This is the reason a copy constructor is needed.\n *\n * Must explicitly call the base class copy constructor.\n */\nASBeautifier::ASBeautifier(const ASBeautifier &other) : ASBase(other)\n{\n\t// these don't need to copy the stack\n\twaitingBeautifierStack = NULL;\n\tactiveBeautifierStack = NULL;\n\twaitingBeautifierStackLengthStack = NULL;\n\tactiveBeautifierStackLengthStack = NULL;\n\n\t// vector '=' operator performs a DEEP copy of all elements in the vector\n\n\theaderStack = new vector<const string*>;\n\t*headerStack = *other.headerStack;\n\n\ttempStacks = copyTempStacks(other);\n\n\tblockParenDepthStack = new vector<int>;\n\t*blockParenDepthStack = *other.blockParenDepthStack;\n\n\tblockStatementStack = new vector<bool>;\n\t*blockStatementStack = *other.blockStatementStack;\n\n\tparenStatementStack = new vector<bool>;\n\t*parenStatementStack = *other.parenStatementStack;\n\n\tbracketBlockStateStack = new vector<bool>;\n\t*bracketBlockStateStack = *other.bracketBlockStateStack;\n\n\tinStatementIndentStack = new vector<int>;\n\t*inStatementIndentStack = *other.inStatementIndentStack;\n\n\tinStatementIndentStackSizeStack = new vector<int>;\n\t*inStatementIndentStackSizeStack = *other.inStatementIndentStackSizeStack;\n\n\tparenIndentStack = new vector<int>;\n\t*parenIndentStack = *other.parenIndentStack;\n\n\tpreprocIndentStack = new vector<pair<int, int> >;\n\t*preprocIndentStack = *other.preprocIndentStack;\n\n\t// Copy the pointers to vectors.\n\t// This is ok because the original ASBeautifier object\n\t// is not deleted until end of job.\n\tbeautifierFileType = other.beautifierFileType;\n\theaders = other.headers;\n\tnonParenHeaders = other.nonParenHeaders;\n\tassignmentOperators = other.assignmentOperators;\n\tnonAssignmentOperators = other.nonAssignmentOperators;\n\tpreBlockStatements = other.preBlockStatements;\n\tpreCommandHeaders = other.preCommandHeaders;\n\tindentableHeaders = other.indentableHeaders;\n\n\t// protected variables\n\t// variables set by ASFormatter\n\t// must also be updated in activeBeautifierStack\n\tinLineNumber = other.inLineNumber;\n\thorstmannIndentInStatement = other.horstmannIndentInStatement;\n\tnonInStatementBracket = other.nonInStatementBracket;\n\tlineCommentNoBeautify = other.lineCommentNoBeautify;\n\tisElseHeaderIndent = other.isElseHeaderIndent;\n\tisCaseHeaderCommentIndent = other.isCaseHeaderCommentIndent;\n\tisNonInStatementArray = other.isNonInStatementArray;\n\tisSharpAccessor = other.isSharpAccessor;\n\tisSharpDelegate = other.isSharpDelegate;\n\tisInExternC = other.isInExternC;\n\tisInBeautifySQL = other.isInBeautifySQL;\n\tisInIndentableStruct = other.isInIndentableStruct;\n\tisInIndentablePreproc = other.isInIndentablePreproc;\n\n\t// private variables\n\tsourceIterator = other.sourceIterator;\n\tcurrentHeader = other.currentHeader;\n\tpreviousLastLineHeader = other.previousLastLineHeader;\n\tprobationHeader = other.probationHeader;\n\tlastLineHeader = other.lastLineHeader;\n\tindentString = other.indentString;\n\tverbatimDelimiter = other.verbatimDelimiter;\n\tisInQuote = other.isInQuote;\n\tisInVerbatimQuote = other.isInVerbatimQuote;\n\thaveLineContinuationChar = other.haveLineContinuationChar;\n\tisInAsm = other.isInAsm;\n\tisInAsmOneLine = other.isInAsmOneLine;\n\tisInAsmBlock = other.isInAsmBlock;\n\tisInComment = other.isInComment;\n\tisInPreprocessorComment = other.isInPreprocessorComment;\n\tisInHorstmannComment = other.isInHorstmannComment;\n\tisInCase = other.isInCase;\n\tisInQuestion = other.isInQuestion;\n\tisInStatement = other.isInStatement;\n\tisInHeader = other.isInHeader;\n\tisInTemplate = other.isInTemplate;\n\tisInDefine = other.isInDefine;\n\tisInDefineDefinition = other.isInDefineDefinition;\n\tclassIndent = other.classIndent;\n\tisIndentModeOff = other.isIndentModeOff;\n\tisInClassHeader = other.isInClassHeader;\n\tisInClassHeaderTab = other.isInClassHeaderTab;\n\tisInClassInitializer = other.isInClassInitializer;\n\tisInClass = other.isInClass;\n\tisInObjCMethodDefinition = other.isInObjCMethodDefinition;\n\tisImmediatelyPostObjCMethodDefinition = other.isImmediatelyPostObjCMethodDefinition;\n\tisInIndentablePreprocBlock = other.isInIndentablePreprocBlock;\n\tisInObjCInterface = other.isInObjCInterface;\n\tisInEnum = other.isInEnum;\n\tisInEnumTypeID = other.isInEnumTypeID;\n\tisInLet = other.isInLet;\n\tmodifierIndent = other.modifierIndent;\n\tswitchIndent = other.switchIndent;\n\tcaseIndent = other.caseIndent;\n\tnamespaceIndent = other.namespaceIndent;\n\tbracketIndent = other.bracketIndent;\n\tbracketIndentVtk = other.bracketIndentVtk;\n\tblockIndent = other.blockIndent;\n\tlabelIndent = other.labelIndent;\n\tisInConditional = other.isInConditional;\n\tisModeManuallySet = other.isModeManuallySet;\n\tshouldForceTabIndentation = other.shouldForceTabIndentation;\n\temptyLineFill = other.emptyLineFill;\n\tlineOpensWithLineComment = other.lineOpensWithLineComment;\n\tlineOpensWithComment = other.lineOpensWithComment;\n\tlineStartsInComment = other.lineStartsInComment;\n\tbackslashEndsPrevLine = other.backslashEndsPrevLine;\n\tblockCommentNoIndent = other.blockCommentNoIndent;\n\tblockCommentNoBeautify = other.blockCommentNoBeautify;\n\tpreviousLineProbationTab = other.previousLineProbationTab;\n\tlineBeginsWithOpenBracket = other.lineBeginsWithOpenBracket;\n\tlineBeginsWithCloseBracket = other.lineBeginsWithCloseBracket;\n\tlineBeginsWithComma = other.lineBeginsWithComma;\n\tlineIsCommentOnly = other.lineIsCommentOnly;\n\tlineIsLineCommentOnly = other.lineIsLineCommentOnly;\n\tshouldIndentBrackettedLine = other.shouldIndentBrackettedLine;\n\tisInSwitch = other.isInSwitch;\n\tfoundPreCommandHeader = other.foundPreCommandHeader;\n\tfoundPreCommandMacro = other.foundPreCommandMacro;\n\tshouldAlignMethodColon = other.shouldAlignMethodColon;\n\tshouldIndentPreprocDefine = other.shouldIndentPreprocDefine;\n\tshouldIndentPreprocConditional = other.shouldIndentPreprocConditional;\n\tindentCount = other.indentCount;\n\tspaceIndentCount = other.spaceIndentCount;\n\tspaceIndentObjCMethodDefinition = other.spaceIndentObjCMethodDefinition;\n\tcolonIndentObjCMethodDefinition = other.colonIndentObjCMethodDefinition;\n\tlineOpeningBlocksNum = other.lineOpeningBlocksNum;\n\tlineClosingBlocksNum = other.lineClosingBlocksNum;\n\tfileType = other.fileType;\n\tminConditionalOption = other.minConditionalOption;\n\tminConditionalIndent = other.minConditionalIndent;\n\tparenDepth = other.parenDepth;\n\tindentLength = other.indentLength;\n\ttabLength = other.tabLength;\n\tblockTabCount = other.blockTabCount;\n\tmaxInStatementIndent = other.maxInStatementIndent;\n\tclassInitializerIndents = other.classInitializerIndents;\n\ttemplateDepth = other.templateDepth;\n\tsquareBracketCount = other.squareBracketCount;\n\tprevFinalLineSpaceIndentCount = other.prevFinalLineSpaceIndentCount;\n\tprevFinalLineIndentCount = other.prevFinalLineIndentCount;\n\tdefineIndentCount = other.defineIndentCount;\n\tpreprocBlockIndent = other.preprocBlockIndent;\n\tquoteChar = other.quoteChar;\n\tprevNonSpaceCh = other.prevNonSpaceCh;\n\tcurrentNonSpaceCh = other.currentNonSpaceCh;\n\tcurrentNonLegalCh = other.currentNonLegalCh;\n\tprevNonLegalCh = other.prevNonLegalCh;\n}\n\n/**\n * ASBeautifier's destructor\n */\nASBeautifier::~ASBeautifier()\n{\n\tdeleteBeautifierContainer(waitingBeautifierStack);\n\tdeleteBeautifierContainer(activeBeautifierStack);\n\tdeleteContainer(waitingBeautifierStackLengthStack);\n\tdeleteContainer(activeBeautifierStackLengthStack);\n\tdeleteContainer(headerStack);\n\tdeleteTempStacksContainer(tempStacks);\n\tdeleteContainer(blockParenDepthStack);\n\tdeleteContainer(blockStatementStack);\n\tdeleteContainer(parenStatementStack);\n\tdeleteContainer(bracketBlockStateStack);\n\tdeleteContainer(inStatementIndentStack);\n\tdeleteContainer(inStatementIndentStackSizeStack);\n\tdeleteContainer(parenIndentStack);\n\tdeleteContainer(preprocIndentStack);\n}\n\n/**\n * initialize the ASBeautifier.\n *\n * This init() should be called every time a ABeautifier object is to start\n * beautifying a NEW source file.\n * It is called only when a new ASFormatter object is created.\n * init() receives a pointer to a ASSourceIterator object that will be\n * used to iterate through the source code.\n *\n * @param iter     a pointer to the ASSourceIterator or ASStreamIterator object.\n */\nvoid ASBeautifier::init(ASSourceIterator* iter)\n{\n\tsourceIterator = iter;\n\tinitVectors();\n\tASBase::init(getFileType());\n\n\tinitContainer(waitingBeautifierStack, new vector<ASBeautifier*>);\n\tinitContainer(activeBeautifierStack, new vector<ASBeautifier*>);\n\n\tinitContainer(waitingBeautifierStackLengthStack, new vector<int>);\n\tinitContainer(activeBeautifierStackLengthStack, new vector<int>);\n\n\tinitContainer(headerStack, new vector<const string*>);\n\n\tinitTempStacksContainer(tempStacks, new vector<vector<const string*>*>);\n\ttempStacks->push_back(new vector<const string*>);\n\n\tinitContainer(blockParenDepthStack, new vector<int>);\n\tinitContainer(blockStatementStack, new vector<bool>);\n\tinitContainer(parenStatementStack, new vector<bool>);\n\tinitContainer(bracketBlockStateStack, new vector<bool>);\n\tbracketBlockStateStack->push_back(true);\n\tinitContainer(inStatementIndentStack, new vector<int>);\n\tinitContainer(inStatementIndentStackSizeStack, new vector<int>);\n\tinStatementIndentStackSizeStack->push_back(0);\n\tinitContainer(parenIndentStack, new vector<int>);\n\tinitContainer(preprocIndentStack, new vector<pair<int, int> >);\n\n\tpreviousLastLineHeader = NULL;\n\tcurrentHeader = NULL;\n\n\tisInQuote = false;\n\tisInVerbatimQuote = false;\n\thaveLineContinuationChar = false;\n\tisInAsm = false;\n\tisInAsmOneLine = false;\n\tisInAsmBlock = false;\n\tisInComment = false;\n\tisInPreprocessorComment = false;\n\tisInHorstmannComment = false;\n\tisInStatement = false;\n\tisInCase = false;\n\tisInQuestion = false;\n\tisIndentModeOff = false;\n\tisInClassHeader = false;\n\tisInClassHeaderTab = false;\n\tisInClassInitializer = false;\n\tisInClass = false;\n\tisInObjCMethodDefinition = false;\n\tisImmediatelyPostObjCMethodDefinition = false;\n\tisInIndentablePreprocBlock = false;\n\tisInObjCInterface = false;\n\tisInEnum = false;\n\tisInEnumTypeID = false;\n\tisInLet = false;\n\tisInHeader = false;\n\tisInTemplate = false;\n\tisInConditional = false;\n\n\tindentCount = 0;\n\tspaceIndentCount = 0;\n\tspaceIndentObjCMethodDefinition = 0;\n\tcolonIndentObjCMethodDefinition = 0;\n\tlineOpeningBlocksNum = 0;\n\tlineClosingBlocksNum = 0;\n\ttemplateDepth = 0;\n\tsquareBracketCount = 0;\n\tparenDepth = 0;\n\tblockTabCount = 0;\n\tprevFinalLineSpaceIndentCount = 0;\n\tprevFinalLineIndentCount = 0;\n\tdefineIndentCount = 0;\n\tpreprocBlockIndent = 0;\n\tprevNonSpaceCh = '{';\n\tcurrentNonSpaceCh = '{';\n\tprevNonLegalCh = '{';\n\tcurrentNonLegalCh = '{';\n\tquoteChar = ' ';\n\tprobationHeader = NULL;\n\tlastLineHeader = NULL;\n\tbackslashEndsPrevLine = false;\n\tlineOpensWithLineComment = false;\n\tlineOpensWithComment = false;\n\tlineStartsInComment = false;\n\tisInDefine = false;\n\tisInDefineDefinition = false;\n\tlineCommentNoBeautify = false;\n\tisElseHeaderIndent = false;\n\tisCaseHeaderCommentIndent = false;\n\tblockCommentNoIndent = false;\n\tblockCommentNoBeautify = false;\n\tpreviousLineProbationTab = false;\n\tlineBeginsWithOpenBracket = false;\n\tlineBeginsWithCloseBracket = false;\n\tlineBeginsWithComma = false;\n\tlineIsCommentOnly = false;\n\tlineIsLineCommentOnly = false;\n\tshouldIndentBrackettedLine = true;\n\tisInSwitch = false;\n\tfoundPreCommandHeader = false;\n\tfoundPreCommandMacro = false;\n\n\tisNonInStatementArray = false;\n\tisSharpAccessor = false;\n\tisSharpDelegate = false;\n\tisInExternC = false;\n\tisInBeautifySQL = false;\n\tisInIndentableStruct = false;\n\tisInIndentablePreproc = false;\n\tinLineNumber = 0;\n\thorstmannIndentInStatement = 0;\n\tnonInStatementBracket = 0;\n}\n\n/*\n * initialize the vectors\n */\nvoid ASBeautifier::initVectors()\n{\n\tif (fileType == beautifierFileType)    // don't build unless necessary\n\t\treturn;\n\n\tbeautifierFileType = fileType;\n\n\theaders->clear();\n\tnonParenHeaders->clear();\n\tassignmentOperators->clear();\n\tnonAssignmentOperators->clear();\n\tpreBlockStatements->clear();\n\tpreCommandHeaders->clear();\n\tindentableHeaders->clear();\n\n\tASResource::buildHeaders(headers, fileType, true);\n\tASResource::buildNonParenHeaders(nonParenHeaders, fileType, true);\n\tASResource::buildAssignmentOperators(assignmentOperators);\n\tASResource::buildNonAssignmentOperators(nonAssignmentOperators);\n\tASResource::buildPreBlockStatements(preBlockStatements, fileType);\n\tASResource::buildPreCommandHeaders(preCommandHeaders, fileType);\n\tASResource::buildIndentableHeaders(indentableHeaders);\n}\n\n/**\n * set indentation style to C/C++.\n */\nvoid ASBeautifier::setCStyle()\n{\n\tfileType = C_TYPE;\n}\n\n/**\n * set indentation style to Java.\n */\nvoid ASBeautifier::setJavaStyle()\n{\n\tfileType = JAVA_TYPE;\n}\n\n/**\n * set indentation style to C#.\n */\nvoid ASBeautifier::setSharpStyle()\n{\n\tfileType = SHARP_TYPE;\n}\n\n/**\n * set mode manually set flag\n */\nvoid ASBeautifier::setModeManuallySet(bool state)\n{\n\tisModeManuallySet = state;\n}\n\n/**\n * set tabLength equal to indentLength.\n * This is done when tabLength is not explicitly set by\n * \"indent=force-tab-x\"\n *\n */\nvoid ASBeautifier::setDefaultTabLength()\n{\n\ttabLength = indentLength;\n}\n\n/**\n * indent using a different tab setting for indent=force-tab\n *\n * @param   length     number of spaces per tab.\n */\nvoid ASBeautifier::setForceTabXIndentation(int length)\n{\n\t// set tabLength instead of indentLength\n\tindentString = \"\\t\";\n\ttabLength = length;\n\tshouldForceTabIndentation = true;\n}\n\n/**\n * indent using one tab per indentation\n */\nvoid ASBeautifier::setTabIndentation(int length, bool forceTabs)\n{\n\tindentString = \"\\t\";\n\tindentLength = length;\n\tshouldForceTabIndentation = forceTabs;\n}\n\n/**\n * indent using a number of spaces per indentation.\n *\n * @param   length     number of spaces per indent.\n */\nvoid ASBeautifier::setSpaceIndentation(int length)\n{\n\tindentString = string(length, ' ');\n\tindentLength = length;\n}\n\n/**\n * set the maximum indentation between two lines in a multi-line statement.\n *\n * @param   max     maximum indentation length.\n */\nvoid ASBeautifier::setMaxInStatementIndentLength(int max)\n{\n\tmaxInStatementIndent = max;\n}\n\n/**\n * set the minimum conditional indentation option.\n *\n * @param   min     minimal indentation option.\n */\nvoid ASBeautifier::setMinConditionalIndentOption(int min)\n{\n\tminConditionalOption = min;\n}\n\n/**\n * set minConditionalIndent from the minConditionalOption.\n */\nvoid ASBeautifier::setMinConditionalIndentLength()\n{\n\tif (minConditionalOption == MINCOND_ZERO)\n\t\tminConditionalIndent = 0;\n\telse if (minConditionalOption == MINCOND_ONE)\n\t\tminConditionalIndent = indentLength;\n\telse if (minConditionalOption == MINCOND_ONEHALF)\n\t\tminConditionalIndent = indentLength / 2;\n\t// minConditionalOption = INDENT_TWO\n\telse\n\t\tminConditionalIndent = indentLength * 2;\n}\n\n/**\n * set the state of the bracket indent option. If true, brackets will\n * be indented one additional indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setBracketIndent(bool state)\n{\n\tbracketIndent = state;\n}\n\n/**\n* set the state of the bracket indent VTK option. If true, brackets will\n* be indented one additional indent, except for the opening bracket.\n*\n* @param   state             state of option.\n*/\nvoid ASBeautifier::setBracketIndentVtk(bool state)\n{\n\t// need to set both of these\n\tsetBracketIndent(state);\n\tbracketIndentVtk = state;\n}\n\n/**\n * set the state of the block indentation option. If true, entire blocks\n * will be indented one additional indent, similar to the GNU indent style.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setBlockIndent(bool state)\n{\n\tblockIndent = state;\n}\n\n/**\n * set the state of the class indentation option. If true, C++ class\n * definitions will be indented one additional indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setClassIndent(bool state)\n{\n\tclassIndent = state;\n}\n\n/**\n * set the state of the modifier indentation option. If true, C++ class\n * access modifiers will be indented one-half an indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setModifierIndent(bool state)\n{\n\tmodifierIndent = state;\n}\n\n/**\n * set the state of the switch indentation option. If true, blocks of 'switch'\n * statements will be indented one additional indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setSwitchIndent(bool state)\n{\n\tswitchIndent = state;\n}\n\n/**\n * set the state of the case indentation option. If true, lines of 'case'\n * statements will be indented one additional indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setCaseIndent(bool state)\n{\n\tcaseIndent = state;\n}\n\n/**\n * set the state of the namespace indentation option.\n * If true, blocks of 'namespace' statements will be indented one\n * additional indent. Otherwise, NO indentation will be added.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setNamespaceIndent(bool state)\n{\n\tnamespaceIndent = state;\n}\n\n/**\n * set the state of the label indentation option.\n * If true, labels will be indented one indent LESS than the\n * current indentation level.\n * If false, labels will be flushed to the left with NO\n * indent at all.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setLabelIndent(bool state)\n{\n\tlabelIndent = state;\n}\n\n/**\n * set the state of the preprocessor indentation option.\n * If true, multi-line #define statements will be indented.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setPreprocDefineIndent(bool state)\n{\n\tshouldIndentPreprocDefine = state;\n}\n\nvoid ASBeautifier::setPreprocConditionalIndent(bool state)\n{\n\tshouldIndentPreprocConditional = state;\n}\n\n/**\n * set the state of the empty line fill option.\n * If true, empty lines will be filled with the whitespace.\n * of their previous lines.\n * If false, these lines will remain empty.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setEmptyLineFill(bool state)\n{\n\temptyLineFill = state;\n}\n\nvoid ASBeautifier::setAlignMethodColon(bool state)\n{\n\tshouldAlignMethodColon = state;\n}\n\n/**\n * get the file type.\n */\nint ASBeautifier::getFileType() const\n{\n\treturn fileType;\n}\n\n/**\n * get the number of spaces per indent\n *\n * @return   value of indentLength option.\n */\nint ASBeautifier::getIndentLength(void) const\n{\n\treturn indentLength;\n}\n\n/**\n * get the char used for indentation, space or tab\n *\n * @return   the char used for indentation.\n */\nstring ASBeautifier::getIndentString(void) const\n{\n\treturn indentString;\n}\n\n/**\n * get mode manually set flag\n */\nbool ASBeautifier::getModeManuallySet() const\n{\n\treturn isModeManuallySet;\n}\n\n/**\n * get the state of the force tab indentation option.\n *\n * @return   state of force tab indentation.\n */\nbool ASBeautifier::getForceTabIndentation(void) const\n{\n\treturn shouldForceTabIndentation;\n}\n\n/**\n * get the state of the block indentation option.\n *\n * @return   state of blockIndent option.\n */\nbool ASBeautifier::getBlockIndent(void) const\n{\n\treturn blockIndent;\n}\n\n/**\n * get the state of the bracket indentation option.\n *\n * @return   state of bracketIndent option.\n */\nbool ASBeautifier::getBracketIndent(void) const\n{\n\treturn bracketIndent;\n}\n\n/**\n* Get the state of the namespace indentation option. If true, blocks\n* of the 'namespace' statement will be indented one additional indent.\n*\n* @return   state of namespaceIndent option.\n*/\nbool ASBeautifier::getNamespaceIndent(void) const\n{\n\treturn namespaceIndent;\n}\n\n/**\n * Get the state of the class indentation option. If true, blocks of\n * the 'class' statement will be indented one additional indent.\n *\n * @return   state of classIndent option.\n */\nbool ASBeautifier::getClassIndent(void) const\n{\n\treturn classIndent;\n}\n\n/**\n * Get the state of the class access modifier indentation option.\n * If true, the class access modifiers will be indented one-half indent.\n *\n * @return   state of modifierIndent option.\n */\nbool ASBeautifier::getModifierIndent(void) const\n{\n\treturn modifierIndent;\n}\n\n/**\n * get the state of the switch indentation option. If true, blocks of\n * the 'switch' statement will be indented one additional indent.\n *\n * @return   state of switchIndent option.\n */\nbool ASBeautifier::getSwitchIndent(void) const\n{\n\treturn switchIndent;\n}\n\n/**\n * get the state of the case indentation option. If true, lines of 'case'\n * statements will be indented one additional indent.\n *\n * @return   state of caseIndent option.\n */\nbool ASBeautifier::getCaseIndent(void) const\n{\n\treturn caseIndent;\n}\n\n/**\n * get the state of the empty line fill option.\n * If true, empty lines will be filled with the whitespace.\n * of their previous lines.\n * If false, these lines will remain empty.\n *\n * @return   state of emptyLineFill option.\n */\nbool ASBeautifier::getEmptyLineFill(void) const\n{\n\treturn emptyLineFill;\n}\n\n/**\n * get the state of the preprocessor indentation option.\n * If true, preprocessor \"define\" lines will be indented.\n * If false, preprocessor \"define\" lines will be unchanged.\n *\n * @return   state of shouldIndentPreprocDefine option.\n */\nbool ASBeautifier::getPreprocDefineIndent(void) const\n{\n\treturn shouldIndentPreprocDefine;\n}\n\n/**\n * get the length of the tab indentation option.\n *\n * @return   length of tab indent option.\n */\nint ASBeautifier::getTabLength(void) const\n{\n\treturn tabLength;\n}\n\n/**\n * beautify a line of source code.\n * every line of source code in a source code file should be sent\n * one after the other to the beautify method.\n *\n * @return      the indented line.\n * @param originalLine       the original unindented line.\n */\nstring ASBeautifier::beautify(const string &originalLine)\n{\n\tstring line;\n\tbool isInQuoteContinuation = isInVerbatimQuote | haveLineContinuationChar;\n\n\tcurrentHeader = NULL;\n\tlastLineHeader = NULL;\n\tblockCommentNoBeautify = blockCommentNoIndent;\n\tisInClass = false;\n\tisInSwitch = false;\n\tlineBeginsWithOpenBracket = false;\n\tlineBeginsWithCloseBracket = false;\n\tlineBeginsWithComma = false;\n\tlineIsCommentOnly = false;\n\tlineIsLineCommentOnly = false;\n\tshouldIndentBrackettedLine = true;\n\tisInAsmOneLine = false;\n\tlineOpensWithLineComment = false;\n\tlineOpensWithComment = false;\n\tlineStartsInComment = isInComment;\n\tpreviousLineProbationTab = false;\n\thaveLineContinuationChar = false;\n\tlineOpeningBlocksNum = 0;\n\tlineClosingBlocksNum = 0;\n\tif (isImmediatelyPostObjCMethodDefinition)\n\t\tclearObjCMethodDefinitionAlignment();\n\n\t// handle and remove white spaces around the line:\n\t// If not in comment, first find out size of white space before line,\n\t// so that possible comments starting in the line continue in\n\t// relation to the preliminary white-space.\n\tif (isInQuoteContinuation)\n\t{\n\t\t// trim a single space added by ASFormatter, otherwise leave it alone\n\t\tif (!(originalLine.length() == 1 && originalLine[0] == ' '))\n\t\t\tline = originalLine;\n\t}\n\telse if (isInComment || isInBeautifySQL)\n\t{\n\t\t// trim the end of comment and SQL lines\n\t\tline = originalLine;\n\t\tsize_t trimEnd = line.find_last_not_of(\" \\t\");\n\t\tif (trimEnd == string::npos)\n\t\t\ttrimEnd = 0;\n\t\telse\n\t\t\ttrimEnd++;\n\t\tif (trimEnd < line.length())\n\t\t\tline.erase(trimEnd);\n\t\t// does a bracket open the line\n\t\tsize_t firstChar = line.find_first_not_of(\" \\t\");\n\t\tif (firstChar != string::npos)\n\t\t{\n\t\t\tif (line[firstChar] == '{')\n\t\t\t\tlineBeginsWithOpenBracket = true;\n\t\t\telse if (line[firstChar] == '}')\n\t\t\t\tlineBeginsWithCloseBracket = true;\n\t\t\telse if (line[firstChar] == ',')\n\t\t\t\tlineBeginsWithComma = true;\n\t\t}\n\t}\n\telse\n\t{\n\t\tline = trim(originalLine);\n\t\tif (line.length() > 0)\n\t\t{\n\t\t\tif (line[0] == '{')\n\t\t\t\tlineBeginsWithOpenBracket = true;\n\t\t\telse if (line[0] == '}')\n\t\t\t\tlineBeginsWithCloseBracket = true;\n\t\t\telse if (line[0] == ',')\n\t\t\t\tlineBeginsWithComma = true;\n\t\t\telse if (line.compare(0, 2, \"//\") == 0)\n\t\t\t\tlineIsLineCommentOnly = true;\n\t\t\telse if (line.compare(0, 2, \"/*\") == 0)\n\t\t\t{\n\t\t\t\tif (line.find(\"*/\", 2) != string::npos)\n\t\t\t\t\tlineIsCommentOnly = true;\n\t\t\t}\n\t\t}\n\n\t\tisInHorstmannComment = false;\n\t\tsize_t j = line.find_first_not_of(\" \\t{\");\n\t\tif (j != string::npos && line.compare(j, 2, \"//\") == 0)\n\t\t\tlineOpensWithLineComment = true;\n\t\tif (j != string::npos && line.compare(j, 2, \"/*\") == 0)\n\t\t{\n\t\t\tlineOpensWithComment = true;\n\t\t\tsize_t k = line.find_first_not_of(\" \\t\");\n\t\t\tif (k != string::npos && line.compare(k, 1, \"{\") == 0)\n\t\t\t\tisInHorstmannComment = true;\n\t\t}\n\t}\n\n\t// When indent is OFF the lines must still be processed by ASBeautifier.\n\t// Otherwise the lines immediately following may not be indented correctly.\n\tif ((lineIsLineCommentOnly || lineIsCommentOnly)\n\t        && line.find(\"*INDENT-OFF*\", 0) != string::npos)\n\t\tisIndentModeOff = true;\n\n\tif (line.length() == 0)\n\t{\n\t\tif (backslashEndsPrevLine)\n\t\t{\n\t\t\tbackslashEndsPrevLine = false;\n\t\t\tisInDefine = false;\n\t\t\tisInDefineDefinition = false;\n\t\t}\n\t\tif (emptyLineFill && !isInQuoteContinuation)\n\t\t{\n\t\t\tif (isInIndentablePreprocBlock)\n\t\t\t\treturn preLineWS(preprocBlockIndent, 0);\n\t\t\telse if (!headerStack->empty() || isInEnum)\n\t\t\t\treturn preLineWS(prevFinalLineIndentCount, prevFinalLineSpaceIndentCount);\n\t\t\t// must fall thru here\n\t\t}\n\t\telse\n\t\t\treturn line;\n\t}\n\n\t// handle preprocessor commands\n\tif (isInIndentablePreprocBlock\n\t        && line.length() > 0\n\t        && line[0] != '#')\n\t{\n\t\tstring indentedLine;\n\t\tif (isInClassHeaderTab || isInClassInitializer)\n\t\t{\n\t\t\t// parsing is turned off in ASFormatter by indent-off\n\t\t\t// the originalLine will probably never be returned here\n\t\t\tindentedLine = preLineWS(prevFinalLineIndentCount, prevFinalLineSpaceIndentCount) + line;\n\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tindentedLine = preLineWS(preprocBlockIndent, 0) + line;\n\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t}\n\t}\n\tif (!isInComment\n\t        && !isInQuoteContinuation\n\t        && line.length() > 0\n\t        && ((line[0] == '#' && !isIndentedPreprocessor(line, 0))\n\t            || backslashEndsPrevLine))\n\t{\n\t\tif (line[0] == '#' && !isInDefine)\n\t\t{\n\t\t\tstring preproc = extractPreprocessorStatement(line);\n\t\t\tprocessPreprocessor(preproc, line);\n\t\t\tif (isInIndentablePreprocBlock || isInIndentablePreproc)\n\t\t\t{\n\t\t\t\tstring indentedLine;\n\t\t\t\tif ((preproc.length() >= 2 && preproc.substr(0, 2) == \"if\")) // #if, #ifdef, #ifndef\n\t\t\t\t{\n\t\t\t\t\tindentedLine = preLineWS(preprocBlockIndent, 0) + line;\n\t\t\t\t\tpreprocBlockIndent += 1;\n\t\t\t\t\tisInIndentablePreprocBlock = true;\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"else\" || preproc == \"elif\")\n\t\t\t\t{\n\t\t\t\t\tindentedLine = preLineWS(preprocBlockIndent - 1, 0) + line;\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"endif\")\n\t\t\t\t{\n\t\t\t\t\tpreprocBlockIndent -= 1;\n\t\t\t\t\tindentedLine = preLineWS(preprocBlockIndent, 0) + line;\n\t\t\t\t\tif (preprocBlockIndent == 0)\n\t\t\t\t\t\tisInIndentablePreprocBlock = false;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tindentedLine = preLineWS(preprocBlockIndent, 0) + line;\n\t\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t\t}\n\t\t\tif (shouldIndentPreprocConditional && preproc.length() > 0)\n\t\t\t{\n\t\t\t\tstring indentedLine;\n\t\t\t\tif (preproc.length() >= 2 && preproc.substr(0, 2) == \"if\") // #if, #ifdef, #ifndef\n\t\t\t\t{\n\t\t\t\t\tpair<int, int> entry;\t// indentCount, spaceIndentCount\n\t\t\t\t\tif (!isInDefine && activeBeautifierStack != NULL && !activeBeautifierStack->empty())\n\t\t\t\t\t\tentry = activeBeautifierStack->back()->computePreprocessorIndent();\n\t\t\t\t\telse\n\t\t\t\t\t\tentry = computePreprocessorIndent();\n\t\t\t\t\tpreprocIndentStack->push_back(entry);\n\t\t\t\t\tindentedLine = preLineWS(preprocIndentStack->back().first,\n\t\t\t\t\t                         preprocIndentStack->back().second) + line;\n\t\t\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"else\" || preproc == \"elif\")\n\t\t\t\t{\n\t\t\t\t\tif (preprocIndentStack->size() > 0)\t// if no entry don't indent\n\t\t\t\t\t{\n\t\t\t\t\t\tindentedLine = preLineWS(preprocIndentStack->back().first,\n\t\t\t\t\t\t                         preprocIndentStack->back().second) + line;\n\t\t\t\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"endif\")\n\t\t\t\t{\n\t\t\t\t\tif (preprocIndentStack->size() > 0)\t// if no entry don't indent\n\t\t\t\t\t{\n\t\t\t\t\t\tindentedLine = preLineWS(preprocIndentStack->back().first,\n\t\t\t\t\t\t                         preprocIndentStack->back().second) + line;\n\t\t\t\t\t\tpreprocIndentStack->pop_back();\n\t\t\t\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check if the last char is a backslash\n\t\tif (line.length() > 0)\n\t\t\tbackslashEndsPrevLine = (line[line.length() - 1] == '\\\\');\n\t\t// comments within the definition line can be continued without the backslash\n\t\tif (isInPreprocessorUnterminatedComment(line))\n\t\t\tbackslashEndsPrevLine = true;\n\n\t\t// check if this line ends a multi-line #define\n\t\t// if so, use the #define's cloned beautifier for the line's indentation\n\t\t// and then remove it from the active beautifier stack and delete it.\n\t\tif (!backslashEndsPrevLine && isInDefineDefinition && !isInDefine)\n\t\t{\n\t\t\tASBeautifier* defineBeautifier;\n\n\t\t\tisInDefineDefinition = false;\n\t\t\tdefineBeautifier = activeBeautifierStack->back();\n\t\t\tactiveBeautifierStack->pop_back();\n\n\t\t\tstring indentedLine = defineBeautifier->beautify(line);\n\t\t\tdelete defineBeautifier;\n\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t}\n\n\t\t// unless this is a multi-line #define, return this precompiler line as is.\n\t\tif (!isInDefine && !isInDefineDefinition)\n\t\t\treturn originalLine;\n\t}\n\n\t// if there exists any worker beautifier in the activeBeautifierStack,\n\t// then use it instead of me to indent the current line.\n\t// variables set by ASFormatter must be updated.\n\tif (!isInDefine && activeBeautifierStack != NULL && !activeBeautifierStack->empty())\n\t{\n\t\tactiveBeautifierStack->back()->inLineNumber = inLineNumber;\n\t\tactiveBeautifierStack->back()->horstmannIndentInStatement = horstmannIndentInStatement;\n\t\tactiveBeautifierStack->back()->nonInStatementBracket = nonInStatementBracket;\n\t\tactiveBeautifierStack->back()->lineCommentNoBeautify = lineCommentNoBeautify;\n\t\tactiveBeautifierStack->back()->isElseHeaderIndent = isElseHeaderIndent;\n\t\tactiveBeautifierStack->back()->isCaseHeaderCommentIndent = isCaseHeaderCommentIndent;\n\t\tactiveBeautifierStack->back()->isNonInStatementArray = isNonInStatementArray;\n\t\tactiveBeautifierStack->back()->isSharpAccessor = isSharpAccessor;\n\t\tactiveBeautifierStack->back()->isSharpDelegate = isSharpDelegate;\n\t\tactiveBeautifierStack->back()->isInExternC = isInExternC;\n\t\tactiveBeautifierStack->back()->isInBeautifySQL = isInBeautifySQL;\n\t\tactiveBeautifierStack->back()->isInIndentableStruct = isInIndentableStruct;\n\t\tactiveBeautifierStack->back()->isInIndentablePreproc = isInIndentablePreproc;\n\t\t// must return originalLine not the trimmed line\n\t\treturn activeBeautifierStack->back()->beautify(originalLine);\n\t}\n\n\t// Flag an indented header in case this line is a one-line block.\n\t// The header in the header stack will be deleted by a one-line block.\n\tbool isInExtraHeaderIndent = false;\n\tif (!headerStack->empty()\n\t        && lineBeginsWithOpenBracket\n\t        && (headerStack->back() != &AS_OPEN_BRACKET\n\t            || probationHeader != NULL))\n\t\tisInExtraHeaderIndent = true;\n\n\tsize_t iPrelim = headerStack->size();\n\n\t// calculate preliminary indentation based on headerStack and data from past lines\n\tcomputePreliminaryIndentation();\n\n\t// parse characters in the current line.\n\tparseCurrentLine(line);\n\n\t// handle special cases of indentation\n\tadjustParsedLineIndentation(iPrelim, isInExtraHeaderIndent);\n\n\t// Objective-C continuation line\n\tif (isInObjCMethodDefinition)\n\t{\n\t\t// register indent for Objective-C continuation line\n\t\tif (line.length() > 0\n\t\t        && (line[0] == '-' || line[0] == '+'))\n\t\t{\n\t\t\tif (shouldAlignMethodColon)\n\t\t\t{\n\t\t\t\tcolonIndentObjCMethodDefinition = line.find(':');\n\t\t\t}\n\t\t\telse if (inStatementIndentStack->empty()\n\t\t\t         || inStatementIndentStack->back() == 0)\n\t\t\t{\n\t\t\t\tinStatementIndentStack->push_back(indentLength);\n\t\t\t\tisInStatement = true;\n\t\t\t}\n\t\t}\n\t\t// set indent for last definition line\n\t\telse if (!lineBeginsWithOpenBracket)\n\t\t{\n\t\t\tif (shouldAlignMethodColon)\n\t\t\t\tspaceIndentCount = computeObjCColonAlignment(line, colonIndentObjCMethodDefinition);\n\t\t\telse if (inStatementIndentStack->empty())\n\t\t\t\tspaceIndentCount = spaceIndentObjCMethodDefinition;\n\t\t}\n\t}\n\n\tif (isInDefine)\n\t{\n\t\tif (line.length() > 0 && line[0] == '#')\n\t\t{\n\t\t\t// the 'define' does not have to be attached to the '#'\n\t\t\tstring preproc = trim(line.substr(1));\n\t\t\tif (preproc.compare(0, 6, \"define\") == 0)\n\t\t\t{\n\t\t\t\tif (!inStatementIndentStack->empty()\n\t\t\t\t        && inStatementIndentStack->back() > 0)\n\t\t\t\t{\n\t\t\t\t\tdefineIndentCount = indentCount;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdefineIndentCount = indentCount - 1;\n\t\t\t\t\t--indentCount;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tindentCount -= defineIndentCount;\n\t}\n\n\tif (indentCount < 0)\n\t\tindentCount = 0;\n\n\tif (lineCommentNoBeautify || blockCommentNoBeautify || isInQuoteContinuation)\n\t\tindentCount = spaceIndentCount = 0;\n\n\t// finally, insert indentations into beginning of line\n\n\tstring indentedLine = preLineWS(indentCount, spaceIndentCount) + line;\n\tindentedLine = getIndentedLineReturn(indentedLine, originalLine);\n\n\tprevFinalLineSpaceIndentCount = spaceIndentCount;\n\tprevFinalLineIndentCount = indentCount;\n\n\tif (lastLineHeader != NULL)\n\t\tpreviousLastLineHeader = lastLineHeader;\n\n\tif ((lineIsLineCommentOnly || lineIsCommentOnly)\n\t        && line.find(\"*INDENT-ON*\", 0) != string::npos)\n\t\tisIndentModeOff = false;\n\n\treturn indentedLine;\n}\n\nstring &ASBeautifier::getIndentedLineReturn(string &newLine, const string &originalLine) const\n{\n\tif (isIndentModeOff)\n\t\treturn const_cast<string &>(originalLine);\n\treturn newLine;\n}\n\nstring ASBeautifier::preLineWS(int lineIndentCount, int lineSpaceIndentCount) const\n{\n\tif (shouldForceTabIndentation)\n\t{\n\t\tif (tabLength != indentLength)\n\t\t{\n\t\t\t// adjust for different tab length\n\t\t\tint indentCountOrig = lineIndentCount;\n\t\t\tint spaceIndentCountOrig = lineSpaceIndentCount;\n\t\t\tlineIndentCount = ((indentCountOrig * indentLength) + spaceIndentCountOrig) / tabLength;\n\t\t\tlineSpaceIndentCount = ((indentCountOrig * indentLength) + spaceIndentCountOrig) % tabLength;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlineIndentCount += lineSpaceIndentCount / indentLength;\n\t\t\tlineSpaceIndentCount = lineSpaceIndentCount % indentLength;\n\t\t}\n\t}\n\n\tstring ws;\n\tfor (int i = 0; i < lineIndentCount; i++)\n\t\tws += indentString;\n\twhile ((lineSpaceIndentCount--) > 0)\n\t\tws += string(\" \");\n\treturn ws;\n}\n\n/**\n * register an in-statement indent.\n */\nvoid ASBeautifier::registerInStatementIndent(const string &line, int i, int spaceTabCount_,\n                                             int tabIncrementIn, int minIndent, bool updateParenStack)\n{\n\tint inStatementIndent;\n\tint remainingCharNum = line.length() - i;\n\tint nextNonWSChar = getNextProgramCharDistance(line, i);\n\n\t// if indent is around the last char in the line, indent instead one indent from the previous indent\n\tif (nextNonWSChar == remainingCharNum)\n\t{\n\t\tint previousIndent = spaceTabCount_;\n\t\tif (!inStatementIndentStack->empty())\n\t\t\tpreviousIndent = inStatementIndentStack->back();\n\t\tint currIndent = /*2*/ indentLength + previousIndent;\n\t\tif (currIndent > maxInStatementIndent\n\t\t        && line[i] != '{')\n\t\t\tcurrIndent = indentLength * 2 + spaceTabCount_;\n\t\tinStatementIndentStack->push_back(currIndent);\n\t\tif (updateParenStack)\n\t\t\tparenIndentStack->push_back(previousIndent);\n\t\treturn;\n\t}\n\n\tif (updateParenStack)\n\t\tparenIndentStack->push_back(i + spaceTabCount_ - horstmannIndentInStatement);\n\n\tint tabIncrement = tabIncrementIn;\n\n\t// check for following tabs\n\tfor (int j = i + 1; j < (i + nextNonWSChar); j++)\n\t{\n\t\tif (line[j] == '\\t')\n\t\t\ttabIncrement += convertTabToSpaces(j, tabIncrement);\n\t}\n\n\tinStatementIndent = i + nextNonWSChar + spaceTabCount_ + tabIncrement;\n\n\t// check for run-in statement\n\tif (i > 0 && line[0] == '{')\n\t\tinStatementIndent -= indentLength;\n\n\tif (inStatementIndent < minIndent)\n\t\tinStatementIndent = minIndent + spaceTabCount_;\n\n\t// this is not done for an in-statement array\n\tif (inStatementIndent > maxInStatementIndent\n\t        && !(prevNonLegalCh == '=' && currentNonLegalCh == '{'))\n\t\tinStatementIndent = indentLength * 2 + spaceTabCount_;\n\n\tif (!inStatementIndentStack->empty()\n\t        && inStatementIndent < inStatementIndentStack->back())\n\t\tinStatementIndent = inStatementIndentStack->back();\n\n\t// the block opener is not indented for a NonInStatementArray\n\tif (isNonInStatementArray && !isInEnum && !bracketBlockStateStack->empty() && bracketBlockStateStack->back())\n\t\tinStatementIndent = 0;\n\n\tinStatementIndentStack->push_back(inStatementIndent);\n}\n\n/**\n* Register an in-statement indent for a class header or a class initializer colon.\n*/\nvoid ASBeautifier::registerInStatementIndentColon(const string &line, int i, int tabIncrementIn)\n{\n\tassert(line[i] == ':');\n\tassert(isInClassInitializer || isInClassHeaderTab);\n\n\t// register indent at first word after the colon\n\tsize_t firstChar = line.find_first_not_of(\" \\t\");\n\tif (firstChar == (size_t)i)\t\t// firstChar is ':'\n\t{\n\t\tsize_t firstWord = line.find_first_not_of(\" \\t\", firstChar + 1);\n\t\tif (firstChar != string::npos)\n\t\t{\n\t\t\tint inStatementIndent = firstWord + spaceIndentCount + tabIncrementIn;\n\t\t\tinStatementIndentStack->push_back(inStatementIndent);\n\t\t\tisInStatement = true;\n\t\t}\n\t}\n}\n\n/**\n * Compute indentation for a preprocessor #if statement.\n * This may be called for the activeBeautiferStack\n * instead of the active ASBeautifier object.\n */\npair<int, int> ASBeautifier::computePreprocessorIndent()\n{\n\tcomputePreliminaryIndentation();\n\tpair<int, int> entry(indentCount, spaceIndentCount);\n\tif (!headerStack->empty()\n\t        && entry.first > 0\n\t        && (headerStack->back() == &AS_IF\n\t            || headerStack->back() == &AS_ELSE\n\t            || headerStack->back() == &AS_FOR\n\t            || headerStack->back() == &AS_WHILE))\n\t\t--entry.first;\n\treturn entry;\n}\n\n/**\n * get distance to the next non-white space, non-comment character in the line.\n * if no such character exists, return the length remaining to the end of the line.\n */\nint ASBeautifier::getNextProgramCharDistance(const string &line, int i) const\n{\n\tbool inComment = false;\n\tint  remainingCharNum = line.length() - i;\n\tint  charDistance;\n\tchar ch;\n\n\tfor (charDistance = 1; charDistance < remainingCharNum; charDistance++)\n\t{\n\t\tch = line[i + charDistance];\n\t\tif (inComment)\n\t\t{\n\t\t\tif (line.compare(i + charDistance, 2, \"*/\") == 0)\n\t\t\t{\n\t\t\t\tcharDistance++;\n\t\t\t\tinComment = false;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\telse if (isWhiteSpace(ch))\n\t\t\tcontinue;\n\t\telse if (ch == '/')\n\t\t{\n\t\t\tif (line.compare(i + charDistance, 2, \"//\") == 0)\n\t\t\t\treturn remainingCharNum;\n\t\t\telse if (line.compare(i + charDistance, 2, \"/*\") == 0)\n\t\t\t{\n\t\t\t\tcharDistance++;\n\t\t\t\tinComment = true;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\treturn charDistance;\n\t}\n\n\treturn charDistance;\n}\n\n// check if a specific line position contains a header.\nconst string* ASBeautifier::findHeader(const string &line, int i,\n                                       const vector<const string*>* possibleHeaders) const\n{\n\tassert(isCharPotentialHeader(line, i));\n\t// check the word\n\tsize_t maxHeaders = possibleHeaders->size();\n\tfor (size_t p = 0; p < maxHeaders; p++)\n\t{\n\t\tconst string* header = (*possibleHeaders)[p];\n\t\tconst size_t wordEnd = i + header->length();\n\t\tif (wordEnd > line.length())\n\t\t\tcontinue;\n\t\tint result = (line.compare(i, header->length(), *header));\n\t\tif (result > 0)\n\t\t\tcontinue;\n\t\tif (result < 0)\n\t\t\tbreak;\n\t\t// check that this is not part of a longer word\n\t\tif (wordEnd == line.length())\n\t\t\treturn header;\n\t\tif (isLegalNameChar(line[wordEnd]))\n\t\t\tcontinue;\n\t\tconst char peekChar = peekNextChar(line, wordEnd - 1);\n\t\t// is not a header if part of a definition\n\t\tif (peekChar == ',' || peekChar == ')')\n\t\t\tbreak;\n\t\t// the following accessor definitions are NOT headers\n\t\t// goto default; is NOT a header\n\t\t// default(int) keyword in C# is NOT a header\n\t\telse if ((header == &AS_GET || header == &AS_SET || header == &AS_DEFAULT)\n\t\t         && (peekChar == ';' || peekChar == '(' || peekChar == '='))\n\t\t\tbreak;\n\t\treturn header;\n\t}\n\treturn NULL;\n}\n\n// check if a specific line position contains an operator.\nconst string* ASBeautifier::findOperator(const string &line, int i,\n                                         const vector<const string*>* possibleOperators) const\n{\n\tassert(isCharPotentialOperator(line[i]));\n\t// find the operator in the vector\n\t// the vector contains the LONGEST operators first\n\t// must loop thru the entire vector\n\tsize_t maxOperators = possibleOperators->size();\n\tfor (size_t p = 0; p < maxOperators; p++)\n\t{\n\t\tconst size_t wordEnd = i + (*(*possibleOperators)[p]).length();\n\t\tif (wordEnd > line.length())\n\t\t\tcontinue;\n\t\tif (line.compare(i, (*(*possibleOperators)[p]).length(), *(*possibleOperators)[p]) == 0)\n\t\t\treturn (*possibleOperators)[p];\n\t}\n\treturn NULL;\n}\n\n/**\n * find the index number of a string element in a container of strings\n *\n * @return              the index number of element in the container. -1 if element not found.\n * @param container     a vector of strings.\n * @param element       the element to find .\n */\nint ASBeautifier::indexOf(vector<const string*> &container, const string* element) const\n{\n\tvector<const string*>::const_iterator where;\n\n\twhere = find(container.begin(), container.end(), element);\n\tif (where == container.end())\n\t\treturn -1;\n\telse\n\t\treturn (int) (where - container.begin());\n}\n\n/**\n * convert tabs to spaces.\n * i is the position of the character to convert to spaces.\n * tabIncrementIn is the increment that must be added for tab indent characters\n *     to get the correct column for the current tab.\n */\nint ASBeautifier::convertTabToSpaces(int i, int tabIncrementIn) const\n{\n\tint tabToSpacesAdjustment = indentLength - 1 - ((tabIncrementIn + i) % indentLength);\n\treturn tabToSpacesAdjustment;\n}\n\n/**\n * trim removes the white space surrounding a line.\n *\n * @return          the trimmed line.\n * @param str       the line to trim.\n */\nstring ASBeautifier::trim(const string &str) const\n{\n\n\tint start = 0;\n\tint end = str.length() - 1;\n\n\twhile (start < end && isWhiteSpace(str[start]))\n\t\tstart++;\n\n\twhile (start <= end && isWhiteSpace(str[end]))\n\t\tend--;\n\n\t// don't trim if it ends in a continuation\n\tif (end > -1 && str[end] == '\\\\')\n\t\tend = str.length() - 1;\n\n\tstring returnStr(str, start, end + 1 - start);\n\treturn returnStr;\n}\n\n/**\n * rtrim removes the white space from the end of a line.\n *\n * @return          the trimmed line.\n * @param str       the line to trim.\n */\nstring ASBeautifier::rtrim(const string &str) const\n{\n\tsize_t len = str.length();\n\tsize_t end = str.find_last_not_of(\" \\t\");\n\tif (end == string::npos\n\t        || end == len - 1)\n\t\treturn str;\n\tstring returnStr(str, 0, end + 1);\n\treturn returnStr;\n}\n\n/**\n * Copy tempStacks for the copy constructor.\n * The value of the vectors must also be copied.\n */\nvector<vector<const string*>*>* ASBeautifier::copyTempStacks(const ASBeautifier &other) const\n{\n\tvector<vector<const string*>*>* tempStacksNew = new vector<vector<const string*>*>;\n\tvector<vector<const string*>*>::iterator iter;\n\tfor (iter = other.tempStacks->begin();\n\t        iter != other.tempStacks->end();\n\t        ++iter)\n\t{\n\t\tvector<const string*>* newVec = new vector<const string*>;\n\t\t*newVec = **iter;\n\t\ttempStacksNew->push_back(newVec);\n\t}\n\treturn tempStacksNew;\n}\n\n/**\n * delete a member vectors to eliminate memory leak reporting\n */\nvoid ASBeautifier::deleteBeautifierVectors()\n{\n\tbeautifierFileType = 9;\t\t// reset to an invalid type\n\tdelete headers;\n\tdelete nonParenHeaders;\n\tdelete preBlockStatements;\n\tdelete preCommandHeaders;\n\tdelete assignmentOperators;\n\tdelete nonAssignmentOperators;\n\tdelete indentableHeaders;\n}\n\n/**\n * delete a vector object\n * T is the type of vector\n * used for all vectors except tempStacks\n */\ntemplate<typename T>\nvoid ASBeautifier::deleteContainer(T &container)\n{\n\tif (container != NULL)\n\t{\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * Delete the ASBeautifier vector object.\n * This is a vector of pointers to ASBeautifier objects allocated with the 'new' operator.\n * Therefore the ASBeautifier objects have to be deleted in addition to the\n * ASBeautifier pointer entries.\n */\nvoid ASBeautifier::deleteBeautifierContainer(vector<ASBeautifier*>* &container)\n{\n\tif (container != NULL)\n\t{\n\t\tvector<ASBeautifier*>::iterator iter = container->begin();\n\t\twhile (iter < container->end())\n\t\t{\n\t\t\tdelete *iter;\n\t\t\t++iter;\n\t\t}\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * Delete the tempStacks vector object.\n * The tempStacks is a vector of pointers to strings allocated with the 'new' operator.\n * Therefore the strings have to be deleted in addition to the tempStacks entries.\n */\nvoid ASBeautifier::deleteTempStacksContainer(vector<vector<const string*>*>* &container)\n{\n\tif (container != NULL)\n\t{\n\t\tvector<vector<const string*>*>::iterator iter = container->begin();\n\t\twhile (iter < container->end())\n\t\t{\n\t\t\tdelete *iter;\n\t\t\t++iter;\n\t\t}\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * initialize a vector object\n * T is the type of vector used for all vectors\n */\ntemplate<typename T>\nvoid ASBeautifier::initContainer(T &container, T value)\n{\n\t// since the ASFormatter object is never deleted,\n\t// the existing vectors must be deleted before creating new ones\n\tif (container != NULL)\n\t\tdeleteContainer(container);\n\tcontainer = value;\n}\n\n/**\n * Initialize the tempStacks vector object.\n * The tempStacks is a vector of pointers to strings allocated with the 'new' operator.\n * Any residual entries are deleted before the vector is initialized.\n */\nvoid ASBeautifier::initTempStacksContainer(vector<vector<const string*>*>* &container,\n                                           vector<vector<const string*>*>* value)\n{\n\tif (container != NULL)\n\t\tdeleteTempStacksContainer(container);\n\tcontainer = value;\n}\n\n/**\n * Determine if an assignment statement ends with a comma\n *     that is not in a function argument. It ends with a\n *     comma if a comma is the last char on the line.\n *\n * @return  true if line ends with a comma, otherwise false.\n */\nbool ASBeautifier::statementEndsWithComma(const string &line, int index) const\n{\n\tassert(line[index] == '=');\n\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tint parenCount = 0;\n\tsize_t lineLength = line.length();\n\tsize_t i = 0;\n\tchar quoteChar_ = ' ';\n\n\tfor (i = index + 1; i < lineLength; ++i)\n\t{\n\t\tchar ch = line[i];\n\n\t\tif (isInComment_)\n\t\t{\n\t\t\tif (line.compare(i, 2, \"*/\") == 0)\n\t\t\t{\n\t\t\t\tisInComment_ = false;\n\t\t\t\t++i;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\\\\')\n\t\t{\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInQuote_)\n\t\t{\n\t\t\tif (ch == quoteChar_)\n\t\t\t\tisInQuote_ = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\"' || ch == '\\'')\n\t\t{\n\t\t\tisInQuote_ = true;\n\t\t\tquoteChar_ = ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (line.compare(i, 2, \"//\") == 0)\n\t\t\tbreak;\n\n\t\tif (line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\tif (isLineEndComment(line, i))\n\t\t\t\tbreak;\n\t\t\telse\n\t\t\t{\n\t\t\t\tisInComment_ = true;\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (ch == '(')\n\t\t\tparenCount++;\n\t\tif (ch == ')')\n\t\t\tparenCount--;\n\t}\n\tif (isInComment_\n\t        || isInQuote_\n\t        || parenCount > 0)\n\t\treturn false;\n\n\tsize_t lastChar = line.find_last_not_of(\" \\t\", i - 1);\n\n\tif (lastChar == string::npos || line[lastChar] != ',')\n\t\treturn false;\n\n\treturn true;\n}\n\n/**\n * check if current comment is a line-end comment\n *\n * @return     is before a line-end comment.\n */\nbool ASBeautifier::isLineEndComment(const string &line, int startPos) const\n{\n\tassert(line.compare(startPos, 2, \"/*\") == 0);\n\n\t// comment must be closed on this line with nothing after it\n\tsize_t endNum = line.find(\"*/\", startPos + 2);\n\tif (endNum != string::npos)\n\t{\n\t\tsize_t nextChar = line.find_first_not_of(\" \\t\", endNum + 2);\n\t\tif (nextChar == string::npos)\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * get the previous word index for an assignment operator\n *\n * @return is the index to the previous word (the in statement indent).\n */\nint ASBeautifier::getInStatementIndentAssign(const string &line, size_t currPos) const\n{\n\tassert(line[currPos] == '=');\n\n\tif (currPos == 0)\n\t\treturn 0;\n\n\t// get the last legal word (may be a number)\n\tsize_t end = line.find_last_not_of(\" \\t\", currPos - 1);\n\tif (end == string::npos || !isLegalNameChar(line[end]))\n\t\treturn 0;\n\n\tint start;          // start of the previous word\n\tfor (start = end; start > -1; start--)\n\t{\n\t\tif (!isLegalNameChar(line[start]) || line[start] == '.')\n\t\t\tbreak;\n\t}\n\tstart++;\n\n\treturn start;\n}\n\n/**\n * get the instatement indent for a comma\n *\n * @return is the indent to the second word on the line (the in statement indent).\n */\nint ASBeautifier::getInStatementIndentComma(const string &line, size_t currPos) const\n{\n\tassert(line[currPos] == ',');\n\n\t// get first word on a line\n\tsize_t indent = line.find_first_not_of(\" \\t\");\n\tif (indent == string::npos || !isLegalNameChar(line[indent]))\n\t\treturn 0;\n\n\t// bypass first word\n\tfor (; indent < currPos; indent++)\n\t{\n\t\tif (!isLegalNameChar(line[indent]))\n\t\t\tbreak;\n\t}\n\tindent++;\n\tif (indent >= currPos || indent < 4)\n\t\treturn 0;\n\n\t// point to second word or assignment operator\n\tindent = line.find_first_not_of(\" \\t\", indent);\n\tif (indent == string::npos || indent >= currPos)\n\t\treturn 0;\n\n\treturn indent;\n}\n\n/**\n * get the next word on a line\n * the argument 'currPos' must point to the current position.\n *\n * @return is the next word or an empty string if none found.\n */\nstring ASBeautifier::getNextWord(const string &line, size_t currPos) const\n{\n\tsize_t lineLength = line.length();\n\t// get the last legal word (may be a number)\n\tif (currPos == lineLength - 1)\n\t\treturn string();\n\n\tsize_t start = line.find_first_not_of(\" \\t\", currPos + 1);\n\tif (start == string::npos || !isLegalNameChar(line[start]))\n\t\treturn string();\n\n\tsize_t end;\t\t\t// end of the current word\n\tfor (end = start + 1; end <= lineLength; end++)\n\t{\n\t\tif (!isLegalNameChar(line[end]) || line[end] == '.')\n\t\t\tbreak;\n\t}\n\n\treturn line.substr(start, end - start);\n}\n\n/**\n * Check if a preprocessor directive is always indented.\n * C# \"region\" and \"endregion\" are always indented.\n * C/C++ \"pragma omp\" is always indented.\n *\n * @return is true or false.\n */\nbool ASBeautifier::isIndentedPreprocessor(const string &line, size_t currPos) const\n{\n\tassert(line[0] == '#');\n\tstring nextWord = getNextWord(line, currPos);\n\tif (nextWord == \"region\" || nextWord == \"endregion\")\n\t\treturn true;\n\t// is it #pragma omp\n\tif (nextWord == \"pragma\")\n\t{\n\t\t// find pragma\n\t\tsize_t start = line.find(\"pragma\");\n\t\tif (start == string::npos || !isLegalNameChar(line[start]))\n\t\t\treturn false;\n\t\t// bypass pragma\n\t\tfor (; start < line.length(); start++)\n\t\t{\n\t\t\tif (!isLegalNameChar(line[start]))\n\t\t\t\tbreak;\n\t\t}\n\t\tstart++;\n\t\tif (start >= line.length())\n\t\t\treturn false;\n\t\t// point to start of second word\n\t\tstart = line.find_first_not_of(\" \\t\", start);\n\t\tif (start == string::npos)\n\t\t\treturn false;\n\t\t// point to end of second word\n\t\tsize_t end;\n\t\tfor (end = start; end < line.length(); end++)\n\t\t{\n\t\t\tif (!isLegalNameChar(line[end]))\n\t\t\t\tbreak;\n\t\t}\n\t\t// check for \"pragma omp\"\n\t\tstring word = line.substr(start, end - start);\n\t\tif (word == \"omp\" || word == \"region\" || word == \"endregion\")\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Check if a preprocessor directive is checking for __cplusplus defined.\n *\n * @return is true or false.\n */\nbool ASBeautifier::isPreprocessorConditionalCplusplus(const string &line) const\n{\n\tstring preproc = trim(line.substr(1));\n\tif (preproc.compare(0, 5, \"ifdef\") == 0 && getNextWord(preproc, 4) == \"__cplusplus\")\n\t\treturn true;\n\tif (preproc.compare(0, 2, \"if\") == 0)\n\t{\n\t\t// check for \" #if defined(__cplusplus)\"\n\t\tsize_t charNum = 2;\n\t\tcharNum = preproc.find_first_not_of(\" \\t\", charNum);\n\t\tif (preproc.compare(charNum, 7, \"defined\") == 0)\n\t\t{\n\t\t\tcharNum += 7;\n\t\t\tcharNum = preproc.find_first_not_of(\" \\t\", charNum);\n\t\t\tif (preproc.compare(charNum, 1, \"(\") == 0)\n\t\t\t{\n\t\t\t\t++charNum;\n\t\t\t\tcharNum = preproc.find_first_not_of(\" \\t\", charNum);\n\t\t\t\tif (preproc.compare(charNum, 11, \"__cplusplus\") == 0)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Check if a preprocessor definition contains an unterminated comment.\n * Comments within a preprocessor definition can be continued without the backslash.\n *\n * @return is true or false.\n */\nbool ASBeautifier::isInPreprocessorUnterminatedComment(const string &line)\n{\n\tif (!isInPreprocessorComment)\n\t{\n\t\tsize_t startPos = line.find(\"/*\");\n\t\tif (startPos == string::npos)\n\t\t\treturn false;\n\t}\n\tsize_t endNum = line.find(\"*/\");\n\tif (endNum != string::npos)\n\t{\n\t\tisInPreprocessorComment = false;\n\t\treturn false;\n\t}\n\tisInPreprocessorComment = true;\n\treturn true;\n}\n\nvoid ASBeautifier::popLastInStatementIndent()\n{\n\tassert(!inStatementIndentStackSizeStack->empty());\n\tint previousIndentStackSize = inStatementIndentStackSizeStack->back();\n\tif (inStatementIndentStackSizeStack->size() > 1)\n\t\tinStatementIndentStackSizeStack->pop_back();\n\twhile (previousIndentStackSize < (int) inStatementIndentStack->size())\n\t\tinStatementIndentStack->pop_back();\n}\n\n// for unit testing\nint ASBeautifier::getBeautifierFileType() const\n{ return beautifierFileType; }\n\n/**\n * Process preprocessor statements and update the beautifier stacks.\n */\nvoid ASBeautifier::processPreprocessor(const string &preproc, const string &line)\n{\n\t// When finding a multi-lined #define statement, the original beautifier\n\t// 1. sets its isInDefineDefinition flag\n\t// 2. clones a new beautifier that will be used for the actual indentation\n\t//    of the #define. This clone is put into the activeBeautifierStack in order\n\t//    to be called for the actual indentation.\n\t// The original beautifier will have isInDefineDefinition = true, isInDefine = false\n\t// The cloned beautifier will have   isInDefineDefinition = true, isInDefine = true\n\tif (shouldIndentPreprocDefine && preproc == \"define\" && line[line.length() - 1] == '\\\\')\n\t{\n\t\tif (!isInDefineDefinition)\n\t\t{\n\t\t\tASBeautifier* defineBeautifier;\n\n\t\t\t// this is the original beautifier\n\t\t\tisInDefineDefinition = true;\n\n\t\t\t// push a new beautifier into the active stack\n\t\t\t// this beautifier will be used for the indentation of this define\n\t\t\tdefineBeautifier = new ASBeautifier(*this);\n\t\t\tactiveBeautifierStack->push_back(defineBeautifier);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// the is the cloned beautifier that is in charge of indenting the #define.\n\t\t\tisInDefine = true;\n\t\t}\n\t}\n\telse if (preproc.length() >= 2 && preproc.substr(0, 2) == \"if\")\n\t{\n\t\tif (isPreprocessorConditionalCplusplus(line) && !g_preprocessorCppExternCBracket)\n\t\t\tg_preprocessorCppExternCBracket = 1;\n\t\t// push a new beautifier into the stack\n\t\twaitingBeautifierStackLengthStack->push_back(waitingBeautifierStack->size());\n\t\tactiveBeautifierStackLengthStack->push_back(activeBeautifierStack->size());\n\t\tif (activeBeautifierStackLengthStack->back() == 0)\n\t\t\twaitingBeautifierStack->push_back(new ASBeautifier(*this));\n\t\telse\n\t\t\twaitingBeautifierStack->push_back(new ASBeautifier(*activeBeautifierStack->back()));\n\t}\n\telse if (preproc == \"else\")\n\t{\n\t\tif (waitingBeautifierStack && !waitingBeautifierStack->empty())\n\t\t{\n\t\t\t// MOVE current waiting beautifier to active stack.\n\t\t\tactiveBeautifierStack->push_back(waitingBeautifierStack->back());\n\t\t\twaitingBeautifierStack->pop_back();\n\t\t}\n\t}\n\telse if (preproc == \"elif\")\n\t{\n\t\tif (waitingBeautifierStack && !waitingBeautifierStack->empty())\n\t\t{\n\t\t\t// append a COPY current waiting beautifier to active stack, WITHOUT deleting the original.\n\t\t\tactiveBeautifierStack->push_back(new ASBeautifier(*(waitingBeautifierStack->back())));\n\t\t}\n\t}\n\telse if (preproc == \"endif\")\n\t{\n\t\tint stackLength;\n\t\tASBeautifier* beautifier;\n\n\t\tif (waitingBeautifierStackLengthStack != NULL && !waitingBeautifierStackLengthStack->empty())\n\t\t{\n\t\t\tstackLength = waitingBeautifierStackLengthStack->back();\n\t\t\twaitingBeautifierStackLengthStack->pop_back();\n\t\t\twhile ((int) waitingBeautifierStack->size() > stackLength)\n\t\t\t{\n\t\t\t\tbeautifier = waitingBeautifierStack->back();\n\t\t\t\twaitingBeautifierStack->pop_back();\n\t\t\t\tdelete beautifier;\n\t\t\t}\n\t\t}\n\n\t\tif (!activeBeautifierStackLengthStack->empty())\n\t\t{\n\t\t\tstackLength = activeBeautifierStackLengthStack->back();\n\t\t\tactiveBeautifierStackLengthStack->pop_back();\n\t\t\twhile ((int) activeBeautifierStack->size() > stackLength)\n\t\t\t{\n\t\t\t\tbeautifier = activeBeautifierStack->back();\n\t\t\t\tactiveBeautifierStack->pop_back();\n\t\t\t\tdelete beautifier;\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Compute the preliminary indentation based on data in the headerStack\n// and data from previous lines.\n// Update the class variable indentCount.\nvoid ASBeautifier::computePreliminaryIndentation()\n{\n\tindentCount = 0;\n\tspaceIndentCount = 0;\n\tisInClassHeaderTab = false;\n\n\tif (isInObjCMethodDefinition && !inStatementIndentStack->empty())\n\t\tspaceIndentObjCMethodDefinition = inStatementIndentStack->back();\n\n\tif (!inStatementIndentStack->empty())\n\t\tspaceIndentCount = inStatementIndentStack->back();\n\n\tfor (size_t i = 0; i < headerStack->size(); i++)\n\t{\n\t\tisInClass = false;\n\n\t\tif (blockIndent)\n\t\t{\n\t\t\t// do NOT indent opening block for these headers\n\t\t\tif (!((*headerStack)[i] == &AS_NAMESPACE\n\t\t\t        || (*headerStack)[i] == &AS_CLASS\n\t\t\t        || (*headerStack)[i] == &AS_STRUCT\n\t\t\t        || (*headerStack)[i] == &AS_UNION\n\t\t\t        || (*headerStack)[i] == &AS_INTERFACE\n\t\t\t        || (*headerStack)[i] == &AS_THROWS\n\t\t\t        || (*headerStack)[i] == &AS_STATIC))\n\t\t\t\t++indentCount;\n\t\t}\n\t\telse if (!(i > 0 && (*headerStack)[i - 1] != &AS_OPEN_BRACKET\n\t\t           && (*headerStack)[i] == &AS_OPEN_BRACKET))\n\t\t\t++indentCount;\n\n\t\tif (!isJavaStyle() && !namespaceIndent && i > 0\n\t\t        && (*headerStack)[i - 1] == &AS_NAMESPACE\n\t\t        && (*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t\t--indentCount;\n\n\t\tif (isCStyle() && i >= 1\n\t\t        && (*headerStack)[i - 1] == &AS_CLASS\n\t\t        && (*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t{\n\t\t\tif (classIndent)\n\t\t\t\t++indentCount;\n\t\t\tisInClass = true;\n\t\t}\n\n\t\t// is the switchIndent option is on, indent switch statements an additional indent.\n\t\telse if (switchIndent && i > 1\n\t\t         && (*headerStack)[i - 1] == &AS_SWITCH\n\t\t         && (*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t{\n\t\t\t++indentCount;\n\t\t\tisInSwitch = true;\n\t\t}\n\n\t}\t// end of for loop\n\n\tif (isInClassHeader)\n\t{\n\t\tif (!isJavaStyle())\n\t\t\tisInClassHeaderTab = true;\n\t\tif (lineOpensWithLineComment || lineStartsInComment || lineOpensWithComment)\n\t\t{\n\t\t\tif (!lineBeginsWithOpenBracket)\n\t\t\t\t--indentCount;\n\t\t\tif (!inStatementIndentStack->empty())\n\t\t\t\tspaceIndentCount -= inStatementIndentStack->back();\n\t\t}\n\t\telse if (blockIndent)\n\t\t{\n\t\t\tif (!lineBeginsWithOpenBracket)\n\t\t\t\t++indentCount;\n\t\t}\n\t}\n\n\tif (isInClassInitializer || isInEnumTypeID)\n\t{\n\t\tindentCount += classInitializerIndents;\n\t}\n\n\tif (isInEnum && lineBeginsWithComma && !inStatementIndentStack->empty())\n\t{\n\t\t// unregister '=' indent from the previous line\n\t\tinStatementIndentStack->pop_back();\n\t\tisInStatement = false;\n\t\tspaceIndentCount = 0;\n\t}\n\n\t// Objective-C interface continuation line\n\tif (isInObjCInterface)\n\t\t++indentCount;\n\n\t// unindent a class closing bracket...\n\tif (!lineStartsInComment\n\t        && isCStyle()\n\t        && isInClass\n\t        && classIndent\n\t        && headerStack->size() >= 2\n\t        && (*headerStack)[headerStack->size() - 2] == &AS_CLASS\n\t        && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACKET\n\t        && lineBeginsWithCloseBracket\n\t        && bracketBlockStateStack->back() == true)\n\t\t--indentCount;\n\n\t// unindent an indented switch closing bracket...\n\telse if (!lineStartsInComment\n\t         && isInSwitch\n\t         && switchIndent\n\t         && headerStack->size() >= 2\n\t         && (*headerStack)[headerStack->size() - 2] == &AS_SWITCH\n\t         && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACKET\n\t         && lineBeginsWithCloseBracket)\n\t\t--indentCount;\n\n\t// handle special case of horstmann comment in an indented class statement\n\tif (isInClass\n\t        && classIndent\n\t        && isInHorstmannComment\n\t        && !lineOpensWithComment\n\t        && headerStack->size() > 1\n\t        && (*headerStack)[headerStack->size() - 2] == &AS_CLASS)\n\t\t--indentCount;\n\n\tif (isInConditional)\n\t\t--indentCount;\n\tif (g_preprocessorCppExternCBracket >= 4)\n\t\t--indentCount;\n}\n\nvoid ASBeautifier::adjustParsedLineIndentation(size_t iPrelim, bool isInExtraHeaderIndent)\n{\n\tif (lineStartsInComment)\n\t\treturn;\n\n\t// unindent a one-line statement in a header indent\n\tif (!blockIndent\n\t        && lineBeginsWithOpenBracket\n\t        && headerStack->size() < iPrelim\n\t        && isInExtraHeaderIndent\n\t        && (lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)\n\t        && shouldIndentBrackettedLine)\n\t\t--indentCount;\n\n\t/*\n\t * if '{' doesn't follow an immediately previous '{' in the headerStack\n\t * (but rather another header such as \"for\" or \"if\", then unindent it\n\t * by one indentation relative to its block.\n\t */\n\telse if (!blockIndent\n\t         && lineBeginsWithOpenBracket\n\t         && !(lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)\n\t         && (headerStack->size() > 1 && (*headerStack)[headerStack->size() - 2] != &AS_OPEN_BRACKET)\n\t         && shouldIndentBrackettedLine)\n\t\t--indentCount;\n\n\t// must check one less in headerStack if more than one header on a line (allow-addins)...\n\telse if (headerStack->size() > iPrelim + 1\n\t         && !blockIndent\n\t         && lineBeginsWithOpenBracket\n\t         && !(lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)\n\t         && (headerStack->size() > 2 && (*headerStack)[headerStack->size() - 3] != &AS_OPEN_BRACKET)\n\t         && shouldIndentBrackettedLine)\n\t\t--indentCount;\n\n\t// unindent a closing bracket...\n\telse if (lineBeginsWithCloseBracket\n\t         && shouldIndentBrackettedLine)\n\t\t--indentCount;\n\n\t// correctly indent one-line-blocks...\n\telse if (lineOpeningBlocksNum > 0\n\t         && lineOpeningBlocksNum == lineClosingBlocksNum\n\t         && previousLineProbationTab)\n\t\t--indentCount;\n\n\tif (indentCount < 0)\n\t\tindentCount = 0;\n\n\t// take care of extra bracket indentation option...\n\tif (!lineStartsInComment\n\t        && bracketIndent\n\t        && shouldIndentBrackettedLine\n\t        && (lineBeginsWithOpenBracket || lineBeginsWithCloseBracket))\n\t{\n\t\tif (!bracketIndentVtk)\n\t\t\t++indentCount;\n\t\telse\n\t\t{\n\t\t\t// determine if a style VTK bracket is indented\n\t\t\tbool haveUnindentedBracket = false;\n\t\t\tfor (size_t i = 0; i < headerStack->size(); i++)\n\t\t\t{\n\t\t\t\tif (((*headerStack)[i] == &AS_NAMESPACE\n\t\t\t\t        || (*headerStack)[i] == &AS_CLASS\n\t\t\t\t        || (*headerStack)[i] == &AS_STRUCT)\n\t\t\t\t        && i + 1 < headerStack->size()\n\t\t\t\t        && (*headerStack)[i + 1] == &AS_OPEN_BRACKET)\n\t\t\t\t\ti++;\n\t\t\t\telse if (lineBeginsWithOpenBracket)\n\t\t\t\t{\n\t\t\t\t\t// don't double count the current bracket\n\t\t\t\t\tif (i + 1 < headerStack->size()\n\t\t\t\t\t        && (*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t\t\t\t\thaveUnindentedBracket = true;\n\t\t\t\t}\n\t\t\t\telse if ((*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t\t\t\thaveUnindentedBracket = true;\n\t\t\t}\t// end of for loop\n\t\t\tif (haveUnindentedBracket)\n\t\t\t\t++indentCount;\n\t\t}\n\t}\n}\n\n/**\n * Compute indentCount adjustment when in a series of else-if statements\n * and shouldBreakElseIfs is requested.\n * It increments by one for each 'else' in the tempStack.\n */\nint ASBeautifier::adjustIndentCountForBreakElseIfComments() const\n{\n\tassert(isElseHeaderIndent && !tempStacks->empty());\n\tint indentCountIncrement = 0;\n\tvector<const string*>* lastTempStack = tempStacks->back();\n\tif (lastTempStack != NULL)\n\t{\n\t\tfor (size_t i = 0; i < lastTempStack->size(); i++)\n\t\t{\n\t\t\tif (*lastTempStack->at(i) == AS_ELSE)\n\t\t\t\tindentCountIncrement++;\n\t\t}\n\t}\n\treturn indentCountIncrement;\n}\n\n/**\n * Extract a preprocessor statement without the #.\n * If a error occurs an empty string is returned.\n */\nstring ASBeautifier::extractPreprocessorStatement(const string &line) const\n{\n\tstring preproc;\n\tsize_t start = line.find_first_not_of(\"#/ \\t\");\n\tif (start == string::npos)\n\t\treturn preproc;\n\tsize_t end = line.find_first_of(\"/ \\t\", start);\n\tif (end == string::npos)\n\t\tend = line.length();\n\tpreproc = line.substr(start, end - start);\n\treturn preproc;\n}\n\n/**\n * Clear the variables used to align the Objective-C method definitions.\n */\nvoid ASBeautifier::clearObjCMethodDefinitionAlignment()\n{\n\tassert(isImmediatelyPostObjCMethodDefinition);\n\tspaceIndentCount = 0;\n\tspaceIndentObjCMethodDefinition = 0;\n\tcolonIndentObjCMethodDefinition = 0;\n\tisInObjCMethodDefinition = false;\n\tisImmediatelyPostObjCMethodDefinition = false;\n\tif (!inStatementIndentStack->empty())\n\t\tinStatementIndentStack->pop_back();\n}\n\n/**\n * Compute the spaceIndentCount necessary to align the current line colon\n * with the colon position in the argument.\n * If it cannot be aligned indentLength is returned and a new colon\n * position is calculated.\n */\nint ASBeautifier::computeObjCColonAlignment(string &line, int colonAlignPosition) const\n{\n\tint colonPosition = line.find(':');\n\tif (colonPosition < 0 || colonPosition > colonAlignPosition)\n\t\treturn indentLength;\n\treturn (colonAlignPosition - colonPosition);\n}\n\n/**\n * Parse the current line to update indentCount and spaceIndentCount.\n */\nvoid ASBeautifier::parseCurrentLine(const string &line)\n{\n\tbool isInLineComment = false;\n\tbool isInOperator = false;\n\tbool isSpecialChar = false;\n\tbool haveCaseIndent = false;\n\tbool haveAssignmentThisLine = false;\n\tbool closingBracketReached = false;\n\tbool previousLineProbation = (probationHeader != NULL);\n\tchar ch = ' ';\n\tint tabIncrementIn = 0;\n\n\tfor (size_t i = 0; i < line.length(); i++)\n\t{\n\t\tch = line[i];\n\n\t\tif (isInBeautifySQL)\n\t\t\tcontinue;\n\n\t\tif (isWhiteSpace(ch))\n\t\t{\n\t\t\tif (ch == '\\t')\n\t\t\t\ttabIncrementIn += convertTabToSpaces(i, tabIncrementIn);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle special characters (i.e. backslash+character such as \\n, \\t, ...)\n\n\t\tif (isInQuote && !isInVerbatimQuote)\n\t\t{\n\t\t\tif (isSpecialChar)\n\t\t\t{\n\t\t\t\tisSpecialChar = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (line.compare(i, 2, \"\\\\\\\\\") == 0)\n\t\t\t{\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch == '\\\\')\n\t\t\t{\n\t\t\t\tif (peekNextChar(line, i) == ' ')   // is this '\\' at end of line\n\t\t\t\t\thaveLineContinuationChar = true;\n\t\t\t\telse\n\t\t\t\t\tisSpecialChar = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\telse if (isInDefine && ch == '\\\\')\n\t\t\tcontinue;\n\n\t\t// handle quotes (such as 'x' and \"Hello Dolly\")\n\t\tif (!(isInComment || isInLineComment) && (ch == '\"' || ch == '\\''))\n\t\t{\n\t\t\tif (!isInQuote)\n\t\t\t{\n\t\t\t\tquoteChar = ch;\n\t\t\t\tisInQuote = true;\n\t\t\t\tchar prevCh = i > 0 ? line[i - 1] : ' ';\n\t\t\t\tif (isCStyle() && prevCh == 'R')\n\t\t\t\t{\n\t\t\t\t\tint parenPos = line.find('(', i);\n\t\t\t\t\tif (parenPos != -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tisInVerbatimQuote = true;\n\t\t\t\t\t\tverbatimDelimiter = line.substr(i + 1, parenPos - i - 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (isSharpStyle() && prevCh == '@')\n\t\t\t\t\tisInVerbatimQuote = true;\n\t\t\t\t// check for \"C\" following \"extern\"\n\t\t\t\telse if (g_preprocessorCppExternCBracket == 2 && line.compare(i, 3, \"\\\"C\\\"\") == 0)\n\t\t\t\t\t++g_preprocessorCppExternCBracket;\n\t\t\t}\n\t\t\telse if (isInVerbatimQuote && ch == '\"')\n\t\t\t{\n\t\t\t\tif (isCStyle())\n\t\t\t\t{\n\t\t\t\t\tstring delim = ')' + verbatimDelimiter;\n\t\t\t\t\tint delimStart = i - delim.length();\n\t\t\t\t\tif (delimStart > 0 && line.substr(delimStart, delim.length()) == delim)\n\t\t\t\t\t{\n\t\t\t\t\t\tisInQuote = false;\n\t\t\t\t\t\tisInVerbatimQuote = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (isSharpStyle())\n\t\t\t\t{\n\t\t\t\t\tif (peekNextChar(line, i) == '\"')           // check consecutive quotes\n\t\t\t\t\t\ti++;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tisInQuote = false;\n\t\t\t\t\t\tisInVerbatimQuote = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (quoteChar == ch)\n\t\t\t{\n\t\t\t\tisInQuote = false;\n\t\t\t\tisInStatement = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (isInQuote)\n\t\t\tcontinue;\n\n\t\t// handle comments\n\n\t\tif (!(isInComment || isInLineComment) && line.compare(i, 2, \"//\") == 0)\n\t\t{\n\t\t\t// if there is a 'case' statement after these comments unindent by 1\n\t\t\tif (isCaseHeaderCommentIndent)\n\t\t\t\t--indentCount;\n\t\t\t// isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested\n\t\t\t// if there is an 'else' after these comments a tempStacks indent is required\n\t\t\tif (isElseHeaderIndent && lineOpensWithLineComment && !tempStacks->empty())\n\t\t\t\tindentCount += adjustIndentCountForBreakElseIfComments();\n\t\t\tisInLineComment = true;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\telse if (!(isInComment || isInLineComment) && line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\t// if there is a 'case' statement after these comments unindent by 1\n\t\t\tif (isCaseHeaderCommentIndent && lineOpensWithComment)\n\t\t\t\t--indentCount;\n\t\t\t// isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested\n\t\t\t// if there is an 'else' after these comments a tempStacks indent is required\n\t\t\tif (isElseHeaderIndent && lineOpensWithComment && !tempStacks->empty())\n\t\t\t\tindentCount += adjustIndentCountForBreakElseIfComments();\n\t\t\tisInComment = true;\n\t\t\ti++;\n\t\t\tif (!lineOpensWithComment)\t\t\t\t// does line start with comment?\n\t\t\t\tblockCommentNoIndent = true;        // if no, cannot indent continuation lines\n\t\t\tcontinue;\n\t\t}\n\t\telse if ((isInComment || isInLineComment) && line.compare(i, 2, \"*/\") == 0)\n\t\t{\n\t\t\tsize_t firstText = line.find_first_not_of(\" \\t\");\n\t\t\t// if there is a 'case' statement after these comments unindent by 1\n\t\t\t// only if the ending comment is the first entry on the line\n\t\t\tif (isCaseHeaderCommentIndent && firstText == i)\n\t\t\t\t--indentCount;\n\t\t\t// if this comment close starts the line, must check for else-if indent\n\t\t\t// isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested\n\t\t\t// if there is an 'else' after these comments a tempStacks indent is required\n\t\t\tif (firstText == i)\n\t\t\t{\n\t\t\t\tif (isElseHeaderIndent && !lineOpensWithComment && !tempStacks->empty())\n\t\t\t\t\tindentCount += adjustIndentCountForBreakElseIfComments();\n\t\t\t}\n\t\t\tisInComment = false;\n\t\t\ti++;\n\t\t\tblockCommentNoIndent = false;           // ok to indent next comment\n\t\t\tcontinue;\n\t\t}\n\t\t// treat indented preprocessor lines as a line comment\n\t\telse if (line[0] == '#' && isIndentedPreprocessor(line, i))\n\t\t{\n\t\t\tisInLineComment = true;\n\t\t}\n\n\t\tif (isInLineComment)\n\t\t{\n\t\t\t// bypass rest of the comment up to the comment end\n\t\t\twhile (i + 1 < line.length())\n\t\t\t\ti++;\n\n\t\t\tcontinue;\n\t\t}\n\t\tif (isInComment)\n\t\t{\n\t\t\t// if there is a 'case' statement after these comments unindent by 1\n\t\t\tif (!lineOpensWithComment && isCaseHeaderCommentIndent)\n\t\t\t\t--indentCount;\n\t\t\t// isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested\n\t\t\t// if there is an 'else' after these comments a tempStacks indent is required\n\t\t\tif (!lineOpensWithComment && isElseHeaderIndent && !tempStacks->empty())\n\t\t\t\tindentCount += adjustIndentCountForBreakElseIfComments();\n\t\t\t// bypass rest of the comment up to the comment end\n\t\t\twhile (i + 1 < line.length()\n\t\t\t        && line.compare(i + 1, 2, \"*/\") != 0)\n\t\t\t\ti++;\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if we have reached this far then we are NOT in a comment or string of special character...\n\n\t\tif (probationHeader != NULL)\n\t\t{\n\t\t\tif ((probationHeader == &AS_STATIC && ch == '{')\n\t\t\t        || (probationHeader == &AS_SYNCHRONIZED && ch == '('))\n\t\t\t{\n\t\t\t\t// insert the probation header as a new header\n\t\t\t\tisInHeader = true;\n\t\t\t\theaderStack->push_back(probationHeader);\n\n\t\t\t\t// handle the specific probation header\n\t\t\t\tisInConditional = (probationHeader == &AS_SYNCHRONIZED);\n\n\t\t\t\tisInStatement = false;\n\t\t\t\t// if the probation comes from the previous line, then indent by 1 tab count.\n\t\t\t\tif (previousLineProbation\n\t\t\t\t        && ch == '{'\n\t\t\t\t        && !(blockIndent && probationHeader == &AS_STATIC))\n\t\t\t\t{\n\t\t\t\t\t++indentCount;\n\t\t\t\t\tpreviousLineProbationTab = true;\n\t\t\t\t}\n\t\t\t\tpreviousLineProbation = false;\n\t\t\t}\n\n\t\t\t// dismiss the probation header\n\t\t\tprobationHeader = NULL;\n\t\t}\n\n\t\tprevNonSpaceCh = currentNonSpaceCh;\n\t\tcurrentNonSpaceCh = ch;\n\t\tif (!isLegalNameChar(ch) && ch != ',' && ch != ';')\n\t\t{\n\t\t\tprevNonLegalCh = currentNonLegalCh;\n\t\t\tcurrentNonLegalCh = ch;\n\t\t}\n\n\t\tif (isInHeader)\n\t\t{\n\t\t\tisInHeader = false;\n\t\t\tcurrentHeader = headerStack->back();\n\t\t}\n\t\telse\n\t\t\tcurrentHeader = NULL;\n\n\t\tif (isCStyle() && isInTemplate\n\t\t        && (ch == '<' || ch == '>')\n\t\t        && !(line.length() > i + 1 && line.compare(i, 2, \">=\") == 0))\n\t\t{\n\t\t\tif (ch == '<')\n\t\t\t{\n\t\t\t\t++templateDepth;\n\t\t\t\tinStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());\n\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true);\n\t\t\t}\n\t\t\telse if (ch == '>')\n\t\t\t{\n\t\t\t\tpopLastInStatementIndent();\n\t\t\t\tif (--templateDepth <= 0)\n\t\t\t\t{\n\t\t\t\t\tch = ';';\n\t\t\t\t\tisInTemplate = false;\n\t\t\t\t\ttemplateDepth = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// handle parentheses\n\t\tif (ch == '(' || ch == '[' || ch == ')' || ch == ']')\n\t\t{\n\t\t\tif (ch == '(' || ch == '[')\n\t\t\t{\n\t\t\t\tisInOperator = false;\n\t\t\t\t// if have a struct header, this is a declaration not a definition\n\t\t\t\tif (ch == '('\n\t\t\t\t        && !headerStack->empty()\n\t\t\t\t        && headerStack->back() == &AS_STRUCT)\n\t\t\t\t{\n\t\t\t\t\theaderStack->pop_back();\n\t\t\t\t\tisInClassHeader = false;\n\t\t\t\t\tif (line.find(AS_STRUCT, 0) > i)\t// if not on this line\n\t\t\t\t\t\tindentCount -= classInitializerIndents;\n\t\t\t\t\tif (indentCount < 0)\n\t\t\t\t\t\tindentCount = 0;\n\t\t\t\t}\n\n\t\t\t\tif (parenDepth == 0)\n\t\t\t\t{\n\t\t\t\t\tparenStatementStack->push_back(isInStatement);\n\t\t\t\t\tisInStatement = true;\n\t\t\t\t}\n\t\t\t\tparenDepth++;\n\t\t\t\tif (ch == '[')\n\t\t\t\t\t++squareBracketCount;\n\n\t\t\t\tinStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());\n\n\t\t\t\tif (currentHeader != NULL)\n\t\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, minConditionalIndent/*indentLength*2*/, true);\n\t\t\t\telse\n\t\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true);\n\t\t\t}\n\t\t\telse if (ch == ')' || ch == ']')\n\t\t\t{\n\t\t\t\tif (ch == ']')\n\t\t\t\t\t--squareBracketCount;\n\t\t\t\tif (squareBracketCount < 0)\n\t\t\t\t\tsquareBracketCount = 0;\n\t\t\t\tfoundPreCommandHeader = false;\n\t\t\t\tparenDepth--;\n\t\t\t\tif (parenDepth == 0)\n\t\t\t\t{\n\t\t\t\t\tif (!parenStatementStack->empty())      // in case of unmatched closing parens\n\t\t\t\t\t{\n\t\t\t\t\t\tisInStatement = parenStatementStack->back();\n\t\t\t\t\t\tparenStatementStack->pop_back();\n\t\t\t\t\t}\n\t\t\t\t\tisInAsm = false;\n\t\t\t\t\tisInConditional = false;\n\t\t\t\t}\n\n\t\t\t\tif (!inStatementIndentStackSizeStack->empty())\n\t\t\t\t{\n\t\t\t\t\tpopLastInStatementIndent();\n\n\t\t\t\t\tif (!parenIndentStack->empty())\n\t\t\t\t\t{\n\t\t\t\t\t\tint poppedIndent = parenIndentStack->back();\n\t\t\t\t\t\tparenIndentStack->pop_back();\n\n\t\t\t\t\t\tif (i == 0)\n\t\t\t\t\t\t\tspaceIndentCount = poppedIndent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '{')\n\t\t{\n\t\t\t// first, check if '{' is a block-opener or a static-array opener\n\t\t\tbool isBlockOpener = ((prevNonSpaceCh == '{' && bracketBlockStateStack->back())\n\t\t\t                      || prevNonSpaceCh == '}'\n\t\t\t                      || prevNonSpaceCh == ')'\n\t\t\t                      || prevNonSpaceCh == ';'\n\t\t\t                      || peekNextChar(line, i) == '{'\n\t\t\t                      || foundPreCommandHeader\n\t\t\t                      || foundPreCommandMacro\n\t\t\t                      || isInClassHeader\n\t\t\t                      || (isInClassInitializer && !isLegalNameChar(prevNonSpaceCh))\n\t\t\t                      || isNonInStatementArray\n\t\t\t                      || isInObjCMethodDefinition\n\t\t\t                      || isInObjCInterface\n\t\t\t                      || isSharpAccessor\n\t\t\t                      || isSharpDelegate\n\t\t\t                      || isInExternC\n\t\t\t                      || isInAsmBlock\n\t\t\t                      || getNextWord(line, i) == AS_NEW\n\t\t\t                      || (isInDefine\n\t\t\t                          && (prevNonSpaceCh == '('\n\t\t\t                              || isLegalNameChar(prevNonSpaceCh))));\n\n\t\t\tif (isInObjCMethodDefinition)\n\t\t\t\tisImmediatelyPostObjCMethodDefinition = true;\n\n\t\t\tif (!isBlockOpener && !isInStatement && !isInClassInitializer && !isInEnum)\n\t\t\t{\n\t\t\t\tif (headerStack->empty())\n\t\t\t\t\tisBlockOpener = true;\n\t\t\t\telse if (headerStack->back() == &AS_NAMESPACE\n\t\t\t\t         || headerStack->back() == &AS_CLASS\n\t\t\t\t         || headerStack->back() == &AS_INTERFACE\n\t\t\t\t         || headerStack->back() == &AS_STRUCT\n\t\t\t\t         || headerStack->back() == &AS_UNION)\n\t\t\t\t\tisBlockOpener = true;\n\t\t\t}\n\n\t\t\tif (!isBlockOpener && currentHeader != NULL)\n\t\t\t{\n\t\t\t\tfor (size_t n = 0; n < nonParenHeaders->size(); n++)\n\t\t\t\t\tif (currentHeader == (*nonParenHeaders)[n])\n\t\t\t\t\t{\n\t\t\t\t\t\tisBlockOpener = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tbracketBlockStateStack->push_back(isBlockOpener);\n\n\t\t\tif (!isBlockOpener)\n\t\t\t{\n\t\t\t\tinStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());\n\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true);\n\t\t\t\tparenDepth++;\n\t\t\t\tif (i == 0)\n\t\t\t\t\tshouldIndentBrackettedLine = false;\n\t\t\t\tisInEnumTypeID = false;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// this bracket is a block opener...\n\n\t\t\t++lineOpeningBlocksNum;\n\n\t\t\tif (isInClassInitializer || isInEnumTypeID)\n\t\t\t{\n\t\t\t\t// decrease tab count if bracket is broken\n\t\t\t\tif (lineBeginsWithOpenBracket)\n\t\t\t\t{\n\t\t\t\t\tindentCount -= classInitializerIndents;\n\t\t\t\t\t// decrease one more if an empty class\n\t\t\t\t\tif (!headerStack->empty()\n\t\t\t\t\t        && (*headerStack).back() == &AS_CLASS)\n\t\t\t\t\t{\n\t\t\t\t\t\tint nextChar = getNextProgramCharDistance(line, i);\n\t\t\t\t\t\tif ((int) line.length() > nextChar && line[nextChar] == '}')\n\t\t\t\t\t\t\t--indentCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isInObjCInterface)\n\t\t\t{\n\t\t\t\tisInObjCInterface = false;\n\t\t\t\tif (lineBeginsWithOpenBracket)\n\t\t\t\t\t--indentCount;\n\t\t\t}\n\n\t\t\tif (bracketIndent && !namespaceIndent && !headerStack->empty()\n\t\t\t        && (*headerStack).back() == &AS_NAMESPACE)\n\t\t\t{\n\t\t\t\tshouldIndentBrackettedLine = false;\n\t\t\t\t--indentCount;\n\t\t\t}\n\n\t\t\t// an indentable struct is treated like a class in the header stack\n\t\t\tif (!headerStack->empty()\n\t\t\t        && (*headerStack).back() == &AS_STRUCT\n\t\t\t        && isInIndentableStruct)\n\t\t\t\t(*headerStack).back() = &AS_CLASS;\n\n\t\t\tblockParenDepthStack->push_back(parenDepth);\n\t\t\tblockStatementStack->push_back(isInStatement);\n\n\t\t\tif (!inStatementIndentStack->empty())\n\t\t\t{\n\t\t\t\t// completely purge the inStatementIndentStack\n\t\t\t\twhile (!inStatementIndentStack->empty())\n\t\t\t\t\tpopLastInStatementIndent();\n\t\t\t\tif (isInClassInitializer || isInClassHeaderTab)\n\t\t\t\t{\n\t\t\t\t\tif (lineBeginsWithOpenBracket || lineBeginsWithComma)\n\t\t\t\t\t\tspaceIndentCount = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tspaceIndentCount = 0;\n\t\t\t}\n\n\t\t\tblockTabCount += (isInStatement ? 1 : 0);\n\t\t\tif (g_preprocessorCppExternCBracket == 3)\n\t\t\t\t++g_preprocessorCppExternCBracket;\n\t\t\tparenDepth = 0;\n\t\t\tisInClassHeader = false;\n\t\t\tisInClassHeaderTab = false;\n\t\t\tisInClassInitializer = false;\n\t\t\tisInEnumTypeID = false;\n\t\t\tisInStatement = false;\n\t\t\tisInQuestion = false;\n\t\t\tisInLet = false;\n\t\t\tfoundPreCommandHeader = false;\n\t\t\tfoundPreCommandMacro = false;\n\t\t\tisInExternC = false;\n\n\t\t\ttempStacks->push_back(new vector<const string*>);\n\t\t\theaderStack->push_back(&AS_OPEN_BRACKET);\n\t\t\tlastLineHeader = &AS_OPEN_BRACKET;\n\n\t\t\tcontinue;\n\t\t}\t// end '{'\n\n\t\t//check if a header has been reached\n\t\tbool isPotentialHeader = isCharPotentialHeader(line, i);\n\n\t\tif (isPotentialHeader && !squareBracketCount)\n\t\t{\n\t\t\tconst string* newHeader = findHeader(line, i, headers);\n\n\t\t\t// Qt headers may be variables in C++\n\t\t\tif (newHeader == &AS_FOREVER || newHeader == &AS_FOREACH)\n\t\t\t{\n\t\t\t\tif (line.find_first_of(\"=;\", i) != string::npos)\n\t\t\t\t\tnewHeader = NULL;\n\t\t\t}\n\n\t\t\tif (newHeader != NULL)\n\t\t\t{\n\t\t\t\t// if we reached here, then this is a header...\n\t\t\t\tbool isIndentableHeader = true;\n\n\t\t\t\tisInHeader = true;\n\n\t\t\t\tvector<const string*>* lastTempStack;\n\t\t\t\tif (tempStacks->empty())\n\t\t\t\t\tlastTempStack = NULL;\n\t\t\t\telse\n\t\t\t\t\tlastTempStack = tempStacks->back();\n\n\t\t\t\t// if a new block is opened, push a new stack into tempStacks to hold the\n\t\t\t\t// future list of headers in the new block.\n\n\t\t\t\t// take care of the special case: 'else if (...)'\n\t\t\t\tif (newHeader == &AS_IF && lastLineHeader == &AS_ELSE)\n\t\t\t\t{\n\t\t\t\t\theaderStack->pop_back();\n\t\t\t\t}\n\n\t\t\t\t// take care of 'else'\n\t\t\t\telse if (newHeader == &AS_ELSE)\n\t\t\t\t{\n\t\t\t\t\tif (lastTempStack != NULL)\n\t\t\t\t\t{\n\t\t\t\t\t\tint indexOfIf = indexOf(*lastTempStack, &AS_IF);\n\t\t\t\t\t\tif (indexOfIf != -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// recreate the header list in headerStack up to the previous 'if'\n\t\t\t\t\t\t\t// from the temporary snapshot stored in lastTempStack.\n\t\t\t\t\t\t\tint restackSize = lastTempStack->size() - indexOfIf - 1;\n\t\t\t\t\t\t\tfor (int r = 0; r < restackSize; r++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaderStack->push_back(lastTempStack->back());\n\t\t\t\t\t\t\t\tlastTempStack->pop_back();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!closingBracketReached)\n\t\t\t\t\t\t\t\tindentCount += restackSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If the above if is not true, i.e. no 'if' before the 'else',\n\t\t\t\t\t\t * then nothing beautiful will come out of this...\n\t\t\t\t\t\t * I should think about inserting an Exception here to notify the caller of this...\n\t\t\t\t\t\t */\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// check if 'while' closes a previous 'do'\n\t\t\t\telse if (newHeader == &AS_WHILE)\n\t\t\t\t{\n\t\t\t\t\tif (lastTempStack != NULL)\n\t\t\t\t\t{\n\t\t\t\t\t\tint indexOfDo = indexOf(*lastTempStack, &AS_DO);\n\t\t\t\t\t\tif (indexOfDo != -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// recreate the header list in headerStack up to the previous 'do'\n\t\t\t\t\t\t\t// from the temporary snapshot stored in lastTempStack.\n\t\t\t\t\t\t\tint restackSize = lastTempStack->size() - indexOfDo - 1;\n\t\t\t\t\t\t\tfor (int r = 0; r < restackSize; r++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaderStack->push_back(lastTempStack->back());\n\t\t\t\t\t\t\t\tlastTempStack->pop_back();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!closingBracketReached)\n\t\t\t\t\t\t\t\tindentCount += restackSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// check if 'catch' closes a previous 'try' or 'catch'\n\t\t\t\telse if (newHeader == &AS_CATCH || newHeader == &AS_FINALLY)\n\t\t\t\t{\n\t\t\t\t\tif (lastTempStack != NULL)\n\t\t\t\t\t{\n\t\t\t\t\t\tint indexOfTry = indexOf(*lastTempStack, &AS_TRY);\n\t\t\t\t\t\tif (indexOfTry == -1)\n\t\t\t\t\t\t\tindexOfTry = indexOf(*lastTempStack, &AS_CATCH);\n\t\t\t\t\t\tif (indexOfTry != -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// recreate the header list in headerStack up to the previous 'try'\n\t\t\t\t\t\t\t// from the temporary snapshot stored in lastTempStack.\n\t\t\t\t\t\t\tint restackSize = lastTempStack->size() - indexOfTry - 1;\n\t\t\t\t\t\t\tfor (int r = 0; r < restackSize; r++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaderStack->push_back(lastTempStack->back());\n\t\t\t\t\t\t\t\tlastTempStack->pop_back();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!closingBracketReached)\n\t\t\t\t\t\t\t\tindentCount += restackSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (newHeader == &AS_CASE)\n\t\t\t\t{\n\t\t\t\t\tisInCase = true;\n\t\t\t\t\tif (!haveCaseIndent)\n\t\t\t\t\t{\n\t\t\t\t\t\thaveCaseIndent = true;\n\t\t\t\t\t\tif (!lineBeginsWithOpenBracket)\n\t\t\t\t\t\t\t--indentCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (newHeader == &AS_DEFAULT)\n\t\t\t\t{\n\t\t\t\t\tisInCase = true;\n\t\t\t\t\t--indentCount;\n\t\t\t\t}\n\t\t\t\telse if (newHeader == &AS_STATIC\n\t\t\t\t         || newHeader == &AS_SYNCHRONIZED)\n\t\t\t\t{\n\t\t\t\t\tif (!headerStack->empty()\n\t\t\t\t\t        && (headerStack->back() == &AS_STATIC\n\t\t\t\t\t            || headerStack->back() == &AS_SYNCHRONIZED))\n\t\t\t\t\t{\n\t\t\t\t\t\tisIndentableHeader = false;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tisIndentableHeader = false;\n\t\t\t\t\t\tprobationHeader = newHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (newHeader == &AS_TEMPLATE)\n\t\t\t\t{\n\t\t\t\t\tisInTemplate = true;\n\t\t\t\t\tisIndentableHeader = false;\n\t\t\t\t}\n\n\t\t\t\tif (isIndentableHeader)\n\t\t\t\t{\n\t\t\t\t\theaderStack->push_back(newHeader);\n\t\t\t\t\tisInStatement = false;\n\t\t\t\t\tif (indexOf(*nonParenHeaders, newHeader) == -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tisInConditional = true;\n\t\t\t\t\t}\n\t\t\t\t\tlastLineHeader = newHeader;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tisInHeader = false;\n\n\t\t\t\ti += newHeader->length() - 1;\n\n\t\t\t\tcontinue;\n\t\t\t}  // newHeader != NULL\n\n\t\t\tif (findHeader(line, i, preCommandHeaders))\n\t\t\t\tfoundPreCommandHeader = true;\n\n\t\t\t// Objective-C NSException macros are preCommandHeaders\n\t\t\tif (isCStyle() && findKeyword(line, i, AS_NS_DURING))\n\t\t\t\tfoundPreCommandMacro = true;\n\t\t\tif (isCStyle() && findKeyword(line, i, AS_NS_HANDLER))\n\t\t\t\tfoundPreCommandMacro = true;\n\n\t\t\tif (parenDepth == 0 && findKeyword(line, i, AS_ENUM))\n\t\t\t\tisInEnum = true;\n\n\t\t\tif (isSharpStyle() && findKeyword(line, i, AS_LET))\n\t\t\t\tisInLet = true;\n\n\t\t}   // isPotentialHeader\n\n\t\tif (ch == '?')\n\t\t\tisInQuestion = true;\n\n\t\t// special handling of colons\n\t\tif (ch == ':')\n\t\t{\n\t\t\tif (line.length() > i + 1 && line[i + 1] == ':') // look for ::\n\t\t\t{\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (isInQuestion)\n\t\t\t{\n\t\t\t\t// do nothing special\n\t\t\t}\n\t\t\telse if (parenDepth > 0)\n\t\t\t{\n\t\t\t\t// found a 'for' loop or an objective-C statement\n\t\t\t\t// so do nothing special\n\t\t\t}\n\t\t\telse if (isInEnum)\n\t\t\t{\n\t\t\t\t// found an enum with a base-type\n\t\t\t\tisInEnumTypeID = true;\n\t\t\t\tif (i == 0)\n\t\t\t\t\tindentCount += classInitializerIndents;\n\t\t\t}\n\t\t\telse if (isCStyle()\n\t\t\t         && !isInCase\n\t\t\t         && (prevNonSpaceCh == ')' || foundPreCommandHeader))\n\t\t\t{\n\t\t\t\t// found a 'class' c'tor initializer\n\t\t\t\tisInClassInitializer = true;\n\t\t\t\tregisterInStatementIndentColon(line, i, tabIncrementIn);\n\t\t\t\tif (i == 0)\n\t\t\t\t\tindentCount += classInitializerIndents;\n\t\t\t}\n\t\t\telse if (isInClassHeader || isInObjCInterface)\n\t\t\t{\n\t\t\t\t// is in a 'class A : public B' definition\n\t\t\t\tisInClassHeaderTab = true;\n\t\t\t\tregisterInStatementIndentColon(line, i, tabIncrementIn);\n\t\t\t}\n\t\t\telse if (isInAsm || isInAsmOneLine || isInAsmBlock)\n\t\t\t{\n\t\t\t\t// do nothing special\n\t\t\t}\n\t\t\telse if (isDigit(peekNextChar(line, i)))\n\t\t\t{\n\t\t\t\t// found a bit field\n\t\t\t\t// so do nothing special\n\t\t\t}\n\t\t\telse if (isCStyle() && isInClass && prevNonSpaceCh != ')')\n\t\t\t{\n\t\t\t\t// found a 'private:' or 'public:' inside a class definition\n\t\t\t\t--indentCount;\n\t\t\t\tif (modifierIndent)\n\t\t\t\t\tspaceIndentCount += (indentLength / 2);\n\t\t\t}\n\t\t\telse if (isCStyle() && !isInClass\n\t\t\t         && headerStack->size() >= 2\n\t\t\t         && (*headerStack)[headerStack->size() - 2] == &AS_CLASS\n\t\t\t         && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACKET)\n\t\t\t{\n\t\t\t\t// found a 'private:' or 'public:' inside a class definition\n\t\t\t\t// and on the same line as the class opening bracket\n\t\t\t\t// do nothing\n\t\t\t}\n\t\t\telse if (isJavaStyle() && lastLineHeader == &AS_FOR)\n\t\t\t{\n\t\t\t\t// found a java for-each statement\n\t\t\t\t// so do nothing special\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcurrentNonSpaceCh = ';'; // so that brackets after the ':' will appear as block-openers\n\t\t\t\tchar peekedChar = peekNextChar(line, i);\n\t\t\t\tif (isInCase)\n\t\t\t\t{\n\t\t\t\t\tisInCase = false;\n\t\t\t\t\tch = ';'; // from here on, treat char as ';'\n\t\t\t\t}\n\t\t\t\telse if (isCStyle() || (isSharpStyle() && peekedChar == ';'))\n\t\t\t\t{\n\t\t\t\t\t// is in a label (e.g. 'label1:')\n\t\t\t\t\tif (labelIndent)\n\t\t\t\t\t\t--indentCount; // unindent label by one indent\n\t\t\t\t\telse if (!lineBeginsWithOpenBracket)\n\t\t\t\t\t\tindentCount = 0; // completely flush indent to left\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ((ch == ';' || (parenDepth > 0 && ch == ',')) && !inStatementIndentStackSizeStack->empty())\n\t\t\twhile ((int) inStatementIndentStackSizeStack->back() + (parenDepth > 0 ? 1 : 0)\n\t\t\t        < (int) inStatementIndentStack->size())\n\t\t\t\tinStatementIndentStack->pop_back();\n\n\t\telse if (ch == ',' && isInEnum && isNonInStatementArray && !inStatementIndentStack->empty())\n\t\t\tinStatementIndentStack->pop_back();\n\n\t\t// handle commas\n\t\t// previous \"isInStatement\" will be from an assignment operator or class initializer\n\t\tif (ch == ',' && parenDepth == 0 && !isInStatement && !isNonInStatementArray)\n\t\t{\n\t\t\t// is comma at end of line\n\t\t\tsize_t nextChar = line.find_first_not_of(\" \\t\", i + 1);\n\t\t\tif (nextChar != string::npos)\n\t\t\t{\n\t\t\t\tif (line.compare(nextChar, 2, \"//\") == 0\n\t\t\t\t        || line.compare(nextChar, 2, \"/*\") == 0)\n\t\t\t\t\tnextChar = string::npos;\n\t\t\t}\n\t\t\t// register indent\n\t\t\tif (nextChar == string::npos)\n\t\t\t{\n\t\t\t\t// register indent at previous word\n\t\t\t\tif (isJavaStyle() && isInClassHeader)\n\t\t\t\t{\n\t\t\t\t\t// do nothing for now\n\t\t\t\t}\n\t\t\t\t// register indent at second word on the line\n\t\t\t\telse if (!isInTemplate && !isInClassHeaderTab && !isInClassInitializer)\n\t\t\t\t{\n\t\t\t\t\tint prevWord = getInStatementIndentComma(line, i);\n\t\t\t\t\tint inStatementIndent = prevWord + spaceIndentCount + tabIncrementIn;\n\t\t\t\t\tinStatementIndentStack->push_back(inStatementIndent);\n\t\t\t\t\tisInStatement = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// handle comma first initializers\n\t\tif (ch == ',' && parenDepth == 0 && lineBeginsWithComma\n\t\t        && (isInClassInitializer || isInClassHeaderTab))\n\t\t\tspaceIndentCount = 0;\n\n\t\t// handle ends of statements\n\t\tif ((ch == ';' && parenDepth == 0) || ch == '}')\n\t\t{\n\t\t\tif (ch == '}')\n\t\t\t{\n\t\t\t\t// first check if this '}' closes a previous block, or a static array...\n\t\t\t\tif (bracketBlockStateStack->size() > 1)\n\t\t\t\t{\n\t\t\t\t\tbool bracketBlockState = bracketBlockStateStack->back();\n\t\t\t\t\tbracketBlockStateStack->pop_back();\n\t\t\t\t\tif (!bracketBlockState)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!inStatementIndentStackSizeStack->empty())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// this bracket is a static array\n\t\t\t\t\t\t\tpopLastInStatementIndent();\n\t\t\t\t\t\t\tparenDepth--;\n\t\t\t\t\t\t\tif (i == 0)\n\t\t\t\t\t\t\t\tshouldIndentBrackettedLine = false;\n\n\t\t\t\t\t\t\tif (!parenIndentStack->empty())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tint poppedIndent = parenIndentStack->back();\n\t\t\t\t\t\t\t\tparenIndentStack->pop_back();\n\t\t\t\t\t\t\t\tif (i == 0)\n\t\t\t\t\t\t\t\t\tspaceIndentCount = poppedIndent;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// this bracket is block closer...\n\n\t\t\t\t++lineClosingBlocksNum;\n\n\t\t\t\tif (!inStatementIndentStackSizeStack->empty())\n\t\t\t\t\tpopLastInStatementIndent();\n\n\t\t\t\tif (!blockParenDepthStack->empty())\n\t\t\t\t{\n\t\t\t\t\tparenDepth = blockParenDepthStack->back();\n\t\t\t\t\tblockParenDepthStack->pop_back();\n\t\t\t\t\tisInStatement = blockStatementStack->back();\n\t\t\t\t\tblockStatementStack->pop_back();\n\n\t\t\t\t\tif (isInStatement)\n\t\t\t\t\t\tblockTabCount--;\n\t\t\t\t}\n\n\t\t\t\tclosingBracketReached = true;\n\t\t\t\tif (i == 0)\n\t\t\t\t\tspaceIndentCount = 0;\n\t\t\t\tisInAsmBlock = false;\n\t\t\t\tisInAsm = isInAsmOneLine = isInQuote = false;\t// close these just in case\n\n\t\t\t\tint headerPlace = indexOf(*headerStack, &AS_OPEN_BRACKET);\n\t\t\t\tif (headerPlace != -1)\n\t\t\t\t{\n\t\t\t\t\tconst string* popped = headerStack->back();\n\t\t\t\t\twhile (popped != &AS_OPEN_BRACKET)\n\t\t\t\t\t{\n\t\t\t\t\t\theaderStack->pop_back();\n\t\t\t\t\t\tpopped = headerStack->back();\n\t\t\t\t\t}\n\t\t\t\t\theaderStack->pop_back();\n\n\t\t\t\t\tif (headerStack->empty())\n\t\t\t\t\t\tg_preprocessorCppExternCBracket = 0;\n\n\t\t\t\t\t// do not indent namespace bracket unless namespaces are indented\n\t\t\t\t\tif (!namespaceIndent && !headerStack->empty()\n\t\t\t\t\t        && (*headerStack).back() == &AS_NAMESPACE\n\t\t\t\t\t        && i == 0)\t\t// must be the first bracket on the line\n\t\t\t\t\t\tshouldIndentBrackettedLine = false;\n\n\t\t\t\t\tif (!tempStacks->empty())\n\t\t\t\t\t{\n\t\t\t\t\t\tvector<const string*>* temp = tempStacks->back();\n\t\t\t\t\t\ttempStacks->pop_back();\n\t\t\t\t\t\tdelete temp;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tch = ' '; // needed due to cases such as '}else{', so that headers ('else' in this case) will be identified...\n\t\t\t}\t// ch == '}'\n\n\t\t\t/*\n\t\t\t * Create a temporary snapshot of the current block's header-list in the\n\t\t\t * uppermost inner stack in tempStacks, and clear the headerStack up to\n\t\t\t * the beginning of the block.\n\t\t\t * Thus, the next future statement will think it comes one indent past\n\t\t\t * the block's '{' unless it specifically checks for a companion-header\n\t\t\t * (such as a previous 'if' for an 'else' header) within the tempStacks,\n\t\t\t * and recreates the temporary snapshot by manipulating the tempStacks.\n\t\t\t */\n\t\t\tif (!tempStacks->back()->empty())\n\t\t\t\twhile (!tempStacks->back()->empty())\n\t\t\t\t\ttempStacks->back()->pop_back();\n\t\t\twhile (!headerStack->empty() && headerStack->back() != &AS_OPEN_BRACKET)\n\t\t\t{\n\t\t\t\ttempStacks->back()->push_back(headerStack->back());\n\t\t\t\theaderStack->pop_back();\n\t\t\t}\n\n\t\t\tif (parenDepth == 0 && ch == ';')\n\t\t\t\tisInStatement = false;\n\t\t\tif (isInObjCMethodDefinition)\n\t\t\t\tisImmediatelyPostObjCMethodDefinition = true;\n\n\t\t\tpreviousLastLineHeader = NULL;\n\t\t\tisInClassHeader = false;\t\t// for 'friend' class\n\t\t\tisInEnum = false;\n\t\t\tisInQuestion = false;\n\t\t\tisInObjCInterface = false;\n\t\t\tfoundPreCommandHeader = false;\n\t\t\tfoundPreCommandMacro = false;\n\t\t\tsquareBracketCount = 0;\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isPotentialHeader)\n\t\t{\n\t\t\t// check for preBlockStatements in C/C++ ONLY if not within parentheses\n\t\t\t// (otherwise 'struct XXX' statements would be wrongly interpreted...)\n\t\t\tif (!isInTemplate && !(isCStyle() && parenDepth > 0))\n\t\t\t{\n\t\t\t\tconst string* newHeader = findHeader(line, i, preBlockStatements);\n\t\t\t\tif (newHeader != NULL\n\t\t\t\t        && !(isCStyle() && newHeader == &AS_CLASS && isInEnum))\t// is not 'enum class'\n\t\t\t\t{\n\t\t\t\t\tif (!isSharpStyle())\n\t\t\t\t\t\theaderStack->push_back(newHeader);\n\t\t\t\t\t// do not need 'where' in the headerStack\n\t\t\t\t\t// do not need second 'class' statement in a row\n\t\t\t\t\telse if (!(newHeader == &AS_WHERE\n\t\t\t\t\t           || (newHeader == &AS_CLASS\n\t\t\t\t\t               && !headerStack->empty()\n\t\t\t\t\t               && headerStack->back() == &AS_CLASS)))\n\t\t\t\t\t\theaderStack->push_back(newHeader);\n\n\t\t\t\t\tif (!headerStack->empty())\n\t\t\t\t\t{\n\t\t\t\t\t\tif ((*headerStack).back() == &AS_CLASS\n\t\t\t\t\t\t        || (*headerStack).back() == &AS_STRUCT\n\t\t\t\t\t\t        || (*headerStack).back() == &AS_INTERFACE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisInClassHeader = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ((*headerStack).back() == &AS_NAMESPACE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// remove inStatementIndent from namespace\n\t\t\t\t\t\t\tif (!inStatementIndentStack->empty())\n\t\t\t\t\t\t\t\tinStatementIndentStack->pop_back();\n\t\t\t\t\t\t\tisInStatement = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ti += newHeader->length() - 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst string* foundIndentableHeader = findHeader(line, i, indentableHeaders);\n\n\t\t\tif (foundIndentableHeader != NULL)\n\t\t\t{\n\t\t\t\t// must bypass the header before registering the in statement\n\t\t\t\ti += foundIndentableHeader->length() - 1;\n\t\t\t\tif (!isInOperator && !isInTemplate && !isNonInStatementArray)\n\t\t\t\t{\n\t\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, false);\n\t\t\t\t\tisInStatement = true;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isCStyle() && findKeyword(line, i, AS_OPERATOR))\n\t\t\t\tisInOperator = true;\n\n\t\t\tif (g_preprocessorCppExternCBracket == 1 && findKeyword(line, i, AS_EXTERN))\n\t\t\t\t++g_preprocessorCppExternCBracket;\n\n\t\t\tif (g_preprocessorCppExternCBracket == 3)\t// extern \"C\" is not followed by a '{'\n\t\t\t\tg_preprocessorCppExternCBracket = 0;\n\n\t\t\t// \"new\" operator is a pointer, not a calculation\n\t\t\tif (findKeyword(line, i, AS_NEW))\n\t\t\t{\n\t\t\t\tif (isInStatement && !inStatementIndentStack->empty() && prevNonSpaceCh == '=' )\n\t\t\t\t\tinStatementIndentStack->back() = 0;\n\t\t\t}\n\n\t\t\tif (isCStyle())\n\t\t\t{\n\t\t\t\tif (findKeyword(line, i, AS_ASM)\n\t\t\t\t        || findKeyword(line, i, AS__ASM__))\n\t\t\t\t{\n\t\t\t\t\tisInAsm = true;\n\t\t\t\t}\n\t\t\t\telse if (findKeyword(line, i, AS_MS_ASM)\t\t// microsoft specific\n\t\t\t\t         || findKeyword(line, i, AS_MS__ASM))\n\t\t\t\t{\n\t\t\t\t\tint index = 4;\n\t\t\t\t\tif (peekNextChar(line, i) == '_')\t\t// check for __asm\n\t\t\t\t\t\tindex = 5;\n\n\t\t\t\t\tchar peekedChar = ASBase::peekNextChar(line, i + index);\n\t\t\t\t\tif (peekedChar == '{' || peekedChar == ' ')\n\t\t\t\t\t\tisInAsmBlock = true;\n\t\t\t\t\telse\n\t\t\t\t\t\tisInAsmOneLine = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// bypass the entire name for all others\n\t\t\tstring name = getCurrentWord(line, i);\n\t\t\ti += name.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle Objective-C statements\n\n\t\tif (ch == '@'\n\t\t        && isCharPotentialHeader(line, i + 1))\n\t\t{\n\t\t\tstring curWord = getCurrentWord(line, i + 1);\n\t\t\tif (curWord == AS_INTERFACE\t&& headerStack->empty())\n\t\t\t{\n\t\t\t\tisInObjCInterface = true;\n\t\t\t\tstring name = '@' + curWord;\n\t\t\t\ti += name.length() - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (curWord == AS_PUBLIC\n\t\t\t         || curWord == AS_PRIVATE\n\t\t\t         || curWord == AS_PROTECTED)\n\t\t\t{\n\t\t\t\t--indentCount;\n\t\t\t\tif (modifierIndent)\n\t\t\t\t\tspaceIndentCount += (indentLength / 2);\n\t\t\t\tstring name = '@' + curWord;\n\t\t\t\ti += name.length() - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (curWord == AS_END)\n\t\t\t{\n\t\t\t\tpopLastInStatementIndent();\n\t\t\t\tspaceIndentCount = 0;\n\t\t\t\tif (isInObjCInterface)\n\t\t\t\t\t--indentCount;\n\t\t\t\tisInObjCInterface = false;\n\t\t\t\tisInObjCMethodDefinition = false;\n\t\t\t\tstring name = '@' + curWord;\n\t\t\t\ti += name.length() - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\telse if ((ch == '-' || ch == '+')\n\t\t         && peekNextChar(line, i) == '('\n\t\t         && headerStack->empty()\n\t\t         && line.find_first_not_of(\" \\t\") == i)\n\t\t{\n\t\t\tif (isInObjCInterface)\n\t\t\t\t--indentCount;\n\t\t\tisInObjCInterface = false;\n\t\t\tisInObjCMethodDefinition = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle operators\n\n\t\tbool isPotentialOperator = isCharPotentialOperator(ch);\n\n\t\tif (isPotentialOperator)\n\t\t{\n\t\t\t// Check if an operator has been reached.\n\t\t\tconst string* foundAssignmentOp = findOperator(line, i, assignmentOperators);\n\t\t\tconst string* foundNonAssignmentOp = findOperator(line, i, nonAssignmentOperators);\n\n\t\t\tif (foundNonAssignmentOp == &AS_LAMBDA)\n\t\t\t\tfoundPreCommandHeader = true;\n\n\t\t\tif (isInTemplate && foundNonAssignmentOp == &AS_GR_GR)\n\t\t\t\tfoundNonAssignmentOp = NULL;\n\n\t\t\t// Since findHeader's boundary checking was not used above, it is possible\n\t\t\t// that both an assignment op and a non-assignment op where found,\n\t\t\t// e.g. '>>' and '>>='. If this is the case, treat the LONGER one as the\n\t\t\t// found operator.\n\t\t\tif (foundAssignmentOp != NULL && foundNonAssignmentOp != NULL)\n\t\t\t{\n\t\t\t\tif (foundAssignmentOp->length() < foundNonAssignmentOp->length())\n\t\t\t\t\tfoundAssignmentOp = NULL;\n\t\t\t\telse\n\t\t\t\t\tfoundNonAssignmentOp = NULL;\n\t\t\t}\n\n\t\t\tif (foundNonAssignmentOp != NULL)\n\t\t\t{\n\t\t\t\tif (foundNonAssignmentOp->length() > 1)\n\t\t\t\t\ti += foundNonAssignmentOp->length() - 1;\n\n\t\t\t\t// For C++ input/output, operator<< and >> should be\n\t\t\t\t// aligned, if we are not in a statement already and\n\t\t\t\t// also not in the \"operator<<(...)\" header line\n\t\t\t\tif (!isInOperator\n\t\t\t\t        && inStatementIndentStack->empty()\n\t\t\t\t        && isCStyle()\n\t\t\t\t        && (foundNonAssignmentOp == &AS_GR_GR\n\t\t\t\t            || foundNonAssignmentOp == &AS_LS_LS))\n\t\t\t\t{\n\t\t\t\t\t// this will be true if the line begins with the operator\n\t\t\t\t\tif (i < 2 && spaceIndentCount == 0)\n\t\t\t\t\t\tspaceIndentCount += 2 * indentLength;\n\t\t\t\t\t// align to the beginning column of the operator\n\t\t\t\t\tregisterInStatementIndent(line, i - foundNonAssignmentOp->length(), spaceIndentCount, tabIncrementIn, 0, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if (foundAssignmentOp != NULL)\n\t\t\t{\n\t\t\t\tfoundPreCommandHeader = false;\t\t// clears this for array assignments\n\t\t\t\tfoundPreCommandMacro = false;\n\n\t\t\t\tif (foundAssignmentOp->length() > 1)\n\t\t\t\t\ti += foundAssignmentOp->length() - 1;\n\n\t\t\t\tif (!isInOperator && !isInTemplate && (!isNonInStatementArray || isInEnum))\n\t\t\t\t{\n\t\t\t\t\t// if multiple assignments, align on the previous word\n\t\t\t\t\tif (foundAssignmentOp == &AS_ASSIGN\n\t\t\t\t\t        && prevNonSpaceCh != ']'\t\t// an array\n\t\t\t\t\t        && statementEndsWithComma(line, i))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!haveAssignmentThisLine)\t\t// only one assignment indent per line\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// register indent at previous word\n\t\t\t\t\t\t\thaveAssignmentThisLine = true;\n\t\t\t\t\t\t\tint prevWordIndex = getInStatementIndentAssign(line, i);\n\t\t\t\t\t\t\tint inStatementIndent = prevWordIndex + spaceIndentCount + tabIncrementIn;\n\t\t\t\t\t\t\tinStatementIndentStack->push_back(inStatementIndent);\n\t\t\t\t\t\t\tisInStatement = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// don't indent an assignment if 'let'\n\t\t\t\t\telse if (isInLet)\n\t\t\t\t\t{\n\t\t\t\t\t\tisInLet = false;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (i == 0 && spaceIndentCount == 0)\n\t\t\t\t\t\t\tspaceIndentCount += indentLength;\n\t\t\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, false);\n\t\t\t\t\t\tisInStatement = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\t// end of for loop * end of for loop * end of for loop * end of for loop * end of for loop *\n}\n\n\n}   // end namespace astyle\n"
  },
  {
    "path": "3rdpart/astyle/ASEnhancer.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASEnhancer.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#include \"astyle.h\"\n\n\nnamespace astyle {\n\n/**\n * ASEnhancer constructor\n */\nASEnhancer::ASEnhancer()\n{\n}\n\n/**\n * Destructor of ASEnhancer\n */\nASEnhancer::~ASEnhancer()\n{\n}\n\n/**\n * initialize the ASEnhancer.\n *\n * init() is called each time an ASFormatter object is initialized.\n */\nvoid ASEnhancer::init(int  _fileType,\n                      int  _indentLength,\n                      int  _tabLength,\n                      bool _useTabs,\n                      bool _forceTab,\n                      bool _namespaceIndent,\n                      bool _caseIndent,\n                      bool _preprocBlockIndent,\n                      bool _preprocDefineIndent,\n                      bool _emptyLineFill,\n                      vector<const pair<const string, const string>* >* _indentableMacros)\n{\n\t// formatting variables from ASFormatter and ASBeautifier\n\tASBase::init(_fileType);\n\tindentLength = _indentLength;\n\ttabLength = _tabLength;\n\tuseTabs = _useTabs;\n\tforceTab = _forceTab;\n\tnamespaceIndent = _namespaceIndent;\n\tcaseIndent = _caseIndent;\n\tpreprocBlockIndent = _preprocBlockIndent;\n\tpreprocDefineIndent = _preprocDefineIndent;\n\temptyLineFill = _emptyLineFill;\n\tindentableMacros = _indentableMacros;\n\tquoteChar = '\\'';\n\n\t// unindent variables\n\tlineNumber = 0;\n\tbracketCount = 0;\n\tisInComment = false;\n\tisInQuote = false;\n\tswitchDepth = 0;\n\teventPreprocDepth = 0;\n\tlookingForCaseBracket = false;\n\tunindentNextLine = false;\n\tshouldUnindentLine = false;\n\tshouldUnindentComment = false;\n\n\t// switch struct and vector\n\tsw.switchBracketCount = 0;\n\tsw.unindentDepth = 0;\n\tsw.unindentCase = false;\n\tswitchStack.clear();\n\n\t// other variables\n\tnextLineIsEventIndent = false;\n\tisInEventTable = false;\n\tnextLineIsDeclareIndent = false;\n\tisInDeclareSection = false;\n}\n\n/**\n * additional formatting for line of source code.\n * every line of source code in a source code file should be sent\n *     one after the other to this function.\n * indents event tables\n * unindents the case blocks\n *\n * @param line       the original formatted line will be updated if necessary.\n */\nvoid ASEnhancer::enhance(string &line, bool isInNamespace, bool isInPreprocessor, bool isInSQL)\n{\n\tshouldUnindentLine = true;\n\tshouldUnindentComment = false;\n\tlineNumber++;\n\n\t// check for beginning of event table\n\tif (nextLineIsEventIndent)\n\t{\n\t\tisInEventTable = true;\n\t\tnextLineIsEventIndent = false;\n\t}\n\n\t// check for beginning of SQL declare section\n\tif (nextLineIsDeclareIndent)\n\t{\n\t\tisInDeclareSection = true;\n\t\tnextLineIsDeclareIndent = false;\n\t}\n\n\tif (line.length() == 0\n\t        && !isInEventTable\n\t        && !isInDeclareSection\n\t        && !emptyLineFill)\n\t\treturn;\n\n\t// test for unindent on attached brackets\n\tif (unindentNextLine)\n\t{\n\t\tsw.unindentDepth++;\n\t\tsw.unindentCase = true;\n\t\tunindentNextLine = false;\n\t}\n\n\t// parse characters in the current line\n\tparseCurrentLine(line, isInPreprocessor, isInSQL);\n\n\t// check for SQL indentable lines\n\tif (isInDeclareSection)\n\t{\n\t\tsize_t firstText = line.find_first_not_of(\" \\t\");\n\t\tif (firstText == string::npos || line[firstText] != '#')\n\t\t\tindentLine(line, 1);\n\t}\n\n\t// check for event table indentable lines\n\tif (isInEventTable\n\t        && (eventPreprocDepth == 0\n\t            || (namespaceIndent && isInNamespace)))\n\t{\n\t\tsize_t firstText = line.find_first_not_of(\" \\t\");\n\t\tif (firstText == string::npos || line[firstText] != '#')\n\t\t\tindentLine(line, 1);\n\t}\n\n\tif (shouldUnindentComment && sw.unindentDepth > 0)\n\t\tunindentLine(line, sw.unindentDepth - 1);\n\telse if (shouldUnindentLine && sw.unindentDepth > 0)\n\t\tunindentLine(line, sw.unindentDepth);\n}\n\n/**\n * convert a force-tab indent to spaces\n *\n * @param line          a reference to the line that will be converted.\n */\nvoid ASEnhancer::convertForceTabIndentToSpaces(string &line) const\n{\n\t// replace tab indents with spaces\n\tfor (size_t i = 0; i < line.length(); i++)\n\t{\n\t\tif (!isWhiteSpace(line[i]))\n\t\t\tbreak;\n\t\tif (line[i] == '\\t')\n\t\t{\n\t\t\tline.erase(i, 1);\n\t\t\tline.insert(i, tabLength, ' ');\n\t\t\ti += tabLength - 1;\n\t\t}\n\t}\n}\n\n/**\n * convert a space indent to force-tab\n *\n * @param line          a reference to the line that will be converted.\n */\nvoid ASEnhancer::convertSpaceIndentToForceTab(string &line) const\n{\n\tassert(tabLength > 0);\n\n\t// replace leading spaces with tab indents\n\tsize_t newSpaceIndentLength = line.find_first_not_of(\" \\t\");\n\tsize_t tabCount = newSpaceIndentLength / tabLength;\t\t// truncate extra spaces\n\tline.erase(0U, tabCount * tabLength);\n\tline.insert(0U, tabCount, '\\t');\n}\n\n/**\n * find the colon following a 'case' statement\n *\n * @param line          a reference to the line.\n * @param caseIndex     the line index of the case statement.\n * @return              the line index of the colon.\n */\nsize_t ASEnhancer::findCaseColon(string &line, size_t caseIndex) const\n{\n\tsize_t i = caseIndex;\n\tbool isInQuote_ = false;\n\tchar quoteChar_ = ' ';\n\tfor (; i < line.length(); i++)\n\t{\n\t\tif (isInQuote_)\n\t\t{\n\t\t\tif (line[i] == '\\\\')\n\t\t\t{\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (line[i] == quoteChar_)          // check ending quote\n\t\t\t{\n\t\t\t\tisInQuote_ = false;\n\t\t\t\tquoteChar_ = ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcontinue;                           // must close quote before continuing\n\t\t\t}\n\t\t}\n\t\tif (line[i] == '\\'' || line[i] == '\\\"')\t\t// check opening quote\n\t\t{\n\t\t\tisInQuote_ = true;\n\t\t\tquoteChar_ = line[i];\n\t\t\tcontinue;\n\t\t}\n\t\tif (line[i] == ':')\n\t\t{\n\t\t\tif ((i + 1 < line.length()) && (line[i + 1] == ':'))\n\t\t\t\ti++;                                // bypass scope resolution operator\n\t\t\telse\n\t\t\t\tbreak;                              // found it\n\t\t}\n\t}\n\treturn i;\n}\n\n/**\n* indent a line by a given number of tabsets\n *    by inserting leading whitespace to the line argument.\n *\n * @param line          a reference to the line to indent.\n * @param indent        the number of tabsets to insert.\n * @return              the number of characters inserted.\n */\nint ASEnhancer::indentLine(string &line, int indent) const\n{\n\tif (line.length() == 0\n\t        && !emptyLineFill)\n\t\treturn 0;\n\n\tsize_t charsToInsert;\n\n\tif (forceTab && indentLength != tabLength)\n\t{\n\t\t// replace tab indents with spaces\n\t\tconvertForceTabIndentToSpaces(line);\n\t\t// insert the space indents\n\t\tcharsToInsert = indent * indentLength;\n\t\tline.insert(0U, charsToInsert, ' ');\n\t\t// replace leading spaces with tab indents\n\t\tconvertSpaceIndentToForceTab(line);\n\t}\n\telse if (useTabs)\n\t{\n\t\tcharsToInsert = indent;\n\t\tline.insert(0U, charsToInsert, '\\t');\n\t}\n\telse // spaces\n\t{\n\t\tcharsToInsert = indent * indentLength;\n\t\tline.insert(0U, charsToInsert, ' ');\n\t}\n\n\treturn charsToInsert;\n}\n\n/**\n * check for SQL \"BEGIN DECLARE SECTION\".\n * must compare case insensitive and allow any spacing between words.\n *\n * @param line          a reference to the line to indent.\n * @param index         the current line index.\n * @return              true if a hit.\n */\nbool ASEnhancer::isBeginDeclareSectionSQL(string &line, size_t index) const\n{\n\tstring word;\n\tsize_t hits = 0;\n\tsize_t i;\n\tfor (i = index; i < line.length(); i++)\n\t{\n\t\ti = line.find_first_not_of(\" \\t\", i);\n\t\tif (i == string::npos)\n\t\t\treturn false;\n\t\tif (line[i] == ';')\n\t\t\tbreak;\n\t\tif (!isCharPotentialHeader(line, i))\n\t\t\tcontinue;\n\t\tword = getCurrentWord(line, i);\n\t\tfor (size_t j = 0; j < word.length(); j++)\n\t\t\tword[j] = (char) toupper(word[j]);\n\t\tif (word == \"EXEC\" || word == \"SQL\")\n\t\t{\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word == \"DECLARE\" || word == \"SECTION\")\n\t\t{\n\t\t\thits++;\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word == \"BEGIN\")\n\t\t{\n\t\t\thits++;\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\treturn false;\n\t}\n\tif (hits == 3)\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * check for SQL \"END DECLARE SECTION\".\n * must compare case insensitive and allow any spacing between words.\n *\n * @param line          a reference to the line to indent.\n * @param index         the current line index.\n * @return              true if a hit.\n */\nbool ASEnhancer::isEndDeclareSectionSQL(string &line, size_t index) const\n{\n\tstring word;\n\tsize_t hits = 0;\n\tsize_t i;\n\tfor (i = index; i < line.length(); i++)\n\t{\n\t\ti = line.find_first_not_of(\" \\t\", i);\n\t\tif (i == string::npos)\n\t\t\treturn false;\n\t\tif (line[i] == ';')\n\t\t\tbreak;\n\t\tif (!isCharPotentialHeader(line, i))\n\t\t\tcontinue;\n\t\tword = getCurrentWord(line, i);\n\t\tfor (size_t j = 0; j < word.length(); j++)\n\t\t\tword[j] = (char) toupper(word[j]);\n\t\tif (word == \"EXEC\" || word == \"SQL\")\n\t\t{\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word == \"DECLARE\" || word == \"SECTION\")\n\t\t{\n\t\t\thits++;\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word == \"END\")\n\t\t{\n\t\t\thits++;\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\treturn false;\n\t}\n\tif (hits == 3)\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * check if a one-line bracket has been reached,\n * i.e. if the currently reached '{' character is closed\n * with a complimentary '}' elsewhere on the current line,\n *.\n * @return     false = one-line bracket has not been reached.\n *             true  = one-line bracket has been reached.\n */\nbool ASEnhancer::isOneLineBlockReached(string &line, int startChar) const\n{\n\tassert(line[startChar] == '{');\n\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tint _bracketCount = 1;\n\tint lineLength = line.length();\n\tchar quoteChar_ = ' ';\n\tchar ch = ' ';\n\n\tfor (int i = startChar + 1; i < lineLength; ++i)\n\t{\n\t\tch = line[i];\n\n\t\tif (isInComment_)\n\t\t{\n\t\t\tif (line.compare(i, 2, \"*/\") == 0)\n\t\t\t{\n\t\t\t\tisInComment_ = false;\n\t\t\t\t++i;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\\\\')\n\t\t{\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInQuote_)\n\t\t{\n\t\t\tif (ch == quoteChar_)\n\t\t\t\tisInQuote_ = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\"' || ch == '\\'')\n\t\t{\n\t\t\tisInQuote_ = true;\n\t\t\tquoteChar_ = ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (line.compare(i, 2, \"//\") == 0)\n\t\t\tbreak;\n\n\t\tif (line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\tisInComment_ = true;\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '{')\n\t\t\t++_bracketCount;\n\t\telse if (ch == '}')\n\t\t\t--_bracketCount;\n\n\t\tif (_bracketCount == 0)\n\t\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * parse characters in the current line to determine if an indent\n * or unindent is needed.\n */\nvoid ASEnhancer::parseCurrentLine(string &line, bool isInPreprocessor, bool isInSQL)\n{\n\tbool isSpecialChar = false;\t\t\t// is a backslash escape character\n\n\tfor (size_t i = 0; i < line.length(); i++)\n\t{\n\t\tchar ch = line[i];\n\n\t\t// bypass whitespace\n\t\tif (isWhiteSpace(ch))\n\t\t\tcontinue;\n\n\t\t// handle special characters (i.e. backslash+character such as \\n, \\t, ...)\n\t\tif (isSpecialChar)\n\t\t{\n\t\t\tisSpecialChar = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!(isInComment) && line.compare(i, 2, \"\\\\\\\\\") == 0)\n\t\t{\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!(isInComment) && ch == '\\\\')\n\t\t{\n\t\t\tisSpecialChar = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle quotes (such as 'x' and \"Hello Dolly\")\n\t\tif (!isInComment && (ch == '\"' || ch == '\\''))\n\t\t{\n\t\t\tif (!isInQuote)\n\t\t\t{\n\t\t\t\tquoteChar = ch;\n\t\t\t\tisInQuote = true;\n\t\t\t}\n\t\t\telse if (quoteChar == ch)\n\t\t\t{\n\t\t\t\tisInQuote = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (isInQuote)\n\t\t\tcontinue;\n\n\t\t// handle comments\n\n\t\tif (!(isInComment) && line.compare(i, 2, \"//\") == 0)\n\t\t{\n\t\t\t// check for windows line markers\n\t\t\tif (line.compare(i + 2, 1, \"\\xf0\") > 0)\n\t\t\t\tlineNumber--;\n\t\t\t// unindent if not in case brackets\n\t\t\tif (line.find_first_not_of(\" \\t\") == i\n\t\t\t        && sw.switchBracketCount == 1\n\t\t\t        && sw.unindentCase)\n\t\t\t\tshouldUnindentComment = true;\n\t\t\tbreak;                 // finished with the line\n\t\t}\n\t\telse if (!(isInComment) && line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\t// unindent if not in case brackets\n\t\t\tif (sw.switchBracketCount == 1 && sw.unindentCase)\n\t\t\t\tshouldUnindentComment = true;\n\t\t\tisInComment = true;\n\t\t\tsize_t commentEnd = line.find(\"*/\", i);\n\t\t\tif (commentEnd == string::npos)\n\t\t\t\ti = line.length() - 1;\n\t\t\telse\n\t\t\t\ti = commentEnd - 1;\n\t\t\tcontinue;\n\t\t}\n\t\telse if ((isInComment) && line.compare(i, 2, \"*/\") == 0)\n\t\t{\n\t\t\t// unindent if not in case brackets\n\t\t\tif (sw.switchBracketCount == 1 && sw.unindentCase)\n\t\t\t\tshouldUnindentComment = true;\n\t\t\tisInComment = false;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInComment)\n\t\t{\n\t\t\t// unindent if not in case brackets\n\t\t\tif (sw.switchBracketCount == 1 && sw.unindentCase)\n\t\t\t\tshouldUnindentComment = true;\n\t\t\tsize_t commentEnd = line.find(\"*/\", i);\n\t\t\tif (commentEnd == string::npos)\n\t\t\t\ti = line.length() - 1;\n\t\t\telse\n\t\t\t\ti = commentEnd - 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if we have reached this far then we are NOT in a comment or string of special characters\n\n\t\tif (line[i] == '{')\n\t\t\tbracketCount++;\n\n\t\tif (line[i] == '}')\n\t\t\tbracketCount--;\n\n\t\t// check for preprocessor within an event table\n\t\tif (isInEventTable && line[i] == '#' && preprocBlockIndent)\n\t\t{\n\t\t\tstring preproc;\n\t\t\tpreproc = line.substr(i + 1);\n\t\t\tif (preproc.substr(0, 2) == \"if\") // #if, #ifdef, #ifndef)\n\t\t\t\teventPreprocDepth += 1;\n\t\t\tif (preproc.substr(0, 5) == \"endif\" && eventPreprocDepth > 0)\n\t\t\t\teventPreprocDepth -= 1;\n\t\t}\n\n\t\tbool isPotentialKeyword = isCharPotentialHeader(line, i);\n\n\t\t// ----------------  wxWidgets and MFC macros  ----------------------------------\n\n\t\tif (isPotentialKeyword)\n\t\t{\n\t\t\tfor (size_t j = 0; j < indentableMacros->size(); j++)\n\t\t\t{\n\t\t\t\t// 'first' is the beginning macro\n\t\t\t\tif (findKeyword(line, i, indentableMacros->at(j)->first))\n\t\t\t\t{\n\t\t\t\t\tnextLineIsEventIndent = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (size_t j = 0; j < indentableMacros->size(); j++)\n\t\t\t{\n\t\t\t\t// 'second' is the ending macro\n\t\t\t\tif (findKeyword(line, i, indentableMacros->at(j)->second))\n\t\t\t\t{\n\t\t\t\t\tisInEventTable = false;\n\t\t\t\t\teventPreprocDepth = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// ----------------  process SQL  -----------------------------------------------\n\n\t\tif (isInSQL)\n\t\t{\n\t\t\tif (isBeginDeclareSectionSQL(line, i))\n\t\t\t\tnextLineIsDeclareIndent = true;\n\t\t\tif (isEndDeclareSectionSQL(line, i))\n\t\t\t\tisInDeclareSection = false;\n\t\t\tbreak;\n\t\t}\n\n\t\t// ----------------  process switch statements  ---------------------------------\n\n\t\tif (isPotentialKeyword && findKeyword(line, i, \"switch\"))\n\t\t{\n\t\t\tswitchDepth++;\n\t\t\tswitchStack.push_back(sw);                      // save current variables\n\t\t\tsw.switchBracketCount = 0;\n\t\t\tsw.unindentCase = false;                        // don't clear case until end of switch\n\t\t\ti += 5;                                         // bypass switch statement\n\t\t\tcontinue;\n\t\t}\n\n\t\t// just want unindented case statements from this point\n\n\t\tif (caseIndent\n\t\t        || switchDepth == 0\n\t\t        || (isInPreprocessor && !preprocDefineIndent))\n\t\t{\n\t\t\t// bypass the entire word\n\t\t\tif (isPotentialKeyword)\n\t\t\t{\n\t\t\t\tstring name = getCurrentWord(line, i);\n\t\t\t\ti += name.length() - 1;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\ti = processSwitchBlock(line, i);\n\n\t}   // end of for loop * end of for loop * end of for loop * end of for loop\n}\n\n/**\n * process the character at the current index in a switch block.\n *\n * @param line          a reference to the line to indent.\n * @param index         the current line index.\n * @return              the new line index.\n */\nsize_t ASEnhancer::processSwitchBlock(string &line, size_t index)\n{\n\tsize_t i = index;\n\tbool isPotentialKeyword = isCharPotentialHeader(line, i);\n\n\tif (line[i] == '{')\n\t{\n\t\tsw.switchBracketCount++;\n\t\tif (lookingForCaseBracket)                      // if 1st after case statement\n\t\t{\n\t\t\tsw.unindentCase = true;                     // unindenting this case\n\t\t\tsw.unindentDepth++;\n\t\t\tlookingForCaseBracket = false;              // not looking now\n\t\t}\n\t\treturn i;\n\t}\n\tlookingForCaseBracket = false;                      // no opening bracket, don't indent\n\n\tif (line[i] == '}')\n\t{\n\t\tsw.switchBracketCount--;\n\t\tassert(sw.switchBracketCount <= bracketCount);\n\t\tif (sw.switchBracketCount == 0)                 // if end of switch statement\n\t\t{\n\t\t\tint lineUnindent = sw.unindentDepth;\n\t\t\tif (line.find_first_not_of(\" \\t\") == i\n\t\t\t        && !switchStack.empty())\n\t\t\t\tlineUnindent = switchStack[switchStack.size() - 1].unindentDepth;\n\t\t\tif (shouldUnindentLine)\n\t\t\t{\n\t\t\t\tif (lineUnindent > 0)\n\t\t\t\t\ti -= unindentLine(line, lineUnindent);\n\t\t\t\tshouldUnindentLine = false;\n\t\t\t}\n\t\t\tswitchDepth--;\n\t\t\tsw = switchStack.back();\n\t\t\tswitchStack.pop_back();\n\t\t}\n\t\treturn i;\n\t}\n\n\tif (isPotentialKeyword\n\t        && (findKeyword(line, i, \"case\") || findKeyword(line, i, \"default\")))\n\t{\n\t\tif (sw.unindentCase)\t\t\t\t\t// if unindented last case\n\t\t{\n\t\t\tsw.unindentCase = false;\t\t\t// stop unindenting previous case\n\t\t\tsw.unindentDepth--;\n\t\t}\n\n\t\ti = findCaseColon(line, i);\n\n\t\ti++;\n\t\tfor (; i < line.length(); i++)\t\t\t// bypass whitespace\n\t\t{\n\t\t\tif (!isWhiteSpace(line[i]))\n\t\t\t\tbreak;\n\t\t}\n\t\tif (i < line.length())\n\t\t{\n\t\t\tif (line[i] == '{')\n\t\t\t{\n\t\t\t\tbracketCount++;\n\t\t\t\tsw.switchBracketCount++;\n\t\t\t\tif (!isOneLineBlockReached(line, i))\n\t\t\t\t\tunindentNextLine = true;\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlookingForCaseBracket = true;\n\t\ti--;\t\t\t\t\t\t\t\t\t// need to process this char\n\t\treturn i;\n\t}\n\tif (isPotentialKeyword)\n\t{\n\t\tstring name = getCurrentWord(line, i);          // bypass the entire name\n\t\ti += name.length() - 1;\n\t}\n\treturn i;\n}\n\n/**\n * unindent a line by a given number of tabsets\n *    by erasing the leading whitespace from the line argument.\n *\n * @param line          a reference to the line to unindent.\n * @param unindent      the number of tabsets to erase.\n * @return              the number of characters erased.\n */\nint ASEnhancer::unindentLine(string &line, int unindent) const\n{\n\tsize_t whitespace = line.find_first_not_of(\" \\t\");\n\n\tif (whitespace == string::npos)         // if line is blank\n\t\twhitespace = line.length();         // must remove padding, if any\n\n\tif (whitespace == 0)\n\t\treturn 0;\n\n\tsize_t charsToErase = 0;\n\n\tif (forceTab && indentLength != tabLength)\n\t{\n\t\t// replace tab indents with spaces\n\t\tconvertForceTabIndentToSpaces(line);\n\t\t// remove the space indents\n\t\tsize_t spaceIndentLength = line.find_first_not_of(\" \\t\");\n\t\tcharsToErase = unindent * indentLength;\n\t\tif (charsToErase <= spaceIndentLength)\n\t\t\tline.erase(0, charsToErase);\n\t\telse\n\t\t\tcharsToErase = 0;\n\t\t// replace leading spaces with tab indents\n\t\tconvertSpaceIndentToForceTab(line);\n\t}\n\telse if (useTabs)\n\t{\n\t\tcharsToErase = unindent;\n\t\tif (charsToErase <= whitespace)\n\t\t\tline.erase(0, charsToErase);\n\t\telse\n\t\t\tcharsToErase = 0;\n\t}\n\telse // spaces\n\t{\n\t\tcharsToErase = unindent * indentLength;\n\t\tif (charsToErase <= whitespace)\n\t\t\tline.erase(0, charsToErase);\n\t\telse\n\t\t\tcharsToErase = 0;\n\t}\n\n\treturn charsToErase;\n}\n\n\n}   // end namespace astyle\n"
  },
  {
    "path": "3rdpart/astyle/ASFormatter.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASFormatter.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#include \"astyle.h\"\n\n#include <algorithm>\n#include <fstream>\n\n\nnamespace astyle {\n/**\n * Constructor of ASFormatter\n */\nASFormatter::ASFormatter()\n{\n\tsourceIterator = NULL;\n\tenhancer = new ASEnhancer;\n\tpreBracketHeaderStack = NULL;\n\tbracketTypeStack = NULL;\n\tparenStack = NULL;\n\tstructStack = NULL;\n\tquestionMarkStack = NULL;\n\tlineCommentNoIndent = false;\n\tformattingStyle = STYLE_NONE;\n\tbracketFormatMode = NONE_MODE;\n\tpointerAlignment = PTR_ALIGN_NONE;\n\treferenceAlignment = REF_SAME_AS_PTR;\n\tobjCColonPadMode = COLON_PAD_NO_CHANGE;\n\tlineEnd = LINEEND_DEFAULT;\n\tmaxCodeLength = string::npos;\n\tshouldPadOperators = false;\n\tshouldPadParensOutside = false;\n\tshouldPadFirstParen = false;\n\tshouldPadParensInside = false;\n\tshouldPadHeader = false;\n\tshouldStripCommentPrefix = false;\n\tshouldUnPadParens = false;\n\tattachClosingBracketMode = false;\n\tshouldBreakOneLineBlocks = true;\n\tshouldBreakOneLineStatements = true;\n\tshouldConvertTabs = false;\n\tshouldIndentCol1Comments = false;\n\tshouldIndentPreprocBlock = false;\n\tshouldCloseTemplates = false;\n\tshouldAttachExternC = false;\n\tshouldAttachNamespace = false;\n\tshouldAttachClass = false;\n\tshouldAttachInline = false;\n\tshouldBreakBlocks = false;\n\tshouldBreakClosingHeaderBlocks = false;\n\tshouldBreakClosingHeaderBrackets = false;\n\tshouldDeleteEmptyLines = false;\n\tshouldBreakElseIfs = false;\n\tshouldBreakLineAfterLogical = false;\n\tshouldAddBrackets = false;\n\tshouldAddOneLineBrackets = false;\n\tshouldRemoveBrackets = false;\n\tshouldPadMethodColon = false;\n\tshouldPadMethodPrefix = false;\n\tshouldUnPadMethodPrefix = false;\n\n\t// initialize ASFormatter member vectors\n\tformatterFileType = 9;\t\t// reset to an invalid type\n\theaders = new vector<const string*>;\n\tnonParenHeaders = new vector<const string*>;\n\tpreDefinitionHeaders = new vector<const string*>;\n\tpreCommandHeaders = new vector<const string*>;\n\toperators = new vector<const string*>;\n\tassignmentOperators = new vector<const string*>;\n\tcastOperators = new vector<const string*>;\n\n\t// initialize ASEnhancer member vectors\n\tindentableMacros = new vector<const pair<const string, const string>* >;\n}\n\n/**\n * Destructor of ASFormatter\n */\nASFormatter::~ASFormatter()\n{\n\t// delete ASFormatter stack vectors\n\tdeleteContainer(preBracketHeaderStack);\n\tdeleteContainer(bracketTypeStack);\n\tdeleteContainer(parenStack);\n\tdeleteContainer(structStack);\n\tdeleteContainer(questionMarkStack);\n\n\t// delete ASFormatter member vectors\n\tformatterFileType = 9;\t\t// reset to an invalid type\n\tdelete headers;\n\tdelete nonParenHeaders;\n\tdelete preDefinitionHeaders;\n\tdelete preCommandHeaders;\n\tdelete operators;\n\tdelete assignmentOperators;\n\tdelete castOperators;\n\n\t// delete ASEnhancer member vectors\n\tdelete indentableMacros;\n\n\t// delete ASBeautifier member vectors\n\t// must be done when the ASFormatter object is deleted (not ASBeautifier)\n\tASBeautifier::deleteBeautifierVectors();\n\n\tdelete enhancer;\n}\n\n/**\n * initialize the ASFormatter.\n *\n * init() should be called every time a ASFormatter object is to start\n * formatting a NEW source file.\n * init() receives a pointer to a ASSourceIterator object that will be\n * used to iterate through the source code.\n *\n * @param si        a pointer to the ASSourceIterator or ASStreamIterator object.\n */\nvoid ASFormatter::init(ASSourceIterator* si)\n{\n\tbuildLanguageVectors();\n\tfixOptionVariableConflicts();\n\tASBeautifier::init(si);\n\tsourceIterator = si;\n\n\tenhancer->init(getFileType(),\n\t               getIndentLength(),\n\t               getTabLength(),\n\t               getIndentString() == \"\\t\" ? true : false,\n\t               getForceTabIndentation(),\n\t               getNamespaceIndent(),\n\t               getCaseIndent(),\n\t               shouldIndentPreprocBlock,\n\t               getPreprocDefineIndent(),\n\t               getEmptyLineFill(),\n\t               indentableMacros);\n\n\tinitContainer(preBracketHeaderStack, new vector<const string*>);\n\tinitContainer(parenStack, new vector<int>);\n\tinitContainer(structStack, new vector<bool>);\n\tinitContainer(questionMarkStack, new vector<bool>);\n\tparenStack->push_back(0);               // parenStack must contain this default entry\n\tinitContainer(bracketTypeStack, new vector<BracketType>);\n\tbracketTypeStack->push_back(NULL_TYPE); // bracketTypeStack must contain this default entry\n\tclearFormattedLineSplitPoints();\n\n\tcurrentHeader = NULL;\n\tcurrentLine = \"\";\n\treadyFormattedLine = \"\";\n\tformattedLine = \"\";\n\tverbatimDelimiter = \"\";\n\tcurrentChar = ' ';\n\tpreviousChar = ' ';\n\tpreviousCommandChar = ' ';\n\tpreviousNonWSChar = ' ';\n\tquoteChar = '\"';\n\tpreprocBlockEnd = 0;\n\tcharNum = 0;\n\tchecksumIn = 0;\n\tchecksumOut = 0;\n\tcurrentLineFirstBracketNum = string::npos;\n\tformattedLineCommentNum = 0;\n\tleadingSpaces = 0;\n\tpreviousReadyFormattedLineLength = string::npos;\n\tpreprocBracketTypeStackSize = 0;\n\tspacePadNum = 0;\n\tnextLineSpacePadNum = 0;\n\ttemplateDepth = 0;\n\tsquareBracketCount = 0;\n\thorstmannIndentChars = 0;\n\ttabIncrementIn = 0;\n\tpreviousBracketType = NULL_TYPE;\n\tpreviousOperator = NULL;\n\n\tisVirgin = true;\n\tisInLineComment = false;\n\tisInComment = false;\n\tisInCommentStartLine = false;\n\tnoTrimCommentContinuation = false;\n\tisInPreprocessor = false;\n\tisInPreprocessorBeautify = false;\n\tdoesLineStartComment = false;\n\tlineEndsInCommentOnly = false;\n\tlineIsCommentOnly = false;\n\tlineIsLineCommentOnly = false;\n\tlineIsEmpty = false;\n\tisImmediatelyPostCommentOnly = false;\n\tisImmediatelyPostEmptyLine = false;\n\tisInClassInitializer = false;\n\tisInQuote = false;\n\tisInVerbatimQuote = false;\n\thaveLineContinuationChar = false;\n\tisInQuoteContinuation = false;\n\tisHeaderInMultiStatementLine = false;\n\tisSpecialChar = false;\n\tisNonParenHeader = false;\n\tfoundNamespaceHeader = false;\n\tfoundClassHeader = false;\n\tfoundStructHeader = false;\n\tfoundInterfaceHeader = false;\n\tfoundPreDefinitionHeader = false;\n\tfoundPreCommandHeader = false;\n\tfoundPreCommandMacro = false;\n\tfoundCastOperator = false;\n\tfoundQuestionMark = false;\n\tisInLineBreak = false;\n\tendOfAsmReached = false;\n\tendOfCodeReached = false;\n\tisFormattingModeOff = false;\n\tisInEnum = false;\n\tisInExecSQL = false;\n\tisInAsm = false;\n\tisInAsmOneLine = false;\n\tisInAsmBlock = false;\n\tisLineReady = false;\n\telseHeaderFollowsComments = false;\n\tcaseHeaderFollowsComments = false;\n\tisPreviousBracketBlockRelated = false;\n\tisInPotentialCalculation = false;\n\tshouldReparseCurrentChar = false;\n\tneedHeaderOpeningBracket = false;\n\tshouldBreakLineAtNextChar = false;\n\tshouldKeepLineUnbroken = false;\n\tpassedSemicolon = false;\n\tpassedColon = false;\n\tisImmediatelyPostNonInStmt = false;\n\tisCharImmediatelyPostNonInStmt = false;\n\tisInTemplate = false;\n\tisImmediatelyPostComment = false;\n\tisImmediatelyPostLineComment = false;\n\tisImmediatelyPostEmptyBlock = false;\n\tisImmediatelyPostPreprocessor = false;\n\tisImmediatelyPostReturn = false;\n\tisImmediatelyPostThrow = false;\n\tisImmediatelyPostOperator = false;\n\tisImmediatelyPostTemplate = false;\n\tisImmediatelyPostPointerOrReference = false;\n\tisCharImmediatelyPostReturn = false;\n\tisCharImmediatelyPostThrow = false;\n\tisCharImmediatelyPostOperator = false;\n\tisCharImmediatelyPostComment = false;\n\tisPreviousCharPostComment = false;\n\tisCharImmediatelyPostLineComment = false;\n\tisCharImmediatelyPostOpenBlock = false;\n\tisCharImmediatelyPostCloseBlock = false;\n\tisCharImmediatelyPostTemplate = false;\n\tisCharImmediatelyPostPointerOrReference = false;\n\tisInObjCMethodDefinition = false;\n\tisInObjCInterface = false;\n\tisInObjCSelector = false;\n\tbreakCurrentOneLineBlock = false;\n\tshouldRemoveNextClosingBracket = false;\n\tisInHorstmannRunIn = false;\n\tcurrentLineBeginsWithBracket = false;\n\tisPrependPostBlockEmptyLineRequested = false;\n\tisAppendPostBlockEmptyLineRequested = false;\n\tisIndentableProprocessor = false;\n\tisIndentableProprocessorBlock = false;\n\tprependEmptyLine = false;\n\tappendOpeningBracket = false;\n\tfoundClosingHeader = false;\n\tisImmediatelyPostHeader = false;\n\tisInHeader = false;\n\tisInCase = false;\n\tisFirstPreprocConditional = false;\n\tprocessedFirstConditional = false;\n\tisJavaStaticConstructor = false;\n}\n\n/**\n * build vectors for each programing language\n * depending on the file extension.\n */\nvoid ASFormatter::buildLanguageVectors()\n{\n\tif (getFileType() == formatterFileType)  // don't build unless necessary\n\t\treturn;\n\n\tformatterFileType = getFileType();\n\n\theaders->clear();\n\tnonParenHeaders->clear();\n\tpreDefinitionHeaders->clear();\n\tpreCommandHeaders->clear();\n\toperators->clear();\n\tassignmentOperators->clear();\n\tcastOperators->clear();\n\tindentableMacros->clear();\t// ASEnhancer\n\n\tASResource::buildHeaders(headers, getFileType());\n\tASResource::buildNonParenHeaders(nonParenHeaders, getFileType());\n\tASResource::buildPreDefinitionHeaders(preDefinitionHeaders, getFileType());\n\tASResource::buildPreCommandHeaders(preCommandHeaders, getFileType());\n\tASResource::buildOperators(operators, getFileType());\n\tASResource::buildAssignmentOperators(assignmentOperators);\n\tASResource::buildCastOperators(castOperators);\n\tASResource::buildIndentableMacros(indentableMacros);\t//ASEnhancer\n}\n\n/**\n * set the variables for each predefined style.\n * this will override any previous settings.\n */\nvoid ASFormatter::fixOptionVariableConflicts()\n{\n\tif (formattingStyle == STYLE_ALLMAN)\n\t{\n\t\tsetBracketFormatMode(BREAK_MODE);\n\t}\n\telse if (formattingStyle == STYLE_JAVA)\n\t{\n\t\tsetBracketFormatMode(ATTACH_MODE);\n\t}\n\telse if (formattingStyle == STYLE_KR)\n\t{\n\t\tsetBracketFormatMode(LINUX_MODE);\n\t}\n\telse if (formattingStyle == STYLE_STROUSTRUP)\n\t{\n\t\tsetBracketFormatMode(STROUSTRUP_MODE);\n\t}\n\telse if (formattingStyle == STYLE_WHITESMITH)\n\t{\n\t\tsetBracketFormatMode(BREAK_MODE);\n\t\tsetBracketIndent(true);\n\t\tsetClassIndent(true);\t\t\t// avoid hanging indent with access modifiers\n\t\tsetSwitchIndent(true);\t\t\t// avoid hanging indent with case statements\n\t}\n\telse if (formattingStyle == STYLE_VTK)\n\t{\n\t\t// the unindented class bracket does NOT cause a hanging indent like Whitesmith\n\t\tsetBracketFormatMode(BREAK_MODE);\n\t\tsetBracketIndentVtk(true);\t\t// sets both bracketIndent and bracketIndentVtk\n\t\tsetSwitchIndent(true);\t\t\t// avoid hanging indent with case statements\n\t}\n\telse if (formattingStyle == STYLE_BANNER)\n\t{\n\t\t// attached brackets can have hanging indents with the closing bracket\n\t\tsetBracketFormatMode(ATTACH_MODE);\n\t\tsetBracketIndent(true);\n\t\tsetClassIndent(true);\t\t\t// avoid hanging indent with access modifiers\n\t\tsetSwitchIndent(true);\t\t\t// avoid hanging indent with case statements\n\t}\n\telse if (formattingStyle == STYLE_GNU)\n\t{\n\t\tsetBracketFormatMode(BREAK_MODE);\n\t\tsetBlockIndent(true);\n\t}\n\telse if (formattingStyle == STYLE_LINUX)\n\t{\n\t\tsetBracketFormatMode(LINUX_MODE);\n\t\t// always for Linux style\n\t\tsetMinConditionalIndentOption(MINCOND_ONEHALF);\n\t}\n\telse if (formattingStyle == STYLE_HORSTMANN)\n\t{\n\t\tsetBracketFormatMode(RUN_IN_MODE);\n\t\tsetSwitchIndent(true);\n\t}\n\telse if (formattingStyle == STYLE_1TBS)\n\t{\n\t\tsetBracketFormatMode(LINUX_MODE);\n\t\tsetAddBracketsMode(true);\n\t\tsetRemoveBracketsMode(false);\n\t}\n\telse if (formattingStyle == STYLE_GOOGLE)\n\t{\n\t\tsetBracketFormatMode(ATTACH_MODE);\n\t\tsetModifierIndent(true);\n\t\tsetClassIndent(false);\n\t}\n\telse if (formattingStyle == STYLE_PICO)\n\t{\n\t\tsetBracketFormatMode(RUN_IN_MODE);\n\t\tsetAttachClosingBracketMode(true);\n\t\tsetSwitchIndent(true);\n\t\tsetBreakOneLineBlocksMode(false);\n\t\tsetSingleStatementsMode(false);\n\t\t// add-brackets won't work for pico, but it could be fixed if necessary\n\t\t// both options should be set to true\n\t\tif (shouldAddBrackets)\n\t\t\tshouldAddOneLineBrackets = true;\n\t}\n\telse if (formattingStyle == STYLE_LISP)\n\t{\n\t\tsetBracketFormatMode(ATTACH_MODE);\n\t\tsetAttachClosingBracketMode(true);\n\t\tsetSingleStatementsMode(false);\n\t\t// add-one-line-brackets won't work for lisp\n\t\t// only shouldAddBrackets should be set to true\n\t\tif (shouldAddOneLineBrackets)\n\t\t{\n\t\t\tshouldAddBrackets = true;\n\t\t\tshouldAddOneLineBrackets = false;\n\t\t}\n\t}\n\tsetMinConditionalIndentLength();\n\t// if not set by indent=force-tab-x set equal to indentLength\n\tif (!getTabLength())\n\t\tsetDefaultTabLength();\n\t// add-one-line-brackets implies keep-one-line-blocks\n\tif (shouldAddOneLineBrackets)\n\t\tsetBreakOneLineBlocksMode(false);\n\t// don't allow add-brackets and remove-brackets\n\tif (shouldAddBrackets || shouldAddOneLineBrackets)\n\t\tsetRemoveBracketsMode(false);\n\t// don't allow indent-classes and indent-modifiers\n\tif (getClassIndent())\n\t\tsetModifierIndent(false);\n}\n\n/**\n * get the next formatted line.\n *\n * @return    formatted line.\n */\nstring ASFormatter::nextLine()\n{\n\tconst string* newHeader;\n\tbool isInVirginLine = isVirgin;\n\tisCharImmediatelyPostComment = false;\n\tisPreviousCharPostComment = false;\n\tisCharImmediatelyPostLineComment = false;\n\tisCharImmediatelyPostOpenBlock = false;\n\tisCharImmediatelyPostCloseBlock = false;\n\tisCharImmediatelyPostTemplate = false;\n\n\twhile (!isLineReady)\n\t{\n\t\tif (shouldReparseCurrentChar)\n\t\t\tshouldReparseCurrentChar = false;\n\t\telse if (!getNextChar())\n\t\t{\n\t\t\tbreakLine();\n\t\t\tcontinue;\n\t\t}\n\t\telse // stuff to do when reading a new character...\n\t\t{\n\t\t\t// make sure that a virgin '{' at the beginning of the file will be treated as a block...\n\t\t\tif (isInVirginLine && currentChar == '{'\n\t\t\t        && currentLineBeginsWithBracket\n\t\t\t        && previousCommandChar == ' ')\n\t\t\t\tpreviousCommandChar = '{';\n\t\t\tif (isInClassInitializer\n\t\t\t        && isBracketType(bracketTypeStack->back(), COMMAND_TYPE))\n\t\t\t\tisInClassInitializer = false;\n\t\t\tif (isInHorstmannRunIn)\n\t\t\t\tisInLineBreak = false;\n\t\t\tif (!isWhiteSpace(currentChar))\n\t\t\t\tisInHorstmannRunIn = false;\n\t\t\tisPreviousCharPostComment = isCharImmediatelyPostComment;\n\t\t\tisCharImmediatelyPostComment = false;\n\t\t\tisCharImmediatelyPostTemplate = false;\n\t\t\tisCharImmediatelyPostReturn = false;\n\t\t\tisCharImmediatelyPostThrow = false;\n\t\t\tisCharImmediatelyPostOperator = false;\n\t\t\tisCharImmediatelyPostPointerOrReference = false;\n\t\t\tisCharImmediatelyPostOpenBlock = false;\n\t\t\tisCharImmediatelyPostCloseBlock = false;\n\t\t}\n\n\t\tif ((lineIsLineCommentOnly || lineIsCommentOnly)\n\t\t        && currentLine.find(\"*INDENT-ON*\", charNum) != string::npos\n\t\t        && isFormattingModeOff)\n\t\t{\n\t\t\tisFormattingModeOff = false;\n\t\t\tbreakLine();\n\t\t\tformattedLine = currentLine;\n\t\t\tcharNum = (int) currentLine.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (isFormattingModeOff)\n\t\t{\n\t\t\tbreakLine();\n\t\t\tformattedLine = currentLine;\n\t\t\tcharNum = (int) currentLine.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif ((lineIsLineCommentOnly || lineIsCommentOnly)\n\t\t        && currentLine.find(\"*INDENT-OFF*\", charNum) != string::npos)\n\t\t{\n\t\t\tisFormattingModeOff = true;\n\t\t\tif (isInLineBreak)\t\t\t// is true if not the first line\n\t\t\t\tbreakLine();\n\t\t\tformattedLine = currentLine;\n\t\t\tcharNum = (int)currentLine.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (shouldBreakLineAtNextChar)\n\t\t{\n\t\t\tif (isWhiteSpace(currentChar) && !lineIsEmpty)\n\t\t\t\tcontinue;\n\t\t\tisInLineBreak = true;\n\t\t\tshouldBreakLineAtNextChar = false;\n\t\t}\n\n\t\tif (isInExecSQL && !passedSemicolon)\n\t\t{\n\t\t\tif (currentChar == ';')\n\t\t\t\tpassedSemicolon = true;\n\t\t\tappendCurrentChar();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInLineComment)\n\t\t{\n\t\t\tformatLineCommentBody();\n\t\t\tcontinue;\n\t\t}\n\t\telse if (isInComment)\n\t\t{\n\t\t\tformatCommentBody();\n\t\t\tcontinue;\n\t\t}\n\n\t\telse if (isInQuote)\n\t\t{\n\t\t\tformatQuoteBody();\n\t\t\tcontinue;\n\t\t}\n\n\t\t// not in quote or comment or line comment\n\n\t\tif (isSequenceReached(\"//\"))\n\t\t{\n\t\t\tformatLineCommentOpener();\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t\tcontinue;\n\t\t}\n\t\telse if (isSequenceReached(\"/*\"))\n\t\t{\n\t\t\tformatCommentOpener();\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t\tcontinue;\n\t\t}\n\t\telse if (currentChar == '\"' || currentChar == '\\'')\n\t\t{\n\t\t\tformatQuoteOpener();\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t\tcontinue;\n\t\t}\n\t\t// treat these preprocessor statements as a line comment\n\t\telse if (currentChar == '#'\n\t\t         && currentLine.find_first_not_of(\" \\t\") == (size_t) charNum)\n\t\t{\n\t\t\tstring preproc = trim(currentLine.c_str() + charNum + 1);\n\t\t\tif (preproc.length() > 0\n\t\t\t        && isCharPotentialHeader(preproc, 0)\n\t\t\t        && (findKeyword(preproc, 0, \"region\")\n\t\t\t            || findKeyword(preproc, 0, \"endregion\")\n\t\t\t            || findKeyword(preproc, 0, \"error\")\n\t\t\t            || findKeyword(preproc, 0, \"warning\")\n\t\t\t            || findKeyword(preproc, 0, \"line\")))\n\t\t\t{\n\t\t\t\tcurrentLine = rtrim(currentLine);\t// trim the end only\n\t\t\t\t// check for horstmann run-in\n\t\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t\t{\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t\tisInHorstmannRunIn = false;\n\t\t\t\t}\n\t\t\t\tif (previousCommandChar == '}')\n\t\t\t\t\tcurrentHeader = NULL;\n\t\t\t\tisInLineComment = true;\n\t\t\t\tappendCurrentChar();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (isInPreprocessor)\n\t\t{\n\t\t\tappendCurrentChar();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInTemplate && shouldCloseTemplates)\n\t\t{\n\t\t\tif (previousCommandChar == '<' && isWhiteSpace(currentChar))\n\t\t\t\tcontinue;\n\t\t\tif (isWhiteSpace(currentChar) && peekNextChar() == '>')\n\t\t\t\tcontinue;\n\t\t}\n\n\t\tif (shouldRemoveNextClosingBracket && currentChar == '}')\n\t\t{\n\t\t\tcurrentLine[charNum] = currentChar = ' ';\n\t\t\tshouldRemoveNextClosingBracket = false;\n\t\t\tassert(adjustChecksumIn(-'}'));\n\t\t\t// if the line is empty, delete it\n\t\t\tif (currentLine.find_first_not_of(\" \\t\"))\n\t\t\t\tcontinue;\n\t\t}\n\n\t\t// handle white space - needed to simplify the rest.\n\t\tif (isWhiteSpace(currentChar))\n\t\t{\n\t\t\tappendCurrentChar();\n\t\t\tcontinue;\n\t\t}\n\n\t\t/* not in MIDDLE of quote or comment or SQL or white-space of any type ... */\n\n\t\t// check if in preprocessor\n\t\t// ** isInPreprocessor will be automatically reset at the beginning\n\t\t//    of a new line in getnextChar()\n\t\tif (currentChar == '#')\n\t\t{\n\t\t\tisInPreprocessor = true;\n\t\t\t// check for horstmann run-in\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t{\n\t\t\t\tisInLineBreak = true;\n\t\t\t\tisInHorstmannRunIn = false;\n\t\t\t}\n\t\t\tprocessPreprocessor();\n\t\t\t// if top level it is potentially indentable\n\t\t\tif (shouldIndentPreprocBlock\n\t\t\t        && (isBracketType(bracketTypeStack->back(), NULL_TYPE)\n\t\t\t            || isBracketType(bracketTypeStack->back(), NAMESPACE_TYPE))\n\t\t\t        && !foundClassHeader\n\t\t\t        && !isInClassInitializer\n\t\t\t        && sourceIterator->tellg() > preprocBlockEnd)\n\t\t\t{\n\t\t\t\t// indent the #if preprocessor blocks\n\t\t\t\tstring preproc = ASBeautifier::extractPreprocessorStatement(currentLine);\n\t\t\t\tif (preproc.length() >= 2 && preproc.substr(0, 2) == \"if\") // #if, #ifdef, #ifndef\n\t\t\t\t{\n\t\t\t\t\tif (isImmediatelyPostPreprocessor)\n\t\t\t\t\t\tbreakLine();\n\t\t\t\t\tisIndentableProprocessorBlock = isIndentablePreprocessorBlock(currentLine, charNum);\n\t\t\t\t\tisIndentableProprocessor = isIndentableProprocessorBlock;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isIndentableProprocessorBlock\n\t\t\t        && charNum < (int) currentLine.length() - 1\n\t\t\t        && isWhiteSpace(currentLine[charNum + 1]))\n\t\t\t{\n\t\t\t\tsize_t nextText = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\t\t\tif (nextText != string::npos)\n\t\t\t\t\tcurrentLine.erase(charNum + 1, nextText - charNum - 1);\n\t\t\t}\n\t\t\tif (isIndentableProprocessorBlock\n\t\t\t        && sourceIterator->tellg() >= preprocBlockEnd)\n\t\t\t\tisIndentableProprocessorBlock = false;\n\t\t\t//  need to fall thru here to reset the variables\n\t\t}\n\n\t\t/* not in preprocessor ... */\n\n\t\tif (isImmediatelyPostComment)\n\t\t{\n\t\t\tcaseHeaderFollowsComments = false;\n\t\t\tisImmediatelyPostComment = false;\n\t\t\tisCharImmediatelyPostComment = true;\n\t\t}\n\n\t\tif (isImmediatelyPostLineComment)\n\t\t{\n\t\t\tcaseHeaderFollowsComments = false;\n\t\t\tisImmediatelyPostLineComment = false;\n\t\t\tisCharImmediatelyPostLineComment = true;\n\t\t}\n\n\t\tif (isImmediatelyPostReturn)\n\t\t{\n\t\t\tisImmediatelyPostReturn = false;\n\t\t\tisCharImmediatelyPostReturn = true;\n\t\t}\n\n\t\tif (isImmediatelyPostThrow)\n\t\t{\n\t\t\tisImmediatelyPostThrow = false;\n\t\t\tisCharImmediatelyPostThrow = true;\n\t\t}\n\n\t\tif (isImmediatelyPostOperator)\n\t\t{\n\t\t\tisImmediatelyPostOperator = false;\n\t\t\tisCharImmediatelyPostOperator = true;\n\t\t}\n\t\tif (isImmediatelyPostTemplate)\n\t\t{\n\t\t\tisImmediatelyPostTemplate = false;\n\t\t\tisCharImmediatelyPostTemplate = true;\n\t\t}\n\t\tif (isImmediatelyPostPointerOrReference)\n\t\t{\n\t\t\tisImmediatelyPostPointerOrReference = false;\n\t\t\tisCharImmediatelyPostPointerOrReference = true;\n\t\t}\n\n\t\t// reset isImmediatelyPostHeader information\n\t\tif (isImmediatelyPostHeader)\n\t\t{\n\t\t\t// should brackets be added\n\t\t\tif (currentChar != '{' && shouldAddBrackets)\n\t\t\t{\n\t\t\t\tbool bracketsAdded = addBracketsToStatement();\n\t\t\t\tif (bracketsAdded && !shouldAddOneLineBrackets)\n\t\t\t\t{\n\t\t\t\t\tsize_t firstText = currentLine.find_first_not_of(\" \\t\");\n\t\t\t\t\tassert(firstText != string::npos);\n\t\t\t\t\tif ((int) firstText == charNum)\n\t\t\t\t\t\tbreakCurrentOneLineBlock = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// should brackets be removed\n\t\t\telse if (currentChar == '{' && shouldRemoveBrackets)\n\t\t\t{\n\t\t\t\tbool bracketsRemoved = removeBracketsFromStatement();\n\t\t\t\tif (bracketsRemoved)\n\t\t\t\t{\n\t\t\t\t\tshouldRemoveNextClosingBracket = true;\n\t\t\t\t\tif (isBeforeAnyLineEndComment(charNum))\n\t\t\t\t\t\tspacePadNum--;\n\t\t\t\t\telse if (shouldBreakOneLineBlocks\n\t\t\t\t\t         || (currentLineBeginsWithBracket\n\t\t\t\t\t             && currentLine.find_first_not_of(\" \\t\") != string::npos))\n\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// break 'else-if' if shouldBreakElseIfs is requested\n\t\t\tif (shouldBreakElseIfs\n\t\t\t        && currentHeader == &AS_ELSE\n\t\t\t        && isOkToBreakBlock(bracketTypeStack->back())\n\t\t\t        && !isBeforeAnyComment()\n\t\t\t        && (shouldBreakOneLineStatements || !isHeaderInMultiStatementLine))\n\t\t\t{\n\t\t\t\tstring nextText = peekNextText(currentLine.substr(charNum));\n\t\t\t\tif (nextText.length() > 0\n\t\t\t\t        && isCharPotentialHeader(nextText, 0)\n\t\t\t\t        && ASBeautifier::findHeader(nextText, 0, headers) == &AS_IF)\n\t\t\t\t{\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tisImmediatelyPostHeader = false;\n\t\t}\n\n\t\tif (passedSemicolon)    // need to break the formattedLine\n\t\t{\n\t\t\tpassedSemicolon = false;\n\t\t\tif (parenStack->back() == 0 && !isCharImmediatelyPostComment && currentChar != ';') // allow ;;\n\t\t\t{\n\t\t\t\t// does a one-line block have ending comments?\n\t\t\t\tif (isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))\n\t\t\t\t{\n\t\t\t\t\tsize_t blockEnd = currentLine.rfind(AS_CLOSE_BRACKET);\n\t\t\t\t\tassert(blockEnd != string::npos);\n\t\t\t\t\t// move ending comments to this formattedLine\n\t\t\t\t\tif (isBeforeAnyLineEndComment(blockEnd))\n\t\t\t\t\t{\n\t\t\t\t\t\tsize_t commentStart = currentLine.find_first_not_of(\" \\t\", blockEnd + 1);\n\t\t\t\t\t\tassert(commentStart != string::npos);\n\t\t\t\t\t\tassert((currentLine.compare(commentStart, 2, \"//\") == 0)\n\t\t\t\t\t\t       || (currentLine.compare(commentStart, 2, \"/*\") == 0));\n\t\t\t\t\t\tsize_t commentLength = currentLine.length() - commentStart;\n\t\t\t\t\t\tformattedLine.append(getIndentLength() - 1, ' ');\n\t\t\t\t\t\tformattedLine.append(currentLine, commentStart, commentLength);\n\t\t\t\t\t\tcurrentLine.erase(commentStart, commentLength);\n\t\t\t\t\t\ttestForTimeToSplitFormattedLine();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tisInExecSQL = false;\n\t\t\t\tshouldReparseCurrentChar = true;\n\t\t\t\tif (formattedLine.find_first_not_of(\" \\t\") != string::npos)\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t\tif (needHeaderOpeningBracket)\n\t\t\t\t{\n\t\t\t\t\tisCharImmediatelyPostCloseBlock = true;\n\t\t\t\t\tneedHeaderOpeningBracket = false;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (passedColon)\n\t\t{\n\t\t\tpassedColon = false;\n\t\t\tif (parenStack->back() == 0\n\t\t\t        && !isBeforeAnyComment()\n\t\t\t        && (formattedLine.find_first_not_of(\" \\t\") != string::npos))\n\t\t\t{\n\t\t\t\tshouldReparseCurrentChar = true;\n\t\t\t\tisInLineBreak = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Check if in template declaration, e.g. foo<bar> or foo<bar,fig>\n\t\tif (!isInTemplate && currentChar == '<')\n\t\t{\n\t\t\tcheckIfTemplateOpener();\n\t\t}\n\n\t\t// handle parens\n\t\tif (currentChar == '(' || currentChar == '[' || (isInTemplate && currentChar == '<'))\n\t\t{\n\t\t\tquestionMarkStack->push_back(foundQuestionMark);\n\t\t\tfoundQuestionMark = false;\n\t\t\tparenStack->back()++;\n\t\t\tif (currentChar == '[')\n\t\t\t\t++squareBracketCount;\n\t\t}\n\t\telse if (currentChar == ')' || currentChar == ']' || (isInTemplate && currentChar == '>'))\n\t\t{\n\t\t\tfoundPreCommandHeader = false;\n\t\t\tparenStack->back()--;\n\t\t\t// this can happen in preprocessor directives\n\t\t\tif (parenStack->back() < 0)\n\t\t\t\tparenStack->back() = 0;\n\t\t\tif (!questionMarkStack->empty())\n\t\t\t{\n\t\t\t\tfoundQuestionMark = questionMarkStack->back();\n\t\t\t\tquestionMarkStack->pop_back();\n\t\t\t}\n\t\t\tif (isInTemplate && currentChar == '>')\n\t\t\t{\n\t\t\t\ttemplateDepth--;\n\t\t\t\tif (templateDepth == 0)\n\t\t\t\t{\n\t\t\t\t\tisInTemplate = false;\n\t\t\t\t\tisImmediatelyPostTemplate = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// check if this parenthesis closes a header, e.g. if (...), while (...)\n\t\t\tif (isInHeader && parenStack->back() == 0)\n\t\t\t{\n\t\t\t\tisInHeader = false;\n\t\t\t\tisImmediatelyPostHeader = true;\n\t\t\t\tfoundQuestionMark = false;\n\t\t\t}\n\t\t\tif (currentChar == ']')\n\t\t\t{\n\t\t\t\t--squareBracketCount;\n\t\t\t\tif (squareBracketCount < 0)\n\t\t\t\t\tsquareBracketCount = 0;\n\t\t\t}\n\t\t\tif (currentChar == ')')\n\t\t\t{\n\t\t\t\tfoundCastOperator = false;\n\t\t\t\tif (parenStack->back() == 0)\n\t\t\t\t\tendOfAsmReached = true;\n\t\t\t}\n\t\t}\n\n\t\t// handle brackets\n\t\tif (currentChar == '{' || currentChar == '}')\n\t\t{\n\t\t\t// if appendOpeningBracket this was already done for the original bracket\n\t\t\tif (currentChar == '{' && !appendOpeningBracket)\n\t\t\t{\n\t\t\t\tBracketType newBracketType = getBracketType();\n\t\t\t\tfoundNamespaceHeader = false;\n\t\t\t\tfoundClassHeader = false;\n\t\t\t\tfoundStructHeader = false;\n\t\t\t\tfoundInterfaceHeader = false;\n\t\t\t\tfoundPreDefinitionHeader = false;\n\t\t\t\tfoundPreCommandHeader = false;\n\t\t\t\tfoundPreCommandMacro = false;\n\t\t\t\tisInPotentialCalculation = false;\n\t\t\t\tisInObjCMethodDefinition = false;\n\t\t\t\tisInObjCInterface = false;\n\t\t\t\tisInEnum = false;\n\t\t\t\tisJavaStaticConstructor = false;\n\t\t\t\tisCharImmediatelyPostNonInStmt = false;\n\t\t\t\tneedHeaderOpeningBracket = false;\n\t\t\t\tshouldKeepLineUnbroken = false;\n\n\t\t\t\tisPreviousBracketBlockRelated = !isBracketType(newBracketType, ARRAY_TYPE);\n\t\t\t\tbracketTypeStack->push_back(newBracketType);\n\t\t\t\tpreBracketHeaderStack->push_back(currentHeader);\n\t\t\t\tcurrentHeader = NULL;\n\t\t\t\tstructStack->push_back(isInIndentableStruct);\n\t\t\t\tif (isBracketType(newBracketType, STRUCT_TYPE) && isCStyle())\n\t\t\t\t\tisInIndentableStruct = isStructAccessModified(currentLine, charNum);\n\t\t\t\telse\n\t\t\t\t\tisInIndentableStruct = false;\n\t\t\t}\n\n\t\t\t// this must be done before the bracketTypeStack is popped\n\t\t\tBracketType bracketType = bracketTypeStack->back();\n\t\t\tbool isOpeningArrayBracket = (isBracketType(bracketType, ARRAY_TYPE)\n\t\t\t                              && bracketTypeStack->size() >= 2\n\t\t\t                              && !isBracketType((*bracketTypeStack)[bracketTypeStack->size() - 2], ARRAY_TYPE)\n\t\t\t                             );\n\n\t\t\tif (currentChar == '}')\n\t\t\t{\n\t\t\t\t// if a request has been made to append a post block empty line,\n\t\t\t\t// but the block exists immediately before a closing bracket,\n\t\t\t\t// then there is no need for the post block empty line.\n\t\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t\t\tbreakCurrentOneLineBlock = false;\n\t\t\t\tif (isInAsm)\n\t\t\t\t\tendOfAsmReached = true;\n\t\t\t\tisInAsmOneLine = isInQuote = false;\n\t\t\t\tshouldKeepLineUnbroken = false;\n\t\t\t\tsquareBracketCount = 0;\n\n\t\t\t\tif (bracketTypeStack->size() > 1)\n\t\t\t\t{\n\t\t\t\t\tpreviousBracketType = bracketTypeStack->back();\n\t\t\t\t\tbracketTypeStack->pop_back();\n\t\t\t\t\tisPreviousBracketBlockRelated = !isBracketType(bracketType, ARRAY_TYPE);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpreviousBracketType = NULL_TYPE;\n\t\t\t\t\tisPreviousBracketBlockRelated = false;\n\t\t\t\t}\n\n\t\t\t\tif (!preBracketHeaderStack->empty())\n\t\t\t\t{\n\t\t\t\t\tcurrentHeader = preBracketHeaderStack->back();\n\t\t\t\t\tpreBracketHeaderStack->pop_back();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tcurrentHeader = NULL;\n\n\t\t\t\tif (!structStack->empty())\n\t\t\t\t{\n\t\t\t\t\tisInIndentableStruct = structStack->back();\n\t\t\t\t\tstructStack->pop_back();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tisInIndentableStruct = false;\n\n\t\t\t\tif (isNonInStatementArray\n\t\t\t\t        && (!isBracketType(bracketTypeStack->back(), ARRAY_TYPE)\t// check previous bracket\n\t\t\t\t            || peekNextChar() == ';'))\t\t\t\t\t\t\t\t// check for \"};\" added V2.01\n\t\t\t\t\tisImmediatelyPostNonInStmt = true;\n\t\t\t}\n\n\t\t\t// format brackets\n\t\t\tappendOpeningBracket = false;\n\t\t\tif (isBracketType(bracketType, ARRAY_TYPE))\n\t\t\t{\n\t\t\t\tformatArrayBrackets(bracketType, isOpeningArrayBracket);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (currentChar == '{')\n\t\t\t\t\tformatOpeningBracket(bracketType);\n\t\t\t\telse\n\t\t\t\t\tformatClosingBracket(bracketType);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ((((previousCommandChar == '{' && isPreviousBracketBlockRelated)\n\t\t        || ((previousCommandChar == '}'\n\t\t             && !isImmediatelyPostEmptyBlock\n\t\t             && isPreviousBracketBlockRelated\n\t\t             && !isPreviousCharPostComment       // Fixes wrongly appended newlines after '}' immediately after comments\n\t\t             && peekNextChar() != ' '\n\t\t             && !isBracketType(previousBracketType, DEFINITION_TYPE))\n\t\t            && !isBracketType(bracketTypeStack->back(), DEFINITION_TYPE)))\n\t\t        && isOkToBreakBlock(bracketTypeStack->back()))\n\t\t        // check for array\n\t\t        || (previousCommandChar == '{'\t\t\t// added 9/30/2010\n\t\t            && isBracketType(bracketTypeStack->back(), ARRAY_TYPE)\n\t\t            && !isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE)\n\t\t            && isNonInStatementArray))\n\t\t{\n\t\t\tisCharImmediatelyPostOpenBlock = (previousCommandChar == '{');\n\t\t\tisCharImmediatelyPostCloseBlock = (previousCommandChar == '}');\n\n\t\t\tif (isCharImmediatelyPostOpenBlock\n\t\t\t        && !isCharImmediatelyPostComment\n\t\t\t        && !isCharImmediatelyPostLineComment)\n\t\t\t{\n\t\t\t\tpreviousCommandChar = ' ';\n\n\t\t\t\tif (bracketFormatMode == NONE_MODE)\n\t\t\t\t{\n\t\t\t\t\tif (shouldBreakOneLineBlocks\n\t\t\t\t\t        && isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))\n\t\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t\telse if (currentLineBeginsWithBracket)\n\t\t\t\t\t\tformatRunIn();\n\t\t\t\t\telse\n\t\t\t\t\t\tbreakLine();\n\t\t\t\t}\n\t\t\t\telse if (bracketFormatMode == RUN_IN_MODE\n\t\t\t\t         && currentChar != '#')\n\t\t\t\t\tformatRunIn();\n\t\t\t\telse\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t}\n\t\t\telse if (isCharImmediatelyPostCloseBlock\n\t\t\t         && shouldBreakOneLineStatements\n\t\t\t         && (isLegalNameChar(currentChar) && currentChar != '.')\n\t\t\t         && !isCharImmediatelyPostComment)\n\t\t\t{\n\t\t\t\tpreviousCommandChar = ' ';\n\t\t\t\tisInLineBreak = true;\n\t\t\t}\n\t\t}\n\n\t\t// reset block handling flags\n\t\tisImmediatelyPostEmptyBlock = false;\n\n\t\t// look for headers\n\t\tbool isPotentialHeader = isCharPotentialHeader(currentLine, charNum);\n\n\t\tif (isPotentialHeader && !isInTemplate && !squareBracketCount)\n\t\t{\n\t\t\tisNonParenHeader = false;\n\t\t\tfoundClosingHeader = false;\n\t\t\tnewHeader = findHeader(headers);\n\n\t\t\t// Qt headers may be variables in C++\n\t\t\tif (newHeader == &AS_FOREVER || newHeader == &AS_FOREACH)\n\t\t\t{\n\t\t\t\tif (currentLine.find_first_of(\"=;\", charNum) != string::npos)\n\t\t\t\t\tnewHeader = NULL;\n\t\t\t}\n\n\t\t\tif (newHeader != NULL)\n\t\t\t{\n\t\t\t\tconst string* previousHeader;\n\n\t\t\t\t// recognize closing headers of do..while, if..else, try..catch..finally\n\t\t\t\tif ((newHeader == &AS_ELSE && currentHeader == &AS_IF)\n\t\t\t\t        || (newHeader == &AS_WHILE && currentHeader == &AS_DO)\n\t\t\t\t        || (newHeader == &AS_CATCH && currentHeader == &AS_TRY)\n\t\t\t\t        || (newHeader == &AS_CATCH && currentHeader == &AS_CATCH)\n\t\t\t\t        || (newHeader == &AS_FINALLY && currentHeader == &AS_TRY)\n\t\t\t\t        || (newHeader == &AS_FINALLY && currentHeader == &AS_CATCH)\n\t\t\t\t        || (newHeader == &_AS_FINALLY && currentHeader == &_AS_TRY)\n\t\t\t\t        || (newHeader == &_AS_EXCEPT && currentHeader == &_AS_TRY)\n\t\t\t\t        || (newHeader == &AS_SET && currentHeader == &AS_GET)\n\t\t\t\t        || (newHeader == &AS_REMOVE && currentHeader == &AS_ADD))\n\t\t\t\t\tfoundClosingHeader = true;\n\n\t\t\t\tpreviousHeader = currentHeader;\n\t\t\t\tcurrentHeader = newHeader;\n\t\t\t\tneedHeaderOpeningBracket = true;\n\n\t\t\t\t// is the previous statement on the same line?\n\t\t\t\tif ((previousNonWSChar == ';' || previousNonWSChar == ':')\n\t\t\t\t        && !isInLineBreak\n\t\t\t\t        && isOkToBreakBlock(bracketTypeStack->back()))\n\t\t\t\t{\n\t\t\t\t\t// if breaking lines, break the line at the header\n\t\t\t\t\t// except for multiple 'case' statements on a line\n\t\t\t\t\tif (maxCodeLength != string::npos\n\t\t\t\t\t        && previousHeader != &AS_CASE)\n\t\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t\telse\n\t\t\t\t\t\tisHeaderInMultiStatementLine = true;\n\t\t\t\t}\n\n\t\t\t\tif (foundClosingHeader && previousNonWSChar == '}')\n\t\t\t\t{\n\t\t\t\t\tif (isOkToBreakBlock(bracketTypeStack->back()))\n\t\t\t\t\t\tisLineBreakBeforeClosingHeader();\n\n\t\t\t\t\t// get the adjustment for a comment following the closing header\n\t\t\t\t\tif (isInLineBreak)\n\t\t\t\t\t\tnextLineSpacePadNum = getNextLineCommentAdjustment();\n\t\t\t\t\telse\n\t\t\t\t\t\tspacePadNum = getCurrentLineCommentAdjustment();\n\t\t\t\t}\n\n\t\t\t\t// check if the found header is non-paren header\n\t\t\t\tisNonParenHeader = findHeader(nonParenHeaders) != NULL;\n\n\t\t\t\t// join 'else if' statements\n\t\t\t\tif (currentHeader == &AS_IF && previousHeader == &AS_ELSE && isInLineBreak\n\t\t\t\t        && !shouldBreakElseIfs && !isCharImmediatelyPostLineComment)\n\t\t\t\t{\n\t\t\t\t\t// 'else' must be last thing on the line\n\t\t\t\t\tsize_t start = formattedLine.length() >= 6 ? formattedLine.length() - 6 : 0;\n\t\t\t\t\tif (formattedLine.find(AS_ELSE, start) != string::npos)\n\t\t\t\t\t{\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\tisInLineBreak = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tappendSequence(*currentHeader);\n\t\t\t\tgoForward(currentHeader->length() - 1);\n\t\t\t\t// if a paren-header is found add a space after it, if needed\n\t\t\t\t// this checks currentLine, appendSpacePad() checks formattedLine\n\t\t\t\t// in 'case' and C# 'catch' can be either a paren or non-paren header\n\t\t\t\tif (shouldPadHeader\n\t\t\t\t        && (!isNonParenHeader\n\t\t\t\t            || (currentHeader == &AS_CASE && peekNextChar() == '(')\n\t\t\t\t            || (currentHeader == &AS_CATCH && peekNextChar() == '('))\n\t\t\t\t        && charNum < (int) currentLine.length() - 1 && !isWhiteSpace(currentLine[charNum + 1]))\n\t\t\t\t\tappendSpacePad();\n\n\t\t\t\t// Signal that a header has been reached\n\t\t\t\t// *** But treat a closing while() (as in do...while)\n\t\t\t\t//     as if it were NOT a header since a closing while()\n\t\t\t\t//     should never have a block after it!\n\t\t\t\tif (currentHeader != &AS_CASE && currentHeader != &AS_DEFAULT\n\t\t\t\t        && !(foundClosingHeader && currentHeader == &AS_WHILE))\n\t\t\t\t{\n\t\t\t\t\tisInHeader = true;\n\n\t\t\t\t\t// in C# 'catch' and 'delegate' can be a paren or non-paren header\n\t\t\t\t\tif (isNonParenHeader && !isSharpStyleWithParen(currentHeader))\n\t\t\t\t\t{\n\t\t\t\t\t\tisImmediatelyPostHeader = true;\n\t\t\t\t\t\tisInHeader = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (shouldBreakBlocks\n\t\t\t\t        && isOkToBreakBlock(bracketTypeStack->back())\n\t\t\t\t        && !isHeaderInMultiStatementLine)\n\t\t\t\t{\n\t\t\t\t\tif (previousHeader == NULL\n\t\t\t\t\t        && !foundClosingHeader\n\t\t\t\t\t        && !isCharImmediatelyPostOpenBlock\n\t\t\t\t\t        && !isImmediatelyPostCommentOnly)\n\t\t\t\t\t{\n\t\t\t\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentHeader == &AS_ELSE\n\t\t\t\t\t        || currentHeader == &AS_CATCH\n\t\t\t\t\t        || currentHeader == &AS_FINALLY\n\t\t\t\t\t        || foundClosingHeader)\n\t\t\t\t\t{\n\t\t\t\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (shouldBreakClosingHeaderBlocks\n\t\t\t\t\t        && isCharImmediatelyPostCloseBlock\n\t\t\t\t\t        && !isImmediatelyPostCommentOnly\n\t\t\t\t\t        && currentHeader != &AS_WHILE)    // closing do-while block\n\t\t\t\t\t{\n\t\t\t\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (currentHeader == &AS_CASE\n\t\t\t\t        || currentHeader == &AS_DEFAULT)\n\t\t\t\t\tisInCase = true;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if ((newHeader = findHeader(preDefinitionHeaders)) != NULL\n\t\t\t         && parenStack->back() == 0\n\t\t\t         && !isInEnum)\t\t// not C++11 enum class\n\t\t\t{\n\t\t\t\tif (newHeader == &AS_NAMESPACE)\n\t\t\t\t\tfoundNamespaceHeader = true;\n\t\t\t\tif (newHeader == &AS_CLASS)\n\t\t\t\t\tfoundClassHeader = true;\n\t\t\t\tif (newHeader == &AS_STRUCT)\n\t\t\t\t\tfoundStructHeader = true;\n\t\t\t\tif (newHeader == &AS_INTERFACE)\n\t\t\t\t\tfoundInterfaceHeader = true;\n\t\t\t\tfoundPreDefinitionHeader = true;\n\t\t\t\tappendSequence(*newHeader);\n\t\t\t\tgoForward(newHeader->length() - 1);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if ((newHeader = findHeader(preCommandHeaders)) != NULL)\n\t\t\t{\n\t\t\t\t// a 'const' variable is not a preCommandHeader\n\t\t\t\tif (previousNonWSChar != ';'\n\t\t\t\t        && previousNonWSChar != '{'\n\t\t\t\t        && getPreviousWord(currentLine, charNum) != AS_STATIC)\n\t\t\t\t\tfoundPreCommandHeader = true;\n\t\t\t}\n\t\t\telse if ((newHeader = findHeader(castOperators)) != NULL)\n\t\t\t{\n\t\t\t\tfoundCastOperator = true;\n\t\t\t\tappendSequence(*newHeader);\n\t\t\t\tgoForward(newHeader->length() - 1);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}   // (isPotentialHeader && !isInTemplate)\n\n\t\tif (isInLineBreak)          // OK to break line here\n\t\t{\n\t\t\tbreakLine();\n\t\t\tif (isInVirginLine)\t\t// adjust for the first line\n\t\t\t{\n\t\t\t\tlineCommentNoBeautify = lineCommentNoIndent;\n\t\t\t\tlineCommentNoIndent = false;\n\t\t\t\tif (isImmediatelyPostPreprocessor)\n\t\t\t\t{\n\t\t\t\t\tisInIndentablePreproc = isIndentableProprocessor;\n\t\t\t\t\tisIndentableProprocessor = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (previousNonWSChar == '}' || currentChar == ';')\n\t\t{\n\t\t\tif (currentChar == ';')\n\t\t\t{\n\t\t\t\tsquareBracketCount = 0;\n\n\t\t\t\tif (((shouldBreakOneLineStatements\n\t\t\t\t        || isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))\n\t\t\t\t        && isOkToBreakBlock(bracketTypeStack->back()))\n\t\t\t\t        && !(attachClosingBracketMode && peekNextChar() == '}'))\n\t\t\t\t{\n\t\t\t\t\tpassedSemicolon = true;\n\t\t\t\t}\n\n\t\t\t\t// append post block empty line for unbracketed header\n\t\t\t\tif (shouldBreakBlocks\n\t\t\t\t        && currentHeader != NULL\n\t\t\t\t        && currentHeader != &AS_CASE\n\t\t\t\t        && currentHeader != &AS_DEFAULT\n\t\t\t\t        && !isHeaderInMultiStatementLine\n\t\t\t\t        && parenStack->back() == 0)\n\t\t\t\t{\n\t\t\t\t\tisAppendPostBlockEmptyLineRequested = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentChar != ';'\n\t\t\t        || (needHeaderOpeningBracket && parenStack->back() == 0))\n\t\t\t\tcurrentHeader = NULL;\n\t\t\tresetEndOfStatement();\n\t\t}\n\n\t\tif (currentChar == ':'\n\t\t        && previousChar != ':'         // not part of '::'\n\t\t        && peekNextChar() != ':')      // not part of '::'\n\t\t{\n\t\t\tif (isInCase)\n\t\t\t{\n\t\t\t\tisInCase = false;\n\t\t\t\tif (shouldBreakOneLineStatements)\n\t\t\t\t\tpassedColon = true;\n\t\t\t}\n\t\t\telse if (isCStyle()                     // for C/C++ only\n\t\t\t         && isOkToBreakBlock(bracketTypeStack->back())\n\t\t\t         && shouldBreakOneLineStatements\n\t\t\t         && !foundQuestionMark          // not in a ?: sequence\n\t\t\t         && !foundPreDefinitionHeader   // not in a definition block (e.g. class foo : public bar\n\t\t\t         && previousCommandChar != ')'  // not immediately after closing paren of a method header, e.g. ASFormatter::ASFormatter(...) : ASBeautifier(...)\n\t\t\t         && !foundPreCommandHeader      // not after a 'noexcept'\n\t\t\t         && !squareBracketCount         // not in objC method call\n\t\t\t         && !isInObjCMethodDefinition   // not objC '-' or '+' method\n\t\t\t         && !isInObjCInterface          // not objC @interface\n\t\t\t         && !isInObjCSelector           // not objC @selector\n\t\t\t         && !isDigit(peekNextChar())    // not a bit field\n\t\t\t         && !isInEnum                   // not an enum with a base type\n\t\t\t         && !isInAsm                    // not in extended assembler\n\t\t\t         && !isInAsmOneLine             // not in extended assembler\n\t\t\t         && !isInAsmBlock)              // not in extended assembler\n\t\t\t{\n\t\t\t\tpassedColon = true;\n\t\t\t}\n\n\t\t\tif (isCStyle()\n\t\t\t        && shouldPadMethodColon\n\t\t\t        && (squareBracketCount > 0 || isInObjCMethodDefinition || isInObjCSelector)\n\t\t\t        && !foundQuestionMark)\t\t\t// not in a ?: sequence\n\t\t\t\tpadObjCMethodColon();\n\n\t\t\tif (isInObjCInterface)\n\t\t\t{\n\t\t\t\tappendSpacePad();\n\t\t\t\tif ((int) currentLine.length() > charNum + 1 && !isWhiteSpace(currentLine[charNum + 1]))\n\t\t\t\t\tcurrentLine.insert(charNum + 1, \" \");\n\t\t\t}\n\n\t\t\tif (isClassInitializer())\n\t\t\t\tisInClassInitializer = true;\n\t\t}\n\n\t\tif (currentChar == '?')\n\t\t\tfoundQuestionMark = true;\n\n\t\tif (isPotentialHeader && !isInTemplate)\n\t\t{\n\t\t\tif (findKeyword(currentLine, charNum, AS_NEW))\n\t\t\t\tisInPotentialCalculation = false;\n\n\t\t\tif (findKeyword(currentLine, charNum, AS_RETURN))\n\t\t\t{\n\t\t\t\tisInPotentialCalculation = true;\t// return is the same as an = sign\n\t\t\t\tisImmediatelyPostReturn = true;\n\t\t\t}\n\n\t\t\tif (findKeyword(currentLine, charNum, AS_OPERATOR))\n\t\t\t\tisImmediatelyPostOperator = true;\n\n\t\t\tif (findKeyword(currentLine, charNum, AS_ENUM))\n\t\t\t{\n\t\t\t\tsize_t firstNum = currentLine.find_first_of(\"(){},/\");\n\t\t\t\tif (firstNum == string::npos\n\t\t\t\t        || currentLine[firstNum] == '{'\n\t\t\t\t        || currentLine[firstNum] == '/')\n\t\t\t\t\tisInEnum = true;\n\t\t\t}\n\n\t\t\tif (isCStyle()\n\t\t\t        && findKeyword(currentLine, charNum, AS_THROW)\n\t\t\t        && previousCommandChar != ')'\n\t\t\t        && !foundPreCommandHeader)      // 'const' throw()\n\t\t\t\tisImmediatelyPostThrow = true;\n\n\t\t\tif (isCStyle() && findKeyword(currentLine, charNum, AS_EXTERN) && isExternC())\n\t\t\t\tisInExternC = true;\n\n\t\t\t// Objective-C NSException macros are preCommandHeaders\n\t\t\tif (isCStyle() && findKeyword(currentLine, charNum, AS_NS_DURING))\n\t\t\t\tfoundPreCommandMacro = true;\n\t\t\tif (isCStyle() && findKeyword(currentLine, charNum, AS_NS_HANDLER))\n\t\t\t\tfoundPreCommandMacro = true;\n\n\t\t\tif (isCStyle() && isExecSQL(currentLine, charNum))\n\t\t\t\tisInExecSQL = true;\n\n\t\t\tif (isCStyle())\n\t\t\t{\n\t\t\t\tif (findKeyword(currentLine, charNum, AS_ASM)\n\t\t\t\t        || findKeyword(currentLine, charNum, AS__ASM__))\n\t\t\t\t{\n\t\t\t\t\tisInAsm = true;\n\t\t\t\t}\n\t\t\t\telse if (findKeyword(currentLine, charNum, AS_MS_ASM)\t\t// microsoft specific\n\t\t\t\t         || findKeyword(currentLine, charNum, AS_MS__ASM))\n\t\t\t\t{\n\t\t\t\t\tint index = 4;\n\t\t\t\t\tif (peekNextChar() == '_')\t// check for __asm\n\t\t\t\t\t\tindex = 5;\n\n\t\t\t\t\tchar peekedChar = ASBase::peekNextChar(currentLine, charNum + index);\n\t\t\t\t\tif (peekedChar == '{' || peekedChar == ' ')\n\t\t\t\t\t\tisInAsmBlock = true;\n\t\t\t\t\telse\n\t\t\t\t\t\tisInAsmOneLine = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isJavaStyle()\n\t\t\t        && (findKeyword(currentLine, charNum, AS_STATIC)\n\t\t\t            && isNextCharOpeningBracket(charNum + 6)))\n\t\t\t\tisJavaStaticConstructor = true;\n\n\t\t\tif (isSharpStyle()\n\t\t\t        && (findKeyword(currentLine, charNum, AS_DELEGATE)\n\t\t\t            || findKeyword(currentLine, charNum, AS_UNCHECKED)))\n\t\t\t\tisSharpDelegate = true;\n\n\t\t\t// append the entire name\n\t\t\tstring name = getCurrentWord(currentLine, charNum);\n\t\t\t// must pad the 'and' and 'or' operators if required\n\t\t\tif (name == \"and\" || name == \"or\")\n\t\t\t{\n\t\t\t\tif (shouldPadOperators && previousNonWSChar != ':')\n\t\t\t\t{\n\t\t\t\t\tappendSpacePad();\n\t\t\t\t\tappendOperator(name);\n\t\t\t\t\tgoForward(name.length() - 1);\n\t\t\t\t\tif (!isBeforeAnyComment()\n\t\t\t\t\t        && !(currentLine.compare(charNum + 1, 1, AS_SEMICOLON) == 0)\n\t\t\t\t\t        && !(currentLine.compare(charNum + 1, 2, AS_SCOPE_RESOLUTION) == 0))\n\t\t\t\t\t\tappendSpaceAfter();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tappendOperator(name);\n\t\t\t\t\tgoForward(name.length() - 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tappendSequence(name);\n\t\t\t\tgoForward(name.length() - 1);\n\t\t\t}\n\n\t\t\tcontinue;\n\n\t\t}   // (isPotentialHeader &&  !isInTemplate)\n\n\t\t// determine if this is an Objective-C statement\n\n\t\tif (currentChar == '@'\n\t\t        && isCharPotentialHeader(currentLine, charNum + 1)\n\t\t        && findKeyword(currentLine, charNum + 1, AS_INTERFACE)\n\t\t        && isBracketType(bracketTypeStack->back(), NULL_TYPE))\n\t\t{\n\t\t\tisInObjCInterface = true;\n\t\t\tstring name = '@' + AS_INTERFACE;\n\t\t\tappendSequence(name);\n\t\t\tgoForward(name.length() - 1);\n\t\t\tcontinue;\n\t\t}\n\t\telse if (currentChar == '@'\n\t\t         && isCharPotentialHeader(currentLine, charNum + 1)\n\t\t         && findKeyword(currentLine, charNum + 1, AS_SELECTOR))\n\t\t{\n\t\t\tisInObjCSelector = true;\n\t\t\tstring name = '@' + AS_SELECTOR;\n\t\t\tappendSequence(name);\n\t\t\tgoForward(name.length() - 1);\n\t\t\tcontinue;\n\t\t}\n\t\telse if ((currentChar == '-' || currentChar == '+')\n\t\t         && peekNextChar() == '('\n\t\t         && isBracketType(bracketTypeStack->back(), NULL_TYPE)\n\t\t         && !isInPotentialCalculation)\n\t\t{\n\t\t\tisInObjCMethodDefinition = true;\n\t\t\tisInObjCInterface = false;\n\t\t\tappendCurrentChar();\n\t\t\tif (shouldPadMethodPrefix || shouldUnPadMethodPrefix)\n\t\t\t{\n\t\t\t\tsize_t i = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\t\t\tif (i != string::npos)\n\t\t\t\t\tgoForward(i - charNum - 1);\n\t\t\t\tif (shouldPadMethodPrefix)\n\t\t\t\t\tappendSpaceAfter();\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// determine if this is a potential calculation\n\n\t\tbool isPotentialOperator = isCharPotentialOperator(currentChar);\n\t\tnewHeader = NULL;\n\n\t\tif (isPotentialOperator)\n\t\t{\n\t\t\tnewHeader = findOperator(operators);\n\n\t\t\t// check for Java ? wildcard\n\t\t\tif (newHeader == &AS_GCC_MIN_ASSIGN && isJavaStyle() && isInTemplate)\n\t\t\t\tnewHeader = NULL;\n\n\t\t\tif (newHeader != NULL)\n\t\t\t{\n\t\t\t\tif (newHeader == &AS_LAMBDA)\n\t\t\t\t\tfoundPreCommandHeader = true;\n\n\t\t\t\t// correct mistake of two >> closing a template\n\t\t\t\tif (isInTemplate && (newHeader == &AS_GR_GR || newHeader == &AS_GR_GR_GR))\n\t\t\t\t\tnewHeader = &AS_GR;\n\n\t\t\t\tif (!isInPotentialCalculation)\n\t\t\t\t{\n\t\t\t\t\t// must determine if newHeader is an assignment operator\n\t\t\t\t\t// do NOT use findOperator!!!\n\t\t\t\t\tif (find(assignmentOperators->begin(), assignmentOperators->end(), newHeader)\n\t\t\t\t\t        != assignmentOperators->end())\n\t\t\t\t\t{\n\t\t\t\t\t\tfoundPreCommandHeader = false;\n\t\t\t\t\t\tchar peekedChar = peekNextChar();\n\t\t\t\t\t\tisInPotentialCalculation = !(newHeader == &AS_EQUAL && peekedChar == '*')\n\t\t\t\t\t\t                           && !(newHeader == &AS_EQUAL && peekedChar == '&')\n\t\t\t\t\t\t                           && !isCharImmediatelyPostOperator;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// process pointers and references\n\t\t// check newHeader to eliminate things like '&&' sequence\n\t\tif (!isJavaStyle()\n\t\t        && (newHeader == &AS_MULT\n\t\t            || newHeader == &AS_BIT_AND\n\t\t            || newHeader == &AS_BIT_XOR\n\t\t            || newHeader == &AS_AND)\n\t\t        && isPointerOrReference())\n\t\t{\n\t\t\tif (!isDereferenceOrAddressOf() && !isOperatorPaddingDisabled())\n\t\t\t\tformatPointerOrReference();\n\t\t\telse\n\t\t\t{\n\t\t\t\tappendOperator(*newHeader);\n\t\t\t\tgoForward(newHeader->length() - 1);\n\t\t\t}\n\t\t\tisImmediatelyPostPointerOrReference = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (shouldPadOperators && newHeader != NULL && !isOperatorPaddingDisabled())\n\t\t{\n\t\t\tpadOperators(newHeader);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// pad commas and semi-colons\n\t\tif (currentChar == ';'\n\t\t        || (currentChar == ',' && shouldPadOperators))\n\t\t{\n\t\t\tchar nextChar = ' ';\n\t\t\tif (charNum + 1 < (int) currentLine.length())\n\t\t\t\tnextChar = currentLine[charNum + 1];\n\t\t\tif (!isWhiteSpace(nextChar)\n\t\t\t        && nextChar != '}'\n\t\t\t        && nextChar != ')'\n\t\t\t        && nextChar != ']'\n\t\t\t        && nextChar != '>'\n\t\t\t        && nextChar != ';'\n\t\t\t        && !isBeforeAnyComment()\n\t\t\t        /* && !(isBracketType(bracketTypeStack->back(), ARRAY_TYPE)) */\n\t\t\t   )\n\t\t\t{\n\t\t\t\tappendCurrentChar();\n\t\t\t\tappendSpaceAfter();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// do NOT use 'continue' after this, it must do padParens if necessary\n\t\tif (currentChar == '('\n\t\t        && shouldPadHeader\n\t\t        && (isCharImmediatelyPostReturn || isCharImmediatelyPostThrow))\n\t\t\tappendSpacePad();\n\n\t\tif ((currentChar == '(' || currentChar == ')')\n\t\t        && (shouldPadParensOutside || shouldPadParensInside || shouldUnPadParens || shouldPadFirstParen))\n\t\t{\n\t\t\tpadParens();\n\t\t\tcontinue;\n\t\t}\n\n\t\t// bypass the entire operator\n\t\tif (newHeader != NULL)\n\t\t{\n\t\t\tappendOperator(*newHeader);\n\t\t\tgoForward(newHeader->length() - 1);\n\t\t\tcontinue;\n\t\t}\n\n\t\tappendCurrentChar();\n\n\t}   // end of while loop  *  end of while loop  *  end of while loop  *  end of while loop\n\n\t// return a beautified (i.e. correctly indented) line.\n\n\tstring beautifiedLine;\n\tsize_t readyFormattedLineLength = trim(readyFormattedLine).length();\n\tbool isInNamespace = isBracketType(bracketTypeStack->back(), NAMESPACE_TYPE);\n\n\tif (prependEmptyLine\t\t// prepend a blank line before this formatted line\n\t        && readyFormattedLineLength > 0\n\t        && previousReadyFormattedLineLength > 0)\n\t{\n\t\tisLineReady = true;\t\t// signal a waiting readyFormattedLine\n\t\tbeautifiedLine = beautify(\"\");\n\t\tpreviousReadyFormattedLineLength = 0;\n\t\t// call the enhancer for new empty lines\n\t\tenhancer->enhance(beautifiedLine, isInNamespace, isInPreprocessorBeautify, isInBeautifySQL);\n\t}\n\telse\t\t// format the current formatted line\n\t{\n\t\tisLineReady = false;\n\t\thorstmannIndentInStatement = horstmannIndentChars;\n\t\tbeautifiedLine = beautify(readyFormattedLine);\n\t\tpreviousReadyFormattedLineLength = readyFormattedLineLength;\n\t\t// the enhancer is not called for no-indent line comments\n\t\tif (!lineCommentNoBeautify && !isFormattingModeOff)\n\t\t\tenhancer->enhance(beautifiedLine, isInNamespace, isInPreprocessorBeautify, isInBeautifySQL);\n\t\thorstmannIndentChars = 0;\n\t\tlineCommentNoBeautify = lineCommentNoIndent;\n\t\tlineCommentNoIndent = false;\n\t\tisInIndentablePreproc = isIndentableProprocessor;\n\t\tisIndentableProprocessor = false;\n\t\tisElseHeaderIndent = elseHeaderFollowsComments;\n\t\tisCaseHeaderCommentIndent = caseHeaderFollowsComments;\n\t\tif (isCharImmediatelyPostNonInStmt)\n\t\t{\n\t\t\tisNonInStatementArray = false;\n\t\t\tisCharImmediatelyPostNonInStmt = false;\n\t\t}\n\t\tisInPreprocessorBeautify = isInPreprocessor;\t// used by ASEnhancer\n\t\tisInBeautifySQL = isInExecSQL;\t\t\t\t\t// used by ASEnhancer\n\t}\n\n\tprependEmptyLine = false;\n\tassert(computeChecksumOut(beautifiedLine));\n\treturn beautifiedLine;\n}\n\n/**\n * check if there are any indented lines ready to be read by nextLine()\n *\n * @return    are there any indented lines ready?\n */\nbool ASFormatter::hasMoreLines() const\n{\n\treturn !endOfCodeReached;\n}\n\n/**\n * comparison function for BracketType enum\n */\nbool ASFormatter::isBracketType(BracketType a, BracketType b) const\n{\n\tif (a == NULL_TYPE || b == NULL_TYPE)\n\t\treturn (a == b);\n\treturn ((a & b) == b);\n}\n\n/**\n * set the formatting style.\n *\n * @param style         the formatting style.\n */\nvoid ASFormatter::setFormattingStyle(FormatStyle style)\n{\n\tformattingStyle = style;\n}\n\n/**\n * set the add brackets mode.\n * options:\n *    true     brackets added to headers for single line statements.\n *    false    brackets NOT added to headers for single line statements.\n *\n * @param state         the add brackets state.\n */\nvoid ASFormatter::setAddBracketsMode(bool state)\n{\n\tshouldAddBrackets = state;\n}\n\n/**\n * set the add one line brackets mode.\n * options:\n *    true     one line brackets added to headers for single line statements.\n *    false    one line brackets NOT added to headers for single line statements.\n *\n * @param state         the add one line brackets state.\n */\nvoid ASFormatter::setAddOneLineBracketsMode(bool state)\n{\n\tshouldAddBrackets = state;\n\tshouldAddOneLineBrackets = state;\n}\n\n/**\n * set the remove brackets mode.\n * options:\n *    true     brackets removed from headers for single line statements.\n *    false    brackets NOT removed from headers for single line statements.\n *\n * @param state         the remove brackets state.\n */\nvoid ASFormatter::setRemoveBracketsMode(bool state)\n{\n\tshouldRemoveBrackets = state;\n}\n\n/**\n * set the bracket formatting mode.\n * options:\n *\n * @param mode         the bracket formatting mode.\n */\nvoid ASFormatter::setBracketFormatMode(BracketMode mode)\n{\n\tbracketFormatMode = mode;\n}\n\n/**\n * set 'break after' mode for maximum code length\n *\n * @param state         the 'break after' mode.\n */\nvoid ASFormatter::setBreakAfterMode(bool state)\n{\n\tshouldBreakLineAfterLogical = state;\n}\n\n/**\n * set closing header bracket breaking mode\n * options:\n *    true     brackets just before closing headers (e.g. 'else', 'catch')\n *             will be broken, even if standard brackets are attached.\n *    false    closing header brackets will be treated as standard brackets.\n *\n * @param state         the closing header bracket breaking mode.\n */\nvoid ASFormatter::setBreakClosingHeaderBracketsMode(bool state)\n{\n\tshouldBreakClosingHeaderBrackets = state;\n}\n\n/**\n * set 'else if()' breaking mode\n * options:\n *    true     'else' headers will be broken from their succeeding 'if' headers.\n *    false    'else' headers will be attached to their succeeding 'if' headers.\n *\n * @param state         the 'else if()' breaking mode.\n */\nvoid ASFormatter::setBreakElseIfsMode(bool state)\n{\n\tshouldBreakElseIfs = state;\n}\n\n/**\n * set maximum code length\n *\n * @param max         the maximum code length.\n */\nvoid ASFormatter::setMaxCodeLength(int max)\n{\n\tmaxCodeLength = max;\n}\n\n/**\n * set operator padding mode.\n * options:\n *    true     statement operators will be padded with spaces around them.\n *    false    statement operators will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setOperatorPaddingMode(bool state)\n{\n\tshouldPadOperators = state;\n}\n\n/**\n * set parenthesis outside padding mode.\n * options:\n *    true     statement parentheses will be padded with spaces around them.\n *    false    statement parentheses will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensOutsidePaddingMode(bool state)\n{\n\tshouldPadParensOutside = state;\n}\n\n/**\n * set parenthesis inside padding mode.\n * options:\n *    true     statement parenthesis will be padded with spaces around them.\n *    false    statement parenthesis will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensInsidePaddingMode(bool state)\n{\n\tshouldPadParensInside = state;\n}\n\n/**\n * set padding mode before one or more open parentheses.\n * options:\n *    true     first open parenthesis will be padded with a space before.\n *    false    first open parenthesis will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensFirstPaddingMode(bool state)\n{\n\tshouldPadFirstParen = state;\n}\n\n/**\n * set header padding mode.\n * options:\n *    true     headers will be padded with spaces around them.\n *    false    headers will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensHeaderPaddingMode(bool state)\n{\n\tshouldPadHeader = state;\n}\n\n/**\n * set parenthesis unpadding mode.\n * options:\n *    true     statement parenthesis will be unpadded with spaces removed around them.\n *    false    statement parenthesis will not be unpadded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensUnPaddingMode(bool state)\n{\n\tshouldUnPadParens = state;\n}\n\n/**\n* set the state of the preprocessor indentation option.\n* If true, #ifdef blocks at level 0 will be indented.\n*\n* @param   state             state of option.\n*/\nvoid ASFormatter::setPreprocBlockIndent(bool state)\n{\n\tshouldIndentPreprocBlock = state;\n}\n\n/**\n * Set strip comment prefix mode.\n * options:\n *    true     strip leading '*' in a comment.\n *    false    leading '*' in a comment will be left unchanged.\n *\n * @param state         the strip comment prefix mode.\n */\nvoid ASFormatter::setStripCommentPrefix(bool state)\n{\n\tshouldStripCommentPrefix = state;\n}\n\n/**\n * set objective-c '-' or '+' class prefix padding mode.\n * options:\n *    true     class prefix will be padded a spaces after them.\n *    false    class prefix will be left unchanged.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setMethodPrefixPaddingMode(bool state)\n{\n\tshouldPadMethodPrefix = state;\n}\n\n/**\n * set objective-c '-' or '+' class prefix unpadding mode.\n * options:\n *    true     class prefix will be unpadded with spaces after them removed.\n *    false    class prefix will left unchanged.\n *\n * @param state         the unpadding mode.\n */\nvoid ASFormatter::setMethodPrefixUnPaddingMode(bool state)\n{\n\tshouldUnPadMethodPrefix = state;\n}\n\n/**\n * set objective-c method colon padding mode.\n *\n * @param mode         objective-c colon padding mode.\n */\nvoid ASFormatter::setObjCColonPaddingMode(ObjCColonPad mode)\n{\n\tshouldPadMethodColon = true;\n\tobjCColonPadMode = mode;\n}\n\n/**\n * set option to attach closing brackets\n *\n * @param state        true = attach, false = don't attach.\n */\nvoid ASFormatter::setAttachClosingBracketMode(bool state)\n{\n\tattachClosingBracketMode = state;\n}\n\n/**\n * set option to attach class brackets\n *\n * @param state        true = attach, false = use style default.\n */\nvoid ASFormatter::setAttachClass(bool state)\n{\n\tshouldAttachClass = state;\n}\n\n/**\n * set option to attach extern \"C\" brackets\n *\n * @param state        true = attach, false = use style default.\n */\nvoid ASFormatter::setAttachExternC(bool state)\n{\n\tshouldAttachExternC = state;\n}\n\n/**\n * set option to attach namespace brackets\n *\n * @param state        true = attach, false = use style default.\n */\nvoid ASFormatter::setAttachNamespace(bool state)\n{\n\tshouldAttachNamespace = state;\n}\n\n/**\n * set option to attach inline brackets\n *\n * @param state        true = attach, false = use style default.\n */\nvoid ASFormatter::setAttachInline(bool state)\n{\n\tshouldAttachInline = state;\n}\n\n/**\n * set option to break/not break one-line blocks\n *\n * @param state        true = break, false = don't break.\n */\nvoid ASFormatter::setBreakOneLineBlocksMode(bool state)\n{\n\tshouldBreakOneLineBlocks = state;\n}\n\nvoid ASFormatter::setCloseTemplatesMode(bool state)\n{\n\tshouldCloseTemplates = state;\n}\n\n/**\n * set option to break/not break lines consisting of multiple statements.\n *\n * @param state        true = break, false = don't break.\n */\nvoid ASFormatter::setSingleStatementsMode(bool state)\n{\n\tshouldBreakOneLineStatements = state;\n}\n\n/**\n * set option to convert tabs to spaces.\n *\n * @param state        true = convert, false = don't convert.\n */\nvoid ASFormatter::setTabSpaceConversionMode(bool state)\n{\n\tshouldConvertTabs = state;\n}\n\n/**\n * set option to indent comments in column 1.\n *\n * @param state        true = indent, false = don't indent.\n */\nvoid ASFormatter::setIndentCol1CommentsMode(bool state)\n{\n\tshouldIndentCol1Comments = state;\n}\n\n/**\n * set option to force all line ends to a particular style.\n *\n * @param fmt           format enum value\n */\nvoid ASFormatter::setLineEndFormat(LineEndFormat fmt)\n{\n\tlineEnd = fmt;\n}\n\n/**\n * set option to break unrelated blocks of code with empty lines.\n *\n * @param state        true = convert, false = don't convert.\n */\nvoid ASFormatter::setBreakBlocksMode(bool state)\n{\n\tshouldBreakBlocks = state;\n}\n\n/**\n * set option to break closing header blocks of code (such as 'else', 'catch', ...) with empty lines.\n *\n * @param state        true = convert, false = don't convert.\n */\nvoid ASFormatter::setBreakClosingHeaderBlocksMode(bool state)\n{\n\tshouldBreakClosingHeaderBlocks = state;\n}\n\n/**\n * set option to delete empty lines.\n *\n * @param state        true = delete, false = don't delete.\n */\nvoid ASFormatter::setDeleteEmptyLinesMode(bool state)\n{\n\tshouldDeleteEmptyLines = state;\n}\n\n/**\n * set the pointer alignment.\n *\n * @param alignment    the pointer alignment.\n */\nvoid ASFormatter::setPointerAlignment(PointerAlign alignment)\n{\n\tpointerAlignment = alignment;\n}\n\nvoid ASFormatter::setReferenceAlignment(ReferenceAlign alignment)\n{\n\treferenceAlignment = alignment;\n}\n\n/**\n * jump over several characters.\n *\n * @param i       the number of characters to jump over.\n */\nvoid ASFormatter::goForward(int i)\n{\n\twhile (--i >= 0)\n\t\tgetNextChar();\n}\n\n/**\n * peek at the next unread character.\n *\n * @return     the next unread character.\n */\nchar ASFormatter::peekNextChar() const\n{\n\tchar ch = ' ';\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\n\tif (peekNum == string::npos)\n\t\treturn ch;\n\n\tch = currentLine[peekNum];\n\n\treturn ch;\n}\n\n/**\n * check if current placement is before a comment\n *\n * @return     is before a comment.\n */\nbool ASFormatter::isBeforeComment() const\n{\n\tbool foundComment = false;\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\n\tif (peekNum == string::npos)\n\t\treturn foundComment;\n\n\tfoundComment = (currentLine.compare(peekNum, 2, \"/*\") == 0);\n\n\treturn foundComment;\n}\n\n/**\n * check if current placement is before a comment or line-comment\n *\n * @return     is before a comment or line-comment.\n */\nbool ASFormatter::isBeforeAnyComment() const\n{\n\tbool foundComment = false;\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\n\tif (peekNum == string::npos)\n\t\treturn foundComment;\n\n\tfoundComment = (currentLine.compare(peekNum, 2, \"/*\") == 0\n\t                || currentLine.compare(peekNum, 2, \"//\") == 0);\n\n\treturn foundComment;\n}\n\n/**\n * check if current placement is before a comment or line-comment\n * if a block comment it must be at the end of the line\n *\n * @return     is before a comment or line-comment.\n */\nbool ASFormatter::isBeforeAnyLineEndComment(int startPos) const\n{\n\tbool foundLineEndComment = false;\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", startPos + 1);\n\n\tif (peekNum != string::npos)\n\t{\n\t\tif (currentLine.compare(peekNum, 2, \"//\") == 0)\n\t\t\tfoundLineEndComment = true;\n\t\telse if (currentLine.compare(peekNum, 2, \"/*\") == 0)\n\t\t{\n\t\t\t// comment must be closed on this line with nothing after it\n\t\t\tsize_t endNum = currentLine.find(\"*/\", peekNum + 2);\n\t\t\tif (endNum != string::npos)\n\t\t\t{\n\t\t\t\tsize_t nextChar = currentLine.find_first_not_of(\" \\t\", endNum + 2);\n\t\t\t\tif (nextChar == string::npos)\n\t\t\t\t\tfoundLineEndComment = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn foundLineEndComment;\n}\n\n/**\n * check if current placement is before a comment followed by a line-comment\n *\n * @return     is before a multiple line-end comment.\n */\nbool ASFormatter::isBeforeMultipleLineEndComments(int startPos) const\n{\n\tbool foundMultipleLineEndComment = false;\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", startPos + 1);\n\n\tif (peekNum != string::npos)\n\t{\n\t\tif (currentLine.compare(peekNum, 2, \"/*\") == 0)\n\t\t{\n\t\t\t// comment must be closed on this line with nothing after it\n\t\t\tsize_t endNum = currentLine.find(\"*/\", peekNum + 2);\n\t\t\tif (endNum != string::npos)\n\t\t\t{\n\t\t\t\tsize_t nextChar = currentLine.find_first_not_of(\" \\t\", endNum + 2);\n\t\t\t\tif (nextChar != string::npos\n\t\t\t\t        && currentLine.compare(nextChar, 2, \"//\") == 0)\n\t\t\t\t\tfoundMultipleLineEndComment = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn foundMultipleLineEndComment;\n}\n\n/**\n * get the next character, increasing the current placement in the process.\n * the new character is inserted into the variable currentChar.\n *\n * @return   whether succeeded to receive the new character.\n */\nbool ASFormatter::getNextChar()\n{\n\tisInLineBreak = false;\n\tpreviousChar = currentChar;\n\n\tif (!isWhiteSpace(currentChar))\n\t{\n\t\tpreviousNonWSChar = currentChar;\n\t\tif (!isInComment && !isInLineComment && !isInQuote\n\t\t        && !isImmediatelyPostComment\n\t\t        && !isImmediatelyPostLineComment\n\t\t        && !isInPreprocessor\n\t\t        && !isSequenceReached(\"/*\")\n\t\t        && !isSequenceReached(\"//\"))\n\t\t\tpreviousCommandChar = currentChar;\n\t}\n\n\tif (charNum + 1 < (int) currentLine.length()\n\t        && (!isWhiteSpace(peekNextChar()) || isInComment || isInLineComment))\n\t{\n\t\tcurrentChar = currentLine[++charNum];\n\n\t\tif (currentChar == '\\t' && shouldConvertTabs)\n\t\t\tconvertTabToSpaces();\n\n\t\treturn true;\n\t}\n\n\t// end of line has been reached\n\treturn getNextLine();\n}\n\n/**\n * get the next line of input, increasing the current placement in the process.\n *\n * @param emptyLineWasDeleted         an empty line was deleted.\n * @return   whether succeeded in reading the next line.\n */\nbool ASFormatter::getNextLine(bool emptyLineWasDeleted /*false*/)\n{\n\tif (sourceIterator->hasMoreLines())\n\t{\n\t\tif (appendOpeningBracket)\n\t\t\tcurrentLine = \"{\";\t\t// append bracket that was removed from the previous line\n\t\telse\n\t\t{\n\t\t\tcurrentLine = sourceIterator->nextLine(emptyLineWasDeleted);\n\t\t\tassert(computeChecksumIn(currentLine));\n\t\t}\n\t\t// reset variables for new line\n\t\tinLineNumber++;\n\t\tif (endOfAsmReached)\n\t\t\tendOfAsmReached = isInAsmBlock = isInAsm = false;\n\t\tshouldKeepLineUnbroken = false;\n\t\tisInCommentStartLine = false;\n\t\tisInCase = false;\n\t\tisInAsmOneLine = false;\n\t\tisHeaderInMultiStatementLine = false;\n\t\tisInQuoteContinuation = isInVerbatimQuote | haveLineContinuationChar;\n\t\thaveLineContinuationChar = false;\n\t\tisImmediatelyPostEmptyLine = lineIsEmpty;\n\t\tpreviousChar = ' ';\n\n\t\tif (currentLine.length() == 0)\n\t\t\tcurrentLine = string(\" \");        // a null is inserted if this is not done\n\n\t\t// unless reading in the first line of the file, break a new line.\n\t\tif (!isVirgin)\n\t\t\tisInLineBreak = true;\n\t\telse\n\t\t\tisVirgin = false;\n\n\t\tif (isImmediatelyPostNonInStmt)\n\t\t{\n\t\t\tisCharImmediatelyPostNonInStmt = true;\n\t\t\tisImmediatelyPostNonInStmt = false;\n\t\t}\n\n\t\t// check if is in preprocessor before line trimming\n\t\t// a blank line after a \\ will remove the flag\n\t\tisImmediatelyPostPreprocessor = isInPreprocessor;\n\t\tif (!isInComment\n\t\t        && (previousNonWSChar != '\\\\'\n\t\t            || isEmptyLine(currentLine)))\n\t\t\tisInPreprocessor = false;\n\n\t\tif (passedSemicolon)\n\t\t\tisInExecSQL = false;\n\t\tinitNewLine();\n\n\t\tcurrentChar = currentLine[charNum];\n\t\tif (isInHorstmannRunIn && previousNonWSChar == '{' && !isInComment)\n\t\t\tisInLineBreak = false;\n\t\tisInHorstmannRunIn = false;\n\n\t\tif (currentChar == '\\t' && shouldConvertTabs)\n\t\t\tconvertTabToSpaces();\n\n\t\t// check for an empty line inside a command bracket.\n\t\t// if yes then read the next line (calls getNextLine recursively).\n\t\t// must be after initNewLine.\n\t\tif (shouldDeleteEmptyLines\n\t\t        && lineIsEmpty\n\t\t        && isBracketType((*bracketTypeStack)[bracketTypeStack->size() - 1], COMMAND_TYPE))\n\t\t{\n\t\t\tif (!shouldBreakBlocks || previousNonWSChar == '{' || !commentAndHeaderFollows())\n\t\t\t{\n\t\t\t\tisInPreprocessor = isImmediatelyPostPreprocessor;\t\t// restore\n\t\t\t\tlineIsEmpty = false;\n\t\t\t\treturn getNextLine(true);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\telse\n\t{\n\t\tendOfCodeReached = true;\n\t\treturn false;\n\t}\n}\n\n/**\n * jump over the leading white space in the current line,\n * IF the line does not begin a comment or is in a preprocessor definition.\n */\nvoid ASFormatter::initNewLine()\n{\n\tsize_t len = currentLine.length();\n\tsize_t tabSize = getTabLength();\n\tcharNum = 0;\n\n\t// don't trim these\n\tif (isInQuoteContinuation\n\t        || (isInPreprocessor && !getPreprocDefineIndent()))\n\t\treturn;\n\n\t// SQL continuation lines must be adjusted so the leading spaces\n\t// is equivalent to the opening EXEC SQL\n\tif (isInExecSQL)\n\t{\n\t\t// replace leading tabs with spaces\n\t\t// so that continuation indent will be spaces\n\t\tsize_t tabCount_ = 0;\n\t\tsize_t i;\n\t\tfor (i = 0; i < currentLine.length(); i++)\n\t\t{\n\t\t\tif (!isWhiteSpace(currentLine[i]))\t\t// stop at first text\n\t\t\t\tbreak;\n\t\t\tif (currentLine[i] == '\\t')\n\t\t\t{\n\t\t\t\tsize_t numSpaces = tabSize - ((tabCount_ + i) % tabSize);\n\t\t\t\tcurrentLine.replace(i, 1, numSpaces, ' ');\n\t\t\t\ttabCount_++;\n\t\t\t\ti += tabSize - 1;\n\t\t\t}\n\t\t}\n\t\t// this will correct the format if EXEC SQL is not a hanging indent\n\t\ttrimContinuationLine();\n\t\treturn;\n\t}\n\n\t// comment continuation lines must be adjusted so the leading spaces\n\t// is equivalent to the opening comment\n\tif (isInComment)\n\t{\n\t\tif (noTrimCommentContinuation)\n\t\t\tleadingSpaces = tabIncrementIn = 0;\n\t\ttrimContinuationLine();\n\t\treturn;\n\t}\n\n\t// compute leading spaces\n\tisImmediatelyPostCommentOnly = lineIsLineCommentOnly || lineEndsInCommentOnly;\n\tlineIsCommentOnly = false;\n\tlineIsLineCommentOnly = false;\n\tlineEndsInCommentOnly = false;\n\tdoesLineStartComment = false;\n\tcurrentLineBeginsWithBracket = false;\n\tlineIsEmpty = false;\n\tcurrentLineFirstBracketNum = string::npos;\n\ttabIncrementIn = 0;\n\n\t// bypass whitespace at the start of a line\n\t// preprocessor tabs are replaced later in the program\n\tfor (charNum = 0; isWhiteSpace(currentLine[charNum]) && charNum + 1 < (int) len; charNum++)\n\t{\n\t\tif (currentLine[charNum] == '\\t' && !isInPreprocessor)\n\t\t\ttabIncrementIn += tabSize - 1 - ((tabIncrementIn + charNum) % tabSize);\n\t}\n\tleadingSpaces = charNum + tabIncrementIn;\n\n\tif (isSequenceReached(\"/*\"))\n\t{\n\t\tdoesLineStartComment = true;\n\t\tif ((int) currentLine.length() > charNum + 2\n\t\t        && currentLine.find(\"*/\", charNum + 2) != string::npos)\n\t\t\tlineIsCommentOnly = true;\n\t}\n\telse if (isSequenceReached(\"//\"))\n\t{\n\t\tlineIsLineCommentOnly = true;\n\t}\n\telse if (isSequenceReached(\"{\"))\n\t{\n\t\tcurrentLineBeginsWithBracket = true;\n\t\tcurrentLineFirstBracketNum = charNum;\n\t\tsize_t firstText = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\tif (firstText != string::npos)\n\t\t{\n\t\t\tif (currentLine.compare(firstText, 2, \"//\") == 0)\n\t\t\t\tlineIsLineCommentOnly = true;\n\t\t\telse if (currentLine.compare(firstText, 2, \"/*\") == 0\n\t\t\t         || isExecSQL(currentLine, firstText))\n\t\t\t{\n\t\t\t\t// get the extra adjustment\n\t\t\t\tsize_t j;\n\t\t\t\tfor (j = charNum + 1; j < firstText && isWhiteSpace(currentLine[j]); j++)\n\t\t\t\t{\n\t\t\t\t\tif (currentLine[j] == '\\t')\n\t\t\t\t\t\ttabIncrementIn += tabSize - 1 - ((tabIncrementIn + j) % tabSize);\n\t\t\t\t}\n\t\t\t\tleadingSpaces = j + tabIncrementIn;\n\t\t\t\tif (currentLine.compare(firstText, 2, \"/*\") == 0)\n\t\t\t\t\tdoesLineStartComment = true;\n\t\t\t}\n\t\t}\n\t}\n\telse if (isWhiteSpace(currentLine[charNum]) && !(charNum + 1 < (int) currentLine.length()))\n\t{\n\t\tlineIsEmpty = true;\n\t}\n\n\t// do not trim indented preprocessor define (except for comment continuation lines)\n\tif (isInPreprocessor)\n\t{\n\t\tif (!doesLineStartComment)\n\t\t\tleadingSpaces = 0;\n\t\tcharNum = 0;\n\t}\n}\n\n/**\n * Append a character to the current formatted line.\n * The formattedLine split points are updated.\n *\n * @param ch               the character to append.\n * @param canBreakLine     if true, a registered line-break\n */\nvoid ASFormatter::appendChar(char ch, bool canBreakLine)\n{\n\tif (canBreakLine && isInLineBreak)\n\t\tbreakLine();\n\n\tformattedLine.append(1, ch);\n\tisImmediatelyPostCommentOnly = false;\n\tif (maxCodeLength != string::npos)\n\t{\n\t\t// These compares reduce the frequency of function calls.\n\t\tif (isOkToSplitFormattedLine())\n\t\t\tupdateFormattedLineSplitPoints(ch);\n\t\tif (formattedLine.length() > maxCodeLength)\n\t\t\ttestForTimeToSplitFormattedLine();\n\t}\n}\n\n/**\n * Append a string sequence to the current formatted line.\n * The formattedLine split points are NOT updated.\n * But the formattedLine is checked for time to split.\n *\n * @param sequence         the sequence to append.\n * @param canBreakLine     if true, a registered line-break\n */\nvoid ASFormatter::appendSequence(const string &sequence, bool canBreakLine)\n{\n\tif (canBreakLine && isInLineBreak)\n\t\tbreakLine();\n\tformattedLine.append(sequence);\n\tif (formattedLine.length() > maxCodeLength)\n\t\ttestForTimeToSplitFormattedLine();\n}\n\n/**\n * Append an operator sequence to the current formatted line.\n * The formattedLine split points are updated.\n *\n * @param sequence         the sequence to append.\n * @param canBreakLine     if true, a registered line-break\n */\nvoid ASFormatter::appendOperator(const string &sequence, bool canBreakLine)\n{\n\tif (canBreakLine && isInLineBreak)\n\t\tbreakLine();\n\tformattedLine.append(sequence);\n\tif (maxCodeLength != string::npos)\n\t{\n\t\t// These compares reduce the frequency of function calls.\n\t\tif (isOkToSplitFormattedLine())\n\t\t\tupdateFormattedLineSplitPointsOperator(sequence);\n\t\tif (formattedLine.length() > maxCodeLength)\n\t\t\ttestForTimeToSplitFormattedLine();\n\t}\n}\n\n/**\n * append a space to the current formattedline, UNLESS the\n * last character is already a white-space character.\n */\nvoid ASFormatter::appendSpacePad()\n{\n\tint len = formattedLine.length();\n\tif (len > 0 && !isWhiteSpace(formattedLine[len - 1]))\n\t{\n\t\tformattedLine.append(1, ' ');\n\t\tspacePadNum++;\n\t\tif (maxCodeLength != string::npos)\n\t\t{\n\t\t\t// These compares reduce the frequency of function calls.\n\t\t\tif (isOkToSplitFormattedLine())\n\t\t\t\tupdateFormattedLineSplitPoints(' ');\n\t\t\tif (formattedLine.length() > maxCodeLength)\n\t\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * append a space to the current formattedline, UNLESS the\n * next character is already a white-space character.\n */\nvoid ASFormatter::appendSpaceAfter()\n{\n\tint len = currentLine.length();\n\tif (charNum + 1 < len && !isWhiteSpace(currentLine[charNum + 1]))\n\t{\n\t\tformattedLine.append(1, ' ');\n\t\tspacePadNum++;\n\t\tif (maxCodeLength != string::npos)\n\t\t{\n\t\t\t// These compares reduce the frequency of function calls.\n\t\t\tif (isOkToSplitFormattedLine())\n\t\t\t\tupdateFormattedLineSplitPoints(' ');\n\t\t\tif (formattedLine.length() > maxCodeLength)\n\t\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * register a line break for the formatted line.\n */\nvoid ASFormatter::breakLine(bool isSplitLine /*false*/)\n{\n\tisLineReady = true;\n\tisInLineBreak = false;\n\tspacePadNum = nextLineSpacePadNum;\n\tnextLineSpacePadNum = 0;\n\treadyFormattedLine = formattedLine;\n\tformattedLine.erase();\n\t// queue an empty line prepend request if one exists\n\tprependEmptyLine = isPrependPostBlockEmptyLineRequested;\n\n\tif (!isSplitLine)\n\t{\n\t\tformattedLineCommentNum = string::npos;\n\t\tclearFormattedLineSplitPoints();\n\n\t\tif (isAppendPostBlockEmptyLineRequested)\n\t\t{\n\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t\t}\n\t\telse\n\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t}\n}\n\n/**\n * check if the currently reached open-bracket (i.e. '{')\n * opens a:\n * - a definition type block (such as a class or namespace),\n * - a command block (such as a method block)\n * - a static array\n * this method takes for granted that the current character\n * is an opening bracket.\n *\n * @return    the type of the opened block.\n */\nBracketType ASFormatter::getBracketType()\n{\n\tassert(currentChar == '{');\n\n\tBracketType returnVal;\n\n\tif ((previousNonWSChar == '='\n\t        || isBracketType(bracketTypeStack->back(), ARRAY_TYPE))\n\t        && previousCommandChar != ')')\n\t\treturnVal = ARRAY_TYPE;\n\telse if (foundPreDefinitionHeader && previousCommandChar != ')')\n\t{\n\t\treturnVal = DEFINITION_TYPE;\n\t\tif (foundNamespaceHeader)\n\t\t\treturnVal = (BracketType)(returnVal | NAMESPACE_TYPE);\n\t\telse if (foundClassHeader)\n\t\t\treturnVal = (BracketType)(returnVal | CLASS_TYPE);\n\t\telse if (foundStructHeader)\n\t\t\treturnVal = (BracketType)(returnVal | STRUCT_TYPE);\n\t\telse if (foundInterfaceHeader)\n\t\t\treturnVal = (BracketType)(returnVal | INTERFACE_TYPE);\n\t}\n\telse if (isInEnum)\n\t{\n\t\treturnVal = (BracketType)(ARRAY_TYPE | ENUM_TYPE);\n\t}\n\telse\n\t{\n\t\tbool isCommandType = (foundPreCommandHeader\n\t\t                      || foundPreCommandMacro\n\t\t                      || (currentHeader != NULL && isNonParenHeader)\n\t\t                      || (previousCommandChar == ')')\n\t\t                      || (previousCommandChar == ':' && !foundQuestionMark)\n\t\t                      || (previousCommandChar == ';')\n\t\t                      || ((previousCommandChar == '{' || previousCommandChar == '}')\n\t\t                          && isPreviousBracketBlockRelated)\n\t\t                      || (isInClassInitializer\n\t\t                          && (!isLegalNameChar(previousNonWSChar) || foundPreCommandHeader))\n\t\t                      || isInObjCMethodDefinition\n\t\t                      || isInObjCInterface\n\t\t                      || isJavaStaticConstructor\n\t\t                      || isSharpDelegate);\n\n\t\t// C# methods containing 'get', 'set', 'add', and 'remove' do NOT end with parens\n\t\tif (!isCommandType && isSharpStyle() && isNextWordSharpNonParenHeader(charNum + 1))\n\t\t{\n\t\t\tisCommandType = true;\n\t\t\tisSharpAccessor = true;\n\t\t}\n\n\t\tif (isInExternC)\n\t\t\treturnVal = (isCommandType ? COMMAND_TYPE : EXTERN_TYPE);\n\t\telse\n\t\t\treturnVal = (isCommandType ? COMMAND_TYPE : ARRAY_TYPE);\n\t}\n\n\tint foundOneLineBlock = isOneLineBlockReached(currentLine, charNum);\n\t// this assumes each array definition is on a single line\n\t// (foundOneLineBlock == 2) is a one line block followed by a comma\n\tif (foundOneLineBlock == 2 && returnVal == COMMAND_TYPE)\n\t\treturnVal = ARRAY_TYPE;\n\n\tif (foundOneLineBlock > 0)\t\t// found one line block\n\t\treturnVal = (BracketType)(returnVal | SINGLE_LINE_TYPE);\n\n\tif (isBracketType(returnVal, ARRAY_TYPE))\n\t{\n\t\tif (isNonInStatementArrayBracket())\n\t\t{\n\t\t\treturnVal = (BracketType)(returnVal | ARRAY_NIS_TYPE);\n\t\t\tisNonInStatementArray = true;\n\t\t\tisImmediatelyPostNonInStmt = false;\t\t// in case of \"},{\"\n\t\t\tnonInStatementBracket = formattedLine.length() - 1;\n\t\t}\n\t\tif (isUniformInitializerBracket())\n\t\t\treturnVal = (BracketType)(returnVal | INIT_TYPE);\n\t}\n\n\treturn returnVal;\n}\n\n/**\n* check if a colon is a class initializer separator\n*\n* @return        whether it is a class initializer separator\n*/\nbool ASFormatter::isClassInitializer() const\n{\n\tassert(currentLine[charNum] == ':');\n\tassert(previousChar != ':' && peekNextChar() != ':');\t// not part of '::'\n\n\t// this should be similar to ASBeautifier::parseCurrentLine()\n\tbool foundClassInitializer = false;\n\n\tif (foundQuestionMark)\n\t{\n\t\t// do nothing special\n\t}\n\telse if (parenStack->back() > 0)\n\t{\n\t\t// found a 'for' loop or an objective-C statement\n\t\t// so do nothing special\n\t}\n\telse if (isInEnum)\n\t{\n\t\t// found an enum with a base-type\n\t}\n\telse if (isCStyle()\n\t         && !isInCase\n\t         && (previousCommandChar == ')' || foundPreCommandHeader))\n\t{\n\t\t// found a 'class' c'tor initializer\n\t\tfoundClassInitializer = true;\n\t}\n\treturn foundClassInitializer;\n}\n\n/**\n * check if a line is empty\n *\n * @return        whether line is empty\n */\nbool ASFormatter::isEmptyLine(const string &line) const\n{\n\treturn line.find_first_not_of(\" \\t\") == string::npos;\n}\n\n/**\n * Check if the following text is \"C\" as in extern \"C\".\n *\n * @return        whether the statement is extern \"C\"\n */\nbool ASFormatter::isExternC() const\n{\n\t// charNum should be at 'extern'\n\tassert(!isWhiteSpace(currentLine[charNum]));\n\tsize_t startQuote = currentLine.find_first_of(\" \\t\\\"\", charNum);\n\tif (startQuote == string::npos)\n\t\treturn false;\n\tstartQuote = currentLine.find_first_not_of(\" \\t\", startQuote);\n\tif (startQuote == string::npos)\n\t\treturn false;\n\tif (currentLine.compare(startQuote, 3, \"\\\"C\\\"\") != 0)\n\t\treturn false;\n\treturn true;\n}\n\n/**\n * Check if the currently reached '*', '&' or '^' character is\n * a pointer-or-reference symbol, or another operator.\n * A pointer dereference (*) or an \"address of\" character (&)\n * counts as a pointer or reference because it is not an\n * arithmetic operator.\n *\n * @return        whether current character is a reference-or-pointer\n */\nbool ASFormatter::isPointerOrReference() const\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\n\tif (isJavaStyle())\n\t\treturn false;\n\n\tif (isCharImmediatelyPostOperator)\n\t\treturn false;\n\n\t// get the last legal word (may be a number)\n\tstring lastWord = getPreviousWord(currentLine, charNum);\n\tif (lastWord.empty())\n\t\tlastWord = \" \";\n\n\t// check for preceding or following numeric values\n\tstring nextText = peekNextText(currentLine.substr(charNum + 1));\n\tif (nextText.length() == 0)\n\t\tnextText = \" \";\n\tchar nextChar = nextText[0];\n\tif (isDigit(lastWord[0])\n\t        || isDigit(nextChar)\n\t        || nextChar == '!'\n\t        || nextChar == '~')\n\t\treturn false;\n\n\t// check for multiply then a dereference (a * *b)\n\tif (currentChar == '*'\n\t        && charNum < (int) currentLine.length() - 1\n\t        && isWhiteSpace(currentLine[charNum + 1])\n\t        && nextChar == '*')\n\t\treturn false;\n\n\tif ((foundCastOperator && nextChar == '>')\n\t        || isPointerOrReferenceVariable(lastWord))\n\t\treturn true;\n\n\tif (isInClassInitializer\n\t        && previousNonWSChar != '('\n\t        && previousNonWSChar != '{'\n\t        && previousCommandChar != ','\n\t        && nextChar != ')'\n\t        && nextChar != '}')\n\t\treturn false;\n\n\t//check for rvalue reference\n\tif (currentChar == '&' && nextChar == '&')\n\t{\n\t\tstring followingText = peekNextText(currentLine.substr(charNum + 2));\n\t\tif (followingText.length() > 0 && followingText[0] == ')')\n\t\t\treturn true;\n\t\tif (currentHeader != NULL || isInPotentialCalculation)\n\t\t\treturn false;\n\t\tif (parenStack->back() > 0 && isBracketType(bracketTypeStack->back(), COMMAND_TYPE))\n\t\t\treturn false;\n\t\treturn true;\n\t}\n\tif (nextChar == '*'\n\t        || previousNonWSChar == '='\n\t        || previousNonWSChar == '('\n\t        || previousNonWSChar == '['\n\t        || isCharImmediatelyPostReturn\n\t        || isInTemplate\n\t        || isCharImmediatelyPostTemplate\n\t        || currentHeader == &AS_CATCH\n\t        || currentHeader == &AS_FOREACH\n\t        || currentHeader == &AS_QFOREACH)\n\t\treturn true;\n\n\tif (isBracketType(bracketTypeStack->back(), ARRAY_TYPE)\n\t        && isLegalNameChar(lastWord[0])\n\t        && isLegalNameChar(nextChar)\n\t        && previousNonWSChar != ')')\n\t{\n\t\tif (isArrayOperator())\n\t\t\treturn false;\n\t}\n\n\t// checks on operators in parens\n\tif (parenStack->back() > 0\n\t        && isLegalNameChar(lastWord[0])\n\t        && isLegalNameChar(nextChar))\n\t{\n\t\t// if followed by an assignment it is a pointer or reference\n\t\t// if followed by semicolon it is a pointer or reference in range-based for\n\t\tconst string* followingOperator = getFollowingOperator();\n\t\tif (followingOperator\n\t\t        && followingOperator != &AS_MULT\n\t\t        && followingOperator != &AS_BIT_AND)\n\t\t{\n\t\t\tif (followingOperator == &AS_ASSIGN || followingOperator == &AS_COLON)\n\t\t\t\treturn true;\n\t\t\telse\n\t\t\t\treturn false;\n\t\t}\n\n\t\tif (isBracketType(bracketTypeStack->back(), COMMAND_TYPE)\n\t\t        || squareBracketCount > 0)\n\t\t\treturn false;\n\t\telse\n\t\t\treturn true;\n\t}\n\n\t// checks on operators in parens with following '('\n\tif (parenStack->back() > 0\n\t        && nextChar == '('\n\t        && previousNonWSChar != ','\n\t        && previousNonWSChar != '('\n\t        && previousNonWSChar != '!'\n\t        && previousNonWSChar != '&'\n\t        && previousNonWSChar != '*'\n\t        && previousNonWSChar != '|')\n\t\treturn false;\n\n\tif (nextChar == '-'\n\t        || nextChar == '+')\n\t{\n\t\tsize_t nextNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\tif (nextNum != string::npos)\n\t\t{\n\t\t\tif (currentLine.compare(nextNum, 2, \"++\") != 0\n\t\t\t        && currentLine.compare(nextNum, 2, \"--\") != 0)\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tbool isPR = (!isInPotentialCalculation\n\t             || (!isLegalNameChar(previousNonWSChar)\n\t                 && !(previousNonWSChar == ')' && nextChar == '(')\n\t                 && !(previousNonWSChar == ')' && currentChar == '*' && !isImmediatelyPostCast())\n\t                 && previousNonWSChar != ']')\n\t             || (!isWhiteSpace(nextChar)\n\t                 && nextChar != '-'\n\t                 && nextChar != '('\n\t                 && nextChar != '['\n\t                 && !isLegalNameChar(nextChar))\n\t            );\n\n\treturn isPR;\n}\n\n/**\n * Check if the currently reached  '*' or '&' character is\n * a dereferenced pointer or \"address of\" symbol.\n * NOTE: this MUST be a pointer or reference as determined by\n * the function isPointerOrReference().\n *\n * @return        whether current character is a dereference or address of\n */\nbool ASFormatter::isDereferenceOrAddressOf() const\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\n\tif (isCharImmediatelyPostTemplate)\n\t\treturn false;\n\n\tif (previousNonWSChar == '='\n\t        || previousNonWSChar == ','\n\t        || previousNonWSChar == '.'\n\t        || previousNonWSChar == '{'\n\t        || previousNonWSChar == '>'\n\t        || previousNonWSChar == '<'\n\t        || previousNonWSChar == '?'\n\t        || isCharImmediatelyPostLineComment\n\t        || isCharImmediatelyPostComment\n\t        || isCharImmediatelyPostReturn)\n\t\treturn true;\n\n\tchar nextChar = peekNextChar();\n\tif (currentChar == '*' && nextChar == '*')\n\t{\n\t\tif (previousNonWSChar == '(')\n\t\t\treturn true;\n\t\tif ((int) currentLine.length() < charNum + 2)\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\tif (currentChar == '&' && nextChar == '&')\n\t{\n\t\tif (previousNonWSChar == '(' || isInTemplate)\n\t\t\treturn true;\n\t\tif ((int) currentLine.length() < charNum + 2)\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\n\t// check first char on the line\n\tif (charNum == (int) currentLine.find_first_not_of(\" \\t\")\n\t        && (isBracketType(bracketTypeStack->back(), COMMAND_TYPE)\n\t            || parenStack->back() != 0))\n\t\treturn true;\n\n\tstring nextText = peekNextText(currentLine.substr(charNum + 1));\n\tif (nextText.length() > 0)\n\t{\n\t\tif (nextText[0] == ')' || nextText[0] == '>'\n\t\t        || nextText[0] == ',' || nextText[0] == '=')\n\t\t\treturn false;\n\t\tif (nextText[0] == ';')\n\t\t\treturn true;\n\t}\n\n\t// check for reference to a pointer *& (cannot have &*)\n\tif ((currentChar == '*' && nextChar == '&')\n\t        || (previousNonWSChar == '*' && currentChar == '&'))\n\t\treturn false;\n\n\tif (!isBracketType(bracketTypeStack->back(), COMMAND_TYPE)\n\t        && parenStack->back() == 0)\n\t\treturn false;\n\n\tstring lastWord = getPreviousWord(currentLine, charNum);\n\tif (lastWord == \"else\" || lastWord == \"delete\")\n\t\treturn true;\n\n\tif (isPointerOrReferenceVariable(lastWord))\n\t\treturn false;\n\n\tbool isDA = (!(isLegalNameChar(previousNonWSChar) || previousNonWSChar == '>')\n\t             || (nextText.length() > 0 && !isLegalNameChar(nextText[0]) && nextText[0] != '/')\n\t             || (ispunct((unsigned char)previousNonWSChar) && previousNonWSChar != '.')\n\t             || isCharImmediatelyPostReturn);\n\n\treturn isDA;\n}\n\n/**\n * Check if the currently reached  '*' or '&' character is\n * centered with one space on each side.\n * Only spaces are checked, not tabs.\n * If true then a space will be deleted on the output.\n *\n * @return        whether current character is centered.\n */\nbool ASFormatter::isPointerOrReferenceCentered() const\n{\n\tassert(currentLine[charNum] == '*' || currentLine[charNum] == '&' || currentLine[charNum] == '^');\n\n\tint prNum = charNum;\n\tint lineLength = (int) currentLine.length();\n\n\t// check for end of line\n\tif (peekNextChar() == ' ')\n\t\treturn false;\n\n\t// check space before\n\tif (prNum < 1\n\t        || currentLine[prNum - 1] != ' ')\n\t\treturn false;\n\n\t// check no space before that\n\tif (prNum < 2\n\t        || currentLine[prNum - 2] == ' ')\n\t\treturn false;\n\n\t// check for ** or &&\n\tif (prNum + 1 < lineLength\n\t        && (currentLine[prNum + 1] == '*' || currentLine[prNum + 1] == '&'))\n\t\tprNum++;\n\n\t// check space after\n\tif (prNum + 1 <= lineLength\n\t        && currentLine[prNum + 1] != ' ')\n\t\treturn false;\n\n\t// check no space after that\n\tif (prNum + 2 < lineLength\n\t        && currentLine[prNum + 2] == ' ')\n\t\treturn false;\n\n\treturn true;\n}\n\n/**\n * Check if a word is a pointer or reference variable type.\n *\n * @return        whether word is a pointer or reference variable.\n */\nbool ASFormatter::isPointerOrReferenceVariable(string &word) const\n{\n\tif (word == \"char\"\n\t        || word == \"int\"\n\t        || word == \"void\"\n\t        || (word.length() >= 6     // check end of word for _t\n\t            && word.compare(word.length() - 2, 2, \"_t\") == 0)\n\t        || word == \"INT\"\n\t        || word == \"VOID\")\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * check if the currently reached '+' or '-' character is a unary operator\n * this method takes for granted that the current character\n * is a '+' or '-'.\n *\n * @return        whether the current '+' or '-' is a unary operator.\n */\nbool ASFormatter::isUnaryOperator() const\n{\n\tassert(currentChar == '+' || currentChar == '-');\n\n\treturn ((isCharImmediatelyPostReturn || !isLegalNameChar(previousCommandChar))\n\t        && previousCommandChar != '.'\n\t        && previousCommandChar != '\\\"'\n\t        && previousCommandChar != '\\''\n\t        && previousCommandChar != ')'\n\t        && previousCommandChar != ']');\n}\n\n/**\n * check if the currently reached comment is in a 'switch' statement\n *\n * @return        whether the current '+' or '-' is in an exponent.\n */\nbool ASFormatter::isInSwitchStatement() const\n{\n\tassert(isInLineComment || isInComment);\n\tif (preBracketHeaderStack->size() > 0)\n\t\tfor (size_t i = 1; i < preBracketHeaderStack->size(); i++)\n\t\t\tif (preBracketHeaderStack->at(i) == &AS_SWITCH)\n\t\t\t\treturn true;\n\treturn false;\n}\n\n/**\n * check if the currently reached '+' or '-' character is\n * part of an exponent, i.e. 0.2E-5.\n *\n * @return        whether the current '+' or '-' is in an exponent.\n */\nbool ASFormatter::isInExponent() const\n{\n\tassert(currentChar == '+' || currentChar == '-');\n\n\tint formattedLineLength = formattedLine.length();\n\tif (formattedLineLength >= 2)\n\t{\n\t\tchar prevPrevFormattedChar = formattedLine[formattedLineLength - 2];\n\t\tchar prevFormattedChar = formattedLine[formattedLineLength - 1];\n\n\t\treturn ((prevFormattedChar == 'e' || prevFormattedChar == 'E')\n\t\t        && (prevPrevFormattedChar == '.' || isDigit(prevPrevFormattedChar)));\n\t}\n\telse\n\t\treturn false;\n}\n\n/**\n * check if an array bracket should NOT have an in-statement indent\n *\n * @return        the array is non in-statement\n */\nbool ASFormatter::isNonInStatementArrayBracket() const\n{\n\tbool returnVal = false;\n\tchar nextChar = peekNextChar();\n\t// if this opening bracket begins the line there will be no inStatement indent\n\tif (currentLineBeginsWithBracket\n\t        && charNum == (int) currentLineFirstBracketNum\n\t        && nextChar != '}')\n\t\treturnVal = true;\n\t// if an opening bracket ends the line there will be no inStatement indent\n\tif (isWhiteSpace(nextChar)\n\t        || isBeforeAnyLineEndComment(charNum)\n\t        || nextChar == '{')\n\t\treturnVal = true;\n\n\t// Java \"new Type [] {...}\" IS an inStatement indent\n\tif (isJavaStyle() && previousNonWSChar == ']')\n\t\treturnVal = false;\n\n\treturn returnVal;\n}\n\n/**\n * check if a one-line bracket has been reached,\n * i.e. if the currently reached '{' character is closed\n * with a complimentary '}' elsewhere on the current line,\n *.\n * @return     0 = one-line bracket has not been reached.\n *             1 = one-line bracket has been reached.\n *             2 = one-line bracket has been reached and is followed by a comma.\n */\nint ASFormatter::isOneLineBlockReached(string &line, int startChar) const\n{\n\tassert(line[startChar] == '{');\n\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tint bracketCount = 1;\n\tint lineLength = line.length();\n\tchar quoteChar_ = ' ';\n\tchar ch = ' ';\n\tchar prevCh = ' ';\n\n\tfor (int i = startChar + 1; i < lineLength; ++i)\n\t{\n\t\tch = line[i];\n\n\t\tif (isInComment_)\n\t\t{\n\t\t\tif (line.compare(i, 2, \"*/\") == 0)\n\t\t\t{\n\t\t\t\tisInComment_ = false;\n\t\t\t\t++i;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\\\\')\n\t\t{\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInQuote_)\n\t\t{\n\t\t\tif (ch == quoteChar_)\n\t\t\t\tisInQuote_ = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\"' || ch == '\\'')\n\t\t{\n\t\t\tisInQuote_ = true;\n\t\t\tquoteChar_ = ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (line.compare(i, 2, \"//\") == 0)\n\t\t\tbreak;\n\n\t\tif (line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\tisInComment_ = true;\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '{')\n\t\t\t++bracketCount;\n\t\telse if (ch == '}')\n\t\t\t--bracketCount;\n\n\t\tif (bracketCount == 0)\n\t\t{\n\t\t\t// is this an array?\n\t\t\tif (parenStack->back() == 0 && prevCh != '}')\n\t\t\t{\n\t\t\t\tsize_t peekNum = line.find_first_not_of(\" \\t\", i + 1);\n\t\t\t\tif (peekNum != string::npos && line[peekNum] == ',')\n\t\t\t\t\treturn 2;\n\t\t\t}\n\t\t\treturn 1;\n\t\t}\n\t\tif (!isWhiteSpace(ch))\n\t\t\tprevCh = ch;\n\t}\n\n\treturn 0;\n}\n\n/**\n * peek at the next word to determine if it is a C# non-paren header.\n * will look ahead in the input file if necessary.\n *\n * @param  startChar      position on currentLine to start the search\n * @return                true if the next word is get or set.\n */\nbool ASFormatter::isNextWordSharpNonParenHeader(int startChar) const\n{\n\t// look ahead to find the next non-comment text\n\tstring nextText = peekNextText(currentLine.substr(startChar));\n\tif (nextText.length() == 0)\n\t\treturn false;\n\tif (nextText[0] == '[')\n\t\treturn true;\n\tif (!isCharPotentialHeader(nextText, 0))\n\t\treturn false;\n\tif (findKeyword(nextText, 0, AS_GET) || findKeyword(nextText, 0, AS_SET)\n\t        || findKeyword(nextText, 0, AS_ADD) || findKeyword(nextText, 0, AS_REMOVE))\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * peek at the next char to determine if it is an opening bracket.\n * will look ahead in the input file if necessary.\n * this determines a java static constructor.\n *\n * @param startChar     position on currentLine to start the search\n * @return              true if the next word is an opening bracket.\n */\nbool ASFormatter::isNextCharOpeningBracket(int startChar) const\n{\n\tbool retVal = false;\n\tstring nextText = peekNextText(currentLine.substr(startChar));\n\tif (nextText.length() > 0\n\t        && nextText.compare(0, 1, \"{\") == 0)\n\t\tretVal = true;\n\treturn retVal;\n}\n\n/**\n* Check if operator and, pointer, and reference padding is disabled.\n* Disabling is done thru a NOPAD tag in an ending comment.\n*\n* @return              true if the formatting on this line is disabled.\n*/\nbool ASFormatter::isOperatorPaddingDisabled() const\n{\n\tsize_t commentStart = currentLine.find(\"//\", charNum);\n\tif (commentStart == string::npos)\n\t{\n\t\tcommentStart = currentLine.find(\"/*\", charNum);\n\t\t// comment must end on this line\n\t\tif (commentStart != string::npos)\n\t\t{\n\t\t\tsize_t commentEnd = currentLine.find(\"*/\", commentStart + 2);\n\t\t\tif (commentEnd == string::npos)\n\t\t\t\tcommentStart = string::npos;\n\t\t}\n\t}\n\tif (commentStart == string::npos)\n\t\treturn false;\n\tsize_t noPadStart = currentLine.find(\"*NOPAD*\", commentStart);\n\tif (noPadStart == string::npos)\n\t\treturn false;\n\treturn true;\n}\n\n/**\n* Determine if an opening array-type bracket should have a leading space pad.\n* This is to identify C++11 uniform initializers.\n*/\nbool ASFormatter::isUniformInitializerBracket() const\n{\n\tif (isCStyle() && !isInEnum && !isImmediatelyPostPreprocessor)\n\t{\n\t\tif (isInClassInitializer\n\t\t        || isLegalNameChar(previousNonWSChar))\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * get the next non-whitespace substring on following lines, bypassing all comments.\n *\n * @param   firstLine   the first line to check\n * @return  the next non-whitespace substring.\n */\nstring ASFormatter::peekNextText(const string &firstLine, bool endOnEmptyLine /*false*/, bool shouldReset /*false*/) const\n{\n\tbool isFirstLine = true;\n\tbool needReset = shouldReset;\n\tstring nextLine_ = firstLine;\n\tsize_t firstChar = string::npos;\n\n\t// find the first non-blank text, bypassing all comments.\n\tbool isInComment_ = false;\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tneedReset = true;\n\t\t}\n\n\t\tfirstChar = nextLine_.find_first_not_of(\" \\t\");\n\t\tif (firstChar == string::npos)\n\t\t{\n\t\t\tif (endOnEmptyLine && !isInComment_)\n\t\t\t\tbreak;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (nextLine_.compare(firstChar, 2, \"/*\") == 0)\n\t\t{\n\t\t\tfirstChar += 2;\n\t\t\tisInComment_ = true;\n\t\t}\n\n\t\tif (isInComment_)\n\t\t{\n\t\t\tfirstChar = nextLine_.find(\"*/\", firstChar);\n\t\t\tif (firstChar == string::npos)\n\t\t\t\tcontinue;\n\t\t\tfirstChar += 2;\n\t\t\tisInComment_ = false;\n\t\t\tfirstChar = nextLine_.find_first_not_of(\" \\t\", firstChar);\n\t\t\tif (firstChar == string::npos)\n\t\t\t\tcontinue;\n\t\t}\n\n\t\tif (nextLine_.compare(firstChar, 2, \"//\") == 0)\n\t\t\tcontinue;\n\n\t\t// found the next text\n\t\tbreak;\n\t}\n\n\tif (firstChar == string::npos)\n\t\tnextLine_ = \"\";\n\telse\n\t\tnextLine_ = nextLine_.substr(firstChar);\n\tif (needReset)\n\t\tsourceIterator->peekReset();\n\treturn nextLine_;\n}\n\n/**\n * adjust comment position because of adding or deleting spaces\n * the spaces are added or deleted to formattedLine\n * spacePadNum contains the adjustment\n */\nvoid ASFormatter::adjustComments(void)\n{\n\tassert(spacePadNum != 0);\n\tassert(currentLine.compare(charNum, 2, \"//\") == 0\n\t       || currentLine.compare(charNum, 2, \"/*\") == 0);\n\n\t// block comment must be closed on this line with nothing after it\n\tif (currentLine.compare(charNum, 2, \"/*\") == 0)\n\t{\n\t\tsize_t endNum = currentLine.find(\"*/\", charNum + 2);\n\t\tif (endNum == string::npos)\n\t\t\treturn;\n\t\tif (currentLine.find_first_not_of(\" \\t\", endNum + 2) != string::npos)\n\t\t\treturn;\n\t}\n\n\tsize_t len = formattedLine.length();\n\t// don't adjust a tab\n\tif (formattedLine[len - 1] == '\\t')\n\t\treturn;\n\t// if spaces were removed, need to add spaces before the comment\n\tif (spacePadNum < 0)\n\t{\n\t\tint adjust = -spacePadNum;          // make the number positive\n\t\tformattedLine.append(adjust, ' ');\n\t}\n\t// if spaces were added, need to delete extra spaces before the comment\n\t// if cannot be done put the comment one space after the last text\n\telse if (spacePadNum > 0)\n\t{\n\t\tint adjust = spacePadNum;\n\t\tsize_t lastText = formattedLine.find_last_not_of(' ');\n\t\tif (lastText != string::npos\n\t\t        && lastText < len - adjust - 1)\n\t\t\tformattedLine.resize(len - adjust);\n\t\telse if (len > lastText + 2)\n\t\t\tformattedLine.resize(lastText + 2);\n\t\telse if (len < lastText + 2)\n\t\t\tformattedLine.append(len - lastText, ' ');\n\t}\n}\n\n/**\n * append the current bracket inside the end of line comments\n * currentChar contains the bracket, it will be appended to formattedLine\n * formattedLineCommentNum is the comment location on formattedLine\n */\nvoid ASFormatter::appendCharInsideComments(void)\n{\n\tif (formattedLineCommentNum == string::npos)    // does the comment start on the previous line?\n\t{\n\t\tappendCurrentChar();                        // don't attach\n\t\treturn;\n\t}\n\tassert(formattedLine.compare(formattedLineCommentNum, 2, \"//\") == 0\n\t       || formattedLine.compare(formattedLineCommentNum, 2, \"/*\") == 0);\n\n\t// find the previous non space char\n\tsize_t end = formattedLineCommentNum;\n\tsize_t beg = formattedLine.find_last_not_of(\" \\t\", end - 1);\n\tif (beg == string::npos)\n\t{\n\t\tappendCurrentChar();                // don't attach\n\t\treturn;\n\t}\n\tbeg++;\n\n\t// insert the bracket\n\tif (end - beg < 3)                      // is there room to insert?\n\t\tformattedLine.insert(beg, 3 - end + beg, ' ');\n\tif (formattedLine[beg] == '\\t')         // don't pad with a tab\n\t\tformattedLine.insert(beg, 1, ' ');\n\tformattedLine[beg + 1] = currentChar;\n\ttestForTimeToSplitFormattedLine();\n\n\tif (isBeforeComment())\n\t\tbreakLine();\n\telse if (isCharImmediatelyPostLineComment)\n\t\tshouldBreakLineAtNextChar = true;\n\treturn;\n}\n\n/**\n * add or remove space padding to operators\n * the operators and necessary padding will be appended to formattedLine\n * the calling function should have a continue statement after calling this method\n *\n * @param newOperator     the operator to be padded\n */\nvoid ASFormatter::padOperators(const string* newOperator)\n{\n\tassert(shouldPadOperators);\n\tassert(newOperator != NULL);\n\n\tbool shouldPad = (newOperator != &AS_SCOPE_RESOLUTION\n\t                  && newOperator != &AS_PLUS_PLUS\n\t                  && newOperator != &AS_MINUS_MINUS\n\t                  && newOperator != &AS_NOT\n\t                  && newOperator != &AS_BIT_NOT\n\t                  && newOperator != &AS_ARROW\n\t                  && !(newOperator == &AS_COLON && !foundQuestionMark\t\t\t// objC methods\n\t                       && (isInObjCMethodDefinition || isInObjCInterface\n\t                           || isInObjCSelector || squareBracketCount))\n\t                  && !(newOperator == &AS_MINUS && isInExponent())\n\t                  && !((newOperator == &AS_PLUS || newOperator == &AS_MINUS)\t// check for unary plus or minus\n\t                       && (previousNonWSChar == '('\n\t                           || previousNonWSChar == '['\n\t                           || previousNonWSChar == '='\n\t                           || previousNonWSChar == ','))\n\t                  && !(newOperator == &AS_PLUS && isInExponent())\n\t                  && !isCharImmediatelyPostOperator\n//?                   // commented out in release 2.05.1 - doesn't seem to do anything???\n//x                   && !((newOperator == &AS_MULT || newOperator == &AS_BIT_AND || newOperator == &AS_AND)\n//x                        && isPointerOrReference())\n\t                  && !(newOperator == &AS_MULT\n\t                       && (previousNonWSChar == '.'\n\t                           || previousNonWSChar == '>'))    // check for ->\n\t                  && !((isInTemplate || isImmediatelyPostTemplate)\n\t                       && (newOperator == &AS_LS || newOperator == &AS_GR))\n\t                  && !(newOperator == &AS_GCC_MIN_ASSIGN\n\t                       && ASBase::peekNextChar(currentLine, charNum + 1) == '>')\n\t                  && !(newOperator == &AS_GR && previousNonWSChar == '?')\n\t                  && !(newOperator == &AS_QUESTION\t\t\t// check for Java wildcard\n\t                       && (previousNonWSChar == '<'\n\t                           || ASBase::peekNextChar(currentLine, charNum) == '>'\n\t                           || ASBase::peekNextChar(currentLine, charNum) == '.'))\n\t                  && !isInCase\n\t                  && !isInAsm\n\t                  && !isInAsmOneLine\n\t                  && !isInAsmBlock\n\t                 );\n\n\t// pad before operator\n\tif (shouldPad\n\t        && !(newOperator == &AS_COLON\n\t             && (!foundQuestionMark && !isInEnum) && currentHeader != &AS_FOR)\n\t        && !(newOperator == &AS_QUESTION && isSharpStyle() // check for C# nullable type (e.g. int?)\n\t             && currentLine.find(':', charNum + 1) == string::npos)\n\t   )\n\t\tappendSpacePad();\n\tappendOperator(*newOperator);\n\tgoForward(newOperator->length() - 1);\n\n\tcurrentChar = (*newOperator)[newOperator->length() - 1];\n\t// pad after operator\n\t// but do not pad after a '-' that is a unary-minus.\n\tif (shouldPad\n\t        && !isBeforeAnyComment()\n\t        && !(newOperator == &AS_PLUS && isUnaryOperator())\n\t        && !(newOperator == &AS_MINUS && isUnaryOperator())\n\t        && !(currentLine.compare(charNum + 1, 1, AS_SEMICOLON) == 0)\n\t        && !(currentLine.compare(charNum + 1, 2, AS_SCOPE_RESOLUTION) == 0)\n\t        && !(peekNextChar() == ',')\n\t        && !(newOperator == &AS_QUESTION && isSharpStyle() // check for C# nullable type (e.g. int?)\n\t             && peekNextChar() == '[')\n\t   )\n\t\tappendSpaceAfter();\n\n\tpreviousOperator = newOperator;\n\treturn;\n}\n\n/**\n * format pointer or reference\n * currentChar contains the pointer or reference\n * the symbol and necessary padding will be appended to formattedLine\n * the calling function should have a continue statement after calling this method\n *\n * NOTE: Do NOT use appendCurrentChar() in this method. The line should not be\n *       broken once the calculation starts.\n */\nvoid ASFormatter::formatPointerOrReference(void)\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\tint pa = pointerAlignment;\n\tint ra = referenceAlignment;\n\tint itemAlignment = (currentChar == '*' || currentChar == '^') ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra);\n\n\t// check for ** and &&\n\tchar peekedChar = peekNextChar();\n\tif ((currentChar == '*' && peekedChar == '*')\n\t        || (currentChar == '&' && peekedChar == '&'))\n\t{\n\t\tsize_t nextChar = currentLine.find_first_not_of(\" \\t\", charNum + 2);\n\t\tif (nextChar == string::npos)\n\t\t\tpeekedChar = ' ';\n\t\telse\n\t\t\tpeekedChar = currentLine[nextChar];\n\t}\n\t// check for cast\n\tif (peekedChar == ')' || peekedChar == '>' || peekedChar == ',')\n\t{\n\t\tformatPointerOrReferenceCast();\n\t\treturn;\n\t}\n\n\t// check for a padded space and remove it\n\tif (charNum > 0\n\t        && !isWhiteSpace(currentLine[charNum - 1])\n\t        && formattedLine.length() > 0\n\t        && isWhiteSpace(formattedLine[formattedLine.length() - 1]))\n\t{\n\t\tformattedLine.erase(formattedLine.length() - 1);\n\t\tspacePadNum--;\n\t}\n\n\tif (itemAlignment == PTR_ALIGN_TYPE)\n\t{\n\t\tformatPointerOrReferenceToType();\n\t}\n\telse if (itemAlignment == PTR_ALIGN_MIDDLE)\n\t{\n\t\tformatPointerOrReferenceToMiddle();\n\t}\n\telse if (itemAlignment == PTR_ALIGN_NAME)\n\t{\n\t\tformatPointerOrReferenceToName();\n\t}\n\telse\t// pointerAlignment == PTR_ALIGN_NONE\n\t{\n\t\tformattedLine.append(1, currentChar);\n\t}\n}\n\n/**\n * format pointer or reference with align to type\n */\nvoid ASFormatter::formatPointerOrReferenceToType()\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\t// do this before bumping charNum\n\tbool isOldPRCentered = isPointerOrReferenceCentered();\n\n\tsize_t prevCh = formattedLine.find_last_not_of(\" \\t\");\n\tif (prevCh == string::npos)\n\t\tprevCh = 0;\n\tif (formattedLine.length() == 0 || prevCh == formattedLine.length() - 1)\n\t\tformattedLine.append(1, currentChar);\n\telse\n\t{\n\t\t// exchange * or & with character following the type\n\t\t// this may not work every time with a tab character\n\t\tstring charSave = formattedLine.substr(prevCh + 1, 1);\n\t\tformattedLine[prevCh + 1] = currentChar;\n\t\tformattedLine.append(charSave);\n\t}\n\tif (isSequenceReached(\"**\") || isSequenceReached(\"&&\"))\n\t{\n\t\tif (formattedLine.length() == 1)\n\t\t\tformattedLine.append(1, currentChar);\n\t\telse\n\t\t\tformattedLine.insert(prevCh + 2, 1, currentChar);\n\t\tgoForward(1);\n\t}\n\t// if no space after then add one\n\tif (charNum < (int) currentLine.length() - 1\n\t        && !isWhiteSpace(currentLine[charNum + 1])\n\t        && currentLine[charNum + 1] != ')')\n\t\tappendSpacePad();\n\t// if old pointer or reference is centered, remove a space\n\tif (isOldPRCentered\n\t        && isWhiteSpace(formattedLine[formattedLine.length() - 1]))\n\t{\n\t\tformattedLine.erase(formattedLine.length() - 1, 1);\n\t\tspacePadNum--;\n\t}\n\t// update the formattedLine split point\n\tif (maxCodeLength != string::npos)\n\t{\n\t\tsize_t index = formattedLine.length() - 1;\n\t\tif (isWhiteSpace(formattedLine[index]))\n\t\t{\n\t\t\tupdateFormattedLineSplitPointsPointerOrReference(index);\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * format pointer or reference with align in the middle\n */\nvoid ASFormatter::formatPointerOrReferenceToMiddle()\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\t// compute current whitespace before\n\tsize_t wsBefore = currentLine.find_last_not_of(\" \\t\", charNum - 1);\n\tif (wsBefore == string::npos)\n\t\twsBefore = 0;\n\telse\n\t\twsBefore = charNum - wsBefore - 1;\n\tstring sequenceToInsert(1, currentChar);\n\tif (isSequenceReached(\"**\"))\n\t{\n\t\tsequenceToInsert = \"**\";\n\t\tgoForward(1);\n\t}\n\telse if (isSequenceReached(\"&&\"))\n\t{\n\t\tsequenceToInsert = \"&&\";\n\t\tgoForward(1);\n\t}\n\t// if reference to a pointer check for conflicting alignment\n\telse if (currentChar == '*' && peekNextChar() == '&'\n\t         && (referenceAlignment == REF_ALIGN_TYPE\n\t             || referenceAlignment == REF_ALIGN_MIDDLE\n\t             || referenceAlignment == REF_SAME_AS_PTR))\n\t{\n\t\tsequenceToInsert = \"*&\";\n\t\tgoForward(1);\n\t\tfor (size_t i = charNum; i < currentLine.length() - 1 && isWhiteSpace(currentLine[i]); i++)\n\t\t\tgoForward(1);\n\t}\n\t// if a comment follows don't align, just space pad\n\tif (isBeforeAnyComment())\n\t{\n\t\tappendSpacePad();\n\t\tformattedLine.append(sequenceToInsert);\n\t\tappendSpaceAfter();\n\t\treturn;\n\t}\n\t// do this before goForward()\n\tbool isAfterScopeResolution = previousNonWSChar == ':';\n\tsize_t charNumSave = charNum;\n\t// if this is the last thing on the line\n\tif (currentLine.find_first_not_of(\" \\t\", charNum + 1) == string::npos)\n\t{\n\t\tif (wsBefore == 0 && !isAfterScopeResolution)\n\t\t\tformattedLine.append(1, ' ');\n\t\tformattedLine.append(sequenceToInsert);\n\t\treturn;\n\t}\n\t// goForward() to convert tabs to spaces, if necessary,\n\t// and move following characters to preceding characters\n\t// this may not work every time with tab characters\n\tfor (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++)\n\t{\n\t\tgoForward(1);\n\t\tif (formattedLine.length() > 0)\n\t\t\tformattedLine.append(1, currentLine[i]);\n\t\telse\n\t\t\tspacePadNum--;\n\t}\n\t// find space padding after\n\tsize_t wsAfter = currentLine.find_first_not_of(\" \\t\", charNumSave + 1);\n\tif (wsAfter == string::npos || isBeforeAnyComment())\n\t\twsAfter = 0;\n\telse\n\t\twsAfter = wsAfter - charNumSave - 1;\n\t// don't pad before scope resolution operator, but pad after\n\tif (isAfterScopeResolution)\n\t{\n\t\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\t\tformattedLine.insert(lastText + 1, sequenceToInsert);\n\t\tappendSpacePad();\n\t}\n\telse if (formattedLine.length() > 0)\n\t{\n\t\t// whitespace should be at least 2 chars to center\n\t\tif (wsBefore + wsAfter < 2)\n\t\t{\n\t\t\tsize_t charsToAppend = (2 - (wsBefore + wsAfter));\n\t\t\tformattedLine.append(charsToAppend, ' ');\n\t\t\tspacePadNum += charsToAppend;\n\t\t\tif (wsBefore == 0) wsBefore++;\n\t\t\tif (wsAfter == 0) wsAfter++;\n\t\t}\n\t\t// insert the pointer or reference char\n\t\tsize_t padAfter = (wsBefore + wsAfter) / 2;\n\t\tsize_t index = formattedLine.length() - padAfter;\n\t\tformattedLine.insert(index, sequenceToInsert);\n\t}\n\telse\t// formattedLine.length() == 0\n\t{\n\t\tformattedLine.append(sequenceToInsert);\n\t\tif (wsAfter == 0)\n\t\t\twsAfter++;\n\t\tformattedLine.append(wsAfter, ' ');\n\t\tspacePadNum += wsAfter;\n\t}\n\t// update the formattedLine split point after the pointer\n\tif (maxCodeLength != string::npos && formattedLine.length() > 0)\n\t{\n\t\tsize_t index = formattedLine.find_last_not_of(\" \\t\");\n\t\tif (index != string::npos && (index < formattedLine.length() - 1))\n\t\t{\n\t\t\tindex++;\n\t\t\tupdateFormattedLineSplitPointsPointerOrReference(index);\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * format pointer or reference with align to name\n */\nvoid ASFormatter::formatPointerOrReferenceToName()\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\t// do this before bumping charNum\n\tbool isOldPRCentered = isPointerOrReferenceCentered();\n\n\tsize_t startNum = formattedLine.find_last_not_of(\" \\t\");\n\tif (startNum == string::npos)\n\t\tstartNum = 0;\n\tstring sequenceToInsert(1, currentChar);\n\tif (isSequenceReached(\"**\"))\n\t{\n\t\tsequenceToInsert = \"**\";\n\t\tgoForward(1);\n\t}\n\telse if (isSequenceReached(\"&&\"))\n\t{\n\t\tsequenceToInsert = \"&&\";\n\t\tgoForward(1);\n\t}\n\t// if reference to a pointer align both to name\n\telse if (currentChar == '*' && peekNextChar() == '&')\n\t{\n\t\tsequenceToInsert = \"*&\";\n\t\tgoForward(1);\n\t\tfor (size_t i = charNum; i < currentLine.length() - 1 && isWhiteSpace(currentLine[i]); i++)\n\t\t\tgoForward(1);\n\t}\n\tchar peekedChar = peekNextChar();\n\tbool isAfterScopeResolution = previousNonWSChar == ':';\t\t// check for ::\n\t// if this is not the last thing on the line\n\tif (!isBeforeAnyComment()\n\t        && (int) currentLine.find_first_not_of(\" \\t\", charNum + 1) > charNum)\n\t{\n\t\t// goForward() to convert tabs to spaces, if necessary,\n\t\t// and move following characters to preceding characters\n\t\t// this may not work every time with tab characters\n\t\tfor (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++)\n\t\t{\n\t\t\t// if a padded paren follows don't move\n\t\t\tif (shouldPadParensOutside && peekedChar == '(' && !isOldPRCentered)\n\t\t\t{\n\t\t\t\t// empty parens don't count\n\t\t\t\tsize_t start = currentLine.find_first_not_of(\"( \\t\", charNum + 1);\n\t\t\t\tif (start != string::npos && currentLine[start] != ')')\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tgoForward(1);\n\t\t\tif (formattedLine.length() > 0)\n\t\t\t\tformattedLine.append(1, currentLine[i]);\n\t\t\telse\n\t\t\t\tspacePadNum--;\n\t\t}\n\t}\n\t// don't pad before scope resolution operator\n\tif (isAfterScopeResolution)\n\t{\n\t\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\t\tif (lastText != string::npos && lastText + 1 < formattedLine.length())\n\t\t\tformattedLine.erase(lastText + 1);\n\t}\n\t// if no space before * then add one\n\telse if (formattedLine.length() > 0\n\t         && (formattedLine.length() <= startNum + 1\n\t             || !isWhiteSpace(formattedLine[startNum + 1])))\n\t{\n\t\tformattedLine.insert(startNum + 1, 1, ' ');\n\t\tspacePadNum++;\n\t}\n\tappendSequence(sequenceToInsert, false);\n\t// if old pointer or reference is centered, remove a space\n\tif (isOldPRCentered\n\t        && formattedLine.length() > startNum + 1\n\t        && isWhiteSpace(formattedLine[startNum + 1])\n\t        && !isBeforeAnyComment())\n\t{\n\t\tformattedLine.erase(startNum + 1, 1);\n\t\tspacePadNum--;\n\t}\n\t// don't convert to *= or &=\n\tif (peekedChar == '=')\n\t{\n\t\tappendSpaceAfter();\n\t\t// if more than one space before, delete one\n\t\tif (formattedLine.length() > startNum\n\t\t        && isWhiteSpace(formattedLine[startNum + 1])\n\t\t        && isWhiteSpace(formattedLine[startNum + 2]))\n\t\t{\n\t\t\tformattedLine.erase(startNum + 1, 1);\n\t\t\tspacePadNum--;\n\t\t}\n\t}\n\t// update the formattedLine split point\n\tif (maxCodeLength != string::npos)\n\t{\n\t\tsize_t index = formattedLine.find_last_of(\" \\t\");\n\t\tif (index != string::npos\n\t\t        && index < formattedLine.length() - 1\n\t\t        && (formattedLine[index + 1] == '*'\n\t\t            || formattedLine[index + 1] == '&'\n\t\t            || formattedLine[index + 1] == '^'))\n\t\t{\n\t\t\tupdateFormattedLineSplitPointsPointerOrReference(index);\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * format pointer or reference cast\n * currentChar contains the pointer or reference\n * NOTE: the pointers and references in function definitions\n *       are processed as a cast (e.g. void foo(void*, void*))\n *       is processed here.\n */\nvoid ASFormatter::formatPointerOrReferenceCast(void)\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\tint pa = pointerAlignment;\n\tint ra = referenceAlignment;\n\tint itemAlignment = (currentChar == '*' || currentChar == '^') ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra);\n\n\tstring sequenceToInsert(1, currentChar);\n\tif (isSequenceReached(\"**\") || isSequenceReached(\"&&\"))\n\t{\n\t\tgoForward(1);\n\t\tsequenceToInsert.append(1, currentLine[charNum]);\n\t}\n\tif (itemAlignment == PTR_ALIGN_NONE)\n\t{\n\t\tappendSequence(sequenceToInsert, false);\n\t\treturn;\n\t}\n\t// remove preceding whitespace\n\tchar prevCh = ' ';\n\tsize_t prevNum = formattedLine.find_last_not_of(\" \\t\");\n\tif (prevNum != string::npos)\n\t{\n\t\tprevCh = formattedLine[prevNum];\n\t\tif (prevNum + 1 < formattedLine.length()\n\t\t        && isWhiteSpace(formattedLine[prevNum + 1])\n\t\t        && prevCh != '(')\n\t\t{\n\t\t\tspacePadNum -= (formattedLine.length() - 1 - prevNum);\n\t\t\tformattedLine.erase(prevNum + 1);\n\t\t}\n\t}\n\tbool isAfterScopeResolution = previousNonWSChar == ':';\n\tif ((itemAlignment == PTR_ALIGN_MIDDLE || itemAlignment == PTR_ALIGN_NAME)\n\t        && !isAfterScopeResolution && prevCh != '(')\n\t{\n\t\tappendSpacePad();\n\t\t// in this case appendSpacePad may or may not update the split point\n\t\tif (maxCodeLength != string::npos && formattedLine.length() > 0)\n\t\t\tupdateFormattedLineSplitPointsPointerOrReference(formattedLine.length() - 1);\n\t\tappendSequence(sequenceToInsert, false);\n\t}\n\telse\n\t\tappendSequence(sequenceToInsert, false);\n\t// remove trailing whitespace if comma follows\n\tchar nextChar = peekNextChar();\n\tif (nextChar == ',')\n\t{\n\t\twhile (isWhiteSpace(currentLine[charNum + 1]))\n\t\t{\n\t\t\tgoForward(1);\n\t\t\tspacePadNum--;\n\t\t}\n\t}\n}\n\n/**\n * add or remove space padding to parens\n * currentChar contains the paren\n * the parens and necessary padding will be appended to formattedLine\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::padParens(void)\n{\n\tassert(shouldPadParensOutside || shouldPadParensInside || shouldUnPadParens || shouldPadFirstParen);\n\tassert(currentChar == '(' || currentChar == ')');\n\n\tint spacesOutsideToDelete = 0;\n\tint spacesInsideToDelete = 0;\n\n\tif (currentChar == '(')\n\t{\n\t\tspacesOutsideToDelete = formattedLine.length() - 1;\n\t\tspacesInsideToDelete = 0;\n\n\t\t// compute spaces outside the opening paren to delete\n\t\tif (shouldUnPadParens)\n\t\t{\n\t\t\tchar lastChar = ' ';\n\t\t\tbool prevIsParenHeader = false;\n\t\t\tsize_t i = formattedLine.find_last_not_of(\" \\t\");\n\t\t\tif (i != string::npos)\n\t\t\t{\n\t\t\t\t// if last char is a bracket the previous whitespace is an indent\n\t\t\t\tif (formattedLine[i] == '{')\n\t\t\t\t\tspacesOutsideToDelete = 0;\n\t\t\t\telse if (isCharImmediatelyPostPointerOrReference)\n\t\t\t\t\tspacesOutsideToDelete = 0;\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tspacesOutsideToDelete -= i;\n\t\t\t\t\tlastChar = formattedLine[i];\n\t\t\t\t\t// if previous word is a header, it will be a paren header\n\t\t\t\t\tstring prevWord = getPreviousWord(formattedLine, formattedLine.length());\n\t\t\t\t\tconst string* prevWordH = NULL;\n\t\t\t\t\tif (shouldPadHeader\n\t\t\t\t\t        && prevWord.length() > 0\n\t\t\t\t\t        && isCharPotentialHeader(prevWord, 0))\n\t\t\t\t\t\tprevWordH = ASBeautifier::findHeader(prevWord, 0, headers);\n\t\t\t\t\tif (prevWordH != NULL)\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\telse if (prevWord == \"return\")  // don't unpad\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\telse if (isCStyle() && prevWord == \"throw\" && shouldPadHeader) // don't unpad\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\telse if (prevWord == \"and\" || prevWord == \"or\")  // don't unpad\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\t// don't unpad variables\n\t\t\t\t\telse if (prevWord == \"bool\"\n\t\t\t\t\t         || prevWord == \"int\"\n\t\t\t\t\t         || prevWord == \"void\"\n\t\t\t\t\t         || prevWord == \"void*\"\n\t\t\t\t\t         || prevWord == \"char\"\n\t\t\t\t\t         || prevWord == \"long\"\n\t\t\t\t\t         || prevWord == \"double\"\n\t\t\t\t\t         || prevWord == \"float\"\n\t\t\t\t\t         || (prevWord.length() >= 4     // check end of word for _t\n\t\t\t\t\t             && prevWord.compare(prevWord.length() - 2, 2, \"_t\") == 0)\n\t\t\t\t\t         || prevWord == \"Int32\"\n\t\t\t\t\t         || prevWord == \"UInt32\"\n\t\t\t\t\t         || prevWord == \"Int64\"\n\t\t\t\t\t         || prevWord == \"UInt64\"\n\t\t\t\t\t         || prevWord == \"BOOL\"\n\t\t\t\t\t         || prevWord == \"DWORD\"\n\t\t\t\t\t         || prevWord == \"HWND\"\n\t\t\t\t\t         || prevWord == \"INT\"\n\t\t\t\t\t         || prevWord == \"LPSTR\"\n\t\t\t\t\t         || prevWord == \"VOID\"\n\t\t\t\t\t         || prevWord == \"LPVOID\"\n\t\t\t\t\t        )\n\t\t\t\t\t{\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// do not unpad operators, but leave them if already padded\n\t\t\tif (shouldPadParensOutside || prevIsParenHeader)\n\t\t\t\tspacesOutsideToDelete--;\n\t\t\telse if (lastChar == '|'          // check for ||\n\t\t\t         || lastChar == '&'       // check for &&\n\t\t\t         || lastChar == ','\n\t\t\t         || (lastChar == '(' && shouldPadParensInside)\n\t\t\t         || (lastChar == '>' && !foundCastOperator)\n\t\t\t         || lastChar == '<'\n\t\t\t         || lastChar == '?'\n\t\t\t         || lastChar == ':'\n\t\t\t         || lastChar == ';'\n\t\t\t         || lastChar == '='\n\t\t\t         || lastChar == '+'\n\t\t\t         || lastChar == '-'\n\t\t\t         || lastChar == '*'\n\t\t\t         || lastChar == '/'\n\t\t\t         || lastChar == '%'\n\t\t\t         || lastChar == '^'\n\t\t\t        )\n\t\t\t\tspacesOutsideToDelete--;\n\n\t\t\tif (spacesOutsideToDelete > 0)\n\t\t\t{\n\t\t\t\tformattedLine.erase(i + 1, spacesOutsideToDelete);\n\t\t\t\tspacePadNum -= spacesOutsideToDelete;\n\t\t\t}\n\t\t}\n\n\t\t// pad open paren outside\n\t\tchar peekedCharOutside = peekNextChar();\n\t\tif (shouldPadFirstParen && previousChar != '(' && peekedCharOutside != ')')\n\t\t\tappendSpacePad();\n\t\telse if (shouldPadParensOutside)\n\t\t{\n\t\t\tif (!(currentChar == '(' && peekedCharOutside == ')'))\n\t\t\t\tappendSpacePad();\n\t\t}\n\n\t\tappendCurrentChar();\n\n\t\t// unpad open paren inside\n\t\tif (shouldUnPadParens)\n\t\t{\n\t\t\tsize_t j = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\t\tif (j != string::npos)\n\t\t\t\tspacesInsideToDelete = j - charNum - 1;\n\t\t\tif (shouldPadParensInside)\n\t\t\t\tspacesInsideToDelete--;\n\t\t\tif (spacesInsideToDelete > 0)\n\t\t\t{\n\t\t\t\tcurrentLine.erase(charNum + 1, spacesInsideToDelete);\n\t\t\t\tspacePadNum -= spacesInsideToDelete;\n\t\t\t}\n\t\t\t// convert tab to space if requested\n\t\t\tif (shouldConvertTabs\n\t\t\t        && (int) currentLine.length() > charNum + 1\n\t\t\t        && currentLine[charNum + 1] == '\\t')\n\t\t\t\tcurrentLine[charNum + 1] = ' ';\n\t\t}\n\n\t\t// pad open paren inside\n\t\tchar peekedCharInside = peekNextChar();\n\t\tif (shouldPadParensInside)\n\t\t\tif (!(currentChar == '(' && peekedCharInside == ')'))\n\t\t\t\tappendSpaceAfter();\n\t}\n\telse if (currentChar == ')')\n\t{\n\t\t// unpad close paren inside\n\t\tif (shouldUnPadParens)\n\t\t{\n\t\t\tspacesInsideToDelete = formattedLine.length();\n\t\t\tsize_t i = formattedLine.find_last_not_of(\" \\t\");\n\t\t\tif (i != string::npos)\n\t\t\t\tspacesInsideToDelete = formattedLine.length() - 1 - i;\n\t\t\tif (shouldPadParensInside)\n\t\t\t\tspacesInsideToDelete--;\n\t\t\tif (spacesInsideToDelete > 0)\n\t\t\t{\n\t\t\t\tformattedLine.erase(i + 1, spacesInsideToDelete);\n\t\t\t\tspacePadNum -= spacesInsideToDelete;\n\t\t\t}\n\t\t}\n\n\t\t// pad close paren inside\n\t\tif (shouldPadParensInside)\n\t\t\tif (!(previousChar == '(' && currentChar == ')'))\n\t\t\t\tappendSpacePad();\n\n\t\tappendCurrentChar();\n\n\t\t// unpad close paren outside\n\t\t// close parens outside are left unchanged\n\t\tif (shouldUnPadParens)\n\t\t{\n\t\t\t//spacesOutsideToDelete = 0;\n\t\t\t//size_t j = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\t\t//if (j != string::npos)\n\t\t\t//\tspacesOutsideToDelete = j - charNum - 1;\n\t\t\t//if (shouldPadParensOutside)\n\t\t\t//\tspacesOutsideToDelete--;\n\n\t\t\t//if (spacesOutsideToDelete > 0)\n\t\t\t//{\n\t\t\t//\tcurrentLine.erase(charNum + 1, spacesOutsideToDelete);\n\t\t\t//\tspacePadNum -= spacesOutsideToDelete;\n\t\t\t//}\n\t\t}\n\n\t\t// pad close paren outside\n\t\tchar peekedCharOutside = peekNextChar();\n\t\tif (shouldPadParensOutside)\n\t\t\tif (peekedCharOutside != ';'\n\t\t\t        && peekedCharOutside != ','\n\t\t\t        && peekedCharOutside != '.'\n\t\t\t        && peekedCharOutside != '+'    // check for ++\n\t\t\t        && peekedCharOutside != '-'    // check for --\n\t\t\t        && peekedCharOutside != ']')\n\t\t\t\tappendSpaceAfter();\n\t}\n\treturn;\n}\n\n/**\n * format opening bracket as attached or broken\n * currentChar contains the bracket\n * the brackets will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n *\n * @param bracketType    the type of bracket to be formatted.\n */\nvoid ASFormatter::formatOpeningBracket(BracketType bracketType)\n{\n\tassert(!isBracketType(bracketType, ARRAY_TYPE));\n\tassert(currentChar == '{');\n\n\tparenStack->push_back(0);\n\n\tbool breakBracket = isCurrentBracketBroken();\n\n\tif (breakBracket)\n\t{\n\t\tif (isBeforeAnyComment() && isOkToBreakBlock(bracketType))\n\t\t{\n\t\t\t// if comment is at line end leave the comment on this line\n\t\t\tif (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBracket)\n\t\t\t{\n\t\t\t\tcurrentChar = ' ';              // remove bracket from current line\n\t\t\t\tif (parenStack->size() > 1)\n\t\t\t\t\tparenStack->pop_back();\n\t\t\t\tcurrentLine[charNum] = currentChar;\n\t\t\t\tappendOpeningBracket = true;    // append bracket to following line\n\t\t\t}\n\t\t\t// else put comment after the bracket\n\t\t\telse if (!isBeforeMultipleLineEndComments(charNum))\n\t\t\t\tbreakLine();\n\t\t}\n\t\telse if (!isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\t\tbreakLine();\n\t\telse if (shouldBreakOneLineBlocks && peekNextChar() != '}')\n\t\t\tbreakLine();\n\t\telse if (!isInLineBreak)\n\t\t\tappendSpacePad();\n\n\t\tappendCurrentChar();\n\n\t\t// should a following comment break from the bracket?\n\t\t// must break the line AFTER the bracket\n\t\tif (isBeforeComment()\n\t\t        && formattedLine.length() > 0\n\t\t        && formattedLine[0] == '{'\n\t\t        && isOkToBreakBlock(bracketType)\n\t\t        && (bracketFormatMode == BREAK_MODE\n\t\t            || bracketFormatMode == LINUX_MODE\n\t\t            || bracketFormatMode == STROUSTRUP_MODE))\n\t\t{\n\t\t\tshouldBreakLineAtNextChar = true;\n\t\t}\n\t}\n\telse    // attach bracket\n\t{\n\t\t// are there comments before the bracket?\n\t\tif (isCharImmediatelyPostComment || isCharImmediatelyPostLineComment)\n\t\t{\n\t\t\tif (isOkToBreakBlock(bracketType)\n\t\t\t        && !(isCharImmediatelyPostComment && isCharImmediatelyPostLineComment)\t// don't attach if two comments on the line\n\t\t\t        && !isImmediatelyPostPreprocessor\n//\t\t\t        && peekNextChar() != '}'\t\t// don't attach { }\t\t// removed release 2.03\n\t\t\t        && previousCommandChar != '{'\t// don't attach { {\n\t\t\t        && previousCommandChar != '}'\t// don't attach } {\n\t\t\t        && previousCommandChar != ';')\t// don't attach ; {\n\t\t\t{\n\t\t\t\tappendCharInsideComments();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t\t}\n\t\t}\n\t\telse if (previousCommandChar == '{'\n\t\t         || (previousCommandChar == '}' && !isInClassInitializer)\n\t\t         || previousCommandChar == ';')\t\t// '}' , ';' chars added for proper handling of '{' immediately after a '}' or ';'\n\t\t{\n\t\t\tappendCurrentChar();\t\t\t\t\t// don't attach\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// if a blank line precedes this don't attach\n\t\t\tif (isEmptyLine(formattedLine))\n\t\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t\telse if (isOkToBreakBlock(bracketType)\n\t\t\t         && !(isImmediatelyPostPreprocessor\n\t\t\t              && currentLineBeginsWithBracket))\n\t\t\t{\n\t\t\t\tif (peekNextChar() != '}')\n\t\t\t\t{\n\t\t\t\t\tappendSpacePad();\n\t\t\t\t\tappendCurrentChar(false);\t\t\t\t// OK to attach\n\t\t\t\t\ttestForTimeToSplitFormattedLine();\t\t// line length will have changed\n\t\t\t\t\t// should a following comment attach with the bracket?\n\t\t\t\t\t// insert spaces to reposition the comment\n\t\t\t\t\tif (isBeforeComment()\n\t\t\t\t\t        && !isBeforeMultipleLineEndComments(charNum)\n\t\t\t\t\t        && (!isBeforeAnyLineEndComment(charNum)\t|| currentLineBeginsWithBracket))\n\t\t\t\t\t{\n\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\t\tcurrentLine.insert(charNum + 1, charNum + 1, ' ');\n\t\t\t\t\t}\n\t\t\t\t\telse if (!isBeforeAnyComment())\t\t// added in release 2.03\n\t\t\t\t\t{\n\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (currentLineBeginsWithBracket && charNum == (int) currentLineFirstBracketNum)\n\t\t\t\t\t{\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\tappendCurrentChar(false);\t\t// attach\n\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\tappendCurrentChar();\t\t// don't attach\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!isInLineBreak)\n\t\t\t\t\tappendSpacePad();\n\t\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * format closing bracket\n * currentChar contains the bracket\n * the calling function should have a continue statement after calling this method\n *\n * @param bracketType    the type of the opening bracket for this closing bracket.\n */\nvoid ASFormatter::formatClosingBracket(BracketType bracketType)\n{\n\tassert(!isBracketType(bracketType, ARRAY_TYPE));\n\tassert(currentChar == '}');\n\n\t// parenStack must contain one entry\n\tif (parenStack->size() > 1)\n\t\tparenStack->pop_back();\n\n\t// mark state of immediately after empty block\n\t// this state will be used for locating brackets that appear immediately AFTER an empty block (e.g. '{} \\n}').\n\tif (previousCommandChar == '{')\n\t\tisImmediatelyPostEmptyBlock = true;\n\n\tif (attachClosingBracketMode)\n\t{\n\t\t// for now, namespaces and classes will be attached. Uncomment the lines below to break.\n\t\tif ((isEmptyLine(formattedLine)\t\t\t// if a blank line precedes this\n\t\t        || isCharImmediatelyPostLineComment\n\t\t        || isCharImmediatelyPostComment\n\t\t        || (isImmediatelyPostPreprocessor && (int) currentLine.find_first_not_of(\" \\t\") == charNum)\n//\t\t        || (isBracketType(bracketType, CLASS_TYPE) && isOkToBreakBlock(bracketType) && previousNonWSChar != '{')\n//\t\t        || (isBracketType(bracketType, NAMESPACE_TYPE) && isOkToBreakBlock(bracketType) && previousNonWSChar != '{')\n\t\t    )\n\t\t        && (!isBracketType(bracketType, SINGLE_LINE_TYPE) || isOkToBreakBlock(bracketType)))\n\t\t{\n\t\t\tbreakLine();\n\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (previousNonWSChar != '{'\n\t\t\t        && (!isBracketType(bracketType, SINGLE_LINE_TYPE) || isOkToBreakBlock(bracketType)))\n\t\t\t\tappendSpacePad();\n\t\t\tappendCurrentChar(false);\t\t\t// attach\n\t\t}\n\t}\n\telse if ((!(previousCommandChar == '{' && isPreviousBracketBlockRelated))\t// this '}' does not close an empty block\n\t         && isOkToBreakBlock(bracketType))\t\t\t\t\t\t\t\t\t// astyle is allowed to break one line blocks\n\t{\n\t\tbreakLine();\n\t\tappendCurrentChar();\n\t}\n\telse\n\t{\n\t\tappendCurrentChar();\n\t}\n\n\t// if a declaration follows a definition, space pad\n\tif (isLegalNameChar(peekNextChar()))\n\t\tappendSpaceAfter();\n\n\tif (shouldBreakBlocks\n\t        && currentHeader != NULL\n\t        && !isHeaderInMultiStatementLine\n\t        && parenStack->back() == 0)\n\t{\n\t\tif (currentHeader == &AS_CASE || currentHeader == &AS_DEFAULT)\n\t\t{\n\t\t\t// do not yet insert a line if \"break\" statement is outside the brackets\n\t\t\tstring nextText = peekNextText(currentLine.substr(charNum + 1));\n\t\t\tif (nextText.length() > 0\n\t\t\t        && nextText.substr(0, 5) != \"break\")\n\t\t\t\tisAppendPostBlockEmptyLineRequested = true;\n\t\t}\n\t\telse\n\t\t\tisAppendPostBlockEmptyLineRequested = true;\n\t}\n}\n\n/**\n * format array brackets as attached or broken\n * determine if the brackets can have an inStatement indent\n * currentChar contains the bracket\n * the brackets will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n *\n * @param bracketType            the type of bracket to be formatted, must be an ARRAY_TYPE.\n * @param isOpeningArrayBracket  indicates if this is the opening bracket for the array block.\n */\nvoid ASFormatter::formatArrayBrackets(BracketType bracketType, bool isOpeningArrayBracket)\n{\n\tassert(isBracketType(bracketType, ARRAY_TYPE));\n\tassert(currentChar == '{' || currentChar == '}');\n\n\tif (currentChar == '{')\n\t{\n\t\t// is this the first opening bracket in the array?\n\t\tif (isOpeningArrayBracket)\n\t\t{\n\t\t\tif (bracketFormatMode == ATTACH_MODE\n\t\t\t        || bracketFormatMode == LINUX_MODE\n\t\t\t        || bracketFormatMode == STROUSTRUP_MODE)\n\t\t\t{\n\t\t\t\t// don't attach to a preprocessor directive or '\\' line\n\t\t\t\tif ((isImmediatelyPostPreprocessor\n\t\t\t\t        || (formattedLine.length() > 0\n\t\t\t\t            && formattedLine[formattedLine.length() - 1] == '\\\\'))\n\t\t\t\t        && currentLineBeginsWithBracket)\n\t\t\t\t{\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t\tappendCurrentChar();                // don't attach\n\t\t\t\t}\n\t\t\t\telse if (isCharImmediatelyPostComment)\n\t\t\t\t{\n\t\t\t\t\t// TODO: attach bracket to line-end comment\n\t\t\t\t\tappendCurrentChar();                // don't attach\n\t\t\t\t}\n\t\t\t\telse if (isCharImmediatelyPostLineComment && !isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\t\t\t{\n\t\t\t\t\tappendCharInsideComments();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// if a blank line precedes this don't attach\n\t\t\t\t\tif (isEmptyLine(formattedLine))\n\t\t\t\t\t\tappendCurrentChar();            // don't attach\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// if bracket is broken or not an assignment\n\t\t\t\t\t\tif (currentLineBeginsWithBracket\n\t\t\t\t\t\t        && !isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\t\tappendCurrentChar(false);\t\t\t\t// OK to attach\n\t\t\t\t\t\t\t// TODO: debug the following line\n\t\t\t\t\t\t\ttestForTimeToSplitFormattedLine();\t\t// line length will have changed\n\n\t\t\t\t\t\t\tif (currentLineBeginsWithBracket\n\t\t\t\t\t\t\t        && (int) currentLineFirstBracketNum == charNum)\n\t\t\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (previousNonWSChar != '(')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// don't space pad C++11 uniform initialization\n\t\t\t\t\t\t\t\tif (!isBracketType(bracketType, INIT_TYPE))\n\t\t\t\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tappendCurrentChar();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (bracketFormatMode == BREAK_MODE)\n\t\t\t{\n\t\t\t\tif (isWhiteSpace(peekNextChar()))\n\t\t\t\t\tbreakLine();\n\t\t\t\telse if (isBeforeAnyComment())\n\t\t\t\t{\n\t\t\t\t\t// do not break unless comment is at line end\n\t\t\t\t\tif (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBracket)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentChar = ' ';              // remove bracket from current line\n\t\t\t\t\t\tappendOpeningBracket = true;    // append bracket to following line\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isInLineBreak && previousNonWSChar != '(')\n\t\t\t\t{\n\t\t\t\t\t// don't space pad C++11 uniform initialization\n\t\t\t\t\tif (!isBracketType(bracketType, INIT_TYPE))\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t}\n\t\t\t\tappendCurrentChar();\n\n\t\t\t\tif (currentLineBeginsWithBracket\n\t\t\t\t        && (int) currentLineFirstBracketNum == charNum\n\t\t\t\t        && !isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t}\n\t\t\telse if (bracketFormatMode == RUN_IN_MODE)\n\t\t\t{\n\t\t\t\tif (isWhiteSpace(peekNextChar()))\n\t\t\t\t\tbreakLine();\n\t\t\t\telse if (isBeforeAnyComment())\n\t\t\t\t{\n\t\t\t\t\t// do not break unless comment is at line end\n\t\t\t\t\tif (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBracket)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentChar = ' ';              // remove bracket from current line\n\t\t\t\t\t\tappendOpeningBracket = true;    // append bracket to following line\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isInLineBreak && previousNonWSChar != '(')\n\t\t\t\t{\n\t\t\t\t\t// don't space pad C++11 uniform initialization\n\t\t\t\t\tif (!isBracketType(bracketType, INIT_TYPE))\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t}\n\t\t\t\tappendCurrentChar();\n\t\t\t}\n\t\t\telse if (bracketFormatMode == NONE_MODE)\n\t\t\t{\n\t\t\t\tif (currentLineBeginsWithBracket\n\t\t\t\t        && charNum == (int) currentLineFirstBracketNum)\n\t\t\t\t{\n\t\t\t\t\tappendCurrentChar();                // don't attach\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (previousNonWSChar != '(')\n\t\t\t\t\t{\n\t\t\t\t\t\t// don't space pad C++11 uniform initialization\n\t\t\t\t\t\tif (!isBracketType(bracketType, INIT_TYPE))\n\t\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t}\n\t\t\t\t\tappendCurrentChar(false);           // OK to attach\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\t     // not the first opening bracket\n\t\t{\n\t\t\tif (bracketFormatMode == RUN_IN_MODE)\n\t\t\t{\n\t\t\t\tif (previousNonWSChar == '{'\n\t\t\t\t        && bracketTypeStack->size() > 2\n\t\t\t\t        && !isBracketType((*bracketTypeStack)[bracketTypeStack->size() - 2], SINGLE_LINE_TYPE))\n\t\t\t\t\tformatArrayRunIn();\n\t\t\t}\n\t\t\telse if (!isInLineBreak\n\t\t\t         && !isWhiteSpace(peekNextChar())\n\t\t\t         && previousNonWSChar == '{'\n\t\t\t         && bracketTypeStack->size() > 2\n\t\t\t         && !isBracketType((*bracketTypeStack)[bracketTypeStack->size() - 2], SINGLE_LINE_TYPE))\n\t\t\t\tformatArrayRunIn();\n\n\t\t\tappendCurrentChar();\n\t\t}\n\t}\n\telse if (currentChar == '}')\n\t{\n\t\tif (attachClosingBracketMode)\n\t\t{\n\t\t\tif (isEmptyLine(formattedLine)\t\t\t// if a blank line precedes this\n\t\t\t        || isImmediatelyPostPreprocessor\n\t\t\t        || isCharImmediatelyPostLineComment\n\t\t\t        || isCharImmediatelyPostComment)\n\t\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t\telse\n\t\t\t{\n\t\t\t\tappendSpacePad();\n\t\t\t\tappendCurrentChar(false);\t\t\t// attach\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// does this close the first opening bracket in the array?\n\t\t\t// must check if the block is still a single line because of anonymous statements\n\t\t\tif (!isBracketType(bracketType, INIT_TYPE)\n\t\t\t        && (!isBracketType(bracketType, SINGLE_LINE_TYPE)\n\t\t\t            || formattedLine.find('{') == string::npos))\n\t\t\t\tbreakLine();\n\t\t\tappendCurrentChar();\n\t\t}\n\n\t\t// if a declaration follows an enum definition, space pad\n\t\tchar peekedChar = peekNextChar();\n\t\tif (isLegalNameChar(peekedChar)\n\t\t        || peekedChar == '[')\n\t\t\tappendSpaceAfter();\n\t}\n}\n\n/**\n * determine if a run-in can be attached.\n * if it can insert the indents in formattedLine and reset the current line break.\n */\nvoid ASFormatter::formatRunIn()\n{\n\tassert(bracketFormatMode == RUN_IN_MODE || bracketFormatMode == NONE_MODE);\n\n\t// keep one line blocks returns true without indenting the run-in\n\tif (!isOkToBreakBlock(bracketTypeStack->back()))\n\t\treturn; // true;\n\n\t// make sure the line begins with a bracket\n\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\tif (lastText == string::npos || formattedLine[lastText] != '{')\n\t\treturn; // false;\n\n\t// make sure the bracket is broken\n\tif (formattedLine.find_first_not_of(\" \\t{\") != string::npos)\n\t\treturn; // false;\n\n\tif (isBracketType(bracketTypeStack->back(), NAMESPACE_TYPE))\n\t\treturn; // false;\n\n\tbool extraIndent = false;\n\tbool extraHalfIndent = false;\n\tisInLineBreak = true;\n\n\t// cannot attach a class modifier without indent-classes\n\tif (isCStyle()\n\t        && isCharPotentialHeader(currentLine, charNum)\n\t        && (isBracketType(bracketTypeStack->back(), CLASS_TYPE)\n\t            || (isBracketType(bracketTypeStack->back(), STRUCT_TYPE)\n\t                && isInIndentableStruct)))\n\t{\n\t\tif (findKeyword(currentLine, charNum, AS_PUBLIC)\n\t\t        || findKeyword(currentLine, charNum, AS_PRIVATE)\n\t\t        || findKeyword(currentLine, charNum, AS_PROTECTED))\n\t\t{\n\t\t\tif (getModifierIndent())\n\t\t\t\textraHalfIndent = true;\n\t\t\telse if (!getClassIndent())\n\t\t\t\treturn; // false;\n\t\t}\n\t\telse if (getClassIndent())\n\t\t\textraIndent = true;\n\t}\n\n\t// cannot attach a 'case' statement without indent-switches\n\tif (!getSwitchIndent()\n\t        && isCharPotentialHeader(currentLine, charNum)\n\t        && (findKeyword(currentLine, charNum, AS_CASE)\n\t            || findKeyword(currentLine, charNum, AS_DEFAULT)))\n\t\treturn; // false;\n\n\t// extra indent for switch statements\n\tif (getSwitchIndent()\n\t        && !preBracketHeaderStack->empty()\n\t        && preBracketHeaderStack->back() == &AS_SWITCH\n\t        && ((isLegalNameChar(currentChar)\n\t             && !findKeyword(currentLine, charNum, AS_CASE))))\n\t\textraIndent = true;\n\n\tisInLineBreak = false;\n\t// remove for extra whitespace\n\tif (formattedLine.length() > lastText + 1\n\t        && formattedLine.find_first_not_of(\" \\t\", lastText + 1) == string::npos)\n\t\tformattedLine.erase(lastText + 1);\n\n\tif (extraHalfIndent)\n\t{\n\t\tint indentLength_ = getIndentLength();\n\t\thorstmannIndentChars = indentLength_ / 2;\n\t\tformattedLine.append(horstmannIndentChars - 1, ' ');\n\t}\n\telse if (getForceTabIndentation() && getIndentLength() != getTabLength())\n\t{\n\t\t// insert the space indents\n\t\tstring indent;\n\t\tint indentLength_ = getIndentLength();\n\t\tint tabLength_ = getTabLength();\n\t\tindent.append(indentLength_, ' ');\n\t\tif (extraIndent)\n\t\t\tindent.append(indentLength_, ' ');\n\t\t// replace spaces indents with tab indents\n\t\tsize_t tabCount = indent.length() / tabLength_;\t\t// truncate extra spaces\n\t\tindent.erase(0U, tabCount * tabLength_);\n\t\tindent.insert(0U, tabCount, '\\t');\n\t\thorstmannIndentChars = indentLength_;\n\t\tif (indent[0] == ' ')\t\t\t// allow for bracket\n\t\t\tindent.erase(0, 1);\n\t\tformattedLine.append(indent);\n\t}\n\telse if (getIndentString() == \"\\t\")\n\t{\n\t\tappendChar('\\t', false);\n\t\thorstmannIndentChars = 2;\t// one for { and one for tab\n\t\tif (extraIndent)\n\t\t{\n\t\t\tappendChar('\\t', false);\n\t\t\thorstmannIndentChars++;\n\t\t}\n\t}\n\telse // spaces\n\t{\n\t\tint indentLength_ = getIndentLength();\n\t\tformattedLine.append(indentLength_ - 1, ' ');\n\t\thorstmannIndentChars = indentLength_;\n\t\tif (extraIndent)\n\t\t{\n\t\t\tformattedLine.append(indentLength_, ' ');\n\t\t\thorstmannIndentChars += indentLength_;\n\t\t}\n\t}\n\tisInHorstmannRunIn = true;\n}\n\n/**\n * remove whitespace and add indentation for an array run-in.\n */\nvoid ASFormatter::formatArrayRunIn()\n{\n\tassert(isBracketType(bracketTypeStack->back(), ARRAY_TYPE));\n\n\t// make sure the bracket is broken\n\tif (formattedLine.find_first_not_of(\" \\t{\") != string::npos)\n\t\treturn;\n\n\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\tif (lastText == string::npos || formattedLine[lastText] != '{')\n\t\treturn;\n\n\t// check for extra whitespace\n\tif (formattedLine.length() > lastText + 1\n\t        && formattedLine.find_first_not_of(\" \\t\", lastText + 1) == string::npos)\n\t\tformattedLine.erase(lastText + 1);\n\n\tif (getIndentString() == \"\\t\")\n\t{\n\t\tappendChar('\\t', false);\n\t\thorstmannIndentChars = 2;\t// one for { and one for tab\n\t}\n\telse\n\t{\n\t\tint indent = getIndentLength();\n\t\tformattedLine.append(indent - 1, ' ');\n\t\thorstmannIndentChars = indent;\n\t}\n\tisInHorstmannRunIn = true;\n\tisInLineBreak = false;\n}\n\n/**\n * delete a bracketTypeStack vector object\n * BracketTypeStack did not work with the DeleteContainer template\n */\nvoid ASFormatter::deleteContainer(vector<BracketType>* &container)\n{\n\tif (container != NULL)\n\t{\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * delete a vector object\n * T is the type of vector\n * used for all vectors except bracketTypeStack\n */\ntemplate<typename T>\nvoid ASFormatter::deleteContainer(T &container)\n{\n\tif (container != NULL)\n\t{\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * initialize a BracketType vector object\n * BracketType did not work with the DeleteContainer template\n */\nvoid ASFormatter::initContainer(vector<BracketType>* &container, vector<BracketType>* value)\n{\n\tif (container != NULL)\n\t\tdeleteContainer(container);\n\tcontainer = value;\n}\n\n/**\n * initialize a vector object\n * T is the type of vector\n * used for all vectors except bracketTypeStack\n */\ntemplate<typename T>\nvoid ASFormatter::initContainer(T &container, T value)\n{\n\t// since the ASFormatter object is never deleted,\n\t// the existing vectors must be deleted before creating new ones\n\tif (container != NULL)\n\t\tdeleteContainer(container);\n\tcontainer = value;\n}\n\n/**\n * convert a tab to spaces.\n * charNum points to the current character to convert to spaces.\n * tabIncrementIn is the increment that must be added for tab indent characters\n *     to get the correct column for the current tab.\n * replaces the tab in currentLine with the required number of spaces.\n * replaces the value of currentChar.\n */\nvoid ASFormatter::convertTabToSpaces()\n{\n\tassert(currentLine[charNum] == '\\t');\n\n\t// do NOT replace if in quotes\n\tif (isInQuote || isInQuoteContinuation)\n\t\treturn;\n\n\tsize_t tabSize = getTabLength();\n\tsize_t numSpaces = tabSize - ((tabIncrementIn + charNum) % tabSize);\n\tcurrentLine.replace(charNum, 1, numSpaces, ' ');\n\tcurrentChar = currentLine[charNum];\n}\n\n/**\n* is it ok to break this block?\n*/\nbool ASFormatter::isOkToBreakBlock(BracketType bracketType) const\n{\n\t// Actually, there should not be an ARRAY_TYPE bracket here.\n\t// But this will avoid breaking a one line block when there is.\n\t// Otherwise they will be formatted differently on consecutive runs.\n\tif (isBracketType(bracketType, ARRAY_TYPE)\n\t        && isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\treturn false;\n\tif (!isBracketType(bracketType, SINGLE_LINE_TYPE)\n\t        || shouldBreakOneLineBlocks\n\t        || breakCurrentOneLineBlock)\n\t\treturn true;\n\treturn false;\n}\n\n/**\n* check if a sharp header is a paren or non-paren header\n*/\nbool ASFormatter::isSharpStyleWithParen(const string* header) const\n{\n\tif (isSharpStyle() && peekNextChar() == '('\n\t        && (header == &AS_CATCH\n\t            || header == &AS_DELEGATE))\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * Check for a following header when a comment is reached.\n * firstLine must contain the start of the comment.\n * return value is a pointer to the header or NULL.\n */\nconst string* ASFormatter::checkForHeaderFollowingComment(const string &firstLine) const\n{\n\tassert(isInComment || isInLineComment);\n\tassert(shouldBreakElseIfs || shouldBreakBlocks || isInSwitchStatement());\n\t// look ahead to find the next non-comment text\n\tbool endOnEmptyLine = (currentHeader == NULL);\n\tif (isInSwitchStatement())\n\t\tendOnEmptyLine = false;\n\tstring nextText = peekNextText(firstLine, endOnEmptyLine);\n\n\tif (nextText.length() == 0 || !isCharPotentialHeader(nextText, 0))\n\t\treturn NULL;\n\n\treturn ASBeautifier::findHeader(nextText, 0, headers);\n}\n\n/**\n * process preprocessor statements.\n * charNum should be the index of the #.\n *\n * delete bracketTypeStack entries added by #if if a #else is found.\n * prevents double entries in the bracketTypeStack.\n */\nvoid ASFormatter::processPreprocessor()\n{\n\tassert(currentChar == '#');\n\n\tconst size_t preproc = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\n\tif (preproc == string::npos)\n\t\treturn;\n\n\tif (currentLine.compare(preproc, 2, \"if\") == 0)\n\t{\n\t\tpreprocBracketTypeStackSize = bracketTypeStack->size();\n\t}\n\telse if (currentLine.compare(preproc, 4, \"else\") == 0)\n\t{\n\t\t// delete stack entries added in #if\n\t\t// should be replaced by #else\n\t\tif (preprocBracketTypeStackSize > 0)\n\t\t{\n\t\t\tint addedPreproc = bracketTypeStack->size() - preprocBracketTypeStackSize;\n\t\t\tfor (int i = 0; i < addedPreproc; i++)\n\t\t\t\tbracketTypeStack->pop_back();\n\t\t}\n\t}\n}\n\n/**\n * determine if the next line starts a comment\n * and a header follows the comment or comments.\n */\nbool ASFormatter::commentAndHeaderFollows()\n{\n\t// called ONLY IF shouldDeleteEmptyLines and shouldBreakBlocks are TRUE.\n\tassert(shouldDeleteEmptyLines && shouldBreakBlocks);\n\n\t// is the next line a comment\n\tif (!sourceIterator->hasMoreLines())\n\t\treturn false;\n\tstring nextLine_ = sourceIterator->peekNextLine();\n\tsize_t firstChar = nextLine_.find_first_not_of(\" \\t\");\n\tif (firstChar == string::npos\n\t        || !(nextLine_.compare(firstChar, 2, \"//\") == 0\n\t             || nextLine_.compare(firstChar, 2, \"/*\") == 0))\n\t{\n\t\tsourceIterator->peekReset();\n\t\treturn false;\n\t}\n\n\t// find the next non-comment text, and reset\n\tstring nextText = peekNextText(nextLine_, false, true);\n\tif (nextText.length() == 0 || !isCharPotentialHeader(nextText, 0))\n\t\treturn false;\n\n\tconst string* newHeader = ASBeautifier::findHeader(nextText, 0, headers);\n\n\tif (newHeader == NULL)\n\t\treturn false;\n\n\t// if a closing header, reset break unless break is requested\n\tif (isClosingHeader(newHeader) && !shouldBreakClosingHeaderBlocks)\n\t{\n\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * determine if a bracket should be attached or broken\n * uses brackets in the bracketTypeStack\n * the last bracket in the bracketTypeStack is the one being formatted\n * returns true if the bracket should be broken\n */\nbool ASFormatter::isCurrentBracketBroken() const\n{\n\tassert(bracketTypeStack->size() > 1);\n\n\tbool breakBracket = false;\n\tsize_t stackEnd = bracketTypeStack->size() - 1;\n\n\t// check bracket modifiers\n\tif (shouldAttachExternC\n\t        && isBracketType((*bracketTypeStack)[stackEnd], EXTERN_TYPE))\n\t{\n\t\treturn false;\n\t}\n\tif (shouldAttachNamespace\n\t        && isBracketType((*bracketTypeStack)[stackEnd], NAMESPACE_TYPE))\n\t{\n\t\treturn false;\n\t}\n\telse if (shouldAttachClass\n\t         && (isBracketType((*bracketTypeStack)[stackEnd], CLASS_TYPE)\n\t             || isBracketType((*bracketTypeStack)[stackEnd], INTERFACE_TYPE)))\n\t{\n\t\treturn false;\n\t}\n\telse if (shouldAttachInline\n\t         && isCStyle()\t\t\t// for C++ only\n\t         && bracketFormatMode != RUN_IN_MODE\n\t         && isBracketType((*bracketTypeStack)[stackEnd], COMMAND_TYPE))\n\t{\n\t\tsize_t i;\n\t\tfor (i = 1; i < bracketTypeStack->size(); i++)\n\t\t\tif (isBracketType((*bracketTypeStack)[i], CLASS_TYPE)\n\t\t\t        || isBracketType((*bracketTypeStack)[i], STRUCT_TYPE))\n\t\t\t\treturn false;\n\t}\n\n\t// check brackets\n\tif (isBracketType((*bracketTypeStack)[stackEnd], EXTERN_TYPE))\n\t{\n\t\tif (currentLineBeginsWithBracket\n\t\t        || bracketFormatMode == RUN_IN_MODE)\n\t\t\tbreakBracket = true;\n\t}\n\telse if (bracketFormatMode == NONE_MODE)\n\t{\n\t\tif (currentLineBeginsWithBracket\n\t\t        && (int) currentLineFirstBracketNum == charNum)\n\t\t\tbreakBracket = true;\n\t}\n\telse if (bracketFormatMode == BREAK_MODE || bracketFormatMode == RUN_IN_MODE)\n\t{\n\t\tbreakBracket = true;\n\t}\n\telse if (bracketFormatMode == LINUX_MODE || bracketFormatMode == STROUSTRUP_MODE)\n\t{\n\t\t// break a namespace, class, or interface if Linux\n\t\tif (isBracketType((*bracketTypeStack)[stackEnd], NAMESPACE_TYPE)\n\t\t        || isBracketType((*bracketTypeStack)[stackEnd], CLASS_TYPE)\n\t\t        || isBracketType((*bracketTypeStack)[stackEnd], INTERFACE_TYPE))\n\t\t{\n\t\t\tif (bracketFormatMode == LINUX_MODE)\n\t\t\t\tbreakBracket = true;\n\t\t}\n\t\t// break the first bracket if a function\n\t\telse if (isBracketType((*bracketTypeStack)[stackEnd], COMMAND_TYPE))\n\t\t{\n\t\t\tif (stackEnd == 1)\n\t\t\t{\n\t\t\t\tbreakBracket = true;\n\t\t\t}\n\t\t\telse if (stackEnd > 1)\n\t\t\t{\n\t\t\t\t// break the first bracket after these if a function\n\t\t\t\tif (isBracketType((*bracketTypeStack)[stackEnd - 1], NAMESPACE_TYPE)\n\t\t\t\t        || isBracketType((*bracketTypeStack)[stackEnd - 1], CLASS_TYPE)\n\t\t\t\t        || isBracketType((*bracketTypeStack)[stackEnd - 1], ARRAY_TYPE)\n\t\t\t\t        || isBracketType((*bracketTypeStack)[stackEnd - 1], STRUCT_TYPE)\n\t\t\t\t        || isBracketType((*bracketTypeStack)[stackEnd - 1], EXTERN_TYPE))\n\t\t\t\t{\n\t\t\t\t\tbreakBracket = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn breakBracket;\n}\n\n/**\n * format comment body\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatCommentBody()\n{\n\tassert(isInComment);\n\n\t// append the comment\n\twhile (charNum < (int) currentLine.length())\n\t{\n\t\tcurrentChar = currentLine[charNum];\n\t\tif (currentLine.compare(charNum, 2, \"*/\") == 0)\n\t\t{\n\t\t\tformatCommentCloser();\n\t\t\tbreak;\n\t\t}\n\t\tif (currentChar == '\\t' && shouldConvertTabs)\n\t\t\tconvertTabToSpaces();\n\t\tappendCurrentChar();\n\t\t++charNum;\n\t}\n\tif (shouldStripCommentPrefix)\n\t\tstripCommentPrefix();\n}\n\n/**\n * format a comment opener\n * the comment opener will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatCommentOpener()\n{\n\tassert(isSequenceReached(\"/*\"));\n\n\tisInComment = isInCommentStartLine = true;\n\tisImmediatelyPostLineComment = false;\n\tif (previousNonWSChar == '}')\n\t\tresetEndOfStatement();\n\n\t// Check for a following header.\n\t// For speed do not check multiple comment lines more than once.\n\t// For speed do not check shouldBreakBlocks if previous line is empty, a comment, or a '{'.\n\tconst string* followingHeader = NULL;\n\tif ((doesLineStartComment\n\t        && !isImmediatelyPostCommentOnly\n\t        && isBracketType(bracketTypeStack->back(), COMMAND_TYPE))\n\t        && (shouldBreakElseIfs\n\t            || isInSwitchStatement()\n\t            || (shouldBreakBlocks\n\t                && !isImmediatelyPostEmptyLine\n\t                && previousCommandChar != '{')))\n\t\tfollowingHeader = checkForHeaderFollowingComment(currentLine.substr(charNum));\n\n\tif (spacePadNum != 0 && !isInLineBreak)\n\t\tadjustComments();\n\tformattedLineCommentNum = formattedLine.length();\n\n\t// must be done BEFORE appendSequence\n\tif (previousCommandChar == '{'\n\t        && !isImmediatelyPostComment\n\t        && !isImmediatelyPostLineComment)\n\t{\n\t\tif (bracketFormatMode == NONE_MODE)\n\t\t{\n\t\t\t// should a run-in statement be attached?\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tformatRunIn();\n\t\t}\n\t\telse if (bracketFormatMode == ATTACH_MODE)\n\t\t{\n\t\t\t// if the bracket was not attached?\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{'\n\t\t\t        && !isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse if (bracketFormatMode == RUN_IN_MODE)\n\t\t{\n\t\t\t// should a run-in statement be attached?\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t\tformatRunIn();\n\t\t}\n\t}\n\telse if (!doesLineStartComment)\n\t\tnoTrimCommentContinuation = true;\n\n\t// ASBeautifier needs to know the following statements\n\tif (shouldBreakElseIfs && followingHeader == &AS_ELSE)\n\t\telseHeaderFollowsComments = true;\n\tif (followingHeader == &AS_CASE || followingHeader == &AS_DEFAULT)\n\t\tcaseHeaderFollowsComments = true;\n\n\t// appendSequence will write the previous line\n\tappendSequence(AS_OPEN_COMMENT);\n\tgoForward(1);\n\n\t// must be done AFTER appendSequence\n\n\t// Break before the comment if a header follows the line comment.\n\t// But not break if previous line is empty, a comment, or a '{'.\n\tif (shouldBreakBlocks\n\t        && followingHeader != NULL\n\t        && !isImmediatelyPostEmptyLine\n\t        && previousCommandChar != '{')\n\t{\n\t\tif (isClosingHeader(followingHeader))\n\t\t{\n\t\t\tif (!shouldBreakClosingHeaderBlocks)\n\t\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t\t}\n\t\t// if an opening header, break before the comment\n\t\telse\n\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t}\n\n\tif (previousCommandChar == '}')\n\t\tcurrentHeader = NULL;\n}\n\n/**\n * format a comment closer\n * the comment closer will be appended to the current formattedLine\n */\nvoid ASFormatter::formatCommentCloser()\n{\n\tisInComment = false;\n\tnoTrimCommentContinuation = false;\n\tisImmediatelyPostComment = true;\n\tappendSequence(AS_CLOSE_COMMENT);\n\tgoForward(1);\n\tif (doesLineStartComment\n\t        && (currentLine.find_first_not_of(\" \\t\", charNum + 1) == string::npos))\n\t\tlineEndsInCommentOnly = true;\n\tif (peekNextChar() == '}'\n\t        && previousCommandChar != ';'\n\t        && !isBracketType(bracketTypeStack->back(),  ARRAY_TYPE)\n\t        && !isInPreprocessor\n\t        && isOkToBreakBlock(bracketTypeStack->back()))\n\t{\n\t\tisInLineBreak = true;\n\t\tshouldBreakLineAtNextChar = true;\n\t}\n}\n\n/**\n * format a line comment body\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatLineCommentBody()\n{\n\tassert(isInLineComment);\n\n\t// append the comment\n\twhile (charNum < (int) currentLine.length())\n//\t        && !isLineReady\t// commented out in release 2.04, unnecessary\n\t{\n\t\tcurrentChar = currentLine[charNum];\n\t\tif (currentChar == '\\t' && shouldConvertTabs)\n\t\t\tconvertTabToSpaces();\n\t\tappendCurrentChar();\n\t\t++charNum;\n\t}\n\n\t// explicitly break a line when a line comment's end is found.\n\tif (charNum == (int) currentLine.length())\n\t{\n\t\tisInLineBreak = true;\n\t\tisInLineComment = false;\n\t\tisImmediatelyPostLineComment = true;\n\t\tcurrentChar = 0;  //make sure it is a neutral char.\n\t}\n}\n\n/**\n * format a line comment opener\n * the line comment opener will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatLineCommentOpener()\n{\n\tassert(isSequenceReached(\"//\"));\n\n\tif ((int) currentLine.length() > charNum + 2\n\t        && currentLine[charNum + 2] == '\\xf2')     // check for windows line marker\n\t\tisAppendPostBlockEmptyLineRequested = false;\n\n\tisInLineComment = true;\n\tisCharImmediatelyPostComment = false;\n\tif (previousNonWSChar == '}')\n\t\tresetEndOfStatement();\n\n\t// Check for a following header.\n\t// For speed do not check multiple comment lines more than once.\n\t// For speed do not check shouldBreakBlocks if previous line is empty, a comment, or a '{'.\n\tconst string* followingHeader = NULL;\n\tif ((lineIsLineCommentOnly\n\t        && !isImmediatelyPostCommentOnly\n\t        && isBracketType(bracketTypeStack->back(), COMMAND_TYPE))\n\t        && (shouldBreakElseIfs\n\t            || isInSwitchStatement()\n\t            || (shouldBreakBlocks\n\t                && !isImmediatelyPostEmptyLine\n\t                && previousCommandChar != '{')))\n\t\tfollowingHeader = checkForHeaderFollowingComment(currentLine.substr(charNum));\n\n\t// do not indent if in column 1 or 2\n\t// or in a namespace before the opening bracket\n\tif ((!shouldIndentCol1Comments && !lineCommentNoIndent)\n\t        || foundNamespaceHeader)\n\t{\n\t\tif (charNum == 0)\n\t\t\tlineCommentNoIndent = true;\n\t\telse if (charNum == 1 && currentLine[0] == ' ')\n\t\t\tlineCommentNoIndent = true;\n\t}\n\t// move comment if spaces were added or deleted\n\tif (lineCommentNoIndent == false && spacePadNum != 0 && !isInLineBreak)\n\t\tadjustComments();\n\tformattedLineCommentNum = formattedLine.length();\n\n\t// must be done BEFORE appendSequence\n\t// check for run-in statement\n\tif (previousCommandChar == '{'\n\t        && !isImmediatelyPostComment\n\t        && !isImmediatelyPostLineComment)\n\t{\n\t\tif (bracketFormatMode == NONE_MODE)\n\t\t{\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tformatRunIn();\n\t\t}\n\t\telse if (bracketFormatMode == RUN_IN_MODE)\n\t\t{\n\t\t\tif (!lineCommentNoIndent)\n\t\t\t\tformatRunIn();\n\t\t\telse\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse if (bracketFormatMode == BREAK_MODE)\n\t\t{\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t}\n\n\t// ASBeautifier needs to know the following statements\n\tif (shouldBreakElseIfs && followingHeader == &AS_ELSE)\n\t\telseHeaderFollowsComments = true;\n\tif (followingHeader == &AS_CASE || followingHeader == &AS_DEFAULT)\n\t\tcaseHeaderFollowsComments = true;\n\n\t// appendSequence will write the previous line\n\tappendSequence(AS_OPEN_LINE_COMMENT);\n\tgoForward(1);\n\n\t// must be done AFTER appendSequence\n\n\t// Break before the comment if a header follows the line comment.\n\t// But do not break if previous line is empty, a comment, or a '{'.\n\tif (shouldBreakBlocks\n\t        && followingHeader != NULL\n\t        && !isImmediatelyPostEmptyLine\n\t        && previousCommandChar != '{')\n\t{\n\t\tif (isClosingHeader(followingHeader))\n\t\t{\n\t\t\tif (!shouldBreakClosingHeaderBlocks)\n\t\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t\t}\n\t\t// if an opening header, break before the comment\n\t\telse\n\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t}\n\n\tif (previousCommandChar == '}')\n\t\tcurrentHeader = NULL;\n\n\t// if tabbed input don't convert the immediately following tabs to spaces\n\tif (getIndentString() == \"\\t\" && lineCommentNoIndent)\n\t{\n\t\twhile (charNum + 1 < (int) currentLine.length()\n\t\t        && currentLine[charNum + 1] == '\\t')\n\t\t{\n\t\t\tcurrentChar = currentLine[++charNum];\n\t\t\tappendCurrentChar();\n\t\t}\n\t}\n\n\t// explicitly break a line when a line comment's end is found.\n\tif (charNum + 1 == (int) currentLine.length())\n\t{\n\t\tisInLineBreak = true;\n\t\tisInLineComment = false;\n\t\tisImmediatelyPostLineComment = true;\n\t\tcurrentChar = 0;  //make sure it is a neutral char.\n\t}\n}\n\n/**\n * format quote body\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatQuoteBody()\n{\n\tassert(isInQuote);\n\n\tif (isSpecialChar)\n\t{\n\t\tisSpecialChar = false;\n\t}\n\telse if (currentChar == '\\\\' && !isInVerbatimQuote)\n\t{\n\t\tif (peekNextChar() == ' ')              // is this '\\' at end of line\n\t\t\thaveLineContinuationChar = true;\n\t\telse\n\t\t\tisSpecialChar = true;\n\t}\n\telse if (isInVerbatimQuote && currentChar == '\"')\n\t{\n\t\tif (isCStyle())\n\t\t{\n\t\t\tstring delim = ')' + verbatimDelimiter;\n\t\t\tint delimStart = charNum - delim.length();\n\t\t\tif (delimStart > 0 && currentLine.substr(delimStart, delim.length()) == delim)\n\t\t\t{\n\t\t\t\tisInQuote = false;\n\t\t\t\tisInVerbatimQuote = false;\n\t\t\t}\n\t\t}\n\t\telse if (isSharpStyle())\n\t\t{\n\t\t\tif (peekNextChar() == '\"')              // check consecutive quotes\n\t\t\t{\n\t\t\t\tappendSequence(\"\\\"\\\"\");\n\t\t\t\tgoForward(1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tisInQuote = false;\n\t\t\t\tisInVerbatimQuote = false;\n\t\t\t}\n\t\t}\n\t}\n\telse if (quoteChar == currentChar)\n\t{\n\t\tisInQuote = false;\n\t}\n\n\tappendCurrentChar();\n\n\t// append the text to the ending quoteChar or an escape sequence\n\t// tabs in quotes are NOT changed by convert-tabs\n\tif (isInQuote && currentChar != '\\\\')\n\t{\n\t\twhile (charNum + 1 < (int) currentLine.length()\n\t\t        && currentLine[charNum + 1] != quoteChar\n\t\t        && currentLine[charNum + 1] != '\\\\')\n\t\t{\n\t\t\tcurrentChar = currentLine[++charNum];\n\t\t\tappendCurrentChar();\n\t\t}\n\t}\n}\n\n/**\n * format a quote opener\n * the quote opener will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatQuoteOpener()\n{\n\tassert(currentChar == '\"' || currentChar == '\\'');\n\n\tisInQuote = true;\n\tquoteChar = currentChar;\n\tif (isCStyle() && previousChar == 'R')\n\t{\n\t\tint parenPos = currentLine.find('(', charNum);\n\t\tif (parenPos != -1)\n\t\t{\n\t\t\tisInVerbatimQuote = true;\n\t\t\tverbatimDelimiter = currentLine.substr(charNum + 1, parenPos - charNum - 1);\n\t\t}\n\t}\n\telse if (isSharpStyle() && previousChar == '@')\n\t\tisInVerbatimQuote = true;\n\n\t// a quote following a bracket is an array\n\tif (previousCommandChar == '{'\n\t        && !isImmediatelyPostComment\n\t        && !isImmediatelyPostLineComment\n\t        && isNonInStatementArray\n\t        && !isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE)\n\t        && !isWhiteSpace(peekNextChar()))\n\t{\n\t\tif (bracketFormatMode == NONE_MODE)\n\t\t{\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tformatRunIn();\n\t\t}\n\t\telse if (bracketFormatMode == RUN_IN_MODE)\n\t\t{\n\t\t\tformatRunIn();\n\t\t}\n\t\telse if (bracketFormatMode == BREAK_MODE)\n\t\t{\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t}\n\tpreviousCommandChar = ' ';\n\tappendCurrentChar();\n}\n\n/**\n * get the next line comment adjustment that results from breaking a closing bracket.\n * the bracket must be on the same line as the closing header.\n * i.e \"} else\" changed to \"} <NL> else\".\n */\nint ASFormatter::getNextLineCommentAdjustment()\n{\n\tassert(foundClosingHeader && previousNonWSChar == '}');\n\tif (charNum < 1)\t\t\t// \"else\" is in column 1\n\t\treturn 0;\n\tsize_t lastBracket = currentLine.rfind('}', charNum - 1);\n\tif (lastBracket != string::npos)\n\t\treturn (lastBracket - charNum);\t// return a negative number\n\treturn 0;\n}\n\n// for console build only\nLineEndFormat ASFormatter::getLineEndFormat() const\n{\n\treturn lineEnd;\n}\n\n/**\n * get the current line comment adjustment that results from attaching\n * a closing header to a closing bracket.\n * the bracket must be on the line previous to the closing header.\n * the adjustment is 2 chars, one for the bracket and one for the space.\n * i.e \"} <NL> else\" changed to \"} else\".\n */\nint ASFormatter::getCurrentLineCommentAdjustment()\n{\n\tassert(foundClosingHeader && previousNonWSChar == '}');\n\tif (charNum < 1)\n\t\treturn 2;\n\tsize_t lastBracket = currentLine.rfind('}', charNum - 1);\n\tif (lastBracket == string::npos)\n\t\treturn 2;\n\treturn 0;\n}\n\n/**\n * get the previous word on a line\n * the argument 'currPos' must point to the current position.\n *\n * @return is the previous word or an empty string if none found.\n */\nstring ASFormatter::getPreviousWord(const string &line, int currPos) const\n{\n\t// get the last legal word (may be a number)\n\tif (currPos == 0)\n\t\treturn string();\n\n\tsize_t end = line.find_last_not_of(\" \\t\", currPos - 1);\n\tif (end == string::npos || !isLegalNameChar(line[end]))\n\t\treturn string();\n\n\tint start;          // start of the previous word\n\tfor (start = end; start > -1; start--)\n\t{\n\t\tif (!isLegalNameChar(line[start]) || line[start] == '.')\n\t\t\tbreak;\n\t}\n\tstart++;\n\n\treturn (line.substr(start, end - start + 1));\n}\n\n/**\n * check if a line break is needed when a closing bracket\n * is followed by a closing header.\n * the break depends on the bracketFormatMode and other factors.\n */\nvoid ASFormatter::isLineBreakBeforeClosingHeader()\n{\n\tassert(foundClosingHeader && previousNonWSChar == '}');\n\tif (bracketFormatMode == BREAK_MODE\n\t        || bracketFormatMode == RUN_IN_MODE\n\t        || attachClosingBracketMode)\n\t{\n\t\tisInLineBreak = true;\n\t}\n\telse if (bracketFormatMode == NONE_MODE)\n\t{\n\t\tif (shouldBreakClosingHeaderBrackets\n\t\t        || getBracketIndent() || getBlockIndent())\n\t\t{\n\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tappendSpacePad();\n\t\t\t// is closing bracket broken?\n\t\t\tsize_t i = currentLine.find_first_not_of(\" \\t\");\n\t\t\tif (i != string::npos && currentLine[i] == '}')\n\t\t\t\tisInLineBreak = false;\n\n\t\t\tif (shouldBreakBlocks)\n\t\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t}\n\t}\n\t// bracketFormatMode == ATTACH_MODE, LINUX_MODE, STROUSTRUP_MODE\n\telse\n\t{\n\t\tif (shouldBreakClosingHeaderBrackets\n\t\t        || getBracketIndent() || getBlockIndent())\n\t\t{\n\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// if a blank line does not precede this\n\t\t\t// or last line is not a one line block, attach header\n\t\t\tbool previousLineIsEmpty = isEmptyLine(formattedLine);\n\t\t\tint previousLineIsOneLineBlock = 0;\n\t\t\tsize_t firstBracket = findNextChar(formattedLine, '{');\n\t\t\tif (firstBracket != string::npos)\n\t\t\t\tpreviousLineIsOneLineBlock = isOneLineBlockReached(formattedLine, firstBracket);\n\t\t\tif (!previousLineIsEmpty\n\t\t\t        && previousLineIsOneLineBlock == 0)\n\t\t\t{\n\t\t\t\tisInLineBreak = false;\n\t\t\t\tappendSpacePad();\n\t\t\t\tspacePadNum = 0;\t// don't count as comment padding\n\t\t\t}\n\n\t\t\tif (shouldBreakBlocks)\n\t\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t}\n\t}\n}\n\n/**\n * Add brackets to a single line statement following a header.\n * Brackets are not added if the proper conditions are not met.\n * Brackets are added to the currentLine.\n */\nbool ASFormatter::addBracketsToStatement()\n{\n\tassert(isImmediatelyPostHeader);\n\n\tif (currentHeader != &AS_IF\n\t        && currentHeader != &AS_ELSE\n\t        && currentHeader != &AS_FOR\n\t        && currentHeader != &AS_WHILE\n\t        && currentHeader != &AS_DO\n\t        && currentHeader != &AS_FOREACH\n\t        && currentHeader != &AS_QFOREACH\n\t        && currentHeader != &AS_QFOREVER\n\t        && currentHeader != &AS_FOREVER)\n\t\treturn false;\n\n\tif (currentHeader == &AS_WHILE && foundClosingHeader)\t// do-while\n\t\treturn false;\n\n\t// do not bracket an empty statement\n\tif (currentChar == ';')\n\t\treturn false;\n\n\t// do not add if a header follows\n\tif (isCharPotentialHeader(currentLine, charNum))\n\t\tif (findHeader(headers) != NULL)\n\t\t\treturn false;\n\n\t// find the next semi-colon\n\tsize_t nextSemiColon = charNum;\n\tif (currentChar != ';')\n\t\tnextSemiColon = findNextChar(currentLine, ';', charNum + 1);\n\tif (nextSemiColon == string::npos)\n\t\treturn false;\n\n\t// add closing bracket before changing the line length\n\tif (nextSemiColon == currentLine.length() - 1)\n\t\tcurrentLine.append(\" }\");\n\telse\n\t\tcurrentLine.insert(nextSemiColon + 1, \" }\");\n\t// add opening bracket\n\tcurrentLine.insert(charNum, \"{ \");\n\tassert(computeChecksumIn(\"{}\"));\n\tcurrentChar = '{';\n\t// remove extra spaces\n\tif (!shouldAddOneLineBrackets)\n\t{\n\t\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\t\tif ((formattedLine.length() - 1) - lastText > 1)\n\t\t\tformattedLine.erase(lastText + 1);\n\t}\n\treturn true;\n}\n\n/**\n * Remove brackets from a single line statement following a header.\n * Brackets are not removed if the proper conditions are not met.\n * The first bracket is replaced by a space.\n */\nbool ASFormatter::removeBracketsFromStatement()\n{\n\tassert(isImmediatelyPostHeader);\n\tassert(currentChar == '{');\n\n\tif (currentHeader != &AS_IF\n\t        && currentHeader != &AS_ELSE\n\t        && currentHeader != &AS_FOR\n\t        && currentHeader != &AS_WHILE\n\t        && currentHeader != &AS_FOREACH)\n\t\treturn false;\n\n\tif (currentHeader == &AS_WHILE && foundClosingHeader)\t// do-while\n\t\treturn false;\n\n\tbool isFirstLine = true;\n\tbool needReset = false;\n\tstring nextLine_;\n\t// leave nextLine_ empty if end of line comment follows\n\tif (!isBeforeAnyLineEndComment(charNum) || currentLineBeginsWithBracket)\n\t\tnextLine_ = currentLine.substr(charNum + 1);\n\tsize_t nextChar = 0;\n\n\t// find the first non-blank text\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tnextChar = 0;\n\t\t\tneedReset = true;\n\t\t}\n\n\t\tnextChar = nextLine_.find_first_not_of(\" \\t\", nextChar);\n\t\tif (nextChar != string::npos)\n\t\t\tbreak;\n\t}\n\n\t// don't remove if comments or a header follow the bracket\n\tif ((nextLine_.compare(nextChar, 2, \"/*\") == 0)\n\t        || (nextLine_.compare(nextChar, 2, \"//\") == 0)\n\t        || (isCharPotentialHeader(nextLine_, nextChar)\n\t            && ASBeautifier::findHeader(nextLine_, nextChar, headers) != NULL))\n\t{\n\t\tif (needReset)\n\t\t\tsourceIterator->peekReset();\n\t\treturn false;\n\t}\n\n\t// find the next semi-colon\n\tsize_t nextSemiColon = nextChar;\n\tif (nextLine_[nextChar] != ';')\n\t\tnextSemiColon = findNextChar(nextLine_, ';', nextChar + 1);\n\tif (nextSemiColon == string::npos)\n\t{\n\t\tif (needReset)\n\t\t\tsourceIterator->peekReset();\n\t\treturn false;\n\t}\n\n\t// find the closing bracket\n\tisFirstLine = true;\n\tnextChar = nextSemiColon + 1;\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tnextChar = 0;\n\t\t\tneedReset = true;\n\t\t}\n\t\tnextChar = nextLine_.find_first_not_of(\" \\t\", nextChar);\n\t\tif (nextChar != string::npos)\n\t\t\tbreak;\n\t}\n\tif (nextLine_.length() == 0 || nextLine_[nextChar] != '}')\n\t{\n\t\tif (needReset)\n\t\t\tsourceIterator->peekReset();\n\t\treturn false;\n\t}\n\n\t// remove opening bracket\n\tcurrentLine[charNum] = currentChar = ' ';\n\tassert(adjustChecksumIn(-'{'));\n\tif (needReset)\n\t\tsourceIterator->peekReset();\n\treturn true;\n}\n\n/**\n * Find the next character that is not in quotes or a comment.\n *\n * @param line         the line to be searched.\n * @param searchChar   the char to find.\n * @param searchStart  the start position on the line (default is 0).\n * @return the position on the line or string::npos if not found.\n */\nsize_t ASFormatter::findNextChar(string &line, char searchChar, int searchStart /*0*/)\n{\n\t// find the next searchChar\n\tsize_t i;\n\tfor (i = searchStart; i < line.length(); i++)\n\t{\n\t\tif (line.compare(i, 2, \"//\") == 0)\n\t\t\treturn string::npos;\n\t\tif (line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\tsize_t endComment = line.find(\"*/\", i + 2);\n\t\t\tif (endComment == string::npos)\n\t\t\t\treturn string::npos;\n\t\t\ti = endComment + 2;\n\t\t\tif (i >= line.length())\n\t\t\t\treturn string::npos;\n\t\t}\n\t\tif (line[i] == '\\'' || line[i] == '\\\"')\n\t\t{\n\t\t\tchar quote = line[i];\n\t\t\twhile (i < line.length())\n\t\t\t{\n\t\t\t\tsize_t endQuote = line.find(quote, i + 1);\n\t\t\t\tif (endQuote == string::npos)\n\t\t\t\t\treturn string::npos;\n\t\t\t\ti = endQuote;\n\t\t\t\tif (line[endQuote - 1] != '\\\\')\t// check for '\\\"'\n\t\t\t\t\tbreak;\n\t\t\t\tif (line[endQuote - 2] == '\\\\')\t// check for '\\\\'\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (line[i] == searchChar)\n\t\t\tbreak;\n\n\t\t// for now don't process C# 'delegate' brackets\n\t\t// do this last in case the search char is a '{'\n\t\tif (line[i] == '{')\n\t\t\treturn string::npos;\n\t}\n\tif (i >= line.length())\t// didn't find searchChar\n\t\treturn string::npos;\n\n\treturn i;\n}\n\n/**\n * Look ahead in the file to see if a struct has access modifiers.\n *\n * @param firstLine     a reference to the line to indent.\n * @param index         the current line index.\n * @return              true if the struct has access modifiers.\n */\nbool ASFormatter::isStructAccessModified(string &firstLine, size_t index) const\n{\n\tassert(firstLine[index] == '{');\n\tassert(isCStyle());\n\n\tbool isFirstLine = true;\n\tbool needReset = false;\n\tsize_t bracketCount = 1;\n\tstring nextLine_ = firstLine.substr(index + 1);\n\n\t// find the first non-blank text, bypassing all comments and quotes.\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tchar quoteChar_ = ' ';\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tneedReset = true;\n\t\t}\n\t\t// parse the line\n\t\tfor (size_t i = 0; i < nextLine_.length(); i++)\n\t\t{\n\t\t\tif (isWhiteSpace(nextLine_[i]))\n\t\t\t\tcontinue;\n\t\t\tif (nextLine_.compare(i, 2, \"/*\") == 0)\n\t\t\t\tisInComment_ = true;\n\t\t\tif (isInComment_)\n\t\t\t{\n\t\t\t\tif (nextLine_.compare(i, 2, \"*/\") == 0)\n\t\t\t\t{\n\t\t\t\t\tisInComment_ = false;\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_[i] == '\\\\')\n\t\t\t{\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isInQuote_)\n\t\t\t{\n\t\t\t\tif (nextLine_[i] == quoteChar_)\n\t\t\t\t\tisInQuote_ = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (nextLine_[i] == '\"' || nextLine_[i] == '\\'')\n\t\t\t{\n\t\t\t\tisInQuote_ = true;\n\t\t\t\tquoteChar_ = nextLine_[i];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_.compare(i, 2, \"//\") == 0)\n\t\t\t{\n\t\t\t\ti = nextLine_.length();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// handle brackets\n\t\t\tif (nextLine_[i] == '{')\n\t\t\t\t++bracketCount;\n\t\t\tif (nextLine_[i] == '}')\n\t\t\t\t--bracketCount;\n\t\t\tif (bracketCount == 0)\n\t\t\t{\n\t\t\t\tif (needReset)\n\t\t\t\t\tsourceIterator->peekReset();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// check for access modifiers\n\t\t\tif (isCharPotentialHeader(nextLine_, i))\n\t\t\t{\n\t\t\t\tif (findKeyword(nextLine_, i, AS_PUBLIC)\n\t\t\t\t        || findKeyword(nextLine_, i, AS_PRIVATE)\n\t\t\t\t        || findKeyword(nextLine_, i, AS_PROTECTED))\n\t\t\t\t{\n\t\t\t\t\tif (needReset)\n\t\t\t\t\t\tsourceIterator->peekReset();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tstring name = getCurrentWord(nextLine_, i);\n\t\t\t\ti += name.length() - 1;\n\t\t\t}\n\t\t}\t// end of for loop\n\t}\t// end of while loop\n\n\tif (needReset)\n\t\tsourceIterator->peekReset();\n\treturn false;\n}\n\n/**\n* Look ahead in the file to see if a preprocessor block is indentable.\n*\n* @param firstLine     a reference to the line to indent.\n* @param index         the current line index.\n* @return              true if the block is indentable.\n*/\nbool ASFormatter::isIndentablePreprocessorBlock(string &firstLine, size_t index)\n{\n\tassert(firstLine[index] == '#');\n\n\tbool isFirstLine = true;\n\tbool needReset = false;\n\tbool isInIndentableBlock = false;\n\tbool blockContainsBrackets = false;\n\tbool blockContainsDefineContinuation = false;\n\tbool isInClassConstructor = false;\n\tint  numBlockIndents = 0;\n\tint  lineParenCount = 0;\n\tstring nextLine_ = firstLine.substr(index);\n\n\t// find end of the block, bypassing all comments and quotes.\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tchar quoteChar_ = ' ';\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tneedReset = true;\n\t\t}\n\t\t// parse the line\n\t\tfor (size_t i = 0; i < nextLine_.length(); i++)\n\t\t{\n\t\t\tif (isWhiteSpace(nextLine_[i]))\n\t\t\t\tcontinue;\n\t\t\tif (nextLine_.compare(i, 2, \"/*\") == 0)\n\t\t\t\tisInComment_ = true;\n\t\t\tif (isInComment_)\n\t\t\t{\n\t\t\t\tif (nextLine_.compare(i, 2, \"*/\") == 0)\n\t\t\t\t{\n\t\t\t\t\tisInComment_ = false;\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_[i] == '\\\\')\n\t\t\t{\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isInQuote_)\n\t\t\t{\n\t\t\t\tif (nextLine_[i] == quoteChar_)\n\t\t\t\t\tisInQuote_ = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (nextLine_[i] == '\"' || nextLine_[i] == '\\'')\n\t\t\t{\n\t\t\t\tisInQuote_ = true;\n\t\t\t\tquoteChar_ = nextLine_[i];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_.compare(i, 2, \"//\") == 0)\n\t\t\t{\n\t\t\t\ti = nextLine_.length();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// handle preprocessor statement\n\t\t\tif (nextLine_[i] == '#')\n\t\t\t{\n\t\t\t\tstring preproc = ASBeautifier::extractPreprocessorStatement(nextLine_);\n\t\t\t\tif (preproc.length() >= 2 && preproc.substr(0, 2) == \"if\") // #if, #ifdef, #ifndef\n\t\t\t\t{\n\t\t\t\t\tnumBlockIndents += 1;\n\t\t\t\t\tisInIndentableBlock = true;\n\t\t\t\t\t// flag first preprocessor conditional for header include guard check\n\t\t\t\t\tif (!processedFirstConditional)\n\t\t\t\t\t{\n\t\t\t\t\t\tprocessedFirstConditional = true;\n\t\t\t\t\t\tisFirstPreprocConditional = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"endif\")\n\t\t\t\t{\n\t\t\t\t\tif (numBlockIndents > 0)\n\t\t\t\t\t\tnumBlockIndents -= 1;\n\t\t\t\t\t// must exit BOTH loops\n\t\t\t\t\tif (numBlockIndents == 0)\n\t\t\t\t\t\tgoto EndOfWhileLoop;\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"define\" && nextLine_[nextLine_.length() - 1] == '\\\\')\n\t\t\t\t{\n\t\t\t\t\tblockContainsDefineContinuation = true;\n\t\t\t\t}\n\t\t\t\ti = nextLine_.length();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// handle exceptions\n\t\t\tif (nextLine_[i] == '{' || nextLine_[i] == '}')\n\t\t\t\tblockContainsBrackets = true;\n\t\t\telse if (nextLine_[i] == '(')\n\t\t\t\t++lineParenCount;\n\t\t\telse if (nextLine_[i] == ')')\n\t\t\t\t--lineParenCount;\n\t\t\telse if (nextLine_[i] == ':')\n\t\t\t{\n\t\t\t\t// check for '::'\n\t\t\t\tif (nextLine_.length() > i && nextLine_[i + 1] == ':')\n\t\t\t\t\t++i;\n\t\t\t\telse\n\t\t\t\t\tisInClassConstructor = true;\n\t\t\t}\n\t\t\t// bypass unnecessary parsing - must exit BOTH loops\n\t\t\tif (blockContainsBrackets || isInClassConstructor || blockContainsDefineContinuation)\n\t\t\t\tgoto EndOfWhileLoop;\n\t\t}\t// end of for loop, end of line\n\t\tif (lineParenCount != 0)\n\t\t\tbreak;\n\t}\t// end of while loop\nEndOfWhileLoop:\n\tpreprocBlockEnd = sourceIterator->tellg();\n\tif (preprocBlockEnd < 0)\n\t\tpreprocBlockEnd = sourceIterator->getStreamLength();\n\tif (blockContainsBrackets\n\t        || isInClassConstructor\n\t        || blockContainsDefineContinuation\n\t        || lineParenCount != 0\n\t        || numBlockIndents != 0)\n\t\tisInIndentableBlock = false;\n\t// find next executable instruction\n\t// this WILL RESET the get pointer\n\tstring nextText = peekNextText(\"\", false, needReset);\n\t// bypass header include guards, with an exception for small test files\n\tif (isFirstPreprocConditional)\n\t{\n\t\tisFirstPreprocConditional = false;\n\t\tif (nextText.empty() && sourceIterator->getStreamLength() > 250)\n\t\t{\n\t\t\tisInIndentableBlock = false;\n\t\t\tpreprocBlockEnd = 0;\n\t\t}\n\t}\n\t// this allows preprocessor blocks within this block to be indented\n\tif (!isInIndentableBlock)\n\t\tpreprocBlockEnd = 0;\n\t// peekReset() is done by previous peekNextText()\n\treturn isInIndentableBlock;\n}\n\n/**\n * Check to see if this is an EXEC SQL statement.\n *\n * @param line          a reference to the line to indent.\n * @param index         the current line index.\n * @return              true if the statement is EXEC SQL.\n */\nbool ASFormatter::isExecSQL(string  &line, size_t index) const\n{\n\tif (line[index] != 'e' && line[index] != 'E')\t// quick check to reject most\n\t\treturn false;\n\tstring word;\n\tif (isCharPotentialHeader(line, index))\n\t\tword = getCurrentWord(line, index);\n\tfor (size_t i = 0; i < word.length(); i++)\n\t\tword[i] = (char) toupper(word[i]);\n\tif (word != \"EXEC\")\n\t\treturn false;\n\tsize_t index2 = index + word.length();\n\tindex2 = line.find_first_not_of(\" \\t\", index2);\n\tif (index2 == string::npos)\n\t\treturn false;\n\tword.erase();\n\tif (isCharPotentialHeader(line, index2))\n\t\tword = getCurrentWord(line, index2);\n\tfor (size_t i = 0; i < word.length(); i++)\n\t\tword[i] = (char) toupper(word[i]);\n\tif (word != \"SQL\")\n\t\treturn false;\n\treturn true;\n}\n\n/**\n * The continuation lines must be adjusted so the leading spaces\n *     is equivalent to the text on the opening line.\n *\n * Updates currentLine and charNum.\n */\nvoid ASFormatter::trimContinuationLine()\n{\n\tsize_t len = currentLine.length();\n\tsize_t tabSize = getTabLength();\n\tcharNum = 0;\n\n\tif (leadingSpaces > 0 && len > 0)\n\t{\n\t\tsize_t i;\n\t\tsize_t continuationIncrementIn = 0;\n\t\tfor (i = 0; (i < len) && (i + continuationIncrementIn < leadingSpaces); i++)\n\t\t{\n\t\t\tif (!isWhiteSpace(currentLine[i]))\t\t// don't delete any text\n\t\t\t{\n\t\t\t\tif (i < continuationIncrementIn)\n\t\t\t\t\tleadingSpaces = i + tabIncrementIn;\n\t\t\t\tcontinuationIncrementIn = tabIncrementIn;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (currentLine[i] == '\\t')\n\t\t\t\tcontinuationIncrementIn += tabSize - 1 - ((continuationIncrementIn + i) % tabSize);\n\t\t}\n\n\t\tif ((int) continuationIncrementIn == tabIncrementIn)\n\t\t\tcharNum = i;\n\t\telse\n\t\t{\n\t\t\t// build a new line with the equivalent leading chars\n\t\t\tstring newLine;\n\t\t\tint leadingChars = 0;\n\t\t\tif ((int) leadingSpaces > tabIncrementIn)\n\t\t\t\tleadingChars = leadingSpaces - tabIncrementIn;\n\t\t\tnewLine.append(leadingChars, ' ');\n\t\t\tnewLine.append(currentLine, i, len - i);\n\t\t\tcurrentLine = newLine;\n\t\t\tcharNum = leadingChars;\n\t\t\tif (currentLine.length() == 0)\n\t\t\t\tcurrentLine = string(\" \");        // a null is inserted if this is not done\n\t\t}\n\t\tif (i >= len)\n\t\t\tcharNum = 0;\n\t}\n\treturn;\n}\n\n/**\n * Determine if a header is a closing header\n *\n * @return      true if the header is a closing header.\n */\nbool ASFormatter::isClosingHeader(const string* header) const\n{\n\treturn (header == &AS_ELSE\n\t        || header == &AS_CATCH\n\t        || header == &AS_FINALLY);\n}\n\n/**\n * Determine if a * following a closing paren is immediately.\n * after a cast. If so it is a deference and not a multiply.\n * e.g. \"(int*) *ptr\" is a deference.\n */\nbool ASFormatter::isImmediatelyPostCast() const\n{\n\tassert(previousNonWSChar == ')' && currentChar == '*');\n\t// find preceding closing paren on currentLine or readyFormattedLine\n\tstring line;\t\t// currentLine or readyFormattedLine\n\tsize_t paren = currentLine.rfind(\")\", charNum);\n\tif (paren != string::npos)\n\t\tline = currentLine;\n\t// if not on currentLine it must be on the previous line\n\telse\n\t{\n\t\tline = readyFormattedLine;\n\t\tparen = line.rfind(\")\");\n\t\tif (paren == string::npos)\n\t\t\treturn false;\n\t}\n\tif (paren == 0)\n\t\treturn false;\n\n\t// find character preceding the closing paren\n\tsize_t lastChar = line.find_last_not_of(\" \\t\", paren - 1);\n\tif (lastChar == string::npos)\n\t\treturn false;\n\t// check for pointer cast\n\tif (line[lastChar] == '*')\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * Determine if a < is a template definition or instantiation.\n * Sets the class variables isInTemplate and templateDepth.\n */\nvoid ASFormatter::checkIfTemplateOpener()\n{\n\tassert(!isInTemplate && currentChar == '<');\n\n\t// find first char after the '<' operators\n\tsize_t firstChar = currentLine.find_first_not_of(\"< \\t\", charNum);\n\tif (firstChar == string::npos\n\t        || currentLine[firstChar] == '=')\n\t{\n\t\t// this is not a template -> leave...\n\t\tisInTemplate = false;\n\t\treturn;\n\t}\n\n\tbool isFirstLine = true;\n\tbool needReset = false;\n\tint parenDepth_ = 0;\n\tint maxTemplateDepth = 0;\n\ttemplateDepth = 0;\n\tstring nextLine_ = currentLine.substr(charNum);\n\n\t// find the angle brackets, bypassing all comments and quotes.\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tchar quoteChar_ = ' ';\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tneedReset = true;\n\t\t}\n\t\t// parse the line\n\t\tfor (size_t i = 0; i < nextLine_.length(); i++)\n\t\t{\n\t\t\tchar currentChar_ = nextLine_[i];\n\t\t\tif (isWhiteSpace(currentChar_))\n\t\t\t\tcontinue;\n\t\t\tif (nextLine_.compare(i, 2, \"/*\") == 0)\n\t\t\t\tisInComment_ = true;\n\t\t\tif (isInComment_)\n\t\t\t{\n\t\t\t\tif (nextLine_.compare(i, 2, \"*/\") == 0)\n\t\t\t\t{\n\t\t\t\t\tisInComment_ = false;\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (currentChar_ == '\\\\')\n\t\t\t{\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isInQuote_)\n\t\t\t{\n\t\t\t\tif (currentChar_ == quoteChar_)\n\t\t\t\t\tisInQuote_ = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (currentChar_ == '\"' || currentChar_ == '\\'')\n\t\t\t{\n\t\t\t\tisInQuote_ = true;\n\t\t\t\tquoteChar_ = currentChar_;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_.compare(i, 2, \"//\") == 0)\n\t\t\t{\n\t\t\t\ti = nextLine_.length();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// not in a comment or quote\n\t\t\tif (currentChar_ == '<')\n\t\t\t{\n\t\t\t\t++templateDepth;\n\t\t\t\t++maxTemplateDepth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (currentChar_ == '>')\n\t\t\t{\n\t\t\t\t--templateDepth;\n\t\t\t\tif (templateDepth == 0)\n\t\t\t\t{\n\t\t\t\t\tif (parenDepth_ == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t// this is a template!\n\t\t\t\t\t\tisInTemplate = true;\n\t\t\t\t\t\ttemplateDepth = maxTemplateDepth;\n\t\t\t\t\t}\n\t\t\t\t\tgoto exitFromSearch;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (currentChar_ == '(' || currentChar_ == ')')\n\t\t\t{\n\t\t\t\tif (currentChar_ == '(')\n\t\t\t\t\t++parenDepth_;\n\t\t\t\telse\n\t\t\t\t\t--parenDepth_;\n\t\t\t\tif (parenDepth_ >= 0)\n\t\t\t\t\tcontinue;\n\t\t\t\t// this is not a template -> leave...\n\t\t\t\tisInTemplate = false;\n\t\t\t\tgoto exitFromSearch;\n\t\t\t}\n\t\t\telse if (nextLine_.compare(i, 2, AS_AND) == 0\n\t\t\t         || nextLine_.compare(i, 2, AS_OR) == 0)\n\t\t\t{\n\t\t\t\t// this is not a template -> leave...\n\t\t\t\tisInTemplate = false;\n\t\t\t\tgoto exitFromSearch;\n\t\t\t}\n\t\t\telse if (currentChar_ == ','  // comma,     e.g. A<int, char>\n\t\t\t         || currentChar_ == '&'    // reference, e.g. A<int&>\n\t\t\t         || currentChar_ == '*'    // pointer,   e.g. A<int*>\n\t\t\t         || currentChar_ == '^'    // C++/CLI managed pointer, e.g. A<int^>\n\t\t\t         || currentChar_ == ':'    // ::,        e.g. std::string\n\t\t\t         || currentChar_ == '='    // assign     e.g. default parameter\n\t\t\t         || currentChar_ == '['    // []         e.g. string[]\n\t\t\t         || currentChar_ == ']'    // []         e.g. string[]\n\t\t\t         || currentChar_ == '('    // (...)      e.g. function definition\n\t\t\t         || currentChar_ == ')'    // (...)      e.g. function definition\n\t\t\t         || (isJavaStyle() && currentChar_ == '?')   // Java wildcard\n\t\t\t        )\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (!isLegalNameChar(currentChar_))\n\t\t\t{\n\t\t\t\t// this is not a template -> leave...\n\t\t\t\tisInTemplate = false;\n\t\t\t\ttemplateDepth = 0;\n\t\t\t\tgoto exitFromSearch;\n\t\t\t}\n\t\t\tstring name = getCurrentWord(nextLine_, i);\n\t\t\ti += name.length() - 1;\n\t\t}\t// end of for loop\n\t}\t// end of while loop\n\n\t// goto needed to exit from two loops\nexitFromSearch:\n\tif (needReset)\n\t\tsourceIterator->peekReset();\n}\n\nvoid ASFormatter::updateFormattedLineSplitPoints(char appendedChar)\n{\n\tassert(maxCodeLength != string::npos);\n\tassert(formattedLine.length() > 0);\n\n\tif (!isOkToSplitFormattedLine())\n\t\treturn;\n\n\tchar nextChar = peekNextChar();\n\n\t// don't split before an end of line comment\n\tif (nextChar == '/')\n\t\treturn;\n\n\t// don't split before or after a bracket\n\tif (appendedChar == '{' || appendedChar == '}'\n\t        || previousNonWSChar == '{' || previousNonWSChar == '}'\n\t        || nextChar == '{' || nextChar == '}'\n\t        || currentChar == '{' || currentChar == '}')\t// currentChar tests for an appended bracket\n\t\treturn;\n\n\t// don't split before or after a block paren\n\tif (appendedChar == '[' || appendedChar == ']'\n\t        || previousNonWSChar == '['\n\t        || nextChar == '[' || nextChar == ']')\n\t\treturn;\n\n\tif (isWhiteSpace(appendedChar))\n\t{\n\t\tif (nextChar != ')'\t\t\t\t\t\t// space before a closing paren\n\t\t        && nextChar != '('\t\t\t\t// space before an opening paren\n\t\t        && nextChar != '/'\t\t\t\t// space before a comment\n\t\t        && nextChar != ':'\t\t\t\t// space before a colon\n\t\t        && currentChar != ')'\t\t\t// appended space before and after a closing paren\n\t\t        && currentChar != '('\t\t\t// appended space before and after a opening paren\n\t\t        && previousNonWSChar != '('\t\t// decided at the '('\n\t\t        // don't break before a pointer or reference aligned to type\n\t\t        && !(nextChar == '*'\n\t\t             && !isCharPotentialOperator(previousNonWSChar)\n\t\t             && pointerAlignment == PTR_ALIGN_TYPE)\n\t\t        && !(nextChar == '&'\n\t\t             && !isCharPotentialOperator(previousNonWSChar)\n\t\t             && (referenceAlignment == REF_ALIGN_TYPE\n\t\t                 || (referenceAlignment == REF_SAME_AS_PTR && pointerAlignment == PTR_ALIGN_TYPE)))\n\t\t   )\n\t\t{\n\t\t\tif (formattedLine.length() - 1 <= maxCodeLength)\n\t\t\t\tmaxWhiteSpace = formattedLine.length() - 1;\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = formattedLine.length() - 1;\n\t\t}\n\t}\n\t// unpadded closing parens may split after the paren (counts as whitespace)\n\telse if (appendedChar == ')')\n\t{\n\t\tif (nextChar != ')'\n\t\t        && nextChar != ' '\n\t\t        && nextChar != ';'\n\t\t        && nextChar != ','\n\t\t        && nextChar != '.'\n\t\t        && !(nextChar == '-' && pointerSymbolFollows()))\t// check for ->\n\t\t{\n\t\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\t\tmaxWhiteSpace = formattedLine.length();\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = formattedLine.length();\n\t\t}\n\t}\n\t// unpadded commas may split after the comma\n\telse if (appendedChar == ',')\n\t{\n\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\tmaxComma = formattedLine.length();\n\t\telse\n\t\t\tmaxCommaPending = formattedLine.length();\n\t}\n\telse if (appendedChar == '(')\n\t{\n\t\tif (nextChar != ')' && nextChar != '(' && nextChar != '\"' && nextChar != '\\'')\n\t\t{\n\t\t\t// if follows an operator break before\n\t\t\tsize_t parenNum;\n\t\t\tif (isCharPotentialOperator(previousNonWSChar))\n\t\t\t\tparenNum = formattedLine.length() - 1 ;\n\t\t\telse\n\t\t\t\tparenNum = formattedLine.length();\n\t\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\t\tmaxParen = parenNum;\n\t\t\telse\n\t\t\t\tmaxParenPending = parenNum;\n\t\t}\n\t}\n\telse if (appendedChar == ';')\n\t{\n\t\tif (nextChar != ' '  && nextChar != '}' && nextChar != '/')\t// check for following comment\n\t\t{\n\t\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\t\tmaxSemi = formattedLine.length();\n\t\t\telse\n\t\t\t\tmaxSemiPending = formattedLine.length();\n\t\t}\n\t}\n}\n\nvoid ASFormatter::updateFormattedLineSplitPointsOperator(const string &sequence)\n{\n\tassert(maxCodeLength != string::npos);\n\tassert(formattedLine.length() > 0);\n\n\tif (!isOkToSplitFormattedLine())\n\t\treturn;\n\n\tchar nextChar = peekNextChar();\n\n\t// don't split before an end of line comment\n\tif (nextChar == '/')\n\t\treturn;\n\n\t// check for logical conditional\n\tif (sequence == \"||\" || sequence ==  \"&&\" || sequence ==  \"or\" || sequence ==  \"and\")\n\t{\n\t\tif (shouldBreakLineAfterLogical)\n\t\t{\n\t\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\t\tmaxAndOr = formattedLine.length();\n\t\t\telse\n\t\t\t\tmaxAndOrPending = formattedLine.length();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// adjust for leading space in the sequence\n\t\t\tsize_t sequenceLength = sequence.length();\n\t\t\tif (formattedLine.length() > sequenceLength\n\t\t\t        && isWhiteSpace(formattedLine[formattedLine.length() - sequenceLength - 1]))\n\t\t\t\tsequenceLength++;\n\t\t\tif (formattedLine.length() - sequenceLength <= maxCodeLength)\n\t\t\t\tmaxAndOr = formattedLine.length() - sequenceLength;\n\t\t\telse\n\t\t\t\tmaxAndOrPending = formattedLine.length() - sequenceLength;\n\t\t}\n\t}\n\t// comparison operators will split after the operator (counts as whitespace)\n\telse if (sequence == \"==\" || sequence ==  \"!=\" || sequence ==  \">=\" || sequence ==  \"<=\")\n\t{\n\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\tmaxWhiteSpace = formattedLine.length();\n\t\telse\n\t\t\tmaxWhiteSpacePending = formattedLine.length();\n\t}\n\t// unpadded operators that will split BEFORE the operator (counts as whitespace)\n\telse if (sequence == \"+\" || sequence == \"-\" || sequence == \"?\")\n\t{\n\t\tif (charNum > 0\n\t\t        && (isLegalNameChar(currentLine[charNum - 1])\n\t\t            || currentLine[charNum - 1] == ')'\n\t\t            || currentLine[charNum - 1] == ']'\n\t\t            || currentLine[charNum - 1] == '\\\"'))\n\t\t{\n\t\t\tif (formattedLine.length() - 1 <=  maxCodeLength)\n\t\t\t\tmaxWhiteSpace = formattedLine.length() - 1;\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = formattedLine.length() - 1;\n\t\t}\n\t}\n\t// unpadded operators that will USUALLY split AFTER the operator (counts as whitespace)\n\telse if (sequence == \"=\" || sequence == \":\")\n\t{\n\t\t// split BEFORE if the line is too long\n\t\t// do NOT use <= here, must allow for a bracket attached to an array\n\t\tsize_t splitPoint = 0;\n\t\tif (formattedLine.length() <  maxCodeLength)\n\t\t\tsplitPoint = formattedLine.length();\n\t\telse\n\t\t\tsplitPoint = formattedLine.length() - 1;\n\t\t// padded or unpadded arrays\n\t\tif (previousNonWSChar == ']')\n\t\t{\n\t\t\tif (formattedLine.length() - 1 <=  maxCodeLength)\n\t\t\t\tmaxWhiteSpace = splitPoint;\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = splitPoint;\n\t\t}\n\t\telse if (charNum > 0\n\t\t         && (isLegalNameChar(currentLine[charNum - 1])\n\t\t             || currentLine[charNum - 1] == ')'\n\t\t             || currentLine[charNum - 1] == ']'))\n\t\t{\n\t\t\tif (formattedLine.length() <=  maxCodeLength)\n\t\t\t\tmaxWhiteSpace = splitPoint;\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = splitPoint;\n\t\t}\n\t}\n}\n\n/**\n * Update the split point when a pointer or reference is formatted.\n * The argument is the maximum index of the last whitespace character.\n */\nvoid ASFormatter::updateFormattedLineSplitPointsPointerOrReference(size_t index)\n{\n\tassert(maxCodeLength != string::npos);\n\tassert(formattedLine.length() > 0);\n\tassert(index < formattedLine.length());\n\n\tif (!isOkToSplitFormattedLine())\n\t\treturn;\n\n\tif (index < maxWhiteSpace)\t\t// just in case\n\t\treturn;\n\n\tif (index <= maxCodeLength)\n\t\tmaxWhiteSpace = index;\n\telse\n\t\tmaxWhiteSpacePending = index;\n}\n\nbool ASFormatter::isOkToSplitFormattedLine()\n{\n\tassert(maxCodeLength != string::npos);\n\t// Is it OK to split the line?\n\tif (shouldKeepLineUnbroken\n\t        || isInLineComment\n\t        || isInComment\n\t        || isInQuote\n\t        || isInCase\n\t        || isInPreprocessor\n\t        || isInExecSQL\n\t        || isInAsm || isInAsmOneLine || isInAsmBlock\n\t        || isInTemplate)\n\t\treturn false;\n\n\tif (!isOkToBreakBlock(bracketTypeStack->back()) && currentChar != '{')\n\t{\n\t\tshouldKeepLineUnbroken = true;\n\t\tclearFormattedLineSplitPoints();\n\t\treturn false;\n\t}\n\telse if (isBracketType(bracketTypeStack->back(), ARRAY_TYPE))\n\t{\n\t\tshouldKeepLineUnbroken = true;\n\t\tif (!isBracketType(bracketTypeStack->back(), ARRAY_NIS_TYPE))\n\t\t\tclearFormattedLineSplitPoints();\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n/* This is called if the option maxCodeLength is set.\n */\nvoid ASFormatter::testForTimeToSplitFormattedLine()\n{\n\t//\tDO NOT ASSERT maxCodeLength HERE\n\t// should the line be split\n\tif (formattedLine.length() > maxCodeLength && !isLineReady)\n\t{\n\t\tsize_t splitPoint = findFormattedLineSplitPoint();\n\t\tif (splitPoint > 0 && splitPoint < formattedLine.length())\n\t\t{\n\t\t\tstring splitLine = formattedLine.substr(splitPoint);\n\t\t\tformattedLine = formattedLine.substr(0, splitPoint);\n\t\t\tbreakLine(true);\n\t\t\tformattedLine = splitLine;\n\t\t\t// if break-blocks is requested and this is a one-line statement\n\t\t\tstring nextWord = ASBeautifier::getNextWord(currentLine, charNum - 1);\n\t\t\tif (isAppendPostBlockEmptyLineRequested\n\t\t\t        && (nextWord == \"break\" || nextWord == \"continue\"))\n\t\t\t{\n\t\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t\t\t}\n\t\t\telse\n\t\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t\t\t// adjust max split points\n\t\t\tmaxAndOr = (maxAndOr > splitPoint) ? (maxAndOr - splitPoint) : 0;\n\t\t\tmaxSemi = (maxSemi > splitPoint) ? (maxSemi - splitPoint) : 0;\n\t\t\tmaxComma = (maxComma > splitPoint) ? (maxComma - splitPoint) : 0;\n\t\t\tmaxParen = (maxParen > splitPoint) ? (maxParen - splitPoint) : 0;\n\t\t\tmaxWhiteSpace = (maxWhiteSpace > splitPoint) ? (maxWhiteSpace - splitPoint) : 0;\n\t\t\tif (maxSemiPending > 0)\n\t\t\t{\n\t\t\t\tmaxSemi = (maxSemiPending > splitPoint) ? (maxSemiPending - splitPoint) : 0;\n\t\t\t\tmaxSemiPending = 0;\n\t\t\t}\n\t\t\tif (maxAndOrPending > 0)\n\t\t\t{\n\t\t\t\tmaxAndOr = (maxAndOrPending > splitPoint) ? (maxAndOrPending - splitPoint) : 0;\n\t\t\t\tmaxAndOrPending = 0;\n\t\t\t}\n\t\t\tif (maxCommaPending > 0)\n\t\t\t{\n\t\t\t\tmaxComma = (maxCommaPending > splitPoint) ? (maxCommaPending - splitPoint) : 0;\n\t\t\t\tmaxCommaPending = 0;\n\t\t\t}\n\t\t\tif (maxParenPending > 0)\n\t\t\t{\n\t\t\t\tmaxParen = (maxParenPending > splitPoint) ? (maxParenPending - splitPoint) : 0;\n\t\t\t\tmaxParenPending = 0;\n\t\t\t}\n\t\t\tif (maxWhiteSpacePending > 0)\n\t\t\t{\n\t\t\t\tmaxWhiteSpace = (maxWhiteSpacePending > splitPoint) ? (maxWhiteSpacePending - splitPoint) : 0;\n\t\t\t\tmaxWhiteSpacePending = 0;\n\t\t\t}\n\t\t\t// don't allow an empty formatted line\n\t\t\tsize_t firstText = formattedLine.find_first_not_of(\" \\t\");\n\t\t\tif (firstText == string::npos && formattedLine.length() > 0)\n\t\t\t{\n\t\t\t\tformattedLine.erase();\n\t\t\t\tclearFormattedLineSplitPoints();\n\t\t\t\tif (isWhiteSpace(currentChar))\n\t\t\t\t\tfor (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++)\n\t\t\t\t\t\tgoForward(1);\n\t\t\t}\n\t\t\telse if (firstText > 0)\n\t\t\t{\n\t\t\t\tformattedLine.erase(0, firstText);\n\t\t\t\tmaxSemi = (maxSemi > firstText) ? (maxSemi - firstText) : 0;\n\t\t\t\tmaxAndOr = (maxAndOr > firstText) ? (maxAndOr - firstText) : 0;\n\t\t\t\tmaxComma = (maxComma > firstText) ? (maxComma - firstText) : 0;\n\t\t\t\tmaxParen = (maxParen > firstText) ? (maxParen - firstText) : 0;\n\t\t\t\tmaxWhiteSpace = (maxWhiteSpace > firstText) ? (maxWhiteSpace - firstText) : 0;\n\t\t\t}\n\t\t\t// reset formattedLineCommentNum\n\t\t\tif (formattedLineCommentNum != string::npos)\n\t\t\t{\n\t\t\t\tformattedLineCommentNum = formattedLine.find(\"//\");\n\t\t\t\tif (formattedLineCommentNum == string::npos)\n\t\t\t\t\tformattedLineCommentNum = formattedLine.find(\"/*\");\n\t\t\t}\n\t\t}\n\t}\n}\n\nsize_t ASFormatter::findFormattedLineSplitPoint() const\n{\n\tassert(maxCodeLength != string::npos);\n\t// determine where to split\n\tsize_t minCodeLength = 10;\n\tsize_t splitPoint = 0;\n\tsplitPoint = maxSemi;\n\tif (maxAndOr >= minCodeLength)\n\t\tsplitPoint = maxAndOr;\n\tif (splitPoint < minCodeLength)\n\t{\n\t\tsplitPoint = maxWhiteSpace;\n\t\t// use maxParen instead if it is long enough\n\t\tif (maxParen > splitPoint\n\t\t        || maxParen >= maxCodeLength * .7)\n\t\t\tsplitPoint = maxParen;\n\t\t// use maxComma instead if it is long enough\n\t\t// increasing the multiplier causes more splits at whitespace\n\t\tif (maxComma > splitPoint\n\t\t        || maxComma >= maxCodeLength * .3)\n\t\t\tsplitPoint = maxComma;\n\t}\n\t// replace split point with first available break point\n\tif (splitPoint < minCodeLength)\n\t{\n\t\tsplitPoint = string::npos;\n\t\tif (maxSemiPending > 0 && maxSemiPending < splitPoint)\n\t\t\tsplitPoint = maxSemiPending;\n\t\tif (maxAndOrPending > 0 && maxAndOrPending < splitPoint)\n\t\t\tsplitPoint = maxAndOrPending;\n\t\tif (maxCommaPending > 0 && maxCommaPending < splitPoint)\n\t\t\tsplitPoint = maxCommaPending;\n\t\tif (maxParenPending > 0 && maxParenPending < splitPoint)\n\t\t\tsplitPoint = maxParenPending;\n\t\tif (maxWhiteSpacePending > 0 && maxWhiteSpacePending < splitPoint)\n\t\t\tsplitPoint = maxWhiteSpacePending;\n\t\tif (splitPoint == string::npos)\n\t\t\tsplitPoint = 0;\n\t}\n\t// if remaining line after split is too long\n\telse if (formattedLine.length() - splitPoint > maxCodeLength)\n\t{\n\t\t// if end of the currentLine, find a new split point\n\t\tsize_t newCharNum;\n\t\tif (isCharPotentialHeader(currentLine, charNum))\n\t\t\tnewCharNum = getCurrentWord(currentLine, charNum).length() + charNum;\n\t\telse\n\t\t\tnewCharNum = charNum + 2;\n\t\tif (newCharNum + 1 > currentLine.length())\n\t\t{\n\t\t\t// don't move splitPoint from before a conditional to after\n\t\t\tif (maxWhiteSpace > splitPoint + 3)\n\t\t\t\tsplitPoint = maxWhiteSpace;\n\t\t\tif (maxParen > splitPoint)\n\t\t\t\tsplitPoint = maxParen;\n\t\t}\n\t}\n\n\treturn splitPoint;\n}\n\nvoid ASFormatter::clearFormattedLineSplitPoints()\n{\n\tmaxSemi = 0;\n\tmaxAndOr = 0;\n\tmaxComma = 0;\n\tmaxParen = 0;\n\tmaxWhiteSpace = 0;\n\tmaxSemiPending = 0;\n\tmaxAndOrPending = 0;\n\tmaxCommaPending = 0;\n\tmaxParenPending = 0;\n\tmaxWhiteSpacePending = 0;\n}\n\n/**\n * Check if a pointer symbol (->) follows on the currentLine.\n */\nbool ASFormatter::pointerSymbolFollows() const\n{\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\tif (peekNum == string::npos || currentLine.compare(peekNum, 2, \"->\") != 0)\n\t\treturn false;\n\treturn true;\n}\n\n/**\n * Compute the input checksum.\n * This is called as an assert so it for is debug config only\n */\nbool ASFormatter::computeChecksumIn(const string &currentLine_)\n{\n\tfor (size_t i = 0; i < currentLine_.length(); i++)\n\t\tif (!isWhiteSpace(currentLine_[i]))\n\t\t\tchecksumIn += currentLine_[i];\n\treturn true;\n}\n\n/**\n * Adjust the input checksum for deleted chars.\n * This is called as an assert so it for is debug config only\n */\nbool ASFormatter::adjustChecksumIn(int adjustment)\n{\n\tchecksumIn += adjustment;\n\treturn true;\n}\n\n/**\n * get the value of checksumIn for unit testing\n *\n * @return   checksumIn.\n */\nsize_t ASFormatter::getChecksumIn() const\n{\n\treturn checksumIn;\n}\n\n/**\n * Compute the output checksum.\n * This is called as an assert so it is for debug config only\n */\nbool ASFormatter::computeChecksumOut(const string &beautifiedLine)\n{\n\tfor (size_t i = 0; i < beautifiedLine.length(); i++)\n\t\tif (!isWhiteSpace(beautifiedLine[i]))\n\t\t\tchecksumOut += beautifiedLine[i];\n\treturn true;\n}\n\n/**\n * Return isLineReady for the final check at end of file.\n */\nbool ASFormatter::getIsLineReady() const\n{\n\treturn isLineReady;\n}\n\n/**\n * get the value of checksumOut for unit testing\n *\n * @return   checksumOut.\n */\nsize_t ASFormatter::getChecksumOut() const\n{\n\treturn checksumOut;\n}\n\n/**\n * Return the difference in checksums.\n * If zero all is okay.\n */\nint ASFormatter::getChecksumDiff() const\n{\n\treturn checksumOut - checksumIn;\n}\n\n// for unit testing\nint ASFormatter::getFormatterFileType() const\n{\n\treturn formatterFileType;\n}\n\n// Check if an operator follows the next word.\n// The next word must be a legal name.\nconst string* ASFormatter::getFollowingOperator() const\n{\n\t// find next word\n\tsize_t nextNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\tif (nextNum == string::npos)\n\t\treturn NULL;\n\n\tif (!isLegalNameChar(currentLine[nextNum]))\n\t\treturn NULL;\n\n\t// bypass next word and following spaces\n\twhile (nextNum < currentLine.length())\n\t{\n\t\tif (!isLegalNameChar(currentLine[nextNum])\n\t\t        && !isWhiteSpace(currentLine[nextNum]))\n\t\t\tbreak;\n\t\tnextNum++;\n\t}\n\n\tif (nextNum >= currentLine.length()\n\t        || !isCharPotentialOperator(currentLine[nextNum])\n\t        || currentLine[nextNum] == '/')\t\t// comment\n\t\treturn NULL;\n\n\tconst string* newOperator = ASBeautifier::findOperator(currentLine, nextNum, operators);\n\treturn newOperator;\n}\n\n// Check following data to determine if the current character is an array operator.\nbool ASFormatter::isArrayOperator() const\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(isBracketType(bracketTypeStack->back(), ARRAY_TYPE));\n\n\t// find next word\n\tsize_t nextNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\tif (nextNum == string::npos)\n\t\treturn false;\n\n\tif (!isLegalNameChar(currentLine[nextNum]))\n\t\treturn false;\n\n\t// bypass next word and following spaces\n\twhile (nextNum < currentLine.length())\n\t{\n\t\tif (!isLegalNameChar(currentLine[nextNum])\n\t\t        && !isWhiteSpace(currentLine[nextNum]))\n\t\t\tbreak;\n\t\tnextNum++;\n\t}\n\n\t// check for characters that indicate an operator\n\tif (currentLine[nextNum] == ','\n\t        || currentLine[nextNum] == '}'\n\t        || currentLine[nextNum] == ')'\n\t        || currentLine[nextNum] == '(')\n\t\treturn true;\n\treturn false;\n}\n\n// Reset the flags that indicate various statement information.\nvoid ASFormatter::resetEndOfStatement()\n{\n\tfoundQuestionMark = false;\n\tfoundNamespaceHeader = false;\n\tfoundClassHeader = false;\n\tfoundStructHeader = false;\n\tfoundInterfaceHeader = false;\n\tfoundPreDefinitionHeader = false;\n\tfoundPreCommandHeader = false;\n\tfoundPreCommandMacro = false;\n\tfoundCastOperator = false;\n\tisInPotentialCalculation = false;\n\tisSharpAccessor = false;\n\tisSharpDelegate = false;\n\tisInObjCMethodDefinition = false;\n\tisInObjCInterface = false;\n\tisInObjCSelector = false;\n\tisInEnum = false;\n\tisInExternC = false;\n\telseHeaderFollowsComments = false;\n\tnonInStatementBracket = 0;\n\twhile (!questionMarkStack->empty())\n\t\tquestionMarkStack->pop_back();\n}\n\n// pad an Objective-C method colon\nvoid ASFormatter::padObjCMethodColon()\n{\n\tassert(currentChar == ':');\n\tchar nextChar = peekNextChar();\n\tif (objCColonPadMode == COLON_PAD_NONE\n\t        || objCColonPadMode == COLON_PAD_AFTER\n\t        || nextChar == ')')\n\t{\n\t\t// remove spaces before\n\t\tfor (int i = formattedLine.length() - 1; (i > -1) && isWhiteSpace(formattedLine[i]); i--)\n\t\t\tformattedLine.erase(i);\n\t}\n\telse\n\t{\n\t\t// pad space before\n\t\tfor (int i = formattedLine.length() - 1; (i > 0) && isWhiteSpace(formattedLine[i]); i--)\n\t\t\tif (isWhiteSpace(formattedLine[i - 1]))\n\t\t\t\tformattedLine.erase(i);\n\t\tappendSpacePad();\n\t}\n\tif (objCColonPadMode == COLON_PAD_NONE\n\t        || objCColonPadMode == COLON_PAD_BEFORE\n\t        || nextChar == ')')\n\t{\n\t\t// remove spaces after\n\t\t// do not need to bump i since a char is erased\n\t\tsize_t i = charNum + 1;\n\t\twhile ((i < currentLine.length()) && isWhiteSpace(currentLine[i]))\n\t\t\tcurrentLine.erase(i, 1);\n\t}\n\telse\n\t{\n\t\t// pad space after\n\t\t// do not need to bump i since a char is erased\n\t\tsize_t i = charNum + 1;\n\t\twhile ((i + 1 < currentLine.length()) && isWhiteSpace(currentLine[i]))\n\t\t\tcurrentLine.erase(i, 1);\n\t\tif (((int) currentLine.length() > charNum + 1) && !isWhiteSpace(currentLine[charNum + 1]))\n\t\t\tcurrentLine.insert(charNum + 1, \" \");\n\t}\n}\n\n// Remove the leading '*' from a comment line and indent to the next tab.\nvoid ASFormatter::stripCommentPrefix()\n{\n\tint firstChar = formattedLine.find_first_not_of(\" \\t\");\n\tif (firstChar < 0)\n\t\treturn;\n\n\tif (isInCommentStartLine)\n\t{\n\t\t// comment opener must begin the line\n\t\tif (formattedLine.compare(firstChar, 2, \"/*\") != 0)\n\t\t\treturn;\n\t\tint commentOpener = firstChar;\n\t\t// ignore single line comments\n\t\tint commentEnd = formattedLine.find(\"*/\", firstChar + 2);\n\t\tif (commentEnd != -1)\n\t\t\treturn;\n\t\t// first char after the comment opener must be at least one indent\n\t\tint followingText = formattedLine.find_first_not_of(\" \\t\", commentOpener + 2);\n\t\tif (followingText < 0)\n\t\t\treturn;\n\t\tif (formattedLine[followingText] == '*' || formattedLine[followingText] == '!')\n\t\t\tfollowingText = formattedLine.find_first_not_of(\" \\t\", followingText + 1);\n\t\tif (followingText < 0)\n\t\t\treturn;\n\t\tif (formattedLine[followingText] == '*')\n\t\t\treturn;\n\t\tint indentLen = getIndentLength();\n\t\tint followingTextIndent = followingText - commentOpener;\n\t\tif (followingTextIndent < indentLen)\n\t\t{\n\t\t\tstring stringToInsert(indentLen - followingTextIndent, ' ');\n\t\t\tformattedLine.insert(followingText, stringToInsert);\n\t\t}\n\t\treturn;\n\t}\n\t// comment body including the closer\n\telse if (formattedLine[firstChar] == '*')\n\t{\n\t\tif (formattedLine.compare(firstChar, 2, \"*/\") == 0)\n\t\t{\n\t\t\t// line starts with an end comment\n\t\t\tformattedLine = \"*/\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// build a new line with one indent\n\t\t\tint secondChar = formattedLine.find_first_not_of(\" \\t\", firstChar + 1);\n\t\t\tif (secondChar < 0)\n\t\t\t{\n\t\t\t\tadjustChecksumIn(-'*');\n\t\t\t\tformattedLine.erase();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (formattedLine[secondChar] == '*')\n\t\t\t\treturn;\n\t\t\t// replace the leading '*'\n\t\t\tint indentLen = getIndentLength();\n\t\t\tadjustChecksumIn(-'*');\n\t\t\t// second char must be at least one indent\n\t\t\tif (formattedLine.substr(0, secondChar).find('\\t') != string::npos)\n\t\t\t{\n\t\t\t\tformattedLine.erase(firstChar, 1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint spacesToInsert = 0;\n\t\t\t\tif (secondChar >= indentLen)\n\t\t\t\t\tspacesToInsert = secondChar;\n\t\t\t\telse\n\t\t\t\t\tspacesToInsert = indentLen;\n\t\t\t\tformattedLine = string(spacesToInsert, ' ') + formattedLine.substr(secondChar);\n\t\t\t}\n\t\t\t// remove a trailing '*'\n\t\t\tint lastChar = formattedLine.find_last_not_of(\" \\t\");\n\t\t\tif (lastChar > -1 && formattedLine[lastChar] == '*')\n\t\t\t{\n\t\t\t\tadjustChecksumIn(-'*');\n\t\t\t\tformattedLine[lastChar] = ' ';\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t// first char not a '*'\n\t\t// first char must be at least one indent\n\t\tif (formattedLine.substr(0, firstChar).find('\\t') == string::npos)\n\t\t{\n\t\t\tint indentLen = getIndentLength();\n\t\t\tif (firstChar < indentLen)\n\t\t\t{\n\t\t\t\tstring stringToInsert(indentLen, ' ');\n\t\t\t\tformattedLine = stringToInsert + formattedLine.substr(firstChar);\n\t\t\t}\n\t\t}\n\t}\n}\n\n}   // end namespace astyle\n"
  },
  {
    "path": "3rdpart/astyle/ASLocalizer.cpp",
    "content": "//\n//  FILE ENCODING IS UTF-8 WITHOUT A BOM.\n//  русский    中文（简体）    日本    한국의\n//\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASLocalizer.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n *   To add a new language:\n *\n *   Add a new translation class to ASLocalizer.h.\n *   Add the Add the English-Translation pair to the constructor in ASLocalizer.cpp.\n *   Update the WinLangCode array, if necessary.\n *   Add the language code to the function setTranslationClass().\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n//----------------------------------------------------------------------------\n// headers\n//----------------------------------------------------------------------------\n\n#include \"ASLocalizer.h\"\n\n#ifdef _WIN32\n\t#include <windows.h>\n#endif\n\n#ifdef __DMC__\n\t#include <locale.h>\n\t// digital mars doesn't have these\n\tconst size_t SUBLANG_CHINESE_MACAU = 5;\n\tconst size_t LANG_HINDI = 57;\n#endif\n\n#ifdef __VMS\n\t#define __USE_STD_IOSTREAM 1\n\t#include <assert>\n#else\n\t#include <cassert>\n#endif\n\n#include <cstdio>\n#include <iostream>\n#include <stdlib.h>\n#include <typeinfo>\n\n#ifdef _MSC_VER\n\t#pragma warning(disable: 4996)  // secure version deprecation warnings\n\t// #pragma warning(disable: 4267)  // 64 bit signed/unsigned loss of data\n#endif\n\n#ifdef __BORLANDC__\n\t#pragma warn -8104\t    // Local Static with constructor dangerous for multi-threaded apps\n#endif\n\n#ifdef __INTEL_COMPILER\n\t#pragma warning(disable:  383)  // value copied to temporary, reference to temporary used\n\t#pragma warning(disable:  981)  // operands are evaluated in unspecified order\n#endif\n\nnamespace astyle {\n\n#ifndef ASTYLE_LIB\n\n//----------------------------------------------------------------------------\n// ASLocalizer class methods.\n//----------------------------------------------------------------------------\n\nASLocalizer::ASLocalizer()\n// Set the locale information.\n{\n\t// set language default values to english (ascii)\n\t// this will be used if a locale or a language cannot be found\n\tm_localeName = \"UNKNOWN\";\n\tm_langID = \"en\";\n\tm_lcid = 0;\n\tm_subLangID.clear();\n\tm_translation = NULL;\n\n\t// Not all compilers support the C++ function locale::global(locale(\"\"));\n\t// For testing on Windows change the \"Region and Language\" settings or use AppLocale.\n\t// For testing on Linux change the LANG environment variable: LANG=fr_FR.UTF-8.\n\t// setlocale() will use the LANG environment variable on Linux.\n\n\tchar* localeName = setlocale(LC_ALL, \"\");\n\tif (localeName == NULL)\t\t// use the english (ascii) defaults\n\t{\n\t\tfprintf(stderr, \"\\n%s\\n\\n\", \"Cannot set native locale, reverting to English\");\n\t\tsetTranslationClass();\n\t\treturn;\n\t}\n\t// set the class variables\n#ifdef _WIN32\n\tsize_t lcid = GetUserDefaultLCID();\n\tsetLanguageFromLCID(lcid);\n#else\n\tsetLanguageFromName(localeName);\n#endif\n}\n\nASLocalizer::~ASLocalizer()\n// Delete dynamically allocated memory.\n{\n\tdelete m_translation;\n}\n\n#ifdef _WIN32\n\nstruct WinLangCode\n{\n\tsize_t winLang;\n\tchar canonicalLang[3];\n};\n\nstatic WinLangCode wlc[] =\n// primary language identifier http://msdn.microsoft.com/en-us/library/aa912554.aspx\n// sublanguage identifier http://msdn.microsoft.com/en-us/library/aa913256.aspx\n// language ID http://msdn.microsoft.com/en-us/library/ee797784%28v=cs.20%29.aspx\n{\n\t{ LANG_CHINESE,    \"zh\" },\n\t{ LANG_DUTCH,      \"nl\" },\n\t{ LANG_ENGLISH,    \"en\" },\n\t{ LANG_FINNISH,    \"fi\" },\n\t{ LANG_FRENCH,     \"fr\" },\n\t{ LANG_GERMAN,     \"de\" },\n\t{ LANG_HINDI,      \"hi\" },\n\t{ LANG_ITALIAN,    \"it\" },\n\t{ LANG_JAPANESE,   \"ja\" },\n\t{ LANG_KOREAN,     \"ko\" },\n\t{ LANG_POLISH,     \"pl\" },\n\t{ LANG_PORTUGUESE, \"pt\" },\n\t{ LANG_RUSSIAN,    \"ru\" },\n\t{ LANG_SPANISH,    \"es\" },\n\t{ LANG_SWEDISH,    \"sv\" },\n\t{ LANG_UKRAINIAN,  \"uk\" },\n};\n\nvoid ASLocalizer::setLanguageFromLCID(size_t lcid)\n// Windows get the language to use from the user locale.\n// NOTE: GetUserDefaultLocaleName() gets nearly the same name as Linux.\n//       But it needs Windows Vista or higher.\n//       Same with LCIDToLocaleName().\n{\n\tm_lcid = lcid;\n\tm_langID = \"en\";\t// default to english\n\n\tsize_t lang = PRIMARYLANGID(LANGIDFROMLCID(m_lcid));\n\tsize_t sublang = SUBLANGID(LANGIDFROMLCID(m_lcid));\n\t// find language in the wlc table\n\tsize_t count = sizeof(wlc) / sizeof(wlc[0]);\n\tfor (size_t i = 0; i < count; i++)\n\t{\n\t\tif (wlc[i].winLang == lang)\n\t\t{\n\t\t\tm_langID = wlc[i].canonicalLang;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (m_langID == \"zh\")\n\t{\n\t\tif (sublang == SUBLANG_CHINESE_SIMPLIFIED || sublang == SUBLANG_CHINESE_SINGAPORE)\n\t\t\tm_subLangID = \"CHS\";\n\t\telse\n\t\t\tm_subLangID = \"CHT\";\t// default\n\t}\n\tsetTranslationClass();\n}\n\n#endif\t// _win32\n\nstring ASLocalizer::getLanguageID() const\n// Returns the language ID in m_langID.\n{\n\treturn m_langID;\n}\n\nconst Translation* ASLocalizer::getTranslationClass() const\n// Returns the name of the translation class in m_translation.  Used for testing.\n{\n\tassert(m_translation);\n\treturn m_translation;\n}\n\nvoid ASLocalizer::setLanguageFromName(const char* langID)\n// Linux set the language to use from the langID.\n//\n// the language string has the following form\n//\n//      lang[_LANG][.encoding][@modifier]\n//\n// (see environ(5) in the Open Unix specification)\n//\n// where lang is the primary language, LANG is a sublang/territory,\n// encoding is the charset to use and modifier \"allows the user to select\n// a specific instance of localization data within a single category\"\n//\n// for example, the following strings are valid:\n//      fr\n//      fr_FR\n//      de_DE.iso88591\n//      de_DE@euro\n//      de_DE.iso88591@euro\n{\n\t// the constants describing the format of lang_LANG locale string\n\tstatic const size_t LEN_LANG = 2;\n\n\tm_lcid = 0;\n\tstring langStr = langID;\n\tm_langID = langStr.substr(0, LEN_LANG);\n\n\t// need the sublang for chinese\n\tif (m_langID == \"zh\" && langStr[LEN_LANG] == '_')\n\t{\n\t\tstring subLang = langStr.substr(LEN_LANG + 1, LEN_LANG);\n\t\tif (subLang == \"CN\" || subLang == \"SG\")\n\t\t\tm_subLangID = \"CHS\";\n\t\telse\n\t\t\tm_subLangID = \"CHT\";\t// default\n\t}\n\tsetTranslationClass();\n}\n\nconst char* ASLocalizer::settext(const char* textIn) const\n// Call the settext class and return the value.\n{\n\tassert(m_translation);\n\tconst string stringIn = textIn;\n\treturn m_translation->translate(stringIn).c_str();\n}\n\nvoid ASLocalizer::setTranslationClass()\n// Return the required translation class.\n// Sets the class variable m_translation from the value of m_langID.\n// Get the language ID at http://msdn.microsoft.com/en-us/library/ee797784%28v=cs.20%29.aspx\n{\n\tassert(m_langID.length());\n\t// delete previously set (--ascii option)\n\tif (m_translation)\n\t{\n\t\tdelete m_translation;\n\t\tm_translation = NULL;\n\t}\n\tif (m_langID == \"zh\" && m_subLangID == \"CHS\")\n\t\tm_translation = new ChineseSimplified;\n\telse if (m_langID == \"zh\" && m_subLangID == \"CHT\")\n\t\tm_translation = new ChineseTraditional;\n\telse if (m_langID == \"nl\")\n\t\tm_translation = new Dutch;\n\telse if (m_langID == \"en\")\n\t\tm_translation = new English;\n\telse if (m_langID == \"fi\")\n\t\tm_translation = new Finnish;\n\telse if (m_langID == \"fr\")\n\t\tm_translation = new French;\n\telse if (m_langID == \"de\")\n\t\tm_translation = new German;\n\telse if (m_langID == \"hi\")\n\t\tm_translation = new Hindi;\n\telse if (m_langID == \"it\")\n\t\tm_translation = new Italian;\n\telse if (m_langID == \"ja\")\n\t\tm_translation = new Japanese;\n\telse if (m_langID == \"ko\")\n\t\tm_translation = new Korean;\n\telse if (m_langID == \"pl\")\n\t\tm_translation = new Polish;\n\telse if (m_langID == \"pt\")\n\t\tm_translation = new Portuguese;\n\telse if (m_langID == \"ru\")\n\t\tm_translation = new Russian;\n\telse if (m_langID == \"es\")\n\t\tm_translation = new Spanish;\n\telse if (m_langID == \"sv\")\n\t\tm_translation = new Swedish;\n\telse if (m_langID == \"uk\")\n\t\tm_translation = new Ukrainian;\n\telse\t// default\n\t\tm_translation = new English;\n}\n\n//----------------------------------------------------------------------------\n// Translation base class methods.\n//----------------------------------------------------------------------------\n\nvoid Translation::addPair(const string &english, const wstring &translated)\n// Add a string pair to the translation vector.\n{\n\tpair<string, wstring> entry(english, translated);\n\tm_translation.push_back(entry);\n}\n\nstring Translation::convertToMultiByte(const wstring &wideStr) const\n// Convert wchar_t to a multibyte string using the currently assigned locale.\n// Return an empty string if an error occurs.\n{\n\tstatic bool msgDisplayed = false;\n\t// get length of the output excluding the NULL and validate the parameters\n\tsize_t mbLen = wcstombs(NULL, wideStr.c_str(), 0);\n\tif (mbLen == string::npos)\n\t{\n\t\tif (!msgDisplayed)\n\t\t{\n\t\t\tfprintf(stderr, \"\\n%s\\n\\n\", \"Cannot convert to multi-byte string, reverting to English\");\n\t\t\tmsgDisplayed = true;\n\t\t}\n\t\treturn \"\";\n\t}\n\t// convert the characters\n\tchar* mbStr = new(nothrow) char[mbLen + 1];\n\tif (mbStr == NULL)\n\t{\n\t\tif (!msgDisplayed)\n\t\t{\n\t\t\tfprintf(stderr, \"\\n%s\\n\\n\", \"Bad memory alloc for multi-byte string, reverting to English\");\n\t\t\tmsgDisplayed = true;\n\t\t}\n\t\treturn \"\";\n\t}\n\twcstombs(mbStr, wideStr.c_str(), mbLen + 1);\n\t// return the string\n\tstring mbTranslation = mbStr;\n\tdelete [] mbStr;\n\treturn mbTranslation;\n}\n\nsize_t Translation::getTranslationVectorSize() const\n// Return the translation vector size.  Used for testing.\n{\n\treturn m_translation.size();\n}\n\nbool Translation::getWideTranslation(const string &stringIn, wstring &wideOut) const\n// Get the wide translation string. Used for testing.\n{\n\tfor (size_t i = 0; i < m_translation.size(); i++)\n\t{\n\t\tif (m_translation[i].first == stringIn)\n\t\t{\n\t\t\twideOut = m_translation[i].second;\n\t\t\treturn true;\n\t\t}\n\t}\n\t// not found\n\twideOut = L\"\";\n\treturn false;\n}\n\nstring &Translation::translate(const string &stringIn) const\n// Translate a string.\n// Return a static string instead of a member variable so the method can have a \"const\" designation.\n// This allows \"settext\" to be called from a \"const\" method.\n{\n\tstatic string mbTranslation;\n\tmbTranslation.clear();\n\tfor (size_t i = 0; i < m_translation.size(); i++)\n\t{\n\t\tif (m_translation[i].first == stringIn)\n\t\t{\n\t\t\tmbTranslation = convertToMultiByte(m_translation[i].second);\n\t\t\tbreak;\n\t\t}\n\t}\n\t// not found, return english\n\tif (mbTranslation.empty())\n\t\tmbTranslation = stringIn;\n\treturn mbTranslation;\n}\n\n//----------------------------------------------------------------------------\n// Translation class methods.\n// These classes have only a constructor which builds the language vector.\n//----------------------------------------------------------------------------\n\nChineseSimplified::ChineseSimplified()\t// 中文（简体）\n{\n\taddPair(\"Formatted  %s\\n\", L\"格式化  %s\\n\");\t\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"未改变  %s\\n\");\t\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"目录  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"排除  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"排除（无匹配项） %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s 格式化   %s 未改变   \");\n\taddPair(\" seconds   \", L\" 秒   \");\n\taddPair(\"%d min %d sec   \", L\"%d 分 %d 秒   \");\n\taddPair(\"%s lines\\n\", L\"%s 行\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"使用默认配置文件 %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"打开HTML文档 %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"无效的配置文件选项:\");\n\taddPair(\"Invalid command line options:\", L\"无效的命令行选项:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"输入 'astyle -h' 以获得有关命令行的帮助\");\n\taddPair(\"Cannot open options file\", L\"无法打开配置文件\");\n\taddPair(\"Cannot open directory\", L\"无法打开目录\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"无法打开HTML文件 %s\\n\");\n\taddPair(\"Command execute failure\", L\"执行命令失败\");\n\taddPair(\"Command is not installed\", L\"未安装命令\");\n\taddPair(\"Missing filename in %s\\n\", L\"在%s缺少文件名\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"递归选项没有通配符\");\n\taddPair(\"Did you intend quote the filename\", L\"你打算引用文件名\");\n\taddPair(\"No file to process %s\\n\", L\"没有文件可处理 %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"你打算使用 --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"不能处理UTF-32编码\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style 已经终止运行\");\n}\n\nChineseTraditional::ChineseTraditional()\t// 中文（繁體）\n{\n\taddPair(\"Formatted  %s\\n\", L\"格式化  %s\\n\");\t\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"未改變  %s\\n\");\t\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"目錄  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"排除  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"排除（無匹配項） %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s 格式化 %s 未改變   \");\n\taddPair(\" seconds   \", L\" 秒   \");\n\taddPair(\"%d min %d sec   \", L\"%d 分 %d 秒   \");\n\taddPair(\"%s lines\\n\", L\"%s 行\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"使用默認配置文件 %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"打開HTML文檔 %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"無效的配置文件選項:\");\n\taddPair(\"Invalid command line options:\", L\"無效的命令行選項:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"輸入'astyle -h'以獲得有關命令行的幫助:\");\n\taddPair(\"Cannot open options file\", L\"無法打開配置文件\");\n\taddPair(\"Cannot open directory\", L\"無法打開目錄\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"無法打開HTML文件 %s\\n\");\n\taddPair(\"Command execute failure\", L\"執行命令失敗\");\n\taddPair(\"Command is not installed\", L\"未安裝命令\");\n\taddPair(\"Missing filename in %s\\n\", L\"在%s缺少文件名\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"遞歸選項沒有通配符\");\n\taddPair(\"Did you intend quote the filename\", L\"你打算引用文件名\");\n\taddPair(\"No file to process %s\\n\", L\"沒有文件可處理 %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"你打算使用 --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"不能處理UTF-32編碼\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style 已經終止運行\");\n}\n\nDutch::Dutch()\t// Nederlandse\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Geformatteerd  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Onveranderd    %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Directory  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Uitsluiten  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Uitgesloten (ongeëvenaarde)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s geformatteerd   %s onveranderd   \");\n\taddPair(\" seconds   \", L\" seconden   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sec   \");\n\taddPair(\"%s lines\\n\", L\"%s lijnen\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Met behulp van standaard opties bestand %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Het openen van HTML-documentatie %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Ongeldige optie file opties:\");\n\taddPair(\"Invalid command line options:\", L\"Ongeldige command line opties:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Voor hulp bij 'astyle-h' opties het type\");\n\taddPair(\"Cannot open options file\", L\"Kan niet worden geopend options bestand\");\n\taddPair(\"Cannot open directory\", L\"Kan niet open directory\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Kan HTML-bestand niet openen %s\\n\");\n\taddPair(\"Command execute failure\", L\"Voeren commando falen\");\n\taddPair(\"Command is not installed\", L\"Command is niet geïnstalleerd\");\n\taddPair(\"Missing filename in %s\\n\", L\"Ontbrekende bestandsnaam in %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Recursieve optie met geen wildcard\");\n\taddPair(\"Did you intend quote the filename\", L\"Heeft u van plan citaat van de bestandsnaam\");\n\taddPair(\"No file to process %s\\n\", L\"Geen bestand te verwerken %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Hebt u van plan bent te gebruiken --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Kan niet verwerken UTF-32 codering\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style heeft beëindigd\");\n}\n\nEnglish::English()\n// this class is NOT translated\n{}\n\nFinnish::Finnish()\t// Suomeksi\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Muotoiltu  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Ennallaan  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Directory  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Sulkea  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Sulkea (verraton)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s muotoiltu   %s ennallaan   \");\n\taddPair(\" seconds   \", L\" sekuntia   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sek   \");\n\taddPair(\"%s lines\\n\", L\"%s linjat\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Käyttämällä oletusasetuksia tiedosto %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Avaaminen HTML asiakirjat %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Virheellinen vaihtoehto tiedosto vaihtoehtoja:\");\n\taddPair(\"Invalid command line options:\", L\"Virheellinen komentorivin:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Apua vaihtoehdoista tyyppi 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Ei voi avata vaihtoehtoja tiedostoa\");\n\taddPair(\"Cannot open directory\", L\"Ei Open Directory\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Ei voi avata HTML-tiedoston %s\\n\");\n\taddPair(\"Command execute failure\", L\"Suorita komento vika\");\n\taddPair(\"Command is not installed\", L\"Komento ei ole asennettu\");\n\taddPair(\"Missing filename in %s\\n\", L\"Puuttuvat tiedostonimi %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Rekursiivinen vaihtoehto ilman wildcard\");\n\taddPair(\"Did you intend quote the filename\", L\"Oletko aio lainata tiedostonimi\");\n\taddPair(\"No file to process %s\\n\", L\"Ei tiedostoa käsitellä %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Oliko aiot käyttää --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Ei voi käsitellä UTF-32 koodausta\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style on päättynyt\");\n}\n\nFrench::French()\t// Française\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formaté    %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Inchangée  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Répertoire  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Exclure  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Exclure (non appariés)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formaté   %s inchangée   \");\n\taddPair(\" seconds   \", L\" seconde   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sec   \");\n\taddPair(\"%s lines\\n\", L\"%s lignes\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Options par défaut utilisation du fichier %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Ouverture documentation HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Options Blancs option du fichier:\");\n\taddPair(\"Invalid command line options:\", L\"Blancs options ligne de commande:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Pour de l'aide sur les options tapez 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Impossible d'ouvrir le fichier d'options\");\n\taddPair(\"Cannot open directory\", L\"Impossible d'ouvrir le répertoire\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Impossible d'ouvrir le fichier HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Exécuter échec de la commande\");\n\taddPair(\"Command is not installed\", L\"Commande n'est pas installé\");\n\taddPair(\"Missing filename in %s\\n\", L\"Nom de fichier manquant dans %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Option récursive sans joker\");\n\taddPair(\"Did you intend quote the filename\", L\"Avez-vous l'intention de citer le nom de fichier\");\n\taddPair(\"No file to process %s\\n\", L\"Aucun fichier à traiter %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Avez-vous l'intention d'utiliser --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Impossible de traiter codage UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style a mis fin\");\n}\n\nGerman::German()\t// Deutsch\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formatiert   %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Unverändert  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Verzeichnis  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Ausschließen  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Ausschließen (unerreichte)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formatiert   %s unverändert   \");\n\taddPair(\" seconds   \", L\" sekunden   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sek   \");\n\taddPair(\"%s lines\\n\", L\"%s linien\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Mit Standard-Optionen Dat %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Öffnen HTML-Dokumentation %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Ungültige Option Datei-Optionen:\");\n\taddPair(\"Invalid command line options:\", L\"Ungültige Kommandozeilen-Optionen:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Für Hilfe zu den Optionen geben Sie 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Kann nicht geöffnet werden Optionsdatei\");\n\taddPair(\"Cannot open directory\", L\"Kann nicht geöffnet werden Verzeichnis\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Kann nicht öffnen HTML-Datei %s\\n\");\n\taddPair(\"Command execute failure\", L\"Execute Befehl Scheitern\");\n\taddPair(\"Command is not installed\", L\"Befehl ist nicht installiert\");\n\taddPair(\"Missing filename in %s\\n\", L\"Missing in %s Dateiname\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Rekursive Option ohne Wildcard\");\n\taddPair(\"Did you intend quote the filename\", L\"Haben Sie die Absicht Inhalte der Dateiname\");\n\taddPair(\"No file to process %s\\n\", L\"Keine Datei zu verarbeiten %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Haben Sie verwenden möchten --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Nicht verarbeiten kann UTF-32 Codierung\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style ist beendet\");\n}\n\nHindi::Hindi()\t// हिन्दी\n// build the translation vector in the Translation base class\n{\n\t// NOTE: Scintilla based editors (CodeBlocks) cannot always edit Hindi.\n\t//       Use Visual Studio instead.\n\taddPair(\"Formatted  %s\\n\", L\"स्वरूपित किया  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"अपरिवर्तित     %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"निर्देशिका  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"निकालना  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"अपवर्जित (बेजोड़)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s स्वरूपित किया   %s अपरिवर्तित   \");\n\taddPair(\" seconds   \", L\" सेकंड   \");\n\taddPair(\"%d min %d sec   \", L\"%d मिनट %d सेकंड   \");\n\taddPair(\"%s lines\\n\", L\"%s लाइनों\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"डिफ़ॉल्ट विकल्प का उपयोग कर फ़ाइल %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"एचटीएमएल प्रलेखन खोलना %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"अवैध विकल्प फ़ाइल विकल्प हैं:\");\n\taddPair(\"Invalid command line options:\", L\"कमांड लाइन विकल्प अवैध:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"विकल्पों पर मदद के लिए प्रकार 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"विकल्प फ़ाइल नहीं खोल सकता है\");\n\taddPair(\"Cannot open directory\", L\"निर्देशिका नहीं खोल सकता\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"HTML फ़ाइल नहीं खोल सकता %s\\n\");\n\taddPair(\"Command execute failure\", L\"आदेश विफलता निष्पादित\");\n\taddPair(\"Command is not installed\", L\"कमान स्थापित नहीं है\");\n\taddPair(\"Missing filename in %s\\n\", L\"लापता में फ़ाइलनाम %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"कोई वाइल्डकार्ड साथ पुनरावर्ती विकल्प\");\n\taddPair(\"Did you intend quote the filename\", L\"क्या आप बोली फ़ाइलनाम का इरादा\");\n\taddPair(\"No file to process %s\\n\", L\"कोई फ़ाइल %s प्रक्रिया के लिए\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"क्या आप उपयोग करना चाहते हैं --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"UTF-32 कूटबन्धन प्रक्रिया नहीं कर सकते\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style समाप्त किया है\");\n}\n\nItalian::Italian()\t// Italiano\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formattata  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Immutato    %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Elenco  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Escludere  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Escludere (senza pari)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s ormattata   %s immutato   \");\n\taddPair(\" seconds   \", L\" secondo   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d seg   \");\n\taddPair(\"%s lines\\n\", L\"%s linee\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Utilizzando file delle opzioni di default %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Apertura di documenti HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Opzione non valida file delle opzioni:\");\n\taddPair(\"Invalid command line options:\", L\"Opzioni della riga di comando non valido:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Per informazioni sulle opzioni di tipo 'astyle-h'\");\n\taddPair(\"Cannot open options file\", L\"Impossibile aprire il file opzioni\");\n\taddPair(\"Cannot open directory\", L\"Impossibile aprire la directory\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Impossibile aprire il file HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Esegui fallimento comando\");\n\taddPair(\"Command is not installed\", L\"Il comando non è installato\");\n\taddPair(\"Missing filename in %s\\n\", L\"Nome del file mancante in %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Opzione ricorsiva senza jolly\");\n\taddPair(\"Did you intend quote the filename\", L\"Avete intenzione citare il nome del file\");\n\taddPair(\"No file to process %s\\n\", L\"Nessun file al processo %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Hai intenzione di utilizzare --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Non è possibile processo di codifica UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style ha terminato\");\n}\n\nJapanese::Japanese()\t// 日本\n{\n\taddPair(\"Formatted  %s\\n\", L\"フォーマット  %s\\n\");\t\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"変更          %s\\n\");\t\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"ディレクトリ  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"除外する  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"除外（マッチせず） %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %sフォーマット   %s 変更   \");\n\taddPair(\" seconds   \", L\" 秒   \");\n\taddPair(\"%d min %d sec   \", L\"%d 分 %d 秒   \");\n\taddPair(\"%s lines\\n\", L\"%s の行\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"デフォルトの設定ファイルを使用してください %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"HTML文書を開く %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"無効なコンフィギュレーションファイルオプション：\");\n\taddPair(\"Invalid command line options:\", L\"無効なコマンドラインオプション：\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"コマンドラインについてのヘルプは'astyle- h'を入力してください\");\n\taddPair(\"Cannot open options file\", L\"コンフィギュレーションファイルを開くことができません\");\n\taddPair(\"Cannot open directory\", L\"ディレクトリのオープンに失敗しました\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"HTMLファイルを開くことができません %s\\n\");\n\taddPair(\"Command execute failure\", L\"コマンドの失敗を実行\");\n\taddPair(\"Command is not installed\", L\"コマンドがインストールされていません\");\n\taddPair(\"Missing filename in %s\\n\", L\"%s はファイル名で欠落しています\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"再帰的なオプションではワイルドカードではない\");\n\taddPair(\"Did you intend quote the filename\", L\"あなたは、ファイル名を参照するつもり\");\n\taddPair(\"No file to process %s\\n\", L\"いいえファイルは処理できません %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"あなたが使用する予定 --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"UTF- 32エンコーディングを処理できない\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style 実行が終了しました\");\n}\n\nKorean::Korean()\t// 한국의\n{\n\taddPair(\"Formatted  %s\\n\", L\"수정됨    %s\\n\");\t\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"변경없음  %s\\n\");\t\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"디렉토리  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"제외됨   %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"제외 (NO 일치) %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s 수정됨   %s 변경없음   \");\n\taddPair(\" seconds   \", L\" 초   \");\n\taddPair(\"%d min %d sec   \", L\"%d 분 %d 초   \");\n\taddPair(\"%s lines\\n\", L\"%s 라인\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"기본 구성 파일을 사용 %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"HTML 문서를 열기 %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"잘못된 구성 파일 옵션 :\");\n\taddPair(\"Invalid command line options:\", L\"잘못된 명령줄 옵션 :\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"도움말을 보려면 옵션 유형 'astyle - H'를 사용합니다\");\n\taddPair(\"Cannot open options file\", L\"구성 파일을 열 수 없습니다\");\n\taddPair(\"Cannot open directory\", L\"디렉토리를 열지 못했습니다\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"HTML 파일을 열 수 없습니다 %s\\n\");\n\taddPair(\"Command execute failure\", L\"명령 실패를 실행\");\n\taddPair(\"Command is not installed\", L\"명령이 설치되어 있지 않습니다\");\n\taddPair(\"Missing filename in %s\\n\", L\"%s 에서 누락된 파일 이름\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"와일드 카드없이 재귀 옵션\");\n\taddPair(\"Did you intend quote the filename\", L\"당신은 파일 이름을 인용하고자하나요\");\n\taddPair(\"No file to process %s\\n\", L\"처리할 파일이 없습니다 %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"--recursive 를 사용하고자 하십니까\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"UTF-32 인코딩을 처리할 수 없습니다\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style를 종료합니다\");\n}\n\nPolish::Polish()\t// Polski\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Sformatowany  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Niezmienione  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Katalog  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Wykluczać  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Wyklucz (niezrównany)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s sformatowany   %s niezmienione   \");\n\taddPair(\" seconds   \", L\" sekund   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sek   \");\n\taddPair(\"%s lines\\n\", L\"%s linii\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Korzystanie z domyślnej opcji %s plik\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Otwarcie dokumentacji HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Nieprawidłowy opcji pliku opcji:\");\n\taddPair(\"Invalid command line options:\", L\"Nieprawidłowe opcje wiersza polecenia:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Aby uzyskać pomoc od rodzaju opcji 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Nie można otworzyć pliku opcji\");\n\taddPair(\"Cannot open directory\", L\"Nie można otworzyć katalogu\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Nie można otworzyć pliku HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Wykonaj polecenia niepowodzenia\");\n\taddPair(\"Command is not installed\", L\"Polecenie nie jest zainstalowany\");\n\taddPair(\"Missing filename in %s\\n\", L\"Brakuje pliku w %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Rekurencyjne opcja bez symboli\");\n\taddPair(\"Did you intend quote the filename\", L\"Czy zamierza Pan podać nazwę pliku\");\n\taddPair(\"No file to process %s\\n\", L\"Brak pliku do procesu %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Czy masz zamiar używać --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Nie można procesu kodowania UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style został zakończony\");\n}\n\nPortuguese::Portuguese()\t// Português\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formatado   %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Inalterado  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Diretório  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Excluir  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Excluir (incomparável)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formatado   %s inalterado   \");\n\taddPair(\" seconds   \", L\" segundo   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d seg   \");\n\taddPair(\"%s lines\\n\", L\"%s linhas\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Usando o arquivo de opções padrão %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Abrindo a documentação HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Opções de arquivo inválido opção:\");\n\taddPair(\"Invalid command line options:\", L\"Opções de linha de comando inválida:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Para obter ajuda sobre as opções de tipo 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Não é possível abrir arquivo de opções\");\n\taddPair(\"Cannot open directory\", L\"Não é possível abrir diretório\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Não é possível abrir arquivo HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Executar falha de comando\");\n\taddPair(\"Command is not installed\", L\"Comando não está instalado\");\n\taddPair(\"Missing filename in %s\\n\", L\"Filename faltando em %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Opção recursiva sem curinga\");\n\taddPair(\"Did you intend quote the filename\", L\"Será que você pretende citar o nome do arquivo\");\n\taddPair(\"No file to process %s\\n\", L\"Nenhum arquivo para processar %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Será que você pretende usar --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Não pode processar a codificação UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style terminou\");\n}\n\nRussian::Russian()\t// русский\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Форматированный  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"без изменений    %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"каталог  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"исключать  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Исключить (непревзойденный)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s Форматированный   %s без изменений   \");\n\taddPair(\" seconds   \", L\" секунды   \");\n\taddPair(\"%d min %d sec   \", L\"%d мин %d сек   \");\n\taddPair(\"%s lines\\n\", L\"%s линий\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Использование опции по умолчанию файл %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Открытие HTML документации %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Недопустимый файл опций опцию:\");\n\taddPair(\"Invalid command line options:\", L\"Недопустимые параметры командной строки:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Для получения справки по 'astyle -h' опций типа\");\n\taddPair(\"Cannot open options file\", L\"Не удается открыть файл параметров\");\n\taddPair(\"Cannot open directory\", L\"Не могу открыть каталог\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Не удается открыть файл HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Выполнить команду недостаточности\");\n\taddPair(\"Command is not installed\", L\"Не установлен Команда\");\n\taddPair(\"Missing filename in %s\\n\", L\"Отсутствует имя файла в %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Рекурсивный вариант без каких-либо шаблона\");\n\taddPair(\"Did you intend quote the filename\", L\"Вы намерены цитатой файла\");\n\taddPair(\"No file to process %s\\n\", L\"Нет файлов для обработки %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Неужели вы собираетесь использовать --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Не удается обработать UTF-32 кодировке\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style прекратил\");\n}\n\nSpanish::Spanish()\t// Español\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formato     %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Inalterado  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Directorio  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Excluir  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Excluir (incomparable)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formato   %s inalterado   \");\n\taddPair(\" seconds   \", L\" segundo   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d seg   \");\n\taddPair(\"%s lines\\n\", L\"%s líneas\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Uso de las opciones por defecto del archivo %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Apertura de documentación HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Opción no válida opciones de archivo:\");\n\taddPair(\"Invalid command line options:\", L\"No válido opciones de línea de comando:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Para obtener ayuda sobre las opciones tipo 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"No se puede abrir el archivo de opciones\");\n\taddPair(\"Cannot open directory\", L\"No se puede abrir el directorio\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"No se puede abrir el archivo HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Ejecutar el fracaso de comandos\");\n\taddPair(\"Command is not installed\", L\"El comando no está instalado\");\n\taddPair(\"Missing filename in %s\\n\", L\"Falta nombre del archivo en %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Recursiva opción sin comodín\");\n\taddPair(\"Did you intend quote the filename\", L\"Se tiene la intención de citar el nombre de archivo\");\n\taddPair(\"No file to process %s\\n\", L\"No existe el fichero a procesar %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Se va a utilizar --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"No se puede procesar la codificación UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style ha terminado\");\n}\n\nSwedish::Swedish()\t// Svenska\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formaterade  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Oförändrade  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Katalog  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Uteslut  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Uteslut (oöverträffad)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formaterade   %s oförändrade   \");\n\taddPair(\" seconds   \", L\" sekunder   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sek   \");\n\taddPair(\"%s lines\\n\", L\"%s linjer\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Använda standardalternativ fil %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Öppna HTML-dokumentation %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Ogiltigt alternativ fil alternativ:\");\n\taddPair(\"Invalid command line options:\", L\"Ogiltig kommandoraden alternativ:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"För hjälp om alternativ typ 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Kan inte öppna inställningsfilen\");\n\taddPair(\"Cannot open directory\", L\"Kan inte öppna katalog\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Kan inte öppna HTML-filen %s\\n\");\n\taddPair(\"Command execute failure\", L\"Utför kommando misslyckande\");\n\taddPair(\"Command is not installed\", L\"Kommandot är inte installerat\");\n\taddPair(\"Missing filename in %s\\n\", L\"Saknade filnamn i %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Rekursiva alternativ utan jokertecken\");\n\taddPair(\"Did you intend quote the filename\", L\"Visste du tänker citera filnamnet\");\n\taddPair(\"No file to process %s\\n\", L\"Ingen fil att bearbeta %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Har du för avsikt att använda --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Kan inte hantera UTF-32 kodning\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style har upphört\");\n}\n\nUkrainian::Ukrainian()\t// Український\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"форматований  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"без змін      %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Каталог  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Виключити  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Виключити (неперевершений)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s відформатований   %s без змін   \");\n\taddPair(\" seconds   \", L\" секунди   \");\n\taddPair(\"%d min %d sec   \", L\"%d хви %d cek   \");\n\taddPair(\"%s lines\\n\", L\"%s ліній\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Використання файлів опцій за замовчуванням %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Відкриття HTML документації %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Неприпустимий файл опцій опцію:\");\n\taddPair(\"Invalid command line options:\", L\"Неприпустима параметри командного рядка:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Для отримання довідки по 'astyle -h' опцій типу\");\n\taddPair(\"Cannot open options file\", L\"Не вдається відкрити файл параметрів\");\n\taddPair(\"Cannot open directory\", L\"Не можу відкрити каталог\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Не вдається відкрити файл HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Виконати команду недостатності\");\n\taddPair(\"Command is not installed\", L\"Не встановлений Команда\");\n\taddPair(\"Missing filename in %s\\n\", L\"Відсутня назва файлу в %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Рекурсивний варіант без будь-яких шаблону\");\n\taddPair(\"Did you intend quote the filename\", L\"Ви маєте намір цитатою файлу\");\n\taddPair(\"No file to process %s\\n\", L\"Немає файлів для обробки %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Невже ви збираєтеся використовувати --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Не вдається обробити UTF-32 кодуванні\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style припинив\");\n}\n\n\n#endif\t// ASTYLE_LIB\n\n}   // end of namespace astyle\n\n"
  },
  {
    "path": "3rdpart/astyle/ASLocalizer.h",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASLocalizer.h\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#ifndef ASLOCALIZER_H\n#define ASLOCALIZER_H\n\n#include <string>\n#include <vector>\n\nnamespace astyle {\n\nusing namespace std;\n\n#ifndef ASTYLE_LIB\n\n//-----------------------------------------------------------------------------\n// ASLocalizer class for console build.\n// This class encapsulates all language-dependent settings and is a\n// generalization of the C locale concept.\n//-----------------------------------------------------------------------------\nclass Translation;\n\nclass ASLocalizer\n{\n\tpublic:\t\t// functions\n\t\tASLocalizer();\n\t\tvirtual ~ASLocalizer();\n\t\tstring getLanguageID() const;\n\t\tconst Translation* getTranslationClass() const;\n#ifdef _WIN32\n\t\tvoid setLanguageFromLCID(size_t lcid);\n#endif\n\t\tvoid setLanguageFromName(const char* langID);\n\t\tconst char* settext(const char* textIn) const;\n\n\tprivate:\t// functions\n\t\tvoid setTranslationClass();\n\n\tprivate:\t// variables\n\t\tTranslation* m_translation;\t\t// pointer to a polymorphic Translation class\n\t\tstring m_langID;\t\t\t\t// language identifier from the locale\n\t\tstring m_subLangID;\t\t\t\t// sub language identifier, if needed\n\t\tstring m_localeName;\t\t\t// name of the current locale (Linux only)\n\t\tsize_t m_lcid;\t\t\t\t\t// LCID of the user locale (Windows only)\n};\n\n//----------------------------------------------------------------------------\n// Translation base class.\n//----------------------------------------------------------------------------\n\nclass Translation\n// This base class is inherited by the language translation classes.\n// Polymorphism is used to call the correct language translator.\n// This class contains the translation vector and settext translation method.\n// The language vector is built by the language sub classes.\n// NOTE: This class must have virtual methods for typeid() to work.\n//       typeid() is used by AStyleTestI18n_Localizer.cpp.\n{\n\tpublic:\n\t\tTranslation() {}\n\t\tvirtual ~Translation() {}\n\t\tstring convertToMultiByte(const wstring &wideStr) const;\n\t\tsize_t getTranslationVectorSize() const;\n\t\tbool getWideTranslation(const string &stringIn, wstring &wideOut) const;\n\t\tstring &translate(const string &stringIn) const;\n\n\tprotected:\n\t\tvoid addPair(const string &english, const wstring &translated);\n\t\t// variables\n\t\tvector<pair<string, wstring> > m_translation;\t\t// translation vector\n};\n\n//----------------------------------------------------------------------------\n// Translation classes\n// One class for each language.\n// These classes have only a constructor which builds the language vector.\n//----------------------------------------------------------------------------\n\nclass ChineseSimplified : public Translation\n{\n\tpublic:\n\t\tChineseSimplified();\n};\n\nclass ChineseTraditional : public Translation\n{\n\tpublic:\n\t\tChineseTraditional();\n};\n\nclass Dutch : public Translation\n{\n\tpublic:\n\t\tDutch();\n};\n\nclass English : public Translation\n{\n\tpublic:\n\t\tEnglish();\n};\n\nclass Finnish : public Translation\n{\n\tpublic:\n\t\tFinnish();\n};\n\nclass French : public Translation\n{\n\tpublic:\n\t\tFrench();\n};\n\nclass German : public Translation\n{\n\tpublic:\n\t\tGerman();\n};\n\nclass Hindi : public Translation\n{\n\tpublic:\n\t\tHindi();\n};\n\nclass Italian : public Translation\n{\n\tpublic:\n\t\tItalian();\n};\n\nclass Japanese : public Translation\n{\n\tpublic:\n\t\tJapanese();\n};\n\nclass Korean : public Translation\n{\n\tpublic:\n\t\tKorean();\n};\n\nclass Polish : public Translation\n{\n\tpublic:\n\t\tPolish();\n};\n\nclass Portuguese : public Translation\n{\n\tpublic:\n\t\tPortuguese();\n};\n\nclass Russian : public Translation\n{\n\tpublic:\n\t\tRussian();\n};\n\nclass Spanish : public Translation\n{\n\tpublic:\n\t\tSpanish();\n};\n\nclass Swedish : public Translation\n{\n\tpublic:\n\t\tSwedish();\n};\n\nclass Ukrainian : public Translation\n{\n\tpublic:\n\t\tUkrainian();\n};\n\n\n#endif\t//  ASTYLE_LIB\n\n}\t// namespace astyle\n\n#endif\t//  ASLOCALIZER_H\n"
  },
  {
    "path": "3rdpart/astyle/ASResource.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASResource.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#include \"astyle.h\"\n#include <algorithm>\n\n\nnamespace astyle {\n\nconst string ASResource::AS_IF = string(\"if\");\nconst string ASResource::AS_ELSE = string(\"else\");\nconst string ASResource::AS_FOR = string(\"for\");\nconst string ASResource::AS_DO = string(\"do\");\nconst string ASResource::AS_WHILE = string(\"while\");\nconst string ASResource::AS_SWITCH = string(\"switch\");\nconst string ASResource::AS_CASE = string(\"case\");\nconst string ASResource::AS_DEFAULT = string(\"default\");\nconst string ASResource::AS_CLASS = string(\"class\");\nconst string ASResource::AS_VOLATILE = string(\"volatile\");\nconst string ASResource::AS_INTERRUPT = string(\"interrupt\");\nconst string ASResource::AS_NOEXCEPT = string(\"noexcept\");\nconst string ASResource::AS_AUTORELEASEPOOL = string(\"autoreleasepool\");\nconst string ASResource::AS_STRUCT = string(\"struct\");\nconst string ASResource::AS_UNION = string(\"union\");\nconst string ASResource::AS_INTERFACE = string(\"interface\");\nconst string ASResource::AS_NAMESPACE = string(\"namespace\");\nconst string ASResource::AS_END = string(\"end\");\nconst string ASResource::AS_SELECTOR = string(\"selector\");\nconst string ASResource::AS_EXTERN = string(\"extern\");\nconst string ASResource::AS_ENUM = string(\"enum\");\nconst string ASResource::AS_PUBLIC = string(\"public\");\nconst string ASResource::AS_PROTECTED = string(\"protected\");\nconst string ASResource::AS_PRIVATE = string(\"private\");\nconst string ASResource::AS_STATIC = string(\"static\");\nconst string ASResource::AS_SYNCHRONIZED = string(\"synchronized\");\nconst string ASResource::AS_OPERATOR = string(\"operator\");\nconst string ASResource::AS_TEMPLATE = string(\"template\");\nconst string ASResource::AS_TRY = string(\"try\");\nconst string ASResource::AS_CATCH = string(\"catch\");\nconst string ASResource::AS_THROW = string(\"throw\");\nconst string ASResource::AS_FINALLY = string(\"finally\");\nconst string ASResource::_AS_TRY = string(\"__try\");\nconst string ASResource::_AS_FINALLY = string(\"__finally\");\nconst string ASResource::_AS_EXCEPT = string(\"__except\");\nconst string ASResource::AS_THROWS = string(\"throws\");\nconst string ASResource::AS_CONST = string(\"const\");\nconst string ASResource::AS_SEALED = string(\"sealed\");\nconst string ASResource::AS_OVERRIDE = string(\"override\");\nconst string ASResource::AS_WHERE = string(\"where\");\nconst string ASResource::AS_LET = string(\"let\");\nconst string ASResource::AS_NEW = string(\"new\");\n\nconst string ASResource::AS_ASM = string(\"asm\");\nconst string ASResource::AS__ASM__ = string(\"__asm__\");\nconst string ASResource::AS_MS_ASM = string(\"_asm\");\nconst string ASResource::AS_MS__ASM = string(\"__asm\");\n\nconst string ASResource::AS_BAR_DEFINE = string(\"#define\");\nconst string ASResource::AS_BAR_INCLUDE = string(\"#include\");\nconst string ASResource::AS_BAR_IF = string(\"#if\");\nconst string ASResource::AS_BAR_EL = string(\"#el\");\nconst string ASResource::AS_BAR_ENDIF = string(\"#endif\");\n\nconst string ASResource::AS_OPEN_BRACKET = string(\"{\");\nconst string ASResource::AS_CLOSE_BRACKET = string(\"}\");\nconst string ASResource::AS_OPEN_LINE_COMMENT = string(\"//\");\nconst string ASResource::AS_OPEN_COMMENT = string(\"/*\");\nconst string ASResource::AS_CLOSE_COMMENT = string(\"*/\");\n\nconst string ASResource::AS_ASSIGN = string(\"=\");\nconst string ASResource::AS_PLUS_ASSIGN = string(\"+=\");\nconst string ASResource::AS_MINUS_ASSIGN = string(\"-=\");\nconst string ASResource::AS_MULT_ASSIGN = string(\"*=\");\nconst string ASResource::AS_DIV_ASSIGN = string(\"/=\");\nconst string ASResource::AS_MOD_ASSIGN = string(\"%=\");\nconst string ASResource::AS_OR_ASSIGN = string(\"|=\");\nconst string ASResource::AS_AND_ASSIGN = string(\"&=\");\nconst string ASResource::AS_XOR_ASSIGN = string(\"^=\");\nconst string ASResource::AS_GR_GR_ASSIGN = string(\">>=\");\nconst string ASResource::AS_LS_LS_ASSIGN = string(\"<<=\");\nconst string ASResource::AS_GR_GR_GR_ASSIGN = string(\">>>=\");\nconst string ASResource::AS_LS_LS_LS_ASSIGN = string(\"<<<=\");\nconst string ASResource::AS_GCC_MIN_ASSIGN = string(\"<?\");\nconst string ASResource::AS_GCC_MAX_ASSIGN = string(\">?\");\n\nconst string ASResource::AS_RETURN = string(\"return\");\nconst string ASResource::AS_CIN = string(\"cin\");\nconst string ASResource::AS_COUT = string(\"cout\");\nconst string ASResource::AS_CERR = string(\"cerr\");\n\nconst string ASResource::AS_EQUAL = string(\"==\");\nconst string ASResource::AS_PLUS_PLUS = string(\"++\");\nconst string ASResource::AS_MINUS_MINUS = string(\"--\");\nconst string ASResource::AS_NOT_EQUAL = string(\"!=\");\nconst string ASResource::AS_GR_EQUAL = string(\">=\");\nconst string ASResource::AS_GR_GR = string(\">>\");\nconst string ASResource::AS_GR_GR_GR = string(\">>>\");\nconst string ASResource::AS_LS_EQUAL = string(\"<=\");\nconst string ASResource::AS_LS_LS = string(\"<<\");\nconst string ASResource::AS_LS_LS_LS = string(\"<<<\");\nconst string ASResource::AS_QUESTION_QUESTION = string(\"??\");\nconst string ASResource::AS_LAMBDA = string(\"=>\");            // C# lambda expression arrow\nconst string ASResource::AS_ARROW = string(\"->\");\nconst string ASResource::AS_AND = string(\"&&\");\nconst string ASResource::AS_OR = string(\"||\");\nconst string ASResource::AS_SCOPE_RESOLUTION = string(\"::\");\n\nconst string ASResource::AS_PLUS = string(\"+\");\nconst string ASResource::AS_MINUS = string(\"-\");\nconst string ASResource::AS_MULT = string(\"*\");\nconst string ASResource::AS_DIV = string(\"/\");\nconst string ASResource::AS_MOD = string(\"%\");\nconst string ASResource::AS_GR = string(\">\");\nconst string ASResource::AS_LS = string(\"<\");\nconst string ASResource::AS_NOT = string(\"!\");\nconst string ASResource::AS_BIT_OR = string(\"|\");\nconst string ASResource::AS_BIT_AND = string(\"&\");\nconst string ASResource::AS_BIT_NOT = string(\"~\");\nconst string ASResource::AS_BIT_XOR = string(\"^\");\nconst string ASResource::AS_QUESTION = string(\"?\");\nconst string ASResource::AS_COLON = string(\":\");\nconst string ASResource::AS_COMMA = string(\",\");\nconst string ASResource::AS_SEMICOLON = string(\";\");\n\nconst string ASResource::AS_QFOREACH = string(\"Q_FOREACH\");\nconst string ASResource::AS_QFOREVER = string(\"Q_FOREVER\");\nconst string ASResource::AS_FOREVER = string(\"forever\");\nconst string ASResource::AS_FOREACH = string(\"foreach\");\nconst string ASResource::AS_LOCK = string(\"lock\");\nconst string ASResource::AS_UNSAFE = string(\"unsafe\");\nconst string ASResource::AS_FIXED = string(\"fixed\");\nconst string ASResource::AS_GET = string(\"get\");\nconst string ASResource::AS_SET = string(\"set\");\nconst string ASResource::AS_ADD = string(\"add\");\nconst string ASResource::AS_REMOVE = string(\"remove\");\nconst string ASResource::AS_DELEGATE = string(\"delegate\");\nconst string ASResource::AS_UNCHECKED = string(\"unchecked\");\n\nconst string ASResource::AS_CONST_CAST = string(\"const_cast\");\nconst string ASResource::AS_DYNAMIC_CAST = string(\"dynamic_cast\");\nconst string ASResource::AS_REINTERPRET_CAST = string(\"reinterpret_cast\");\nconst string ASResource::AS_STATIC_CAST = string(\"static_cast\");\n\nconst string ASResource::AS_NS_DURING = string(\"NS_DURING\");\nconst string ASResource::AS_NS_HANDLER = string(\"NS_HANDLER\");\n\n/**\n * Sort comparison function.\n * Compares the length of the value of pointers in the vectors.\n * The LONGEST strings will be first in the vector.\n *\n * @param a and b, the string pointers to be compared.\n */\nbool sortOnLength(const string* a, const string* b)\n{\n\treturn (*a).length() > (*b).length();\n}\n\n/**\n * Sort comparison function.\n * Compares the value of pointers in the vectors.\n *\n * @param a and b, the string pointers to be compared.\n */\nbool sortOnName(const string* a, const string* b)\n{\n\treturn *a < *b;\n}\n\n/**\n * Build the vector of assignment operators.\n * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp\n *\n * @param assignmentOperators   a reference to the vector to be built.\n */\nvoid ASResource::buildAssignmentOperators(vector<const string*>* assignmentOperators)\n{\n\tassignmentOperators->push_back(&AS_ASSIGN);\n\tassignmentOperators->push_back(&AS_PLUS_ASSIGN);\n\tassignmentOperators->push_back(&AS_MINUS_ASSIGN);\n\tassignmentOperators->push_back(&AS_MULT_ASSIGN);\n\tassignmentOperators->push_back(&AS_DIV_ASSIGN);\n\tassignmentOperators->push_back(&AS_MOD_ASSIGN);\n\tassignmentOperators->push_back(&AS_OR_ASSIGN);\n\tassignmentOperators->push_back(&AS_AND_ASSIGN);\n\tassignmentOperators->push_back(&AS_XOR_ASSIGN);\n\n\t// Java\n\tassignmentOperators->push_back(&AS_GR_GR_GR_ASSIGN);\n\tassignmentOperators->push_back(&AS_GR_GR_ASSIGN);\n\tassignmentOperators->push_back(&AS_LS_LS_ASSIGN);\n\n\t// Unknown\n\tassignmentOperators->push_back(&AS_LS_LS_LS_ASSIGN);\n\n\tsort(assignmentOperators->begin(), assignmentOperators->end(), sortOnLength);\n}\n\n/**\n * Build the vector of C++ cast operators.\n * Used by ONLY ASFormatter.cpp\n *\n * @param castOperators     a reference to the vector to be built.\n */\nvoid ASResource::buildCastOperators(vector<const string*>* castOperators)\n{\n\tcastOperators->push_back(&AS_CONST_CAST);\n\tcastOperators->push_back(&AS_DYNAMIC_CAST);\n\tcastOperators->push_back(&AS_REINTERPRET_CAST);\n\tcastOperators->push_back(&AS_STATIC_CAST);\n}\n\n/**\n * Build the vector of header words.\n * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp\n *\n * @param headers       a reference to the vector to be built.\n */\nvoid ASResource::buildHeaders(vector<const string*>* headers, int fileType, bool beautifier)\n{\n\theaders->push_back(&AS_IF);\n\theaders->push_back(&AS_ELSE);\n\theaders->push_back(&AS_FOR);\n\theaders->push_back(&AS_WHILE);\n\theaders->push_back(&AS_DO);\n\theaders->push_back(&AS_SWITCH);\n\theaders->push_back(&AS_CASE);\n\theaders->push_back(&AS_DEFAULT);\n\theaders->push_back(&AS_TRY);\n\theaders->push_back(&AS_CATCH);\n\theaders->push_back(&AS_QFOREACH);\t\t// QT\n\theaders->push_back(&AS_QFOREVER);\t\t// QT\n\theaders->push_back(&AS_FOREACH);\t\t// QT & C#\n\theaders->push_back(&AS_FOREVER);\t\t// Qt & Boost\n\n\tif (fileType == C_TYPE)\n\t{\n\t\theaders->push_back(&_AS_TRY);\t\t// __try\n\t\theaders->push_back(&_AS_FINALLY);\t// __finally\n\t\theaders->push_back(&_AS_EXCEPT);\t// __except\n\t}\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\theaders->push_back(&AS_FINALLY);\n\t\theaders->push_back(&AS_SYNCHRONIZED);\n\t}\n\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\theaders->push_back(&AS_FINALLY);\n\t\theaders->push_back(&AS_LOCK);\n\t\theaders->push_back(&AS_FIXED);\n\t\theaders->push_back(&AS_GET);\n\t\theaders->push_back(&AS_SET);\n\t\theaders->push_back(&AS_ADD);\n\t\theaders->push_back(&AS_REMOVE);\n\t}\n\n\tif (beautifier)\n\t{\n\t\tif (fileType == C_TYPE)\n\t\t{\n\t\t\theaders->push_back(&AS_TEMPLATE);\n\t\t}\n\n\t\tif (fileType == JAVA_TYPE)\n\t\t{\n\t\t\theaders->push_back(&AS_STATIC);         // for static constructor\n\t\t}\n\t}\n\tsort(headers->begin(), headers->end(), sortOnName);\n}\n\n/**\n * Build the vector of indentable headers.\n * Used by ONLY ASBeautifier.cpp\n *\n * @param indentableHeaders     a reference to the vector to be built.\n */\nvoid ASResource::buildIndentableHeaders(vector<const string*>* indentableHeaders)\n{\n\tindentableHeaders->push_back(&AS_RETURN);\n\n\tsort(indentableHeaders->begin(), indentableHeaders->end(), sortOnName);\n}\n\n/**\n* Build the vector of indentable macros pairs.\n* Initialized by ASFormatter, used by ONLY ASEnhancer.cpp\n*\n* @param indentableMacros       a reference to the vector to be built.\n*/\nvoid ASResource::buildIndentableMacros(vector<const pair<const string, const string>* >* indentableMacros)\n{\n\t// the pairs must be retained in memory\n\tstatic const struct pair<const string, const string> macros[] =\n\t{\n\t\t// wxWidgets\n\t\tmake_pair(\"BEGIN_EVENT_TABLE\", \"END_EVENT_TABLE\"),\n\t\tmake_pair(\"wxBEGIN_EVENT_TABLE\", \"wxEND_EVENT_TABLE\"),\n\t\t// MFC\n\t\tmake_pair(\"BEGIN_DISPATCH_MAP\", \"END_DISPATCH_MAP\"),\n\t\tmake_pair(\"BEGIN_EVENT_MAP\", \"END_EVENT_MAP\"),\n\t\tmake_pair(\"BEGIN_MESSAGE_MAP\", \"END_MESSAGE_MAP\"),\n\t\tmake_pair(\"BEGIN_PROPPAGEIDS\", \"END_PROPPAGEIDS\"),\n\t};\n\n\tsize_t elements = sizeof(macros) / sizeof(macros[0]);\n\tfor (size_t i = 0; i < elements; i++)\n\t\tindentableMacros->push_back(&macros[i]);\n}\n\n/**\n * Build the vector of non-assignment operators.\n * Used by ONLY ASBeautifier.cpp\n *\n * @param nonAssignmentOperators       a reference to the vector to be built.\n */\nvoid ASResource::buildNonAssignmentOperators(vector<const string*>* nonAssignmentOperators)\n{\n\tnonAssignmentOperators->push_back(&AS_EQUAL);\n\tnonAssignmentOperators->push_back(&AS_PLUS_PLUS);\n\tnonAssignmentOperators->push_back(&AS_MINUS_MINUS);\n\tnonAssignmentOperators->push_back(&AS_NOT_EQUAL);\n\tnonAssignmentOperators->push_back(&AS_GR_EQUAL);\n\tnonAssignmentOperators->push_back(&AS_GR_GR_GR);\n\tnonAssignmentOperators->push_back(&AS_GR_GR);\n\tnonAssignmentOperators->push_back(&AS_LS_EQUAL);\n\tnonAssignmentOperators->push_back(&AS_LS_LS_LS);\n\tnonAssignmentOperators->push_back(&AS_LS_LS);\n\tnonAssignmentOperators->push_back(&AS_ARROW);\n\tnonAssignmentOperators->push_back(&AS_AND);\n\tnonAssignmentOperators->push_back(&AS_OR);\n\tnonAssignmentOperators->push_back(&AS_LAMBDA);\n\n\tsort(nonAssignmentOperators->begin(), nonAssignmentOperators->end(), sortOnLength);\n}\n\n/**\n * Build the vector of header non-paren headers.\n * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp.\n * NOTE: Non-paren headers should also be included in the headers vector.\n *\n * @param nonParenHeaders       a reference to the vector to be built.\n */\nvoid ASResource::buildNonParenHeaders(vector<const string*>* nonParenHeaders, int fileType, bool beautifier)\n{\n\tnonParenHeaders->push_back(&AS_ELSE);\n\tnonParenHeaders->push_back(&AS_DO);\n\tnonParenHeaders->push_back(&AS_TRY);\n\tnonParenHeaders->push_back(&AS_CATCH);\t\t// can be paren or non-paren\n\tnonParenHeaders->push_back(&AS_CASE);\t\t// can be paren or non-paren\n\tnonParenHeaders->push_back(&AS_DEFAULT);\n\tnonParenHeaders->push_back(&AS_QFOREVER);\t// QT\n\tnonParenHeaders->push_back(&AS_FOREVER);\t// Boost\n\n\tif (fileType == C_TYPE)\n\t{\n\t\tnonParenHeaders->push_back(&_AS_TRY);\t\t// __try\n\t\tnonParenHeaders->push_back(&_AS_FINALLY);\t// __finally\n\t}\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\tnonParenHeaders->push_back(&AS_FINALLY);\n\t}\n\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\tnonParenHeaders->push_back(&AS_FINALLY);\n\t\tnonParenHeaders->push_back(&AS_GET);\n\t\tnonParenHeaders->push_back(&AS_SET);\n\t\tnonParenHeaders->push_back(&AS_ADD);\n\t\tnonParenHeaders->push_back(&AS_REMOVE);\n\t}\n\n\tif (beautifier)\n\t{\n\t\tif (fileType == C_TYPE)\n\t\t{\n\t\t\tnonParenHeaders->push_back(&AS_TEMPLATE);\n\t\t}\n\t\tif (fileType == JAVA_TYPE)\n\t\t{\n\t\t\tnonParenHeaders->push_back(&AS_STATIC);\n\t\t}\n\t}\n\tsort(nonParenHeaders->begin(), nonParenHeaders->end(), sortOnName);\n}\n\n/**\n * Build the vector of operators.\n * Used by ONLY ASFormatter.cpp\n *\n * @param operators             a reference to the vector to be built.\n */\nvoid ASResource::buildOperators(vector<const string*>* operators, int fileType)\n{\n\toperators->push_back(&AS_PLUS_ASSIGN);\n\toperators->push_back(&AS_MINUS_ASSIGN);\n\toperators->push_back(&AS_MULT_ASSIGN);\n\toperators->push_back(&AS_DIV_ASSIGN);\n\toperators->push_back(&AS_MOD_ASSIGN);\n\toperators->push_back(&AS_OR_ASSIGN);\n\toperators->push_back(&AS_AND_ASSIGN);\n\toperators->push_back(&AS_XOR_ASSIGN);\n\toperators->push_back(&AS_EQUAL);\n\toperators->push_back(&AS_PLUS_PLUS);\n\toperators->push_back(&AS_MINUS_MINUS);\n\toperators->push_back(&AS_NOT_EQUAL);\n\toperators->push_back(&AS_GR_EQUAL);\n\toperators->push_back(&AS_GR_GR_GR_ASSIGN);\n\toperators->push_back(&AS_GR_GR_ASSIGN);\n\toperators->push_back(&AS_GR_GR_GR);\n\toperators->push_back(&AS_GR_GR);\n\toperators->push_back(&AS_LS_EQUAL);\n\toperators->push_back(&AS_LS_LS_LS_ASSIGN);\n\toperators->push_back(&AS_LS_LS_ASSIGN);\n\toperators->push_back(&AS_LS_LS_LS);\n\toperators->push_back(&AS_LS_LS);\n\toperators->push_back(&AS_QUESTION_QUESTION);\n\toperators->push_back(&AS_LAMBDA);\n\toperators->push_back(&AS_ARROW);\n\toperators->push_back(&AS_AND);\n\toperators->push_back(&AS_OR);\n\toperators->push_back(&AS_SCOPE_RESOLUTION);\n\toperators->push_back(&AS_PLUS);\n\toperators->push_back(&AS_MINUS);\n\toperators->push_back(&AS_MULT);\n\toperators->push_back(&AS_DIV);\n\toperators->push_back(&AS_MOD);\n\toperators->push_back(&AS_QUESTION);\n\toperators->push_back(&AS_COLON);\n\toperators->push_back(&AS_ASSIGN);\n\toperators->push_back(&AS_LS);\n\toperators->push_back(&AS_GR);\n\toperators->push_back(&AS_NOT);\n\toperators->push_back(&AS_BIT_OR);\n\toperators->push_back(&AS_BIT_AND);\n\toperators->push_back(&AS_BIT_NOT);\n\toperators->push_back(&AS_BIT_XOR);\n\tif (fileType == C_TYPE)\n\t{\n\t\toperators->push_back(&AS_GCC_MIN_ASSIGN);\n\t\toperators->push_back(&AS_GCC_MAX_ASSIGN);\n\t}\n\tsort(operators->begin(), operators->end(), sortOnLength);\n}\n\n/**\n * Build the vector of pre-block statements.\n * Used by ONLY ASBeautifier.cpp\n * NOTE: Cannot be both a header and a preBlockStatement.\n *\n * @param preBlockStatements        a reference to the vector to be built.\n */\nvoid ASResource::buildPreBlockStatements(vector<const string*>* preBlockStatements, int fileType)\n{\n\tpreBlockStatements->push_back(&AS_CLASS);\n\tif (fileType == C_TYPE)\n\t{\n\t\tpreBlockStatements->push_back(&AS_STRUCT);\n\t\tpreBlockStatements->push_back(&AS_UNION);\n\t\tpreBlockStatements->push_back(&AS_NAMESPACE);\n\t}\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\tpreBlockStatements->push_back(&AS_INTERFACE);\n\t\tpreBlockStatements->push_back(&AS_THROWS);\n\t}\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\tpreBlockStatements->push_back(&AS_INTERFACE);\n\t\tpreBlockStatements->push_back(&AS_NAMESPACE);\n\t\tpreBlockStatements->push_back(&AS_WHERE);\n\t\tpreBlockStatements->push_back(&AS_STRUCT);\n\t}\n\tsort(preBlockStatements->begin(), preBlockStatements->end(), sortOnName);\n}\n\n/**\n * Build the vector of pre-command headers.\n * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp.\n * NOTE: Cannot be both a header and a preCommandHeader.\n *\n * A preCommandHeader is in a function definition between\n * the closing paren and the opening bracket.\n * e.g. in \"void foo() const {}\", \"const\" is a preCommandHeader.\n */\nvoid ASResource::buildPreCommandHeaders(vector<const string*>* preCommandHeaders, int fileType)\n{\n\tif (fileType == C_TYPE)\n\t{\n\t\tpreCommandHeaders->push_back(&AS_CONST);\n\t\tpreCommandHeaders->push_back(&AS_VOLATILE);\n\t\tpreCommandHeaders->push_back(&AS_INTERRUPT);\n\t\tpreCommandHeaders->push_back(&AS_NOEXCEPT);\n\t\tpreCommandHeaders->push_back(&AS_OVERRIDE);\n\t\tpreCommandHeaders->push_back(&AS_SEALED);\t\t\t// Visual C only\n\t\tpreCommandHeaders->push_back(&AS_AUTORELEASEPOOL);\t// Obj-C only\n\t}\n\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\tpreCommandHeaders->push_back(&AS_THROWS);\n\t}\n\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\tpreCommandHeaders->push_back(&AS_WHERE);\n\t}\n\n\tsort(preCommandHeaders->begin(), preCommandHeaders->end(), sortOnName);\n}\n\n/**\n * Build the vector of pre-definition headers.\n * Used by ONLY ASFormatter.cpp\n * NOTE: Do NOT add 'enum' here. It is an array type bracket.\n * NOTE: Do NOT add 'extern' here. Do not want an extra indent.\n *\n * @param preDefinitionHeaders      a reference to the vector to be built.\n */\nvoid ASResource::buildPreDefinitionHeaders(vector<const string*>* preDefinitionHeaders, int fileType)\n{\n\tpreDefinitionHeaders->push_back(&AS_CLASS);\n\tif (fileType == C_TYPE)\n\t{\n\t\tpreDefinitionHeaders->push_back(&AS_STRUCT);\n\t\tpreDefinitionHeaders->push_back(&AS_UNION);\n\t\tpreDefinitionHeaders->push_back(&AS_NAMESPACE);\n\t}\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\tpreDefinitionHeaders->push_back(&AS_INTERFACE);\n\t}\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\tpreDefinitionHeaders->push_back(&AS_STRUCT);\n\t\tpreDefinitionHeaders->push_back(&AS_INTERFACE);\n\t\tpreDefinitionHeaders->push_back(&AS_NAMESPACE);\n\t}\n\tsort(preDefinitionHeaders->begin(), preDefinitionHeaders->end(), sortOnName);\n}\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *                             ASBase Functions\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n// check if a specific line position contains a keyword.\nbool ASBase::findKeyword(const string &line, int i, const string &keyword) const\n{\n\tassert(isCharPotentialHeader(line, i));\n\t// check the word\n\tconst size_t keywordLength = keyword.length();\n\tconst size_t wordEnd = i + keywordLength;\n\tif (wordEnd > line.length())\n\t\treturn false;\n\tif (line.compare(i, keywordLength, keyword) != 0)\n\t\treturn false;\n\t// check that this is not part of a longer word\n\tif (wordEnd == line.length())\n\t\treturn true;\n\tif (isLegalNameChar(line[wordEnd]))\n\t\treturn false;\n\t// is not a keyword if part of a definition\n\tconst char peekChar = peekNextChar(line, wordEnd - 1);\n\tif (peekChar == ',' || peekChar == ')')\n\t\treturn false;\n\treturn true;\n}\n\n// get the current word on a line\n// index must point to the beginning of the word\nstring ASBase::getCurrentWord(const string &line, size_t index) const\n{\n\tassert(isCharPotentialHeader(line, index));\n\tsize_t lineLength = line.length();\n\tsize_t i;\n\tfor (i = index; i < lineLength; i++)\n\t{\n\t\tif (!isLegalNameChar(line[i]))\n\t\t\tbreak;\n\t}\n\treturn line.substr(index, i - index);\n}\n\n}   // end namespace astyle\n"
  },
  {
    "path": "3rdpart/astyle/astyle.h",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   astyle.h\n\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#ifndef ASTYLE_H\n#define ASTYLE_H\n\n#ifdef __VMS\n\t#define __USE_STD_IOSTREAM 1\n\t#include <assert>\n#else\n\t#include <cassert>\n#endif\n\n#include <cctype>\n#include <iostream>\t\t// for cout\n#include <string>\n#include <vector>\n\n#ifdef __GNUC__\n\t#include <string.h>\t\t// need both string and string.h for GCC\n#endif\n\n#ifdef _MSC_VER\n\t#pragma warning(disable: 4996)  // secure version deprecation warnings\n\t#pragma warning(disable: 4267)  // 64 bit signed/unsigned loss of data\n#endif\n\n#ifdef __BORLANDC__\n\t#pragma warn -8004\t            // variable is assigned a value that is never used\n#endif\n\n#ifdef __INTEL_COMPILER\n\t#pragma warning(disable:  383)  // value copied to temporary, reference to temporary used\n\t#pragma warning(disable:  981)  // operands are evaluated in unspecified order\n#endif\n\n#ifdef __clang__\n\t#pragma clang diagnostic ignored \"-Wshorten-64-to-32\"\n#endif\n\nnamespace astyle {\n\nusing namespace std;\n\nenum FileType { C_TYPE = 0, JAVA_TYPE = 1, SHARP_TYPE = 2 };\n\n/* The enums below are not recognized by 'vectors' in Microsoft Visual C++\n   V5 when they are part of a namespace!!!  Use Visual C++ V6 or higher.\n*/\nenum FormatStyle\n{\n\tSTYLE_NONE,\n\tSTYLE_ALLMAN,\n\tSTYLE_JAVA,\n\tSTYLE_KR,\n\tSTYLE_STROUSTRUP,\n\tSTYLE_WHITESMITH,\n\tSTYLE_VTK,\n\tSTYLE_BANNER,\n\tSTYLE_GNU,\n\tSTYLE_LINUX,\n\tSTYLE_HORSTMANN,\n\tSTYLE_1TBS,\n\tSTYLE_GOOGLE,\n\tSTYLE_PICO,\n\tSTYLE_LISP\n};\n\nenum BracketMode\n{\n\tNONE_MODE,\n\tATTACH_MODE,\n\tBREAK_MODE,\n\tLINUX_MODE,\n\tSTROUSTRUP_MODE,\n\tRUN_IN_MODE\n};\n\nenum BracketType\n{\n\tNULL_TYPE = 0,\n\tNAMESPACE_TYPE = 1,\t\t\t// also a DEFINITION_TYPE\n\tCLASS_TYPE = 2,\t\t\t\t// also a DEFINITION_TYPE\n\tSTRUCT_TYPE = 4,\t\t\t// also a DEFINITION_TYPE\n\tINTERFACE_TYPE = 8,\t\t\t// also a DEFINITION_TYPE\n\tDEFINITION_TYPE = 16,\n\tCOMMAND_TYPE = 32,\n\tARRAY_NIS_TYPE = 64,\t\t// also an ARRAY_TYPE\n\tENUM_TYPE = 128,\t\t\t// also an ARRAY_TYPE\n\tINIT_TYPE = 256,\t\t\t// also an ARRAY_TYPE\n\tARRAY_TYPE = 512,\n\tEXTERN_TYPE = 1024,\t\t\t// extern \"C\", not a command type extern\n\tSINGLE_LINE_TYPE = 2048\n};\n\nenum MinConditional\n{\n\tMINCOND_ZERO,\n\tMINCOND_ONE,\n\tMINCOND_TWO,\n\tMINCOND_ONEHALF,\n\tMINCOND_END\n};\n\nenum ObjCColonPad\n{\n\tCOLON_PAD_NO_CHANGE,\n\tCOLON_PAD_NONE,\n\tCOLON_PAD_ALL,\n\tCOLON_PAD_AFTER,\n\tCOLON_PAD_BEFORE\n};\n\nenum PointerAlign\n{\n\tPTR_ALIGN_NONE,\n\tPTR_ALIGN_TYPE,\n\tPTR_ALIGN_MIDDLE,\n\tPTR_ALIGN_NAME\n};\n\nenum ReferenceAlign\n{\n\tREF_ALIGN_NONE = PTR_ALIGN_NONE,\n\tREF_ALIGN_TYPE = PTR_ALIGN_TYPE,\n\tREF_ALIGN_MIDDLE = PTR_ALIGN_MIDDLE,\n\tREF_ALIGN_NAME = PTR_ALIGN_NAME,\n\tREF_SAME_AS_PTR\n};\n\nenum FileEncoding\n{\n\tENCODING_8BIT,\n\tUTF_16BE,\n\tUTF_16LE,     // Windows default\n\tUTF_32BE,\n\tUTF_32LE\n};\n\nenum LineEndFormat\n{\n\tLINEEND_DEFAULT,\t// Use line break that matches most of the file\n\tLINEEND_WINDOWS,\n\tLINEEND_LINUX,\n\tLINEEND_MACOLD,\n\tLINEEND_CRLF = LINEEND_WINDOWS,\n\tLINEEND_LF   = LINEEND_LINUX,\n\tLINEEND_CR   = LINEEND_MACOLD\n};\n\n//-----------------------------------------------------------------------------\n// Class ASSourceIterator\n// A pure virtual class is used by ASFormatter and ASBeautifier instead of\n// ASStreamIterator. This allows programs using AStyle as a plug-in to define\n// their own ASStreamIterator. The ASStreamIterator class must inherit\n// this class.\n//-----------------------------------------------------------------------------\n\nclass ASSourceIterator\n{\n\tpublic:\n\t\tASSourceIterator() {}\n\t\tvirtual ~ASSourceIterator() {}\n\t\tvirtual int getStreamLength() const = 0;\n\t\tvirtual bool hasMoreLines() const = 0;\n\t\tvirtual string nextLine(bool emptyLineWasDeleted = false) = 0;\n\t\tvirtual string peekNextLine() = 0;\n\t\tvirtual void peekReset() = 0;\n\t\tvirtual streamoff tellg() = 0;\n};\n\n//-----------------------------------------------------------------------------\n// Class ASResource\n//-----------------------------------------------------------------------------\n\nclass ASResource\n{\n\tpublic:\n\t\tASResource() {}\n\t\tvirtual ~ASResource() {}\n\t\tvoid buildAssignmentOperators(vector<const string*>* assignmentOperators);\n\t\tvoid buildCastOperators(vector<const string*>* castOperators);\n\t\tvoid buildHeaders(vector<const string*>* headers, int fileType, bool beautifier = false);\n\t\tvoid buildIndentableMacros(vector<const pair<const string, const string>* >* indentableMacros);\n\t\tvoid buildIndentableHeaders(vector<const string*>* indentableHeaders);\n\t\tvoid buildNonAssignmentOperators(vector<const string*>* nonAssignmentOperators);\n\t\tvoid buildNonParenHeaders(vector<const string*>* nonParenHeaders, int fileType, bool beautifier = false);\n\t\tvoid buildOperators(vector<const string*>* operators, int fileType);\n\t\tvoid buildPreBlockStatements(vector<const string*>* preBlockStatements, int fileType);\n\t\tvoid buildPreCommandHeaders(vector<const string*>* preCommandHeaders, int fileType);\n\t\tvoid buildPreDefinitionHeaders(vector<const string*>* preDefinitionHeaders, int fileType);\n\n\tpublic:\n\t\tstatic const string AS_IF, AS_ELSE;\n\t\tstatic const string AS_DO, AS_WHILE;\n\t\tstatic const string AS_FOR;\n\t\tstatic const string AS_SWITCH, AS_CASE, AS_DEFAULT;\n\t\tstatic const string AS_TRY, AS_CATCH, AS_THROW, AS_THROWS, AS_FINALLY;\n\t\tstatic const string _AS_TRY, _AS_FINALLY, _AS_EXCEPT;\n\t\tstatic const string AS_PUBLIC, AS_PROTECTED, AS_PRIVATE;\n\t\tstatic const string AS_CLASS, AS_STRUCT, AS_UNION, AS_INTERFACE, AS_NAMESPACE;\n\t\tstatic const string AS_END;\n\t\tstatic const string AS_SELECTOR;\n\t\tstatic const string AS_EXTERN, AS_ENUM;\n\t\tstatic const string AS_STATIC, AS_CONST, AS_SEALED, AS_OVERRIDE, AS_VOLATILE, AS_NEW;\n\t\tstatic const string AS_NOEXCEPT, AS_INTERRUPT, AS_AUTORELEASEPOOL;\n\t\tstatic const string AS_WHERE, AS_LET, AS_SYNCHRONIZED;\n\t\tstatic const string AS_OPERATOR, AS_TEMPLATE;\n\t\tstatic const string AS_OPEN_BRACKET, AS_CLOSE_BRACKET;\n\t\tstatic const string AS_OPEN_LINE_COMMENT, AS_OPEN_COMMENT, AS_CLOSE_COMMENT;\n\t\tstatic const string AS_BAR_DEFINE, AS_BAR_INCLUDE, AS_BAR_IF, AS_BAR_EL, AS_BAR_ENDIF;\n\t\tstatic const string AS_RETURN;\n\t\tstatic const string AS_CIN, AS_COUT, AS_CERR;\n\t\tstatic const string AS_ASSIGN, AS_PLUS_ASSIGN, AS_MINUS_ASSIGN, AS_MULT_ASSIGN;\n\t\tstatic const string AS_DIV_ASSIGN, AS_MOD_ASSIGN, AS_XOR_ASSIGN, AS_OR_ASSIGN, AS_AND_ASSIGN;\n\t\tstatic const string AS_GR_GR_ASSIGN, AS_LS_LS_ASSIGN, AS_GR_GR_GR_ASSIGN, AS_LS_LS_LS_ASSIGN;\n\t\tstatic const string AS_GCC_MIN_ASSIGN, AS_GCC_MAX_ASSIGN;\n\t\tstatic const string AS_EQUAL, AS_PLUS_PLUS, AS_MINUS_MINUS, AS_NOT_EQUAL, AS_GR_EQUAL, AS_GR_GR_GR, AS_GR_GR;\n\t\tstatic const string AS_LS_EQUAL, AS_LS_LS_LS, AS_LS_LS;\n\t\tstatic const string AS_QUESTION_QUESTION, AS_LAMBDA;\n\t\tstatic const string AS_ARROW, AS_AND, AS_OR;\n\t\tstatic const string AS_SCOPE_RESOLUTION;\n\t\tstatic const string AS_PLUS, AS_MINUS, AS_MULT, AS_DIV, AS_MOD, AS_GR, AS_LS;\n\t\tstatic const string AS_NOT, AS_BIT_XOR, AS_BIT_OR, AS_BIT_AND, AS_BIT_NOT;\n\t\tstatic const string AS_QUESTION, AS_COLON, AS_SEMICOLON, AS_COMMA;\n\t\tstatic const string AS_ASM, AS__ASM__, AS_MS_ASM, AS_MS__ASM;\n\t\tstatic const string AS_QFOREACH, AS_QFOREVER, AS_FOREVER;\n\t\tstatic const string AS_FOREACH, AS_LOCK, AS_UNSAFE, AS_FIXED;\n\t\tstatic const string AS_GET, AS_SET, AS_ADD, AS_REMOVE;\n\t\tstatic const string AS_DELEGATE, AS_UNCHECKED;\n\t\tstatic const string AS_CONST_CAST, AS_DYNAMIC_CAST, AS_REINTERPRET_CAST, AS_STATIC_CAST;\n\t\tstatic const string AS_NS_DURING, AS_NS_HANDLER;\n};  // Class ASResource\n\n//-----------------------------------------------------------------------------\n// Class ASBase\n//-----------------------------------------------------------------------------\n\nclass ASBase\n{\n\tprivate:\n\t\t// all variables should be set by the \"init\" function\n\t\tint baseFileType;      // a value from enum FileType\n\n\tprotected:\n\t\tASBase() : baseFileType(C_TYPE) { }\n\t\tvirtual ~ASBase() {}\n\n\t\t// functions definitions are at the end of ASResource.cpp\n\t\tbool findKeyword(const string &line, int i, const string &keyword) const;\n\t\tstring getCurrentWord(const string &line, size_t index) const;\n\n\tprotected:\n\t\tvoid init(int fileTypeArg) { baseFileType = fileTypeArg; }\n\t\tbool isCStyle() const { return (baseFileType == C_TYPE); }\n\t\tbool isJavaStyle() const { return (baseFileType == JAVA_TYPE); }\n\t\tbool isSharpStyle() const { return (baseFileType == SHARP_TYPE); }\n\n\t\t// check if a specific character is a digit\n\t\t// NOTE: Visual C isdigit() gives assert error if char > 256\n\t\tbool isDigit(char ch) const {\n\t\t\treturn (ch >= '0' && ch <= '9');\n\t\t}\n\n\t\t// check if a specific character can be used in a legal variable/method/class name\n\t\tbool isLegalNameChar(char ch) const {\n\t\t\tif (isWhiteSpace(ch)) return false;\n\t\t\tif ((unsigned) ch > 127) return false;\n\t\t\treturn (isalnum((unsigned char)ch)\n\t\t\t        || ch == '.' || ch == '_'\n\t\t\t        || (isJavaStyle() && ch == '$')\n\t\t\t        || (isSharpStyle() && ch == '@'));  // may be used as a prefix\n\t\t}\n\n\t\t// check if a specific character can be part of a header\n\t\tbool isCharPotentialHeader(const string &line, size_t i) const {\n\t\t\tassert(!isWhiteSpace(line[i]));\n\t\t\tchar prevCh = ' ';\n\t\t\tif (i > 0) prevCh = line[i - 1];\n\t\t\tif (!isLegalNameChar(prevCh) && isLegalNameChar(line[i]))\n\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t}\n\n\t\t// check if a specific character can be part of an operator\n\t\tbool isCharPotentialOperator(char ch) const {\n\t\t\tassert(!isWhiteSpace(ch));\n\t\t\tif ((unsigned) ch > 127) return false;\n\t\t\treturn (ispunct((unsigned char)ch)\n\t\t\t        && ch != '{' && ch != '}'\n\t\t\t        && ch != '(' && ch != ')'\n\t\t\t        && ch != '[' && ch != ']'\n\t\t\t        && ch != ';' && ch != ','\n\t\t\t        && ch != '#' && ch != '\\\\'\n\t\t\t        && ch != '\\'' && ch != '\\\"');\n\t\t}\n\n\t\t// check if a specific character is a whitespace character\n\t\tbool isWhiteSpace(char ch) const { return (ch == ' ' || ch == '\\t'); }\n\n\t\t// peek at the next unread character.\n\t\tchar peekNextChar(const string &line, int i) const {\n\t\t\tchar ch = ' ';\n\t\t\tsize_t peekNum = line.find_first_not_of(\" \\t\", i + 1);\n\t\t\tif (peekNum == string::npos)\n\t\t\t\treturn ch;\n\t\t\tch = line[peekNum];\n\t\t\treturn ch;\n\t\t}\n};  // Class ASBase\n\n//-----------------------------------------------------------------------------\n// Class ASBeautifier\n//-----------------------------------------------------------------------------\n\nclass ASBeautifier : protected ASResource, protected ASBase\n{\n\tpublic:\n\t\tASBeautifier();\n\t\tvirtual ~ASBeautifier();\n\t\tvirtual void init(ASSourceIterator* iter);\n\t\tvirtual string beautify(const string &line);\n\t\tvoid setCaseIndent(bool state);\n\t\tvoid setClassIndent(bool state);\n\t\tvoid setCStyle();\n\t\tvoid setDefaultTabLength();\n\t\tvoid setEmptyLineFill(bool state);\n\t\tvoid setForceTabXIndentation(int length);\n\t\tvoid setJavaStyle();\n\t\tvoid setLabelIndent(bool state);\n\t\tvoid setMaxInStatementIndentLength(int max);\n\t\tvoid setMinConditionalIndentOption(int min);\n\t\tvoid setMinConditionalIndentLength();\n\t\tvoid setModeManuallySet(bool state);\n\t\tvoid setModifierIndent(bool state);\n\t\tvoid setNamespaceIndent(bool state);\n\t\tvoid setAlignMethodColon(bool state);\n\t\tvoid setSharpStyle();\n\t\tvoid setSpaceIndentation(int length = 4);\n\t\tvoid setSwitchIndent(bool state);\n\t\tvoid setTabIndentation(int length = 4, bool forceTabs = false);\n\t\tvoid setPreprocDefineIndent(bool state);\n\t\tvoid setPreprocConditionalIndent(bool state);\n\t\tint  getBeautifierFileType() const;\n\t\tint  getFileType() const;\n\t\tint  getIndentLength(void) const;\n\t\tint  getTabLength(void) const;\n\t\tstring getIndentString(void) const;\n\t\tstring getNextWord(const string &line, size_t currPos) const;\n\t\tbool getBracketIndent(void) const;\n\t\tbool getBlockIndent(void) const;\n\t\tbool getCaseIndent(void) const;\n\t\tbool getClassIndent(void) const;\n\t\tbool getEmptyLineFill(void) const;\n\t\tbool getForceTabIndentation(void) const;\n\t\tbool getModeManuallySet(void) const;\n\t\tbool getModifierIndent(void) const;\n\t\tbool getNamespaceIndent(void) const;\n\t\tbool getPreprocDefineIndent(void) const;\n\t\tbool getSwitchIndent(void) const;\n\n\tprotected:\n\t\tvoid deleteBeautifierVectors();\n\t\tconst string* findHeader(const string &line, int i,\n\t\t                         const vector<const string*>* possibleHeaders) const;\n\t\tconst string* findOperator(const string &line, int i,\n\t\t                           const vector<const string*>* possibleOperators) const;\n\t\tint  getNextProgramCharDistance(const string &line, int i) const;\n\t\tint  indexOf(vector<const string*> &container, const string* element) const;\n\t\tvoid setBlockIndent(bool state);\n\t\tvoid setBracketIndent(bool state);\n\t\tvoid setBracketIndentVtk(bool state);\n\t\tstring extractPreprocessorStatement(const string &line) const;\n\t\tstring trim(const string &str) const;\n\t\tstring rtrim(const string &str) const;\n\n\t\t// variables set by ASFormatter - must be updated in activeBeautifierStack\n\t\tint  inLineNumber;\n\t\tint  horstmannIndentInStatement;\n\t\tint  nonInStatementBracket;\n\t\tbool lineCommentNoBeautify;\n\t\tbool isElseHeaderIndent;\n\t\tbool isCaseHeaderCommentIndent;\n\t\tbool isNonInStatementArray;\n\t\tbool isSharpAccessor;\n\t\tbool isSharpDelegate;\n\t\tbool isInExternC;\n\t\tbool isInBeautifySQL;\n\t\tbool isInIndentableStruct;\n\t\tbool isInIndentablePreproc;\n\n\tprivate:  // functions\n\t\tASBeautifier(const ASBeautifier &copy);\n\t\tASBeautifier &operator=(ASBeautifier &);       // not to be implemented\n\n\t\tvoid adjustParsedLineIndentation(size_t iPrelim, bool isInExtraHeaderIndent);\n\t\tvoid computePreliminaryIndentation();\n\t\tvoid parseCurrentLine(const string &line);\n\t\tvoid popLastInStatementIndent();\n\t\tvoid processPreprocessor(const string &preproc, const string &line);\n\t\tvoid registerInStatementIndent(const string &line, int i, int spaceIndentCount,\n\t\t                               int tabIncrementIn, int minIndent, bool updateParenStack);\n\t\tvoid registerInStatementIndentColon(const string &line, int i, int tabIncrementIn);\n\t\tvoid initVectors();\n\t\tvoid initTempStacksContainer(vector<vector<const string*>*>* &container,\n\t\t                             vector<vector<const string*>*>* value);\n\t\tvoid clearObjCMethodDefinitionAlignment();\n\t\tvoid deleteBeautifierContainer(vector<ASBeautifier*>* &container);\n\t\tvoid deleteTempStacksContainer(vector<vector<const string*>*>* &container);\n\t\tint  adjustIndentCountForBreakElseIfComments() const;\n\t\tint  computeObjCColonAlignment(string &line, int colonAlignPosition) const;\n\t\tint  convertTabToSpaces(int i, int tabIncrementIn) const;\n\t\tint  getInStatementIndentAssign(const string &line, size_t currPos) const;\n\t\tint  getInStatementIndentComma(const string &line, size_t currPos) const;\n\t\tbool isIndentedPreprocessor(const string &line, size_t currPos) const;\n\t\tbool isLineEndComment(const string &line, int startPos) const;\n\t\tbool isPreprocessorConditionalCplusplus(const string &line) const;\n\t\tbool isInPreprocessorUnterminatedComment(const string &line);\n\t\tbool statementEndsWithComma(const string &line, int index) const;\n\t\tstring &getIndentedLineReturn(string &newLine, const string &originalLine) const;\n\t\tstring preLineWS(int lineIndentCount, int lineSpaceIndentCount) const;\n\t\ttemplate<typename T> void deleteContainer(T &container);\n\t\ttemplate<typename T> void initContainer(T &container, T value);\n\t\tvector<vector<const string*>*>* copyTempStacks(const ASBeautifier &other) const;\n\t\tpair<int, int> computePreprocessorIndent();\n\n\tprivate:  // variables\n\t\tint beautifierFileType;\n\t\tvector<const string*>* headers;\n\t\tvector<const string*>* nonParenHeaders;\n\t\tvector<const string*>* preBlockStatements;\n\t\tvector<const string*>* preCommandHeaders;\n\t\tvector<const string*>* assignmentOperators;\n\t\tvector<const string*>* nonAssignmentOperators;\n\t\tvector<const string*>* indentableHeaders;\n\n\t\tvector<ASBeautifier*>* waitingBeautifierStack;\n\t\tvector<ASBeautifier*>* activeBeautifierStack;\n\t\tvector<int>* waitingBeautifierStackLengthStack;\n\t\tvector<int>* activeBeautifierStackLengthStack;\n\t\tvector<const string*>* headerStack;\n\t\tvector<vector<const string*>* >* tempStacks;\n\t\tvector<int>* blockParenDepthStack;\n\t\tvector<bool>* blockStatementStack;\n\t\tvector<bool>* parenStatementStack;\n\t\tvector<bool>* bracketBlockStateStack;\n\t\tvector<int>* inStatementIndentStack;\n\t\tvector<int>* inStatementIndentStackSizeStack;\n\t\tvector<int>* parenIndentStack;\n\t\tvector<pair<int, int> >* preprocIndentStack;\n\n\t\tASSourceIterator* sourceIterator;\n\t\tconst string* currentHeader;\n\t\tconst string* previousLastLineHeader;\n\t\tconst string* probationHeader;\n\t\tconst string* lastLineHeader;\n\t\tstring indentString;\n\t\tstring verbatimDelimiter;\n\t\tbool isInQuote;\n\t\tbool isInVerbatimQuote;\n\t\tbool haveLineContinuationChar;\n\t\tbool isInAsm;\n\t\tbool isInAsmOneLine;\n\t\tbool isInAsmBlock;\n\t\tbool isInComment;\n\t\tbool isInPreprocessorComment;\n\t\tbool isInHorstmannComment;\n\t\tbool isInCase;\n\t\tbool isInQuestion;\n\t\tbool isInStatement;\n\t\tbool isInHeader;\n\t\tbool isInTemplate;\n\t\tbool isInDefine;\n\t\tbool isInDefineDefinition;\n\t\tbool classIndent;\n\t\tbool isIndentModeOff;\n\t\tbool isInClassHeader;\t\t\t// is in a class before the opening bracket\n\t\tbool isInClassHeaderTab;\t\t// is in an indentable class header line\n\t\tbool isInClassInitializer;\t\t// is in a class after the ':' initializer\n\t\tbool isInClass;\t\t\t\t\t// is in a class after the opening bracket\n\t\tbool isInObjCMethodDefinition;\n\t\tbool isImmediatelyPostObjCMethodDefinition;\n\t\tbool isInIndentablePreprocBlock;\n\t\tbool isInObjCInterface;\n\t\tbool isInEnum;\n\t\tbool isInEnumTypeID;\n\t\tbool isInLet;\n\t\tbool modifierIndent;\n\t\tbool switchIndent;\n\t\tbool caseIndent;\n\t\tbool namespaceIndent;\n\t\tbool bracketIndent;\n\t\tbool bracketIndentVtk;\n\t\tbool blockIndent;\n\t\tbool labelIndent;\n\t\tbool shouldIndentPreprocDefine;\n\t\tbool isInConditional;\n\t\tbool isModeManuallySet;\n\t\tbool shouldForceTabIndentation;\n\t\tbool emptyLineFill;\n\t\tbool backslashEndsPrevLine;\n\t\tbool lineOpensWithLineComment;\n\t\tbool lineOpensWithComment;\n\t\tbool lineStartsInComment;\n\t\tbool blockCommentNoIndent;\n\t\tbool blockCommentNoBeautify;\n\t\tbool previousLineProbationTab;\n\t\tbool lineBeginsWithOpenBracket;\n\t\tbool lineBeginsWithCloseBracket;\n\t\tbool lineBeginsWithComma;\n\t\tbool lineIsCommentOnly;\n\t\tbool lineIsLineCommentOnly;\n\t\tbool shouldIndentBrackettedLine;\n\t\tbool isInSwitch;\n\t\tbool foundPreCommandHeader;\n\t\tbool foundPreCommandMacro;\n\t\tbool shouldAlignMethodColon;\n\t\tbool shouldIndentPreprocConditional;\n\t\tint  indentCount;\n\t\tint  spaceIndentCount;\n\t\tint  spaceIndentObjCMethodDefinition;\n\t\tint  colonIndentObjCMethodDefinition;\n\t\tint  lineOpeningBlocksNum;\n\t\tint  lineClosingBlocksNum;\n\t\tint  fileType;\n\t\tint  minConditionalOption;\n\t\tint  minConditionalIndent;\n\t\tint  parenDepth;\n\t\tint  indentLength;\n\t\tint  tabLength;\n\t\tint  blockTabCount;\n\t\tint  maxInStatementIndent;\n\t\tint  classInitializerIndents;\n\t\tint  templateDepth;\n\t\tint  squareBracketCount;\n\t\tint  prevFinalLineSpaceIndentCount;\n\t\tint  prevFinalLineIndentCount;\n\t\tint  defineIndentCount;\n\t\tint  preprocBlockIndent;\n\t\tchar quoteChar;\n\t\tchar prevNonSpaceCh;\n\t\tchar currentNonSpaceCh;\n\t\tchar currentNonLegalCh;\n\t\tchar prevNonLegalCh;\n};  // Class ASBeautifier\n\n//-----------------------------------------------------------------------------\n// Class ASEnhancer\n//-----------------------------------------------------------------------------\n\nclass ASEnhancer : protected ASBase\n{\n\tpublic:  // functions\n\t\tASEnhancer();\n\t\tvirtual ~ASEnhancer();\n\t\tvoid init(int, int, int, bool, bool, bool, bool, bool, bool, bool,\n\t\t          vector<const pair<const string, const string>* >*);\n\t\tvoid enhance(string &line, bool isInNamespace, bool isInPreprocessor, bool isInSQL);\n\n\tprivate:  // functions\n\t\tvoid    convertForceTabIndentToSpaces(string  &line) const;\n\t\tvoid    convertSpaceIndentToForceTab(string &line) const;\n\t\tsize_t  findCaseColon(string  &line, size_t caseIndex) const;\n\t\tint     indentLine(string  &line, int indent) const;\n\t\tbool    isBeginDeclareSectionSQL(string  &line, size_t index) const;\n\t\tbool    isEndDeclareSectionSQL(string  &line, size_t index) const;\n\t\tbool    isOneLineBlockReached(string &line, int startChar) const;\n\t\tvoid    parseCurrentLine(string &line, bool isInPreprocessor, bool isInSQL);\n\t\tsize_t  processSwitchBlock(string  &line, size_t index);\n\t\tint     unindentLine(string  &line, int unindent) const;\n\n\tprivate:\n\t\t// options from command line or options file\n\t\tint  indentLength;\n\t\tint  tabLength;\n\t\tbool useTabs;\n\t\tbool forceTab;\n\t\tbool namespaceIndent;\n\t\tbool caseIndent;\n\t\tbool preprocBlockIndent;\n\t\tbool preprocDefineIndent;\n\t\tbool emptyLineFill;\n\n\t\t// parsing variables\n\t\tint  lineNumber;\n\t\tbool isInQuote;\n\t\tbool isInComment;\n\t\tchar quoteChar;\n\n\t\t// unindent variables\n\t\tint  bracketCount;\n\t\tint  switchDepth;\n\t\tint  eventPreprocDepth;\n\t\tbool lookingForCaseBracket;\n\t\tbool unindentNextLine;\n\t\tbool shouldUnindentLine;\n\t\tbool shouldUnindentComment;\n\n\t\t// struct used by ParseFormattedLine function\n\t\t// contains variables used to unindent the case blocks\n\t\tstruct switchVariables\n\t\t{\n\t\t\tint  switchBracketCount;\n\t\t\tint  unindentDepth;\n\t\t\tbool unindentCase;\n\t\t};\n\n\t\tswitchVariables sw;                      // switch variables struct\n\t\tvector<switchVariables> switchStack;     // stack vector of switch variables\n\n\t\t// event table variables\n\t\tbool nextLineIsEventIndent;             // begin event table indent is reached\n\t\tbool isInEventTable;                    // need to indent an event table\n\t\tvector<const pair<const string, const string>* >* indentableMacros;\n\n\t\t// SQL variables\n\t\tbool nextLineIsDeclareIndent;           // begin declare section indent is reached\n\t\tbool isInDeclareSection;                // need to indent a declare section\n\n};  // Class ASEnhancer\n\n//-----------------------------------------------------------------------------\n// Class ASFormatter\n//-----------------------------------------------------------------------------\n\nclass ASFormatter : public ASBeautifier\n{\n\tpublic:\t// functions\n\t\tASFormatter();\n\t\tvirtual ~ASFormatter();\n\t\tvirtual void init(ASSourceIterator* iter);\n\t\tvirtual bool hasMoreLines() const;\n\t\tvirtual string nextLine();\n\t\tLineEndFormat getLineEndFormat() const;\n\t\tbool getIsLineReady() const;\n\t\tvoid setFormattingStyle(FormatStyle style);\n\t\tvoid setAddBracketsMode(bool state);\n\t\tvoid setAddOneLineBracketsMode(bool state);\n\t\tvoid setRemoveBracketsMode(bool state);\n\t\tvoid setAttachClass(bool state);\n\t\tvoid setAttachExternC(bool state);\n\t\tvoid setAttachNamespace(bool state);\n\t\tvoid setAttachInline(bool state);\n\t\tvoid setBracketFormatMode(BracketMode mode);\n\t\tvoid setBreakAfterMode(bool state);\n\t\tvoid setBreakClosingHeaderBracketsMode(bool state);\n\t\tvoid setBreakBlocksMode(bool state);\n\t\tvoid setBreakClosingHeaderBlocksMode(bool state);\n\t\tvoid setBreakElseIfsMode(bool state);\n\t\tvoid setBreakOneLineBlocksMode(bool state);\n\t\tvoid setMethodPrefixPaddingMode(bool state);\n\t\tvoid setMethodPrefixUnPaddingMode(bool state);\n\t\tvoid setCloseTemplatesMode(bool state);\n\t\tvoid setDeleteEmptyLinesMode(bool state);\n\t\tvoid setIndentCol1CommentsMode(bool state);\n\t\tvoid setLineEndFormat(LineEndFormat fmt);\n\t\tvoid setMaxCodeLength(int max);\n\t\tvoid setObjCColonPaddingMode(ObjCColonPad mode);\n\t\tvoid setOperatorPaddingMode(bool mode);\n\t\tvoid setParensOutsidePaddingMode(bool mode);\n\t\tvoid setParensFirstPaddingMode(bool mode);\n\t\tvoid setParensInsidePaddingMode(bool mode);\n\t\tvoid setParensHeaderPaddingMode(bool mode);\n\t\tvoid setParensUnPaddingMode(bool state);\n\t\tvoid setPointerAlignment(PointerAlign alignment);\n\t\tvoid setPreprocBlockIndent(bool state);\n\t\tvoid setReferenceAlignment(ReferenceAlign alignment);\n\t\tvoid setSingleStatementsMode(bool state);\n\t\tvoid setStripCommentPrefix(bool state);\n\t\tvoid setTabSpaceConversionMode(bool state);\n\t\tsize_t getChecksumIn() const;\n\t\tsize_t getChecksumOut() const;\n\t\tint  getChecksumDiff() const;\n\t\tint  getFormatterFileType() const;\n\n\tprivate:  // functions\n\t\tASFormatter(const ASFormatter &copy);       // copy constructor not to be implemented\n\t\tASFormatter &operator=(ASFormatter &);      // assignment operator not to be implemented\n\t\ttemplate<typename T> void deleteContainer(T &container);\n\t\ttemplate<typename T> void initContainer(T &container, T value);\n\t\tchar peekNextChar() const;\n\t\tBracketType getBracketType();\n\t\tbool adjustChecksumIn(int adjustment);\n\t\tbool computeChecksumIn(const string &currentLine_);\n\t\tbool computeChecksumOut(const string &beautifiedLine);\n\t\tbool addBracketsToStatement();\n\t\tbool removeBracketsFromStatement();\n\t\tbool commentAndHeaderFollows();\n\t\tbool getNextChar();\n\t\tbool getNextLine(bool emptyLineWasDeleted = false);\n\t\tbool isArrayOperator() const;\n\t\tbool isBeforeComment() const;\n\t\tbool isBeforeAnyComment() const;\n\t\tbool isBeforeAnyLineEndComment(int startPos) const;\n\t\tbool isBeforeMultipleLineEndComments(int startPos) const;\n\t\tbool isBracketType(BracketType a, BracketType b) const;\n\t\tbool isClassInitializer() const;\n\t\tbool isClosingHeader(const string* header) const;\n\t\tbool isCurrentBracketBroken() const;\n\t\tbool isDereferenceOrAddressOf() const;\n\t\tbool isExecSQL(string &line, size_t index) const;\n\t\tbool isEmptyLine(const string &line) const;\n\t\tbool isExternC() const;\n\t\tbool isNextWordSharpNonParenHeader(int startChar) const;\n\t\tbool isNonInStatementArrayBracket() const;\n\t\tbool isOkToSplitFormattedLine();\n\t\tbool isPointerOrReference() const;\n\t\tbool isPointerOrReferenceCentered() const;\n\t\tbool isPointerOrReferenceVariable(string &word) const;\n\t\tbool isSharpStyleWithParen(const string* header) const;\n\t\tbool isStructAccessModified(string &firstLine, size_t index) const;\n\t\tbool isIndentablePreprocessorBlock(string &firstLine, size_t index);\n\t\tbool isUnaryOperator() const;\n\t\tbool isUniformInitializerBracket() const;\n\t\tbool isImmediatelyPostCast() const;\n\t\tbool isInExponent() const;\n\t\tbool isInSwitchStatement() const;\n\t\tbool isNextCharOpeningBracket(int startChar) const;\n\t\tbool isOkToBreakBlock(BracketType bracketType) const;\n\t\tbool isOperatorPaddingDisabled() const;\n\t\tbool pointerSymbolFollows() const;\n\t\tint  getCurrentLineCommentAdjustment();\n\t\tint  getNextLineCommentAdjustment();\n\t\tint  isOneLineBlockReached(string &line, int startChar) const;\n\t\tvoid adjustComments();\n\t\tvoid appendChar(char ch, bool canBreakLine);\n\t\tvoid appendCharInsideComments();\n\t\tvoid appendOperator(const string &sequence, bool canBreakLine = true);\n\t\tvoid appendSequence(const string &sequence, bool canBreakLine = true);\n\t\tvoid appendSpacePad();\n\t\tvoid appendSpaceAfter();\n\t\tvoid breakLine(bool isSplitLine = false);\n\t\tvoid buildLanguageVectors();\n\t\tvoid updateFormattedLineSplitPoints(char appendedChar);\n\t\tvoid updateFormattedLineSplitPointsOperator(const string &sequence);\n\t\tvoid checkIfTemplateOpener();\n\t\tvoid clearFormattedLineSplitPoints();\n\t\tvoid convertTabToSpaces();\n\t\tvoid deleteContainer(vector<BracketType>* &container);\n\t\tvoid formatArrayRunIn();\n\t\tvoid formatRunIn();\n\t\tvoid formatArrayBrackets(BracketType bracketType, bool isOpeningArrayBracket);\n\t\tvoid formatClosingBracket(BracketType bracketType);\n\t\tvoid formatCommentBody();\n\t\tvoid formatCommentOpener();\n\t\tvoid formatCommentCloser();\n\t\tvoid formatLineCommentBody();\n\t\tvoid formatLineCommentOpener();\n\t\tvoid formatOpeningBracket(BracketType bracketType);\n\t\tvoid formatQuoteBody();\n\t\tvoid formatQuoteOpener();\n\t\tvoid formatPointerOrReference();\n\t\tvoid formatPointerOrReferenceCast();\n\t\tvoid formatPointerOrReferenceToMiddle();\n\t\tvoid formatPointerOrReferenceToName();\n\t\tvoid formatPointerOrReferenceToType();\n\t\tvoid fixOptionVariableConflicts();\n\t\tvoid goForward(int i);\n\t\tvoid isLineBreakBeforeClosingHeader();\n\t\tvoid initContainer(vector<BracketType>* &container, vector<BracketType>* value);\n\t\tvoid initNewLine();\n\t\tvoid padObjCMethodColon();\n\t\tvoid padOperators(const string* newOperator);\n\t\tvoid padParens();\n\t\tvoid processPreprocessor();\n\t\tvoid resetEndOfStatement();\n\t\tvoid setAttachClosingBracketMode(bool state);\n\t\tvoid setBreakBlocksVariables();\n\t\tvoid stripCommentPrefix();\n\t\tvoid testForTimeToSplitFormattedLine();\n\t\tvoid trimContinuationLine();\n\t\tvoid updateFormattedLineSplitPointsPointerOrReference(size_t index);\n\t\tsize_t findFormattedLineSplitPoint() const;\n\t\tsize_t findNextChar(string &line, char searchChar, int searchStart = 0);\n\t\tconst string* checkForHeaderFollowingComment(const string &firstLine) const;\n\t\tconst string* getFollowingOperator() const;\n\t\tstring getPreviousWord(const string &line, int currPos) const;\n\t\tstring peekNextText(const string &firstLine, bool endOnEmptyLine = false, bool shouldReset = false) const;\n\n\tprivate:  // variables\n\t\tint formatterFileType;\n\t\tvector<const string*>* headers;\n\t\tvector<const string*>* nonParenHeaders;\n\t\tvector<const string*>* preDefinitionHeaders;\n\t\tvector<const string*>* preCommandHeaders;\n\t\tvector<const string*>* operators;\n\t\tvector<const string*>* assignmentOperators;\n\t\tvector<const string*>* castOperators;\n\t\tvector<const pair<const string, const string>* >* indentableMacros;\t// for ASEnhancer\n\n\t\tASSourceIterator* sourceIterator;\n\t\tASEnhancer* enhancer;\n\n\t\tvector<const string*>* preBracketHeaderStack;\n\t\tvector<BracketType>* bracketTypeStack;\n\t\tvector<int>* parenStack;\n\t\tvector<bool>* structStack;\n\t\tvector<bool>* questionMarkStack;\n\n\t\tstring currentLine;\n\t\tstring formattedLine;\n\t\tstring readyFormattedLine;\n\t\tstring verbatimDelimiter;\n\t\tconst string* currentHeader;\n\t\tconst string* previousOperator;    // used ONLY by pad-oper\n\t\tchar currentChar;\n\t\tchar previousChar;\n\t\tchar previousNonWSChar;\n\t\tchar previousCommandChar;\n\t\tchar quoteChar;\n\t\tstreamoff preprocBlockEnd;\n\t\tint  charNum;\n\t\tint  horstmannIndentChars;\n\t\tint  nextLineSpacePadNum;\n\t\tint  preprocBracketTypeStackSize;\n\t\tint  spacePadNum;\n\t\tint  tabIncrementIn;\n\t\tint  templateDepth;\n\t\tint  squareBracketCount;\n\t\tsize_t checksumIn;\n\t\tsize_t checksumOut;\n\t\tsize_t currentLineFirstBracketNum;\t// first bracket location on currentLine\n\t\tsize_t formattedLineCommentNum;     // comment location on formattedLine\n\t\tsize_t leadingSpaces;\n\t\tsize_t maxCodeLength;\n\n\t\t// possible split points\n\t\tsize_t maxSemi;\t\t\t// probably a 'for' statement\n\t\tsize_t maxAndOr;\t\t// probably an 'if' statement\n\t\tsize_t maxComma;\n\t\tsize_t maxParen;\n\t\tsize_t maxWhiteSpace;\n\t\tsize_t maxSemiPending;\n\t\tsize_t maxAndOrPending;\n\t\tsize_t maxCommaPending;\n\t\tsize_t maxParenPending;\n\t\tsize_t maxWhiteSpacePending;\n\n\t\tsize_t previousReadyFormattedLineLength;\n\t\tFormatStyle formattingStyle;\n\t\tBracketMode bracketFormatMode;\n\t\tBracketType previousBracketType;\n\t\tPointerAlign pointerAlignment;\n\t\tReferenceAlign referenceAlignment;\n\t\tObjCColonPad objCColonPadMode;\n\t\tLineEndFormat lineEnd;\n\t\tbool isVirgin;\n\t\tbool shouldPadOperators;\n\t\tbool shouldPadParensOutside;\n\t\tbool shouldPadFirstParen;\n\t\tbool shouldPadParensInside;\n\t\tbool shouldPadHeader;\n\t\tbool shouldStripCommentPrefix;\n\t\tbool shouldUnPadParens;\n\t\tbool shouldConvertTabs;\n\t\tbool shouldIndentCol1Comments;\n\t\tbool shouldIndentPreprocBlock;\n\t\tbool shouldCloseTemplates;\n\t\tbool shouldAttachExternC;\n\t\tbool shouldAttachNamespace;\n\t\tbool shouldAttachClass;\n\t\tbool shouldAttachInline;\n\t\tbool isInLineComment;\n\t\tbool isInComment;\n\t\tbool isInCommentStartLine;\n\t\tbool noTrimCommentContinuation;\n\t\tbool isInPreprocessor;\n\t\tbool isInPreprocessorBeautify;\n\t\tbool isInTemplate;\n\t\tbool doesLineStartComment;\n\t\tbool lineEndsInCommentOnly;\n\t\tbool lineIsCommentOnly;\n\t\tbool lineIsLineCommentOnly;\n\t\tbool lineIsEmpty;\n\t\tbool isImmediatelyPostCommentOnly;\n\t\tbool isImmediatelyPostEmptyLine;\n\t\tbool isInClassInitializer;\n\t\tbool isInQuote;\n\t\tbool isInVerbatimQuote;\n\t\tbool haveLineContinuationChar;\n\t\tbool isInQuoteContinuation;\n\t\tbool isHeaderInMultiStatementLine;\n\t\tbool isSpecialChar;\n\t\tbool isNonParenHeader;\n\t\tbool foundQuestionMark;\n\t\tbool foundPreDefinitionHeader;\n\t\tbool foundNamespaceHeader;\n\t\tbool foundClassHeader;\n\t\tbool foundStructHeader;\n\t\tbool foundInterfaceHeader;\n\t\tbool foundPreCommandHeader;\n\t\tbool foundPreCommandMacro;\n\t\tbool foundCastOperator;\n\t\tbool isInLineBreak;\n\t\tbool endOfAsmReached;\n\t\tbool endOfCodeReached;\n\t\tbool lineCommentNoIndent;\n\t\tbool isFormattingModeOff;\n\t\tbool isInEnum;\n\t\tbool isInExecSQL;\n\t\tbool isInAsm;\n\t\tbool isInAsmOneLine;\n\t\tbool isInAsmBlock;\n\t\tbool isLineReady;\n\t\tbool elseHeaderFollowsComments;\n\t\tbool caseHeaderFollowsComments;\n\t\tbool isPreviousBracketBlockRelated;\n\t\tbool isInPotentialCalculation;\n\t\tbool isCharImmediatelyPostComment;\n\t\tbool isPreviousCharPostComment;\n\t\tbool isCharImmediatelyPostLineComment;\n\t\tbool isCharImmediatelyPostOpenBlock;\n\t\tbool isCharImmediatelyPostCloseBlock;\n\t\tbool isCharImmediatelyPostTemplate;\n\t\tbool isCharImmediatelyPostReturn;\n\t\tbool isCharImmediatelyPostThrow;\n\t\tbool isCharImmediatelyPostOperator;\n\t\tbool isCharImmediatelyPostPointerOrReference;\n\t\tbool isInObjCMethodDefinition;\n\t\tbool isInObjCInterface;\n\t\tbool isInObjCSelector;\n\t\tbool breakCurrentOneLineBlock;\n\t\tbool shouldRemoveNextClosingBracket;\n\t\tbool isInHorstmannRunIn;\n\t\tbool currentLineBeginsWithBracket;\n\t\tbool attachClosingBracketMode;\n\t\tbool shouldBreakOneLineBlocks;\n\t\tbool shouldReparseCurrentChar;\n\t\tbool shouldBreakOneLineStatements;\n\t\tbool shouldBreakClosingHeaderBrackets;\n\t\tbool shouldBreakElseIfs;\n\t\tbool shouldBreakLineAfterLogical;\n\t\tbool shouldAddBrackets;\n\t\tbool shouldAddOneLineBrackets;\n\t\tbool shouldRemoveBrackets;\n\t\tbool shouldPadMethodColon;\n\t\tbool shouldPadMethodPrefix;\n\t\tbool shouldUnPadMethodPrefix;\n\t\tbool shouldDeleteEmptyLines;\n\t\tbool needHeaderOpeningBracket;\n\t\tbool shouldBreakLineAtNextChar;\n\t\tbool shouldKeepLineUnbroken;\n\t\tbool passedSemicolon;\n\t\tbool passedColon;\n\t\tbool isImmediatelyPostNonInStmt;\n\t\tbool isCharImmediatelyPostNonInStmt;\n\t\tbool isImmediatelyPostComment;\n\t\tbool isImmediatelyPostLineComment;\n\t\tbool isImmediatelyPostEmptyBlock;\n\t\tbool isImmediatelyPostPreprocessor;\n\t\tbool isImmediatelyPostReturn;\n\t\tbool isImmediatelyPostThrow;\n\t\tbool isImmediatelyPostOperator;\n\t\tbool isImmediatelyPostTemplate;\n\t\tbool isImmediatelyPostPointerOrReference;\n\t\tbool shouldBreakBlocks;\n\t\tbool shouldBreakClosingHeaderBlocks;\n\t\tbool isPrependPostBlockEmptyLineRequested;\n\t\tbool isAppendPostBlockEmptyLineRequested;\n\t\tbool isIndentableProprocessor;\n\t\tbool isIndentableProprocessorBlock;\n\t\tbool prependEmptyLine;\n\t\tbool appendOpeningBracket;\n\t\tbool foundClosingHeader;\n\t\tbool isInHeader;\n\t\tbool isImmediatelyPostHeader;\n\t\tbool isInCase;\n\t\tbool isFirstPreprocConditional;\n\t\tbool processedFirstConditional;\n\t\tbool isJavaStaticConstructor;\n\n\tprivate:  // inline functions\n\t\t// append the CURRENT character (curentChar) to the current formatted line.\n\t\tvoid appendCurrentChar(bool canBreakLine = true) {\n\t\t\tappendChar(currentChar, canBreakLine);\n\t\t}\n\n\t\t// check if a specific sequence exists in the current placement of the current line\n\t\tbool isSequenceReached(const char* sequence) const {\n\t\t\treturn currentLine.compare(charNum, strlen(sequence), sequence) == 0;\n\t\t}\n\n\t\t// call ASBase::findHeader for the current character\n\t\tconst string* findHeader(const vector<const string*>* headers_) {\n\t\t\treturn ASBeautifier::findHeader(currentLine, charNum, headers_);\n\t\t}\n\n\t\t// call ASBase::findOperator for the current character\n\t\tconst string* findOperator(const vector<const string*>* headers_) {\n\t\t\treturn ASBeautifier::findOperator(currentLine, charNum, headers_);\n\t\t}\n};  // Class ASFormatter\n\n\n//-----------------------------------------------------------------------------\n// astyle namespace global declarations\n//-----------------------------------------------------------------------------\n// sort comparison functions for ASResource\nbool sortOnLength(const string* a, const string* b);\nbool sortOnName(const string* a, const string* b);\n\n}   // end of astyle namespace\n\n// end of astyle namespace  --------------------------------------------------\n\n#endif // closes ASTYLE_H\n"
  },
  {
    "path": "3rdpart/astyle/astyle.pri",
    "content": "SOURCES += $$PWD/ASBeautifier.cpp\nSOURCES += $$PWD/ASEnhancer.cpp\nSOURCES += $$PWD/ASFormatter.cpp\nSOURCES += $$PWD/ASLocalizer.cpp\nSOURCES += $$PWD/ASResource.cpp\nSOURCES += $$PWD/astyle_main.cpp\n\nHEADERS += $$PWD/ASLocalizer.h\nHEADERS += $$PWD/astyle.h\nHEADERS += $$PWD/astyle_main.h\n\nDEFINES += ASTYLE_LIB\n\nINCLUDEPATH += $$PWD\n"
  },
  {
    "path": "3rdpart/astyle/astyle_main.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   astyle_main.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n/*\n    AStyle_main source file map.\n    This source file contains several classes.\n    They are arranged as follows.\n    ---------------------------------------\n    namespace astyle {\n    ASStreamIterator methods\n    ASConsole methods\n        // Windows specific\n        // Linux specific\n    ASLibrary methods\n        // Windows specific\n        // Linux specific\n    ASOptions methods\n    Utf8_16 methods\n    }   // end of astyle namespace\n    Global Area ---------------------------\n        Java Native Interface functions\n        AStyleMainUtf16 entry point\n        AStyleMain entry point\n        AStyleGetVersion entry point\n        main entry point\n    ---------------------------------------\n*/\n\n#include \"astyle_main.h\"\n\n#include <algorithm>\n#include <cstdlib>\n#include <errno.h>\n#include <fstream>\n#include <sstream>\n\n// includes for recursive getFileNames() function\n#ifdef _WIN32\n\t#undef UNICODE\t\t// use ASCII windows functions\n\t#include <windows.h>\n#else\n\t#include <dirent.h>\n\t#include <unistd.h>\n\t#include <sys/stat.h>\n\t#ifdef __VMS\n\t\t#include <unixlib.h>\n\t\t#include <rms.h>\n\t\t#include <ssdef.h>\n\t\t#include <stsdef.h>\n\t\t#include <lib$routines.h>\n\t\t#include <starlet.h>\n\t#endif /* __VMS */\n#endif\n\n#ifdef __DMC__\n\t#include <locale.h>\n#endif\n\n// turn off MinGW automatic file globbing\n// this CANNOT be in the astyle namespace\n#ifndef ASTYLE_LIB\n\tint _CRT_glob = 0;\n#endif\n\n//----------------------------------------------------------------------------\n// astyle namespace\n//----------------------------------------------------------------------------\n\nnamespace astyle {\n\n// console build variables\n#ifndef ASTYLE_LIB\n\tASConsole* g_console = NULL;     // class to encapsulate console variables\n\tostream* _err = &cerr;           // direct error messages to cerr\n\t#ifdef _WIN32\n\t\tchar g_fileSeparator = '\\\\';     // Windows file separator\n\t\tbool g_isCaseSensitive = false;  // Windows IS case sensitive\n\t#else\n\t\tchar g_fileSeparator = '/';      // Linux file separator\n\t\tbool g_isCaseSensitive = true;   // Linux IS NOT case sensitive\n\t#endif\t// _WIN32\n#endif\t// ASTYLE_LIB\n\n// java library build variables\n#ifdef ASTYLE_JNI\n\tJNIEnv*   g_env;\n\tjobject   g_obj;\n\tjmethodID g_mid;\n#endif\n\nconst char* g_version = \"2.05.1\";\n\n//-----------------------------------------------------------------------------\n// ASStreamIterator class\n// typename will be istringstream for GUI and istream otherwise\n//-----------------------------------------------------------------------------\n\ntemplate<typename T>\nASStreamIterator<T>::ASStreamIterator(T* in)\n{\n\tinStream = in;\n\tbuffer.reserve(200);\n\teolWindows = 0;\n\teolLinux = 0;\n\teolMacOld = 0;\n\toutputEOL[0] = '\\0';\n\tpeekStart = 0;\n\tprevLineDeleted = false;\n\tcheckForEmptyLine = false;\n\t// get length of stream\n\tinStream->seekg(0, inStream->end);\n\tstreamLength = inStream->tellg();\n\tinStream->seekg(0, inStream->beg);\n}\n\ntemplate<typename T>\nASStreamIterator<T>::~ASStreamIterator()\n{\n}\n\n/**\n* get the length of the input stream.\n* streamLength variable is set by the constructor.\n*\n* @return     length of the input file stream, converted to an int.\n*/\ntemplate<typename T>\nint ASStreamIterator<T>::getStreamLength() const\n{\n\treturn static_cast<int>(streamLength);\n}\n\n/**\n * read the input stream, delete any end of line characters,\n *     and build a string that contains the input line.\n *\n * @return        string containing the next input line minus any end of line characters\n */\ntemplate<typename T>\nstring ASStreamIterator<T>::nextLine(bool emptyLineWasDeleted)\n{\n\t// verify that the current position is correct\n\tassert(peekStart == 0);\n\n\t// a deleted line may be replaced if break-blocks is requested\n\t// this sets up the compare to check for a replaced empty line\n\tif (prevLineDeleted)\n\t{\n\t\tprevLineDeleted = false;\n\t\tcheckForEmptyLine = true;\n\t}\n\tif (!emptyLineWasDeleted)\n\t\tprevBuffer = buffer;\n\telse\n\t\tprevLineDeleted = true;\n\n\t// read the next record\n\tbuffer.clear();\n\tchar ch;\n\tinStream->get(ch);\n\n\twhile (!inStream->eof() && ch != '\\n' && ch != '\\r')\n\t{\n\t\tbuffer.append(1, ch);\n\t\tinStream->get(ch);\n\t}\n\n\tif (inStream->eof())\n\t{\n\t\treturn buffer;\n\t}\n\n\tint peekCh = inStream->peek();\n\n\t// find input end-of-line characters\n\tif (!inStream->eof())\n\t{\n\t\tif (ch == '\\r')         // CR+LF is windows otherwise Mac OS 9\n\t\t{\n\t\t\tif (peekCh == '\\n')\n\t\t\t{\n\t\t\t\tinStream->get();\n\t\t\t\teolWindows++;\n\t\t\t}\n\t\t\telse\n\t\t\t\teolMacOld++;\n\t\t}\n\t\telse                    // LF is Linux, allow for improbable LF/CR\n\t\t{\n\t\t\tif (peekCh == '\\r')\n\t\t\t{\n\t\t\t\tinStream->get();\n\t\t\t\teolWindows++;\n\t\t\t}\n\t\t\telse\n\t\t\t\teolLinux++;\n\t\t}\n\t}\n\telse\n\t{\n\t\tinStream->clear();\n\t}\n\n\t// set output end of line characters\n\tif (eolWindows >= eolLinux)\n\t{\n\t\tif (eolWindows >= eolMacOld)\n\t\t\tstrcpy(outputEOL, \"\\r\\n\");  // Windows (CR+LF)\n\t\telse\n\t\t\tstrcpy(outputEOL, \"\\r\");    // MacOld (CR)\n\t}\n\telse if (eolLinux >= eolMacOld)\n\t\tstrcpy(outputEOL, \"\\n\");\t\t// Linux (LF)\n\telse\n\t\tstrcpy(outputEOL, \"\\r\");\t\t// MacOld (CR)\n\n\treturn buffer;\n}\n\n// save the current position and get the next line\n// this can be called for multiple reads\n// when finished peeking you MUST call peekReset()\n// call this function from ASFormatter ONLY\ntemplate<typename T>\nstring ASStreamIterator<T>::peekNextLine()\n{\n\tassert(hasMoreLines());\n\tstring nextLine_;\n\tchar ch;\n\n\tif (peekStart == 0)\n\t\tpeekStart = inStream->tellg();\n\n\t// read the next record\n\tinStream->get(ch);\n\twhile (!inStream->eof() && ch != '\\n' && ch != '\\r')\n\t{\n\t\tnextLine_.append(1, ch);\n\t\tinStream->get(ch);\n\t}\n\n\tif (inStream->eof())\n\t{\n\t\treturn nextLine_;\n\t}\n\n\tint peekCh = inStream->peek();\n\n\t// remove end-of-line characters\n\tif (!inStream->eof())\n\t{\n\t\tif ((peekCh == '\\n' || peekCh == '\\r') && peekCh != ch)\n\t\t\tinStream->get();\n\t}\n\n\treturn nextLine_;\n}\n\n// reset current position and EOF for peekNextLine()\ntemplate<typename T>\nvoid ASStreamIterator<T>::peekReset()\n{\n\tassert(peekStart != 0);\n\tinStream->clear();\n\tinStream->seekg(peekStart);\n\tpeekStart = 0;\n}\n\n// save the last input line after input has reached EOF\ntemplate<typename T>\nvoid ASStreamIterator<T>::saveLastInputLine()\n{\n\tassert(inStream->eof());\n\tprevBuffer = buffer;\n}\n\n// return position of the get pointer\ntemplate<typename T>\nstreamoff ASStreamIterator<T>::tellg()\n{\n\treturn inStream->tellg();\n}\n\n// check for a change in line ends\ntemplate<typename T>\nbool ASStreamIterator<T>::getLineEndChange(int lineEndFormat) const\n{\n\tassert(lineEndFormat == LINEEND_DEFAULT\n\t       || lineEndFormat == LINEEND_WINDOWS\n\t       || lineEndFormat == LINEEND_LINUX\n\t       || lineEndFormat == LINEEND_MACOLD);\n\n\tbool lineEndChange = false;\n\tif (lineEndFormat == LINEEND_WINDOWS)\n\t\tlineEndChange = (eolLinux + eolMacOld != 0);\n\telse if (lineEndFormat == LINEEND_LINUX)\n\t\tlineEndChange = (eolWindows + eolMacOld != 0);\n\telse if (lineEndFormat == LINEEND_MACOLD)\n\t\tlineEndChange = (eolWindows + eolLinux != 0);\n\telse\n\t{\n\t\tif (eolWindows > 0)\n\t\t\tlineEndChange = (eolLinux + eolMacOld != 0);\n\t\telse if (eolLinux > 0)\n\t\t\tlineEndChange = (eolWindows + eolMacOld != 0);\n\t\telse if (eolMacOld > 0)\n\t\t\tlineEndChange = (eolWindows + eolLinux != 0);\n\t}\n\treturn lineEndChange;\n}\n\n//-----------------------------------------------------------------------------\n// ASConsole class\n// main function will be included only in the console build\n//-----------------------------------------------------------------------------\n\n#ifndef ASTYLE_LIB\n\n// rewrite a stringstream converting the line ends\nvoid ASConsole::convertLineEnds(ostringstream &out, int lineEnd)\n{\n\tassert(lineEnd == LINEEND_WINDOWS || lineEnd == LINEEND_LINUX || lineEnd == LINEEND_MACOLD);\n\tconst string &inStr = out.str();\t// avoids strange looking syntax\n\tstring outStr;\t\t\t\t\t\t// the converted output\n\tint inLength = inStr.length();\n\tfor (int pos = 0; pos < inLength; pos++)\n\t{\n\t\tif (inStr[pos] == '\\r')\n\t\t{\n\t\t\tif (inStr[pos + 1] == '\\n')\n\t\t\t{\n\t\t\t\t// CRLF\n\t\t\t\tif (lineEnd == LINEEND_CR)\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos];\t\t// Delete the LF\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse if (lineEnd == LINEEND_LF)\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos + 1];\t\t// Delete the CR\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos];\t\t// Do not change\n\t\t\t\t\toutStr += inStr[pos + 1];\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// CR\n\t\t\t\tif (lineEnd == LINEEND_CRLF)\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos];\t\t// Insert the CR\n\t\t\t\t\toutStr += '\\n';\t\t\t\t// Insert the LF\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse if (lineEnd == LINEEND_LF)\n\t\t\t\t{\n\t\t\t\t\toutStr += '\\n';\t\t\t\t// Insert the LF\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos];\t\t// Do not change\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (inStr[pos] == '\\n')\n\t\t{\n\t\t\t// LF\n\t\t\tif (lineEnd == LINEEND_CRLF)\n\t\t\t{\n\t\t\t\toutStr += '\\r';\t\t\t\t// Insert the CR\n\t\t\t\toutStr += inStr[pos];\t\t// Insert the LF\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (lineEnd == LINEEND_CR)\n\t\t\t{\n\t\t\t\toutStr += '\\r';\t\t\t\t// Insert the CR\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toutStr += inStr[pos];\t\t// Do not change\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\toutStr += inStr[pos];\t\t// Write the current char\n\t\t}\n\t}\n\t// replace the stream\n\tout.str(outStr);\n}\n\nvoid ASConsole::correctMixedLineEnds(ostringstream &out)\n{\n\tLineEndFormat lineEndFormat = LINEEND_DEFAULT;\n\tif (strcmp(outputEOL, \"\\r\\n\") == 0)\n\t\tlineEndFormat = LINEEND_WINDOWS;\n\tif (strcmp(outputEOL, \"\\n\") == 0)\n\t\tlineEndFormat = LINEEND_LINUX;\n\tif (strcmp(outputEOL, \"\\r\") == 0)\n\t\tlineEndFormat = LINEEND_MACOLD;\n\tconvertLineEnds(out, lineEndFormat);\n}\n\n// check files for 16 or 32 bit encoding\n// the file must have a Byte Order Mark (BOM)\n// NOTE: some string functions don't work with NULLs (e.g. length())\nFileEncoding ASConsole::detectEncoding(const char* data, size_t dataSize) const\n{\n\tFileEncoding encoding = ENCODING_8BIT;\n\n\tif (dataSize >= 4 && memcmp(data, \"\\x00\\x00\\xFE\\xFF\", 4) == 0)\n\t\tencoding = UTF_32BE;\n\telse if (dataSize >= 4 && memcmp(data, \"\\xFF\\xFE\\x00\\x00\", 4) == 0)\n\t\tencoding = UTF_32LE;\n\telse if (dataSize >= 2 && memcmp(data, \"\\xFE\\xFF\", 2) == 0)\n\t\tencoding = UTF_16BE;\n\telse if (dataSize >= 2 && memcmp(data, \"\\xFF\\xFE\", 2) == 0)\n\t\tencoding = UTF_16LE;\n\n\treturn encoding;\n}\n\n// error exit without a message\nvoid ASConsole::error() const\n{\n\t(*_err) << _(\"\\nArtistic Style has terminated\") << endl;\n\texit(EXIT_FAILURE);\n}\n\n// error exit with a message\nvoid ASConsole::error(const char* why, const char* what) const\n{\n\t(*_err) << why << ' ' << what << endl;\n\terror();\n}\n\n/**\n * If no files have been given, use cin for input and cout for output.\n *\n * This is used to format text for text editors like TextWrangler (Mac).\n * Do NOT display any console messages when this function is used.\n */\nvoid ASConsole::formatCinToCout()\n{\n\t// Using cin.tellg() causes problems with both Windows and Linux.\n\t// The Windows problem occurs when the input is not Windows line-ends.\n\t// The tellg() will be out of sequence with the get() statements.\n\t// The Linux cin.tellg() will return -1 (invalid).\n\t// Copying the input sequentially to a stringstream before\n\t// formatting solves the problem for both.\n\tistream* inStream = &cin;\n\tstringstream outStream;\n\tchar ch;\n\tinStream->get(ch);\n\twhile (!inStream->eof())\n\t{\n\t\toutStream.put(ch);\n\t\tinStream->get(ch);\n\t}\n\tASStreamIterator<stringstream> streamIterator(&outStream);\n\t// Windows pipe or redirection always outputs Windows line-ends.\n\t// Linux pipe or redirection will output any line end.\n\tLineEndFormat lineEndFormat = formatter.getLineEndFormat();\n\tinitializeOutputEOL(lineEndFormat);\n\tformatter.init(&streamIterator);\n\n\twhile (formatter.hasMoreLines())\n\t{\n\t\tcout << formatter.nextLine();\n\t\tif (formatter.hasMoreLines())\n\t\t{\n\t\t\tsetOutputEOL(lineEndFormat, streamIterator.getOutputEOL());\n\t\t\tcout << outputEOL;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// this can happen if the file if missing a closing bracket and break-blocks is requested\n\t\t\tif (formatter.getIsLineReady())\n\t\t\t{\n\t\t\t\tsetOutputEOL(lineEndFormat, streamIterator.getOutputEOL());\n\t\t\t\tcout << outputEOL;\n\t\t\t\tcout << formatter.nextLine();\n\t\t\t}\n\t\t}\n\t}\n\tcout.flush();\n}\n\n/**\n * Open input file, format it, and close the output.\n *\n * @param fileName_     The path and name of the file to be processed.\n */\nvoid ASConsole::formatFile(const string &fileName_)\n{\n\tstringstream in;\n\tostringstream out;\n\tFileEncoding encoding = readFile(fileName_, in);\n\n\t// Unless a specific language mode has been set, set the language mode\n\t// according to the file's suffix.\n\tif (!formatter.getModeManuallySet())\n\t{\n\t\tif (stringEndsWith(fileName_, string(\".java\")))\n\t\t\tformatter.setJavaStyle();\n\t\telse if (stringEndsWith(fileName_, string(\".cs\")))\n\t\t\tformatter.setSharpStyle();\n\t\telse\n\t\t\tformatter.setCStyle();\n\t}\n\n\t// set line end format\n\tstring nextLine;\t\t\t\t// next output line\n\tfilesAreIdentical = true;\t\t// input and output files are identical\n\tLineEndFormat lineEndFormat = formatter.getLineEndFormat();\n\tinitializeOutputEOL(lineEndFormat);\n\t// do this AFTER setting the file mode\n\tASStreamIterator<stringstream> streamIterator(&in);\n\tformatter.init(&streamIterator);\n\n\t// format the file\n\twhile (formatter.hasMoreLines())\n\t{\n\t\tnextLine = formatter.nextLine();\n\t\tout << nextLine;\n\t\tlinesOut++;\n\t\tif (formatter.hasMoreLines())\n\t\t{\n\t\t\tsetOutputEOL(lineEndFormat, streamIterator.getOutputEOL());\n\t\t\tout << outputEOL;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstreamIterator.saveLastInputLine();     // to compare the last input line\n\t\t\t// this can happen if the file if missing a closing bracket and break-blocks is requested\n\t\t\tif (formatter.getIsLineReady())\n\t\t\t{\n\t\t\t\tsetOutputEOL(lineEndFormat, streamIterator.getOutputEOL());\n\t\t\t\tout << outputEOL;\n\t\t\t\tnextLine = formatter.nextLine();\n\t\t\t\tout << nextLine;\n\t\t\t\tlinesOut++;\n\t\t\t\tstreamIterator.saveLastInputLine();\n\t\t\t}\n\t\t}\n\n\t\tif (filesAreIdentical)\n\t\t{\n\t\t\tif (streamIterator.checkForEmptyLine)\n\t\t\t{\n\t\t\t\tif (nextLine.find_first_not_of(\" \\t\") != string::npos)\n\t\t\t\t\tfilesAreIdentical = false;\n\t\t\t}\n\t\t\telse if (!streamIterator.compareToInputBuffer(nextLine))\n\t\t\t\tfilesAreIdentical = false;\n\t\t\tstreamIterator.checkForEmptyLine = false;\n\t\t}\n\t}\n\t// correct for mixed line ends\n\tif (lineEndsMixed)\n\t{\n\t\tcorrectMixedLineEnds(out);\n\t\tfilesAreIdentical = false;\n\t}\n\n\t// remove targetDirectory from filename if required by print\n\tstring displayName;\n\tif (hasWildcard)\n\t\tdisplayName = fileName_.substr(targetDirectory.length() + 1);\n\telse\n\t\tdisplayName = fileName_;\n\n\t// if file has changed, write the new file\n\tif (!filesAreIdentical || streamIterator.getLineEndChange(lineEndFormat))\n\t{\n\t\tif (!isDryRun)\n\t\t\twriteFile(fileName_, encoding, out);\n\t\tprintMsg(_(\"Formatted  %s\\n\"), displayName);\n\t\tfilesFormatted++;\n\t}\n\telse\n\t{\n\t\tif (!isFormattedOnly)\n\t\t\tprintMsg(_(\"Unchanged  %s\\n\"), displayName);\n\t\tfilesUnchanged++;\n\t}\n\n\tassert(formatter.getChecksumDiff() == 0);\n}\n\n// build a vector of argv options\n// the program path argv[0] is excluded\nvector<string> ASConsole::getArgvOptions(int argc, char** argv) const\n{\n\tvector<string> argvOptions;\n\tfor (int i = 1; i < argc; i++)\n\t{\n\t\targvOptions.push_back(string(argv[i]));\n\t}\n\treturn argvOptions;\n}\n\n// for unit testing\nvector<bool> ASConsole::getExcludeHitsVector() const\n{ return excludeHitsVector; }\n\n// for unit testing\nvector<string> ASConsole::getExcludeVector() const\n{ return excludeVector; }\n\n// for unit testing\nvector<string> ASConsole::getFileName() const\n{ return fileName; }\n\n// for unit testing\nvector<string> ASConsole::getFileNameVector() const\n{ return fileNameVector; }\n\n// for unit testing\nvector<string> ASConsole::getFileOptionsVector() const\n{ return fileOptionsVector; }\n\n// for unit testing\nbool ASConsole::getFilesAreIdentical() const\n{ return filesAreIdentical; }\n\n// for unit testing\nint ASConsole::getFilesFormatted() const\n{ return filesFormatted; }\n\n// for unit testing\nbool ASConsole::getIgnoreExcludeErrors() const\n{ return ignoreExcludeErrors; }\n\n// for unit testing\nbool ASConsole::getIgnoreExcludeErrorsDisplay() const\n{ return ignoreExcludeErrorsDisplay; }\n\n// for unit testing\nbool ASConsole::getIsDryRun() const\n{ return isDryRun; }\n\n// for unit testing\nbool ASConsole::getIsFormattedOnly() const\n{ return isFormattedOnly; }\n\n// for unit testing\nstring ASConsole::getLanguageID() const\n{ return localizer.getLanguageID(); }\n\n// for unit testing\nbool ASConsole::getIsQuiet() const\n{ return isQuiet; }\n\n// for unit testing\nbool ASConsole::getIsRecursive() const\n{ return isRecursive; }\n\n// for unit testing\nbool ASConsole::getIsVerbose() const\n{ return isVerbose; }\n\n// for unit testing\nbool ASConsole::getLineEndsMixed() const\n{ return lineEndsMixed; }\n\n// for unit testing\nbool ASConsole::getNoBackup() const\n{ return noBackup; }\n\n// for unit testing\nstring ASConsole::getOptionsFileName() const\n{ return optionsFileName; }\n\n// for unit testing\nvector<string> ASConsole::getOptionsVector() const\n{ return optionsVector; }\n\n// for unit testing\nstring ASConsole::getOrigSuffix() const\n{ return origSuffix; }\n\n// for unit testing\nbool ASConsole::getPreserveDate() const\n{ return preserveDate; }\n\n// for unit testing\nvoid ASConsole::setBypassBrowserOpen(bool state)\n{ bypassBrowserOpen = state; }\n\nstring ASConsole::getParam(const string &arg, const char* op)\n{\n\treturn arg.substr(strlen(op));\n}\n\n// initialize output end of line\nvoid ASConsole::initializeOutputEOL(LineEndFormat lineEndFormat)\n{\n\tassert(lineEndFormat == LINEEND_DEFAULT\n\t       || lineEndFormat == LINEEND_WINDOWS\n\t       || lineEndFormat == LINEEND_LINUX\n\t       || lineEndFormat == LINEEND_MACOLD);\n\n\toutputEOL[0] = '\\0';\t\t// current line end\n\tprevEOL[0] = '\\0';\t\t\t// previous line end\n\tlineEndsMixed = false;\t\t// output has mixed line ends, LINEEND_DEFAULT only\n\n\tif (lineEndFormat == LINEEND_WINDOWS)\n\t\tstrcpy(outputEOL, \"\\r\\n\");\n\telse if (lineEndFormat == LINEEND_LINUX)\n\t\tstrcpy(outputEOL, \"\\n\");\n\telse if (lineEndFormat == LINEEND_MACOLD)\n\t\tstrcpy(outputEOL, \"\\r\");\n\telse\n\t\toutputEOL[0] = '\\0';\n}\n\nFileEncoding ASConsole::readFile(const string &fileName_, stringstream &in) const\n{\n\tconst int blockSize = 65536;\t// 64 KB\n\tifstream fin(fileName_.c_str(), ios::binary);\n\tif (!fin)\n\t\terror(\"Cannot open input file\", fileName_.c_str());\n\tchar* data = new(nothrow) char[blockSize];\n\tif (!data)\n\t\terror(\"Cannot allocate memory for input file\", fileName_.c_str());\n\tfin.read(data, blockSize);\n\tif (fin.bad())\n\t\terror(\"Cannot read input file\", fileName_.c_str());\n\tsize_t dataSize = static_cast<size_t>(fin.gcount());\n\tFileEncoding encoding = detectEncoding(data, dataSize);\n\tif (encoding ==  UTF_32BE || encoding ==  UTF_32LE)\n\t\terror(_(\"Cannot process UTF-32 encoding\"), fileName_.c_str());\n\tbool firstBlock = true;\n\tbool isBigEndian = (encoding == UTF_16BE);\n\twhile (dataSize)\n\t{\n\t\tif (encoding == UTF_16LE || encoding == UTF_16BE)\n\t\t{\n\t\t\t// convert utf-16 to utf-8\n\t\t\tsize_t utf8Size = utf8_16.Utf8LengthFromUtf16(data, dataSize, isBigEndian);\n\t\t\tchar* utf8Out = new(nothrow) char[utf8Size];\n\t\t\tif (!utf8Out)\n\t\t\t\terror(\"Cannot allocate memory for utf-8 conversion\", fileName_.c_str());\n\t\t\tsize_t utf8Len = utf8_16.Utf16ToUtf8(data, dataSize, isBigEndian, firstBlock, utf8Out);\n\t\t\tassert(utf8Len == utf8Size);\n\t\t\tin << string(utf8Out, utf8Len);\n\t\t\tdelete [] utf8Out;\n\t\t}\n\t\telse\n\t\t\tin << string(data, dataSize);\n\t\tfin.read(data, blockSize);\n\t\tif (fin.bad())\n\t\t\terror(\"Cannot read input file\", fileName_.c_str());\n\t\tdataSize = static_cast<size_t>(fin.gcount());\n\t\tfirstBlock = false;\n\t}\n\tfin.close();\n\tdelete [] data;\n\treturn encoding;\n}\n\nvoid ASConsole::setIgnoreExcludeErrors(bool state)\n{ ignoreExcludeErrors = state; }\n\nvoid ASConsole::setIgnoreExcludeErrorsAndDisplay(bool state)\n{ ignoreExcludeErrors = state; ignoreExcludeErrorsDisplay = state; }\n\nvoid ASConsole::setIsFormattedOnly(bool state)\n{ isFormattedOnly = state; }\n\nvoid ASConsole::setIsQuiet(bool state)\n{ isQuiet = state; }\n\nvoid ASConsole::setIsRecursive(bool state)\n{ isRecursive = state; }\n\nvoid ASConsole::setIsDryRun(bool state)\n{ isDryRun = state; }\n\nvoid ASConsole::setIsVerbose(bool state)\n{ isVerbose = state; }\n\nvoid ASConsole::setNoBackup(bool state)\n{ noBackup = state; }\n\nvoid ASConsole::setOptionsFileName(string name)\n{ optionsFileName = name; }\n\nvoid ASConsole::setOrigSuffix(string suffix)\n{ origSuffix = suffix; }\n\nvoid ASConsole::setPreserveDate(bool state)\n{ preserveDate = state; }\n\n// set outputEOL variable\nvoid ASConsole::setOutputEOL(LineEndFormat lineEndFormat, const char* currentEOL)\n{\n\tif (lineEndFormat == LINEEND_DEFAULT)\n\t{\n\t\tstrcpy(outputEOL, currentEOL);\n\t\tif (strlen(prevEOL) == 0)\n\t\t\tstrcpy(prevEOL, outputEOL);\n\t\tif (strcmp(prevEOL, outputEOL) != 0)\n\t\t{\n\t\t\tlineEndsMixed = true;\n\t\t\tfilesAreIdentical = false;\n\t\t\tstrcpy(prevEOL, outputEOL);\n\t\t}\n\t}\n\telse\n\t{\n\t\tstrcpy(prevEOL, currentEOL);\n\t\tif (strcmp(prevEOL, outputEOL) != 0)\n\t\t\tfilesAreIdentical = false;\n\t}\n}\n\n#ifdef _WIN32  // Windows specific\n\n/**\n * WINDOWS function to display the last system error.\n */\nvoid ASConsole::displayLastError()\n{\n\tLPSTR msgBuf;\n\tDWORD lastError = GetLastError();\n\tFormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,\n\t              NULL,\n\t              lastError,\n\t              MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),  // Default language\n\t              (LPSTR) &msgBuf,\n\t              0,\n\t              NULL\n\t             );\n\t// Display the string.\n\t(*_err) << \"Error (\" << lastError << \") \" << msgBuf << endl;\n\t// Free the buffer.\n\tLocalFree(msgBuf);\n}\n\n/**\n * WINDOWS function to get the current directory.\n * NOTE: getenv(\"CD\") does not work for Windows Vista.\n *        The Windows function GetCurrentDirectory is used instead.\n *\n * @return              The path of the current directory\n */\nstring ASConsole::getCurrentDirectory(const string &fileName_) const\n{\n\tchar currdir[MAX_PATH];\n\tcurrdir[0] = '\\0';\n\tif (!GetCurrentDirectory(sizeof(currdir), currdir))\n\t\terror(\"Cannot find file\", fileName_.c_str());\n\treturn string(currdir);\n}\n\n/**\n * WINDOWS function to resolve wildcards and recurse into sub directories.\n * The fileName vector is filled with the path and names of files to process.\n *\n * @param directory     The path of the directory to be processed.\n * @param wildcard      The wildcard to be processed (e.g. *.cpp).\n */\nvoid ASConsole::getFileNames(const string &directory, const string &wildcard)\n{\n\tvector<string> subDirectory;    // sub directories of directory\n\tWIN32_FIND_DATA findFileData;   // for FindFirstFile and FindNextFile\n\n\t// Find the first file in the directory\n\t// Find will get at least \".\" and \"..\".\n\tstring firstFile = directory + \"\\\\*\";\n\tHANDLE hFind = FindFirstFile(firstFile.c_str(), &findFileData);\n\n\tif (hFind == INVALID_HANDLE_VALUE)\n\t{\n\t\t// Error (3) The system cannot find the path specified.\n\t\t// Error (123) The filename, directory name, or volume label syntax is incorrect.\n\t\t// ::FindClose(hFind); before exiting\n\t\tdisplayLastError();\n\t\terror(_(\"Cannot open directory\"), directory.c_str());\n\t}\n\n\t// save files and sub directories\n\tdo\n\t{\n\t\t// skip hidden or read only\n\t\tif (findFileData.cFileName[0] == '.'\n\t\t        || (findFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)\n\t\t        || (findFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY))\n\t\t\tcontinue;\n\n\t\t// is this a sub directory\n\t\tif (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)\n\t\t{\n\t\t\tif (!isRecursive)\n\t\t\t\tcontinue;\n\t\t\t// if a sub directory and recursive, save sub directory\n\t\t\tstring subDirectoryPath = directory + g_fileSeparator + findFileData.cFileName;\n\t\t\tif (isPathExclued(subDirectoryPath))\n\t\t\t\tprintMsg(_(\"Exclude  %s\\n\"), subDirectoryPath.substr(mainDirectoryLength));\n\t\t\telse\n\t\t\t\tsubDirectory.push_back(subDirectoryPath);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// save the file name\n\t\tstring filePathName = directory + g_fileSeparator + findFileData.cFileName;\n\t\t// check exclude before wildcmp to avoid \"unmatched exclude\" error\n\t\tbool isExcluded = isPathExclued(filePathName);\n\t\t// save file name if wildcard match\n\t\tif (wildcmp(wildcard.c_str(), findFileData.cFileName))\n\t\t{\n\t\t\tif (isExcluded)\n\t\t\t\tprintMsg(_(\"Exclude  %s\\n\"), filePathName.substr(mainDirectoryLength));\n\t\t\telse\n\t\t\t\tfileName.push_back(filePathName);\n\t\t}\n\t}\n\twhile (FindNextFile(hFind, &findFileData) != 0);\n\n\t// check for processing error\n\t::FindClose(hFind);\n\tDWORD dwError = GetLastError();\n\tif (dwError != ERROR_NO_MORE_FILES)\n\t\terror(\"Error processing directory\", directory.c_str());\n\n\t// recurse into sub directories\n\t// if not doing recursive subDirectory is empty\n\tfor (unsigned i = 0; i < subDirectory.size(); i++)\n\t\tgetFileNames(subDirectory[i], wildcard);\n\n\treturn;\n}\n\n/**\n * WINDOWS function to format a number according to the current locale.\n * This formats positive integers only, no float.\n *\n * @param num\t\tThe number to be formatted.\n * @param lcid\t\tThe LCID of the locale to be used for testing.\n * @return\t\t\tThe formatted number.\n */\nstring ASConsole::getNumberFormat(int num, size_t lcid) const\n{\n#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__BORLANDC__) || defined(__GNUC__)\n\t// Compilers that don't support C++ locales should still support this assert.\n\t// The C locale should be set but not the C++.\n\t// This function is not necessary if the C++ locale is set.\n\t// The locale().name() return value is not portable to all compilers.\n\tassert(locale().name() == \"C\");\n#endif\n\t// convert num to a string\n\tstringstream alphaNum;\n\talphaNum << num;\n\tstring number = alphaNum.str();\n\tif (useAscii)\n\t\treturn number;\n\n\t// format the number using the Windows API\n\tif (lcid == 0)\n\t\tlcid = LOCALE_USER_DEFAULT;\n\tint outSize = ::GetNumberFormat(lcid, 0, number.c_str(), NULL, NULL, 0);\n\tchar* outBuf = new(nothrow) char[outSize];\n\tif (outBuf == NULL)\n\t\treturn number;\n\t::GetNumberFormat(lcid, 0, number.c_str(), NULL, outBuf, outSize);\n\tstring formattedNum(outBuf);\n\tdelete [] outBuf;\n\t// remove the decimal\n\tint decSize = ::GetLocaleInfo(lcid, LOCALE_SDECIMAL, NULL, 0);\n\tchar* decBuf = new(nothrow) char[decSize];\n\tif (decBuf == NULL)\n\t\treturn number;\n\t::GetLocaleInfo(lcid, LOCALE_SDECIMAL, decBuf, decSize);\n\tsize_t i = formattedNum.rfind(decBuf);\n\tdelete [] decBuf;\n\tif (i != string::npos)\n\t\tformattedNum.erase(i);\n\tif (!formattedNum.length())\n\t\tformattedNum = \"0\";\n\treturn formattedNum;\n}\n\n/**\n * WINDOWS function to open a HTML file in the default browser.\n */\nvoid ASConsole::launchDefaultBrowser(const char* filePathIn /*NULL*/) const\n{\n\tstruct stat statbuf;\n\tconst char* envPaths[] = {  \"PROGRAMFILES(X86)\", \"PROGRAMFILES\" };\n\tsize_t pathsLen = sizeof(envPaths) / sizeof(envPaths[0]);\n\tstring htmlDefaultPath;\n\tfor (size_t i = 0; i < pathsLen; i++)\n\t{\n\t\tconst char* envPath = getenv(envPaths[i]);\n\t\tif (envPath == NULL)\n\t\t\tcontinue;\n\t\thtmlDefaultPath = envPath;\n\t\tif (htmlDefaultPath.length() > 0\n\t\t        && htmlDefaultPath[htmlDefaultPath.length() - 1] == g_fileSeparator)\n\t\t\thtmlDefaultPath.erase(htmlDefaultPath.length() - 1);\n\t\thtmlDefaultPath.append(\"\\\\AStyle\\\\doc\");\n\t\tif (stat(htmlDefaultPath.c_str(), &statbuf) == 0 && statbuf.st_mode & S_IFDIR)\n\t\t\tbreak;\n\t}\n\thtmlDefaultPath.append(\"\\\\\");\n\n\t// build file path\n\tstring htmlFilePath;\n\tif (filePathIn == NULL)\n\t\thtmlFilePath = htmlDefaultPath + \"astyle.html\";\n\telse\n\t{\n\t\tif (strpbrk(filePathIn, \"\\\\/\") == NULL)\n\t\t\thtmlFilePath = htmlDefaultPath + filePathIn;\n\t\telse\n\t\t\thtmlFilePath = filePathIn;\n\t}\n\tstandardizePath(htmlFilePath);\n\tif (stat(htmlFilePath.c_str(), &statbuf) != 0 || !(statbuf.st_mode & S_IFREG))\n\t{\n\t\tprintf(_(\"Cannot open HTML file %s\\n\"), htmlFilePath.c_str());\n\t\treturn;\n\t}\n\n\tSHELLEXECUTEINFO sei = { sizeof(sei), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };\n\tsei.fMask = SEE_MASK_FLAG_NO_UI;\n\tsei.lpVerb = \"open\";\n\tsei.lpFile = htmlFilePath.c_str();\n\tsei.nShow = SW_SHOWNORMAL;\n\n\t// browser open will be bypassed in test programs\n\tprintf(_(\"Opening HTML documentation %s\\n\"), htmlFilePath.c_str());\n\tif (!bypassBrowserOpen)\n\t{\n\t\tint ret = ShellExecuteEx(&sei);\n\t\tif (!ret)\n\t\t\terror(_(\"Command execute failure\"), htmlFilePath.c_str());\n\t}\n}\n\n#else  // Linux specific\n\n/**\n * LINUX function to get the current directory.\n * This is done if the fileName does not contain a path.\n * It is probably from an editor sending a single file.\n *\n * @param fileName_     The filename is used only for  the error message.\n * @return              The path of the current directory\n */\nstring ASConsole::getCurrentDirectory(const string &fileName_) const\n{\n\tchar* currdir = getenv(\"PWD\");\n\tif (currdir == NULL)\n\t\terror(\"Cannot find file\", fileName_.c_str());\n\treturn string(currdir);\n}\n\n/**\n * LINUX function to resolve wildcards and recurse into sub directories.\n * The fileName vector is filled with the path and names of files to process.\n *\n * @param directory     The path of the directory to be processed.\n * @param wildcard      The wildcard to be processed (e.g. *.cpp).\n */\nvoid ASConsole::getFileNames(const string &directory, const string &wildcard)\n{\n\tstruct dirent* entry;           // entry from readdir()\n\tstruct stat statbuf;            // entry from stat()\n\tvector<string> subDirectory;    // sub directories of this directory\n\n\t// errno is defined in <errno.h> and is set for errors in opendir, readdir, or stat\n\terrno = 0;\n\n\tDIR* dp = opendir(directory.c_str());\n\tif (dp == NULL)\n\t\terror(_(\"Cannot open directory\"), directory.c_str());\n\n\t// save the first fileName entry for this recursion\n\tconst unsigned firstEntry = fileName.size();\n\n\t// save files and sub directories\n\twhile ((entry = readdir(dp)) != NULL)\n\t{\n\t\t// get file status\n\t\tstring entryFilepath = directory + g_fileSeparator + entry->d_name;\n\t\tif (stat(entryFilepath.c_str(), &statbuf) != 0)\n\t\t{\n\t\t\tif (errno == EOVERFLOW)         // file over 2 GB is OK\n\t\t\t{\n\t\t\t\terrno = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tperror(\"errno message\");\n\t\t\terror(\"Error getting file status in directory\", directory.c_str());\n\t\t}\n\t\t// skip hidden or read only\n\t\tif (entry->d_name[0] == '.' || !(statbuf.st_mode & S_IWUSR))\n\t\t\tcontinue;\n\t\t// if a sub directory and recursive, save sub directory\n\t\tif (S_ISDIR(statbuf.st_mode) && isRecursive)\n\t\t{\n\t\t\tif (isPathExclued(entryFilepath))\n\t\t\t\tprintMsg(_(\"Exclude  %s\\n\"), entryFilepath.substr(mainDirectoryLength));\n\t\t\telse\n\t\t\t\tsubDirectory.push_back(entryFilepath);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if a file, save file name\n\t\tif (S_ISREG(statbuf.st_mode))\n\t\t{\n\t\t\t// check exclude before wildcmp to avoid \"unmatched exclude\" error\n\t\t\tbool isExcluded = isPathExclued(entryFilepath);\n\t\t\t// save file name if wildcard match\n\t\t\tif (wildcmp(wildcard.c_str(), entry->d_name))\n\t\t\t{\n\t\t\t\tif (isExcluded)\n\t\t\t\t\tprintMsg(_(\"Exclude  %s\\n\"), entryFilepath.substr(mainDirectoryLength));\n\t\t\t\telse\n\t\t\t\t\tfileName.push_back(entryFilepath);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (closedir(dp) != 0)\n\t{\n\t\tperror(\"errno message\");\n\t\terror(\"Error reading directory\", directory.c_str());\n\t}\n\n\t// sort the current entries for fileName\n\tif (firstEntry < fileName.size())\n\t\tsort(&fileName[firstEntry], &fileName[fileName.size()]);\n\n\t// recurse into sub directories\n\t// if not doing recursive, subDirectory is empty\n\tif (subDirectory.size() > 1)\n\t\tsort(subDirectory.begin(), subDirectory.end());\n\tfor (unsigned i = 0; i < subDirectory.size(); i++)\n\t{\n\t\tgetFileNames(subDirectory[i], wildcard);\n\t}\n\n\treturn;\n}\n\n/**\n * LINUX function to get locale information and call getNumberFormat.\n * This formats positive integers only, no float.\n *\n * @param num\t\tThe number to be formatted.\n *                  size_t is for compatibility with the Windows function.\n * @return\t\t\tThe formatted number.\n */\nstring ASConsole::getNumberFormat(int num, size_t) const\n{\n#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__BORLANDC__) || defined(__GNUC__)\n\t// Compilers that don't support C++ locales should still support this assert.\n\t// The C locale should be set but not the C++.\n\t// This function is not necessary if the C++ locale is set.\n\t// The locale().name() return value is not portable to all compilers.\n\tassert(locale().name() == \"C\");\n#endif\n\n\t// get the locale info\n\tstruct lconv* lc;\n\tlc = localeconv();\n\n\t// format the number\n\treturn getNumberFormat(num, lc->grouping, lc->thousands_sep);\n}\n\n/**\n * LINUX function to format a number according to the current locale.\n * This formats positive integers only, no float.\n *\n * @param num\t\t\tThe number to be formatted.\n * @param groupingArg   The grouping string from the locale.\n * @param  separator\tThe thousands group separator from the locale.\n * @return\t\t\t\tThe formatted number.\n */\nstring ASConsole::getNumberFormat(int num, const char* groupingArg, const char* separator) const\n{\n\t// convert num to a string\n\tstringstream alphaNum;\n\talphaNum << num;\n\tstring number = alphaNum.str();\n\t// format the number from right to left\n\tstring formattedNum;\n\tsize_t ig = 0;\t// grouping index\n\tint grouping = groupingArg[ig];\n\tint i = number.length();\n\t// check for no grouping\n\tif (grouping == 0)\n\t\tgrouping = number.length();\n\twhile (i > 0)\n\t{\n\t\t// extract a group of numbers\n\t\tstring group;\n\t\tif (i < grouping)\n\t\t\tgroup = number;\n\t\telse\n\t\t\tgroup = number.substr(i - grouping);\n\t\t// update formatted number\n\t\tformattedNum.insert(0, group);\n\t\ti -= grouping;\n\t\tif (i < 0)\n\t\t\ti = 0;\n\t\tif (i > 0)\n\t\t\tformattedNum.insert(0, separator);\n\t\tnumber.erase(i);\n\t\t// update grouping\n\t\tif (groupingArg[ig] != '\\0'\n\t\t        && groupingArg[ig + 1] != '\\0')\n\t\t\tgrouping = groupingArg[++ig];\n\t}\n\treturn formattedNum;\n}\n\n/**\n * LINUX function to open a HTML file in the default browser.\n * Use xdg-open from freedesktop.org cross-desktop compatibility suite xdg-utils.\n * see http://portland.freedesktop.org/wiki/\n * This is installed on most modern distributions.\n */\nvoid ASConsole::launchDefaultBrowser(const char* filePathIn /*NULL*/) const\n{\n\tstruct stat statbuf;\n\tstring htmlDefaultPath = \"/usr/share/doc/astyle/html/\";\n\tstring htmlDefaultFile = \"astyle.html\";\n\n\t// build file path\n\tstring htmlFilePath;\n\tif (filePathIn == NULL)\n\t\thtmlFilePath = htmlDefaultPath + htmlDefaultFile;\n\telse\n\t{\n\t\tif (strpbrk(filePathIn, \"\\\\/\") == NULL)\n\t\t\thtmlFilePath = htmlDefaultPath + filePathIn;\n\t\telse\n\t\t\thtmlFilePath = filePathIn;\n\t}\n\tstandardizePath(htmlFilePath);\n\tif (stat(htmlFilePath.c_str(), &statbuf) != 0 || !(statbuf.st_mode & S_IFREG))\n\t{\n\t\tprintf(_(\"Cannot open HTML file %s\\n\"), htmlFilePath.c_str());\n\t\treturn;\n\t}\n\n\t// get search paths\n\tconst char* envPaths = getenv(\"PATH\");\n\tif (envPaths == NULL)\n\t\tenvPaths = \"?\";\n\tsize_t envlen = strlen(envPaths);\n\tchar* paths = new char[envlen + 1];\n\tstrcpy(paths, envPaths);\n\t// find xdg-open (usually in /usr/bin)\n\t// Mac uses open instead\n#ifdef __APPLE__\n\tconst char* FILE_OPEN = \"open\";\n#else\n\tconst char* FILE_OPEN = \"xdg-open\";\n#endif\n\tstring searchPath;\n\tchar* searchDir = strtok(paths, \":\");\n\twhile (searchDir != NULL)\n\t{\n\t\tsearchPath = searchDir;\n\t\tif (searchPath.length() > 0\n\t\t        && searchPath[searchPath.length() - 1] != g_fileSeparator)\n\t\t\tsearchPath.append(string(1, g_fileSeparator));\n\t\tsearchPath.append(FILE_OPEN);\n\t\tif (stat(searchPath.c_str(), &statbuf) == 0 && (statbuf.st_mode & S_IFREG))\n\t\t\tbreak;\n\t\tsearchDir = strtok(NULL, \":\");\n\t}\n\tdelete[] paths;\n\tif (searchDir == NULL)\n\t\terror(_(\"Command is not installed\"), FILE_OPEN);\n\n\t// browser open will be bypassed in test programs\n\tprintf(_(\"Opening HTML documentation %s\\n\"), htmlFilePath.c_str());\n\tif (!bypassBrowserOpen)\n\t{\n\t\texeclp(FILE_OPEN, FILE_OPEN, htmlFilePath.c_str(), NULL);\n\t\t// execlp will NOT return if successful\n\t\terror(_(\"Command execute failure\"), FILE_OPEN);\n\t}\n}\n\n#endif  // _WIN32\n\n// get individual file names from the command-line file path\nvoid ASConsole::getFilePaths(string &filePath)\n{\n\tfileName.clear();\n\ttargetDirectory = string();\n\ttargetFilename = string();\n\n\t// separate directory and file name\n\tsize_t separator = filePath.find_last_of(g_fileSeparator);\n\tif (separator == string::npos)\n\t{\n\t\t// if no directory is present, use the currently active directory\n\t\ttargetDirectory = getCurrentDirectory(filePath);\n\t\ttargetFilename  = filePath;\n\t\tmainDirectoryLength = targetDirectory.length() + 1;    // +1 includes trailing separator\n\t}\n\telse\n\t{\n\t\ttargetDirectory = filePath.substr(0, separator);\n\t\ttargetFilename  = filePath.substr(separator + 1);\n\t\tmainDirectoryLength = targetDirectory.length() + 1;    // +1 includes trailing separator\n\t}\n\n\tif (targetFilename.length() == 0)\n\t{\n\t\tfprintf(stderr, _(\"Missing filename in %s\\n\"), filePath.c_str());\n\t\terror();\n\t}\n\n\t// check filename for wildcards\n\thasWildcard = false;\n\tif (targetFilename.find_first_of(\"*?\") != string::npos)\n\t\thasWildcard = true;\n\n\t// clear exclude hits vector\n\tfor (size_t ix = 0; ix < excludeHitsVector.size(); ix++)\n\t\texcludeHitsVector[ix] = false;\n\n\t// If the filename is not quoted on Linux, bash will replace the\n\t// wildcard instead of passing it to the program.\n\tif (isRecursive && !hasWildcard)\n\t{\n\t\tfprintf(stderr, \"%s\\n\", _(\"Recursive option with no wildcard\"));\n#ifndef _WIN32\n\t\tfprintf(stderr, \"%s\\n\", _(\"Did you intend quote the filename\"));\n#endif\n\t\terror();\n\t}\n\n\t// display directory name for wildcard processing\n\tif (hasWildcard)\n\t{\n\t\tprintSeparatingLine();\n\t\tprintMsg(_(\"Directory  %s\\n\"), targetDirectory + g_fileSeparator + targetFilename);\n\t}\n\n\t// create a vector of paths and file names to process\n\tif (hasWildcard || isRecursive)\n\t\tgetFileNames(targetDirectory, targetFilename);\n\telse\n\t{\n\t\t// verify a single file is not a directory (needed on Linux)\n\t\tstring entryFilepath = targetDirectory + g_fileSeparator + targetFilename;\n\t\tstruct stat statbuf;\n\t\tif (stat(entryFilepath.c_str(), &statbuf) == 0 && (statbuf.st_mode & S_IFREG))\n\t\t\tfileName.push_back(entryFilepath);\n\t}\n\n\t// check for unprocessed excludes\n\tbool excludeErr = false;\n\tfor (size_t ix = 0; ix < excludeHitsVector.size(); ix++)\n\t{\n\t\tif (excludeHitsVector[ix] == false)\n\t\t{\n\t\t\texcludeErr = true;\n\t\t\tif (!ignoreExcludeErrorsDisplay)\n\t\t\t{\n\t\t\t\tif (ignoreExcludeErrors)\n\t\t\t\t\tprintMsg(_(\"Exclude (unmatched)  %s\\n\"), excludeVector[ix]);\n\t\t\t\telse\n\t\t\t\t\tfprintf(stderr, _(\"Exclude (unmatched)  %s\\n\"), excludeVector[ix].c_str());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!ignoreExcludeErrors)\n\t\t\t\t\tfprintf(stderr, _(\"Exclude (unmatched)  %s\\n\"), excludeVector[ix].c_str());\n\t\t\t}\n\t\t}\n\t}\n\n\tif (excludeErr && !ignoreExcludeErrors)\n\t{\n\t\tif (hasWildcard && !isRecursive)\n\t\t\tfprintf(stderr, \"%s\\n\", _(\"Did you intend to use --recursive\"));\n\t\terror();\n\t}\n\n\t// check if files were found (probably an input error if not)\n\tif (fileName.empty())\n\t{\n\t\tfprintf(stderr, _(\"No file to process %s\\n\"), filePath.c_str());\n\t\tif (hasWildcard && !isRecursive)\n\t\t\tfprintf(stderr, \"%s\\n\", _(\"Did you intend to use --recursive\"));\n\t\terror();\n\t}\n\n\tif (hasWildcard)\n\t\tprintSeparatingLine();\n}\n\nbool ASConsole::fileNameVectorIsEmpty() const\n{\n\treturn fileNameVector.empty();\n}\n\nbool ASConsole::isOption(const string &arg, const char* op)\n{\n\treturn arg.compare(op) == 0;\n}\n\nbool ASConsole::isOption(const string &arg, const char* a, const char* b)\n{\n\treturn (isOption(arg, a) || isOption(arg, b));\n}\n\nbool ASConsole::isParamOption(const string &arg, const char* option)\n{\n\tbool retVal = arg.compare(0, strlen(option), option) == 0;\n\t// if comparing for short option, 2nd char of arg must be numeric\n\tif (retVal && strlen(option) == 1 && arg.length() > 1)\n\t\tif (!isdigit((unsigned char)arg[1]))\n\t\t\tretVal = false;\n\treturn retVal;\n}\n\n// compare a path to the exclude vector\n// used for both directories and filenames\n// updates the g_excludeHitsVector\n// return true if a match\nbool ASConsole::isPathExclued(const string &subPath)\n{\n\tbool retVal = false;\n\n\t// read the exclude vector checking for a match\n\tfor (size_t i = 0; i < excludeVector.size(); i++)\n\t{\n\t\tstring exclude = excludeVector[i];\n\n\t\tif (subPath.length() < exclude.length())\n\t\t\tcontinue;\n\n\t\tsize_t compareStart = subPath.length() - exclude.length();\n\t\t// subPath compare must start with a directory name\n\t\tif (compareStart > 0)\n\t\t{\n\t\t\tchar lastPathChar = subPath[compareStart - 1];\n\t\t\tif (lastPathChar != g_fileSeparator)\n\t\t\t\tcontinue;\n\t\t}\n\n\t\tstring compare = subPath.substr(compareStart);\n\t\tif (!g_isCaseSensitive)\n\t\t{\n\t\t\t// make it case insensitive for Windows\n\t\t\tfor (size_t j = 0; j < compare.length(); j++)\n\t\t\t\tcompare[j] = (char)tolower(compare[j]);\n\t\t\tfor (size_t j = 0; j < exclude.length(); j++)\n\t\t\t\texclude[j] = (char)tolower(exclude[j]);\n\t\t}\n\t\t// compare sub directory to exclude data - must check them all\n\t\tif (compare == exclude)\n\t\t{\n\t\t\texcludeHitsVector[i] = true;\n\t\t\tretVal = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn retVal;\n}\n\nvoid ASConsole::printHelp() const\n{\n\tcout << endl;\n\tcout << \"                     Artistic Style \" << g_version << endl;\n\tcout << \"                     Maintained by: Jim Pattee\\n\";\n\tcout << \"                     Original Author: Tal Davidson\\n\";\n\tcout << endl;\n\tcout << \"Usage:\\n\";\n\tcout << \"------\\n\";\n\tcout << \"            astyle [OPTIONS] File1 File2 File3 [...]\\n\";\n\tcout << endl;\n\tcout << \"            astyle [OPTIONS] < Original > Beautified\\n\";\n\tcout << endl;\n\tcout << \"    When indenting a specific file, the resulting indented file RETAINS\\n\";\n\tcout << \"    the original file-name. The original pre-indented file is renamed,\\n\";\n\tcout << \"    with a suffix of \\'.orig\\' added to the original filename.\\n\";\n\tcout << endl;\n\tcout << \"    Wildcards (* and ?) may be used in the filename.\\n\";\n\tcout << \"    A \\'recursive\\' option can process directories recursively.\\n\";\n\tcout << endl;\n\tcout << \"    By default, astyle is set up to indent with four spaces per indent,\\n\";\n\tcout << \"    a maximal indentation of 40 spaces inside continuous statements,\\n\";\n\tcout << \"    a minimum indentation of eight spaces inside conditional statements,\\n\";\n\tcout << \"    and NO formatting options.\\n\";\n\tcout << endl;\n\tcout << \"Options:\\n\";\n\tcout << \"--------\\n\";\n\tcout << \"    This  program  follows  the  usual  GNU  command line syntax.\\n\";\n\tcout << \"    Long options (starting with '--') must be written one at a time.\\n\";\n\tcout << \"    Short options (starting with '-') may be appended together.\\n\";\n\tcout << \"    Thus, -bps4 is the same as -b -p -s4.\\n\";\n\tcout << endl;\n\tcout << \"Options File:\\n\";\n\tcout << \"-------------\\n\";\n\tcout << \"    Artistic Style looks for a default options file in the\\n\";\n\tcout << \"    following order:\\n\";\n\tcout << \"    1. The contents of the ARTISTIC_STYLE_OPTIONS environment\\n\";\n\tcout << \"       variable if it exists.\\n\";\n\tcout << \"    2. The file called .astylerc in the directory pointed to by the\\n\";\n\tcout << \"       HOME environment variable ( i.e. $HOME/.astylerc ).\\n\";\n\tcout << \"    3. The file called astylerc in the directory pointed to by the\\n\";\n\tcout << \"       USERPROFILE environment variable (i.e. %USERPROFILE%\\\\astylerc).\\n\";\n\tcout << \"    If a default options file is found, the options in this file will\\n\";\n\tcout << \"    be parsed BEFORE the command-line options.\\n\";\n\tcout << \"    Long options within the default option file may be written without\\n\";\n\tcout << \"    the preliminary '--'.\\n\";\n\tcout << endl;\n\tcout << \"Disable Formatting:\\n\";\n\tcout << \"----------------------\\n\";\n\tcout << \"    Disable Block\\n\";\n\tcout << \"    Blocks of code can be disabled with the comment tags *INDENT-OFF*\\n\";\n\tcout << \"    and *INDENT-ON*. It must be contained in a one-line comment.\\n\";\n\tcout << endl;\n\tcout << \"    Disable Line\\n\";\n\tcout << \"    Padding of operators can be disabled on a single line using the\\n\";\n\tcout << \"    comment tag *NOPAD*. It must be contained in a line-end comment.\\n\";\n\tcout << endl;\n\tcout << \"Bracket Style Options:\\n\";\n\tcout << \"----------------------\\n\";\n\tcout << \"    default bracket style\\n\";\n\tcout << \"    If no bracket style is requested, the opening brackets will not be\\n\";\n\tcout << \"    changed and closing brackets will be broken from the preceding line.\\n\";\n\tcout << endl;\n\tcout << \"    --style=allman  OR  --style=bsd  OR  --style=break  OR  -A1\\n\";\n\tcout << \"    Allman style formatting/indenting.\\n\";\n\tcout << \"    Broken brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=java  OR  --style=attach  OR  -A2\\n\";\n\tcout << \"    Java style formatting/indenting.\\n\";\n\tcout << \"    Attached brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=kr  OR  --style=k&r  OR  --style=k/r  OR  -A3\\n\";\n\tcout << \"    Kernighan & Ritchie style formatting/indenting.\\n\";\n\tcout << \"    Linux brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=stroustrup  OR  -A4\\n\";\n\tcout << \"    Stroustrup style formatting/indenting.\\n\";\n\tcout << \"    Stroustrup brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=whitesmith  OR  -A5\\n\";\n\tcout << \"    Whitesmith style formatting/indenting.\\n\";\n\tcout << \"    Broken, indented brackets.\\n\";\n\tcout << \"    Indented class blocks and switch blocks.\\n\";\n\tcout << endl;\n\tcout << \"    --style=vtk  OR  -A15\\n\";\n\tcout << \"    VTK style formatting/indenting.\\n\";\n\tcout << \"    Broken, indented brackets, except for opening brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=banner  OR  -A6\\n\";\n\tcout << \"    Banner style formatting/indenting.\\n\";\n\tcout << \"    Attached, indented brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=gnu  OR  -A7\\n\";\n\tcout << \"    GNU style formatting/indenting.\\n\";\n\tcout << \"    Broken brackets, indented blocks.\\n\";\n\tcout << endl;\n\tcout << \"    --style=linux  OR  --style=knf  OR  -A8\\n\";\n\tcout << \"    Linux style formatting/indenting.\\n\";\n\tcout << \"    Linux brackets, minimum conditional indent is one-half indent.\\n\";\n\tcout << endl;\n\tcout << \"    --style=horstmann  OR  -A9\\n\";\n\tcout << \"    Horstmann style formatting/indenting.\\n\";\n\tcout << \"    Run-in brackets, indented switches.\\n\";\n\tcout << endl;\n\tcout << \"    --style=1tbs  OR  --style=otbs  OR  -A10\\n\";\n\tcout << \"    One True Brace Style formatting/indenting.\\n\";\n\tcout << \"    Linux brackets, add brackets to all conditionals.\\n\";\n\tcout << endl;\n\tcout << \"    --style=google  OR  -A14\\n\";\n\tcout << \"    Google style formatting/indenting.\\n\";\n\tcout << \"    Attached brackets, indented class modifiers.\\n\";\n\tcout << endl;\n\tcout << \"    --style=pico  OR  -A11\\n\";\n\tcout << \"    Pico style formatting/indenting.\\n\";\n\tcout << \"    Run-in opening brackets and attached closing brackets.\\n\";\n\tcout << \"    Uses keep one line blocks and keep one line statements.\\n\";\n\tcout << endl;\n\tcout << \"    --style=lisp  OR  -A12\\n\";\n\tcout << \"    Lisp style formatting/indenting.\\n\";\n\tcout << \"    Attached opening brackets and attached closing brackets.\\n\";\n\tcout << \"    Uses keep one line statements.\\n\";\n\tcout << endl;\n\tcout << \"Tab Options:\\n\";\n\tcout << \"------------\\n\";\n\tcout << \"    default indent option\\n\";\n\tcout << \"    If no indentation option is set, the default\\n\";\n\tcout << \"    option of 4 spaces per indent will be used.\\n\";\n\tcout << endl;\n\tcout << \"    --indent=spaces=#  OR  -s#\\n\";\n\tcout << \"    Indent using # spaces per indent. Not specifying #\\n\";\n\tcout << \"    will result in a default of 4 spaces per indent.\\n\";\n\tcout << endl;\n\tcout << \"    --indent=tab  OR  --indent=tab=#  OR  -t  OR  -t#\\n\";\n\tcout << \"    Indent using tab characters, assuming that each\\n\";\n\tcout << \"    indent is # spaces long. Not specifying # will result\\n\";\n\tcout << \"    in a default assumption of 4 spaces per indent.\\n\";\n\tcout << endl;\n\tcout << \"    --indent=force-tab=#  OR  -T#\\n\";\n\tcout << \"    Indent using tab characters, assuming that each\\n\";\n\tcout << \"    indent is # spaces long. Force tabs to be used in areas\\n\";\n\tcout << \"    AStyle would prefer to use spaces.\\n\";\n\tcout << endl;\n\tcout << \"    --indent=force-tab-x=#  OR  -xT#\\n\";\n\tcout << \"    Allows the tab length to be set to a length that is different\\n\";\n\tcout << \"    from the indent length. This may cause the indentation to be\\n\";\n\tcout << \"    a mix of both spaces and tabs. This option sets the tab length.\\n\";\n\tcout << endl;\n\tcout << \"Bracket Modify Options:\\n\";\n\tcout << \"-----------------------\\n\";\n\tcout << \"    --attach-namespaces  OR  -xn\\n\";\n\tcout << \"    Attach brackets to a namespace statement.\\n\";\n\tcout << endl;\n\tcout << \"    --attach-classes  OR  -xc\\n\";\n\tcout << \"    Attach brackets to a class statement.\\n\";\n\tcout << endl;\n\tcout << \"    --attach-inlines  OR  -xl\\n\";\n\tcout << \"    Attach brackets to class inline function definitions.\\n\";\n\tcout << endl;\n\tcout << \"    --attach-extern-c  OR  -xk\\n\";\n\tcout << \"    Attach brackets to an extern \\\"C\\\" statement.\\n\";\n\tcout << endl;\n\tcout << \"Indentation Options:\\n\";\n\tcout << \"--------------------\\n\";\n\tcout << \"    --indent-classes  OR  -C\\n\";\n\tcout << \"    Indent 'class' blocks so that the entire block is indented.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-modifiers  OR  -xG\\n\";\n\tcout << \"    Indent 'class' access modifiers, 'public:', 'protected:' or\\n\";\n\tcout << \"    'private:', one half indent. The rest of the class is not\\n\";\n\tcout << \"    indented. \\n\";\n\tcout << endl;\n\tcout << \"    --indent-switches  OR  -S\\n\";\n\tcout << \"    Indent 'switch' blocks, so that the inner 'case XXX:'\\n\";\n\tcout << \"    headers are indented in relation to the switch block.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-cases  OR  -K\\n\";\n\tcout << \"    Indent case blocks from the 'case XXX:' headers.\\n\";\n\tcout << \"    Case statements not enclosed in blocks are NOT indented.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-namespaces  OR  -N\\n\";\n\tcout << \"    Indent the contents of namespace blocks.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-labels  OR  -L\\n\";\n\tcout << \"    Indent labels so that they appear one indent less than\\n\";\n\tcout << \"    the current indentation level, rather than being\\n\";\n\tcout << \"    flushed completely to the left (which is the default).\\n\";\n\tcout << endl;\n\tcout << \"    --indent-preproc-block  OR  -xW\\n\";\n\tcout << \"    Indent preprocessor blocks at bracket level 0.\\n\";\n\tcout << \"    Without this option the preprocessor block is not indented.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-preproc-cond  OR  -xw\\n\";\n\tcout << \"    Indent preprocessor conditional statements #if/#else/#endif\\n\";\n\tcout << \"    to the same level as the source code.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-preproc-define  OR  -w\\n\";\n\tcout << \"    Indent multi-line preprocessor #define statements.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-col1-comments  OR  -Y\\n\";\n\tcout << \"    Indent line comments that start in column one.\\n\";\n\tcout << endl;\n\tcout << \"    --min-conditional-indent=#  OR  -m#\\n\";\n\tcout << \"    Indent a minimal # spaces in a continuous conditional\\n\";\n\tcout << \"    belonging to a conditional header.\\n\";\n\tcout << \"    The valid values are:\\n\";\n\tcout << \"    0 - no minimal indent.\\n\";\n\tcout << \"    1 - indent at least one additional indent.\\n\";\n\tcout << \"    2 - indent at least two additional indents.\\n\";\n\tcout << \"    3 - indent at least one-half an additional indent.\\n\";\n\tcout << \"    The default value is 2, two additional indents.\\n\";\n\tcout << endl;\n\tcout << \"    --max-instatement-indent=#  OR  -M#\\n\";\n\tcout << \"    Indent a maximal # spaces in a continuous statement,\\n\";\n\tcout << \"    relative to the previous line.\\n\";\n\tcout << \"    The valid values are 40 thru 120.\\n\";\n\tcout << \"    The default value is 40.\\n\";\n\tcout << endl;\n\tcout << \"Padding Options:\\n\";\n\tcout << \"----------------\\n\";\n\tcout << \"    --break-blocks  OR  -f\\n\";\n\tcout << \"    Insert empty lines around unrelated blocks, labels, classes, ...\\n\";\n\tcout << endl;\n\tcout << \"    --break-blocks=all  OR  -F\\n\";\n\tcout << \"    Like --break-blocks, except also insert empty lines \\n\";\n\tcout << \"    around closing headers (e.g. 'else', 'catch', ...).\\n\";\n\tcout << endl;\n\tcout << \"    --pad-oper  OR  -p\\n\";\n\tcout << \"    Insert space padding around operators.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-paren  OR  -P\\n\";\n\tcout << \"    Insert space padding around parenthesis on both the outside\\n\";\n\tcout << \"    and the inside.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-paren-out  OR  -d\\n\";\n\tcout << \"    Insert space padding around parenthesis on the outside only.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-first-paren-out  OR  -xd\\n\";\n\tcout << \"    Insert space padding around first parenthesis in a series on\\n\";\n\tcout << \"    the outside only.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-paren-in  OR  -D\\n\";\n\tcout << \"    Insert space padding around parenthesis on the inside only.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-header  OR  -H\\n\";\n\tcout << \"    Insert space padding after paren headers (e.g. 'if', 'for'...).\\n\";\n\tcout << endl;\n\tcout << \"    --unpad-paren  OR  -U\\n\";\n\tcout << \"    Remove unnecessary space padding around parenthesis. This\\n\";\n\tcout << \"    can be used in combination with the 'pad' options above.\\n\";\n\tcout << endl;\n\tcout << \"    --delete-empty-lines  OR  -xd\\n\";\n\tcout << \"    Delete empty lines within a function or method.\\n\";\n\tcout << \"    It will NOT delete lines added by the break-blocks options.\\n\";\n\tcout << endl;\n\tcout << \"    --fill-empty-lines  OR  -E\\n\";\n\tcout << \"    Fill empty lines with the white space of their\\n\";\n\tcout << \"    previous lines.\\n\";\n\tcout << endl;\n\tcout << \"    --align-pointer=type    OR  -k1\\n\";\n\tcout << \"    --align-pointer=middle  OR  -k2\\n\";\n\tcout << \"    --align-pointer=name    OR  -k3\\n\";\n\tcout << \"    Attach a pointer or reference operator (*, &, or ^) to either\\n\";\n\tcout << \"    the operator type (left), middle, or operator name (right).\\n\";\n\tcout << \"    To align the reference separately use --align-reference.\\n\";\n\tcout << endl;\n\tcout << \"    --align-reference=none    OR  -W0\\n\";\n\tcout << \"    --align-reference=type    OR  -W1\\n\";\n\tcout << \"    --align-reference=middle  OR  -W2\\n\";\n\tcout << \"    --align-reference=name    OR  -W3\\n\";\n\tcout << \"    Attach a reference operator (&) to either\\n\";\n\tcout << \"    the operator type (left), middle, or operator name (right).\\n\";\n\tcout << \"    If not set, follow pointer alignment.\\n\";\n\tcout << endl;\n\tcout << \"Formatting Options:\\n\";\n\tcout << \"-------------------\\n\";\n\tcout << \"    --break-closing-brackets  OR  -y\\n\";\n\tcout << \"    Break brackets before closing headers (e.g. 'else', 'catch', ...).\\n\";\n\tcout << \"    Use with --style=java, --style=kr, --style=stroustrup,\\n\";\n\tcout << \"    --style=linux, or --style=1tbs.\\n\";\n\tcout << endl;\n\tcout << \"    --break-elseifs  OR  -e\\n\";\n\tcout << \"    Break 'else if()' statements into two different lines.\\n\";\n\tcout << endl;\n\tcout << \"    --add-brackets  OR  -j\\n\";\n\tcout << \"    Add brackets to unbracketed one line conditional statements.\\n\";\n\tcout << endl;\n\tcout << \"    --add-one-line-brackets  OR  -J\\n\";\n\tcout << \"    Add one line brackets to unbracketed one line conditional\\n\";\n\tcout << \"    statements.\\n\";\n\tcout << endl;\n\tcout << \"    --remove-brackets  OR  -xj\\n\";\n\tcout << \"    Remove brackets from a bracketed one line conditional statements.\\n\";\n\tcout << endl;\n\tcout << \"    --keep-one-line-blocks  OR  -O\\n\";\n\tcout << \"    Don't break blocks residing completely on one line.\\n\";\n\tcout << endl;\n\tcout << \"    --keep-one-line-statements  OR  -o\\n\";\n\tcout << \"    Don't break lines containing multiple statements into\\n\";\n\tcout << \"    multiple single-statement lines.\\n\";\n\tcout << endl;\n\tcout << \"    --convert-tabs  OR  -c\\n\";\n\tcout << \"    Convert tabs to the appropriate number of spaces.\\n\";\n\tcout << endl;\n\tcout << \"    --close-templates  OR  -xy\\n\";\n\tcout << \"    Close ending angle brackets on template definitions.\\n\";\n\tcout << endl;\n\tcout << \"    --remove-comment-prefix  OR  -xp\\n\";\n\tcout << \"    Remove the leading '*' prefix on multi-line comments and\\n\";\n\tcout << \"    indent the comment text one indent.\\n\";\n\tcout << endl;\n\tcout << \"    --max-code-length=#    OR  -xC#\\n\";\n\tcout << \"    --break-after-logical  OR  -xL\\n\";\n\tcout << \"    max-code-length=# will break the line if it exceeds more than\\n\";\n\tcout << \"    # characters. The valid values are 50 thru 200.\\n\";\n\tcout << \"    If the line contains logical conditionals they will be placed\\n\";\n\tcout << \"    first on the new line. The option break-after-logical will\\n\";\n\tcout << \"    cause the logical conditional to be placed last on the\\n\";\n\tcout << \"    previous line.\\n\";\n\tcout << endl;\n\tcout << \"    --mode=c\\n\";\n\tcout << \"    Indent a C or C++ source file (this is the default).\\n\";\n\tcout << endl;\n\tcout << \"    --mode=java\\n\";\n\tcout << \"    Indent a Java source file.\\n\";\n\tcout << endl;\n\tcout << \"    --mode=cs\\n\";\n\tcout << \"    Indent a C# source file.\\n\";\n\tcout << endl;\n\tcout << \"Objective-C Options:\\n\";\n\tcout << \"--------------------\\n\";\n\tcout << \"    --align-method-colon  OR  -xM\\n\";\n\tcout << \"    Align the colons in an Objective-C method definition.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-method-prefix  OR  -xQ\\n\";\n\tcout << \"    Insert space padding after the '-' or '+' Objective-C\\n\";\n\tcout << \"    method prefix.\\n\";\n\tcout << endl;\n\tcout << \"    --unpad-method-prefix  OR  -xR\\n\";\n\tcout << \"    Remove all space padding after the '-' or '+' Objective-C\\n\";\n\tcout << \"    method prefix.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-method-colon=none    OR  -xP\\n\";\n\tcout << \"    --pad-method-colon=all     OR  -xP1\\n\";\n\tcout << \"    --pad-method-colon=after   OR  -xP2\\n\";\n\tcout << \"    --pad-method-colon=before  OR  -xP3\\n\";\n\tcout << \"    Add or remove space padding before or after the colons in an\\n\";\n\tcout << \"    Objective-C method call.\\n\";\n\tcout << endl;\n\tcout << \"Other Options:\\n\";\n\tcout << \"--------------\\n\";\n\tcout << \"    --suffix=####\\n\";\n\tcout << \"    Append the suffix #### instead of '.orig' to original filename.\\n\";\n\tcout << endl;\n\tcout << \"    --suffix=none  OR  -n\\n\";\n\tcout << \"    Do not retain a backup of the original file.\\n\";\n\tcout << endl;\n\tcout << \"    --recursive  OR  -r  OR  -R\\n\";\n\tcout << \"    Process subdirectories recursively.\\n\";\n\tcout << endl;\n\tcout << \"    --dry-run\\n\";\n\tcout << \"    Perform a trial run with no changes made to check for formatting.\\n\";\n\tcout << endl;\n\tcout << \"    --exclude=####\\n\";\n\tcout << \"    Specify a file or directory #### to be excluded from processing.\\n\";\n\tcout << endl;\n\tcout << \"    --ignore-exclude-errors  OR  -i\\n\";\n\tcout << \"    Allow processing to continue if there are errors in the exclude=####\\n\";\n\tcout << \"    options. It will display the unmatched excludes.\\n\";\n\tcout << endl;\n\tcout << \"    --ignore-exclude-errors-x  OR  -xi\\n\";\n\tcout << \"    Allow processing to continue if there are errors in the exclude=####\\n\";\n\tcout << \"    options. It will NOT display the unmatched excludes.\\n\";\n\tcout << endl;\n\tcout << \"    --errors-to-stdout  OR  -X\\n\";\n\tcout << \"    Print errors and help information to standard-output rather than\\n\";\n\tcout << \"    to standard-error.\\n\";\n\tcout << endl;\n\tcout << \"    --preserve-date  OR  -Z\\n\";\n\tcout << \"    Preserve the original file's date and time modified. The time\\n\";\n\tcout << \"     modified will be changed a few micro seconds to force a compile.\\n\";\n\tcout << endl;\n\tcout << \"    --verbose  OR  -v\\n\";\n\tcout << \"    Verbose mode. Extra informational messages will be displayed.\\n\";\n\tcout << endl;\n\tcout << \"    --formatted  OR  -Q\\n\";\n\tcout << \"    Formatted display mode. Display only the files that have been\\n\";\n\tcout << \"    formatted.\\n\";\n\tcout << endl;\n\tcout << \"    --quiet  OR  -q\\n\";\n\tcout << \"    Quiet mode. Suppress all output except error messages.\\n\";\n\tcout << endl;\n\tcout << \"    --lineend=windows  OR  -z1\\n\";\n\tcout << \"    --lineend=linux    OR  -z2\\n\";\n\tcout << \"    --lineend=macold   OR  -z3\\n\";\n\tcout << \"    Force use of the specified line end style. Valid options\\n\";\n\tcout << \"    are windows (CRLF), linux (LF), and macold (CR).\\n\";\n\tcout << endl;\n\tcout << \"Command Line Only:\\n\";\n\tcout << \"------------------\\n\";\n\tcout << \"    --options=####\\n\";\n\tcout << \"    Specify an options file #### to read and use.\\n\";\n\tcout << endl;\n\tcout << \"    --options=none\\n\";\n\tcout << \"    Disable the default options file.\\n\";\n\tcout << \"    Only the command-line parameters will be used.\\n\";\n\tcout << endl;\n\tcout << \"    --ascii  OR  -I\\n\";\n\tcout << \"    The displayed output will be ascii characters only.\\n\";\n\tcout << endl;\n\tcout << \"    --version  OR  -V\\n\";\n\tcout << \"    Print version number.\\n\";\n\tcout << endl;\n\tcout << \"    --help  OR  -h  OR  -?\\n\";\n\tcout << \"    Print this help message.\\n\";\n\tcout << endl;\n\tcout << \"    --html  OR  -!\\n\";\n\tcout << \"    Open the HTML help file \\\"astyle.html\\\" in the default browser.\\n\";\n\tcout << \"    The documentation must be installed in the standard install path.\\n\";\n\tcout << endl;\n\tcout << \"    --html=####\\n\";\n\tcout << \"    Open a HTML help file in the default browser using the file path\\n\";\n\tcout << \"    ####. The path may include a directory path and a file name, or a\\n\";\n\tcout << \"    file name only. Paths containing spaces must be enclosed in quotes.\\n\";\n\tcout << endl;\n\tcout << endl;\n}\n\n/**\n * Process files in the fileNameVector.\n */\nvoid ASConsole::processFiles()\n{\n\tif (isVerbose)\n\t\tprintVerboseHeader();\n\n\tclock_t startTime = clock();     // start time of file formatting\n\n\t// loop thru input fileNameVector and process the files\n\tfor (size_t i = 0; i < fileNameVector.size(); i++)\n\t{\n\t\tgetFilePaths(fileNameVector[i]);\n\n\t\t// loop thru fileName vector formatting the files\n\t\tfor (size_t j = 0; j < fileName.size(); j++)\n\t\t\tformatFile(fileName[j]);\n\t}\n\n\t// files are processed, display stats\n\tif (isVerbose)\n\t\tprintVerboseStats(startTime);\n}\n\n// process options from the command line and options file\n// build the vectors fileNameVector, excludeVector, optionsVector, and fileOptionsVector\nvoid ASConsole::processOptions(vector<string> &argvOptions)\n{\n\tstring arg;\n\tbool ok = true;\n\tbool shouldParseOptionsFile = true;\n\n\t// get command line options\n\tfor (size_t i = 0; i < argvOptions.size(); i++)\n\t{\n\t\targ = argvOptions[i];\n\n\t\tif ( isOption(arg, \"-I\" )\n\t\t        || isOption(arg, \"--ascii\") )\n\t\t{\n\t\t\tuseAscii = true;\n\t\t\tsetlocale(LC_ALL, \"C\");\t\t// use English decimal indicator\n\t\t\tlocalizer.setLanguageFromName(\"en\");\n\t\t}\n\t\telse if ( isOption(arg, \"--options=none\") )\n\t\t{\n\t\t\tshouldParseOptionsFile = false;\n\t\t}\n\t\telse if ( isParamOption(arg, \"--options=\") )\n\t\t{\n\t\t\toptionsFileName = getParam(arg, \"--options=\");\n\t\t\toptionsFileRequired = true;\n\t\t\tif (optionsFileName.compare(\"\") == 0)\n\t\t\t\tsetOptionsFileName(\" \");\n\t\t}\n\t\telse if ( isOption(arg, \"-h\")\n\t\t          || isOption(arg, \"--help\")\n\t\t          || isOption(arg, \"-?\") )\n\t\t{\n\t\t\tprintHelp();\n\t\t\texit(EXIT_SUCCESS);\n\t\t}\n\t\telse if ( isOption(arg, \"-!\")\n\t\t          || isOption(arg, \"--html\") )\n\t\t{\n\t\t\tlaunchDefaultBrowser();\n\t\t\texit(EXIT_SUCCESS);\n\t\t}\n\t\telse if ( isParamOption(arg, \"--html=\") )\n\t\t{\n\t\t\tstring htmlFilePath = getParam(arg, \"--html=\");\n\t\t\tlaunchDefaultBrowser(htmlFilePath.c_str());\n\t\t\texit(EXIT_SUCCESS);\n\t\t}\n\t\telse if ( isOption(arg, \"-V\" )\n\t\t          || isOption(arg, \"--version\") )\n\t\t{\n\t\t\tprintf(\"Artistic Style Version %s\\n\", g_version);\n\t\t\texit(EXIT_SUCCESS);\n\t\t}\n\t\telse if (arg[0] == '-')\n\t\t{\n\t\t\toptionsVector.push_back(arg);\n\t\t}\n\t\telse // file-name\n\t\t{\n\t\t\tstandardizePath(arg);\n\t\t\tfileNameVector.push_back(arg);\n\t\t}\n\t}\n\n\t// get options file path and name\n\tif (shouldParseOptionsFile)\n\t{\n\t\tif (optionsFileName.compare(\"\") == 0)\n\t\t{\n\t\t\tchar* env = getenv(\"ARTISTIC_STYLE_OPTIONS\");\n\t\t\tif (env != NULL)\n\t\t\t\tsetOptionsFileName(env);\n\t\t}\n\t\tif (optionsFileName.compare(\"\") == 0)\n\t\t{\n\t\t\tchar* env = getenv(\"HOME\");\n\t\t\tif (env != NULL)\n\t\t\t\tsetOptionsFileName(string(env) + \"/.astylerc\");\n\t\t}\n\t\tif (optionsFileName.compare(\"\") == 0)\n\t\t{\n\t\t\tchar* env = getenv(\"USERPROFILE\");\n\t\t\tif (env != NULL)\n\t\t\t\tsetOptionsFileName(string(env) + \"/astylerc\");\n\t\t}\n\t\tif (optionsFileName.compare(\"\") != 0)\n\t\t\tstandardizePath(optionsFileName);\n\t}\n\n\t// create the options file vector and parse the options for errors\n\tASOptions options(formatter);\n\tif (optionsFileName.compare(\"\") != 0)\n\t{\n\t\tifstream optionsIn(optionsFileName.c_str());\n\t\tif (optionsIn)\n\t\t{\n\t\t\toptions.importOptions(optionsIn, fileOptionsVector);\n\t\t\tok = options.parseOptions(fileOptionsVector,\n\t\t\t                          string(_(\"Invalid option file options:\")));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (optionsFileRequired)\n\t\t\t\terror(_(\"Cannot open options file\"), optionsFileName.c_str());\n\t\t\toptionsFileName.clear();\n\t\t}\n\t\toptionsIn.close();\n\t}\n\tif (!ok)\n\t{\n\t\t(*_err) << options.getOptionErrors() << endl;\n\t\t(*_err) << _(\"For help on options type 'astyle -h'\") << endl;\n\t\terror();\n\t}\n\n\t// parse the command line options vector for errors\n\tok = options.parseOptions(optionsVector,\n\t                          string(_(\"Invalid command line options:\")));\n\tif (!ok)\n\t{\n\t\t(*_err) << options.getOptionErrors() << endl;\n\t\t(*_err) << _(\"For help on options type 'astyle -h'\") << endl;\n\t\terror();\n\t}\n}\n\n// remove a file and check for an error\nvoid ASConsole::removeFile(const char* fileName_, const char* errMsg) const\n{\n\tif (remove(fileName_))\n\t{\n\t\tif (errno == ENOENT)        // no file is OK\n\t\t\terrno = 0;\n\t\tif (errno)\n\t\t{\n\t\t\tperror(\"errno message\");\n\t\t\terror(errMsg, fileName_);\n\t\t}\n\t}\n}\n\n// rename a file and check for an error\nvoid ASConsole::renameFile(const char* oldFileName, const char* newFileName, const char* errMsg) const\n{\n\tint result = rename(oldFileName, newFileName);\n\tif (result != 0)\n\t{\n\t\t// if file still exists the remove needs more time - retry\n\t\tif (errno == EEXIST)\n\t\t{\n\t\t\terrno = 0;\n\t\t\twaitForRemove(newFileName);\n\t\t\tresult = rename(oldFileName, newFileName);\n\t\t}\n\t\tif (result != 0)\n\t\t{\n\t\t\tperror(\"errno message\");\n\t\t\terror(errMsg, oldFileName);\n\t\t}\n\t}\n}\n\n// make sure file separators are correct type (Windows or Linux)\n// remove ending file separator\n// remove beginning file separator if requested and NOT a complete file path\nvoid ASConsole::standardizePath(string &path, bool removeBeginningSeparator /*false*/) const\n{\n#ifdef __VMS\n\tstruct FAB fab;\n\tstruct NAML naml;\n\tchar less[NAML$C_MAXRSS];\n\tchar sess[NAM$C_MAXRSS];\n\tint r0_status;\n\n\t// If we are on a VMS system, translate VMS style filenames to unix\n\t// style.\n\tfab = cc$rms_fab;\n\tfab.fab$l_fna = (char*) - 1;\n\tfab.fab$b_fns = 0;\n\tfab.fab$l_naml = &naml;\n\tnaml = cc$rms_naml;\n\tstrcpy(sess, path.c_str());\n\tnaml.naml$l_long_filename = (char*)sess;\n\tnaml.naml$l_long_filename_size = path.length();\n\tnaml.naml$l_long_expand = less;\n\tnaml.naml$l_long_expand_alloc = sizeof(less);\n\tnaml.naml$l_esa = sess;\n\tnaml.naml$b_ess = sizeof(sess);\n\tnaml.naml$v_no_short_upcase = 1;\n\tr0_status = sys$parse(&fab);\n\tif (r0_status == RMS$_SYN)\n\t{\n\t\terror(\"File syntax error\", path.c_str());\n\t}\n\telse\n\t{\n\t\tif (!$VMS_STATUS_SUCCESS(r0_status))\n\t\t{\n\t\t\t(void)lib$signal (r0_status);\n\t\t}\n\t}\n\tless[naml.naml$l_long_expand_size - naml.naml$b_ver] = '\\0';\n\tsess[naml.naml$b_esl - naml.naml$b_ver] = '\\0';\n\tif (naml.naml$l_long_expand_size > naml.naml$b_esl)\n\t{\n\t\tpath = decc$translate_vms (less);\n\t}\n\telse\n\t{\n\t\tpath = decc$translate_vms(sess);\n\t}\n#endif /* __VMS */\n\n\t// make sure separators are correct type (Windows or Linux)\n\tfor (size_t i = 0; i < path.length(); i++)\n\t{\n\t\ti = path.find_first_of(\"/\\\\\", i);\n\t\tif (i == string::npos)\n\t\t\tbreak;\n\t\tpath[i] = g_fileSeparator;\n\t}\n\t// remove beginning separator if requested\n\tif (removeBeginningSeparator && (path[0] == g_fileSeparator))\n\t\tpath.erase(0, 1);\n}\n\nvoid ASConsole::printMsg(const char* msg, const string &data) const\n{\n\tif (isQuiet)\n\t\treturn;\n\tprintf(msg, data.c_str());\n}\n\nvoid ASConsole::printSeparatingLine() const\n{\n\tstring line;\n\tfor (size_t i = 0; i < 60; i++)\n\t\tline.append(\"-\");\n\tprintMsg(\"%s\\n\", line);\n}\n\nvoid ASConsole::printVerboseHeader() const\n{\n\tassert(isVerbose);\n\tif (isQuiet)\n\t\treturn;\n\t// get the date\n\tstruct tm* ptr;\n\ttime_t lt;\n\tchar str[20];\n\tlt = time(NULL);\n\tptr = localtime(&lt);\n\tstrftime(str, 20, \"%x\", ptr);\n\t// print the header\n\tprintf(\"Artistic Style %s     %s\\n\", g_version, str);\n\t// print options file\n\tif (!optionsFileName.empty())\n\t\tprintf(_(\"Using default options file %s\\n\"), optionsFileName.c_str());\n}\n\nvoid ASConsole::printVerboseStats(clock_t startTime) const\n{\n\tassert(isVerbose);\n\tif (isQuiet)\n\t\treturn;\n\tif (hasWildcard)\n\t\tprintSeparatingLine();\n\tstring formatted = getNumberFormat(filesFormatted);\n\tstring unchanged = getNumberFormat(filesUnchanged);\n\tprintf(_(\" %s formatted   %s unchanged   \"), formatted.c_str(), unchanged.c_str());\n\n\t// show processing time\n\tclock_t stopTime = clock();\n\tfloat secs = (stopTime - startTime) / float (CLOCKS_PER_SEC);\n\tif (secs < 60)\n\t{\n\t\tif (secs < 2.0)\n\t\t\tprintf(\"%.2f\", secs);\n\t\telse if (secs < 20.0)\n\t\t\tprintf(\"%.1f\", secs);\n\t\telse\n\t\t\tprintf(\"%.0f\", secs);\n\t\tprintf(\"%s\", _(\" seconds   \"));\n\t}\n\telse\n\t{\n\t\t// show minutes and seconds if time is greater than one minute\n\t\tint min = (int) secs / 60;\n\t\tsecs -= min * 60;\n\t\tint minsec = int (secs + .5);\n\t\tprintf(_(\"%d min %d sec   \"), min, minsec);\n\t}\n\n\tstring lines = getNumberFormat(linesOut);\n\tprintf(_(\"%s lines\\n\"), lines.c_str());\n}\n\nvoid ASConsole::sleep(int seconds) const\n{\n\tclock_t endwait;\n\tendwait = clock_t (clock () + seconds * CLOCKS_PER_SEC);\n\twhile (clock() < endwait) {}\n}\n\nbool ASConsole::stringEndsWith(const string &str, const string &suffix) const\n{\n\tint strIndex = (int) str.length() - 1;\n\tint suffixIndex = (int) suffix.length() - 1;\n\n\twhile (strIndex >= 0 && suffixIndex >= 0)\n\t{\n\t\tif (tolower(str[strIndex]) != tolower(suffix[suffixIndex]))\n\t\t\treturn false;\n\n\t\t--strIndex;\n\t\t--suffixIndex;\n\t}\n\t// suffix longer than string\n\tif (strIndex < 0 && suffixIndex >= 0)\n\t\treturn false;\n\treturn true;\n}\n\nvoid ASConsole::updateExcludeVector(string suffixParam)\n{\n\texcludeVector.push_back(suffixParam);\n\tstandardizePath(excludeVector.back(), true);\n\texcludeHitsVector.push_back(false);\n}\n\nint ASConsole::waitForRemove(const char* newFileName) const\n{\n\tstruct stat stBuf;\n\tint seconds;\n\t// sleep a max of 20 seconds for the remove\n\tfor (seconds = 1; seconds <= 20; seconds++)\n\t{\n\t\tsleep(1);\n\t\tif (stat(newFileName, &stBuf) != 0)\n\t\t\tbreak;\n\t}\n\terrno = 0;\n\treturn seconds;\n}\n\n// From The Code Project http://www.codeproject.com/string/wildcmp.asp\n// Written by Jack Handy - jakkhandy@hotmail.com\n// Modified to compare case insensitive for Windows\nint ASConsole::wildcmp(const char* wild, const char* data) const\n{\n\tconst char* cp = NULL, *mp = NULL;\n\tbool cmpval;\n\n\twhile ((*data) && (*wild != '*'))\n\t{\n\t\tif (!g_isCaseSensitive)\n\t\t\tcmpval = (tolower(*wild) != tolower(*data)) && (*wild != '?');\n\t\telse\n\t\t\tcmpval = (*wild != *data) && (*wild != '?');\n\n\t\tif (cmpval)\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\t\twild++;\n\t\tdata++;\n\t}\n\n\twhile (*data)\n\t{\n\t\tif (*wild == '*')\n\t\t{\n\t\t\tif (!*++wild)\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tmp = wild;\n\t\t\tcp = data + 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!g_isCaseSensitive)\n\t\t\t\tcmpval = (tolower(*wild) == tolower(*data) || (*wild == '?'));\n\t\t\telse\n\t\t\t\tcmpval = (*wild == *data) || (*wild == '?');\n\n\t\t\tif (cmpval)\n\t\t\t{\n\t\t\t\twild++;\n\t\t\t\tdata++;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twild = mp;\n\t\t\t\tdata = cp++;\n\t\t\t}\n\t\t}\n\t}\n\n\twhile (*wild == '*')\n\t{\n\t\twild++;\n\t}\n\treturn !*wild;\n}\n\nvoid ASConsole::writeFile(const string &fileName_, FileEncoding encoding, ostringstream &out) const\n{\n\t// save date accessed and date modified of original file\n\tstruct stat stBuf;\n\tbool statErr = false;\n\tif (stat(fileName_.c_str(), &stBuf) == -1)\n\t\tstatErr = true;\n\n\t// create a backup\n\tif (!noBackup)\n\t{\n\t\tstring origFileName = fileName_ + origSuffix;\n\t\tremoveFile(origFileName.c_str(), \"Cannot remove pre-existing backup file\");\n\t\trenameFile(fileName_.c_str(), origFileName.c_str(), \"Cannot create backup file\");\n\t}\n\n\t// write the output file\n\tofstream fout(fileName_.c_str(), ios::binary | ios::trunc);\n\tif (!fout)\n\t\terror(\"Cannot open output file\", fileName_.c_str());\n\tif (encoding == UTF_16LE || encoding == UTF_16BE)\n\t{\n\t\t// convert utf-8 to utf-16\n\t\tbool isBigEndian = (encoding == UTF_16BE);\n\t\tsize_t utf16Size = utf8_16.Utf16LengthFromUtf8(out.str().c_str(), out.str().length());\n\t\tchar* utf16Out = new char[utf16Size];\n\t\tsize_t utf16Len = utf8_16.Utf8ToUtf16(const_cast<char*>(out.str().c_str()),\n\t\t                                      out.str().length(), isBigEndian, utf16Out);\n\t\tassert(utf16Len == utf16Size);\n\t\tfout << string(utf16Out, utf16Len);\n\t\tdelete [] utf16Out;\n\t}\n\telse\n\t\tfout << out.str();\n\n\tfout.close();\n\n\t// change date modified to original file date\n\t// Embarcadero must be linked with cw32mt not cw32\n\tif (preserveDate)\n\t{\n\t\tif (!statErr)\n\t\t{\n\t\t\tstruct utimbuf outBuf;\n\t\t\toutBuf.actime = stBuf.st_atime;\n\t\t\t// add ticks so 'make' will recognize a change\n\t\t\t// Visual Studio 2008 needs more than 1\n\t\t\toutBuf.modtime = stBuf.st_mtime + 10;\n\t\t\tif (utime(fileName_.c_str(), &outBuf) == -1)\n\t\t\t\tstatErr = true;\n\t\t}\n\t\tif (statErr)\n\t\t{\n\t\t\tperror(\"errno message\");\n\t\t\t(*_err) << \"*********  Cannot preserve file date\" << endl;\n\t\t}\n\t}\n}\n\n//-----------------------------------------------------------------------------\n// ASLibrary class\n// used by shared object (DLL) calls\n//-----------------------------------------------------------------------------\n\n#else\t// ASTYLE_LIB\n\nutf16_t* ASLibrary::formatUtf16(const utf16_t* pSourceIn,\t\t// the source to be formatted\n                                const utf16_t* pOptions,\t\t// AStyle options\n                                fpError fpErrorHandler,\t\t\t// error handler function\n                                fpAlloc fpMemoryAlloc) const\t// memory allocation function)\n{\n\tconst char* utf8In = convertUtf16ToUtf8(pSourceIn);\n\tif (utf8In == NULL)\n\t{\n\t\tfpErrorHandler(121, \"Cannot convert input utf-16 to utf-8.\");\n\t\treturn NULL;\n\t}\n\tconst char* utf8Options = convertUtf16ToUtf8(pOptions);\n\tif (utf8Options == NULL)\n\t{\n\t\tdelete [] utf8In;\n\t\tfpErrorHandler(122, \"Cannot convert options utf-16 to utf-8.\");\n\t\treturn NULL;\n\t}\n\t// call the Artistic Style formatting function\n\t// cannot use the callers memory allocation here\n\tchar* utf8Out = AStyleMain(utf8In,\n\t                           utf8Options,\n\t                           fpErrorHandler,\n\t                           ASLibrary::tempMemoryAllocation);\n\t// finished with these\n\tdelete [] utf8In;\n\tdelete [] utf8Options;\n\tutf8In = NULL;\n\tutf8Options = NULL;\n\t// AStyle error has already been sent\n\tif (utf8Out == NULL)\n\t\treturn NULL;\n\t// convert text to wide char and return it\n\tutf16_t* utf16Out = convertUtf8ToUtf16(utf8Out, fpMemoryAlloc);\n\tdelete [] utf8Out;\n\tutf8Out = NULL;\n\tif (utf16Out == NULL)\n\t{\n\t\tfpErrorHandler(123, \"Cannot convert output utf-8 to utf-16.\");\n\t\treturn NULL;\n\t}\n\treturn utf16Out;\n}\n\n// STATIC method to allocate temporary memory for AStyle formatting.\n// The data will be converted before being returned to the calling program.\nchar* STDCALL ASLibrary::tempMemoryAllocation(unsigned long memoryNeeded)\n{\n\tchar* buffer = new(nothrow) char[memoryNeeded];\n\treturn buffer;\n}\n\n/**\n * Convert utf-8 strings to utf16 strings.\n * Memory is allocated by the calling program memory allocation function.\n * The calling function must check for errors.\n */\nutf16_t* ASLibrary::convertUtf8ToUtf16(const char* utf8In, fpAlloc fpMemoryAlloc) const\n{\n\tif (utf8In == NULL)\n\t\treturn NULL;\n\tchar* data = const_cast<char*>(utf8In);\n\tsize_t dataSize = strlen(utf8In);\n\tbool isBigEndian = utf8_16.getBigEndian();\n\t// return size is in number of CHARs, not utf16_t\n\tsize_t utf16Size = (utf8_16.Utf16LengthFromUtf8(data, dataSize) + sizeof(utf16_t));\n\tchar* utf16Out = fpMemoryAlloc(utf16Size);\n\tif (utf16Out == NULL)\n\t\treturn NULL;\n#ifdef NDEBUG\n\tutf8_16.Utf8ToUtf16(data, dataSize + 1, isBigEndian, utf16Out);\n#else\n\tsize_t utf16Len = utf8_16.Utf8ToUtf16(data, dataSize + 1, isBigEndian, utf16Out);\n\tassert(utf16Len == utf16Size);\n#endif\n\tassert(utf16Size == (utf8_16.utf16len(reinterpret_cast<utf16_t*>(utf16Out)) + 1) * sizeof(utf16_t));\n\treturn reinterpret_cast<utf16_t*>(utf16Out);\n}\n\n/**\n * Convert utf16 strings to utf-8.\n * The calling function must check for errors and delete the\n * allocated memory.\n */\nchar* ASLibrary::convertUtf16ToUtf8(const utf16_t* utf16In) const\n{\n\tif (utf16In == NULL)\n\t\treturn NULL;\n\tchar* data = reinterpret_cast<char*>(const_cast<utf16_t*>(utf16In));\n\t// size must be in chars\n\tsize_t dataSize = utf8_16.utf16len(utf16In) * sizeof(utf16_t);\n\tbool isBigEndian = utf8_16.getBigEndian();\n\tsize_t utf8Size = utf8_16.Utf8LengthFromUtf16(data, dataSize, isBigEndian) + 1;\n\tchar* utf8Out = new(nothrow) char[utf8Size];\n\tif (utf8Out == NULL)\n\t\treturn NULL;\n#ifdef NDEBUG\n\tutf8_16.Utf16ToUtf8(data, dataSize + 1, isBigEndian, true, utf8Out);\n#else\n\tsize_t utf8Len = utf8_16.Utf16ToUtf8(data, dataSize + 1, isBigEndian, true, utf8Out);\n\tassert(utf8Len == utf8Size);\n#endif\n\tassert(utf8Size == strlen(utf8Out) + 1);\n\treturn utf8Out;\n}\n\n#endif\t// ASTYLE_LIB\n\n//-----------------------------------------------------------------------------\n// ASOptions class\n// used by both console and library builds\n//-----------------------------------------------------------------------------\n\n/**\n * parse the options vector\n * optionsVector can be either a fileOptionsVector (options file) or an optionsVector (command line)\n *\n * @return        true if no errors, false if errors\n */\nbool ASOptions::parseOptions(vector<string> &optionsVector, const string &errorInfo)\n{\n\tvector<string>::iterator option;\n\tstring arg, subArg;\n\toptionErrors.clear();\n\n\tfor (option = optionsVector.begin(); option != optionsVector.end(); ++option)\n\t{\n\t\targ = *option;\n\n\t\tif (arg.compare(0, 2, \"--\") == 0)\n\t\t\tparseOption(arg.substr(2), errorInfo);\n\t\telse if (arg[0] == '-')\n\t\t{\n\t\t\tsize_t i;\n\n\t\t\tfor (i = 1; i < arg.length(); ++i)\n\t\t\t{\n\t\t\t\tif (i > 1\n\t\t\t\t        && isalpha((unsigned char)arg[i])\n\t\t\t\t        && arg[i - 1] != 'x')\n\t\t\t\t{\n\t\t\t\t\t// parse the previous option in subArg\n\t\t\t\t\tparseOption(subArg, errorInfo);\n\t\t\t\t\tsubArg = \"\";\n\t\t\t\t}\n\t\t\t\t// append the current option to subArg\n\t\t\t\tsubArg.append(1, arg[i]);\n\t\t\t}\n\t\t\t// parse the last option\n\t\t\tparseOption(subArg, errorInfo);\n\t\t\tsubArg = \"\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\tparseOption(arg, errorInfo);\n\t\t\tsubArg = \"\";\n\t\t}\n\t}\n\tif (optionErrors.str().length() > 0)\n\t\treturn false;\n\treturn true;\n}\n\nvoid ASOptions::parseOption(const string &arg, const string &errorInfo)\n{\n\tif ( isOption(arg, \"style=allman\") || isOption(arg, \"style=bsd\") || isOption(arg, \"style=break\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_ALLMAN);\n\t}\n\telse if ( isOption(arg, \"style=java\") || isOption(arg, \"style=attach\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_JAVA);\n\t}\n\telse if ( isOption(arg, \"style=k&r\") || isOption(arg, \"style=kr\") || isOption(arg, \"style=k/r\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_KR);\n\t}\n\telse if ( isOption(arg, \"style=stroustrup\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_STROUSTRUP);\n\t}\n\telse if ( isOption(arg, \"style=whitesmith\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_WHITESMITH);\n\t}\n\telse if (isOption(arg, \"style=vtk\"))\n\t{\n\t\tformatter.setFormattingStyle(STYLE_VTK);\n\t}\n\telse if ( isOption(arg, \"style=banner\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_BANNER);\n\t}\n\telse if ( isOption(arg, \"style=gnu\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_GNU);\n\t}\n\telse if ( isOption(arg, \"style=linux\") || isOption(arg, \"style=knf\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_LINUX);\n\t}\n\telse if ( isOption(arg, \"style=horstmann\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_HORSTMANN);\n\t}\n\telse if ( isOption(arg, \"style=1tbs\") || isOption(arg, \"style=otbs\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_1TBS);\n\t}\n\telse if ( isOption(arg, \"style=google\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_GOOGLE);\n\t}\n\telse if ( isOption(arg, \"style=pico\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_PICO);\n\t}\n\telse if ( isOption(arg, \"style=lisp\") || isOption(arg, \"style=python\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_LISP);\n\t}\n\telse if ( isParamOption(arg, \"A\") )\n\t{\n\t\tint style = 0;\n\t\tstring styleParam = getParam(arg, \"A\");\n\t\tif (styleParam.length() > 0)\n\t\t\tstyle = atoi(styleParam.c_str());\n\t\tif (style == 1)\n\t\t\tformatter.setFormattingStyle(STYLE_ALLMAN);\n\t\telse if (style == 2)\n\t\t\tformatter.setFormattingStyle(STYLE_JAVA);\n\t\telse if (style == 3)\n\t\t\tformatter.setFormattingStyle(STYLE_KR);\n\t\telse if (style == 4)\n\t\t\tformatter.setFormattingStyle(STYLE_STROUSTRUP);\n\t\telse if (style == 5)\n\t\t\tformatter.setFormattingStyle(STYLE_WHITESMITH);\n\t\telse if (style == 6)\n\t\t\tformatter.setFormattingStyle(STYLE_BANNER);\n\t\telse if (style == 7)\n\t\t\tformatter.setFormattingStyle(STYLE_GNU);\n\t\telse if (style == 8)\n\t\t\tformatter.setFormattingStyle(STYLE_LINUX);\n\t\telse if (style == 9)\n\t\t\tformatter.setFormattingStyle(STYLE_HORSTMANN);\n\t\telse if (style == 10)\n\t\t\tformatter.setFormattingStyle(STYLE_1TBS);\n\t\telse if (style == 11)\n\t\t\tformatter.setFormattingStyle(STYLE_PICO);\n\t\telse if (style == 12)\n\t\t\tformatter.setFormattingStyle(STYLE_LISP);\n\t\telse if (style == 14)\n\t\t\tformatter.setFormattingStyle(STYLE_GOOGLE);\n\t\telse if (style == 15)\n\t\t\tformatter.setFormattingStyle(STYLE_VTK);\n\t\telse\n\t\t\tisOptionError(arg, errorInfo);\n\t}\n\t// must check for mode=cs before mode=c !!!\n\telse if ( isOption(arg, \"mode=cs\") )\n\t{\n\t\tformatter.setSharpStyle();\n\t\tformatter.setModeManuallySet(true);\n\t}\n\telse if ( isOption(arg, \"mode=c\") )\n\t{\n\t\tformatter.setCStyle();\n\t\tformatter.setModeManuallySet(true);\n\t}\n\telse if ( isOption(arg, \"mode=java\") )\n\t{\n\t\tformatter.setJavaStyle();\n\t\tformatter.setModeManuallySet(true);\n\t}\n\telse if ( isParamOption(arg, \"t\", \"indent=tab=\") )\n\t{\n\t\tint spaceNum = 4;\n\t\tstring spaceNumParam = getParam(arg, \"t\", \"indent=tab=\");\n\t\tif (spaceNumParam.length() > 0)\n\t\t\tspaceNum = atoi(spaceNumParam.c_str());\n\t\tif (spaceNum < 2 || spaceNum > 20)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t{\n\t\t\tformatter.setTabIndentation(spaceNum, false);\n\t\t}\n\t}\n\telse if ( isOption(arg, \"indent=tab\") )\n\t{\n\t\tformatter.setTabIndentation(4);\n\t}\n\telse if ( isParamOption(arg, \"T\", \"indent=force-tab=\") )\n\t{\n\t\tint spaceNum = 4;\n\t\tstring spaceNumParam = getParam(arg, \"T\", \"indent=force-tab=\");\n\t\tif (spaceNumParam.length() > 0)\n\t\t\tspaceNum = atoi(spaceNumParam.c_str());\n\t\tif (spaceNum < 2 || spaceNum > 20)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t{\n\t\t\tformatter.setTabIndentation(spaceNum, true);\n\t\t}\n\t}\n\telse if ( isOption(arg, \"indent=force-tab\") )\n\t{\n\t\tformatter.setTabIndentation(4, true);\n\t}\n\telse if ( isParamOption(arg, \"xT\", \"indent=force-tab-x=\") )\n\t{\n\t\tint tabNum = 8;\n\t\tstring tabNumParam = getParam(arg, \"xT\", \"indent=force-tab-x=\");\n\t\tif (tabNumParam.length() > 0)\n\t\t\ttabNum = atoi(tabNumParam.c_str());\n\t\tif (tabNum < 2 || tabNum > 20)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t{\n\t\t\tformatter.setForceTabXIndentation(tabNum);\n\t\t}\n\t}\n\telse if ( isOption(arg, \"indent=force-tab-x\") )\n\t{\n\t\tformatter.setForceTabXIndentation(8);\n\t}\n\telse if ( isParamOption(arg, \"s\", \"indent=spaces=\") )\n\t{\n\t\tint spaceNum = 4;\n\t\tstring spaceNumParam = getParam(arg, \"s\", \"indent=spaces=\");\n\t\tif (spaceNumParam.length() > 0)\n\t\t\tspaceNum = atoi(spaceNumParam.c_str());\n\t\tif (spaceNum < 2 || spaceNum > 20)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t{\n\t\t\tformatter.setSpaceIndentation(spaceNum);\n\t\t}\n\t}\n\telse if ( isOption(arg, \"indent=spaces\") )\n\t{\n\t\tformatter.setSpaceIndentation(4);\n\t}\n\telse if ( isParamOption(arg, \"m\", \"min-conditional-indent=\") )\n\t{\n\t\tint minIndent = MINCOND_TWO;\n\t\tstring minIndentParam = getParam(arg, \"m\", \"min-conditional-indent=\");\n\t\tif (minIndentParam.length() > 0)\n\t\t\tminIndent = atoi(minIndentParam.c_str());\n\t\tif (minIndent >= MINCOND_END)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t\tformatter.setMinConditionalIndentOption(minIndent);\n\t}\n\telse if ( isParamOption(arg, \"M\", \"max-instatement-indent=\") )\n\t{\n\t\tint maxIndent = 40;\n\t\tstring maxIndentParam = getParam(arg, \"M\", \"max-instatement-indent=\");\n\t\tif (maxIndentParam.length() > 0)\n\t\t\tmaxIndent = atoi(maxIndentParam.c_str());\n\t\tif (maxIndent < 40)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (maxIndent > 120)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t\tformatter.setMaxInStatementIndentLength(maxIndent);\n\t}\n\telse if ( isOption(arg, \"N\", \"indent-namespaces\") )\n\t{\n\t\tformatter.setNamespaceIndent(true);\n\t}\n\telse if ( isOption(arg, \"C\", \"indent-classes\") )\n\t{\n\t\tformatter.setClassIndent(true);\n\t}\n\telse if ( isOption(arg, \"xG\", \"indent-modifiers\") )\n\t{\n\t\tformatter.setModifierIndent(true);\n\t}\n\telse if ( isOption(arg, \"S\", \"indent-switches\") )\n\t{\n\t\tformatter.setSwitchIndent(true);\n\t}\n\telse if ( isOption(arg, \"K\", \"indent-cases\") )\n\t{\n\t\tformatter.setCaseIndent(true);\n\t}\n\telse if ( isOption(arg, \"L\", \"indent-labels\") )\n\t{\n\t\tformatter.setLabelIndent(true);\n\t}\n\telse if (isOption(arg, \"xW\", \"indent-preproc-block\"))\n\t{\n\t\tformatter.setPreprocBlockIndent(true);\n\t}\n\telse if ( isOption(arg, \"w\", \"indent-preproc-define\") )\n\t{\n\t\tformatter.setPreprocDefineIndent(true);\n\t}\n\telse if ( isOption(arg, \"xw\", \"indent-preproc-cond\") )\n\t{\n\t\tformatter.setPreprocConditionalIndent(true);\n\t}\n\telse if ( isOption(arg, \"y\", \"break-closing-brackets\") )\n\t{\n\t\tformatter.setBreakClosingHeaderBracketsMode(true);\n\t}\n\telse if ( isOption(arg, \"O\", \"keep-one-line-blocks\") )\n\t{\n\t\tformatter.setBreakOneLineBlocksMode(false);\n\t}\n\telse if ( isOption(arg, \"o\", \"keep-one-line-statements\") )\n\t{\n\t\tformatter.setSingleStatementsMode(false);\n\t}\n\telse if ( isOption(arg, \"P\", \"pad-paren\") )\n\t{\n\t\tformatter.setParensOutsidePaddingMode(true);\n\t\tformatter.setParensInsidePaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"d\", \"pad-paren-out\") )\n\t{\n\t\tformatter.setParensOutsidePaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"xd\", \"pad-first-paren-out\") )\n\t{\n\t\tformatter.setParensFirstPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"D\", \"pad-paren-in\") )\n\t{\n\t\tformatter.setParensInsidePaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"H\", \"pad-header\") )\n\t{\n\t\tformatter.setParensHeaderPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"U\", \"unpad-paren\") )\n\t{\n\t\tformatter.setParensUnPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"p\", \"pad-oper\") )\n\t{\n\t\tformatter.setOperatorPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"xe\", \"delete-empty-lines\") )\n\t{\n\t\tformatter.setDeleteEmptyLinesMode(true);\n\t}\n\telse if ( isOption(arg, \"E\", \"fill-empty-lines\") )\n\t{\n\t\tformatter.setEmptyLineFill(true);\n\t}\n\telse if ( isOption(arg, \"c\", \"convert-tabs\") )\n\t{\n\t\tformatter.setTabSpaceConversionMode(true);\n\t}\n\telse if ( isOption(arg, \"xy\", \"close-templates\") )\n\t{\n\t\tformatter.setCloseTemplatesMode(true);\n\t}\n\telse if ( isOption(arg, \"F\", \"break-blocks=all\") )\n\t{\n\t\tformatter.setBreakBlocksMode(true);\n\t\tformatter.setBreakClosingHeaderBlocksMode(true);\n\t}\n\telse if ( isOption(arg, \"f\", \"break-blocks\") )\n\t{\n\t\tformatter.setBreakBlocksMode(true);\n\t}\n\telse if ( isOption(arg, \"e\", \"break-elseifs\") )\n\t{\n\t\tformatter.setBreakElseIfsMode(true);\n\t}\n\telse if ( isOption(arg, \"j\", \"add-brackets\") )\n\t{\n\t\tformatter.setAddBracketsMode(true);\n\t}\n\telse if ( isOption(arg, \"J\", \"add-one-line-brackets\") )\n\t{\n\t\tformatter.setAddOneLineBracketsMode(true);\n\t}\n\telse if ( isOption(arg, \"xj\", \"remove-brackets\") )\n\t{\n\t\tformatter.setRemoveBracketsMode(true);\n\t}\n\telse if ( isOption(arg, \"Y\", \"indent-col1-comments\") )\n\t{\n\t\tformatter.setIndentCol1CommentsMode(true);\n\t}\n\telse if ( isOption(arg, \"align-pointer=type\") )\n\t{\n\t\tformatter.setPointerAlignment(PTR_ALIGN_TYPE);\n\t}\n\telse if ( isOption(arg, \"align-pointer=middle\") )\n\t{\n\t\tformatter.setPointerAlignment(PTR_ALIGN_MIDDLE);\n\t}\n\telse if ( isOption(arg, \"align-pointer=name\") )\n\t{\n\t\tformatter.setPointerAlignment(PTR_ALIGN_NAME);\n\t}\n\telse if ( isParamOption(arg, \"k\") )\n\t{\n\t\tint align = 0;\n\t\tstring styleParam = getParam(arg, \"k\");\n\t\tif (styleParam.length() > 0)\n\t\t\talign = atoi(styleParam.c_str());\n\t\tif (align < 1 || align > 3)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (align == 1)\n\t\t\tformatter.setPointerAlignment(PTR_ALIGN_TYPE);\n\t\telse if (align == 2)\n\t\t\tformatter.setPointerAlignment(PTR_ALIGN_MIDDLE);\n\t\telse if (align == 3)\n\t\t\tformatter.setPointerAlignment(PTR_ALIGN_NAME);\n\t}\n\telse if ( isOption(arg, \"align-reference=none\") )\n\t{\n\t\tformatter.setReferenceAlignment(REF_ALIGN_NONE);\n\t}\n\telse if ( isOption(arg, \"align-reference=type\") )\n\t{\n\t\tformatter.setReferenceAlignment(REF_ALIGN_TYPE);\n\t}\n\telse if ( isOption(arg, \"align-reference=middle\") )\n\t{\n\t\tformatter.setReferenceAlignment(REF_ALIGN_MIDDLE);\n\t}\n\telse if ( isOption(arg, \"align-reference=name\") )\n\t{\n\t\tformatter.setReferenceAlignment(REF_ALIGN_NAME);\n\t}\n\telse if ( isParamOption(arg, \"W\") )\n\t{\n\t\tint align = 0;\n\t\tstring styleParam = getParam(arg, \"W\");\n\t\tif (styleParam.length() > 0)\n\t\t\talign = atoi(styleParam.c_str());\n\t\tif (align < 0 || align > 3)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (align == 0)\n\t\t\tformatter.setReferenceAlignment(REF_ALIGN_NONE);\n\t\telse if (align == 1)\n\t\t\tformatter.setReferenceAlignment(REF_ALIGN_TYPE);\n\t\telse if (align == 2)\n\t\t\tformatter.setReferenceAlignment(REF_ALIGN_MIDDLE);\n\t\telse if (align == 3)\n\t\t\tformatter.setReferenceAlignment(REF_ALIGN_NAME);\n\t}\n\telse if ( isParamOption(arg, \"max-code-length=\") )\n\t{\n\t\tint maxLength = 50;\n\t\tstring maxLengthParam = getParam(arg, \"max-code-length=\");\n\t\tif (maxLengthParam.length() > 0)\n\t\t\tmaxLength = atoi(maxLengthParam.c_str());\n\t\tif (maxLength < 50)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (maxLength > 200)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t\tformatter.setMaxCodeLength(maxLength);\n\t}\n\telse if ( isParamOption(arg, \"xC\") )\n\t{\n\t\tint maxLength = 50;\n\t\tstring maxLengthParam = getParam(arg, \"xC\");\n\t\tif (maxLengthParam.length() > 0)\n\t\t\tmaxLength = atoi(maxLengthParam.c_str());\n\t\tif (maxLength > 200)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t\tformatter.setMaxCodeLength(maxLength);\n\t}\n\telse if ( isOption(arg, \"xL\", \"break-after-logical\") )\n\t{\n\t\tformatter.setBreakAfterMode(true);\n\t}\n\telse if ( isOption(arg, \"xc\", \"attach-classes\") )\n\t{\n\t\tformatter.setAttachClass(true);\n\t}\n\telse if ( isOption(arg, \"xk\", \"attach-extern-c\") )\n\t{\n\t\tformatter.setAttachExternC(true);\n\t}\n\telse if ( isOption(arg, \"xn\", \"attach-namespaces\") )\n\t{\n\t\tformatter.setAttachNamespace(true);\n\t}\n\telse if ( isOption(arg, \"xl\", \"attach-inlines\") )\n\t{\n\t\tformatter.setAttachInline(true);\n\t}\n\telse if ( isOption(arg, \"xp\", \"remove-comment-prefix\") )\n\t{\n\t\tformatter.setStripCommentPrefix(true);\n\t}\n\t// Objective-C options\n\telse if ( isOption(arg, \"xM\", \"align-method-colon\") )\n\t{\n\t\tformatter.setAlignMethodColon(true);\n\t}\n\telse if ( isOption(arg, \"xQ\", \"pad-method-prefix\") )\n\t{\n\t\tformatter.setMethodPrefixPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"xR\", \"unpad-method-prefix\") )\n\t{\n\t\tformatter.setMethodPrefixUnPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"xP0\", \"pad-method-colon=none\") )\n\t{\n\t\tformatter.setObjCColonPaddingMode(COLON_PAD_NONE);\n\t}\n\telse if ( isOption(arg, \"xP1\", \"pad-method-colon=all\") )\n\t{\n\t\tformatter.setObjCColonPaddingMode(COLON_PAD_ALL);\n\t}\n\telse if ( isOption(arg, \"xP2\", \"pad-method-colon=after\") )\n\t{\n\t\tformatter.setObjCColonPaddingMode(COLON_PAD_AFTER);\n\t}\n\telse if ( isOption(arg, \"xP3\", \"pad-method-colon=before\") )\n\t{\n\t\tformatter.setObjCColonPaddingMode(COLON_PAD_BEFORE);\n\t}\n\t// depreciated options ////////////////////////////////////////////////////////////////////////////////////////////\n\telse if ( isOption(arg, \"indent-preprocessor\") )\t// depreciated release 2.04\n\t{\n\t\tformatter.setPreprocDefineIndent(true);\n\t}\n\telse if ( isOption(arg, \"style=ansi\") )\t\t\t\t// depreciated release 2.05\n\t{\n\t\tformatter.setFormattingStyle(STYLE_ALLMAN);\n\t}\n//  NOTE: Removed in release 2.04.\n//\telse if ( isOption(arg, \"b\", \"brackets=break\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(BREAK_MODE);\n//\t}\n//\telse if ( isOption(arg, \"a\", \"brackets=attach\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(ATTACH_MODE);\n//\t}\n//\telse if ( isOption(arg, \"l\", \"brackets=linux\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(LINUX_MODE);\n//\t}\n//\telse if ( isOption(arg, \"u\", \"brackets=stroustrup\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(STROUSTRUP_MODE);\n//\t}\n//\telse if ( isOption(arg, \"g\", \"brackets=run-in\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(RUN_IN_MODE);\n//\t}\n\t// end depreciated options ////////////////////////////////////////////////////////////////////////////////////////\n#ifdef ASTYLE_LIB\n\t// End of options used by GUI /////////////////////////////////////////////////////////////////////////////////////\n\telse\n\t\tisOptionError(arg, errorInfo);\n#else\n\t// Options used by only console ///////////////////////////////////////////////////////////////////////////////////\n\telse if ( isOption(arg, \"n\", \"suffix=none\") )\n\t{\n\t\tg_console->setNoBackup(true);\n\t}\n\telse if ( isParamOption(arg, \"suffix=\") )\n\t{\n\t\tstring suffixParam = getParam(arg, \"suffix=\");\n\t\tif (suffixParam.length() > 0)\n\t\t{\n\t\t\tg_console->setOrigSuffix(suffixParam);\n\t\t}\n\t}\n\telse if ( isParamOption(arg, \"exclude=\") )\n\t{\n\t\tstring suffixParam = getParam(arg, \"exclude=\");\n\t\tif (suffixParam.length() > 0)\n\t\t\tg_console->updateExcludeVector(suffixParam);\n\t}\n\telse if ( isOption(arg, \"r\", \"R\") || isOption(arg, \"recursive\") )\n\t{\n\t\tg_console->setIsRecursive(true);\n\t}\n\telse if (isOption(arg, \"dry-run\"))\n\t{\n\t\tg_console->setIsDryRun(true);\n\t}\n\telse if ( isOption(arg, \"Z\", \"preserve-date\") )\n\t{\n\t\tg_console->setPreserveDate(true);\n\t}\n\telse if ( isOption(arg, \"v\", \"verbose\") )\n\t{\n\t\tg_console->setIsVerbose(true);\n\t}\n\telse if ( isOption(arg, \"Q\", \"formatted\") )\n\t{\n\t\tg_console->setIsFormattedOnly(true);\n\t}\n\telse if ( isOption(arg, \"q\", \"quiet\") )\n\t{\n\t\tg_console->setIsQuiet(true);\n\t}\n\telse if ( isOption(arg, \"i\", \"ignore-exclude-errors\") )\n\t{\n\t\tg_console->setIgnoreExcludeErrors(true);\n\t}\n\telse if ( isOption(arg, \"xi\", \"ignore-exclude-errors-x\") )\n\t{\n\t\tg_console->setIgnoreExcludeErrorsAndDisplay(true);\n\t}\n\telse if ( isOption(arg, \"X\", \"errors-to-stdout\") )\n\t{\n\t\t_err = &cout;\n\t}\n\telse if ( isOption(arg, \"lineend=windows\") )\n\t{\n\t\tformatter.setLineEndFormat(LINEEND_WINDOWS);\n\t}\n\telse if ( isOption(arg, \"lineend=linux\") )\n\t{\n\t\tformatter.setLineEndFormat(LINEEND_LINUX);\n\t}\n\telse if ( isOption(arg, \"lineend=macold\") )\n\t{\n\t\tformatter.setLineEndFormat(LINEEND_MACOLD);\n\t}\n\telse if ( isParamOption(arg, \"z\") )\n\t{\n\t\tint lineendType = 0;\n\t\tstring lineendParam = getParam(arg, \"z\");\n\t\tif (lineendParam.length() > 0)\n\t\t\tlineendType = atoi(lineendParam.c_str());\n\t\tif (lineendType < 1 || lineendType > 3)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (lineendType == 1)\n\t\t\tformatter.setLineEndFormat(LINEEND_WINDOWS);\n\t\telse if (lineendType == 2)\n\t\t\tformatter.setLineEndFormat(LINEEND_LINUX);\n\t\telse if (lineendType == 3)\n\t\t\tformatter.setLineEndFormat(LINEEND_MACOLD);\n\t}\n\telse\n\t\tisOptionError(arg, errorInfo);\n#endif\n}\t// End of parseOption function\n\n// Parse options from the options file.\nvoid ASOptions::importOptions(istream &in, vector<string> &optionsVector)\n{\n\tchar ch;\n\tbool isInQuote = false;\n\tchar quoteChar = ' ';\n\tstring currentToken;\n\n\twhile (in)\n\t{\n\t\tcurrentToken = \"\";\n\t\tdo\n\t\t{\n\t\t\tin.get(ch);\n\t\t\tif (in.eof())\n\t\t\t\tbreak;\n\t\t\t// treat '#' as line comments\n\t\t\tif (ch == '#')\n\t\t\t\twhile (in)\n\t\t\t\t{\n\t\t\t\t\tin.get(ch);\n\t\t\t\t\tif (ch == '\\n' || ch == '\\r')\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// break options on new-lines, tabs, commas, or spaces\n\t\t\t// remove quotes from output\n\t\t\tif (in.eof() || ch == '\\n' || ch == '\\r' || ch == '\\t' || ch == ',')\n\t\t\t\tbreak;\n\t\t\tif (ch == ' ' && !isInQuote)\n\t\t\t\tbreak;\n\t\t\tif (ch == quoteChar && isInQuote)\n\t\t\t\tbreak;\n\t\t\tif (ch == '\"' || ch == '\\'')\n\t\t\t{\n\t\t\t\tisInQuote = true;\n\t\t\t\tquoteChar = ch;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcurrentToken.append(1, ch);\n\t\t}\n\t\twhile (in);\n\n\t\tif (currentToken.length() != 0)\n\t\t\toptionsVector.push_back(currentToken);\n\t\tisInQuote = false;\n\t}\n}\n\nstring ASOptions::getOptionErrors() const\n{\n\treturn optionErrors.str();\n}\n\nstring ASOptions::getParam(const string &arg, const char* op)\n{\n\treturn arg.substr(strlen(op));\n}\n\nstring ASOptions::getParam(const string &arg, const char* op1, const char* op2)\n{\n\treturn isParamOption(arg, op1) ? getParam(arg, op1) : getParam(arg, op2);\n}\n\nbool ASOptions::isOption(const string &arg, const char* op)\n{\n\treturn arg.compare(op) == 0;\n}\n\nbool ASOptions::isOption(const string &arg, const char* op1, const char* op2)\n{\n\treturn (isOption(arg, op1) || isOption(arg, op2));\n}\n\nvoid ASOptions::isOptionError(const string &arg, const string &errorInfo)\n{\n\tif (optionErrors.str().length() == 0)\n\t\toptionErrors << errorInfo << endl;   // need main error message\n\toptionErrors << arg << endl;\n}\n\nbool ASOptions::isParamOption(const string &arg, const char* option)\n{\n\tbool retVal = arg.compare(0, strlen(option), option) == 0;\n\t// if comparing for short option, 2nd char of arg must be numeric\n\tif (retVal && strlen(option) == 1 && arg.length() > 1)\n\t\tif (!isdigit((unsigned char)arg[1]))\n\t\t\tretVal = false;\n\treturn retVal;\n}\n\nbool ASOptions::isParamOption(const string &arg, const char* option1, const char* option2)\n{\n\treturn isParamOption(arg, option1) || isParamOption(arg, option2);\n}\n\n//----------------------------------------------------------------------------\n// Utf8_16 class\n//----------------------------------------------------------------------------\n\n// Return true if an int is big endian.\nbool Utf8_16::getBigEndian() const\n{\n\tshort int word = 0x0001;\n\tchar* byte = (char*) &word;\n\treturn (byte[0] ? false : true);\n}\n\n// Swap the two low order bytes of a 16 bit integer value.\nint Utf8_16::swap16bit(int value) const\n{\n\treturn ( ((value & 0xff) << 8) | ((value & 0xff00) >> 8) );\n}\n\n// Return the length of a utf-16 C string.\n// The length is in number of utf16_t.\nsize_t Utf8_16::utf16len(const utf16* utf16In) const\n{\n\tsize_t length = 0;\n\twhile (*utf16In++ != '\\0')\n\t\tlength++;\n\treturn length;\n}\n\n// Adapted from SciTE UniConversion.cxx.\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// Modified for Artistic Style by Jim Pattee.\n// Compute the length of an output utf-8 file given a utf-16 file.\n// Input inLen is the size in BYTES (not wchar_t).\nsize_t Utf8_16::Utf8LengthFromUtf16(const char* utf16In, size_t inLen, bool isBigEndian) const\n{\n\tsize_t len = 0;\n\tsize_t wcharLen = inLen / 2;\n\tconst short* uptr = reinterpret_cast<const short*>(utf16In);\n\tfor (size_t i = 0; i < wcharLen && uptr[i];)\n\t{\n\t\tsize_t uch = isBigEndian ? swap16bit(uptr[i]) : uptr[i];\n\t\tif (uch < 0x80)\n\t\t\tlen++;\n\t\telse if (uch < 0x800)\n\t\t\tlen += 2;\n\t\telse if ((uch >= SURROGATE_LEAD_FIRST) && (uch <= SURROGATE_TRAIL_LAST))\n\t\t{\n\t\t\tlen += 4;\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t\tlen += 3;\n\t\ti++;\n\t}\n\treturn len;\n}\n\n// Adapted from SciTE Utf8_16.cxx.\n// Copyright (C) 2002 Scott Kirkwood.\n// Modified for Artistic Style by Jim Pattee.\n// Convert a utf-8 file to utf-16.\nsize_t Utf8_16::Utf8ToUtf16(char* utf8In, size_t inLen, bool isBigEndian, char* utf16Out) const\n{\n\tint nCur = 0;\n\tubyte* pRead = reinterpret_cast<ubyte*>(utf8In);\n\tutf16* pCur = reinterpret_cast<utf16*>(utf16Out);\n\tconst ubyte* pEnd = pRead + inLen;\n\tconst utf16* pCurStart = pCur;\n\teState state = eStart;\n\n\t// the BOM will automatically be converted to utf-16\n\twhile (pRead < pEnd)\n\t{\n\t\tswitch (state)\n\t\t{\n\t\tcase eStart:\n\t\t\tif ((0xF0 & *pRead) == 0xF0)\n\t\t\t{\n\t\t\t\tnCur = (0x7 & *pRead) << 18;\n\t\t\t\tstate = eSecondOf4Bytes;\n\t\t\t}\n\t\t\telse if ((0xE0 & *pRead) == 0xE0)\n\t\t\t{\n\t\t\t\tnCur = (~0xE0 & *pRead) << 12;\n\t\t\t\tstate = ePenultimate;\n\t\t\t}\n\t\t\telse if ((0xC0 & *pRead) == 0xC0)\n\t\t\t{\n\t\t\t\tnCur = (~0xC0 & *pRead) << 6;\n\t\t\t\tstate = eFinal;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnCur = *pRead;\n\t\t\t\tstate = eStart;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase eSecondOf4Bytes:\n\t\t\tnCur |= (0x3F & *pRead) << 12;\n\t\t\tstate = ePenultimate;\n\t\t\tbreak;\n\t\tcase ePenultimate:\n\t\t\tnCur |= (0x3F & *pRead) << 6;\n\t\t\tstate = eFinal;\n\t\t\tbreak;\n\t\tcase eFinal:\n\t\t\tnCur |= (0x3F & *pRead);\n\t\t\tstate = eStart;\n\t\t\tbreak;\n\t\t}\n\t\t++pRead;\n\n\t\tif (state == eStart)\n\t\t{\n\t\t\tint codePoint = nCur;\n\t\t\tif (codePoint >= SURROGATE_FIRST_VALUE)\n\t\t\t{\n\t\t\t\tcodePoint -= SURROGATE_FIRST_VALUE;\n\t\t\t\tint lead = (codePoint >> 10) + SURROGATE_LEAD_FIRST;\n\t\t\t\t*pCur++ = static_cast<utf16>(isBigEndian ? swap16bit(lead) : lead);\n\t\t\t\tint trail = (codePoint & 0x3ff) + SURROGATE_TRAIL_FIRST;\n\t\t\t\t*pCur++ = static_cast<utf16>(isBigEndian ? swap16bit(trail) : trail);\n\t\t\t}\n\t\t\telse\n\t\t\t\t*pCur++ = static_cast<utf16>(isBigEndian ? swap16bit(codePoint) : codePoint);\n\t\t}\n\t}\n\t// return value is the output length in BYTES (not wchar_t)\n\treturn (pCur - pCurStart) * 2;\n}\n\n// Adapted from SciTE UniConversion.cxx.\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// Modified for Artistic Style by Jim Pattee.\n// Compute the length of an output utf-16 file given a utf-8 file.\n// Return value is the size in BYTES (not wchar_t).\nsize_t Utf8_16::Utf16LengthFromUtf8(const char* utf8In, size_t len) const\n{\n\tsize_t ulen = 0;\n\tsize_t charLen;\n\tfor (size_t i = 0; i < len;)\n\t{\n\t\tunsigned char ch = static_cast<unsigned char>(utf8In[i]);\n\t\tif (ch < 0x80)\n\t\t\tcharLen = 1;\n\t\telse if (ch < 0x80 + 0x40 + 0x20)\n\t\t\tcharLen = 2;\n\t\telse if (ch < 0x80 + 0x40 + 0x20 + 0x10)\n\t\t\tcharLen = 3;\n\t\telse\n\t\t{\n\t\t\tcharLen = 4;\n\t\t\tulen++;\n\t\t}\n\t\ti += charLen;\n\t\tulen++;\n\t}\n\t// return value is the length in bytes (not wchar_t)\n\treturn ulen * 2;\n}\n\n// Adapted from SciTE Utf8_16.cxx.\n// Copyright (C) 2002 Scott Kirkwood.\n// Modified for Artistic Style by Jim Pattee.\n// Convert a utf-16 file to utf-8.\nsize_t Utf8_16::Utf16ToUtf8(char* utf16In, size_t inLen, bool isBigEndian,\n                            bool firstBlock, char* utf8Out) const\n{\n\tint nCur16 = 0;\n\tint nCur = 0;\n\tubyte* pRead = reinterpret_cast<ubyte*>(utf16In);\n\tubyte* pCur = reinterpret_cast<ubyte*>(utf8Out);\n\tconst ubyte* pEnd = pRead + inLen;\n\tconst ubyte* pCurStart = pCur;\n\tstatic eState state = eStart;\t// state is retained for subsequent blocks\n\tif (firstBlock)\n\t\tstate = eStart;\n\n\t// the BOM will automatically be converted to utf-8\n\twhile (pRead < pEnd)\n\t{\n\t\tswitch (state)\n\t\t{\n\t\tcase eStart:\n\t\t\tif (pRead >= pEnd)\n\t\t\t{\n\t\t\t\t++pRead;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (isBigEndian)\n\t\t\t{\n\t\t\t\tnCur16 = static_cast<utf16>(*pRead++ << 8);\n\t\t\t\tnCur16 |= static_cast<utf16>(*pRead);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnCur16 = *pRead++;\n\t\t\t\tnCur16 |= static_cast<utf16>(*pRead << 8);\n\t\t\t}\n\t\t\tif (nCur16 >= SURROGATE_LEAD_FIRST && nCur16 <= SURROGATE_LEAD_LAST)\n\t\t\t{\n\t\t\t\t++pRead;\n\t\t\t\tint trail;\n\t\t\t\tif (isBigEndian)\n\t\t\t\t{\n\t\t\t\t\ttrail = static_cast<utf16>(*pRead++ << 8);\n\t\t\t\t\ttrail |= static_cast<utf16>(*pRead);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttrail = *pRead++;\n\t\t\t\t\ttrail |= static_cast<utf16>(*pRead << 8);\n\t\t\t\t}\n\t\t\t\tnCur16 = (((nCur16 & 0x3ff) << 10) | (trail & 0x3ff)) + SURROGATE_FIRST_VALUE;\n\t\t\t}\n\t\t\t++pRead;\n\n\t\t\tif (nCur16 < 0x80)\n\t\t\t{\n\t\t\t\tnCur = static_cast<ubyte>(nCur16 & 0xFF);\n\t\t\t\tstate = eStart;\n\t\t\t}\n\t\t\telse if (nCur16 < 0x800)\n\t\t\t{\n\t\t\t\tnCur = static_cast<ubyte>(0xC0 | (nCur16 >> 6));\n\t\t\t\tstate = eFinal;\n\t\t\t}\n\t\t\telse if (nCur16 < SURROGATE_FIRST_VALUE)\n\t\t\t{\n\t\t\t\tnCur = static_cast<ubyte>(0xE0 | (nCur16 >> 12));\n\t\t\t\tstate = ePenultimate;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnCur = static_cast<ubyte>(0xF0 | (nCur16 >> 18));\n\t\t\t\tstate = eSecondOf4Bytes;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase eSecondOf4Bytes:\n\t\t\tnCur = static_cast<ubyte>(0x80 | ((nCur16 >> 12) & 0x3F));\n\t\t\tstate = ePenultimate;\n\t\t\tbreak;\n\t\tcase ePenultimate:\n\t\t\tnCur = static_cast<ubyte>(0x80 | ((nCur16 >> 6) & 0x3F));\n\t\t\tstate = eFinal;\n\t\t\tbreak;\n\t\tcase eFinal:\n\t\t\tnCur = static_cast<ubyte>(0x80 | (nCur16 & 0x3F));\n\t\t\tstate = eStart;\n\t\t\tbreak;\n\t\t}\n\t\t*pCur++ = static_cast<ubyte>(nCur);\n\t}\n\treturn pCur - pCurStart;\n}\n\n//----------------------------------------------------------------------------\n\n}   // end of astyle namespace\n\n//----------------------------------------------------------------------------\n\nusing namespace astyle;\n\n//----------------------------------------------------------------------------\n// ASTYLE_JNI functions for Java library builds\n//----------------------------------------------------------------------------\n\n#ifdef ASTYLE_JNI\n\n// called by a java program to get the version number\n// the function name is constructed from method names in the calling java program\nextern \"C\"  EXPORT\njstring STDCALL Java_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass)\n{\n\treturn env->NewStringUTF(g_version);\n}\n\n// called by a java program to format the source code\n// the function name is constructed from method names in the calling java program\nextern \"C\"  EXPORT\njstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env,\n                                                jobject obj,\n                                                jstring textInJava,\n                                                jstring optionsJava)\n{\n\tg_env = env;                                // make object available globally\n\tg_obj = obj;                                // make object available globally\n\n\tjstring textErr = env->NewStringUTF(\"\");    // zero length text returned if an error occurs\n\n\t// get the method ID\n\tjclass cls = env->GetObjectClass(obj);\n\tg_mid = env->GetMethodID(cls, \"ErrorHandler\", \"(ILjava/lang/String;)V\");\n\tif (g_mid == 0)\n\t{\n\t\tcout << \"Cannot find java method ErrorHandler\" << endl;\n\t\treturn textErr;\n\t}\n\n\t// convert jstring to char*\n\tconst char* textIn = env->GetStringUTFChars(textInJava, NULL);\n\tconst char* options = env->GetStringUTFChars(optionsJava, NULL);\n\n\t// call the C++ formatting function\n\tchar* textOut = AStyleMain(textIn, options, javaErrorHandler, javaMemoryAlloc);\n\t// if an error message occurred it was displayed by errorHandler\n\tif (textOut == NULL)\n\t\treturn textErr;\n\n\t// release memory\n\tjstring textOutJava = env->NewStringUTF(textOut);\n\tdelete [] textOut;\n\tenv->ReleaseStringUTFChars(textInJava, textIn);\n\tenv->ReleaseStringUTFChars(optionsJava, options);\n\n\treturn textOutJava;\n}\n\n// Call the Java error handler\nvoid STDCALL javaErrorHandler(int errorNumber, const char* errorMessage)\n{\n\tjstring errorMessageJava = g_env->NewStringUTF(errorMessage);\n\tg_env->CallVoidMethod(g_obj, g_mid, errorNumber, errorMessageJava);\n}\n\n// Allocate memory for the formatted text\nchar* STDCALL javaMemoryAlloc(unsigned long memoryNeeded)\n{\n\t// error condition is checked after return from AStyleMain\n\tchar* buffer = new(nothrow) char[memoryNeeded];\n\treturn buffer;\n}\n#endif\t// ASTYLE_JNI\n\n//----------------------------------------------------------------------------\n// Entry point for AStyleMainUtf16 library builds\n//----------------------------------------------------------------------------\n\n#ifdef ASTYLE_LIB\n\nextern \"C\" EXPORT utf16_t* STDCALL AStyleMainUtf16(const utf16_t* pSourceIn,\t// the source to be formatted\n                                                   const utf16_t* pOptions,\t\t// AStyle options\n                                                   fpError fpErrorHandler,\t\t// error handler function\n                                                   fpAlloc fpMemoryAlloc)\t\t// memory allocation function\n{\n\tif (fpErrorHandler == NULL)         // cannot display a message if no error handler\n\t\treturn NULL;\n\n\tif (pSourceIn == NULL)\n\t{\n\t\tfpErrorHandler(101, \"No pointer to source input.\");\n\t\treturn NULL;\n\t}\n\tif (pOptions == NULL)\n\t{\n\t\tfpErrorHandler(102, \"No pointer to AStyle options.\");\n\t\treturn NULL;\n\t}\n\tif (fpMemoryAlloc == NULL)\n\t{\n\t\tfpErrorHandler(103, \"No pointer to memory allocation function.\");\n\t\treturn NULL;\n\t}\n#ifndef _WIN32\n\t// check size of utf16_t on Linux\n\tint sizeCheck = 2;\n\tif (sizeof(utf16_t) != sizeCheck)\n\t{\n\t\tfpErrorHandler(104, \"Unsigned short is not the correct size.\");\n\t\treturn NULL;\n\t}\n#endif\n\n\tASLibrary library;\n\tutf16_t* utf16Out = library.formatUtf16(pSourceIn, pOptions, fpErrorHandler, fpMemoryAlloc);\n\treturn utf16Out;\n}\n\n//----------------------------------------------------------------------------\n// ASTYLE_LIB entry point for library builds\n//----------------------------------------------------------------------------\n/*\n * IMPORTANT VC DLL linker for WIN32 must have the parameter  /EXPORT:AStyleMain=_AStyleMain@16\n *                                                            /EXPORT:AStyleGetVersion=_AStyleGetVersion@0\n * No /EXPORT is required for x64\n */\nextern \"C\" EXPORT char* STDCALL AStyleMain(const char* pSourceIn,\t\t// the source to be formatted\n                                           const char* pOptions,\t\t// AStyle options\n                                           fpError fpErrorHandler,\t\t// error handler function\n                                           fpAlloc fpMemoryAlloc)\t\t// memory allocation function\n{\n\tif (fpErrorHandler == NULL)         // cannot display a message if no error handler\n\t\treturn NULL;\n\n\tif (pSourceIn == NULL)\n\t{\n\t\tfpErrorHandler(101, \"No pointer to source input.\");\n\t\treturn NULL;\n\t}\n\tif (pOptions == NULL)\n\t{\n\t\tfpErrorHandler(102, \"No pointer to AStyle options.\");\n\t\treturn NULL;\n\t}\n\tif (fpMemoryAlloc == NULL)\n\t{\n\t\tfpErrorHandler(103, \"No pointer to memory allocation function.\");\n\t\treturn NULL;\n\t}\n\n\tASFormatter formatter;\n\tASOptions options(formatter);\n\n\tvector<string> optionsVector;\n\tistringstream opt(pOptions);\n\n\toptions.importOptions(opt, optionsVector);\n\n\tbool ok = options.parseOptions(optionsVector, \"Invalid Artistic Style options:\");\n\tif (!ok)\n\t\tfpErrorHandler(130, options.getOptionErrors().c_str());\n\n\tistringstream in(pSourceIn);\n\tASStreamIterator<istringstream> streamIterator(&in);\n\tostringstream out;\n\tformatter.init(&streamIterator);\n\n\twhile (formatter.hasMoreLines())\n\t{\n\t\tout << formatter.nextLine();\n\t\tif (formatter.hasMoreLines())\n\t\t\tout << streamIterator.getOutputEOL();\n\t\telse\n\t\t{\n\t\t\t// this can happen if the file if missing a closing bracket and break-blocks is requested\n\t\t\tif (formatter.getIsLineReady())\n\t\t\t{\n\t\t\t\tout << streamIterator.getOutputEOL();\n\t\t\t\tout << formatter.nextLine();\n\t\t\t}\n\t\t}\n\t}\n\n\tunsigned long textSizeOut = out.str().length();\n\tchar* pTextOut = fpMemoryAlloc(textSizeOut + 1);     // call memory allocation function\n\tif (pTextOut == NULL)\n\t{\n\t\tfpErrorHandler(120, \"Allocation failure on output.\");\n\t\treturn NULL;\n\t}\n\n\tstrcpy(pTextOut, out.str().c_str());\n#ifndef NDEBUG\n\t// The checksum is an assert in the console build and ASFormatter.\n\t// This error returns the incorrectly formatted file to the editor.\n\t// This is done to allow the file to be saved for debugging purposes.\n\tif (formatter.getChecksumDiff() != 0)\n\t\tfpErrorHandler(220,\n\t\t               \"Checksum error.\\n\"\n\t\t               \"The incorrectly formatted file will be returned for debugging.\");\n#endif\n\treturn pTextOut;\n}\n\nextern \"C\" EXPORT const char* STDCALL AStyleGetVersion(void)\n{\n\treturn g_version;\n}\n\n// ASTYLECON_LIB is defined to exclude \"main\" from the test programs\n#elif !defined(ASTYLECON_LIB)\n\n//----------------------------------------------------------------------------\n// main function for ASConsole build\n//----------------------------------------------------------------------------\n\nint main(int argc, char** argv)\n{\n\t// create objects\n\tASFormatter formatter;\n\tg_console = new ASConsole(formatter);\n\n\t// process command line and options file\n\t// build the vectors fileNameVector, optionsVector, and fileOptionsVector\n\tvector<string> argvOptions;\n\targvOptions = g_console->getArgvOptions(argc, argv);\n\tg_console->processOptions(argvOptions);\n\n\t// if no files have been given, use cin for input and cout for output\n\tif (g_console->fileNameVectorIsEmpty())\n\t{\n\t\tg_console->formatCinToCout();\n\t\treturn EXIT_SUCCESS;\n\t}\n\n\t// process entries in the fileNameVector\n\tg_console->processFiles();\n\n\tdelete g_console;\n\treturn EXIT_SUCCESS;\n}\n\n#endif\t// ASTYLE_LIB\n"
  },
  {
    "path": "3rdpart/astyle/astyle_main.h",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   astyle_main.h\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#ifndef ASTYLE_MAIN_H\n#define ASTYLE_MAIN_H\n\n//----------------------------------------------------------------------------\n// headers\n//----------------------------------------------------------------------------\n\n#include \"astyle.h\"\n\n#include <sstream>\n#include <ctime>\n\n#if defined(__BORLANDC__) && __BORLANDC__ < 0x0650\n\t// Embarcadero needs this for the following utime.h\n\t// otherwise \"struct utimbuf\" gets an error on time_t\n\t// 0x0650 for C++Builder XE3\n\tusing std::time_t;\n#endif\n\n#if defined(_MSC_VER) || defined(__DMC__)\n\t#include <sys/utime.h>\n\t#include <sys/stat.h>\n#else\n\t#include <utime.h>\n\t#include <sys/stat.h>\n#endif                         // end compiler checks\n\n#ifdef ASTYLE_JNI\n\t#include <jni.h>\n\t#ifndef ASTYLE_LIB    // ASTYLE_LIB must be defined for ASTYLE_JNI\n\t\t#define ASTYLE_LIB\n\t#endif\n#endif  //  ASTYLE_JNI\n\n#ifndef ASTYLE_LIB\n\t// for console build only\n\t#include \"ASLocalizer.h\"\n\t#define _(a) localizer.settext(a)\n#endif\t// ASTYLE_LIB\n\n// for G++ implementation of string.compare:\n#if defined(__GNUC__) && __GNUC__ < 3\n\t#error - Use GNU C compiler release 3 or higher\n#endif\n\n// for namespace problem in version 5.0\n#if defined(_MSC_VER) && _MSC_VER < 1200        // check for V6.0\n\t#error - Use Microsoft compiler version 6 or higher\n#endif\n\n// for mingw BOM, UTF-16, and Unicode functions\n#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)\n\t#if (__MINGW32_MAJOR_VERSION > 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 16))\n\t\t#error - Use MinGW compiler version 4 or higher\n\t#endif\n#endif\n\n//----------------------------------------------------------------------------\n// definitions\n//----------------------------------------------------------------------------\n\n#ifdef ASTYLE_LIB\n\n\t// define STDCALL and EXPORT for Windows\n\t// MINGW defines STDCALL in Windows.h (actually windef.h)\n\t// EXPORT has no value if ASTYLE_NO_EXPORT is defined\n\t#ifdef _WIN32\n\t\t#ifndef STDCALL\n\t\t\t#define STDCALL __stdcall\n\t\t#endif\n\t\t// define this to prevent compiler warning and error messages\n\t\t#ifdef ASTYLE_NO_EXPORT\n\t\t\t#define EXPORT\n\t\t#else\n\t\t\t#define EXPORT __declspec(dllexport)\n\t\t#endif\n\t\t// define STDCALL and EXPORT for non-Windows\n\t\t// visibility attribute allows \"-fvisibility=hidden\" compiler option\n\t#else\n\t\t#define STDCALL\n\t\t#if __GNUC__ >= 4\n\t\t\t#define EXPORT __attribute__ ((visibility (\"default\")))\n\t\t#else\n\t\t\t#define EXPORT\n\t\t#endif\n\t#endif\t// #ifdef _WIN32\n\n\t// define utf-16 bit text for the platform\n\ttypedef unsigned short utf16_t;\n\t// define pointers to callback error handler and memory allocation\n\ttypedef void (STDCALL* fpError)(int errorNumber, const char* errorMessage);\n\ttypedef char* (STDCALL* fpAlloc)(unsigned long memoryNeeded);\n\n#endif  // #ifdef ASTYLE_LIB\n\n//----------------------------------------------------------------------------\n// astyle namespace\n//----------------------------------------------------------------------------\n\nnamespace astyle {\n\n//----------------------------------------------------------------------------\n// ASStreamIterator class\n// typename will be istringstream for GUI and istream otherwise\n// ASSourceIterator is an abstract class defined in astyle.h\n//----------------------------------------------------------------------------\n\ntemplate<typename T>\nclass ASStreamIterator : public ASSourceIterator\n{\n\tpublic:\n\t\tbool checkForEmptyLine;\n\n\t\t// function declarations\n\t\tASStreamIterator(T* in);\n\t\tvirtual ~ASStreamIterator();\n\t\tbool getLineEndChange(int lineEndFormat) const;\n\t\tint  getStreamLength() const;\n\t\tstring nextLine(bool emptyLineWasDeleted);\n\t\tstring peekNextLine();\n\t\tvoid peekReset();\n\t\tvoid saveLastInputLine();\n\t\tstreamoff tellg();\n\n\tprivate:\n\t\tASStreamIterator(const ASStreamIterator &copy);       // copy constructor not to be implemented\n\t\tASStreamIterator &operator=(ASStreamIterator &);      // assignment operator not to be implemented\n\t\tT* inStream;            // pointer to the input stream\n\t\tstring buffer;          // current input line\n\t\tstring prevBuffer;      // previous input line\n\t\tint eolWindows;         // number of Windows line endings, CRLF\n\t\tint eolLinux;           // number of Linux line endings, LF\n\t\tint eolMacOld;          // number of old Mac line endings. CR\n\t\tchar outputEOL[4];      // next output end of line char\n\t\tstreamoff streamLength; // length of the input file stream\n\t\tstreamoff peekStart;    // starting position for peekNextLine\n\t\tbool prevLineDeleted;   // the previous input line was deleted\n\n\tpublic:\t// inline functions\n\t\tbool compareToInputBuffer(const string &nextLine_) const\n\t\t{ return (nextLine_ == prevBuffer); }\n\t\tconst char* getOutputEOL() const { return outputEOL; }\n\t\tbool hasMoreLines() const { return !inStream->eof(); }\n};\n\n//----------------------------------------------------------------------------\n// Utf8_16 class for utf8/16 conversions\n//----------------------------------------------------------------------------\n\nclass Utf8_16\n{\n\tprivate:\n\t\ttypedef unsigned short utf16; // 16 bits\n\t\ttypedef unsigned char utf8;   // 8 bits\n\t\ttypedef unsigned char ubyte;  // 8 bits\n\t\tenum { SURROGATE_LEAD_FIRST = 0xD800 };\n\t\tenum { SURROGATE_LEAD_LAST = 0xDBFF };\n\t\tenum { SURROGATE_TRAIL_FIRST = 0xDC00 };\n\t\tenum { SURROGATE_TRAIL_LAST = 0xDFFF };\n\t\tenum { SURROGATE_FIRST_VALUE = 0x10000 };\n\t\tenum eState { eStart, eSecondOf4Bytes, ePenultimate, eFinal };\n\n\tpublic:\n\t\tbool   getBigEndian() const;\n\t\tint    swap16bit(int value) const;\n\t\tsize_t utf16len(const utf16* utf16In) const;\n\t\tsize_t Utf8LengthFromUtf16(const char* utf16In, size_t inLen, bool isBigEndian) const;\n\t\tsize_t Utf8ToUtf16(char* utf8In, size_t inLen, bool isBigEndian, char* utf16Out) const;\n\t\tsize_t Utf16LengthFromUtf8(const char* utf8In, size_t inLen) const;\n\t\tsize_t Utf16ToUtf8(char* utf16In, size_t inLen, bool isBigEndian,\n\t\t                   bool firstBlock, char* utf8Out) const;\n};\n\n//----------------------------------------------------------------------------\n// ASOptions class for options processing\n// used by both console and library builds\n//----------------------------------------------------------------------------\n\nclass ASOptions\n{\n\tpublic:\n\t\tASOptions(ASFormatter &formatterArg) : formatter(formatterArg) {}\n\t\tstring getOptionErrors() const;\n\t\tvoid importOptions(istream &in, vector<string> &optionsVector);\n\t\tbool parseOptions(vector<string> &optionsVector, const string &errorInfo);\n\n\tprivate:\n\t\t// variables\n\t\tASFormatter &formatter;\t\t\t// reference to the ASFormatter object\n\t\tstringstream optionErrors;\t\t// option error messages\n\n\t\t// functions\n\t\tASOptions &operator=(ASOptions &);         // not to be implemented\n\t\tstring getParam(const string &arg, const char* op);\n\t\tstring getParam(const string &arg, const char* op1, const char* op2);\n\t\tbool isOption(const string &arg, const char* op);\n\t\tbool isOption(const string &arg, const char* op1, const char* op2);\n\t\tvoid isOptionError(const string &arg, const string &errorInfo);\n\t\tbool isParamOption(const string &arg, const char* option);\n\t\tbool isParamOption(const string &arg, const char* option1, const char* option2);\n\t\tvoid parseOption(const string &arg, const string &errorInfo);\n};\n\n#ifndef\tASTYLE_LIB\n\n//----------------------------------------------------------------------------\n// ASConsole class for console build\n//----------------------------------------------------------------------------\n\nclass ASConsole\n{\n\tprivate:    // variables\n\t\tASFormatter &formatter;             // reference to the ASFormatter object\n\t\tASLocalizer localizer;              // ASLocalizer object\n\t\t// command line options\n\t\tbool isRecursive;                   // recursive option\n\t\tbool isDryRun;                      // dry-run option\n\t\tbool noBackup;                      // suffix=none option\n\t\tbool preserveDate;                  // preserve-date option\n\t\tbool isVerbose;                     // verbose option\n\t\tbool isQuiet;                       // quiet option\n\t\tbool isFormattedOnly;               // formatted lines only option\n\t\tbool ignoreExcludeErrors;           // don't abort on unmatched excludes\n\t\tbool ignoreExcludeErrorsDisplay;    // don't display unmatched excludes\n\t\tbool optionsFileRequired;           // options= option\n\t\tbool useAscii;                      // ascii option\n\t\t// other variables\n\t\tbool bypassBrowserOpen;             // don't open the browser on html options\n\t\tbool hasWildcard;                   // file name includes a wildcard\n\t\tsize_t mainDirectoryLength;         // directory length to be excluded in displays\n\t\tbool filesAreIdentical;             // input and output files are identical\n\t\tint  filesFormatted;                // number of files formatted\n\t\tint  filesUnchanged;                // number of files unchanged\n\t\tbool lineEndsMixed;                 // output has mixed line ends\n\t\tint  linesOut;                      // number of output lines\n\t\tchar outputEOL[4];                  // current line end\n\t\tchar prevEOL[4];                    // previous line end\n\n\t\tUtf8_16 utf8_16;                    // utf8/16 conversion methods\n\n\t\tstring optionsFileName;             // file path and name of the options file to use\n\t\tstring origSuffix;                  // suffix= option\n\t\tstring targetDirectory;             // path to the directory being processed\n\t\tstring targetFilename;              // file name being processed\n\n\t\tvector<string> excludeVector;       // exclude from wildcard hits\n\t\tvector<bool>   excludeHitsVector;   // exclude flags for error reporting\n\t\tvector<string> fileNameVector;      // file paths and names from the command line\n\t\tvector<string> optionsVector;       // options from the command line\n\t\tvector<string> fileOptionsVector;   // options from the options file\n\t\tvector<string> fileName;            // files to be processed including path\n\n\tpublic:     // variables\n\t\tASConsole(ASFormatter &formatterArg) : formatter(formatterArg) {\n\t\t\t// command line options\n\t\t\tisRecursive = false;\n\t\t\tisDryRun = false;\n\t\t\tnoBackup = false;\n\t\t\tpreserveDate = false;\n\t\t\tisVerbose = false;\n\t\t\tisQuiet = false;\n\t\t\tisFormattedOnly = false;\n\t\t\tignoreExcludeErrors = false;\n\t\t\tignoreExcludeErrorsDisplay = false;\n\t\t\toptionsFileRequired = false;\n\t\t\tuseAscii = false;\n\t\t\t// other variables\n\t\t\tbypassBrowserOpen = false;\n\t\t\thasWildcard = false;\n\t\t\tfilesAreIdentical = true;\n\t\t\tlineEndsMixed = false;\n\t\t\toutputEOL[0] = '\\0';\n\t\t\tprevEOL[0] = '\\0';\n\t\t\torigSuffix = \".orig\";\n\t\t\tmainDirectoryLength = 0;\n\t\t\tfilesFormatted = 0;\n\t\t\tfilesUnchanged = 0;\n\t\t\tlinesOut = 0;\n\t\t}\n\n\tpublic:     // functions\n\t\tvoid convertLineEnds(ostringstream &out, int lineEnd);\n\t\tFileEncoding detectEncoding(const char* data, size_t dataSize) const;\n\t\tvoid error() const;\n\t\tvoid error(const char* why, const char* what) const;\n\t\tvoid formatCinToCout();\n\t\tvector<string> getArgvOptions(int argc, char** argv) const;\n\t\tbool fileNameVectorIsEmpty() const;\n\t\tbool getFilesAreIdentical() const;\n\t\tint  getFilesFormatted() const;\n\t\tbool getIgnoreExcludeErrors() const;\n\t\tbool getIgnoreExcludeErrorsDisplay() const;\n\t\tbool getIsDryRun() const;\n\t\tbool getIsFormattedOnly() const;\n\t\tbool getIsQuiet() const;\n\t\tbool getIsRecursive() const;\n\t\tbool getIsVerbose() const;\n\t\tbool getLineEndsMixed() const;\n\t\tbool getNoBackup() const;\n\t\tbool getPreserveDate() const;\n\t\tstring getLanguageID() const;\n\t\tstring getNumberFormat(int num, size_t = 0) const;\n\t\tstring getNumberFormat(int num, const char* groupingArg, const char* separator) const;\n\t\tstring getOptionsFileName() const;\n\t\tstring getOrigSuffix() const;\n\t\tvoid processFiles();\n\t\tvoid processOptions(vector<string> &argvOptions);\n\t\tvoid setBypassBrowserOpen(bool state);\n\t\tvoid setIgnoreExcludeErrors(bool state);\n\t\tvoid setIgnoreExcludeErrorsAndDisplay(bool state);\n\t\tvoid setIsDryRun(bool state);\n\t\tvoid setIsFormattedOnly(bool state);\n\t\tvoid setIsQuiet(bool state);\n\t\tvoid setIsRecursive(bool state);\n\t\tvoid setIsVerbose(bool state);\n\t\tvoid setNoBackup(bool state);\n\t\tvoid setOptionsFileName(string name);\n\t\tvoid setOrigSuffix(string suffix);\n\t\tvoid setPreserveDate(bool state);\n\t\tvoid standardizePath(string &path, bool removeBeginningSeparator = false) const;\n\t\tbool stringEndsWith(const string &str, const string &suffix) const;\n\t\tvoid updateExcludeVector(string suffixParam);\n\t\tvector<string> getExcludeVector() const;\n\t\tvector<bool>   getExcludeHitsVector() const;\n\t\tvector<string> getFileNameVector() const;\n\t\tvector<string> getOptionsVector() const;\n\t\tvector<string> getFileOptionsVector() const;\n\t\tvector<string> getFileName() const;\n\n\tprivate:\t// functions\n\t\tASConsole &operator=(ASConsole &);         // not to be implemented\n\t\tvoid correctMixedLineEnds(ostringstream &out);\n\t\tvoid formatFile(const string &fileName_);\n\t\tstring getCurrentDirectory(const string &fileName_) const;\n\t\tvoid getFileNames(const string &directory, const string &wildcard);\n\t\tvoid getFilePaths(string &filePath);\n\t\tstring getParam(const string &arg, const char* op);\n\t\tvoid initializeOutputEOL(LineEndFormat lineEndFormat);\n\t\tbool isOption(const string &arg, const char* op);\n\t\tbool isOption(const string &arg, const char* op1, const char* op2);\n\t\tbool isParamOption(const string &arg, const char* option);\n\t\tbool isPathExclued(const string &subPath);\n\t\tvoid launchDefaultBrowser(const char* filePathIn = NULL) const;\n\t\tvoid printHelp() const;\n\t\tvoid printMsg(const char* msg, const string &data) const;\n\t\tvoid printSeparatingLine() const;\n\t\tvoid printVerboseHeader() const;\n\t\tvoid printVerboseStats(clock_t startTime) const;\n\t\tFileEncoding readFile(const string &fileName_, stringstream &in) const;\n\t\tvoid removeFile(const char* fileName_, const char* errMsg) const;\n\t\tvoid renameFile(const char* oldFileName, const char* newFileName, const char* errMsg) const;\n\t\tvoid setOutputEOL(LineEndFormat lineEndFormat, const char* currentEOL);\n\t\tvoid sleep(int seconds) const;\n\t\tint  waitForRemove(const char* oldFileName) const;\n\t\tint  wildcmp(const char* wild, const char* data) const;\n\t\tvoid writeFile(const string &fileName_, FileEncoding encoding, ostringstream &out) const;\n#ifdef _WIN32\n\t\tvoid displayLastError();\n#endif\n};\n#else\t// ASTYLE_LIB\n\n//----------------------------------------------------------------------------\n// ASLibrary class for library build\n//----------------------------------------------------------------------------\n\nclass ASLibrary\n{\n\tpublic:\n\t\tASLibrary() {}\n\t\tvirtual ~ASLibrary() {}\n\t\t// virtual functions are mocked in testing\n\t\tutf16_t* formatUtf16(const utf16_t*, const utf16_t*, fpError, fpAlloc) const;\n\t\tvirtual utf16_t* convertUtf8ToUtf16(const char* utf8In, fpAlloc fpMemoryAlloc) const;\n\t\tvirtual char* convertUtf16ToUtf8(const utf16_t* pSourceIn) const;\n\n\tprivate:\n\t\tstatic char* STDCALL tempMemoryAllocation(unsigned long memoryNeeded);\n\n\tprivate:\n\t\tUtf8_16 utf8_16;            // utf8/16 conversion methods\n};\n\n#endif\t// ASTYLE_LIB\n\n//----------------------------------------------------------------------------\n\n}   // end of namespace astyle\n\n//----------------------------------------------------------------------------\n// declarations for java native interface (JNI) build\n// they are called externally and are NOT part of the namespace\n//----------------------------------------------------------------------------\n#ifdef ASTYLE_JNI\nvoid  STDCALL javaErrorHandler(int errorNumber, const char* errorMessage);\nchar* STDCALL javaMemoryAlloc(unsigned long memoryNeeded);\n// the following function names are constructed from method names in the calling java program\nextern \"C\" EXPORT\njstring STDCALL Java_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass);\nextern \"C\" EXPORT\njstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env,\n                                                jobject obj,\n                                                jstring textInJava,\n                                                jstring optionsJava);\n#endif //  ASTYLE_JNI\n\n//----------------------------------------------------------------------------\n// declarations for UTF-16 interface\n// they are called externally and are NOT part of the namespace\n//----------------------------------------------------------------------------\n#ifdef ASTYLE_LIB\nextern \"C\" EXPORT\nutf16_t* STDCALL AStyleMainUtf16(const utf16_t* pSourceIn,\n                                 const utf16_t* pOptions,\n                                 fpError fpErrorHandler,\n                                 fpAlloc fpMemoryAlloc);\n#endif\t// ASTYLE_LIB\n\n//-----------------------------------------------------------------------------\n// declarations for standard DLL interface\n// they are called externally and are NOT part of the namespace\n//-----------------------------------------------------------------------------\n#ifdef ASTYLE_LIB\nextern \"C\" EXPORT char* STDCALL AStyleMain(const char* sourceIn,\n                                           const char* optionsIn,\n                                           fpError errorHandler,\n                                           fpAlloc memoryAlloc);\nextern \"C\" EXPORT const char* STDCALL AStyleGetVersion(void);\n#endif\t// ASTYLE_LIB\n\n//-----------------------------------------------------------------------------\n\n#endif // closes ASTYLE_MAIN_H\n"
  },
  {
    "path": "3rdpart/backward/backward.cpp",
    "content": "// Pick your poison.\n//\n// On GNU/Linux, you have few choices to get the most out of your stack trace.\n//\n// By default you get:\n//\t- object filename\n//\t- function name\n//\n// In order to add:\n//\t- source filename\n//\t- line and column numbers\n//\t- source code snippet (assuming the file is accessible)\n\n// Install one of the following library then uncomment one of the macro (or\n// better, add the detection of the lib and the macro definition in your build\n// system)\n\n// - apt-get install libdw-dev ...\n// - g++/clang++ -ldw ...\n// #define BACKWARD_HAS_DW 1\n\n// - apt-get install binutils-dev ...\n// - g++/clang++ -lbfd ...\n// #define BACKWARD_HAS_BFD 1\n\n#include \"backward.hpp\"\n\nnamespace backward {\n\nbackward::SignalHandling sh;\n\n} // namespace backward\n"
  },
  {
    "path": "3rdpart/backward/backward.hpp",
    "content": "/*\n * backward.hpp\n * Copyright 2013 Google Inc. All Rights Reserved.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n#ifndef H_6B9572DA_A64B_49E6_B234_051480991C89\n#define H_6B9572DA_A64B_49E6_B234_051480991C89\n\n#ifndef __cplusplus\n#\terror \"It's not going to compile without a C++ compiler...\"\n#endif\n\n#if\t  defined(BACKWARD_CXX11)\n#elif defined(BACKWARD_CXX98)\n#else\n#\tif __cplusplus >= 201103L\n#\t\tdefine BACKWARD_CXX11\n#\t\tdefine BACKWARD_ATLEAST_CXX11\n#\t\tdefine BACKWARD_ATLEAST_CXX98\n#\telse\n#\t\tdefine BACKWARD_CXX98\n#\t\tdefine BACKWARD_ATLEAST_CXX98\n#\tendif\n#endif\n\n// You can define one of the following (or leave it to the auto-detection):\n//\n// #define BACKWARD_SYSTEM_LINUX\n//\t- specialization for linux\n//\n// #define BACKWARD_SYSTEM_DARWIN\n//\t- specialization for Mac OS X 10.5 and later.\n//\n// #define BACKWARD_SYSTEM_UNKNOWN\n//\t- placebo implementation, does nothing.\n//\n#if   defined(BACKWARD_SYSTEM_LINUX)\n#elif defined(BACKWARD_SYSTEM_DARWIN)\n#elif defined(BACKWARD_SYSTEM_UNKNOWN)\n#else\n#\tif defined(__linux)\n#\t\tdefine BACKWARD_SYSTEM_LINUX\n#\telif defined(__APPLE__)\n#\t\tdefine BACKWARD_SYSTEM_DARWIN\n#\telse\n#\t\tdefine BACKWARD_SYSTEM_UNKNOWN\n#\tendif\n#endif\n\n#include <algorithm>\n#include <cctype>\n#include <cstdio>\n#include <cstdlib>\n#include <cstring>\n#include <fstream>\n#include <iomanip>\n#include <iostream>\n#include <new>\n#include <sstream>\n#include <streambuf>\n#include <string>\n#include <vector>\n#include <limits>\n\n#if defined(BACKWARD_SYSTEM_LINUX)\n\n// On linux, backtrace can back-trace or \"walk\" the stack using the following\n// libraries:\n//\n// #define BACKWARD_HAS_UNWIND 1\n//  - unwind comes from libgcc, but I saw an equivalent inside clang itself.\n//  - with unwind, the stacktrace is as accurate as it can possibly be, since\n//  this is used by the C++ runtine in gcc/clang for stack unwinding on\n//  exception.\n//  - normally libgcc is already linked to your program by default.\n//\n// #define BACKWARD_HAS_BACKTRACE == 1\n//  - backtrace seems to be a little bit more portable than libunwind, but on\n//  linux, it uses unwind anyway, but abstract away a tiny information that is\n//  sadly really important in order to get perfectly accurate stack traces.\n//  - backtrace is part of the (e)glib library.\n//\n// The default is:\n// #define BACKWARD_HAS_UNWIND == 1\n//\n// Note that only one of the define should be set to 1 at a time.\n//\n#\tif   BACKWARD_HAS_UNWIND == 1\n#\telif BACKWARD_HAS_BACKTRACE == 1\n#\telse\n#\t\tundef  BACKWARD_HAS_UNWIND\n#\t\tdefine BACKWARD_HAS_UNWIND 1\n#\t\tundef  BACKWARD_HAS_BACKTRACE\n#\t\tdefine BACKWARD_HAS_BACKTRACE 0\n#\tendif\n\n// On linux, backward can extract detailed information about a stack trace\n// using one of the following libraries:\n//\n// #define BACKWARD_HAS_DW 1\n//  - libdw gives you the most juicy details out of your stack traces:\n//    - object filename\n//    - function name\n//    - source filename\n//\t  - line and column numbers\n//\t  - source code snippet (assuming the file is accessible)\n//\t  - variables name and values (if not optimized out)\n//  - You need to link with the lib \"dw\":\n//    - apt-get install libdw-dev\n//    - g++/clang++ -ldw ...\n//\n// #define BACKWARD_HAS_BFD 1\n//  - With libbfd, you get a fair amount of details:\n//    - object filename\n//    - function name\n//    - source filename\n//\t  - line numbers\n//\t  - source code snippet (assuming the file is accessible)\n//  - You need to link with the lib \"bfd\":\n//    - apt-get install binutils-dev\n//    - g++/clang++ -lbfd ...\n//\n// #define BACKWARD_HAS_BACKTRACE_SYMBOL 1\n//  - backtrace provides minimal details for a stack trace:\n//    - object filename\n//    - function name\n//  - backtrace is part of the (e)glib library.\n//\n// The default is:\n// #define BACKWARD_HAS_BACKTRACE_SYMBOL == 1\n//\n// Note that only one of the define should be set to 1 at a time.\n//\n#\tif   BACKWARD_HAS_DW == 1\n#\telif BACKWARD_HAS_BFD == 1\n#\telif BACKWARD_HAS_BACKTRACE_SYMBOL == 1\n#\telse\n#\t\tundef  BACKWARD_HAS_DW\n#\t\tdefine BACKWARD_HAS_DW 0\n#\t\tundef  BACKWARD_HAS_BFD\n#\t\tdefine BACKWARD_HAS_BFD 0\n#\t\tundef  BACKWARD_HAS_BACKTRACE_SYMBOL\n#\t\tdefine BACKWARD_HAS_BACKTRACE_SYMBOL 1\n#\tendif\n\n#\tinclude <cxxabi.h>\n#\tinclude <fcntl.h>\n#\tinclude <link.h>\n#\tinclude <sys/stat.h>\n#\tinclude <syscall.h>\n#\tinclude <unistd.h>\n#\tinclude <signal.h>\n\n#\tif BACKWARD_HAS_BFD == 1\n//              NOTE: defining PACKAGE{,_VERSION} is required before including\n//                    bfd.h on some platforms, see also:\n//                    https://sourceware.org/bugzilla/show_bug.cgi?id=14243\n#               ifndef PACKAGE\n#                       define PACKAGE\n#               endif\n#               ifndef PACKAGE_VERSION\n#                       define PACKAGE_VERSION\n#               endif\n#\t\tinclude <bfd.h>\n#\t\tifndef _GNU_SOURCE\n#\t\t\tdefine _GNU_SOURCE\n#\t\t\tinclude <dlfcn.h>\n#\t\t\tundef _GNU_SOURCE\n#\t\telse\n#\t\t\tinclude <dlfcn.h>\n#\t\tendif\n#\tendif\n\n#\tif BACKWARD_HAS_DW == 1\n#\t\tinclude <elfutils/libdw.h>\n#\t\tinclude <elfutils/libdwfl.h>\n#\t\tinclude <dwarf.h>\n#\tendif\n\n#\tif (BACKWARD_HAS_BACKTRACE == 1) || (BACKWARD_HAS_BACKTRACE_SYMBOL == 1)\n\t\t// then we shall rely on backtrace\n#\t\tinclude <execinfo.h>\n#\tendif\n\n#endif // defined(BACKWARD_SYSTEM_LINUX)\n\n#if defined(BACKWARD_SYSTEM_DARWIN)\n// On Darwin, backtrace can back-trace or \"walk\" the stack using the following\n// libraries:\n//\n// #define BACKWARD_HAS_UNWIND 1\n//  - unwind comes from libgcc, but I saw an equivalent inside clang itself.\n//  - with unwind, the stacktrace is as accurate as it can possibly be, since\n//  this is used by the C++ runtine in gcc/clang for stack unwinding on\n//  exception.\n//  - normally libgcc is already linked to your program by default.\n//\n// #define BACKWARD_HAS_BACKTRACE == 1\n//  - backtrace is available by default, though it does not produce as much information\n//  as another library might.\n//\n// The default is:\n// #define BACKWARD_HAS_UNWIND == 1\n//\n// Note that only one of the define should be set to 1 at a time.\n//\n#\tif   BACKWARD_HAS_UNWIND == 1\n#\telif BACKWARD_HAS_BACKTRACE == 1\n#\telse\n#\t\tundef  BACKWARD_HAS_UNWIND\n#\t\tdefine BACKWARD_HAS_UNWIND 1\n#\t\tundef  BACKWARD_HAS_BACKTRACE\n#\t\tdefine BACKWARD_HAS_BACKTRACE 0\n#\tendif\n\n// On Darwin, backward can extract detailed information about a stack trace\n// using one of the following libraries:\n//\n// #define BACKWARD_HAS_BACKTRACE_SYMBOL 1\n//  - backtrace provides minimal details for a stack trace:\n//    - object filename\n//    - function name\n//\n// The default is:\n// #define BACKWARD_HAS_BACKTRACE_SYMBOL == 1\n//\n#\tif BACKWARD_HAS_BACKTRACE_SYMBOL == 1\n#\telse\n#\t\tundef  BACKWARD_HAS_BACKTRACE_SYMBOL\n#\t\tdefine BACKWARD_HAS_BACKTRACE_SYMBOL 1\n#\tendif\n\n#\tinclude <cxxabi.h>\n#\tinclude <fcntl.h>\n#\tinclude <pthread.h>\n#\tinclude <sys/stat.h>\n#\tinclude <unistd.h>\n#\tinclude <signal.h>\n\n#\tif (BACKWARD_HAS_BACKTRACE == 1) || (BACKWARD_HAS_BACKTRACE_SYMBOL == 1)\n#\t\tinclude <execinfo.h>\n#\tendif\n#endif // defined(BACKWARD_SYSTEM_DARWIN)\n\n#if BACKWARD_HAS_UNWIND == 1\n\n#\tinclude <unwind.h>\n// while gcc's unwind.h defines something like that:\n//  extern _Unwind_Ptr _Unwind_GetIP (struct _Unwind_Context *);\n//  extern _Unwind_Ptr _Unwind_GetIPInfo (struct _Unwind_Context *, int *);\n//\n// clang's unwind.h defines something like this:\n//  uintptr_t _Unwind_GetIP(struct _Unwind_Context* __context);\n//\n// Even if the _Unwind_GetIPInfo can be linked to, it is not declared, worse we\n// cannot just redeclare it because clang's unwind.h doesn't define _Unwind_Ptr\n// anyway.\n//\n// Luckily we can play on the fact that the guard macros have a different name:\n#ifdef __CLANG_UNWIND_H\n// In fact, this function still comes from libgcc (on my different linux boxes,\n// clang links against libgcc).\n#\tinclude <inttypes.h>\nextern \"C\" uintptr_t _Unwind_GetIPInfo(_Unwind_Context*, int*);\n#endif\n\n#endif // BACKWARD_HAS_UNWIND == 1\n\n#ifdef BACKWARD_ATLEAST_CXX11\n#\tinclude <unordered_map>\n#\tinclude <utility> // for std::swap\n\tnamespace backward {\n\tnamespace details {\n\t\ttemplate <typename K, typename V>\n\t\tstruct hashtable {\n\t\t\ttypedef std::unordered_map<K, V> type;\n\t\t};\n\t\tusing std::move;\n\t} // namespace details\n\t} // namespace backward\n#else // NOT BACKWARD_ATLEAST_CXX11\n#\tinclude <map>\n\tnamespace backward {\n\tnamespace details {\n\t\ttemplate <typename K, typename V>\n\t\tstruct hashtable {\n\t\t\ttypedef std::map<K, V> type;\n\t\t};\n\t\ttemplate <typename T>\n\t\t\tconst T& move(const T& v) { return v; }\n\t\ttemplate <typename T>\n\t\t\tT& move(T& v) { return v; }\n\t} // namespace details\n\t} // namespace backward\n#endif // BACKWARD_ATLEAST_CXX11\n\nnamespace backward {\n\nnamespace system_tag {\n\tstruct linux_tag; // seems that I cannot call that \"linux\" because the name\n\t// is already defined... so I am adding _tag everywhere.\n\tstruct darwin_tag;\n\tstruct unknown_tag;\n\n#if   defined(BACKWARD_SYSTEM_LINUX)\n\ttypedef linux_tag current_tag;\n#elif defined(BACKWARD_SYSTEM_DARWIN)\n\ttypedef darwin_tag current_tag;\n#elif defined(BACKWARD_SYSTEM_UNKNOWN)\n\ttypedef unknown_tag current_tag;\n#else\n#\terror \"May I please get my system defines?\"\n#endif\n} // namespace system_tag\n\n\nnamespace trace_resolver_tag {\n#if defined(BACKWARD_SYSTEM_LINUX)\n\tstruct libdw;\n\tstruct libbfd;\n\tstruct backtrace_symbol;\n\n#\tif   BACKWARD_HAS_DW == 1\n\t\ttypedef libdw current;\n#\telif BACKWARD_HAS_BFD == 1\n\t\ttypedef libbfd current;\n#\telif BACKWARD_HAS_BACKTRACE_SYMBOL == 1\n\t\ttypedef backtrace_symbol current;\n#\telse\n#\t\terror \"You shall not pass, until you know what you want.\"\n#\tendif\n#elif defined(BACKWARD_SYSTEM_DARWIN)\n\tstruct backtrace_symbol;\n\n#\tif BACKWARD_HAS_BACKTRACE_SYMBOL == 1\n\t\ttypedef backtrace_symbol current;\n#\telse\n#\t\terror \"You shall not pass, until you know what you want.\"\n#\tendif\n#endif\n} // namespace trace_resolver_tag\n\n\nnamespace details {\n\ntemplate <typename T>\n\tstruct rm_ptr { typedef T type; };\n\ntemplate <typename T>\n\tstruct rm_ptr<T*> { typedef T type; };\n\ntemplate <typename T>\n\tstruct rm_ptr<const T*> { typedef const T type; };\n\ntemplate <typename R, typename T, R (*F)(T)>\nstruct deleter {\n\ttemplate <typename U>\n\t\tvoid operator()(U& ptr) const {\n\t\t\t(*F)(ptr);\n\t\t}\n};\n\ntemplate <typename T>\nstruct default_delete {\n\tvoid operator()(T& ptr) const {\n\t\tdelete ptr;\n\t}\n};\n\ntemplate <typename T, typename Deleter = deleter<void, void*, &::free> >\nclass handle {\n\tstruct dummy;\n\tT    _val;\n\tbool _empty;\n\n#ifdef BACKWARD_ATLEAST_CXX11\n\thandle(const handle&) = delete;\n\thandle& operator=(const handle&) = delete;\n#endif\n\npublic:\n\t~handle() {\n\t\tif (!_empty) {\n\t\t\tDeleter()(_val);\n\t\t}\n\t}\n\n\texplicit handle(): _val(), _empty(true) {}\n\texplicit handle(T val): _val(val), _empty(false) { if(!_val) _empty = true; }\n\n#ifdef BACKWARD_ATLEAST_CXX11\n\thandle(handle&& from): _empty(true) {\n\t\tswap(from);\n\t}\n\thandle& operator=(handle&& from) {\n\t\tswap(from); return *this;\n\t}\n#else\n\texplicit handle(const handle& from): _empty(true) {\n\t\t// some sort of poor man's move semantic.\n\t\tswap(const_cast<handle&>(from));\n\t}\n\thandle& operator=(const handle& from) {\n\t\t// some sort of poor man's move semantic.\n\t\tswap(const_cast<handle&>(from)); return *this;\n\t}\n#endif\n\n\tvoid reset(T new_val) {\n\t\thandle tmp(new_val);\n\t\tswap(tmp);\n\t}\n\toperator const dummy*() const {\n\t\tif (_empty) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn reinterpret_cast<const dummy*>(_val);\n\t}\n\tT get() {\n\t\treturn _val;\n\t}\n\tT release() {\n\t\t_empty = true;\n\t\treturn _val;\n\t}\n\tvoid swap(handle& b) {\n\t\tusing std::swap;\n\t\tswap(b._val, _val); // can throw, we are safe here.\n\t\tswap(b._empty, _empty); // should not throw: if you cannot swap two\n\t\t// bools without throwing... It's a lost cause anyway!\n\t}\n\n\tT operator->() { return _val; }\n\tconst T operator->() const { return _val; }\n\n\ttypedef typename rm_ptr<T>::type& ref_t;\n\ttypedef const typename rm_ptr<T>::type& const_ref_t;\n\tref_t operator*() { return *_val; }\n\tconst_ref_t operator*() const { return *_val; }\n\tref_t operator[](size_t idx) { return _val[idx]; }\n\n\t// Watch out, we've got a badass over here\n\tT* operator&() {\n\t\t_empty = false;\n\t\treturn &_val;\n\t}\n};\n\n// Default demangler implementation (do nothing).\ntemplate <typename TAG>\nstruct demangler_impl {\n\tstatic std::string demangle(const char* funcname) {\n\t\treturn funcname;\n\t}\n};\n\n#if defined(BACKWARD_SYSTEM_LINUX) || defined(BACKWARD_SYSTEM_DARWIN)\n\ntemplate <>\nstruct demangler_impl<system_tag::current_tag> {\n\tdemangler_impl(): _demangle_buffer_length(0) {}\n\n\tstd::string demangle(const char* funcname) {\n\t\tusing namespace details;\n\t\tchar* result = abi::__cxa_demangle(funcname,\n\t\t\t_demangle_buffer.release(), &_demangle_buffer_length, 0);\n\t\tif(result) {\n\t\t\t_demangle_buffer.reset(result);\n\t\t\treturn result;\n\t\t}\n\t\treturn funcname;\n\t}\n\nprivate:\n\tdetails::handle<char*> _demangle_buffer;\n\tsize_t                 _demangle_buffer_length;\n};\n\n#endif // BACKWARD_SYSTEM_LINUX || BACKWARD_SYSTEM_DARWIN\n\nstruct demangler:\n\tpublic demangler_impl<system_tag::current_tag> {};\n\n} // namespace details\n\n/*************** A TRACE ***************/\n\nstruct Trace {\n\tvoid*    addr;\n\tsize_t   idx;\n\n\tTrace():\n\t\taddr(0), idx(0) {}\n\n\texplicit Trace(void* _addr, size_t _idx):\n\t\taddr(_addr), idx(_idx) {}\n};\n\nstruct ResolvedTrace: public Trace {\n\n\tstruct SourceLoc {\n\t\tstd::string function;\n\t\tstd::string filename;\n\t\tunsigned    line;\n\t\tunsigned    col;\n\n\t\tSourceLoc(): line(0), col(0) {}\n\n\t\tbool operator==(const SourceLoc& b) const {\n\t\t\treturn function == b.function\n\t\t\t\t&& filename == b.filename\n\t\t\t\t&& line == b.line\n\t\t\t\t&& col == b.col;\n\t\t}\n\n\t\tbool operator!=(const SourceLoc& b) const {\n\t\t\treturn !(*this == b);\n\t\t}\n\t};\n\n\t// In which binary object this trace is located.\n\tstd::string                    object_filename;\n\n\t// The function in the object that contain the trace. This is not the same\n\t// as source.function which can be an function inlined in object_function.\n\tstd::string                    object_function;\n\n\t// The source location of this trace. It is possible for filename to be\n\t// empty and for line/col to be invalid (value 0) if this information\n\t// couldn't be deduced, for example if there is no debug information in the\n\t// binary object.\n\tSourceLoc                      source;\n\n\t// An optionals list of \"inliners\". All the successive sources location\n\t// from where the source location of the trace (the attribute right above)\n\t// is inlined. It is especially useful when you compiled with optimization.\n\ttypedef std::vector<SourceLoc> source_locs_t;\n\tsource_locs_t                  inliners;\n\n\tResolvedTrace():\n\t\tTrace() {}\n\tResolvedTrace(const Trace& mini_trace):\n\t\tTrace(mini_trace) {}\n};\n\n/*************** STACK TRACE ***************/\n\n// default implemention.\ntemplate <typename TAG>\nclass StackTraceImpl {\npublic:\n\tsize_t size() const { return 0; }\n\tTrace operator[](size_t) { return Trace(); }\n\tsize_t load_here(size_t=0) { return 0; }\n\tsize_t load_from(void*, size_t=0) { return 0; }\n\tsize_t thread_id() const { return 0; }\n\tvoid skip_n_firsts(size_t) { }\n};\n\nclass StackTraceImplBase {\npublic:\n\tStackTraceImplBase(): _thread_id(0), _skip(0) {}\n\n\tsize_t thread_id() const {\n\t\treturn _thread_id;\n\t}\n\n\tvoid skip_n_firsts(size_t n) { _skip = n; }\n\nprotected:\n\tvoid load_thread_info() {\n#ifdef BACKWARD_SYSTEM_LINUX\n\t\t_thread_id = (size_t)syscall(SYS_gettid);\n\t\tif (_thread_id == (size_t) getpid()) {\n\t\t\t// If the thread is the main one, let's hide that.\n\t\t\t// I like to keep little secret sometimes.\n\t\t\t_thread_id = 0;\n\t\t}\n#elif defined(BACKWARD_SYSTEM_DARWIN)\n\t\t_thread_id = reinterpret_cast<size_t>(pthread_self());\n\t\tif (pthread_main_np() == 1) {\n\t\t\t// If the thread is the main one, let's hide that.\n\t\t\t_thread_id = 0;\n\t\t}\n#endif\n\t}\n\n\tsize_t skip_n_firsts() const { return _skip; }\n\nprivate:\n\tsize_t _thread_id;\n\tsize_t _skip;\n};\n\nclass StackTraceImplHolder: public StackTraceImplBase {\npublic:\n\tsize_t size() const {\n\t\treturn _stacktrace.size() ? _stacktrace.size() - skip_n_firsts() : 0;\n\t}\n\tTrace operator[](size_t idx) const {\n\t\tif (idx >= size()) {\n\t\t\treturn Trace();\n\t\t}\n\t\treturn Trace(_stacktrace[idx + skip_n_firsts()], idx);\n\t}\n\tvoid* const* begin() const {\n\t\tif (size()) {\n\t\t\treturn &_stacktrace[skip_n_firsts()];\n\t\t}\n\t\treturn 0;\n\t}\n\nprotected:\n\tstd::vector<void*> _stacktrace;\n};\n\n\n#if BACKWARD_HAS_UNWIND == 1\n\nnamespace details {\n\ntemplate <typename F>\nclass Unwinder {\npublic:\n\tsize_t operator()(F& f, size_t depth) {\n\t\t_f = &f;\n\t\t_index = -1;\n\t\t_depth = depth;\n\t\t_Unwind_Backtrace(&this->backtrace_trampoline, this);\n\t\treturn _index;\n\t}\n\nprivate:\n\tF*      _f;\n\tssize_t _index;\n\tsize_t  _depth;\n\n\tstatic _Unwind_Reason_Code backtrace_trampoline(\n\t\t\t_Unwind_Context* ctx, void *self) {\n\t\treturn ((Unwinder*)self)->backtrace(ctx);\n\t}\n\n\t_Unwind_Reason_Code backtrace(_Unwind_Context* ctx) {\n\t\tif (_index >= 0 && static_cast<size_t>(_index) >= _depth)\n\t\t\treturn _URC_END_OF_STACK;\n\n\t\tint ip_before_instruction = 0;\n\t\tuintptr_t ip = _Unwind_GetIPInfo(ctx, &ip_before_instruction);\n\n\t\tif (!ip_before_instruction) {\n\t\t\t// calculating 0-1 for unsigned, looks like a possible bug to sanitiziers, so let's do it explicitly:\n\t\t\tif (ip==0) {\n\t\t\t\tip = std::numeric_limits<uintptr_t>::max(); // set it to 0xffff... (as from casting 0-1)\n\t\t\t} else {\n\t\t\t\tip -= 1; // else just normally decrement it (no overflow/underflow will happen)\n\t\t\t}\n\t\t}\n\n\t\tif (_index >= 0) { // ignore first frame.\n\t\t\t(*_f)(_index, (void*)ip);\n\t\t}\n\t\t_index += 1;\n\t\treturn _URC_NO_REASON;\n\t}\n};\n\ntemplate <typename F>\nsize_t unwind(F f, size_t depth) {\n\tUnwinder<F> unwinder;\n\treturn unwinder(f, depth);\n}\n\n} // namespace details\n\n\ntemplate <>\nclass StackTraceImpl<system_tag::current_tag>: public StackTraceImplHolder {\npublic:\n\t__attribute__ ((noinline)) // TODO use some macro\n\tsize_t load_here(size_t depth=32) {\n\t\tload_thread_info();\n\t\tif (depth == 0) {\n\t\t\treturn 0;\n\t\t}\n\t\t_stacktrace.resize(depth);\n\t\tsize_t trace_cnt = details::unwind(callback(*this), depth);\n\t\t_stacktrace.resize(trace_cnt);\n\t\tskip_n_firsts(0);\n\t\treturn size();\n\t}\n\tsize_t load_from(void* addr, size_t depth=32) {\n\t\tload_here(depth + 8);\n\n\t\tfor (size_t i = 0; i < _stacktrace.size(); ++i) {\n\t\t\tif (_stacktrace[i] == addr) {\n\t\t\t\tskip_n_firsts(i);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t_stacktrace.resize(std::min(_stacktrace.size(),\n\t\t\t\t\tskip_n_firsts() + depth));\n\t\treturn size();\n\t}\n\nprivate:\n\tstruct callback {\n\t\tStackTraceImpl& self;\n\t\tcallback(StackTraceImpl& _self): self(_self) {}\n\n\t\tvoid operator()(size_t idx, void* addr) {\n\t\t\tself._stacktrace[idx] = addr;\n\t\t}\n\t};\n};\n\n\n#else // BACKWARD_HAS_UNWIND == 0\n\ntemplate <>\nclass StackTraceImpl<system_tag::current_tag>: public StackTraceImplHolder {\npublic:\n\t__attribute__ ((noinline)) // TODO use some macro\n\tsize_t load_here(size_t depth=32) {\n\t\tload_thread_info();\n\t\tif (depth == 0) {\n\t\t\treturn 0;\n\t\t}\n\t\t_stacktrace.resize(depth + 1);\n\t\tsize_t trace_cnt = backtrace(&_stacktrace[0], _stacktrace.size());\n\t\t_stacktrace.resize(trace_cnt);\n\t\tskip_n_firsts(1);\n\t\treturn size();\n\t}\n\n\tsize_t load_from(void* addr, size_t depth=32) {\n\t\tload_here(depth + 8);\n\n\t\tfor (size_t i = 0; i < _stacktrace.size(); ++i) {\n\t\t\tif (_stacktrace[i] == addr) {\n\t\t\t\tskip_n_firsts(i);\n\t\t\t\t_stacktrace[i] = (void*)( (uintptr_t)_stacktrace[i] + 1);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t_stacktrace.resize(std::min(_stacktrace.size(),\n\t\t\t\t\tskip_n_firsts() + depth));\n\t\treturn size();\n\t}\n};\n\n#endif // BACKWARD_HAS_UNWIND\n\nclass StackTrace:\n\tpublic StackTraceImpl<system_tag::current_tag> {};\n\n/*************** TRACE RESOLVER ***************/\n\ntemplate <typename TAG>\nclass TraceResolverImpl;\n\n#ifdef BACKWARD_SYSTEM_UNKNOWN\n\ntemplate <>\nclass TraceResolverImpl<system_tag::unknown_tag> {\npublic:\n\ttemplate <class ST>\n\t\tvoid load_stacktrace(ST&) {}\n\tResolvedTrace resolve(ResolvedTrace t) {\n\t\treturn t;\n\t}\n};\n\n#endif\n\nclass TraceResolverImplBase {\nprotected:\n\tstd::string demangle(const char* funcname) {\n\t\treturn _demangler.demangle(funcname);\n\t}\n\nprivate:\n\tdetails::demangler _demangler;\n};\n\n#ifdef BACKWARD_SYSTEM_LINUX\n\ntemplate <typename STACKTRACE_TAG>\nclass TraceResolverLinuxImpl;\n\n#if BACKWARD_HAS_BACKTRACE_SYMBOL == 1\n\ntemplate <>\nclass TraceResolverLinuxImpl<trace_resolver_tag::backtrace_symbol>:\n\tpublic TraceResolverImplBase {\npublic:\n\ttemplate <class ST>\n\t\tvoid load_stacktrace(ST& st) {\n\t\t\tusing namespace details;\n\t\t\tif (st.size() == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_symbols.reset(\n\t\t\t\t\tbacktrace_symbols(st.begin(), (int)st.size())\n\t\t\t\t\t);\n\t\t}\n\n\tResolvedTrace resolve(ResolvedTrace trace) {\n\t\tchar* filename = _symbols[trace.idx];\n\t\tchar* funcname = filename;\n\t\twhile (*funcname && *funcname != '(') {\n\t\t\tfuncname += 1;\n\t\t}\n\t\ttrace.object_filename.assign(filename, funcname); // ok even if funcname is the ending \\0 (then we assign entire string)\n\n\t\tif (*funcname) { // if it's not end of string (e.g. from last frame ip==0)\n\t\t\tfuncname += 1;\n\t\t\tchar* funcname_end = funcname;\n\t\t\twhile (*funcname_end && *funcname_end != ')' && *funcname_end != '+') {\n\t\t\t\tfuncname_end += 1;\n\t\t\t}\n\t\t\t*funcname_end = '\\0';\n\t\t\ttrace.object_function = this->demangle(funcname);\n\t\t\ttrace.source.function = trace.object_function; // we cannot do better.\n\t\t}\n\t\treturn trace;\n\t}\n\nprivate:\n\tdetails::handle<char**> _symbols;\n};\n\n#endif // BACKWARD_HAS_BACKTRACE_SYMBOL == 1\n\n#if BACKWARD_HAS_BFD == 1\n\ntemplate <>\nclass TraceResolverLinuxImpl<trace_resolver_tag::libbfd>:\n\tpublic TraceResolverImplBase {\n\tstatic std::string read_symlink(std::string const & symlink_path) {\n\t\tstd::string path;\n\t\tpath.resize(100);\n\n\t\twhile(true) {\n\t\t\tssize_t len = ::readlink(symlink_path.c_str(), &*path.begin(), path.size());\n\t\t\tif(len < 0) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\t\t\tif ((size_t)len == path.size()) {\n\t\t\t\tpath.resize(path.size() * 2);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tpath.resize(len);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn path;\n\t}\npublic:\n\tTraceResolverLinuxImpl(): _bfd_loaded(false) {}\n\n\ttemplate <class ST>\n\t\tvoid load_stacktrace(ST&) {}\n\n\tResolvedTrace resolve(ResolvedTrace trace) {\n\t\tDl_info symbol_info;\n\n\t\t// trace.addr is a virtual address in memory pointing to some code.\n\t\t// Let's try to find from which loaded object it comes from.\n\t\t// The loaded object can be yourself btw.\n\t\tif (!dladdr(trace.addr, &symbol_info)) {\n\t\t\treturn trace; // dat broken trace...\n\t\t}\n\n\t\tstd::string argv0;\n\t\t{\n\t\t\tstd::ifstream ifs(\"/proc/self/cmdline\");\n\t\t\tstd::getline(ifs, argv0, '\\0');\n\t\t}\n\t\tstd::string tmp;\n\t\tif(symbol_info.dli_fname == argv0) {\n\t\t\ttmp = read_symlink(\"/proc/self/exe\");\n\t\t\tsymbol_info.dli_fname = tmp.c_str();\n\t\t}\n\n\t\t// Now we get in symbol_info:\n\t\t// .dli_fname:\n\t\t//\t\tpathname of the shared object that contains the address.\n\t\t// .dli_fbase:\n\t\t//\t\twhere the object is loaded in memory.\n\t\t// .dli_sname:\n\t\t//\t\tthe name of the nearest symbol to trace.addr, we expect a\n\t\t//\t\tfunction name.\n\t\t// .dli_saddr:\n\t\t//\t\tthe exact address corresponding to .dli_sname.\n\n\t\tif (symbol_info.dli_sname) {\n\t\t\ttrace.object_function = demangle(symbol_info.dli_sname);\n\t\t}\n\n\t\tif (!symbol_info.dli_fname) {\n\t\t\treturn trace;\n\t\t}\n\n\t\ttrace.object_filename = symbol_info.dli_fname;\n\t\tbfd_fileobject& fobj = load_object_with_bfd(symbol_info.dli_fname);\n\t\tif (!fobj.handle) {\n\t\t\treturn trace; // sad, we couldn't load the object :(\n\t\t}\n\n\n\t\tfind_sym_result* details_selected; // to be filled.\n\n\t\t// trace.addr is the next instruction to be executed after returning\n\t\t// from the nested stack frame. In C++ this usually relate to the next\n\t\t// statement right after the function call that leaded to a new stack\n\t\t// frame. This is not usually what you want to see when printing out a\n\t\t// stacktrace...\n\t\tfind_sym_result details_call_site = find_symbol_details(fobj,\n\t\t\t\ttrace.addr, symbol_info.dli_fbase);\n\t\tdetails_selected = &details_call_site;\n\n#if BACKWARD_HAS_UNWIND == 0\n\t\t// ...this is why we also try to resolve the symbol that is right\n\t\t// before the return address. If we are lucky enough, we will get the\n\t\t// line of the function that was called. But if the code is optimized,\n\t\t// we might get something absolutely not related since the compiler\n\t\t// can reschedule the return address with inline functions and\n\t\t// tail-call optimisation (among other things that I don't even know\n\t\t// or cannot even dream about with my tiny limited brain).\n\t\tfind_sym_result details_adjusted_call_site = find_symbol_details(fobj,\n\t\t\t\t(void*) (uintptr_t(trace.addr) - 1),\n\t\t\t\tsymbol_info.dli_fbase);\n\n\t\t// In debug mode, we should always get the right thing(TM).\n\t\tif (details_call_site.found && details_adjusted_call_site.found) {\n\t\t\t// Ok, we assume that details_adjusted_call_site is a better estimation.\n\t\t\tdetails_selected = &details_adjusted_call_site;\n\t\t\ttrace.addr = (void*) (uintptr_t(trace.addr) - 1);\n\t\t}\n\n\t\tif (details_selected == &details_call_site && details_call_site.found) {\n\t\t\t// we have to re-resolve the symbol in order to reset some\n\t\t\t// internal state in BFD... so we can call backtrace_inliners\n\t\t\t// thereafter...\n\t\t\tdetails_call_site = find_symbol_details(fobj, trace.addr,\n\t\t\t\t\tsymbol_info.dli_fbase);\n\t\t}\n#endif // BACKWARD_HAS_UNWIND\n\n\t\tif (details_selected->found) {\n\t\t\tif (details_selected->filename) {\n\t\t\t\ttrace.source.filename = details_selected->filename;\n\t\t\t}\n\t\t\ttrace.source.line = details_selected->line;\n\n\t\t\tif (details_selected->funcname) {\n\t\t\t\t// this time we get the name of the function where the code is\n\t\t\t\t// located, instead of the function were the address is\n\t\t\t\t// located. In short, if the code was inlined, we get the\n\t\t\t\t// function correspoding to the code. Else we already got in\n\t\t\t\t// trace.function.\n\t\t\t\ttrace.source.function = demangle(details_selected->funcname);\n\n\t\t\t\tif (!symbol_info.dli_sname) {\n\t\t\t\t\t// for the case dladdr failed to find the symbol name of\n\t\t\t\t\t// the function, we might as well try to put something\n\t\t\t\t\t// here.\n\t\t\t\t\ttrace.object_function = trace.source.function;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Maybe the source of the trace got inlined inside the function\n\t\t\t// (trace.source.function). Let's see if we can get all the inlined\n\t\t\t// calls along the way up to the initial call site.\n\t\t\ttrace.inliners = backtrace_inliners(fobj, *details_selected);\n\n#if 0\n\t\t\tif (trace.inliners.size() == 0) {\n\t\t\t\t// Maybe the trace was not inlined... or maybe it was and we\n\t\t\t\t// are lacking the debug information. Let's try to make the\n\t\t\t\t// world better and see if we can get the line number of the\n\t\t\t\t// function (trace.source.function) now.\n\t\t\t\t//\n\t\t\t\t// We will get the location of where the function start (to be\n\t\t\t\t// exact: the first instruction that really start the\n\t\t\t\t// function), not where the name of the function is defined.\n\t\t\t\t// This can be quite far away from the name of the function\n\t\t\t\t// btw.\n\t\t\t\t//\n\t\t\t\t// If the source of the function is the same as the source of\n\t\t\t\t// the trace, we cannot say if the trace was really inlined or\n\t\t\t\t// not.  However, if the filename of the source is different\n\t\t\t\t// between the function and the trace... we can declare it as\n\t\t\t\t// an inliner.  This is not 100% accurate, but better than\n\t\t\t\t// nothing.\n\n\t\t\t\tif (symbol_info.dli_saddr) {\n\t\t\t\t\tfind_sym_result details = find_symbol_details(fobj,\n\t\t\t\t\t\t\tsymbol_info.dli_saddr,\n\t\t\t\t\t\t\tsymbol_info.dli_fbase);\n\n\t\t\t\t\tif (details.found) {\n\t\t\t\t\t\tResolvedTrace::SourceLoc diy_inliner;\n\t\t\t\t\t\tdiy_inliner.line = details.line;\n\t\t\t\t\t\tif (details.filename) {\n\t\t\t\t\t\t\tdiy_inliner.filename = details.filename;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (details.funcname) {\n\t\t\t\t\t\t\tdiy_inliner.function = demangle(details.funcname);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tdiy_inliner.function = trace.source.function;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (diy_inliner != trace.source) {\n\t\t\t\t\t\t\ttrace.inliners.push_back(diy_inliner);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n#endif\n\t\t}\n\n\t\treturn trace;\n\t}\n\nprivate:\n\tbool                _bfd_loaded;\n\n\ttypedef details::handle<bfd*,\n\t\t\tdetails::deleter<bfd_boolean, bfd*, &bfd_close>\n\t\t\t\t> bfd_handle_t;\n\n\ttypedef details::handle<asymbol**> bfd_symtab_t;\n\n\n\tstruct bfd_fileobject {\n\t\tbfd_handle_t handle;\n\t\tbfd_vma      base_addr;\n\t\tbfd_symtab_t symtab;\n\t\tbfd_symtab_t dynamic_symtab;\n\t};\n\n\ttypedef details::hashtable<std::string, bfd_fileobject>::type\n\t\tfobj_bfd_map_t;\n\tfobj_bfd_map_t      _fobj_bfd_map;\n\n\tbfd_fileobject& load_object_with_bfd(const std::string& filename_object) {\n\t\tusing namespace details;\n\n\t\tif (!_bfd_loaded) {\n\t\t\tusing namespace details;\n\t\t\tbfd_init();\n\t\t\t_bfd_loaded = true;\n\t\t}\n\n\t\tfobj_bfd_map_t::iterator it =\n\t\t\t_fobj_bfd_map.find(filename_object);\n\t\tif (it != _fobj_bfd_map.end()) {\n\t\t\treturn it->second;\n\t\t}\n\n\t\t// this new object is empty for now.\n\t\tbfd_fileobject& r = _fobj_bfd_map[filename_object];\n\n\t\t// we do the work temporary in this one;\n\t\tbfd_handle_t bfd_handle;\n\n\t\tint fd = open(filename_object.c_str(), O_RDONLY);\n\t\tbfd_handle.reset(\n\t\t\t\tbfd_fdopenr(filename_object.c_str(), \"default\", fd)\n\t\t\t\t);\n\t\tif (!bfd_handle) {\n\t\t\tclose(fd);\n\t\t\treturn r;\n\t\t}\n\n\t\tif (!bfd_check_format(bfd_handle.get(), bfd_object)) {\n\t\t\treturn r; // not an object? You lose.\n\t\t}\n\n\t\tif ((bfd_get_file_flags(bfd_handle.get()) & HAS_SYMS) == 0) {\n\t\t\treturn r; // that's what happen when you forget to compile in debug.\n\t\t}\n\n\t\tssize_t symtab_storage_size =\n\t\t\tbfd_get_symtab_upper_bound(bfd_handle.get());\n\n\t\tssize_t dyn_symtab_storage_size =\n\t\t\tbfd_get_dynamic_symtab_upper_bound(bfd_handle.get());\n\n\t\tif (symtab_storage_size <= 0 && dyn_symtab_storage_size <= 0) {\n\t\t\treturn r; // weird, is the file is corrupted?\n\t\t}\n\n\t\tbfd_symtab_t symtab, dynamic_symtab;\n\t\tssize_t symcount = 0, dyn_symcount = 0;\n\n\t\tif (symtab_storage_size > 0) {\n\t\t\tsymtab.reset(\n\t\t\t\t\t(bfd_symbol**) malloc(symtab_storage_size)\n\t\t\t\t\t);\n\t\t\tsymcount = bfd_canonicalize_symtab(\n\t\t\t\t\tbfd_handle.get(), symtab.get()\n\t\t\t\t\t);\n\t\t}\n\n\t\tif (dyn_symtab_storage_size > 0) {\n\t\t\tdynamic_symtab.reset(\n\t\t\t\t\t(bfd_symbol**) malloc(dyn_symtab_storage_size)\n\t\t\t\t\t);\n\t\t\tdyn_symcount = bfd_canonicalize_dynamic_symtab(\n\t\t\t\t\tbfd_handle.get(), dynamic_symtab.get()\n\t\t\t\t\t);\n\t\t}\n\n\n\t\tif (symcount <= 0 && dyn_symcount <= 0) {\n\t\t\treturn r; // damned, that's a stripped file that you got there!\n\t\t}\n\n\t\tr.handle = move(bfd_handle);\n\t\tr.symtab = move(symtab);\n\t\tr.dynamic_symtab = move(dynamic_symtab);\n\t\treturn r;\n\t}\n\n\tstruct find_sym_result {\n\t\tbool found;\n\t\tconst char* filename;\n\t\tconst char* funcname;\n\t\tunsigned int line;\n\t};\n\n\tstruct find_sym_context {\n\t\tTraceResolverLinuxImpl* self;\n\t\tbfd_fileobject* fobj;\n\t\tvoid* addr;\n\t\tvoid* base_addr;\n\t\tfind_sym_result result;\n\t};\n\n\tfind_sym_result find_symbol_details(bfd_fileobject& fobj, void* addr,\n\t\t\tvoid* base_addr) {\n\t\tfind_sym_context context;\n\t\tcontext.self = this;\n\t\tcontext.fobj = &fobj;\n\t\tcontext.addr = addr;\n\t\tcontext.base_addr = base_addr;\n\t\tcontext.result.found = false;\n\t\tbfd_map_over_sections(fobj.handle.get(), &find_in_section_trampoline,\n\t\t\t\t(void*)&context);\n\t\treturn context.result;\n\t}\n\n\tstatic void find_in_section_trampoline(bfd*, asection* section,\n\t\t\tvoid* data) {\n\t\tfind_sym_context* context = static_cast<find_sym_context*>(data);\n\t\tcontext->self->find_in_section(\n\t\t\t\treinterpret_cast<bfd_vma>(context->addr),\n\t\t\t\treinterpret_cast<bfd_vma>(context->base_addr),\n\t\t\t\t*context->fobj,\n\t\t\t\tsection, context->result\n\t\t\t\t);\n\t}\n\n\tvoid find_in_section(bfd_vma addr, bfd_vma base_addr,\n\t\t\tbfd_fileobject& fobj, asection* section, find_sym_result& result)\n\t{\n\t\tif (result.found) return;\n\n\t\tif ((bfd_get_section_flags(fobj.handle.get(), section)\n\t\t\t\t\t& SEC_ALLOC) == 0)\n\t\t\treturn; // a debug section is never loaded automatically.\n\n\t\tbfd_vma sec_addr = bfd_get_section_vma(fobj.handle.get(), section);\n\t\tbfd_size_type size = bfd_get_section_size(section);\n\n\t\t// are we in the boundaries of the section?\n\t\tif (addr < sec_addr || addr >= sec_addr + size) {\n\t\t\taddr -= base_addr; // oups, a relocated object, lets try again...\n\t\t\tif (addr < sec_addr || addr >= sec_addr + size) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (!result.found && fobj.symtab) {\n\t\t\tresult.found = bfd_find_nearest_line(fobj.handle.get(), section,\n\t\t\t\t\tfobj.symtab.get(), addr - sec_addr, &result.filename,\n\t\t\t\t\t&result.funcname, &result.line);\n\t\t}\n\n\t\tif (!result.found && fobj.dynamic_symtab) {\n\t\t\tresult.found = bfd_find_nearest_line(fobj.handle.get(), section,\n\t\t\t\t\tfobj.dynamic_symtab.get(), addr - sec_addr,\n\t\t\t\t\t&result.filename, &result.funcname, &result.line);\n\t\t}\n\n\t}\n\n\tResolvedTrace::source_locs_t backtrace_inliners(bfd_fileobject& fobj,\n\t\t\tfind_sym_result previous_result) {\n\t\t// This function can be called ONLY after a SUCCESSFUL call to\n\t\t// find_symbol_details. The state is global to the bfd_handle.\n\t\tResolvedTrace::source_locs_t results;\n\t\twhile (previous_result.found) {\n\t\t\tfind_sym_result result;\n\t\t\tresult.found = bfd_find_inliner_info(fobj.handle.get(),\n\t\t\t\t\t&result.filename, &result.funcname, &result.line);\n\n\t\t\tif (result.found) /* and not (\n\t\t\t\t\t\tcstrings_eq(previous_result.filename, result.filename)\n\t\t\t\t\t\tand cstrings_eq(previous_result.funcname, result.funcname)\n\t\t\t\t\t\tand result.line == previous_result.line\n\t\t\t\t\t\t)) */ {\n\t\t\t\tResolvedTrace::SourceLoc src_loc;\n\t\t\t\tsrc_loc.line = result.line;\n\t\t\t\tif (result.filename) {\n\t\t\t\t\tsrc_loc.filename = result.filename;\n\t\t\t\t}\n\t\t\t\tif (result.funcname) {\n\t\t\t\t\tsrc_loc.function = demangle(result.funcname);\n\t\t\t\t}\n\t\t\t\tresults.push_back(src_loc);\n\t\t\t}\n\t\t\tprevious_result = result;\n\t\t}\n\t\treturn results;\n\t}\n\n\tbool cstrings_eq(const char* a, const char* b) {\n\t\tif (!a || !b) {\n\t\t\treturn false;\n\t\t}\n\t\treturn strcmp(a, b) == 0;\n\t}\n\n};\n#endif // BACKWARD_HAS_BFD == 1\n\n#if BACKWARD_HAS_DW == 1\n\ntemplate <>\nclass TraceResolverLinuxImpl<trace_resolver_tag::libdw>:\n\tpublic TraceResolverImplBase {\npublic:\n\tTraceResolverLinuxImpl(): _dwfl_handle_initialized(false) {}\n\n\ttemplate <class ST>\n\t\tvoid load_stacktrace(ST&) {}\n\n\tResolvedTrace resolve(ResolvedTrace trace) {\n\t\tusing namespace details;\n\n\t\tDwarf_Addr trace_addr = (Dwarf_Addr) trace.addr;\n\n\t\tif (!_dwfl_handle_initialized) {\n\t\t\t// initialize dwfl...\n\t\t\t_dwfl_cb.reset(new Dwfl_Callbacks);\n\t\t\t_dwfl_cb->find_elf = &dwfl_linux_proc_find_elf;\n\t\t\t_dwfl_cb->find_debuginfo = &dwfl_standard_find_debuginfo;\n\t\t\t_dwfl_cb->debuginfo_path = 0;\n\n\t\t\t_dwfl_handle.reset(dwfl_begin(_dwfl_cb.get()));\n\t\t\t_dwfl_handle_initialized = true;\n\n\t\t\tif (!_dwfl_handle) {\n\t\t\t\treturn trace;\n\t\t\t}\n\n\t\t\t// ...from the current process.\n\t\t\tdwfl_report_begin(_dwfl_handle.get());\n\t\t\tint r = dwfl_linux_proc_report (_dwfl_handle.get(), getpid());\n\t\t\tdwfl_report_end(_dwfl_handle.get(), NULL, NULL);\n\t\t\tif (r < 0) {\n\t\t\t\treturn trace;\n\t\t\t}\n\t\t}\n\n\t\tif (!_dwfl_handle) {\n\t\t\treturn trace;\n\t\t}\n\n\t\t// find the module (binary object) that contains the trace's address.\n\t\t// This is not using any debug information, but the addresses ranges of\n\t\t// all the currently loaded binary object.\n\t\tDwfl_Module* mod = dwfl_addrmodule(_dwfl_handle.get(), trace_addr);\n\t\tif (mod) {\n\t\t\t// now that we found it, lets get the name of it, this will be the\n\t\t\t// full path to the running binary or one of the loaded library.\n\t\t\tconst char* module_name = dwfl_module_info (mod,\n\t\t\t\t\t0, 0, 0, 0, 0, 0, 0);\n\t\t\tif (module_name) {\n\t\t\t\ttrace.object_filename = module_name;\n\t\t\t}\n\t\t\t// We also look after the name of the symbol, equal or before this\n\t\t\t// address. This is found by walking the symtab. We should get the\n\t\t\t// symbol corresponding to the function (mangled) containing the\n\t\t\t// address. If the code corresponding to the address was inlined,\n\t\t\t// this is the name of the out-most inliner function.\n\t\t\tconst char* sym_name = dwfl_module_addrname(mod, trace_addr);\n\t\t\tif (sym_name) {\n\t\t\t\ttrace.object_function = demangle(sym_name);\n\t\t\t}\n\t\t}\n\n\t\t// now let's get serious, and find out the source location (file and\n\t\t// line number) of the address.\n\n\t\t// This function will look in .debug_aranges for the address and map it\n\t\t// to the location of the compilation unit DIE in .debug_info and\n\t\t// return it.\n\t\tDwarf_Addr mod_bias = 0;\n\t\tDwarf_Die* cudie = dwfl_module_addrdie(mod, trace_addr, &mod_bias);\n\n#if 1\n\t\tif (!cudie) {\n\t\t\t// Sadly clang does not generate the section .debug_aranges, thus\n\t\t\t// dwfl_module_addrdie will fail early. Clang doesn't either set\n\t\t\t// the lowpc/highpc/range info for every compilation unit.\n\t\t\t//\n\t\t\t// So in order to save the world:\n\t\t\t// for every compilation unit, we will iterate over every single\n\t\t\t// DIEs. Normally functions should have a lowpc/highpc/range, which\n\t\t\t// we will use to infer the compilation unit.\n\n\t\t\t// note that this is probably badly inefficient.\n\t\t\twhile ((cudie = dwfl_module_nextcu(mod, cudie, &mod_bias))) {\n\t\t\t\tDwarf_Die die_mem;\n\t\t\t\tDwarf_Die* fundie = find_fundie_by_pc(cudie,\n\t\t\t\t\t\ttrace_addr - mod_bias, &die_mem);\n\t\t\t\tif (fundie) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n#endif\n\n//#define BACKWARD_I_DO_NOT_RECOMMEND_TO_ENABLE_THIS_HORRIBLE_PIECE_OF_CODE\n#ifdef BACKWARD_I_DO_NOT_RECOMMEND_TO_ENABLE_THIS_HORRIBLE_PIECE_OF_CODE\n\t\tif (!cudie) {\n\t\t\t// If it's still not enough, lets dive deeper in the shit, and try\n\t\t\t// to save the world again: for every compilation unit, we will\n\t\t\t// load the corresponding .debug_line section, and see if we can\n\t\t\t// find our address in it.\n\n\t\t\tDwarf_Addr cfi_bias;\n\t\t\tDwarf_CFI* cfi_cache = dwfl_module_eh_cfi(mod, &cfi_bias);\n\n\t\t\tDwarf_Addr bias;\n\t\t\twhile ((cudie = dwfl_module_nextcu(mod, cudie, &bias))) {\n\t\t\t\tif (dwarf_getsrc_die(cudie, trace_addr - bias)) {\n\n\t\t\t\t\t// ...but if we get a match, it might be a false positive\n\t\t\t\t\t// because our (address - bias) might as well be valid in a\n\t\t\t\t\t// different compilation unit. So we throw our last card on\n\t\t\t\t\t// the table and lookup for the address into the .eh_frame\n\t\t\t\t\t// section.\n\n\t\t\t\t\thandle<Dwarf_Frame*> frame;\n\t\t\t\t\tdwarf_cfi_addrframe(cfi_cache, trace_addr - cfi_bias, &frame);\n\t\t\t\t\tif (frame) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n#endif\n\n\t\tif (!cudie) {\n\t\t\treturn trace; // this time we lost the game :/\n\t\t}\n\n\t\t// Now that we have a compilation unit DIE, this function will be able\n\t\t// to load the corresponding section in .debug_line (if not already\n\t\t// loaded) and hopefully find the source location mapped to our\n\t\t// address.\n\t\tDwarf_Line* srcloc = dwarf_getsrc_die(cudie, trace_addr - mod_bias);\n\n\t\tif (srcloc) {\n\t\t\tconst char* srcfile = dwarf_linesrc(srcloc, 0, 0);\n\t\t\tif (srcfile) {\n\t\t\t\ttrace.source.filename = srcfile;\n\t\t\t}\n\t\t\tint line = 0, col = 0;\n\t\t\tdwarf_lineno(srcloc, &line);\n\t\t\tdwarf_linecol(srcloc, &col);\n\t\t\ttrace.source.line = line;\n\t\t\ttrace.source.col = col;\n\t\t}\n\n\t\tdeep_first_search_by_pc(cudie, trace_addr - mod_bias,\n\t\t\t\tinliners_search_cb(trace));\n\t\tif (trace.source.function.size() == 0) {\n\t\t\t// fallback.\n\t\t\ttrace.source.function = trace.object_function;\n\t\t}\n\n\t\treturn trace;\n\t}\n\nprivate:\n\ttypedef details::handle<Dwfl*, details::deleter<void, Dwfl*, &dwfl_end> >\n\t\tdwfl_handle_t;\n\tdetails::handle<Dwfl_Callbacks*, details::default_delete<Dwfl_Callbacks*> >\n\t\t           _dwfl_cb;\n\tdwfl_handle_t  _dwfl_handle;\n\tbool           _dwfl_handle_initialized;\n\n\t// defined here because in C++98, template function cannot take locally\n\t// defined types... grrr.\n\tstruct inliners_search_cb {\n\t\tvoid operator()(Dwarf_Die* die) {\n\t\t\tswitch (dwarf_tag(die)) {\n\t\t\t\tconst char* name;\n\t\t\t\tcase DW_TAG_subprogram:\n\t\t\t\t\tif ((name = dwarf_diename(die))) {\n\t\t\t\t\t\ttrace.source.function = name;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase DW_TAG_inlined_subroutine:\n\t\t\t\t\tResolvedTrace::SourceLoc sloc;\n\t\t\t\t\tDwarf_Attribute attr_mem;\n\n\t\t\t\t\tif ((name = dwarf_diename(die))) {\n\t\t\t\t\t\tsloc.function = name;\n\t\t\t\t\t}\n\t\t\t\t\tif ((name = die_call_file(die))) {\n\t\t\t\t\t\tsloc.filename = name;\n\t\t\t\t\t}\n\n\t\t\t\t\tDwarf_Word line = 0, col = 0;\n\t\t\t\t\tdwarf_formudata(dwarf_attr(die, DW_AT_call_line,\n\t\t\t\t\t\t\t\t&attr_mem), &line);\n\t\t\t\t\tdwarf_formudata(dwarf_attr(die, DW_AT_call_column,\n\t\t\t\t\t\t\t\t&attr_mem), &col);\n\t\t\t\t\tsloc.line = (unsigned)line;\n\t\t\t\t\tsloc.col = (unsigned)col;\n\n\t\t\t\t\ttrace.inliners.push_back(sloc);\n\t\t\t\t\tbreak;\n\t\t\t};\n\t\t}\n\t\tResolvedTrace& trace;\n\t\tinliners_search_cb(ResolvedTrace& t): trace(t) {}\n\t};\n\n\n\tstatic bool die_has_pc(Dwarf_Die* die, Dwarf_Addr pc) {\n\t\tDwarf_Addr low, high;\n\n\t\t// continuous range\n\t\tif (dwarf_hasattr(die, DW_AT_low_pc) &&\n\t\t\t\t\t\t\tdwarf_hasattr(die, DW_AT_high_pc)) {\n\t\t\tif (dwarf_lowpc(die, &low) != 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tif (dwarf_highpc(die, &high) != 0) {\n\t\t\t\tDwarf_Attribute attr_mem;\n\t\t\t\tDwarf_Attribute* attr = dwarf_attr(die, DW_AT_high_pc, &attr_mem);\n\t\t\t\tDwarf_Word value;\n\t\t\t\tif (dwarf_formudata(attr, &value) != 0) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\thigh = low + value;\n\t\t\t}\n\t\t\treturn pc >= low && pc < high;\n\t\t}\n\n\t\t// non-continuous range.\n\t\tDwarf_Addr base;\n\t\tptrdiff_t offset = 0;\n\t\twhile ((offset = dwarf_ranges(die, offset, &base, &low, &high)) > 0) {\n\t\t\tif (pc >= low && pc < high) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tstatic Dwarf_Die* find_fundie_by_pc(Dwarf_Die* parent_die, Dwarf_Addr pc,\n\t\t\tDwarf_Die* result) {\n\t\tif (dwarf_child(parent_die, result) != 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tDwarf_Die* die = result;\n\t\tdo {\n\t\t\tswitch (dwarf_tag(die)) {\n\t\t\t\tcase DW_TAG_subprogram:\n\t\t\t\tcase DW_TAG_inlined_subroutine:\n\t\t\t\t\tif (die_has_pc(die, pc)) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\t\t\t};\n\t\t\tbool declaration = false;\n\t\t\tDwarf_Attribute attr_mem;\n\t\t\tdwarf_formflag(dwarf_attr(die, DW_AT_declaration,\n\t\t\t\t\t\t&attr_mem), &declaration);\n\t\t\tif (!declaration) {\n\t\t\t\t// let's be curious and look deeper in the tree,\n\t\t\t\t// function are not necessarily at the first level, but\n\t\t\t\t// might be nested inside a namespace, structure etc.\n\t\t\t\tDwarf_Die die_mem;\n\t\t\t\tDwarf_Die* indie = find_fundie_by_pc(die, pc, &die_mem);\n\t\t\t\tif (indie) {\n\t\t\t\t\t*result = die_mem;\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t}\n\t\t} while (dwarf_siblingof(die, result) == 0);\n\t\treturn 0;\n\t}\n\n\ttemplate <typename CB>\n\t\tstatic bool deep_first_search_by_pc(Dwarf_Die* parent_die,\n\t\t\t\tDwarf_Addr pc, CB cb) {\n\t\tDwarf_Die die_mem;\n\t\tif (dwarf_child(parent_die, &die_mem) != 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tbool branch_has_pc = false;\n\t\tDwarf_Die* die = &die_mem;\n\t\tdo {\n\t\t\tbool declaration = false;\n\t\t\tDwarf_Attribute attr_mem;\n\t\t\tdwarf_formflag(dwarf_attr(die, DW_AT_declaration, &attr_mem), &declaration);\n\t\t\tif (!declaration) {\n\t\t\t\t// let's be curious and look deeper in the tree, function are\n\t\t\t\t// not necessarily at the first level, but might be nested\n\t\t\t\t// inside a namespace, structure, a function, an inlined\n\t\t\t\t// function etc.\n\t\t\t\tbranch_has_pc = deep_first_search_by_pc(die, pc, cb);\n\t\t\t}\n\t\t\tif (!branch_has_pc) {\n\t\t\t\tbranch_has_pc = die_has_pc(die, pc);\n\t\t\t}\n\t\t\tif (branch_has_pc) {\n\t\t\t\tcb(die);\n\t\t\t}\n\t\t} while (dwarf_siblingof(die, &die_mem) == 0);\n\t\treturn branch_has_pc;\n\t}\n\n\tstatic const char* die_call_file(Dwarf_Die *die) {\n\t\tDwarf_Attribute attr_mem;\n\t\tDwarf_Sword file_idx = 0;\n\n\t\tdwarf_formsdata(dwarf_attr(die, DW_AT_call_file, &attr_mem),\n\t\t\t\t&file_idx);\n\n\t\tif (file_idx == 0) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tDwarf_Die die_mem;\n\t\tDwarf_Die* cudie = dwarf_diecu(die, &die_mem, 0, 0);\n\t\tif (!cudie) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tDwarf_Files* files = 0;\n\t\tsize_t nfiles;\n\t\tdwarf_getsrcfiles(cudie, &files, &nfiles);\n\t\tif (!files) {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn dwarf_filesrc(files, file_idx, 0, 0);\n\t}\n\n};\n#endif // BACKWARD_HAS_DW == 1\n\ntemplate<>\nclass TraceResolverImpl<system_tag::linux_tag>:\n\tpublic TraceResolverLinuxImpl<trace_resolver_tag::current> {};\n\n#endif // BACKWARD_SYSTEM_LINUX\n\n#ifdef BACKWARD_SYSTEM_DARWIN\n\ntemplate <typename STACKTRACE_TAG>\nclass TraceResolverDarwinImpl;\n\ntemplate <>\nclass TraceResolverDarwinImpl<trace_resolver_tag::backtrace_symbol>:\n\tpublic TraceResolverImplBase {\npublic:\n\ttemplate <class ST>\n\t\tvoid load_stacktrace(ST& st) {\n\t\t\tusing namespace details;\n\t\t\tif (st.size() == 0) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t_symbols.reset(\n\t\t\t\t\tbacktrace_symbols(st.begin(), st.size())\n\t\t\t\t\t);\n\t\t}\n\n\tResolvedTrace resolve(ResolvedTrace trace) {\n\t\t// parse:\n\t\t// <n>  <file>  <addr>  <mangled-name> + <offset>\n\t\tchar* filename = _symbols[trace.idx];\n\n\t\t// skip \"<n>  \"\n\t\twhile(*filename && *filename != ' ') filename++;\n\t\twhile(*filename == ' ') filename++;\n\n\t\t// find start of <mangled-name> from end (<file> may contain a space)\n\t\tchar* p = filename + strlen(filename) - 1;\n\t\t// skip to start of \" + <offset>\"\n\t\twhile(p > filename && *p != ' ') p--;\n\t\twhile(p > filename && *p == ' ') p--;\n\t\twhile(p > filename && *p != ' ') p--;\n\t\twhile(p > filename && *p == ' ') p--;\n\t\tchar *funcname_end = p + 1;\n\n\t\t// skip to start of \"<manged-name>\"\n\t\twhile(p > filename && *p != ' ') p--;\n\t\tchar *funcname = p + 1;\n\n\t\t// skip to start of \"  <addr>  \"\n\t\twhile(p > filename && *p == ' ') p--;\n\t\twhile(p > filename && *p != ' ') p--;\n\t\twhile(p > filename && *p == ' ') p--;\n\n\t\t// skip \"<file>\", handling the case where it contains a\n\t\tchar* filename_end = p + 1;\n\t\tif (p == filename) {\n\t\t\t// something went wrong, give up\n\t\t\tfilename_end = filename + strlen(filename);\n\t\t\tfuncname = filename_end;\n\t\t}\n\t\ttrace.object_filename.assign(filename, filename_end); // ok even if filename_end is the ending \\0 (then we assign entire string)\n\n\t\tif (*funcname) { // if it's not end of string\n\t\t\t*funcname_end = '\\0';\n\n\t\t\ttrace.object_function = this->demangle(funcname);\n\t\t\ttrace.object_function += \" \";\n\t\t\ttrace.object_function += (funcname_end + 1);\n\t\t\ttrace.source.function = trace.object_function; // we cannot do better.\n\t\t}\n\t\treturn trace;\n\t}\n\nprivate:\n\tdetails::handle<char**> _symbols;\n};\n\ntemplate<>\nclass TraceResolverImpl<system_tag::darwin_tag>:\n\tpublic TraceResolverDarwinImpl<trace_resolver_tag::current> {};\n\n#endif // BACKWARD_SYSTEM_DARWIN\n\nclass TraceResolver:\n\tpublic TraceResolverImpl<system_tag::current_tag> {};\n\n/*************** CODE SNIPPET ***************/\n\nclass SourceFile {\npublic:\n\ttypedef std::vector<std::pair<unsigned, std::string> > lines_t;\n\n\tSourceFile() {}\n\tSourceFile(const std::string& path): _file(new std::ifstream(path.c_str())) {}\n\tbool is_open() const { return _file->is_open(); }\n\n\tlines_t& get_lines(unsigned line_start, unsigned line_count, lines_t& lines) {\n\t\tusing namespace std;\n\t\t// This function make uses of the dumbest algo ever:\n\t\t//\t1) seek(0)\n\t\t//\t2) read lines one by one and discard until line_start\n\t\t//\t3) read line one by one until line_start + line_count\n\t\t//\n\t\t// If you are getting snippets many time from the same file, it is\n\t\t// somewhat a waste of CPU, feel free to benchmark and propose a\n\t\t// better solution ;)\n\n\t\t_file->clear();\n\t\t_file->seekg(0);\n\t\tstring line;\n\t\tunsigned line_idx;\n\n\t\tfor (line_idx = 1; line_idx < line_start; ++line_idx) {\n\t\t\tstd::getline(*_file, line);\n\t\t\tif (!*_file) {\n\t\t\t\treturn lines;\n\t\t\t}\n\t\t}\n\n\t\t// think of it like a lambda in C++98 ;)\n\t\t// but look, I will reuse it two times!\n\t\t// What a good boy am I.\n\t\tstruct isspace {\n\t\t\tbool operator()(char c) {\n\t\t\t\treturn std::isspace(c);\n\t\t\t}\n\t\t};\n\n\t\tbool started = false;\n\t\tfor (; line_idx < line_start + line_count; ++line_idx) {\n\t\t\tgetline(*_file, line);\n\t\t\tif (!*_file) {\n\t\t\t\treturn lines;\n\t\t\t}\n\t\t\tif (!started) {\n\t\t\t\tif (std::find_if(line.begin(), line.end(),\n\t\t\t\t\t\t\tnot_isspace()) == line.end())\n\t\t\t\t\tcontinue;\n\t\t\t\tstarted = true;\n\t\t\t}\n\t\t\tlines.push_back(make_pair(line_idx, line));\n\t\t}\n\n\t\tlines.erase(\n\t\t\t\tstd::find_if(lines.rbegin(), lines.rend(),\n\t\t\t\t\tnot_isempty()).base(), lines.end()\n\t\t\t\t);\n\t\treturn lines;\n\t}\n\n\tlines_t get_lines(unsigned line_start, unsigned line_count) {\n\t\tlines_t lines;\n\t\treturn get_lines(line_start, line_count, lines);\n\t}\n\n\t// there is no find_if_not in C++98, lets do something crappy to\n\t// workaround.\n\tstruct not_isspace {\n\t\tbool operator()(char c) {\n\t\t\treturn !std::isspace(c);\n\t\t}\n\t};\n\t// and define this one here because C++98 is not happy with local defined\n\t// struct passed to template functions, fuuuu.\n\tstruct not_isempty {\n\t\tbool operator()(const lines_t::value_type& p) {\n\t\t\treturn !(std::find_if(p.second.begin(), p.second.end(),\n\t\t\t\t\t\tnot_isspace()) == p.second.end());\n\t\t}\n\t};\n\n\tvoid swap(SourceFile& b) {\n\t\t_file.swap(b._file);\n\t}\n\n#ifdef BACKWARD_ATLEAST_CXX11\n\tSourceFile(SourceFile&& from): _file(0) {\n\t\tswap(from);\n\t}\n\tSourceFile& operator=(SourceFile&& from) {\n\t\tswap(from); return *this;\n\t}\n#else\n\texplicit SourceFile(const SourceFile& from) {\n\t\t// some sort of poor man's move semantic.\n\t\tswap(const_cast<SourceFile&>(from));\n\t}\n\tSourceFile& operator=(const SourceFile& from) {\n\t\t// some sort of poor man's move semantic.\n\t\tswap(const_cast<SourceFile&>(from)); return *this;\n\t}\n#endif\n\nprivate:\n\tdetails::handle<std::ifstream*,\n\t\tdetails::default_delete<std::ifstream*>\n\t\t\t> _file;\n\n#ifdef BACKWARD_ATLEAST_CXX11\n\tSourceFile(const SourceFile&) = delete;\n\tSourceFile& operator=(const SourceFile&) = delete;\n#endif\n};\n\nclass SnippetFactory {\npublic:\n\ttypedef SourceFile::lines_t lines_t;\n\n\tlines_t get_snippet(const std::string& filename,\n\t\t\tunsigned line_start, unsigned context_size) {\n\n\t\tSourceFile& src_file = get_src_file(filename);\n\t\tunsigned start = line_start - context_size / 2;\n\t\treturn src_file.get_lines(start, context_size);\n\t}\n\n\tlines_t get_combined_snippet(\n\t\t\tconst std::string& filename_a, unsigned line_a,\n\t\t\tconst std::string& filename_b, unsigned line_b,\n\t\t\tunsigned context_size) {\n\t\tSourceFile& src_file_a = get_src_file(filename_a);\n\t\tSourceFile& src_file_b = get_src_file(filename_b);\n\n\t\tlines_t lines = src_file_a.get_lines(line_a - context_size / 4,\n\t\t\t\tcontext_size / 2);\n\t\tsrc_file_b.get_lines(line_b - context_size / 4, context_size / 2,\n\t\t\t\tlines);\n\t\treturn lines;\n\t}\n\n\tlines_t get_coalesced_snippet(const std::string& filename,\n\t\t\tunsigned line_a, unsigned line_b, unsigned context_size) {\n\t\tSourceFile& src_file = get_src_file(filename);\n\n\t\tusing std::min; using std::max;\n\t\tunsigned a = min(line_a, line_b);\n\t\tunsigned b = max(line_a, line_b);\n\n\t\tif ((b - a) < (context_size / 3)) {\n\t\t\treturn src_file.get_lines((a + b - context_size + 1) / 2,\n\t\t\t\t\tcontext_size);\n\t\t}\n\n\t\tlines_t lines = src_file.get_lines(a - context_size / 4,\n\t\t\t\tcontext_size / 2);\n\t\tsrc_file.get_lines(b - context_size / 4, context_size / 2, lines);\n\t\treturn lines;\n\t}\n\n\nprivate:\n\ttypedef details::hashtable<std::string, SourceFile>::type src_files_t;\n\tsrc_files_t _src_files;\n\n\tSourceFile& get_src_file(const std::string& filename) {\n\t\tsrc_files_t::iterator it = _src_files.find(filename);\n\t\tif (it != _src_files.end()) {\n\t\t\treturn it->second;\n\t\t}\n\t\tSourceFile& new_src_file = _src_files[filename];\n\t\tnew_src_file = SourceFile(filename);\n\t\treturn new_src_file;\n\t}\n};\n\n/*************** PRINTER ***************/\n\nnamespace ColorMode {\n\tenum type {\n\t\tautomatic,\n\t\tnever,\n\t\talways\n\t};\n}\n\nclass cfile_streambuf: public std::streambuf {\npublic:\n\tcfile_streambuf(FILE *_sink): sink(_sink) {}\n\tint_type underflow() { return traits_type::eof(); }\n\tint_type overflow(int_type ch) {\n\t\tif (traits_type::not_eof(ch) && fwrite(&ch, sizeof ch, 1, sink) == 1) {\n\t\t\t\treturn ch;\n\t\t}\n\t\treturn traits_type::eof();\n\t}\n\n\tstd::streamsize xsputn(const char_type* s, std::streamsize count) {\n\t\treturn fwrite(s, sizeof *s, count, sink);\n\t}\n\n#ifdef BACKWARD_ATLEAST_CXX11\npublic:\n\tcfile_streambuf(const cfile_streambuf&) = delete;\n\tcfile_streambuf& operator=(const cfile_streambuf&) = delete;\n#else\nprivate:\n\tcfile_streambuf(const cfile_streambuf &);\n\tcfile_streambuf &operator= (const cfile_streambuf &);\n#endif\n\nprivate:\n\tFILE *sink;\n\tstd::vector<char> buffer;\n};\n\n#ifdef BACKWARD_SYSTEM_LINUX\n\nnamespace Color {\n\tenum type {\n\t\tyellow = 33,\n\t\tpurple = 35,\n\t\treset  = 39\n\t};\n} // namespace Color\n\nclass Colorize {\npublic:\n\tColorize(std::ostream& os):\n\t\t_os(os), _reset(false), _enabled(false) {}\n\n\tvoid activate(ColorMode::type mode) {\n\t\t_enabled = mode == ColorMode::always;\n\t}\n\n\tvoid activate(ColorMode::type mode, FILE* fp) {\n\t\tactivate(mode, fileno(fp));\n\t}\n\n\tvoid set_color(Color::type ccode) {\n\t\tif (!_enabled) return;\n\n\t\t// I assume that the terminal can handle basic colors. Seriously I\n\t\t// don't want to deal with all the termcap shit.\n\t\t_os << \"\\033[\" << static_cast<int>(ccode) << \"m\";\n\t\t_reset = (ccode != Color::reset);\n\t}\n\n\t~Colorize() {\n\t\tif (_reset) {\n\t\t\tset_color(Color::reset);\n\t\t}\n\t}\n\nprivate:\n\tvoid activate(ColorMode::type mode, int fd) {\n\t\tactivate(mode == ColorMode::automatic && isatty(fd) ? ColorMode::always : mode);\n\t}\n\n\tstd::ostream& _os;\n\tbool          _reset;\n\tbool          _enabled;\n};\n\n#else // ndef BACKWARD_SYSTEM_LINUX\n\nnamespace Color {\n\tenum type {\n\t\tyellow = 0,\n\t\tpurple = 0,\n\t\treset  = 0\n\t};\n} // namespace Color\n\nclass Colorize {\npublic:\n\tColorize(std::ostream&) {}\n\tvoid activate(ColorMode::type) {}\n\tvoid activate(ColorMode::type, FILE*) {}\n\tvoid set_color(Color::type) {}\n};\n\n#endif // BACKWARD_SYSTEM_LINUX\n\nclass Printer {\npublic:\n\n\tbool snippet;\n\tColorMode::type color_mode;\n\tbool address;\n\tbool object;\n\tint inliner_context_size;\n\tint trace_context_size;\n\n\tPrinter():\n\t\tsnippet(true),\n\t\tcolor_mode(ColorMode::automatic),\n\t\taddress(false),\n\t\tobject(false),\n\t\tinliner_context_size(5),\n\t\ttrace_context_size(7)\n\t\t{}\n\n\ttemplate <typename ST>\n\t\tFILE* print(ST& st, FILE* fp = stderr) {\n\t\t\tcfile_streambuf obuf(fp);\n\t\t\tstd::ostream os(&obuf);\n\t\t\tColorize colorize(os);\n\t\t\tcolorize.activate(color_mode, fp);\n\t\t\tprint_stacktrace(st, os, colorize);\n\t\t\treturn fp;\n\t\t}\n\n\ttemplate <typename ST>\n\t\tstd::ostream& print(ST& st, std::ostream& os) {\n\t\t\tColorize colorize(os);\n\t\t\tcolorize.activate(color_mode);\n\t\t\tprint_stacktrace(st, os, colorize);\n\t\t\treturn os;\n\t\t}\n\n\ttemplate <typename IT>\n\t\tFILE* print(IT begin, IT end, FILE* fp = stderr, size_t thread_id = 0) {\n\t\t\tcfile_streambuf obuf(fp);\n\t\t\tstd::ostream os(&obuf);\n\t\t\tColorize colorize(os);\n\t\t\tcolorize.activate(color_mode, fp);\n\t\t\tprint_stacktrace(begin, end, os, thread_id, colorize);\n\t\t\treturn fp;\n\t\t}\n\n\ttemplate <typename IT>\n\t\tstd::ostream& print(IT begin, IT end, std::ostream& os, size_t thread_id = 0) {\n\t\t\tColorize colorize(os);\n\t\t\tcolorize.activate(color_mode);\n\t\t\tprint_stacktrace(begin, end, os, thread_id, colorize);\n\t\t\treturn os;\n\t\t}\n\nprivate:\n\tTraceResolver  _resolver;\n\tSnippetFactory _snippets;\n\n\ttemplate <typename ST>\n\t\tvoid print_stacktrace(ST& st, std::ostream& os, Colorize& colorize) {\n\t\t\tprint_header(os, st.thread_id());\n\t\t\t_resolver.load_stacktrace(st);\n\t\t\tfor (size_t trace_idx = st.size(); trace_idx > 0; --trace_idx) {\n\t\t\t\tprint_trace(os, _resolver.resolve(st[trace_idx-1]), colorize);\n\t\t\t}\n\t\t}\n\n\ttemplate <typename IT>\n\t\tvoid print_stacktrace(IT begin, IT end, std::ostream& os, size_t thread_id, Colorize& colorize) {\n\t\t\tprint_header(os, thread_id);\n\t\t\tfor (; begin != end; ++begin) {\n\t\t\t\tprint_trace(os, *begin, colorize);\n\t\t\t}\n\t\t}\n\n\tvoid print_header(std::ostream& os, size_t thread_id) {\n\t\tos << \"Stack trace (most recent call last)\";\n\t\tif (thread_id) {\n\t\t\tos << \" in thread \" << thread_id;\n\t\t}\n\t\tos << \":\\n\";\n\t}\n\n\tvoid print_trace(std::ostream& os, const ResolvedTrace& trace,\n\t\t\tColorize& colorize) {\n\t\tos << \"#\"\n\t\t   << std::left << std::setw(2) << trace.idx\n\t\t   << std::right;\n\t\tbool already_indented = true;\n\n\t\tif (!trace.source.filename.size() || object) {\n\t\t\tos << \"   Object \\\"\"\n\t\t\t   << trace.object_filename\n\t\t\t   << \"\\\", at \"\n\t\t\t   << trace.addr\n\t\t\t   << \", in \"\n\t\t\t   << trace.object_function\n\t\t\t   << \"\\n\";\n\t\t\talready_indented = false;\n\t\t}\n\n\t\tfor (size_t inliner_idx = trace.inliners.size();\n\t\t\t\tinliner_idx > 0; --inliner_idx) {\n\t\t\tif (!already_indented) {\n\t\t\t\tos << \"   \";\n\t\t\t}\n\t\t\tconst ResolvedTrace::SourceLoc& inliner_loc\n\t\t\t\t= trace.inliners[inliner_idx-1];\n\t\t\tprint_source_loc(os, \" | \", inliner_loc);\n\t\t\tif (snippet) {\n\t\t\t\tprint_snippet(os, \"    | \", inliner_loc,\n\t\t\t\t\t\tcolorize, Color::purple, inliner_context_size);\n\t\t\t}\n\t\t\talready_indented = false;\n\t\t}\n\n\t\tif (trace.source.filename.size()) {\n\t\t\tif (!already_indented) {\n\t\t\t\tos << \"   \";\n\t\t\t}\n\t\t\tprint_source_loc(os, \"   \", trace.source, trace.addr);\n\t\t\tif (snippet) {\n\t\t\t\tprint_snippet(os, \"      \", trace.source,\n\t\t\t\t\t\tcolorize, Color::yellow, trace_context_size);\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid print_snippet(std::ostream& os, const char* indent,\n\t\t\tconst ResolvedTrace::SourceLoc& source_loc,\n\t\t\tColorize& colorize, Color::type color_code,\n\t\t\tint context_size)\n\t{\n\t\tusing namespace std;\n\t\ttypedef SnippetFactory::lines_t lines_t;\n\n\t\tlines_t lines = _snippets.get_snippet(source_loc.filename,\n\t\t\t\tsource_loc.line, context_size);\n\n\t\tfor (lines_t::const_iterator it = lines.begin();\n\t\t\t\tit != lines.end(); ++it) {\n\t\t\tif (it-> first == source_loc.line) {\n\t\t\t\tcolorize.set_color(color_code);\n\t\t\t\tos << indent << \">\";\n\t\t\t} else {\n\t\t\t\tos << indent << \" \";\n\t\t\t}\n\t\t\tos << std::setw(4) << it->first\n\t\t\t   << \": \"\n\t\t\t   << it->second\n\t\t\t   << \"\\n\";\n\t\t\tif (it-> first == source_loc.line) {\n\t\t\t\tcolorize.set_color(Color::reset);\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid print_source_loc(std::ostream& os, const char* indent,\n\t\t\tconst ResolvedTrace::SourceLoc& source_loc,\n\t\t\tvoid* addr=0) {\n\t\tos << indent\n\t\t   << \"Source \\\"\"\n\t\t   << source_loc.filename\n\t\t   << \"\\\", line \"\n\t\t   << source_loc.line\n\t\t   << \", in \"\n\t\t   << source_loc.function;\n\n\t\tif (address && addr != 0) {\n\t\t\tos << \" [\" << addr << \"]\";\n\t\t}\n\t\tos << \"\\n\";\n\t}\n};\n\n/*************** SIGNALS HANDLING ***************/\n\n#if defined(BACKWARD_SYSTEM_LINUX) || defined(BACKWARD_SYSTEM_DARWIN)\n\n\nclass SignalHandling {\npublic:\n   static std::vector<int> make_default_signals() {\n       const int posix_signals[] = {\n\t\t// Signals for which the default action is \"Core\".\n\t\tSIGABRT,    // Abort signal from abort(3)\n\t\tSIGBUS,     // Bus error (bad memory access)\n\t\tSIGFPE,     // Floating point exception\n\t\tSIGILL,     // Illegal Instruction\n\t\tSIGIOT,     // IOT trap. A synonym for SIGABRT\n\t\tSIGQUIT,    // Quit from keyboard\n\t\tSIGSEGV,    // Invalid memory reference\n\t\tSIGSYS,     // Bad argument to routine (SVr4)\n\t\tSIGTRAP,    // Trace/breakpoint trap\n\t\tSIGXCPU,    // CPU time limit exceeded (4.2BSD)\n\t\tSIGXFSZ,    // File size limit exceeded (4.2BSD)\n#if defined(BACKWARD_SYSTEM_DARWIN)\n\t\tSIGEMT,     // emulation instruction executed\n#endif\n\t};\n        return std::vector<int>(posix_signals, posix_signals + sizeof posix_signals / sizeof posix_signals[0] );\n   }\n\n  SignalHandling(const std::vector<int>& posix_signals = make_default_signals()):\n\t  _loaded(false) {\n\t\tbool success = true;\n\n\t\tconst size_t stack_size = 1024 * 1024 * 8;\n\t\t_stack_content.reset((char*)malloc(stack_size));\n\t\tif (_stack_content) {\n\t\t\tstack_t ss;\n\t\t\tss.ss_sp = _stack_content.get();\n\t\t\tss.ss_size = stack_size;\n\t\t\tss.ss_flags = 0;\n\t\t\tif (sigaltstack(&ss, 0) < 0) {\n\t\t\t\tsuccess = false;\n\t\t\t}\n\t\t} else {\n\t\t\tsuccess = false;\n\t\t}\n\n\t\tfor (size_t i = 0; i < posix_signals.size(); ++i) {\n\t\t\tstruct sigaction action;\n\t\t\tmemset(&action, 0, sizeof action);\n\t\t\taction.sa_flags = (SA_SIGINFO | SA_ONSTACK | SA_NODEFER |\n\t\t\t\t\tSA_RESETHAND);\n\t\t\tsigfillset(&action.sa_mask);\n\t\t\tsigdelset(&action.sa_mask, posix_signals[i]);\n\t\t\taction.sa_sigaction = &sig_handler;\n\n\t\t\tint r = sigaction(posix_signals[i], &action, 0);\n\t\t\tif (r < 0) success = false;\n\t\t}\n\n\t\t_loaded = success;\n\t}\n\n\tbool loaded() const { return _loaded; }\n\n\tstatic void handleSignal(int, siginfo_t* info, void* _ctx) {\n\t\tucontext_t *uctx = (ucontext_t*) _ctx;\n\n\t\tStackTrace st;\n\t\tvoid* error_addr = 0;\n#ifdef REG_RIP // x86_64\n\t\terror_addr = reinterpret_cast<void*>(uctx->uc_mcontext.gregs[REG_RIP]);\n#elif defined(REG_EIP) // x86_32\n\t\terror_addr = reinterpret_cast<void*>(uctx->uc_mcontext.gregs[REG_EIP]);\n#elif defined(__arm__)\n\t\terror_addr = reinterpret_cast<void*>(uctx->uc_mcontext.arm_pc);\n#elif defined(__aarch64__)\n\t\terror_addr = reinterpret_cast<void*>(uctx->uc_mcontext.pc);\n#elif defined(__ppc__) || defined(__powerpc) || defined(__powerpc__) || defined(__POWERPC__)\n\t\terror_addr = reinterpret_cast<void*>(uctx->uc_mcontext.regs->nip);\n#elif defined(__s390x__)\n                error_addr = reinterpret_cast<void*>(uctx->uc_mcontext.psw.addr);\n#elif defined(__APPLE__) && defined(__x86_64__)\n\t\terror_addr = reinterpret_cast<void*>(uctx->uc_mcontext->__ss.__rip);\n#else\n#\twarning \":/ sorry, ain't know no nothing none not of your architecture!\"\n#endif\n\t\tif (error_addr) {\n\t\t\tst.load_from(error_addr, 32);\n\t\t} else {\n\t\t\tst.load_here(32);\n\t\t}\n\n\t\tPrinter printer;\n\t\tprinter.address = true;\n\t\tprinter.print(st, stderr);\n\n#if _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L\n\t\tpsiginfo(info, 0);\n#endif\n\t}\n\nprivate:\n\tdetails::handle<char*> _stack_content;\n\tbool                   _loaded;\n\n#ifdef __GNUC__\n\t__attribute__((noreturn))\n#endif\n\tstatic void sig_handler(int signo, siginfo_t* info, void* _ctx) {\n\t\thandleSignal(signo, info, _ctx);\n\n\t\t// try to forward the signal.\n\t\traise(info->si_signo);\n\n\t\t// terminate the process immediately.\n\t\tputs(\"watf? exit\");\n\t\t_exit(EXIT_FAILURE);\n\t}\n};\n\n#endif // BACKWARD_SYSTEM_LINUX || BACKWARD_SYSTEM_DARWIN\n\n#ifdef BACKWARD_SYSTEM_UNKNOWN\n\nclass SignalHandling {\npublic:\n\tSignalHandling(const std::vector<int>& = std::vector<int>()) {}\n\tbool init() { return false; }\n\tbool loaded() { return false; }\n};\n\n#endif // BACKWARD_SYSTEM_UNKNOWN\n\n} // namespace backward\n\n#endif /* H_GUARD */\n"
  },
  {
    "path": "3rdpart/backward/backward.pri",
    "content": "SOURCES += $$PWD/backward.cpp\nHEADERS += $$PWD/backward.hpp\nINCLUDEPATH += $$PWD\n"
  },
  {
    "path": "3rdpart/hoedown/LICENSE",
    "content": "Copyright (c) 2008, Natacha Porté\nCopyright (c) 2011, Vicent Martí\nCopyright (c) 2014, Xavier Mendez, Devin Torres and the Hoedown authors\n\nPermission to use, copy, modify, and distribute this software for any\npurpose with or without fee is hereby granted, provided that the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\nOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n"
  },
  {
    "path": "3rdpart/hoedown/README.md",
    "content": "Hoedown\n=======\n\n[![Build Status](https://travis-ci.org/hoedown/hoedown.png?branch=master)](https://travis-ci.org/hoedown/hoedown)\n\n`Hoedown` is a revived fork of [Sundown](https://github.com/vmg/sundown),\nthe Markdown parser based on the original code of the\n[Upskirt library](http://fossil.instinctive.eu/libupskirt/index)\nby Natacha Porté.\n\nFeatures\n--------\n\n*\t**Fully standards compliant**\n\n\t`Hoedown` passes out of the box the official Markdown v1.0.0 and v1.0.3\n\ttest suites, and has been extensively tested with additional corner cases\n\tto make sure its output is as sane as possible at all times.\n\n*\t**Massive extension support**\n\n\t`Hoedown` has optional support for several (unofficial) Markdown extensions,\n\tsuch as non-strict emphasis, fenced code blocks, tables, autolinks,\n\tstrikethrough and more.\n\n*\t**UTF-8 aware**\n\n\t`Hoedown` is fully UTF-8 aware, both when parsing the source document and when\n\tgenerating the resulting (X)HTML code.\n\n*\t**Tested & Ready to be used on production**\n\n\t`Hoedown` has been extensively security audited, and includes protection against\n\tall possible DOS attacks (stack overflows, out of memory situations, malformed\n\tMarkdown syntax...).\n\n\tWe've worked very hard to make `Hoedown` never leak or crash under *any* input.\n\n\t**Warning**: `Hoedown` doesn't validate or post-process the HTML in Markdown documents.\n\tUnless you use `HTML_ESCAPE` or `HTML_SKIP`, you should strongly consider using a\n\tgood post-processor in conjunction with Hoedown to prevent client-side attacks.\n\n*\t**Customizable renderers**\n\n\t`Hoedown` is not stuck with XHTML output: the Markdown parser of the library\n\tis decoupled from the renderer, so it's trivial to extend the library with\n\tcustom renderers. A fully functional (X)HTML renderer is included.\n\n*\t**Optimized for speed**\n\n\t`Hoedown` is written in C, with a special emphasis on performance. When wrapped\n\ton a dynamic language such as Python or Ruby, it has shown to be up to 40\n\ttimes faster than other native alternatives.\n\n*\t**Zero-dependency**\n\n\t`Hoedown` is a zero-dependency library composed of some `.c` files and their\n\theaders. No dependencies, no bullshit. Only standard C99 that builds everywhere.\n\n*\t**Additional features**\n\n\t`Hoedown` comes with a fully functional implementation of SmartyPants,\n\ta separate autolinker, escaping utilities, buffers and stacks.\n\nBindings\n--------\n\nYou can see a community-maintained list of `Hoedown` bindings at\n[the wiki](https://github.com/hoedown/hoedown/wiki/Bindings). There is also a\n[migration guide](https://github.com/hoedown/hoedown/wiki/Migration-Guide)\navailable for authors of Sundown bindings.\n\nHelp us\n-------\n\n`Hoedown` is all about security. If you find a (potential) security vulnerability in the\nlibrary, or a way to make it crash through malicious input, please report it to us by\nemailing the private [Hoedown Security](mailto:hoedown-security@googlegroups.com)\nmailing list. The `Hoedown` security team will review the vulnerability and work with you\nto reproduce and resolve it.\n\nUnicode character handling\n--------------------------\n\nGiven that the Markdown spec makes no provision for Unicode character handling, `Hoedown`\ntakes a conservative approach towards deciding which extended characters trigger Markdown\nfeatures:\n\n*\tPunctuation characters outside of the U+007F codepoint are not handled as punctuation.\n\tThey are considered as normal, in-word characters for word-boundary checks.\n\n*\tWhitespace characters outside of the U+007F codepoint are not considered as\n\twhitespace. They are considered as normal, in-word characters for word-boundary checks.\n\nInstall\n-------\n\nJust typing `make` will build `Hoedown` into a dynamic library and create the `hoedown`\nand `smartypants` executables, which are command-line tools to render Markdown to HTML\nand perform SmartyPants, respectively.\n\nIf you are using [CocoaPods](http://cocoapods.org), just add the line `pod 'hoedown'` to your Podfile and call `pod install`.\n\nOr, if you prefer, you can just throw the files at `src` into your project.\n"
  },
  {
    "path": "3rdpart/hoedown/hoedown.def",
    "content": "LIBRARY HOEDOWN\nEXPORTS\n\thoedown_autolink_is_safe\n\thoedown_autolink__www\n\thoedown_autolink__email\n\thoedown_autolink__url\n\thoedown_buffer_init\n\thoedown_buffer_new\n\thoedown_buffer_reset\n\thoedown_buffer_grow\n\thoedown_buffer_put\n\thoedown_buffer_puts\n\thoedown_buffer_putc\n\thoedown_buffer_set\n\thoedown_buffer_sets\n\thoedown_buffer_eq\n\thoedown_buffer_eqs\n\thoedown_buffer_prefix\n\thoedown_buffer_slurp\n\thoedown_buffer_cstr\n\thoedown_buffer_printf\n\thoedown_buffer_free\n\thoedown_document_new\n\thoedown_document_render\n\thoedown_document_render_inline\n\thoedown_document_free\n\thoedown_escape_href\n\thoedown_escape_html\n\thoedown_html_smartypants\n\thoedown_html_is_tag\n\thoedown_html_renderer_new\n\thoedown_html_toc_renderer_new\n\thoedown_html_renderer_free\n\thoedown_stack_init\n\thoedown_stack_uninit\n\thoedown_stack_grow\n\thoedown_stack_push\n\thoedown_stack_pop\n\thoedown_stack_top\n\thoedown_version\n"
  },
  {
    "path": "3rdpart/hoedown/hoedown.pri",
    "content": "HEADERS += $$PWD/src/escape.h\nHEADERS += $$PWD/src/html.h\nHEADERS += $$PWD/src/autolink.h\nHEADERS += $$PWD/src/document.h\nHEADERS += $$PWD/src/stack.h\nHEADERS += $$PWD/src/version.h\nHEADERS += $$PWD/src/buffer.h\n\nSOURCES += $$PWD/src/document.c \\\n    $$PWD/src/hodedown_version.c\nSOURCES += $$PWD/src/html.c\nSOURCES += $$PWD/src/stack.c\nSOURCES +=\nSOURCES += $$PWD/src/autolink.c\nSOURCES += $$PWD/src/escape.c\nSOURCES += $$PWD/src/html_smartypants.c\nSOURCES += $$PWD/src/buffer.c\nSOURCES += $$PWD/src/html_blocks.c\n"
  },
  {
    "path": "3rdpart/hoedown/html_block_names.gperf",
    "content": "p\ndl\nh1\nh2\nh3\nh4\nh5\nh6\nol\nul\ndel\ndiv\nins\npre\nform\nmath\nstyle\ntable\nfigure\niframe\nscript\nfieldset\nnoscript\nblockquote\n"
  },
  {
    "path": "3rdpart/hoedown/src/autolink.c",
    "content": "#include \"autolink.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <ctype.h>\n\n#ifndef _MSC_VER\n#include <strings.h>\n#else\n#define strncasecmp\t_strnicmp\n#endif\n\nint\nhoedown_autolink_is_safe(const uint8_t *data, size_t size)\n{\n\tstatic const size_t valid_uris_count = 6;\n\tstatic const char *valid_uris[] = {\n\t\t\"http://\", \"https://\", \"/\", \"#\", \"ftp://\", \"mailto:\"\n\t};\n\tstatic const size_t valid_uris_size[] = { 7, 8, 1, 1, 6, 7 };\n\tsize_t i;\n\n\tfor (i = 0; i < valid_uris_count; ++i) {\n\t\tsize_t len = valid_uris_size[i];\n\n\t\tif (size > len &&\n\t\t\tstrncasecmp((char *)data, valid_uris[i], len) == 0 &&\n\t\t\tisalnum(data[len]))\n\t\t\treturn 1;\n\t}\n\n\treturn 0;\n}\n\nstatic size_t\nautolink_delim(uint8_t *data, size_t link_end, size_t max_rewind, size_t size)\n{\n\tuint8_t cclose, copen = 0;\n\tsize_t i;\n\n\tfor (i = 0; i < link_end; ++i)\n\t\tif (data[i] == '<') {\n\t\t\tlink_end = i;\n\t\t\tbreak;\n\t\t}\n\n\twhile (link_end > 0) {\n\t\tif (strchr(\"?!.,:\", data[link_end - 1]) != NULL)\n\t\t\tlink_end--;\n\n\t\telse if (data[link_end - 1] == ';') {\n\t\t\tsize_t new_end = link_end - 2;\n\n\t\t\twhile (new_end > 0 && isalpha(data[new_end]))\n\t\t\t\tnew_end--;\n\n\t\t\tif (new_end < link_end - 2 && data[new_end] == '&')\n\t\t\t\tlink_end = new_end;\n\t\t\telse\n\t\t\t\tlink_end--;\n\t\t}\n\t\telse break;\n\t}\n\n\tif (link_end == 0)\n\t\treturn 0;\n\n\tcclose = data[link_end - 1];\n\n\tswitch (cclose) {\n\tcase '\"':\tcopen = '\"'; break;\n\tcase '\\'':\tcopen = '\\''; break;\n\tcase ')':\tcopen = '('; break;\n\tcase ']':\tcopen = '['; break;\n\tcase '}':\tcopen = '{'; break;\n\t}\n\n\tif (copen != 0) {\n\t\tsize_t closing = 0;\n\t\tsize_t opening = 0;\n\t\tsize_t i = 0;\n\n\t\t/* Try to close the final punctuation sign in this same line;\n\t\t * if we managed to close it outside of the URL, that means that it's\n\t\t * not part of the URL. If it closes inside the URL, that means it\n\t\t * is part of the URL.\n\t\t *\n\t\t * Examples:\n\t\t *\n\t\t *\tfoo http://www.pokemon.com/Pikachu_(Electric) bar\n\t\t *\t\t=> http://www.pokemon.com/Pikachu_(Electric)\n\t\t *\n\t\t *\tfoo (http://www.pokemon.com/Pikachu_(Electric)) bar\n\t\t *\t\t=> http://www.pokemon.com/Pikachu_(Electric)\n\t\t *\n\t\t *\tfoo http://www.pokemon.com/Pikachu_(Electric)) bar\n\t\t *\t\t=> http://www.pokemon.com/Pikachu_(Electric))\n\t\t *\n\t\t *\t(foo http://www.pokemon.com/Pikachu_(Electric)) bar\n\t\t *\t\t=> foo http://www.pokemon.com/Pikachu_(Electric)\n\t\t */\n\n\t\twhile (i < link_end) {\n\t\t\tif (data[i] == copen)\n\t\t\t\topening++;\n\t\t\telse if (data[i] == cclose)\n\t\t\t\tclosing++;\n\n\t\t\ti++;\n\t\t}\n\n\t\tif (closing != opening)\n\t\t\tlink_end--;\n\t}\n\n\treturn link_end;\n}\n\nstatic size_t\ncheck_domain(uint8_t *data, size_t size, int allow_short)\n{\n\tsize_t i, np = 0;\n\n\tif (!isalnum(data[0]))\n\t\treturn 0;\n\n\tfor (i = 1; i < size - 1; ++i) {\n\t\tif (strchr(\".:\", data[i]) != NULL) np++;\n\t\telse if (!isalnum(data[i]) && data[i] != '-') break;\n\t}\n\n\tif (allow_short) {\n\t\t/* We don't need a valid domain in the strict sense (with\n\t\t * least one dot; so just make sure it's composed of valid\n\t\t * domain characters and return the length of the the valid\n\t\t * sequence. */\n\t\treturn i;\n\t} else {\n\t\t/* a valid domain needs to have at least a dot.\n\t\t * that's as far as we get */\n\t\treturn np ? i : 0;\n\t}\n}\n\nsize_t\nhoedown_autolink__www(\n\tsize_t *rewind_p,\n\thoedown_buffer *link,\n\tuint8_t *data,\n\tsize_t max_rewind,\n\tsize_t size,\n\tunsigned int flags)\n{\n\tsize_t link_end;\n\n\tif (max_rewind > 0 && !ispunct(data[-1]) && !isspace(data[-1]))\n\t\treturn 0;\n\n\tif (size < 4 || memcmp(data, \"www.\", strlen(\"www.\")) != 0)\n\t\treturn 0;\n\n\tlink_end = check_domain(data, size, 0);\n\n\tif (link_end == 0)\n\t\treturn 0;\n\n\twhile (link_end < size && !isspace(data[link_end]))\n\t\tlink_end++;\n\n\tlink_end = autolink_delim(data, link_end, max_rewind, size);\n\n\tif (link_end == 0)\n\t\treturn 0;\n\n\thoedown_buffer_put(link, data, link_end);\n\t*rewind_p = 0;\n\n\treturn (int)link_end;\n}\n\nsize_t\nhoedown_autolink__email(\n\tsize_t *rewind_p,\n\thoedown_buffer *link,\n\tuint8_t *data,\n\tsize_t max_rewind,\n\tsize_t size,\n\tunsigned int flags)\n{\n\tsize_t link_end, rewind;\n\tint nb = 0, np = 0;\n\n\tfor (rewind = 0; rewind < max_rewind; ++rewind) {\n\t\tuint8_t c = data[-1 - rewind];\n\n\t\tif (isalnum(c))\n\t\t\tcontinue;\n\n\t\tif (strchr(\".+-_\", c) != NULL)\n\t\t\tcontinue;\n\n\t\tbreak;\n\t}\n\n\tif (rewind == 0)\n\t\treturn 0;\n\n\tfor (link_end = 0; link_end < size; ++link_end) {\n\t\tuint8_t c = data[link_end];\n\n\t\tif (isalnum(c))\n\t\t\tcontinue;\n\n\t\tif (c == '@')\n\t\t\tnb++;\n\t\telse if (c == '.' && link_end < size - 1)\n\t\t\tnp++;\n\t\telse if (c != '-' && c != '_')\n\t\t\tbreak;\n\t}\n\n\tif (link_end < 2 || nb != 1 || np == 0 ||\n\t\t!isalpha(data[link_end - 1]))\n\t\treturn 0;\n\n\tlink_end = autolink_delim(data, link_end, max_rewind, size);\n\n\tif (link_end == 0)\n\t\treturn 0;\n\n\thoedown_buffer_put(link, data - rewind, link_end + rewind);\n\t*rewind_p = rewind;\n\n\treturn link_end;\n}\n\nsize_t\nhoedown_autolink__url(\n\tsize_t *rewind_p,\n\thoedown_buffer *link,\n\tuint8_t *data,\n\tsize_t max_rewind,\n\tsize_t size,\n\tunsigned int flags)\n{\n\tsize_t link_end, rewind = 0, domain_len;\n\n\tif (size < 4 || data[1] != '/' || data[2] != '/')\n\t\treturn 0;\n\n\twhile (rewind < max_rewind && isalpha(data[-1 - rewind]))\n\t\trewind++;\n\n\tif (!hoedown_autolink_is_safe(data - rewind, size + rewind))\n\t\treturn 0;\n\n\tlink_end = strlen(\"://\");\n\n\tdomain_len = check_domain(\n\t\tdata + link_end,\n\t\tsize - link_end,\n\t\tflags & HOEDOWN_AUTOLINK_SHORT_DOMAINS);\n\n\tif (domain_len == 0)\n\t\treturn 0;\n\n\tlink_end += domain_len;\n\twhile (link_end < size && !isspace(data[link_end]))\n\t\tlink_end++;\n\n\tlink_end = autolink_delim(data, link_end, max_rewind, size);\n\n\tif (link_end == 0)\n\t\treturn 0;\n\n\thoedown_buffer_put(link, data - rewind, link_end + rewind);\n\t*rewind_p = rewind;\n\n\treturn link_end;\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/autolink.h",
    "content": "/* autolink.h - versatile autolinker */\n\n#ifndef HOEDOWN_AUTOLINK_H\n#define HOEDOWN_AUTOLINK_H\n\n#include \"buffer.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*************\n * CONSTANTS *\n *************/\n\ntypedef enum hoedown_autolink_flags {\n\tHOEDOWN_AUTOLINK_SHORT_DOMAINS = (1 << 0)\n} hoedown_autolink_flags;\n\n\n/*************\n * FUNCTIONS *\n *************/\n\n/* hoedown_autolink_is_safe: verify that a URL has a safe protocol */\nint hoedown_autolink_is_safe(const uint8_t *data, size_t size);\n\n/* hoedown_autolink__www: search for the next www link in data */\nsize_t hoedown_autolink__www(size_t *rewind_p, hoedown_buffer *link,\n\tuint8_t *data, size_t offset, size_t size, hoedown_autolink_flags flags);\n\n/* hoedown_autolink__email: search for the next email in data */\nsize_t hoedown_autolink__email(size_t *rewind_p, hoedown_buffer *link,\n\tuint8_t *data, size_t offset, size_t size, hoedown_autolink_flags flags);\n\n/* hoedown_autolink__url: search for the next URL in data */\nsize_t hoedown_autolink__url(size_t *rewind_p, hoedown_buffer *link,\n\tuint8_t *data, size_t offset, size_t size, hoedown_autolink_flags flags);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /** HOEDOWN_AUTOLINK_H **/\n"
  },
  {
    "path": "3rdpart/hoedown/src/buffer.c",
    "content": "#include \"buffer.h\"\n\n#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <assert.h>\n\nvoid *\nhoedown_malloc(size_t size)\n{\n\tvoid *ret = malloc(size);\n\n\tif (!ret) {\n\t\tfprintf(stderr, \"Allocation failed.\\n\");\n\t\tabort();\n\t}\n\n\treturn ret;\n}\n\nvoid *\nhoedown_calloc(size_t nmemb, size_t size)\n{\n\tvoid *ret = calloc(nmemb, size);\n\n\tif (!ret) {\n\t\tfprintf(stderr, \"Allocation failed.\\n\");\n\t\tabort();\n\t}\n\n\treturn ret;\n}\n\nvoid *\nhoedown_realloc(void *ptr, size_t size)\n{\n\tvoid *ret = realloc(ptr, size);\n\n\tif (!ret) {\n\t\tfprintf(stderr, \"Allocation failed.\\n\");\n\t\tabort();\n\t}\n\n\treturn ret;\n}\n\nvoid\nhoedown_buffer_init(\n\thoedown_buffer *buf,\n\tsize_t unit,\n\thoedown_realloc_callback data_realloc,\n\thoedown_free_callback data_free,\n\thoedown_free_callback buffer_free)\n{\n\tassert(buf);\n\n\tbuf->data = NULL;\n\tbuf->size = buf->asize = 0;\n\tbuf->unit = unit;\n\tbuf->data_realloc = data_realloc;\n\tbuf->data_free = data_free;\n\tbuf->buffer_free = buffer_free;\n}\n\nvoid\nhoedown_buffer_uninit(hoedown_buffer *buf)\n{\n\tassert(buf && buf->unit);\n\tbuf->data_free(buf->data);\n}\n\nhoedown_buffer *\nhoedown_buffer_new(size_t unit)\n{\n\thoedown_buffer *ret = hoedown_malloc(sizeof (hoedown_buffer));\n\thoedown_buffer_init(ret, unit, hoedown_realloc, free, free);\n\treturn ret;\n}\n\nvoid\nhoedown_buffer_free(hoedown_buffer *buf)\n{\n\tif (!buf) return;\n\tassert(buf && buf->unit);\n\n\tbuf->data_free(buf->data);\n\n\tif (buf->buffer_free)\n\t\tbuf->buffer_free(buf);\n}\n\nvoid\nhoedown_buffer_reset(hoedown_buffer *buf)\n{\n\tassert(buf && buf->unit);\n\n\tbuf->data_free(buf->data);\n\tbuf->data = NULL;\n\tbuf->size = buf->asize = 0;\n}\n\nvoid\nhoedown_buffer_grow(hoedown_buffer *buf, size_t neosz)\n{\n\tsize_t neoasz;\n\tassert(buf && buf->unit);\n\n\tif (buf->asize >= neosz)\n\t\treturn;\n\n\tneoasz = buf->asize + buf->unit;\n\twhile (neoasz < neosz)\n\t\tneoasz += buf->unit;\n\n\tbuf->data = buf->data_realloc(buf->data, neoasz);\n\tbuf->asize = neoasz;\n}\n\nvoid\nhoedown_buffer_put(hoedown_buffer *buf, const uint8_t *data, size_t size)\n{\n\tassert(buf && buf->unit);\n\n\tif (buf->size + size > buf->asize)\n\t\thoedown_buffer_grow(buf, buf->size + size);\n\n\tmemcpy(buf->data + buf->size, data, size);\n\tbuf->size += size;\n}\n\nvoid\nhoedown_buffer_puts(hoedown_buffer *buf, const char *str)\n{\n\thoedown_buffer_put(buf, (const uint8_t *)str, strlen(str));\n}\n\nvoid\nhoedown_buffer_putc(hoedown_buffer *buf, uint8_t c)\n{\n\tassert(buf && buf->unit);\n\n\tif (buf->size >= buf->asize)\n\t\thoedown_buffer_grow(buf, buf->size + 1);\n\n\tbuf->data[buf->size] = c;\n\tbuf->size += 1;\n}\n\nint\nhoedown_buffer_putf(hoedown_buffer *buf, FILE *file)\n{\n\tassert(buf && buf->unit);\n\n\twhile (!(feof(file) || ferror(file))) {\n\t\thoedown_buffer_grow(buf, buf->size + buf->unit);\n\t\tbuf->size += fread(buf->data + buf->size, 1, buf->unit, file);\n\t}\n\n\treturn ferror(file);\n}\n\nvoid\nhoedown_buffer_set(hoedown_buffer *buf, const uint8_t *data, size_t size)\n{\n\tassert(buf && buf->unit);\n\n\tif (size > buf->asize)\n\t\thoedown_buffer_grow(buf, size);\n\n\tmemcpy(buf->data, data, size);\n\tbuf->size = size;\n}\n\nvoid\nhoedown_buffer_sets(hoedown_buffer *buf, const char *str)\n{\n\thoedown_buffer_set(buf, (const uint8_t *)str, strlen(str));\n}\n\nint\nhoedown_buffer_eq(const hoedown_buffer *buf, const uint8_t *data, size_t size)\n{\n\tif (buf->size != size) return 0;\n\treturn memcmp(buf->data, data, size) == 0;\n}\n\nint\nhoedown_buffer_eqs(const hoedown_buffer *buf, const char *str)\n{\n\treturn hoedown_buffer_eq(buf, (const uint8_t *)str, strlen(str));\n}\n\nint\nhoedown_buffer_prefix(const hoedown_buffer *buf, const char *prefix)\n{\n\tsize_t i;\n\n\tfor (i = 0; i < buf->size; ++i) {\n\t\tif (prefix[i] == 0)\n\t\t\treturn 0;\n\n\t\tif (buf->data[i] != prefix[i])\n\t\t\treturn buf->data[i] - prefix[i];\n\t}\n\n\treturn 0;\n}\n\nvoid\nhoedown_buffer_slurp(hoedown_buffer *buf, size_t size)\n{\n\tassert(buf && buf->unit);\n\n\tif (size >= buf->size) {\n\t\tbuf->size = 0;\n\t\treturn;\n\t}\n\n\tbuf->size -= size;\n\tmemmove(buf->data, buf->data + size, buf->size);\n}\n\nconst char *\nhoedown_buffer_cstr(hoedown_buffer *buf)\n{\n\tassert(buf && buf->unit);\n\n\tif (buf->size < buf->asize && buf->data[buf->size] == 0)\n\t\treturn (char *)buf->data;\n\n\thoedown_buffer_grow(buf, buf->size + 1);\n\tbuf->data[buf->size] = 0;\n\n\treturn (char *)buf->data;\n}\n\nvoid\nhoedown_buffer_printf(hoedown_buffer *buf, const char *fmt, ...)\n{\n\tva_list ap;\n\tint n;\n\n\tassert(buf && buf->unit);\n\n\tif (buf->size >= buf->asize)\n\t\thoedown_buffer_grow(buf, buf->size + 1);\n\n\tva_start(ap, fmt);\n\tn = vsnprintf((char *)buf->data + buf->size, buf->asize - buf->size, fmt, ap);\n\tva_end(ap);\n\n\tif (n < 0) {\n#ifndef _MSC_VER\n\t\treturn;\n#else\n\t\tva_start(ap, fmt);\n\t\tn = _vscprintf(fmt, ap);\n\t\tva_end(ap);\n#endif\n\t}\n\n\tif ((size_t)n >= buf->asize - buf->size) {\n\t\thoedown_buffer_grow(buf, buf->size + n + 1);\n\n\t\tva_start(ap, fmt);\n\t\tn = vsnprintf((char *)buf->data + buf->size, buf->asize - buf->size, fmt, ap);\n\t\tva_end(ap);\n\t}\n\n\tif (n < 0)\n\t\treturn;\n\n\tbuf->size += n;\n}\n\nvoid hoedown_buffer_put_utf8(hoedown_buffer *buf, unsigned int c) {\n\tunsigned char unichar[4];\n\n\tassert(buf && buf->unit);\n\n\tif (c < 0x80) {\n\t\thoedown_buffer_putc(buf, c);\n\t}\n\telse if (c < 0x800) {\n\t\tunichar[0] = 192 + (c / 64);\n\t\tunichar[1] = 128 + (c % 64);\n\t\thoedown_buffer_put(buf, unichar, 2);\n\t}\n\telse if (c - 0xd800u < 0x800) {\n\t\tHOEDOWN_BUFPUTSL(buf, \"\\xef\\xbf\\xbd\");\n\t}\n\telse if (c < 0x10000) {\n\t\tunichar[0] = 224 + (c / 4096);\n\t\tunichar[1] = 128 + (c / 64) % 64;\n\t\tunichar[2] = 128 + (c % 64);\n\t\thoedown_buffer_put(buf, unichar, 3);\n\t}\n\telse if (c < 0x110000) {\n\t\tunichar[0] = 240 + (c / 262144);\n\t\tunichar[1] = 128 + (c / 4096) % 64;\n\t\tunichar[2] = 128 + (c / 64) % 64;\n\t\tunichar[3] = 128 + (c % 64);\n\t\thoedown_buffer_put(buf, unichar, 4);\n\t}\n\telse {\n\t\tHOEDOWN_BUFPUTSL(buf, \"\\xef\\xbf\\xbd\");\n\t}\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/buffer.h",
    "content": "/* buffer.h - simple, fast buffers */\n\n#ifndef HOEDOWN_BUFFER_H\n#define HOEDOWN_BUFFER_H\n\n#include <stdio.h>\n#include <stddef.h>\n#include <stdarg.h>\n#include <stdint.h>\n#include <stdlib.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if defined(_MSC_VER)\n#define __attribute__(x)\n#define inline __inline\n#define __builtin_expect(x,n) x\n#endif\n\n\n/*********\n * TYPES *\n *********/\n\ntypedef void *(*hoedown_realloc_callback)(void *, size_t);\ntypedef void (*hoedown_free_callback)(void *);\n\nstruct hoedown_buffer {\n\tuint8_t *data;\t/* actual character data */\n\tsize_t size;\t/* size of the string */\n\tsize_t asize;\t/* allocated size (0 = volatile buffer) */\n\tsize_t unit;\t/* reallocation unit size (0 = read-only buffer) */\n\n\thoedown_realloc_callback data_realloc;\n\thoedown_free_callback data_free;\n\thoedown_free_callback buffer_free;\n};\n\ntypedef struct hoedown_buffer hoedown_buffer;\n\n\n/*************\n * FUNCTIONS *\n *************/\n\n/* allocation wrappers */\nvoid *hoedown_malloc(size_t size) __attribute__ ((malloc));\nvoid *hoedown_calloc(size_t nmemb, size_t size) __attribute__ ((malloc));\nvoid *hoedown_realloc(void *ptr, size_t size) __attribute__ ((malloc));\n\n/* hoedown_buffer_init: initialize a buffer with custom allocators */\nvoid hoedown_buffer_init(\n\thoedown_buffer *buffer,\n\tsize_t unit,\n\thoedown_realloc_callback data_realloc,\n\thoedown_free_callback data_free,\n\thoedown_free_callback buffer_free\n);\n\n/* hoedown_buffer_uninit: uninitialize an existing buffer */\nvoid hoedown_buffer_uninit(hoedown_buffer *buf);\n\n/* hoedown_buffer_new: allocate a new buffer */\nhoedown_buffer *hoedown_buffer_new(size_t unit) __attribute__ ((malloc));\n\n/* hoedown_buffer_reset: free internal data of the buffer */\nvoid hoedown_buffer_reset(hoedown_buffer *buf);\n\n/* hoedown_buffer_grow: increase the allocated size to the given value */\nvoid hoedown_buffer_grow(hoedown_buffer *buf, size_t neosz);\n\n/* hoedown_buffer_put: append raw data to a buffer */\nvoid hoedown_buffer_put(hoedown_buffer *buf, const uint8_t *data, size_t size);\n\n/* hoedown_buffer_puts: append a NUL-terminated string to a buffer */\nvoid hoedown_buffer_puts(hoedown_buffer *buf, const char *str);\n\n/* hoedown_buffer_putc: append a single char to a buffer */\nvoid hoedown_buffer_putc(hoedown_buffer *buf, uint8_t c);\n\n/* hoedown_buffer_putf: read from a file and append to a buffer, until EOF or error */\nint hoedown_buffer_putf(hoedown_buffer *buf, FILE* file);\n\n/* hoedown_buffer_set: replace the buffer's contents with raw data */\nvoid hoedown_buffer_set(hoedown_buffer *buf, const uint8_t *data, size_t size);\n\n/* hoedown_buffer_sets: replace the buffer's contents with a NUL-terminated string */\nvoid hoedown_buffer_sets(hoedown_buffer *buf, const char *str);\n\n/* hoedown_buffer_eq: compare a buffer's data with other data for equality */\nint hoedown_buffer_eq(const hoedown_buffer *buf, const uint8_t *data, size_t size);\n\n/* hoedown_buffer_eq: compare a buffer's data with NUL-terminated string for equality */\nint hoedown_buffer_eqs(const hoedown_buffer *buf, const char *str);\n\n/* hoedown_buffer_prefix: compare the beginning of a buffer with a string */\nint hoedown_buffer_prefix(const hoedown_buffer *buf, const char *prefix);\n\n/* hoedown_buffer_slurp: remove a given number of bytes from the head of the buffer */\nvoid hoedown_buffer_slurp(hoedown_buffer *buf, size_t size);\n\n/* hoedown_buffer_cstr: NUL-termination of the string array (making a C-string) */\nconst char *hoedown_buffer_cstr(hoedown_buffer *buf);\n\n/* hoedown_buffer_printf: formatted printing to a buffer */\nvoid hoedown_buffer_printf(hoedown_buffer *buf, const char *fmt, ...) __attribute__ ((format (printf, 2, 3)));\n\n/* hoedown_buffer_put_utf8: put a Unicode character encoded as UTF-8 */\nvoid hoedown_buffer_put_utf8(hoedown_buffer *buf, unsigned int codepoint);\n\n/* hoedown_buffer_free: free the buffer */\nvoid hoedown_buffer_free(hoedown_buffer *buf);\n\n\n/* HOEDOWN_BUFPUTSL: optimized hoedown_buffer_puts of a string literal */\n#define HOEDOWN_BUFPUTSL(output, literal) \\\n\thoedown_buffer_put(output, (const uint8_t *)literal, sizeof(literal) - 1)\n\n/* HOEDOWN_BUFSETSL: optimized hoedown_buffer_sets of a string literal */\n#define HOEDOWN_BUFSETSL(output, literal) \\\n\thoedown_buffer_set(output, (const uint8_t *)literal, sizeof(literal) - 1)\n\n/* HOEDOWN_BUFEQSL: optimized hoedown_buffer_eqs of a string literal */\n#define HOEDOWN_BUFEQSL(output, literal) \\\n\thoedown_buffer_eq(output, (const uint8_t *)literal, sizeof(literal) - 1)\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /** HOEDOWN_BUFFER_H **/\n"
  },
  {
    "path": "3rdpart/hoedown/src/document.c",
    "content": "#include \"document.h\"\n\n#include <assert.h>\n#include <string.h>\n#include <ctype.h>\n#include <stdio.h>\n\n#include \"stack.h\"\n\n#ifndef _MSC_VER\n#include <strings.h>\n#else\n#define strncasecmp\t_strnicmp\n#endif\n\n#define REF_TABLE_SIZE 8\n\n#define BUFFER_BLOCK 0\n#define BUFFER_SPAN 1\n\n#define HOEDOWN_LI_END 8\t/* internal list flag */\n\nconst char *hoedown_find_block_tag(const char *str, unsigned int len);\n\n/***************\n * LOCAL TYPES *\n ***************/\n\n/* link_ref: reference to a link */\nstruct link_ref {\n\tunsigned int id;\n\n\thoedown_buffer *link;\n\thoedown_buffer *title;\n\n\tstruct link_ref *next;\n};\n\n/* footnote_ref: reference to a footnote */\nstruct footnote_ref {\n\tunsigned int id;\n\n\tint is_used;\n\tunsigned int num;\n\n\thoedown_buffer *contents;\n};\n\n/* footnote_item: an item in a footnote_list */\nstruct footnote_item {\n\tstruct footnote_ref *ref;\n\tstruct footnote_item *next;\n};\n\n/* footnote_list: linked list of footnote_item */\nstruct footnote_list {\n\tunsigned int count;\n\tstruct footnote_item *head;\n\tstruct footnote_item *tail;\n};\n\n/* char_trigger: function pointer to render active chars */\n/*   returns the number of chars taken care of */\n/*   data is the pointer of the beginning of the span */\n/*   offset is the number of valid chars before data */\ntypedef size_t\n(*char_trigger)(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\n\nstatic size_t char_emphasis(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_quote(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_linebreak(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_codespan(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_escape(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_entity(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_langle_tag(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_autolink_url(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_autolink_email(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_autolink_www(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_link(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_image(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_superscript(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\nstatic size_t char_math(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size);\n\nenum markdown_char_t {\n\tMD_CHAR_NONE = 0,\n\tMD_CHAR_EMPHASIS,\n\tMD_CHAR_CODESPAN,\n\tMD_CHAR_LINEBREAK,\n\tMD_CHAR_LINK,\n\tMD_CHAR_IMAGE,\n\tMD_CHAR_LANGLE,\n\tMD_CHAR_ESCAPE,\n\tMD_CHAR_ENTITY,\n\tMD_CHAR_AUTOLINK_URL,\n\tMD_CHAR_AUTOLINK_EMAIL,\n\tMD_CHAR_AUTOLINK_WWW,\n\tMD_CHAR_SUPERSCRIPT,\n\tMD_CHAR_QUOTE,\n\tMD_CHAR_MATH\n};\n\nstatic char_trigger markdown_char_ptrs[] = {\n\tNULL,\n\t&char_emphasis,\n\t&char_codespan,\n\t&char_linebreak,\n\t&char_link,\n\t&char_image,\n\t&char_langle_tag,\n\t&char_escape,\n\t&char_entity,\n\t&char_autolink_url,\n\t&char_autolink_email,\n\t&char_autolink_www,\n\t&char_superscript,\n\t&char_quote,\n\t&char_math\n};\n\nstruct hoedown_document {\n\thoedown_renderer md;\n\thoedown_renderer_data data;\n\n\tstruct link_ref *refs[REF_TABLE_SIZE];\n\tstruct footnote_list footnotes_found;\n\tstruct footnote_list footnotes_used;\n\tuint8_t active_char[256];\n\thoedown_stack work_bufs[2];\n\thoedown_extensions ext_flags;\n\tsize_t max_nesting;\n\tint in_link_body;\n};\n\n/***************************\n * HELPER FUNCTIONS *\n ***************************/\n\nstatic hoedown_buffer *\nnewbuf(hoedown_document *doc, int type)\n{\n\tstatic const size_t buf_size[2] = {256, 64};\n\thoedown_buffer *work = NULL;\n\thoedown_stack *pool = &doc->work_bufs[type];\n\n\tif (pool->size < pool->asize &&\n\t\tpool->item[pool->size] != NULL) {\n\t\twork = pool->item[pool->size++];\n\t\twork->size = 0;\n\t} else {\n\t\twork = hoedown_buffer_new(buf_size[type]);\n\t\thoedown_stack_push(pool, work);\n\t}\n\n\treturn work;\n}\n\nstatic void\npopbuf(hoedown_document *doc, int type)\n{\n\tdoc->work_bufs[type].size--;\n}\n\nstatic void\nunscape_text(hoedown_buffer *ob, hoedown_buffer *src)\n{\n\tsize_t i = 0, org;\n\twhile (i < src->size) {\n\t\torg = i;\n\t\twhile (i < src->size && src->data[i] != '\\\\')\n\t\t\ti++;\n\n\t\tif (i > org)\n\t\t\thoedown_buffer_put(ob, src->data + org, i - org);\n\n\t\tif (i + 1 >= src->size)\n\t\t\tbreak;\n\n\t\thoedown_buffer_putc(ob, src->data[i + 1]);\n\t\ti += 2;\n\t}\n}\n\nstatic unsigned int\nhash_link_ref(const uint8_t *link_ref, size_t length)\n{\n\tsize_t i;\n\tunsigned int hash = 0;\n\n\tfor (i = 0; i < length; ++i)\n\t\thash = tolower(link_ref[i]) + (hash << 6) + (hash << 16) - hash;\n\n\treturn hash;\n}\n\nstatic struct link_ref *\nadd_link_ref(\n\tstruct link_ref **references,\n\tconst uint8_t *name, size_t name_size)\n{\n\tstruct link_ref *ref = hoedown_calloc(1, sizeof(struct link_ref));\n\n\tref->id = hash_link_ref(name, name_size);\n\tref->next = references[ref->id % REF_TABLE_SIZE];\n\n\treferences[ref->id % REF_TABLE_SIZE] = ref;\n\treturn ref;\n}\n\nstatic struct link_ref *\nfind_link_ref(struct link_ref **references, uint8_t *name, size_t length)\n{\n\tunsigned int hash = hash_link_ref(name, length);\n\tstruct link_ref *ref = NULL;\n\n\tref = references[hash % REF_TABLE_SIZE];\n\n\twhile (ref != NULL) {\n\t\tif (ref->id == hash)\n\t\t\treturn ref;\n\n\t\tref = ref->next;\n\t}\n\n\treturn NULL;\n}\n\nstatic void\nfree_link_refs(struct link_ref **references)\n{\n\tsize_t i;\n\n\tfor (i = 0; i < REF_TABLE_SIZE; ++i) {\n\t\tstruct link_ref *r = references[i];\n\t\tstruct link_ref *next;\n\n\t\twhile (r) {\n\t\t\tnext = r->next;\n\t\t\thoedown_buffer_free(r->link);\n\t\t\thoedown_buffer_free(r->title);\n\t\t\tfree(r);\n\t\t\tr = next;\n\t\t}\n\t}\n}\n\nstatic struct footnote_ref *\ncreate_footnote_ref(struct footnote_list *list, const uint8_t *name, size_t name_size)\n{\n\tstruct footnote_ref *ref = hoedown_calloc(1, sizeof(struct footnote_ref));\n\n\tref->id = hash_link_ref(name, name_size);\n\n\treturn ref;\n}\n\nstatic int\nadd_footnote_ref(struct footnote_list *list, struct footnote_ref *ref)\n{\n\tstruct footnote_item *item = hoedown_calloc(1, sizeof(struct footnote_item));\n\tif (!item)\n\t\treturn 0;\n\titem->ref = ref;\n\n\tif (list->head == NULL) {\n\t\tlist->head = list->tail = item;\n\t} else {\n\t\tlist->tail->next = item;\n\t\tlist->tail = item;\n\t}\n\tlist->count++;\n\n\treturn 1;\n}\n\nstatic struct footnote_ref *\nfind_footnote_ref(struct footnote_list *list, uint8_t *name, size_t length)\n{\n\tunsigned int hash = hash_link_ref(name, length);\n\tstruct footnote_item *item = NULL;\n\n\titem = list->head;\n\n\twhile (item != NULL) {\n\t\tif (item->ref->id == hash)\n\t\t\treturn item->ref;\n\t\titem = item->next;\n\t}\n\n\treturn NULL;\n}\n\nstatic void\nfree_footnote_ref(struct footnote_ref *ref)\n{\n\thoedown_buffer_free(ref->contents);\n\tfree(ref);\n}\n\nstatic void\nfree_footnote_list(struct footnote_list *list, int free_refs)\n{\n\tstruct footnote_item *item = list->head;\n\tstruct footnote_item *next;\n\n\twhile (item) {\n\t\tnext = item->next;\n\t\tif (free_refs)\n\t\t\tfree_footnote_ref(item->ref);\n\t\tfree(item);\n\t\titem = next;\n\t}\n}\n\n\n/*\n * Check whether a char is a Markdown spacing char.\n\n * Right now we only consider spaces the actual\n * space and a newline: tabs and carriage returns\n * are filtered out during the preprocessing phase.\n *\n * If we wanted to actually be UTF-8 compliant, we\n * should instead extract an Unicode codepoint from\n * this character and check for space properties.\n */\nstatic int\n_isspace(int c)\n{\n\treturn c == ' ' || c == '\\n';\n}\n\n/* is_empty_all: verify that all the data is spacing */\nstatic int\nis_empty_all(const uint8_t *data, size_t size)\n{\n\tsize_t i = 0;\n\twhile (i < size && _isspace(data[i])) i++;\n\treturn i == size;\n}\n\n/*\n * Replace all spacing characters in data with spaces. As a special\n * case, this collapses a newline with the previous space, if possible.\n */\nstatic void\nreplace_spacing(hoedown_buffer *ob, const uint8_t *data, size_t size)\n{\n\tsize_t i = 0, mark;\n\thoedown_buffer_grow(ob, size);\n\twhile (1) {\n\t\tmark = i;\n\t\twhile (i < size && data[i] != '\\n') i++;\n\t\thoedown_buffer_put(ob, data + mark, i - mark);\n\n\t\tif (i >= size) break;\n\n\t\tif (!(i > 0 && data[i-1] == ' '))\n\t\t\thoedown_buffer_putc(ob, ' ');\n\t\ti++;\n\t}\n}\n\n/****************************\n * INLINE PARSING FUNCTIONS *\n ****************************/\n\n/* is_mail_autolink • looks for the address part of a mail autolink and '>' */\n/* this is less strict than the original markdown e-mail address matching */\nstatic size_t\nis_mail_autolink(uint8_t *data, size_t size)\n{\n\tsize_t i = 0, nb = 0;\n\n\t/* address is assumed to be: [-@._a-zA-Z0-9]+ with exactly one '@' */\n\tfor (i = 0; i < size; ++i) {\n\t\tif (isalnum(data[i]))\n\t\t\tcontinue;\n\n\t\tswitch (data[i]) {\n\t\t\tcase '@':\n\t\t\t\tnb++;\n\n\t\t\tcase '-':\n\t\t\tcase '.':\n\t\t\tcase '_':\n\t\t\t\tbreak;\n\n\t\t\tcase '>':\n\t\t\t\treturn (nb == 1) ? i + 1 : 0;\n\n\t\t\tdefault:\n\t\t\t\treturn 0;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\n/* tag_length • returns the length of the given tag, or 0 is it's not valid */\nstatic size_t\ntag_length(uint8_t *data, size_t size, hoedown_autolink_type *autolink)\n{\n\tsize_t i, j;\n\n\t/* a valid tag can't be shorter than 3 chars */\n\tif (size < 3) return 0;\n\n\tif (data[0] != '<') return 0;\n\n        /* HTML comment, laxist form */\n        if (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {\n\t\ti = 5;\n\n\t\twhile (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))\n\t\t\ti++;\n\n\t\ti++;\n\n\t\tif (i <= size)\n\t\t\treturn i;\n        }\n\n\t/* begins with a '<' optionally followed by '/', followed by letter or number */\n        i = (data[1] == '/') ? 2 : 1;\n\n\tif (!isalnum(data[i]))\n\t\treturn 0;\n\n\t/* scheme test */\n\t*autolink = HOEDOWN_AUTOLINK_NONE;\n\n\t/* try to find the beginning of an URI */\n\twhile (i < size && (isalnum(data[i]) || data[i] == '.' || data[i] == '+' || data[i] == '-'))\n\t\ti++;\n\n\tif (i > 1 && data[i] == '@') {\n\t\tif ((j = is_mail_autolink(data + i, size - i)) != 0) {\n\t\t\t*autolink = HOEDOWN_AUTOLINK_EMAIL;\n\t\t\treturn i + j;\n\t\t}\n\t}\n\n\tif (i > 2 && data[i] == ':') {\n\t\t*autolink = HOEDOWN_AUTOLINK_NORMAL;\n\t\ti++;\n\t}\n\n\t/* completing autolink test: no spacing or ' or \" */\n\tif (i >= size)\n\t\t*autolink = HOEDOWN_AUTOLINK_NONE;\n\n\telse if (*autolink) {\n\t\tj = i;\n\n\t\twhile (i < size) {\n\t\t\tif (data[i] == '\\\\') i += 2;\n\t\t\telse if (data[i] == '>' || data[i] == '\\'' ||\n\t\t\t\t\tdata[i] == '\"' || data[i] == ' ' || data[i] == '\\n')\n\t\t\t\t\tbreak;\n\t\t\telse i++;\n\t\t}\n\n\t\tif (i >= size) return 0;\n\t\tif (i > j && data[i] == '>') return i + 1;\n\t\t/* one of the forbidden chars has been found */\n\t\t*autolink = HOEDOWN_AUTOLINK_NONE;\n\t}\n\n\t/* looking for something looking like a tag end */\n\twhile (i < size && data[i] != '>') i++;\n\tif (i >= size) return 0;\n\treturn i + 1;\n}\n\n/* parse_inline • parses inline markdown elements */\nstatic void\nparse_inline(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size)\n{\n\tsize_t i = 0, end = 0, consumed = 0;\n\thoedown_buffer work = { 0, 0, 0, 0, NULL, NULL, NULL };\n\tuint8_t *active_char = doc->active_char;\n\n\tif (doc->work_bufs[BUFFER_SPAN].size +\n\t\tdoc->work_bufs[BUFFER_BLOCK].size > doc->max_nesting)\n\t\treturn;\n\n\twhile (i < size) {\n\t\t/* copying inactive chars into the output */\n\t\twhile (end < size && active_char[data[end]] == 0)\n\t\t\tend++;\n\n\t\tif (doc->md.normal_text) {\n\t\t\twork.data = data + i;\n\t\t\twork.size = end - i;\n\t\t\tdoc->md.normal_text(ob, &work, &doc->data);\n\t\t}\n\t\telse\n\t\t\thoedown_buffer_put(ob, data + i, end - i);\n\n\t\tif (end >= size) break;\n\t\ti = end;\n\n\t\tend = markdown_char_ptrs[ (int)active_char[data[end]] ](ob, doc, data + i, i - consumed, size - i);\n\t\tif (!end) /* no action from the callback */\n\t\t\tend = i + 1;\n\t\telse {\n\t\t\ti += end;\n\t\t\tend = i;\n\t\t\tconsumed = i;\n\t\t}\n\t}\n}\n\n/* is_escaped • returns whether special char at data[loc] is escaped by '\\\\' */\nstatic int\nis_escaped(uint8_t *data, size_t loc)\n{\n\tsize_t i = loc;\n\twhile (i >= 1 && data[i - 1] == '\\\\')\n\t\ti--;\n\n\t/* odd numbers of backslashes escapes data[loc] */\n\treturn (loc - i) % 2;\n}\n\n/* find_emph_char • looks for the next emph uint8_t, skipping other constructs */\nstatic size_t\nfind_emph_char(uint8_t *data, size_t size, uint8_t c)\n{\n\tsize_t i = 0;\n\n\twhile (i < size) {\n\t\twhile (i < size && data[i] != c && data[i] != '[' && data[i] != '`')\n\t\t\ti++;\n\n\t\tif (i == size)\n\t\t\treturn 0;\n\n\t\t/* not counting escaped chars */\n\t\tif (is_escaped(data, i)) {\n\t\t\ti++; continue;\n\t\t}\n\n\t\tif (data[i] == c)\n\t\t\treturn i;\n\n\t\t/* skipping a codespan */\n\t\tif (data[i] == '`') {\n\t\t\tsize_t span_nb = 0, bt;\n\t\t\tsize_t tmp_i = 0;\n\n\t\t\t/* counting the number of opening backticks */\n\t\t\twhile (i < size && data[i] == '`') {\n\t\t\t\ti++; span_nb++;\n\t\t\t}\n\n\t\t\tif (i >= size) return 0;\n\n\t\t\t/* finding the matching closing sequence */\n\t\t\tbt = 0;\n\t\t\twhile (i < size && bt < span_nb) {\n\t\t\t\tif (!tmp_i && data[i] == c) tmp_i = i;\n\t\t\t\tif (data[i] == '`') bt++;\n\t\t\t\telse bt = 0;\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\t/* not a well-formed codespan; use found matching emph char */\n\t\t\tif (bt < span_nb && i >= size) return tmp_i;\n\t\t}\n\t\t/* skipping a link */\n\t\telse if (data[i] == '[') {\n\t\t\tsize_t tmp_i = 0;\n\t\t\tuint8_t cc;\n\n\t\t\ti++;\n\t\t\twhile (i < size && data[i] != ']') {\n\t\t\t\tif (!tmp_i && data[i] == c) tmp_i = i;\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\ti++;\n\t\t\twhile (i < size && _isspace(data[i]))\n\t\t\t\ti++;\n\n\t\t\tif (i >= size)\n\t\t\t\treturn tmp_i;\n\n\t\t\tswitch (data[i]) {\n\t\t\tcase '[':\n\t\t\t\tcc = ']'; break;\n\n\t\t\tcase '(':\n\t\t\t\tcc = ')'; break;\n\n\t\t\tdefault:\n\t\t\t\tif (tmp_i)\n\t\t\t\t\treturn tmp_i;\n\t\t\t\telse\n\t\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\ti++;\n\t\t\twhile (i < size && data[i] != cc) {\n\t\t\t\tif (!tmp_i && data[i] == c) tmp_i = i;\n\t\t\t\ti++;\n\t\t\t}\n\n\t\t\tif (i >= size)\n\t\t\t\treturn tmp_i;\n\n\t\t\ti++;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\n/* parse_emph1 • parsing single emphase */\n/* closed by a symbol not preceded by spacing and not followed by symbol */\nstatic size_t\nparse_emph1(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, uint8_t c)\n{\n\tsize_t i = 0, len;\n\thoedown_buffer *work = 0;\n\tint r;\n\n\t/* skipping one symbol if coming from emph3 */\n\tif (size > 1 && data[0] == c && data[1] == c) i = 1;\n\n\twhile (i < size) {\n\t\tlen = find_emph_char(data + i, size - i, c);\n\t\tif (!len) return 0;\n\t\ti += len;\n\t\tif (i >= size) return 0;\n\n\t\tif (data[i] == c && !_isspace(data[i - 1])) {\n\n\t\t\tif (doc->ext_flags & HOEDOWN_EXT_NO_INTRA_EMPHASIS) {\n\t\t\t\tif (i + 1 < size && isalnum(data[i + 1]))\n\t\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\twork = newbuf(doc, BUFFER_SPAN);\n\t\t\tparse_inline(work, doc, data, i);\n\n\t\t\tif (doc->ext_flags & HOEDOWN_EXT_UNDERLINE && c == '_')\n\t\t\t\tr = doc->md.underline(ob, work, &doc->data);\n\t\t\telse\n\t\t\t\tr = doc->md.emphasis(ob, work, &doc->data);\n\n\t\t\tpopbuf(doc, BUFFER_SPAN);\n\t\t\treturn r ? i + 1 : 0;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\n/* parse_emph2 • parsing single emphase */\nstatic size_t\nparse_emph2(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, uint8_t c)\n{\n\tsize_t i = 0, len;\n\thoedown_buffer *work = 0;\n\tint r;\n\n\twhile (i < size) {\n\t\tlen = find_emph_char(data + i, size - i, c);\n\t\tif (!len) return 0;\n\t\ti += len;\n\n\t\tif (i + 1 < size && data[i] == c && data[i + 1] == c && i && !_isspace(data[i - 1])) {\n\t\t\twork = newbuf(doc, BUFFER_SPAN);\n\t\t\tparse_inline(work, doc, data, i);\n\n\t\t\tif (c == '~')\n\t\t\t\tr = doc->md.strikethrough(ob, work, &doc->data);\n\t\t\telse if (c == '=')\n\t\t\t\tr = doc->md.highlight(ob, work, &doc->data);\n\t\t\telse\n\t\t\t\tr = doc->md.double_emphasis(ob, work, &doc->data);\n\n\t\t\tpopbuf(doc, BUFFER_SPAN);\n\t\t\treturn r ? i + 2 : 0;\n\t\t}\n\t\ti++;\n\t}\n\treturn 0;\n}\n\n/* parse_emph3 • parsing single emphase */\n/* finds the first closing tag, and delegates to the other emph */\nstatic size_t\nparse_emph3(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, uint8_t c)\n{\n\tsize_t i = 0, len;\n\tint r;\n\n\twhile (i < size) {\n\t\tlen = find_emph_char(data + i, size - i, c);\n\t\tif (!len) return 0;\n\t\ti += len;\n\n\t\t/* skip spacing preceded symbols */\n\t\tif (data[i] != c || _isspace(data[i - 1]))\n\t\t\tcontinue;\n\n\t\tif (i + 2 < size && data[i + 1] == c && data[i + 2] == c && doc->md.triple_emphasis) {\n\t\t\t/* triple symbol found */\n\t\t\thoedown_buffer *work = newbuf(doc, BUFFER_SPAN);\n\n\t\t\tparse_inline(work, doc, data, i);\n\t\t\tr = doc->md.triple_emphasis(ob, work, &doc->data);\n\t\t\tpopbuf(doc, BUFFER_SPAN);\n\t\t\treturn r ? i + 3 : 0;\n\n\t\t} else if (i + 1 < size && data[i + 1] == c) {\n\t\t\t/* double symbol found, handing over to emph1 */\n\t\t\tlen = parse_emph1(ob, doc, data - 2, size + 2, c);\n\t\t\tif (!len) return 0;\n\t\t\telse return len - 2;\n\n\t\t} else {\n\t\t\t/* single symbol found, handing over to emph2 */\n\t\t\tlen = parse_emph2(ob, doc, data - 1, size + 1, c);\n\t\t\tif (!len) return 0;\n\t\t\telse return len - 1;\n\t\t}\n\t}\n\treturn 0;\n}\n\n/* parse_math • parses a math span until the given ending delimiter */\nstatic size_t\nparse_math(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size, const char *end, size_t delimsz, int displaymode)\n{\n\thoedown_buffer text = { NULL, 0, 0, 0, NULL, NULL, NULL };\n\tsize_t i = delimsz;\n\n\tif (!doc->md.math)\n\t\treturn 0;\n\n\t/* find ending delimiter */\n\twhile (1) {\n\t\twhile (i < size && data[i] != (uint8_t)end[0])\n\t\t\ti++;\n\n\t\tif (i >= size)\n\t\t\treturn 0;\n\n\t\tif (!is_escaped(data, i) && !(i + delimsz > size)\n\t\t\t&& memcmp(data + i, end, delimsz) == 0)\n\t\t\tbreak;\n\n\t\ti++;\n\t}\n\n\t/* prepare buffers */\n\ttext.data = data + delimsz;\n\ttext.size = i - delimsz;\n\n\t/* if this is a $$ and MATH_EXPLICIT is not active,\n\t * guess whether displaymode should be enabled from the context */\n\ti += delimsz;\n\tif (delimsz == 2 && !(doc->ext_flags & HOEDOWN_EXT_MATH_EXPLICIT))\n\t\tdisplaymode = is_empty_all(data - offset, offset) && is_empty_all(data + i, size - i);\n\n\t/* call callback */\n\tif (doc->md.math(ob, &text, displaymode, &doc->data))\n\t\treturn i;\n\n\treturn 0;\n}\n\n/* char_emphasis • single and double emphasis parsing */\nstatic size_t\nchar_emphasis(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\tuint8_t c = data[0];\n\tsize_t ret;\n\n\tif (doc->ext_flags & HOEDOWN_EXT_NO_INTRA_EMPHASIS) {\n\t\tif (offset > 0 && !_isspace(data[-1]) && data[-1] != '>' && data[-1] != '(')\n\t\t\treturn 0;\n\t}\n\n\tif (size > 2 && data[1] != c) {\n\t\t/* spacing cannot follow an opening emphasis;\n\t\t * strikethrough and highlight only takes two characters '~~' */\n\t\tif (c == '~' || c == '=' || _isspace(data[1]) || (ret = parse_emph1(ob, doc, data + 1, size - 1, c)) == 0)\n\t\t\treturn 0;\n\n\t\treturn ret + 1;\n\t}\n\n\tif (size > 3 && data[1] == c && data[2] != c) {\n\t\tif (_isspace(data[2]) || (ret = parse_emph2(ob, doc, data + 2, size - 2, c)) == 0)\n\t\t\treturn 0;\n\n\t\treturn ret + 2;\n\t}\n\n\tif (size > 4 && data[1] == c && data[2] == c && data[3] != c) {\n\t\tif (c == '~' || c == '=' || _isspace(data[3]) || (ret = parse_emph3(ob, doc, data + 3, size - 3, c)) == 0)\n\t\t\treturn 0;\n\n\t\treturn ret + 3;\n\t}\n\n\treturn 0;\n}\n\n\n/* char_linebreak • '\\n' preceded by two spaces (assuming linebreak != 0) */\nstatic size_t\nchar_linebreak(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\tif (offset < 2 || data[-1] != ' ' || data[-2] != ' ')\n\t\treturn 0;\n\n\t/* removing the last space from ob and rendering */\n\twhile (ob->size && ob->data[ob->size - 1] == ' ')\n\t\tob->size--;\n\n\treturn doc->md.linebreak(ob, &doc->data) ? 1 : 0;\n}\n\n\n/* char_codespan • '`' parsing a code span (assuming codespan != 0) */\nstatic size_t\nchar_codespan(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\thoedown_buffer work = { NULL, 0, 0, 0, NULL, NULL, NULL };\n\tsize_t end, nb = 0, i, f_begin, f_end;\n\n\t/* counting the number of backticks in the delimiter */\n\twhile (nb < size && data[nb] == '`')\n\t\tnb++;\n\n\t/* finding the next delimiter */\n\ti = 0;\n\tfor (end = nb; end < size && i < nb; end++) {\n\t\tif (data[end] == '`') i++;\n\t\telse i = 0;\n\t}\n\n\tif (i < nb && end >= size)\n\t\treturn 0; /* no matching delimiter */\n\n\t/* trimming outside spaces */\n\tf_begin = nb;\n\twhile (f_begin < end && data[f_begin] == ' ')\n\t\tf_begin++;\n\n\tf_end = end - nb;\n\twhile (f_end > nb && data[f_end-1] == ' ')\n\t\tf_end--;\n\n\t/* real code span */\n\tif (f_begin < f_end) {\n\t\twork.data = data + f_begin;\n\t\twork.size = f_end - f_begin;\n\n\t\tif (!doc->md.codespan(ob, &work, &doc->data))\n\t\t\tend = 0;\n\t} else {\n\t\tif (!doc->md.codespan(ob, 0, &doc->data))\n\t\t\tend = 0;\n\t}\n\n\treturn end;\n}\n\n/* char_quote • '\"' parsing a quote */\nstatic size_t\nchar_quote(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\tsize_t end, nq = 0, i, f_begin, f_end;\n\n\t/* counting the number of quotes in the delimiter */\n\twhile (nq < size && data[nq] == '\"')\n\t\tnq++;\n\n\t/* finding the next delimiter */\n\tend = nq;\n\twhile (1) {\n\t\ti = end;\n\t\tend += find_emph_char(data + end, size - end, '\"');\n\t\tif (end == i) return 0;\t\t/* no matching delimiter */\n\t\ti = end;\n\t\twhile (end < size && data[end] == '\"' && end - i < nq) end++;\n\t\tif (end - i >= nq) break;\n\t}\n\n\t/* trimming outside spaces */\n\tf_begin = nq;\n\twhile (f_begin < end && data[f_begin] == ' ')\n\t\tf_begin++;\n\n\tf_end = end - nq;\n\twhile (f_end > nq && data[f_end-1] == ' ')\n\t\tf_end--;\n\n\t/* real quote */\n\tif (f_begin < f_end) {\n\t\thoedown_buffer *work = newbuf(doc, BUFFER_SPAN);\n\t\tparse_inline(work, doc, data + f_begin, f_end - f_begin);\n\n\t\tif (!doc->md.quote(ob, work, &doc->data))\n\t\t\tend = 0;\n\t\tpopbuf(doc, BUFFER_SPAN);\n\t} else {\n\t\tif (!doc->md.quote(ob, 0, &doc->data))\n\t\t\tend = 0;\n\t}\n\n\treturn end;\n}\n\n\n/* char_escape • '\\\\' backslash escape */\nstatic size_t\nchar_escape(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\tstatic const char *escape_chars = \"\\\\`*_{}[]()#+-.!:|&<>^~=\\\"$\";\n\thoedown_buffer work = { 0, 0, 0, 0, NULL, NULL, NULL };\n\tsize_t w;\n\n\tif (size > 1) {\n\t\tif (data[1] == '\\\\' && (doc->ext_flags & HOEDOWN_EXT_MATH) &&\n\t\t\tsize > 2 && (data[2] == '(' || data[2] == '[')) {\n\t\t\tconst char *end = (data[2] == '[') ? \"\\\\\\\\]\" : \"\\\\\\\\)\";\n\t\t\tw = parse_math(ob, doc, data, offset, size, end, 3, data[2] == '[');\n\t\t\tif (w) return w;\n\t\t}\n\n\t\tif (strchr(escape_chars, data[1]) == NULL)\n\t\t\treturn 0;\n\n\t\tif (doc->md.normal_text) {\n\t\t\twork.data = data + 1;\n\t\t\twork.size = 1;\n\t\t\tdoc->md.normal_text(ob, &work, &doc->data);\n\t\t}\n\t\telse hoedown_buffer_putc(ob, data[1]);\n\t} else if (size == 1) {\n\t\tif (doc->md.normal_text) {\n\t\t\twork.data = data;\n\t\t\twork.size = 1;\n\t\t\tdoc->md.normal_text(ob, &work, &doc->data);\n\t\t}\n\t\telse hoedown_buffer_putc(ob, data[0]);\n\t}\n\n\treturn 2;\n}\n\n/* char_entity • '&' escaped when it doesn't belong to an entity */\n/* valid entities are assumed to be anything matching &#?[A-Za-z0-9]+; */\nstatic size_t\nchar_entity(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\tsize_t end = 1;\n\thoedown_buffer work = { 0, 0, 0, 0, NULL, NULL, NULL };\n\n\tif (end < size && data[end] == '#')\n\t\tend++;\n\n\twhile (end < size && isalnum(data[end]))\n\t\tend++;\n\n\tif (end < size && data[end] == ';')\n\t\tend++; /* real entity */\n\telse\n\t\treturn 0; /* lone '&' */\n\n\tif (doc->md.entity) {\n\t\twork.data = data;\n\t\twork.size = end;\n\t\tdoc->md.entity(ob, &work, &doc->data);\n\t}\n\telse hoedown_buffer_put(ob, data, end);\n\n\treturn end;\n}\n\n/* char_langle_tag • '<' when tags or autolinks are allowed */\nstatic size_t\nchar_langle_tag(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\thoedown_buffer work = { NULL, 0, 0, 0, NULL, NULL, NULL };\n\thoedown_autolink_type altype = HOEDOWN_AUTOLINK_NONE;\n\tsize_t end = tag_length(data, size, &altype);\n\tint ret = 0;\n\n\twork.data = data;\n\twork.size = end;\n\n\tif (end > 2) {\n\t\tif (doc->md.autolink && altype != HOEDOWN_AUTOLINK_NONE) {\n\t\t\thoedown_buffer *u_link = newbuf(doc, BUFFER_SPAN);\n\t\t\twork.data = data + 1;\n\t\t\twork.size = end - 2;\n\t\t\tunscape_text(u_link, &work);\n\t\t\tret = doc->md.autolink(ob, u_link, altype, &doc->data);\n\t\t\tpopbuf(doc, BUFFER_SPAN);\n\t\t}\n\t\telse if (doc->md.raw_html)\n\t\t\tret = doc->md.raw_html(ob, &work, &doc->data);\n\t}\n\n\tif (!ret) return 0;\n\telse return end;\n}\n\nstatic size_t\nchar_autolink_www(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\thoedown_buffer *link, *link_url, *link_text;\n\tsize_t link_len, rewind;\n\n\tif (!doc->md.link || doc->in_link_body)\n\t\treturn 0;\n\n\tlink = newbuf(doc, BUFFER_SPAN);\n\n\tif ((link_len = hoedown_autolink__www(&rewind, link, data, offset, size, HOEDOWN_AUTOLINK_SHORT_DOMAINS)) > 0) {\n\t\tlink_url = newbuf(doc, BUFFER_SPAN);\n\t\tHOEDOWN_BUFPUTSL(link_url, \"http://\");\n\t\thoedown_buffer_put(link_url, link->data, link->size);\n\n\t\tif (ob->size > rewind)\n\t\t\tob->size -= rewind;\n\t\telse\n\t\t\tob->size = 0;\n\n\t\tif (doc->md.normal_text) {\n\t\t\tlink_text = newbuf(doc, BUFFER_SPAN);\n\t\t\tdoc->md.normal_text(link_text, link, &doc->data);\n\t\t\tdoc->md.link(ob, link_text, link_url, NULL, &doc->data);\n\t\t\tpopbuf(doc, BUFFER_SPAN);\n\t\t} else {\n\t\t\tdoc->md.link(ob, link, link_url, NULL, &doc->data);\n\t\t}\n\t\tpopbuf(doc, BUFFER_SPAN);\n\t}\n\n\tpopbuf(doc, BUFFER_SPAN);\n\treturn link_len;\n}\n\nstatic size_t\nchar_autolink_email(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\thoedown_buffer *link;\n\tsize_t link_len, rewind;\n\n\tif (!doc->md.autolink || doc->in_link_body)\n\t\treturn 0;\n\n\tlink = newbuf(doc, BUFFER_SPAN);\n\n\tif ((link_len = hoedown_autolink__email(&rewind, link, data, offset, size, 0)) > 0) {\n\t\tif (ob->size > rewind)\n\t\t\tob->size -= rewind;\n\t\telse\n\t\t\tob->size = 0;\n\n\t\tdoc->md.autolink(ob, link, HOEDOWN_AUTOLINK_EMAIL, &doc->data);\n\t}\n\n\tpopbuf(doc, BUFFER_SPAN);\n\treturn link_len;\n}\n\nstatic size_t\nchar_autolink_url(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\thoedown_buffer *link;\n\tsize_t link_len, rewind;\n\n\tif (!doc->md.autolink || doc->in_link_body)\n\t\treturn 0;\n\n\tlink = newbuf(doc, BUFFER_SPAN);\n\n\tif ((link_len = hoedown_autolink__url(&rewind, link, data, offset, size, 0)) > 0) {\n\t\tif (ob->size > rewind)\n\t\t\tob->size -= rewind;\n\t\telse\n\t\t\tob->size = 0;\n\n\t\tdoc->md.autolink(ob, link, HOEDOWN_AUTOLINK_NORMAL, &doc->data);\n\t}\n\n\tpopbuf(doc, BUFFER_SPAN);\n\treturn link_len;\n}\n\nstatic size_t\nchar_image(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size) {\n\tsize_t ret;\n\n\tif (size < 2 || data[1] != '[') return 0;\n\n\tret = char_link(ob, doc, data + 1, offset + 1, size - 1);\n\tif (!ret) return 0;\n\treturn ret + 1;\n}\n\n/* char_link • '[': parsing a link, a footnote or an image */\nstatic size_t\nchar_link(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\tint is_img = (offset && data[-1] == '!' && !is_escaped(data - offset, offset - 1));\n\tint is_footnote = (doc->ext_flags & HOEDOWN_EXT_FOOTNOTES && data[1] == '^');\n\tsize_t i = 1, txt_e, link_b = 0, link_e = 0, title_b = 0, title_e = 0;\n\thoedown_buffer *content = NULL;\n\thoedown_buffer *link = NULL;\n\thoedown_buffer *title = NULL;\n\thoedown_buffer *u_link = NULL;\n\tsize_t org_work_size = doc->work_bufs[BUFFER_SPAN].size;\n\tint ret = 0, in_title = 0, qtype = 0;\n\n\t/* checking whether the correct renderer exists */\n\tif ((is_footnote && !doc->md.footnote_ref) || (is_img && !doc->md.image)\n\t\t|| (!is_img && !is_footnote && !doc->md.link))\n\t\tgoto cleanup;\n\n\t/* looking for the matching closing bracket */\n\ti += find_emph_char(data + i, size - i, ']');\n\ttxt_e = i;\n\n\tif (i < size && data[i] == ']') i++;\n\telse goto cleanup;\n\n\t/* footnote link */\n\tif (is_footnote) {\n\t\thoedown_buffer id = { NULL, 0, 0, 0, NULL, NULL, NULL };\n\t\tstruct footnote_ref *fr;\n\n\t\tif (txt_e < 3)\n\t\t\tgoto cleanup;\n\n\t\tid.data = data + 2;\n\t\tid.size = txt_e - 2;\n\n\t\tfr = find_footnote_ref(&doc->footnotes_found, id.data, id.size);\n\n\t\t/* mark footnote used */\n\t\tif (fr && !fr->is_used) {\n\t\t\tif(!add_footnote_ref(&doc->footnotes_used, fr))\n\t\t\t\tgoto cleanup;\n\t\t\tfr->is_used = 1;\n\t\t\tfr->num = doc->footnotes_used.count;\n\n\t\t\t/* render */\n\t\t\tif (doc->md.footnote_ref)\n\t\t\t\tret = doc->md.footnote_ref(ob, fr->num, &doc->data);\n\t\t}\n\n\t\tgoto cleanup;\n\t}\n\n\t/* skip any amount of spacing */\n\t/* (this is much more laxist than original markdown syntax) */\n\twhile (i < size && _isspace(data[i]))\n\t\ti++;\n\n\t/* inline style link */\n\tif (i < size && data[i] == '(') {\n\t\tsize_t nb_p;\n\n\t\t/* skipping initial spacing */\n\t\ti++;\n\n\t\twhile (i < size && _isspace(data[i]))\n\t\t\ti++;\n\n\t\tlink_b = i;\n\n\t\t/* looking for link end: ' \" ) */\n\t\t/* Count the number of open parenthesis */\n\t\tnb_p = 0;\n\n\t\twhile (i < size) {\n\t\t\tif (data[i] == '\\\\') i += 2;\n\t\t\telse if (data[i] == '(' && i != 0) {\n\t\t\t\tnb_p++; i++;\n\t\t\t}\n\t\t\telse if (data[i] == ')') {\n\t\t\t\tif (nb_p == 0) break;\n\t\t\t\telse nb_p--; i++;\n\t\t\t} else if (i >= 1 && _isspace(data[i-1]) && (data[i] == '\\'' || data[i] == '\"')) break;\n\t\t\telse i++;\n\t\t}\n\n\t\tif (i >= size) goto cleanup;\n\t\tlink_e = i;\n\n\t\t/* looking for title end if present */\n\t\tif (data[i] == '\\'' || data[i] == '\"') {\n\t\t\tqtype = data[i];\n\t\t\tin_title = 1;\n\t\t\ti++;\n\t\t\ttitle_b = i;\n\n\t\t\twhile (i < size) {\n\t\t\t\tif (data[i] == '\\\\') i += 2;\n\t\t\t\telse if (data[i] == qtype) {in_title = 0; i++;}\n\t\t\t\telse if ((data[i] == ')') && !in_title) break;\n\t\t\t\telse i++;\n\t\t\t}\n\n\t\t\tif (i >= size) goto cleanup;\n\n\t\t\t/* skipping spacing after title */\n\t\t\ttitle_e = i - 1;\n\t\t\twhile (title_e > title_b && _isspace(data[title_e]))\n\t\t\t\ttitle_e--;\n\n\t\t\t/* checking for closing quote presence */\n\t\t\tif (data[title_e] != '\\'' &&  data[title_e] != '\"') {\n\t\t\t\ttitle_b = title_e = 0;\n\t\t\t\tlink_e = i;\n\t\t\t}\n\t\t}\n\n\t\t/* remove spacing at the end of the link */\n\t\twhile (link_e > link_b && _isspace(data[link_e - 1]))\n\t\t\tlink_e--;\n\n\t\t/* remove optional angle brackets around the link */\n\t\tif (data[link_b] == '<' && data[link_e - 1] == '>') {\n\t\t\tlink_b++;\n\t\t\tlink_e--;\n\t\t}\n\n\t\t/* building escaped link and title */\n\t\tif (link_e > link_b) {\n\t\t\tlink = newbuf(doc, BUFFER_SPAN);\n\t\t\thoedown_buffer_put(link, data + link_b, link_e - link_b);\n\t\t}\n\n\t\tif (title_e > title_b) {\n\t\t\ttitle = newbuf(doc, BUFFER_SPAN);\n\t\t\thoedown_buffer_put(title, data + title_b, title_e - title_b);\n\t\t}\n\n\t\ti++;\n\t}\n\n\t/* reference style link */\n\telse if (i < size && data[i] == '[') {\n\t\thoedown_buffer *id = newbuf(doc, BUFFER_SPAN);\n\t\tstruct link_ref *lr;\n\n\t\t/* looking for the id */\n\t\ti++;\n\t\tlink_b = i;\n\t\twhile (i < size && data[i] != ']') i++;\n\t\tif (i >= size) goto cleanup;\n\t\tlink_e = i;\n\n\t\t/* finding the link_ref */\n\t\tif (link_b == link_e)\n\t\t\treplace_spacing(id, data + 1, txt_e - 1);\n\t\telse\n\t\t\thoedown_buffer_put(id, data + link_b, link_e - link_b);\n\n\t\tlr = find_link_ref(doc->refs, id->data, id->size);\n\t\tif (!lr)\n\t\t\tgoto cleanup;\n\n\t\t/* keeping link and title from link_ref */\n\t\tlink = lr->link;\n\t\ttitle = lr->title;\n\t\ti++;\n\t}\n\n\t/* shortcut reference style link */\n\telse {\n\t\thoedown_buffer *id = newbuf(doc, BUFFER_SPAN);\n\t\tstruct link_ref *lr;\n\n\t\t/* crafting the id */\n\t\treplace_spacing(id, data + 1, txt_e - 1);\n\n\t\t/* finding the link_ref */\n\t\tlr = find_link_ref(doc->refs, id->data, id->size);\n\t\tif (!lr)\n\t\t\tgoto cleanup;\n\n\t\t/* keeping link and title from link_ref */\n\t\tlink = lr->link;\n\t\ttitle = lr->title;\n\n\t\t/* rewinding the spacing */\n\t\ti = txt_e + 1;\n\t}\n\n\t/* building content: img alt is kept, only link content is parsed */\n\tif (txt_e > 1) {\n\t\tcontent = newbuf(doc, BUFFER_SPAN);\n\t\tif (is_img) {\n\t\t\thoedown_buffer_put(content, data + 1, txt_e - 1);\n\t\t} else {\n\t\t\t/* disable autolinking when parsing inline the\n\t\t\t * content of a link */\n\t\t\tdoc->in_link_body = 1;\n\t\t\tparse_inline(content, doc, data + 1, txt_e - 1);\n\t\t\tdoc->in_link_body = 0;\n\t\t}\n\t}\n\n\tif (link) {\n\t\tu_link = newbuf(doc, BUFFER_SPAN);\n\t\tunscape_text(u_link, link);\n\t}\n\n\t/* calling the relevant rendering function */\n\tif (is_img) {\n\t\tret = doc->md.image(ob, u_link, title, content, &doc->data);\n\t} else {\n\t\tret = doc->md.link(ob, content, u_link, title, &doc->data);\n\t}\n\n\t/* cleanup */\ncleanup:\n\tdoc->work_bufs[BUFFER_SPAN].size = (int)org_work_size;\n\treturn ret ? i : 0;\n}\n\nstatic size_t\nchar_superscript(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\tsize_t sup_start, sup_len;\n\thoedown_buffer *sup;\n\n\tif (!doc->md.superscript)\n\t\treturn 0;\n\n\tif (size < 2)\n\t\treturn 0;\n\n\tif (data[1] == '(') {\n\t\tsup_start = 2;\n\t\tsup_len = find_emph_char(data + 2, size - 2, ')') + 2;\n\n\t\tif (sup_len == size)\n\t\t\treturn 0;\n\t} else {\n\t\tsup_start = sup_len = 1;\n\n\t\twhile (sup_len < size && !_isspace(data[sup_len]))\n\t\t\tsup_len++;\n\t}\n\n\tif (sup_len - sup_start == 0)\n\t\treturn (sup_start == 2) ? 3 : 0;\n\n\tsup = newbuf(doc, BUFFER_SPAN);\n\tparse_inline(sup, doc, data + sup_start, sup_len - sup_start);\n\tdoc->md.superscript(ob, sup, &doc->data);\n\tpopbuf(doc, BUFFER_SPAN);\n\n\treturn (sup_start == 2) ? sup_len + 1 : sup_len;\n}\n\nstatic size_t\nchar_math(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t offset, size_t size)\n{\n\t/* double dollar */\n\tif (size > 1 && data[1] == '$')\n\t\treturn parse_math(ob, doc, data, offset, size, \"$$\", 2, 1);\n\n\t/* single dollar allowed only with MATH_EXPLICIT flag */\n\tif (doc->ext_flags & HOEDOWN_EXT_MATH_EXPLICIT)\n\t\treturn parse_math(ob, doc, data, offset, size, \"$\", 1, 0);\n\n\treturn 0;\n}\n\n/*********************************\n * BLOCK-LEVEL PARSING FUNCTIONS *\n *********************************/\n\n/* is_empty • returns the line length when it is empty, 0 otherwise */\nstatic size_t\nis_empty(const uint8_t *data, size_t size)\n{\n\tsize_t i;\n\n\tfor (i = 0; i < size && data[i] != '\\n'; i++)\n\t\tif (data[i] != ' ')\n\t\t\treturn 0;\n\n\treturn i + 1;\n}\n\n/* is_hrule • returns whether a line is a horizontal rule */\nstatic int\nis_hrule(uint8_t *data, size_t size)\n{\n\tsize_t i = 0, n = 0;\n\tuint8_t c;\n\n\t/* skipping initial spaces */\n\tif (size < 3) return 0;\n\tif (data[0] == ' ') { i++;\n\tif (data[1] == ' ') { i++;\n\tif (data[2] == ' ') { i++; } } }\n\n\t/* looking at the hrule uint8_t */\n\tif (i + 2 >= size\n\t|| (data[i] != '*' && data[i] != '-' && data[i] != '_'))\n\t\treturn 0;\n\tc = data[i];\n\n\t/* the whole line must be the char or space */\n\twhile (i < size && data[i] != '\\n') {\n\t\tif (data[i] == c) n++;\n\t\telse if (data[i] != ' ')\n\t\t\treturn 0;\n\n\t\ti++;\n\t}\n\n\treturn n >= 3;\n}\n\n/* check if a line is a code fence; return the\n * end of the code fence. if passed, width of\n * the fence rule and character will be returned */\nstatic size_t\nis_codefence(uint8_t *data, size_t size, size_t *width, uint8_t *chr)\n{\n\tsize_t i = 0, n = 1;\n\tuint8_t c;\n\n\t/* skipping initial spaces */\n\tif (size < 3)\n\t\treturn 0;\n\n\tif (data[0] == ' ') { i++;\n\tif (data[1] == ' ') { i++;\n\tif (data[2] == ' ') { i++; } } }\n\n\t/* looking at the hrule uint8_t */\n\tc = data[i];\n\tif (i + 2 >= size || !(c=='~' || c=='`'))\n\t\treturn 0;\n\n\t/* the fence must be that same character */\n\twhile (++i < size && data[i] == c)\n\t\t++n;\n\n\tif (n < 3)\n\t\treturn 0;\n\n\tif (width) *width = n;\n\tif (chr) *chr = c;\n\treturn i;\n}\n\n/* expects single line, checks if it's a codefence and extracts language */\nstatic size_t\nparse_codefence(uint8_t *data, size_t size, hoedown_buffer *lang, size_t *width, uint8_t *chr)\n{\n\tsize_t i, w, lang_start;\n\n\ti = w = is_codefence(data, size, width, chr);\n\tif (i == 0)\n\t\treturn 0;\n\n\twhile (i < size && _isspace(data[i]))\n\t\ti++;\n\n\tlang_start = i;\n\n\twhile (i < size && !_isspace(data[i]))\n\t\ti++;\n\n\tlang->data = data + lang_start;\n\tlang->size = i - lang_start;\n\n\t/* Avoid parsing a codespan as a fence */\n\ti = lang_start + 2;\n\twhile (i < size && !(data[i] == *chr && data[i-1] == *chr && data[i-2] == *chr)) i++;\n\tif (i < size) return 0;\n\n\treturn w;\n}\n\n/* is_atxheader • returns whether the line is a hash-prefixed header */\nstatic int\nis_atxheader(hoedown_document *doc, uint8_t *data, size_t size)\n{\n\tif (data[0] != '#')\n\t\treturn 0;\n\n\tif (doc->ext_flags & HOEDOWN_EXT_SPACE_HEADERS) {\n\t\tsize_t level = 0;\n\n\t\twhile (level < size && level < 6 && data[level] == '#')\n\t\t\tlevel++;\n\n\t\tif (level < size && data[level] != ' ')\n\t\t\treturn 0;\n\t}\n\n\treturn 1;\n}\n\n/* is_headerline • returns whether the line is a setext-style hdr underline */\nstatic int\nis_headerline(uint8_t *data, size_t size)\n{\n\tsize_t i = 0;\n\n\t/* test of level 1 header */\n\tif (data[i] == '=') {\n\t\tfor (i = 1; i < size && data[i] == '='; i++);\n\t\twhile (i < size && data[i] == ' ') i++;\n\t\treturn (i >= size || data[i] == '\\n') ? 1 : 0; }\n\n\t/* test of level 2 header */\n\tif (data[i] == '-') {\n\t\tfor (i = 1; i < size && data[i] == '-'; i++);\n\t\twhile (i < size && data[i] == ' ') i++;\n\t\treturn (i >= size || data[i] == '\\n') ? 2 : 0; }\n\n\treturn 0;\n}\n\nstatic int\nis_next_headerline(uint8_t *data, size_t size)\n{\n\tsize_t i = 0;\n\n\twhile (i < size && data[i] != '\\n')\n\t\ti++;\n\n\tif (++i >= size)\n\t\treturn 0;\n\n\treturn is_headerline(data + i, size - i);\n}\n\n/* prefix_quote • returns blockquote prefix length */\nstatic size_t\nprefix_quote(uint8_t *data, size_t size)\n{\n\tsize_t i = 0;\n\tif (i < size && data[i] == ' ') i++;\n\tif (i < size && data[i] == ' ') i++;\n\tif (i < size && data[i] == ' ') i++;\n\n\tif (i < size && data[i] == '>') {\n\t\tif (i + 1 < size && data[i + 1] == ' ')\n\t\t\treturn i + 2;\n\n\t\treturn i + 1;\n\t}\n\n\treturn 0;\n}\n\n/* prefix_code • returns prefix length for block code*/\nstatic size_t\nprefix_code(uint8_t *data, size_t size)\n{\n\tif (size > 3 && data[0] == ' ' && data[1] == ' '\n\t\t&& data[2] == ' ' && data[3] == ' ') return 4;\n\n\treturn 0;\n}\n\n/* prefix_oli • returns ordered list item prefix */\nstatic size_t\nprefix_oli(uint8_t *data, size_t size)\n{\n\tsize_t i = 0;\n\n\tif (i < size && data[i] == ' ') i++;\n\tif (i < size && data[i] == ' ') i++;\n\tif (i < size && data[i] == ' ') i++;\n\n\tif (i >= size || data[i] < '0' || data[i] > '9')\n\t\treturn 0;\n\n\twhile (i < size && data[i] >= '0' && data[i] <= '9')\n\t\ti++;\n\n\tif (i + 1 >= size || data[i] != '.' || data[i + 1] != ' ')\n\t\treturn 0;\n\n\tif (is_next_headerline(data + i, size - i))\n\t\treturn 0;\n\n\treturn i + 2;\n}\n\n/* prefix_uli • returns ordered list item prefix */\nstatic size_t\nprefix_uli(uint8_t *data, size_t size)\n{\n\tsize_t i = 0;\n\n\tif (i < size && data[i] == ' ') i++;\n\tif (i < size && data[i] == ' ') i++;\n\tif (i < size && data[i] == ' ') i++;\n\n\tif (i + 1 >= size ||\n\t\t(data[i] != '*' && data[i] != '+' && data[i] != '-') ||\n\t\tdata[i + 1] != ' ')\n\t\treturn 0;\n\n\tif (is_next_headerline(data + i, size - i))\n\t\treturn 0;\n\n\treturn i + 2;\n}\n\n\n/* parse_block • parsing of one block, returning next uint8_t to parse */\nstatic void parse_block(hoedown_buffer *ob, hoedown_document *doc,\n\t\t\tuint8_t *data, size_t size);\n\n\n/* parse_blockquote • handles parsing of a blockquote fragment */\nstatic size_t\nparse_blockquote(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size)\n{\n\tsize_t beg, end = 0, pre, work_size = 0;\n\tuint8_t *work_data = 0;\n\thoedown_buffer *out = 0;\n\n\tout = newbuf(doc, BUFFER_BLOCK);\n\tbeg = 0;\n\twhile (beg < size) {\n\t\tfor (end = beg + 1; end < size && data[end - 1] != '\\n'; end++);\n\n\t\tpre = prefix_quote(data + beg, end - beg);\n\n\t\tif (pre)\n\t\t\tbeg += pre; /* skipping prefix */\n\n\t\t/* empty line followed by non-quote line */\n\t\telse if (is_empty(data + beg, end - beg) &&\n\t\t\t\t(end >= size || (prefix_quote(data + end, size - end) == 0 &&\n\t\t\t\t!is_empty(data + end, size - end))))\n\t\t\tbreak;\n\n\t\tif (beg < end) { /* copy into the in-place working buffer */\n\t\t\t/* hoedown_buffer_put(work, data + beg, end - beg); */\n\t\t\tif (!work_data)\n\t\t\t\twork_data = data + beg;\n\t\t\telse if (data + beg != work_data + work_size)\n\t\t\t\tmemmove(work_data + work_size, data + beg, end - beg);\n\t\t\twork_size += end - beg;\n\t\t}\n\t\tbeg = end;\n\t}\n\n\tparse_block(out, doc, work_data, work_size);\n\tif (doc->md.blockquote)\n\t\tdoc->md.blockquote(ob, out, &doc->data);\n\tpopbuf(doc, BUFFER_BLOCK);\n\treturn end;\n}\n\nstatic size_t\nparse_htmlblock(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, int do_render);\n\n/* parse_blockquote • handles parsing of a regular paragraph */\nstatic size_t\nparse_paragraph(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size)\n{\n\thoedown_buffer work = { NULL, 0, 0, 0, NULL, NULL, NULL };\n\tsize_t i = 0, end = 0;\n\tint level = 0;\n\n\twork.data = data;\n\n\twhile (i < size) {\n\t\tfor (end = i + 1; end < size && data[end - 1] != '\\n'; end++) /* empty */;\n\n\t\tif (is_empty(data + i, size - i))\n\t\t\tbreak;\n\n\t\tif ((level = is_headerline(data + i, size - i)) != 0)\n\t\t\tbreak;\n\n\t\tif (is_atxheader(doc, data + i, size - i) ||\n\t\t\tis_hrule(data + i, size - i) ||\n\t\t\tprefix_quote(data + i, size - i)) {\n\t\t\tend = i;\n\t\t\tbreak;\n\t\t}\n\n\t\ti = end;\n\t}\n\n\twork.size = i;\n\twhile (work.size && data[work.size - 1] == '\\n')\n\t\twork.size--;\n\n\tif (!level) {\n\t\thoedown_buffer *tmp = newbuf(doc, BUFFER_BLOCK);\n\t\tparse_inline(tmp, doc, work.data, work.size);\n\t\tif (doc->md.paragraph)\n\t\t\tdoc->md.paragraph(ob, tmp, &doc->data);\n\t\tpopbuf(doc, BUFFER_BLOCK);\n\t} else {\n\t\thoedown_buffer *header_work;\n\n\t\tif (work.size) {\n\t\t\tsize_t beg;\n\t\t\ti = work.size;\n\t\t\twork.size -= 1;\n\n\t\t\twhile (work.size && data[work.size] != '\\n')\n\t\t\t\twork.size -= 1;\n\n\t\t\tbeg = work.size + 1;\n\t\t\twhile (work.size && data[work.size - 1] == '\\n')\n\t\t\t\twork.size -= 1;\n\n\t\t\tif (work.size > 0) {\n\t\t\t\thoedown_buffer *tmp = newbuf(doc, BUFFER_BLOCK);\n\t\t\t\tparse_inline(tmp, doc, work.data, work.size);\n\n\t\t\t\tif (doc->md.paragraph)\n\t\t\t\t\tdoc->md.paragraph(ob, tmp, &doc->data);\n\n\t\t\t\tpopbuf(doc, BUFFER_BLOCK);\n\t\t\t\twork.data += beg;\n\t\t\t\twork.size = i - beg;\n\t\t\t}\n\t\t\telse work.size = i;\n\t\t}\n\n\t\theader_work = newbuf(doc, BUFFER_SPAN);\n\t\tparse_inline(header_work, doc, work.data, work.size);\n\n\t\tif (doc->md.header)\n\t\t\tdoc->md.header(ob, header_work, (int)level, &doc->data);\n\n\t\tpopbuf(doc, BUFFER_SPAN);\n\t}\n\n\treturn end;\n}\n\n/* parse_fencedcode • handles parsing of a block-level code fragment */\nstatic size_t\nparse_fencedcode(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size)\n{\n\thoedown_buffer text = { 0, 0, 0, 0, NULL, NULL, NULL };\n\thoedown_buffer lang = { 0, 0, 0, 0, NULL, NULL, NULL };\n\tsize_t i = 0, text_start, line_start;\n\tsize_t w, w2;\n\tsize_t width, width2;\n\tuint8_t chr, chr2;\n\n\t/* parse codefence line */\n\twhile (i < size && data[i] != '\\n')\n\t\ti++;\n\n\tw = parse_codefence(data, i, &lang, &width, &chr);\n\tif (!w)\n\t\treturn 0;\n\n\t/* search for end */\n\ti++;\n\ttext_start = i;\n\twhile ((line_start = i) < size) {\n\t\twhile (i < size && data[i] != '\\n')\n\t\t\ti++;\n\n\t\tw2 = is_codefence(data + line_start, i - line_start, &width2, &chr2);\n\t\tif (w == w2 && width == width2 && chr == chr2 &&\n\t\t    is_empty(data + (line_start+w), i - (line_start+w)))\n\t\t\tbreak;\n\n\t\ti++;\n\t}\n\n\ttext.data = data + text_start;\n\ttext.size = line_start - text_start;\n\n\tif (doc->md.blockcode)\n\t\tdoc->md.blockcode(ob, text.size ? &text : NULL, lang.size ? &lang : NULL, &doc->data);\n\n\treturn i;\n}\n\nstatic size_t\nparse_blockcode(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size)\n{\n\tsize_t beg, end, pre;\n\thoedown_buffer *work = 0;\n\n\twork = newbuf(doc, BUFFER_BLOCK);\n\n\tbeg = 0;\n\twhile (beg < size) {\n\t\tfor (end = beg + 1; end < size && data[end - 1] != '\\n'; end++) {};\n\t\tpre = prefix_code(data + beg, end - beg);\n\n\t\tif (pre)\n\t\t\tbeg += pre; /* skipping prefix */\n\t\telse if (!is_empty(data + beg, end - beg))\n\t\t\t/* non-empty non-prefixed line breaks the pre */\n\t\t\tbreak;\n\n\t\tif (beg < end) {\n\t\t\t/* verbatim copy to the working buffer,\n\t\t\t\tescaping entities */\n\t\t\tif (is_empty(data + beg, end - beg))\n\t\t\t\thoedown_buffer_putc(work, '\\n');\n\t\t\telse hoedown_buffer_put(work, data + beg, end - beg);\n\t\t}\n\t\tbeg = end;\n\t}\n\n\twhile (work->size && work->data[work->size - 1] == '\\n')\n\t\twork->size -= 1;\n\n\thoedown_buffer_putc(work, '\\n');\n\n\tif (doc->md.blockcode)\n\t\tdoc->md.blockcode(ob, work, NULL, &doc->data);\n\n\tpopbuf(doc, BUFFER_BLOCK);\n\treturn beg;\n}\n\n/* parse_listitem • parsing of a single list item */\n/*\tassuming initial prefix is already removed */\nstatic size_t\nparse_listitem(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, hoedown_list_flags *flags)\n{\n\thoedown_buffer *work = 0, *inter = 0;\n\tsize_t beg = 0, end, pre, sublist = 0, orgpre = 0, i;\n\tint in_empty = 0, has_inside_empty = 0, in_fence = 0;\n\n\t/* keeping track of the first indentation prefix */\n\twhile (orgpre < 3 && orgpre < size && data[orgpre] == ' ')\n\t\torgpre++;\n\n\tbeg = prefix_uli(data, size);\n\tif (!beg)\n\t\tbeg = prefix_oli(data, size);\n\n\tif (!beg)\n\t\treturn 0;\n\n\t/* skipping to the beginning of the following line */\n\tend = beg;\n\twhile (end < size && data[end - 1] != '\\n')\n\t\tend++;\n\n\t/* getting working buffers */\n\twork = newbuf(doc, BUFFER_SPAN);\n\tinter = newbuf(doc, BUFFER_SPAN);\n\n\t/* putting the first line into the working buffer */\n\thoedown_buffer_put(work, data + beg, end - beg);\n\tbeg = end;\n\n\t/* process the following lines */\n\twhile (beg < size) {\n\t\tsize_t has_next_uli = 0, has_next_oli = 0;\n\n\t\tend++;\n\n\t\twhile (end < size && data[end - 1] != '\\n')\n\t\t\tend++;\n\n\t\t/* process an empty line */\n\t\tif (is_empty(data + beg, end - beg)) {\n\t\t\tin_empty = 1;\n\t\t\tbeg = end;\n\t\t\tcontinue;\n\t\t}\n\n\t\t/* calculating the indentation */\n\t\ti = 0;\n\t\twhile (i < 4 && beg + i < end && data[beg + i] == ' ')\n\t\t\ti++;\n\n\t\tpre = i;\n\n\t\tif (doc->ext_flags & HOEDOWN_EXT_FENCED_CODE) {\n\t\t\tif (is_codefence(data + beg + i, end - beg - i, NULL, NULL))\n\t\t\t\tin_fence = !in_fence;\n\t\t}\n\n\t\t/* Only check for new list items if we are **not** inside\n\t\t * a fenced code block */\n\t\tif (!in_fence) {\n\t\t\thas_next_uli = prefix_uli(data + beg + i, end - beg - i);\n\t\t\thas_next_oli = prefix_oli(data + beg + i, end - beg - i);\n\t\t}\n\n\t\t/* checking for a new item */\n\t\tif ((has_next_uli && !is_hrule(data + beg + i, end - beg - i)) || has_next_oli) {\n\t\t\tif (in_empty)\n\t\t\t\thas_inside_empty = 1;\n\n\t\t\t/* the following item must have the same (or less) indentation */\n\t\t\tif (pre <= orgpre) {\n\t\t\t\t/* if the following item has different list type, we end this list */\n\t\t\t\tif (in_empty && (\n\t\t\t\t\t((*flags & HOEDOWN_LIST_ORDERED) && has_next_uli) ||\n\t\t\t\t\t(!(*flags & HOEDOWN_LIST_ORDERED) && has_next_oli)))\n\t\t\t\t\t*flags |= HOEDOWN_LI_END;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (!sublist)\n\t\t\t\tsublist = work->size;\n\t\t}\n\t\t/* joining only indented stuff after empty lines;\n\t\t * note that now we only require 1 space of indentation\n\t\t * to continue a list */\n\t\telse if (in_empty && pre == 0) {\n\t\t\t*flags |= HOEDOWN_LI_END;\n\t\t\tbreak;\n\t\t}\n\n\t\tif (in_empty) {\n\t\t\thoedown_buffer_putc(work, '\\n');\n\t\t\thas_inside_empty = 1;\n\t\t\tin_empty = 0;\n\t\t}\n\n\t\t/* adding the line without prefix into the working buffer */\n\t\thoedown_buffer_put(work, data + beg + i, end - beg - i);\n\t\tbeg = end;\n\t}\n\n\t/* render of li contents */\n\tif (has_inside_empty)\n\t\t*flags |= HOEDOWN_LI_BLOCK;\n\n\tif (*flags & HOEDOWN_LI_BLOCK) {\n\t\t/* intermediate render of block li */\n\t\tif (sublist && sublist < work->size) {\n\t\t\tparse_block(inter, doc, work->data, sublist);\n\t\t\tparse_block(inter, doc, work->data + sublist, work->size - sublist);\n\t\t}\n\t\telse\n\t\t\tparse_block(inter, doc, work->data, work->size);\n\t} else {\n\t\t/* intermediate render of inline li */\n\t\tif (sublist && sublist < work->size) {\n\t\t\tparse_inline(inter, doc, work->data, sublist);\n\t\t\tparse_block(inter, doc, work->data + sublist, work->size - sublist);\n\t\t}\n\t\telse\n\t\t\tparse_inline(inter, doc, work->data, work->size);\n\t}\n\n\t/* render of li itself */\n\tif (doc->md.listitem)\n\t\tdoc->md.listitem(ob, inter, *flags, &doc->data);\n\n\tpopbuf(doc, BUFFER_SPAN);\n\tpopbuf(doc, BUFFER_SPAN);\n\treturn beg;\n}\n\n\n/* parse_list • parsing ordered or unordered list block */\nstatic size_t\nparse_list(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, hoedown_list_flags flags)\n{\n\thoedown_buffer *work = 0;\n\tsize_t i = 0, j;\n\n\twork = newbuf(doc, BUFFER_BLOCK);\n\n\twhile (i < size) {\n\t\tj = parse_listitem(work, doc, data + i, size - i, &flags);\n\t\ti += j;\n\n\t\tif (!j || (flags & HOEDOWN_LI_END))\n\t\t\tbreak;\n\t}\n\n\tif (doc->md.list)\n\t\tdoc->md.list(ob, work, flags, &doc->data);\n\tpopbuf(doc, BUFFER_BLOCK);\n\treturn i;\n}\n\n/* parse_atxheader • parsing of atx-style headers */\nstatic size_t\nparse_atxheader(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size)\n{\n\tsize_t level = 0;\n\tsize_t i, end, skip;\n\n\twhile (level < size && level < 6 && data[level] == '#')\n\t\tlevel++;\n\n\tfor (i = level; i < size && data[i] == ' '; i++);\n\n\tfor (end = i; end < size && data[end] != '\\n'; end++);\n\tskip = end;\n\n\twhile (end && data[end - 1] == '#')\n\t\tend--;\n\n\twhile (end && data[end - 1] == ' ')\n\t\tend--;\n\n\tif (end > i) {\n\t\thoedown_buffer *work = newbuf(doc, BUFFER_SPAN);\n\n\t\tparse_inline(work, doc, data + i, end - i);\n\n\t\tif (doc->md.header)\n\t\t\tdoc->md.header(ob, work, (int)level, &doc->data);\n\n\t\tpopbuf(doc, BUFFER_SPAN);\n\t}\n\n\treturn skip;\n}\n\n/* parse_footnote_def • parse a single footnote definition */\nstatic void\nparse_footnote_def(hoedown_buffer *ob, hoedown_document *doc, unsigned int num, uint8_t *data, size_t size)\n{\n\thoedown_buffer *work = 0;\n\twork = newbuf(doc, BUFFER_SPAN);\n\n\tparse_block(work, doc, data, size);\n\n\tif (doc->md.footnote_def)\n\tdoc->md.footnote_def(ob, work, num, &doc->data);\n\tpopbuf(doc, BUFFER_SPAN);\n}\n\n/* parse_footnote_list • render the contents of the footnotes */\nstatic void\nparse_footnote_list(hoedown_buffer *ob, hoedown_document *doc, struct footnote_list *footnotes)\n{\n\thoedown_buffer *work = 0;\n\tstruct footnote_item *item;\n\tstruct footnote_ref *ref;\n\n\tif (footnotes->count == 0)\n\t\treturn;\n\n\twork = newbuf(doc, BUFFER_BLOCK);\n\n\titem = footnotes->head;\n\twhile (item) {\n\t\tref = item->ref;\n\t\tparse_footnote_def(work, doc, ref->num, ref->contents->data, ref->contents->size);\n\t\titem = item->next;\n\t}\n\n\tif (doc->md.footnotes)\n\t\tdoc->md.footnotes(ob, work, &doc->data);\n\tpopbuf(doc, BUFFER_BLOCK);\n}\n\n/* htmlblock_is_end • check for end of HTML block : </tag>( *)\\n */\n/*\treturns tag length on match, 0 otherwise */\n/*\tassumes data starts with \"<\" */\nstatic size_t\nhtmlblock_is_end(\n\tconst char *tag,\n\tsize_t tag_len,\n\thoedown_document *doc,\n\tuint8_t *data,\n\tsize_t size)\n{\n\tsize_t i = tag_len + 3, w;\n\n\t/* try to match the end tag */\n\t/* note: we're not considering tags like \"</tag >\" which are still valid */\n\tif (i > size ||\n\t\tdata[1] != '/' ||\n\t\tstrncasecmp((char *)data + 2, tag, tag_len) != 0 ||\n\t\tdata[tag_len + 2] != '>')\n\t\treturn 0;\n\n\t/* rest of the line must be empty */\n\tif ((w = is_empty(data + i, size - i)) == 0 && i < size)\n\t\treturn 0;\n\n\treturn i + w;\n}\n\n/* htmlblock_find_end • try to find HTML block ending tag */\n/*\treturns the length on match, 0 otherwise */\nstatic size_t\nhtmlblock_find_end(\n\tconst char *tag,\n\tsize_t tag_len,\n\thoedown_document *doc,\n\tuint8_t *data,\n\tsize_t size)\n{\n\tsize_t i = 0, w;\n\n\twhile (1) {\n\t\twhile (i < size && data[i] != '<') i++;\n\t\tif (i >= size) return 0;\n\n\t\tw = htmlblock_is_end(tag, tag_len, doc, data + i, size - i);\n\t\tif (w) return i + w;\n\t\ti++;\n\t}\n}\n\n/* htmlblock_find_end_strict • try to find end of HTML block in strict mode */\n/*\t(it must be an unindented line, and have a blank line afterwads) */\n/*\treturns the length on match, 0 otherwise */\nstatic size_t\nhtmlblock_find_end_strict(\n\tconst char *tag,\n\tsize_t tag_len,\n\thoedown_document *doc,\n\tuint8_t *data,\n\tsize_t size)\n{\n\tsize_t i = 0, mark;\n\n\twhile (1) {\n\t\tmark = i;\n\t\twhile (i < size && data[i] != '\\n') i++;\n\t\tif (i < size) i++;\n\t\tif (i == mark) return 0;\n\n\t\tif (data[mark] == ' ' && mark > 0) continue;\n\t\tmark += htmlblock_find_end(tag, tag_len, doc, data + mark, i - mark);\n\t\tif (mark == i && (is_empty(data + i, size - i) || i >= size)) break;\n\t}\n\n\treturn i;\n}\n\n/* parse_htmlblock • parsing of inline HTML block */\nstatic size_t\nparse_htmlblock(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size, int do_render)\n{\n\thoedown_buffer work = { NULL, 0, 0, 0, NULL, NULL, NULL };\n\tsize_t i, j = 0, tag_len, tag_end;\n\tconst char *curtag = NULL;\n\n\twork.data = data;\n\n\t/* identification of the opening tag */\n\tif (size < 2 || data[0] != '<')\n\t\treturn 0;\n\n\ti = 1;\n\twhile (i < size && data[i] != '>' && data[i] != ' ')\n\t\ti++;\n\n\tif (i < size)\n\t\tcurtag = hoedown_find_block_tag((char *)data + 1, (int)i - 1);\n\n\t/* handling of special cases */\n\tif (!curtag) {\n\n\t\t/* HTML comment, laxist form */\n\t\tif (size > 5 && data[1] == '!' && data[2] == '-' && data[3] == '-') {\n\t\t\ti = 5;\n\n\t\t\twhile (i < size && !(data[i - 2] == '-' && data[i - 1] == '-' && data[i] == '>'))\n\t\t\t\ti++;\n\n\t\t\ti++;\n\n\t\t\tif (i < size)\n\t\t\t\tj = is_empty(data + i, size - i);\n\n\t\t\tif (j) {\n\t\t\t\twork.size = i + j;\n\t\t\t\tif (do_render && doc->md.blockhtml)\n\t\t\t\t\tdoc->md.blockhtml(ob, &work, &doc->data);\n\t\t\t\treturn work.size;\n\t\t\t}\n\t\t}\n\n\t\t/* HR, which is the only self-closing block tag considered */\n\t\tif (size > 4 && (data[1] == 'h' || data[1] == 'H') && (data[2] == 'r' || data[2] == 'R')) {\n\t\t\ti = 3;\n\t\t\twhile (i < size && data[i] != '>')\n\t\t\t\ti++;\n\n\t\t\tif (i + 1 < size) {\n\t\t\t\ti++;\n\t\t\t\tj = is_empty(data + i, size - i);\n\t\t\t\tif (j) {\n\t\t\t\t\twork.size = i + j;\n\t\t\t\t\tif (do_render && doc->md.blockhtml)\n\t\t\t\t\t\tdoc->md.blockhtml(ob, &work, &doc->data);\n\t\t\t\t\treturn work.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t/* no special case recognised */\n\t\treturn 0;\n\t}\n\n\t/* looking for a matching closing tag in strict mode */\n\ttag_len = strlen(curtag);\n\ttag_end = htmlblock_find_end_strict(curtag, tag_len, doc, data, size);\n\n\t/* if not found, trying a second pass looking for indented match */\n\t/* but not if tag is \"ins\" or \"del\" (following original Markdown.pl) */\n\tif (!tag_end && strcmp(curtag, \"ins\") != 0 && strcmp(curtag, \"del\") != 0)\n\t\ttag_end = htmlblock_find_end(curtag, tag_len, doc, data, size);\n\n\tif (!tag_end)\n\t\treturn 0;\n\n\t/* the end of the block has been found */\n\twork.size = tag_end;\n\tif (do_render && doc->md.blockhtml)\n\t\tdoc->md.blockhtml(ob, &work, &doc->data);\n\n\treturn tag_end;\n}\n\nstatic void\nparse_table_row(\n\thoedown_buffer *ob,\n\thoedown_document *doc,\n\tuint8_t *data,\n\tsize_t size,\n\tsize_t columns,\n\thoedown_table_flags *col_data,\n\thoedown_table_flags header_flag)\n{\n\tsize_t i = 0, col, len;\n\thoedown_buffer *row_work = 0;\n\n\tif (!doc->md.table_cell || !doc->md.table_row)\n\t\treturn;\n\n\trow_work = newbuf(doc, BUFFER_SPAN);\n\n\tif (i < size && data[i] == '|')\n\t\ti++;\n\n\tfor (col = 0; col < columns && i < size; ++col) {\n\t\tsize_t cell_start, cell_end;\n\t\thoedown_buffer *cell_work;\n\n\t\tcell_work = newbuf(doc, BUFFER_SPAN);\n\n\t\twhile (i < size && _isspace(data[i]))\n\t\t\ti++;\n\n\t\tcell_start = i;\n\n\t\tlen = find_emph_char(data + i, size - i, '|');\n\n\t\t/* Two possibilities for len == 0:\n\t\t   1) No more pipe char found in the current line.\n\t\t   2) The next pipe is right after the current one, i.e. empty cell.\n\t\t   For case 1, we skip to the end of line; for case 2 we just continue.\n\t\t*/\n\t\tif (len == 0 && i < size && data[i] != '|')\n\t\t\tlen = size - i;\n\t\ti += len;\n\n\t\tcell_end = i - 1;\n\n\t\twhile (cell_end > cell_start && _isspace(data[cell_end]))\n\t\t\tcell_end--;\n\n\t\tparse_inline(cell_work, doc, data + cell_start, 1 + cell_end - cell_start);\n\t\tdoc->md.table_cell(row_work, cell_work, col_data[col] | header_flag, &doc->data);\n\n\t\tpopbuf(doc, BUFFER_SPAN);\n\t\ti++;\n\t}\n\n\tfor (; col < columns; ++col) {\n\t\thoedown_buffer empty_cell = { 0, 0, 0, 0, NULL, NULL, NULL };\n\t\tdoc->md.table_cell(row_work, &empty_cell, col_data[col] | header_flag, &doc->data);\n\t}\n\n\tdoc->md.table_row(ob, row_work, &doc->data);\n\n\tpopbuf(doc, BUFFER_SPAN);\n}\n\nstatic size_t\nparse_table_header(\n\thoedown_buffer *ob,\n\thoedown_document *doc,\n\tuint8_t *data,\n\tsize_t size,\n\tsize_t *columns,\n\thoedown_table_flags **column_data)\n{\n\tint pipes;\n\tsize_t i = 0, col, header_end, under_end;\n\n\tpipes = 0;\n\twhile (i < size && data[i] != '\\n')\n\t\tif (data[i++] == '|')\n\t\t\tpipes++;\n\n\tif (i == size || pipes == 0)\n\t\treturn 0;\n\n\theader_end = i;\n\n\twhile (header_end > 0 && _isspace(data[header_end - 1]))\n\t\theader_end--;\n\n\tif (data[0] == '|')\n\t\tpipes--;\n\n\tif (header_end && data[header_end - 1] == '|')\n\t\tpipes--;\n\n\tif (pipes < 0)\n\t\treturn 0;\n\n\t*columns = pipes + 1;\n\t*column_data = hoedown_calloc(*columns, sizeof(hoedown_table_flags));\n\n\t/* Parse the header underline */\n\ti++;\n\tif (i < size && data[i] == '|')\n\t\ti++;\n\n\tunder_end = i;\n\twhile (under_end < size && data[under_end] != '\\n')\n\t\tunder_end++;\n\n\tfor (col = 0; col < *columns && i < under_end; ++col) {\n\t\tsize_t dashes = 0;\n\n\t\twhile (i < under_end && data[i] == ' ')\n\t\t\ti++;\n\n\t\tif (data[i] == ':') {\n\t\t\ti++; (*column_data)[col] |= HOEDOWN_TABLE_ALIGN_LEFT;\n\t\t\tdashes++;\n\t\t}\n\n\t\twhile (i < under_end && data[i] == '-') {\n\t\t\ti++; dashes++;\n\t\t}\n\n\t\tif (i < under_end && data[i] == ':') {\n\t\t\ti++; (*column_data)[col] |= HOEDOWN_TABLE_ALIGN_RIGHT;\n\t\t\tdashes++;\n\t\t}\n\n\t\twhile (i < under_end && data[i] == ' ')\n\t\t\ti++;\n\n\t\tif (i < under_end && data[i] != '|' && data[i] != '+')\n\t\t\tbreak;\n\n\t\tif (dashes < 3)\n\t\t\tbreak;\n\n\t\ti++;\n\t}\n\n\tif (col < *columns)\n\t\treturn 0;\n\n\tparse_table_row(\n\t\tob, doc, data,\n\t\theader_end,\n\t\t*columns,\n\t\t*column_data,\n\t\tHOEDOWN_TABLE_HEADER\n\t);\n\n\treturn under_end + 1;\n}\n\nstatic size_t\nparse_table(\n\thoedown_buffer *ob,\n\thoedown_document *doc,\n\tuint8_t *data,\n\tsize_t size)\n{\n\tsize_t i;\n\n\thoedown_buffer *work = 0;\n\thoedown_buffer *header_work = 0;\n\thoedown_buffer *body_work = 0;\n\n\tsize_t columns;\n\thoedown_table_flags *col_data = NULL;\n\n\twork = newbuf(doc, BUFFER_BLOCK);\n\theader_work = newbuf(doc, BUFFER_SPAN);\n\tbody_work = newbuf(doc, BUFFER_BLOCK);\n\n\ti = parse_table_header(header_work, doc, data, size, &columns, &col_data);\n\tif (i > 0) {\n\n\t\twhile (i < size) {\n\t\t\tsize_t row_start;\n\t\t\tint pipes = 0;\n\n\t\t\trow_start = i;\n\n\t\t\twhile (i < size && data[i] != '\\n')\n\t\t\t\tif (data[i++] == '|')\n\t\t\t\t\tpipes++;\n\n\t\t\tif (pipes == 0 || i == size) {\n\t\t\t\ti = row_start;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tparse_table_row(\n\t\t\t\tbody_work,\n\t\t\t\tdoc,\n\t\t\t\tdata + row_start,\n\t\t\t\ti - row_start,\n\t\t\t\tcolumns,\n\t\t\t\tcol_data, 0\n\t\t\t);\n\n\t\t\ti++;\n\t\t}\n\n        if (doc->md.table_header)\n            doc->md.table_header(work, header_work, &doc->data);\n\n        if (doc->md.table_body)\n            doc->md.table_body(work, body_work, &doc->data);\n\n\t\tif (doc->md.table)\n\t\t\tdoc->md.table(ob, work, &doc->data);\n\t}\n\n\tfree(col_data);\n\tpopbuf(doc, BUFFER_SPAN);\n\tpopbuf(doc, BUFFER_BLOCK);\n\tpopbuf(doc, BUFFER_BLOCK);\n\treturn i;\n}\n\n/* parse_block • parsing of one block, returning next uint8_t to parse */\nstatic void\nparse_block(hoedown_buffer *ob, hoedown_document *doc, uint8_t *data, size_t size)\n{\n\tsize_t beg, end, i;\n\tuint8_t *txt_data;\n\tbeg = 0;\n\n\tif (doc->work_bufs[BUFFER_SPAN].size +\n\t\tdoc->work_bufs[BUFFER_BLOCK].size > doc->max_nesting)\n\t\treturn;\n\n\twhile (beg < size) {\n\t\ttxt_data = data + beg;\n\t\tend = size - beg;\n\n\t\tif (is_atxheader(doc, txt_data, end))\n\t\t\tbeg += parse_atxheader(ob, doc, txt_data, end);\n\n\t\telse if (data[beg] == '<' && doc->md.blockhtml &&\n\t\t\t\t(i = parse_htmlblock(ob, doc, txt_data, end, 1)) != 0)\n\t\t\tbeg += i;\n\n\t\telse if ((i = is_empty(txt_data, end)) != 0)\n\t\t\tbeg += i;\n\n\t\telse if (is_hrule(txt_data, end)) {\n\t\t\tif (doc->md.hrule)\n\t\t\t\tdoc->md.hrule(ob, &doc->data);\n\n\t\t\twhile (beg < size && data[beg] != '\\n')\n\t\t\t\tbeg++;\n\n\t\t\tbeg++;\n\t\t}\n\n\t\telse if ((doc->ext_flags & HOEDOWN_EXT_FENCED_CODE) != 0 &&\n\t\t\t(i = parse_fencedcode(ob, doc, txt_data, end)) != 0)\n\t\t\tbeg += i;\n\n\t\telse if ((doc->ext_flags & HOEDOWN_EXT_TABLES) != 0 &&\n\t\t\t(i = parse_table(ob, doc, txt_data, end)) != 0)\n\t\t\tbeg += i;\n\n\t\telse if (prefix_quote(txt_data, end))\n\t\t\tbeg += parse_blockquote(ob, doc, txt_data, end);\n\n\t\telse if (!(doc->ext_flags & HOEDOWN_EXT_DISABLE_INDENTED_CODE) && prefix_code(txt_data, end))\n\t\t\tbeg += parse_blockcode(ob, doc, txt_data, end);\n\n\t\telse if (prefix_uli(txt_data, end))\n\t\t\tbeg += parse_list(ob, doc, txt_data, end, 0);\n\n\t\telse if (prefix_oli(txt_data, end))\n\t\t\tbeg += parse_list(ob, doc, txt_data, end, HOEDOWN_LIST_ORDERED);\n\n\t\telse\n\t\t\tbeg += parse_paragraph(ob, doc, txt_data, end);\n\t}\n}\n\n\n\n/*********************\n * REFERENCE PARSING *\n *********************/\n\n/* is_footnote • returns whether a line is a footnote definition or not */\nstatic int\nis_footnote(const uint8_t *data, size_t beg, size_t end, size_t *last, struct footnote_list *list)\n{\n\tsize_t i = 0;\n\thoedown_buffer *contents = 0;\n\tsize_t ind = 0;\n\tint in_empty = 0;\n\tsize_t start = 0;\n\n\tsize_t id_offset, id_end;\n\n\t/* up to 3 optional leading spaces */\n\tif (beg + 3 >= end) return 0;\n\tif (data[beg] == ' ') { i = 1;\n\tif (data[beg + 1] == ' ') { i = 2;\n\tif (data[beg + 2] == ' ') { i = 3;\n\tif (data[beg + 3] == ' ') return 0; } } }\n\ti += beg;\n\n\t/* id part: caret followed by anything between brackets */\n\tif (data[i] != '[') return 0;\n\ti++;\n\tif (i >= end || data[i] != '^') return 0;\n\ti++;\n\tid_offset = i;\n\twhile (i < end && data[i] != '\\n' && data[i] != '\\r' && data[i] != ']')\n\t\ti++;\n\tif (i >= end || data[i] != ']') return 0;\n\tid_end = i;\n\n\t/* spacer: colon (space | tab)* newline? (space | tab)* */\n\ti++;\n\tif (i >= end || data[i] != ':') return 0;\n\ti++;\n\n\t/* getting content buffer */\n\tcontents = hoedown_buffer_new(64);\n\n\tstart = i;\n\n\t/* process lines similar to a list item */\n\twhile (i < end) {\n\t\twhile (i < end && data[i] != '\\n' && data[i] != '\\r') i++;\n\n\t\t/* process an empty line */\n\t\tif (is_empty(data + start, i - start)) {\n\t\t\tin_empty = 1;\n\t\t\tif (i < end && (data[i] == '\\n' || data[i] == '\\r')) {\n\t\t\t\ti++;\n\t\t\t\tif (i < end && data[i] == '\\n' && data[i - 1] == '\\r') i++;\n\t\t\t}\n\t\t\tstart = i;\n\t\t\tcontinue;\n\t\t}\n\n\t\t/* calculating the indentation */\n\t\tind = 0;\n\t\twhile (ind < 4 && start + ind < end && data[start + ind] == ' ')\n\t\t\tind++;\n\n\t\t/* joining only indented stuff after empty lines;\n\t\t * note that now we only require 1 space of indentation\n\t\t * to continue, just like lists */\n\t\tif (ind == 0) {\n\t\t\tif (start == id_end + 2 && data[start] == '\\t') {}\n\t\t\telse break;\n\t\t}\n\t\telse if (in_empty) {\n\t\t\thoedown_buffer_putc(contents, '\\n');\n\t\t}\n\n\t\tin_empty = 0;\n\n\t\t/* adding the line into the content buffer */\n\t\thoedown_buffer_put(contents, data + start + ind, i - start - ind);\n\t\t/* add carriage return */\n\t\tif (i < end) {\n\t\t\thoedown_buffer_putc(contents, '\\n');\n\t\t\tif (i < end && (data[i] == '\\n' || data[i] == '\\r')) {\n\t\t\t\ti++;\n\t\t\t\tif (i < end && data[i] == '\\n' && data[i - 1] == '\\r') i++;\n\t\t\t}\n\t\t}\n\t\tstart = i;\n\t}\n\n\tif (last)\n\t\t*last = start;\n\n\tif (list) {\n\t\tstruct footnote_ref *ref;\n\t\tref = create_footnote_ref(list, data + id_offset, id_end - id_offset);\n\t\tif (!ref)\n\t\t\treturn 0;\n\t\tif (!add_footnote_ref(list, ref)) {\n\t\t\tfree_footnote_ref(ref);\n\t\t\treturn 0;\n\t\t}\n\t\tref->contents = contents;\n\t}\n\n\treturn 1;\n}\n\n/* is_ref • returns whether a line is a reference or not */\nstatic int\nis_ref(const uint8_t *data, size_t beg, size_t end, size_t *last, struct link_ref **refs)\n{\n/*\tint n; */\n\tsize_t i = 0;\n\tsize_t id_offset, id_end;\n\tsize_t link_offset, link_end;\n\tsize_t title_offset, title_end;\n\tsize_t line_end;\n\n\t/* up to 3 optional leading spaces */\n\tif (beg + 3 >= end) return 0;\n\tif (data[beg] == ' ') { i = 1;\n\tif (data[beg + 1] == ' ') { i = 2;\n\tif (data[beg + 2] == ' ') { i = 3;\n\tif (data[beg + 3] == ' ') return 0; } } }\n\ti += beg;\n\n\t/* id part: anything but a newline between brackets */\n\tif (data[i] != '[') return 0;\n\ti++;\n\tid_offset = i;\n\twhile (i < end && data[i] != '\\n' && data[i] != '\\r' && data[i] != ']')\n\t\ti++;\n\tif (i >= end || data[i] != ']') return 0;\n\tid_end = i;\n\n\t/* spacer: colon (space | tab)* newline? (space | tab)* */\n\ti++;\n\tif (i >= end || data[i] != ':') return 0;\n\ti++;\n\twhile (i < end && data[i] == ' ') i++;\n\tif (i < end && (data[i] == '\\n' || data[i] == '\\r')) {\n\t\ti++;\n\t\tif (i < end && data[i] == '\\r' && data[i - 1] == '\\n') i++; }\n\twhile (i < end && data[i] == ' ') i++;\n\tif (i >= end) return 0;\n\n\t/* link: spacing-free sequence, optionally between angle brackets */\n\tif (data[i] == '<')\n\t\ti++;\n\n\tlink_offset = i;\n\n\twhile (i < end && data[i] != ' ' && data[i] != '\\n' && data[i] != '\\r')\n\t\ti++;\n\n\tif (data[i - 1] == '>') link_end = i - 1;\n\telse link_end = i;\n\n\t/* optional spacer: (space | tab)* (newline | '\\'' | '\"' | '(' ) */\n\twhile (i < end && data[i] == ' ') i++;\n\tif (i < end && data[i] != '\\n' && data[i] != '\\r'\n\t\t\t&& data[i] != '\\'' && data[i] != '\"' && data[i] != '(')\n\t\treturn 0;\n\tline_end = 0;\n\t/* computing end-of-line */\n\tif (i >= end || data[i] == '\\r' || data[i] == '\\n') line_end = i;\n\tif (i + 1 < end && data[i] == '\\n' && data[i + 1] == '\\r')\n\t\tline_end = i + 1;\n\n\t/* optional (space|tab)* spacer after a newline */\n\tif (line_end) {\n\t\ti = line_end + 1;\n\t\twhile (i < end && data[i] == ' ') i++; }\n\n\t/* optional title: any non-newline sequence enclosed in '\"()\n\t\t\t\t\talone on its line */\n\ttitle_offset = title_end = 0;\n\tif (i + 1 < end\n\t&& (data[i] == '\\'' || data[i] == '\"' || data[i] == '(')) {\n\t\ti++;\n\t\ttitle_offset = i;\n\t\t/* looking for EOL */\n\t\twhile (i < end && data[i] != '\\n' && data[i] != '\\r') i++;\n\t\tif (i + 1 < end && data[i] == '\\n' && data[i + 1] == '\\r')\n\t\t\ttitle_end = i + 1;\n\t\telse\ttitle_end = i;\n\t\t/* stepping back */\n\t\ti -= 1;\n\t\twhile (i > title_offset && data[i] == ' ')\n\t\t\ti -= 1;\n\t\tif (i > title_offset\n\t\t&& (data[i] == '\\'' || data[i] == '\"' || data[i] == ')')) {\n\t\t\tline_end = title_end;\n\t\t\ttitle_end = i; } }\n\n\tif (!line_end || link_end == link_offset)\n\t\treturn 0; /* garbage after the link empty link */\n\n\t/* a valid ref has been found, filling-in return structures */\n\tif (last)\n\t\t*last = line_end;\n\n\tif (refs) {\n\t\tstruct link_ref *ref;\n\n\t\tref = add_link_ref(refs, data + id_offset, id_end - id_offset);\n\t\tif (!ref)\n\t\t\treturn 0;\n\n\t\tref->link = hoedown_buffer_new(link_end - link_offset);\n\t\thoedown_buffer_put(ref->link, data + link_offset, link_end - link_offset);\n\n\t\tif (title_end > title_offset) {\n\t\t\tref->title = hoedown_buffer_new(title_end - title_offset);\n\t\t\thoedown_buffer_put(ref->title, data + title_offset, title_end - title_offset);\n\t\t}\n\t}\n\n\treturn 1;\n}\n\nstatic void expand_tabs(hoedown_buffer *ob, const uint8_t *line, size_t size)\n{\n\t/* This code makes two assumptions:\n\t * - Input is valid UTF-8.  (Any byte with top two bits 10 is skipped,\n\t *   whether or not it is a valid UTF-8 continuation byte.)\n\t * - Input contains no combining characters.  (Combining characters\n\t *   should be skipped but are not.)\n\t */\n\tsize_t  i = 0, tab = 0;\n\n\twhile (i < size) {\n\t\tsize_t org = i;\n\n\t\twhile (i < size && line[i] != '\\t') {\n\t\t\t/* ignore UTF-8 continuation bytes */\n\t\t\tif ((line[i] & 0xc0) != 0x80)\n\t\t\t\ttab++;\n\t\t\ti++;\n\t\t}\n\n\t\tif (i > org)\n\t\t\thoedown_buffer_put(ob, line + org, i - org);\n\n\t\tif (i >= size)\n\t\t\tbreak;\n\n\t\tdo {\n\t\t\thoedown_buffer_putc(ob, ' '); tab++;\n\t\t} while (tab % 4);\n\n\t\ti++;\n\t}\n}\n\n/**********************\n * EXPORTED FUNCTIONS *\n **********************/\n\nhoedown_document *\nhoedown_document_new(\n\tconst hoedown_renderer *renderer,\n\thoedown_extensions extensions,\n\tsize_t max_nesting)\n{\n\thoedown_document *doc = NULL;\n\n\tassert(max_nesting > 0 && renderer);\n\n\tdoc = hoedown_malloc(sizeof(hoedown_document));\n\tmemcpy(&doc->md, renderer, sizeof(hoedown_renderer));\n\n\tdoc->data.opaque = renderer->opaque;\n\n\thoedown_stack_init(&doc->work_bufs[BUFFER_BLOCK], 4);\n\thoedown_stack_init(&doc->work_bufs[BUFFER_SPAN], 8);\n\n\tmemset(doc->active_char, 0x0, 256);\n\n\tif (extensions & HOEDOWN_EXT_UNDERLINE && doc->md.underline) {\n\t\tdoc->active_char['_'] = MD_CHAR_EMPHASIS;\n\t}\n\n\tif (doc->md.emphasis || doc->md.double_emphasis || doc->md.triple_emphasis) {\n\t\tdoc->active_char['*'] = MD_CHAR_EMPHASIS;\n\t\tdoc->active_char['_'] = MD_CHAR_EMPHASIS;\n\t\tif (extensions & HOEDOWN_EXT_STRIKETHROUGH)\n\t\t\tdoc->active_char['~'] = MD_CHAR_EMPHASIS;\n\t\tif (extensions & HOEDOWN_EXT_HIGHLIGHT)\n\t\t\tdoc->active_char['='] = MD_CHAR_EMPHASIS;\n\t}\n\n\tif (doc->md.codespan)\n\t\tdoc->active_char['`'] = MD_CHAR_CODESPAN;\n\n\tif (doc->md.linebreak)\n\t\tdoc->active_char['\\n'] = MD_CHAR_LINEBREAK;\n\n\tif (doc->md.image || doc->md.link || doc->md.footnotes || doc->md.footnote_ref) {\n\t\tdoc->active_char['['] = MD_CHAR_LINK;\n\t\tdoc->active_char['!'] = MD_CHAR_IMAGE;\n\t}\n\n\tdoc->active_char['<'] = MD_CHAR_LANGLE;\n\tdoc->active_char['\\\\'] = MD_CHAR_ESCAPE;\n\tdoc->active_char['&'] = MD_CHAR_ENTITY;\n\n\tif (extensions & HOEDOWN_EXT_AUTOLINK) {\n\t\tdoc->active_char[':'] = MD_CHAR_AUTOLINK_URL;\n\t\tdoc->active_char['@'] = MD_CHAR_AUTOLINK_EMAIL;\n\t\tdoc->active_char['w'] = MD_CHAR_AUTOLINK_WWW;\n\t}\n\n\tif (extensions & HOEDOWN_EXT_SUPERSCRIPT)\n\t\tdoc->active_char['^'] = MD_CHAR_SUPERSCRIPT;\n\n\tif (extensions & HOEDOWN_EXT_QUOTE)\n\t\tdoc->active_char['\"'] = MD_CHAR_QUOTE;\n\n\tif (extensions & HOEDOWN_EXT_MATH)\n\t\tdoc->active_char['$'] = MD_CHAR_MATH;\n\n\t/* Extension data */\n\tdoc->ext_flags = extensions;\n\tdoc->max_nesting = max_nesting;\n\tdoc->in_link_body = 0;\n\n\treturn doc;\n}\n\nvoid\nhoedown_document_render(hoedown_document *doc, hoedown_buffer *ob, const uint8_t *data, size_t size)\n{\n\tstatic const uint8_t UTF8_BOM[] = {0xEF, 0xBB, 0xBF};\n\n\thoedown_buffer *text;\n\tsize_t beg, end;\n\n\tint footnotes_enabled;\n\n\ttext = hoedown_buffer_new(64);\n\n\t/* Preallocate enough space for our buffer to avoid expanding while copying */\n\thoedown_buffer_grow(text, size);\n\n\t/* reset the references table */\n\tmemset(&doc->refs, 0x0, REF_TABLE_SIZE * sizeof(void *));\n\n\tfootnotes_enabled = doc->ext_flags & HOEDOWN_EXT_FOOTNOTES;\n\n\t/* reset the footnotes lists */\n\tif (footnotes_enabled) {\n\t\tmemset(&doc->footnotes_found, 0x0, sizeof(doc->footnotes_found));\n\t\tmemset(&doc->footnotes_used, 0x0, sizeof(doc->footnotes_used));\n\t}\n\n\t/* first pass: looking for references, copying everything else */\n\tbeg = 0;\n\n\t/* Skip a possible UTF-8 BOM, even though the Unicode standard\n\t * discourages having these in UTF-8 documents */\n\tif (size >= 3 && memcmp(data, UTF8_BOM, 3) == 0)\n\t\tbeg += 3;\n\n\twhile (beg < size) /* iterating over lines */\n\t\tif (footnotes_enabled && is_footnote(data, beg, size, &end, &doc->footnotes_found))\n\t\t\tbeg = end;\n\t\telse if (is_ref(data, beg, size, &end, doc->refs))\n\t\t\tbeg = end;\n\t\telse { /* skipping to the next line */\n\t\t\tend = beg;\n\t\t\twhile (end < size && data[end] != '\\n' && data[end] != '\\r')\n\t\t\t\tend++;\n\n\t\t\t/* adding the line body if present */\n\t\t\tif (end > beg)\n\t\t\t\texpand_tabs(text, data + beg, end - beg);\n\n\t\t\twhile (end < size && (data[end] == '\\n' || data[end] == '\\r')) {\n\t\t\t\t/* add one \\n per newline */\n\t\t\t\tif (data[end] == '\\n' || (end + 1 < size && data[end + 1] != '\\n'))\n\t\t\t\t\thoedown_buffer_putc(text, '\\n');\n\t\t\t\tend++;\n\t\t\t}\n\n\t\t\tbeg = end;\n\t\t}\n\n\t/* pre-grow the output buffer to minimize allocations */\n\thoedown_buffer_grow(ob, text->size + (text->size >> 1));\n\n\t/* second pass: actual rendering */\n\tif (doc->md.doc_header)\n\t\tdoc->md.doc_header(ob, 0, &doc->data);\n\n\tif (text->size) {\n\t\t/* adding a final newline if not already present */\n\t\tif (text->data[text->size - 1] != '\\n' &&  text->data[text->size - 1] != '\\r')\n\t\t\thoedown_buffer_putc(text, '\\n');\n\n\t\tparse_block(ob, doc, text->data, text->size);\n\t}\n\n\t/* footnotes */\n\tif (footnotes_enabled)\n\t\tparse_footnote_list(ob, doc, &doc->footnotes_used);\n\n\tif (doc->md.doc_footer)\n\t\tdoc->md.doc_footer(ob, 0, &doc->data);\n\n\t/* clean-up */\n\thoedown_buffer_free(text);\n\tfree_link_refs(doc->refs);\n\tif (footnotes_enabled) {\n\t\tfree_footnote_list(&doc->footnotes_found, 1);\n\t\tfree_footnote_list(&doc->footnotes_used, 0);\n\t}\n\n\tassert(doc->work_bufs[BUFFER_SPAN].size == 0);\n\tassert(doc->work_bufs[BUFFER_BLOCK].size == 0);\n}\n\nvoid\nhoedown_document_render_inline(hoedown_document *doc, hoedown_buffer *ob, const uint8_t *data, size_t size)\n{\n\tsize_t i = 0, mark;\n\thoedown_buffer *text = hoedown_buffer_new(64);\n\n\t/* reset the references table */\n\tmemset(&doc->refs, 0x0, REF_TABLE_SIZE * sizeof(void *));\n\n\t/* first pass: expand tabs and process newlines */\n\thoedown_buffer_grow(text, size);\n\twhile (1) {\n\t\tmark = i;\n\t\twhile (i < size && data[i] != '\\n' && data[i] != '\\r')\n\t\t\ti++;\n\n\t\texpand_tabs(text, data + mark, i - mark);\n\n\t\tif (i >= size)\n\t\t\tbreak;\n\n\t\twhile (i < size && (data[i] == '\\n' || data[i] == '\\r')) {\n\t\t\t/* add one \\n per newline */\n\t\t\tif (data[i] == '\\n' || (i + 1 < size && data[i + 1] != '\\n'))\n\t\t\t\thoedown_buffer_putc(text, '\\n');\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/* second pass: actual rendering */\n\thoedown_buffer_grow(ob, text->size + (text->size >> 1));\n\n\tif (doc->md.doc_header)\n\t\tdoc->md.doc_header(ob, 1, &doc->data);\n\n\tparse_inline(ob, doc, text->data, text->size);\n\n\tif (doc->md.doc_footer)\n\t\tdoc->md.doc_footer(ob, 1, &doc->data);\n\n\t/* clean-up */\n\thoedown_buffer_free(text);\n\n\tassert(doc->work_bufs[BUFFER_SPAN].size == 0);\n\tassert(doc->work_bufs[BUFFER_BLOCK].size == 0);\n}\n\nvoid\nhoedown_document_free(hoedown_document *doc)\n{\n\tsize_t i;\n\n\tfor (i = 0; i < (size_t)doc->work_bufs[BUFFER_SPAN].asize; ++i)\n\t\thoedown_buffer_free(doc->work_bufs[BUFFER_SPAN].item[i]);\n\n\tfor (i = 0; i < (size_t)doc->work_bufs[BUFFER_BLOCK].asize; ++i)\n\t\thoedown_buffer_free(doc->work_bufs[BUFFER_BLOCK].item[i]);\n\n\thoedown_stack_uninit(&doc->work_bufs[BUFFER_SPAN]);\n\thoedown_stack_uninit(&doc->work_bufs[BUFFER_BLOCK]);\n\n\tfree(doc);\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/document.h",
    "content": "/* document.h - generic markdown parser */\n\n#ifndef HOEDOWN_DOCUMENT_H\n#define HOEDOWN_DOCUMENT_H\n\n#include \"buffer.h\"\n#include \"autolink.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*************\n * CONSTANTS *\n *************/\n\ntypedef enum hoedown_extensions {\n\t/* block-level extensions */\n\tHOEDOWN_EXT_TABLES = (1 << 0),\n\tHOEDOWN_EXT_FENCED_CODE = (1 << 1),\n\tHOEDOWN_EXT_FOOTNOTES = (1 << 2),\n\n\t/* span-level extensions */\n\tHOEDOWN_EXT_AUTOLINK = (1 << 3),\n\tHOEDOWN_EXT_STRIKETHROUGH = (1 << 4),\n\tHOEDOWN_EXT_UNDERLINE = (1 << 5),\n\tHOEDOWN_EXT_HIGHLIGHT = (1 << 6),\n\tHOEDOWN_EXT_QUOTE = (1 << 7),\n\tHOEDOWN_EXT_SUPERSCRIPT = (1 << 8),\n\tHOEDOWN_EXT_MATH = (1 << 9),\n\n\t/* other flags */\n\tHOEDOWN_EXT_NO_INTRA_EMPHASIS = (1 << 11),\n\tHOEDOWN_EXT_SPACE_HEADERS = (1 << 12),\n\tHOEDOWN_EXT_MATH_EXPLICIT = (1 << 13),\n\n\t/* negative flags */\n\tHOEDOWN_EXT_DISABLE_INDENTED_CODE = (1 << 14)\n} hoedown_extensions;\n\n#define HOEDOWN_EXT_BLOCK (\\\n\tHOEDOWN_EXT_TABLES |\\\n\tHOEDOWN_EXT_FENCED_CODE |\\\n\tHOEDOWN_EXT_FOOTNOTES )\n\n#define HOEDOWN_EXT_SPAN (\\\n\tHOEDOWN_EXT_AUTOLINK |\\\n\tHOEDOWN_EXT_STRIKETHROUGH |\\\n\tHOEDOWN_EXT_UNDERLINE |\\\n\tHOEDOWN_EXT_HIGHLIGHT |\\\n\tHOEDOWN_EXT_QUOTE |\\\n\tHOEDOWN_EXT_SUPERSCRIPT |\\\n\tHOEDOWN_EXT_MATH )\n\n#define HOEDOWN_EXT_FLAGS (\\\n\tHOEDOWN_EXT_NO_INTRA_EMPHASIS |\\\n\tHOEDOWN_EXT_SPACE_HEADERS |\\\n\tHOEDOWN_EXT_MATH_EXPLICIT )\n\n#define HOEDOWN_EXT_NEGATIVE (\\\n\tHOEDOWN_EXT_DISABLE_INDENTED_CODE )\n\ntypedef enum hoedown_list_flags {\n\tHOEDOWN_LIST_ORDERED = (1 << 0),\n\tHOEDOWN_LI_BLOCK = (1 << 1)\t/* <li> containing block data */\n} hoedown_list_flags;\n\ntypedef enum hoedown_table_flags {\n\tHOEDOWN_TABLE_ALIGN_LEFT = 1,\n\tHOEDOWN_TABLE_ALIGN_RIGHT = 2,\n\tHOEDOWN_TABLE_ALIGN_CENTER = 3,\n\tHOEDOWN_TABLE_ALIGNMASK = 3,\n\tHOEDOWN_TABLE_HEADER = 4\n} hoedown_table_flags;\n\ntypedef enum hoedown_autolink_type {\n\tHOEDOWN_AUTOLINK_NONE,\t\t/* used internally when it is not an autolink*/\n\tHOEDOWN_AUTOLINK_NORMAL,\t/* normal http/http/ftp/mailto/etc link */\n\tHOEDOWN_AUTOLINK_EMAIL\t\t/* e-mail link without explit mailto: */\n} hoedown_autolink_type;\n\n\n/*********\n * TYPES *\n *********/\n\nstruct hoedown_document;\ntypedef struct hoedown_document hoedown_document;\n\nstruct hoedown_renderer_data {\n\tvoid *opaque;\n};\ntypedef struct hoedown_renderer_data hoedown_renderer_data;\n\n/* hoedown_renderer - functions for rendering parsed data */\nstruct hoedown_renderer {\n\t/* state object */\n\tvoid *opaque;\n\n\t/* block level callbacks - NULL skips the block */\n\tvoid (*blockcode)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_buffer *lang, const hoedown_renderer_data *data);\n\tvoid (*blockquote)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tvoid (*header)(hoedown_buffer *ob, const hoedown_buffer *content, int level, const hoedown_renderer_data *data);\n\tvoid (*hrule)(hoedown_buffer *ob, const hoedown_renderer_data *data);\n\tvoid (*list)(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_list_flags flags, const hoedown_renderer_data *data);\n\tvoid (*listitem)(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_list_flags flags, const hoedown_renderer_data *data);\n\tvoid (*paragraph)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tvoid (*table)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tvoid (*table_header)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tvoid (*table_body)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tvoid (*table_row)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tvoid (*table_cell)(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_table_flags flags, const hoedown_renderer_data *data);\n\tvoid (*footnotes)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tvoid (*footnote_def)(hoedown_buffer *ob, const hoedown_buffer *content, unsigned int num, const hoedown_renderer_data *data);\n\tvoid (*blockhtml)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);\n\n\t/* span level callbacks - NULL or return 0 prints the span verbatim */\n\tint (*autolink)(hoedown_buffer *ob, const hoedown_buffer *link, hoedown_autolink_type type, const hoedown_renderer_data *data);\n\tint (*codespan)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);\n\tint (*double_emphasis)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tint (*emphasis)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tint (*underline)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tint (*highlight)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tint (*quote)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tint (*image)(hoedown_buffer *ob, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_buffer *alt, const hoedown_renderer_data *data);\n\tint (*linebreak)(hoedown_buffer *ob, const hoedown_renderer_data *data);\n\tint (*link)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_renderer_data *data);\n\tint (*triple_emphasis)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tint (*strikethrough)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tint (*superscript)(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data);\n\tint (*footnote_ref)(hoedown_buffer *ob, unsigned int num, const hoedown_renderer_data *data);\n\tint (*math)(hoedown_buffer *ob, const hoedown_buffer *text, int displaymode, const hoedown_renderer_data *data);\n\tint (*raw_html)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);\n\n\t/* low level callbacks - NULL copies input directly into the output */\n\tvoid (*entity)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);\n\tvoid (*normal_text)(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data);\n\n\t/* miscellaneous callbacks */\n\tvoid (*doc_header)(hoedown_buffer *ob, int inline_render, const hoedown_renderer_data *data);\n\tvoid (*doc_footer)(hoedown_buffer *ob, int inline_render, const hoedown_renderer_data *data);\n};\ntypedef struct hoedown_renderer hoedown_renderer;\n\n\n/*************\n * FUNCTIONS *\n *************/\n\n/* hoedown_document_new: allocate a new document processor instance */\nhoedown_document *hoedown_document_new(\n\tconst hoedown_renderer *renderer,\n\thoedown_extensions extensions,\n\tsize_t max_nesting\n) __attribute__ ((malloc));\n\n/* hoedown_document_render: render regular Markdown using the document processor */\nvoid hoedown_document_render(hoedown_document *doc, hoedown_buffer *ob, const uint8_t *data, size_t size);\n\n/* hoedown_document_render_inline: render inline Markdown using the document processor */\nvoid hoedown_document_render_inline(hoedown_document *doc, hoedown_buffer *ob, const uint8_t *data, size_t size);\n\n/* hoedown_document_free: deallocate a document processor instance */\nvoid hoedown_document_free(hoedown_document *doc);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /** HOEDOWN_DOCUMENT_H **/\n"
  },
  {
    "path": "3rdpart/hoedown/src/escape.c",
    "content": "#include \"escape.h\"\n\n#include <assert.h>\n#include <stdio.h>\n#include <string.h>\n\n\n#define likely(x)       __builtin_expect((x),1)\n#define unlikely(x)     __builtin_expect((x),0)\n\n\n/*\n * The following characters will not be escaped:\n *\n *\t\t-_.+!*'(),%#@?=;:/,+&$ alphanum\n *\n * Note that this character set is the addition of:\n *\n *\t- The characters which are safe to be in an URL\n *\t- The characters which are *not* safe to be in\n *\tan URL because they are RESERVED characters.\n *\n * We assume (lazily) that any RESERVED char that\n * appears inside an URL is actually meant to\n * have its native function (i.e. as an URL\n * component/separator) and hence needs no escaping.\n *\n * There are two exceptions: the chacters & (amp)\n * and ' (single quote) do not appear in the table.\n * They are meant to appear in the URL as components,\n * yet they require special HTML-entity escaping\n * to generate valid HTML markup.\n *\n * All other characters will be escaped to %XX.\n *\n */\nstatic const uint8_t HREF_SAFE[UINT8_MAX+1] = {\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1,\n\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1,\n\t0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n\t1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n};\n\nvoid\nhoedown_escape_href(hoedown_buffer *ob, const uint8_t *data, size_t size)\n{\n\tstatic const char hex_chars[] = \"0123456789ABCDEF\";\n\tsize_t  i = 0, mark;\n\tchar hex_str[3];\n\n\thex_str[0] = '%';\n\n\twhile (i < size) {\n\t\tmark = i;\n\t\twhile (i < size && HREF_SAFE[data[i]]) i++;\n\n\t\t/* Optimization for cases where there's nothing to escape */\n\t\tif (mark == 0 && i >= size) {\n\t\t\thoedown_buffer_put(ob, data, size);\n\t\t\treturn;\n\t\t}\n\n\t\tif (likely(i > mark)) {\n\t\t\thoedown_buffer_put(ob, data + mark, i - mark);\n\t\t}\n\n\t\t/* escaping */\n\t\tif (i >= size)\n\t\t\tbreak;\n\n\t\tswitch (data[i]) {\n\t\t/* amp appears all the time in URLs, but needs\n\t\t * HTML-entity escaping to be inside an href */\n\t\tcase '&':\n\t\t\tHOEDOWN_BUFPUTSL(ob, \"&amp;\");\n\t\t\tbreak;\n\n\t\t/* the single quote is a valid URL character\n\t\t * according to the standard; it needs HTML\n\t\t * entity escaping too */\n\t\tcase '\\'':\n\t\t\tHOEDOWN_BUFPUTSL(ob, \"&#x27;\");\n\t\t\tbreak;\n\n\t\t/* the space can be escaped to %20 or a plus\n\t\t * sign. we're going with the generic escape\n\t\t * for now. the plus thing is more commonly seen\n\t\t * when building GET strings */\n#if 0\n\t\tcase ' ':\n\t\t\thoedown_buffer_putc(ob, '+');\n\t\t\tbreak;\n#endif\n\n\t\t/* every other character goes with a %XX escaping */\n\t\tdefault:\n\t\t\thex_str[1] = hex_chars[(data[i] >> 4) & 0xF];\n\t\t\thex_str[2] = hex_chars[data[i] & 0xF];\n\t\t\thoedown_buffer_put(ob, (uint8_t *)hex_str, 3);\n\t\t}\n\n\t\ti++;\n\t}\n}\n\n\n/**\n * According to the OWASP rules:\n *\n * & --> &amp;\n * < --> &lt;\n * > --> &gt;\n * \" --> &quot;\n * ' --> &#x27;     &apos; is not recommended\n * / --> &#x2F;     forward slash is included as it helps end an HTML entity\n *\n */\nstatic const uint8_t HTML_ESCAPE_TABLE[UINT8_MAX+1] = {\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 1, 0, 0, 0, 2, 3, 0, 0, 0, 0, 0, 0, 0, 4,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 6, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n};\n\nstatic const char *HTML_ESCAPES[] = {\n        \"\",\n        \"&quot;\",\n        \"&amp;\",\n        \"&#39;\",\n        \"&#47;\",\n        \"&lt;\",\n        \"&gt;\"\n};\n\nvoid\nhoedown_escape_html(hoedown_buffer *ob, const uint8_t *data, size_t size, int secure)\n{\n\tsize_t i = 0, mark;\n\n\twhile (1) {\n\t\tmark = i;\n\t\twhile (i < size && HTML_ESCAPE_TABLE[data[i]] == 0) i++;\n\n\t\t/* Optimization for cases where there's nothing to escape */\n\t\tif (mark == 0 && i >= size) {\n\t\t\thoedown_buffer_put(ob, data, size);\n\t\t\treturn;\n\t\t}\n\n\t\tif (likely(i > mark))\n\t\t\thoedown_buffer_put(ob, data + mark, i - mark);\n\n\t\tif (i >= size) break;\n\n\t\t/* The forward slash is only escaped in secure mode */\n\t\tif (!secure && data[i] == '/') {\n\t\t\thoedown_buffer_putc(ob, '/');\n\t\t} else {\n\t\t\thoedown_buffer_puts(ob, HTML_ESCAPES[HTML_ESCAPE_TABLE[data[i]]]);\n\t\t}\n\n\t\ti++;\n\t}\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/escape.h",
    "content": "/* escape.h - escape utilities */\n\n#ifndef HOEDOWN_ESCAPE_H\n#define HOEDOWN_ESCAPE_H\n\n#include \"buffer.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*************\n * FUNCTIONS *\n *************/\n\n/* hoedown_escape_href: escape (part of) a URL inside HTML */\nvoid hoedown_escape_href(hoedown_buffer *ob, const uint8_t *data, size_t size);\n\n/* hoedown_escape_html: escape HTML */\nvoid hoedown_escape_html(hoedown_buffer *ob, const uint8_t *data, size_t size, int secure);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /** HOEDOWN_ESCAPE_H **/\n"
  },
  {
    "path": "3rdpart/hoedown/src/hodedown_version.c",
    "content": "#include \"version.h\"\n\nvoid\nhoedown_version(int *major, int *minor, int *revision)\n{\n\t*major = HOEDOWN_VERSION_MAJOR;\n\t*minor = HOEDOWN_VERSION_MINOR;\n\t*revision = HOEDOWN_VERSION_REVISION;\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/html.c",
    "content": "#include \"html.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <ctype.h>\n\n#include \"escape.h\"\n\n#define UNUSED(p) ((void)p)\n\n#define USE_XHTML(opt) (opt->flags & HOEDOWN_HTML_USE_XHTML)\n\nhoedown_html_tag\nhoedown_html_is_tag(const uint8_t *data, size_t size, const char *tagname)\n{\n\tsize_t i;\n\tint closed = 0;\n\n\tif (size < 3 || data[0] != '<')\n\t\treturn HOEDOWN_HTML_TAG_NONE;\n\n\ti = 1;\n\n\tif (data[i] == '/') {\n\t\tclosed = 1;\n\t\ti++;\n\t}\n\n\tfor (; i < size; ++i, ++tagname) {\n\t\tif (*tagname == 0)\n\t\t\tbreak;\n\n\t\tif (data[i] != *tagname)\n\t\t\treturn HOEDOWN_HTML_TAG_NONE;\n\t}\n\n\tif (i == size)\n\t\treturn HOEDOWN_HTML_TAG_NONE;\n\n\tif (isspace(data[i]) || data[i] == '>')\n\t\treturn closed ? HOEDOWN_HTML_TAG_CLOSE : HOEDOWN_HTML_TAG_OPEN;\n\n\treturn HOEDOWN_HTML_TAG_NONE;\n}\n\nstatic void escape_html(hoedown_buffer *ob, const uint8_t *source, size_t length)\n{\n\thoedown_escape_html(ob, source, length, 0);\n}\n\nstatic void escape_href(hoedown_buffer *ob, const uint8_t *source, size_t length)\n{\n\thoedown_escape_href(ob, source, length);\n}\n\n/********************\n * GENERIC RENDERER *\n ********************/\nstatic int\nrndr_autolink(hoedown_buffer *ob, const hoedown_buffer *link, hoedown_autolink_type type, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\n\tif (!link || !link->size)\n\t\treturn 0;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<a href=\\\"\");\n\tif (type == HOEDOWN_AUTOLINK_EMAIL)\n\t\tHOEDOWN_BUFPUTSL(ob, \"mailto:\");\n\tescape_href(ob, link->data, link->size);\n\n\tif (state->link_attributes) {\n\t\thoedown_buffer_putc(ob, '\\\"');\n\t\tstate->link_attributes(ob, link, data);\n\t\thoedown_buffer_putc(ob, '>');\n\t} else {\n\t\tHOEDOWN_BUFPUTSL(ob, \"\\\">\");\n\t}\n\n\t/*\n\t * Pretty printing: if we get an email address as\n\t * an actual URI, e.g. `mailto:foo@bar.com`, we don't\n\t * want to print the `mailto:` prefix\n\t */\n\tif (hoedown_buffer_prefix(link, \"mailto:\") == 0) {\n\t\tescape_html(ob, link->data + 7, link->size - 7);\n\t} else {\n\t\tescape_html(ob, link->data, link->size);\n\t}\n\n\tHOEDOWN_BUFPUTSL(ob, \"</a>\");\n\n\treturn 1;\n}\n\nstatic void\nrndr_blockcode(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_buffer *lang, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (ob->size) hoedown_buffer_putc(ob, '\\n');\n\n\tif (lang) {\n\t\tHOEDOWN_BUFPUTSL(ob, \"<pre><code class=\\\"language-\");\n\t\tescape_html(ob, lang->data, lang->size);\n\t\tHOEDOWN_BUFPUTSL(ob, \"\\\">\");\n\t} else {\n\t\tHOEDOWN_BUFPUTSL(ob, \"<pre><code>\");\n\t}\n\n\tif (text)\n\t\tescape_html(ob, text->data, text->size);\n\n\tHOEDOWN_BUFPUTSL(ob, \"</code></pre>\\n\");\n}\n\nstatic void\nrndr_blockquote(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n    if (ob->size) hoedown_buffer_putc(ob, '\\n');\n\tHOEDOWN_BUFPUTSL(ob, \"<blockquote>\\n\");\n\tif (content) hoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</blockquote>\\n\");\n}\n\nstatic int\nrndr_codespan(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tHOEDOWN_BUFPUTSL(ob, \"<code>\");\n\tif (text) escape_html(ob, text->data, text->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</code>\");\n\treturn 1;\n}\n\nstatic int\nrndr_strikethrough(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (!content || !content->size)\n\t\treturn 0;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<del>\");\n\thoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</del>\");\n\treturn 1;\n}\n\nstatic int\nrndr_double_emphasis(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (!content || !content->size)\n\t\treturn 0;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<strong>\");\n\thoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</strong>\");\n\n\treturn 1;\n}\n\nstatic int\nrndr_emphasis(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (!content || !content->size) return 0;\n\tHOEDOWN_BUFPUTSL(ob, \"<em>\");\n\tif (content) hoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</em>\");\n\treturn 1;\n}\n\nstatic int\nrndr_underline(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (!content || !content->size)\n\t\treturn 0;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<u>\");\n\thoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</u>\");\n\n\treturn 1;\n}\n\nstatic int\nrndr_highlight(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (!content || !content->size)\n\t\treturn 0;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<mark>\");\n\thoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</mark>\");\n\n\treturn 1;\n}\n\nstatic int\nrndr_quote(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (!content || !content->size)\n\t\treturn 0;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<q>\");\n\thoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</q>\");\n\n\treturn 1;\n}\n\nstatic int\nrndr_linebreak(hoedown_buffer *ob, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\thoedown_buffer_puts(ob, USE_XHTML(state) ? \"<br/>\\n\" : \"<br>\\n\");\n\treturn 1;\n}\n\nstatic void\nrndr_header(hoedown_buffer *ob, const hoedown_buffer *content, int level, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\n\tif (ob->size)\n\t\thoedown_buffer_putc(ob, '\\n');\n\n\tif (level <= state->toc_data.nesting_level)\n\t\thoedown_buffer_printf(ob, \"<h%d id=\\\"toc_%d\\\">\", level, state->toc_data.header_count++);\n\telse\n\t\thoedown_buffer_printf(ob, \"<h%d>\", level);\n\n\tif (content) hoedown_buffer_put(ob, content->data, content->size);\n\thoedown_buffer_printf(ob, \"</h%d>\\n\", level);\n}\n\nstatic int\nrndr_link(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<a href=\\\"\");\n\n\tif (link && link->size)\n\t\tescape_href(ob, link->data, link->size);\n\n\tif (title && title->size) {\n\t\tHOEDOWN_BUFPUTSL(ob, \"\\\" title=\\\"\");\n\t\tescape_html(ob, title->data, title->size);\n\t}\n\n\tif (state->link_attributes) {\n\t\thoedown_buffer_putc(ob, '\\\"');\n\t\tstate->link_attributes(ob, link, data);\n\t\thoedown_buffer_putc(ob, '>');\n\t} else {\n\t\tHOEDOWN_BUFPUTSL(ob, \"\\\">\");\n\t}\n\n\tif (content && content->size) hoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</a>\");\n\treturn 1;\n}\n\nstatic void\nrndr_list(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_list_flags flags, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (ob->size) hoedown_buffer_putc(ob, '\\n');\n\thoedown_buffer_put(ob, (const uint8_t *)(flags & HOEDOWN_LIST_ORDERED ? \"<ol>\\n\" : \"<ul>\\n\"), 5);\n\tif (content) hoedown_buffer_put(ob, content->data, content->size);\n\thoedown_buffer_put(ob, (const uint8_t *)(flags & HOEDOWN_LIST_ORDERED ? \"</ol>\\n\" : \"</ul>\\n\"), 6);\n}\n\nstatic void\nrndr_listitem(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_list_flags flags, const hoedown_renderer_data *data)\n{\n    UNUSED(flags);\n    UNUSED(data);\n\n\tHOEDOWN_BUFPUTSL(ob, \"<li>\");\n\tif (content) {\n\t\tsize_t size = content->size;\n\t\twhile (size && content->data[size - 1] == '\\n')\n\t\t\tsize--;\n\n\t\thoedown_buffer_put(ob, content->data, size);\n\t}\n\tHOEDOWN_BUFPUTSL(ob, \"</li>\\n\");\n}\n\nstatic void\nrndr_paragraph(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\tsize_t i = 0;\n\n\tif (ob->size) hoedown_buffer_putc(ob, '\\n');\n\n\tif (!content || !content->size)\n\t\treturn;\n\n\twhile (i < content->size && isspace(content->data[i])) i++;\n\n\tif (i == content->size)\n\t\treturn;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<p>\");\n\tif (state->flags & HOEDOWN_HTML_HARD_WRAP) {\n\t\tsize_t org;\n\t\twhile (i < content->size) {\n\t\t\torg = i;\n\t\t\twhile (i < content->size && content->data[i] != '\\n')\n\t\t\t\ti++;\n\n\t\t\tif (i > org)\n\t\t\t\thoedown_buffer_put(ob, content->data + org, i - org);\n\n\t\t\t/*\n\t\t\t * do not insert a line break if this newline\n\t\t\t * is the last character on the paragraph\n\t\t\t */\n\t\t\tif (i >= content->size - 1)\n\t\t\t\tbreak;\n\n\t\t\trndr_linebreak(ob, data);\n\t\t\ti++;\n\t\t}\n\t} else {\n\t\thoedown_buffer_put(ob, content->data + i, content->size - i);\n\t}\n\tHOEDOWN_BUFPUTSL(ob, \"</p>\\n\");\n}\n\nstatic void\nrndr_raw_block(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tsize_t org, sz;\n\n\tif (!text)\n\t\treturn;\n\n\t/* FIXME: Do we *really* need to trim the HTML? How does that make a difference? */\n\tsz = text->size;\n\twhile (sz > 0 && text->data[sz - 1] == '\\n')\n\t\tsz--;\n\n\torg = 0;\n\twhile (org < sz && text->data[org] == '\\n')\n\t\torg++;\n\n\tif (org >= sz)\n\t\treturn;\n\n\tif (ob->size)\n\t\thoedown_buffer_putc(ob, '\\n');\n\n\thoedown_buffer_put(ob, text->data + org, sz - org);\n\thoedown_buffer_putc(ob, '\\n');\n}\n\nstatic int\nrndr_triple_emphasis(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (!content || !content->size) return 0;\n\tHOEDOWN_BUFPUTSL(ob, \"<strong><em>\");\n\thoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</em></strong>\");\n\treturn 1;\n}\n\nstatic void\nrndr_hrule(hoedown_buffer *ob, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\tif (ob->size) hoedown_buffer_putc(ob, '\\n');\n\thoedown_buffer_puts(ob, USE_XHTML(state) ? \"<hr/>\\n\" : \"<hr>\\n\");\n}\n\nstatic int\nrndr_image(hoedown_buffer *ob, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_buffer *alt, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\tif (!link || !link->size) return 0;\n\n\tHOEDOWN_BUFPUTSL(ob, \"<img src=\\\"\");\n\tescape_href(ob, link->data, link->size);\n\tHOEDOWN_BUFPUTSL(ob, \"\\\" alt=\\\"\");\n\n\tif (alt && alt->size)\n\t\tescape_html(ob, alt->data, alt->size);\n\n\tif (title && title->size) {\n\t\tHOEDOWN_BUFPUTSL(ob, \"\\\" title=\\\"\");\n\t\tescape_html(ob, title->data, title->size); }\n\n\thoedown_buffer_puts(ob, USE_XHTML(state) ? \"\\\"/>\" : \"\\\">\");\n\treturn 1;\n}\n\nstatic int\nrndr_raw_html(hoedown_buffer *ob, const hoedown_buffer *text, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\n\t/* ESCAPE overrides SKIP_HTML. It doesn't look to see if\n\t * there are any valid tags, just escapes all of them. */\n\tif((state->flags & HOEDOWN_HTML_ESCAPE) != 0) {\n\t\tescape_html(ob, text->data, text->size);\n\t\treturn 1;\n\t}\n\n\tif ((state->flags & HOEDOWN_HTML_SKIP_HTML) != 0)\n\t\treturn 1;\n\n\thoedown_buffer_put(ob, text->data, text->size);\n\treturn 1;\n}\n\nstatic void\nrndr_table(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n    if (ob->size) hoedown_buffer_putc(ob, '\\n');\n    HOEDOWN_BUFPUTSL(ob, \"<table>\\n\");\n    hoedown_buffer_put(ob, content->data, content->size);\n    HOEDOWN_BUFPUTSL(ob, \"</table>\\n\");\n}\n\nstatic void\nrndr_table_header(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n    if (ob->size) hoedown_buffer_putc(ob, '\\n');\n    HOEDOWN_BUFPUTSL(ob, \"<thead>\\n\");\n    hoedown_buffer_put(ob, content->data, content->size);\n    HOEDOWN_BUFPUTSL(ob, \"</thead>\\n\");\n}\n\nstatic void\nrndr_table_body(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n    if (ob->size) hoedown_buffer_putc(ob, '\\n');\n    HOEDOWN_BUFPUTSL(ob, \"<tbody>\\n\");\n    hoedown_buffer_put(ob, content->data, content->size);\n    HOEDOWN_BUFPUTSL(ob, \"</tbody>\\n\");\n}\n\nstatic void\nrndr_tablerow(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tHOEDOWN_BUFPUTSL(ob, \"<tr>\\n\");\n\tif (content) hoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</tr>\\n\");\n}\n\nstatic void\nrndr_tablecell(hoedown_buffer *ob, const hoedown_buffer *content, hoedown_table_flags flags, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (flags & HOEDOWN_TABLE_HEADER) {\n\t\tHOEDOWN_BUFPUTSL(ob, \"<th\");\n\t} else {\n\t\tHOEDOWN_BUFPUTSL(ob, \"<td\");\n\t}\n\n\tswitch (flags & HOEDOWN_TABLE_ALIGNMASK) {\n\tcase HOEDOWN_TABLE_ALIGN_CENTER:\n\t\tHOEDOWN_BUFPUTSL(ob, \" style=\\\"text-align: center\\\">\");\n\t\tbreak;\n\n\tcase HOEDOWN_TABLE_ALIGN_LEFT:\n\t\tHOEDOWN_BUFPUTSL(ob, \" style=\\\"text-align: left\\\">\");\n\t\tbreak;\n\n\tcase HOEDOWN_TABLE_ALIGN_RIGHT:\n\t\tHOEDOWN_BUFPUTSL(ob, \" style=\\\"text-align: right\\\">\");\n\t\tbreak;\n\n\tdefault:\n\t\tHOEDOWN_BUFPUTSL(ob, \">\");\n\t}\n\n\tif (content)\n\t\thoedown_buffer_put(ob, content->data, content->size);\n\n\tif (flags & HOEDOWN_TABLE_HEADER) {\n\t\tHOEDOWN_BUFPUTSL(ob, \"</th>\\n\");\n\t} else {\n\t\tHOEDOWN_BUFPUTSL(ob, \"</td>\\n\");\n\t}\n}\n\nstatic int\nrndr_superscript(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (!content || !content->size) return 0;\n\tHOEDOWN_BUFPUTSL(ob, \"<sup>\");\n\thoedown_buffer_put(ob, content->data, content->size);\n\tHOEDOWN_BUFPUTSL(ob, \"</sup>\");\n\treturn 1;\n}\n\nstatic void\nrndr_normal_text(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tif (content)\n\t\tescape_html(ob, content->data, content->size);\n}\n\nstatic void\nrndr_footnotes(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\n\tif (ob->size) hoedown_buffer_putc(ob, '\\n');\n\tHOEDOWN_BUFPUTSL(ob, \"<div class=\\\"footnotes\\\">\\n\");\n\thoedown_buffer_puts(ob, USE_XHTML(state) ? \"<hr/>\\n\" : \"<hr>\\n\");\n\tHOEDOWN_BUFPUTSL(ob, \"<ol>\\n\");\n\n\tif (content) hoedown_buffer_put(ob, content->data, content->size);\n\n\tHOEDOWN_BUFPUTSL(ob, \"\\n</ol>\\n</div>\\n\");\n}\n\nstatic void\nrndr_footnote_def(hoedown_buffer *ob, const hoedown_buffer *content, unsigned int num, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\tsize_t i = 0;\n\tint pfound = 0;\n\n\t/* insert anchor at the end of first paragraph block */\n\tif (content) {\n\t\twhile ((i+3) < content->size) {\n\t\t\tif (content->data[i++] != '<') continue;\n\t\t\tif (content->data[i++] != '/') continue;\n\t\t\tif (content->data[i++] != 'p' && content->data[i] != 'P') continue;\n\t\t\tif (content->data[i] != '>') continue;\n\t\t\ti -= 3;\n\t\t\tpfound = 1;\n\t\t\tbreak;\n\t\t}\n\t}\n\n\thoedown_buffer_printf(ob, \"\\n<li id=\\\"fn%d\\\">\\n\", num);\n\tif (pfound) {\n\t\thoedown_buffer_put(ob, content->data, i);\n\t\thoedown_buffer_printf(ob, \"&nbsp;<a href=\\\"#fnref%d\\\" rev=\\\"footnote\\\">&#8617;</a>\", num);\n\t\thoedown_buffer_put(ob, content->data + i, content->size - i);\n\t} else if (content) {\n\t\thoedown_buffer_put(ob, content->data, content->size);\n\t}\n\tHOEDOWN_BUFPUTSL(ob, \"</li>\\n\");\n}\n\nstatic int\nrndr_footnote_ref(hoedown_buffer *ob, unsigned int num, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\thoedown_buffer_printf(ob, \"<sup id=\\\"fnref%d\\\"><a href=\\\"#fn%d\\\" rel=\\\"footnote\\\">%d</a></sup>\", num, num, num);\n\treturn 1;\n}\n\nstatic int\nrndr_math(hoedown_buffer *ob, const hoedown_buffer *text, int displaymode, const hoedown_renderer_data *data)\n{\n    UNUSED(data);\n\n\thoedown_buffer_put(ob, (const uint8_t *)(displaymode ? \"\\\\[\" : \"\\\\(\"), 2);\n\tescape_html(ob, text->data, text->size);\n\thoedown_buffer_put(ob, (const uint8_t *)(displaymode ? \"\\\\]\" : \"\\\\)\"), 2);\n\treturn 1;\n}\n\nstatic void\ntoc_header(hoedown_buffer *ob, const hoedown_buffer *content, int level, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state = data->opaque;\n\n\tif (level <= state->toc_data.nesting_level) {\n\t\t/* set the level offset if this is the first header\n\t\t * we're parsing for the document */\n\t\tif (state->toc_data.current_level == 0)\n\t\t\tstate->toc_data.level_offset = level - 1;\n\n\t\tlevel -= state->toc_data.level_offset;\n\n\t\tif (level > state->toc_data.current_level) {\n\t\t\twhile (level > state->toc_data.current_level) {\n\t\t\t\tHOEDOWN_BUFPUTSL(ob, \"<ul>\\n<li>\\n\");\n\t\t\t\tstate->toc_data.current_level++;\n\t\t\t}\n\t\t} else if (level < state->toc_data.current_level) {\n\t\t\tHOEDOWN_BUFPUTSL(ob, \"</li>\\n\");\n\t\t\twhile (level < state->toc_data.current_level) {\n\t\t\t\tHOEDOWN_BUFPUTSL(ob, \"</ul>\\n</li>\\n\");\n\t\t\t\tstate->toc_data.current_level--;\n\t\t\t}\n\t\t\tHOEDOWN_BUFPUTSL(ob,\"<li>\\n\");\n\t\t} else {\n\t\t\tHOEDOWN_BUFPUTSL(ob,\"</li>\\n<li>\\n\");\n\t\t}\n\n\t\thoedown_buffer_printf(ob, \"<a href=\\\"#toc_%d\\\">\", state->toc_data.header_count++);\n\t\tif (content) hoedown_buffer_put(ob, content->data, content->size);\n\t\tHOEDOWN_BUFPUTSL(ob, \"</a>\\n\");\n\t}\n}\n\nstatic int\ntoc_link(hoedown_buffer *ob, const hoedown_buffer *content, const hoedown_buffer *link, const hoedown_buffer *title, const hoedown_renderer_data *data)\n{\n    UNUSED(link);\n    UNUSED(title);\n    UNUSED(data);\n\n\tif (content && content->size) hoedown_buffer_put(ob, content->data, content->size);\n\treturn 1;\n}\n\nstatic void\ntoc_finalize(hoedown_buffer *ob, int inline_render, const hoedown_renderer_data *data)\n{\n\thoedown_html_renderer_state *state;\n\n\tif (inline_render)\n\t\treturn;\n\n\tstate = data->opaque;\n\n\twhile (state->toc_data.current_level > 0) {\n\t\tHOEDOWN_BUFPUTSL(ob, \"</li>\\n</ul>\\n\");\n\t\tstate->toc_data.current_level--;\n\t}\n\n\tstate->toc_data.header_count = 0;\n}\n\nhoedown_renderer *\nhoedown_html_toc_renderer_new(int nesting_level)\n{\n\tstatic const hoedown_renderer cb_default = {\n\t\tNULL,\n\n\t\tNULL,\n\t\tNULL,\n\t\ttoc_header,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\n\t\tNULL,\n\t\trndr_codespan,\n\t\trndr_double_emphasis,\n\t\trndr_emphasis,\n\t\trndr_underline,\n\t\trndr_highlight,\n\t\trndr_quote,\n\t\tNULL,\n\t\tNULL,\n\t\ttoc_link,\n\t\trndr_triple_emphasis,\n\t\trndr_strikethrough,\n\t\trndr_superscript,\n\t\tNULL,\n\t\tNULL,\n\t\tNULL,\n\n\t\tNULL,\n\t\trndr_normal_text,\n\n\t\tNULL,\n\t\ttoc_finalize\n\t};\n\n\thoedown_html_renderer_state *state;\n\thoedown_renderer *renderer;\n\n\t/* Prepare the state pointer */\n\tstate = hoedown_malloc(sizeof(hoedown_html_renderer_state));\n\tmemset(state, 0x0, sizeof(hoedown_html_renderer_state));\n\n\tstate->toc_data.nesting_level = nesting_level;\n\n\t/* Prepare the renderer */\n\trenderer = hoedown_malloc(sizeof(hoedown_renderer));\n\tmemcpy(renderer, &cb_default, sizeof(hoedown_renderer));\n\n\trenderer->opaque = state;\n\treturn renderer;\n}\n\nhoedown_renderer *\nhoedown_html_renderer_new(hoedown_html_flags render_flags, int nesting_level)\n{\n\tstatic const hoedown_renderer cb_default = {\n\t\tNULL,\n\n\t\trndr_blockcode,\n\t\trndr_blockquote,\n\t\trndr_header,\n\t\trndr_hrule,\n\t\trndr_list,\n\t\trndr_listitem,\n\t\trndr_paragraph,\n\t\trndr_table,\n\t\trndr_table_header,\n\t\trndr_table_body,\n\t\trndr_tablerow,\n\t\trndr_tablecell,\n\t\trndr_footnotes,\n\t\trndr_footnote_def,\n\t\trndr_raw_block,\n\n\t\trndr_autolink,\n\t\trndr_codespan,\n\t\trndr_double_emphasis,\n\t\trndr_emphasis,\n\t\trndr_underline,\n\t\trndr_highlight,\n\t\trndr_quote,\n\t\trndr_image,\n\t\trndr_linebreak,\n\t\trndr_link,\n\t\trndr_triple_emphasis,\n\t\trndr_strikethrough,\n\t\trndr_superscript,\n\t\trndr_footnote_ref,\n\t\trndr_math,\n\t\trndr_raw_html,\n\n\t\tNULL,\n\t\trndr_normal_text,\n\n\t\tNULL,\n\t\tNULL\n\t};\n\n\thoedown_html_renderer_state *state;\n\thoedown_renderer *renderer;\n\n\t/* Prepare the state pointer */\n\tstate = hoedown_malloc(sizeof(hoedown_html_renderer_state));\n\tmemset(state, 0x0, sizeof(hoedown_html_renderer_state));\n\n\tstate->flags = render_flags;\n\tstate->toc_data.nesting_level = nesting_level;\n\n\t/* Prepare the renderer */\n\trenderer = hoedown_malloc(sizeof(hoedown_renderer));\n\tmemcpy(renderer, &cb_default, sizeof(hoedown_renderer));\n\n\tif (render_flags & HOEDOWN_HTML_SKIP_HTML || render_flags & HOEDOWN_HTML_ESCAPE)\n\t\trenderer->blockhtml = NULL;\n\n\trenderer->opaque = state;\n\treturn renderer;\n}\n\nvoid\nhoedown_html_renderer_free(hoedown_renderer *renderer)\n{\n\tfree(renderer->opaque);\n\tfree(renderer);\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/html.h",
    "content": "/* html.h - HTML renderer and utilities */\n\n#ifndef HOEDOWN_HTML_H\n#define HOEDOWN_HTML_H\n\n#include \"document.h\"\n#include \"buffer.h\"\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*************\n * CONSTANTS *\n *************/\n\ntypedef enum hoedown_html_flags {\n\tHOEDOWN_HTML_SKIP_HTML = (1 << 0),\n\tHOEDOWN_HTML_ESCAPE = (1 << 1),\n\tHOEDOWN_HTML_HARD_WRAP = (1 << 2),\n\tHOEDOWN_HTML_USE_XHTML = (1 << 3)\n} hoedown_html_flags;\n\ntypedef enum hoedown_html_tag {\n\tHOEDOWN_HTML_TAG_NONE = 0,\n\tHOEDOWN_HTML_TAG_OPEN,\n\tHOEDOWN_HTML_TAG_CLOSE\n} hoedown_html_tag;\n\n\n/*********\n * TYPES *\n *********/\n\nstruct hoedown_html_renderer_state {\n\tvoid *opaque;\n\n\tstruct {\n\t\tint header_count;\n\t\tint current_level;\n\t\tint level_offset;\n\t\tint nesting_level;\n\t} toc_data;\n\n\thoedown_html_flags flags;\n\n\t/* extra callbacks */\n\tvoid (*link_attributes)(hoedown_buffer *ob, const hoedown_buffer *url, const hoedown_renderer_data *data);\n};\ntypedef struct hoedown_html_renderer_state hoedown_html_renderer_state;\n\n\n/*************\n * FUNCTIONS *\n *************/\n\n/* hoedown_html_smartypants: process an HTML snippet using SmartyPants for smart punctuation */\nvoid hoedown_html_smartypants(hoedown_buffer *ob, const uint8_t *data, size_t size);\n\n/* hoedown_html_is_tag: checks if data starts with a specific tag, returns the tag type or NONE */\nhoedown_html_tag hoedown_html_is_tag(const uint8_t *data, size_t size, const char *tagname);\n\n\n/* hoedown_html_renderer_new: allocates a regular HTML renderer */\nhoedown_renderer *hoedown_html_renderer_new(\n\thoedown_html_flags render_flags,\n\tint nesting_level\n) __attribute__ ((malloc));\n\n/* hoedown_html_toc_renderer_new: like hoedown_html_renderer_new, but the returned renderer produces the Table of Contents */\nhoedown_renderer *hoedown_html_toc_renderer_new(\n\tint nesting_level\n) __attribute__ ((malloc));\n\n/* hoedown_html_renderer_free: deallocate an HTML renderer */\nvoid hoedown_html_renderer_free(hoedown_renderer *renderer);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /** HOEDOWN_HTML_H **/\n"
  },
  {
    "path": "3rdpart/hoedown/src/html_blocks.c",
    "content": "/* ANSI-C code produced by gperf version 3.0.3 */\n/* Command-line: gperf -L ANSI-C -N hoedown_find_block_tag -c -C -E -S 1 --ignore-case -m100 html_block_names.gperf  */\n/* Computed positions: -k'1-2' */\n\n#if !((' ' == 32) && ('!' == 33) && ('\"' == 34) && ('#' == 35) \\\n      && ('%' == 37) && ('&' == 38) && ('\\'' == 39) && ('(' == 40) \\\n      && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \\\n      && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \\\n      && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \\\n      && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \\\n      && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \\\n      && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \\\n      && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \\\n      && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \\\n      && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \\\n      && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \\\n      && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \\\n      && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \\\n      && ('Z' == 90) && ('[' == 91) && ('\\\\' == 92) && (']' == 93) \\\n      && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \\\n      && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \\\n      && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \\\n      && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \\\n      && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \\\n      && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \\\n      && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \\\n      && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))\n/* The character set is not based on ISO-646.  */\n#error \"gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>.\"\n#endif\n\n/* maximum key range = 24, duplicates = 0 */\n\n#ifndef GPERF_DOWNCASE\n#define GPERF_DOWNCASE 1\nstatic unsigned char gperf_downcase[256] =\n  {\n      0,   1,   2,   3,   4,   5,   6,   7,   8,   9,  10,  11,  12,  13,  14,\n     15,  16,  17,  18,  19,  20,  21,  22,  23,  24,  25,  26,  27,  28,  29,\n     30,  31,  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,  42,  43,  44,\n     45,  46,  47,  48,  49,  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,\n     60,  61,  62,  63,  64,  97,  98,  99, 100, 101, 102, 103, 104, 105, 106,\n    107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121,\n    122,  91,  92,  93,  94,  95,  96,  97,  98,  99, 100, 101, 102, 103, 104,\n    105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n    120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,\n    135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,\n    150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,\n    165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,\n    180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194,\n    195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,\n    210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,\n    225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239,\n    240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254,\n    255\n  };\n#endif\n\n#ifndef GPERF_CASE_STRNCMP\n#define GPERF_CASE_STRNCMP 1\nstatic int\ngperf_case_strncmp (register const char *s1, register const char *s2, register unsigned int n)\n{\n  for (; n > 0;)\n    {\n      unsigned char c1 = gperf_downcase[(unsigned char)*s1++];\n      unsigned char c2 = gperf_downcase[(unsigned char)*s2++];\n      if (c1 != 0 && c1 == c2)\n        {\n          n--;\n          continue;\n        }\n      return (int)c1 - (int)c2;\n    }\n  return 0;\n}\n#endif\n\n#ifdef __GNUC__\n__inline\n#else\n#ifdef __cplusplus\ninline\n#endif\n#endif\nstatic unsigned int\nhash (register const char *str, register unsigned int len)\n{\n  static const unsigned char asso_values[] =\n    {\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      22, 21, 19, 18, 16,  0, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25,  1, 25,  0, 25,\n       1,  0,  0, 13,  0, 25, 25, 11,  2,  1,\n       0, 25, 25,  5,  0,  2, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25,  1, 25,\n       0, 25,  1,  0,  0, 13,  0, 25, 25, 11,\n       2,  1,  0, 25, 25,  5,  0,  2, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25, 25, 25, 25,\n      25, 25, 25, 25, 25, 25, 25\n    };\n  register int hval = (int)len;\n\n  switch (hval)\n    {\n      default:\n        hval += asso_values[(unsigned char)str[1]+1];\n      /*FALLTHROUGH*/\n      case 1:\n        hval += asso_values[(unsigned char)str[0]];\n        break;\n    }\n  return hval;\n}\n\n#ifdef __GNUC__\n__inline\n#ifdef __GNUC_STDC_INLINE__\n__attribute__ ((__gnu_inline__))\n#endif\n#endif\nconst char *\nhoedown_find_block_tag (register const char *str, register unsigned int len)\n{\n  enum\n    {\n      TOTAL_KEYWORDS = 24,\n      MIN_WORD_LENGTH = 1,\n      MAX_WORD_LENGTH = 10,\n      MIN_HASH_VALUE = 1,\n      MAX_HASH_VALUE = 24\n    };\n\n  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)\n    {\n      register int key = hash (str, len);\n\n      if (key <= MAX_HASH_VALUE && key >= MIN_HASH_VALUE)\n        {\n          register const char *resword;\n\n          switch (key - 1)\n            {\n              case 0:\n                resword = \"p\";\n                goto compare;\n              case 1:\n                resword = \"h6\";\n                goto compare;\n              case 2:\n                resword = \"div\";\n                goto compare;\n              case 3:\n                resword = \"del\";\n                goto compare;\n              case 4:\n                resword = \"form\";\n                goto compare;\n              case 5:\n                resword = \"table\";\n                goto compare;\n              case 6:\n                resword = \"figure\";\n                goto compare;\n              case 7:\n                resword = \"pre\";\n                goto compare;\n              case 8:\n                resword = \"fieldset\";\n                goto compare;\n              case 9:\n                resword = \"noscript\";\n                goto compare;\n              case 10:\n                resword = \"script\";\n                goto compare;\n              case 11:\n                resword = \"style\";\n                goto compare;\n              case 12:\n                resword = \"dl\";\n                goto compare;\n              case 13:\n                resword = \"ol\";\n                goto compare;\n              case 14:\n                resword = \"ul\";\n                goto compare;\n              case 15:\n                resword = \"math\";\n                goto compare;\n              case 16:\n                resword = \"ins\";\n                goto compare;\n              case 17:\n                resword = \"h5\";\n                goto compare;\n              case 18:\n                resword = \"iframe\";\n                goto compare;\n              case 19:\n                resword = \"h4\";\n                goto compare;\n              case 20:\n                resword = \"h3\";\n                goto compare;\n              case 21:\n                resword = \"blockquote\";\n                goto compare;\n              case 22:\n                resword = \"h2\";\n                goto compare;\n              case 23:\n                resword = \"h1\";\n                goto compare;\n            }\n          return 0;\n        compare:\n          if ((((unsigned char)*str ^ (unsigned char)*resword) & ~32) == 0 && !gperf_case_strncmp (str, resword, len) && resword[len] == '\\0')\n            return resword;\n        }\n    }\n  return 0;\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/html_smartypants.c",
    "content": "#include \"html.h\"\n\n#include <string.h>\n#include <stdlib.h>\n#include <stdio.h>\n#include <ctype.h>\n\n#ifdef _MSC_VER\n#define snprintf _snprintf\n#endif\n\nstruct smartypants_data {\n\tint in_squote;\n\tint in_dquote;\n};\n\nstatic size_t smartypants_cb__ltag(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__dquote(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__amp(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__period(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__number(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__dash(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__parens(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__squote(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__backtick(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\nstatic size_t smartypants_cb__escape(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size);\n\nstatic size_t (*smartypants_cb_ptrs[])\n\t(hoedown_buffer *, struct smartypants_data *, uint8_t, const uint8_t *, size_t) =\n{\n\tNULL,\t\t\t\t\t/* 0 */\n\tsmartypants_cb__dash,\t/* 1 */\n\tsmartypants_cb__parens,\t/* 2 */\n\tsmartypants_cb__squote, /* 3 */\n\tsmartypants_cb__dquote, /* 4 */\n\tsmartypants_cb__amp,\t/* 5 */\n\tsmartypants_cb__period,\t/* 6 */\n\tsmartypants_cb__number,\t/* 7 */\n\tsmartypants_cb__ltag,\t/* 8 */\n\tsmartypants_cb__backtick, /* 9 */\n\tsmartypants_cb__escape, /* 10 */\n};\n\nstatic const uint8_t smartypants_cb_chars[UINT8_MAX+1] = {\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 4, 0, 0, 0, 5, 3, 2, 0, 0, 0, 0, 1, 6, 0,\n\t0, 7, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0,\n\t9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n\t0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n};\n\nstatic int\nword_boundary(uint8_t c)\n{\n\treturn c == 0 || isspace(c) || ispunct(c);\n}\n\n/*\n\tIf 'text' begins with any kind of single quote (e.g. \"'\" or \"&apos;\" etc.),\n\treturns the length of the sequence of characters that makes up the single-\n\tquote.  Otherwise, returns zero.\n*/\nstatic size_t\nsquote_len(const uint8_t *text, size_t size)\n{\n\tstatic char* single_quote_list[] = { \"'\", \"&#39;\", \"&#x27;\", \"&apos;\", NULL };\n\tchar** p;\n\n\tfor (p = single_quote_list; *p; ++p) {\n\t\tsize_t len = strlen(*p);\n\t\tif (size >= len && memcmp(text, *p, len) == 0) {\n\t\t\treturn len;\n\t\t}\n\t}\n\n\treturn 0;\n}\n\n/* Converts \" or ' at very beginning or end of a word to left or right quote */\nstatic int\nsmartypants_quotes(hoedown_buffer *ob, uint8_t previous_char, uint8_t next_char, uint8_t quote, int *is_open)\n{\n\tchar ent[8];\n\n\tif (*is_open && !word_boundary(next_char))\n\t\treturn 0;\n\n\tif (!(*is_open) && !word_boundary(previous_char))\n\t\treturn 0;\n\n\tsnprintf(ent, sizeof(ent), \"&%c%cquo;\", (*is_open) ? 'r' : 'l', quote);\n\t*is_open = !(*is_open);\n\thoedown_buffer_puts(ob, ent);\n\treturn 1;\n}\n\n/*\n\tConverts ' to left or right single quote; but the initial ' might be in\n\tdifferent forms, e.g. &apos; or &#39; or &#x27;.\n\t'squote_text' points to the original single quote, and 'squote_size' is its length.\n\t'text' points at the last character of the single-quote, e.g. ' or ;\n*/\nstatic size_t\nsmartypants_squote(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size,\n\t\t\t\t   const uint8_t *squote_text, size_t squote_size)\n{\n\tif (size >= 2) {\n\t\tuint8_t t1 = tolower(text[1]);\n\t\tsize_t next_squote_len = squote_len(text+1, size-1);\n\n\t\t/* convert '' to &ldquo; or &rdquo; */\n\t\tif (next_squote_len > 0) {\n\t\t\tuint8_t next_char = (size > 1+next_squote_len) ? text[1+next_squote_len] : 0;\n\t\t\tif (smartypants_quotes(ob, previous_char, next_char, 'd', &smrt->in_dquote))\n\t\t\t\treturn next_squote_len;\n\t\t}\n\n\t\t/* Tom's, isn't, I'm, I'd */\n\t\tif ((t1 == 's' || t1 == 't' || t1 == 'm' || t1 == 'd') &&\n\t\t\t(size == 3 || word_boundary(text[2]))) {\n\t\t\tHOEDOWN_BUFPUTSL(ob, \"&rsquo;\");\n\t\t\treturn 0;\n\t\t}\n\n\t\t/* you're, you'll, you've */\n\t\tif (size >= 3) {\n\t\t\tuint8_t t2 = tolower(text[2]);\n\n\t\t\tif (((t1 == 'r' && t2 == 'e') ||\n\t\t\t\t(t1 == 'l' && t2 == 'l') ||\n\t\t\t\t(t1 == 'v' && t2 == 'e')) &&\n\t\t\t\t(size == 4 || word_boundary(text[3]))) {\n\t\t\t\tHOEDOWN_BUFPUTSL(ob, \"&rsquo;\");\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (smartypants_quotes(ob, previous_char, size > 0 ? text[1] : 0, 's', &smrt->in_squote))\n\t\treturn 0;\n\n\thoedown_buffer_put(ob, squote_text, squote_size);\n\treturn 0;\n}\n\n/* Converts ' to left or right single quote. */\nstatic size_t\nsmartypants_cb__squote(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\treturn smartypants_squote(ob, smrt, previous_char, text, size, text, 1);\n}\n\n/* Converts (c), (r), (tm) */\nstatic size_t\nsmartypants_cb__parens(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tif (size >= 3) {\n\t\tuint8_t t1 = tolower(text[1]);\n\t\tuint8_t t2 = tolower(text[2]);\n\n\t\tif (t1 == 'c' && t2 == ')') {\n\t\t\tHOEDOWN_BUFPUTSL(ob, \"&copy;\");\n\t\t\treturn 2;\n\t\t}\n\n\t\tif (t1 == 'r' && t2 == ')') {\n\t\t\tHOEDOWN_BUFPUTSL(ob, \"&reg;\");\n\t\t\treturn 2;\n\t\t}\n\n\t\tif (size >= 4 && t1 == 't' && t2 == 'm' && text[3] == ')') {\n\t\t\tHOEDOWN_BUFPUTSL(ob, \"&trade;\");\n\t\t\treturn 3;\n\t\t}\n\t}\n\n\thoedown_buffer_putc(ob, text[0]);\n\treturn 0;\n}\n\n/* Converts \"--\" to em-dash, etc. */\nstatic size_t\nsmartypants_cb__dash(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tif (size >= 3 && text[1] == '-' && text[2] == '-') {\n\t\tHOEDOWN_BUFPUTSL(ob, \"&mdash;\");\n\t\treturn 2;\n\t}\n\n\tif (size >= 2 && text[1] == '-') {\n\t\tHOEDOWN_BUFPUTSL(ob, \"&ndash;\");\n\t\treturn 1;\n\t}\n\n\thoedown_buffer_putc(ob, text[0]);\n\treturn 0;\n}\n\n/* Converts &quot; etc. */\nstatic size_t\nsmartypants_cb__amp(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tsize_t len;\n\tif (size >= 6 && memcmp(text, \"&quot;\", 6) == 0) {\n\t\tif (smartypants_quotes(ob, previous_char, size >= 7 ? text[6] : 0, 'd', &smrt->in_dquote))\n\t\t\treturn 5;\n\t}\n\n\tlen = squote_len(text, size);\n\tif (len > 0) {\n\t\treturn (len-1) + smartypants_squote(ob, smrt, previous_char, text+(len-1), size-(len-1), text, len);\n\t}\n\n\tif (size >= 4 && memcmp(text, \"&#0;\", 4) == 0)\n\t\treturn 3;\n\n\thoedown_buffer_putc(ob, '&');\n\treturn 0;\n}\n\n/* Converts \"...\" to ellipsis */\nstatic size_t\nsmartypants_cb__period(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tif (size >= 3 && text[1] == '.' && text[2] == '.') {\n\t\tHOEDOWN_BUFPUTSL(ob, \"&hellip;\");\n\t\treturn 2;\n\t}\n\n\tif (size >= 5 && text[1] == ' ' && text[2] == '.' && text[3] == ' ' && text[4] == '.') {\n\t\tHOEDOWN_BUFPUTSL(ob, \"&hellip;\");\n\t\treturn 4;\n\t}\n\n\thoedown_buffer_putc(ob, text[0]);\n\treturn 0;\n}\n\n/* Converts `` to opening double quote */\nstatic size_t\nsmartypants_cb__backtick(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tif (size >= 2 && text[1] == '`') {\n\t\tif (smartypants_quotes(ob, previous_char, size >= 3 ? text[2] : 0, 'd', &smrt->in_dquote))\n\t\t\treturn 1;\n\t}\n\n\thoedown_buffer_putc(ob, text[0]);\n\treturn 0;\n}\n\n/* Converts 1/2, 1/4, 3/4 */\nstatic size_t\nsmartypants_cb__number(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tif (word_boundary(previous_char) && size >= 3) {\n\t\tif (text[0] == '1' && text[1] == '/' && text[2] == '2') {\n\t\t\tif (size == 3 || word_boundary(text[3])) {\n\t\t\t\tHOEDOWN_BUFPUTSL(ob, \"&frac12;\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t}\n\n\t\tif (text[0] == '1' && text[1] == '/' && text[2] == '4') {\n\t\t\tif (size == 3 || word_boundary(text[3]) ||\n\t\t\t\t(size >= 5 && tolower(text[3]) == 't' && tolower(text[4]) == 'h')) {\n\t\t\t\tHOEDOWN_BUFPUTSL(ob, \"&frac14;\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t}\n\n\t\tif (text[0] == '3' && text[1] == '/' && text[2] == '4') {\n\t\t\tif (size == 3 || word_boundary(text[3]) ||\n\t\t\t\t(size >= 6 && tolower(text[3]) == 't' && tolower(text[4]) == 'h' && tolower(text[5]) == 's')) {\n\t\t\t\tHOEDOWN_BUFPUTSL(ob, \"&frac34;\");\n\t\t\t\treturn 2;\n\t\t\t}\n\t\t}\n\t}\n\n\thoedown_buffer_putc(ob, text[0]);\n\treturn 0;\n}\n\n/* Converts \" to left or right double quote */\nstatic size_t\nsmartypants_cb__dquote(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tif (!smartypants_quotes(ob, previous_char, size > 0 ? text[1] : 0, 'd', &smrt->in_dquote))\n\t\tHOEDOWN_BUFPUTSL(ob, \"&quot;\");\n\n\treturn 0;\n}\n\nstatic size_t\nsmartypants_cb__ltag(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tstatic const char *skip_tags[] = {\n\t  \"pre\", \"code\", \"var\", \"samp\", \"kbd\", \"math\", \"script\", \"style\"\n\t};\n\tstatic const size_t skip_tags_count = 8;\n\n\tsize_t tag, i = 0;\n\n\t/* This is a comment. Copy everything verbatim until --> or EOF is seen. */\n\tif (i + 4 < size && memcmp(text + i, \"<!--\", 4) == 0) {\n\t\ti += 4;\n\t\twhile (i + 3 < size && memcmp(text + i, \"-->\",  3) != 0)\n\t\t\ti++;\n\t\ti += 3;\n\t\thoedown_buffer_put(ob, text, i + 1);\n\t\treturn i;\n\t}\n\n\twhile (i < size && text[i] != '>')\n\t\ti++;\n\n\tfor (tag = 0; tag < skip_tags_count; ++tag) {\n\t\tif (hoedown_html_is_tag(text, size, skip_tags[tag]) == HOEDOWN_HTML_TAG_OPEN)\n\t\t\tbreak;\n\t}\n\n\tif (tag < skip_tags_count) {\n\t\tfor (;;) {\n\t\t\twhile (i < size && text[i] != '<')\n\t\t\t\ti++;\n\n\t\t\tif (i == size)\n\t\t\t\tbreak;\n\n\t\t\tif (hoedown_html_is_tag(text + i, size - i, skip_tags[tag]) == HOEDOWN_HTML_TAG_CLOSE)\n\t\t\t\tbreak;\n\n\t\t\ti++;\n\t\t}\n\n\t\twhile (i < size && text[i] != '>')\n\t\t\ti++;\n\t}\n\n\thoedown_buffer_put(ob, text, i + 1);\n\treturn i;\n}\n\nstatic size_t\nsmartypants_cb__escape(hoedown_buffer *ob, struct smartypants_data *smrt, uint8_t previous_char, const uint8_t *text, size_t size)\n{\n\tif (size < 2)\n\t\treturn 0;\n\n\tswitch (text[1]) {\n\tcase '\\\\':\n\tcase '\"':\n\tcase '\\'':\n\tcase '.':\n\tcase '-':\n\tcase '`':\n\t\thoedown_buffer_putc(ob, text[1]);\n\t\treturn 1;\n\n\tdefault:\n\t\thoedown_buffer_putc(ob, '\\\\');\n\t\treturn 0;\n\t}\n}\n\n#if 0\nstatic struct {\n    uint8_t c0;\n    const uint8_t *pattern;\n    const uint8_t *entity;\n    int skip;\n} smartypants_subs[] = {\n    { '\\'', \"'s>\",      \"&rsquo;\",  0 },\n    { '\\'', \"'t>\",      \"&rsquo;\",  0 },\n    { '\\'', \"'re>\",     \"&rsquo;\",  0 },\n    { '\\'', \"'ll>\",     \"&rsquo;\",  0 },\n    { '\\'', \"'ve>\",     \"&rsquo;\",  0 },\n    { '\\'', \"'m>\",      \"&rsquo;\",  0 },\n    { '\\'', \"'d>\",      \"&rsquo;\",  0 },\n    { '-',  \"--\",       \"&mdash;\",  1 },\n    { '-',  \"<->\",      \"&ndash;\",  0 },\n    { '.',  \"...\",      \"&hellip;\", 2 },\n    { '.',  \". . .\",    \"&hellip;\", 4 },\n    { '(',  \"(c)\",      \"&copy;\",   2 },\n    { '(',  \"(r)\",      \"&reg;\",    2 },\n    { '(',  \"(tm)\",     \"&trade;\",  3 },\n    { '3',  \"<3/4>\",    \"&frac34;\", 2 },\n    { '3',  \"<3/4ths>\", \"&frac34;\", 2 },\n    { '1',  \"<1/2>\",    \"&frac12;\", 2 },\n    { '1',  \"<1/4>\",    \"&frac14;\", 2 },\n    { '1',  \"<1/4th>\",  \"&frac14;\", 2 },\n    { '&',  \"&#0;\",      0,       3 },\n};\n#endif\n\nvoid\nhoedown_html_smartypants(hoedown_buffer *ob, const uint8_t *text, size_t size)\n{\n\tsize_t i;\n\tstruct smartypants_data smrt = {0, 0};\n\n\tif (!text)\n\t\treturn;\n\n\thoedown_buffer_grow(ob, size);\n\n\tfor (i = 0; i < size; ++i) {\n\t\tsize_t org;\n\t\tuint8_t action = 0;\n\n\t\torg = i;\n\t\twhile (i < size && (action = smartypants_cb_chars[text[i]]) == 0)\n\t\t\ti++;\n\n\t\tif (i > org)\n\t\t\thoedown_buffer_put(ob, text + org, i - org);\n\n\t\tif (i < size) {\n\t\t\ti += smartypants_cb_ptrs[(int)action]\n\t\t\t\t(ob, &smrt, i ? text[i - 1] : 0, text + i, size - i);\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/stack.c",
    "content": "#include \"stack.h\"\n\n#include \"buffer.h\"\n\n#include <stdlib.h>\n#include <string.h>\n#include <assert.h>\n\nvoid\nhoedown_stack_init(hoedown_stack *st, size_t initial_size)\n{\n\tassert(st);\n\n\tst->item = NULL;\n\tst->size = st->asize = 0;\n\n\tif (!initial_size)\n\t\tinitial_size = 8;\n\n\thoedown_stack_grow(st, initial_size);\n}\n\nvoid\nhoedown_stack_uninit(hoedown_stack *st)\n{\n\tassert(st);\n\n\tfree(st->item);\n}\n\nvoid\nhoedown_stack_grow(hoedown_stack *st, size_t neosz)\n{\n\tassert(st);\n\n\tif (st->asize >= neosz)\n\t\treturn;\n\n\tst->item = hoedown_realloc(st->item, neosz * sizeof(void *));\n\tmemset(st->item + st->asize, 0x0, (neosz - st->asize) * sizeof(void *));\n\n\tst->asize = neosz;\n\n\tif (st->size > neosz)\n\t\tst->size = neosz;\n}\n\nvoid\nhoedown_stack_push(hoedown_stack *st, void *item)\n{\n\tassert(st);\n\n\tif (st->size >= st->asize)\n\t\thoedown_stack_grow(st, st->size * 2);\n\n\tst->item[st->size++] = item;\n}\n\nvoid *\nhoedown_stack_pop(hoedown_stack *st)\n{\n\tassert(st);\n\n\tif (!st->size)\n\t\treturn NULL;\n\n\treturn st->item[--st->size];\n}\n\nvoid *\nhoedown_stack_top(const hoedown_stack *st)\n{\n\tassert(st);\n\n\tif (!st->size)\n\t\treturn NULL;\n\n\treturn st->item[st->size - 1];\n}\n"
  },
  {
    "path": "3rdpart/hoedown/src/stack.h",
    "content": "/* stack.h - simple stacking */\n\n#ifndef HOEDOWN_STACK_H\n#define HOEDOWN_STACK_H\n\n#include <stddef.h>\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*********\n * TYPES *\n *********/\n\nstruct hoedown_stack {\n\tvoid **item;\n\tsize_t size;\n\tsize_t asize;\n};\ntypedef struct hoedown_stack hoedown_stack;\n\n\n/*************\n * FUNCTIONS *\n *************/\n\n/* hoedown_stack_init: initialize a stack */\nvoid hoedown_stack_init(hoedown_stack *st, size_t initial_size);\n\n/* hoedown_stack_uninit: free internal data of the stack */\nvoid hoedown_stack_uninit(hoedown_stack *st);\n\n/* hoedown_stack_grow: increase the allocated size to the given value */\nvoid hoedown_stack_grow(hoedown_stack *st, size_t neosz);\n\n/* hoedown_stack_push: push an item to the top of the stack */\nvoid hoedown_stack_push(hoedown_stack *st, void *item);\n\n/* hoedown_stack_pop: retrieve and remove the item at the top of the stack */\nvoid *hoedown_stack_pop(hoedown_stack *st);\n\n/* hoedown_stack_top: retrieve the item at the top of the stack */\nvoid *hoedown_stack_top(const hoedown_stack *st);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /** HOEDOWN_STACK_H **/\n"
  },
  {
    "path": "3rdpart/hoedown/src/version.h",
    "content": "/* version.h - holds Hoedown's version */\n\n#ifndef HOEDOWN_VERSION_H\n#define HOEDOWN_VERSION_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n\n/*************\n * CONSTANTS *\n *************/\n\n#define HOEDOWN_VERSION \"3.0.7\"\n#define HOEDOWN_VERSION_MAJOR 3\n#define HOEDOWN_VERSION_MINOR 0\n#define HOEDOWN_VERSION_REVISION 7\n\n\n/*************\n * FUNCTIONS *\n *************/\n\n/* hoedown_version: retrieve Hoedown's version numbers */\nvoid hoedown_version(int *major, int *minor, int *revision);\n\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif /** HOEDOWN_VERSION_H **/\n"
  },
  {
    "path": "3rdpart/qdarkstyle/qdarkstype.pri",
    "content": "RESOURCES += $$PWD//style.qrc\n"
  },
  {
    "path": "3rdpart/qdarkstyle/style.qrc",
    "content": "<RCC>\n  <qresource prefix=\"qss_icons\">\n    <file>rc/up_arrow_disabled.png</file>\n    <file>rc/Hmovetoolbar.png</file>\n    <file>rc/stylesheet-branch-end.png</file>\n    <file>rc/branch_closed-on.png</file>\n    <file>rc/stylesheet-vline.png</file>\n    <file>rc/branch_closed.png</file>\n    <file>rc/branch_open-on.png</file>\n    <file>rc/transparent.png</file>\n    <file>rc/right_arrow_disabled.png</file>\n    <file>rc/sizegrip.png</file>\n    <file>rc/close.png</file>\n    <file>rc/close-hover.png</file>\n    <file>rc/close-pressed.png</file>\n    <file>rc/down_arrow.png</file>\n    <file>rc/Vmovetoolbar.png</file>\n    <file>rc/left_arrow.png</file>\n    <file>rc/stylesheet-branch-more.png</file>\n    <file>rc/up_arrow.png</file>\n    <file>rc/right_arrow.png</file>\n    <file>rc/left_arrow_disabled.png</file>\n    <file>rc/Hsepartoolbar.png</file>\n    <file>rc/branch_open.png</file>\n    <file>rc/Vsepartoolbar.png</file>\n    <file>rc/down_arrow_disabled.png</file>\n    <file>rc/undock.png</file>\n    <file>rc/checkbox_checked_disabled.png</file>\n    <file>rc/checkbox_checked_focus.png</file>\n    <file>rc/checkbox_checked.png</file>\n    <file>rc/checkbox_indeterminate.png</file>\n    <file>rc/checkbox_indeterminate_focus.png</file>\n    <file>rc/checkbox_unchecked_disabled.png</file>\n    <file>rc/checkbox_unchecked_focus.png</file>\n    <file>rc/checkbox_unchecked.png</file>\n    <file>rc/radio_checked_disabled.png</file>\n    <file>rc/radio_checked_focus.png</file>\n    <file>rc/radio_checked.png</file>\n    <file>rc/radio_unchecked_disabled.png</file>\n    <file>rc/radio_unchecked_focus.png</file>\n    <file>rc/radio_unchecked.png</file>\n  </qresource>\n  <qresource prefix=\"qdarkstyle\">\n      <file>style.qss</file>\n  </qresource>\n</RCC>\n"
  },
  {
    "path": "3rdpart/qdarkstyle/style.qss",
    "content": "/* QDarkStyleSheet --------------------------------------------------------\n\nThis is the main style sheet, the palette has nine main colors.\nIt is based on three selecting colors, three greyish (background) colors\nplus three whitish (foreground) colors. Each set of widgets of the same\ntype have a header like this:\n\n    ------------------\n    GroupName --------\n    ------------------\n\nAnd each widget is separated with a header like this:\n\n    QWidgetName ------\n\nThis makes more easy to find and change some css field. The basic\nconfiguration is described bellow.\n\n    SELECTION ------------\n\n        sel_light  #179AE0 #148CD2 (selection/hover/active)\n        sel_normal #3375A3 #1464A0 (selected)\n        sel_dark   #18465D #14506E (selected disabled)\n\n    FOREGROUND -----------\n\n        for_light  #EFF0F1 #F0F0F0 (texts/labels)\n        for_dark   #505F69 #787878 (disabled texts)\n\n    BACKGROUND -----------\n\n        bac_light  #4D545B #505F69 (unpressed)\n        bac_normal #31363B #32414B (border, disabled, pressed, checked, toolbars, menus)\n        bac_dark   #232629 #19232D (background)\n\nIf a stranger configuration is required because of a bugfix or anything\nelse, keep the comment on that line to nobodys changed it, including the\nissue number.\n--------------------------------------------------------------------------- */\n\n\n\n/* QWidget ---------------------------------------------------------------- */\n\nQWidget {\n    background-color: #19232D;\n    border: 0px solid #32414B;\n    padding: 0px;\n    color: #F0F0F0;\n    selection-background-color: #1464A0;\n    selection-color: #F0F0F0;\n}\n\nQWidget:disabled {\n    background-color: #19232D;\n    color: #787878;\n    selection-background-color: #14506E;\n    selection-color: #787878;\n}\n\nQWidget:item:selected {\n    background-color: #1464A0;\n}\n\nQWidget:item:hover {\n    background-color: #148CD2;\n    color: #32414B;\n}\n\n/* QMainWindow ------------------------------------------------------------ */\n/* This adjusts the splitter in the dock widget, not qsplitter              */\n\n\nQMainWindow::separator {\n    background-color: #32414B;\n    border: 0 solid #19232D;\n    spacing: 0;\n    padding: 2px;\n}\n\nQMainWindow::separator:hover {\n    background-color: #505F69;\n    border: 0px solid #148CD2;\n}\n\nQMainWindow::separator:horizontal {\n    width: 5px;\n    margin-top: 2px;\n    margin-bottom: 2px;\n    image: url(:/qss_icons/rc/Vsepartoolbar.png);\n}\n\nQMainWindow::separator:vertical {\n    height: 5px;\n    margin-left: 2px;\n    margin-right: 2px;\n    image: url(:/qss_icons/rc/Hsepartoolbar.png);\n}\n\n/* QToolTip --------------------------------------------------------------- */\n\nQToolTip {\n    background-color: #148CD2;\n    border: 1px solid #19232D;\n    color: #19232D;\n    padding: 0;   /*remove padding, for fix combo box tooltip*/\n    opacity: 230; /*reducing transparency to read better*/\n}\n\n/* QStatusBar ------------------------------------------------------------- */\n\nQStatusBar {\n    border: 1px solid #32414B;\n}\n\nQStatusBar QToolTip {\n    background-color: #148CD2;\n    border: 1px solid #19232D;\n    color: #19232D;\n    padding: 0;   /*remove padding, for fix combo box tooltip*/\n    opacity: 230; /*reducing transparency to read better*/\n}\n\n/* QCheckBox -------------------------------------------------------------- */\n\nQCheckBox {\n    background-color: #19232D;\n    color: #F0F0F0;\n    spacing: 4px;\n    outline: none;\n    padding-top: 4px;\n    padding-bottom: 4px;\n}\n\nQCheckBox:focus {\n    border: none;\n}\n\nQCheckBox QWidget:disabled {\n    background-color: #19232D;\n    color: #787878;\n}\n\nQCheckBox::indicator {\n    margin-left: 4px;\n    width: 16px;\n    height: 16px;\n}\n\nQCheckBox::indicator:unchecked {\n    image: url(:/qss_icons/rc/checkbox_unchecked.png);\n}\n\nQCheckBox::indicator:unchecked:hover,\nQCheckBox::indicator:unchecked:focus,\nQCheckBox::indicator:unchecked:pressed {\n    border: none;\n    image: url(:/qss_icons/rc/checkbox_unchecked_focus.png);\n}\n\nQCheckBox::indicator:unchecked:disabled {\n    image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png);\n}\n\nQCheckBox::indicator:checked {\n    image: url(:/qss_icons/rc/checkbox_checked.png);\n}\n\nQCheckBox::indicator:checked:hover,\nQCheckBox::indicator:checked:focus,\nQCheckBox::indicator:checked:pressed {\n    border: none;\n    image: url(:/qss_icons/rc/checkbox_checked_focus.png);\n}\n\nQCheckBox::indicator:checked:disabled{\n    image: url(:/qss_icons/rc/checkbox_checked_disabled.png);\n}\n\nQCheckBox::indicator:indeterminate {\n    image: url(:/qss_icons/rc/checkbox_indeterminate.png);\n}\n\nQCheckBox::indicator:indeterminate:disabled {\n    image: url(:/qss_icons/rc/checkbox_indeterminate_disabled.png);\n}\n\nQCheckBox::indicator:indeterminate:focus,\nQCheckBox::indicator:indeterminate:hover,\nQCheckBox::indicator:indeterminate:pressed {\n    image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png);\n}\n\n/* QGroupBox -------------------------------------------------------------- */\n\nQGroupBox {\n    font-weight: bold;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    padding: 4px;\n    margin-top: 16px;\n}\n\n\n\nQGroupBox::title {\n    subcontrol-origin: margin;\n    subcontrol-position: top left;\n    left: 3px;\n    padding-left: 3px;\n    padding-right: 5px;\n    padding-top: 8px;\n    padding-bottom: 16px;\n}\n\nQGroupBox::indicator {\n    margin-left: 4px;\n    width: 16px;\n    height: 16px;\n}\n\nQGroupBox::indicator {\n    margin-left: 2px;\n}\n\nQGroupBox::indicator:unchecked:hover,\nQGroupBox::indicator:unchecked:focus,\nQGroupBox::indicator:unchecked:pressed {\n    border: none;\n    image: url(:/qss_icons/rc/checkbox_unchecked_focus.png);\n}\n\nQGroupBox::indicator:checked:hover,\nQGroupBox::indicator:checked:focus,\nQGroupBox::indicator:checked:pressed {\n    border: none;\n    image: url(:/qss_icons/rc/checkbox_checked_focus.png);\n}\n\nQGroupBox::indicator:checked:disabled {\n    image: url(:/qss_icons/rc/checkbox_checked_disabled.png);\n}\n\nQGroupBox::indicator:unchecked:disabled {\n    image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png);\n}\n\n/* QRadioButton ----------------------------------------------------------- */\n\nQRadioButton {\n    background-color: #19232D;\n    color: #F0F0F0;\n    spacing: 0;\n    padding: 0;\n    border: none;\n    outline: none;\n}\n\nQRadioButton:focus {\n    border: none;\n}\n\nQRadioButton:disabled {\n    background-color: #19232D;\n    color: #787878;\n    border: none;\n    outline: none;\n}\n\nQRadioButton QWidget {\n    background-color: #19232D;\n    color: #F0F0F0;\n    spacing: 0px;\n    padding: 0px;\n    outline: none;\n    border: none;\n}\n\nQRadioButton::indicator {\n    border: none;\n    outline: none;\n    margin-bottom: 2px;\n    width: 25px;\n    height: 25px;\n}\n\nQRadioButton::indicator:unchecked {\n    image: url(:/qss_icons/rc/radio_unchecked.png);\n}\n\nQRadioButton::indicator:unchecked:hover,\nQRadioButton::indicator:unchecked:focus,\nQRadioButton::indicator:unchecked:pressed {\n    border: none;\n    outline: none;\n    image: url(:/qss_icons/rc/radio_unchecked_focus.png);\n}\n\nQRadioButton::indicator:checked {\n    border: none;\n    outline: none;\n    image: url(:/qss_icons/rc/radio_checked.png);\n}\n\nQRadioButton::indicator:checked:hover,\nQRadioButton::indicator:checked:focus,\nQRadioButton::indicator:checked:pressed {\n    border: none;\n    outline: none;\n    image: url(:/qss_icons/rc/radio_checked_focus.png);\n}\n\nQRadioButton::indicator:checked:disabled {\n    outline: none;\n    image: url(:/qss_icons/rc/radio_checked_disabled.png);\n}\n\nQRadioButton::indicator:unchecked:disabled {\n    image: url(:/qss_icons/rc/radio_unchecked_disabled.png);\n}\n\n/* QMenuBar --------------------------------------------------------------- */\n\nQMenuBar {\n    background-color: #32414B;\n    padding: 2px;\n    border: 1px solid #19232D;\n    color: #F0F0F0;\n}\n\nQMenuBar:focus {\n    border: 1px solid #148CD2;\n}\n\nQMenuBar::item {\n    background: transparent;\n    padding: 4px;\n}\n\nQMenuBar::item:selected {\n    padding: 4px;\n    background: transparent;\n    border: 0px solid #32414B;\n}\n\nQMenuBar::item:pressed {\n    padding: 4px;\n    border: 0px solid #32414B;\n    background-color: #148CD2;\n    color: #F0F0F0;\n    margin-bottom: 0px;\n    padding-bottom: 0px;\n}\n\n/* QMenu ------------------------------------------------------------------ */\n\nQMenu {\n    border: 0px solid #32414B;\n    color: #F0F0F0;\n    margin: 0px;\n}\n\nQMenu::separator {\n    height: 2px;\n    background-color: #505F69;\n    color: #F0F0F0;\n    padding-left: 4px;\n    margin-left: 2px;\n    margin-right: 2px;\n}\n\nQMenu::icon {\n    margin: 0px;\n    padding-left:4px;\n}\n\nQMenu::item {\n    padding: 4px 24px 4px 24px;\n    border: 1px transparent #32414B;  /* reserve space for selection border */\n}\n\nQMenu::item:selected {\n    color: #F0F0F0;\n}\n\n\n\nQMenu::indicator {\n    width: 12px;\n    height: 12px;\n    padding-left:6px;\n}\n\n/* non-exclusive indicator = check box style indicator (see QActionGroup::setExclusive) */\n\nQMenu::indicator:non-exclusive:unchecked {\n    image: url(:/qss_icons/rc/checkbox_unchecked.png);\n}\n\nQMenu::indicator:non-exclusive:unchecked:selected {\n    image: url(:/qss_icons/rc/checkbox_unchecked_disabled.png);\n}\n\nQMenu::indicator:non-exclusive:checked {\n    image: url(:/qss_icons/rc/checkbox_checked.png);\n}\n\nQMenu::indicator:non-exclusive:checked:selected {\n    image: url(:/qss_icons/rc/checkbox_checked_disabled.png);\n}\n\n/* exclusive indicator = radio button style indicator (see QActionGroup::setExclusive) */\n\nQMenu::indicator:exclusive:unchecked {\n    image: url(:/qss_icons/rc/radio_unchecked.png);\n}\n\nQMenu::indicator:exclusive:unchecked:selected {\n    image: url(:/qss_icons/rc/radio_unchecked_disabled.png);\n}\n\nQMenu::indicator:exclusive:checked {\n    image: url(:/qss_icons/rc/radio_checked.png);\n}\n\nQMenu::indicator:exclusive:checked:selected {\n    image: url(:/qss_icons/rc/radio_checked_disabled.png);\n}\n\nQMenu::right-arrow {\n    margin: 5px;\n    image: url(:/qss_icons/rc/right_arrow.png)\n}\n\n/* QAbstractItemView ------------------------------------------------------ */\n\nQAbstractItemView {\n    alternate-background-color: #19232D;\n    color: #F0F0F0;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n}\n\nQAbstractItemView QLineEdit {\n    padding: 2px;\n}\n\n/* QAbstractScrollArea ---------------------------------------------------- */\n\nQAbstractScrollArea {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    padding: 4px;\n    color: #F0F0F0;\n}\n\nQAbstractScrollArea:disabled {\n    color: #787878;\n}\n\n/* QScrollArea ------------------------------------------------------------ */\n\nQScrollArea QWidget QWidget:disabled {\n    background-color: #19232D;\n}\n\n/* QScrollBar ------------------------------------------------------------- */\n\nQScrollBar:horizontal {\n    height: 16px;\n    margin: 2px 16px 2px 16px;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    background-color: #19232D;\n}\n\nQScrollBar::handle:horizontal {\n    background-color: #787878;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    min-width: 8px;\n\n}\n\nQScrollBar::handle:horizontal:hover {\n    background-color: #148CD2;\n    border: 1px solid #148CD2;\n    border-radius: 4px;\n    min-width: 8px;\n}\n\nQScrollBar::add-line:horizontal {\n    margin: 0px 0px 0px 0px;\n    border-image: url(:/qss_icons/rc/right_arrow_disabled.png);\n    width: 10px;\n    height: 10px;\n    subcontrol-position: right;\n    subcontrol-origin: margin;\n}\n\nQScrollBar::sub-line:horizontal {\n    margin: 0px 3px 0px 3px;\n    border-image: url(:/qss_icons/rc/left_arrow_disabled.png);\n    height: 10px;\n    width: 10px;\n    subcontrol-position: left;\n    subcontrol-origin: margin;\n}\n\nQScrollBar::add-line:horizontal:hover,\nQScrollBar::add-line:horizontal:on {\n    border-image: url(:/qss_icons/rc/right_arrow.png);\n    height: 10px;\n    width: 10px;\n    subcontrol-position: right;\n    subcontrol-origin: margin;\n}\n\nQScrollBar::sub-line:horizontal:hover,\nQScrollBar::sub-line:horizontal:on {\n    border-image: url(:/qss_icons/rc/left_arrow.png);\n    height: 10px;\n    width: 10px;\n    subcontrol-position: left;\n    subcontrol-origin: margin;\n}\n\nQScrollBar::up-arrow:horizontal,\nQScrollBar::down-arrow:horizontal {\n    background: none;\n}\n\nQScrollBar::add-page:horizontal,\nQScrollBar::sub-page:horizontal {\n    background: none;\n}\n\nQScrollBar:vertical {\n    background-color: #19232D;\n    width: 16px;\n    margin: 16px 2px 16px 2px;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n}\n\nQScrollBar::handle:vertical {\n    background-color: #787878;\n    border: 1px solid #32414B;\n    min-height: 8px;\n    border-radius: 4px;\n}\n\nQScrollBar::handle:vertical:hover {\n    background-color: #148CD2;\n    border: 1px solid #148CD2;\n    border-radius: 4px;\n    min-height: 8px;\n\n}\n\nQScrollBar::sub-line:vertical {\n    margin: 3px 0px 3px 0px;\n    border-image: url(:/qss_icons/rc/up_arrow_disabled.png);\n    height: 10px;\n    width: 10px;\n    subcontrol-position: top;\n    subcontrol-origin: margin;\n}\n\nQScrollBar::add-line:vertical {\n    margin: 3px 0px 3px 0px;\n    border-image: url(:/qss_icons/rc/down_arrow_disabled.png);\n    height: 10px;\n    width: 10px;\n    subcontrol-position: bottom;\n    subcontrol-origin: margin;\n}\n\nQScrollBar::sub-line:vertical:hover,\nQScrollBar::sub-line:vertical:on {\n    border-image: url(:/qss_icons/rc/up_arrow.png);\n    height: 10px;\n    width: 10px;\n    subcontrol-position: top;\n    subcontrol-origin: margin;\n}\n\nQScrollBar::add-line:vertical:hover,\nQScrollBar::add-line:vertical:on {\n    border-image: url(:/qss_icons/rc/down_arrow.png);\n    height: 10px;\n    width: 10px;\n    subcontrol-position: bottom;\n    subcontrol-origin: margin;\n}\n\nQScrollBar::up-arrow:vertical,\nQScrollBar::down-arrow:vertical {\n    background: none;\n}\n\nQScrollBar::add-page:vertical,\nQScrollBar::sub-page:vertical {\n    background: none;\n}\n\n/* QTextEdit--------------------------------------------------------------- */\n\nQTextEdit {\n    background-color: #19232D;\n    color: #F0F0F0;\n    border: 1px solid #32414B;\n}\n\nQTextEdit:hover {\n    border: 1px solid #148CD2;\n    color: #F0F0F0;\n}\n\nQTextEdit:selected {\n    background: #1464A0;\n    color: #32414B;\n}\n\n/* QPlainTextEdit --------------------------------------------------------- */\n\nQPlainTextEdit {\n    background-color: #19232D;\n    color: #F0F0F0;\n    border-radius: 4px;\n    border: 1px solid #32414B;\n}\n\nQPlainTextEdit:hover {\n    border: 1px solid #148CD2;\n    color: #F0F0F0;\n}\n\nQPlainTextEdit:selected {\n    background: #1464A0;\n    color: #32414B;\n}\n\n/* QSizeGrip --------------------------------------------------------------- */\n\nQSizeGrip {\n    image: url(:/qss_icons/rc/sizegrip.png);\n    width: 12px;\n    height: 12px;\n}\n\n/* QStackedWidget --------------------------------------------------------- */\n\nQStackedWidget {\n    padding: 4px;\n    border: 1px solid #32414B;\n    border: 1px solid #19232D;\n}\n\n/* QToolBar --------------------------------------------------------------- */\n\nQToolBar {\n    background-color: #32414B;\n    border-bottom: 1px solid #19232D;\n    padding: 2px;\n    font-weight: bold;\n}\n\nQToolBar QToolButton{\n    background-color: #32414B;\n}\n\nQToolBar::handle:horizontal {\n    width: 6px;\n    image: url(:/qss_icons/rc/Hmovetoolbar.png);\n}\n\nQToolBar::handle:vertical {\n    height: 6px;\n    image: url(:/qss_icons/rc/Vmovetoolbar.png);\n}\n\nQToolBar::separator:horizontal {\n    width: 3px;\n    image: url(:/qss_icons/rc/Hsepartoolbar.png);\n}\n\nQToolBar::separator:vertical {\n    height: 3px;\n    image: url(:/qss_icons/rc/Vsepartoolbar.png);\n}\n\nQToolButton#qt_toolbar_ext_button {\n    background: #32414B;\n    border: 0px;\n    color: #F0F0F0;\n    image: url(:/qss_icons/rc/right_arrow.png);\n}\n\n/* QAbstractSpinBox ------------------------------------------------------- */\n\nQAbstractSpinBox {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #F0F0F0;\n    padding-top: 2px;     /* This fix  103, 111*/\n    padding-bottom: 2px;  /* This fix  103, 111*/\n    padding-left: 4px;\n    padding-right: 4px;\n    border-radius: 4px;\n    /* min-width: 5px; removed to fix 109 */\n}\n\nQAbstractSpinBox:up-button {\n    background-color: transparent #19232D;\n    subcontrol-origin: border;\n    subcontrol-position: top right;\n    border-left: 1px solid #32414B;\n    margin: 1px;\n}\n\nQAbstractSpinBox::up-arrow,\nQAbstractSpinBox::up-arrow:disabled,\nQAbstractSpinBox::up-arrow:off {\n    image: url(:/qss_icons/rc/up_arrow_disabled.png);\n    width: 9px;\n    height: 9px;\n}\n\nQAbstractSpinBox::up-arrow:hover {\n    image: url(:/qss_icons/rc/up_arrow.png);\n}\n\nQAbstractSpinBox:down-button {\n    background-color: transparent #19232D;\n    subcontrol-origin: border;\n    subcontrol-position: bottom right;\n    border-left: 1px solid #32414B;\n    margin: 1px;\n}\n\nQAbstractSpinBox::down-arrow,\nQAbstractSpinBox::down-arrow:disabled,\nQAbstractSpinBox::down-arrow:off {\n    image: url(:/qss_icons/rc/down_arrow_disabled.png);\n    width: 9px;\n    height: 9px;\n}\n\nQAbstractSpinBox::down-arrow:hover {\n    image: url(:/qss_icons/rc/down_arrow.png);\n}\n\nQAbstractSpinBox:hover{\n    border: 1px solid #148CD2;\n    color: #F0F0F0;\n}\n\nQAbstractSpinBox:selected {\n    background: #1464A0;\n    color: #32414B;\n}\n\n/* ------------------------------------------------------------------------ */\n/* DISPLAYS --------------------------------------------------------------- */\n/* ------------------------------------------------------------------------ */\n\n/* QLabel ----------------------------------------------------------------- */\n\nQLabel {\n    background-color: #19232D;\n    border: 0px solid #32414B;\n    padding: 2px;\n    margin: 0px;\n    color: #F0F0F0\n}\n\nQLabel::disabled {\n    background-color: #19232D;\n    border: 0px solid #32414B;\n    color: #787878;\n}\n\n/* QTextBrowser ----------------------------------------------------------- */\n\nQTextBrowser {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #F0F0F0;\n    border-radius: 4px;\n}\n\nQTextBrowser:disabled {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #787878;\n    border-radius: 4px;\n}\n\nQTextBrowser:hover,\nQTextBrowser:!hover,\nQTextBrowser::selected,\nQTextBrowser::pressed {\n    border: 1px solid #32414B;\n}\n\n/* QGraphicsView --------------------------------------------------------- */\n\nQGraphicsView {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #F0F0F0;\n    border-radius: 4px;\n}\n\nQGraphicsView:disabled {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #787878;\n    border-radius: 4px;\n}\n\nQGraphicsView:hover,\nQGraphicsView:!hover,\nQGraphicsView::selected,\nQGraphicsView::pressed {\n    border: 1px solid #32414B;\n}\n\n/* QCalendarWidget -------------------------------------------------------- */\n\nQCalendarWidget {\n    border: 1px solid #32414B;\n    border-radius: 4px;\n}\n\nQCalendarWidget:disabled {\n    background-color: #19232D;\n    color: #787878;\n}\n\n/* QLCDNumber ------------------------------------------------------------- */\n\nQLCDNumber {\n    background-color: #19232D;\n    color: #F0F0F0;\n}\n\nQLCDNumber:disabled {\n    background-color: #19232D;\n    color: #787878;\n}\n\n/* QProgressBar ----------------------------------------------------------- */\n\nQProgressBar {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #F0F0F0;\n    border-radius: 4px;\n    text-align: center;\n}\n\nQProgressBar:disabled {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #787878;\n    border-radius: 4px;\n    text-align: center;\n}\n\nQProgressBar::chunk {\n    background-color: #1464A0;\n    color: #19232D;\n    border-radius: 4px;\n}\n\nQProgressBar::chunk:disabled {\n    background-color: #14506E;\n    color: #787878;\n    border-radius: 4px;\n}\n\n\n/* ------------------------------------------------------------------------ */\n/* BUTTONS ---------------------------------------------------------------- */\n/* ------------------------------------------------------------------------ */\n\n/* QPushButton ------------------------------------------------------------ */\n\nQPushButton {\n    background-color: #505F69 ;\n    border: 1px solid #32414B;\n    color: #F0F0F0;\n    border-radius: 4px;\n    padding: 3px;\n    outline: none;\n}\n\nQPushButton:disabled {\n    background-color: #32414B;\n    border: 1px solid #32414B;\n    color: #787878;\n    border-radius: 4px;\n    padding: 3px;\n}\n\n\nQPushButton:checked {\n    background-color: #32414B;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    padding: 3px;\n    outline: none;\n}\n\nQPushButton:checked:disabled {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #787878;\n    border-radius: 4px;\n    padding: 3px;\n    outline: none;\n}\n\nQPushButton::menu-indicator {\n    subcontrol-origin: padding;\n    subcontrol-position: bottom right;\n    bottom: 4px;\n}\n\nQPushButton:pressed {\n    background-color: #19232D;\n    border: 1px solid #19232D;\n}\n\nQPushButton:hover,\nQPushButton:checked:hover{\n    border: 1px solid #148CD2;\n    color: #F0F0F0;\n}\n\nQPushButton:selected,\nQPushButton:checked:selected{\n    background: #1464A0;\n    color: #32414B;\n}\n\n/* QToolButton ------------------------------------------------------------ */\n\nQToolButton {\n    background-color: transparent;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    margin: 0px;\n    padding: 2px;\n}\n\nQToolButton:checked {\n    background-color: #19232D;\n    border: 1px solid #19232D;\n}\n\nQToolButton:disabled {\n    border: 1px solid #32414B;\n}\n\nQToolButton:hover,\nQToolButton:checked:hover{\n    border: 1px solid #148CD2;\n}\n\n/* the subcontrols below are used only in the MenuButtonPopup mode */\n\nQToolButton[popupMode=\"1\"] {\n    padding: 2px;\n    padding-right: 12px;     /* only for MenuButtonPopup */\n    border: 1px solid #32414B;   /* make way for the popup button */\n    border-radius: 4px;\n}\n\n/* The subcontrol below is used only in the InstantPopup or DelayedPopup mode */\n\nQToolButton[popupMode=\"2\"] {\n    padding: 2px;\n    padding-right: 12px;      /* only for InstantPopup */\n    border: 1px solid #32414B;    /* make way for the popup button */\n}\n\nQToolButton::menu-button {\n    padding: 2px;\n    border-radius: 4px;\n    border: 1px solid #32414B;\n    border-top-right-radius: 4px;\n    border-bottom-right-radius: 4px;\n    /* 16px width + 4px for border = 20px allocated above */\n    width: 16px;\n    outline: none;\n}\n\nQToolButton::menu-button:hover,\nQToolButton::menu-button:checked:hover {\n    border: 1px solid #148CD2;\n}\n\nQToolButton::menu-indicator {\n    image: url(:/qss_icons/rc/down_arrow.png);\n    top: -8px;     /* shift it a bit */\n    left: -4px;    /* shift it a bit */\n}\n\nQToolButton::menu-arrow {\n    image: url(:/qss_icons/rc/down_arrow.png);\n}\n\nQToolButton::menu-arrow:open {\n    border: 1px solid #32414B;\n}\n\n/* QCommandLinkButton ----------------------------------------------------- */\n\nQCommandLinkButton {\n    background-color: transparent;\n    border: 1px solid #32414B;\n    color: #F0F0F0;\n    border-radius: 4px;\n    padding: 0px;\n    margin: 0px;\n}\n\nQCommandLinkButton:disabled {\n    background-color: transparent;\n    color: #787878;\n}\n\n/* ------------------------------------------------------------------------ */\n/* INPUTS - NO FIELDS ----------------------------------------------------- */\n/* ------------------------------------------------------------------------ */\n\n/* QCombobox -------------------------------------------------------------- */\n\nQComboBox {\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    selection-background-color: #1464A0;\n    padding-top: 2px;     /* This fix  #103, #111*/\n    padding-bottom: 2px;  /* This fix  #103, #111*/\n    padding-left: 4px;\n    padding-right: 4px;\n    /* min-width: 75px;  removed to fix 109 */\n}\n\nQComboBox:disabled {\n    background-color: #19232D;\n    color: #787878;\n}\n\nQComboBox:hover{\n    border: 1px solid #148CD2;\n}\n\nQComboBox:on {\n    selection-background-color: #19232D;\n}\n\nQComboBox QAbstractItemView {\n    background-color: #19232D;\n    border-radius: 4px;\n    border: 1px solid #32414B;\n    selection-color: #148CD2;\n    selection-background-color: #32414B;\n}\n\nQComboBox::drop-down {\n    subcontrol-origin: padding;\n    subcontrol-position: top right;\n    width: 20px;\n    border-left-width: 0px;\n    border-left-color: #32414B;\n    border-left-style: solid;\n    border-top-right-radius: 3px;\n    border-bottom-right-radius: 3px;\n}\n\nQComboBox::down-arrow {\n    image: url(:/qss_icons/rc/down_arrow_disabled.png);\n}\n\nQComboBox::down-arrow:on,\nQComboBox::down-arrow:hover,\nQComboBox::down-arrow:focus {\n    image: url(:/qss_icons/rc/down_arrow.png);\n}\n\n/* QSlider ---------------------------------------------------------------- */\n\nQSlider:disabled {\n    background: #19232D;\n}\n\nQSlider:focus {\n    border: none;\n}\n\nQSlider::groove:horizontal {\n    background: #32414B;\n    border: 1px solid #32414B;\n    height: 4px;\n    margin: 0px;\n    border-radius: 4px;\n}\n\nQSlider::sub-page:horizontal {\n    background: #1464A0;\n    border: 1px solid #32414B;\n    height: 4px;\n    margin: 0px;\n    border-radius: 4px;\n}\n\nQSlider::sub-page:horizontal:disabled {\n    background: #14506E;\n}\n\nQSlider::handle:horizontal {\n    background: #787878;\n    border: 1px solid #32414B;\n    width: 8px;\n    height: 8px;\n    margin: -8px 0;\n    border-radius: 4px;\n}\n\nQSlider::handle:horizontal:hover {\n    background: #148CD2;\n    border: 1px solid #148CD2;\n}\n\nQSlider::groove:vertical {\n    background: #32414B;\n    border: 1px solid #32414B;\n    width: 4px;\n    margin: 0px;\n    border-radius: 4px;\n}\n\nQSlider::sub-page:vertical {\n    background: #1464A0;\n    border: 1px solid #32414B;\n    width: 4px;\n    margin: 0px;\n    border-radius: 4px;\n}\n\nQSlider::sub-page:vertical:disabled {\n    background: #14506E;\n}\n\nQSlider::handle:vertical {\n    background: #787878;\n    border: 1px solid #32414B;\n    width: 8px;\n    height: 8px;\n    margin: 0 -8px;\n    border-radius: 4px;\n}\n\nQSlider::handle:vertical:hover {\n    background: #148CD2;\n    border: 1px solid #148CD2;\n}\n\n/* QLine ------------------------------------------------------------------ */\n\nQLineEdit {\n    background-color: #19232D;\n    padding-top: 2px;     /* This QLineEdit fix  103, 111 */\n    padding-bottom: 2px;  /* This QLineEdit fix  103, 111 */\n    padding-left: 4px;\n    padding-right: 4px;\n    border-style: solid;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    color: #F0F0F0;\n}\n\nQLineEdit:disabled {\n    background-color: #19232D;\n    color: #787878;\n}\n\nQLineEdit:hover{\n    border: 1px solid #148CD2;\n    color: #F0F0F0;\n}\n\nQLineEdit:selected{\n    background: #1464A0;\n    color: #32414B;\n}\n\n/* QTabWiget -------------------------------------------------------------- */\n\nQTabWidget {\n    padding: 2px;\n    selection-background-color: #32414B;\n}\n\nQTabWidget QFrame{\n    border: 0;\n}\n\nQTabWidget::pane {\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    padding: 2px;\n    margin: 0px;\n}\n\nQTabWidget::pane:selected {\n    background-color: #32414B;\n    border: 1px solid #1464A0;\n}\n\n/* QTabBar ---------------------------------------------------------------- */\n\nQTabBar {\n    qproperty-drawBase: 0;\n    border-radius: 4px;\n    margin: 0px;\n    padding: 2px;\n    border: 0;\n\n    /* left: 5px; move to the right by 5px - removed for fix */\n    }\n\nQTabBar::close-button {\n    border: 0;\n    margin: 2px;\n    padding: 0;\n    image: url(:/qss_icons/rc/close.png);\n}\n\nQTabBar::close-button:hover {\n    image: url(:/qss_icons/rc/close-hover.png);\n}\n\nQTabBar::close-button:pressed {\n    image: url(:/qss_icons/rc/close-pressed.png);\n}\n\n/* QTabBar::tab - selected ----------------------------------------------- */\n\nQTabBar::tab:top:selected:disabled {\n    border-bottom: 3px solid #14506E;\n    color: #787878;\n    background-color: #32414B;\n}\n\nQTabBar::tab:bottom:selected:disabled {\n    border-top: 3px solid #14506E;\n    color: #787878;\n    background-color: #32414B;\n}\n\nQTabBar::tab:left:selected:disabled {\n    border-left: 3px solid #14506E;\n    color: #787878;\n    background-color: #32414B;\n}\n\nQTabBar::tab:right:selected:disabled {\n    border-right: 3px solid #14506E;\n    color: #787878;\n    background-color: #32414B;\n}\n\n/* QTabBar::tab - !selected and disabled ---------------------------------- */\n\nQTabBar::tab:top:!selected:disabled {\n    border-bottom: 3px solid #19232D;\n    color: #787878;\n    background-color: #19232D;\n}\n\nQTabBar::tab:bottom:!selected:disabled {\n    border-top: 3px solid #19232D;\n    color: #787878;\n    background-color: #19232D;\n}\n\nQTabBar::tab:left:!selected:disabled {\n    border-right: 3px solid #19232D;\n    color: #787878;\n    background-color: #19232D;\n}\n\nQTabBar::tab:right:!selected:disabled {\n    border-left: 3px solid #19232D;\n    color: #787878;\n    background-color: #19232D;\n}\n\n/* QTabBar::tab - selected ----------------------------------------------- */\n\nQTabBar::tab:top:!selected {\n    border-bottom: 2px solid #19232D;\n    margin-top: 2px;\n}\n\nQTabBar::tab:bottom:!selected {\n    border-top: 2px solid #19232D;\n    margin-bottom: 3px;\n}\n\nQTabBar::tab:left:!selected {\n    border-left: 2px solid #19232D;\n    margin-right: 2px;\n}\n\nQTabBar::tab:right:!selected {\n    border-right: 2px solid #19232D;\n    margin-left: 2px;\n}\n\n\nQTabBar::tab:top {\n    background-color: #32414B;\n    color: #F0F0F0;\n    margin-left: 2px;\n    padding-left: 4px;\n    padding-right: 4px;\n    padding-top: 2px;\n    padding-bottom: 2px;\n    min-width: 5px;\n    border-bottom: 3px solid #32414B;\n    border-top-left-radius: 3px;\n    border-top-right-radius: 3px;\n}\n\nQTabBar::tab:top:selected {\n    background-color: #505F69;\n    color: #F0F0F0;\n    border-bottom: 3px solid #1464A0;\n    border-top-left-radius: 3px;\n    border-top-right-radius: 3px;\n}\n\nQTabBar::tab:top:!selected:hover {\n    border: 1px solid #148CD2;\n    border-bottom: 3px solid #148CD2;\n    padding: 0px;\n}\n\nQTabBar::tab:bottom {\n    color: #F0F0F0;\n    border-top: 3px solid #32414B;\n    background-color: #32414B;\n    margin-left: 2px;\n    padding-left: 4px;\n    padding-right: 4px;\n    padding-top: 2px;\n    padding-bottom: 2px;\n    border-bottom-left-radius: 3px;\n    border-bottom-right-radius: 3px;\n    min-width: 5px;\n}\n\nQTabBar::tab:bottom:selected {\n    color: #F0F0F0;\n    background-color: #505F69;\n    border-top: 3px solid #1464A0;\n    border-bottom-left-radius: 3px;\n    border-bottom-right-radius: 3px;\n}\n\nQTabBar::tab:bottom:!selected:hover {\n    border: 1px solid #148CD2;\n    border-top: 3px solid #148CD2;\n    padding: 0px;\n}\n\nQTabBar::tab:left {\n    color: #F0F0F0;\n    background-color: #32414B;\n    margin-top: 2px;\n    padding-left: 2px;\n    padding-right: 2px;\n    padding-top: 4px;\n    padding-bottom: 4px;\n    border-top-right-radius: 3px;\n    border-bottom-right-radius: 3px;\n    min-height: 5px;\n}\n\nQTabBar::tab:left:selected {\n    color: #F0F0F0;\n    background-color: #505F69;\n    border-left: 3px solid #1464A0;\n    border-top-right-radius: 3px;\n    border-bottom-right-radius: 3px;\n}\n\nQTabBar::tab:left:!selected:hover {\n    border: 1px solid #148CD2;\n    border-left: 3px solid #148CD2;\n    padding: 0px;\n}\n\nQTabBar::tab:right {\n    color: #F0F0F0;\n    background-color: #32414B;\n    margin-top: 2px;\n    padding-left: 2px;\n    padding-right: 2px;\n    padding-top: 4px;\n    padding-bottom: 4px;\n    border-top-left-radius: 3px;\n    border-bottom-left-radius: 3px;\n    min-height: 5px;\n}\n\nQTabBar::tab:right:selected {\n    color: #F0F0F0;\n    background-color: #505F69;\n    border-right: 3px solid #1464A0;\n    border-top-left-radius: 3px;\n    border-bottom-left-radius: 3px;\n}\n\nQTabBar::tab:right:!selected:hover {\n    border: 1px solid #148CD2;\n    border-right: 3px solid #148CD2;\n    padding: 0px;\n}\n\nQTabBar QToolButton::right-arrow:enabled {\n    image: url(:/qss_icons/rc/right_arrow.png);\n}\n\nQTabBar QToolButton::left-arrow:enabled {\n    image: url(:/qss_icons/rc/left_arrow.png);\n}\n\nQTabBar QToolButton::right-arrow:disabled {\n    image: url(:/qss_icons/rc/right_arrow_disabled.png);\n}\n\nQTabBar QToolButton::left-arrow:disabled {\n    image: url(:/qss_icons/rc/left_arrow_disabled.png);\n}\n\n\n/*  Some examples from internet to check\n\nQTabBar::tabButton() and QTabBar::tabIcon()\nQTabBar::tear {width: 0px; border: none;}\nQTabBar::tear {image: url(tear_indicator.png);}\nQTabBar::scroller{width:85pix;}\nQTabBar QToolbutton{background-color:\"light blue\";}\n\nBut that left the buttons transparant.\nLooked confusing as the tab buttons migrated behind the scroller buttons.\nSo we had to color the back ground of the scroller buttons\n*/\n\n/* QDockWiget ------------------------------------------------------------- */\n\nQDockWidget {\n    outline: 1px solid #32414B;\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    titlebar-close-icon: url(:/qss_icons/rc/close.png);\n    titlebar-normal-icon: url(:/qss_icons/rc/undock.png);\n}\n\nQDockWidget::title {\n    padding: 6px;   /* better size for title bar */\n    border: none;\n    background-color: #32414B;\n}\n\nQDockWidget::close-button {\n    background-color: #32414B;\n    border-radius: 4px;\n    border: none;\n}\n\nQDockWidget::close-button:hover {\n    border: 1px solid #32414B;\n}\n\nQDockWidget::close-button:pressed {\n    border: 1px solid #32414B;\n}\n\nQDockWidget::float-button {\n    background-color: #32414B;\n    border-radius: 4px;\n    border: none;\n}\n\nQDockWidget::float-button:hover {\n    border: 1px solid #32414B;\n}\n\nQDockWidget::float-button:pressed {\n    border: 1px solid #32414B;\n}\n\n\n/* QTreeView QTableView QListView ----------------------------------------- */\n\nQTreeView:branch:selected,\nQTreeView:branch:hover {\n    background: url(:/qss_icons/rc/transparent.png);\n}\n\nQTreeView::branch:has-siblings:!adjoins-item {\n    border-image: url(:/qss_icons/rc/transparent.png);\n}\n\nQTreeView::branch:has-siblings:adjoins-item {\n    border-image: url(:/qss_icons/rc/transparent.png);\n}\n\nQTreeView::branch:!has-children:!has-siblings:adjoins-item {\n    border-image: url(:/qss_icons/rc/transparent.png);\n}\n\nQTreeView::branch:has-children:!has-siblings:closed,\nQTreeView::branch:closed:has-children:has-siblings {\n    image: url(:/qss_icons/rc/branch_closed.png);\n}\n\nQTreeView::branch:open:has-children:!has-siblings,\nQTreeView::branch:open:has-children:has-siblings {\n    image: url(:/qss_icons/rc/branch_open.png);\n}\n\nQTreeView::branch:has-children:!has-siblings:closed:hover,\nQTreeView::branch:closed:has-children:has-siblings:hover {\n    image: url(:/qss_icons/rc/branch_closed-on.png);\n}\n\nQTreeView::branch:open:has-children:!has-siblings:hover,\nQTreeView::branch:open:has-children:has-siblings:hover {\n    image: url(:/qss_icons/rc/branch_open-on.png);\n}\n\nQListView::item:!selected:hover,\nQTreeView::item:!selected:hover,\nQTableView::item:!selected:hover,\nQColumnView::item:!selected:hover {\n    outline: 0;\n    color: #148CD2;\n    background-color: #32414B;\n}\n\nQListView::item:selected:hover,\nQTreeView::item:selected:hover,\nQTableView::item:selected:hover,\nQColumnView::item:selected:hover {\n    background: #1464A0;\n    color:  #19232D;\n}\n\nQTreeView::indicator:checked,\nQListView::indicator:checked {\n    image: url(:/qss_icons/rc/checkbox_checked.png);\n}\n\nQTreeView::indicator:unchecked,\nQListView::indicator:unchecked {\n    image: url(:/qss_icons/rc/checkbox_unchecked.png);\n}\n\nQTreeView::indicator:checked:hover,\nQTreeView::indicator:checked:focus,\nQTreeView::indicator:checked:pressed,\nQListView::indicator:checked:hover,\nQListView::indicator:checked:focus,\nQListView::indicator:checked:pressed {\n    image: url(:/qss_icons/rc/checkbox_checked_focus.png);\n}\n\nQTreeView::indicator:unchecked:hover,\nQTreeView::indicator:unchecked:focus,\nQTreeView::indicator:unchecked:pressed,\nQListView::indicator:unchecked:hover,\nQListView::indicator:unchecked:focus,\nQListView::indicator:unchecked:pressed {\n    image: url(:/qss_icons/rc/checkbox_unchecked_focus.png);\n}\n\nQTreeView::indicator:indeterminate:hover,\nQTreeView::indicator:indeterminate:focus,\nQTreeView::indicator:indeterminate:pressed,\nQListView::indicator:indeterminate:hover,\nQListView::indicator:indeterminate:focus,\nQListView::indicator:indeterminate:pressed {\n    image: url(:/qss_icons/rc/checkbox_indeterminate_focus.png);\n}\n\nQTreeView::indicator:indeterminate,\nQListView::indicator:indeterminate {\n    image: url(:/qss_icons/rc/checkbox_indeterminate.png);\n}\n\nQListView,\nQTreeView,\nQTableView,\nQColumnView {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #F0F0F0;\n    gridline-color: #32414B;\n    border-radius: 4px;\n}\n\nQListView:disabled,\nQTreeView:disabled,\nQTableView:disabled,\nQColumnView:disabled {\n    background-color: #19232D;\n    color: #787878;\n}\n\nQListView:selected,\nQTreeView:selected,\nQTableView:selected,\nQColumnView:selected {\n    background: #1464A0;\n    color: #32414B;\n}\n\nQListView:hover,\nQTreeView::hover,\nQTableView::hover,\nQColumnView::hover {\n    background-color: #19232D;\n    border: 1px solid #148CD2;\n}\n\nQListView::item:pressed,\nQTreeView::item:pressed,\nQTableView::item:pressed,\nQColumnView::item:pressed {\n    background-color: #1464A0;\n}\n\nQListView::item:selected:active,\nQTreeView::item:selected:active,\nQTableView::item:selected:active,\nQColumnView::item:selected:active {\n    background-color: #1464A0;\n}\n\nQTableCornerButton::section {\n    background-color: #19232D;\n    border: 1px transparent #32414B;\n    border-radius: 0px;\n}\n\n/* QHeaderView ------------------------------------------------------------ */\n\nQHeaderView {\n    background-color: #32414B;\n    border: 0px transparent #32414B;\n    padding: 0px;\n    margin: 0px;\n    border-radius: 0px;\n}\n\nQHeaderView:disabled {\n    background-color: #32414B;\n    border: 1px transparent #32414B;\n    padding: 2px;\n}\n\nQHeaderView::section {\n    background-color: #32414B;\n    color: #F0F0F0;\n    padding: 2px;\n    border-radius: 0px;\n    text-align: left;\n}\n\nQHeaderView::section:checked {\n    color: #F0F0F0;\n    background-color: #1464A0;\n}\n\nQHeaderView::section:checked:disabled {\n    color: #787878;\n    background-color: #14506E;\n}\n\nQHeaderView::section::horizontal:disabled,\nQHeaderView::section::vertical:disabled {\n    color: #787878;\n}\n\nQHeaderView::section::vertical::first,\nQHeaderView::section::vertical::only-one {\n    border-top: 1px solid #32414B;\n}\n\nQHeaderView::section::vertical {\n    border-top: 1px solid #19232D;\n}\n\nQHeaderView::section::horizontal::first,\nQHeaderView::section::horizontal::only-one {\n    border-left: 1px solid #32414B;\n}\n\nQHeaderView::section::horizontal {\n    border-left: 1px solid #19232D;\n}\n\n/* Those settings (border/width/height/background-color) solve bug */\n/* transparent arrow background and size */\n\nQHeaderView::down-arrow {\n    background-color: #32414B;\n    width: 16px;\n    height: 16px;\n    border-right: 1px solid #19232D;\n    image: url(:/qss_icons/rc/down_arrow.png);\n}\n\nQHeaderView::up-arrow {\n    background-color: #32414B;\n    width: 16px;\n    height: 16px;\n    border-right: 1px solid #19232D;\n    image: url(:/qss_icons/rc/up_arrow.png);\n}\n\n/* QToolBox -------------------------------------------------------------- */\n\nQToolBox {\n    padding: 0px;\n    border: 1px solid #32414B;\n}\n\nQToolBox::selected {\n    padding: 0px;\n    border: 2px solid #1464A0;\n}\n\nQToolBox::tab {\n    background-color: #19232D;\n    border: 1px solid #32414B;\n    color: #F0F0F0;\n    border-top-left-radius: 4px;\n    border-top-right-radius: 4px;\n}\n\nQToolBox::tab:disabled {\n    color: #787878;\n}\n\nQToolBox::tab:selected {\n    background-color: #505F69;\n    border-bottom: 2px solid #1464A0;\n}\n\nQToolBox::tab:!selected {\n    background-color: #32414B;\n    border-bottom: 2px solid #32414B;\n}\n\nQToolBox::tab:selected:disabled {\n    background-color: #32414B;\n    border-bottom: 2px solid #14506E;\n}\n\nQToolBox::tab:!selected:disabled {\n    background-color: #19232D;\n}\n\nQToolBox::tab:hover {\n    border-color: #148CD2;\n    border-bottom: 2px solid #148CD2;\n}\n\nQToolBox QScrollArea QWidget QWidget {\n    padding: 0px;\n    background-color: #19232D;\n}\n\n/* QFrame ----------------------------------------------------------------- */\n\nQFrame {\n    border-radius: 4px;\n    border: 1px solid #32414B;\n}\n\nQFrame[frameShape=\"0\"] {\n    border-radius: 4px;\n    border: 1px transparent #32414B;\n}\n\nQFrame[height=\"3\"],\nQFrame[width=\"3\"] {\n    background-color: #19232D;\n}\n\n/* QSplitter -------------------------------------------------------------- */\n\nQSplitter {\n    background-color: #32414B;\n    spacing: 0;\n    padding: 0;\n    margin: 0;\n}\n\nQSplitter::separator {\n    background-color: #32414B;\n    border: 0 solid #19232D;\n    spacing: 0;\n    padding: 1px;\n    margin: 0;\n}\n\nQSplitter::separator:hover {\n    background-color: #787878;\n}\n\nQSplitter::separator:horizontal {\n    width: 5px;\n    image: url(:/qss_icons/rc/Vsepartoolbar.png);\n}\n\nQSplitter::separator:vertical {\n    height: 5px;\n    image: url(:/qss_icons/rc/Hsepartoolbar.png);\n}\n\n\n/* QDateEdit-------------------------------------------------------------- */\n\nQDateEdit {\n    selection-background-color: #1464A0;\n    border-style: solid;\n    border: 1px solid #32414B;\n    border-radius: 4px;\n    padding-top: 2px;     /* This fix  #103, #111*/\n    padding-bottom: 2px;  /* This fix  #103, #111*/\n    padding-left: 4px;\n    padding-right: 4px;\n    min-width: 10px;\n}\n\nQDateEdit:on {\n    selection-background-color: #1464A0;\n}\n\nQDateEdit::drop-down {\n    subcontrol-origin: padding;\n    subcontrol-position: top right;\n    width: 20px;\n    border-top-right-radius: 3px;\n    border-bottom-right-radius: 3px;\n}\n\nQDateEdit::down-arrow {\n    image: url(:/qss_icons/rc/down_arrow_disabled.png);\n}\n\nQDateEdit::down-arrow:on,\nQDateEdit::down-arrow:hover,\nQDateEdit::down-arrow:focus {\n    image: url(:/qss_icons/rc/down_arrow.png);\n}\n\nQDateEdit QAbstractItemView {\n    background-color: #19232D;\n    border-radius: 4px;\n    border: 1px solid #32414B;\n    selection-background-color: #1464A0;\n}\n\nQAbstractView:hover{\n    border: 1px solid #148CD2;\n    color: #F0F0F0;\n}\n\nQAbstractView:selected {\n    background: #1464A0;\n    color: #32414B;\n}\n\n\n"
  },
  {
    "path": "3rdpart/qhexview/.gitignore",
    "content": "build\nmoc_*\n*.o\nexample/qhexview\nMakefile\n"
  },
  {
    "path": "3rdpart/qhexview/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2015 \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "3rdpart/qhexview/README.md",
    "content": "QHexView\n==========\n\nThis is Qt widget for display binary data in traditional hex-editor style. This widget doesn`t have any editing capabilities. Only viewing and copying.\n\n\nGUI\n-----\n![2015-03-29 13 49 54](https://cloud.githubusercontent.com/assets/10683398/6884566/d438a350-d61a-11e4-9c4b-16f67f5fdf07.png)\n\n\nBuilding the example \n-----\n\n* cd  QHexView\n* mkdir build\n* cd build\n* qmake ../example/qhexview.pro\n* make\n\n\nUsage\n-----\n\t...\n\tQByteArray data;\n\t...\n\tQHexView *phexView = new QHexView;\n\t...\n\tphexView -> setData(data);\n\t...\n"
  },
  {
    "path": "3rdpart/qhexview/include/QHexView.h",
    "content": "#ifndef Q_HEX_VIEWER_H_\n#define Q_HEX_VIEWER_H_\n\n#include <QAbstractScrollArea>\n#include <QByteArray>\n#include <QFile>\n\nclass QHexView: public QAbstractScrollArea\n\n{\n\tpublic:\n\t\tclass DataStorage\n\t\t{\n\t\t\tpublic:\n                virtual ~DataStorage() {}\n\t\t\t\tvirtual QByteArray getData(std::size_t position, std::size_t length) = 0;\n\t\t\t\tvirtual std::size_t size() = 0;\n\t\t};\n\n\t\tclass DataStorageArray: public DataStorage\n\t\t{\n\t\t\tpublic:\n\t\t\t\tDataStorageArray(const QByteArray &arr);\n\t\t\t\tvirtual QByteArray getData(std::size_t position, std::size_t length);\n\t\t\t\tvirtual std::size_t size();\n\t\t\tprivate:\n\t\t\t\tQByteArray    m_data;\n\t\t};\n\n\t\tclass DataStorageFile: public DataStorage\n\t\t{\n\t\t\tpublic:\n\t\t\t\tDataStorageFile(const QString &fileName);\n\t\t\t\tvirtual QByteArray getData(std::size_t position, std::size_t length);\n\t\t\t\tvirtual std::size_t size();\n\t\t\tprivate:\n\t\t\t\tQFile      m_file;\n\t\t};\n\n\n\n        QHexView(QWidget *parent = nullptr);\n\t\t~QHexView();\n\n    public slots:\n        void setData(QHexView::DataStorage *pData);\n\t\tvoid clear();\n\t\tvoid showFromOffset(std::size_t offset);\n\n\tprotected:\n\t\tvoid paintEvent(QPaintEvent *event);\n\t\tvoid keyPressEvent(QKeyEvent *event);\n\t\tvoid mouseMoveEvent(QMouseEvent *event);\n\t\tvoid mousePressEvent(QMouseEvent *event);\n\tprivate:\n\t\tDataStorage          *m_pdata;\n\t\tstd::size_t           m_posAddr; \n\t\tstd::size_t           m_posHex;\n\t\tstd::size_t           m_posAscii;\n\t\tstd::size_t           m_charWidth;\n\t\tstd::size_t           m_charHeight;\n\n\n\t\tstd::size_t           m_selectBegin;\n\t\tstd::size_t           m_selectEnd;\n\t\tstd::size_t           m_selectInit;\n\t\tstd::size_t           m_cursorPos;\n\n\n\t\tQSize fullSize() const;\n\t\tvoid resetSelection();\n\t\tvoid resetSelection(int pos);\n\t\tvoid setSelection(int pos);\n\t\tvoid ensureVisible();\n\n     protected:\n\t\tvoid setCursorPos(int pos);\n\t\tstd::size_t cursorPos(const QPoint &position);\n        int cursorPos() const { return m_cursorPos; }\n};\n\n#endif\n"
  },
  {
    "path": "3rdpart/qhexview/qhexview.pri",
    "content": "SOURCES += $$PWD/src/QHexView.cpp\nHEADERS += $$PWD/include/QHexView.h\nINCLUDEPATH += $$PWD/include\n"
  },
  {
    "path": "3rdpart/qhexview/src/QHexView.cpp",
    "content": "#include \"../include/QHexView.h\"\n#include <QScrollBar>\n#include <QPainter>\n#include <QSize>\n#include <QPaintEvent>\n#include <QKeyEvent>\n#include <QClipboard>\n#include <QApplication>\n\n#include <QDebug>\n\n#include <stdexcept>\n\nconst int HEXCHARS_IN_LINE = 47;\nconst int GAP_ADR_HEX = 10;\nconst int GAP_HEX_ASCII = 16;\nconst int BYTES_PER_LINE = 16;\n\n\nQHexView::QHexView(QWidget *parent):\nQAbstractScrollArea(parent),\nm_pdata(NULL)\n{\n\tsetFont(QFont(\"Courier\", 10));\n\n\tm_charWidth = fontMetrics().width(QLatin1Char('9'));\n\tm_charHeight = fontMetrics().height();\n\n\tm_posAddr = 0;\n\tm_posHex = 10 * m_charWidth + GAP_ADR_HEX;\n\tm_posAscii = m_posHex + HEXCHARS_IN_LINE * m_charWidth + GAP_HEX_ASCII;\n\n\tsetMinimumWidth(m_posAscii + (BYTES_PER_LINE * m_charWidth));\n\n\tsetFocusPolicy(Qt::StrongFocus);\n}\n\n\nQHexView::~QHexView()\n{\n\tif(m_pdata)\n\t\tdelete m_pdata;\n}\n\nvoid QHexView::setData(QHexView::DataStorage *pData)\n{\n\tverticalScrollBar()->setValue(0);\n\tif(m_pdata)\n\t\tdelete m_pdata;\n\tm_pdata = pData;\n\tm_cursorPos = 0;\n\tresetSelection(0);\n}\n\n\nvoid QHexView::showFromOffset(std::size_t offset)\n{\n\tif(m_pdata && offset < m_pdata->size())\n\t{\n\t\tsetCursorPos(offset * 2);\n\n\t\tint cursorY = m_cursorPos / (2 * BYTES_PER_LINE);\n\n\t\tverticalScrollBar() -> setValue(cursorY);\n\t}\n}\n\nvoid QHexView::clear()\n{\n\tverticalScrollBar()->setValue(0);\n}\n\n\nQSize QHexView::fullSize() const\n{\n\tif(!m_pdata)\n\t\treturn QSize(0, 0);\n\n\tstd::size_t width = m_posAscii + (BYTES_PER_LINE * m_charWidth);\n\tstd::size_t height = m_pdata->size() / BYTES_PER_LINE;\n\tif(m_pdata->size() % BYTES_PER_LINE)\n\t\theight++;\n\n\theight *= m_charHeight;\n\n\treturn QSize(width, height);\n}\n\nvoid QHexView::paintEvent(QPaintEvent *event)\n{\n\tif(!m_pdata)\n\t\treturn;\n\tQPainter painter(viewport());\n\n\tQSize areaSize = viewport()->size();\n\tQSize  widgetSize = fullSize();\n\tverticalScrollBar()->setPageStep(areaSize.height() / m_charHeight);\n\tverticalScrollBar()->setRange(0, (widgetSize.height() - areaSize.height()) / m_charHeight + 1);\n\n\tint firstLineIdx = verticalScrollBar() -> value();\n\n    std::size_t lastLineIdx = firstLineIdx + areaSize.height() / m_charHeight;\n\tif(lastLineIdx > m_pdata->size() / BYTES_PER_LINE)\n\t{\n\t\tlastLineIdx = m_pdata->size() / BYTES_PER_LINE;\n\t\tif(m_pdata->size() % BYTES_PER_LINE)\n\t\t\tlastLineIdx++;\n\t}\n\n\tpainter.fillRect(event->rect(), this->palette().color(QPalette::Base));\n\n\tQColor addressAreaColor = QColor(0xd4, 0xd4, 0xd4, 0xff);\n\tpainter.fillRect(QRect(m_posAddr, event->rect().top(), m_posHex - GAP_ADR_HEX + 2 , height()), addressAreaColor);\n\n\tint linePos = m_posAscii - (GAP_HEX_ASCII / 2);\n\tpainter.setPen(Qt::gray);\n\n\tpainter.drawLine(linePos, event->rect().top(), linePos, height());\n\n\tpainter.setPen(Qt::black);\n\n\tint yPosStart = m_charHeight;\n\n\tQBrush def = painter.brush();\n    QBrush selected = QBrush(QColor(0x6d, 0x9e, 0xff, 0xff));\n    QByteArray data = m_pdata->getData(firstLineIdx * BYTES_PER_LINE, (lastLineIdx - firstLineIdx) * BYTES_PER_LINE);\n\n    for (int lineIdx = firstLineIdx, yPos = yPosStart;  lineIdx < int(lastLineIdx); lineIdx += 1, yPos += m_charHeight)\n\t{\n\t\tQString address = QString(\"%1\").arg(lineIdx * 16, 10, 16, QChar('0'));\n\t\tpainter.drawText(m_posAddr, yPos, address);\n\n\t\tfor(int xPos = m_posHex, i=0; i<BYTES_PER_LINE && ((lineIdx - firstLineIdx) * BYTES_PER_LINE + i) < data.size(); i++, xPos += 3 * m_charWidth)\n\t\t{\n\t\t\tstd::size_t pos = (lineIdx * BYTES_PER_LINE + i) * 2;\n\t\t\tif(pos >= m_selectBegin && pos < m_selectEnd)\n\t\t\t{\n\t\t\t\tpainter.setBackground(selected);\n\t\t\t\tpainter.setBackgroundMode(Qt::OpaqueMode);\n\t\t\t}\n\n\t\t\tQString val = QString::number((data.at((lineIdx - firstLineIdx) * BYTES_PER_LINE + i) & 0xF0) >> 4, 16);\n\t\t\tpainter.drawText(xPos, yPos, val);\n\n\n\t\t\tif((pos+1) >= m_selectBegin && (pos+1) < m_selectEnd)\n\t\t\t{\n\t\t\t\tpainter.setBackground(selected);\n\t\t\t\tpainter.setBackgroundMode(Qt::OpaqueMode);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tpainter.setBackground(def);\n\t\t\t\tpainter.setBackgroundMode(Qt::OpaqueMode);\n\t\t\t}\n\n\t\t\tval = QString::number((data.at((lineIdx - firstLineIdx) * BYTES_PER_LINE + i) & 0xF), 16);\n\t\t\tpainter.drawText(xPos+m_charWidth, yPos, val);\n\n\t\t\tpainter.setBackground(def);\n\t\t\tpainter.setBackgroundMode(Qt::OpaqueMode);\n\n\t\t}\n\n\t\tfor (int xPosAscii = m_posAscii, i=0; ((lineIdx - firstLineIdx) * BYTES_PER_LINE + i) < data.size() && (i < BYTES_PER_LINE); i++, xPosAscii += m_charWidth)\n\t\t{\n\t\t\tchar ch = data[(lineIdx - firstLineIdx) * BYTES_PER_LINE + i];\n\t\t\tif ((ch < 0x20) or (ch > 0x7e))\n\t\t\tch = '.';\n\n\t\t\tpainter.drawText(xPosAscii, yPos, QString(ch));\n\t\t}\n\n\t}\n\n\tif (hasFocus())\n\t{\n\t\tint x = (m_cursorPos % (2 * BYTES_PER_LINE));\n\t\tint y = m_cursorPos / (2 * BYTES_PER_LINE);\n\t\ty -= firstLineIdx;\n\t\tint cursorX = (((x / 2) * 3) + (x % 2)) * m_charWidth + m_posHex;\n\t\tint cursorY = y * m_charHeight + 4;\n\t\tpainter.fillRect(cursorX, cursorY, 2, m_charHeight, this->palette().color(QPalette::WindowText));\n\t}\n}\n\n\nvoid QHexView::keyPressEvent(QKeyEvent *event)\n{\n\tbool setVisible = false;\n\n/*****************************************************************************/\n/* Cursor movements */\n/*****************************************************************************/\n\tif(event->matches(QKeySequence::MoveToNextChar))\n\t{\n\t\tsetCursorPos(m_cursorPos + 1);\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\tif(event->matches(QKeySequence::MoveToPreviousChar))\n\t{\n\t\tsetCursorPos(m_cursorPos - 1);\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\tif(event->matches(QKeySequence::MoveToEndOfLine))\n\t{\n\t\tsetCursorPos(m_cursorPos | ((BYTES_PER_LINE * 2) - 1));\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\tif(event->matches(QKeySequence::MoveToStartOfLine))\n\t{\n\t\tsetCursorPos(m_cursorPos | (m_cursorPos % (BYTES_PER_LINE * 2)));\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\tif(event->matches(QKeySequence::MoveToPreviousLine))\n\t{\n\t\tsetCursorPos(m_cursorPos - BYTES_PER_LINE * 2);\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\tif(event->matches(QKeySequence::MoveToNextLine))\n\t{\n\t\tsetCursorPos(m_cursorPos + BYTES_PER_LINE * 2);\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\n\tif(event->matches(QKeySequence::MoveToNextPage))\n\t{\n\t\tsetCursorPos(m_cursorPos + (viewport()->height() / m_charHeight - 1) * 2 * BYTES_PER_LINE);\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\tif(event->matches(QKeySequence::MoveToPreviousPage))\n\t{\n\t\tsetCursorPos(m_cursorPos - (viewport()->height() / m_charHeight - 1) * 2 * BYTES_PER_LINE);\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\tif(event->matches(QKeySequence::MoveToEndOfDocument))\n\t{\n\t\tif(m_pdata)\n\t\t\tsetCursorPos(m_pdata->size() * 2);\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\tif(event->matches(QKeySequence::MoveToStartOfDocument))\n\t{\n\t\tsetCursorPos(0);\n\t\tresetSelection(m_cursorPos);\n\t\tsetVisible = true;\n\t}\n\n/*****************************************************************************/\n/* Select commands */\n/*****************************************************************************/\n\tif (event->matches(QKeySequence::SelectAll))\n\t{\n\t\tresetSelection(0);\n\t\tif(m_pdata)\n\t\t\tsetSelection(2 * m_pdata->size() + 1);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectNextChar))\n\t{\n\t\tint pos = m_cursorPos + 1;\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectPreviousChar))\n\t{\n\t\tint pos = m_cursorPos - 1;\n\t\tsetSelection(pos);\n\t\tsetCursorPos(pos);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectEndOfLine))\n\t{\n\t\tint pos = m_cursorPos - (m_cursorPos % (2 * BYTES_PER_LINE)) + (2 * BYTES_PER_LINE);\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectStartOfLine))\n\t{\n\t\tint pos = m_cursorPos - (m_cursorPos % (2 * BYTES_PER_LINE));\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectPreviousLine))\n\t{\n\t\tint pos = m_cursorPos - (2 * BYTES_PER_LINE);\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectNextLine))\n\t{\n\t\tint pos = m_cursorPos + (2 * BYTES_PER_LINE);\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\n\tif (event->matches(QKeySequence::SelectNextPage))\n\t{\n\t\tint pos = m_cursorPos + (((viewport()->height() / m_charHeight) - 1) * 2 * BYTES_PER_LINE);\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectPreviousPage))\n\t{\n\t\tint pos = m_cursorPos - (((viewport()->height() / m_charHeight) - 1) * 2 * BYTES_PER_LINE);\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectEndOfDocument))\n\t{\n\t\tint pos = 0;\n\t\tif(m_pdata)\n\t\t\tpos = m_pdata->size() * 2;\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\tif (event->matches(QKeySequence::SelectStartOfDocument))\n\t{\n\t\tint pos = 0;\n\t\tsetCursorPos(pos);\n\t\tsetSelection(pos);\n\t\tsetVisible = true;\n\t}\n\n\tif (event->matches(QKeySequence::Copy))\n\t{\n\t\tif(m_pdata)\n\t\t{\n\t\t\tQString res;\n\t\t\tint idx = 0;\n\t\t\tint copyOffset = 0;\n\n\t\t\tQByteArray data = m_pdata->getData(m_selectBegin / 2, (m_selectEnd - m_selectBegin) / 2 + 1);\n\t\t\tif(m_selectBegin % 2)\n\t\t\t{\n\t\t\t\tres += QString::number((data.at((idx+1) / 2) & 0xF), 16);\n\t\t\t\tres += \" \";\n\t\t\t\tidx++;\n\t\t\t\tcopyOffset = 1;\n\t\t\t}\n\n\t\t\tint selectedSize = m_selectEnd - m_selectBegin;\n\t        for (;idx < selectedSize; idx+= 2)\n\t        {\n\t\t\t\tQString val = QString::number((data.at((copyOffset + idx) / 2) & 0xF0) >> 4, 16);\n\t\t\t\tif(idx + 1 < selectedSize)\n\t\t\t\t{\n\t\t\t\t\tval += QString::number((data.at((copyOffset + idx) / 2) & 0xF), 16);\n\t\t\t\t\tval += \" \";\n\t\t\t\t}\n\t\t\t\tres += val;\n\n\t\t\t\tif((idx/2) % BYTES_PER_LINE == (BYTES_PER_LINE - 1))\n\t                res += \"\\n\";\n\t        }\n\t        QClipboard *clipboard = QApplication::clipboard();\n\t        clipboard -> setText(res);\n\t    }\n    }\n\n \tif(setVisible)\n\t    ensureVisible();\n\tviewport() -> update();\n}\n\nvoid QHexView::mouseMoveEvent(QMouseEvent * event)\n{\n\tint actPos = cursorPos(event->pos());\n\tsetCursorPos(actPos);\n\tsetSelection(actPos);\n\n\tviewport() -> update();\n}\n\nvoid QHexView::mousePressEvent(QMouseEvent * event)\n{\n\tint cPos = cursorPos(event->pos());\n\n\tif((QApplication::keyboardModifiers() & Qt::ShiftModifier) && event -> button() == Qt::LeftButton)\n\t\tsetSelection(cPos);\n\telse\n\t\tresetSelection(cPos);\n\n\tsetCursorPos(cPos);\n\n\tviewport() -> update();\n}\n\n\nstd::size_t QHexView::cursorPos(const QPoint &position)\n{\n\tint pos = -1;\n\n    if ((std::size_t(position.x()) >= m_posHex) &&\n        (std::size_t(position.x()) < (m_posHex + HEXCHARS_IN_LINE * m_charWidth)))\n\t{\n        int x = (position.x() - m_posHex) / m_charWidth;\n\t\tif ((x % 3) == 0)\n\t\t\tx = (x / 3) * 2;\n\t\telse\n\t\t\tx = ((x / 3) * 2) + 1;\n\n\t\tint firstLineIdx = verticalScrollBar() -> value();\n\t\tint y = (position.y() / m_charHeight) * 2 * BYTES_PER_LINE;\n\t\tpos = x + y + firstLineIdx * BYTES_PER_LINE * 2;\n\t}\n\treturn pos;\n}\n\n\nvoid QHexView::resetSelection()\n{\n    m_selectBegin = m_selectInit;\n    m_selectEnd = m_selectInit;\n}\n\nvoid QHexView::resetSelection(int pos)\n{\n    if (pos < 0)\n        pos = 0;\n\n    m_selectInit = pos;\n    m_selectBegin = pos;\n    m_selectEnd = pos;\n}\n\nvoid QHexView::setSelection(int pos)\n{\n    if (pos < 0)\n        pos = 0;\n\n    if (std::size_t(pos) >= m_selectInit)\n    {\n        m_selectEnd = pos;\n        m_selectBegin = m_selectInit;\n    }\n    else\n    {\n        m_selectBegin = pos;\n        m_selectEnd = m_selectInit;\n    }\n}\n\n\nvoid QHexView::setCursorPos(int position)\n{\n\tif(position < 0)\n\t\tposition = 0;\n\n\tint maxPos = 0;\n\tif(m_pdata)\n\t{\n\t\tmaxPos = m_pdata->size() * 2;\n\t\tif(m_pdata->size() % BYTES_PER_LINE)\n\t\t\tmaxPos++;\n\t}\n\n\tif(position > maxPos)\n\t\tposition = maxPos;\n\n\tm_cursorPos = position;\n}\n\nvoid QHexView::ensureVisible()\n{\n\tQSize areaSize = viewport()->size();\n\n\tint firstLineIdx = verticalScrollBar() -> value();\n\tint lastLineIdx = firstLineIdx + areaSize.height() / m_charHeight;\n\n\tint cursorY = m_cursorPos / (2 * BYTES_PER_LINE);\n\n\tif(cursorY < firstLineIdx)\n\t\tverticalScrollBar() -> setValue(cursorY);\n\telse if(cursorY >= lastLineIdx)\n\t\tverticalScrollBar() -> setValue(cursorY - areaSize.height() / m_charHeight + 1);\n}\n\n\n\nQHexView::DataStorageArray::DataStorageArray(const QByteArray &arr)\n{\n\tm_data = arr;\n}\n\nQByteArray QHexView::DataStorageArray::getData(std::size_t position, std::size_t length)\n{\n\treturn m_data.mid(position, length);\n}\n\n\nstd::size_t QHexView::DataStorageArray::size()\n{\n\treturn m_data.count();\n}\n\n\nQHexView::DataStorageFile::DataStorageFile(const QString &fileName): m_file(fileName)\n{\n\tm_file.open(QIODevice::ReadOnly);\n\tif(!m_file.isOpen())\n\t\tthrow std::runtime_error(std::string(\"Failed to open file `\") + fileName.toStdString() + \"`\");\n}\n\nQByteArray QHexView::DataStorageFile::getData(std::size_t position, std::size_t length)\n{\n\tm_file.seek(position);\n\treturn m_file.read(length);\n}\n\n\nstd::size_t QHexView::DataStorageFile::size()\n{\n\treturn m_file.size();\n}\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/.gitignore",
    "content": "build-debug\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/.travis.yml",
    "content": "language: cpp\n\nenv:\n - QT_SELECT=qt4\n - QT_SELECT=qt5\n\nbefore_install:\n - sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa\n - sudo apt-get update -qq\n - sudo apt-get install -qq libqtcore4 qt4-qmake libqt5core5a qt5-qmake qt5-default qtchooser\n\nscript:\n - qmake && make && ./qt-mustache\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/README.md",
    "content": "[![Build Status](https://travis-ci.org/robertknight/qt-mustache.svg?branch=master)](https://travis-ci.org/robertknight/qt-mustache)\n\n# Qt Mustache\n\nqt-mustache is a simple library for rendering [Mustache templates](http://mustache.github.com/).\n\n### Example Usage\n\n```cpp\n#include \"mustache.h\"\n\nQVariantHash contact;\ncontact[\"name\"] = \"John Smith\";\ncontact[\"email\"] = \"john.smith@gmail.com\";\n\nQString contactTemplate = \"<b>{{name}}</b> <a href=\\\"mailto:{{email}}\\\">{{email}}</a>\";\n\nMustache::Renderer renderer;\nMustache::QtVariantContext context(contact);\n\nQTextStream output(stdout);\noutput << renderer.render(contactTemplate, &context);\n```\n\nOutputs: `<b>John Smith</b> <a href=\"mailto:john.smith@gmail.com\">john.smith@gmail.com</a>`\n\nFor further examples, see the tests in `test_mustache.cpp`\n\n### Building\n * To build the tests, run `qmake` followed by `make`\n * To use qt-mustache in your project, just add the `mustache.h` and `mustache.cpp` files to your project.\n  \n### License\n qt-mustache is licensed under the BSD license. \n\n### Dependencies\n qt-mustache depends on the QtCore library.  It is compatible with Qt 4 and Qt 5.\n \n## Usage\n\n### Syntax\n\nqt-mustache uses the standard Mustache syntax.  See the [Mustache manual](http://mustache.github.com/mustache.5.html) for details.\n\n### Data Sources\n\nqt-mustache expands Mustache tags using values from a `Mustache::Context`.  `Mustache::QtVariantContext` is a simple\ncontext implementation which wraps a `QVariantHash` or `QVariantMap`.  If you want to render a template using a custom data source,\nyou can either create a `QVariantHash` which mirrors the data source or you can re-implement `Mustache::Context`.\n\n### Partials\n\nWhen a `{{>partial}}` Mustache tag is encountered, qt-mustache will attempt to load the partial using a `Mustache::PartialResolver`\nprovided by the context.  `Mustache::PartialMap` is a simple resolver which takes a `QHash<QString,QString>` map of partial names\nto values and looks up partials in that map.  `Mustache::PartialFileLoader` is another simple resolver which\nfetches partials from `<partial name>.mustache` files in a specified directory.\n\nYou can re-implement the `Mustache::PartialResolver` interface if you want to load partials from a custom source\n(eg. a database).\n\n### Error Handling\n\nIf an error occurs when rendering a template, `Mustache::Renderer::errorPosition()` is set to non-negative value and\ntemplate rendering stops.  If the error occurs whilst rendering a partial template, `errorPartial()` contains the name\nof the partial.\n\n### Lambdas\n\nThe [Mustache manual](http://mustache.github.com/mustache.5.html) provides a mechanism to customize rendering of\ntemplate sections by setting the value for a tag to a callable object (eg. a lambda in Ruby or Javascript),\nwhich takes the unrendered block of text for a template section and renders it itself.  qt-mustache supports\nthis via the `Context::canEval()` and `Context::eval()` methods.\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/qt-mustache.pri",
    "content": "INCLUDEPATH += $$PWD/src\n\nHEADERS += $$PWD/src/mustache.h\nSOURCES += $$PWD/src/mustache.cpp\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/qt-mustache.pro",
    "content": "######################################################################\n# Automatically generated by qmake (2.01a) Mon Aug 27 11:20:05 2012\n######################################################################\n\nTEMPLATE = app\nDEPENDPATH += . src tests\nINCLUDEPATH += . src tests\nQT += testlib\nQT -= gui\nCONFIG -= app_bundle\n\n!win32 {\n  QMAKE_CXXFLAGS += -Werror -Wall -Wextra -Wnon-virtual-dtor\n}\n\n# Input\nHEADERS += src/mustache.h tests/test_mustache.h\nSOURCES += src/mustache.cpp tests/test_mustache.cpp\n\n# Copies the given files to the destination directory\ndefineTest(copyToDestdir) {\n    files = $$1\n\n    for(FILE, files) {\n        DDIR = $$OUT_PWD\n\n        # Replace slashes in paths with backslashes for Windows\n        win32:FILE ~= s,/,\\\\,g\n        win32:DDIR ~= s,/,\\\\,g\n\n        QMAKE_POST_LINK += $$QMAKE_COPY $$quote($$FILE) $$quote($$DDIR) $$escape_expand(\\\\n\\\\t)\n    }\n\n    export(QMAKE_POST_LINK)\n}\n\ncopyToDestdir($$PWD/tests/*.mustache)\ncopyToDestdir($$PWD/tests/specs/*.json)\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/src/mustache.cpp",
    "content": "/*\n  Copyright 2012, Robert Knight\n\n  Redistribution and use in source and binary forms, with or without modification,\n  are permitted provided that the following conditions are met:\n\n    Redistributions of source code must retain the above copyright notice,\n    this list of conditions and the following disclaimer.\n\n    Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n    and/or other materials provided with the distribution.\n*/\n\n#include \"mustache.h\"\n\n#include <QtCore/QDebug>\n#include <QtCore/QFile>\n#include <QtCore/QStringList>\n#include <QtCore/QTextStream>\n\nusing namespace Mustache;\n\nQString Mustache::renderTemplate(const QString& templateString, const QVariantHash& args)\n{\n\tMustache::QtVariantContext context(args);\n\tMustache::Renderer renderer;\n\treturn renderer.render(templateString, &context);\n}\n\nQString escapeHtml(const QString& input)\n{\n\tQString escaped(input);\n\tfor (int i=0; i < escaped.count();) {\n\t\tconst char* replacement = 0;\n\t\tushort ch = escaped.at(i).unicode();\n\t\tif (ch == '&') {\n\t\t\treplacement = \"&amp;\";\n\t\t} else if (ch == '<') {\n\t\t\treplacement = \"&lt;\";\n\t\t} else if (ch == '>') {\n\t\t\treplacement = \"&gt;\";\n\t\t} else if (ch == '\"') {\n\t\t\treplacement = \"&quot;\";\n\t\t}\n\t\tif (replacement) {\n\t\t\tescaped.replace(i, 1, QLatin1String(replacement));\n\t\t\ti += (int)strlen(replacement);\n\t\t} else {\n\t\t\t++i;\n\t\t}\n\t}\n\treturn escaped;\n}\n\nQString unescapeHtml(const QString& escaped)\n{\n\tQString unescaped(escaped);\n\tunescaped.replace(QLatin1String(\"&lt;\"), QLatin1String(\"<\"));\n\tunescaped.replace(QLatin1String(\"&gt;\"), QLatin1String(\">\"));\n\tunescaped.replace(QLatin1String(\"&quot;\"), QLatin1String(\"\\\"\"));\n\tunescaped.replace(QLatin1String(\"&amp;\"), QLatin1String(\"&\"));\n\treturn unescaped;\n}\n\nContext::Context(PartialResolver* resolver)\n\t: m_partialResolver(resolver)\n{}\n\nPartialResolver* Context::partialResolver() const\n{\n\treturn m_partialResolver;\n}\n\nQString Context::partialValue(const QString& key) const\n{\n\tif (!m_partialResolver) {\n\t\treturn QString();\n\t}\n\treturn m_partialResolver->getPartial(key);\n}\n\nbool Context::canEval(const QString&) const\n{\n\treturn false;\n}\n\nQString Context::eval(const QString& key, const QString& _template, Renderer* renderer)\n{\n\tQ_UNUSED(key);\n\tQ_UNUSED(_template);\n\tQ_UNUSED(renderer);\n\n\treturn QString();\n}\n\nQtVariantContext::QtVariantContext(const QVariant& root, PartialResolver* resolver)\n\t: Context(resolver)\n{\n\tm_contextStack << root;\n}\n\nQVariant variantMapValue(const QVariant& value, const QString& key)\n{\n\tif (value.userType() == QVariant::Map) {\n\t\treturn value.toMap().value(key);\n\t} else {\n\t\treturn value.toHash().value(key);\n\t}\n}\n\nQVariant variantMapValueForKeyPath(const QVariant& value, const QStringList keyPath)\n{\n\tif (keyPath.count() > 1) {\n\t\tQVariant firstValue = variantMapValue(value, keyPath.first());\n\t\treturn firstValue.isNull() ? QVariant() : variantMapValueForKeyPath(firstValue, keyPath.mid(1));\n\t} else if (!keyPath.isEmpty()) {\n\t\treturn variantMapValue(value, keyPath.first());\n\t}\n\treturn QVariant();\n}\n\nQVariant QtVariantContext::value(const QString& key) const\n{\n\tif (key == \".\" && !m_contextStack.isEmpty()) {\n\t\treturn m_contextStack.last();\n\t}\n\tQStringList keyPath = key.split(\".\");\n\tfor (int i = m_contextStack.count()-1; i >= 0; i--) {\n\t\tQVariant value = variantMapValueForKeyPath(m_contextStack.at(i), keyPath);\n\t\tif (!value.isNull()) {\n\t\t\treturn value;\n\t\t}\n\t}\n\treturn QVariant();\n}\n\nbool QtVariantContext::isFalse(const QString& key) const\n{\n\tQVariant value = this->value(key);\n\tswitch (value.userType()) {\n\tcase QMetaType::QChar:\n\tcase QMetaType::Double:\n\tcase QMetaType::Float:\n\tcase QMetaType::Int:\n\tcase QMetaType::UInt:\n\tcase QMetaType::LongLong:\n\tcase QMetaType::ULongLong:\n\tcase QVariant::Bool:\n\t\treturn !value.toBool();\n\tcase QVariant::List:\n\tcase QVariant::StringList:\n\t\treturn value.toList().isEmpty();\n\tcase QVariant::Hash:\n\t\treturn value.toHash().isEmpty();\n\tcase QVariant::Map:\n\t\treturn value.toMap().isEmpty();\n\tdefault:\n\t\treturn value.toString().isEmpty();\n\t}\n}\n\nQString QtVariantContext::stringValue(const QString& key) const\n{\n\tif (isFalse(key) && value(key).userType() != QVariant::Bool) {\n\t\treturn QString();\n\t}\n\treturn value(key).toString();\n}\n\nvoid QtVariantContext::push(const QString& key, int index)\n{\n\tQVariant mapItem = value(key);\n\tif (index == -1) {\n\t\tm_contextStack << mapItem;\n\t} else {\n\t\tQVariantList list = mapItem.toList();\n\t\tm_contextStack << list.value(index, QVariant());\n\t}\n}\n\nvoid QtVariantContext::pop()\n{\n\tm_contextStack.pop();\n}\n\nint QtVariantContext::listCount(const QString& key) const\n{\n\tconst QVariant& item = value(key);\n\tif (item.canConvert<QVariantList>()) {\n\t\treturn item.toList().count();\n\t}\n\treturn 0;\n}\n\nbool QtVariantContext::canEval(const QString& key) const\n{\n\treturn value(key).canConvert<fn_t>();\n}\n\nQString QtVariantContext::eval(const QString& key, const QString& _template, Renderer* renderer)\n{\n\tQVariant fn = value(key);\n\tif (fn.isNull()) {\n\t\treturn QString();\n\t}\n\treturn fn.value<fn_t>()(_template, renderer, this);\n}\n\nPartialMap::PartialMap(const QHash<QString, QString>& partials)\n\t: m_partials(partials)\n{}\n\nQString PartialMap::getPartial(const QString& name)\n{\n\treturn m_partials.value(name);\n}\n\nPartialFileLoader::PartialFileLoader(const QString& basePath)\n\t: m_basePath(basePath)\n{}\n\nQString PartialFileLoader::getPartial(const QString& name)\n{\n\tif (!m_cache.contains(name)) {\n\t\tQString path = m_basePath + '/' + name + \".mustache\";\n\t\tQFile file(path);\n\t\tif (file.open(QIODevice::ReadOnly)) {\n\t\t\tQTextStream stream(&file);\n\t\t\tm_cache.insert(name, stream.readAll());\n\t\t}\n\t}\n\treturn m_cache.value(name);\n}\n\nRenderer::Renderer()\n\t: m_errorPos(-1)\n\t, m_defaultTagStartMarker(\"{{\")\n\t, m_defaultTagEndMarker(\"}}\")\n{\n}\n\nQString Renderer::error() const\n{\n\treturn m_error;\n}\n\nint Renderer::errorPos() const\n{\n\treturn m_errorPos;\n}\n\nQString Renderer::errorPartial() const\n{\n\treturn m_errorPartial;\n}\n\nQString Renderer::render(const QString& _template, Context* context)\n{\n\tm_error.clear();\n\tm_errorPos = -1;\n\tm_errorPartial.clear();\n\n\tm_tagStartMarker = m_defaultTagStartMarker;\n\tm_tagEndMarker = m_defaultTagEndMarker;\n\n\treturn render(_template, 0, _template.length(), context);\n}\n\nQString Renderer::render(const QString& _template, int startPos, int endPos, Context* context)\n{\n\tQString output;\n\tint lastTagEnd = startPos;\n\n\twhile (m_errorPos == -1) {\n\t\tTag tag = findTag(_template, lastTagEnd, endPos);\n\t\tif (tag.type == Tag::Null) {\n\t\t\toutput += _template.midRef(lastTagEnd, endPos - lastTagEnd);\n\t\t\tbreak;\n\t\t}\n\t\toutput += _template.midRef(lastTagEnd, tag.start - lastTagEnd);\n\t\tswitch (tag.type) {\n\t\tcase Tag::Value:\n\t\t{\n\t\t\tQString value = context->stringValue(tag.key);\n\t\t\tif (tag.escapeMode == Tag::Escape) {\n\t\t\t\tvalue = escapeHtml(value);\n\t\t\t} else if (tag.escapeMode == Tag::Unescape) {\n\t\t\t\tvalue = unescapeHtml(value);\n\t\t\t}\n\t\t\toutput += value;\n\t\t\tlastTagEnd = tag.end;\n\t\t}\n\t\tbreak;\n\t\tcase Tag::SectionStart:\n\t\t{\n\t\t\tTag endTag = findEndTag(_template, tag, endPos);\n\t\t\tif (endTag.type == Tag::Null) {\n\t\t\t\tif (m_errorPos == -1) {\n\t\t\t\t\tsetError(\"No matching end tag found for section\", tag.start);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tint listCount = context->listCount(tag.key);\n\t\t\t\tif (listCount > 0) {\n\t\t\t\t\tfor (int i=0; i < listCount; i++) {\n\t\t\t\t\t\tcontext->push(tag.key, i);\n\t\t\t\t\t\toutput += render(_template, tag.end, endTag.start, context);\n\t\t\t\t\t\tcontext->pop();\n\t\t\t\t\t}\n\t\t\t\t} else if (context->canEval(tag.key)) {\n\t\t\t\t\toutput += context->eval(tag.key, _template.mid(tag.end, endTag.start - tag.end), this);\n\t\t\t\t} else if (!context->isFalse(tag.key)) {\n\t\t\t\t\tcontext->push(tag.key);\n\t\t\t\t\toutput += render(_template, tag.end, endTag.start, context);\n\t\t\t\t\tcontext->pop();\n\t\t\t\t}\n\t\t\t\tlastTagEnd = endTag.end;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\t\tcase Tag::InvertedSectionStart:\n\t\t{\n\t\t\tTag endTag = findEndTag(_template, tag, endPos);\n\t\t\tif (endTag.type == Tag::Null) {\n\t\t\t\tif (m_errorPos == -1) {\n\t\t\t\t\tsetError(\"No matching end tag found for inverted section\", tag.start);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (context->isFalse(tag.key)) {\n\t\t\t\t\toutput += render(_template, tag.end, endTag.start, context);\n\t\t\t\t}\n\t\t\t\tlastTagEnd = endTag.end;\n\t\t\t}\n\t\t}\n\t\tbreak;\n\t\tcase Tag::SectionEnd:\n\t\t\tsetError(\"Unexpected end tag\", tag.start);\n\t\t\tlastTagEnd = tag.end;\n\t\t\tbreak;\n\t\tcase Tag::Partial:\n\t\t{\n\t\t\tQString tagStartMarker = m_tagStartMarker;\n\t\t\tQString tagEndMarker = m_tagEndMarker;\n\n\t\t\tm_tagStartMarker = m_defaultTagStartMarker;\n\t\t\tm_tagEndMarker = m_defaultTagEndMarker;\n\n\t\t\tm_partialStack.push(tag.key);\n\n\t\t\tQString partialContent = context->partialValue(tag.key);\n\n\t\t\t// If there is a need to add a special indentation to the partial\n\t\t\tif (tag.indentation > 0) {\n\t\t\t\toutput += QString(\" \").repeated(tag.indentation);\n\t\t\t\t// Indenting the output to keep the parent indentation.\n\t\t\t\tint posOfLF = partialContent.indexOf(\"\\n\", 0);\n\t\t\t\twhile (posOfLF > 0 && posOfLF < (partialContent.length() - 1)) { // .length() - 1 because we dont want indentation AFTER the last character if it's a LF\n\t\t\t\t\tpartialContent = partialContent.insert(posOfLF + 1, QString(\" \").repeated(tag.indentation));\n\t\t\t\t\tposOfLF = partialContent.indexOf(\"\\n\", posOfLF + 1);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tQString partialRendered = render(partialContent, 0, partialContent.length(), context);\n\n\t\t\toutput += partialRendered;\n\n\t\t\tlastTagEnd = tag.end;\n\n\t\t\tm_partialStack.pop();\n\n\t\t\tm_tagStartMarker = tagStartMarker;\n\t\t\tm_tagEndMarker = tagEndMarker;\n\t\t}\n\t\tbreak;\n\t\tcase Tag::SetDelimiter:\n\t\t\tlastTagEnd = tag.end;\n\t\t\tbreak;\n\t\tcase Tag::Comment:\n\t\t\tlastTagEnd = tag.end;\n\t\t\tbreak;\n\t\tcase Tag::Null:\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn output;\n}\n\nvoid Renderer::setError(const QString& error, int pos)\n{\n\tQ_ASSERT(!error.isEmpty());\n\tQ_ASSERT(pos >= 0);\n\n\tm_error = error;\n\tm_errorPos = pos;\n\n\tif (!m_partialStack.isEmpty())\n\t{\n\t\tm_errorPartial = m_partialStack.top();\n\t}\n}\n\nTag Renderer::findTag(const QString& content, int pos, int endPos)\n{\n\tint tagStartPos = content.indexOf(m_tagStartMarker, pos);\n\tif (tagStartPos == -1 || tagStartPos >= endPos) {\n\t\treturn Tag();\n\t}\n\n\tint tagEndPos = content.indexOf(m_tagEndMarker, tagStartPos + m_tagStartMarker.length());\n\tif (tagEndPos == -1) {\n\t\treturn Tag();\n\t}\n\ttagEndPos += m_tagEndMarker.length();\n\n\tTag tag;\n\ttag.type = Tag::Value;\n\ttag.start = tagStartPos;\n\ttag.end = tagEndPos;\n\n\tpos = tagStartPos + m_tagStartMarker.length();\n\tendPos = tagEndPos - m_tagEndMarker.length();\n\n\tQChar typeChar = content.at(pos);\n\n\tif (typeChar == '#') {\n\t\ttag.type = Tag::SectionStart;\n\t\ttag.key = readTagName(content, pos+1, endPos);\n\t} else if (typeChar == '^') {\n\t\ttag.type = Tag::InvertedSectionStart;\n\t\ttag.key = readTagName(content, pos+1, endPos);\n\t} else if (typeChar == '/') {\n\t\ttag.type = Tag::SectionEnd;\n\t\ttag.key = readTagName(content, pos+1, endPos);\n\t} else if (typeChar == '!') {\n\t\ttag.type = Tag::Comment;\n\t} else if (typeChar == '>') {\n\t\ttag.type = Tag::Partial;\n\t\ttag.key = readTagName(content, pos+1, endPos);\n\t} else if (typeChar == '=') {\n\t\ttag.type = Tag::SetDelimiter;\n\t\treadSetDelimiter(content, pos+1, tagEndPos - m_tagEndMarker.length());\n\t} else {\n\t\tif (typeChar == '&') {\n\t\t\ttag.escapeMode = Tag::Unescape;\n\t\t\t++pos;\n\t\t} else if (typeChar == '{') {\n\t\t\ttag.escapeMode = Tag::Raw;\n\t\t\t++pos;\n\t\t\tint endTache = content.indexOf('}', pos);\n\t\t\tif (endTache == tag.end - m_tagEndMarker.length()) {\n\t\t\t\t++tag.end;\n\t\t\t} else {\n\t\t\t\tendPos = endTache;\n\t\t\t}\n\t\t}\n\t\ttag.type = Tag::Value;\n\t\ttag.key = readTagName(content, pos, endPos);\n\t}\n\n\tif (tag.type != Tag::Value) {\n\t\texpandTag(tag, content);\n\t}\n\n\treturn tag;\n}\n\nQString Renderer::readTagName(const QString& content, int pos, int endPos)\n{\n\tQString name;\n\tname.reserve(endPos - pos);\n\twhile (content.at(pos).isSpace()) {\n\t\t++pos;\n\t}\n\twhile (!content.at(pos).isSpace() && pos < endPos) {\n\t\tname += content.at(pos);\n\t\t++pos;\n\t}\n\treturn name;\n}\n\nvoid Renderer::readSetDelimiter(const QString& content, int pos, int endPos)\n{\n\tQString startMarker;\n\tQString endMarker;\n\n\twhile (content.at(pos).isSpace() && pos < endPos) {\n\t\t++pos;\n\t}\n\n\twhile (!content.at(pos).isSpace() && pos < endPos) {\n\t\tif (content.at(pos) == '=') {\n\t\t\tsetError(\"Custom delimiters may not contain '='.\", pos);\n\t\t\treturn;\n\t\t}\n\t\tstartMarker += content.at(pos);\n\t\t++pos;\n\t}\n\n\twhile (content.at(pos).isSpace() && pos < endPos) {\n\t\t++pos;\n\t}\n\n\twhile (!content.at(pos).isSpace() && pos < endPos - 1) {\n\t\tif (content.at(pos) == '=') {\n\t\t\tsetError(\"Custom delimiters may not contain '='.\", pos);\n\t\t\treturn;\n\t\t}\n\t\tendMarker += content.at(pos);\n\t\t++pos;\n\t}\n\n\tm_tagStartMarker = startMarker;\n\tm_tagEndMarker = endMarker;\n}\n\nTag Renderer::findEndTag(const QString& content, const Tag& startTag, int endPos)\n{\n\tint tagDepth = 1;\n\tint pos = startTag.end;\n\n\twhile (true) {\n\t\tTag nextTag = findTag(content, pos, endPos);\n\t\tif (nextTag.type == Tag::Null) {\n\t\t\treturn nextTag;\n\t\t} else if (nextTag.type == Tag::SectionStart || nextTag.type == Tag::InvertedSectionStart) {\n\t\t\t++tagDepth;\n\t\t} else if (nextTag.type == Tag::SectionEnd) {\n\t\t\t--tagDepth;\n\t\t\tif (tagDepth == 0) {\n\t\t\t\tif (nextTag.key != startTag.key) {\n\t\t\t\t\tsetError(\"Tag start/end key mismatch\", nextTag.start);\n\t\t\t\t\treturn Tag();\n\t\t\t\t}\n\t\t\t\treturn nextTag;\n\t\t\t}\n\t\t}\n\t\tpos = nextTag.end;\n\t}\n\n\treturn Tag();\n}\n\nvoid Renderer::setTagMarkers(const QString& startMarker, const QString& endMarker)\n{\n\tm_defaultTagStartMarker = startMarker;\n\tm_defaultTagEndMarker = endMarker;\n}\n\nvoid Renderer::expandTag(Tag& tag, const QString& content)\n{\n\tint start = tag.start;\n\tint end = tag.end;\n\tint indentation = 0;\n\n\t// Move start to beginning of line.\n\twhile (start > 0 && content.at(start - 1) != QLatin1Char('\\n')) {\n\t\t--start;\n\t\tif (!content.at(start).isSpace()) {\n\t\t\treturn; // Not standalone.\n\t\t} else if (content.at(start).category() == QChar::Separator_Space) {\n\t\t\t// If its an actual \"white space\" and not a new line, it counts toward indentation.\n\t\t\t++indentation;\n\t\t}\n\t}\n\n\t// Move end to one past end of line.\n\twhile (end <= content.size() && content.at(end - 1) != QLatin1Char('\\n')) {\n\t\tif (end < content.size() && !content.at(end).isSpace()) {\n\t\t\treturn; // Not standalone.\n\t\t}\n\t\t++end;\n\t}\n\n\ttag.start = start;\n\ttag.end = end;\n\ttag.indentation = indentation;\n}\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/src/mustache.h",
    "content": "/*\n  Copyright 2012, Robert Knight\n\n  Redistribution and use in source and binary forms, with or without modification,\n  are permitted provided that the following conditions are met:\n\n    Redistributions of source code must retain the above copyright notice,\n    this list of conditions and the following disclaimer.\n\n    Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n    and/or other materials provided with the distribution.\n*/\n\n#pragma once\n\n#include <QtCore/QStack>\n#include <QtCore/QString>\n#include <QtCore/QVariant>\n\n#if __cplusplus >= 201103L\n#include <functional> /* for std::function */\n#endif\n\nnamespace Mustache\n{\n\nclass PartialResolver;\nclass Renderer;\n\n/** Context is an interface that Mustache::Renderer::render() uses to\n  * fetch substitutions for template tags.\n  */\nclass Context\n{\npublic:\n\t/** Create a context.  @p resolver is used to fetch the expansions for any {{>partial}} tags\n\t  * which appear in a template.\n\t  */\n\texplicit Context(PartialResolver* resolver = 0);\n\tvirtual ~Context() {}\n\n\t/** Returns a string representation of the value for @p key in the current context.\n\t  * This is used to replace a Mustache value tag.\n\t  */\n\tvirtual QString stringValue(const QString& key) const = 0;\n\n\t/** Returns true if the value for @p key is 'false' or an empty list.\n\t  * 'False' values typically include empty strings, the boolean value false etc.\n\t  *\n\t  * When processing a section Mustache tag, the section is not rendered if the key\n\t  * is false, or for an inverted section tag, the section is only rendered if the key\n\t  * is false.\n\t  */\n\tvirtual bool isFalse(const QString& key) const = 0;\n\n\t/** Returns the number of items in the list value for @p key or 0 if\n\t  * the value for @p key is not a list.\n\t  */\n\tvirtual int listCount(const QString& key) const = 0;\n\n\t/** Set the current context to the value for @p key.\n\t  * If index is >= 0, set the current context to the @p index'th value\n\t  * in the list value for @p key.\n\t  */\n\tvirtual void push(const QString& key, int index = -1) = 0;\n\n\t/** Exit the current context. */\n\tvirtual void pop() = 0;\n\n\t/** Returns the partial template for a given @p key. */\n\tQString partialValue(const QString& key) const;\n\n\t/** Returns the partial resolver passed to the constructor. */\n\tPartialResolver* partialResolver() const;\n\n\t/** Returns true if eval() should be used to render section tags using @p key.\n\t * If canEval() returns true for a key, the renderer will pass the literal, unrendered\n\t * block of text for the section to eval() and replace the section with the result.\n\t *\n\t * canEval() and eval() are equivalents for callable objects (eg. lambdas) in other\n\t * Mustache implementations.\n\t *\n\t * The default implementation always returns false.\n\t */\n\tvirtual bool canEval(const QString& key) const;\n\n\t/** Callback used to render a template section with the given @p key.\n\t * @p renderer will substitute the original section tag with the result of eval().\n\t *\n\t * The default implementation returns an empty string.\n\t */\n\tvirtual QString eval(const QString& key, const QString& _template, Renderer* renderer);\n\nprivate:\n\tPartialResolver* m_partialResolver;\n};\n\n/** A context implementation which wraps a QVariantHash or QVariantMap. */\nclass QtVariantContext : public Context\n{\npublic:\n\t/** Construct a QtVariantContext which wraps a dictionary in a QVariantHash\n\t * or a QVariantMap.\n\t */\n#if __cplusplus >= 201103L\n\ttypedef std::function<QString(const QString&, Mustache::Renderer*, Mustache::Context*)> fn_t;\n#else\n\ttypedef QString (*fn_t)(const QString&, Mustache::Renderer*, Mustache::Context*);\n#endif\n\texplicit QtVariantContext(const QVariant& root, PartialResolver* resolver = 0);\n\n\tvirtual QString stringValue(const QString& key) const;\n\tvirtual bool isFalse(const QString& key) const;\n\tvirtual int listCount(const QString& key) const;\n\tvirtual void push(const QString& key, int index = -1);\n\tvirtual void pop();\n\tvirtual bool canEval(const QString& key) const;\n\tvirtual QString eval(const QString& key, const QString& _template, Mustache::Renderer* renderer);\n\nprivate:\n\tQVariant value(const QString& key) const;\n\n\tQStack<QVariant> m_contextStack;\n};\n\n/** Interface for fetching template partials. */\nclass PartialResolver\n{\npublic:\n\tvirtual ~PartialResolver() {}\n\n\t/** Returns the partial template with a given @p name. */\n\tvirtual QString getPartial(const QString& name) = 0;\n};\n\n/** A simple partial fetcher which returns templates from a map of (partial name -> template)\n  */\nclass PartialMap : public PartialResolver\n{\npublic:\n\texplicit PartialMap(const QHash<QString,QString>& partials);\n\n\tvirtual QString getPartial(const QString& name);\n\nprivate:\n\tQHash<QString, QString> m_partials;\n};\n\n/** A partial fetcher when loads templates from '<name>.mustache' files\n * in a given directory.\n *\n * Once a partial has been loaded, it is cached for future use.\n */\nclass PartialFileLoader : public PartialResolver\n{\npublic:\n\texplicit PartialFileLoader(const QString& basePath);\n\n\tvirtual QString getPartial(const QString& name);\n\nprivate:\n\tQString m_basePath;\n\tQHash<QString, QString> m_cache;\n};\n\n/** Holds properties of a tag in a mustache template. */\nstruct Tag\n{\n\tenum Type\n\t{\n\t\tNull,\n\t\tValue, /// A {{key}} or {{{key}}} tag\n\t\tSectionStart, /// A {{#section}} tag\n\t\tInvertedSectionStart, /// An {{^inverted-section}} tag\n\t\tSectionEnd, /// A {{/section}} tag\n\t\tPartial, /// A {{^partial}} tag\n\t\tComment, /// A {{! comment }} tag\n\t\tSetDelimiter /// A {{=<% %>=}} tag\n\t};\n\n\tenum EscapeMode\n\t{\n\t\tEscape,\n\t\tUnescape,\n\t\tRaw\n\t};\n\n\tTag()\n\t\t: type(Null)\n\t\t, start(0)\n\t\t, end(0)\n\t\t, escapeMode(Escape)\n\t\t, indentation(0)\n\t{}\n\n\tType type;\n\tQString key;\n\tint start;\n\tint end;\n\tEscapeMode escapeMode;\n\tint indentation;\n};\n\n/** Renders Mustache templates, replacing mustache tags with\n  * values from a provided context.\n  */\nclass Renderer\n{\npublic:\n\tRenderer();\n\n\t/** Render a Mustache template, using @p context to fetch\n\t  * the values used to replace Mustache tags.\n\t  */\n\tQString render(const QString& _template, Context* context);\n\n\t/** Returns a message describing the last error encountered by the previous\n\t  * render() call.\n\t  */\n\tQString error() const;\n\n\t/** Returns the position in the template where the last error occurred\n\t  * when rendering the template or -1 if no error occurred.\n\t  *\n\t  * If the error occurred in a partial template, the returned position is the offset\n\t  * in the partial template.\n\t  */\n\tint errorPos() const;\n\n\t/** Returns the name of the partial where the error occurred, or an empty string\n\t * if the error occurred in the main template.\n\t */\n\tQString errorPartial() const;\n\n\t/** Sets the default tag start and end markers.\n\t  * This can be overridden within a template.\n\t  */\n\tvoid setTagMarkers(const QString& startMarker, const QString& endMarker);\n\nprivate:\n\tQString render(const QString& _template, int startPos, int endPos, Context* context);\n\n\tTag findTag(const QString& content, int pos, int endPos);\n\tTag findEndTag(const QString& content, const Tag& startTag, int endPos);\n\tvoid setError(const QString& error, int pos);\n\n\tvoid readSetDelimiter(const QString& content, int pos, int endPos);\n\tstatic QString readTagName(const QString& content, int pos, int endPos);\n\n\t/** Expands @p tag to fill the line, but only if it is standalone.\n\t *\n\t * The start position is moved to the beginning of the line. The end position is\n\t * moved to one past the end of the line. If @p tag is not standalone, it is\n\t * left unmodified.\n\t *\n\t * A tag is standalone if it is the only non-whitespace token on the the line.\n\t */\n\tstatic void expandTag(Tag& tag, const QString& content);\n\n\tQStack<QString> m_partialStack;\n\tQString m_error;\n\tint m_errorPos;\n\tQString m_errorPartial;\n\n\tQString m_tagStartMarker;\n\tQString m_tagEndMarker;\n\n\tQString m_defaultTagStartMarker;\n\tQString m_defaultTagEndMarker;\n};\n\n/** A convenience function which renders a template using the given data. */\nQString renderTemplate(const QString& templateString, const QVariantHash& args);\n\n};\n\nQ_DECLARE_METATYPE(Mustache::QtVariantContext::fn_t)\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/partial.mustache",
    "content": "{{name}} -- {{email}}\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/comments.json",
    "content": "{\"__ATTN__\":\"Do not edit this file; changes belong in the appropriate YAML file.\",\"overview\":\"Comment tags represent content that should never appear in the resulting\\noutput.\\n\\nThe tag's content may contain any substring (including newlines) EXCEPT the\\nclosing delimiter.\\n\\nComment tags SHOULD be treated as standalone when appropriate.\\n\",\"tests\":[{\"name\":\"Inline\",\"data\":{},\"expected\":\"1234567890\",\"template\":\"12345{{! Comment Block! }}67890\",\"desc\":\"Comment blocks should be removed from the template.\"},{\"name\":\"Multiline\",\"data\":{},\"expected\":\"1234567890\\n\",\"template\":\"12345{{!\\n  This is a\\n  multi-line comment...\\n}}67890\\n\",\"desc\":\"Multiline comments should be permitted.\"},{\"name\":\"Standalone\",\"data\":{},\"expected\":\"Begin.\\nEnd.\\n\",\"template\":\"Begin.\\n{{! Comment Block! }}\\nEnd.\\n\",\"desc\":\"All standalone comment lines should be removed.\"},{\"name\":\"Indented Standalone\",\"data\":{},\"expected\":\"Begin.\\nEnd.\\n\",\"template\":\"Begin.\\n  {{! Indented Comment Block! }}\\nEnd.\\n\",\"desc\":\"All standalone comment lines should be removed.\"},{\"name\":\"Standalone Line Endings\",\"data\":{},\"expected\":\"|\\r\\n|\",\"template\":\"|\\r\\n{{! Standalone Comment }}\\r\\n|\",\"desc\":\"\\\"\\\\r\\\\n\\\" should be considered a newline for standalone tags.\"},{\"name\":\"Standalone Without Previous Line\",\"data\":{},\"expected\":\"!\",\"template\":\"  {{! I'm Still Standalone }}\\n!\",\"desc\":\"Standalone tags should not require a newline to precede them.\"},{\"name\":\"Standalone Without Newline\",\"data\":{},\"expected\":\"!\\n\",\"template\":\"!\\n  {{! I'm Still Standalone }}\",\"desc\":\"Standalone tags should not require a newline to follow them.\"},{\"name\":\"Multiline Standalone\",\"data\":{},\"expected\":\"Begin.\\nEnd.\\n\",\"template\":\"Begin.\\n{{!\\nSomething's going on here...\\n}}\\nEnd.\\n\",\"desc\":\"All standalone comment lines should be removed.\"},{\"name\":\"Indented Multiline Standalone\",\"data\":{},\"expected\":\"Begin.\\nEnd.\\n\",\"template\":\"Begin.\\n  {{!\\n    Something's going on here...\\n  }}\\nEnd.\\n\",\"desc\":\"All standalone comment lines should be removed.\"},{\"name\":\"Indented Inline\",\"data\":{},\"expected\":\"  12 \\n\",\"template\":\"  12 {{! 34 }}\\n\",\"desc\":\"Inline comments should not strip whitespace\"},{\"name\":\"Surrounding Whitespace\",\"data\":{},\"expected\":\"12345  67890\",\"template\":\"12345 {{! Comment Block! }} 67890\",\"desc\":\"Comment removal should preserve surrounding whitespace.\"}]}"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/comments.yml",
    "content": "overview: |\n  Comment tags represent content that should never appear in the resulting\n  output.\n\n  The tag's content may contain any substring (including newlines) EXCEPT the\n  closing delimiter.\n\n  Comment tags SHOULD be treated as standalone when appropriate.\ntests:\n  - name: Inline\n    desc: Comment blocks should be removed from the template.\n    data: { }\n    template: '12345{{! Comment Block! }}67890'\n    expected: '1234567890'\n\n  - name: Multiline\n    desc: Multiline comments should be permitted.\n    data: { }\n    template: |\n      12345{{!\n        This is a\n        multi-line comment...\n      }}67890\n    expected: |\n      1234567890\n\n  - name: Standalone\n    desc: All standalone comment lines should be removed.\n    data: { }\n    template: |\n      Begin.\n      {{! Comment Block! }}\n      End.\n    expected: |\n      Begin.\n      End.\n\n  - name: Indented Standalone\n    desc: All standalone comment lines should be removed.\n    data: { }\n    template: |\n      Begin.\n        {{! Indented Comment Block! }}\n      End.\n    expected: |\n      Begin.\n      End.\n\n  - name: Standalone Line Endings\n    desc: '\"\\r\\n\" should be considered a newline for standalone tags.'\n    data: { }\n    template: \"|\\r\\n{{! Standalone Comment }}\\r\\n|\"\n    expected: \"|\\r\\n|\"\n\n  - name: Standalone Without Previous Line\n    desc: Standalone tags should not require a newline to precede them.\n    data: { }\n    template: \"  {{! I'm Still Standalone }}\\n!\"\n    expected: \"!\"\n\n  - name: Standalone Without Newline\n    desc: Standalone tags should not require a newline to follow them.\n    data: { }\n    template: \"!\\n  {{! I'm Still Standalone }}\"\n    expected: \"!\\n\"\n\n  - name: Multiline Standalone\n    desc: All standalone comment lines should be removed.\n    data: { }\n    template: |\n      Begin.\n      {{!\n      Something's going on here...\n      }}\n      End.\n    expected: |\n      Begin.\n      End.\n\n  - name: Indented Multiline Standalone\n    desc: All standalone comment lines should be removed.\n    data: { }\n    template: |\n      Begin.\n        {{!\n          Something's going on here...\n        }}\n      End.\n    expected: |\n      Begin.\n      End.\n\n  - name: Indented Inline\n    desc: Inline comments should not strip whitespace\n    data: { }\n    template: \"  12 {{! 34 }}\\n\"\n    expected: \"  12 \\n\"\n\n  - name: Surrounding Whitespace\n    desc: Comment removal should preserve surrounding whitespace.\n    data: { }\n    template: '12345 {{! Comment Block! }} 67890'\n    expected: '12345  67890'\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/delimiters.json",
    "content": "{\"__ATTN__\":\"Do not edit this file; changes belong in the appropriate YAML file.\",\"overview\":\"Set Delimiter tags are used to change the tag delimiters for all content\\nfollowing the tag in the current compilation unit.\\n\\nThe tag's content MUST be any two non-whitespace sequences (separated by\\nwhitespace) EXCEPT an equals sign ('=') followed by the current closing\\ndelimiter.\\n\\nSet Delimiter tags SHOULD be treated as standalone when appropriate.\\n\",\"tests\":[{\"name\":\"Pair Behavior\",\"data\":{\"text\":\"Hey!\"},\"expected\":\"(Hey!)\",\"template\":\"{{=<% %>=}}(<%text%>)\",\"desc\":\"The equals sign (used on both sides) should permit delimiter changes.\"},{\"name\":\"Special Characters\",\"data\":{\"text\":\"It worked!\"},\"expected\":\"(It worked!)\",\"template\":\"({{=[ ]=}}[text])\",\"desc\":\"Characters with special meaning regexen should be valid delimiters.\"},{\"name\":\"Sections\",\"data\":{\"section\":true,\"data\":\"I got interpolated.\"},\"expected\":\"[\\n  I got interpolated.\\n  |data|\\n\\n  {{data}}\\n  I got interpolated.\\n]\\n\",\"template\":\"[\\n{{#section}}\\n  {{data}}\\n  |data|\\n{{/section}}\\n\\n{{= | | =}}\\n|#section|\\n  {{data}}\\n  |data|\\n|/section|\\n]\\n\",\"desc\":\"Delimiters set outside sections should persist.\"},{\"name\":\"Inverted Sections\",\"data\":{\"section\":false,\"data\":\"I got interpolated.\"},\"expected\":\"[\\n  I got interpolated.\\n  |data|\\n\\n  {{data}}\\n  I got interpolated.\\n]\\n\",\"template\":\"[\\n{{^section}}\\n  {{data}}\\n  |data|\\n{{/section}}\\n\\n{{= | | =}}\\n|^section|\\n  {{data}}\\n  |data|\\n|/section|\\n]\\n\",\"desc\":\"Delimiters set outside inverted sections should persist.\"},{\"name\":\"Partial Inheritence\",\"data\":{\"value\":\"yes\"},\"expected\":\"[ .yes. ]\\n[ .yes. ]\\n\",\"template\":\"[ {{>include}} ]\\n{{= | | =}}\\n[ |>include| ]\\n\",\"desc\":\"Delimiters set in a parent template should not affect a partial.\",\"partials\":{\"include\":\".{{value}}.\"}},{\"name\":\"Post-Partial Behavior\",\"data\":{\"value\":\"yes\"},\"expected\":\"[ .yes.  .yes. ]\\n[ .yes.  .|value|. ]\\n\",\"template\":\"[ {{>include}} ]\\n[ .{{value}}.  .|value|. ]\\n\",\"desc\":\"Delimiters set in a partial should not affect the parent template.\",\"partials\":{\"include\":\".{{value}}. {{= | | =}} .|value|.\"}},{\"name\":\"Surrounding Whitespace\",\"data\":{},\"expected\":\"|  |\",\"template\":\"| {{=@ @=}} |\",\"desc\":\"Surrounding whitespace should be left untouched.\"},{\"name\":\"Outlying Whitespace (Inline)\",\"data\":{},\"expected\":\" | \\n\",\"template\":\" | {{=@ @=}}\\n\",\"desc\":\"Whitespace should be left untouched.\"},{\"name\":\"Standalone Tag\",\"data\":{},\"expected\":\"Begin.\\nEnd.\\n\",\"template\":\"Begin.\\n{{=@ @=}}\\nEnd.\\n\",\"desc\":\"Standalone lines should be removed from the template.\"},{\"name\":\"Indented Standalone Tag\",\"data\":{},\"expected\":\"Begin.\\nEnd.\\n\",\"template\":\"Begin.\\n  {{=@ @=}}\\nEnd.\\n\",\"desc\":\"Indented standalone lines should be removed from the template.\"},{\"name\":\"Standalone Line Endings\",\"data\":{},\"expected\":\"|\\r\\n|\",\"template\":\"|\\r\\n{{= @ @ =}}\\r\\n|\",\"desc\":\"\\\"\\\\r\\\\n\\\" should be considered a newline for standalone tags.\"},{\"name\":\"Standalone Without Previous Line\",\"data\":{},\"expected\":\"=\",\"template\":\"  {{=@ @=}}\\n=\",\"desc\":\"Standalone tags should not require a newline to precede them.\"},{\"name\":\"Standalone Without Newline\",\"data\":{},\"expected\":\"=\\n\",\"template\":\"=\\n  {{=@ @=}}\",\"desc\":\"Standalone tags should not require a newline to follow them.\"},{\"name\":\"Pair with Padding\",\"data\":{},\"expected\":\"||\",\"template\":\"|{{= @   @ =}}|\",\"desc\":\"Superfluous in-tag whitespace should be ignored.\"}]}"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/delimiters.yml",
    "content": "overview: |\n  Set Delimiter tags are used to change the tag delimiters for all content\n  following the tag in the current compilation unit.\n\n  The tag's content MUST be any two non-whitespace sequences (separated by\n  whitespace) EXCEPT an equals sign ('=') followed by the current closing\n  delimiter.\n\n  Set Delimiter tags SHOULD be treated as standalone when appropriate.\ntests:\n  - name: Pair Behavior\n    desc: The equals sign (used on both sides) should permit delimiter changes.\n    data: { text: 'Hey!' }\n    template: '{{=<% %>=}}(<%text%>)'\n    expected: '(Hey!)'\n\n  - name: Special Characters\n    desc: Characters with special meaning regexen should be valid delimiters.\n    data: { text: 'It worked!' }\n    template: '({{=[ ]=}}[text])'\n    expected: '(It worked!)'\n\n  - name: Sections\n    desc: Delimiters set outside sections should persist.\n    data: { section: true, data: 'I got interpolated.' }\n    template: |\n      [\n      {{#section}}\n        {{data}}\n        |data|\n      {{/section}}\n\n      {{= | | =}}\n      |#section|\n        {{data}}\n        |data|\n      |/section|\n      ]\n    expected: |\n      [\n        I got interpolated.\n        |data|\n\n        {{data}}\n        I got interpolated.\n      ]\n\n  - name: Inverted Sections\n    desc: Delimiters set outside inverted sections should persist.\n    data: { section: false, data: 'I got interpolated.' }\n    template: |\n      [\n      {{^section}}\n        {{data}}\n        |data|\n      {{/section}}\n\n      {{= | | =}}\n      |^section|\n        {{data}}\n        |data|\n      |/section|\n      ]\n    expected: |\n      [\n        I got interpolated.\n        |data|\n\n        {{data}}\n        I got interpolated.\n      ]\n\n  - name: Partial Inheritence\n    desc: Delimiters set in a parent template should not affect a partial.\n    data: { value: 'yes' }\n    partials:\n      include: '.{{value}}.'\n    template: |\n      [ {{>include}} ]\n      {{= | | =}}\n      [ |>include| ]\n    expected: |\n      [ .yes. ]\n      [ .yes. ]\n\n  - name: Post-Partial Behavior\n    desc: Delimiters set in a partial should not affect the parent template.\n    data: { value: 'yes' }\n    partials:\n      include: '.{{value}}. {{= | | =}} .|value|.'\n    template: |\n      [ {{>include}} ]\n      [ .{{value}}.  .|value|. ]\n    expected: |\n      [ .yes.  .yes. ]\n      [ .yes.  .|value|. ]\n\n  # Whitespace Sensitivity\n\n  - name: Surrounding Whitespace\n    desc: Surrounding whitespace should be left untouched.\n    data: { }\n    template: '| {{=@ @=}} |'\n    expected: '|  |'\n\n  - name: Outlying Whitespace (Inline)\n    desc: Whitespace should be left untouched.\n    data: { }\n    template: \" | {{=@ @=}}\\n\"\n    expected: \" | \\n\"\n\n  - name: Standalone Tag\n    desc: Standalone lines should be removed from the template.\n    data: { }\n    template: |\n      Begin.\n      {{=@ @=}}\n      End.\n    expected: |\n      Begin.\n      End.\n\n  - name: Indented Standalone Tag\n    desc: Indented standalone lines should be removed from the template.\n    data: { }\n    template: |\n      Begin.\n        {{=@ @=}}\n      End.\n    expected: |\n      Begin.\n      End.\n\n  - name: Standalone Line Endings\n    desc: '\"\\r\\n\" should be considered a newline for standalone tags.'\n    data: { }\n    template: \"|\\r\\n{{= @ @ =}}\\r\\n|\"\n    expected: \"|\\r\\n|\"\n\n  - name: Standalone Without Previous Line\n    desc: Standalone tags should not require a newline to precede them.\n    data: { }\n    template: \"  {{=@ @=}}\\n=\"\n    expected: \"=\"\n\n  - name: Standalone Without Newline\n    desc: Standalone tags should not require a newline to follow them.\n    data: { }\n    template: \"=\\n  {{=@ @=}}\"\n    expected: \"=\\n\"\n\n  # Whitespace Insensitivity\n\n  - name: Pair with Padding\n    desc: Superfluous in-tag whitespace should be ignored.\n    data: { }\n    template: '|{{= @   @ =}}|'\n    expected: '||'\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/interpolation.json",
    "content": "{\"__ATTN__\":\"Do not edit this file; changes belong in the appropriate YAML file.\",\"overview\":\"Interpolation tags are used to integrate dynamic content into the template.\\n\\nThe tag's content MUST be a non-whitespace character sequence NOT containing\\nthe current closing delimiter.\\n\\nThis tag's content names the data to replace the tag.  A single period (`.`)\\nindicates that the item currently sitting atop the context stack should be\\nused; otherwise, name resolution is as follows:\\n  1) Split the name on periods; the first part is the name to resolve, any\\n  remaining parts should be retained.\\n  2) Walk the context stack from top to bottom, finding the first context\\n  that is a) a hash containing the name as a key OR b) an object responding\\n  to a method with the given name.\\n  3) If the context is a hash, the data is the value associated with the\\n  name.\\n  4) If the context is an object, the data is the value returned by the\\n  method with the given name.\\n  5) If any name parts were retained in step 1, each should be resolved\\n  against a context stack containing only the result from the former\\n  resolution.  If any part fails resolution, the result should be considered\\n  falsey, and should interpolate as the empty string.\\nData should be coerced into a string (and escaped, if appropriate) before\\ninterpolation.\\n\\nThe Interpolation tags MUST NOT be treated as standalone.\\n\",\"tests\":[{\"name\":\"No Interpolation\",\"data\":{},\"expected\":\"Hello from {Mustache}!\\n\",\"template\":\"Hello from {Mustache}!\\n\",\"desc\":\"Mustache-free templates should render as-is.\"},{\"name\":\"Basic Interpolation\",\"data\":{\"subject\":\"world\"},\"expected\":\"Hello, world!\\n\",\"template\":\"Hello, {{subject}}!\\n\",\"desc\":\"Unadorned tags should interpolate content into the template.\"},{\"name\":\"HTML Escaping\",\"data\":{\"forbidden\":\"& \\\" < >\"},\"expected\":\"These characters should be HTML escaped: &amp; &quot; &lt; &gt;\\n\",\"template\":\"These characters should be HTML escaped: {{forbidden}}\\n\",\"desc\":\"Basic interpolation should be HTML escaped.\"},{\"name\":\"Triple Mustache\",\"data\":{\"forbidden\":\"& \\\" < >\"},\"expected\":\"These characters should not be HTML escaped: & \\\" < >\\n\",\"template\":\"These characters should not be HTML escaped: {{{forbidden}}}\\n\",\"desc\":\"Triple mustaches should interpolate without HTML escaping.\"},{\"name\":\"Ampersand\",\"data\":{\"forbidden\":\"& \\\" < >\"},\"expected\":\"These characters should not be HTML escaped: & \\\" < >\\n\",\"template\":\"These characters should not be HTML escaped: {{&forbidden}}\\n\",\"desc\":\"Ampersand should interpolate without HTML escaping.\"},{\"name\":\"Basic Integer Interpolation\",\"data\":{\"mph\":85},\"expected\":\"\\\"85 miles an hour!\\\"\",\"template\":\"\\\"{{mph}} miles an hour!\\\"\",\"desc\":\"Integers should interpolate seamlessly.\"},{\"name\":\"Triple Mustache Integer Interpolation\",\"data\":{\"mph\":85},\"expected\":\"\\\"85 miles an hour!\\\"\",\"template\":\"\\\"{{{mph}}} miles an hour!\\\"\",\"desc\":\"Integers should interpolate seamlessly.\"},{\"name\":\"Ampersand Integer Interpolation\",\"data\":{\"mph\":85},\"expected\":\"\\\"85 miles an hour!\\\"\",\"template\":\"\\\"{{&mph}} miles an hour!\\\"\",\"desc\":\"Integers should interpolate seamlessly.\"},{\"name\":\"Basic Decimal Interpolation\",\"data\":{\"power\":1.21},\"expected\":\"\\\"1.21 jiggawatts!\\\"\",\"template\":\"\\\"{{power}} jiggawatts!\\\"\",\"desc\":\"Decimals should interpolate seamlessly with proper significance.\"},{\"name\":\"Triple Mustache Decimal Interpolation\",\"data\":{\"power\":1.21},\"expected\":\"\\\"1.21 jiggawatts!\\\"\",\"template\":\"\\\"{{{power}}} jiggawatts!\\\"\",\"desc\":\"Decimals should interpolate seamlessly with proper significance.\"},{\"name\":\"Ampersand Decimal Interpolation\",\"data\":{\"power\":1.21},\"expected\":\"\\\"1.21 jiggawatts!\\\"\",\"template\":\"\\\"{{&power}} jiggawatts!\\\"\",\"desc\":\"Decimals should interpolate seamlessly with proper significance.\"},{\"name\":\"Basic Context Miss Interpolation\",\"data\":{},\"expected\":\"I () be seen!\",\"template\":\"I ({{cannot}}) be seen!\",\"desc\":\"Failed context lookups should default to empty strings.\"},{\"name\":\"Triple Mustache Context Miss Interpolation\",\"data\":{},\"expected\":\"I () be seen!\",\"template\":\"I ({{{cannot}}}) be seen!\",\"desc\":\"Failed context lookups should default to empty strings.\"},{\"name\":\"Ampersand Context Miss Interpolation\",\"data\":{},\"expected\":\"I () be seen!\",\"template\":\"I ({{&cannot}}) be seen!\",\"desc\":\"Failed context lookups should default to empty strings.\"},{\"name\":\"Dotted Names - Basic Interpolation\",\"data\":{\"person\":{\"name\":\"Joe\"}},\"expected\":\"\\\"Joe\\\" == \\\"Joe\\\"\",\"template\":\"\\\"{{person.name}}\\\" == \\\"{{#person}}{{name}}{{/person}}\\\"\",\"desc\":\"Dotted names should be considered a form of shorthand for sections.\"},{\"name\":\"Dotted Names - Triple Mustache Interpolation\",\"data\":{\"person\":{\"name\":\"Joe\"}},\"expected\":\"\\\"Joe\\\" == \\\"Joe\\\"\",\"template\":\"\\\"{{{person.name}}}\\\" == \\\"{{#person}}{{{name}}}{{/person}}\\\"\",\"desc\":\"Dotted names should be considered a form of shorthand for sections.\"},{\"name\":\"Dotted Names - Ampersand Interpolation\",\"data\":{\"person\":{\"name\":\"Joe\"}},\"expected\":\"\\\"Joe\\\" == \\\"Joe\\\"\",\"template\":\"\\\"{{&person.name}}\\\" == \\\"{{#person}}{{&name}}{{/person}}\\\"\",\"desc\":\"Dotted names should be considered a form of shorthand for sections.\"},{\"name\":\"Dotted Names - Arbitrary Depth\",\"data\":{\"a\":{\"b\":{\"c\":{\"d\":{\"e\":{\"name\":\"Phil\"}}}}}},\"expected\":\"\\\"Phil\\\" == \\\"Phil\\\"\",\"template\":\"\\\"{{a.b.c.d.e.name}}\\\" == \\\"Phil\\\"\",\"desc\":\"Dotted names should be functional to any level of nesting.\"},{\"name\":\"Dotted Names - Broken Chains\",\"data\":{\"a\":{}},\"expected\":\"\\\"\\\" == \\\"\\\"\",\"template\":\"\\\"{{a.b.c}}\\\" == \\\"\\\"\",\"desc\":\"Any falsey value prior to the last part of the name should yield ''.\"},{\"name\":\"Dotted Names - Broken Chain Resolution\",\"data\":{\"a\":{\"b\":{}},\"c\":{\"name\":\"Jim\"}},\"expected\":\"\\\"\\\" == \\\"\\\"\",\"template\":\"\\\"{{a.b.c.name}}\\\" == \\\"\\\"\",\"desc\":\"Each part of a dotted name should resolve only against its parent.\"},{\"name\":\"Dotted Names - Initial Resolution\",\"data\":{\"a\":{\"b\":{\"c\":{\"d\":{\"e\":{\"name\":\"Phil\"}}}}},\"b\":{\"c\":{\"d\":{\"e\":{\"name\":\"Wrong\"}}}}},\"expected\":\"\\\"Phil\\\" == \\\"Phil\\\"\",\"template\":\"\\\"{{#a}}{{b.c.d.e.name}}{{/a}}\\\" == \\\"Phil\\\"\",\"desc\":\"The first part of a dotted name should resolve as any other name.\"},{\"name\":\"Interpolation - Surrounding Whitespace\",\"data\":{\"string\":\"---\"},\"expected\":\"| --- |\",\"template\":\"| {{string}} |\",\"desc\":\"Interpolation should not alter surrounding whitespace.\"},{\"name\":\"Triple Mustache - Surrounding Whitespace\",\"data\":{\"string\":\"---\"},\"expected\":\"| --- |\",\"template\":\"| {{{string}}} |\",\"desc\":\"Interpolation should not alter surrounding whitespace.\"},{\"name\":\"Ampersand - Surrounding Whitespace\",\"data\":{\"string\":\"---\"},\"expected\":\"| --- |\",\"template\":\"| {{&string}} |\",\"desc\":\"Interpolation should not alter surrounding whitespace.\"},{\"name\":\"Interpolation - Standalone\",\"data\":{\"string\":\"---\"},\"expected\":\"  ---\\n\",\"template\":\"  {{string}}\\n\",\"desc\":\"Standalone interpolation should not alter surrounding whitespace.\"},{\"name\":\"Triple Mustache - Standalone\",\"data\":{\"string\":\"---\"},\"expected\":\"  ---\\n\",\"template\":\"  {{{string}}}\\n\",\"desc\":\"Standalone interpolation should not alter surrounding whitespace.\"},{\"name\":\"Ampersand - Standalone\",\"data\":{\"string\":\"---\"},\"expected\":\"  ---\\n\",\"template\":\"  {{&string}}\\n\",\"desc\":\"Standalone interpolation should not alter surrounding whitespace.\"},{\"name\":\"Interpolation With Padding\",\"data\":{\"string\":\"---\"},\"expected\":\"|---|\",\"template\":\"|{{ string }}|\",\"desc\":\"Superfluous in-tag whitespace should be ignored.\"},{\"name\":\"Triple Mustache With Padding\",\"data\":{\"string\":\"---\"},\"expected\":\"|---|\",\"template\":\"|{{{ string }}}|\",\"desc\":\"Superfluous in-tag whitespace should be ignored.\"},{\"name\":\"Ampersand With Padding\",\"data\":{\"string\":\"---\"},\"expected\":\"|---|\",\"template\":\"|{{& string }}|\",\"desc\":\"Superfluous in-tag whitespace should be ignored.\"}]}"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/interpolation.yml",
    "content": "overview: |\n  Interpolation tags are used to integrate dynamic content into the template.\n\n  The tag's content MUST be a non-whitespace character sequence NOT containing\n  the current closing delimiter.\n\n  This tag's content names the data to replace the tag.  A single period (`.`)\n  indicates that the item currently sitting atop the context stack should be\n  used; otherwise, name resolution is as follows:\n    1) Split the name on periods; the first part is the name to resolve, any\n    remaining parts should be retained.\n    2) Walk the context stack from top to bottom, finding the first context\n    that is a) a hash containing the name as a key OR b) an object responding\n    to a method with the given name.\n    3) If the context is a hash, the data is the value associated with the\n    name.\n    4) If the context is an object, the data is the value returned by the\n    method with the given name.\n    5) If any name parts were retained in step 1, each should be resolved\n    against a context stack containing only the result from the former\n    resolution.  If any part fails resolution, the result should be considered\n    falsey, and should interpolate as the empty string.\n  Data should be coerced into a string (and escaped, if appropriate) before\n  interpolation.\n\n  The Interpolation tags MUST NOT be treated as standalone.\ntests:\n  - name: No Interpolation\n    desc: Mustache-free templates should render as-is.\n    data: { }\n    template: |\n      Hello from {Mustache}!\n    expected: |\n      Hello from {Mustache}!\n\n  - name: Basic Interpolation\n    desc: Unadorned tags should interpolate content into the template.\n    data: { subject: \"world\" }\n    template: |\n      Hello, {{subject}}!\n    expected: |\n      Hello, world!\n\n  - name: HTML Escaping\n    desc: Basic interpolation should be HTML escaped.\n    data: { forbidden: '& \" < >' }\n    template: |\n      These characters should be HTML escaped: {{forbidden}}\n    expected: |\n      These characters should be HTML escaped: &amp; &quot; &lt; &gt;\n\n  - name: Triple Mustache\n    desc: Triple mustaches should interpolate without HTML escaping.\n    data: { forbidden: '& \" < >' }\n    template: |\n      These characters should not be HTML escaped: {{{forbidden}}}\n    expected: |\n      These characters should not be HTML escaped: & \" < >\n\n  - name: Ampersand\n    desc: Ampersand should interpolate without HTML escaping.\n    data: { forbidden: '& \" < >' }\n    template: |\n      These characters should not be HTML escaped: {{&forbidden}}\n    expected: |\n      These characters should not be HTML escaped: & \" < >\n\n  - name: Basic Integer Interpolation\n    desc: Integers should interpolate seamlessly.\n    data: { mph: 85 }\n    template: '\"{{mph}} miles an hour!\"'\n    expected: '\"85 miles an hour!\"'\n\n  - name: Triple Mustache Integer Interpolation\n    desc: Integers should interpolate seamlessly.\n    data: { mph: 85 }\n    template: '\"{{{mph}}} miles an hour!\"'\n    expected: '\"85 miles an hour!\"'\n\n  - name: Ampersand Integer Interpolation\n    desc: Integers should interpolate seamlessly.\n    data: { mph: 85 }\n    template: '\"{{&mph}} miles an hour!\"'\n    expected: '\"85 miles an hour!\"'\n\n  - name: Basic Decimal Interpolation\n    desc: Decimals should interpolate seamlessly with proper significance.\n    data: { power: 1.210 }\n    template: '\"{{power}} jiggawatts!\"'\n    expected: '\"1.21 jiggawatts!\"'\n\n  - name: Triple Mustache Decimal Interpolation\n    desc: Decimals should interpolate seamlessly with proper significance.\n    data: { power: 1.210 }\n    template: '\"{{{power}}} jiggawatts!\"'\n    expected: '\"1.21 jiggawatts!\"'\n\n  - name: Ampersand Decimal Interpolation\n    desc: Decimals should interpolate seamlessly with proper significance.\n    data: { power: 1.210 }\n    template: '\"{{&power}} jiggawatts!\"'\n    expected: '\"1.21 jiggawatts!\"'\n\n  # Context Misses\n\n  - name: Basic Context Miss Interpolation\n    desc: Failed context lookups should default to empty strings.\n    data: { }\n    template: \"I ({{cannot}}) be seen!\"\n    expected: \"I () be seen!\"\n\n  - name: Triple Mustache Context Miss Interpolation\n    desc: Failed context lookups should default to empty strings.\n    data: { }\n    template: \"I ({{{cannot}}}) be seen!\"\n    expected: \"I () be seen!\"\n\n  - name: Ampersand Context Miss Interpolation\n    desc: Failed context lookups should default to empty strings.\n    data: { }\n    template: \"I ({{&cannot}}) be seen!\"\n    expected: \"I () be seen!\"\n\n  # Dotted Names\n\n  - name: Dotted Names - Basic Interpolation\n    desc: Dotted names should be considered a form of shorthand for sections.\n    data: { person: { name: 'Joe' } }\n    template: '\"{{person.name}}\" == \"{{#person}}{{name}}{{/person}}\"'\n    expected: '\"Joe\" == \"Joe\"'\n\n  - name: Dotted Names - Triple Mustache Interpolation\n    desc: Dotted names should be considered a form of shorthand for sections.\n    data: { person: { name: 'Joe' } }\n    template: '\"{{{person.name}}}\" == \"{{#person}}{{{name}}}{{/person}}\"'\n    expected: '\"Joe\" == \"Joe\"'\n\n  - name: Dotted Names - Ampersand Interpolation\n    desc: Dotted names should be considered a form of shorthand for sections.\n    data: { person: { name: 'Joe' } }\n    template: '\"{{&person.name}}\" == \"{{#person}}{{&name}}{{/person}}\"'\n    expected: '\"Joe\" == \"Joe\"'\n\n  - name: Dotted Names - Arbitrary Depth\n    desc: Dotted names should be functional to any level of nesting.\n    data:\n      a: { b: { c: { d: { e: { name: 'Phil' } } } } }\n    template: '\"{{a.b.c.d.e.name}}\" == \"Phil\"'\n    expected: '\"Phil\" == \"Phil\"'\n\n  - name: Dotted Names - Broken Chains\n    desc: Any falsey value prior to the last part of the name should yield ''.\n    data:\n      a: { }\n    template: '\"{{a.b.c}}\" == \"\"'\n    expected: '\"\" == \"\"'\n\n  - name: Dotted Names - Broken Chain Resolution\n    desc: Each part of a dotted name should resolve only against its parent.\n    data:\n      a: { b: { } }\n      c: { name: 'Jim' }\n    template: '\"{{a.b.c.name}}\" == \"\"'\n    expected: '\"\" == \"\"'\n\n  - name: Dotted Names - Initial Resolution\n    desc: The first part of a dotted name should resolve as any other name.\n    data:\n      a: { b: { c: { d: { e: { name: 'Phil' } } } } }\n      b: { c: { d: { e: { name: 'Wrong' } } } }\n    template: '\"{{#a}}{{b.c.d.e.name}}{{/a}}\" == \"Phil\"'\n    expected: '\"Phil\" == \"Phil\"'\n\n  - name: Dotted Names - Context Precedence\n    desc: Dotted names should be resolved against former resolutions.\n    data:\n      a: { b: { } }\n      b: { c: 'ERROR' }\n    template: '{{#a}}{{b.c}}{{/a}}'\n    expected: ''\n\n  # Whitespace Sensitivity\n\n  - name: Interpolation - Surrounding Whitespace\n    desc: Interpolation should not alter surrounding whitespace.\n    data: { string: '---' }\n    template: '| {{string}} |'\n    expected: '| --- |'\n\n  - name: Triple Mustache - Surrounding Whitespace\n    desc: Interpolation should not alter surrounding whitespace.\n    data: { string: '---' }\n    template: '| {{{string}}} |'\n    expected: '| --- |'\n\n  - name: Ampersand - Surrounding Whitespace\n    desc: Interpolation should not alter surrounding whitespace.\n    data: { string: '---' }\n    template: '| {{&string}} |'\n    expected: '| --- |'\n\n  - name: Interpolation - Standalone\n    desc: Standalone interpolation should not alter surrounding whitespace.\n    data: { string: '---' }\n    template: \"  {{string}}\\n\"\n    expected: \"  ---\\n\"\n\n  - name: Triple Mustache - Standalone\n    desc: Standalone interpolation should not alter surrounding whitespace.\n    data: { string: '---' }\n    template: \"  {{{string}}}\\n\"\n    expected: \"  ---\\n\"\n\n  - name: Ampersand - Standalone\n    desc: Standalone interpolation should not alter surrounding whitespace.\n    data: { string: '---' }\n    template: \"  {{&string}}\\n\"\n    expected: \"  ---\\n\"\n\n  # Whitespace Insensitivity\n\n  - name: Interpolation With Padding\n    desc: Superfluous in-tag whitespace should be ignored.\n    data: { string: \"---\" }\n    template: '|{{ string }}|'\n    expected: '|---|'\n\n  - name: Triple Mustache With Padding\n    desc: Superfluous in-tag whitespace should be ignored.\n    data: { string: \"---\" }\n    template: '|{{{ string }}}|'\n    expected: '|---|'\n\n  - name: Ampersand With Padding\n    desc: Superfluous in-tag whitespace should be ignored.\n    data: { string: \"---\" }\n    template: '|{{& string }}|'\n    expected: '|---|'\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/inverted.json",
    "content": "{\"__ATTN__\":\"Do not edit this file; changes belong in the appropriate YAML file.\",\"overview\":\"Inverted Section tags and End Section tags are used in combination to wrap a\\nsection of the template.\\n\\nThese tags' content MUST be a non-whitespace character sequence NOT\\ncontaining the current closing delimiter; each Inverted Section tag MUST be\\nfollowed by an End Section tag with the same content within the same\\nsection.\\n\\nThis tag's content names the data to replace the tag.  Name resolution is as\\nfollows:\\n  1) Split the name on periods; the first part is the name to resolve, any\\n  remaining parts should be retained.\\n  2) Walk the context stack from top to bottom, finding the first context\\n  that is a) a hash containing the name as a key OR b) an object responding\\n  to a method with the given name.\\n  3) If the context is a hash, the data is the value associated with the\\n  name.\\n  4) If the context is an object and the method with the given name has an\\n  arity of 1, the method SHOULD be called with a String containing the\\n  unprocessed contents of the sections; the data is the value returned.\\n  5) Otherwise, the data is the value returned by calling the method with\\n  the given name.\\n  6) If any name parts were retained in step 1, each should be resolved\\n  against a context stack containing only the result from the former\\n  resolution.  If any part fails resolution, the result should be considered\\n  falsey, and should interpolate as the empty string.\\nIf the data is not of a list type, it is coerced into a list as follows: if\\nthe data is truthy (e.g. `!!data == true`), use a single-element list\\ncontaining the data, otherwise use an empty list.\\n\\nThis section MUST NOT be rendered unless the data list is empty.\\n\\nInverted Section and End Section tags SHOULD be treated as standalone when\\nappropriate.\\n\",\"tests\":[{\"name\":\"Falsey\",\"data\":{\"boolean\":false},\"expected\":\"\\\"This should be rendered.\\\"\",\"template\":\"\\\"{{^boolean}}This should be rendered.{{/boolean}}\\\"\",\"desc\":\"Falsey sections should have their contents rendered.\"},{\"name\":\"Truthy\",\"data\":{\"boolean\":true},\"expected\":\"\\\"\\\"\",\"template\":\"\\\"{{^boolean}}This should not be rendered.{{/boolean}}\\\"\",\"desc\":\"Truthy sections should have their contents omitted.\"},{\"name\":\"Context\",\"data\":{\"context\":{\"name\":\"Joe\"}},\"expected\":\"\\\"\\\"\",\"template\":\"\\\"{{^context}}Hi {{name}}.{{/context}}\\\"\",\"desc\":\"Objects and hashes should behave like truthy values.\"},{\"name\":\"List\",\"data\":{\"list\":[{\"n\":1},{\"n\":2},{\"n\":3}]},\"expected\":\"\\\"\\\"\",\"template\":\"\\\"{{^list}}{{n}}{{/list}}\\\"\",\"desc\":\"Lists should behave like truthy values.\"},{\"name\":\"Empty List\",\"data\":{\"list\":[]},\"expected\":\"\\\"Yay lists!\\\"\",\"template\":\"\\\"{{^list}}Yay lists!{{/list}}\\\"\",\"desc\":\"Empty lists should behave like falsey values.\"},{\"name\":\"Doubled\",\"data\":{\"two\":\"second\",\"bool\":false},\"expected\":\"* first\\n* second\\n* third\\n\",\"template\":\"{{^bool}}\\n* first\\n{{/bool}}\\n* {{two}}\\n{{^bool}}\\n* third\\n{{/bool}}\\n\",\"desc\":\"Multiple inverted sections per template should be permitted.\"},{\"name\":\"Nested (Falsey)\",\"data\":{\"bool\":false},\"expected\":\"| A B C D E |\",\"template\":\"| A {{^bool}}B {{^bool}}C{{/bool}} D{{/bool}} E |\",\"desc\":\"Nested falsey sections should have their contents rendered.\"},{\"name\":\"Nested (Truthy)\",\"data\":{\"bool\":true},\"expected\":\"| A  E |\",\"template\":\"| A {{^bool}}B {{^bool}}C{{/bool}} D{{/bool}} E |\",\"desc\":\"Nested truthy sections should be omitted.\"},{\"name\":\"Context Misses\",\"data\":{},\"expected\":\"[Cannot find key 'missing'!]\",\"template\":\"[{{^missing}}Cannot find key 'missing'!{{/missing}}]\",\"desc\":\"Failed context lookups should be considered falsey.\"},{\"name\":\"Dotted Names - Truthy\",\"data\":{\"a\":{\"b\":{\"c\":true}}},\"expected\":\"\\\"\\\" == \\\"\\\"\",\"template\":\"\\\"{{^a.b.c}}Not Here{{/a.b.c}}\\\" == \\\"\\\"\",\"desc\":\"Dotted names should be valid for Inverted Section tags.\"},{\"name\":\"Dotted Names - Falsey\",\"data\":{\"a\":{\"b\":{\"c\":false}}},\"expected\":\"\\\"Not Here\\\" == \\\"Not Here\\\"\",\"template\":\"\\\"{{^a.b.c}}Not Here{{/a.b.c}}\\\" == \\\"Not Here\\\"\",\"desc\":\"Dotted names should be valid for Inverted Section tags.\"},{\"name\":\"Dotted Names - Broken Chains\",\"data\":{\"a\":{}},\"expected\":\"\\\"Not Here\\\" == \\\"Not Here\\\"\",\"template\":\"\\\"{{^a.b.c}}Not Here{{/a.b.c}}\\\" == \\\"Not Here\\\"\",\"desc\":\"Dotted names that cannot be resolved should be considered falsey.\"},{\"name\":\"Surrounding Whitespace\",\"data\":{\"boolean\":false},\"expected\":\" | \\t|\\t | \\n\",\"template\":\" | {{^boolean}}\\t|\\t{{/boolean}} | \\n\",\"desc\":\"Inverted sections should not alter surrounding whitespace.\"},{\"name\":\"Internal Whitespace\",\"data\":{\"boolean\":false},\"expected\":\" |  \\n  | \\n\",\"template\":\" | {{^boolean}} {{! Important Whitespace }}\\n {{/boolean}} | \\n\",\"desc\":\"Inverted should not alter internal whitespace.\"},{\"name\":\"Indented Inline Sections\",\"data\":{\"boolean\":false},\"expected\":\" NO\\n WAY\\n\",\"template\":\" {{^boolean}}NO{{/boolean}}\\n {{^boolean}}WAY{{/boolean}}\\n\",\"desc\":\"Single-line sections should not alter surrounding whitespace.\"},{\"name\":\"Standalone Lines\",\"data\":{\"boolean\":false},\"expected\":\"| This Is\\n|\\n| A Line\\n\",\"template\":\"| This Is\\n{{^boolean}}\\n|\\n{{/boolean}}\\n| A Line\\n\",\"desc\":\"Standalone lines should be removed from the template.\"},{\"name\":\"Standalone Indented Lines\",\"data\":{\"boolean\":false},\"expected\":\"| This Is\\n|\\n| A Line\\n\",\"template\":\"| This Is\\n  {{^boolean}}\\n|\\n  {{/boolean}}\\n| A Line\\n\",\"desc\":\"Standalone indented lines should be removed from the template.\"},{\"name\":\"Standalone Line Endings\",\"data\":{\"boolean\":false},\"expected\":\"|\\r\\n|\",\"template\":\"|\\r\\n{{^boolean}}\\r\\n{{/boolean}}\\r\\n|\",\"desc\":\"\\\"\\\\r\\\\n\\\" should be considered a newline for standalone tags.\"},{\"name\":\"Standalone Without Previous Line\",\"data\":{\"boolean\":false},\"expected\":\"^\\n/\",\"template\":\"  {{^boolean}}\\n^{{/boolean}}\\n/\",\"desc\":\"Standalone tags should not require a newline to precede them.\"},{\"name\":\"Standalone Without Newline\",\"data\":{\"boolean\":false},\"expected\":\"^\\n/\\n\",\"template\":\"^{{^boolean}}\\n/\\n  {{/boolean}}\",\"desc\":\"Standalone tags should not require a newline to follow them.\"},{\"name\":\"Padding\",\"data\":{\"boolean\":false},\"expected\":\"|=|\",\"template\":\"|{{^ boolean }}={{/ boolean }}|\",\"desc\":\"Superfluous in-tag whitespace should be ignored.\"}]}"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/inverted.yml",
    "content": "overview: |\n  Inverted Section tags and End Section tags are used in combination to wrap a\n  section of the template.\n\n  These tags' content MUST be a non-whitespace character sequence NOT\n  containing the current closing delimiter; each Inverted Section tag MUST be\n  followed by an End Section tag with the same content within the same\n  section.\n\n  This tag's content names the data to replace the tag.  Name resolution is as\n  follows:\n    1) Split the name on periods; the first part is the name to resolve, any\n    remaining parts should be retained.\n    2) Walk the context stack from top to bottom, finding the first context\n    that is a) a hash containing the name as a key OR b) an object responding\n    to a method with the given name.\n    3) If the context is a hash, the data is the value associated with the\n    name.\n    4) If the context is an object and the method with the given name has an\n    arity of 1, the method SHOULD be called with a String containing the\n    unprocessed contents of the sections; the data is the value returned.\n    5) Otherwise, the data is the value returned by calling the method with\n    the given name.\n    6) If any name parts were retained in step 1, each should be resolved\n    against a context stack containing only the result from the former\n    resolution.  If any part fails resolution, the result should be considered\n    falsey, and should interpolate as the empty string.\n  If the data is not of a list type, it is coerced into a list as follows: if\n  the data is truthy (e.g. `!!data == true`), use a single-element list\n  containing the data, otherwise use an empty list.\n\n  This section MUST NOT be rendered unless the data list is empty.\n\n  Inverted Section and End Section tags SHOULD be treated as standalone when\n  appropriate.\ntests:\n  - name: Falsey\n    desc: Falsey sections should have their contents rendered.\n    data: { boolean: false }\n    template: '\"{{^boolean}}This should be rendered.{{/boolean}}\"'\n    expected: '\"This should be rendered.\"'\n\n  - name: Truthy\n    desc: Truthy sections should have their contents omitted.\n    data: { boolean: true }\n    template: '\"{{^boolean}}This should not be rendered.{{/boolean}}\"'\n    expected: '\"\"'\n\n  - name: Context\n    desc: Objects and hashes should behave like truthy values.\n    data: { context: { name: 'Joe' } }\n    template: '\"{{^context}}Hi {{name}}.{{/context}}\"'\n    expected: '\"\"'\n\n  - name: List\n    desc: Lists should behave like truthy values.\n    data: { list: [ { n: 1 }, { n: 2 }, { n: 3 } ] }\n    template: '\"{{^list}}{{n}}{{/list}}\"'\n    expected: '\"\"'\n\n  - name: Empty List\n    desc: Empty lists should behave like falsey values.\n    data: { list: [ ] }\n    template: '\"{{^list}}Yay lists!{{/list}}\"'\n    expected: '\"Yay lists!\"'\n\n  - name: Doubled\n    desc: Multiple inverted sections per template should be permitted.\n    data: { bool: false, two: 'second' }\n    template: |\n      {{^bool}}\n      * first\n      {{/bool}}\n      * {{two}}\n      {{^bool}}\n      * third\n      {{/bool}}\n    expected: |\n      * first\n      * second\n      * third\n\n  - name: Nested (Falsey)\n    desc: Nested falsey sections should have their contents rendered.\n    data: { bool: false }\n    template: \"| A {{^bool}}B {{^bool}}C{{/bool}} D{{/bool}} E |\"\n    expected: \"| A B C D E |\"\n\n  - name: Nested (Truthy)\n    desc: Nested truthy sections should be omitted.\n    data: { bool: true }\n    template: \"| A {{^bool}}B {{^bool}}C{{/bool}} D{{/bool}} E |\"\n    expected: \"| A  E |\"\n\n  - name: Context Misses\n    desc: Failed context lookups should be considered falsey.\n    data: { }\n    template: \"[{{^missing}}Cannot find key 'missing'!{{/missing}}]\"\n    expected: \"[Cannot find key 'missing'!]\"\n\n  # Dotted Names\n\n  - name: Dotted Names - Truthy\n    desc: Dotted names should be valid for Inverted Section tags.\n    data: { a: { b: { c: true } } }\n    template: '\"{{^a.b.c}}Not Here{{/a.b.c}}\" == \"\"'\n    expected: '\"\" == \"\"'\n\n  - name: Dotted Names - Falsey\n    desc: Dotted names should be valid for Inverted Section tags.\n    data: { a: { b: { c: false } } }\n    template: '\"{{^a.b.c}}Not Here{{/a.b.c}}\" == \"Not Here\"'\n    expected: '\"Not Here\" == \"Not Here\"'\n\n  - name: Dotted Names - Broken Chains\n    desc: Dotted names that cannot be resolved should be considered falsey.\n    data: { a: { } }\n    template: '\"{{^a.b.c}}Not Here{{/a.b.c}}\" == \"Not Here\"'\n    expected: '\"Not Here\" == \"Not Here\"'\n\n  # Whitespace Sensitivity\n\n  - name: Surrounding Whitespace\n    desc: Inverted sections should not alter surrounding whitespace.\n    data: { boolean: false }\n    template: \" | {{^boolean}}\\t|\\t{{/boolean}} | \\n\"\n    expected: \" | \\t|\\t | \\n\"\n\n  - name: Internal Whitespace\n    desc: Inverted should not alter internal whitespace.\n    data: { boolean: false }\n    template: \" | {{^boolean}} {{! Important Whitespace }}\\n {{/boolean}} | \\n\"\n    expected: \" |  \\n  | \\n\"\n\n  - name: Indented Inline Sections\n    desc: Single-line sections should not alter surrounding whitespace.\n    data: { boolean: false }\n    template: \" {{^boolean}}NO{{/boolean}}\\n {{^boolean}}WAY{{/boolean}}\\n\"\n    expected: \" NO\\n WAY\\n\"\n\n  - name: Standalone Lines\n    desc: Standalone lines should be removed from the template.\n    data: { boolean: false }\n    template: |\n      | This Is\n      {{^boolean}}\n      |\n      {{/boolean}}\n      | A Line\n    expected: |\n      | This Is\n      |\n      | A Line\n\n  - name: Standalone Indented Lines\n    desc: Standalone indented lines should be removed from the template.\n    data: { boolean: false }\n    template: |\n      | This Is\n        {{^boolean}}\n      |\n        {{/boolean}}\n      | A Line\n    expected: |\n      | This Is\n      |\n      | A Line\n\n  - name: Standalone Line Endings\n    desc: '\"\\r\\n\" should be considered a newline for standalone tags.'\n    data: { boolean: false }\n    template: \"|\\r\\n{{^boolean}}\\r\\n{{/boolean}}\\r\\n|\"\n    expected: \"|\\r\\n|\"\n\n  - name: Standalone Without Previous Line\n    desc: Standalone tags should not require a newline to precede them.\n    data: { boolean: false }\n    template: \"  {{^boolean}}\\n^{{/boolean}}\\n/\"\n    expected: \"^\\n/\"\n\n  - name: Standalone Without Newline\n    desc: Standalone tags should not require a newline to follow them.\n    data: { boolean: false }\n    template: \"^{{^boolean}}\\n/\\n  {{/boolean}}\"\n    expected: \"^\\n/\\n\"\n\n  # Whitespace Insensitivity\n\n  - name: Padding\n    desc: Superfluous in-tag whitespace should be ignored.\n    data: { boolean: false }\n    template: '|{{^ boolean }}={{/ boolean }}|'\n    expected: '|=|'\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/partials.json",
    "content": "{\"__ATTN__\":\"Do not edit this file; changes belong in the appropriate YAML file.\",\"overview\":\"Partial tags are used to expand an external template into the current\\ntemplate.\\n\\nThe tag's content MUST be a non-whitespace character sequence NOT containing\\nthe current closing delimiter.\\n\\nThis tag's content names the partial to inject.  Set Delimiter tags MUST NOT\\naffect the parsing of a partial.  The partial MUST be rendered against the\\ncontext stack local to the tag.  If the named partial cannot be found, the\\nempty string SHOULD be used instead, as in interpolations.\\n\\nPartial tags SHOULD be treated as standalone when appropriate.  If this tag\\nis used standalone, any whitespace preceding the tag should treated as\\nindentation, and prepended to each line of the partial before rendering.\\n\",\"tests\":[{\"name\":\"Basic Behavior\",\"data\":{},\"expected\":\"\\\"from partial\\\"\",\"template\":\"\\\"{{>text}}\\\"\",\"desc\":\"The greater-than operator should expand to the named partial.\",\"partials\":{\"text\":\"from partial\"}},{\"name\":\"Failed Lookup\",\"data\":{},\"expected\":\"\\\"\\\"\",\"template\":\"\\\"{{>text}}\\\"\",\"desc\":\"The empty string should be used when the named partial is not found.\",\"partials\":{}},{\"name\":\"Context\",\"data\":{\"text\":\"content\"},\"expected\":\"\\\"*content*\\\"\",\"template\":\"\\\"{{>partial}}\\\"\",\"desc\":\"The greater-than operator should operate within the current context.\",\"partials\":{\"partial\":\"*{{text}}*\"}},{\"name\":\"Recursion\",\"data\":{\"content\":\"X\",\"nodes\":[{\"content\":\"Y\",\"nodes\":[]}]},\"expected\":\"X<Y<>>\",\"template\":\"{{>node}}\",\"desc\":\"The greater-than operator should properly recurse.\",\"partials\":{\"node\":\"{{content}}<{{#nodes}}{{>node}}{{/nodes}}>\"}},{\"name\":\"Surrounding Whitespace\",\"data\":{},\"expected\":\"| \\t|\\t |\",\"template\":\"| {{>partial}} |\",\"desc\":\"The greater-than operator should not alter surrounding whitespace.\",\"partials\":{\"partial\":\"\\t|\\t\"}},{\"name\":\"Inline Indentation\",\"data\":{\"data\":\"|\"},\"expected\":\"  |  >\\n>\\n\",\"template\":\"  {{data}}  {{> partial}}\\n\",\"desc\":\"Whitespace should be left untouched.\",\"partials\":{\"partial\":\">\\n>\"}},{\"name\":\"Standalone Line Endings\",\"data\":{},\"expected\":\"|\\r\\n>|\",\"template\":\"|\\r\\n{{>partial}}\\r\\n|\",\"desc\":\"\\\"\\\\r\\\\n\\\" should be considered a newline for standalone tags.\",\"partials\":{\"partial\":\">\"}},{\"name\":\"Standalone Without Previous Line\",\"data\":{},\"expected\":\"  >\\n  >>\",\"template\":\"  {{>partial}}\\n>\",\"desc\":\"Standalone tags should not require a newline to precede them.\",\"partials\":{\"partial\":\">\\n>\"}},{\"name\":\"Standalone Without Newline\",\"data\":{},\"expected\":\">\\n  >\\n  >\",\"template\":\">\\n  {{>partial}}\",\"desc\":\"Standalone tags should not require a newline to follow them.\",\"partials\":{\"partial\":\">\\n>\"}},{\"name\":\"Standalone Indentation\",\"data\":{\"content\":\"<\\n->\"},\"expected\":\"\\\\\\n |\\n <\\n->\\n |\\n/\\n\",\"template\":\"\\\\\\n {{>partial}}\\n/\\n\",\"desc\":\"Each line of the partial should be indented before rendering.\",\"partials\":{\"partial\":\"|\\n{{{content}}}\\n|\\n\"}},{\"name\":\"Padding Whitespace\",\"data\":{\"boolean\":true},\"expected\":\"|[]|\",\"template\":\"|{{> partial }}|\",\"desc\":\"Superfluous in-tag whitespace should be ignored.\",\"partials\":{\"partial\":\"[]\"}}]}"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/partials.yml",
    "content": "overview: |\n  Partial tags are used to expand an external template into the current\n  template.\n\n  The tag's content MUST be a non-whitespace character sequence NOT containing\n  the current closing delimiter.\n\n  This tag's content names the partial to inject.  Set Delimiter tags MUST NOT\n  affect the parsing of a partial.  The partial MUST be rendered against the\n  context stack local to the tag.  If the named partial cannot be found, the\n  empty string SHOULD be used instead, as in interpolations.\n\n  Partial tags SHOULD be treated as standalone when appropriate.  If this tag\n  is used standalone, any whitespace preceding the tag should treated as\n  indentation, and prepended to each line of the partial before rendering.\ntests:\n  - name: Basic Behavior\n    desc: The greater-than operator should expand to the named partial.\n    data: { }\n    template: '\"{{>text}}\"'\n    partials: { text: 'from partial' }\n    expected: '\"from partial\"'\n\n  - name: Failed Lookup\n    desc: The empty string should be used when the named partial is not found.\n    data: { }\n    template: '\"{{>text}}\"'\n    partials: { }\n    expected: '\"\"'\n\n  - name: Context\n    desc: The greater-than operator should operate within the current context.\n    data: { text: 'content' }\n    template: '\"{{>partial}}\"'\n    partials: { partial: '*{{text}}*' }\n    expected: '\"*content*\"'\n\n  - name: Recursion\n    desc: The greater-than operator should properly recurse.\n    data: { content: \"X\", nodes: [ { content: \"Y\", nodes: [] } ] }\n    template: '{{>node}}'\n    partials: { node: '{{content}}<{{#nodes}}{{>node}}{{/nodes}}>' }\n    expected: 'X<Y<>>'\n\n  # Whitespace Sensitivity\n\n  - name: Surrounding Whitespace\n    desc: The greater-than operator should not alter surrounding whitespace.\n    data: { }\n    template: '| {{>partial}} |'\n    partials: { partial: \"\\t|\\t\" }\n    expected: \"| \\t|\\t |\"\n\n  - name: Inline Indentation\n    desc: Whitespace should be left untouched.\n    data: { data: '|' }\n    template: \"  {{data}}  {{> partial}}\\n\"\n    partials: { partial: \">\\n>\" }\n    expected: \"  |  >\\n>\\n\"\n\n  - name: Standalone Line Endings\n    desc: '\"\\r\\n\" should be considered a newline for standalone tags.'\n    data: { }\n    template: \"|\\r\\n{{>partial}}\\r\\n|\"\n    partials: { partial: \">\" }\n    expected: \"|\\r\\n>|\"\n\n  - name: Standalone Without Previous Line\n    desc: Standalone tags should not require a newline to precede them.\n    data: { }\n    template: \"  {{>partial}}\\n>\"\n    partials: { partial: \">\\n>\"}\n    expected: \"  >\\n  >>\"\n\n  - name: Standalone Without Newline\n    desc: Standalone tags should not require a newline to follow them.\n    data: { }\n    template: \">\\n  {{>partial}}\"\n    partials: { partial: \">\\n>\" }\n    expected: \">\\n  >\\n  >\"\n\n  - name: Standalone Indentation\n    desc: Each line of the partial should be indented before rendering.\n    data: { content: \"<\\n->\" }\n    template: |\n      \\\n       {{>partial}}\n      /\n    partials:\n      partial: |\n        |\n        {{{content}}}\n        |\n    expected: |\n      \\\n       |\n       <\n      ->\n       |\n      /\n\n  # Whitespace Insensitivity\n\n  - name: Padding Whitespace\n    desc: Superfluous in-tag whitespace should be ignored.\n    data: { boolean: true }\n    template: \"|{{> partial }}|\"\n    partials: { partial: \"[]\" }\n    expected: '|[]|'\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/sections.json",
    "content": "{\"__ATTN__\":\"Do not edit this file; changes belong in the appropriate YAML file.\",\"overview\":\"Section tags and End Section tags are used in combination to wrap a section\\nof the template for iteration\\n\\nThese tags' content MUST be a non-whitespace character sequence NOT\\ncontaining the current closing delimiter; each Section tag MUST be followed\\nby an End Section tag with the same content within the same section.\\n\\nThis tag's content names the data to replace the tag.  Name resolution is as\\nfollows:\\n  1) Split the name on periods; the first part is the name to resolve, any\\n  remaining parts should be retained.\\n  2) Walk the context stack from top to bottom, finding the first context\\n  that is a) a hash containing the name as a key OR b) an object responding\\n  to a method with the given name.\\n  3) If the context is a hash, the data is the value associated with the\\n  name.\\n  4) If the context is an object and the method with the given name has an\\n  arity of 1, the method SHOULD be called with a String containing the\\n  unprocessed contents of the sections; the data is the value returned.\\n  5) Otherwise, the data is the value returned by calling the method with\\n  the given name.\\n  6) If any name parts were retained in step 1, each should be resolved\\n  against a context stack containing only the result from the former\\n  resolution.  If any part fails resolution, the result should be considered\\n  falsey, and should interpolate as the empty string.\\nIf the data is not of a list type, it is coerced into a list as follows: if\\nthe data is truthy (e.g. `!!data == true`), use a single-element list\\ncontaining the data, otherwise use an empty list.\\n\\nFor each element in the data list, the element MUST be pushed onto the\\ncontext stack, the section MUST be rendered, and the element MUST be popped\\noff the context stack.\\n\\nSection and End Section tags SHOULD be treated as standalone when\\nappropriate.\\n\",\"tests\":[{\"name\":\"Truthy\",\"data\":{\"boolean\":true},\"expected\":\"\\\"This should be rendered.\\\"\",\"template\":\"\\\"{{#boolean}}This should be rendered.{{/boolean}}\\\"\",\"desc\":\"Truthy sections should have their contents rendered.\"},{\"name\":\"Falsey\",\"data\":{\"boolean\":false},\"expected\":\"\\\"\\\"\",\"template\":\"\\\"{{#boolean}}This should not be rendered.{{/boolean}}\\\"\",\"desc\":\"Falsey sections should have their contents omitted.\"},{\"name\":\"Context\",\"data\":{\"context\":{\"name\":\"Joe\"}},\"expected\":\"\\\"Hi Joe.\\\"\",\"template\":\"\\\"{{#context}}Hi {{name}}.{{/context}}\\\"\",\"desc\":\"Objects and hashes should be pushed onto the context stack.\"},{\"name\":\"Deeply Nested Contexts\",\"data\":{\"a\":{\"one\":1},\"b\":{\"two\":2},\"c\":{\"three\":3},\"d\":{\"four\":4},\"e\":{\"five\":5}},\"expected\":\"1\\n121\\n12321\\n1234321\\n123454321\\n1234321\\n12321\\n121\\n1\\n\",\"template\":\"{{#a}}\\n{{one}}\\n{{#b}}\\n{{one}}{{two}}{{one}}\\n{{#c}}\\n{{one}}{{two}}{{three}}{{two}}{{one}}\\n{{#d}}\\n{{one}}{{two}}{{three}}{{four}}{{three}}{{two}}{{one}}\\n{{#e}}\\n{{one}}{{two}}{{three}}{{four}}{{five}}{{four}}{{three}}{{two}}{{one}}\\n{{/e}}\\n{{one}}{{two}}{{three}}{{four}}{{three}}{{two}}{{one}}\\n{{/d}}\\n{{one}}{{two}}{{three}}{{two}}{{one}}\\n{{/c}}\\n{{one}}{{two}}{{one}}\\n{{/b}}\\n{{one}}\\n{{/a}}\\n\",\"desc\":\"All elements on the context stack should be accessible.\"},{\"name\":\"List\",\"data\":{\"list\":[{\"item\":1},{\"item\":2},{\"item\":3}]},\"expected\":\"\\\"123\\\"\",\"template\":\"\\\"{{#list}}{{item}}{{/list}}\\\"\",\"desc\":\"Lists should be iterated; list items should visit the context stack.\"},{\"name\":\"Empty List\",\"data\":{\"list\":[]},\"expected\":\"\\\"\\\"\",\"template\":\"\\\"{{#list}}Yay lists!{{/list}}\\\"\",\"desc\":\"Empty lists should behave like falsey values.\"},{\"name\":\"Doubled\",\"data\":{\"two\":\"second\",\"bool\":true},\"expected\":\"* first\\n* second\\n* third\\n\",\"template\":\"{{#bool}}\\n* first\\n{{/bool}}\\n* {{two}}\\n{{#bool}}\\n* third\\n{{/bool}}\\n\",\"desc\":\"Multiple sections per template should be permitted.\"},{\"name\":\"Nested (Truthy)\",\"data\":{\"bool\":true},\"expected\":\"| A B C D E |\",\"template\":\"| A {{#bool}}B {{#bool}}C{{/bool}} D{{/bool}} E |\",\"desc\":\"Nested truthy sections should have their contents rendered.\"},{\"name\":\"Nested (Falsey)\",\"data\":{\"bool\":false},\"expected\":\"| A  E |\",\"template\":\"| A {{#bool}}B {{#bool}}C{{/bool}} D{{/bool}} E |\",\"desc\":\"Nested falsey sections should be omitted.\"},{\"name\":\"Context Misses\",\"data\":{},\"expected\":\"[]\",\"template\":\"[{{#missing}}Found key 'missing'!{{/missing}}]\",\"desc\":\"Failed context lookups should be considered falsey.\"},{\"name\":\"Implicit Iterator - String\",\"data\":{\"list\":[\"a\",\"b\",\"c\",\"d\",\"e\"]},\"expected\":\"\\\"(a)(b)(c)(d)(e)\\\"\",\"template\":\"\\\"{{#list}}({{.}}){{/list}}\\\"\",\"desc\":\"Implicit iterators should directly interpolate strings.\"},{\"name\":\"Implicit Iterator - Integer\",\"data\":{\"list\":[1,2,3,4,5]},\"expected\":\"\\\"(1)(2)(3)(4)(5)\\\"\",\"template\":\"\\\"{{#list}}({{.}}){{/list}}\\\"\",\"desc\":\"Implicit iterators should cast integers to strings and interpolate.\"},{\"name\":\"Implicit Iterator - Decimal\",\"data\":{\"list\":[1.1,2.2,3.3,4.4,5.5]},\"expected\":\"\\\"(1.1)(2.2)(3.3)(4.4)(5.5)\\\"\",\"template\":\"\\\"{{#list}}({{.}}){{/list}}\\\"\",\"desc\":\"Implicit iterators should cast decimals to strings and interpolate.\"},{\"name\":\"Dotted Names - Truthy\",\"data\":{\"a\":{\"b\":{\"c\":true}}},\"expected\":\"\\\"Here\\\" == \\\"Here\\\"\",\"template\":\"\\\"{{#a.b.c}}Here{{/a.b.c}}\\\" == \\\"Here\\\"\",\"desc\":\"Dotted names should be valid for Section tags.\"},{\"name\":\"Dotted Names - Falsey\",\"data\":{\"a\":{\"b\":{\"c\":false}}},\"expected\":\"\\\"\\\" == \\\"\\\"\",\"template\":\"\\\"{{#a.b.c}}Here{{/a.b.c}}\\\" == \\\"\\\"\",\"desc\":\"Dotted names should be valid for Section tags.\"},{\"name\":\"Dotted Names - Broken Chains\",\"data\":{\"a\":{}},\"expected\":\"\\\"\\\" == \\\"\\\"\",\"template\":\"\\\"{{#a.b.c}}Here{{/a.b.c}}\\\" == \\\"\\\"\",\"desc\":\"Dotted names that cannot be resolved should be considered falsey.\"},{\"name\":\"Surrounding Whitespace\",\"data\":{\"boolean\":true},\"expected\":\" | \\t|\\t | \\n\",\"template\":\" | {{#boolean}}\\t|\\t{{/boolean}} | \\n\",\"desc\":\"Sections should not alter surrounding whitespace.\"},{\"name\":\"Internal Whitespace\",\"data\":{\"boolean\":true},\"expected\":\" |  \\n  | \\n\",\"template\":\" | {{#boolean}} {{! Important Whitespace }}\\n {{/boolean}} | \\n\",\"desc\":\"Sections should not alter internal whitespace.\"},{\"name\":\"Indented Inline Sections\",\"data\":{\"boolean\":true},\"expected\":\" YES\\n GOOD\\n\",\"template\":\" {{#boolean}}YES{{/boolean}}\\n {{#boolean}}GOOD{{/boolean}}\\n\",\"desc\":\"Single-line sections should not alter surrounding whitespace.\"},{\"name\":\"Standalone Lines\",\"data\":{\"boolean\":true},\"expected\":\"| This Is\\n|\\n| A Line\\n\",\"template\":\"| This Is\\n{{#boolean}}\\n|\\n{{/boolean}}\\n| A Line\\n\",\"desc\":\"Standalone lines should be removed from the template.\"},{\"name\":\"Indented Standalone Lines\",\"data\":{\"boolean\":true},\"expected\":\"| This Is\\n|\\n| A Line\\n\",\"template\":\"| This Is\\n  {{#boolean}}\\n|\\n  {{/boolean}}\\n| A Line\\n\",\"desc\":\"Indented standalone lines should be removed from the template.\"},{\"name\":\"Standalone Line Endings\",\"data\":{\"boolean\":true},\"expected\":\"|\\r\\n|\",\"template\":\"|\\r\\n{{#boolean}}\\r\\n{{/boolean}}\\r\\n|\",\"desc\":\"\\\"\\\\r\\\\n\\\" should be considered a newline for standalone tags.\"},{\"name\":\"Standalone Without Previous Line\",\"data\":{\"boolean\":true},\"expected\":\"#\\n/\",\"template\":\"  {{#boolean}}\\n#{{/boolean}}\\n/\",\"desc\":\"Standalone tags should not require a newline to precede them.\"},{\"name\":\"Standalone Without Newline\",\"data\":{\"boolean\":true},\"expected\":\"#\\n/\\n\",\"template\":\"#{{#boolean}}\\n/\\n  {{/boolean}}\",\"desc\":\"Standalone tags should not require a newline to follow them.\"},{\"name\":\"Padding\",\"data\":{\"boolean\":true},\"expected\":\"|=|\",\"template\":\"|{{# boolean }}={{/ boolean }}|\",\"desc\":\"Superfluous in-tag whitespace should be ignored.\"}]}"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/specs/sections.yml",
    "content": "overview: |\n  Section tags and End Section tags are used in combination to wrap a section\n  of the template for iteration\n\n  These tags' content MUST be a non-whitespace character sequence NOT\n  containing the current closing delimiter; each Section tag MUST be followed\n  by an End Section tag with the same content within the same section.\n\n  This tag's content names the data to replace the tag.  Name resolution is as\n  follows:\n    1) Split the name on periods; the first part is the name to resolve, any\n    remaining parts should be retained.\n    2) Walk the context stack from top to bottom, finding the first context\n    that is a) a hash containing the name as a key OR b) an object responding\n    to a method with the given name.\n    3) If the context is a hash, the data is the value associated with the\n    name.\n    4) If the context is an object and the method with the given name has an\n    arity of 1, the method SHOULD be called with a String containing the\n    unprocessed contents of the sections; the data is the value returned.\n    5) Otherwise, the data is the value returned by calling the method with\n    the given name.\n    6) If any name parts were retained in step 1, each should be resolved\n    against a context stack containing only the result from the former\n    resolution.  If any part fails resolution, the result should be considered\n    falsey, and should interpolate as the empty string.\n  If the data is not of a list type, it is coerced into a list as follows: if\n  the data is truthy (e.g. `!!data == true`), use a single-element list\n  containing the data, otherwise use an empty list.\n\n  For each element in the data list, the element MUST be pushed onto the\n  context stack, the section MUST be rendered, and the element MUST be popped\n  off the context stack.\n\n  Section and End Section tags SHOULD be treated as standalone when\n  appropriate.\ntests:\n  - name: Truthy\n    desc: Truthy sections should have their contents rendered.\n    data: { boolean: true }\n    template: '\"{{#boolean}}This should be rendered.{{/boolean}}\"'\n    expected: '\"This should be rendered.\"'\n\n  - name: Falsey\n    desc: Falsey sections should have their contents omitted.\n    data: { boolean: false }\n    template: '\"{{#boolean}}This should not be rendered.{{/boolean}}\"'\n    expected: '\"\"'\n\n  - name: Context\n    desc: Objects and hashes should be pushed onto the context stack.\n    data: { context: { name: 'Joe' } }\n    template: '\"{{#context}}Hi {{name}}.{{/context}}\"'\n    expected: '\"Hi Joe.\"'\n\n  - name: Deeply Nested Contexts\n    desc: All elements on the context stack should be accessible.\n    data:\n      a: { one: 1 }\n      b: { two: 2 }\n      c: { three: 3 }\n      d: { four: 4 }\n      e: { five: 5 }\n    template: |\n      {{#a}}\n      {{one}}\n      {{#b}}\n      {{one}}{{two}}{{one}}\n      {{#c}}\n      {{one}}{{two}}{{three}}{{two}}{{one}}\n      {{#d}}\n      {{one}}{{two}}{{three}}{{four}}{{three}}{{two}}{{one}}\n      {{#e}}\n      {{one}}{{two}}{{three}}{{four}}{{five}}{{four}}{{three}}{{two}}{{one}}\n      {{/e}}\n      {{one}}{{two}}{{three}}{{four}}{{three}}{{two}}{{one}}\n      {{/d}}\n      {{one}}{{two}}{{three}}{{two}}{{one}}\n      {{/c}}\n      {{one}}{{two}}{{one}}\n      {{/b}}\n      {{one}}\n      {{/a}}\n    expected: |\n      1\n      121\n      12321\n      1234321\n      123454321\n      1234321\n      12321\n      121\n      1\n\n  - name: List\n    desc: Lists should be iterated; list items should visit the context stack.\n    data: { list: [ { item: 1 }, { item: 2 }, { item: 3 } ] }\n    template: '\"{{#list}}{{item}}{{/list}}\"'\n    expected: '\"123\"'\n\n  - name: Empty List\n    desc: Empty lists should behave like falsey values.\n    data: { list: [ ] }\n    template: '\"{{#list}}Yay lists!{{/list}}\"'\n    expected: '\"\"'\n\n  - name: Doubled\n    desc: Multiple sections per template should be permitted.\n    data: { bool: true, two: 'second' }\n    template: |\n      {{#bool}}\n      * first\n      {{/bool}}\n      * {{two}}\n      {{#bool}}\n      * third\n      {{/bool}}\n    expected: |\n      * first\n      * second\n      * third\n\n  - name: Nested (Truthy)\n    desc: Nested truthy sections should have their contents rendered.\n    data: { bool: true }\n    template: \"| A {{#bool}}B {{#bool}}C{{/bool}} D{{/bool}} E |\"\n    expected: \"| A B C D E |\"\n\n  - name: Nested (Falsey)\n    desc: Nested falsey sections should be omitted.\n    data: { bool: false }\n    template: \"| A {{#bool}}B {{#bool}}C{{/bool}} D{{/bool}} E |\"\n    expected: \"| A  E |\"\n\n  - name: Context Misses\n    desc: Failed context lookups should be considered falsey.\n    data: { }\n    template: \"[{{#missing}}Found key 'missing'!{{/missing}}]\"\n    expected: \"[]\"\n\n  # Implicit Iterators\n\n  - name: Implicit Iterator - String\n    desc: Implicit iterators should directly interpolate strings.\n    data:\n      list: [ 'a', 'b', 'c', 'd', 'e' ]\n    template: '\"{{#list}}({{.}}){{/list}}\"'\n    expected: '\"(a)(b)(c)(d)(e)\"'\n\n  - name: Implicit Iterator - Integer\n    desc: Implicit iterators should cast integers to strings and interpolate.\n    data:\n      list: [ 1, 2, 3, 4, 5 ]\n    template: '\"{{#list}}({{.}}){{/list}}\"'\n    expected: '\"(1)(2)(3)(4)(5)\"'\n\n  - name: Implicit Iterator - Decimal\n    desc: Implicit iterators should cast decimals to strings and interpolate.\n    data:\n      list: [ 1.10, 2.20, 3.30, 4.40, 5.50 ]\n    template: '\"{{#list}}({{.}}){{/list}}\"'\n    expected: '\"(1.1)(2.2)(3.3)(4.4)(5.5)\"'\n\n  # Dotted Names\n\n  - name: Dotted Names - Truthy\n    desc: Dotted names should be valid for Section tags.\n    data: { a: { b: { c: true } } }\n    template: '\"{{#a.b.c}}Here{{/a.b.c}}\" == \"Here\"'\n    expected: '\"Here\" == \"Here\"'\n\n  - name: Dotted Names - Falsey\n    desc: Dotted names should be valid for Section tags.\n    data: { a: { b: { c: false } } }\n    template: '\"{{#a.b.c}}Here{{/a.b.c}}\" == \"\"'\n    expected: '\"\" == \"\"'\n\n  - name: Dotted Names - Broken Chains\n    desc: Dotted names that cannot be resolved should be considered falsey.\n    data: { a: { } }\n    template: '\"{{#a.b.c}}Here{{/a.b.c}}\" == \"\"'\n    expected: '\"\" == \"\"'\n\n  # Whitespace Sensitivity\n\n  - name: Surrounding Whitespace\n    desc: Sections should not alter surrounding whitespace.\n    data: { boolean: true }\n    template: \" | {{#boolean}}\\t|\\t{{/boolean}} | \\n\"\n    expected: \" | \\t|\\t | \\n\"\n\n  - name: Internal Whitespace\n    desc: Sections should not alter internal whitespace.\n    data: { boolean: true }\n    template: \" | {{#boolean}} {{! Important Whitespace }}\\n {{/boolean}} | \\n\"\n    expected: \" |  \\n  | \\n\"\n\n  - name: Indented Inline Sections\n    desc: Single-line sections should not alter surrounding whitespace.\n    data: { boolean: true }\n    template: \" {{#boolean}}YES{{/boolean}}\\n {{#boolean}}GOOD{{/boolean}}\\n\"\n    expected: \" YES\\n GOOD\\n\"\n\n  - name: Standalone Lines\n    desc: Standalone lines should be removed from the template.\n    data: { boolean: true }\n    template: |\n      | This Is\n      {{#boolean}}\n      |\n      {{/boolean}}\n      | A Line\n    expected: |\n      | This Is\n      |\n      | A Line\n\n  - name: Indented Standalone Lines\n    desc: Indented standalone lines should be removed from the template.\n    data: { boolean: true }\n    template: |\n      | This Is\n        {{#boolean}}\n      |\n        {{/boolean}}\n      | A Line\n    expected: |\n      | This Is\n      |\n      | A Line\n\n  - name: Standalone Line Endings\n    desc: '\"\\r\\n\" should be considered a newline for standalone tags.'\n    data: { boolean: true }\n    template: \"|\\r\\n{{#boolean}}\\r\\n{{/boolean}}\\r\\n|\"\n    expected: \"|\\r\\n|\"\n\n  - name: Standalone Without Previous Line\n    desc: Standalone tags should not require a newline to precede them.\n    data: { boolean: true }\n    template: \"  {{#boolean}}\\n#{{/boolean}}\\n/\"\n    expected: \"#\\n/\"\n\n  - name: Standalone Without Newline\n    desc: Standalone tags should not require a newline to follow them.\n    data: { boolean: true }\n    template: \"#{{#boolean}}\\n/\\n  {{/boolean}}\"\n    expected: \"#\\n/\\n\"\n\n  # Whitespace Insensitivity\n\n  - name: Padding\n    desc: Superfluous in-tag whitespace should be ignored.\n    data: { boolean: true }\n    template: '|{{# boolean }}={{/ boolean }}|'\n    expected: '|=|'\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/test_mustache.cpp",
    "content": "/*\n  Copyright 2012, Robert Knight\n\n  Redistribution and use in source and binary forms, with or without modification,\n  are permitted provided that the following conditions are met:\n\n    Redistributions of source code must retain the above copyright notice,\n    this list of conditions and the following disclaimer.\n\n    Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n    and/or other materials provided with the distribution.\n*/\n\n#include \"test_mustache.h\"\n\n#include <QDir>\n#include <QFile>\n#include <QHash>\n#include <QString>\n\n#if QT_VERSION >= 0x050000\n    #include <QJsonDocument>\n    #include <QJsonObject>\n    #include <QJsonArray>\n#endif // QT_VERSION >= 0x050000\n\n// To be able to use QHash<QString, QString> in QFETCH(..).\ntypedef QHash<QString, QString> PartialsHash;\nQ_DECLARE_METATYPE(PartialsHash)\n\nvoid TestMustache::testValues()\n{\n\tQVariantHash map;\n\tmap[\"name\"] = \"John Smith\";\n\tmap[\"age\"] = 42;\n\tmap[\"sex\"] = \"Male\";\n\tmap[\"company\"] = \"Smith & Co\";\n\tmap[\"signature\"] = \"John Smith of <b>Smith & Co</b>\";\n\tmap[\"alive\"] = false;\n\n\tQString _template = \"Name: {{name}}, Age: {{age}}, Sex: {{sex}}, Alive: {{alive}}\\n\"\n\t                    \"Company: {{company}}\\n\"\n\t                    \"  {{{signature}}}\"\n\t                    \"{{missing-key}}\";\n\tQString expectedOutput = \"Name: John Smith, Age: 42, Sex: Male, Alive: false\\n\"\n\t                         \"Company: Smith &amp; Co\\n\"\n\t                         \"  John Smith of <b>Smith & Co</b>\";\n\n\tMustache::Renderer renderer;\n\tMustache::QtVariantContext context(map);\n\tQString output = renderer.render(_template, &context);\n\n\tQCOMPARE(output, expectedOutput);\n}\n\nQVariantHash contactInfo(const QString& name, const QString& email)\n{\n\tQVariantHash map;\n\tmap[\"name\"] = name;\n\tmap[\"email\"] = email;\n\treturn map;\n}\n\nvoid TestMustache::testSections()\n{\n\tQVariantHash map = contactInfo(\"John Smith\", \"john.smith@gmail.com\");\n\tQVariantList contacts;\n\tcontacts << contactInfo(\"James Dee\", \"james@dee.org\");\n\tcontacts << contactInfo(\"Jim Jones\", \"jim-jones@yahoo.com\");\n\tmap[\"contacts\"] = contacts;\n\n\tQString _template = \"Name: {{name}}, Email: {{email}}\\n\"\n\t                    \"{{#contacts}}  {{name}} - {{email}}\\n{{/contacts}}\"\n\t                    \"{{^contacts}}  No contacts{{/contacts}}\";\n\n\tQString expectedOutput = \"Name: John Smith, Email: john.smith@gmail.com\\n\"\n\t                         \"  James Dee - james@dee.org\\n\"\n\t                         \"  Jim Jones - jim-jones@yahoo.com\\n\";\n\n\tMustache::Renderer renderer;\n\tMustache::QtVariantContext context(map);\n\tQString output = renderer.render(_template, &context);\n\n\tQCOMPARE(output, expectedOutput);\n\n\t// test inverted sections\n\tmap.remove(\"contacts\");\n\tcontext = Mustache::QtVariantContext(map);\n\toutput = renderer.render(_template, &context);\n\n\texpectedOutput = \"Name: John Smith, Email: john.smith@gmail.com\\n\"\n\t                 \"  No contacts\";\n\tQCOMPARE(output, expectedOutput);\n\n\t// test with an empty list instead of an empty key\n\tmap[\"contacts\"] = QVariantHash();\n\tcontext = Mustache::QtVariantContext(map);\n\toutput = renderer.render(_template, &context);\n\tQCOMPARE(output, expectedOutput);\n}\n\nvoid TestMustache::testFalsiness()\n{\n\tMustache::Renderer renderer;\n\tQVariantHash data;\n\tQString _template = \"{{#bool}}This should not be shown{{/bool}}\";\n\n\t// test falsiness of 0\n\tdata[\"bool\"] = 0;\n\tMustache::QtVariantContext context = Mustache::QtVariantContext(data);\n\tQString output = renderer.render(_template, &context);\n\tQVERIFY2(output.isEmpty(), \"0 evaluated as truthy\");\n\n\t// test falsiness of 0u\n\tdata[\"bool\"] = 0u;\n\tcontext = Mustache::QtVariantContext(data);\n\toutput = renderer.render(_template, &context);\n\tQVERIFY2(output.isEmpty(), \"0u evaluated as truthy\");\n\n\t// test falsiness of 0ll\n\tdata[\"bool\"] = 0ll;\n\tcontext = Mustache::QtVariantContext(data);\n\toutput = renderer.render(_template, &context);\n\tQVERIFY2(output.isEmpty(), \"0ll evaluated as truthy\");\n\n\t// test falsiness of 0ull\n\tdata[\"bool\"] = 0ull;\n\tcontext = Mustache::QtVariantContext(data);\n\toutput = renderer.render(_template, &context);\n\tQVERIFY2(output.isEmpty(), \"0ull evaluated as truthy\");\n\n\t// test falsiness of 0.0\n\tdata[\"bool\"] = 0.0;\n\tcontext = Mustache::QtVariantContext(data);\n\toutput = renderer.render(_template, &context);\n\tQVERIFY2(output.isEmpty(), \"0.0 evaluated as truthy\");\n\n\t// test falsiness of 0.0f\n\tdata[\"bool\"] = 0.0f;\n\tcontext = Mustache::QtVariantContext(data);\n\toutput = renderer.render(_template, &context);\n\tQVERIFY2(output.isEmpty(), \"0.0f evaluated as truthy\");\n\n\t// test falsiness of '\\0'\n\tdata[\"bool\"] = '\\0';\n\tcontext = Mustache::QtVariantContext(data);\n\toutput = renderer.render(_template, &context);\n\tQVERIFY2(output.isEmpty(), \"'\\0' evaluated as truthy\");\n\n\t// test falsiness of 'false'\n\tdata[\"bool\"] = false;\n\tcontext = Mustache::QtVariantContext(data);\n\toutput = renderer.render(_template, &context);\n\tQVERIFY2(output.isEmpty(), \"'\\0' evaluated as truthy\");\n}\n\nvoid TestMustache::testContextLookup()\n{\n\tQVariantHash fileMap;\n\tfileMap[\"dir\"] = \"/home/robert\";\n\tfileMap[\"name\"] = \"robert\";\n\n\tQVariantList files;\n\tQVariantHash file;\n\tfile[\"name\"] = \"test.pdf\";\n\tfiles << file;\n\n\tfileMap[\"files\"] = files;\n\n\tQString _template = \"{{#files}}{{dir}}/{{name}}{{/files}}\";\n\n\tMustache::Renderer renderer;\n\tMustache::QtVariantContext context(fileMap);\n\tQString output = renderer.render(_template, &context);\n\n\tQCOMPARE(output, QString(\"/home/robert/test.pdf\"));\n}\n\nvoid TestMustache::testPartials()\n{\n\tQHash<QString, QString> partials;\n\tpartials[\"file-info\"] = \"{{name}} {{size}} {{type}}\\n\";\n\n\tQString _template = \"{{#files}}{{>file-info}}{{/files}}\";\n\n\tQVariantHash map;\n\tQVariantList fileList;\n\n\tQVariantHash file1;\n\tfile1[\"name\"] = \"mustache.pdf\";\n\tfile1[\"size\"] = \"200KB\";\n\tfile1[\"type\"] = \"PDF Document\";\n\n\tQVariantHash file2;\n\tfile2[\"name\"] = \"cv.doc\";\n\tfile2[\"size\"] = \"300KB\";\n\tfile2[\"type\"] = \"Microsoft Word Document\";\n\n\tfileList << file1 << file2;\n\tmap[\"files\"] = fileList;\n\n\tMustache::Renderer renderer;\n\tMustache::PartialMap partialMap(partials);\n\tMustache::QtVariantContext context(map, &partialMap);\n\tQString output = renderer.render(_template, &context);\n\n\tQCOMPARE(output,\n\t         QString(\"mustache.pdf 200KB PDF Document\\n\"\n\t                 \"cv.doc 300KB Microsoft Word Document\\n\"));\n}\n\nvoid TestMustache::testSetDelimiters()\n{\n\t// test changing the markers within a template\n\tQVariantHash map;\n\tmap[\"name\"] = \"John Smith\";\n\tmap[\"phone\"] = \"01234 567890\";\n\n\tQString _template =\n\t    \"{{=<% %>=}}\"\n\t    \"<%name%>{{ }}<%phone%>\"\n\t    \"<%={{ }}=%>\"\n\t    \" {{name}}<% %>{{phone}}\";\n\n\tQString expectedOutput = \"John Smith{{ }}01234 567890 John Smith<% %>01234 567890\";\n\n\tMustache::Renderer renderer;\n\tMustache::QtVariantContext context(map);\n\tQString output = renderer.render(_template, &context);\n\n\tQCOMPARE(output, expectedOutput);\n\n\t// test changing the default markers\n\trenderer.setTagMarkers(\"%\", \"%\");\n\toutput = renderer.render(\"%name%'s phone number is %phone%\", &context);\n\tQCOMPARE(output, QString(\"John Smith's phone number is 01234 567890\"));\n\n\trenderer.setTagMarkers(\"{{\", \"}}\");\n\toutput = renderer.render(\"{{== ==}}\", &context);\n\tQCOMPARE(renderer.error(), QString(\"Custom delimiters may not contain '='.\"));\n}\n\nvoid TestMustache::testErrors()\n{\n\tQVariantHash map;\n\tmap[\"name\"] = \"Jim Jones\";\n\n\tQHash<QString, QString> partials;\n\tpartials[\"buggy-partial\"] = \"--{{/one}}--\";\n\n\tQString _template = \"{{name}}\";\n\n\tMustache::Renderer renderer;\n\tMustache::PartialMap partialMap(partials);\n\tMustache::QtVariantContext context(map, &partialMap);\n\tQString output = renderer.render(_template, &context);\n\n\tQCOMPARE(output, QString(\"Jim Jones\"));\n\tQCOMPARE(renderer.error(), QString());\n\tQCOMPARE(renderer.errorPos(), -1);\n\n\t_template = \"{{#one}} {{/two}}\";\n\toutput = renderer.render(_template, &context);\n\tQCOMPARE(renderer.error(), QString(\"Tag start/end key mismatch\"));\n\tQCOMPARE(renderer.errorPos(), 9);\n\tQCOMPARE(renderer.errorPartial(), QString());\n\n\t_template = \"Hello {{>buggy-partial}}\";\n\toutput = renderer.render(_template, &context);\n\tQCOMPARE(renderer.error(), QString(\"Unexpected end tag\"));\n\tQCOMPARE(renderer.errorPos(), 2);\n\tQCOMPARE(renderer.errorPartial(), QString(\"buggy-partial\"));\n}\n\nvoid TestMustache::testPartialFile()\n{\n\tQString path = QCoreApplication::applicationDirPath();\n\n\tQVariantHash map = contactInfo(\"Jim Smith\", \"jim.smith@gmail.com\");\n\n\tQString _template = \"{{>partial}}\";\n\n\tMustache::Renderer renderer;\n\tMustache::PartialFileLoader partialLoader(path);\n\tMustache::QtVariantContext context(map, &partialLoader);\n\tQString output = renderer.render(_template, &context);\n\n\tQCOMPARE(output, QString(\"Jim Smith -- jim.smith@gmail.com\\n\"));\n}\n\nvoid TestMustache::testEscaping()\n{\n\tQVariantHash map;\n\tmap[\"escape\"] = \"<b>foo</b>\";\n\tmap[\"unescape\"] = \"One &amp; Two &quot;quoted&quot;\";\n\tmap[\"raw\"] = \"<b>foo</b>\";\n\n\tQString _template = \"{{escape}} {{&unescape}} {{{raw}}}\";\n\n\tMustache::Renderer renderer;\n\tMustache::QtVariantContext context(map);\n\tQString output = renderer.render(_template, &context);\n\n\tQCOMPARE(output, QString(\"&lt;b&gt;foo&lt;/b&gt; One & Two \\\"quoted\\\" <b>foo</b>\"));\n}\n\nclass CounterContext : public Mustache::QtVariantContext\n{\npublic:\n\tint counter;\n\n\tCounterContext(const QVariantHash& map)\n\t\t: Mustache::QtVariantContext(map)\n\t\t, counter(0)\n\t{}\n\n\tvirtual bool canEval(const QString& key) const {\n\t\treturn key == \"counter\";\n\t}\n\n\tvirtual QString eval(const QString& key, const QString& _template, Mustache::Renderer* renderer) {\n\t\tif (key == \"counter\") {\n\t\t\t++counter;\n\t\t}\n\t\treturn renderer->render(_template, this);\n\t}\n\n\tvirtual QString stringValue(const QString& key) const {\n\t\tif (key == \"count\") {\n\t\t\treturn QString::number(counter);\n\t\t} else {\n\t\t\treturn Mustache::QtVariantContext::stringValue(key);\n\t\t}\n\t}\n};\n\nvoid TestMustache::testEval()\n{\n\tQVariantHash map;\n\tQVariantList list;\n\tlist << contactInfo(\"Rob Knight\", \"robertknight@gmail.com\");\n\tlist << contactInfo(\"Jim Smith\", \"jim.smith@smith.org\");\n\tmap[\"list\"] = list;\n\n\tQString _template = \"{{#list}}{{#counter}}#{{count}} {{name}} {{email}}{{/counter}}\\n{{/list}}\";\n\n\tMustache::Renderer renderer;\n\tCounterContext context(map);\n\tQString output = renderer.render(_template, &context);\n\tQCOMPARE(output, QString(\"#1 Rob Knight robertknight@gmail.com\\n\"\n\t                         \"#2 Jim Smith jim.smith@smith.org\\n\"));\n}\n\nvoid TestMustache::testHelpers()\n{\n\tQVariantHash args;\n\targs.insert(\"name\", \"Jim Smith\");\n\targs.insert(\"age\", 42);\n\n\tQString output = Mustache::renderTemplate(\"Hello {{name}}, you are {{age}}\", args);\n\tQCOMPARE(output, QString(\"Hello Jim Smith, you are 42\"));\n}\n\nvoid TestMustache::testIncompleteTag()\n{\n\tQVariantHash args;\n\targs.insert(\"name\", \"Jim Smith\");\n\n\tQString output = Mustache::renderTemplate(\"Hello {{name}}, you are {\", args);\n\tQCOMPARE(output, QString(\"Hello Jim Smith, you are {\"));\n\n\toutput = Mustache::renderTemplate(\"Hello {{name}}, you are {{\", args);\n\tQCOMPARE(output, QString(\"Hello Jim Smith, you are {{\"));\n\n\toutput = Mustache::renderTemplate(\"Hello {{name}}, you are {{}\", args);\n\tQCOMPARE(output, QString(\"Hello Jim Smith, you are {{}\"));\n}\n\nvoid TestMustache::testIncompleteSection()\n{\n\tQVariantHash args;\n\targs.insert(\"list\", QVariantList() << QVariantHash());\n\n\tMustache::Renderer renderer;\n\tMustache::QtVariantContext context(args);\n\tQString output = renderer.render(\"{{#list}}\", &context);\n\tQCOMPARE(output, QString());\n\tQCOMPARE(renderer.error(), QString(\"No matching end tag found for section\"));\n\n\toutput = renderer.render(\"{{^list}}\", &context);\n\tQCOMPARE(output, QString());\n\tQCOMPARE(renderer.error(), QString(\"No matching end tag found for inverted section\"));\n\n\toutput = renderer.render(\"{{/list}}\", &context);\n\tQCOMPARE(output, QString());\n\tQCOMPARE(renderer.error(), QString(\"Unexpected end tag\"));\n\n\toutput = renderer.render(\"{{#list}}{{/foo}}\", &context);\n\tQCOMPARE(output, QString());\n\tQCOMPARE(renderer.error(), QString(\"Tag start/end key mismatch\"));\n}\n\nstatic QString decorate(const QString& text, Mustache::Renderer* r, Mustache::Context* ctx)\n{\n\treturn \"~\" + r->render(text, ctx) + \"~\";\n}\n\nvoid TestMustache::testLambda()\n{\n\tQVariantHash args;\n\targs[\"text\"] = \"test\";\n\targs[\"fn\"] = QVariant::fromValue(Mustache::QtVariantContext::fn_t(decorate));\n\tQString output = Mustache::renderTemplate(\"{{#fn}}{{text}}{{/fn}}\", args);\n\tQCOMPARE(output, QString(\"~test~\"));\n}\n\nvoid TestMustache::testQStringListIteration()\n{\n\tQStringList list;\n\tlist << \"str1\" << \"str2\" << \"str3\";\n\tQVariantHash args;\n\targs[\"list\"] = list;\n\tQString output = Mustache::renderTemplate(\"{{#list}}{{.}}{{/list}}\", args);\n\tQCOMPARE(output, QString(\"str1str2str3\"));\n}\n\nvoid TestMustache::testUnescapeHtml()\n{\n\tQVariantHash args;\n\targs[\"s\"] = \"&lt;&gt;&amp;&quot;&amp;quot;\";\n\tQString output = Mustache::renderTemplate(\"{{&s}}\", args);\n\tQCOMPARE(output, QString(\"<>&\\\"&quot;\"));\n}\n\n#if QT_VERSION >= 0x050000 // JSON classes only in Qt 5+.\n\nvoid TestMustache::testConformance_data()\n{\n\tQTest::addColumn<QVariantMap>(\"data\");\n\tQTest::addColumn<QString>(\"template_\");\n\tQTest::addColumn<QHash<QString, QString> >(\"partials\");\n\tQTest::addColumn<QString>(\"expected\");\n\n\tQDir specsDir = QDir(\".\");\n\n\tforeach (const QString &fileName, specsDir.entryList(QStringList() << \"*.json\")) {\n\t\tQFile file(specsDir.filePath(fileName));\n\t\tQVERIFY2(file.open(QIODevice::ReadOnly), qPrintable(fileName + \": \" + file.errorString()));\n\n\t\tQJsonDocument document = QJsonDocument::fromJson(file.readAll());\n\t\tQJsonArray testCaseValues = document.object()[\"tests\"].toArray();\n\n\t\tforeach (const QJsonValue &testCaseValue, testCaseValues) {\n\t\t\tQJsonObject testCaseObject = testCaseValue.toObject();\n\n\t\t\tQString name = fileName + \" - \" + testCaseObject[\"name\"].toString();\n\t\t\tQVariantMap data = testCaseObject[\"data\"].toObject().toVariantMap();\n\t\t\tQString template_ = testCaseObject[\"template\"].toString();\n\t\t\tQJsonObject partialsObject = testCaseObject[\"partials\"].toObject();\n\t\t\tPartialsHash partials;\n\t\t\tforeach (const QString &partialName, partialsObject.keys()) {\n\t\t\t\tpartials.insert(partialName, partialsObject[partialName].toString());\n\t\t\t}\n\t\t\tQString expected = testCaseObject[\"expected\"].toString();\n\n\t\t\tQTest::newRow(qPrintable(name)) << data << template_ << partials << expected;\n\t\t}\n\t}\n}\n\n/*\n * This test will run once for each test case defined in version 1.1.2 of the\n * Mustache specification [1].\n *\n * [1] https://github.com/mustache/spec/tree/v1.1.2/specs\n */\nvoid TestMustache::testConformance()\n{\n\tQFETCH(QVariantMap, data);\n\tQFETCH(QString, template_);\n\tQFETCH(PartialsHash, partials);\n\tQFETCH(QString, expected);\n\n\tMustache::Renderer renderer;\n\tMustache::PartialMap partialsMap(partials);\n\tMustache::QtVariantContext context(data, &partialsMap);\n\n\tQString output = renderer.render(template_, &context);\n\n\tQCOMPARE(output, expected);\n}\n\n#endif // QT_VERSION >= 0x050000\n\n// Create a QCoreApplication for the test.  In Qt 5 this can be\n// done with QTEST_GUILESS_MAIN().\nint main(int argc, char** argv)\n{\n\tQCoreApplication app(argc, argv);\n\tTestMustache testObject;\n\treturn QTest::qExec(&testObject, argc, argv);\n}\n\n"
  },
  {
    "path": "3rdpart/qt-mustache-master/tests/test_mustache.h",
    "content": "/*\n  Copyright 2012, Robert Knight\n\n  Redistribution and use in source and binary forms, with or without modification,\n  are permitted provided that the following conditions are met:\n\n    Redistributions of source code must retain the above copyright notice,\n    this list of conditions and the following disclaimer.\n\n    Redistributions in binary form must reproduce the above copyright notice,\n    this list of conditions and the following disclaimer in the documentation\n    and/or other materials provided with the distribution.\n*/\n\n#pragma once\n\n#include \"mustache.h\"\n\n#include <QtTest/QtTest>\n\nclass TestMustache : public QObject\n{\n\tQ_OBJECT\n\nprivate Q_SLOTS:\n\tvoid testContextLookup();\n\tvoid testErrors();\n\tvoid testPartialFile();\n\tvoid testPartials();\n\tvoid testSections();\n\tvoid testFalsiness();\n\tvoid testSetDelimiters();\n\tvoid testValues();\n\tvoid testEscaping();\n\tvoid testEval();\n\tvoid testHelpers();\n\tvoid testIncompleteTag();\n\tvoid testIncompleteSection();\n\tvoid testLambda();\n\tvoid testQStringListIteration();\n\tvoid testUnescapeHtml();\n#if QT_VERSION >= 0x050000\n\tvoid testConformance();\n\tvoid testConformance_data();\n#endif // QT_VERSION >= 0x050000\n};\n\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    {one line to give the program's name and a brief idea of what it does.}\n    Copyright (C) {year}  {name of author}\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    {project}  Copyright (C) {year}  {fullname}\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n"
  },
  {
    "path": "README.md",
    "content": "# Embedded IDE\n\nMakefile based, C/C++ IDE\n\n![Main Screen](docs/screen_0.png)\n\n## Features\n  - Syntax highlighter (C/C++/Makefile)\n  - Autocomplete (requires clang installed on path)\n  - Target autodiscover\n  - Source filter\n  - Project import/export\n  - Console log\n\n## Requirements\n\n  - GNU Make (required)\n  - Qt5\n  - QScintilla2\n  - clang (optional for autocompletion)\n  - diff and patch (optional for import/export project)\n  - universal-ctags (optional for code indexing)\n\n## Installation\n\nTo compile and install IDE you need Qt5 (5.2 or later) and make/gcc (build-essential en Ubuntu and derived)\n\nIn base directory run:\n```bash\nqmake && make\n```\n\nWhen the process is finished, the executable is in `build` directory with the name `embedded-ide` (with EXE extention on windows)\n\nTo install it into the system copy `build/embedded-ide` to directory into the PATH\n\n### Install dependencies\n\nThe full toolset installation (for ubuntu and derivatives) is:\n\n```bash\nsudo apt-get install clang diffutils patch ctags make\n```\n\nAdditionally you need a compiler to work correctly. All gcc based compilers are supported, such as:\n\n  - System gcc/g++ with `sudo apt-get install build-essential`\n  - [ARM Embedded](https://launchpad.net/gcc-arm-embedded)\n  - [RISC-V GNU toolchan](https://riscv.org/software-tools/)\n  - [MIPS32/PIC32 gcc](https://github.com/chipKIT32/chipKIT-compiler-builds/releases)\n  - All gcc based toolchain [from CodeSourcery](https://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/)\n  - All [linaro toolchains](http://www.linaro.org/downloads/)\n  - And much others...\n  - [Cygwin toolchains](https://www.cygwin.com/)\n  - [MinGW/MSYS enviroment](http://www.mingw.org/)\n\n### Adding tools to the PATH\n\nIn order to find utilities, you need to add them to the PATH, but doing it globally is dangerous in certain cases (Example, windows with multiple toolchains with similar names)\n\nAlternatively, the IDE provides an **Additional PATHs** feature to configure the PATH only for IDE and not for the entire system.\n\nGo to **Configure** icon and next go to **Tools** tab.\n\n![](docs/config-tools.png)\n\nInto **Additional PATHs** section you can add multiple directories. The list is append to system PATH at runtime in top-to-bottom order.\n\n## Screenshots\n\n![](docs/screen_1.png)\n![](docs/screen_2.png)\n![](docs/screen_3.png)\n![](docs/screen_4.png)\n"
  },
  {
    "path": "ci/BuildQSCI.mk",
    "content": "BASE=/tmp/qsci\nQSCI_VER=2.11.1\nSOURCE_URL=https://www.riverbankcomputing.com/static/Downloads/QScintilla/${QSCI_VER}/QScintilla_gpl-$(QSCI_VER).tar.gz\nSOURCE_TARGZ=$(notdir $(SOURCE_URL))\nSOURCE_DIR=$(BASE)/QScintilla_gpl-$(QSCI_VER)\nBUILD_DIR=$(SOURCE_DIR)/Qt4Qt5\nBINARY_BUILD=$(BUILD_DIR)/libqscintilla2_qt5.so\n\nall: $(BINARY_BUILD)\n\n$(SOURCE_TARGZ):\n\tcd $(BASE)\n\twget $(SOURCE_URL) -O $@\n\n$(SOURCE_DIR): $(SOURCE_TARGZ)\n\tcd $(BASE)\n\ttar xf $<\n\n$(BINARY_BUILD): $(SOURCE_DIR)\n\tmkdir -p $(BUILD_DIR) && \\\n\tcd $(BUILD_DIR) && \\\n\tqmake && \\\n\tmake -j4 && \\\n\tsudo make install\n"
  },
  {
    "path": "ci/extract-qt-installer",
    "content": "#!/bin/sh\nB=$(dirname $(realpath $0))\nset -x\nset -e\nMAJOR=5\nMINOR=12\nREV=9\n#VER=5124\nVER=${MAJOR}${MINOR}${REV}\nVERSION=${MAJOR}.${MINOR}.${REV}\nPKG=$(cat ${B}/qt${VER}-linux-packages)\n\nmkdir -p /opt/qt/\n(\ncd /opt/qt &&\nwget ${PKG} &&\nfor f in *; do 7z x $f > /dev/null; done &&\ncat <<EOF > ${VERSION}/gcc_64/bin/qt.conf\n[Paths]\nPrefix=..\nEOF\nsed -i -r 's/QT_EDITION = Enterprise/QT_EDITION = OpenSource/' ${VERSION}/gcc_64/mkspecs/qconfig.pri \nsed -i -r 's/QT_LICHECK = lichec.*/QT_LICHECK = /' ${VERSION}/gcc_64/mkspecs/qconfig.pri \n)\n"
  },
  {
    "path": "ci/qt-installer-silent.js",
    "content": "/*\n * Qt Installer script for a non-interactive installation of Qt5 on Windows.\n * Installs the 64-bit package if environment variable PLATFORM=\"x64\".\n */\n\n// jshint strict:false\n/* globals QInstaller, QMessageBox, buttons, gui, installer, console */\n\n// Run with:\n// .\\qt-unified-windows-x86-3.0.4-online.exe --verbose --script tools\\qt-installer-windows.qs\n\n// Look for Name elements in\n// https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/qt5_5120/Updates.xml\n// Unfortunately it is not possible to disable deps like qt.tools.qtcreator\nvar INSTALL_COMPONENTS = [\n    \"qt.qt5.5124.gcc_64\"\n];\n\nfunction Controller() {\n    // Continue on installing to an existing (possibly empty) directory.\n    installer.setMessageBoxAutomaticAnswer(\"OverwriteTargetDirectory\", QMessageBox.Yes);\n    // Continue at \"SHOW FINISHED PAGE\"\n    installer.installationFinished.connect(function() {\n        console.log(\"installationFinished\");\n        gui.clickButton(buttons.NextButton);\n    });\n}\n\nController.prototype.WelcomePageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    // At least for 3.0.4 immediately clicking Next fails, so wait a bit.\n    // https://github.com/benlau/qtci/commit/85cb986b66af4807a928c70e13d82d00dc26ebf0\n    gui.clickButton(buttons.NextButton, 1000);\n};\n\nController.prototype.CredentialsPageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    gui.clickButton(buttons.NextButton);\n};\n\nController.prototype.IntroductionPageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    gui.clickButton(buttons.NextButton);\n};\n\nController.prototype.TargetDirectoryPageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    // Keep default at \"C:\\Qt\".\n    //gui.currentPageWidget().TargetDirectoryLineEdit.setText(\"E:\\\\Qt\");\n    gui.clickButton(buttons.NextButton);\n};\n\nController.prototype.ComponentSelectionPageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    var page = gui.currentPageWidget();\n    page.deselectAll();\n    for (var i = 0; i < INSTALL_COMPONENTS.length; i++) {\n        page.selectComponent(INSTALL_COMPONENTS[i]);\n    }\n    gui.clickButton(buttons.NextButton);\n};\n\nController.prototype.LicenseAgreementPageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true);\n    gui.clickButton(buttons.NextButton);\n};\n\nController.prototype.StartMenuDirectoryPageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    gui.clickButton(buttons.NextButton);\n};\n\nController.prototype.ReadyForInstallationPageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    gui.clickButton(buttons.NextButton);\n};\n\nController.prototype.FinishedPageCallback = function() {\n    console.log(\"Step: \" + gui.currentPageWidget());\n    // TODO somehow the installer crashes after this step.\n    // https://stackoverflow.com/questions/25105269/silent-install-qt-run-installer-on-ubuntu-server\n    var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm;\n    if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox) {\n        checkBoxForm.launchQtCreatorCheckBox.checked = false;\n    }\n    gui.clickButton(buttons.FinishButton);\n};\n\n// vim: set ft=javascript:\n"
  },
  {
    "path": "ci/qt5124-linux-packages",
    "content": "http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtbase-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtx11extras-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtwebchannel-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtmultimedia-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qttranslations-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtgraphicaleffects-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtsvg-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtdeclarative-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtimageformats-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qttools-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtxmlpatterns-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtserialport-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtquickcontrols-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtquickcontrols2-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtserialbus-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147qtscxml-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5124/qt.qt5.5124.gcc_64/5.12.4-0-201906140147icu-linux-Rhel7.2-x64.7z\n"
  },
  {
    "path": "ci/qt5129-linux-packages",
    "content": "http://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtbase-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtx11extras-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtwebchannel-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtmultimedia-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qttranslations-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtgraphicaleffects-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtsvg-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtdeclarative-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtimageformats-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qttools-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtxmlpatterns-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtserialport-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtquickcontrols-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtquickcontrols2-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtserialbus-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744qtscxml-Linux-RHEL_7_4-GCC-Linux-RHEL_7_4-X86_64.7z\nhttp://download.qt.io/online/qtsdkrepository/linux_x64/desktop/qt5_5129/qt.qt5.5129.gcc_64/5.12.9-0-202006121744icu-linux-Rhel7.2-x64.7z\n"
  },
  {
    "path": "ci/tests-ci.sh",
    "content": "#!/bin/bash\n\nset -x\n\n#export QTDIR=$(readlink -f /opt/qt*/)\nexport QTDIR=$(readlink -f /opt/qt*/5.12.*/gcc_64)\n\nPATH=${QTDIR}/bin:${PATH}\nexport QMAKE=${QTDIR}/bin/qmake\n\nset -e\n\nqmake --version\n\nVERSION=$(git rev-parse --short HEAD)\n\nINSTALL_DIR=/tmp/embedded-ide\nAPP_IMAGE_NAME=Embedded_IDE-x86_64.AppImage\nDEPLOY_OPT=\"-no-translations -verbose=2 -executable=$INSTALL_DIR/usr/bin/embedded-ide\"\nDESKTOP_FILE=$INSTALL_DIR/usr/share/applications/embedded-ide.desktop\n\nwget https://raw.githubusercontent.com/martinribelotta/embedded-ide-builder/master/linux-x86_64/universal-ctags -O /tmp/universal-ctags\n\necho ************** LINUX BUILD ***********************\n\nqmake CONFIG+=release CONFIG+=force_debug_info embedded-ide.pro\nmake -j4\nmake install INSTALL_ROOT=${INSTALL_DIR}\n\ncat > ${INSTALL_DIR}/usr/share/embedded-ide/embedded_ide-config.json <<\"EOF\"\n{\n   \"workspacePath\": \"${APPLICATION_DIR_PATH}/../../../embedded-ide-workspace\"\n}\nEOF\n\ncat > ${INSTALL_DIR}/usr/share/embedded-ide/embedded-ide.hardconf <<\"EOF\"\n{\n        \"additionalPaths\": [\n           \"${APPLICATION_DIR_PATH}\",\n           \"${APPLICATION_DIR_PATH}/../../../tools/gcc-arm-embedded/bin\",\n           \"${APPLICATION_DIR_PATH}/../../../tools/openocd/bin\",\n           \"${APPLICATION_DIR_PATH}/../../../tools/system/bin\"\n        ],\n        \"editor\": {\n            \"font\": {\n                \"name\": \"Ubuntu Mono\",\n                \"size\": 12\n            },\n            \"formatterStyle\": \"linux\",\n            \"saveOnAction\": false,\n            \"style\": \"Default\",\n            \"tabWidth\": 3,\n            \"tabsOnSpaces\": true\n        },\n        \"externalTools\": [\n            { \"Install FTDI drivers\": \"bash ${APPLICATION_DIR_PATH}/ftdi-tools.sh --install\" },\n            { \"Uninstall FTDI drivers\": \"bash ${APPLICATION_DIR_PATH}/ftdi-tools.sh --uninstall\" },\n            { \"Add desktop integration\": \"bash ${APPLICATION_DIR_PATH}/desktop-integration.sh --install\" },\n            { \"Remove desktop integration\": \"bash ${APPLICATION_DIR_PATH}/desktop-integration.sh --uninstall\" }\n        ],\n        \"history\": [ ],\n        \"logger\": {\n            \"font\": {\n                \"name\": \"Ubuntu Mono\",\n                \"size\": 10\n            }\n        },\n        \"network\": {\n            \"proxy\": {\n                \"host\": \"\",\n                \"pass\": \"\",\n                \"port\": \"\",\n                \"type\": \"None\",\n                \"useCredentials\": false,\n                \"user\": \"\"\n            }\n        },\n        \"templates\": {\n            \"autoUpdate\": true,\n            \"url\": \"https://api.github.com/repos/ciaa/EmbeddedIDE-templates/contents\"\n        },\n        \"useDevelopMode\": false\n}\nEOF\n\ninstall -m 0755 /tmp/universal-ctags $INSTALL_DIR/usr/bin\n\nlinuxdeploy-x86_64.AppImage --plugin qt --output appimage --appdir=$INSTALL_DIR\n\n(\nAPPIMAGE_DIR=${PWD}\nAPPIMAGE=${PWD}/Embedded_IDE-${VERSION}-x86_64.AppImage\ncd /tmp\nchmod a+x ${APPIMAGE}\n${APPIMAGE} --appimage-extract\nmv squashfs-root Embedded_IDE-${VERSION}-x86_64\ntar -jcvf ${APPIMAGE_DIR}/Embedded_IDE-${VERSION}-x86_64.tar.bz2 Embedded_IDE-${VERSION}-x86_64\n)\necho ************** WINDOWS BUILD ***********************\n\nmake distclean\nMXE=/usr/lib/mxe/usr\nMXEQT=${MXE}/${MXE_TRIPLE}/qt5\nPATH=${MXE}/bin:${PATH}\nMXE_PKG=Embedded_IDE-${VERSION}-win32\n${MXEQT}/bin/qmake CONFIG+=release CONFIG+=force_debug_info embedded-ide.pro\nmake -j4\npydeployqt --objdump ${MXE_TRIPLE}-objdump ${PWD}/build/embedded-ide.exe \\\n\t--libs ${MXE}/${MXE_TRIPLE}/bin/:${MXEQT}/bin/:${MXEQT}/lib/ \\\n\t--extradll Qt5Svg.dll:Qt5Qml.dll:libjpeg-9.dll \\\n\t--qmake ${MXEQT}/bin/qmake\nmv build ${MXE_PKG}\n\ncat > ${MXE_PKG}/embedded_ide-config.json <<\"EOF\"\n{\n   \"workspacePath\": \"${APPLICATION_DIR_PATH}/../embedded-ide-workspace\"\n}\nEOF\n\ncat > ${MXE_PKG}/embedded-ide.hardconf <<\"EOF\"\n{\n        \"additionalPaths\": [\n           \"${APPLICATION_DIR_PATH}\",\n           \"${APPLICATION_DIR_PATH}/../tools/arm-none-eabi-gcc/bin\",\n           \"${APPLICATION_DIR_PATH}/../tools/openocd/bin\",\n           \"${APPLICATION_DIR_PATH}/../tools/system\",\n           \"${APPLICATION_DIR_PATH}/../tools/zenity\",\n           \"${APPLICATION_DIR_PATH}/../tools/drivers\",\n           \"${APPLICATION_DIR_PATH}/../tools/serial-terminal\"\n        ],\n        \"editor\": {\n            \"font\": {\n                \"name\": \"Ubuntu Mono\",\n                \"size\": 12\n            },\n            \"formatterStyle\": \"linux\",\n            \"saveOnAction\": false,\n            \"style\": \"Default\",\n            \"tabWidth\": 3,\n            \"tabsOnSpaces\": true\n        },\n        \"externalTools\": [\n            { \"Launch Zadig\": \"cmd /C start zadigv2.0.1.154.exe\" },\n            { \"Serial Terminal\": \"cmd /C start Terminal.exe\" }\n        ],\n        \"history\": [ ],\n        \"logger\": {\n            \"font\": {\n                \"name\": \"Ubuntu Mono\",\n                \"size\": 10\n            }\n        },\n        \"network\": {\n            \"proxy\": {\n                \"host\": \"\",\n                \"pass\": \"\",\n                \"port\": \"\",\n                \"type\": \"None\",\n                \"useCredentials\": false,\n                \"user\": \"\"\n            }\n        },\n        \"templates\": {\n            \"autoUpdate\": true,\n            \"url\": \"https://api.github.com/repos/ciaa/EmbeddedIDE-templates/contents\"\n        },\n        \"useDevelopMode\": false\n}\nEOF\n\nzip -9 -r ${MXE_PKG}.zip ${MXE_PKG}\n"
  },
  {
    "path": "ci/tests-environment.sh",
    "content": "#!/bin/bash\n\nset -e\nset -x\n\n# sudo add-apt-repository --yes ppa:beineri/opt-qt-5.12.8-xenial\n\nsudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test\necho \"deb http://pkg.mxe.cc/repos/apt trusty main\" | sudo tee /etc/apt/sources.list.d/mxeapt.list\nsudo apt-get update -qq --allow-unauthenticated\n\nsudo fallocate -l 1G /swapfile\nsudo chmod 600 /swapfile\nsudo mkswap /swapfile\nsudo swapon /swapfile\n\nsudo wget https://raw.githubusercontent.com/martinribelotta/pydeployqt/master/deploy.py -O /usr/bin/pydeployqt\nsudo chmod a+x /usr/bin/pydeployqt\n\nMXE=mxe-${MXE_TRIPLE}\n#sudo apt-get install -y --allow-unauthenticated -o Dpkg::Options::=\"--force-overwrite\" \\\n\t#wget fuse gcc-8 g++-8 build-essential p7zip-full \\\n\t#qt512base qt512tools qt512svg qt512imageformats qt512x11extras libglu1-mesa-dev \\\n\t#${MXE}-gcc ${MXE}-g++ \\\n\t#${MXE}-qtbase ${MXE}-qtsvg ${MXE}-qscintilla2 ${MXE}-qttools\n#export QTDIR=$(readlink -f /opt/qt*/)\n\nsudo apt-get install -y --allow-unauthenticated -o Dpkg::Options::=\"--force-overwrite\" \\\n\twget fuse gcc-8 g++-8 build-essential p7zip-full \\\n\tlibglu1-mesa-dev libxkbcommon-dev libxkbcommon-x11-0 \\\n\t${MXE}-gcc ${MXE}-g++ \\\n\t${MXE}-qtbase ${MXE}-qtsvg ${MXE}-qscintilla2 ${MXE}-qttools\n\nsudo bash ci/extract-qt-installer\nexport QTDIR=$(readlink -f /opt/qt*/5.12.*/gcc_64)\n\ngcc --version\n# sudo update-alternatives --remove-all gcc\nsudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 90 --slave /usr/bin/g++ g++ /usr/bin/g++-8\ngcc --version\n\nmkdir -p /tmp/qsci\ncp ./ci/BuildQSCI.mk /tmp/qsci\ncd /tmp/qsci\nexport PATH=${QTDIR}/bin:${PATH}\nmake -f BuildQSCI.mk\n\nURLS=\"https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage \\\n     https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage \\\n     https://github.com/linuxdeploy/linuxdeploy-plugin-appimage/releases/download/continuous/linuxdeploy-plugin-appimage-x86_64.AppImage\"\n\nsudo wget -P /usr/bin $URLS\nfor url in $URLS\ndo\n\tF=$(basename $url)\n\tP=/usr/bin/$F\n\tsudo chmod a+x $P\ndone\n"
  },
  {
    "path": "docs/DIFF_TEMPLATES.md",
    "content": "# Diff project documentation\n\nEmbedded-IDE base export/import project on diff/patch utils.\n\n## Export\n\nFor project export, the IDE call `diff` utility with two directories, the project directory and emptry temporal directory without any contents.\n\nThe process is equivalent to:\n```bash\ndiff -Naur $(BASE) $(TEMP_DIR) > my_project.template\n```\nWhen `$(BASE)` is directory contains Makefile file and $(TEMP_DIR) is temporal directory created by IDE without contents.\n\nThe `-Naur` extention build recursive difference with unified format to produce a patch format output.\n\nReciselly, the command options to diff are:\n\n```bash\ndiff -aur --unidirectional-new-file <current dir> <temporal dir>\n```\n\nBy convention, the Embedded-IDE template extention is `*.template` but anny extention can be used.\n\n## Import\n\nTo import project, the inverse process to diff, `patch` is invoked.\n\nThe patch utility is invoked with selected *.template contents and -p0 parameter to create entire directory structure.\n\n### Template support\n\nThe import process, support a templated-based replace mechanism.\n\n#### Format\n\nEvery text with `${{...}}` format is replaced by data edited in \"New Project\" dialog or this default value before to send to `patch` utility.\n\nInto `${{...}}` brackets, the importer expect this string format:\n\n> ${{field_name type:values}}\n\n  - **field_name** is the name of entry with underscores are replaced by spaces in visualization.\n  - **type** is the type of options. The supported options are:\n     - `string`: Text entry. The `values` is any character except the final `}}`.\n     This field is shown as input-box on \"New Project dialog\n     - `items`: Multiple items separated with `|` character. The items can contains any characters except `|` and `}}` but is recomended the use of\n     `[a-zA-Z_][a-zA-Z0-9_]*`\n     convention (common languages indentifier rules)\n     This field is shown as combo-box on \"New Project\" dialog.\n"
  },
  {
    "path": "docs/TOOL_CMDLINE.md",
    "content": "# External tool command line syntax\n\n - `${{text: label}}` Replaced by text entered in textbox with ==label== text label\n - `${{item: label#item1|item2|...|itemN}}` Replace by selected item in the combo dialog with label ==label==\n - `${{projectpath}}` Replaced by project directory\n - `${{projectname}}` Replaced by project name (last part of `${{projectpath}}`)\n"
  },
  {
    "path": "embedded-ide.pro",
    "content": "TEMPLATE = subdirs\nSUBDIRS = ide socketwaiter qtshdialog\n"
  },
  {
    "path": "ide/appconfig.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n\n#include <QApplication>\n\n#include <QJsonDocument>\n#include <QJsonValue>\n#include <QJsonObject>\n#include <QJsonArray>\n#include <QTextStream>\n#include <QProcessEnvironment>\n#include <QFont>\n#include <QFontInfo>\n#include <QMetaEnum>\n#include <QFontDatabase>\n#include <QSaveFile>\n#include <QStandardPaths>\n#include <QToolButton>\n#include <QDateTime>\n#include <QOperatingSystemVersion>\n\n#include <QtDebug>\n\nclass AppConfig::Priv_t\n{\npublic:\n    QJsonObject global;\n    QJsonObject local;\n    QProcessEnvironment sysenv;\n};\n\nstatic const QString BUNDLE_GLOBAL_PATH = \":/default-global.json\";\nstatic const QString BUNDLE_LOCAL_PATH = \":/default-local.json\";\n\nstatic const QJsonValue& valueOrDefault(const QJsonValue& v, const QJsonValue& d)\n{\n    return v.isUndefined()? d : v;\n}\n\nstatic QByteArray readEntireFile(const QString& path, const QByteArray& ifFail = QByteArray())\n{\n    QFile f(path);\n    if (f.open(QFile::ReadOnly))\n        return QTextStream(&f).readAll().toUtf8();\n    return ifFail;\n}\n\nstatic bool writeEntireFile(const QString& path, const QByteArray& data)\n{\n    QSaveFile f(path);\n    if (!f.open(QFile::WriteOnly))\n        return false;\n    f.write(data);\n    return f.commit();\n}\n\nstatic QJsonObject loadJson(const QString& path)\n{\n    QJsonParseError err{};\n    if (!QFileInfo{path}.exists())\n        return {};\n    auto doc = QJsonDocument::fromJson(readEntireFile(path), &err);\n    if (err.error != QJsonParseError::NoError) {\n        qDebug() << \"error reading\" << path << err.errorString();\n    }\n    return doc.object();\n}\n\nstatic bool isAppImage()\n{\n    return !qgetenv(\"APPIMAGE\").isEmpty();\n}\n\nstatic bool isWindows()\n{\n    return QOperatingSystemVersion::current().type() == QOperatingSystemVersion::Windows;\n}\n\nstatic QString appFilePath()\n{\n    return isAppImage()? qgetenv(\"APPIMAGE\") : QApplication::applicationFilePath();\n}\n\nstatic QString appDirPath()\n{\n    return isAppImage()? QFileInfo(qgetenv(\"APPIMAGE\")).absolutePath() : QApplication::applicationDirPath();\n}\n\nstatic QString globalConfigFilePath()\n{\n    auto name = \".\" + appDirPath().replace(\"/\", \"-\")\n                                  .replace(\"\\\\\", \"-\")\n                                  .replace(\":\", \"\") + \".json\";\n    return QDir::home().absoluteFilePath(name);\n}\n\nstatic QDir sharedDir()\n{\n    auto sharedDirPath = (isAppImage() || isWindows())? \"./\" : \"../share/embedded-ide\";\n    return QDir(appDirPath()).absoluteFilePath(sharedDirPath);\n}\n\nstatic QString systemGlobalConfigPath()\n{\n    return sharedDir().absoluteFilePath(\"embedded_ide-config.json\");\n}\n\nstatic QString systemLocalConfigPath()\n{\n    return sharedDir().absoluteFilePath(\"embedded-ide.hardconf\");\n}\n\nstatic QString systemTranslationPath()\n{\n    return sharedDir().absoluteFilePath(\"translations/\");\n}\n\nstatic void addResourcesFont()\n{\n    for(const auto& fontPath: QDir(\":/fonts/\").entryInfoList({ \"*.ttf\" }))\n        QFontDatabase::addApplicationFont(fontPath.absoluteFilePath());\n}\n\nAppConfig::AppConfig() : QObject(QApplication::instance()), priv(std::make_unique<Priv_t>())\n{\n    priv->sysenv = QProcessEnvironment::systemEnvironment();\n    addResourcesFont();\n    adjustEnv();\n    load();\n    adjustEnv();\n}\n\nAppConfig::~AppConfig()\n{\n}\n\nAppConfig &AppConfig::instance()\n{\n    static AppConfig *singleton = nullptr;\n    if (!singleton)\n        singleton = new AppConfig;\n    return *singleton;\n}\n\nvoid AppConfig::adjustEnv()\n{\n    if (!priv->sysenv.contains(\"HOME\")) {\n        auto homePath = QDir::home().absolutePath();\n        auto homePaths = QStandardPaths::standardLocations(QStandardPaths::HomeLocation);\n        if (!homePaths.isEmpty())\n            homePath = homePaths.first();\n        qputenv(\"HOME\", homePath.toLocal8Bit());\n    }\n\n    qputenv(\"APPLICATION_DIR_PATH\", appDirPath().toLocal8Bit());\n    qputenv(\"APPLICATION_FILE_PATH\", appFilePath().toLocal8Bit());\n    if (!priv->local.isEmpty()) {\n        qputenv(\"WORKSPACE_PATH\", workspacePath().toLocal8Bit());\n        qputenv(\"WORKSPACE_PROJECT_PATH\", projectsPath().toLocal8Bit());\n        qputenv(\"WORKSPACE_TEMPLATE_PATH\", templatesPath().toLocal8Bit());\n        qputenv(\"WORKSPACE_CONFIG_FILE\", localConfigFilePath().toLocal8Bit());\n    } else {\n        qputenv(\"WORKSPACE_PATH\", \"\");\n        qputenv(\"WORKSPACE_PROJECT_PATH\", \"\");\n        qputenv(\"WORKSPACE_TEMPLATE_PATH\", \"\");\n        qputenv(\"WORKSPACE_CONFIG_FILE\", \"\");\n    }\n\n    auto old = priv->sysenv.value(\"PATH\");\n    auto separator = isWindows()? \";\" : \":\";\n    auto extras = replaceWithEnv(additionalPaths().join(separator));\n    auto path = QString(\"%1%2%3\").arg(extras).arg(separator).arg(old);\n    qputenv(\"PATH\", path.toLocal8Bit());\n\n    auto extraEnv = additionalEnv();\n    for (auto it = extraEnv.constBegin(); it != extraEnv.constEnd(); ++it) {\n        auto key = it.key().toLocal8Bit();\n        auto val = replaceWithEnv(it.value()).toLocal8Bit();\n        qputenv(key.constData(), val);\n    }\n}\n\nQString AppConfig::replaceWithEnv(const QString &str)\n{\n    QProcessEnvironment env = QProcessEnvironment::systemEnvironment();\n    QString copy(str);\n    for(const auto& k: env.keys())\n        copy.replace(QString(\"${%1}\").arg(k), env.value(k));\n    return copy;\n}\n\nQByteArray AppConfig::readEntireTextFile(const QString &path)\n{\n    return readEntireFile(path);\n}\n\nQString AppConfig::workspacePath() const\n{\n    QJsonValue defaultPath = QDir::home().absoluteFilePath(\".embedded_ide-workspace\");\n    return replaceWithEnv(valueOrDefault((priv->global).value(\"workspacePath\"), defaultPath).toString());\n}\n\nconst QString& AppConfig::ensureExist(const QString& d)\n{\n    if (!QDir(d).exists())\n        QDir::root().mkpath(d);\n    return d;\n}\n\nQStringList AppConfig::langList()\n{\n    QStringList langs;\n    for(const auto& p: langPaths())\n        for(const auto& l: QDir(p).entryInfoList({ \"*.qm\" }))\n            langs += l.baseName();\n    return langs;\n}\n\nQStringList AppConfig::langPaths()\n{\n    return { systemTranslationPath(), \":/i18n/\" };\n}\n\nQString AppConfig::resourceImage(const QString &path, const QString &ext)\n{\n    auto style = instance().useDarkStyle()? \"dark\" : \"light\";\n    auto s = QString(\":/images/%1/%2.%3\").arg(style, path, ext);\n    return s;\n}\n\nQString AppConfig::resourceImage(const QStringList &pathPart, const QString &ext)\n{\n    return AppConfig::resourceImage(pathPart.join(QDir::separator()), ext);\n}\n\nvoid AppConfig::fixIconTheme(QWidget *w)\n{\n        Q_UNUSED(w)\n//    for (auto *b: w->findChildren<QAbstractButton*>()) {\n//        auto iconName = b->icon().name();\n//        if (!iconName.isEmpty()) {\n//            auto resPath = resourceImage({ \"actions\", iconName });\n//            b->setIcon(QIcon(resPath));\n//            qDebug() << b->objectName() << \"change\" << iconName << \"for\" << resPath;\n//        } else {\n//            qDebug() << \"button\" << b->objectName() << \"no icon\";\n//        }\n//    }\n}\n\nQString AppConfig::projectsPath() const\n{\n    return ensureExist(QDir(workspacePath()).absoluteFilePath(\"projects\"));\n}\n\nQString AppConfig::templatesPath() const\n{\n    return ensureExist(QDir(workspacePath()).absoluteFilePath(\"templates\"));\n}\n\nQString AppConfig::localConfigFilePath() const\n{\n    return QDir(ensureExist(workspacePath())).absoluteFilePath(\"config.json\");\n}\n\nQList<QPair<QString, QString> > AppConfig::externalTools() const\n{\n    QList<QPair<QString, QString> > map;\n    auto vtools = priv->local[\"externalTools\"];\n    if (vtools.isObject()) {\n        auto tools = vtools.toObject();\n        for (const auto& k: tools.keys())\n            map.append({ k, tools.value(k).toString() });\n    } else if (vtools.isArray()) {\n        for (const auto v: vtools.toArray()) {\n            auto o = v.toObject();\n            auto ks = o.keys();\n            if (!ks.first().isEmpty()) {\n                auto k = ks.first();\n                map.append({ k, o.value(k).toString() });\n            }\n        }\n    }\n    return map;\n}\n\nQFileInfoList AppConfig::recentProjects() const\n{\n    QFileInfoList list;\n    for(const auto& e: QDir(projectsPath()).entryInfoList(QDir::Dirs)) {\n        QFileInfo info(QDir(e.absoluteFilePath()).absoluteFilePath(\"Makefile\"));\n        if (info.isFile())\n            list.append(info);\n    }\n    auto history = priv->local[\"history\"].toArray();\n    for(const auto e: history) {\n        QFileInfo info(e.toString());\n        if (info.exists() && !list.contains(info))\n            list.append(info);\n    }\n    return list;\n}\n\nQStringList AppConfig::additionalPaths() const\n{\n    QStringList paths;\n    for(const auto e: priv->local.value(\"additionalPaths\").toArray())\n        paths.append(e.toString());\n    return paths;\n}\n\nstatic void objectToMap(QMap<QString, QString>& map, const QJsonObject& obj)\n{\n    for (auto it = obj.constBegin(); it != obj.constEnd(); ++it)\n        map.insert(it.key(), it.value().toString());\n}\n\nQMap<QString, QString> AppConfig::additionalEnv() const\n{\n    QMap<QString, QString> map;\n    auto env = priv->local.value(\"additionalEnv\");\n    qDebug() << env.toString();\n    if (env.isArray()) {\n        for (const auto& e: env.toArray())\n            objectToMap(map, e.toObject());\n    } else {\n        objectToMap(map, env.toObject());\n    }\n    return map;\n}\n\nQString AppConfig::templatesUrl() const\n{\n    return priv->local.value(\"templates\").toObject().value(\"url\").toString();\n}\n\nQString AppConfig::editorStyle() const\n{\n    return valueOrDefault(priv->local.value(\"editor\").toObject().value(\"style\"), \"Default\").toString();\n}\n\nQFont AppConfig::editorFont() const\n{\n    auto ed = priv->local.value(\"editor\").toObject();\n    auto f = ed.value(\"font\").toObject();\n    auto name = f.value(\"name\").toString();\n    auto size = f.value(\"size\").toInt(-1);\n    return QFont(name, size);\n}\n\nbool AppConfig::editorSaveOnAction() const\n{\n    return priv->local.value(\"editor\").toObject().value(\"saveOnAction\").toBool();\n}\n\nbool AppConfig::editorTabsToSpaces() const\n{\n    return priv->local.value(\"editor\").toObject().value(\"tabsOnSpaces\").toBool();\n}\n\nint AppConfig::editorTabWidth() const\n{\n    return priv->local.value(\"editor\").toObject().value(\"tabWidth\").toInt();\n}\n\nbool AppConfig::editorShowSpaces() const\n{\n    return priv->local.value(\"editor\").toObject().value(\"showSpaces\").toBool();\n}\n\nQString AppConfig::editorFormatterStyle() const\n{\n    return priv->local.value(\"editor\").toObject().value(\"formatterStyle\").toString();\n}\n\nQString AppConfig::editorFormatterExtra() const\n{\n    return priv->local.value(\"editor\").toObject().value(\"formatterExtra\").toString();\n}\n\nbool AppConfig::editorDetectIdent() const\n{\n    return priv->local.value(\"editor\").toObject().value(\"detectIdent\").toBool();\n}\n\nQFont AppConfig::loggerFont() const\n{\n    auto ed = priv->local.value(\"logger\").toObject();\n    auto f = ed.value(\"font\").toObject();\n    auto name = f.value(\"name\").toString();\n    auto size = f.value(\"size\").toInt(-1);\n    return QFont(name, size);\n}\n\nQString AppConfig::networkProxyHost() const\n{\n    return priv->local.value(\"network\").toObject().value(\"proxy\").toObject().value(\"host\").toString();\n}\n\nQString AppConfig::networkProxyPort() const\n{\n    return priv->local.value(\"network\").toObject().value(\"proxy\").toObject().value(\"port\").toString();\n}\n\nbool AppConfig::networkProxyUseCredentials() const\n{\n    return priv->local.value(\"network\").toObject().value(\"proxy\").toObject().value(\"useCredentials\").toBool();\n}\n\nAppConfig::NetworkProxyType AppConfig::networkProxyType() const\n{\n    auto type = priv->local.value(\"network\").toObject().value(\"proxy\").toObject().value(\"type\").toString();\n    bool ok = false;\n    auto t = NetworkProxyType(QMetaEnum::fromType<AppConfig::NetworkProxyType>().keyToValue(type.toLatin1().data(), &ok));\n    return ok? t : NetworkProxyType::None;\n}\n\nQString AppConfig::networkProxyUsername() const\n{\n    return priv->local.value(\"network\").toObject().value(\"proxy\").toObject().value(\"user\").toString();\n}\n\nQString AppConfig::networkProxyPassword() const\n{\n    return priv->local.value(\"network\").toObject().value(\"proxy\").toObject().value(\"pass\").toString();\n}\n\nbool AppConfig::projectTemplatesAutoUpdate() const\n{\n    return priv->local.value(\"templates\").toObject().value(\"autoUpdate\").toBool();\n}\n\nbool AppConfig::useDevelopMode() const\n{\n    return priv->local.value(\"useDevelopMode\").toBool();\n}\n\nbool AppConfig::useDarkStyle() const\n{\n    return priv->local.value(\"useDarkStyle\").toBool();\n}\n\nQString AppConfig::language() const\n{\n    return priv->local.value(\"lang\").toString();\n}\n\nint AppConfig::numberOfJobs() const\n{\n    return priv->local.value(\"numberOfJobs\").toInt(1);\n}\n\nbool AppConfig::numberOfJobsOptimal() const\n{\n    return priv->local.value(\"numberOfJobsOptimal\").toBool(false);\n}\n\nQByteArray AppConfig::fileHash(const QString &filename)\n{\n    auto path = QDir(workspacePath()).filePath(\"hashes.json\");\n    auto o = QJsonDocument::fromJson(readEntireTextFile(path)).object();\n    auto v = o.value(QFileInfo(filename).fileName());\n    if (v.isUndefined())\n        return QByteArray();\n    return QByteArray::fromHex(v.toString().toLatin1());\n}\n\nstatic QString templateGlobalConfigPath()\n{\n    QFileInfo sysGlobalPath{systemGlobalConfigPath()};\n    return sysGlobalPath.exists()? sysGlobalPath.absoluteFilePath() : BUNDLE_GLOBAL_PATH;\n}\n\nstatic QString templateLocalConfigPath()\n{\n    QFileInfo sysLocalPath{systemLocalConfigPath()};\n    return sysLocalPath.exists()? sysLocalPath.absoluteFilePath() : BUNDLE_LOCAL_PATH;\n}\n\nvoid AppConfig::load()\n{\n    QFileInfo globalCfgInfo{globalConfigFilePath()};\n    if (!globalCfgInfo.exists())\n        QFile::copy(templateGlobalConfigPath(), globalCfgInfo.absoluteFilePath());\n    priv->global = loadJson(globalCfgInfo.absoluteFilePath());\n\n    QFileInfo localCfgInfo{localConfigFilePath()};\n    if (!localCfgInfo.exists())\n        QFile::copy(templateLocalConfigPath(), localCfgInfo.absoluteFilePath());\n    priv->local = loadJson(localCfgInfo.absoluteFilePath());\n\n    projectsPath();\n    templatesPath();\n\n    emit configChanged(this);\n}\n\nvoid AppConfig::save()\n{\n    writeEntireFile(globalConfigFilePath(), QJsonDocument((priv->global)).toJson());\n    writeEntireFile(localConfigFilePath(), QJsonDocument(priv->local).toJson());\n    adjustEnv();\n    emit configChanged(this);\n}\n\nvoid AppConfig::setWorkspacePath(const QString &path)\n{\n    (priv->global).insert(\"workspacePath\", path);\n}\n\nvoid AppConfig::setExternalTools(const QList<QPair<QString, QString> > &tools)\n{\n    QJsonArray a;\n    for (const auto& it: tools)\n        a.append(QJsonObject{ { it.first, it.second } });\n    priv->local.insert(\"externalTools\", a);\n}\n\nvoid AppConfig::appendToRecentProjects(const QString &path)\n{\n    if (!path.startsWith(projectsPath())) {\n        QJsonArray history = priv->local[\"history\"].toArray();\n        if (!history.contains(path))\n            history.append(path);\n        priv->local[\"history\"] = history;\n    }\n}\n\nvoid AppConfig::setAdditionalPaths(const QStringList &paths)\n{\n    QJsonArray array;\n    for(const auto& p: paths)\n        array.append(p);\n    priv->local.insert(\"additionalPaths\", array);\n}\n\nvoid AppConfig::setAdditionalEnv(const QMap<QString, QString> &env)\n{\n    QJsonArray array;\n    for (auto it= env.constBegin(); it!=env.constEnd(); ++it)\n        array.append(QJsonObject{{ it.key(), it.value() }});\n    priv->local.insert(\"additionalEnv\", array);\n}\n\nvoid AppConfig::setTemplatesUrl(const QString &url)\n{\n    auto t = priv->local[\"templates\"].toObject();\n    t.insert(\"url\", url);\n    priv->local[\"templates\"] = t;\n}\n\nvoid AppConfig::setEditorStyle(const QString &name)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed.insert(\"style\", name);\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setEditorFont(const QFont &f)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed[\"font\"] = QJsonObject{\n        { \"name\", f.family() },\n        { \"size\", f.pointSize() }\n    };\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setEditorSaveOnAction(bool enable)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed.insert(\"saveOnAction\", enable);\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setEditorTabsToSpaces(bool enable)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed.insert(\"tabsOnSpaces\", enable);\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setEditorTabWidth(int n)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed.insert(\"tabWidth\", n);\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setEditorShowSpaces(bool show)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed.insert(\"showSpaces\", show);\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setEditorFormatterStyle(const QString &name)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed.insert(\"formatterStyle\", name);\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setEditorFormatterExtra(const QString &text)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed.insert(\"formatterExtra\", text);\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setEditorDetectIdent(bool enable)\n{\n    auto ed = priv->local[\"editor\"].toObject();\n    ed.insert(\"detectIdent\", enable);\n    priv->local[\"editor\"] = ed;\n}\n\nvoid AppConfig::setLoggerFont(const QFont &f)\n{\n    auto log = priv->local[\"logger\"].toObject();\n    log.insert(\"font\", QJsonObject{\n                   { \"name\", f.family() },\n                   { \"size\", f.pointSize() }\n               });\n    priv->local[\"logger\"] = log;\n}\n\nvoid AppConfig::setNetworkProxyHost(const QString &name)\n{\n    auto net = priv->local[\"network\"].toObject();\n    auto proxy = net.value(\"proxy\").toObject();\n    proxy.insert(\"host\", name);\n    net[\"proxy\"] = proxy;\n    priv->local[\"network\"] = net;\n}\n\nvoid AppConfig::setNetworkProxyPort(const QString &port)\n{\n    auto net = priv->local[\"network\"].toObject();\n    auto proxy = net.value(\"proxy\").toObject();\n    proxy.insert(\"port\", port);\n    net[\"proxy\"] = proxy;\n    priv->local[\"network\"] = net;\n}\n\nvoid AppConfig::setNetworkProxyUseCredentials(bool use)\n{\n    auto net = priv->local[\"network\"].toObject();\n    auto proxy = net.value(\"proxy\").toObject();\n    proxy.insert(\"useCredentials\", use);\n    net[\"proxy\"] = proxy;\n    priv->local[\"network\"] = net;\n}\n\nvoid AppConfig::setNetworkProxyType(AppConfig::NetworkProxyType type)\n{\n    auto typeName = QString(QMetaEnum::fromType<AppConfig::NetworkProxyType>().valueToKey(int(type)));\n    auto net = priv->local[\"network\"].toObject();\n    auto proxy = net.value(\"proxy\").toObject();\n    proxy.insert(\"type\", typeName);\n    net[\"proxy\"] = proxy;\n    priv->local[\"network\"] = net;\n}\n\nvoid AppConfig::setNetworkProxyUsername(const QString &user)\n{\n    auto net = priv->local[\"network\"].toObject();\n    auto proxy = net.value(\"proxy\").toObject();\n    proxy.insert(\"user\", user);\n    net[\"proxy\"] = proxy;\n    priv->local[\"network\"] = net;\n}\n\nvoid AppConfig::setNetworkProxyPassword(const QString &pass)\n{\n    auto net = priv->local[\"network\"].toObject();\n    auto proxy = net.value(\"proxy\").toObject();\n    proxy.insert(\"pass\", pass);\n    net[\"proxy\"] = proxy;\n    priv->local[\"network\"] = net;\n}\n\nvoid AppConfig::setProjectTemplatesAutoUpdate(bool en)\n{\n    auto t = priv->local[\"templates\"].toObject();\n    t.insert(\"autoUpdate\", en);\n    priv->local[\"templates\"] = t;\n}\n\nvoid AppConfig::setUseDevelopMode(bool use)\n{\n    priv->local.insert(\"useDevelopMode\", use);\n}\n\nvoid AppConfig::setUseDarkStyle(bool use)\n{\n    priv->local.insert(\"useDarkStyle\", use);\n}\n\nvoid AppConfig::setLanguage(const QString &lang)\n{\n    priv->local.insert(\"lang\", lang);\n}\n\nvoid AppConfig::setNumberOfJobs(int n)\n{\n    priv->local.insert(\"numberOfJobs\", n);\n}\n\nvoid AppConfig::setNumberOfJobsOptimal(bool en)\n{\n    priv->local.insert(\"numberOfJobsOptimal\", en);\n}\n\nvoid AppConfig::addHash(const QString &filename, const QByteArray &hash)\n{\n    auto path = QDir(workspacePath()).filePath(\"hashes.json\");\n    auto o = QJsonDocument::fromJson(readEntireTextFile(path)).object();\n    o.insert(QFileInfo(filename).fileName(), QString(hash.toHex()));\n    writeEntireFile(path, QJsonDocument(o).toJson());\n}\n\nvoid AppConfig::purgeHash()\n{\n    auto path = QDir(workspacePath()).filePath(\"hashes.json\");\n    auto o = QJsonDocument::fromJson(readEntireTextFile(path)).object();\n    for(auto& k: o.keys())\n        if (!QFileInfo::exists(QDir(templatesPath()).filePath(k)))\n            o.remove(k);\n    writeEntireFile(path, QJsonDocument(o).toJson());\n}\n"
  },
  {
    "path": "ide/appconfig.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef APPCONFIG_H\n#define APPCONFIG_H\n\n#include <QObject>\n#include <QDir>\n\n#include <memory>\n\nclass AppConfig : public QObject\n{\n    Q_OBJECT\n    Q_DISABLE_COPY(AppConfig)\n\nprivate:\n    explicit AppConfig();\n    virtual ~AppConfig() override;\n    void adjustEnv();\n\n    class Priv_t;\n    std::unique_ptr<Priv_t> priv;\npublic:\n    static AppConfig &instance();\n    static QString replaceWithEnv(const QString& str);\n    static QByteArray readEntireTextFile(const QString& path);\n    static const QString& ensureExist(const QString& d);\n    static QStringList langList();\n    static QStringList langPaths();\n    static QString resourceImage(const QString& path, const QString& ext=\"svg\");\n    static QString resourceImage(const QStringList& pathPart, const QString& ext=\"svg\");\n    static void fixIconTheme(QWidget *w);\n\n    enum class NetworkProxyType { None, System, Custom };\n    Q_ENUM(NetworkProxyType)\n\n    QString workspacePath() const;\n    QString projectsPath() const;\n    QString templatesPath() const;\n    QString localConfigFilePath() const;\n\n    QList<QPair<QString, QString> > externalTools() const;\n    QFileInfoList recentProjects() const;\n\n    QStringList additionalPaths() const;\n    QMap<QString, QString> additionalEnv() const;\n\n    QString templatesUrl() const;\n\n    QString editorStyle() const;\n    QFont editorFont() const;\n    bool editorSaveOnAction() const;\n    bool editorTabsToSpaces() const;\n    int editorTabWidth() const;\n    bool editorShowSpaces() const;\n    QString editorFormatterStyle() const;\n    QString editorFormatterExtra() const;\n    bool editorDetectIdent() const;\n\n    QFont loggerFont() const;\n\n    QString networkProxyHost() const;\n    QString networkProxyPort() const;\n    bool networkProxyUseCredentials() const;\n    NetworkProxyType networkProxyType() const;\n    QString networkProxyUsername() const;\n    QString networkProxyPassword() const;\n\n    bool projectTemplatesAutoUpdate() const;\n\n    bool useDevelopMode() const;\n    bool useDarkStyle() const;\n\n    QString language() const;\n\n    int numberOfJobs() const;\n    bool numberOfJobsOptimal() const;\n\n    QByteArray fileHash(const QString& filename);\n\nsignals:\n    void configChanged(AppConfig*);\n\npublic slots:\n    void load();\n    void save();\n\n    void setWorkspacePath(const QString& path);\n\n    void setExternalTools(const QList<QPair<QString, QString> > &tools);\n    void appendToRecentProjects(const QString& path);\n\n    void setAdditionalPaths(const QStringList& paths);\n    void setAdditionalEnv(const QMap<QString, QString> &env);\n\n    void setTemplatesUrl(const QString& url);\n\n    void setEditorStyle(const QString& name);\n    void setEditorFont(const QFont& f);\n    void setEditorSaveOnAction(bool enable);\n    void setEditorTabsToSpaces(bool enable);\n    void setEditorTabWidth(int n);\n    void setEditorShowSpaces(bool show);\n    void setEditorFormatterStyle(const QString& name);\n    void setEditorFormatterExtra(const QString& text);\n    void setEditorDetectIdent(bool enable);\n\n    void setLoggerFont(const QFont& f);\n\n    void setNetworkProxyHost(const QString& name);\n    void setNetworkProxyPort(const QString& port);\n    void setNetworkProxyUseCredentials(bool use);\n    void setNetworkProxyType(AppConfig::NetworkProxyType type);\n    void setNetworkProxyUsername(const QString& user);\n    void setNetworkProxyPassword(const QString& pass);\n\n    void setProjectTemplatesAutoUpdate(bool en);\n\n    void setUseDevelopMode(bool use);\n    void setUseDarkStyle(bool use);\n    void setLanguage(const QString& lang);\n\n    void setNumberOfJobs(int n);\n    void setNumberOfJobsOptimal(bool en);\n\n    void addHash(const QString& filename, const QByteArray& hash);\n    void purgeHash();\n};\n\n#endif // APPCONFIG_H\n"
  },
  {
    "path": "ide/binaryviewer.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"binaryviewer.h\"\n\nBinaryViewer::BinaryViewer(QWidget *parent) : QHexView(parent)\n{\n}\n\nbool BinaryViewer::load(const QString &path)\n{\n    try {\n        setData(new DataStorageFile(path));\n        setPath(path);\n        return true;\n    } catch(const std::runtime_error&) {\n        return false;\n    }\n}\n\nQPoint BinaryViewer::cursor() const\n{\n    return { cursorPos(), 0 };\n}\n\nvoid BinaryViewer::setCursor(const QPoint &pos)\n{\n    setCursorPos(pos.x());\n}\n\n\nclass BinaryViewerCreator: public IDocumentEditorCreator\n{\npublic:\n    ~BinaryViewerCreator() override = default;\n    bool canHandleMime(const QMimeType &mime) const override {\n        return mime.inherits(\"application/octet-stream\");\n    }\n\n    IDocumentEditor *create(QWidget *parent = nullptr) const override {\n        return new BinaryViewer(parent);\n    }\n};\n\nIDocumentEditorCreator *BinaryViewer::creator()\n{\n    return IDocumentEditorCreator::staticCreator<BinaryViewerCreator>();\n}\n"
  },
  {
    "path": "ide/binaryviewer.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef BINARYVIEWER_H\n#define BINARYVIEWER_H\n\n#include <idocumenteditor.h>\n#include <QHexView.h>\n\nclass BinaryViewer : public IDocumentEditor, public QHexView\n{\npublic:\n    explicit BinaryViewer(QWidget *parent = nullptr);\n    virtual ~BinaryViewer() override {}\n\n    virtual const QWidget *widget() const override { return this; }\n    virtual QWidget *widget() override { return this; }\n    virtual bool load(const QString& path) override;\n    virtual bool save(const QString& path) override { Q_UNUSED(path); return false; }\n    virtual void reload() override { load(path()); }\n    virtual QString path() const override { return widget()->windowFilePath(); }\n    virtual void setPath(const QString& path) override { widget()->setWindowFilePath(path); }\n    virtual bool isReadonly() const override { return true; }\n    virtual void setReadonly(bool rdOnly) override { Q_UNUSED(rdOnly); }\n    virtual bool isModified() const override { return false; }\n    virtual void setModified(bool m) override { Q_UNUSED(m); }\n    virtual QPoint cursor() const override;\n    virtual void setCursor(const QPoint& pos) override;\n\n    static IDocumentEditorCreator *creator();\n};\n\n#endif // BINARYVIEWER_H\n"
  },
  {
    "path": "ide/buildmanager.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"buildmanager.h\"\n#include \"processmanager.h\"\n#include \"projectmanager.h\"\n\n#include <QFileInfo>\n\n#include <QThread>\n#include <QtDebug>\n\nconst QString BuildManager::PROCESS_NAME = \"makeBuild\";\n\nstatic int getOptimalNumberOfJobs()\n{\n    return QThread::idealThreadCount();\n}\n\nBuildManager::BuildManager(ProjectManager *_proj, ProcessManager *_pman, QObject *parent) :\n    QObject(parent),\n    proj(_proj),\n    pman(_pman)\n{\n    pman->setErrorHandler(PROCESS_NAME, [](QProcess *proc, QProcess::ProcessError err) {\n        // TODO Implement this (maybe unnecesary?)\n        Q_UNUSED(proc)\n        Q_UNUSED(err)\n    });\n    pman->setTerminationHandler(PROCESS_NAME, [this](QProcess *proc, int code, QProcess::ExitStatus status) {\n        emit buildTerminated(code, status == QProcess::NormalExit? tr(\"Exit normal\") : proc->errorString());\n    });\n}\n\nvoid BuildManager::startBuild(const QString &target)\n{\n    auto &c = AppConfig::instance();\n    auto nJobs = c.numberOfJobsOptimal()? getOptimalNumberOfJobs() : c.numberOfJobs();\n    auto params = QStringList{ \"-j\", QString(\"%1\").arg(nJobs), \"-f\", proj->projectFile(), target };\n    pman->start(PROCESS_NAME, \"make\", params, { { \"LC_ALL\", \"C\" }, { \"LANG\", \"C\" } }, proj->projectPath());\n    emit buildStarted(target);\n}\n\nvoid BuildManager::cancelBuild()\n{\n    pman->terminate(BuildManager::PROCESS_NAME, true);\n}\n"
  },
  {
    "path": "ide/buildmanager.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef BUILDMANAGER_H\n#define BUILDMANAGER_H\n\n#include <QObject>\n\nclass ProcessManager;\nclass ProjectManager;\n\nclass BuildManager : public QObject\n{\n    Q_OBJECT\n    Q_DISABLE_COPY(BuildManager)\npublic:\n    static const QString PROCESS_NAME;\n\n    explicit BuildManager(ProjectManager *_proj, ProcessManager *_pman, QObject *parent = nullptr);\n\nsignals:\n    void buildStarted(const QString& target);\n    void buildTerminated(int code, const QString& error);\n\npublic slots:\n    void startBuild(const QString& target);\n    void cancelBuild();\n\nprivate:\n    ProjectManager *proj;\n    ProcessManager *pman;\n};\n\n#endif // BUILDMANAGER_H\n"
  },
  {
    "path": "ide/buttoneditoritemdelegate.h",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef BUTTONEDITORITEMDELEGATE_H\n#define BUTTONEDITORITEMDELEGATE_H\n\n#include \"appconfig.h\"\n\n#include <QItemDelegate>\n#include <QWidget>\n#include <QLineEdit>\n#include <QAction>\n\ntemplate<typename Functor>\nclass ButtonEditorItemDelegate: public QItemDelegate\n{\npublic:\n    ButtonEditorItemDelegate(const QString& ict, const Functor& f) : iconToolTip(ict), func(f) {}\n    virtual QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override\n    {\n        auto w = QItemDelegate::createEditor(parent, option, index);\n        QLineEdit* e = qobject_cast<QLineEdit*>(w);\n        if (e) {\n            auto a = e->addAction(QIcon(AppConfig::resourceImage({ \"actions\", \"document-open\" })),\n                QLineEdit::TrailingPosition);\n            a->setToolTip(iconToolTip);\n            connect(a, &QAction::triggered, [index, this]() {\n                func(index);\n            });\n        }\n        return w;\n    }\nprivate:\n    QString iconToolTip;\n    Functor func;\n};\n\n\n#endif // BUTTONEDITORITEMDELEGATE_H\n"
  },
  {
    "path": "ide/childprocess.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"childprocess.h\"\n\nQProcess *ChildProcess::safeStop(QProcess *p, int timeoutMilis)\n{\n    p->blockSignals(true);\n    if (p->state() == QProcess::Running) {\n        p->terminate();\n        p->waitForFinished(timeoutMilis);\n        if (p->state() == QProcess::Running) {\n            p->kill();\n            p->waitForFinished(timeoutMilis);\n        }\n    }\n    p->blockSignals(false);\n    return p;\n}\n\nChildProcess::~ChildProcess() {\n    safeStop(this);\n}\n"
  },
  {
    "path": "ide/childprocess.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef CHILDPROCESS_H\n#define CHILDPROCESS_H\n\n#include <QProcess>\n\nclass ChildProcess : public QProcess\n{\n    Q_OBJECT\npublic:\n    static ChildProcess& create(QObject *parent = nullptr) { return *new ChildProcess(parent); }\n\n    static QProcess *safeStop(QProcess *p, int timeoutMilis = 100);\n\n    explicit ChildProcess(QObject *parent = nullptr): QProcess(parent) {}\n    virtual ~ChildProcess();\n\n    ChildProcess& changeCWD(const QString& path) {\n        setWorkingDirectory(path);\n        return *this;\n    }\n\n    ChildProcess& makeDeleteLater() {\n        connect(this, QOverload<int, ExitStatus>::of(&ChildProcess::finished), this, &ChildProcess::deleteLater);\n        connect(this, &ChildProcess::errorOccurred, this, &ChildProcess::deleteLater);\n        return *this;\n    }\n\n    ChildProcess& mergeStdOutAndErr() {\n        setProcessChannelMode(MergedChannels);\n        return *this;\n    }\n\n    ChildProcess& setenv(const QHash<QString, QString> &extraEnv) {\n        auto env = QProcessEnvironment::systemEnvironment();\n        for(auto it = extraEnv.begin(); it != extraEnv.end(); ++it)\n            env.insert(it.key(), it.value());\n        setProcessEnvironment(env);\n        return *this;\n    }\n\n    template<typename T> ChildProcess& onFinished(T f)\n    {\n        connect(this, QOverload<int, ExitStatus>::of(&QProcess::finished), [this, f](int e) { f(this, e); });\n        return *this;\n    }\n\n    template<typename T> ChildProcess& onStarted(T f)\n    {\n        connect(this, &QProcess::started, [this, f](){ f(this); });\n        return *this;\n    }\n\n    template<typename T> ChildProcess& onError(T f)\n    {\n        connect(this, &QProcess::errorOccurred, [this, f](ProcessError e) { f(this, e); });\n        return *this;\n    }\n\n    template<typename T> ChildProcess& onReadyReadStdout(T f)\n    {\n        connect(this, &QProcess::readyReadStandardOutput, [this, f]() {\n            f(this);\n        });\n        return *this;\n    }\n\n    template<typename T> ChildProcess& onReadyReadStderr(T f)\n    {\n        connect(this, &QProcess::readyReadStandardError, [this, f]() { f(this); });\n        return *this;\n    }\n\n    template<typename T> ChildProcess& onStateChange(T f)\n    {\n        connect(this, &QProcess::stateChanged, [this, f](ProcessState st) { f(this, st); });\n        return *this;\n    }\n\nsignals:\n\npublic slots:\n    void stopSafety() {\n        safeStop(this);\n        emit finished(exitCode());\n    }\n};\n\n#endif // CHILDPROCESS_H\n"
  },
  {
    "path": "ide/clangautocompletionprovider.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"childprocess.h\"\n#include \"clangautocompletionprovider.h\"\n#include \"projectmanager.h\"\n#include \"textmessagebrocker.h\"\n\n#include <QJsonArray>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <QProcess>\n#include <QRegularExpressionMatch>\n#include <QTimer>\n\n#include <QtConcurrent>\n\n#include <QtDebug>\n\nstatic QString getToken(QTextStream *s)\n{\n    bool escaped = false;\n    QChar cuoting = QChar();\n    QString token;\n    while(!s->atEnd()) {\n        QChar c;\n        *s >> c;\n        if (QString(\" \\t\").contains(c)) {\n            if (!cuoting.isNull()) {\n                token += c;\n                continue;\n            }\n            if (token.isEmpty()) {\n                if (cuoting == QChar())\n                    continue;\n            } else\n                break;\n        }\n        if (QString(\"\\\"'\").contains(c)) {\n            if (!escaped) {\n                if (cuoting == c)\n                    cuoting = QChar();\n                else if (cuoting.isNull())\n                    cuoting = c;\n            } else\n                escaped = false;\n            token += c;\n            continue;\n        }\n        escaped = !cuoting.isNull() && (c == '\\\\');\n        token += c;\n    }\n    return token;\n}\n\nstatic QStringList cmdLineTokenizer(const QString& line)\n{\n    QStringList tokens;\n    QString token;\n    QTextStream stream(line.toLocal8Bit(), QIODevice::ReadOnly);\n    while(!(token = getToken(&stream)).isNull())\n        tokens.append(token);\n    return tokens;\n}\n\nstatic const QRegularExpression EOL(R\"([\\r\\n])\");\n\nstatic void parseCompilerInfo(const QString& text, QStringList *incs, QStringList *defs)\n{\n#if 0\n    QRegularExpression definesRe(R\"(^\\#define (\\S+) (.*?)$)\", QRegularExpression::MultilineOption);\n    auto it = definesRe.globalMatch(text);\n    while (it.hasNext()) {\n        QRegularExpressionMatch m = it.next();\n#if 1\n        QString define = m.captured(0);\n        defs->append(define);\n#else\n        QString symbol = m.captured(1).remove(EOL);\n        QString value = m.captured(2).remove(EOL);\n        if (value.contains(QRegularExpression(\"[ \\\\t]\")))\n            value = value.prepend('\"').append('\"');\n        defs->append(QString(\"%1=%2\").arg(symbol).arg(value));\n#endif\n    }\n#else\n    Q_UNUSED(defs)\n#endif\n    bool onIncludes = false;\n    for(const QString& line: text.split('\\n')) {\n        if (!onIncludes) {\n            if (line.startsWith(\"#include <\")) {\n                onIncludes = true;\n            }\n        } else {\n            if (line.startsWith(\"End of search list\"))\n                onIncludes = false;\n            else {\n                QString ipath = line.trimmed();\n                if (!incs->contains(ipath))\n                    incs->append(\"-I\" + ipath);\n            }\n        }\n    }\n}\n\n\nclass ClangAutocompletionProvider::Priv_t\n{\npublic:\n\n    ProjectManager *project{ nullptr };\n    QHash<QString, ICodeModelProvider::FileReferenceList> nameMap;\n    QHash<QString, ICodeModelProvider::SymbolSetMap> symbolsForFiles;\n    QStringList includes;\n    QStringList defines;\n    QByteArray buffer;\n};\n\nClangAutocompletionProvider::ClangAutocompletionProvider(ProjectManager *proj, QObject *parent):\n    QObject(parent), priv(std::make_unique<Priv_t>())\n{\n    priv->project = proj;\n}\n\nClangAutocompletionProvider::~ClangAutocompletionProvider() {}\n\nvoid ClangAutocompletionProvider::startIndexingProject(const QString &path, FinishIndexProjectCallback_t cb)\n{\n    priv->nameMap.clear();\n    auto& p = ChildProcess::create(this)\n    .changeCWD(path)\n    .onError([this](QProcess *ctags, QProcess::ProcessError) {\n        constexpr auto TIMEOUT = 5000;\n        priv->project->showMessageTimed(tr(\"ctags error: %1\").arg(ctags->errorString()), TIMEOUT);\n    })\n    .onFinished([this, cb](QProcess *ctags, int exitStatus) {\n        qDebug() << \"ctags end with\" << exitStatus;\n        QtConcurrent::run([ctags, this, cb]() {\n            ctags->setReadChannel(QProcess::StandardOutput);\n            QDir cwd{ctags->workingDirectory()};\n            while(ctags->bytesAvailable() > 0) {\n                auto line = ctags->readLine();\n                auto entry = QJsonDocument::fromJson(line).object();\n                if (!entry.isEmpty()) {\n                    auto name = entry.value(\"name\").toString();\n                    auto text = entry.value(\"text\").toString();\n                    auto type = entry.value(\"type\").toString();\n                    auto lang = entry.value(\"lang\").toString();\n                    auto path = entry.value(\"path\").toString();\n                    auto line = entry.value(\"line\").toInt();\n                    static const QStringList TYPES{\n                        \"array\",\n                        \"boolean\",\n                        \"chapter\",\n                        \"enum\",\n                        \"enumerator\",\n                        \"externvar\",\n                        \"function\",\n                        \"macro\",\n                        \"object\",\n                        \"prototype\",\n                        \"section\",\n                        \"struct\",\n                        \"symbol\",\n                        \"typedef\",\n                        \"union\",\n                        \"variable\",\n                    };\n                    if (TYPES.contains(type)) {\n                        ICodeModelProvider::FileReference ref{ path, line, 0, text };\n                        ICodeModelProvider::Symbol sym{ name, text, lang, type, ref };\n                        priv->nameMap[name].append(ref);\n                        priv->symbolsForFiles[cwd.absoluteFilePath(path)][sym.type].insert(sym);\n                    }\n                }\n                if (!priv->project->isProjectOpen())\n                    break;\n            }\n            priv->project->showMessageTimed(tr(\"Index finished\"));\n            ctags->deleteLater();\n            cb();\n        });\n        priv->project->showMessage(tr(\"ctags end, processing...\"));\n    });\n    p.setTextModeEnabled(true);\n    p.start(\"universal-ctags\", {\n                 \"--map-R=-.s\",\n                 \"-n\", \"-R\", \"-e\",\n                 \"--all-kinds=*\",\n                 \"--extras=*\",\n                 \"--fields=*\",\n                 \"-x\",\n                 R\"(--_xformat={ \"name\": \"%N\", \"lang\": \"%l\", \"type\": \"%K\", \"path\": \"%F\", \"line\": %n, \"text\": \"%C\" })\"\n             });\n    priv->project->showMessage(tr(\"Indexing by ctags...\"));\n    priv->project->deleteOnCloseProject(&p);\n}\n\nvoid ClangAutocompletionProvider::startIndexingFile(const QString &path, FinishIndexFileCallback_t cb)\n{\n    Q_UNUSED(path)\n    auto targets = priv->project->targetsOfDependency(path);\n    auto& p = ChildProcess::create(this)\n            .makeDeleteLater()\n            .changeCWD(priv->project->projectPath())\n            .setenv({ { \"LC_ALL\", \"C\" }, { \"LANG\", \"C\" } })\n            .onFinished([this, cb](QProcess *make, int exitCode)\n    {\n        qDebug() << \"make discover exit with\" << exitCode;\n        QString out = make->readAllStandardOutput();\n        QRegularExpression re(R\"((\\S+[g]*(cc|\\+\\+))\\S*\\s+(.*?$))\", QRegularExpression::MultilineOption);\n        QRegularExpressionMatch m = re.match(out);\n        if (m.hasMatch()) {\n            QString compiler = m.captured(1);\n            QString compiler_type = m.captured(2);\n            QString parameters = m.captured(3);\n            qDebug() << \"CC:\" << compiler << \", type \" << compiler_type;\n            QStringList parameterList = cmdLineTokenizer(parameters);\n            QList<int> toRemove;\n            int idx = 0;\n            for(const QString& arg: parameterList) {\n                if (arg.startsWith(\"-I\"))\n                    priv->includes.append(arg);\n                else if (arg.startsWith(\"-D\"))\n                    priv->defines.append(arg);\n                else if (QRegularExpression(R\"(^-(?:MMD|MM|MG|MP|MD|M)$)\").match(arg).hasMatch())\n                    toRemove << idx;\n                else if (QRegularExpression(R\"(^-(?:MQ|MT|MF)$)\").match(arg).hasMatch())\n                    toRemove << idx << (idx + 1);\n                else if (arg == \"-c\")\n                    toRemove.append(idx);\n                else if (arg == \"-o\")\n                    toRemove << idx << (idx + 1);\n                idx++;\n            }\n            std::sort(toRemove.begin(), toRemove.end(),\n                  [](int a, int b) -> bool { return a > b; });\n            for(const auto& i: toRemove)\n                parameterList.removeAt(i);\n            parameterList.append(\"-dM\");\n            parameterList.append(\"-E\");\n            parameterList.append(\"-v\");\n            qDebug() << parameterList;\n            auto& p = ChildProcess::create(this)\n                    .changeCWD(make->workingDirectory())\n                    .mergeStdOutAndErr()\n                    .makeDeleteLater()\n                    .onFinished([this](QProcess *cc, int) {\n                QString out = cc->readAll();\n                parseCompilerInfo(out, &priv->includes, &priv->defines);\n                qDebug() << \"Includes:\" << priv->includes;\n                qDebug() << \"Defines:\" << priv->defines;\n            }).onError([](QProcess *cc, QProcess::ProcessError err) {\n                Q_UNUSED(err)\n                qDebug() << \"CC ERROR: \" << cc->program() << cc->arguments() << \"\\n\"\n                         << \"\\t\" << cc->errorString();\n            });\n            p.start(compiler, parameterList);\n            priv->project->deleteOnCloseProject(&p);\n            cb();\n        }\n    });\n    p.start(\"make\", QStringList{ \"-B\", \"-n\" } + targets);\n    priv->project->deleteOnCloseProject(&p);\n}\n\nvoid ClangAutocompletionProvider::referenceOf(const QString &entity, ICodeModelProvider::FindReferenceCallback_t cb)\n{\n    cb(priv->nameMap.value(entity));\n}\n\nstatic QString parseCompletion(const QString& text)\n{\n    return text.startsWith(\"Pattern : \")?\n                QString(text).remove(\"Pattern : \").remove(QRegularExpression(R\"([\\[|\\\\<]\\#[^\\#]*\\#[\\]|\\>])\")) :\n                text.contains(':')?\n                    QString(text.split(':').at(0)).trimmed() : text;\n}\n\nvoid ClangAutocompletionProvider::completionAt(const ICodeModelProvider::FileReference &ref, const QString &unsaved, ICodeModelProvider::CompletionCallback_t cb)\n{\n    auto& p = ChildProcess::create(this)\n            .makeDeleteLater()\n            .changeCWD(priv->project->projectPath())\n            .onStarted([unsaved](QProcess *clang) {\n        clang->write(unsaved.toLocal8Bit());\n        clang->waitForBytesWritten();\n        clang->closeWriteChannel();\n    }).onError([](QProcess *clang, QProcess::ProcessError err) {\n        qDebug() << \"clang error:\" << clang->errorString() << err;\n    }).onFinished([cb](QProcess *clang, int exitStatus) {\n        Q_UNUSED(exitStatus)\n        clang->deleteLater();\n        // qDebug() << \"clang finish:\" << exitStatus;\n        QStringList list;\n        QString out = clang->readAllStandardOutput();\n        // qDebug() << \"clang out:\\n\" << out;\n        QRegularExpression re(R\"(^COMPLETION: (.*?)$)\", QRegularExpression::MultilineOption);\n        auto it = re.globalMatch(out);\n        while(it.hasNext()) {\n            auto m = it.next();\n            list.append(parseCompletion(m.captured(1)));\n        }\n        cb(list);\n    });\n    p.start(\"clang\", QStringList{\n                 \"-x\", \"c\", \"-fcolor-diagnostics\", \"-fsyntax-only\",\n                 \"-Xclang\", \"-code-completion-macros\",\n                 \"-Xclang\", \"-code-completion-patterns\",\n                 \"-Xclang\", \"-code-completion-brief-comments\",\n                 \"-Xclang\", QString(\"-code-completion-at=-:%1:%2\").arg(ref.line + 1).arg(ref.column + 1),\n                 \"-\"\n             } + priv->defines + priv->includes);\n    priv->project->deleteOnCloseProject(&p);\n}\n\nvoid ClangAutocompletionProvider::requestSymbolForFile(const QString &path, ICodeModelProvider::SymbolRequestCallback_t cb)\n{\n    cb(priv->symbolsForFiles.value(path));\n}\n"
  },
  {
    "path": "ide/clangautocompletionprovider.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef CLANGAUTOCOMPLETIONPROVIDER_H\n#define CLANGAUTOCOMPLETIONPROVIDER_H\n\n#include <QObject>\n#include <icodemodelprovider.h>\n\n#include <memory>\n\nclass ProjectManager;\n\nclass ClangAutocompletionProvider: public QObject, public ICodeModelProvider\n{\n    Q_OBJECT\npublic:\n    explicit ClangAutocompletionProvider(ProjectManager *proj, QObject *parent);\n    virtual ~ClangAutocompletionProvider() override;\n\n    void startIndexingProject(const QString& path, FinishIndexProjectCallback_t cb) override;\n    void startIndexingFile(const QString& path, FinishIndexFileCallback_t cb) override;\n\n    void referenceOf(const QString& entity, FindReferenceCallback_t cb) override;\n    void completionAt(const FileReference& ref, const QString& unsaved, CompletionCallback_t cb) override;\n    void requestSymbolForFile(const QString& path, SymbolRequestCallback_t cb) override;\n\nprivate:\n    class Priv_t;\n    std::unique_ptr<Priv_t> priv;\n};\n\n#endif // CLANGAUTOCOMPLETIONPROVIDER_H\n"
  },
  {
    "path": "ide/codetexteditor.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"codetexteditor.h\"\n\n#include <QFileInfo>\n#include <QMenu>\n#include <QMimeDatabase>\n#include <QtDebug>\n\n#include <Qsci/qscilexeravs.h>\n#include <Qsci/qscilexerbash.h>\n#include <Qsci/qscilexerbatch.h>\n#include <Qsci/qscilexercmake.h>\n#include <Qsci/qscilexercoffeescript.h>\n#include <Qsci/qscilexercpp.h>\n#include <Qsci/qscilexercsharp.h>\n#include <Qsci/qscilexercss.h>\n#include <Qsci/qscilexercustom.h>\n#include <Qsci/qscilexerd.h>\n#include <Qsci/qscilexerdiff.h>\n#include <Qsci/qscilexerfortran77.h>\n#include <Qsci/qscilexerfortran.h>\n#include <Qsci/qscilexer.h>\n#include <Qsci/qscilexerhtml.h>\n#include <Qsci/qscilexeridl.h>\n#include <Qsci/qscilexerjava.h>\n#include <Qsci/qscilexerjavascript.h>\n#if QSCINTILLA_VERSION > 0x020900\n#include <Qsci/qscilexerjson.h>\n#include <Qsci/qscilexermarkdown.h>\n#endif\n#include <Qsci/qscilexerlua.h>\n#include <Qsci/qscilexermakefile.h>\n#include <Qsci/qscilexermatlab.h>\n#include <Qsci/qscilexeroctave.h>\n#include <Qsci/qscilexerpascal.h>\n#include <Qsci/qscilexerperl.h>\n#include <Qsci/qscilexerpo.h>\n#include <Qsci/qscilexerpostscript.h>\n#include <Qsci/qscilexerpov.h>\n#include <Qsci/qscilexerproperties.h>\n#include <Qsci/qscilexerpython.h>\n#include <Qsci/qscilexerruby.h>\n#include <Qsci/qscilexerspice.h>\n#include <Qsci/qscilexersql.h>\n#include <Qsci/qscilexertcl.h>\n#include <Qsci/qscilexertex.h>\n#include <Qsci/qscilexerverilog.h>\n#include <Qsci/qscilexervhdl.h>\n#include <Qsci/qscilexerxml.h>\n#include <Qsci/qscilexeryaml.h>\n\nstatic const QStringList MAKEFILES_NAME = {\n    \"makefile\",\n    \"Makefile\",\n    \"GNUMakefile\",\n};\n\nCodeTextEditor::CodeTextEditor(QWidget *parent) : PlainTextEditor(parent)\n{\n}\n\nCodeTextEditor::~CodeTextEditor() {}\n\nbool CodeTextEditor::load(const QString &path)\n{\n    setLexer(lexerFromFile(path));\n    auto r = PlainTextEditor::load(path);\n    QFileInfo info(path);\n    auto name = info.fileName();\n    auto suffix = info.suffix();\n    if (suffix == \"mk\" || MAKEFILES_NAME.contains(name)) {\n        setTabIndents(false);\n        setIndentationsUseTabs(true);\n    }\n    return r;\n}\n\ntemplate<typename T> QsciLexer *helperCreator() { return new T(); }\nusing creator_t = QsciLexer *(*)();\n\nstatic const QHash<QString, creator_t> EXTENTION_MAP = {\n#if QSCINTILLA_VERSION > 0x020900\n    { \"json\", &helperCreator<QsciLexerJSON> },\n   { \"md\", &helperCreator<QsciLexerMarkdown> },\n#endif\n   { \"sh\", &helperCreator<QsciLexerBash> },\n   { \"diff\", &helperCreator<QsciLexerDiff> },\n   { \"patch\", &helperCreator<QsciLexerDiff> },\n   { \"bat\", &helperCreator<QsciLexerBatch> },\n   { \"coffee\", &helperCreator<QsciLexerCoffeeScript> },\n   { \"litcoffee\", &helperCreator<QsciLexerCoffeeScript> },\n   { \"cs\", &helperCreator<QsciLexerCSharp> },\n   { \"css\", &helperCreator<QsciLexerCSS> },\n   { \"html\", &helperCreator<QsciLexerHTML> },\n   { \"htm\", &helperCreator<QsciLexerHTML> },\n   { \"java\", &helperCreator<QsciLexerJava> },\n   { \"js\", &helperCreator<QsciLexerJavaScript> },\n   { \"lua\", &helperCreator<QsciLexerLua> },\n   { \"mk\", &helperCreator<QsciLexerMakefile> },\n   { \"pas\", &helperCreator<QsciLexerPascal> },\n   { \"ps\", &helperCreator<QsciLexerPostScript> },\n   { \"py\", &helperCreator<QsciLexerPython> },\n   { \"rb\", &helperCreator<QsciLexerRuby> },\n   { \"tcl\", &helperCreator<QsciLexerTCL> },\n   { \"tex\", &helperCreator<QsciLexerTeX> },\n   { \"v\", &helperCreator<QsciLexerVerilog> },\n   { \"vhdl\", &helperCreator<QsciLexerVHDL> },\n   { \"vhd\", &helperCreator<QsciLexerVHDL> },\n   { \"xml\", &helperCreator<QsciLexerXML> },\n   { \"yaml\", &helperCreator<QsciLexerYAML> },\n   { \"yml\", &helperCreator<QsciLexerYAML> },\n};\n\nstatic const QHash<QString, creator_t> MIMETYPE_MAP = {\n#if QSCINTILLA_VERSION > 0x020900\n   { \"application/json\", &helperCreator<QsciLexerJSON> },\n   { \"text/markdown\", &helperCreator<QsciLexerMarkdown> },\n   { \"text/x-markdown\", &helperCreator<QsciLexerMarkdown> },\n#endif\n   { \"application/x-shellscript\", &helperCreator<QsciLexerBash> },\n   { \"text/x-avs\", &helperCreator<QsciLexerAVS> },\n   { \"text/x-bat\", &helperCreator<QsciLexerBatch> },\n   { \"text/x-cmake\", &helperCreator<QsciLexerCMake> },\n   { \"text/x-coffe\", &helperCreator<QsciLexerCoffeeScript> },\n   { \"text/x-csharp\", &helperCreator<QsciLexerCSharp> },\n   { \"text/x-csrc\", &helperCreator<QsciLexerCPP> },\n   { \"text/x-css\", &helperCreator<QsciLexerCSS> },\n   { \"text/x-diff\", &helperCreator<QsciLexerDiff> },\n   { \"text/x-dlang\", &helperCreator<QsciLexerD> },\n   { \"text/x-fortran\", &helperCreator<QsciLexerFortran> },\n   { \"text/x-html\", &helperCreator<QsciLexerHTML> },\n   { \"text/x-idl\", &helperCreator<QsciLexerIDL> },\n   { \"text/x-java\", &helperCreator<QsciLexerJava> },\n   { \"text/x-javascript\", &helperCreator<QsciLexerJavaScript> },\n   { \"text/x-lua\", &helperCreator<QsciLexerLua> },\n   { \"text/x-makefile\", &helperCreator<QsciLexerMakefile> },\n   { \"text/x-matlab\", &helperCreator<QsciLexerMatlab> },\n   { \"text/x-octave\", &helperCreator<QsciLexerOctave> },\n   { \"text/x-pascal\", &helperCreator<QsciLexerPascal> },\n   { \"text/x-perl\", &helperCreator<QsciLexerPerl> },\n   { \"text/x-po\", &helperCreator<QsciLexerPO> },\n   { \"text/x-pov\", &helperCreator<QsciLexerPOV> },\n   { \"text/x-properties\", &helperCreator<QsciLexerProperties> },\n   { \"text/x-ps\", &helperCreator<QsciLexerPostScript> },\n   { \"text/x-python\", &helperCreator<QsciLexerPython> },\n   { \"text/x-ruby\", &helperCreator<QsciLexerRuby> },\n   { \"text/x-spice\", &helperCreator<QsciLexerSpice> },\n   { \"text/x-sql\", &helperCreator<QsciLexerSQL> },\n   { \"text/x-tcl\", &helperCreator<QsciLexerTCL> },\n   { \"text/x-tex\", &helperCreator<QsciLexerTeX> },\n   { \"text/x-verilog\", &helperCreator<QsciLexerVerilog> },\n   { \"text/x-vhdl\", &helperCreator<QsciLexerVHDL> },\n   { \"text/x-xml\", &helperCreator<QsciLexerXML> },\n   { \"text/x-yaml\", &helperCreator<QsciLexerYAML> },\n};\n#undef _\n\nclass CodeEditorCreator: public IDocumentEditorCreator\n{\npublic:\n    ~CodeEditorCreator() override = default;\n    bool canHandleExtentions(const QStringList &suffixes) const override  {\n        for (const auto& suffix: suffixes)\n            if (EXTENTION_MAP.contains(suffix))\n                return true;\n        return false;\n    }\n\n    bool canHandleMime(const QMimeType &mime) const override {\n        return MIMETYPE_MAP.contains(mime.name());\n    }\n\n    IDocumentEditor *create(QWidget *parent = nullptr) const override {\n        return new CodeTextEditor(parent);\n    }\n};\n\nIDocumentEditorCreator *CodeTextEditor::creator()\n{\n    return IDocumentEditorCreator::staticCreator<CodeEditorCreator>();\n}\n\nQMenu *CodeTextEditor::createContextualMenu()\n{\n    QMenu *menu = PlainTextEditor::createContextualMenu();\n    return menu;\n}\n\nQsciLexer *CodeTextEditor::lexerFromFile(const QString& name)\n{\n    auto suffix = QFileInfo(name).suffix();\n    if (EXTENTION_MAP.contains(suffix)) {\n        qDebug() << \"for\" << name << \"suffix found as\" << suffix;\n        return EXTENTION_MAP.value(suffix)();\n    }\n    auto type = QMimeDatabase().mimeTypeForFile(name);\n    auto mimename = type.name();\n    if (MIMETYPE_MAP.contains(mimename)) {\n        qDebug() << \"for\" << name << \"mime found as\" << mimename;\n        return MIMETYPE_MAP.value(mimename)();\n    }\n    for(const auto& mname: type.parentMimeTypes()) {\n        if (MIMETYPE_MAP.contains(mname)) {\n            qDebug() << \"for\" << name << \"parent mime found as\" << mname;\n            return MIMETYPE_MAP.value(mname)();\n        }\n    }\n    qDebug() << \"No lexer found\";\n    return nullptr;\n}\n"
  },
  {
    "path": "ide/codetexteditor.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef CODETEXTEDITOR_H\n#define CODETEXTEDITOR_H\n\n#include \"plaintexteditor.h\"\n\nclass CodeTextEditor : public PlainTextEditor\n{\n    Q_OBJECT\npublic:\n    explicit CodeTextEditor(QWidget *parent = nullptr);\n    ~CodeTextEditor() override;\n\n    bool load(const QString &path) override;\n\n    static IDocumentEditorCreator *creator();\n\nprotected:\n\n    QMenu *createContextualMenu() override;\n\n    virtual QsciLexer *lexerFromFile(const QString& name);\n};\n\n#endif // CODETEXTEDITOR_H\n"
  },
  {
    "path": "ide/configwidget.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"configwidget.h\"\n#include \"ui_configwidget.h\"\n\n#include \"appconfig.h\"\n#include \"buttoneditoritemdelegate.h\"\n#include \"envinputdialog.h\"\n\n#include <QStringListModel>\n#include <QFileInfo>\n#include <QFileDialog>\n#include <QTimer>\n#include <QInputDialog>\n#include <QStandardItemModel>\n\n#include <QtDebug>\n\nstatic const QStringList ASTYLE_STYLES = {\n    \"1tbs\",\n    \"allman\",\n    \"attach\",\n    \"banner\",\n    \"break\",\n    \"bsd\",\n    \"gnu\",\n    \"google\",\n    \"horstmann\",\n    \"java\",\n    \"k\",\n    \"knf\",\n    \"kr\",\n    \"linux\",\n    \"lisp\",\n    \"otbs\",\n    \"pico\",\n    \"stroustrup\",\n    \"vtk\",\n    \"whitesmith\"\n};\n\nclass EnvironmentModel: public QStandardItemModel {\npublic:\n    EnvironmentModel(const QMap<QString, QString>& m, QTableView *parent = nullptr):\n        QStandardItemModel(parent)\n    {\n        setHorizontalHeaderLabels({ tr(\"Name\"), tr(\"Value\") });\n        for (auto it = m.constBegin(); it != m.constEnd(); ++it)\n            appendEntry(it.key(), it.value());\n        connect(this, &QStandardItemModel::itemChanged, [parent]() {\n            parent->resizeColumnToContents(0);\n        });\n    }\n\n    void appendEntry(const QString& key, const QString& val)\n    {\n        appendRow({new QStandardItem(key), new QStandardItem(val)});\n    }\n\n    QMap<QString, QString> toMap() const {\n        QMap<QString, QString> m;\n        for (int r = 0; r < rowCount(); r++) {\n            auto k = item(r, 0)->text();\n            auto v = item(r, 1)->text();\n            m.insert(k, v);\n        }\n        return m;\n    }\n};\n\nConfigWidget::ConfigWidget(QWidget *parent) :\n    QDialog(parent),\n    ui(std::make_unique<Ui::ConfigWidget>())\n{\n    ui->setupUi(this);\n    const struct { QToolButton *b; const char *icon; } buttonmap[] = {\n        { ui->projectPathSetButton, \"document-open\" },\n        { ui->tbPathAdd, \"list-add\" },\n        { ui->tbPathRm, \"list-remove\" },\n        { ui->tbEnvAdd, \"list-add\" },\n        { ui->tbEnvRm, \"list-remove\" },\n    };\n    for (const auto& e: buttonmap)\n        e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.icon })});\n\n    ui->languageList->addItems(QStringList{ \"\" } + AppConfig::langList());\n    ui->tabWidget->setCurrentIndex(0);\n    for(const auto& fi: QDir(\":/styles\").entryInfoList({ \"*.xml\" }))\n        ui->editorStyle->addItem(fi.baseName());\n    ui->codeEditor->load(\":/reference-code.c\");\n    ui->codeEditor->setReadonly(true);\n    ui->formatterStyle->addItems(ASTYLE_STYLES);\n\n    auto updateEditor = [this]() {\n        // Defer execution to next event loop due sender actualization\n        QTimer::singleShot(0, [this]() {\n            auto font = ui->editorFontName->currentFont();\n            font.setPointSize(ui->editorFontSize->value());\n            ui->codeEditor->loadConfigWithStyle(\n                        ui->editorStyle->currentText(),\n                        font,\n                        ui->editorTabWidth->value(),\n                        ui->editorReplaceTabs->isChecked());\n            ui->codeEditor->reload();\n        });\n    };\n\n    auto delegateFunc = [this](const QModelIndex& m)\n    {\n        auto model = ui->additionalPathList->model();\n        auto currPath = AppConfig::replaceWithEnv(model->data(m).toString());\n        auto newPath = QFileDialog::getExistingDirectory(window(), tr(\"Select directory\"), currPath);\n        if (!newPath.isEmpty())\n            model->setData(m, newPath);\n    };\n\n    auto delegate = new ButtonEditorItemDelegate<decltype (delegateFunc)>(tr(\"Select File\"), delegateFunc);\n    ui->additionalPathList->setItemDelegateForColumn(0, delegate);\n\n    connect(ui->editorStyle, &QComboBox::currentTextChanged, updateEditor);\n    connect(ui->editorFontName, &QComboBox::currentTextChanged, updateEditor);\n    connect(ui->editorFontSize, QOverload<int>::of(&QSpinBox::valueChanged), updateEditor);\n    connect(ui->editorReplaceTabs, &QCheckBox::toggled, updateEditor);\n    connect(ui->editorTabWidth, QOverload<int>::of(&QSpinBox::valueChanged), updateEditor);\n\n    connect(ui->projectPathSetButton, &QToolButton::clicked, [this]() {\n        auto dir = QFileInfo(AppConfig::instance().workspacePath()).absolutePath();\n        auto path = QFileDialog::getExistingDirectory(this, tr(\"Select workspace directory\"), dir);\n        if (!path.isEmpty())\n            ui->workspacePath->setText(path);\n    });\n    connect(ui->tbPathRm, &QToolButton::clicked, [this]() {\n        auto idx = ui->additionalPathList->currentIndex().row();\n        if (idx != -1) {\n            auto m = qobject_cast<QStringListModel*>(ui->additionalPathList->model());\n            m->removeRows(idx, 1);\n        }\n    });\n    connect(ui->tbPathAdd, &QToolButton::clicked, [this]() {\n        auto path = QDir::homePath();\n        auto idx = ui->additionalPathList->currentIndex();\n        if (idx.isValid()) {\n            path = ui->additionalPathList->model()->data(idx, Qt::DisplayRole).toString();\n            path = AppConfig::replaceWithEnv(path);\n        }\n        path = QFileDialog::getExistingDirectory(window(), tr(\"Select directory\"), path, nullptr);\n        if (!path.isEmpty()) {\n            auto m = qobject_cast<QStringListModel*>(ui->additionalPathList->model());\n            auto list = m->stringList();\n            list.append(path);\n            m->setStringList(list);\n        }\n    });\n    connect(ui->tbEnvRm, &QToolButton::clicked, [this]() {\n        auto idx = ui->additionalEnvTable->currentIndex().row();\n        if (idx != -1) {\n            auto m = qobject_cast<QStandardItemModel*>(ui->additionalEnvTable->model());\n            if (m) {\n                m->removeRows(idx, 1);\n                ui->additionalEnvTable->selectionModel()->clear();\n            }\n        }\n    });\n    connect(ui->tbEnvAdd, &QToolButton::clicked, [this]() {\n        EnvInputDialog d(window());\n        if (d.exec() == QDialog::Accepted) {\n            auto m = static_cast<EnvironmentModel*>(ui->additionalEnvTable->model());\n            if (m) {\n                m->appendEntry(d.envName(), d.envValue());\n            }\n        }\n    });\n}\n\nConfigWidget::~ConfigWidget()\n{\n}\n\nvoid ConfigWidget::save()\n{\n    auto &conf = AppConfig::instance();\n    conf.setWorkspacePath(ui->workspacePath->text());\n    conf.setAdditionalPaths(qobject_cast<QStringListModel*>(ui->additionalPathList->model())->stringList());\n    auto envModel = static_cast<EnvironmentModel*>(ui->additionalEnvTable->model());\n    if (envModel)\n        conf.setAdditionalEnv(envModel->toMap());\n    conf.setEditorStyle(ui->editorStyle->currentText());\n    auto editorFont = ui->editorFontName->currentFont();\n    editorFont.setPointSize(ui->editorFontSize->value());\n    conf.setEditorFont(editorFont);\n    conf.setEditorSaveOnAction(ui->saveOnActionTarget->isChecked());\n    conf.setEditorTabsToSpaces(ui->editorReplaceTabs->isChecked());\n    conf.setEditorTabWidth(ui->editorTabWidth->value());\n    conf.setEditorShowSpaces(ui->editorShowSpaces->isChecked());\n    conf.setEditorFormatterStyle(ui->formatterStyle->currentText());\n    conf.setEditorDetectIdent(ui->editorDetectIdent->isChecked());\n    conf.setTemplatesUrl(ui->templateSettings->repositoryUrl().toString());\n    auto loggerFont = ui->loggerFontName->currentFont();\n    loggerFont.setPointSize(ui->loggerFontSize->value());\n    conf.setLoggerFont(loggerFont);\n    conf.setNetworkProxyHost(ui->proxyHost->text());\n    conf.setNetworkProxyPort(ui->proxyPort->text());\n    conf.setNetworkProxyUseCredentials(ui->useAutentication->isChecked());\n    conf.setNetworkProxyType([this]() {\n        if(ui->systemProxy->isChecked()) {\n            return AppConfig::NetworkProxyType::System;\n        }\n        if(ui->userProxy->isChecked()) {\n            return AppConfig::NetworkProxyType::Custom;\n        }\n        { return AppConfig::NetworkProxyType::None;}\n    }());\n    conf.setNetworkProxyUsername(ui->username->text());\n    conf.setNetworkProxyPassword(ui->password->text());\n    conf.setProjectTemplatesAutoUpdate(ui->autoUpdateProjectTmplates->isChecked());\n    conf.setUseDevelopMode(ui->useDevelopment->isChecked());\n    conf.setUseDarkStyle(ui->useDarkStyle->isChecked());\n    conf.setLanguage(ui->languageList->currentText());\n    conf.setNumberOfJobs(ui->numberOfJobs->value());\n    conf.setNumberOfJobsOptimal(ui->numberOfJobsOptimal->isChecked());\n    conf.save();\n}\n\nvoid ConfigWidget::load()\n{\n    auto &conf = AppConfig::instance();\n    ui->workspacePath->setText(conf.workspacePath());\n    ui->additionalPathList->setModel(new QStringListModel(conf.additionalPaths(), this));\n    ui->additionalEnvTable->setModel(new EnvironmentModel(conf.additionalEnv(), ui->additionalEnvTable));\n    ui->additionalEnvTable->resizeColumnToContents(0);\n    ui->editorStyle->setCurrentText(conf.editorStyle());\n    auto editorFont = conf.editorFont();\n    ui->editorFontName->setCurrentFont(editorFont);\n    ui->editorFontSize->setValue(editorFont.pointSize());\n    ui->saveOnActionTarget->setChecked(conf.editorSaveOnAction());\n    ui->editorReplaceTabs->setChecked(conf.editorTabsToSpaces());\n    ui->editorTabWidth->setValue(conf.editorTabWidth());\n    ui->editorDetectIdent->setChecked(conf.editorDetectIdent());\n    ui->editorShowSpaces->setChecked(conf.editorShowSpaces());\n    ui->formatterStyle->setCurrentText(conf.editorFormatterStyle());\n    ui->formatterExtra->setText(conf.editorFormatterExtra());\n    ui->templateSettings->setRepositoryUrl(conf.templatesUrl());\n    auto loggerFont = conf.loggerFont();\n    ui->loggerFontName->setCurrentFont(loggerFont);\n    ui->loggerFontSize->setValue(loggerFont.pointSize());\n    ui->proxyHost->setText(conf.networkProxyHost());\n    ui->proxyPort->setText(conf.networkProxyPort());\n    ui->useAutentication->setChecked(conf.networkProxyUseCredentials());\n    switch (static_cast<AppConfig::NetworkProxyType>(conf.networkProxyType())) {\n    case AppConfig::NetworkProxyType::None:\n        ui->noProxy->setChecked(true);\n        break;\n    case AppConfig::NetworkProxyType::System:\n        ui->systemProxy->setChecked(true);\n        break;\n    case AppConfig::NetworkProxyType::Custom:\n        ui->userProxy->setChecked(true);\n        break;\n    }\n    ui->username->setText(conf.networkProxyUsername());\n    ui->password->setText(conf.networkProxyPassword());\n    ui->autoUpdateProjectTmplates->setChecked(conf.projectTemplatesAutoUpdate());\n    ui->useDevelopment->setChecked(conf.useDevelopMode());\n    ui->useDarkStyle->setChecked(conf.useDarkStyle());\n    ui->languageList->setCurrentText(conf.language());\n    ui->numberOfJobs->setValue(conf.numberOfJobs());\n    ui->numberOfJobsOptimal->setChecked(conf.numberOfJobsOptimal());\n}\n"
  },
  {
    "path": "ide/configwidget.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef CONFIGWIDGET_H\n#define CONFIGWIDGET_H\n\n#include <QDialog>\n\n#include <memory>\n\nnamespace Ui {\nclass ConfigWidget;\n}\n\nclass ConfigWidget : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit ConfigWidget(QWidget *parent = nullptr);\n    virtual ~ConfigWidget();\n\npublic slots:\n    void save();\n    void load();\n\nprotected:\n    void showEvent(QShowEvent *) { load(); }\n\nprivate:\n    std::unique_ptr<Ui::ConfigWidget> ui;\n};\n\n#endif // CONFIGWIDGET_H\n"
  },
  {
    "path": "ide/configwidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ConfigWidget</class>\n <widget class=\"QDialog\" name=\"ConfigWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>662</width>\n    <height>609</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Configuration</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <widget class=\"QTabWidget\" name=\"tabWidget\">\n     <property name=\"currentIndex\">\n      <number>1</number>\n     </property>\n     <widget class=\"QWidget\" name=\"editorSettings\">\n      <attribute name=\"title\">\n       <string>Editor</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout\">\n       <item row=\"3\" column=\"0\" colspan=\"3\">\n        <widget class=\"QCheckBox\" name=\"saveOnActionTarget\">\n         <property name=\"text\">\n          <string>Save editor contents on target action</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_4\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"text\">\n          <string>Editor Font</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"7\" column=\"0\" colspan=\"3\">\n        <widget class=\"QSpinBox\" name=\"editorTabWidth\">\n         <property name=\"suffix\">\n          <string> spaces</string>\n         </property>\n         <property name=\"prefix\">\n          <string>Tab width is </string>\n         </property>\n         <property name=\"minimum\">\n          <number>1</number>\n         </property>\n         <property name=\"maximum\">\n          <number>80</number>\n         </property>\n         <property name=\"value\">\n          <number>4</number>\n         </property>\n        </widget>\n       </item>\n       <item row=\"6\" column=\"0\">\n        <widget class=\"QCheckBox\" name=\"editorDetectIdent\">\n         <property name=\"text\">\n          <string>Detect file identation</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"1\" colspan=\"2\">\n        <widget class=\"QComboBox\" name=\"editorStyle\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"2\">\n        <widget class=\"QSpinBox\" name=\"editorFontSize\">\n         <property name=\"minimum\">\n          <number>6</number>\n         </property>\n         <property name=\"maximum\">\n          <number>72</number>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\" colspan=\"3\">\n        <widget class=\"CPPTextEditor\" name=\"codeEditor\" native=\"true\"/>\n       </item>\n       <item row=\"1\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_2\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"text\">\n          <string>Color style</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"1\">\n        <widget class=\"QFontComboBox\" name=\"editorFontName\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item row=\"4\" column=\"0\" colspan=\"3\">\n        <widget class=\"QCheckBox\" name=\"editorShowSpaces\">\n         <property name=\"text\">\n          <string>Show spaces in editor</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"5\" column=\"0\">\n        <widget class=\"QCheckBox\" name=\"editorReplaceTabs\">\n         <property name=\"text\">\n          <string>Replace tabs with spaces</string>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"toolsSettings\">\n      <attribute name=\"title\">\n       <string>Environment</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout_3\">\n       <item row=\"0\" column=\"1\">\n        <widget class=\"QLineEdit\" name=\"workspacePath\"/>\n       </item>\n       <item row=\"1\" column=\"0\" colspan=\"3\">\n        <widget class=\"QGroupBox\" name=\"groupBox_2\">\n         <property name=\"title\">\n          <string>Additional PATHs</string>\n         </property>\n         <layout class=\"QGridLayout\" name=\"gridLayout_2\">\n          <item row=\"0\" column=\"0\" rowspan=\"3\">\n           <widget class=\"QListView\" name=\"additionalPathList\"/>\n          </item>\n          <item row=\"0\" column=\"1\">\n           <widget class=\"QToolButton\" name=\"tbPathAdd\">\n            <property name=\"text\">\n             <string>...</string>\n            </property>\n            <property name=\"icon\">\n             <iconset theme=\"list-add\">\n              <normaloff>.</normaloff>.</iconset>\n            </property>\n            <property name=\"iconSize\">\n             <size>\n              <width>32</width>\n              <height>32</height>\n             </size>\n            </property>\n           </widget>\n          </item>\n          <item row=\"1\" column=\"1\">\n           <widget class=\"QToolButton\" name=\"tbPathRm\">\n            <property name=\"text\">\n             <string>...</string>\n            </property>\n            <property name=\"icon\">\n             <iconset theme=\"list-remove\">\n              <normaloff>.</normaloff>.</iconset>\n            </property>\n            <property name=\"iconSize\">\n             <size>\n              <width>32</width>\n              <height>32</height>\n             </size>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"2\">\n        <widget class=\"QToolButton\" name=\"projectPathSetButton\">\n         <property name=\"icon\">\n          <iconset theme=\"document-open\">\n           <normaloff>.</normaloff>.</iconset>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label\">\n         <property name=\"text\">\n          <string>Workspace PATH</string>\n         </property>\n         <property name=\"alignment\">\n          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\" colspan=\"3\">\n        <widget class=\"QGroupBox\" name=\"groupBox_4\">\n         <property name=\"title\">\n          <string>Additional Environment Variables</string>\n         </property>\n         <layout class=\"QGridLayout\" name=\"gridLayout_4\">\n          <item row=\"0\" column=\"0\" rowspan=\"3\">\n           <widget class=\"QTableView\" name=\"additionalEnvTable\">\n            <property name=\"alternatingRowColors\">\n             <bool>true</bool>\n            </property>\n            <property name=\"selectionMode\">\n             <enum>QAbstractItemView::SingleSelection</enum>\n            </property>\n            <property name=\"selectionBehavior\">\n             <enum>QAbstractItemView::SelectRows</enum>\n            </property>\n            <attribute name=\"horizontalHeaderStretchLastSection\">\n             <bool>true</bool>\n            </attribute>\n            <attribute name=\"verticalHeaderVisible\">\n             <bool>false</bool>\n            </attribute>\n           </widget>\n          </item>\n          <item row=\"0\" column=\"1\">\n           <widget class=\"QToolButton\" name=\"tbEnvAdd\">\n            <property name=\"text\">\n             <string>...</string>\n            </property>\n            <property name=\"icon\">\n             <iconset theme=\"list-add\">\n              <normaloff>.</normaloff>.</iconset>\n            </property>\n            <property name=\"iconSize\">\n             <size>\n              <width>32</width>\n              <height>32</height>\n             </size>\n            </property>\n           </widget>\n          </item>\n          <item row=\"1\" column=\"1\">\n           <widget class=\"QToolButton\" name=\"tbEnvRm\">\n            <property name=\"text\">\n             <string>...</string>\n            </property>\n            <property name=\"icon\">\n             <iconset theme=\"list-remove\">\n              <normaloff>.</normaloff>.</iconset>\n            </property>\n            <property name=\"iconSize\">\n             <size>\n              <width>32</width>\n              <height>32</height>\n             </size>\n            </property>\n           </widget>\n          </item>\n          <item row=\"2\" column=\"1\">\n           <spacer name=\"verticalSpacer_5\">\n            <property name=\"orientation\">\n             <enum>Qt::Vertical</enum>\n            </property>\n            <property name=\"sizeHint\" stdset=\"0\">\n             <size>\n              <width>0</width>\n              <height>0</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n         </layout>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"TemplateManager\" name=\"templateSettings\">\n      <attribute name=\"title\">\n       <string>Templates</string>\n      </attribute>\n     </widget>\n     <widget class=\"QWidget\" name=\"proxySettings\">\n      <attribute name=\"title\">\n       <string>Proxy</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout_5\">\n       <item row=\"0\" column=\"0\">\n        <widget class=\"QGroupBox\" name=\"groupBox_3\">\n         <property name=\"title\">\n          <string>HTTP proxy for network access</string>\n         </property>\n         <layout class=\"QVBoxLayout\" name=\"verticalLayout_4\">\n          <item>\n           <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n            <item>\n             <widget class=\"QRadioButton\" name=\"noProxy\">\n              <property name=\"text\">\n               <string>None</string>\n              </property>\n              <attribute name=\"buttonGroup\">\n               <string notr=\"true\">buttonGroup</string>\n              </attribute>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QRadioButton\" name=\"systemProxy\">\n              <property name=\"text\">\n               <string>System proxy</string>\n              </property>\n              <attribute name=\"buttonGroup\">\n               <string notr=\"true\">buttonGroup</string>\n              </attribute>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QRadioButton\" name=\"userProxy\">\n              <property name=\"text\">\n               <string>Custom proxy</string>\n              </property>\n              <attribute name=\"buttonGroup\">\n               <string notr=\"true\">buttonGroup</string>\n              </attribute>\n             </widget>\n            </item>\n           </layout>\n          </item>\n          <item>\n           <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n            <item>\n             <widget class=\"QLabel\" name=\"labelHost\">\n              <property name=\"text\">\n               <string>Host</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QLineEdit\" name=\"proxyHost\">\n              <property name=\"enabled\">\n               <bool>false</bool>\n              </property>\n              <property name=\"text\">\n               <string>localhost</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QLabel\" name=\"labelPort\">\n              <property name=\"text\">\n               <string>Port</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QLineEdit\" name=\"proxyPort\">\n              <property name=\"enabled\">\n               <bool>false</bool>\n              </property>\n              <property name=\"text\">\n               <string>3128</string>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </item>\n          <item>\n           <spacer name=\"verticalSpacer_2\">\n            <property name=\"orientation\">\n             <enum>Qt::Vertical</enum>\n            </property>\n            <property name=\"sizeHint\" stdset=\"0\">\n             <size>\n              <width>20</width>\n              <height>40</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n          <item>\n           <widget class=\"QGroupBox\" name=\"useAutentication\">\n            <property name=\"title\">\n             <string>Proxy authentication</string>\n            </property>\n            <property name=\"checkable\">\n             <bool>true</bool>\n            </property>\n            <property name=\"checked\">\n             <bool>false</bool>\n            </property>\n            <layout class=\"QFormLayout\" name=\"formLayout\">\n             <item row=\"0\" column=\"0\">\n              <widget class=\"QLabel\" name=\"labelUsername\">\n               <property name=\"text\">\n                <string>Username</string>\n               </property>\n              </widget>\n             </item>\n             <item row=\"0\" column=\"1\">\n              <widget class=\"QLineEdit\" name=\"username\">\n               <property name=\"echoMode\">\n                <enum>QLineEdit::Normal</enum>\n               </property>\n              </widget>\n             </item>\n             <item row=\"1\" column=\"0\">\n              <widget class=\"QLabel\" name=\"labelPassword\">\n               <property name=\"text\">\n                <string>Password</string>\n               </property>\n              </widget>\n             </item>\n             <item row=\"1\" column=\"1\">\n              <widget class=\"QLineEdit\" name=\"password\">\n               <property name=\"echoMode\">\n                <enum>QLineEdit::Password</enum>\n               </property>\n              </widget>\n             </item>\n            </layout>\n           </widget>\n          </item>\n         </layout>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"behaviorSettings\">\n      <attribute name=\"title\">\n       <string>Behavior</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout_6\">\n       <item row=\"3\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_7\">\n         <property name=\"text\">\n          <string>Format Style</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"8\" column=\"1\" colspan=\"2\">\n        <widget class=\"QComboBox\" name=\"languageList\"/>\n       </item>\n       <item row=\"11\" column=\"0\" colspan=\"3\">\n        <spacer name=\"verticalSpacer_3\">\n         <property name=\"orientation\">\n          <enum>Qt::Vertical</enum>\n         </property>\n         <property name=\"sizeHint\" stdset=\"0\">\n          <size>\n           <width>20</width>\n           <height>40</height>\n          </size>\n         </property>\n        </spacer>\n       </item>\n       <item row=\"1\" column=\"2\">\n        <widget class=\"QSpinBox\" name=\"loggerFontSize\">\n         <property name=\"minimum\">\n          <number>6</number>\n         </property>\n         <property name=\"maximum\">\n          <number>72</number>\n         </property>\n        </widget>\n       </item>\n       <item row=\"3\" column=\"1\" colspan=\"2\">\n        <widget class=\"QComboBox\" name=\"formatterStyle\"/>\n       </item>\n       <item row=\"9\" column=\"0\" colspan=\"3\">\n        <widget class=\"QWidget\" name=\"widget_2\" native=\"true\">\n         <property name=\"minimumSize\">\n          <size>\n           <width>0</width>\n           <height>1</height>\n          </size>\n         </property>\n         <property name=\"styleSheet\">\n          <string notr=\"true\">border-bottom: 1px solid;\nborder-bottom-color: rgb(0, 0, 0, 96);</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"4\" column=\"1\" colspan=\"2\">\n        <widget class=\"QLineEdit\" name=\"formatterExtra\"/>\n       </item>\n       <item row=\"6\" column=\"0\" colspan=\"2\">\n        <widget class=\"QCheckBox\" name=\"useDarkStyle\">\n         <property name=\"text\">\n          <string>Use dark style</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"4\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_8\">\n         <property name=\"text\">\n          <string>Format extra paramters:</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_6\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"text\">\n          <string>Log View Font</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\" colspan=\"3\">\n        <widget class=\"QWidget\" name=\"widget\" native=\"true\">\n         <property name=\"minimumSize\">\n          <size>\n           <width>0</width>\n           <height>1</height>\n          </size>\n         </property>\n         <property name=\"styleSheet\">\n          <string notr=\"true\">border-bottom: 1px solid;\nborder-bottom-color: rgb(0, 0, 0, 96);</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"1\">\n        <widget class=\"QFontComboBox\" name=\"loggerFontName\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"fontFilters\">\n          <set>QFontComboBox::MonospacedFonts</set>\n         </property>\n        </widget>\n       </item>\n       <item row=\"5\" column=\"0\">\n        <widget class=\"QCheckBox\" name=\"useDevelopment\">\n         <property name=\"text\">\n          <string>Use in-progress/development characteristics</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"0\" colspan=\"2\">\n        <widget class=\"QCheckBox\" name=\"autoUpdateProjectTmplates\">\n         <property name=\"text\">\n          <string>Check for project templates updates at start up</string>\n         </property>\n         <property name=\"checked\">\n          <bool>true</bool>\n         </property>\n        </widget>\n       </item>\n       <item row=\"8\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_9\">\n         <property name=\"text\">\n          <string>Current language</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"10\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_10\">\n         <property name=\"text\">\n          <string>Number of jobs in Makefile</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"10\" column=\"1\">\n        <widget class=\"QSpinBox\" name=\"numberOfJobs\">\n         <property name=\"minimum\">\n          <number>1</number>\n         </property>\n        </widget>\n       </item>\n       <item row=\"10\" column=\"2\">\n        <widget class=\"QCheckBox\" name=\"numberOfJobsOptimal\">\n         <property name=\"text\">\n          <string>Optimal</string>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n     <property name=\"standardButtons\">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>CPPTextEditor</class>\n   <extends>QWidget</extends>\n   <header>cpptexteditor.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>TemplateManager</class>\n   <extends>QWidget</extends>\n   <header>templatemanager.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>ConfigWidget</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>181</x>\n     <y>457</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>183</x>\n     <y>480</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>ConfigWidget</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>272</x>\n     <y>455</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>272</x>\n     <y>483</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>proxyHost</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>119</x>\n     <y>76</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>119</x>\n     <y>76</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>proxyPort</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>119</x>\n     <y>76</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>119</x>\n     <y>76</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>useAutentication</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>57</x>\n     <y>76</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>84</x>\n     <y>76</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>editorDetectIdent</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>editorTabWidth</receiver>\n   <slot>setDisabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>43</x>\n     <y>62</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>94</x>\n     <y>65</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>numberOfJobsOptimal</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>numberOfJobs</receiver>\n   <slot>setDisabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>578</x>\n     <y>303</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>477</x>\n     <y>301</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n <buttongroups>\n  <buttongroup name=\"buttonGroup\"/>\n </buttongroups>\n</ui>\n"
  },
  {
    "path": "ide/consoleinterceptor.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"consoleinterceptor.h\"\n#include \"processmanager.h\"\n\n#include <QTextCursor>\n#include <QTextBrowser>\n#include <QGridLayout>\n#include <QScrollBar>\n#include <QToolButton>\n#include <QEvent>\n\nConsoleInterceptor::ConsoleInterceptor(QTextBrowser *textBrowser, QObject *parent) :\n    QObject(parent), browser(textBrowser)\n{\n    const auto size = QSize(16, 16);\n    auto gl = new QGridLayout(textBrowser);\n    m_clearButton = new QToolButton(textBrowser);\n    m_clearButton->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", \"edit-clear\" })));\n    m_clearButton->setAutoRaise(true);\n    m_clearButton->setIconSize(size);\n    m_clearButton->setToolTip(tr(\"Clear Console\"));\n\n    m_killButton = new QToolButton(textBrowser);\n    m_killButton->setEnabled(false);\n    m_killButton->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", \"window-close\" })));\n    m_killButton->setAutoRaise(true);\n    m_killButton->setIconSize(size);\n    m_killButton->setToolTip(tr(\"Stop Current Process\"));\n\n    gl->addWidget(m_clearButton,  0, 1);\n    gl->addWidget(m_killButton, 0, 2);\n    gl->setColumnStretch(0, 1);\n    gl->setRowStretch(1, 1);\n    gl->setContentsMargins(0, 0, textBrowser->verticalScrollBar()->sizeHint().width(), 0);\n    gl->setSpacing(0);\n    textBrowser->setFont(QFont(\"Courier\"));\n    connect(&AppConfig::instance(), &AppConfig::configChanged, [textBrowser](AppConfig *conf) {\n        textBrowser->setFont(conf->loggerFont());\n    });\n}\n\nConsoleInterceptor::~ConsoleInterceptor() {}\n\nvoid ConsoleInterceptor::writeMessageTo(QTextBrowser *browser, const QString &message, const QColor &color)\n{\n    QTextCharFormat fmt;\n    fmt.setForeground(color.isValid()? color : browser->palette().text().color());\n    writeMessageTo(browser, message, fmt);\n}\n\nvoid ConsoleInterceptor::writeMessageTo(QTextBrowser *browser, const QString &message, const QTextCharFormat &fmt)\n{\n    auto cursor = browser->textCursor();\n    cursor.beginEditBlock();\n    cursor.movePosition(QTextCursor::End);\n    cursor.setCharFormat(fmt);\n    cursor.insertText(message);\n    cursor.endEditBlock();\n    browser->verticalScrollBar()->setValue(browser->verticalScrollBar()->maximum());\n}\n\nvoid ConsoleInterceptor::writeHtmlTo(QTextBrowser *browser, const QString &html)\n{\n    auto cursor = browser->textCursor();\n    cursor.beginEditBlock();\n    cursor.movePosition(QTextCursor::End);\n    cursor.insertHtml(html);\n    cursor.endEditBlock();\n    browser->verticalScrollBar()->setValue(browser->verticalScrollBar()->maximum());\n}\n\nvoid ConsoleInterceptor::appendToConsole(QProcess::ProcessChannel s, QProcess *p, const QString &text)\n{\n    Q_UNUSED(p)\n    const auto& filters = s == QProcess::StandardError? stderrFilters : stdoutFilters;\n    QString processedText{ text };\n    for(const auto& c: filters)\n        if (c(browser, processedText))\n            return;\n    writeMessage(processedText, browser->palette().text().color());\n}\n\nvoid ConsoleInterceptor::writeMessage(const QString &message, const QColor &color)\n{\n    writeMessageTo(browser, message, color);\n}\n\nvoid ConsoleInterceptor::writeFmtMessage(const QString &message, const QTextCharFormat &fmt)\n{\n    writeMessageTo(browser, message, fmt);\n}\n\nvoid ConsoleInterceptor::writeHtml(const QString &html)\n{\n    writeHtmlTo(browser, html);\n}\n"
  },
  {
    "path": "ide/consoleinterceptor.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef CONSOLEINTERCEPTOR_H\n#define CONSOLEINTERCEPTOR_H\n\n#include <QObject>\n#include <QProcess>\n\n#include <functional>\n#include <QToolButton>\n#include <QTextCharFormat>\n\nclass QTextBrowser;\nclass QProcess;\n\nclass ProcessManager;\n\nusing ConsoleInterceptorFilter = std::function<bool (QTextBrowser *b, QString& s)>;\n\nclass ConsoleInterceptor : public QObject\n{\n    Q_OBJECT\npublic:\n\n    explicit ConsoleInterceptor(QTextBrowser *textBrowser, QObject *parent = nullptr);\n    virtual ~ConsoleInterceptor();\n\n    QToolButton *killButton() { return m_killButton; }\n    QToolButton *clearButton() { return m_clearButton; }\n\n    static void writeMessageTo(QTextBrowser *browser, const QString& message, const QColor& color={});\n    static void writeMessageTo(QTextBrowser *browser, const QString& message, const QTextCharFormat &fmt);\n    static void writeHtmlTo(QTextBrowser *browser, const QString& html);\n\n    void addStdOutFilter(const ConsoleInterceptorFilter& f) { stdoutFilters.append(f); }\n    void addStdErrFilter(const ConsoleInterceptorFilter& f) { stderrFilters.append(f); }\n\n    void appendToConsole(QProcess::ProcessChannel s, QProcess *p, const QString& text);\nsignals:\n\npublic slots:\n    void writeMessage(const QString& message, const QColor& color={});\n    void writeFmtMessage(const QString& message, const QTextCharFormat& fmt);\n    void writeHtml(const QString& html);\n\nprivate:\n    QToolButton *m_killButton;\n    QToolButton *m_clearButton;\n    QTextBrowser *browser;\n    QList<ConsoleInterceptorFilter> stdoutFilters;\n    QList<ConsoleInterceptorFilter> stderrFilters;\n};\n\n#endif // CONSOLEINTERCEPTOR_H\n"
  },
  {
    "path": "ide/cpptexteditor.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"cpptexteditor.h\"\n#include \"filereferencesdialog.h\"\n#include \"icodemodelprovider.h\"\n#include \"textmessagebrocker.h\"\n\n#include <Qsci/qscilexercpp.h>\n#include <Qsci/qsciabstractapis.h>\n\n#include <QMenu>\n\n#include <QMimeDatabase>\n#include <QRegularExpression>\n#include <QShortcut>\n#include <astyle.h>\n\n#include <QtDebug>\n#include <astyle_main.h>\n\nstatic const QStringList C_CXX_EXTENSIONS = { \"c\", \"cpp\", \"h\", \"hpp\", \"cc\", \"hh\", \"hxx\", \"cxx\", \"c++\", \"h++\" };\nstatic const QStringList C_MIMETYPE = { \"text/x-c++src\", \"text/x-c++hdr\" };\nstatic const QStringList CXX_MIMETYPE = { \"text/x-c\", \"text/x-csrc\", \"text/x-chdr\" };\n\nstatic inline void triggerFindAndOpen(const QString& filePath)\n{\n    TextMessageBrocker::instance().publish(\"findAndOpen\", filePath);\n}\n\nclass MyQsciLexerCPP: public QsciLexerCPP {\nprivate:\n    QLatin1String keywordList;\npublic:\n    MyQsciLexerCPP(QObject *parent = nullptr, bool caseInsensitiveKeywords = false) :\n        QsciLexerCPP(parent, caseInsensitiveKeywords)\n    {\n        setFoldCompact(false);\n    }\n    ~MyQsciLexerCPP() override = default;\n\n    void refreshProperties() override\n    {\n        QsciLexerCPP::refreshProperties();\n        emit propertyChanged(\"lexer.cpp.track.preprocessor\", \"0\");\n    }\n\n    const char *keywords(int set) const override\n    {\n        //if (set == 5) {\n        //    updateKeywordList();\n        //    return keywordList.data();\n        //} else {\n        return QsciLexerCPP::keywords(set);\n        //}\n    }\n\nprivate:\n    void updateKeywordList() const {\n        auto c = qobject_cast<CodeTextEditor*>(editor());\n        if (c) {\n            // keywordList = c->keywordList();\n        }\n    }\n};\n\nCPPTextEditor::CPPTextEditor(QWidget *parent) : CodeTextEditor(parent)\n{\n    setProperty(\"isCXX\", false);\n    setAutoCompletionSource(AcsNone);\n    connect(new QShortcut(QKeySequence(\"Ctrl+Return\"), this), &QShortcut::activated, this, &CPPTextEditor::findReference);\n    connect(new QShortcut(QKeySequence(\"Ctrl+i\"), this), &QShortcut::activated, this, &CPPTextEditor::formatCode);\n    connect(new QShortcut(QKeySequence(\"Ctrl+Shift+i\"), this), &QShortcut::activated, this, &CPPTextEditor::openIncludeInCursor);\n}\n\nCPPTextEditor::~CPPTextEditor() = default;\n\nbool CPPTextEditor::load(const QString &path)\n{\n    if (codeModel())\n        codeModel()->startIndexingFile(path, [] {});\n    return CodeTextEditor::load(path);\n}\n\nclass CPPEditorCreator: public IDocumentEditorCreator\n{\npublic:\n    ~CPPEditorCreator() override = default;\n\n    static bool in(const QMimeType& t, const QStringList& list) {\n        for(const auto& mtype: list)\n            if (t.inherits(mtype))\n                return true;\n        return false;\n    }\n\n    bool canHandleExtentions(const QStringList &suffixes) const override {\n        for(const auto& suffix: suffixes)\n            if (C_CXX_EXTENSIONS.contains(suffix))\n                return true;\n        return false;\n    }\n\n    bool canHandleMime(const QMimeType &mime) const override {\n        if (in(mime, C_MIMETYPE))\n            return true;\n        if (in(mime, CXX_MIMETYPE))\n            return true;\n        return false;\n    }\n\n    IDocumentEditor *create(QWidget *parent = nullptr) const override {\n        return new CPPTextEditor(parent);\n    }\n};\n\nIDocumentEditorCreator *CPPTextEditor::creator()\n{\n    return IDocumentEditorCreator::staticCreator<CPPEditorCreator>();\n}\n\nvoid CPPTextEditor::findReference()\n{\n    if (codeModel()) {\n        auto word = wordUnderCursor();\n\n        codeModel()->referenceOf(word, [this, word](const ICodeModelProvider::FileReferenceList& refs)\n        {\n            FileReferencesDialog d(refs, window());\n            connect(&d, &FileReferencesDialog::itemClicked, [this](const QString& path, int line) {\n                qDebug() << \"open\" << path << \"at\" << line;\n                documentManager()->openDocumentHere(path, line, 0);\n            });\n            d.exec();\n        });\n    } else\n        qDebug() << \"No code model defined\";\n}\n\nstatic STDCALL char* tempMemoryAllocation(unsigned long memoryNeeded)\n{\n    char* buffer = new char[memoryNeeded];\n    return buffer;\n}\n\nstatic STDCALL void tempError(int errorNumber, const char* errorMessage)\n{\n    qDebug() << errorNumber << errorMessage;\n    TextMessageBrocker::instance().publish(TextMessages::STDERR_LOG, QString(\"%1: %2\").arg(errorNumber).arg(errorMessage));\n}\n\nvoid CPPTextEditor::formatCode()\n{\n    int l;\n    int i;\n    getCursorPosition(&l, &i);\n    auto inText = selectedText();\n    if (inText.isEmpty()) {\n        selectAll();\n        inText = selectedText();\n    }\n    auto rawText = inText.toUtf8();\n    char* utf8In = rawText.data();\n    auto& cfg = AppConfig::instance();\n    const auto style = cfg.editorFormatterStyle();\n    const auto indentType = QString{cfg.editorTabsToSpaces()? \"spaces\" : \"tab\"};\n    const auto indentCount = QString(\"%1\").arg(cfg.editorTabWidth());\n    auto extraAstyleParams = cfg.editorFormatterExtra();\n    char* utf8Out = AStyleMain(utf8In,\n                               QString(\"--style=%1 --indent=%2=%3 %4\")\n                                   .arg(style, indentType, indentCount, extraAstyleParams).toLatin1().data(),\n                               tempError,\n                               tempMemoryAllocation);\n    replaceSelectedText(QString::fromUtf8(utf8Out));\n    setCursorPosition(l, i);\n    ensureLineVisible(l);\n}\n\nvoid CPPTextEditor::openIncludeInCursor()\n{\n    static const QRegularExpression incRe(R\"(^\\s*\\#\\s*include(?:_next)?\\s+[\\<\\\"](.*)[\\>\\\"])\");\n    auto m = incRe.match(lineUnderCursor());\n    if (m.hasMatch()) {\n        auto file = m.captured(1);\n        triggerFindAndOpen(file);\n    }\n}\n\nQMenu *CPPTextEditor::createContextualMenu()\n{\n    auto menu = CodeTextEditor::createContextualMenu();\n    menu->addAction(QIcon(AppConfig::resourceImage({ \"actions\", \"code-context\" })),\n                    tr(\"Find Reference\"),\n                    this, &CPPTextEditor::findReference)\n            ->setShortcut(QKeySequence(\"CTRL+ENTER\"));\n    static const QRegularExpression incRe(R\"(^\\s*\\#\\s*include(?:_next)?\\s+[\\<\\\"](.*)[\\>\\\"])\");\n    auto m = incRe.match(lineUnderCursor());\n    if (m.hasMatch()) {\n        auto file = m.captured(1);\n        menu->addAction(QIcon(AppConfig::resourceImage({\"actions\", \"document-open\"})),\n                        tr(\"Open Include\"), this, [file]() {\n            triggerFindAndOpen(file);\n        })->setShortcut(QKeySequence(\"Ctrl+Shift+i\"));\n    }\n    return menu;\n}\n\nvoid CPPTextEditor::triggerAutocompletion()\n{\n    if (codeModel()) {\n        int line;\n        int index;\n        getCursorPosition(&line, &index);\n        codeModel()->completionAt(\n            ICodeModelProvider::FileReference{ path(), line, index, QString() }, text(),\n            [this](const QStringList& completions)\n        {\n            auto w = wordUnderCursor();\n            auto filtered = completions.filter(QRegularExpression(QString(R\"(^%1)\").arg(w)));\n            if (!filtered.isEmpty()) {\n                showUserList(1, filtered);\n            } else // Fallback autocompletion\n                CodeTextEditor::triggerAutocompletion();\n        });\n    } else {\n        CodeTextEditor::triggerAutocompletion();\n    }\n}\n\nQsciLexer *CPPTextEditor::lexerFromFile(const QString &name)\n{\n    Q_UNUSED(name);\n    setProperty(\"isCXX\", CPPEditorCreator::in(QMimeDatabase().mimeTypeForFile(name), CXX_MIMETYPE));\n    return new MyQsciLexerCPP(this);\n}\n"
  },
  {
    "path": "ide/cpptexteditor.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef CPPTEXTEDITOR_H\n#define CPPTEXTEDITOR_H\n\n#include \"codetexteditor.h\"\n\nclass ICodeModelProvider;\n\nclass CPPTextEditor : public CodeTextEditor\n{\npublic:\n    explicit CPPTextEditor(QWidget *parent = nullptr);\n    virtual ~CPPTextEditor() override;\n\n    bool load(const QString &path) override;\n\n    static IDocumentEditorCreator *creator();\n\nsignals:\n    void queryToOpen(const QString& path);\n\nprivate slots:\n    void findReference();\n    void formatCode();\n    void openIncludeInCursor();\n\nprotected:\n    QMenu *createContextualMenu() override;\n    void triggerAutocompletion() override;\n    QsciLexer *lexerFromFile(const QString &name) override;\n};\n\n#endif // CPPTEXTEDITOR_H\n"
  },
  {
    "path": "ide/documentmanager.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"documentmanager.h\"\n#include \"idocumenteditor.h\"\n#include \"plaintexteditor.h\"\n#include \"projectmanager.h\"\n#include \"codetexteditor.h\"\n#include \"binaryviewer.h\"\n#include \"filesystemmanager.h\"\n#include \"cpptexteditor.h\"\n#include \"mapfileviewer.h\"\n#include \"unsavedfilesdialog.h\"\n#include \"textmessagebrocker.h\"\n#include \"imageviewer.h\"\n#include \"markdowneditor.h\"\n#include \"appconfig.h\"\n\n#include <QApplication>\n#include <QComboBox>\n#include <QDir>\n#include <QFileInfo>\n#include <QLabel>\n#include <QMimeDatabase>\n#include <QShortcut>\n#include <QSortFilterProxyModel>\n#include <QStackedLayout>\n\n#include <QtDebug>\n\nstatic QString absoluteTo(const QString& path, const QString& file) {\n    return QFileInfo(file).isAbsolute()? file : QDir(path).absoluteFilePath(file);\n}\n\nclass DocumentManager::Priv_t {\npublic:\n    QComboBox *combo = nullptr;\n    QStackedLayout *stack = nullptr;\n    QHash<QString, IDocumentEditor*> mapedWidgets;\n    const ProjectManager *projectManager = nullptr;\n};\n\nDocumentManager::DocumentManager(QWidget *parent) :\n    QWidget(parent),\n    priv(std::make_unique<Priv_t>())\n{\n    priv->stack = new QStackedLayout(this);\n    priv->stack->setMargin(0);\n\n    DocumentEditorFactory::instance()->registerDocumentInterface(CPPTextEditor::creator());\n    DocumentEditorFactory::instance()->registerDocumentInterface(MarkdownEditor::creator());\n    DocumentEditorFactory::instance()->registerDocumentInterface(ImageViewer::creator());\n    DocumentEditorFactory::instance()->registerDocumentInterface(CodeTextEditor::creator());\n    DocumentEditorFactory::instance()->registerDocumentInterface(PlainTextEditor::creator());\n    DocumentEditorFactory::instance()->registerDocumentInterface(MapFileViewer::creator());\n    DocumentEditorFactory::instance()->registerDocumentInterface(BinaryViewer::creator());\n\n    auto label = new QLabel(this);\n    label->setPixmap(QPixmap(AppConfig::resourceImage({ \"screens\", tr(\"EmbeddedIDE_02\") }, \"png\")));\n    label->setAlignment(Qt::AlignHCenter | Qt::AlignCenter);\n    priv->stack->addWidget(label);\n\n    auto shCut = [this](const QString& seq, const auto& functor) {\n        connect(new QShortcut(QKeySequence(seq), window()), &QShortcut::activated, this, functor);\n    };\n    shCut(\"CTRL+SHIFT+X\", &DocumentManager::closeCurrent);\n    shCut(\"CTRL+SHIFT+R\", &DocumentManager::reloadDocumentCurrent);\n    // SHCUT(\"CTRL+S\", &DocumentManager::saveCurrent);\n}\n\nDocumentManager::~DocumentManager()\n{\n}\n\nvoid DocumentManager::setComboBox(QComboBox *cb)\n{\n    if (priv->combo)\n        priv->combo->disconnect(this);\n\n    priv->combo = cb;\n    auto model = priv->combo->model();\n    auto proxy = new QSortFilterProxyModel(priv->combo);\n    model->setParent(proxy);\n    proxy->setSourceModel(model);\n    proxy->setSortRole(Qt::DisplayRole);\n    proxy->setDynamicSortFilter(false);\n    priv->combo->setModel(proxy);\n    connect(priv->combo, QOverload<int>::of(&QComboBox::currentIndexChanged), [this](int idx) {\n        auto path = priv->combo->itemData(idx).toString();\n        if (!path.isEmpty())\n            openDocument(path);\n    });\n    connect(priv->stack, &QStackedLayout::currentChanged, [this](int idx) {\n        auto widget = priv->stack->widget(idx);\n        if (widget) {\n            auto path = widget->windowFilePath();\n            auto iface = priv->mapedWidgets.value(path, nullptr);\n            if (iface) {\n                int comboIdx = priv->combo->findData(path);\n                if (comboIdx == -1) {\n                    priv->combo->addItem(QFileInfo(path).fileName(), path);\n                    priv->combo->model()->sort(0);\n                    comboIdx = priv->combo->findData(path);\n                    priv->combo->setItemIcon(comboIdx, FileSystemManager::iconForFile(QFileInfo(path)));\n                }\n                priv->combo->setCurrentIndex(comboIdx);\n            }\n        }\n    });\n}\n\nQStringList DocumentManager::unsavedDocuments() const\n{\n    QStringList unsaved;\n    for(const auto& d: priv->mapedWidgets)\n        if (d->isModified())\n            unsaved.append(d->path());\n    return unsaved;\n}\n\nQStringList DocumentManager::documents() const\n{\n    return priv->mapedWidgets.keys();\n}\n\nint DocumentManager::documentCount() const\n{\n    return priv->mapedWidgets.count();\n}\n\nQString DocumentManager::documentCurrent() const\n{\n    if (priv->stack->currentWidget()) {\n        auto path = priv->stack->currentWidget()->windowFilePath();\n        auto iface = priv->mapedWidgets.value(path, nullptr);\n        if (iface)\n            return iface->path();\n    }\n    return QString();\n}\n\nIDocumentEditor *DocumentManager::documentEditor(const QString& path) const\n{\n    return priv->mapedWidgets.value(absoluteTo(priv->projectManager->projectPath(), path), nullptr);\n}\n\nvoid DocumentManager::setProjectManager(const ProjectManager *projectManager)\n{\n    priv->projectManager = projectManager;\n}\n\nIDocumentEditor *DocumentManager::openDocument(const QString &filePath)\n{\n    if (filePath == documentCurrent())\n        return nullptr;\n    QString path = absoluteTo(priv->projectManager->projectPath(), filePath);\n    if (QFileInfo(path).isDir())\n        return nullptr;\n    if (!QFileInfo::exists(path)) {\n        TextMessageBrocker::instance().publish(TextMessages::STDERR_LOG, tr(\"%1 not exist\").arg(filePath));\n        return nullptr;\n    }\n    if (QFileInfo(path).isRelative())\n        path = QDir(priv->projectManager->projectPath()).absoluteFilePath(path);\n    QWidget *widget = nullptr;\n    auto item = priv->mapedWidgets.value(path, nullptr);\n    if (!item) {\n        item = DocumentEditorFactory::instance()->create(path, this);\n        if (item) {\n            if (priv->projectManager)\n                item->setCodeModel(priv->projectManager->codeModel());\n            widget = item->widget();\n            if (!item->load(path)) {\n                item->widget()->deleteLater();\n                item = nullptr;\n                widget = nullptr;\n            } else {\n                item->setModified(false);\n                priv->mapedWidgets.insert(path, item);\n                priv->stack->addWidget(widget);\n                item->addModifyObserver([this](IDocumentEditor *ed, bool m) {\n                    auto path = ed->path();\n                    auto idx = priv->combo->findData(path);\n                    if (idx != -1) {\n                        priv->combo->setItemIcon(idx,\n                            m? QIcon(AppConfig::resourceImage({ \"actions\", \"document-close\" })) :\n                              FileSystemManager::iconForFile(QFileInfo(path)));\n                    }\n                    emit documentModified(path, ed, m);\n                });\n                item->addCursorObserver([this](IDocumentEditor *ed, int line, int col) {\n                    emit documentPositionModified(ed->path(), line, col);\n                });\n                item->setDocumentManager(this);\n            }\n        }\n    } else\n        widget = item->widget();\n    if (widget) {\n        priv->stack->setCurrentWidget(widget);\n        emit documentFocushed(path);\n    } else\n        emit documentNotFound(path);\n    return item;\n}\n\nvoid DocumentManager::openDocumentHere(const QString &path, int line, int col)\n{\n    qDebug() << \"open document here\" << path << line << col;\n    auto ed = openDocument(path);\n    if (ed)\n        ed->setCursor({ col, line });\n}\n\nbool DocumentManager::closeDocument(const QString &filePath)\n{\n    auto path = absoluteTo(priv->projectManager->projectPath(), filePath);\n    // Cannot save due not name on path\n    if (path.isEmpty())\n        return true;\n    // Cannot save due not in map (not widget interface registered)\n    auto iface = priv->mapedWidgets.value(path);\n    if (!iface)\n        return true;\n    if (iface->widget()->close()) {\n        priv->stack->removeWidget(iface->widget());\n        if (priv->combo) {\n            int idx = priv->combo->findData(iface->path());\n            if (idx != -1)\n                priv->combo->removeItem(idx);\n        }\n        iface->widget()->deleteLater();\n        priv->mapedWidgets.remove(path);\n        emit documentClosed(path);\n        return true;\n    }\n    return false;\n}\n\nbool DocumentManager::closeAll()\n{\n    const auto keys = priv->mapedWidgets.keys();\n    for(const auto& path: keys)\n        if (!closeDocument(path))\n            return false;\n    return true;\n}\n\nbool DocumentManager::aboutToCloseAll()\n{\n    auto unsaved = unsavedDocuments();\n    if (unsaved.isEmpty()) {\n        return closeAll();\n    }\n    UnsavedFilesDialog d(unsaved, this);\n    if (d.exec() == QDialog::Accepted) {\n        saveDocuments(d.checkedForSave());\n        for(const auto& doc: unsavedDocuments()) {\n            auto iface = documentEditor(doc);\n            if (iface)\n                iface->setModified(false);\n        }\n        return closeAll();\n   }\n    return false;\n}\n\nvoid DocumentManager::saveDocument(const QString &path)\n{\n    if (path.isEmpty())\n        return;\n    auto iface = priv->mapedWidgets.value(absoluteTo(priv->projectManager->projectPath(), path));\n    if (!iface)\n        return;\n    iface->save(iface->path());\n}\n\nvoid DocumentManager::saveAll()\n{\n    const auto keys = priv->mapedWidgets.keys();\n    for(const auto& path: keys)\n        saveDocument(path);\n}\n\nvoid DocumentManager::reloadDocument(const QString &path)\n{\n    if (path.isEmpty())\n        return;\n    auto iface = priv->mapedWidgets.value(absoluteTo(priv->projectManager->projectPath(), path));\n    if (!iface)\n        return;\n    iface->reload();\n}\n\nvoid DocumentManager::focusInEvent(QFocusEvent *event)\n{\n    Q_UNUSED(event);\n    auto w = priv->stack->currentWidget();\n    if (w)\n        w->setFocus();\n}\n"
  },
  {
    "path": "ide/documentmanager.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef DOCUMENTMANAGER_H\n#define DOCUMENTMANAGER_H\n\n#include <QWidget>\n\n#include <memory>\n\nclass IDocumentEditor;\nclass ProjectManager;\n\nclass QComboBox;\n\nclass DocumentManager : public QWidget\n{\n    Q_OBJECT\npublic:\n    explicit DocumentManager(QWidget *parent = nullptr);\n    virtual ~DocumentManager() override;\n\n    void setComboBox(QComboBox *cb);\n\n    QStringList unsavedDocuments() const;\n    QStringList documents() const;\n    int documentCount() const;\n    QString documentCurrent() const;\n    IDocumentEditor *documentEditor(const QString &path) const;\n    IDocumentEditor *documentEditorCurrent() { return documentEditor(documentCurrent()); }\n\n    void setProjectManager(const ProjectManager *projectManager);\n\nsignals:\n    void documentFocushed(const QString& path);\n    void documentNotFound(const QString& path);\n    void documentClosed(const QString& path);\n    void documentModified(const QString& path, IDocumentEditor *iface, bool modify);\n    void documentPositionModified(const QString& path, int line, int col);\n\npublic slots:\n    IDocumentEditor *openDocument(const QString& filePath);\n    void openDocumentHere(const QString& path, int line, int col);\n    bool closeDocument(const QString& filePath);\n    bool closeCurrent() { return closeDocument(documentCurrent()); }\n    bool closeAll();\n    bool aboutToCloseAll();\n    void saveDocument(const QString& path);\n    void saveDocuments(const QStringList& list) { for(const auto& a: list) saveDocument(a); }\n    void saveCurrent() { saveDocument(documentCurrent()); }\n    void saveAll();\n    void reloadDocument(const QString& path);\n    void reloadDocumentCurrent() { reloadDocument(documentCurrent()); }\n\nprotected:\n    void focusInEvent(QFocusEvent *event) override;\n\nprivate:\n    class Priv_t;\n    std::unique_ptr<Priv_t> priv;\n};\n\n#endif // DOCUMENTMANAGER_H\n"
  },
  {
    "path": "ide/envinputdialog.cpp",
    "content": "#include \"envinputdialog.h\"\n#include \"ui_envinputdialog.h\"\n\n#include \"appconfig.h\"\n\n#include <QFileDialog>\n#include <QMenu>\n#include <QProcessEnvironment>\n\ntemplate<typename F>\nstatic QAction *mkAction(const QString& actionName, F func)\n{\n    auto a = new QAction{QIcon{AppConfig::resourceImage({ \"actions\", actionName })}, actionName};\n    QObject::connect(a, &QAction::triggered, func);\n    return a;\n}\n\nstatic QAction *mkAction(const QString& actionName, QMenu *m)\n{\n    auto a = new QAction{QIcon{AppConfig::resourceImage({ \"actions\", actionName })}, actionName};\n    a->setMenu(m);\n    return a;\n}\n\ntemplate<typename F>\nstatic QMenu *menuFromEnv(QWidget *parent, F func)\n{\n    auto m = new QMenu(parent);\n    auto env = QProcessEnvironment::systemEnvironment();\n    for (const auto& k: env.keys()) {\n        const auto v = env.value(k);\n        auto a = m->addAction(k);\n        a->setData(k);\n    }\n    QObject::connect(m, &QMenu::triggered, func);\n    return m;\n}\n\nEnvInputDialog::EnvInputDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::EnvInputDialog)\n{\n    ui->setupUi(this);\n    ui->valueEditor->addAction(mkAction(\"document-open\", [this]() { openPathSelect(); }), QLineEdit::TrailingPosition);\n    ui->valueEditor->addAction(mkAction(\"code-context\", menuFromEnv(this, [this](QAction *a) { menuAction(a); })), QLineEdit::TrailingPosition);\n}\n\nEnvInputDialog::~EnvInputDialog()\n{\n    delete ui;\n}\n\nQString EnvInputDialog::envName() const\n{\n    return ui->nameEditor->text();\n}\n\nQString EnvInputDialog::envValue() const\n{\n    return ui->valueEditor->text();\n}\n\nvoid EnvInputDialog::openPathSelect()\n{\n    auto currPath = ui->valueEditor->text();\n    if (currPath.isEmpty())\n        currPath = QDir::homePath();\n    auto newPath = QFileDialog::getExistingDirectory(window(), tr(\"Select directory\"), currPath);\n    if (!newPath.isEmpty()) {\n        ui->valueEditor->insert(newPath);\n    }\n}\n\nvoid EnvInputDialog::openVarSelect()\n{\n    // TODO\n}\n\nvoid EnvInputDialog::menuAction(QAction *a)\n{\n    ui->valueEditor->insert(QString(\"${%1}\").arg(a->text()));\n}\n"
  },
  {
    "path": "ide/envinputdialog.h",
    "content": "#ifndef ENVINPUTDIALOG_H\n#define ENVINPUTDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass EnvInputDialog;\n}\n\nclass EnvInputDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit EnvInputDialog(QWidget *parent = nullptr);\n    ~EnvInputDialog();\n\n    QString envName() const;\n    QString envValue() const;\n\nprivate:\n    Ui::EnvInputDialog *ui;\n\n    void openPathSelect();\n    void openVarSelect();\n    void menuAction(QAction *a);\n};\n\n#endif // ENVINPUTDIALOG_H\n"
  },
  {
    "path": "ide/envinputdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>EnvInputDialog</class>\n <widget class=\"QDialog\" name=\"EnvInputDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>465</width>\n    <height>151</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Environment Variable</string>\n  </property>\n  <layout class=\"QFormLayout\" name=\"formLayout\">\n   <item row=\"0\" column=\"0\">\n    <widget class=\"QLabel\" name=\"label\">\n     <property name=\"text\">\n      <string>Name</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"1\">\n    <widget class=\"QLineEdit\" name=\"nameEditor\"/>\n   </item>\n   <item row=\"1\" column=\"0\">\n    <widget class=\"QLabel\" name=\"label_2\">\n     <property name=\"text\">\n      <string>Value</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"1\">\n    <widget class=\"QLineEdit\" name=\"valueEditor\"/>\n   </item>\n   <item row=\"3\" column=\"0\" colspan=\"2\">\n    <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"standardButtons\">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n     </property>\n    </widget>\n   </item>\n   <item row=\"2\" column=\"0\" colspan=\"2\">\n    <spacer name=\"verticalSpacer\">\n     <property name=\"orientation\">\n      <enum>Qt::Vertical</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>20</width>\n       <height>40</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>EnvInputDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>EnvInputDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "ide/externaltoolmanager.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"externaltoolmanager.h\"\n#include \"processmanager.h\"\n#include \"buildmanager.h\"\n#include \"ui_externaltoolmanager.h\"\n#include \"projectmanager.h\"\n#include \"buttoneditoritemdelegate.h\"\n\n#include <QFileDialog>\n#include <QItemDelegate>\n#include <QLineEdit>\n#include <QMenu>\n#include <QMouseEvent>\n#include <QStandardItemModel>\n\n#include <QtDebug>\n\nstatic QList<QStandardItem*> makeItem(const QString& name=QString(), const QString& command=QString())\n{\n    QList<QStandardItem*> l{ new QStandardItem(name), new QStandardItem(command) };\n    l[1]->setFont(AppConfig::instance().editorFont());\n    return l;\n}\n\nExternalToolManager::ExternalToolManager(QWidget *parent) :\n    QDialog(parent),\n    ui(std::make_unique<Ui::ExternalToolManager>())\n{\n    ui->setupUi(this);\n    const struct { QAbstractButton *b; const char *name; } buttonmap[] = {\n        { ui->itemDown, \"go-down\" },\n        { ui->itemUp, \"go-up\" },\n        { ui->itemDel, \"list-remove\" },\n        { ui->itemAdd, \"list-add\" },\n        { ui->pushButton_2, \"dialog-close\" },\n        { ui->pushButton, \"dialog-ok-apply\" },\n    };\n    for (const auto& e: buttonmap)\n        e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.name })});\n\n    auto model = new QStandardItemModel(this);\n    model->setHorizontalHeaderLabels({ tr(\"Description\"), tr(\"Command\") });\n    ui->tableView->setModel(model);\n    auto delegateFunc = [this, model](const QModelIndex& m)\n    {\n        auto item = model->itemFromIndex(m);\n        if (item) {\n            auto s = QFileDialog::getOpenFileName(window());\n            if (!s.isEmpty())\n                item->setText(s);\n        } else {\n            qDebug() << \"no item\";\n        }\n    };\n    auto delegate = new ButtonEditorItemDelegate<decltype (delegateFunc)>(tr(\"Select File\"), delegateFunc);\n    ui->tableView->setItemDelegateForColumn(1, delegate);\n    connect(ui->itemAdd, &QToolButton::clicked, [model]() {\n        model->appendRow(makeItem());\n    });\n    connect(ui->itemDel, &QToolButton::clicked, [model, this]() {\n        QModelIndexList m = ui->tableView->selectionModel()->selectedRows();\n        while (!m.isEmpty()){\n            model->removeRow(m.last().row());\n            m.removeLast();\n        }\n    });\n    connect(ui->itemUp, &QToolButton::clicked, [model, this]() {\n        QModelIndexList m = ui->tableView->selectionModel()->selectedRows();\n        QList<int> selectable;\n        while (!m.isEmpty()) {\n            QModelIndex e = m.last();\n            int toRow = e.row() - 1;\n            if (toRow >= 0) {\n                QList<QStandardItem*> items = model->takeRow(e.row());\n                model->insertRow(toRow, items);\n            }\n            selectable.append(toRow);\n            m.removeLast();\n        }\n        for(auto row: selectable)\n            ui->tableView->selectRow(row);\n    });\n    connect(ui->itemDown, &QToolButton::clicked, [model, this]() {\n        QModelIndexList m = ui->tableView->selectionModel()->selectedRows();\n        QList<int> selectable;\n        while (!m.isEmpty()){\n            QModelIndex e = m.last();\n            int toRow = e.row() + 1;\n            if (toRow < model->rowCount()) {\n                QList<QStandardItem*> items = model->takeRow(e.row());\n                model->insertRow(toRow, items);\n            }\n            selectable.append(toRow);\n            m.removeLast();\n        }\n        for(auto row: selectable)\n            ui->tableView->selectRow(row);\n    });\n\n    auto tools = AppConfig::instance().externalTools();\n    for(const auto& it: tools)\n        model->appendRow(makeItem(it.first, it.second));\n}\n\nExternalToolManager::~ExternalToolManager()\n{\n}\n\nQMenu *ExternalToolManager::makeMenu(QWidget *parent, ProcessManager *pman, ProjectManager *proj)\n{\n    auto p = pman->processFor(BuildManager::PROCESS_NAME);\n    auto m = new QMenu(parent);\n    auto t = AppConfig::instance().externalTools();\n    for(const auto& it: t) {\n        auto cmd = it.second;\n        m->addAction(QIcon(AppConfig::resourceImage({ \"actions\", \"run-build\" })),\n                     it.first, [p, cmd, proj]() {\n            p->setWorkingDirectory(proj->projectPath());\n            p->start(AppConfig::replaceWithEnv(cmd));\n        });\n    }\n    m->addSeparator();\n    m->addAction(QIcon(AppConfig::resourceImage({ \"actions\", \"window-new\" })),\n                 QObject::tr(\"Open Tool Manager\"), [parent]() {\n        ExternalToolManager d(parent);\n        if (d.exec()) {\n            auto model = qobject_cast<QStandardItemModel*>(d.ui->tableView->model());\n            QList<QPair<QString, QString>> map;\n            for(int i=0; i<model->rowCount(); i++) {\n                auto name = model->item(i, 0)->text();\n                auto cmd = model->item(i, 1)->text();\n                map.append({ name, cmd });\n            }\n            AppConfig::instance().setExternalTools(map);\n            AppConfig::instance().save();\n        }\n    });\n    return m;\n}\n"
  },
  {
    "path": "ide/externaltoolmanager.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef EXTERNALTOOLMANAGER_H\n#define EXTERNALTOOLMANAGER_H\n\n#include <QDialog>\n\n#include <memory>\n\nnamespace Ui {\nclass ExternalToolManager;\n}\n\nclass QMenu;\n\nclass ProcessManager;\nclass ProjectManager;\n\nclass ExternalToolManager : public QDialog\n{\n    Q_OBJECT\n    Q_DISABLE_COPY(ExternalToolManager)\n\npublic:\n    explicit ExternalToolManager(QWidget *parent = nullptr);\n    virtual ~ExternalToolManager();\n\n    static QMenu *makeMenu(QWidget *parent, ProcessManager *pman, ProjectManager *proj);\n\nprivate:\n    std::unique_ptr<Ui::ExternalToolManager> ui;\n};\n\n#endif // EXTERNALTOOLMANAGER_H\n"
  },
  {
    "path": "ide/externaltoolmanager.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ExternalToolManager</class>\n <widget class=\"QDialog\" name=\"ExternalToolManager\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>594</width>\n    <height>391</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>External Tools</string>\n  </property>\n  <layout class=\"QGridLayout\" name=\"gridLayout\">\n   <item row=\"1\" column=\"6\">\n    <widget class=\"QPushButton\" name=\"pushButton_2\">\n     <property name=\"text\">\n      <string>Cancel</string>\n     </property>\n     <property name=\"icon\">\n      <iconset theme=\"dialog-close\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"0\" colspan=\"7\">\n    <widget class=\"QTableView\" name=\"tableView\">\n     <property name=\"selectionBehavior\">\n      <enum>QAbstractItemView::SelectRows</enum>\n     </property>\n     <attribute name=\"horizontalHeaderStretchLastSection\">\n      <bool>true</bool>\n     </attribute>\n     <attribute name=\"verticalHeaderVisible\">\n      <bool>false</bool>\n     </attribute>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"5\">\n    <widget class=\"QPushButton\" name=\"pushButton\">\n     <property name=\"text\">\n      <string>Accept</string>\n     </property>\n     <property name=\"icon\">\n      <iconset theme=\"dialog-ok-apply\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n     <property name=\"default\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"3\">\n    <widget class=\"QToolButton\" name=\"itemDown\">\n     <property name=\"icon\">\n      <iconset theme=\"go-down\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n     <property name=\"autoRaise\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"4\">\n    <spacer name=\"horizontalSpacer\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>172</width>\n       <height>20</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n   <item row=\"1\" column=\"1\">\n    <widget class=\"QToolButton\" name=\"itemDel\">\n     <property name=\"icon\">\n      <iconset theme=\"list-remove\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n     <property name=\"autoRaise\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"0\">\n    <widget class=\"QToolButton\" name=\"itemAdd\">\n     <property name=\"icon\">\n      <iconset theme=\"list-add\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n     <property name=\"autoRaise\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"2\">\n    <widget class=\"QToolButton\" name=\"itemUp\">\n     <property name=\"icon\">\n      <iconset theme=\"go-up\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n     <property name=\"autoRaise\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections>\n  <connection>\n   <sender>pushButton</sender>\n   <signal>clicked()</signal>\n   <receiver>ExternalToolManager</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>425</x>\n     <y>429</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>425</x>\n     <y>446</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>pushButton_2</sender>\n   <signal>clicked()</signal>\n   <receiver>ExternalToolManager</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>519</x>\n     <y>433</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>517</x>\n     <y>447</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "ide/filereferencesdialog.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"filereferencesdialog.h\"\n#include \"ui_filereferencesdialog.h\"\n\n#include <QStandardItemModel>\n#include <QtDebug>\n\nFileReferencesDialog::FileReferencesDialog(const ICodeModelProvider::FileReferenceList &refList, QWidget *parent) :\n    QDialog(parent),\n    ui(std::make_unique<Ui::FileReferencesDialog>())\n{\n    ui->setupUi(this);\n    connect(ui->listWidget, &QListWidget::itemActivated, [this](QListWidgetItem *item) {\n        auto url = item->data(Qt::UserRole).toUrl();\n        auto ref = ICodeModelProvider::FileReference::decode(url);\n        emit itemClicked(ref.path, ref.line);\n        accept();\n    });\n    if (!refList.isEmpty()) {\n        for(const auto& r: refList) {\n            auto url = r.encode();\n            auto item = new QListWidgetItem(QString(\"%1: %2\\n%3\").arg(r.path).arg(r.line).arg(r.meta));\n            item->setData(Qt::UserRole, url);\n            ui->listWidget->addItem(item);\n        }\n        ui->listWidget->setMinimumWidth(ui->listWidget->sizeHintForColumn(0) + 2 + ui->listWidget->frameWidth());\n        resize(minimumWidth(), height());\n    }\n}\n\nFileReferencesDialog::~FileReferencesDialog()\n{\n}\n"
  },
  {
    "path": "ide/filereferencesdialog.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef FILEREFERENCESDIALOG_H\n#define FILEREFERENCESDIALOG_H\n\n#include <QDialog>\n#include \"icodemodelprovider.h\"\n\n#include <memory>\n\nnamespace Ui {\nclass FileReferencesDialog;\n}\n\nclass FileReferencesDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit FileReferencesDialog(const ICodeModelProvider::FileReferenceList& refList, QWidget *parent = nullptr);\n    ~FileReferencesDialog();\n\nsignals:\n    void itemClicked(const QString& path, int line);\n\nprivate:\n    std::unique_ptr<Ui::FileReferencesDialog> ui;\n};\n\n#endif // FILEREFERENCESDIALOG_H\n"
  },
  {
    "path": "ide/filereferencesdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FileReferencesDialog</class>\n <widget class=\"QDialog\" name=\"FileReferencesDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>256</width>\n    <height>318</height>\n   </rect>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <property name=\"spacing\">\n    <number>0</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"QListWidget\" name=\"listWidget\">\n     <property name=\"editTriggers\">\n      <set>QAbstractItemView::NoEditTriggers</set>\n     </property>\n     <property name=\"alternatingRowColors\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ide/filesystemmanager.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"filesystemmanager.h\"\n\n#include <QCheckBox>\n#include <QDesktopServices>\n#include <QFileDialog>\n#include <QFileIconProvider>\n#include <QFileSystemModel>\n#include <QHeaderView>\n#include <QInputDialog>\n#include <QMenu>\n#include <QMessageBox>\n#include <QMimeDatabase>\n#include <QProcess>\n#include <QShortcut>\n#include <QTreeView>\n#include <QUrl>\n#include <QWidget>\n\n#include <QtDebug>\n\nclass ProjectIconProvider: public QFileIconProvider\n{\npublic:\n    ~ProjectIconProvider() override;\n    QIcon icon(const QFileInfo &info) const override\n    {\n        if (info.isDir())\n            return QIcon(FileSystemManager::mimeIconPath(\"folder\"));\n        QMimeDatabase db;\n        auto t = db.mimeTypeForFile(info);\n        if (t.isValid()) {\n            auto resName = FileSystemManager::mimeIconPath(t.iconName());\n            if (QFile(resName).exists())\n                return QIcon(resName);\n            resName = FileSystemManager::mimeIconPath(t.genericIconName());\n            if (QFile(resName).exists())\n                return QIcon(resName);\n        }\n        return QFileIconProvider::icon(info);\n    }\n};\n\nclass FileSystemModel: public QFileSystemModel\n{\npublic:\n    ~FileSystemModel() override;\n    FileSystemModel(QObject *parent = nullptr) : QFileSystemModel(parent)\n    {\n        setFilter(QDir::AllDirs | QDir::NoDotAndDotDot | QDir::Files | QDir::Hidden | QDir::System);\n        setNameFilterDisables(false);\n        setNameFilters({ \"*\" });\n        setIconProvider(new ProjectIconProvider);\n        setReadOnly(false);\n    }\n};\n\nFileSystemManager::FileSystemManager(QTreeView *v, QObject *parent) : QObject(parent), view(v)\n{\n    connect(view, &QTreeView::activated, [this](const QModelIndex& idx) {\n        auto model = qobject_cast<QFileSystemModel*>(view->model());\n        if (model) {\n            auto path = model->filePath(idx);\n            emit requestFileOpen(path);\n        }\n    });\n    view->setContextMenuPolicy(Qt::CustomContextMenu);\n    connect(view, &QTreeView::customContextMenuRequested, this, &FileSystemManager::customContextMenu);\n    connect(new QShortcut{QKeySequence{\"DEL\"}, v}, &QShortcut::activated, this, &FileSystemManager::menuItemDelete);\n}\n\nFileSystemManager::~FileSystemManager() = default;\n\nQIcon FileSystemManager::iconForFile(const QFileInfo &info)\n{\n    return ProjectIconProvider().icon(info);\n}\n\nQString FileSystemManager::mimeIconPath(const QString &mimeName)\n{\n    return AppConfig::resourceImage({ \"mimetypes\", mimeName });\n}\n\nvoid FileSystemManager::openPath(const QString &path)\n{\n    if (view) {\n        auto model = qobject_cast<QFileSystemModel*>(view->model());\n        if (!model) {\n            if (view->model())\n                view->model()->deleteLater();\n            view->setModel(model = new FileSystemModel(view));\n        }\n        view->setRootIndex(model->setRootPath(path));\n        for(int i = 1; i < model->columnCount(); i++)\n            view->hideColumn(i);\n        view->header()->setSectionResizeMode(QHeaderView::ResizeToContents);\n        view->header()->hide();\n    }\n\n}\n\nvoid FileSystemManager::closePath()\n{\n    if (view->model())\n        view->model()->deleteLater();\n    view->setModel(nullptr);\n}\n\nstatic bool isExec(const QFileInfo& f)\n{\n    return f.isExecutable() && !f.isDir();\n}\n\nvoid FileSystemManager::customContextMenu(const QPoint &pos)\n{\n    auto model = qobject_cast<QFileSystemModel*>(view->model());\n    if (!model)\n        return;\n\n    auto index = view->currentIndex();\n    if (!index.isValid())\n        index = view->rootIndex();\n\n    auto noSelection = view->selectionModel()->selectedRows(0).isEmpty();\n    auto info = model->fileInfo(index);\n    auto m = new QMenu(view);\n\n    auto createAction = [this, m](const auto& icon, const auto& text, const auto& slot)\n        { return m->addAction(QIcon(AppConfig::resourceImage({ \"actions\", icon })), text, this, slot); };\n    createAction(\"document-new\", tr(\"File New\"), &FileSystemManager::menuNewFile);\n    createAction(\"folder-new\", tr(\"New Directory\"), &FileSystemManager::menuNewDirectory);\n#ifdef Q_OS_UNIX\n    createAction(\"insert-link-symbolic\", tr(\"New Symlink\"), &FileSystemManager::menuNewSymlink);\n#endif\n    createAction(\"run-build-file\", tr(\"Execute\"), &FileSystemManager::menuItemExecute)->setEnabled(isExec(info));\n    createAction(\"window-new\", tr(\"Open External\"), &FileSystemManager::menuItemOpenExternal);\n    m->addSeparator();\n    createAction(\"debug-execute-from-cursor\", tr(\"Rename\"), &FileSystemManager::menuItemRename)->setDisabled(noSelection);\n    createAction(\"document-close\", tr(\"Delete\"), &FileSystemManager::menuItemDelete)->setDisabled(noSelection);\n    m->exec(view->mapToGlobal(pos));\n    m->deleteLater();\n}\n\nstatic QModelIndex selectedOnView(QTreeView *v)\n{\n    if (v->selectionModel()->selectedIndexes().isEmpty())\n        return v->rootIndex();\n    return v->selectionModel()->selectedIndexes().first();\n}\n\nvoid FileSystemManager::menuNewFile()\n{\n    if (!view->selectionModel())\n        return;\n    auto m = qobject_cast<QFileSystemModel*>(view->model());\n    if (!m)\n        return;\n    auto idx = selectedOnView(view);\n    auto info = m->fileInfo(idx);\n    if (!info.isDir()) {\n        info = QFileInfo(info.absoluteDir().absolutePath());\n    }\n    auto fileName = QInputDialog::getText(view->window(), tr(\"File name\"),\n                                          tr(\"Create file on %1\")\n                                          .arg(info.absoluteFilePath()));\n    if (!fileName.isEmpty()) {\n        QFile f(QDir(info.absoluteFilePath()).absoluteFilePath(fileName));\n        if (!f.open(QFile::WriteOnly)) {\n            QMessageBox::critical(view->window(), tr(\"Error creating file\"), f.errorString());\n        } else {\n            f.close();\n            emit requestFileOpen(fileName);\n        }\n    }\n}\n\nvoid FileSystemManager::menuNewDirectory()\n{\n    if (!view->selectionModel())\n        return;\n    auto m = qobject_cast<QFileSystemModel*>(view->model());\n    if (!m)\n        return;\n    auto idx = selectedOnView(view);\n    if (!QFileInfo(m->fileInfo(idx)).isDir()) {\n        idx = idx.parent();\n        if (!m->fileInfo(idx).isDir()) {\n            qDebug() << \"ERROR parent not a dir\";\n            return;\n        }\n    }\n    auto name = QInputDialog::getText(view->window(), tr(\"Folder name\"),\n                                      tr(\"Create folder on %1\")\n                                      .arg(m->fileInfo(idx).absoluteFilePath()));\n    if (!name.isEmpty()) {\n        qDebug() << \"creating\" << name << \" on \" << m->fileName(idx);\n        m->mkdir(idx, name);\n    }\n}\n\nvoid FileSystemManager::menuNewSymlink()\n{\n#ifdef Q_OS_UNIX\n    if (!view->selectionModel())\n        return;\n    auto m = qobject_cast<QFileSystemModel*>(view->model());\n    if (!m)\n        return;\n    auto idx = selectedOnView(view);\n    if (!QFileInfo(m->fileInfo(idx)).isDir()) {\n        idx = idx.parent();\n        if (!m->fileInfo(idx).isDir()) {\n            qDebug() << \"ERROR parent not a dir\";\n            return;\n        }\n    }\n    QDir targetDir(m->fileInfo(idx).absoluteFilePath());\n    QFileDialog dialog(view->window());\n    dialog.setWindowTitle(tr(\"Link target\"));\n    dialog.setAcceptMode(QFileDialog::AcceptOpen);\n    dialog.setDirectory(targetDir.absolutePath());\n    dialog.setFileMode(QFileDialog::Directory);\n    if (dialog.exec() != QDialog::Accepted || dialog.selectedFiles().isEmpty())\n        return;\n    QFile target(dialog.selectedFiles().first());\n    auto linkName = targetDir.absoluteFilePath(QFileInfo(target.fileName()).fileName());\n    if (!target.link(linkName))\n        QMessageBox::critical(view->window(), tr(\"Link creation fail\"), tr(\"ERROR: %1\").arg(target.errorString()));\n#else\n    QMessageBox::critical(view->window(), tr(\"Link creation fail\"), tr(\"ERROR: Not implemented\"));\n#endif\n}\n\nvoid FileSystemManager::menuItemExecute()\n{\n    if (!view->selectionModel())\n        return;\n    auto m = qobject_cast<QFileSystemModel*>(view->model());\n    if (!m)\n        return;\n    auto idx = selectedOnView(view);\n    auto info = m->fileInfo(idx);\n#ifdef Q_OS_WIN\n    QDesktopServices::openUrl(QUrl::fromLocalFile(info.absoluteFilePath()));\n#else\n    QProcess::execute(info.absoluteFilePath());\n#endif\n}\n\nvoid FileSystemManager::menuItemOpenExternal()\n{\n    if (!view->selectionModel())\n        return;\n    auto m = qobject_cast<QFileSystemModel*>(view->model());\n    if (!m)\n        return;\n    auto info = m->fileInfo(selectedOnView(view));\n    QDesktopServices::openUrl(QUrl::fromLocalFile(info.absoluteFilePath()));\n}\n\nvoid FileSystemManager::menuItemRename()\n{\n    view->edit(selectedOnView(view));\n}\n\nvoid FileSystemManager::menuItemDelete()\n{\n    if (!view->selectionModel())\n        return;\n    auto m = qobject_cast<QFileSystemModel*>(view->model());\n    if (!m)\n        return;\n    auto items = view->selectionModel()->selectedRows(0);\n    QMessageBox msg(view->window());\n    msg.setWindowTitle(tr(\"Delete files\"));\n    msg.setIcon(QMessageBox::Warning);\n    msg.addButton(QMessageBox::Yes);\n    msg.addButton(QMessageBox::No);\n    if (items.count() > 1) {\n        auto forAll = new QCheckBox(tr(\"Do this operation for all items\"), &msg);\n        forAll->setCheckState(Qt::Unchecked);\n        msg.setCheckBox(forAll);\n        msg.addButton(QMessageBox::Cancel);\n    }\n    int last = -1;\n    for(const auto& idx: items) {\n        auto parent = idx.parent();\n        auto name = m->filePath(idx);\n        bool doForAll = false;\n        if (msg.checkBox())\n            doForAll = (msg.checkBox()->checkState() == Qt::Checked);\n        if (!doForAll) {\n            msg.setText(tr(\"Realy remove %1\").arg(name));\n            last = msg.exec();\n        }\n        switch(last) {\n        case QMessageBox::Yes:\n            if (m->fileInfo(idx).isDir()) {\n                QDir(m->fileInfo(idx).absoluteFilePath()).removeRecursively();\n            } else {\n                m->remove(idx);\n            }\n            view->update(parent);\n            break;\n        case QMessageBox::No:\n            break;\n        case QMessageBox::Cancel:\n            return;\n        }\n    }\n}\n\nProjectIconProvider::~ProjectIconProvider()\n= default;\n\nFileSystemModel::~FileSystemModel()\n= default;\n"
  },
  {
    "path": "ide/filesystemmanager.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef FILESYSTEMMANAGER_H\n#define FILESYSTEMMANAGER_H\n\n#include <QFileInfo>\n#include <QObject>\n\n#include <memory>\n\nclass QTreeView;\n\nclass FileSystemManager : public QObject\n{\n    Q_OBJECT\n    Q_DISABLE_COPY(FileSystemManager)\n\npublic:\n    explicit FileSystemManager(QTreeView *v, QObject *parent = nullptr);\n    virtual ~FileSystemManager();\n\n    static QIcon iconForFile(const QFileInfo &info);\n\n    static QString mimeIconPath(const QString& mimeName);\n\nsignals:\n    void requestFileOpen(const QString& path);\n\npublic slots:\n    void openPath(const QString& path);\n    void closePath();\n\nprivate slots:\n    void customContextMenu(const QPoint& pos);\n\n    void menuNewFile();\n    void menuNewDirectory();\n    void menuNewSymlink();\n    void menuItemExecute();\n    void menuItemOpenExternal();\n    void menuItemRename();\n    void menuItemDelete();\n\nprivate:\n    QTreeView *view;\n};\n\n#endif // FILESYSTEMMANAGER_H\n"
  },
  {
    "path": "ide/findandopenfiledialog.cpp",
    "content": "#include \"findandopenfiledialog.h\"\n#include \"ui_findandopenfiledialog.h\"\n\n#include <QDirIterator>\n#include <QStandardItemModel>\n#include <QStringListModel>\n#include <QPushButton>\n\nFindAndOpenFileDialog::FindAndOpenFileDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::FindAndOpenFileDialog)\n{\n    ui->setupUi(this);\n    ui->buttonBox->button(QDialogButtonBox::Open)->setDisabled(true);\n    connect(ui->fileList, &QAbstractItemView::activated, this, &QDialog::accept);\n}\n\nFindAndOpenFileDialog::~FindAndOpenFileDialog()\n{\n    delete ui;\n}\n\nvoid FindAndOpenFileDialog::setFileList(const QString& prefix, const QStringList &list)\n{\n    if (ui->fileList->model())\n        ui->fileList->model()->deleteLater();\n    auto m = new QStandardItemModel(this);\n    for (const auto& e: list) {\n        auto item = new QStandardItem{\"...\" + QString{e}.remove(prefix)};\n        item->setData(e, Qt::UserRole + 1);\n        m->appendRow(item);\n    }\n    ui->fileList->setModel(m);\n    ui->buttonBox->button(QDialogButtonBox::Open)->setDisabled(list.isEmpty());\n}\n\nQString FindAndOpenFileDialog::selectedFile() const\n{\n    auto idx = ui->fileList->currentIndex();\n    return ui->fileList->model()->data(idx, Qt::UserRole + 1).toString();\n}\n\nQStringList FindAndOpenFileDialog::findFilesInPath(const QString &file, const QString &path)\n{\n    QStringList list;\n    QDirIterator it(path, { file }, QDir::NoDotAndDotDot | QDir::Files, QDirIterator::Subdirectories);\n    while (it.hasNext()) {\n        list.append(it.next());\n    }\n    return list;\n}\n"
  },
  {
    "path": "ide/findandopenfiledialog.h",
    "content": "#ifndef FINDANDOPENFILEDIALOG_H\n#define FINDANDOPENFILEDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass FindAndOpenFileDialog;\n}\n\nclass FindAndOpenFileDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit FindAndOpenFileDialog(QWidget *parent = nullptr);\n    ~FindAndOpenFileDialog();\n\n    void setFileList(const QString &prefix, const QStringList &list);\n    QString selectedFile() const;\n\n    static QStringList findFilesInPath(const QString& file, const QString& path);\n\nprivate:\n    Ui::FindAndOpenFileDialog *ui;\n};\n\n#endif // FINDANDOPENFILEDIALOG_H\n"
  },
  {
    "path": "ide/findandopenfiledialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FindAndOpenFileDialog</class>\n <widget class=\"QDialog\" name=\"FindAndOpenFileDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>582</width>\n    <height>355</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Select file to open</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <widget class=\"QListView\" name=\"fileList\">\n     <property name=\"editTriggers\">\n      <set>QAbstractItemView::NoEditTriggers</set>\n     </property>\n     <property name=\"alternatingRowColors\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"standardButtons\">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Open</set>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>FindAndOpenFileDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>FindAndOpenFileDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "ide/findinfilesdialog.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"findinfilesdialog.h\"\n#include \"ui_findinfilesdialog.h\"\n\n#include <QDirIterator>\n#include <QFileDialog>\n#include <QListView>\n#include <QMenu>\n#include <QStandardItemModel>\n#include <QWidgetAction>\n#include <Qsci/qsciscintilla.h>\n#include <utility>\n\nstruct FilePos {\n    int line{ 0 };\n    int column{ 0 };\n    QString path;\n\n    FilePos() = default;\n    FilePos(int l, int c, QString p) : line(l), column(c), path(std::move(p)) {}\n};\n\nQ_DECLARE_METATYPE(FilePos)\n\nconst QStringList STANDARD_FILTERS =\n        { \"*.*\", \"*.c\", \"*.cpp\", \"*.h\", \"*.hpp\", \"*.txt\" };\n\nFindInFilesDialog::FindInFilesDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(std::make_unique<Ui::FindInFilesDialog>())\n{\n    ui->setupUi(this);\n    const struct { QAbstractButton *b; const char *name; } buttonmap[]={\n        { ui->buttonChoseDirectory, \"document-open\" },\n        { ui->buttonSelectfilePattern, \"application-menu\" },\n        { ui->buttonFind, \"edit-find\" },\n        { ui->buttonStop, \"dialog-cancel\" },\n    };\n    for (const auto& e: buttonmap)\n        e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.name })});\n\n    auto model = new QStandardItemModel(this);\n    ui->treeView->setModel(model);\n    auto protoItem = new QStandardItem();\n    protoItem->setFont(AppConfig::instance().loggerFont());\n    model->setItemPrototype(protoItem);\n    ui->textToFind->addMenuActions(QHash<QString, QString>{\n                                      { tr(\"Regular Expression\"), \"regex\" },\n                                      { tr(\"Case Sensitive\"), \"case\" },\n                                      { tr(\"Wole Words\"), \"wword\" },\n                                  });\n    ui->labelStatus->setText(tr(\"Ready\"));\n\n    auto filterMenu = new QMenu(this);\n    auto listViewAction = new QWidgetAction(filterMenu);\n    auto filterListView = new QListView(this);\n    filterListView->setEditTriggers(QListView::NoEditTriggers);\n    auto filterModel = new QStandardItemModel(filterListView);\n    for(const auto& e: STANDARD_FILTERS) {\n        auto i = new QStandardItem(e);\n        i->setCheckable(true);\n        filterModel->appendRow(i);\n    }\n    connect(filterModel, &QStandardItemModel::itemChanged, [this](QStandardItem *item) {\n        QString filter = ui->textFilePattern->text();\n        if (item->checkState() == Qt::Checked) {\n            if (!filter.isEmpty())\n                filter.append(\", \");\n            filter.append(item->text());\n        } else {\n            filter.remove(QRegularExpression(QString(R\"(\\,?\\s?%1,?)\")\n                                             .arg(QRegularExpression::escape(item->text()))));\n        }\n        ui->textFilePattern->setText(filter.trimmed());\n    });\n    filterModel->item(0, 0)->setCheckState(Qt::Checked);\n    filterListView->setModel(filterModel);\n    listViewAction->setDefaultWidget(filterListView);\n    filterMenu->addAction(listViewAction);\n    ui->buttonSelectfilePattern->setMenu(filterMenu);\n    ui->buttonSelectfilePattern->setPopupMode(QToolButton::InstantPopup);\n\n    connect(ui->treeView, &QTreeView::activated,\n            [this, model](const QModelIndex& index) {\n        auto item = model->itemFromIndex(index);\n        if (item) {\n            auto pos = item->data().value<FilePos>();\n            if (!pos.path.isEmpty()) {\n                emit queryToOpen(pos.path, pos.line, pos.column);\n                accept();\n            }\n        }\n    });\n    connect(ui->buttonExpandAll, &QToolButton::toggled, [this](bool b) {\n        if (b) {\n            ui->buttonExpandAll->setText(tr(\"Collapse All\"));\n            ui->treeView->expandAll();\n        } else {\n            ui->buttonExpandAll->setText(tr(\"Expand All\"));\n            ui->treeView->collapseAll();\n        }\n    });\n\n    auto doc = new QsciScintilla(this);\n    doc->hide();\n    connect(ui->buttonFind, &QToolButton::clicked, [this, model, doc]() {\n        setProperty(\"onProcessLoop\", true);\n        model->clear();\n        ui->buttonStop->setEnabled(true);\n        ui->buttonFind->setDisabled(true);\n        QStringList filters = ui->textFilePattern->text().split(\",\")\n                .replaceInStrings(QRegularExpression(R\"(^\\s+)\"), QString())\n                .replaceInStrings(QRegularExpression(R\"(\\s+$)\"), QString());\n        QString textToFind = ui->textToFind->text();\n        bool isRegex = ui->textToFind->isPropertyChecked(\"regex\");\n        bool isCS = ui->textToFind->isPropertyChecked(\"case\");\n        bool isWWord = ui->textToFind->isPropertyChecked(\"wword\");\n        QDirIterator it(ui->textDirectory->text(), filters,\n                        QDir::NoFilter, QDirIterator::Subdirectories);\n        while (it.hasNext() && property(\"onProcessLoop\").toBool()) {\n            QCoreApplication::processEvents();\n            if (!property(\"onProcessLoop\").toBool())\n                break;\n            ui->labelStatus->setText(tr(\"Scanning file:\"));\n            ui->labelFilename->setText(QFontMetrics(ui->labelStatus->font())\n                                       .elidedText(it.next(), Qt::ElideLeft, ui->labelStatus->width()));\n            auto info = it.fileInfo();\n            if (!info.isFile())\n                continue;\n            QFile file(info.absoluteFilePath());\n            if (!file.open(QFile::ReadOnly))\n                continue;\n            if (!doc->read(&file))\n                continue;\n            if (!doc->findFirst(textToFind, isRegex, isCS, isWWord, false, true, -1, -1, false, false))\n                continue;\n            auto fileItem = model->itemPrototype()->clone();\n            fileItem->setText(info.absoluteFilePath().remove(ui->textDirectory->text() + QDir::separator()));\n            model->appendRow(fileItem);\n            do {\n                int line;\n                int column;\n                doc->getCursorPosition(&line, &column);\n                auto textInFile = doc->text(line);\n                auto posItem = model->itemPrototype()->clone();\n                constexpr auto JUSTIFY = 8;\n                posItem->setText(tr(\"Line %1 Char %2: %3\").arg(\n                    QString(\"%1\").arg(line).leftJustified(JUSTIFY, ' '),\n                    QString(\"%1\").arg(column).leftJustified(JUSTIFY, ' '),\n                    textInFile));\n                posItem->setData(QVariant::fromValue(FilePos{ line, column, info.absoluteFilePath() }));\n                posItem->setData(Qt::AlignBaseline, Qt::TextAlignmentRole);\n                fileItem->appendRow(posItem);\n                QCoreApplication::processEvents();\n            } while (doc->findNext() && property(\"onProcessLoop\").toBool());\n        }\n        ui->buttonStop->setDisabled(true);\n        ui->buttonFind->setEnabled(true);\n        // ui->treeView->expandAll();\n        ui->labelStatus->setText(tr(\"Done\"));\n        ui->labelFilename->clear();\n        setProperty(\"onProcessLoop\", false);\n    });\n    connect(this, &QDialog::finished, [this]() {\n        setProperty(\"onProcessLoop\", false);\n    });\n    connect(ui->buttonStop, &QToolButton::clicked, [this]() {\n        setProperty(\"onProcessLoop\", false);\n    });\n\n    connect(ui->buttonChoseDirectory, &QToolButton::clicked, [this]() {\n        QString path = QFileDialog::getExistingDirectory(this,\n                                                         tr(\"Select directory\"),\n                                                         ui->textDirectory->text());\n        if (!path.isEmpty())\n            ui->textDirectory->setText(path);\n    });\n}\n\nFindInFilesDialog::~FindInFilesDialog()\n{\n}\n\nQString FindInFilesDialog::findPath() const\n{\n    return ui->textDirectory->text();\n}\n\nvoid FindInFilesDialog::setFindPath(const QString &path)\n{\n    ui->textDirectory->setText(path);\n}\n\nvoid FindInFilesDialog::closeEvent(QCloseEvent *)\n{\n    setProperty(\"onProcessLoop\", false);\n}\n"
  },
  {
    "path": "ide/findinfilesdialog.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef FINDINFILESDIALOG_H\n#define FINDINFILESDIALOG_H\n\n#include <QDialog>\n#include <QFuture>\n#include <QEvent>\n\n#include <memory>\n\nclass ProjectView;\nclass DocumentArea;\n\nnamespace Ui {\nclass FindInFilesDialog;\n}\n\nclass QStandardItemModel;\nclass QStandardItem;\n\nclass FindInFilesDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit FindInFilesDialog(QWidget *parent = nullptr);\n    virtual ~FindInFilesDialog() override;\n\n    QString findPath() const;\n\npublic slots:\n    void setFindPath(const QString& path);\n\nsignals:\n    void queryToOpen(const QString& path, int line, int column);\n\nprotected:\n    virtual void closeEvent(QCloseEvent *) override;\nprivate:\n    std::unique_ptr<Ui::FindInFilesDialog> ui;\n};\n\n#endif // FINDINFILESDIALOG_H\n"
  },
  {
    "path": "ide/findinfilesdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FindInFilesDialog</class>\n <widget class=\"QDialog\" name=\"FindInFilesDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>609</width>\n    <height>372</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Find in files</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <layout class=\"QFormLayout\" name=\"formLayout\">\n     <item row=\"0\" column=\"0\">\n      <widget class=\"QLabel\" name=\"label_1\">\n       <property name=\"text\">\n        <string>Directory</string>\n       </property>\n       <property name=\"alignment\">\n        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n       </property>\n      </widget>\n     </item>\n     <item row=\"0\" column=\"1\">\n      <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n       <item>\n        <widget class=\"QLineEdit\" name=\"textDirectory\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonChoseDirectory\">\n         <property name=\"icon\">\n          <iconset theme=\"document-open\">\n           <normaloff>.</normaloff>.</iconset>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </item>\n     <item row=\"1\" column=\"0\">\n      <widget class=\"QLabel\" name=\"label_2\">\n       <property name=\"text\">\n        <string>File pattern</string>\n       </property>\n       <property name=\"alignment\">\n        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n       </property>\n      </widget>\n     </item>\n     <item row=\"1\" column=\"1\">\n      <layout class=\"QHBoxLayout\" name=\"horizontalLayout_4\">\n       <item>\n        <widget class=\"QLineEdit\" name=\"textFilePattern\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonSelectfilePattern\">\n         <property name=\"icon\">\n          <iconset theme=\"application-menu\">\n           <normaloff>.</normaloff>.</iconset>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </item>\n     <item row=\"2\" column=\"0\">\n      <widget class=\"QLabel\" name=\"label_3\">\n       <property name=\"text\">\n        <string>Text to find</string>\n       </property>\n       <property name=\"alignment\">\n        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n       </property>\n      </widget>\n     </item>\n     <item row=\"2\" column=\"1\">\n      <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n       <item>\n        <widget class=\"FindLineEdit\" name=\"textToFind\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonFind\">\n         <property name=\"icon\">\n          <iconset theme=\"edit-find\">\n           <normaloff>.</normaloff>.</iconset>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QTreeView\" name=\"treeView\">\n     <property name=\"editTriggers\">\n      <set>QAbstractItemView::NoEditTriggers</set>\n     </property>\n     <property name=\"alternatingRowColors\">\n      <bool>true</bool>\n     </property>\n     <property name=\"uniformRowHeights\">\n      <bool>true</bool>\n     </property>\n     <property name=\"animated\">\n      <bool>true</bool>\n     </property>\n     <property name=\"headerHidden\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n     <item>\n      <widget class=\"QToolButton\" name=\"buttonExpandAll\">\n       <property name=\"text\">\n        <string>expand all</string>\n       </property>\n       <property name=\"checkable\">\n        <bool>true</bool>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QLabel\" name=\"labelStatus\"/>\n     </item>\n     <item>\n      <widget class=\"QLabel\" name=\"labelFilename\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Preferred\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"buttonStop\">\n       <property name=\"enabled\">\n        <bool>false</bool>\n       </property>\n       <property name=\"icon\">\n        <iconset theme=\"dialog-cancel\">\n         <normaloff>.</normaloff>.</iconset>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>FindLineEdit</class>\n   <extends>QLineEdit</extends>\n   <header>findlineedit.h</header>\n  </customwidget>\n </customwidgets>\n <tabstops>\n  <tabstop>textToFind</tabstop>\n  <tabstop>treeView</tabstop>\n  <tabstop>buttonFind</tabstop>\n  <tabstop>buttonSelectfilePattern</tabstop>\n  <tabstop>textDirectory</tabstop>\n  <tabstop>textFilePattern</tabstop>\n  <tabstop>buttonChoseDirectory</tabstop>\n  <tabstop>buttonStop</tabstop>\n </tabstops>\n <resources/>\n <connections>\n  <connection>\n   <sender>textToFind</sender>\n   <signal>returnPressed()</signal>\n   <receiver>buttonFind</receiver>\n   <slot>click()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>321</x>\n     <y>79</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>427</x>\n     <y>87</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "ide/findlineedit.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"findlineedit.h\"\n\n#include <QHBoxLayout>\n#include <QMenu>\n#include <QToolButton>\n#include <QStyle>\n#include <QEvent>\n\nstatic const QString INNER_BUTTON_STYLE = \"background: transparent; border: none;\";\n\nFindLineEdit::FindLineEdit(QWidget *parent) : QLineEdit(parent)\n{\n    auto layout = new QHBoxLayout(this);\n    auto clearButton = new QToolButton(this);\n    optionsButton = new QToolButton(this);\n    optionsButton->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", \"application-menu\" })));\n    clearButton->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", \"edit-clear\" })));\n    optionsButton->setFocusPolicy(Qt::NoFocus);\n    optionsButton->setPopupMode(QToolButton::InstantPopup);\n    optionsButton->setCursor(Qt::ArrowCursor);\n    clearButton->setFocusPolicy(Qt::NoFocus);\n    clearButton->setCursor(Qt::ArrowCursor);\n    optionsButton->setStyleSheet(INNER_BUTTON_STYLE);\n    clearButton->setStyleSheet(INNER_BUTTON_STYLE);\n    int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);\n    setStyleSheet(QString(\"QLineEdit { padding-right: %1px; padding-left: %2px }\\n\"\n                          \"QToolButton::menu-indicator { image: none; }\")\n                  .arg(clearButton->sizeHint().width() + frameWidth + 1)\n                  .arg(optionsButton->sizeHint().width() + frameWidth + 1));\n    layout->addWidget(optionsButton, 0, Qt::AlignLeft);\n    layout->addWidget(clearButton, 0, Qt::AlignRight);\n    layout->setMargin(0);\n    const auto margin = frameWidth * 2 + 2;\n    layout->setContentsMargins(margin, 0, margin, 0);\n    layout->setSpacing(0);\n    connect(clearButton, SIGNAL(clicked()), this, SLOT(clear()));\n    QSize msz = minimumSizeHint();\n    setMinimumSize(qMax(msz.width(), clearButton->sizeHint().height() + margin),\n                   qMax(msz.height(), clearButton->sizeHint().height() + margin));\n}\n\nvoid FindLineEdit::addMenuActions(const QHash<QString, QString> &actionList)\n{\n    auto menu = new QMenu(this);\n    QHash<QString, QString>::const_iterator it;\n    for (it = actionList.constBegin(); it != actionList.constEnd(); ++it) {\n        const auto& actionName = it.key();\n        const auto& propertyName = it.value();\n        auto action = menu->addAction(actionName);\n        action->setCheckable(true);\n        setProperty(propertyName.toLatin1().constData(), false);\n        actionMap.insert(propertyName, action);\n        connect(action, &QAction::triggered, [this, propertyName](bool ck) {\n            setProperty(propertyName.toLatin1().constData(), QVariant(ck));\n            emit menuActionClicked(propertyName, ck);\n        });\n    }\n    optionsButton->setMenu(menu);\n}\n\nvoid FindLineEdit::setPropertyChecked(const QString& propertyName, bool state)\n{\n    setProperty(propertyName.toLatin1().constData(), state);\n    if (actionMap.contains(propertyName))\n        actionMap.value(propertyName)->setChecked(state);\n}\n"
  },
  {
    "path": "ide/findlineedit.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef FINDLINEEDIT_H\n#define FINDLINEEDIT_H\n\n#include <QLineEdit>\n\nclass QToolButton;\n\nclass FindLineEdit : public QLineEdit\n{\n    Q_OBJECT\n\npublic:\n    explicit FindLineEdit(QWidget *parent = nullptr);\n    virtual ~FindLineEdit() {}\n\n    void addMenuActions(const QHash<QString, QString>& actionList);\n\n    void setPropertyChecked(const QString &propertyName, bool state);\n    bool isPropertyChecked(const char *name) const { return property(name).toBool(); }\n\nsignals:\n    void menuActionClicked(const QString& prop, bool status);\n\nprivate:\n    QToolButton *optionsButton;\n    QHash<QString, QAction*> actionMap;\n};\n\n#endif // FINDLINEEDIT_H\n"
  },
  {
    "path": "ide/findmakefiledialog.cpp",
    "content": "#include \"findmakefiledialog.h\"\n#include \"ui_findmakefiledialog.h\"\n\n#include <QDirIterator>\n#include <QStandardItemModel>\n#include <QStringListModel>\n#include <QTimer>\n\nQString find_root(const QStringList& list) {\n    QString root = list.front();\n    for(const auto& item : list) {\n        if (root.length() > item.length())\n            root.truncate(item.length());\n        for(int i = 0; i < root.length(); ++i)\n            if (root[i] != item[i]) {\n                root.truncate(i);\n                break;\n            }\n    }\n    return root;\n}\n\nstatic QStringList extractPrefix(const QStringList& list, const QString& root)\n{\n    QStringList copy;\n    for (const auto& e: list)\n        copy.append(\"...\" + QString(e).remove(root));\n    return copy;\n}\n\nFindMakefileDialog::FindMakefileDialog(const QString &path, QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::FindMakefileDialog)\n{\n    ui->setupUi(this);\n    setProperty(\"path\", path);\n    QTimer::singleShot(0, [this, path](){\n        auto model = new QStringListModel(this);\n        ui->makefileList->setModel(model);\n        ui->buttonOpen->setDisabled(true);\n        model->setStringList(extractPrefix(findInPath(path), path));\n        ui->buttonOpen->setDisabled(false);\n        if (model->rowCount() > 0) {\n            ui->makefileList->setCurrentIndex(model->index(0, 0));\n        }\n    });\n    setProperty(\"canceling\", false);\n    connect(ui->buttonCancel, &QAbstractButton::clicked, [this]() {\n        reject();\n        setProperty(\"canceling\", true);\n    });\n    connect(ui->buttonOpen, &QAbstractButton::clicked, this, &QDialog::accept);\n    connect(ui->makefileList, &QAbstractItemView::activated, this, &QDialog::accept);\n}\n\nFindMakefileDialog::~FindMakefileDialog()\n{\n    delete ui;\n}\n\nQString FindMakefileDialog::fileName() const\n{\n    auto model = qobject_cast<QStringListModel*>(ui->makefileList->model());\n    if (!model)\n        return {};\n    auto text = model->stringList().at(ui->makefileList->currentIndex().row());\n    return property(\"path\").toString() + QDir::separator() + text.remove(0, 3);\n}\n\nQStringList FindMakefileDialog::findInPath(const QString &path)\n{\n    QStringList list;\n    QDirIterator it(path, QDir::AllEntries | QDir::NoSymLinks | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);\n    while (it.hasNext()) {\n        auto name = it.next();\n        ui->labelLog->setText(tr(\"Finding in ...%1\").arg(name.rightRef(30)));\n        if (QFileInfo(name).fileName() == \"Makefile\") {\n            list += name;\n        }\n        QCoreApplication::processEvents();\n        if (property(\"canceling\").toBool()) {\n            break;\n        }\n    }\n    ui->labelLog->setText(tr(\"Done.\"));\n    return list;\n}\n"
  },
  {
    "path": "ide/findmakefiledialog.h",
    "content": "#ifndef FINDMAKEFILEDIALOG_H\n#define FINDMAKEFILEDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass FindMakefileDialog;\n}\n\nclass FindMakefileDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit FindMakefileDialog(const QString& path, QWidget *parent = nullptr);\n    ~FindMakefileDialog();\n\n    QString fileName() const;\n\nprivate:\n    Ui::FindMakefileDialog *ui;\n\n    QStringList findInPath(const QString& path);\n};\n\n#endif // FINDMAKEFILEDIALOG_H\n"
  },
  {
    "path": "ide/findmakefiledialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FindMakefileDialog</class>\n <widget class=\"QDialog\" name=\"FindMakefileDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>463</width>\n    <height>266</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Dialog</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <widget class=\"QLabel\" name=\"labelLog\">\n     <property name=\"text\">\n      <string/>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QListView\" name=\"makefileList\">\n     <property name=\"editTriggers\">\n      <set>QAbstractItemView::NoEditTriggers</set>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QPushButton\" name=\"buttonCancel\">\n       <property name=\"text\">\n        <string>Cancel</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"buttonOpen\">\n       <property name=\"text\">\n        <string>Open</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ide/formfindreplace.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"formfindreplace.h\"\n#include \"Qsci/qsciscintilla.h\"\n#include \"appconfig.h\"\n\n#include \"ui_formfindreplace.h\"\n\n#include <QKeyEvent>\n#include <QMessageBox>\n#include <QtDebug>\n\nFormFindReplace::FormFindReplace(QsciScintilla *ed) :\n    QWidget(ed->viewport()),\n    ui(std::make_unique<Ui::FormFindReplace>()),\n    editor(ed)\n{\n    ui->setupUi(this);\n    const struct { QAbstractButton *b; const char *name; } buttonmap[]={\n        { ui->buttonFind, \"edit-find\" },\n        { ui->buttonFindPrev_2, \"dialog-close\" },\n        { ui->buttonReplace, \"edit-find-replace\" },\n    };\n    for (const auto& e: buttonmap)\n        e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.name })});\n\n    ui->textToFind->addMenuActions({\n        { tr(\"Regular Expression\"), \"regex\" },\n        { tr(\"Case Sensitive\"), \"case\" },\n        { tr(\"Wole Words\"), \"wword\" },\n        { tr(\"Selection Only\"), \"selonly\" },\n        { tr(\"Wrap search\"), \"wrap\" },\n        { tr(\"Backward search\"), \"backward\" },\n    });\n    ui->textToFind->setPropertyChecked(\"wrap\", true);\n    ui->textToReplace->addMenuActions({ { tr(\"Replace All\"), \"replaceAll\" } });\n    connect(ui->textToFind, &FindLineEdit::menuActionClicked, [this]() { setProperty(\"isFirst\", true); });\n    auto layout = new QGridLayout(ed->viewport());\n    layout->setRowStretch(0, 1);\n    layout->addWidget(this, 1, 0);\n    layout->setMargin(0);\n    layout->setContentsMargins(0, 0, 0, 0);\n    editor->installEventFilter(this);\n}\n\nFormFindReplace::~FormFindReplace()\n{\n}\n\nvoid FormFindReplace::showEvent(QShowEvent *event)\n{\n    QWidget::showEvent(event);\n    ui->textToFind->setFocus();\n    ui->textToFind->setText(editor->selectedText());\n    setProperty(\"isFirst\", true);\n}\n\nvoid FormFindReplace::hideEvent(QHideEvent *event)\n{\n    QWidget::hideEvent(event);\n    editor->setFocus();\n}\n\nvoid FormFindReplace::keyPressEvent(QKeyEvent *event)\n{\n    if (event->key() == Qt::Key_Escape) {\n        hide();\n        event->accept();\n    } else\n        QWidget::keyPressEvent(event);\n}\n\nbool FormFindReplace::eventFilter(QObject *watched, QEvent *event)\n{\n    Q_UNUSED(watched)\n    switch (event->type()) {\n    case QEvent::KeyPress:\n        if (isVisible()) {\n            if (!ui->textToFind->hasFocus())\n                ui->textToFind->setFocus();\n            this->event(event);\n            return true;\n        }\n        break;\n    default:\n        break;\n    }\n    return false;\n}\n\nbool FormFindReplace::on_buttonFind_clicked()\n{\n    auto found = false;\n    auto expr = ui->textToFind->text();\n    if (property(\"isFirst\").toBool()) {\n        bool re = ui->textToFind->isPropertyChecked(\"regex\");\n        bool cs = ui->textToFind->isPropertyChecked(\"case\");\n        bool wo = ui->textToFind->isPropertyChecked(\"wword\");\n        bool wrap = ui->textToFind->isPropertyChecked(\"wrap\");\n        bool forward = !ui->textToFind->isPropertyChecked(\"backward\");\n        int line = -1;\n        int index = -1;\n        bool show = true;\n        bool posix = false;\n        bool selonly = ui->textToFind->isPropertyChecked(\"selonly\");\n        if (selonly)\n            found = editor->findFirstInSelection(expr, re, cs, wo, forward, show, posix);\n        else\n            found = editor->findFirst(expr, re, cs, wo, wrap, forward, line, index, show, posix);\n        setProperty(\"isFirst\", false);\n    } else\n        found = editor->findNext();\n    auto pal = ui->textToFind->palette();\n    pal.setBrush(QPalette::Base, found? palette().base() : QBrush(QColor(Qt::red).lighter()));\n    ui->textToFind->setPalette(pal);\n    return found;\n}\n\nvoid FormFindReplace::on_buttonReplace_clicked()\n{\n    while (on_buttonFind_clicked()) {\n        auto replaceText = ui->textToReplace->text();\n        editor->replace(replaceText);\n        if (!ui->textToReplace->isPropertyChecked(\"replaceAll\"))\n            break;\n    }\n}\n\nvoid FormFindReplace::on_textToFind_textChanged(const QString &text)\n{\n    Q_UNUSED(text)\n    int line;\n    int pos;\n    auto p = property(\"currentPos\").toPoint();\n    if (!p.isNull()) {\n        line = p.x();\n        pos = p.y();\n        editor->setCursorPosition(line, pos);\n    }\n    editor->getCursorPosition(&line, &pos);\n    setProperty(\"currentPos\", QPoint(line, pos));\n    setProperty(\"isFirst\", true);\n    on_buttonFind_clicked();\n}\n\nvoid FormFindReplace::on_textToFind_returnPressed()\n{\n    setProperty(\"currentPos\", QPoint());\n    setProperty(\"isFirst\", false);\n    on_buttonFind_clicked();\n}\n"
  },
  {
    "path": "ide/formfindreplace.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef FORMFINDREPLACE_H\n#define FORMFINDREPLACE_H\n\n#include <QWidget>\n\n#include <memory>\n\nnamespace Ui {\nclass FormFindReplace;\n}\n\nclass QsciScintilla;\n\nclass FormFindReplace : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit FormFindReplace(QsciScintilla *ed);\n    virtual ~FormFindReplace() override;\n\nprotected:\n    void showEvent(QShowEvent *event) override;\n    void hideEvent(QHideEvent *event) override;\n    void keyPressEvent(QKeyEvent *event) override;\n    bool eventFilter(QObject *watched, QEvent *event) override;\n\nprivate slots:\n    bool on_buttonFind_clicked();\n\n    void on_buttonReplace_clicked();\n\n    void on_textToFind_textChanged(const QString &text);\n\n    void on_textToFind_returnPressed();\n\nprivate:\n    std::unique_ptr<Ui::FormFindReplace> ui;\n    QsciScintilla *editor;\n};\n\n#endif // FORMFINDREPLACE_H\n"
  },
  {
    "path": "ide/formfindreplace.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FormFindReplace</class>\n <widget class=\"QWidget\" name=\"FormFindReplace\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>210</width>\n    <height>56</height>\n   </rect>\n  </property>\n  <property name=\"autoFillBackground\">\n   <bool>true</bool>\n  </property>\n  <layout class=\"QGridLayout\" name=\"gridLayout\">\n   <property name=\"leftMargin\">\n    <number>2</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>2</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>2</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>2</number>\n   </property>\n   <property name=\"spacing\">\n    <number>2</number>\n   </property>\n   <item row=\"0\" column=\"0\">\n    <widget class=\"QLabel\" name=\"labelFind\">\n     <property name=\"text\">\n      <string>Find</string>\n     </property>\n     <property name=\"alignment\">\n      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"1\">\n    <widget class=\"FindLineEdit\" name=\"textToFind\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"2\">\n    <widget class=\"QToolButton\" name=\"buttonFind\">\n     <property name=\"icon\">\n      <iconset theme=\"edit-find\">\n       <normaloff>.</normaloff>.</iconset>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"3\">\n    <widget class=\"QToolButton\" name=\"buttonFindPrev_2\">\n     <property name=\"icon\">\n      <iconset theme=\"dialog-close\">\n       <normaloff>.</normaloff>.</iconset>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"0\">\n    <widget class=\"QLabel\" name=\"labelReplace\">\n     <property name=\"text\">\n      <string>Replace</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"1\">\n    <widget class=\"FindLineEdit\" name=\"textToReplace\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"2\">\n    <widget class=\"QToolButton\" name=\"buttonReplace\">\n     <property name=\"icon\">\n      <iconset theme=\"edit-find-replace\">\n       <normaloff>.</normaloff>.</iconset>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>FindLineEdit</class>\n   <extends>QLineEdit</extends>\n   <header>findlineedit.h</header>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonFindPrev_2</sender>\n   <signal>clicked()</signal>\n   <receiver>FormFindReplace</receiver>\n   <slot>hide()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>498</x>\n     <y>22</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>466</x>\n     <y>9</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "ide/icodemodelprovider.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"icodemodelprovider.h\"\n\n#include <QUrlQuery>\n\nICodeModelProvider::FileReference::FileReference(const QString &p, int l, int c, const QString &m):\n    path(p), line(l), column(c), meta(m)\n{\n}\n\nQUrl ICodeModelProvider::FileReference::encode() const\n{\n    auto url = QUrl::fromLocalFile(path);\n    QUrlQuery q;\n    q.addQueryItem(\"line\", QString(\"%1\").arg(line));\n    q.addQueryItem(\"column\", QString(\"%1\").arg(column));\n    q.addQueryItem(\"meta\", meta);\n    url.setQuery(q);\n    return url;\n}\n\nbool ICodeModelProvider::FileReference::isEmpty() const\n{\n    return path.isEmpty() &&\n           meta.isEmpty() &&\n           line == -1 &&\n           column == -1;\n}\n\nICodeModelProvider::FileReference ICodeModelProvider::FileReference::decode(const QUrl &url)\n{\n    QUrlQuery q(url.query());\n    return { url.toLocalFile(), q.queryItemValue(\"line\").toInt(), 0, q.queryItemValue(\"meta\") };\n}\n\nbool ICodeModelProvider::FileReference::operator ==(const ICodeModelProvider::FileReference &other) const\n{\n    return path == other.path && meta == other.meta && line == other.line && column == other.column;\n}\n\nICodeModelProvider::~ICodeModelProvider() {}\n\nQString ICodeModelProvider::Symbol::toString() const\n{\n    return QString{\"%1, %2, %3, %4, %5\"}.arg(name, expression, lang, type, ref.encode().toString());\n}\n"
  },
  {
    "path": "ide/icodemodelprovider.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef ICPPCODEMODELPROVIDER_H\n#define ICPPCODEMODELPROVIDER_H\n\n#include <QObject>\n\n#include <QMimeType>\n\n#include <QUrl>\n#include <functional>\n\nclass ICodeModelProvider\n{\npublic:\n    virtual ~ICodeModelProvider();\n\n    struct FileReference {\n        QString path;\n        int line = -1;\n        int column = -1;\n        QString meta;\n\n        FileReference() {}\n        FileReference(const QString& p, int l, int c, const QString& m);\n        QUrl encode() const;\n        bool isEmpty() const;\n        static FileReference decode(const QUrl& url);\n\n        bool operator ==(const FileReference& other) const;\n    };\n    struct Symbol {\n        QString name;\n        QString expression;\n        QString lang;\n        QString type;\n        FileReference ref;\n\n        bool operator ==(const Symbol& other) const { return toString() == other.toString(); }\n\n        QString toString() const;\n    };\n\n    using SymbolList = QList<Symbol>;\n    using FileReferenceList = QList<FileReference>;\n    using SymbolSet = QSet<ICodeModelProvider::Symbol>;\n    using SymbolSetMap = QHash<QString, SymbolSet>;\n\n    using FindReferenceCallback_t = std::function<void (const FileReferenceList& ref)>;\n    using CompletionCallback_t = std::function<void (const QStringList& completionList)>;\n    using SymbolRequestCallback_t = std::function<void (const SymbolSetMap& completionList)>;\n    using FinishIndexProjectCallback_t = std::function<void ()>;\n    using FinishIndexFileCallback_t = std::function<void ()>;\n\n    virtual void startIndexingProject(const QString& path, FinishIndexProjectCallback_t cb) = 0;\n    virtual void startIndexingFile(const QString& path, FinishIndexFileCallback_t cb) = 0;\n\n    virtual void referenceOf(const QString& entity, FindReferenceCallback_t cb) = 0;\n    virtual void completionAt(const FileReference& ref, const QString& unsaved, CompletionCallback_t cb) = 0;\n    virtual void requestSymbolForFile(const QString& path, SymbolRequestCallback_t cb) = 0;\n};\n\nQ_DECLARE_METATYPE(ICodeModelProvider::FileReference)\nQ_DECLARE_METATYPE(ICodeModelProvider::Symbol)\n\ninline uint qHash(const ICodeModelProvider::FileReference &t, uint seed = 0)\n{\n    return qHash(t.encode(), seed);\n}\n\ninline uint qHash(const ICodeModelProvider::Symbol &t, uint seed = 0)\n{\n    return qHash(t.toString(), seed);\n}\n\n#endif // ICPPCODEMODELPROVIDER_H\n"
  },
  {
    "path": "ide/ide.pro",
    "content": "DESTDIR  = ../build\n\nQT += core gui widgets svg xml network concurrent uitools\n\nCONFIG += qscintilla2\nCONFIG += c++14\nCONFIG += warn_off\n\ngreaterThan(QT_MINOR_VERSION, 11) {\n    CONFIG += lrelease embed_translations\n}\n\nTARGET = embedded-ide\nTEMPLATE = app\n\nTRANSLATIONS = translations/es.ts\n\nDEFINES += QT_DEPRECATED_WARNINGS\n\n# You can also make your code fail to compile if you use deprecated APIs.\n# In order to do so, uncomment the following line.\n# You can also select to disable deprecated APIs only up to a certain version of Qt.\n#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0\n\ninclude($$PWD/../mapview/mapview.pri)\ninclude($$PWD/../3rdpart/qhexview/qhexview.pri)\ninclude($$PWD/../3rdpart/astyle/astyle.pri)\ninclude($$PWD/../3rdpart/qdarkstyle/qdarkstype.pri)\ninclude($$PWD/../3rdpart/hoedown/hoedown.pri)\ninclude($$PWD/../3rdpart/qt-mustache-master/qt-mustache.pri)\n\n#linux:!android: include(3rdpart/backward/backward.pri)\n#include(3rdpart/qt-promise/qt-promise.pri)\n\nINCLUDEPATH += $$PWD/../3rdpart\n\nSOURCES += \\\n    envinputdialog.cpp \\\n    findandopenfiledialog.cpp \\\n    findmakefiledialog.cpp \\\n        main.cpp \\\n        mainwindow.cpp \\\n    markdowneditor.cpp \\\n    markdownview.cpp \\\n    newprojectfromremotedialog.cpp \\\n    processlinebufferizer.cpp \\\n        projectmanager.cpp \\\n        documentmanager.cpp \\\n        idocumenteditor.cpp \\\n        plaintexteditor.cpp \\\n        filesystemmanager.cpp \\\n    templatefile.cpp \\\n        unsavedfilesdialog.cpp \\\n        processmanager.cpp \\\n        consoleinterceptor.cpp \\\n        buildmanager.cpp \\\n        binaryviewer.cpp \\\n        codetexteditor.cpp \\\n        findlineedit.cpp \\\n        formfindreplace.cpp \\\n        cpptexteditor.cpp \\\n        appconfig.cpp \\\n        configwidget.cpp \\\n        externaltoolmanager.cpp \\\n        version.cpp \\\n        newprojectdialog.cpp \\\n        findinfilesdialog.cpp \\\n        icodemodelprovider.cpp \\\n        templatemanager.cpp \\\n        templateitemwidget.cpp \\\n    clangautocompletionprovider.cpp \\\n    childprocess.cpp \\\n    filereferencesdialog.cpp \\\n    mapfileviewer.cpp \\\n    textmessagebrocker.cpp \\\n    regexhtmltranslator.cpp \\\n    imageviewer.cpp\n\nHEADERS += \\\n    buttoneditoritemdelegate.h \\\n    envinputdialog.h \\\n    findandopenfiledialog.h \\\n    findmakefiledialog.h \\\n        mainwindow.h \\\n    markdowneditor.h \\\n    markdownview.h \\\n    newprojectfromremotedialog.h \\\n    processlinebufferizer.h \\\n        projectmanager.h \\\n        documentmanager.h \\\n        idocumenteditor.h \\\n        plaintexteditor.h \\\n        filesystemmanager.h \\\n    tar.h \\\n    templatefile.h \\\n        unsavedfilesdialog.h \\\n        processmanager.h \\\n        consoleinterceptor.h \\\n        buildmanager.h \\\n        binaryviewer.h \\\n        codetexteditor.h \\\n        findlineedit.h \\\n        formfindreplace.h \\\n        cpptexteditor.h \\\n        appconfig.h \\\n        configwidget.h \\\n        externaltoolmanager.h \\\n        version.h \\\n        newprojectdialog.h \\\n        findinfilesdialog.h \\\n        icodemodelprovider.h \\\n        templatemanager.h \\\n        templateitemwidget.h \\\n    clangautocompletionprovider.h \\\n    childprocess.h \\\n    filereferencesdialog.h \\\n    mapfileviewer.h \\\n    textmessagebrocker.h \\\n    regexhtmltranslator.h \\\n    imageviewer.h\n\nFORMS += \\\n    envinputdialog.ui \\\n    findandopenfiledialog.ui \\\n    findmakefiledialog.ui \\\n        mainwindow.ui \\\n    newprojectfromremotedialog.ui \\\n        unsavedfilesdialog.ui \\\n        formfindreplace.ui \\\n    configwidget.ui \\\n    externaltoolmanager.ui \\\n    newprojectdialog.ui \\\n    findinfilesdialog.ui \\\n    templatemanager.ui \\\n    templateitemwidget.ui \\\n    filereferencesdialog.ui\n\nCONFIG += mobility\nMOBILITY = \n\nRESOURCES += \\\n    resources/fonts.qrc \\\n    resources/iconactions.qrc \\\n    resources/kinds.qrc \\\n    resources/mimetypes.qrc \\\n    resources/resources.qrc \\\n    resources/styles.qrc\n\n#QMAKE_LFLAGS += -lqscintilla2_qt5\n\nLIBS += -lz\n\nwin32 {\n    QMAKE_CXXFLAGS += -g3\n    QMAKE_CFLAGS += -g3\n}\n\nunix {\n    QMAKE_LFLAGS_RELEASE += -static-libstdc++ -static-libgcc\n    QMAKE_LFLAGS_DEBUG += -static-libstdc++ -static-libgcc\n    isEmpty(PREFIX) {\n        PREFIX = /usr\n    }\n\n    target.path = $$PREFIX/bin\n\n    desktopfile.files = skeleton/embedded-ide.desktop\n    desktopfile.path = $$PREFIX/share/applications\n\n    iconfiles.files = resources/images/light/embedded-ide.svg resources/light/images/embedded-ide.png\n    iconfiles.path = $$PREFIX/share/icons/default/256x256/apps/\n\n    scripts.path = $$PREFIX/bin\n    scripts.files = skeleton/desktop-integration.sh skeleton/ftdi-tools.sh\n\n    hardconf.path = $$PREFIX/share/embedded-ide\n    hardconf.files = skeleton/embedded-ide.hardconf\n\n    INSTALLS += desktopfile\n    INSTALLS += iconfiles\n    INSTALLS += scripts\n    INSTALLS += hardconf\n    INSTALLS += target\n}\n\nDISTFILES += \\\n    skeleton/desktop-integration.sh \\\n    skeleton/embedded-ide.sh \\\n    skeleton/embedded-ide.sh.wrapper \\\n    skeleton/ftdi-tools.sh \\\n    skeleton/embedded-ide.hardconf \\\n    skeleton/embedded-ide.desktop \\\n    translations/es.ts\n"
  },
  {
    "path": "ide/idocumenteditor.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"idocumenteditor.h\"\n\n#include <QFile>\n#include <QFileInfo>\n#include <QMimeDatabase>\n\nDocumentEditorFactory::DocumentEditorFactory()\n= default;\n\nDocumentEditorFactory *DocumentEditorFactory::instance()\n{\n    static DocumentEditorFactory *staticInstance = nullptr;\n    if (!staticInstance)\n        staticInstance = new DocumentEditorFactory();\n    return staticInstance;\n}\n\nvoid DocumentEditorFactory::registerDocumentInterface(IDocumentEditorCreator *creator)\n{\n    creators << creator;\n}\n\nIDocumentEditor *DocumentEditorFactory::create(const QString &path, QWidget *parent)\n{\n    QMimeDatabase db;\n    auto mime = db.mimeTypeForFile(path);\n    auto info = QFileInfo(path);\n    auto suffixes = QStringList(info.suffix()) << mime.suffixes();\n    if (info.size() == 0) {\n        // FIXME: Force the content type of empty files to plain-text\n        mime = db.mimeTypeForData(QByteArray{\"\\n\"});\n    }\n\n    // Try first from suffix\n    for(auto c: creators)\n        if (c->canHandleExtentions(suffixes))\n            return c->create(parent);\n    // Try second from mimetype\n    for(auto c: creators)\n        if (c->canHandleMime(mime))\n            return c->create(parent);\n    return nullptr;\n}\n\nIDocumentEditor::~IDocumentEditor()\n= default;\n\nIDocumentEditorCreator::~IDocumentEditorCreator()\n= default;\n"
  },
  {
    "path": "ide/idocumenteditor.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef IDOCUMENTEDITOR_H\n#define IDOCUMENTEDITOR_H\n\n#include \"documentmanager.h\"\n\n#include <QObject>\n#include <QWidget>\n#include <QString>\n#include <QPoint>\n#include <QMimeType>\n\n#include <functional>\n\nclass ICodeModelProvider;\n\nclass IDocumentEditor\n{\npublic:\n    using ModifyObserver_t = std::function<void (IDocumentEditor *, bool)>;\n    using CursorObserver_t = std::function<void (IDocumentEditor *, int line, int col)>;\n\n    virtual ~IDocumentEditor();\n\n    virtual const QWidget *widget() const = 0;\n    virtual QWidget *widget() = 0;\n    virtual bool load(const QString& path) = 0;\n    virtual bool save(const QString& path) = 0;\n    virtual void reload() = 0;\n    virtual QString path() const { return widget()->windowFilePath(); }\n    virtual void setPath(const QString& path) { widget()->setWindowFilePath(path); }\n    virtual bool isReadonly() const = 0;\n    virtual void setReadonly(bool rdOnly) = 0;\n    virtual bool isModified() const = 0;\n    virtual void setModified(bool m) = 0;\n    virtual QPoint cursor() const = 0;\n    virtual void setCursor(const QPoint& pos) = 0;\n\n    void setDocumentManager(DocumentManager *man) { this->man = man; }\n    DocumentManager *documentManager() const { return this->man; }\n    void addModifyObserver(ModifyObserver_t fptr) { modifyObserverList.append(fptr); }\n    void addCursorObserver(CursorObserver_t fptr) { cursorObserverList.append(fptr); }\n\n    void setCodeModel(ICodeModelProvider *m) { _codeModel = m; }\n    ICodeModelProvider *codeModel() const { return _codeModel; }\n\nprotected:\n    void notifyModifyObservers() {\n        for(auto& a: modifyObserverList)\n            a(this, isModified());\n    }\n\n    void notifyCursorOvserver(int line, int col) {\n        for(auto& a: cursorObserverList)\n            a(this, line, col);\n    }\n\nprivate:\n    QList<ModifyObserver_t> modifyObserverList;\n    QList<CursorObserver_t> cursorObserverList;\n    ICodeModelProvider *_codeModel = nullptr;\n    DocumentManager *man = nullptr;\n};\n\nclass IDocumentEditorCreator\n{\npublic:\n    virtual ~IDocumentEditorCreator();\n\n    virtual bool canHandleExtentions(const QStringList&) const { return false; }\n    virtual bool canHandleMime(const QMimeType&) const { return false; }\n    virtual IDocumentEditor *create(QWidget *parent = nullptr) const = 0;\n\n    template<typename T>\n    static IDocumentEditorCreator *staticCreator() {\n        static IDocumentEditorCreator *singleton = nullptr;\n        if (!singleton)\n            singleton = new T;\n        return singleton;\n    }\n};\n\nclass DocumentEditorFactory: public QObject\n{\n    Q_OBJECT\n    Q_DISABLE_COPY(DocumentEditorFactory)\n\nprivate:\n    DocumentEditorFactory();\n    QList<IDocumentEditorCreator*> creators;\n\npublic:\n    static DocumentEditorFactory* instance();\n\n    void registerDocumentInterface(IDocumentEditorCreator *creator);\n    IDocumentEditor *create(const QString& path, QWidget *parent = nullptr);\n};\n\n#endif // IDOCUMENTEDITOR_H\n"
  },
  {
    "path": "ide/imageviewer.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"imageviewer.h\"\n\n#include <QImageReader>\n#include <QLabel>\n#include <QLayout>\n#include <QScrollArea>\n#include <QToolButton>\n#include <QVariant>\n\nstatic constexpr auto ICON_SIZE = QSize{22, 22};\nstatic constexpr auto ZOOMOUT_FACTOR = 1.1;\nstatic constexpr auto ZOOMIN_FACTOR = 0.99;\n\ntemplate<typename F>\nstatic QToolButton *createButton(const QString& name, QWidget *parent, F& func) {\n    auto b = new QToolButton(parent);\n    b->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", name })));\n    b->setIconSize(ICON_SIZE);\n    b->setAutoRaise(true);\n    QObject::connect(b, &QToolButton::clicked, func);\n    return b;\n}\n\ntemplate<typename F>\nstatic QToolButton *createToggleButton(const QString& name, QWidget *parent, F& func) {\n    auto b = new QToolButton(parent);\n    b->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", name })));\n    b->setIconSize(ICON_SIZE);\n    b->setAutoRaise(true);\n    b->setCheckable(true);\n    QObject::connect(b, &QToolButton::toggled, func);\n    return b;\n}\n\nclass AspectRatioLabel : public QLabel\n{\npublic:\n    explicit AspectRatioLabel(QWidget* parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) :\n        QLabel(parent, f) {}\n    ~AspectRatioLabel() override;\n\npublic slots:\n    void setPixmap(const QPixmap& pm) {\n        pixmapWidth = pm.width();\n        pixmapHeight = pm.height();\n\n        updateMargins();\n        QLabel::setPixmap(pm);\n    }\n\nprotected:\n    void resizeEvent(QResizeEvent* event) override {\n        updateMargins();\n        QLabel::resizeEvent(event);\n    }\n\n\nprivate:\n    void updateMargins() {\n        if (pixmapWidth <= 0 || pixmapHeight <= 0)\n            return;\n\n        int w = this->width();\n        int h = this->height();\n\n        if (w <= 0 || h <= 0)\n            return;\n\n        if (w * pixmapHeight > h * pixmapWidth)\n        {\n            int m = (w - (pixmapWidth * h / pixmapHeight)) / 2;\n            setContentsMargins(m, 0, m, 0);\n        }\n        else\n        {\n            int m = (h - (pixmapHeight * w / pixmapWidth)) / 2;\n            setContentsMargins(0, m, 0, m);\n        }\n    }\n\n    int pixmapWidth = 0;\n    int pixmapHeight = 0;\n};\n\nAspectRatioLabel::~AspectRatioLabel() = default;\n\nImageViewer::ImageViewer(QWidget *parent) : QWidget(parent)\n{\n    auto area = new QScrollArea(this);\n    auto label = new AspectRatioLabel(this);\n    label->setObjectName(\"image\");\n    label->setBackgroundRole(QPalette::Base);\n    label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);\n    label->setScaledContents(true);\n    area->setWidget(label);\n    auto h = new QGridLayout(area);\n\n    setProperty(\"factor\", 1.0);\n    auto doScale = [label](double f) { label->resize(label->size() * f); };\n    auto zoomIn = [doScale]() { doScale(ZOOMOUT_FACTOR); };\n    auto zoomOut = [doScale]() { doScale(ZOOMIN_FACTOR); };\n    auto zoomFit = [area, label](bool check) {\n        area->setWidgetResizable(check);\n        if (!check) {\n            label->resize(label->pixmap()->size());\n        }\n    };\n\n    h->setContentsMargins(0, 0, 0, 0);\n    h->setSpacing(0);\n    h->addWidget(createToggleButton(\"zoom-fit-best\", area, zoomFit), 0, 1);\n    h->addWidget(createButton(\"zoom-in\", area, zoomIn), 0, 2);\n    h->addWidget(createButton(\"zoom-out\", area, zoomOut), 0, 3);\n    h->setColumnStretch(0, 1);\n    h->setColumnStretch(1, 0);\n    h->setColumnStretch(2, 0);\n    h->setColumnStretch(3, 0);\n    h->setColumnStretch(4, 1);\n    h->setRowStretch(0, 0);\n    h->setRowStretch(1, 1);\n    auto l = new QHBoxLayout(this);\n    l->setContentsMargins(0, 0, 0, 0);\n    l->addWidget(area);\n}\n\nbool ImageViewer::load(const QString &path)\n{\n    QPixmap p;\n    if (!p.load(path))\n        return false;\n    auto label = findChild<AspectRatioLabel*>(\"image\");\n    label->setPixmap(p);\n    label->resize(label->pixmap()->size());\n    setProperty(\"factor\", 1.0);\n    setWindowFilePath(path);\n    return true;\n}\n\nclass ImageViewerCreator: public IDocumentEditorCreator\n{\npublic:\n    ~ImageViewerCreator() override;\n    bool canHandleMime(const QMimeType &mime) const override {\n        auto supportedMimes = QImageReader::supportedMimeTypes();\n        for (const auto& m: supportedMimes)\n            if (mime.inherits(m))\n                return true;\n        return false;\n    }\n\n    IDocumentEditor *create(QWidget *parent = nullptr) const override {\n        return new ImageViewer(parent);\n    }\n};\n\nIDocumentEditorCreator *ImageViewer::creator()\n{\n    return IDocumentEditorCreator::staticCreator<ImageViewerCreator>();\n}\n\nImageViewerCreator::~ImageViewerCreator() = default;\n"
  },
  {
    "path": "ide/imageviewer.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef IMAGEVIEWER_H\n#define IMAGEVIEWER_H\n\n#include \"idocumenteditor.h\"\n\n#include <QWidget>\n\nclass ImageViewer : public IDocumentEditor, public QWidget\n{\npublic:\n    explicit ImageViewer(QWidget *parent = nullptr);\n    virtual ~ImageViewer() override {}\n\n    virtual const QWidget *widget() const override { return this; }\n    virtual QWidget *widget() override { return this; }\n    virtual bool load(const QString& path) override;\n    virtual bool save(const QString& path) override { Q_UNUSED(path); return false; }\n    virtual void reload() override { load(path()); }\n    virtual QString path() const override { return widget()->windowFilePath(); }\n    virtual void setPath(const QString& path) override { widget()->setWindowFilePath(path); }\n    virtual bool isReadonly() const override { return true; }\n    virtual void setReadonly(bool rdOnly) override { Q_UNUSED(rdOnly); }\n    virtual bool isModified() const override { return false; }\n    virtual void setModified(bool m) override { Q_UNUSED(m); }\n    virtual QPoint cursor() const override { return QPoint(); }\n    virtual void setCursor(const QPoint& pos) override { Q_UNUSED(pos); }\n\n    static IDocumentEditorCreator *creator();\n};\n\n#endif // IMAGEVIEWER_H\n"
  },
  {
    "path": "ide/main.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"mainwindow.h\"\n\n#include <QApplication>\n#include <QCommandLineParser>\n#include <QFont>\n#include <QFontDatabase>\n#include <QIcon>\n#include <QNetworkProxy>\n#include <QNetworkProxyFactory>\n#include <QProcess>\n#include <QTimer>\n#include <QTranslator>\n\n#include <QtDebug>\n\nint main(int argc, char *argv[])\n{\n    QCoreApplication::setApplicationName(\"Embedded IDE\");\n    QCoreApplication::setOrganizationName(\"none\");\n    QCoreApplication::setOrganizationDomain(\"unknown.tk\");\n\n    QApplication app(argc, argv);\n    QApplication::setWindowIcon(QIcon(AppConfig::resourceImage(\"embedded-ide\" )));\n    QTranslator tr;\n    for(const auto& p: AppConfig::langPaths()) {\n        if (tr.load(QLocale::system().name(), p)) {\n            if (QApplication::installTranslator(&tr)) {\n                qDebug() << \"load translations\" << QLocale::system().name();\n                break;\n            }\n        }\n    }\n\n    auto checkConfig = [&app, &tr](AppConfig *config) {\n        app.setStyleSheet( config->useDarkStyle()?\n            AppConfig::readEntireTextFile(\":/qdarkstyle/style.qss\"): \"\"\n        );\n        auto selectedLang = config->language();\n        if (!selectedLang.isEmpty()) {\n            for(const auto& p: AppConfig::langPaths()) {\n                if (tr.load(selectedLang, p)) {\n                    if (QApplication::installTranslator(&tr)) {\n                        qDebug() << \"load translations\" << QLocale::system().name();\n                        break;\n                    }\n                }\n            }\n        }\n    };\n    QObject::connect(&AppConfig::instance(), &AppConfig::configChanged, [&checkConfig](AppConfig *config)\n    {\n        checkConfig(config);\n        switch (config->networkProxyType()) {\n        case AppConfig::NetworkProxyType::None:\n            QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);\n            break;\n        case AppConfig::NetworkProxyType::System:\n            QNetworkProxyFactory::setUseSystemConfiguration(true);\n            break;\n        case AppConfig::NetworkProxyType::Custom:\n            QNetworkProxy proxy(\n                        QNetworkProxy::HttpProxy, config->networkProxyHost(),\n                        static_cast<quint16>(config->networkProxyPort().toInt()));\n            if (config->networkProxyUseCredentials()) {\n                proxy.setUser(config->networkProxyUsername());\n                proxy.setPassword(config->networkProxyPassword());\n            }\n            QNetworkProxy::setApplicationProxy(proxy);\n            break;\n        }\n    });\n    AppConfig::instance().load();\n    checkConfig(&AppConfig::instance());\n\n\n    QCommandLineParser opt;\n    opt.addHelpOption();\n    opt.addVersionOption();\n    opt.addPositionalArgument(\"filename\", \"Makefile filename\");\n    opt.addOptions({\n                       { { \"e\", \"exec\" }, \"Execute stript or file\", \"execname\" },\n                       { { \"d\", \"debug\"}, \"Enable debug\" },\n                       { { \"s\", \"stacktrace\" }, \"Add stack trace to debug\" }\n                   });\n    opt.process(app);\n\n    if (opt.isSet(\"exec\")) {\n        QString execname = opt.value(\"exec\");\n        QProcess::startDetached(execname);\n        return 0;\n    }\n\n    if (opt.isSet(\"debug\")) {\n        QString debugString = \"[%{type}] %{appname} (%{file}:%{line}) - %{message}\";\n        if (opt.isSet(\"stacktrace\"))\n            debugString += \"\\n\\t%{backtrace separator=\\\"\\n\\t\\\"}\";\n        qSetMessagePattern(debugString);\n    } else\n        qSetMessagePattern(\"\");\n\n    MainWindow w;\n    w.show();\n\n    if (!opt.positionalArguments().isEmpty()) {\n        QString path = opt.positionalArguments().first();\n        QTimer::singleShot(0, [path, &w]() { w.openProject(path); });\n    }\n\n    return QApplication::exec();\n}\n"
  },
  {
    "path": "ide/mainwindow.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"mainwindow.h\"\n\n#include \"ui_mainwindow.h\"\n\n#include \"appconfig.h\"\n#include \"buildmanager.h\"\n#include \"consoleinterceptor.h\"\n#include \"filesystemmanager.h\"\n#include \"idocumenteditor.h\"\n#include \"externaltoolmanager.h\"\n#include \"processmanager.h\"\n#include \"projectmanager.h\"\n#include \"unsavedfilesdialog.h\"\n#include \"version.h\"\n#include \"newprojectdialog.h\"\n#include \"configwidget.h\"\n#include \"findinfilesdialog.h\"\n#include \"clangautocompletionprovider.h\"\n#include \"textmessagebrocker.h\"\n#include \"regexhtmltranslator.h\"\n#include \"templatemanager.h\"\n#include \"templateitemwidget.h\"\n#include \"templatefile.h\"\n#include \"processlinebufferizer.h\"\n#include \"newprojectfromremotedialog.h\"\n#include \"findmakefiledialog.h\"\n\n#include <QCloseEvent>\n#include <QFileDialog>\n#include <QStringListModel>\n#include <QScrollBar>\n#include <QMenu>\n#include <QMessageBox>\n#include <QFileSystemModel>\n#include <QShortcut>\n#include <QStandardItemModel>\n#include <QFileSystemWatcher>\n#include <QTextBrowser>\n#include <QDialogButtonBox>\n\n#include <QtDebug>\n\nstruct LineRange {\n    int first, second, idx;\n};\n\nQ_DECLARE_METATYPE(LineRange)\n\nusing LineRangeList = QList<LineRange>;\n\nclass MainWindow::Priv_t {\npublic:\n    ProjectManager *projectManager;\n    FileSystemManager *fileManager;\n    ProcessManager *pman;\n    ConsoleInterceptor *console;\n    BuildManager *buildManager;\n    LineRangeList lineRanges;\n    QString lastDir;\n    bool documentOnly = false;\n    QByteArray topSplitterState;\n    QByteArray docSplitterState;\n    QVector<QString> trackedBuildPath;\n};\n\n\nstatic constexpr auto MAINWINDOW_SIZE = QSize{900, 600};\n\nstatic QString kindToIcon(const QString& kind)\n{\n    static const QHash<QString, QString> map{\n        { \"array\", \"variable\" },\n        { \"boolean\", \"variable\" },\n        { \"chapter\", \"variable\" },\n        { \"enum\", \"enum\" },\n        { \"enumerator\", \"enum\" },\n        { \"externvar\", \"variable\" },\n        { \"function\", \"function\" },\n        { \"macro\", \"macro\" },\n        { \"object\", \"unknown\" },\n        { \"prototype\", \"function\" },\n        { \"section\", \"unknown\" },\n        { \"struct\", \"class\" },\n        { \"symbol\", \"class\" },\n        { \"typedef\", \"class\" },\n        { \"union\", \"class\" },\n        { \"variable\", \"variable\" },\n    };\n    return map.value(kind, \"unknown\");\n}\n\nMainWindow::MainWindow(QWidget *parent) :\n    QWidget(parent),\n    ui(std::make_unique<Ui::MainWindow>()),\n    priv(std::make_unique<Priv_t>())\n{\n    ui->setupUi(this);\n    ui->stackedWidget->setCurrentWidget(ui->welcomePage);\n    ui->bottomLeftStack->setCurrentWidget(ui->actionViewer);\n\n    const struct { QToolButton *b; const char *icon; } buttonmap[] = {\n        { ui->buttonDocumentCloseAll, \"document-close-all\" },\n        { ui->buttonReload, \"view-refresh\" },\n        { ui->buttonCloseProject, \"document-close\" },\n        { ui->buttonExport, \"document-export\" },\n        { ui->buttonFindAll, \"edit-find-replace\" },\n        { ui->buttonTools, \"run-build-configure\" },\n        { ui->buttonConfigurationMain, \"configure\" },\n        { ui->buttonDebugLaunch, \"debug-init\" },\n        { ui->buttonDebugRun, \"debug-run-v2\" },\n        { ui->buttonDebugStepOver, \"debug-step-over-v2\" },\n        { ui->buttonDebugStepInto, \"debug-step-into-v2\" },\n        { ui->buttonDebugRunToEOF, \"debug-step-out-v2\" },\n        { ui->buttonDocumentClose, \"document-close\" },\n        { ui->buttonDocumentSave, \"document-save\" },\n        { ui->buttonDocumentCloseAll, \"document-close-all\" },\n        { ui->buttonDocumentSaveAll, \"document-save-all\" },\n        { ui->buttonDocumentReload, \"view-refresh\" },\n        { ui->updateAvailable, \"view-refresh\" },\n        { ui->buttonQuit, \"application-exit\" },\n        { ui->buttonConfiguration, \"configure\" },\n        // { ui->buttonExternalTools, \"run-build-configure\" },\n        { ui->buttonOpenProject, \"document-open\" },\n        { ui->buttonNewProject, \"document-new\" },\n        { ui->buttonNewProjectFromRemote, \"document-new\" },\n    };\n    auto loadIcons = [this, buttonmap]() {\n        for (const auto& e: buttonmap)\n            e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.icon })});\n        auto l = QWidgetList{\n            ui->labelConfiguration,\n            ui->labelExit,\n            ui->labelNewProject,\n            ui->labelOpenProject\n        };\n        for (QWidget *e: l) {\n            auto p = e->palette();\n            if (AppConfig::instance().useDarkStyle())\n                p.setColor(QPalette::Text, p.color(QPalette::Text).lighter());\n            else\n                p.setColor(QPalette::Text, p.color(QPalette::Text).darker());\n            e->setPalette(p);\n        }\n\n    };\n    loadIcons();\n    connect(&AppConfig::instance(), &AppConfig::configChanged, loadIcons);\n\n    ui->buttonReload->setIcon(QIcon(AppConfig::resourceImage({\"actions\", \"view-refresh\"})));\n\n    ui->buttonDebugLaunch->setVisible(AppConfig::instance().useDevelopMode());\n    ui->updateAvailable->setVisible(false);\n\n    auto tman = new TemplateManager();\n    tman->setRepositoryUrl(AppConfig::instance().templatesUrl());\n    connect(tman, &TemplateManager::message, [](const QString& msg) {\n        qDebug() << \"tman msg:\" << msg;\n    });\n    connect(tman, &TemplateManager::errorMessage, [](const QString& msg) {\n        qDebug() << \"tman err:\" << msg;\n    });\n    connect(tman, &TemplateManager::haveMetadata, [this, tman]() {\n        bool canUpdate = false;\n        auto list = tman->itemWidgets();\n        for(auto *witem: list) {\n            const auto& item = witem->templateItem();\n            canUpdate = canUpdate ||\n                (item.state() == TemplateItem::State::Updatable) ||\n                (item.state() == TemplateItem::State::New);\n        }\n        ui->updateAvailable->setVisible(canUpdate);\n    });\n    connect(ui->updateAvailable, &QToolButton::clicked, [this, tman]() {\n        static constexpr auto SIZE_GROW = 0.9;\n        QDialog d(this);\n        d.resize(this->size().scaled(this->size() * SIZE_GROW, Qt::KeepAspectRatio));\n        auto l = new QVBoxLayout(&d);\n        auto bb = new QDialogButtonBox(QDialogButtonBox::Close, &d);\n        l->addWidget(tman);\n        l->addWidget(bb);\n        connect(bb, &QDialogButtonBox::accepted, &d, &QDialog::accept);\n        connect(bb, &QDialogButtonBox::rejected, &d, &QDialog::reject);\n        d.exec();\n        ui->updateAvailable->hide();\n        tman->setParent(nullptr);\n        tman->startUpdate();\n    });\n    tman->startUpdate();\n\n\n    ui->stackedWidget->setCurrentWidget(ui->welcomePage);\n    ui->documentContainer->setComboBox(ui->documentSelector);\n    auto version = tr(\"%1 build at %2\").arg(VERSION, BUILD_DATE);\n    ui->labelVersion->setText(ui->labelVersion->text().replace(\"{{version}}\", version));\n    resize(MAINWINDOW_SIZE);\n\n    priv->pman = new ProcessManager(this);\n\n    priv->console = new ConsoleInterceptor(ui->logView, this);\n\n    auto currentPathTracker = [this](QTextBrowser *b, QString& s) -> bool {\n        Q_UNUSED(b)\n        auto &stack = priv->trackedBuildPath;\n        static const QRegularExpression re(R\"(make\\[(\\d+)\\]\\: (Entering|Leaving) directory \\'([^\\']*)\\')\");\n        auto m = re.match(s);\n        if (m.hasMatch()) {\n            auto level = m.captured(1).toInt();\n            auto path = m.captured(3);\n            if (stack.size() < level) {\n                stack.resize(level);\n            }\n            stack[level - 1] = path;\n        }\n        return false;\n    };\n    auto errorStringFinder = [this](QTextBrowser *b, QString& s) -> bool {\n        Q_UNUSED(b)\n        static const QRegularExpression errRe(\n            R\"(^(?<file>.*?):(?<line>\\d+):(?<col>\\d+)?(?<ddot>:?)(?<msg>.*?)$)\",\n            QRegularExpression::MultilineOption\n        );\n        auto mit = errRe.globalMatch(s);\n        int count = 0;\n        int pos = 0;\n        while (mit.hasNext()) {\n            auto mm = mit.next();\n            int reStart = mm.capturedStart();\n            if (reStart > pos) {\n                ConsoleInterceptor::writeMessageTo(b, s.mid(pos, reStart - pos));\n            }\n            QString file = mm.captured(\"file\");\n            if (!priv->trackedBuildPath.isEmpty() && !QFileInfo(file).isAbsolute())\n                file.prepend(priv->trackedBuildPath.last() + QDir::separator());\n            auto line = mm.captured(\"line\");\n            auto col = mm.captured(\"col\");\n            auto ddot = mm.captured(\"ddot\");\n            auto msg = mm.captured(\"msg\");\n            auto url = ICodeModelProvider::FileReference(file, line.toInt(), col.toInt(), msg).encode();\n            auto err = QString(\"%2:%3:%4%5 \").arg(file, line, col, ddot);\n            ConsoleInterceptor::writeMessageTo(b, err, Qt::red);\n            QTextCharFormat linkFmt;\n            linkFmt.setAnchor(true);\n            linkFmt.setAnchorHref(url.toString());\n            linkFmt.setForeground(b->palette().link().color());\n            ConsoleInterceptor::writeMessageTo(b, msg, linkFmt);\n            pos = mm.capturedEnd();\n            count++;\n        }\n        if (count > 0 && pos < s.length()) {\n            ConsoleInterceptor::writeMessageTo(b, s.mid(pos));\n            return true;\n        }\n        return false;\n    };\n    priv->console->addStdErrFilter(currentPathTracker);\n    priv->console->addStdOutFilter(currentPathTracker);\n    priv->console->addStdErrFilter(errorStringFinder);\n    priv->console->addStdOutFilter(errorStringFinder);\n\n    connect(priv->console->clearButton(), &QToolButton::clicked,\n            ui->logView, &QTextBrowser::clear);\n\n    auto makeProc = priv->pman->processFor(BuildManager::PROCESS_NAME);\n    connect(makeProc, &QProcess::stateChanged,\n            [this](QProcess::ProcessState state) {\n                priv->console->killButton()->setEnabled(state == QProcess::Running);\n            });\n    auto makeLinerize = new ProcessLineBufferizer(ProcessLineBufferizer::MergedChannel, makeProc);\n    connect(makeLinerize, &ProcessLineBufferizer::haveLine, this, [this, makeProc](const QString& line) {\n            priv->console->appendToConsole(QProcess::StandardError, makeProc, line);\n    });\n    connect(priv->buildManager, &BuildManager::buildTerminated, makeLinerize, &ProcessLineBufferizer::flush);\n\n    priv->projectManager = new ProjectManager(ui->actionViewer, priv->pman, this);\n    priv->projectManager->setCodeModelProvider(new ClangAutocompletionProvider(priv->projectManager, this));\n    ui->documentContainer->setProjectManager(priv->projectManager);\n\n    priv->buildManager = new BuildManager(priv->projectManager, priv->pman, this);\n    connect(priv->console->killButton(), &QToolButton::clicked,\n            priv->buildManager, &BuildManager::cancelBuild);\n\n    priv->fileManager = new FileSystemManager(ui->fileViewer, this);\n\n    connect(ui->logView, &QTextBrowser::anchorClicked, [this](const QUrl& url) {\n        auto ref = ICodeModelProvider::FileReference::decode(url);\n        ui->documentContainer->openDocumentHere(ref.path, ref.line, ref.column);\n        ui->documentContainer->setFocus();\n    });\n\n    TextMessageBrocker::instance().subscribe(TextMessages::STDERR_LOG, [this](const QString& msg) {\n        priv->console->writeMessage(msg);\n    });\n\n    TextMessageBrocker::instance().subscribe(TextMessages::STDOUT_LOG, [this](const QString& msg) {\n        priv->console->writeMessage(msg);\n    });\n\n    connect(priv->buildManager, &BuildManager::buildStarted, [this]() {\n        priv->trackedBuildPath.clear();\n        ui->actionViewer->setEnabled(false);\n    });\n    connect(priv->buildManager, &BuildManager::buildTerminated, [this]() {\n        ui->actionViewer->setEnabled(true);\n    });\n    connect(priv->projectManager, &ProjectManager::targetTriggered, [this](const QString& target) {\n        ui->logView->clear();\n        auto unsaved = ui->documentContainer->unsavedDocuments();\n        if (!unsaved.isEmpty()) {\n            UnsavedFilesDialog d(unsaved, this);\n            if (d.exec() == QDialog::Rejected)\n                return;\n            ui->documentContainer->saveDocuments(d.checkedForSave());\n        }\n        priv->buildManager->startBuild(target);\n    });\n    connect(priv->fileManager, &FileSystemManager::requestFileOpen, ui->documentContainer, &DocumentManager::openDocument);\n\n    auto showMessageCallback = [this](const QString& msg) { priv->console->writeMessage(msg, Qt::darkGreen); };\n    auto clearMessageCallback = [this]() { ui->logView->clear(); };\n    connect(priv->projectManager, &ProjectManager::exportFinish, showMessageCallback);\n\n    ui->recentProjectsView->setModel(new QStandardItemModel(ui->recentProjectsView));\n    auto makeRecentProjects = [this]() {\n        auto m = dynamic_cast<QStandardItemModel*>(ui->recentProjectsView->model());\n        m->clear();\n        for(const auto& e: AppConfig::instance().recentProjects()) {\n            auto item = new QStandardItem(\n                QIcon(FileSystemManager::mimeIconPath(\"text-x-makefile\")), e.dir().dirName());\n            item->setData(e.absoluteFilePath());\n            item->setToolTip(e.absoluteFilePath());\n            m->appendRow(item);\n        }\n    };\n    makeRecentProjects();\n    connect(new QFileSystemWatcher({AppConfig::instance().projectsPath()}, this),\n            &QFileSystemWatcher::directoryChanged, makeRecentProjects);\n    connect(ui->recentProjectsView, &QListView::activated, [this](const QModelIndex& m) {\n        openProject(dynamic_cast<const QStandardItemModel*>(m.model())->data(m, Qt::UserRole + 1).toString());\n    });\n\n    auto openProjectCallback = [this]() {\n        auto lastDir = priv->lastDir;\n        if (lastDir.isEmpty())\n            lastDir = AppConfig::instance().projectsPath();\n        auto path = QFileDialog::getOpenFileName(this, tr(\"Open Project\"), lastDir, tr(\"Makefile (Makefile);;All files (*)\"));\n        if (!path.isEmpty())\n            openProject(path);\n    };\n    auto newProjectCallback = [this]() {\n        NewProjectDialog d(this);\n        if (d.exec() == QDialog::Accepted) {\n            if (d.isTemplate()) {\n                priv->projectManager->createProject(d.absoluteProjectPath(), d.templateFile());\n            } else {\n                priv->projectManager->createProjectFromTGZ(d.absoluteProjectPath(),\n                                                           d.selectedTemplateFile().absoluteFilePath());\n            }\n        }\n    };\n    auto newProjectFromRemoteCallback = [this, makeRecentProjects]() {\n        NewProjectFromRemoteDialog d(this);\n        if (d.exec()) {\n            FindMakefileDialog fd(d.projectPath(), this);\n            if (fd.exec()) {\n                auto projectFile = fd.fileName();\n                openProject(projectFile);\n            }\n        }\n        makeRecentProjects();\n    };\n    auto openConfigurationCallback = [this]() {\n        ConfigWidget d(this);\n        if (d.exec())\n            d.save();\n    };\n    auto exportCallback = [this, clearMessageCallback]() {\n        auto path = QFileDialog::getSaveFileName(this, tr(\"New File\"), AppConfig::instance().templatesPath(),\n                                                 TemplateFile::TEMPLATE_FILEDIALOG_FILTER);\n        if (!path.isEmpty()) {\n            if (QFileInfo(path).suffix().isEmpty())\n                path.append(\".template\");\n            clearMessageCallback();\n            priv->projectManager->exportCurrentProjectTo(path);\n        }\n    };\n    connect(ui->buttonOpenProject, &QToolButton::clicked, openProjectCallback);\n    connect(ui->buttonExport, &QToolButton::clicked, exportCallback);\n    connect(ui->buttonNewProject, &QToolButton::clicked, newProjectCallback);\n    connect(ui->buttonNewProjectFromRemote, &QToolButton::clicked, newProjectFromRemoteCallback);\n    connect(ui->buttonConfiguration, &QToolButton::clicked, openConfigurationCallback);\n    connect(ui->buttonConfigurationMain, &QToolButton::clicked, openConfigurationCallback);\n    connect(ui->buttonCloseProject, &QToolButton::clicked, priv->projectManager, &ProjectManager::closeProject);\n    connect(new QShortcut(QKeySequence(\"CTRL+N\"), this), &QShortcut::activated, newProjectCallback);\n    connect(new QShortcut(QKeySequence(\"CTRL+O\"), this), &QShortcut::activated, openProjectCallback);\n    connect(new QShortcut(QKeySequence(\"CTRL+SHIFT+P\"), this), &QShortcut::activated, openConfigurationCallback);\n    connect(new QShortcut(QKeySequence(\"CTRL+SHIFT+Q\"), this), &QShortcut::activated, priv->projectManager, &ProjectManager::closeProject);\n\n    priv->documentOnly = false;\n    connect(new QShortcut(QKeySequence(\"CTRL+SHIFT+C\"), this), &QShortcut::activated, [this]() {\n        auto state = priv->documentOnly;\n        if (state) {\n            ui->horizontalSplitterTop->restoreState(priv->topSplitterState);\n            ui->splitterDocumentViewer->restoreState(priv->docSplitterState);\n        } else {\n            priv->topSplitterState = ui->horizontalSplitterTop->saveState();\n            priv->docSplitterState = ui->splitterDocumentViewer->saveState();\n            constexpr auto DEFAULT_SPLITTER_SIZE = 100;\n            ui->horizontalSplitterTop->setSizes({ 0, DEFAULT_SPLITTER_SIZE });\n            ui->splitterDocumentViewer->setSizes({ DEFAULT_SPLITTER_SIZE, 0 });\n            ui->documentContainer->setFocus();\n        }\n        priv->documentOnly = !state;\n    });\n\n    connect(ui->buttonReload, &QToolButton::clicked, priv->projectManager, &ProjectManager::reloadProject);\n    connect(priv->projectManager, &ProjectManager::projectOpened, [this](const QString& makefile) {\n        for(auto& btn: ui->projectButtons->buttons()) btn->setEnabled(true);\n        QFileInfo mkInfo(makefile);\n        auto filepath = mkInfo.absoluteFilePath();\n        auto dirpath = mkInfo.absolutePath();\n        ui->stackedWidget->setCurrentWidget(ui->mainPage);\n        priv->fileManager->openPath(dirpath);\n        AppConfig::instance().appendToRecentProjects(filepath);\n        AppConfig::instance().save();\n        qputenv(\"CURRENT_PROJECT_FILE\", filepath.toLocal8Bit());\n        qputenv(\"CURRENT_PROJECT_DIR\", dirpath.toLocal8Bit());\n    });\n    connect(priv->projectManager, &ProjectManager::projectClosed, [this, makeRecentProjects]() {\n        qputenv(\"CURRENT_PROJECT_FILE\", \"\");\n        qputenv(\"CURRENT_PROJECT_DIR\", \"\");\n        bool ok = ui->documentContainer->aboutToCloseAll();\n        qDebug() << \"can close\" << ok;\n        if (ok) {\n            for(auto& btn: ui->projectButtons->buttons()) btn->setEnabled(false);\n            makeRecentProjects();\n            ui->stackedWidget->setCurrentWidget(ui->welcomePage);\n            priv->fileManager->closePath();\n        }\n    });\n\n    auto enableEdition = [this]() {\n        auto haveDocuments = ui->documentContainer->documentCount() > 0;\n        auto current = ui->documentContainer->documentEditorCurrent();\n        auto isModified = current? current->isModified() : false;\n        ui->documentSelector->setEnabled(haveDocuments);\n        ui->buttonDocumentClose->setEnabled(haveDocuments);\n        ui->buttonDocumentCloseAll->setEnabled(haveDocuments);\n        ui->buttonDocumentReload->setEnabled(haveDocuments);\n        ui->buttonDocumentSave->setEnabled(isModified);\n        ui->buttonDocumentSaveAll->setEnabled(ui->documentContainer->unsavedDocuments().count() > 0);\n        ui->symbolSelector->setEnabled(false);\n        ui->symbolSelector->clear();\n        if (current) {\n            auto m = qobject_cast<QFileSystemModel*>(ui->fileViewer->model());\n            if (m) {\n                auto i = m->index(current->path());\n                if (i.isValid()) {\n                    ui->fileViewer->setCurrentIndex(i);\n                }\n            }\n\n        }\n    };\n    connect(ui->documentContainer, &DocumentManager::documentModified,\n            [this](const QString& path, IDocumentEditor *iface, bool modify){\n        Q_UNUSED(path)\n        Q_UNUSED(iface)\n        ui->buttonDocumentSave->setEnabled(modify);\n        ui->buttonDocumentSaveAll->setEnabled(ui->documentContainer->unsavedDocuments().count() > 0);\n    });\n    connect(ui->symbolSelector, qOverload<int>(&QComboBox::activated), [this](int idx) {\n        auto var = ui->symbolSelector->itemData(idx);\n        if (var.isNull())\n            return;\n        auto meta = var.value<ICodeModelProvider::Symbol>();\n        auto ed = ui->documentContainer->documentEditorCurrent();\n        if (ed) {\n            ed->setCursor({ meta.ref.column, meta.ref.line });\n            ed->widget()->setFocus();\n        }\n    });\n    connect(ui->documentContainer, &DocumentManager::documentPositionModified,\n            [this](const QString& path, int l, int c) {\n        Q_UNUSED(c)\n        Q_UNUSED(path)\n        int idx = 0;\n        for (const auto& e: priv->lineRanges) {\n            if (l >= e.first && l < e.second) {\n                idx = e.idx;\n                break;\n            }\n        }\n        auto b = ui->symbolSelector->blockSignals(true);\n        ui->symbolSelector->setCurrentIndex(idx);\n        ui->symbolSelector->blockSignals(b);\n    });\n    auto requestSymbolsForFile =  [this](const QString& path) {\n        priv->projectManager->codeModel()->requestSymbolForFile(\n                    path, [this](const ICodeModelProvider::SymbolSetMap& items) {\n            ui->symbolSelector->clear();\n            priv->lineRanges.clear();\n            if (items.isEmpty())\n                return;\n            auto b = ui->symbolSelector->blockSignals(true);\n            auto& lineNumbers = priv->lineRanges;\n            ui->symbolSelector->addItem(tr(\"<Select Symbol>\"));\n            for (auto it = items.cbegin(); it != items.cend(); ++it) {\n                ICodeModelProvider::SymbolSet list = it.value();\n                for (const auto& e: list.toList()) {\n                    lineNumbers += { e.ref.line, e.ref.line, ui->symbolSelector->count() };\n                    ui->symbolSelector->addItem(QIcon{AppConfig::instance().resourceImage(\n                                                      { \"categories\", kindToIcon(e.type) }\n                                                  )},\n                                                tr(\"[%1] %2\").arg(e.type, e.name),\n                                                QVariant::fromValue(e));\n                }\n            }\n            if (!lineNumbers.isEmpty()) {\n                std::sort(lineNumbers.begin(), lineNumbers.end(),\n                          [](const LineRange& a, const LineRange& b) {\n                    return a.first < b.first;\n                });\n                auto prev = lineNumbers.begin();\n                for (auto it = ++lineNumbers.begin(); it != lineNumbers.end(); ++it) {\n                    prev->second = it->first;\n                    prev = it;\n                }\n                // FIXME: Ideally, second of the last is line number of the doc,\n                // but the max int value work same for this purponse\n                prev->second = std::numeric_limits<decltype(lineNumbers.end()->second)>::max();\n            }\n            ui->symbolSelector->setEnabled(ui->symbolSelector->count() > 0);\n            if (ui->symbolSelector->count() > 0)\n                ui->symbolSelector->setCurrentIndex(0);\n            ui->symbolSelector->blockSignals(b);\n        });\n    };\n    connect(ui->documentContainer, &DocumentManager::documentFocushed, enableEdition);\n    connect(ui->documentContainer, &DocumentManager::documentClosed, enableEdition);\n    connect(ui->documentContainer, &DocumentManager::documentFocushed, requestSymbolsForFile);\n    connect(priv->projectManager, &ProjectManager::indexFinished, [requestSymbolsForFile, this]() {\n        requestSymbolsForFile(ui->documentContainer->documentCurrent());\n    });\n\n    connect(priv->projectManager, &ProjectManager::requestFileOpen, ui->documentContainer, &DocumentManager::openDocument);\n    connect(ui->buttonDocumentClose, &QToolButton::clicked, ui->documentContainer, &DocumentManager::closeCurrent);\n    connect(ui->buttonDocumentCloseAll, &QToolButton::clicked, ui->documentContainer, &DocumentManager::aboutToCloseAll);\n    connect(ui->buttonDocumentSave, &QToolButton::clicked, ui->documentContainer, &DocumentManager::saveCurrent);\n    connect(ui->buttonDocumentSaveAll, &QToolButton::clicked, ui->documentContainer, &DocumentManager::saveAll);\n    connect(ui->buttonDocumentReload, &QToolButton::clicked, ui->documentContainer, &DocumentManager::reloadDocumentCurrent);\n\n    auto setExternalTools = [this]() {\n        auto m = ExternalToolManager::makeMenu(this, priv->pman, priv->projectManager);\n        ui->buttonTools->setMenu(m);\n        // ui->buttonExternalTools->setMenu(m);\n    };\n    setExternalTools();\n\n    connect(&AppConfig::instance(), &AppConfig::configChanged, [this, setExternalTools](AppConfig *cfg) {\n        if (ui->buttonTools->menu())\n            ui->buttonTools->menu()->deleteLater();\n        setExternalTools();\n        ui->buttonDebugLaunch->setVisible(cfg->useDevelopMode());\n    });\n\n    auto findInFilesDialog = new FindInFilesDialog(this);\n    auto findInFilesCallback = [this, findInFilesDialog]() {\n        auto path = priv->projectManager->projectPath();\n        if (!path.isEmpty()) {\n            connect(findInFilesDialog, &FindInFilesDialog::queryToOpen,\n                    [this](const QString& path, int line, int column)\n            {\n                activateWindow();\n                ui->documentContainer->setFocus();\n                ui->documentContainer->openDocumentHere(path, line, column);\n            });\n            if (findInFilesDialog->findPath().isEmpty())\n                findInFilesDialog->setFindPath(path);\n            findInFilesDialog->show();\n        }\n    };\n\n    connect(ui->buttonFindAll, &QToolButton::clicked, findInFilesCallback);\n    connect(new QShortcut(QKeySequence(\"CTRL+SHIFT+F\"), this), &QShortcut::activated, findInFilesCallback);\n\n    connect(ui->buttonQuit, &QToolButton::clicked, this, &MainWindow::close);\n    connect(new QShortcut(QKeySequence(\"ALT+F4\"), this), &QShortcut::activated, this, &MainWindow::close);\n\n    connect(ui->buttonDebugLaunch, &QToolButton::toggled, [this](bool en) {\n        if (en) {\n            ui->bottomLeftStack->setCurrentWidget(ui->pageDebug);\n        } else {\n            ui->bottomLeftStack->setCurrentWidget(ui->actionViewer);\n        }\n    });\n}\n\nMainWindow::~MainWindow()\n{\n    TextMessageBrocker::instance().disconnect();\n}\n\nvoid MainWindow::openProject(const QString &path)\n{\n    priv->projectManager->openProject(path);\n}\n\nvoid MainWindow::closeEvent(QCloseEvent *event)\n{\n    auto unsaved = ui->documentContainer->unsavedDocuments();\n    if (unsaved.isEmpty()) {\n        event->accept();\n    } else {\n        UnsavedFilesDialog d(unsaved, this);\n        event->setAccepted(d.exec() == QDialog::Accepted);\n        if (event->isAccepted())\n            ui->documentContainer->saveDocuments(d.checkedForSave());\n    }\n}\n"
  },
  {
    "path": "ide/mainwindow.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef MAINWINDOW_H\n#define MAINWINDOW_H\n\n#include <QWidget>\n\n#include <memory>\n\nnamespace Ui {\nclass MainWindow;\n}\n\nclass MainWindow : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit MainWindow(QWidget *parent = nullptr);\n    virtual ~MainWindow() override;\n\npublic slots:\n    void openProject(const QString& path);\n\nprotected:\n    void closeEvent(QCloseEvent *event) override;\n\nprivate:\n    class Priv_t;\n\n    std::unique_ptr<Ui::MainWindow> ui;\n    std::unique_ptr<Priv_t> priv;\n};\n\n#endif // MAINWINDOW_H\n"
  },
  {
    "path": "ide/mainwindow.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MainWindow</class>\n <widget class=\"QWidget\" name=\"MainWindow\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>642</width>\n    <height>557</height>\n   </rect>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n   <property name=\"spacing\">\n    <number>0</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"QStackedWidget\" name=\"stackedWidget\">\n     <property name=\"currentIndex\">\n      <number>1</number>\n     </property>\n     <widget class=\"QWidget\" name=\"mainPage\">\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n       <property name=\"spacing\">\n        <number>0</number>\n       </property>\n       <property name=\"leftMargin\">\n        <number>1</number>\n       </property>\n       <property name=\"topMargin\">\n        <number>1</number>\n       </property>\n       <property name=\"rightMargin\">\n        <number>1</number>\n       </property>\n       <property name=\"bottomMargin\">\n        <number>1</number>\n       </property>\n       <item>\n        <widget class=\"QSplitter\" name=\"horizontalSplitterTop\">\n         <property name=\"orientation\">\n          <enum>Qt::Horizontal</enum>\n         </property>\n         <widget class=\"QSplitter\" name=\"verticalSplitterLeft\">\n          <property name=\"orientation\">\n           <enum>Qt::Vertical</enum>\n          </property>\n          <widget class=\"QWidget\" name=\"widgetProjectView\" native=\"true\">\n           <layout class=\"QGridLayout\" name=\"gridLayout_2\">\n            <property name=\"leftMargin\">\n             <number>0</number>\n            </property>\n            <property name=\"topMargin\">\n             <number>0</number>\n            </property>\n            <property name=\"rightMargin\">\n             <number>0</number>\n            </property>\n            <property name=\"bottomMargin\">\n             <number>0</number>\n            </property>\n            <property name=\"spacing\">\n             <number>0</number>\n            </property>\n            <item row=\"0\" column=\"5\">\n             <widget class=\"QToolButton\" name=\"buttonReload\">\n              <property name=\"enabled\">\n               <bool>false</bool>\n              </property>\n              <property name=\"toolTip\">\n               <string>Reload Project</string>\n              </property>\n              <property name=\"icon\">\n               <iconset theme=\"view-refresh\">\n                <normaloff>.</normaloff>.</iconset>\n              </property>\n              <property name=\"iconSize\">\n               <size>\n                <width>22</width>\n                <height>22</height>\n               </size>\n              </property>\n              <property name=\"autoRaise\">\n               <bool>true</bool>\n              </property>\n              <attribute name=\"buttonGroup\">\n               <string notr=\"true\">projectButtons</string>\n              </attribute>\n             </widget>\n            </item>\n            <item row=\"0\" column=\"0\">\n             <widget class=\"QToolButton\" name=\"buttonCloseProject\">\n              <property name=\"toolTip\">\n               <string>Close Project</string>\n              </property>\n              <property name=\"icon\">\n               <iconset theme=\"document-close\">\n                <normaloff>.</normaloff>.</iconset>\n              </property>\n              <property name=\"iconSize\">\n               <size>\n                <width>22</width>\n                <height>22</height>\n               </size>\n              </property>\n              <property name=\"autoRaise\">\n               <bool>true</bool>\n              </property>\n             </widget>\n            </item>\n            <item row=\"1\" column=\"0\" colspan=\"9\">\n             <widget class=\"QTreeView\" name=\"fileViewer\">\n              <property name=\"sizePolicy\">\n               <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Expanding\">\n                <horstretch>1</horstretch>\n                <verstretch>1</verstretch>\n               </sizepolicy>\n              </property>\n              <property name=\"editTriggers\">\n               <set>QAbstractItemView::EditKeyPressed</set>\n              </property>\n              <property name=\"dragEnabled\">\n               <bool>true</bool>\n              </property>\n              <property name=\"dragDropMode\">\n               <enum>QAbstractItemView::DragDrop</enum>\n              </property>\n              <property name=\"defaultDropAction\">\n               <enum>Qt::MoveAction</enum>\n              </property>\n              <property name=\"alternatingRowColors\">\n               <bool>true</bool>\n              </property>\n              <property name=\"selectionMode\">\n               <enum>QAbstractItemView::ExtendedSelection</enum>\n              </property>\n              <property name=\"textElideMode\">\n               <enum>Qt::ElideMiddle</enum>\n              </property>\n              <property name=\"uniformRowHeights\">\n               <bool>true</bool>\n              </property>\n              <property name=\"animated\">\n               <bool>true</bool>\n              </property>\n              <property name=\"headerHidden\">\n               <bool>true</bool>\n              </property>\n             </widget>\n            </item>\n            <item row=\"0\" column=\"7\">\n             <widget class=\"QToolButton\" name=\"buttonExport\">\n              <property name=\"enabled\">\n               <bool>false</bool>\n              </property>\n              <property name=\"toolTip\">\n               <string>Export project</string>\n              </property>\n              <property name=\"icon\">\n               <iconset theme=\"document-export\">\n                <normaloff>.</normaloff>.</iconset>\n              </property>\n              <property name=\"iconSize\">\n               <size>\n                <width>22</width>\n                <height>22</height>\n               </size>\n              </property>\n              <property name=\"autoRaise\">\n               <bool>true</bool>\n              </property>\n              <attribute name=\"buttonGroup\">\n               <string notr=\"true\">projectButtons</string>\n              </attribute>\n             </widget>\n            </item>\n            <item row=\"0\" column=\"6\">\n             <widget class=\"QToolButton\" name=\"buttonFindAll\">\n              <property name=\"enabled\">\n               <bool>false</bool>\n              </property>\n              <property name=\"toolTip\">\n               <string>Find in files</string>\n              </property>\n              <property name=\"icon\">\n               <iconset theme=\"edit-find-replace\">\n                <normaloff>.</normaloff>.</iconset>\n              </property>\n              <property name=\"iconSize\">\n               <size>\n                <width>22</width>\n                <height>22</height>\n               </size>\n              </property>\n              <property name=\"autoRaise\">\n               <bool>true</bool>\n              </property>\n              <attribute name=\"buttonGroup\">\n               <string notr=\"true\">projectButtons</string>\n              </attribute>\n             </widget>\n            </item>\n            <item row=\"0\" column=\"8\">\n             <widget class=\"QToolButton\" name=\"buttonTools\">\n              <property name=\"toolTip\">\n               <string>Tool menu</string>\n              </property>\n              <property name=\"icon\">\n               <iconset theme=\"run-build-configure\">\n                <normaloff>.</normaloff>.</iconset>\n              </property>\n              <property name=\"iconSize\">\n               <size>\n                <width>22</width>\n                <height>22</height>\n               </size>\n              </property>\n              <property name=\"popupMode\">\n               <enum>QToolButton::InstantPopup</enum>\n              </property>\n              <property name=\"autoRaise\">\n               <bool>true</bool>\n              </property>\n             </widget>\n            </item>\n            <item row=\"0\" column=\"2\" colspan=\"2\">\n             <spacer name=\"horizontalSpacer\">\n              <property name=\"orientation\">\n               <enum>Qt::Horizontal</enum>\n              </property>\n              <property name=\"sizeType\">\n               <enum>QSizePolicy::Preferred</enum>\n              </property>\n              <property name=\"sizeHint\" stdset=\"0\">\n               <size>\n                <width>22</width>\n                <height>20</height>\n               </size>\n              </property>\n             </spacer>\n            </item>\n            <item row=\"0\" column=\"1\">\n             <widget class=\"QToolButton\" name=\"buttonConfigurationMain\">\n              <property name=\"toolTip\">\n               <string>Configuration</string>\n              </property>\n              <property name=\"icon\">\n               <iconset theme=\"configure\">\n                <normaloff>.</normaloff>.</iconset>\n              </property>\n              <property name=\"iconSize\">\n               <size>\n                <width>22</width>\n                <height>22</height>\n               </size>\n              </property>\n              <property name=\"autoRaise\">\n               <bool>true</bool>\n              </property>\n             </widget>\n            </item>\n            <item row=\"0\" column=\"4\">\n             <widget class=\"QToolButton\" name=\"buttonDebugLaunch\">\n              <property name=\"enabled\">\n               <bool>false</bool>\n              </property>\n              <property name=\"toolTip\">\n               <string>Launch Debug</string>\n              </property>\n              <property name=\"icon\">\n               <iconset theme=\"debug-init\">\n                <normaloff>.</normaloff>.</iconset>\n              </property>\n              <property name=\"iconSize\">\n               <size>\n                <width>22</width>\n                <height>22</height>\n               </size>\n              </property>\n              <property name=\"checkable\">\n               <bool>true</bool>\n              </property>\n              <property name=\"autoRaise\">\n               <bool>true</bool>\n              </property>\n              <attribute name=\"buttonGroup\">\n               <string notr=\"true\">projectButtons</string>\n              </attribute>\n             </widget>\n            </item>\n           </layout>\n          </widget>\n          <widget class=\"QStackedWidget\" name=\"bottomLeftStack\">\n           <property name=\"currentIndex\">\n            <number>0</number>\n           </property>\n           <widget class=\"QWidget\" name=\"pageDebug\">\n            <layout class=\"QGridLayout\" name=\"gridLayout_6\">\n             <property name=\"leftMargin\">\n              <number>0</number>\n             </property>\n             <property name=\"topMargin\">\n              <number>0</number>\n             </property>\n             <property name=\"rightMargin\">\n              <number>0</number>\n             </property>\n             <property name=\"bottomMargin\">\n              <number>0</number>\n             </property>\n             <property name=\"spacing\">\n              <number>0</number>\n             </property>\n             <item row=\"0\" column=\"0\">\n              <widget class=\"QToolButton\" name=\"buttonDebugRun\">\n               <property name=\"toolTip\">\n                <string>Configuration</string>\n               </property>\n               <property name=\"icon\">\n                <iconset theme=\"debug-run-v2\">\n                 <normaloff>.</normaloff>.</iconset>\n               </property>\n               <property name=\"iconSize\">\n                <size>\n                 <width>22</width>\n                 <height>22</height>\n                </size>\n               </property>\n               <property name=\"autoRaise\">\n                <bool>true</bool>\n               </property>\n              </widget>\n             </item>\n             <item row=\"0\" column=\"1\">\n              <spacer name=\"horizontalSpacer_10\">\n               <property name=\"orientation\">\n                <enum>Qt::Horizontal</enum>\n               </property>\n               <property name=\"sizeHint\" stdset=\"0\">\n                <size>\n                 <width>133</width>\n                 <height>20</height>\n                </size>\n               </property>\n              </spacer>\n             </item>\n             <item row=\"0\" column=\"2\">\n              <widget class=\"QToolButton\" name=\"buttonDebugStepOver\">\n               <property name=\"toolTip\">\n                <string>Configuration</string>\n               </property>\n               <property name=\"icon\">\n                <iconset theme=\"debug-step-over-v2\">\n                 <normaloff>.</normaloff>.</iconset>\n               </property>\n               <property name=\"iconSize\">\n                <size>\n                 <width>22</width>\n                 <height>22</height>\n                </size>\n               </property>\n               <property name=\"autoRaise\">\n                <bool>true</bool>\n               </property>\n              </widget>\n             </item>\n             <item row=\"0\" column=\"3\">\n              <widget class=\"QToolButton\" name=\"buttonDebugStepInto\">\n               <property name=\"toolTip\">\n                <string>Configuration</string>\n               </property>\n               <property name=\"icon\">\n                <iconset theme=\"debug-step-into-v2\">\n                 <normaloff>.</normaloff>.</iconset>\n               </property>\n               <property name=\"iconSize\">\n                <size>\n                 <width>22</width>\n                 <height>22</height>\n                </size>\n               </property>\n               <property name=\"autoRaise\">\n                <bool>true</bool>\n               </property>\n              </widget>\n             </item>\n             <item row=\"0\" column=\"4\">\n              <widget class=\"QToolButton\" name=\"buttonDebugRunToEOF\">\n               <property name=\"toolTip\">\n                <string>Configuration</string>\n               </property>\n               <property name=\"icon\">\n                <iconset theme=\"debug-step-out-v2\">\n                 <normaloff>.</normaloff>.</iconset>\n               </property>\n               <property name=\"iconSize\">\n                <size>\n                 <width>22</width>\n                 <height>22</height>\n                </size>\n               </property>\n               <property name=\"autoRaise\">\n                <bool>true</bool>\n               </property>\n              </widget>\n             </item>\n             <item row=\"1\" column=\"0\" colspan=\"5\">\n              <widget class=\"QTreeView\" name=\"treeView\"/>\n             </item>\n            </layout>\n           </widget>\n           <widget class=\"QListView\" name=\"actionViewer\">\n            <property name=\"sizePolicy\">\n             <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Expanding\">\n              <horstretch>0</horstretch>\n              <verstretch>0</verstretch>\n             </sizepolicy>\n            </property>\n            <property name=\"editTriggers\">\n             <set>QAbstractItemView::NoEditTriggers</set>\n            </property>\n           </widget>\n          </widget>\n         </widget>\n         <widget class=\"QWidget\" name=\"widgetDocumentViewer\" native=\"true\">\n          <property name=\"sizePolicy\">\n           <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Preferred\">\n            <horstretch>1</horstretch>\n            <verstretch>0</verstretch>\n           </sizepolicy>\n          </property>\n          <layout class=\"QGridLayout\" name=\"gridLayout\">\n           <property name=\"leftMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"topMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"rightMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"bottomMargin\">\n            <number>0</number>\n           </property>\n           <property name=\"spacing\">\n            <number>0</number>\n           </property>\n           <item row=\"0\" column=\"4\">\n            <widget class=\"QToolButton\" name=\"buttonDocumentSaveAll\">\n             <property name=\"enabled\">\n              <bool>false</bool>\n             </property>\n             <property name=\"toolTip\">\n              <string>Save all</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"document-save-all\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n             <attribute name=\"buttonGroup\">\n              <string notr=\"true\">editionButtons</string>\n             </attribute>\n            </widget>\n           </item>\n           <item row=\"0\" column=\"6\">\n            <widget class=\"QToolButton\" name=\"buttonDocumentCloseAll\">\n             <property name=\"enabled\">\n              <bool>false</bool>\n             </property>\n             <property name=\"toolTip\">\n              <string>Close all</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"document-close-all\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n             <attribute name=\"buttonGroup\">\n              <string notr=\"true\">editionButtons</string>\n             </attribute>\n            </widget>\n           </item>\n           <item row=\"1\" column=\"0\" colspan=\"7\">\n            <widget class=\"QSplitter\" name=\"splitterDocumentViewer\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Expanding\">\n               <horstretch>1</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"orientation\">\n              <enum>Qt::Vertical</enum>\n             </property>\n             <widget class=\"DocumentManager\" name=\"documentContainer\" native=\"true\">\n              <property name=\"sizePolicy\">\n               <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Expanding\">\n                <horstretch>1</horstretch>\n                <verstretch>1</verstretch>\n               </sizepolicy>\n              </property>\n              <property name=\"sizeIncrement\">\n               <size>\n                <width>0</width>\n                <height>600</height>\n               </size>\n              </property>\n             </widget>\n             <widget class=\"QTextBrowser\" name=\"logView\">\n              <property name=\"sizePolicy\">\n               <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Maximum\">\n                <horstretch>1</horstretch>\n                <verstretch>0</verstretch>\n               </sizepolicy>\n              </property>\n              <property name=\"verticalScrollBarPolicy\">\n               <enum>Qt::ScrollBarAlwaysOn</enum>\n              </property>\n              <property name=\"lineWrapMode\">\n               <enum>QTextEdit::NoWrap</enum>\n              </property>\n              <property name=\"openLinks\">\n               <bool>false</bool>\n              </property>\n             </widget>\n            </widget>\n           </item>\n           <item row=\"0\" column=\"5\">\n            <widget class=\"QToolButton\" name=\"buttonDocumentClose\">\n             <property name=\"enabled\">\n              <bool>false</bool>\n             </property>\n             <property name=\"toolTip\">\n              <string>Close current</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"document-close\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n             <attribute name=\"buttonGroup\">\n              <string notr=\"true\">editionButtons</string>\n             </attribute>\n            </widget>\n           </item>\n           <item row=\"0\" column=\"0\">\n            <widget class=\"QComboBox\" name=\"documentSelector\">\n             <property name=\"enabled\">\n              <bool>false</bool>\n             </property>\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n               <horstretch>1</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"minimumSize\">\n              <size>\n               <width>0</width>\n               <height>29</height>\n              </size>\n             </property>\n            </widget>\n           </item>\n           <item row=\"0\" column=\"2\">\n            <widget class=\"QToolButton\" name=\"buttonDocumentReload\">\n             <property name=\"enabled\">\n              <bool>false</bool>\n             </property>\n             <property name=\"toolTip\">\n              <string>Reload Document</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"view-refresh\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n            </widget>\n           </item>\n           <item row=\"0\" column=\"3\">\n            <widget class=\"QToolButton\" name=\"buttonDocumentSave\">\n             <property name=\"enabled\">\n              <bool>false</bool>\n             </property>\n             <property name=\"toolTip\">\n              <string>Save current</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"document-save\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n             <attribute name=\"buttonGroup\">\n              <string notr=\"true\">editionButtons</string>\n             </attribute>\n            </widget>\n           </item>\n           <item row=\"0\" column=\"1\">\n            <widget class=\"QComboBox\" name=\"symbolSelector\">\n             <property name=\"enabled\">\n              <bool>false</bool>\n             </property>\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n               <horstretch>1</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"minimumSize\">\n              <size>\n               <width>0</width>\n               <height>29</height>\n              </size>\n             </property>\n            </widget>\n           </item>\n          </layout>\n          <zorder>buttonDocumentCloseAll</zorder>\n          <zorder>buttonDocumentClose</zorder>\n          <zorder>buttonDocumentSaveAll</zorder>\n          <zorder>buttonDocumentSave</zorder>\n          <zorder>documentSelector</zorder>\n          <zorder>splitterDocumentViewer</zorder>\n          <zorder>buttonDocumentReload</zorder>\n          <zorder>symbolSelector</zorder>\n         </widget>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"welcomePage\">\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\">\n       <property name=\"leftMargin\">\n        <number>22</number>\n       </property>\n       <property name=\"topMargin\">\n        <number>22</number>\n       </property>\n       <property name=\"rightMargin\">\n        <number>22</number>\n       </property>\n       <property name=\"bottomMargin\">\n        <number>22</number>\n       </property>\n       <item>\n        <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n         <item>\n          <spacer name=\"horizontalSpacer_2\">\n           <property name=\"orientation\">\n            <enum>Qt::Horizontal</enum>\n           </property>\n           <property name=\"sizeHint\" stdset=\"0\">\n            <size>\n             <width>60</width>\n             <height>20</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n         <item>\n          <widget class=\"QLabel\" name=\"labelLogo\">\n           <property name=\"maximumSize\">\n            <size>\n             <width>128</width>\n             <height>128</height>\n            </size>\n           </property>\n           <property name=\"pixmap\">\n            <pixmap resource=\"resources/resources.qrc\">:/images/light/embedded-ide.png</pixmap>\n           </property>\n           <property name=\"scaledContents\">\n            <bool>true</bool>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <widget class=\"QLabel\" name=\"labelVersion\">\n           <property name=\"sizePolicy\">\n            <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Maximum\">\n             <horstretch>0</horstretch>\n             <verstretch>0</verstretch>\n            </sizepolicy>\n           </property>\n           <property name=\"text\">\n            <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:16pt; font-weight:600;&quot;&gt;Embedded IDE&lt;br/&gt;&lt;/span&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;version {{version}}&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-style:italic;&quot;&gt;copyright © 2016-2018 by&lt;br/&gt;Martin Ribelotta&lt;br/&gt;&lt;/span&gt;&lt;a href=&quot;martinribelotta@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline;&quot;&gt;martinribelotta@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt;&quot;&gt;This program is licenced under GPL v3 or great&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <spacer name=\"horizontalSpacer_3\">\n           <property name=\"orientation\">\n            <enum>Qt::Horizontal</enum>\n           </property>\n           <property name=\"sizeHint\" stdset=\"0\">\n            <size>\n             <width>57</width>\n             <height>17</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n        </layout>\n       </item>\n       <item>\n        <widget class=\"QWidget\" name=\"widget_4\" native=\"true\">\n         <property name=\"minimumSize\">\n          <size>\n           <width>0</width>\n           <height>4</height>\n          </size>\n         </property>\n         <property name=\"styleSheet\">\n          <string notr=\"true\">border-bottom: 1px solid rgb(157, 166, 185);</string>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <layout class=\"QGridLayout\" name=\"gridLayout_5\">\n         <item row=\"0\" column=\"0\" rowspan=\"4\">\n          <spacer name=\"verticalSpacer_2\">\n           <property name=\"orientation\">\n            <enum>Qt::Vertical</enum>\n           </property>\n           <property name=\"sizeHint\" stdset=\"0\">\n            <size>\n             <width>20</width>\n             <height>40</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n         <item row=\"2\" column=\"3\">\n          <spacer name=\"horizontalSpacer_8\">\n           <property name=\"orientation\">\n            <enum>Qt::Horizontal</enum>\n           </property>\n           <property name=\"sizeType\">\n            <enum>QSizePolicy::MinimumExpanding</enum>\n           </property>\n           <property name=\"sizeHint\" stdset=\"0\">\n            <size>\n             <width>58</width>\n             <height>20</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n         <item row=\"0\" column=\"3\">\n          <widget class=\"QToolButton\" name=\"updateAvailable\">\n           <property name=\"sizePolicy\">\n            <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n             <horstretch>0</horstretch>\n             <verstretch>0</verstretch>\n            </sizepolicy>\n           </property>\n           <property name=\"toolTip\">\n            <string>Template Update Available</string>\n           </property>\n           <property name=\"icon\">\n            <iconset theme=\"view-refresh\">\n             <normaloff>.</normaloff>.</iconset>\n           </property>\n           <property name=\"iconSize\">\n            <size>\n             <width>32</width>\n             <height>32</height>\n            </size>\n           </property>\n           <property name=\"autoRaise\">\n            <bool>true</bool>\n           </property>\n          </widget>\n         </item>\n         <item row=\"0\" column=\"4\" rowspan=\"4\">\n          <spacer name=\"verticalSpacer\">\n           <property name=\"orientation\">\n            <enum>Qt::Vertical</enum>\n           </property>\n           <property name=\"sizeHint\" stdset=\"0\">\n            <size>\n             <width>20</width>\n             <height>40</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n         <item row=\"3\" column=\"2\">\n          <layout class=\"QGridLayout\" name=\"gridLayout_4\">\n           <item row=\"2\" column=\"1\">\n            <widget class=\"QToolButton\" name=\"buttonQuit\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"toolTip\">\n              <string>Exit from application</string>\n             </property>\n             <property name=\"text\">\n              <string>Exit from app</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"application-exit\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"toolButtonStyle\">\n              <enum>Qt::ToolButtonTextBesideIcon</enum>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n            </widget>\n           </item>\n           <item row=\"0\" column=\"0\" rowspan=\"3\">\n            <spacer name=\"horizontalSpacer_6\">\n             <property name=\"orientation\">\n              <enum>Qt::Horizontal</enum>\n             </property>\n             <property name=\"sizeType\">\n              <enum>QSizePolicy::Fixed</enum>\n             </property>\n             <property name=\"sizeHint\" stdset=\"0\">\n              <size>\n               <width>80</width>\n               <height>2</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n           <item row=\"0\" column=\"3\" rowspan=\"3\">\n            <spacer name=\"horizontalSpacer_9\">\n             <property name=\"orientation\">\n              <enum>Qt::Horizontal</enum>\n             </property>\n             <property name=\"sizeType\">\n              <enum>QSizePolicy::Fixed</enum>\n             </property>\n             <property name=\"sizeHint\" stdset=\"0\">\n              <size>\n               <width>80</width>\n               <height>2</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n           <item row=\"2\" column=\"2\">\n            <widget class=\"QLabel\" name=\"labelExit\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"minimumSize\">\n              <size>\n               <width>101</width>\n               <height>0</height>\n              </size>\n             </property>\n             <property name=\"text\">\n              <string>ALT+F4</string>\n             </property>\n            </widget>\n           </item>\n           <item row=\"1\" column=\"2\">\n            <widget class=\"QLabel\" name=\"labelConfiguration\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string>CTRL+SHIFT+P</string>\n             </property>\n            </widget>\n           </item>\n           <item row=\"1\" column=\"1\">\n            <widget class=\"QToolButton\" name=\"buttonConfiguration\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"toolTip\">\n              <string>Open Confioguration</string>\n             </property>\n             <property name=\"text\">\n              <string>Configuration</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"configure\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"toolButtonStyle\">\n              <enum>Qt::ToolButtonTextBesideIcon</enum>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n            </widget>\n           </item>\n          </layout>\n         </item>\n         <item row=\"0\" column=\"2\">\n          <layout class=\"QGridLayout\" name=\"gridLayout_3\">\n           <item row=\"3\" column=\"1\">\n            <widget class=\"QToolButton\" name=\"buttonOpenProject\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"toolTip\">\n              <string>Open Existing Project</string>\n             </property>\n             <property name=\"text\">\n              <string>Open Project</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"document-open\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"toolButtonStyle\">\n              <enum>Qt::ToolButtonTextBesideIcon</enum>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n            </widget>\n           </item>\n           <item row=\"1\" column=\"0\" rowspan=\"3\">\n            <spacer name=\"horizontalSpacer_4\">\n             <property name=\"orientation\">\n              <enum>Qt::Horizontal</enum>\n             </property>\n             <property name=\"sizeType\">\n              <enum>QSizePolicy::Fixed</enum>\n             </property>\n             <property name=\"sizeHint\" stdset=\"0\">\n              <size>\n               <width>80</width>\n               <height>2</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n           <item row=\"1\" column=\"1\">\n            <widget class=\"QToolButton\" name=\"buttonNewProject\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"toolTip\">\n              <string>Create New Project</string>\n             </property>\n             <property name=\"text\">\n              <string>New Project</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"document-new\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"toolButtonStyle\">\n              <enum>Qt::ToolButtonTextBesideIcon</enum>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n            </widget>\n           </item>\n           <item row=\"1\" column=\"3\" rowspan=\"3\">\n            <spacer name=\"horizontalSpacer_5\">\n             <property name=\"orientation\">\n              <enum>Qt::Horizontal</enum>\n             </property>\n             <property name=\"sizeType\">\n              <enum>QSizePolicy::Fixed</enum>\n             </property>\n             <property name=\"sizeHint\" stdset=\"0\">\n              <size>\n               <width>80</width>\n               <height>2</height>\n              </size>\n             </property>\n            </spacer>\n           </item>\n           <item row=\"3\" column=\"2\">\n            <widget class=\"QLabel\" name=\"labelOpenProject\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"minimumSize\">\n              <size>\n               <width>101</width>\n               <height>0</height>\n              </size>\n             </property>\n             <property name=\"text\">\n              <string>CTRL+O</string>\n             </property>\n            </widget>\n           </item>\n           <item row=\"1\" column=\"2\">\n            <widget class=\"QLabel\" name=\"labelNewProject\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n               <horstretch>101</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string>CTRL+N</string>\n             </property>\n            </widget>\n           </item>\n           <item row=\"2\" column=\"1\">\n            <widget class=\"QToolButton\" name=\"buttonNewProjectFromRemote\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n               <horstretch>0</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"toolTip\">\n              <string>Create New Project From Remote URL</string>\n             </property>\n             <property name=\"text\">\n              <string>From Remote</string>\n             </property>\n             <property name=\"icon\">\n              <iconset theme=\"document-new\">\n               <normaloff>.</normaloff>.</iconset>\n             </property>\n             <property name=\"iconSize\">\n              <size>\n               <width>22</width>\n               <height>22</height>\n              </size>\n             </property>\n             <property name=\"toolButtonStyle\">\n              <enum>Qt::ToolButtonTextBesideIcon</enum>\n             </property>\n             <property name=\"autoRaise\">\n              <bool>true</bool>\n             </property>\n            </widget>\n           </item>\n           <item row=\"2\" column=\"2\">\n            <widget class=\"QLabel\" name=\"labelNewProject_2\">\n             <property name=\"sizePolicy\">\n              <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n               <horstretch>101</horstretch>\n               <verstretch>0</verstretch>\n              </sizepolicy>\n             </property>\n             <property name=\"text\">\n              <string>CTRL+SHIFT+N</string>\n             </property>\n            </widget>\n           </item>\n          </layout>\n         </item>\n         <item row=\"1\" column=\"1\" colspan=\"3\">\n          <spacer name=\"verticalSpacer_3\">\n           <property name=\"orientation\">\n            <enum>Qt::Vertical</enum>\n           </property>\n           <property name=\"sizeType\">\n            <enum>QSizePolicy::Fixed</enum>\n           </property>\n           <property name=\"sizeHint\" stdset=\"0\">\n            <size>\n             <width>20</width>\n             <height>8</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n         <item row=\"2\" column=\"2\">\n          <widget class=\"QListView\" name=\"recentProjectsView\">\n           <property name=\"sizePolicy\">\n            <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Expanding\">\n             <horstretch>0</horstretch>\n             <verstretch>0</verstretch>\n            </sizepolicy>\n           </property>\n           <property name=\"minimumSize\">\n            <size>\n             <width>360</width>\n             <height>0</height>\n            </size>\n           </property>\n           <property name=\"toolTip\">\n            <string>Recent Projects</string>\n           </property>\n           <property name=\"editTriggers\">\n            <set>QAbstractItemView::NoEditTriggers</set>\n           </property>\n           <property name=\"alternatingRowColors\">\n            <bool>true</bool>\n           </property>\n           <property name=\"iconSize\">\n            <size>\n             <width>22</width>\n             <height>22</height>\n            </size>\n           </property>\n           <property name=\"textElideMode\">\n            <enum>Qt::ElideMiddle</enum>\n           </property>\n           <property name=\"uniformItemSizes\">\n            <bool>true</bool>\n           </property>\n          </widget>\n         </item>\n         <item row=\"2\" column=\"1\">\n          <spacer name=\"horizontalSpacer_7\">\n           <property name=\"orientation\">\n            <enum>Qt::Horizontal</enum>\n           </property>\n           <property name=\"sizeType\">\n            <enum>QSizePolicy::MinimumExpanding</enum>\n           </property>\n           <property name=\"sizeHint\" stdset=\"0\">\n            <size>\n             <width>58</width>\n             <height>20</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n        </layout>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <layoutdefault spacing=\"6\" margin=\"11\"/>\n <customwidgets>\n  <customwidget>\n   <class>DocumentManager</class>\n   <extends>QWidget</extends>\n   <header location=\"global\">documentmanager.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources>\n  <include location=\"resources/resources.qrc\"/>\n </resources>\n <connections/>\n <buttongroups>\n  <buttongroup name=\"editionButtons\">\n   <property name=\"exclusive\">\n    <bool>false</bool>\n   </property>\n  </buttongroup>\n  <buttongroup name=\"projectButtons\">\n   <property name=\"exclusive\">\n    <bool>false</bool>\n   </property>\n  </buttongroup>\n </buttongroups>\n</ui>\n"
  },
  {
    "path": "ide/mapfileviewer.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"mapfileviewer.h\"\n\n#include <QHeaderView>\n#include <mapviewmodel.h>\n\nMapFileViewer::MapFileViewer(QWidget *parent) : QTreeView(parent)\n{\n    setAlternatingRowColors(true);\n    setEditTriggers(QTreeView::NoEditTriggers);\n    setItemDelegateForColumn(MapViewModel::PERCENT_COLUMN, new BarItemDelegate(this));\n    auto adjust = [this](const QModelIndex&) { header()->resizeSections(QHeaderView::ResizeToContents); };\n    QObject::connect(this, &QTreeView::expanded, adjust);\n    QObject::connect(this, &QTreeView::collapsed, adjust);\n}\n\nMapFileViewer::~MapFileViewer()\n= default;\n\nbool MapFileViewer::load(const QString &path)\n{\n    auto model = new MapViewModel(this);\n    setModel(model);\n    if (!model->load(path))\n        return false;\n    header()->resizeSections(QHeaderView::ResizeToContents);\n    setPath(path);\n    return true;\n}\n\nclass MAPEditorCreator: public IDocumentEditorCreator\n{\npublic:\n    ~MAPEditorCreator() override;\n    bool canHandleExtentions(const QStringList &suffixes) const override {\n        for(const QString& suffix: suffixes)\n            if (suffix.compare(\"map\", Qt::CaseInsensitive) == 0)\n                return true;\n        return false;\n    }\n\n    IDocumentEditor *create(QWidget *parent = nullptr) const override {\n        return new MapFileViewer(parent);\n    }\n};\n\nIDocumentEditorCreator *MapFileViewer::creator()\n{\n    return IDocumentEditorCreator::staticCreator<MAPEditorCreator>();\n}\n\nMAPEditorCreator::~MAPEditorCreator()\n= default;\n"
  },
  {
    "path": "ide/mapfileviewer.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef MAPFILEVIEWER_H\n#define MAPFILEVIEWER_H\n\n#include <QTreeView>\n\n#include \"idocumenteditor.h\"\n\nclass MapFileViewer : public QTreeView, public IDocumentEditor\n{\npublic:\n    explicit MapFileViewer(QWidget *parent = nullptr);\n    virtual ~MapFileViewer() override;\n\n    const QWidget *widget() const override { return this; }\n    QWidget *widget() override { return this; }\n    bool load(const QString& path) override;\n    bool save(const QString& path) override { Q_UNUSED(path); return false; }\n    void reload() override { load(path()); }\n    bool isReadonly() const override { return true; }\n    void setReadonly(bool rdOnly) override { Q_UNUSED(rdOnly); }\n    bool isModified() const override { return false; }\n    void setModified(bool m) override { Q_UNUSED(m); }\n    QPoint cursor() const override { return QPoint(); }\n    void setCursor(const QPoint& pos) override { Q_UNUSED(pos); }\n\n    static IDocumentEditorCreator *creator();\n};\n\n#endif // MAPFILEVIEWER_H\n"
  },
  {
    "path": "ide/markdowneditor.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"markdowneditor.h\"\n\n#include <markdownview.h>\n\n#include <QHBoxLayout>\n#include <QToolButton>\n#include <QGridLayout>\n#include <QSplitter>\n#include <QScrollBar>\n\n#include <QtConcurrent>\n#include <QFutureWatcher>\n#include <QCloseEvent>\n\nstatic constexpr auto DEFAULT_REFRESH_DELAY_MS = 500;\nstatic constexpr auto RELOAD_ICON_SIZE = QSize{16, 16};\n\nMarkdownEditor::MarkdownEditor(QWidget *parent): QWidget(parent)\n{\n    auto l = new QHBoxLayout(this);\n    auto s = new QSplitter(Qt::Horizontal, this);\n    auto reload = new QToolButton(this);\n    renderTimer = new QTimer(this);\n    editor = new CodeTextEditor(this);\n    view = new MarkdownView(this);\n    reload->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", \"view-refresh\" })));\n    reload->setIconSize(RELOAD_ICON_SIZE);\n    view->setCornerWidget(reload);\n    s->addWidget(editor);\n    s->addWidget(view);\n    l->addWidget(s);\n    l->setContentsMargins(0, 0, 0, 0);\n    l->setSpacing(0);\n    connect(reload, &QToolButton::clicked, this, &MarkdownEditor::updateView);\n    connect(editor, &PlainTextEditor::modificationChanged, [this]() { notifyModifyObservers(); });\n    connect(editor, &PlainTextEditor::textChanged, [this]() { renderTimer->start(); });\n    connect(renderTimer, &QTimer::timeout, this, &MarkdownEditor::updateView);\n    renderTimer->setInterval(DEFAULT_REFRESH_DELAY_MS);\n    renderTimer->setSingleShot(true);\n}\n\nbool MarkdownEditor::load(const QString &path) {\n    setPath(path);\n    auto r = editor->load(path);\n    updateView();\n    return r;\n}\n\nbool MarkdownEditor::save(const QString &path) {\n    setWindowFilePath(path);\n    return editor->save(path);\n}\n\nvoid MarkdownEditor::setPath(const QString &path) {\n    editor->setPath(path);\n    view->setWindowFilePath(path);\n    view->setSource(QUrl::fromLocalFile(path));\n    view->setSearchPaths({ QFileInfo(path).absolutePath() });\n    widget()->setWindowFilePath(path);\n}\n\nstatic const QStringList MARKDOWN_EXTENSIONS = { \"md\" };\nstatic const QStringList MARKDOWN_MIMETYPE = {\n    \"text/markdown\",\n    \"text/x-markdown\",\n};\n\nclass MarkdownEditorCreator: public IDocumentEditorCreator\n{\npublic:\n    ~MarkdownEditorCreator() override;\n\n    static bool in(const QMimeType &t, const QStringList &list) {\n        for(const auto& mtype: list)\n            if (t.inherits(mtype))\n                return true;\n        return false;\n    }\n\n    bool canHandleExtentions(const QStringList &suffixes) const override {\n        for(const auto& suffix: suffixes)\n            if (MARKDOWN_EXTENSIONS.contains(suffix))\n                return true;\n        return false;\n    }\n\n    bool canHandleMime(const QMimeType &mime) const override {\n        return in(mime, MARKDOWN_MIMETYPE);\n    }\n\n    IDocumentEditor *create(QWidget *parent = nullptr) const override {\n        return new MarkdownEditor(parent);\n    }\n};\n\nMarkdownEditorCreator::~MarkdownEditorCreator() = default;\n\nIDocumentEditorCreator *MarkdownEditor::creator()\n{\n    return IDocumentEditorCreator::staticCreator<MarkdownEditorCreator>();\n}\n\nvoid MarkdownEditor::updateView()\n{\n#if 0\n    renderTimer->blockSignals(true);\n    auto watch = new QFutureWatcher<QString>(this);\n    auto text = editor->text();\n    auto f = QtConcurrent::run([text]() {\n        return MarkdownView::renderHtml(text);\n    });\n    watch->setFuture(f);\n    int pos = view->verticalScrollBar()->value();\n    view->clear();\n    view->setHtml(tr(\"<h3>Rendering...</h3>\"));\n    connect(watch, &QFutureWatcher<QString>::finished, [this, watch, pos]() {\n        auto text = watch->future().result();\n        view->setHtml(text);\n        view->verticalScrollBar()->setValue(pos);\n        watch->deleteLater();\n        renderTimer->blockSignals(false);\n    });\n#else\n    auto pos = view->verticalScrollBar()->value();\n    view->setMarkdown(editor->text());\n    view->verticalScrollBar()->setValue(pos);\n#endif\n}\n\nvoid MarkdownEditor::closeEvent(QCloseEvent *event)\n{\n    event->setAccepted(editor->close());\n}\n"
  },
  {
    "path": "ide/markdowneditor.h",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef MARKDOWNEDITOR_H\n#define MARKDOWNEDITOR_H\n\n#include <QWidget>\n#include <idocumenteditor.h>\n\n#include <codetexteditor.h>\n\nclass MarkdownView;\n\nclass MarkdownEditor: public QWidget, public IDocumentEditor\n{\n    Q_OBJECT\npublic:\n    MarkdownEditor(QWidget *parent = nullptr);\n\n    virtual const QWidget *widget() const override { return this; }\n    virtual QWidget *widget() override { return this; }\n    virtual bool load(const QString& path) override;\n    virtual bool save(const QString& path) override;\n    virtual void reload() override {\n        editor->reload();\n        updateView();\n    }\n    virtual QString path() const override { return widget()->windowFilePath(); }\n    virtual void setPath(const QString& path) override;\n    virtual bool isReadonly() const override { return editor->isReadonly(); }\n    virtual void setReadonly(bool rdOnly) override { return editor->setReadonly(rdOnly); }\n    virtual bool isModified() const override { return editor->isModified(); }\n    virtual void setModified(bool m) override { return editor->setModified(m); }\n    virtual QPoint cursor() const override { return editor->cursor(); }\n    virtual void setCursor(const QPoint& pos) override { editor->setCursor(pos); }\n\n    static IDocumentEditorCreator *creator();\n\npublic slots:\n    void updateView();\n\nprotected:\n    virtual void closeEvent(QCloseEvent *event) override;\n\nprivate:\n    MarkdownView *view;\n    CodeTextEditor *editor;\n    QTimer *renderTimer;\n};\n\n#endif // MARKDOWNEDITOR_H\n"
  },
  {
    "path": "ide/markdownview.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"markdownview.h\"\n\n#include <hoedown/src/document.h>\n#include <hoedown/src/html.h>\n\nstatic constexpr auto DEFAULT_NESTING = 16;\n\nstatic constexpr auto DEFAULT_STYLESHEET = R\"(\npre {\n    background: #ffe4a4;\n    padding: 10px;\n}\ncode {\n    background: #ffe4a4;\n}\n)\";\n\nMarkdownView::MarkdownView(QWidget *parent) : QTextBrowser(parent)\n{\n}\n\nQString MarkdownView::renderHtml(const QString &markdownText)\n{\n    if (markdownText.isEmpty())\n        return \"<html></html>\";\n    auto utf8 = markdownText.toUtf8();\n    auto ptr = reinterpret_cast<const uint8_t*>(utf8.constData());\n    hoedown_html_flags flags = HOEDOWN_HTML_USE_XHTML;\n    auto exts = static_cast<hoedown_extensions>(\n            HOEDOWN_EXT_TABLES |\n            HOEDOWN_EXT_FENCED_CODE |\n            HOEDOWN_EXT_FOOTNOTES |\n            HOEDOWN_EXT_AUTOLINK |\n            HOEDOWN_EXT_STRIKETHROUGH |\n            HOEDOWN_EXT_UNDERLINE |\n            HOEDOWN_EXT_HIGHLIGHT |\n            HOEDOWN_EXT_QUOTE |\n            HOEDOWN_EXT_SUPERSCRIPT |\n            HOEDOWN_EXT_MATH |\n            HOEDOWN_EXT_NO_INTRA_EMPHASIS |\n            HOEDOWN_EXT_SPACE_HEADERS |\n            HOEDOWN_EXT_MATH_EXPLICIT\n        );\n    auto renderer = hoedown_html_renderer_new(flags, 0);\n    auto document = hoedown_document_new(renderer, exts, DEFAULT_NESTING);\n    auto html = hoedown_buffer_new(size_t(utf8.size()));\n    hoedown_document_render(document, html, ptr, size_t(utf8.size()));\n    auto htmlText = QString::fromUtf8(reinterpret_cast<const char*>(html->data),\n                                      int(html->size));\n    hoedown_buffer_free(html);\n    hoedown_document_free(document);\n    hoedown_html_renderer_free(renderer);\n    return htmlText;\n}\n\nvoid MarkdownView::setMarkdown(const QString &markdown)\n{\n    setHtml(renderHtml(markdown));\n    document()->setDefaultStyleSheet(DEFAULT_STYLESHEET);\n}\n"
  },
  {
    "path": "ide/markdownview.h",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef MARKDOWNVIEW_H\n#define MARKDOWNVIEW_H\n\n#include <QTextBrowser>\n\nclass MarkdownView : public QTextBrowser\n{\n    Q_OBJECT\npublic:\n    explicit MarkdownView(QWidget *parent = nullptr);\n\n    static QString renderHtml(const QString& markdownText);\n\nsignals:\n\npublic slots:\n    void setMarkdown(const QString& markdown);\n};\n\n#endif // MARKDOWNVIEW_H\n"
  },
  {
    "path": "ide/newprojectdialog.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"newprojectdialog.h\"\n#include \"templatefile.h\"\n#include \"ui_newprojectdialog.h\"\n\n#include <QCheckBox>\n#include <QDir>\n#include <QFileDialog>\n#include <QItemDelegate>\n#include <QRegularExpression>\n#include <QRegularExpressionMatch>\n#include <QStandardItemModel>\n#include <QStyledItemDelegate>\n\n#include <QtDebug>\n\nclass ItemDelegate: public QItemDelegate\n{\n    static QComboBox *addToCombo(QComboBox *c, const QStringList& items) {\n        c->addItems(items);\n        return c;\n    }\n\npublic:\n    ItemDelegate(QObject *parent) : QItemDelegate(parent) { }\n    ~ItemDelegate() override;\n\n    static QStandardItem *addUserData(QStandardItem *item, const QVariant& data)\n    {\n        item->setData(data, Qt::UserRole);\n        return item;\n    }\n\n    static QStandardItem *addUserData(QStandardItem *item, const QString& type, const QString& data)\n    {\n        item->setEditable(true);\n        if (type == \"items\") {\n            QStringList v = data.split('|');\n            item->setData(v, Qt::UserRole);\n            item->setText(v.first());\n        } else if (type == \"string\" ) {\n            item->setData(data, Qt::UserRole);\n            item->setText(data);\n        }\n        return item;\n    }\n\n    static QStandardItemModel *extractParameterToModel(QTableView *parent, const QList<DiffParameter> &parameters)\n    {\n        auto model = new QStandardItemModel(parent);\n        /*QRegularExpression re(R\"(\\$\\{\\{(?P<name>[a-zA-Z_0-9]+)(?:\\s+(?P<type>string|items)\\:(?P<params>.*?))?\\}\\})\",\n                              QRegularExpression::MultilineOption);*/\n        for(const auto& p: parameters) {\n            const auto& name = p.name;\n            const auto& type = p.type;\n            const auto& params = p.params;\n            const auto visualName = QString(name).replace('_', ' ');\n            if (!type.isEmpty() && !params.isEmpty())\n                model->appendRow({\n                    addUserData(new QStandardItem(visualName), name),\n                    addUserData(new QStandardItem(), type, params )\n                });\n        }\n        model->setHorizontalHeaderLabels({ QObject::tr(\"Name\"), QObject::tr(\"Value\") });\n        return model;\n    }\n\n    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem& opt, const QModelIndex &idx) const override\n    {\n        auto meta = idx.data(Qt::UserRole);\n        switch (meta.type()) {\n        case QVariant::StringList:\n            return addToCombo(new QComboBox(parent), meta.toStringList());\n        case QVariant::String:\n            return new QLineEdit(meta.toString(), parent);\n        default:\n            return QItemDelegate::createEditor(parent, opt, idx);\n        }\n    }\n\n    void setEditorData(QWidget *editor, const QModelIndex &index) const override\n    {\n        QString value = index.model()->data(index, Qt::EditRole).toString();\n\n        auto *cBox = qobject_cast<QComboBox*>(editor);\n        if (cBox) {\n            cBox->setCurrentIndex(cBox->findText(value));\n            return;\n        }\n        auto *ed = qobject_cast<QLineEdit*>(editor);\n        if (ed) {\n            ed->setText(value);\n            return;\n        }\n        QItemDelegate::setEditorData(editor, index);\n    }\n\n    void setModelData(QWidget *editor, QAbstractItemModel *model,\n                      const QModelIndex &index) const override\n    {\n        auto *cBox = qobject_cast<QComboBox*>(editor);\n        if (cBox) {\n            model->setData(index, cBox->currentText(), Qt::EditRole);\n            return;\n        }\n        auto *ed = qobject_cast<QLineEdit*>(editor);\n        if (ed) {\n            model->setData(index, ed->text(), Qt::EditRole);\n            return;\n        }\n        QItemDelegate::setModelData(editor, model, index);\n    }\n\n    void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &/* index */) const override\n    {\n        editor->setGeometry(option.rect);\n    }\n};\n\nNewProjectDialog::NewProjectDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(std::make_unique<Ui::NewProjectDialog>())\n{\n    ui->setupUi(this);\n    const struct { QAbstractButton *b; const char *name; } buttonmap[] = {\n        { ui->pathSelect, \"document-open\" },\n        { ui->templateSelect, \"document-open\" },\n        { ui->buttonOk, \"dialog-ok-apply\" },\n        { ui->buttonCancel, \"dialog-close\" },\n    };\n    for (const auto& e: buttonmap)\n        e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.name })});\n\n    ui->parameterTable->setItemDelegateForColumn(1, new ItemDelegate(this));\n    for(const QFileInfo& info: QDir(\":/templates\").entryInfoList({ \"*.template\" }))\n        ui->templateName->addItem(info.baseName(), info.absoluteFilePath());\n    for(const QFileInfo& info: QDir(AppConfig::instance().templatesPath()).entryInfoList({ \"*.template\", \"*.tar.gz\" }))\n        if (ui->templateName->findData(info.absoluteFilePath()) == -1)\n            ui->templateName->addItem(info.baseName(), info.absoluteFilePath());\n\n    auto completePath = [this]() {\n        ui->projectNameAndPath->setText(QDir(ui->projectPath->text()).absoluteFilePath(ui->projectName->text()));\n        ui->buttonOk->setDisabled(ui->projectPath->text().isEmpty() || ui->projectName->text().isEmpty());\n    };\n    connect(ui->projectName, &QLineEdit::textChanged, completePath);\n    connect(ui->projectPath, &QLineEdit::textChanged, completePath);\n\n    auto templateSelectedCallback = [this](int index) {\n        if (ui->parameterTable->model()) {\n            ui->parameterTable->model()->deleteLater();\n            ui->parameterTable->setModel(nullptr);\n        }\n        auto path = ui->templateName->itemData(index).toString();\n        auto tm = TemplateFile{QFileInfo{path}};\n        if (tm.type() == TemplateFile::Type::DiffFile) {\n            DiffFile dFile{path};\n            ui->infoView->setHtml(dFile.manifest);\n            ui->parameterTable->setModel(ItemDelegate::extractParameterToModel(ui->parameterTable, dFile.parameters));\n            ui->parameterTable->resizeColumnToContents(0);\n            ui->parameterTable->resizeRowsToContents();\n        } else if (tm.type() == TemplateFile::Type::TarGzFile) {\n            TarGzFile tFile{path};\n            if (QStringList{ \"htm\", \"html\" }.contains(tFile.metadataSuffix))\n                ui->infoView->setHtml(tFile.metadata);\n            else if (tFile.metadataSuffix == \"md\")\n                ui->infoView->setHtml(MarkdownView::renderHtml(tFile.metadata));\n            else\n                ui->infoView->setPlainText(tFile.metadata);\n        } else\n            ui->infoView->setHtml(tr(\"<h1>Compressed project in tar.gz from:</h1><p><tt>%1</tt>\").arg(path));\n    };\n    connect(ui->templateName, QOverload<int>::of(&QComboBox::currentIndexChanged), templateSelectedCallback);\n    connect(ui->pathSelect, &QToolButton::clicked, [this]() {\n        auto path = QFileDialog::getExistingDirectory(this, tr(\"Select Directory\"), ui->projectPath->text());\n        if (!path.isEmpty())\n            ui->pathSelect->setText(path);\n    });\n    connect(ui->templateSelect, &QToolButton::clicked, [this]() {\n        auto dir = AppConfig::instance().templatesPath();\n        auto path = QFileDialog::getOpenFileName(this, tr(\"Select File\"), dir,\n                                                 TemplateFile::TEMPLATE_FILEDIALOG_FILTER);\n        if (!path.isEmpty()) {\n            ui->templateName->insertItem(0, QFileInfo(path).baseName(), path);\n            ui->templateName->setCurrentIndex(0);\n        }\n    });\n\n    completePath();\n    templateSelectedCallback(ui->templateName->findData(\":/templates/empty.template\"));\n    ui->projectPath->setText(AppConfig::instance().projectsPath());\n}\n\nNewProjectDialog::~NewProjectDialog()\n{\n}\n\nQString NewProjectDialog::absoluteProjectPath() const\n{\n    return ui->projectNameAndPath->text();\n}\n\nQString NewProjectDialog::templateFile() const\n{\n    if (!isTemplate())\n        return QString{};\n    auto templatePath = ui->templateName->currentData().toString();\n    qDebug() << \"create project from template\" << templatePath;\n    auto text = QString(AppConfig::readEntireTextFile(templatePath));\n    auto m = ui->parameterTable->model();\n    for(int row = 0; row < m->rowCount(); row++) {\n        auto name = m->data(m->index(row, 0), Qt::UserRole).toString().replace(' ', '_');\n        auto value = m->data(m->index(row, 1), Qt::EditRole).toString();\n        auto reText = QString(R\"(\\$\\{\\{%1\\s+.*\\}\\})\").arg(name);\n        qDebug() << name << value << reText;\n        text.replace(QRegularExpression(reText), value);\n    }\n    return text;\n}\n\nQFileInfo NewProjectDialog::selectedTemplateFile() const\n{\n    return QFileInfo(ui->templateName->currentData().toString());\n}\n\nbool NewProjectDialog::isTemplate() const\n{\n    return selectedTemplateFile().suffix().compare(\"template\", Qt::CaseInsensitive) == 0;\n}\n\nItemDelegate::~ItemDelegate() = default;\n"
  },
  {
    "path": "ide/newprojectdialog.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef NEWPROJECTDIALOG_H\n#define NEWPROJECTDIALOG_H\n\n#include <QDialog>\n#include <QFileInfo>\n\n#include <memory>\n\nnamespace Ui {\nclass NewProjectDialog;\n}\n\nclass NewProjectDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit NewProjectDialog(QWidget *parent = nullptr);\n    virtual ~NewProjectDialog();\n\n    QString absoluteProjectPath() const;\n    QString templateFile() const;\n    QFileInfo selectedTemplateFile() const;\n    bool isTemplate() const;\nprivate:\n    std::unique_ptr<Ui::NewProjectDialog> ui;\n};\n\n#endif // NEWPROJECTDIALOG_H\n"
  },
  {
    "path": "ide/newprojectdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>NewProjectDialog</class>\n <widget class=\"QDialog\" name=\"NewProjectDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>441</width>\n    <height>595</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>New Project</string>\n  </property>\n  <layout class=\"QGridLayout\" name=\"gridLayout\">\n   <item row=\"0\" column=\"0\" colspan=\"4\">\n    <widget class=\"QLineEdit\" name=\"projectName\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"placeholderText\">\n      <string>Project Name</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"0\" colspan=\"3\">\n    <widget class=\"QLineEdit\" name=\"projectPath\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"placeholderText\">\n      <string>Project Path</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"3\">\n    <widget class=\"QToolButton\" name=\"pathSelect\">\n     <property name=\"icon\">\n      <iconset theme=\"document-open\"/>\n     </property>\n    </widget>\n   </item>\n   <item row=\"2\" column=\"0\" colspan=\"4\">\n    <widget class=\"QGroupBox\" name=\"groupBox\">\n     <property name=\"title\">\n      <string>Project name and path</string>\n     </property>\n     <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n      <item>\n       <widget class=\"QLabel\" name=\"projectNameAndPath\">\n        <property name=\"text\">\n         <string/>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item row=\"3\" column=\"0\" colspan=\"3\">\n    <widget class=\"QComboBox\" name=\"templateName\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"editable\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item row=\"3\" column=\"3\">\n    <widget class=\"QToolButton\" name=\"templateSelect\">\n     <property name=\"icon\">\n      <iconset theme=\"document-open\"/>\n     </property>\n    </widget>\n   </item>\n   <item row=\"4\" column=\"0\" colspan=\"4\">\n    <widget class=\"QSplitter\" name=\"splitter\">\n     <property name=\"orientation\">\n      <enum>Qt::Vertical</enum>\n     </property>\n     <widget class=\"MarkdownView\" name=\"infoView\"/>\n     <widget class=\"QTableView\" name=\"parameterTable\">\n      <property name=\"selectionBehavior\">\n       <enum>QAbstractItemView::SelectRows</enum>\n      </property>\n      <attribute name=\"horizontalHeaderStretchLastSection\">\n       <bool>true</bool>\n      </attribute>\n      <attribute name=\"verticalHeaderVisible\">\n       <bool>false</bool>\n      </attribute>\n     </widget>\n    </widget>\n   </item>\n   <item row=\"5\" column=\"0\">\n    <spacer name=\"horizontalSpacer\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>251</width>\n       <height>21</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n   <item row=\"5\" column=\"1\">\n    <widget class=\"QPushButton\" name=\"buttonOk\">\n     <property name=\"enabled\">\n      <bool>false</bool>\n     </property>\n     <property name=\"text\">\n      <string>Create</string>\n     </property>\n     <property name=\"icon\">\n      <iconset theme=\"dialog-ok-apply\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n     <property name=\"default\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item row=\"5\" column=\"2\" colspan=\"2\">\n    <widget class=\"QPushButton\" name=\"buttonCancel\">\n     <property name=\"text\">\n      <string>Cancel</string>\n     </property>\n     <property name=\"icon\">\n      <iconset theme=\"dialog-close\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>MarkdownView</class>\n   <extends>QTextBrowser</extends>\n   <header>markdownview.h</header>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonOk</sender>\n   <signal>clicked()</signal>\n   <receiver>NewProjectDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>287</x>\n     <y>567</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>228</x>\n     <y>569</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonCancel</sender>\n   <signal>clicked()</signal>\n   <receiver>NewProjectDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>396</x>\n     <y>570</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>406</x>\n     <y>590</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "ide/newprojectfromremotedialog.cpp",
    "content": "#include \"newprojectfromremotedialog.h\"\n#include \"ui_newprojectfromremotedialog.h\"\n\n#include \"appconfig.h\"\n#include \"childprocess.h\"\n#include \"consoleinterceptor.h\"\n\n#include <QFileDialog>\n#include <QMenu>\n#include <QTextStream>\n#include <QNetworkAccessManager>\n#include <QNetworkReply>\n#include <QRegularExpression>\n#include <QDir>\n\n#include <mustache.h>\n\nenum UrlType {\n    URL_Git,\n    URL_Svn,\n    URL_Archive,\n};\n\nstruct NewProjectFromRemoteDialog::Priv_t\n{\n    ProcessStatus status = NotStarted;\n    UrlType currentType = URL_Git;\n    QNetworkAccessManager *net;\n};\n\ntemplate<typename E, typename Func>\nstatic QPair<QMenu*, QMap<E, QAction*> > makeMenuAction(QWidget *parent,\n                               const QList< QPair<QString, E> > &actions,\n                               Func f)\n{\n    QMap<E, QAction *> revMap;\n    auto m = new QMenu(parent);\n    auto g = new QActionGroup(m);\n    for (const QPair<QString, E>& e: actions) {\n        auto ac = m->addAction(QString(e.first), [f, t=e.second](){ f(t); });\n        ac->setCheckable(true);\n        g->addAction(ac);\n        revMap.insert(e.second, ac);\n    }\n    g->setExclusive(true);\n    return { m, revMap };\n}\n\nstatic const QHash<UrlType, QString> urlTypeIcons = {\n    { URL_Git, \"git\" },\n    { URL_Svn, \"svn\" },\n    { URL_Archive, \"archive\" },\n};\n\nstatic const QHash<UrlType, QString> commandForType = {\n    { URL_Git, \"git clone --verbose --progress {{url}} {{path}}\" },\n    { URL_Svn, \"svn checkout {{url}} {{path}}\" },\n};\n\nstatic const QHash<QString, QString> commandForFileType = {\n    { \"zip\", \"busybox unzip -d {{path}} -\" },\n    { \"tar.gz\", \"tar x -zvf - -C {{path}}/../\" },\n    { \"tgz\", \"tar x -zvf - -C {{path}}/../\" },\n    { \"tar.bz\", \"tar x -jvf - -C {{path}}/../\" },\n    { \"tar.xz\", \"tar x -Hvf - -C {{path}}/../\" },\n};\n\nstatic UrlType detectUrlType(const QString& urlPath, UrlType defaultValue)\n{\n    QUrl url{urlPath};\n    if (url.scheme().toLower() == \"svn\") {\n        return URL_Svn;\n    }\n    if (url.scheme().toLower() == \"git\") {\n        return URL_Git;\n    }\n    QFileInfo file(url.path());\n    if (file.suffix() == \"svn\") {\n        return URL_Svn;\n    }\n    if (file.suffix() == \"git\") {\n        return URL_Git;\n    }\n    return defaultValue;\n}\n\nNewProjectFromRemoteDialog::NewProjectFromRemoteDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::NewProjectFromRemoteDialog),\n    priv(std::make_unique<NewProjectFromRemoteDialog::Priv_t>())\n{\n    ui->setupUi(this);\n    priv->net = new QNetworkAccessManager(this);\n\n    auto setIconFromUrl = [this](UrlType t)\n    {\n        auto icon = urlTypeIcons.value(t);\n        auto iconPath = AppConfig::resourceImage({\"mimetypes\", icon});\n        ui->downloadMethod->setIcon(QIcon(iconPath));\n        priv->currentType = t;\n    };\n    auto x = makeMenuAction<UrlType>(this,\n    {\n        {tr(\"Git\"), URL_Git},\n        {tr(\"Svn\"), URL_Svn},\n        {tr(\"Archive\"), URL_Archive},\n    },\n    setIconFromUrl);\n    ui->downloadMethod->setMenu(x.first);\n    ui->downloadMethod->menu()->actions().first()->setChecked(true);\n    setIconFromUrl(URL_Git);\n    auto updateFileName = [this]() {\n        QUrl url{ui->editUrl->text()};\n        auto basename = QFileInfo{url.fileName()}.baseName();\n        if (url.host() == \"github.com\") {\n            static const QRegularExpression re(R\"(^\\/([^\\/]+)\\/([^\\/]+))\");\n            auto m = re.match(url.path());\n            ui->editName->setText(m.hasMatch()? m.captured(2) : basename);\n        } else {\n            ui->editName->setText(basename);\n        }\n        ui->editName->setModified(false);\n    };\n    auto updateFinalPath = [this]() {\n        ui->labelFinalPath->setText(QStringList{\n                                        ui->editPath->text(),\n                                        ui->editName->text(),\n                                    }.join(QDir::separator()));\n    };\n    auto tryToDetectType = [this, actionMap = x.second, setIconFromUrl]() {\n        static const QRegularExpression validUrlRe(R\"(^((([A-Za-z]{3,9}:(?:\\/\\/)?)(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?))\");\n        auto url = ui->editUrl->text();\n        ui->buttonDownload->setEnabled(validUrlRe.match(url).hasMatch());\n        auto t = detectUrlType(url, URL_Archive);\n        actionMap.value(t)->setChecked(true);\n        setIconFromUrl(t);\n    };\n    auto selectProjectFolder = [this]() {\n        auto d = ui->editPath->text();\n        if (!QDir(d).exists())\n            d = QDir::homePath();\n        d = QFileDialog::getExistingDirectory(window(), tr(\"Select Folder\"), d);\n        if (!d.isEmpty())\n            ui->editPath->setText(d);\n    };\n\n    ui->editPath->setText(AppConfig::instance().projectsPath());\n    connect(ui->editUrl, &QLineEdit::textChanged, updateFileName);\n    connect(ui->editUrl, &QLineEdit::textChanged, tryToDetectType);\n    connect(ui->editName, &QLineEdit::textChanged, updateFinalPath);\n    connect(ui->editPath, &QLineEdit::textChanged, updateFinalPath);\n    connect(ui->openFolderButton, &QToolButton::clicked, selectProjectFolder);\n    connect(ui->buttonDownload, &QAbstractButton::clicked, this, &NewProjectFromRemoteDialog::startDownload);\n    connect(ui->buttonClose, &QAbstractButton::clicked, [this]() {\n        if (priv->status == InProgress) {\n            cancelAll();\n        } else {\n            reject();\n        }\n    });\n}\n\nNewProjectFromRemoteDialog::~NewProjectFromRemoteDialog()\n{\n    delete ui;\n}\n\nQString NewProjectFromRemoteDialog::projectPath() const\n{\n    return ui->labelFinalPath->text();\n}\n\nvoid NewProjectFromRemoteDialog::startDownload()\n{\n    if (priv->status == FinishOk) {\n        accept();\n        return;\n    }\n    if (priv->currentType == URL_Archive) {\n        handleArchiveType();\n        return;\n    }\n    auto captureStdout = [this](QProcess *p) {\n        ConsoleInterceptor::writeMessageTo(ui->log, filterOut(p->readAllStandardOutput()), Qt::darkBlue);\n    };\n    auto captureStderr = [this](QProcess *p) {\n        ConsoleInterceptor::writeMessageTo(ui->log, filterOut(p->readAllStandardError()), Qt::darkRed);\n    };\n    auto processEnd = [this](QProcess *p, int exitCode) {\n        ConsoleInterceptor::writeMessageTo(ui->log, tr(\"\\nFinished with %1\\n\").arg(exitCode));\n        if (p->exitStatus() == QProcess::NormalExit) {\n            setOperationInProgress(FinishOk);\n            ui->buttonDownload->setText(tr(\"Try to open\"));\n        } else {\n            setOperationInProgress(FinishError);\n        }\n    };\n    auto processError = [this](QProcess *p, QProcess::ProcessError) {\n        ConsoleInterceptor::writeMessageTo(ui->log, tr(\"\\nERROR:  %1\\n\").arg(p->errorString()));\n        setOperationInProgress(FinishError);\n    };\n    auto& p = ChildProcess::create(this)\n            .setenv({ { \"LANG\", \"C\" }, { \"LC_ALL\", \"C\" } })\n            .changeCWD(ui->editPath->text())\n            .makeDeleteLater()\n            .onReadyReadStdout(captureStdout)\n            .onReadyReadStderr(captureStderr)\n            .onFinished(processEnd)\n            .onError(processError)\n            .onStarted([this](QProcess*) { setOperationInProgress(InProgress); })\n    ;\n    connect(this, &NewProjectFromRemoteDialog::cancelRequests, &p, &QProcess::terminate);\n\n    QVariantHash map = {\n        { \"url\", ui->editUrl->text() },\n        { \"path\", ui->labelFinalPath->text() },\n    };\n    auto tCmd = commandForType.value(priv->currentType);\n    auto cmd = Mustache::renderTemplate(tCmd, map);\n\n    ui->log->clear();\n    ConsoleInterceptor::writeMessageTo(ui->log, tr(\"Starting: %1\\n\\n\").arg(cmd));\n    priv->status = InProgress;\n    p.start(cmd, QProcess::Unbuffered | QProcess::ReadWrite);\n}\n\nvoid NewProjectFromRemoteDialog::cancelAll()\n{\n    emit cancelRequests();\n}\n\nstatic int percent(qint64 a, qint64 b)\n{\n    return (a * 1024 * 100) / (b * 1024);\n}\n\nvoid NewProjectFromRemoteDialog::handleArchiveType()\n{\n    auto urlText = ui->editUrl->text();\n    auto ext = QFileInfo(urlText).completeSuffix();\n    auto tcmd = commandForFileType.value(ext, {});\n    if (tcmd.isEmpty()) {\n        ConsoleInterceptor::writeMessageTo(ui->log, tr(\"Unknown file format: %1\\n\").arg(ext));\n        return;\n    }\n    auto projectPath = ui->labelFinalPath->text();\n    auto root = QDir(projectPath).root();\n    if (!root.mkpath(projectPath)) {\n        ConsoleInterceptor::writeMessageTo(ui->log, tr(\"Cannot create project directory %1: %2\\n\").arg(projectPath));\n        return;\n    }\n    auto& p = ChildProcess::create(this)\n            .changeCWD(projectPath)\n            .mergeStdOutAndErr()\n            // TODO\n    ;\n    auto cmd = Mustache::renderTemplate(tcmd,\n    {\n        { \"url\", ui->editUrl->text() },\n        { \"path\", ui->labelFinalPath->text() },\n    });\n    p.start(cmd);\n    ui->log->clear();\n    setOperationInProgress(InProgress);\n    ConsoleInterceptor::writeMessageTo(ui->log, tr(\"Start downloading %1...\\n\").arg(urlText));\n    auto request = QNetworkRequest(QUrl(urlText));\n    request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);\n    auto reply = priv->net->get(request);\n    if (reply) {\n        auto updateProgress = [this](qint64 r, qint64 t) {\n            if (t == -1) {\n                ui->progressBar->setRange(0, 0);\n                ui->progressBar->setValue(0);\n                ConsoleInterceptor::writeMessageTo(ui->log, tr(\"Downloading: %1 bytes\\n\").arg(r));\n            } else if (t == 0) {\n                ui->progressBar->setValue(0);\n            } else {\n                ui->progressBar->setValue(percent(r, t));\n            }\n        };\n        auto onRedirect = [this](const QUrl& url) {\n            ConsoleInterceptor::writeMessageTo(ui->log, tr(\"Redirect: %1\\n\").arg(url.toString()));\n        };\n        auto onError = [this, reply](QNetworkReply::NetworkError) {\n            ConsoleInterceptor::writeMessageTo(ui->log, tr(\"ERROR: %1\\n\").arg(reply->errorString()));\n            setOperationInProgress(FinishError);\n            reply->deleteLater();\n        };\n        auto onFinish = [this, reply]() {\n            setOperationInProgress(FinishOk);\n            ConsoleInterceptor::writeMessageTo(ui->log, tr(\"\\nFinished\"));\n            reply->deleteLater();\n        };\n        auto finalizeRequest = [this]() {\n            ui->progressBar->setRange(0, 100);\n            ui->progressBar->reset();\n        };\n        connect(reply, &QNetworkReply::downloadProgress, updateProgress);\n        connect(reply, &QNetworkReply::redirected, onRedirect);\n        connect(reply, qOverload<QNetworkReply::NetworkError>(&QNetworkReply::error), onError);\n        connect(reply, &QNetworkReply::finished, onFinish);\n        connect(reply, &QObject::destroyed, finalizeRequest);\n    }\n}\n\nvoid NewProjectFromRemoteDialog::setOperationInProgress(ProcessStatus status)\n{\n    priv->status = status;\n    switch (status) {\n    case NotStarted:\n        ui->buttonDownload->setEnabled(true);\n        ui->buttonClose->setText(tr(\"Close\"));\n        break;\n    case InProgress:\n        ui->buttonDownload->setEnabled(false);\n        ui->buttonClose->setText(tr(\"Cancel\"));\n        break;\n    case FinishOk:\n        ui->buttonDownload->setEnabled(true);\n        ui->buttonDownload->setText(tr(\"Open Project\"));\n        ui->buttonClose->setText(tr(\"Close\"));\n        break;\n    case FinishError:\n        ui->buttonDownload->setEnabled(true);\n        ui->buttonDownload->setText(tr(\"Retry\"));\n        setOperationInProgress(NotStarted);\n        break;\n    }\n}\n\nQString NewProjectFromRemoteDialog::filterOut(const QString &text)\n{\n    static const QRegularExpression re(R\"(\\b(\\d+)\\s*\\%)\");\n    auto it = re.globalMatch(text);\n    while (it.hasNext()) {\n        auto m = it.next();\n        auto p = m.captured(1).toInt();\n        ui->progressBar->setRange(0, 100);\n        ui->progressBar->setValue(p);\n    }\n    return text;\n}\n"
  },
  {
    "path": "ide/newprojectfromremotedialog.h",
    "content": "#ifndef NEWPROJECTFROMREMOTEDIALOG_H\n#define NEWPROJECTFROMREMOTEDIALOG_H\n\n#include <QDialog>\n\n#include <memory>\n\nnamespace Ui {\nclass NewProjectFromRemoteDialog;\n}\n\nclass NewProjectFromRemoteDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit NewProjectFromRemoteDialog(QWidget *parent = nullptr);\n    virtual ~NewProjectFromRemoteDialog() override;\n\n    QString projectPath() const;\n\nprivate slots:\n    void startDownload();\n    void cancelAll();\n\nsignals:\n    void cancelRequests();\n\nprivate:\n    Ui::NewProjectFromRemoteDialog *ui;\n    struct Priv_t;\n    std::unique_ptr<Priv_t> priv;\n\n    enum ProcessStatus {\n        NotStarted,\n        InProgress,\n        FinishOk,\n        FinishError,\n    };\n\n    void handleArchiveType();\n    void setOperationInProgress(ProcessStatus status);\n    QString filterOut(const QString& text);\n};\n\n#endif // NEWPROJECTFROMREMOTEDIALOG_H\n"
  },
  {
    "path": "ide/newprojectfromremotedialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>NewProjectFromRemoteDialog</class>\n <widget class=\"QDialog\" name=\"NewProjectFromRemoteDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>592</width>\n    <height>436</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Dialog</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QLineEdit\" name=\"editUrl\">\n       <property name=\"placeholderText\">\n        <string>URL</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"downloadMethod\">\n       <property name=\"text\">\n        <string>...</string>\n       </property>\n       <property name=\"popupMode\">\n        <enum>QToolButton::InstantPopup</enum>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QLineEdit\" name=\"editName\">\n     <property name=\"placeholderText\">\n      <string>Project Name</string>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n     <item>\n      <widget class=\"QLineEdit\" name=\"editPath\">\n       <property name=\"placeholderText\">\n        <string>Project PATH</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"openFolderButton\">\n       <property name=\"icon\">\n        <iconset resource=\"resources/iconactions.qrc\">\n         <normaloff>:/images/light/actions/document-open.svg</normaloff>:/images/light/actions/document-open.svg</iconset>\n       </property>\n       <property name=\"popupMode\">\n        <enum>QToolButton::InstantPopup</enum>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupBox\">\n     <property name=\"title\">\n      <string>Project location</string>\n     </property>\n     <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n      <item>\n       <widget class=\"QLabel\" name=\"labelFinalPath\">\n        <property name=\"text\">\n         <string/>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QProgressBar\" name=\"progressBar\"/>\n   </item>\n   <item>\n    <widget class=\"QTextBrowser\" name=\"log\"/>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n     <item>\n      <widget class=\"QPushButton\" name=\"buttonClose\">\n       <property name=\"text\">\n        <string>Close</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"buttonDownload\">\n       <property name=\"text\">\n        <string>Download</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"resources/iconactions.qrc\"/>\n </resources>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ide/plaintexteditor.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"formfindreplace.h\"\n#include \"plaintexteditor.h\"\n#include \"textmessagebrocker.h\"\n\n#include <QDomDocument>\n#include <Qsci/qscistyle.h>\n#include <Qsci/qscilexer.h>\n\n#include <QFile>\n#include <QMenu>\n#include <QMessageBox>\n#include <QRegularExpression>\n#include <QtDebug>\n#include <QCloseEvent>\n\n#include <cmath>\n\nPlainTextEditor::PlainTextEditor(QWidget *parent) : QsciScintilla(parent)\n{\n    loadConfig();\n    connect(&AppConfig::instance(), &AppConfig::configChanged, this, &PlainTextEditor::loadConfig);\n    connect(this, &QsciScintilla::linesChanged, this, &PlainTextEditor::adjustLineNumberMargin);\n    connect(this, &QsciScintilla::cursorPositionChanged,\n            [this](int line, int col) { notifyCursorOvserver(line + 1, col + 1); });\n    connect(this, &QsciScintilla::selectionChanged, [this](){\n        auto editorLength = SendScintilla(SCI_GETLENGTH);\n        SendScintilla(SCI_SETINDICATORCURRENT, 0);\n        SendScintilla(SCI_INDICATORCLEARRANGE, 0, editorLength);\n        auto word = selectedText();\n        if (!word.isEmpty()) {\n            int endpos = 0;\n            auto startpos = 0;\n            startpos = findText(word, SCFIND_WHOLEWORD, startpos, &endpos);\n            while(startpos != -1) {\n                SendScintilla(SCI_INDICATORFILLRANGE,\n                              static_cast<unsigned long>(startpos),\n                              endpos - startpos);\n                startpos = findText(word, SCFIND_WHOLEWORD, endpos + 1, &endpos);\n            }\n        }\n    });\n    connect(this, &PlainTextEditor::modificationChanged, [this]() {\n        notifyModifyObservers();\n    });\n    connect(this, &PlainTextEditor::userListActivated,\n            [this](int id, const QString& text) {\n        Q_UNUSED(id)\n        auto position = static_cast<unsigned long>(SendScintilla(SCI_GETCURRENTPOS));\n        auto start = SendScintilla(SCI_WORDSTARTPOSITION, position, true);\n        auto end = SendScintilla(SCI_WORDENDPOSITION, position, true);\n        SendScintilla(SCI_SETSELECTIONSTART, start);\n        SendScintilla(SCI_SETSELECTIONEND, end);\n        SendScintilla(SCI_REPLACESEL, textAsBytes(text).constData());\n        SendScintilla(SCI_GOTOPOS, start + text.length());\n    });\n\n    auto findDialog = new FormFindReplace(this);\n    findDialog->hide();\n\n    TextMessageBrocker::instance().subscribe(TextMessages::DEBUG_IP_CHANGE,\n                                             [this](const QString& msg) {\n        QRegularExpression re(R\"((.+?)\\:(\\d+))\");\n        auto m = re.match(msg);\n        if (m.hasMatch()) {\n            auto file = m.captured(1);\n            auto line = m.captured(2).toInt();\n            this->setCursor(QPoint{ line, 0 });\n            if (file == this->path()) {\n                markerAdd(line, SC_MARK_BACKGROUND);\n            } else {\n                markerDeleteAll(SC_MARK_BACKGROUND);\n            }\n        }\n    });\n\n    auto mkAction = [this](const auto& keycode, const auto& functor) {\n        auto acc = new QAction(this);\n        acc->setShortcut(QKeySequence(keycode));\n        connect(acc, &QAction::triggered, functor);\n        addAction(acc);\n    };\n    mkAction(\"ctrl+s\", [this]() { save(path()); });\n    mkAction(\"ctrl+r\", [this]() { load(path()); });\n    mkAction(\"ctrl+space\", [this]() { triggerAutocompletion(); });\n    mkAction(\"ctrl+f\", [findDialog]() { findDialog->show(); });\n}\n\nPlainTextEditor::~PlainTextEditor() = default;\n\n// NPP detect indent from nppIndenture writed by Evan King\n// https://github.com/evan-king/nppIndenture\n// Licenced by GPL-3.0\nnamespace npp_detectident {\n\nconstexpr auto MIN_INDENT = 2; // minimum width of a single indentation\nconstexpr auto MAX_INDENT = 8; // maximum width of a single indentation\n\nconstexpr auto MIN_DEPTH = MIN_INDENT; // ignore lines below this indentation level\nconstexpr auto MAX_DEPTH = 3*MAX_INDENT; // ignore lines beyond this indentation level\n\n// % of lines allowed to contradict indentation option without penalty\nconstexpr auto GRACE_FREQUENCY = 1 / 50.0F;\n\nstruct ParseResult {\n    int num_tab_lines = 0;\n    int num_space_lines = 0;\n    float grace = 0.0F;\n\n    // indentation => count(lines of that exact indentation)\n    std::array<int, MAX_DEPTH+1> depth_counts = { { 0 } };\n};\n\nParseResult parseDocument(QsciScintilla *doc) {\n    ParseResult result;\n\n    const int num_lines = doc->lines();\n    result.grace = float(num_lines) * GRACE_FREQUENCY;\n    for(int i = 0; i < num_lines; ++i) {\n        const auto depth = static_cast<decltype (result.depth_counts)::size_type>(doc->indentation(i));\n        if(depth < MIN_DEPTH || depth > MAX_DEPTH)\n            continue;\n\n        auto pos = doc->SendScintilla(QsciScintilla::SCI_POSITIONFROMLINE, i);\n        auto lineHeadChar = doc->SendScintilla(QsciScintilla::SCI_GETCHARAT, pos);\n\n        if(lineHeadChar == '\\t') result.num_tab_lines++;\n\n        if(lineHeadChar == ' ') {\n            result.num_space_lines++;\n            result.depth_counts.at(depth)++;\n        }\n    }\n\n    return result;\n}\n\nstruct IndentInfo {\n    enum class IndentType { Invalid, Space, Tab };\n\n    IndentType type = IndentType::Invalid;\n    int num = 0;\n};\n\nIndentInfo detectIndentInfo(QsciScintilla *doc) {\n\n    const ParseResult result = parseDocument(doc);\n    IndentInfo info;\n\n    // decide `type`\n    if(result.num_tab_lines + result.num_space_lines == 0)\n        info.type = IndentInfo::IndentType::Invalid;\n    else if(result.num_space_lines > (result.num_tab_lines * 4))\n        info.type = IndentInfo::IndentType::Space;\n    else if(result.num_tab_lines > (result.num_space_lines * 4))\n        info.type = IndentInfo::IndentType::Tab;\n    /*else\n        {\n            const auto sci = plugin.getSciCallFunctor();\n            const bool useTab = sci.call<bool>(SCI_GETUSETABS);\n            info.type = useTab ? IndentType::Tab : IndentType::Space;\n        }*/\n\n    // decide `num`\n    if(info.type == IndentInfo::IndentType::Space) {\n\n        // indent size => count(space-indented lines with incompatible indentation)\n        std::array<int, MAX_INDENT+1> margins = {0};\n        using margins_size = decltype (margins)::size_type;\n\n        // for each depth option, count the incompatible lines\n        for(margins_size i = MIN_DEPTH; i <= MAX_DEPTH; i++) {\n            for(margins_size k = MIN_INDENT; k <= MAX_INDENT; k++) {\n                if(i % k == 0)\n                    continue;\n                margins.at(k) += result.depth_counts.at(i);\n            }\n        }\n\n        // choose the last indent with the smallest margin (ties go to larger indent)\n        // Considers margins within grace of zero as =zero,\n        // so occasional typos don't force smaller indentation\n        margins_size which = MIN_INDENT;\n        for(margins_size i = MIN_INDENT; i <= MAX_INDENT; ++i) {\n            if(result.depth_counts.at(i) == 0) continue;\n            if(margins.at(i) <= margins.at(which) || margins.at(i) < result.grace) which = i;\n        }\n\n        info.num = static_cast<int>(which);\n    }\n\n    return info;\n}\n\n}\n\nbool PlainTextEditor::load(const QString &path)\n{\n    QFile f(path);\n    if (f.open(QFile::ReadOnly)) {\n        if (read(&f)) {\n            setPath(path);\n            loadConfig();\n            if (AppConfig::instance().editorDetectIdent()) {\n                auto info = npp_detectident::detectIndentInfo(this);\n                if (info.type == npp_detectident::IndentInfo::IndentInfo::IndentType::Tab) {\n                    setIndentationsUseTabs(true);\n                } else if (info.type == npp_detectident::IndentInfo::IndentInfo::IndentType::Space) {\n                    setIndentationsUseTabs(false);\n                    setIndentationWidth(info.num);\n                } else {\n                    // Nothing to do... fallback to config\n                }\n            }\n            return true;\n        }\n    }\n    return false;\n}\n\nbool PlainTextEditor::save(const QString &path)\n{\n    QFile f(path);\n    if (f.open(QFile::WriteOnly)) {\n        if (write(&f)) {\n            setPath(path);\n            setModified(false);\n            return true;\n        }\n    }\n    return false;\n}\n\nvoid PlainTextEditor::reload()\n{\n    QFile f(path());\n    if (f.open(QFile::ReadOnly)) {\n        auto c = cursor();\n        read(&f);\n        setCursor(c);\n        setModified(false);\n    }\n}\n\nbool PlainTextEditor::isReadonly() const\n{\n    return QsciScintilla::isReadOnly();\n}\n\nvoid PlainTextEditor::setReadonly(bool rdOnly)\n{\n    QsciScintilla::setReadOnly(rdOnly);\n}\n\nbool PlainTextEditor::isModified() const\n{\n    return QsciScintilla::isModified();\n}\n\nvoid PlainTextEditor::setModified(bool m)\n{\n    QsciScintilla::setModified(m);\n}\n\nQPoint PlainTextEditor::cursor() const\n{\n    int line;\n    int col;\n    getCursorPosition(&line, &col);\n    return {col, line};\n}\n\nvoid PlainTextEditor::setCursor(const QPoint &pos)\n{\n    setCursorPosition(pos.y() - 1, pos.x());\n}\n\nclass PlainTextEditorCreator: public IDocumentEditorCreator\n{\npublic:\n    ~PlainTextEditorCreator() override;\n    bool canHandleMime(const QMimeType &mime) const override {\n        return mime.inherits(\"text/plain\");\n    }\n\n    IDocumentEditor *create(QWidget *parent = nullptr) const override {\n        return new PlainTextEditor(parent);\n    }\n};\nPlainTextEditorCreator::~PlainTextEditorCreator() = default;\n\nIDocumentEditorCreator *PlainTextEditor::creator()\n{\n    return IDocumentEditorCreator::staticCreator<PlainTextEditorCreator>();\n}\n\nQString PlainTextEditor::wordUnderCursor() const\n{\n    int line;\n    int col;\n    getCursorPosition(&line, &col);\n    return wordAtLineIndex(line, col);\n}\n\nQString PlainTextEditor::lineUnderCursor() const\n{\n    int line;\n    int col;\n    getCursorPosition(&line, &col);\n    return text(line);\n}\n\nvoid PlainTextEditor::adjustLineNumberMargin()\n{\n    QFontMetrics m(font());\n#if QT_VERSION >= QT_VERSION_CHECK(5, 11, 0)\n    setMarginWidth(0, m.horizontalAdvance(QString().fill('0', 2 + static_cast<int>(std::log10(lines())))));\n#else\n    setMarginWidth(0, m.width(QString().fill('0', 2 + static_cast<int>(std::log10(lines())))));\n#endif\n}\n\nint PlainTextEditor::findText(const QString &text, int flags, int start, int *targend)\n{\n    ScintillaBytes s = textAsBytes(text);\n    auto endpos = SendScintilla(SCI_GETLENGTH);\n    SendScintilla(SCI_SETSEARCHFLAGS, flags);\n    SendScintilla(SCI_SETTARGETSTART, start);\n    SendScintilla(SCI_SETTARGETEND, endpos);\n\n    auto pos = SendScintilla(SCI_SEARCHINTARGET,\n                             static_cast<unsigned long>(s.length()),\n                             ScintillaBytesConstData(s));\n    if (pos == -1)\n        return -1;\n    auto targstart = static_cast<int>(SendScintilla(SCI_GETTARGETSTART));\n    *targend = static_cast<int>(SendScintilla(SCI_GETTARGETEND));\n    return targstart;\n}\n\nvoid PlainTextEditor::closeEvent(QCloseEvent *event)\n{\n    if (isModified()) {\n        QMessageBox messageBox(QMessageBox::Question,\n                               tr(\"Document Modified\"),\n                               tr(\"The document is not save. Save it?\"),\n                               QMessageBox::Yes | QMessageBox::No | QMessageBox::Abort,\n                               this);\n        messageBox.setButtonText(QMessageBox::Yes, tr(\"Yes\"));\n        messageBox.setButtonText(QMessageBox::No, tr(\"No\"));\n        messageBox.setButtonText(QMessageBox::Abort, tr(\"Abort\"));\n        int r = messageBox.exec();\n        switch (r) {\n        case QMessageBox::Yes:\n            save(windowFilePath());\n            break;\n        case QMessageBox::Abort:\n            event->ignore();\n            break;\n        case QMessageBox::No:\n            break;\n        }\n    }\n}\n\nvoid PlainTextEditor::contextMenuEvent(QContextMenuEvent *event)\n{\n    Q_UNUSED(event)\n    createContextualMenu()->exec(event->globalPos());\n}\n\nvoid PlainTextEditor::loadConfigWithStyle(const QString& styleName, const QFont& editorFont, int tabs, bool tabsToSpace)\n{\n    loadStyle(QString(\":/styles/%1.xml\").arg(styleName));\n    setFont(editorFont);\n    if (lexer()) {\n        lexer()->setDefaultFont(editorFont);\n        lexer()->setFont(editorFont);\n    }\n    setIndentationsUseTabs(!tabsToSpace);\n    setTabWidth(tabs);\n    if (AppConfig::instance().editorShowSpaces()) {\n        setWhitespaceVisibility(WsVisible);\n        setTabDrawMode(TabLongArrow);\n    }\n\n    setAutoIndent(true);\n    setBraceMatching(StrictBraceMatch);\n    resetMatchedBraceIndicator();\n    setBackspaceUnindents(true);\n    setFolding(CircledTreeFoldStyle);\n    setIndentationGuides(true);\n\n    setCaretLineVisible(true);\n    setMarginsFont(font());\n    setMarginLineNumbers(0, true);\n    // setMarginsBackgroundColor(QColor(\"#cccccc\"));\n\n    SendScintilla(SCI_SETMULTIPLESELECTION, 1L, 0L);\n    SendScintilla(SCI_SETADDITIONALSELECTIONTYPING, 1L, 0L);\n\n    setMarginSensitivity(1, true);\n    markerDefine(QsciScintilla::Circle, SC_MARK_CIRCLE);\n    markerDefine(QsciScintilla::RightArrow, SC_MARK_ARROW);\n    markerDefine(QsciScintilla::Background, SC_MARK_BACKGROUND);\n    // setMargins(3);\n    static constexpr auto CIRCLE_BG_COLOR = 0x1111ee;\n    static constexpr auto ARROW_BG_COLOR = 0xee1111;\n    setMarkerBackgroundColor(QColor(CIRCLE_BG_COLOR), SC_MARK_CIRCLE);\n    setMarkerBackgroundColor(QColor(ARROW_BG_COLOR), SC_MARK_ARROW);\n    setAnnotationDisplay(AnnotationIndented);\n    adjustLineNumberMargin();\n\n    constexpr auto INDIC_COLOR = 255;\n    SendScintilla(SCI_INDICSETSTYLE, 0, INDIC_ROUNDBOX);\n    SendScintilla(SCI_INDICSETFORE, 0, INDIC_COLOR);\n    auto fg = color();\n    auto bg = paper();\n    if (AppConfig::instance().editorShowSpaces()) {\n        setWhitespaceBackgroundColor(bg);\n        setWhitespaceForegroundColor(fg);\n        setIndentationGuidesBackgroundColor(bg);\n        setIndentationGuidesForegroundColor(fg);\n    }\n}\n\nvoid PlainTextEditor::loadConfig()\n{\n    auto &conf = AppConfig::instance();\n    loadConfigWithStyle(conf.editorStyle(), conf.editorFont(), conf.editorTabWidth(), conf.editorTabsToSpaces());\n}\n\nbool PlainTextEditor::loadStyle(const QString &xmlStyleFile)\n{\n    QFile file(xmlStyleFile);\n    if (!file.open(QFile::ReadOnly)) {\n        qDebug() << \"cannot load\" << xmlStyleFile << \"style:\" << file.errorString();\n        return false;\n    }\n    QDomDocument doc;\n    QString errorMsg;\n    int eLine; int eCol;\n    if (!doc.setContent(&file, &errorMsg, &eLine, &eCol)) {\n        qDebug() << \"cannot load\" << xmlStyleFile\n                 << \"style:\" << errorMsg\n                 << \"at\" << eLine << \":\" << eCol;\n        return false;\n    }\n    QDomElement root = doc.firstChildElement(\"NotepadPlus\");\n    if (root.isNull()) {\n        qDebug() << \"cannot load\" << xmlStyleFile << \"not contain NotepadPlus tag\";\n        return false;\n    }\n    {\n        QDomElement globalStyles = root.firstChildElement(\"GlobalStyles\");\n        if (globalStyles.isNull()) {\n            qDebug() << \"cannot load\" << xmlStyleFile << \"not GlobalStyles\";\n            return false;\n        }\n        QDomElement wStyle = globalStyles.firstChildElement(\"WidgetStyle\");\n        while (!wStyle.isNull()) {\n            QString name = wStyle.attribute(\"name\");\n            int styleID = wStyle.attribute(\"styleID\", \"-1\").toInt();\n            QColor fgColor = QColor(QString(\"#%1\").arg(wStyle.attribute(\"fgColor\")));\n            QColor bgColor = QColor(QString(\"#%1\").arg(wStyle.attribute(\"bgColor\")));\n            //QString fontName = wStyle.attribute(\"fontName\");\n            int fontStyle = wStyle.attribute(\"fontStyle\", \"0\").toInt();\n            //int fontSize = wStyle.attribute(\"fontSize\", QString(\"%1\").arg(font().pixelSize())).toInt();\n            if (styleID == 0) {\n                if (name == \"Global override\") {\n                    setColor(fgColor);\n                    setPaper(bgColor);\n                    goto set_global;\n                } else if (name == \"Default Style\") {\n                    setColor(fgColor);\n                    setPaper(bgColor);\n                    goto set_global;\n                } else if (name == \"Current line background colour\") {\n                    setCaretLineBackgroundColor(bgColor);\n                } else if (name == \"Selected text colour\") {\n                    setSelectionBackgroundColor(bgColor);\n                } else if (name == \"Edge colour\") {\n                    setEdgeColor(fgColor);\n                } else if (name == \"Fold\") {\n                    // setFoldMarginColors(fgColor, bgColor);\n                } else if (name == \"Fold active\") {\n                } else if (name == \"Fold margin\") {\n                    setFoldMarginColors(fgColor, bgColor);\n                } else if (name == \"White space symbol\") {\n                    setWhitespaceForegroundColor(fgColor);\n                    setWhitespaceBackgroundColor(paper());\n                } else if (name == \"Active tab focused indicator\") {\n                } else if (name == \"Active tab unfocused indicator\") {\n                } else if (name == \"Active tab text\") {\n                } else if (name == \"Inactive tabs\") {\n                }\n            } else {\nset_global:\n                QsciStyle style(styleID);\n                if (fgColor.isValid())\n                    style.setColor(fgColor);\n                if (bgColor.isValid())\n                    style.setPaper(bgColor);\n                QFont f(font());\n                //if (!fontName.isEmpty() && QFont(fontName).family() == fontName)\n                //    f.setFamily(fontName);\n                //if (fontSize > 0)\n                //    f.setPixelSize(fontSize);\n                if (fontStyle&1)\n                    f.setBold(true);\n                if (fontStyle&2)\n                    f.setItalic(true);\n                if (fontStyle&4)\n                    f.setUnderline(true);\n                style.setFont(f);\n\n                style.apply(this);\n            }\n            if (name == \"Caret colour\") {\n                setCaretForegroundColor(fgColor);\n            }\n            wStyle = wStyle.nextSiblingElement(\"WidgetStyle\");\n        }\n    }\n    if (lexer()) {\n        QString currentLexerName = lexer()->lexer();\n        QString currentLexerDesc = lexer()->language();\n        QDomElement lexerStyles = root.firstChildElement(\"LexerStyles\");\n        if (!lexerStyles.isNull()) {\n            QDomElement lType = lexerStyles.firstChildElement(\"LexerType\");\n            while (!lType.isNull()) {\n                QString lexerName = lType.attribute(\"name\");\n                QString lexerDesc = lType.attribute(\"desc\");\n                if (lexerName == currentLexerName || lexerDesc == currentLexerDesc) {\n                    QDomElement wStyle = lType.firstChildElement(\"WordsStyle\");\n                    while (!wStyle.isNull()) {\n                        QString name = wStyle.attribute(\"name\");\n                        int styleID = wStyle.attribute(\"styleID\", \"-1\").toInt();\n                        if (!name.isEmpty() && styleID != -1) {\n                            QColor fgColor = QColor(QString(\"#%1\").arg(wStyle.attribute(\"fgColor\")));\n                            QColor bgColor = QColor(QString(\"#%1\").arg(wStyle.attribute(\"bgColor\")));\n                            //QString fontName = wStyle.attribute(\"fontName\");\n                            int fontStyle = wStyle.attribute(\"fontStyle\", \"0\").toInt();\n                            //int fontSize = wStyle.attribute(\"fontSize\", QString(\"%1\").arg(font().pixelSize())).toInt();\n                            QsciStyle style(styleID);\n                            if (fgColor.isValid())\n                                style.setColor(fgColor);\n                            if (bgColor.isValid())\n                                style.setPaper(bgColor);\n                            QFont f(font());\n                            //if (!fontName.isEmpty() && QFont(fontName).family() == fontName)\n                            //    f.setFamily(fontName);\n                            //if (fontSize > 0)\n                            //    f.setPixelSize(fontSize);\n                            if (fontStyle&1)\n                                f.setBold(true);\n                            if (fontStyle&2)\n                                f.setItalic(true);\n                            if (fontStyle&4)\n                                f.setUnderline(true);\n                            style.setFont(f);\n\n                            style.apply(this);\n                        }\n                        wStyle = wStyle.nextSiblingElement(\"WordsStyle\");\n                    }\n                    break;\n                }\n                lType = lType.nextSiblingElement(\"LexerType\");\n            }\n        } else\n            qDebug() << \"No styles element\";\n    }\n    return true;\n}\n\nQStringList PlainTextEditor::allWords()\n{\n    QStringList words;\n    QString s = text();\n    QRegularExpression re(R\"(\\b\\w+\\b)\");\n    auto mi = re.globalMatch(s);\n    while (mi.hasNext())\n        words.append(mi.next().captured());\n    return words;\n}\n\nvoid PlainTextEditor::triggerAutocompletion()\n{\n    int _;\n    if (!apiContext(int(SendScintilla(SCI_GETCURRENTPOS)), _, _).isEmpty())\n        autoCompleteFromDocument();\n    else {\n        showUserList(1, allWords());\n    }\n}\n\nQMenu *PlainTextEditor::createContextualMenu()\n{\n    auto m = new QMenu(this);\n    bool isSelected = !selectedText().isEmpty();\n    bool canPaste = static_cast<bool>(SendScintilla(SCI_CANPASTE));\n    auto mkAction = [m](const auto& en, const auto& icon, const auto& text, const auto& keys, const auto &functor) {\n        auto a = m->addAction(QIcon(AppConfig::resourceImage({ \"actions\", icon })), text, functor);\n        a->setShortcut(QKeySequence(keys));\n        a->setEnabled(en);\n    };\n    mkAction(isUndoAvailable(), \"edit-undo\", tr(\"Undo\"), \"Ctrl+Z\", [this]() { undo(); });\n    mkAction(isRedoAvailable(), \"edit-redo\", tr(\"Redo\"), \"Ctrl+Shift+Z\", [this]() { redo(); });\n    m->addSeparator();\n    mkAction(isSelected, \"edit-cut\", tr(\"Cut\"), \"Ctrl+X\", [this]() { cut(); });\n    mkAction(isSelected, \"edit-copy\", tr(\"Copy\"), \"Ctrl+C\", [this]() { copy(); });\n    mkAction(canPaste, \"edit-paste\", tr(\"Paste\"), \"Ctrl+V\", [this]() { paste(); });\n    mkAction(isSelected, \"edit-delete\", tr(\"Delete\"), \"DEL\", [this]() { removeSelectedText(); });\n    m->addSeparator();\n    mkAction(true, \"edit-select-all\", tr(\"Select All\"), \"CTRL+A\", [this]() { selectAll(); });\n\n    return m;\n}\n"
  },
  {
    "path": "ide/plaintexteditor.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef PLAINTEXTEDITOR_H\n#define PLAINTEXTEDITOR_H\n\n#include <idocumenteditor.h>\n#include <Qsci/qsciscintilla.h>\n\nclass PlainTextEditor : public IDocumentEditor, public QsciScintilla\n{\npublic:\n    explicit PlainTextEditor(QWidget *parent = nullptr);\n    ~PlainTextEditor() override;\n\n    const QWidget *widget() const override { return this; }\n    QWidget *widget() override { return this; }\n    bool load(const QString &path) override;\n    bool save(const QString &path) override;\n    void reload() override;\n    virtual bool isReadonly() const override;\n    void setReadonly(bool rdOnly) override;\n    bool isModified() const override;\n    void setModified(bool m) override;\n    QPoint cursor() const override;\n    void setCursor(const QPoint &pos) override;\n\n    static IDocumentEditorCreator *creator();\n\n    QString wordUnderCursor() const;\n    QString lineUnderCursor() const;\n\n    virtual void triggerAutocompletion();\n\npublic slots:\n    void loadConfigWithStyle(const QString& style, const QFont &editorFont, int tabs, bool tabsToSpace);\n    void loadConfig();\n\nprivate slots:\n    void adjustLineNumberMargin();\n    int findText(const QString &text, int flags, int start, int *targend);\n\nprotected:\n    void closeEvent(QCloseEvent *event) override;\n    void contextMenuEvent(QContextMenuEvent *event) override;\n\n    bool loadStyle(const QString &xmlStyleFile);\n    QStringList allWords();\n\n    virtual QMenu *createContextualMenu();\n};\n\n#endif // PLAINTEXTEDITOR_H\n"
  },
  {
    "path": "ide/processlinebufferizer.cpp",
    "content": "#include \"processlinebufferizer.h\"\n\n#include <QProcess>\n\nProcessLineBufferizer::ProcessLineBufferizer(Channel ch, QProcess *parent) : QObject(parent)\n{\n    if (ch == StderrChannel) {\n        connect(parent, &QProcess::readyReadStandardError, this, [this, parent]() {\n            pushData(parent->readAllStandardError());\n        });\n    } else if (ch == StdoutChannel) {\n        connect(parent, &QProcess::readyReadStandardOutput, this, [this, parent]() {\n            pushData(parent->readAllStandardOutput());\n        });\n    } else if (ch == MergedChannel) {\n        parent->setProcessChannelMode(QProcess::MergedChannels);\n        connect(parent, &QProcess::readyRead, this, [this, parent]() {\n            pushData(parent->readAll());\n        });\n    }\n}\n\nvoid ProcessLineBufferizer::pushData(const QString &text)\n{\n    m_buffer.append(text);\n    int idx = m_buffer.lastIndexOf('\\n');\n    if (idx != -1) {\n        auto line = m_buffer.mid(0, idx + 1);\n        emit haveLine(line);\n        m_buffer.remove(0, idx + 1);\n    }\n}\n\nvoid ProcessLineBufferizer::flush()\n{\n    emit haveLine(m_buffer);\n    m_buffer.clear();\n}\n"
  },
  {
    "path": "ide/processlinebufferizer.h",
    "content": "#ifndef PROCESSLINEBUFFERIZER_H\n#define PROCESSLINEBUFFERIZER_H\n\n#include <QObject>\n\nclass QProcess;\n\nclass ProcessLineBufferizer : public QObject\n{\n    Q_OBJECT\npublic:\n    enum Channel {\n        StdoutChannel, StderrChannel, MergedChannel\n    };\n\n    explicit ProcessLineBufferizer(Channel ch, QProcess *parent = nullptr);\n\n    const QString& buffer() const { return m_buffer; }\n\npublic slots:\n    void pushData(const QString &text);\n    void flush();\n\nsignals:\n    void haveLine(const QString& line);\n\nprivate:\n    QString m_buffer;\n};\n\n#endif // PROCESSLINEBUFFERIZER_H\n"
  },
  {
    "path": "ide/processmanager.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"processmanager.h\"\n\n#ifdef Q_OS_UNIX\n#include <csignal>\n\n#elif defined(Q_OS_WIN)\n// #error TODO windows unsupported kill method\n#else\n#error Unsupported kill method\n#endif\n\n#include <QtDebug>\n\nProcessManager::ProcessManager(QObject *parent) :\n    QObject(parent)\n{\n}\n\nProcessManager::~ProcessManager() {}\n\nQProcess *ProcessManager::processFor(const QString &name)\n{\n    auto proc = findChild<QProcess*>(name);\n    if (!proc) {\n        proc = new QProcess(this);\n        proc->setObjectName(name);\n        proc->setTextModeEnabled(true);\n    }\n    return proc;\n}\n\nvoid ProcessManager::setTerminationHandler(const QString &name, const ProcessManager::terminationHandler_t& func)\n{\n    auto proc = processFor(name);\n    connect(proc, QOverload<int, QProcess::ExitStatus>::of(&QProcess::finished),\n            [proc, func](int exitCode, QProcess::ExitStatus exitStatus) {\n        func(proc, exitCode, exitStatus);\n    });\n}\n\nvoid ProcessManager::setStartupHandler(const QString &name, const ProcessManager::startupHandler_t& func)\n{\n    auto proc = processFor(name);\n    connect(proc, &QProcess::started, [proc, func]() { func(proc); });\n}\n\nvoid ProcessManager::setErrorHandler(const QString &name, const ProcessManager::errorHandler_t& func)\n{\n    auto proc = processFor(name);\n    connect(proc, &QProcess::errorOccurred, [proc, func](QProcess::ProcessError error) { func(proc, error); });\n}\n\nvoid ProcessManager::setStderrInterceptor(const QString &name, const ProcessManager::outputHandler_t& func)\n{\n    auto proc = processFor(name);\n    connect(proc, &QProcess::readyReadStandardError, [proc, func]() { func(proc, QString(proc->readAllStandardError())); });\n}\n\nvoid ProcessManager::setStdoutInterceptor(const QString &name, const ProcessManager::outputHandler_t& func)\n{\n    auto proc = processFor(name);\n    connect(proc, &QProcess::readyReadStandardOutput, [proc, func]() { func(proc, QString(proc->readAllStandardOutput())); });\n}\n\nvoid ProcessManager::start(const QString &name, const QString &command, const QStringList &args, const QHash<QString,QString> &extraEnv, const QString &workingDir)\n{\n    auto proc = processFor(name);\n    if (!extraEnv.isEmpty()) {\n        auto env = QProcessEnvironment::systemEnvironment();\n        for (auto it = extraEnv.begin(); it != extraEnv.end(); it++)\n            env.insert(it.key(), it.value());\n        proc->setProcessEnvironment(env);\n    }\n    proc->setWorkingDirectory(workingDir);\n    auto penv = proc->processEnvironment().toStringList();\n    qDebug() << \"START:\" << command << args << penv;\n    proc->start(command, args);\n}\n\nbool ProcessManager::terminate(const QString &name, bool canKill, int timeout)\n{\n    auto proc = processFor(name);\n#ifdef Q_OS_UNIX\n    ::kill(pid_t(proc->pid()), SIGINT);\n#elif defined(Q_OS_WIN)\n    proc->terminate();\n#endif\n    if (!proc->waitForFinished(timeout)) {\n        if (canKill) {\n            proc->kill();\n            return true;\n        } \n            return false;\n    } \n        return true;\n}\n"
  },
  {
    "path": "ide/processmanager.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef PROCESSMANAGER_H\n#define PROCESSMANAGER_H\n\n#include <QObject>\n#include <QProcess>\n\n#include <functional>\n\nclass ProcessManager : public QObject\n{\n    Q_OBJECT\n    Q_DISABLE_COPY(ProcessManager)\npublic:\n    typedef std::function<void (QProcess *, const QString&)> outputHandler_t;\n    typedef std::function<void (QProcess *, int, QProcess::ExitStatus)> terminationHandler_t;\n    typedef std::function<void (QProcess *)> startupHandler_t;\n    typedef std::function<void (QProcess *, QProcess::ProcessError)> errorHandler_t;\n\n    explicit ProcessManager(QObject *parent = nullptr);\n    virtual ~ProcessManager();\n\n    QProcess *processFor(const QString& name);\n\n    void setTerminationHandler(const QString& name, const terminationHandler_t& func);\n    void setStartupHandler(const QString& name, const startupHandler_t& func);\n    void setErrorHandler(const QString& name, const errorHandler_t& func);\n    void setStderrInterceptor(const QString& name, const outputHandler_t& func);\n    void setStdoutInterceptor(const QString& name, const outputHandler_t& func);\n\n    bool isRunning(const QString& name) { return processFor(name)->state() == QProcess::Running; }\n\npublic slots:\n    void start(const QString& name, const QString& command, const QStringList& args = {}, const QHash<QString, QString> &extraEnv = {}, const QString& workingDir = QString());\n    bool terminate(const QString& name, bool canKill = false, int timeout = 3000);\n\nsignals:\n};\n\n#endif // PROCESSMANAGER_H\n"
  },
  {
    "path": "ide/projectmanager.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"buildmanager.h\"\n#include \"childprocess.h\"\n#include \"findandopenfiledialog.h\"\n#include \"icodemodelprovider.h\"\n#include \"processmanager.h\"\n#include \"projectmanager.h\"\n#include \"regexhtmltranslator.h\"\n#include \"textmessagebrocker.h\"\n\n#include <QBuffer>\n#include <QFileInfo>\n#include <QFileSystemModel>\n#include <QGridLayout>\n#include <QHeaderView>\n#include <QLabel>\n#include <QListView>\n#include <QProcess>\n#include <QPushButton>\n#include <QRegularExpression>\n#include <QStandardItemModel>\n#include <QStandardPaths>\n#include <QTemporaryDir>\n#include <QTimer>\n#include <QTreeView>\n\n#include <QtDebug>\n\n\nconstexpr size_t operator \"\" _KB(unsigned long long size) { return static_cast<size_t>(size * 1024); }\nconstexpr size_t operator \"\" _MB(unsigned long long size) { return static_cast<size_t>(size * 1024 * 1024); }\nconstexpr size_t operator \"\" _GB(unsigned long long size) { return static_cast<size_t>(size * 1024 * 1024 * 1024); }\n\nconstexpr auto TARGETVIEW_ICON_SIZE = QSize(16, 16);\n\nconst QString SPACE_SEPARATORS = R\"(\\s)\";\nconst QString DISCOVER_PROC = \"makeDiscover\";\nconst QString EXPORT_PROC = \"exporter\";\n\nusing targetMap_t = QHash<QString, QStringList>;\n\nclass ProjectManager::Priv_t {\npublic:\n    QStringList targets;\n    targetMap_t allTargets;\n    targetMap_t allRefs;\n    QRegularExpression targetFilter{ R\"(^(?!Makefile)[a-zA-Z0-9_\\\\-]+$)\", QRegularExpression::MultilineOption };\n    QListView *targetView{ nullptr };\n    ProcessManager *pman{ nullptr };\n    QFileInfo makeFile;\n    ICodeModelProvider *codeModelProvider{ nullptr };\n    QTimer clearMessageTimer;\n\n    void doCloseProject() {\n        allTargets.clear();\n        targets.clear();\n\n        if (targetView->model())\n            targetView->model()->deleteLater();\n        targetView->setModel(new QStandardItemModel(targetView));\n\n        if (pman->isRunning(DISCOVER_PROC))\n            pman->terminate(DISCOVER_PROC, true);\n        makeFile = QFileInfo();\n\n        for(auto *p: pman->findChildren<QProcess*>())\n            ChildProcess::safeStop(p);\n    }\n};\n\nstatic QPair<targetMap_t, targetMap_t> findAllTargets(QIODevice *in)\n{\n    QPair<targetMap_t, targetMap_t> map;\n    QRegularExpression re(R\"(^([^\\#\\s][^\\%\\=]*?):[^\\=]\\s*([^#\\r\\n]*?)\\s*$)\");\n    while (!in->atEnd()) {\n        auto line = in->readLine();\n        if (line.startsWith(\"# Not a target:\")) {\n            in->readLine();\n            in->readLine();\n            line = in->readLine();\n        }\n        auto me = re.match(line);\n        if (me.hasMatch()) {\n            auto tgt = me.captured(1);\n            auto depsText = me.captured(2);\n            auto deps = depsText.split(' ');\n            map.first[tgt].append(deps);\n            for(const auto& a: deps)\n                map.second[a].append(tgt);\n        }\n    }\n    return map;\n}\n\nProjectManager::ProjectManager(QListView *view, ProcessManager *pman, QObject *parent) :\n    QObject(parent),\n    priv(std::make_unique<Priv_t>())\n{\n    priv->targetView = view;\n    priv->targetView->setModel(new QStandardItemModel(priv->targetView));\n    priv->pman = pman;\n\n    connect(&AppConfig::instance(), &AppConfig::configChanged, [view]() {\n        for(auto *button: view->findChildren<QPushButton*>())\n            button->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", \"run-build\" })));\n    });\n\n    TextMessageBrocker::instance().subscribe(\"findAndOpen\", [this](const QString& path) {\n        auto files = FindAndOpenFileDialog::findFilesInPath(path, projectPath());\n        if (files.length() == 1) {\n            requestFileOpen(files.first());\n        } else {\n            FindAndOpenFileDialog d(priv->targetView->window());\n            d.setFileList(projectPath(), files);\n            if (d.exec()) {\n                requestFileOpen(d.selectedFile());\n            }\n        }\n    });\n\n    auto label = new QLabel(view);\n    auto g = new QGridLayout(view);\n    g->addWidget(label, 1, 1);\n    g->setRowStretch(0, 1);\n    g->setColumnStretch(0, 1);\n    TextMessageBrocker::instance().subscribe(TextMessages::ACTION_LABEL, [label](const QString& s) {\n        label->setVisible(!s.isEmpty());\n        label->setText(s);\n    });\n    connect(&priv->clearMessageTimer, &QTimer::timeout, [this]() { clearMessage(); });\n    priv->pman->setTerminationHandler(DISCOVER_PROC, [this](QProcess *make, int code, QProcess::ExitStatus status) {\n        Q_UNUSED(code)\n        if (status == QProcess::NormalExit) {\n            auto res = findAllTargets(make);\n            priv->allTargets = res.first;\n            priv->allRefs = res.second;\n            const auto targetKeys = priv->allTargets.keys();\n            priv->targets = targetKeys.filter(priv->targetFilter);\n            priv->targets.sort();\n            auto targetModel = qobject_cast<QStandardItemModel*>(priv->targetView->model());\n            if (targetModel) {\n                for(auto& t: priv->targets) {\n                    auto item = new QStandardItem;\n                    auto button = new QPushButton;\n                    auto name = QString(t).replace('_', ' ');\n                    targetModel->appendRow(item);\n                    button->setIcon(QIcon(AppConfig::resourceImage({ \"actions\", \"run-build\" })));\n                    button->setIconSize(TARGETVIEW_ICON_SIZE);\n                    button->setText(name);\n                    button->setStyleSheet(\"text-align: left; padding: 4px;\");\n                    priv->targetView->setIndexWidget(item->index(), button);\n                    item->setSizeHint(button->sizeHint());\n                    connect(button, &QPushButton::clicked, [t, this](){ emit targetTriggered(t); });\n                }\n            }\n        }\n        showMessageTimed(tr(\"Finish target discover\"));\n    });\n}\n\nProjectManager::~ProjectManager()\n{\n}\n\nQString ProjectManager::projectName() const\n{\n    return priv->makeFile.absoluteDir().dirName();\n}\n\nQString ProjectManager::projectPath() const\n{\n    return priv->makeFile.canonicalPath();\n}\n\nQString ProjectManager::projectFile() const\n{\n    return priv->makeFile.canonicalFilePath();\n}\n\nbool ProjectManager::isProjectOpen() const\n{\n    return priv? priv->makeFile.exists() : false;\n}\n\nICodeModelProvider *ProjectManager::codeModel() const\n{\n    return priv->codeModelProvider;\n}\n\nvoid ProjectManager::setCodeModelProvider(ICodeModelProvider *modelProvider)\n{\n    priv->codeModelProvider = modelProvider;\n}\n\nQStringList ProjectManager::dependenciesForTarget(const QString &target)\n{\n    return priv->allTargets.value(target);\n}\n\nQStringList ProjectManager::targetsOfDependency(const QString &dep)\n{\n    return priv->allRefs.value(dep);\n}\n\nvoid ProjectManager::createProject(const QString& projectFilePath, const QString& templateFile)\n{\n    AppConfig::ensureExist(projectFilePath);\n    auto onStartCb = [templateFile](QProcess *p)\n    {\n        p->write(templateFile.toLocal8Bit());\n        p->closeWriteChannel();\n    };\n    auto onFinishCb = [this, projectFilePath](QProcess *p, int exitCode) {\n        Q_UNUSED(p)\n        TextMessageBrocker::instance().publish(TextMessages::STDOUT_LOG, tr(\"Diff terminate. Exit code %1\").arg(exitCode));\n        openProject(QDir(projectFilePath).filePath(\"Makefile\"));\n    };\n    auto onErrCb = [](QProcess *p, QProcess::ProcessError err) {\n        Q_UNUSED(err)\n        TextMessageBrocker::instance().publish(TextMessages::STDERR_LOG, tr(\"Diff error: %1\").arg(p->errorString()));\n    };\n    auto& p = ChildProcess::create(this)\n            .makeDeleteLater()\n            .changeCWD(projectFilePath)\n            .onStarted(onStartCb)\n            .onFinished(onFinishCb)\n            .onError(onErrCb);\n    p.start(\"patch\", { \"-p1\" });\n    deleteOnCloseProject(&p);\n}\n\nvoid ProjectManager::createProjectFromTGZ(const QString &projectFilePath, const QString &tgzFile)\n{\n    AppConfig::ensureExist(projectFilePath);\n    auto onFinishCb = [this, projectFilePath](QProcess *p, int exitCode) {\n        Q_UNUSED(p)\n        TextMessageBrocker::instance().publish(TextMessages::STDOUT_LOG, tr(\"tar terminate. Exit code %1\").arg(exitCode));\n        openProject(QDir(projectFilePath).filePath(\"Makefile\"));\n    };\n    auto onErrCb = [](QProcess *p, QProcess::ProcessError err) {\n        Q_UNUSED(err)\n        TextMessageBrocker::instance().publish(TextMessages::STDERR_LOG, tr(\"tar error: %1\").arg(p->errorString()));\n    };\n    auto& p = ChildProcess::create(this)\n        .makeDeleteLater()\n        .changeCWD(projectFilePath)\n        .onFinished(onFinishCb)\n        .onError(onErrCb);\n    p.start(\"tar\", { \"-x\", \"-v\", \"-z\", \"-f\", tgzFile, \"-C\", projectFilePath });\n    deleteOnCloseProject(&p);\n}\n\nvoid ProjectManager::exportCurrentProjectTo(const QString &fileName)\n{\n    if (QFileInfo(fileName).suffix().compare(\"template\", Qt::CaseInsensitive) == 0) {\n        exportToDiff(fileName);\n    } else {\n        exportToTarGz(fileName);\n    }\n}\n\nvoid ProjectManager::exportToDiff(const QString &patchFile)\n{\n    auto tmpDir = QDir(QDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)).filePath(QString(\"%1-empty\").arg(projectName())));\n    if (!tmpDir.exists())\n        QDir::root().mkpath(tmpDir.absolutePath());\n    priv->pman->setTerminationHandler(EXPORT_PROC, [this, tmpDir, patchFile](QProcess *p, int code, QProcess::ExitStatus status) {\n        Q_UNUSED(code)\n        QDir::root().rmpath(tmpDir.absolutePath());\n        if (status == QProcess::NormalExit) {\n            QFile f(patchFile);\n            if (f.open(QFile::WriteOnly)) {\n                auto BLOCK_SIZE = 1024_KB;\n                p->setCurrentReadChannel(QProcess::StandardOutput);\n                while (p->bytesAvailable() > 0)\n                    f.write(p->read(BLOCK_SIZE));\n                f.close();\n            }\n            if (f.error() == QFile::NoError)\n                emit exportFinish(tr(\"Export sucessfull\"));\n            else\n                emit exportFinish(f.errorString());\n        } else\n            emit exportFinish(p->errorString());\n        p->deleteLater();\n    });\n    priv->pman->setStderrInterceptor(EXPORT_PROC, [](QProcess* p, const QString& text) {\n        QString s{ text };\n        TextMessageBrocker::instance()\n            .publish(TextMessages::STDERR_LOG,\n                     RegexHTMLTranslator::CONSOLE_TRANSLATOR(p, s));\n    });\n    priv->pman->start(EXPORT_PROC, \"diff\", { \"-N\", \"-u\", \"-r\", tmpDir.absolutePath(), \".\" }, {}, projectPath());\n    TextMessageBrocker::instance()\n        .publish(TextMessages::STDOUT_LOG,\n                 tr(R\"(<font color=\"blue\">Exporting to %1</font><br>)\").arg(patchFile));\n}\n\nvoid ProjectManager::exportToTarGz(const QString &tgzFile)\n{\n    priv->pman->start(BuildManager::PROCESS_NAME, \"tar\", { \"-c\", \"-z\", \"-v\", \"-f\", tgzFile, \".\" }, {}, projectPath());\n    TextMessageBrocker::instance()\n        .publish(TextMessages::STDOUT_LOG,\n                 tr(R\"(<font color=\"blue\">Exporting to %1</font><br>)\").arg(tgzFile));\n}\n\nvoid ProjectManager::openProject(const QString &makefile)\n{\n    auto doOpenProject = [makefile, this]() {\n        priv->pman->start(DISCOVER_PROC,\n                          \"make\",\n                          { \"-B\", \"-p\", \"-r\", \"-n\", \"-f\", makefile },\n                          { { \"LC_ALL\", \"C\" }, /*{ \"LANG\", \"C\" }*/ },\n                          QFileInfo(makefile).absolutePath());\n        priv->makeFile = QFileInfo(makefile);\n        emit projectOpened(makefile);\n        showMessageTimed(tr(\"Discovering targets...\"));\n        constexpr auto DO_OPEN_DELAY_MS = 100;\n        QTimer::singleShot(DO_OPEN_DELAY_MS, [this]() {\n            priv->codeModelProvider->startIndexingProject(projectPath(), [this] {\n                emit indexFinished();\n            });\n        });\n    };\n\n    // FIXME: Unnecesary if force to close project after open other\n    if (isProjectOpen()) {\n        auto con = connect(this, &ProjectManager::projectClosed, doOpenProject);\n        connect(this, &ProjectManager::projectClosed, [con]() { disconnect(con); });\n        closeProject();\n    } else\n        doOpenProject();\n}\n\nvoid ProjectManager::closeProject()\n{\n    priv->doCloseProject();\n    emit projectClosed();\n}\n\nvoid ProjectManager::reloadProject()\n{\n    auto project = projectFile();\n    priv->doCloseProject();\n    openProject(project);\n}\n\nvoid ProjectManager::showMessage(const QString &msg)\n{\n    priv->clearMessageTimer.stop();\n    TextMessageBrocker::instance().publish(TextMessages::ACTION_LABEL, msg);\n}\n\nvoid ProjectManager::showMessageTimed(const QString &msg, int millis)\n{\n    showMessage(msg);\n    clearMessageTimed(millis);\n}\n\nvoid ProjectManager::clearMessage()\n{\n    TextMessageBrocker::instance().publish(TextMessages::ACTION_LABEL, {});\n}\n\nvoid ProjectManager::clearMessageTimed(int millis)\n{\n    priv->clearMessageTimer.setInterval(millis);\n    QMetaObject::invokeMethod(&priv->clearMessageTimer, \"start\");\n}\n"
  },
  {
    "path": "ide/projectmanager.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef PROJECTMANAGER_H\n#define PROJECTMANAGER_H\n\n#include <QObject>\n#include <QVariant>\n#include <QFile>\n\n#include <memory>\n\nclass QListView;\n\nclass ProcessManager;\nclass ICodeModelProvider;\n\nclass ProjectManager : public QObject\n{\n    Q_OBJECT\n    Q_DISABLE_COPY(ProjectManager)\npublic:\n    explicit ProjectManager(QListView *view, ProcessManager *pman, QObject *parent = nullptr);\n    virtual ~ProjectManager() override;\n\n    QString projectName() const;\n    QString projectPath() const;\n    QString projectFile() const;\n    bool isProjectOpen() const;\n    ICodeModelProvider *codeModel() const;\n    void setCodeModelProvider(ICodeModelProvider *modelProvider);\n\n    QStringList dependenciesForTarget(const QString& target);\n    QStringList targetsOfDependency(const QString& dep);\n\n    void deleteOnCloseProject(QObject *p) {\n        connect(this, &ProjectManager::projectClosed, p, &QObject::deleteLater);\n    }\n\nsignals:\n    void projectOpened(const QString& makePath);\n    void projectClosed();\n    void targetTriggered(const QString& target);\n    void requestFileOpen(const QString& path);\n    void exportFinish(const QString& exportMessage);\n    void indexFinished();\n\npublic slots:\n    void createProject(const QString& projectFilePath, const QString& templateFile);\n    void createProjectFromTGZ(const QString& projectFilePath, const QString& tgzFile);\n    void exportCurrentProjectTo(const QString& fileName);\n    void exportToDiff(const QString &patchFile);\n    void exportToTarGz(const QString &tgzFile);\n    void openProject(const QString& makefile);\n    void closeProject();\n    void reloadProject();\n\n    void showMessage(const QString& msg);\n    void showMessageTimed(const QString& msg, int millis = 3000);\n    void clearMessage();\n    void clearMessageTimed(int millis = 3000);\n\nprivate:\n    class Priv_t;\n    std::unique_ptr<Priv_t> priv;\n};\n\n#endif // PROJECTMANAGER_H\n"
  },
  {
    "path": "ide/regexhtmltranslator.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"regexhtmltranslator.h\"\n\n#include <QtDebug>\n\ntemplate<typename T>\nstatic RegexEntry mkEntry(const QString& r, const T& h) {\n    return RegexEntry{QRegularExpression{ r, QRegularExpression::MultilineOption }, QLatin1String{ h } };\n}\n\nconst RegexList_t RegexHTMLTranslator::DEFAULT_REGEX =\n    {\n    mkEntry(R\"((\\r?\\n))\", \"\\\\1<br>\"),\n    mkEntry(R\"( )\", \"&nbsp;\"),\n    };\n\nRegexHTMLTranslator RegexHTMLTranslator::CONSOLE_TRANSLATOR{};\n\nQString &RegexHTMLTranslator::operator()(QProcess *p, QString &s)\n{\n    Q_UNUSED(p);\n    s = s.toHtmlEscaped();\n    for(const auto& e: regexs) {\n        // qDebug() << \"AFTER\" << s;\n        s.replace(e.re, e.html);\n        // qDebug() << \"BEFORE\" << s;\n    }\n    return s;\n}\n"
  },
  {
    "path": "ide/regexhtmltranslator.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef REGEXHTMLTRANSLATOR_H\n#define REGEXHTMLTRANSLATOR_H\n\n#include <QColor>\n#include <QList>\n#include <QRegularExpression>\n\nclass QProcess;\n\nstruct RegexEntry {\n    QRegularExpression re;\n    QLatin1String html;\n};\n\nusing RegexList_t = QList<RegexEntry>;\n\nclass RegexHTMLTranslator\n{\npublic:\n\n    RegexHTMLTranslator(const RegexList_t& reList) : regexs(reList) { }\n    RegexHTMLTranslator() : regexs(DEFAULT_REGEX) { }\n\n    QString& operator()(QProcess *p, QString& s);\n\n    static const RegexList_t DEFAULT_REGEX;\n    static RegexHTMLTranslator CONSOLE_TRANSLATOR;\nprivate:\n    RegexList_t regexs;\n};\n\n#endif // REGEXHTMLTRANSLATOR_H\n"
  },
  {
    "path": "ide/resources/default-global.json",
    "content": "{\n    \"workspacePath\": \"${HOME}/.embedded_ide-workspace\"\n}\n"
  },
  {
    "path": "ide/resources/default-local.json",
    "content": "{\n        \"additionalPaths\": [\n            \"${APPLICATION_DIR_PATH}\"\n        ],\n        \"editor\": {\n            \"font\": {\n                \"name\": \"Ubuntu Mono\",\n                \"size\": 12\n            },\n            \"formatterStyle\": \"linux\",\n            \"saveOnAction\": false,\n            \"style\": \"Default\",\n            \"tabWidth\": 4,\n            \"tabsOnSpaces\": true\n        },\n        \"externalTools\": {\n        },\n        \"history\": [ ],\n        \"lang\": \"\",\n        \"logger\": {\n            \"font\": {\n                \"name\": \"Ubuntu Mono\",\n                \"size\": 10\n            }\n        },\n        \"network\": {\n            \"proxy\": {\n                \"host\": \"\",\n                \"pass\": \"\",\n                \"port\": \"\",\n                \"type\": \"None\",\n                \"useCredentials\": false,\n                \"user\": \"\"\n            }\n        },\n        \"numberOfJobs\": 1,\n        \"numberOfJobsOptimal\": false,\n        \"templates\": {\n            \"autoUpdate\": true,\n            \"url\": \"https://api.github.com/repos/ciaa/EmbeddedIDE-templates/contents\"\n        },\n        \"useDarkStyle\": false,\n        \"useDevelopMode\": false\n}\n"
  },
  {
    "path": "ide/resources/fonts.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n        <file>fonts/FiraCode-Bold.ttf</file>\n        <file>fonts/FiraCode-Light.ttf</file>\n        <file>fonts/FiraCode-Medium.ttf</file>\n        <file>fonts/FiraCode-Regular.ttf</file>\n        <file>fonts/FiraCode-Retina.ttf</file>\n        <file>fonts/UbuntuMono-B.ttf</file>\n        <file>fonts/UbuntuMono-BI.ttf</file>\n        <file>fonts/UbuntuMono-R.ttf</file>\n        <file>fonts/UbuntuMono-RI.ttf</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "ide/resources/iconactions.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n        <file>images/light/actions/application-exit.svg</file>\n        <file>images/light/actions/application-menu.svg</file>\n        <file>images/light/actions/archive-remove.svg</file>\n        <file>images/light/actions/code-block.svg</file>\n        <file>images/light/actions/code-class.svg</file>\n        <file>images/light/actions/code-context.svg</file>\n        <file>images/light/actions/code-function.svg</file>\n        <file>images/light/actions/code-typedef.svg</file>\n        <file>images/light/actions/code-variable.svg</file>\n        <file>images/light/actions/configure.svg</file>\n        <file>images/light/actions/debug.svg</file>\n        <file>images/light/actions/debug-execute-from-cursor.svg</file>\n        <file>images/light/actions/debug-execute-to-cursor.svg</file>\n        <file>images/light/actions/debug-init.svg</file>\n        <file>images/light/actions/debug-pause-v2.svg</file>\n        <file>images/light/actions/debug-run.svg</file>\n        <file>images/light/actions/debug-run-cursor.svg</file>\n        <file>images/light/actions/debug-run-v2.svg</file>\n        <file>images/light/actions/debug-step-instruction.svg</file>\n        <file>images/light/actions/debug-step-into.svg</file>\n        <file>images/light/actions/debug-step-into-instruction.svg</file>\n        <file>images/light/actions/debug-step-into-v2.svg</file>\n        <file>images/light/actions/debug-step-out.svg</file>\n        <file>images/light/actions/debug-step-out-v2.svg</file>\n        <file>images/light/actions/debug-step-over.svg</file>\n        <file>images/light/actions/debug-step-over-v2.svg</file>\n        <file>images/light/actions/debug-stop-v2.svg</file>\n        <file>images/light/actions/deletecell.svg</file>\n        <file>images/light/actions/dialog-cancel.svg</file>\n        <file>images/light/actions/dialog-close.svg</file>\n        <file>images/light/actions/dialog-ok-apply.svg</file>\n        <file>images/light/actions/document-close.svg</file>\n        <file>images/light/actions/document-close-all.svg</file>\n        <file>images/light/actions/document-export.svg</file>\n        <file>images/light/actions/document-import.svg</file>\n        <file>images/light/actions/document-new.svg</file>\n        <file>images/light/actions/document-new-from-template.svg</file>\n        <file>images/light/actions/document-open.svg</file>\n        <file>images/light/actions/document-save.svg</file>\n        <file>images/light/actions/document-save-all.svg</file>\n        <file>images/light/actions/document-save-as.svg</file>\n        <file>images/light/actions/edit-clear.svg</file>\n        <file>images/light/actions/edit-copy.svg</file>\n        <file>images/light/actions/edit-cut.svg</file>\n        <file>images/light/actions/edit-delete.svg</file>\n        <file>images/light/actions/edit-download.svg</file>\n        <file>images/light/actions/edit-find.svg</file>\n        <file>images/light/actions/edit-find-replace.svg</file>\n        <file>images/light/actions/edit-paste.svg</file>\n        <file>images/light/actions/edit-redo.svg</file>\n        <file>images/light/actions/edit-select-all.svg</file>\n        <file>images/light/actions/edit-undo.svg</file>\n        <file>images/light/actions/folder-new.svg</file>\n        <file>images/light/actions/go-down.svg</file>\n        <file>images/light/actions/go-next.svg</file>\n        <file>images/light/actions/go-previous.svg</file>\n        <file>images/light/actions/go-up.svg</file>\n        <file>images/light/actions/help-about.svg</file>\n        <file>images/light/actions/insert-link-symbolic.svg</file>\n        <file>images/light/actions/list-add.svg</file>\n        <file>images/light/actions/list-remove.svg</file>\n        <file>images/light/actions/media-playback-pause.svg</file>\n        <file>images/light/actions/media-playback-start.svg</file>\n        <file>images/light/actions/media-playback-stop.svg</file>\n        <file>images/light/actions/run-build.svg</file>\n        <file>images/light/actions/run-build-clean.svg</file>\n        <file>images/light/actions/run-build-configure.svg</file>\n        <file>images/light/actions/run-build-file.svg</file>\n        <file>images/light/actions/run-build-install.svg</file>\n        <file>images/light/actions/run-build-install-root.svg</file>\n        <file>images/light/actions/run-build-prune.svg</file>\n        <file>images/light/actions/view-refresh.svg</file>\n        <file>images/light/actions/window-close.svg</file>\n        <file>images/light/actions/window-new.svg</file>\n        <file>images/light/actions/zoom-fit-best.svg</file>\n        <file>images/light/actions/zoom-in.svg</file>\n        <file>images/light/actions/zoom-out.svg</file>\n        <file>images/dark/actions/application-exit.svg</file>\n        <file>images/dark/actions/application-menu.svg</file>\n        <file>images/dark/actions/archive-remove.svg</file>\n        <file>images/dark/actions/code-block.svg</file>\n        <file>images/dark/actions/code-class.svg</file>\n        <file>images/dark/actions/code-context.svg</file>\n        <file>images/dark/actions/code-function.svg</file>\n        <file>images/dark/actions/code-typedef.svg</file>\n        <file>images/dark/actions/code-variable.svg</file>\n        <file>images/dark/actions/configure.svg</file>\n        <file>images/dark/actions/debug.svg</file>\n        <file>images/dark/actions/debug-execute-from-cursor.svg</file>\n        <file>images/dark/actions/debug-execute-to-cursor.svg</file>\n        <file>images/dark/actions/debug-init.svg</file>\n        <file>images/dark/actions/debug-pause-v2.svg</file>\n        <file>images/dark/actions/debug-run.svg</file>\n        <file>images/dark/actions/debug-run-cursor.svg</file>\n        <file>images/dark/actions/debug-run-v2.svg</file>\n        <file>images/dark/actions/debug-step-instruction.svg</file>\n        <file>images/dark/actions/debug-step-into.svg</file>\n        <file>images/dark/actions/debug-step-into-instruction.svg</file>\n        <file>images/dark/actions/debug-step-into-v2.svg</file>\n        <file>images/dark/actions/debug-step-out.svg</file>\n        <file>images/dark/actions/debug-step-out-v2.svg</file>\n        <file>images/dark/actions/debug-step-over.svg</file>\n        <file>images/dark/actions/debug-step-over-v2.svg</file>\n        <file>images/dark/actions/debug-stop-v2.svg</file>\n        <file>images/dark/actions/deletecell.svg</file>\n        <file>images/dark/actions/dialog-cancel.svg</file>\n        <file>images/dark/actions/dialog-close.svg</file>\n        <file>images/dark/actions/dialog-ok-apply.svg</file>\n        <file>images/dark/actions/document-close.svg</file>\n        <file>images/dark/actions/document-close-all.svg</file>\n        <file>images/dark/actions/document-export.svg</file>\n        <file>images/dark/actions/document-import.svg</file>\n        <file>images/dark/actions/document-new.svg</file>\n        <file>images/dark/actions/document-new-from-template.svg</file>\n        <file>images/dark/actions/document-open.svg</file>\n        <file>images/dark/actions/document-save.svg</file>\n        <file>images/dark/actions/document-save-all.svg</file>\n        <file>images/dark/actions/document-save-as.svg</file>\n        <file>images/dark/actions/edit-clear.svg</file>\n        <file>images/dark/actions/edit-copy.svg</file>\n        <file>images/dark/actions/edit-cut.svg</file>\n        <file>images/dark/actions/edit-delete.svg</file>\n        <file>images/dark/actions/edit-download.svg</file>\n        <file>images/dark/actions/edit-find.svg</file>\n        <file>images/dark/actions/edit-find-replace.svg</file>\n        <file>images/dark/actions/edit-paste.svg</file>\n        <file>images/dark/actions/edit-redo.svg</file>\n        <file>images/dark/actions/edit-select-all.svg</file>\n        <file>images/dark/actions/edit-undo.svg</file>\n        <file>images/dark/actions/folder-new.svg</file>\n        <file>images/dark/actions/go-down.svg</file>\n        <file>images/dark/actions/go-next.svg</file>\n        <file>images/dark/actions/go-previous.svg</file>\n        <file>images/dark/actions/go-up.svg</file>\n        <file>images/dark/actions/help-about.svg</file>\n        <file>images/dark/actions/insert-link-symbolic.svg</file>\n        <file>images/dark/actions/list-add.svg</file>\n        <file>images/dark/actions/list-remove.svg</file>\n        <file>images/dark/actions/media-playback-pause.svg</file>\n        <file>images/dark/actions/media-playback-start.svg</file>\n        <file>images/dark/actions/media-playback-stop.svg</file>\n        <file>images/dark/actions/run-build.svg</file>\n        <file>images/dark/actions/run-build-clean.svg</file>\n        <file>images/dark/actions/run-build-configure.svg</file>\n        <file>images/dark/actions/run-build-file.svg</file>\n        <file>images/dark/actions/run-build-install.svg</file>\n        <file>images/dark/actions/run-build-install-root.svg</file>\n        <file>images/dark/actions/run-build-prune.svg</file>\n        <file>images/dark/actions/view-refresh.svg</file>\n        <file>images/dark/actions/window-close.svg</file>\n        <file>images/dark/actions/window-new.svg</file>\n        <file>images/dark/actions/zoom-fit-best.svg</file>\n        <file>images/dark/actions/zoom-in.svg</file>\n        <file>images/dark/actions/zoom-out.svg</file>\n        <file>images/light/index.theme</file>\n        <file>images/dark/index.theme</file>\n        <file>images/light/actions/dialog-ok.svg</file>\n        <file>images/dark/actions/dialog-ok.svg</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "ide/resources/images/dark/index.theme",
    "content": "[Icon Theme]\nName=Dark\nComment=Icon theme dark\nDirectories=actions\n\n[actions]\nSize=22\nType=Scalable\nMinSize=1\nMaxSize=256\nContext=Actions\n"
  },
  {
    "path": "ide/resources/images/light/index.theme",
    "content": "[Icon Theme]\nName=Dark\nComment=Icon theme dark\nDirectories=actions\n\n[actions]\nSize=22\nType=Scalable\nMinSize=1\nMaxSize=256\nContext=Actions\n"
  },
  {
    "path": "ide/resources/kinds.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n        <file>images/light/categories/class.svg</file>\n        <file>images/light/categories/enum.svg</file>\n        <file>images/light/categories/function.svg</file>\n        <file>images/light/categories/macro.svg</file>\n        <file>images/light/categories/unknown.svg</file>\n        <file>images/light/categories/variable.svg</file>\n        <file>images/dark/categories/class.svg</file>\n        <file>images/dark/categories/enum.svg</file>\n        <file>images/dark/categories/function.svg</file>\n        <file>images/dark/categories/macro.svg</file>\n        <file>images/dark/categories/unknown.svg</file>\n        <file>images/dark/categories/variable.svg</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "ide/resources/mimetypes.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n        <file>images/light/mimetypes/application-x-executable-script.svg</file>\n        <file>images/light/mimetypes/application-x-java.svg</file>\n        <file>images/light/mimetypes/application-x-javascript.svg</file>\n        <file>images/light/mimetypes/application-x-m4.svg</file>\n        <file>images/light/mimetypes/application-x-python-bytecode.svg</file>\n        <file>images/light/mimetypes/application-x-zerosize.svg</file>\n        <file>images/light/mimetypes/folder.svg</file>\n        <file>images/light/mimetypes/image-x-generic.svg</file>\n        <file>images/light/mimetypes/inode-directory.svg</file>\n        <file>images/light/mimetypes/text-html.svg</file>\n        <file>images/light/mimetypes/text-markdown.svg</file>\n        <file>images/light/mimetypes/text-plain.svg</file>\n        <file>images/light/mimetypes/text-x-c++hdr.svg</file>\n        <file>images/light/mimetypes/text-x-c++src.svg</file>\n        <file>images/light/mimetypes/text-x-chdr.svg</file>\n        <file>images/light/mimetypes/text-x-csrc.svg</file>\n        <file>images/light/mimetypes/text-x-generic.svg</file>\n        <file>images/light/mimetypes/text-x-hex.svg</file>\n        <file>images/light/mimetypes/text-x-java.svg</file>\n        <file>images/light/mimetypes/text-x-javascript.svg</file>\n        <file>images/light/mimetypes/text-x-makefile.svg</file>\n        <file>images/light/mimetypes/text-x-markdown.svg</file>\n        <file>images/light/mimetypes/text-x-patch.svg</file>\n        <file>images/light/mimetypes/text-x-plain.svg</file>\n        <file>images/light/mimetypes/text-x-python.svg</file>\n        <file>images/light/mimetypes/text-x-readme.svg</file>\n        <file>images/light/mimetypes/text-x-script.svg</file>\n        <file>images/light/mimetypes/text-x-texinfo.svg</file>\n        <file>images/light/mimetypes/text-xml.svg</file>\n        <file>images/light/mimetypes/unknown.svg</file>\n        <file>images/dark/mimetypes/application-x-executable-script.svg</file>\n        <file>images/dark/mimetypes/application-x-java.svg</file>\n        <file>images/dark/mimetypes/application-x-javascript.svg</file>\n        <file>images/dark/mimetypes/application-x-m4.svg</file>\n        <file>images/dark/mimetypes/application-x-python-bytecode.svg</file>\n        <file>images/dark/mimetypes/application-x-zerosize.svg</file>\n        <file>images/dark/mimetypes/folder.svg</file>\n        <file>images/dark/mimetypes/image-x-generic.svg</file>\n        <file>images/dark/mimetypes/inode-directory.svg</file>\n        <file>images/dark/mimetypes/text-html.svg</file>\n        <file>images/dark/mimetypes/text-markdown.svg</file>\n        <file>images/dark/mimetypes/text-plain.svg</file>\n        <file>images/dark/mimetypes/text-x-c++hdr.svg</file>\n        <file>images/dark/mimetypes/text-x-c++src.svg</file>\n        <file>images/dark/mimetypes/text-x-chdr.svg</file>\n        <file>images/dark/mimetypes/text-x-csrc.svg</file>\n        <file>images/dark/mimetypes/text-x-generic.svg</file>\n        <file>images/dark/mimetypes/text-x-hex.svg</file>\n        <file>images/dark/mimetypes/text-x-java.svg</file>\n        <file>images/dark/mimetypes/text-x-javascript.svg</file>\n        <file>images/dark/mimetypes/text-x-makefile.svg</file>\n        <file>images/dark/mimetypes/text-x-markdown.svg</file>\n        <file>images/dark/mimetypes/text-x-patch.svg</file>\n        <file>images/dark/mimetypes/text-x-plain.svg</file>\n        <file>images/dark/mimetypes/text-x-python.svg</file>\n        <file>images/dark/mimetypes/text-x-readme.svg</file>\n        <file>images/dark/mimetypes/text-x-script.svg</file>\n        <file>images/dark/mimetypes/text-x-texinfo.svg</file>\n        <file>images/dark/mimetypes/text-xml.svg</file>\n        <file>images/dark/mimetypes/unknown.svg</file>\n        <file>images/light/mimetypes/archive.svg</file>\n        <file>images/light/mimetypes/git.svg</file>\n        <file>images/light/mimetypes/svn.svg</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "ide/resources/reference-code.c",
    "content": "#include <stdio.h>\n#include \"sys/sct.h\"\n\ntypedef int (*callback_t)(void *ptr, float h);\n\nenum type_t {\n    type1, type2, type3=3\n};\n\nstruct mystruct {\n    enum type_t type;\n    union {\n        int v_int;\n        char v_char;\n        long v_long:\n        short v_short;\n        void *v_ptr;\n        float v_float;\n        double v_double;\n    } value;\n};\n\nint main(int argc, char *argv[]) {\n    if (argc > 0) {\n        int i;\n        for (i=0; i<argc; i++) {\n            switch(argv[i][0]) {\n            case 'a': return -1; break;\n            case 'c': return -1; break;\n            default: return -1; break;\n            }\n        }\n    }\n    return 0;\n}\n"
  },
  {
    "path": "ide/resources/resources.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n    <file>images/light/screens/EmbeddedIDE_02.png</file>\n    <file>images/light/screens/EmbeddedIDE_02.svg</file>\n    <file>images/light/screens/EmbeddedIDE_02_es.svg</file>\n    <file>images/light/screens/EmbeddedIDE_02_es.png</file>\n    <file>images/light/embedded-ide-mono.svg</file>\n    <file>images/light/embedded-ide.ico</file>\n    <file>images/light/embedded-ide.png</file>\n    <file>images/light/embedded-ide.svg</file>\n    <file>images/dark/screens/EmbeddedIDE_02.png</file>\n    <file>images/dark/screens/EmbeddedIDE_02.svg</file>\n    <file>images/dark/screens/EmbeddedIDE_02_es.svg</file>\n    <file>images/dark/screens/EmbeddedIDE_02_es.png</file>\n    <file>images/dark/embedded-ide-mono.svg</file>\n    <file>images/dark/embedded-ide.ico</file>\n    <file>images/dark/embedded-ide.png</file>\n    <file>images/dark/embedded-ide.svg</file>\n    <file>default-global.json</file>\n    <file>default-local.json</file>\n    <file>reference-code.c</file>\n    <file>templates/empty.template</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "ide/resources/styles/Bespin.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nBespin\r\nCopyright (c) 2009 Oren Farhi, Orizen Designs - http://www.orizens.com\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"80FF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"37A8ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"37A8ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF82B0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER-DEFINED\" styleID=\"16\" fgColor=\"FF5555\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">the_ID the_post have_posts wp_link_pages the_content</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"37A3ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\">$_POST $_GET $_SESSION</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"BDAF9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"BDAF9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"37A3ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\">alert appendChild arguments array blur checked childNodes className confirm dialogArguments event focus getElementById getElementsByTagName innerHTML keyCode length location null number parentNode push RegExp replace selectNodes selectSingleNode setAttribute split src srcElement test undefined value window</WordsStyle>\r\n            <WordsStyle name=\"USER-DEFINED\" styleID=\"16\" fgColor=\"FF5555\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">XmlUtil loadXmlString TopologyXmlTree NotificationArea loadXmlFile debug</WordsStyle>\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"00FF40\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"00FF40\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"80FF00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"FFFF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\">import</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">import</WordsStyle>\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"80FF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"80FF00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"37A8ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"37A8ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"8080FF\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"FF8080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"00FF00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"9DF39F\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"BDAF9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"37A3ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\">ContentScroller</WordsStyle>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"37A3ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">onMotionChanged onMotionFinished Tween ImagesStrip ContentScroller mx transitions easing Sprite Point MouseEvent Event BitmapData Timer TimerEvent addEventListener event x y height width</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"80FF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"7E7E7E\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFF00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7E7E7E\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7E7E7E\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF0000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"2A211C\" bgColor=\"E5C138\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"37A3ED\" bgColor=\"4F3E35\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"4F3E35\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"4B3C34\" fgColor=\"CCFF33\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"83675A\" fgColor=\"C00000\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"37A8ED\" bgColor=\"80FF00\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" bgColor=\"2A211C\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"E5C138\" bgColor=\"4C4A41\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"6A5448\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" bgColor=\"00FF40\" fontSize=\"\" fontStyle=\"1\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"FF0080\" fgColor=\"555753\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"EDD400\" fgColor=\"CC0000\" fontName=\"\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" fgColor=\"FFFF80\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" fgColor=\"000000\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" fgColor=\"808080\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"808000\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"808080\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Black board.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nBlackboard\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"7F90AA\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"7F90AA\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"121830\" fgColor=\"0080C0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"253B76\" fgColor=\"8000FF\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" bgColor=\"F3F3F3\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Choco.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nchoco\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">ooooo</WordsStyle>\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"494949\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"494949\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"A8799C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"C29863\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"C29863\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"C29863\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"C29863\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"281711\" fgColor=\"0080C0\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"372017\" fgColor=\"8000FF\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"A7A7A7\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" bgColor=\"F3F3F3\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" bgColor=\"FF0000\" fontSize=\"\" fontStyle=\"1\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"EDD400\" fgColor=\"CC0000\" fontName=\"\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" fgColor=\"80D4B2\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" fgColor=\"3FBA89\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" fgColor=\"101010\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" fgColor=\"808080\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"972FFF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Deep Black.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nStyle Name:         Deep Black\r\nDescription:        Based on the theme Port VibrantInk by tyler\r\nFile name:          Deep Black.xml\r\nCreated by:         Mariusz Kasperkiewicz\r\nFeatured language:  SQL, C, C++, Pascal, Php, Css, JavaScript, Html, XML, others?\r\nNote:               Feel free to modify this style and re-release it. This style is available under the terms of the GNU Free License.\r\n\r\nKeep Notepad++ development active, donate!:\r\nhttp://sourceforge.net/donate/index.php?group_id=95717\r\n\r\n2009.05.28\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"707070\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"CCCCCC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"772CB7\" bgColor=\"070707\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"9933CC\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"99CC99\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFCC00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"FFFFFF\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"FFC000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"00FF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"80FF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"008000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"070707\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"808080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FF8040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"F8FEDE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"999966\" bgColor=\"FFEEEC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FCFFF0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"BCFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n\t\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FF8040\" bgColor=\"FFFFD9\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"9933CC\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"804040\" bgColor=\"E1FFF3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FF6600\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"99CC99\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"C0FFC0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"A08080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"FFF0D8\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"339999\" bgColor=\"ECFFEA\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"800080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CA6500\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"CA6500\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"804040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"SELECTED LINE\" styleID=\"6\" fgColor=\"FFFF80\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEARDER\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIT WORD\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"5\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"Comic Sans MS\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"9\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"9\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FF0000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"333333\" fgColor=\"0080C0\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"6699CC\" fgColor=\"CC0000\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" bgColor=\"253B76\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"C0C0C0\" bgColor=\"333333\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"6A6A6A\" bgColor=\"333333\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"1A1A1A\" bgColor=\"1A1A1A\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FF8080\" bgColor=\"EEEEEC\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"80FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"FF8000\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"0080FF\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"808080\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" bgColor=\"8000FF\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Default.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"8000FF\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"008000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FF0000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"000080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"808080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"000000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFC000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"8080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"baanc\" desc=\"BaanC\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"4\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTIONS\" styleID=\"10\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"808040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"2\" fgColor=\"004000\" bgColor=\"FCFDDB\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FF0080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"6\" fgColor=\"0000A0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"800040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL NC\" styleID=\"9\" fgColor=\"000000\" bgColor=\"E0C0E0\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FF8040\" bgColor=\"FFFFD9\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"008080\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"804040\" bgColor=\"E1FFF3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"0000FF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"FF0000\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FCFFF0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"804040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"8080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEWORD1\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEWORD2\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEWORD3\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEWORD4\" styleID=\"20\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEWORD5\" styleID=\"21\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEWORD6\" styleID=\"22\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"808040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"2E2E2E\" bgColor=\"FFFFFF\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran (free form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"800080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CA6500\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"CA6500\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"A6CAF0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ihex\" desc=\"Intel HEX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECSTART\" styleID=\"1\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE\" styleID=\"2\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE_UNKNOWN\" styleID=\"3\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT\" styleID=\"4\" fgColor=\"7F7F00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT_WRONG\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NOADDRESS\" styleID=\"6\" fgColor=\"7F00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATAADDRESS\" styleID=\"7\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!-- RECCOUNT 8 N/A -->\r\n            <WordsStyle name=\"STARTADDRESS\" styleID=\"9\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDRESSFIELD_UNKNOWN\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXTENDEDADDRESS\" styleID=\"11\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_ODD\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EVEN\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_UNKNOWN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EMPTY\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM\" styleID=\"16\" fgColor=\"00BF00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM_WRONG\" styleID=\"17\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GARBAGE\" styleID=\"18\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript (embedded)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF0000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"000080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"008000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"008000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"008080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript.js\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WINDOW INSTRUCTION\" styleID=\"19\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t    <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"000080\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"json\" desc=\"JSON\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"6\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE QUOTE\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN NULL\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"95004A\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"20\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"000080\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"808080\" bgColor=\"EEEEEE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"000080\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FDFFEC\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FF8000\" bgColor=\"EFEFEF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"F8FEDE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"8080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"8080C0\" bgColor=\"FFEEEC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"808080\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FF0000\" bgColor=\"FDF8E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"000000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"0000FF\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF8000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"000080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"008000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"008000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"8000FF\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"COMMENT STREAM\" styleID=\"13\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE STRING\" styleID=\"14\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE CHARACTER\" styleID=\"15\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECORATOR\" styleID=\"15\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"C0FFC0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"A08080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"FFF0D8\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"ECFFEA\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"8080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"srec\" desc=\"S-Record\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECSTART\" styleID=\"1\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE\" styleID=\"2\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE_UNKNOWN\" styleID=\"3\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT\" styleID=\"4\" fgColor=\"7F7F00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT_WRONG\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NOADDRESS\" styleID=\"6\" fgColor=\"7F00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATAADDRESS\" styleID=\"7\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECCOUNT\" styleID=\"8\" fgColor=\"7F00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STARTADDRESS\" styleID=\"9\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDRESSFIELD_UNKNOWN\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <!-- EXTENDEDADDRESS 11 N/A -->\r\n            <WordsStyle name=\"DATA_ODD\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EVEN\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_UNKNOWN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EMPTY\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM\" styleID=\"16\" fgColor=\"00BF00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM_WRONG\" styleID=\"17\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GARBAGE\" styleID=\"18\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tehex\" desc=\"Tektronix extended HEX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECSTART\" styleID=\"1\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE\" styleID=\"2\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE_UNKNOWN\" styleID=\"3\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT\" styleID=\"4\" fgColor=\"7F7F00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT_WRONG\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!-- NOADDRESS 6 N/A -->\r\n            <WordsStyle name=\"DATAADDRESS\" styleID=\"7\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!-- RECCOUNT 8 N/A -->\r\n            <WordsStyle name=\"STARTADDRESS\" styleID=\"9\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDRESSFIELD_UNKNOWN\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <!-- EXTENDEDADDRESS 11 N/A -->\r\n            <WordsStyle name=\"DATA_ODD\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EVEN\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!-- DATA_UNKNOWN 14 N/A -->\r\n            <!-- DATA_EMPTY 15 N/A -->\r\n            <WordsStyle name=\"CHECKSUM\" styleID=\"16\" fgColor=\"00BF00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM_WRONG\" styleID=\"17\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GARBAGE\" styleID=\"18\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"00FF00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FF0000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"A6CAF0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"C0C0C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"E8E8FF\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"C0C0C0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"808080\" bgColor=\"E4E4E4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"808080\" bgColor=\"F3F3F3\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"E9E9E9\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FFB56A\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n        <WidgetStyle name=\"URL hovered\" styleID=\"0\" fgColor=\"0000FF\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Hello Kitty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nTheme name : Hello Kitty\r\nThis theme is not complete. If you enhance it, please send it back to me :\r\n<don.h@free.fr>\r\nso your enhanced file can be included in Notepad++ future release.\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"8000FF\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"008000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FF0000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"000080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"808080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"808080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"000000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFC000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"8080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FF8040\" bgColor=\"FFFFD9\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"008080\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"804040\" bgColor=\"E1FFF3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"0000FF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"FF0000\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FCFFF0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"804040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"8080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"808040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontSize=\"10\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"800080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CA6500\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"CA6500\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"A6CAF0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF0000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"000080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"008000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"008000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"008080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"95004A\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"808080\" bgColor=\"EEEEEE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FDFFEC\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FF8000\" bgColor=\"EFEFEF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"F8FEDE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"8080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"8080C0\" bgColor=\"FFEEEC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"808080\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FF0000\" bgColor=\"FDF8E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"000000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"0000FF\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF8000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"000080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"008000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"008000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"8000FF\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">True False</WordsStyle>\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFF00\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"C0FFC0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"A08080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"FFF0D8\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"ECFFEA\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"8080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"00FF00\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FF0000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"A6CAF0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFF80\" bgColor=\"FFB0FF\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"C0C0C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"FF80C0\" fgColor=\"0080C0\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"FFD5FF\" fgColor=\"CC0000\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" bgColor=\"372017\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"FF80C0\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"FF80C0\" bgColor=\"FF80C0\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FFB56A\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/HotFudgeSundae.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           HotFudgeSundae.xml\r\nStyle Name:          HotFudgeSundae\r\nDescription:         HotFudgeSundae theme for Notepad++.\r\n                     Hues from photographs of hot fudge sundaes.\r\n                     Hot fudge, some ice cream peeking out, drizzled with\r\n                     caramel, nuts, and sprinkles with a cherry on top. \r\nSupported languages: All the languages supported by release 6.7.4 \r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nReleased:            4/17/2012\r\nLast Modified:       2/20/2015\r\n                     Improved contrast in comments.\r\n                     Added support for CoffeeScript.\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"B7975D\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"208008\" bgColor=\"352319\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"AFA7D6\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"4AD231\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"BCBB80\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"CFBA28\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"C11418\" bgColor=\"9A7E13\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"D92B10\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">ooooo</WordsStyle>\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">the_ID the_post have_posts wp_link_pages the_content</WordsStyle>\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">$_POST $_GET $_SESSION</WordsStyle>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\">alert appendChild arguments array blur checked childNodes className confirm dialogArguments event focus getElementById getElementsByTagName innerHTML keyCode length location null number parentNode push RegExp replace selectNodes selectSingleNode setAttribute split src srcElement test undefined value window</WordsStyle>\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">XmlUtil loadXmlString TopologyXmlTree NotificationArea loadXmlFile debug</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\">import</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">import</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"2B0F01\" bgColor=\"77610F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"BCBB80\" bgColor=\"2b0f01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\">ContentScroller</WordsStyle>\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">onMotionChanged onMotionFinished Tween ImagesStrip ContentScroller mx transitions easing Sprite Point MouseEvent Event BitmapData Timer TimerEvent addEventListener event x y height width</WordsStyle>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">raise</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">True False</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"BE211A\" bgColor=\"77610F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"BCBB80\" bgColor=\"2b0f01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"BCBB80\" bgColor=\"2b0f01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"BCBB80\" bgColor=\"2b0f01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">True False</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"CFBA28\" bgColor=\"7578DB\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"B7975D\" bgColor=\"FAF1C6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"432C13\" fgColor=\"2AA198\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"C11418\" bgColor=\"9A7E13\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"C11418\" bgColor=\"9A7E13\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"BE211A\" bgColor=\"77610F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"8B642B\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"2B0F01\" bgColor=\"EC6221\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"432C13\" fontStyle=\"0\" fgColor=\"0080C0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"585858\" fontStyle=\"0\" fgColor=\"CC0000\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FAF1C6\" fontStyle=\"0\" bgColor=\"253B76\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"8B642B\" fontStyle=\"0\" bgColor=\"112435\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"8B642B\" bgColor=\"43250B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"8B642B\" bgColor=\"43250B\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"CFBA28\" fontStyle=\"0\" bgColor=\"1A1A1A\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"8B642B\" bgColor=\"43250B\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"CFBA28\" fontStyle=\"0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"008947\" fontStyle=\"0\" fgColor=\"FFFF00\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"7578DB\" fontStyle=\"0\" fgColor=\"555753\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"C11418\" fontStyle=\"0\" fgColor=\"FCAF3E\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"0088CE\" fontStyle=\"0\" fgColor=\"80D4B2\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"BCBB80\" fontStyle=\"0\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"4AD231\" fontStyle=\"0\" fgColor=\"FFCAB0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"CFBA28\" fontStyle=\"0\" fgColor=\"000000\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"2B0F01\" fontStyle=\"0\" fgColor=\"808080\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"990000\" fontStyle=\"0\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"3D0B0C\" fontStyle=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"D92B10\" fontStyle=\"0\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"2B0F01\" fontStyle=\"0\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" fontStyle=\"0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"43250B\" bgColor=\"D5BC93\" fontStyle=\"0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Material-Dark.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nMaterial Theme Dark\r\nCopyright (c) 2016 Ali Naderi\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on Consolas font.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to \"%APPDATA%\\Notepad++\\themes\" and in a portable installation to \"%INSTALL FOLDER%\\themes\"\r\n\r\nAbout:\r\n    This styler has been built by Ali Naderi\r\n\r\nCredits:\r\n    Thanks for the original Sublime Text theme author.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">ooooo</WordsStyle>\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">the_ID the_post have_posts wp_link_pages the_content</WordsStyle>\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">$_POST $_GET $_SESSION</WordsStyle>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"808080\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"808080\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">alert appendChild arguments array blur checked childNodes className confirm dialogArguments event focus getElementById getElementsByTagName innerHTML keyCode length location null number parentNode push RegExp replace selectNodes selectSingleNode setAttribute split src srcElement test undefined value window</WordsStyle>\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">XmlUtil loadXmlString TopologyXmlTree NotificationArea loadXmlFile debug</WordsStyle>\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">import</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">import</WordsStyle>\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"wpl\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"494949\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"494949\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"808080\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"E8DD8E\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"CD6749\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"8FC6E8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"E8DD8E\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"E8DD8E\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"9B859D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"F07178\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"89DDFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"89DDFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"DAD085\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"8A97A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"8A97A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"\" fontSize=\"12\" keywordClass=\"instre2\"/>\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"DAD085\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\">ContentScroller</WordsStyle>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"po\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF6464\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">ContentScroller</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">onMotionChanged onMotionFinished Tween ImagesStrip ContentScroller mx transitions easing Sprite Point MouseEvent Event BitmapData Timer TimerEvent addEventListener event x y height width</WordsStyle>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"808080\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">raise</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">True False</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">True False</WordsStyle>\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"212121\" fontName=\"\" fontStyle=\"\" fontSize=\"12\"/>\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"DAD085\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"DAD085\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"Monaco\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"1\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"1B1B1B\" fontStyle=\"0\" fgColor=\"EEFFFF\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"FF5370\" bgColor=\"212121\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"4D4D4D\" fgColor=\"C0C0C0\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"A7A7A7\" fontStyle=\"0\" bgColor=\"212121\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" bgColor=\"212121\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"4D4D4D\" bgColor=\"212121\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"212121\" bgColor=\"212121\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"F07178\" fontStyle=\"0\" bgColor=\"00FF00\" fontSize=\"\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"4D4D4D\" bgColor=\"212121\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"212121\" fgColor=\"555753\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"212121\" fgColor=\"FF5370\" fontName=\"\" fontSize=\"12\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"E0E2E4\" fontSize=\"14\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"FFCB6B\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"C3E88D\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"AB7967\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"212121\" fgColor=\"B2CCD6\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"212121\" fgColor=\"FF5370\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"212121\" fgColor=\"B2CCD6\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"C792EA\" bgColor=\"212121\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" bgColor=\"C0C0C0\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" fontStyle=\"0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Mono Industrial.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nmonoindustrial\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"222C28\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"588E60\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"588E60\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"588E60\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"588E60\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"2C3833\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"919994\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Monokai.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nMonokai\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F2\" bgColor=\"272822\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"Batang\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"272822\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"272822\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"272822\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"3E3D32\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"49483E\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"F8F8F0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/MossyLawn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           MossyLawn.xml\r\nStyle Name:          MossyLawn\r\nDescription:         MossyLawn theme for Notepad++.\r\n                     A \"natural\" theme for NP++\r\n                     The hues are taken from photographs of mosses and grasses, with a few \r\n                     hues from tree trunks, autumn leaves and flowers added for contrast.\r\n                     The name is a tip of the hat to Terry Pratchett.\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\\\r\n\t\t\t\t\t Improved contrast for readbility.\r\nReleased:            4/17/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"ccc457\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"f2c476\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"2a390e\" bgColor=\"627353\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"ffdc87\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"cbe248\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"ffdc87\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"efc53d\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"3e2c04\" bgColor=\"ccc457\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"ccc457\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FFBBAA\" bgColor=\"7C7411\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"3e2c04\" bgColor=\"ccc457\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"ffdc87\" bgColor=\"6c7d51\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"bfb8c4\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"f2c476\" bgColor=\"58693D\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"FFAABE\" bgColor=\"7C7411\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"bfb8c4\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"efc53d\" bgColor=\"561e0f\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"858e4d\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"bfb8c4\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"3e2c04\" bgColor=\"ccc457\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"3e2c04\" bgColor=\"ccc457\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"003709\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"561e0f\" bgColor=\"9ece3c\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"981f0e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"717A39\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"8B6733\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"ffc973\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"003709\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"603d13\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"603d13\" bgColor=\"7e8a28\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"7e8a28\" bgColor=\"7e8a28\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"ffc973\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"bf8830\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"6a1a01\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"fdd64a\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"afcf90\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"ffdc87\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"cbe248\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"8abbe4\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"6a1a01\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"92983e\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"dab57e\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"58693D\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"58693D\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"012001\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"162504\" bgColor=\"BBCF60\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "ide/resources/styles/Navajo.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Navajo.xml\r\nStyle Name:          Navajo\r\nDescription:         Navajo theme for Notepad++.\r\n                     Based on navajo.vim by R. Edward Ralston\r\n                     Official Navajo home page: http://www.vim.org/scripts/script.php?script_id=190\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\r\nReleased:            4/17/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"000000\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"181880\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"804040\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"000000\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"870087\" bgColor=\"afaf87\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"D92B10\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"5F0000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"5F0000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"AFAF87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"000000\" bgColor=\"BA9C80\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"3B4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"D92B10\" bgColor=\"AFAF87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000000\" bgColor=\"BCBCBC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"B39674\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"AFAF87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"000000\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"B39674\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"BCBCBC\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"181880\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"000000\" bgColor=\"808080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"000000\" bgColor=\"808080\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"808080\" bgColor=\"808080\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"106060\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"BCBCBC\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"3b4092\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"870087\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"C00058\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"181880\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"804040\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"106060\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"BA9C80\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"D92B10\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"D92B10\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"D92B10\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"BA9C80\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"181880\" bgColor=\"BA9C80\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "ide/resources/styles/Obsidian.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nNotepad++ Custom Style\r\n\r\n  Style name:    Obsidian v2\r\n      Author:    Joni Eskelinen\r\n        Date:    2009-04-06 (last changed 2013-04-23)\r\n   Languages:    php, html, css, xml, javascript, python, sql, c, c++, \r\n                   assembly, bash, batch, lua at least for detail. Everything else more or less...\r\n        Info:    Inspired by Oblivion theme for gedit.\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"D955C1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"D955C1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"D2C5E0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFC6C6\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"B7C8D9\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"C29F56\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"D3DA50\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"9CB4AA\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"F0F0F0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"D5AB55\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"F3DB2E\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"0080C0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"FF8080\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"00FF40\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"9FAC95\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"9FAC95\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"E1E2CF\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"E1E2CF\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"8CBBAD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"8CBBAD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"8CBBAD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"BBBBBB\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"818E96\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"818E96\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"C29F56\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"D955C1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"ABBFD3\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"9473B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"11\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"5899C0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"5AB9BE\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"D955C1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7D8C93\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">True False</WordsStyle>\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"B6C8DA\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Schime\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"ABBFD3\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"ABBFD3\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"E1E2CF\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"E1E2CF\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"D5E6F0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"BBBBBB\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"A6ABB3\" bgColor=\"3A4649\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"78838B\" bgColor=\"2F383C\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"5\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"FF8409\" bgColor=\"2F393C\" fontName=\"\" fontStyle=\"1\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"2F393C\" fgColor=\"E0E2E4\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"394448\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"F3DB2E\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FB0000\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"2F393C\" fgColor=\"0080C0\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"404E51\" fgColor=\"C00000\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"C1CBD2\" bgColor=\"6699CC\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"445257\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"81969A\" bgColor=\"3F4B4E\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"6A8088\" bgColor=\"2F383C\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"343F41\" bgColor=\"343F41\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"343F43\" bgColor=\"3476A3\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"56676D\" fgColor=\"222222\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"6B8189\" fgColor=\"E0E2E4\" fontSize=\"\" fontStyle=\"1\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00659B\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"00880B\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"A6AA00\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8A0B0B\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"44116F\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFFF80\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"4D5C62\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"93975E\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" bgColor=\"0080FF\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Plastic Code Wrap.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nPlasticCodeWrap\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"9EFFFF\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"9EFFFF\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"9DF39F\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!--WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle-->\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"11222D\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"162E3D\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"8BA7A7\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Ruby Blue.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!-- \r\nNotepad++ Custom stylers\r\nStyle name: \t\tPort Ruby Blue\r\nFile name: \t\t\tstylers.xml\r\nCreated by:\t\t\ttomsolo (aka tonoslo on sourceforge.net)\r\n\t\t\t\thttp://www.3276.hu\r\nFeatured language:\tPhp, Css, Sql, JavaScript, Html, XML. \r\nNote: \t\t\tIf u create other languages with this style please send me the modified styler.xml : tonoslo at users.sourceforge.net (ty!)\r\nOther info:\t\t\tthis style is based on and inspired by Textmate (a Mac source editor, http:/www.textmate.org) user submitted theme:\r\n\t\t\t\tRuby Blue theme created by John W. Long, http://wiseheartdesign.com/articles/2006/03/11/ruby-blue-textmate-theme)\r\n\t\t\t\tThanks John!\r\n\t\t\t\tThis style available under the terms of the GNU Free License.\r\n\r\n\r\nRequirements: \r\n\t1. The style is based on DejaVu fonts, go to \r\n\thttp://dejavu.sourceforge.net/wiki/index.php/Main_Page\r\n\tand grab this font pack and install (use DejaVu Mono).\r\n\t2. Use Cleartype, for nice smooth font on screen (optional).\r\n\t3. Notepad 3.5 install :)\r\n\r\nInstall: copy your installed Notepad++ directory root, overwrite old stylers.xml (backup old file first), \r\nor copy c:\\Documents and Settings\\**USERNAME**\\Application Data\\Notepad++\\\r\noverwrite old stylers.xml (backup old file first)\r\n\r\n\r\nENJOY!\r\n\r\n\r\nIf u like, please donate Notepad++:\r\nhttp://sourceforge.net/donate/index.php?group_id=95717\r\n\r\n \r\n\r\n2006.03.27.\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"7BC22F\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F4DD0B\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFF00\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"F0804F\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFF00\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"8080C0\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"800080\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"F4DD0B\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"E6A82D\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"F0804F\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"730080\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"7BC22F\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"800080\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"F4DD0B\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"730080\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"\" bgColor=\"\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n\t\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFF80\" bgColor=\"FF8000\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"0080FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"273A4B\" fgColor=\"CCFF33\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"0080C0\" bgColor=\"B0D926\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"0000FF\" fgColor=\"C00000\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" fontStyle=\"0\" bgColor=\"6699CC\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontSize=\"\" fontStyle=\"1\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"FFFFFF\" bgColor=\"1F4661\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"F0804F\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"4096BF\" bgColor=\"3476A3\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FF8080\" bgColor=\"112435\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Solarized-light.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Solarized-light.xml\r\nStyle Name:          Solarized-light\r\nDescription:         Solarized theme for Notepad++.\r\n                     Based on Solarized by Ethan Schoonover\r\n                     Official Solarized home page: http://ethanschoonover.com/solarized\r\nCommpliance:         Nearly complete (see README.txt for exceptions).\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\r\nReleased:            3/7/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nRequirements:\r\n    * This theme is based on the Inconsolata-dz font http://media.nodnod.net/Inconsolata-dz.otf.zip\r\n      However, that font may be replaced in the \"GlobalStyles\" section of this \r\n      file, where it is found in only the \"Global override\" and \"Default Style\" lines.\r\n      Fonts are not separately specified anywhere else in this version of the style file.\r\n      Note 3/29/2012: I have replaced Inconsola-dz with Consolas, since Consolas is\r\n      installed by default in recent versions of Windows.\r\n      \r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"657B83\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"93A1A1\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"2AA198\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"859900\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"2AA198\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"B58900\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"DC322F\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"CB4B16\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"073642\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"073642\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"073642\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"073642\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"657B83\" bgColor=\"073642\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"EEE8D5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"DC322F\" bgColor=\"859900\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"073642\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"073642\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"93A1A1\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"93A1A1\" bgColor=\"EEE8D5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"93A1A1\" bgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"DC322F\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"93A1A1\" bgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"B58900\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"002B36\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"6C71C4\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"DC322F\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"268BD2\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"2AA198\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"859900\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"B58900\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"FDF6E3\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FDF6E3\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"073642\" bgColor=\"93A1A1\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "ide/resources/styles/Solarized.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Solarized.xml\r\nStyle Name:          Solarized\r\nDescription:         Solarized theme for Notepad++.\r\n                     Based on Solarized by Ethan Schoonover\r\n                     Official Solarized home page: http://ethanschoonover.com/solarized\r\nCommpliance:         Nearly complete (see README.txt for exceptions).\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\r\nReleased:            3/7/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nRequirements:\r\n    * This theme is based on the Inconsolata-dz font http://media.nodnod.net/Inconsolata-dz.otf.zip\r\n      However, that font may be replaced in the \"GlobalStyles\" section of this \r\n      file, where it is found in only the \"Global override\" and \"Default Style\" lines.\r\n      Fonts are not separately specified anywhere else in this version of the style file.\r\n      Note 3/29/2012: I have replaced Inconsola-dz with Consolas, since Consolas is\r\n      installed by default in recent versions of Windows.\r\n      \r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"839496\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"586E75\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"2AA198\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"859900\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"2AA198\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"B58900\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"DC322F\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"CB4B16\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"839496\" bgColor=\"002B36\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"EEE8D5\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"EEE8D5\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"EEE8D5\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"EEE8D5\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"839496\" bgColor=\"EEE8D5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"073642\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"DC322F\" bgColor=\"859900\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"073642\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"586E75\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"586E75\" bgColor=\"073642\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"586E75\" bgColor=\"073642\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"DC322F\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"586E75\" bgColor=\"073642\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"B58900\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"FDF6E3\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"6C71C4\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"DC322F\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"268BD2\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"2AA198\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"859900\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"B58900\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"002B36\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"002B36\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"EEE8D5\" bgColor=\"586E75\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "ide/resources/styles/Twilight.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nTwilight\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n              2011-2014 Renato Silva <br.renatosilva@gmail.com>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"wpl\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"494949\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"494949\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"CCCCCC\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"CCCCCC\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"CCCCCC\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"2\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"2\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"E8DD8E\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"2\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"CD6749\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"8FC6E8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"141414\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"E8DD8E\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"E8DD8E\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"9B859D\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"DAD085\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"8A97A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"8A97A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"DAD085\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"po\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF6464\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\"/>\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\">raise</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\"/>\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"141414\" fontName=\"\" fontStyle=\"\" fontSize=\"10\"/>\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"DAD085\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"DAD085\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"5A5A5A\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"292929\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"3E3E3E\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"A7A7A7\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\"/>\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\"/>\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\"/>\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"8000FF\" fgColor=\"555753\"/>\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\"/>\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\"/>\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\"/>\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\"/>\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\"/>\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\"/>\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"663a04\" fgColor=\"b5834a\"/>\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\"/>\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\"/>\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\"/>\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Vibrant Ink.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!-- \r\nStyle Name: Port VibrantInk\r\nDescription: Based on the Textmate theme VibrantInk (http://alternateidea.com/blog/articles/2006/01/03/textmate-vibrant-ink-theme-and-prototype-bundle) by Justin Palmer\r\nFile name: \t\t\tstylers.xml\r\nCreated by:\t\t\ttyler (tyler at impoverishedgourmet.com)\r\nFeatured language:\tPhp, Css, JavaScript, Html, XML, others? \r\nNote:\t\t\t\tFeel free to modify this style and re-release it.  Any additions to languages or syntax to bring it closer to VibrantInk would be appreciated.\r\n\t\t\t\t\tThis style available under the terms of the GNU Free License.\r\n\r\nInstall: copy your installed Notepad++ directory root, overwrite old stylers.xml (backup old file first), \r\nor copy %APPDATA%\\Notepad++\\\r\noverwrite old stylers.xml (backup old file first)\r\n\r\nKeep Notepad++ development active, donate!:\r\nhttp://sourceforge.net/donate/index.php?group_id=95717\r\n\r\n2007.11.16\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"707070\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"CCCCCC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"772CB7\" bgColor=\"070707\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"9933CC\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"99CC99\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFCC00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"FFFFFF\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"FFC000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"707070\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"070707\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"707070\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"F8FEDE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"999966\" bgColor=\"FFEEEC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FCFFF0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"EEEEEE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"99CC99\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FDFFEC\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FF8000\" bgColor=\"EFEFEF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n\t\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FF8040\" bgColor=\"FFFFD9\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"9933CC\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"804040\" bgColor=\"E1FFF3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FF6600\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"99CC99\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"C0FFC0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"A08080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"FFF0D8\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"339999\" bgColor=\"ECFFEA\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"800080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CA6500\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"CA6500\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"804040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFF80\" bgColor=\"FF8000\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"Monaco\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"CCFF33\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"333333\" fgColor=\"0080C0\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"C00000\" bgColor=\"000000\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"6699CC\" fgColor=\"8000FF\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" bgColor=\"F3F3F3\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"E4E4E4\" bgColor=\"333333\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"999999\" bgColor=\"333333\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"222222\" bgColor=\"111111\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FF8080\" bgColor=\"000000\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/Zenburn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nFile name:           Zenburn.xml\r\nStyle Name:          Zenburn\r\nDescription:         Zenburn-like style for Notepad++.\r\n                     Inspired by the original Zenburn colorscheme for Vim by Jani Nurminen.\r\n                     Official Vim Zenburn home page: http://slinky.imukuppi.org/zenburnpage/\r\nSupported languages: All the languages supported by release 6.6.6\r\nCreated by:          Jani Kesnen (jani dot kesanen gmail com)\r\nReleased:            18.06.2014\r\nLicense:             Feel free to modify this style and re-release it. This style is available under the terms of the GNU Free License.\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"EBD6EB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EDD6ED\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"C2BE9E\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C2BE9E\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"BFCAA9\" bgColor=\"274E27\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"DBDBBC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"DEDEBE\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FDCEAE\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"CFBFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"EDD6ED\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CFBFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"json\" desc=\"JSON\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE QUOTE\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN NULL\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"EDD6ED\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EBD6EB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"ECA9A9\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EBD6EB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"DFE4CF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n\t\t\t<WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"EDD6ED\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"BEC89E\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CFBFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"EBD6EB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"101010\" bgColor=\"8FAF9F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"CCE08C\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"AFE7B3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"585858\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"4F5F5F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"F0F9F9\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"F09F9F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"101010\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"585858\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"8FAF9F\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"4F5F5F\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"8A8A8A\" bgColor=\"0C0C0C\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"707070\" bgColor=\"101010\" />\r\n\t\t<WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"7F9F7F\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"181818\" bgColor=\"101010\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"5F5F5F\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"358A35\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0080\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"88B090\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"F8F893\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"F18C96\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"408040\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"968CF1\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"C3BF9F\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"C6C600\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"78926F\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"80D4B2\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"3FBA89\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"101010\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n        <WidgetStyle name=\"URL hovered\" styleID=\"0\" fgColor=\"A3DCA3\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "ide/resources/styles/khaki.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           khaki.xml\r\nStyle Name:          khaki\r\nDescription:         khaki theme for Notepad++.\r\n                     Based (moderately closely) on khaki.vim by Frank Baruch\r\n                     http://www.vim.org/scripts/script.php?script_id=1987\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\r\nReleased:            4/17/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"5f5f00\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"87875f\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"005f5f\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"87005f\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"005f5f\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"000087\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"005f00\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"005f00\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"870000\" bgColor=\"afaf87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"000087\" bgColor=\"870000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"5f5f00\" bgColor=\"EEE8D5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"073642\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"afaf87\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"d7d7af\" bgColor=\"005f00\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"5f5f00\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"5f5f00\" bgColor=\"afaf87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"af0000\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"afaf87\" bgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"005f00\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"af5f00\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"005f5f\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"87005f\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"afff87\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"5faf5f\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"5f0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"d7d7af\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" />\r\n<!--        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"ffffd7\" bgColor=\"5f5f00\" /> -->\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "ide/resources/styles/tomorrow.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\n<NotepadPlus>\n    <LexerStyles>\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"m\">\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\">synthesize</WordsStyle>\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"8841D8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">NSString NSObject NSView NSWindow NSArray NSNumber NSUserDefaults NSNotification NSNotificationCenter CALayer CGColorRef NSEvent NSPoint NSSize NSRect CGPoint CGSize CGRect CGFloat unichar NSSet NSDictionary NSMutableString </WordsStyle>\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"javascript\" desc=\"Javascript\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"EAB700\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" />\n        </LexerType>\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"B9CA48\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"B9CA48\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"EAB700\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\n        </LexerType>\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\n            <!--\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"\" fontSize=\"\" keywordClass=\"instre2\" />\n            -->\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\n        </LexerType>\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"EAB700\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"8959A8\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\n        </LexerType>\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"D5D8D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\n            <!--\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"\" fontSize=\"\" />\n        -->\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"4271AE\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"73EC0F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"8E908C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"F5871F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        </LexerType>\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"SELECTED LINE\" styleID=\"6\" fgColor=\"D5D8D6\" bgColor=\"EFEFEF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"HEARDER\" styleID=\"1\" fgColor=\"718C00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"HIT WORD\" styleID=\"3\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n            <WordsStyle name=\"KEYWORD1\" styleID=\"4\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\">if else for while</WordsStyle>\n            <WordsStyle name=\"KEYWORD2\" styleID=\"5\" fgColor=\"3E999F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">bool long int char</WordsStyle>\n        </LexerType>\n    </LexerStyles>\n    <GlobalStyles>\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"4D4D4C\" bgColor=\"FFFFFF\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"EAB700\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"C82829\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"EFEFEF\" />\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"C82829\" bgColor=\"EAB700\" />\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"D6D6D6\" />\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"AEAFAD\" />\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"C82829\" bgColor=\"EAB700\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"D6D6D6\" />\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"4D4D4C\" bgColor=\"D6D6D6\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"D6D6D6\" />\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"EFEFEF\" bgColor=\"EFEFEF\" />\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" />\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"888A85\" />\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"888A85\" />\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"C17D11\" />\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"F5871F\" />\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FCAF3E\" />\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"F57900\" />\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"2E3436\" />\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"555753\" bgColor=\"BABDB6\" />\n    </GlobalStyles>\n</NotepadPlus>\n"
  },
  {
    "path": "ide/resources/styles/vim Dark Blue.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n\t\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"8080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"00FF40\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"80FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FF80FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"pmc\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"00FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"00FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF80FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"008080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF80FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"FF8080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"000040\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"00FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"80FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"00FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"FF80C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"FF80C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FDFFEC\" bgColor=\"000040\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"cgi\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"8080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"8080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">True False</WordsStyle>\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"40FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"40FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"008080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"8080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"pck\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"FF80FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"csproj\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"00FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"00FF40\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"SELECTED LINE\" styleID=\"6\" fgColor=\"FFFF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEARDER\" styleID=\"1\" fgColor=\"008000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIT WORD\" styleID=\"3\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"4\" fgColor=\"00FF40\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"5\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFBF\" bgColor=\"000040\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"C00000\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"2050D0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"000040\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"004040\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"2050D0\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"8080C0\" bgColor=\"CECECE\" />\r\n        <WidgetStyle name=\"Unsaved change marker\" styleID=\"0\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Saved change marker\" styleID=\"0\" bgColor=\"80FF00\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n\n \t  \t \n"
  },
  {
    "path": "ide/resources/styles.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/\">\n        <file>styles/Bespin.xml</file>\n        <file>styles/Black board.xml</file>\n        <file>styles/Choco.xml</file>\n        <file>styles/Deep Black.xml</file>\n        <file>styles/Default.xml</file>\n        <file>styles/Hello Kitty.xml</file>\n        <file>styles/HotFudgeSundae.xml</file>\n        <file>styles/khaki.xml</file>\n        <file>styles/Material-Dark.xml</file>\n        <file>styles/Mono Industrial.xml</file>\n        <file>styles/Monokai.xml</file>\n        <file>styles/MossyLawn.xml</file>\n        <file>styles/Navajo.xml</file>\n        <file>styles/Obsidian.xml</file>\n        <file>styles/Plastic Code Wrap.xml</file>\n        <file>styles/Ruby Blue.xml</file>\n        <file>styles/Solarized.xml</file>\n        <file>styles/Solarized-light.xml</file>\n        <file>styles/tomorrow.xml</file>\n        <file>styles/Twilight.xml</file>\n        <file>styles/Vibrant Ink.xml</file>\n        <file>styles/vim Dark Blue.xml</file>\n        <file>styles/Zenburn.xml</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "ide/resources/templates/empty.template",
    "content": "<html><body>\n<center><h1>Empty start project</h1></center>\n<h3><font color=blue>by Martin Ribelotta</font></h3>\n<tt>Start an empty project with blank Makefile</tt>\n</body></html>\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_vIdFYl/Makefile ./Makefile\n--- a_vIdFYl/Makefile\t1969-12-31 21:00:00.000000000 -0300\n+++ ./Makefile\t2017-11-05 12:35:59.325561673 -0300\n@@ -0,0 +1 @@\n+\n"
  },
  {
    "path": "ide/skeleton/bin/ftdi_rules.sh",
    "content": "#!/bin/bash\nset -x\n\nerror()\n{\n  echo \"${1}\"\n  exit 1\n}\n\nmsg()\n{\n\techo \"${1}\"\n}\n\nif [ \"$(id -u)\" -ne \"0\" ]; then\n    echo \"switching to root\"\n    # move outside path because root cannot access fuse mounted dirs\n    NEWFILE=$(tempfile -s .sh)\n    cp $(readlink -f $0) $NEWFILE\n    chmod a+x $NEWFILE\n    exec pkexec $NEWFILE $*\nelse\n    if [ \"$1\" = \"--install\" ]; then\n        echo \"Install FTDI drivers\"\n        cat <<EOF > /etc/udev/rules.d/60-openocd.rules\n# Copy this file to /etc/udev/rules.d/\n# If rules fail to reload automatically, you can refresh udev rules\n# with the command \"udevadm control --reload\"\n\nACTION!=\"add|change\", GOTO=\"openocd_rules_end\"\nSUBSYSTEM!=\"usb|tty|hidraw\", GOTO=\"openocd_rules_end\"\n\n# [GNU MCU Eclipse] -----------------------------------------------------------\n# To simplify access, the access rights were changed from:\n#   MODE=\"660\", GROUP=\"plugdev\", TAG+=\"uaccess\"\n# to:\n#   MODE=\"666\"\n# -----------------------------------------------------------------------------\n\n# Please keep this list sorted by VID:PID\n\n# opendous and estick\nATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"204f\", MODE=\"666\"\n\n# Original FT232/FT245 VID:PID\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6001\", MODE=\"666\"\n\n# Original FT2232 VID:PID\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6010\", MODE=\"666\"\n\n# Original FT4232 VID:PID\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6011\", MODE=\"666\"\n\n# Original FT232H VID:PID\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6014\", MODE=\"666\"\n\n# DISTORTEC JTAG-lock-pick Tiny 2\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"8220\", MODE=\"666\"\n\n# TUMPA, TUMPA Lite\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"8a98\", MODE=\"666\"\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"8a99\", MODE=\"666\"\n\n# XDS100v2\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"a6d0\", MODE=\"666\"\n\n# Xverve Signalyzer Tool (DT-USB-ST), Signalyzer LITE (DT-USB-SLITE)\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bca0\", MODE=\"666\"\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bca1\", MODE=\"666\"\n\n# TI/Luminary Stellaris Evaluation Board FTDI (several)\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bcd9\", MODE=\"666\"\n\n# TI/Luminary Stellaris In-Circuit Debug Interface FTDI (ICDI) Board\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bcda\", MODE=\"666\"\n\n# egnite Turtelizer 2\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bdc8\", MODE=\"666\"\n\n# Section5 ICEbear\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"c140\", MODE=\"666\"\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"c141\", MODE=\"666\"\n\n# Amontec JTAGkey and JTAGkey-tiny\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"cff8\", MODE=\"666\"\n\n# TI ICDI\nATTRS{idVendor}==\"0451\", ATTRS{idProduct}==\"c32a\", MODE=\"666\"\n\n# STMicroelectronics ST-LINK V1\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3744\", MODE=\"666\"\n\n# STMicroelectronics ST-LINK/V2\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3748\", MODE=\"666\"\n\n# STMicroelectronics ST-LINK/V2.1\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"374b\", MODE=\"666\"\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3752\", MODE=\"666\"\n\n# STMicroelectronics STLINK-V3\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"374d\", MODE=\"666\"\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"374e\", MODE=\"666\"\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"374f\", MODE=\"666\"\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3753\", MODE=\"666\"\n\n# Cypress KitProg in KitProg mode\nATTRS{idVendor}==\"04b4\", ATTRS{idProduct}==\"f139\", MODE=\"666\"\n\n# Cypress KitProg in CMSIS-DAP mode\nATTRS{idVendor}==\"04b4\", ATTRS{idProduct}==\"f138\", MODE=\"666\"\n\n# Hilscher NXHX Boards\nATTRS{idVendor}==\"0640\", ATTRS{idProduct}==\"0028\", MODE=\"666\"\n\n# Hitex STR9-comStick\nATTRS{idVendor}==\"0640\", ATTRS{idProduct}==\"002c\", MODE=\"666\"\n\n# Hitex STM32-PerformanceStick\nATTRS{idVendor}==\"0640\", ATTRS{idProduct}==\"002d\", MODE=\"666\"\n\n# Altera USB Blaster\nATTRS{idVendor}==\"09fb\", ATTRS{idProduct}==\"6001\", MODE=\"666\"\n\n# Amontec JTAGkey-HiSpeed\nATTRS{idVendor}==\"0fbb\", ATTRS{idProduct}==\"1000\", MODE=\"666\"\n\n# SEGGER J-Link\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0101\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0102\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0103\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0104\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0105\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0107\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0108\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1010\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1011\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1012\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1013\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1014\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1015\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1016\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1017\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1018\", MODE=\"666\"\n\n# Raisonance RLink\nATTRS{idVendor}==\"138e\", ATTRS{idProduct}==\"9000\", MODE=\"666\"\n\n# Debug Board for Neo1973\nATTRS{idVendor}==\"1457\", ATTRS{idProduct}==\"5118\", MODE=\"666\"\n\n# Olimex ARM-USB-OCD\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"0003\", MODE=\"666\"\n\n# Olimex ARM-USB-OCD-TINY\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"0004\", MODE=\"666\"\n\n# Olimex ARM-JTAG-EW\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"001e\", MODE=\"666\"\n\n# Olimex ARM-USB-OCD-TINY-H\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"002a\", MODE=\"666\"\n\n# Olimex ARM-USB-OCD-H\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"002b\", MODE=\"666\"\n\n# USBprog with OpenOCD firmware\nATTRS{idVendor}==\"1781\", ATTRS{idProduct}==\"0c63\", MODE=\"666\"\n\n# TI/Luminary Stellaris In-Circuit Debug Interface (ICDI) Board\nATTRS{idVendor}==\"1cbe\", ATTRS{idProduct}==\"00fd\", MODE=\"666\"\n\n# TI XDS110 Debug Probe (Launchpads and Standalone)\nATTRS{idVendor}==\"0451\", ATTRS{idProduct}==\"bef3\", MODE=\"666\"\n\n# TI Tiva-based ICDI and XDS110 probes in DFU mode\nATTRS{idVendor}==\"1cbe\", ATTRS{idProduct}==\"00ff\", MODE=\"666\"\n\n# Ambiq Micro EVK and Debug boards.\nATTRS{idVendor}==\"2aec\", ATTRS{idProduct}==\"6010\", MODE=\"666\"\nATTRS{idVendor}==\"2aec\", ATTRS{idProduct}==\"6011\", MODE=\"666\"\nATTRS{idVendor}==\"2aec\", ATTRS{idProduct}==\"1106\", MODE=\"666\"\n\n# Marvell Sheevaplug\nATTRS{idVendor}==\"9e88\", ATTRS{idProduct}==\"9e8f\", MODE=\"666\"\n\n# Keil Software, Inc. ULink\nATTRS{idVendor}==\"c251\", ATTRS{idProduct}==\"2710\", MODE=\"666\"\n\n# CMSIS-DAP compatible adapters\nATTRS{product}==\"*CMSIS-DAP*\", MODE=\"666\"\n\nLABEL=\"openocd_rules_end\"\nEOF\n        udevadm control -R &&\n        msg \"Install FTDI driver OK\" ||\n        msg \"Install FTDI driver FAIL\";\n        exit 0\n    elif [ \"$1\" = \"--uninstall\" ]; then\n        echo \"Uninstall FTDI drivers\"\n        rm -f /etc/udev/rules.d/60-openocd.rules &&\n        udevadm control -R &&\n        msg \"Uninstall FTDI driver OK\" ||\n        msg \"Uninstall FTDI driver FAIL\";\n        exit 0\n    fi\nfi\n"
  },
  {
    "path": "ide/skeleton/bin/qt.conf",
    "content": "[Paths]\nPrefix=../\nLibraries=lib\nPlugins=plugins\n"
  },
  {
    "path": "ide/skeleton/desktop-integration.sh",
    "content": "#!/bin/sh\nset -e\n\nDEBUG=\n# Be verbose if $DEBUG=1 is set\nif [ ! -z \"$DEBUG\" ] ; then\n  env\n  set -x\nfi\n\nTHIS=\"$0\"\nargs=$(echo \"$@\") # http://stackoverflow.com/questions/3190818/\nNUMBER_OF_ARGS=\"$#\"\n\n# Please do not change $VENDORPREFIX as it will allow for desktop files\n# belonging to AppImages to be recognized by future AppImageKit components\n# such as desktop integration daemons\nVENDORPREFIX=appimagekit\n\nif [ -z $APPDIR ] ; then\n    # Find the AppDir. It is the directory that contains AppRun.\n    # This assumes that this script resides inside the AppDir or a subdirectory.\n    # If this script is run inside an AppImage, then the AppImage runtime\n    # likely has already set $APPDIR\n    APPDIR=$(readlink -f $(dirname $(readlink -f $THIS))/../../)\nfi\n\nFILENAME=\"$(readlink -f \"${THIS}\")\"\nDIRNAME=$(dirname $FILENAME)\n\nDESKTOPFILE=$(find \"$APPDIR\" -maxdepth 1 -name \"*.desktop\" | head -n 1)\nDESKTOPFILE_NAME=$(basename \"${DESKTOPFILE}\")\n\nAPP_FULL=$(sed -n -e 's/^Name=//p' \"${DESKTOPFILE}\" | head -n 1)\nAPP=$(echo \"$APP_FULL\" | tr -c -d '[:alnum:]')\nif [ -z \"$APP\" ] || [ -z \"$APP_FULL\" ] ; then\n    APP=$(echo \"$DESKTOPFILE_NAME\" | sed -e 's/.desktop//g')\n    APP_FULL=\"$APP\"\nfi\n\n# Install the icon files for the application; TODO: scalable\nICONS=$(find \"${APPDIR}\" -iwholename \"*/${APP}.png\" 2>/dev/null || true)\nif [ -z $ICONS ]; then\n    ICONS=$(find \"${APPDIR}\" -name $(grep \"^Icon=\" $DESKTOPFILE |head -n 1|cut -f 2 -d '=').png)\nfi\n\ncheck_dep() {\n    DEP=$1\n    if [ -z $(which $DEP) ] ; then\n        echo \"$DEP is missing. Skipping ${THIS}.\"\n        exit 0\n    fi\n}\n\ncheck_dep xdg-icon-resource\ncheck_dep xdg-desktop-menu\n\n# Determine where the desktop file should be installed\nif [ $(id -u) -ne 0 ]; then\n    DESTINATION_DIR_DESKTOP=\"$HOME/.local/share/applications\"\n    STAMP_DIR=\"$HOME/.local/share/$VENDORPREFIX\"\n    SYSTEM_WIDE=\"\"\nelse\n    # TODO: Check $XDG_DATA_DIRS\n    DESTINATION_DIR_DESKTOP=\"/usr/local/share/applications\"\n    STAMP_DIR=\"/etc/$VENDORPREFIX\"\n    SYSTEM_WIDE=\"--mode system\" # for xdg-mime and xdg-icon-resource\nfi\n\nusage() {\n    echo \"Usage: $0 [--install | --uninstall]\"\n    exit 1\n}\n\ncheck_prevent()\n{\n  FILE=$1\n  if [ -e \"$FILE\" ] ; then\n    echo \"Desktop integration disabled. For enable it remove $FILE.\"\n    exit 0\n  fi\n}\n\nif [ $# -eq 0 ]; then\n    usage\nfi\n\nif [ \"x$1\" = \"x--install\" ]; then\n    # Exit immediately if one of these files is present\n    # (e.g., because the desktop environment wants to handle desktop integration itself)\n    check_prevent \"$HOME/.local/share/$VENDORPREFIX/no_desktopintegration\"\n    check_prevent \"/usr/share/$VENDORPREFIX/no_desktopintegration\"\n    check_prevent \"/etc/$VENDORPREFIX/no_desktopintegration\"\n    if [ -z \"$APPIMAGE\" ] ; then\n        APPIMAGE=\"$APPDIR/AppRun\"\n        # Not running from within an AppImage; hence using the AppRun for Exec=\n    fi\n\n    ICONFILE=\"$APPDIR/.DirIcon\"\n\n    # $XDG_DATA_DIRS contains the default paths /usr/local/share:/usr/share\n    # desktop file has to be installed in an applications subdirectory\n    # of one of the $XDG_DATA_DIRS components\n    if [ -z \"$XDG_DATA_DIRS\" ] ; then\n        echo \"\\$XDG_DATA_DIRS is missing. Please run ${THIS} from within an AppImage.\"\n        exit 0\n    fi\n\n    # Check if the desktop file is already there\n    # and if so, whether it points to the same AppImage\n    if [ -e \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" ] ; then\n        # echo \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME already there\"\n        EXEC=$(grep \"^Exec=\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" | head -n 1 | cut -d \" \" -f 1)\n        # echo $EXEC\n        if [ \"Exec=\\\"$APPIMAGE\\\"\" == \"$EXEC\" ] ; then\n            echo \"Already installed. Finished\"\n            exit 0\n        fi\n    fi\n\n    # desktop-file-install is supposed to install .desktop files to the user's\n    # applications directory when run as a non-root user,\n    # and to /usr/share/applications if run as root\n    # but that does not really work for me...\n    #\n    # For Exec we must use quotes\n    # For TryExec quotes is not supported, so, space must be replaced to \\s\n    # https://askubuntu.com/questions/175404/how-to-add-space-to-exec-path-in-a-thumbnailer-descrption/175567\n    echo \"Installing into system...\"\n    RESOURCE_NAME=$(echo \"$VENDORPREFIX-$DESKTOPFILE_NAME\" | sed -e 's/.desktop//g')\n    desktop-file-install --rebuild-mime-info-cache \\\n        --vendor=$VENDORPREFIX --set-key=Exec --set-value=\"\\\"${APPIMAGE}\\\" %U\" \\\n        --set-key=X-AppImage-Comment --set-value=\"Generated by ${THIS}\" \\\n        --set-icon=\"$RESOURCE_NAME\" --set-key=TryExec --set-value=${APPIMAGE// /\\\\s} \"$DESKTOPFILE\" \\\n        --dir \"$DESTINATION_DIR_DESKTOP\"\n    chmod a+x \"$DESTINATION_DIR_DESKTOP/\"*\n    echo $RESOURCE_NAME\n    echo $APP\n    echo \"Icons for ${APP} on ${APPDIR} ${ICONS}\"\n    for ICON in $ICONS ; do\n        ICON_SIZE=256\n        echo \"Installing ${ICON} to size ${ICON_SIZE} on resource ${RESOURCE_NAME}\"\n        xdg-icon-resource install --context apps --size ${ICON_SIZE} \"${ICON}\" \"${RESOURCE_NAME}\"\n    done\n\n    # Install mime type\n    find \"${APPDIR}/usr/share/mime/\" -type f -name *xml -exec xdg-mime install $SYSTEM_WIDE --novendor {} \\; 2>/dev/null || true\n\n    # Install the icon files for the mime type; TODO: scalable\n    ICONS=$(find \"${APPDIR}\" -iwholename \"*/mimetypes/*.png\" 2>/dev/null || true)\n    for ICON in $ICONS ; do\n        ICON_SIZE=$(echo \"${ICON}\" | rev | cut -d \"/\" -f 3 | rev | cut -d \"x\" -f 1)\n        xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} \"${ICON}\" $(basename $ICON | sed -e 's/.png//g')\n    done\n\n    xdg-desktop-menu forceupdate\n    gtk-update-icon-cache # for MIME\n    echo \"Install $APPIMAGE to desktop\"\nelif [ \"x$1\" = \"x--uninstall\" ]; then\n    echo \"Uninstalling from destkop...\"\n    rm -f \"$STAMP_DIR/${APP}_no_desktopintegration\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n    for ICON in $ICONS ; do\n        ICON_SIZE=256\n        echo \"Uninstalling ${ICON} to size ${ICON_SIZE} on resource ${RESOURCE_NAME}\"\n        xdg-icon-resource uninstall --context apps --size ${ICON_SIZE} \"${ICON}\" \"${RESOURCE_NAME}\"\n    done\n    xdg-desktop-menu forceupdate\n    gtk-update-icon-cache\n    echo \"Done.\"\nelse\n    echo \"Unrecognized option $1\"\n    usage\nfi\n"
  },
  {
    "path": "ide/skeleton/embedded-ide.desktop",
    "content": "[Desktop Entry]\nType=Application\nName=Embedded IDE\nName[es]=Embedded IDE\nComment=Makefile based IDE for embedded systems\nComment[es]=IDE basado en Makefile para sistemas embebidos\nExec=embedded-ide\nIcon=embedded-ide\nTerminal=false\nCategories=Development;\nStartupWMClass=Embedded IDE\n"
  },
  {
    "path": "ide/skeleton/embedded-ide.hardconf",
    "content": "{\n        \"additionalPaths\": [\n            \"${APPLICATION_DIR_PATH}\"\n        ],\n        \"editor\": {\n            \"font\": {\n                \"name\": \"Ubuntu Mono\",\n                \"size\": 12\n            },\n            \"formatterStyle\": \"linux\",\n            \"saveOnAction\": false,\n            \"style\": \"Default\",\n            \"tabWidth\": 4,\n            \"tabsOnSpaces\": true\n        },\n        \"externalTools\": {\n            \"Install FTDI drivers\": \"bash ${APPLICATION_DIR_PATH}/ftdi-tools.sh --install\",\n            \"Uninstall FTDI drivers\": \"bash ${APPLICATION_DIR_PATH}/ftdi-tools.sh --uninstall\",\n            \"Add desktop integration\": \"bash ${APPLICATION_DIR_PATH}/desktop-integration.sh --install\",\n            \"Remove desktop integration\": \"bash ${APPLICATION_DIR_PATH}/desktop-integration.sh --uninstall\"\n        },\n        \"history\": null,\n        \"logger\": {\n            \"font\": {\n                \"name\": \"Ubuntu Mono\",\n                \"size\": 10\n            }\n        },\n        \"network\": {\n            \"proxy\": {\n                \"host\": \"\",\n                \"pass\": \"\",\n                \"port\": \"\",\n                \"type\": \"None\",\n                \"useCredentials\": false,\n                \"user\": \"\"\n            }\n        },\n        \"templates\": {\n            \"autoUpdate\": true,\n            \"url\": \"https://api.github.com/repos/ciaa/EmbeddedIDE-templates/contents\"\n        },\n        \"useDevelopMode\": false\n}\n"
  },
  {
    "path": "ide/skeleton/embedded-ide.sh",
    "content": "#!/bin/sh\nAPP_DIR=`dirname $0`\nAPP_DIR=`cd \"${APP_DIR}\";pwd`\nexport PATH=${APP_DIR}/bin:${PATH}\nexport LD_LIBRARY_PATH=\"${APP_DIR}/lib\":\nfor v in $(env | grep QT_ | cut -f 1 -d '=')\ndo\n        export $v=\ndone\nexec \"${APP_DIR}/bin/embedded-ide\" \"$@\"\n"
  },
  {
    "path": "ide/skeleton/embedded-ide.sh.wrapper",
    "content": "#!/bin/bash\n\n# The purpose of this script is to provide lightweight desktop integration\n# into the host system without special help from the host system.\n# If you want to use it, then place this in usr/bin/$APPNAME.wrapper\n# and set it as the Exec= line of the .desktop file in the AppImage.\n#\n# For example, to install the appropriate icons for Scribus,\n# put them into the AppDir at the following locations:\n#\n# ./usr/share/icons/default/128x128/apps/scribus.png\n# ./usr/share/icons/default/128x128/mimetypes/application-vnd.scribus.png\n#\n# Note that the filename application-vnd.scribus.png is derived from\n# and must be match MimeType=application/vnd.scribus; in scribus.desktop\n# (with \"/\" characters replaced by \"-\").\n#\n# Then, change Exec=scribus to Exec=scribus.wrapper and place the script\n# below in usr/bin/scribus.wrapper and make it executable.\n# When you run AppRun, then AppRun runs the wrapper script below\n# which in turn will run the main application.\n#\n# TODO:\n# Handle multiple versions of the same AppImage?\n# Handle removed AppImages? Currently we are just setting TryExec=\n# See http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DELETE\n# Possibly move this to the C runtime that is part of every AppImage?\n\n# Exit on errors\nset -e\n\n# Be verbose if $DEBUG=1 is set\nif [ ! -z \"$DEBUG\" ] ; then\n  env\n  set -x\nfi\n\nTHIS=\"$0\"\nargs=(\"$@\") # http://stackoverflow.com/questions/3190818/\nNUMBER_OF_ARGS=\"$#\"\n\n# Please do not change $VENDORPREFIX as it will allow for desktop files\n# belonging to AppImages to be recognized by future AppImageKit components\n# such as desktop integration daemons\nVENDORPREFIX=appimagekit\n\nfind-up () {\n  path=\"$(dirname \"$(readlink -f \"${THIS}\")\")\"\n  while [[ \"$path\" != \"\" && ! -e \"$path/$1\" ]]; do\n    path=${path%/*}\n  done\n  # echo \"$path\"\n}\n\nif [ -z $APPDIR ] ; then\n  # Find the AppDir. It is the directory that contains AppRun.\n  # This assumes that this script resides inside the AppDir or a subdirectory.\n  # If this script is run inside an AppImage, then the AppImage runtime\n  # likely has already set $APPDIR\n  APPDIR=$(find-up \"AppRun\")\nfi\n\nFILENAME=\"$(readlink -f \"${THIS}\")\"\nDIRNAME=$(dirname $FILENAME)\n\nDESKTOPFILE=$(find \"$APPDIR\" -maxdepth 1 -name \"*.desktop\" | head -n 1)\nDESKTOPFILE_NAME=$(basename \"${DESKTOPFILE}\")\n\nAPP_FULL=$(sed -n -e 's/^Name=//p' \"${DESKTOPFILE}\" | head -n 1)\nAPP=$(echo \"$APP_FULL\" | tr -c -d '[:alnum:]')\nif [ -z \"$APP\" ] || [ -z \"$APP_FULL\" ] ; then\n  APP=$(echo \"$DESKTOPFILE_NAME\" | sed -e 's/.desktop//g')\n  APP_FULL=\"$APP\"\nfi\n\nRETURN=\"yes\"\n\nif [[ \"$FILENAME\" != *.wrapper ]] ; then\n  echo \"${THIS} is not named correctly. It should be named \\$Exec.wrapper\"\n  exit 0\nfi\n\nBIN=$(echo \"$FILENAME\" | sed -e 's|.wrapper||g')\nif [[ ! -f \"$BIN\" ]] ; then\n  echo \"$BIN not found\"\n  exit 0\nfi\n\ntrap atexit EXIT\n\n# Note that the following handles 0, 1 or more arguments (file paths)\n# which can include blanks but uses a bashism; can the same be achieved\n# in POSIX-shell? (FIXME)\n# http://stackoverflow.com/questions/3190818\natexit()\n{\n  if [ -z \"$SKIP\" ] ; then\n    if [ $NUMBER_OF_ARGS -eq 0 ] ; then\n      exec \"${BIN}\"\n    else\n      exec \"${BIN}\" \"${args[@]}\"\n    fi\n  fi\n}\n\nerror()\n{\n  if [ -x /usr/bin/zenity ] ; then\n    LD_LIBRARY_PATH=\"\" zenity --error --text \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/kdialog ] ; then\n    LD_LIBRARY_PATH=\"\" kdialog --msgbox \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/Xdialog ] ; then\n    LD_LIBRARY_PATH=\"\" Xdialog --msgbox \"${1}\" 2>/dev/null\n  else\n    echo \"${1}\"\n  fi\n  exit 1\n}\n\nmsg()\n{\n  if [ -x /usr/bin/zenity ] ; then\n    LD_LIBRARY_PATH=\"\" zenity --info --text \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/kdialog ] ; then\n    LD_LIBRARY_PATH=\"\" kdialog --msgbox \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/Xdialog ] ; then\n    LD_LIBRARY_PATH=\"\" Xdialog --msgbox \"${1}\" 2>/dev/null\n  else\n    echo \"${1}\"\n  fi\n}\n\nexec_as_root()\n{\n    #if [ -x /usr/bin/gksudo ] ; then\n    #    LD_LIBRARY_PATH=\"\" /usr/bin/gksudo \"$@\"\n    if [ -x /usr/bin/kdesudo ] ; then\n        LD_LIBRARY_PATH=\"\" /usr/bin/kdesudo \"$@\"\n    else\n        echo \"Cannot exec <<${@}>> as root\"\n    fi\n}\n\nyesno()\n{\n  TITLE=$1\n  TEXT=$2\n  if [ -x /usr/bin/zenity ] ; then\n    LD_LIBRARY_PATH=\"\" zenity --question --title=\"$TITLE\" --text=\"$TEXT\" 2>/dev/null && RETURN=\"yes\" || RETURN=\"no\"\n  elif [ -x /usr/bin/kdialog ] ; then\n    LD_LIBRARY_PATH=\"\" kdialog --caption \"\" --title \"$TITLE\" -yesno \"$TEXT\" && RETURN=\"yes\" || RETURN=\"no\"\n  elif [ -x /usr/bin/Xdialog ] ; then\n    LD_LIBRARY_PATH=\"\" Xdialog --title \"$TITLE\" --clear --yesno \"$TEXT\" 10 80 && RETURN=\"yes\" || RETURN=\"no\"\n  else\n    echo \"zenity, kdialog, Xdialog missing. Skipping ${THIS}.\"\n    exit 0\n  fi\n}\n\ncheck_prevent()\n{\n  FILE=$1\n  if [ -e \"$FILE\" ] ; then\n    exit 0\n  fi\n}\n\ncheck_dep()\n{\n  DEP=$1\n  if [ -z $(which $DEP) ] ; then\n    echo \"$DEP is missing. Skipping ${THIS}.\"\n    exit 0\n  fi\n}\n\n# Determine where the desktop file should be installed\nif [[ $EUID -ne 0 ]]; then\n   DESTINATION_DIR_DESKTOP=\"$HOME/.local/share/applications\"\n   STAMP_DIR=\"$HOME/.local/share/$VENDORPREFIX\"\n   SYSTEM_WIDE=\"\"\nelse\n   # TODO: Check $XDG_DATA_DIRS\n   DESTINATION_DIR_DESKTOP=\"/usr/local/share/applications\"\n   STAMP_DIR=\"/etc/$VENDORPREFIX\"\n   SYSTEM_WIDE=\"--mode system\" # for xdg-mime and xdg-icon-resource\nfi\n\n# Remove desktop integration for this AppImage\nif [ \"x$1\" = \"x--remove-appimage-desktop-integration\" ] ; then\n  SKIP=\"yes\"\n  rm -f \"$STAMP_DIR/${APP}_no_desktopintegration\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n  check_dep xdg-desktop-menu\n  xdg-desktop-menu forceupdate\n  exit 0\nelif [ \"x$1\" = \"x--install-ftdi\" ] ; then\n  SKIP=\"yes\"\n  echo \"Install FTDI drivers\"\n  OOCD_RULE=$(<<EOF\nACTION!=\"add|change\", GOTO=\"openocd_rules_end\"\nSUBSYSTEM!=\"usb\", GOTO=\"openocd_rules_end\"\nENV{DEVTYPE}!=\"usb_device\", GOTO=\"openocd_rules_end\"\nATTRS{idVendor}==\"0406\", ATTRS{idProduct}==\"6010\", MODE=\"666\", GROUP=\"plugdev\"\nLABEL=\"openocd_rules_end\"\nEOF\n)\n  echo ${OOCD_RULE} > /etc/udev/rules.d/60-openocd.rules &&\n  udevadm control -R &&\n  msg \"Install FTDI driver OK\" ||\n  msg \"Install FTDI driver FAIL\"\n  exit 0\nelif [ \"x$1\" = \"x--uninstall-ftdi\" ] ; then\n  SKIP=\"yes\"\n  echo \"Uninstall FTDI drivers\"\n  rm -f /etc/udev/rules.d/60-openocd.rules &&\n  udevadm control -R &&\n  msg \"Uninstall FTDI driver OK\" ||\n  msg \"Uninstall FTDI driver FAIL\" ||\n  exit 0\nfi\n\n# Exit immediately if one of these files is present\n# (e.g., because the desktop environment wants to handle desktop integration itself)\ncheck_prevent \"$HOME/.local/share/$VENDORPREFIX/no_desktopintegration\"\ncheck_prevent \"/usr/share/$VENDORPREFIX/no_desktopintegration\"\ncheck_prevent \"/etc/$VENDORPREFIX/no_desktopintegration\"\n\n# Exit immediately if appimaged is running\npidof appimaged >/dev/null 2>&1 && exit 0\n\n# Exit immediately if $DESKTOPINTEGRATION is not empty\nif [ ! -z \"$DESKTOPINTEGRATION\" ] ; then\n  exit 0\nfi\n\n# Check whether dependencies are present in base system (we do not bundle these)\n# http://cgit.freedesktop.org/xdg/desktop-file-utils/\ncheck_dep desktop-file-validate\ncheck_dep update-desktop-database\ncheck_dep desktop-file-install\ncheck_dep xdg-icon-resource\ncheck_dep xdg-mime\ncheck_dep xdg-desktop-menu\n\n# Exit immediately if one of these files is present (disabled per app)\ncheck_prevent \"$HOME/.local/share/$VENDORPREFIX/${APP}_no_desktopintegration\"\ncheck_prevent \"/usr/share/$VENDORPREFIX/${APP}_no_desktopintegration\"\ncheck_prevent \"/etc/$VENDORPREFIX/${APP}_no_desktopintegration\"\n\nif [ ! -f \"$DESKTOPFILE\" ] ; then\n  echo \"Desktop file is missing. Please run ${THIS} from within an AppImage.\"\n  exit 0\nfi\n\nif [ -z \"$APPIMAGE\" ] ; then\n  APPIMAGE=\"$APPDIR/AppRun\"\n  # Not running from within an AppImage; hence using the AppRun for Exec=\nfi\n\nICONFILE=\"$APPDIR/.DirIcon\"\n\n# $XDG_DATA_DIRS contains the default paths /usr/local/share:/usr/share\n# desktop file has to be installed in an applications subdirectory\n# of one of the $XDG_DATA_DIRS components\nif [ -z \"$XDG_DATA_DIRS\" ] ; then\n  echo \"\\$XDG_DATA_DIRS is missing. Please run ${THIS} from within an AppImage.\"\n  exit 0\nfi\n\n# Check if the desktop file is already there\n# and if so, whether it points to the same AppImage\nif [ -e \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" ] ; then\n  # echo \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME already there\"\n  EXEC=$(grep \"^Exec=\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" | head -n 1 | cut -d \" \" -f 1)\n  # echo $EXEC\n  if [ \"Exec=\\\"$APPIMAGE\\\"\" == \"$EXEC\" ] ; then\n    exit 0\n  fi\nfi\n\n# We ask the user only if we have found no reason to skip until here\nif [ -z \"$SKIP\" ] ; then\n  yesno \"Install\" \"Would you like to integrate $APPIMAGE with your system?\\n\\nThis will add it to your applications menu and install icons.\\nIf you don't do this you can still launch the application by double-clicking on the AppImage.\"\nfi\n\nif [ \"$RETURN\" = \"no\" ] ; then\n  yesno \"Disable question?\" \"Should this question be permanently disabled for $APP?\\n\\nTo re-enable this question you have to delete\\n\\\"$STAMP_DIR/${APP}_no_desktopintegration\\\"\"\n  if [ \"$RETURN\" = \"yes\" ] ; then\n    mkdir -p \"$STAMP_DIR\"\n    touch \"$STAMP_DIR/${APP}_no_desktopintegration\"\n  fi\n  exit 0\nfi\n\n# If the user has agreed, rewrite and install the desktop file, and the MIME information\nif [ -z \"$SKIP\" ] ; then\n  # desktop-file-install is supposed to install .desktop files to the user's\n  # applications directory when run as a non-root user,\n  # and to /usr/share/applications if run as root\n  # but that does not really work for me...\n  #\n  # For Exec we must use quotes\n  # For TryExec quotes is not supported, so, space must be replaced to \\s\n  # https://askubuntu.com/questions/175404/how-to-add-space-to-exec-path-in-a-thumbnailer-descrption/175567\n  RESOURCE_NAME=$(echo \"$VENDORPREFIX-$DESKTOPFILE_NAME\" | sed -e 's/.desktop//g')\n  desktop-file-install --rebuild-mime-info-cache \\\n    --vendor=$VENDORPREFIX --set-key=Exec --set-value=\"\\\"${APPIMAGE}\\\" %U\" \\\n    --set-key=X-AppImage-Comment --set-value=\"Generated by ${THIS}\" \\\n    --set-icon=\"$RESOURCE_NAME\" --set-key=TryExec --set-value=${APPIMAGE// /\\\\s} \"$DESKTOPFILE\" \\\n    --dir \"$DESTINATION_DIR_DESKTOP\"\n  chmod a+x \"$DESTINATION_DIR_DESKTOP/\"*\n  echo $RESOURCE_NAME\n  echo $APP\n\n  # delete \"Actions\" entry and add an \"Uninstall\" action\n  echo $(date)\n  sed -i -e \"s/XXX_APP_FULL_XXX/$APP_FULL/\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n  sed -i -e \"s!XXX_APPIMAGE_XXX!\\\"$APPIMAGE\\\"!\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n  #sed -i -e '/^Actions=/d' \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n  #cat >> \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" << EOF\n  #\n  #\n  #EOF\n\n  # Install the icon files for the application; TODO: scalable\n  ICONS=$(find \"${APPDIR}\" -iwholename \"*/${APP}.png\" 2>/dev/null || true)\n  echo \"Icons for ${APP} on ${APPDIR} ${ICONS}\"\n  for ICON in $ICONS ; do\n    ICON_SIZE=256\n    echo \"Installing ${ICON} to size ${ICON_SIZE} on resource ${RESOURCE_NAME}\"\n    xdg-icon-resource install --context apps --size ${ICON_SIZE} \"${ICON}\" \"${RESOURCE_NAME}\"\n  done\n\n  # Install mime type\n  find \"${APPDIR}/usr/share/mime/\" -type f -name *xml -exec xdg-mime install $SYSTEM_WIDE --novendor {} \\; 2>/dev/null || true\n\n  # Install the icon files for the mime type; TODO: scalable\n  ICONS=$(find \"${APPDIR}\" -iwholename \"*/mimetypes/*.png\" 2>/dev/null || true)\n  for ICON in $ICONS ; do\n    ICON_SIZE=$(echo \"${ICON}\" | rev | cut -d \"/\" -f 3 | rev | cut -d \"x\" -f 1)\n    xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} \"${ICON}\" $(basename $ICON | sed -e 's/.png//g')\n  done\n\n  xdg-desktop-menu forceupdate\n  gtk-update-icon-cache # for MIME\nfi\n"
  },
  {
    "path": "ide/skeleton/ftdi-tools.sh",
    "content": "#!/bin/bash\nU=$(id -u)\necho \"Execute as user $U\"\n\n# check for root\nif [ $U -ne 0 ]; then\n    echo \"Re-exec as root...\"\n    tmpFile=$(tempfile -m 0755 -p ftdi-tools_ -s .sh)\n    SELF=$(readlink -f $0)\n    cat $SELF > $tmpFile\n    pkexec $tmpFile $*\n    rm $tmpFile\n    exit 0\nfi\n\nif [ \"x$1\" = \"x--install\" ] ; then\n  echo \"Install FTDI drivers\"\n  UDEV_FILE=/etc/udev/rules.d/60-openocd.rules\n  cat > $UDEV_FILE <<EOF\n# Copy this file to /etc/udev/rules.d/\n# If rules fail to reload automatically, you can refresh udev rules\n# with the command \"udevadm control --reload\"\n\nACTION!=\"add|change\", GOTO=\"openocd_rules_end\"\nSUBSYSTEM!=\"usb|tty|hidraw\", GOTO=\"openocd_rules_end\"\n\n# [GNU MCU Eclipse] -----------------------------------------------------------\n# To simplify access, the access rights were changed from:\n#   MODE=\"660\", GROUP=\"plugdev\", TAG+=\"uaccess\"\n# to:\n#   MODE=\"666\"\n# -----------------------------------------------------------------------------\n\n# Please keep this list sorted by VID:PID\n\n# opendous and estick\nATTRS{idVendor}==\"03eb\", ATTRS{idProduct}==\"204f\", MODE=\"666\"\n\n# Original FT232/FT245 VID:PID\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6001\", MODE=\"666\"\n\n# Original FT2232 VID:PID\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6010\", MODE=\"666\"\n\n# Original FT4232 VID:PID\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6011\", MODE=\"666\"\n\n# Original FT232H VID:PID\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"6014\", MODE=\"666\"\n\n# DISTORTEC JTAG-lock-pick Tiny 2\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"8220\", MODE=\"666\"\n\n# TUMPA, TUMPA Lite\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"8a98\", MODE=\"666\"\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"8a99\", MODE=\"666\"\n\n# XDS100v2\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"a6d0\", MODE=\"666\"\n\n# Xverve Signalyzer Tool (DT-USB-ST), Signalyzer LITE (DT-USB-SLITE)\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bca0\", MODE=\"666\"\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bca1\", MODE=\"666\"\n\n# TI/Luminary Stellaris Evaluation Board FTDI (several)\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bcd9\", MODE=\"666\"\n\n# TI/Luminary Stellaris In-Circuit Debug Interface FTDI (ICDI) Board\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bcda\", MODE=\"666\"\n\n# egnite Turtelizer 2\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"bdc8\", MODE=\"666\"\n\n# Section5 ICEbear\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"c140\", MODE=\"666\"\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"c141\", MODE=\"666\"\n\n# Amontec JTAGkey and JTAGkey-tiny\nATTRS{idVendor}==\"0403\", ATTRS{idProduct}==\"cff8\", MODE=\"666\"\n\n# TI ICDI\nATTRS{idVendor}==\"0451\", ATTRS{idProduct}==\"c32a\", MODE=\"666\"\n\n# STMicroelectronics ST-LINK V1\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3744\", MODE=\"666\"\n\n# STMicroelectronics ST-LINK/V2\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3748\", MODE=\"666\"\n\n# STMicroelectronics ST-LINK/V2.1\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"374b\", MODE=\"666\"\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3752\", MODE=\"666\"\n\n# STMicroelectronics STLINK-V3\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"374d\", MODE=\"666\"\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"374e\", MODE=\"666\"\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"374f\", MODE=\"666\"\nATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"3753\", MODE=\"666\"\n\n# Cypress KitProg in KitProg mode\nATTRS{idVendor}==\"04b4\", ATTRS{idProduct}==\"f139\", MODE=\"666\"\n\n# Cypress KitProg in CMSIS-DAP mode\nATTRS{idVendor}==\"04b4\", ATTRS{idProduct}==\"f138\", MODE=\"666\"\n\n# Hilscher NXHX Boards\nATTRS{idVendor}==\"0640\", ATTRS{idProduct}==\"0028\", MODE=\"666\"\n\n# Hitex STR9-comStick\nATTRS{idVendor}==\"0640\", ATTRS{idProduct}==\"002c\", MODE=\"666\"\n\n# Hitex STM32-PerformanceStick\nATTRS{idVendor}==\"0640\", ATTRS{idProduct}==\"002d\", MODE=\"666\"\n\n# Altera USB Blaster\nATTRS{idVendor}==\"09fb\", ATTRS{idProduct}==\"6001\", MODE=\"666\"\n\n# Amontec JTAGkey-HiSpeed\nATTRS{idVendor}==\"0fbb\", ATTRS{idProduct}==\"1000\", MODE=\"666\"\n\n# SEGGER J-Link\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0101\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0102\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0103\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0104\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0105\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0107\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"0108\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1010\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1011\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1012\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1013\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1014\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1015\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1016\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1017\", MODE=\"666\"\nATTRS{idVendor}==\"1366\", ATTRS{idProduct}==\"1018\", MODE=\"666\"\n\n# Raisonance RLink\nATTRS{idVendor}==\"138e\", ATTRS{idProduct}==\"9000\", MODE=\"666\"\n\n# Debug Board for Neo1973\nATTRS{idVendor}==\"1457\", ATTRS{idProduct}==\"5118\", MODE=\"666\"\n\n# Olimex ARM-USB-OCD\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"0003\", MODE=\"666\"\n\n# Olimex ARM-USB-OCD-TINY\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"0004\", MODE=\"666\"\n\n# Olimex ARM-JTAG-EW\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"001e\", MODE=\"666\"\n\n# Olimex ARM-USB-OCD-TINY-H\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"002a\", MODE=\"666\"\n\n# Olimex ARM-USB-OCD-H\nATTRS{idVendor}==\"15ba\", ATTRS{idProduct}==\"002b\", MODE=\"666\"\n\n# USBprog with OpenOCD firmware\nATTRS{idVendor}==\"1781\", ATTRS{idProduct}==\"0c63\", MODE=\"666\"\n\n# TI/Luminary Stellaris In-Circuit Debug Interface (ICDI) Board\nATTRS{idVendor}==\"1cbe\", ATTRS{idProduct}==\"00fd\", MODE=\"666\"\n\n# TI XDS110 Debug Probe (Launchpads and Standalone)\nATTRS{idVendor}==\"0451\", ATTRS{idProduct}==\"bef3\", MODE=\"666\"\n\n# TI Tiva-based ICDI and XDS110 probes in DFU mode\nATTRS{idVendor}==\"1cbe\", ATTRS{idProduct}==\"00ff\", MODE=\"666\"\n\n# Ambiq Micro EVK and Debug boards.\nATTRS{idVendor}==\"2aec\", ATTRS{idProduct}==\"6010\", MODE=\"666\"\nATTRS{idVendor}==\"2aec\", ATTRS{idProduct}==\"6011\", MODE=\"666\"\nATTRS{idVendor}==\"2aec\", ATTRS{idProduct}==\"1106\", MODE=\"666\"\n\n# Marvell Sheevaplug\nATTRS{idVendor}==\"9e88\", ATTRS{idProduct}==\"9e8f\", MODE=\"666\"\n\n# Keil Software, Inc. ULink\nATTRS{idVendor}==\"c251\", ATTRS{idProduct}==\"2710\", MODE=\"666\"\n\n# CMSIS-DAP compatible adapters\nATTRS{product}==\"*CMSIS-DAP*\", MODE=\"666\"\n\nLABEL=\"openocd_rules_end\"\nEOF\n  udevadm control -R &&\n  echo \"Install FTDI driver OK\" ||\n  echo \"Install FTDI driver FAIL\"\n  exit 0\nelif [ \"x$1\" = \"x--uninstall\" ] ; then\n  SKIP=\"yes\"\n  echo \"Uninstall FTDI drivers\"\n  rm -f /etc/udev/rules.d/60-openocd.rules &&\n  udevadm control -R &&\n  echo \"Uninstall FTDI driver OK\" ||\n  echo \"Uninstall FTDI driver FAIL\" ||\n  exit 0\nfi\n"
  },
  {
    "path": "ide/tar.h",
    "content": "#ifndef TAR_H\n#define TAR_H\n\n/* tar Header Block, from POSIX 1003.1-1990.  */\n\n/* POSIX header.  */\n\nstruct posix_header\n{                              /* byte offset */\n  char name[100];               /*   0 */\n  char mode[8];                 /* 100 */\n  char uid[8];                  /* 108 */\n  char gid[8];                  /* 116 */\n  char size[12];                /* 124 */\n  char mtime[12];               /* 136 */\n  char chksum[8];               /* 148 */\n  char typeflag;                /* 156 */\n  char linkname[100];           /* 157 */\n  char magic[6];                /* 257 */\n  char version[2];              /* 263 */\n  char uname[32];               /* 265 */\n  char gname[32];               /* 297 */\n  char devmajor[8];             /* 329 */\n  char devminor[8];             /* 337 */\n  char prefix[155];             /* 345 */\n  char pad[12];                /* 500 */\n};\n\n#define TMAGIC   \"ustar\"        /* ustar and a null */\n#define TMAGLEN  6\n#define TVERSION \"00\"           /* 00 and no null */\n#define TVERSLEN 2\n\n/* Values used in typeflag field.  */\n#define REGTYPE  '0'            /* regular file */\n#define AREGTYPE '\\0'           /* regular file */\n#define LNKTYPE  '1'            /* link */\n#define SYMTYPE  '2'            /* reserved */\n#define CHRTYPE  '3'            /* character special */\n#define BLKTYPE  '4'            /* block special */\n#define DIRTYPE  '5'            /* directory */\n#define FIFOTYPE '6'            /* FIFO special */\n#define CONTTYPE '7'            /* reserved */\n\n#define XHDTYPE  'x'            /* Extended header referring to the\n                                   next file in the archive */\n#define XGLTYPE  'g'            /* Global extended header */\n\n/* Bits used in the mode field, values in octal.  */\n#define TSUID    04000          /* set UID on execution */\n#define TSGID    02000          /* set GID on execution */\n#define TSVTX    01000          /* reserved */\n                                /* file permissions */\n#define TUREAD   00400          /* read by owner */\n#define TUWRITE  00200          /* write by owner */\n#define TUEXEC   00100          /* execute/search by owner */\n#define TGREAD   00040          /* read by group */\n#define TGWRITE  00020          /* write by group */\n#define TGEXEC   00010          /* execute/search by group */\n#define TOREAD   00004          /* read by other */\n#define TOWRITE  00002          /* write by other */\n#define TOEXEC   00001          /* execute/search by other */\n\n/* tar Header Block, GNU extensions.  */\n\n/* In GNU tar, SYMTYPE is for to symbolic links, and CONTTYPE is for\n   contiguous files, so maybe disobeying the \"reserved\" comment in POSIX\n   header description.  I suspect these were meant to be used this way, and\n   should not have really been \"reserved\" in the published standards.  */\n\n/* *BEWARE* *BEWARE* *BEWARE* that the following information is still\n   boiling, and may change.  Even if the OLDGNU format description should be\n   accurate, the so-called GNU format is not yet fully decided.  It is\n   surely meant to use only extensions allowed by POSIX, but the sketch\n   below repeats some ugliness from the OLDGNU format, which should rather\n   go away.  Sparse files should be saved in such a way that they do *not*\n   require two passes at archive creation time.  Huge files get some POSIX\n   fields to overflow, alternate solutions have to be sought for this.  */\n\n/* Descriptor for a single file hole.  */\n\nstruct sparse\n{                              /* byte offset */\n  char offset[12];              /*   0 */\n  char numbytes[12];            /*  12 */\n                                /*  24 */\n};\n\n/* Sparse files are not supported in POSIX ustar format.  For sparse files\n   with a POSIX header, a GNU extra header is provided which holds overall\n   sparse information and a few sparse descriptors.  When an old GNU header\n   replaces both the POSIX header and the GNU extra header, it holds some\n   sparse descriptors too.  Whether POSIX or not, if more sparse descriptors\n   are still needed, they are put into as many successive sparse headers as\n   necessary.  The following constants tell how many sparse descriptors fit\n   in each kind of header able to hold them.  */\n\n#define SPARSES_IN_EXTRA_HEADER  16\n#define SPARSES_IN_OLDGNU_HEADER 4\n#define SPARSES_IN_SPARSE_HEADER 21\n\n/* Extension header for sparse files, used immediately after the GNU extra\n   header, and used only if all sparse information cannot fit into that\n   extra header.  There might even be many such extension headers, one after\n   the other, until all sparse information has been recorded.  */\n\nstruct sparse_header\n{                              /* byte offset */\n  struct sparse sp[SPARSES_IN_SPARSE_HEADER];\n                                /*   0 */\n  char isextended;              /* 504 */\n                                /* 505 */\n};\n\n/* The old GNU format header conflicts with POSIX format in such a way that\n   POSIX archives may fool old GNU tar's, and POSIX tar's might well be\n   fooled by old GNU tar archives.  An old GNU format header uses the space\n   used by the prefix field in a POSIX header, and cumulates information\n   normally found in a GNU extra header.  With an old GNU tar header, we\n   never see any POSIX header nor GNU extra header.  Supplementary sparse\n   headers are allowed, however.  */\n\nstruct oldgnu_header\n{                              /* byte offset */\n  char unused_pad1[345];        /*   0 */\n  char atime[12];               /* 345 Incr. archive: atime of the file */\n  char ctime[12];               /* 357 Incr. archive: ctime of the file */\n  char offset[12];              /* 369 Multivolume archive: the offset of\n                                   the start of this volume */\n  char longnames[4];            /* 381 Not used */\n  char unused_pad2;             /* 385 */\n  struct sparse sp[SPARSES_IN_OLDGNU_HEADER];\n                                /* 386 */\n  char isextended;              /* 482 Sparse file: Extension sparse header\n                                   follows */\n  char realsize[12];            /* 483 Sparse file: Real size*/\n                                /* 495 */\n};\n\n/* OLDGNU_MAGIC uses both magic and version fields, which are contiguous.\n   Found in an archive, it indicates an old GNU header format, which will be\n   hopefully become obsolescent.  With OLDGNU_MAGIC, uname and gname are\n   valid, though the header is not truly POSIX conforming.  */\n#define OLDGNU_MAGIC \"ustar  \"  /* 7 chars and a null */\n\n/* The standards committee allows only capital A through capital Z for\n   user-defined expansion.  Other letters in use include:\n\n   'A' Solaris Access Control List\n   'E' Solaris Extended Attribute File\n   'I' Inode only, as in 'star'\n   'N' Obsolete GNU tar, for file names that do not fit into the main header.\n   'X' POSIX 1003.1-2001 eXtended (VU version)  */\n\n/* This is a dir entry that contains the names of files that were in the\n   dir at the time the dump was made.  */\n#define GNUTYPE_DUMPDIR 'D'\n\n/* Identifies the *next* file on the tape as having a long linkname.  */\n#define GNUTYPE_LONGLINK 'K'\n\n/* Identifies the *next* file on the tape as having a long name.  */\n#define GNUTYPE_LONGNAME 'L'\n\n/* This is the continuation of a file that began on another volume.  */\n#define GNUTYPE_MULTIVOL 'M'\n\n/* This is for sparse files.  */\n#define GNUTYPE_SPARSE 'S'\n\n/* This file is a tape/volume header.  Ignore it on extraction.  */\n#define GNUTYPE_VOLHDR 'V'\n\n/* Solaris extended header */\n#define SOLARIS_XHDTYPE 'X'\n\n/* Jörg Schilling star header */\n\nstruct star_header\n{                              /* byte offset */\n  char name[100];               /*   0 */\n  char mode[8];                 /* 100 */\n  char uid[8];                  /* 108 */\n  char gid[8];                  /* 116 */\n  char size[12];                /* 124 */\n  char mtime[12];               /* 136 */\n  char chksum[8];               /* 148 */\n  char typeflag;                /* 156 */\n  char linkname[100];           /* 157 */\n  char magic[6];                /* 257 */\n  char version[2];              /* 263 */\n  char uname[32];               /* 265 */\n  char gname[32];               /* 297 */\n  char devmajor[8];             /* 329 */\n  char devminor[8];             /* 337 */\n  char prefix[131];             /* 345 */\n  char atime[12];               /* 476 */\n  char ctime[12];               /* 488 */\n                                /* 500 */\n};\n\n#define SPARSES_IN_STAR_HEADER      4\n#define SPARSES_IN_STAR_EXT_HEADER  21\n\nstruct star_in_header\n{\n  char fill[345];       /*   0  Everything that is before t_prefix */\n  char prefix[1];       /* 345  t_name prefix */\n  char fill2;           /* 346  */\n  char fill3[8];        /* 347  */\n  char isextended;      /* 355  */\n  struct sparse sp[SPARSES_IN_STAR_HEADER]; /* 356  */\n  char realsize[12];    /* 452  Actual size of the file */\n  char offset[12];      /* 464  Offset of multivolume contents */\n  char atime[12];       /* 476  */\n  char ctime[12];       /* 488  */\n  char mfill[8];        /* 500  */\n  char xmagic[4];       /* 508  \"tar\" */\n};\n\nstruct star_ext_header\n{\n  struct sparse sp[SPARSES_IN_STAR_EXT_HEADER];\n  char isextended;\n};\n\n#endif // TAR_H\n"
  },
  {
    "path": "ide/templatefile.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"templatefile.h\"\n#include \"tar.h\"\n#include \"appconfig.h\"\n#include <zlib.h>\n\n#include <QRegularExpressionMatch>\n\nstatic const QStringList DIFF_EXTENTIONS = {\n    \"template\",\n    \"diff\",\n    \"patch\"\n};\n\nstatic const QStringList METADATA_FILENAMES = {\n    \"MANIFEST.md\",\n    \"README.md\",\n    \"MANIFEST.html\",\n    \"README.html\",\n    \"MANIFEST.htm\",\n    \"README.htm\",\n    \"MANIFEST.txt\",\n    \"README.txt\",\n    \"MANIFEST\",\n    \"README\"\n};\n\nconst QString TemplateFile::TEMPLATE_FILEDIALOG_FILTER =\n    QObject::tr(\"All knowed template formats (*.template *.tar.gz);;\"\n                \"Templates (*.template);;\"\n                \"Compressed tar with gzip (*.tar.gz);;\"\n                \"All files (*)\");\n\nTemplateFile::TemplateFile(const QFileInfo& path)\n    : info(path)\n{\n}\n\nTemplateFile::Type TemplateFile::type() const\n{\n    if (info.completeSuffix().toLower() == \"tar.gz\")\n        return Type::TarGzFile;\n    if (DIFF_EXTENTIONS.contains(info.suffix().toLower()))\n        return Type::DiffFile;\n    return Type::Unknown;\n}\n\ntemplate<typename T1, typename T2>\nstatic T1 roundupTo(T1 v, T2 n)\n{\n    v = (((v) + (n - 1)) & ~(n - 1));\n    return v;\n}\n\nDiffFile::DiffFile(const QString &path)\n{\n    constexpr auto RE_E = R\"(\\$\\{\\{(?P<name>[a-zA-Z_0-9]+)(?:\\s+(?P<type>string|items)\\:(?P<params>.*?))?\\}\\})\";\n    name = path;\n    diffText = AppConfig::readEntireTextFile(name);\n    auto m = QRegularExpression(R\"(([\\S\\s]+?)(?:^diff\\s[\\S\\s]+?)?^\\-\\-\\-\\s)\",\n                                QRegularExpression::MultilineOption).match(diffText);\n    int startOfDiff = m.hasMatch()? m.capturedEnd(1) : 0;\n    if (startOfDiff > 0)\n        manifest = diffText.mid(0, startOfDiff - 1);\n    QRegularExpression re(RE_E, QRegularExpression::MultilineOption);\n    for (auto it = re.globalMatch(diffText, startOfDiff); it.hasNext(); ) {\n        auto m = it.next();\n        QString name = m.captured(\"name\");\n        QString type = m.captured(\"type\");\n        QString params = m.captured(\"params\");\n        if (!type.isEmpty() && !params.isEmpty())\n            parameters.append({ name, type, params });\n    }\n}\n\nTarGzFile::TarGzFile(const QString &path)\n{\n    gzFile f = gzopen(path.toLocal8Bit().constData(), \"rb\");\n    if (f) {\n        posix_header h{};\n        do {\n            auto len = gzread(f, reinterpret_cast<char*>(&h), sizeof(h));\n            if (len == sizeof(h)) {\n                if (QLatin1Literal(h.magic, TMAGLEN) == \"ustar \") {\n                    QFileInfo finfo(h.name);\n                    bool ok = false;\n                    constexpr auto OCT_RADIX = 8;\n                    auto size = QString(h.size).toLong(&ok, OCT_RADIX);\n                    if (!ok)\n                        break;\n                    auto pos = gztell(f);\n                    auto name = finfo.fileName();\n                    if (METADATA_FILENAMES.contains(name)) {\n                        QByteArray buffer;\n                        buffer.resize(static_cast<int>(size));\n                        auto *ptr = buffer.data();\n                        auto readed = gzread(f, ptr, static_cast<unsigned int>(size));\n                        buffer.resize(readed);\n                        metadata = QString::fromLocal8Bit(buffer);\n                        metadataSuffix = finfo.suffix();\n                        break;\n                    }\n                    constexpr auto CHUNCK_SIZE = 512;\n                    size = roundupTo(size, CHUNCK_SIZE);\n                    gzseek(f, pos + size, SEEK_SET);\n                } else {\n                    break;\n                }\n            } else {\n                break;\n            }\n        } while(!gzeof(f));\n    }\n}\n"
  },
  {
    "path": "ide/templatefile.h",
    "content": "/*\n * This file is part of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef TEMPLATEFILE_H\n#define TEMPLATEFILE_H\n\n#include <QString>\n#include <QFileInfo>\n#include <QHash>\n\nstruct DiffParameter {\n    QString name;\n    QString type;\n    QString params;\n};\n\nstruct DiffFile {\n    QString name;\n    QString manifest;\n    QString diffText;\n    QString headerText;\n    QList<DiffParameter> parameters;\n\n    DiffFile(const QString& path);\n};\n\nstruct TarGzFile {\n    QString metadataSuffix;\n    QString metadata;\n\n    TarGzFile(const QString& path);\n};\n\nclass TemplateFile\n{\npublic:\n    enum class Type {\n        Unknown,\n        DiffFile,\n        TarGzFile,\n    };\n\n    static const QString TEMPLATE_FILEDIALOG_FILTER;\n\n    TemplateFile(const QFileInfo& path);\n\n    Type type() const;\n\nprivate:\n    QFileInfo info;\n};\n\n#endif // TEMPLATEFILE_H\n"
  },
  {
    "path": "ide/templateitemwidget.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"templateitemwidget.h\"\n#include \"ui_templateitemwidget.h\"\n\n#include \"appconfig.h\"\n\n#include <QNetworkAccessManager>\n#include <QNetworkReply>\n#include <QSaveFile>\n#include <QTemporaryFile>\n#include <utility>\n\nTemplateItem::TemplateItem(const QUrl &u, QByteArray h) : _url(u), _hash(std::move(h))\n{\n    _localFile.setFile(QDir(AppConfig::instance().templatesPath()).filePath(u.fileName()));\n}\n\nTemplateItem::TemplateItem(const QFileInfo &local) : _localFile(local)\n{\n    _url.setHost(AppConfig::instance().templatesUrl());\n    _url.setPath(_localFile.fileName());\n}\n\nTemplateItem::State TemplateItem::state() const\n{\n    State s = State::New;\n    if (file().exists())\n        s = State::Updated;\n    auto savedHash = AppConfig::instance().fileHash(file().absoluteFilePath());\n    if (hash() != savedHash && !savedHash.isEmpty())\n        s = State::Updatable;\n    if (!url().isValid())\n        s = State::Local;\n    return s;\n}\n\nTemplateItemWidget::TemplateItemWidget(QWidget *parent) :\n    QWidget(parent),\n    ui(std::make_unique<Ui::TemplateItemWidget>())\n{\n    ui->setupUi(this);\n    const struct { QAbstractButton *b; const char *name; } buttonmap[] = {\n        { ui->currentDownload, \"edit-download\" },\n        { ui->deleteFile, \"list-remove\" },\n    };\n    for (const auto& e: buttonmap)\n        e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.name })});\n\n    connect(ui->currentDownload, &QToolButton::clicked, [this]() { emit downloadStart(_item); });\n    connect(ui->deleteFile, &QToolButton::clicked, [this]() {\n        QFile f(_item.file().absoluteFilePath());\n        if (f.remove())\n            emit downloadMessage(tr(\"Remove File %1 ok\").arg(f.fileName()));\n        else\n            emit downloadError(tr(\"Error %1 removing %2\").arg(f.errorString(), f.fileName()));\n    });\n}\n\nTemplateItemWidget::~TemplateItemWidget()\n{\n}\n\nvoid TemplateItemWidget::setChecked(bool ck)\n{\n    ui->downloadOption->setChecked(ck);\n}\n\nbool TemplateItemWidget::isChecked() const\n{\n    return ui->downloadOption->isChecked();\n}\n\nvoid TemplateItemWidget::setTemplate(const TemplateItem &item)\n{\n    _item = item;\n    QColor color;\n    QString state;\n    switch(_item.state()) {\n    case TemplateItem::State::New:\n        color = Qt::darkMagenta;\n        state = tr(\"New\");\n        break;\n    case TemplateItem::State::Updated:\n        color = Qt::darkGreen;\n        state = tr(\"Updated\");\n        break;\n    case TemplateItem::State::Updatable:\n        color = Qt::darkYellow;\n        state = tr(\"Updatable\");\n        break;\n    case TemplateItem::State::Local:\n        color = Qt::darkRed;\n        state = tr(\"Local\");\n        break;\n    }\n    ui->urlLabel->setText(tr(R\"(<a href=\"%1\">%2</a>&nbsp;<tt style=\"color: %3\">[%4]</tt>)\")\n                          .arg(item.url().url(), item.url().fileName(), color.name(), state));\n    ui->progress->setValue(0);\n}\n\nconstexpr auto PERCENT = 100.00;\n\nvoid TemplateItemWidget::startDownload(QNetworkAccessManager *net)\n{\n    if (!isChecked()) {\n        emit downloadMessage(tr(\"Skipping %1\").arg(_item.file().fileName()));\n        emit downloadEnd(_item);\n        return;\n    }\n    switch (_item.state()) {\n    case TemplateItem::State::Local:\n        emit downloadMessage(tr(\"%1 not downloadable\").arg(_item.file().fileName()));\n        emit downloadEnd(_item);\n        return;\n    case TemplateItem::State::Updated:\n        emit downloadMessage(tr(\"%1 already updated\").arg(_item.file().fileName()));\n        emit downloadEnd(_item);\n        return;\n    default:\n        break;\n    }\n    auto reply = net->get(QNetworkRequest(_item.url()));\n    if (!reply) {\n        emit downloadError(tr(\"Cannot start download to %1\").arg(_item.url().toString()));\n        return;\n    }\n    auto file = new QSaveFile(_item.file().absoluteFilePath(), this);\n    connect(reply, &QNetworkReply::destroyed, file, &QFile::deleteLater);\n    if (!file->open(QFile::WriteOnly)) {\n        emit downloadError(tr(\"Cannot create file %1: %2\").arg(file->fileName(), file->errorString()));\n        reply->deleteLater();\n        return;\n    }\n    emit downloadMessage(tr(\"Start download of %1...\").arg(_item.url().fileName()));\n    connect(reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),\n            [this, reply](QNetworkReply::NetworkError)\n    {\n        emit downloadError(reply->errorString());\n        emit downloadEnd(_item);\n        reply->deleteLater();\n    });\n    connect(reply, &QNetworkReply::downloadProgress, [this](quint64 rcv, quint64 total) {\n        ui->progress->setValue(int(rcv * PERCENT / total) / int(PERCENT));\n    });\n    connect(reply, &QNetworkReply::readyRead, [reply, file]() {\n        file->write(reply->readAll());\n    });\n    connect(reply, &QNetworkReply::finished, [this, reply, file]() {\n        auto targetName = _item.file().absoluteFilePath();\n        if (!file->commit())\n            emit downloadError(tr(\"Cannot write temporay file %1 to %2\").arg(file->fileName(), targetName));\n        reply->deleteLater();\n        ui->progress->setValue(int(PERCENT));\n        emit downloadMessage(tr(\"Download of %1 finished ok\").arg(_item.file().fileName()));\n        emit downloadEnd(_item);\n    });\n}\n"
  },
  {
    "path": "ide/templateitemwidget.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef TEMPLATEITEMWIDGET_H\n#define TEMPLATEITEMWIDGET_H\n\n#include <QFileInfo>\n#include <QUrl>\n#include <QWidget>\n\n#include <memory>\n\nnamespace Ui {\nclass TemplateItemWidget;\n}\n\nclass QNetworkAccessManager;\n\nclass TemplateItem\n{\nprivate:\n    QUrl _url;\n    QByteArray _data;\n    QFileInfo _localFile;\n    QByteArray _hash;\npublic:\n    enum class State {\n        New,\n        Updated,\n        Updatable,\n        Local,\n    };\n\n    TemplateItem() {}\n    TemplateItem(const QUrl& u, QByteArray  h);\n    TemplateItem(const QFileInfo& local);\n\n    const QUrl& url() const { return _url; }\n    void setUrl(const QUrl& u) { _url = u; }\n    const QByteArray& data() const { return _data; }\n    void setData(const QByteArray& d) { _data = d; }\n    const QFileInfo& file() const { return _localFile; }\n    void setFile(const QFileInfo& f) { _localFile = f; }\n    const QByteArray& hash() const { return _hash; }\n    void setHash(const QByteArray& h) { _hash = h; }\n    State state() const;\n};\n\nQ_DECLARE_METATYPE(TemplateItem)\n\nclass TemplateItemWidget : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit TemplateItemWidget(QWidget *parent = nullptr);\n    virtual ~TemplateItemWidget();\n\n    void setChecked(bool ck);\n    bool isChecked() const;\n    const TemplateItem& templateItem() const { return _item; }\n\npublic slots:\n    void setTemplate(const TemplateItem& item);\n    void startDownload(QNetworkAccessManager *net);\n\nsignals:\n    void downloadStart(const TemplateItem& item);\n    void downloadEnd(const TemplateItem& item);\n    void downloadMessage(const QString& msg);\n    void downloadError(const QString& msg);\n\nprivate:\n    std::unique_ptr<Ui::TemplateItemWidget> ui;\n    TemplateItem _item;\n};\n\n#endif // TEMPLATEITEMWIDGET_H\n"
  },
  {
    "path": "ide/templateitemwidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>TemplateItemWidget</class>\n <widget class=\"QWidget\" name=\"TemplateItemWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>611</width>\n    <height>43</height>\n   </rect>\n  </property>\n  <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n   <item>\n    <widget class=\"QCheckBox\" name=\"downloadOption\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Fixed\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"checked\">\n      <bool>false</bool>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QLabel\" name=\"urlLabel\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"MinimumExpanding\" vsizetype=\"Preferred\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QToolButton\" name=\"currentDownload\">\n     <property name=\"icon\">\n      <iconset theme=\"edit-download\"/>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QProgressBar\" name=\"progress\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"value\">\n      <number>24</number>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QToolButton\" name=\"deleteFile\">\n     <property name=\"icon\">\n      <iconset theme=\"list-remove\"/>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ide/templatemanager.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"appconfig.h\"\n#include \"consoleinterceptor.h\"\n#include \"templateitemwidget.h\"\n#include \"templatemanager.h\"\n#include \"ui_templatemanager.h\"\n\n#include <QNetworkAccessManager>\n#include <QNetworkRequest>\n#include <QNetworkReply>\n#include <QHash>\n#include <QFile>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <QJsonArray>\n#include <QMessageBox>\n#include <QScrollBar>\n\nstatic const QStringList KNOWED_TEMPLATE_SUFFIX{ \"template\", \"tar.gz\" };\n\nTemplateManager::TemplateManager(QWidget *parent) :\n    QWidget(parent),\n    ui(std::make_unique<Ui::TemplateManager>())\n{\n    ui->setupUi(this);\n    const struct { QAbstractButton *b; const char *name; } buttonmap[] = {\n        { ui->updateRepository, \"view-refresh\" },\n        { ui->selectAll, \"edit-select-all\" },\n        { ui->unselectAll, \"deletecell\" },\n        { ui->downloadFromRepo, \"edit-download\" },\n    };\n    for (const auto& e: buttonmap)\n        e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.name })});\n\n    ui->unselectAll->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", \"deletecell\" })});\n    setProperty(\"firstTime\", true);\n    auto net = new QNetworkAccessManager(this);\n\n    auto percentChange = [this](quint64 rcv, quint64 total) {\n        if (total == 0) {\n            rcv = 0;\n            total = 1;\n        }\n        constexpr auto FRAC_A = 1000000;\n        constexpr auto FRAC_B = FRAC_A / 100;\n        ui->totalProgressBar->setValue(int(quint64(rcv * FRAC_A) / quint64(total * FRAC_B)));\n    };\n\n    auto setSelectAllItems = [this](bool select) {\n        for (int row = 0; row < ui->widgetList->count(); row++) {\n            auto item = ui->widgetList->item(row);\n            auto widget = qobject_cast<TemplateItemWidget*>(ui->widgetList->itemWidget(item));\n            widget->setChecked(select);\n        }\n    };\n    connect(ui->downloadFromRepo, &QToolButton::clicked, [this, net]() {\n        auto first = qobject_cast<TemplateItemWidget*>(ui->widgetList->itemWidget(ui->widgetList->item(0)));\n        if (first) {\n            ui->groupBox->setEnabled(false);\n            ui->totalProgressBar->setValue(0);\n            first->startDownload(net);\n        }\n    });\n    connect(this, &TemplateManager::message, this, &TemplateManager::logMsg);\n    connect(this, &TemplateManager::errorMessage, this, &TemplateManager::logError);\n    connect(ui->selectAll, &QToolButton::clicked, [setSelectAllItems]() { setSelectAllItems(true); });\n    connect(ui->unselectAll, &QToolButton::clicked, [setSelectAllItems]() { setSelectAllItems(false); });\n\n    connect(ui->updateRepository, &QToolButton::clicked, [net, percentChange, this]() {\n        updateLocalTemplates();\n        ui->groupBox->setEnabled(false);\n        auto reply = net->get(QNetworkRequest(QUrl(ui->repoUrl->text())));\n        emit message(tr(\"Downloading metadata...\"));\n        if (!reply) {\n            ui->groupBox->setEnabled(true);\n            emit errorMessage(tr(\"Cannot download template metadata!\"));\n            return;\n        }\n\n        connect(reply, QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error),\n                [this, reply] (QNetworkReply::NetworkError)\n        {\n            reply->deleteLater();\n            ui->groupBox->setEnabled(true);\n            emit errorMessage(tr(\"Network error downloading template metadata: %1\")\n                              .arg(reply->errorString()));\n        });\n        connect(reply, &QNetworkReply::downloadProgress, percentChange);\n        connect(reply, &QNetworkReply::finished, [this, percentChange, reply, net]() {\n            reply->deleteLater();\n            ui->groupBox->setEnabled(true);\n            constexpr auto PERCENT = 100;\n            ui->totalProgressBar->setValue(PERCENT);\n            auto contents = QJsonDocument::fromJson(reply->readAll());\n            for (const auto entry : contents.array()) {\n                auto oEntry = entry.toObject();\n                auto name = oEntry.value(\"name\").toString();\n                if (KNOWED_TEMPLATE_SUFFIX.contains(QFileInfo(name).suffix())) {\n                    auto url = QUrl(oEntry.value(\"download_url\").toString());\n                    auto hash = QByteArray::fromHex(oEntry.value(\"sha\").toString().toLatin1());\n                    auto templateItem = TemplateItem(url, hash);\n                    if (itemList.contains(templateItem.file().fileName())) {\n                        auto item = itemList.value(templateItem.file().fileName());\n                        auto w = qobject_cast<TemplateItemWidget*>(ui->widgetList->itemWidget(item));\n                        w->setTemplate(templateItem);\n                    } else {\n                        auto item = new QListWidgetItem();\n                        auto w = new TemplateItemWidget();\n                        w->setTemplate(templateItem);\n                        ui->widgetList->addItem(item);\n                        ui->widgetList->setItemWidget(item, w);\n                        item->setSizeHint(w->sizeHint());\n                        itemList.insert(templateItem.file().fileName(), item);\n                    }\n                }\n            }\n            emit message(tr(\"Metadata download finished\"));\n            ui->selectAll->click();\n            AppConfig::instance().purgeHash();\n            emit haveMetadata();\n            int elementCount = ui->widgetList->count();\n            auto onDownloadEnd =  [this, percentChange, elementCount, net](const TemplateItem& templateItem) {\n                AppConfig::instance().addHash(templateItem.file().absoluteFilePath(), templateItem.hash());\n                auto item = ui->widgetList->takeItem(0);\n                delete item;\n                percentChange(quint64(elementCount - ui->widgetList->count()), quint64(elementCount));\n                if (ui->widgetList->count() > 0)\n                    qobject_cast<TemplateItemWidget*>(ui->widgetList->itemWidget(ui->widgetList->item(0)))->startDownload(net);\n                else\n                    ui->groupBox->setEnabled(true);\n            };\n            for(int i=0; i<ui->widgetList->count(); i++) {\n                auto item = ui->widgetList->item(i);\n                auto w = qobject_cast<TemplateItemWidget*>(ui->widgetList->itemWidget(item));\n                connect(w, &TemplateItemWidget::downloadMessage, [this](const QString& s) { logMsg(s); });\n                connect(w, &TemplateItemWidget::downloadError, [this](const QString& s) { logError(s); });\n                connect(w, &TemplateItemWidget::downloadStart, [net, w]() { w->startDownload(net); });\n                // FIXME: QCoreApplication::postEvent: Unexpected null receiver\n                connect(w, &TemplateItemWidget::downloadEnd, this, onDownloadEnd, Qt::QueuedConnection);\n            }\n        });\n    });\n}\n\nTemplateManager::~TemplateManager()\n{\n}\n\nQUrl TemplateManager::repositoryUrl() const\n{\n    return QUrl(ui->repoUrl->text());\n}\n\nQList<TemplateItemWidget *> TemplateManager::itemWidgets() const\n{\n    QList<TemplateItemWidget *> list;\n    for(int i=0; i<ui->widgetList->count(); i++) {\n        auto item = ui->widgetList->item(i);\n        auto w = qobject_cast<TemplateItemWidget*>(ui->widgetList->itemWidget(item));\n        if (w)\n            list.append(w);\n    }\n    return list;\n}\n\nvoid TemplateManager::setRepositoryUrl(const QUrl &url)\n{\n    ui->repoUrl->setText(url.toString());\n}\n\nvoid TemplateManager::startUpdate()\n{\n    ui->updateRepository->click();\n}\n\nvoid TemplateManager::showEvent(QShowEvent *event)\n{\n    Q_UNUSED(event)\n    if (property(\"firstTime\").toBool()) {\n        startUpdate();\n        setProperty(\"firstTime\", false);\n    }\n}\n\nvoid TemplateManager::updateLocalTemplates()\n{\n    itemList.clear();\n    ui->widgetList->clear();\n    for(const auto& t: QDir(AppConfig::instance().templatesPath()).entryInfoList({ \"*.template\" })) {\n        auto item = new QListWidgetItem(ui->widgetList);\n        auto w = new TemplateItemWidget();\n        w->setTemplate(TemplateItem(t));\n        ui->widgetList->setItemWidget(item, w);\n        itemList.insert(t.fileName(), item);\n        item->setSizeHint(w->sizeHint());\n    }\n}\n\nvoid TemplateManager::msgLog(const QString &text, const QColor &color)\n{\n    ConsoleInterceptor::writeMessageTo(ui->textBrowser, text, color);\n}\n\nvoid TemplateManager::logError(const QString &text) {\n    msgLog(text + \"\\n\", Qt::red);\n}\n\nvoid TemplateManager::logMsg(const QString &text) {\n    msgLog(text + \"\\n\", Qt::darkBlue);\n}\n"
  },
  {
    "path": "ide/templatemanager.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef TEMPLATEMANAGER_H\n#define TEMPLATEMANAGER_H\n\n#include <QUrl>\n#include <QWidget>\n\n#include <memory>\n\nnamespace Ui {\nclass TemplateManager;\n}\n\nclass QListWidgetItem;\nclass TemplateItemWidget;\n\nclass TemplateManager : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit TemplateManager(QWidget *parent = nullptr);\n    virtual ~TemplateManager();\n\n    QUrl repositoryUrl() const;\n\n    QList<TemplateItemWidget*> itemWidgets() const;\n\nsignals:\n    void errorMessage(const QString& text);\n    void message(const QString& text);\n    void haveMetadata();\n\npublic slots:\n    void setRepositoryUrl(const QUrl& url);\n    void startUpdate();\n\nprivate slots:\n    void msgLog(const QString& text, const QColor& color);\n    void logError(const QString& text);\n    void logMsg(const QString& text);\n\nprotected:\n    void showEvent(QShowEvent *event);\n\nprivate:\n    std::unique_ptr<Ui::TemplateManager> ui;\n    QHash<QString, QListWidgetItem*> itemList;\n\n    void updateLocalTemplates();\n};\n\n#endif // TEMPLATEMANAGER_H\n"
  },
  {
    "path": "ide/templatemanager.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>TemplateManager</class>\n <widget class=\"QWidget\" name=\"TemplateManager\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>536</width>\n    <height>422</height>\n   </rect>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupBox\">\n     <property name=\"title\">\n      <string>Repository URL</string>\n     </property>\n     <layout class=\"QGridLayout\" name=\"gridLayout\">\n      <item row=\"0\" column=\"0\">\n       <widget class=\"QLineEdit\" name=\"repoUrl\"/>\n      </item>\n      <item row=\"0\" column=\"1\">\n       <widget class=\"QToolButton\" name=\"updateRepository\">\n        <property name=\"icon\">\n         <iconset theme=\"view-refresh\"/>\n        </property>\n       </widget>\n      </item>\n      <item row=\"0\" column=\"2\">\n       <widget class=\"QToolButton\" name=\"selectAll\">\n        <property name=\"text\">\n         <string>...</string>\n        </property>\n        <property name=\"icon\">\n         <iconset theme=\"edit-select-all\"/>\n        </property>\n       </widget>\n      </item>\n      <item row=\"0\" column=\"3\">\n       <widget class=\"QToolButton\" name=\"unselectAll\">\n        <property name=\"text\">\n         <string>...</string>\n        </property>\n        <property name=\"icon\">\n         <iconset theme=\"deletecell\"/>\n        </property>\n       </widget>\n      </item>\n      <item row=\"0\" column=\"4\">\n       <widget class=\"QToolButton\" name=\"downloadFromRepo\">\n        <property name=\"text\">\n         <string>...</string>\n        </property>\n        <property name=\"icon\">\n         <iconset theme=\"edit-download\"/>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"0\" colspan=\"5\">\n       <widget class=\"QProgressBar\" name=\"totalProgressBar\"/>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QListWidget\" name=\"widgetList\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Expanding\">\n       <horstretch>0</horstretch>\n       <verstretch>1</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"editTriggers\">\n      <set>QAbstractItemView::NoEditTriggers</set>\n     </property>\n     <property name=\"alternatingRowColors\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QTextBrowser\" name=\"textBrowser\">\n     <property name=\"maximumSize\">\n      <size>\n       <width>16777215</width>\n       <height>120</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ide/textmessagebrocker.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"textmessagebrocker.h\"\n\nTextMessageBrocker::TextMessageBrocker(QObject *parent) : QObject(parent)\n{\n\n}\n\nTextMessageBrocker &TextMessageBrocker::instance()\n{\n    static TextMessageBrocker *ptr = nullptr;\n    if (!ptr)\n        ptr = new TextMessageBrocker();\n    return *ptr;\n}\n\nvoid TextMessageBrocker::publish(const QString &topic, const QString &message)\n{\n    emit published(topic, message);\n}\n"
  },
  {
    "path": "ide/textmessagebrocker.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef TEXTMESSAGEBROCKER_H\n#define TEXTMESSAGEBROCKER_H\n\n#include <QObject>\n\nnamespace TextMessages {\nconstexpr auto STDERR_LOG = \"stderrLog\";\nconstexpr auto STDOUT_LOG = \"stdoutLog\";\nconstexpr auto ACTION_LABEL = \"actionLabel\";\nconstexpr auto DEBUG_IP_CHANGE = \"debug_ip_change\";\n};\n\nclass TextMessageBrocker : public QObject\n{\n    Q_OBJECT\n\nprivate:\n    explicit TextMessageBrocker(QObject *parent = nullptr);\n\npublic:\n    static TextMessageBrocker &instance();\n\n    template<typename Function>\n    TextMessageBrocker& subscribe(const QString& topic, Function func) {\n        connect(this, &TextMessageBrocker::published,\n                [this, topic, func](const QString& t, const QString& msg)\n        {\n            if (topic == t)\n                func(msg);\n        });\n        return *this;\n    }\n\n    template<typename Class, typename Function>\n    TextMessageBrocker& subscribe(const QString& topic, Class obj, Function func) {\n        connect(this, &TextMessageBrocker::published,\n                [this, topic, obj, func](const QString& t, const QString& msg)\n        {\n            if (topic == t)\n                (obj->*func)(msg);\n        });\n        return *this;\n    }\n\nsignals:\n    void published(const QString& topic, const QString& message);\n\npublic slots:\n    void publish(const QString& topic, const QString& message);\n};\n\n#endif // TEXTMESSAGEBROCKER_H\n"
  },
  {
    "path": "ide/translations/es.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"es_ES\">\n<context>\n    <name>BuildManager</name>\n    <message>\n        <location filename=\"../buildmanager.cpp\" line=\"40\"/>\n        <source>Exit normal</source>\n        <translation>Terminado normalmente</translation>\n    </message>\n</context>\n<context>\n    <name>CPPTextEditor</name>\n    <message>\n        <location filename=\"../cpptexteditor.cpp\" line=\"197\"/>\n        <source>Find Reference</source>\n        <translation>Buscar Referencia</translation>\n    </message>\n</context>\n<context>\n    <name>ClangAutocompletionProvider</name>\n    <message>\n        <location filename=\"../clangautocompletionprovider.cpp\" line=\"150\"/>\n        <source>ctags error: %1</source>\n        <translation>error ctag: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../clangautocompletionprovider.cpp\" line=\"172\"/>\n        <source>Index finished</source>\n        <translation>Indexado finalizado</translation>\n    </message>\n    <message>\n        <location filename=\"../clangautocompletionprovider.cpp\" line=\"175\"/>\n        <source>ctags end, processing...</source>\n        <translation>ctags termino, procesando...</translation>\n    </message>\n    <message>\n        <location filename=\"../clangautocompletionprovider.cpp\" line=\"186\"/>\n        <source>Indexing by ctags...</source>\n        <translation>Indexando por ctags...</translation>\n    </message>\n    <message>\n        <source>Start indexing</source>\n        <translation type=\"vanished\">Iniciando indexado</translation>\n    </message>\n</context>\n<context>\n    <name>ConfigWidget</name>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"14\"/>\n        <source>Configuration</source>\n        <translation>Configuración</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"24\"/>\n        <source>Editor</source>\n        <translation>Editor</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"43\"/>\n        <source>Editor Font</source>\n        <translation>Fuentes del editor</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"105\"/>\n        <source>Color style</source>\n        <translation>Estilo de color</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"129\"/>\n        <source>Replace tabs with spaces</source>\n        <translation>Reeplazar tabs con espacios</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"30\"/>\n        <source>Save editor contents on target action</source>\n        <translation>Guardar contenido del editor al ejecutar una acción</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"50\"/>\n        <source> spaces</source>\n        <translation> espacios</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"53\"/>\n        <source>Tab width is </source>\n        <translation>Ancho del tab es </translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"69\"/>\n        <source>Detect file identation</source>\n        <translation>Detectar identación del archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"122\"/>\n        <source>Show spaces in editor</source>\n        <translation>Mostrar espacios en el editor</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"137\"/>\n        <source>Paths</source>\n        <translation>Paths</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"143\"/>\n        <source>Workspace PATH</source>\n        <translation>PATH del area de trabajo</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"164\"/>\n        <source>Additional PATHs</source>\n        <translation>PATHs adicionales</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"173\"/>\n        <location filename=\"../configwidget.ui\" line=\"190\"/>\n        <source>...</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"224\"/>\n        <source>Templates</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"229\"/>\n        <source>Proxy</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"235\"/>\n        <source>HTTP proxy for network access</source>\n        <translation>Proxy HTTP para acceso a red</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"243\"/>\n        <source>None</source>\n        <translation>Ninguno</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"253\"/>\n        <source>System proxy</source>\n        <translation>Proxy del sistema</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"263\"/>\n        <source>Custom proxy</source>\n        <translation>Proxy manual</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"277\"/>\n        <source>Host</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"287\"/>\n        <source>localhost</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"294\"/>\n        <source>Port</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"304\"/>\n        <source>3128</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"326\"/>\n        <source>Proxy authentication</source>\n        <translation>Autenticación del proxy</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"338\"/>\n        <source>Username</source>\n        <translation>Nombre de usuario</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"352\"/>\n        <source>Password</source>\n        <translation>Contraseña</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"373\"/>\n        <source>Behavior</source>\n        <translation>Comportamiento</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"421\"/>\n        <source>Log View Font</source>\n        <translation>Fuente del visor de logs</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"435\"/>\n        <source>Use dark style</source>\n        <translation>Usar tema oscuro</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"442\"/>\n        <source>Check for project templates updates at start up</source>\n        <translation>Verificar por actualización de los template al iniciar el programa</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"503\"/>\n        <source>Current language</source>\n        <translation>Lenguaje en uso</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"428\"/>\n        <source>Format Style</source>\n        <translation>Estilo del formateador</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"395\"/>\n        <source>Format extra paramters:</source>\n        <translation>Parametros extra del formateador:</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.ui\" line=\"462\"/>\n        <source>Use in-progress/development characteristics</source>\n        <translation>Usar caracteristicas en progreso/desarrollo</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.cpp\" line=\"95\"/>\n        <source>Select File</source>\n        <translation>Seleccionar archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.cpp\" line=\"106\"/>\n        <source>Select workspace directory</source>\n        <translation>Seleccionar directorio del area de trabajo</translation>\n    </message>\n    <message>\n        <location filename=\"../configwidget.cpp\" line=\"90\"/>\n        <location filename=\"../configwidget.cpp\" line=\"124\"/>\n        <source>Select directory</source>\n        <translation>Seleccionar directorio</translation>\n    </message>\n</context>\n<context>\n    <name>ConsoleInterceptor</name>\n    <message>\n        <location filename=\"../consoleinterceptor.cpp\" line=\"38\"/>\n        <source>Clear Console</source>\n        <translation>Borrar Consola</translation>\n    </message>\n    <message>\n        <location filename=\"../consoleinterceptor.cpp\" line=\"46\"/>\n        <source>Stop Current Process</source>\n        <translation>Parar Proceso Actual</translation>\n    </message>\n</context>\n<context>\n    <name>DocumentManager</name>\n    <message>\n        <source>:/images/screens/EmbeddedIDE_02.png</source>\n        <translation type=\"vanished\">:/images/screens/EmbeddedIDE_02_es.png</translation>\n    </message>\n    <message>\n        <location filename=\"../documentmanager.cpp\" line=\"74\"/>\n        <source>EmbeddedIDE_02</source>\n        <translation>EmbeddedIDE_02_es</translation>\n    </message>\n    <message>\n        <location filename=\"../documentmanager.cpp\" line=\"173\"/>\n        <source>%1 not exist</source>\n        <translation>%1 no existe</translation>\n    </message>\n</context>\n<context>\n    <name>ExternalToolManager</name>\n    <message>\n        <location filename=\"../externaltoolmanager.ui\" line=\"14\"/>\n        <source>External Tools</source>\n        <translation>Herramientas Externas</translation>\n    </message>\n    <message>\n        <location filename=\"../externaltoolmanager.ui\" line=\"20\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"../externaltoolmanager.ui\" line=\"49\"/>\n        <source>Accept</source>\n        <translation>Aceptar</translation>\n    </message>\n    <message>\n        <location filename=\"../externaltoolmanager.cpp\" line=\"58\"/>\n        <source>Description</source>\n        <translation>Descripción</translation>\n    </message>\n    <message>\n        <location filename=\"../externaltoolmanager.cpp\" line=\"58\"/>\n        <source>Command</source>\n        <translation>Comando</translation>\n    </message>\n    <message>\n        <location filename=\"../externaltoolmanager.cpp\" line=\"71\"/>\n        <source>Select File</source>\n        <translation>Seleccionar archivo</translation>\n    </message>\n</context>\n<context>\n    <name>FileSystemManager</name>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"149\"/>\n        <source>New File</source>\n        <translation>Nuevo Archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"150\"/>\n        <source>New Directory</source>\n        <translation>Nuevo Directorio</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"152\"/>\n        <source>New Symlink</source>\n        <translation>Nuvo enlace simbolico</translation>\n    </message>\n    <message>\n        <source>Properties</source>\n        <translation type=\"vanished\">Propiedades</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"154\"/>\n        <source>Execute</source>\n        <translation>Ejecutar</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"155\"/>\n        <source>Open External</source>\n        <translation>Abrir externamente</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"157\"/>\n        <source>Rename</source>\n        <translation>Renombrar</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"158\"/>\n        <source>Delete</source>\n        <translation>Borrar</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"183\"/>\n        <source>File name</source>\n        <translation>Nombre de archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"184\"/>\n        <source>Create file on %1</source>\n        <translation>Crear archivo en %1</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"189\"/>\n        <source>Error creating file</source>\n        <translation>Error creando archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"212\"/>\n        <source>Folder name</source>\n        <translation>Nombre del directorio</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"213\"/>\n        <source>Create folder on %1</source>\n        <translation>Crear directorio en %1</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"239\"/>\n        <source>Link target</source>\n        <translation>Objetivo del enlace</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"248\"/>\n        <location filename=\"../filesystemmanager.cpp\" line=\"250\"/>\n        <source>Link creation fail</source>\n        <translation>Error al crear el link</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"248\"/>\n        <source>ERROR: %1</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"250\"/>\n        <source>ERROR: Not implemented</source>\n        <translation>ERROR: No implementado</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"295\"/>\n        <source>Delete files</source>\n        <translation>Borrar archivos</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"300\"/>\n        <source>Do this operation for all items</source>\n        <translation>Hacer esta operación para todos los elementos</translation>\n    </message>\n    <message>\n        <location filename=\"../filesystemmanager.cpp\" line=\"313\"/>\n        <source>Realy remove %1</source>\n        <translation>Realmente borrar %1</translation>\n    </message>\n</context>\n<context>\n    <name>FindInFilesDialog</name>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"14\"/>\n        <source>Find in files</source>\n        <translation>Buscar en archivos</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"22\"/>\n        <source>Directory</source>\n        <translation>Directorio</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"53\"/>\n        <source>File pattern</source>\n        <translation>Patron de archivos</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"84\"/>\n        <source>Text to find</source>\n        <translation>Texto a buscar</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"64\"/>\n        <source>Regular Expression</source>\n        <translation>Expresion regular</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"65\"/>\n        <source>Case Sensitive</source>\n        <translation>Sensible a las mayusculas</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"66\"/>\n        <source>Wole Words</source>\n        <translation>Solo palabras completas</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"68\"/>\n        <source>Ready</source>\n        <translation>Listo</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"129\"/>\n        <source>Scanning file:</source>\n        <translation>Inspeccionando archivos:</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"150\"/>\n        <source>Line %1 Char %2: %3</source>\n        <translation>Linea %1 caracter %2: %3</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"163\"/>\n        <source>Done</source>\n        <translation>Listo</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"176\"/>\n        <source>Select directory</source>\n        <translation>Seleccionar directorio</translation>\n    </message>\n</context>\n<context>\n    <name>FormFindReplace</name>\n    <message>\n        <location filename=\"../formfindreplace.ui\" line=\"32\"/>\n        <source>Find</source>\n        <translation>Buscar</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.ui\" line=\"66\"/>\n        <source>Replace</source>\n        <translation>Reemplazar</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"42\"/>\n        <source>Regular Expression</source>\n        <translation>Expresion regular</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"43\"/>\n        <source>Case Sensitive</source>\n        <translation>Sensible a las mayusculas</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"44\"/>\n        <source>Wole Words</source>\n        <translation>Solo palabras completas</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"45\"/>\n        <source>Selection Only</source>\n        <translation>Solo en la selección</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"46\"/>\n        <source>Wrap search</source>\n        <translation>Reiniciar desde el principio</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"47\"/>\n        <source>Backward search</source>\n        <translation>Busqueda hacia atras</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"50\"/>\n        <source>Replace All</source>\n        <translation>Reemplazar todo</translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"83\"/>\n        <source>Reload Project</source>\n        <translation>Recargar Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"106\"/>\n        <source>Close Project</source>\n        <translation>Cerrar Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"169\"/>\n        <source>Export project</source>\n        <translation>Exportar Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"195\"/>\n        <source>Find in files</source>\n        <translation>Buscar en archivos</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"218\"/>\n        <source>Tool menu</source>\n        <translation>Menu de herramientas</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"257\"/>\n        <location filename=\"../mainwindow.ui\" line=\"329\"/>\n        <location filename=\"../mainwindow.ui\" line=\"362\"/>\n        <location filename=\"../mainwindow.ui\" line=\"382\"/>\n        <location filename=\"../mainwindow.ui\" line=\"402\"/>\n        <location filename=\"../mainwindow.ui\" line=\"929\"/>\n        <source>Configuration</source>\n        <translation>Configuración</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"280\"/>\n        <source>Launch Debug</source>\n        <translation>Lanzar depurador</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"466\"/>\n        <source>Close current</source>\n        <translation>Cerrar actual</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"492\"/>\n        <source>Save current</source>\n        <translation>Guardar actual</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"537\"/>\n        <source>Close all</source>\n        <translation>Cerrar todos</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"563\"/>\n        <source>Save all</source>\n        <translation>Guardar todos</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"633\"/>\n        <source>Reload Document</source>\n        <translation>Recargar documento</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"717\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:16pt; font-weight:600; color:#000000;&quot;&gt;Embedded IDE&lt;br/&gt;&lt;/span&gt;&lt;span style=&quot; font-size:10pt; color:#000000;&quot;&gt;version {{version}}&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-style:italic; color:#000000;&quot;&gt;copyright © 2016-2018 by&lt;br/&gt;Martin Ribelotta&lt;br/&gt;&lt;/span&gt;&lt;a href=&quot;martinribelotta@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;martinribelotta@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt; color:#000000;&quot;&gt;This program is licenced under GPL v3 or great&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:16pt; font-weight:600; color:#000000;&quot;&gt;Embedded IDE&lt;br/&gt;&lt;/span&gt;&lt;span style=&quot; font-size:10pt; color:#000000;&quot;&gt;versión {{version}}&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-style:italic; color:#000000;&quot;&gt;copyright © 2016-2018 por&lt;br/&gt;Martin Ribelotta&lt;br/&gt;&lt;/span&gt;&lt;a href=&quot;martinribelotta@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;martinribelotta@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:10pt; color:#000000;&quot;&gt;Este programa esta bajo la GPL v3 o superior&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"900\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; color:#264367;&quot;&gt;ALT+F4&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"830\"/>\n        <source>Exit from application</source>\n        <translation>Salir de la aplicación</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"833\"/>\n        <source>Exit from app</source>\n        <translation>Salir de la aplicación</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"926\"/>\n        <source>Open Confioguration</source>\n        <translation>Abrir Configuración</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"913\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; color:#264367;&quot;&gt;CTRL+SHIFT+P&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"789\"/>\n        <source>Template Update Available</source>\n        <translation>Disponible Actualizacion de Platillas</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"1114\"/>\n        <source>Recent Projects</source>\n        <translation>Proyectos recientes</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"962\"/>\n        <source>Open Existing Project</source>\n        <translation>Abrir proyecto existente</translation>\n    </message>\n    <message>\n        <source>External tools</source>\n        <translation type=\"vanished\">Herramientas Externas</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"965\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"225\"/>\n        <source>Open Project</source>\n        <translation>Abrir proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"1000\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; color:#264367;&quot;&gt;CTRL+O&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"1013\"/>\n        <source>Create New Project</source>\n        <translation>Crear nuevo proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"1016\"/>\n        <source>New Project</source>\n        <translation>Nuevo Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"1045\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; color:#264367;&quot;&gt;CTRL+N&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"150\"/>\n        <source>%1 build at %2</source>\n        <translation>%1 construido en %2</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"225\"/>\n        <source>Makefile (Makefile);;All files (*)</source>\n        <translation>Makefile (Makefile);;Todos los archivos (*)</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"248\"/>\n        <source>New File</source>\n        <translation>Nuevo Archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"249\"/>\n        <source>Templates (*.template);;Compressed tar with gzip (*.tar.gz);;All files (*)</source>\n        <translation>Templates (*.template);;tar comprimido con gzip (*.tar.gz);;Todos los archivos (*)</translation>\n    </message>\n</context>\n<context>\n    <name>MapViewModel</name>\n    <message>\n        <location filename=\"../../mapview/mapviewmodel.cpp\" line=\"77\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"../../mapview/mapviewmodel.cpp\" line=\"78\"/>\n        <source>Address</source>\n        <translation>Dirección</translation>\n    </message>\n    <message>\n        <location filename=\"../../mapview/mapviewmodel.cpp\" line=\"79\"/>\n        <source>Size</source>\n        <translation>Tamaño</translation>\n    </message>\n    <message>\n        <location filename=\"../../mapview/mapviewmodel.cpp\" line=\"80\"/>\n        <source>Used</source>\n        <translation>Usado</translation>\n    </message>\n    <message>\n        <location filename=\"../../mapview/mapviewmodel.cpp\" line=\"81\"/>\n        <source>Percent used</source>\n        <translation>Procentaje usado</translation>\n    </message>\n    <message>\n        <location filename=\"../../mapview/mapviewmodel.cpp\" line=\"82\"/>\n        <source>Attributes</source>\n        <translation>Atributos</translation>\n    </message>\n    <message>\n        <location filename=\"../../mapview/mapviewmodel.cpp\" line=\"225\"/>\n        <source>%1 (Load %2)</source>\n        <translation>%1 (Cargado en %2)</translation>\n    </message>\n</context>\n<context>\n    <name>MarkdownEditor</name>\n    <message>\n        <location filename=\"../markdowneditor.cpp\" line=\"134\"/>\n        <source>&lt;h3&gt;Rendering...&lt;/h3&gt;</source>\n        <translation>&lt;h3&gt;Redibujando...&lt;/h3&gt;</translation>\n    </message>\n</context>\n<context>\n    <name>NewProjectDialog</name>\n    <message>\n        <location filename=\"../newprojectdialog.ui\" line=\"14\"/>\n        <source>New Project</source>\n        <translatorcomment>Nuevo Proyecto</translatorcomment>\n        <translation>Nuevo Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.ui\" line=\"26\"/>\n        <source>Project Name</source>\n        <translation>Nombre del proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.ui\" line=\"39\"/>\n        <source>Project Path</source>\n        <translation>Directorio del proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.ui\" line=\"53\"/>\n        <source>Project name and path</source>\n        <translation>Nombre y directorio del proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.ui\" line=\"124\"/>\n        <source>Create</source>\n        <translation>Crear</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.ui\" line=\"143\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.cpp\" line=\"177\"/>\n        <source>&lt;h1&gt;Compressed project in tar.gz from:&lt;/h1&gt;&lt;p&gt;&lt;tt&gt;%1&lt;/tt&gt;</source>\n        <translation>&lt;h1&gt;Proyecto comprimido en tar.gz desde:&lt;/h1&gt;&lt;p&gt;&lt;tt&gt;%1&lt;/tt&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.cpp\" line=\"186\"/>\n        <source>Select Directory</source>\n        <translation>Seleccionar directorio</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.cpp\" line=\"193\"/>\n        <source>Select File</source>\n        <translation>Seleccionar archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.cpp\" line=\"195\"/>\n        <source>Templates (*.template);;Tar compressed with gzip (*.tar.gz);;All files (*)</source>\n        <translation>Templates (*.template);;Tar comprimido con gzip (*.tar.gz);;Todos los archivos (*)</translation>\n    </message>\n</context>\n<context>\n    <name>PlainTextEditor</name>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"344\"/>\n        <source>Document Modified</source>\n        <translation>Documento Modificado</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"345\"/>\n        <source>The document is not save. Save it?</source>\n        <translation>El documento no esta guardado. ¿Guardarlo?</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"348\"/>\n        <source>Yes</source>\n        <translation>Si</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"349\"/>\n        <source>No</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"350\"/>\n        <source>Abort</source>\n        <translation>Abortar</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"607\"/>\n        <source>Undo</source>\n        <translation>Deshacer</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"608\"/>\n        <source>Redo</source>\n        <translation>Rehacer</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"610\"/>\n        <source>Cut</source>\n        <translation>Cortar</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"611\"/>\n        <source>Copy</source>\n        <translation>Copiar</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"612\"/>\n        <source>Paste</source>\n        <translation>Pegar</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"613\"/>\n        <source>Delete</source>\n        <translation>Borrar</translation>\n    </message>\n    <message>\n        <location filename=\"../plaintexteditor.cpp\" line=\"615\"/>\n        <source>Select All</source>\n        <translation>Seleccionar todo</translation>\n    </message>\n</context>\n<context>\n    <name>ProjectManager</name>\n    <message>\n        <location filename=\"../projectmanager.cpp\" line=\"153\"/>\n        <source>Finish target discover</source>\n        <translation>Finalizado descubrimiento de objetivos</translation>\n    </message>\n    <message>\n        <location filename=\"../projectmanager.cpp\" line=\"212\"/>\n        <source>Diff terminate. Exit code %1</source>\n        <translation>Diff termino. Codigo de salida %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectmanager.cpp\" line=\"217\"/>\n        <source>Diff error: %1</source>\n        <translation>Error de diff: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectmanager.cpp\" line=\"234\"/>\n        <source>tar terminate. Exit code %1</source>\n        <translation>Tar termino. Codigo de salida %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectmanager.cpp\" line=\"239\"/>\n        <source>tar error: %1</source>\n        <translation>Error de tar: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectmanager.cpp\" line=\"274\"/>\n        <source>Export sucessfull</source>\n        <translation>Exportado exitoso</translation>\n    </message>\n    <message>\n        <location filename=\"../projectmanager.cpp\" line=\"311\"/>\n        <source>Discovering targets...</source>\n        <translation>Descubriendo objetivos...</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../externaltoolmanager.cpp\" line=\"141\"/>\n        <source>Open Tool Manager</source>\n        <translation>Abrir manejador de herramientas</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.cpp\" line=\"82\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"../newprojectdialog.cpp\" line=\"82\"/>\n        <source>Value</source>\n        <translation>Valor</translation>\n    </message>\n</context>\n<context>\n    <name>TemplateItemWidget</name>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"68\"/>\n        <source>Remove File %1 ok</source>\n        <translation>Archivo %1 borrado correctamente</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"70\"/>\n        <source>Error %1 removing %2</source>\n        <translation>Error %1 borrando archivo %2</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"97\"/>\n        <source>New</source>\n        <translation>Nuevo</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"101\"/>\n        <source>Updated</source>\n        <translation>Actualizado</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"105\"/>\n        <source>Updatable</source>\n        <translation>Actualizable</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"109\"/>\n        <source>Local</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"123\"/>\n        <source>Skipping %1</source>\n        <translation>%1 saltado</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"129\"/>\n        <source>%1 not downloadable</source>\n        <translation>%1 no es descargable</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"133\"/>\n        <source>%1 already updated</source>\n        <translation>%1 ya actualizado</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"141\"/>\n        <source>Cannot start download to %1</source>\n        <translation>No se puede iniciar descarga a %1</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"147\"/>\n        <source>Cannot create file %1: %2</source>\n        <translation>No se puede crear archivo %1: %2</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"151\"/>\n        <source>Start download of %1...</source>\n        <translation>Iniciando descarga de %1...</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"168\"/>\n        <source>Cannot write temporay file %1 to %2</source>\n        <translation>No se puede escribir archivo temporal %1 a %2</translation>\n    </message>\n    <message>\n        <location filename=\"../templateitemwidget.cpp\" line=\"171\"/>\n        <source>Download of %1 finished ok</source>\n        <translation>Descarga de %1 termino exitosamente</translation>\n    </message>\n</context>\n<context>\n    <name>TemplateManager</name>\n    <message>\n        <location filename=\"../templatemanager.ui\" line=\"17\"/>\n        <source>Repository URL</source>\n        <translation>URL del repositorio</translation>\n    </message>\n    <message>\n        <location filename=\"../templatemanager.ui\" line=\"33\"/>\n        <location filename=\"../templatemanager.ui\" line=\"43\"/>\n        <location filename=\"../templatemanager.ui\" line=\"53\"/>\n        <source>...</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../templatemanager.cpp\" line=\"84\"/>\n        <source>Downloading metadata...</source>\n        <translation>Descargando metadatos...</translation>\n    </message>\n    <message>\n        <location filename=\"../templatemanager.cpp\" line=\"87\"/>\n        <source>Cannot download template metadata!</source>\n        <translation>No se puede descargar metadatos!</translation>\n    </message>\n    <message>\n        <location filename=\"../templatemanager.cpp\" line=\"96\"/>\n        <source>Network error downloading template metadata: %1</source>\n        <translation>Error de red descargando metadatos de las plantillas: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../templatemanager.cpp\" line=\"127\"/>\n        <source>Metadata download finished</source>\n        <translation>Descarga de metadatos finalizada</translation>\n    </message>\n</context>\n<context>\n    <name>UnsavedFilesDialog</name>\n    <message>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"14\"/>\n        <source>Unsaved Changes</source>\n        <translation>Archivos sin guardar</translation>\n    </message>\n    <message>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"42\"/>\n        <source>Save selected and continue</source>\n        <translation>Salvar seleccionados y continuar</translation>\n    </message>\n    <message>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"45\"/>\n        <source>Save</source>\n        <translation>Guardar</translation>\n    </message>\n    <message>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"70\"/>\n        <source>Unselect All</source>\n        <translation>Deseleccionar todos</translation>\n    </message>\n    <message>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"73\"/>\n        <source>Discart</source>\n        <translation>Descartar</translation>\n    </message>\n    <message>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"98\"/>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"101\"/>\n        <source>Select All</source>\n        <translation>Seleccionar todos</translation>\n    </message>\n    <message>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"139\"/>\n        <source>Abort action</source>\n        <translation>Abortar accion</translation>\n    </message>\n    <message>\n        <location filename=\"../unsavedfilesdialog.ui\" line=\"142\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "ide/unsavedfilesdialog.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"unsavedfilesdialog.h\"\n#include \"ui_unsavedfilesdialog.h\"\n#include \"appconfig.h\"\n\n#include \"filesystemmanager.h\"\n\n#include <QFileInfo>\n#include <QStandardItemModel>\n\nUnsavedFilesDialog::UnsavedFilesDialog(const QStringList& unsaved, QWidget *parent) :\n    QDialog(parent),\n    ui(std::make_unique<Ui::UnsavedFilesDialog>())\n{\n    ui->setupUi(this);\n    const struct { QAbstractButton *b; const char *name; } buttonmap[] = {\n        { ui->buttonSave, \"document-save-all\" },\n        { ui->buttonDiscart, \"edit-delete\" },\n        { ui->buttonSelectAll, \"dialog-ok-apply\" },\n        { ui->buttonCancel, \"dialog-cancel\" },\n    };\n    for (const auto& e: buttonmap)\n        e.b->setIcon(QIcon{AppConfig::resourceImage({ \"actions\", e.name })});\n\n    auto m = new QStandardItemModel(this);\n    ui->listView->setModel(m);\n    for(const auto& a: unsaved) {\n        auto f = QFileInfo(a);\n        auto item = new QStandardItem(FileSystemManager::iconForFile(f), f.fileName());\n        item->setCheckable(true);\n        item->setCheckState(Qt::Checked);\n        item->setData(f.absoluteFilePath());\n        item->setToolTip(f.absoluteFilePath());\n        m->appendRow(item);\n    }\n    auto setCheckAll = [m](bool ch) {\n        for(int i=0; i<m->rowCount(); i++)\n            m->item(i)->setCheckState(ch? Qt::Checked : Qt::Unchecked);\n    };\n    connect(ui->buttonCancel, &QToolButton::clicked, this, &UnsavedFilesDialog::reject);\n    connect(ui->buttonSave, &QToolButton::clicked, this, &UnsavedFilesDialog::accept);\n    connect(ui->buttonDiscart, &QToolButton::clicked, [setCheckAll, this]() { setCheckAll(false); accept(); });\n    connect(ui->buttonSelectAll, &QToolButton::clicked, [setCheckAll]() { setCheckAll(true); });\n}\n\nUnsavedFilesDialog::~UnsavedFilesDialog()\n{\n}\n\nQStringList UnsavedFilesDialog::checkedForSave() const\n{\n    QStringList selecteds;\n    auto m = qobject_cast<QStandardItemModel*>(ui->listView->model());\n    for(int i=0; i<m->rowCount(); i++)\n        if (m->item(i)->checkState() == Qt::Checked)\n            selecteds.append(m->item(i)->data().toString());\n    return selecteds;\n}\n"
  },
  {
    "path": "ide/unsavedfilesdialog.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef UNSAVEDFILESDIALOG_H\n#define UNSAVEDFILESDIALOG_H\n\n#include <QDialog>\n\n#include <memory>\n\nnamespace Ui {\nclass UnsavedFilesDialog;\n}\n\nclass UnsavedFilesDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit UnsavedFilesDialog(const QStringList &unsaved, QWidget *parent = nullptr);\n    virtual ~UnsavedFilesDialog();\n\n    QStringList checkedForSave() const;\n\nprivate:\n    std::unique_ptr<Ui::UnsavedFilesDialog> ui;\n};\n\n#endif // UNSAVEDFILESDIALOG_H\n"
  },
  {
    "path": "ide/unsavedfilesdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>UnsavedFilesDialog</class>\n <widget class=\"QDialog\" name=\"UnsavedFilesDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>651</width>\n    <height>300</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Unsaved Changes</string>\n  </property>\n  <layout class=\"QGridLayout\" name=\"gridLayout\">\n   <item row=\"0\" column=\"0\" colspan=\"4\">\n    <widget class=\"QListView\" name=\"listView\">\n     <property name=\"editTriggers\">\n      <set>QAbstractItemView::NoEditTriggers</set>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n     <property name=\"uniformItemSizes\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item row=\"2\" column=\"1\">\n    <widget class=\"QToolButton\" name=\"buttonSave\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"toolTip\">\n      <string>Save selected and continue</string>\n     </property>\n     <property name=\"text\">\n      <string>Save</string>\n     </property>\n     <property name=\"icon\">\n      <iconset theme=\"document-save-all\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>32</width>\n       <height>32</height>\n      </size>\n     </property>\n     <property name=\"toolButtonStyle\">\n      <enum>Qt::ToolButtonTextBesideIcon</enum>\n     </property>\n    </widget>\n   </item>\n   <item row=\"2\" column=\"2\">\n    <widget class=\"QToolButton\" name=\"buttonDiscart\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"toolTip\">\n      <string>Unselect All</string>\n     </property>\n     <property name=\"text\">\n      <string>Discart</string>\n     </property>\n     <property name=\"icon\">\n      <iconset theme=\"edit-delete\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>32</width>\n       <height>32</height>\n      </size>\n     </property>\n     <property name=\"toolButtonStyle\">\n      <enum>Qt::ToolButtonTextBesideIcon</enum>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"1\" colspan=\"3\">\n    <widget class=\"QToolButton\" name=\"buttonSelectAll\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"toolTip\">\n      <string>Select All</string>\n     </property>\n     <property name=\"text\">\n      <string>Select All</string>\n     </property>\n     <property name=\"icon\">\n      <iconset theme=\"dialog-ok-apply\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>32</width>\n       <height>32</height>\n      </size>\n     </property>\n     <property name=\"toolButtonStyle\">\n      <enum>Qt::ToolButtonTextBesideIcon</enum>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"0\" rowspan=\"2\">\n    <spacer name=\"horizontalSpacer\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>362</width>\n       <height>81</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n   <item row=\"2\" column=\"3\">\n    <widget class=\"QPushButton\" name=\"buttonCancel\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"toolTip\">\n      <string>Abort action</string>\n     </property>\n     <property name=\"text\">\n      <string>Cancel</string>\n     </property>\n     <property name=\"icon\">\n      <iconset theme=\"dialog-cancel\"/>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>32</width>\n       <height>32</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "ide/version.cpp",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"version.h\"\n\nconst char *VERSION = \"v0.7-pre\";\nconst char *BUILD_DATE = __DATE__ \" \" __TIME__;\n"
  },
  {
    "path": "ide/version.h",
    "content": "/*\n * This file is part of Embedded-IDE\n * \n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n * \n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef VERSION_H\n#define VERSION_H\n\nextern const char *VERSION;\nextern const char *BUILD_DATE;\n\n#endif // VERSION_H\n"
  },
  {
    "path": "mapview/main.cpp",
    "content": "#include \"mapviewmodel.h\"\n\n#include <QApplication>\n#include <QCommandLineParser>\n#include <QHeaderView>\n#include <QTreeView>\n\nint main(int argc, char *argv[])\n{\n    QApplication app(argc, argv);\n\n    QCommandLineParser opt;\n    opt.addPositionalArgument(\"filename\", \"Map file\");\n    opt.addHelpOption();\n    opt.addVersionOption();\n    opt.process(app);\n\n    if (opt.positionalArguments().isEmpty())\n        opt.showHelp(-1);\n\n    QTreeView view;\n    auto model = new MapViewModel(&view);\n    view.setAlternatingRowColors(true);\n    view.setEditTriggers(QTreeView::NoEditTriggers);\n    QObject::connect(&view, &QTreeView::expanded, [&view](const QModelIndex&) {\n        view.header()->resizeSections(QHeaderView::ResizeToContents);\n    });\n    view.setModel(model);\n    model->load(opt.positionalArguments().first());\n    view.header()->resizeSections(QHeaderView::ResizeToContents);\n    view.setItemDelegateForColumn(MapViewModel::PERCENT_COLUMN, new BarItemDelegate(&view));\n    view.show();\n    return app.exec();\n}\n"
  },
  {
    "path": "mapview/mapview.pri",
    "content": "SOURCES += $$PWD/mapviewmodel.cpp\nHEADERS += $$PWD/mapviewmodel.h\nINCLUDEPATH += $$PWD\n"
  },
  {
    "path": "mapview/mapview.pro",
    "content": "#-------------------------------------------------\n#\n# Project created by QtCreator 2018-01-24T21:04:40\n#\n#-------------------------------------------------\nDESTDIR  = ../build\nQT       += core gui widgets\nTARGET   = mapview\nTEMPLATE = app\nINSTALLS += target\nDEFINES  += QT_DEPRECATED_WARNINGS\nSOURCES  += main.cpp mapviewmodel.cpp\n\nunix {\n    isEmpty(PREFIX): PREFIX = /usr\n    target.path = $$PREFIX/bin\n}\n\nFORMS +=\n\nHEADERS += \\\n    mapviewmodel.h\n\nDISTFILES += \\\n    mapview.pri\n"
  },
  {
    "path": "mapview/mapviewmodel.cpp",
    "content": "/*\n * This file is part of mapview, a component of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include \"mapviewmodel.h\"\n\n#include <QApplication>\n#include <QFile>\n#include <QRegularExpression>\n#include <QTextStream>\n\n#include <cstddef>\n#include <cstdint>\n\n#include <QtDebug>\n#include <utility>\n\ntemplate<typename T>\nstatic QString toHex(T v) {\n    return QString(\"0x%1\").arg(v, sizeof(v) * 2, 16, QChar('0'));\n}\n\nBarItemDelegate::BarItemDelegate(QObject *parent) : QStyledItemDelegate(parent) {}\n\nBarItemDelegate::~BarItemDelegate() = default;\n\nQStandardItem *setMyData(QStandardItem *i, const QVariant& v) {\n    i->setData(v, Qt::UserRole);\n    return i;\n}\n\nQStyleOptionProgressBar BarItemDelegate::options(const QStyleOptionViewItem &option, const QModelIndex &index) const {\n    double percent = index.data(Qt::UserRole).toDouble();\n    QStyleOptionProgressBar progressBarOption;\n    progressBarOption.rect = option.rect;\n    progressBarOption.minimum = 0;\n    progressBarOption.maximum = 100;\n    progressBarOption.progress = int(percent);\n    progressBarOption.text = QString(\"%1%\").arg(percent, 3, 'f', 2, QChar('0'));\n    progressBarOption.textVisible = true;\n    return progressBarOption;\n}\n\nvoid BarItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const\n{\n    auto progressBarOption = options(option, index);\n    QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOption, painter);\n}\n\nQSize BarItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const\n{\n    auto progressBarOption = options(option, index);\n    auto textSize = option.fontMetrics.boundingRect(progressBarOption.text).size();\n    auto widgetSize = QApplication::style()->sizeFromContents(QStyle::CT_ProgressBar, &progressBarOption, textSize) * 1;\n    return widgetSize;\n}\n\nconst int MapViewModel::PERCENT_COLUMN = 4;\n\nMapViewModel::MapViewModel(QObject *parent): QStandardItemModel(parent)\n{\n    setHorizontalHeaderLabels({\n                                  tr(\"Name\"),\n                                  tr(\"Address\"),\n                                  tr(\"Size\"),\n                                  tr(\"Used\"),\n                                  tr(\"Percent used\"),\n                                  tr(\"Attributes\")\n                              });\n}\n\nMapViewModel::~MapViewModel()\n= default;\n\nstruct Symbol_t {\n    QString name;\n    size_t base;\n};\n\nstruct MemSection_t {\n    QString name;\n    size_t base{ 0 };\n    size_t size{ 0 };\n    size_t lma{ 0 };\n\n    QList<Symbol_t> symbolList;\n\n    MemSection_t() = default;\n    MemSection_t(QString  n, size_t b, size_t s, size_t l):\n        name(std::move(n)), base(b), size(s), lma(l) {}\n\n    inline bool into(size_t addr) const { return (addr >= base) && (addr <= (base + size)); }\n};\n\nstruct MemRegion_t {\n    QString name;\n    size_t base{};\n    size_t size{};\n    QString attr;\n    size_t used{};\n\n    qreal usedPercent() const {\n        return qreal(used) * 100.0 / qreal(size);\n    }\n\n    QList<MemSection_t> sections;\n\n    MemRegion_t() = default;\n    MemRegion_t(QString  n, size_t b, size_t s, QString  a):\n        name(std::move(n)), base(b), size(s), attr(std::move(a)), used(0) {}\n\n    inline bool into(size_t addr) const { return (addr >= base) && (addr <= (base + size)); }\n    inline bool into(const MemSection_t& s) const { return into(s.base) && into(s.base + s.size); }\n};\n\nbool MapViewModel::load(const QString &path)\n{\n    QFile file(path);\n    if (!file.open(QFile::ReadOnly | QFile::Text)) {\n        qDebug() << file.errorString();\n        return false;\n    }\n    auto text = QTextStream(&file).readAll();\n\n    QList<MemRegion_t> memoryRegions;\n    QList<MemSection_t*> sectionList;\n\n    int memSectionIdx = text.indexOf(\"Memory Configuration\");\n    int linkSectionIdx = text.indexOf(\"Linker script and memory map\");\n    if (memSectionIdx) {\n        QRegularExpression MEM_RE(R\"(^([a-zA-Z_][a-zA-Z0-9_]*)\\s+(0x[\\da-fA-F]+)\\s+(0x[\\da-fA-F]+)\\s*([rwx]*)$)\",\n                                  QRegularExpression::MultilineOption);\n        auto it = MEM_RE.globalMatch(text, memSectionIdx);\n        while (it.hasNext()) {\n            auto m = it.next();\n            memoryRegions.append({\n                m.captured(1),\n                size_t(m.captured(2).remove(0, 2).toLongLong(nullptr, 16)),\n                size_t(m.captured(3).remove(0, 2).toLongLong(nullptr, 16)),\n                m.captured(4)\n            });\n        }\n    }\n    if (linkSectionIdx) {\n        QRegularExpression ignoredRe[] = {\n            QRegularExpression{ R\"(^LOAD\\s)\", QRegularExpression::MultilineOption },\n            QRegularExpression{ R\"(^(?:START|END) GROUP\\s)\", QRegularExpression::MultilineOption },\n            QRegularExpression{ R\"(^LOAD\\s)\", QRegularExpression::MultilineOption },\n            QRegularExpression{ R\"(^\\s+0x[\\da-f]+\\s+\\.)\", QRegularExpression::MultilineOption },\n            QRegularExpression{ R\"(^\\s+\\*\\()\", QRegularExpression::MultilineOption },\n            QRegularExpression{ R\"(^\\sFILL\\s)\", QRegularExpression::MultilineOption },\n        };\n        QRegularExpression SYM_DECL(R\"(^\\s+(0x[\\da-f]+)\\s+([a-z_\\$\\:][a-z_\\$\\:\\d]*.*$))\",\n                                    QRegularExpression::MultilineOption);\n        QRegularExpression SEC_DECL(R\"(^(\\.[a-zA-Z_][_a-zA-Z\\d\\.]+)\\s+(0x[\\da-fA-F]+)\\s+(0x[\\da-fA-F]+)(?:\\s+load address\\s+(0x[\\da-fA-F]+))?)\",\n                                    QRegularExpression::MultilineOption);\n        QRegularExpression LINE_RE(R\"(^.*$)\", QRegularExpression::MultilineOption);\n        auto it = LINE_RE.globalMatch(text, linkSectionIdx);\n        while (it.hasNext()) {\n            auto line = it.next().captured();\n            bool ignore = false;\n            for(const QRegularExpression& re: ignoredRe)\n                if (re.match(line).hasMatch())\n                    { ignore = true; break; }\n            if (ignore)\n                continue;\n            auto sectionDeclMatch = SEC_DECL.match(line);\n            if (sectionDeclMatch.hasMatch()) {\n                MemSection_t s = {\n                    sectionDeclMatch.captured(1),\n                    size_t(sectionDeclMatch.captured(2).toULongLong(nullptr, 16)),\n                    size_t(sectionDeclMatch.captured(3).toULongLong(nullptr, 16)),\n                    size_t(sectionDeclMatch.captured(4).toULongLong(nullptr, 16)),\n                };\n                for(MemRegion_t& r: memoryRegions)\n                    if (r.into(s)) {\n                        r.used += s.size;\n                        r.sections.append(s);\n                        sectionList.append(&r.sections.last());\n                    }\n                continue;\n            }\n            auto symbolDeclMatch = SYM_DECL.match(line);\n            if (symbolDeclMatch.hasMatch()) {\n                for(MemSection_t *s: sectionList) {\n                    Symbol_t sym = {\n                        symbolDeclMatch.captured(2),\n                        size_t(symbolDeclMatch.captured(1).toULongLong(nullptr, 16)),\n                    };\n                    if (s->into(sym.base))\n                        s->symbolList.append(sym);\n                }\n                continue;\n            }\n        }\n    }\n\n    for(const MemRegion_t& r: memoryRegions) {\n        QList<QStandardItem*> regionItems = {\n            new QStandardItem(r.name),\n            new QStandardItem(toHex(r.base)),\n            new QStandardItem(toHex(r.size)),\n            new QStandardItem(QString(\"%1\").arg(r.used)),\n            setMyData(new QStandardItem(QString(\"%1\").arg(r.usedPercent())), r.usedPercent()),\n            new QStandardItem(r.attr),\n        };\n        for(const auto& sec: r.sections) {\n            QList<QStandardItem*> sectionItems = {\n                new QStandardItem(sec.name),\n                new QStandardItem(toHex(sec.base)),\n                new QStandardItem(tr(\"%1 (Load %2)\").arg(toHex(sec.size)).arg(toHex(sec.lma))),\n            };\n            for(const auto& sym: sec.symbolList) {\n                QList<QStandardItem*> symbolItems = {\n                    new QStandardItem(sym.name),\n                    new QStandardItem(toHex(sym.base)),\n                };\n                sectionItems[0]->appendRow(symbolItems);\n            }\n            regionItems[0]->appendRow(sectionItems);\n        }\n        appendRow(regionItems);\n    }\n    return true;\n}\n"
  },
  {
    "path": "mapview/mapviewmodel.h",
    "content": "/*\n * This file is part of mapview, a component of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#ifndef MAPVIEWMODEL_H\n#define MAPVIEWMODEL_H\n\n#include <QObject>\n#include <QStandardItemModel>\n#include <QStyledItemDelegate>\n\nclass BarItemDelegate: public QStyledItemDelegate {\npublic:\n    BarItemDelegate(QObject *parent = Q_NULLPTR);\n    ~BarItemDelegate() override;\n\n    QStyleOptionProgressBar options(const QStyleOptionViewItem& option,\n                                           const QModelIndex& index) const;\n\n    void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const override;\n\n    QSize sizeHint(const QStyleOptionViewItem &option,\n                   const QModelIndex &index) const override;\n};\n\nclass MapViewModel : public QStandardItemModel\n{\n    Q_OBJECT\npublic:\n    static const int PERCENT_COLUMN;\n\n    explicit MapViewModel(QObject *parent = nullptr);\n    virtual ~MapViewModel();\n\npublic slots:\n    bool load(const QString& path);\n};\n\n#endif // MAPVIEWMODEL_H\n"
  },
  {
    "path": "old/.gitignore",
    "content": "# C++ objects and libs\n\n*.slo\n*.lo\n*.o\n*.a\n*.la\n*.lai\n*.so\n*.dll\n*.dylib\n\n# Qt-es\n\n/.qmake.cache\n/.qmake.stash\n*.pro.user\n*.pro.user.*\n*.moc\nmoc_*.cpp\nmoc_*.h\nqrc_*.cpp\nui_*.h\nMakefile*\ni18n/*.qm\n\n\n# QtCreator\n\n*.autosave\nbuild\ncompile_commands.json\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) 2014 Dax89\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\nthe Software, and to permit persons to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/README.md",
    "content": "QHexEdit\n========\n\nThis is an HexEdit widget for Qt Framework 5, it is released under MIT License.\n\nFeatures\n-----\n- Big File Support.\n- Unlimited Undo/Redo.\n- Fully Customizable.\n- Easy to Use.\n\nUsage\n-----\nThe data is managed by QHexEdit through QHexEditData class.<br>\nYou can load a generic QIODevice using the method fromDevice() of QHexEditData class, also, helper methods are provided in order to load a QFile a In-Memory buffer in QHexEdit:<br>\n```\n/* Load data from In-Memory Buffer (QHexEditData takes Ownership) ... */\nQHexEditData* hexeditdata = QHexEditData::fromMemory(bytearray);\n\n/* ...or from a Generic I/O Device... */\nQHexEditData* hexeditdata = QHexEditData::fromDevice(iodevice);\n\n/* ...or from File */\nQHexEditData* hexeditdata = QHexEditData::fromFile(\"data.bin\");\n\nQHexEdit* hexedit = new QHexEdit();\nhexedit->setData(hexeditdata); /* Associate QHexEditData with this QHexEdit */\n\n/* Change Background Color */\nhexedit->highlightBackground(0, 10, QColor(Qt::Red)); /* Highlight Background from 0 to 10 (10 included) */\n\n/* Change Foreground Color */\nhexedit->highlightForeground(0, 15, QColor(Qt::darkBLue)); /* Highlight from 0 to 15 (15 included) */\n\n/* Clear Highlighting */\nhexedit->clearHighlight();\n\n/* Apply Comment */\nhexedit->commentRange(0, 12, \"I'm a comment!\");\n\n/* Remove a comment */\nhexedit->uncommentRange(0, 5);\n\n/* Clear all comments */\nhexedit->clearComments();\n\n/* Getting data */\nQHexEditReader reader(hexeditdata);\nquint32 a = reader.readUInt32(23); /* Read a 32 bit unsigned int from offset 23 using platform's byte order */\nqint16 b = reader.readInt16(46, QSysInfo::BigEndian); /* Read a 16 bit unsigned short from offset 46 and convert it in Big Endian */\nQByteArray data = reader.read(24, 78); /* Read 78 bytes starting from offset 24 */\n\n/* Writing data */\nQHexEditWriter writer(hexeditdata);\nwriter.insert(4, QString(\"Hello QHexEdit\").toUTF8()); /* Insert an UTF-8 string from offset 4 */\nwriter.remove(6, 10);/* Delete bytes from offset 6 to offset 10 */\nwriter.replace(30, 12, QString(\"New Data\").toUTF8()); /* Replace 12 bytes from offset 30 with the UTF-8 string \"New Data\" */\n\n```"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexedit.cpp",
    "content": "#include \"qhexedit.h\"\r\n\r\nQHexEdit::QHexEdit(QWidget *parent): QFrame(parent)\r\n{\r\n    this->_vscrollbar = new QScrollBar(Qt::Vertical);\r\n    this->_scrollarea = new QScrollArea();\r\n    this->_hexedit_p = new QHexEditPrivate(this->_scrollarea, this->_vscrollbar);\r\n\r\n    /* Forward QHexEditPrivate's Signals */\r\n    connect(this->_hexedit_p, SIGNAL(visibleLinesChanged()), this, SIGNAL(visibleLinesChanged()));\r\n    connect(this->_hexedit_p, SIGNAL(positionChanged(qint64)), this, SIGNAL(positionChanged(qint64)));\r\n    connect(this->_hexedit_p, SIGNAL(selectionChanged(qint64)), this, SIGNAL(selectionChanged(qint64)));\r\n    connect(this->_hexedit_p, SIGNAL(verticalScrollBarValueChanged(int)), this, SIGNAL(verticalScrollBarValueChanged(int)));\r\n\r\n    this->_scrollarea->setFocusPolicy(Qt::NoFocus);\r\n    this->_scrollarea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); /* Do not show vertical QScrollBar!!! */\r\n    this->_scrollarea->setFrameStyle(QFrame::NoFrame);\r\n    this->_scrollarea->setWidgetResizable(true);\r\n    this->_scrollarea->setWidget(this->_hexedit_p);\r\n\r\n    this->setFocusPolicy(Qt::NoFocus);\r\n\r\n    this->_hlayout = new QHBoxLayout();\r\n    this->_hlayout->setSpacing(0);\r\n    this->_hlayout->setMargin(0);\r\n    this->_hlayout->addWidget(this->_scrollarea);\r\n    this->_hlayout->addWidget(this->_vscrollbar);\r\n\r\n    this->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken);\r\n    this->setLayout(this->_hlayout);\r\n}\r\n\r\nvoid QHexEdit::undo()\r\n{\r\n    this->_hexedit_p->undo();\r\n}\r\n\r\nvoid QHexEdit::setData(QHexEditData *hexeditdata)\r\n{\r\n    this->_hexedit_p->setData(hexeditdata);\r\n}\r\n\r\nvoid QHexEdit::selectPos(qint64 pos)\r\n{\r\n    this->setSelectionLength(pos, 1);\r\n}\r\n\r\nvoid QHexEdit::setSelection(qint64 start, qint64 end)\r\n{\r\n    this->_hexedit_p->setSelection(start, end);\r\n}\r\n\r\nvoid QHexEdit::setSelectionLength(qint64 start, qint64 length)\r\n{\r\n    this->setSelection(start, (start + length) - 1);\r\n}\r\n\r\nvoid QHexEdit::highlightBackground(qint64 start, qint64 end, const QColor &color)\r\n{\r\n    this->_hexedit_p->highlightBackground(start, end, color);\r\n}\r\n\r\nvoid QHexEdit::highlightForeground(qint64 start, qint64 end, const QColor &color)\r\n{\r\n    this->_hexedit_p->highlightForeground(start, end, color);\r\n}\r\n\r\nvoid QHexEdit::clearHighlight(qint64 start, qint64 end)\r\n{\r\n    this->_hexedit_p->clearHighlight(start, end);\r\n}\r\n\r\nvoid QHexEdit::clearHighlight()\r\n{\r\n    this->_hexedit_p->clearHighlight();\r\n}\r\n\r\nvoid QHexEdit::commentRange(qint64 start, qint64 end, const QString &comment)\r\n{\r\n    this->_hexedit_p->commentRange(start, end, comment);\r\n}\r\n\r\nvoid QHexEdit::uncommentRange(qint64 start, qint64 end)\r\n{\r\n    this->_hexedit_p->uncommentRange(start, end);\r\n}\r\n\r\nvoid QHexEdit::clearComments()\r\n{\r\n    this->_hexedit_p->clearComments();\r\n}\r\n\r\nvoid QHexEdit::setVerticalScrollBarValue(int value)\r\n{\r\n    this->_hexedit_p->setVerticalScrollBarValue(value);\r\n}\r\n\r\nvoid QHexEdit::scroll(QWheelEvent *event)\r\n{\r\n    this->_hexedit_p->scroll(event);\r\n}\r\n\r\nvoid QHexEdit::setCursorPos(qint64 pos)\r\n{\r\n    this->_hexedit_p->setCursorPos(pos);\r\n}\r\n\r\nvoid QHexEdit::paste()\r\n{\r\n    this->_hexedit_p->paste();\r\n}\r\n\r\nvoid QHexEdit::pasteHex()\r\n{\r\n    this->_hexedit_p->pasteHex();\r\n}\r\n\r\nvoid QHexEdit::selectAll()\r\n{\r\n    this->_hexedit_p->setSelection(0, -1);\r\n}\r\n\r\nint QHexEdit::addressWidth()\r\n{\r\n    return this->_hexedit_p->addressWidth();\r\n}\r\n\r\nint QHexEdit::visibleLinesCount()\r\n{\r\n    return this->_hexedit_p->visibleLinesCount();\r\n}\r\n\r\nQHexEditData *QHexEdit::data()\r\n{\r\n    return this->_hexedit_p->data();\r\n}\r\n\r\nqint64 QHexEdit::indexOf(QByteArray &ba, qint64 start)\r\n{\r\n    return this->_hexedit_p->indexOf(ba, start);\r\n}\r\n\r\nqint64 QHexEdit::baseAddress()\r\n{\r\n    return this->_hexedit_p->baseAddress();\r\n}\r\n\r\nqint64 QHexEdit::cursorPos()\r\n{\r\n    return this->_hexedit_p->cursorPos();\r\n}\r\n\r\nqint64 QHexEdit::selectionStart()\r\n{\r\n    return this->_hexedit_p->selectionStart();\r\n}\r\n\r\nqint64 QHexEdit::selectionEnd()\r\n{\r\n    return this->_hexedit_p->selectionEnd();\r\n}\r\n\r\nqint64 QHexEdit::selectionLength()\r\n{\r\n    return this->_hexedit_p->selectionEnd() - this->_hexedit_p->selectionStart();\r\n}\r\n\r\nvoid QHexEdit::setFont(const QFont &f)\r\n{\r\n    this->_hexedit_p->setFont(f);\r\n}\r\n\r\nvoid QHexEdit::setBaseAddress(qint64 ba)\r\n{\r\n    return this->_hexedit_p->setBaseAddress(ba);\r\n}\r\n\r\nqint64 QHexEdit::visibleStartOffset()\r\n{\r\n    return this->_hexedit_p->visibleStartOffset();\r\n}\r\n\r\nqint64 QHexEdit::visibleEndOffset()\r\n{\r\n    return this->_hexedit_p->visibleEndOffset();\r\n}\r\n\r\nbool QHexEdit::readOnly()\r\n{\r\n    return this->_hexedit_p->readOnly();\r\n}\r\n\r\nvoid QHexEdit::setReadOnly(bool b)\r\n{\r\n    this->_hexedit_p->setReadOnly(b);\r\n}\r\n\r\nvoid QHexEdit::copy()\r\n{\r\n    this->_hexedit_p->copy();\r\n}\r\n\r\nvoid QHexEdit::copyHex()\r\n{\r\n    this->_hexedit_p->copyHex();\r\n}\r\n\r\nvoid QHexEdit::cut()\r\n{\r\n    this->_hexedit_p->cut();\r\n}\r\n\r\nvoid QHexEdit::redo()\r\n{\r\n    this->_hexedit_p->redo();\r\n}\r\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexedit.h",
    "content": "#ifndef QHEXEDIT_H\r\n#define QHEXEDIT_H\r\n\r\n#include <QtCore>\r\n#include <QtGui>\r\n#include <QtWidgets>\r\n#include \"qhexeditprivate.h\"\r\n#include \"qhexeditdatareader.h\"\r\n#include \"qhexeditdatawriter.h\"\r\n#include \"qhexeditdatadevice.h\"\r\n\r\nclass QHexEdit : public QFrame\r\n{\r\n    Q_OBJECT\r\n\r\n    public:\r\n        explicit QHexEdit(QWidget *parent = 0);\r\n        bool readOnly();\r\n        int addressWidth();\r\n        int visibleLinesCount();\r\n        QHexEditData *data();\r\n        qint64 indexOf(QByteArray& ba, qint64 start = 0);\r\n        qint64 baseAddress();\r\n        qint64 cursorPos();\r\n        qint64 selectionStart();\r\n        qint64 selectionEnd();\r\n        qint64 selectionLength();\r\n        qint64 visibleStartOffset();\r\n        qint64 visibleEndOffset();\r\n        void setFont(const QFont &f);\r\n        void setBaseAddress(qint64 ba);\r\n\r\n    signals:\r\n        void visibleLinesChanged();\r\n        void positionChanged(qint64 offset);\r\n        void selectionChanged(qint64 length);\r\n        void bytesChanged(qint64 pos);\r\n        void verticalScrollBarValueChanged(int value);\r\n\r\n    public slots:\r\n        void undo();\r\n        void redo();\r\n        void cut();\r\n        void copy();\r\n        void copyHex();\r\n        void paste();\r\n        void pasteHex();\r\n        void selectAll();\r\n        void setReadOnly(bool b);\r\n        void setCursorPos(qint64 pos);\r\n        void setData(QHexEditData *hexeditdata);\r\n        void selectPos(qint64 pos);\r\n        void setSelection(qint64 start, qint64 end);\r\n        void setSelectionLength(qint64 start, qint64 length);\r\n        void highlightBackground(qint64 start, qint64 end, const QColor& color);\r\n        void highlightForeground(qint64 start, qint64 end, const QColor& color);\r\n        void clearHighlight(qint64 start, qint64 end);\r\n        void clearHighlight();\r\n        void commentRange(qint64 start, qint64 end, const QString& comment);\r\n        void uncommentRange(qint64 start, qint64 end);\r\n        void clearComments();\r\n        void setVerticalScrollBarValue(int value);\r\n        void scroll(QWheelEvent *event);\r\n\r\n    private:\r\n        QHexEditPrivate* _hexedit_p;\r\n        QScrollArea* _scrollarea;\r\n        QScrollBar* _vscrollbar;\r\n        QHBoxLayout* _hlayout;\r\n};\r\n\r\n#endif // QHEXEDIT_H\r\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexedit.pri",
    "content": "INCLUDEPATH += $$PWD\n\nSOURCES += \\\n    $$PWD/qhexedit.cpp \\\n    $$PWD/qhexeditcomments.cpp \\\n    $$PWD/qhexeditdata.cpp \\\n    $$PWD/qhexeditdatadevice.cpp \\\n    $$PWD/qhexeditdatareader.cpp \\\n    $$PWD/qhexeditdatawriter.cpp \\\n    $$PWD/qhexedithighlighter.cpp \\\n    $$PWD/qhexeditprivate.cpp \\\n    $$PWD/sparserangemap.cpp\n\nHEADERS += \\\n    $$PWD/qhexedit.h \\\n    $$PWD/qhexeditcomments.h \\\n    $$PWD/qhexeditdata.h \\\n    $$PWD/qhexeditdatadevice.h \\\n    $$PWD/qhexeditdatareader.h \\\n    $$PWD/qhexeditdatawriter.h \\\n    $$PWD/qhexedithighlighter.h \\\n    $$PWD/qhexeditprivate.h \\\n    $$PWD/sparserangemap.h\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditcomments.cpp",
    "content": "#include \"qhexeditcomments.h\"\n\nQHexEditComments::QHexEditComments(QObject *parent): QObject(parent)\n{\n\n}\n\nvoid QHexEditComments::commentRange(qint64 from, qint64 to, const QString &note)\n{\n    this->_notes.addRange(from, to, note);\n}\n\nvoid QHexEditComments::uncommentRange(qint64 from, qint64 to)\n{\n    this->_notes.clearRange(from, to);\n}\n\nvoid QHexEditComments::clearComments()\n{\n    QToolTip::hideText();\n    this->_notes.clear();\n}\n\nbool QHexEditComments::isCommented(qint64 offset)\n{\n    return this->_notes.contains(offset);\n}\n\nvoid QHexEditComments::displayNote(const QPoint& pos, qint64 offset)\n{\n    const QString* note = this->_notes.valueAt(offset);\n    if(note)\n        QToolTip::showText(pos, *note, qobject_cast<QWidget*>(this->parent()));\n    else\n        QToolTip::showText(pos, QString(), qobject_cast<QWidget*>(this->parent()));\n}\n\nvoid QHexEditComments::hideNote()\n{\n    QToolTip::hideText();\n}\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditcomments.h",
    "content": "#ifndef QHEXEDITCOMMENTS_H\n#define QHEXEDITCOMMENTS_H\n\n#include <QtCore>\n#include <QtGui>\n#include <QtWidgets>\n#include \"sparserangemap.h\"\n\nclass QHexEditComments : public QObject\n{\n    Q_OBJECT\n\n    public:\n        explicit QHexEditComments(QObject *parent = 0);\n        void commentRange(qint64 from, qint64 to, const QString& note);\n        void uncommentRange(qint64 from, qint64 to);\n        void clearComments();\n        bool isCommented(qint64 offset);\n        void displayNote(const QPoint &pos, qint64 offset);\n        void hideNote();\n\n    private:\n        SparseRangeMap<QString> _notes;\n};\n\n#endif // QHEXEDITCOMMENTS_H\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditdata.cpp",
    "content": "#include \"qhexeditdata.h\"\n\nconst qint64 QHexEditData::BUFFER_SIZE = 8192;\n\nQHexEditData::QHexEditData(QIODevice *iodevice, QObject *parent): QObject(parent), _iodevice(iodevice), _length(iodevice->size()), _devicelength(iodevice->size()), _lastpos(-1), _lastaction(QHexEditData::None)\n{\n    qRegisterMetaType<QHexEditData::ActionType>(\"QHexEditData::ActionType\");\n    this->_modlist.append(new ModifiedItem(0, iodevice->size(), false));\n}\n\nQHexEditData::~QHexEditData()\n{\n    foreach(ModifiedItem* mi, this->_modlist)\n        delete mi;\n\n    this->_modlist.clear();\n\n    if(this->_iodevice->isOpen())\n        this->_iodevice->close();\n}\n\nQUndoStack *QHexEditData::undoStack()\n{\n    return &this->_undostack;\n}\n\nqint64 QHexEditData::length() const\n{\n    return this->_length;\n}\n\nbool QHexEditData::isReadOnly() const\n{\n    return !this->_iodevice->isWritable();\n}\n\nbool QHexEditData::save()\n{\n    return this->saveTo(this->_iodevice);\n}\n\nbool QHexEditData::saveTo(QIODevice *iodevice)\n{\n    if(!iodevice->isOpen())\n        iodevice->open(QIODevice::WriteOnly);\n\n    if(!iodevice->isWritable())\n        return false;\n\n    qint64 outseekpos = 0;\n    this->_iodevice->reset();\n\n    for(int i = 0; i < this->_modlist.length(); i++)\n    {\n        ModifiedItem* mi = this->_modlist[i];\n        iodevice->seek(outseekpos);\n\n        if(mi->modified())\n            iodevice->write(this->_modbuffer.mid(mi->pos(), mi->length()));\n        else if(iodevice != this->_iodevice)\n        {\n            this->_iodevice->seek(mi->pos());\n            QByteArray ba = this->_iodevice->read(mi->length());\n            iodevice->write(ba);\n        }\n\n        outseekpos += mi->length();\n    }\n\n    return true;\n}\n\nQHexEditData *QHexEditData::fromDevice(QIODevice *iodevice)\n{\n    if(!iodevice->isOpen())\n        iodevice->open(QFile::ReadWrite);\n\n    return new QHexEditData(iodevice);\n}\n\nQHexEditData *QHexEditData::fromFile(QString filename)\n{\n    QFileInfo fi(filename);\n    QFile* f = new QFile(filename);\n\n    if(fi.isWritable())\n        f->open(QFile::ReadWrite);\n    else\n        f->open(QFile::ReadOnly);\n\n    return QHexEditData::fromDevice(f);\n}\n\nQHexEditData *QHexEditData::fromMemory(const QByteArray &ba)\n{\n    QBuffer* b = new QBuffer();\n    b->setData(ba);\n    b->open(QFile::ReadOnly);\n\n    return QHexEditData::fromDevice(b);\n}\n\nQHexEditData::InsertCommand* QHexEditData::internalInsert(qint64 pos, const QByteArray &ba, QHexEditData::ActionType act)\n{\n    if(pos < 0 || pos > this->length() || !ba.length())\n        return nullptr;\n\n    int i;\n    qint64 datapos;\n    ModifiedItem* mi;\n\n    if(!this->_modlist.isEmpty())\n    {\n        mi = this->modifiedItem(pos, &datapos, &i);\n\n        if(!mi)\n            return nullptr;\n    }\n    else\n    {\n        pos = 0;\n        datapos = 0;\n    }\n\n    bool optimize = false;\n    ModifyList oldml, newml;\n    qint64 modoffset = pos - datapos;\n    qint64 buffoffset = this->updateBuffer(ba);\n\n    if(!modoffset)\n    {\n        optimize = (act == QHexEditData::Insert) && this->canOptimize(act, pos);\n        newml.append(new ModifiedItem(buffoffset, ba.length()));\n    }\n    else\n    {\n        oldml.append(mi);\n        newml.append(new ModifiedItem(mi->pos(), modoffset, mi->modified()));\n        newml.append(new ModifiedItem(buffoffset, ba.length()));\n        newml.append(new ModifiedItem(mi->pos() + modoffset, mi->length() - modoffset, mi->modified()));\n    }\n\n\n    this->_length += ba.length();\n    emit dataChanged(pos, ba.length(), act);\n    return new InsertCommand(i, pos, oldml, newml, this, optimize);\n}\n\nQHexEditData::RemoveCommand* QHexEditData::internalRemove(qint64 pos, qint64 len, QHexEditData::ActionType act)\n{\n    if(pos < 0 || !len || pos >= this->length() || pos > (this->length() - len))\n        return nullptr;\n\n    int i;\n    qint64 datapos;\n    ModifiedItem* mi = this->modifiedItem(pos, &datapos, &i);\n\n    if(!mi)\n        return nullptr;\n\n    QList<ModifiedItem*> olditems, newitems;\n    qint64 remoffset = pos - datapos, remlength = len;\n\n    if(remoffset)\n    {\n        newitems.append(new ModifiedItem(mi->pos(), remoffset, mi->modified()));\n\n        if((remoffset + remlength) < mi->length())\n            newitems.append(new ModifiedItem(mi->pos() + remoffset + remlength, mi->length() - remoffset - remlength, mi->modified()));\n\n        remlength -= qMin(remlength, mi->length() - remoffset);\n        olditems.append(mi);\n        i++;\n    }\n\n    while(remlength && (i < this->_modlist.length()))\n    {\n        mi = this->_modlist[i];\n\n        if(remlength < mi->length())\n            newitems.append(new ModifiedItem(mi->pos() + remlength, mi->length() - remlength, mi->modified()));\n\n        remlength -= qMin(remlength, mi->length());\n        olditems.append(mi);\n        i++;\n    }\n\n    this->_length -= len;\n    emit dataChanged(pos, len, act);\n    return new RemoveCommand(i - olditems.length(), pos, olditems, newitems, this);\n}\n\nbool QHexEditData::canOptimize(QHexEditData::ActionType at, qint64 pos)\n{\n    return (this->_lastaction == at) && (this->_lastpos == pos);\n}\n\nvoid QHexEditData::recordAction(QHexEditData::ActionType at, qint64 pos)\n{\n    this->_lastpos = pos;\n    this->_lastaction = at;\n}\n\nqint64 QHexEditData::updateBuffer(const QByteArray &ba)\n{\n    qint64 pos = this->_modbuffer.length();\n    this->_modbuffer.append(ba);\n    return pos;\n}\n\nQHexEditData::ModifiedItem* QHexEditData::modifiedItem(qint64 pos, qint64* datapos, int *index)\n{\n    int i = -1;\n    qint64 currpos = 0;\n    ModifiedItem* mi = nullptr;\n\n    for(i = 0; i < this->_modlist.length(); i++)\n    {\n        mi = this->_modlist[i];\n\n        if((pos >= currpos) && (pos < (currpos + mi->length())))\n        {\n            if(datapos)\n                *datapos = currpos;\n\n            if(index)\n                *index = i;\n\n            return mi;\n        }\n\n        currpos += mi->length();\n    }\n\n    if(mi && (pos == currpos)) /* Return Last Item for Append */\n    {\n        if(datapos)\n            *datapos = currpos;\n\n        if(index)\n            *index = i;\n\n        return mi;\n    }\n\n    return nullptr;\n}\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditdata.h",
    "content": "#ifndef QHEXEDITDATA_H\n#define QHEXEDITDATA_H\n\n/*\n * Piece Chain Data Structure Documentation From:\n * 1) http://www.catch22.net/tuts/piece-chains\n * 2) http://www.catch22.net/tuts/memory-techniques-part-1\n * 3) http://www.catch22.net/tuts/memory-techniques-part-2\n */\n\n#include <QtCore>\n#include <QUndoStack>\n#include <QUndoCommand>\n\nclass QHexEditData : public QObject\n{\n    Q_OBJECT\n\n    public:\n        enum ActionType { None = 0, Insert = 1, Remove = 2, Replace = 3 };\n\n    private:\n        class ModifiedItem\n        {\n            public:\n                ModifiedItem(qint64 pos, qint64 len, bool mod = true): _pos(pos), _len(len), _mod(mod) {}\n                qint64 pos() const { return this->_pos; }\n                qint64 length() const { return this->_len; }\n                bool modified() const { return this->_mod; }\n                void updatePos(qint64 amt) { this->_pos += amt; }\n                void updateLen(qint64 amt) { this->_len += amt; }\n\n            private:\n                qint64 _pos;\n                qint64 _len;\n                bool _mod;\n        };\n\n        typedef QList<ModifiedItem*> ModifyList;\n\n    public:\n        class AbstractCommand: public QUndoCommand\n        {\n            public:\n                AbstractCommand(qint64 pos, QHexEditData* owner, QUndoCommand* parent = 0): QUndoCommand(parent), _owner(owner), _notify(true), _pos(pos) { }\n\n            public:\n                bool canNotify() const { return this->_notify; }\n                void setNotify(bool b) { this->_notify = b; }\n                qint64 pos() const { return this->_pos; }\n                QHexEditData* owner() const { return this->_owner; }\n\n            protected:\n                void notifyDataChanged(qint64 offset, qint64 size, QHexEditData::ActionType reason)\n                {\n                    emit this->owner()->dataChanged(offset, size, reason);\n                }\n\n            private:\n                QHexEditData* _owner;\n                bool _notify;\n                qint64 _pos;\n        };\n\n        class ModifyRangeCommand: public AbstractCommand\n        {\n            public:\n                ModifyRangeCommand(int index, qint64 pos, const ModifyList& oldml, const ModifyList& newml, QHexEditData* owner, QUndoCommand* parent = 0): AbstractCommand(pos, owner, parent), _index(index), _oldml(oldml), _newml(newml)\n                {\n                    this->_oldlength = this->_newlength = 0;\n\n                    for(int i = 0; i < oldml.length(); i++)\n                        this->_oldlength += oldml[i]->length();\n\n                    for(int i = 0; i < newml.length(); i++)\n                        this->_newlength += newml[i]->length();\n                }\n\n            protected:\n                qint64 index() const { return this->_index; }\n                qint64 oldLength() const { return this->_oldlength; }\n                qint64 newLength() const { return this->_newlength; }\n\n            private:\n                int _index;\n\n            protected:\n                QHexEditData::ModifyList _oldml;\n                QHexEditData::ModifyList _newml;\n                qint64 _oldlength;\n                qint64 _newlength;\n        };\n\n        class InsertCommand: public ModifyRangeCommand\n        {\n            public:\n                InsertCommand(int index, qint64 pos, const ModifyList& oldml, const ModifyList& newml, QHexEditData* owner, bool opt, QUndoCommand* parent = 0): ModifyRangeCommand(index, pos, oldml, newml, owner, parent), _optimized(opt) { }\n                virtual int id() const { return QHexEditData::Insert; }\n\n                virtual bool mergeWith(const QUndoCommand* command)\n                {\n                    const InsertCommand* ic = dynamic_cast<const InsertCommand*>(command);\n\n                    if(ic->optimized())\n                    {\n                        ModifiedItem* oldmi = nullptr;\n\n                        if(this->_newml.length() == 1) /* Single Item */\n                            oldmi = this->_newml[0];\n                        else /* Splitted Span in Three Parts, the second is the new one, update length */\n                            oldmi = this->_newml[1];\n\n                        ModifiedItem* newmi = ic->_newml.last();\n                        this->_newlength += ic->_newlength;\n\n                        oldmi->updateLen(newmi->length());\n                        this->notifyDataChanged(ic->pos(), ic->newLength(), QHexEditData::Insert);\n                        return true;\n                    }\n\n                    return false;\n                }\n\n                virtual void undo()\n                {\n                    for(int i = 0; i < this->_newml.length(); i++)\n                        this->owner()->_modlist.removeAt(this->index());\n\n                    for(int i = 0; i < this->_oldml.length(); i++)\n                        this->owner()->_modlist.insert(this->index() + i, this->_oldml[i]);\n\n                    /* Update HexEditData's length */\n                    this->owner()->_length -= this->newLength();\n                    this->owner()->_length += this->oldLength();\n\n                    if(this->canNotify())\n                        this->notifyDataChanged(this->pos(), this->oldLength(), QHexEditData::Insert);\n                }\n\n                virtual void redo()\n                {\n                    if(this->_optimized)\n                        return; /* Don't modify the list if this is an optimized insertion */\n\n                    for(int i = 0; i < this->_oldml.length(); i++)\n                        this->owner()->_modlist.removeAt(this->index());\n\n                    for(int i = 0; i < this->_newml.length(); i++)\n                        this->owner()->_modlist.insert(this->index() + i, this->_newml[i]);\n\n                    if(this->canNotify())\n                        this->notifyDataChanged(this->pos(), this->newLength(), QHexEditData::Insert);\n                }\n\n            private:\n                bool optimized() const { return this->_optimized; }\n\n            private:\n                bool _optimized;\n        };\n\n        class RemoveCommand: public ModifyRangeCommand\n        {\n            public:\n                RemoveCommand(int index, qint64 pos, const ModifyList& oldml, const ModifyList& newml, QHexEditData* owner, QUndoCommand* parent = 0): ModifyRangeCommand(index, pos, oldml, newml, owner, parent) { }\n                virtual int id() const { return QHexEditData::Remove; }\n\n                virtual void undo()\n                {\n                    this->owner()->_modlist.erase(this->owner()->_modlist.begin() + this->index(), this->owner()->_modlist.begin() + (this->index() + this->_newml.length()));\n\n                    for(int i = 0; i < this->_oldml.length(); i++)\n                        this->owner()->_modlist.insert(this->index() + i, this->_oldml.at(i));\n\n                    /* Update HexEditData's length */\n                    this->owner()->_length -= this->newLength();\n                    this->owner()->_length += this->oldLength();\n\n                    if(this->canNotify())\n                        this->notifyDataChanged(this->pos(), this->oldLength(), QHexEditData::Remove);\n                }\n\n                virtual void redo()\n                {\n                    this->owner()->_modlist.erase(this->owner()->_modlist.begin() + this->index(), this->owner()->_modlist.begin() + (this->index() + this->_oldml.length()));\n\n                    for(int i = 0; i < this->_newml.length(); i++)\n                        this->owner()->_modlist.insert(this->index() + i, this->_newml.at(i));\n\n                    if(this->canNotify())\n                        this->notifyDataChanged(this->pos(), this->newLength(), QHexEditData::Remove);\n                }\n        };\n\n        class ReplaceCommand: public AbstractCommand\n        {\n            public:\n                ReplaceCommand(qint64 pos, qint64 len, const QByteArray& ba, QHexEditData* owner, QUndoCommand* parent = 0): AbstractCommand(pos, owner, parent), _len(len), _data(ba), _remcmd(nullptr), _inscmd(nullptr) { }\n                virtual int id() const { return QHexEditData::Replace; }\n\n                virtual void undo()\n                {\n                    this->_inscmd->undo();\n\n                    if(this->_remcmd) /* 'remcmd' is NULL if the replace command is done at EOF */\n                        this->_remcmd->undo();\n\n                    if(this->canNotify())\n                        emit this->notifyDataChanged(this->pos(), this->_data.length(), QHexEditData::Replace);\n                }\n\n                virtual void redo()\n                {\n                    if(this->_remcmd && this->_inscmd)\n                    {\n                        this->_remcmd->redo();\n                        this->_inscmd->redo();\n\n                    }\n                    else\n                    {\n                        qint64 l = qMin(this->_len, this->owner()->length());\n\n                        this->_remcmd = this->owner()->internalRemove(this->pos(), l, QHexEditData::Replace);\n\n                        if(this->_remcmd)\n                        {\n                            this->_remcmd->setNotify(false); /* Do not emit signal */\n                            this->_remcmd->redo();\n                        }\n\n                        this->_inscmd = this->owner()->internalInsert(this->pos(), this->_data, QHexEditData::Replace);\n\n                        if(this->_inscmd)\n                        {\n                            this->_inscmd->setNotify(false); /* Do not emit signal */\n                            this->_inscmd->redo();\n                        }\n                    }\n\n                    if(this->canNotify())\n                        this->notifyDataChanged(this->pos(), this->_data.length(), QHexEditData::Replace);\n                }\n\n            private:\n                qint64 _len;\n                QByteArray _data;\n                RemoveCommand* _remcmd;\n                InsertCommand* _inscmd;\n        };\n\n    private:\n        explicit QHexEditData(QIODevice* iodevice, QObject *parent = 0);\n        ~QHexEditData();\n\n    public:\n        QUndoStack* undoStack();\n        qint64 length() const;\n        bool isReadOnly() const;\n\n    public slots:\n        bool save();\n        bool saveTo(QIODevice* iodevice);\n\n    public:\n        static QHexEditData* fromDevice(QIODevice* iodevice);\n        static QHexEditData* fromFile(QString filename);\n        static QHexEditData* fromMemory(const QByteArray& ba);\n\n    private:\n        InsertCommand* internalInsert(qint64 pos, const QByteArray& ba, QHexEditData::ActionType act);\n        RemoveCommand* internalRemove(qint64 pos, qint64 len, QHexEditData::ActionType act); /* TODO: QHexEditData::internalRemove(): Optimization Needed */\n        QHexEditData::ModifiedItem *modifiedItem(qint64 pos, qint64 *datapos = nullptr, int* index = nullptr);\n        qint64 updateBuffer(const QByteArray& ba);\n        bool canOptimize(QHexEditData::ActionType at, qint64 pos);\n        void recordAction(QHexEditData::ActionType at, qint64 pos);\n\n    signals:\n        void dataChanged(qint64 offset, qint64 size, QHexEditData::ActionType reason);\n\n    private:        \n        static const qint64 BUFFER_SIZE;\n        ModifyList _modlist;\n        QIODevice* _iodevice;\n        QByteArray _modbuffer;\n        qint64 _length;\n        qint64 _devicelength;\n        qint64 _lastpos;\n        QHexEditData::ActionType _lastaction;\n        QUndoStack _undostack;\n        QMutex _mutex;\n\n    friend class QHexEditData::AbstractCommand;\n    friend class QHexEditDataReader;\n    friend class QHexEditDataWriter;\n};\n\nQ_DECLARE_METATYPE(QHexEditData::ActionType)\n\n#endif // QHEXEDITDATA_H\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditdatadevice.cpp",
    "content": "#include \"qhexeditdatadevice.h\"\n\nQHexEditDataDevice::QHexEditDataDevice(QHexEditData *hexeditdata): QIODevice(hexeditdata), _hexeditdata(hexeditdata)\n{\n    this->_reader = new QHexEditDataReader(hexeditdata, this);\n    this->_writer = new QHexEditDataWriter(hexeditdata, this);\n}\n\nqint64 QHexEditDataDevice::size()\n{\n    return this->_hexeditdata->length();\n}\n\nqint64 QHexEditDataDevice::readData(char *data, qint64 maxlen)\n{\n    if(!this->_hexeditdata)\n        return 0;\n\n    QByteArray ba = this->_reader->read(this->pos(), maxlen);\n\n    if(!ba.isEmpty())\n    {\n        memcpy(data, ba.data(), ba.length());\n        return ba.length();\n    }\n\n    return -1;\n}\n\nqint64 QHexEditDataDevice::writeData(const char *data, qint64 len)\n{\n    if(!this->_hexeditdata)\n        return 0;\n\n    this->_writer->replace(this->pos(), QByteArray::fromRawData(data, len));\n    return len; /* Append if needed */\n}\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditdatadevice.h",
    "content": "#ifndef QHEXEDITDATADEVICE_H\n#define QHEXEDITDATADEVICE_H\n\n#include <QtCore>\n#include \"qhexeditdata.h\"\n#include \"qhexeditdatareader.h\"\n#include \"qhexeditdatawriter.h\"\n\nclass QHexEditDataDevice : public QIODevice\n{\n    public:\n        QHexEditDataDevice(QHexEditData* hexeditdata);\n        virtual qint64 size();\n\n    protected:\n        qint64 readData(char *data, qint64 maxlen);\n        qint64 writeData(const char *data, qint64 len);\n\n    private:\n        QHexEditData* _hexeditdata;\n        QHexEditDataReader* _reader;\n        QHexEditDataWriter* _writer;\n};\n\n#endif // QHEXEDITDATADEVICE_H\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditdatareader.cpp",
    "content": "#include \"qhexeditdatareader.h\"\n\nQHexEditDataReader::QHexEditDataReader(QHexEditData *hexeditdata, QObject *parent): QObject(parent), _dirtybuffer(false), _bufferpos(-1), _hexeditdata(hexeditdata)\n{\n    connect(hexeditdata, SIGNAL(dataChanged(qint64,qint64,QHexEditData::ActionType)), this, SLOT(onDataChanged(qint64,qint64,QHexEditData::ActionType)));\n    this->_buffereddata.resize(QHexEditData::BUFFER_SIZE);\n}\n\nconst QHexEditData *QHexEditDataReader::hexEditData() const\n{\n    return this->_hexeditdata;\n}\n\nuchar QHexEditDataReader::at(qint64 pos)\n{\n    if(pos < 0)\n        pos = 0;\n    else if(pos >= this->_hexeditdata->_length)\n        pos = this->_hexeditdata->_length - 1;\n\n    if(this->needsBuffering(pos))\n        this->bufferizeData(pos);\n\n    return static_cast<uchar>(this->_buffereddata.at(pos - this->_bufferpos));\n}\n\nqint64 QHexEditDataReader::indexOf(const QByteArray &ba, qint64 start)\n{\n    if(!ba.length())\n        return -1;\n\n    for(qint64 pos = start; pos < this->_hexeditdata->_length; pos++)\n    {\n        QByteArray cba = this->read(pos, ba.length());\n\n        if(cba == ba)\n            return pos;\n    }\n\n    return -1;\n}\n\nQByteArray QHexEditDataReader::read(qint64 pos, qint64 len)\n{\n    if(pos >= this->_hexeditdata->_length)\n        return QByteArray();\n    else if(len > this->_hexeditdata->_length)\n        len = this->_hexeditdata->_length;\n\n    QByteArray resba(len, Qt::Uninitialized);\n    qint64 currpos = pos, copied = 0;\n\n    while(len > 0)\n    {\n        if(this->needsBuffering(currpos))\n            this->bufferizeData(currpos);\n\n        qint64 bufferedpos = currpos - this->_bufferpos, copylen = qMin(len, QHexEditData::BUFFER_SIZE);\n        memcpy(resba.data() + copied, this->_buffereddata.constData() + bufferedpos, copylen);\n\n        copied += copylen;\n        currpos += copylen;\n        len -= copylen;\n    }\n\n    return resba;\n}\n\nQString QHexEditDataReader::readString(qint64 pos, qint64 maxlen)\n{\n    QString s;\n\n    if(maxlen == -1)\n        maxlen = this->_hexeditdata->length();\n    else\n        maxlen = qMin(this->_hexeditdata->length(), maxlen);\n\n    for(qint64 i = 0; i < maxlen; i++)\n    {\n        if((pos + i) >= this->_hexeditdata->length())\n            break;\n\n        QChar ch(this->at(pos + i));\n\n        if(!ch.unicode() || ch.unicode() >= 128)\n            break;\n\n        s.append(ch);\n    }\n\n    return s;\n}\n\nquint16 QHexEditDataReader::readUInt16(qint64 pos, QSysInfo::Endian endian)\n{\n    QByteArray ba = this->read(pos, 2);\n    QDataStream ds(ba);\n\n    if(endian == QSysInfo::LittleEndian)\n        ds.setByteOrder(QDataStream::LittleEndian);\n    else\n        ds.setByteOrder(QDataStream::BigEndian);\n\n    quint16 val;\n    ds >> val;\n    return val;\n}\n\nquint32 QHexEditDataReader::readUInt32(qint64 pos, QSysInfo::Endian endian)\n{\n    QByteArray ba = this->read(pos, 4);\n    QDataStream ds(ba);\n\n    if(endian == QSysInfo::LittleEndian)\n        ds.setByteOrder(QDataStream::LittleEndian);\n    else\n        ds.setByteOrder(QDataStream::BigEndian);\n\n    quint32 val;\n    ds >> val;\n    return val;\n}\n\nquint64 QHexEditDataReader::readUInt64(qint64 pos, QSysInfo::Endian endian)\n{\n    QByteArray ba = this->read(pos, 8);\n    QDataStream ds(ba);\n\n    if(endian == QSysInfo::LittleEndian)\n        ds.setByteOrder(QDataStream::LittleEndian);\n    else\n        ds.setByteOrder(QDataStream::BigEndian);\n\n    quint64 val;\n    ds >> val;\n    return val;\n}\n\nqint16 QHexEditDataReader::readInt16(qint64 pos, QSysInfo::Endian endian)\n{\n    QByteArray ba = this->read(pos, 2);\n    QDataStream ds(ba);\n\n    if(endian == QSysInfo::LittleEndian)\n        ds.setByteOrder(QDataStream::LittleEndian);\n    else\n        ds.setByteOrder(QDataStream::BigEndian);\n\n    qint16 val;\n    ds >> val;\n    return val;\n}\n\nqint32 QHexEditDataReader::readInt32(qint64 pos, QSysInfo::Endian endian)\n{\n    QByteArray ba = this->read(pos, 4);\n    QDataStream ds(ba);\n\n    if(endian == QSysInfo::LittleEndian)\n        ds.setByteOrder(QDataStream::LittleEndian);\n    else\n        ds.setByteOrder(QDataStream::BigEndian);\n\n    qint32 val;\n    ds >> val;\n    return val;\n}\n\nqint64 QHexEditDataReader::readInt64(qint64 pos, QSysInfo::Endian endian)\n{\n    QByteArray ba = this->read(pos, 8);\n    QDataStream ds(ba);\n\n    if(endian == QSysInfo::LittleEndian)\n        ds.setByteOrder(QDataStream::LittleEndian);\n    else\n        ds.setByteOrder(QDataStream::BigEndian);\n\n    qint64 val;\n    ds >> val;\n    return val;\n}\n\nvoid QHexEditDataReader::onDataChanged(qint64 pos, qint64, QHexEditData::ActionType)\n{\n    if(this->inBuffer(pos))\n        this->_dirtybuffer = true;\n}\n\nbool QHexEditDataReader::needsBuffering(qint64 pos)\n{\n    return this->_dirtybuffer || (this->_bufferpos == -1) || (pos < this->_bufferpos) || (pos >= (this->_bufferpos + QHexEditData::BUFFER_SIZE));\n}\n\nvoid QHexEditDataReader::bufferizeData(qint64 pos)\n{\n    // Adjust pos in order to fit in buffer (if the loaded data cannot be buffer entirely: datasize > 8KB)\n    if((this->_hexeditdata->_length > QHexEditData::BUFFER_SIZE) && (pos + QHexEditData::BUFFER_SIZE) >= this->_hexeditdata->_length)\n        pos = this->_hexeditdata->_length - QHexEditData::BUFFER_SIZE;\n\n    this->_bufferpos = pos;\n\n    int i = -1;\n    qint64 currpos = pos, mipos = 0, copied = 0;\n\n    if(!this->_hexeditdata->modifiedItem(pos, &mipos, &i))\n        return;\n\n    while((copied < QHexEditData::BUFFER_SIZE) && (i < this->_hexeditdata->_modlist.length()))\n    {\n        QHexEditData::ModifiedItem* mi = this->_hexeditdata->_modlist[i];\n        qint64 bufferoffset = currpos - mipos, copylen = qMin(mi->length() - bufferoffset, QHexEditData::BUFFER_SIZE - copied);\n\n        if(mi->modified())\n            memcpy(this->_buffereddata.data() + copied, this->_hexeditdata->_modbuffer.data() + bufferoffset + mi->pos(), copylen);\n        else\n        {\n            this->_hexeditdata->_mutex.lock();\n            this->_hexeditdata->_iodevice->seek(bufferoffset + mi->pos());\n            this->_hexeditdata->_iodevice->read(this->_buffereddata.data() + copied, copylen);\n            this->_hexeditdata->_mutex.unlock();\n        }\n\n        mipos += mi->length();\n        currpos += copylen;\n        copied += copylen;\n        i++;\n    }\n\n    this->_dirtybuffer = false;\n}\n\nbool QHexEditDataReader::inBuffer(qint64 pos)\n{\n    return (pos >= this->_bufferpos) && (pos < (this->_bufferpos + QHexEditData::BUFFER_SIZE));\n}\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditdatareader.h",
    "content": "#ifndef QHEXEDITDATAREADER_H\n#define QHEXEDITDATAREADER_H\n\n#include <QtCore>\n#include \"qhexeditdata.h\"\n\nclass QHexEditDataReader : public QObject\n{\n    Q_OBJECT\n\n    public:\n        explicit QHexEditDataReader(QHexEditData* hexeditdata, QObject* parent = 0);\n        const QHexEditData* hexEditData() const;\n        uchar at(qint64 pos);\n        qint64 indexOf(const QByteArray& ba, qint64 start);\n        QByteArray read(qint64 pos, qint64 len);\n        QString readString(qint64 pos, qint64 maxlen = -1);\n        quint16 readUInt16(qint64 pos, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        quint32 readUInt32(qint64 pos, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        quint64 readUInt64(qint64 pos, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        qint16 readInt16(qint64 pos, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        qint32 readInt32(qint64 pos, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        qint64 readInt64(qint64 pos, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n\n    private slots:\n        void onDataChanged(qint64 offset, qint64, QHexEditData::ActionType);\n\n    private:\n        void bufferizeData(qint64 pos);\n        bool inBuffer(qint64 pos);\n        bool needsBuffering(qint64 pos);\n\n    private:\n        bool _dirtybuffer;\n        qint64 _bufferpos;\n        QByteArray _buffereddata;\n        QHexEditData* _hexeditdata;\n};\n\n#endif // QHEXEDITDATAREADER_H\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditdatawriter.cpp",
    "content": "#include \"qhexeditdatawriter.h\"\n\nQHexEditDataWriter::QHexEditDataWriter(QHexEditData *hexeditdata, QObject *parent): QObject(parent), _hexeditdata(hexeditdata)\n{\n\n}\n\nconst QHexEditData *QHexEditDataWriter::hexEditData() const\n{\n    return this->_hexeditdata;\n}\n\nvoid QHexEditDataWriter::append(const QByteArray &ba)\n{\n    this->insert(this->_hexeditdata->length(), ba);\n}\n\nvoid QHexEditDataWriter::insert(qint64 pos, uchar ch)\n{\n    this->insert(pos, QByteArray().append(ch));\n}\n\nvoid QHexEditDataWriter::insert(qint64 pos, const QByteArray &ba)\n{\n    QHexEditData::InsertCommand* ic = this->_hexeditdata->internalInsert(pos, ba, QHexEditData::Insert);\n\n    if(ic)\n    {\n        this->_hexeditdata->recordAction(QHexEditData::Insert, pos + ba.length());\n        this->_hexeditdata->_undostack.push(ic);\n    }\n}\n\nvoid QHexEditDataWriter::remove(qint64 pos, qint64 len)\n{\n    QHexEditData::RemoveCommand* rc = this->_hexeditdata->internalRemove(pos, len, QHexEditData::Remove);\n\n    if(rc)\n    {\n        this->_hexeditdata->recordAction(QHexEditData::Remove, pos);\n        this->_hexeditdata->_undostack.push(rc);\n    }\n}\n\nvoid QHexEditDataWriter::replace(qint64 pos, uchar b)\n{\n    this->replace(pos, 1, b);\n}\n\nvoid QHexEditDataWriter::replace(qint64 pos, qint64 len, uchar b)\n{\n    this->replace(pos, len, QByteArray().append(b));\n}\n\nvoid QHexEditDataWriter::replace(qint64 pos, const QByteArray &ba)\n{\n    this->replace(pos, ba.length(), ba);\n}\n\nvoid QHexEditDataWriter::replace(qint64 pos, qint64 len, const QByteArray &ba)\n{\n    if(pos > this->_hexeditdata->length() || ba.isEmpty() || !this->_hexeditdata->modifiedItem(pos))\n        return;\n\n    this->_hexeditdata->_undostack.push(new QHexEditData::ReplaceCommand(pos, len, ba, this->_hexeditdata));\n    this->_hexeditdata->recordAction(QHexEditData::Replace, pos + ba.length());\n}\n\nvoid QHexEditDataWriter::writeUInt8(qint64 pos, char d)\n{\n   this->replace(pos, QByteArray().append(d));\n}\n\nvoid QHexEditDataWriter::writeUInt16(qint64 pos, quint16 d, QSysInfo::Endian endian)\n{\n    this->writeType(pos, d, endian);\n}\n\nvoid QHexEditDataWriter::writeUInt32(qint64 pos, quint32 d, QSysInfo::Endian endian)\n{\n    this->writeType(pos, d, endian);\n}\n\nvoid QHexEditDataWriter::writeUInt64(qint64 pos, quint64 d, QSysInfo::Endian endian)\n{\n    this->writeType(pos, d, endian);\n}\n\nvoid QHexEditDataWriter::writeInt8(qint64 pos, uchar d)\n{\n    this->replace(pos, QByteArray().append(d));\n}\n\nvoid QHexEditDataWriter::writeInt16(qint64 pos, qint16 d, QSysInfo::Endian endian)\n{\n    this->writeType(pos, d, endian);\n}\n\nvoid QHexEditDataWriter::writeInt32(qint64 pos, qint32 d, QSysInfo::Endian endian)\n{\n    this->writeType(pos, d, endian);\n}\n\nvoid QHexEditDataWriter::writeInt64(qint64 pos, qint64 d, QSysInfo::Endian endian)\n{\n    this->writeType(pos, d, endian);\n}\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditdatawriter.h",
    "content": "#ifndef QHEXEDITDATAWRITER_H\n#define QHEXEDITDATAWRITER_H\n\n#include <QtCore>\n#include \"qhexeditdata.h\"\n\nclass QHexEditDataWriter : public QObject\n{\n    Q_OBJECT\n\n    public:\n        explicit QHexEditDataWriter(QHexEditData* hexeditdata, QObject* parent = 0);\n        const QHexEditData* hexEditData() const;\n        void append(const QByteArray& ba);\n        void insert(qint64 pos, uchar ch);\n        void insert(qint64 pos, const QByteArray& ba);\n        void remove(qint64 pos, qint64 len);\n        void replace(qint64 pos, uchar b);\n        void replace(qint64 pos, qint64 len, uchar b);\n        void replace(qint64 pos, const QByteArray& ba);\n        void replace(qint64 pos, qint64 len, const QByteArray& ba);\n        void writeUInt8(qint64 pos, char d);\n        void writeUInt16(qint64 pos, quint16 d, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        void writeUInt32(qint64 pos, quint32 d, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        void writeUInt64(qint64 pos, quint64 d, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        void writeInt8(qint64 pos, uchar d);\n        void writeInt16(qint64 pos, qint16 d, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        void writeInt32(qint64 pos, qint32 d, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n        void writeInt64(qint64 pos, qint64 d, QSysInfo::Endian endian = QSysInfo::ByteOrder);\n\n    private:\n        template<typename T> void writeType(qint64 pos, T d, QSysInfo::Endian endian)\n        {\n            QByteArray ba;\n            QDataStream ds(&ba, QIODevice::WriteOnly);\n\n            if(endian == QSysInfo::LittleEndian)\n                ds.setByteOrder(QDataStream::LittleEndian);\n            else\n                ds.setByteOrder(QDataStream::BigEndian);\n\n            ds << d;\n            this->replace(pos, ba);\n        }\n\n    private:\n        QHexEditData* _hexeditdata;\n};\n\n#endif // QHEXEDITDATAWRITER_H\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexedithighlighter.cpp",
    "content": "#include \"qhexedithighlighter.h\"\n\nQHexEditHighlighter::QHexEditHighlighter(QHexEditData *hexeditdata, QColor backdefault, QColor foredefault, QObject *parent): QObject(parent), _hexeditdata(hexeditdata), _backdefault(backdefault), _foredefault(foredefault)\n{\n\n}\n\nvoid QHexEditHighlighter::colors(qint64 pos, QColor &bc, QColor &fc) const\n{\n    bc = this->backColor(pos);\n    fc = this->foreColor(pos);\n}\n\nQColor QHexEditHighlighter::defaultBackColor() const\n{\n    return this->_backdefault;\n}\n\nQColor QHexEditHighlighter::defaultForeColor() const\n{\n    return this->_foredefault;\n}\n\nQColor QHexEditHighlighter::backColor(qint64 pos) const\n{\n    if(!this->_backgroundmap.contains(pos))\n        return this->_backdefault;\n\n    return *this->_backgroundmap.valueAt(pos);\n}\n\nQColor QHexEditHighlighter::foreColor(qint64 pos) const\n{\n    if(!this->_foregroundmap.contains(pos))\n        return this->_foredefault;\n\n    return *this->_foregroundmap.valueAt(pos);\n}\n\nvoid QHexEditHighlighter::highlightForeground(qint64 start, qint64 end, const QColor& color)\n{\n    if(start < 0)\n        start = 0;\n\n    if(end > this->_hexeditdata->length())\n        end = this->_hexeditdata->length() - 1;\n\n    this->_foregroundmap.addRange(start, end, color);\n}\n\nvoid QHexEditHighlighter::highlightBackground(qint64 start, qint64 end, const QColor& color)\n{\n    if(start < 0)\n        start = 0;\n\n    if(end > this->_hexeditdata->length())\n        end = this->_hexeditdata->length() - 1;\n\n    this->_backgroundmap.addRange(start, end, color);\n}\n\nvoid QHexEditHighlighter::clearHighlight(qint64 start, qint64 end)\n{\n    if(start < 0)\n        start = 0;\n\n    if(end > this->_hexeditdata->length())\n        end = this->_hexeditdata->length() - 1;\n\n    this->_foregroundmap.clearRange(start, end);\n    this->_backgroundmap.clearRange(start, end);\n}\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexedithighlighter.h",
    "content": "#ifndef QHEXEDITHIGHLIGHTER_H\n#define QHEXEDITHIGHLIGHTER_H\n\n#include <QtCore>\n#include <QtGui>\n#include <QtWidgets>\n#include \"qhexeditdata.h\"\n#include \"sparserangemap.h\"\n\nclass QHexEditHighlighter : public QObject\n{\n    Q_OBJECT\n\n    private:\n        typedef SparseRangeMap<QColor> ColorMap;\n\n    public:\n        explicit QHexEditHighlighter(QHexEditData* hexeditdata, QColor backdefault, QColor foredefault, QObject *parent = 0);\n        void colors(qint64 pos, QColor& bc, QColor& fc) const;\n        QColor defaultBackColor() const;\n        QColor defaultForeColor() const;\n        QColor backColor(qint64 pos) const;\n        QColor foreColor(qint64 pos) const;\n        void highlightForeground(qint64 start, qint64 end, const QColor& color);\n        void highlightBackground(qint64 start, qint64 end, const QColor& color);\n        void clearHighlight(qint64 start, qint64 end);\n\n    private:\n        ColorMap _backgroundmap;\n        ColorMap _foregroundmap;\n        QHexEditData* _hexeditdata;\n        QColor _backdefault;\n        QColor _foredefault;\n};\n\n#endif // QHEXEDITHIGHLIGHTER_H\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditprivate.cpp",
    "content": "#include \"qhexeditprivate.h\"\r\n\r\nQString QHexEditPrivate::UNPRINTABLE_CHAR;\r\nconst int QHexEditPrivate::CURSOR_BLINK_INTERVAL = 500; /* 0.5 sec */\r\nconst qint64 QHexEditPrivate::BYTES_PER_LINE = 0x10;\r\n\r\nQHexEditPrivate::QHexEditPrivate(QScrollArea *scrollarea, QScrollBar *vscrollbar, QWidget *parent): QWidget(parent)\r\n{\r\n    if(QHexEditPrivate::UNPRINTABLE_CHAR.isEmpty())\r\n        QHexEditPrivate::UNPRINTABLE_CHAR = \".\";\r\n\r\n    this->_lastkeyevent = nullptr;\r\n    this->_writer = nullptr;\r\n    this->_reader = nullptr;\r\n    this->_highlighter = nullptr;\r\n    this->_comments = nullptr;\r\n    this->_hexeditdata = nullptr;\r\n    this->_scrollarea = scrollarea;\r\n    this->_vscrollbar = vscrollbar;\r\n    this->_blink = this->_readonly = false;\r\n    this->_lastvisiblelines = this->_lastvscrollpos = this->_baseaddress = this->_cursorX = this->_cursorY = this->_cursorpos = this->_selectionstart = this->_selectionend = this->_charidx = this->_charheight = this->_charwidth = 0;\r\n    this->_selpart = QHexEditPrivate::HexPart;\r\n    this->_insmode = QHexEditPrivate::Overwrite;\r\n\r\n    connect(this->_vscrollbar, SIGNAL(valueChanged(int)), this, SLOT(onVScrollBarValueChanged(int)));\r\n    connect(this->_vscrollbar, SIGNAL(valueChanged(int)), this, SIGNAL(verticalScrollBarValueChanged(int)));\r\n\r\n    QFont f(\"Monospace\", qApp->font().pointSize());\r\n    f.setStyleHint(QFont::TypeWriter); /* Use monospace fonts! */\r\n\r\n    this->setMouseTracking(true);\r\n    this->setFont(f);\r\n    this->setWheelScrollLines(5); /* By default: scroll 5 lines */\r\n    this->setAddressWidth(8);\r\n    this->setCursor(Qt::IBeamCursor);\r\n    this->setFocusPolicy(Qt::StrongFocus);\r\n    this->setBackgroundRole(QPalette::Base);\r\n    this->setSelectedCursorBrush(Qt::lightGray);\r\n    this->setLineColor(QColor(0xFF, 0xFF, 0xA0));\r\n    this->setAddressForeColor(Qt::darkBlue);\r\n    this->setAddressBackColor(QColor(0xF0, 0xF0, 0xFE));\r\n    this->setAlternateLineColor(QColor(0xF0, 0xF0, 0xFE));\r\n\r\n    this->_timBlink = new QTimer();\r\n    this->_timBlink->setInterval(QHexEditPrivate::CURSOR_BLINK_INTERVAL);\r\n\r\n    connect(this->_timBlink, SIGNAL(timeout()), this, SLOT(blinkCursor()));\r\n    this->_timBlink->start();\r\n}\r\n\r\nvoid QHexEditPrivate::undo()\r\n{\r\n    if(!this->_hexeditdata || !this->_hexeditdata->undoStack()->canUndo())\r\n        return;\r\n\r\n    this->_hexeditdata->undoStack()->undo();\r\n}\r\n\r\nvoid QHexEditPrivate::redo()\r\n{\r\n    if(!this->_hexeditdata || !this->_hexeditdata->undoStack()->canRedo())\r\n        return;\r\n\r\n    this->_hexeditdata->undoStack()->redo();\r\n}\r\n\r\nvoid QHexEditPrivate::cut()\r\n{\r\n    qint64 start = qMin(this->_selectionstart, this->_selectionend);\r\n    qint64 end = qMax(this->_selectionstart, this->_selectionend);\r\n\r\n    if(end - start)\r\n    {\r\n        QClipboard* cpbd = qApp->clipboard();\r\n        QByteArray ba = this->_reader->read(start, end - start);\r\n\r\n        cpbd->setText(QString(ba));\r\n        this->_writer->remove(start, end - start);\r\n        this->setCursorPos(start, 0);\r\n        this->adjust();\r\n        this->ensureVisible();\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::copy()\r\n{\r\n    qint64 start = qMin(this->_selectionstart, this->_selectionend);\r\n    qint64 end = qMax(this->_selectionstart, this->_selectionend);\r\n\r\n    if(end - start)\r\n    {\r\n        QClipboard* cpbd = qApp->clipboard();\r\n        QByteArray ba = this->_reader->read(start, end - start);\r\n        cpbd->setText(QString::fromLatin1(ba.constData(), ba.length()));\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::copyHex()\r\n{\r\n    qint64 start = qMin(this->_selectionstart, this->_selectionend);\r\n    qint64 end = qMax(this->_selectionstart, this->_selectionend);\r\n\r\n    if(end - start)\r\n    {\r\n        QClipboard* cpbd = qApp->clipboard();\r\n        QByteArray ba = this->_reader->read(start, end - start);\r\n        cpbd->setText(QString(ba.toHex()).toUpper());\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::paste()\r\n{\r\n    QClipboard* cpbd = qApp->clipboard();\r\n    QString s = cpbd->text();\r\n\r\n    if(!s.isNull())\r\n    {\r\n        QByteArray ba = s.toLatin1();\r\n        qint64 start = qMin(this->_selectionstart, this->_selectionend);\r\n        qint64 end = qMax(this->_selectionstart, this->_selectionend);\r\n        qint64 len = end - start;\r\n\r\n        if(len)\r\n            this->_writer->replace(start, len, ba);\r\n        else if(this->_insmode == QHexEditPrivate::Overwrite)\r\n            this->_writer->replace(start, ba.length(), ba);\r\n        else\r\n            this->_writer->insert(start, ba);\r\n\r\n        this->setCursorPos((start + s.length()), 0);\r\n        this->adjust();\r\n        this->ensureVisible();\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::pasteHex()\r\n{\r\n    QClipboard* cpbd = qApp->clipboard();\r\n    QString s = cpbd->text();\r\n\r\n    if(!s.isNull())\r\n    {\r\n        QByteArray ba = QByteArray::fromHex(s.toLatin1());\r\n        qint64 start = qMin(this->_selectionstart, this->_selectionend);\r\n        qint64 end = qMax(this->_selectionstart, this->_selectionend);\r\n        qint64 len = end - start;\r\n\r\n        if(len)\r\n            this->_writer->replace(start, len, ba);\r\n        else if(this->_insmode == QHexEditPrivate::Overwrite)\r\n            this->_writer->replace(start, ba.length(), ba);\r\n        else\r\n            this->_writer->insert(start, ba);\r\n\r\n        this->setCursorPos((start + s.length()), 0);\r\n        this->adjust();\r\n        this->ensureVisible();\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::setBaseAddress(qint64 ba)\r\n{\r\n    this->_baseaddress = ba;\r\n}\r\n\r\nvoid QHexEditPrivate::setData(QHexEditData *hexeditdata)\r\n{\r\n    if(this->_hexeditdata) /* Disconnect previous HexEditData Signals, if any */\r\n        disconnect(this->_hexeditdata, SIGNAL(dataChanged(qint64,qint64,QHexEditData::ActionType)), this, SLOT(hexEditDataChanged(qint64,qint64,QHexEditData::ActionType)));\r\n\r\n    if(hexeditdata)\r\n    {\r\n        this->_hexeditdata = hexeditdata;\r\n        this->_reader = new QHexEditDataReader(hexeditdata, hexeditdata);\r\n        this->_writer = new QHexEditDataWriter(hexeditdata, hexeditdata);\r\n        this->_highlighter = new QHexEditHighlighter(hexeditdata, QColor(Qt::transparent), this->palette().color(QPalette::WindowText), this);\r\n        this->_comments = new QHexEditComments(this);\r\n\r\n        connect(hexeditdata, SIGNAL(dataChanged(qint64,qint64,QHexEditData::ActionType)), SLOT(hexEditDataChanged(qint64,qint64,QHexEditData::ActionType)));\r\n\r\n        /* Check Max Address Width */\r\n        QString addrString = QString(\"%1\").arg(this->_hexeditdata->length() / QHexEditPrivate::BYTES_PER_LINE);\r\n\r\n        if(this->_addressWidth < addrString.length()) /* Adjust Address Width */\r\n            this->_addressWidth = addrString.length();\r\n\r\n        this->setCursorPos(0); /* Make a Selection */\r\n    }\r\n    else\r\n        this->_hexeditdata = nullptr;\r\n\r\n    this->adjust();\r\n    this->update();\r\n\r\n    emit positionChanged(0);\r\n    emit selectionChanged(0);\r\n}\r\n\r\nvoid QHexEditPrivate::setReadOnly(bool b)\r\n{\r\n    this->_readonly = b;\r\n}\r\n\r\nvoid QHexEditPrivate::setAddressWidth(int w)\r\n{\r\n    this->_addressWidth = w;\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::setWheelScrollLines(int c)\r\n{\r\n    this->_whellscrolllines = c;\r\n}\r\n\r\nvoid QHexEditPrivate::setCursorPos(qint64 pos)\r\n{\r\n    this->setCursorPos(pos, 0);\r\n}\r\n\r\nvoid QHexEditPrivate::ensureVisible()\r\n{\r\n    qint64 vislines = this->height() / this->_charheight;\r\n    qint64 currline = this->verticalSliderPosition64() + (this->_cursorY / this->_charheight);\r\n\r\n    if(currline <= this->verticalSliderPosition64() || currline >= (this->verticalSliderPosition64() + vislines))\r\n        this->_vscrollbar->setValue(qMax(currline - (vislines / 2), qint64(0)));\r\n}\r\n\r\nvoid QHexEditPrivate::adjust()\r\n{\r\n    QFontMetrics fm = this->fontMetrics();\r\n\r\n    this->_charwidth = fm.width(\" \");\r\n    this->_charheight = fm.height();\r\n\r\n    this->_xposhex =  this->_charwidth * (this->_addressWidth + 1);\r\n    this->_xposascii = this->_xposhex + (this->_charwidth * (QHexEditPrivate::BYTES_PER_LINE * 3));\r\n    this->_xPosend = this->_xposascii + (this->_charwidth * QHexEditPrivate::BYTES_PER_LINE);\r\n\r\n    if(this->_hexeditdata)\r\n    {\r\n        /* Setup ScrollBars */\r\n        qint64 totLines = this->_hexeditdata->length() / QHexEditPrivate::BYTES_PER_LINE;\r\n        qint64 visLines = this->height() / this->_charheight;\r\n\r\n        /* Setup Vertical ScrollBar */\r\n        if(totLines > visLines)\r\n        {\r\n            this->_vscrollbar->setRange(0, (totLines - visLines) + 1);\r\n            this->_vscrollbar->setSingleStep(1);\r\n            this->_vscrollbar->setPageStep(visLines);\r\n            this->_vscrollbar->show();\r\n        }\r\n        else\r\n            this->_vscrollbar->hide();\r\n\r\n        /* Setup Horizontal ScrollBar */\r\n        this->setMinimumWidth(this->_xPosend);\r\n    }\r\n    else\r\n    {\r\n        /* No File Loaded: Hide Scroll Bars */\r\n        this->_vscrollbar->hide();\r\n        this->setMinimumWidth(0);\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::setSelectionEnd(qint64 pos, int charidx)\r\n{\r\n    qint64 oldselendlength = this->selectionEnd() - this->selectionStart();\r\n\r\n    if(pos >= this->_hexeditdata->length())\r\n        pos = this->_hexeditdata->length();\r\n\r\n    this->_selectionend = pos;\r\n    this->_charidx = charidx;\r\n\r\n    this->updateCursorXY(pos, charidx);\r\n    this->update();\r\n\r\n    qint64 len = this->selectionEnd() - this->selectionStart();\r\n\r\n    if(oldselendlength != len)\r\n        emit selectionChanged(qMax(this->selectionStart(), pos) - qMin(this->selectionStart(), pos));\r\n}\r\n\r\nvoid QHexEditPrivate::setSelection(qint64 start, qint64 end)\r\n{\r\n    if(end == -1)\r\n        end = this->_hexeditdata->length();\r\n\r\n    this->setCursorPos(start); /* Updates selectionstart too */\r\n    this->setSelectionEnd(end + 1, 0); /* 'end' is inclusive */\r\n\r\n    this->ensureVisible();\r\n\r\n    emit positionChanged(start);\r\n}\r\n\r\nvoid QHexEditPrivate::highlightForeground(qint64 start, qint64 end, const QColor &color)\r\n{\r\n    if(!this->_highlighter)\r\n        return;\r\n\r\n    this->_highlighter->highlightForeground(start, end, color);\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::highlightBackground(qint64 start, qint64 end, const QColor &color)\r\n{\r\n    if(!this->_highlighter)\r\n        return;\r\n\r\n    this->_highlighter->highlightBackground(start, end, color);\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::clearHighlight(qint64 start, qint64 end)\r\n{\r\n    if(!this->_highlighter)\r\n        return;\r\n\r\n    this->_highlighter->clearHighlight(start, end);\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::clearHighlight()\r\n{\r\n    if(this->_hexeditdata)\r\n        this->clearHighlight(0, this->_hexeditdata->length());\r\n}\r\n\r\nvoid QHexEditPrivate::commentRange(qint64 start, qint64 end, const QString &comment)\r\n{\r\n    if(!this->_comments)\r\n        return;\r\n\r\n    this->_comments->commentRange(start, end, comment);\r\n}\r\n\r\nvoid QHexEditPrivate::uncommentRange(qint64 start, qint64 end)\r\n{\r\n    if(!this->_comments)\r\n        return;\r\n\r\n    this->_comments->uncommentRange(start, end);\r\n}\r\n\r\nvoid QHexEditPrivate::clearComments()\r\n{\r\n    if(!this->_comments)\r\n        return;\r\n\r\n    this->_comments->clearComments();\r\n}\r\n\r\nvoid QHexEditPrivate::setFont(const QFont &font)\r\n{\r\n    QWidget::setFont(font);\r\n    this->adjust();\r\n}\r\n\r\nvoid QHexEditPrivate::setLineColor(const QColor &c)\r\n{\r\n    this->_sellinecolor = c;\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::setSelectedCursorBrush(const QBrush &b)\r\n{\r\n    this->_selcursorbrush = b;\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::setVerticalScrollBarValue(int value)\r\n{\r\n    this->_vscrollbar->setValue(value);\r\n}\r\n\r\nvoid QHexEditPrivate::scroll(QWheelEvent *event)\r\n{\r\n    this->wheelEvent(event);\r\n}\r\n\r\nqint64 QHexEditPrivate::indexOf(QByteArray &ba, qint64 start)\r\n{\r\n    if(this->_hexeditdata)\r\n        return this->_reader->indexOf(ba, start);\r\n\r\n    return -1;\r\n}\r\n\r\nqint64 QHexEditPrivate::baseAddress()\r\n{\r\n    return this->_baseaddress;\r\n}\r\n\r\nbool QHexEditPrivate::readOnly()\r\n{\r\n    return this->_readonly;\r\n}\r\n\r\nint QHexEditPrivate::addressWidth()\r\n{\r\n    return this->_addressWidth;\r\n}\r\n\r\nint QHexEditPrivate::visibleLinesCount()\r\n{\r\n    return qCeil(this->height() / this->_charheight);\r\n}\r\n\r\nint QHexEditPrivate::wheelScrollLines()\r\n{\r\n    return this->_whellscrolllines;\r\n}\r\n\r\nqint64 QHexEditPrivate::cursorPos()\r\n{\r\n    return this->_cursorpos;\r\n}\r\n\r\nqint64 QHexEditPrivate::selectionStart()\r\n{\r\n    return qMin(this->_selectionstart, this->_selectionend);\r\n}\r\n\r\nqint64 QHexEditPrivate::selectionEnd()\r\n{\r\n    return qMax(this->_selectionstart, this->_selectionend);\r\n}\r\n\r\nqint64 QHexEditPrivate::visibleStartOffset()\r\n{\r\n    return qMin(this->verticalSliderPosition64() * QHexEditPrivate::BYTES_PER_LINE, this->_hexeditdata->length()); /* Adjust to EOF, if needed */\r\n}\r\n\r\nqint64 QHexEditPrivate::visibleEndOffset()\r\n{\r\n    qint64 endoff = this->visibleStartOffset() + ((this->height() / this->_charheight) * QHexEditPrivate::BYTES_PER_LINE) - 1;\r\n    return qMin(endoff, this->_hexeditdata->length()); /* Adjust to EOF, if needed */\r\n}\r\n\r\nQHexEditData *QHexEditPrivate::data()\r\n{\r\n    return this->_hexeditdata;\r\n}\r\n\r\nvoid QHexEditPrivate::setAddressForeColor(const QColor &c)\r\n{\r\n    this->_addressforecolor = c;\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::setAddressBackColor(const QColor &c)\r\n{\r\n    this->_addressbackcolor = c;\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::setAlternateLineColor(const QColor &c)\r\n{\r\n    this->_alternatelinecolor = c;\r\n    this->update();\r\n}\r\n\r\nQColor& QHexEditPrivate::lineColor()\r\n{\r\n    return this->_sellinecolor;\r\n}\r\n\r\nQBrush& QHexEditPrivate::selectedCursorBrush()\r\n{\r\n    return this->_selcursorbrush;\r\n}\r\n\r\nvoid QHexEditPrivate::internalSetCursorPos(qint64 pos, int charidx)\r\n{\r\n    if(pos > this->_hexeditdata->length()) /* No >= because we can add text at EOS */\r\n    {\r\n        int currLine = this->_selectionstart / QHexEditPrivate::BYTES_PER_LINE;\r\n        int lastLine = this->_hexeditdata->length() / QHexEditPrivate::BYTES_PER_LINE;\r\n\r\n        if(currLine == lastLine)\r\n            pos = this->_selectionstart;\r\n        else\r\n            pos = this->_hexeditdata->length();\r\n    }\r\n\r\n    this->_cursorpos = this->_selectionend = this->_selectionstart = pos;\r\n    this->_charidx = charidx;\r\n}\r\n\r\nvoid QHexEditPrivate::checkVisibleLines()\r\n{\r\n    qint64 vislines = this->visibleLinesCount();\r\n    qint64 vscrollpos = this->verticalSliderPosition64();\r\n\r\n    if((vislines != this->_lastvisiblelines) || (vscrollpos != this->_lastvscrollpos))\r\n    {\r\n        this->_lastvisiblelines = vislines;\r\n        this->_lastvscrollpos = vscrollpos;\r\n        emit visibleLinesChanged();\r\n    }\r\n}\r\n\r\nbool QHexEditPrivate::isTextSelected()\r\n{\r\n    return this->_selectionstart != this->_selectionend;\r\n}\r\n\r\nvoid QHexEditPrivate::removeSelectedText()\r\n{\r\n    qint64 start = qMin(this->selectionStart(), this->selectionEnd());\r\n    qint64 end = qMax(this->selectionStart(), this->selectionEnd());\r\n\r\n    this->_writer->remove(start, end - start);\r\n}\r\n\r\nvoid QHexEditPrivate::processDeleteEvents()\r\n{\r\n    if(this->isTextSelected())\r\n        this->removeSelectedText();\r\n    else if(this->_insmode == QHexEditPrivate::Overwrite)\r\n    {\r\n        if(this->_selpart == HexPart)\r\n        {\r\n            uchar hexval = this->_reader->at(this->selectionStart());\r\n\r\n            if(this->_charidx == 1) /* Change Byte's Low Part */\r\n                hexval = (hexval & 0xF0);\r\n            else /* Change Byte's High Part */\r\n                hexval = (hexval & 0x0F);\r\n\r\n            this->_writer->replace(this->selectionStart(), hexval);\r\n        }\r\n        else\r\n            this->_writer->replace(this->selectionStart(), 0x00);\r\n    }\r\n    else\r\n        this->_writer->remove(this->selectionStart(), 1);\r\n}\r\n\r\nvoid QHexEditPrivate::processBackspaceEvents()\r\n{\r\n    if(this->isTextSelected())\r\n        this->removeSelectedText();\r\n    else if(this->selectionStart())\r\n    {\r\n        if(this->_insmode == QHexEditPrivate::Overwrite)\r\n            this->_writer->replace(this->selectionStart() - 1, 0x00);\r\n        else\r\n            this->_writer->remove(this->selectionStart() - 1, 1);\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::processHexPart(int key)\r\n{\r\n    if(this->isTextSelected())\r\n        this->removeSelectedText();\r\n\r\n    uchar val = static_cast<uchar>(QString(key).toUInt(NULL, 16));\r\n\r\n    if((this->_insmode == QHexEditPrivate::Insert) && !this->_charidx) /* Insert a new byte */\r\n    {\r\n        /* Insert Mode: Add one byte in current position */\r\n        uchar hexval = val << 4; /* X0 Byte */\r\n        this->_writer->insert(this->selectionStart(), hexval);\r\n    }\r\n    else if((this->_hexeditdata->length() > 0) && (this->selectionStart() < this->_hexeditdata->length()))\r\n    {\r\n         /* Override mode, or update low nibble */\r\n        uchar hexval = this->_reader->at(this->selectionStart());\r\n\r\n        if(this->_charidx == 1) /* Change Byte's Low Part */\r\n            hexval = (hexval & 0xF0) + val;\r\n        else /* Change Byte's High Part */\r\n            hexval = (hexval & 0x0F) + (val << 4);\r\n\r\n        this->_writer->replace(this->selectionStart(), hexval);\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::processAsciiPart(int key)\r\n{\r\n    if(this->isTextSelected())\r\n        this->removeSelectedText();\r\n\r\n    /* Insert Mode: Add one byte in current position */\r\n    if(this->_insmode == QHexEditPrivate::Insert)\r\n        this->_writer->insert(this->selectionStart(), static_cast<uchar>(key));\r\n    else if(this->_insmode == QHexEditPrivate::Overwrite && ((this->_hexeditdata->length() > 0) && (this->selectionStart() < this->_hexeditdata->length())))\r\n        this->_writer->replace(this->selectionStart(), (char)key);\r\n}\r\n\r\nbool QHexEditPrivate::processMoveEvents(QKeyEvent *event)\r\n{\r\n    bool processed = true;\r\n\r\n    if(event->matches(QKeySequence::MoveToNextChar) || event->matches(QKeySequence::MoveToPreviousChar))\r\n    {\r\n        if(this->_selpart == QHexEditPrivate::HexPart)\r\n        {\r\n            if(event->matches(QKeySequence::MoveToNextChar))\r\n            {\r\n                if(this->_charidx == 0)\r\n                    this->setCursorPos(this->selectionStart(), 1);\r\n                else /* if(this->_hexeditbuffer->charIndex() == 1) */\r\n                    this->setCursorPos(this->selectionStart() + 1, 0);\r\n            }\r\n            else if(event->matches(QKeySequence::MoveToPreviousChar))\r\n            {\r\n                if(this->_charidx == 0)\r\n                    this->setCursorPos(this->selectionStart() - 1, 1);\r\n                else /* if(this->_hexeditbuffer->charIndex() == 1) */\r\n                    this->setCursorPos(this->selectionStart(), 0);\r\n            }\r\n        }\r\n        else if(this->_selpart == QHexEditPrivate::AsciiPart)\r\n        {\r\n            if(event->matches(QKeySequence::MoveToNextChar))\r\n                this->setCursorPos(this->selectionStart() + 1, 0);\r\n            else if(event->matches(QKeySequence::MoveToPreviousChar))\r\n                this->setCursorPos(this->selectionStart() - 1, 0);\r\n        }\r\n    }\r\n    else if(event->matches(QKeySequence::MoveToNextLine))\r\n        this->setCursorPos(this->selectionStart() + QHexEditPrivate::BYTES_PER_LINE, this->_charidx);\r\n    else if(event->matches(QKeySequence::MoveToPreviousLine))\r\n        this->setCursorPos(this->selectionStart() - QHexEditPrivate::BYTES_PER_LINE, this->_charidx);\r\n    else if(event->matches(QKeySequence::MoveToStartOfLine))\r\n        this->setCursorPos(this->selectionStart() - (this->selectionStart() % QHexEditPrivate::BYTES_PER_LINE));\r\n    else if(event->matches(QKeySequence::MoveToNextPage))\r\n        this->setCursorPos(this->selectionStart() + (((this->height() / this->_charheight) - 1) * QHexEditPrivate::BYTES_PER_LINE));\r\n    else if(event->matches(QKeySequence::MoveToPreviousPage))\r\n        this->setCursorPos(this->selectionStart() - (((this->height() / this->_charheight) - 1) * QHexEditPrivate::BYTES_PER_LINE));\r\n    else if(event->matches(QKeySequence::MoveToEndOfLine))\r\n        this->setCursorPos(this->selectionStart() | (QHexEditPrivate::BYTES_PER_LINE - 1));\r\n    else if(event->matches(QKeySequence::MoveToStartOfDocument))\r\n        this->setCursorPos(0);\r\n    else if(event->matches(QKeySequence::MoveToEndOfDocument))\r\n        this->setCursorPos(this->_hexeditdata->length());\r\n    else\r\n        processed = false;\r\n\r\n    return processed;\r\n}\r\n\r\nbool QHexEditPrivate::processSelectEvents(QKeyEvent *event)\r\n{\r\n    bool processed = true;\r\n\r\n    if(event->matches(QKeySequence::SelectNextChar) || event->matches(QKeySequence::SelectPreviousChar))\r\n    {\r\n        if(this->_selpart == QHexEditPrivate::HexPart)\r\n        {\r\n            if(event->matches(QKeySequence::SelectNextChar))\r\n            {\r\n                if(this->_charidx == 0)\r\n                    this->setSelectionEnd(this->selectionEnd(), 1);\r\n                else /* if(this->_hexeditbuffer->charIndex() == 1) */\r\n                    this->setSelectionEnd(this->selectionEnd() + 1, 0);\r\n            }\r\n            else if(event->matches(QKeySequence::SelectPreviousChar))\r\n            {\r\n                if(this->_charidx == 0)\r\n                    this->setSelectionEnd(this->selectionEnd() - 1, 1);\r\n                else /* if(this->_hexeditbuffer->charIndex() == 1) */\r\n                    this->setSelectionEnd(this->selectionEnd(), 0);\r\n            }\r\n        }\r\n        else if(this->_selpart == QHexEditPrivate::AsciiPart)\r\n        {\r\n            if(event->matches(QKeySequence::SelectNextChar))\r\n                this->setSelectionEnd(this->selectionEnd() + 1, 0);\r\n            else if(event->matches(QKeySequence::SelectPreviousChar))\r\n                this->setSelectionEnd(this->selectionEnd() - 1, 0);\r\n        }\r\n    }\r\n    else if(event->matches(QKeySequence::SelectNextLine))\r\n        this->setSelectionEnd(this->selectionEnd() + QHexEditPrivate::BYTES_PER_LINE, this->_charidx);\r\n    else if(event->matches(QKeySequence::SelectPreviousLine))\r\n        this->setSelectionEnd(this->selectionEnd() - QHexEditPrivate::BYTES_PER_LINE, this->_charidx);\r\n    else if(event->matches(QKeySequence::SelectStartOfDocument))\r\n        this->setSelection(this->selectionEnd(), 0);\r\n    else if(event->matches(QKeySequence::SelectEndOfDocument))\r\n        this->setSelectionEnd(this->_hexeditdata->length(), 0);\r\n    else if(event->matches(QKeySequence::SelectAll))\r\n        this->setSelection(0, this->_hexeditdata->length());\r\n    else\r\n        processed = false;\r\n\r\n    return processed;\r\n}\r\n\r\nbool QHexEditPrivate::processTextInputEvents(QKeyEvent *event)\r\n{\r\n    if(event->modifiers() & Qt::ControlModifier)\r\n        return false;\r\n\r\n    bool processed = true;\r\n    int key = static_cast<int>(event->text()[0].toLatin1());\r\n\r\n    if((this->_selpart == HexPart) && ((key >= '0' && key <= '9') || (key >= 'a' && key <= 'f'))) /* Check if is a Hex Char */\r\n        this->processHexPart(key);\r\n    else if((this->_selpart == QHexEditPrivate::AsciiPart) && (key >= 0x20 && key <= 0x7E)) /* Check if is a Printable Char */\r\n        this->processAsciiPart(key);\r\n    else if(event->key() == Qt::Key_Delete)\r\n        this->processDeleteEvents();\r\n    else if((event->key() == Qt::Key_Backspace) && (event->modifiers() == Qt::NoModifier))\r\n        this->processBackspaceEvents();\r\n    else\r\n        processed = false;\r\n\r\n    return processed;\r\n}\r\n\r\nbool QHexEditPrivate::processInsOvrEvents(QKeyEvent *event)\r\n{\r\n    if((event->key() == Qt::Key_Insert) && (event->modifiers() == Qt::NoModifier))\r\n    {\r\n        this->_insmode = (this->_insmode == QHexEditPrivate::Overwrite ? QHexEditPrivate::Insert : QHexEditPrivate::Overwrite);\r\n        this->_blink = true;\r\n        this->update();\r\n        return true;\r\n    }\r\n\r\n    return false;\r\n}\r\n\r\nbool QHexEditPrivate::processUndoRedo(QKeyEvent *event)\r\n{\r\n    bool processed = true;\r\n\r\n    if(event->matches(QKeySequence::Undo))\r\n        this->undo();\r\n    else if(event->matches(QKeySequence::Redo))\r\n        this->redo();\r\n    else\r\n        processed = false;\r\n\r\n    return processed;\r\n}\r\n\r\nbool QHexEditPrivate::processClipboardKeys(QKeyEvent *event)\r\n{\r\n    bool processed = true;\r\n\r\n    if(event->matches(QKeySequence::Cut))\r\n        this->cut();\r\n    else if(event->matches(QKeySequence::Copy))\r\n        this->copy();\r\n    else if(event->matches(QKeySequence::Paste))\r\n        this->paste();\r\n    else\r\n        processed = false;\r\n\r\n    return processed;\r\n}\r\n\r\nvoid QHexEditPrivate::setCursorPos(qint64 pos, int charidx)\r\n{\r\n    if(pos < 0)\r\n        pos = 0;\r\n    else if(pos > this->_hexeditdata->length())\r\n        pos = this->_hexeditdata->length();\r\n\r\n    qint64 oldpos = this->cursorPos();\r\n    int oldcharidx = this->_charidx;\r\n    qint64 oldsellength = this->selectionEnd() - this->selectionStart();\r\n\r\n    /* Delete Cursor */\r\n    this->_blink = false;\r\n    this->update();\r\n\r\n    this->internalSetCursorPos(pos, charidx);\r\n    this->updateCursorXY(this->cursorPos(), charidx);\r\n\r\n    /* Redraw Cursor NOW! */\r\n    this->_blink = true;\r\n    this->update();\r\n\r\n    this->ensureVisible();\r\n\r\n    if(oldsellength != (this->selectionEnd() - this->selectionStart()))\r\n        emit selectionChanged(0);\r\n\r\n    if(oldpos != pos || oldcharidx != charidx)\r\n        emit positionChanged(pos);\r\n}\r\n\r\nvoid QHexEditPrivate::updateCursorXY(qint64 pos, int charidx)\r\n{\r\n    this->_cursorY = ((pos - (this->verticalSliderPosition64() * QHexEditPrivate::BYTES_PER_LINE)) / QHexEditPrivate::BYTES_PER_LINE) * this->_charheight;\r\n\r\n    if(this->_selpart == QHexEditPrivate::AddressPart || this->_selpart == QHexEditPrivate::HexPart)\r\n    {\r\n        qint64 x = pos % QHexEditPrivate::BYTES_PER_LINE;\r\n        this->_cursorX = x * (3 * this->_charwidth) + this->_xposhex;\r\n\r\n        if(charidx)\r\n            this->_cursorX += this->_charwidth;\r\n    }\r\n    else /* if this->_selPart == AsciiPart */\r\n    {\r\n        qint64 x = pos % QHexEditPrivate::BYTES_PER_LINE;\r\n        this->_cursorX = x * this->_charwidth + this->_xposascii;\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::drawParts(QPainter &painter)\r\n{\r\n    int span = this->_charwidth / 2;\r\n    painter.setBackgroundMode(Qt::TransparentMode);\r\n    painter.setPen(this->palette().color(QPalette::WindowText));\r\n    painter.drawLine(this->_xposhex - span, 0, this->_xposhex - span, this->height());\r\n    painter.drawLine(this->_xposascii - span, 0, this->_xposascii - span, this->height());\r\n    painter.drawLine(this->_xPosend + span, 0, this->_xPosend + span, this->height());\r\n}\r\n\r\nvoid QHexEditPrivate::drawLineBackground(QPainter &painter, qint64 line, qint64 linestart, int y)\r\n{\r\n    QRect hexr(this->_xposhex, y, this->_xposascii - (this->_charwidth / 2), this->_charheight);\r\n    QRect asciir(this->_xposascii, y, (this->_charwidth * QHexEditPrivate::BYTES_PER_LINE) + (this->_charwidth / 2), this->_charheight);\r\n\r\n    if((this->_cursorpos >= linestart) && (this->_cursorpos < (linestart + QHexEditPrivate::BYTES_PER_LINE))) /* This is the Selected Line */\r\n    {\r\n        painter.fillRect(hexr, this->_sellinecolor);\r\n        painter.fillRect(asciir, this->_sellinecolor);\r\n    }\r\n    else if(line & 1)\r\n    {\r\n        painter.fillRect(hexr, this->_alternatelinecolor);\r\n        painter.fillRect(asciir, this->_alternatelinecolor);\r\n    }\r\n    else\r\n    {\r\n        painter.fillRect(hexr, this->palette().color(QPalette::Base));\r\n        painter.fillRect(asciir, this->palette().color(QPalette::Base));\r\n    }\r\n}\r\n\r\nQColor& QHexEditPrivate::addressForeColor()\r\n{\r\n    return this->_addressforecolor;\r\n}\r\n\r\nQColor& QHexEditPrivate::addressBackColor()\r\n{\r\n    return this->_addressbackcolor;\r\n}\r\n\r\nQColor &QHexEditPrivate::alternateLineColor()\r\n{\r\n    return this->_alternatelinecolor;\r\n}\r\n\r\nvoid QHexEditPrivate::drawLine(QPainter &painter, QFontMetrics &fm, qint64 line, int y)\r\n{\r\n    int xhex = this->_xposhex, xascii = this->_xposascii;\r\n    qint64 linestart = line * QHexEditPrivate::BYTES_PER_LINE;\r\n\r\n    painter.setBackgroundMode(Qt::TransparentMode);\r\n    this->drawLineBackground(painter, line, linestart, y);\r\n    this->drawAddress(painter, fm, line, linestart, y);\r\n\r\n    for(qint64 i = 0; i < QHexEditPrivate::BYTES_PER_LINE; i++)\r\n    {\r\n        qint64 pos = linestart + i;\r\n\r\n        if(pos >= this->_hexeditdata->length())\r\n            return; /* Reached EOF */\r\n\r\n        uchar b = this->_reader->at(pos);\r\n\r\n        if(this->_comments->isCommented(pos))\r\n        {\r\n            QFont f = this->font();\r\n            f.setBold(true);\r\n            painter.setFont(f);\r\n        }\r\n        else\r\n            painter.setFont(this->font());\r\n\r\n        QColor bchex, fchex, bcascii, fcascii;\r\n        this->colorize(b, pos, bchex, fchex, bcascii, fcascii);\r\n\r\n        this->drawHex(painter, fm, bchex, fchex, b, i, xhex, y);\r\n        this->drawAscii(painter, fm, bcascii, fcascii, b, xascii, y);\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::drawAddress(QPainter &painter, QFontMetrics &fm, qint64 line, qint64 linestart, int y)\r\n{\r\n    qint64 linemax = this->_hexeditdata->length() / QHexEditPrivate::BYTES_PER_LINE;\r\n    painter.fillRect(0, y, this->_xposhex - (this->_charwidth / 2), this->_charheight, this->_addressbackcolor);\r\n\r\n    if((this->_hexeditdata && line == 0) || (line < linemax))\r\n    {\r\n        QString addr = QString(\"%1\").arg(this->_baseaddress + (line * QHexEditPrivate::BYTES_PER_LINE), this->_addressWidth, 16, QLatin1Char('0')).toUpper();\r\n\r\n        if((this->_cursorpos >= linestart) && (this->_cursorpos < (linestart + QHexEditPrivate::BYTES_PER_LINE))) /* This is the Selected Line */\r\n            painter.setPen(Qt::red);\r\n        else\r\n            painter.setPen(this->_addressforecolor);\r\n\r\n        painter.drawText(0, y, fm.width(addr), this->_charheight, Qt::AlignLeft | Qt::AlignTop, addr);\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::drawHex(QPainter &painter, QFontMetrics &fm, const QColor& bc, const QColor &fc, uchar b, qint64 i, int &x, int y)\r\n{\r\n    QString s = QString(\"%1\").arg(b, 2, 16, QLatin1Char('0')).toUpper();\r\n    int w = fm.width(s);\r\n    QRect r(x, y, w, this->_charheight);\r\n\r\n    if(i < (QHexEditPrivate::BYTES_PER_LINE - 1))\r\n        r.setWidth(r.width() + this->_charwidth);\r\n\r\n    painter.fillRect(r, bc);\r\n    painter.setPen(fc);\r\n    painter.drawText(x, y, w, this->_charheight, Qt::AlignLeft | Qt::AlignTop, s);\r\n\r\n    x += r.width();\r\n}\r\n\r\nvoid QHexEditPrivate::drawAscii(QPainter &painter, QFontMetrics &fm, const QColor &bc, const QColor &fc, uchar b, int &x, int y)\r\n{\r\n    int w;\r\n    QString s;\r\n\r\n    if(QChar(b).isPrint())\r\n    {\r\n        w = fm.width(b);\r\n        s = QString(b);\r\n    }\r\n    else\r\n    {\r\n        w = fm.width(QHexEditPrivate::UNPRINTABLE_CHAR);\r\n        s = QHexEditPrivate::UNPRINTABLE_CHAR;\r\n    }\r\n\r\n    QRect r(x, y, w, this->_charheight);\r\n    painter.fillRect(r, bc);\r\n    painter.setPen(fc);\r\n    painter.drawText(r, Qt::AlignLeft | Qt::AlignTop, s);\r\n    x += w;\r\n}\r\n\r\nqint64 QHexEditPrivate::cursorPosFromPoint(const QPoint &pt, int *charindex)\r\n{\r\n    qint64 y = (this->verticalSliderPosition64() + (pt.y() / this->_charheight)) * QHexEditPrivate::BYTES_PER_LINE, x = 0;\r\n\r\n    if(charindex)\r\n        *charindex = 0;\r\n\r\n    if(this->_selpart == HexPart)\r\n    {\r\n        x = (pt.x() - this->_xposhex) / this->_charwidth;\r\n\r\n        if(charindex && (x % 3) != 0) /* Is Second Nibble Selected? */\r\n            *charindex = 1;\r\n\r\n        x = x / 3;\r\n    }\r\n    else if(this->_selpart == AsciiPart)\r\n        x = ((pt.x() - this->_xposascii) / this->_charwidth);\r\n    /* else\r\n        is the address part: x = 0 */\r\n\r\n    return y + x;\r\n}\r\n\r\nqint64 QHexEditPrivate::verticalSliderPosition64()\r\n{\r\n    return static_cast<qint64>(this->_vscrollbar->sliderPosition());\r\n}\r\n\r\nvoid QHexEditPrivate::colorize(uchar b, qint64 pos, QColor &bchex, QColor &fchex, QColor &bcascii, QColor &fcascii)\r\n{\r\n    if((this->_selectionstart != this->_selectionend) && (pos >= this->selectionStart()) && (pos < this->selectionEnd())) /* Selected Text */\r\n    {\r\n        bchex = bcascii = this->palette().color(QPalette::Highlight);\r\n        fchex = fcascii = this->palette().color(QPalette::HighlightedText);\r\n    }\r\n    else\r\n    {\r\n        QColor bc, fc;\r\n        this->_highlighter->colors(pos, bc, fc);\r\n\r\n        if((this->_selpart == QHexEditPrivate::AsciiPart || this->_selpart == QHexEditPrivate::HexPart) && (this->_selectionstart == this->_selectionend) && (pos == this->_cursorpos))\r\n        {\r\n            if(this->_selpart == QHexEditPrivate::AsciiPart)\r\n            {\r\n                bchex = QColor(Qt::lightGray);\r\n                bcascii = bc;\r\n            }\r\n            else /* if(this->_selpart == QHexEditPrivate::HexPart) */\r\n            {\r\n                bchex = bc;\r\n                bcascii = QColor(Qt::lightGray);\r\n            }\r\n        }\r\n        else\r\n            bchex = bcascii = bc;\r\n\r\n        if(b == 0x00 || b == 0xFF)\r\n            fchex = QColor(Qt::darkGray);\r\n        else\r\n            fchex = fc;\r\n\r\n        fcascii = (QChar(b).isPrint() ? fc : QColor(Qt::darkGray));\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::paintEvent(QPaintEvent* pe)\r\n{\r\n    QPainter painter(this);\r\n\r\n    if(this->_hexeditdata)\r\n    {\r\n        QRect r = pe->rect();\r\n        QFontMetrics fm = this->fontMetrics();\r\n        qint64 slidepos = this->_vscrollbar->isVisible() ? this->verticalSliderPosition64() : 0;\r\n        qint64 start = slidepos + (r.top() / this->_charheight), end = (slidepos + (r.bottom() / this->_charheight)) + 1; /* end + 1 Removes the scroll bug */\r\n\r\n        for(qint64 i = start; i <= end; i++)\r\n        {\r\n            int y = (i - slidepos) * this->_charheight;\r\n            this->drawLine(painter, fm, i, y);\r\n        }\r\n    }\r\n\r\n    this->drawParts(painter);\r\n\r\n    if(this->_hexeditdata && this->hasFocus() && this->_blink)\r\n    {\r\n        if(this->_insmode == QHexEditPrivate::Overwrite)\r\n            painter.fillRect(this->_cursorX, this->_cursorY + this->_charheight - 3, this->_charwidth, 2, this->palette().color(QPalette::WindowText));\r\n        else\r\n            painter.fillRect(this->_cursorX, this->_cursorY, 2, this->_charheight, this->palette().color(QPalette::WindowText));\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::mousePressEvent(QMouseEvent* event)\r\n{\r\n    if(this->_hexeditdata)\r\n    {\r\n        if(event->buttons() & Qt::LeftButton)\r\n        {\r\n            QPoint pos = event->pos();\r\n\r\n            if(pos.x() && pos.y())\r\n            {\r\n                this->_blink = false;\r\n                this->update();\r\n\r\n                int span = this->_charheight / 2;\r\n\r\n                if(pos.x() < (this->_xposhex - span))\r\n                    this->_selpart = AddressPart;\r\n                else if(pos.x() >= (this->_xposascii - span))\r\n                    this->_selpart = AsciiPart;\r\n                else\r\n                    this->_selpart = HexPart;\r\n\r\n                int charidx = 0;\r\n                qint64 cPos = this->cursorPosFromPoint(pos, &charidx);\r\n\r\n                if(event->modifiers() == Qt::ShiftModifier)\r\n                    this->setSelectionEnd(cPos, charidx);\r\n                else if(event->modifiers() == Qt::NoModifier)\r\n                    this->setCursorPos(cPos, charidx);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::mouseMoveEvent(QMouseEvent* event)\r\n{\r\n    if(this->_hexeditdata)\r\n    {\r\n        if((event->buttons() == Qt::NoButton) && this->_comments)\r\n        {\r\n            qint64 offset = this->cursorPosFromPoint(event->pos(), nullptr);\r\n\r\n            if(this->_comments->isCommented(offset))\r\n                this->_comments->displayNote(this->mapToGlobal(event->pos()), offset);\r\n            else\r\n                this->_comments->hideNote();\r\n        }\r\n        else if(event->buttons() & Qt::LeftButton)\r\n        {\r\n            QPoint pos = event->pos();\r\n\r\n            if(pos.x() && pos.y())\r\n            {\r\n                this->_blink = false;\r\n                this->update();\r\n\r\n                int charidx = 0;\r\n                qint64 cPos = this->cursorPosFromPoint(pos, &charidx);\r\n                this->setSelectionEnd(cPos, charidx);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nvoid QHexEditPrivate::wheelEvent(QWheelEvent *event)\r\n{\r\n    if(this->_hexeditdata->length())\r\n    {\r\n        int numDegrees = event->delta() / 8;\r\n        int numSteps = numDegrees / 15;\r\n\r\n        if(event->orientation() == Qt::Vertical)\r\n        {\r\n            int pos = this->verticalSliderPosition64() - (numSteps * this->_whellscrolllines);\r\n            int maxlines = this->_hexeditdata->length() / QHexEditPrivate::BYTES_PER_LINE;\r\n\r\n            /* Bounds Check */\r\n            if(pos < 0)\r\n                pos = 0;\r\n            else if(pos > maxlines)\r\n                pos = maxlines;\r\n\r\n            this->_vscrollbar->setSliderPosition(pos);\r\n            this->updateCursorXY(this->cursorPos(), this->_charidx);\r\n            this->update();\r\n\r\n            event->accept();\r\n        }\r\n    }\r\n    else\r\n        event->ignore();\r\n}\r\n\r\nvoid QHexEditPrivate::keyPressEvent(QKeyEvent* event)\r\n{\r\n    if(!this->_hexeditdata)\r\n        return;\r\n\r\n    this->_lastkeyevent = event; /* Save Event */\r\n    bool processed = this->processMoveEvents(event);\r\n\r\n    if(!processed)\r\n        processed = this->processSelectEvents(event);\r\n\r\n    if(!processed)\r\n        processed = this->processInsOvrEvents(event);\r\n\r\n    if(!processed)\r\n        processed = this->processUndoRedo(event);\r\n\r\n    if(!processed)\r\n        processed = this->processClipboardKeys(event);\r\n\r\n    if(!this->_readonly && !processed)\r\n        this->processTextInputEvents(event);\r\n}\r\n\r\nvoid QHexEditPrivate::resizeEvent(QResizeEvent*)\r\n{\r\n    this->adjust(); /* Update ScrollBars */\r\n    this->checkVisibleLines();\r\n}\r\n\r\nvoid QHexEditPrivate::blinkCursor()\r\n{\r\n    this->_blink = !this->_blink;\r\n    this->update(this->_cursorX, this->_cursorY, this->_charwidth, this->_charheight);\r\n}\r\n\r\nvoid QHexEditPrivate::onVScrollBarValueChanged(int)\r\n{\r\n    this->checkVisibleLines();\r\n    this->update();\r\n}\r\n\r\nvoid QHexEditPrivate::hexEditDataChanged(qint64 offset, qint64, QHexEditData::ActionType reason)\r\n{\r\n    if(this->_lastkeyevent)\r\n    {\r\n        if(this->_lastkeyevent->key() == Qt::Key_Delete)\r\n        {\r\n            this->setSelectionEnd(this->selectionStart(), 0); /* Update ScrollBars only, don't move the cursor, reset selection */\r\n            this->adjust();\r\n            this->ensureVisible();\r\n            this->update();\r\n            return;\r\n        }\r\n\r\n        if(this->_lastkeyevent->key() == Qt::Key_Backspace)\r\n            this->setCursorPos(offset);\r\n        else if(this->_selpart == QHexEditPrivate::AsciiPart)\r\n        {\r\n            if(this->_lastkeyevent->matches(QKeySequence::Undo))\r\n                this->setCursorPos(offset);\r\n            else if(reason == QHexEditData::Insert || reason == QHexEditData::Replace)\r\n                this->setCursorPos(offset + 1);\r\n        }\r\n        else if(this->_selpart == QHexEditPrivate::HexPart)\r\n        {\r\n            if(reason == QHexEditData::Insert || reason == QHexEditData::Replace)\r\n            {\r\n                if(this->_charidx == 1)\r\n                    this->setCursorPos(offset + 1, 0);\r\n                else\r\n                    this->setCursorPos(offset, 1);\r\n            }\r\n        }\r\n    }\r\n\r\n    this->adjust(); /* Update ScrollBars */\r\n    this->ensureVisible();\r\n    this->update();\r\n}\r\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/qhexeditprivate.h",
    "content": "#ifndef QHEXEDITPRIVATE_H\r\n#define QHEXEDITPRIVATE_H\r\n\r\n#include <QtCore>\r\n#include <QtGui>\r\n#include <QtWidgets>\r\n#include \"qhexeditdata.h\"\r\n#include \"qhexeditdatareader.h\"\r\n#include \"qhexeditdatawriter.h\"\r\n#include \"qhexedithighlighter.h\"\r\n#include \"qhexeditcomments.h\"\r\n\r\nclass QHexEditPrivate : public QWidget\r\n{\r\n    Q_OBJECT\r\n\r\n    public:\r\n        explicit QHexEditPrivate(QScrollArea* scrollarea, QScrollBar* vscrollbar, QWidget *parent = 0);\r\n        void undo();\r\n        void redo();\r\n        void cut();\r\n        void copy();\r\n        void copyHex();\r\n        void paste();\r\n        void pasteHex();\r\n        void setBaseAddress(qint64 ba);\r\n        void setCursorPos(qint64 pos);\r\n        void setData(QHexEditData *hexeditdata);\r\n        void setReadOnly(bool b);\r\n        void setAddressWidth(int w);\r\n        void setWheelScrollLines(int c);\r\n        void setSelection(qint64 start, qint64 end);\r\n        void highlightForeground(qint64 start, qint64 end, const QColor& color);\r\n        void highlightBackground(qint64 start, qint64 end, const QColor& color);\r\n        void clearHighlight(qint64 start, qint64 end);\r\n        void clearHighlight();\r\n        void commentRange(qint64 start, qint64 end, const QString& comment);\r\n        void uncommentRange(qint64 start, qint64 end);\r\n        void clearComments();\r\n        void setFont(const QFont& font);\r\n        void setLineColor(const QColor& c);\r\n        void setAddressForeColor(const QColor& c);\r\n        void setAddressBackColor(const QColor& c);\r\n        void setAlternateLineColor(const QColor& c);\r\n        void setSelectedCursorBrush(const QBrush &b);\r\n        void setVerticalScrollBarValue(int value);\r\n        void scroll(QWheelEvent *event);\r\n        bool readOnly();\r\n        int addressWidth();\r\n        int visibleLinesCount();\r\n        int wheelScrollLines();\r\n        qint64 indexOf(QByteArray& ba, qint64 start);\r\n        qint64 baseAddress();\r\n        qint64 cursorPos();\r\n        qint64 selectionStart();\r\n        qint64 selectionEnd();\r\n        qint64 visibleStartOffset();\r\n        qint64 visibleEndOffset();\r\n        QHexEditData *data();\r\n        QColor& lineColor();\r\n        QColor& addressForeColor();\r\n        QColor& addressBackColor();\r\n        QColor& alternateLineColor();\r\n        QBrush& selectedCursorBrush();        \r\n\r\n    private:\r\n        void internalSetCursorPos(qint64 pos, int charidx);\r\n        void checkVisibleLines();\r\n\r\n    private:\r\n        qint64 cursorPosFromPoint(const QPoint& pt, int* charindex);\r\n        qint64 verticalSliderPosition64();\r\n        bool isTextSelected();\r\n        void removeSelectedText();\r\n        void processDeleteEvents();\r\n        void processBackspaceEvents();\r\n        void processHexPart(int key);\r\n        void processAsciiPart(int key);\r\n        bool processMoveEvents(QKeyEvent* event);\r\n        bool processSelectEvents(QKeyEvent* event);\r\n        bool processTextInputEvents(QKeyEvent* event);\r\n        bool processInsOvrEvents(QKeyEvent* event);\r\n        bool processUndoRedo(QKeyEvent* event);\r\n        bool processClipboardKeys(QKeyEvent* event);\r\n        void colorize(uchar b, qint64 pos, QColor& bchex, QColor& fchex, QColor& bcascii, QColor& fcascii);\r\n        void setCursorPos(qint64 pos, int charidx);\r\n        void updateCursorXY(qint64 pos, int charidx);\r\n        void drawParts(QPainter& painter);\r\n        void drawLineBackground(QPainter& painter, qint64 line, qint64 linestart, int y);\r\n        void drawLine(QPainter& painter, QFontMetrics& fm, qint64 line, int y);\r\n        void drawAddress(QPainter &painter, QFontMetrics &fm, qint64 line, qint64 linestart, int y);\r\n        void drawHex(QPainter &painter, QFontMetrics &fm, const QColor& bc, const QColor& fc, uchar b, qint64 i, int& x, int y);\r\n        void drawAscii(QPainter &painter, QFontMetrics &fm, const QColor& bc, const QColor& fc, uchar b, int& x, int y);\r\n        void setSelectionEnd(qint64 pos, int charidx);\r\n        void ensureVisible();\r\n        void adjust();\r\n\r\n    protected:\r\n        void paintEvent(QPaintEvent* pe);\r\n        void mousePressEvent(QMouseEvent* event);\r\n        void mouseMoveEvent(QMouseEvent* event);\r\n        void wheelEvent(QWheelEvent* event);\r\n        void keyPressEvent(QKeyEvent* event);\r\n        void resizeEvent(QResizeEvent*);\r\n\r\n    private: /* Constants */\r\n        static QString UNPRINTABLE_CHAR;\r\n        static const int CURSOR_BLINK_INTERVAL;\r\n        static const qint64 BYTES_PER_LINE;\r\n\r\n    signals:\r\n        void visibleLinesChanged();\r\n        void positionChanged(qint64 offset);\r\n        void selectionChanged(qint64 length);\r\n        void verticalScrollBarValueChanged(int value);\r\n\r\n    private:\r\n        enum SelectedPart { AddressPart = 0, HexPart = 1, AsciiPart = 2 };\r\n        enum InsertMode { Overwrite = 0, Insert = 1 };\r\n        QHexEditHighlighter* _highlighter;\r\n        QHexEditComments* _comments;\r\n        QKeyEvent* _lastkeyevent;\r\n        QHexEditData* _hexeditdata;\r\n        QHexEditDataReader* _reader;\r\n        QHexEditDataWriter* _writer;\r\n        QScrollArea* _scrollarea;\r\n        QScrollBar* _vscrollbar;\r\n        QTimer* _timBlink;\r\n        QColor _sellinecolor;\r\n        QColor _addressforecolor;\r\n        QColor _alternatelinecolor;\r\n        QColor _addressbackcolor;\r\n        QBrush _selcursorbrush;\r\n        SelectedPart _selpart;\r\n        InsertMode _insmode;\r\n        qint64 _selectionstart; /* Start of Selection (Inclusive)   */\r\n        qint64 _selectionend;   /* End of Selection (NOT Inclusive) */\r\n        qint64 _cursorpos;\r\n        qint64 _baseaddress;\r\n        qint64 _lastvisiblelines;\r\n        qint64 _lastvscrollpos;\r\n        int _whellscrolllines;\r\n        int _cursorX;\r\n        qint64 _cursorY;\r\n        int _addressWidth;\r\n        int _xposascii;\r\n        int _xposhex;\r\n        int _xPosend;\r\n        int _charidx;\r\n        int _charwidth;\r\n        int _charheight;\r\n        bool _readonly;\r\n        bool _blink;\r\n\r\n    private slots:\r\n        void blinkCursor();\r\n        void onVScrollBarValueChanged(int);\r\n        void hexEditDataChanged(qint64 offset, qint64, QHexEditData::ActionType reason);\r\n};\r\n\r\n#endif // QHEXEDITPRIVATE_H\r\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/sparserangemap.cpp",
    "content": "#include \"sparserangemap.h\"\n"
  },
  {
    "path": "old/3rdpart/QHexEdit/sparserangemap.h",
    "content": "#ifndef SPARSERANGEMAP_H\n#define SPARSERANGEMAP_H\n\n#include <QtGlobal>\n#include <QList>\n\ntemplate<class T> class SparseRangeMap\n{\n    private:\n        struct Range\n        {\n            Range(): _start(-1), _end(-1) { }\n            Range(qint64 start, qint64 end, const T& item) : _start(start), _end(end), _item(item) { }\n\n            qint64 _start;\n            qint64 _end;\n            T _item;\n        };\n\n    public:\n        void addRange(qint64 start, qint64 end, const T& item)\n        {\n            int i = this->internalClearRange(start, end);\n            this->_sortedranges.insert(i, Range(start, end, item));\n        }\n\n        void clearRange(qint64 start, qint64 end)\n        {\n            this->internalClearRange(start, end);\n        }\n\n        const T* valueAt(qint64 pos) const\n        {\n            int idx = this->lookupRange(pos);\n\n            if(idx >= 0)\n                return &this->_sortedranges[idx]._item;\n\n            return nullptr;\n        }\n\n        void clear(){ _sortedranges.clear(); }\n        bool contains(qint64 pos) const { return this->lookupRange(pos) >= 0; }\n\n    private:\n        int lookupRange(qint64 pos) const\n        {\n            int upper = this->_sortedranges.size() - 1, lower = 0, n = (upper - lower) + 1,  middle = n / 2;\n\n            while(n > 0)\n            {\n                if(pos < this->_sortedranges[middle]._start)\n                    upper = middle-1;\n                else if(pos > this->_sortedranges[middle]._end)\n                    lower = middle+1;\n                else\n                    return middle;\n\n                n = (upper - lower) + 1;\n                middle = n/2 + lower;\n            }\n\n            return -1;\n        }\n\n        int internalClearRange(qint64 start, qint64 end)\n        {\n            int insertidx = 0;\n            bool findend = false;\n\n            for(insertidx = 0; insertidx < this->_sortedranges.length(); insertidx++)\n            {\n                Range& r = this->_sortedranges[insertidx];\n\n                if(end < r._start)\n                    break;\n\n                if(start <= r._start)\n                {\n                    if(end < r._end)\n                        r._start = end+1; // Shrink start of existing and add new\n                    else // end >= _sortedRanges[i]._end\n                        findend = true; // We will replace existing and possibly others\n\n                    break;\n                }\n\n                if(start <= r._end)\n                {\n                    if(end < r._end)\n                    {\n                        Range endPart(r);\n                        endPart._start = end+1; // Split existing and insert new in between\n                        r._end = start-1;\n\n                        this->_sortedranges.insert(insertidx + 1, endPart);\n                    }\n                    else\n                    {\n                        r._end = start-1; // Shrink end of existing and search for end\n                        findend = true;\n                    }\n\n                    insertidx++;\n                    break;\n                }\n            }\n\n            if(findend)\n            {\n                for(int i = insertidx; i < this->_sortedranges.length(); i++)\n                {\n                    if(end < this->_sortedranges[i]._start)\n                        break;\n\n                    if(end <= this->_sortedranges[i]._end)\n                    {\n                        // Shrink start of existing\n                        this->_sortedranges[i]._start = end+  1;\n\n                        if(this->_sortedranges[i]._start > this->_sortedranges[i]._end) // This is an invalid Range\n                            this->_sortedranges.removeAt(i);\n\n                        break;\n                    }\n\n                    this->_sortedranges.removeAt(i);\n                    i--;\n                }\n            }\n\n            return insertidx;\n        }\n\n    private:\n        QList<Range> _sortedranges;\n};\n\n#endif // SPARSERANGEMAP_H\n"
  },
  {
    "path": "old/3rdpart/astyle/ASBeautifier.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASBeautifier.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#include \"astyle.h\"\n\n#include <algorithm>\n\n\nnamespace astyle {\n\n// this must be global\nstatic int g_preprocessorCppExternCBracket;\n\n/**\n * ASBeautifier's constructor\n * This constructor is called only once for each source file.\n * The cloned ASBeautifier objects are created with the copy constructor.\n */\nASBeautifier::ASBeautifier()\n{\n\tg_preprocessorCppExternCBracket = 0;\n\n\twaitingBeautifierStack = NULL;\n\tactiveBeautifierStack = NULL;\n\twaitingBeautifierStackLengthStack = NULL;\n\tactiveBeautifierStackLengthStack = NULL;\n\n\theaderStack = NULL;\n\ttempStacks = NULL;\n\tblockParenDepthStack = NULL;\n\tblockStatementStack = NULL;\n\tparenStatementStack = NULL;\n\tbracketBlockStateStack = NULL;\n\tinStatementIndentStack = NULL;\n\tinStatementIndentStackSizeStack = NULL;\n\tparenIndentStack = NULL;\n\tpreprocIndentStack = NULL;\n\tsourceIterator = NULL;\n\tisModeManuallySet = false;\n\tshouldForceTabIndentation = false;\n\tsetSpaceIndentation(4);\n\tsetMinConditionalIndentOption(MINCOND_TWO);\n\tsetMaxInStatementIndentLength(40);\n\tclassInitializerIndents = 1;\n\ttabLength = 0;\n\tsetClassIndent(false);\n\tsetModifierIndent(false);\n\tsetSwitchIndent(false);\n\tsetCaseIndent(false);\n\tsetBlockIndent(false);\n\tsetBracketIndent(false);\n\tsetBracketIndentVtk(false);\n\tsetNamespaceIndent(false);\n\tsetLabelIndent(false);\n\tsetEmptyLineFill(false);\n\tsetCStyle();\n\tsetPreprocDefineIndent(false);\n\tsetPreprocConditionalIndent(false);\n\tsetAlignMethodColon(false);\n\n\t// initialize ASBeautifier member vectors\n\tbeautifierFileType = 9;\t\t// reset to an invalid type\n\theaders = new vector<const string*>;\n\tnonParenHeaders = new vector<const string*>;\n\tassignmentOperators = new vector<const string*>;\n\tnonAssignmentOperators = new vector<const string*>;\n\tpreBlockStatements = new vector<const string*>;\n\tpreCommandHeaders = new vector<const string*>;\n\tindentableHeaders = new vector<const string*>;\n}\n\n/**\n * ASBeautifier's copy constructor\n * Copy the vector objects to vectors in the new ASBeautifier\n * object so the new object can be destroyed without deleting\n * the vector objects in the copied vector.\n * This is the reason a copy constructor is needed.\n *\n * Must explicitly call the base class copy constructor.\n */\nASBeautifier::ASBeautifier(const ASBeautifier &other) : ASBase(other)\n{\n\t// these don't need to copy the stack\n\twaitingBeautifierStack = NULL;\n\tactiveBeautifierStack = NULL;\n\twaitingBeautifierStackLengthStack = NULL;\n\tactiveBeautifierStackLengthStack = NULL;\n\n\t// vector '=' operator performs a DEEP copy of all elements in the vector\n\n\theaderStack = new vector<const string*>;\n\t*headerStack = *other.headerStack;\n\n\ttempStacks = copyTempStacks(other);\n\n\tblockParenDepthStack = new vector<int>;\n\t*blockParenDepthStack = *other.blockParenDepthStack;\n\n\tblockStatementStack = new vector<bool>;\n\t*blockStatementStack = *other.blockStatementStack;\n\n\tparenStatementStack = new vector<bool>;\n\t*parenStatementStack = *other.parenStatementStack;\n\n\tbracketBlockStateStack = new vector<bool>;\n\t*bracketBlockStateStack = *other.bracketBlockStateStack;\n\n\tinStatementIndentStack = new vector<int>;\n\t*inStatementIndentStack = *other.inStatementIndentStack;\n\n\tinStatementIndentStackSizeStack = new vector<int>;\n\t*inStatementIndentStackSizeStack = *other.inStatementIndentStackSizeStack;\n\n\tparenIndentStack = new vector<int>;\n\t*parenIndentStack = *other.parenIndentStack;\n\n\tpreprocIndentStack = new vector<pair<int, int> >;\n\t*preprocIndentStack = *other.preprocIndentStack;\n\n\t// Copy the pointers to vectors.\n\t// This is ok because the original ASBeautifier object\n\t// is not deleted until end of job.\n\tbeautifierFileType = other.beautifierFileType;\n\theaders = other.headers;\n\tnonParenHeaders = other.nonParenHeaders;\n\tassignmentOperators = other.assignmentOperators;\n\tnonAssignmentOperators = other.nonAssignmentOperators;\n\tpreBlockStatements = other.preBlockStatements;\n\tpreCommandHeaders = other.preCommandHeaders;\n\tindentableHeaders = other.indentableHeaders;\n\n\t// protected variables\n\t// variables set by ASFormatter\n\t// must also be updated in activeBeautifierStack\n\tinLineNumber = other.inLineNumber;\n\thorstmannIndentInStatement = other.horstmannIndentInStatement;\n\tnonInStatementBracket = other.nonInStatementBracket;\n\tlineCommentNoBeautify = other.lineCommentNoBeautify;\n\tisElseHeaderIndent = other.isElseHeaderIndent;\n\tisCaseHeaderCommentIndent = other.isCaseHeaderCommentIndent;\n\tisNonInStatementArray = other.isNonInStatementArray;\n\tisSharpAccessor = other.isSharpAccessor;\n\tisSharpDelegate = other.isSharpDelegate;\n\tisInExternC = other.isInExternC;\n\tisInBeautifySQL = other.isInBeautifySQL;\n\tisInIndentableStruct = other.isInIndentableStruct;\n\tisInIndentablePreproc = other.isInIndentablePreproc;\n\n\t// private variables\n\tsourceIterator = other.sourceIterator;\n\tcurrentHeader = other.currentHeader;\n\tpreviousLastLineHeader = other.previousLastLineHeader;\n\tprobationHeader = other.probationHeader;\n\tlastLineHeader = other.lastLineHeader;\n\tindentString = other.indentString;\n\tverbatimDelimiter = other.verbatimDelimiter;\n\tisInQuote = other.isInQuote;\n\tisInVerbatimQuote = other.isInVerbatimQuote;\n\thaveLineContinuationChar = other.haveLineContinuationChar;\n\tisInAsm = other.isInAsm;\n\tisInAsmOneLine = other.isInAsmOneLine;\n\tisInAsmBlock = other.isInAsmBlock;\n\tisInComment = other.isInComment;\n\tisInPreprocessorComment = other.isInPreprocessorComment;\n\tisInHorstmannComment = other.isInHorstmannComment;\n\tisInCase = other.isInCase;\n\tisInQuestion = other.isInQuestion;\n\tisInStatement = other.isInStatement;\n\tisInHeader = other.isInHeader;\n\tisInTemplate = other.isInTemplate;\n\tisInDefine = other.isInDefine;\n\tisInDefineDefinition = other.isInDefineDefinition;\n\tclassIndent = other.classIndent;\n\tisIndentModeOff = other.isIndentModeOff;\n\tisInClassHeader = other.isInClassHeader;\n\tisInClassHeaderTab = other.isInClassHeaderTab;\n\tisInClassInitializer = other.isInClassInitializer;\n\tisInClass = other.isInClass;\n\tisInObjCMethodDefinition = other.isInObjCMethodDefinition;\n\tisImmediatelyPostObjCMethodDefinition = other.isImmediatelyPostObjCMethodDefinition;\n\tisInIndentablePreprocBlock = other.isInIndentablePreprocBlock;\n\tisInObjCInterface = other.isInObjCInterface;\n\tisInEnum = other.isInEnum;\n\tisInEnumTypeID = other.isInEnumTypeID;\n\tisInLet = other.isInLet;\n\tmodifierIndent = other.modifierIndent;\n\tswitchIndent = other.switchIndent;\n\tcaseIndent = other.caseIndent;\n\tnamespaceIndent = other.namespaceIndent;\n\tbracketIndent = other.bracketIndent;\n\tbracketIndentVtk = other.bracketIndentVtk;\n\tblockIndent = other.blockIndent;\n\tlabelIndent = other.labelIndent;\n\tisInConditional = other.isInConditional;\n\tisModeManuallySet = other.isModeManuallySet;\n\tshouldForceTabIndentation = other.shouldForceTabIndentation;\n\temptyLineFill = other.emptyLineFill;\n\tlineOpensWithLineComment = other.lineOpensWithLineComment;\n\tlineOpensWithComment = other.lineOpensWithComment;\n\tlineStartsInComment = other.lineStartsInComment;\n\tbackslashEndsPrevLine = other.backslashEndsPrevLine;\n\tblockCommentNoIndent = other.blockCommentNoIndent;\n\tblockCommentNoBeautify = other.blockCommentNoBeautify;\n\tpreviousLineProbationTab = other.previousLineProbationTab;\n\tlineBeginsWithOpenBracket = other.lineBeginsWithOpenBracket;\n\tlineBeginsWithCloseBracket = other.lineBeginsWithCloseBracket;\n\tlineBeginsWithComma = other.lineBeginsWithComma;\n\tlineIsCommentOnly = other.lineIsCommentOnly;\n\tlineIsLineCommentOnly = other.lineIsLineCommentOnly;\n\tshouldIndentBrackettedLine = other.shouldIndentBrackettedLine;\n\tisInSwitch = other.isInSwitch;\n\tfoundPreCommandHeader = other.foundPreCommandHeader;\n\tfoundPreCommandMacro = other.foundPreCommandMacro;\n\tshouldAlignMethodColon = other.shouldAlignMethodColon;\n\tshouldIndentPreprocDefine = other.shouldIndentPreprocDefine;\n\tshouldIndentPreprocConditional = other.shouldIndentPreprocConditional;\n\tindentCount = other.indentCount;\n\tspaceIndentCount = other.spaceIndentCount;\n\tspaceIndentObjCMethodDefinition = other.spaceIndentObjCMethodDefinition;\n\tcolonIndentObjCMethodDefinition = other.colonIndentObjCMethodDefinition;\n\tlineOpeningBlocksNum = other.lineOpeningBlocksNum;\n\tlineClosingBlocksNum = other.lineClosingBlocksNum;\n\tfileType = other.fileType;\n\tminConditionalOption = other.minConditionalOption;\n\tminConditionalIndent = other.minConditionalIndent;\n\tparenDepth = other.parenDepth;\n\tindentLength = other.indentLength;\n\ttabLength = other.tabLength;\n\tblockTabCount = other.blockTabCount;\n\tmaxInStatementIndent = other.maxInStatementIndent;\n\tclassInitializerIndents = other.classInitializerIndents;\n\ttemplateDepth = other.templateDepth;\n\tsquareBracketCount = other.squareBracketCount;\n\tprevFinalLineSpaceIndentCount = other.prevFinalLineSpaceIndentCount;\n\tprevFinalLineIndentCount = other.prevFinalLineIndentCount;\n\tdefineIndentCount = other.defineIndentCount;\n\tpreprocBlockIndent = other.preprocBlockIndent;\n\tquoteChar = other.quoteChar;\n\tprevNonSpaceCh = other.prevNonSpaceCh;\n\tcurrentNonSpaceCh = other.currentNonSpaceCh;\n\tcurrentNonLegalCh = other.currentNonLegalCh;\n\tprevNonLegalCh = other.prevNonLegalCh;\n}\n\n/**\n * ASBeautifier's destructor\n */\nASBeautifier::~ASBeautifier()\n{\n\tdeleteBeautifierContainer(waitingBeautifierStack);\n\tdeleteBeautifierContainer(activeBeautifierStack);\n\tdeleteContainer(waitingBeautifierStackLengthStack);\n\tdeleteContainer(activeBeautifierStackLengthStack);\n\tdeleteContainer(headerStack);\n\tdeleteTempStacksContainer(tempStacks);\n\tdeleteContainer(blockParenDepthStack);\n\tdeleteContainer(blockStatementStack);\n\tdeleteContainer(parenStatementStack);\n\tdeleteContainer(bracketBlockStateStack);\n\tdeleteContainer(inStatementIndentStack);\n\tdeleteContainer(inStatementIndentStackSizeStack);\n\tdeleteContainer(parenIndentStack);\n\tdeleteContainer(preprocIndentStack);\n}\n\n/**\n * initialize the ASBeautifier.\n *\n * This init() should be called every time a ABeautifier object is to start\n * beautifying a NEW source file.\n * It is called only when a new ASFormatter object is created.\n * init() receives a pointer to a ASSourceIterator object that will be\n * used to iterate through the source code.\n *\n * @param iter     a pointer to the ASSourceIterator or ASStreamIterator object.\n */\nvoid ASBeautifier::init(ASSourceIterator* iter)\n{\n\tsourceIterator = iter;\n\tinitVectors();\n\tASBase::init(getFileType());\n\n\tinitContainer(waitingBeautifierStack, new vector<ASBeautifier*>);\n\tinitContainer(activeBeautifierStack, new vector<ASBeautifier*>);\n\n\tinitContainer(waitingBeautifierStackLengthStack, new vector<int>);\n\tinitContainer(activeBeautifierStackLengthStack, new vector<int>);\n\n\tinitContainer(headerStack, new vector<const string*>);\n\n\tinitTempStacksContainer(tempStacks, new vector<vector<const string*>*>);\n\ttempStacks->push_back(new vector<const string*>);\n\n\tinitContainer(blockParenDepthStack, new vector<int>);\n\tinitContainer(blockStatementStack, new vector<bool>);\n\tinitContainer(parenStatementStack, new vector<bool>);\n\tinitContainer(bracketBlockStateStack, new vector<bool>);\n\tbracketBlockStateStack->push_back(true);\n\tinitContainer(inStatementIndentStack, new vector<int>);\n\tinitContainer(inStatementIndentStackSizeStack, new vector<int>);\n\tinStatementIndentStackSizeStack->push_back(0);\n\tinitContainer(parenIndentStack, new vector<int>);\n\tinitContainer(preprocIndentStack, new vector<pair<int, int> >);\n\n\tpreviousLastLineHeader = NULL;\n\tcurrentHeader = NULL;\n\n\tisInQuote = false;\n\tisInVerbatimQuote = false;\n\thaveLineContinuationChar = false;\n\tisInAsm = false;\n\tisInAsmOneLine = false;\n\tisInAsmBlock = false;\n\tisInComment = false;\n\tisInPreprocessorComment = false;\n\tisInHorstmannComment = false;\n\tisInStatement = false;\n\tisInCase = false;\n\tisInQuestion = false;\n\tisIndentModeOff = false;\n\tisInClassHeader = false;\n\tisInClassHeaderTab = false;\n\tisInClassInitializer = false;\n\tisInClass = false;\n\tisInObjCMethodDefinition = false;\n\tisImmediatelyPostObjCMethodDefinition = false;\n\tisInIndentablePreprocBlock = false;\n\tisInObjCInterface = false;\n\tisInEnum = false;\n\tisInEnumTypeID = false;\n\tisInLet = false;\n\tisInHeader = false;\n\tisInTemplate = false;\n\tisInConditional = false;\n\n\tindentCount = 0;\n\tspaceIndentCount = 0;\n\tspaceIndentObjCMethodDefinition = 0;\n\tcolonIndentObjCMethodDefinition = 0;\n\tlineOpeningBlocksNum = 0;\n\tlineClosingBlocksNum = 0;\n\ttemplateDepth = 0;\n\tsquareBracketCount = 0;\n\tparenDepth = 0;\n\tblockTabCount = 0;\n\tprevFinalLineSpaceIndentCount = 0;\n\tprevFinalLineIndentCount = 0;\n\tdefineIndentCount = 0;\n\tpreprocBlockIndent = 0;\n\tprevNonSpaceCh = '{';\n\tcurrentNonSpaceCh = '{';\n\tprevNonLegalCh = '{';\n\tcurrentNonLegalCh = '{';\n\tquoteChar = ' ';\n\tprobationHeader = NULL;\n\tlastLineHeader = NULL;\n\tbackslashEndsPrevLine = false;\n\tlineOpensWithLineComment = false;\n\tlineOpensWithComment = false;\n\tlineStartsInComment = false;\n\tisInDefine = false;\n\tisInDefineDefinition = false;\n\tlineCommentNoBeautify = false;\n\tisElseHeaderIndent = false;\n\tisCaseHeaderCommentIndent = false;\n\tblockCommentNoIndent = false;\n\tblockCommentNoBeautify = false;\n\tpreviousLineProbationTab = false;\n\tlineBeginsWithOpenBracket = false;\n\tlineBeginsWithCloseBracket = false;\n\tlineBeginsWithComma = false;\n\tlineIsCommentOnly = false;\n\tlineIsLineCommentOnly = false;\n\tshouldIndentBrackettedLine = true;\n\tisInSwitch = false;\n\tfoundPreCommandHeader = false;\n\tfoundPreCommandMacro = false;\n\n\tisNonInStatementArray = false;\n\tisSharpAccessor = false;\n\tisSharpDelegate = false;\n\tisInExternC = false;\n\tisInBeautifySQL = false;\n\tisInIndentableStruct = false;\n\tisInIndentablePreproc = false;\n\tinLineNumber = 0;\n\thorstmannIndentInStatement = 0;\n\tnonInStatementBracket = 0;\n}\n\n/*\n * initialize the vectors\n */\nvoid ASBeautifier::initVectors()\n{\n\tif (fileType == beautifierFileType)    // don't build unless necessary\n\t\treturn;\n\n\tbeautifierFileType = fileType;\n\n\theaders->clear();\n\tnonParenHeaders->clear();\n\tassignmentOperators->clear();\n\tnonAssignmentOperators->clear();\n\tpreBlockStatements->clear();\n\tpreCommandHeaders->clear();\n\tindentableHeaders->clear();\n\n\tASResource::buildHeaders(headers, fileType, true);\n\tASResource::buildNonParenHeaders(nonParenHeaders, fileType, true);\n\tASResource::buildAssignmentOperators(assignmentOperators);\n\tASResource::buildNonAssignmentOperators(nonAssignmentOperators);\n\tASResource::buildPreBlockStatements(preBlockStatements, fileType);\n\tASResource::buildPreCommandHeaders(preCommandHeaders, fileType);\n\tASResource::buildIndentableHeaders(indentableHeaders);\n}\n\n/**\n * set indentation style to C/C++.\n */\nvoid ASBeautifier::setCStyle()\n{\n\tfileType = C_TYPE;\n}\n\n/**\n * set indentation style to Java.\n */\nvoid ASBeautifier::setJavaStyle()\n{\n\tfileType = JAVA_TYPE;\n}\n\n/**\n * set indentation style to C#.\n */\nvoid ASBeautifier::setSharpStyle()\n{\n\tfileType = SHARP_TYPE;\n}\n\n/**\n * set mode manually set flag\n */\nvoid ASBeautifier::setModeManuallySet(bool state)\n{\n\tisModeManuallySet = state;\n}\n\n/**\n * set tabLength equal to indentLength.\n * This is done when tabLength is not explicitly set by\n * \"indent=force-tab-x\"\n *\n */\nvoid ASBeautifier::setDefaultTabLength()\n{\n\ttabLength = indentLength;\n}\n\n/**\n * indent using a different tab setting for indent=force-tab\n *\n * @param   length     number of spaces per tab.\n */\nvoid ASBeautifier::setForceTabXIndentation(int length)\n{\n\t// set tabLength instead of indentLength\n\tindentString = \"\\t\";\n\ttabLength = length;\n\tshouldForceTabIndentation = true;\n}\n\n/**\n * indent using one tab per indentation\n */\nvoid ASBeautifier::setTabIndentation(int length, bool forceTabs)\n{\n\tindentString = \"\\t\";\n\tindentLength = length;\n\tshouldForceTabIndentation = forceTabs;\n}\n\n/**\n * indent using a number of spaces per indentation.\n *\n * @param   length     number of spaces per indent.\n */\nvoid ASBeautifier::setSpaceIndentation(int length)\n{\n\tindentString = string(length, ' ');\n\tindentLength = length;\n}\n\n/**\n * set the maximum indentation between two lines in a multi-line statement.\n *\n * @param   max     maximum indentation length.\n */\nvoid ASBeautifier::setMaxInStatementIndentLength(int max)\n{\n\tmaxInStatementIndent = max;\n}\n\n/**\n * set the minimum conditional indentation option.\n *\n * @param   min     minimal indentation option.\n */\nvoid ASBeautifier::setMinConditionalIndentOption(int min)\n{\n\tminConditionalOption = min;\n}\n\n/**\n * set minConditionalIndent from the minConditionalOption.\n */\nvoid ASBeautifier::setMinConditionalIndentLength()\n{\n\tif (minConditionalOption == MINCOND_ZERO)\n\t\tminConditionalIndent = 0;\n\telse if (minConditionalOption == MINCOND_ONE)\n\t\tminConditionalIndent = indentLength;\n\telse if (minConditionalOption == MINCOND_ONEHALF)\n\t\tminConditionalIndent = indentLength / 2;\n\t// minConditionalOption = INDENT_TWO\n\telse\n\t\tminConditionalIndent = indentLength * 2;\n}\n\n/**\n * set the state of the bracket indent option. If true, brackets will\n * be indented one additional indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setBracketIndent(bool state)\n{\n\tbracketIndent = state;\n}\n\n/**\n* set the state of the bracket indent VTK option. If true, brackets will\n* be indented one additional indent, except for the opening bracket.\n*\n* @param   state             state of option.\n*/\nvoid ASBeautifier::setBracketIndentVtk(bool state)\n{\n\t// need to set both of these\n\tsetBracketIndent(state);\n\tbracketIndentVtk = state;\n}\n\n/**\n * set the state of the block indentation option. If true, entire blocks\n * will be indented one additional indent, similar to the GNU indent style.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setBlockIndent(bool state)\n{\n\tblockIndent = state;\n}\n\n/**\n * set the state of the class indentation option. If true, C++ class\n * definitions will be indented one additional indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setClassIndent(bool state)\n{\n\tclassIndent = state;\n}\n\n/**\n * set the state of the modifier indentation option. If true, C++ class\n * access modifiers will be indented one-half an indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setModifierIndent(bool state)\n{\n\tmodifierIndent = state;\n}\n\n/**\n * set the state of the switch indentation option. If true, blocks of 'switch'\n * statements will be indented one additional indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setSwitchIndent(bool state)\n{\n\tswitchIndent = state;\n}\n\n/**\n * set the state of the case indentation option. If true, lines of 'case'\n * statements will be indented one additional indent.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setCaseIndent(bool state)\n{\n\tcaseIndent = state;\n}\n\n/**\n * set the state of the namespace indentation option.\n * If true, blocks of 'namespace' statements will be indented one\n * additional indent. Otherwise, NO indentation will be added.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setNamespaceIndent(bool state)\n{\n\tnamespaceIndent = state;\n}\n\n/**\n * set the state of the label indentation option.\n * If true, labels will be indented one indent LESS than the\n * current indentation level.\n * If false, labels will be flushed to the left with NO\n * indent at all.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setLabelIndent(bool state)\n{\n\tlabelIndent = state;\n}\n\n/**\n * set the state of the preprocessor indentation option.\n * If true, multi-line #define statements will be indented.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setPreprocDefineIndent(bool state)\n{\n\tshouldIndentPreprocDefine = state;\n}\n\nvoid ASBeautifier::setPreprocConditionalIndent(bool state)\n{\n\tshouldIndentPreprocConditional = state;\n}\n\n/**\n * set the state of the empty line fill option.\n * If true, empty lines will be filled with the whitespace.\n * of their previous lines.\n * If false, these lines will remain empty.\n *\n * @param   state             state of option.\n */\nvoid ASBeautifier::setEmptyLineFill(bool state)\n{\n\temptyLineFill = state;\n}\n\nvoid ASBeautifier::setAlignMethodColon(bool state)\n{\n\tshouldAlignMethodColon = state;\n}\n\n/**\n * get the file type.\n */\nint ASBeautifier::getFileType() const\n{\n\treturn fileType;\n}\n\n/**\n * get the number of spaces per indent\n *\n * @return   value of indentLength option.\n */\nint ASBeautifier::getIndentLength(void) const\n{\n\treturn indentLength;\n}\n\n/**\n * get the char used for indentation, space or tab\n *\n * @return   the char used for indentation.\n */\nstring ASBeautifier::getIndentString(void) const\n{\n\treturn indentString;\n}\n\n/**\n * get mode manually set flag\n */\nbool ASBeautifier::getModeManuallySet() const\n{\n\treturn isModeManuallySet;\n}\n\n/**\n * get the state of the force tab indentation option.\n *\n * @return   state of force tab indentation.\n */\nbool ASBeautifier::getForceTabIndentation(void) const\n{\n\treturn shouldForceTabIndentation;\n}\n\n/**\n * get the state of the block indentation option.\n *\n * @return   state of blockIndent option.\n */\nbool ASBeautifier::getBlockIndent(void) const\n{\n\treturn blockIndent;\n}\n\n/**\n * get the state of the bracket indentation option.\n *\n * @return   state of bracketIndent option.\n */\nbool ASBeautifier::getBracketIndent(void) const\n{\n\treturn bracketIndent;\n}\n\n/**\n* Get the state of the namespace indentation option. If true, blocks\n* of the 'namespace' statement will be indented one additional indent.\n*\n* @return   state of namespaceIndent option.\n*/\nbool ASBeautifier::getNamespaceIndent(void) const\n{\n\treturn namespaceIndent;\n}\n\n/**\n * Get the state of the class indentation option. If true, blocks of\n * the 'class' statement will be indented one additional indent.\n *\n * @return   state of classIndent option.\n */\nbool ASBeautifier::getClassIndent(void) const\n{\n\treturn classIndent;\n}\n\n/**\n * Get the state of the class access modifier indentation option.\n * If true, the class access modifiers will be indented one-half indent.\n *\n * @return   state of modifierIndent option.\n */\nbool ASBeautifier::getModifierIndent(void) const\n{\n\treturn modifierIndent;\n}\n\n/**\n * get the state of the switch indentation option. If true, blocks of\n * the 'switch' statement will be indented one additional indent.\n *\n * @return   state of switchIndent option.\n */\nbool ASBeautifier::getSwitchIndent(void) const\n{\n\treturn switchIndent;\n}\n\n/**\n * get the state of the case indentation option. If true, lines of 'case'\n * statements will be indented one additional indent.\n *\n * @return   state of caseIndent option.\n */\nbool ASBeautifier::getCaseIndent(void) const\n{\n\treturn caseIndent;\n}\n\n/**\n * get the state of the empty line fill option.\n * If true, empty lines will be filled with the whitespace.\n * of their previous lines.\n * If false, these lines will remain empty.\n *\n * @return   state of emptyLineFill option.\n */\nbool ASBeautifier::getEmptyLineFill(void) const\n{\n\treturn emptyLineFill;\n}\n\n/**\n * get the state of the preprocessor indentation option.\n * If true, preprocessor \"define\" lines will be indented.\n * If false, preprocessor \"define\" lines will be unchanged.\n *\n * @return   state of shouldIndentPreprocDefine option.\n */\nbool ASBeautifier::getPreprocDefineIndent(void) const\n{\n\treturn shouldIndentPreprocDefine;\n}\n\n/**\n * get the length of the tab indentation option.\n *\n * @return   length of tab indent option.\n */\nint ASBeautifier::getTabLength(void) const\n{\n\treturn tabLength;\n}\n\n/**\n * beautify a line of source code.\n * every line of source code in a source code file should be sent\n * one after the other to the beautify method.\n *\n * @return      the indented line.\n * @param originalLine       the original unindented line.\n */\nstring ASBeautifier::beautify(const string &originalLine)\n{\n\tstring line;\n\tbool isInQuoteContinuation = isInVerbatimQuote | haveLineContinuationChar;\n\n\tcurrentHeader = NULL;\n\tlastLineHeader = NULL;\n\tblockCommentNoBeautify = blockCommentNoIndent;\n\tisInClass = false;\n\tisInSwitch = false;\n\tlineBeginsWithOpenBracket = false;\n\tlineBeginsWithCloseBracket = false;\n\tlineBeginsWithComma = false;\n\tlineIsCommentOnly = false;\n\tlineIsLineCommentOnly = false;\n\tshouldIndentBrackettedLine = true;\n\tisInAsmOneLine = false;\n\tlineOpensWithLineComment = false;\n\tlineOpensWithComment = false;\n\tlineStartsInComment = isInComment;\n\tpreviousLineProbationTab = false;\n\thaveLineContinuationChar = false;\n\tlineOpeningBlocksNum = 0;\n\tlineClosingBlocksNum = 0;\n\tif (isImmediatelyPostObjCMethodDefinition)\n\t\tclearObjCMethodDefinitionAlignment();\n\n\t// handle and remove white spaces around the line:\n\t// If not in comment, first find out size of white space before line,\n\t// so that possible comments starting in the line continue in\n\t// relation to the preliminary white-space.\n\tif (isInQuoteContinuation)\n\t{\n\t\t// trim a single space added by ASFormatter, otherwise leave it alone\n\t\tif (!(originalLine.length() == 1 && originalLine[0] == ' '))\n\t\t\tline = originalLine;\n\t}\n\telse if (isInComment || isInBeautifySQL)\n\t{\n\t\t// trim the end of comment and SQL lines\n\t\tline = originalLine;\n\t\tsize_t trimEnd = line.find_last_not_of(\" \\t\");\n\t\tif (trimEnd == string::npos)\n\t\t\ttrimEnd = 0;\n\t\telse\n\t\t\ttrimEnd++;\n\t\tif (trimEnd < line.length())\n\t\t\tline.erase(trimEnd);\n\t\t// does a bracket open the line\n\t\tsize_t firstChar = line.find_first_not_of(\" \\t\");\n\t\tif (firstChar != string::npos)\n\t\t{\n\t\t\tif (line[firstChar] == '{')\n\t\t\t\tlineBeginsWithOpenBracket = true;\n\t\t\telse if (line[firstChar] == '}')\n\t\t\t\tlineBeginsWithCloseBracket = true;\n\t\t\telse if (line[firstChar] == ',')\n\t\t\t\tlineBeginsWithComma = true;\n\t\t}\n\t}\n\telse\n\t{\n\t\tline = trim(originalLine);\n\t\tif (line.length() > 0)\n\t\t{\n\t\t\tif (line[0] == '{')\n\t\t\t\tlineBeginsWithOpenBracket = true;\n\t\t\telse if (line[0] == '}')\n\t\t\t\tlineBeginsWithCloseBracket = true;\n\t\t\telse if (line[0] == ',')\n\t\t\t\tlineBeginsWithComma = true;\n\t\t\telse if (line.compare(0, 2, \"//\") == 0)\n\t\t\t\tlineIsLineCommentOnly = true;\n\t\t\telse if (line.compare(0, 2, \"/*\") == 0)\n\t\t\t{\n\t\t\t\tif (line.find(\"*/\", 2) != string::npos)\n\t\t\t\t\tlineIsCommentOnly = true;\n\t\t\t}\n\t\t}\n\n\t\tisInHorstmannComment = false;\n\t\tsize_t j = line.find_first_not_of(\" \\t{\");\n\t\tif (j != string::npos && line.compare(j, 2, \"//\") == 0)\n\t\t\tlineOpensWithLineComment = true;\n\t\tif (j != string::npos && line.compare(j, 2, \"/*\") == 0)\n\t\t{\n\t\t\tlineOpensWithComment = true;\n\t\t\tsize_t k = line.find_first_not_of(\" \\t\");\n\t\t\tif (k != string::npos && line.compare(k, 1, \"{\") == 0)\n\t\t\t\tisInHorstmannComment = true;\n\t\t}\n\t}\n\n\t// When indent is OFF the lines must still be processed by ASBeautifier.\n\t// Otherwise the lines immediately following may not be indented correctly.\n\tif ((lineIsLineCommentOnly || lineIsCommentOnly)\n\t        && line.find(\"*INDENT-OFF*\", 0) != string::npos)\n\t\tisIndentModeOff = true;\n\n\tif (line.length() == 0)\n\t{\n\t\tif (backslashEndsPrevLine)\n\t\t{\n\t\t\tbackslashEndsPrevLine = false;\n\t\t\tisInDefine = false;\n\t\t\tisInDefineDefinition = false;\n\t\t}\n\t\tif (emptyLineFill && !isInQuoteContinuation)\n\t\t{\n\t\t\tif (isInIndentablePreprocBlock)\n\t\t\t\treturn preLineWS(preprocBlockIndent, 0);\n\t\t\telse if (!headerStack->empty() || isInEnum)\n\t\t\t\treturn preLineWS(prevFinalLineIndentCount, prevFinalLineSpaceIndentCount);\n\t\t\t// must fall thru here\n\t\t}\n\t\telse\n\t\t\treturn line;\n\t}\n\n\t// handle preprocessor commands\n\tif (isInIndentablePreprocBlock\n\t        && line.length() > 0\n\t        && line[0] != '#')\n\t{\n\t\tstring indentedLine;\n\t\tif (isInClassHeaderTab || isInClassInitializer)\n\t\t{\n\t\t\t// parsing is turned off in ASFormatter by indent-off\n\t\t\t// the originalLine will probably never be returned here\n\t\t\tindentedLine = preLineWS(prevFinalLineIndentCount, prevFinalLineSpaceIndentCount) + line;\n\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tindentedLine = preLineWS(preprocBlockIndent, 0) + line;\n\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t}\n\t}\n\tif (!isInComment\n\t        && !isInQuoteContinuation\n\t        && line.length() > 0\n\t        && ((line[0] == '#' && !isIndentedPreprocessor(line, 0))\n\t            || backslashEndsPrevLine))\n\t{\n\t\tif (line[0] == '#' && !isInDefine)\n\t\t{\n\t\t\tstring preproc = extractPreprocessorStatement(line);\n\t\t\tprocessPreprocessor(preproc, line);\n\t\t\tif (isInIndentablePreprocBlock || isInIndentablePreproc)\n\t\t\t{\n\t\t\t\tstring indentedLine;\n\t\t\t\tif ((preproc.length() >= 2 && preproc.substr(0, 2) == \"if\")) // #if, #ifdef, #ifndef\n\t\t\t\t{\n\t\t\t\t\tindentedLine = preLineWS(preprocBlockIndent, 0) + line;\n\t\t\t\t\tpreprocBlockIndent += 1;\n\t\t\t\t\tisInIndentablePreprocBlock = true;\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"else\" || preproc == \"elif\")\n\t\t\t\t{\n\t\t\t\t\tindentedLine = preLineWS(preprocBlockIndent - 1, 0) + line;\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"endif\")\n\t\t\t\t{\n\t\t\t\t\tpreprocBlockIndent -= 1;\n\t\t\t\t\tindentedLine = preLineWS(preprocBlockIndent, 0) + line;\n\t\t\t\t\tif (preprocBlockIndent == 0)\n\t\t\t\t\t\tisInIndentablePreprocBlock = false;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tindentedLine = preLineWS(preprocBlockIndent, 0) + line;\n\t\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t\t}\n\t\t\tif (shouldIndentPreprocConditional && preproc.length() > 0)\n\t\t\t{\n\t\t\t\tstring indentedLine;\n\t\t\t\tif (preproc.length() >= 2 && preproc.substr(0, 2) == \"if\") // #if, #ifdef, #ifndef\n\t\t\t\t{\n\t\t\t\t\tpair<int, int> entry;\t// indentCount, spaceIndentCount\n\t\t\t\t\tif (!isInDefine && activeBeautifierStack != NULL && !activeBeautifierStack->empty())\n\t\t\t\t\t\tentry = activeBeautifierStack->back()->computePreprocessorIndent();\n\t\t\t\t\telse\n\t\t\t\t\t\tentry = computePreprocessorIndent();\n\t\t\t\t\tpreprocIndentStack->push_back(entry);\n\t\t\t\t\tindentedLine = preLineWS(preprocIndentStack->back().first,\n\t\t\t\t\t                         preprocIndentStack->back().second) + line;\n\t\t\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"else\" || preproc == \"elif\")\n\t\t\t\t{\n\t\t\t\t\tif (preprocIndentStack->size() > 0)\t// if no entry don't indent\n\t\t\t\t\t{\n\t\t\t\t\t\tindentedLine = preLineWS(preprocIndentStack->back().first,\n\t\t\t\t\t\t                         preprocIndentStack->back().second) + line;\n\t\t\t\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"endif\")\n\t\t\t\t{\n\t\t\t\t\tif (preprocIndentStack->size() > 0)\t// if no entry don't indent\n\t\t\t\t\t{\n\t\t\t\t\t\tindentedLine = preLineWS(preprocIndentStack->back().first,\n\t\t\t\t\t\t                         preprocIndentStack->back().second) + line;\n\t\t\t\t\t\tpreprocIndentStack->pop_back();\n\t\t\t\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check if the last char is a backslash\n\t\tif (line.length() > 0)\n\t\t\tbackslashEndsPrevLine = (line[line.length() - 1] == '\\\\');\n\t\t// comments within the definition line can be continued without the backslash\n\t\tif (isInPreprocessorUnterminatedComment(line))\n\t\t\tbackslashEndsPrevLine = true;\n\n\t\t// check if this line ends a multi-line #define\n\t\t// if so, use the #define's cloned beautifier for the line's indentation\n\t\t// and then remove it from the active beautifier stack and delete it.\n\t\tif (!backslashEndsPrevLine && isInDefineDefinition && !isInDefine)\n\t\t{\n\t\t\tASBeautifier* defineBeautifier;\n\n\t\t\tisInDefineDefinition = false;\n\t\t\tdefineBeautifier = activeBeautifierStack->back();\n\t\t\tactiveBeautifierStack->pop_back();\n\n\t\t\tstring indentedLine = defineBeautifier->beautify(line);\n\t\t\tdelete defineBeautifier;\n\t\t\treturn getIndentedLineReturn(indentedLine, originalLine);\n\t\t}\n\n\t\t// unless this is a multi-line #define, return this precompiler line as is.\n\t\tif (!isInDefine && !isInDefineDefinition)\n\t\t\treturn originalLine;\n\t}\n\n\t// if there exists any worker beautifier in the activeBeautifierStack,\n\t// then use it instead of me to indent the current line.\n\t// variables set by ASFormatter must be updated.\n\tif (!isInDefine && activeBeautifierStack != NULL && !activeBeautifierStack->empty())\n\t{\n\t\tactiveBeautifierStack->back()->inLineNumber = inLineNumber;\n\t\tactiveBeautifierStack->back()->horstmannIndentInStatement = horstmannIndentInStatement;\n\t\tactiveBeautifierStack->back()->nonInStatementBracket = nonInStatementBracket;\n\t\tactiveBeautifierStack->back()->lineCommentNoBeautify = lineCommentNoBeautify;\n\t\tactiveBeautifierStack->back()->isElseHeaderIndent = isElseHeaderIndent;\n\t\tactiveBeautifierStack->back()->isCaseHeaderCommentIndent = isCaseHeaderCommentIndent;\n\t\tactiveBeautifierStack->back()->isNonInStatementArray = isNonInStatementArray;\n\t\tactiveBeautifierStack->back()->isSharpAccessor = isSharpAccessor;\n\t\tactiveBeautifierStack->back()->isSharpDelegate = isSharpDelegate;\n\t\tactiveBeautifierStack->back()->isInExternC = isInExternC;\n\t\tactiveBeautifierStack->back()->isInBeautifySQL = isInBeautifySQL;\n\t\tactiveBeautifierStack->back()->isInIndentableStruct = isInIndentableStruct;\n\t\tactiveBeautifierStack->back()->isInIndentablePreproc = isInIndentablePreproc;\n\t\t// must return originalLine not the trimmed line\n\t\treturn activeBeautifierStack->back()->beautify(originalLine);\n\t}\n\n\t// Flag an indented header in case this line is a one-line block.\n\t// The header in the header stack will be deleted by a one-line block.\n\tbool isInExtraHeaderIndent = false;\n\tif (!headerStack->empty()\n\t        && lineBeginsWithOpenBracket\n\t        && (headerStack->back() != &AS_OPEN_BRACKET\n\t            || probationHeader != NULL))\n\t\tisInExtraHeaderIndent = true;\n\n\tsize_t iPrelim = headerStack->size();\n\n\t// calculate preliminary indentation based on headerStack and data from past lines\n\tcomputePreliminaryIndentation();\n\n\t// parse characters in the current line.\n\tparseCurrentLine(line);\n\n\t// handle special cases of indentation\n\tadjustParsedLineIndentation(iPrelim, isInExtraHeaderIndent);\n\n\t// Objective-C continuation line\n\tif (isInObjCMethodDefinition)\n\t{\n\t\t// register indent for Objective-C continuation line\n\t\tif (line.length() > 0\n\t\t        && (line[0] == '-' || line[0] == '+'))\n\t\t{\n\t\t\tif (shouldAlignMethodColon)\n\t\t\t{\n\t\t\t\tcolonIndentObjCMethodDefinition = line.find(':');\n\t\t\t}\n\t\t\telse if (inStatementIndentStack->empty()\n\t\t\t         || inStatementIndentStack->back() == 0)\n\t\t\t{\n\t\t\t\tinStatementIndentStack->push_back(indentLength);\n\t\t\t\tisInStatement = true;\n\t\t\t}\n\t\t}\n\t\t// set indent for last definition line\n\t\telse if (!lineBeginsWithOpenBracket)\n\t\t{\n\t\t\tif (shouldAlignMethodColon)\n\t\t\t\tspaceIndentCount = computeObjCColonAlignment(line, colonIndentObjCMethodDefinition);\n\t\t\telse if (inStatementIndentStack->empty())\n\t\t\t\tspaceIndentCount = spaceIndentObjCMethodDefinition;\n\t\t}\n\t}\n\n\tif (isInDefine)\n\t{\n\t\tif (line.length() > 0 && line[0] == '#')\n\t\t{\n\t\t\t// the 'define' does not have to be attached to the '#'\n\t\t\tstring preproc = trim(line.substr(1));\n\t\t\tif (preproc.compare(0, 6, \"define\") == 0)\n\t\t\t{\n\t\t\t\tif (!inStatementIndentStack->empty()\n\t\t\t\t        && inStatementIndentStack->back() > 0)\n\t\t\t\t{\n\t\t\t\t\tdefineIndentCount = indentCount;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tdefineIndentCount = indentCount - 1;\n\t\t\t\t\t--indentCount;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tindentCount -= defineIndentCount;\n\t}\n\n\tif (indentCount < 0)\n\t\tindentCount = 0;\n\n\tif (lineCommentNoBeautify || blockCommentNoBeautify || isInQuoteContinuation)\n\t\tindentCount = spaceIndentCount = 0;\n\n\t// finally, insert indentations into beginning of line\n\n\tstring indentedLine = preLineWS(indentCount, spaceIndentCount) + line;\n\tindentedLine = getIndentedLineReturn(indentedLine, originalLine);\n\n\tprevFinalLineSpaceIndentCount = spaceIndentCount;\n\tprevFinalLineIndentCount = indentCount;\n\n\tif (lastLineHeader != NULL)\n\t\tpreviousLastLineHeader = lastLineHeader;\n\n\tif ((lineIsLineCommentOnly || lineIsCommentOnly)\n\t        && line.find(\"*INDENT-ON*\", 0) != string::npos)\n\t\tisIndentModeOff = false;\n\n\treturn indentedLine;\n}\n\nstring &ASBeautifier::getIndentedLineReturn(string &newLine, const string &originalLine) const\n{\n\tif (isIndentModeOff)\n\t\treturn const_cast<string &>(originalLine);\n\treturn newLine;\n}\n\nstring ASBeautifier::preLineWS(int lineIndentCount, int lineSpaceIndentCount) const\n{\n\tif (shouldForceTabIndentation)\n\t{\n\t\tif (tabLength != indentLength)\n\t\t{\n\t\t\t// adjust for different tab length\n\t\t\tint indentCountOrig = lineIndentCount;\n\t\t\tint spaceIndentCountOrig = lineSpaceIndentCount;\n\t\t\tlineIndentCount = ((indentCountOrig * indentLength) + spaceIndentCountOrig) / tabLength;\n\t\t\tlineSpaceIndentCount = ((indentCountOrig * indentLength) + spaceIndentCountOrig) % tabLength;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tlineIndentCount += lineSpaceIndentCount / indentLength;\n\t\t\tlineSpaceIndentCount = lineSpaceIndentCount % indentLength;\n\t\t}\n\t}\n\n\tstring ws;\n\tfor (int i = 0; i < lineIndentCount; i++)\n\t\tws += indentString;\n\twhile ((lineSpaceIndentCount--) > 0)\n\t\tws += string(\" \");\n\treturn ws;\n}\n\n/**\n * register an in-statement indent.\n */\nvoid ASBeautifier::registerInStatementIndent(const string &line, int i, int spaceTabCount_,\n                                             int tabIncrementIn, int minIndent, bool updateParenStack)\n{\n\tint inStatementIndent;\n\tint remainingCharNum = line.length() - i;\n\tint nextNonWSChar = getNextProgramCharDistance(line, i);\n\n\t// if indent is around the last char in the line, indent instead one indent from the previous indent\n\tif (nextNonWSChar == remainingCharNum)\n\t{\n\t\tint previousIndent = spaceTabCount_;\n\t\tif (!inStatementIndentStack->empty())\n\t\t\tpreviousIndent = inStatementIndentStack->back();\n\t\tint currIndent = /*2*/ indentLength + previousIndent;\n\t\tif (currIndent > maxInStatementIndent\n\t\t        && line[i] != '{')\n\t\t\tcurrIndent = indentLength * 2 + spaceTabCount_;\n\t\tinStatementIndentStack->push_back(currIndent);\n\t\tif (updateParenStack)\n\t\t\tparenIndentStack->push_back(previousIndent);\n\t\treturn;\n\t}\n\n\tif (updateParenStack)\n\t\tparenIndentStack->push_back(i + spaceTabCount_ - horstmannIndentInStatement);\n\n\tint tabIncrement = tabIncrementIn;\n\n\t// check for following tabs\n\tfor (int j = i + 1; j < (i + nextNonWSChar); j++)\n\t{\n\t\tif (line[j] == '\\t')\n\t\t\ttabIncrement += convertTabToSpaces(j, tabIncrement);\n\t}\n\n\tinStatementIndent = i + nextNonWSChar + spaceTabCount_ + tabIncrement;\n\n\t// check for run-in statement\n\tif (i > 0 && line[0] == '{')\n\t\tinStatementIndent -= indentLength;\n\n\tif (inStatementIndent < minIndent)\n\t\tinStatementIndent = minIndent + spaceTabCount_;\n\n\t// this is not done for an in-statement array\n\tif (inStatementIndent > maxInStatementIndent\n\t        && !(prevNonLegalCh == '=' && currentNonLegalCh == '{'))\n\t\tinStatementIndent = indentLength * 2 + spaceTabCount_;\n\n\tif (!inStatementIndentStack->empty()\n\t        && inStatementIndent < inStatementIndentStack->back())\n\t\tinStatementIndent = inStatementIndentStack->back();\n\n\t// the block opener is not indented for a NonInStatementArray\n\tif (isNonInStatementArray && !isInEnum && !bracketBlockStateStack->empty() && bracketBlockStateStack->back())\n\t\tinStatementIndent = 0;\n\n\tinStatementIndentStack->push_back(inStatementIndent);\n}\n\n/**\n* Register an in-statement indent for a class header or a class initializer colon.\n*/\nvoid ASBeautifier::registerInStatementIndentColon(const string &line, int i, int tabIncrementIn)\n{\n\tassert(line[i] == ':');\n\tassert(isInClassInitializer || isInClassHeaderTab);\n\n\t// register indent at first word after the colon\n\tsize_t firstChar = line.find_first_not_of(\" \\t\");\n\tif (firstChar == (size_t)i)\t\t// firstChar is ':'\n\t{\n\t\tsize_t firstWord = line.find_first_not_of(\" \\t\", firstChar + 1);\n\t\tif (firstChar != string::npos)\n\t\t{\n\t\t\tint inStatementIndent = firstWord + spaceIndentCount + tabIncrementIn;\n\t\t\tinStatementIndentStack->push_back(inStatementIndent);\n\t\t\tisInStatement = true;\n\t\t}\n\t}\n}\n\n/**\n * Compute indentation for a preprocessor #if statement.\n * This may be called for the activeBeautiferStack\n * instead of the active ASBeautifier object.\n */\npair<int, int> ASBeautifier::computePreprocessorIndent()\n{\n\tcomputePreliminaryIndentation();\n\tpair<int, int> entry(indentCount, spaceIndentCount);\n\tif (!headerStack->empty()\n\t        && entry.first > 0\n\t        && (headerStack->back() == &AS_IF\n\t            || headerStack->back() == &AS_ELSE\n\t            || headerStack->back() == &AS_FOR\n\t            || headerStack->back() == &AS_WHILE))\n\t\t--entry.first;\n\treturn entry;\n}\n\n/**\n * get distance to the next non-white space, non-comment character in the line.\n * if no such character exists, return the length remaining to the end of the line.\n */\nint ASBeautifier::getNextProgramCharDistance(const string &line, int i) const\n{\n\tbool inComment = false;\n\tint  remainingCharNum = line.length() - i;\n\tint  charDistance;\n\tchar ch;\n\n\tfor (charDistance = 1; charDistance < remainingCharNum; charDistance++)\n\t{\n\t\tch = line[i + charDistance];\n\t\tif (inComment)\n\t\t{\n\t\t\tif (line.compare(i + charDistance, 2, \"*/\") == 0)\n\t\t\t{\n\t\t\t\tcharDistance++;\n\t\t\t\tinComment = false;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\telse if (isWhiteSpace(ch))\n\t\t\tcontinue;\n\t\telse if (ch == '/')\n\t\t{\n\t\t\tif (line.compare(i + charDistance, 2, \"//\") == 0)\n\t\t\t\treturn remainingCharNum;\n\t\t\telse if (line.compare(i + charDistance, 2, \"/*\") == 0)\n\t\t\t{\n\t\t\t\tcharDistance++;\n\t\t\t\tinComment = true;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t\treturn charDistance;\n\t}\n\n\treturn charDistance;\n}\n\n// check if a specific line position contains a header.\nconst string* ASBeautifier::findHeader(const string &line, int i,\n                                       const vector<const string*>* possibleHeaders) const\n{\n\tassert(isCharPotentialHeader(line, i));\n\t// check the word\n\tsize_t maxHeaders = possibleHeaders->size();\n\tfor (size_t p = 0; p < maxHeaders; p++)\n\t{\n\t\tconst string* header = (*possibleHeaders)[p];\n\t\tconst size_t wordEnd = i + header->length();\n\t\tif (wordEnd > line.length())\n\t\t\tcontinue;\n\t\tint result = (line.compare(i, header->length(), *header));\n\t\tif (result > 0)\n\t\t\tcontinue;\n\t\tif (result < 0)\n\t\t\tbreak;\n\t\t// check that this is not part of a longer word\n\t\tif (wordEnd == line.length())\n\t\t\treturn header;\n\t\tif (isLegalNameChar(line[wordEnd]))\n\t\t\tcontinue;\n\t\tconst char peekChar = peekNextChar(line, wordEnd - 1);\n\t\t// is not a header if part of a definition\n\t\tif (peekChar == ',' || peekChar == ')')\n\t\t\tbreak;\n\t\t// the following accessor definitions are NOT headers\n\t\t// goto default; is NOT a header\n\t\t// default(int) keyword in C# is NOT a header\n\t\telse if ((header == &AS_GET || header == &AS_SET || header == &AS_DEFAULT)\n\t\t         && (peekChar == ';' || peekChar == '(' || peekChar == '='))\n\t\t\tbreak;\n\t\treturn header;\n\t}\n\treturn NULL;\n}\n\n// check if a specific line position contains an operator.\nconst string* ASBeautifier::findOperator(const string &line, int i,\n                                         const vector<const string*>* possibleOperators) const\n{\n\tassert(isCharPotentialOperator(line[i]));\n\t// find the operator in the vector\n\t// the vector contains the LONGEST operators first\n\t// must loop thru the entire vector\n\tsize_t maxOperators = possibleOperators->size();\n\tfor (size_t p = 0; p < maxOperators; p++)\n\t{\n\t\tconst size_t wordEnd = i + (*(*possibleOperators)[p]).length();\n\t\tif (wordEnd > line.length())\n\t\t\tcontinue;\n\t\tif (line.compare(i, (*(*possibleOperators)[p]).length(), *(*possibleOperators)[p]) == 0)\n\t\t\treturn (*possibleOperators)[p];\n\t}\n\treturn NULL;\n}\n\n/**\n * find the index number of a string element in a container of strings\n *\n * @return              the index number of element in the container. -1 if element not found.\n * @param container     a vector of strings.\n * @param element       the element to find .\n */\nint ASBeautifier::indexOf(vector<const string*> &container, const string* element) const\n{\n\tvector<const string*>::const_iterator where;\n\n\twhere = find(container.begin(), container.end(), element);\n\tif (where == container.end())\n\t\treturn -1;\n\telse\n\t\treturn (int) (where - container.begin());\n}\n\n/**\n * convert tabs to spaces.\n * i is the position of the character to convert to spaces.\n * tabIncrementIn is the increment that must be added for tab indent characters\n *     to get the correct column for the current tab.\n */\nint ASBeautifier::convertTabToSpaces(int i, int tabIncrementIn) const\n{\n\tint tabToSpacesAdjustment = indentLength - 1 - ((tabIncrementIn + i) % indentLength);\n\treturn tabToSpacesAdjustment;\n}\n\n/**\n * trim removes the white space surrounding a line.\n *\n * @return          the trimmed line.\n * @param str       the line to trim.\n */\nstring ASBeautifier::trim(const string &str) const\n{\n\n\tint start = 0;\n\tint end = str.length() - 1;\n\n\twhile (start < end && isWhiteSpace(str[start]))\n\t\tstart++;\n\n\twhile (start <= end && isWhiteSpace(str[end]))\n\t\tend--;\n\n\t// don't trim if it ends in a continuation\n\tif (end > -1 && str[end] == '\\\\')\n\t\tend = str.length() - 1;\n\n\tstring returnStr(str, start, end + 1 - start);\n\treturn returnStr;\n}\n\n/**\n * rtrim removes the white space from the end of a line.\n *\n * @return          the trimmed line.\n * @param str       the line to trim.\n */\nstring ASBeautifier::rtrim(const string &str) const\n{\n\tsize_t len = str.length();\n\tsize_t end = str.find_last_not_of(\" \\t\");\n\tif (end == string::npos\n\t        || end == len - 1)\n\t\treturn str;\n\tstring returnStr(str, 0, end + 1);\n\treturn returnStr;\n}\n\n/**\n * Copy tempStacks for the copy constructor.\n * The value of the vectors must also be copied.\n */\nvector<vector<const string*>*>* ASBeautifier::copyTempStacks(const ASBeautifier &other) const\n{\n\tvector<vector<const string*>*>* tempStacksNew = new vector<vector<const string*>*>;\n\tvector<vector<const string*>*>::iterator iter;\n\tfor (iter = other.tempStacks->begin();\n\t        iter != other.tempStacks->end();\n\t        ++iter)\n\t{\n\t\tvector<const string*>* newVec = new vector<const string*>;\n\t\t*newVec = **iter;\n\t\ttempStacksNew->push_back(newVec);\n\t}\n\treturn tempStacksNew;\n}\n\n/**\n * delete a member vectors to eliminate memory leak reporting\n */\nvoid ASBeautifier::deleteBeautifierVectors()\n{\n\tbeautifierFileType = 9;\t\t// reset to an invalid type\n\tdelete headers;\n\tdelete nonParenHeaders;\n\tdelete preBlockStatements;\n\tdelete preCommandHeaders;\n\tdelete assignmentOperators;\n\tdelete nonAssignmentOperators;\n\tdelete indentableHeaders;\n}\n\n/**\n * delete a vector object\n * T is the type of vector\n * used for all vectors except tempStacks\n */\ntemplate<typename T>\nvoid ASBeautifier::deleteContainer(T &container)\n{\n\tif (container != NULL)\n\t{\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * Delete the ASBeautifier vector object.\n * This is a vector of pointers to ASBeautifier objects allocated with the 'new' operator.\n * Therefore the ASBeautifier objects have to be deleted in addition to the\n * ASBeautifier pointer entries.\n */\nvoid ASBeautifier::deleteBeautifierContainer(vector<ASBeautifier*>* &container)\n{\n\tif (container != NULL)\n\t{\n\t\tvector<ASBeautifier*>::iterator iter = container->begin();\n\t\twhile (iter < container->end())\n\t\t{\n\t\t\tdelete *iter;\n\t\t\t++iter;\n\t\t}\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * Delete the tempStacks vector object.\n * The tempStacks is a vector of pointers to strings allocated with the 'new' operator.\n * Therefore the strings have to be deleted in addition to the tempStacks entries.\n */\nvoid ASBeautifier::deleteTempStacksContainer(vector<vector<const string*>*>* &container)\n{\n\tif (container != NULL)\n\t{\n\t\tvector<vector<const string*>*>::iterator iter = container->begin();\n\t\twhile (iter < container->end())\n\t\t{\n\t\t\tdelete *iter;\n\t\t\t++iter;\n\t\t}\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * initialize a vector object\n * T is the type of vector used for all vectors\n */\ntemplate<typename T>\nvoid ASBeautifier::initContainer(T &container, T value)\n{\n\t// since the ASFormatter object is never deleted,\n\t// the existing vectors must be deleted before creating new ones\n\tif (container != NULL)\n\t\tdeleteContainer(container);\n\tcontainer = value;\n}\n\n/**\n * Initialize the tempStacks vector object.\n * The tempStacks is a vector of pointers to strings allocated with the 'new' operator.\n * Any residual entries are deleted before the vector is initialized.\n */\nvoid ASBeautifier::initTempStacksContainer(vector<vector<const string*>*>* &container,\n                                           vector<vector<const string*>*>* value)\n{\n\tif (container != NULL)\n\t\tdeleteTempStacksContainer(container);\n\tcontainer = value;\n}\n\n/**\n * Determine if an assignment statement ends with a comma\n *     that is not in a function argument. It ends with a\n *     comma if a comma is the last char on the line.\n *\n * @return  true if line ends with a comma, otherwise false.\n */\nbool ASBeautifier::statementEndsWithComma(const string &line, int index) const\n{\n\tassert(line[index] == '=');\n\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tint parenCount = 0;\n\tsize_t lineLength = line.length();\n\tsize_t i = 0;\n\tchar quoteChar_ = ' ';\n\n\tfor (i = index + 1; i < lineLength; ++i)\n\t{\n\t\tchar ch = line[i];\n\n\t\tif (isInComment_)\n\t\t{\n\t\t\tif (line.compare(i, 2, \"*/\") == 0)\n\t\t\t{\n\t\t\t\tisInComment_ = false;\n\t\t\t\t++i;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\\\\')\n\t\t{\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInQuote_)\n\t\t{\n\t\t\tif (ch == quoteChar_)\n\t\t\t\tisInQuote_ = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\"' || ch == '\\'')\n\t\t{\n\t\t\tisInQuote_ = true;\n\t\t\tquoteChar_ = ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (line.compare(i, 2, \"//\") == 0)\n\t\t\tbreak;\n\n\t\tif (line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\tif (isLineEndComment(line, i))\n\t\t\t\tbreak;\n\t\t\telse\n\t\t\t{\n\t\t\t\tisInComment_ = true;\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (ch == '(')\n\t\t\tparenCount++;\n\t\tif (ch == ')')\n\t\t\tparenCount--;\n\t}\n\tif (isInComment_\n\t        || isInQuote_\n\t        || parenCount > 0)\n\t\treturn false;\n\n\tsize_t lastChar = line.find_last_not_of(\" \\t\", i - 1);\n\n\tif (lastChar == string::npos || line[lastChar] != ',')\n\t\treturn false;\n\n\treturn true;\n}\n\n/**\n * check if current comment is a line-end comment\n *\n * @return     is before a line-end comment.\n */\nbool ASBeautifier::isLineEndComment(const string &line, int startPos) const\n{\n\tassert(line.compare(startPos, 2, \"/*\") == 0);\n\n\t// comment must be closed on this line with nothing after it\n\tsize_t endNum = line.find(\"*/\", startPos + 2);\n\tif (endNum != string::npos)\n\t{\n\t\tsize_t nextChar = line.find_first_not_of(\" \\t\", endNum + 2);\n\t\tif (nextChar == string::npos)\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * get the previous word index for an assignment operator\n *\n * @return is the index to the previous word (the in statement indent).\n */\nint ASBeautifier::getInStatementIndentAssign(const string &line, size_t currPos) const\n{\n\tassert(line[currPos] == '=');\n\n\tif (currPos == 0)\n\t\treturn 0;\n\n\t// get the last legal word (may be a number)\n\tsize_t end = line.find_last_not_of(\" \\t\", currPos - 1);\n\tif (end == string::npos || !isLegalNameChar(line[end]))\n\t\treturn 0;\n\n\tint start;          // start of the previous word\n\tfor (start = end; start > -1; start--)\n\t{\n\t\tif (!isLegalNameChar(line[start]) || line[start] == '.')\n\t\t\tbreak;\n\t}\n\tstart++;\n\n\treturn start;\n}\n\n/**\n * get the instatement indent for a comma\n *\n * @return is the indent to the second word on the line (the in statement indent).\n */\nint ASBeautifier::getInStatementIndentComma(const string &line, size_t currPos) const\n{\n\tassert(line[currPos] == ',');\n\n\t// get first word on a line\n\tsize_t indent = line.find_first_not_of(\" \\t\");\n\tif (indent == string::npos || !isLegalNameChar(line[indent]))\n\t\treturn 0;\n\n\t// bypass first word\n\tfor (; indent < currPos; indent++)\n\t{\n\t\tif (!isLegalNameChar(line[indent]))\n\t\t\tbreak;\n\t}\n\tindent++;\n\tif (indent >= currPos || indent < 4)\n\t\treturn 0;\n\n\t// point to second word or assignment operator\n\tindent = line.find_first_not_of(\" \\t\", indent);\n\tif (indent == string::npos || indent >= currPos)\n\t\treturn 0;\n\n\treturn indent;\n}\n\n/**\n * get the next word on a line\n * the argument 'currPos' must point to the current position.\n *\n * @return is the next word or an empty string if none found.\n */\nstring ASBeautifier::getNextWord(const string &line, size_t currPos) const\n{\n\tsize_t lineLength = line.length();\n\t// get the last legal word (may be a number)\n\tif (currPos == lineLength - 1)\n\t\treturn string();\n\n\tsize_t start = line.find_first_not_of(\" \\t\", currPos + 1);\n\tif (start == string::npos || !isLegalNameChar(line[start]))\n\t\treturn string();\n\n\tsize_t end;\t\t\t// end of the current word\n\tfor (end = start + 1; end <= lineLength; end++)\n\t{\n\t\tif (!isLegalNameChar(line[end]) || line[end] == '.')\n\t\t\tbreak;\n\t}\n\n\treturn line.substr(start, end - start);\n}\n\n/**\n * Check if a preprocessor directive is always indented.\n * C# \"region\" and \"endregion\" are always indented.\n * C/C++ \"pragma omp\" is always indented.\n *\n * @return is true or false.\n */\nbool ASBeautifier::isIndentedPreprocessor(const string &line, size_t currPos) const\n{\n\tassert(line[0] == '#');\n\tstring nextWord = getNextWord(line, currPos);\n\tif (nextWord == \"region\" || nextWord == \"endregion\")\n\t\treturn true;\n\t// is it #pragma omp\n\tif (nextWord == \"pragma\")\n\t{\n\t\t// find pragma\n\t\tsize_t start = line.find(\"pragma\");\n\t\tif (start == string::npos || !isLegalNameChar(line[start]))\n\t\t\treturn false;\n\t\t// bypass pragma\n\t\tfor (; start < line.length(); start++)\n\t\t{\n\t\t\tif (!isLegalNameChar(line[start]))\n\t\t\t\tbreak;\n\t\t}\n\t\tstart++;\n\t\tif (start >= line.length())\n\t\t\treturn false;\n\t\t// point to start of second word\n\t\tstart = line.find_first_not_of(\" \\t\", start);\n\t\tif (start == string::npos)\n\t\t\treturn false;\n\t\t// point to end of second word\n\t\tsize_t end;\n\t\tfor (end = start; end < line.length(); end++)\n\t\t{\n\t\t\tif (!isLegalNameChar(line[end]))\n\t\t\t\tbreak;\n\t\t}\n\t\t// check for \"pragma omp\"\n\t\tstring word = line.substr(start, end - start);\n\t\tif (word == \"omp\" || word == \"region\" || word == \"endregion\")\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * Check if a preprocessor directive is checking for __cplusplus defined.\n *\n * @return is true or false.\n */\nbool ASBeautifier::isPreprocessorConditionalCplusplus(const string &line) const\n{\n\tstring preproc = trim(line.substr(1));\n\tif (preproc.compare(0, 5, \"ifdef\") == 0 && getNextWord(preproc, 4) == \"__cplusplus\")\n\t\treturn true;\n\tif (preproc.compare(0, 2, \"if\") == 0)\n\t{\n\t\t// check for \" #if defined(__cplusplus)\"\n\t\tsize_t charNum = 2;\n\t\tcharNum = preproc.find_first_not_of(\" \\t\", charNum);\n\t\tif (preproc.compare(charNum, 7, \"defined\") == 0)\n\t\t{\n\t\t\tcharNum += 7;\n\t\t\tcharNum = preproc.find_first_not_of(\" \\t\", charNum);\n\t\t\tif (preproc.compare(charNum, 1, \"(\") == 0)\n\t\t\t{\n\t\t\t\t++charNum;\n\t\t\t\tcharNum = preproc.find_first_not_of(\" \\t\", charNum);\n\t\t\t\tif (preproc.compare(charNum, 11, \"__cplusplus\") == 0)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Check if a preprocessor definition contains an unterminated comment.\n * Comments within a preprocessor definition can be continued without the backslash.\n *\n * @return is true or false.\n */\nbool ASBeautifier::isInPreprocessorUnterminatedComment(const string &line)\n{\n\tif (!isInPreprocessorComment)\n\t{\n\t\tsize_t startPos = line.find(\"/*\");\n\t\tif (startPos == string::npos)\n\t\t\treturn false;\n\t}\n\tsize_t endNum = line.find(\"*/\");\n\tif (endNum != string::npos)\n\t{\n\t\tisInPreprocessorComment = false;\n\t\treturn false;\n\t}\n\tisInPreprocessorComment = true;\n\treturn true;\n}\n\nvoid ASBeautifier::popLastInStatementIndent()\n{\n\tassert(!inStatementIndentStackSizeStack->empty());\n\tint previousIndentStackSize = inStatementIndentStackSizeStack->back();\n\tif (inStatementIndentStackSizeStack->size() > 1)\n\t\tinStatementIndentStackSizeStack->pop_back();\n\twhile (previousIndentStackSize < (int) inStatementIndentStack->size())\n\t\tinStatementIndentStack->pop_back();\n}\n\n// for unit testing\nint ASBeautifier::getBeautifierFileType() const\n{ return beautifierFileType; }\n\n/**\n * Process preprocessor statements and update the beautifier stacks.\n */\nvoid ASBeautifier::processPreprocessor(const string &preproc, const string &line)\n{\n\t// When finding a multi-lined #define statement, the original beautifier\n\t// 1. sets its isInDefineDefinition flag\n\t// 2. clones a new beautifier that will be used for the actual indentation\n\t//    of the #define. This clone is put into the activeBeautifierStack in order\n\t//    to be called for the actual indentation.\n\t// The original beautifier will have isInDefineDefinition = true, isInDefine = false\n\t// The cloned beautifier will have   isInDefineDefinition = true, isInDefine = true\n\tif (shouldIndentPreprocDefine && preproc == \"define\" && line[line.length() - 1] == '\\\\')\n\t{\n\t\tif (!isInDefineDefinition)\n\t\t{\n\t\t\tASBeautifier* defineBeautifier;\n\n\t\t\t// this is the original beautifier\n\t\t\tisInDefineDefinition = true;\n\n\t\t\t// push a new beautifier into the active stack\n\t\t\t// this beautifier will be used for the indentation of this define\n\t\t\tdefineBeautifier = new ASBeautifier(*this);\n\t\t\tactiveBeautifierStack->push_back(defineBeautifier);\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// the is the cloned beautifier that is in charge of indenting the #define.\n\t\t\tisInDefine = true;\n\t\t}\n\t}\n\telse if (preproc.length() >= 2 && preproc.substr(0, 2) == \"if\")\n\t{\n\t\tif (isPreprocessorConditionalCplusplus(line) && !g_preprocessorCppExternCBracket)\n\t\t\tg_preprocessorCppExternCBracket = 1;\n\t\t// push a new beautifier into the stack\n\t\twaitingBeautifierStackLengthStack->push_back(waitingBeautifierStack->size());\n\t\tactiveBeautifierStackLengthStack->push_back(activeBeautifierStack->size());\n\t\tif (activeBeautifierStackLengthStack->back() == 0)\n\t\t\twaitingBeautifierStack->push_back(new ASBeautifier(*this));\n\t\telse\n\t\t\twaitingBeautifierStack->push_back(new ASBeautifier(*activeBeautifierStack->back()));\n\t}\n\telse if (preproc == \"else\")\n\t{\n\t\tif (waitingBeautifierStack && !waitingBeautifierStack->empty())\n\t\t{\n\t\t\t// MOVE current waiting beautifier to active stack.\n\t\t\tactiveBeautifierStack->push_back(waitingBeautifierStack->back());\n\t\t\twaitingBeautifierStack->pop_back();\n\t\t}\n\t}\n\telse if (preproc == \"elif\")\n\t{\n\t\tif (waitingBeautifierStack && !waitingBeautifierStack->empty())\n\t\t{\n\t\t\t// append a COPY current waiting beautifier to active stack, WITHOUT deleting the original.\n\t\t\tactiveBeautifierStack->push_back(new ASBeautifier(*(waitingBeautifierStack->back())));\n\t\t}\n\t}\n\telse if (preproc == \"endif\")\n\t{\n\t\tint stackLength;\n\t\tASBeautifier* beautifier;\n\n\t\tif (waitingBeautifierStackLengthStack != NULL && !waitingBeautifierStackLengthStack->empty())\n\t\t{\n\t\t\tstackLength = waitingBeautifierStackLengthStack->back();\n\t\t\twaitingBeautifierStackLengthStack->pop_back();\n\t\t\twhile ((int) waitingBeautifierStack->size() > stackLength)\n\t\t\t{\n\t\t\t\tbeautifier = waitingBeautifierStack->back();\n\t\t\t\twaitingBeautifierStack->pop_back();\n\t\t\t\tdelete beautifier;\n\t\t\t}\n\t\t}\n\n\t\tif (!activeBeautifierStackLengthStack->empty())\n\t\t{\n\t\t\tstackLength = activeBeautifierStackLengthStack->back();\n\t\t\tactiveBeautifierStackLengthStack->pop_back();\n\t\t\twhile ((int) activeBeautifierStack->size() > stackLength)\n\t\t\t{\n\t\t\t\tbeautifier = activeBeautifierStack->back();\n\t\t\t\tactiveBeautifierStack->pop_back();\n\t\t\t\tdelete beautifier;\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Compute the preliminary indentation based on data in the headerStack\n// and data from previous lines.\n// Update the class variable indentCount.\nvoid ASBeautifier::computePreliminaryIndentation()\n{\n\tindentCount = 0;\n\tspaceIndentCount = 0;\n\tisInClassHeaderTab = false;\n\n\tif (isInObjCMethodDefinition && !inStatementIndentStack->empty())\n\t\tspaceIndentObjCMethodDefinition = inStatementIndentStack->back();\n\n\tif (!inStatementIndentStack->empty())\n\t\tspaceIndentCount = inStatementIndentStack->back();\n\n\tfor (size_t i = 0; i < headerStack->size(); i++)\n\t{\n\t\tisInClass = false;\n\n\t\tif (blockIndent)\n\t\t{\n\t\t\t// do NOT indent opening block for these headers\n\t\t\tif (!((*headerStack)[i] == &AS_NAMESPACE\n\t\t\t        || (*headerStack)[i] == &AS_CLASS\n\t\t\t        || (*headerStack)[i] == &AS_STRUCT\n\t\t\t        || (*headerStack)[i] == &AS_UNION\n\t\t\t        || (*headerStack)[i] == &AS_INTERFACE\n\t\t\t        || (*headerStack)[i] == &AS_THROWS\n\t\t\t        || (*headerStack)[i] == &AS_STATIC))\n\t\t\t\t++indentCount;\n\t\t}\n\t\telse if (!(i > 0 && (*headerStack)[i - 1] != &AS_OPEN_BRACKET\n\t\t           && (*headerStack)[i] == &AS_OPEN_BRACKET))\n\t\t\t++indentCount;\n\n\t\tif (!isJavaStyle() && !namespaceIndent && i > 0\n\t\t        && (*headerStack)[i - 1] == &AS_NAMESPACE\n\t\t        && (*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t\t--indentCount;\n\n\t\tif (isCStyle() && i >= 1\n\t\t        && (*headerStack)[i - 1] == &AS_CLASS\n\t\t        && (*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t{\n\t\t\tif (classIndent)\n\t\t\t\t++indentCount;\n\t\t\tisInClass = true;\n\t\t}\n\n\t\t// is the switchIndent option is on, indent switch statements an additional indent.\n\t\telse if (switchIndent && i > 1\n\t\t         && (*headerStack)[i - 1] == &AS_SWITCH\n\t\t         && (*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t{\n\t\t\t++indentCount;\n\t\t\tisInSwitch = true;\n\t\t}\n\n\t}\t// end of for loop\n\n\tif (isInClassHeader)\n\t{\n\t\tif (!isJavaStyle())\n\t\t\tisInClassHeaderTab = true;\n\t\tif (lineOpensWithLineComment || lineStartsInComment || lineOpensWithComment)\n\t\t{\n\t\t\tif (!lineBeginsWithOpenBracket)\n\t\t\t\t--indentCount;\n\t\t\tif (!inStatementIndentStack->empty())\n\t\t\t\tspaceIndentCount -= inStatementIndentStack->back();\n\t\t}\n\t\telse if (blockIndent)\n\t\t{\n\t\t\tif (!lineBeginsWithOpenBracket)\n\t\t\t\t++indentCount;\n\t\t}\n\t}\n\n\tif (isInClassInitializer || isInEnumTypeID)\n\t{\n\t\tindentCount += classInitializerIndents;\n\t}\n\n\tif (isInEnum && lineBeginsWithComma && !inStatementIndentStack->empty())\n\t{\n\t\t// unregister '=' indent from the previous line\n\t\tinStatementIndentStack->pop_back();\n\t\tisInStatement = false;\n\t\tspaceIndentCount = 0;\n\t}\n\n\t// Objective-C interface continuation line\n\tif (isInObjCInterface)\n\t\t++indentCount;\n\n\t// unindent a class closing bracket...\n\tif (!lineStartsInComment\n\t        && isCStyle()\n\t        && isInClass\n\t        && classIndent\n\t        && headerStack->size() >= 2\n\t        && (*headerStack)[headerStack->size() - 2] == &AS_CLASS\n\t        && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACKET\n\t        && lineBeginsWithCloseBracket\n\t        && bracketBlockStateStack->back() == true)\n\t\t--indentCount;\n\n\t// unindent an indented switch closing bracket...\n\telse if (!lineStartsInComment\n\t         && isInSwitch\n\t         && switchIndent\n\t         && headerStack->size() >= 2\n\t         && (*headerStack)[headerStack->size() - 2] == &AS_SWITCH\n\t         && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACKET\n\t         && lineBeginsWithCloseBracket)\n\t\t--indentCount;\n\n\t// handle special case of horstmann comment in an indented class statement\n\tif (isInClass\n\t        && classIndent\n\t        && isInHorstmannComment\n\t        && !lineOpensWithComment\n\t        && headerStack->size() > 1\n\t        && (*headerStack)[headerStack->size() - 2] == &AS_CLASS)\n\t\t--indentCount;\n\n\tif (isInConditional)\n\t\t--indentCount;\n\tif (g_preprocessorCppExternCBracket >= 4)\n\t\t--indentCount;\n}\n\nvoid ASBeautifier::adjustParsedLineIndentation(size_t iPrelim, bool isInExtraHeaderIndent)\n{\n\tif (lineStartsInComment)\n\t\treturn;\n\n\t// unindent a one-line statement in a header indent\n\tif (!blockIndent\n\t        && lineBeginsWithOpenBracket\n\t        && headerStack->size() < iPrelim\n\t        && isInExtraHeaderIndent\n\t        && (lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)\n\t        && shouldIndentBrackettedLine)\n\t\t--indentCount;\n\n\t/*\n\t * if '{' doesn't follow an immediately previous '{' in the headerStack\n\t * (but rather another header such as \"for\" or \"if\", then unindent it\n\t * by one indentation relative to its block.\n\t */\n\telse if (!blockIndent\n\t         && lineBeginsWithOpenBracket\n\t         && !(lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)\n\t         && (headerStack->size() > 1 && (*headerStack)[headerStack->size() - 2] != &AS_OPEN_BRACKET)\n\t         && shouldIndentBrackettedLine)\n\t\t--indentCount;\n\n\t// must check one less in headerStack if more than one header on a line (allow-addins)...\n\telse if (headerStack->size() > iPrelim + 1\n\t         && !blockIndent\n\t         && lineBeginsWithOpenBracket\n\t         && !(lineOpeningBlocksNum > 0 && lineOpeningBlocksNum <= lineClosingBlocksNum)\n\t         && (headerStack->size() > 2 && (*headerStack)[headerStack->size() - 3] != &AS_OPEN_BRACKET)\n\t         && shouldIndentBrackettedLine)\n\t\t--indentCount;\n\n\t// unindent a closing bracket...\n\telse if (lineBeginsWithCloseBracket\n\t         && shouldIndentBrackettedLine)\n\t\t--indentCount;\n\n\t// correctly indent one-line-blocks...\n\telse if (lineOpeningBlocksNum > 0\n\t         && lineOpeningBlocksNum == lineClosingBlocksNum\n\t         && previousLineProbationTab)\n\t\t--indentCount;\n\n\tif (indentCount < 0)\n\t\tindentCount = 0;\n\n\t// take care of extra bracket indentation option...\n\tif (!lineStartsInComment\n\t        && bracketIndent\n\t        && shouldIndentBrackettedLine\n\t        && (lineBeginsWithOpenBracket || lineBeginsWithCloseBracket))\n\t{\n\t\tif (!bracketIndentVtk)\n\t\t\t++indentCount;\n\t\telse\n\t\t{\n\t\t\t// determine if a style VTK bracket is indented\n\t\t\tbool haveUnindentedBracket = false;\n\t\t\tfor (size_t i = 0; i < headerStack->size(); i++)\n\t\t\t{\n\t\t\t\tif (((*headerStack)[i] == &AS_NAMESPACE\n\t\t\t\t        || (*headerStack)[i] == &AS_CLASS\n\t\t\t\t        || (*headerStack)[i] == &AS_STRUCT)\n\t\t\t\t        && i + 1 < headerStack->size()\n\t\t\t\t        && (*headerStack)[i + 1] == &AS_OPEN_BRACKET)\n\t\t\t\t\ti++;\n\t\t\t\telse if (lineBeginsWithOpenBracket)\n\t\t\t\t{\n\t\t\t\t\t// don't double count the current bracket\n\t\t\t\t\tif (i + 1 < headerStack->size()\n\t\t\t\t\t        && (*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t\t\t\t\thaveUnindentedBracket = true;\n\t\t\t\t}\n\t\t\t\telse if ((*headerStack)[i] == &AS_OPEN_BRACKET)\n\t\t\t\t\thaveUnindentedBracket = true;\n\t\t\t}\t// end of for loop\n\t\t\tif (haveUnindentedBracket)\n\t\t\t\t++indentCount;\n\t\t}\n\t}\n}\n\n/**\n * Compute indentCount adjustment when in a series of else-if statements\n * and shouldBreakElseIfs is requested.\n * It increments by one for each 'else' in the tempStack.\n */\nint ASBeautifier::adjustIndentCountForBreakElseIfComments() const\n{\n\tassert(isElseHeaderIndent && !tempStacks->empty());\n\tint indentCountIncrement = 0;\n\tvector<const string*>* lastTempStack = tempStacks->back();\n\tif (lastTempStack != NULL)\n\t{\n\t\tfor (size_t i = 0; i < lastTempStack->size(); i++)\n\t\t{\n\t\t\tif (*lastTempStack->at(i) == AS_ELSE)\n\t\t\t\tindentCountIncrement++;\n\t\t}\n\t}\n\treturn indentCountIncrement;\n}\n\n/**\n * Extract a preprocessor statement without the #.\n * If a error occurs an empty string is returned.\n */\nstring ASBeautifier::extractPreprocessorStatement(const string &line) const\n{\n\tstring preproc;\n\tsize_t start = line.find_first_not_of(\"#/ \\t\");\n\tif (start == string::npos)\n\t\treturn preproc;\n\tsize_t end = line.find_first_of(\"/ \\t\", start);\n\tif (end == string::npos)\n\t\tend = line.length();\n\tpreproc = line.substr(start, end - start);\n\treturn preproc;\n}\n\n/**\n * Clear the variables used to align the Objective-C method definitions.\n */\nvoid ASBeautifier::clearObjCMethodDefinitionAlignment()\n{\n\tassert(isImmediatelyPostObjCMethodDefinition);\n\tspaceIndentCount = 0;\n\tspaceIndentObjCMethodDefinition = 0;\n\tcolonIndentObjCMethodDefinition = 0;\n\tisInObjCMethodDefinition = false;\n\tisImmediatelyPostObjCMethodDefinition = false;\n\tif (!inStatementIndentStack->empty())\n\t\tinStatementIndentStack->pop_back();\n}\n\n/**\n * Compute the spaceIndentCount necessary to align the current line colon\n * with the colon position in the argument.\n * If it cannot be aligned indentLength is returned and a new colon\n * position is calculated.\n */\nint ASBeautifier::computeObjCColonAlignment(string &line, int colonAlignPosition) const\n{\n\tint colonPosition = line.find(':');\n\tif (colonPosition < 0 || colonPosition > colonAlignPosition)\n\t\treturn indentLength;\n\treturn (colonAlignPosition - colonPosition);\n}\n\n/**\n * Parse the current line to update indentCount and spaceIndentCount.\n */\nvoid ASBeautifier::parseCurrentLine(const string &line)\n{\n\tbool isInLineComment = false;\n\tbool isInOperator = false;\n\tbool isSpecialChar = false;\n\tbool haveCaseIndent = false;\n\tbool haveAssignmentThisLine = false;\n\tbool closingBracketReached = false;\n\tbool previousLineProbation = (probationHeader != NULL);\n\tchar ch = ' ';\n\tint tabIncrementIn = 0;\n\n\tfor (size_t i = 0; i < line.length(); i++)\n\t{\n\t\tch = line[i];\n\n\t\tif (isInBeautifySQL)\n\t\t\tcontinue;\n\n\t\tif (isWhiteSpace(ch))\n\t\t{\n\t\t\tif (ch == '\\t')\n\t\t\t\ttabIncrementIn += convertTabToSpaces(i, tabIncrementIn);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle special characters (i.e. backslash+character such as \\n, \\t, ...)\n\n\t\tif (isInQuote && !isInVerbatimQuote)\n\t\t{\n\t\t\tif (isSpecialChar)\n\t\t\t{\n\t\t\t\tisSpecialChar = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (line.compare(i, 2, \"\\\\\\\\\") == 0)\n\t\t\t{\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (ch == '\\\\')\n\t\t\t{\n\t\t\t\tif (peekNextChar(line, i) == ' ')   // is this '\\' at end of line\n\t\t\t\t\thaveLineContinuationChar = true;\n\t\t\t\telse\n\t\t\t\t\tisSpecialChar = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\telse if (isInDefine && ch == '\\\\')\n\t\t\tcontinue;\n\n\t\t// handle quotes (such as 'x' and \"Hello Dolly\")\n\t\tif (!(isInComment || isInLineComment) && (ch == '\"' || ch == '\\''))\n\t\t{\n\t\t\tif (!isInQuote)\n\t\t\t{\n\t\t\t\tquoteChar = ch;\n\t\t\t\tisInQuote = true;\n\t\t\t\tchar prevCh = i > 0 ? line[i - 1] : ' ';\n\t\t\t\tif (isCStyle() && prevCh == 'R')\n\t\t\t\t{\n\t\t\t\t\tint parenPos = line.find('(', i);\n\t\t\t\t\tif (parenPos != -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tisInVerbatimQuote = true;\n\t\t\t\t\t\tverbatimDelimiter = line.substr(i + 1, parenPos - i - 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (isSharpStyle() && prevCh == '@')\n\t\t\t\t\tisInVerbatimQuote = true;\n\t\t\t\t// check for \"C\" following \"extern\"\n\t\t\t\telse if (g_preprocessorCppExternCBracket == 2 && line.compare(i, 3, \"\\\"C\\\"\") == 0)\n\t\t\t\t\t++g_preprocessorCppExternCBracket;\n\t\t\t}\n\t\t\telse if (isInVerbatimQuote && ch == '\"')\n\t\t\t{\n\t\t\t\tif (isCStyle())\n\t\t\t\t{\n\t\t\t\t\tstring delim = ')' + verbatimDelimiter;\n\t\t\t\t\tint delimStart = i - delim.length();\n\t\t\t\t\tif (delimStart > 0 && line.substr(delimStart, delim.length()) == delim)\n\t\t\t\t\t{\n\t\t\t\t\t\tisInQuote = false;\n\t\t\t\t\t\tisInVerbatimQuote = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (isSharpStyle())\n\t\t\t\t{\n\t\t\t\t\tif (peekNextChar(line, i) == '\"')           // check consecutive quotes\n\t\t\t\t\t\ti++;\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tisInQuote = false;\n\t\t\t\t\t\tisInVerbatimQuote = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (quoteChar == ch)\n\t\t\t{\n\t\t\t\tisInQuote = false;\n\t\t\t\tisInStatement = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (isInQuote)\n\t\t\tcontinue;\n\n\t\t// handle comments\n\n\t\tif (!(isInComment || isInLineComment) && line.compare(i, 2, \"//\") == 0)\n\t\t{\n\t\t\t// if there is a 'case' statement after these comments unindent by 1\n\t\t\tif (isCaseHeaderCommentIndent)\n\t\t\t\t--indentCount;\n\t\t\t// isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested\n\t\t\t// if there is an 'else' after these comments a tempStacks indent is required\n\t\t\tif (isElseHeaderIndent && lineOpensWithLineComment && !tempStacks->empty())\n\t\t\t\tindentCount += adjustIndentCountForBreakElseIfComments();\n\t\t\tisInLineComment = true;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\telse if (!(isInComment || isInLineComment) && line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\t// if there is a 'case' statement after these comments unindent by 1\n\t\t\tif (isCaseHeaderCommentIndent && lineOpensWithComment)\n\t\t\t\t--indentCount;\n\t\t\t// isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested\n\t\t\t// if there is an 'else' after these comments a tempStacks indent is required\n\t\t\tif (isElseHeaderIndent && lineOpensWithComment && !tempStacks->empty())\n\t\t\t\tindentCount += adjustIndentCountForBreakElseIfComments();\n\t\t\tisInComment = true;\n\t\t\ti++;\n\t\t\tif (!lineOpensWithComment)\t\t\t\t// does line start with comment?\n\t\t\t\tblockCommentNoIndent = true;        // if no, cannot indent continuation lines\n\t\t\tcontinue;\n\t\t}\n\t\telse if ((isInComment || isInLineComment) && line.compare(i, 2, \"*/\") == 0)\n\t\t{\n\t\t\tsize_t firstText = line.find_first_not_of(\" \\t\");\n\t\t\t// if there is a 'case' statement after these comments unindent by 1\n\t\t\t// only if the ending comment is the first entry on the line\n\t\t\tif (isCaseHeaderCommentIndent && firstText == i)\n\t\t\t\t--indentCount;\n\t\t\t// if this comment close starts the line, must check for else-if indent\n\t\t\t// isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested\n\t\t\t// if there is an 'else' after these comments a tempStacks indent is required\n\t\t\tif (firstText == i)\n\t\t\t{\n\t\t\t\tif (isElseHeaderIndent && !lineOpensWithComment && !tempStacks->empty())\n\t\t\t\t\tindentCount += adjustIndentCountForBreakElseIfComments();\n\t\t\t}\n\t\t\tisInComment = false;\n\t\t\ti++;\n\t\t\tblockCommentNoIndent = false;           // ok to indent next comment\n\t\t\tcontinue;\n\t\t}\n\t\t// treat indented preprocessor lines as a line comment\n\t\telse if (line[0] == '#' && isIndentedPreprocessor(line, i))\n\t\t{\n\t\t\tisInLineComment = true;\n\t\t}\n\n\t\tif (isInLineComment)\n\t\t{\n\t\t\t// bypass rest of the comment up to the comment end\n\t\t\twhile (i + 1 < line.length())\n\t\t\t\ti++;\n\n\t\t\tcontinue;\n\t\t}\n\t\tif (isInComment)\n\t\t{\n\t\t\t// if there is a 'case' statement after these comments unindent by 1\n\t\t\tif (!lineOpensWithComment && isCaseHeaderCommentIndent)\n\t\t\t\t--indentCount;\n\t\t\t// isElseHeaderIndent is set by ASFormatter if shouldBreakElseIfs is requested\n\t\t\t// if there is an 'else' after these comments a tempStacks indent is required\n\t\t\tif (!lineOpensWithComment && isElseHeaderIndent && !tempStacks->empty())\n\t\t\t\tindentCount += adjustIndentCountForBreakElseIfComments();\n\t\t\t// bypass rest of the comment up to the comment end\n\t\t\twhile (i + 1 < line.length()\n\t\t\t        && line.compare(i + 1, 2, \"*/\") != 0)\n\t\t\t\ti++;\n\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if we have reached this far then we are NOT in a comment or string of special character...\n\n\t\tif (probationHeader != NULL)\n\t\t{\n\t\t\tif ((probationHeader == &AS_STATIC && ch == '{')\n\t\t\t        || (probationHeader == &AS_SYNCHRONIZED && ch == '('))\n\t\t\t{\n\t\t\t\t// insert the probation header as a new header\n\t\t\t\tisInHeader = true;\n\t\t\t\theaderStack->push_back(probationHeader);\n\n\t\t\t\t// handle the specific probation header\n\t\t\t\tisInConditional = (probationHeader == &AS_SYNCHRONIZED);\n\n\t\t\t\tisInStatement = false;\n\t\t\t\t// if the probation comes from the previous line, then indent by 1 tab count.\n\t\t\t\tif (previousLineProbation\n\t\t\t\t        && ch == '{'\n\t\t\t\t        && !(blockIndent && probationHeader == &AS_STATIC))\n\t\t\t\t{\n\t\t\t\t\t++indentCount;\n\t\t\t\t\tpreviousLineProbationTab = true;\n\t\t\t\t}\n\t\t\t\tpreviousLineProbation = false;\n\t\t\t}\n\n\t\t\t// dismiss the probation header\n\t\t\tprobationHeader = NULL;\n\t\t}\n\n\t\tprevNonSpaceCh = currentNonSpaceCh;\n\t\tcurrentNonSpaceCh = ch;\n\t\tif (!isLegalNameChar(ch) && ch != ',' && ch != ';')\n\t\t{\n\t\t\tprevNonLegalCh = currentNonLegalCh;\n\t\t\tcurrentNonLegalCh = ch;\n\t\t}\n\n\t\tif (isInHeader)\n\t\t{\n\t\t\tisInHeader = false;\n\t\t\tcurrentHeader = headerStack->back();\n\t\t}\n\t\telse\n\t\t\tcurrentHeader = NULL;\n\n\t\tif (isCStyle() && isInTemplate\n\t\t        && (ch == '<' || ch == '>')\n\t\t        && !(line.length() > i + 1 && line.compare(i, 2, \">=\") == 0))\n\t\t{\n\t\t\tif (ch == '<')\n\t\t\t{\n\t\t\t\t++templateDepth;\n\t\t\t\tinStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());\n\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true);\n\t\t\t}\n\t\t\telse if (ch == '>')\n\t\t\t{\n\t\t\t\tpopLastInStatementIndent();\n\t\t\t\tif (--templateDepth <= 0)\n\t\t\t\t{\n\t\t\t\t\tch = ';';\n\t\t\t\t\tisInTemplate = false;\n\t\t\t\t\ttemplateDepth = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// handle parentheses\n\t\tif (ch == '(' || ch == '[' || ch == ')' || ch == ']')\n\t\t{\n\t\t\tif (ch == '(' || ch == '[')\n\t\t\t{\n\t\t\t\tisInOperator = false;\n\t\t\t\t// if have a struct header, this is a declaration not a definition\n\t\t\t\tif (ch == '('\n\t\t\t\t        && !headerStack->empty()\n\t\t\t\t        && headerStack->back() == &AS_STRUCT)\n\t\t\t\t{\n\t\t\t\t\theaderStack->pop_back();\n\t\t\t\t\tisInClassHeader = false;\n\t\t\t\t\tif (line.find(AS_STRUCT, 0) > i)\t// if not on this line\n\t\t\t\t\t\tindentCount -= classInitializerIndents;\n\t\t\t\t\tif (indentCount < 0)\n\t\t\t\t\t\tindentCount = 0;\n\t\t\t\t}\n\n\t\t\t\tif (parenDepth == 0)\n\t\t\t\t{\n\t\t\t\t\tparenStatementStack->push_back(isInStatement);\n\t\t\t\t\tisInStatement = true;\n\t\t\t\t}\n\t\t\t\tparenDepth++;\n\t\t\t\tif (ch == '[')\n\t\t\t\t\t++squareBracketCount;\n\n\t\t\t\tinStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());\n\n\t\t\t\tif (currentHeader != NULL)\n\t\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, minConditionalIndent/*indentLength*2*/, true);\n\t\t\t\telse\n\t\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true);\n\t\t\t}\n\t\t\telse if (ch == ')' || ch == ']')\n\t\t\t{\n\t\t\t\tif (ch == ']')\n\t\t\t\t\t--squareBracketCount;\n\t\t\t\tif (squareBracketCount < 0)\n\t\t\t\t\tsquareBracketCount = 0;\n\t\t\t\tfoundPreCommandHeader = false;\n\t\t\t\tparenDepth--;\n\t\t\t\tif (parenDepth == 0)\n\t\t\t\t{\n\t\t\t\t\tif (!parenStatementStack->empty())      // in case of unmatched closing parens\n\t\t\t\t\t{\n\t\t\t\t\t\tisInStatement = parenStatementStack->back();\n\t\t\t\t\t\tparenStatementStack->pop_back();\n\t\t\t\t\t}\n\t\t\t\t\tisInAsm = false;\n\t\t\t\t\tisInConditional = false;\n\t\t\t\t}\n\n\t\t\t\tif (!inStatementIndentStackSizeStack->empty())\n\t\t\t\t{\n\t\t\t\t\tpopLastInStatementIndent();\n\n\t\t\t\t\tif (!parenIndentStack->empty())\n\t\t\t\t\t{\n\t\t\t\t\t\tint poppedIndent = parenIndentStack->back();\n\t\t\t\t\t\tparenIndentStack->pop_back();\n\n\t\t\t\t\t\tif (i == 0)\n\t\t\t\t\t\t\tspaceIndentCount = poppedIndent;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '{')\n\t\t{\n\t\t\t// first, check if '{' is a block-opener or a static-array opener\n\t\t\tbool isBlockOpener = ((prevNonSpaceCh == '{' && bracketBlockStateStack->back())\n\t\t\t                      || prevNonSpaceCh == '}'\n\t\t\t                      || prevNonSpaceCh == ')'\n\t\t\t                      || prevNonSpaceCh == ';'\n\t\t\t                      || peekNextChar(line, i) == '{'\n\t\t\t                      || foundPreCommandHeader\n\t\t\t                      || foundPreCommandMacro\n\t\t\t                      || isInClassHeader\n\t\t\t                      || (isInClassInitializer && !isLegalNameChar(prevNonSpaceCh))\n\t\t\t                      || isNonInStatementArray\n\t\t\t                      || isInObjCMethodDefinition\n\t\t\t                      || isInObjCInterface\n\t\t\t                      || isSharpAccessor\n\t\t\t                      || isSharpDelegate\n\t\t\t                      || isInExternC\n\t\t\t                      || isInAsmBlock\n\t\t\t                      || getNextWord(line, i) == AS_NEW\n\t\t\t                      || (isInDefine\n\t\t\t                          && (prevNonSpaceCh == '('\n\t\t\t                              || isLegalNameChar(prevNonSpaceCh))));\n\n\t\t\tif (isInObjCMethodDefinition)\n\t\t\t\tisImmediatelyPostObjCMethodDefinition = true;\n\n\t\t\tif (!isBlockOpener && !isInStatement && !isInClassInitializer && !isInEnum)\n\t\t\t{\n\t\t\t\tif (headerStack->empty())\n\t\t\t\t\tisBlockOpener = true;\n\t\t\t\telse if (headerStack->back() == &AS_NAMESPACE\n\t\t\t\t         || headerStack->back() == &AS_CLASS\n\t\t\t\t         || headerStack->back() == &AS_INTERFACE\n\t\t\t\t         || headerStack->back() == &AS_STRUCT\n\t\t\t\t         || headerStack->back() == &AS_UNION)\n\t\t\t\t\tisBlockOpener = true;\n\t\t\t}\n\n\t\t\tif (!isBlockOpener && currentHeader != NULL)\n\t\t\t{\n\t\t\t\tfor (size_t n = 0; n < nonParenHeaders->size(); n++)\n\t\t\t\t\tif (currentHeader == (*nonParenHeaders)[n])\n\t\t\t\t\t{\n\t\t\t\t\t\tisBlockOpener = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t}\n\n\t\t\tbracketBlockStateStack->push_back(isBlockOpener);\n\n\t\t\tif (!isBlockOpener)\n\t\t\t{\n\t\t\t\tinStatementIndentStackSizeStack->push_back(inStatementIndentStack->size());\n\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, true);\n\t\t\t\tparenDepth++;\n\t\t\t\tif (i == 0)\n\t\t\t\t\tshouldIndentBrackettedLine = false;\n\t\t\t\tisInEnumTypeID = false;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// this bracket is a block opener...\n\n\t\t\t++lineOpeningBlocksNum;\n\n\t\t\tif (isInClassInitializer || isInEnumTypeID)\n\t\t\t{\n\t\t\t\t// decrease tab count if bracket is broken\n\t\t\t\tif (lineBeginsWithOpenBracket)\n\t\t\t\t{\n\t\t\t\t\tindentCount -= classInitializerIndents;\n\t\t\t\t\t// decrease one more if an empty class\n\t\t\t\t\tif (!headerStack->empty()\n\t\t\t\t\t        && (*headerStack).back() == &AS_CLASS)\n\t\t\t\t\t{\n\t\t\t\t\t\tint nextChar = getNextProgramCharDistance(line, i);\n\t\t\t\t\t\tif ((int) line.length() > nextChar && line[nextChar] == '}')\n\t\t\t\t\t\t\t--indentCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isInObjCInterface)\n\t\t\t{\n\t\t\t\tisInObjCInterface = false;\n\t\t\t\tif (lineBeginsWithOpenBracket)\n\t\t\t\t\t--indentCount;\n\t\t\t}\n\n\t\t\tif (bracketIndent && !namespaceIndent && !headerStack->empty()\n\t\t\t        && (*headerStack).back() == &AS_NAMESPACE)\n\t\t\t{\n\t\t\t\tshouldIndentBrackettedLine = false;\n\t\t\t\t--indentCount;\n\t\t\t}\n\n\t\t\t// an indentable struct is treated like a class in the header stack\n\t\t\tif (!headerStack->empty()\n\t\t\t        && (*headerStack).back() == &AS_STRUCT\n\t\t\t        && isInIndentableStruct)\n\t\t\t\t(*headerStack).back() = &AS_CLASS;\n\n\t\t\tblockParenDepthStack->push_back(parenDepth);\n\t\t\tblockStatementStack->push_back(isInStatement);\n\n\t\t\tif (!inStatementIndentStack->empty())\n\t\t\t{\n\t\t\t\t// completely purge the inStatementIndentStack\n\t\t\t\twhile (!inStatementIndentStack->empty())\n\t\t\t\t\tpopLastInStatementIndent();\n\t\t\t\tif (isInClassInitializer || isInClassHeaderTab)\n\t\t\t\t{\n\t\t\t\t\tif (lineBeginsWithOpenBracket || lineBeginsWithComma)\n\t\t\t\t\t\tspaceIndentCount = 0;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tspaceIndentCount = 0;\n\t\t\t}\n\n\t\t\tblockTabCount += (isInStatement ? 1 : 0);\n\t\t\tif (g_preprocessorCppExternCBracket == 3)\n\t\t\t\t++g_preprocessorCppExternCBracket;\n\t\t\tparenDepth = 0;\n\t\t\tisInClassHeader = false;\n\t\t\tisInClassHeaderTab = false;\n\t\t\tisInClassInitializer = false;\n\t\t\tisInEnumTypeID = false;\n\t\t\tisInStatement = false;\n\t\t\tisInQuestion = false;\n\t\t\tisInLet = false;\n\t\t\tfoundPreCommandHeader = false;\n\t\t\tfoundPreCommandMacro = false;\n\t\t\tisInExternC = false;\n\n\t\t\ttempStacks->push_back(new vector<const string*>);\n\t\t\theaderStack->push_back(&AS_OPEN_BRACKET);\n\t\t\tlastLineHeader = &AS_OPEN_BRACKET;\n\n\t\t\tcontinue;\n\t\t}\t// end '{'\n\n\t\t//check if a header has been reached\n\t\tbool isPotentialHeader = isCharPotentialHeader(line, i);\n\n\t\tif (isPotentialHeader && !squareBracketCount)\n\t\t{\n\t\t\tconst string* newHeader = findHeader(line, i, headers);\n\n\t\t\t// Qt headers may be variables in C++\n\t\t\tif (newHeader == &AS_FOREVER || newHeader == &AS_FOREACH)\n\t\t\t{\n\t\t\t\tif (line.find_first_of(\"=;\", i) != string::npos)\n\t\t\t\t\tnewHeader = NULL;\n\t\t\t}\n\n\t\t\tif (newHeader != NULL)\n\t\t\t{\n\t\t\t\t// if we reached here, then this is a header...\n\t\t\t\tbool isIndentableHeader = true;\n\n\t\t\t\tisInHeader = true;\n\n\t\t\t\tvector<const string*>* lastTempStack;\n\t\t\t\tif (tempStacks->empty())\n\t\t\t\t\tlastTempStack = NULL;\n\t\t\t\telse\n\t\t\t\t\tlastTempStack = tempStacks->back();\n\n\t\t\t\t// if a new block is opened, push a new stack into tempStacks to hold the\n\t\t\t\t// future list of headers in the new block.\n\n\t\t\t\t// take care of the special case: 'else if (...)'\n\t\t\t\tif (newHeader == &AS_IF && lastLineHeader == &AS_ELSE)\n\t\t\t\t{\n\t\t\t\t\theaderStack->pop_back();\n\t\t\t\t}\n\n\t\t\t\t// take care of 'else'\n\t\t\t\telse if (newHeader == &AS_ELSE)\n\t\t\t\t{\n\t\t\t\t\tif (lastTempStack != NULL)\n\t\t\t\t\t{\n\t\t\t\t\t\tint indexOfIf = indexOf(*lastTempStack, &AS_IF);\n\t\t\t\t\t\tif (indexOfIf != -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// recreate the header list in headerStack up to the previous 'if'\n\t\t\t\t\t\t\t// from the temporary snapshot stored in lastTempStack.\n\t\t\t\t\t\t\tint restackSize = lastTempStack->size() - indexOfIf - 1;\n\t\t\t\t\t\t\tfor (int r = 0; r < restackSize; r++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaderStack->push_back(lastTempStack->back());\n\t\t\t\t\t\t\t\tlastTempStack->pop_back();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!closingBracketReached)\n\t\t\t\t\t\t\t\tindentCount += restackSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If the above if is not true, i.e. no 'if' before the 'else',\n\t\t\t\t\t\t * then nothing beautiful will come out of this...\n\t\t\t\t\t\t * I should think about inserting an Exception here to notify the caller of this...\n\t\t\t\t\t\t */\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// check if 'while' closes a previous 'do'\n\t\t\t\telse if (newHeader == &AS_WHILE)\n\t\t\t\t{\n\t\t\t\t\tif (lastTempStack != NULL)\n\t\t\t\t\t{\n\t\t\t\t\t\tint indexOfDo = indexOf(*lastTempStack, &AS_DO);\n\t\t\t\t\t\tif (indexOfDo != -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// recreate the header list in headerStack up to the previous 'do'\n\t\t\t\t\t\t\t// from the temporary snapshot stored in lastTempStack.\n\t\t\t\t\t\t\tint restackSize = lastTempStack->size() - indexOfDo - 1;\n\t\t\t\t\t\t\tfor (int r = 0; r < restackSize; r++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaderStack->push_back(lastTempStack->back());\n\t\t\t\t\t\t\t\tlastTempStack->pop_back();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (!closingBracketReached)\n\t\t\t\t\t\t\t\tindentCount += restackSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// check if 'catch' closes a previous 'try' or 'catch'\n\t\t\t\telse if (newHeader == &AS_CATCH || newHeader == &AS_FINALLY)\n\t\t\t\t{\n\t\t\t\t\tif (lastTempStack != NULL)\n\t\t\t\t\t{\n\t\t\t\t\t\tint indexOfTry = indexOf(*lastTempStack, &AS_TRY);\n\t\t\t\t\t\tif (indexOfTry == -1)\n\t\t\t\t\t\t\tindexOfTry = indexOf(*lastTempStack, &AS_CATCH);\n\t\t\t\t\t\tif (indexOfTry != -1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// recreate the header list in headerStack up to the previous 'try'\n\t\t\t\t\t\t\t// from the temporary snapshot stored in lastTempStack.\n\t\t\t\t\t\t\tint restackSize = lastTempStack->size() - indexOfTry - 1;\n\t\t\t\t\t\t\tfor (int r = 0; r < restackSize; r++)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\theaderStack->push_back(lastTempStack->back());\n\t\t\t\t\t\t\t\tlastTempStack->pop_back();\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (!closingBracketReached)\n\t\t\t\t\t\t\t\tindentCount += restackSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (newHeader == &AS_CASE)\n\t\t\t\t{\n\t\t\t\t\tisInCase = true;\n\t\t\t\t\tif (!haveCaseIndent)\n\t\t\t\t\t{\n\t\t\t\t\t\thaveCaseIndent = true;\n\t\t\t\t\t\tif (!lineBeginsWithOpenBracket)\n\t\t\t\t\t\t\t--indentCount;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (newHeader == &AS_DEFAULT)\n\t\t\t\t{\n\t\t\t\t\tisInCase = true;\n\t\t\t\t\t--indentCount;\n\t\t\t\t}\n\t\t\t\telse if (newHeader == &AS_STATIC\n\t\t\t\t         || newHeader == &AS_SYNCHRONIZED)\n\t\t\t\t{\n\t\t\t\t\tif (!headerStack->empty()\n\t\t\t\t\t        && (headerStack->back() == &AS_STATIC\n\t\t\t\t\t            || headerStack->back() == &AS_SYNCHRONIZED))\n\t\t\t\t\t{\n\t\t\t\t\t\tisIndentableHeader = false;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tisIndentableHeader = false;\n\t\t\t\t\t\tprobationHeader = newHeader;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (newHeader == &AS_TEMPLATE)\n\t\t\t\t{\n\t\t\t\t\tisInTemplate = true;\n\t\t\t\t\tisIndentableHeader = false;\n\t\t\t\t}\n\n\t\t\t\tif (isIndentableHeader)\n\t\t\t\t{\n\t\t\t\t\theaderStack->push_back(newHeader);\n\t\t\t\t\tisInStatement = false;\n\t\t\t\t\tif (indexOf(*nonParenHeaders, newHeader) == -1)\n\t\t\t\t\t{\n\t\t\t\t\t\tisInConditional = true;\n\t\t\t\t\t}\n\t\t\t\t\tlastLineHeader = newHeader;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tisInHeader = false;\n\n\t\t\t\ti += newHeader->length() - 1;\n\n\t\t\t\tcontinue;\n\t\t\t}  // newHeader != NULL\n\n\t\t\tif (findHeader(line, i, preCommandHeaders))\n\t\t\t\tfoundPreCommandHeader = true;\n\n\t\t\t// Objective-C NSException macros are preCommandHeaders\n\t\t\tif (isCStyle() && findKeyword(line, i, AS_NS_DURING))\n\t\t\t\tfoundPreCommandMacro = true;\n\t\t\tif (isCStyle() && findKeyword(line, i, AS_NS_HANDLER))\n\t\t\t\tfoundPreCommandMacro = true;\n\n\t\t\tif (parenDepth == 0 && findKeyword(line, i, AS_ENUM))\n\t\t\t\tisInEnum = true;\n\n\t\t\tif (isSharpStyle() && findKeyword(line, i, AS_LET))\n\t\t\t\tisInLet = true;\n\n\t\t}   // isPotentialHeader\n\n\t\tif (ch == '?')\n\t\t\tisInQuestion = true;\n\n\t\t// special handling of colons\n\t\tif (ch == ':')\n\t\t{\n\t\t\tif (line.length() > i + 1 && line[i + 1] == ':') // look for ::\n\t\t\t{\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (isInQuestion)\n\t\t\t{\n\t\t\t\t// do nothing special\n\t\t\t}\n\t\t\telse if (parenDepth > 0)\n\t\t\t{\n\t\t\t\t// found a 'for' loop or an objective-C statement\n\t\t\t\t// so do nothing special\n\t\t\t}\n\t\t\telse if (isInEnum)\n\t\t\t{\n\t\t\t\t// found an enum with a base-type\n\t\t\t\tisInEnumTypeID = true;\n\t\t\t\tif (i == 0)\n\t\t\t\t\tindentCount += classInitializerIndents;\n\t\t\t}\n\t\t\telse if (isCStyle()\n\t\t\t         && !isInCase\n\t\t\t         && (prevNonSpaceCh == ')' || foundPreCommandHeader))\n\t\t\t{\n\t\t\t\t// found a 'class' c'tor initializer\n\t\t\t\tisInClassInitializer = true;\n\t\t\t\tregisterInStatementIndentColon(line, i, tabIncrementIn);\n\t\t\t\tif (i == 0)\n\t\t\t\t\tindentCount += classInitializerIndents;\n\t\t\t}\n\t\t\telse if (isInClassHeader || isInObjCInterface)\n\t\t\t{\n\t\t\t\t// is in a 'class A : public B' definition\n\t\t\t\tisInClassHeaderTab = true;\n\t\t\t\tregisterInStatementIndentColon(line, i, tabIncrementIn);\n\t\t\t}\n\t\t\telse if (isInAsm || isInAsmOneLine || isInAsmBlock)\n\t\t\t{\n\t\t\t\t// do nothing special\n\t\t\t}\n\t\t\telse if (isDigit(peekNextChar(line, i)))\n\t\t\t{\n\t\t\t\t// found a bit field\n\t\t\t\t// so do nothing special\n\t\t\t}\n\t\t\telse if (isCStyle() && isInClass && prevNonSpaceCh != ')')\n\t\t\t{\n\t\t\t\t// found a 'private:' or 'public:' inside a class definition\n\t\t\t\t--indentCount;\n\t\t\t\tif (modifierIndent)\n\t\t\t\t\tspaceIndentCount += (indentLength / 2);\n\t\t\t}\n\t\t\telse if (isCStyle() && !isInClass\n\t\t\t         && headerStack->size() >= 2\n\t\t\t         && (*headerStack)[headerStack->size() - 2] == &AS_CLASS\n\t\t\t         && (*headerStack)[headerStack->size() - 1] == &AS_OPEN_BRACKET)\n\t\t\t{\n\t\t\t\t// found a 'private:' or 'public:' inside a class definition\n\t\t\t\t// and on the same line as the class opening bracket\n\t\t\t\t// do nothing\n\t\t\t}\n\t\t\telse if (isJavaStyle() && lastLineHeader == &AS_FOR)\n\t\t\t{\n\t\t\t\t// found a java for-each statement\n\t\t\t\t// so do nothing special\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcurrentNonSpaceCh = ';'; // so that brackets after the ':' will appear as block-openers\n\t\t\t\tchar peekedChar = peekNextChar(line, i);\n\t\t\t\tif (isInCase)\n\t\t\t\t{\n\t\t\t\t\tisInCase = false;\n\t\t\t\t\tch = ';'; // from here on, treat char as ';'\n\t\t\t\t}\n\t\t\t\telse if (isCStyle() || (isSharpStyle() && peekedChar == ';'))\n\t\t\t\t{\n\t\t\t\t\t// is in a label (e.g. 'label1:')\n\t\t\t\t\tif (labelIndent)\n\t\t\t\t\t\t--indentCount; // unindent label by one indent\n\t\t\t\t\telse if (!lineBeginsWithOpenBracket)\n\t\t\t\t\t\tindentCount = 0; // completely flush indent to left\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ((ch == ';' || (parenDepth > 0 && ch == ',')) && !inStatementIndentStackSizeStack->empty())\n\t\t\twhile ((int) inStatementIndentStackSizeStack->back() + (parenDepth > 0 ? 1 : 0)\n\t\t\t        < (int) inStatementIndentStack->size())\n\t\t\t\tinStatementIndentStack->pop_back();\n\n\t\telse if (ch == ',' && isInEnum && isNonInStatementArray && !inStatementIndentStack->empty())\n\t\t\tinStatementIndentStack->pop_back();\n\n\t\t// handle commas\n\t\t// previous \"isInStatement\" will be from an assignment operator or class initializer\n\t\tif (ch == ',' && parenDepth == 0 && !isInStatement && !isNonInStatementArray)\n\t\t{\n\t\t\t// is comma at end of line\n\t\t\tsize_t nextChar = line.find_first_not_of(\" \\t\", i + 1);\n\t\t\tif (nextChar != string::npos)\n\t\t\t{\n\t\t\t\tif (line.compare(nextChar, 2, \"//\") == 0\n\t\t\t\t        || line.compare(nextChar, 2, \"/*\") == 0)\n\t\t\t\t\tnextChar = string::npos;\n\t\t\t}\n\t\t\t// register indent\n\t\t\tif (nextChar == string::npos)\n\t\t\t{\n\t\t\t\t// register indent at previous word\n\t\t\t\tif (isJavaStyle() && isInClassHeader)\n\t\t\t\t{\n\t\t\t\t\t// do nothing for now\n\t\t\t\t}\n\t\t\t\t// register indent at second word on the line\n\t\t\t\telse if (!isInTemplate && !isInClassHeaderTab && !isInClassInitializer)\n\t\t\t\t{\n\t\t\t\t\tint prevWord = getInStatementIndentComma(line, i);\n\t\t\t\t\tint inStatementIndent = prevWord + spaceIndentCount + tabIncrementIn;\n\t\t\t\t\tinStatementIndentStack->push_back(inStatementIndent);\n\t\t\t\t\tisInStatement = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// handle comma first initializers\n\t\tif (ch == ',' && parenDepth == 0 && lineBeginsWithComma\n\t\t        && (isInClassInitializer || isInClassHeaderTab))\n\t\t\tspaceIndentCount = 0;\n\n\t\t// handle ends of statements\n\t\tif ((ch == ';' && parenDepth == 0) || ch == '}')\n\t\t{\n\t\t\tif (ch == '}')\n\t\t\t{\n\t\t\t\t// first check if this '}' closes a previous block, or a static array...\n\t\t\t\tif (bracketBlockStateStack->size() > 1)\n\t\t\t\t{\n\t\t\t\t\tbool bracketBlockState = bracketBlockStateStack->back();\n\t\t\t\t\tbracketBlockStateStack->pop_back();\n\t\t\t\t\tif (!bracketBlockState)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!inStatementIndentStackSizeStack->empty())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// this bracket is a static array\n\t\t\t\t\t\t\tpopLastInStatementIndent();\n\t\t\t\t\t\t\tparenDepth--;\n\t\t\t\t\t\t\tif (i == 0)\n\t\t\t\t\t\t\t\tshouldIndentBrackettedLine = false;\n\n\t\t\t\t\t\t\tif (!parenIndentStack->empty())\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tint poppedIndent = parenIndentStack->back();\n\t\t\t\t\t\t\t\tparenIndentStack->pop_back();\n\t\t\t\t\t\t\t\tif (i == 0)\n\t\t\t\t\t\t\t\t\tspaceIndentCount = poppedIndent;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// this bracket is block closer...\n\n\t\t\t\t++lineClosingBlocksNum;\n\n\t\t\t\tif (!inStatementIndentStackSizeStack->empty())\n\t\t\t\t\tpopLastInStatementIndent();\n\n\t\t\t\tif (!blockParenDepthStack->empty())\n\t\t\t\t{\n\t\t\t\t\tparenDepth = blockParenDepthStack->back();\n\t\t\t\t\tblockParenDepthStack->pop_back();\n\t\t\t\t\tisInStatement = blockStatementStack->back();\n\t\t\t\t\tblockStatementStack->pop_back();\n\n\t\t\t\t\tif (isInStatement)\n\t\t\t\t\t\tblockTabCount--;\n\t\t\t\t}\n\n\t\t\t\tclosingBracketReached = true;\n\t\t\t\tif (i == 0)\n\t\t\t\t\tspaceIndentCount = 0;\n\t\t\t\tisInAsmBlock = false;\n\t\t\t\tisInAsm = isInAsmOneLine = isInQuote = false;\t// close these just in case\n\n\t\t\t\tint headerPlace = indexOf(*headerStack, &AS_OPEN_BRACKET);\n\t\t\t\tif (headerPlace != -1)\n\t\t\t\t{\n\t\t\t\t\tconst string* popped = headerStack->back();\n\t\t\t\t\twhile (popped != &AS_OPEN_BRACKET)\n\t\t\t\t\t{\n\t\t\t\t\t\theaderStack->pop_back();\n\t\t\t\t\t\tpopped = headerStack->back();\n\t\t\t\t\t}\n\t\t\t\t\theaderStack->pop_back();\n\n\t\t\t\t\tif (headerStack->empty())\n\t\t\t\t\t\tg_preprocessorCppExternCBracket = 0;\n\n\t\t\t\t\t// do not indent namespace bracket unless namespaces are indented\n\t\t\t\t\tif (!namespaceIndent && !headerStack->empty()\n\t\t\t\t\t        && (*headerStack).back() == &AS_NAMESPACE\n\t\t\t\t\t        && i == 0)\t\t// must be the first bracket on the line\n\t\t\t\t\t\tshouldIndentBrackettedLine = false;\n\n\t\t\t\t\tif (!tempStacks->empty())\n\t\t\t\t\t{\n\t\t\t\t\t\tvector<const string*>* temp = tempStacks->back();\n\t\t\t\t\t\ttempStacks->pop_back();\n\t\t\t\t\t\tdelete temp;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tch = ' '; // needed due to cases such as '}else{', so that headers ('else' in this case) will be identified...\n\t\t\t}\t// ch == '}'\n\n\t\t\t/*\n\t\t\t * Create a temporary snapshot of the current block's header-list in the\n\t\t\t * uppermost inner stack in tempStacks, and clear the headerStack up to\n\t\t\t * the beginning of the block.\n\t\t\t * Thus, the next future statement will think it comes one indent past\n\t\t\t * the block's '{' unless it specifically checks for a companion-header\n\t\t\t * (such as a previous 'if' for an 'else' header) within the tempStacks,\n\t\t\t * and recreates the temporary snapshot by manipulating the tempStacks.\n\t\t\t */\n\t\t\tif (!tempStacks->back()->empty())\n\t\t\t\twhile (!tempStacks->back()->empty())\n\t\t\t\t\ttempStacks->back()->pop_back();\n\t\t\twhile (!headerStack->empty() && headerStack->back() != &AS_OPEN_BRACKET)\n\t\t\t{\n\t\t\t\ttempStacks->back()->push_back(headerStack->back());\n\t\t\t\theaderStack->pop_back();\n\t\t\t}\n\n\t\t\tif (parenDepth == 0 && ch == ';')\n\t\t\t\tisInStatement = false;\n\t\t\tif (isInObjCMethodDefinition)\n\t\t\t\tisImmediatelyPostObjCMethodDefinition = true;\n\n\t\t\tpreviousLastLineHeader = NULL;\n\t\t\tisInClassHeader = false;\t\t// for 'friend' class\n\t\t\tisInEnum = false;\n\t\t\tisInQuestion = false;\n\t\t\tisInObjCInterface = false;\n\t\t\tfoundPreCommandHeader = false;\n\t\t\tfoundPreCommandMacro = false;\n\t\t\tsquareBracketCount = 0;\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isPotentialHeader)\n\t\t{\n\t\t\t// check for preBlockStatements in C/C++ ONLY if not within parentheses\n\t\t\t// (otherwise 'struct XXX' statements would be wrongly interpreted...)\n\t\t\tif (!isInTemplate && !(isCStyle() && parenDepth > 0))\n\t\t\t{\n\t\t\t\tconst string* newHeader = findHeader(line, i, preBlockStatements);\n\t\t\t\tif (newHeader != NULL\n\t\t\t\t        && !(isCStyle() && newHeader == &AS_CLASS && isInEnum))\t// is not 'enum class'\n\t\t\t\t{\n\t\t\t\t\tif (!isSharpStyle())\n\t\t\t\t\t\theaderStack->push_back(newHeader);\n\t\t\t\t\t// do not need 'where' in the headerStack\n\t\t\t\t\t// do not need second 'class' statement in a row\n\t\t\t\t\telse if (!(newHeader == &AS_WHERE\n\t\t\t\t\t           || (newHeader == &AS_CLASS\n\t\t\t\t\t               && !headerStack->empty()\n\t\t\t\t\t               && headerStack->back() == &AS_CLASS)))\n\t\t\t\t\t\theaderStack->push_back(newHeader);\n\n\t\t\t\t\tif (!headerStack->empty())\n\t\t\t\t\t{\n\t\t\t\t\t\tif ((*headerStack).back() == &AS_CLASS\n\t\t\t\t\t\t        || (*headerStack).back() == &AS_STRUCT\n\t\t\t\t\t\t        || (*headerStack).back() == &AS_INTERFACE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tisInClassHeader = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ((*headerStack).back() == &AS_NAMESPACE)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// remove inStatementIndent from namespace\n\t\t\t\t\t\t\tif (!inStatementIndentStack->empty())\n\t\t\t\t\t\t\t\tinStatementIndentStack->pop_back();\n\t\t\t\t\t\t\tisInStatement = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\ti += newHeader->length() - 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst string* foundIndentableHeader = findHeader(line, i, indentableHeaders);\n\n\t\t\tif (foundIndentableHeader != NULL)\n\t\t\t{\n\t\t\t\t// must bypass the header before registering the in statement\n\t\t\t\ti += foundIndentableHeader->length() - 1;\n\t\t\t\tif (!isInOperator && !isInTemplate && !isNonInStatementArray)\n\t\t\t\t{\n\t\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, false);\n\t\t\t\t\tisInStatement = true;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isCStyle() && findKeyword(line, i, AS_OPERATOR))\n\t\t\t\tisInOperator = true;\n\n\t\t\tif (g_preprocessorCppExternCBracket == 1 && findKeyword(line, i, AS_EXTERN))\n\t\t\t\t++g_preprocessorCppExternCBracket;\n\n\t\t\tif (g_preprocessorCppExternCBracket == 3)\t// extern \"C\" is not followed by a '{'\n\t\t\t\tg_preprocessorCppExternCBracket = 0;\n\n\t\t\t// \"new\" operator is a pointer, not a calculation\n\t\t\tif (findKeyword(line, i, AS_NEW))\n\t\t\t{\n\t\t\t\tif (isInStatement && !inStatementIndentStack->empty() && prevNonSpaceCh == '=' )\n\t\t\t\t\tinStatementIndentStack->back() = 0;\n\t\t\t}\n\n\t\t\tif (isCStyle())\n\t\t\t{\n\t\t\t\tif (findKeyword(line, i, AS_ASM)\n\t\t\t\t        || findKeyword(line, i, AS__ASM__))\n\t\t\t\t{\n\t\t\t\t\tisInAsm = true;\n\t\t\t\t}\n\t\t\t\telse if (findKeyword(line, i, AS_MS_ASM)\t\t// microsoft specific\n\t\t\t\t         || findKeyword(line, i, AS_MS__ASM))\n\t\t\t\t{\n\t\t\t\t\tint index = 4;\n\t\t\t\t\tif (peekNextChar(line, i) == '_')\t\t// check for __asm\n\t\t\t\t\t\tindex = 5;\n\n\t\t\t\t\tchar peekedChar = ASBase::peekNextChar(line, i + index);\n\t\t\t\t\tif (peekedChar == '{' || peekedChar == ' ')\n\t\t\t\t\t\tisInAsmBlock = true;\n\t\t\t\t\telse\n\t\t\t\t\t\tisInAsmOneLine = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// bypass the entire name for all others\n\t\t\tstring name = getCurrentWord(line, i);\n\t\t\ti += name.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle Objective-C statements\n\n\t\tif (ch == '@'\n\t\t        && isCharPotentialHeader(line, i + 1))\n\t\t{\n\t\t\tstring curWord = getCurrentWord(line, i + 1);\n\t\t\tif (curWord == AS_INTERFACE\t&& headerStack->empty())\n\t\t\t{\n\t\t\t\tisInObjCInterface = true;\n\t\t\t\tstring name = '@' + curWord;\n\t\t\t\ti += name.length() - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (curWord == AS_PUBLIC\n\t\t\t         || curWord == AS_PRIVATE\n\t\t\t         || curWord == AS_PROTECTED)\n\t\t\t{\n\t\t\t\t--indentCount;\n\t\t\t\tif (modifierIndent)\n\t\t\t\t\tspaceIndentCount += (indentLength / 2);\n\t\t\t\tstring name = '@' + curWord;\n\t\t\t\ti += name.length() - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (curWord == AS_END)\n\t\t\t{\n\t\t\t\tpopLastInStatementIndent();\n\t\t\t\tspaceIndentCount = 0;\n\t\t\t\tif (isInObjCInterface)\n\t\t\t\t\t--indentCount;\n\t\t\t\tisInObjCInterface = false;\n\t\t\t\tisInObjCMethodDefinition = false;\n\t\t\t\tstring name = '@' + curWord;\n\t\t\t\ti += name.length() - 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\telse if ((ch == '-' || ch == '+')\n\t\t         && peekNextChar(line, i) == '('\n\t\t         && headerStack->empty()\n\t\t         && line.find_first_not_of(\" \\t\") == i)\n\t\t{\n\t\t\tif (isInObjCInterface)\n\t\t\t\t--indentCount;\n\t\t\tisInObjCInterface = false;\n\t\t\tisInObjCMethodDefinition = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Handle operators\n\n\t\tbool isPotentialOperator = isCharPotentialOperator(ch);\n\n\t\tif (isPotentialOperator)\n\t\t{\n\t\t\t// Check if an operator has been reached.\n\t\t\tconst string* foundAssignmentOp = findOperator(line, i, assignmentOperators);\n\t\t\tconst string* foundNonAssignmentOp = findOperator(line, i, nonAssignmentOperators);\n\n\t\t\tif (foundNonAssignmentOp == &AS_LAMBDA)\n\t\t\t\tfoundPreCommandHeader = true;\n\n\t\t\tif (isInTemplate && foundNonAssignmentOp == &AS_GR_GR)\n\t\t\t\tfoundNonAssignmentOp = NULL;\n\n\t\t\t// Since findHeader's boundary checking was not used above, it is possible\n\t\t\t// that both an assignment op and a non-assignment op where found,\n\t\t\t// e.g. '>>' and '>>='. If this is the case, treat the LONGER one as the\n\t\t\t// found operator.\n\t\t\tif (foundAssignmentOp != NULL && foundNonAssignmentOp != NULL)\n\t\t\t{\n\t\t\t\tif (foundAssignmentOp->length() < foundNonAssignmentOp->length())\n\t\t\t\t\tfoundAssignmentOp = NULL;\n\t\t\t\telse\n\t\t\t\t\tfoundNonAssignmentOp = NULL;\n\t\t\t}\n\n\t\t\tif (foundNonAssignmentOp != NULL)\n\t\t\t{\n\t\t\t\tif (foundNonAssignmentOp->length() > 1)\n\t\t\t\t\ti += foundNonAssignmentOp->length() - 1;\n\n\t\t\t\t// For C++ input/output, operator<< and >> should be\n\t\t\t\t// aligned, if we are not in a statement already and\n\t\t\t\t// also not in the \"operator<<(...)\" header line\n\t\t\t\tif (!isInOperator\n\t\t\t\t        && inStatementIndentStack->empty()\n\t\t\t\t        && isCStyle()\n\t\t\t\t        && (foundNonAssignmentOp == &AS_GR_GR\n\t\t\t\t            || foundNonAssignmentOp == &AS_LS_LS))\n\t\t\t\t{\n\t\t\t\t\t// this will be true if the line begins with the operator\n\t\t\t\t\tif (i < 2 && spaceIndentCount == 0)\n\t\t\t\t\t\tspaceIndentCount += 2 * indentLength;\n\t\t\t\t\t// align to the beginning column of the operator\n\t\t\t\t\tregisterInStatementIndent(line, i - foundNonAssignmentOp->length(), spaceIndentCount, tabIncrementIn, 0, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\telse if (foundAssignmentOp != NULL)\n\t\t\t{\n\t\t\t\tfoundPreCommandHeader = false;\t\t// clears this for array assignments\n\t\t\t\tfoundPreCommandMacro = false;\n\n\t\t\t\tif (foundAssignmentOp->length() > 1)\n\t\t\t\t\ti += foundAssignmentOp->length() - 1;\n\n\t\t\t\tif (!isInOperator && !isInTemplate && (!isNonInStatementArray || isInEnum))\n\t\t\t\t{\n\t\t\t\t\t// if multiple assignments, align on the previous word\n\t\t\t\t\tif (foundAssignmentOp == &AS_ASSIGN\n\t\t\t\t\t        && prevNonSpaceCh != ']'\t\t// an array\n\t\t\t\t\t        && statementEndsWithComma(line, i))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (!haveAssignmentThisLine)\t\t// only one assignment indent per line\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t// register indent at previous word\n\t\t\t\t\t\t\thaveAssignmentThisLine = true;\n\t\t\t\t\t\t\tint prevWordIndex = getInStatementIndentAssign(line, i);\n\t\t\t\t\t\t\tint inStatementIndent = prevWordIndex + spaceIndentCount + tabIncrementIn;\n\t\t\t\t\t\t\tinStatementIndentStack->push_back(inStatementIndent);\n\t\t\t\t\t\t\tisInStatement = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// don't indent an assignment if 'let'\n\t\t\t\t\telse if (isInLet)\n\t\t\t\t\t{\n\t\t\t\t\t\tisInLet = false;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tif (i == 0 && spaceIndentCount == 0)\n\t\t\t\t\t\t\tspaceIndentCount += indentLength;\n\t\t\t\t\t\tregisterInStatementIndent(line, i, spaceIndentCount, tabIncrementIn, 0, false);\n\t\t\t\t\t\tisInStatement = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\t// end of for loop * end of for loop * end of for loop * end of for loop * end of for loop *\n}\n\n\n}   // end namespace astyle\n"
  },
  {
    "path": "old/3rdpart/astyle/ASEnhancer.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASEnhancer.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#include \"astyle.h\"\n\n\nnamespace astyle {\n\n/**\n * ASEnhancer constructor\n */\nASEnhancer::ASEnhancer()\n{\n}\n\n/**\n * Destructor of ASEnhancer\n */\nASEnhancer::~ASEnhancer()\n{\n}\n\n/**\n * initialize the ASEnhancer.\n *\n * init() is called each time an ASFormatter object is initialized.\n */\nvoid ASEnhancer::init(int  _fileType,\n                      int  _indentLength,\n                      int  _tabLength,\n                      bool _useTabs,\n                      bool _forceTab,\n                      bool _namespaceIndent,\n                      bool _caseIndent,\n                      bool _preprocBlockIndent,\n                      bool _preprocDefineIndent,\n                      bool _emptyLineFill,\n                      vector<const pair<const string, const string>* >* _indentableMacros)\n{\n\t// formatting variables from ASFormatter and ASBeautifier\n\tASBase::init(_fileType);\n\tindentLength = _indentLength;\n\ttabLength = _tabLength;\n\tuseTabs = _useTabs;\n\tforceTab = _forceTab;\n\tnamespaceIndent = _namespaceIndent;\n\tcaseIndent = _caseIndent;\n\tpreprocBlockIndent = _preprocBlockIndent;\n\tpreprocDefineIndent = _preprocDefineIndent;\n\temptyLineFill = _emptyLineFill;\n\tindentableMacros = _indentableMacros;\n\tquoteChar = '\\'';\n\n\t// unindent variables\n\tlineNumber = 0;\n\tbracketCount = 0;\n\tisInComment = false;\n\tisInQuote = false;\n\tswitchDepth = 0;\n\teventPreprocDepth = 0;\n\tlookingForCaseBracket = false;\n\tunindentNextLine = false;\n\tshouldUnindentLine = false;\n\tshouldUnindentComment = false;\n\n\t// switch struct and vector\n\tsw.switchBracketCount = 0;\n\tsw.unindentDepth = 0;\n\tsw.unindentCase = false;\n\tswitchStack.clear();\n\n\t// other variables\n\tnextLineIsEventIndent = false;\n\tisInEventTable = false;\n\tnextLineIsDeclareIndent = false;\n\tisInDeclareSection = false;\n}\n\n/**\n * additional formatting for line of source code.\n * every line of source code in a source code file should be sent\n *     one after the other to this function.\n * indents event tables\n * unindents the case blocks\n *\n * @param line       the original formatted line will be updated if necessary.\n */\nvoid ASEnhancer::enhance(string &line, bool isInNamespace, bool isInPreprocessor, bool isInSQL)\n{\n\tshouldUnindentLine = true;\n\tshouldUnindentComment = false;\n\tlineNumber++;\n\n\t// check for beginning of event table\n\tif (nextLineIsEventIndent)\n\t{\n\t\tisInEventTable = true;\n\t\tnextLineIsEventIndent = false;\n\t}\n\n\t// check for beginning of SQL declare section\n\tif (nextLineIsDeclareIndent)\n\t{\n\t\tisInDeclareSection = true;\n\t\tnextLineIsDeclareIndent = false;\n\t}\n\n\tif (line.length() == 0\n\t        && !isInEventTable\n\t        && !isInDeclareSection\n\t        && !emptyLineFill)\n\t\treturn;\n\n\t// test for unindent on attached brackets\n\tif (unindentNextLine)\n\t{\n\t\tsw.unindentDepth++;\n\t\tsw.unindentCase = true;\n\t\tunindentNextLine = false;\n\t}\n\n\t// parse characters in the current line\n\tparseCurrentLine(line, isInPreprocessor, isInSQL);\n\n\t// check for SQL indentable lines\n\tif (isInDeclareSection)\n\t{\n\t\tsize_t firstText = line.find_first_not_of(\" \\t\");\n\t\tif (firstText == string::npos || line[firstText] != '#')\n\t\t\tindentLine(line, 1);\n\t}\n\n\t// check for event table indentable lines\n\tif (isInEventTable\n\t        && (eventPreprocDepth == 0\n\t            || (namespaceIndent && isInNamespace)))\n\t{\n\t\tsize_t firstText = line.find_first_not_of(\" \\t\");\n\t\tif (firstText == string::npos || line[firstText] != '#')\n\t\t\tindentLine(line, 1);\n\t}\n\n\tif (shouldUnindentComment && sw.unindentDepth > 0)\n\t\tunindentLine(line, sw.unindentDepth - 1);\n\telse if (shouldUnindentLine && sw.unindentDepth > 0)\n\t\tunindentLine(line, sw.unindentDepth);\n}\n\n/**\n * convert a force-tab indent to spaces\n *\n * @param line          a reference to the line that will be converted.\n */\nvoid ASEnhancer::convertForceTabIndentToSpaces(string &line) const\n{\n\t// replace tab indents with spaces\n\tfor (size_t i = 0; i < line.length(); i++)\n\t{\n\t\tif (!isWhiteSpace(line[i]))\n\t\t\tbreak;\n\t\tif (line[i] == '\\t')\n\t\t{\n\t\t\tline.erase(i, 1);\n\t\t\tline.insert(i, tabLength, ' ');\n\t\t\ti += tabLength - 1;\n\t\t}\n\t}\n}\n\n/**\n * convert a space indent to force-tab\n *\n * @param line          a reference to the line that will be converted.\n */\nvoid ASEnhancer::convertSpaceIndentToForceTab(string &line) const\n{\n\tassert(tabLength > 0);\n\n\t// replace leading spaces with tab indents\n\tsize_t newSpaceIndentLength = line.find_first_not_of(\" \\t\");\n\tsize_t tabCount = newSpaceIndentLength / tabLength;\t\t// truncate extra spaces\n\tline.erase(0U, tabCount * tabLength);\n\tline.insert(0U, tabCount, '\\t');\n}\n\n/**\n * find the colon following a 'case' statement\n *\n * @param line          a reference to the line.\n * @param caseIndex     the line index of the case statement.\n * @return              the line index of the colon.\n */\nsize_t ASEnhancer::findCaseColon(string &line, size_t caseIndex) const\n{\n\tsize_t i = caseIndex;\n\tbool isInQuote_ = false;\n\tchar quoteChar_ = ' ';\n\tfor (; i < line.length(); i++)\n\t{\n\t\tif (isInQuote_)\n\t\t{\n\t\t\tif (line[i] == '\\\\')\n\t\t\t{\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (line[i] == quoteChar_)          // check ending quote\n\t\t\t{\n\t\t\t\tisInQuote_ = false;\n\t\t\t\tquoteChar_ = ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tcontinue;                           // must close quote before continuing\n\t\t\t}\n\t\t}\n\t\tif (line[i] == '\\'' || line[i] == '\\\"')\t\t// check opening quote\n\t\t{\n\t\t\tisInQuote_ = true;\n\t\t\tquoteChar_ = line[i];\n\t\t\tcontinue;\n\t\t}\n\t\tif (line[i] == ':')\n\t\t{\n\t\t\tif ((i + 1 < line.length()) && (line[i + 1] == ':'))\n\t\t\t\ti++;                                // bypass scope resolution operator\n\t\t\telse\n\t\t\t\tbreak;                              // found it\n\t\t}\n\t}\n\treturn i;\n}\n\n/**\n* indent a line by a given number of tabsets\n *    by inserting leading whitespace to the line argument.\n *\n * @param line          a reference to the line to indent.\n * @param indent        the number of tabsets to insert.\n * @return              the number of characters inserted.\n */\nint ASEnhancer::indentLine(string &line, int indent) const\n{\n\tif (line.length() == 0\n\t        && !emptyLineFill)\n\t\treturn 0;\n\n\tsize_t charsToInsert;\n\n\tif (forceTab && indentLength != tabLength)\n\t{\n\t\t// replace tab indents with spaces\n\t\tconvertForceTabIndentToSpaces(line);\n\t\t// insert the space indents\n\t\tcharsToInsert = indent * indentLength;\n\t\tline.insert(0U, charsToInsert, ' ');\n\t\t// replace leading spaces with tab indents\n\t\tconvertSpaceIndentToForceTab(line);\n\t}\n\telse if (useTabs)\n\t{\n\t\tcharsToInsert = indent;\n\t\tline.insert(0U, charsToInsert, '\\t');\n\t}\n\telse // spaces\n\t{\n\t\tcharsToInsert = indent * indentLength;\n\t\tline.insert(0U, charsToInsert, ' ');\n\t}\n\n\treturn charsToInsert;\n}\n\n/**\n * check for SQL \"BEGIN DECLARE SECTION\".\n * must compare case insensitive and allow any spacing between words.\n *\n * @param line          a reference to the line to indent.\n * @param index         the current line index.\n * @return              true if a hit.\n */\nbool ASEnhancer::isBeginDeclareSectionSQL(string &line, size_t index) const\n{\n\tstring word;\n\tsize_t hits = 0;\n\tsize_t i;\n\tfor (i = index; i < line.length(); i++)\n\t{\n\t\ti = line.find_first_not_of(\" \\t\", i);\n\t\tif (i == string::npos)\n\t\t\treturn false;\n\t\tif (line[i] == ';')\n\t\t\tbreak;\n\t\tif (!isCharPotentialHeader(line, i))\n\t\t\tcontinue;\n\t\tword = getCurrentWord(line, i);\n\t\tfor (size_t j = 0; j < word.length(); j++)\n\t\t\tword[j] = (char) toupper(word[j]);\n\t\tif (word == \"EXEC\" || word == \"SQL\")\n\t\t{\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word == \"DECLARE\" || word == \"SECTION\")\n\t\t{\n\t\t\thits++;\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word == \"BEGIN\")\n\t\t{\n\t\t\thits++;\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\treturn false;\n\t}\n\tif (hits == 3)\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * check for SQL \"END DECLARE SECTION\".\n * must compare case insensitive and allow any spacing between words.\n *\n * @param line          a reference to the line to indent.\n * @param index         the current line index.\n * @return              true if a hit.\n */\nbool ASEnhancer::isEndDeclareSectionSQL(string &line, size_t index) const\n{\n\tstring word;\n\tsize_t hits = 0;\n\tsize_t i;\n\tfor (i = index; i < line.length(); i++)\n\t{\n\t\ti = line.find_first_not_of(\" \\t\", i);\n\t\tif (i == string::npos)\n\t\t\treturn false;\n\t\tif (line[i] == ';')\n\t\t\tbreak;\n\t\tif (!isCharPotentialHeader(line, i))\n\t\t\tcontinue;\n\t\tword = getCurrentWord(line, i);\n\t\tfor (size_t j = 0; j < word.length(); j++)\n\t\t\tword[j] = (char) toupper(word[j]);\n\t\tif (word == \"EXEC\" || word == \"SQL\")\n\t\t{\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word == \"DECLARE\" || word == \"SECTION\")\n\t\t{\n\t\t\thits++;\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (word == \"END\")\n\t\t{\n\t\t\thits++;\n\t\t\ti += word.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\treturn false;\n\t}\n\tif (hits == 3)\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * check if a one-line bracket has been reached,\n * i.e. if the currently reached '{' character is closed\n * with a complimentary '}' elsewhere on the current line,\n *.\n * @return     false = one-line bracket has not been reached.\n *             true  = one-line bracket has been reached.\n */\nbool ASEnhancer::isOneLineBlockReached(string &line, int startChar) const\n{\n\tassert(line[startChar] == '{');\n\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tint _bracketCount = 1;\n\tint lineLength = line.length();\n\tchar quoteChar_ = ' ';\n\tchar ch = ' ';\n\n\tfor (int i = startChar + 1; i < lineLength; ++i)\n\t{\n\t\tch = line[i];\n\n\t\tif (isInComment_)\n\t\t{\n\t\t\tif (line.compare(i, 2, \"*/\") == 0)\n\t\t\t{\n\t\t\t\tisInComment_ = false;\n\t\t\t\t++i;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\\\\')\n\t\t{\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInQuote_)\n\t\t{\n\t\t\tif (ch == quoteChar_)\n\t\t\t\tisInQuote_ = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\"' || ch == '\\'')\n\t\t{\n\t\t\tisInQuote_ = true;\n\t\t\tquoteChar_ = ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (line.compare(i, 2, \"//\") == 0)\n\t\t\tbreak;\n\n\t\tif (line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\tisInComment_ = true;\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '{')\n\t\t\t++_bracketCount;\n\t\telse if (ch == '}')\n\t\t\t--_bracketCount;\n\n\t\tif (_bracketCount == 0)\n\t\t\treturn true;\n\t}\n\n\treturn false;\n}\n\n/**\n * parse characters in the current line to determine if an indent\n * or unindent is needed.\n */\nvoid ASEnhancer::parseCurrentLine(string &line, bool isInPreprocessor, bool isInSQL)\n{\n\tbool isSpecialChar = false;\t\t\t// is a backslash escape character\n\n\tfor (size_t i = 0; i < line.length(); i++)\n\t{\n\t\tchar ch = line[i];\n\n\t\t// bypass whitespace\n\t\tif (isWhiteSpace(ch))\n\t\t\tcontinue;\n\n\t\t// handle special characters (i.e. backslash+character such as \\n, \\t, ...)\n\t\tif (isSpecialChar)\n\t\t{\n\t\t\tisSpecialChar = false;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!(isInComment) && line.compare(i, 2, \"\\\\\\\\\") == 0)\n\t\t{\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (!(isInComment) && ch == '\\\\')\n\t\t{\n\t\t\tisSpecialChar = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle quotes (such as 'x' and \"Hello Dolly\")\n\t\tif (!isInComment && (ch == '\"' || ch == '\\''))\n\t\t{\n\t\t\tif (!isInQuote)\n\t\t\t{\n\t\t\t\tquoteChar = ch;\n\t\t\t\tisInQuote = true;\n\t\t\t}\n\t\t\telse if (quoteChar == ch)\n\t\t\t{\n\t\t\t\tisInQuote = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (isInQuote)\n\t\t\tcontinue;\n\n\t\t// handle comments\n\n\t\tif (!(isInComment) && line.compare(i, 2, \"//\") == 0)\n\t\t{\n\t\t\t// check for windows line markers\n\t\t\tif (line.compare(i + 2, 1, \"\\xf0\") > 0)\n\t\t\t\tlineNumber--;\n\t\t\t// unindent if not in case brackets\n\t\t\tif (line.find_first_not_of(\" \\t\") == i\n\t\t\t        && sw.switchBracketCount == 1\n\t\t\t        && sw.unindentCase)\n\t\t\t\tshouldUnindentComment = true;\n\t\t\tbreak;                 // finished with the line\n\t\t}\n\t\telse if (!(isInComment) && line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\t// unindent if not in case brackets\n\t\t\tif (sw.switchBracketCount == 1 && sw.unindentCase)\n\t\t\t\tshouldUnindentComment = true;\n\t\t\tisInComment = true;\n\t\t\tsize_t commentEnd = line.find(\"*/\", i);\n\t\t\tif (commentEnd == string::npos)\n\t\t\t\ti = line.length() - 1;\n\t\t\telse\n\t\t\t\ti = commentEnd - 1;\n\t\t\tcontinue;\n\t\t}\n\t\telse if ((isInComment) && line.compare(i, 2, \"*/\") == 0)\n\t\t{\n\t\t\t// unindent if not in case brackets\n\t\t\tif (sw.switchBracketCount == 1 && sw.unindentCase)\n\t\t\t\tshouldUnindentComment = true;\n\t\t\tisInComment = false;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInComment)\n\t\t{\n\t\t\t// unindent if not in case brackets\n\t\t\tif (sw.switchBracketCount == 1 && sw.unindentCase)\n\t\t\t\tshouldUnindentComment = true;\n\t\t\tsize_t commentEnd = line.find(\"*/\", i);\n\t\t\tif (commentEnd == string::npos)\n\t\t\t\ti = line.length() - 1;\n\t\t\telse\n\t\t\t\ti = commentEnd - 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if we have reached this far then we are NOT in a comment or string of special characters\n\n\t\tif (line[i] == '{')\n\t\t\tbracketCount++;\n\n\t\tif (line[i] == '}')\n\t\t\tbracketCount--;\n\n\t\t// check for preprocessor within an event table\n\t\tif (isInEventTable && line[i] == '#' && preprocBlockIndent)\n\t\t{\n\t\t\tstring preproc;\n\t\t\tpreproc = line.substr(i + 1);\n\t\t\tif (preproc.substr(0, 2) == \"if\") // #if, #ifdef, #ifndef)\n\t\t\t\teventPreprocDepth += 1;\n\t\t\tif (preproc.substr(0, 5) == \"endif\" && eventPreprocDepth > 0)\n\t\t\t\teventPreprocDepth -= 1;\n\t\t}\n\n\t\tbool isPotentialKeyword = isCharPotentialHeader(line, i);\n\n\t\t// ----------------  wxWidgets and MFC macros  ----------------------------------\n\n\t\tif (isPotentialKeyword)\n\t\t{\n\t\t\tfor (size_t j = 0; j < indentableMacros->size(); j++)\n\t\t\t{\n\t\t\t\t// 'first' is the beginning macro\n\t\t\t\tif (findKeyword(line, i, indentableMacros->at(j)->first))\n\t\t\t\t{\n\t\t\t\t\tnextLineIsEventIndent = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (size_t j = 0; j < indentableMacros->size(); j++)\n\t\t\t{\n\t\t\t\t// 'second' is the ending macro\n\t\t\t\tif (findKeyword(line, i, indentableMacros->at(j)->second))\n\t\t\t\t{\n\t\t\t\t\tisInEventTable = false;\n\t\t\t\t\teventPreprocDepth = 0;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// ----------------  process SQL  -----------------------------------------------\n\n\t\tif (isInSQL)\n\t\t{\n\t\t\tif (isBeginDeclareSectionSQL(line, i))\n\t\t\t\tnextLineIsDeclareIndent = true;\n\t\t\tif (isEndDeclareSectionSQL(line, i))\n\t\t\t\tisInDeclareSection = false;\n\t\t\tbreak;\n\t\t}\n\n\t\t// ----------------  process switch statements  ---------------------------------\n\n\t\tif (isPotentialKeyword && findKeyword(line, i, \"switch\"))\n\t\t{\n\t\t\tswitchDepth++;\n\t\t\tswitchStack.push_back(sw);                      // save current variables\n\t\t\tsw.switchBracketCount = 0;\n\t\t\tsw.unindentCase = false;                        // don't clear case until end of switch\n\t\t\ti += 5;                                         // bypass switch statement\n\t\t\tcontinue;\n\t\t}\n\n\t\t// just want unindented case statements from this point\n\n\t\tif (caseIndent\n\t\t        || switchDepth == 0\n\t\t        || (isInPreprocessor && !preprocDefineIndent))\n\t\t{\n\t\t\t// bypass the entire word\n\t\t\tif (isPotentialKeyword)\n\t\t\t{\n\t\t\t\tstring name = getCurrentWord(line, i);\n\t\t\t\ti += name.length() - 1;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\ti = processSwitchBlock(line, i);\n\n\t}   // end of for loop * end of for loop * end of for loop * end of for loop\n}\n\n/**\n * process the character at the current index in a switch block.\n *\n * @param line          a reference to the line to indent.\n * @param index         the current line index.\n * @return              the new line index.\n */\nsize_t ASEnhancer::processSwitchBlock(string &line, size_t index)\n{\n\tsize_t i = index;\n\tbool isPotentialKeyword = isCharPotentialHeader(line, i);\n\n\tif (line[i] == '{')\n\t{\n\t\tsw.switchBracketCount++;\n\t\tif (lookingForCaseBracket)                      // if 1st after case statement\n\t\t{\n\t\t\tsw.unindentCase = true;                     // unindenting this case\n\t\t\tsw.unindentDepth++;\n\t\t\tlookingForCaseBracket = false;              // not looking now\n\t\t}\n\t\treturn i;\n\t}\n\tlookingForCaseBracket = false;                      // no opening bracket, don't indent\n\n\tif (line[i] == '}')\n\t{\n\t\tsw.switchBracketCount--;\n\t\tassert(sw.switchBracketCount <= bracketCount);\n\t\tif (sw.switchBracketCount == 0)                 // if end of switch statement\n\t\t{\n\t\t\tint lineUnindent = sw.unindentDepth;\n\t\t\tif (line.find_first_not_of(\" \\t\") == i\n\t\t\t        && !switchStack.empty())\n\t\t\t\tlineUnindent = switchStack[switchStack.size() - 1].unindentDepth;\n\t\t\tif (shouldUnindentLine)\n\t\t\t{\n\t\t\t\tif (lineUnindent > 0)\n\t\t\t\t\ti -= unindentLine(line, lineUnindent);\n\t\t\t\tshouldUnindentLine = false;\n\t\t\t}\n\t\t\tswitchDepth--;\n\t\t\tsw = switchStack.back();\n\t\t\tswitchStack.pop_back();\n\t\t}\n\t\treturn i;\n\t}\n\n\tif (isPotentialKeyword\n\t        && (findKeyword(line, i, \"case\") || findKeyword(line, i, \"default\")))\n\t{\n\t\tif (sw.unindentCase)\t\t\t\t\t// if unindented last case\n\t\t{\n\t\t\tsw.unindentCase = false;\t\t\t// stop unindenting previous case\n\t\t\tsw.unindentDepth--;\n\t\t}\n\n\t\ti = findCaseColon(line, i);\n\n\t\ti++;\n\t\tfor (; i < line.length(); i++)\t\t\t// bypass whitespace\n\t\t{\n\t\t\tif (!isWhiteSpace(line[i]))\n\t\t\t\tbreak;\n\t\t}\n\t\tif (i < line.length())\n\t\t{\n\t\t\tif (line[i] == '{')\n\t\t\t{\n\t\t\t\tbracketCount++;\n\t\t\t\tsw.switchBracketCount++;\n\t\t\t\tif (!isOneLineBlockReached(line, i))\n\t\t\t\t\tunindentNextLine = true;\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\tlookingForCaseBracket = true;\n\t\ti--;\t\t\t\t\t\t\t\t\t// need to process this char\n\t\treturn i;\n\t}\n\tif (isPotentialKeyword)\n\t{\n\t\tstring name = getCurrentWord(line, i);          // bypass the entire name\n\t\ti += name.length() - 1;\n\t}\n\treturn i;\n}\n\n/**\n * unindent a line by a given number of tabsets\n *    by erasing the leading whitespace from the line argument.\n *\n * @param line          a reference to the line to unindent.\n * @param unindent      the number of tabsets to erase.\n * @return              the number of characters erased.\n */\nint ASEnhancer::unindentLine(string &line, int unindent) const\n{\n\tsize_t whitespace = line.find_first_not_of(\" \\t\");\n\n\tif (whitespace == string::npos)         // if line is blank\n\t\twhitespace = line.length();         // must remove padding, if any\n\n\tif (whitespace == 0)\n\t\treturn 0;\n\n\tsize_t charsToErase = 0;\n\n\tif (forceTab && indentLength != tabLength)\n\t{\n\t\t// replace tab indents with spaces\n\t\tconvertForceTabIndentToSpaces(line);\n\t\t// remove the space indents\n\t\tsize_t spaceIndentLength = line.find_first_not_of(\" \\t\");\n\t\tcharsToErase = unindent * indentLength;\n\t\tif (charsToErase <= spaceIndentLength)\n\t\t\tline.erase(0, charsToErase);\n\t\telse\n\t\t\tcharsToErase = 0;\n\t\t// replace leading spaces with tab indents\n\t\tconvertSpaceIndentToForceTab(line);\n\t}\n\telse if (useTabs)\n\t{\n\t\tcharsToErase = unindent;\n\t\tif (charsToErase <= whitespace)\n\t\t\tline.erase(0, charsToErase);\n\t\telse\n\t\t\tcharsToErase = 0;\n\t}\n\telse // spaces\n\t{\n\t\tcharsToErase = unindent * indentLength;\n\t\tif (charsToErase <= whitespace)\n\t\t\tline.erase(0, charsToErase);\n\t\telse\n\t\t\tcharsToErase = 0;\n\t}\n\n\treturn charsToErase;\n}\n\n\n}   // end namespace astyle\n"
  },
  {
    "path": "old/3rdpart/astyle/ASFormatter.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASFormatter.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#include \"astyle.h\"\n\n#include <algorithm>\n#include <fstream>\n\n\nnamespace astyle {\n/**\n * Constructor of ASFormatter\n */\nASFormatter::ASFormatter()\n{\n\tsourceIterator = NULL;\n\tenhancer = new ASEnhancer;\n\tpreBracketHeaderStack = NULL;\n\tbracketTypeStack = NULL;\n\tparenStack = NULL;\n\tstructStack = NULL;\n\tquestionMarkStack = NULL;\n\tlineCommentNoIndent = false;\n\tformattingStyle = STYLE_NONE;\n\tbracketFormatMode = NONE_MODE;\n\tpointerAlignment = PTR_ALIGN_NONE;\n\treferenceAlignment = REF_SAME_AS_PTR;\n\tobjCColonPadMode = COLON_PAD_NO_CHANGE;\n\tlineEnd = LINEEND_DEFAULT;\n\tmaxCodeLength = string::npos;\n\tshouldPadOperators = false;\n\tshouldPadParensOutside = false;\n\tshouldPadFirstParen = false;\n\tshouldPadParensInside = false;\n\tshouldPadHeader = false;\n\tshouldStripCommentPrefix = false;\n\tshouldUnPadParens = false;\n\tattachClosingBracketMode = false;\n\tshouldBreakOneLineBlocks = true;\n\tshouldBreakOneLineStatements = true;\n\tshouldConvertTabs = false;\n\tshouldIndentCol1Comments = false;\n\tshouldIndentPreprocBlock = false;\n\tshouldCloseTemplates = false;\n\tshouldAttachExternC = false;\n\tshouldAttachNamespace = false;\n\tshouldAttachClass = false;\n\tshouldAttachInline = false;\n\tshouldBreakBlocks = false;\n\tshouldBreakClosingHeaderBlocks = false;\n\tshouldBreakClosingHeaderBrackets = false;\n\tshouldDeleteEmptyLines = false;\n\tshouldBreakElseIfs = false;\n\tshouldBreakLineAfterLogical = false;\n\tshouldAddBrackets = false;\n\tshouldAddOneLineBrackets = false;\n\tshouldRemoveBrackets = false;\n\tshouldPadMethodColon = false;\n\tshouldPadMethodPrefix = false;\n\tshouldUnPadMethodPrefix = false;\n\n\t// initialize ASFormatter member vectors\n\tformatterFileType = 9;\t\t// reset to an invalid type\n\theaders = new vector<const string*>;\n\tnonParenHeaders = new vector<const string*>;\n\tpreDefinitionHeaders = new vector<const string*>;\n\tpreCommandHeaders = new vector<const string*>;\n\toperators = new vector<const string*>;\n\tassignmentOperators = new vector<const string*>;\n\tcastOperators = new vector<const string*>;\n\n\t// initialize ASEnhancer member vectors\n\tindentableMacros = new vector<const pair<const string, const string>* >;\n}\n\n/**\n * Destructor of ASFormatter\n */\nASFormatter::~ASFormatter()\n{\n\t// delete ASFormatter stack vectors\n\tdeleteContainer(preBracketHeaderStack);\n\tdeleteContainer(bracketTypeStack);\n\tdeleteContainer(parenStack);\n\tdeleteContainer(structStack);\n\tdeleteContainer(questionMarkStack);\n\n\t// delete ASFormatter member vectors\n\tformatterFileType = 9;\t\t// reset to an invalid type\n\tdelete headers;\n\tdelete nonParenHeaders;\n\tdelete preDefinitionHeaders;\n\tdelete preCommandHeaders;\n\tdelete operators;\n\tdelete assignmentOperators;\n\tdelete castOperators;\n\n\t// delete ASEnhancer member vectors\n\tdelete indentableMacros;\n\n\t// delete ASBeautifier member vectors\n\t// must be done when the ASFormatter object is deleted (not ASBeautifier)\n\tASBeautifier::deleteBeautifierVectors();\n\n\tdelete enhancer;\n}\n\n/**\n * initialize the ASFormatter.\n *\n * init() should be called every time a ASFormatter object is to start\n * formatting a NEW source file.\n * init() receives a pointer to a ASSourceIterator object that will be\n * used to iterate through the source code.\n *\n * @param si        a pointer to the ASSourceIterator or ASStreamIterator object.\n */\nvoid ASFormatter::init(ASSourceIterator* si)\n{\n\tbuildLanguageVectors();\n\tfixOptionVariableConflicts();\n\tASBeautifier::init(si);\n\tsourceIterator = si;\n\n\tenhancer->init(getFileType(),\n\t               getIndentLength(),\n\t               getTabLength(),\n\t               getIndentString() == \"\\t\" ? true : false,\n\t               getForceTabIndentation(),\n\t               getNamespaceIndent(),\n\t               getCaseIndent(),\n\t               shouldIndentPreprocBlock,\n\t               getPreprocDefineIndent(),\n\t               getEmptyLineFill(),\n\t               indentableMacros);\n\n\tinitContainer(preBracketHeaderStack, new vector<const string*>);\n\tinitContainer(parenStack, new vector<int>);\n\tinitContainer(structStack, new vector<bool>);\n\tinitContainer(questionMarkStack, new vector<bool>);\n\tparenStack->push_back(0);               // parenStack must contain this default entry\n\tinitContainer(bracketTypeStack, new vector<BracketType>);\n\tbracketTypeStack->push_back(NULL_TYPE); // bracketTypeStack must contain this default entry\n\tclearFormattedLineSplitPoints();\n\n\tcurrentHeader = NULL;\n\tcurrentLine = \"\";\n\treadyFormattedLine = \"\";\n\tformattedLine = \"\";\n\tverbatimDelimiter = \"\";\n\tcurrentChar = ' ';\n\tpreviousChar = ' ';\n\tpreviousCommandChar = ' ';\n\tpreviousNonWSChar = ' ';\n\tquoteChar = '\"';\n\tpreprocBlockEnd = 0;\n\tcharNum = 0;\n\tchecksumIn = 0;\n\tchecksumOut = 0;\n\tcurrentLineFirstBracketNum = string::npos;\n\tformattedLineCommentNum = 0;\n\tleadingSpaces = 0;\n\tpreviousReadyFormattedLineLength = string::npos;\n\tpreprocBracketTypeStackSize = 0;\n\tspacePadNum = 0;\n\tnextLineSpacePadNum = 0;\n\ttemplateDepth = 0;\n\tsquareBracketCount = 0;\n\thorstmannIndentChars = 0;\n\ttabIncrementIn = 0;\n\tpreviousBracketType = NULL_TYPE;\n\tpreviousOperator = NULL;\n\n\tisVirgin = true;\n\tisInLineComment = false;\n\tisInComment = false;\n\tisInCommentStartLine = false;\n\tnoTrimCommentContinuation = false;\n\tisInPreprocessor = false;\n\tisInPreprocessorBeautify = false;\n\tdoesLineStartComment = false;\n\tlineEndsInCommentOnly = false;\n\tlineIsCommentOnly = false;\n\tlineIsLineCommentOnly = false;\n\tlineIsEmpty = false;\n\tisImmediatelyPostCommentOnly = false;\n\tisImmediatelyPostEmptyLine = false;\n\tisInClassInitializer = false;\n\tisInQuote = false;\n\tisInVerbatimQuote = false;\n\thaveLineContinuationChar = false;\n\tisInQuoteContinuation = false;\n\tisHeaderInMultiStatementLine = false;\n\tisSpecialChar = false;\n\tisNonParenHeader = false;\n\tfoundNamespaceHeader = false;\n\tfoundClassHeader = false;\n\tfoundStructHeader = false;\n\tfoundInterfaceHeader = false;\n\tfoundPreDefinitionHeader = false;\n\tfoundPreCommandHeader = false;\n\tfoundPreCommandMacro = false;\n\tfoundCastOperator = false;\n\tfoundQuestionMark = false;\n\tisInLineBreak = false;\n\tendOfAsmReached = false;\n\tendOfCodeReached = false;\n\tisFormattingModeOff = false;\n\tisInEnum = false;\n\tisInExecSQL = false;\n\tisInAsm = false;\n\tisInAsmOneLine = false;\n\tisInAsmBlock = false;\n\tisLineReady = false;\n\telseHeaderFollowsComments = false;\n\tcaseHeaderFollowsComments = false;\n\tisPreviousBracketBlockRelated = false;\n\tisInPotentialCalculation = false;\n\tshouldReparseCurrentChar = false;\n\tneedHeaderOpeningBracket = false;\n\tshouldBreakLineAtNextChar = false;\n\tshouldKeepLineUnbroken = false;\n\tpassedSemicolon = false;\n\tpassedColon = false;\n\tisImmediatelyPostNonInStmt = false;\n\tisCharImmediatelyPostNonInStmt = false;\n\tisInTemplate = false;\n\tisImmediatelyPostComment = false;\n\tisImmediatelyPostLineComment = false;\n\tisImmediatelyPostEmptyBlock = false;\n\tisImmediatelyPostPreprocessor = false;\n\tisImmediatelyPostReturn = false;\n\tisImmediatelyPostThrow = false;\n\tisImmediatelyPostOperator = false;\n\tisImmediatelyPostTemplate = false;\n\tisImmediatelyPostPointerOrReference = false;\n\tisCharImmediatelyPostReturn = false;\n\tisCharImmediatelyPostThrow = false;\n\tisCharImmediatelyPostOperator = false;\n\tisCharImmediatelyPostComment = false;\n\tisPreviousCharPostComment = false;\n\tisCharImmediatelyPostLineComment = false;\n\tisCharImmediatelyPostOpenBlock = false;\n\tisCharImmediatelyPostCloseBlock = false;\n\tisCharImmediatelyPostTemplate = false;\n\tisCharImmediatelyPostPointerOrReference = false;\n\tisInObjCMethodDefinition = false;\n\tisInObjCInterface = false;\n\tisInObjCSelector = false;\n\tbreakCurrentOneLineBlock = false;\n\tshouldRemoveNextClosingBracket = false;\n\tisInHorstmannRunIn = false;\n\tcurrentLineBeginsWithBracket = false;\n\tisPrependPostBlockEmptyLineRequested = false;\n\tisAppendPostBlockEmptyLineRequested = false;\n\tisIndentableProprocessor = false;\n\tisIndentableProprocessorBlock = false;\n\tprependEmptyLine = false;\n\tappendOpeningBracket = false;\n\tfoundClosingHeader = false;\n\tisImmediatelyPostHeader = false;\n\tisInHeader = false;\n\tisInCase = false;\n\tisFirstPreprocConditional = false;\n\tprocessedFirstConditional = false;\n\tisJavaStaticConstructor = false;\n}\n\n/**\n * build vectors for each programing language\n * depending on the file extension.\n */\nvoid ASFormatter::buildLanguageVectors()\n{\n\tif (getFileType() == formatterFileType)  // don't build unless necessary\n\t\treturn;\n\n\tformatterFileType = getFileType();\n\n\theaders->clear();\n\tnonParenHeaders->clear();\n\tpreDefinitionHeaders->clear();\n\tpreCommandHeaders->clear();\n\toperators->clear();\n\tassignmentOperators->clear();\n\tcastOperators->clear();\n\tindentableMacros->clear();\t// ASEnhancer\n\n\tASResource::buildHeaders(headers, getFileType());\n\tASResource::buildNonParenHeaders(nonParenHeaders, getFileType());\n\tASResource::buildPreDefinitionHeaders(preDefinitionHeaders, getFileType());\n\tASResource::buildPreCommandHeaders(preCommandHeaders, getFileType());\n\tASResource::buildOperators(operators, getFileType());\n\tASResource::buildAssignmentOperators(assignmentOperators);\n\tASResource::buildCastOperators(castOperators);\n\tASResource::buildIndentableMacros(indentableMacros);\t//ASEnhancer\n}\n\n/**\n * set the variables for each predefined style.\n * this will override any previous settings.\n */\nvoid ASFormatter::fixOptionVariableConflicts()\n{\n\tif (formattingStyle == STYLE_ALLMAN)\n\t{\n\t\tsetBracketFormatMode(BREAK_MODE);\n\t}\n\telse if (formattingStyle == STYLE_JAVA)\n\t{\n\t\tsetBracketFormatMode(ATTACH_MODE);\n\t}\n\telse if (formattingStyle == STYLE_KR)\n\t{\n\t\tsetBracketFormatMode(LINUX_MODE);\n\t}\n\telse if (formattingStyle == STYLE_STROUSTRUP)\n\t{\n\t\tsetBracketFormatMode(STROUSTRUP_MODE);\n\t}\n\telse if (formattingStyle == STYLE_WHITESMITH)\n\t{\n\t\tsetBracketFormatMode(BREAK_MODE);\n\t\tsetBracketIndent(true);\n\t\tsetClassIndent(true);\t\t\t// avoid hanging indent with access modifiers\n\t\tsetSwitchIndent(true);\t\t\t// avoid hanging indent with case statements\n\t}\n\telse if (formattingStyle == STYLE_VTK)\n\t{\n\t\t// the unindented class bracket does NOT cause a hanging indent like Whitesmith\n\t\tsetBracketFormatMode(BREAK_MODE);\n\t\tsetBracketIndentVtk(true);\t\t// sets both bracketIndent and bracketIndentVtk\n\t\tsetSwitchIndent(true);\t\t\t// avoid hanging indent with case statements\n\t}\n\telse if (formattingStyle == STYLE_BANNER)\n\t{\n\t\t// attached brackets can have hanging indents with the closing bracket\n\t\tsetBracketFormatMode(ATTACH_MODE);\n\t\tsetBracketIndent(true);\n\t\tsetClassIndent(true);\t\t\t// avoid hanging indent with access modifiers\n\t\tsetSwitchIndent(true);\t\t\t// avoid hanging indent with case statements\n\t}\n\telse if (formattingStyle == STYLE_GNU)\n\t{\n\t\tsetBracketFormatMode(BREAK_MODE);\n\t\tsetBlockIndent(true);\n\t}\n\telse if (formattingStyle == STYLE_LINUX)\n\t{\n\t\tsetBracketFormatMode(LINUX_MODE);\n\t\t// always for Linux style\n\t\tsetMinConditionalIndentOption(MINCOND_ONEHALF);\n\t}\n\telse if (formattingStyle == STYLE_HORSTMANN)\n\t{\n\t\tsetBracketFormatMode(RUN_IN_MODE);\n\t\tsetSwitchIndent(true);\n\t}\n\telse if (formattingStyle == STYLE_1TBS)\n\t{\n\t\tsetBracketFormatMode(LINUX_MODE);\n\t\tsetAddBracketsMode(true);\n\t\tsetRemoveBracketsMode(false);\n\t}\n\telse if (formattingStyle == STYLE_GOOGLE)\n\t{\n\t\tsetBracketFormatMode(ATTACH_MODE);\n\t\tsetModifierIndent(true);\n\t\tsetClassIndent(false);\n\t}\n\telse if (formattingStyle == STYLE_PICO)\n\t{\n\t\tsetBracketFormatMode(RUN_IN_MODE);\n\t\tsetAttachClosingBracketMode(true);\n\t\tsetSwitchIndent(true);\n\t\tsetBreakOneLineBlocksMode(false);\n\t\tsetSingleStatementsMode(false);\n\t\t// add-brackets won't work for pico, but it could be fixed if necessary\n\t\t// both options should be set to true\n\t\tif (shouldAddBrackets)\n\t\t\tshouldAddOneLineBrackets = true;\n\t}\n\telse if (formattingStyle == STYLE_LISP)\n\t{\n\t\tsetBracketFormatMode(ATTACH_MODE);\n\t\tsetAttachClosingBracketMode(true);\n\t\tsetSingleStatementsMode(false);\n\t\t// add-one-line-brackets won't work for lisp\n\t\t// only shouldAddBrackets should be set to true\n\t\tif (shouldAddOneLineBrackets)\n\t\t{\n\t\t\tshouldAddBrackets = true;\n\t\t\tshouldAddOneLineBrackets = false;\n\t\t}\n\t}\n\tsetMinConditionalIndentLength();\n\t// if not set by indent=force-tab-x set equal to indentLength\n\tif (!getTabLength())\n\t\tsetDefaultTabLength();\n\t// add-one-line-brackets implies keep-one-line-blocks\n\tif (shouldAddOneLineBrackets)\n\t\tsetBreakOneLineBlocksMode(false);\n\t// don't allow add-brackets and remove-brackets\n\tif (shouldAddBrackets || shouldAddOneLineBrackets)\n\t\tsetRemoveBracketsMode(false);\n\t// don't allow indent-classes and indent-modifiers\n\tif (getClassIndent())\n\t\tsetModifierIndent(false);\n}\n\n/**\n * get the next formatted line.\n *\n * @return    formatted line.\n */\nstring ASFormatter::nextLine()\n{\n\tconst string* newHeader;\n\tbool isInVirginLine = isVirgin;\n\tisCharImmediatelyPostComment = false;\n\tisPreviousCharPostComment = false;\n\tisCharImmediatelyPostLineComment = false;\n\tisCharImmediatelyPostOpenBlock = false;\n\tisCharImmediatelyPostCloseBlock = false;\n\tisCharImmediatelyPostTemplate = false;\n\n\twhile (!isLineReady)\n\t{\n\t\tif (shouldReparseCurrentChar)\n\t\t\tshouldReparseCurrentChar = false;\n\t\telse if (!getNextChar())\n\t\t{\n\t\t\tbreakLine();\n\t\t\tcontinue;\n\t\t}\n\t\telse // stuff to do when reading a new character...\n\t\t{\n\t\t\t// make sure that a virgin '{' at the beginning of the file will be treated as a block...\n\t\t\tif (isInVirginLine && currentChar == '{'\n\t\t\t        && currentLineBeginsWithBracket\n\t\t\t        && previousCommandChar == ' ')\n\t\t\t\tpreviousCommandChar = '{';\n\t\t\tif (isInClassInitializer\n\t\t\t        && isBracketType(bracketTypeStack->back(), COMMAND_TYPE))\n\t\t\t\tisInClassInitializer = false;\n\t\t\tif (isInHorstmannRunIn)\n\t\t\t\tisInLineBreak = false;\n\t\t\tif (!isWhiteSpace(currentChar))\n\t\t\t\tisInHorstmannRunIn = false;\n\t\t\tisPreviousCharPostComment = isCharImmediatelyPostComment;\n\t\t\tisCharImmediatelyPostComment = false;\n\t\t\tisCharImmediatelyPostTemplate = false;\n\t\t\tisCharImmediatelyPostReturn = false;\n\t\t\tisCharImmediatelyPostThrow = false;\n\t\t\tisCharImmediatelyPostOperator = false;\n\t\t\tisCharImmediatelyPostPointerOrReference = false;\n\t\t\tisCharImmediatelyPostOpenBlock = false;\n\t\t\tisCharImmediatelyPostCloseBlock = false;\n\t\t}\n\n\t\tif ((lineIsLineCommentOnly || lineIsCommentOnly)\n\t\t        && currentLine.find(\"*INDENT-ON*\", charNum) != string::npos\n\t\t        && isFormattingModeOff)\n\t\t{\n\t\t\tisFormattingModeOff = false;\n\t\t\tbreakLine();\n\t\t\tformattedLine = currentLine;\n\t\t\tcharNum = (int) currentLine.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif (isFormattingModeOff)\n\t\t{\n\t\t\tbreakLine();\n\t\t\tformattedLine = currentLine;\n\t\t\tcharNum = (int) currentLine.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\t\tif ((lineIsLineCommentOnly || lineIsCommentOnly)\n\t\t        && currentLine.find(\"*INDENT-OFF*\", charNum) != string::npos)\n\t\t{\n\t\t\tisFormattingModeOff = true;\n\t\t\tif (isInLineBreak)\t\t\t// is true if not the first line\n\t\t\t\tbreakLine();\n\t\t\tformattedLine = currentLine;\n\t\t\tcharNum = (int)currentLine.length() - 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (shouldBreakLineAtNextChar)\n\t\t{\n\t\t\tif (isWhiteSpace(currentChar) && !lineIsEmpty)\n\t\t\t\tcontinue;\n\t\t\tisInLineBreak = true;\n\t\t\tshouldBreakLineAtNextChar = false;\n\t\t}\n\n\t\tif (isInExecSQL && !passedSemicolon)\n\t\t{\n\t\t\tif (currentChar == ';')\n\t\t\t\tpassedSemicolon = true;\n\t\t\tappendCurrentChar();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInLineComment)\n\t\t{\n\t\t\tformatLineCommentBody();\n\t\t\tcontinue;\n\t\t}\n\t\telse if (isInComment)\n\t\t{\n\t\t\tformatCommentBody();\n\t\t\tcontinue;\n\t\t}\n\n\t\telse if (isInQuote)\n\t\t{\n\t\t\tformatQuoteBody();\n\t\t\tcontinue;\n\t\t}\n\n\t\t// not in quote or comment or line comment\n\n\t\tif (isSequenceReached(\"//\"))\n\t\t{\n\t\t\tformatLineCommentOpener();\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t\tcontinue;\n\t\t}\n\t\telse if (isSequenceReached(\"/*\"))\n\t\t{\n\t\t\tformatCommentOpener();\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t\tcontinue;\n\t\t}\n\t\telse if (currentChar == '\"' || currentChar == '\\'')\n\t\t{\n\t\t\tformatQuoteOpener();\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t\tcontinue;\n\t\t}\n\t\t// treat these preprocessor statements as a line comment\n\t\telse if (currentChar == '#'\n\t\t         && currentLine.find_first_not_of(\" \\t\") == (size_t) charNum)\n\t\t{\n\t\t\tstring preproc = trim(currentLine.c_str() + charNum + 1);\n\t\t\tif (preproc.length() > 0\n\t\t\t        && isCharPotentialHeader(preproc, 0)\n\t\t\t        && (findKeyword(preproc, 0, \"region\")\n\t\t\t            || findKeyword(preproc, 0, \"endregion\")\n\t\t\t            || findKeyword(preproc, 0, \"error\")\n\t\t\t            || findKeyword(preproc, 0, \"warning\")\n\t\t\t            || findKeyword(preproc, 0, \"line\")))\n\t\t\t{\n\t\t\t\tcurrentLine = rtrim(currentLine);\t// trim the end only\n\t\t\t\t// check for horstmann run-in\n\t\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t\t{\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t\tisInHorstmannRunIn = false;\n\t\t\t\t}\n\t\t\t\tif (previousCommandChar == '}')\n\t\t\t\t\tcurrentHeader = NULL;\n\t\t\t\tisInLineComment = true;\n\t\t\t\tappendCurrentChar();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (isInPreprocessor)\n\t\t{\n\t\t\tappendCurrentChar();\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInTemplate && shouldCloseTemplates)\n\t\t{\n\t\t\tif (previousCommandChar == '<' && isWhiteSpace(currentChar))\n\t\t\t\tcontinue;\n\t\t\tif (isWhiteSpace(currentChar) && peekNextChar() == '>')\n\t\t\t\tcontinue;\n\t\t}\n\n\t\tif (shouldRemoveNextClosingBracket && currentChar == '}')\n\t\t{\n\t\t\tcurrentLine[charNum] = currentChar = ' ';\n\t\t\tshouldRemoveNextClosingBracket = false;\n\t\t\tassert(adjustChecksumIn(-'}'));\n\t\t\t// if the line is empty, delete it\n\t\t\tif (currentLine.find_first_not_of(\" \\t\"))\n\t\t\t\tcontinue;\n\t\t}\n\n\t\t// handle white space - needed to simplify the rest.\n\t\tif (isWhiteSpace(currentChar))\n\t\t{\n\t\t\tappendCurrentChar();\n\t\t\tcontinue;\n\t\t}\n\n\t\t/* not in MIDDLE of quote or comment or SQL or white-space of any type ... */\n\n\t\t// check if in preprocessor\n\t\t// ** isInPreprocessor will be automatically reset at the beginning\n\t\t//    of a new line in getnextChar()\n\t\tif (currentChar == '#')\n\t\t{\n\t\t\tisInPreprocessor = true;\n\t\t\t// check for horstmann run-in\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t{\n\t\t\t\tisInLineBreak = true;\n\t\t\t\tisInHorstmannRunIn = false;\n\t\t\t}\n\t\t\tprocessPreprocessor();\n\t\t\t// if top level it is potentially indentable\n\t\t\tif (shouldIndentPreprocBlock\n\t\t\t        && (isBracketType(bracketTypeStack->back(), NULL_TYPE)\n\t\t\t            || isBracketType(bracketTypeStack->back(), NAMESPACE_TYPE))\n\t\t\t        && !foundClassHeader\n\t\t\t        && !isInClassInitializer\n\t\t\t        && sourceIterator->tellg() > preprocBlockEnd)\n\t\t\t{\n\t\t\t\t// indent the #if preprocessor blocks\n\t\t\t\tstring preproc = ASBeautifier::extractPreprocessorStatement(currentLine);\n\t\t\t\tif (preproc.length() >= 2 && preproc.substr(0, 2) == \"if\") // #if, #ifdef, #ifndef\n\t\t\t\t{\n\t\t\t\t\tif (isImmediatelyPostPreprocessor)\n\t\t\t\t\t\tbreakLine();\n\t\t\t\t\tisIndentableProprocessorBlock = isIndentablePreprocessorBlock(currentLine, charNum);\n\t\t\t\t\tisIndentableProprocessor = isIndentableProprocessorBlock;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isIndentableProprocessorBlock\n\t\t\t        && charNum < (int) currentLine.length() - 1\n\t\t\t        && isWhiteSpace(currentLine[charNum + 1]))\n\t\t\t{\n\t\t\t\tsize_t nextText = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\t\t\tif (nextText != string::npos)\n\t\t\t\t\tcurrentLine.erase(charNum + 1, nextText - charNum - 1);\n\t\t\t}\n\t\t\tif (isIndentableProprocessorBlock\n\t\t\t        && sourceIterator->tellg() >= preprocBlockEnd)\n\t\t\t\tisIndentableProprocessorBlock = false;\n\t\t\t//  need to fall thru here to reset the variables\n\t\t}\n\n\t\t/* not in preprocessor ... */\n\n\t\tif (isImmediatelyPostComment)\n\t\t{\n\t\t\tcaseHeaderFollowsComments = false;\n\t\t\tisImmediatelyPostComment = false;\n\t\t\tisCharImmediatelyPostComment = true;\n\t\t}\n\n\t\tif (isImmediatelyPostLineComment)\n\t\t{\n\t\t\tcaseHeaderFollowsComments = false;\n\t\t\tisImmediatelyPostLineComment = false;\n\t\t\tisCharImmediatelyPostLineComment = true;\n\t\t}\n\n\t\tif (isImmediatelyPostReturn)\n\t\t{\n\t\t\tisImmediatelyPostReturn = false;\n\t\t\tisCharImmediatelyPostReturn = true;\n\t\t}\n\n\t\tif (isImmediatelyPostThrow)\n\t\t{\n\t\t\tisImmediatelyPostThrow = false;\n\t\t\tisCharImmediatelyPostThrow = true;\n\t\t}\n\n\t\tif (isImmediatelyPostOperator)\n\t\t{\n\t\t\tisImmediatelyPostOperator = false;\n\t\t\tisCharImmediatelyPostOperator = true;\n\t\t}\n\t\tif (isImmediatelyPostTemplate)\n\t\t{\n\t\t\tisImmediatelyPostTemplate = false;\n\t\t\tisCharImmediatelyPostTemplate = true;\n\t\t}\n\t\tif (isImmediatelyPostPointerOrReference)\n\t\t{\n\t\t\tisImmediatelyPostPointerOrReference = false;\n\t\t\tisCharImmediatelyPostPointerOrReference = true;\n\t\t}\n\n\t\t// reset isImmediatelyPostHeader information\n\t\tif (isImmediatelyPostHeader)\n\t\t{\n\t\t\t// should brackets be added\n\t\t\tif (currentChar != '{' && shouldAddBrackets)\n\t\t\t{\n\t\t\t\tbool bracketsAdded = addBracketsToStatement();\n\t\t\t\tif (bracketsAdded && !shouldAddOneLineBrackets)\n\t\t\t\t{\n\t\t\t\t\tsize_t firstText = currentLine.find_first_not_of(\" \\t\");\n\t\t\t\t\tassert(firstText != string::npos);\n\t\t\t\t\tif ((int) firstText == charNum)\n\t\t\t\t\t\tbreakCurrentOneLineBlock = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// should brackets be removed\n\t\t\telse if (currentChar == '{' && shouldRemoveBrackets)\n\t\t\t{\n\t\t\t\tbool bracketsRemoved = removeBracketsFromStatement();\n\t\t\t\tif (bracketsRemoved)\n\t\t\t\t{\n\t\t\t\t\tshouldRemoveNextClosingBracket = true;\n\t\t\t\t\tif (isBeforeAnyLineEndComment(charNum))\n\t\t\t\t\t\tspacePadNum--;\n\t\t\t\t\telse if (shouldBreakOneLineBlocks\n\t\t\t\t\t         || (currentLineBeginsWithBracket\n\t\t\t\t\t             && currentLine.find_first_not_of(\" \\t\") != string::npos))\n\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// break 'else-if' if shouldBreakElseIfs is requested\n\t\t\tif (shouldBreakElseIfs\n\t\t\t        && currentHeader == &AS_ELSE\n\t\t\t        && isOkToBreakBlock(bracketTypeStack->back())\n\t\t\t        && !isBeforeAnyComment()\n\t\t\t        && (shouldBreakOneLineStatements || !isHeaderInMultiStatementLine))\n\t\t\t{\n\t\t\t\tstring nextText = peekNextText(currentLine.substr(charNum));\n\t\t\t\tif (nextText.length() > 0\n\t\t\t\t        && isCharPotentialHeader(nextText, 0)\n\t\t\t\t        && ASBeautifier::findHeader(nextText, 0, headers) == &AS_IF)\n\t\t\t\t{\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tisImmediatelyPostHeader = false;\n\t\t}\n\n\t\tif (passedSemicolon)    // need to break the formattedLine\n\t\t{\n\t\t\tpassedSemicolon = false;\n\t\t\tif (parenStack->back() == 0 && !isCharImmediatelyPostComment && currentChar != ';') // allow ;;\n\t\t\t{\n\t\t\t\t// does a one-line block have ending comments?\n\t\t\t\tif (isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))\n\t\t\t\t{\n\t\t\t\t\tsize_t blockEnd = currentLine.rfind(AS_CLOSE_BRACKET);\n\t\t\t\t\tassert(blockEnd != string::npos);\n\t\t\t\t\t// move ending comments to this formattedLine\n\t\t\t\t\tif (isBeforeAnyLineEndComment(blockEnd))\n\t\t\t\t\t{\n\t\t\t\t\t\tsize_t commentStart = currentLine.find_first_not_of(\" \\t\", blockEnd + 1);\n\t\t\t\t\t\tassert(commentStart != string::npos);\n\t\t\t\t\t\tassert((currentLine.compare(commentStart, 2, \"//\") == 0)\n\t\t\t\t\t\t       || (currentLine.compare(commentStart, 2, \"/*\") == 0));\n\t\t\t\t\t\tsize_t commentLength = currentLine.length() - commentStart;\n\t\t\t\t\t\tformattedLine.append(getIndentLength() - 1, ' ');\n\t\t\t\t\t\tformattedLine.append(currentLine, commentStart, commentLength);\n\t\t\t\t\t\tcurrentLine.erase(commentStart, commentLength);\n\t\t\t\t\t\ttestForTimeToSplitFormattedLine();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tisInExecSQL = false;\n\t\t\t\tshouldReparseCurrentChar = true;\n\t\t\t\tif (formattedLine.find_first_not_of(\" \\t\") != string::npos)\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t\tif (needHeaderOpeningBracket)\n\t\t\t\t{\n\t\t\t\t\tisCharImmediatelyPostCloseBlock = true;\n\t\t\t\t\tneedHeaderOpeningBracket = false;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tif (passedColon)\n\t\t{\n\t\t\tpassedColon = false;\n\t\t\tif (parenStack->back() == 0\n\t\t\t        && !isBeforeAnyComment()\n\t\t\t        && (formattedLine.find_first_not_of(\" \\t\") != string::npos))\n\t\t\t{\n\t\t\t\tshouldReparseCurrentChar = true;\n\t\t\t\tisInLineBreak = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Check if in template declaration, e.g. foo<bar> or foo<bar,fig>\n\t\tif (!isInTemplate && currentChar == '<')\n\t\t{\n\t\t\tcheckIfTemplateOpener();\n\t\t}\n\n\t\t// handle parens\n\t\tif (currentChar == '(' || currentChar == '[' || (isInTemplate && currentChar == '<'))\n\t\t{\n\t\t\tquestionMarkStack->push_back(foundQuestionMark);\n\t\t\tfoundQuestionMark = false;\n\t\t\tparenStack->back()++;\n\t\t\tif (currentChar == '[')\n\t\t\t\t++squareBracketCount;\n\t\t}\n\t\telse if (currentChar == ')' || currentChar == ']' || (isInTemplate && currentChar == '>'))\n\t\t{\n\t\t\tfoundPreCommandHeader = false;\n\t\t\tparenStack->back()--;\n\t\t\t// this can happen in preprocessor directives\n\t\t\tif (parenStack->back() < 0)\n\t\t\t\tparenStack->back() = 0;\n\t\t\tif (!questionMarkStack->empty())\n\t\t\t{\n\t\t\t\tfoundQuestionMark = questionMarkStack->back();\n\t\t\t\tquestionMarkStack->pop_back();\n\t\t\t}\n\t\t\tif (isInTemplate && currentChar == '>')\n\t\t\t{\n\t\t\t\ttemplateDepth--;\n\t\t\t\tif (templateDepth == 0)\n\t\t\t\t{\n\t\t\t\t\tisInTemplate = false;\n\t\t\t\t\tisImmediatelyPostTemplate = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// check if this parenthesis closes a header, e.g. if (...), while (...)\n\t\t\tif (isInHeader && parenStack->back() == 0)\n\t\t\t{\n\t\t\t\tisInHeader = false;\n\t\t\t\tisImmediatelyPostHeader = true;\n\t\t\t\tfoundQuestionMark = false;\n\t\t\t}\n\t\t\tif (currentChar == ']')\n\t\t\t{\n\t\t\t\t--squareBracketCount;\n\t\t\t\tif (squareBracketCount < 0)\n\t\t\t\t\tsquareBracketCount = 0;\n\t\t\t}\n\t\t\tif (currentChar == ')')\n\t\t\t{\n\t\t\t\tfoundCastOperator = false;\n\t\t\t\tif (parenStack->back() == 0)\n\t\t\t\t\tendOfAsmReached = true;\n\t\t\t}\n\t\t}\n\n\t\t// handle brackets\n\t\tif (currentChar == '{' || currentChar == '}')\n\t\t{\n\t\t\t// if appendOpeningBracket this was already done for the original bracket\n\t\t\tif (currentChar == '{' && !appendOpeningBracket)\n\t\t\t{\n\t\t\t\tBracketType newBracketType = getBracketType();\n\t\t\t\tfoundNamespaceHeader = false;\n\t\t\t\tfoundClassHeader = false;\n\t\t\t\tfoundStructHeader = false;\n\t\t\t\tfoundInterfaceHeader = false;\n\t\t\t\tfoundPreDefinitionHeader = false;\n\t\t\t\tfoundPreCommandHeader = false;\n\t\t\t\tfoundPreCommandMacro = false;\n\t\t\t\tisInPotentialCalculation = false;\n\t\t\t\tisInObjCMethodDefinition = false;\n\t\t\t\tisInObjCInterface = false;\n\t\t\t\tisInEnum = false;\n\t\t\t\tisJavaStaticConstructor = false;\n\t\t\t\tisCharImmediatelyPostNonInStmt = false;\n\t\t\t\tneedHeaderOpeningBracket = false;\n\t\t\t\tshouldKeepLineUnbroken = false;\n\n\t\t\t\tisPreviousBracketBlockRelated = !isBracketType(newBracketType, ARRAY_TYPE);\n\t\t\t\tbracketTypeStack->push_back(newBracketType);\n\t\t\t\tpreBracketHeaderStack->push_back(currentHeader);\n\t\t\t\tcurrentHeader = NULL;\n\t\t\t\tstructStack->push_back(isInIndentableStruct);\n\t\t\t\tif (isBracketType(newBracketType, STRUCT_TYPE) && isCStyle())\n\t\t\t\t\tisInIndentableStruct = isStructAccessModified(currentLine, charNum);\n\t\t\t\telse\n\t\t\t\t\tisInIndentableStruct = false;\n\t\t\t}\n\n\t\t\t// this must be done before the bracketTypeStack is popped\n\t\t\tBracketType bracketType = bracketTypeStack->back();\n\t\t\tbool isOpeningArrayBracket = (isBracketType(bracketType, ARRAY_TYPE)\n\t\t\t                              && bracketTypeStack->size() >= 2\n\t\t\t                              && !isBracketType((*bracketTypeStack)[bracketTypeStack->size() - 2], ARRAY_TYPE)\n\t\t\t                             );\n\n\t\t\tif (currentChar == '}')\n\t\t\t{\n\t\t\t\t// if a request has been made to append a post block empty line,\n\t\t\t\t// but the block exists immediately before a closing bracket,\n\t\t\t\t// then there is no need for the post block empty line.\n\t\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t\t\tbreakCurrentOneLineBlock = false;\n\t\t\t\tif (isInAsm)\n\t\t\t\t\tendOfAsmReached = true;\n\t\t\t\tisInAsmOneLine = isInQuote = false;\n\t\t\t\tshouldKeepLineUnbroken = false;\n\t\t\t\tsquareBracketCount = 0;\n\n\t\t\t\tif (bracketTypeStack->size() > 1)\n\t\t\t\t{\n\t\t\t\t\tpreviousBracketType = bracketTypeStack->back();\n\t\t\t\t\tbracketTypeStack->pop_back();\n\t\t\t\t\tisPreviousBracketBlockRelated = !isBracketType(bracketType, ARRAY_TYPE);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tpreviousBracketType = NULL_TYPE;\n\t\t\t\t\tisPreviousBracketBlockRelated = false;\n\t\t\t\t}\n\n\t\t\t\tif (!preBracketHeaderStack->empty())\n\t\t\t\t{\n\t\t\t\t\tcurrentHeader = preBracketHeaderStack->back();\n\t\t\t\t\tpreBracketHeaderStack->pop_back();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tcurrentHeader = NULL;\n\n\t\t\t\tif (!structStack->empty())\n\t\t\t\t{\n\t\t\t\t\tisInIndentableStruct = structStack->back();\n\t\t\t\t\tstructStack->pop_back();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tisInIndentableStruct = false;\n\n\t\t\t\tif (isNonInStatementArray\n\t\t\t\t        && (!isBracketType(bracketTypeStack->back(), ARRAY_TYPE)\t// check previous bracket\n\t\t\t\t            || peekNextChar() == ';'))\t\t\t\t\t\t\t\t// check for \"};\" added V2.01\n\t\t\t\t\tisImmediatelyPostNonInStmt = true;\n\t\t\t}\n\n\t\t\t// format brackets\n\t\t\tappendOpeningBracket = false;\n\t\t\tif (isBracketType(bracketType, ARRAY_TYPE))\n\t\t\t{\n\t\t\t\tformatArrayBrackets(bracketType, isOpeningArrayBracket);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (currentChar == '{')\n\t\t\t\t\tformatOpeningBracket(bracketType);\n\t\t\t\telse\n\t\t\t\t\tformatClosingBracket(bracketType);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ((((previousCommandChar == '{' && isPreviousBracketBlockRelated)\n\t\t        || ((previousCommandChar == '}'\n\t\t             && !isImmediatelyPostEmptyBlock\n\t\t             && isPreviousBracketBlockRelated\n\t\t             && !isPreviousCharPostComment       // Fixes wrongly appended newlines after '}' immediately after comments\n\t\t             && peekNextChar() != ' '\n\t\t             && !isBracketType(previousBracketType, DEFINITION_TYPE))\n\t\t            && !isBracketType(bracketTypeStack->back(), DEFINITION_TYPE)))\n\t\t        && isOkToBreakBlock(bracketTypeStack->back()))\n\t\t        // check for array\n\t\t        || (previousCommandChar == '{'\t\t\t// added 9/30/2010\n\t\t            && isBracketType(bracketTypeStack->back(), ARRAY_TYPE)\n\t\t            && !isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE)\n\t\t            && isNonInStatementArray))\n\t\t{\n\t\t\tisCharImmediatelyPostOpenBlock = (previousCommandChar == '{');\n\t\t\tisCharImmediatelyPostCloseBlock = (previousCommandChar == '}');\n\n\t\t\tif (isCharImmediatelyPostOpenBlock\n\t\t\t        && !isCharImmediatelyPostComment\n\t\t\t        && !isCharImmediatelyPostLineComment)\n\t\t\t{\n\t\t\t\tpreviousCommandChar = ' ';\n\n\t\t\t\tif (bracketFormatMode == NONE_MODE)\n\t\t\t\t{\n\t\t\t\t\tif (shouldBreakOneLineBlocks\n\t\t\t\t\t        && isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))\n\t\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t\telse if (currentLineBeginsWithBracket)\n\t\t\t\t\t\tformatRunIn();\n\t\t\t\t\telse\n\t\t\t\t\t\tbreakLine();\n\t\t\t\t}\n\t\t\t\telse if (bracketFormatMode == RUN_IN_MODE\n\t\t\t\t         && currentChar != '#')\n\t\t\t\t\tformatRunIn();\n\t\t\t\telse\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t}\n\t\t\telse if (isCharImmediatelyPostCloseBlock\n\t\t\t         && shouldBreakOneLineStatements\n\t\t\t         && (isLegalNameChar(currentChar) && currentChar != '.')\n\t\t\t         && !isCharImmediatelyPostComment)\n\t\t\t{\n\t\t\t\tpreviousCommandChar = ' ';\n\t\t\t\tisInLineBreak = true;\n\t\t\t}\n\t\t}\n\n\t\t// reset block handling flags\n\t\tisImmediatelyPostEmptyBlock = false;\n\n\t\t// look for headers\n\t\tbool isPotentialHeader = isCharPotentialHeader(currentLine, charNum);\n\n\t\tif (isPotentialHeader && !isInTemplate && !squareBracketCount)\n\t\t{\n\t\t\tisNonParenHeader = false;\n\t\t\tfoundClosingHeader = false;\n\t\t\tnewHeader = findHeader(headers);\n\n\t\t\t// Qt headers may be variables in C++\n\t\t\tif (newHeader == &AS_FOREVER || newHeader == &AS_FOREACH)\n\t\t\t{\n\t\t\t\tif (currentLine.find_first_of(\"=;\", charNum) != string::npos)\n\t\t\t\t\tnewHeader = NULL;\n\t\t\t}\n\n\t\t\tif (newHeader != NULL)\n\t\t\t{\n\t\t\t\tconst string* previousHeader;\n\n\t\t\t\t// recognize closing headers of do..while, if..else, try..catch..finally\n\t\t\t\tif ((newHeader == &AS_ELSE && currentHeader == &AS_IF)\n\t\t\t\t        || (newHeader == &AS_WHILE && currentHeader == &AS_DO)\n\t\t\t\t        || (newHeader == &AS_CATCH && currentHeader == &AS_TRY)\n\t\t\t\t        || (newHeader == &AS_CATCH && currentHeader == &AS_CATCH)\n\t\t\t\t        || (newHeader == &AS_FINALLY && currentHeader == &AS_TRY)\n\t\t\t\t        || (newHeader == &AS_FINALLY && currentHeader == &AS_CATCH)\n\t\t\t\t        || (newHeader == &_AS_FINALLY && currentHeader == &_AS_TRY)\n\t\t\t\t        || (newHeader == &_AS_EXCEPT && currentHeader == &_AS_TRY)\n\t\t\t\t        || (newHeader == &AS_SET && currentHeader == &AS_GET)\n\t\t\t\t        || (newHeader == &AS_REMOVE && currentHeader == &AS_ADD))\n\t\t\t\t\tfoundClosingHeader = true;\n\n\t\t\t\tpreviousHeader = currentHeader;\n\t\t\t\tcurrentHeader = newHeader;\n\t\t\t\tneedHeaderOpeningBracket = true;\n\n\t\t\t\t// is the previous statement on the same line?\n\t\t\t\tif ((previousNonWSChar == ';' || previousNonWSChar == ':')\n\t\t\t\t        && !isInLineBreak\n\t\t\t\t        && isOkToBreakBlock(bracketTypeStack->back()))\n\t\t\t\t{\n\t\t\t\t\t// if breaking lines, break the line at the header\n\t\t\t\t\t// except for multiple 'case' statements on a line\n\t\t\t\t\tif (maxCodeLength != string::npos\n\t\t\t\t\t        && previousHeader != &AS_CASE)\n\t\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t\telse\n\t\t\t\t\t\tisHeaderInMultiStatementLine = true;\n\t\t\t\t}\n\n\t\t\t\tif (foundClosingHeader && previousNonWSChar == '}')\n\t\t\t\t{\n\t\t\t\t\tif (isOkToBreakBlock(bracketTypeStack->back()))\n\t\t\t\t\t\tisLineBreakBeforeClosingHeader();\n\n\t\t\t\t\t// get the adjustment for a comment following the closing header\n\t\t\t\t\tif (isInLineBreak)\n\t\t\t\t\t\tnextLineSpacePadNum = getNextLineCommentAdjustment();\n\t\t\t\t\telse\n\t\t\t\t\t\tspacePadNum = getCurrentLineCommentAdjustment();\n\t\t\t\t}\n\n\t\t\t\t// check if the found header is non-paren header\n\t\t\t\tisNonParenHeader = findHeader(nonParenHeaders) != NULL;\n\n\t\t\t\t// join 'else if' statements\n\t\t\t\tif (currentHeader == &AS_IF && previousHeader == &AS_ELSE && isInLineBreak\n\t\t\t\t        && !shouldBreakElseIfs && !isCharImmediatelyPostLineComment)\n\t\t\t\t{\n\t\t\t\t\t// 'else' must be last thing on the line\n\t\t\t\t\tsize_t start = formattedLine.length() >= 6 ? formattedLine.length() - 6 : 0;\n\t\t\t\t\tif (formattedLine.find(AS_ELSE, start) != string::npos)\n\t\t\t\t\t{\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\tisInLineBreak = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tappendSequence(*currentHeader);\n\t\t\t\tgoForward(currentHeader->length() - 1);\n\t\t\t\t// if a paren-header is found add a space after it, if needed\n\t\t\t\t// this checks currentLine, appendSpacePad() checks formattedLine\n\t\t\t\t// in 'case' and C# 'catch' can be either a paren or non-paren header\n\t\t\t\tif (shouldPadHeader\n\t\t\t\t        && (!isNonParenHeader\n\t\t\t\t            || (currentHeader == &AS_CASE && peekNextChar() == '(')\n\t\t\t\t            || (currentHeader == &AS_CATCH && peekNextChar() == '('))\n\t\t\t\t        && charNum < (int) currentLine.length() - 1 && !isWhiteSpace(currentLine[charNum + 1]))\n\t\t\t\t\tappendSpacePad();\n\n\t\t\t\t// Signal that a header has been reached\n\t\t\t\t// *** But treat a closing while() (as in do...while)\n\t\t\t\t//     as if it were NOT a header since a closing while()\n\t\t\t\t//     should never have a block after it!\n\t\t\t\tif (currentHeader != &AS_CASE && currentHeader != &AS_DEFAULT\n\t\t\t\t        && !(foundClosingHeader && currentHeader == &AS_WHILE))\n\t\t\t\t{\n\t\t\t\t\tisInHeader = true;\n\n\t\t\t\t\t// in C# 'catch' and 'delegate' can be a paren or non-paren header\n\t\t\t\t\tif (isNonParenHeader && !isSharpStyleWithParen(currentHeader))\n\t\t\t\t\t{\n\t\t\t\t\t\tisImmediatelyPostHeader = true;\n\t\t\t\t\t\tisInHeader = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (shouldBreakBlocks\n\t\t\t\t        && isOkToBreakBlock(bracketTypeStack->back())\n\t\t\t\t        && !isHeaderInMultiStatementLine)\n\t\t\t\t{\n\t\t\t\t\tif (previousHeader == NULL\n\t\t\t\t\t        && !foundClosingHeader\n\t\t\t\t\t        && !isCharImmediatelyPostOpenBlock\n\t\t\t\t\t        && !isImmediatelyPostCommentOnly)\n\t\t\t\t\t{\n\t\t\t\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentHeader == &AS_ELSE\n\t\t\t\t\t        || currentHeader == &AS_CATCH\n\t\t\t\t\t        || currentHeader == &AS_FINALLY\n\t\t\t\t\t        || foundClosingHeader)\n\t\t\t\t\t{\n\t\t\t\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (shouldBreakClosingHeaderBlocks\n\t\t\t\t\t        && isCharImmediatelyPostCloseBlock\n\t\t\t\t\t        && !isImmediatelyPostCommentOnly\n\t\t\t\t\t        && currentHeader != &AS_WHILE)    // closing do-while block\n\t\t\t\t\t{\n\t\t\t\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (currentHeader == &AS_CASE\n\t\t\t\t        || currentHeader == &AS_DEFAULT)\n\t\t\t\t\tisInCase = true;\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if ((newHeader = findHeader(preDefinitionHeaders)) != NULL\n\t\t\t         && parenStack->back() == 0\n\t\t\t         && !isInEnum)\t\t// not C++11 enum class\n\t\t\t{\n\t\t\t\tif (newHeader == &AS_NAMESPACE)\n\t\t\t\t\tfoundNamespaceHeader = true;\n\t\t\t\tif (newHeader == &AS_CLASS)\n\t\t\t\t\tfoundClassHeader = true;\n\t\t\t\tif (newHeader == &AS_STRUCT)\n\t\t\t\t\tfoundStructHeader = true;\n\t\t\t\tif (newHeader == &AS_INTERFACE)\n\t\t\t\t\tfoundInterfaceHeader = true;\n\t\t\t\tfoundPreDefinitionHeader = true;\n\t\t\t\tappendSequence(*newHeader);\n\t\t\t\tgoForward(newHeader->length() - 1);\n\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if ((newHeader = findHeader(preCommandHeaders)) != NULL)\n\t\t\t{\n\t\t\t\t// a 'const' variable is not a preCommandHeader\n\t\t\t\tif (previousNonWSChar != ';'\n\t\t\t\t        && previousNonWSChar != '{'\n\t\t\t\t        && getPreviousWord(currentLine, charNum) != AS_STATIC)\n\t\t\t\t\tfoundPreCommandHeader = true;\n\t\t\t}\n\t\t\telse if ((newHeader = findHeader(castOperators)) != NULL)\n\t\t\t{\n\t\t\t\tfoundCastOperator = true;\n\t\t\t\tappendSequence(*newHeader);\n\t\t\t\tgoForward(newHeader->length() - 1);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}   // (isPotentialHeader && !isInTemplate)\n\n\t\tif (isInLineBreak)          // OK to break line here\n\t\t{\n\t\t\tbreakLine();\n\t\t\tif (isInVirginLine)\t\t// adjust for the first line\n\t\t\t{\n\t\t\t\tlineCommentNoBeautify = lineCommentNoIndent;\n\t\t\t\tlineCommentNoIndent = false;\n\t\t\t\tif (isImmediatelyPostPreprocessor)\n\t\t\t\t{\n\t\t\t\t\tisInIndentablePreproc = isIndentableProprocessor;\n\t\t\t\t\tisIndentableProprocessor = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (previousNonWSChar == '}' || currentChar == ';')\n\t\t{\n\t\t\tif (currentChar == ';')\n\t\t\t{\n\t\t\t\tsquareBracketCount = 0;\n\n\t\t\t\tif (((shouldBreakOneLineStatements\n\t\t\t\t        || isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))\n\t\t\t\t        && isOkToBreakBlock(bracketTypeStack->back()))\n\t\t\t\t        && !(attachClosingBracketMode && peekNextChar() == '}'))\n\t\t\t\t{\n\t\t\t\t\tpassedSemicolon = true;\n\t\t\t\t}\n\n\t\t\t\t// append post block empty line for unbracketed header\n\t\t\t\tif (shouldBreakBlocks\n\t\t\t\t        && currentHeader != NULL\n\t\t\t\t        && currentHeader != &AS_CASE\n\t\t\t\t        && currentHeader != &AS_DEFAULT\n\t\t\t\t        && !isHeaderInMultiStatementLine\n\t\t\t\t        && parenStack->back() == 0)\n\t\t\t\t{\n\t\t\t\t\tisAppendPostBlockEmptyLineRequested = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (currentChar != ';'\n\t\t\t        || (needHeaderOpeningBracket && parenStack->back() == 0))\n\t\t\t\tcurrentHeader = NULL;\n\t\t\tresetEndOfStatement();\n\t\t}\n\n\t\tif (currentChar == ':'\n\t\t        && previousChar != ':'         // not part of '::'\n\t\t        && peekNextChar() != ':')      // not part of '::'\n\t\t{\n\t\t\tif (isInCase)\n\t\t\t{\n\t\t\t\tisInCase = false;\n\t\t\t\tif (shouldBreakOneLineStatements)\n\t\t\t\t\tpassedColon = true;\n\t\t\t}\n\t\t\telse if (isCStyle()                     // for C/C++ only\n\t\t\t         && isOkToBreakBlock(bracketTypeStack->back())\n\t\t\t         && shouldBreakOneLineStatements\n\t\t\t         && !foundQuestionMark          // not in a ?: sequence\n\t\t\t         && !foundPreDefinitionHeader   // not in a definition block (e.g. class foo : public bar\n\t\t\t         && previousCommandChar != ')'  // not immediately after closing paren of a method header, e.g. ASFormatter::ASFormatter(...) : ASBeautifier(...)\n\t\t\t         && !foundPreCommandHeader      // not after a 'noexcept'\n\t\t\t         && !squareBracketCount         // not in objC method call\n\t\t\t         && !isInObjCMethodDefinition   // not objC '-' or '+' method\n\t\t\t         && !isInObjCInterface          // not objC @interface\n\t\t\t         && !isInObjCSelector           // not objC @selector\n\t\t\t         && !isDigit(peekNextChar())    // not a bit field\n\t\t\t         && !isInEnum                   // not an enum with a base type\n\t\t\t         && !isInAsm                    // not in extended assembler\n\t\t\t         && !isInAsmOneLine             // not in extended assembler\n\t\t\t         && !isInAsmBlock)              // not in extended assembler\n\t\t\t{\n\t\t\t\tpassedColon = true;\n\t\t\t}\n\n\t\t\tif (isCStyle()\n\t\t\t        && shouldPadMethodColon\n\t\t\t        && (squareBracketCount > 0 || isInObjCMethodDefinition || isInObjCSelector)\n\t\t\t        && !foundQuestionMark)\t\t\t// not in a ?: sequence\n\t\t\t\tpadObjCMethodColon();\n\n\t\t\tif (isInObjCInterface)\n\t\t\t{\n\t\t\t\tappendSpacePad();\n\t\t\t\tif ((int) currentLine.length() > charNum + 1 && !isWhiteSpace(currentLine[charNum + 1]))\n\t\t\t\t\tcurrentLine.insert(charNum + 1, \" \");\n\t\t\t}\n\n\t\t\tif (isClassInitializer())\n\t\t\t\tisInClassInitializer = true;\n\t\t}\n\n\t\tif (currentChar == '?')\n\t\t\tfoundQuestionMark = true;\n\n\t\tif (isPotentialHeader && !isInTemplate)\n\t\t{\n\t\t\tif (findKeyword(currentLine, charNum, AS_NEW))\n\t\t\t\tisInPotentialCalculation = false;\n\n\t\t\tif (findKeyword(currentLine, charNum, AS_RETURN))\n\t\t\t{\n\t\t\t\tisInPotentialCalculation = true;\t// return is the same as an = sign\n\t\t\t\tisImmediatelyPostReturn = true;\n\t\t\t}\n\n\t\t\tif (findKeyword(currentLine, charNum, AS_OPERATOR))\n\t\t\t\tisImmediatelyPostOperator = true;\n\n\t\t\tif (findKeyword(currentLine, charNum, AS_ENUM))\n\t\t\t{\n\t\t\t\tsize_t firstNum = currentLine.find_first_of(\"(){},/\");\n\t\t\t\tif (firstNum == string::npos\n\t\t\t\t        || currentLine[firstNum] == '{'\n\t\t\t\t        || currentLine[firstNum] == '/')\n\t\t\t\t\tisInEnum = true;\n\t\t\t}\n\n\t\t\tif (isCStyle()\n\t\t\t        && findKeyword(currentLine, charNum, AS_THROW)\n\t\t\t        && previousCommandChar != ')'\n\t\t\t        && !foundPreCommandHeader)      // 'const' throw()\n\t\t\t\tisImmediatelyPostThrow = true;\n\n\t\t\tif (isCStyle() && findKeyword(currentLine, charNum, AS_EXTERN) && isExternC())\n\t\t\t\tisInExternC = true;\n\n\t\t\t// Objective-C NSException macros are preCommandHeaders\n\t\t\tif (isCStyle() && findKeyword(currentLine, charNum, AS_NS_DURING))\n\t\t\t\tfoundPreCommandMacro = true;\n\t\t\tif (isCStyle() && findKeyword(currentLine, charNum, AS_NS_HANDLER))\n\t\t\t\tfoundPreCommandMacro = true;\n\n\t\t\tif (isCStyle() && isExecSQL(currentLine, charNum))\n\t\t\t\tisInExecSQL = true;\n\n\t\t\tif (isCStyle())\n\t\t\t{\n\t\t\t\tif (findKeyword(currentLine, charNum, AS_ASM)\n\t\t\t\t        || findKeyword(currentLine, charNum, AS__ASM__))\n\t\t\t\t{\n\t\t\t\t\tisInAsm = true;\n\t\t\t\t}\n\t\t\t\telse if (findKeyword(currentLine, charNum, AS_MS_ASM)\t\t// microsoft specific\n\t\t\t\t         || findKeyword(currentLine, charNum, AS_MS__ASM))\n\t\t\t\t{\n\t\t\t\t\tint index = 4;\n\t\t\t\t\tif (peekNextChar() == '_')\t// check for __asm\n\t\t\t\t\t\tindex = 5;\n\n\t\t\t\t\tchar peekedChar = ASBase::peekNextChar(currentLine, charNum + index);\n\t\t\t\t\tif (peekedChar == '{' || peekedChar == ' ')\n\t\t\t\t\t\tisInAsmBlock = true;\n\t\t\t\t\telse\n\t\t\t\t\t\tisInAsmOneLine = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isJavaStyle()\n\t\t\t        && (findKeyword(currentLine, charNum, AS_STATIC)\n\t\t\t            && isNextCharOpeningBracket(charNum + 6)))\n\t\t\t\tisJavaStaticConstructor = true;\n\n\t\t\tif (isSharpStyle()\n\t\t\t        && (findKeyword(currentLine, charNum, AS_DELEGATE)\n\t\t\t            || findKeyword(currentLine, charNum, AS_UNCHECKED)))\n\t\t\t\tisSharpDelegate = true;\n\n\t\t\t// append the entire name\n\t\t\tstring name = getCurrentWord(currentLine, charNum);\n\t\t\t// must pad the 'and' and 'or' operators if required\n\t\t\tif (name == \"and\" || name == \"or\")\n\t\t\t{\n\t\t\t\tif (shouldPadOperators && previousNonWSChar != ':')\n\t\t\t\t{\n\t\t\t\t\tappendSpacePad();\n\t\t\t\t\tappendOperator(name);\n\t\t\t\t\tgoForward(name.length() - 1);\n\t\t\t\t\tif (!isBeforeAnyComment()\n\t\t\t\t\t        && !(currentLine.compare(charNum + 1, 1, AS_SEMICOLON) == 0)\n\t\t\t\t\t        && !(currentLine.compare(charNum + 1, 2, AS_SCOPE_RESOLUTION) == 0))\n\t\t\t\t\t\tappendSpaceAfter();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tappendOperator(name);\n\t\t\t\t\tgoForward(name.length() - 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tappendSequence(name);\n\t\t\t\tgoForward(name.length() - 1);\n\t\t\t}\n\n\t\t\tcontinue;\n\n\t\t}   // (isPotentialHeader &&  !isInTemplate)\n\n\t\t// determine if this is an Objective-C statement\n\n\t\tif (currentChar == '@'\n\t\t        && isCharPotentialHeader(currentLine, charNum + 1)\n\t\t        && findKeyword(currentLine, charNum + 1, AS_INTERFACE)\n\t\t        && isBracketType(bracketTypeStack->back(), NULL_TYPE))\n\t\t{\n\t\t\tisInObjCInterface = true;\n\t\t\tstring name = '@' + AS_INTERFACE;\n\t\t\tappendSequence(name);\n\t\t\tgoForward(name.length() - 1);\n\t\t\tcontinue;\n\t\t}\n\t\telse if (currentChar == '@'\n\t\t         && isCharPotentialHeader(currentLine, charNum + 1)\n\t\t         && findKeyword(currentLine, charNum + 1, AS_SELECTOR))\n\t\t{\n\t\t\tisInObjCSelector = true;\n\t\t\tstring name = '@' + AS_SELECTOR;\n\t\t\tappendSequence(name);\n\t\t\tgoForward(name.length() - 1);\n\t\t\tcontinue;\n\t\t}\n\t\telse if ((currentChar == '-' || currentChar == '+')\n\t\t         && peekNextChar() == '('\n\t\t         && isBracketType(bracketTypeStack->back(), NULL_TYPE)\n\t\t         && !isInPotentialCalculation)\n\t\t{\n\t\t\tisInObjCMethodDefinition = true;\n\t\t\tisInObjCInterface = false;\n\t\t\tappendCurrentChar();\n\t\t\tif (shouldPadMethodPrefix || shouldUnPadMethodPrefix)\n\t\t\t{\n\t\t\t\tsize_t i = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\t\t\tif (i != string::npos)\n\t\t\t\t\tgoForward(i - charNum - 1);\n\t\t\t\tif (shouldPadMethodPrefix)\n\t\t\t\t\tappendSpaceAfter();\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// determine if this is a potential calculation\n\n\t\tbool isPotentialOperator = isCharPotentialOperator(currentChar);\n\t\tnewHeader = NULL;\n\n\t\tif (isPotentialOperator)\n\t\t{\n\t\t\tnewHeader = findOperator(operators);\n\n\t\t\t// check for Java ? wildcard\n\t\t\tif (newHeader == &AS_GCC_MIN_ASSIGN && isJavaStyle() && isInTemplate)\n\t\t\t\tnewHeader = NULL;\n\n\t\t\tif (newHeader != NULL)\n\t\t\t{\n\t\t\t\tif (newHeader == &AS_LAMBDA)\n\t\t\t\t\tfoundPreCommandHeader = true;\n\n\t\t\t\t// correct mistake of two >> closing a template\n\t\t\t\tif (isInTemplate && (newHeader == &AS_GR_GR || newHeader == &AS_GR_GR_GR))\n\t\t\t\t\tnewHeader = &AS_GR;\n\n\t\t\t\tif (!isInPotentialCalculation)\n\t\t\t\t{\n\t\t\t\t\t// must determine if newHeader is an assignment operator\n\t\t\t\t\t// do NOT use findOperator!!!\n\t\t\t\t\tif (find(assignmentOperators->begin(), assignmentOperators->end(), newHeader)\n\t\t\t\t\t        != assignmentOperators->end())\n\t\t\t\t\t{\n\t\t\t\t\t\tfoundPreCommandHeader = false;\n\t\t\t\t\t\tchar peekedChar = peekNextChar();\n\t\t\t\t\t\tisInPotentialCalculation = !(newHeader == &AS_EQUAL && peekedChar == '*')\n\t\t\t\t\t\t                           && !(newHeader == &AS_EQUAL && peekedChar == '&')\n\t\t\t\t\t\t                           && !isCharImmediatelyPostOperator;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// process pointers and references\n\t\t// check newHeader to eliminate things like '&&' sequence\n\t\tif (!isJavaStyle()\n\t\t        && (newHeader == &AS_MULT\n\t\t            || newHeader == &AS_BIT_AND\n\t\t            || newHeader == &AS_BIT_XOR\n\t\t            || newHeader == &AS_AND)\n\t\t        && isPointerOrReference())\n\t\t{\n\t\t\tif (!isDereferenceOrAddressOf() && !isOperatorPaddingDisabled())\n\t\t\t\tformatPointerOrReference();\n\t\t\telse\n\t\t\t{\n\t\t\t\tappendOperator(*newHeader);\n\t\t\t\tgoForward(newHeader->length() - 1);\n\t\t\t}\n\t\t\tisImmediatelyPostPointerOrReference = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (shouldPadOperators && newHeader != NULL && !isOperatorPaddingDisabled())\n\t\t{\n\t\t\tpadOperators(newHeader);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// pad commas and semi-colons\n\t\tif (currentChar == ';'\n\t\t        || (currentChar == ',' && shouldPadOperators))\n\t\t{\n\t\t\tchar nextChar = ' ';\n\t\t\tif (charNum + 1 < (int) currentLine.length())\n\t\t\t\tnextChar = currentLine[charNum + 1];\n\t\t\tif (!isWhiteSpace(nextChar)\n\t\t\t        && nextChar != '}'\n\t\t\t        && nextChar != ')'\n\t\t\t        && nextChar != ']'\n\t\t\t        && nextChar != '>'\n\t\t\t        && nextChar != ';'\n\t\t\t        && !isBeforeAnyComment()\n\t\t\t        /* && !(isBracketType(bracketTypeStack->back(), ARRAY_TYPE)) */\n\t\t\t   )\n\t\t\t{\n\t\t\t\tappendCurrentChar();\n\t\t\t\tappendSpaceAfter();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// do NOT use 'continue' after this, it must do padParens if necessary\n\t\tif (currentChar == '('\n\t\t        && shouldPadHeader\n\t\t        && (isCharImmediatelyPostReturn || isCharImmediatelyPostThrow))\n\t\t\tappendSpacePad();\n\n\t\tif ((currentChar == '(' || currentChar == ')')\n\t\t        && (shouldPadParensOutside || shouldPadParensInside || shouldUnPadParens || shouldPadFirstParen))\n\t\t{\n\t\t\tpadParens();\n\t\t\tcontinue;\n\t\t}\n\n\t\t// bypass the entire operator\n\t\tif (newHeader != NULL)\n\t\t{\n\t\t\tappendOperator(*newHeader);\n\t\t\tgoForward(newHeader->length() - 1);\n\t\t\tcontinue;\n\t\t}\n\n\t\tappendCurrentChar();\n\n\t}   // end of while loop  *  end of while loop  *  end of while loop  *  end of while loop\n\n\t// return a beautified (i.e. correctly indented) line.\n\n\tstring beautifiedLine;\n\tsize_t readyFormattedLineLength = trim(readyFormattedLine).length();\n\tbool isInNamespace = isBracketType(bracketTypeStack->back(), NAMESPACE_TYPE);\n\n\tif (prependEmptyLine\t\t// prepend a blank line before this formatted line\n\t        && readyFormattedLineLength > 0\n\t        && previousReadyFormattedLineLength > 0)\n\t{\n\t\tisLineReady = true;\t\t// signal a waiting readyFormattedLine\n\t\tbeautifiedLine = beautify(\"\");\n\t\tpreviousReadyFormattedLineLength = 0;\n\t\t// call the enhancer for new empty lines\n\t\tenhancer->enhance(beautifiedLine, isInNamespace, isInPreprocessorBeautify, isInBeautifySQL);\n\t}\n\telse\t\t// format the current formatted line\n\t{\n\t\tisLineReady = false;\n\t\thorstmannIndentInStatement = horstmannIndentChars;\n\t\tbeautifiedLine = beautify(readyFormattedLine);\n\t\tpreviousReadyFormattedLineLength = readyFormattedLineLength;\n\t\t// the enhancer is not called for no-indent line comments\n\t\tif (!lineCommentNoBeautify && !isFormattingModeOff)\n\t\t\tenhancer->enhance(beautifiedLine, isInNamespace, isInPreprocessorBeautify, isInBeautifySQL);\n\t\thorstmannIndentChars = 0;\n\t\tlineCommentNoBeautify = lineCommentNoIndent;\n\t\tlineCommentNoIndent = false;\n\t\tisInIndentablePreproc = isIndentableProprocessor;\n\t\tisIndentableProprocessor = false;\n\t\tisElseHeaderIndent = elseHeaderFollowsComments;\n\t\tisCaseHeaderCommentIndent = caseHeaderFollowsComments;\n\t\tif (isCharImmediatelyPostNonInStmt)\n\t\t{\n\t\t\tisNonInStatementArray = false;\n\t\t\tisCharImmediatelyPostNonInStmt = false;\n\t\t}\n\t\tisInPreprocessorBeautify = isInPreprocessor;\t// used by ASEnhancer\n\t\tisInBeautifySQL = isInExecSQL;\t\t\t\t\t// used by ASEnhancer\n\t}\n\n\tprependEmptyLine = false;\n\tassert(computeChecksumOut(beautifiedLine));\n\treturn beautifiedLine;\n}\n\n/**\n * check if there are any indented lines ready to be read by nextLine()\n *\n * @return    are there any indented lines ready?\n */\nbool ASFormatter::hasMoreLines() const\n{\n\treturn !endOfCodeReached;\n}\n\n/**\n * comparison function for BracketType enum\n */\nbool ASFormatter::isBracketType(BracketType a, BracketType b) const\n{\n\tif (a == NULL_TYPE || b == NULL_TYPE)\n\t\treturn (a == b);\n\treturn ((a & b) == b);\n}\n\n/**\n * set the formatting style.\n *\n * @param style         the formatting style.\n */\nvoid ASFormatter::setFormattingStyle(FormatStyle style)\n{\n\tformattingStyle = style;\n}\n\n/**\n * set the add brackets mode.\n * options:\n *    true     brackets added to headers for single line statements.\n *    false    brackets NOT added to headers for single line statements.\n *\n * @param state         the add brackets state.\n */\nvoid ASFormatter::setAddBracketsMode(bool state)\n{\n\tshouldAddBrackets = state;\n}\n\n/**\n * set the add one line brackets mode.\n * options:\n *    true     one line brackets added to headers for single line statements.\n *    false    one line brackets NOT added to headers for single line statements.\n *\n * @param state         the add one line brackets state.\n */\nvoid ASFormatter::setAddOneLineBracketsMode(bool state)\n{\n\tshouldAddBrackets = state;\n\tshouldAddOneLineBrackets = state;\n}\n\n/**\n * set the remove brackets mode.\n * options:\n *    true     brackets removed from headers for single line statements.\n *    false    brackets NOT removed from headers for single line statements.\n *\n * @param state         the remove brackets state.\n */\nvoid ASFormatter::setRemoveBracketsMode(bool state)\n{\n\tshouldRemoveBrackets = state;\n}\n\n/**\n * set the bracket formatting mode.\n * options:\n *\n * @param mode         the bracket formatting mode.\n */\nvoid ASFormatter::setBracketFormatMode(BracketMode mode)\n{\n\tbracketFormatMode = mode;\n}\n\n/**\n * set 'break after' mode for maximum code length\n *\n * @param state         the 'break after' mode.\n */\nvoid ASFormatter::setBreakAfterMode(bool state)\n{\n\tshouldBreakLineAfterLogical = state;\n}\n\n/**\n * set closing header bracket breaking mode\n * options:\n *    true     brackets just before closing headers (e.g. 'else', 'catch')\n *             will be broken, even if standard brackets are attached.\n *    false    closing header brackets will be treated as standard brackets.\n *\n * @param state         the closing header bracket breaking mode.\n */\nvoid ASFormatter::setBreakClosingHeaderBracketsMode(bool state)\n{\n\tshouldBreakClosingHeaderBrackets = state;\n}\n\n/**\n * set 'else if()' breaking mode\n * options:\n *    true     'else' headers will be broken from their succeeding 'if' headers.\n *    false    'else' headers will be attached to their succeeding 'if' headers.\n *\n * @param state         the 'else if()' breaking mode.\n */\nvoid ASFormatter::setBreakElseIfsMode(bool state)\n{\n\tshouldBreakElseIfs = state;\n}\n\n/**\n * set maximum code length\n *\n * @param max         the maximum code length.\n */\nvoid ASFormatter::setMaxCodeLength(int max)\n{\n\tmaxCodeLength = max;\n}\n\n/**\n * set operator padding mode.\n * options:\n *    true     statement operators will be padded with spaces around them.\n *    false    statement operators will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setOperatorPaddingMode(bool state)\n{\n\tshouldPadOperators = state;\n}\n\n/**\n * set parenthesis outside padding mode.\n * options:\n *    true     statement parentheses will be padded with spaces around them.\n *    false    statement parentheses will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensOutsidePaddingMode(bool state)\n{\n\tshouldPadParensOutside = state;\n}\n\n/**\n * set parenthesis inside padding mode.\n * options:\n *    true     statement parenthesis will be padded with spaces around them.\n *    false    statement parenthesis will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensInsidePaddingMode(bool state)\n{\n\tshouldPadParensInside = state;\n}\n\n/**\n * set padding mode before one or more open parentheses.\n * options:\n *    true     first open parenthesis will be padded with a space before.\n *    false    first open parenthesis will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensFirstPaddingMode(bool state)\n{\n\tshouldPadFirstParen = state;\n}\n\n/**\n * set header padding mode.\n * options:\n *    true     headers will be padded with spaces around them.\n *    false    headers will not be padded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensHeaderPaddingMode(bool state)\n{\n\tshouldPadHeader = state;\n}\n\n/**\n * set parenthesis unpadding mode.\n * options:\n *    true     statement parenthesis will be unpadded with spaces removed around them.\n *    false    statement parenthesis will not be unpadded.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setParensUnPaddingMode(bool state)\n{\n\tshouldUnPadParens = state;\n}\n\n/**\n* set the state of the preprocessor indentation option.\n* If true, #ifdef blocks at level 0 will be indented.\n*\n* @param   state             state of option.\n*/\nvoid ASFormatter::setPreprocBlockIndent(bool state)\n{\n\tshouldIndentPreprocBlock = state;\n}\n\n/**\n * Set strip comment prefix mode.\n * options:\n *    true     strip leading '*' in a comment.\n *    false    leading '*' in a comment will be left unchanged.\n *\n * @param state         the strip comment prefix mode.\n */\nvoid ASFormatter::setStripCommentPrefix(bool state)\n{\n\tshouldStripCommentPrefix = state;\n}\n\n/**\n * set objective-c '-' or '+' class prefix padding mode.\n * options:\n *    true     class prefix will be padded a spaces after them.\n *    false    class prefix will be left unchanged.\n *\n * @param state         the padding mode.\n */\nvoid ASFormatter::setMethodPrefixPaddingMode(bool state)\n{\n\tshouldPadMethodPrefix = state;\n}\n\n/**\n * set objective-c '-' or '+' class prefix unpadding mode.\n * options:\n *    true     class prefix will be unpadded with spaces after them removed.\n *    false    class prefix will left unchanged.\n *\n * @param state         the unpadding mode.\n */\nvoid ASFormatter::setMethodPrefixUnPaddingMode(bool state)\n{\n\tshouldUnPadMethodPrefix = state;\n}\n\n/**\n * set objective-c method colon padding mode.\n *\n * @param mode         objective-c colon padding mode.\n */\nvoid ASFormatter::setObjCColonPaddingMode(ObjCColonPad mode)\n{\n\tshouldPadMethodColon = true;\n\tobjCColonPadMode = mode;\n}\n\n/**\n * set option to attach closing brackets\n *\n * @param state        true = attach, false = don't attach.\n */\nvoid ASFormatter::setAttachClosingBracketMode(bool state)\n{\n\tattachClosingBracketMode = state;\n}\n\n/**\n * set option to attach class brackets\n *\n * @param state        true = attach, false = use style default.\n */\nvoid ASFormatter::setAttachClass(bool state)\n{\n\tshouldAttachClass = state;\n}\n\n/**\n * set option to attach extern \"C\" brackets\n *\n * @param state        true = attach, false = use style default.\n */\nvoid ASFormatter::setAttachExternC(bool state)\n{\n\tshouldAttachExternC = state;\n}\n\n/**\n * set option to attach namespace brackets\n *\n * @param state        true = attach, false = use style default.\n */\nvoid ASFormatter::setAttachNamespace(bool state)\n{\n\tshouldAttachNamespace = state;\n}\n\n/**\n * set option to attach inline brackets\n *\n * @param state        true = attach, false = use style default.\n */\nvoid ASFormatter::setAttachInline(bool state)\n{\n\tshouldAttachInline = state;\n}\n\n/**\n * set option to break/not break one-line blocks\n *\n * @param state        true = break, false = don't break.\n */\nvoid ASFormatter::setBreakOneLineBlocksMode(bool state)\n{\n\tshouldBreakOneLineBlocks = state;\n}\n\nvoid ASFormatter::setCloseTemplatesMode(bool state)\n{\n\tshouldCloseTemplates = state;\n}\n\n/**\n * set option to break/not break lines consisting of multiple statements.\n *\n * @param state        true = break, false = don't break.\n */\nvoid ASFormatter::setSingleStatementsMode(bool state)\n{\n\tshouldBreakOneLineStatements = state;\n}\n\n/**\n * set option to convert tabs to spaces.\n *\n * @param state        true = convert, false = don't convert.\n */\nvoid ASFormatter::setTabSpaceConversionMode(bool state)\n{\n\tshouldConvertTabs = state;\n}\n\n/**\n * set option to indent comments in column 1.\n *\n * @param state        true = indent, false = don't indent.\n */\nvoid ASFormatter::setIndentCol1CommentsMode(bool state)\n{\n\tshouldIndentCol1Comments = state;\n}\n\n/**\n * set option to force all line ends to a particular style.\n *\n * @param fmt           format enum value\n */\nvoid ASFormatter::setLineEndFormat(LineEndFormat fmt)\n{\n\tlineEnd = fmt;\n}\n\n/**\n * set option to break unrelated blocks of code with empty lines.\n *\n * @param state        true = convert, false = don't convert.\n */\nvoid ASFormatter::setBreakBlocksMode(bool state)\n{\n\tshouldBreakBlocks = state;\n}\n\n/**\n * set option to break closing header blocks of code (such as 'else', 'catch', ...) with empty lines.\n *\n * @param state        true = convert, false = don't convert.\n */\nvoid ASFormatter::setBreakClosingHeaderBlocksMode(bool state)\n{\n\tshouldBreakClosingHeaderBlocks = state;\n}\n\n/**\n * set option to delete empty lines.\n *\n * @param state        true = delete, false = don't delete.\n */\nvoid ASFormatter::setDeleteEmptyLinesMode(bool state)\n{\n\tshouldDeleteEmptyLines = state;\n}\n\n/**\n * set the pointer alignment.\n *\n * @param alignment    the pointer alignment.\n */\nvoid ASFormatter::setPointerAlignment(PointerAlign alignment)\n{\n\tpointerAlignment = alignment;\n}\n\nvoid ASFormatter::setReferenceAlignment(ReferenceAlign alignment)\n{\n\treferenceAlignment = alignment;\n}\n\n/**\n * jump over several characters.\n *\n * @param i       the number of characters to jump over.\n */\nvoid ASFormatter::goForward(int i)\n{\n\twhile (--i >= 0)\n\t\tgetNextChar();\n}\n\n/**\n * peek at the next unread character.\n *\n * @return     the next unread character.\n */\nchar ASFormatter::peekNextChar() const\n{\n\tchar ch = ' ';\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\n\tif (peekNum == string::npos)\n\t\treturn ch;\n\n\tch = currentLine[peekNum];\n\n\treturn ch;\n}\n\n/**\n * check if current placement is before a comment\n *\n * @return     is before a comment.\n */\nbool ASFormatter::isBeforeComment() const\n{\n\tbool foundComment = false;\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\n\tif (peekNum == string::npos)\n\t\treturn foundComment;\n\n\tfoundComment = (currentLine.compare(peekNum, 2, \"/*\") == 0);\n\n\treturn foundComment;\n}\n\n/**\n * check if current placement is before a comment or line-comment\n *\n * @return     is before a comment or line-comment.\n */\nbool ASFormatter::isBeforeAnyComment() const\n{\n\tbool foundComment = false;\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\n\tif (peekNum == string::npos)\n\t\treturn foundComment;\n\n\tfoundComment = (currentLine.compare(peekNum, 2, \"/*\") == 0\n\t                || currentLine.compare(peekNum, 2, \"//\") == 0);\n\n\treturn foundComment;\n}\n\n/**\n * check if current placement is before a comment or line-comment\n * if a block comment it must be at the end of the line\n *\n * @return     is before a comment or line-comment.\n */\nbool ASFormatter::isBeforeAnyLineEndComment(int startPos) const\n{\n\tbool foundLineEndComment = false;\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", startPos + 1);\n\n\tif (peekNum != string::npos)\n\t{\n\t\tif (currentLine.compare(peekNum, 2, \"//\") == 0)\n\t\t\tfoundLineEndComment = true;\n\t\telse if (currentLine.compare(peekNum, 2, \"/*\") == 0)\n\t\t{\n\t\t\t// comment must be closed on this line with nothing after it\n\t\t\tsize_t endNum = currentLine.find(\"*/\", peekNum + 2);\n\t\t\tif (endNum != string::npos)\n\t\t\t{\n\t\t\t\tsize_t nextChar = currentLine.find_first_not_of(\" \\t\", endNum + 2);\n\t\t\t\tif (nextChar == string::npos)\n\t\t\t\t\tfoundLineEndComment = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn foundLineEndComment;\n}\n\n/**\n * check if current placement is before a comment followed by a line-comment\n *\n * @return     is before a multiple line-end comment.\n */\nbool ASFormatter::isBeforeMultipleLineEndComments(int startPos) const\n{\n\tbool foundMultipleLineEndComment = false;\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", startPos + 1);\n\n\tif (peekNum != string::npos)\n\t{\n\t\tif (currentLine.compare(peekNum, 2, \"/*\") == 0)\n\t\t{\n\t\t\t// comment must be closed on this line with nothing after it\n\t\t\tsize_t endNum = currentLine.find(\"*/\", peekNum + 2);\n\t\t\tif (endNum != string::npos)\n\t\t\t{\n\t\t\t\tsize_t nextChar = currentLine.find_first_not_of(\" \\t\", endNum + 2);\n\t\t\t\tif (nextChar != string::npos\n\t\t\t\t        && currentLine.compare(nextChar, 2, \"//\") == 0)\n\t\t\t\t\tfoundMultipleLineEndComment = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn foundMultipleLineEndComment;\n}\n\n/**\n * get the next character, increasing the current placement in the process.\n * the new character is inserted into the variable currentChar.\n *\n * @return   whether succeeded to receive the new character.\n */\nbool ASFormatter::getNextChar()\n{\n\tisInLineBreak = false;\n\tpreviousChar = currentChar;\n\n\tif (!isWhiteSpace(currentChar))\n\t{\n\t\tpreviousNonWSChar = currentChar;\n\t\tif (!isInComment && !isInLineComment && !isInQuote\n\t\t        && !isImmediatelyPostComment\n\t\t        && !isImmediatelyPostLineComment\n\t\t        && !isInPreprocessor\n\t\t        && !isSequenceReached(\"/*\")\n\t\t        && !isSequenceReached(\"//\"))\n\t\t\tpreviousCommandChar = currentChar;\n\t}\n\n\tif (charNum + 1 < (int) currentLine.length()\n\t        && (!isWhiteSpace(peekNextChar()) || isInComment || isInLineComment))\n\t{\n\t\tcurrentChar = currentLine[++charNum];\n\n\t\tif (currentChar == '\\t' && shouldConvertTabs)\n\t\t\tconvertTabToSpaces();\n\n\t\treturn true;\n\t}\n\n\t// end of line has been reached\n\treturn getNextLine();\n}\n\n/**\n * get the next line of input, increasing the current placement in the process.\n *\n * @param emptyLineWasDeleted         an empty line was deleted.\n * @return   whether succeeded in reading the next line.\n */\nbool ASFormatter::getNextLine(bool emptyLineWasDeleted /*false*/)\n{\n\tif (sourceIterator->hasMoreLines())\n\t{\n\t\tif (appendOpeningBracket)\n\t\t\tcurrentLine = \"{\";\t\t// append bracket that was removed from the previous line\n\t\telse\n\t\t{\n\t\t\tcurrentLine = sourceIterator->nextLine(emptyLineWasDeleted);\n\t\t\tassert(computeChecksumIn(currentLine));\n\t\t}\n\t\t// reset variables for new line\n\t\tinLineNumber++;\n\t\tif (endOfAsmReached)\n\t\t\tendOfAsmReached = isInAsmBlock = isInAsm = false;\n\t\tshouldKeepLineUnbroken = false;\n\t\tisInCommentStartLine = false;\n\t\tisInCase = false;\n\t\tisInAsmOneLine = false;\n\t\tisHeaderInMultiStatementLine = false;\n\t\tisInQuoteContinuation = isInVerbatimQuote | haveLineContinuationChar;\n\t\thaveLineContinuationChar = false;\n\t\tisImmediatelyPostEmptyLine = lineIsEmpty;\n\t\tpreviousChar = ' ';\n\n\t\tif (currentLine.length() == 0)\n\t\t\tcurrentLine = string(\" \");        // a null is inserted if this is not done\n\n\t\t// unless reading in the first line of the file, break a new line.\n\t\tif (!isVirgin)\n\t\t\tisInLineBreak = true;\n\t\telse\n\t\t\tisVirgin = false;\n\n\t\tif (isImmediatelyPostNonInStmt)\n\t\t{\n\t\t\tisCharImmediatelyPostNonInStmt = true;\n\t\t\tisImmediatelyPostNonInStmt = false;\n\t\t}\n\n\t\t// check if is in preprocessor before line trimming\n\t\t// a blank line after a \\ will remove the flag\n\t\tisImmediatelyPostPreprocessor = isInPreprocessor;\n\t\tif (!isInComment\n\t\t        && (previousNonWSChar != '\\\\'\n\t\t            || isEmptyLine(currentLine)))\n\t\t\tisInPreprocessor = false;\n\n\t\tif (passedSemicolon)\n\t\t\tisInExecSQL = false;\n\t\tinitNewLine();\n\n\t\tcurrentChar = currentLine[charNum];\n\t\tif (isInHorstmannRunIn && previousNonWSChar == '{' && !isInComment)\n\t\t\tisInLineBreak = false;\n\t\tisInHorstmannRunIn = false;\n\n\t\tif (currentChar == '\\t' && shouldConvertTabs)\n\t\t\tconvertTabToSpaces();\n\n\t\t// check for an empty line inside a command bracket.\n\t\t// if yes then read the next line (calls getNextLine recursively).\n\t\t// must be after initNewLine.\n\t\tif (shouldDeleteEmptyLines\n\t\t        && lineIsEmpty\n\t\t        && isBracketType((*bracketTypeStack)[bracketTypeStack->size() - 1], COMMAND_TYPE))\n\t\t{\n\t\t\tif (!shouldBreakBlocks || previousNonWSChar == '{' || !commentAndHeaderFollows())\n\t\t\t{\n\t\t\t\tisInPreprocessor = isImmediatelyPostPreprocessor;\t\t// restore\n\t\t\t\tlineIsEmpty = false;\n\t\t\t\treturn getNextLine(true);\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\telse\n\t{\n\t\tendOfCodeReached = true;\n\t\treturn false;\n\t}\n}\n\n/**\n * jump over the leading white space in the current line,\n * IF the line does not begin a comment or is in a preprocessor definition.\n */\nvoid ASFormatter::initNewLine()\n{\n\tsize_t len = currentLine.length();\n\tsize_t tabSize = getTabLength();\n\tcharNum = 0;\n\n\t// don't trim these\n\tif (isInQuoteContinuation\n\t        || (isInPreprocessor && !getPreprocDefineIndent()))\n\t\treturn;\n\n\t// SQL continuation lines must be adjusted so the leading spaces\n\t// is equivalent to the opening EXEC SQL\n\tif (isInExecSQL)\n\t{\n\t\t// replace leading tabs with spaces\n\t\t// so that continuation indent will be spaces\n\t\tsize_t tabCount_ = 0;\n\t\tsize_t i;\n\t\tfor (i = 0; i < currentLine.length(); i++)\n\t\t{\n\t\t\tif (!isWhiteSpace(currentLine[i]))\t\t// stop at first text\n\t\t\t\tbreak;\n\t\t\tif (currentLine[i] == '\\t')\n\t\t\t{\n\t\t\t\tsize_t numSpaces = tabSize - ((tabCount_ + i) % tabSize);\n\t\t\t\tcurrentLine.replace(i, 1, numSpaces, ' ');\n\t\t\t\ttabCount_++;\n\t\t\t\ti += tabSize - 1;\n\t\t\t}\n\t\t}\n\t\t// this will correct the format if EXEC SQL is not a hanging indent\n\t\ttrimContinuationLine();\n\t\treturn;\n\t}\n\n\t// comment continuation lines must be adjusted so the leading spaces\n\t// is equivalent to the opening comment\n\tif (isInComment)\n\t{\n\t\tif (noTrimCommentContinuation)\n\t\t\tleadingSpaces = tabIncrementIn = 0;\n\t\ttrimContinuationLine();\n\t\treturn;\n\t}\n\n\t// compute leading spaces\n\tisImmediatelyPostCommentOnly = lineIsLineCommentOnly || lineEndsInCommentOnly;\n\tlineIsCommentOnly = false;\n\tlineIsLineCommentOnly = false;\n\tlineEndsInCommentOnly = false;\n\tdoesLineStartComment = false;\n\tcurrentLineBeginsWithBracket = false;\n\tlineIsEmpty = false;\n\tcurrentLineFirstBracketNum = string::npos;\n\ttabIncrementIn = 0;\n\n\t// bypass whitespace at the start of a line\n\t// preprocessor tabs are replaced later in the program\n\tfor (charNum = 0; isWhiteSpace(currentLine[charNum]) && charNum + 1 < (int) len; charNum++)\n\t{\n\t\tif (currentLine[charNum] == '\\t' && !isInPreprocessor)\n\t\t\ttabIncrementIn += tabSize - 1 - ((tabIncrementIn + charNum) % tabSize);\n\t}\n\tleadingSpaces = charNum + tabIncrementIn;\n\n\tif (isSequenceReached(\"/*\"))\n\t{\n\t\tdoesLineStartComment = true;\n\t\tif ((int) currentLine.length() > charNum + 2\n\t\t        && currentLine.find(\"*/\", charNum + 2) != string::npos)\n\t\t\tlineIsCommentOnly = true;\n\t}\n\telse if (isSequenceReached(\"//\"))\n\t{\n\t\tlineIsLineCommentOnly = true;\n\t}\n\telse if (isSequenceReached(\"{\"))\n\t{\n\t\tcurrentLineBeginsWithBracket = true;\n\t\tcurrentLineFirstBracketNum = charNum;\n\t\tsize_t firstText = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\tif (firstText != string::npos)\n\t\t{\n\t\t\tif (currentLine.compare(firstText, 2, \"//\") == 0)\n\t\t\t\tlineIsLineCommentOnly = true;\n\t\t\telse if (currentLine.compare(firstText, 2, \"/*\") == 0\n\t\t\t         || isExecSQL(currentLine, firstText))\n\t\t\t{\n\t\t\t\t// get the extra adjustment\n\t\t\t\tsize_t j;\n\t\t\t\tfor (j = charNum + 1; j < firstText && isWhiteSpace(currentLine[j]); j++)\n\t\t\t\t{\n\t\t\t\t\tif (currentLine[j] == '\\t')\n\t\t\t\t\t\ttabIncrementIn += tabSize - 1 - ((tabIncrementIn + j) % tabSize);\n\t\t\t\t}\n\t\t\t\tleadingSpaces = j + tabIncrementIn;\n\t\t\t\tif (currentLine.compare(firstText, 2, \"/*\") == 0)\n\t\t\t\t\tdoesLineStartComment = true;\n\t\t\t}\n\t\t}\n\t}\n\telse if (isWhiteSpace(currentLine[charNum]) && !(charNum + 1 < (int) currentLine.length()))\n\t{\n\t\tlineIsEmpty = true;\n\t}\n\n\t// do not trim indented preprocessor define (except for comment continuation lines)\n\tif (isInPreprocessor)\n\t{\n\t\tif (!doesLineStartComment)\n\t\t\tleadingSpaces = 0;\n\t\tcharNum = 0;\n\t}\n}\n\n/**\n * Append a character to the current formatted line.\n * The formattedLine split points are updated.\n *\n * @param ch               the character to append.\n * @param canBreakLine     if true, a registered line-break\n */\nvoid ASFormatter::appendChar(char ch, bool canBreakLine)\n{\n\tif (canBreakLine && isInLineBreak)\n\t\tbreakLine();\n\n\tformattedLine.append(1, ch);\n\tisImmediatelyPostCommentOnly = false;\n\tif (maxCodeLength != string::npos)\n\t{\n\t\t// These compares reduce the frequency of function calls.\n\t\tif (isOkToSplitFormattedLine())\n\t\t\tupdateFormattedLineSplitPoints(ch);\n\t\tif (formattedLine.length() > maxCodeLength)\n\t\t\ttestForTimeToSplitFormattedLine();\n\t}\n}\n\n/**\n * Append a string sequence to the current formatted line.\n * The formattedLine split points are NOT updated.\n * But the formattedLine is checked for time to split.\n *\n * @param sequence         the sequence to append.\n * @param canBreakLine     if true, a registered line-break\n */\nvoid ASFormatter::appendSequence(const string &sequence, bool canBreakLine)\n{\n\tif (canBreakLine && isInLineBreak)\n\t\tbreakLine();\n\tformattedLine.append(sequence);\n\tif (formattedLine.length() > maxCodeLength)\n\t\ttestForTimeToSplitFormattedLine();\n}\n\n/**\n * Append an operator sequence to the current formatted line.\n * The formattedLine split points are updated.\n *\n * @param sequence         the sequence to append.\n * @param canBreakLine     if true, a registered line-break\n */\nvoid ASFormatter::appendOperator(const string &sequence, bool canBreakLine)\n{\n\tif (canBreakLine && isInLineBreak)\n\t\tbreakLine();\n\tformattedLine.append(sequence);\n\tif (maxCodeLength != string::npos)\n\t{\n\t\t// These compares reduce the frequency of function calls.\n\t\tif (isOkToSplitFormattedLine())\n\t\t\tupdateFormattedLineSplitPointsOperator(sequence);\n\t\tif (formattedLine.length() > maxCodeLength)\n\t\t\ttestForTimeToSplitFormattedLine();\n\t}\n}\n\n/**\n * append a space to the current formattedline, UNLESS the\n * last character is already a white-space character.\n */\nvoid ASFormatter::appendSpacePad()\n{\n\tint len = formattedLine.length();\n\tif (len > 0 && !isWhiteSpace(formattedLine[len - 1]))\n\t{\n\t\tformattedLine.append(1, ' ');\n\t\tspacePadNum++;\n\t\tif (maxCodeLength != string::npos)\n\t\t{\n\t\t\t// These compares reduce the frequency of function calls.\n\t\t\tif (isOkToSplitFormattedLine())\n\t\t\t\tupdateFormattedLineSplitPoints(' ');\n\t\t\tif (formattedLine.length() > maxCodeLength)\n\t\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * append a space to the current formattedline, UNLESS the\n * next character is already a white-space character.\n */\nvoid ASFormatter::appendSpaceAfter()\n{\n\tint len = currentLine.length();\n\tif (charNum + 1 < len && !isWhiteSpace(currentLine[charNum + 1]))\n\t{\n\t\tformattedLine.append(1, ' ');\n\t\tspacePadNum++;\n\t\tif (maxCodeLength != string::npos)\n\t\t{\n\t\t\t// These compares reduce the frequency of function calls.\n\t\t\tif (isOkToSplitFormattedLine())\n\t\t\t\tupdateFormattedLineSplitPoints(' ');\n\t\t\tif (formattedLine.length() > maxCodeLength)\n\t\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * register a line break for the formatted line.\n */\nvoid ASFormatter::breakLine(bool isSplitLine /*false*/)\n{\n\tisLineReady = true;\n\tisInLineBreak = false;\n\tspacePadNum = nextLineSpacePadNum;\n\tnextLineSpacePadNum = 0;\n\treadyFormattedLine = formattedLine;\n\tformattedLine.erase();\n\t// queue an empty line prepend request if one exists\n\tprependEmptyLine = isPrependPostBlockEmptyLineRequested;\n\n\tif (!isSplitLine)\n\t{\n\t\tformattedLineCommentNum = string::npos;\n\t\tclearFormattedLineSplitPoints();\n\n\t\tif (isAppendPostBlockEmptyLineRequested)\n\t\t{\n\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t\t}\n\t\telse\n\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t}\n}\n\n/**\n * check if the currently reached open-bracket (i.e. '{')\n * opens a:\n * - a definition type block (such as a class or namespace),\n * - a command block (such as a method block)\n * - a static array\n * this method takes for granted that the current character\n * is an opening bracket.\n *\n * @return    the type of the opened block.\n */\nBracketType ASFormatter::getBracketType()\n{\n\tassert(currentChar == '{');\n\n\tBracketType returnVal;\n\n\tif ((previousNonWSChar == '='\n\t        || isBracketType(bracketTypeStack->back(), ARRAY_TYPE))\n\t        && previousCommandChar != ')')\n\t\treturnVal = ARRAY_TYPE;\n\telse if (foundPreDefinitionHeader && previousCommandChar != ')')\n\t{\n\t\treturnVal = DEFINITION_TYPE;\n\t\tif (foundNamespaceHeader)\n\t\t\treturnVal = (BracketType)(returnVal | NAMESPACE_TYPE);\n\t\telse if (foundClassHeader)\n\t\t\treturnVal = (BracketType)(returnVal | CLASS_TYPE);\n\t\telse if (foundStructHeader)\n\t\t\treturnVal = (BracketType)(returnVal | STRUCT_TYPE);\n\t\telse if (foundInterfaceHeader)\n\t\t\treturnVal = (BracketType)(returnVal | INTERFACE_TYPE);\n\t}\n\telse if (isInEnum)\n\t{\n\t\treturnVal = (BracketType)(ARRAY_TYPE | ENUM_TYPE);\n\t}\n\telse\n\t{\n\t\tbool isCommandType = (foundPreCommandHeader\n\t\t                      || foundPreCommandMacro\n\t\t                      || (currentHeader != NULL && isNonParenHeader)\n\t\t                      || (previousCommandChar == ')')\n\t\t                      || (previousCommandChar == ':' && !foundQuestionMark)\n\t\t                      || (previousCommandChar == ';')\n\t\t                      || ((previousCommandChar == '{' || previousCommandChar == '}')\n\t\t                          && isPreviousBracketBlockRelated)\n\t\t                      || (isInClassInitializer\n\t\t                          && (!isLegalNameChar(previousNonWSChar) || foundPreCommandHeader))\n\t\t                      || isInObjCMethodDefinition\n\t\t                      || isInObjCInterface\n\t\t                      || isJavaStaticConstructor\n\t\t                      || isSharpDelegate);\n\n\t\t// C# methods containing 'get', 'set', 'add', and 'remove' do NOT end with parens\n\t\tif (!isCommandType && isSharpStyle() && isNextWordSharpNonParenHeader(charNum + 1))\n\t\t{\n\t\t\tisCommandType = true;\n\t\t\tisSharpAccessor = true;\n\t\t}\n\n\t\tif (isInExternC)\n\t\t\treturnVal = (isCommandType ? COMMAND_TYPE : EXTERN_TYPE);\n\t\telse\n\t\t\treturnVal = (isCommandType ? COMMAND_TYPE : ARRAY_TYPE);\n\t}\n\n\tint foundOneLineBlock = isOneLineBlockReached(currentLine, charNum);\n\t// this assumes each array definition is on a single line\n\t// (foundOneLineBlock == 2) is a one line block followed by a comma\n\tif (foundOneLineBlock == 2 && returnVal == COMMAND_TYPE)\n\t\treturnVal = ARRAY_TYPE;\n\n\tif (foundOneLineBlock > 0)\t\t// found one line block\n\t\treturnVal = (BracketType)(returnVal | SINGLE_LINE_TYPE);\n\n\tif (isBracketType(returnVal, ARRAY_TYPE))\n\t{\n\t\tif (isNonInStatementArrayBracket())\n\t\t{\n\t\t\treturnVal = (BracketType)(returnVal | ARRAY_NIS_TYPE);\n\t\t\tisNonInStatementArray = true;\n\t\t\tisImmediatelyPostNonInStmt = false;\t\t// in case of \"},{\"\n\t\t\tnonInStatementBracket = formattedLine.length() - 1;\n\t\t}\n\t\tif (isUniformInitializerBracket())\n\t\t\treturnVal = (BracketType)(returnVal | INIT_TYPE);\n\t}\n\n\treturn returnVal;\n}\n\n/**\n* check if a colon is a class initializer separator\n*\n* @return        whether it is a class initializer separator\n*/\nbool ASFormatter::isClassInitializer() const\n{\n\tassert(currentLine[charNum] == ':');\n\tassert(previousChar != ':' && peekNextChar() != ':');\t// not part of '::'\n\n\t// this should be similar to ASBeautifier::parseCurrentLine()\n\tbool foundClassInitializer = false;\n\n\tif (foundQuestionMark)\n\t{\n\t\t// do nothing special\n\t}\n\telse if (parenStack->back() > 0)\n\t{\n\t\t// found a 'for' loop or an objective-C statement\n\t\t// so do nothing special\n\t}\n\telse if (isInEnum)\n\t{\n\t\t// found an enum with a base-type\n\t}\n\telse if (isCStyle()\n\t         && !isInCase\n\t         && (previousCommandChar == ')' || foundPreCommandHeader))\n\t{\n\t\t// found a 'class' c'tor initializer\n\t\tfoundClassInitializer = true;\n\t}\n\treturn foundClassInitializer;\n}\n\n/**\n * check if a line is empty\n *\n * @return        whether line is empty\n */\nbool ASFormatter::isEmptyLine(const string &line) const\n{\n\treturn line.find_first_not_of(\" \\t\") == string::npos;\n}\n\n/**\n * Check if the following text is \"C\" as in extern \"C\".\n *\n * @return        whether the statement is extern \"C\"\n */\nbool ASFormatter::isExternC() const\n{\n\t// charNum should be at 'extern'\n\tassert(!isWhiteSpace(currentLine[charNum]));\n\tsize_t startQuote = currentLine.find_first_of(\" \\t\\\"\", charNum);\n\tif (startQuote == string::npos)\n\t\treturn false;\n\tstartQuote = currentLine.find_first_not_of(\" \\t\", startQuote);\n\tif (startQuote == string::npos)\n\t\treturn false;\n\tif (currentLine.compare(startQuote, 3, \"\\\"C\\\"\") != 0)\n\t\treturn false;\n\treturn true;\n}\n\n/**\n * Check if the currently reached '*', '&' or '^' character is\n * a pointer-or-reference symbol, or another operator.\n * A pointer dereference (*) or an \"address of\" character (&)\n * counts as a pointer or reference because it is not an\n * arithmetic operator.\n *\n * @return        whether current character is a reference-or-pointer\n */\nbool ASFormatter::isPointerOrReference() const\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\n\tif (isJavaStyle())\n\t\treturn false;\n\n\tif (isCharImmediatelyPostOperator)\n\t\treturn false;\n\n\t// get the last legal word (may be a number)\n\tstring lastWord = getPreviousWord(currentLine, charNum);\n\tif (lastWord.empty())\n\t\tlastWord = \" \";\n\n\t// check for preceding or following numeric values\n\tstring nextText = peekNextText(currentLine.substr(charNum + 1));\n\tif (nextText.length() == 0)\n\t\tnextText = \" \";\n\tchar nextChar = nextText[0];\n\tif (isDigit(lastWord[0])\n\t        || isDigit(nextChar)\n\t        || nextChar == '!'\n\t        || nextChar == '~')\n\t\treturn false;\n\n\t// check for multiply then a dereference (a * *b)\n\tif (currentChar == '*'\n\t        && charNum < (int) currentLine.length() - 1\n\t        && isWhiteSpace(currentLine[charNum + 1])\n\t        && nextChar == '*')\n\t\treturn false;\n\n\tif ((foundCastOperator && nextChar == '>')\n\t        || isPointerOrReferenceVariable(lastWord))\n\t\treturn true;\n\n\tif (isInClassInitializer\n\t        && previousNonWSChar != '('\n\t        && previousNonWSChar != '{'\n\t        && previousCommandChar != ','\n\t        && nextChar != ')'\n\t        && nextChar != '}')\n\t\treturn false;\n\n\t//check for rvalue reference\n\tif (currentChar == '&' && nextChar == '&')\n\t{\n\t\tstring followingText = peekNextText(currentLine.substr(charNum + 2));\n\t\tif (followingText.length() > 0 && followingText[0] == ')')\n\t\t\treturn true;\n\t\tif (currentHeader != NULL || isInPotentialCalculation)\n\t\t\treturn false;\n\t\tif (parenStack->back() > 0 && isBracketType(bracketTypeStack->back(), COMMAND_TYPE))\n\t\t\treturn false;\n\t\treturn true;\n\t}\n\tif (nextChar == '*'\n\t        || previousNonWSChar == '='\n\t        || previousNonWSChar == '('\n\t        || previousNonWSChar == '['\n\t        || isCharImmediatelyPostReturn\n\t        || isInTemplate\n\t        || isCharImmediatelyPostTemplate\n\t        || currentHeader == &AS_CATCH\n\t        || currentHeader == &AS_FOREACH\n\t        || currentHeader == &AS_QFOREACH)\n\t\treturn true;\n\n\tif (isBracketType(bracketTypeStack->back(), ARRAY_TYPE)\n\t        && isLegalNameChar(lastWord[0])\n\t        && isLegalNameChar(nextChar)\n\t        && previousNonWSChar != ')')\n\t{\n\t\tif (isArrayOperator())\n\t\t\treturn false;\n\t}\n\n\t// checks on operators in parens\n\tif (parenStack->back() > 0\n\t        && isLegalNameChar(lastWord[0])\n\t        && isLegalNameChar(nextChar))\n\t{\n\t\t// if followed by an assignment it is a pointer or reference\n\t\t// if followed by semicolon it is a pointer or reference in range-based for\n\t\tconst string* followingOperator = getFollowingOperator();\n\t\tif (followingOperator\n\t\t        && followingOperator != &AS_MULT\n\t\t        && followingOperator != &AS_BIT_AND)\n\t\t{\n\t\t\tif (followingOperator == &AS_ASSIGN || followingOperator == &AS_COLON)\n\t\t\t\treturn true;\n\t\t\telse\n\t\t\t\treturn false;\n\t\t}\n\n\t\tif (isBracketType(bracketTypeStack->back(), COMMAND_TYPE)\n\t\t        || squareBracketCount > 0)\n\t\t\treturn false;\n\t\telse\n\t\t\treturn true;\n\t}\n\n\t// checks on operators in parens with following '('\n\tif (parenStack->back() > 0\n\t        && nextChar == '('\n\t        && previousNonWSChar != ','\n\t        && previousNonWSChar != '('\n\t        && previousNonWSChar != '!'\n\t        && previousNonWSChar != '&'\n\t        && previousNonWSChar != '*'\n\t        && previousNonWSChar != '|')\n\t\treturn false;\n\n\tif (nextChar == '-'\n\t        || nextChar == '+')\n\t{\n\t\tsize_t nextNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\tif (nextNum != string::npos)\n\t\t{\n\t\t\tif (currentLine.compare(nextNum, 2, \"++\") != 0\n\t\t\t        && currentLine.compare(nextNum, 2, \"--\") != 0)\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tbool isPR = (!isInPotentialCalculation\n\t             || (!isLegalNameChar(previousNonWSChar)\n\t                 && !(previousNonWSChar == ')' && nextChar == '(')\n\t                 && !(previousNonWSChar == ')' && currentChar == '*' && !isImmediatelyPostCast())\n\t                 && previousNonWSChar != ']')\n\t             || (!isWhiteSpace(nextChar)\n\t                 && nextChar != '-'\n\t                 && nextChar != '('\n\t                 && nextChar != '['\n\t                 && !isLegalNameChar(nextChar))\n\t            );\n\n\treturn isPR;\n}\n\n/**\n * Check if the currently reached  '*' or '&' character is\n * a dereferenced pointer or \"address of\" symbol.\n * NOTE: this MUST be a pointer or reference as determined by\n * the function isPointerOrReference().\n *\n * @return        whether current character is a dereference or address of\n */\nbool ASFormatter::isDereferenceOrAddressOf() const\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\n\tif (isCharImmediatelyPostTemplate)\n\t\treturn false;\n\n\tif (previousNonWSChar == '='\n\t        || previousNonWSChar == ','\n\t        || previousNonWSChar == '.'\n\t        || previousNonWSChar == '{'\n\t        || previousNonWSChar == '>'\n\t        || previousNonWSChar == '<'\n\t        || previousNonWSChar == '?'\n\t        || isCharImmediatelyPostLineComment\n\t        || isCharImmediatelyPostComment\n\t        || isCharImmediatelyPostReturn)\n\t\treturn true;\n\n\tchar nextChar = peekNextChar();\n\tif (currentChar == '*' && nextChar == '*')\n\t{\n\t\tif (previousNonWSChar == '(')\n\t\t\treturn true;\n\t\tif ((int) currentLine.length() < charNum + 2)\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\tif (currentChar == '&' && nextChar == '&')\n\t{\n\t\tif (previousNonWSChar == '(' || isInTemplate)\n\t\t\treturn true;\n\t\tif ((int) currentLine.length() < charNum + 2)\n\t\t\treturn true;\n\t\treturn false;\n\t}\n\n\t// check first char on the line\n\tif (charNum == (int) currentLine.find_first_not_of(\" \\t\")\n\t        && (isBracketType(bracketTypeStack->back(), COMMAND_TYPE)\n\t            || parenStack->back() != 0))\n\t\treturn true;\n\n\tstring nextText = peekNextText(currentLine.substr(charNum + 1));\n\tif (nextText.length() > 0)\n\t{\n\t\tif (nextText[0] == ')' || nextText[0] == '>'\n\t\t        || nextText[0] == ',' || nextText[0] == '=')\n\t\t\treturn false;\n\t\tif (nextText[0] == ';')\n\t\t\treturn true;\n\t}\n\n\t// check for reference to a pointer *& (cannot have &*)\n\tif ((currentChar == '*' && nextChar == '&')\n\t        || (previousNonWSChar == '*' && currentChar == '&'))\n\t\treturn false;\n\n\tif (!isBracketType(bracketTypeStack->back(), COMMAND_TYPE)\n\t        && parenStack->back() == 0)\n\t\treturn false;\n\n\tstring lastWord = getPreviousWord(currentLine, charNum);\n\tif (lastWord == \"else\" || lastWord == \"delete\")\n\t\treturn true;\n\n\tif (isPointerOrReferenceVariable(lastWord))\n\t\treturn false;\n\n\tbool isDA = (!(isLegalNameChar(previousNonWSChar) || previousNonWSChar == '>')\n\t             || (nextText.length() > 0 && !isLegalNameChar(nextText[0]) && nextText[0] != '/')\n\t             || (ispunct((unsigned char)previousNonWSChar) && previousNonWSChar != '.')\n\t             || isCharImmediatelyPostReturn);\n\n\treturn isDA;\n}\n\n/**\n * Check if the currently reached  '*' or '&' character is\n * centered with one space on each side.\n * Only spaces are checked, not tabs.\n * If true then a space will be deleted on the output.\n *\n * @return        whether current character is centered.\n */\nbool ASFormatter::isPointerOrReferenceCentered() const\n{\n\tassert(currentLine[charNum] == '*' || currentLine[charNum] == '&' || currentLine[charNum] == '^');\n\n\tint prNum = charNum;\n\tint lineLength = (int) currentLine.length();\n\n\t// check for end of line\n\tif (peekNextChar() == ' ')\n\t\treturn false;\n\n\t// check space before\n\tif (prNum < 1\n\t        || currentLine[prNum - 1] != ' ')\n\t\treturn false;\n\n\t// check no space before that\n\tif (prNum < 2\n\t        || currentLine[prNum - 2] == ' ')\n\t\treturn false;\n\n\t// check for ** or &&\n\tif (prNum + 1 < lineLength\n\t        && (currentLine[prNum + 1] == '*' || currentLine[prNum + 1] == '&'))\n\t\tprNum++;\n\n\t// check space after\n\tif (prNum + 1 <= lineLength\n\t        && currentLine[prNum + 1] != ' ')\n\t\treturn false;\n\n\t// check no space after that\n\tif (prNum + 2 < lineLength\n\t        && currentLine[prNum + 2] == ' ')\n\t\treturn false;\n\n\treturn true;\n}\n\n/**\n * Check if a word is a pointer or reference variable type.\n *\n * @return        whether word is a pointer or reference variable.\n */\nbool ASFormatter::isPointerOrReferenceVariable(string &word) const\n{\n\tif (word == \"char\"\n\t        || word == \"int\"\n\t        || word == \"void\"\n\t        || (word.length() >= 6     // check end of word for _t\n\t            && word.compare(word.length() - 2, 2, \"_t\") == 0)\n\t        || word == \"INT\"\n\t        || word == \"VOID\")\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * check if the currently reached '+' or '-' character is a unary operator\n * this method takes for granted that the current character\n * is a '+' or '-'.\n *\n * @return        whether the current '+' or '-' is a unary operator.\n */\nbool ASFormatter::isUnaryOperator() const\n{\n\tassert(currentChar == '+' || currentChar == '-');\n\n\treturn ((isCharImmediatelyPostReturn || !isLegalNameChar(previousCommandChar))\n\t        && previousCommandChar != '.'\n\t        && previousCommandChar != '\\\"'\n\t        && previousCommandChar != '\\''\n\t        && previousCommandChar != ')'\n\t        && previousCommandChar != ']');\n}\n\n/**\n * check if the currently reached comment is in a 'switch' statement\n *\n * @return        whether the current '+' or '-' is in an exponent.\n */\nbool ASFormatter::isInSwitchStatement() const\n{\n\tassert(isInLineComment || isInComment);\n\tif (preBracketHeaderStack->size() > 0)\n\t\tfor (size_t i = 1; i < preBracketHeaderStack->size(); i++)\n\t\t\tif (preBracketHeaderStack->at(i) == &AS_SWITCH)\n\t\t\t\treturn true;\n\treturn false;\n}\n\n/**\n * check if the currently reached '+' or '-' character is\n * part of an exponent, i.e. 0.2E-5.\n *\n * @return        whether the current '+' or '-' is in an exponent.\n */\nbool ASFormatter::isInExponent() const\n{\n\tassert(currentChar == '+' || currentChar == '-');\n\n\tint formattedLineLength = formattedLine.length();\n\tif (formattedLineLength >= 2)\n\t{\n\t\tchar prevPrevFormattedChar = formattedLine[formattedLineLength - 2];\n\t\tchar prevFormattedChar = formattedLine[formattedLineLength - 1];\n\n\t\treturn ((prevFormattedChar == 'e' || prevFormattedChar == 'E')\n\t\t        && (prevPrevFormattedChar == '.' || isDigit(prevPrevFormattedChar)));\n\t}\n\telse\n\t\treturn false;\n}\n\n/**\n * check if an array bracket should NOT have an in-statement indent\n *\n * @return        the array is non in-statement\n */\nbool ASFormatter::isNonInStatementArrayBracket() const\n{\n\tbool returnVal = false;\n\tchar nextChar = peekNextChar();\n\t// if this opening bracket begins the line there will be no inStatement indent\n\tif (currentLineBeginsWithBracket\n\t        && charNum == (int) currentLineFirstBracketNum\n\t        && nextChar != '}')\n\t\treturnVal = true;\n\t// if an opening bracket ends the line there will be no inStatement indent\n\tif (isWhiteSpace(nextChar)\n\t        || isBeforeAnyLineEndComment(charNum)\n\t        || nextChar == '{')\n\t\treturnVal = true;\n\n\t// Java \"new Type [] {...}\" IS an inStatement indent\n\tif (isJavaStyle() && previousNonWSChar == ']')\n\t\treturnVal = false;\n\n\treturn returnVal;\n}\n\n/**\n * check if a one-line bracket has been reached,\n * i.e. if the currently reached '{' character is closed\n * with a complimentary '}' elsewhere on the current line,\n *.\n * @return     0 = one-line bracket has not been reached.\n *             1 = one-line bracket has been reached.\n *             2 = one-line bracket has been reached and is followed by a comma.\n */\nint ASFormatter::isOneLineBlockReached(string &line, int startChar) const\n{\n\tassert(line[startChar] == '{');\n\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tint bracketCount = 1;\n\tint lineLength = line.length();\n\tchar quoteChar_ = ' ';\n\tchar ch = ' ';\n\tchar prevCh = ' ';\n\n\tfor (int i = startChar + 1; i < lineLength; ++i)\n\t{\n\t\tch = line[i];\n\n\t\tif (isInComment_)\n\t\t{\n\t\t\tif (line.compare(i, 2, \"*/\") == 0)\n\t\t\t{\n\t\t\t\tisInComment_ = false;\n\t\t\t\t++i;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\\\\')\n\t\t{\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isInQuote_)\n\t\t{\n\t\t\tif (ch == quoteChar_)\n\t\t\t\tisInQuote_ = false;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\"' || ch == '\\'')\n\t\t{\n\t\t\tisInQuote_ = true;\n\t\t\tquoteChar_ = ch;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (line.compare(i, 2, \"//\") == 0)\n\t\t\tbreak;\n\n\t\tif (line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\tisInComment_ = true;\n\t\t\t++i;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '{')\n\t\t\t++bracketCount;\n\t\telse if (ch == '}')\n\t\t\t--bracketCount;\n\n\t\tif (bracketCount == 0)\n\t\t{\n\t\t\t// is this an array?\n\t\t\tif (parenStack->back() == 0 && prevCh != '}')\n\t\t\t{\n\t\t\t\tsize_t peekNum = line.find_first_not_of(\" \\t\", i + 1);\n\t\t\t\tif (peekNum != string::npos && line[peekNum] == ',')\n\t\t\t\t\treturn 2;\n\t\t\t}\n\t\t\treturn 1;\n\t\t}\n\t\tif (!isWhiteSpace(ch))\n\t\t\tprevCh = ch;\n\t}\n\n\treturn 0;\n}\n\n/**\n * peek at the next word to determine if it is a C# non-paren header.\n * will look ahead in the input file if necessary.\n *\n * @param  startChar      position on currentLine to start the search\n * @return                true if the next word is get or set.\n */\nbool ASFormatter::isNextWordSharpNonParenHeader(int startChar) const\n{\n\t// look ahead to find the next non-comment text\n\tstring nextText = peekNextText(currentLine.substr(startChar));\n\tif (nextText.length() == 0)\n\t\treturn false;\n\tif (nextText[0] == '[')\n\t\treturn true;\n\tif (!isCharPotentialHeader(nextText, 0))\n\t\treturn false;\n\tif (findKeyword(nextText, 0, AS_GET) || findKeyword(nextText, 0, AS_SET)\n\t        || findKeyword(nextText, 0, AS_ADD) || findKeyword(nextText, 0, AS_REMOVE))\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * peek at the next char to determine if it is an opening bracket.\n * will look ahead in the input file if necessary.\n * this determines a java static constructor.\n *\n * @param startChar     position on currentLine to start the search\n * @return              true if the next word is an opening bracket.\n */\nbool ASFormatter::isNextCharOpeningBracket(int startChar) const\n{\n\tbool retVal = false;\n\tstring nextText = peekNextText(currentLine.substr(startChar));\n\tif (nextText.length() > 0\n\t        && nextText.compare(0, 1, \"{\") == 0)\n\t\tretVal = true;\n\treturn retVal;\n}\n\n/**\n* Check if operator and, pointer, and reference padding is disabled.\n* Disabling is done thru a NOPAD tag in an ending comment.\n*\n* @return              true if the formatting on this line is disabled.\n*/\nbool ASFormatter::isOperatorPaddingDisabled() const\n{\n\tsize_t commentStart = currentLine.find(\"//\", charNum);\n\tif (commentStart == string::npos)\n\t{\n\t\tcommentStart = currentLine.find(\"/*\", charNum);\n\t\t// comment must end on this line\n\t\tif (commentStart != string::npos)\n\t\t{\n\t\t\tsize_t commentEnd = currentLine.find(\"*/\", commentStart + 2);\n\t\t\tif (commentEnd == string::npos)\n\t\t\t\tcommentStart = string::npos;\n\t\t}\n\t}\n\tif (commentStart == string::npos)\n\t\treturn false;\n\tsize_t noPadStart = currentLine.find(\"*NOPAD*\", commentStart);\n\tif (noPadStart == string::npos)\n\t\treturn false;\n\treturn true;\n}\n\n/**\n* Determine if an opening array-type bracket should have a leading space pad.\n* This is to identify C++11 uniform initializers.\n*/\nbool ASFormatter::isUniformInitializerBracket() const\n{\n\tif (isCStyle() && !isInEnum && !isImmediatelyPostPreprocessor)\n\t{\n\t\tif (isInClassInitializer\n\t\t        || isLegalNameChar(previousNonWSChar))\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * get the next non-whitespace substring on following lines, bypassing all comments.\n *\n * @param   firstLine   the first line to check\n * @return  the next non-whitespace substring.\n */\nstring ASFormatter::peekNextText(const string &firstLine, bool endOnEmptyLine /*false*/, bool shouldReset /*false*/) const\n{\n\tbool isFirstLine = true;\n\tbool needReset = shouldReset;\n\tstring nextLine_ = firstLine;\n\tsize_t firstChar = string::npos;\n\n\t// find the first non-blank text, bypassing all comments.\n\tbool isInComment_ = false;\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tneedReset = true;\n\t\t}\n\n\t\tfirstChar = nextLine_.find_first_not_of(\" \\t\");\n\t\tif (firstChar == string::npos)\n\t\t{\n\t\t\tif (endOnEmptyLine && !isInComment_)\n\t\t\t\tbreak;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (nextLine_.compare(firstChar, 2, \"/*\") == 0)\n\t\t{\n\t\t\tfirstChar += 2;\n\t\t\tisInComment_ = true;\n\t\t}\n\n\t\tif (isInComment_)\n\t\t{\n\t\t\tfirstChar = nextLine_.find(\"*/\", firstChar);\n\t\t\tif (firstChar == string::npos)\n\t\t\t\tcontinue;\n\t\t\tfirstChar += 2;\n\t\t\tisInComment_ = false;\n\t\t\tfirstChar = nextLine_.find_first_not_of(\" \\t\", firstChar);\n\t\t\tif (firstChar == string::npos)\n\t\t\t\tcontinue;\n\t\t}\n\n\t\tif (nextLine_.compare(firstChar, 2, \"//\") == 0)\n\t\t\tcontinue;\n\n\t\t// found the next text\n\t\tbreak;\n\t}\n\n\tif (firstChar == string::npos)\n\t\tnextLine_ = \"\";\n\telse\n\t\tnextLine_ = nextLine_.substr(firstChar);\n\tif (needReset)\n\t\tsourceIterator->peekReset();\n\treturn nextLine_;\n}\n\n/**\n * adjust comment position because of adding or deleting spaces\n * the spaces are added or deleted to formattedLine\n * spacePadNum contains the adjustment\n */\nvoid ASFormatter::adjustComments(void)\n{\n\tassert(spacePadNum != 0);\n\tassert(currentLine.compare(charNum, 2, \"//\") == 0\n\t       || currentLine.compare(charNum, 2, \"/*\") == 0);\n\n\t// block comment must be closed on this line with nothing after it\n\tif (currentLine.compare(charNum, 2, \"/*\") == 0)\n\t{\n\t\tsize_t endNum = currentLine.find(\"*/\", charNum + 2);\n\t\tif (endNum == string::npos)\n\t\t\treturn;\n\t\tif (currentLine.find_first_not_of(\" \\t\", endNum + 2) != string::npos)\n\t\t\treturn;\n\t}\n\n\tsize_t len = formattedLine.length();\n\t// don't adjust a tab\n\tif (formattedLine[len - 1] == '\\t')\n\t\treturn;\n\t// if spaces were removed, need to add spaces before the comment\n\tif (spacePadNum < 0)\n\t{\n\t\tint adjust = -spacePadNum;          // make the number positive\n\t\tformattedLine.append(adjust, ' ');\n\t}\n\t// if spaces were added, need to delete extra spaces before the comment\n\t// if cannot be done put the comment one space after the last text\n\telse if (spacePadNum > 0)\n\t{\n\t\tint adjust = spacePadNum;\n\t\tsize_t lastText = formattedLine.find_last_not_of(' ');\n\t\tif (lastText != string::npos\n\t\t        && lastText < len - adjust - 1)\n\t\t\tformattedLine.resize(len - adjust);\n\t\telse if (len > lastText + 2)\n\t\t\tformattedLine.resize(lastText + 2);\n\t\telse if (len < lastText + 2)\n\t\t\tformattedLine.append(len - lastText, ' ');\n\t}\n}\n\n/**\n * append the current bracket inside the end of line comments\n * currentChar contains the bracket, it will be appended to formattedLine\n * formattedLineCommentNum is the comment location on formattedLine\n */\nvoid ASFormatter::appendCharInsideComments(void)\n{\n\tif (formattedLineCommentNum == string::npos)    // does the comment start on the previous line?\n\t{\n\t\tappendCurrentChar();                        // don't attach\n\t\treturn;\n\t}\n\tassert(formattedLine.compare(formattedLineCommentNum, 2, \"//\") == 0\n\t       || formattedLine.compare(formattedLineCommentNum, 2, \"/*\") == 0);\n\n\t// find the previous non space char\n\tsize_t end = formattedLineCommentNum;\n\tsize_t beg = formattedLine.find_last_not_of(\" \\t\", end - 1);\n\tif (beg == string::npos)\n\t{\n\t\tappendCurrentChar();                // don't attach\n\t\treturn;\n\t}\n\tbeg++;\n\n\t// insert the bracket\n\tif (end - beg < 3)                      // is there room to insert?\n\t\tformattedLine.insert(beg, 3 - end + beg, ' ');\n\tif (formattedLine[beg] == '\\t')         // don't pad with a tab\n\t\tformattedLine.insert(beg, 1, ' ');\n\tformattedLine[beg + 1] = currentChar;\n\ttestForTimeToSplitFormattedLine();\n\n\tif (isBeforeComment())\n\t\tbreakLine();\n\telse if (isCharImmediatelyPostLineComment)\n\t\tshouldBreakLineAtNextChar = true;\n\treturn;\n}\n\n/**\n * add or remove space padding to operators\n * the operators and necessary padding will be appended to formattedLine\n * the calling function should have a continue statement after calling this method\n *\n * @param newOperator     the operator to be padded\n */\nvoid ASFormatter::padOperators(const string* newOperator)\n{\n\tassert(shouldPadOperators);\n\tassert(newOperator != NULL);\n\n\tbool shouldPad = (newOperator != &AS_SCOPE_RESOLUTION\n\t                  && newOperator != &AS_PLUS_PLUS\n\t                  && newOperator != &AS_MINUS_MINUS\n\t                  && newOperator != &AS_NOT\n\t                  && newOperator != &AS_BIT_NOT\n\t                  && newOperator != &AS_ARROW\n\t                  && !(newOperator == &AS_COLON && !foundQuestionMark\t\t\t// objC methods\n\t                       && (isInObjCMethodDefinition || isInObjCInterface\n\t                           || isInObjCSelector || squareBracketCount))\n\t                  && !(newOperator == &AS_MINUS && isInExponent())\n\t                  && !((newOperator == &AS_PLUS || newOperator == &AS_MINUS)\t// check for unary plus or minus\n\t                       && (previousNonWSChar == '('\n\t                           || previousNonWSChar == '['\n\t                           || previousNonWSChar == '='\n\t                           || previousNonWSChar == ','))\n\t                  && !(newOperator == &AS_PLUS && isInExponent())\n\t                  && !isCharImmediatelyPostOperator\n//?                   // commented out in release 2.05.1 - doesn't seem to do anything???\n//x                   && !((newOperator == &AS_MULT || newOperator == &AS_BIT_AND || newOperator == &AS_AND)\n//x                        && isPointerOrReference())\n\t                  && !(newOperator == &AS_MULT\n\t                       && (previousNonWSChar == '.'\n\t                           || previousNonWSChar == '>'))    // check for ->\n\t                  && !((isInTemplate || isImmediatelyPostTemplate)\n\t                       && (newOperator == &AS_LS || newOperator == &AS_GR))\n\t                  && !(newOperator == &AS_GCC_MIN_ASSIGN\n\t                       && ASBase::peekNextChar(currentLine, charNum + 1) == '>')\n\t                  && !(newOperator == &AS_GR && previousNonWSChar == '?')\n\t                  && !(newOperator == &AS_QUESTION\t\t\t// check for Java wildcard\n\t                       && (previousNonWSChar == '<'\n\t                           || ASBase::peekNextChar(currentLine, charNum) == '>'\n\t                           || ASBase::peekNextChar(currentLine, charNum) == '.'))\n\t                  && !isInCase\n\t                  && !isInAsm\n\t                  && !isInAsmOneLine\n\t                  && !isInAsmBlock\n\t                 );\n\n\t// pad before operator\n\tif (shouldPad\n\t        && !(newOperator == &AS_COLON\n\t             && (!foundQuestionMark && !isInEnum) && currentHeader != &AS_FOR)\n\t        && !(newOperator == &AS_QUESTION && isSharpStyle() // check for C# nullable type (e.g. int?)\n\t             && currentLine.find(':', charNum + 1) == string::npos)\n\t   )\n\t\tappendSpacePad();\n\tappendOperator(*newOperator);\n\tgoForward(newOperator->length() - 1);\n\n\tcurrentChar = (*newOperator)[newOperator->length() - 1];\n\t// pad after operator\n\t// but do not pad after a '-' that is a unary-minus.\n\tif (shouldPad\n\t        && !isBeforeAnyComment()\n\t        && !(newOperator == &AS_PLUS && isUnaryOperator())\n\t        && !(newOperator == &AS_MINUS && isUnaryOperator())\n\t        && !(currentLine.compare(charNum + 1, 1, AS_SEMICOLON) == 0)\n\t        && !(currentLine.compare(charNum + 1, 2, AS_SCOPE_RESOLUTION) == 0)\n\t        && !(peekNextChar() == ',')\n\t        && !(newOperator == &AS_QUESTION && isSharpStyle() // check for C# nullable type (e.g. int?)\n\t             && peekNextChar() == '[')\n\t   )\n\t\tappendSpaceAfter();\n\n\tpreviousOperator = newOperator;\n\treturn;\n}\n\n/**\n * format pointer or reference\n * currentChar contains the pointer or reference\n * the symbol and necessary padding will be appended to formattedLine\n * the calling function should have a continue statement after calling this method\n *\n * NOTE: Do NOT use appendCurrentChar() in this method. The line should not be\n *       broken once the calculation starts.\n */\nvoid ASFormatter::formatPointerOrReference(void)\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\tint pa = pointerAlignment;\n\tint ra = referenceAlignment;\n\tint itemAlignment = (currentChar == '*' || currentChar == '^') ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra);\n\n\t// check for ** and &&\n\tchar peekedChar = peekNextChar();\n\tif ((currentChar == '*' && peekedChar == '*')\n\t        || (currentChar == '&' && peekedChar == '&'))\n\t{\n\t\tsize_t nextChar = currentLine.find_first_not_of(\" \\t\", charNum + 2);\n\t\tif (nextChar == string::npos)\n\t\t\tpeekedChar = ' ';\n\t\telse\n\t\t\tpeekedChar = currentLine[nextChar];\n\t}\n\t// check for cast\n\tif (peekedChar == ')' || peekedChar == '>' || peekedChar == ',')\n\t{\n\t\tformatPointerOrReferenceCast();\n\t\treturn;\n\t}\n\n\t// check for a padded space and remove it\n\tif (charNum > 0\n\t        && !isWhiteSpace(currentLine[charNum - 1])\n\t        && formattedLine.length() > 0\n\t        && isWhiteSpace(formattedLine[formattedLine.length() - 1]))\n\t{\n\t\tformattedLine.erase(formattedLine.length() - 1);\n\t\tspacePadNum--;\n\t}\n\n\tif (itemAlignment == PTR_ALIGN_TYPE)\n\t{\n\t\tformatPointerOrReferenceToType();\n\t}\n\telse if (itemAlignment == PTR_ALIGN_MIDDLE)\n\t{\n\t\tformatPointerOrReferenceToMiddle();\n\t}\n\telse if (itemAlignment == PTR_ALIGN_NAME)\n\t{\n\t\tformatPointerOrReferenceToName();\n\t}\n\telse\t// pointerAlignment == PTR_ALIGN_NONE\n\t{\n\t\tformattedLine.append(1, currentChar);\n\t}\n}\n\n/**\n * format pointer or reference with align to type\n */\nvoid ASFormatter::formatPointerOrReferenceToType()\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\t// do this before bumping charNum\n\tbool isOldPRCentered = isPointerOrReferenceCentered();\n\n\tsize_t prevCh = formattedLine.find_last_not_of(\" \\t\");\n\tif (prevCh == string::npos)\n\t\tprevCh = 0;\n\tif (formattedLine.length() == 0 || prevCh == formattedLine.length() - 1)\n\t\tformattedLine.append(1, currentChar);\n\telse\n\t{\n\t\t// exchange * or & with character following the type\n\t\t// this may not work every time with a tab character\n\t\tstring charSave = formattedLine.substr(prevCh + 1, 1);\n\t\tformattedLine[prevCh + 1] = currentChar;\n\t\tformattedLine.append(charSave);\n\t}\n\tif (isSequenceReached(\"**\") || isSequenceReached(\"&&\"))\n\t{\n\t\tif (formattedLine.length() == 1)\n\t\t\tformattedLine.append(1, currentChar);\n\t\telse\n\t\t\tformattedLine.insert(prevCh + 2, 1, currentChar);\n\t\tgoForward(1);\n\t}\n\t// if no space after then add one\n\tif (charNum < (int) currentLine.length() - 1\n\t        && !isWhiteSpace(currentLine[charNum + 1])\n\t        && currentLine[charNum + 1] != ')')\n\t\tappendSpacePad();\n\t// if old pointer or reference is centered, remove a space\n\tif (isOldPRCentered\n\t        && isWhiteSpace(formattedLine[formattedLine.length() - 1]))\n\t{\n\t\tformattedLine.erase(formattedLine.length() - 1, 1);\n\t\tspacePadNum--;\n\t}\n\t// update the formattedLine split point\n\tif (maxCodeLength != string::npos)\n\t{\n\t\tsize_t index = formattedLine.length() - 1;\n\t\tif (isWhiteSpace(formattedLine[index]))\n\t\t{\n\t\t\tupdateFormattedLineSplitPointsPointerOrReference(index);\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * format pointer or reference with align in the middle\n */\nvoid ASFormatter::formatPointerOrReferenceToMiddle()\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\t// compute current whitespace before\n\tsize_t wsBefore = currentLine.find_last_not_of(\" \\t\", charNum - 1);\n\tif (wsBefore == string::npos)\n\t\twsBefore = 0;\n\telse\n\t\twsBefore = charNum - wsBefore - 1;\n\tstring sequenceToInsert(1, currentChar);\n\tif (isSequenceReached(\"**\"))\n\t{\n\t\tsequenceToInsert = \"**\";\n\t\tgoForward(1);\n\t}\n\telse if (isSequenceReached(\"&&\"))\n\t{\n\t\tsequenceToInsert = \"&&\";\n\t\tgoForward(1);\n\t}\n\t// if reference to a pointer check for conflicting alignment\n\telse if (currentChar == '*' && peekNextChar() == '&'\n\t         && (referenceAlignment == REF_ALIGN_TYPE\n\t             || referenceAlignment == REF_ALIGN_MIDDLE\n\t             || referenceAlignment == REF_SAME_AS_PTR))\n\t{\n\t\tsequenceToInsert = \"*&\";\n\t\tgoForward(1);\n\t\tfor (size_t i = charNum; i < currentLine.length() - 1 && isWhiteSpace(currentLine[i]); i++)\n\t\t\tgoForward(1);\n\t}\n\t// if a comment follows don't align, just space pad\n\tif (isBeforeAnyComment())\n\t{\n\t\tappendSpacePad();\n\t\tformattedLine.append(sequenceToInsert);\n\t\tappendSpaceAfter();\n\t\treturn;\n\t}\n\t// do this before goForward()\n\tbool isAfterScopeResolution = previousNonWSChar == ':';\n\tsize_t charNumSave = charNum;\n\t// if this is the last thing on the line\n\tif (currentLine.find_first_not_of(\" \\t\", charNum + 1) == string::npos)\n\t{\n\t\tif (wsBefore == 0 && !isAfterScopeResolution)\n\t\t\tformattedLine.append(1, ' ');\n\t\tformattedLine.append(sequenceToInsert);\n\t\treturn;\n\t}\n\t// goForward() to convert tabs to spaces, if necessary,\n\t// and move following characters to preceding characters\n\t// this may not work every time with tab characters\n\tfor (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++)\n\t{\n\t\tgoForward(1);\n\t\tif (formattedLine.length() > 0)\n\t\t\tformattedLine.append(1, currentLine[i]);\n\t\telse\n\t\t\tspacePadNum--;\n\t}\n\t// find space padding after\n\tsize_t wsAfter = currentLine.find_first_not_of(\" \\t\", charNumSave + 1);\n\tif (wsAfter == string::npos || isBeforeAnyComment())\n\t\twsAfter = 0;\n\telse\n\t\twsAfter = wsAfter - charNumSave - 1;\n\t// don't pad before scope resolution operator, but pad after\n\tif (isAfterScopeResolution)\n\t{\n\t\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\t\tformattedLine.insert(lastText + 1, sequenceToInsert);\n\t\tappendSpacePad();\n\t}\n\telse if (formattedLine.length() > 0)\n\t{\n\t\t// whitespace should be at least 2 chars to center\n\t\tif (wsBefore + wsAfter < 2)\n\t\t{\n\t\t\tsize_t charsToAppend = (2 - (wsBefore + wsAfter));\n\t\t\tformattedLine.append(charsToAppend, ' ');\n\t\t\tspacePadNum += charsToAppend;\n\t\t\tif (wsBefore == 0) wsBefore++;\n\t\t\tif (wsAfter == 0) wsAfter++;\n\t\t}\n\t\t// insert the pointer or reference char\n\t\tsize_t padAfter = (wsBefore + wsAfter) / 2;\n\t\tsize_t index = formattedLine.length() - padAfter;\n\t\tformattedLine.insert(index, sequenceToInsert);\n\t}\n\telse\t// formattedLine.length() == 0\n\t{\n\t\tformattedLine.append(sequenceToInsert);\n\t\tif (wsAfter == 0)\n\t\t\twsAfter++;\n\t\tformattedLine.append(wsAfter, ' ');\n\t\tspacePadNum += wsAfter;\n\t}\n\t// update the formattedLine split point after the pointer\n\tif (maxCodeLength != string::npos && formattedLine.length() > 0)\n\t{\n\t\tsize_t index = formattedLine.find_last_not_of(\" \\t\");\n\t\tif (index != string::npos && (index < formattedLine.length() - 1))\n\t\t{\n\t\t\tindex++;\n\t\t\tupdateFormattedLineSplitPointsPointerOrReference(index);\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * format pointer or reference with align to name\n */\nvoid ASFormatter::formatPointerOrReferenceToName()\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\t// do this before bumping charNum\n\tbool isOldPRCentered = isPointerOrReferenceCentered();\n\n\tsize_t startNum = formattedLine.find_last_not_of(\" \\t\");\n\tif (startNum == string::npos)\n\t\tstartNum = 0;\n\tstring sequenceToInsert(1, currentChar);\n\tif (isSequenceReached(\"**\"))\n\t{\n\t\tsequenceToInsert = \"**\";\n\t\tgoForward(1);\n\t}\n\telse if (isSequenceReached(\"&&\"))\n\t{\n\t\tsequenceToInsert = \"&&\";\n\t\tgoForward(1);\n\t}\n\t// if reference to a pointer align both to name\n\telse if (currentChar == '*' && peekNextChar() == '&')\n\t{\n\t\tsequenceToInsert = \"*&\";\n\t\tgoForward(1);\n\t\tfor (size_t i = charNum; i < currentLine.length() - 1 && isWhiteSpace(currentLine[i]); i++)\n\t\t\tgoForward(1);\n\t}\n\tchar peekedChar = peekNextChar();\n\tbool isAfterScopeResolution = previousNonWSChar == ':';\t\t// check for ::\n\t// if this is not the last thing on the line\n\tif (!isBeforeAnyComment()\n\t        && (int) currentLine.find_first_not_of(\" \\t\", charNum + 1) > charNum)\n\t{\n\t\t// goForward() to convert tabs to spaces, if necessary,\n\t\t// and move following characters to preceding characters\n\t\t// this may not work every time with tab characters\n\t\tfor (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++)\n\t\t{\n\t\t\t// if a padded paren follows don't move\n\t\t\tif (shouldPadParensOutside && peekedChar == '(' && !isOldPRCentered)\n\t\t\t{\n\t\t\t\t// empty parens don't count\n\t\t\t\tsize_t start = currentLine.find_first_not_of(\"( \\t\", charNum + 1);\n\t\t\t\tif (start != string::npos && currentLine[start] != ')')\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tgoForward(1);\n\t\t\tif (formattedLine.length() > 0)\n\t\t\t\tformattedLine.append(1, currentLine[i]);\n\t\t\telse\n\t\t\t\tspacePadNum--;\n\t\t}\n\t}\n\t// don't pad before scope resolution operator\n\tif (isAfterScopeResolution)\n\t{\n\t\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\t\tif (lastText != string::npos && lastText + 1 < formattedLine.length())\n\t\t\tformattedLine.erase(lastText + 1);\n\t}\n\t// if no space before * then add one\n\telse if (formattedLine.length() > 0\n\t         && (formattedLine.length() <= startNum + 1\n\t             || !isWhiteSpace(formattedLine[startNum + 1])))\n\t{\n\t\tformattedLine.insert(startNum + 1, 1, ' ');\n\t\tspacePadNum++;\n\t}\n\tappendSequence(sequenceToInsert, false);\n\t// if old pointer or reference is centered, remove a space\n\tif (isOldPRCentered\n\t        && formattedLine.length() > startNum + 1\n\t        && isWhiteSpace(formattedLine[startNum + 1])\n\t        && !isBeforeAnyComment())\n\t{\n\t\tformattedLine.erase(startNum + 1, 1);\n\t\tspacePadNum--;\n\t}\n\t// don't convert to *= or &=\n\tif (peekedChar == '=')\n\t{\n\t\tappendSpaceAfter();\n\t\t// if more than one space before, delete one\n\t\tif (formattedLine.length() > startNum\n\t\t        && isWhiteSpace(formattedLine[startNum + 1])\n\t\t        && isWhiteSpace(formattedLine[startNum + 2]))\n\t\t{\n\t\t\tformattedLine.erase(startNum + 1, 1);\n\t\t\tspacePadNum--;\n\t\t}\n\t}\n\t// update the formattedLine split point\n\tif (maxCodeLength != string::npos)\n\t{\n\t\tsize_t index = formattedLine.find_last_of(\" \\t\");\n\t\tif (index != string::npos\n\t\t        && index < formattedLine.length() - 1\n\t\t        && (formattedLine[index + 1] == '*'\n\t\t            || formattedLine[index + 1] == '&'\n\t\t            || formattedLine[index + 1] == '^'))\n\t\t{\n\t\t\tupdateFormattedLineSplitPointsPointerOrReference(index);\n\t\t\ttestForTimeToSplitFormattedLine();\n\t\t}\n\t}\n}\n\n/**\n * format pointer or reference cast\n * currentChar contains the pointer or reference\n * NOTE: the pointers and references in function definitions\n *       are processed as a cast (e.g. void foo(void*, void*))\n *       is processed here.\n */\nvoid ASFormatter::formatPointerOrReferenceCast(void)\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(!isJavaStyle());\n\n\tint pa = pointerAlignment;\n\tint ra = referenceAlignment;\n\tint itemAlignment = (currentChar == '*' || currentChar == '^') ? pa : ((ra == REF_SAME_AS_PTR) ? pa : ra);\n\n\tstring sequenceToInsert(1, currentChar);\n\tif (isSequenceReached(\"**\") || isSequenceReached(\"&&\"))\n\t{\n\t\tgoForward(1);\n\t\tsequenceToInsert.append(1, currentLine[charNum]);\n\t}\n\tif (itemAlignment == PTR_ALIGN_NONE)\n\t{\n\t\tappendSequence(sequenceToInsert, false);\n\t\treturn;\n\t}\n\t// remove preceding whitespace\n\tchar prevCh = ' ';\n\tsize_t prevNum = formattedLine.find_last_not_of(\" \\t\");\n\tif (prevNum != string::npos)\n\t{\n\t\tprevCh = formattedLine[prevNum];\n\t\tif (prevNum + 1 < formattedLine.length()\n\t\t        && isWhiteSpace(formattedLine[prevNum + 1])\n\t\t        && prevCh != '(')\n\t\t{\n\t\t\tspacePadNum -= (formattedLine.length() - 1 - prevNum);\n\t\t\tformattedLine.erase(prevNum + 1);\n\t\t}\n\t}\n\tbool isAfterScopeResolution = previousNonWSChar == ':';\n\tif ((itemAlignment == PTR_ALIGN_MIDDLE || itemAlignment == PTR_ALIGN_NAME)\n\t        && !isAfterScopeResolution && prevCh != '(')\n\t{\n\t\tappendSpacePad();\n\t\t// in this case appendSpacePad may or may not update the split point\n\t\tif (maxCodeLength != string::npos && formattedLine.length() > 0)\n\t\t\tupdateFormattedLineSplitPointsPointerOrReference(formattedLine.length() - 1);\n\t\tappendSequence(sequenceToInsert, false);\n\t}\n\telse\n\t\tappendSequence(sequenceToInsert, false);\n\t// remove trailing whitespace if comma follows\n\tchar nextChar = peekNextChar();\n\tif (nextChar == ',')\n\t{\n\t\twhile (isWhiteSpace(currentLine[charNum + 1]))\n\t\t{\n\t\t\tgoForward(1);\n\t\t\tspacePadNum--;\n\t\t}\n\t}\n}\n\n/**\n * add or remove space padding to parens\n * currentChar contains the paren\n * the parens and necessary padding will be appended to formattedLine\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::padParens(void)\n{\n\tassert(shouldPadParensOutside || shouldPadParensInside || shouldUnPadParens || shouldPadFirstParen);\n\tassert(currentChar == '(' || currentChar == ')');\n\n\tint spacesOutsideToDelete = 0;\n\tint spacesInsideToDelete = 0;\n\n\tif (currentChar == '(')\n\t{\n\t\tspacesOutsideToDelete = formattedLine.length() - 1;\n\t\tspacesInsideToDelete = 0;\n\n\t\t// compute spaces outside the opening paren to delete\n\t\tif (shouldUnPadParens)\n\t\t{\n\t\t\tchar lastChar = ' ';\n\t\t\tbool prevIsParenHeader = false;\n\t\t\tsize_t i = formattedLine.find_last_not_of(\" \\t\");\n\t\t\tif (i != string::npos)\n\t\t\t{\n\t\t\t\t// if last char is a bracket the previous whitespace is an indent\n\t\t\t\tif (formattedLine[i] == '{')\n\t\t\t\t\tspacesOutsideToDelete = 0;\n\t\t\t\telse if (isCharImmediatelyPostPointerOrReference)\n\t\t\t\t\tspacesOutsideToDelete = 0;\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tspacesOutsideToDelete -= i;\n\t\t\t\t\tlastChar = formattedLine[i];\n\t\t\t\t\t// if previous word is a header, it will be a paren header\n\t\t\t\t\tstring prevWord = getPreviousWord(formattedLine, formattedLine.length());\n\t\t\t\t\tconst string* prevWordH = NULL;\n\t\t\t\t\tif (shouldPadHeader\n\t\t\t\t\t        && prevWord.length() > 0\n\t\t\t\t\t        && isCharPotentialHeader(prevWord, 0))\n\t\t\t\t\t\tprevWordH = ASBeautifier::findHeader(prevWord, 0, headers);\n\t\t\t\t\tif (prevWordH != NULL)\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\telse if (prevWord == \"return\")  // don't unpad\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\telse if (isCStyle() && prevWord == \"throw\" && shouldPadHeader) // don't unpad\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\telse if (prevWord == \"and\" || prevWord == \"or\")  // don't unpad\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\t// don't unpad variables\n\t\t\t\t\telse if (prevWord == \"bool\"\n\t\t\t\t\t         || prevWord == \"int\"\n\t\t\t\t\t         || prevWord == \"void\"\n\t\t\t\t\t         || prevWord == \"void*\"\n\t\t\t\t\t         || prevWord == \"char\"\n\t\t\t\t\t         || prevWord == \"long\"\n\t\t\t\t\t         || prevWord == \"double\"\n\t\t\t\t\t         || prevWord == \"float\"\n\t\t\t\t\t         || (prevWord.length() >= 4     // check end of word for _t\n\t\t\t\t\t             && prevWord.compare(prevWord.length() - 2, 2, \"_t\") == 0)\n\t\t\t\t\t         || prevWord == \"Int32\"\n\t\t\t\t\t         || prevWord == \"UInt32\"\n\t\t\t\t\t         || prevWord == \"Int64\"\n\t\t\t\t\t         || prevWord == \"UInt64\"\n\t\t\t\t\t         || prevWord == \"BOOL\"\n\t\t\t\t\t         || prevWord == \"DWORD\"\n\t\t\t\t\t         || prevWord == \"HWND\"\n\t\t\t\t\t         || prevWord == \"INT\"\n\t\t\t\t\t         || prevWord == \"LPSTR\"\n\t\t\t\t\t         || prevWord == \"VOID\"\n\t\t\t\t\t         || prevWord == \"LPVOID\"\n\t\t\t\t\t        )\n\t\t\t\t\t{\n\t\t\t\t\t\tprevIsParenHeader = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// do not unpad operators, but leave them if already padded\n\t\t\tif (shouldPadParensOutside || prevIsParenHeader)\n\t\t\t\tspacesOutsideToDelete--;\n\t\t\telse if (lastChar == '|'          // check for ||\n\t\t\t         || lastChar == '&'       // check for &&\n\t\t\t         || lastChar == ','\n\t\t\t         || (lastChar == '(' && shouldPadParensInside)\n\t\t\t         || (lastChar == '>' && !foundCastOperator)\n\t\t\t         || lastChar == '<'\n\t\t\t         || lastChar == '?'\n\t\t\t         || lastChar == ':'\n\t\t\t         || lastChar == ';'\n\t\t\t         || lastChar == '='\n\t\t\t         || lastChar == '+'\n\t\t\t         || lastChar == '-'\n\t\t\t         || lastChar == '*'\n\t\t\t         || lastChar == '/'\n\t\t\t         || lastChar == '%'\n\t\t\t         || lastChar == '^'\n\t\t\t        )\n\t\t\t\tspacesOutsideToDelete--;\n\n\t\t\tif (spacesOutsideToDelete > 0)\n\t\t\t{\n\t\t\t\tformattedLine.erase(i + 1, spacesOutsideToDelete);\n\t\t\t\tspacePadNum -= spacesOutsideToDelete;\n\t\t\t}\n\t\t}\n\n\t\t// pad open paren outside\n\t\tchar peekedCharOutside = peekNextChar();\n\t\tif (shouldPadFirstParen && previousChar != '(' && peekedCharOutside != ')')\n\t\t\tappendSpacePad();\n\t\telse if (shouldPadParensOutside)\n\t\t{\n\t\t\tif (!(currentChar == '(' && peekedCharOutside == ')'))\n\t\t\t\tappendSpacePad();\n\t\t}\n\n\t\tappendCurrentChar();\n\n\t\t// unpad open paren inside\n\t\tif (shouldUnPadParens)\n\t\t{\n\t\t\tsize_t j = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\t\tif (j != string::npos)\n\t\t\t\tspacesInsideToDelete = j - charNum - 1;\n\t\t\tif (shouldPadParensInside)\n\t\t\t\tspacesInsideToDelete--;\n\t\t\tif (spacesInsideToDelete > 0)\n\t\t\t{\n\t\t\t\tcurrentLine.erase(charNum + 1, spacesInsideToDelete);\n\t\t\t\tspacePadNum -= spacesInsideToDelete;\n\t\t\t}\n\t\t\t// convert tab to space if requested\n\t\t\tif (shouldConvertTabs\n\t\t\t        && (int) currentLine.length() > charNum + 1\n\t\t\t        && currentLine[charNum + 1] == '\\t')\n\t\t\t\tcurrentLine[charNum + 1] = ' ';\n\t\t}\n\n\t\t// pad open paren inside\n\t\tchar peekedCharInside = peekNextChar();\n\t\tif (shouldPadParensInside)\n\t\t\tif (!(currentChar == '(' && peekedCharInside == ')'))\n\t\t\t\tappendSpaceAfter();\n\t}\n\telse if (currentChar == ')')\n\t{\n\t\t// unpad close paren inside\n\t\tif (shouldUnPadParens)\n\t\t{\n\t\t\tspacesInsideToDelete = formattedLine.length();\n\t\t\tsize_t i = formattedLine.find_last_not_of(\" \\t\");\n\t\t\tif (i != string::npos)\n\t\t\t\tspacesInsideToDelete = formattedLine.length() - 1 - i;\n\t\t\tif (shouldPadParensInside)\n\t\t\t\tspacesInsideToDelete--;\n\t\t\tif (spacesInsideToDelete > 0)\n\t\t\t{\n\t\t\t\tformattedLine.erase(i + 1, spacesInsideToDelete);\n\t\t\t\tspacePadNum -= spacesInsideToDelete;\n\t\t\t}\n\t\t}\n\n\t\t// pad close paren inside\n\t\tif (shouldPadParensInside)\n\t\t\tif (!(previousChar == '(' && currentChar == ')'))\n\t\t\t\tappendSpacePad();\n\n\t\tappendCurrentChar();\n\n\t\t// unpad close paren outside\n\t\t// close parens outside are left unchanged\n\t\tif (shouldUnPadParens)\n\t\t{\n\t\t\t//spacesOutsideToDelete = 0;\n\t\t\t//size_t j = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\t\t\t//if (j != string::npos)\n\t\t\t//\tspacesOutsideToDelete = j - charNum - 1;\n\t\t\t//if (shouldPadParensOutside)\n\t\t\t//\tspacesOutsideToDelete--;\n\n\t\t\t//if (spacesOutsideToDelete > 0)\n\t\t\t//{\n\t\t\t//\tcurrentLine.erase(charNum + 1, spacesOutsideToDelete);\n\t\t\t//\tspacePadNum -= spacesOutsideToDelete;\n\t\t\t//}\n\t\t}\n\n\t\t// pad close paren outside\n\t\tchar peekedCharOutside = peekNextChar();\n\t\tif (shouldPadParensOutside)\n\t\t\tif (peekedCharOutside != ';'\n\t\t\t        && peekedCharOutside != ','\n\t\t\t        && peekedCharOutside != '.'\n\t\t\t        && peekedCharOutside != '+'    // check for ++\n\t\t\t        && peekedCharOutside != '-'    // check for --\n\t\t\t        && peekedCharOutside != ']')\n\t\t\t\tappendSpaceAfter();\n\t}\n\treturn;\n}\n\n/**\n * format opening bracket as attached or broken\n * currentChar contains the bracket\n * the brackets will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n *\n * @param bracketType    the type of bracket to be formatted.\n */\nvoid ASFormatter::formatOpeningBracket(BracketType bracketType)\n{\n\tassert(!isBracketType(bracketType, ARRAY_TYPE));\n\tassert(currentChar == '{');\n\n\tparenStack->push_back(0);\n\n\tbool breakBracket = isCurrentBracketBroken();\n\n\tif (breakBracket)\n\t{\n\t\tif (isBeforeAnyComment() && isOkToBreakBlock(bracketType))\n\t\t{\n\t\t\t// if comment is at line end leave the comment on this line\n\t\t\tif (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBracket)\n\t\t\t{\n\t\t\t\tcurrentChar = ' ';              // remove bracket from current line\n\t\t\t\tif (parenStack->size() > 1)\n\t\t\t\t\tparenStack->pop_back();\n\t\t\t\tcurrentLine[charNum] = currentChar;\n\t\t\t\tappendOpeningBracket = true;    // append bracket to following line\n\t\t\t}\n\t\t\t// else put comment after the bracket\n\t\t\telse if (!isBeforeMultipleLineEndComments(charNum))\n\t\t\t\tbreakLine();\n\t\t}\n\t\telse if (!isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\t\tbreakLine();\n\t\telse if (shouldBreakOneLineBlocks && peekNextChar() != '}')\n\t\t\tbreakLine();\n\t\telse if (!isInLineBreak)\n\t\t\tappendSpacePad();\n\n\t\tappendCurrentChar();\n\n\t\t// should a following comment break from the bracket?\n\t\t// must break the line AFTER the bracket\n\t\tif (isBeforeComment()\n\t\t        && formattedLine.length() > 0\n\t\t        && formattedLine[0] == '{'\n\t\t        && isOkToBreakBlock(bracketType)\n\t\t        && (bracketFormatMode == BREAK_MODE\n\t\t            || bracketFormatMode == LINUX_MODE\n\t\t            || bracketFormatMode == STROUSTRUP_MODE))\n\t\t{\n\t\t\tshouldBreakLineAtNextChar = true;\n\t\t}\n\t}\n\telse    // attach bracket\n\t{\n\t\t// are there comments before the bracket?\n\t\tif (isCharImmediatelyPostComment || isCharImmediatelyPostLineComment)\n\t\t{\n\t\t\tif (isOkToBreakBlock(bracketType)\n\t\t\t        && !(isCharImmediatelyPostComment && isCharImmediatelyPostLineComment)\t// don't attach if two comments on the line\n\t\t\t        && !isImmediatelyPostPreprocessor\n//\t\t\t        && peekNextChar() != '}'\t\t// don't attach { }\t\t// removed release 2.03\n\t\t\t        && previousCommandChar != '{'\t// don't attach { {\n\t\t\t        && previousCommandChar != '}'\t// don't attach } {\n\t\t\t        && previousCommandChar != ';')\t// don't attach ; {\n\t\t\t{\n\t\t\t\tappendCharInsideComments();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t\t}\n\t\t}\n\t\telse if (previousCommandChar == '{'\n\t\t         || (previousCommandChar == '}' && !isInClassInitializer)\n\t\t         || previousCommandChar == ';')\t\t// '}' , ';' chars added for proper handling of '{' immediately after a '}' or ';'\n\t\t{\n\t\t\tappendCurrentChar();\t\t\t\t\t// don't attach\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// if a blank line precedes this don't attach\n\t\t\tif (isEmptyLine(formattedLine))\n\t\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t\telse if (isOkToBreakBlock(bracketType)\n\t\t\t         && !(isImmediatelyPostPreprocessor\n\t\t\t              && currentLineBeginsWithBracket))\n\t\t\t{\n\t\t\t\tif (peekNextChar() != '}')\n\t\t\t\t{\n\t\t\t\t\tappendSpacePad();\n\t\t\t\t\tappendCurrentChar(false);\t\t\t\t// OK to attach\n\t\t\t\t\ttestForTimeToSplitFormattedLine();\t\t// line length will have changed\n\t\t\t\t\t// should a following comment attach with the bracket?\n\t\t\t\t\t// insert spaces to reposition the comment\n\t\t\t\t\tif (isBeforeComment()\n\t\t\t\t\t        && !isBeforeMultipleLineEndComments(charNum)\n\t\t\t\t\t        && (!isBeforeAnyLineEndComment(charNum)\t|| currentLineBeginsWithBracket))\n\t\t\t\t\t{\n\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\t\tcurrentLine.insert(charNum + 1, charNum + 1, ' ');\n\t\t\t\t\t}\n\t\t\t\t\telse if (!isBeforeAnyComment())\t\t// added in release 2.03\n\t\t\t\t\t{\n\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (currentLineBeginsWithBracket && charNum == (int) currentLineFirstBracketNum)\n\t\t\t\t\t{\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\tappendCurrentChar(false);\t\t// attach\n\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\tappendCurrentChar();\t\t// don't attach\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!isInLineBreak)\n\t\t\t\t\tappendSpacePad();\n\t\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * format closing bracket\n * currentChar contains the bracket\n * the calling function should have a continue statement after calling this method\n *\n * @param bracketType    the type of the opening bracket for this closing bracket.\n */\nvoid ASFormatter::formatClosingBracket(BracketType bracketType)\n{\n\tassert(!isBracketType(bracketType, ARRAY_TYPE));\n\tassert(currentChar == '}');\n\n\t// parenStack must contain one entry\n\tif (parenStack->size() > 1)\n\t\tparenStack->pop_back();\n\n\t// mark state of immediately after empty block\n\t// this state will be used for locating brackets that appear immediately AFTER an empty block (e.g. '{} \\n}').\n\tif (previousCommandChar == '{')\n\t\tisImmediatelyPostEmptyBlock = true;\n\n\tif (attachClosingBracketMode)\n\t{\n\t\t// for now, namespaces and classes will be attached. Uncomment the lines below to break.\n\t\tif ((isEmptyLine(formattedLine)\t\t\t// if a blank line precedes this\n\t\t        || isCharImmediatelyPostLineComment\n\t\t        || isCharImmediatelyPostComment\n\t\t        || (isImmediatelyPostPreprocessor && (int) currentLine.find_first_not_of(\" \\t\") == charNum)\n//\t\t        || (isBracketType(bracketType, CLASS_TYPE) && isOkToBreakBlock(bracketType) && previousNonWSChar != '{')\n//\t\t        || (isBracketType(bracketType, NAMESPACE_TYPE) && isOkToBreakBlock(bracketType) && previousNonWSChar != '{')\n\t\t    )\n\t\t        && (!isBracketType(bracketType, SINGLE_LINE_TYPE) || isOkToBreakBlock(bracketType)))\n\t\t{\n\t\t\tbreakLine();\n\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (previousNonWSChar != '{'\n\t\t\t        && (!isBracketType(bracketType, SINGLE_LINE_TYPE) || isOkToBreakBlock(bracketType)))\n\t\t\t\tappendSpacePad();\n\t\t\tappendCurrentChar(false);\t\t\t// attach\n\t\t}\n\t}\n\telse if ((!(previousCommandChar == '{' && isPreviousBracketBlockRelated))\t// this '}' does not close an empty block\n\t         && isOkToBreakBlock(bracketType))\t\t\t\t\t\t\t\t\t// astyle is allowed to break one line blocks\n\t{\n\t\tbreakLine();\n\t\tappendCurrentChar();\n\t}\n\telse\n\t{\n\t\tappendCurrentChar();\n\t}\n\n\t// if a declaration follows a definition, space pad\n\tif (isLegalNameChar(peekNextChar()))\n\t\tappendSpaceAfter();\n\n\tif (shouldBreakBlocks\n\t        && currentHeader != NULL\n\t        && !isHeaderInMultiStatementLine\n\t        && parenStack->back() == 0)\n\t{\n\t\tif (currentHeader == &AS_CASE || currentHeader == &AS_DEFAULT)\n\t\t{\n\t\t\t// do not yet insert a line if \"break\" statement is outside the brackets\n\t\t\tstring nextText = peekNextText(currentLine.substr(charNum + 1));\n\t\t\tif (nextText.length() > 0\n\t\t\t        && nextText.substr(0, 5) != \"break\")\n\t\t\t\tisAppendPostBlockEmptyLineRequested = true;\n\t\t}\n\t\telse\n\t\t\tisAppendPostBlockEmptyLineRequested = true;\n\t}\n}\n\n/**\n * format array brackets as attached or broken\n * determine if the brackets can have an inStatement indent\n * currentChar contains the bracket\n * the brackets will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n *\n * @param bracketType            the type of bracket to be formatted, must be an ARRAY_TYPE.\n * @param isOpeningArrayBracket  indicates if this is the opening bracket for the array block.\n */\nvoid ASFormatter::formatArrayBrackets(BracketType bracketType, bool isOpeningArrayBracket)\n{\n\tassert(isBracketType(bracketType, ARRAY_TYPE));\n\tassert(currentChar == '{' || currentChar == '}');\n\n\tif (currentChar == '{')\n\t{\n\t\t// is this the first opening bracket in the array?\n\t\tif (isOpeningArrayBracket)\n\t\t{\n\t\t\tif (bracketFormatMode == ATTACH_MODE\n\t\t\t        || bracketFormatMode == LINUX_MODE\n\t\t\t        || bracketFormatMode == STROUSTRUP_MODE)\n\t\t\t{\n\t\t\t\t// don't attach to a preprocessor directive or '\\' line\n\t\t\t\tif ((isImmediatelyPostPreprocessor\n\t\t\t\t        || (formattedLine.length() > 0\n\t\t\t\t            && formattedLine[formattedLine.length() - 1] == '\\\\'))\n\t\t\t\t        && currentLineBeginsWithBracket)\n\t\t\t\t{\n\t\t\t\t\tisInLineBreak = true;\n\t\t\t\t\tappendCurrentChar();                // don't attach\n\t\t\t\t}\n\t\t\t\telse if (isCharImmediatelyPostComment)\n\t\t\t\t{\n\t\t\t\t\t// TODO: attach bracket to line-end comment\n\t\t\t\t\tappendCurrentChar();                // don't attach\n\t\t\t\t}\n\t\t\t\telse if (isCharImmediatelyPostLineComment && !isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\t\t\t{\n\t\t\t\t\tappendCharInsideComments();\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// if a blank line precedes this don't attach\n\t\t\t\t\tif (isEmptyLine(formattedLine))\n\t\t\t\t\t\tappendCurrentChar();            // don't attach\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// if bracket is broken or not an assignment\n\t\t\t\t\t\tif (currentLineBeginsWithBracket\n\t\t\t\t\t\t        && !isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\t\tappendCurrentChar(false);\t\t\t\t// OK to attach\n\t\t\t\t\t\t\t// TODO: debug the following line\n\t\t\t\t\t\t\ttestForTimeToSplitFormattedLine();\t\t// line length will have changed\n\n\t\t\t\t\t\t\tif (currentLineBeginsWithBracket\n\t\t\t\t\t\t\t        && (int) currentLineFirstBracketNum == charNum)\n\t\t\t\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif (previousNonWSChar != '(')\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t// don't space pad C++11 uniform initialization\n\t\t\t\t\t\t\t\tif (!isBracketType(bracketType, INIT_TYPE))\n\t\t\t\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tappendCurrentChar();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (bracketFormatMode == BREAK_MODE)\n\t\t\t{\n\t\t\t\tif (isWhiteSpace(peekNextChar()))\n\t\t\t\t\tbreakLine();\n\t\t\t\telse if (isBeforeAnyComment())\n\t\t\t\t{\n\t\t\t\t\t// do not break unless comment is at line end\n\t\t\t\t\tif (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBracket)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentChar = ' ';              // remove bracket from current line\n\t\t\t\t\t\tappendOpeningBracket = true;    // append bracket to following line\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isInLineBreak && previousNonWSChar != '(')\n\t\t\t\t{\n\t\t\t\t\t// don't space pad C++11 uniform initialization\n\t\t\t\t\tif (!isBracketType(bracketType, INIT_TYPE))\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t}\n\t\t\t\tappendCurrentChar();\n\n\t\t\t\tif (currentLineBeginsWithBracket\n\t\t\t\t        && (int) currentLineFirstBracketNum == charNum\n\t\t\t\t        && !isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\t\t\t\tshouldBreakLineAtNextChar = true;\n\t\t\t}\n\t\t\telse if (bracketFormatMode == RUN_IN_MODE)\n\t\t\t{\n\t\t\t\tif (isWhiteSpace(peekNextChar()))\n\t\t\t\t\tbreakLine();\n\t\t\t\telse if (isBeforeAnyComment())\n\t\t\t\t{\n\t\t\t\t\t// do not break unless comment is at line end\n\t\t\t\t\tif (isBeforeAnyLineEndComment(charNum) && !currentLineBeginsWithBracket)\n\t\t\t\t\t{\n\t\t\t\t\t\tcurrentChar = ' ';              // remove bracket from current line\n\t\t\t\t\t\tappendOpeningBracket = true;    // append bracket to following line\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!isInLineBreak && previousNonWSChar != '(')\n\t\t\t\t{\n\t\t\t\t\t// don't space pad C++11 uniform initialization\n\t\t\t\t\tif (!isBracketType(bracketType, INIT_TYPE))\n\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t}\n\t\t\t\tappendCurrentChar();\n\t\t\t}\n\t\t\telse if (bracketFormatMode == NONE_MODE)\n\t\t\t{\n\t\t\t\tif (currentLineBeginsWithBracket\n\t\t\t\t        && charNum == (int) currentLineFirstBracketNum)\n\t\t\t\t{\n\t\t\t\t\tappendCurrentChar();                // don't attach\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tif (previousNonWSChar != '(')\n\t\t\t\t\t{\n\t\t\t\t\t\t// don't space pad C++11 uniform initialization\n\t\t\t\t\t\tif (!isBracketType(bracketType, INIT_TYPE))\n\t\t\t\t\t\t\tappendSpacePad();\n\t\t\t\t\t}\n\t\t\t\t\tappendCurrentChar(false);           // OK to attach\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse\t     // not the first opening bracket\n\t\t{\n\t\t\tif (bracketFormatMode == RUN_IN_MODE)\n\t\t\t{\n\t\t\t\tif (previousNonWSChar == '{'\n\t\t\t\t        && bracketTypeStack->size() > 2\n\t\t\t\t        && !isBracketType((*bracketTypeStack)[bracketTypeStack->size() - 2], SINGLE_LINE_TYPE))\n\t\t\t\t\tformatArrayRunIn();\n\t\t\t}\n\t\t\telse if (!isInLineBreak\n\t\t\t         && !isWhiteSpace(peekNextChar())\n\t\t\t         && previousNonWSChar == '{'\n\t\t\t         && bracketTypeStack->size() > 2\n\t\t\t         && !isBracketType((*bracketTypeStack)[bracketTypeStack->size() - 2], SINGLE_LINE_TYPE))\n\t\t\t\tformatArrayRunIn();\n\n\t\t\tappendCurrentChar();\n\t\t}\n\t}\n\telse if (currentChar == '}')\n\t{\n\t\tif (attachClosingBracketMode)\n\t\t{\n\t\t\tif (isEmptyLine(formattedLine)\t\t\t// if a blank line precedes this\n\t\t\t        || isImmediatelyPostPreprocessor\n\t\t\t        || isCharImmediatelyPostLineComment\n\t\t\t        || isCharImmediatelyPostComment)\n\t\t\t\tappendCurrentChar();\t\t\t\t// don't attach\n\t\t\telse\n\t\t\t{\n\t\t\t\tappendSpacePad();\n\t\t\t\tappendCurrentChar(false);\t\t\t// attach\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// does this close the first opening bracket in the array?\n\t\t\t// must check if the block is still a single line because of anonymous statements\n\t\t\tif (!isBracketType(bracketType, INIT_TYPE)\n\t\t\t        && (!isBracketType(bracketType, SINGLE_LINE_TYPE)\n\t\t\t            || formattedLine.find('{') == string::npos))\n\t\t\t\tbreakLine();\n\t\t\tappendCurrentChar();\n\t\t}\n\n\t\t// if a declaration follows an enum definition, space pad\n\t\tchar peekedChar = peekNextChar();\n\t\tif (isLegalNameChar(peekedChar)\n\t\t        || peekedChar == '[')\n\t\t\tappendSpaceAfter();\n\t}\n}\n\n/**\n * determine if a run-in can be attached.\n * if it can insert the indents in formattedLine and reset the current line break.\n */\nvoid ASFormatter::formatRunIn()\n{\n\tassert(bracketFormatMode == RUN_IN_MODE || bracketFormatMode == NONE_MODE);\n\n\t// keep one line blocks returns true without indenting the run-in\n\tif (!isOkToBreakBlock(bracketTypeStack->back()))\n\t\treturn; // true;\n\n\t// make sure the line begins with a bracket\n\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\tif (lastText == string::npos || formattedLine[lastText] != '{')\n\t\treturn; // false;\n\n\t// make sure the bracket is broken\n\tif (formattedLine.find_first_not_of(\" \\t{\") != string::npos)\n\t\treturn; // false;\n\n\tif (isBracketType(bracketTypeStack->back(), NAMESPACE_TYPE))\n\t\treturn; // false;\n\n\tbool extraIndent = false;\n\tbool extraHalfIndent = false;\n\tisInLineBreak = true;\n\n\t// cannot attach a class modifier without indent-classes\n\tif (isCStyle()\n\t        && isCharPotentialHeader(currentLine, charNum)\n\t        && (isBracketType(bracketTypeStack->back(), CLASS_TYPE)\n\t            || (isBracketType(bracketTypeStack->back(), STRUCT_TYPE)\n\t                && isInIndentableStruct)))\n\t{\n\t\tif (findKeyword(currentLine, charNum, AS_PUBLIC)\n\t\t        || findKeyword(currentLine, charNum, AS_PRIVATE)\n\t\t        || findKeyword(currentLine, charNum, AS_PROTECTED))\n\t\t{\n\t\t\tif (getModifierIndent())\n\t\t\t\textraHalfIndent = true;\n\t\t\telse if (!getClassIndent())\n\t\t\t\treturn; // false;\n\t\t}\n\t\telse if (getClassIndent())\n\t\t\textraIndent = true;\n\t}\n\n\t// cannot attach a 'case' statement without indent-switches\n\tif (!getSwitchIndent()\n\t        && isCharPotentialHeader(currentLine, charNum)\n\t        && (findKeyword(currentLine, charNum, AS_CASE)\n\t            || findKeyword(currentLine, charNum, AS_DEFAULT)))\n\t\treturn; // false;\n\n\t// extra indent for switch statements\n\tif (getSwitchIndent()\n\t        && !preBracketHeaderStack->empty()\n\t        && preBracketHeaderStack->back() == &AS_SWITCH\n\t        && ((isLegalNameChar(currentChar)\n\t             && !findKeyword(currentLine, charNum, AS_CASE))))\n\t\textraIndent = true;\n\n\tisInLineBreak = false;\n\t// remove for extra whitespace\n\tif (formattedLine.length() > lastText + 1\n\t        && formattedLine.find_first_not_of(\" \\t\", lastText + 1) == string::npos)\n\t\tformattedLine.erase(lastText + 1);\n\n\tif (extraHalfIndent)\n\t{\n\t\tint indentLength_ = getIndentLength();\n\t\thorstmannIndentChars = indentLength_ / 2;\n\t\tformattedLine.append(horstmannIndentChars - 1, ' ');\n\t}\n\telse if (getForceTabIndentation() && getIndentLength() != getTabLength())\n\t{\n\t\t// insert the space indents\n\t\tstring indent;\n\t\tint indentLength_ = getIndentLength();\n\t\tint tabLength_ = getTabLength();\n\t\tindent.append(indentLength_, ' ');\n\t\tif (extraIndent)\n\t\t\tindent.append(indentLength_, ' ');\n\t\t// replace spaces indents with tab indents\n\t\tsize_t tabCount = indent.length() / tabLength_;\t\t// truncate extra spaces\n\t\tindent.erase(0U, tabCount * tabLength_);\n\t\tindent.insert(0U, tabCount, '\\t');\n\t\thorstmannIndentChars = indentLength_;\n\t\tif (indent[0] == ' ')\t\t\t// allow for bracket\n\t\t\tindent.erase(0, 1);\n\t\tformattedLine.append(indent);\n\t}\n\telse if (getIndentString() == \"\\t\")\n\t{\n\t\tappendChar('\\t', false);\n\t\thorstmannIndentChars = 2;\t// one for { and one for tab\n\t\tif (extraIndent)\n\t\t{\n\t\t\tappendChar('\\t', false);\n\t\t\thorstmannIndentChars++;\n\t\t}\n\t}\n\telse // spaces\n\t{\n\t\tint indentLength_ = getIndentLength();\n\t\tformattedLine.append(indentLength_ - 1, ' ');\n\t\thorstmannIndentChars = indentLength_;\n\t\tif (extraIndent)\n\t\t{\n\t\t\tformattedLine.append(indentLength_, ' ');\n\t\t\thorstmannIndentChars += indentLength_;\n\t\t}\n\t}\n\tisInHorstmannRunIn = true;\n}\n\n/**\n * remove whitespace and add indentation for an array run-in.\n */\nvoid ASFormatter::formatArrayRunIn()\n{\n\tassert(isBracketType(bracketTypeStack->back(), ARRAY_TYPE));\n\n\t// make sure the bracket is broken\n\tif (formattedLine.find_first_not_of(\" \\t{\") != string::npos)\n\t\treturn;\n\n\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\tif (lastText == string::npos || formattedLine[lastText] != '{')\n\t\treturn;\n\n\t// check for extra whitespace\n\tif (formattedLine.length() > lastText + 1\n\t        && formattedLine.find_first_not_of(\" \\t\", lastText + 1) == string::npos)\n\t\tformattedLine.erase(lastText + 1);\n\n\tif (getIndentString() == \"\\t\")\n\t{\n\t\tappendChar('\\t', false);\n\t\thorstmannIndentChars = 2;\t// one for { and one for tab\n\t}\n\telse\n\t{\n\t\tint indent = getIndentLength();\n\t\tformattedLine.append(indent - 1, ' ');\n\t\thorstmannIndentChars = indent;\n\t}\n\tisInHorstmannRunIn = true;\n\tisInLineBreak = false;\n}\n\n/**\n * delete a bracketTypeStack vector object\n * BracketTypeStack did not work with the DeleteContainer template\n */\nvoid ASFormatter::deleteContainer(vector<BracketType>* &container)\n{\n\tif (container != NULL)\n\t{\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * delete a vector object\n * T is the type of vector\n * used for all vectors except bracketTypeStack\n */\ntemplate<typename T>\nvoid ASFormatter::deleteContainer(T &container)\n{\n\tif (container != NULL)\n\t{\n\t\tcontainer->clear();\n\t\tdelete (container);\n\t\tcontainer = NULL;\n\t}\n}\n\n/**\n * initialize a BracketType vector object\n * BracketType did not work with the DeleteContainer template\n */\nvoid ASFormatter::initContainer(vector<BracketType>* &container, vector<BracketType>* value)\n{\n\tif (container != NULL)\n\t\tdeleteContainer(container);\n\tcontainer = value;\n}\n\n/**\n * initialize a vector object\n * T is the type of vector\n * used for all vectors except bracketTypeStack\n */\ntemplate<typename T>\nvoid ASFormatter::initContainer(T &container, T value)\n{\n\t// since the ASFormatter object is never deleted,\n\t// the existing vectors must be deleted before creating new ones\n\tif (container != NULL)\n\t\tdeleteContainer(container);\n\tcontainer = value;\n}\n\n/**\n * convert a tab to spaces.\n * charNum points to the current character to convert to spaces.\n * tabIncrementIn is the increment that must be added for tab indent characters\n *     to get the correct column for the current tab.\n * replaces the tab in currentLine with the required number of spaces.\n * replaces the value of currentChar.\n */\nvoid ASFormatter::convertTabToSpaces()\n{\n\tassert(currentLine[charNum] == '\\t');\n\n\t// do NOT replace if in quotes\n\tif (isInQuote || isInQuoteContinuation)\n\t\treturn;\n\n\tsize_t tabSize = getTabLength();\n\tsize_t numSpaces = tabSize - ((tabIncrementIn + charNum) % tabSize);\n\tcurrentLine.replace(charNum, 1, numSpaces, ' ');\n\tcurrentChar = currentLine[charNum];\n}\n\n/**\n* is it ok to break this block?\n*/\nbool ASFormatter::isOkToBreakBlock(BracketType bracketType) const\n{\n\t// Actually, there should not be an ARRAY_TYPE bracket here.\n\t// But this will avoid breaking a one line block when there is.\n\t// Otherwise they will be formatted differently on consecutive runs.\n\tif (isBracketType(bracketType, ARRAY_TYPE)\n\t        && isBracketType(bracketType, SINGLE_LINE_TYPE))\n\t\treturn false;\n\tif (!isBracketType(bracketType, SINGLE_LINE_TYPE)\n\t        || shouldBreakOneLineBlocks\n\t        || breakCurrentOneLineBlock)\n\t\treturn true;\n\treturn false;\n}\n\n/**\n* check if a sharp header is a paren or non-paren header\n*/\nbool ASFormatter::isSharpStyleWithParen(const string* header) const\n{\n\tif (isSharpStyle() && peekNextChar() == '('\n\t        && (header == &AS_CATCH\n\t            || header == &AS_DELEGATE))\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * Check for a following header when a comment is reached.\n * firstLine must contain the start of the comment.\n * return value is a pointer to the header or NULL.\n */\nconst string* ASFormatter::checkForHeaderFollowingComment(const string &firstLine) const\n{\n\tassert(isInComment || isInLineComment);\n\tassert(shouldBreakElseIfs || shouldBreakBlocks || isInSwitchStatement());\n\t// look ahead to find the next non-comment text\n\tbool endOnEmptyLine = (currentHeader == NULL);\n\tif (isInSwitchStatement())\n\t\tendOnEmptyLine = false;\n\tstring nextText = peekNextText(firstLine, endOnEmptyLine);\n\n\tif (nextText.length() == 0 || !isCharPotentialHeader(nextText, 0))\n\t\treturn NULL;\n\n\treturn ASBeautifier::findHeader(nextText, 0, headers);\n}\n\n/**\n * process preprocessor statements.\n * charNum should be the index of the #.\n *\n * delete bracketTypeStack entries added by #if if a #else is found.\n * prevents double entries in the bracketTypeStack.\n */\nvoid ASFormatter::processPreprocessor()\n{\n\tassert(currentChar == '#');\n\n\tconst size_t preproc = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\n\tif (preproc == string::npos)\n\t\treturn;\n\n\tif (currentLine.compare(preproc, 2, \"if\") == 0)\n\t{\n\t\tpreprocBracketTypeStackSize = bracketTypeStack->size();\n\t}\n\telse if (currentLine.compare(preproc, 4, \"else\") == 0)\n\t{\n\t\t// delete stack entries added in #if\n\t\t// should be replaced by #else\n\t\tif (preprocBracketTypeStackSize > 0)\n\t\t{\n\t\t\tint addedPreproc = bracketTypeStack->size() - preprocBracketTypeStackSize;\n\t\t\tfor (int i = 0; i < addedPreproc; i++)\n\t\t\t\tbracketTypeStack->pop_back();\n\t\t}\n\t}\n}\n\n/**\n * determine if the next line starts a comment\n * and a header follows the comment or comments.\n */\nbool ASFormatter::commentAndHeaderFollows()\n{\n\t// called ONLY IF shouldDeleteEmptyLines and shouldBreakBlocks are TRUE.\n\tassert(shouldDeleteEmptyLines && shouldBreakBlocks);\n\n\t// is the next line a comment\n\tif (!sourceIterator->hasMoreLines())\n\t\treturn false;\n\tstring nextLine_ = sourceIterator->peekNextLine();\n\tsize_t firstChar = nextLine_.find_first_not_of(\" \\t\");\n\tif (firstChar == string::npos\n\t        || !(nextLine_.compare(firstChar, 2, \"//\") == 0\n\t             || nextLine_.compare(firstChar, 2, \"/*\") == 0))\n\t{\n\t\tsourceIterator->peekReset();\n\t\treturn false;\n\t}\n\n\t// find the next non-comment text, and reset\n\tstring nextText = peekNextText(nextLine_, false, true);\n\tif (nextText.length() == 0 || !isCharPotentialHeader(nextText, 0))\n\t\treturn false;\n\n\tconst string* newHeader = ASBeautifier::findHeader(nextText, 0, headers);\n\n\tif (newHeader == NULL)\n\t\treturn false;\n\n\t// if a closing header, reset break unless break is requested\n\tif (isClosingHeader(newHeader) && !shouldBreakClosingHeaderBlocks)\n\t{\n\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\treturn false;\n\t}\n\n\treturn true;\n}\n\n/**\n * determine if a bracket should be attached or broken\n * uses brackets in the bracketTypeStack\n * the last bracket in the bracketTypeStack is the one being formatted\n * returns true if the bracket should be broken\n */\nbool ASFormatter::isCurrentBracketBroken() const\n{\n\tassert(bracketTypeStack->size() > 1);\n\n\tbool breakBracket = false;\n\tsize_t stackEnd = bracketTypeStack->size() - 1;\n\n\t// check bracket modifiers\n\tif (shouldAttachExternC\n\t        && isBracketType((*bracketTypeStack)[stackEnd], EXTERN_TYPE))\n\t{\n\t\treturn false;\n\t}\n\tif (shouldAttachNamespace\n\t        && isBracketType((*bracketTypeStack)[stackEnd], NAMESPACE_TYPE))\n\t{\n\t\treturn false;\n\t}\n\telse if (shouldAttachClass\n\t         && (isBracketType((*bracketTypeStack)[stackEnd], CLASS_TYPE)\n\t             || isBracketType((*bracketTypeStack)[stackEnd], INTERFACE_TYPE)))\n\t{\n\t\treturn false;\n\t}\n\telse if (shouldAttachInline\n\t         && isCStyle()\t\t\t// for C++ only\n\t         && bracketFormatMode != RUN_IN_MODE\n\t         && isBracketType((*bracketTypeStack)[stackEnd], COMMAND_TYPE))\n\t{\n\t\tsize_t i;\n\t\tfor (i = 1; i < bracketTypeStack->size(); i++)\n\t\t\tif (isBracketType((*bracketTypeStack)[i], CLASS_TYPE)\n\t\t\t        || isBracketType((*bracketTypeStack)[i], STRUCT_TYPE))\n\t\t\t\treturn false;\n\t}\n\n\t// check brackets\n\tif (isBracketType((*bracketTypeStack)[stackEnd], EXTERN_TYPE))\n\t{\n\t\tif (currentLineBeginsWithBracket\n\t\t        || bracketFormatMode == RUN_IN_MODE)\n\t\t\tbreakBracket = true;\n\t}\n\telse if (bracketFormatMode == NONE_MODE)\n\t{\n\t\tif (currentLineBeginsWithBracket\n\t\t        && (int) currentLineFirstBracketNum == charNum)\n\t\t\tbreakBracket = true;\n\t}\n\telse if (bracketFormatMode == BREAK_MODE || bracketFormatMode == RUN_IN_MODE)\n\t{\n\t\tbreakBracket = true;\n\t}\n\telse if (bracketFormatMode == LINUX_MODE || bracketFormatMode == STROUSTRUP_MODE)\n\t{\n\t\t// break a namespace, class, or interface if Linux\n\t\tif (isBracketType((*bracketTypeStack)[stackEnd], NAMESPACE_TYPE)\n\t\t        || isBracketType((*bracketTypeStack)[stackEnd], CLASS_TYPE)\n\t\t        || isBracketType((*bracketTypeStack)[stackEnd], INTERFACE_TYPE))\n\t\t{\n\t\t\tif (bracketFormatMode == LINUX_MODE)\n\t\t\t\tbreakBracket = true;\n\t\t}\n\t\t// break the first bracket if a function\n\t\telse if (isBracketType((*bracketTypeStack)[stackEnd], COMMAND_TYPE))\n\t\t{\n\t\t\tif (stackEnd == 1)\n\t\t\t{\n\t\t\t\tbreakBracket = true;\n\t\t\t}\n\t\t\telse if (stackEnd > 1)\n\t\t\t{\n\t\t\t\t// break the first bracket after these if a function\n\t\t\t\tif (isBracketType((*bracketTypeStack)[stackEnd - 1], NAMESPACE_TYPE)\n\t\t\t\t        || isBracketType((*bracketTypeStack)[stackEnd - 1], CLASS_TYPE)\n\t\t\t\t        || isBracketType((*bracketTypeStack)[stackEnd - 1], ARRAY_TYPE)\n\t\t\t\t        || isBracketType((*bracketTypeStack)[stackEnd - 1], STRUCT_TYPE)\n\t\t\t\t        || isBracketType((*bracketTypeStack)[stackEnd - 1], EXTERN_TYPE))\n\t\t\t\t{\n\t\t\t\t\tbreakBracket = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn breakBracket;\n}\n\n/**\n * format comment body\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatCommentBody()\n{\n\tassert(isInComment);\n\n\t// append the comment\n\twhile (charNum < (int) currentLine.length())\n\t{\n\t\tcurrentChar = currentLine[charNum];\n\t\tif (currentLine.compare(charNum, 2, \"*/\") == 0)\n\t\t{\n\t\t\tformatCommentCloser();\n\t\t\tbreak;\n\t\t}\n\t\tif (currentChar == '\\t' && shouldConvertTabs)\n\t\t\tconvertTabToSpaces();\n\t\tappendCurrentChar();\n\t\t++charNum;\n\t}\n\tif (shouldStripCommentPrefix)\n\t\tstripCommentPrefix();\n}\n\n/**\n * format a comment opener\n * the comment opener will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatCommentOpener()\n{\n\tassert(isSequenceReached(\"/*\"));\n\n\tisInComment = isInCommentStartLine = true;\n\tisImmediatelyPostLineComment = false;\n\tif (previousNonWSChar == '}')\n\t\tresetEndOfStatement();\n\n\t// Check for a following header.\n\t// For speed do not check multiple comment lines more than once.\n\t// For speed do not check shouldBreakBlocks if previous line is empty, a comment, or a '{'.\n\tconst string* followingHeader = NULL;\n\tif ((doesLineStartComment\n\t        && !isImmediatelyPostCommentOnly\n\t        && isBracketType(bracketTypeStack->back(), COMMAND_TYPE))\n\t        && (shouldBreakElseIfs\n\t            || isInSwitchStatement()\n\t            || (shouldBreakBlocks\n\t                && !isImmediatelyPostEmptyLine\n\t                && previousCommandChar != '{')))\n\t\tfollowingHeader = checkForHeaderFollowingComment(currentLine.substr(charNum));\n\n\tif (spacePadNum != 0 && !isInLineBreak)\n\t\tadjustComments();\n\tformattedLineCommentNum = formattedLine.length();\n\n\t// must be done BEFORE appendSequence\n\tif (previousCommandChar == '{'\n\t        && !isImmediatelyPostComment\n\t        && !isImmediatelyPostLineComment)\n\t{\n\t\tif (bracketFormatMode == NONE_MODE)\n\t\t{\n\t\t\t// should a run-in statement be attached?\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tformatRunIn();\n\t\t}\n\t\telse if (bracketFormatMode == ATTACH_MODE)\n\t\t{\n\t\t\t// if the bracket was not attached?\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{'\n\t\t\t        && !isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE))\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse if (bracketFormatMode == RUN_IN_MODE)\n\t\t{\n\t\t\t// should a run-in statement be attached?\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t\tformatRunIn();\n\t\t}\n\t}\n\telse if (!doesLineStartComment)\n\t\tnoTrimCommentContinuation = true;\n\n\t// ASBeautifier needs to know the following statements\n\tif (shouldBreakElseIfs && followingHeader == &AS_ELSE)\n\t\telseHeaderFollowsComments = true;\n\tif (followingHeader == &AS_CASE || followingHeader == &AS_DEFAULT)\n\t\tcaseHeaderFollowsComments = true;\n\n\t// appendSequence will write the previous line\n\tappendSequence(AS_OPEN_COMMENT);\n\tgoForward(1);\n\n\t// must be done AFTER appendSequence\n\n\t// Break before the comment if a header follows the line comment.\n\t// But not break if previous line is empty, a comment, or a '{'.\n\tif (shouldBreakBlocks\n\t        && followingHeader != NULL\n\t        && !isImmediatelyPostEmptyLine\n\t        && previousCommandChar != '{')\n\t{\n\t\tif (isClosingHeader(followingHeader))\n\t\t{\n\t\t\tif (!shouldBreakClosingHeaderBlocks)\n\t\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t\t}\n\t\t// if an opening header, break before the comment\n\t\telse\n\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t}\n\n\tif (previousCommandChar == '}')\n\t\tcurrentHeader = NULL;\n}\n\n/**\n * format a comment closer\n * the comment closer will be appended to the current formattedLine\n */\nvoid ASFormatter::formatCommentCloser()\n{\n\tisInComment = false;\n\tnoTrimCommentContinuation = false;\n\tisImmediatelyPostComment = true;\n\tappendSequence(AS_CLOSE_COMMENT);\n\tgoForward(1);\n\tif (doesLineStartComment\n\t        && (currentLine.find_first_not_of(\" \\t\", charNum + 1) == string::npos))\n\t\tlineEndsInCommentOnly = true;\n\tif (peekNextChar() == '}'\n\t        && previousCommandChar != ';'\n\t        && !isBracketType(bracketTypeStack->back(),  ARRAY_TYPE)\n\t        && !isInPreprocessor\n\t        && isOkToBreakBlock(bracketTypeStack->back()))\n\t{\n\t\tisInLineBreak = true;\n\t\tshouldBreakLineAtNextChar = true;\n\t}\n}\n\n/**\n * format a line comment body\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatLineCommentBody()\n{\n\tassert(isInLineComment);\n\n\t// append the comment\n\twhile (charNum < (int) currentLine.length())\n//\t        && !isLineReady\t// commented out in release 2.04, unnecessary\n\t{\n\t\tcurrentChar = currentLine[charNum];\n\t\tif (currentChar == '\\t' && shouldConvertTabs)\n\t\t\tconvertTabToSpaces();\n\t\tappendCurrentChar();\n\t\t++charNum;\n\t}\n\n\t// explicitly break a line when a line comment's end is found.\n\tif (charNum == (int) currentLine.length())\n\t{\n\t\tisInLineBreak = true;\n\t\tisInLineComment = false;\n\t\tisImmediatelyPostLineComment = true;\n\t\tcurrentChar = 0;  //make sure it is a neutral char.\n\t}\n}\n\n/**\n * format a line comment opener\n * the line comment opener will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatLineCommentOpener()\n{\n\tassert(isSequenceReached(\"//\"));\n\n\tif ((int) currentLine.length() > charNum + 2\n\t        && currentLine[charNum + 2] == '\\xf2')     // check for windows line marker\n\t\tisAppendPostBlockEmptyLineRequested = false;\n\n\tisInLineComment = true;\n\tisCharImmediatelyPostComment = false;\n\tif (previousNonWSChar == '}')\n\t\tresetEndOfStatement();\n\n\t// Check for a following header.\n\t// For speed do not check multiple comment lines more than once.\n\t// For speed do not check shouldBreakBlocks if previous line is empty, a comment, or a '{'.\n\tconst string* followingHeader = NULL;\n\tif ((lineIsLineCommentOnly\n\t        && !isImmediatelyPostCommentOnly\n\t        && isBracketType(bracketTypeStack->back(), COMMAND_TYPE))\n\t        && (shouldBreakElseIfs\n\t            || isInSwitchStatement()\n\t            || (shouldBreakBlocks\n\t                && !isImmediatelyPostEmptyLine\n\t                && previousCommandChar != '{')))\n\t\tfollowingHeader = checkForHeaderFollowingComment(currentLine.substr(charNum));\n\n\t// do not indent if in column 1 or 2\n\t// or in a namespace before the opening bracket\n\tif ((!shouldIndentCol1Comments && !lineCommentNoIndent)\n\t        || foundNamespaceHeader)\n\t{\n\t\tif (charNum == 0)\n\t\t\tlineCommentNoIndent = true;\n\t\telse if (charNum == 1 && currentLine[0] == ' ')\n\t\t\tlineCommentNoIndent = true;\n\t}\n\t// move comment if spaces were added or deleted\n\tif (lineCommentNoIndent == false && spacePadNum != 0 && !isInLineBreak)\n\t\tadjustComments();\n\tformattedLineCommentNum = formattedLine.length();\n\n\t// must be done BEFORE appendSequence\n\t// check for run-in statement\n\tif (previousCommandChar == '{'\n\t        && !isImmediatelyPostComment\n\t        && !isImmediatelyPostLineComment)\n\t{\n\t\tif (bracketFormatMode == NONE_MODE)\n\t\t{\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tformatRunIn();\n\t\t}\n\t\telse if (bracketFormatMode == RUN_IN_MODE)\n\t\t{\n\t\t\tif (!lineCommentNoIndent)\n\t\t\t\tformatRunIn();\n\t\t\telse\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse if (bracketFormatMode == BREAK_MODE)\n\t\t{\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t}\n\n\t// ASBeautifier needs to know the following statements\n\tif (shouldBreakElseIfs && followingHeader == &AS_ELSE)\n\t\telseHeaderFollowsComments = true;\n\tif (followingHeader == &AS_CASE || followingHeader == &AS_DEFAULT)\n\t\tcaseHeaderFollowsComments = true;\n\n\t// appendSequence will write the previous line\n\tappendSequence(AS_OPEN_LINE_COMMENT);\n\tgoForward(1);\n\n\t// must be done AFTER appendSequence\n\n\t// Break before the comment if a header follows the line comment.\n\t// But do not break if previous line is empty, a comment, or a '{'.\n\tif (shouldBreakBlocks\n\t        && followingHeader != NULL\n\t        && !isImmediatelyPostEmptyLine\n\t        && previousCommandChar != '{')\n\t{\n\t\tif (isClosingHeader(followingHeader))\n\t\t{\n\t\t\tif (!shouldBreakClosingHeaderBlocks)\n\t\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t\t}\n\t\t// if an opening header, break before the comment\n\t\telse\n\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t}\n\n\tif (previousCommandChar == '}')\n\t\tcurrentHeader = NULL;\n\n\t// if tabbed input don't convert the immediately following tabs to spaces\n\tif (getIndentString() == \"\\t\" && lineCommentNoIndent)\n\t{\n\t\twhile (charNum + 1 < (int) currentLine.length()\n\t\t        && currentLine[charNum + 1] == '\\t')\n\t\t{\n\t\t\tcurrentChar = currentLine[++charNum];\n\t\t\tappendCurrentChar();\n\t\t}\n\t}\n\n\t// explicitly break a line when a line comment's end is found.\n\tif (charNum + 1 == (int) currentLine.length())\n\t{\n\t\tisInLineBreak = true;\n\t\tisInLineComment = false;\n\t\tisImmediatelyPostLineComment = true;\n\t\tcurrentChar = 0;  //make sure it is a neutral char.\n\t}\n}\n\n/**\n * format quote body\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatQuoteBody()\n{\n\tassert(isInQuote);\n\n\tif (isSpecialChar)\n\t{\n\t\tisSpecialChar = false;\n\t}\n\telse if (currentChar == '\\\\' && !isInVerbatimQuote)\n\t{\n\t\tif (peekNextChar() == ' ')              // is this '\\' at end of line\n\t\t\thaveLineContinuationChar = true;\n\t\telse\n\t\t\tisSpecialChar = true;\n\t}\n\telse if (isInVerbatimQuote && currentChar == '\"')\n\t{\n\t\tif (isCStyle())\n\t\t{\n\t\t\tstring delim = ')' + verbatimDelimiter;\n\t\t\tint delimStart = charNum - delim.length();\n\t\t\tif (delimStart > 0 && currentLine.substr(delimStart, delim.length()) == delim)\n\t\t\t{\n\t\t\t\tisInQuote = false;\n\t\t\t\tisInVerbatimQuote = false;\n\t\t\t}\n\t\t}\n\t\telse if (isSharpStyle())\n\t\t{\n\t\t\tif (peekNextChar() == '\"')              // check consecutive quotes\n\t\t\t{\n\t\t\t\tappendSequence(\"\\\"\\\"\");\n\t\t\t\tgoForward(1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tisInQuote = false;\n\t\t\t\tisInVerbatimQuote = false;\n\t\t\t}\n\t\t}\n\t}\n\telse if (quoteChar == currentChar)\n\t{\n\t\tisInQuote = false;\n\t}\n\n\tappendCurrentChar();\n\n\t// append the text to the ending quoteChar or an escape sequence\n\t// tabs in quotes are NOT changed by convert-tabs\n\tif (isInQuote && currentChar != '\\\\')\n\t{\n\t\twhile (charNum + 1 < (int) currentLine.length()\n\t\t        && currentLine[charNum + 1] != quoteChar\n\t\t        && currentLine[charNum + 1] != '\\\\')\n\t\t{\n\t\t\tcurrentChar = currentLine[++charNum];\n\t\t\tappendCurrentChar();\n\t\t}\n\t}\n}\n\n/**\n * format a quote opener\n * the quote opener will be appended to the current formattedLine or a new formattedLine as necessary\n * the calling function should have a continue statement after calling this method\n */\nvoid ASFormatter::formatQuoteOpener()\n{\n\tassert(currentChar == '\"' || currentChar == '\\'');\n\n\tisInQuote = true;\n\tquoteChar = currentChar;\n\tif (isCStyle() && previousChar == 'R')\n\t{\n\t\tint parenPos = currentLine.find('(', charNum);\n\t\tif (parenPos != -1)\n\t\t{\n\t\t\tisInVerbatimQuote = true;\n\t\t\tverbatimDelimiter = currentLine.substr(charNum + 1, parenPos - charNum - 1);\n\t\t}\n\t}\n\telse if (isSharpStyle() && previousChar == '@')\n\t\tisInVerbatimQuote = true;\n\n\t// a quote following a bracket is an array\n\tif (previousCommandChar == '{'\n\t        && !isImmediatelyPostComment\n\t        && !isImmediatelyPostLineComment\n\t        && isNonInStatementArray\n\t        && !isBracketType(bracketTypeStack->back(), SINGLE_LINE_TYPE)\n\t        && !isWhiteSpace(peekNextChar()))\n\t{\n\t\tif (bracketFormatMode == NONE_MODE)\n\t\t{\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tformatRunIn();\n\t\t}\n\t\telse if (bracketFormatMode == RUN_IN_MODE)\n\t\t{\n\t\t\tformatRunIn();\n\t\t}\n\t\telse if (bracketFormatMode == BREAK_MODE)\n\t\t{\n\t\t\tif (formattedLine.length() > 0 && formattedLine[0] == '{')\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (currentLineBeginsWithBracket)\n\t\t\t\tisInLineBreak = true;\n\t\t}\n\t}\n\tpreviousCommandChar = ' ';\n\tappendCurrentChar();\n}\n\n/**\n * get the next line comment adjustment that results from breaking a closing bracket.\n * the bracket must be on the same line as the closing header.\n * i.e \"} else\" changed to \"} <NL> else\".\n */\nint ASFormatter::getNextLineCommentAdjustment()\n{\n\tassert(foundClosingHeader && previousNonWSChar == '}');\n\tif (charNum < 1)\t\t\t// \"else\" is in column 1\n\t\treturn 0;\n\tsize_t lastBracket = currentLine.rfind('}', charNum - 1);\n\tif (lastBracket != string::npos)\n\t\treturn (lastBracket - charNum);\t// return a negative number\n\treturn 0;\n}\n\n// for console build only\nLineEndFormat ASFormatter::getLineEndFormat() const\n{\n\treturn lineEnd;\n}\n\n/**\n * get the current line comment adjustment that results from attaching\n * a closing header to a closing bracket.\n * the bracket must be on the line previous to the closing header.\n * the adjustment is 2 chars, one for the bracket and one for the space.\n * i.e \"} <NL> else\" changed to \"} else\".\n */\nint ASFormatter::getCurrentLineCommentAdjustment()\n{\n\tassert(foundClosingHeader && previousNonWSChar == '}');\n\tif (charNum < 1)\n\t\treturn 2;\n\tsize_t lastBracket = currentLine.rfind('}', charNum - 1);\n\tif (lastBracket == string::npos)\n\t\treturn 2;\n\treturn 0;\n}\n\n/**\n * get the previous word on a line\n * the argument 'currPos' must point to the current position.\n *\n * @return is the previous word or an empty string if none found.\n */\nstring ASFormatter::getPreviousWord(const string &line, int currPos) const\n{\n\t// get the last legal word (may be a number)\n\tif (currPos == 0)\n\t\treturn string();\n\n\tsize_t end = line.find_last_not_of(\" \\t\", currPos - 1);\n\tif (end == string::npos || !isLegalNameChar(line[end]))\n\t\treturn string();\n\n\tint start;          // start of the previous word\n\tfor (start = end; start > -1; start--)\n\t{\n\t\tif (!isLegalNameChar(line[start]) || line[start] == '.')\n\t\t\tbreak;\n\t}\n\tstart++;\n\n\treturn (line.substr(start, end - start + 1));\n}\n\n/**\n * check if a line break is needed when a closing bracket\n * is followed by a closing header.\n * the break depends on the bracketFormatMode and other factors.\n */\nvoid ASFormatter::isLineBreakBeforeClosingHeader()\n{\n\tassert(foundClosingHeader && previousNonWSChar == '}');\n\tif (bracketFormatMode == BREAK_MODE\n\t        || bracketFormatMode == RUN_IN_MODE\n\t        || attachClosingBracketMode)\n\t{\n\t\tisInLineBreak = true;\n\t}\n\telse if (bracketFormatMode == NONE_MODE)\n\t{\n\t\tif (shouldBreakClosingHeaderBrackets\n\t\t        || getBracketIndent() || getBlockIndent())\n\t\t{\n\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tappendSpacePad();\n\t\t\t// is closing bracket broken?\n\t\t\tsize_t i = currentLine.find_first_not_of(\" \\t\");\n\t\t\tif (i != string::npos && currentLine[i] == '}')\n\t\t\t\tisInLineBreak = false;\n\n\t\t\tif (shouldBreakBlocks)\n\t\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t}\n\t}\n\t// bracketFormatMode == ATTACH_MODE, LINUX_MODE, STROUSTRUP_MODE\n\telse\n\t{\n\t\tif (shouldBreakClosingHeaderBrackets\n\t\t        || getBracketIndent() || getBlockIndent())\n\t\t{\n\t\t\tisInLineBreak = true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// if a blank line does not precede this\n\t\t\t// or last line is not a one line block, attach header\n\t\t\tbool previousLineIsEmpty = isEmptyLine(formattedLine);\n\t\t\tint previousLineIsOneLineBlock = 0;\n\t\t\tsize_t firstBracket = findNextChar(formattedLine, '{');\n\t\t\tif (firstBracket != string::npos)\n\t\t\t\tpreviousLineIsOneLineBlock = isOneLineBlockReached(formattedLine, firstBracket);\n\t\t\tif (!previousLineIsEmpty\n\t\t\t        && previousLineIsOneLineBlock == 0)\n\t\t\t{\n\t\t\t\tisInLineBreak = false;\n\t\t\t\tappendSpacePad();\n\t\t\t\tspacePadNum = 0;\t// don't count as comment padding\n\t\t\t}\n\n\t\t\tif (shouldBreakBlocks)\n\t\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t}\n\t}\n}\n\n/**\n * Add brackets to a single line statement following a header.\n * Brackets are not added if the proper conditions are not met.\n * Brackets are added to the currentLine.\n */\nbool ASFormatter::addBracketsToStatement()\n{\n\tassert(isImmediatelyPostHeader);\n\n\tif (currentHeader != &AS_IF\n\t        && currentHeader != &AS_ELSE\n\t        && currentHeader != &AS_FOR\n\t        && currentHeader != &AS_WHILE\n\t        && currentHeader != &AS_DO\n\t        && currentHeader != &AS_FOREACH\n\t        && currentHeader != &AS_QFOREACH\n\t        && currentHeader != &AS_QFOREVER\n\t        && currentHeader != &AS_FOREVER)\n\t\treturn false;\n\n\tif (currentHeader == &AS_WHILE && foundClosingHeader)\t// do-while\n\t\treturn false;\n\n\t// do not bracket an empty statement\n\tif (currentChar == ';')\n\t\treturn false;\n\n\t// do not add if a header follows\n\tif (isCharPotentialHeader(currentLine, charNum))\n\t\tif (findHeader(headers) != NULL)\n\t\t\treturn false;\n\n\t// find the next semi-colon\n\tsize_t nextSemiColon = charNum;\n\tif (currentChar != ';')\n\t\tnextSemiColon = findNextChar(currentLine, ';', charNum + 1);\n\tif (nextSemiColon == string::npos)\n\t\treturn false;\n\n\t// add closing bracket before changing the line length\n\tif (nextSemiColon == currentLine.length() - 1)\n\t\tcurrentLine.append(\" }\");\n\telse\n\t\tcurrentLine.insert(nextSemiColon + 1, \" }\");\n\t// add opening bracket\n\tcurrentLine.insert(charNum, \"{ \");\n\tassert(computeChecksumIn(\"{}\"));\n\tcurrentChar = '{';\n\t// remove extra spaces\n\tif (!shouldAddOneLineBrackets)\n\t{\n\t\tsize_t lastText = formattedLine.find_last_not_of(\" \\t\");\n\t\tif ((formattedLine.length() - 1) - lastText > 1)\n\t\t\tformattedLine.erase(lastText + 1);\n\t}\n\treturn true;\n}\n\n/**\n * Remove brackets from a single line statement following a header.\n * Brackets are not removed if the proper conditions are not met.\n * The first bracket is replaced by a space.\n */\nbool ASFormatter::removeBracketsFromStatement()\n{\n\tassert(isImmediatelyPostHeader);\n\tassert(currentChar == '{');\n\n\tif (currentHeader != &AS_IF\n\t        && currentHeader != &AS_ELSE\n\t        && currentHeader != &AS_FOR\n\t        && currentHeader != &AS_WHILE\n\t        && currentHeader != &AS_FOREACH)\n\t\treturn false;\n\n\tif (currentHeader == &AS_WHILE && foundClosingHeader)\t// do-while\n\t\treturn false;\n\n\tbool isFirstLine = true;\n\tbool needReset = false;\n\tstring nextLine_;\n\t// leave nextLine_ empty if end of line comment follows\n\tif (!isBeforeAnyLineEndComment(charNum) || currentLineBeginsWithBracket)\n\t\tnextLine_ = currentLine.substr(charNum + 1);\n\tsize_t nextChar = 0;\n\n\t// find the first non-blank text\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tnextChar = 0;\n\t\t\tneedReset = true;\n\t\t}\n\n\t\tnextChar = nextLine_.find_first_not_of(\" \\t\", nextChar);\n\t\tif (nextChar != string::npos)\n\t\t\tbreak;\n\t}\n\n\t// don't remove if comments or a header follow the bracket\n\tif ((nextLine_.compare(nextChar, 2, \"/*\") == 0)\n\t        || (nextLine_.compare(nextChar, 2, \"//\") == 0)\n\t        || (isCharPotentialHeader(nextLine_, nextChar)\n\t            && ASBeautifier::findHeader(nextLine_, nextChar, headers) != NULL))\n\t{\n\t\tif (needReset)\n\t\t\tsourceIterator->peekReset();\n\t\treturn false;\n\t}\n\n\t// find the next semi-colon\n\tsize_t nextSemiColon = nextChar;\n\tif (nextLine_[nextChar] != ';')\n\t\tnextSemiColon = findNextChar(nextLine_, ';', nextChar + 1);\n\tif (nextSemiColon == string::npos)\n\t{\n\t\tif (needReset)\n\t\t\tsourceIterator->peekReset();\n\t\treturn false;\n\t}\n\n\t// find the closing bracket\n\tisFirstLine = true;\n\tnextChar = nextSemiColon + 1;\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tnextChar = 0;\n\t\t\tneedReset = true;\n\t\t}\n\t\tnextChar = nextLine_.find_first_not_of(\" \\t\", nextChar);\n\t\tif (nextChar != string::npos)\n\t\t\tbreak;\n\t}\n\tif (nextLine_.length() == 0 || nextLine_[nextChar] != '}')\n\t{\n\t\tif (needReset)\n\t\t\tsourceIterator->peekReset();\n\t\treturn false;\n\t}\n\n\t// remove opening bracket\n\tcurrentLine[charNum] = currentChar = ' ';\n\tassert(adjustChecksumIn(-'{'));\n\tif (needReset)\n\t\tsourceIterator->peekReset();\n\treturn true;\n}\n\n/**\n * Find the next character that is not in quotes or a comment.\n *\n * @param line         the line to be searched.\n * @param searchChar   the char to find.\n * @param searchStart  the start position on the line (default is 0).\n * @return the position on the line or string::npos if not found.\n */\nsize_t ASFormatter::findNextChar(string &line, char searchChar, int searchStart /*0*/)\n{\n\t// find the next searchChar\n\tsize_t i;\n\tfor (i = searchStart; i < line.length(); i++)\n\t{\n\t\tif (line.compare(i, 2, \"//\") == 0)\n\t\t\treturn string::npos;\n\t\tif (line.compare(i, 2, \"/*\") == 0)\n\t\t{\n\t\t\tsize_t endComment = line.find(\"*/\", i + 2);\n\t\t\tif (endComment == string::npos)\n\t\t\t\treturn string::npos;\n\t\t\ti = endComment + 2;\n\t\t\tif (i >= line.length())\n\t\t\t\treturn string::npos;\n\t\t}\n\t\tif (line[i] == '\\'' || line[i] == '\\\"')\n\t\t{\n\t\t\tchar quote = line[i];\n\t\t\twhile (i < line.length())\n\t\t\t{\n\t\t\t\tsize_t endQuote = line.find(quote, i + 1);\n\t\t\t\tif (endQuote == string::npos)\n\t\t\t\t\treturn string::npos;\n\t\t\t\ti = endQuote;\n\t\t\t\tif (line[endQuote - 1] != '\\\\')\t// check for '\\\"'\n\t\t\t\t\tbreak;\n\t\t\t\tif (line[endQuote - 2] == '\\\\')\t// check for '\\\\'\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (line[i] == searchChar)\n\t\t\tbreak;\n\n\t\t// for now don't process C# 'delegate' brackets\n\t\t// do this last in case the search char is a '{'\n\t\tif (line[i] == '{')\n\t\t\treturn string::npos;\n\t}\n\tif (i >= line.length())\t// didn't find searchChar\n\t\treturn string::npos;\n\n\treturn i;\n}\n\n/**\n * Look ahead in the file to see if a struct has access modifiers.\n *\n * @param firstLine     a reference to the line to indent.\n * @param index         the current line index.\n * @return              true if the struct has access modifiers.\n */\nbool ASFormatter::isStructAccessModified(string &firstLine, size_t index) const\n{\n\tassert(firstLine[index] == '{');\n\tassert(isCStyle());\n\n\tbool isFirstLine = true;\n\tbool needReset = false;\n\tsize_t bracketCount = 1;\n\tstring nextLine_ = firstLine.substr(index + 1);\n\n\t// find the first non-blank text, bypassing all comments and quotes.\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tchar quoteChar_ = ' ';\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tneedReset = true;\n\t\t}\n\t\t// parse the line\n\t\tfor (size_t i = 0; i < nextLine_.length(); i++)\n\t\t{\n\t\t\tif (isWhiteSpace(nextLine_[i]))\n\t\t\t\tcontinue;\n\t\t\tif (nextLine_.compare(i, 2, \"/*\") == 0)\n\t\t\t\tisInComment_ = true;\n\t\t\tif (isInComment_)\n\t\t\t{\n\t\t\t\tif (nextLine_.compare(i, 2, \"*/\") == 0)\n\t\t\t\t{\n\t\t\t\t\tisInComment_ = false;\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_[i] == '\\\\')\n\t\t\t{\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isInQuote_)\n\t\t\t{\n\t\t\t\tif (nextLine_[i] == quoteChar_)\n\t\t\t\t\tisInQuote_ = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (nextLine_[i] == '\"' || nextLine_[i] == '\\'')\n\t\t\t{\n\t\t\t\tisInQuote_ = true;\n\t\t\t\tquoteChar_ = nextLine_[i];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_.compare(i, 2, \"//\") == 0)\n\t\t\t{\n\t\t\t\ti = nextLine_.length();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// handle brackets\n\t\t\tif (nextLine_[i] == '{')\n\t\t\t\t++bracketCount;\n\t\t\tif (nextLine_[i] == '}')\n\t\t\t\t--bracketCount;\n\t\t\tif (bracketCount == 0)\n\t\t\t{\n\t\t\t\tif (needReset)\n\t\t\t\t\tsourceIterator->peekReset();\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// check for access modifiers\n\t\t\tif (isCharPotentialHeader(nextLine_, i))\n\t\t\t{\n\t\t\t\tif (findKeyword(nextLine_, i, AS_PUBLIC)\n\t\t\t\t        || findKeyword(nextLine_, i, AS_PRIVATE)\n\t\t\t\t        || findKeyword(nextLine_, i, AS_PROTECTED))\n\t\t\t\t{\n\t\t\t\t\tif (needReset)\n\t\t\t\t\t\tsourceIterator->peekReset();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tstring name = getCurrentWord(nextLine_, i);\n\t\t\t\ti += name.length() - 1;\n\t\t\t}\n\t\t}\t// end of for loop\n\t}\t// end of while loop\n\n\tif (needReset)\n\t\tsourceIterator->peekReset();\n\treturn false;\n}\n\n/**\n* Look ahead in the file to see if a preprocessor block is indentable.\n*\n* @param firstLine     a reference to the line to indent.\n* @param index         the current line index.\n* @return              true if the block is indentable.\n*/\nbool ASFormatter::isIndentablePreprocessorBlock(string &firstLine, size_t index)\n{\n\tassert(firstLine[index] == '#');\n\n\tbool isFirstLine = true;\n\tbool needReset = false;\n\tbool isInIndentableBlock = false;\n\tbool blockContainsBrackets = false;\n\tbool blockContainsDefineContinuation = false;\n\tbool isInClassConstructor = false;\n\tint  numBlockIndents = 0;\n\tint  lineParenCount = 0;\n\tstring nextLine_ = firstLine.substr(index);\n\n\t// find end of the block, bypassing all comments and quotes.\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tchar quoteChar_ = ' ';\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tneedReset = true;\n\t\t}\n\t\t// parse the line\n\t\tfor (size_t i = 0; i < nextLine_.length(); i++)\n\t\t{\n\t\t\tif (isWhiteSpace(nextLine_[i]))\n\t\t\t\tcontinue;\n\t\t\tif (nextLine_.compare(i, 2, \"/*\") == 0)\n\t\t\t\tisInComment_ = true;\n\t\t\tif (isInComment_)\n\t\t\t{\n\t\t\t\tif (nextLine_.compare(i, 2, \"*/\") == 0)\n\t\t\t\t{\n\t\t\t\t\tisInComment_ = false;\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_[i] == '\\\\')\n\t\t\t{\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (isInQuote_)\n\t\t\t{\n\t\t\t\tif (nextLine_[i] == quoteChar_)\n\t\t\t\t\tisInQuote_ = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (nextLine_[i] == '\"' || nextLine_[i] == '\\'')\n\t\t\t{\n\t\t\t\tisInQuote_ = true;\n\t\t\t\tquoteChar_ = nextLine_[i];\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_.compare(i, 2, \"//\") == 0)\n\t\t\t{\n\t\t\t\ti = nextLine_.length();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// handle preprocessor statement\n\t\t\tif (nextLine_[i] == '#')\n\t\t\t{\n\t\t\t\tstring preproc = ASBeautifier::extractPreprocessorStatement(nextLine_);\n\t\t\t\tif (preproc.length() >= 2 && preproc.substr(0, 2) == \"if\") // #if, #ifdef, #ifndef\n\t\t\t\t{\n\t\t\t\t\tnumBlockIndents += 1;\n\t\t\t\t\tisInIndentableBlock = true;\n\t\t\t\t\t// flag first preprocessor conditional for header include guard check\n\t\t\t\t\tif (!processedFirstConditional)\n\t\t\t\t\t{\n\t\t\t\t\t\tprocessedFirstConditional = true;\n\t\t\t\t\t\tisFirstPreprocConditional = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"endif\")\n\t\t\t\t{\n\t\t\t\t\tif (numBlockIndents > 0)\n\t\t\t\t\t\tnumBlockIndents -= 1;\n\t\t\t\t\t// must exit BOTH loops\n\t\t\t\t\tif (numBlockIndents == 0)\n\t\t\t\t\t\tgoto EndOfWhileLoop;\n\t\t\t\t}\n\t\t\t\telse if (preproc == \"define\" && nextLine_[nextLine_.length() - 1] == '\\\\')\n\t\t\t\t{\n\t\t\t\t\tblockContainsDefineContinuation = true;\n\t\t\t\t}\n\t\t\t\ti = nextLine_.length();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\t// handle exceptions\n\t\t\tif (nextLine_[i] == '{' || nextLine_[i] == '}')\n\t\t\t\tblockContainsBrackets = true;\n\t\t\telse if (nextLine_[i] == '(')\n\t\t\t\t++lineParenCount;\n\t\t\telse if (nextLine_[i] == ')')\n\t\t\t\t--lineParenCount;\n\t\t\telse if (nextLine_[i] == ':')\n\t\t\t{\n\t\t\t\t// check for '::'\n\t\t\t\tif (nextLine_.length() > i && nextLine_[i + 1] == ':')\n\t\t\t\t\t++i;\n\t\t\t\telse\n\t\t\t\t\tisInClassConstructor = true;\n\t\t\t}\n\t\t\t// bypass unnecessary parsing - must exit BOTH loops\n\t\t\tif (blockContainsBrackets || isInClassConstructor || blockContainsDefineContinuation)\n\t\t\t\tgoto EndOfWhileLoop;\n\t\t}\t// end of for loop, end of line\n\t\tif (lineParenCount != 0)\n\t\t\tbreak;\n\t}\t// end of while loop\nEndOfWhileLoop:\n\tpreprocBlockEnd = sourceIterator->tellg();\n\tif (preprocBlockEnd < 0)\n\t\tpreprocBlockEnd = sourceIterator->getStreamLength();\n\tif (blockContainsBrackets\n\t        || isInClassConstructor\n\t        || blockContainsDefineContinuation\n\t        || lineParenCount != 0\n\t        || numBlockIndents != 0)\n\t\tisInIndentableBlock = false;\n\t// find next executable instruction\n\t// this WILL RESET the get pointer\n\tstring nextText = peekNextText(\"\", false, needReset);\n\t// bypass header include guards, with an exception for small test files\n\tif (isFirstPreprocConditional)\n\t{\n\t\tisFirstPreprocConditional = false;\n\t\tif (nextText.empty() && sourceIterator->getStreamLength() > 250)\n\t\t{\n\t\t\tisInIndentableBlock = false;\n\t\t\tpreprocBlockEnd = 0;\n\t\t}\n\t}\n\t// this allows preprocessor blocks within this block to be indented\n\tif (!isInIndentableBlock)\n\t\tpreprocBlockEnd = 0;\n\t// peekReset() is done by previous peekNextText()\n\treturn isInIndentableBlock;\n}\n\n/**\n * Check to see if this is an EXEC SQL statement.\n *\n * @param line          a reference to the line to indent.\n * @param index         the current line index.\n * @return              true if the statement is EXEC SQL.\n */\nbool ASFormatter::isExecSQL(string  &line, size_t index) const\n{\n\tif (line[index] != 'e' && line[index] != 'E')\t// quick check to reject most\n\t\treturn false;\n\tstring word;\n\tif (isCharPotentialHeader(line, index))\n\t\tword = getCurrentWord(line, index);\n\tfor (size_t i = 0; i < word.length(); i++)\n\t\tword[i] = (char) toupper(word[i]);\n\tif (word != \"EXEC\")\n\t\treturn false;\n\tsize_t index2 = index + word.length();\n\tindex2 = line.find_first_not_of(\" \\t\", index2);\n\tif (index2 == string::npos)\n\t\treturn false;\n\tword.erase();\n\tif (isCharPotentialHeader(line, index2))\n\t\tword = getCurrentWord(line, index2);\n\tfor (size_t i = 0; i < word.length(); i++)\n\t\tword[i] = (char) toupper(word[i]);\n\tif (word != \"SQL\")\n\t\treturn false;\n\treturn true;\n}\n\n/**\n * The continuation lines must be adjusted so the leading spaces\n *     is equivalent to the text on the opening line.\n *\n * Updates currentLine and charNum.\n */\nvoid ASFormatter::trimContinuationLine()\n{\n\tsize_t len = currentLine.length();\n\tsize_t tabSize = getTabLength();\n\tcharNum = 0;\n\n\tif (leadingSpaces > 0 && len > 0)\n\t{\n\t\tsize_t i;\n\t\tsize_t continuationIncrementIn = 0;\n\t\tfor (i = 0; (i < len) && (i + continuationIncrementIn < leadingSpaces); i++)\n\t\t{\n\t\t\tif (!isWhiteSpace(currentLine[i]))\t\t// don't delete any text\n\t\t\t{\n\t\t\t\tif (i < continuationIncrementIn)\n\t\t\t\t\tleadingSpaces = i + tabIncrementIn;\n\t\t\t\tcontinuationIncrementIn = tabIncrementIn;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (currentLine[i] == '\\t')\n\t\t\t\tcontinuationIncrementIn += tabSize - 1 - ((continuationIncrementIn + i) % tabSize);\n\t\t}\n\n\t\tif ((int) continuationIncrementIn == tabIncrementIn)\n\t\t\tcharNum = i;\n\t\telse\n\t\t{\n\t\t\t// build a new line with the equivalent leading chars\n\t\t\tstring newLine;\n\t\t\tint leadingChars = 0;\n\t\t\tif ((int) leadingSpaces > tabIncrementIn)\n\t\t\t\tleadingChars = leadingSpaces - tabIncrementIn;\n\t\t\tnewLine.append(leadingChars, ' ');\n\t\t\tnewLine.append(currentLine, i, len - i);\n\t\t\tcurrentLine = newLine;\n\t\t\tcharNum = leadingChars;\n\t\t\tif (currentLine.length() == 0)\n\t\t\t\tcurrentLine = string(\" \");        // a null is inserted if this is not done\n\t\t}\n\t\tif (i >= len)\n\t\t\tcharNum = 0;\n\t}\n\treturn;\n}\n\n/**\n * Determine if a header is a closing header\n *\n * @return      true if the header is a closing header.\n */\nbool ASFormatter::isClosingHeader(const string* header) const\n{\n\treturn (header == &AS_ELSE\n\t        || header == &AS_CATCH\n\t        || header == &AS_FINALLY);\n}\n\n/**\n * Determine if a * following a closing paren is immediately.\n * after a cast. If so it is a deference and not a multiply.\n * e.g. \"(int*) *ptr\" is a deference.\n */\nbool ASFormatter::isImmediatelyPostCast() const\n{\n\tassert(previousNonWSChar == ')' && currentChar == '*');\n\t// find preceding closing paren on currentLine or readyFormattedLine\n\tstring line;\t\t// currentLine or readyFormattedLine\n\tsize_t paren = currentLine.rfind(\")\", charNum);\n\tif (paren != string::npos)\n\t\tline = currentLine;\n\t// if not on currentLine it must be on the previous line\n\telse\n\t{\n\t\tline = readyFormattedLine;\n\t\tparen = line.rfind(\")\");\n\t\tif (paren == string::npos)\n\t\t\treturn false;\n\t}\n\tif (paren == 0)\n\t\treturn false;\n\n\t// find character preceding the closing paren\n\tsize_t lastChar = line.find_last_not_of(\" \\t\", paren - 1);\n\tif (lastChar == string::npos)\n\t\treturn false;\n\t// check for pointer cast\n\tif (line[lastChar] == '*')\n\t\treturn true;\n\treturn false;\n}\n\n/**\n * Determine if a < is a template definition or instantiation.\n * Sets the class variables isInTemplate and templateDepth.\n */\nvoid ASFormatter::checkIfTemplateOpener()\n{\n\tassert(!isInTemplate && currentChar == '<');\n\n\t// find first char after the '<' operators\n\tsize_t firstChar = currentLine.find_first_not_of(\"< \\t\", charNum);\n\tif (firstChar == string::npos\n\t        || currentLine[firstChar] == '=')\n\t{\n\t\t// this is not a template -> leave...\n\t\tisInTemplate = false;\n\t\treturn;\n\t}\n\n\tbool isFirstLine = true;\n\tbool needReset = false;\n\tint parenDepth_ = 0;\n\tint maxTemplateDepth = 0;\n\ttemplateDepth = 0;\n\tstring nextLine_ = currentLine.substr(charNum);\n\n\t// find the angle brackets, bypassing all comments and quotes.\n\tbool isInComment_ = false;\n\tbool isInQuote_ = false;\n\tchar quoteChar_ = ' ';\n\twhile (sourceIterator->hasMoreLines() || isFirstLine)\n\t{\n\t\tif (isFirstLine)\n\t\t\tisFirstLine = false;\n\t\telse\n\t\t{\n\t\t\tnextLine_ = sourceIterator->peekNextLine();\n\t\t\tneedReset = true;\n\t\t}\n\t\t// parse the line\n\t\tfor (size_t i = 0; i < nextLine_.length(); i++)\n\t\t{\n\t\t\tchar currentChar_ = nextLine_[i];\n\t\t\tif (isWhiteSpace(currentChar_))\n\t\t\t\tcontinue;\n\t\t\tif (nextLine_.compare(i, 2, \"/*\") == 0)\n\t\t\t\tisInComment_ = true;\n\t\t\tif (isInComment_)\n\t\t\t{\n\t\t\t\tif (nextLine_.compare(i, 2, \"*/\") == 0)\n\t\t\t\t{\n\t\t\t\t\tisInComment_ = false;\n\t\t\t\t\t++i;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (currentChar_ == '\\\\')\n\t\t\t{\n\t\t\t\t++i;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (isInQuote_)\n\t\t\t{\n\t\t\t\tif (currentChar_ == quoteChar_)\n\t\t\t\t\tisInQuote_ = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (currentChar_ == '\"' || currentChar_ == '\\'')\n\t\t\t{\n\t\t\t\tisInQuote_ = true;\n\t\t\t\tquoteChar_ = currentChar_;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (nextLine_.compare(i, 2, \"//\") == 0)\n\t\t\t{\n\t\t\t\ti = nextLine_.length();\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// not in a comment or quote\n\t\t\tif (currentChar_ == '<')\n\t\t\t{\n\t\t\t\t++templateDepth;\n\t\t\t\t++maxTemplateDepth;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (currentChar_ == '>')\n\t\t\t{\n\t\t\t\t--templateDepth;\n\t\t\t\tif (templateDepth == 0)\n\t\t\t\t{\n\t\t\t\t\tif (parenDepth_ == 0)\n\t\t\t\t\t{\n\t\t\t\t\t\t// this is a template!\n\t\t\t\t\t\tisInTemplate = true;\n\t\t\t\t\t\ttemplateDepth = maxTemplateDepth;\n\t\t\t\t\t}\n\t\t\t\t\tgoto exitFromSearch;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (currentChar_ == '(' || currentChar_ == ')')\n\t\t\t{\n\t\t\t\tif (currentChar_ == '(')\n\t\t\t\t\t++parenDepth_;\n\t\t\t\telse\n\t\t\t\t\t--parenDepth_;\n\t\t\t\tif (parenDepth_ >= 0)\n\t\t\t\t\tcontinue;\n\t\t\t\t// this is not a template -> leave...\n\t\t\t\tisInTemplate = false;\n\t\t\t\tgoto exitFromSearch;\n\t\t\t}\n\t\t\telse if (nextLine_.compare(i, 2, AS_AND) == 0\n\t\t\t         || nextLine_.compare(i, 2, AS_OR) == 0)\n\t\t\t{\n\t\t\t\t// this is not a template -> leave...\n\t\t\t\tisInTemplate = false;\n\t\t\t\tgoto exitFromSearch;\n\t\t\t}\n\t\t\telse if (currentChar_ == ','  // comma,     e.g. A<int, char>\n\t\t\t         || currentChar_ == '&'    // reference, e.g. A<int&>\n\t\t\t         || currentChar_ == '*'    // pointer,   e.g. A<int*>\n\t\t\t         || currentChar_ == '^'    // C++/CLI managed pointer, e.g. A<int^>\n\t\t\t         || currentChar_ == ':'    // ::,        e.g. std::string\n\t\t\t         || currentChar_ == '='    // assign     e.g. default parameter\n\t\t\t         || currentChar_ == '['    // []         e.g. string[]\n\t\t\t         || currentChar_ == ']'    // []         e.g. string[]\n\t\t\t         || currentChar_ == '('    // (...)      e.g. function definition\n\t\t\t         || currentChar_ == ')'    // (...)      e.g. function definition\n\t\t\t         || (isJavaStyle() && currentChar_ == '?')   // Java wildcard\n\t\t\t        )\n\t\t\t{\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (!isLegalNameChar(currentChar_))\n\t\t\t{\n\t\t\t\t// this is not a template -> leave...\n\t\t\t\tisInTemplate = false;\n\t\t\t\ttemplateDepth = 0;\n\t\t\t\tgoto exitFromSearch;\n\t\t\t}\n\t\t\tstring name = getCurrentWord(nextLine_, i);\n\t\t\ti += name.length() - 1;\n\t\t}\t// end of for loop\n\t}\t// end of while loop\n\n\t// goto needed to exit from two loops\nexitFromSearch:\n\tif (needReset)\n\t\tsourceIterator->peekReset();\n}\n\nvoid ASFormatter::updateFormattedLineSplitPoints(char appendedChar)\n{\n\tassert(maxCodeLength != string::npos);\n\tassert(formattedLine.length() > 0);\n\n\tif (!isOkToSplitFormattedLine())\n\t\treturn;\n\n\tchar nextChar = peekNextChar();\n\n\t// don't split before an end of line comment\n\tif (nextChar == '/')\n\t\treturn;\n\n\t// don't split before or after a bracket\n\tif (appendedChar == '{' || appendedChar == '}'\n\t        || previousNonWSChar == '{' || previousNonWSChar == '}'\n\t        || nextChar == '{' || nextChar == '}'\n\t        || currentChar == '{' || currentChar == '}')\t// currentChar tests for an appended bracket\n\t\treturn;\n\n\t// don't split before or after a block paren\n\tif (appendedChar == '[' || appendedChar == ']'\n\t        || previousNonWSChar == '['\n\t        || nextChar == '[' || nextChar == ']')\n\t\treturn;\n\n\tif (isWhiteSpace(appendedChar))\n\t{\n\t\tif (nextChar != ')'\t\t\t\t\t\t// space before a closing paren\n\t\t        && nextChar != '('\t\t\t\t// space before an opening paren\n\t\t        && nextChar != '/'\t\t\t\t// space before a comment\n\t\t        && nextChar != ':'\t\t\t\t// space before a colon\n\t\t        && currentChar != ')'\t\t\t// appended space before and after a closing paren\n\t\t        && currentChar != '('\t\t\t// appended space before and after a opening paren\n\t\t        && previousNonWSChar != '('\t\t// decided at the '('\n\t\t        // don't break before a pointer or reference aligned to type\n\t\t        && !(nextChar == '*'\n\t\t             && !isCharPotentialOperator(previousNonWSChar)\n\t\t             && pointerAlignment == PTR_ALIGN_TYPE)\n\t\t        && !(nextChar == '&'\n\t\t             && !isCharPotentialOperator(previousNonWSChar)\n\t\t             && (referenceAlignment == REF_ALIGN_TYPE\n\t\t                 || (referenceAlignment == REF_SAME_AS_PTR && pointerAlignment == PTR_ALIGN_TYPE)))\n\t\t   )\n\t\t{\n\t\t\tif (formattedLine.length() - 1 <= maxCodeLength)\n\t\t\t\tmaxWhiteSpace = formattedLine.length() - 1;\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = formattedLine.length() - 1;\n\t\t}\n\t}\n\t// unpadded closing parens may split after the paren (counts as whitespace)\n\telse if (appendedChar == ')')\n\t{\n\t\tif (nextChar != ')'\n\t\t        && nextChar != ' '\n\t\t        && nextChar != ';'\n\t\t        && nextChar != ','\n\t\t        && nextChar != '.'\n\t\t        && !(nextChar == '-' && pointerSymbolFollows()))\t// check for ->\n\t\t{\n\t\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\t\tmaxWhiteSpace = formattedLine.length();\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = formattedLine.length();\n\t\t}\n\t}\n\t// unpadded commas may split after the comma\n\telse if (appendedChar == ',')\n\t{\n\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\tmaxComma = formattedLine.length();\n\t\telse\n\t\t\tmaxCommaPending = formattedLine.length();\n\t}\n\telse if (appendedChar == '(')\n\t{\n\t\tif (nextChar != ')' && nextChar != '(' && nextChar != '\"' && nextChar != '\\'')\n\t\t{\n\t\t\t// if follows an operator break before\n\t\t\tsize_t parenNum;\n\t\t\tif (isCharPotentialOperator(previousNonWSChar))\n\t\t\t\tparenNum = formattedLine.length() - 1 ;\n\t\t\telse\n\t\t\t\tparenNum = formattedLine.length();\n\t\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\t\tmaxParen = parenNum;\n\t\t\telse\n\t\t\t\tmaxParenPending = parenNum;\n\t\t}\n\t}\n\telse if (appendedChar == ';')\n\t{\n\t\tif (nextChar != ' '  && nextChar != '}' && nextChar != '/')\t// check for following comment\n\t\t{\n\t\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\t\tmaxSemi = formattedLine.length();\n\t\t\telse\n\t\t\t\tmaxSemiPending = formattedLine.length();\n\t\t}\n\t}\n}\n\nvoid ASFormatter::updateFormattedLineSplitPointsOperator(const string &sequence)\n{\n\tassert(maxCodeLength != string::npos);\n\tassert(formattedLine.length() > 0);\n\n\tif (!isOkToSplitFormattedLine())\n\t\treturn;\n\n\tchar nextChar = peekNextChar();\n\n\t// don't split before an end of line comment\n\tif (nextChar == '/')\n\t\treturn;\n\n\t// check for logical conditional\n\tif (sequence == \"||\" || sequence ==  \"&&\" || sequence ==  \"or\" || sequence ==  \"and\")\n\t{\n\t\tif (shouldBreakLineAfterLogical)\n\t\t{\n\t\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\t\tmaxAndOr = formattedLine.length();\n\t\t\telse\n\t\t\t\tmaxAndOrPending = formattedLine.length();\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// adjust for leading space in the sequence\n\t\t\tsize_t sequenceLength = sequence.length();\n\t\t\tif (formattedLine.length() > sequenceLength\n\t\t\t        && isWhiteSpace(formattedLine[formattedLine.length() - sequenceLength - 1]))\n\t\t\t\tsequenceLength++;\n\t\t\tif (formattedLine.length() - sequenceLength <= maxCodeLength)\n\t\t\t\tmaxAndOr = formattedLine.length() - sequenceLength;\n\t\t\telse\n\t\t\t\tmaxAndOrPending = formattedLine.length() - sequenceLength;\n\t\t}\n\t}\n\t// comparison operators will split after the operator (counts as whitespace)\n\telse if (sequence == \"==\" || sequence ==  \"!=\" || sequence ==  \">=\" || sequence ==  \"<=\")\n\t{\n\t\tif (formattedLine.length() <= maxCodeLength)\n\t\t\tmaxWhiteSpace = formattedLine.length();\n\t\telse\n\t\t\tmaxWhiteSpacePending = formattedLine.length();\n\t}\n\t// unpadded operators that will split BEFORE the operator (counts as whitespace)\n\telse if (sequence == \"+\" || sequence == \"-\" || sequence == \"?\")\n\t{\n\t\tif (charNum > 0\n\t\t        && (isLegalNameChar(currentLine[charNum - 1])\n\t\t            || currentLine[charNum - 1] == ')'\n\t\t            || currentLine[charNum - 1] == ']'\n\t\t            || currentLine[charNum - 1] == '\\\"'))\n\t\t{\n\t\t\tif (formattedLine.length() - 1 <=  maxCodeLength)\n\t\t\t\tmaxWhiteSpace = formattedLine.length() - 1;\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = formattedLine.length() - 1;\n\t\t}\n\t}\n\t// unpadded operators that will USUALLY split AFTER the operator (counts as whitespace)\n\telse if (sequence == \"=\" || sequence == \":\")\n\t{\n\t\t// split BEFORE if the line is too long\n\t\t// do NOT use <= here, must allow for a bracket attached to an array\n\t\tsize_t splitPoint = 0;\n\t\tif (formattedLine.length() <  maxCodeLength)\n\t\t\tsplitPoint = formattedLine.length();\n\t\telse\n\t\t\tsplitPoint = formattedLine.length() - 1;\n\t\t// padded or unpadded arrays\n\t\tif (previousNonWSChar == ']')\n\t\t{\n\t\t\tif (formattedLine.length() - 1 <=  maxCodeLength)\n\t\t\t\tmaxWhiteSpace = splitPoint;\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = splitPoint;\n\t\t}\n\t\telse if (charNum > 0\n\t\t         && (isLegalNameChar(currentLine[charNum - 1])\n\t\t             || currentLine[charNum - 1] == ')'\n\t\t             || currentLine[charNum - 1] == ']'))\n\t\t{\n\t\t\tif (formattedLine.length() <=  maxCodeLength)\n\t\t\t\tmaxWhiteSpace = splitPoint;\n\t\t\telse\n\t\t\t\tmaxWhiteSpacePending = splitPoint;\n\t\t}\n\t}\n}\n\n/**\n * Update the split point when a pointer or reference is formatted.\n * The argument is the maximum index of the last whitespace character.\n */\nvoid ASFormatter::updateFormattedLineSplitPointsPointerOrReference(size_t index)\n{\n\tassert(maxCodeLength != string::npos);\n\tassert(formattedLine.length() > 0);\n\tassert(index < formattedLine.length());\n\n\tif (!isOkToSplitFormattedLine())\n\t\treturn;\n\n\tif (index < maxWhiteSpace)\t\t// just in case\n\t\treturn;\n\n\tif (index <= maxCodeLength)\n\t\tmaxWhiteSpace = index;\n\telse\n\t\tmaxWhiteSpacePending = index;\n}\n\nbool ASFormatter::isOkToSplitFormattedLine()\n{\n\tassert(maxCodeLength != string::npos);\n\t// Is it OK to split the line?\n\tif (shouldKeepLineUnbroken\n\t        || isInLineComment\n\t        || isInComment\n\t        || isInQuote\n\t        || isInCase\n\t        || isInPreprocessor\n\t        || isInExecSQL\n\t        || isInAsm || isInAsmOneLine || isInAsmBlock\n\t        || isInTemplate)\n\t\treturn false;\n\n\tif (!isOkToBreakBlock(bracketTypeStack->back()) && currentChar != '{')\n\t{\n\t\tshouldKeepLineUnbroken = true;\n\t\tclearFormattedLineSplitPoints();\n\t\treturn false;\n\t}\n\telse if (isBracketType(bracketTypeStack->back(), ARRAY_TYPE))\n\t{\n\t\tshouldKeepLineUnbroken = true;\n\t\tif (!isBracketType(bracketTypeStack->back(), ARRAY_NIS_TYPE))\n\t\t\tclearFormattedLineSplitPoints();\n\t\treturn false;\n\t}\n\treturn true;\n}\n\n/* This is called if the option maxCodeLength is set.\n */\nvoid ASFormatter::testForTimeToSplitFormattedLine()\n{\n\t//\tDO NOT ASSERT maxCodeLength HERE\n\t// should the line be split\n\tif (formattedLine.length() > maxCodeLength && !isLineReady)\n\t{\n\t\tsize_t splitPoint = findFormattedLineSplitPoint();\n\t\tif (splitPoint > 0 && splitPoint < formattedLine.length())\n\t\t{\n\t\t\tstring splitLine = formattedLine.substr(splitPoint);\n\t\t\tformattedLine = formattedLine.substr(0, splitPoint);\n\t\t\tbreakLine(true);\n\t\t\tformattedLine = splitLine;\n\t\t\t// if break-blocks is requested and this is a one-line statement\n\t\t\tstring nextWord = ASBeautifier::getNextWord(currentLine, charNum - 1);\n\t\t\tif (isAppendPostBlockEmptyLineRequested\n\t\t\t        && (nextWord == \"break\" || nextWord == \"continue\"))\n\t\t\t{\n\t\t\t\tisAppendPostBlockEmptyLineRequested = false;\n\t\t\t\tisPrependPostBlockEmptyLineRequested = true;\n\t\t\t}\n\t\t\telse\n\t\t\t\tisPrependPostBlockEmptyLineRequested = false;\n\t\t\t// adjust max split points\n\t\t\tmaxAndOr = (maxAndOr > splitPoint) ? (maxAndOr - splitPoint) : 0;\n\t\t\tmaxSemi = (maxSemi > splitPoint) ? (maxSemi - splitPoint) : 0;\n\t\t\tmaxComma = (maxComma > splitPoint) ? (maxComma - splitPoint) : 0;\n\t\t\tmaxParen = (maxParen > splitPoint) ? (maxParen - splitPoint) : 0;\n\t\t\tmaxWhiteSpace = (maxWhiteSpace > splitPoint) ? (maxWhiteSpace - splitPoint) : 0;\n\t\t\tif (maxSemiPending > 0)\n\t\t\t{\n\t\t\t\tmaxSemi = (maxSemiPending > splitPoint) ? (maxSemiPending - splitPoint) : 0;\n\t\t\t\tmaxSemiPending = 0;\n\t\t\t}\n\t\t\tif (maxAndOrPending > 0)\n\t\t\t{\n\t\t\t\tmaxAndOr = (maxAndOrPending > splitPoint) ? (maxAndOrPending - splitPoint) : 0;\n\t\t\t\tmaxAndOrPending = 0;\n\t\t\t}\n\t\t\tif (maxCommaPending > 0)\n\t\t\t{\n\t\t\t\tmaxComma = (maxCommaPending > splitPoint) ? (maxCommaPending - splitPoint) : 0;\n\t\t\t\tmaxCommaPending = 0;\n\t\t\t}\n\t\t\tif (maxParenPending > 0)\n\t\t\t{\n\t\t\t\tmaxParen = (maxParenPending > splitPoint) ? (maxParenPending - splitPoint) : 0;\n\t\t\t\tmaxParenPending = 0;\n\t\t\t}\n\t\t\tif (maxWhiteSpacePending > 0)\n\t\t\t{\n\t\t\t\tmaxWhiteSpace = (maxWhiteSpacePending > splitPoint) ? (maxWhiteSpacePending - splitPoint) : 0;\n\t\t\t\tmaxWhiteSpacePending = 0;\n\t\t\t}\n\t\t\t// don't allow an empty formatted line\n\t\t\tsize_t firstText = formattedLine.find_first_not_of(\" \\t\");\n\t\t\tif (firstText == string::npos && formattedLine.length() > 0)\n\t\t\t{\n\t\t\t\tformattedLine.erase();\n\t\t\t\tclearFormattedLineSplitPoints();\n\t\t\t\tif (isWhiteSpace(currentChar))\n\t\t\t\t\tfor (size_t i = charNum + 1; i < currentLine.length() && isWhiteSpace(currentLine[i]); i++)\n\t\t\t\t\t\tgoForward(1);\n\t\t\t}\n\t\t\telse if (firstText > 0)\n\t\t\t{\n\t\t\t\tformattedLine.erase(0, firstText);\n\t\t\t\tmaxSemi = (maxSemi > firstText) ? (maxSemi - firstText) : 0;\n\t\t\t\tmaxAndOr = (maxAndOr > firstText) ? (maxAndOr - firstText) : 0;\n\t\t\t\tmaxComma = (maxComma > firstText) ? (maxComma - firstText) : 0;\n\t\t\t\tmaxParen = (maxParen > firstText) ? (maxParen - firstText) : 0;\n\t\t\t\tmaxWhiteSpace = (maxWhiteSpace > firstText) ? (maxWhiteSpace - firstText) : 0;\n\t\t\t}\n\t\t\t// reset formattedLineCommentNum\n\t\t\tif (formattedLineCommentNum != string::npos)\n\t\t\t{\n\t\t\t\tformattedLineCommentNum = formattedLine.find(\"//\");\n\t\t\t\tif (formattedLineCommentNum == string::npos)\n\t\t\t\t\tformattedLineCommentNum = formattedLine.find(\"/*\");\n\t\t\t}\n\t\t}\n\t}\n}\n\nsize_t ASFormatter::findFormattedLineSplitPoint() const\n{\n\tassert(maxCodeLength != string::npos);\n\t// determine where to split\n\tsize_t minCodeLength = 10;\n\tsize_t splitPoint = 0;\n\tsplitPoint = maxSemi;\n\tif (maxAndOr >= minCodeLength)\n\t\tsplitPoint = maxAndOr;\n\tif (splitPoint < minCodeLength)\n\t{\n\t\tsplitPoint = maxWhiteSpace;\n\t\t// use maxParen instead if it is long enough\n\t\tif (maxParen > splitPoint\n\t\t        || maxParen >= maxCodeLength * .7)\n\t\t\tsplitPoint = maxParen;\n\t\t// use maxComma instead if it is long enough\n\t\t// increasing the multiplier causes more splits at whitespace\n\t\tif (maxComma > splitPoint\n\t\t        || maxComma >= maxCodeLength * .3)\n\t\t\tsplitPoint = maxComma;\n\t}\n\t// replace split point with first available break point\n\tif (splitPoint < minCodeLength)\n\t{\n\t\tsplitPoint = string::npos;\n\t\tif (maxSemiPending > 0 && maxSemiPending < splitPoint)\n\t\t\tsplitPoint = maxSemiPending;\n\t\tif (maxAndOrPending > 0 && maxAndOrPending < splitPoint)\n\t\t\tsplitPoint = maxAndOrPending;\n\t\tif (maxCommaPending > 0 && maxCommaPending < splitPoint)\n\t\t\tsplitPoint = maxCommaPending;\n\t\tif (maxParenPending > 0 && maxParenPending < splitPoint)\n\t\t\tsplitPoint = maxParenPending;\n\t\tif (maxWhiteSpacePending > 0 && maxWhiteSpacePending < splitPoint)\n\t\t\tsplitPoint = maxWhiteSpacePending;\n\t\tif (splitPoint == string::npos)\n\t\t\tsplitPoint = 0;\n\t}\n\t// if remaining line after split is too long\n\telse if (formattedLine.length() - splitPoint > maxCodeLength)\n\t{\n\t\t// if end of the currentLine, find a new split point\n\t\tsize_t newCharNum;\n\t\tif (isCharPotentialHeader(currentLine, charNum))\n\t\t\tnewCharNum = getCurrentWord(currentLine, charNum).length() + charNum;\n\t\telse\n\t\t\tnewCharNum = charNum + 2;\n\t\tif (newCharNum + 1 > currentLine.length())\n\t\t{\n\t\t\t// don't move splitPoint from before a conditional to after\n\t\t\tif (maxWhiteSpace > splitPoint + 3)\n\t\t\t\tsplitPoint = maxWhiteSpace;\n\t\t\tif (maxParen > splitPoint)\n\t\t\t\tsplitPoint = maxParen;\n\t\t}\n\t}\n\n\treturn splitPoint;\n}\n\nvoid ASFormatter::clearFormattedLineSplitPoints()\n{\n\tmaxSemi = 0;\n\tmaxAndOr = 0;\n\tmaxComma = 0;\n\tmaxParen = 0;\n\tmaxWhiteSpace = 0;\n\tmaxSemiPending = 0;\n\tmaxAndOrPending = 0;\n\tmaxCommaPending = 0;\n\tmaxParenPending = 0;\n\tmaxWhiteSpacePending = 0;\n}\n\n/**\n * Check if a pointer symbol (->) follows on the currentLine.\n */\nbool ASFormatter::pointerSymbolFollows() const\n{\n\tsize_t peekNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\tif (peekNum == string::npos || currentLine.compare(peekNum, 2, \"->\") != 0)\n\t\treturn false;\n\treturn true;\n}\n\n/**\n * Compute the input checksum.\n * This is called as an assert so it for is debug config only\n */\nbool ASFormatter::computeChecksumIn(const string &currentLine_)\n{\n\tfor (size_t i = 0; i < currentLine_.length(); i++)\n\t\tif (!isWhiteSpace(currentLine_[i]))\n\t\t\tchecksumIn += currentLine_[i];\n\treturn true;\n}\n\n/**\n * Adjust the input checksum for deleted chars.\n * This is called as an assert so it for is debug config only\n */\nbool ASFormatter::adjustChecksumIn(int adjustment)\n{\n\tchecksumIn += adjustment;\n\treturn true;\n}\n\n/**\n * get the value of checksumIn for unit testing\n *\n * @return   checksumIn.\n */\nsize_t ASFormatter::getChecksumIn() const\n{\n\treturn checksumIn;\n}\n\n/**\n * Compute the output checksum.\n * This is called as an assert so it is for debug config only\n */\nbool ASFormatter::computeChecksumOut(const string &beautifiedLine)\n{\n\tfor (size_t i = 0; i < beautifiedLine.length(); i++)\n\t\tif (!isWhiteSpace(beautifiedLine[i]))\n\t\t\tchecksumOut += beautifiedLine[i];\n\treturn true;\n}\n\n/**\n * Return isLineReady for the final check at end of file.\n */\nbool ASFormatter::getIsLineReady() const\n{\n\treturn isLineReady;\n}\n\n/**\n * get the value of checksumOut for unit testing\n *\n * @return   checksumOut.\n */\nsize_t ASFormatter::getChecksumOut() const\n{\n\treturn checksumOut;\n}\n\n/**\n * Return the difference in checksums.\n * If zero all is okay.\n */\nint ASFormatter::getChecksumDiff() const\n{\n\treturn checksumOut - checksumIn;\n}\n\n// for unit testing\nint ASFormatter::getFormatterFileType() const\n{\n\treturn formatterFileType;\n}\n\n// Check if an operator follows the next word.\n// The next word must be a legal name.\nconst string* ASFormatter::getFollowingOperator() const\n{\n\t// find next word\n\tsize_t nextNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\tif (nextNum == string::npos)\n\t\treturn NULL;\n\n\tif (!isLegalNameChar(currentLine[nextNum]))\n\t\treturn NULL;\n\n\t// bypass next word and following spaces\n\twhile (nextNum < currentLine.length())\n\t{\n\t\tif (!isLegalNameChar(currentLine[nextNum])\n\t\t        && !isWhiteSpace(currentLine[nextNum]))\n\t\t\tbreak;\n\t\tnextNum++;\n\t}\n\n\tif (nextNum >= currentLine.length()\n\t        || !isCharPotentialOperator(currentLine[nextNum])\n\t        || currentLine[nextNum] == '/')\t\t// comment\n\t\treturn NULL;\n\n\tconst string* newOperator = ASBeautifier::findOperator(currentLine, nextNum, operators);\n\treturn newOperator;\n}\n\n// Check following data to determine if the current character is an array operator.\nbool ASFormatter::isArrayOperator() const\n{\n\tassert(currentChar == '*' || currentChar == '&' || currentChar == '^');\n\tassert(isBracketType(bracketTypeStack->back(), ARRAY_TYPE));\n\n\t// find next word\n\tsize_t nextNum = currentLine.find_first_not_of(\" \\t\", charNum + 1);\n\tif (nextNum == string::npos)\n\t\treturn false;\n\n\tif (!isLegalNameChar(currentLine[nextNum]))\n\t\treturn false;\n\n\t// bypass next word and following spaces\n\twhile (nextNum < currentLine.length())\n\t{\n\t\tif (!isLegalNameChar(currentLine[nextNum])\n\t\t        && !isWhiteSpace(currentLine[nextNum]))\n\t\t\tbreak;\n\t\tnextNum++;\n\t}\n\n\t// check for characters that indicate an operator\n\tif (currentLine[nextNum] == ','\n\t        || currentLine[nextNum] == '}'\n\t        || currentLine[nextNum] == ')'\n\t        || currentLine[nextNum] == '(')\n\t\treturn true;\n\treturn false;\n}\n\n// Reset the flags that indicate various statement information.\nvoid ASFormatter::resetEndOfStatement()\n{\n\tfoundQuestionMark = false;\n\tfoundNamespaceHeader = false;\n\tfoundClassHeader = false;\n\tfoundStructHeader = false;\n\tfoundInterfaceHeader = false;\n\tfoundPreDefinitionHeader = false;\n\tfoundPreCommandHeader = false;\n\tfoundPreCommandMacro = false;\n\tfoundCastOperator = false;\n\tisInPotentialCalculation = false;\n\tisSharpAccessor = false;\n\tisSharpDelegate = false;\n\tisInObjCMethodDefinition = false;\n\tisInObjCInterface = false;\n\tisInObjCSelector = false;\n\tisInEnum = false;\n\tisInExternC = false;\n\telseHeaderFollowsComments = false;\n\tnonInStatementBracket = 0;\n\twhile (!questionMarkStack->empty())\n\t\tquestionMarkStack->pop_back();\n}\n\n// pad an Objective-C method colon\nvoid ASFormatter::padObjCMethodColon()\n{\n\tassert(currentChar == ':');\n\tchar nextChar = peekNextChar();\n\tif (objCColonPadMode == COLON_PAD_NONE\n\t        || objCColonPadMode == COLON_PAD_AFTER\n\t        || nextChar == ')')\n\t{\n\t\t// remove spaces before\n\t\tfor (int i = formattedLine.length() - 1; (i > -1) && isWhiteSpace(formattedLine[i]); i--)\n\t\t\tformattedLine.erase(i);\n\t}\n\telse\n\t{\n\t\t// pad space before\n\t\tfor (int i = formattedLine.length() - 1; (i > 0) && isWhiteSpace(formattedLine[i]); i--)\n\t\t\tif (isWhiteSpace(formattedLine[i - 1]))\n\t\t\t\tformattedLine.erase(i);\n\t\tappendSpacePad();\n\t}\n\tif (objCColonPadMode == COLON_PAD_NONE\n\t        || objCColonPadMode == COLON_PAD_BEFORE\n\t        || nextChar == ')')\n\t{\n\t\t// remove spaces after\n\t\t// do not need to bump i since a char is erased\n\t\tsize_t i = charNum + 1;\n\t\twhile ((i < currentLine.length()) && isWhiteSpace(currentLine[i]))\n\t\t\tcurrentLine.erase(i, 1);\n\t}\n\telse\n\t{\n\t\t// pad space after\n\t\t// do not need to bump i since a char is erased\n\t\tsize_t i = charNum + 1;\n\t\twhile ((i + 1 < currentLine.length()) && isWhiteSpace(currentLine[i]))\n\t\t\tcurrentLine.erase(i, 1);\n\t\tif (((int) currentLine.length() > charNum + 1) && !isWhiteSpace(currentLine[charNum + 1]))\n\t\t\tcurrentLine.insert(charNum + 1, \" \");\n\t}\n}\n\n// Remove the leading '*' from a comment line and indent to the next tab.\nvoid ASFormatter::stripCommentPrefix()\n{\n\tint firstChar = formattedLine.find_first_not_of(\" \\t\");\n\tif (firstChar < 0)\n\t\treturn;\n\n\tif (isInCommentStartLine)\n\t{\n\t\t// comment opener must begin the line\n\t\tif (formattedLine.compare(firstChar, 2, \"/*\") != 0)\n\t\t\treturn;\n\t\tint commentOpener = firstChar;\n\t\t// ignore single line comments\n\t\tint commentEnd = formattedLine.find(\"*/\", firstChar + 2);\n\t\tif (commentEnd != -1)\n\t\t\treturn;\n\t\t// first char after the comment opener must be at least one indent\n\t\tint followingText = formattedLine.find_first_not_of(\" \\t\", commentOpener + 2);\n\t\tif (followingText < 0)\n\t\t\treturn;\n\t\tif (formattedLine[followingText] == '*' || formattedLine[followingText] == '!')\n\t\t\tfollowingText = formattedLine.find_first_not_of(\" \\t\", followingText + 1);\n\t\tif (followingText < 0)\n\t\t\treturn;\n\t\tif (formattedLine[followingText] == '*')\n\t\t\treturn;\n\t\tint indentLen = getIndentLength();\n\t\tint followingTextIndent = followingText - commentOpener;\n\t\tif (followingTextIndent < indentLen)\n\t\t{\n\t\t\tstring stringToInsert(indentLen - followingTextIndent, ' ');\n\t\t\tformattedLine.insert(followingText, stringToInsert);\n\t\t}\n\t\treturn;\n\t}\n\t// comment body including the closer\n\telse if (formattedLine[firstChar] == '*')\n\t{\n\t\tif (formattedLine.compare(firstChar, 2, \"*/\") == 0)\n\t\t{\n\t\t\t// line starts with an end comment\n\t\t\tformattedLine = \"*/\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// build a new line with one indent\n\t\t\tint secondChar = formattedLine.find_first_not_of(\" \\t\", firstChar + 1);\n\t\t\tif (secondChar < 0)\n\t\t\t{\n\t\t\t\tadjustChecksumIn(-'*');\n\t\t\t\tformattedLine.erase();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (formattedLine[secondChar] == '*')\n\t\t\t\treturn;\n\t\t\t// replace the leading '*'\n\t\t\tint indentLen = getIndentLength();\n\t\t\tadjustChecksumIn(-'*');\n\t\t\t// second char must be at least one indent\n\t\t\tif (formattedLine.substr(0, secondChar).find('\\t') != string::npos)\n\t\t\t{\n\t\t\t\tformattedLine.erase(firstChar, 1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tint spacesToInsert = 0;\n\t\t\t\tif (secondChar >= indentLen)\n\t\t\t\t\tspacesToInsert = secondChar;\n\t\t\t\telse\n\t\t\t\t\tspacesToInsert = indentLen;\n\t\t\t\tformattedLine = string(spacesToInsert, ' ') + formattedLine.substr(secondChar);\n\t\t\t}\n\t\t\t// remove a trailing '*'\n\t\t\tint lastChar = formattedLine.find_last_not_of(\" \\t\");\n\t\t\tif (lastChar > -1 && formattedLine[lastChar] == '*')\n\t\t\t{\n\t\t\t\tadjustChecksumIn(-'*');\n\t\t\t\tformattedLine[lastChar] = ' ';\n\t\t\t}\n\t\t}\n\t}\n\telse\n\t{\n\t\t// first char not a '*'\n\t\t// first char must be at least one indent\n\t\tif (formattedLine.substr(0, firstChar).find('\\t') == string::npos)\n\t\t{\n\t\t\tint indentLen = getIndentLength();\n\t\t\tif (firstChar < indentLen)\n\t\t\t{\n\t\t\t\tstring stringToInsert(indentLen, ' ');\n\t\t\t\tformattedLine = stringToInsert + formattedLine.substr(firstChar);\n\t\t\t}\n\t\t}\n\t}\n}\n\n}   // end namespace astyle\n"
  },
  {
    "path": "old/3rdpart/astyle/ASLocalizer.cpp",
    "content": "//\n//  FILE ENCODING IS UTF-8 WITHOUT A BOM.\n//  русский    中文（简体）    日本    한국의\n//\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASLocalizer.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *\n *   To add a new language:\n *\n *   Add a new translation class to ASLocalizer.h.\n *   Add the Add the English-Translation pair to the constructor in ASLocalizer.cpp.\n *   Update the WinLangCode array, if necessary.\n *   Add the language code to the function setTranslationClass().\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n//----------------------------------------------------------------------------\n// headers\n//----------------------------------------------------------------------------\n\n#include \"ASLocalizer.h\"\n\n#ifdef _WIN32\n\t#include <windows.h>\n#endif\n\n#ifdef __DMC__\n\t#include <locale.h>\n\t// digital mars doesn't have these\n\tconst size_t SUBLANG_CHINESE_MACAU = 5;\n\tconst size_t LANG_HINDI = 57;\n#endif\n\n#ifdef __VMS\n\t#define __USE_STD_IOSTREAM 1\n\t#include <assert>\n#else\n\t#include <cassert>\n#endif\n\n#include <cstdio>\n#include <iostream>\n#include <stdlib.h>\n#include <typeinfo>\n\n#ifdef _MSC_VER\n\t#pragma warning(disable: 4996)  // secure version deprecation warnings\n\t// #pragma warning(disable: 4267)  // 64 bit signed/unsigned loss of data\n#endif\n\n#ifdef __BORLANDC__\n\t#pragma warn -8104\t    // Local Static with constructor dangerous for multi-threaded apps\n#endif\n\n#ifdef __INTEL_COMPILER\n\t#pragma warning(disable:  383)  // value copied to temporary, reference to temporary used\n\t#pragma warning(disable:  981)  // operands are evaluated in unspecified order\n#endif\n\nnamespace astyle {\n\n#ifndef ASTYLE_LIB\n\n//----------------------------------------------------------------------------\n// ASLocalizer class methods.\n//----------------------------------------------------------------------------\n\nASLocalizer::ASLocalizer()\n// Set the locale information.\n{\n\t// set language default values to english (ascii)\n\t// this will be used if a locale or a language cannot be found\n\tm_localeName = \"UNKNOWN\";\n\tm_langID = \"en\";\n\tm_lcid = 0;\n\tm_subLangID.clear();\n\tm_translation = NULL;\n\n\t// Not all compilers support the C++ function locale::global(locale(\"\"));\n\t// For testing on Windows change the \"Region and Language\" settings or use AppLocale.\n\t// For testing on Linux change the LANG environment variable: LANG=fr_FR.UTF-8.\n\t// setlocale() will use the LANG environment variable on Linux.\n\n\tchar* localeName = setlocale(LC_ALL, \"\");\n\tif (localeName == NULL)\t\t// use the english (ascii) defaults\n\t{\n\t\tfprintf(stderr, \"\\n%s\\n\\n\", \"Cannot set native locale, reverting to English\");\n\t\tsetTranslationClass();\n\t\treturn;\n\t}\n\t// set the class variables\n#ifdef _WIN32\n\tsize_t lcid = GetUserDefaultLCID();\n\tsetLanguageFromLCID(lcid);\n#else\n\tsetLanguageFromName(localeName);\n#endif\n}\n\nASLocalizer::~ASLocalizer()\n// Delete dynamically allocated memory.\n{\n\tdelete m_translation;\n}\n\n#ifdef _WIN32\n\nstruct WinLangCode\n{\n\tsize_t winLang;\n\tchar canonicalLang[3];\n};\n\nstatic WinLangCode wlc[] =\n// primary language identifier http://msdn.microsoft.com/en-us/library/aa912554.aspx\n// sublanguage identifier http://msdn.microsoft.com/en-us/library/aa913256.aspx\n// language ID http://msdn.microsoft.com/en-us/library/ee797784%28v=cs.20%29.aspx\n{\n\t{ LANG_CHINESE,    \"zh\" },\n\t{ LANG_DUTCH,      \"nl\" },\n\t{ LANG_ENGLISH,    \"en\" },\n\t{ LANG_FINNISH,    \"fi\" },\n\t{ LANG_FRENCH,     \"fr\" },\n\t{ LANG_GERMAN,     \"de\" },\n\t{ LANG_HINDI,      \"hi\" },\n\t{ LANG_ITALIAN,    \"it\" },\n\t{ LANG_JAPANESE,   \"ja\" },\n\t{ LANG_KOREAN,     \"ko\" },\n\t{ LANG_POLISH,     \"pl\" },\n\t{ LANG_PORTUGUESE, \"pt\" },\n\t{ LANG_RUSSIAN,    \"ru\" },\n\t{ LANG_SPANISH,    \"es\" },\n\t{ LANG_SWEDISH,    \"sv\" },\n\t{ LANG_UKRAINIAN,  \"uk\" },\n};\n\nvoid ASLocalizer::setLanguageFromLCID(size_t lcid)\n// Windows get the language to use from the user locale.\n// NOTE: GetUserDefaultLocaleName() gets nearly the same name as Linux.\n//       But it needs Windows Vista or higher.\n//       Same with LCIDToLocaleName().\n{\n\tm_lcid = lcid;\n\tm_langID = \"en\";\t// default to english\n\n\tsize_t lang = PRIMARYLANGID(LANGIDFROMLCID(m_lcid));\n\tsize_t sublang = SUBLANGID(LANGIDFROMLCID(m_lcid));\n\t// find language in the wlc table\n\tsize_t count = sizeof(wlc) / sizeof(wlc[0]);\n\tfor (size_t i = 0; i < count; i++)\n\t{\n\t\tif (wlc[i].winLang == lang)\n\t\t{\n\t\t\tm_langID = wlc[i].canonicalLang;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (m_langID == \"zh\")\n\t{\n\t\tif (sublang == SUBLANG_CHINESE_SIMPLIFIED || sublang == SUBLANG_CHINESE_SINGAPORE)\n\t\t\tm_subLangID = \"CHS\";\n\t\telse\n\t\t\tm_subLangID = \"CHT\";\t// default\n\t}\n\tsetTranslationClass();\n}\n\n#endif\t// _win32\n\nstring ASLocalizer::getLanguageID() const\n// Returns the language ID in m_langID.\n{\n\treturn m_langID;\n}\n\nconst Translation* ASLocalizer::getTranslationClass() const\n// Returns the name of the translation class in m_translation.  Used for testing.\n{\n\tassert(m_translation);\n\treturn m_translation;\n}\n\nvoid ASLocalizer::setLanguageFromName(const char* langID)\n// Linux set the language to use from the langID.\n//\n// the language string has the following form\n//\n//      lang[_LANG][.encoding][@modifier]\n//\n// (see environ(5) in the Open Unix specification)\n//\n// where lang is the primary language, LANG is a sublang/territory,\n// encoding is the charset to use and modifier \"allows the user to select\n// a specific instance of localization data within a single category\"\n//\n// for example, the following strings are valid:\n//      fr\n//      fr_FR\n//      de_DE.iso88591\n//      de_DE@euro\n//      de_DE.iso88591@euro\n{\n\t// the constants describing the format of lang_LANG locale string\n\tstatic const size_t LEN_LANG = 2;\n\n\tm_lcid = 0;\n\tstring langStr = langID;\n\tm_langID = langStr.substr(0, LEN_LANG);\n\n\t// need the sublang for chinese\n\tif (m_langID == \"zh\" && langStr[LEN_LANG] == '_')\n\t{\n\t\tstring subLang = langStr.substr(LEN_LANG + 1, LEN_LANG);\n\t\tif (subLang == \"CN\" || subLang == \"SG\")\n\t\t\tm_subLangID = \"CHS\";\n\t\telse\n\t\t\tm_subLangID = \"CHT\";\t// default\n\t}\n\tsetTranslationClass();\n}\n\nconst char* ASLocalizer::settext(const char* textIn) const\n// Call the settext class and return the value.\n{\n\tassert(m_translation);\n\tconst string stringIn = textIn;\n\treturn m_translation->translate(stringIn).c_str();\n}\n\nvoid ASLocalizer::setTranslationClass()\n// Return the required translation class.\n// Sets the class variable m_translation from the value of m_langID.\n// Get the language ID at http://msdn.microsoft.com/en-us/library/ee797784%28v=cs.20%29.aspx\n{\n\tassert(m_langID.length());\n\t// delete previously set (--ascii option)\n\tif (m_translation)\n\t{\n\t\tdelete m_translation;\n\t\tm_translation = NULL;\n\t}\n\tif (m_langID == \"zh\" && m_subLangID == \"CHS\")\n\t\tm_translation = new ChineseSimplified;\n\telse if (m_langID == \"zh\" && m_subLangID == \"CHT\")\n\t\tm_translation = new ChineseTraditional;\n\telse if (m_langID == \"nl\")\n\t\tm_translation = new Dutch;\n\telse if (m_langID == \"en\")\n\t\tm_translation = new English;\n\telse if (m_langID == \"fi\")\n\t\tm_translation = new Finnish;\n\telse if (m_langID == \"fr\")\n\t\tm_translation = new French;\n\telse if (m_langID == \"de\")\n\t\tm_translation = new German;\n\telse if (m_langID == \"hi\")\n\t\tm_translation = new Hindi;\n\telse if (m_langID == \"it\")\n\t\tm_translation = new Italian;\n\telse if (m_langID == \"ja\")\n\t\tm_translation = new Japanese;\n\telse if (m_langID == \"ko\")\n\t\tm_translation = new Korean;\n\telse if (m_langID == \"pl\")\n\t\tm_translation = new Polish;\n\telse if (m_langID == \"pt\")\n\t\tm_translation = new Portuguese;\n\telse if (m_langID == \"ru\")\n\t\tm_translation = new Russian;\n\telse if (m_langID == \"es\")\n\t\tm_translation = new Spanish;\n\telse if (m_langID == \"sv\")\n\t\tm_translation = new Swedish;\n\telse if (m_langID == \"uk\")\n\t\tm_translation = new Ukrainian;\n\telse\t// default\n\t\tm_translation = new English;\n}\n\n//----------------------------------------------------------------------------\n// Translation base class methods.\n//----------------------------------------------------------------------------\n\nvoid Translation::addPair(const string &english, const wstring &translated)\n// Add a string pair to the translation vector.\n{\n\tpair<string, wstring> entry(english, translated);\n\tm_translation.push_back(entry);\n}\n\nstring Translation::convertToMultiByte(const wstring &wideStr) const\n// Convert wchar_t to a multibyte string using the currently assigned locale.\n// Return an empty string if an error occurs.\n{\n\tstatic bool msgDisplayed = false;\n\t// get length of the output excluding the NULL and validate the parameters\n\tsize_t mbLen = wcstombs(NULL, wideStr.c_str(), 0);\n\tif (mbLen == string::npos)\n\t{\n\t\tif (!msgDisplayed)\n\t\t{\n\t\t\tfprintf(stderr, \"\\n%s\\n\\n\", \"Cannot convert to multi-byte string, reverting to English\");\n\t\t\tmsgDisplayed = true;\n\t\t}\n\t\treturn \"\";\n\t}\n\t// convert the characters\n\tchar* mbStr = new(nothrow) char[mbLen + 1];\n\tif (mbStr == NULL)\n\t{\n\t\tif (!msgDisplayed)\n\t\t{\n\t\t\tfprintf(stderr, \"\\n%s\\n\\n\", \"Bad memory alloc for multi-byte string, reverting to English\");\n\t\t\tmsgDisplayed = true;\n\t\t}\n\t\treturn \"\";\n\t}\n\twcstombs(mbStr, wideStr.c_str(), mbLen + 1);\n\t// return the string\n\tstring mbTranslation = mbStr;\n\tdelete [] mbStr;\n\treturn mbTranslation;\n}\n\nsize_t Translation::getTranslationVectorSize() const\n// Return the translation vector size.  Used for testing.\n{\n\treturn m_translation.size();\n}\n\nbool Translation::getWideTranslation(const string &stringIn, wstring &wideOut) const\n// Get the wide translation string. Used for testing.\n{\n\tfor (size_t i = 0; i < m_translation.size(); i++)\n\t{\n\t\tif (m_translation[i].first == stringIn)\n\t\t{\n\t\t\twideOut = m_translation[i].second;\n\t\t\treturn true;\n\t\t}\n\t}\n\t// not found\n\twideOut = L\"\";\n\treturn false;\n}\n\nstring &Translation::translate(const string &stringIn) const\n// Translate a string.\n// Return a static string instead of a member variable so the method can have a \"const\" designation.\n// This allows \"settext\" to be called from a \"const\" method.\n{\n\tstatic string mbTranslation;\n\tmbTranslation.clear();\n\tfor (size_t i = 0; i < m_translation.size(); i++)\n\t{\n\t\tif (m_translation[i].first == stringIn)\n\t\t{\n\t\t\tmbTranslation = convertToMultiByte(m_translation[i].second);\n\t\t\tbreak;\n\t\t}\n\t}\n\t// not found, return english\n\tif (mbTranslation.empty())\n\t\tmbTranslation = stringIn;\n\treturn mbTranslation;\n}\n\n//----------------------------------------------------------------------------\n// Translation class methods.\n// These classes have only a constructor which builds the language vector.\n//----------------------------------------------------------------------------\n\nChineseSimplified::ChineseSimplified()\t// 中文（简体）\n{\n\taddPair(\"Formatted  %s\\n\", L\"格式化  %s\\n\");\t\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"未改变  %s\\n\");\t\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"目录  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"排除  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"排除（无匹配项） %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s 格式化   %s 未改变   \");\n\taddPair(\" seconds   \", L\" 秒   \");\n\taddPair(\"%d min %d sec   \", L\"%d 分 %d 秒   \");\n\taddPair(\"%s lines\\n\", L\"%s 行\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"使用默认配置文件 %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"打开HTML文档 %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"无效的配置文件选项:\");\n\taddPair(\"Invalid command line options:\", L\"无效的命令行选项:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"输入 'astyle -h' 以获得有关命令行的帮助\");\n\taddPair(\"Cannot open options file\", L\"无法打开配置文件\");\n\taddPair(\"Cannot open directory\", L\"无法打开目录\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"无法打开HTML文件 %s\\n\");\n\taddPair(\"Command execute failure\", L\"执行命令失败\");\n\taddPair(\"Command is not installed\", L\"未安装命令\");\n\taddPair(\"Missing filename in %s\\n\", L\"在%s缺少文件名\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"递归选项没有通配符\");\n\taddPair(\"Did you intend quote the filename\", L\"你打算引用文件名\");\n\taddPair(\"No file to process %s\\n\", L\"没有文件可处理 %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"你打算使用 --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"不能处理UTF-32编码\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style 已经终止运行\");\n}\n\nChineseTraditional::ChineseTraditional()\t// 中文（繁體）\n{\n\taddPair(\"Formatted  %s\\n\", L\"格式化  %s\\n\");\t\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"未改變  %s\\n\");\t\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"目錄  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"排除  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"排除（無匹配項） %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s 格式化 %s 未改變   \");\n\taddPair(\" seconds   \", L\" 秒   \");\n\taddPair(\"%d min %d sec   \", L\"%d 分 %d 秒   \");\n\taddPair(\"%s lines\\n\", L\"%s 行\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"使用默認配置文件 %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"打開HTML文檔 %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"無效的配置文件選項:\");\n\taddPair(\"Invalid command line options:\", L\"無效的命令行選項:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"輸入'astyle -h'以獲得有關命令行的幫助:\");\n\taddPair(\"Cannot open options file\", L\"無法打開配置文件\");\n\taddPair(\"Cannot open directory\", L\"無法打開目錄\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"無法打開HTML文件 %s\\n\");\n\taddPair(\"Command execute failure\", L\"執行命令失敗\");\n\taddPair(\"Command is not installed\", L\"未安裝命令\");\n\taddPair(\"Missing filename in %s\\n\", L\"在%s缺少文件名\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"遞歸選項沒有通配符\");\n\taddPair(\"Did you intend quote the filename\", L\"你打算引用文件名\");\n\taddPair(\"No file to process %s\\n\", L\"沒有文件可處理 %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"你打算使用 --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"不能處理UTF-32編碼\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style 已經終止運行\");\n}\n\nDutch::Dutch()\t// Nederlandse\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Geformatteerd  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Onveranderd    %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Directory  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Uitsluiten  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Uitgesloten (ongeëvenaarde)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s geformatteerd   %s onveranderd   \");\n\taddPair(\" seconds   \", L\" seconden   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sec   \");\n\taddPair(\"%s lines\\n\", L\"%s lijnen\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Met behulp van standaard opties bestand %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Het openen van HTML-documentatie %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Ongeldige optie file opties:\");\n\taddPair(\"Invalid command line options:\", L\"Ongeldige command line opties:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Voor hulp bij 'astyle-h' opties het type\");\n\taddPair(\"Cannot open options file\", L\"Kan niet worden geopend options bestand\");\n\taddPair(\"Cannot open directory\", L\"Kan niet open directory\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Kan HTML-bestand niet openen %s\\n\");\n\taddPair(\"Command execute failure\", L\"Voeren commando falen\");\n\taddPair(\"Command is not installed\", L\"Command is niet geïnstalleerd\");\n\taddPair(\"Missing filename in %s\\n\", L\"Ontbrekende bestandsnaam in %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Recursieve optie met geen wildcard\");\n\taddPair(\"Did you intend quote the filename\", L\"Heeft u van plan citaat van de bestandsnaam\");\n\taddPair(\"No file to process %s\\n\", L\"Geen bestand te verwerken %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Hebt u van plan bent te gebruiken --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Kan niet verwerken UTF-32 codering\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style heeft beëindigd\");\n}\n\nEnglish::English()\n// this class is NOT translated\n{}\n\nFinnish::Finnish()\t// Suomeksi\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Muotoiltu  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Ennallaan  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Directory  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Sulkea  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Sulkea (verraton)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s muotoiltu   %s ennallaan   \");\n\taddPair(\" seconds   \", L\" sekuntia   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sek   \");\n\taddPair(\"%s lines\\n\", L\"%s linjat\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Käyttämällä oletusasetuksia tiedosto %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Avaaminen HTML asiakirjat %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Virheellinen vaihtoehto tiedosto vaihtoehtoja:\");\n\taddPair(\"Invalid command line options:\", L\"Virheellinen komentorivin:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Apua vaihtoehdoista tyyppi 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Ei voi avata vaihtoehtoja tiedostoa\");\n\taddPair(\"Cannot open directory\", L\"Ei Open Directory\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Ei voi avata HTML-tiedoston %s\\n\");\n\taddPair(\"Command execute failure\", L\"Suorita komento vika\");\n\taddPair(\"Command is not installed\", L\"Komento ei ole asennettu\");\n\taddPair(\"Missing filename in %s\\n\", L\"Puuttuvat tiedostonimi %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Rekursiivinen vaihtoehto ilman wildcard\");\n\taddPair(\"Did you intend quote the filename\", L\"Oletko aio lainata tiedostonimi\");\n\taddPair(\"No file to process %s\\n\", L\"Ei tiedostoa käsitellä %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Oliko aiot käyttää --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Ei voi käsitellä UTF-32 koodausta\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style on päättynyt\");\n}\n\nFrench::French()\t// Française\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formaté    %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Inchangée  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Répertoire  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Exclure  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Exclure (non appariés)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formaté   %s inchangée   \");\n\taddPair(\" seconds   \", L\" seconde   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sec   \");\n\taddPair(\"%s lines\\n\", L\"%s lignes\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Options par défaut utilisation du fichier %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Ouverture documentation HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Options Blancs option du fichier:\");\n\taddPair(\"Invalid command line options:\", L\"Blancs options ligne de commande:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Pour de l'aide sur les options tapez 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Impossible d'ouvrir le fichier d'options\");\n\taddPair(\"Cannot open directory\", L\"Impossible d'ouvrir le répertoire\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Impossible d'ouvrir le fichier HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Exécuter échec de la commande\");\n\taddPair(\"Command is not installed\", L\"Commande n'est pas installé\");\n\taddPair(\"Missing filename in %s\\n\", L\"Nom de fichier manquant dans %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Option récursive sans joker\");\n\taddPair(\"Did you intend quote the filename\", L\"Avez-vous l'intention de citer le nom de fichier\");\n\taddPair(\"No file to process %s\\n\", L\"Aucun fichier à traiter %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Avez-vous l'intention d'utiliser --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Impossible de traiter codage UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style a mis fin\");\n}\n\nGerman::German()\t// Deutsch\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formatiert   %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Unverändert  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Verzeichnis  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Ausschließen  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Ausschließen (unerreichte)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formatiert   %s unverändert   \");\n\taddPair(\" seconds   \", L\" sekunden   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sek   \");\n\taddPair(\"%s lines\\n\", L\"%s linien\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Mit Standard-Optionen Dat %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Öffnen HTML-Dokumentation %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Ungültige Option Datei-Optionen:\");\n\taddPair(\"Invalid command line options:\", L\"Ungültige Kommandozeilen-Optionen:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Für Hilfe zu den Optionen geben Sie 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Kann nicht geöffnet werden Optionsdatei\");\n\taddPair(\"Cannot open directory\", L\"Kann nicht geöffnet werden Verzeichnis\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Kann nicht öffnen HTML-Datei %s\\n\");\n\taddPair(\"Command execute failure\", L\"Execute Befehl Scheitern\");\n\taddPair(\"Command is not installed\", L\"Befehl ist nicht installiert\");\n\taddPair(\"Missing filename in %s\\n\", L\"Missing in %s Dateiname\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Rekursive Option ohne Wildcard\");\n\taddPair(\"Did you intend quote the filename\", L\"Haben Sie die Absicht Inhalte der Dateiname\");\n\taddPair(\"No file to process %s\\n\", L\"Keine Datei zu verarbeiten %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Haben Sie verwenden möchten --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Nicht verarbeiten kann UTF-32 Codierung\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style ist beendet\");\n}\n\nHindi::Hindi()\t// हिन्दी\n// build the translation vector in the Translation base class\n{\n\t// NOTE: Scintilla based editors (CodeBlocks) cannot always edit Hindi.\n\t//       Use Visual Studio instead.\n\taddPair(\"Formatted  %s\\n\", L\"स्वरूपित किया  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"अपरिवर्तित     %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"निर्देशिका  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"निकालना  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"अपवर्जित (बेजोड़)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s स्वरूपित किया   %s अपरिवर्तित   \");\n\taddPair(\" seconds   \", L\" सेकंड   \");\n\taddPair(\"%d min %d sec   \", L\"%d मिनट %d सेकंड   \");\n\taddPair(\"%s lines\\n\", L\"%s लाइनों\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"डिफ़ॉल्ट विकल्प का उपयोग कर फ़ाइल %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"एचटीएमएल प्रलेखन खोलना %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"अवैध विकल्प फ़ाइल विकल्प हैं:\");\n\taddPair(\"Invalid command line options:\", L\"कमांड लाइन विकल्प अवैध:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"विकल्पों पर मदद के लिए प्रकार 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"विकल्प फ़ाइल नहीं खोल सकता है\");\n\taddPair(\"Cannot open directory\", L\"निर्देशिका नहीं खोल सकता\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"HTML फ़ाइल नहीं खोल सकता %s\\n\");\n\taddPair(\"Command execute failure\", L\"आदेश विफलता निष्पादित\");\n\taddPair(\"Command is not installed\", L\"कमान स्थापित नहीं है\");\n\taddPair(\"Missing filename in %s\\n\", L\"लापता में फ़ाइलनाम %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"कोई वाइल्डकार्ड साथ पुनरावर्ती विकल्प\");\n\taddPair(\"Did you intend quote the filename\", L\"क्या आप बोली फ़ाइलनाम का इरादा\");\n\taddPair(\"No file to process %s\\n\", L\"कोई फ़ाइल %s प्रक्रिया के लिए\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"क्या आप उपयोग करना चाहते हैं --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"UTF-32 कूटबन्धन प्रक्रिया नहीं कर सकते\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style समाप्त किया है\");\n}\n\nItalian::Italian()\t// Italiano\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formattata  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Immutato    %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Elenco  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Escludere  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Escludere (senza pari)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s ormattata   %s immutato   \");\n\taddPair(\" seconds   \", L\" secondo   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d seg   \");\n\taddPair(\"%s lines\\n\", L\"%s linee\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Utilizzando file delle opzioni di default %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Apertura di documenti HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Opzione non valida file delle opzioni:\");\n\taddPair(\"Invalid command line options:\", L\"Opzioni della riga di comando non valido:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Per informazioni sulle opzioni di tipo 'astyle-h'\");\n\taddPair(\"Cannot open options file\", L\"Impossibile aprire il file opzioni\");\n\taddPair(\"Cannot open directory\", L\"Impossibile aprire la directory\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Impossibile aprire il file HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Esegui fallimento comando\");\n\taddPair(\"Command is not installed\", L\"Il comando non è installato\");\n\taddPair(\"Missing filename in %s\\n\", L\"Nome del file mancante in %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Opzione ricorsiva senza jolly\");\n\taddPair(\"Did you intend quote the filename\", L\"Avete intenzione citare il nome del file\");\n\taddPair(\"No file to process %s\\n\", L\"Nessun file al processo %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Hai intenzione di utilizzare --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Non è possibile processo di codifica UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style ha terminato\");\n}\n\nJapanese::Japanese()\t// 日本\n{\n\taddPair(\"Formatted  %s\\n\", L\"フォーマット  %s\\n\");\t\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"変更          %s\\n\");\t\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"ディレクトリ  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"除外する  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"除外（マッチせず） %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %sフォーマット   %s 変更   \");\n\taddPair(\" seconds   \", L\" 秒   \");\n\taddPair(\"%d min %d sec   \", L\"%d 分 %d 秒   \");\n\taddPair(\"%s lines\\n\", L\"%s の行\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"デフォルトの設定ファイルを使用してください %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"HTML文書を開く %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"無効なコンフィギュレーションファイルオプション：\");\n\taddPair(\"Invalid command line options:\", L\"無効なコマンドラインオプション：\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"コマンドラインについてのヘルプは'astyle- h'を入力してください\");\n\taddPair(\"Cannot open options file\", L\"コンフィギュレーションファイルを開くことができません\");\n\taddPair(\"Cannot open directory\", L\"ディレクトリのオープンに失敗しました\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"HTMLファイルを開くことができません %s\\n\");\n\taddPair(\"Command execute failure\", L\"コマンドの失敗を実行\");\n\taddPair(\"Command is not installed\", L\"コマンドがインストールされていません\");\n\taddPair(\"Missing filename in %s\\n\", L\"%s はファイル名で欠落しています\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"再帰的なオプションではワイルドカードではない\");\n\taddPair(\"Did you intend quote the filename\", L\"あなたは、ファイル名を参照するつもり\");\n\taddPair(\"No file to process %s\\n\", L\"いいえファイルは処理できません %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"あなたが使用する予定 --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"UTF- 32エンコーディングを処理できない\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style 実行が終了しました\");\n}\n\nKorean::Korean()\t// 한국의\n{\n\taddPair(\"Formatted  %s\\n\", L\"수정됨    %s\\n\");\t\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"변경없음  %s\\n\");\t\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"디렉토리  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"제외됨   %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"제외 (NO 일치) %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s 수정됨   %s 변경없음   \");\n\taddPair(\" seconds   \", L\" 초   \");\n\taddPair(\"%d min %d sec   \", L\"%d 분 %d 초   \");\n\taddPair(\"%s lines\\n\", L\"%s 라인\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"기본 구성 파일을 사용 %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"HTML 문서를 열기 %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"잘못된 구성 파일 옵션 :\");\n\taddPair(\"Invalid command line options:\", L\"잘못된 명령줄 옵션 :\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"도움말을 보려면 옵션 유형 'astyle - H'를 사용합니다\");\n\taddPair(\"Cannot open options file\", L\"구성 파일을 열 수 없습니다\");\n\taddPair(\"Cannot open directory\", L\"디렉토리를 열지 못했습니다\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"HTML 파일을 열 수 없습니다 %s\\n\");\n\taddPair(\"Command execute failure\", L\"명령 실패를 실행\");\n\taddPair(\"Command is not installed\", L\"명령이 설치되어 있지 않습니다\");\n\taddPair(\"Missing filename in %s\\n\", L\"%s 에서 누락된 파일 이름\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"와일드 카드없이 재귀 옵션\");\n\taddPair(\"Did you intend quote the filename\", L\"당신은 파일 이름을 인용하고자하나요\");\n\taddPair(\"No file to process %s\\n\", L\"처리할 파일이 없습니다 %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"--recursive 를 사용하고자 하십니까\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"UTF-32 인코딩을 처리할 수 없습니다\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style를 종료합니다\");\n}\n\nPolish::Polish()\t// Polski\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Sformatowany  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Niezmienione  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Katalog  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Wykluczać  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Wyklucz (niezrównany)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s sformatowany   %s niezmienione   \");\n\taddPair(\" seconds   \", L\" sekund   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sek   \");\n\taddPair(\"%s lines\\n\", L\"%s linii\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Korzystanie z domyślnej opcji %s plik\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Otwarcie dokumentacji HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Nieprawidłowy opcji pliku opcji:\");\n\taddPair(\"Invalid command line options:\", L\"Nieprawidłowe opcje wiersza polecenia:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Aby uzyskać pomoc od rodzaju opcji 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Nie można otworzyć pliku opcji\");\n\taddPair(\"Cannot open directory\", L\"Nie można otworzyć katalogu\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Nie można otworzyć pliku HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Wykonaj polecenia niepowodzenia\");\n\taddPair(\"Command is not installed\", L\"Polecenie nie jest zainstalowany\");\n\taddPair(\"Missing filename in %s\\n\", L\"Brakuje pliku w %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Rekurencyjne opcja bez symboli\");\n\taddPair(\"Did you intend quote the filename\", L\"Czy zamierza Pan podać nazwę pliku\");\n\taddPair(\"No file to process %s\\n\", L\"Brak pliku do procesu %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Czy masz zamiar używać --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Nie można procesu kodowania UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style został zakończony\");\n}\n\nPortuguese::Portuguese()\t// Português\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formatado   %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Inalterado  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Diretório  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Excluir  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Excluir (incomparável)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formatado   %s inalterado   \");\n\taddPair(\" seconds   \", L\" segundo   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d seg   \");\n\taddPair(\"%s lines\\n\", L\"%s linhas\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Usando o arquivo de opções padrão %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Abrindo a documentação HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Opções de arquivo inválido opção:\");\n\taddPair(\"Invalid command line options:\", L\"Opções de linha de comando inválida:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Para obter ajuda sobre as opções de tipo 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Não é possível abrir arquivo de opções\");\n\taddPair(\"Cannot open directory\", L\"Não é possível abrir diretório\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Não é possível abrir arquivo HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Executar falha de comando\");\n\taddPair(\"Command is not installed\", L\"Comando não está instalado\");\n\taddPair(\"Missing filename in %s\\n\", L\"Filename faltando em %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Opção recursiva sem curinga\");\n\taddPair(\"Did you intend quote the filename\", L\"Será que você pretende citar o nome do arquivo\");\n\taddPair(\"No file to process %s\\n\", L\"Nenhum arquivo para processar %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Será que você pretende usar --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Não pode processar a codificação UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style terminou\");\n}\n\nRussian::Russian()\t// русский\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Форматированный  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"без изменений    %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"каталог  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"исключать  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Исключить (непревзойденный)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s Форматированный   %s без изменений   \");\n\taddPair(\" seconds   \", L\" секунды   \");\n\taddPair(\"%d min %d sec   \", L\"%d мин %d сек   \");\n\taddPair(\"%s lines\\n\", L\"%s линий\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Использование опции по умолчанию файл %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Открытие HTML документации %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Недопустимый файл опций опцию:\");\n\taddPair(\"Invalid command line options:\", L\"Недопустимые параметры командной строки:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Для получения справки по 'astyle -h' опций типа\");\n\taddPair(\"Cannot open options file\", L\"Не удается открыть файл параметров\");\n\taddPair(\"Cannot open directory\", L\"Не могу открыть каталог\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Не удается открыть файл HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Выполнить команду недостаточности\");\n\taddPair(\"Command is not installed\", L\"Не установлен Команда\");\n\taddPair(\"Missing filename in %s\\n\", L\"Отсутствует имя файла в %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Рекурсивный вариант без каких-либо шаблона\");\n\taddPair(\"Did you intend quote the filename\", L\"Вы намерены цитатой файла\");\n\taddPair(\"No file to process %s\\n\", L\"Нет файлов для обработки %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Неужели вы собираетесь использовать --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Не удается обработать UTF-32 кодировке\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style прекратил\");\n}\n\nSpanish::Spanish()\t// Español\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formato     %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Inalterado  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Directorio  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Excluir  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Excluir (incomparable)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formato   %s inalterado   \");\n\taddPair(\" seconds   \", L\" segundo   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d seg   \");\n\taddPair(\"%s lines\\n\", L\"%s líneas\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Uso de las opciones por defecto del archivo %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Apertura de documentación HTML %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Opción no válida opciones de archivo:\");\n\taddPair(\"Invalid command line options:\", L\"No válido opciones de línea de comando:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Para obtener ayuda sobre las opciones tipo 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"No se puede abrir el archivo de opciones\");\n\taddPair(\"Cannot open directory\", L\"No se puede abrir el directorio\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"No se puede abrir el archivo HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Ejecutar el fracaso de comandos\");\n\taddPair(\"Command is not installed\", L\"El comando no está instalado\");\n\taddPair(\"Missing filename in %s\\n\", L\"Falta nombre del archivo en %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Recursiva opción sin comodín\");\n\taddPair(\"Did you intend quote the filename\", L\"Se tiene la intención de citar el nombre de archivo\");\n\taddPair(\"No file to process %s\\n\", L\"No existe el fichero a procesar %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Se va a utilizar --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"No se puede procesar la codificación UTF-32\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style ha terminado\");\n}\n\nSwedish::Swedish()\t// Svenska\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"Formaterade  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"Oförändrade  %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Katalog  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Uteslut  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Uteslut (oöverträffad)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s formaterade   %s oförändrade   \");\n\taddPair(\" seconds   \", L\" sekunder   \");\n\taddPair(\"%d min %d sec   \", L\"%d min %d sek   \");\n\taddPair(\"%s lines\\n\", L\"%s linjer\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Använda standardalternativ fil %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Öppna HTML-dokumentation %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Ogiltigt alternativ fil alternativ:\");\n\taddPair(\"Invalid command line options:\", L\"Ogiltig kommandoraden alternativ:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"För hjälp om alternativ typ 'astyle -h'\");\n\taddPair(\"Cannot open options file\", L\"Kan inte öppna inställningsfilen\");\n\taddPair(\"Cannot open directory\", L\"Kan inte öppna katalog\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Kan inte öppna HTML-filen %s\\n\");\n\taddPair(\"Command execute failure\", L\"Utför kommando misslyckande\");\n\taddPair(\"Command is not installed\", L\"Kommandot är inte installerat\");\n\taddPair(\"Missing filename in %s\\n\", L\"Saknade filnamn i %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Rekursiva alternativ utan jokertecken\");\n\taddPair(\"Did you intend quote the filename\", L\"Visste du tänker citera filnamnet\");\n\taddPair(\"No file to process %s\\n\", L\"Ingen fil att bearbeta %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Har du för avsikt att använda --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Kan inte hantera UTF-32 kodning\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style har upphört\");\n}\n\nUkrainian::Ukrainian()\t// Український\n// build the translation vector in the Translation base class\n{\n\taddPair(\"Formatted  %s\\n\", L\"форматований  %s\\n\");\t// should align with unchanged\n\taddPair(\"Unchanged  %s\\n\", L\"без змін      %s\\n\");\t// should align with formatted\n\taddPair(\"Directory  %s\\n\", L\"Каталог  %s\\n\");\n\taddPair(\"Exclude  %s\\n\", L\"Виключити  %s\\n\");\n\taddPair(\"Exclude (unmatched)  %s\\n\", L\"Виключити (неперевершений)  %s\\n\");\n\taddPair(\" %s formatted   %s unchanged   \", L\" %s відформатований   %s без змін   \");\n\taddPair(\" seconds   \", L\" секунди   \");\n\taddPair(\"%d min %d sec   \", L\"%d хви %d cek   \");\n\taddPair(\"%s lines\\n\", L\"%s ліній\\n\");\n\taddPair(\"Using default options file %s\\n\", L\"Використання файлів опцій за замовчуванням %s\\n\");\n\taddPair(\"Opening HTML documentation %s\\n\", L\"Відкриття HTML документації %s\\n\");\n\taddPair(\"Invalid option file options:\", L\"Неприпустимий файл опцій опцію:\");\n\taddPair(\"Invalid command line options:\", L\"Неприпустима параметри командного рядка:\");\n\taddPair(\"For help on options type 'astyle -h'\", L\"Для отримання довідки по 'astyle -h' опцій типу\");\n\taddPair(\"Cannot open options file\", L\"Не вдається відкрити файл параметрів\");\n\taddPair(\"Cannot open directory\", L\"Не можу відкрити каталог\");\n\taddPair(\"Cannot open HTML file %s\\n\", L\"Не вдається відкрити файл HTML %s\\n\");\n\taddPair(\"Command execute failure\", L\"Виконати команду недостатності\");\n\taddPair(\"Command is not installed\", L\"Не встановлений Команда\");\n\taddPair(\"Missing filename in %s\\n\", L\"Відсутня назва файлу в %s\\n\");\n\taddPair(\"Recursive option with no wildcard\", L\"Рекурсивний варіант без будь-яких шаблону\");\n\taddPair(\"Did you intend quote the filename\", L\"Ви маєте намір цитатою файлу\");\n\taddPair(\"No file to process %s\\n\", L\"Немає файлів для обробки %s\\n\");\n\taddPair(\"Did you intend to use --recursive\", L\"Невже ви збираєтеся використовувати --recursive\");\n\taddPair(\"Cannot process UTF-32 encoding\", L\"Не вдається обробити UTF-32 кодуванні\");\n\taddPair(\"\\nArtistic Style has terminated\", L\"\\nArtistic Style припинив\");\n}\n\n\n#endif\t// ASTYLE_LIB\n\n}   // end of namespace astyle\n\n"
  },
  {
    "path": "old/3rdpart/astyle/ASLocalizer.h",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASLocalizer.h\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#ifndef ASLOCALIZER_H\n#define ASLOCALIZER_H\n\n#include <string>\n#include <vector>\n\nnamespace astyle {\n\nusing namespace std;\n\n#ifndef ASTYLE_LIB\n\n//-----------------------------------------------------------------------------\n// ASLocalizer class for console build.\n// This class encapsulates all language-dependent settings and is a\n// generalization of the C locale concept.\n//-----------------------------------------------------------------------------\nclass Translation;\n\nclass ASLocalizer\n{\n\tpublic:\t\t// functions\n\t\tASLocalizer();\n\t\tvirtual ~ASLocalizer();\n\t\tstring getLanguageID() const;\n\t\tconst Translation* getTranslationClass() const;\n#ifdef _WIN32\n\t\tvoid setLanguageFromLCID(size_t lcid);\n#endif\n\t\tvoid setLanguageFromName(const char* langID);\n\t\tconst char* settext(const char* textIn) const;\n\n\tprivate:\t// functions\n\t\tvoid setTranslationClass();\n\n\tprivate:\t// variables\n\t\tTranslation* m_translation;\t\t// pointer to a polymorphic Translation class\n\t\tstring m_langID;\t\t\t\t// language identifier from the locale\n\t\tstring m_subLangID;\t\t\t\t// sub language identifier, if needed\n\t\tstring m_localeName;\t\t\t// name of the current locale (Linux only)\n\t\tsize_t m_lcid;\t\t\t\t\t// LCID of the user locale (Windows only)\n};\n\n//----------------------------------------------------------------------------\n// Translation base class.\n//----------------------------------------------------------------------------\n\nclass Translation\n// This base class is inherited by the language translation classes.\n// Polymorphism is used to call the correct language translator.\n// This class contains the translation vector and settext translation method.\n// The language vector is built by the language sub classes.\n// NOTE: This class must have virtual methods for typeid() to work.\n//       typeid() is used by AStyleTestI18n_Localizer.cpp.\n{\n\tpublic:\n\t\tTranslation() {}\n\t\tvirtual ~Translation() {}\n\t\tstring convertToMultiByte(const wstring &wideStr) const;\n\t\tsize_t getTranslationVectorSize() const;\n\t\tbool getWideTranslation(const string &stringIn, wstring &wideOut) const;\n\t\tstring &translate(const string &stringIn) const;\n\n\tprotected:\n\t\tvoid addPair(const string &english, const wstring &translated);\n\t\t// variables\n\t\tvector<pair<string, wstring> > m_translation;\t\t// translation vector\n};\n\n//----------------------------------------------------------------------------\n// Translation classes\n// One class for each language.\n// These classes have only a constructor which builds the language vector.\n//----------------------------------------------------------------------------\n\nclass ChineseSimplified : public Translation\n{\n\tpublic:\n\t\tChineseSimplified();\n};\n\nclass ChineseTraditional : public Translation\n{\n\tpublic:\n\t\tChineseTraditional();\n};\n\nclass Dutch : public Translation\n{\n\tpublic:\n\t\tDutch();\n};\n\nclass English : public Translation\n{\n\tpublic:\n\t\tEnglish();\n};\n\nclass Finnish : public Translation\n{\n\tpublic:\n\t\tFinnish();\n};\n\nclass French : public Translation\n{\n\tpublic:\n\t\tFrench();\n};\n\nclass German : public Translation\n{\n\tpublic:\n\t\tGerman();\n};\n\nclass Hindi : public Translation\n{\n\tpublic:\n\t\tHindi();\n};\n\nclass Italian : public Translation\n{\n\tpublic:\n\t\tItalian();\n};\n\nclass Japanese : public Translation\n{\n\tpublic:\n\t\tJapanese();\n};\n\nclass Korean : public Translation\n{\n\tpublic:\n\t\tKorean();\n};\n\nclass Polish : public Translation\n{\n\tpublic:\n\t\tPolish();\n};\n\nclass Portuguese : public Translation\n{\n\tpublic:\n\t\tPortuguese();\n};\n\nclass Russian : public Translation\n{\n\tpublic:\n\t\tRussian();\n};\n\nclass Spanish : public Translation\n{\n\tpublic:\n\t\tSpanish();\n};\n\nclass Swedish : public Translation\n{\n\tpublic:\n\t\tSwedish();\n};\n\nclass Ukrainian : public Translation\n{\n\tpublic:\n\t\tUkrainian();\n};\n\n\n#endif\t//  ASTYLE_LIB\n\n}\t// namespace astyle\n\n#endif\t//  ASLOCALIZER_H\n"
  },
  {
    "path": "old/3rdpart/astyle/ASResource.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   ASResource.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#include \"astyle.h\"\n#include <algorithm>\n\n\nnamespace astyle {\n\nconst string ASResource::AS_IF = string(\"if\");\nconst string ASResource::AS_ELSE = string(\"else\");\nconst string ASResource::AS_FOR = string(\"for\");\nconst string ASResource::AS_DO = string(\"do\");\nconst string ASResource::AS_WHILE = string(\"while\");\nconst string ASResource::AS_SWITCH = string(\"switch\");\nconst string ASResource::AS_CASE = string(\"case\");\nconst string ASResource::AS_DEFAULT = string(\"default\");\nconst string ASResource::AS_CLASS = string(\"class\");\nconst string ASResource::AS_VOLATILE = string(\"volatile\");\nconst string ASResource::AS_INTERRUPT = string(\"interrupt\");\nconst string ASResource::AS_NOEXCEPT = string(\"noexcept\");\nconst string ASResource::AS_AUTORELEASEPOOL = string(\"autoreleasepool\");\nconst string ASResource::AS_STRUCT = string(\"struct\");\nconst string ASResource::AS_UNION = string(\"union\");\nconst string ASResource::AS_INTERFACE = string(\"interface\");\nconst string ASResource::AS_NAMESPACE = string(\"namespace\");\nconst string ASResource::AS_END = string(\"end\");\nconst string ASResource::AS_SELECTOR = string(\"selector\");\nconst string ASResource::AS_EXTERN = string(\"extern\");\nconst string ASResource::AS_ENUM = string(\"enum\");\nconst string ASResource::AS_PUBLIC = string(\"public\");\nconst string ASResource::AS_PROTECTED = string(\"protected\");\nconst string ASResource::AS_PRIVATE = string(\"private\");\nconst string ASResource::AS_STATIC = string(\"static\");\nconst string ASResource::AS_SYNCHRONIZED = string(\"synchronized\");\nconst string ASResource::AS_OPERATOR = string(\"operator\");\nconst string ASResource::AS_TEMPLATE = string(\"template\");\nconst string ASResource::AS_TRY = string(\"try\");\nconst string ASResource::AS_CATCH = string(\"catch\");\nconst string ASResource::AS_THROW = string(\"throw\");\nconst string ASResource::AS_FINALLY = string(\"finally\");\nconst string ASResource::_AS_TRY = string(\"__try\");\nconst string ASResource::_AS_FINALLY = string(\"__finally\");\nconst string ASResource::_AS_EXCEPT = string(\"__except\");\nconst string ASResource::AS_THROWS = string(\"throws\");\nconst string ASResource::AS_CONST = string(\"const\");\nconst string ASResource::AS_SEALED = string(\"sealed\");\nconst string ASResource::AS_OVERRIDE = string(\"override\");\nconst string ASResource::AS_WHERE = string(\"where\");\nconst string ASResource::AS_LET = string(\"let\");\nconst string ASResource::AS_NEW = string(\"new\");\n\nconst string ASResource::AS_ASM = string(\"asm\");\nconst string ASResource::AS__ASM__ = string(\"__asm__\");\nconst string ASResource::AS_MS_ASM = string(\"_asm\");\nconst string ASResource::AS_MS__ASM = string(\"__asm\");\n\nconst string ASResource::AS_BAR_DEFINE = string(\"#define\");\nconst string ASResource::AS_BAR_INCLUDE = string(\"#include\");\nconst string ASResource::AS_BAR_IF = string(\"#if\");\nconst string ASResource::AS_BAR_EL = string(\"#el\");\nconst string ASResource::AS_BAR_ENDIF = string(\"#endif\");\n\nconst string ASResource::AS_OPEN_BRACKET = string(\"{\");\nconst string ASResource::AS_CLOSE_BRACKET = string(\"}\");\nconst string ASResource::AS_OPEN_LINE_COMMENT = string(\"//\");\nconst string ASResource::AS_OPEN_COMMENT = string(\"/*\");\nconst string ASResource::AS_CLOSE_COMMENT = string(\"*/\");\n\nconst string ASResource::AS_ASSIGN = string(\"=\");\nconst string ASResource::AS_PLUS_ASSIGN = string(\"+=\");\nconst string ASResource::AS_MINUS_ASSIGN = string(\"-=\");\nconst string ASResource::AS_MULT_ASSIGN = string(\"*=\");\nconst string ASResource::AS_DIV_ASSIGN = string(\"/=\");\nconst string ASResource::AS_MOD_ASSIGN = string(\"%=\");\nconst string ASResource::AS_OR_ASSIGN = string(\"|=\");\nconst string ASResource::AS_AND_ASSIGN = string(\"&=\");\nconst string ASResource::AS_XOR_ASSIGN = string(\"^=\");\nconst string ASResource::AS_GR_GR_ASSIGN = string(\">>=\");\nconst string ASResource::AS_LS_LS_ASSIGN = string(\"<<=\");\nconst string ASResource::AS_GR_GR_GR_ASSIGN = string(\">>>=\");\nconst string ASResource::AS_LS_LS_LS_ASSIGN = string(\"<<<=\");\nconst string ASResource::AS_GCC_MIN_ASSIGN = string(\"<?\");\nconst string ASResource::AS_GCC_MAX_ASSIGN = string(\">?\");\n\nconst string ASResource::AS_RETURN = string(\"return\");\nconst string ASResource::AS_CIN = string(\"cin\");\nconst string ASResource::AS_COUT = string(\"cout\");\nconst string ASResource::AS_CERR = string(\"cerr\");\n\nconst string ASResource::AS_EQUAL = string(\"==\");\nconst string ASResource::AS_PLUS_PLUS = string(\"++\");\nconst string ASResource::AS_MINUS_MINUS = string(\"--\");\nconst string ASResource::AS_NOT_EQUAL = string(\"!=\");\nconst string ASResource::AS_GR_EQUAL = string(\">=\");\nconst string ASResource::AS_GR_GR = string(\">>\");\nconst string ASResource::AS_GR_GR_GR = string(\">>>\");\nconst string ASResource::AS_LS_EQUAL = string(\"<=\");\nconst string ASResource::AS_LS_LS = string(\"<<\");\nconst string ASResource::AS_LS_LS_LS = string(\"<<<\");\nconst string ASResource::AS_QUESTION_QUESTION = string(\"??\");\nconst string ASResource::AS_LAMBDA = string(\"=>\");            // C# lambda expression arrow\nconst string ASResource::AS_ARROW = string(\"->\");\nconst string ASResource::AS_AND = string(\"&&\");\nconst string ASResource::AS_OR = string(\"||\");\nconst string ASResource::AS_SCOPE_RESOLUTION = string(\"::\");\n\nconst string ASResource::AS_PLUS = string(\"+\");\nconst string ASResource::AS_MINUS = string(\"-\");\nconst string ASResource::AS_MULT = string(\"*\");\nconst string ASResource::AS_DIV = string(\"/\");\nconst string ASResource::AS_MOD = string(\"%\");\nconst string ASResource::AS_GR = string(\">\");\nconst string ASResource::AS_LS = string(\"<\");\nconst string ASResource::AS_NOT = string(\"!\");\nconst string ASResource::AS_BIT_OR = string(\"|\");\nconst string ASResource::AS_BIT_AND = string(\"&\");\nconst string ASResource::AS_BIT_NOT = string(\"~\");\nconst string ASResource::AS_BIT_XOR = string(\"^\");\nconst string ASResource::AS_QUESTION = string(\"?\");\nconst string ASResource::AS_COLON = string(\":\");\nconst string ASResource::AS_COMMA = string(\",\");\nconst string ASResource::AS_SEMICOLON = string(\";\");\n\nconst string ASResource::AS_QFOREACH = string(\"Q_FOREACH\");\nconst string ASResource::AS_QFOREVER = string(\"Q_FOREVER\");\nconst string ASResource::AS_FOREVER = string(\"forever\");\nconst string ASResource::AS_FOREACH = string(\"foreach\");\nconst string ASResource::AS_LOCK = string(\"lock\");\nconst string ASResource::AS_UNSAFE = string(\"unsafe\");\nconst string ASResource::AS_FIXED = string(\"fixed\");\nconst string ASResource::AS_GET = string(\"get\");\nconst string ASResource::AS_SET = string(\"set\");\nconst string ASResource::AS_ADD = string(\"add\");\nconst string ASResource::AS_REMOVE = string(\"remove\");\nconst string ASResource::AS_DELEGATE = string(\"delegate\");\nconst string ASResource::AS_UNCHECKED = string(\"unchecked\");\n\nconst string ASResource::AS_CONST_CAST = string(\"const_cast\");\nconst string ASResource::AS_DYNAMIC_CAST = string(\"dynamic_cast\");\nconst string ASResource::AS_REINTERPRET_CAST = string(\"reinterpret_cast\");\nconst string ASResource::AS_STATIC_CAST = string(\"static_cast\");\n\nconst string ASResource::AS_NS_DURING = string(\"NS_DURING\");\nconst string ASResource::AS_NS_HANDLER = string(\"NS_HANDLER\");\n\n/**\n * Sort comparison function.\n * Compares the length of the value of pointers in the vectors.\n * The LONGEST strings will be first in the vector.\n *\n * @param a and b, the string pointers to be compared.\n */\nbool sortOnLength(const string* a, const string* b)\n{\n\treturn (*a).length() > (*b).length();\n}\n\n/**\n * Sort comparison function.\n * Compares the value of pointers in the vectors.\n *\n * @param a and b, the string pointers to be compared.\n */\nbool sortOnName(const string* a, const string* b)\n{\n\treturn *a < *b;\n}\n\n/**\n * Build the vector of assignment operators.\n * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp\n *\n * @param assignmentOperators   a reference to the vector to be built.\n */\nvoid ASResource::buildAssignmentOperators(vector<const string*>* assignmentOperators)\n{\n\tassignmentOperators->push_back(&AS_ASSIGN);\n\tassignmentOperators->push_back(&AS_PLUS_ASSIGN);\n\tassignmentOperators->push_back(&AS_MINUS_ASSIGN);\n\tassignmentOperators->push_back(&AS_MULT_ASSIGN);\n\tassignmentOperators->push_back(&AS_DIV_ASSIGN);\n\tassignmentOperators->push_back(&AS_MOD_ASSIGN);\n\tassignmentOperators->push_back(&AS_OR_ASSIGN);\n\tassignmentOperators->push_back(&AS_AND_ASSIGN);\n\tassignmentOperators->push_back(&AS_XOR_ASSIGN);\n\n\t// Java\n\tassignmentOperators->push_back(&AS_GR_GR_GR_ASSIGN);\n\tassignmentOperators->push_back(&AS_GR_GR_ASSIGN);\n\tassignmentOperators->push_back(&AS_LS_LS_ASSIGN);\n\n\t// Unknown\n\tassignmentOperators->push_back(&AS_LS_LS_LS_ASSIGN);\n\n\tsort(assignmentOperators->begin(), assignmentOperators->end(), sortOnLength);\n}\n\n/**\n * Build the vector of C++ cast operators.\n * Used by ONLY ASFormatter.cpp\n *\n * @param castOperators     a reference to the vector to be built.\n */\nvoid ASResource::buildCastOperators(vector<const string*>* castOperators)\n{\n\tcastOperators->push_back(&AS_CONST_CAST);\n\tcastOperators->push_back(&AS_DYNAMIC_CAST);\n\tcastOperators->push_back(&AS_REINTERPRET_CAST);\n\tcastOperators->push_back(&AS_STATIC_CAST);\n}\n\n/**\n * Build the vector of header words.\n * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp\n *\n * @param headers       a reference to the vector to be built.\n */\nvoid ASResource::buildHeaders(vector<const string*>* headers, int fileType, bool beautifier)\n{\n\theaders->push_back(&AS_IF);\n\theaders->push_back(&AS_ELSE);\n\theaders->push_back(&AS_FOR);\n\theaders->push_back(&AS_WHILE);\n\theaders->push_back(&AS_DO);\n\theaders->push_back(&AS_SWITCH);\n\theaders->push_back(&AS_CASE);\n\theaders->push_back(&AS_DEFAULT);\n\theaders->push_back(&AS_TRY);\n\theaders->push_back(&AS_CATCH);\n\theaders->push_back(&AS_QFOREACH);\t\t// QT\n\theaders->push_back(&AS_QFOREVER);\t\t// QT\n\theaders->push_back(&AS_FOREACH);\t\t// QT & C#\n\theaders->push_back(&AS_FOREVER);\t\t// Qt & Boost\n\n\tif (fileType == C_TYPE)\n\t{\n\t\theaders->push_back(&_AS_TRY);\t\t// __try\n\t\theaders->push_back(&_AS_FINALLY);\t// __finally\n\t\theaders->push_back(&_AS_EXCEPT);\t// __except\n\t}\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\theaders->push_back(&AS_FINALLY);\n\t\theaders->push_back(&AS_SYNCHRONIZED);\n\t}\n\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\theaders->push_back(&AS_FINALLY);\n\t\theaders->push_back(&AS_LOCK);\n\t\theaders->push_back(&AS_FIXED);\n\t\theaders->push_back(&AS_GET);\n\t\theaders->push_back(&AS_SET);\n\t\theaders->push_back(&AS_ADD);\n\t\theaders->push_back(&AS_REMOVE);\n\t}\n\n\tif (beautifier)\n\t{\n\t\tif (fileType == C_TYPE)\n\t\t{\n\t\t\theaders->push_back(&AS_TEMPLATE);\n\t\t}\n\n\t\tif (fileType == JAVA_TYPE)\n\t\t{\n\t\t\theaders->push_back(&AS_STATIC);         // for static constructor\n\t\t}\n\t}\n\tsort(headers->begin(), headers->end(), sortOnName);\n}\n\n/**\n * Build the vector of indentable headers.\n * Used by ONLY ASBeautifier.cpp\n *\n * @param indentableHeaders     a reference to the vector to be built.\n */\nvoid ASResource::buildIndentableHeaders(vector<const string*>* indentableHeaders)\n{\n\tindentableHeaders->push_back(&AS_RETURN);\n\n\tsort(indentableHeaders->begin(), indentableHeaders->end(), sortOnName);\n}\n\n/**\n* Build the vector of indentable macros pairs.\n* Initialized by ASFormatter, used by ONLY ASEnhancer.cpp\n*\n* @param indentableMacros       a reference to the vector to be built.\n*/\nvoid ASResource::buildIndentableMacros(vector<const pair<const string, const string>* >* indentableMacros)\n{\n\t// the pairs must be retained in memory\n\tstatic const struct pair<const string, const string> macros[] =\n\t{\n\t\t// wxWidgets\n\t\tmake_pair(\"BEGIN_EVENT_TABLE\", \"END_EVENT_TABLE\"),\n\t\tmake_pair(\"wxBEGIN_EVENT_TABLE\", \"wxEND_EVENT_TABLE\"),\n\t\t// MFC\n\t\tmake_pair(\"BEGIN_DISPATCH_MAP\", \"END_DISPATCH_MAP\"),\n\t\tmake_pair(\"BEGIN_EVENT_MAP\", \"END_EVENT_MAP\"),\n\t\tmake_pair(\"BEGIN_MESSAGE_MAP\", \"END_MESSAGE_MAP\"),\n\t\tmake_pair(\"BEGIN_PROPPAGEIDS\", \"END_PROPPAGEIDS\"),\n\t};\n\n\tsize_t elements = sizeof(macros) / sizeof(macros[0]);\n\tfor (size_t i = 0; i < elements; i++)\n\t\tindentableMacros->push_back(&macros[i]);\n}\n\n/**\n * Build the vector of non-assignment operators.\n * Used by ONLY ASBeautifier.cpp\n *\n * @param nonAssignmentOperators       a reference to the vector to be built.\n */\nvoid ASResource::buildNonAssignmentOperators(vector<const string*>* nonAssignmentOperators)\n{\n\tnonAssignmentOperators->push_back(&AS_EQUAL);\n\tnonAssignmentOperators->push_back(&AS_PLUS_PLUS);\n\tnonAssignmentOperators->push_back(&AS_MINUS_MINUS);\n\tnonAssignmentOperators->push_back(&AS_NOT_EQUAL);\n\tnonAssignmentOperators->push_back(&AS_GR_EQUAL);\n\tnonAssignmentOperators->push_back(&AS_GR_GR_GR);\n\tnonAssignmentOperators->push_back(&AS_GR_GR);\n\tnonAssignmentOperators->push_back(&AS_LS_EQUAL);\n\tnonAssignmentOperators->push_back(&AS_LS_LS_LS);\n\tnonAssignmentOperators->push_back(&AS_LS_LS);\n\tnonAssignmentOperators->push_back(&AS_ARROW);\n\tnonAssignmentOperators->push_back(&AS_AND);\n\tnonAssignmentOperators->push_back(&AS_OR);\n\tnonAssignmentOperators->push_back(&AS_LAMBDA);\n\n\tsort(nonAssignmentOperators->begin(), nonAssignmentOperators->end(), sortOnLength);\n}\n\n/**\n * Build the vector of header non-paren headers.\n * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp.\n * NOTE: Non-paren headers should also be included in the headers vector.\n *\n * @param nonParenHeaders       a reference to the vector to be built.\n */\nvoid ASResource::buildNonParenHeaders(vector<const string*>* nonParenHeaders, int fileType, bool beautifier)\n{\n\tnonParenHeaders->push_back(&AS_ELSE);\n\tnonParenHeaders->push_back(&AS_DO);\n\tnonParenHeaders->push_back(&AS_TRY);\n\tnonParenHeaders->push_back(&AS_CATCH);\t\t// can be paren or non-paren\n\tnonParenHeaders->push_back(&AS_CASE);\t\t// can be paren or non-paren\n\tnonParenHeaders->push_back(&AS_DEFAULT);\n\tnonParenHeaders->push_back(&AS_QFOREVER);\t// QT\n\tnonParenHeaders->push_back(&AS_FOREVER);\t// Boost\n\n\tif (fileType == C_TYPE)\n\t{\n\t\tnonParenHeaders->push_back(&_AS_TRY);\t\t// __try\n\t\tnonParenHeaders->push_back(&_AS_FINALLY);\t// __finally\n\t}\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\tnonParenHeaders->push_back(&AS_FINALLY);\n\t}\n\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\tnonParenHeaders->push_back(&AS_FINALLY);\n\t\tnonParenHeaders->push_back(&AS_GET);\n\t\tnonParenHeaders->push_back(&AS_SET);\n\t\tnonParenHeaders->push_back(&AS_ADD);\n\t\tnonParenHeaders->push_back(&AS_REMOVE);\n\t}\n\n\tif (beautifier)\n\t{\n\t\tif (fileType == C_TYPE)\n\t\t{\n\t\t\tnonParenHeaders->push_back(&AS_TEMPLATE);\n\t\t}\n\t\tif (fileType == JAVA_TYPE)\n\t\t{\n\t\t\tnonParenHeaders->push_back(&AS_STATIC);\n\t\t}\n\t}\n\tsort(nonParenHeaders->begin(), nonParenHeaders->end(), sortOnName);\n}\n\n/**\n * Build the vector of operators.\n * Used by ONLY ASFormatter.cpp\n *\n * @param operators             a reference to the vector to be built.\n */\nvoid ASResource::buildOperators(vector<const string*>* operators, int fileType)\n{\n\toperators->push_back(&AS_PLUS_ASSIGN);\n\toperators->push_back(&AS_MINUS_ASSIGN);\n\toperators->push_back(&AS_MULT_ASSIGN);\n\toperators->push_back(&AS_DIV_ASSIGN);\n\toperators->push_back(&AS_MOD_ASSIGN);\n\toperators->push_back(&AS_OR_ASSIGN);\n\toperators->push_back(&AS_AND_ASSIGN);\n\toperators->push_back(&AS_XOR_ASSIGN);\n\toperators->push_back(&AS_EQUAL);\n\toperators->push_back(&AS_PLUS_PLUS);\n\toperators->push_back(&AS_MINUS_MINUS);\n\toperators->push_back(&AS_NOT_EQUAL);\n\toperators->push_back(&AS_GR_EQUAL);\n\toperators->push_back(&AS_GR_GR_GR_ASSIGN);\n\toperators->push_back(&AS_GR_GR_ASSIGN);\n\toperators->push_back(&AS_GR_GR_GR);\n\toperators->push_back(&AS_GR_GR);\n\toperators->push_back(&AS_LS_EQUAL);\n\toperators->push_back(&AS_LS_LS_LS_ASSIGN);\n\toperators->push_back(&AS_LS_LS_ASSIGN);\n\toperators->push_back(&AS_LS_LS_LS);\n\toperators->push_back(&AS_LS_LS);\n\toperators->push_back(&AS_QUESTION_QUESTION);\n\toperators->push_back(&AS_LAMBDA);\n\toperators->push_back(&AS_ARROW);\n\toperators->push_back(&AS_AND);\n\toperators->push_back(&AS_OR);\n\toperators->push_back(&AS_SCOPE_RESOLUTION);\n\toperators->push_back(&AS_PLUS);\n\toperators->push_back(&AS_MINUS);\n\toperators->push_back(&AS_MULT);\n\toperators->push_back(&AS_DIV);\n\toperators->push_back(&AS_MOD);\n\toperators->push_back(&AS_QUESTION);\n\toperators->push_back(&AS_COLON);\n\toperators->push_back(&AS_ASSIGN);\n\toperators->push_back(&AS_LS);\n\toperators->push_back(&AS_GR);\n\toperators->push_back(&AS_NOT);\n\toperators->push_back(&AS_BIT_OR);\n\toperators->push_back(&AS_BIT_AND);\n\toperators->push_back(&AS_BIT_NOT);\n\toperators->push_back(&AS_BIT_XOR);\n\tif (fileType == C_TYPE)\n\t{\n\t\toperators->push_back(&AS_GCC_MIN_ASSIGN);\n\t\toperators->push_back(&AS_GCC_MAX_ASSIGN);\n\t}\n\tsort(operators->begin(), operators->end(), sortOnLength);\n}\n\n/**\n * Build the vector of pre-block statements.\n * Used by ONLY ASBeautifier.cpp\n * NOTE: Cannot be both a header and a preBlockStatement.\n *\n * @param preBlockStatements        a reference to the vector to be built.\n */\nvoid ASResource::buildPreBlockStatements(vector<const string*>* preBlockStatements, int fileType)\n{\n\tpreBlockStatements->push_back(&AS_CLASS);\n\tif (fileType == C_TYPE)\n\t{\n\t\tpreBlockStatements->push_back(&AS_STRUCT);\n\t\tpreBlockStatements->push_back(&AS_UNION);\n\t\tpreBlockStatements->push_back(&AS_NAMESPACE);\n\t}\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\tpreBlockStatements->push_back(&AS_INTERFACE);\n\t\tpreBlockStatements->push_back(&AS_THROWS);\n\t}\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\tpreBlockStatements->push_back(&AS_INTERFACE);\n\t\tpreBlockStatements->push_back(&AS_NAMESPACE);\n\t\tpreBlockStatements->push_back(&AS_WHERE);\n\t\tpreBlockStatements->push_back(&AS_STRUCT);\n\t}\n\tsort(preBlockStatements->begin(), preBlockStatements->end(), sortOnName);\n}\n\n/**\n * Build the vector of pre-command headers.\n * Used by BOTH ASFormatter.cpp and ASBeautifier.cpp.\n * NOTE: Cannot be both a header and a preCommandHeader.\n *\n * A preCommandHeader is in a function definition between\n * the closing paren and the opening bracket.\n * e.g. in \"void foo() const {}\", \"const\" is a preCommandHeader.\n */\nvoid ASResource::buildPreCommandHeaders(vector<const string*>* preCommandHeaders, int fileType)\n{\n\tif (fileType == C_TYPE)\n\t{\n\t\tpreCommandHeaders->push_back(&AS_CONST);\n\t\tpreCommandHeaders->push_back(&AS_VOLATILE);\n\t\tpreCommandHeaders->push_back(&AS_INTERRUPT);\n\t\tpreCommandHeaders->push_back(&AS_NOEXCEPT);\n\t\tpreCommandHeaders->push_back(&AS_OVERRIDE);\n\t\tpreCommandHeaders->push_back(&AS_SEALED);\t\t\t// Visual C only\n\t\tpreCommandHeaders->push_back(&AS_AUTORELEASEPOOL);\t// Obj-C only\n\t}\n\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\tpreCommandHeaders->push_back(&AS_THROWS);\n\t}\n\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\tpreCommandHeaders->push_back(&AS_WHERE);\n\t}\n\n\tsort(preCommandHeaders->begin(), preCommandHeaders->end(), sortOnName);\n}\n\n/**\n * Build the vector of pre-definition headers.\n * Used by ONLY ASFormatter.cpp\n * NOTE: Do NOT add 'enum' here. It is an array type bracket.\n * NOTE: Do NOT add 'extern' here. Do not want an extra indent.\n *\n * @param preDefinitionHeaders      a reference to the vector to be built.\n */\nvoid ASResource::buildPreDefinitionHeaders(vector<const string*>* preDefinitionHeaders, int fileType)\n{\n\tpreDefinitionHeaders->push_back(&AS_CLASS);\n\tif (fileType == C_TYPE)\n\t{\n\t\tpreDefinitionHeaders->push_back(&AS_STRUCT);\n\t\tpreDefinitionHeaders->push_back(&AS_UNION);\n\t\tpreDefinitionHeaders->push_back(&AS_NAMESPACE);\n\t}\n\tif (fileType == JAVA_TYPE)\n\t{\n\t\tpreDefinitionHeaders->push_back(&AS_INTERFACE);\n\t}\n\tif (fileType == SHARP_TYPE)\n\t{\n\t\tpreDefinitionHeaders->push_back(&AS_STRUCT);\n\t\tpreDefinitionHeaders->push_back(&AS_INTERFACE);\n\t\tpreDefinitionHeaders->push_back(&AS_NAMESPACE);\n\t}\n\tsort(preDefinitionHeaders->begin(), preDefinitionHeaders->end(), sortOnName);\n}\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *                             ASBase Functions\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\n// check if a specific line position contains a keyword.\nbool ASBase::findKeyword(const string &line, int i, const string &keyword) const\n{\n\tassert(isCharPotentialHeader(line, i));\n\t// check the word\n\tconst size_t keywordLength = keyword.length();\n\tconst size_t wordEnd = i + keywordLength;\n\tif (wordEnd > line.length())\n\t\treturn false;\n\tif (line.compare(i, keywordLength, keyword) != 0)\n\t\treturn false;\n\t// check that this is not part of a longer word\n\tif (wordEnd == line.length())\n\t\treturn true;\n\tif (isLegalNameChar(line[wordEnd]))\n\t\treturn false;\n\t// is not a keyword if part of a definition\n\tconst char peekChar = peekNextChar(line, wordEnd - 1);\n\tif (peekChar == ',' || peekChar == ')')\n\t\treturn false;\n\treturn true;\n}\n\n// get the current word on a line\n// index must point to the beginning of the word\nstring ASBase::getCurrentWord(const string &line, size_t index) const\n{\n\tassert(isCharPotentialHeader(line, index));\n\tsize_t lineLength = line.length();\n\tsize_t i;\n\tfor (i = index; i < lineLength; i++)\n\t{\n\t\tif (!isLegalNameChar(line[i]))\n\t\t\tbreak;\n\t}\n\treturn line.substr(index, i - index);\n}\n\n}   // end namespace astyle\n"
  },
  {
    "path": "old/3rdpart/astyle/astyle.h",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   astyle.h\n\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#ifndef ASTYLE_H\n#define ASTYLE_H\n\n#ifdef __VMS\n\t#define __USE_STD_IOSTREAM 1\n\t#include <assert>\n#else\n\t#include <cassert>\n#endif\n\n#include <cctype>\n#include <iostream>\t\t// for cout\n#include <string>\n#include <vector>\n\n#ifdef __GNUC__\n\t#include <string.h>\t\t// need both string and string.h for GCC\n#endif\n\n#ifdef _MSC_VER\n\t#pragma warning(disable: 4996)  // secure version deprecation warnings\n\t#pragma warning(disable: 4267)  // 64 bit signed/unsigned loss of data\n#endif\n\n#ifdef __BORLANDC__\n\t#pragma warn -8004\t            // variable is assigned a value that is never used\n#endif\n\n#ifdef __INTEL_COMPILER\n\t#pragma warning(disable:  383)  // value copied to temporary, reference to temporary used\n\t#pragma warning(disable:  981)  // operands are evaluated in unspecified order\n#endif\n\n#ifdef __clang__\n\t#pragma clang diagnostic ignored \"-Wshorten-64-to-32\"\n#endif\n\nnamespace astyle {\n\nusing namespace std;\n\nenum FileType { C_TYPE = 0, JAVA_TYPE = 1, SHARP_TYPE = 2 };\n\n/* The enums below are not recognized by 'vectors' in Microsoft Visual C++\n   V5 when they are part of a namespace!!!  Use Visual C++ V6 or higher.\n*/\nenum FormatStyle\n{\n\tSTYLE_NONE,\n\tSTYLE_ALLMAN,\n\tSTYLE_JAVA,\n\tSTYLE_KR,\n\tSTYLE_STROUSTRUP,\n\tSTYLE_WHITESMITH,\n\tSTYLE_VTK,\n\tSTYLE_BANNER,\n\tSTYLE_GNU,\n\tSTYLE_LINUX,\n\tSTYLE_HORSTMANN,\n\tSTYLE_1TBS,\n\tSTYLE_GOOGLE,\n\tSTYLE_PICO,\n\tSTYLE_LISP\n};\n\nenum BracketMode\n{\n\tNONE_MODE,\n\tATTACH_MODE,\n\tBREAK_MODE,\n\tLINUX_MODE,\n\tSTROUSTRUP_MODE,\n\tRUN_IN_MODE\n};\n\nenum BracketType\n{\n\tNULL_TYPE = 0,\n\tNAMESPACE_TYPE = 1,\t\t\t// also a DEFINITION_TYPE\n\tCLASS_TYPE = 2,\t\t\t\t// also a DEFINITION_TYPE\n\tSTRUCT_TYPE = 4,\t\t\t// also a DEFINITION_TYPE\n\tINTERFACE_TYPE = 8,\t\t\t// also a DEFINITION_TYPE\n\tDEFINITION_TYPE = 16,\n\tCOMMAND_TYPE = 32,\n\tARRAY_NIS_TYPE = 64,\t\t// also an ARRAY_TYPE\n\tENUM_TYPE = 128,\t\t\t// also an ARRAY_TYPE\n\tINIT_TYPE = 256,\t\t\t// also an ARRAY_TYPE\n\tARRAY_TYPE = 512,\n\tEXTERN_TYPE = 1024,\t\t\t// extern \"C\", not a command type extern\n\tSINGLE_LINE_TYPE = 2048\n};\n\nenum MinConditional\n{\n\tMINCOND_ZERO,\n\tMINCOND_ONE,\n\tMINCOND_TWO,\n\tMINCOND_ONEHALF,\n\tMINCOND_END\n};\n\nenum ObjCColonPad\n{\n\tCOLON_PAD_NO_CHANGE,\n\tCOLON_PAD_NONE,\n\tCOLON_PAD_ALL,\n\tCOLON_PAD_AFTER,\n\tCOLON_PAD_BEFORE\n};\n\nenum PointerAlign\n{\n\tPTR_ALIGN_NONE,\n\tPTR_ALIGN_TYPE,\n\tPTR_ALIGN_MIDDLE,\n\tPTR_ALIGN_NAME\n};\n\nenum ReferenceAlign\n{\n\tREF_ALIGN_NONE = PTR_ALIGN_NONE,\n\tREF_ALIGN_TYPE = PTR_ALIGN_TYPE,\n\tREF_ALIGN_MIDDLE = PTR_ALIGN_MIDDLE,\n\tREF_ALIGN_NAME = PTR_ALIGN_NAME,\n\tREF_SAME_AS_PTR\n};\n\nenum FileEncoding\n{\n\tENCODING_8BIT,\n\tUTF_16BE,\n\tUTF_16LE,     // Windows default\n\tUTF_32BE,\n\tUTF_32LE\n};\n\nenum LineEndFormat\n{\n\tLINEEND_DEFAULT,\t// Use line break that matches most of the file\n\tLINEEND_WINDOWS,\n\tLINEEND_LINUX,\n\tLINEEND_MACOLD,\n\tLINEEND_CRLF = LINEEND_WINDOWS,\n\tLINEEND_LF   = LINEEND_LINUX,\n\tLINEEND_CR   = LINEEND_MACOLD\n};\n\n//-----------------------------------------------------------------------------\n// Class ASSourceIterator\n// A pure virtual class is used by ASFormatter and ASBeautifier instead of\n// ASStreamIterator. This allows programs using AStyle as a plug-in to define\n// their own ASStreamIterator. The ASStreamIterator class must inherit\n// this class.\n//-----------------------------------------------------------------------------\n\nclass ASSourceIterator\n{\n\tpublic:\n\t\tASSourceIterator() {}\n\t\tvirtual ~ASSourceIterator() {}\n\t\tvirtual int getStreamLength() const = 0;\n\t\tvirtual bool hasMoreLines() const = 0;\n\t\tvirtual string nextLine(bool emptyLineWasDeleted = false) = 0;\n\t\tvirtual string peekNextLine() = 0;\n\t\tvirtual void peekReset() = 0;\n\t\tvirtual streamoff tellg() = 0;\n};\n\n//-----------------------------------------------------------------------------\n// Class ASResource\n//-----------------------------------------------------------------------------\n\nclass ASResource\n{\n\tpublic:\n\t\tASResource() {}\n\t\tvirtual ~ASResource() {}\n\t\tvoid buildAssignmentOperators(vector<const string*>* assignmentOperators);\n\t\tvoid buildCastOperators(vector<const string*>* castOperators);\n\t\tvoid buildHeaders(vector<const string*>* headers, int fileType, bool beautifier = false);\n\t\tvoid buildIndentableMacros(vector<const pair<const string, const string>* >* indentableMacros);\n\t\tvoid buildIndentableHeaders(vector<const string*>* indentableHeaders);\n\t\tvoid buildNonAssignmentOperators(vector<const string*>* nonAssignmentOperators);\n\t\tvoid buildNonParenHeaders(vector<const string*>* nonParenHeaders, int fileType, bool beautifier = false);\n\t\tvoid buildOperators(vector<const string*>* operators, int fileType);\n\t\tvoid buildPreBlockStatements(vector<const string*>* preBlockStatements, int fileType);\n\t\tvoid buildPreCommandHeaders(vector<const string*>* preCommandHeaders, int fileType);\n\t\tvoid buildPreDefinitionHeaders(vector<const string*>* preDefinitionHeaders, int fileType);\n\n\tpublic:\n\t\tstatic const string AS_IF, AS_ELSE;\n\t\tstatic const string AS_DO, AS_WHILE;\n\t\tstatic const string AS_FOR;\n\t\tstatic const string AS_SWITCH, AS_CASE, AS_DEFAULT;\n\t\tstatic const string AS_TRY, AS_CATCH, AS_THROW, AS_THROWS, AS_FINALLY;\n\t\tstatic const string _AS_TRY, _AS_FINALLY, _AS_EXCEPT;\n\t\tstatic const string AS_PUBLIC, AS_PROTECTED, AS_PRIVATE;\n\t\tstatic const string AS_CLASS, AS_STRUCT, AS_UNION, AS_INTERFACE, AS_NAMESPACE;\n\t\tstatic const string AS_END;\n\t\tstatic const string AS_SELECTOR;\n\t\tstatic const string AS_EXTERN, AS_ENUM;\n\t\tstatic const string AS_STATIC, AS_CONST, AS_SEALED, AS_OVERRIDE, AS_VOLATILE, AS_NEW;\n\t\tstatic const string AS_NOEXCEPT, AS_INTERRUPT, AS_AUTORELEASEPOOL;\n\t\tstatic const string AS_WHERE, AS_LET, AS_SYNCHRONIZED;\n\t\tstatic const string AS_OPERATOR, AS_TEMPLATE;\n\t\tstatic const string AS_OPEN_BRACKET, AS_CLOSE_BRACKET;\n\t\tstatic const string AS_OPEN_LINE_COMMENT, AS_OPEN_COMMENT, AS_CLOSE_COMMENT;\n\t\tstatic const string AS_BAR_DEFINE, AS_BAR_INCLUDE, AS_BAR_IF, AS_BAR_EL, AS_BAR_ENDIF;\n\t\tstatic const string AS_RETURN;\n\t\tstatic const string AS_CIN, AS_COUT, AS_CERR;\n\t\tstatic const string AS_ASSIGN, AS_PLUS_ASSIGN, AS_MINUS_ASSIGN, AS_MULT_ASSIGN;\n\t\tstatic const string AS_DIV_ASSIGN, AS_MOD_ASSIGN, AS_XOR_ASSIGN, AS_OR_ASSIGN, AS_AND_ASSIGN;\n\t\tstatic const string AS_GR_GR_ASSIGN, AS_LS_LS_ASSIGN, AS_GR_GR_GR_ASSIGN, AS_LS_LS_LS_ASSIGN;\n\t\tstatic const string AS_GCC_MIN_ASSIGN, AS_GCC_MAX_ASSIGN;\n\t\tstatic const string AS_EQUAL, AS_PLUS_PLUS, AS_MINUS_MINUS, AS_NOT_EQUAL, AS_GR_EQUAL, AS_GR_GR_GR, AS_GR_GR;\n\t\tstatic const string AS_LS_EQUAL, AS_LS_LS_LS, AS_LS_LS;\n\t\tstatic const string AS_QUESTION_QUESTION, AS_LAMBDA;\n\t\tstatic const string AS_ARROW, AS_AND, AS_OR;\n\t\tstatic const string AS_SCOPE_RESOLUTION;\n\t\tstatic const string AS_PLUS, AS_MINUS, AS_MULT, AS_DIV, AS_MOD, AS_GR, AS_LS;\n\t\tstatic const string AS_NOT, AS_BIT_XOR, AS_BIT_OR, AS_BIT_AND, AS_BIT_NOT;\n\t\tstatic const string AS_QUESTION, AS_COLON, AS_SEMICOLON, AS_COMMA;\n\t\tstatic const string AS_ASM, AS__ASM__, AS_MS_ASM, AS_MS__ASM;\n\t\tstatic const string AS_QFOREACH, AS_QFOREVER, AS_FOREVER;\n\t\tstatic const string AS_FOREACH, AS_LOCK, AS_UNSAFE, AS_FIXED;\n\t\tstatic const string AS_GET, AS_SET, AS_ADD, AS_REMOVE;\n\t\tstatic const string AS_DELEGATE, AS_UNCHECKED;\n\t\tstatic const string AS_CONST_CAST, AS_DYNAMIC_CAST, AS_REINTERPRET_CAST, AS_STATIC_CAST;\n\t\tstatic const string AS_NS_DURING, AS_NS_HANDLER;\n};  // Class ASResource\n\n//-----------------------------------------------------------------------------\n// Class ASBase\n//-----------------------------------------------------------------------------\n\nclass ASBase\n{\n\tprivate:\n\t\t// all variables should be set by the \"init\" function\n\t\tint baseFileType;      // a value from enum FileType\n\n\tprotected:\n\t\tASBase() : baseFileType(C_TYPE) { }\n\t\tvirtual ~ASBase() {}\n\n\t\t// functions definitions are at the end of ASResource.cpp\n\t\tbool findKeyword(const string &line, int i, const string &keyword) const;\n\t\tstring getCurrentWord(const string &line, size_t index) const;\n\n\tprotected:\n\t\tvoid init(int fileTypeArg) { baseFileType = fileTypeArg; }\n\t\tbool isCStyle() const { return (baseFileType == C_TYPE); }\n\t\tbool isJavaStyle() const { return (baseFileType == JAVA_TYPE); }\n\t\tbool isSharpStyle() const { return (baseFileType == SHARP_TYPE); }\n\n\t\t// check if a specific character is a digit\n\t\t// NOTE: Visual C isdigit() gives assert error if char > 256\n\t\tbool isDigit(char ch) const {\n\t\t\treturn (ch >= '0' && ch <= '9');\n\t\t}\n\n\t\t// check if a specific character can be used in a legal variable/method/class name\n\t\tbool isLegalNameChar(char ch) const {\n\t\t\tif (isWhiteSpace(ch)) return false;\n\t\t\tif ((unsigned) ch > 127) return false;\n\t\t\treturn (isalnum((unsigned char)ch)\n\t\t\t        || ch == '.' || ch == '_'\n\t\t\t        || (isJavaStyle() && ch == '$')\n\t\t\t        || (isSharpStyle() && ch == '@'));  // may be used as a prefix\n\t\t}\n\n\t\t// check if a specific character can be part of a header\n\t\tbool isCharPotentialHeader(const string &line, size_t i) const {\n\t\t\tassert(!isWhiteSpace(line[i]));\n\t\t\tchar prevCh = ' ';\n\t\t\tif (i > 0) prevCh = line[i - 1];\n\t\t\tif (!isLegalNameChar(prevCh) && isLegalNameChar(line[i]))\n\t\t\t\treturn true;\n\t\t\treturn false;\n\t\t}\n\n\t\t// check if a specific character can be part of an operator\n\t\tbool isCharPotentialOperator(char ch) const {\n\t\t\tassert(!isWhiteSpace(ch));\n\t\t\tif ((unsigned) ch > 127) return false;\n\t\t\treturn (ispunct((unsigned char)ch)\n\t\t\t        && ch != '{' && ch != '}'\n\t\t\t        && ch != '(' && ch != ')'\n\t\t\t        && ch != '[' && ch != ']'\n\t\t\t        && ch != ';' && ch != ','\n\t\t\t        && ch != '#' && ch != '\\\\'\n\t\t\t        && ch != '\\'' && ch != '\\\"');\n\t\t}\n\n\t\t// check if a specific character is a whitespace character\n\t\tbool isWhiteSpace(char ch) const { return (ch == ' ' || ch == '\\t'); }\n\n\t\t// peek at the next unread character.\n\t\tchar peekNextChar(const string &line, int i) const {\n\t\t\tchar ch = ' ';\n\t\t\tsize_t peekNum = line.find_first_not_of(\" \\t\", i + 1);\n\t\t\tif (peekNum == string::npos)\n\t\t\t\treturn ch;\n\t\t\tch = line[peekNum];\n\t\t\treturn ch;\n\t\t}\n};  // Class ASBase\n\n//-----------------------------------------------------------------------------\n// Class ASBeautifier\n//-----------------------------------------------------------------------------\n\nclass ASBeautifier : protected ASResource, protected ASBase\n{\n\tpublic:\n\t\tASBeautifier();\n\t\tvirtual ~ASBeautifier();\n\t\tvirtual void init(ASSourceIterator* iter);\n\t\tvirtual string beautify(const string &line);\n\t\tvoid setCaseIndent(bool state);\n\t\tvoid setClassIndent(bool state);\n\t\tvoid setCStyle();\n\t\tvoid setDefaultTabLength();\n\t\tvoid setEmptyLineFill(bool state);\n\t\tvoid setForceTabXIndentation(int length);\n\t\tvoid setJavaStyle();\n\t\tvoid setLabelIndent(bool state);\n\t\tvoid setMaxInStatementIndentLength(int max);\n\t\tvoid setMinConditionalIndentOption(int min);\n\t\tvoid setMinConditionalIndentLength();\n\t\tvoid setModeManuallySet(bool state);\n\t\tvoid setModifierIndent(bool state);\n\t\tvoid setNamespaceIndent(bool state);\n\t\tvoid setAlignMethodColon(bool state);\n\t\tvoid setSharpStyle();\n\t\tvoid setSpaceIndentation(int length = 4);\n\t\tvoid setSwitchIndent(bool state);\n\t\tvoid setTabIndentation(int length = 4, bool forceTabs = false);\n\t\tvoid setPreprocDefineIndent(bool state);\n\t\tvoid setPreprocConditionalIndent(bool state);\n\t\tint  getBeautifierFileType() const;\n\t\tint  getFileType() const;\n\t\tint  getIndentLength(void) const;\n\t\tint  getTabLength(void) const;\n\t\tstring getIndentString(void) const;\n\t\tstring getNextWord(const string &line, size_t currPos) const;\n\t\tbool getBracketIndent(void) const;\n\t\tbool getBlockIndent(void) const;\n\t\tbool getCaseIndent(void) const;\n\t\tbool getClassIndent(void) const;\n\t\tbool getEmptyLineFill(void) const;\n\t\tbool getForceTabIndentation(void) const;\n\t\tbool getModeManuallySet(void) const;\n\t\tbool getModifierIndent(void) const;\n\t\tbool getNamespaceIndent(void) const;\n\t\tbool getPreprocDefineIndent(void) const;\n\t\tbool getSwitchIndent(void) const;\n\n\tprotected:\n\t\tvoid deleteBeautifierVectors();\n\t\tconst string* findHeader(const string &line, int i,\n\t\t                         const vector<const string*>* possibleHeaders) const;\n\t\tconst string* findOperator(const string &line, int i,\n\t\t                           const vector<const string*>* possibleOperators) const;\n\t\tint  getNextProgramCharDistance(const string &line, int i) const;\n\t\tint  indexOf(vector<const string*> &container, const string* element) const;\n\t\tvoid setBlockIndent(bool state);\n\t\tvoid setBracketIndent(bool state);\n\t\tvoid setBracketIndentVtk(bool state);\n\t\tstring extractPreprocessorStatement(const string &line) const;\n\t\tstring trim(const string &str) const;\n\t\tstring rtrim(const string &str) const;\n\n\t\t// variables set by ASFormatter - must be updated in activeBeautifierStack\n\t\tint  inLineNumber;\n\t\tint  horstmannIndentInStatement;\n\t\tint  nonInStatementBracket;\n\t\tbool lineCommentNoBeautify;\n\t\tbool isElseHeaderIndent;\n\t\tbool isCaseHeaderCommentIndent;\n\t\tbool isNonInStatementArray;\n\t\tbool isSharpAccessor;\n\t\tbool isSharpDelegate;\n\t\tbool isInExternC;\n\t\tbool isInBeautifySQL;\n\t\tbool isInIndentableStruct;\n\t\tbool isInIndentablePreproc;\n\n\tprivate:  // functions\n\t\tASBeautifier(const ASBeautifier &copy);\n\t\tASBeautifier &operator=(ASBeautifier &);       // not to be implemented\n\n\t\tvoid adjustParsedLineIndentation(size_t iPrelim, bool isInExtraHeaderIndent);\n\t\tvoid computePreliminaryIndentation();\n\t\tvoid parseCurrentLine(const string &line);\n\t\tvoid popLastInStatementIndent();\n\t\tvoid processPreprocessor(const string &preproc, const string &line);\n\t\tvoid registerInStatementIndent(const string &line, int i, int spaceIndentCount,\n\t\t                               int tabIncrementIn, int minIndent, bool updateParenStack);\n\t\tvoid registerInStatementIndentColon(const string &line, int i, int tabIncrementIn);\n\t\tvoid initVectors();\n\t\tvoid initTempStacksContainer(vector<vector<const string*>*>* &container,\n\t\t                             vector<vector<const string*>*>* value);\n\t\tvoid clearObjCMethodDefinitionAlignment();\n\t\tvoid deleteBeautifierContainer(vector<ASBeautifier*>* &container);\n\t\tvoid deleteTempStacksContainer(vector<vector<const string*>*>* &container);\n\t\tint  adjustIndentCountForBreakElseIfComments() const;\n\t\tint  computeObjCColonAlignment(string &line, int colonAlignPosition) const;\n\t\tint  convertTabToSpaces(int i, int tabIncrementIn) const;\n\t\tint  getInStatementIndentAssign(const string &line, size_t currPos) const;\n\t\tint  getInStatementIndentComma(const string &line, size_t currPos) const;\n\t\tbool isIndentedPreprocessor(const string &line, size_t currPos) const;\n\t\tbool isLineEndComment(const string &line, int startPos) const;\n\t\tbool isPreprocessorConditionalCplusplus(const string &line) const;\n\t\tbool isInPreprocessorUnterminatedComment(const string &line);\n\t\tbool statementEndsWithComma(const string &line, int index) const;\n\t\tstring &getIndentedLineReturn(string &newLine, const string &originalLine) const;\n\t\tstring preLineWS(int lineIndentCount, int lineSpaceIndentCount) const;\n\t\ttemplate<typename T> void deleteContainer(T &container);\n\t\ttemplate<typename T> void initContainer(T &container, T value);\n\t\tvector<vector<const string*>*>* copyTempStacks(const ASBeautifier &other) const;\n\t\tpair<int, int> computePreprocessorIndent();\n\n\tprivate:  // variables\n\t\tint beautifierFileType;\n\t\tvector<const string*>* headers;\n\t\tvector<const string*>* nonParenHeaders;\n\t\tvector<const string*>* preBlockStatements;\n\t\tvector<const string*>* preCommandHeaders;\n\t\tvector<const string*>* assignmentOperators;\n\t\tvector<const string*>* nonAssignmentOperators;\n\t\tvector<const string*>* indentableHeaders;\n\n\t\tvector<ASBeautifier*>* waitingBeautifierStack;\n\t\tvector<ASBeautifier*>* activeBeautifierStack;\n\t\tvector<int>* waitingBeautifierStackLengthStack;\n\t\tvector<int>* activeBeautifierStackLengthStack;\n\t\tvector<const string*>* headerStack;\n\t\tvector<vector<const string*>* >* tempStacks;\n\t\tvector<int>* blockParenDepthStack;\n\t\tvector<bool>* blockStatementStack;\n\t\tvector<bool>* parenStatementStack;\n\t\tvector<bool>* bracketBlockStateStack;\n\t\tvector<int>* inStatementIndentStack;\n\t\tvector<int>* inStatementIndentStackSizeStack;\n\t\tvector<int>* parenIndentStack;\n\t\tvector<pair<int, int> >* preprocIndentStack;\n\n\t\tASSourceIterator* sourceIterator;\n\t\tconst string* currentHeader;\n\t\tconst string* previousLastLineHeader;\n\t\tconst string* probationHeader;\n\t\tconst string* lastLineHeader;\n\t\tstring indentString;\n\t\tstring verbatimDelimiter;\n\t\tbool isInQuote;\n\t\tbool isInVerbatimQuote;\n\t\tbool haveLineContinuationChar;\n\t\tbool isInAsm;\n\t\tbool isInAsmOneLine;\n\t\tbool isInAsmBlock;\n\t\tbool isInComment;\n\t\tbool isInPreprocessorComment;\n\t\tbool isInHorstmannComment;\n\t\tbool isInCase;\n\t\tbool isInQuestion;\n\t\tbool isInStatement;\n\t\tbool isInHeader;\n\t\tbool isInTemplate;\n\t\tbool isInDefine;\n\t\tbool isInDefineDefinition;\n\t\tbool classIndent;\n\t\tbool isIndentModeOff;\n\t\tbool isInClassHeader;\t\t\t// is in a class before the opening bracket\n\t\tbool isInClassHeaderTab;\t\t// is in an indentable class header line\n\t\tbool isInClassInitializer;\t\t// is in a class after the ':' initializer\n\t\tbool isInClass;\t\t\t\t\t// is in a class after the opening bracket\n\t\tbool isInObjCMethodDefinition;\n\t\tbool isImmediatelyPostObjCMethodDefinition;\n\t\tbool isInIndentablePreprocBlock;\n\t\tbool isInObjCInterface;\n\t\tbool isInEnum;\n\t\tbool isInEnumTypeID;\n\t\tbool isInLet;\n\t\tbool modifierIndent;\n\t\tbool switchIndent;\n\t\tbool caseIndent;\n\t\tbool namespaceIndent;\n\t\tbool bracketIndent;\n\t\tbool bracketIndentVtk;\n\t\tbool blockIndent;\n\t\tbool labelIndent;\n\t\tbool shouldIndentPreprocDefine;\n\t\tbool isInConditional;\n\t\tbool isModeManuallySet;\n\t\tbool shouldForceTabIndentation;\n\t\tbool emptyLineFill;\n\t\tbool backslashEndsPrevLine;\n\t\tbool lineOpensWithLineComment;\n\t\tbool lineOpensWithComment;\n\t\tbool lineStartsInComment;\n\t\tbool blockCommentNoIndent;\n\t\tbool blockCommentNoBeautify;\n\t\tbool previousLineProbationTab;\n\t\tbool lineBeginsWithOpenBracket;\n\t\tbool lineBeginsWithCloseBracket;\n\t\tbool lineBeginsWithComma;\n\t\tbool lineIsCommentOnly;\n\t\tbool lineIsLineCommentOnly;\n\t\tbool shouldIndentBrackettedLine;\n\t\tbool isInSwitch;\n\t\tbool foundPreCommandHeader;\n\t\tbool foundPreCommandMacro;\n\t\tbool shouldAlignMethodColon;\n\t\tbool shouldIndentPreprocConditional;\n\t\tint  indentCount;\n\t\tint  spaceIndentCount;\n\t\tint  spaceIndentObjCMethodDefinition;\n\t\tint  colonIndentObjCMethodDefinition;\n\t\tint  lineOpeningBlocksNum;\n\t\tint  lineClosingBlocksNum;\n\t\tint  fileType;\n\t\tint  minConditionalOption;\n\t\tint  minConditionalIndent;\n\t\tint  parenDepth;\n\t\tint  indentLength;\n\t\tint  tabLength;\n\t\tint  blockTabCount;\n\t\tint  maxInStatementIndent;\n\t\tint  classInitializerIndents;\n\t\tint  templateDepth;\n\t\tint  squareBracketCount;\n\t\tint  prevFinalLineSpaceIndentCount;\n\t\tint  prevFinalLineIndentCount;\n\t\tint  defineIndentCount;\n\t\tint  preprocBlockIndent;\n\t\tchar quoteChar;\n\t\tchar prevNonSpaceCh;\n\t\tchar currentNonSpaceCh;\n\t\tchar currentNonLegalCh;\n\t\tchar prevNonLegalCh;\n};  // Class ASBeautifier\n\n//-----------------------------------------------------------------------------\n// Class ASEnhancer\n//-----------------------------------------------------------------------------\n\nclass ASEnhancer : protected ASBase\n{\n\tpublic:  // functions\n\t\tASEnhancer();\n\t\tvirtual ~ASEnhancer();\n\t\tvoid init(int, int, int, bool, bool, bool, bool, bool, bool, bool,\n\t\t          vector<const pair<const string, const string>* >*);\n\t\tvoid enhance(string &line, bool isInNamespace, bool isInPreprocessor, bool isInSQL);\n\n\tprivate:  // functions\n\t\tvoid    convertForceTabIndentToSpaces(string  &line) const;\n\t\tvoid    convertSpaceIndentToForceTab(string &line) const;\n\t\tsize_t  findCaseColon(string  &line, size_t caseIndex) const;\n\t\tint     indentLine(string  &line, int indent) const;\n\t\tbool    isBeginDeclareSectionSQL(string  &line, size_t index) const;\n\t\tbool    isEndDeclareSectionSQL(string  &line, size_t index) const;\n\t\tbool    isOneLineBlockReached(string &line, int startChar) const;\n\t\tvoid    parseCurrentLine(string &line, bool isInPreprocessor, bool isInSQL);\n\t\tsize_t  processSwitchBlock(string  &line, size_t index);\n\t\tint     unindentLine(string  &line, int unindent) const;\n\n\tprivate:\n\t\t// options from command line or options file\n\t\tint  indentLength;\n\t\tint  tabLength;\n\t\tbool useTabs;\n\t\tbool forceTab;\n\t\tbool namespaceIndent;\n\t\tbool caseIndent;\n\t\tbool preprocBlockIndent;\n\t\tbool preprocDefineIndent;\n\t\tbool emptyLineFill;\n\n\t\t// parsing variables\n\t\tint  lineNumber;\n\t\tbool isInQuote;\n\t\tbool isInComment;\n\t\tchar quoteChar;\n\n\t\t// unindent variables\n\t\tint  bracketCount;\n\t\tint  switchDepth;\n\t\tint  eventPreprocDepth;\n\t\tbool lookingForCaseBracket;\n\t\tbool unindentNextLine;\n\t\tbool shouldUnindentLine;\n\t\tbool shouldUnindentComment;\n\n\t\t// struct used by ParseFormattedLine function\n\t\t// contains variables used to unindent the case blocks\n\t\tstruct switchVariables\n\t\t{\n\t\t\tint  switchBracketCount;\n\t\t\tint  unindentDepth;\n\t\t\tbool unindentCase;\n\t\t};\n\n\t\tswitchVariables sw;                      // switch variables struct\n\t\tvector<switchVariables> switchStack;     // stack vector of switch variables\n\n\t\t// event table variables\n\t\tbool nextLineIsEventIndent;             // begin event table indent is reached\n\t\tbool isInEventTable;                    // need to indent an event table\n\t\tvector<const pair<const string, const string>* >* indentableMacros;\n\n\t\t// SQL variables\n\t\tbool nextLineIsDeclareIndent;           // begin declare section indent is reached\n\t\tbool isInDeclareSection;                // need to indent a declare section\n\n};  // Class ASEnhancer\n\n//-----------------------------------------------------------------------------\n// Class ASFormatter\n//-----------------------------------------------------------------------------\n\nclass ASFormatter : public ASBeautifier\n{\n\tpublic:\t// functions\n\t\tASFormatter();\n\t\tvirtual ~ASFormatter();\n\t\tvirtual void init(ASSourceIterator* iter);\n\t\tvirtual bool hasMoreLines() const;\n\t\tvirtual string nextLine();\n\t\tLineEndFormat getLineEndFormat() const;\n\t\tbool getIsLineReady() const;\n\t\tvoid setFormattingStyle(FormatStyle style);\n\t\tvoid setAddBracketsMode(bool state);\n\t\tvoid setAddOneLineBracketsMode(bool state);\n\t\tvoid setRemoveBracketsMode(bool state);\n\t\tvoid setAttachClass(bool state);\n\t\tvoid setAttachExternC(bool state);\n\t\tvoid setAttachNamespace(bool state);\n\t\tvoid setAttachInline(bool state);\n\t\tvoid setBracketFormatMode(BracketMode mode);\n\t\tvoid setBreakAfterMode(bool state);\n\t\tvoid setBreakClosingHeaderBracketsMode(bool state);\n\t\tvoid setBreakBlocksMode(bool state);\n\t\tvoid setBreakClosingHeaderBlocksMode(bool state);\n\t\tvoid setBreakElseIfsMode(bool state);\n\t\tvoid setBreakOneLineBlocksMode(bool state);\n\t\tvoid setMethodPrefixPaddingMode(bool state);\n\t\tvoid setMethodPrefixUnPaddingMode(bool state);\n\t\tvoid setCloseTemplatesMode(bool state);\n\t\tvoid setDeleteEmptyLinesMode(bool state);\n\t\tvoid setIndentCol1CommentsMode(bool state);\n\t\tvoid setLineEndFormat(LineEndFormat fmt);\n\t\tvoid setMaxCodeLength(int max);\n\t\tvoid setObjCColonPaddingMode(ObjCColonPad mode);\n\t\tvoid setOperatorPaddingMode(bool mode);\n\t\tvoid setParensOutsidePaddingMode(bool mode);\n\t\tvoid setParensFirstPaddingMode(bool mode);\n\t\tvoid setParensInsidePaddingMode(bool mode);\n\t\tvoid setParensHeaderPaddingMode(bool mode);\n\t\tvoid setParensUnPaddingMode(bool state);\n\t\tvoid setPointerAlignment(PointerAlign alignment);\n\t\tvoid setPreprocBlockIndent(bool state);\n\t\tvoid setReferenceAlignment(ReferenceAlign alignment);\n\t\tvoid setSingleStatementsMode(bool state);\n\t\tvoid setStripCommentPrefix(bool state);\n\t\tvoid setTabSpaceConversionMode(bool state);\n\t\tsize_t getChecksumIn() const;\n\t\tsize_t getChecksumOut() const;\n\t\tint  getChecksumDiff() const;\n\t\tint  getFormatterFileType() const;\n\n\tprivate:  // functions\n\t\tASFormatter(const ASFormatter &copy);       // copy constructor not to be implemented\n\t\tASFormatter &operator=(ASFormatter &);      // assignment operator not to be implemented\n\t\ttemplate<typename T> void deleteContainer(T &container);\n\t\ttemplate<typename T> void initContainer(T &container, T value);\n\t\tchar peekNextChar() const;\n\t\tBracketType getBracketType();\n\t\tbool adjustChecksumIn(int adjustment);\n\t\tbool computeChecksumIn(const string &currentLine_);\n\t\tbool computeChecksumOut(const string &beautifiedLine);\n\t\tbool addBracketsToStatement();\n\t\tbool removeBracketsFromStatement();\n\t\tbool commentAndHeaderFollows();\n\t\tbool getNextChar();\n\t\tbool getNextLine(bool emptyLineWasDeleted = false);\n\t\tbool isArrayOperator() const;\n\t\tbool isBeforeComment() const;\n\t\tbool isBeforeAnyComment() const;\n\t\tbool isBeforeAnyLineEndComment(int startPos) const;\n\t\tbool isBeforeMultipleLineEndComments(int startPos) const;\n\t\tbool isBracketType(BracketType a, BracketType b) const;\n\t\tbool isClassInitializer() const;\n\t\tbool isClosingHeader(const string* header) const;\n\t\tbool isCurrentBracketBroken() const;\n\t\tbool isDereferenceOrAddressOf() const;\n\t\tbool isExecSQL(string &line, size_t index) const;\n\t\tbool isEmptyLine(const string &line) const;\n\t\tbool isExternC() const;\n\t\tbool isNextWordSharpNonParenHeader(int startChar) const;\n\t\tbool isNonInStatementArrayBracket() const;\n\t\tbool isOkToSplitFormattedLine();\n\t\tbool isPointerOrReference() const;\n\t\tbool isPointerOrReferenceCentered() const;\n\t\tbool isPointerOrReferenceVariable(string &word) const;\n\t\tbool isSharpStyleWithParen(const string* header) const;\n\t\tbool isStructAccessModified(string &firstLine, size_t index) const;\n\t\tbool isIndentablePreprocessorBlock(string &firstLine, size_t index);\n\t\tbool isUnaryOperator() const;\n\t\tbool isUniformInitializerBracket() const;\n\t\tbool isImmediatelyPostCast() const;\n\t\tbool isInExponent() const;\n\t\tbool isInSwitchStatement() const;\n\t\tbool isNextCharOpeningBracket(int startChar) const;\n\t\tbool isOkToBreakBlock(BracketType bracketType) const;\n\t\tbool isOperatorPaddingDisabled() const;\n\t\tbool pointerSymbolFollows() const;\n\t\tint  getCurrentLineCommentAdjustment();\n\t\tint  getNextLineCommentAdjustment();\n\t\tint  isOneLineBlockReached(string &line, int startChar) const;\n\t\tvoid adjustComments();\n\t\tvoid appendChar(char ch, bool canBreakLine);\n\t\tvoid appendCharInsideComments();\n\t\tvoid appendOperator(const string &sequence, bool canBreakLine = true);\n\t\tvoid appendSequence(const string &sequence, bool canBreakLine = true);\n\t\tvoid appendSpacePad();\n\t\tvoid appendSpaceAfter();\n\t\tvoid breakLine(bool isSplitLine = false);\n\t\tvoid buildLanguageVectors();\n\t\tvoid updateFormattedLineSplitPoints(char appendedChar);\n\t\tvoid updateFormattedLineSplitPointsOperator(const string &sequence);\n\t\tvoid checkIfTemplateOpener();\n\t\tvoid clearFormattedLineSplitPoints();\n\t\tvoid convertTabToSpaces();\n\t\tvoid deleteContainer(vector<BracketType>* &container);\n\t\tvoid formatArrayRunIn();\n\t\tvoid formatRunIn();\n\t\tvoid formatArrayBrackets(BracketType bracketType, bool isOpeningArrayBracket);\n\t\tvoid formatClosingBracket(BracketType bracketType);\n\t\tvoid formatCommentBody();\n\t\tvoid formatCommentOpener();\n\t\tvoid formatCommentCloser();\n\t\tvoid formatLineCommentBody();\n\t\tvoid formatLineCommentOpener();\n\t\tvoid formatOpeningBracket(BracketType bracketType);\n\t\tvoid formatQuoteBody();\n\t\tvoid formatQuoteOpener();\n\t\tvoid formatPointerOrReference();\n\t\tvoid formatPointerOrReferenceCast();\n\t\tvoid formatPointerOrReferenceToMiddle();\n\t\tvoid formatPointerOrReferenceToName();\n\t\tvoid formatPointerOrReferenceToType();\n\t\tvoid fixOptionVariableConflicts();\n\t\tvoid goForward(int i);\n\t\tvoid isLineBreakBeforeClosingHeader();\n\t\tvoid initContainer(vector<BracketType>* &container, vector<BracketType>* value);\n\t\tvoid initNewLine();\n\t\tvoid padObjCMethodColon();\n\t\tvoid padOperators(const string* newOperator);\n\t\tvoid padParens();\n\t\tvoid processPreprocessor();\n\t\tvoid resetEndOfStatement();\n\t\tvoid setAttachClosingBracketMode(bool state);\n\t\tvoid setBreakBlocksVariables();\n\t\tvoid stripCommentPrefix();\n\t\tvoid testForTimeToSplitFormattedLine();\n\t\tvoid trimContinuationLine();\n\t\tvoid updateFormattedLineSplitPointsPointerOrReference(size_t index);\n\t\tsize_t findFormattedLineSplitPoint() const;\n\t\tsize_t findNextChar(string &line, char searchChar, int searchStart = 0);\n\t\tconst string* checkForHeaderFollowingComment(const string &firstLine) const;\n\t\tconst string* getFollowingOperator() const;\n\t\tstring getPreviousWord(const string &line, int currPos) const;\n\t\tstring peekNextText(const string &firstLine, bool endOnEmptyLine = false, bool shouldReset = false) const;\n\n\tprivate:  // variables\n\t\tint formatterFileType;\n\t\tvector<const string*>* headers;\n\t\tvector<const string*>* nonParenHeaders;\n\t\tvector<const string*>* preDefinitionHeaders;\n\t\tvector<const string*>* preCommandHeaders;\n\t\tvector<const string*>* operators;\n\t\tvector<const string*>* assignmentOperators;\n\t\tvector<const string*>* castOperators;\n\t\tvector<const pair<const string, const string>* >* indentableMacros;\t// for ASEnhancer\n\n\t\tASSourceIterator* sourceIterator;\n\t\tASEnhancer* enhancer;\n\n\t\tvector<const string*>* preBracketHeaderStack;\n\t\tvector<BracketType>* bracketTypeStack;\n\t\tvector<int>* parenStack;\n\t\tvector<bool>* structStack;\n\t\tvector<bool>* questionMarkStack;\n\n\t\tstring currentLine;\n\t\tstring formattedLine;\n\t\tstring readyFormattedLine;\n\t\tstring verbatimDelimiter;\n\t\tconst string* currentHeader;\n\t\tconst string* previousOperator;    // used ONLY by pad-oper\n\t\tchar currentChar;\n\t\tchar previousChar;\n\t\tchar previousNonWSChar;\n\t\tchar previousCommandChar;\n\t\tchar quoteChar;\n\t\tstreamoff preprocBlockEnd;\n\t\tint  charNum;\n\t\tint  horstmannIndentChars;\n\t\tint  nextLineSpacePadNum;\n\t\tint  preprocBracketTypeStackSize;\n\t\tint  spacePadNum;\n\t\tint  tabIncrementIn;\n\t\tint  templateDepth;\n\t\tint  squareBracketCount;\n\t\tsize_t checksumIn;\n\t\tsize_t checksumOut;\n\t\tsize_t currentLineFirstBracketNum;\t// first bracket location on currentLine\n\t\tsize_t formattedLineCommentNum;     // comment location on formattedLine\n\t\tsize_t leadingSpaces;\n\t\tsize_t maxCodeLength;\n\n\t\t// possible split points\n\t\tsize_t maxSemi;\t\t\t// probably a 'for' statement\n\t\tsize_t maxAndOr;\t\t// probably an 'if' statement\n\t\tsize_t maxComma;\n\t\tsize_t maxParen;\n\t\tsize_t maxWhiteSpace;\n\t\tsize_t maxSemiPending;\n\t\tsize_t maxAndOrPending;\n\t\tsize_t maxCommaPending;\n\t\tsize_t maxParenPending;\n\t\tsize_t maxWhiteSpacePending;\n\n\t\tsize_t previousReadyFormattedLineLength;\n\t\tFormatStyle formattingStyle;\n\t\tBracketMode bracketFormatMode;\n\t\tBracketType previousBracketType;\n\t\tPointerAlign pointerAlignment;\n\t\tReferenceAlign referenceAlignment;\n\t\tObjCColonPad objCColonPadMode;\n\t\tLineEndFormat lineEnd;\n\t\tbool isVirgin;\n\t\tbool shouldPadOperators;\n\t\tbool shouldPadParensOutside;\n\t\tbool shouldPadFirstParen;\n\t\tbool shouldPadParensInside;\n\t\tbool shouldPadHeader;\n\t\tbool shouldStripCommentPrefix;\n\t\tbool shouldUnPadParens;\n\t\tbool shouldConvertTabs;\n\t\tbool shouldIndentCol1Comments;\n\t\tbool shouldIndentPreprocBlock;\n\t\tbool shouldCloseTemplates;\n\t\tbool shouldAttachExternC;\n\t\tbool shouldAttachNamespace;\n\t\tbool shouldAttachClass;\n\t\tbool shouldAttachInline;\n\t\tbool isInLineComment;\n\t\tbool isInComment;\n\t\tbool isInCommentStartLine;\n\t\tbool noTrimCommentContinuation;\n\t\tbool isInPreprocessor;\n\t\tbool isInPreprocessorBeautify;\n\t\tbool isInTemplate;\n\t\tbool doesLineStartComment;\n\t\tbool lineEndsInCommentOnly;\n\t\tbool lineIsCommentOnly;\n\t\tbool lineIsLineCommentOnly;\n\t\tbool lineIsEmpty;\n\t\tbool isImmediatelyPostCommentOnly;\n\t\tbool isImmediatelyPostEmptyLine;\n\t\tbool isInClassInitializer;\n\t\tbool isInQuote;\n\t\tbool isInVerbatimQuote;\n\t\tbool haveLineContinuationChar;\n\t\tbool isInQuoteContinuation;\n\t\tbool isHeaderInMultiStatementLine;\n\t\tbool isSpecialChar;\n\t\tbool isNonParenHeader;\n\t\tbool foundQuestionMark;\n\t\tbool foundPreDefinitionHeader;\n\t\tbool foundNamespaceHeader;\n\t\tbool foundClassHeader;\n\t\tbool foundStructHeader;\n\t\tbool foundInterfaceHeader;\n\t\tbool foundPreCommandHeader;\n\t\tbool foundPreCommandMacro;\n\t\tbool foundCastOperator;\n\t\tbool isInLineBreak;\n\t\tbool endOfAsmReached;\n\t\tbool endOfCodeReached;\n\t\tbool lineCommentNoIndent;\n\t\tbool isFormattingModeOff;\n\t\tbool isInEnum;\n\t\tbool isInExecSQL;\n\t\tbool isInAsm;\n\t\tbool isInAsmOneLine;\n\t\tbool isInAsmBlock;\n\t\tbool isLineReady;\n\t\tbool elseHeaderFollowsComments;\n\t\tbool caseHeaderFollowsComments;\n\t\tbool isPreviousBracketBlockRelated;\n\t\tbool isInPotentialCalculation;\n\t\tbool isCharImmediatelyPostComment;\n\t\tbool isPreviousCharPostComment;\n\t\tbool isCharImmediatelyPostLineComment;\n\t\tbool isCharImmediatelyPostOpenBlock;\n\t\tbool isCharImmediatelyPostCloseBlock;\n\t\tbool isCharImmediatelyPostTemplate;\n\t\tbool isCharImmediatelyPostReturn;\n\t\tbool isCharImmediatelyPostThrow;\n\t\tbool isCharImmediatelyPostOperator;\n\t\tbool isCharImmediatelyPostPointerOrReference;\n\t\tbool isInObjCMethodDefinition;\n\t\tbool isInObjCInterface;\n\t\tbool isInObjCSelector;\n\t\tbool breakCurrentOneLineBlock;\n\t\tbool shouldRemoveNextClosingBracket;\n\t\tbool isInHorstmannRunIn;\n\t\tbool currentLineBeginsWithBracket;\n\t\tbool attachClosingBracketMode;\n\t\tbool shouldBreakOneLineBlocks;\n\t\tbool shouldReparseCurrentChar;\n\t\tbool shouldBreakOneLineStatements;\n\t\tbool shouldBreakClosingHeaderBrackets;\n\t\tbool shouldBreakElseIfs;\n\t\tbool shouldBreakLineAfterLogical;\n\t\tbool shouldAddBrackets;\n\t\tbool shouldAddOneLineBrackets;\n\t\tbool shouldRemoveBrackets;\n\t\tbool shouldPadMethodColon;\n\t\tbool shouldPadMethodPrefix;\n\t\tbool shouldUnPadMethodPrefix;\n\t\tbool shouldDeleteEmptyLines;\n\t\tbool needHeaderOpeningBracket;\n\t\tbool shouldBreakLineAtNextChar;\n\t\tbool shouldKeepLineUnbroken;\n\t\tbool passedSemicolon;\n\t\tbool passedColon;\n\t\tbool isImmediatelyPostNonInStmt;\n\t\tbool isCharImmediatelyPostNonInStmt;\n\t\tbool isImmediatelyPostComment;\n\t\tbool isImmediatelyPostLineComment;\n\t\tbool isImmediatelyPostEmptyBlock;\n\t\tbool isImmediatelyPostPreprocessor;\n\t\tbool isImmediatelyPostReturn;\n\t\tbool isImmediatelyPostThrow;\n\t\tbool isImmediatelyPostOperator;\n\t\tbool isImmediatelyPostTemplate;\n\t\tbool isImmediatelyPostPointerOrReference;\n\t\tbool shouldBreakBlocks;\n\t\tbool shouldBreakClosingHeaderBlocks;\n\t\tbool isPrependPostBlockEmptyLineRequested;\n\t\tbool isAppendPostBlockEmptyLineRequested;\n\t\tbool isIndentableProprocessor;\n\t\tbool isIndentableProprocessorBlock;\n\t\tbool prependEmptyLine;\n\t\tbool appendOpeningBracket;\n\t\tbool foundClosingHeader;\n\t\tbool isInHeader;\n\t\tbool isImmediatelyPostHeader;\n\t\tbool isInCase;\n\t\tbool isFirstPreprocConditional;\n\t\tbool processedFirstConditional;\n\t\tbool isJavaStaticConstructor;\n\n\tprivate:  // inline functions\n\t\t// append the CURRENT character (curentChar) to the current formatted line.\n\t\tvoid appendCurrentChar(bool canBreakLine = true) {\n\t\t\tappendChar(currentChar, canBreakLine);\n\t\t}\n\n\t\t// check if a specific sequence exists in the current placement of the current line\n\t\tbool isSequenceReached(const char* sequence) const {\n\t\t\treturn currentLine.compare(charNum, strlen(sequence), sequence) == 0;\n\t\t}\n\n\t\t// call ASBase::findHeader for the current character\n\t\tconst string* findHeader(const vector<const string*>* headers_) {\n\t\t\treturn ASBeautifier::findHeader(currentLine, charNum, headers_);\n\t\t}\n\n\t\t// call ASBase::findOperator for the current character\n\t\tconst string* findOperator(const vector<const string*>* headers_) {\n\t\t\treturn ASBeautifier::findOperator(currentLine, charNum, headers_);\n\t\t}\n};  // Class ASFormatter\n\n\n//-----------------------------------------------------------------------------\n// astyle namespace global declarations\n//-----------------------------------------------------------------------------\n// sort comparison functions for ASResource\nbool sortOnLength(const string* a, const string* b);\nbool sortOnName(const string* a, const string* b);\n\n}   // end of astyle namespace\n\n// end of astyle namespace  --------------------------------------------------\n\n#endif // closes ASTYLE_H\n"
  },
  {
    "path": "old/3rdpart/astyle/astyle.pri",
    "content": "SOURCES += $$PWD/ASBeautifier.cpp\nSOURCES += $$PWD/ASEnhancer.cpp\nSOURCES += $$PWD/ASFormatter.cpp\nSOURCES += $$PWD/ASLocalizer.cpp\nSOURCES += $$PWD/ASResource.cpp\nSOURCES += $$PWD/astyle_main.cpp\n\nHEADERS += $$PWD/ASLocalizer.h\nHEADERS += $$PWD/astyle.h\nHEADERS += $$PWD/astyle_main.h\n\nDEFINES += ASTYLE_LIB\n\nINCLUDEPATH += $$PWD\n"
  },
  {
    "path": "old/3rdpart/astyle/astyle_main.cpp",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   astyle_main.cpp\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n/*\n    AStyle_main source file map.\n    This source file contains several classes.\n    They are arranged as follows.\n    ---------------------------------------\n    namespace astyle {\n    ASStreamIterator methods\n    ASConsole methods\n        // Windows specific\n        // Linux specific\n    ASLibrary methods\n        // Windows specific\n        // Linux specific\n    ASOptions methods\n    Utf8_16 methods\n    }   // end of astyle namespace\n    Global Area ---------------------------\n        Java Native Interface functions\n        AStyleMainUtf16 entry point\n        AStyleMain entry point\n        AStyleGetVersion entry point\n        main entry point\n    ---------------------------------------\n*/\n\n#include \"astyle_main.h\"\n\n#include <algorithm>\n#include <cstdlib>\n#include <errno.h>\n#include <fstream>\n#include <sstream>\n\n// includes for recursive getFileNames() function\n#ifdef _WIN32\n\t#undef UNICODE\t\t// use ASCII windows functions\n\t#include <windows.h>\n#else\n\t#include <dirent.h>\n\t#include <unistd.h>\n\t#include <sys/stat.h>\n\t#ifdef __VMS\n\t\t#include <unixlib.h>\n\t\t#include <rms.h>\n\t\t#include <ssdef.h>\n\t\t#include <stsdef.h>\n\t\t#include <lib$routines.h>\n\t\t#include <starlet.h>\n\t#endif /* __VMS */\n#endif\n\n#ifdef __DMC__\n\t#include <locale.h>\n#endif\n\n// turn off MinGW automatic file globbing\n// this CANNOT be in the astyle namespace\n#ifndef ASTYLE_LIB\n\tint _CRT_glob = 0;\n#endif\n\n//----------------------------------------------------------------------------\n// astyle namespace\n//----------------------------------------------------------------------------\n\nnamespace astyle {\n\n// console build variables\n#ifndef ASTYLE_LIB\n\tASConsole* g_console = NULL;     // class to encapsulate console variables\n\tostream* _err = &cerr;           // direct error messages to cerr\n\t#ifdef _WIN32\n\t\tchar g_fileSeparator = '\\\\';     // Windows file separator\n\t\tbool g_isCaseSensitive = false;  // Windows IS case sensitive\n\t#else\n\t\tchar g_fileSeparator = '/';      // Linux file separator\n\t\tbool g_isCaseSensitive = true;   // Linux IS NOT case sensitive\n\t#endif\t// _WIN32\n#endif\t// ASTYLE_LIB\n\n// java library build variables\n#ifdef ASTYLE_JNI\n\tJNIEnv*   g_env;\n\tjobject   g_obj;\n\tjmethodID g_mid;\n#endif\n\nconst char* g_version = \"2.05.1\";\n\n//-----------------------------------------------------------------------------\n// ASStreamIterator class\n// typename will be istringstream for GUI and istream otherwise\n//-----------------------------------------------------------------------------\n\ntemplate<typename T>\nASStreamIterator<T>::ASStreamIterator(T* in)\n{\n\tinStream = in;\n\tbuffer.reserve(200);\n\teolWindows = 0;\n\teolLinux = 0;\n\teolMacOld = 0;\n\toutputEOL[0] = '\\0';\n\tpeekStart = 0;\n\tprevLineDeleted = false;\n\tcheckForEmptyLine = false;\n\t// get length of stream\n\tinStream->seekg(0, inStream->end);\n\tstreamLength = inStream->tellg();\n\tinStream->seekg(0, inStream->beg);\n}\n\ntemplate<typename T>\nASStreamIterator<T>::~ASStreamIterator()\n{\n}\n\n/**\n* get the length of the input stream.\n* streamLength variable is set by the constructor.\n*\n* @return     length of the input file stream, converted to an int.\n*/\ntemplate<typename T>\nint ASStreamIterator<T>::getStreamLength() const\n{\n\treturn static_cast<int>(streamLength);\n}\n\n/**\n * read the input stream, delete any end of line characters,\n *     and build a string that contains the input line.\n *\n * @return        string containing the next input line minus any end of line characters\n */\ntemplate<typename T>\nstring ASStreamIterator<T>::nextLine(bool emptyLineWasDeleted)\n{\n\t// verify that the current position is correct\n\tassert(peekStart == 0);\n\n\t// a deleted line may be replaced if break-blocks is requested\n\t// this sets up the compare to check for a replaced empty line\n\tif (prevLineDeleted)\n\t{\n\t\tprevLineDeleted = false;\n\t\tcheckForEmptyLine = true;\n\t}\n\tif (!emptyLineWasDeleted)\n\t\tprevBuffer = buffer;\n\telse\n\t\tprevLineDeleted = true;\n\n\t// read the next record\n\tbuffer.clear();\n\tchar ch;\n\tinStream->get(ch);\n\n\twhile (!inStream->eof() && ch != '\\n' && ch != '\\r')\n\t{\n\t\tbuffer.append(1, ch);\n\t\tinStream->get(ch);\n\t}\n\n\tif (inStream->eof())\n\t{\n\t\treturn buffer;\n\t}\n\n\tint peekCh = inStream->peek();\n\n\t// find input end-of-line characters\n\tif (!inStream->eof())\n\t{\n\t\tif (ch == '\\r')         // CR+LF is windows otherwise Mac OS 9\n\t\t{\n\t\t\tif (peekCh == '\\n')\n\t\t\t{\n\t\t\t\tinStream->get();\n\t\t\t\teolWindows++;\n\t\t\t}\n\t\t\telse\n\t\t\t\teolMacOld++;\n\t\t}\n\t\telse                    // LF is Linux, allow for improbable LF/CR\n\t\t{\n\t\t\tif (peekCh == '\\r')\n\t\t\t{\n\t\t\t\tinStream->get();\n\t\t\t\teolWindows++;\n\t\t\t}\n\t\t\telse\n\t\t\t\teolLinux++;\n\t\t}\n\t}\n\telse\n\t{\n\t\tinStream->clear();\n\t}\n\n\t// set output end of line characters\n\tif (eolWindows >= eolLinux)\n\t{\n\t\tif (eolWindows >= eolMacOld)\n\t\t\tstrcpy(outputEOL, \"\\r\\n\");  // Windows (CR+LF)\n\t\telse\n\t\t\tstrcpy(outputEOL, \"\\r\");    // MacOld (CR)\n\t}\n\telse if (eolLinux >= eolMacOld)\n\t\tstrcpy(outputEOL, \"\\n\");\t\t// Linux (LF)\n\telse\n\t\tstrcpy(outputEOL, \"\\r\");\t\t// MacOld (CR)\n\n\treturn buffer;\n}\n\n// save the current position and get the next line\n// this can be called for multiple reads\n// when finished peeking you MUST call peekReset()\n// call this function from ASFormatter ONLY\ntemplate<typename T>\nstring ASStreamIterator<T>::peekNextLine()\n{\n\tassert(hasMoreLines());\n\tstring nextLine_;\n\tchar ch;\n\n\tif (peekStart == 0)\n\t\tpeekStart = inStream->tellg();\n\n\t// read the next record\n\tinStream->get(ch);\n\twhile (!inStream->eof() && ch != '\\n' && ch != '\\r')\n\t{\n\t\tnextLine_.append(1, ch);\n\t\tinStream->get(ch);\n\t}\n\n\tif (inStream->eof())\n\t{\n\t\treturn nextLine_;\n\t}\n\n\tint peekCh = inStream->peek();\n\n\t// remove end-of-line characters\n\tif (!inStream->eof())\n\t{\n\t\tif ((peekCh == '\\n' || peekCh == '\\r') && peekCh != ch)\n\t\t\tinStream->get();\n\t}\n\n\treturn nextLine_;\n}\n\n// reset current position and EOF for peekNextLine()\ntemplate<typename T>\nvoid ASStreamIterator<T>::peekReset()\n{\n\tassert(peekStart != 0);\n\tinStream->clear();\n\tinStream->seekg(peekStart);\n\tpeekStart = 0;\n}\n\n// save the last input line after input has reached EOF\ntemplate<typename T>\nvoid ASStreamIterator<T>::saveLastInputLine()\n{\n\tassert(inStream->eof());\n\tprevBuffer = buffer;\n}\n\n// return position of the get pointer\ntemplate<typename T>\nstreamoff ASStreamIterator<T>::tellg()\n{\n\treturn inStream->tellg();\n}\n\n// check for a change in line ends\ntemplate<typename T>\nbool ASStreamIterator<T>::getLineEndChange(int lineEndFormat) const\n{\n\tassert(lineEndFormat == LINEEND_DEFAULT\n\t       || lineEndFormat == LINEEND_WINDOWS\n\t       || lineEndFormat == LINEEND_LINUX\n\t       || lineEndFormat == LINEEND_MACOLD);\n\n\tbool lineEndChange = false;\n\tif (lineEndFormat == LINEEND_WINDOWS)\n\t\tlineEndChange = (eolLinux + eolMacOld != 0);\n\telse if (lineEndFormat == LINEEND_LINUX)\n\t\tlineEndChange = (eolWindows + eolMacOld != 0);\n\telse if (lineEndFormat == LINEEND_MACOLD)\n\t\tlineEndChange = (eolWindows + eolLinux != 0);\n\telse\n\t{\n\t\tif (eolWindows > 0)\n\t\t\tlineEndChange = (eolLinux + eolMacOld != 0);\n\t\telse if (eolLinux > 0)\n\t\t\tlineEndChange = (eolWindows + eolMacOld != 0);\n\t\telse if (eolMacOld > 0)\n\t\t\tlineEndChange = (eolWindows + eolLinux != 0);\n\t}\n\treturn lineEndChange;\n}\n\n//-----------------------------------------------------------------------------\n// ASConsole class\n// main function will be included only in the console build\n//-----------------------------------------------------------------------------\n\n#ifndef ASTYLE_LIB\n\n// rewrite a stringstream converting the line ends\nvoid ASConsole::convertLineEnds(ostringstream &out, int lineEnd)\n{\n\tassert(lineEnd == LINEEND_WINDOWS || lineEnd == LINEEND_LINUX || lineEnd == LINEEND_MACOLD);\n\tconst string &inStr = out.str();\t// avoids strange looking syntax\n\tstring outStr;\t\t\t\t\t\t// the converted output\n\tint inLength = inStr.length();\n\tfor (int pos = 0; pos < inLength; pos++)\n\t{\n\t\tif (inStr[pos] == '\\r')\n\t\t{\n\t\t\tif (inStr[pos + 1] == '\\n')\n\t\t\t{\n\t\t\t\t// CRLF\n\t\t\t\tif (lineEnd == LINEEND_CR)\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos];\t\t// Delete the LF\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse if (lineEnd == LINEEND_LF)\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos + 1];\t\t// Delete the CR\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos];\t\t// Do not change\n\t\t\t\t\toutStr += inStr[pos + 1];\n\t\t\t\t\tpos++;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// CR\n\t\t\t\tif (lineEnd == LINEEND_CRLF)\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos];\t\t// Insert the CR\n\t\t\t\t\toutStr += '\\n';\t\t\t\t// Insert the LF\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse if (lineEnd == LINEEND_LF)\n\t\t\t\t{\n\t\t\t\t\toutStr += '\\n';\t\t\t\t// Insert the LF\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\toutStr += inStr[pos];\t\t// Do not change\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\telse if (inStr[pos] == '\\n')\n\t\t{\n\t\t\t// LF\n\t\t\tif (lineEnd == LINEEND_CRLF)\n\t\t\t{\n\t\t\t\toutStr += '\\r';\t\t\t\t// Insert the CR\n\t\t\t\toutStr += inStr[pos];\t\t// Insert the LF\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse if (lineEnd == LINEEND_CR)\n\t\t\t{\n\t\t\t\toutStr += '\\r';\t\t\t\t// Insert the CR\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\toutStr += inStr[pos];\t\t// Do not change\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\toutStr += inStr[pos];\t\t// Write the current char\n\t\t}\n\t}\n\t// replace the stream\n\tout.str(outStr);\n}\n\nvoid ASConsole::correctMixedLineEnds(ostringstream &out)\n{\n\tLineEndFormat lineEndFormat = LINEEND_DEFAULT;\n\tif (strcmp(outputEOL, \"\\r\\n\") == 0)\n\t\tlineEndFormat = LINEEND_WINDOWS;\n\tif (strcmp(outputEOL, \"\\n\") == 0)\n\t\tlineEndFormat = LINEEND_LINUX;\n\tif (strcmp(outputEOL, \"\\r\") == 0)\n\t\tlineEndFormat = LINEEND_MACOLD;\n\tconvertLineEnds(out, lineEndFormat);\n}\n\n// check files for 16 or 32 bit encoding\n// the file must have a Byte Order Mark (BOM)\n// NOTE: some string functions don't work with NULLs (e.g. length())\nFileEncoding ASConsole::detectEncoding(const char* data, size_t dataSize) const\n{\n\tFileEncoding encoding = ENCODING_8BIT;\n\n\tif (dataSize >= 4 && memcmp(data, \"\\x00\\x00\\xFE\\xFF\", 4) == 0)\n\t\tencoding = UTF_32BE;\n\telse if (dataSize >= 4 && memcmp(data, \"\\xFF\\xFE\\x00\\x00\", 4) == 0)\n\t\tencoding = UTF_32LE;\n\telse if (dataSize >= 2 && memcmp(data, \"\\xFE\\xFF\", 2) == 0)\n\t\tencoding = UTF_16BE;\n\telse if (dataSize >= 2 && memcmp(data, \"\\xFF\\xFE\", 2) == 0)\n\t\tencoding = UTF_16LE;\n\n\treturn encoding;\n}\n\n// error exit without a message\nvoid ASConsole::error() const\n{\n\t(*_err) << _(\"\\nArtistic Style has terminated\") << endl;\n\texit(EXIT_FAILURE);\n}\n\n// error exit with a message\nvoid ASConsole::error(const char* why, const char* what) const\n{\n\t(*_err) << why << ' ' << what << endl;\n\terror();\n}\n\n/**\n * If no files have been given, use cin for input and cout for output.\n *\n * This is used to format text for text editors like TextWrangler (Mac).\n * Do NOT display any console messages when this function is used.\n */\nvoid ASConsole::formatCinToCout()\n{\n\t// Using cin.tellg() causes problems with both Windows and Linux.\n\t// The Windows problem occurs when the input is not Windows line-ends.\n\t// The tellg() will be out of sequence with the get() statements.\n\t// The Linux cin.tellg() will return -1 (invalid).\n\t// Copying the input sequentially to a stringstream before\n\t// formatting solves the problem for both.\n\tistream* inStream = &cin;\n\tstringstream outStream;\n\tchar ch;\n\tinStream->get(ch);\n\twhile (!inStream->eof())\n\t{\n\t\toutStream.put(ch);\n\t\tinStream->get(ch);\n\t}\n\tASStreamIterator<stringstream> streamIterator(&outStream);\n\t// Windows pipe or redirection always outputs Windows line-ends.\n\t// Linux pipe or redirection will output any line end.\n\tLineEndFormat lineEndFormat = formatter.getLineEndFormat();\n\tinitializeOutputEOL(lineEndFormat);\n\tformatter.init(&streamIterator);\n\n\twhile (formatter.hasMoreLines())\n\t{\n\t\tcout << formatter.nextLine();\n\t\tif (formatter.hasMoreLines())\n\t\t{\n\t\t\tsetOutputEOL(lineEndFormat, streamIterator.getOutputEOL());\n\t\t\tcout << outputEOL;\n\t\t}\n\t\telse\n\t\t{\n\t\t\t// this can happen if the file if missing a closing bracket and break-blocks is requested\n\t\t\tif (formatter.getIsLineReady())\n\t\t\t{\n\t\t\t\tsetOutputEOL(lineEndFormat, streamIterator.getOutputEOL());\n\t\t\t\tcout << outputEOL;\n\t\t\t\tcout << formatter.nextLine();\n\t\t\t}\n\t\t}\n\t}\n\tcout.flush();\n}\n\n/**\n * Open input file, format it, and close the output.\n *\n * @param fileName_     The path and name of the file to be processed.\n */\nvoid ASConsole::formatFile(const string &fileName_)\n{\n\tstringstream in;\n\tostringstream out;\n\tFileEncoding encoding = readFile(fileName_, in);\n\n\t// Unless a specific language mode has been set, set the language mode\n\t// according to the file's suffix.\n\tif (!formatter.getModeManuallySet())\n\t{\n\t\tif (stringEndsWith(fileName_, string(\".java\")))\n\t\t\tformatter.setJavaStyle();\n\t\telse if (stringEndsWith(fileName_, string(\".cs\")))\n\t\t\tformatter.setSharpStyle();\n\t\telse\n\t\t\tformatter.setCStyle();\n\t}\n\n\t// set line end format\n\tstring nextLine;\t\t\t\t// next output line\n\tfilesAreIdentical = true;\t\t// input and output files are identical\n\tLineEndFormat lineEndFormat = formatter.getLineEndFormat();\n\tinitializeOutputEOL(lineEndFormat);\n\t// do this AFTER setting the file mode\n\tASStreamIterator<stringstream> streamIterator(&in);\n\tformatter.init(&streamIterator);\n\n\t// format the file\n\twhile (formatter.hasMoreLines())\n\t{\n\t\tnextLine = formatter.nextLine();\n\t\tout << nextLine;\n\t\tlinesOut++;\n\t\tif (formatter.hasMoreLines())\n\t\t{\n\t\t\tsetOutputEOL(lineEndFormat, streamIterator.getOutputEOL());\n\t\t\tout << outputEOL;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstreamIterator.saveLastInputLine();     // to compare the last input line\n\t\t\t// this can happen if the file if missing a closing bracket and break-blocks is requested\n\t\t\tif (formatter.getIsLineReady())\n\t\t\t{\n\t\t\t\tsetOutputEOL(lineEndFormat, streamIterator.getOutputEOL());\n\t\t\t\tout << outputEOL;\n\t\t\t\tnextLine = formatter.nextLine();\n\t\t\t\tout << nextLine;\n\t\t\t\tlinesOut++;\n\t\t\t\tstreamIterator.saveLastInputLine();\n\t\t\t}\n\t\t}\n\n\t\tif (filesAreIdentical)\n\t\t{\n\t\t\tif (streamIterator.checkForEmptyLine)\n\t\t\t{\n\t\t\t\tif (nextLine.find_first_not_of(\" \\t\") != string::npos)\n\t\t\t\t\tfilesAreIdentical = false;\n\t\t\t}\n\t\t\telse if (!streamIterator.compareToInputBuffer(nextLine))\n\t\t\t\tfilesAreIdentical = false;\n\t\t\tstreamIterator.checkForEmptyLine = false;\n\t\t}\n\t}\n\t// correct for mixed line ends\n\tif (lineEndsMixed)\n\t{\n\t\tcorrectMixedLineEnds(out);\n\t\tfilesAreIdentical = false;\n\t}\n\n\t// remove targetDirectory from filename if required by print\n\tstring displayName;\n\tif (hasWildcard)\n\t\tdisplayName = fileName_.substr(targetDirectory.length() + 1);\n\telse\n\t\tdisplayName = fileName_;\n\n\t// if file has changed, write the new file\n\tif (!filesAreIdentical || streamIterator.getLineEndChange(lineEndFormat))\n\t{\n\t\tif (!isDryRun)\n\t\t\twriteFile(fileName_, encoding, out);\n\t\tprintMsg(_(\"Formatted  %s\\n\"), displayName);\n\t\tfilesFormatted++;\n\t}\n\telse\n\t{\n\t\tif (!isFormattedOnly)\n\t\t\tprintMsg(_(\"Unchanged  %s\\n\"), displayName);\n\t\tfilesUnchanged++;\n\t}\n\n\tassert(formatter.getChecksumDiff() == 0);\n}\n\n// build a vector of argv options\n// the program path argv[0] is excluded\nvector<string> ASConsole::getArgvOptions(int argc, char** argv) const\n{\n\tvector<string> argvOptions;\n\tfor (int i = 1; i < argc; i++)\n\t{\n\t\targvOptions.push_back(string(argv[i]));\n\t}\n\treturn argvOptions;\n}\n\n// for unit testing\nvector<bool> ASConsole::getExcludeHitsVector() const\n{ return excludeHitsVector; }\n\n// for unit testing\nvector<string> ASConsole::getExcludeVector() const\n{ return excludeVector; }\n\n// for unit testing\nvector<string> ASConsole::getFileName() const\n{ return fileName; }\n\n// for unit testing\nvector<string> ASConsole::getFileNameVector() const\n{ return fileNameVector; }\n\n// for unit testing\nvector<string> ASConsole::getFileOptionsVector() const\n{ return fileOptionsVector; }\n\n// for unit testing\nbool ASConsole::getFilesAreIdentical() const\n{ return filesAreIdentical; }\n\n// for unit testing\nint ASConsole::getFilesFormatted() const\n{ return filesFormatted; }\n\n// for unit testing\nbool ASConsole::getIgnoreExcludeErrors() const\n{ return ignoreExcludeErrors; }\n\n// for unit testing\nbool ASConsole::getIgnoreExcludeErrorsDisplay() const\n{ return ignoreExcludeErrorsDisplay; }\n\n// for unit testing\nbool ASConsole::getIsDryRun() const\n{ return isDryRun; }\n\n// for unit testing\nbool ASConsole::getIsFormattedOnly() const\n{ return isFormattedOnly; }\n\n// for unit testing\nstring ASConsole::getLanguageID() const\n{ return localizer.getLanguageID(); }\n\n// for unit testing\nbool ASConsole::getIsQuiet() const\n{ return isQuiet; }\n\n// for unit testing\nbool ASConsole::getIsRecursive() const\n{ return isRecursive; }\n\n// for unit testing\nbool ASConsole::getIsVerbose() const\n{ return isVerbose; }\n\n// for unit testing\nbool ASConsole::getLineEndsMixed() const\n{ return lineEndsMixed; }\n\n// for unit testing\nbool ASConsole::getNoBackup() const\n{ return noBackup; }\n\n// for unit testing\nstring ASConsole::getOptionsFileName() const\n{ return optionsFileName; }\n\n// for unit testing\nvector<string> ASConsole::getOptionsVector() const\n{ return optionsVector; }\n\n// for unit testing\nstring ASConsole::getOrigSuffix() const\n{ return origSuffix; }\n\n// for unit testing\nbool ASConsole::getPreserveDate() const\n{ return preserveDate; }\n\n// for unit testing\nvoid ASConsole::setBypassBrowserOpen(bool state)\n{ bypassBrowserOpen = state; }\n\nstring ASConsole::getParam(const string &arg, const char* op)\n{\n\treturn arg.substr(strlen(op));\n}\n\n// initialize output end of line\nvoid ASConsole::initializeOutputEOL(LineEndFormat lineEndFormat)\n{\n\tassert(lineEndFormat == LINEEND_DEFAULT\n\t       || lineEndFormat == LINEEND_WINDOWS\n\t       || lineEndFormat == LINEEND_LINUX\n\t       || lineEndFormat == LINEEND_MACOLD);\n\n\toutputEOL[0] = '\\0';\t\t// current line end\n\tprevEOL[0] = '\\0';\t\t\t// previous line end\n\tlineEndsMixed = false;\t\t// output has mixed line ends, LINEEND_DEFAULT only\n\n\tif (lineEndFormat == LINEEND_WINDOWS)\n\t\tstrcpy(outputEOL, \"\\r\\n\");\n\telse if (lineEndFormat == LINEEND_LINUX)\n\t\tstrcpy(outputEOL, \"\\n\");\n\telse if (lineEndFormat == LINEEND_MACOLD)\n\t\tstrcpy(outputEOL, \"\\r\");\n\telse\n\t\toutputEOL[0] = '\\0';\n}\n\nFileEncoding ASConsole::readFile(const string &fileName_, stringstream &in) const\n{\n\tconst int blockSize = 65536;\t// 64 KB\n\tifstream fin(fileName_.c_str(), ios::binary);\n\tif (!fin)\n\t\terror(\"Cannot open input file\", fileName_.c_str());\n\tchar* data = new(nothrow) char[blockSize];\n\tif (!data)\n\t\terror(\"Cannot allocate memory for input file\", fileName_.c_str());\n\tfin.read(data, blockSize);\n\tif (fin.bad())\n\t\terror(\"Cannot read input file\", fileName_.c_str());\n\tsize_t dataSize = static_cast<size_t>(fin.gcount());\n\tFileEncoding encoding = detectEncoding(data, dataSize);\n\tif (encoding ==  UTF_32BE || encoding ==  UTF_32LE)\n\t\terror(_(\"Cannot process UTF-32 encoding\"), fileName_.c_str());\n\tbool firstBlock = true;\n\tbool isBigEndian = (encoding == UTF_16BE);\n\twhile (dataSize)\n\t{\n\t\tif (encoding == UTF_16LE || encoding == UTF_16BE)\n\t\t{\n\t\t\t// convert utf-16 to utf-8\n\t\t\tsize_t utf8Size = utf8_16.Utf8LengthFromUtf16(data, dataSize, isBigEndian);\n\t\t\tchar* utf8Out = new(nothrow) char[utf8Size];\n\t\t\tif (!utf8Out)\n\t\t\t\terror(\"Cannot allocate memory for utf-8 conversion\", fileName_.c_str());\n\t\t\tsize_t utf8Len = utf8_16.Utf16ToUtf8(data, dataSize, isBigEndian, firstBlock, utf8Out);\n\t\t\tassert(utf8Len == utf8Size);\n\t\t\tin << string(utf8Out, utf8Len);\n\t\t\tdelete [] utf8Out;\n\t\t}\n\t\telse\n\t\t\tin << string(data, dataSize);\n\t\tfin.read(data, blockSize);\n\t\tif (fin.bad())\n\t\t\terror(\"Cannot read input file\", fileName_.c_str());\n\t\tdataSize = static_cast<size_t>(fin.gcount());\n\t\tfirstBlock = false;\n\t}\n\tfin.close();\n\tdelete [] data;\n\treturn encoding;\n}\n\nvoid ASConsole::setIgnoreExcludeErrors(bool state)\n{ ignoreExcludeErrors = state; }\n\nvoid ASConsole::setIgnoreExcludeErrorsAndDisplay(bool state)\n{ ignoreExcludeErrors = state; ignoreExcludeErrorsDisplay = state; }\n\nvoid ASConsole::setIsFormattedOnly(bool state)\n{ isFormattedOnly = state; }\n\nvoid ASConsole::setIsQuiet(bool state)\n{ isQuiet = state; }\n\nvoid ASConsole::setIsRecursive(bool state)\n{ isRecursive = state; }\n\nvoid ASConsole::setIsDryRun(bool state)\n{ isDryRun = state; }\n\nvoid ASConsole::setIsVerbose(bool state)\n{ isVerbose = state; }\n\nvoid ASConsole::setNoBackup(bool state)\n{ noBackup = state; }\n\nvoid ASConsole::setOptionsFileName(string name)\n{ optionsFileName = name; }\n\nvoid ASConsole::setOrigSuffix(string suffix)\n{ origSuffix = suffix; }\n\nvoid ASConsole::setPreserveDate(bool state)\n{ preserveDate = state; }\n\n// set outputEOL variable\nvoid ASConsole::setOutputEOL(LineEndFormat lineEndFormat, const char* currentEOL)\n{\n\tif (lineEndFormat == LINEEND_DEFAULT)\n\t{\n\t\tstrcpy(outputEOL, currentEOL);\n\t\tif (strlen(prevEOL) == 0)\n\t\t\tstrcpy(prevEOL, outputEOL);\n\t\tif (strcmp(prevEOL, outputEOL) != 0)\n\t\t{\n\t\t\tlineEndsMixed = true;\n\t\t\tfilesAreIdentical = false;\n\t\t\tstrcpy(prevEOL, outputEOL);\n\t\t}\n\t}\n\telse\n\t{\n\t\tstrcpy(prevEOL, currentEOL);\n\t\tif (strcmp(prevEOL, outputEOL) != 0)\n\t\t\tfilesAreIdentical = false;\n\t}\n}\n\n#ifdef _WIN32  // Windows specific\n\n/**\n * WINDOWS function to display the last system error.\n */\nvoid ASConsole::displayLastError()\n{\n\tLPSTR msgBuf;\n\tDWORD lastError = GetLastError();\n\tFormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,\n\t              NULL,\n\t              lastError,\n\t              MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),  // Default language\n\t              (LPSTR) &msgBuf,\n\t              0,\n\t              NULL\n\t             );\n\t// Display the string.\n\t(*_err) << \"Error (\" << lastError << \") \" << msgBuf << endl;\n\t// Free the buffer.\n\tLocalFree(msgBuf);\n}\n\n/**\n * WINDOWS function to get the current directory.\n * NOTE: getenv(\"CD\") does not work for Windows Vista.\n *        The Windows function GetCurrentDirectory is used instead.\n *\n * @return              The path of the current directory\n */\nstring ASConsole::getCurrentDirectory(const string &fileName_) const\n{\n\tchar currdir[MAX_PATH];\n\tcurrdir[0] = '\\0';\n\tif (!GetCurrentDirectory(sizeof(currdir), currdir))\n\t\terror(\"Cannot find file\", fileName_.c_str());\n\treturn string(currdir);\n}\n\n/**\n * WINDOWS function to resolve wildcards and recurse into sub directories.\n * The fileName vector is filled with the path and names of files to process.\n *\n * @param directory     The path of the directory to be processed.\n * @param wildcard      The wildcard to be processed (e.g. *.cpp).\n */\nvoid ASConsole::getFileNames(const string &directory, const string &wildcard)\n{\n\tvector<string> subDirectory;    // sub directories of directory\n\tWIN32_FIND_DATA findFileData;   // for FindFirstFile and FindNextFile\n\n\t// Find the first file in the directory\n\t// Find will get at least \".\" and \"..\".\n\tstring firstFile = directory + \"\\\\*\";\n\tHANDLE hFind = FindFirstFile(firstFile.c_str(), &findFileData);\n\n\tif (hFind == INVALID_HANDLE_VALUE)\n\t{\n\t\t// Error (3) The system cannot find the path specified.\n\t\t// Error (123) The filename, directory name, or volume label syntax is incorrect.\n\t\t// ::FindClose(hFind); before exiting\n\t\tdisplayLastError();\n\t\terror(_(\"Cannot open directory\"), directory.c_str());\n\t}\n\n\t// save files and sub directories\n\tdo\n\t{\n\t\t// skip hidden or read only\n\t\tif (findFileData.cFileName[0] == '.'\n\t\t        || (findFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN)\n\t\t        || (findFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY))\n\t\t\tcontinue;\n\n\t\t// is this a sub directory\n\t\tif (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)\n\t\t{\n\t\t\tif (!isRecursive)\n\t\t\t\tcontinue;\n\t\t\t// if a sub directory and recursive, save sub directory\n\t\t\tstring subDirectoryPath = directory + g_fileSeparator + findFileData.cFileName;\n\t\t\tif (isPathExclued(subDirectoryPath))\n\t\t\t\tprintMsg(_(\"Exclude  %s\\n\"), subDirectoryPath.substr(mainDirectoryLength));\n\t\t\telse\n\t\t\t\tsubDirectory.push_back(subDirectoryPath);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// save the file name\n\t\tstring filePathName = directory + g_fileSeparator + findFileData.cFileName;\n\t\t// check exclude before wildcmp to avoid \"unmatched exclude\" error\n\t\tbool isExcluded = isPathExclued(filePathName);\n\t\t// save file name if wildcard match\n\t\tif (wildcmp(wildcard.c_str(), findFileData.cFileName))\n\t\t{\n\t\t\tif (isExcluded)\n\t\t\t\tprintMsg(_(\"Exclude  %s\\n\"), filePathName.substr(mainDirectoryLength));\n\t\t\telse\n\t\t\t\tfileName.push_back(filePathName);\n\t\t}\n\t}\n\twhile (FindNextFile(hFind, &findFileData) != 0);\n\n\t// check for processing error\n\t::FindClose(hFind);\n\tDWORD dwError = GetLastError();\n\tif (dwError != ERROR_NO_MORE_FILES)\n\t\terror(\"Error processing directory\", directory.c_str());\n\n\t// recurse into sub directories\n\t// if not doing recursive subDirectory is empty\n\tfor (unsigned i = 0; i < subDirectory.size(); i++)\n\t\tgetFileNames(subDirectory[i], wildcard);\n\n\treturn;\n}\n\n/**\n * WINDOWS function to format a number according to the current locale.\n * This formats positive integers only, no float.\n *\n * @param num\t\tThe number to be formatted.\n * @param lcid\t\tThe LCID of the locale to be used for testing.\n * @return\t\t\tThe formatted number.\n */\nstring ASConsole::getNumberFormat(int num, size_t lcid) const\n{\n#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__BORLANDC__) || defined(__GNUC__)\n\t// Compilers that don't support C++ locales should still support this assert.\n\t// The C locale should be set but not the C++.\n\t// This function is not necessary if the C++ locale is set.\n\t// The locale().name() return value is not portable to all compilers.\n\tassert(locale().name() == \"C\");\n#endif\n\t// convert num to a string\n\tstringstream alphaNum;\n\talphaNum << num;\n\tstring number = alphaNum.str();\n\tif (useAscii)\n\t\treturn number;\n\n\t// format the number using the Windows API\n\tif (lcid == 0)\n\t\tlcid = LOCALE_USER_DEFAULT;\n\tint outSize = ::GetNumberFormat(lcid, 0, number.c_str(), NULL, NULL, 0);\n\tchar* outBuf = new(nothrow) char[outSize];\n\tif (outBuf == NULL)\n\t\treturn number;\n\t::GetNumberFormat(lcid, 0, number.c_str(), NULL, outBuf, outSize);\n\tstring formattedNum(outBuf);\n\tdelete [] outBuf;\n\t// remove the decimal\n\tint decSize = ::GetLocaleInfo(lcid, LOCALE_SDECIMAL, NULL, 0);\n\tchar* decBuf = new(nothrow) char[decSize];\n\tif (decBuf == NULL)\n\t\treturn number;\n\t::GetLocaleInfo(lcid, LOCALE_SDECIMAL, decBuf, decSize);\n\tsize_t i = formattedNum.rfind(decBuf);\n\tdelete [] decBuf;\n\tif (i != string::npos)\n\t\tformattedNum.erase(i);\n\tif (!formattedNum.length())\n\t\tformattedNum = \"0\";\n\treturn formattedNum;\n}\n\n/**\n * WINDOWS function to open a HTML file in the default browser.\n */\nvoid ASConsole::launchDefaultBrowser(const char* filePathIn /*NULL*/) const\n{\n\tstruct stat statbuf;\n\tconst char* envPaths[] = {  \"PROGRAMFILES(X86)\", \"PROGRAMFILES\" };\n\tsize_t pathsLen = sizeof(envPaths) / sizeof(envPaths[0]);\n\tstring htmlDefaultPath;\n\tfor (size_t i = 0; i < pathsLen; i++)\n\t{\n\t\tconst char* envPath = getenv(envPaths[i]);\n\t\tif (envPath == NULL)\n\t\t\tcontinue;\n\t\thtmlDefaultPath = envPath;\n\t\tif (htmlDefaultPath.length() > 0\n\t\t        && htmlDefaultPath[htmlDefaultPath.length() - 1] == g_fileSeparator)\n\t\t\thtmlDefaultPath.erase(htmlDefaultPath.length() - 1);\n\t\thtmlDefaultPath.append(\"\\\\AStyle\\\\doc\");\n\t\tif (stat(htmlDefaultPath.c_str(), &statbuf) == 0 && statbuf.st_mode & S_IFDIR)\n\t\t\tbreak;\n\t}\n\thtmlDefaultPath.append(\"\\\\\");\n\n\t// build file path\n\tstring htmlFilePath;\n\tif (filePathIn == NULL)\n\t\thtmlFilePath = htmlDefaultPath + \"astyle.html\";\n\telse\n\t{\n\t\tif (strpbrk(filePathIn, \"\\\\/\") == NULL)\n\t\t\thtmlFilePath = htmlDefaultPath + filePathIn;\n\t\telse\n\t\t\thtmlFilePath = filePathIn;\n\t}\n\tstandardizePath(htmlFilePath);\n\tif (stat(htmlFilePath.c_str(), &statbuf) != 0 || !(statbuf.st_mode & S_IFREG))\n\t{\n\t\tprintf(_(\"Cannot open HTML file %s\\n\"), htmlFilePath.c_str());\n\t\treturn;\n\t}\n\n\tSHELLEXECUTEINFO sei = { sizeof(sei), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };\n\tsei.fMask = SEE_MASK_FLAG_NO_UI;\n\tsei.lpVerb = \"open\";\n\tsei.lpFile = htmlFilePath.c_str();\n\tsei.nShow = SW_SHOWNORMAL;\n\n\t// browser open will be bypassed in test programs\n\tprintf(_(\"Opening HTML documentation %s\\n\"), htmlFilePath.c_str());\n\tif (!bypassBrowserOpen)\n\t{\n\t\tint ret = ShellExecuteEx(&sei);\n\t\tif (!ret)\n\t\t\terror(_(\"Command execute failure\"), htmlFilePath.c_str());\n\t}\n}\n\n#else  // Linux specific\n\n/**\n * LINUX function to get the current directory.\n * This is done if the fileName does not contain a path.\n * It is probably from an editor sending a single file.\n *\n * @param fileName_     The filename is used only for  the error message.\n * @return              The path of the current directory\n */\nstring ASConsole::getCurrentDirectory(const string &fileName_) const\n{\n\tchar* currdir = getenv(\"PWD\");\n\tif (currdir == NULL)\n\t\terror(\"Cannot find file\", fileName_.c_str());\n\treturn string(currdir);\n}\n\n/**\n * LINUX function to resolve wildcards and recurse into sub directories.\n * The fileName vector is filled with the path and names of files to process.\n *\n * @param directory     The path of the directory to be processed.\n * @param wildcard      The wildcard to be processed (e.g. *.cpp).\n */\nvoid ASConsole::getFileNames(const string &directory, const string &wildcard)\n{\n\tstruct dirent* entry;           // entry from readdir()\n\tstruct stat statbuf;            // entry from stat()\n\tvector<string> subDirectory;    // sub directories of this directory\n\n\t// errno is defined in <errno.h> and is set for errors in opendir, readdir, or stat\n\terrno = 0;\n\n\tDIR* dp = opendir(directory.c_str());\n\tif (dp == NULL)\n\t\terror(_(\"Cannot open directory\"), directory.c_str());\n\n\t// save the first fileName entry for this recursion\n\tconst unsigned firstEntry = fileName.size();\n\n\t// save files and sub directories\n\twhile ((entry = readdir(dp)) != NULL)\n\t{\n\t\t// get file status\n\t\tstring entryFilepath = directory + g_fileSeparator + entry->d_name;\n\t\tif (stat(entryFilepath.c_str(), &statbuf) != 0)\n\t\t{\n\t\t\tif (errno == EOVERFLOW)         // file over 2 GB is OK\n\t\t\t{\n\t\t\t\terrno = 0;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tperror(\"errno message\");\n\t\t\terror(\"Error getting file status in directory\", directory.c_str());\n\t\t}\n\t\t// skip hidden or read only\n\t\tif (entry->d_name[0] == '.' || !(statbuf.st_mode & S_IWUSR))\n\t\t\tcontinue;\n\t\t// if a sub directory and recursive, save sub directory\n\t\tif (S_ISDIR(statbuf.st_mode) && isRecursive)\n\t\t{\n\t\t\tif (isPathExclued(entryFilepath))\n\t\t\t\tprintMsg(_(\"Exclude  %s\\n\"), entryFilepath.substr(mainDirectoryLength));\n\t\t\telse\n\t\t\t\tsubDirectory.push_back(entryFilepath);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// if a file, save file name\n\t\tif (S_ISREG(statbuf.st_mode))\n\t\t{\n\t\t\t// check exclude before wildcmp to avoid \"unmatched exclude\" error\n\t\t\tbool isExcluded = isPathExclued(entryFilepath);\n\t\t\t// save file name if wildcard match\n\t\t\tif (wildcmp(wildcard.c_str(), entry->d_name))\n\t\t\t{\n\t\t\t\tif (isExcluded)\n\t\t\t\t\tprintMsg(_(\"Exclude  %s\\n\"), entryFilepath.substr(mainDirectoryLength));\n\t\t\t\telse\n\t\t\t\t\tfileName.push_back(entryFilepath);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (closedir(dp) != 0)\n\t{\n\t\tperror(\"errno message\");\n\t\terror(\"Error reading directory\", directory.c_str());\n\t}\n\n\t// sort the current entries for fileName\n\tif (firstEntry < fileName.size())\n\t\tsort(&fileName[firstEntry], &fileName[fileName.size()]);\n\n\t// recurse into sub directories\n\t// if not doing recursive, subDirectory is empty\n\tif (subDirectory.size() > 1)\n\t\tsort(subDirectory.begin(), subDirectory.end());\n\tfor (unsigned i = 0; i < subDirectory.size(); i++)\n\t{\n\t\tgetFileNames(subDirectory[i], wildcard);\n\t}\n\n\treturn;\n}\n\n/**\n * LINUX function to get locale information and call getNumberFormat.\n * This formats positive integers only, no float.\n *\n * @param num\t\tThe number to be formatted.\n *                  size_t is for compatibility with the Windows function.\n * @return\t\t\tThe formatted number.\n */\nstring ASConsole::getNumberFormat(int num, size_t) const\n{\n#if defined(_MSC_VER) || defined(__MINGW32__) || defined(__BORLANDC__) || defined(__GNUC__)\n\t// Compilers that don't support C++ locales should still support this assert.\n\t// The C locale should be set but not the C++.\n\t// This function is not necessary if the C++ locale is set.\n\t// The locale().name() return value is not portable to all compilers.\n\tassert(locale().name() == \"C\");\n#endif\n\n\t// get the locale info\n\tstruct lconv* lc;\n\tlc = localeconv();\n\n\t// format the number\n\treturn getNumberFormat(num, lc->grouping, lc->thousands_sep);\n}\n\n/**\n * LINUX function to format a number according to the current locale.\n * This formats positive integers only, no float.\n *\n * @param num\t\t\tThe number to be formatted.\n * @param groupingArg   The grouping string from the locale.\n * @param  separator\tThe thousands group separator from the locale.\n * @return\t\t\t\tThe formatted number.\n */\nstring ASConsole::getNumberFormat(int num, const char* groupingArg, const char* separator) const\n{\n\t// convert num to a string\n\tstringstream alphaNum;\n\talphaNum << num;\n\tstring number = alphaNum.str();\n\t// format the number from right to left\n\tstring formattedNum;\n\tsize_t ig = 0;\t// grouping index\n\tint grouping = groupingArg[ig];\n\tint i = number.length();\n\t// check for no grouping\n\tif (grouping == 0)\n\t\tgrouping = number.length();\n\twhile (i > 0)\n\t{\n\t\t// extract a group of numbers\n\t\tstring group;\n\t\tif (i < grouping)\n\t\t\tgroup = number;\n\t\telse\n\t\t\tgroup = number.substr(i - grouping);\n\t\t// update formatted number\n\t\tformattedNum.insert(0, group);\n\t\ti -= grouping;\n\t\tif (i < 0)\n\t\t\ti = 0;\n\t\tif (i > 0)\n\t\t\tformattedNum.insert(0, separator);\n\t\tnumber.erase(i);\n\t\t// update grouping\n\t\tif (groupingArg[ig] != '\\0'\n\t\t        && groupingArg[ig + 1] != '\\0')\n\t\t\tgrouping = groupingArg[++ig];\n\t}\n\treturn formattedNum;\n}\n\n/**\n * LINUX function to open a HTML file in the default browser.\n * Use xdg-open from freedesktop.org cross-desktop compatibility suite xdg-utils.\n * see http://portland.freedesktop.org/wiki/\n * This is installed on most modern distributions.\n */\nvoid ASConsole::launchDefaultBrowser(const char* filePathIn /*NULL*/) const\n{\n\tstruct stat statbuf;\n\tstring htmlDefaultPath = \"/usr/share/doc/astyle/html/\";\n\tstring htmlDefaultFile = \"astyle.html\";\n\n\t// build file path\n\tstring htmlFilePath;\n\tif (filePathIn == NULL)\n\t\thtmlFilePath = htmlDefaultPath + htmlDefaultFile;\n\telse\n\t{\n\t\tif (strpbrk(filePathIn, \"\\\\/\") == NULL)\n\t\t\thtmlFilePath = htmlDefaultPath + filePathIn;\n\t\telse\n\t\t\thtmlFilePath = filePathIn;\n\t}\n\tstandardizePath(htmlFilePath);\n\tif (stat(htmlFilePath.c_str(), &statbuf) != 0 || !(statbuf.st_mode & S_IFREG))\n\t{\n\t\tprintf(_(\"Cannot open HTML file %s\\n\"), htmlFilePath.c_str());\n\t\treturn;\n\t}\n\n\t// get search paths\n\tconst char* envPaths = getenv(\"PATH\");\n\tif (envPaths == NULL)\n\t\tenvPaths = \"?\";\n\tsize_t envlen = strlen(envPaths);\n\tchar* paths = new char[envlen + 1];\n\tstrcpy(paths, envPaths);\n\t// find xdg-open (usually in /usr/bin)\n\t// Mac uses open instead\n#ifdef __APPLE__\n\tconst char* FILE_OPEN = \"open\";\n#else\n\tconst char* FILE_OPEN = \"xdg-open\";\n#endif\n\tstring searchPath;\n\tchar* searchDir = strtok(paths, \":\");\n\twhile (searchDir != NULL)\n\t{\n\t\tsearchPath = searchDir;\n\t\tif (searchPath.length() > 0\n\t\t        && searchPath[searchPath.length() - 1] != g_fileSeparator)\n\t\t\tsearchPath.append(string(1, g_fileSeparator));\n\t\tsearchPath.append(FILE_OPEN);\n\t\tif (stat(searchPath.c_str(), &statbuf) == 0 && (statbuf.st_mode & S_IFREG))\n\t\t\tbreak;\n\t\tsearchDir = strtok(NULL, \":\");\n\t}\n\tdelete[] paths;\n\tif (searchDir == NULL)\n\t\terror(_(\"Command is not installed\"), FILE_OPEN);\n\n\t// browser open will be bypassed in test programs\n\tprintf(_(\"Opening HTML documentation %s\\n\"), htmlFilePath.c_str());\n\tif (!bypassBrowserOpen)\n\t{\n\t\texeclp(FILE_OPEN, FILE_OPEN, htmlFilePath.c_str(), NULL);\n\t\t// execlp will NOT return if successful\n\t\terror(_(\"Command execute failure\"), FILE_OPEN);\n\t}\n}\n\n#endif  // _WIN32\n\n// get individual file names from the command-line file path\nvoid ASConsole::getFilePaths(string &filePath)\n{\n\tfileName.clear();\n\ttargetDirectory = string();\n\ttargetFilename = string();\n\n\t// separate directory and file name\n\tsize_t separator = filePath.find_last_of(g_fileSeparator);\n\tif (separator == string::npos)\n\t{\n\t\t// if no directory is present, use the currently active directory\n\t\ttargetDirectory = getCurrentDirectory(filePath);\n\t\ttargetFilename  = filePath;\n\t\tmainDirectoryLength = targetDirectory.length() + 1;    // +1 includes trailing separator\n\t}\n\telse\n\t{\n\t\ttargetDirectory = filePath.substr(0, separator);\n\t\ttargetFilename  = filePath.substr(separator + 1);\n\t\tmainDirectoryLength = targetDirectory.length() + 1;    // +1 includes trailing separator\n\t}\n\n\tif (targetFilename.length() == 0)\n\t{\n\t\tfprintf(stderr, _(\"Missing filename in %s\\n\"), filePath.c_str());\n\t\terror();\n\t}\n\n\t// check filename for wildcards\n\thasWildcard = false;\n\tif (targetFilename.find_first_of(\"*?\") != string::npos)\n\t\thasWildcard = true;\n\n\t// clear exclude hits vector\n\tfor (size_t ix = 0; ix < excludeHitsVector.size(); ix++)\n\t\texcludeHitsVector[ix] = false;\n\n\t// If the filename is not quoted on Linux, bash will replace the\n\t// wildcard instead of passing it to the program.\n\tif (isRecursive && !hasWildcard)\n\t{\n\t\tfprintf(stderr, \"%s\\n\", _(\"Recursive option with no wildcard\"));\n#ifndef _WIN32\n\t\tfprintf(stderr, \"%s\\n\", _(\"Did you intend quote the filename\"));\n#endif\n\t\terror();\n\t}\n\n\t// display directory name for wildcard processing\n\tif (hasWildcard)\n\t{\n\t\tprintSeparatingLine();\n\t\tprintMsg(_(\"Directory  %s\\n\"), targetDirectory + g_fileSeparator + targetFilename);\n\t}\n\n\t// create a vector of paths and file names to process\n\tif (hasWildcard || isRecursive)\n\t\tgetFileNames(targetDirectory, targetFilename);\n\telse\n\t{\n\t\t// verify a single file is not a directory (needed on Linux)\n\t\tstring entryFilepath = targetDirectory + g_fileSeparator + targetFilename;\n\t\tstruct stat statbuf;\n\t\tif (stat(entryFilepath.c_str(), &statbuf) == 0 && (statbuf.st_mode & S_IFREG))\n\t\t\tfileName.push_back(entryFilepath);\n\t}\n\n\t// check for unprocessed excludes\n\tbool excludeErr = false;\n\tfor (size_t ix = 0; ix < excludeHitsVector.size(); ix++)\n\t{\n\t\tif (excludeHitsVector[ix] == false)\n\t\t{\n\t\t\texcludeErr = true;\n\t\t\tif (!ignoreExcludeErrorsDisplay)\n\t\t\t{\n\t\t\t\tif (ignoreExcludeErrors)\n\t\t\t\t\tprintMsg(_(\"Exclude (unmatched)  %s\\n\"), excludeVector[ix]);\n\t\t\t\telse\n\t\t\t\t\tfprintf(stderr, _(\"Exclude (unmatched)  %s\\n\"), excludeVector[ix].c_str());\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (!ignoreExcludeErrors)\n\t\t\t\t\tfprintf(stderr, _(\"Exclude (unmatched)  %s\\n\"), excludeVector[ix].c_str());\n\t\t\t}\n\t\t}\n\t}\n\n\tif (excludeErr && !ignoreExcludeErrors)\n\t{\n\t\tif (hasWildcard && !isRecursive)\n\t\t\tfprintf(stderr, \"%s\\n\", _(\"Did you intend to use --recursive\"));\n\t\terror();\n\t}\n\n\t// check if files were found (probably an input error if not)\n\tif (fileName.empty())\n\t{\n\t\tfprintf(stderr, _(\"No file to process %s\\n\"), filePath.c_str());\n\t\tif (hasWildcard && !isRecursive)\n\t\t\tfprintf(stderr, \"%s\\n\", _(\"Did you intend to use --recursive\"));\n\t\terror();\n\t}\n\n\tif (hasWildcard)\n\t\tprintSeparatingLine();\n}\n\nbool ASConsole::fileNameVectorIsEmpty() const\n{\n\treturn fileNameVector.empty();\n}\n\nbool ASConsole::isOption(const string &arg, const char* op)\n{\n\treturn arg.compare(op) == 0;\n}\n\nbool ASConsole::isOption(const string &arg, const char* a, const char* b)\n{\n\treturn (isOption(arg, a) || isOption(arg, b));\n}\n\nbool ASConsole::isParamOption(const string &arg, const char* option)\n{\n\tbool retVal = arg.compare(0, strlen(option), option) == 0;\n\t// if comparing for short option, 2nd char of arg must be numeric\n\tif (retVal && strlen(option) == 1 && arg.length() > 1)\n\t\tif (!isdigit((unsigned char)arg[1]))\n\t\t\tretVal = false;\n\treturn retVal;\n}\n\n// compare a path to the exclude vector\n// used for both directories and filenames\n// updates the g_excludeHitsVector\n// return true if a match\nbool ASConsole::isPathExclued(const string &subPath)\n{\n\tbool retVal = false;\n\n\t// read the exclude vector checking for a match\n\tfor (size_t i = 0; i < excludeVector.size(); i++)\n\t{\n\t\tstring exclude = excludeVector[i];\n\n\t\tif (subPath.length() < exclude.length())\n\t\t\tcontinue;\n\n\t\tsize_t compareStart = subPath.length() - exclude.length();\n\t\t// subPath compare must start with a directory name\n\t\tif (compareStart > 0)\n\t\t{\n\t\t\tchar lastPathChar = subPath[compareStart - 1];\n\t\t\tif (lastPathChar != g_fileSeparator)\n\t\t\t\tcontinue;\n\t\t}\n\n\t\tstring compare = subPath.substr(compareStart);\n\t\tif (!g_isCaseSensitive)\n\t\t{\n\t\t\t// make it case insensitive for Windows\n\t\t\tfor (size_t j = 0; j < compare.length(); j++)\n\t\t\t\tcompare[j] = (char)tolower(compare[j]);\n\t\t\tfor (size_t j = 0; j < exclude.length(); j++)\n\t\t\t\texclude[j] = (char)tolower(exclude[j]);\n\t\t}\n\t\t// compare sub directory to exclude data - must check them all\n\t\tif (compare == exclude)\n\t\t{\n\t\t\texcludeHitsVector[i] = true;\n\t\t\tretVal = true;\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn retVal;\n}\n\nvoid ASConsole::printHelp() const\n{\n\tcout << endl;\n\tcout << \"                     Artistic Style \" << g_version << endl;\n\tcout << \"                     Maintained by: Jim Pattee\\n\";\n\tcout << \"                     Original Author: Tal Davidson\\n\";\n\tcout << endl;\n\tcout << \"Usage:\\n\";\n\tcout << \"------\\n\";\n\tcout << \"            astyle [OPTIONS] File1 File2 File3 [...]\\n\";\n\tcout << endl;\n\tcout << \"            astyle [OPTIONS] < Original > Beautified\\n\";\n\tcout << endl;\n\tcout << \"    When indenting a specific file, the resulting indented file RETAINS\\n\";\n\tcout << \"    the original file-name. The original pre-indented file is renamed,\\n\";\n\tcout << \"    with a suffix of \\'.orig\\' added to the original filename.\\n\";\n\tcout << endl;\n\tcout << \"    Wildcards (* and ?) may be used in the filename.\\n\";\n\tcout << \"    A \\'recursive\\' option can process directories recursively.\\n\";\n\tcout << endl;\n\tcout << \"    By default, astyle is set up to indent with four spaces per indent,\\n\";\n\tcout << \"    a maximal indentation of 40 spaces inside continuous statements,\\n\";\n\tcout << \"    a minimum indentation of eight spaces inside conditional statements,\\n\";\n\tcout << \"    and NO formatting options.\\n\";\n\tcout << endl;\n\tcout << \"Options:\\n\";\n\tcout << \"--------\\n\";\n\tcout << \"    This  program  follows  the  usual  GNU  command line syntax.\\n\";\n\tcout << \"    Long options (starting with '--') must be written one at a time.\\n\";\n\tcout << \"    Short options (starting with '-') may be appended together.\\n\";\n\tcout << \"    Thus, -bps4 is the same as -b -p -s4.\\n\";\n\tcout << endl;\n\tcout << \"Options File:\\n\";\n\tcout << \"-------------\\n\";\n\tcout << \"    Artistic Style looks for a default options file in the\\n\";\n\tcout << \"    following order:\\n\";\n\tcout << \"    1. The contents of the ARTISTIC_STYLE_OPTIONS environment\\n\";\n\tcout << \"       variable if it exists.\\n\";\n\tcout << \"    2. The file called .astylerc in the directory pointed to by the\\n\";\n\tcout << \"       HOME environment variable ( i.e. $HOME/.astylerc ).\\n\";\n\tcout << \"    3. The file called astylerc in the directory pointed to by the\\n\";\n\tcout << \"       USERPROFILE environment variable (i.e. %USERPROFILE%\\\\astylerc).\\n\";\n\tcout << \"    If a default options file is found, the options in this file will\\n\";\n\tcout << \"    be parsed BEFORE the command-line options.\\n\";\n\tcout << \"    Long options within the default option file may be written without\\n\";\n\tcout << \"    the preliminary '--'.\\n\";\n\tcout << endl;\n\tcout << \"Disable Formatting:\\n\";\n\tcout << \"----------------------\\n\";\n\tcout << \"    Disable Block\\n\";\n\tcout << \"    Blocks of code can be disabled with the comment tags *INDENT-OFF*\\n\";\n\tcout << \"    and *INDENT-ON*. It must be contained in a one-line comment.\\n\";\n\tcout << endl;\n\tcout << \"    Disable Line\\n\";\n\tcout << \"    Padding of operators can be disabled on a single line using the\\n\";\n\tcout << \"    comment tag *NOPAD*. It must be contained in a line-end comment.\\n\";\n\tcout << endl;\n\tcout << \"Bracket Style Options:\\n\";\n\tcout << \"----------------------\\n\";\n\tcout << \"    default bracket style\\n\";\n\tcout << \"    If no bracket style is requested, the opening brackets will not be\\n\";\n\tcout << \"    changed and closing brackets will be broken from the preceding line.\\n\";\n\tcout << endl;\n\tcout << \"    --style=allman  OR  --style=bsd  OR  --style=break  OR  -A1\\n\";\n\tcout << \"    Allman style formatting/indenting.\\n\";\n\tcout << \"    Broken brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=java  OR  --style=attach  OR  -A2\\n\";\n\tcout << \"    Java style formatting/indenting.\\n\";\n\tcout << \"    Attached brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=kr  OR  --style=k&r  OR  --style=k/r  OR  -A3\\n\";\n\tcout << \"    Kernighan & Ritchie style formatting/indenting.\\n\";\n\tcout << \"    Linux brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=stroustrup  OR  -A4\\n\";\n\tcout << \"    Stroustrup style formatting/indenting.\\n\";\n\tcout << \"    Stroustrup brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=whitesmith  OR  -A5\\n\";\n\tcout << \"    Whitesmith style formatting/indenting.\\n\";\n\tcout << \"    Broken, indented brackets.\\n\";\n\tcout << \"    Indented class blocks and switch blocks.\\n\";\n\tcout << endl;\n\tcout << \"    --style=vtk  OR  -A15\\n\";\n\tcout << \"    VTK style formatting/indenting.\\n\";\n\tcout << \"    Broken, indented brackets, except for opening brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=banner  OR  -A6\\n\";\n\tcout << \"    Banner style formatting/indenting.\\n\";\n\tcout << \"    Attached, indented brackets.\\n\";\n\tcout << endl;\n\tcout << \"    --style=gnu  OR  -A7\\n\";\n\tcout << \"    GNU style formatting/indenting.\\n\";\n\tcout << \"    Broken brackets, indented blocks.\\n\";\n\tcout << endl;\n\tcout << \"    --style=linux  OR  --style=knf  OR  -A8\\n\";\n\tcout << \"    Linux style formatting/indenting.\\n\";\n\tcout << \"    Linux brackets, minimum conditional indent is one-half indent.\\n\";\n\tcout << endl;\n\tcout << \"    --style=horstmann  OR  -A9\\n\";\n\tcout << \"    Horstmann style formatting/indenting.\\n\";\n\tcout << \"    Run-in brackets, indented switches.\\n\";\n\tcout << endl;\n\tcout << \"    --style=1tbs  OR  --style=otbs  OR  -A10\\n\";\n\tcout << \"    One True Brace Style formatting/indenting.\\n\";\n\tcout << \"    Linux brackets, add brackets to all conditionals.\\n\";\n\tcout << endl;\n\tcout << \"    --style=google  OR  -A14\\n\";\n\tcout << \"    Google style formatting/indenting.\\n\";\n\tcout << \"    Attached brackets, indented class modifiers.\\n\";\n\tcout << endl;\n\tcout << \"    --style=pico  OR  -A11\\n\";\n\tcout << \"    Pico style formatting/indenting.\\n\";\n\tcout << \"    Run-in opening brackets and attached closing brackets.\\n\";\n\tcout << \"    Uses keep one line blocks and keep one line statements.\\n\";\n\tcout << endl;\n\tcout << \"    --style=lisp  OR  -A12\\n\";\n\tcout << \"    Lisp style formatting/indenting.\\n\";\n\tcout << \"    Attached opening brackets and attached closing brackets.\\n\";\n\tcout << \"    Uses keep one line statements.\\n\";\n\tcout << endl;\n\tcout << \"Tab Options:\\n\";\n\tcout << \"------------\\n\";\n\tcout << \"    default indent option\\n\";\n\tcout << \"    If no indentation option is set, the default\\n\";\n\tcout << \"    option of 4 spaces per indent will be used.\\n\";\n\tcout << endl;\n\tcout << \"    --indent=spaces=#  OR  -s#\\n\";\n\tcout << \"    Indent using # spaces per indent. Not specifying #\\n\";\n\tcout << \"    will result in a default of 4 spaces per indent.\\n\";\n\tcout << endl;\n\tcout << \"    --indent=tab  OR  --indent=tab=#  OR  -t  OR  -t#\\n\";\n\tcout << \"    Indent using tab characters, assuming that each\\n\";\n\tcout << \"    indent is # spaces long. Not specifying # will result\\n\";\n\tcout << \"    in a default assumption of 4 spaces per indent.\\n\";\n\tcout << endl;\n\tcout << \"    --indent=force-tab=#  OR  -T#\\n\";\n\tcout << \"    Indent using tab characters, assuming that each\\n\";\n\tcout << \"    indent is # spaces long. Force tabs to be used in areas\\n\";\n\tcout << \"    AStyle would prefer to use spaces.\\n\";\n\tcout << endl;\n\tcout << \"    --indent=force-tab-x=#  OR  -xT#\\n\";\n\tcout << \"    Allows the tab length to be set to a length that is different\\n\";\n\tcout << \"    from the indent length. This may cause the indentation to be\\n\";\n\tcout << \"    a mix of both spaces and tabs. This option sets the tab length.\\n\";\n\tcout << endl;\n\tcout << \"Bracket Modify Options:\\n\";\n\tcout << \"-----------------------\\n\";\n\tcout << \"    --attach-namespaces  OR  -xn\\n\";\n\tcout << \"    Attach brackets to a namespace statement.\\n\";\n\tcout << endl;\n\tcout << \"    --attach-classes  OR  -xc\\n\";\n\tcout << \"    Attach brackets to a class statement.\\n\";\n\tcout << endl;\n\tcout << \"    --attach-inlines  OR  -xl\\n\";\n\tcout << \"    Attach brackets to class inline function definitions.\\n\";\n\tcout << endl;\n\tcout << \"    --attach-extern-c  OR  -xk\\n\";\n\tcout << \"    Attach brackets to an extern \\\"C\\\" statement.\\n\";\n\tcout << endl;\n\tcout << \"Indentation Options:\\n\";\n\tcout << \"--------------------\\n\";\n\tcout << \"    --indent-classes  OR  -C\\n\";\n\tcout << \"    Indent 'class' blocks so that the entire block is indented.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-modifiers  OR  -xG\\n\";\n\tcout << \"    Indent 'class' access modifiers, 'public:', 'protected:' or\\n\";\n\tcout << \"    'private:', one half indent. The rest of the class is not\\n\";\n\tcout << \"    indented. \\n\";\n\tcout << endl;\n\tcout << \"    --indent-switches  OR  -S\\n\";\n\tcout << \"    Indent 'switch' blocks, so that the inner 'case XXX:'\\n\";\n\tcout << \"    headers are indented in relation to the switch block.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-cases  OR  -K\\n\";\n\tcout << \"    Indent case blocks from the 'case XXX:' headers.\\n\";\n\tcout << \"    Case statements not enclosed in blocks are NOT indented.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-namespaces  OR  -N\\n\";\n\tcout << \"    Indent the contents of namespace blocks.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-labels  OR  -L\\n\";\n\tcout << \"    Indent labels so that they appear one indent less than\\n\";\n\tcout << \"    the current indentation level, rather than being\\n\";\n\tcout << \"    flushed completely to the left (which is the default).\\n\";\n\tcout << endl;\n\tcout << \"    --indent-preproc-block  OR  -xW\\n\";\n\tcout << \"    Indent preprocessor blocks at bracket level 0.\\n\";\n\tcout << \"    Without this option the preprocessor block is not indented.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-preproc-cond  OR  -xw\\n\";\n\tcout << \"    Indent preprocessor conditional statements #if/#else/#endif\\n\";\n\tcout << \"    to the same level as the source code.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-preproc-define  OR  -w\\n\";\n\tcout << \"    Indent multi-line preprocessor #define statements.\\n\";\n\tcout << endl;\n\tcout << \"    --indent-col1-comments  OR  -Y\\n\";\n\tcout << \"    Indent line comments that start in column one.\\n\";\n\tcout << endl;\n\tcout << \"    --min-conditional-indent=#  OR  -m#\\n\";\n\tcout << \"    Indent a minimal # spaces in a continuous conditional\\n\";\n\tcout << \"    belonging to a conditional header.\\n\";\n\tcout << \"    The valid values are:\\n\";\n\tcout << \"    0 - no minimal indent.\\n\";\n\tcout << \"    1 - indent at least one additional indent.\\n\";\n\tcout << \"    2 - indent at least two additional indents.\\n\";\n\tcout << \"    3 - indent at least one-half an additional indent.\\n\";\n\tcout << \"    The default value is 2, two additional indents.\\n\";\n\tcout << endl;\n\tcout << \"    --max-instatement-indent=#  OR  -M#\\n\";\n\tcout << \"    Indent a maximal # spaces in a continuous statement,\\n\";\n\tcout << \"    relative to the previous line.\\n\";\n\tcout << \"    The valid values are 40 thru 120.\\n\";\n\tcout << \"    The default value is 40.\\n\";\n\tcout << endl;\n\tcout << \"Padding Options:\\n\";\n\tcout << \"----------------\\n\";\n\tcout << \"    --break-blocks  OR  -f\\n\";\n\tcout << \"    Insert empty lines around unrelated blocks, labels, classes, ...\\n\";\n\tcout << endl;\n\tcout << \"    --break-blocks=all  OR  -F\\n\";\n\tcout << \"    Like --break-blocks, except also insert empty lines \\n\";\n\tcout << \"    around closing headers (e.g. 'else', 'catch', ...).\\n\";\n\tcout << endl;\n\tcout << \"    --pad-oper  OR  -p\\n\";\n\tcout << \"    Insert space padding around operators.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-paren  OR  -P\\n\";\n\tcout << \"    Insert space padding around parenthesis on both the outside\\n\";\n\tcout << \"    and the inside.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-paren-out  OR  -d\\n\";\n\tcout << \"    Insert space padding around parenthesis on the outside only.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-first-paren-out  OR  -xd\\n\";\n\tcout << \"    Insert space padding around first parenthesis in a series on\\n\";\n\tcout << \"    the outside only.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-paren-in  OR  -D\\n\";\n\tcout << \"    Insert space padding around parenthesis on the inside only.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-header  OR  -H\\n\";\n\tcout << \"    Insert space padding after paren headers (e.g. 'if', 'for'...).\\n\";\n\tcout << endl;\n\tcout << \"    --unpad-paren  OR  -U\\n\";\n\tcout << \"    Remove unnecessary space padding around parenthesis. This\\n\";\n\tcout << \"    can be used in combination with the 'pad' options above.\\n\";\n\tcout << endl;\n\tcout << \"    --delete-empty-lines  OR  -xd\\n\";\n\tcout << \"    Delete empty lines within a function or method.\\n\";\n\tcout << \"    It will NOT delete lines added by the break-blocks options.\\n\";\n\tcout << endl;\n\tcout << \"    --fill-empty-lines  OR  -E\\n\";\n\tcout << \"    Fill empty lines with the white space of their\\n\";\n\tcout << \"    previous lines.\\n\";\n\tcout << endl;\n\tcout << \"    --align-pointer=type    OR  -k1\\n\";\n\tcout << \"    --align-pointer=middle  OR  -k2\\n\";\n\tcout << \"    --align-pointer=name    OR  -k3\\n\";\n\tcout << \"    Attach a pointer or reference operator (*, &, or ^) to either\\n\";\n\tcout << \"    the operator type (left), middle, or operator name (right).\\n\";\n\tcout << \"    To align the reference separately use --align-reference.\\n\";\n\tcout << endl;\n\tcout << \"    --align-reference=none    OR  -W0\\n\";\n\tcout << \"    --align-reference=type    OR  -W1\\n\";\n\tcout << \"    --align-reference=middle  OR  -W2\\n\";\n\tcout << \"    --align-reference=name    OR  -W3\\n\";\n\tcout << \"    Attach a reference operator (&) to either\\n\";\n\tcout << \"    the operator type (left), middle, or operator name (right).\\n\";\n\tcout << \"    If not set, follow pointer alignment.\\n\";\n\tcout << endl;\n\tcout << \"Formatting Options:\\n\";\n\tcout << \"-------------------\\n\";\n\tcout << \"    --break-closing-brackets  OR  -y\\n\";\n\tcout << \"    Break brackets before closing headers (e.g. 'else', 'catch', ...).\\n\";\n\tcout << \"    Use with --style=java, --style=kr, --style=stroustrup,\\n\";\n\tcout << \"    --style=linux, or --style=1tbs.\\n\";\n\tcout << endl;\n\tcout << \"    --break-elseifs  OR  -e\\n\";\n\tcout << \"    Break 'else if()' statements into two different lines.\\n\";\n\tcout << endl;\n\tcout << \"    --add-brackets  OR  -j\\n\";\n\tcout << \"    Add brackets to unbracketed one line conditional statements.\\n\";\n\tcout << endl;\n\tcout << \"    --add-one-line-brackets  OR  -J\\n\";\n\tcout << \"    Add one line brackets to unbracketed one line conditional\\n\";\n\tcout << \"    statements.\\n\";\n\tcout << endl;\n\tcout << \"    --remove-brackets  OR  -xj\\n\";\n\tcout << \"    Remove brackets from a bracketed one line conditional statements.\\n\";\n\tcout << endl;\n\tcout << \"    --keep-one-line-blocks  OR  -O\\n\";\n\tcout << \"    Don't break blocks residing completely on one line.\\n\";\n\tcout << endl;\n\tcout << \"    --keep-one-line-statements  OR  -o\\n\";\n\tcout << \"    Don't break lines containing multiple statements into\\n\";\n\tcout << \"    multiple single-statement lines.\\n\";\n\tcout << endl;\n\tcout << \"    --convert-tabs  OR  -c\\n\";\n\tcout << \"    Convert tabs to the appropriate number of spaces.\\n\";\n\tcout << endl;\n\tcout << \"    --close-templates  OR  -xy\\n\";\n\tcout << \"    Close ending angle brackets on template definitions.\\n\";\n\tcout << endl;\n\tcout << \"    --remove-comment-prefix  OR  -xp\\n\";\n\tcout << \"    Remove the leading '*' prefix on multi-line comments and\\n\";\n\tcout << \"    indent the comment text one indent.\\n\";\n\tcout << endl;\n\tcout << \"    --max-code-length=#    OR  -xC#\\n\";\n\tcout << \"    --break-after-logical  OR  -xL\\n\";\n\tcout << \"    max-code-length=# will break the line if it exceeds more than\\n\";\n\tcout << \"    # characters. The valid values are 50 thru 200.\\n\";\n\tcout << \"    If the line contains logical conditionals they will be placed\\n\";\n\tcout << \"    first on the new line. The option break-after-logical will\\n\";\n\tcout << \"    cause the logical conditional to be placed last on the\\n\";\n\tcout << \"    previous line.\\n\";\n\tcout << endl;\n\tcout << \"    --mode=c\\n\";\n\tcout << \"    Indent a C or C++ source file (this is the default).\\n\";\n\tcout << endl;\n\tcout << \"    --mode=java\\n\";\n\tcout << \"    Indent a Java source file.\\n\";\n\tcout << endl;\n\tcout << \"    --mode=cs\\n\";\n\tcout << \"    Indent a C# source file.\\n\";\n\tcout << endl;\n\tcout << \"Objective-C Options:\\n\";\n\tcout << \"--------------------\\n\";\n\tcout << \"    --align-method-colon  OR  -xM\\n\";\n\tcout << \"    Align the colons in an Objective-C method definition.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-method-prefix  OR  -xQ\\n\";\n\tcout << \"    Insert space padding after the '-' or '+' Objective-C\\n\";\n\tcout << \"    method prefix.\\n\";\n\tcout << endl;\n\tcout << \"    --unpad-method-prefix  OR  -xR\\n\";\n\tcout << \"    Remove all space padding after the '-' or '+' Objective-C\\n\";\n\tcout << \"    method prefix.\\n\";\n\tcout << endl;\n\tcout << \"    --pad-method-colon=none    OR  -xP\\n\";\n\tcout << \"    --pad-method-colon=all     OR  -xP1\\n\";\n\tcout << \"    --pad-method-colon=after   OR  -xP2\\n\";\n\tcout << \"    --pad-method-colon=before  OR  -xP3\\n\";\n\tcout << \"    Add or remove space padding before or after the colons in an\\n\";\n\tcout << \"    Objective-C method call.\\n\";\n\tcout << endl;\n\tcout << \"Other Options:\\n\";\n\tcout << \"--------------\\n\";\n\tcout << \"    --suffix=####\\n\";\n\tcout << \"    Append the suffix #### instead of '.orig' to original filename.\\n\";\n\tcout << endl;\n\tcout << \"    --suffix=none  OR  -n\\n\";\n\tcout << \"    Do not retain a backup of the original file.\\n\";\n\tcout << endl;\n\tcout << \"    --recursive  OR  -r  OR  -R\\n\";\n\tcout << \"    Process subdirectories recursively.\\n\";\n\tcout << endl;\n\tcout << \"    --dry-run\\n\";\n\tcout << \"    Perform a trial run with no changes made to check for formatting.\\n\";\n\tcout << endl;\n\tcout << \"    --exclude=####\\n\";\n\tcout << \"    Specify a file or directory #### to be excluded from processing.\\n\";\n\tcout << endl;\n\tcout << \"    --ignore-exclude-errors  OR  -i\\n\";\n\tcout << \"    Allow processing to continue if there are errors in the exclude=####\\n\";\n\tcout << \"    options. It will display the unmatched excludes.\\n\";\n\tcout << endl;\n\tcout << \"    --ignore-exclude-errors-x  OR  -xi\\n\";\n\tcout << \"    Allow processing to continue if there are errors in the exclude=####\\n\";\n\tcout << \"    options. It will NOT display the unmatched excludes.\\n\";\n\tcout << endl;\n\tcout << \"    --errors-to-stdout  OR  -X\\n\";\n\tcout << \"    Print errors and help information to standard-output rather than\\n\";\n\tcout << \"    to standard-error.\\n\";\n\tcout << endl;\n\tcout << \"    --preserve-date  OR  -Z\\n\";\n\tcout << \"    Preserve the original file's date and time modified. The time\\n\";\n\tcout << \"     modified will be changed a few micro seconds to force a compile.\\n\";\n\tcout << endl;\n\tcout << \"    --verbose  OR  -v\\n\";\n\tcout << \"    Verbose mode. Extra informational messages will be displayed.\\n\";\n\tcout << endl;\n\tcout << \"    --formatted  OR  -Q\\n\";\n\tcout << \"    Formatted display mode. Display only the files that have been\\n\";\n\tcout << \"    formatted.\\n\";\n\tcout << endl;\n\tcout << \"    --quiet  OR  -q\\n\";\n\tcout << \"    Quiet mode. Suppress all output except error messages.\\n\";\n\tcout << endl;\n\tcout << \"    --lineend=windows  OR  -z1\\n\";\n\tcout << \"    --lineend=linux    OR  -z2\\n\";\n\tcout << \"    --lineend=macold   OR  -z3\\n\";\n\tcout << \"    Force use of the specified line end style. Valid options\\n\";\n\tcout << \"    are windows (CRLF), linux (LF), and macold (CR).\\n\";\n\tcout << endl;\n\tcout << \"Command Line Only:\\n\";\n\tcout << \"------------------\\n\";\n\tcout << \"    --options=####\\n\";\n\tcout << \"    Specify an options file #### to read and use.\\n\";\n\tcout << endl;\n\tcout << \"    --options=none\\n\";\n\tcout << \"    Disable the default options file.\\n\";\n\tcout << \"    Only the command-line parameters will be used.\\n\";\n\tcout << endl;\n\tcout << \"    --ascii  OR  -I\\n\";\n\tcout << \"    The displayed output will be ascii characters only.\\n\";\n\tcout << endl;\n\tcout << \"    --version  OR  -V\\n\";\n\tcout << \"    Print version number.\\n\";\n\tcout << endl;\n\tcout << \"    --help  OR  -h  OR  -?\\n\";\n\tcout << \"    Print this help message.\\n\";\n\tcout << endl;\n\tcout << \"    --html  OR  -!\\n\";\n\tcout << \"    Open the HTML help file \\\"astyle.html\\\" in the default browser.\\n\";\n\tcout << \"    The documentation must be installed in the standard install path.\\n\";\n\tcout << endl;\n\tcout << \"    --html=####\\n\";\n\tcout << \"    Open a HTML help file in the default browser using the file path\\n\";\n\tcout << \"    ####. The path may include a directory path and a file name, or a\\n\";\n\tcout << \"    file name only. Paths containing spaces must be enclosed in quotes.\\n\";\n\tcout << endl;\n\tcout << endl;\n}\n\n/**\n * Process files in the fileNameVector.\n */\nvoid ASConsole::processFiles()\n{\n\tif (isVerbose)\n\t\tprintVerboseHeader();\n\n\tclock_t startTime = clock();     // start time of file formatting\n\n\t// loop thru input fileNameVector and process the files\n\tfor (size_t i = 0; i < fileNameVector.size(); i++)\n\t{\n\t\tgetFilePaths(fileNameVector[i]);\n\n\t\t// loop thru fileName vector formatting the files\n\t\tfor (size_t j = 0; j < fileName.size(); j++)\n\t\t\tformatFile(fileName[j]);\n\t}\n\n\t// files are processed, display stats\n\tif (isVerbose)\n\t\tprintVerboseStats(startTime);\n}\n\n// process options from the command line and options file\n// build the vectors fileNameVector, excludeVector, optionsVector, and fileOptionsVector\nvoid ASConsole::processOptions(vector<string> &argvOptions)\n{\n\tstring arg;\n\tbool ok = true;\n\tbool shouldParseOptionsFile = true;\n\n\t// get command line options\n\tfor (size_t i = 0; i < argvOptions.size(); i++)\n\t{\n\t\targ = argvOptions[i];\n\n\t\tif ( isOption(arg, \"-I\" )\n\t\t        || isOption(arg, \"--ascii\") )\n\t\t{\n\t\t\tuseAscii = true;\n\t\t\tsetlocale(LC_ALL, \"C\");\t\t// use English decimal indicator\n\t\t\tlocalizer.setLanguageFromName(\"en\");\n\t\t}\n\t\telse if ( isOption(arg, \"--options=none\") )\n\t\t{\n\t\t\tshouldParseOptionsFile = false;\n\t\t}\n\t\telse if ( isParamOption(arg, \"--options=\") )\n\t\t{\n\t\t\toptionsFileName = getParam(arg, \"--options=\");\n\t\t\toptionsFileRequired = true;\n\t\t\tif (optionsFileName.compare(\"\") == 0)\n\t\t\t\tsetOptionsFileName(\" \");\n\t\t}\n\t\telse if ( isOption(arg, \"-h\")\n\t\t          || isOption(arg, \"--help\")\n\t\t          || isOption(arg, \"-?\") )\n\t\t{\n\t\t\tprintHelp();\n\t\t\texit(EXIT_SUCCESS);\n\t\t}\n\t\telse if ( isOption(arg, \"-!\")\n\t\t          || isOption(arg, \"--html\") )\n\t\t{\n\t\t\tlaunchDefaultBrowser();\n\t\t\texit(EXIT_SUCCESS);\n\t\t}\n\t\telse if ( isParamOption(arg, \"--html=\") )\n\t\t{\n\t\t\tstring htmlFilePath = getParam(arg, \"--html=\");\n\t\t\tlaunchDefaultBrowser(htmlFilePath.c_str());\n\t\t\texit(EXIT_SUCCESS);\n\t\t}\n\t\telse if ( isOption(arg, \"-V\" )\n\t\t          || isOption(arg, \"--version\") )\n\t\t{\n\t\t\tprintf(\"Artistic Style Version %s\\n\", g_version);\n\t\t\texit(EXIT_SUCCESS);\n\t\t}\n\t\telse if (arg[0] == '-')\n\t\t{\n\t\t\toptionsVector.push_back(arg);\n\t\t}\n\t\telse // file-name\n\t\t{\n\t\t\tstandardizePath(arg);\n\t\t\tfileNameVector.push_back(arg);\n\t\t}\n\t}\n\n\t// get options file path and name\n\tif (shouldParseOptionsFile)\n\t{\n\t\tif (optionsFileName.compare(\"\") == 0)\n\t\t{\n\t\t\tchar* env = getenv(\"ARTISTIC_STYLE_OPTIONS\");\n\t\t\tif (env != NULL)\n\t\t\t\tsetOptionsFileName(env);\n\t\t}\n\t\tif (optionsFileName.compare(\"\") == 0)\n\t\t{\n\t\t\tchar* env = getenv(\"HOME\");\n\t\t\tif (env != NULL)\n\t\t\t\tsetOptionsFileName(string(env) + \"/.astylerc\");\n\t\t}\n\t\tif (optionsFileName.compare(\"\") == 0)\n\t\t{\n\t\t\tchar* env = getenv(\"USERPROFILE\");\n\t\t\tif (env != NULL)\n\t\t\t\tsetOptionsFileName(string(env) + \"/astylerc\");\n\t\t}\n\t\tif (optionsFileName.compare(\"\") != 0)\n\t\t\tstandardizePath(optionsFileName);\n\t}\n\n\t// create the options file vector and parse the options for errors\n\tASOptions options(formatter);\n\tif (optionsFileName.compare(\"\") != 0)\n\t{\n\t\tifstream optionsIn(optionsFileName.c_str());\n\t\tif (optionsIn)\n\t\t{\n\t\t\toptions.importOptions(optionsIn, fileOptionsVector);\n\t\t\tok = options.parseOptions(fileOptionsVector,\n\t\t\t                          string(_(\"Invalid option file options:\")));\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (optionsFileRequired)\n\t\t\t\terror(_(\"Cannot open options file\"), optionsFileName.c_str());\n\t\t\toptionsFileName.clear();\n\t\t}\n\t\toptionsIn.close();\n\t}\n\tif (!ok)\n\t{\n\t\t(*_err) << options.getOptionErrors() << endl;\n\t\t(*_err) << _(\"For help on options type 'astyle -h'\") << endl;\n\t\terror();\n\t}\n\n\t// parse the command line options vector for errors\n\tok = options.parseOptions(optionsVector,\n\t                          string(_(\"Invalid command line options:\")));\n\tif (!ok)\n\t{\n\t\t(*_err) << options.getOptionErrors() << endl;\n\t\t(*_err) << _(\"For help on options type 'astyle -h'\") << endl;\n\t\terror();\n\t}\n}\n\n// remove a file and check for an error\nvoid ASConsole::removeFile(const char* fileName_, const char* errMsg) const\n{\n\tif (remove(fileName_))\n\t{\n\t\tif (errno == ENOENT)        // no file is OK\n\t\t\terrno = 0;\n\t\tif (errno)\n\t\t{\n\t\t\tperror(\"errno message\");\n\t\t\terror(errMsg, fileName_);\n\t\t}\n\t}\n}\n\n// rename a file and check for an error\nvoid ASConsole::renameFile(const char* oldFileName, const char* newFileName, const char* errMsg) const\n{\n\tint result = rename(oldFileName, newFileName);\n\tif (result != 0)\n\t{\n\t\t// if file still exists the remove needs more time - retry\n\t\tif (errno == EEXIST)\n\t\t{\n\t\t\terrno = 0;\n\t\t\twaitForRemove(newFileName);\n\t\t\tresult = rename(oldFileName, newFileName);\n\t\t}\n\t\tif (result != 0)\n\t\t{\n\t\t\tperror(\"errno message\");\n\t\t\terror(errMsg, oldFileName);\n\t\t}\n\t}\n}\n\n// make sure file separators are correct type (Windows or Linux)\n// remove ending file separator\n// remove beginning file separator if requested and NOT a complete file path\nvoid ASConsole::standardizePath(string &path, bool removeBeginningSeparator /*false*/) const\n{\n#ifdef __VMS\n\tstruct FAB fab;\n\tstruct NAML naml;\n\tchar less[NAML$C_MAXRSS];\n\tchar sess[NAM$C_MAXRSS];\n\tint r0_status;\n\n\t// If we are on a VMS system, translate VMS style filenames to unix\n\t// style.\n\tfab = cc$rms_fab;\n\tfab.fab$l_fna = (char*) - 1;\n\tfab.fab$b_fns = 0;\n\tfab.fab$l_naml = &naml;\n\tnaml = cc$rms_naml;\n\tstrcpy(sess, path.c_str());\n\tnaml.naml$l_long_filename = (char*)sess;\n\tnaml.naml$l_long_filename_size = path.length();\n\tnaml.naml$l_long_expand = less;\n\tnaml.naml$l_long_expand_alloc = sizeof(less);\n\tnaml.naml$l_esa = sess;\n\tnaml.naml$b_ess = sizeof(sess);\n\tnaml.naml$v_no_short_upcase = 1;\n\tr0_status = sys$parse(&fab);\n\tif (r0_status == RMS$_SYN)\n\t{\n\t\terror(\"File syntax error\", path.c_str());\n\t}\n\telse\n\t{\n\t\tif (!$VMS_STATUS_SUCCESS(r0_status))\n\t\t{\n\t\t\t(void)lib$signal (r0_status);\n\t\t}\n\t}\n\tless[naml.naml$l_long_expand_size - naml.naml$b_ver] = '\\0';\n\tsess[naml.naml$b_esl - naml.naml$b_ver] = '\\0';\n\tif (naml.naml$l_long_expand_size > naml.naml$b_esl)\n\t{\n\t\tpath = decc$translate_vms (less);\n\t}\n\telse\n\t{\n\t\tpath = decc$translate_vms(sess);\n\t}\n#endif /* __VMS */\n\n\t// make sure separators are correct type (Windows or Linux)\n\tfor (size_t i = 0; i < path.length(); i++)\n\t{\n\t\ti = path.find_first_of(\"/\\\\\", i);\n\t\tif (i == string::npos)\n\t\t\tbreak;\n\t\tpath[i] = g_fileSeparator;\n\t}\n\t// remove beginning separator if requested\n\tif (removeBeginningSeparator && (path[0] == g_fileSeparator))\n\t\tpath.erase(0, 1);\n}\n\nvoid ASConsole::printMsg(const char* msg, const string &data) const\n{\n\tif (isQuiet)\n\t\treturn;\n\tprintf(msg, data.c_str());\n}\n\nvoid ASConsole::printSeparatingLine() const\n{\n\tstring line;\n\tfor (size_t i = 0; i < 60; i++)\n\t\tline.append(\"-\");\n\tprintMsg(\"%s\\n\", line);\n}\n\nvoid ASConsole::printVerboseHeader() const\n{\n\tassert(isVerbose);\n\tif (isQuiet)\n\t\treturn;\n\t// get the date\n\tstruct tm* ptr;\n\ttime_t lt;\n\tchar str[20];\n\tlt = time(NULL);\n\tptr = localtime(&lt);\n\tstrftime(str, 20, \"%x\", ptr);\n\t// print the header\n\tprintf(\"Artistic Style %s     %s\\n\", g_version, str);\n\t// print options file\n\tif (!optionsFileName.empty())\n\t\tprintf(_(\"Using default options file %s\\n\"), optionsFileName.c_str());\n}\n\nvoid ASConsole::printVerboseStats(clock_t startTime) const\n{\n\tassert(isVerbose);\n\tif (isQuiet)\n\t\treturn;\n\tif (hasWildcard)\n\t\tprintSeparatingLine();\n\tstring formatted = getNumberFormat(filesFormatted);\n\tstring unchanged = getNumberFormat(filesUnchanged);\n\tprintf(_(\" %s formatted   %s unchanged   \"), formatted.c_str(), unchanged.c_str());\n\n\t// show processing time\n\tclock_t stopTime = clock();\n\tfloat secs = (stopTime - startTime) / float (CLOCKS_PER_SEC);\n\tif (secs < 60)\n\t{\n\t\tif (secs < 2.0)\n\t\t\tprintf(\"%.2f\", secs);\n\t\telse if (secs < 20.0)\n\t\t\tprintf(\"%.1f\", secs);\n\t\telse\n\t\t\tprintf(\"%.0f\", secs);\n\t\tprintf(\"%s\", _(\" seconds   \"));\n\t}\n\telse\n\t{\n\t\t// show minutes and seconds if time is greater than one minute\n\t\tint min = (int) secs / 60;\n\t\tsecs -= min * 60;\n\t\tint minsec = int (secs + .5);\n\t\tprintf(_(\"%d min %d sec   \"), min, minsec);\n\t}\n\n\tstring lines = getNumberFormat(linesOut);\n\tprintf(_(\"%s lines\\n\"), lines.c_str());\n}\n\nvoid ASConsole::sleep(int seconds) const\n{\n\tclock_t endwait;\n\tendwait = clock_t (clock () + seconds * CLOCKS_PER_SEC);\n\twhile (clock() < endwait) {}\n}\n\nbool ASConsole::stringEndsWith(const string &str, const string &suffix) const\n{\n\tint strIndex = (int) str.length() - 1;\n\tint suffixIndex = (int) suffix.length() - 1;\n\n\twhile (strIndex >= 0 && suffixIndex >= 0)\n\t{\n\t\tif (tolower(str[strIndex]) != tolower(suffix[suffixIndex]))\n\t\t\treturn false;\n\n\t\t--strIndex;\n\t\t--suffixIndex;\n\t}\n\t// suffix longer than string\n\tif (strIndex < 0 && suffixIndex >= 0)\n\t\treturn false;\n\treturn true;\n}\n\nvoid ASConsole::updateExcludeVector(string suffixParam)\n{\n\texcludeVector.push_back(suffixParam);\n\tstandardizePath(excludeVector.back(), true);\n\texcludeHitsVector.push_back(false);\n}\n\nint ASConsole::waitForRemove(const char* newFileName) const\n{\n\tstruct stat stBuf;\n\tint seconds;\n\t// sleep a max of 20 seconds for the remove\n\tfor (seconds = 1; seconds <= 20; seconds++)\n\t{\n\t\tsleep(1);\n\t\tif (stat(newFileName, &stBuf) != 0)\n\t\t\tbreak;\n\t}\n\terrno = 0;\n\treturn seconds;\n}\n\n// From The Code Project http://www.codeproject.com/string/wildcmp.asp\n// Written by Jack Handy - jakkhandy@hotmail.com\n// Modified to compare case insensitive for Windows\nint ASConsole::wildcmp(const char* wild, const char* data) const\n{\n\tconst char* cp = NULL, *mp = NULL;\n\tbool cmpval;\n\n\twhile ((*data) && (*wild != '*'))\n\t{\n\t\tif (!g_isCaseSensitive)\n\t\t\tcmpval = (tolower(*wild) != tolower(*data)) && (*wild != '?');\n\t\telse\n\t\t\tcmpval = (*wild != *data) && (*wild != '?');\n\n\t\tif (cmpval)\n\t\t{\n\t\t\treturn 0;\n\t\t}\n\t\twild++;\n\t\tdata++;\n\t}\n\n\twhile (*data)\n\t{\n\t\tif (*wild == '*')\n\t\t{\n\t\t\tif (!*++wild)\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tmp = wild;\n\t\t\tcp = data + 1;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (!g_isCaseSensitive)\n\t\t\t\tcmpval = (tolower(*wild) == tolower(*data) || (*wild == '?'));\n\t\t\telse\n\t\t\t\tcmpval = (*wild == *data) || (*wild == '?');\n\n\t\t\tif (cmpval)\n\t\t\t{\n\t\t\t\twild++;\n\t\t\t\tdata++;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\twild = mp;\n\t\t\t\tdata = cp++;\n\t\t\t}\n\t\t}\n\t}\n\n\twhile (*wild == '*')\n\t{\n\t\twild++;\n\t}\n\treturn !*wild;\n}\n\nvoid ASConsole::writeFile(const string &fileName_, FileEncoding encoding, ostringstream &out) const\n{\n\t// save date accessed and date modified of original file\n\tstruct stat stBuf;\n\tbool statErr = false;\n\tif (stat(fileName_.c_str(), &stBuf) == -1)\n\t\tstatErr = true;\n\n\t// create a backup\n\tif (!noBackup)\n\t{\n\t\tstring origFileName = fileName_ + origSuffix;\n\t\tremoveFile(origFileName.c_str(), \"Cannot remove pre-existing backup file\");\n\t\trenameFile(fileName_.c_str(), origFileName.c_str(), \"Cannot create backup file\");\n\t}\n\n\t// write the output file\n\tofstream fout(fileName_.c_str(), ios::binary | ios::trunc);\n\tif (!fout)\n\t\terror(\"Cannot open output file\", fileName_.c_str());\n\tif (encoding == UTF_16LE || encoding == UTF_16BE)\n\t{\n\t\t// convert utf-8 to utf-16\n\t\tbool isBigEndian = (encoding == UTF_16BE);\n\t\tsize_t utf16Size = utf8_16.Utf16LengthFromUtf8(out.str().c_str(), out.str().length());\n\t\tchar* utf16Out = new char[utf16Size];\n\t\tsize_t utf16Len = utf8_16.Utf8ToUtf16(const_cast<char*>(out.str().c_str()),\n\t\t                                      out.str().length(), isBigEndian, utf16Out);\n\t\tassert(utf16Len == utf16Size);\n\t\tfout << string(utf16Out, utf16Len);\n\t\tdelete [] utf16Out;\n\t}\n\telse\n\t\tfout << out.str();\n\n\tfout.close();\n\n\t// change date modified to original file date\n\t// Embarcadero must be linked with cw32mt not cw32\n\tif (preserveDate)\n\t{\n\t\tif (!statErr)\n\t\t{\n\t\t\tstruct utimbuf outBuf;\n\t\t\toutBuf.actime = stBuf.st_atime;\n\t\t\t// add ticks so 'make' will recognize a change\n\t\t\t// Visual Studio 2008 needs more than 1\n\t\t\toutBuf.modtime = stBuf.st_mtime + 10;\n\t\t\tif (utime(fileName_.c_str(), &outBuf) == -1)\n\t\t\t\tstatErr = true;\n\t\t}\n\t\tif (statErr)\n\t\t{\n\t\t\tperror(\"errno message\");\n\t\t\t(*_err) << \"*********  Cannot preserve file date\" << endl;\n\t\t}\n\t}\n}\n\n//-----------------------------------------------------------------------------\n// ASLibrary class\n// used by shared object (DLL) calls\n//-----------------------------------------------------------------------------\n\n#else\t// ASTYLE_LIB\n\nutf16_t* ASLibrary::formatUtf16(const utf16_t* pSourceIn,\t\t// the source to be formatted\n                                const utf16_t* pOptions,\t\t// AStyle options\n                                fpError fpErrorHandler,\t\t\t// error handler function\n                                fpAlloc fpMemoryAlloc) const\t// memory allocation function)\n{\n\tconst char* utf8In = convertUtf16ToUtf8(pSourceIn);\n\tif (utf8In == NULL)\n\t{\n\t\tfpErrorHandler(121, \"Cannot convert input utf-16 to utf-8.\");\n\t\treturn NULL;\n\t}\n\tconst char* utf8Options = convertUtf16ToUtf8(pOptions);\n\tif (utf8Options == NULL)\n\t{\n\t\tdelete [] utf8In;\n\t\tfpErrorHandler(122, \"Cannot convert options utf-16 to utf-8.\");\n\t\treturn NULL;\n\t}\n\t// call the Artistic Style formatting function\n\t// cannot use the callers memory allocation here\n\tchar* utf8Out = AStyleMain(utf8In,\n\t                           utf8Options,\n\t                           fpErrorHandler,\n\t                           ASLibrary::tempMemoryAllocation);\n\t// finished with these\n\tdelete [] utf8In;\n\tdelete [] utf8Options;\n\tutf8In = NULL;\n\tutf8Options = NULL;\n\t// AStyle error has already been sent\n\tif (utf8Out == NULL)\n\t\treturn NULL;\n\t// convert text to wide char and return it\n\tutf16_t* utf16Out = convertUtf8ToUtf16(utf8Out, fpMemoryAlloc);\n\tdelete [] utf8Out;\n\tutf8Out = NULL;\n\tif (utf16Out == NULL)\n\t{\n\t\tfpErrorHandler(123, \"Cannot convert output utf-8 to utf-16.\");\n\t\treturn NULL;\n\t}\n\treturn utf16Out;\n}\n\n// STATIC method to allocate temporary memory for AStyle formatting.\n// The data will be converted before being returned to the calling program.\nchar* STDCALL ASLibrary::tempMemoryAllocation(unsigned long memoryNeeded)\n{\n\tchar* buffer = new(nothrow) char[memoryNeeded];\n\treturn buffer;\n}\n\n/**\n * Convert utf-8 strings to utf16 strings.\n * Memory is allocated by the calling program memory allocation function.\n * The calling function must check for errors.\n */\nutf16_t* ASLibrary::convertUtf8ToUtf16(const char* utf8In, fpAlloc fpMemoryAlloc) const\n{\n\tif (utf8In == NULL)\n\t\treturn NULL;\n\tchar* data = const_cast<char*>(utf8In);\n\tsize_t dataSize = strlen(utf8In);\n\tbool isBigEndian = utf8_16.getBigEndian();\n\t// return size is in number of CHARs, not utf16_t\n\tsize_t utf16Size = (utf8_16.Utf16LengthFromUtf8(data, dataSize) + sizeof(utf16_t));\n\tchar* utf16Out = fpMemoryAlloc(utf16Size);\n\tif (utf16Out == NULL)\n\t\treturn NULL;\n#ifdef NDEBUG\n\tutf8_16.Utf8ToUtf16(data, dataSize + 1, isBigEndian, utf16Out);\n#else\n\tsize_t utf16Len = utf8_16.Utf8ToUtf16(data, dataSize + 1, isBigEndian, utf16Out);\n\tassert(utf16Len == utf16Size);\n#endif\n\tassert(utf16Size == (utf8_16.utf16len(reinterpret_cast<utf16_t*>(utf16Out)) + 1) * sizeof(utf16_t));\n\treturn reinterpret_cast<utf16_t*>(utf16Out);\n}\n\n/**\n * Convert utf16 strings to utf-8.\n * The calling function must check for errors and delete the\n * allocated memory.\n */\nchar* ASLibrary::convertUtf16ToUtf8(const utf16_t* utf16In) const\n{\n\tif (utf16In == NULL)\n\t\treturn NULL;\n\tchar* data = reinterpret_cast<char*>(const_cast<utf16_t*>(utf16In));\n\t// size must be in chars\n\tsize_t dataSize = utf8_16.utf16len(utf16In) * sizeof(utf16_t);\n\tbool isBigEndian = utf8_16.getBigEndian();\n\tsize_t utf8Size = utf8_16.Utf8LengthFromUtf16(data, dataSize, isBigEndian) + 1;\n\tchar* utf8Out = new(nothrow) char[utf8Size];\n\tif (utf8Out == NULL)\n\t\treturn NULL;\n#ifdef NDEBUG\n\tutf8_16.Utf16ToUtf8(data, dataSize + 1, isBigEndian, true, utf8Out);\n#else\n\tsize_t utf8Len = utf8_16.Utf16ToUtf8(data, dataSize + 1, isBigEndian, true, utf8Out);\n\tassert(utf8Len == utf8Size);\n#endif\n\tassert(utf8Size == strlen(utf8Out) + 1);\n\treturn utf8Out;\n}\n\n#endif\t// ASTYLE_LIB\n\n//-----------------------------------------------------------------------------\n// ASOptions class\n// used by both console and library builds\n//-----------------------------------------------------------------------------\n\n/**\n * parse the options vector\n * optionsVector can be either a fileOptionsVector (options file) or an optionsVector (command line)\n *\n * @return        true if no errors, false if errors\n */\nbool ASOptions::parseOptions(vector<string> &optionsVector, const string &errorInfo)\n{\n\tvector<string>::iterator option;\n\tstring arg, subArg;\n\toptionErrors.clear();\n\n\tfor (option = optionsVector.begin(); option != optionsVector.end(); ++option)\n\t{\n\t\targ = *option;\n\n\t\tif (arg.compare(0, 2, \"--\") == 0)\n\t\t\tparseOption(arg.substr(2), errorInfo);\n\t\telse if (arg[0] == '-')\n\t\t{\n\t\t\tsize_t i;\n\n\t\t\tfor (i = 1; i < arg.length(); ++i)\n\t\t\t{\n\t\t\t\tif (i > 1\n\t\t\t\t        && isalpha((unsigned char)arg[i])\n\t\t\t\t        && arg[i - 1] != 'x')\n\t\t\t\t{\n\t\t\t\t\t// parse the previous option in subArg\n\t\t\t\t\tparseOption(subArg, errorInfo);\n\t\t\t\t\tsubArg = \"\";\n\t\t\t\t}\n\t\t\t\t// append the current option to subArg\n\t\t\t\tsubArg.append(1, arg[i]);\n\t\t\t}\n\t\t\t// parse the last option\n\t\t\tparseOption(subArg, errorInfo);\n\t\t\tsubArg = \"\";\n\t\t}\n\t\telse\n\t\t{\n\t\t\tparseOption(arg, errorInfo);\n\t\t\tsubArg = \"\";\n\t\t}\n\t}\n\tif (optionErrors.str().length() > 0)\n\t\treturn false;\n\treturn true;\n}\n\nvoid ASOptions::parseOption(const string &arg, const string &errorInfo)\n{\n\tif ( isOption(arg, \"style=allman\") || isOption(arg, \"style=bsd\") || isOption(arg, \"style=break\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_ALLMAN);\n\t}\n\telse if ( isOption(arg, \"style=java\") || isOption(arg, \"style=attach\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_JAVA);\n\t}\n\telse if ( isOption(arg, \"style=k&r\") || isOption(arg, \"style=kr\") || isOption(arg, \"style=k/r\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_KR);\n\t}\n\telse if ( isOption(arg, \"style=stroustrup\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_STROUSTRUP);\n\t}\n\telse if ( isOption(arg, \"style=whitesmith\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_WHITESMITH);\n\t}\n\telse if (isOption(arg, \"style=vtk\"))\n\t{\n\t\tformatter.setFormattingStyle(STYLE_VTK);\n\t}\n\telse if ( isOption(arg, \"style=banner\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_BANNER);\n\t}\n\telse if ( isOption(arg, \"style=gnu\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_GNU);\n\t}\n\telse if ( isOption(arg, \"style=linux\") || isOption(arg, \"style=knf\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_LINUX);\n\t}\n\telse if ( isOption(arg, \"style=horstmann\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_HORSTMANN);\n\t}\n\telse if ( isOption(arg, \"style=1tbs\") || isOption(arg, \"style=otbs\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_1TBS);\n\t}\n\telse if ( isOption(arg, \"style=google\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_GOOGLE);\n\t}\n\telse if ( isOption(arg, \"style=pico\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_PICO);\n\t}\n\telse if ( isOption(arg, \"style=lisp\") || isOption(arg, \"style=python\") )\n\t{\n\t\tformatter.setFormattingStyle(STYLE_LISP);\n\t}\n\telse if ( isParamOption(arg, \"A\") )\n\t{\n\t\tint style = 0;\n\t\tstring styleParam = getParam(arg, \"A\");\n\t\tif (styleParam.length() > 0)\n\t\t\tstyle = atoi(styleParam.c_str());\n\t\tif (style == 1)\n\t\t\tformatter.setFormattingStyle(STYLE_ALLMAN);\n\t\telse if (style == 2)\n\t\t\tformatter.setFormattingStyle(STYLE_JAVA);\n\t\telse if (style == 3)\n\t\t\tformatter.setFormattingStyle(STYLE_KR);\n\t\telse if (style == 4)\n\t\t\tformatter.setFormattingStyle(STYLE_STROUSTRUP);\n\t\telse if (style == 5)\n\t\t\tformatter.setFormattingStyle(STYLE_WHITESMITH);\n\t\telse if (style == 6)\n\t\t\tformatter.setFormattingStyle(STYLE_BANNER);\n\t\telse if (style == 7)\n\t\t\tformatter.setFormattingStyle(STYLE_GNU);\n\t\telse if (style == 8)\n\t\t\tformatter.setFormattingStyle(STYLE_LINUX);\n\t\telse if (style == 9)\n\t\t\tformatter.setFormattingStyle(STYLE_HORSTMANN);\n\t\telse if (style == 10)\n\t\t\tformatter.setFormattingStyle(STYLE_1TBS);\n\t\telse if (style == 11)\n\t\t\tformatter.setFormattingStyle(STYLE_PICO);\n\t\telse if (style == 12)\n\t\t\tformatter.setFormattingStyle(STYLE_LISP);\n\t\telse if (style == 14)\n\t\t\tformatter.setFormattingStyle(STYLE_GOOGLE);\n\t\telse if (style == 15)\n\t\t\tformatter.setFormattingStyle(STYLE_VTK);\n\t\telse\n\t\t\tisOptionError(arg, errorInfo);\n\t}\n\t// must check for mode=cs before mode=c !!!\n\telse if ( isOption(arg, \"mode=cs\") )\n\t{\n\t\tformatter.setSharpStyle();\n\t\tformatter.setModeManuallySet(true);\n\t}\n\telse if ( isOption(arg, \"mode=c\") )\n\t{\n\t\tformatter.setCStyle();\n\t\tformatter.setModeManuallySet(true);\n\t}\n\telse if ( isOption(arg, \"mode=java\") )\n\t{\n\t\tformatter.setJavaStyle();\n\t\tformatter.setModeManuallySet(true);\n\t}\n\telse if ( isParamOption(arg, \"t\", \"indent=tab=\") )\n\t{\n\t\tint spaceNum = 4;\n\t\tstring spaceNumParam = getParam(arg, \"t\", \"indent=tab=\");\n\t\tif (spaceNumParam.length() > 0)\n\t\t\tspaceNum = atoi(spaceNumParam.c_str());\n\t\tif (spaceNum < 2 || spaceNum > 20)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t{\n\t\t\tformatter.setTabIndentation(spaceNum, false);\n\t\t}\n\t}\n\telse if ( isOption(arg, \"indent=tab\") )\n\t{\n\t\tformatter.setTabIndentation(4);\n\t}\n\telse if ( isParamOption(arg, \"T\", \"indent=force-tab=\") )\n\t{\n\t\tint spaceNum = 4;\n\t\tstring spaceNumParam = getParam(arg, \"T\", \"indent=force-tab=\");\n\t\tif (spaceNumParam.length() > 0)\n\t\t\tspaceNum = atoi(spaceNumParam.c_str());\n\t\tif (spaceNum < 2 || spaceNum > 20)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t{\n\t\t\tformatter.setTabIndentation(spaceNum, true);\n\t\t}\n\t}\n\telse if ( isOption(arg, \"indent=force-tab\") )\n\t{\n\t\tformatter.setTabIndentation(4, true);\n\t}\n\telse if ( isParamOption(arg, \"xT\", \"indent=force-tab-x=\") )\n\t{\n\t\tint tabNum = 8;\n\t\tstring tabNumParam = getParam(arg, \"xT\", \"indent=force-tab-x=\");\n\t\tif (tabNumParam.length() > 0)\n\t\t\ttabNum = atoi(tabNumParam.c_str());\n\t\tif (tabNum < 2 || tabNum > 20)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t{\n\t\t\tformatter.setForceTabXIndentation(tabNum);\n\t\t}\n\t}\n\telse if ( isOption(arg, \"indent=force-tab-x\") )\n\t{\n\t\tformatter.setForceTabXIndentation(8);\n\t}\n\telse if ( isParamOption(arg, \"s\", \"indent=spaces=\") )\n\t{\n\t\tint spaceNum = 4;\n\t\tstring spaceNumParam = getParam(arg, \"s\", \"indent=spaces=\");\n\t\tif (spaceNumParam.length() > 0)\n\t\t\tspaceNum = atoi(spaceNumParam.c_str());\n\t\tif (spaceNum < 2 || spaceNum > 20)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t{\n\t\t\tformatter.setSpaceIndentation(spaceNum);\n\t\t}\n\t}\n\telse if ( isOption(arg, \"indent=spaces\") )\n\t{\n\t\tformatter.setSpaceIndentation(4);\n\t}\n\telse if ( isParamOption(arg, \"m\", \"min-conditional-indent=\") )\n\t{\n\t\tint minIndent = MINCOND_TWO;\n\t\tstring minIndentParam = getParam(arg, \"m\", \"min-conditional-indent=\");\n\t\tif (minIndentParam.length() > 0)\n\t\t\tminIndent = atoi(minIndentParam.c_str());\n\t\tif (minIndent >= MINCOND_END)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t\tformatter.setMinConditionalIndentOption(minIndent);\n\t}\n\telse if ( isParamOption(arg, \"M\", \"max-instatement-indent=\") )\n\t{\n\t\tint maxIndent = 40;\n\t\tstring maxIndentParam = getParam(arg, \"M\", \"max-instatement-indent=\");\n\t\tif (maxIndentParam.length() > 0)\n\t\t\tmaxIndent = atoi(maxIndentParam.c_str());\n\t\tif (maxIndent < 40)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (maxIndent > 120)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t\tformatter.setMaxInStatementIndentLength(maxIndent);\n\t}\n\telse if ( isOption(arg, \"N\", \"indent-namespaces\") )\n\t{\n\t\tformatter.setNamespaceIndent(true);\n\t}\n\telse if ( isOption(arg, \"C\", \"indent-classes\") )\n\t{\n\t\tformatter.setClassIndent(true);\n\t}\n\telse if ( isOption(arg, \"xG\", \"indent-modifiers\") )\n\t{\n\t\tformatter.setModifierIndent(true);\n\t}\n\telse if ( isOption(arg, \"S\", \"indent-switches\") )\n\t{\n\t\tformatter.setSwitchIndent(true);\n\t}\n\telse if ( isOption(arg, \"K\", \"indent-cases\") )\n\t{\n\t\tformatter.setCaseIndent(true);\n\t}\n\telse if ( isOption(arg, \"L\", \"indent-labels\") )\n\t{\n\t\tformatter.setLabelIndent(true);\n\t}\n\telse if (isOption(arg, \"xW\", \"indent-preproc-block\"))\n\t{\n\t\tformatter.setPreprocBlockIndent(true);\n\t}\n\telse if ( isOption(arg, \"w\", \"indent-preproc-define\") )\n\t{\n\t\tformatter.setPreprocDefineIndent(true);\n\t}\n\telse if ( isOption(arg, \"xw\", \"indent-preproc-cond\") )\n\t{\n\t\tformatter.setPreprocConditionalIndent(true);\n\t}\n\telse if ( isOption(arg, \"y\", \"break-closing-brackets\") )\n\t{\n\t\tformatter.setBreakClosingHeaderBracketsMode(true);\n\t}\n\telse if ( isOption(arg, \"O\", \"keep-one-line-blocks\") )\n\t{\n\t\tformatter.setBreakOneLineBlocksMode(false);\n\t}\n\telse if ( isOption(arg, \"o\", \"keep-one-line-statements\") )\n\t{\n\t\tformatter.setSingleStatementsMode(false);\n\t}\n\telse if ( isOption(arg, \"P\", \"pad-paren\") )\n\t{\n\t\tformatter.setParensOutsidePaddingMode(true);\n\t\tformatter.setParensInsidePaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"d\", \"pad-paren-out\") )\n\t{\n\t\tformatter.setParensOutsidePaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"xd\", \"pad-first-paren-out\") )\n\t{\n\t\tformatter.setParensFirstPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"D\", \"pad-paren-in\") )\n\t{\n\t\tformatter.setParensInsidePaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"H\", \"pad-header\") )\n\t{\n\t\tformatter.setParensHeaderPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"U\", \"unpad-paren\") )\n\t{\n\t\tformatter.setParensUnPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"p\", \"pad-oper\") )\n\t{\n\t\tformatter.setOperatorPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"xe\", \"delete-empty-lines\") )\n\t{\n\t\tformatter.setDeleteEmptyLinesMode(true);\n\t}\n\telse if ( isOption(arg, \"E\", \"fill-empty-lines\") )\n\t{\n\t\tformatter.setEmptyLineFill(true);\n\t}\n\telse if ( isOption(arg, \"c\", \"convert-tabs\") )\n\t{\n\t\tformatter.setTabSpaceConversionMode(true);\n\t}\n\telse if ( isOption(arg, \"xy\", \"close-templates\") )\n\t{\n\t\tformatter.setCloseTemplatesMode(true);\n\t}\n\telse if ( isOption(arg, \"F\", \"break-blocks=all\") )\n\t{\n\t\tformatter.setBreakBlocksMode(true);\n\t\tformatter.setBreakClosingHeaderBlocksMode(true);\n\t}\n\telse if ( isOption(arg, \"f\", \"break-blocks\") )\n\t{\n\t\tformatter.setBreakBlocksMode(true);\n\t}\n\telse if ( isOption(arg, \"e\", \"break-elseifs\") )\n\t{\n\t\tformatter.setBreakElseIfsMode(true);\n\t}\n\telse if ( isOption(arg, \"j\", \"add-brackets\") )\n\t{\n\t\tformatter.setAddBracketsMode(true);\n\t}\n\telse if ( isOption(arg, \"J\", \"add-one-line-brackets\") )\n\t{\n\t\tformatter.setAddOneLineBracketsMode(true);\n\t}\n\telse if ( isOption(arg, \"xj\", \"remove-brackets\") )\n\t{\n\t\tformatter.setRemoveBracketsMode(true);\n\t}\n\telse if ( isOption(arg, \"Y\", \"indent-col1-comments\") )\n\t{\n\t\tformatter.setIndentCol1CommentsMode(true);\n\t}\n\telse if ( isOption(arg, \"align-pointer=type\") )\n\t{\n\t\tformatter.setPointerAlignment(PTR_ALIGN_TYPE);\n\t}\n\telse if ( isOption(arg, \"align-pointer=middle\") )\n\t{\n\t\tformatter.setPointerAlignment(PTR_ALIGN_MIDDLE);\n\t}\n\telse if ( isOption(arg, \"align-pointer=name\") )\n\t{\n\t\tformatter.setPointerAlignment(PTR_ALIGN_NAME);\n\t}\n\telse if ( isParamOption(arg, \"k\") )\n\t{\n\t\tint align = 0;\n\t\tstring styleParam = getParam(arg, \"k\");\n\t\tif (styleParam.length() > 0)\n\t\t\talign = atoi(styleParam.c_str());\n\t\tif (align < 1 || align > 3)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (align == 1)\n\t\t\tformatter.setPointerAlignment(PTR_ALIGN_TYPE);\n\t\telse if (align == 2)\n\t\t\tformatter.setPointerAlignment(PTR_ALIGN_MIDDLE);\n\t\telse if (align == 3)\n\t\t\tformatter.setPointerAlignment(PTR_ALIGN_NAME);\n\t}\n\telse if ( isOption(arg, \"align-reference=none\") )\n\t{\n\t\tformatter.setReferenceAlignment(REF_ALIGN_NONE);\n\t}\n\telse if ( isOption(arg, \"align-reference=type\") )\n\t{\n\t\tformatter.setReferenceAlignment(REF_ALIGN_TYPE);\n\t}\n\telse if ( isOption(arg, \"align-reference=middle\") )\n\t{\n\t\tformatter.setReferenceAlignment(REF_ALIGN_MIDDLE);\n\t}\n\telse if ( isOption(arg, \"align-reference=name\") )\n\t{\n\t\tformatter.setReferenceAlignment(REF_ALIGN_NAME);\n\t}\n\telse if ( isParamOption(arg, \"W\") )\n\t{\n\t\tint align = 0;\n\t\tstring styleParam = getParam(arg, \"W\");\n\t\tif (styleParam.length() > 0)\n\t\t\talign = atoi(styleParam.c_str());\n\t\tif (align < 0 || align > 3)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (align == 0)\n\t\t\tformatter.setReferenceAlignment(REF_ALIGN_NONE);\n\t\telse if (align == 1)\n\t\t\tformatter.setReferenceAlignment(REF_ALIGN_TYPE);\n\t\telse if (align == 2)\n\t\t\tformatter.setReferenceAlignment(REF_ALIGN_MIDDLE);\n\t\telse if (align == 3)\n\t\t\tformatter.setReferenceAlignment(REF_ALIGN_NAME);\n\t}\n\telse if ( isParamOption(arg, \"max-code-length=\") )\n\t{\n\t\tint maxLength = 50;\n\t\tstring maxLengthParam = getParam(arg, \"max-code-length=\");\n\t\tif (maxLengthParam.length() > 0)\n\t\t\tmaxLength = atoi(maxLengthParam.c_str());\n\t\tif (maxLength < 50)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (maxLength > 200)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t\tformatter.setMaxCodeLength(maxLength);\n\t}\n\telse if ( isParamOption(arg, \"xC\") )\n\t{\n\t\tint maxLength = 50;\n\t\tstring maxLengthParam = getParam(arg, \"xC\");\n\t\tif (maxLengthParam.length() > 0)\n\t\t\tmaxLength = atoi(maxLengthParam.c_str());\n\t\tif (maxLength > 200)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse\n\t\t\tformatter.setMaxCodeLength(maxLength);\n\t}\n\telse if ( isOption(arg, \"xL\", \"break-after-logical\") )\n\t{\n\t\tformatter.setBreakAfterMode(true);\n\t}\n\telse if ( isOption(arg, \"xc\", \"attach-classes\") )\n\t{\n\t\tformatter.setAttachClass(true);\n\t}\n\telse if ( isOption(arg, \"xk\", \"attach-extern-c\") )\n\t{\n\t\tformatter.setAttachExternC(true);\n\t}\n\telse if ( isOption(arg, \"xn\", \"attach-namespaces\") )\n\t{\n\t\tformatter.setAttachNamespace(true);\n\t}\n\telse if ( isOption(arg, \"xl\", \"attach-inlines\") )\n\t{\n\t\tformatter.setAttachInline(true);\n\t}\n\telse if ( isOption(arg, \"xp\", \"remove-comment-prefix\") )\n\t{\n\t\tformatter.setStripCommentPrefix(true);\n\t}\n\t// Objective-C options\n\telse if ( isOption(arg, \"xM\", \"align-method-colon\") )\n\t{\n\t\tformatter.setAlignMethodColon(true);\n\t}\n\telse if ( isOption(arg, \"xQ\", \"pad-method-prefix\") )\n\t{\n\t\tformatter.setMethodPrefixPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"xR\", \"unpad-method-prefix\") )\n\t{\n\t\tformatter.setMethodPrefixUnPaddingMode(true);\n\t}\n\telse if ( isOption(arg, \"xP0\", \"pad-method-colon=none\") )\n\t{\n\t\tformatter.setObjCColonPaddingMode(COLON_PAD_NONE);\n\t}\n\telse if ( isOption(arg, \"xP1\", \"pad-method-colon=all\") )\n\t{\n\t\tformatter.setObjCColonPaddingMode(COLON_PAD_ALL);\n\t}\n\telse if ( isOption(arg, \"xP2\", \"pad-method-colon=after\") )\n\t{\n\t\tformatter.setObjCColonPaddingMode(COLON_PAD_AFTER);\n\t}\n\telse if ( isOption(arg, \"xP3\", \"pad-method-colon=before\") )\n\t{\n\t\tformatter.setObjCColonPaddingMode(COLON_PAD_BEFORE);\n\t}\n\t// depreciated options ////////////////////////////////////////////////////////////////////////////////////////////\n\telse if ( isOption(arg, \"indent-preprocessor\") )\t// depreciated release 2.04\n\t{\n\t\tformatter.setPreprocDefineIndent(true);\n\t}\n\telse if ( isOption(arg, \"style=ansi\") )\t\t\t\t// depreciated release 2.05\n\t{\n\t\tformatter.setFormattingStyle(STYLE_ALLMAN);\n\t}\n//  NOTE: Removed in release 2.04.\n//\telse if ( isOption(arg, \"b\", \"brackets=break\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(BREAK_MODE);\n//\t}\n//\telse if ( isOption(arg, \"a\", \"brackets=attach\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(ATTACH_MODE);\n//\t}\n//\telse if ( isOption(arg, \"l\", \"brackets=linux\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(LINUX_MODE);\n//\t}\n//\telse if ( isOption(arg, \"u\", \"brackets=stroustrup\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(STROUSTRUP_MODE);\n//\t}\n//\telse if ( isOption(arg, \"g\", \"brackets=run-in\") )\n//\t{\n//\t\tformatter.setBracketFormatMode(RUN_IN_MODE);\n//\t}\n\t// end depreciated options ////////////////////////////////////////////////////////////////////////////////////////\n#ifdef ASTYLE_LIB\n\t// End of options used by GUI /////////////////////////////////////////////////////////////////////////////////////\n\telse\n\t\tisOptionError(arg, errorInfo);\n#else\n\t// Options used by only console ///////////////////////////////////////////////////////////////////////////////////\n\telse if ( isOption(arg, \"n\", \"suffix=none\") )\n\t{\n\t\tg_console->setNoBackup(true);\n\t}\n\telse if ( isParamOption(arg, \"suffix=\") )\n\t{\n\t\tstring suffixParam = getParam(arg, \"suffix=\");\n\t\tif (suffixParam.length() > 0)\n\t\t{\n\t\t\tg_console->setOrigSuffix(suffixParam);\n\t\t}\n\t}\n\telse if ( isParamOption(arg, \"exclude=\") )\n\t{\n\t\tstring suffixParam = getParam(arg, \"exclude=\");\n\t\tif (suffixParam.length() > 0)\n\t\t\tg_console->updateExcludeVector(suffixParam);\n\t}\n\telse if ( isOption(arg, \"r\", \"R\") || isOption(arg, \"recursive\") )\n\t{\n\t\tg_console->setIsRecursive(true);\n\t}\n\telse if (isOption(arg, \"dry-run\"))\n\t{\n\t\tg_console->setIsDryRun(true);\n\t}\n\telse if ( isOption(arg, \"Z\", \"preserve-date\") )\n\t{\n\t\tg_console->setPreserveDate(true);\n\t}\n\telse if ( isOption(arg, \"v\", \"verbose\") )\n\t{\n\t\tg_console->setIsVerbose(true);\n\t}\n\telse if ( isOption(arg, \"Q\", \"formatted\") )\n\t{\n\t\tg_console->setIsFormattedOnly(true);\n\t}\n\telse if ( isOption(arg, \"q\", \"quiet\") )\n\t{\n\t\tg_console->setIsQuiet(true);\n\t}\n\telse if ( isOption(arg, \"i\", \"ignore-exclude-errors\") )\n\t{\n\t\tg_console->setIgnoreExcludeErrors(true);\n\t}\n\telse if ( isOption(arg, \"xi\", \"ignore-exclude-errors-x\") )\n\t{\n\t\tg_console->setIgnoreExcludeErrorsAndDisplay(true);\n\t}\n\telse if ( isOption(arg, \"X\", \"errors-to-stdout\") )\n\t{\n\t\t_err = &cout;\n\t}\n\telse if ( isOption(arg, \"lineend=windows\") )\n\t{\n\t\tformatter.setLineEndFormat(LINEEND_WINDOWS);\n\t}\n\telse if ( isOption(arg, \"lineend=linux\") )\n\t{\n\t\tformatter.setLineEndFormat(LINEEND_LINUX);\n\t}\n\telse if ( isOption(arg, \"lineend=macold\") )\n\t{\n\t\tformatter.setLineEndFormat(LINEEND_MACOLD);\n\t}\n\telse if ( isParamOption(arg, \"z\") )\n\t{\n\t\tint lineendType = 0;\n\t\tstring lineendParam = getParam(arg, \"z\");\n\t\tif (lineendParam.length() > 0)\n\t\t\tlineendType = atoi(lineendParam.c_str());\n\t\tif (lineendType < 1 || lineendType > 3)\n\t\t\tisOptionError(arg, errorInfo);\n\t\telse if (lineendType == 1)\n\t\t\tformatter.setLineEndFormat(LINEEND_WINDOWS);\n\t\telse if (lineendType == 2)\n\t\t\tformatter.setLineEndFormat(LINEEND_LINUX);\n\t\telse if (lineendType == 3)\n\t\t\tformatter.setLineEndFormat(LINEEND_MACOLD);\n\t}\n\telse\n\t\tisOptionError(arg, errorInfo);\n#endif\n}\t// End of parseOption function\n\n// Parse options from the options file.\nvoid ASOptions::importOptions(istream &in, vector<string> &optionsVector)\n{\n\tchar ch;\n\tbool isInQuote = false;\n\tchar quoteChar = ' ';\n\tstring currentToken;\n\n\twhile (in)\n\t{\n\t\tcurrentToken = \"\";\n\t\tdo\n\t\t{\n\t\t\tin.get(ch);\n\t\t\tif (in.eof())\n\t\t\t\tbreak;\n\t\t\t// treat '#' as line comments\n\t\t\tif (ch == '#')\n\t\t\t\twhile (in)\n\t\t\t\t{\n\t\t\t\t\tin.get(ch);\n\t\t\t\t\tif (ch == '\\n' || ch == '\\r')\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t// break options on new-lines, tabs, commas, or spaces\n\t\t\t// remove quotes from output\n\t\t\tif (in.eof() || ch == '\\n' || ch == '\\r' || ch == '\\t' || ch == ',')\n\t\t\t\tbreak;\n\t\t\tif (ch == ' ' && !isInQuote)\n\t\t\t\tbreak;\n\t\t\tif (ch == quoteChar && isInQuote)\n\t\t\t\tbreak;\n\t\t\tif (ch == '\"' || ch == '\\'')\n\t\t\t{\n\t\t\t\tisInQuote = true;\n\t\t\t\tquoteChar = ch;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tcurrentToken.append(1, ch);\n\t\t}\n\t\twhile (in);\n\n\t\tif (currentToken.length() != 0)\n\t\t\toptionsVector.push_back(currentToken);\n\t\tisInQuote = false;\n\t}\n}\n\nstring ASOptions::getOptionErrors() const\n{\n\treturn optionErrors.str();\n}\n\nstring ASOptions::getParam(const string &arg, const char* op)\n{\n\treturn arg.substr(strlen(op));\n}\n\nstring ASOptions::getParam(const string &arg, const char* op1, const char* op2)\n{\n\treturn isParamOption(arg, op1) ? getParam(arg, op1) : getParam(arg, op2);\n}\n\nbool ASOptions::isOption(const string &arg, const char* op)\n{\n\treturn arg.compare(op) == 0;\n}\n\nbool ASOptions::isOption(const string &arg, const char* op1, const char* op2)\n{\n\treturn (isOption(arg, op1) || isOption(arg, op2));\n}\n\nvoid ASOptions::isOptionError(const string &arg, const string &errorInfo)\n{\n\tif (optionErrors.str().length() == 0)\n\t\toptionErrors << errorInfo << endl;   // need main error message\n\toptionErrors << arg << endl;\n}\n\nbool ASOptions::isParamOption(const string &arg, const char* option)\n{\n\tbool retVal = arg.compare(0, strlen(option), option) == 0;\n\t// if comparing for short option, 2nd char of arg must be numeric\n\tif (retVal && strlen(option) == 1 && arg.length() > 1)\n\t\tif (!isdigit((unsigned char)arg[1]))\n\t\t\tretVal = false;\n\treturn retVal;\n}\n\nbool ASOptions::isParamOption(const string &arg, const char* option1, const char* option2)\n{\n\treturn isParamOption(arg, option1) || isParamOption(arg, option2);\n}\n\n//----------------------------------------------------------------------------\n// Utf8_16 class\n//----------------------------------------------------------------------------\n\n// Return true if an int is big endian.\nbool Utf8_16::getBigEndian() const\n{\n\tshort int word = 0x0001;\n\tchar* byte = (char*) &word;\n\treturn (byte[0] ? false : true);\n}\n\n// Swap the two low order bytes of a 16 bit integer value.\nint Utf8_16::swap16bit(int value) const\n{\n\treturn ( ((value & 0xff) << 8) | ((value & 0xff00) >> 8) );\n}\n\n// Return the length of a utf-16 C string.\n// The length is in number of utf16_t.\nsize_t Utf8_16::utf16len(const utf16* utf16In) const\n{\n\tsize_t length = 0;\n\twhile (*utf16In++ != '\\0')\n\t\tlength++;\n\treturn length;\n}\n\n// Adapted from SciTE UniConversion.cxx.\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// Modified for Artistic Style by Jim Pattee.\n// Compute the length of an output utf-8 file given a utf-16 file.\n// Input inLen is the size in BYTES (not wchar_t).\nsize_t Utf8_16::Utf8LengthFromUtf16(const char* utf16In, size_t inLen, bool isBigEndian) const\n{\n\tsize_t len = 0;\n\tsize_t wcharLen = inLen / 2;\n\tconst short* uptr = reinterpret_cast<const short*>(utf16In);\n\tfor (size_t i = 0; i < wcharLen && uptr[i];)\n\t{\n\t\tsize_t uch = isBigEndian ? swap16bit(uptr[i]) : uptr[i];\n\t\tif (uch < 0x80)\n\t\t\tlen++;\n\t\telse if (uch < 0x800)\n\t\t\tlen += 2;\n\t\telse if ((uch >= SURROGATE_LEAD_FIRST) && (uch <= SURROGATE_TRAIL_LAST))\n\t\t{\n\t\t\tlen += 4;\n\t\t\ti++;\n\t\t}\n\t\telse\n\t\t\tlen += 3;\n\t\ti++;\n\t}\n\treturn len;\n}\n\n// Adapted from SciTE Utf8_16.cxx.\n// Copyright (C) 2002 Scott Kirkwood.\n// Modified for Artistic Style by Jim Pattee.\n// Convert a utf-8 file to utf-16.\nsize_t Utf8_16::Utf8ToUtf16(char* utf8In, size_t inLen, bool isBigEndian, char* utf16Out) const\n{\n\tint nCur = 0;\n\tubyte* pRead = reinterpret_cast<ubyte*>(utf8In);\n\tutf16* pCur = reinterpret_cast<utf16*>(utf16Out);\n\tconst ubyte* pEnd = pRead + inLen;\n\tconst utf16* pCurStart = pCur;\n\teState state = eStart;\n\n\t// the BOM will automatically be converted to utf-16\n\twhile (pRead < pEnd)\n\t{\n\t\tswitch (state)\n\t\t{\n\t\tcase eStart:\n\t\t\tif ((0xF0 & *pRead) == 0xF0)\n\t\t\t{\n\t\t\t\tnCur = (0x7 & *pRead) << 18;\n\t\t\t\tstate = eSecondOf4Bytes;\n\t\t\t}\n\t\t\telse if ((0xE0 & *pRead) == 0xE0)\n\t\t\t{\n\t\t\t\tnCur = (~0xE0 & *pRead) << 12;\n\t\t\t\tstate = ePenultimate;\n\t\t\t}\n\t\t\telse if ((0xC0 & *pRead) == 0xC0)\n\t\t\t{\n\t\t\t\tnCur = (~0xC0 & *pRead) << 6;\n\t\t\t\tstate = eFinal;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnCur = *pRead;\n\t\t\t\tstate = eStart;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase eSecondOf4Bytes:\n\t\t\tnCur |= (0x3F & *pRead) << 12;\n\t\t\tstate = ePenultimate;\n\t\t\tbreak;\n\t\tcase ePenultimate:\n\t\t\tnCur |= (0x3F & *pRead) << 6;\n\t\t\tstate = eFinal;\n\t\t\tbreak;\n\t\tcase eFinal:\n\t\t\tnCur |= (0x3F & *pRead);\n\t\t\tstate = eStart;\n\t\t\tbreak;\n\t\t}\n\t\t++pRead;\n\n\t\tif (state == eStart)\n\t\t{\n\t\t\tint codePoint = nCur;\n\t\t\tif (codePoint >= SURROGATE_FIRST_VALUE)\n\t\t\t{\n\t\t\t\tcodePoint -= SURROGATE_FIRST_VALUE;\n\t\t\t\tint lead = (codePoint >> 10) + SURROGATE_LEAD_FIRST;\n\t\t\t\t*pCur++ = static_cast<utf16>(isBigEndian ? swap16bit(lead) : lead);\n\t\t\t\tint trail = (codePoint & 0x3ff) + SURROGATE_TRAIL_FIRST;\n\t\t\t\t*pCur++ = static_cast<utf16>(isBigEndian ? swap16bit(trail) : trail);\n\t\t\t}\n\t\t\telse\n\t\t\t\t*pCur++ = static_cast<utf16>(isBigEndian ? swap16bit(codePoint) : codePoint);\n\t\t}\n\t}\n\t// return value is the output length in BYTES (not wchar_t)\n\treturn (pCur - pCurStart) * 2;\n}\n\n// Adapted from SciTE UniConversion.cxx.\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// Modified for Artistic Style by Jim Pattee.\n// Compute the length of an output utf-16 file given a utf-8 file.\n// Return value is the size in BYTES (not wchar_t).\nsize_t Utf8_16::Utf16LengthFromUtf8(const char* utf8In, size_t len) const\n{\n\tsize_t ulen = 0;\n\tsize_t charLen;\n\tfor (size_t i = 0; i < len;)\n\t{\n\t\tunsigned char ch = static_cast<unsigned char>(utf8In[i]);\n\t\tif (ch < 0x80)\n\t\t\tcharLen = 1;\n\t\telse if (ch < 0x80 + 0x40 + 0x20)\n\t\t\tcharLen = 2;\n\t\telse if (ch < 0x80 + 0x40 + 0x20 + 0x10)\n\t\t\tcharLen = 3;\n\t\telse\n\t\t{\n\t\t\tcharLen = 4;\n\t\t\tulen++;\n\t\t}\n\t\ti += charLen;\n\t\tulen++;\n\t}\n\t// return value is the length in bytes (not wchar_t)\n\treturn ulen * 2;\n}\n\n// Adapted from SciTE Utf8_16.cxx.\n// Copyright (C) 2002 Scott Kirkwood.\n// Modified for Artistic Style by Jim Pattee.\n// Convert a utf-16 file to utf-8.\nsize_t Utf8_16::Utf16ToUtf8(char* utf16In, size_t inLen, bool isBigEndian,\n                            bool firstBlock, char* utf8Out) const\n{\n\tint nCur16 = 0;\n\tint nCur = 0;\n\tubyte* pRead = reinterpret_cast<ubyte*>(utf16In);\n\tubyte* pCur = reinterpret_cast<ubyte*>(utf8Out);\n\tconst ubyte* pEnd = pRead + inLen;\n\tconst ubyte* pCurStart = pCur;\n\tstatic eState state = eStart;\t// state is retained for subsequent blocks\n\tif (firstBlock)\n\t\tstate = eStart;\n\n\t// the BOM will automatically be converted to utf-8\n\twhile (pRead < pEnd)\n\t{\n\t\tswitch (state)\n\t\t{\n\t\tcase eStart:\n\t\t\tif (pRead >= pEnd)\n\t\t\t{\n\t\t\t\t++pRead;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (isBigEndian)\n\t\t\t{\n\t\t\t\tnCur16 = static_cast<utf16>(*pRead++ << 8);\n\t\t\t\tnCur16 |= static_cast<utf16>(*pRead);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnCur16 = *pRead++;\n\t\t\t\tnCur16 |= static_cast<utf16>(*pRead << 8);\n\t\t\t}\n\t\t\tif (nCur16 >= SURROGATE_LEAD_FIRST && nCur16 <= SURROGATE_LEAD_LAST)\n\t\t\t{\n\t\t\t\t++pRead;\n\t\t\t\tint trail;\n\t\t\t\tif (isBigEndian)\n\t\t\t\t{\n\t\t\t\t\ttrail = static_cast<utf16>(*pRead++ << 8);\n\t\t\t\t\ttrail |= static_cast<utf16>(*pRead);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\ttrail = *pRead++;\n\t\t\t\t\ttrail |= static_cast<utf16>(*pRead << 8);\n\t\t\t\t}\n\t\t\t\tnCur16 = (((nCur16 & 0x3ff) << 10) | (trail & 0x3ff)) + SURROGATE_FIRST_VALUE;\n\t\t\t}\n\t\t\t++pRead;\n\n\t\t\tif (nCur16 < 0x80)\n\t\t\t{\n\t\t\t\tnCur = static_cast<ubyte>(nCur16 & 0xFF);\n\t\t\t\tstate = eStart;\n\t\t\t}\n\t\t\telse if (nCur16 < 0x800)\n\t\t\t{\n\t\t\t\tnCur = static_cast<ubyte>(0xC0 | (nCur16 >> 6));\n\t\t\t\tstate = eFinal;\n\t\t\t}\n\t\t\telse if (nCur16 < SURROGATE_FIRST_VALUE)\n\t\t\t{\n\t\t\t\tnCur = static_cast<ubyte>(0xE0 | (nCur16 >> 12));\n\t\t\t\tstate = ePenultimate;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tnCur = static_cast<ubyte>(0xF0 | (nCur16 >> 18));\n\t\t\t\tstate = eSecondOf4Bytes;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase eSecondOf4Bytes:\n\t\t\tnCur = static_cast<ubyte>(0x80 | ((nCur16 >> 12) & 0x3F));\n\t\t\tstate = ePenultimate;\n\t\t\tbreak;\n\t\tcase ePenultimate:\n\t\t\tnCur = static_cast<ubyte>(0x80 | ((nCur16 >> 6) & 0x3F));\n\t\t\tstate = eFinal;\n\t\t\tbreak;\n\t\tcase eFinal:\n\t\t\tnCur = static_cast<ubyte>(0x80 | (nCur16 & 0x3F));\n\t\t\tstate = eStart;\n\t\t\tbreak;\n\t\t}\n\t\t*pCur++ = static_cast<ubyte>(nCur);\n\t}\n\treturn pCur - pCurStart;\n}\n\n//----------------------------------------------------------------------------\n\n}   // end of astyle namespace\n\n//----------------------------------------------------------------------------\n\nusing namespace astyle;\n\n//----------------------------------------------------------------------------\n// ASTYLE_JNI functions for Java library builds\n//----------------------------------------------------------------------------\n\n#ifdef ASTYLE_JNI\n\n// called by a java program to get the version number\n// the function name is constructed from method names in the calling java program\nextern \"C\"  EXPORT\njstring STDCALL Java_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass)\n{\n\treturn env->NewStringUTF(g_version);\n}\n\n// called by a java program to format the source code\n// the function name is constructed from method names in the calling java program\nextern \"C\"  EXPORT\njstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env,\n                                                jobject obj,\n                                                jstring textInJava,\n                                                jstring optionsJava)\n{\n\tg_env = env;                                // make object available globally\n\tg_obj = obj;                                // make object available globally\n\n\tjstring textErr = env->NewStringUTF(\"\");    // zero length text returned if an error occurs\n\n\t// get the method ID\n\tjclass cls = env->GetObjectClass(obj);\n\tg_mid = env->GetMethodID(cls, \"ErrorHandler\", \"(ILjava/lang/String;)V\");\n\tif (g_mid == 0)\n\t{\n\t\tcout << \"Cannot find java method ErrorHandler\" << endl;\n\t\treturn textErr;\n\t}\n\n\t// convert jstring to char*\n\tconst char* textIn = env->GetStringUTFChars(textInJava, NULL);\n\tconst char* options = env->GetStringUTFChars(optionsJava, NULL);\n\n\t// call the C++ formatting function\n\tchar* textOut = AStyleMain(textIn, options, javaErrorHandler, javaMemoryAlloc);\n\t// if an error message occurred it was displayed by errorHandler\n\tif (textOut == NULL)\n\t\treturn textErr;\n\n\t// release memory\n\tjstring textOutJava = env->NewStringUTF(textOut);\n\tdelete [] textOut;\n\tenv->ReleaseStringUTFChars(textInJava, textIn);\n\tenv->ReleaseStringUTFChars(optionsJava, options);\n\n\treturn textOutJava;\n}\n\n// Call the Java error handler\nvoid STDCALL javaErrorHandler(int errorNumber, const char* errorMessage)\n{\n\tjstring errorMessageJava = g_env->NewStringUTF(errorMessage);\n\tg_env->CallVoidMethod(g_obj, g_mid, errorNumber, errorMessageJava);\n}\n\n// Allocate memory for the formatted text\nchar* STDCALL javaMemoryAlloc(unsigned long memoryNeeded)\n{\n\t// error condition is checked after return from AStyleMain\n\tchar* buffer = new(nothrow) char[memoryNeeded];\n\treturn buffer;\n}\n#endif\t// ASTYLE_JNI\n\n//----------------------------------------------------------------------------\n// Entry point for AStyleMainUtf16 library builds\n//----------------------------------------------------------------------------\n\n#ifdef ASTYLE_LIB\n\nextern \"C\" EXPORT utf16_t* STDCALL AStyleMainUtf16(const utf16_t* pSourceIn,\t// the source to be formatted\n                                                   const utf16_t* pOptions,\t\t// AStyle options\n                                                   fpError fpErrorHandler,\t\t// error handler function\n                                                   fpAlloc fpMemoryAlloc)\t\t// memory allocation function\n{\n\tif (fpErrorHandler == NULL)         // cannot display a message if no error handler\n\t\treturn NULL;\n\n\tif (pSourceIn == NULL)\n\t{\n\t\tfpErrorHandler(101, \"No pointer to source input.\");\n\t\treturn NULL;\n\t}\n\tif (pOptions == NULL)\n\t{\n\t\tfpErrorHandler(102, \"No pointer to AStyle options.\");\n\t\treturn NULL;\n\t}\n\tif (fpMemoryAlloc == NULL)\n\t{\n\t\tfpErrorHandler(103, \"No pointer to memory allocation function.\");\n\t\treturn NULL;\n\t}\n#ifndef _WIN32\n\t// check size of utf16_t on Linux\n\tint sizeCheck = 2;\n\tif (sizeof(utf16_t) != sizeCheck)\n\t{\n\t\tfpErrorHandler(104, \"Unsigned short is not the correct size.\");\n\t\treturn NULL;\n\t}\n#endif\n\n\tASLibrary library;\n\tutf16_t* utf16Out = library.formatUtf16(pSourceIn, pOptions, fpErrorHandler, fpMemoryAlloc);\n\treturn utf16Out;\n}\n\n//----------------------------------------------------------------------------\n// ASTYLE_LIB entry point for library builds\n//----------------------------------------------------------------------------\n/*\n * IMPORTANT VC DLL linker for WIN32 must have the parameter  /EXPORT:AStyleMain=_AStyleMain@16\n *                                                            /EXPORT:AStyleGetVersion=_AStyleGetVersion@0\n * No /EXPORT is required for x64\n */\nextern \"C\" EXPORT char* STDCALL AStyleMain(const char* pSourceIn,\t\t// the source to be formatted\n                                           const char* pOptions,\t\t// AStyle options\n                                           fpError fpErrorHandler,\t\t// error handler function\n                                           fpAlloc fpMemoryAlloc)\t\t// memory allocation function\n{\n\tif (fpErrorHandler == NULL)         // cannot display a message if no error handler\n\t\treturn NULL;\n\n\tif (pSourceIn == NULL)\n\t{\n\t\tfpErrorHandler(101, \"No pointer to source input.\");\n\t\treturn NULL;\n\t}\n\tif (pOptions == NULL)\n\t{\n\t\tfpErrorHandler(102, \"No pointer to AStyle options.\");\n\t\treturn NULL;\n\t}\n\tif (fpMemoryAlloc == NULL)\n\t{\n\t\tfpErrorHandler(103, \"No pointer to memory allocation function.\");\n\t\treturn NULL;\n\t}\n\n\tASFormatter formatter;\n\tASOptions options(formatter);\n\n\tvector<string> optionsVector;\n\tistringstream opt(pOptions);\n\n\toptions.importOptions(opt, optionsVector);\n\n\tbool ok = options.parseOptions(optionsVector, \"Invalid Artistic Style options:\");\n\tif (!ok)\n\t\tfpErrorHandler(130, options.getOptionErrors().c_str());\n\n\tistringstream in(pSourceIn);\n\tASStreamIterator<istringstream> streamIterator(&in);\n\tostringstream out;\n\tformatter.init(&streamIterator);\n\n\twhile (formatter.hasMoreLines())\n\t{\n\t\tout << formatter.nextLine();\n\t\tif (formatter.hasMoreLines())\n\t\t\tout << streamIterator.getOutputEOL();\n\t\telse\n\t\t{\n\t\t\t// this can happen if the file if missing a closing bracket and break-blocks is requested\n\t\t\tif (formatter.getIsLineReady())\n\t\t\t{\n\t\t\t\tout << streamIterator.getOutputEOL();\n\t\t\t\tout << formatter.nextLine();\n\t\t\t}\n\t\t}\n\t}\n\n\tunsigned long textSizeOut = out.str().length();\n\tchar* pTextOut = fpMemoryAlloc(textSizeOut + 1);     // call memory allocation function\n\tif (pTextOut == NULL)\n\t{\n\t\tfpErrorHandler(120, \"Allocation failure on output.\");\n\t\treturn NULL;\n\t}\n\n\tstrcpy(pTextOut, out.str().c_str());\n#ifndef NDEBUG\n\t// The checksum is an assert in the console build and ASFormatter.\n\t// This error returns the incorrectly formatted file to the editor.\n\t// This is done to allow the file to be saved for debugging purposes.\n\tif (formatter.getChecksumDiff() != 0)\n\t\tfpErrorHandler(220,\n\t\t               \"Checksum error.\\n\"\n\t\t               \"The incorrectly formatted file will be returned for debugging.\");\n#endif\n\treturn pTextOut;\n}\n\nextern \"C\" EXPORT const char* STDCALL AStyleGetVersion(void)\n{\n\treturn g_version;\n}\n\n// ASTYLECON_LIB is defined to exclude \"main\" from the test programs\n#elif !defined(ASTYLECON_LIB)\n\n//----------------------------------------------------------------------------\n// main function for ASConsole build\n//----------------------------------------------------------------------------\n\nint main(int argc, char** argv)\n{\n\t// create objects\n\tASFormatter formatter;\n\tg_console = new ASConsole(formatter);\n\n\t// process command line and options file\n\t// build the vectors fileNameVector, optionsVector, and fileOptionsVector\n\tvector<string> argvOptions;\n\targvOptions = g_console->getArgvOptions(argc, argv);\n\tg_console->processOptions(argvOptions);\n\n\t// if no files have been given, use cin for input and cout for output\n\tif (g_console->fileNameVectorIsEmpty())\n\t{\n\t\tg_console->formatCinToCout();\n\t\treturn EXIT_SUCCESS;\n\t}\n\n\t// process entries in the fileNameVector\n\tg_console->processFiles();\n\n\tdelete g_console;\n\treturn EXIT_SUCCESS;\n}\n\n#endif\t// ASTYLE_LIB\n"
  },
  {
    "path": "old/3rdpart/astyle/astyle_main.h",
    "content": "/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n *   astyle_main.h\n *\n *   Copyright (C) 2014 by Jim Pattee\n *   <http://www.gnu.org/licenses/lgpl-3.0.html>\n *\n *   This file is a part of Artistic Style - an indentation and\n *   reformatting tool for C, C++, C# and Java source files.\n *   <http://astyle.sourceforge.net>\n *\n *   Artistic Style is free software: you can redistribute it and/or modify\n *   it under the terms of the GNU Lesser General Public License as published\n *   by the Free Software Foundation, either version 3 of the License, or\n *   (at your option) any later version.\n *\n *   Artistic Style is distributed in the hope that it will be useful,\n *   but WITHOUT ANY WARRANTY; without even the implied warranty of\n *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n *   GNU Lesser General Public License for more details.\n *\n *   You should have received a copy of the GNU Lesser General Public License\n *   along with Artistic Style.  If not, see <http://www.gnu.org/licenses/>.\n *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n */\n\n#ifndef ASTYLE_MAIN_H\n#define ASTYLE_MAIN_H\n\n//----------------------------------------------------------------------------\n// headers\n//----------------------------------------------------------------------------\n\n#include \"astyle.h\"\n\n#include <sstream>\n#include <ctime>\n\n#if defined(__BORLANDC__) && __BORLANDC__ < 0x0650\n\t// Embarcadero needs this for the following utime.h\n\t// otherwise \"struct utimbuf\" gets an error on time_t\n\t// 0x0650 for C++Builder XE3\n\tusing std::time_t;\n#endif\n\n#if defined(_MSC_VER) || defined(__DMC__)\n\t#include <sys/utime.h>\n\t#include <sys/stat.h>\n#else\n\t#include <utime.h>\n\t#include <sys/stat.h>\n#endif                         // end compiler checks\n\n#ifdef ASTYLE_JNI\n\t#include <jni.h>\n\t#ifndef ASTYLE_LIB    // ASTYLE_LIB must be defined for ASTYLE_JNI\n\t\t#define ASTYLE_LIB\n\t#endif\n#endif  //  ASTYLE_JNI\n\n#ifndef ASTYLE_LIB\n\t// for console build only\n\t#include \"ASLocalizer.h\"\n\t#define _(a) localizer.settext(a)\n#endif\t// ASTYLE_LIB\n\n// for G++ implementation of string.compare:\n#if defined(__GNUC__) && __GNUC__ < 3\n\t#error - Use GNU C compiler release 3 or higher\n#endif\n\n// for namespace problem in version 5.0\n#if defined(_MSC_VER) && _MSC_VER < 1200        // check for V6.0\n\t#error - Use Microsoft compiler version 6 or higher\n#endif\n\n// for mingw BOM, UTF-16, and Unicode functions\n#if defined(__MINGW32__) && !defined(__MINGW64_VERSION_MAJOR)\n\t#if (__MINGW32_MAJOR_VERSION > 3) || ((__MINGW32_MAJOR_VERSION == 3) && (__MINGW32_MINOR_VERSION < 16))\n\t\t#error - Use MinGW compiler version 4 or higher\n\t#endif\n#endif\n\n//----------------------------------------------------------------------------\n// definitions\n//----------------------------------------------------------------------------\n\n#ifdef ASTYLE_LIB\n\n\t// define STDCALL and EXPORT for Windows\n\t// MINGW defines STDCALL in Windows.h (actually windef.h)\n\t// EXPORT has no value if ASTYLE_NO_EXPORT is defined\n\t#ifdef _WIN32\n\t\t#ifndef STDCALL\n\t\t\t#define STDCALL __stdcall\n\t\t#endif\n\t\t// define this to prevent compiler warning and error messages\n\t\t#ifdef ASTYLE_NO_EXPORT\n\t\t\t#define EXPORT\n\t\t#else\n\t\t\t#define EXPORT __declspec(dllexport)\n\t\t#endif\n\t\t// define STDCALL and EXPORT for non-Windows\n\t\t// visibility attribute allows \"-fvisibility=hidden\" compiler option\n\t#else\n\t\t#define STDCALL\n\t\t#if __GNUC__ >= 4\n\t\t\t#define EXPORT __attribute__ ((visibility (\"default\")))\n\t\t#else\n\t\t\t#define EXPORT\n\t\t#endif\n\t#endif\t// #ifdef _WIN32\n\n\t// define utf-16 bit text for the platform\n\ttypedef unsigned short utf16_t;\n\t// define pointers to callback error handler and memory allocation\n\ttypedef void (STDCALL* fpError)(int errorNumber, const char* errorMessage);\n\ttypedef char* (STDCALL* fpAlloc)(unsigned long memoryNeeded);\n\n#endif  // #ifdef ASTYLE_LIB\n\n//----------------------------------------------------------------------------\n// astyle namespace\n//----------------------------------------------------------------------------\n\nnamespace astyle {\n\n//----------------------------------------------------------------------------\n// ASStreamIterator class\n// typename will be istringstream for GUI and istream otherwise\n// ASSourceIterator is an abstract class defined in astyle.h\n//----------------------------------------------------------------------------\n\ntemplate<typename T>\nclass ASStreamIterator : public ASSourceIterator\n{\n\tpublic:\n\t\tbool checkForEmptyLine;\n\n\t\t// function declarations\n\t\tASStreamIterator(T* in);\n\t\tvirtual ~ASStreamIterator();\n\t\tbool getLineEndChange(int lineEndFormat) const;\n\t\tint  getStreamLength() const;\n\t\tstring nextLine(bool emptyLineWasDeleted);\n\t\tstring peekNextLine();\n\t\tvoid peekReset();\n\t\tvoid saveLastInputLine();\n\t\tstreamoff tellg();\n\n\tprivate:\n\t\tASStreamIterator(const ASStreamIterator &copy);       // copy constructor not to be implemented\n\t\tASStreamIterator &operator=(ASStreamIterator &);      // assignment operator not to be implemented\n\t\tT* inStream;            // pointer to the input stream\n\t\tstring buffer;          // current input line\n\t\tstring prevBuffer;      // previous input line\n\t\tint eolWindows;         // number of Windows line endings, CRLF\n\t\tint eolLinux;           // number of Linux line endings, LF\n\t\tint eolMacOld;          // number of old Mac line endings. CR\n\t\tchar outputEOL[4];      // next output end of line char\n\t\tstreamoff streamLength; // length of the input file stream\n\t\tstreamoff peekStart;    // starting position for peekNextLine\n\t\tbool prevLineDeleted;   // the previous input line was deleted\n\n\tpublic:\t// inline functions\n\t\tbool compareToInputBuffer(const string &nextLine_) const\n\t\t{ return (nextLine_ == prevBuffer); }\n\t\tconst char* getOutputEOL() const { return outputEOL; }\n\t\tbool hasMoreLines() const { return !inStream->eof(); }\n};\n\n//----------------------------------------------------------------------------\n// Utf8_16 class for utf8/16 conversions\n//----------------------------------------------------------------------------\n\nclass Utf8_16\n{\n\tprivate:\n\t\ttypedef unsigned short utf16; // 16 bits\n\t\ttypedef unsigned char utf8;   // 8 bits\n\t\ttypedef unsigned char ubyte;  // 8 bits\n\t\tenum { SURROGATE_LEAD_FIRST = 0xD800 };\n\t\tenum { SURROGATE_LEAD_LAST = 0xDBFF };\n\t\tenum { SURROGATE_TRAIL_FIRST = 0xDC00 };\n\t\tenum { SURROGATE_TRAIL_LAST = 0xDFFF };\n\t\tenum { SURROGATE_FIRST_VALUE = 0x10000 };\n\t\tenum eState { eStart, eSecondOf4Bytes, ePenultimate, eFinal };\n\n\tpublic:\n\t\tbool   getBigEndian() const;\n\t\tint    swap16bit(int value) const;\n\t\tsize_t utf16len(const utf16* utf16In) const;\n\t\tsize_t Utf8LengthFromUtf16(const char* utf16In, size_t inLen, bool isBigEndian) const;\n\t\tsize_t Utf8ToUtf16(char* utf8In, size_t inLen, bool isBigEndian, char* utf16Out) const;\n\t\tsize_t Utf16LengthFromUtf8(const char* utf8In, size_t inLen) const;\n\t\tsize_t Utf16ToUtf8(char* utf16In, size_t inLen, bool isBigEndian,\n\t\t                   bool firstBlock, char* utf8Out) const;\n};\n\n//----------------------------------------------------------------------------\n// ASOptions class for options processing\n// used by both console and library builds\n//----------------------------------------------------------------------------\n\nclass ASOptions\n{\n\tpublic:\n\t\tASOptions(ASFormatter &formatterArg) : formatter(formatterArg) {}\n\t\tstring getOptionErrors() const;\n\t\tvoid importOptions(istream &in, vector<string> &optionsVector);\n\t\tbool parseOptions(vector<string> &optionsVector, const string &errorInfo);\n\n\tprivate:\n\t\t// variables\n\t\tASFormatter &formatter;\t\t\t// reference to the ASFormatter object\n\t\tstringstream optionErrors;\t\t// option error messages\n\n\t\t// functions\n\t\tASOptions &operator=(ASOptions &);         // not to be implemented\n\t\tstring getParam(const string &arg, const char* op);\n\t\tstring getParam(const string &arg, const char* op1, const char* op2);\n\t\tbool isOption(const string &arg, const char* op);\n\t\tbool isOption(const string &arg, const char* op1, const char* op2);\n\t\tvoid isOptionError(const string &arg, const string &errorInfo);\n\t\tbool isParamOption(const string &arg, const char* option);\n\t\tbool isParamOption(const string &arg, const char* option1, const char* option2);\n\t\tvoid parseOption(const string &arg, const string &errorInfo);\n};\n\n#ifndef\tASTYLE_LIB\n\n//----------------------------------------------------------------------------\n// ASConsole class for console build\n//----------------------------------------------------------------------------\n\nclass ASConsole\n{\n\tprivate:    // variables\n\t\tASFormatter &formatter;             // reference to the ASFormatter object\n\t\tASLocalizer localizer;              // ASLocalizer object\n\t\t// command line options\n\t\tbool isRecursive;                   // recursive option\n\t\tbool isDryRun;                      // dry-run option\n\t\tbool noBackup;                      // suffix=none option\n\t\tbool preserveDate;                  // preserve-date option\n\t\tbool isVerbose;                     // verbose option\n\t\tbool isQuiet;                       // quiet option\n\t\tbool isFormattedOnly;               // formatted lines only option\n\t\tbool ignoreExcludeErrors;           // don't abort on unmatched excludes\n\t\tbool ignoreExcludeErrorsDisplay;    // don't display unmatched excludes\n\t\tbool optionsFileRequired;           // options= option\n\t\tbool useAscii;                      // ascii option\n\t\t// other variables\n\t\tbool bypassBrowserOpen;             // don't open the browser on html options\n\t\tbool hasWildcard;                   // file name includes a wildcard\n\t\tsize_t mainDirectoryLength;         // directory length to be excluded in displays\n\t\tbool filesAreIdentical;             // input and output files are identical\n\t\tint  filesFormatted;                // number of files formatted\n\t\tint  filesUnchanged;                // number of files unchanged\n\t\tbool lineEndsMixed;                 // output has mixed line ends\n\t\tint  linesOut;                      // number of output lines\n\t\tchar outputEOL[4];                  // current line end\n\t\tchar prevEOL[4];                    // previous line end\n\n\t\tUtf8_16 utf8_16;                    // utf8/16 conversion methods\n\n\t\tstring optionsFileName;             // file path and name of the options file to use\n\t\tstring origSuffix;                  // suffix= option\n\t\tstring targetDirectory;             // path to the directory being processed\n\t\tstring targetFilename;              // file name being processed\n\n\t\tvector<string> excludeVector;       // exclude from wildcard hits\n\t\tvector<bool>   excludeHitsVector;   // exclude flags for error reporting\n\t\tvector<string> fileNameVector;      // file paths and names from the command line\n\t\tvector<string> optionsVector;       // options from the command line\n\t\tvector<string> fileOptionsVector;   // options from the options file\n\t\tvector<string> fileName;            // files to be processed including path\n\n\tpublic:     // variables\n\t\tASConsole(ASFormatter &formatterArg) : formatter(formatterArg) {\n\t\t\t// command line options\n\t\t\tisRecursive = false;\n\t\t\tisDryRun = false;\n\t\t\tnoBackup = false;\n\t\t\tpreserveDate = false;\n\t\t\tisVerbose = false;\n\t\t\tisQuiet = false;\n\t\t\tisFormattedOnly = false;\n\t\t\tignoreExcludeErrors = false;\n\t\t\tignoreExcludeErrorsDisplay = false;\n\t\t\toptionsFileRequired = false;\n\t\t\tuseAscii = false;\n\t\t\t// other variables\n\t\t\tbypassBrowserOpen = false;\n\t\t\thasWildcard = false;\n\t\t\tfilesAreIdentical = true;\n\t\t\tlineEndsMixed = false;\n\t\t\toutputEOL[0] = '\\0';\n\t\t\tprevEOL[0] = '\\0';\n\t\t\torigSuffix = \".orig\";\n\t\t\tmainDirectoryLength = 0;\n\t\t\tfilesFormatted = 0;\n\t\t\tfilesUnchanged = 0;\n\t\t\tlinesOut = 0;\n\t\t}\n\n\tpublic:     // functions\n\t\tvoid convertLineEnds(ostringstream &out, int lineEnd);\n\t\tFileEncoding detectEncoding(const char* data, size_t dataSize) const;\n\t\tvoid error() const;\n\t\tvoid error(const char* why, const char* what) const;\n\t\tvoid formatCinToCout();\n\t\tvector<string> getArgvOptions(int argc, char** argv) const;\n\t\tbool fileNameVectorIsEmpty() const;\n\t\tbool getFilesAreIdentical() const;\n\t\tint  getFilesFormatted() const;\n\t\tbool getIgnoreExcludeErrors() const;\n\t\tbool getIgnoreExcludeErrorsDisplay() const;\n\t\tbool getIsDryRun() const;\n\t\tbool getIsFormattedOnly() const;\n\t\tbool getIsQuiet() const;\n\t\tbool getIsRecursive() const;\n\t\tbool getIsVerbose() const;\n\t\tbool getLineEndsMixed() const;\n\t\tbool getNoBackup() const;\n\t\tbool getPreserveDate() const;\n\t\tstring getLanguageID() const;\n\t\tstring getNumberFormat(int num, size_t = 0) const;\n\t\tstring getNumberFormat(int num, const char* groupingArg, const char* separator) const;\n\t\tstring getOptionsFileName() const;\n\t\tstring getOrigSuffix() const;\n\t\tvoid processFiles();\n\t\tvoid processOptions(vector<string> &argvOptions);\n\t\tvoid setBypassBrowserOpen(bool state);\n\t\tvoid setIgnoreExcludeErrors(bool state);\n\t\tvoid setIgnoreExcludeErrorsAndDisplay(bool state);\n\t\tvoid setIsDryRun(bool state);\n\t\tvoid setIsFormattedOnly(bool state);\n\t\tvoid setIsQuiet(bool state);\n\t\tvoid setIsRecursive(bool state);\n\t\tvoid setIsVerbose(bool state);\n\t\tvoid setNoBackup(bool state);\n\t\tvoid setOptionsFileName(string name);\n\t\tvoid setOrigSuffix(string suffix);\n\t\tvoid setPreserveDate(bool state);\n\t\tvoid standardizePath(string &path, bool removeBeginningSeparator = false) const;\n\t\tbool stringEndsWith(const string &str, const string &suffix) const;\n\t\tvoid updateExcludeVector(string suffixParam);\n\t\tvector<string> getExcludeVector() const;\n\t\tvector<bool>   getExcludeHitsVector() const;\n\t\tvector<string> getFileNameVector() const;\n\t\tvector<string> getOptionsVector() const;\n\t\tvector<string> getFileOptionsVector() const;\n\t\tvector<string> getFileName() const;\n\n\tprivate:\t// functions\n\t\tASConsole &operator=(ASConsole &);         // not to be implemented\n\t\tvoid correctMixedLineEnds(ostringstream &out);\n\t\tvoid formatFile(const string &fileName_);\n\t\tstring getCurrentDirectory(const string &fileName_) const;\n\t\tvoid getFileNames(const string &directory, const string &wildcard);\n\t\tvoid getFilePaths(string &filePath);\n\t\tstring getParam(const string &arg, const char* op);\n\t\tvoid initializeOutputEOL(LineEndFormat lineEndFormat);\n\t\tbool isOption(const string &arg, const char* op);\n\t\tbool isOption(const string &arg, const char* op1, const char* op2);\n\t\tbool isParamOption(const string &arg, const char* option);\n\t\tbool isPathExclued(const string &subPath);\n\t\tvoid launchDefaultBrowser(const char* filePathIn = NULL) const;\n\t\tvoid printHelp() const;\n\t\tvoid printMsg(const char* msg, const string &data) const;\n\t\tvoid printSeparatingLine() const;\n\t\tvoid printVerboseHeader() const;\n\t\tvoid printVerboseStats(clock_t startTime) const;\n\t\tFileEncoding readFile(const string &fileName_, stringstream &in) const;\n\t\tvoid removeFile(const char* fileName_, const char* errMsg) const;\n\t\tvoid renameFile(const char* oldFileName, const char* newFileName, const char* errMsg) const;\n\t\tvoid setOutputEOL(LineEndFormat lineEndFormat, const char* currentEOL);\n\t\tvoid sleep(int seconds) const;\n\t\tint  waitForRemove(const char* oldFileName) const;\n\t\tint  wildcmp(const char* wild, const char* data) const;\n\t\tvoid writeFile(const string &fileName_, FileEncoding encoding, ostringstream &out) const;\n#ifdef _WIN32\n\t\tvoid displayLastError();\n#endif\n};\n#else\t// ASTYLE_LIB\n\n//----------------------------------------------------------------------------\n// ASLibrary class for library build\n//----------------------------------------------------------------------------\n\nclass ASLibrary\n{\n\tpublic:\n\t\tASLibrary() {}\n\t\tvirtual ~ASLibrary() {}\n\t\t// virtual functions are mocked in testing\n\t\tutf16_t* formatUtf16(const utf16_t*, const utf16_t*, fpError, fpAlloc) const;\n\t\tvirtual utf16_t* convertUtf8ToUtf16(const char* utf8In, fpAlloc fpMemoryAlloc) const;\n\t\tvirtual char* convertUtf16ToUtf8(const utf16_t* pSourceIn) const;\n\n\tprivate:\n\t\tstatic char* STDCALL tempMemoryAllocation(unsigned long memoryNeeded);\n\n\tprivate:\n\t\tUtf8_16 utf8_16;            // utf8/16 conversion methods\n};\n\n#endif\t// ASTYLE_LIB\n\n//----------------------------------------------------------------------------\n\n}   // end of namespace astyle\n\n//----------------------------------------------------------------------------\n// declarations for java native interface (JNI) build\n// they are called externally and are NOT part of the namespace\n//----------------------------------------------------------------------------\n#ifdef ASTYLE_JNI\nvoid  STDCALL javaErrorHandler(int errorNumber, const char* errorMessage);\nchar* STDCALL javaMemoryAlloc(unsigned long memoryNeeded);\n// the following function names are constructed from method names in the calling java program\nextern \"C\" EXPORT\njstring STDCALL Java_AStyleInterface_AStyleGetVersion(JNIEnv* env, jclass);\nextern \"C\" EXPORT\njstring STDCALL Java_AStyleInterface_AStyleMain(JNIEnv* env,\n                                                jobject obj,\n                                                jstring textInJava,\n                                                jstring optionsJava);\n#endif //  ASTYLE_JNI\n\n//----------------------------------------------------------------------------\n// declarations for UTF-16 interface\n// they are called externally and are NOT part of the namespace\n//----------------------------------------------------------------------------\n#ifdef ASTYLE_LIB\nextern \"C\" EXPORT\nutf16_t* STDCALL AStyleMainUtf16(const utf16_t* pSourceIn,\n                                 const utf16_t* pOptions,\n                                 fpError fpErrorHandler,\n                                 fpAlloc fpMemoryAlloc);\n#endif\t// ASTYLE_LIB\n\n//-----------------------------------------------------------------------------\n// declarations for standard DLL interface\n// they are called externally and are NOT part of the namespace\n//-----------------------------------------------------------------------------\n#ifdef ASTYLE_LIB\nextern \"C\" EXPORT char* STDCALL AStyleMain(const char* sourceIn,\n                                           const char* optionsIn,\n                                           fpError errorHandler,\n                                           fpAlloc memoryAlloc);\nextern \"C\" EXPORT const char* STDCALL AStyleGetVersion(void);\n#endif\t// ASTYLE_LIB\n\n//-----------------------------------------------------------------------------\n\n#endif // closes ASTYLE_MAIN_H\n"
  },
  {
    "path": "old/3rdpart/gdbdebugger/gdbdebugger.cpp",
    "content": "/**************************************************************************\r\n** This file is part of LiteIDE\r\n**\r\n** Copyright (c) 2011-2016 LiteIDE Team. All rights reserved.\r\n**\r\n** This library is free software; you can redistribute it and/or\r\n** modify it under the terms of the GNU Lesser General Public\r\n** License as published by the Free Software Foundation; either\r\n** version 2.1 of the License, or (at your option) any later version.\r\n**\r\n** This library is distributed in the hope that it will be useful,\r\n** but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r\n** Lesser General Public License for more details.\r\n**\r\n** In addition, as a special exception,  that plugins developed for LiteIDE,\r\n** are allowed to remain closed sourced and can be distributed under any license .\r\n** These rights are included in the file LGPL_EXCEPTION.txt in this package.\r\n**\r\n**************************************************************************/\r\n// Module: gdbdebugger.cpp\r\n// Creator: visualfc <visualfc@gmail.com>\r\n\r\n#include \"gdbdebugger.h\"\r\n\r\n#include <QCoreApplication>\r\n#include <QStandardItemModel>\r\n#include <QProcess>\r\n#include <QFile>\r\n#include <QDir>\r\n#include <QFileInfo>\r\n#include <QTextCodec>\r\n#include <QDebug>\r\n//lite_memory_check_begin\r\n#if defined(WIN32) && defined(_MSC_VER) &&  defined(_DEBUG)\r\n#define _CRTDBG_MAP_ALLOC\r\n#include <stdlib.h>\r\n#include <crtdbg.h>\r\n#define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__ )\r\n#define new DEBUG_NEW\r\n#endif\r\n//lite_memory_check_end\r\n\r\nstatic void GdbMiValueToItem(QStandardItem *item, const GdbMiValue &value)\r\n{\r\n    switch (value.type()) {\r\n    case GdbMiValue::Invalid:\r\n        item->appendRow(new QStandardItem(\"Invalid\"));\r\n        break;\r\n    case GdbMiValue::Const:\r\n        if (value.name().isEmpty()) {\r\n            item->appendRow(new QStandardItem(QString(value.data())));\r\n        } else {\r\n            item->appendRow(new QStandardItem(QString(value.name()+\"=\"+value.data())));\r\n        }\r\n        break;\r\n    case GdbMiValue::List: {\r\n        QStandardItem *in = new QStandardItem(QString(value.name()));\r\n        item->appendRow(in);\r\n        for (int i = 0; i < value.childCount(); i++) {\r\n            QStandardItem *iv = new QStandardItem(QString(\"[%1]\").arg(i));\r\n            in->appendRow(iv);\r\n            GdbMiValueToItem(iv,value.childAt(i));\r\n        }\r\n        break;\r\n    }\r\n    case GdbMiValue::Tuple: {\r\n        QStandardItem *iv = item;\r\n        if (!value.name().isEmpty()) {\r\n            iv = new QStandardItem(QString(value.name()));\r\n            item->appendRow(iv);\r\n        }\r\n        foreach (const GdbMiValue &v, value.children()) {\r\n            GdbMiValueToItem(iv,v);\r\n        }\r\n        break;\r\n    }\r\n    }\r\n}\r\n\r\nGdbDebugger::GdbDebugger(QObject *parent) :\r\n    QObject(parent)\r\n{\r\n    m_process = new QProcess(this);\r\n    m_asyncModel = new QStandardItemModel(this);\r\n    m_asyncItem = new QStandardItem;\r\n    m_asyncModel->appendRow(m_asyncItem);\r\n    /*\r\n    m_asyncModel->setHeaderData(0,Qt::Horizontal,\"Reason\");\r\n    m_asyncModel->setHeaderData(1,Qt::Horizontal,\"Address\");\r\n    m_asyncModel->setHeaderData(2,Qt::Horizontal,\"Function\");\r\n    m_asyncModel->setHeaderData(3,Qt::Horizontal,\"File\");\r\n    m_asyncModel->setHeaderData(4,Qt::Horizontal,\"Line\");\r\n    m_asyncModel->setHeaderData(5,Qt::Horizontal,\"Thread ID\");\r\n    m_asyncModel->setHeaderData(6,Qt::Horizontal,\"Stoped Threads\");\r\n    */\r\n    m_varsModel = new QStandardItemModel(0,3,this);\r\n    m_varsModel->setHeaderData(0,Qt::Horizontal,\"Name\");\r\n    m_varsModel->setHeaderData(1,Qt::Horizontal,\"Value\");\r\n    m_varsModel->setHeaderData(2,Qt::Horizontal,\"Type\");\r\n\r\n    m_watchModel = new QStandardItemModel(0,3,this);\r\n    m_watchModel->setHeaderData(0,Qt::Horizontal,\"Name\");\r\n    m_watchModel->setHeaderData(1,Qt::Horizontal,\"Value\");\r\n    m_watchModel->setHeaderData(2,Qt::Horizontal,\"Type\");\r\n\r\n    m_framesModel = new QStandardItemModel(0,5,this);\r\n    m_framesModel->setHeaderData(0,Qt::Horizontal,\"Level\");\r\n    m_framesModel->setHeaderData(1,Qt::Horizontal,\"Address\");\r\n    m_framesModel->setHeaderData(2,Qt::Horizontal,\"Function\");\r\n    m_framesModel->setHeaderData(3,Qt::Horizontal,\"File\");\r\n    m_framesModel->setHeaderData(4,Qt::Horizontal,\"Line\");\r\n\r\n    m_libraryModel = new QStandardItemModel(0,2,this);\r\n    m_libraryModel->setHeaderData(0,Qt::Horizontal,\"Id\");\r\n    m_libraryModel->setHeaderData(1,Qt::Horizontal,\"Thread Groups\");\r\n\r\n    m_gdbinit = false;\r\n    m_gdbexit = false;\r\n\r\n    // connect(app,SIGNAL(loaded()),this,SLOT(appLoaded()));\r\n    connect(m_process,SIGNAL(started()),this,SIGNAL(debugStarted()));\r\n    connect(m_process,SIGNAL(finished(int)),this,SLOT(finished(int)));\r\n    connect(m_process,SIGNAL(error(QProcess::ProcessError)),this,SLOT(error(QProcess::ProcessError)));\r\n    connect(m_process,SIGNAL(readyReadStandardError()),this,SLOT(readStdError()));\r\n    connect(m_process,SIGNAL(readyReadStandardOutput()),this,SLOT(readStdOutput()));\r\n}\r\n\r\nGdbDebugger::~GdbDebugger()\r\n{\r\n    if (m_process) {\r\n        delete m_process;\r\n    }\r\n}\r\n\r\nGdbDebugger *GdbDebugger::instance()\r\n{\r\n    static GdbDebugger *_instance = nullptr;\r\n    if (!_instance) {\r\n        _instance = new GdbDebugger(QCoreApplication::instance());\r\n    }\r\n    return _instance;\r\n}\r\n\r\nvoid GdbDebugger::appLoaded()\r\n{\r\n    // m_envManager = LiteApi::findExtensionObject<LiteApi::IEnvManager*>(m_liteApp,\"LiteApi.IEnvManager\");\r\n}\r\n\r\nQString GdbDebugger::mimeType() const\r\n{\r\n    return QLatin1String(\"debugger/gdb\");\r\n}\r\n\r\nQAbstractItemModel *GdbDebugger::debugModel(DEBUG_MODEL_TYPE type)\r\n{\r\n    if (type == ASYNC_MODEL) {\r\n        return m_asyncModel;\r\n    } else if (type == VARS_MODEL) {\r\n        return m_varsModel;\r\n    } else if (type == WATCHES_MODEL) {\r\n        return m_watchModel;\r\n    }else if (type == CALLSTACK_MODEL) {\r\n        return m_framesModel;\r\n    } else if (type == LIBRARY_MODEL) {\r\n        return m_libraryModel;\r\n    }\r\n    return 0;\r\n}\r\n\r\nvoid GdbDebugger::setWorkingDirectory(const QString &dir)\r\n{\r\n    m_process->setWorkingDirectory(dir);\r\n}\r\n\r\nvoid GdbDebugger::setEnvironment (const QStringList &environment)\r\n{\r\n    m_process->setEnvironment(environment);\r\n}\r\n\r\nbool GdbDebugger::start(const QString &program, const QStringList& argv, const QString &progName)\r\n{\r\n\r\n    m_gdbFilePath = program;\r\n    if (m_gdbFilePath.isEmpty()) {\r\n        return false;\r\n    }\r\n\r\n    clear();\r\n    QStringList args;\r\n    args << \"-iex\" << \"set mi-async 1\"\r\n         << \"-iex\" << \"set auto-load safe-path .\"\r\n         << argv\r\n         << \"--interpreter=mi\"\r\n         << progName;\r\n    m_process->start(m_gdbFilePath, args);\r\n\r\n    QString log = QString(\"%1 %2 [%3]\").arg(m_gdbFilePath).arg(args.join(' ')).arg(m_process->workingDirectory());\r\n    emit debugLog(DebugRuntimeLog,log);\r\n\r\n    return true;\r\n}\r\n\r\nvoid GdbDebugger::targetRemoteAttach(const QString &medium)\r\n{\r\n    command(QString(\"-target-select remote %1\").arg(medium));\r\n}\r\n\r\nvoid GdbDebugger::stop()\r\n{\r\n    command(\"-gdb-exit\");\r\n    if (!m_process->waitForFinished(300)) {\r\n        m_process->kill();\r\n    }\r\n}\r\n\r\nbool GdbDebugger::isRunning()\r\n{\r\n    return m_process->state() != QProcess::NotRunning;\r\n}\r\n\r\nvoid GdbDebugger::continueRun()\r\n{\r\n    command(\"-exec-continue\");\r\n}\r\n\r\nvoid GdbDebugger::interruptRun()\r\n{\r\n    command(\"-exec-interrupt\");\r\n}\r\n\r\nvoid GdbDebugger::stepOver()\r\n{\r\n    command(\"-exec-next\");\r\n}\r\n\r\nvoid GdbDebugger::stepInto()\r\n{\r\n    command(\"-exec-step\");\r\n}\r\n\r\nvoid GdbDebugger::stepOut()\r\n{\r\n    command(\"-exec-finish\");\r\n}\r\n\r\nvoid GdbDebugger::runToLine(const QString &fileName, int line)\r\n{\r\n    line++;\r\n    GdbCmd cmd;\r\n    QStringList args;\r\n    args << \"-break-insert\";\r\n    args << \"-t\";\r\n    args << QString(\"%1:%2\").arg(fileName).arg(line);\r\n    cmd.setCmd(args);\r\n    command(cmd);\r\n    command(\"-exec-continue\");\r\n}\r\n\r\nvoid GdbDebugger::createWatch(const QString &var)\r\n{\r\n    QString value;\r\n    if (value.contains(\".\")) {\r\n        value = \"\\'\"+var+\"\\'\";\r\n    } else {\r\n        value = var;\r\n    }\r\n    createWatchHelp(var,false,true);\r\n}\r\n\r\nvoid GdbDebugger::removeWatch(const QString &name)\r\n{\r\n    removeWatchHelp(name,true,true);\r\n}\r\n\r\nvoid GdbDebugger::removeAllWatch()\r\n{\r\n    //removeWatchHelp\r\n    foreach (QString name, m_watchList) {\r\n        removeWatchHelp(name,true,true);\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::createWatchHelp(const QString &var, bool floating, bool watchModel)\r\n{\r\n    GdbCmd cmd;\r\n    QStringList args;\r\n    args << \"-var-create\";\r\n    args << \"-\";\r\n    if (floating) {\r\n        args << \"@\";\r\n    } else {\r\n        args << \"*\";\r\n    }\r\n    args << var;\r\n    cmd.setCmd(args);\r\n    cmd.insert(\"var\",var);\r\n    if (watchModel) {\r\n        cmd.insert(\"watchModel\",true);\r\n    }\r\n    command(cmd);\r\n}\r\n\r\nvoid GdbDebugger::removeWatchHelp(const QString &value, bool byName, bool children)\r\n{\r\n    QString name;\r\n    QString var;\r\n    if (byName) {\r\n        name = value;\r\n        var = m_varNameMap.key(name);\r\n    } else {\r\n        var = value;\r\n        name = m_varNameMap.value(var);\r\n    }\r\n    QStringList args;\r\n    args << \"-var-delete\";\r\n    if (children) {\r\n        args << \"-c\";\r\n    }\r\n    args << name;\r\n    GdbCmd cmd;\r\n    cmd.setCmd(args);\r\n    cmd.insert(\"var\",var);\r\n    cmd.insert(\"name\",name);\r\n    cmd.insert(\"children\",children);\r\n    command(cmd);\r\n}\r\n\r\nvoid GdbDebugger::showFrame(QModelIndex index)\r\n{\r\n    QStandardItem* file = m_framesModel->item( index.row(), 3 );\r\n    QStandardItem* line = m_framesModel->item( index.row(), 4 );\r\n    if( !file || !line ) {\r\n        return;\r\n    }\r\n    QString filename = file->text();\r\n    int lineno = line->text().toInt();\r\n    if( lineno <= 0 ) {\r\n        return;\r\n    }\r\n    emit setFrameLine(filename, lineno - 1 );\r\n}\r\n\r\nvoid GdbDebugger::expandItem(QModelIndex index, DEBUG_MODEL_TYPE type)\r\n{\r\n    QStandardItem *parent = 0;\r\n    if (type == VARS_MODEL) {\r\n        parent = m_varsModel->itemFromIndex(index);\r\n    } else if (type == WATCHES_MODEL) {\r\n        parent = m_watchModel->itemFromIndex(index);\r\n    }\r\n    if (!parent) {\r\n        return;\r\n    }\r\n    if (parent->data(VarExpanded).toInt() == 1) {\r\n        return;\r\n    }\r\n    parent->setData(1,VarExpanded);\r\n    for (int i = 0; i < parent->rowCount(); i++) {\r\n        QStandardItem *item = parent->child(i);\r\n        QString name = item->data(VarNameRole).toString();\r\n        int num = item->data(VarNumChildRole).toInt();\r\n        if (num > 0) {\r\n            updateVarListChildren(name);\r\n        }\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::setInitBreakTable(const QMultiMap<QString,int> &bks)\r\n{\r\n    m_initBks = bks;\r\n}\r\n\r\nvoid GdbDebugger::setInitWatchList(const QStringList &names)\r\n{\r\n    foreach (QString name, names) {\r\n        createWatch(name);\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::insertBreakPoint(const QString &fileName, int line)\r\n{\r\n    line++;\r\n    QString location = QString(\"%1:%2\").arg(fileName).arg(line);\r\n    if (m_locationBkMap.contains(location)) {\r\n        return;\r\n    }\r\n    QStringList args;\r\n    args << \"-break-insert\";\r\n    args << QString(\"%1:%2\").arg(fileName).arg(line);\r\n    GdbCmd cmd;\r\n    cmd.setCmd(args);\r\n    cmd.insert(\"file\",fileName);\r\n    cmd.insert(\"line\",line);\r\n    command(cmd);\r\n}\r\n\r\nvoid GdbDebugger::removeBreakPoint(const QString &fileName, int line)\r\n{\r\n    line++;\r\n    QString location = QString(\"%1:%2\").arg(fileName).arg(line);\r\n    QString number = m_locationBkMap.key(location);\r\n    if (number.isEmpty()) {\r\n        return;\r\n    }\r\n    QStringList args;\r\n    args << \"-break-delete\";\r\n    args << number;\r\n    GdbCmd cmd;\r\n    cmd.setCmd(args);\r\n    command(cmd);\r\n}\r\n\r\nvoid GdbDebugger::command_helper(const GdbCmd &cmd, bool emitOut)\r\n{\r\n    m_token++;\r\n    QByteArray buf = cmd.makeCmd(m_token);\r\n    if (emitOut) {\r\n        emit debugLog(DebugConsoleLog,\">>> \"+QString::fromUtf8(buf));\r\n    }\r\n#ifdef Q_OS_WIN\r\n    buf.append(\"\\r\\n\");\r\n#else\r\n    buf.append(\"\\n\");\r\n#endif\r\n    m_tokenCookieMap.insert(m_token,cmd.cookie());\r\n    m_process->write(buf);\r\n}\r\n\r\nvoid GdbDebugger::command(const GdbCmd &cmd)\r\n{\r\n    command_helper(cmd,true);\r\n}\r\n\r\nvoid GdbDebugger::enterAppText(const QString &text)\r\n{\r\n    //if (m_tty) {\r\n    //    m_tty->write(text.toUtf8());\r\n    //} else {\r\n    m_process->write(text.toUtf8());\r\n    //}\r\n}\r\n\r\nvoid GdbDebugger::enterDebugText(const QString &text)\r\n{\r\n    command(text);\r\n}\r\n\r\nvoid  GdbDebugger::command(const QByteArray &cmd)\r\n{\r\n    command_helper(GdbCmd(cmd),true);\r\n}\r\n\r\nvoid GdbDebugger::readStdError()\r\n{\r\n    emit debugLog(DebugErrorLog, QString::fromUtf8(m_process->readAllStandardError()));\r\n}\r\n\r\nstatic bool isNameChar(char c)\r\n{\r\n    // could be 'stopped' or 'shlibs-added'\r\n    return (c >= 'a' && c <= 'z') || c == '-';\r\n}\r\n\r\n/*\r\n27.4.2 gdb/mi Output Syntax\r\n\r\nThe output from gdb/mi consists of zero or more out-of-band records followed, optionally,\r\nby a single result record. This result record is for the most recent command. The sequence\r\nof output records is terminated by (gdb).\r\nIf an input command was prefixed with a token then the corresponding output for that\r\ncommand will also be prefixed by that same token.\r\n\r\nIf an input command was prefixed with a token then the corresponding output for that\r\ncommand will also be prefixed by that same token.\r\n\r\noutput -> ( out-of-band-record )* [ result-record ] \"(gdb)\" nl\r\nresult-record ->\r\n[ token ] \"^\" result-class ( \",\" result )* nl\r\nout-of-band-record ->\r\nasync-record | stream-record\r\nasync-record ->\r\nexec-async-output | status-async-output | notify-async-output\r\nexec-async-output ->\r\n[ token ] \"*\" async-output\r\nstatus-async-output ->\r\n[ token ] \"+\" async-output\r\nnotify-async-output ->\r\n[ token ] \"=\" async-output\r\nasync-output ->\r\nasync-class ( \",\" result )* nl\r\nresult-class ->\r\n\"done\" | \"running\" | \"connected\" | \"error\" | \"exit\"\r\nasync-class ->\r\n\"stopped\" | others (where others will be added depending on the needs¡ªthis\r\nis still in development).\r\nresult -> variable \"=\" value\r\nvariable ->\r\nstring\r\nvalue -> const | tuple | list\r\nconst -> c-string\r\ntuple -> \"{}\" | \"{\" result ( \",\" result )* \"}\"\r\nlist -> \"[]\" | \"[\" value ( \",\" value )* \"]\" | \"[\" result ( \",\" result )* \"]\"\r\nstream-record ->\r\nconsole-stream-output | target-stream-output | log-stream-output\r\nconsole-stream-output ->\r\n\"~\" c-string\r\ntarget-stream-output ->\r\n\"@\" c-string\r\nlog-stream-output ->\r\n\"&\" c-string\r\nnl -> CR | CR-LF\r\n*/\r\n\r\nvoid GdbDebugger::handleResponse(const QByteArray &buff)\r\n{\r\n    qDebug() << \"response \" << buff;\r\n    if (buff.isEmpty() || buff == \"(gdb) \")\r\n        return;\r\n\r\n    const char *from = buff.constData();\r\n    const char *to = from + buff.size();\r\n    const char *inner;\r\n\r\n    int token = -1;\r\n    // Token is a sequence of numbers.\r\n    for (inner = from; inner != to; ++inner)\r\n        if (*inner < '0' || *inner > '9')\r\n            break;\r\n    if (from != inner) {\r\n        token = QByteArray(from, inner - from).toInt();\r\n        from = inner;\r\n    }\r\n    // Next char decides kind of response.\r\n    const char c = *from++;\r\n    switch (c) {\r\n    case '*':\r\n    case '+':\r\n    case '=':\r\n    {\r\n        QByteArray asyncClass;\r\n        for (; from != to; ++from) {\r\n            const char c = *from;\r\n            if (!isNameChar(c))\r\n                break;\r\n            asyncClass += *from;\r\n        }\r\n        GdbMiValue result;\r\n        while (from != to) {\r\n            GdbMiValue data;\r\n            if (*from != ',') {\r\n                // happens on archer where we get\r\n                // 23^running <NL> *running,thread-id=\"all\" <NL> (gdb)\r\n                result.m_type = GdbMiValue::Tuple;\r\n                break;\r\n            }\r\n            ++from; // skip ','\r\n            data.parseResultOrValue(from, to);\r\n            if (data.isValid()) {\r\n                //qDebug() << \"parsed result:\" << data.toString();\r\n                result.m_children += data;\r\n                result.m_type = GdbMiValue::Tuple;\r\n            }\r\n        }\r\n        handleAsyncClass(asyncClass,result);\r\n        break;\r\n    }\r\n    case '~':\r\n        handleConsoleStream(GdbMiValue::parseCString(from, to));\r\n        break;\r\n    case '@':\r\n        handleTargetStream(GdbMiValue::parseCString(from, to));\r\n        break;\r\n    case '&':\r\n        handleLogStream(GdbMiValue::parseCString(from, to));\r\n        break;\r\n    case '^': {\r\n        GdbResponse response;\r\n\r\n        response.token = token;\r\n\r\n        for (inner = from; inner != to; ++inner)\r\n            if (*inner < 'a' || *inner > 'z')\r\n                break;\r\n\r\n        QByteArray resultClass = QByteArray::fromRawData(from, inner - from);\r\n        if (resultClass == \"done\") {\r\n            response.resultClass = GdbResultDone;\r\n        } else if (resultClass == \"running\") {\r\n            response.resultClass = GdbResultRunning;\r\n            emit execRunning();\r\n        } else if (resultClass == \"connected\") {\r\n            response.resultClass = GdbResultConnected;\r\n        } else if (resultClass == \"error\") {\r\n            response.resultClass = GdbResultError;\r\n        } else if (resultClass == \"exit\") {\r\n            response.resultClass = GdbResultExit;\r\n        } else {\r\n            response.resultClass = GdbResultUnknown;\r\n        }\r\n\r\n        from = inner;\r\n        if (from != to) {\r\n            if (*from == ',') {\r\n                ++from;\r\n                response.data.parseTuple_helper(from, to);\r\n                response.data.m_type = GdbMiValue::Tuple;\r\n                response.data.m_name = \"data\";\r\n            } else {\r\n                // Archer has this.\r\n                response.data.m_type = GdbMiValue::Tuple;\r\n                response.data.m_name = \"data\";\r\n            }\r\n        }\r\n        if (m_tokenCookieMap.contains(token)) {\r\n            response.cookie = m_tokenCookieMap.take(token);\r\n        }\r\n        handleResultRecord(response);\r\n        break;\r\n    }\r\n    default: {\r\n        from--;\r\n        QByteArray out(from,to-from);\r\n        out.append(\"\\n\");\r\n        emit debugLog(DebugApplationLog, QString::fromUtf8(out));\r\n        break;\r\n    }\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleStopped(const GdbMiValue &result)\r\n{\r\n    QByteArray reason = result.findChild(\"reason\").data();\r\n    m_handleState.setReason(reason);\r\n    m_handleState.setStopped(true);\r\n    if (reason.startsWith(\"exited\")) {\r\n        m_handleState.setExited(true);\r\n        m_handleState.setReason(reason);\r\n        return;\r\n    }\r\n    GdbMiValue frame = result.findChild(\"frame\");\r\n    if (frame.isValid()) {\r\n        QString fullname = frame.findChild(\"fullname\").data();\r\n        QString file = frame.findChild(\"file\").data();\r\n        QString line = frame.findChild(\"line\").data();\r\n        if (!fullname.isEmpty()) {\r\n            emit setCurrentLine(fullname,line.toInt()-1);\r\n        } else if (!file.isEmpty()) {\r\n            //fix go build bug, not find fullname\r\n            //file=\"C:/Users/ADMINI~1/AppData/Local/Temp/2/bindist308287094/go/src/pkg/fmt/print.go\"\r\n            int i = file.indexOf(\"/go/src/pkg\");\r\n            if (i > 0) {\r\n                QString fullname = /*LiteApi::getGOROOT(m_liteApp)+*/ file.right(file.length()-i-3);\r\n                emit setCurrentLine(fullname,line.toInt()-1);\r\n            }\r\n        }\r\n    }\r\n    emit execStop(QString(reason));\r\n}\r\n\r\nvoid GdbDebugger::handleLibrary(const GdbMiValue &result)\r\n{\r\n    QString id = result.findChild(\"id\").data();\r\n    QString thread_group = result.findChild(\"thread-group\").data();\r\n    m_libraryModel->appendRow(QList<QStandardItem*>()\r\n                              << new QStandardItem(id)\r\n                              << new QStandardItem(thread_group)\r\n                              );\r\n}\r\n\r\nvoid GdbDebugger::handleAsyncClass(const QByteArray &asyncClass, const GdbMiValue &result)\r\n{\r\n    m_asyncItem->removeRows(0,m_asyncItem->rowCount());\r\n    m_asyncItem->setText(asyncClass);\r\n    //QStandardItem *item = new QStandardItem(QString(asyncClass));\r\n    GdbMiValueToItem(m_asyncItem,result);\r\n    //m_asyncModel->clear();\r\n    //m_asyncModel->appendRow(item);\r\n    if (asyncClass == \"stopped\") {\r\n        handleStopped(result);\r\n    } else if (asyncClass == \"library-loaded\") {\r\n        handleLibrary(result);\r\n    }\r\n    emit setExpand(ASYNC_MODEL, m_asyncModel->indexFromItem(m_asyncItem),true);\r\n}\r\n\r\nvoid GdbDebugger::handleConsoleStream(const QByteArray&)\r\n{\r\n\r\n}\r\n\r\nvoid GdbDebugger::handleTargetStream(const QByteArray&)\r\n{\r\n\r\n}\r\n\r\nvoid GdbDebugger::handleLogStream(const QByteArray&)\r\n{\r\n\r\n}\r\n\r\nvoid GdbDebugger::handleResultStackListFrame(const GdbResponse &response, QMap<QString,QVariant>&)\r\n{\r\n    //10000015^done,stack=[frame={level=\"0\",addr=\"0x0040113f\",func=\"main.main\",file=\"F:/hg/debug_test/hello/main.go\",fullname=\"F:/hg/debug_test/hello/main.go\",line=\"36\"},frame={level=\"1\",addr=\"0x00401f8a\",func=\"runtime.mainstart\",file=\"386/asm.s\",fullname=\"c:/go/src/pkg/runtime/386/asm.s\",line=\"96\"},frame={level=\"2\",addr=\"0x0040bcfe\",func=\"runtime.initdone\",file=\"/go/src/pkg/runtime/proc.c\",fullname=\"c:/go/src/pkg/runtime/proc.c\",line=\"242\"},frame={level=\"3\",addr=\"0x00000000\",func=\"??\"}]\r\n    m_framesModel->removeRows(0,m_framesModel->rowCount());\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    GdbMiValue stack = response.data.findChild(\"stack\");\r\n    if (stack.isList()) {\r\n        for (int i = 0; i < stack.childCount(); i++) {\r\n            GdbMiValue child = stack.childAt(i);\r\n            if (child.isValid() && child.name() == \"frame\") {\r\n                QString level = child.findChild(\"level\").data();\r\n                QString addr = child.findChild(\"addr\").data();\r\n                QString func = child.findChild(\"func\").data();\r\n                QString file = child.findChild(\"file\").data();\r\n                QString line = child.findChild(\"line\").data();\r\n                m_framesModel->appendRow(QList<QStandardItem*>()\r\n                                         << new QStandardItem(level)\r\n                                         << new QStandardItem(addr)\r\n                                         << new QStandardItem(func)\r\n                                         << new QStandardItem(file)\r\n                                         << new QStandardItem(line)\r\n                                         );\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleResultStackListVariables(const GdbResponse &response, QMap<QString,QVariant>&)\r\n{\r\n    //10000014^done,variables=[{name=\"v\"},{name=\"x\"},{name=\"pt\"},{name=\"str\"},{name=\"sum1\"},{name=\"y\"}]\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    GdbMiValue vars = response.data.findChild(\"variables\");\r\n    if (vars.isList()) {\r\n        foreach (const GdbMiValue &child, vars.m_children) {\r\n            if (child.isValid()) {\r\n                QString var = child.findChild(\"name\").data();\r\n                if (!m_varNameMap.contains(var)) {\r\n                    createWatchHelp(var,true,false);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleResultVarCreate(const GdbResponse &response, QMap<QString,QVariant> &map)\r\n{\r\n    //10000018^done,name=\"var4\",numchild=\"0\",value=\"4265530\",type=\"int\",thread-id=\"1\",has_more=\"0\"\r\n    //10000019^done,name=\"var5\",numchild=\"2\",value=\"{...}\",type=\"struct string\",thread-id=\"1\",has_more=\"0\"\r\n    //10000020^done,name=\"var6\",numchild=\"3\",value=\"0x40bc38\",type=\"struct main.pt *\",thread-id=\"1\",has_more=\"0\"\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    QString name = response.data.findChild(\"name\").data();\r\n    QString numchild = response.data.findChild(\"numchild\").data();\r\n    QString value = response.data.findChild(\"value\").data();\r\n    QString type = response.data.findChild(\"type\").data();\r\n    QString var = map.value(\"var\").toString();\r\n    if (var.isEmpty()) {\r\n        var = map.value(\"cmdList\").toStringList().last();\r\n    }\r\n    if (m_varNameMap.contains(var)) {\r\n        var += QString(\"-%1\").arg(response.token);\r\n    }\r\n    m_varNameMap.insert(var,name);\r\n    QStandardItem *item = new QStandardItem(var);\r\n    item->setData(name,VarNameRole);\r\n    m_nameItemMap.insert(name,item);\r\n    if (map.value(\"watchModel\",false).toBool()) {\r\n        emit watchCreated(name,map.value(\"var\").toString());\r\n        m_watchList.append(name);\r\n        m_watchModel->appendRow(QList<QStandardItem*>()\r\n                                << item\r\n                                << new QStandardItem(value)\r\n                                << new QStandardItem(type)\r\n                                );\r\n    } else {\r\n        m_varsModel->appendRow(QList<QStandardItem*>()\r\n                               << item\r\n                               << new QStandardItem(value)\r\n                               << new QStandardItem(type)\r\n                               );\r\n    }\r\n    int num = numchild.toInt();\r\n    item->setData(num,VarNumChildRole);\r\n    if (num > 0 ){\r\n        updateVarListChildren(name);\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleResultVarListChildren(const GdbResponse &response, QMap<QString,QVariant> &map)\r\n{\r\n    //10000022^done,numchild=\"2\",children=[child={name=\"var5.str\",exp=\"str\",numchild=\"1\",value=\"0x4115c6 \\\"\\\\203\\\\304\\\\b\\\\303d\\\\213\\\\r,\\\"\",type=\"uint8 *\",thread-id=\"1\"},child={name=\"var5.len\",exp=\"len\",numchild=\"0\",value=\"4242460\",type=\"int\",thread-id=\"1\"}],has_more=\"0\"\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    GdbMiValue children = response.data.findChild(\"children\");\r\n    if (children.isList()) {\r\n        QString name = map.value(\"name\").toString();\r\n        QStandardItem *parent = m_nameItemMap.value(name);\r\n        if (parent == 0) {\r\n            return;\r\n        }\r\n        int num = response.data.findChild(\"numchild\").data().toInt();\r\n        parent->setData(num,VarNumChildRole);\r\n        for (int i = 0; i < children.childCount(); i++) {\r\n            GdbMiValue child = children.childAt(i);\r\n            if (child.name() == \"child\" && child.isTuple()) {\r\n                QString name = child.findChild(\"name\").data();\r\n                QString exp = child.findChild(\"exp\").data();\r\n                QString numchild = response.data.findChild(\"numchild\").data();\r\n                QString value = child.findChild(\"value\").data();\r\n                QString type = child.findChild(\"type\").data();\r\n                QStandardItem *item = new QStandardItem(exp);\r\n                item->setData(name,VarNameRole);\r\n                m_nameItemMap.insert(name,item);\r\n                parent->appendRow(QList<QStandardItem*>()\r\n                                  << item\r\n                                  << new QStandardItem(value)\r\n                                  << new QStandardItem(type)\r\n                                  );\r\n                int num = numchild.toInt();\r\n                item->setData(num,VarNumChildRole);\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleResultVarUpdate(const GdbResponse &response, QMap<QString,QVariant>&)\r\n{\r\n    //10000040^done,changelist=[{name=\"var2\",in_scope=\"true\",type_changed=\"false\",has_more=\"0\"}]\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    GdbMiValue list = response.data.findChild(\"changelist\");\r\n    if (list.isList()) {\r\n        for (int i = 0; i < list.childCount(); i++) {\r\n            GdbMiValue child = list.childAt(i);\r\n            if (child.isValid()) {\r\n                QString name = child.findChild(\"name\").data();\r\n                QString in_scope = child.findChild(\"in_scope\").data();\r\n                QString type_changed = child.findChild(\"type_changed\").data();\r\n                QString var = m_varNameMap.key(name);\r\n                if (in_scope == \"false\") {\r\n                    removeWatchHelp(var,false,false);\r\n                } else {\r\n                    if (type_changed == \"true\") {\r\n                        //remove watch children\r\n                        removeWatchHelp(var,false,true);\r\n                        //update type\r\n                        updateVarTypeInfo(name);\r\n                        //udpate children\r\n                        updateVarListChildren(name);\r\n                    }\r\n                    //update value\r\n                    updateVarValue(name);\r\n                }\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleResultVarDelete(const GdbResponse &response, QMap<QString,QVariant> &map)\r\n{\r\n    //10000062^done,ndeleted=\"1\"\r\n    //10000063^done,ndeleted=\"0\"\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    bool ndeleted = true;\r\n    if (response.data.findChild(\"ndeleted\").data() == \"0\") {\r\n        ndeleted = false;\r\n    }\r\n    QString var = map.value(\"var\").toString();\r\n    QString name = map.value(\"name\").toString();\r\n    QMutableMapIterator<QString,QStandardItem*> i(m_nameItemMap);\r\n    QString cls = name+\".\";\r\n    while (i.hasNext()) {\r\n        i.next();\r\n        if (i.key().startsWith(cls)) {\r\n            i.remove();\r\n        }\r\n    }\r\n\r\n    QStandardItemModel *model = m_varsModel;\r\n    if (m_watchList.contains(name)) {\r\n        emit watchRemoved(name);\r\n        m_watchList.removeAll(name);\r\n        model = m_watchModel;\r\n        ndeleted = 1;\r\n    }\r\n    if (ndeleted) {\r\n        m_varNameMap.remove(var);\r\n        m_nameItemMap.remove(name);\r\n    }\r\n    for (int i = 0; i < model->rowCount(); i++) {\r\n        QStandardItem *item = model->item(i,0);\r\n        if (item->data() == name) {\r\n            if (ndeleted) {\r\n                model->removeRow(i);\r\n            } else {\r\n                item->removeRows(0,item->rowCount());\r\n                item->setData(0,VarExpanded);\r\n                emit setExpand(VARS_MODEL,model->indexFromItem(item),false);\r\n            }\r\n            break;\r\n        }\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleResultVarUpdateValue(const GdbResponse &response, QMap<QString,QVariant> &map)\r\n{\r\n    //10000035^done,value=\"100\"\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    QString value = response.data.findChild(\"value\").data();\r\n    QString name = map.value(\"name\").toString();\r\n    QStandardItem *item = m_nameItemMap.value(name);\r\n    if (!item) {\r\n        return;\r\n    }\r\n    QStandardItem *parent = item->parent();\r\n    QStandardItem *v = 0;\r\n    if (parent) {\r\n        v = parent->child(item->row(),1);\r\n    } else {\r\n        v = item->model()->item(item->row(),1);\r\n    }\r\n    if (v) {\r\n        v->setData(value,Qt::DisplayRole);\r\n#if QT_VERSION >= 0x050000\r\n        v->setData(QColor(Qt::red),Qt::TextColorRole);\r\n#else\r\n        v->setData(Qt::red,Qt::TextColorRole);\r\n#endif\r\n        m_varChangedItemList.insert(v);\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleResultVarUpdateType(const GdbResponse &response, QMap<QString,QVariant> &map)\r\n{\r\n    //10000060^done,type=\"struct string\"\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    QString type = response.data.findChild(\"type\").data();\r\n    QString name = map.value(\"name\").toString();\r\n    QStandardItem *item = m_nameItemMap.value(name);\r\n    if (!item) {\r\n        return;\r\n    }\r\n    QStandardItem *parent = item->parent();\r\n    QStandardItem *v = 0;\r\n    if (parent) {\r\n        v = parent->child(item->row(),2);\r\n    } else {\r\n        v = item->model()->item(item->row(),2);\r\n    }\r\n    if (v) {\r\n        v->setData(type,Qt::DisplayRole);\r\n#if QT_VERSION >= 0x050000\r\n        v->setData(QColor(Qt::red),Qt::TextColorRole);\r\n#else\r\n        v->setData(Qt::red,Qt::TextColorRole);\r\n#endif\r\n        m_varChangedItemList.insert(v);\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleBreakInsert(const GdbResponse &response, QMap<QString,QVariant>&)\r\n{\r\n    // >>> 10000029-break-insert F:/hg/debug_test/hello/main.go:31\r\n    // 10000029^done,bkpt={number=\"2\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"0x004010dd\",func=\"main.test\",file=\"F:/hg/debug_test/hello/main.go\",fullname=\"F:/hg/debug_test/hello/main.go\",line=\"31\",times=\"0\",original-location=\"F:/hg/debug_test/hello/main.go:31\"}\r\n\r\n    // >>> 10000046-break-insert F:/hg/debug_test/hello/main.go:37\r\n    // 10000046^done,bkpt={number=\"3\",type=\"breakpoint\",disp=\"keep\",enabled=\"y\",addr=\"0x0040118a\",func=\"main.main\",file=\"F:/hg/debug_test/hello/main.go\",fullname=\"F:/hg/debug_test/hello/main.go\",line=\"37\",times=\"0\",original-location=\"F:/hg/debug_test/hello/main.go:37\"}\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    GdbMiValue bkpt = response.data.findChild(\"bkpt\");\r\n    if (bkpt.isTuple()) {\r\n        QString number = bkpt.findChild(\"number\").data();\r\n        QString org_location= bkpt.findChild(\"original-location\").data();\r\n        QString file = bkpt.findChild(\"file\").data();\r\n        QString line = bkpt.findChild(\"line\").data();\r\n        m_locationBkMap.insert(number,org_location);\r\n        emit breakInserted(number.toInt(), file, line.toInt());\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::handleBreakDelete(const GdbResponse &response, QMap<QString,QVariant> &map)\r\n{\r\n    if (response.resultClass != GdbResultDone) {\r\n        return;\r\n    }\r\n    QStringList cmdList = map.value(\"cmdList\").toStringList();\r\n    if (cmdList.size() != 2) {\r\n        return;\r\n    }\r\n    QString number = cmdList.at(1);\r\n    m_locationBkMap.remove(number);\r\n    emit breakDeleted(number.toInt());\r\n}\r\n\r\nvoid GdbDebugger::handleRemoteResponse(const GdbResponse &response, QMap<QString, QVariant> &map)\r\n{\r\n    if (response.resultClass != GdbResultConnected) {\r\n        return;\r\n    }\r\n    // TODO add remote response handling\r\n    emit targetRemoteAttached();\r\n}\r\n\r\nvoid GdbDebugger::handleResultRecord(const GdbResponse &response)\r\n{\r\n    if (response.cookie.type() != QVariant::Map) {\r\n        return;\r\n    }\r\n    QMap<QString,QVariant> map = response.cookie.toMap();\r\n    QString cmd = map.value(\"cmd\").toString();\r\n    if (cmd.isEmpty()) {\r\n        return;\r\n    }\r\n    QStringList cmdList = map.value(\"cmdList\").toStringList();\r\n    if (cmdList.isEmpty()) {\r\n        return;\r\n    }\r\n    if (cmdList.at(0) == \"-stack-list-variables\") {\r\n        handleResultStackListVariables(response,map);\r\n    } else if (cmdList.at(0) == \"-stack-list-frames\") {\r\n        handleResultStackListFrame(response,map);\r\n    } else if (cmdList.at(0) == \"-var-create\") {\r\n        handleResultVarCreate(response,map);\r\n    }  else if (cmdList.at(0) == \"-var-list-children\") {\r\n        handleResultVarListChildren(response,map);\r\n    } else if (cmdList.at(0) == \"-var-update\") {\r\n        handleResultVarUpdate(response,map);\r\n    } else if (cmdList.at(0) == \"-var-delete\") {\r\n        handleResultVarDelete(response,map);\r\n    } else if (cmdList.at(0) == \"-var-evaluate-expression\") {\r\n        handleResultVarUpdateValue(response,map);\r\n    } else if (cmdList.at(0) == \"-var-info-type\") {\r\n        handleResultVarUpdateType(response,map);\r\n    } else if (cmdList.at(0) == \"-break-insert\") {\r\n        handleBreakInsert(response,map);\r\n    } else if (cmdList.at(0) == \"-break-delete\") {\r\n        handleBreakDelete(response,map);\r\n    } else if (cmdList.at(0) == \"-target-select\") {\r\n        handleRemoteResponse(response, map);\r\n    }\r\n}\r\n\r\nvoid GdbDebugger::clear()\r\n{\r\n    m_gdbinit = false;\r\n    m_gdbexit = false;\r\n    m_busy = false;\r\n    m_token = 10000000;\r\n    m_handleState.clear();\r\n    m_varNameMap.clear();\r\n    m_watchList.clear();\r\n    m_nameItemMap.clear();\r\n    m_tokenCookieMap.clear();\r\n    m_varChangedItemList.clear();\r\n    m_inbuffer.clear();\r\n    m_locationBkMap.clear();\r\n    m_framesModel->removeRows(0,m_framesModel->rowCount());\r\n    m_libraryModel->removeRows(0,m_libraryModel->rowCount());\r\n    m_varsModel->removeRows(0,m_varsModel->rowCount());\r\n    m_watchModel->removeRows(0,m_watchModel->rowCount());\r\n}\r\n\r\nvoid GdbDebugger::initGdb()\r\n{\r\n#if 0\r\n    command(\"set unwindonsignal on\");\r\n    command(\"set overload-resolution off\");\r\n    command(\"handle SIGSEGV nopass stop print\");\r\n    command(\"set breakpoint pending on\");\r\n    command(\"set width 0\");\r\n    command(\"set height 0\");\r\n    command(\"set auto-solib-add on\");\r\n    if (!m_runtimeFilePath.isEmpty()) {\r\n#ifdef Q_OS_WIN\r\n        QStringList pathList = getGOPATH(m_liteApp,false);\r\n        QString paths;\r\n        foreach(QString path, pathList) {\r\n            paths += QDir::fromNativeSeparators(path)+\"/src\";\r\n            paths += \";\";\r\n        }\r\n\r\n        command(\"-environment-directory \"+m_runtimeFilePath.toLatin1());\r\n        //command(\"-environment-directory \"+m_runtimeFilePath.toLatin1()+\";\"+paths.toLatin1());\r\n        command(\"set substitute-path /go/src/pkg/runtime \"+m_runtimeFilePath.toLatin1());\r\n#else\r\n        command(\"-environment-directory \"+m_runtimeFilePath.toUtf8());\r\n        command(\"set substitute-path /go/src/pkg/runtime \"+m_runtimeFilePath.toUtf8());\r\n#endif\r\n    }\r\n    //command(\"set \");\r\n#endif\r\n\r\n    QMapIterator<QString,int> i(m_initBks);\r\n    while (i.hasNext()) {\r\n        i.next();\r\n        QString fileName = i.key();\r\n        QList<int> lines = m_initBks.values(fileName);\r\n        foreach(int line, lines) {\r\n            insertBreakPoint(fileName,line);\r\n        }\r\n    }\r\n    //command(\"-gdb-set mi-async on\");\r\n    command(\"-gdb-show mi-async\");\r\n    command(\"-break-insert main\");\r\n    command(\"-exec-run\");\r\n    debugLoaded();\r\n}\r\n\r\nvoid GdbDebugger::updateWatch()\r\n{\r\n    foreach(QStandardItem *item, m_varChangedItemList) {\r\n#if QT_VERSION >= 0x050000\r\n        item->setData(QColor(Qt::black),Qt::TextColorRole);\r\n#else\r\n        item->setData(Qt::black,Qt::TextColorRole);\r\n#endif\r\n    }\r\n    m_varChangedItemList.clear();\r\n    command(\"-var-update *\");\r\n}\r\n\r\nvoid GdbDebugger::updateLocals()\r\n{\r\n    command(\"-stack-list-variables 0\");\r\n}\r\n\r\nvoid GdbDebugger::updateFrames()\r\n{\r\n    command(\"-stack-list-frames\");\r\n}\r\n\r\nvoid GdbDebugger::updateBreaks()\r\n{\r\n    command(\"-break-info\");\r\n}\r\n\r\nvoid GdbDebugger::updateVarTypeInfo(const QString &name)\r\n{\r\n    QStringList args;\r\n    args << \"-var-info-type\";\r\n    args << name;\r\n    GdbCmd cmd;\r\n    cmd.setCmd(args);\r\n    cmd.insert(\"name\",name);\r\n    command(cmd);\r\n}\r\n\r\nvoid GdbDebugger::updateVarListChildren(const QString &name)\r\n{\r\n    GdbCmd cmd;\r\n    QStringList args;\r\n    args << \"-var-list-children\";\r\n    args << \"1\";\r\n    args << name;\r\n    cmd.setCmd(args);\r\n    cmd.insert(\"name\",name);\r\n    command(cmd);\r\n}\r\n\r\nvoid GdbDebugger::updateVarValue(const QString &name)\r\n{\r\n    QStringList args;\r\n    args << \"-var-evaluate-expression\";\r\n    args << name;\r\n    GdbCmd cmd;\r\n    cmd.setCmd(args);\r\n    cmd.insert(\"name\",name);\r\n    command(cmd);\r\n}\r\n\r\nvoid GdbDebugger::readStdOutput()\r\n{\r\n    int newstart = 0;\r\n    int scan = m_inbuffer.size();\r\n    m_inbuffer.append(m_process->readAllStandardOutput());\r\n\r\n    // This can trigger when a dialog starts a nested event loop.\r\n    if (m_busy)\r\n        return;\r\n\r\n    while (newstart < m_inbuffer.size()) {\r\n        int start = newstart;\r\n        int end = m_inbuffer.indexOf('\\n', scan);\r\n        if (end < 0) {\r\n            m_inbuffer.remove(0, start);\r\n            return;\r\n        }\r\n        newstart = end + 1;\r\n        scan = newstart;\r\n        if (end == start)\r\n            continue;\r\n#ifdef Q_OS_WIN\r\n        if (m_inbuffer.at(end - 1) == '\\r') {\r\n            --end;\r\n            if (end == start)\r\n                continue;\r\n        }\r\n#endif\r\n        m_busy = true;\r\n        QByteArray data = QByteArray::fromRawData(m_inbuffer.constData() + start, end - start);\r\n        handleResponse(data);\r\n        m_busy = false;\r\n    }\r\n    emit debugLog(DebugConsoleLog,QString::fromUtf8(m_inbuffer));\r\n    m_inbuffer.clear();\r\n\r\n    if (!m_gdbinit) {\r\n        m_gdbinit = true;\r\n        initGdb();\r\n    }\r\n\r\n    if (m_handleState.exited() && !m_gdbexit) {\r\n        m_gdbexit = true;\r\n        stop();\r\n    } else if (m_handleState.stopped()) {\r\n        updateWatch();\r\n        updateLocals();\r\n        updateFrames();\r\n    }\r\n\r\n    m_handleState.clear();\r\n}\r\n\r\nvoid GdbDebugger::finished(int code)\r\n{\r\n    clear();\r\n    //if (m_tty) {\r\n    //    m_tty->shutdown();\r\n    //}\r\n    emit debugStoped();\r\n    emit debugLog(DebugRuntimeLog,QString(\"Program exited with code %1\").arg(code));\r\n}\r\n\r\nvoid GdbDebugger::error(QProcess::ProcessError err)\r\n{\r\n    clear();\r\n    //if (m_tty) {\r\n    //    m_tty->shutdown();\r\n    //}\r\n    emit debugStoped();\r\n    emit debugLog(DebugRuntimeLog,QString(\"Error! %1\").arg(\"????\"));\r\n}\r\n\r\nvoid GdbDebugger::readTty(const QByteArray &data)\r\n{\r\n    emit debugLog(DebugApplationLog,QString::fromUtf8(data));\r\n}\r\n"
  },
  {
    "path": "old/3rdpart/gdbdebugger/gdbdebugger.h",
    "content": "/**************************************************************************\r\n** This file is part of LiteIDE\r\n**\r\n** Copyright (c) 2011-2016 LiteIDE Team. All rights reserved.\r\n**\r\n** This library is free software; you can redistribute it and/or\r\n** modify it under the terms of the GNU Lesser General Public\r\n** License as published by the Free Software Foundation; either\r\n** version 2.1 of the License, or (at your option) any later version.\r\n**\r\n** This library is distributed in the hope that it will be useful,\r\n** but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r\n** Lesser General Public License for more details.\r\n**\r\n** In addition, as a special exception,  that plugins developed for LiteIDE,\r\n** are allowed to remain closed sourced and can be distributed under any license .\r\n** These rights are included in the file LGPL_EXCEPTION.txt in this package.\r\n**\r\n**************************************************************************/\r\n// Module: gdbdebugger.h\r\n// Creator: visualfc <visualfc@gmail.com>\r\n\r\n#ifndef GDBDEBUGGER_H\r\n#define GDBDEBUGGER_H\r\n\r\n#include <gdbmi.h>\r\n\r\n#include <QSet>\r\n#include <QAbstractItemModel>\r\n#include <QProcess>\r\n\r\nenum DEBUG_MODEL_TYPE{\r\n    ASYNC_MODEL = 1,\r\n    VARS_MODEL,\r\n    WATCHES_MODEL,\r\n    CALLSTACK_MODEL,\r\n    BREAKPOINTS_MODEL,\r\n    THREADS_MODEL,\r\n    LIBRARY_MODEL\r\n};\r\n\r\nenum DEBUG_LOG_TYPE {\r\n    DebugConsoleLog = 1,\r\n    DebugApplationLog,\r\n    DebugRuntimeLog,\r\n    DebugErrorLog\r\n};\r\n\r\nclass QProcess;\r\nclass GdbHandleState\r\n{\r\npublic:\r\n    GdbHandleState() : m_exited(false),m_stopped(false) {}\r\n    void clear()\r\n    {\r\n        m_reason.clear();\r\n        m_exited = false;\r\n        m_stopped = false;\r\n    }\r\n    void setExited(bool b) {m_exited = b;}\r\n    void setStopped(bool b) {m_stopped = b;}\r\n    void setReason(const QByteArray &reason) { m_reason = reason; }\r\n    bool exited() const { return m_exited; }\r\n    bool stopped() const { return m_stopped; }\r\n    QByteArray reason() const { return m_reason; }\r\npublic:\r\n    bool       m_exited;\r\n    bool       m_stopped;\r\n    QByteArray m_reason;\r\n};\r\n\r\nclass GdbCmd\r\n{\r\npublic:\r\n    GdbCmd()\r\n    {\r\n    }\r\n    GdbCmd(const QString &cmd)\r\n    {\r\n        setCmd(cmd);\r\n    }\r\n    GdbCmd(const QStringList &cmd)\r\n    {\r\n        setCmd(cmd);\r\n    }\r\n    void setCmd(const QString &cmd)\r\n    {\r\n        m_cmd = cmd;\r\n        m_cookie.insert(\"cmd\",m_cmd);\r\n        m_cookie.insert(\"cmdList\",cmd.split(\" \",QString::SkipEmptyParts));\r\n    }\r\n    void setCmd(const QStringList &cmd)\r\n    {\r\n        m_cmd = cmd.join(\" \");\r\n        m_cookie.insert(\"cmd\",m_cmd);\r\n        m_cookie.insert(\"cmdList\",cmd);\r\n    }\r\n    void insert(const QString &key, const QVariant &value)\r\n    {\r\n        m_cookie.insert(key,value);\r\n    }\r\n    QByteArray makeCmd(int index) const\r\n    {\r\n#ifdef Q_OS_WIN\r\n        return QString(\"%1%2\").arg(index,8,10,QLatin1Char('0')).arg(m_cmd).toLatin1();\r\n#else\r\n        return QString(\"%1%2\").arg(index,8,10,QLatin1Char('0')).arg(m_cmd).toUtf8();\r\n#endif\r\n    }\r\n    QMap<QString,QVariant> cookie() const\r\n    {\r\n        return m_cookie;\r\n    }\r\nprotected:\r\n    QString m_cmd;\r\n    QMap<QString,QVariant> m_cookie;\r\n};\r\n\r\nclass QStandardItemModel;\r\nclass QStandardItem;\r\n\r\nclass GdbDebugger : public QObject\r\n{\r\n    Q_OBJECT\r\nprivate:\r\n    GdbDebugger(QObject *parent = 0);\r\n    ~GdbDebugger();\r\n\r\npublic:\r\n    enum VarItemDataRole{\r\n        VarNameRole = Qt::UserRole + 1,\r\n        VarNumChildRole,\r\n        VarExpanded\r\n    };\r\n\r\n    static GdbDebugger *instance();\r\npublic:\r\n    virtual QString mimeType() const;\r\n    virtual QAbstractItemModel *debugModel(DEBUG_MODEL_TYPE type);\r\n    virtual void setWorkingDirectory(const QString &dir);\r\n    virtual void setEnvironment (const QStringList &environment);\r\n    virtual bool start(const QString &program, const QStringList &argv, const QString &progName);\r\n    virtual void targetRemoteAttach(const QString& medium);\r\n    virtual void stop();\r\n    virtual bool isRunning();\r\n    virtual void stepOver();\r\n    virtual void stepInto();\r\n    virtual void stepOut();\r\n    virtual void continueRun();\r\n    virtual void interruptRun();\r\n    virtual void runToLine(const QString &fileName, int line);\r\n    virtual void command(const QByteArray &cmd);\r\n    virtual void enterAppText(const QString &text);\r\n    virtual void enterDebugText(const QString &text);\r\n    virtual void expandItem(QModelIndex index, DEBUG_MODEL_TYPE type);\r\n    virtual void setInitBreakTable(const QMultiMap<QString,int> &bks);\r\n    virtual void setInitWatchList(const QStringList &names);\r\n    virtual void insertBreakPoint(const QString &fileName, int line);\r\n    virtual void removeBreakPoint(const QString &fileName, int line);\r\n\r\npublic:\r\n    virtual void command(const GdbCmd &cmd);\r\n    virtual void createWatch(const QString &var);\r\n    virtual void removeWatch(const QString &name);\r\n    virtual void removeAllWatch();\r\n    virtual void showFrame(QModelIndex index);\r\nprotected:\r\n    void createWatchHelp(const QString &var, bool floating, bool watchModel);\r\n    void removeWatchHelp(const QString &var, bool byName, bool children);\r\n    void removeWatchByNameHelp(const QString &name, bool children);\r\n    void command_helper(const GdbCmd &cmd, bool emitOut);\r\npublic slots:\r\n    void appLoaded();\r\n    void readStdError();\r\n    void readStdOutput();\r\n    void finished(int);\r\n    void error(QProcess::ProcessError);\r\n    void readTty(const QByteArray &data);\r\n\r\nsignals:\r\n    void debugStarted();\r\n    void debugStoped();\r\n    void debugLoaded();\r\n    void targetRemoteAttached();\r\n    void debugLog(DEBUG_LOG_TYPE type, const QString &log);\r\n    void setExpand(DEBUG_MODEL_TYPE type, const QModelIndex &index, bool expanded);\r\n    void setCurrentLine(const QString &fileName, int line);\r\n    void execStop(const QString& reason);\r\n    void execRunning();\r\n    void setFrameLine(const QString &fileName, int line);\r\n    void watchCreated(const QString &watch,const QString &name);\r\n    void watchRemoved(const QString &watch);\r\n    void breakInserted(int id, const QString& file, int line);\r\n    void breakDeleted(int id);\r\n\r\nprotected:\r\n    void handleResponse(const QByteArray &buff);\r\n    void handleStopped(const GdbMiValue &result);\r\n    void handleLibrary(const GdbMiValue &result);\r\n    void handleAsyncClass(const QByteArray &asyncClass, const GdbMiValue &result);\r\n    void handleConsoleStream(const QByteArray &data);\r\n    void handleTargetStream(const QByteArray &data);\r\n    void handleLogStream(const QByteArray &data);\r\n    void handleResultRecord(const GdbResponse &response);\r\n    void handleResultStackListFrame(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleResultStackListVariables(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleResultVarCreate(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleResultVarListChildren(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleResultVarUpdate(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleResultVarDelete(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleResultVarUpdateValue(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleResultVarUpdateType(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleBreakInsert(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleBreakDelete(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n    void handleRemoteResponse(const GdbResponse &response, QMap<QString,QVariant> &map);\r\n\r\nprotected:\r\n    void clear();\r\n    void initGdb();\r\n    void updateWatch();\r\n    void updateLocals();\r\n    void updateFrames();\r\n    void updateBreaks();\r\n    void updateVarTypeInfo(const QString &name);\r\n    void updateVarListChildren(const QString &name);\r\n    void updateVarValue(const QString &name);\r\n\r\nprotected:\r\n    QProcess *m_process;\r\n    QStandardItemModel *m_asyncModel;\r\n    QStandardItemModel *m_varsModel;\r\n    QStandardItemModel *m_watchModel;\r\n    QStandardItemModel *m_framesModel;\r\n    QStandardItemModel *m_libraryModel;\r\n    QStandardItem   *m_asyncItem;\r\n    QMap<int,QVariant> m_tokenCookieMap;\r\n    QMap<QString,QString> m_varNameMap;\r\n    QList<QString> m_watchList;\r\n    QMap<QString,QStandardItem*> m_nameItemMap;\r\n    QSet<QStandardItem*> m_varChangedItemList;\r\n    QString m_gdbFilePath;\r\n    QString m_runtimeFilePath;\r\n    QByteArray m_inbuffer;\r\n    GdbHandleState m_handleState;\r\n    QMultiMap<QString,int>  m_initBks;\r\n    QMap<QString,QString> m_locationBkMap;\r\n    bool    m_busy;\r\n    bool    m_gdbinit;\r\n    bool    m_gdbexit;\r\n    int     m_token;\r\n};\r\n\r\n#endif // GDBDEBUGGER_H\r\n"
  },
  {
    "path": "old/3rdpart/gdbdebugger/gdbdebugger.pri",
    "content": "INCLUDEPATH += $$PWD\nSOURCES += $$PWD/gdbdebugger.cpp\nHEADERS += $$PWD/gdbdebugger.h\n"
  },
  {
    "path": "old/3rdpart/qscintilla/ChangeLog",
    "content": "2017-02-20  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS:\n\tReleased as v2.10.\n\t[6c07847b2835] [2.10]\n\n\t* qt/qscintilla_cs.qm, qt/qscintilla_de.qm, qt/qscintilla_es.qm,\n\tqt/qscintilla_fr.qm, qt/qscintilla_pt_br.qm:\n\tUpdated the .qm files.\n\t[3b3c5924e746]\n\n\t* qt/qscintilla_fr.ts:\n\tPartial updated French translations from Alan Garny.\n\t[ca2d6917015e]\n\n2017-02-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tAdded /Transfer/ to the scroll bar replacement functions.\n\t[49cf7181402a]\n\n2017-02-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_de.ts:\n\tUpdated German translations from Detlev.\n\t[51cca6073075]\n\n2017-02-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_es.ts:\n\tUpdated Spanish translations from Jaime Seuma.\n\t[0e30abdd0907]\n\n2017-02-13  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* designer-Qt4Qt5/designer.pro, example-Qt4Qt5/application.pro,\n\tqt/qscintilla.pro:\n\tRemoved the 'release' option from all CONFIG lines.\n\t[0901267a8e49]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tAdded replaceHorizontalScrollBar() and replaceVerticalScrollBar() to\n\tQsciScintillaBase.\n\t[bb7efd26b8b3]\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts:\n\tUpdated the translation files.\n\t[76c23d751930]\n\n2017-01-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscilexermarkdown.sip, qt/qscilexerjson.cpp,\n\tqt/qscilexermarkdown.cpp, qt/qscilexermarkdown.h:\n\tUpdated the Markdown lexer with the latest settings from Detlev.\n\t[9e9992a4e9f7]\n\n2017-01-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciapis.cpp:\n\tFixed problems with auto-completion lists where contexts and image\n\tidentifiers were getting lost.\n\t[039599ba1b85]\n\n2017-01-16  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* designer-Qt4Qt5/designer.pro, example-Qt4Qt5/application.pro:\n\tFixed the example and designer plugin .pro files for the change\n\tlibrary name.\n\t[d6c564089958]\n\n\t* lib/README.doc:\n\tUpdated website links to https.\n\t[18a7013d4f8b]\n\n\t* qt/qsciabstractapis.h, qt/qsciapis.h, qt/qscicommand.h,\n\tqt/qscicommandset.h, qt/qscidocument.h, qt/qsciglobal.h,\n\tqt/qscilexer.h, qt/qscilexeravs.h, qt/qscilexerbash.h,\n\tqt/qscilexerbatch.h, qt/qscilexercmake.h,\n\tqt/qscilexercoffeescript.h, qt/qscilexercpp.h, qt/qscilexercsharp.h,\n\tqt/qscilexercss.h, qt/qscilexercustom.h, qt/qscilexerd.h,\n\tqt/qscilexerdiff.h, qt/qscilexerfortran.h, qt/qscilexerfortran77.h,\n\tqt/qscilexerhtml.h, qt/qscilexeridl.h, qt/qscilexerjava.h,\n\tqt/qscilexerjavascript.h, qt/qscilexerjson.h, qt/qscilexerlua.h,\n\tqt/qscilexermakefile.h, qt/qscilexermarkdown.h,\n\tqt/qscilexermatlab.h, qt/qscilexeroctave.h, qt/qscilexerpascal.h,\n\tqt/qscilexerperl.h, qt/qscilexerpo.h, qt/qscilexerpostscript.h,\n\tqt/qscilexerpov.h, qt/qscilexerproperties.h, qt/qscilexerpython.h,\n\tqt/qscilexerruby.h, qt/qscilexerspice.h, qt/qscilexersql.h,\n\tqt/qscilexertcl.h, qt/qscilexertex.h, qt/qscilexerverilog.h,\n\tqt/qscilexervhdl.h, qt/qscilexerxml.h, qt/qscilexeryaml.h,\n\tqt/qscimacro.h, qt/qsciprinter.h, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.h, qt/qscistyle.h, qt/qscistyledtext.h:\n\tRemoved all the __APPLE__ C++ linkages.\n\t[ecd39912cb9b]\n\n\t* NEWS, Python/sip/qscilexer.sip, qt/qscilexer.h:\n\tThe previously internal methods of QsciLexer are now part of the\n\tpublic API and are exposed to Python.\n\t[4791eae227c6]\n\n\t* NEWS, Python/configure.py, qt/features/qscintilla2.prf,\n\tqt/features_staticlib/qscintilla2.prf, qt/qscintilla.pro:\n\tThe name of the library now embeds the major version of Qt so that\n\tQt4 and Qt5 libraries can be installed in the same directory.\n\t[b501dcc67049]\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qscilexercustom.h,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tImplemented QscScintilla::bytes() and a corresponding text()\n\toverload mainly for the use of QsciLexerCustom::styleText()\n\timplementations.\n\t[ed7a5a072695]\n\n2017-01-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tUpdated the sub-class convertor code.\n\t[ee4e6efa0576]\n\n\t* NEWS, Python/sip/qscilexermarkdown.sip,\n\tPython/sip/qscimodcommon.sip, qt/qscilexermarkdown.cpp,\n\tqt/qscilexermarkdown.h, qt/qscintilla.pro:\n\tAdded the QsciLexerMarkdown class.\n\t[0b5e03e0b64f]\n\n2017-01-11  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qscilexerjson.sip, Python/sip/qscimodcommon.sip,\n\tqt/qscilexerjson.cpp, qt/qscilexerjson.h, qt/qscintilla.pro:\n\tImplemented QsciLexerJSON.\n\t[bb5118a2b0cb]\n\n2017-01-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qscilexercoffeescript.sip,\n\tqt/qscilexercoffeescript.cpp, qt/qscilexercoffeescript.h:\n\tAdded InstanceProperty to QsciLexerCoffeeScript.\n\t[2a6987f4c3c3]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tImplemented the new notifications.\n\t[12ba81979751]\n\n2017-01-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded the low-level popup options.\n\t[6a6fccaf8adf]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded support for multiple edge columns.\n\t[761b940d39c6]\n\n2017-01-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded the low-level idle styling support.\n\t[fe8c747abb81]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded the low-level support for fold text.\n\t[3afaaf7830c6]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tUpdates to the low-level target support.\n\t[709bfb578a28]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.h:\n\tAdded support for the additional indicators.\n\t[fb7bcbfc6c96]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded some more low-level constants.\n\t[d19d12e79c31]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded support for setting the margin background colour. Added\n\tsupport for setting the number of margins.\n\t[407db46c80a6]\n\n\t* qt/qscilexercustom.cpp, qt/qscilexercustom.h:\n\tFixed QsciLexerCustom::startStyling() now that the 2nd argument\n\tisn't used.\n\t[2d4cc3cdb123]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded support for visible whitespace in indentations only. Added\n\tsupport for tab drawing modes.\n\t[1ef385e510b8]\n\n\t* qt/InputMethod.cpp:\n\tUpdated the inputMethodEvent() implementation.\n\t[f0060458bd73]\n\n2017-01-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/InputMethod.cpp, qt/ScintillaQt.cpp, qt/ScintillaQt.h:\n\tFixed compilation bugs with SCI_NAMESPACE defined.\n\t[ef072ff5da5e]\n\n\t* lib/README.doc:\n\tMinor documentation updates.\n\t[f89ceb95b9c5]\n\n\t* qt/qsciscintillabase.cpp:\n\tFixed compilation bugs.\n\t[8fdfb9bca00d]\n\n\t* CONTRIBUTING, Python/configure-old.py, Python/configure.py, README,\n\tcocoa/PlatCocoa.h, cocoa/PlatCocoa.mm, cocoa/ScintillaCocoa.h,\n\tcocoa/ScintillaCocoa.mm, cocoa/ScintillaFramework/Info.plist, cocoa/\n\tScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj, coc\n\toa/ScintillaFramework/ScintillaFramework.xcodeproj/project.xcworkspa\n\tce/contents.xcworkspacedata, cocoa/ScintillaFramework/ScintillaFrame\n\twork.xcodeproj/xcshareddata/xcschemes/Scintilla.xcscheme,\n\tcocoa/ScintillaFramework/module.modulemap,\n\tcocoa/ScintillaTest/AppController.h,\n\tcocoa/ScintillaTest/AppController.mm,\n\tcocoa/ScintillaTest/English.lproj/MainMenu.xib,\n\tcocoa/ScintillaTest/Info.plist,\n\tcocoa/ScintillaTest/ScintillaTest.xcodeproj/project.pbxproj, cocoa/S\n\tcintillaTest/ScintillaTest.xcodeproj/project.xcworkspace/contents.xc\n\tworkspacedata, cocoa/ScintillaView.h, cocoa/ScintillaView.mm,\n\tcocoa/checkbuildosx.sh, cppcheck.suppress, delcvs.bat, designer-\n\tQt4Qt5/designer.pro, doc/Design.html, doc/Icons.html, doc/Lexer.txt,\n\tdoc/Privacy.html, doc/SciCoding.html, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/ScintillaRelated.html, doc/ScintillaToDo.html,\n\tdoc/ScintillaUsage.html, doc/index.html, example-\n\tQt4Qt5/application.pro, gtk/Converter.h, gtk/PlatGTK.cxx,\n\tgtk/ScintillaGTK.cxx, gtk/ScintillaGTK.h,\n\tgtk/ScintillaGTKAccessible.cxx, gtk/ScintillaGTKAccessible.h,\n\tgtk/deps.mak, gtk/makefile, gtk/scintilla-marshal.c, gtk/scintilla-\n\tmarshal.h, gtk/scintilla-marshal.list, include/ILexer.h,\n\tinclude/Platform.h, include/SciLexer.h, include/Sci_Position.h,\n\tinclude/Scintilla.h, include/Scintilla.iface,\n\tinclude/ScintillaWidget.h, lexers/LexA68k.cxx, lexers/LexAPDL.cxx,\n\tlexers/LexASY.cxx, lexers/LexAU3.cxx, lexers/LexAVE.cxx,\n\tlexers/LexAVS.cxx, lexers/LexAbaqus.cxx, lexers/LexAda.cxx,\n\tlexers/LexAsm.cxx, lexers/LexAsn1.cxx, lexers/LexBaan.cxx,\n\tlexers/LexBash.cxx, lexers/LexBasic.cxx, lexers/LexBatch.cxx,\n\tlexers/LexBibTeX.cxx, lexers/LexBullant.cxx, lexers/LexCLW.cxx,\n\tlexers/LexCOBOL.cxx, lexers/LexCPP.cxx, lexers/LexCSS.cxx,\n\tlexers/LexCaml.cxx, lexers/LexCmake.cxx, lexers/LexCoffeeScript.cxx,\n\tlexers/LexConf.cxx, lexers/LexCrontab.cxx, lexers/LexCsound.cxx,\n\tlexers/LexD.cxx, lexers/LexDMAP.cxx, lexers/LexDMIS.cxx,\n\tlexers/LexDiff.cxx, lexers/LexECL.cxx, lexers/LexEDIFACT.cxx,\n\tlexers/LexEScript.cxx, lexers/LexEiffel.cxx, lexers/LexErlang.cxx,\n\tlexers/LexErrorList.cxx, lexers/LexFlagship.cxx,\n\tlexers/LexForth.cxx, lexers/LexFortran.cxx, lexers/LexGAP.cxx,\n\tlexers/LexGui4Cli.cxx, lexers/LexHTML.cxx, lexers/LexHaskell.cxx,\n\tlexers/LexHex.cxx, lexers/LexInno.cxx, lexers/LexJSON.cxx,\n\tlexers/LexKVIrc.cxx, lexers/LexKix.cxx, lexers/LexLaTeX.cxx,\n\tlexers/LexLisp.cxx, lexers/LexLout.cxx, lexers/LexLua.cxx,\n\tlexers/LexMMIXAL.cxx, lexers/LexMPT.cxx, lexers/LexMSSQL.cxx,\n\tlexers/LexMagik.cxx, lexers/LexMake.cxx, lexers/LexMarkdown.cxx,\n\tlexers/LexMatlab.cxx, lexers/LexMetapost.cxx, lexers/LexModula.cxx,\n\tlexers/LexMySQL.cxx, lexers/LexNimrod.cxx, lexers/LexNsis.cxx,\n\tlexers/LexNull.cxx, lexers/LexOScript.cxx, lexers/LexOpal.cxx,\n\tlexers/LexOthers.cxx, lexers/LexPB.cxx, lexers/LexPLM.cxx,\n\tlexers/LexPO.cxx, lexers/LexPOV.cxx, lexers/LexPS.cxx,\n\tlexers/LexPascal.cxx, lexers/LexPerl.cxx, lexers/LexPowerPro.cxx,\n\tlexers/LexPowerShell.cxx, lexers/LexProgress.cxx,\n\tlexers/LexProps.cxx, lexers/LexPython.cxx, lexers/LexR.cxx,\n\tlexers/LexRebol.cxx, lexers/LexRegistry.cxx, lexers/LexRuby.cxx,\n\tlexers/LexRust.cxx, lexers/LexSML.cxx, lexers/LexSQL.cxx,\n\tlexers/LexSTTXT.cxx, lexers/LexScriptol.cxx,\n\tlexers/LexSmalltalk.cxx, lexers/LexSorcus.cxx,\n\tlexers/LexSpecman.cxx, lexers/LexSpice.cxx, lexers/LexTACL.cxx,\n\tlexers/LexTADS3.cxx, lexers/LexTAL.cxx, lexers/LexTCL.cxx,\n\tlexers/LexTCMD.cxx, lexers/LexTeX.cxx, lexers/LexTxt2tags.cxx,\n\tlexers/LexVB.cxx, lexers/LexVHDL.cxx, lexers/LexVerilog.cxx,\n\tlexers/LexVisualProlog.cxx, lexers/LexYAML.cxx, lexlib/Accessor.cxx,\n\tlexlib/Accessor.h, lexlib/CharacterSet.cxx, lexlib/CharacterSet.h,\n\tlexlib/LexAccessor.h, lexlib/LexerBase.cxx, lexlib/LexerBase.h,\n\tlexlib/LexerModule.cxx, lexlib/LexerModule.h,\n\tlexlib/LexerNoExceptions.cxx, lexlib/LexerNoExceptions.h,\n\tlexlib/LexerSimple.cxx, lexlib/LexerSimple.h,\n\tlexlib/StyleContext.cxx, lexlib/StyleContext.h, lexlib/SubStyles.h,\n\tlexlib/WordList.cxx, lexlib/WordList.h, qt/qscintilla.pro,\n\tscripts/Face.py, scripts/FileGenerator.py,\n\tscripts/GenerateCaseConvert.py, scripts/HeaderCheck.py,\n\tscripts/HeaderOrder.txt, scripts/LexGen.py,\n\tscripts/ScintillaData.py, src/AutoComplete.cxx, src/CallTip.cxx,\n\tsrc/CaseConvert.cxx, src/CaseConvert.h, src/CaseFolder.cxx,\n\tsrc/Catalogue.cxx, src/CellBuffer.cxx, src/CellBuffer.h,\n\tsrc/CharClassify.cxx, src/CharClassify.h, src/ContractionState.cxx,\n\tsrc/ContractionState.h, src/Decoration.cxx, src/Document.cxx,\n\tsrc/Document.h, src/EditModel.cxx, src/EditModel.h,\n\tsrc/EditView.cxx, src/EditView.h, src/Editor.cxx, src/Editor.h,\n\tsrc/ExternalLexer.cxx, src/Indicator.cxx, src/Indicator.h,\n\tsrc/KeyMap.cxx, src/KeyMap.h, src/LineMarker.cxx,\n\tsrc/MarginView.cxx, src/PerLine.cxx, src/Position.h,\n\tsrc/PositionCache.cxx, src/PositionCache.h, src/RESearch.cxx,\n\tsrc/RESearch.h, src/RunStyles.cxx, src/ScintillaBase.cxx,\n\tsrc/ScintillaBase.h, src/Selection.cxx, src/Selection.h,\n\tsrc/SparseVector.h, src/SplitVector.h, src/Style.cxx, src/Style.h,\n\tsrc/UniConversion.cxx, src/UniConversion.h, src/ViewStyle.cxx,\n\tsrc/ViewStyle.h, src/XPM.cxx, test/ScintillaCallable.py,\n\ttest/XiteQt.py, test/XiteWin.py, test/examples/perl-test-\n\t5220delta.pl, test/examples/perl-test-5220delta.pl.styled,\n\ttest/examples/perl-test-sub-prototypes.pl, test/examples/perl-test-\n\tsub-prototypes.pl.styled, test/gi/Scintilla-0.1.gir.good, test/gi\n\t/Scintilla-filtered.h, test/gi/filter-scintilla-h.py, test/gi/gi-\n\ttest.py, test/gi/makefile, test/lexTests.py, test/simpleTests.py,\n\ttest/unit/Sci.natvis, test/unit/UnitTester.cxx,\n\ttest/unit/UnitTester.vcxproj, test/unit/makefile,\n\ttest/unit/test.mak, test/unit/testCellBuffer.cxx,\n\ttest/unit/testContractionState.cxx, test/unit/testDecoration.cxx,\n\ttest/unit/testPartitioning.cxx, test/unit/testRunStyles.cxx,\n\ttest/unit/testSparseState.cxx, test/unit/testSparseVector.cxx,\n\ttest/unit/testSplitVector.cxx, test/unit/testWordList.cxx,\n\tversion.txt, win32/HanjaDic.cxx, win32/HanjaDic.h,\n\twin32/PlatWin.cxx, win32/SciLexer.vcxproj, win32/ScintRes.rc,\n\twin32/ScintillaWin.cxx, win32/deps.mak, win32/makefile,\n\twin32/scintilla.mak:\n\tInitial merge of Scintilla v3.7.2.\n\t[abbfc844caaa]\n\n\t* lib/LICENSE.commercial.short, lib/LICENSE.gpl,\n\tlib/LICENSE.gpl.short:\n\tUpdated the copyright notices.\n\t[10d2ba70b9d0]\n\n\t* Makefile, build.py:\n\tMerged the v2.9 maintenance branch.\n\t[8c0c0a19a3c8]\n\n2016-12-25  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.9.4 for changeset 06e486532f86\n\t[a0e7ce41b57a] <2.9-maint>\n\n\t* NEWS:\n\tReleased as v2.9.4.\n\t[06e486532f86] [2.9.4] <2.9-maint>\n\n2016-12-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qsci/api/python/Python-3.6.api:\n\tAdded the .api file for Python v3.6.\n\t[4af5841ab5d2] <2.9-maint>\n\n2016-11-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tUpdated a comment to explain why setting custom scrollbars doesn't\n\twork.\n\t[757ca3bbc419] <2.9-maint>\n\n2016-10-25  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixed configure.py for Python v2.\n\t[6d784269a812] <2.9-maint>\n\n2016-10-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscimod4.sip, Python/sip/qscimod5.sip:\n\tExplicitly %Import the QtCore module so that it is imported in the\n\t.pyi file.\n\t[fec61f546e2b] <2.9-maint>\n\n2016-09-26  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lib/README.doc:\n\tRemoved some (possibly out of date) information about installation\n\ton macOS.\n\t[c793591a8192] <2.9-maint>\n\n\t* qt/InputMethod.cpp:\n\tDisable the hack for handling null input method method events on\n\tWindows as there are reports that this breaks character composition.\n\t[42977285ae81] <2.9-maint>\n\n2016-09-25  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed a Qt warning about a too large red value in a QColor.\n\t[f9af82c24301] <2.9-maint>\n\n2016-09-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* rb-product:\n\tAdded the minimum PyQt5 wheel version to the product file.\n\t[11d2fb4dc51a] <2.9-maint>\n\n2016-09-10  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, rb-product:\n\tUpdated the handling of the minimum SIP version.\n\t[1e50ffa9dac1] <2.9-maint>\n\n2016-09-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscimod5.sip:\n\tThe limited API is now used for the Python bindings.\n\t[a2b8118a4483] <2.9-maint>\n\n2016-08-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, build.py:\n\tRemoved the old internal build system.\n\t[522e8b386eef] <2.9-maint>\n\n2016-07-25  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* METADATA.in:\n\tRemoved the Obsoletes tag from METADATA.\n\t[fbf9aa05d0b4] <2.9-maint>\n\n\t* .hgtags:\n\tAdded tag 2.9.3 for changeset 19c9752958b7\n\t[fb5cd006685f] <2.9-maint>\n\n\t* NEWS:\n\tReleased as v2.9.3.\n\t[19c9752958b7] [2.9.3] <2.9-maint>\n\n2016-07-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* METADATA.in:\n\tUpdated METADATA.\n\t[aa51b27d9baf] <2.9-maint>\n\n2016-06-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* build.py, lib/qscintilla.dxy:\n\tSimplify the generation of the doxygen documentation.\n\t[12575460cd55] <2.9-maint>\n\n\t* rb-product, rbproduct.py:\n\tReplaced the product plugin with a product file.\n\t[846ad54d791e] <2.9-maint>\n\n2016-06-10  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ScintillaQt.cpp, qt/qscintilla.pro:\n\tFixed a flicker problem on OS X.\n\t[c1482a759dc0] <2.9-maint>\n\n2016-05-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* METADATA.in, rbproduct.py:\n\tTry to prevent the GPL and commercial versions being installed at\n\tthe same time. (Although it doesn't seem to work.)\n\t[826424d291a2] <2.9-maint>\n\n\t* METADATA.in, rbproduct.py:\n\tConfigure the PKG-INFO meta-data according to the license.\n\t[e3243207aa15] <2.9-maint>\n\n2016-05-10  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* rbproduct.py:\n\tMore changes to the product plugin required by rbtools.\n\t[437e6032e4df] <2.9-maint>\n\n2016-05-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* rbproduct.py:\n\tUpdated the product plugin for the latest rbtools changes.\n\t[393cae59af91] <2.9-maint>\n\n2016-04-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* METADATA.in:\n\tUpdated the meta-data now that Linux wheels are available from PyPI.\n\t[40f18e066c6f] <2.9-maint>\n\n2016-04-18  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.9.2 for changeset 15888f3e91ce\n\t[5cd132938309] <2.9-maint>\n\n\t* NEWS:\n\tReleased as v2.9.2.\n\t[15888f3e91ce] [2.9.2] <2.9-maint>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tRemove all deprecated /DocType/ annotations.\n\t[b9d570ab642a] <2.9-maint>\n\n2016-04-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* rbproduct.py:\n\tLocate the static library on Windows.\n\t[dd8c14dace83] <2.9-maint>\n\n\t* rbproduct.py:\n\tFixed a typo.\n\t[baf5c942f528] <2.9-maint>\n\n\t* rbproduct.py:\n\tAdd any pre-installed .api files to the wheel.\n\t[cf7b6302ae83] <2.9-maint>\n\n\t* rbproduct.py:\n\tExploit verbose mode in the product plugin.\n\t[da743c037880] <2.9-maint>\n\n\t* rbproduct.py:\n\tFixed permissions of the product plugin.\n\t[6fac075e0b88] <2.9-maint>\n\n2016-04-16  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile:\n\tUpdated the clean target.\n\t[692b14f48ade] <2.9-maint>\n\n\t* rbproduct.py:\n\tThe wheel now includes translations and API files.\n\t[bf911094e537] <2.9-maint>\n\n\t* METADATA.in, Makefile, Python/configure.py, build.py, rbproduct.py:\n\tAdded the initial support for creating wheels.\n\t[da0a5d22e864] <2.9-maint>\n\n\t* Makefile, build.py:\n\tAdded the --omit-license-tag option to build.py. Added the dist-\n\twheel-gpl target to the master Makefile.\n\t[a63c245de735] <2.9-maint>\n\n2016-04-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure-old.py, Python/configure.py, build.py,\n\tqt/features/qscintilla2.prf, qt/features_staticlib/qscintilla2.prf,\n\tqt/qsciglobal.h, qt/qscintilla.pro:\n\tSymbols are now hidden if possible on all platforms. Improved the\n\thandling of QSCINTILLA_DLL so it should be completely automatic.\n\tRemoved the --no-dll option to configure.py.\n\t[e35caca29dd6] <2.9-maint>\n\n2016-03-25  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure-old.py, build.py:\n\tUse the new naming standards for development versions.\n\t[21d2f882320a] <2.9-maint>\n\n2016-03-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, build.py:\n\tThe configure.py boilerplate code is applied automatically.\n\t[848f3fca41c0] <2.9-maint>\n\n2016-03-13  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tUpdated the configure.py boilerplate.\n\t[b3fd404a1134] <2.9-maint>\n\n2016-03-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tAdded support for PEP 484 stub files to configure.py.\n\t[9316fed27503] <2.9-maint>\n\n2015-12-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile:\n\tSwitched the internal build system to Python v3.5.\n\t[5215e7f3116e] <2.9-maint>\n\n2015-10-28  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tHandle PATH components that are enclosed in quotes.\n\t[d0f19b69ce26] <2.9-maint>\n\n2015-10-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.9.1 for changeset 9bd39be91ef8\n\t[c71bd22d6ccf] <2.9-maint>\n\n\t* NEWS:\n\tReleased as v2.9.1.\n\t[9bd39be91ef8] [2.9.1] <2.9-maint>\n\n2015-10-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed the handling of the keypad modifier.\n\t[e363cc2c347f] <2.9-maint>\n\n2015-09-18  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qsci/api/python/Python-3.5.api:\n\tAdded the .api file for Python v3.5.\n\t[5b4e58de4663] <2.9-maint>\n\n2015-09-10  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciabstractapis.sip, Python/sip/qsciapis.sip:\n\tFixed the Python binding for\n\tQsciAbstractAPIs::updateAutoCompletionList().\n\t[53f2939a3b29] <2.9-maint>\n\n2015-09-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tUse win32-msvc2015 for Python v3.5 and later.\n\t[2f264662e2c7] <2.9-maint>\n\n2015-09-01  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed the restyling of a document displayed in multiple editors.\n\t[9309f264ab57] <2.9-maint>\n\n2015-08-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla.pro, qt/qsciscintilla.cpp:\n\tFixed a problem starting a call tip when the auto-completion list is\n\tdisplayed. Bumped the library version.\n\t[2ec2115ea4d2] <2.9-maint>\n\n2015-07-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* designer-Qt4Qt5/qscintillaplugin.h:\n\tFixed a warning message when compiling against Qt v5.5.0.\n\t[3ff05a0ef88d] <2.9-maint>\n\n2015-07-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tUpdate QMAKE_RPATHDIR rather than set it.\n\t[045c64a7e65c] <2.9-maint>\n\n2015-06-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tSet QMAKE_RPATHDIR for Qt v5.5 on OS X.\n\t[b83394e4a676] <2.9-maint>\n\n2015-05-26  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixed the backstop handling in the Python bindings configuration\n\tscript and bumped the version number.\n\t[1ab1dd7ea495] <2.9-maint>\n\n2015-05-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla.pro:\n\tUse QT_HOST_DATA for the .prf destination with Qt v5. Removed all Qt\n\tv3 support from the .pro file.\n\t[63c0391624a8] <2.9-maint>\n\n2015-04-20  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.9 for changeset 41ee8162fa81\n\t[9817b0a7a4f7]\n\n\t* NEWS:\n\tReleased as v2.9.\n\t[41ee8162fa81] [2.9]\n\n2015-04-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tFixed a problem notifying when focus is lost to another application\n\twidget.\n\t[41734678234e]\n\n2015-04-06  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tFixed a crash when deleting an instance.\n\t[eb936ad1f826]\n\n2015-04-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed a problem applying a lexer's styles that manifested itself by\n\tthe wrong style being applied to line numbers when using a custom\n\tlexer.\n\t[c91009909b8e]\n\n2015-04-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_es.qm, qt/qscintilla_es.ts:\n\tUpdated Spanish translations from Jaime.\n\t[d94218e7d47d]\n\n\t* qt/ScintillaQt.h:\n\tFixed some header file dependencies.\n\t[f246e863957f]\n\n\t* qt/qscintilla_cs.qm, qt/qscintilla_de.qm, qt/qscintilla_de.ts,\n\tqt/qscintilla_es.qm, qt/qscintilla_fr.qm, qt/qscintilla_pt_br.qm:\n\tUpdated German translations from Detlev.\n\t[01f3be277e14]\n\n2015-04-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts:\n\tUpdated the .ts translation files.\n\t[659fb035d1c4]\n\n2015-04-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciapis.cpp:\n\tFixed a problem displaying call-tips when auto-completion is\n\tenabled.\n\t[82ec45421a3d]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.h:\n\tExposed the remaining new features.\n\t[6e84b61268c5]\n\n2015-04-01  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tExposing new Scintilla functionality.\n\t[e0965dc46693]\n\n2015-03-31  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexerverilog.cpp, qt/qscilexerverilog.h:\n\tEnabled the new styling features of QsciLexerVerilog.\n\t[5be65189b15f]\n\n\t* NEWS, Python/sip/qscilexercpp.sip, qt/qscilexercpp.cpp,\n\tqt/qscilexercpp.h:\n\tCompleted the updates to QsciLexerCPP.\n\t[a8e24b727d82]\n\n\t* NEWS, Python/sip/qscilexercpp.sip, Python/sip/qscilexersql.sip,\n\tPython/sip/qscilexerverilog.sip, Python/sip/qscilexervhdl.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qscilexercpp.cpp,\n\tqt/qscilexercpp.h, qt/qscilexersql.cpp, qt/qscilexersql.h,\n\tqt/qscilexerverilog.cpp, qt/qscilexerverilog.h,\n\tqt/qscilexervhdl.cpp, qt/qscilexervhdl.h, qt/qsciscintillabase.h:\n\tUpdated existing lexers with new styles.\n\t[768f8ff280e1]\n\n2015-03-30  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciapis.cpp:\n\tMake sure call tips don't include image types.\n\t[d0830816cda4]\n\n\t* qt/ScintillaQt.cpp, qt/ScintillaQt.h:\n\tFixed the horizontal scrollbar issues, particularly with long lines.\n\t[db8501c0803f]\n\n2015-03-29  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ScintillaQt.cpp:\n\tUpdated the paste support.\n\t[42ad3657d52e]\n\n\t* qt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qsciscintillabase.cpp:\n\tAdded support for idle processing.\n\t[ff277e910df7]\n\n2015-03-27  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS:\n\tUpdated the NEWS file.\n\t[64766fb4c800]\n\n\t* qt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tAdd support for fine tickers.\n\t[3e9b89430dc0]\n\n2015-03-26  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/sip/qsciabstractapis.sip, Python/sip/qsciapis.sip,\n\tPython/sip/qscicommandset.sip, Python/sip/qscilexer.sip,\n\tPython/sip/qscilexeravs.sip, Python/sip/qscilexerbash.sip,\n\tPython/sip/qscilexerbatch.sip, Python/sip/qscilexercmake.sip,\n\tPython/sip/qscilexercoffeescript.sip, Python/sip/qscilexercpp.sip,\n\tPython/sip/qscilexercsharp.sip, Python/sip/qscilexercss.sip,\n\tPython/sip/qscilexercustom.sip, Python/sip/qscilexerd.sip,\n\tPython/sip/qscilexerdiff.sip, Python/sip/qscilexerfortran.sip,\n\tPython/sip/qscilexerfortran77.sip, Python/sip/qscilexerhtml.sip,\n\tPython/sip/qscilexeridl.sip, Python/sip/qscilexerjava.sip,\n\tPython/sip/qscilexerjavascript.sip, Python/sip/qscilexerlua.sip,\n\tPython/sip/qscilexermakefile.sip, Python/sip/qscilexermatlab.sip,\n\tPython/sip/qscilexeroctave.sip, Python/sip/qscilexerpascal.sip,\n\tPython/sip/qscilexerperl.sip, Python/sip/qscilexerpo.sip,\n\tPython/sip/qscilexerpostscript.sip, Python/sip/qscilexerpov.sip,\n\tPython/sip/qscilexerproperties.sip, Python/sip/qscilexerpython.sip,\n\tPython/sip/qscilexerruby.sip, Python/sip/qscilexerspice.sip,\n\tPython/sip/qscilexersql.sip, Python/sip/qscilexertcl.sip,\n\tPython/sip/qscilexertex.sip, Python/sip/qscilexerverilog.sip,\n\tPython/sip/qscilexervhdl.sip, Python/sip/qscilexerxml.sip,\n\tPython/sip/qscilexeryaml.sip, Python/sip/qscimacro.sip,\n\tPython/sip/qscimod3.sip, Python/sip/qscimod4.sip,\n\tPython/sip/qscimod5.sip, Python/sip/qscimodcommon.sip,\n\tPython/sip/qsciscintilla.sip, Python/sip/qsciscintillabase.sip,\n\tbuild.py, designer-Qt3/designer.pro, designer-\n\tQt3/qscintillaplugin.cpp, example-Qt3/application.cpp, example-\n\tQt3/application.h, example-Qt3/application.pro, example-\n\tQt3/fileopen.xpm, example-Qt3/fileprint.xpm, example-\n\tQt3/filesave.xpm, example-Qt3/main.cpp, lib/README, lib/README.doc,\n\tlib/qscintilla.dxy, qt/InputMethod.cpp, qt/ListBoxQt.cpp,\n\tqt/PlatQt.cpp, qt/SciClasses.cpp, qt/SciClasses.h,\n\tqt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qsciabstractapis.cpp,\n\tqt/qsciabstractapis.h, qt/qsciapis.cpp, qt/qsciapis.h,\n\tqt/qscicommandset.cpp, qt/qscicommandset.h, qt/qscilexer.cpp,\n\tqt/qscilexer.h, qt/qscilexeravs.cpp, qt/qscilexeravs.h,\n\tqt/qscilexerbash.cpp, qt/qscilexerbash.h, qt/qscilexerbatch.cpp,\n\tqt/qscilexerbatch.h, qt/qscilexercmake.cpp, qt/qscilexercmake.h,\n\tqt/qscilexercoffeescript.cpp, qt/qscilexercoffeescript.h,\n\tqt/qscilexercpp.cpp, qt/qscilexercpp.h, qt/qscilexercsharp.cpp,\n\tqt/qscilexercsharp.h, qt/qscilexercss.cpp, qt/qscilexercss.h,\n\tqt/qscilexercustom.cpp, qt/qscilexercustom.h, qt/qscilexerd.cpp,\n\tqt/qscilexerd.h, qt/qscilexerdiff.cpp, qt/qscilexerdiff.h,\n\tqt/qscilexerfortran.cpp, qt/qscilexerfortran.h,\n\tqt/qscilexerfortran77.cpp, qt/qscilexerfortran77.h,\n\tqt/qscilexerhtml.cpp, qt/qscilexerhtml.h, qt/qscilexeridl.cpp,\n\tqt/qscilexeridl.h, qt/qscilexerjava.cpp, qt/qscilexerjava.h,\n\tqt/qscilexerjavascript.cpp, qt/qscilexerjavascript.h,\n\tqt/qscilexerlua.cpp, qt/qscilexerlua.h, qt/qscilexermakefile.cpp,\n\tqt/qscilexermakefile.h, qt/qscilexermatlab.cpp,\n\tqt/qscilexermatlab.h, qt/qscilexeroctave.cpp, qt/qscilexeroctave.h,\n\tqt/qscilexerpascal.cpp, qt/qscilexerpascal.h, qt/qscilexerperl.cpp,\n\tqt/qscilexerperl.h, qt/qscilexerpo.cpp, qt/qscilexerpo.h,\n\tqt/qscilexerpostscript.cpp, qt/qscilexerpostscript.h,\n\tqt/qscilexerpov.cpp, qt/qscilexerpov.h, qt/qscilexerproperties.cpp,\n\tqt/qscilexerproperties.h, qt/qscilexerpython.cpp,\n\tqt/qscilexerpython.h, qt/qscilexerruby.cpp, qt/qscilexerruby.h,\n\tqt/qscilexerspice.cpp, qt/qscilexerspice.h, qt/qscilexersql.cpp,\n\tqt/qscilexersql.h, qt/qscilexertcl.cpp, qt/qscilexertcl.h,\n\tqt/qscilexertex.cpp, qt/qscilexertex.h, qt/qscilexerverilog.cpp,\n\tqt/qscilexerverilog.h, qt/qscilexervhdl.cpp, qt/qscilexervhdl.h,\n\tqt/qscilexerxml.cpp, qt/qscilexerxml.h, qt/qscilexeryaml.cpp,\n\tqt/qscilexeryaml.h, qt/qscimacro.cpp, qt/qscimacro.h,\n\tqt/qsciprinter.cpp, qt/qsciscintilla.cpp, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h, qt/qscistyle.cpp,\n\tqt/qscistyledtext.h:\n\tRemoved all support for Qt3 and PyQt3.\n\t[b33b2f06716e]\n\n\t* Python/configure-old.py, Python/configure.py, designer-\n\tQt4Qt5/designer.pro, example-Qt4Qt5/application.pro,\n\tqt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qscintilla.pro:\n\tThe updated code now compiles.\n\t[35d05076c62f]\n\n\t* cocoa/InfoBar.h, cocoa/InfoBar.mm, cocoa/InfoBarCommunicator.h,\n\tcocoa/PlatCocoa.h, cocoa/PlatCocoa.mm, cocoa/QuartzTextLayout.h,\n\tcocoa/QuartzTextStyle.h, cocoa/ScintillaCocoa.h,\n\tcocoa/ScintillaCocoa.mm, cocoa/ScintillaFramework/ScintillaFramework\n\t.xcodeproj/project.pbxproj, cocoa/ScintillaTest/AppController.h,\n\tcocoa/ScintillaTest/ScintillaTest.xcodeproj/project.pbxproj,\n\tcocoa/ScintillaView.h, cocoa/ScintillaView.mm,\n\tcocoa/checkbuildosx.sh, cppcheck.suppress, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/index.html, gtk/Converter.h, gtk/PlatGTK.cxx,\n\tgtk/ScintillaGTK.cxx, gtk/deps.mak, gtk/makefile,\n\tinclude/Platform.h, include/SciLexer.h, include/Scintilla.h,\n\tinclude/Scintilla.iface, lexers/LexAbaqus.cxx, lexers/LexAsm.cxx,\n\tlexers/LexBash.cxx, lexers/LexBasic.cxx, lexers/LexBibTeX.cxx,\n\tlexers/LexCPP.cxx, lexers/LexCmake.cxx, lexers/LexCoffeeScript.cxx,\n\tlexers/LexDMAP.cxx, lexers/LexDMIS.cxx, lexers/LexECL.cxx,\n\tlexers/LexEScript.cxx, lexers/LexForth.cxx, lexers/LexFortran.cxx,\n\tlexers/LexGui4Cli.cxx, lexers/LexHTML.cxx, lexers/LexHaskell.cxx,\n\tlexers/LexHex.cxx, lexers/LexKix.cxx, lexers/LexLua.cxx,\n\tlexers/LexMarkdown.cxx, lexers/LexMatlab.cxx, lexers/LexModula.cxx,\n\tlexers/LexMySQL.cxx, lexers/LexOthers.cxx, lexers/LexPS.cxx,\n\tlexers/LexPerl.cxx, lexers/LexRegistry.cxx, lexers/LexRuby.cxx,\n\tlexers/LexRust.cxx, lexers/LexSQL.cxx, lexers/LexScriptol.cxx,\n\tlexers/LexSpecman.cxx, lexers/LexTCL.cxx, lexers/LexTCMD.cxx,\n\tlexers/LexTxt2tags.cxx, lexers/LexVHDL.cxx, lexers/LexVerilog.cxx,\n\tlexers/LexVisualProlog.cxx, lexlib/Accessor.cxx, lexlib/Accessor.h,\n\tlexlib/CharacterCategory.cxx, lexlib/CharacterSet.cxx,\n\tlexlib/LexAccessor.h, lexlib/LexerBase.cxx, lexlib/LexerModule.cxx,\n\tlexlib/LexerModule.h, lexlib/LexerNoExceptions.cxx,\n\tlexlib/LexerSimple.cxx, lexlib/LexerSimple.h,\n\tlexlib/PropSetSimple.cxx, lexlib/SparseState.h, lexlib/StringCopy.h,\n\tlexlib/StyleContext.cxx, lexlib/StyleContext.h, lexlib/SubStyles.h,\n\tlexlib/WordList.cxx, lexlib/WordList.h, lib/README.doc,\n\tqt/qscintilla.pro, scripts/GenerateCaseConvert.py,\n\tscripts/GenerateCharacterCategory.py, scripts/HFacer.py,\n\tscripts/HeaderOrder.txt, scripts/LexGen.py,\n\tscripts/ScintillaData.py, src/AutoComplete.cxx, src/AutoComplete.h,\n\tsrc/CallTip.cxx, src/CaseConvert.cxx, src/CaseFolder.cxx,\n\tsrc/Catalogue.cxx, src/CellBuffer.cxx, src/CellBuffer.h,\n\tsrc/CharClassify.cxx, src/ContractionState.cxx,\n\tsrc/ContractionState.h, src/Decoration.cxx, src/Decoration.h,\n\tsrc/Document.cxx, src/Document.h, src/EditModel.cxx,\n\tsrc/EditModel.h, src/EditView.cxx, src/EditView.h, src/Editor.cxx,\n\tsrc/Editor.h, src/ExternalLexer.cxx, src/ExternalLexer.h,\n\tsrc/FontQuality.h, src/Indicator.cxx, src/Indicator.h,\n\tsrc/KeyMap.cxx, src/KeyMap.h, src/LineMarker.cxx, src/LineMarker.h,\n\tsrc/MarginView.cxx, src/MarginView.h, src/Partitioning.h,\n\tsrc/PerLine.cxx, src/PerLine.h, src/PositionCache.cxx,\n\tsrc/PositionCache.h, src/RESearch.cxx, src/RESearch.h,\n\tsrc/ScintillaBase.cxx, src/ScintillaBase.h, src/Selection.cxx,\n\tsrc/Selection.h, src/SplitVector.h, src/Style.cxx, src/Style.h,\n\tsrc/UniConversion.cxx, src/UniConversion.h, src/ViewStyle.cxx,\n\tsrc/ViewStyle.h, src/XPM.cxx, src/XPM.h, test/XiteQt.py,\n\ttest/XiteWin.py, test/lexTests.py, test/simpleTests.py,\n\ttest/unit/LICENSE_1_0.txt, test/unit/README,\n\ttest/unit/SciTE.properties, test/unit/catch.hpp, test/unit/makefile,\n\ttest/unit/test.mak, test/unit/testCellBuffer.cxx,\n\ttest/unit/testCharClassify.cxx, test/unit/testContractionState.cxx,\n\ttest/unit/testDecoration.cxx, test/unit/testPartitioning.cxx,\n\ttest/unit/testRunStyles.cxx, test/unit/testSparseState.cxx,\n\ttest/unit/testSplitVector.cxx, test/unit/testUnicodeFromUTF8.cxx,\n\ttest/unit/unitTest.cxx, version.txt, win32/HanjaDic.cxx,\n\twin32/HanjaDic.h, win32/PlatWin.cxx, win32/PlatWin.h,\n\twin32/SciLexer.vcxproj, win32/ScintRes.rc, win32/ScintillaWin.cxx,\n\twin32/deps.mak, win32/makefile, win32/scintilla.mak:\n\tAdded the initial import of Scintilla v3.5.4.\n\t[025db9484942]\n\n\t* lib/GPL_EXCEPTION.TXT, lib/GPL_EXCEPTION_ADDENDUM.TXT,\n\tlib/LICENSE.GPL2, lib/LICENSE.GPL3, lib/OPENSOURCE-NOTICE.TXT,\n\tqt/qscintilla_ru.qm, qt/qscintilla_ru.ts:\n\tMerged the 2.8-maint branch into the default.\n\t[efe1067a091a]\n\n2015-03-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed QsciScintilla::clearMarginText().\n\t[885b972e38df] <2.8-maint>\n\n2015-02-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/configure.py:\n\tInstalling into a virtual env should now work. The internal build\n\tsystem supports sip5.\n\t[62d128cc92de] <2.8-maint>\n\n2015-02-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tUse sip5 if available.\n\t[6f5e4b0dae8f] <2.8-maint>\n\n2015-01-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, lib/LICENSE.commercial.short, lib/LICENSE.gpl,\n\tlib/LICENSE.gpl.short, qt/InputMethod.cpp:\n\tUpdated the copyright notices.\n\t[50b9b459dc48] <2.8-maint>\n\n\t* Python/configure-old.py:\n\tFixed configure-old.py for previews.\n\t[7ff9140391e4] <2.8-maint>\n\n2014-12-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* build.py, lib/LICENSE.GPL3, lib/LICENSE.commercial.short,\n\tlib/LICENSE.gpl, lib/LICENSE.gpl.short:\n\tMore license tweaks.\n\t[f3e84d697877] <2.8-maint>\n\n\t* build.py, lib/GPL_EXCEPTION.TXT, lib/GPL_EXCEPTION_ADDENDUM.TXT,\n\tlib/LICENSE.GPL2, lib/LICENSE.gpl.short, lib/OPENSOURCE-NOTICE.TXT,\n\tlib/README.doc:\n\tAligned the GPL licensing with Qt.\n\t[aa58ba575cac] <2.8-maint>\n\n2014-12-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lib/LICENSE.commercial:\n\tUpdated the commercial license to v4.0.\n\t[fd91beaa78dd] <2.8-maint>\n\n2014-11-16  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* build.py:\n\tA source package now includes a full ChangeLog.\n\t[ba92c1d5c839] <2.8-maint>\n\n2014-09-11  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.8.4 for changeset e18756e8cf86\n\t[e7f7a594518d] <2.8-maint>\n\n\t* .hgignore, NEWS:\n\tReleased as v2.8.4.\n\t[e18756e8cf86] [2.8.4] <2.8-maint>\n\n2014-09-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS:\n\tUpdated the NEWS file.\n\t[e4e3562b54cb] <2.8-maint>\n\n2014-09-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintilla.sip, Python/sip/qsciscintillabase.sip,\n\tqt/qscintilla.pro, qt/qsciscintilla.cpp, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.h:\n\tAdded the missing SCI_SETHOTSPOTSINGLELINE to QsciScintillaBase.\n\tAdded resetHotspotForegroundColor(), resetHotspotBackgroundColor(),\n\tsetHotspotForegroundColor(), setHotspotBackgroundColor(),\n\tsetHotspotUnderline() and setHotspotWrap() to QsciScintilla.\n\t[2da018f7e48c] <2.8-maint>\n\n2014-07-31  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tAttempted to improve the auto-indentation behaviour so that the\n\tindentation of a line is maintained if a new line has been inserted\n\tabove by pressing enter at the start of the line.\n\t[aafc4a7247fb] <2.8-maint>\n\n2014-07-11  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixed the installation of the .api file.\n\t[aae8494847ff] <2.8-maint>\n\n2014-07-10  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, designer-Qt4Qt5/designer.pro,\n\tqt/qscintilla.pro:\n\tFixes to work around QTBUG-39300. Fix when building with a\n\tconfiguration file.\n\t[1051e8c260fd] <2.8-maint>\n\n2014-07-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.8.3 for changeset e9cb8530f97f\n\t[bb531051c8f3] <2.8-maint>\n\n\t* NEWS:\n\tReleased as v2.8.3.\n\t[e9cb8530f97f] [2.8.3] <2.8-maint>\n\n2014-07-01  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixed a cut-and-paste bug in configure.py.\n\t[5f7c4c6c9a29] <2.8-maint>\n\n\t* Python/configure.py:\n\tUpdated to the latest build system boilerplate.\n\t[ee0b9a647e7a] <2.8-maint>\n\n2014-06-30  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/configure.py:\n\tUpdates to the build system and the latest boilerplate configure.py.\n\t[8485111172c7] <2.8-maint>\n\n2014-06-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexercoffeescript.cpp, qt/qscintilla.pro,\n\tqt/qscintilla_cs.qm, qt/qscintilla_de.qm, qt/qscintilla_de.ts,\n\tqt/qscintilla_es.qm, qt/qscintilla_es.ts, qt/qscintilla_fr.qm,\n\tqt/qscintilla_pt_br.qm, qt/qscintilla_ru.qm, qt/qscintilla_ru.ts:\n\tUpdated CoffeeScript keywords and German translations from Detlev.\n\tUpdated Spanish translations from Jaime. Removed the Russian\n\ttranslations as none were current.\n\t[978fe16935c4] <2.8-maint>\n\n2014-06-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the translation source files.\n\t[440ab56f1863] <2.8-maint>\n\n2014-06-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscilexercoffeescript.sip, Python/sip/qscimodcommon.sip,\n\tPython/sip/qsciscintillabase.sip:\n\tAdded QsciLexerCoffeeScript to the Python bindings.\n\t[36a6e2123a69] <2.8-maint>\n\n\t* qt/qscilexercoffeescript.h:\n\tQsciLexerCoffeeScript property setters are no longer virtual slots.\n\t[eef97550eb16] <2.8-maint>\n\n\t* qt/qscilexercoffeescript.cpp, qt/qscilexercoffeescript.h,\n\tqt/qscintilla.pro:\n\tAdded the QsciLexerCoffeeScript class.\n\t[0cf56e9cd32a] <2.8-maint>\n\n2014-06-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixes for Python v2.6.\n\t[9b7b5393f228] <2.8-maint>\n\n2014-06-01  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixed a regression in configure.py when using the -n or -o options.\n\t[f7b1c9821894] <2.8-maint>\n\n2014-05-29  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp, qt/qsciscintillabase.cpp:\n\tFixes for Qt3.\n\t[4d0a54024b52] <2.8-maint>\n\n\t* qt/PlatQt.cpp, qt/qscilexer.cpp, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qscistyle.cpp:\n\tFont sizes are now handled as floating point values rather than\n\tintegers.\n\t[ea017cc2b198] <2.8-maint>\n\n2014-05-26  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.8.2 for changeset 5aab3ae01e0e\n\t[6cc6eec7c440] <2.8-maint>\n\n\t* NEWS:\n\tReleased as v2.8.2.\n\t[5aab3ae01e0e] [2.8.2] <2.8-maint>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tUpdated the sub-class converter code.\n\t[9b276dae576d] <2.8-maint>\n\n\t* Makefile:\n\tInternal build system fixes.\n\t[b29b24829b0b] <2.8-maint>\n\n2014-05-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/configure.py:\n\tFixed some build regressions with PyQt4.\n\t[175b657ad031] <2.8-maint>\n\n2014-05-18  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile:\n\tUpdates to the top-level Makefile for the latest Android tools.\n\t[405fb3eb5473] <2.8-maint>\n\n2014-05-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile:\n\tAdded the PyQt4 against Qt5 on the iPhone simulator build target.\n\t[c31ae5795eec] <2.8-maint>\n\n2014-05-16  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/configure.py:\n\tUse the PyQt .sip files in sysroot when cross-compiling.\n\t[5d8e8b8ddfe5] <2.8-maint>\n\n\t* Makefile, Python/configure.py:\n\tReplaced pyqt_sip_flags with pyqt_disabled_features in the\n\tconfiguration file.\n\t[f209403c183b] <2.8-maint>\n\n2014-05-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/sip/qscimod5.sip:\n\tThe PyQt5 bindings now run on the iOS simulator.\n\t[056871b18335] <2.8-maint>\n\n\t* Makefile, Python/configure.py:\n\tBuilding the Python bindings for the iOS simulator now works.\n\t[9dfcea4447b8] <2.8-maint>\n\n\t* Makefile:\n\tUpdated the main Makefile for the Qt v5.2 iOS support.\n\t[a619fd411878] <2.8-maint>\n\n2014-05-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tDon't create the .api file if it isn't going to be installed.\n\t[79db1145e882] <2.8-maint>\n\n2014-05-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tAdded the --sysroot, --no-sip-files and --no-qsci-api options to\n\tconfigure.py.\n\t[10642d7deba9] <2.8-maint>\n\n2014-05-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile:\n\tUpdated the internal build system for the combined iOS/Android Qt\n\tinstallation.\n\t[9097d3096b70] <2.8-maint>\n\n2014-05-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_de.qm, qt/qscintilla_de.ts:\n\tUpdated German translations from Detlev.\n\t[d4f631ee3aaf] <2.8-maint>\n\n\t* qt/qscintilla_es.qm, qt/qscintilla_es.ts:\n\tUpdated Spanish translations from Jaime Seuma.\n\t[51350008c8a4] <2.8-maint>\n\n2014-04-30  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the .ts files.\n\t[4c5f88b22952] <2.8-maint>\n\n2014-04-29  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscilexerpo.sip, Python/sip/qscimodcommon.sip,\n\tqt/qscilexerpo.cpp, qt/qscilexerpo.h, qt/qscintilla.pro:\n\tAdded the QsciLexerPO class.\n\t[d42e44550d80] <2.8-maint>\n\n\t* Python/sip/qscilexeravs.sip, Python/sip/qscimodcommon.sip,\n\tqt/qscilexeravs.cpp, qt/qscilexeravs.h, qt/qscintilla.pro:\n\tAdded the QsciLexerAVS class.\n\t[ed6edb6ec205] <2.8-maint>\n\n2014-04-27  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixes for the refactored configure.py.\n\t[21b9fa66338e] <2.8-maint>\n\n\t* Python/configure.py:\n\tInitial refactoring of configure.py so that it is implemented as\n\tconfigurable (and reusable) boilerplate.\n\t[615d75a88db9] <2.8-maint>\n\n2014-04-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintilla.sip, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tsetEnabled() now implements the expected visual effects.\n\t[3e4254394b08] <2.8-maint>\n\n2014-03-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixed the handling of the --pyqt-sip-flags option. Restored the\n\tspecification of the Python library directory for Windows.\n\t[3ea496d62b9f] <2.8-maint>\n\n\t* Python/configure.py, qt/features/qscintilla2.prf, qt/qscintilla.pro:\n\tAdded the --pyqt-sip-flags to configure.py to avoid having to\n\tintrospect PyQt. Fixed the .prf file for OS/X. Tweaks to\n\tconfigure.py so that a configuration file will use the same names as\n\tPyQt5.\n\t[77ff3a21d00a] <2.8-maint>\n\n2014-03-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, lib/README.doc, qt/qscintilla.pro:\n\tChanges to the .pro file to build a static library without having to\n\tedit it.\n\t[f82637449276] <2.8-maint>\n\n2014-03-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp, qt/qsciscintillabase.cpp:\n\tFixed building against Qt v5.0.x.\n\t[d68e28068b67] <2.8-maint>\n\n2014-03-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.8.1 for changeset 6bb7ab27c958\n\t[dfd473e8336b] <2.8-maint>\n\n\t* NEWS:\n\tReleased as v2.8.1.\n\t[6bb7ab27c958] [2.8.1] <2.8-maint>\n\n\t* qt/SciClasses.cpp:\n\tFixed the display of UTF-8 call tips.\n\t[3f0ca7ba60a0] <2.8-maint>\n\n2014-03-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qsci/api/python/Python-3.4.api:\n\tAdded the .api file for Python v3.4.\n\t[3db067b6dcec] <2.8-maint>\n\n2014-03-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp:\n\tRevised attempt at the outline of alpha rectangles in case Qt ignore\n\tthe alpha of the pen.\n\t[86ab8898503e] <2.8-maint>\n\n\t* qt/PlatQt.cpp:\n\tFixed the setting of the pen when drawing alpha rectangles.\n\t[3f4ff2e8aca3] <2.8-maint>\n\n2014-02-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tThe Python module now has the correct install name on OS/X.\n\t[eec8c704418a] <2.8-maint>\n\n2014-02-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscicommand.cpp, qt/qscicommand.h, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tFixed a problem entering non-ASCII characters that clashed with\n\tScintilla's SCK_* values. Key_Enter, Key_Backtab, Key_Super_L,\n\tKey_Super_R and Key_Menu are now valid QsciCommand keys.\n\t[94aec4f075df] <2.8-maint>\n\n2014-01-31  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tMake sure the editor is active after a selection of a user list\n\tentry.\n\t[e0f2106777d0] <2.8-maint>\n\n2014-01-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/SciClasses.cpp:\n\tOn Linux, single clicking on an item in an auto-completion list now\n\tjust selects the itemm (rather than inserting the item) to be\n\tconsistent with other platforms.\n\t[d916bbbf6517] <2.8-maint>\n\n\t* qt/qsciscintillabase.cpp:\n\tFix the handling of the auto-completion list when losing focus.\n\t[a67b51ac8611] <2.8-maint>\n\n2014-01-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/InputMethod.cpp, qt/qsciscintillabase.cpp:\n\tFixed building against Qt4.\n\t[bf0a5f984fc1] <2.8-maint>\n\n2014-01-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS:\n\tUpdated the NEWS file.\n\t[da2a76da712e] <2.8-maint>\n\n2014-01-18  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/InputMethod.cpp:\n\tAnother attempt to fix input events on losing focus.\n\t[6de3ab62fade] <2.8-maint>\n\n\t* lib/README.doc:\n\tAdded the qmake integration section to the docs.\n\t[2918e4760c36] <2.8-maint>\n\n2014-01-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile:\n\tAdded Android to the internal build system.\n\t[3be74b3e89e9] <2.8-maint>\n\n2014-01-06  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/InputMethod.cpp, qt/qsciscintillabase.cpp:\n\tNewlines can now be entered on iOS.\n\t[8d23447dbd4d] <2.8-maint>\n\n2014-01-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/InputMethod.cpp:\n\tSee if we can detect a input methdo event generated when losing\n\tfocus and not to clear the selection.\n\t[8e4216289efe] <2.8-maint>\n\n2014-01-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciprinter.sip:\n\tThe Python bindings now respect the PyQt_Printer feature.\n\t[c3106f715803] <2.8-maint>\n\n2014-01-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tAdded support for software input panels with Qt v5.\n\t[d4499b61ff04] <2.8-maint>\n\n\t* qt/qsciscintilla.cpp:\n\tDisable input methods when read-only (rather than non-UTF8) to be\n\tconsistent with Qt.\n\t[f8817d4a47e3] <2.8-maint>\n\n\t* qt/qscintilla.pro, qt/qsciprinter.h:\n\tFixed the .pro file so that QT_NO_PRINTER is set properly and\n\tremoved the workaround.\n\t[b5a6709d814a] <2.8-maint>\n\n2014-01-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp:\n\tFinally fixed buffered drawing on retina displays.\n\t[f8d23103df70] <2.8-maint>\n\n\t* qt/PlatQt.cpp, qt/qsciscintillabase.cpp:\n\tFixes for buffered drawing on retina displays. (Not yet correct, but\n\tclose.)\n\t[a3b36be44112] <2.8-maint>\n\n\t* Makefile:\n\tChanged the build system for the example on the iOS simulator so\n\tthat qmake is only used to generate the .xcodeproj file.\n\t[179dbf5ba385] <2.8-maint>\n\n\t* Makefile:\n\tAdded the building of the example to the main Makefile.\n\t[aec2ac3ac591] <2.8-maint>\n\n\t* Makefile:\n\tAdded iOS simulator targets to the build system.\n\t[72af8241b261] <2.8-maint>\n\n\t* Makefile, build.py, lib/LICENSE.GPL2, lib/LICENSE.GPL3,\n\tlib/LICENSE.commercial.short, lib/LICENSE.gpl.short,\n\tqt/InputMethod.cpp:\n\tUpdated copyright notices.\n\t[f21e016499fe] <2.8-maint>\n\n\t* qt/MacPasteboardMime.cpp, qt/qsciprinter.cpp, qt/qsciprinter.h,\n\tqt/qsciscintillabase.cpp:\n\tFixes for building for iOS.\n\t[46d25e648b4a] <2.8-maint>\n\n2013-12-31  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, build.py, designer-Qt4Qt5/designer.pro,\n\texample-Qt4Qt5/application.pro, lib/README.doc,\n\tqt/features/qscintilla2.prf, qt/qscintilla.pro:\n\tImplemented the qscintilla2.prf feature file and updated everything\n\tto use it.\n\t[c3bfef1a55ad] <2.8-maint>\n\n2013-12-29  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ScintillaQt.h:\n\tAdded some additional header file dependencies.\n\t[7ec67eced9de] <2.8-maint>\n\n2013-12-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/MacPasteboardMime.cpp, qt/ScintillaQt.cpp:\n\tFixes for building against Qt3.\n\t[f25cbda736fd] <2.8-maint>\n\n2013-12-16  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* designer-Qt4Qt5/designer.pro, example-Qt4Qt5/application.pro:\n\tUpdated the plugin and example .pro files to work around the qmake\n\tincompatibilities introduced in Qt v5.2.0.\n\t[a14729b2702d] <2.8-maint>\n\n2013-12-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tFixed the previous fix.\n\t[6c322fa1b20f] <2.8-maint>\n\n2013-12-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp, qt/qsciscintillabase.cpp:\n\tBacked out the attempted fix for retina displays at it needs more\n\twork. As a workaround buffered writes are disabled if a retina\n\tdisplay is detected.\n\t[a1f648d1025e] <2.8-maint>\n\n2013-12-13  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla.pro:\n\tEnabled exceptions in the .pro file.\n\t[6e07131f6741] <2.8-maint>\n\n2013-12-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp:\n\tCreate pixmaps for buffered drawing using the same pixel ratio as\n\tthe actual device.\n\t[f4f706006071] <2.8-maint>\n\n2013-12-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexeroctave.cpp:\n\tUpdated the keywords defined for the Octave lexer.\n\t[9ccf1c74f266] <2.8-maint>\n\n2013-12-06  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ScintillaQt.cpp:\n\tMore scrollbar fixes.\n\t[194a2142c9b6] <2.8-maint>\n\n2013-12-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ScintillaQt.cpp, qt/qscintilla.pro:\n\tFixes to the scrollbar visibility handling.\n\t[5e8a96258ab0] <2.8-maint>\n\n2013-12-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp:\n\tFixed the implementation of SurfaceImpl::LogPixelsY() (even though\n\tit is never called).\n\t[9ef0387cfc08] <2.8-maint>\n\n2013-11-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.8 for changeset 562785a5f685\n\t[fc52bfaa75c4]\n\n\t* NEWS:\n\tReleased as v2.8.\n\t[562785a5f685] [2.8]\n\n2013-11-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_es.qm, qt/qscintilla_es.ts:\n\tUpdated Spanish translations from Jaime Seuma.\n\t[e7a128a28157]\n\n2013-11-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/qscilexerpascal.cpp, qt/qsciscintillabase.h:\n\tAdded support for the new v3.3.6 features to the low-level API.\n\t[e553c1263387]\n\n\t* Makefile, NEWS, cocoa/Framework.mk, cocoa/InfoBar.mm,\n\tcocoa/PlatCocoa.mm, cocoa/SciTest.mk, cocoa/ScintillaCocoa.h,\n\tcocoa/ScintillaCocoa.mm, cocoa/ScintillaFramework/ScintillaFramework\n\t.xcodeproj/project.pbxproj, cocoa/ScintillaView.h,\n\tcocoa/ScintillaView.mm, cocoa/checkbuildosx.sh, cocoa/common.mk,\n\tdoc/ScintillaDoc.html, doc/ScintillaDownload.html,\n\tdoc/ScintillaHistory.html, doc/index.html, gtk/PlatGTK.cxx,\n\tgtk/ScintillaGTK.cxx, gtk/makefile, include/ILexer.h,\n\tinclude/Platform.h, include/SciLexer.h, include/Scintilla.h,\n\tinclude/Scintilla.iface, lexers/LexCPP.cxx,\n\tlexers/LexCoffeeScript.cxx, lexers/LexOthers.cxx,\n\tlexers/LexPascal.cxx, lexers/LexPerl.cxx, lexers/LexRust.cxx,\n\tlexers/LexSQL.cxx, lexers/LexVisualProlog.cxx,\n\tlexlib/StyleContext.h, lexlib/SubStyles.h, lexlib/WordList.cxx,\n\tlib/README.doc, qt/qscintilla.pro, src/Catalogue.cxx,\n\tsrc/Document.cxx, src/Editor.cxx, src/ScintillaBase.cxx,\n\tsrc/ScintillaBase.h, src/ViewStyle.cxx, src/ViewStyle.h,\n\ttest/XiteQt.py, test/simpleTests.py, version.txt, win32/PlatWin.cxx,\n\twin32/ScintRes.rc, win32/ScintillaWin.cxx, win32/makefile,\n\twin32/scintilla.mak:\n\tMerged Scintilla v3.3.6.\n\t[ada0941dec52]\n\n2013-10-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_de.qm, qt/qscintilla_de.ts:\n\tUpdated German translations from Detlev.\n\t[6c0af6af651c]\n\n\t* Makefile, build.py, qt/MacPasteboardMime.cpp, qt/qscintilla.pro,\n\tqt/qsciscintillabase.cpp:\n\tReinstated support for rectangular selections on OS/X for Qt v5.2\n\tand later.\n\t[dbfdf7be4793]\n\n2013-10-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the translation source files.\n\t[7ed4bf7ed4e7]\n\n\t* qt/qscilexercpp.cpp:\n\tAdded missing descriptions to the C++ lexer settings.\n\t[55d7627bb129]\n\n2013-10-01  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* designer-Qt4Qt5/designer.pro, example-Qt4Qt5/application.pro:\n\tFixed the building of the Designer plugin and the example for OS/X.\n\t[a67f71b06d3c]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/InputMethod.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded the remaining non-provisional Scintilla v3.3.5 features to the\n\tlow-level API.\n\t[4e8d0b46ebc0]\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the translation source files.\n\t[4beefc0d95ec]\n\n\t* NEWS, Python/sip/qscilexercpp.sip, Python/sip/qsciscintillabase.sip,\n\tqt/qscilexercpp.cpp, qt/qscilexercpp.h, qt/qsciscintillabase.h:\n\tUpdated the lexers for Scintilla v3.3.5.\n\t[fc901a2a491f]\n\n2013-09-30  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure-old.py, Python/configure.py, README,\n\tcocoa/InfoBar.mm, cocoa/PlatCocoa.mm, cocoa/ScintillaCocoa.h,\n\tcocoa/ScintillaCocoa.mm, cocoa/ScintillaFramework/ScintillaFramework\n\t.xcodeproj/project.pbxproj, cocoa/ScintillaTest/AppController.mm,\n\tcocoa/ScintillaTest/English.lproj/MainMenu.xib,\n\tcocoa/ScintillaView.h, cocoa/ScintillaView.mm, cppcheck.suppress,\n\tdelbin.bat, designer-Qt4Qt5/designer.pro, doc/Lexer.txt,\n\tdoc/ScintillaDoc.html, doc/ScintillaDownload.html,\n\tdoc/ScintillaHistory.html, doc/ScintillaRelated.html,\n\tdoc/ScintillaToDo.html, doc/index.html, example-\n\tQt4Qt5/application.pro, gtk/Converter.h, gtk/PlatGTK.cxx,\n\tgtk/ScintillaGTK.cxx, gtk/deps.mak, gtk/makefile, include/Face.py,\n\tinclude/HFacer.py, include/ILexer.h, include/Platform.h,\n\tinclude/SciLexer.h, include/Scintilla.h, include/Scintilla.iface,\n\tlexers/LexA68k.cxx, lexers/LexAU3.cxx, lexers/LexAVE.cxx,\n\tlexers/LexAda.cxx, lexers/LexAsm.cxx, lexers/LexAsn1.cxx,\n\tlexers/LexBash.cxx, lexers/LexBullant.cxx, lexers/LexCOBOL.cxx,\n\tlexers/LexCPP.cxx, lexers/LexCoffeeScript.cxx, lexers/LexConf.cxx,\n\tlexers/LexCrontab.cxx, lexers/LexCsound.cxx, lexers/LexD.cxx,\n\tlexers/LexECL.cxx, lexers/LexForth.cxx, lexers/LexGAP.cxx,\n\tlexers/LexGui4Cli.cxx, lexers/LexHTML.cxx, lexers/LexHaskell.cxx,\n\tlexers/LexInno.cxx, lexers/LexKVIrc.cxx, lexers/LexLaTeX.cxx,\n\tlexers/LexLisp.cxx, lexers/LexLout.cxx, lexers/LexLua.cxx,\n\tlexers/LexMMIXAL.cxx, lexers/LexMPT.cxx, lexers/LexMSSQL.cxx,\n\tlexers/LexMatlab.cxx, lexers/LexModula.cxx, lexers/LexMySQL.cxx,\n\tlexers/LexNsis.cxx, lexers/LexOpal.cxx, lexers/LexOthers.cxx,\n\tlexers/LexPO.cxx, lexers/LexPerl.cxx, lexers/LexPowerShell.cxx,\n\tlexers/LexPython.cxx, lexers/LexR.cxx, lexers/LexRuby.cxx,\n\tlexers/LexSTTXT.cxx, lexers/LexScriptol.cxx, lexers/LexSpice.cxx,\n\tlexers/LexTCMD.cxx, lexers/LexYAML.cxx, lexlib/Accessor.cxx,\n\tlexlib/Accessor.h, lexlib/CharacterCategory.cxx,\n\tlexlib/CharacterCategory.h, lexlib/CharacterSet.cxx,\n\tlexlib/LexAccessor.h, lexlib/LexerBase.cxx, lexlib/LexerModule.cxx,\n\tlexlib/LexerNoExceptions.cxx, lexlib/LexerNoExceptions.h,\n\tlexlib/LexerSimple.cxx, lexlib/OptionSet.h,\n\tlexlib/PropSetSimple.cxx, lexlib/PropSetSimple.h,\n\tlexlib/StyleContext.cxx, lexlib/StyleContext.h, lexlib/SubStyles.h,\n\tlexlib/WordList.cxx, lexlib/WordList.h, lib/README.doc,\n\tqt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qscintilla.pro,\n\tqt/qsciscintillabase.cpp, scripts/Face.py, scripts/FileGenerator.py,\n\tscripts/GenerateCaseConvert.py,\n\tscripts/GenerateCharacterCategory.py, scripts/HFacer.py,\n\tscripts/LexGen.py, scripts/ScintillaData.py, src/AutoComplete.cxx,\n\tsrc/AutoComplete.h, src/CallTip.cxx, src/CallTip.h,\n\tsrc/CaseConvert.cxx, src/CaseConvert.h, src/CaseFolder.cxx,\n\tsrc/CaseFolder.h, src/Catalogue.cxx, src/CellBuffer.cxx,\n\tsrc/CellBuffer.h, src/ContractionState.cxx, src/Decoration.cxx,\n\tsrc/Decoration.h, src/Document.cxx, src/Document.h, src/Editor.cxx,\n\tsrc/Editor.h, src/ExternalLexer.cxx, src/FontQuality.h,\n\tsrc/Indicator.cxx, src/KeyMap.cxx, src/KeyMap.h, src/LexGen.py,\n\tsrc/LineMarker.cxx, src/LineMarker.h, src/Partitioning.h,\n\tsrc/PerLine.cxx, src/PerLine.h, src/PositionCache.cxx,\n\tsrc/PositionCache.h, src/RESearch.cxx, src/RESearch.h,\n\tsrc/RunStyles.cxx, src/RunStyles.h, src/SVector.h,\n\tsrc/ScintillaBase.cxx, src/ScintillaBase.h, src/Selection.cxx,\n\tsrc/SplitVector.h, src/Style.cxx, src/Style.h,\n\tsrc/UniConversion.cxx, src/UniConversion.h, src/UnicodeFromUTF8.h,\n\tsrc/ViewStyle.cxx, src/ViewStyle.h, src/XPM.cxx, src/XPM.h,\n\ttest/README, test/ScintillaCallable.py, test/XiteQt.py,\n\ttest/XiteWin.py, test/examples/x.lua, test/examples/x.lua.styled,\n\ttest/examples/x.pl, test/examples/x.pl.styled, test/examples/x.rb,\n\ttest/examples/x.rb.styled, test/lexTests.py,\n\ttest/performanceTests.py, test/simpleTests.py,\n\ttest/unit/testCharClassify.cxx, test/unit/testContractionState.cxx,\n\ttest/unit/testPartitioning.cxx, test/unit/testRunStyles.cxx,\n\ttest/unit/testSplitVector.cxx, version.txt, win32/PlatWin.cxx,\n\twin32/PlatWin.h, win32/ScintRes.rc, win32/ScintillaWin.cxx,\n\twin32/deps.mak, win32/makefile, win32/scintilla.mak,\n\twin32/scintilla_vc6.mak:\n\tInitial merge of Scintilla v3.3.5.\n\t[40933b62f5ed]\n\n2013-09-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure-ng.py, Python/configure.py, designer-\n\tQt4/designer.pro, designer-Qt4/qscintillaplugin.cpp, designer-\n\tQt4/qscintillaplugin.h:\n\tMerged the 2.7-maint branch with the trunk.\n\t[7288d97c54b0]\n\n2013-08-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tFixed a missing const in the .sip files.\n\t[8b0425b87953] <2.7-maint>\n\n2013-06-27  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/configure-old.py, Python/configure.py,\n\tPython/sip/qsciscintillabase.sip, designer-Qt4Qt5/designer.pro,\n\texample-Qt4Qt5/application.pro, qt/InputMethod.cpp,\n\tqt/qscintilla.pro, qt/qsciscintilla.cpp, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tAdded support for input methods.\n\t[b97af619044b] <2.7-maint>\n\n2013-06-16  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.7.2 for changeset 9ecd14550589\n\t[2b1f187f29c6] <2.7-maint>\n\n\t* NEWS:\n\tReleased as v2.7.2.\n\t[9ecd14550589] [2.7.2] <2.7-maint>\n\n2013-06-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixed a configure.py bug.\n\t[cb062c6f9189] <2.7-maint>\n\n2013-05-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/configure.py:\n\tFixes for the PyQt5 support.\n\t[0714ef531ead] <2.7-maint>\n\n\t* Makefile, NEWS, Python/configure.py, Python/sip/qscimod5.sip,\n\tlib/README.doc:\n\tAdded support for building against PyQt5.\n\t[c982ff1b86f7] <2.7-maint>\n\n2013-05-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* build.py:\n\tChanged the format of the name of a snapshot to match other\n\tpackages.\n\t[d1f87bbc8377] <2.7-maint>\n\n2013-05-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp:\n\tSignificantly improved the performance of measuring the width of\n\ttext so that very long lines (100,000 characters) can be handled.\n\t[5c88dc344f69] <2.7-maint>\n\n2013-04-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tconfigure.py now issues a more explicit error message if QtCore\n\tcannot be imported.\n\t[4d0097b1ff05] <2.7-maint>\n\n\t* Python/configure.py:\n\tFixed a qmake warning message from configure.py.\n\t[2363c96edeb0] <2.7-maint>\n\n2013-04-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tThe default EOL mode on OS/X is now EolUnix. Clarified the\n\tdocumentation for EolMode.\n\t[a436460d0300] <2.7-maint>\n\n2013-03-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFurther fixes for configure.py.\n\t[78fa6fef2c76] <2.7-maint>\n\n2013-03-13  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexer.h:\n\tClarified the description of QSciLexer::description().\n\t[688b482379e3] <2.7-maint>\n\n\t* Python/configure.py:\n\tFixed the last (trivial) change.\n\t[0a3494ba669a] <2.7-maint>\n\n2013-03-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tconfigure.py now gives the user more information about the copy of\n\tsip being used.\n\t[5c3be581d62b] <2.7-maint>\n\n2013-03-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tOn OS/X configure.py will explicitly set the qmake spec to macx-g++\n\t(Qt4) or macx-clang (Qt5) if the default might be macx-xcode. Added\n\tthe --spec option to configure.py.\n\t[36a9bf2fbebd] <2.7-maint>\n\n2013-03-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tMinor cosmetic tweaks to configure.py.\n\t[296cd10747b7] <2.7-maint>\n\n\t* qt/PlatQt.cpp, qt/SciClasses.cpp, qt/qscicommandset.cpp,\n\tqt/qscintilla.pro, qt/qsciscintillabase.cpp:\n\tRemoved the remaining uses of Q_WS_* for Qt v5.\n\t[7fafd5c09eea] <2.7-maint>\n\n2013-03-01  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.7.1 for changeset 2583dc3dbc8d\n\t[0674c291eab4] <2.7-maint>\n\n\t* NEWS:\n\tReleased as v2.7.1.\n\t[2583dc3dbc8d] [2.7.1] <2.7-maint>\n\n2013-02-28  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lexlib/CharacterSet.h:\n\tRe-applied a fix to the underlying code thay got lost when Scintilla\n\tv3.23 was merged.\n\t[ee9eeec7d796] <2.7-maint>\n\n2013-02-26  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciapis.cpp:\n\tA fix for the regression introduced with the previous fix.\n\t[154428cebb5e] <2.7-maint>\n\n2013-02-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, qt/qsciapis.cpp, qt/qscintilla.pro:\n\tFixed an autocompletion bug where there are entries Foo.* and\n\tFooBar.\n\t[620d72d86980] <2.7-maint>\n\n2013-02-06  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tconfigure.py fixes for Linux.\n\t[031b5b767926] <2.7-maint>\n\n\t* Python/configure.py:\n\tAdded the --sip-incdir and --pyqt-sipdir options to configure.py and\n\tother fixes for building on Windows.\n\t[517a3d0243fd] <2.7-maint>\n\n\t* Makefile, NEWS:\n\tUpdated the NEWS file.\n\t[eb00e08e1950] <2.7-maint>\n\n\t* Makefile, Python/configure.py:\n\tFixed configure.py for Qt5.\n\t[7ddb5bf2030c] <2.7-maint>\n\n\t* Python/configure-ng.py, Python/configure-old.py,\n\tPython/configure.py, build.py, lib/README.doc:\n\tCompleted configure-ng.py and renamed it configure.py. The old\n\tconfigure.py is now called configure-old.py.\n\t[8d58b2899080] <2.7-maint>\n\n2013-02-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure-ng.py:\n\tconfigure-ng.py now uses -fno-exceptions on Linux and OS/X.\n\tconfigure-ng.py now hides unneeded symbols on Linux.\n\t[391e4f56b009] <2.7-maint>\n\n\t* Python/configure-ng.py:\n\tconfigure-ng.py will now install the .sip and .api files.\n\t[e228d58a670c] <2.7-maint>\n\n\t* Python/configure-ng.py:\n\tconfigure-ng.py will now create a Makefile that will build the\n\tPython module.\n\t[cb47ace62a70] <2.7-maint>\n\n2013-02-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciglobal.h:\n\tUse Q_OS_WIN for compatibility for Qt5.\n\t[da752cf4510a] <2.7-maint>\n\n2013-01-29  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* designer-Qt4Qt5/designer.pro, example-Qt4Qt5/application.pro:\n\tUse macx rather than mac in the .pro files.\n\t[ee818a367df7] <2.7-maint>\n\n2012-12-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure-ng.py, Python/configure.py, designer-\n\tQt4Qt5/designer.pro, example-Qt4Qt5/application.pro, lib/README.doc,\n\tqt/qscintilla.pro:\n\tVarious OS/X fixes so that setting DYLD_LIBRARY_PATH isn't\n\tnecessary.\n\t[e7854b8b01e3] <2.7-maint>\n\n2012-12-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* build.py, designer-Qt4/designer.pro, designer-\n\tQt4/qscintillaplugin.cpp, designer-Qt4/qscintillaplugin.h, designer-\n\tQt4Qt5/designer.pro, designer-Qt4Qt5/qscintillaplugin.cpp, designer-\n\tQt4Qt5/qscintillaplugin.h, lib/README.doc:\n\tUpdated the Designer plugin for Qt5.\n\t[77f575c87ebb] <2.7-maint>\n\n2012-12-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.7 for changeset 9bab1e7b02e3\n\t[5600138109ce]\n\n\t* NEWS:\n\tReleased as v2.7.\n\t[9bab1e7b02e3] [2.7]\n\n2012-12-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_es.qm, qt/qscintilla_es.ts:\n\tUpdated Spanish translations from Jaime.\n\t[b188c942422c]\n\n\t* NEWS:\n\tUpdated the NEWS file regarding Qt v5-rc1.\n\t[be9e6b928921]\n\n2012-12-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tA final(?) fix for scroll bars and annotations.\n\t[378f28e5b4b2]\n\n\t* Python/configure-ng.py:\n\tMore build system changes.\n\t[f53fc8743ff1]\n\n2012-11-29  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure-ng.py:\n\tMore configure script changes.\n\t[434c9b3185a5]\n\n\t* Python/configure-ng.py:\n\tMore work on the new configure script.\n\t[3a044732b799]\n\n\t* qt/qscintilla_cs.qm, qt/qscintilla_de.qm, qt/qscintilla_de.ts,\n\tqt/qscintilla_es.qm, qt/qscintilla_fr.qm, qt/qscintilla_pt_br.qm,\n\tqt/qscintilla_ru.qm:\n\tUpdated German translations from Detlev.\n\t[9dab221845ca]\n\n2012-11-28  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure-ng.py, build.py:\n\tAdded the start of the SIP v5 compatible build script.\n\t[781d2af60cfc]\n\n2012-11-27  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tFixed the handling of the 'linux' platform in the Python bindings.\n\t[835d5e3be69e]\n\n2012-11-26  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tWorked around Scintilla bugs related to scroll bars and annotations.\n\t[edc190ecc6fc]\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the translation files.\n\t[ec754f87a735]\n\n\t* NEWS, Python/sip/qscilexercss.sip, qt/qscilexercss.cpp,\n\tqt/qscilexercss.h:\n\tUpdated the CSS lexer for Scintilla v3.23.\n\t[011fba6d668d]\n\n\t* qt/qscilexercpp.h:\n\tFixed a couple of documentation typos.\n\t[7c2d04c76bd6]\n\n\t* NEWS, Python/sip/qscilexercpp.sip, qt/qscilexercpp.cpp,\n\tqt/qscilexercpp.h:\n\tUpdated the C++ lexer for Scintilla v3.23.\n\t[ad93ee355639]\n\n2012-11-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscilexercpp.sip, qt/qscilexercpp.cpp, qt/qscilexercpp.h:\n\tUpdated the styles for the C++ lexer.\n\t[153429503998]\n\n2012-11-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/PlatQt.cpp,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAdded CallTipsPosition, callTipsPosition() and\n\tsetCallTipsPosition().\n\t[7e5602869fee]\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qsciscintilla.h:\n\tAdded SquigglePixmapIndicator to QsciScintilla::IndicatorStyle.\n\t[ad98a5396151]\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded WrapFlagInMargin to QsciScintilla::WrapVisualFlag.\n\t[a38c75c45fb3]\n\n\t* NEWS, qt/PlatQt.cpp, qt/qsciscintilla.cpp, qt/qscistyle.cpp:\n\tCreated a back door to pass the Qt weight of a font avoiding lossy\n\tconversions between Qt weights and Scintilla weights. The default\n\tbehaviour is now SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE which is a\n\tchange but reflects what people really expect.\n\t[78ce86e97ad3]\n\n2012-11-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tUpdated the constants from Scintilla v3.23.\n\t[a3a0768af999]\n\n\t* NEWS, Python/configure.py, include/Platform.h, lib/README.doc,\n\tqt/ListBoxQt.cpp, qt/ListBoxQt.h, qt/PlatQt.cpp, qt/SciClasses.cpp,\n\tqt/ScintillaQt.cpp, qt/qscintilla.pro, src/ExternalLexer.h,\n\tsrc/XPM.cxx, src/XPM.h:\n\tUpdated the platform support so that it compiles (but untested).\n\t[abae8e56a6ea]\n\n2012-11-20  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* cocoa/InfoBar.h, cocoa/InfoBar.mm, cocoa/PlatCocoa.h,\n\tcocoa/PlatCocoa.mm, cocoa/QuartzTextStyle.h,\n\tcocoa/QuartzTextStyleAttribute.h, cocoa/ScintillaCocoa.h,\n\tcocoa/ScintillaCocoa.mm,\n\tcocoa/ScintillaFramework/English.lproj/InfoPlist.strings, cocoa/Scin\n\ttillaFramework/ScintillaFramework.xcodeproj/project.pbxproj,\n\tcocoa/ScintillaTest/AppController.mm,\n\tcocoa/ScintillaTest/English.lproj/InfoPlist.strings,\n\tcocoa/ScintillaTest/ScintillaTest.xcodeproj/project.pbxproj,\n\tcocoa/ScintillaView.h, cocoa/ScintillaView.mm,\n\tcocoa/checkbuildosx.sh, delbin.bat, delcvs.bat,\n\tdoc/ScintillaDoc.html, doc/ScintillaDownload.html,\n\tdoc/ScintillaHistory.html, doc/ScintillaRelated.html,\n\tdoc/ScintillaToDo.html, doc/annotations.png, doc/index.html,\n\tdoc/styledmargin.png, gtk/PlatGTK.cxx, gtk/ScintillaGTK.cxx,\n\tgtk/makefile, include/Face.py, include/ILexer.h, include/Platform.h,\n\tinclude/SciLexer.h, include/Scintilla.h, include/Scintilla.iface,\n\tinclude/ScintillaWidget.h, lexers/LexAVS.cxx, lexers/LexAda.cxx,\n\tlexers/LexAsm.cxx, lexers/LexBash.cxx, lexers/LexBasic.cxx,\n\tlexers/LexCPP.cxx, lexers/LexCSS.cxx, lexers/LexCoffeeScript.cxx,\n\tlexers/LexD.cxx, lexers/LexECL.cxx, lexers/LexFortran.cxx,\n\tlexers/LexHTML.cxx, lexers/LexLua.cxx, lexers/LexMMIXAL.cxx,\n\tlexers/LexMPT.cxx, lexers/LexNsis.cxx, lexers/LexOScript.cxx,\n\tlexers/LexOthers.cxx, lexers/LexPO.cxx, lexers/LexPascal.cxx,\n\tlexers/LexPerl.cxx, lexers/LexRuby.cxx, lexers/LexSQL.cxx,\n\tlexers/LexScriptol.cxx, lexers/LexSpice.cxx, lexers/LexTADS3.cxx,\n\tlexers/LexTCL.cxx, lexers/LexTCMD.cxx, lexers/LexVHDL.cxx,\n\tlexers/LexVisualProlog.cxx, lexers/LexYAML.cxx,\n\tlexlib/CharacterSet.h, lexlib/LexAccessor.h,\n\tlexlib/PropSetSimple.cxx, macosx/ExtInput.cxx, macosx/ExtInput.h,\n\tmacosx/PlatMacOSX.cxx, macosx/PlatMacOSX.h,\n\tmacosx/QuartzTextLayout.h, macosx/QuartzTextStyle.h,\n\tmacosx/QuartzTextStyleAttribute.h,\n\tmacosx/SciTest/English.lproj/InfoPlist.strings,\n\tmacosx/SciTest/English.lproj/main.xib, macosx/SciTest/Info.plist,\n\tmacosx/SciTest/SciTest.xcode/project.pbxproj,\n\tmacosx/SciTest/SciTest_Prefix.pch, macosx/SciTest/main.cpp,\n\tmacosx/SciTest/version.plist, macosx/ScintillaCallTip.cxx,\n\tmacosx/ScintillaCallTip.h, macosx/ScintillaListBox.cxx,\n\tmacosx/ScintillaListBox.h, macosx/ScintillaMacOSX.cxx,\n\tmacosx/ScintillaMacOSX.h, macosx/TCarbonEvent.cxx,\n\tmacosx/TCarbonEvent.h, macosx/TRect.h, macosx/TView.cxx,\n\tmacosx/TView.h, macosx/deps.mak, macosx/makefile,\n\tsrc/AutoComplete.cxx, src/AutoComplete.h, src/CallTip.cxx,\n\tsrc/CallTip.h, src/Catalogue.cxx, src/CellBuffer.cxx,\n\tsrc/CellBuffer.h, src/CharClassify.cxx, src/CharClassify.h,\n\tsrc/Decoration.cxx, src/Document.cxx, src/Document.h,\n\tsrc/Editor.cxx, src/Editor.h, src/ExternalLexer.h,\n\tsrc/FontQuality.h, src/Indicator.cxx, src/Indicator.h,\n\tsrc/LexGen.py, src/LineMarker.cxx, src/LineMarker.h,\n\tsrc/PerLine.cxx, src/PerLine.h, src/PositionCache.cxx,\n\tsrc/PositionCache.h, src/RESearch.cxx, src/RunStyles.cxx,\n\tsrc/SciTE.properties, src/ScintillaBase.cxx, src/ScintillaBase.h,\n\tsrc/SplitVector.h, src/Style.cxx, src/Style.h,\n\tsrc/UniConversion.cxx, src/UniConversion.h, src/ViewStyle.cxx,\n\tsrc/ViewStyle.h, src/XPM.cxx, src/XPM.h, test/README,\n\ttest/examples/x.cxx, test/examples/x.cxx.styled, test/lexTests.py,\n\ttest/simpleTests.py, test/unit/makefile,\n\ttest/unit/testCharClassify.cxx, test/unit/testRunStyles.cxx, tgzsrc,\n\tversion.txt, win32/CheckD2D.cxx, win32/PlatWin.cxx, win32/PlatWin.h,\n\twin32/ScintRes.rc, win32/ScintillaWin.cxx, win32/makefile,\n\twin32/scintilla.mak, win32/scintilla_vc6.mak, zipsrc.bat:\n\tInitial merge of Scintilla v3.23.\n\t[b116f361ac01]\n\n\t* example-Qt4/application.pro, example-Qt4/application.qrc, example-\n\tQt4/images/copy.png, example-Qt4/images/cut.png, example-\n\tQt4/images/new.png, example-Qt4/images/open.png, example-\n\tQt4/images/paste.png, example-Qt4/images/save.png, example-\n\tQt4/main.cpp, example-Qt4/mainwindow.cpp, example-Qt4/mainwindow.h:\n\tMerged the 2.6 maintenance branch with the trunk.\n\t[0bf4f7453c68]\n\n2012-11-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, example-Qt4Qt5/application.pro, qt/qsciscintillabase.cpp:\n\tFixed the linking of the example on OS/X.\n\t[e1d1f43fae71] <2.6-maint>\n\n2012-11-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, qt/PlatQt.cpp, qt/qscimacro.cpp, qt/qsciscintilla.cpp,\n\tqt/qscistyle.cpp:\n\tRemoved all calls that are deprecated in Qt5. The build system now\n\tsupports cross-compilation to the Raspberry Pi.\n\t[afef9d2b3ab1] <2.6-maint>\n\n2012-11-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexersql.h:\n\tAdded comments to the QsciLexerSQL documentation stating that\n\tadditional keywords must be defined using lower case.\n\t[79a9274b77c3] <2.6-maint>\n\n2012-10-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, lib/ed.py, qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAdded a replace option to the test editor's find commands. Finished\n\timplementing findFirstInSelection().\n\t[80df6cc89bae] <2.6-maint>\n\n\t* lib/ed.py:\n\tAdded the Find, Find in Selection and Find Next actions to the test\n\teditor.\n\t[4aad56aedbea] <2.6-maint>\n\n2012-10-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lib/ed.py:\n\tAdded an internal copy of the hackable Python test editor.\n\t[a67a6fe99937] <2.6-maint>\n\n2012-09-27  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lib/gen_python3_api.py, qsci/api/python/Python-3.3.api:\n\tFixed the gen_python3_api.py script to be able to exclude module\n\thierachies. Added the API file for Python v3.3.\n\t[06bbb2d1c227] <2.6-maint>\n\n2012-09-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ListBoxQt.cpp:\n\tFixed a problem building against versions of Qt4 prior to v4.7.\n\t[7bf93d60a50b] <2.6-maint>\n\n2012-09-18  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded setOverwriteMode() and overwriteMode() to QsciScintilla.\n\t[1affc53d2d88] <2.6-maint>\n\n2012-09-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tDisable the use of QMacPasteboardMime for Qt v5-beta1.\n\t[a6625d5928c6] <2.6-maint>\n\n2012-08-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexerperl.cpp, qt/qscilexerperl.h:\n\tFixed auto-indentation for Perl.\n\t[5eb1d97f95d6] <2.6-maint>\n\n2012-08-13  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lexlib/CharacterSet.h:\n\tRemoved an incorrect assert() in the main Scintilla code.\n\t[1aaf5e09d4b2] <2.6-maint>\n\n2012-08-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAdded QsciScintilla::wordAtLineIndex().\n\t[0c5d77aef4f7] <2.6-maint>\n\n2012-07-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla.pro, qt/qsciscintillabase.cpp:\n\tFixed key handling on Linux with US international layout which\n\tgenerates non-ASCII sequences for quote characters.\n\t[061ab2c5bea3] <2.6-maint>\n\n2012-06-20  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.6.2 for changeset f9d3d982c20f\n\t[a5bb033cd9e0] <2.6-maint>\n\n\t* NEWS:\n\tReleased as v2.6.2.\n\t[f9d3d982c20f] [2.6.2] <2.6-maint>\n\n2012-06-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tFixed pasting of text in UTF8 mode (and hopefully Latin1 mode as\n\twell).\n\t[6df653daef18] <2.6-maint>\n\n\t* qt/qsciscintillabase.cpp:\n\tRectangular selections are now always encoded as plain/text with an\n\texplicit, and separate, marker to indicate that it is rectangular.\n\t[012a0b2ca89f] <2.6-maint>\n\n2012-06-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tUsed the Mac method of marking rectangular selections as the '\\0'\n\tScintilla hack just doesn't work with Qt.\n\t[75020a35b5eb] <2.6-maint>\n\n\t* qt/qscintilla.pro:\n\tBumped the library version number.\n\t[12f21729e254] <2.6-maint>\n\n2012-06-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tImproved the support for rectangular selections and the\n\tinteroperability with other Scintilla based editors.\n\t[a42942b57fb7] <2.6-maint>\n\n\t* qt/qsciscintillabase.cpp:\n\tFixed the middle button pasting of rectangular selections.\n\t[db58aa6c6d7d] <2.6-maint>\n\n\t* qt/qscidocument.cpp:\n\tFixed a bug that seemed to mean the initial EOL mode was always\n\tUNIX.\n\t[88561cd29a60] <2.6-maint>\n\n\t* qt/qsciscintillabase.cpp:\n\tLine endings are properly translated when dropping text.\n\t[d21994584e87] <2.6-maint>\n\n2012-06-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, qt/qsciprinter.h:\n\tThe Python bindings now build against Qt5.\n\t[ff2a74e5aec2] <2.6-maint>\n\n2012-04-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, NEWS, build.py, example-Qt4/application.pro, example-\n\tQt4/application.qrc, example-Qt4/images/copy.png, example-\n\tQt4/images/cut.png, example-Qt4/images/new.png, example-\n\tQt4/images/open.png, example-Qt4/images/paste.png, example-\n\tQt4/images/save.png, example-Qt4/main.cpp, example-\n\tQt4/mainwindow.cpp, example-Qt4/mainwindow.h, example-\n\tQt4Qt5/application.pro, example-Qt4Qt5/application.qrc, example-\n\tQt4Qt5/images/copy.png, example-Qt4Qt5/images/cut.png, example-\n\tQt4Qt5/images/new.png, example-Qt4Qt5/images/open.png, example-\n\tQt4Qt5/images/paste.png, example-Qt4Qt5/images/save.png, example-\n\tQt4Qt5/main.cpp, example-Qt4Qt5/mainwindow.cpp, example-\n\tQt4Qt5/mainwindow.h, lib/LICENSE.GPL2, lib/LICENSE.GPL3,\n\tlib/LICENSE.commercial.short, lib/LICENSE.gpl.short, lib/README,\n\tlib/README.doc, lib/qscintilla.dxy, qt/PlatQt.cpp,\n\tqt/qscintilla.pro:\n\tPorted to Qt v5.\n\t[ff3710487c3e] <2.6-maint>\n\n2012-04-02  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciapis.cpp:\n\tWorked around an obscure Qt (or compiler) bug when handling call\n\ttips.\n\t[e6c7edcfdfb9] <2.6-maint>\n\n2012-03-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscilexer.sip, Python/sip/qscilexerbash.sip,\n\tPython/sip/qscilexerbatch.sip, Python/sip/qscilexercpp.sip,\n\tPython/sip/qscilexercss.sip, Python/sip/qscilexerd.sip,\n\tPython/sip/qscilexerdiff.sip, Python/sip/qscilexerhtml.sip,\n\tPython/sip/qscilexermakefile.sip, Python/sip/qscilexerperl.sip,\n\tPython/sip/qscilexerpov.sip, Python/sip/qscilexerproperties.sip,\n\tPython/sip/qscilexertex.sip, Python/sip/qscilexerverilog.sip,\n\tqt/qscilexer.h, qt/qscilexerbash.h, qt/qscilexerbatch.h,\n\tqt/qscilexercpp.h, qt/qscilexercss.h, qt/qscilexerd.h,\n\tqt/qscilexerdiff.h, qt/qscilexerhtml.h, qt/qscilexermakefile.h,\n\tqt/qscilexerperl.h, qt/qscilexerpov.h, qt/qscilexerproperties.h,\n\tqt/qscilexertex.h, qt/qscilexerverilog.h:\n\tQSciLexer::wordCharacters() is now part of the public API.\n\t[933ef6a11ee6] <2.6-maint>\n\n2012-02-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexercpp.h:\n\tUpdated the documentation for QsciLexerCpp::keywords() so that it\n\tdescribes which sets are supported.\n\t[4e0cb0250dad] <2.6-maint>\n\n2012-02-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla.pro, src/Document.cxx:\n\tSome Scintilla fixes for the SCI_NAMESPACE support.\n\t[611ffd016585] <2.6-maint>\n\n2012-02-10  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.6.1 for changeset 47d8fdf44946\n\t[aa843f471972] <2.6-maint>\n\n\t* NEWS:\n\tUpdated the NEWS file. Released as v2.6.1.\n\t[47d8fdf44946] [2.6.1] <2.6-maint>\n\n2012-01-26  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tDon't implement shortcut overrides for the standard context menu\n\tshortcuts. Instead leave it to the check against bound keys.\n\t[e8ccaf398640] <2.6-maint>\n\n2012-01-19  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciapis.cpp:\n\tAPIs now allow for whitespace between the end of a word and the\n\topening parenthesis of the argument list.\n\t[b09b25f38411] <2.6-maint>\n\n2012-01-11  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/SciClasses.cpp:\n\tFixed the handling of auto-completion lists on Windows.\n\t[131138b43c85] <2.6-maint>\n\n2011-12-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscicommandset.sip, qt/qscicommandset.cpp,\n\tqt/qscicommandset.h, qt/qscintilla.pro:\n\tImproved the Qt v3 port so that the signatures don't need to be\n\tchanged. Bumped the .so version number.\n\t[3171bb05b1d8] <2.6-maint>\n\n2011-12-06  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, NEWS, Python/sip/qscicommandset.sip, include/Platform.h,\n\tqt/ListBoxQt.cpp, qt/qscicommandset.cpp, qt/qscicommandset.h,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h, src/XPM.cxx:\n\tFixed building against Qt v3.\n\t[74df75a62f5c] <2.6-maint>\n\n2011-11-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, include/Platform.h, qt/ListBoxQt.cpp, qt/ListBoxQt.h,\n\tqt/PlatQt.cpp, qt/SciClasses.cpp, qt/SciClasses.h,\n\tqt/SciNamespace.h, qt/ScintillaQt.cpp, qt/ScintillaQt.h,\n\tqt/qscintilla.pro, qt/qsciscintilla.h, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tAdded support for SCI_NAMESPACE to allow all internal Scintilla\n\tclasses to be placed in the Scintilla namespace.\n\t[ab7857131e35] <2.6-maint>\n\n2011-11-11  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.6 for changeset 8b119c4f69d0\n\t[1a5dd31e773e]\n\n\t* NEWS, lib/README.doc:\n\tUpdated the NEWS file. Updated the introductory documentation.\n\tReleased as v2.6.\n\t[8b119c4f69d0] [2.6]\n\n2011-11-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qscicommandset.sip, Python/sip/qsciscintilla.sip,\n\tqt/qscicommandset.cpp, qt/qscicommandset.h, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded QsciCommandSet::boundTo(). Ordinary keys and those bound to\n\tcommands now override any shortcuts.\n\t[ba98bc555aca]\n\n2011-10-28  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_de.qm, qt/qscintilla_de.ts:\n\tMore updated German translations from Detlev.\n\t[9ff20df1997b]\n\n2011-10-27  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.qm, qt/qscintilla_de.qm, qt/qscintilla_de.ts,\n\tqt/qscintilla_es.qm, qt/qscintilla_es.ts, qt/qscintilla_fr.qm,\n\tqt/qscintilla_pt_br.qm, qt/qscintilla_ru.qm:\n\tUpdated Spanish translations from Jaime. Updated German translations\n\tfrom Detlev.\n\t[4903315d96b1]\n\n2011-10-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscicommand.sip:\n\tFixed SelectAll in the Python bindings.\n\t[b6f0a46e0eac]\n\n\t* qt/ScintillaQt.cpp, qt/qsciscintillabase.cpp:\n\tFixed drag and drop (specifically so that copying works on OS/X\n\tagain).\n\t[6ab90cb63b2b]\n\n2011-10-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp:\n\tFixed a display bug with kerned fonts.\n\t[a746e319d9cd]\n\n\t* qt/qsciscintilla.cpp:\n\tThe foreground and background colours of selected text are now taken\n\tfrom the application palette.\n\t[7f6c34ad8d27]\n\n\t* NEWS:\n\tUpdated the NEWS file.\n\t[1717c6d59b12]\n\n\t* Python/sip/qsciscintilla.sip, qt/qscicommand.h,\n\tqt/qscicommandset.cpp, qt/qscintilla_cs.ts, qt/qscintilla_de.ts,\n\tqt/qscintilla_es.ts, qt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts,\n\tqt/qscintilla_ru.ts, qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tRenamed QsciCommand::SelectDocument to SelectAll. Added\n\tQsciScintilla::createStandardContextMenu().\n\t[c42fa7e83b07]\n\n2011-10-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the .ts files.\n\t[92d0b6ddf371]\n\n\t* qt/qscicommandset.cpp:\n\tCompleted the OS/X specific key bindings.\n\t[964fa889b807]\n\n2011-10-20  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscicommandset.cpp, qt/qsciscintillabase.cpp:\n\tFixed the support for SCMOD_META. Started to add the correct OS/X\n\tkey bindings as the default.\n\t[0073fa86a5a0]\n\n\t* Python/sip/qscicommand.sip, qt/qscicommand.h, qt/qscicommandset.cpp:\n\tAll available commands are now defined in the standard command set.\n\t[7c7b81b55f0e]\n\n\t* Python/sip/qscicommand.sip, qt/qscicommand.h:\n\tCompleted the QsciCommand::Command documentation. Added the members\n\tto QsciCommand.Command in the Python bindings.\n\t[0ca6ff576c21]\n\n2011-10-18  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qscicommandset.sip, qt/qscicommand.h,\n\tqt/qscicommandset.cpp, qt/qscicommandset.h:\n\tAdded QsciCommandSet::find().\n\t[e75565018b90]\n\n\t* NEWS, Python/sip/qscicommand.sip, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qscicommand.cpp,\n\tqt/qscicommand.h, qt/qscicommandset.cpp, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded Command, command() and execute() to QsciCommand. Backed out\n\tthe high level support for moving the selection up and down.\n\t[4852ee57353e]\n\n2011-10-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexersql.cpp:\n\tFix for the changed fold at else property in the SQL lexer.\n\t[e65a458cd9d8]\n\n\t* NEWS, Python/sip/qscilexerpython.sip, qt/qscilexerpython.cpp,\n\tqt/qscilexerpython.h:\n\tAdded highlightSubidentifiers() and setHighlightSubidentifiers() to\n\tthe Python lexer.\n\t[b397695bc2ab]\n\n\t* NEWS, Python/sip/qscilexercpp.sip, qt/qscilexercpp.cpp,\n\tqt/qscilexercpp.h:\n\tAdded support for triple quoted strings to the C++ lexer.\n\t[687d04948c5d]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded low level support for identifiers, scrolling to the start and\n\tend. Added low and hight level support for moving the selection up\n\tand down.\n\t[3ac1ccfad039]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded low and high level support for margin options.\n\t[f3cd3244cecd]\n\n2011-10-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tUpdated the brace matching support to handle indicators.\n\t[7e4a4d3529a8]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded SCI_SETEMPTYSELECTION.\n\t[879b97c676a4]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tUpdated the support for indicators.\n\t[b3643569a827]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded SCI_MARKERSETBACKSELECTED and SCI_MARKERENABLEHIGHLIGHT.\n\t[7127ee82d128]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tAdded low and high-level support for RGBA images (ie. QImage).\n\t[7707052913ef]\n\n2011-10-13  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qscilexerlua.sip, qt/qscilexerlua.cpp,\n\tqt/qscilexerlua.h:\n\tUpdated the Lua lexer.\n\t[710e50d5692c]\n\n\t* NEWS, Python/sip/qscilexerperl.sip, qt/qscilexerperl.cpp,\n\tqt/qscilexerperl.h:\n\tUpdated the Perl lexer.\n\t[6d16e2e9354b]\n\n2011-10-11  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, cocoa/ScintillaCallTip.h,\n\tcocoa/ScintillaCallTip.mm, cocoa/ScintillaListBox.h,\n\tcocoa/ScintillaListBox.mm, cocoa/res/info_bar_bg.png,\n\tcocoa/res/mac_cursor_busy.png, cocoa/res/mac_cursor_flipped.png,\n\tmacosx/SciTest/English.lproj/InfoPlist.strings,\n\tmacosx/SciTest/English.lproj/main.nib/classes.nib,\n\tmacosx/SciTest/English.lproj/main.nib/info.nib,\n\tmacosx/SciTest/English.lproj/main.nib/objects.xib,\n\tmacosx/SciTest/English.lproj/main.xib, qt/ListBoxQt.cpp,\n\tqt/ListBoxQt.h, qt/PlatQt.cpp, qt/qscintilla.pro, src/XPM.cxx,\n\tsrc/XPM.h:\n\tSome fixes left over from the merge of v2.29. Added support for RGBA\n\timages so that the merged version compiles.\n\t[16c6831c337f]\n\n\t* cocoa/InfoBar.mm, cocoa/PlatCocoa.h, cocoa/PlatCocoa.mm,\n\tcocoa/QuartzTextLayout.h, cocoa/QuartzTextStyle.h,\n\tcocoa/QuartzTextStyleAttribute.h, cocoa/ScintillaCocoa.h,\n\tcocoa/ScintillaCocoa.mm, cocoa/ScintillaFramework/ScintillaFramework\n\t.xcodeproj/project.pbxproj, cocoa/ScintillaTest/AppController.mm,\n\tcocoa/ScintillaTest/ScintillaTest.xcodeproj/project.pbxproj,\n\tcocoa/ScintillaView.h, cocoa/ScintillaView.mm, doc/SciCoding.html,\n\tdoc/ScintillaDoc.html, doc/ScintillaDownload.html,\n\tdoc/ScintillaHistory.html, doc/ScintillaRelated.html,\n\tdoc/ScintillaToDo.html, doc/index.html, gtk/PlatGTK.cxx,\n\tgtk/ScintillaGTK.cxx, gtk/makefile, include/Platform.h,\n\tinclude/SciLexer.h, include/Scintilla.h, include/Scintilla.iface,\n\tlexers/LexAU3.cxx, lexers/LexCOBOL.cxx, lexers/LexCPP.cxx,\n\tlexers/LexConf.cxx, lexers/LexHTML.cxx, lexers/LexInno.cxx,\n\tlexers/LexLua.cxx, lexers/LexMagik.cxx, lexers/LexMarkdown.cxx,\n\tlexers/LexMatlab.cxx, lexers/LexModula.cxx, lexers/LexOthers.cxx,\n\tlexers/LexPerl.cxx, lexers/LexPowerPro.cxx, lexers/LexPython.cxx,\n\tlexers/LexSQL.cxx, lexers/LexTeX.cxx, lexers/LexVHDL.cxx,\n\tlexers/LexVerilog.cxx, lexlib/Accessor.cxx, lexlib/CharacterSet.h,\n\tlexlib/PropSetSimple.cxx, lexlib/SparseState.h,\n\tlexlib/StyleContext.h, lexlib/WordList.cxx, macosx/PlatMacOSX.cxx,\n\tmacosx/PlatMacOSX.h, macosx/SciTest/SciTest.xcode/project.pbxproj,\n\tmacosx/ScintillaMacOSX.h, macosx/makefile, src/CallTip.cxx,\n\tsrc/ContractionState.cxx, src/ContractionState.h,\n\tsrc/Decoration.cxx, src/Document.cxx, src/Document.h,\n\tsrc/Editor.cxx, src/Editor.h, src/Indicator.cxx, src/Indicator.h,\n\tsrc/KeyMap.cxx, src/KeyMap.h, src/LexGen.py, src/LineMarker.cxx,\n\tsrc/LineMarker.h, src/PerLine.cxx, src/PositionCache.cxx,\n\tsrc/PositionCache.h, src/RESearch.cxx, src/RunStyles.cxx,\n\tsrc/RunStyles.h, src/ScintillaBase.cxx, src/Style.cxx, src/Style.h,\n\tsrc/ViewStyle.cxx, src/ViewStyle.h, src/XPM.cxx, src/XPM.h,\n\ttest/XiteMenu.py, test/XiteWin.py, test/examples/x.html,\n\ttest/examples/x.html.styled, test/performanceTests.py,\n\ttest/simpleTests.py, test/unit/testContractionState.cxx,\n\ttest/unit/testRunStyles.cxx, version.txt, win32/PlatWin.cxx,\n\twin32/ScintRes.rc, win32/ScintillaWin.cxx, win32/scintilla.mak:\n\tMerged Scintilla v2.29.\n\t[750c2c3cef72]\n\n\t* Merged the v2.5 maintenance branch back into the trunk.\n\t[eab39863675f]\n\n2011-06-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexer.cpp, qt/qscilexerbash.cpp, qt/qscilexerbatch.cpp,\n\tqt/qscilexercmake.cpp, qt/qscilexercpp.cpp, qt/qscilexercsharp.cpp,\n\tqt/qscilexercss.cpp, qt/qscilexerd.cpp, qt/qscilexerfortran77.cpp,\n\tqt/qscilexerhtml.cpp, qt/qscilexerjavascript.cpp,\n\tqt/qscilexerlua.cpp, qt/qscilexermakefile.cpp,\n\tqt/qscilexermatlab.cpp, qt/qscilexerpascal.cpp,\n\tqt/qscilexerperl.cpp, qt/qscilexerpostscript.cpp,\n\tqt/qscilexerpov.cpp, qt/qscilexerproperties.cpp,\n\tqt/qscilexerpython.cpp, qt/qscilexerruby.cpp, qt/qscilexerspice.cpp,\n\tqt/qscilexersql.cpp, qt/qscilexertcl.cpp, qt/qscilexerverilog.cpp,\n\tqt/qscilexervhdl.cpp, qt/qscilexerxml.cpp, qt/qscilexeryaml.cpp:\n\tChanged the default fonts for MacOS so that they are larger and\n\tsimilar to the Windows defaults.\n\t[9c37c180ba8d] <2.5-maint>\n\n\t* build.py:\n\tFixed the build system for MacOS as the development platform.\n\t[3352479980c5] <2.5-maint>\n\n2011-05-13  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lib/README.doc:\n\tUpdated the licensing information in the main documentation.\n\t[d31c561e0b7c] <2.5-maint>\n\n\t* lib/LICENSE.GPL2, lib/LICENSE.GPL3, lib/LICENSE.gpl.short:\n\tRemoved some out of date links from the license information. Updated\n\tthe dates of some copyright notices.\n\t[a84451464396] <2.5-maint>\n\n2011-05-10  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded the optional posix flag to QsciScintilla::findFirst().\n\t[ad6064227d06] <2.5-maint>\n\n2011-04-29  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, qt/qscintilla.pro, qt/qsciscintilla.cpp,\n\tqt/qscistyle.cpp, qt/qscistyle.h, qt/qscistyledtext.cpp,\n\tqt/qscistyledtext.h:\n\tFixed problems with QsciStyle and QsciStyledText when used with more\n\tthan one QsciScintilla instance.\n\t[8bac389fb7ae] <2.5-maint>\n\n2011-04-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciglobal.h:\n\tChanged the handling of QT_BEGIN_NAMESPACE etc. as it isn't defined\n\tin early versions of Qt v4.\n\t[595c8c6cdfd2] <2.5-maint>\n\n2011-04-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.5.1 for changeset c8648c2c0c7f\n\t[298153b3d40e] <2.5-maint>\n\n\t* NEWS:\n\tReleased as v2.5.1.\n\t[c8648c2c0c7f] [2.5.1] <2.5-maint>\n\n2011-04-16  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_de.ts, qt/qscintilla_es.ts:\n\tUpdated translations from Detlev and Jaime.\n\t[9436bea546c9] <2.5-maint>\n\n2011-04-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.qm, qt/qscintilla_de.qm, qt/qscintilla_es.qm,\n\tqt/qscintilla_fr.qm, qt/qscintilla_pt_br.qm, qt/qscintilla_ru.qm:\n\tUpdated the compiled translation files.\n\t[c5d39aca8f51] <2.5-maint>\n\n2011-04-13  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qscilexermatlab.sip, Python/sip/qscilexeroctave.sip,\n\tPython/sip/qscimodcommon.sip:\n\tAdded Python bindings for QsciLexerMatlab abd QsciLexerOctave.\n\t[22d0ed0fab2a] <2.5-maint>\n\n\t* NEWS, qt/qscilexermatlab.cpp, qt/qscilexermatlab.h,\n\tqt/qscilexeroctave.cpp, qt/qscilexeroctave.h, qt/qscintilla.pro,\n\tqt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tAdded QsciLexerMatlab and QsciLexerOctave.\n\t[40d3053334de] <2.5-maint>\n\n2011-04-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Merged the font strategy fix from the trunk.\n\t[d270e1b107d2] <2.5-maint>\n\n\t* NEWS:\n\tUpdated the NEWS file.\n\t[8f32ff4cdd1f] <2.5-maint>\n\n2011-04-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp, qt/qscintilla.pro:\n\tFixed the handling of the font quality setting so that the default\n\tbehavior (particularly on Windows) is the same as earlier versions.\n\t[87ae98d2674b]\n\n2011-03-29  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.5 for changeset 9d94a76f783e\n\t[e4807fd91f6c]\n\n\t* NEWS:\n\tReleased as v2.5.\n\t[9d94a76f783e] [2.5]\n\n2011-03-28  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/configure.py:\n\tAdded support for the protected-is-public hack to configure.py.\n\t[beee52b8e10a]\n\n2011-03-27  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp:\n\tFixed an OS/X build problem.\n\t[ac7f1d3c9abe]\n\n2011-03-26  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded replaceSelectedText() to QsciScintilla.\n\t[3c00a19d6571]\n\n2011-03-25  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, Python/sip/qsciapis.sip,\n\tPython/sip/qscilexer.sip, Python/sip/qscilexercustom.sip,\n\tPython/sip/qscimod4.sip, Python/sip/qsciprinter.sip,\n\tPython/sip/qsciscintilla.sip, Python/sip/qscistyle.sip,\n\tqt/qsciapis.cpp, qt/qsciapis.h, qt/qscilexercustom.cpp,\n\tqt/qscilexercustom.h, qt/qsciscintilla.cpp, qt/qsciscintilla.h,\n\tqt/qscistyle.cpp, qt/qscistyle.h:\n\tWent through the API making sure all optional arguments had\n\tconsistent and meaningful names. Enabled keyword support in the\n\tPython bindings.\n\t[d60fa45e40b7]\n\n2011-03-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_de.qm, qt/qscintilla_de.ts, qt/qscintilla_es.qm,\n\tqt/qscintilla_es.ts:\n\tUpdated German translations from Detlev. Updated Spanish\n\ttranslations from Jaime.\n\t[f64c97749375]\n\n2011-03-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lexers/LexModula.cxx, lexlib/SparseState.h, qt/qscintilla_cs.ts,\n\tqt/qscintilla_de.ts, qt/qscintilla_es.ts, qt/qscintilla_fr.ts,\n\tqt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts,\n\ttest/unit/testSparseState.cxx, vcbuild/SciLexer.dsp:\n\tUpdated the translation files. Updated the repository for the new\n\tand removed Scintilla v2.25 files.\n\t[6eb77ba7c57c]\n\n\t* NEWS, Python/sip/qscilexercpp.sip, Python/sip/qsciscintillabase.sip,\n\tqt/qscilexercpp.cpp, qt/qscilexercpp.h, qt/qscintilla.pro,\n\tqt/qsciscintillabase.h:\n\tAdded support for raw string to the C++ lexer.\n\t[f83112ced877]\n\n\t* NEWS, cocoa/Framework.mk, cocoa/PlatCocoa.mm,\n\tcocoa/ScintillaCocoa.mm, cocoa/ScintillaFramework/ScintillaFramework\n\t.xcodeproj/project.pbxproj, cocoa/ScintillaTest/AppController.mm,\n\tcocoa/ScintillaView.h, cocoa/ScintillaView.mm,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/ScintillaRelated.html, doc/index.html, gtk/PlatGTK.cxx,\n\tgtk/makefile, include/Platform.h, include/SciLexer.h,\n\tinclude/Scintilla.iface, lexers/LexAsm.cxx, lexers/LexBasic.cxx,\n\tlexers/LexCPP.cxx, lexers/LexD.cxx, lexers/LexFortran.cxx,\n\tlexers/LexOthers.cxx, lexlib/CharacterSet.h, lib/README.doc,\n\tmacosx/SciTest/main.cpp, src/AutoComplete.cxx, src/Catalogue.cxx,\n\tsrc/Document.cxx, src/Editor.cxx, src/LexGen.py, test/unit/makefile,\n\tversion.txt, win32/PlatWin.cxx, win32/ScintRes.rc,\n\twin32/scintilla.mak, win32/scintilla_vc6.mak:\n\tMerged Scintilla v2.25.\n\t[e01dec109182]\n\n2011-03-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_es.qm, qt/qscintilla_es.ts:\n\tUpdated Spanish translations from Jaime Seuma.\n\t[b83a3ca4f3e6]\n\n2011-03-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_de.qm, qt/qscintilla_de.ts:\n\tUpdated German translations from Detlev.\n\t[e5729134a47b]\n\n2011-03-11  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the translation source files.\n\t[51e8ee8b1ba9]\n\n\t* NEWS, Python/sip/qscilexercpp.sip, qt/qscilexercpp.cpp,\n\tqt/qscilexercpp.h:\n\tAdded support for the inactive styles of QsciLexerCPP.\n\t[59b566d322af]\n\n\t* qt/qscilexercpp.cpp, qt/qscilexercpp.h:\n\tInlined all existing property getters in QsciLexerCPP.\n\t[1117e5105e5e]\n\n2011-03-10  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed QsciScintilla::setContractedFolds() so that it actually\n\tupdates the display to show the new state.\n\t[5079f59a0103]\n\n\t* NEWS, Python/sip/qscilexerhtml.sip, qt/qscilexerhtml.cpp,\n\tqt/qscilexerhtml.h:\n\tUpdated QsciLexerHTML.\n\t[0707f4bc7855]\n\n\t* NEWS, Python/sip/qscilexerproperties.sip,\n\tqt/qscilexerproperties.cpp, qt/qscilexerproperties.h:\n\tUpdated QsciLexerProperties.\n\t[1dfe5e2d4913]\n\n\t* NEWS, Python/sip/qscilexerpython.sip, Python/sip/qscilexerruby.sip,\n\tPython/sip/qscilexersql.sip, Python/sip/qscilexertcl.sip,\n\tPython/sip/qscilexertex.sip, qt/qscilexerpython.cpp,\n\tqt/qscilexerpython.h, qt/qscilexerruby.h, qt/qscilexersql.h,\n\tqt/qscilexertcl.h, qt/qscilexertex.cpp, qt/qscilexertex.h:\n\tUpdated QsciLexerPython.\n\t[bc96868a1a6f]\n\n\t* NEWS, Python/sip/qscilexerruby.sip, Python/sip/qscilexersql.sip,\n\tPython/sip/qscilexertcl.sip, Python/sip/qscilexertex.sip,\n\tqt/qscilexerruby.cpp, qt/qscilexerruby.h, qt/qscilexersql.h,\n\tqt/qscilexertcl.h, qt/qscilexertex.h:\n\tThe new lexer property setters are no longer virtual slots.\n\t[c3e88383e8d3]\n\n\t* qt/qscilexersql.cpp, qt/qscilexersql.h:\n\tRestored the default behaviour of setFoldCompact() for QsciLexerSQL.\n\t[c74aef0f7eb4]\n\n\t* NEWS, Python/sip/qscilexertcl.sip, qt/qscilexersql.h,\n\tqt/qscilexertcl.cpp, qt/qscilexertcl.h:\n\tUpdated QsciLexerTCL.\n\t[43a150bb40d5]\n\n\t* NEWS, Python/sip/qscilexertex.sip, qt/qscilexertex.cpp,\n\tqt/qscilexertex.h:\n\tUpdated QsciLexerTeX.\n\t[1457935cee44]\n\n\t* qt/qscintilla_cs.qm, qt/qscintilla_de.qm, qt/qscintilla_de.ts,\n\tqt/qscintilla_es.qm, qt/qscintilla_fr.qm, qt/qscintilla_pt_br.qm,\n\tqt/qscintilla_ru.qm:\n\tUpdated German translations from Detlev.\n\t[ad4a4bd4855b]\n\n2011-03-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the .ts translation files.\n\t[8d70033d07e2]\n\n\t* NEWS, Python/sip/qscilexersql.sip, qt/qscilexersql.cpp,\n\tqt/qscilexersql.h:\n\tUpdated QsciLexerSQL.\n\t[8bc79d109c88]\n\n\t* NEWS, Python/sip/qscilexercss.sip, qt/qscilexercss.cpp,\n\tqt/qscilexercss.h:\n\tUpdated QsciLexerCSS.\n\t[f3adcb31b1a9]\n\n\t* NEWS, Python/sip/qscilexerd.sip, qt/qscilexerd.cpp, qt/qscilexerd.h:\n\tUpdated QsciLexerD.\n\t[82d8a6561943]\n\n\t* Python/sip/qscilexerlua.sip, qt/qscilexerlua.cpp, qt/qscilexerlua.h:\n\tUpdated QsciLexerLua.\n\t[103f5881c642]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/qsciscintillabase.h:\n\tAdded support for the QsciScintillaBase::SCN_HOTSPOTRELEASECLICK()\n\tsignal.\n\t[1edd56e105cd]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for SCLEX_MARKDOWN, SCLEX_TXT2TAGS and\n\tSCLEX_A68K.\n\t[de92a613cea7]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qscicommand.cpp,\n\tqt/qsciscintilla.cpp, qt/qsciscintillabase.h:\n\tAdded support for SCMOD_SUPER as the Qt Meta key modifier.\n\t[24e745cddeea]\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tUpdated the QsciScintillaBase::SCN_UPDATEUI() signal. Added low-\n\tlevel support for SC_MOD_LEXERSTATE.\n\t[0a341fcb0545]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for the updated property functions.\n\t[f33d9c271992]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for SCI_GETLEXERLANGUAGE and\n\tSCI_PRIVATELEXERCALL.\n\t[ac69f8c2ef3b]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for the new stick caret options.\n\t[693ac6c68e6f]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for SCI_AUTOCGETCURRENTTEXT.\n\t[2634827cdb4e]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for SC_SEL_THIN.\n\t[4225a944dc14]\n\n\t* qt/qsciscintilla.cpp:\n\tFolding now works again.\n\t[3972053c646e]\n\n2011-03-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for SCI_VERTICALCENTRECARET.\n\t[92d5ecb154d1]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded setContractedFolds() and contractedFolds() to QsciScintilla.\n\t[46eb254c6200]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for SCI_CHANGELEXERSTATE.\n\t[edd899d77aa7]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.h:\n\tAdded low-level support for SCI_CHARPOSITIONFROMPOINT and\n\tSCI_CHARPOSITIONFROMPOINTCLOSE.\n\t[5a000cf4bfba]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded low-level support for multiple selections.\n\t[dedda8cbf413]\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintillabase.h:\n\tAdded SCI_GETTAG.\n\t[775d0058f00e]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded QsciScintilla::setFirstVisibleLine().\n\t[8b662ffe3fb6]\n\n\t* Python/sip/qsciscintillabase.sip, qt/PlatQt.cpp,\n\tqt/qsciscintillabase.h:\n\tAdded low-level support for setting the font quality.\n\t[933e8b01eda6]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded high-level support for line wrap indentation modes.\n\t[1faa3b2fa31e]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded high-level support for extra ascent and descent space. Added\n\thigh-level support for whitespace size, foreground and background.\n\t[537c551a79ef]\n\n\t* Python/sip/qsciscintillabase.sip, qt/PlatQt.cpp,\n\tqt/qsciscintillabase.h:\n\tUpdated the low level support for cursors.\n\t[2ce685a89697]\n\n\t* NEWS, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.h:\n\tUpdated the support for markers and added FullRectangle,\n\tLeftRectangle and Underline to the MarkerSymbol enum.\n\t[4c626f8189bf]\n\n2011-03-06  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/ScintillaQt.h, qt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tRectangular selections are now fully supported. The signatures of\n\ttoMimeData() and fromMimeData() have changed.\n\t[397948f42b2e]\n\n\t* NEWS:\n\tUpdated the NEWS file.\n\t[bc75b98210f2]\n\n\t* .hgignore:\n\tAdded the .hgignore file.\n\t[77312a36220e]\n\n\t* qt/qsciscintilla.cpp:\n\tRemoved the workaround for the broken annotations in Scintilla\n\tv1.78.\n\t[70ab4c4b7c66]\n\n\t* qt/ListBoxQt.cpp:\n\tFixed a regression when displaying an auto-completion list.\n\t[c38d4b97a1ca]\n\n2011-03-04  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ListBoxQt.cpp, qt/PlatQt.cpp, qt/ScintillaQt.cpp,\n\tqt/ScintillaQt.h, qt/qsciscintillabase.cpp:\n\tCompleted the merge of Scintilla v2.24.\n\t[6890939e2da6]\n\n\t* build.py, qt/qscintilla.pro:\n\tMore build system changes.\n\t[3e9deec76c02]\n\n\t* qt/qscintilla.pro, qt/qsciscintilla.cpp:\n\tUpdated the .pro file for the changed files and directory structure\n\tin v2.24.\n\t[274cb7017857]\n\n\t* License.txt, README, bin/empty.txt, cocoa/Framework.mk,\n\tcocoa/InfoBar.h, cocoa/InfoBar.mm, cocoa/InfoBarCommunicator.h,\n\tcocoa/PlatCocoa.h, cocoa/PlatCocoa.mm, cocoa/QuartzTextLayout.h,\n\tcocoa/QuartzTextStyle.h, cocoa/QuartzTextStyleAttribute.h,\n\tcocoa/SciTest.mk, cocoa/ScintillaCallTip.h,\n\tcocoa/ScintillaCallTip.mm, cocoa/ScintillaCocoa.h,\n\tcocoa/ScintillaCocoa.mm, cocoa/ScintillaFramework/Info.plist, cocoa/\n\tScintillaFramework/ScintillaFramework.xcodeproj/project.pbxproj,\n\tcocoa/ScintillaFramework/Scintilla_Prefix.pch,\n\tcocoa/ScintillaListBox.h, cocoa/ScintillaListBox.mm,\n\tcocoa/ScintillaTest/AppController.h,\n\tcocoa/ScintillaTest/AppController.mm,\n\tcocoa/ScintillaTest/English.lproj/MainMenu.xib,\n\tcocoa/ScintillaTest/Info.plist, cocoa/ScintillaTest/Scintilla-\n\tInfo.plist,\n\tcocoa/ScintillaTest/ScintillaTest.xcodeproj/project.pbxproj,\n\tcocoa/ScintillaTest/ScintillaTest_Prefix.pch,\n\tcocoa/ScintillaTest/TestData.sql, cocoa/ScintillaTest/main.m,\n\tcocoa/ScintillaView.h, cocoa/ScintillaView.mm, cocoa/common.mk,\n\tdelbin.bat, delcvs.bat, doc/Design.html, doc/Lexer.txt,\n\tdoc/SciBreak.jpg, doc/SciCoding.html, doc/SciRest.jpg,\n\tdoc/SciTEIco.png, doc/SciWord.jpg, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/ScintillaRelated.html, doc/ScintillaToDo.html,\n\tdoc/ScintillaUsage.html, doc/Steps.html, doc/index.html,\n\tgtk/Converter.h, gtk/PlatGTK.cxx, gtk/ScintillaGTK.cxx,\n\tgtk/deps.mak, gtk/makefile, gtk/scintilla-marshal.c, gtk/scintilla-\n\tmarshal.h, gtk/scintilla-marshal.list, gtk/scintilla.mak,\n\tinclude/Accessor.h, include/Face.py, include/HFacer.py,\n\tinclude/ILexer.h, include/KeyWords.h, include/Platform.h,\n\tinclude/PropSet.h, include/SString.h, include/SciLexer.h,\n\tinclude/Scintilla.h, include/Scintilla.iface,\n\tinclude/ScintillaWidget.h, include/WindowAccessor.h,\n\tlexers/LexA68k.cxx, lexers/LexAPDL.cxx, lexers/LexASY.cxx,\n\tlexers/LexAU3.cxx, lexers/LexAVE.cxx, lexers/LexAbaqus.cxx,\n\tlexers/LexAda.cxx, lexers/LexAsm.cxx, lexers/LexAsn1.cxx,\n\tlexers/LexBaan.cxx, lexers/LexBash.cxx, lexers/LexBasic.cxx,\n\tlexers/LexBullant.cxx, lexers/LexCLW.cxx, lexers/LexCOBOL.cxx,\n\tlexers/LexCPP.cxx, lexers/LexCSS.cxx, lexers/LexCaml.cxx,\n\tlexers/LexCmake.cxx, lexers/LexConf.cxx, lexers/LexCrontab.cxx,\n\tlexers/LexCsound.cxx, lexers/LexD.cxx, lexers/LexEScript.cxx,\n\tlexers/LexEiffel.cxx, lexers/LexErlang.cxx, lexers/LexFlagship.cxx,\n\tlexers/LexForth.cxx, lexers/LexFortran.cxx, lexers/LexGAP.cxx,\n\tlexers/LexGui4Cli.cxx, lexers/LexHTML.cxx, lexers/LexHaskell.cxx,\n\tlexers/LexInno.cxx, lexers/LexKix.cxx, lexers/LexLisp.cxx,\n\tlexers/LexLout.cxx, lexers/LexLua.cxx, lexers/LexMMIXAL.cxx,\n\tlexers/LexMPT.cxx, lexers/LexMSSQL.cxx, lexers/LexMagik.cxx,\n\tlexers/LexMarkdown.cxx, lexers/LexMatlab.cxx,\n\tlexers/LexMetapost.cxx, lexers/LexMySQL.cxx, lexers/LexNimrod.cxx,\n\tlexers/LexNsis.cxx, lexers/LexOpal.cxx, lexers/LexOthers.cxx,\n\tlexers/LexPB.cxx, lexers/LexPLM.cxx, lexers/LexPOV.cxx,\n\tlexers/LexPS.cxx, lexers/LexPascal.cxx, lexers/LexPerl.cxx,\n\tlexers/LexPowerPro.cxx, lexers/LexPowerShell.cxx,\n\tlexers/LexProgress.cxx, lexers/LexPython.cxx, lexers/LexR.cxx,\n\tlexers/LexRebol.cxx, lexers/LexRuby.cxx, lexers/LexSML.cxx,\n\tlexers/LexSQL.cxx, lexers/LexScriptol.cxx, lexers/LexSmalltalk.cxx,\n\tlexers/LexSorcus.cxx, lexers/LexSpecman.cxx, lexers/LexSpice.cxx,\n\tlexers/LexTACL.cxx, lexers/LexTADS3.cxx, lexers/LexTAL.cxx,\n\tlexers/LexTCL.cxx, lexers/LexTeX.cxx, lexers/LexTxt2tags.cxx,\n\tlexers/LexVB.cxx, lexers/LexVHDL.cxx, lexers/LexVerilog.cxx,\n\tlexers/LexYAML.cxx, lexlib/Accessor.cxx, lexlib/Accessor.h,\n\tlexlib/CharacterSet.cxx, lexlib/CharacterSet.h,\n\tlexlib/LexAccessor.h, lexlib/LexerBase.cxx, lexlib/LexerBase.h,\n\tlexlib/LexerModule.cxx, lexlib/LexerModule.h,\n\tlexlib/LexerNoExceptions.cxx, lexlib/LexerNoExceptions.h,\n\tlexlib/LexerSimple.cxx, lexlib/LexerSimple.h, lexlib/OptionSet.h,\n\tlexlib/PropSetSimple.cxx, lexlib/PropSetSimple.h,\n\tlexlib/StyleContext.cxx, lexlib/StyleContext.h, lexlib/WordList.cxx,\n\tlexlib/WordList.h, lib/README.doc, macosx/PlatMacOSX.cxx,\n\tmacosx/SciTest/SciTest.xcode/project.pbxproj,\n\tmacosx/ScintillaMacOSX.cxx, macosx/ScintillaMacOSX.h,\n\tmacosx/deps.mak, macosx/makefile, src/AutoComplete.cxx,\n\tsrc/AutoComplete.h, src/CallTip.cxx, src/CallTip.h,\n\tsrc/Catalogue.cxx, src/Catalogue.h, src/CellBuffer.cxx,\n\tsrc/CellBuffer.h, src/CharClassify.cxx, src/CharClassify.h,\n\tsrc/CharacterSet.h, src/ContractionState.cxx,\n\tsrc/ContractionState.h, src/Decoration.h, src/Document.cxx,\n\tsrc/Document.h, src/DocumentAccessor.cxx, src/DocumentAccessor.h,\n\tsrc/Editor.cxx, src/Editor.h, src/ExternalLexer.cxx,\n\tsrc/ExternalLexer.h, src/FontQuality.h, src/Indicator.cxx,\n\tsrc/Indicator.h, src/KeyMap.cxx, src/KeyMap.h, src/KeyWords.cxx,\n\tsrc/LexAPDL.cxx, src/LexASY.cxx, src/LexAU3.cxx, src/LexAVE.cxx,\n\tsrc/LexAbaqus.cxx, src/LexAda.cxx, src/LexAsm.cxx, src/LexAsn1.cxx,\n\tsrc/LexBaan.cxx, src/LexBash.cxx, src/LexBasic.cxx,\n\tsrc/LexBullant.cxx, src/LexCLW.cxx, src/LexCOBOL.cxx,\n\tsrc/LexCPP.cxx, src/LexCSS.cxx, src/LexCaml.cxx, src/LexCmake.cxx,\n\tsrc/LexConf.cxx, src/LexCrontab.cxx, src/LexCsound.cxx,\n\tsrc/LexD.cxx, src/LexEScript.cxx, src/LexEiffel.cxx,\n\tsrc/LexErlang.cxx, src/LexFlagship.cxx, src/LexForth.cxx,\n\tsrc/LexFortran.cxx, src/LexGAP.cxx, src/LexGen.py,\n\tsrc/LexGui4Cli.cxx, src/LexHTML.cxx, src/LexHaskell.cxx,\n\tsrc/LexInno.cxx, src/LexKix.cxx, src/LexLisp.cxx, src/LexLout.cxx,\n\tsrc/LexLua.cxx, src/LexMMIXAL.cxx, src/LexMPT.cxx, src/LexMSSQL.cxx,\n\tsrc/LexMagik.cxx, src/LexMatlab.cxx, src/LexMetapost.cxx,\n\tsrc/LexMySQL.cxx, src/LexNimrod.cxx, src/LexNsis.cxx,\n\tsrc/LexOpal.cxx, src/LexOthers.cxx, src/LexPB.cxx, src/LexPLM.cxx,\n\tsrc/LexPOV.cxx, src/LexPS.cxx, src/LexPascal.cxx, src/LexPerl.cxx,\n\tsrc/LexPowerPro.cxx, src/LexPowerShell.cxx, src/LexProgress.cxx,\n\tsrc/LexPython.cxx, src/LexR.cxx, src/LexRebol.cxx, src/LexRuby.cxx,\n\tsrc/LexSML.cxx, src/LexSQL.cxx, src/LexScriptol.cxx,\n\tsrc/LexSmalltalk.cxx, src/LexSorcus.cxx, src/LexSpecman.cxx,\n\tsrc/LexSpice.cxx, src/LexTACL.cxx, src/LexTADS3.cxx, src/LexTAL.cxx,\n\tsrc/LexTCL.cxx, src/LexTeX.cxx, src/LexVB.cxx, src/LexVHDL.cxx,\n\tsrc/LexVerilog.cxx, src/LexYAML.cxx, src/LineMarker.cxx,\n\tsrc/LineMarker.h, src/Partitioning.h, src/PerLine.cxx,\n\tsrc/PerLine.h, src/PositionCache.cxx, src/PositionCache.h,\n\tsrc/PropSet.cxx, src/RESearch.cxx, src/RESearch.h,\n\tsrc/RunStyles.cxx, src/SVector.h, src/SciTE.properties,\n\tsrc/ScintillaBase.cxx, src/ScintillaBase.h, src/Selection.cxx,\n\tsrc/Selection.h, src/SplitVector.h, src/Style.cxx, src/Style.h,\n\tsrc/StyleContext.cxx, src/StyleContext.h, src/UniConversion.cxx,\n\tsrc/UniConversion.h, src/ViewStyle.cxx, src/ViewStyle.h,\n\tsrc/WindowAccessor.cxx, src/XPM.cxx, src/XPM.h,\n\ttest/MessageNumbers.py, test/README, test/XiteMenu.py,\n\ttest/XiteWin.py, test/examples/x.asp, test/examples/x.asp.styled,\n\ttest/examples/x.cxx, test/examples/x.cxx.styled, test/examples/x.d,\n\ttest/examples/x.d.styled, test/examples/x.html,\n\ttest/examples/x.html.styled, test/examples/x.php,\n\ttest/examples/x.php.styled, test/examples/x.py,\n\ttest/examples/x.py.styled, test/examples/x.vb,\n\ttest/examples/x.vb.styled, test/lexTests.py,\n\ttest/performanceTests.py, test/simpleTests.py, test/unit/README,\n\ttest/unit/SciTE.properties, test/unit/makefile,\n\ttest/unit/testContractionState.cxx, test/unit/testPartitioning.cxx,\n\ttest/unit/testRunStyles.cxx, test/unit/testSplitVector.cxx,\n\ttest/unit/unitTest.cxx, test/xite.py, vcbuild/SciLexer.dsp,\n\tversion.txt, win32/Margin.cur, win32/PlatWin.cxx,\n\twin32/PlatformRes.h, win32/SciTE.properties, win32/ScintRes.rc,\n\twin32/Scintilla.def, win32/ScintillaWin.cxx, win32/deps.mak,\n\twin32/makefile, win32/scintilla.mak, win32/scintilla_vc6.mak,\n\tzipsrc.bat:\n\tMerged Scintilla v2.24.\n\t[59ca27407fd9]\n\n2011-03-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py, qt/qscintilla.pro:\n\tUpdated the .so version number to 6.0.0.\n\t[8ebe3f1fccd4]\n\n\t* Makefile:\n\tSwitched the build system to Qt v4.7.2.\n\t[47f653394ef0]\n\n\t* .hgtags, lib/README.svn:\n\tMerged the v2.4 maintenance branch.\n\t[d00b7d9115d1]\n\n\t* qsci/api/python/Python-3.2.api:\n\tAdded an API file for Python v3.2.\n\t[8cc94408b710] <2.4-maint>\n\n2011-02-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintillabase.cpp:\n\tOn X11 the control modifier is now used (instead of alt) to trigger\n\ta rectangular selection.\n\t[4bea3b8b8271] <2.4-maint>\n\n2011-02-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscimacro.cpp:\n\tFixed a bug with Qt4 when loading a macro that meant that a macro\n\tmay not have a terminating '\\0'.\n\t[bbec6ef96cd2] <2.4-maint>\n\n2011-02-06  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* lib/LICENSE.commercial.short, lib/LICENSE.gpl.short:\n\tUpdated the copyright notices.\n\t[f386964f3853] <2.4-maint>\n\n\t* Python/sip/qsciscintilla.sip, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tDeprecated setAutoCompletionShowSingle(), added\n\tsetAutoCompletionUseSingle(). Deprecated autoCompletionShowSingle(),\n\tadded autoCompletionUseSingle().\n\t[7dae1a33b74b] <2.4-maint>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tQsciScintilla::setAutoCompletionCaseSensitivity() is no longer\n\tignored if a lexer has been set.\n\t[92d3c5f7b825] <2.4-maint>\n\n\t* qt/qscintilla.pro, qt/qsciscintillabase.cpp:\n\tTranslate Key_Backtab to Shift-Key_Tab before passing to Scintilla.\n\t[fc2d75b26ef8] <2.4-maint>\n\n2011-01-06  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_es.ts:\n\tUpdated Spanish translations from Jaime Seuma.\n\t[8921e85723a1] <2.4-maint>\n\n2010-12-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.h:\n\tFixed a documentation typo.\n\t[1b951cf8838a] <2.4-maint>\n\n2010-12-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.4.6 for changeset 1884d76f35b0\n\t[696037b84e26] <2.4-maint>\n\n\t* NEWS:\n\tReleased as v2.4.6.\n\t[1884d76f35b0] [2.4.6] <2.4-maint>\n\n2010-12-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp:\n\tAuto-completion words from documents are now ignored if they are\n\talready included from APIs.\n\t[db48fbf19e7c] <2.4-maint>\n\n\t* qt/SciClasses.cpp:\n\tMake sure call tips are redrawn afer being clicked on.\n\t[497ad4605ae3] <2.4-maint>\n\n2010-11-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAdded support for indicators to the high-level API. See the NEWS\n\tfile for the details.\n\t[8673b7890874] <2.4-maint>\n\n2010-11-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/configure.py:\n\tAdded the --no-timestamp option to configure.py.\n\t[61d1b5d28e21] <2.4-maint>\n\n\t* qsci/api/python/Python-2.7.api:\n\tAdded the API file for Python v2.7.\n\t[5b2c77e7150a] <2.4-maint>\n\n2010-11-09  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, qt/PlatQt.cpp:\n\tApplied a fix for calculating character widths under OS/X. Switched\n\tthe build system to Qt v4.7.1.\n\t[47a4eff86efa] <2.4-maint>\n\n2010-11-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexercpp.h:\n\tFixed a bug in the documentation of QsciLexerCPP.GlobalClass.\n\t[3cada289b329] <2.4-maint>\n\n2010-10-24  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/SciClasses.h, qt/ScintillaQt.h, qt/qscicommandset.h,\n\tqt/qsciglobal.h, qt/qscilexer.h, qt/qsciprinter.h,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tAdded support for QT_BEGIN_NAMESPACE and QT_END_NAMESPACE.\n\t[a80f0df49f6c] <2.4-maint>\n\n2010-10-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscintilla_de.qm, qt/qscintilla_de.ts:\n\tUpdated German translations from Detlev.\n\t[693d3adf3c3f] <2.4-maint>\n\n2010-10-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/sip/qscilexerproperties.sip,\n\tqt/qscilexerproperties.cpp, qt/qscilexerproperties.h,\n\tqt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tAdded support for the Key style to QsciLexerProperties.\n\t[0b2e86015862] <2.4-maint>\n\n2010-08-31  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.4.5 for changeset f3f3936e5b86\n\t[84bb1b0d0674] <2.4-maint>\n\n\t* NEWS:\n\tReleased as v2.4.5.\n\t[f3f3936e5b86] [2.4.5] <2.4-maint>\n\n2010-08-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* NEWS:\n\tUpdated the NEWS file.\n\t[80afe6b1504a] <2.4-maint>\n\n2010-08-20  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tWith Python v3, the QsciScintillaBase.SendScintilla() overloads that\n\ttake char * arguments now require them to be bytes objects and no\n\tlonger allow them to be str objects.\n\t[afa9ac3c487d] <2.4-maint>\n\n2010-08-14  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tReverted the addition of the /Encoding/ annotations to\n\tSendScintilla() as it is (probably) not the right solution.\n\t[4cb625284e4f] <2.4-maint>\n\n\t* qt/qsciscintilla.cpp:\n\tThe entries in user and auto-completion lists should now support\n\tUTF-8.\n\t[112d71cec57a] <2.4-maint>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tThe QsciScintillaBase.SendScintilla() Python overloads will now\n\taccept unicode strings that can be encoded to UTF-8.\n\t[2f21b97985f2] <2.4-maint>\n\n2010-07-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexerhtml.cpp, qt/qscilexerhtml.h:\n\tImplemented QsciLexerHTML::autoCompletionFillups() to change the\n\tfillups to \"/>\".\n\t[8d9c1aad1349] <2.4-maint>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed a regression, and the original bug, in\n\tQsciScintilla::clearAnnotations().\n\t[fd8746ae2198] <2.4-maint>\n\n\t* qt/qscistyle.cpp:\n\tQsciStyle now auto-allocates style numbers from 63 rather than\n\tSTYLE_MAX because Scintilla only initially creates enough storage\n\tfor that number of styles.\n\t[7c69b0a4ee5b] <2.4-maint>\n\n2010-07-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscilexerverilog.cpp, qt/qscintilla.pro:\n\tFixed a bug in QsciLexerVerilog that meant that the Keyword style\n\twas being completely ignored.\n\t[09e28404476a] <2.4-maint>\n\n2010-07-12  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.4.4 for changeset c61a49005995\n\t[4c98368d9bea] <2.4-maint>\n\n\t* NEWS:\n\tReleased as v2.4.4.\n\t[c61a49005995] [2.4.4] <2.4-maint>\n\n2010-06-08  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, qt/qsciscintillabase.cpp:\n\tPop-lists now get removed when the main widget loses focus.\n\t[169fa07f52ab] <2.4-maint>\n\n2010-06-05  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ScintillaQt.cpp:\n\tChanged SCN_MODIFIED to deal with text being NULL.\n\t[68148fa857ab] <2.4-maint>\n\n2010-06-03  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/ScintillaQt.cpp:\n\tThe SCN_MODIFIED signal now tries to make sure that the text passed\n\tis valid.\n\t[90e3461f410f] <2.4-maint>\n\n2010-04-22  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tQsciScintilla::markerDefine() now allows existing markers to be\n\tredefined if an explicit marker number is given.\n\t[63f1a7a1d8e2] <2.4-maint>\n\n\t* qt/ScintillaQt.cpp, qt/qsciscintilla.cpp, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tFixed the drag and drop behaviour so that a move automatically turns\n\tinto a copy when the mouse leaves the widget.\n\t[4dab09799716] <2.4-maint>\n\n2010-04-21  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/PlatQt.cpp, qt/ScintillaQt.cpp:\n\tFixed build problems against Qt v3.\n\t[71168072ac9b] <2.4-maint>\n\n\t* Python/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tAdded QsciScintillaBase::fromMimeData().\n\t[b86a15672079] <2.4-maint>\n\n\t* Python/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tRenamed QsciScintillaBase::createMimeData() to toMimeData().\n\t[6f5837334dde] <2.4-maint>\n\n2010-04-20  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Python/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tAdded QsciScintillaBase::canInsertFromMimeData().\n\t[bbba2c1799ef] <2.4-maint>\n\n\t* Python/sip/qsciscintillabase.sip, qt/ScintillaQt.cpp,\n\tqt/qscintilla.pro, qt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tAdded QsciScintillaBase::createMimeData().\n\t[b2c3e3a9b43d] <2.4-maint>\n\n2010-03-17  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* .hgtags:\n\tAdded tag 2.4.3 for changeset 786429e0227d\n\t[1931843aec48] <2.4-maint>\n\n\t* NEWS, build.py:\n\tFixed the generation of the change log after tagging a release.\n\tUpdated the NEWS file. Released as v2.4.3.\n\t[786429e0227d] [2.4.3] <2.4-maint>\n\n2010-02-23  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tReverted the setting of the alpha component in\n\tsetMarkerForegroundColor() (at least until SC_MARK_UNDERLINE is\n\tsupported).\n\t[111da2e01c5e] <2.4-maint>\n\n\t* qt/PlatQt.cpp, qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tFixed the very broken support for the alpha component with Qt4.\n\t[b1d73c7f447b] <2.4-maint>\n\n\t* Python/sip/qsciscintilla.sip, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAdded QsciScintilla::clearFolds() to clear all current folds\n\t(typically prior to disabling folding).\n\t[4f4266da1962] <2.4-maint>\n\n2010-02-15  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile:\n\tSwitched the build system to Qt v4.6.2.\n\t[f023013b79e4] <2.4-maint>\n\n2010-02-07  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* qt/qscidocument.cpp:\n\tFixed a bug in the handling of multiple views of a document.\n\t[8b4aa000df1c] <2.4-maint>\n\n2010-01-31  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, build.py:\n\tMinor tidy ups for the internal build system.\n\t[c3a41d195b8a] <2.4-maint>\n\n2010-01-30  Phil Thompson  <phil@riverbankcomputing.com>\n\n\t* Makefile, Python/configure.py, build.py, lib/README.doc,\n\tlib/README.svn, lib/qscintilla.dxy, qt/qsciglobal.h:\n\tChanges to the internal build system required by the migration to\n\tMercurial.\n\t[607e474dfd28] <2.4-maint>\n\n2010-01-29  phil  <phil>\n\n\t* .hgtags:\n\tImport from SVN.\n\t[49d5a0d80211]\n\n2010-01-20  phil  <phil>\n\n\t* Makefile, NEWS:\n\tUpdated the build system to Qt v4.6.1. Released as v2.4.2.\n\t[73732e5bae08] [2.4.2] <2.4-maint>\n\n2010-01-18  phil  <phil>\n\n\t* qt/qscintilla_es.qm, qt/qscintilla_es.ts:\n\tUpdated Spanish translations from Jaime Seuma.\n\t[3b911e69696d] <2.4-maint>\n\n2010-01-15  phil  <phil>\n\n\t* Python/configure.py:\n\tThe Python bindings now check for SIP v4.10.\n\t[8d5f4957a07c] <2.4-maint>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_es.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the .ts files.\n\t[15c647ac0c42] <2.4-maint>\n\n\t* NEWS, build.py:\n\tFixed the build system for Qt v3 and v4 prior to v4.5.\n\t[1b5bea85a3bf] <2.4-maint>\n\n2010-01-14  phil  <phil>\n\n\t* NEWS, lib/LICENSE.commercial.short, lib/LICENSE.gpl.short:\n\tReleased as v2.4.1.\n\t[a04b69746aa6] [2.4.1] <2.4-maint>\n\n2009-12-22  phil  <phil>\n\n\t* lib/gen_python3_api.py, qsci/api/python/Python-3.1.api:\n\tAdded the API file for Python v3.1.\n\t[116c24ab58b2] <2.4-maint>\n\n\t* NEWS, Python/configure.py:\n\tAdded support for automatically generated docstrings.\n\t[3d316b4f222b] <2.4-maint>\n\n2009-12-11  phil  <phil>\n\n\t* Makefile, qt/PlatQt.cpp:\n\tFixed a performance problem when displaying very long lines.\n\t[d3fe67ad2eb5] <2.4-maint>\n\n2009-11-01  phil  <phil>\n\n\t* qt/qsciapis.cpp:\n\tFixed a possible crash in the handling of call tips.\n\t[6248caa24fec] <2.4-maint>\n\n\t* qt/SciClasses.cpp:\n\tApplied the workaround for the autocomplete focus bug under Gnome's\n\twindow manager which (appears) to work with current versions of Qt\n\tacross all platforms.\n\t[f709f1518e70] <2.4-maint>\n\n\t* Makefile, qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tMake sure a lexer is fully detached when a QScintilla instance is\n\tdestroyed.\n\t[db47764231d2] <2.4-maint>\n\n2009-08-19  phil  <phil>\n\n\t* lib/LICENSE.gpl.short, qt/qscintilla_de.qm, qt/qscintilla_de.ts:\n\tUpdated German translations from Detlev.\n\t[458b60ec031e] <2.4-maint>\n\n2009-08-09  phil  <phil>\n\n\t* Python/sip/qscilexerverilog.sip, Python/sip/qscimodcommon.sip,\n\tqt/qscilexerverilog.cpp, qt/qscilexerverilog.h, qt/qscintilla.pro:\n\tAdded the QsciLexerVerilog class.\n\t[86b2aceac88c] <2.4-maint>\n\n\t* Makefile, Python/sip/qscilexerspice.sip,\n\tPython/sip/qscimodcommon.sip, lib/LICENSE.commercial, lib\n\t/OPENSOURCE-NOTICE.TXT, lib/README.doc, qt/qscilexerspice.cpp,\n\tqt/qscilexerspice.h, qt/qscintilla.pro:\n\tAdded the QsciLexerSpice class.\n\t[56532ec00839] <2.4-maint>\n\n2009-06-05  phil  <phil>\n\n\t* NEWS, lib/LICENSE.commercial:\n\tReleased as v2.4.\n\t[612b1bcb8223] [2.4]\n\n2009-06-03  phil  <phil>\n\n\t* NEWS, qt/qscistyledtext.h:\n\tFixed a bug building on Qt v3.\n\t[88ebc67fdff4]\n\n2009-05-30  phil  <phil>\n\n\t* qt/ScintillaQt.cpp:\n\tApplied a fix for copying UTF-8 text to the X clipboard from Lars\n\tReichelt.\n\t[e59fa72c2e2d]\n\n2009-05-27  phil  <phil>\n\n\t* qt/qscilexercustom.h:\n\tFixed a missing forward declaration in qscilexercustom.h.\n\t[0018449ee6aa]\n\n2009-05-25  phil  <phil>\n\n\t* qt/qscilexercustom.cpp:\n\tDon't ask the custom lexer to style zero characters.\n\t[6ae021232f4f]\n\n2009-05-19  phil  <phil>\n\n\t* NEWS, qt/qscintilla.pro, qt/qscintilla_cs.qm, qt/qscintilla_es.qm,\n\tqt/qscintilla_es.ts, qt/qscintilla_fr.qm, qt/qscintilla_pt_br.qm,\n\tqt/qscintilla_ru.qm:\n\tAdded Spanish translations from Jaime Seuma.\n\t[0cdbee8db9af]\n\n\t* qt/qsciscintilla.cpp:\n\tA minor fix for ancient C++ compilers.\n\t[0523c3a0e0aa]\n\n2009-05-18  phil  <phil>\n\n\t* NEWS, Python/sip/qscilexer.sip, Python/sip/qscilexercustom.sip,\n\tPython/sip/qscimodcommon.sip, Python/sip/qsciscintilla.sip,\n\tqt/qscilexer.cpp, qt/qscilexer.h, qt/qscilexercustom.cpp,\n\tqt/qscilexercustom.h, qt/qscintilla.pro, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded QsciScintilla::annotation(). Added QsciLexerCustom (completely\n\tuntested) and supporting changes to QsciLexer.\n\t[382d5b86f600]\n\n2009-05-17  phil  <phil>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.qm, qt/qscintilla_de.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated translations from Detlev.\n\t[0b8c8438e464]\n\n2009-05-09  phil  <phil>\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded support for text margins.\n\t[be9db7d41b50]\n\n\t* qt/PlatQt.cpp, qt/qsciscintilla.cpp, qt/qsciscintilla.h,\n\tqt/qscistyledtext.cpp, qt/qscistyledtext.h:\n\tDebugged the support for annotations. Tidied up the QString to\n\tScintilla string conversions.\n\t[573199665222]\n\n2009-05-08  phil  <phil>\n\n\t* NEWS, Python/sip/qscimodcommon.sip, Python/sip/qsciscintilla.sip,\n\tPython/sip/qscistyle.sip, Python/sip/qscistyledtext.sip,\n\tqt/qscicommand.h, qt/qscimacro.h, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h, qt/qscistyle.cpp,\n\tqt/qscistyle.h, qt/qscistyledtext.cpp, qt/qscistyledtext.h:\n\tImplemented the rest of the annotation API - still needs debugging.\n\t[7f23400d2416]\n\n2009-05-07  phil  <phil>\n\n\t* NEWS, qt/qscintilla.pro, qt/qscistyle.cpp, qt/qscistyle.h:\n\tAdded the QsciStyle class.\n\t[bf8e3e02071e]\n\n2009-05-06  phil  <phil>\n\n\t* qt/qsciscintillabase.cpp:\n\tFixed the key event handling when the text() is empty and the key()\n\tshould be used - only seems to happen with OS/X.\n\t[868a146b019f]\n\n2009-05-03  phil  <phil>\n\n\t* Makefile, NEWS, Python/configure.py, Python/sip/qscicommand.sip,\n\tPython/sip/qscicommandset.sip, Python/sip/qscilexer.sip,\n\tPython/sip/qscilexercpp.sip, Python/sip/qscilexercss.sip,\n\tPython/sip/qscilexerdiff.sip, Python/sip/qscilexerhtml.sip,\n\tPython/sip/qscilexerpascal.sip, Python/sip/qscilexerperl.sip,\n\tPython/sip/qscilexerpython.sip, Python/sip/qscilexerxml.sip,\n\tPython/sip/qsciscintilla.sip, Python/sip/qsciscintillabase.sip,\n\tREADME, UTF-8-demo.txt, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/ScintillaRelated.html, doc/ScintillaToDo.html,\n\tdoc/annotations.png, doc/index.html, doc/styledmargin.png,\n\tgtk/PlatGTK.cxx, gtk/ScintillaGTK.cxx, gtk/deps.mak, gtk/makefile,\n\tgtk/scintilla.mak, include/Face.py, include/HFacer.py,\n\tinclude/SciLexer.h, include/Scintilla.h, include/Scintilla.iface,\n\tinclude/ScintillaWidget.h, lib/LICENSE.commercial,\n\tmacosx/PlatMacOSX.cxx, macosx/makefile, qt/PlatQt.cpp,\n\tqt/ScintillaQt.cpp, qt/qsciapis.cpp, qt/qscidocument.cpp,\n\tqt/qscidocument.h, qt/qscilexer.cpp, qt/qscilexer.h,\n\tqt/qscilexercpp.cpp, qt/qscilexercpp.h, qt/qscilexercss.cpp,\n\tqt/qscilexercss.h, qt/qscilexerdiff.cpp, qt/qscilexerdiff.h,\n\tqt/qscilexerhtml.cpp, qt/qscilexerhtml.h, qt/qscilexerpascal.cpp,\n\tqt/qscilexerpascal.h, qt/qscilexerperl.cpp, qt/qscilexerperl.h,\n\tqt/qscilexerpython.cpp, qt/qscilexerpython.h, qt/qscilexerxml.cpp,\n\tqt/qscilexerxml.h, qt/qscintilla.pro, qt/qscintilla_cs.ts,\n\tqt/qscintilla_de.ts, qt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts,\n\tqt/qscintilla_ru.ts, qt/qsciscintilla.cpp, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.h, src/CellBuffer.cxx, src/CellBuffer.h,\n\tsrc/Document.cxx, src/Document.h, src/Editor.cxx, src/Editor.h,\n\tsrc/ExternalLexer.cxx, src/Indicator.cxx, src/Indicator.h,\n\tsrc/KeyWords.cxx, src/LexAU3.cxx, src/LexAbaqus.cxx, src/LexAsm.cxx,\n\tsrc/LexBash.cxx, src/LexCOBOL.cxx, src/LexCPP.cxx, src/LexCSS.cxx,\n\tsrc/LexD.cxx, src/LexFortran.cxx, src/LexGen.py, src/LexHTML.cxx,\n\tsrc/LexHaskell.cxx, src/LexInno.cxx, src/LexLua.cxx,\n\tsrc/LexMySQL.cxx, src/LexNimrod.cxx, src/LexNsis.cxx,\n\tsrc/LexOthers.cxx, src/LexPascal.cxx, src/LexPerl.cxx,\n\tsrc/LexPowerPro.cxx, src/LexProgress.cxx, src/LexPython.cxx,\n\tsrc/LexRuby.cxx, src/LexSML.cxx, src/LexSQL.cxx, src/LexSorcus.cxx,\n\tsrc/LexTACL.cxx, src/LexTADS3.cxx, src/LexTAL.cxx, src/LexTeX.cxx,\n\tsrc/LexVerilog.cxx, src/LexYAML.cxx, src/PerLine.cxx, src/PerLine.h,\n\tsrc/PositionCache.cxx, src/RESearch.cxx, src/RESearch.h,\n\tsrc/RunStyles.h, src/SciTE.properties, src/ScintillaBase.cxx,\n\tsrc/SplitVector.h, src/UniConversion.cxx, src/ViewStyle.cxx,\n\tsrc/ViewStyle.h, vcbuild/SciLexer.dsp, version.txt,\n\twin32/PlatWin.cxx, win32/ScintRes.rc, win32/ScintillaWin.cxx,\n\twin32/makefile, win32/scintilla.mak, win32/scintilla_vc6.mak:\n\tMerged the v2.3 branch onto the trunk.\n\t[1bb3d2b01123]\n\n2008-09-20  phil  <phil>\n\n\t* Makefile, NEWS, lib/README.doc:\n\tReleased as v2.3.\n\t[8fd73a9a9d66] [2.3]\n\n2008-09-17  phil  <phil>\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded QsciScintilla::apiContext() for further open up the auto-\n\tcompletion and call tips support.\n\t[a6291ea6dd37]\n\n2008-09-16  phil  <phil>\n\n\t* Python/configure.py, lib/gen_python_api.py,\n\tqsci/api/python/Python-2.6.api, qt/qsciapis.h:\n\tAdded the API file for Python v2.6rc1. Fixed a typo in the help for\n\tthe Python bindings configure.py.\n\t[ac10be3cc7fb]\n\n2008-09-03  phil  <phil>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_fr.ts,\n\tqt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the i18n .ts files.\n\t[b73beac06e0f]\n\n2008-09-01  phil  <phil>\n\n\t* lib/README.doc:\n\tUpdated the Windows installation notes to cover the need to manually\n\tinstall the DLL when using Qt3.\n\t[17019ebfab36]\n\n\t* lib/README.doc, qt/qsciscintilla.cpp:\n\tFixed a regression in the highlighting of call tip arguments.\n\tUpdated the Windows installation notes to say that any header files\n\tinstalled from a previous build should first be removed.\n\t[cb3f27b93323]\n\n2008-08-31  phil  <phil>\n\n\t* NEWS, Python/configure.py, Python/sip/qsciabstractapis.sip,\n\tPython/sip/qsciapis.sip, Python/sip/qscilexer.sip,\n\tPython/sip/qscimodcommon.sip, Python/sip/qsciscintillabase.sip,\n\tqt/qsciabstractapis.cpp, qt/qsciabstractapis.h, qt/qsciapis.cpp,\n\tqt/qsciapis.h, qt/qscilexer.cpp, qt/qscilexer.h, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAdded the QsciAbstractAPIs class to allow applications to provide\n\ttheir own implementation of APIs.\n\t[eb5a8a602e5d]\n\n\t* Makefile, Python/configure.py, Python/sip/qscilexerfortran.sip,\n\tPython/sip/qscilexerfortran77.sip, Python/sip/qscilexerpascal.sip,\n\tPython/sip/qscilexerpostscript.sip, Python/sip/qscilexertcl.sip,\n\tPython/sip/qscilexerxml.sip, Python/sip/qscilexeryaml.sip,\n\tPython/sip/qscimodcommon.sip, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase.sip, build.py, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/ScintillaRelated.html, doc/index.html, gtk/PlatGTK.cxx,\n\tgtk/ScintillaGTK.cxx, gtk/makefile, gtk/scintilla.mak,\n\tinclude/Platform.h, include/SciLexer.h, include/Scintilla.h,\n\tinclude/Scintilla.iface, lib/LICENSE.commercial, lib/README.doc,\n\tlib/qscintilla.dxy, macosx/ExtInput.cxx, macosx/ExtInput.h,\n\tmacosx/PlatMacOSX.cxx, macosx/PlatMacOSX.h,\n\tmacosx/QuartzTextLayout.h, macosx/QuartzTextStyle.h,\n\tmacosx/QuartzTextStyleAttribute.h, macosx/ScintillaMacOSX.cxx,\n\tmacosx/ScintillaMacOSX.h, macosx/TView.cxx, macosx/makefile,\n\tqt/ListBoxQt.cpp, qt/ListBoxQt.h, qt/qscilexerfortran.cpp,\n\tqt/qscilexerfortran.h, qt/qscilexerfortran77.cpp,\n\tqt/qscilexerfortran77.h, qt/qscilexerhtml.cpp, qt/qscilexerlua.cpp,\n\tqt/qscilexerlua.h, qt/qscilexerpascal.cpp, qt/qscilexerpascal.h,\n\tqt/qscilexerperl.cpp, qt/qscilexerperl.h,\n\tqt/qscilexerpostscript.cpp, qt/qscilexerpostscript.h,\n\tqt/qscilexertcl.cpp, qt/qscilexertcl.h, qt/qscilexerxml.cpp,\n\tqt/qscilexerxml.h, qt/qscilexeryaml.cpp, qt/qscilexeryaml.h,\n\tqt/qscimacro.cpp, qt/qscimacro.h, qt/qscintilla.pro,\n\tqt/qscintilla_de.qm, qt/qscintilla_de.ts, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h, src/CellBuffer.cxx,\n\tsrc/Editor.cxx, src/Editor.h, src/KeyWords.cxx, src/LexCPP.cxx,\n\tsrc/LexGen.py, src/LexMagik.cxx, src/LexMatlab.cxx, src/LexPerl.cxx,\n\tsrc/LexPowerShell.cxx, src/LineMarker.cxx, src/RunStyles.cxx,\n\tsrc/RunStyles.h, vcbuild/SciLexer.dsp, version.txt,\n\twin32/PlatWin.cxx, win32/ScintRes.rc, win32/ScintillaWin.cxx,\n\twin32/makefile, win32/scintilla.mak, win32/scintilla_vc6.mak:\n\tMerged the v2.2 maintenance branch.\n\t[cd784c60bcc7]\n\n2008-02-27  phil  <phil>\n\n\t* NEWS, build.py, lib/GPL_EXCEPTION.TXT, lib/LICENSE.GPL2,\n\tlib/LICENSE.GPL3, lib/LICENSE.commercial,\n\tlib/LICENSE.commercial.short, lib/LICENSE.gpl,\n\tlib/LICENSE.gpl.short, lib/OPENSOURCE-NOTICE.TXT:\n\tUpdated the licenses to be in line with the the current Qt licenses,\n\tincluding GPL v3. Released as v2.2.\n\t[a039ca791129] [2.2]\n\n2008-02-23  phil  <phil>\n\n\t* Makefile, qt/PlatQt.cpp:\n\tSwitched to Qt v4.3.4. Further tweaks for Windows64 support.\n\t[3ae9686f38e6]\n\n2008-02-22  phil  <phil>\n\n\t* Makefile, NEWS, Python/sip/qsciscintillabase.sip, qt/PlatQt.cpp,\n\tqt/ScintillaQt.cpp, qt/qscidocument.cpp, qt/qscimacro.cpp,\n\tqt/qscintilla.pro, qt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tSeveral fixes for Windows64 support based on a patch from Randall\n\tFrank.\n\t[2c753ee01c42]\n\n2008-02-09  phil  <phil>\n\n\t* Python/configure.py, lib/README.doc, qt/qscintilla.pro:\n\tIt's no longer necessary to set DYLD_LIBRARY_PATH when using the\n\tPython bindings.\n\t[d1098424aed1]\n\n2008-02-03  phil  <phil>\n\n\t* Python/sip/qscilexerruby.sip:\n\tAdded the missing QsciLexerRuby.Error to the Python bindings.\n\t[0b4f06a30251]\n\n2008-01-20  phil  <phil>\n\n\t* designer-Qt4/qscintillaplugin.cpp, designer-Qt4/qscintillaplugin.h:\n\tFixed a problem with the Qt4 Designer plugin on Leopard.\n\t[5450a1bc62df]\n\n2008-01-11  phil  <phil>\n\n\t* qt/SciClasses.cpp, qt/qsciscintillabase.cpp:\n\tHopefully fixed shortcuts and accelerators when the autocompletion\n\tlist is displayed.\n\t[8304a1f4e36b]\n\n2008-01-06  phil  <phil>\n\n\t* qt/SciClasses.cpp:\n\tHopefully fixed a bug stopping normal typing when the autocompletion\n\tlist is being displayed.\n\t[2db0cc8fa158]\n\n2008-01-03  phil  <phil>\n\n\t* lib/LICENSE.commercial.short, lib/LICENSE.gpl,\n\tlib/LICENSE.gpl.short, lib/README.doc, qt/qsciscintillabase.cpp:\n\tFixed a Qt3 compilation bug. Updated the copyright notices.\n\t[cf238f41fb54]\n\n2007-12-30  phil  <phil>\n\n\t* qt/SciClasses.cpp, qt/SciClasses.h, qt/qsciscintillabase.cpp:\n\tHopefully fixed the problems with the auto-completion popup on all\n\tplatforms (not tested on Mac).\n\t[585aa7e4e59f]\n\n2007-12-29  phil  <phil>\n\n\t* qt/SciClasses.cpp:\n\tRemove the use of the internal Tooltip widget flag so that the X11\n\tauto-completion list now has the same problems as the Windows\n\tversion. (Prior to fixing the problem properly.)\n\t[93d584d099db]\n\n2007-12-23  phil  <phil>\n\n\t* qt/ScintillaQt.cpp:\n\tFixed DND problems with Qt4.\n\t[23f8c1a7c4c7]\n\n\t* qt/qsciscintilla.cpp:\n\tFix from Detlev for an infinite loop caused by calling\n\tgetCursorPosition() when Scintilla reports a position past the end\n\tof the text.\n\t[dd99ade93fa6]\n\n2007-12-05  phil  <phil>\n\n\t* qt/qscilexerperl.cpp, qt/qscintilla_cs.ts, qt/qscintilla_de.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tFixed a silly typo in the updated Perl lexer.\n\t[0e290eb71572]\n\n\t* qt/qscintilla_de.qm:\n\tUpdated German translations from Detlev.\n\t[e820d3c167f5]\n\n\t* Makefile:\n\tSwitched the internal build system to Qt v4.3.3.\n\t[df2d877e2422]\n\n2007-12-04  phil  <phil>\n\n\t* qt/qscintilla_cs.ts, qt/qscintilla_de.ts, qt/qscintilla_fr.ts,\n\tqt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the translation source files.\n\t[1fb11f16d750]\n\n\t* Python/sip/qscilexerperl.sip, Python/sip/qsciscintillabase.sip,\n\tdoc/ScintillaDoc.html, doc/ScintillaDownload.html,\n\tdoc/ScintillaHistory.html, doc/ScintillaRelated.html,\n\tdoc/index.html, gtk/PlatGTK.cxx, gtk/ScintillaGTK.cxx, gtk/makefile,\n\tgtk/scintilla.mak, include/Platform.h, include/PropSet.h,\n\tinclude/SciLexer.h, include/Scintilla.h, include/Scintilla.iface,\n\tlib/README.svn, macosx/PlatMacOSX.cxx, macosx/ScintillaMacOSX.h,\n\tmacosx/makefile, qt/PlatQt.cpp, qt/qscilexer.cpp, qt/qscilexer.h,\n\tqt/qscilexerperl.cpp, qt/qscilexerperl.h, qt/qscilexerpython.cpp,\n\tqt/qscilexerpython.h, qt/qscintilla.pro, qt/qsciscintilla.cpp,\n\tqt/qsciscintillabase.h, src/CellBuffer.cxx, src/CellBuffer.h,\n\tsrc/ContractionState.cxx, src/ContractionState.h, src/Document.cxx,\n\tsrc/Document.h, src/DocumentAccessor.cxx, src/Editor.cxx,\n\tsrc/Editor.h, src/KeyWords.cxx, src/LexAPDL.cxx, src/LexASY.cxx,\n\tsrc/LexAU3.cxx, src/LexAbaqus.cxx, src/LexBash.cxx, src/LexCPP.cxx,\n\tsrc/LexGen.py, src/LexHTML.cxx, src/LexHaskell.cxx,\n\tsrc/LexMetapost.cxx, src/LexOthers.cxx, src/LexPerl.cxx,\n\tsrc/LexPython.cxx, src/LexR.cxx, src/LexSQL.cxx, src/LexTeX.cxx,\n\tsrc/LexYAML.cxx, src/Partitioning.h, src/PositionCache.cxx,\n\tsrc/PositionCache.h, src/PropSet.cxx, src/RunStyles.cxx,\n\tsrc/RunStyles.h, src/ScintillaBase.cxx, src/SplitVector.h,\n\tsrc/ViewStyle.cxx, src/ViewStyle.h, vcbuild/SciLexer.dsp,\n\tversion.txt, win32/PlatWin.cxx, win32/ScintRes.rc,\n\twin32/ScintillaWin.cxx, win32/makefile, win32/scintilla.mak,\n\twin32/scintilla_vc6.mak:\n\tMerged Scintilla v1.75.\n\t[8009a4d7275a]\n\n2007-11-17  phil  <phil>\n\n\t* qt/SciClasses.cpp, qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tBug fixes for selectAll() and getCursorPosition() from Baz Walter.\n\t[80eecca239b4]\n\n2007-10-24  phil  <phil>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed folding for HTML.\n\t[bb6fb6065e30]\n\n2007-10-14  phil  <phil>\n\n\t* build.py, lib/GPL_EXCEPTION.TXT, lib/GPL_EXCEPTION_ADDENDUM.TXT,\n\tlib/LICENSE.gpl, lib/OPENSOURCE-NOTICE.TXT, qt/qscicommandset.cpp:\n\tControl characters that are not bound to commands (or shortcuts) now\n\tdefault to doing nothing (rather than inserting the character into\n\tthe text). Aligned the GPL license with Trolltech's exceptions.\n\t[148432c68762]\n\n2007-10-12  phil  <phil>\n\n\t* src/LexHTML.cxx:\n\tFixed the Scintilla HTML lexer's handling of characters >= 0x80.\n\t[c4e271ce8e96]\n\n2007-10-05  phil  <phil>\n\n\t* qt/qsciscintillabase.cpp:\n\tUsed NoSystemBackground rather than OpaquePaintEvent to eliminate\n\tflicker.\n\t[01a22c66304d]\n\n2007-10-04  phil  <phil>\n\n\t* Makefile, qt/qsciscintillabase.cpp:\n\tFixed a flashing effect visible with a non-standard background.\n\tSwitched to Qt v4.3.2.\n\t[781c58fcba96]\n\n2007-09-23  phil  <phil>\n\n\t* qt/qsciapis.h, qt/qscicommand.h, qt/qscicommandset.h,\n\tqt/qscidocument.h, qt/qsciglobal.h, qt/qscilexer.h,\n\tqt/qscilexerbash.h, qt/qscilexerbatch.h, qt/qscilexercmake.h,\n\tqt/qscilexercpp.h, qt/qscilexercsharp.h, qt/qscilexercss.h,\n\tqt/qscilexerd.h, qt/qscilexerdiff.h, qt/qscilexerhtml.h,\n\tqt/qscilexeridl.h, qt/qscilexerjava.h, qt/qscilexerjavascript.h,\n\tqt/qscilexerlua.h, qt/qscilexermakefile.h, qt/qscilexerperl.h,\n\tqt/qscilexerpov.h, qt/qscilexerproperties.h, qt/qscilexerpython.h,\n\tqt/qscilexerruby.h, qt/qscilexersql.h, qt/qscilexertex.h,\n\tqt/qscilexervhdl.h, qt/qscimacro.h, qt/qsciprinter.h,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tMade the recent portabilty changes Mac specific as AIX has a problem\n\twith them.\n\t[0de605d4079f]\n\n2007-09-16  phil  <phil>\n\n\t* qt/qscilexer.cpp:\n\tA lexer's default colour, paper and font are now written to and read\n\tfrom the settings.\n\t[45277fc76ace]\n\n2007-09-15  phil  <phil>\n\n\t* lib/README.doc, qt/qsciapis.h, qt/qscicommand.h,\n\tqt/qscicommandset.h, qt/qscidocument.h, qt/qsciglobal.h,\n\tqt/qscilexer.h, qt/qscilexerbash.h, qt/qscilexerbatch.h,\n\tqt/qscilexercmake.h, qt/qscilexercpp.h, qt/qscilexercsharp.h,\n\tqt/qscilexercss.h, qt/qscilexerd.h, qt/qscilexerdiff.h,\n\tqt/qscilexerhtml.h, qt/qscilexeridl.h, qt/qscilexerjava.h,\n\tqt/qscilexerjavascript.h, qt/qscilexerlua.h, qt/qscilexermakefile.h,\n\tqt/qscilexerperl.h, qt/qscilexerpov.h, qt/qscilexerproperties.h,\n\tqt/qscilexerpython.h, qt/qscilexerruby.h, qt/qscilexersql.h,\n\tqt/qscilexertex.h, qt/qscilexervhdl.h, qt/qscimacro.h,\n\tqt/qsciprinter.h, qt/qsciscintilla.h, qt/qsciscintillabase.h:\n\tFixed the MacOS build problems when using the binary installer\n\tversion of Qt.\n\t[e059a923a447]\n\n\t* lib/LICENSE.commercial.short, qt/PlatQt.cpp:\n\tAdded the missing WaitMouseMoved() implementation on MacOS.\n\t[78d1c8fc37c0]\n\n2007-09-10  phil  <phil>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tQsciScintilla::setFont() now calls QWidget::setFont() so that font()\n\treturns the expected value.\n\t[fd4f577c60ea]\n\n2007-09-02  phil  <phil>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed problems which the font size of STYLE_DEFAULT not being\n\tupdated when the font of style 0 was changed. Hopefully this fixes\n\tthe problems with edge columns and indentation guides.\n\t[ddeccb6f64a0]\n\n2007-08-12  phil  <phil>\n\n\t* Makefile, lib/LICENSE.commercial.short, lib/LICENSE.gpl.short,\n\tqt/qscintilla.pro:\n\tApplied .pro file fix from Dirk Mueller to add a proper install\n\trule.\n\t[a3a2e49f1042]\n\n2007-07-22  phil  <phil>\n\n\t* qt/qscilexer.cpp:\n\tMade sure that the backgound colour of areas of the widget with no\n\ttext is updated when QsciLexer.setDefaultPaper() is called.\n\t[065558d2430b]\n\n2007-07-09  phil  <phil>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tExplicitly set the style for STYLE_DEFAULT when setting a lexer.\n\t[a95fc3357771]\n\n2007-06-30  phil  <phil>\n\n\t* Python/sip/qsciscintillabase.sip, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/ScintillaRelated.html, doc/index.html, gtk/PlatGTK.cxx,\n\tgtk/ScintillaGTK.cxx, gtk/deps.mak, gtk/makefile, gtk/scintilla.mak,\n\tinclude/Accessor.h, include/HFacer.py, include/KeyWords.h,\n\tinclude/Platform.h, include/PropSet.h, include/SString.h,\n\tinclude/SciLexer.h, include/Scintilla.h, include/Scintilla.iface,\n\tinclude/WindowAccessor.h, macosx/PlatMacOSX.cxx,\n\tmacosx/PlatMacOSX.h, macosx/QuartzTextLayout.h,\n\tmacosx/QuartzTextStyle.h, macosx/QuartzTextStyleAttribute.h,\n\tmacosx/SciTest/English.lproj/InfoPlist.strings,\n\tmacosx/SciTest/English.lproj/main.nib/classes.nib,\n\tmacosx/SciTest/English.lproj/main.nib/info.nib,\n\tmacosx/SciTest/English.lproj/main.nib/objects.xib,\n\tmacosx/SciTest/Info.plist,\n\tmacosx/SciTest/SciTest.xcode/project.pbxproj,\n\tmacosx/SciTest/SciTest_Prefix.pch, macosx/SciTest/main.cpp,\n\tmacosx/SciTest/version.plist, macosx/ScintillaCallTip.cxx,\n\tmacosx/ScintillaCallTip.h, macosx/ScintillaListBox.cxx,\n\tmacosx/ScintillaListBox.h, macosx/ScintillaMacOSX.cxx,\n\tmacosx/ScintillaMacOSX.h, macosx/TCarbonEvent.cxx,\n\tmacosx/TCarbonEvent.h, macosx/TRect.h, macosx/TView.cxx,\n\tmacosx/TView.h, macosx/deps.mak, macosx/makefile,\n\tqt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qscintilla.pro,\n\tqt/qsciscintillabase.h, src/AutoComplete.cxx, src/AutoComplete.h,\n\tsrc/CallTip.cxx, src/CallTip.h, src/CellBuffer.cxx,\n\tsrc/CellBuffer.h, src/CharacterSet.h, src/ContractionState.cxx,\n\tsrc/ContractionState.h, src/Decoration.cxx, src/Decoration.h,\n\tsrc/Document.cxx, src/Document.h, src/DocumentAccessor.cxx,\n\tsrc/DocumentAccessor.h, src/Editor.cxx, src/Editor.h,\n\tsrc/ExternalLexer.cxx, src/ExternalLexer.h, src/Indicator.cxx,\n\tsrc/Indicator.h, src/KeyMap.cxx, src/KeyMap.h, src/KeyWords.cxx,\n\tsrc/LexAPDL.cxx, src/LexAU3.cxx, src/LexAVE.cxx, src/LexAda.cxx,\n\tsrc/LexAsm.cxx, src/LexAsn1.cxx, src/LexBaan.cxx, src/LexBash.cxx,\n\tsrc/LexBasic.cxx, src/LexBullant.cxx, src/LexCLW.cxx,\n\tsrc/LexCPP.cxx, src/LexCSS.cxx, src/LexCaml.cxx, src/LexCmake.cxx,\n\tsrc/LexConf.cxx, src/LexCrontab.cxx, src/LexCsound.cxx,\n\tsrc/LexD.cxx, src/LexEScript.cxx, src/LexEiffel.cxx,\n\tsrc/LexErlang.cxx, src/LexFlagship.cxx, src/LexForth.cxx,\n\tsrc/LexFortran.cxx, src/LexGAP.cxx, src/LexGen.py,\n\tsrc/LexGui4Cli.cxx, src/LexHTML.cxx, src/LexHaskell.cxx,\n\tsrc/LexInno.cxx, src/LexKix.cxx, src/LexLisp.cxx, src/LexLout.cxx,\n\tsrc/LexLua.cxx, src/LexMMIXAL.cxx, src/LexMPT.cxx, src/LexMSSQL.cxx,\n\tsrc/LexMatlab.cxx, src/LexMetapost.cxx, src/LexNsis.cxx,\n\tsrc/LexOpal.cxx, src/LexOthers.cxx, src/LexPB.cxx, src/LexPLM.cxx,\n\tsrc/LexPOV.cxx, src/LexPS.cxx, src/LexPascal.cxx, src/LexPerl.cxx,\n\tsrc/LexProgress.cxx, src/LexPython.cxx, src/LexRebol.cxx,\n\tsrc/LexRuby.cxx, src/LexSQL.cxx, src/LexScriptol.cxx,\n\tsrc/LexSmalltalk.cxx, src/LexSpecman.cxx, src/LexSpice.cxx,\n\tsrc/LexTADS3.cxx, src/LexTCL.cxx, src/LexTeX.cxx, src/LexVB.cxx,\n\tsrc/LexVHDL.cxx, src/LexVerilog.cxx, src/LexYAML.cxx,\n\tsrc/LineMarker.cxx, src/LineMarker.h, src/Partitioning.h,\n\tsrc/PositionCache.cxx, src/PositionCache.h, src/PropSet.cxx,\n\tsrc/RESearch.cxx, src/RESearch.h, src/RunStyles.cxx,\n\tsrc/RunStyles.h, src/SVector.h, src/ScintillaBase.cxx,\n\tsrc/ScintillaBase.h, src/SplitVector.h, src/Style.cxx, src/Style.h,\n\tsrc/StyleContext.cxx, src/StyleContext.h, src/UniConversion.cxx,\n\tsrc/UniConversion.h, src/ViewStyle.cxx, src/ViewStyle.h,\n\tsrc/WindowAccessor.cxx, src/XPM.cxx, src/XPM.h,\n\tvcbuild/SciLexer.dsp, version.txt, win32/PlatWin.cxx,\n\twin32/ScintRes.rc, win32/ScintillaWin.cxx, win32/deps.mak,\n\twin32/makefile, win32/scintilla.mak, win32/scintilla_vc6.mak,\n\tzipsrc.bat:\n\tMerged Scintilla v1.74.\n\t[04dee9c2424f]\n\n\t* Python/sip/qscilexerpython.sip, build.py, qt/qscilexer.cpp,\n\tqt/qscilexerbash.cpp, qt/qscilexerpython.cpp, qt/qscilexerpython.h,\n\tqt/qscintilla.pro:\n\tFixed comment folding in the Bash lexer. A style is properly\n\trestored when read from QSettings. Removed ./Qsci from the qmake\n\tINCLUDEPATH. Removed the Scintilla version number from generated\n\tfilenames. Used fully qualified enum names in the Python lexer so\n\tthat the QMetaObject is correct.\n\t[6b27a5b211e0]\n\n2007-06-01  phil  <phil>\n\n\t* NEWS:\n\tReleased as v2.1.\n\t[9976edafc5c1] [2.1]\n\n2007-05-30  phil  <phil>\n\n\t* Makefile:\n\tSwitched the internal build system to Qt v4.3.0.\n\t[49284aa376ef]\n\n\t* NEWS, Python/configure.py, Python/sip/qscilexer.sip,\n\tPython/sip/qscilexerbash.sip, Python/sip/qscilexerbatch.sip,\n\tPython/sip/qscilexercmake.sip, Python/sip/qscilexercpp.sip,\n\tPython/sip/qscilexercsharp.sip, Python/sip/qscilexercss.sip,\n\tPython/sip/qscilexerd.sip, Python/sip/qscilexerdiff.sip,\n\tPython/sip/qscilexerhtml.sip, Python/sip/qscilexeridl.sip,\n\tPython/sip/qscilexerjavascript.sip, Python/sip/qscilexerlua.sip,\n\tPython/sip/qscilexermakefile.sip, Python/sip/qscilexerperl.sip,\n\tPython/sip/qscilexerpov.sip, Python/sip/qscilexerproperties.sip,\n\tPython/sip/qscilexerpython.sip, Python/sip/qscilexerruby.sip,\n\tPython/sip/qscilexersql.sip, Python/sip/qscilexertex.sip,\n\tPython/sip/qscilexervhdl.sip, Python/sip/qscimodcommon.sip,\n\tbuild.py, qt/qscilexer.cpp, qt/qscilexer.h, qt/qscilexerbash.cpp,\n\tqt/qscilexerbash.h, qt/qscilexerbatch.cpp, qt/qscilexerbatch.h,\n\tqt/qscilexercmake.cpp, qt/qscilexercmake.h, qt/qscilexercpp.cpp,\n\tqt/qscilexercpp.h, qt/qscilexercsharp.cpp, qt/qscilexercsharp.h,\n\tqt/qscilexercss.cpp, qt/qscilexercss.h, qt/qscilexerd.cpp,\n\tqt/qscilexerd.h, qt/qscilexerdiff.cpp, qt/qscilexerdiff.h,\n\tqt/qscilexerhtml.cpp, qt/qscilexerhtml.h, qt/qscilexeridl.cpp,\n\tqt/qscilexeridl.h, qt/qscilexerjavascript.cpp,\n\tqt/qscilexerjavascript.h, qt/qscilexerlua.cpp, qt/qscilexerlua.h,\n\tqt/qscilexermakefile.cpp, qt/qscilexermakefile.h,\n\tqt/qscilexerperl.cpp, qt/qscilexerperl.h, qt/qscilexerpov.cpp,\n\tqt/qscilexerpov.h, qt/qscilexerproperties.cpp,\n\tqt/qscilexerproperties.h, qt/qscilexerpython.cpp,\n\tqt/qscilexerpython.h, qt/qscilexerruby.cpp, qt/qscilexerruby.h,\n\tqt/qscilexersql.cpp, qt/qscilexersql.h, qt/qscilexertex.cpp,\n\tqt/qscilexertex.h, qt/qscilexervhdl.cpp, qt/qscilexervhdl.h,\n\tqt/qscintilla.pro:\n\tLexers now remember their style settings. A lexer no longer has to\n\tbe the current lexer when changing a style's color, end-of-line\n\tfill, font or paper. The color(), eolFill(), font() and paper()\n\tmethods of QsciLexer now return the current values for a style\n\trather than the default values. The setDefaultColor(),\n\tsetDefaultFont() and setDefaultPaper() methods of QsciLexer are no\n\tlonger slots and no longer virtual. The defaultColor(),\n\tdefaultFont() and defaultPaper() methods of QsciLexer are no longer\n\tvirtual. The color(), eolFill(), font() and paper() methods of all\n\tQsciLexer derived classes (except for QsciLexer itself) have been\n\trenamed defaultColor(), defaultEolFill(), defaultFont() and\n\tdefaultPaper() respectively.\n\t[38aeee2a5a36]\n\n2007-05-28  phil  <phil>\n\n\t* qt/qsciscintilla.cpp:\n\tSet the number of style bits after we've set the lexer.\n\t[84cda9af5b00]\n\n\t* Python/configure.py:\n\tFixed the handling of the %Timeline in the Python bindings.\n\t[4b3146d1a236]\n\n2007-05-27  phil  <phil>\n\n\t* Python/sip/qsciscintillabase.sip:\n\tUpdated the sub-class convertor code in the Python bindings for the\n\tCmake and VHDL lexers.\n\t[6ab6570728a2]\n\n2007-05-26  phil  <phil>\n\n\t* NEWS:\n\tUpdated the NEWS file. Released as v2.0.\n\t[eec9914d8211] [2.0]\n\n2007-05-19  phil  <phil>\n\n\t* Python/sip/qsciscintillabase.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tAdded basic input method support for Qt4 so that accented characters\n\tnow work. (Although there is still a font problem - at least a text\n\tcolour problem.)\n\t[6b41f3694999]\n\n\t* qt/qsciapis.cpp, qt/qsciapis.h, qt/qsciscintillabase.cpp:\n\tFixed building against Qt v3.\n\t[9e9ba05de0fb]\n\n2007-05-17  phil  <phil>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed an autocompletion problem where an empty list was being\n\tdisplayed.\n\t[c7214274017c]\n\n2007-05-16  phil  <phil>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed a bug where autocompleting from the document was looking for\n\tpreceeding non-word characters as well.\n\t[3ee6fd746d49]\n\n\t* qt/qsciscintilla.cpp:\n\tFixed silly typo that broke call tips.\n\t[05213a8933c2]\n\n2007-05-09  phil  <phil>\n\n\t* qt/qsciscintilla.cpp:\n\tFiex an autocompletion bug for words that only had preceding\n\twhitespace.\n\t[a8f3339e02c6]\n\n\t* Python/configure.py, lib/gen_python_api.py,\n\tqsci/api/python/Python-2.4.api, qsci/api/python/Python-2.5.api,\n\tqt/qsciapis.cpp, qt/qsciapis.h:\n\tCall tips shouldn't now get confused with commas in the text after\n\tthe argument list. The included API files for Python should now be\n\tcomplete and properly exclude anything beginning with an underscore.\n\tThe Python bindings configure.py can now install the API file in a\n\tuser supplied directory.\n\t[c7e93dc918de]\n\n\t* qt/qscintilla_cs.qm, qt/qscintilla_fr.qm, qt/qscintilla_pt_br.qm,\n\tqt/qscintilla_ru.qm:\n\tRan lrelease on the project.\n\t[c3ce60078221]\n\n\t* Makefile, qt/qscintilla_cs.ts, qt/qscintilla_de.ts,\n\tqt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts:\n\tUpdated the internal build system to Qt v4.3.0rc1. Ran lupdate on\n\tthe project.\n\t[6a86e71a4e26]\n\n2007-05-08  phil  <phil>\n\n\t* Python/sip/qsciscintilla.sip, qt/qsciapis.cpp, qt/qsciapis.h,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tCall tips will now show all the tips for a function (in all scopes)\n\tif the current context/scope isn't known.\n\t[cbebccc205c7]\n\n\t* Python/sip/qsciscintilla.sip, qt/qsciapis.cpp, qt/qsciapis.h,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAdded callTipsStyle() and setCallTipsStyle() to QsciScintilla.\n\t[59d453b5da8c]\n\n2007-05-07  phil  <phil>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAutocompletion from documents should now work the same as QScintilla\n\tv1. The only difference is that the list does not contain the\n\tpreceding context so it is consistent with autocompletion from APIs.\n\t[46de719d325e]\n\n\t* qt/qscintilla.pro, qt/qscintilla_cs.qm, qt/qscintilla_cs.ts:\n\tAdded the Czech translations from Zdenek Bohm.\n\t[139fd9aee405]\n\n2007-04-30  phil  <phil>\n\n\t* Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded QsciScintilla::wordCharacters().\n\t[d6e56986a031]\n\n2007-04-29  phil  <phil>\n\n\t* Python/sip/qsciscintilla.sip, Python/sip/qsciscintillabase.sip,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tAdded lots of consts to QsciScintilla getter methods.\n\t[4aaffa8611ba]\n\n\t* Python/configure.py, Python/sip/qsciscintilla.sip,\n\tqt/qscintilla_de.qm, qt/qscintilla_de.ts, qt/qscintilla_fr.ts,\n\tqt/qscintilla_pt_br.ts, qt/qscintilla_ru.ts, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded caseSensitive() and isWordCharacter() to QsciScintilla.\n\tUpdated translations from Detlev.\n\t[64223bf97266]\n\n2007-04-10  phil  <phil>\n\n\t* Python/sip/qscilexercmake.sip, Python/sip/qscilexervhdl.sip,\n\tPython/sip/qscimodcommon.sip, qt/qscilexercmake.cpp,\n\tqt/qscilexercmake.h, qt/qscilexervhdl.cpp, qt/qscilexervhdl.h,\n\tqt/qscintilla.pro:\n\tAdded the QsciLexerVHDL class.\n\t[10029339786f]\n\n\t* Python/sip/qscilexercmake.sip, Python/sip/qscimodcommon.sip,\n\tqt/qscilexercmake.cpp, qt/qscilexercmake.h, qt/qscintilla.pro:\n\tAdded the QsciLexerCmake class.\n\t[c1c911246f75]\n\n2007-04-09  phil  <phil>\n\n\t* qt/qsciapis.cpp, qt/qsciapis.h, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tFinished call tip support.\n\t[b8c717297392]\n\n2007-04-07  phil  <phil>\n\n\t* qt/qsciapis.cpp, qt/qsciapis.h, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tSome refactoring in preparation for getting call tips working.\n\t[6cb925653a80]\n\n2007-04-06  phil  <phil>\n\n\t* qt/qsciscintilla.cpp:\n\tFixed autoindenting.\n\t[8d7b93ee4d9e]\n\n2007-04-05  phil  <phil>\n\n\t* qt/qsciapis.cpp, qt/qsciapis.h, qt/qsciscintilla.cpp:\n\tFixed autocompletion so that it works with lexers that don't define\n\tword separators, and lexers that are case insensitive.\n\t[66634cf13685]\n\n2007-04-04  phil  <phil>\n\n\t* qt/ScintillaQt.cpp, qt/qsciscintilla.cpp:\n\tFixed the horizontal scrollbar when word wrapping.\n\t[021ea1fe8468]\n\n2007-04-03  phil  <phil>\n\n\t* Python/configure.py, Python/sip/qsciscintillabase.sip, delcvs.bat,\n\tdoc/ScintillaDoc.html, doc/ScintillaDownload.html,\n\tdoc/ScintillaHistory.html, doc/ScintillaRelated.html,\n\tdoc/index.html, gtk/makefile, gtk/scintilla.mak, include/SciLexer.h,\n\tinclude/Scintilla.h, include/Scintilla.iface, qt/ScintillaQt.cpp,\n\tqt/qscintilla.pro, qt/qsciscintillabase.h, src/Document.cxx,\n\tsrc/Document.h, src/DocumentAccessor.cxx, src/Editor.cxx,\n\tsrc/Editor.h, src/ExternalLexer.h, src/KeyWords.cxx, src/LexAU3.cxx,\n\tsrc/LexBash.cxx, src/LexCmake.cxx, src/LexHTML.cxx, src/LexLua.cxx,\n\tsrc/LexMSSQL.cxx, src/LexOthers.cxx, src/LexTADS3.cxx,\n\tsrc/PropSet.cxx, src/RESearch.cxx, src/RESearch.h,\n\tsrc/SplitVector.h, vcbuild/SciLexer.dsp, version.txt,\n\twin32/PlatWin.cxx, win32/ScintRes.rc, win32/ScintillaWin.cxx,\n\twin32/makefile, win32/scintilla.mak, win32/scintilla_vc6.mak:\n\tMerged Scintilla v1.73.\n\t[2936af6fc62d]\n\n2007-03-18  phil  <phil>\n\n\t* Makefile, Python/sip/qscilexerd.sip, Python/sip/qscimodcommon.sip,\n\tPython/sip/qsciscintillabase.sip, qt/qscilexerd.cpp,\n\tqt/qscilexerd.h, qt/qscintilla.pro, qt/qscintilla_de.qm,\n\tqt/qscintilla_de.ts, qt/qscintilla_fr.ts, qt/qscintilla_pt_br.ts,\n\tqt/qscintilla_ru.ts:\n\tSwitched the internal build system to Qt v4.2.3. Added the D lexer\n\tsupport from Detlev.\n\t[667e9b81ab4f]\n\n2007-03-04  phil  <phil>\n\n\t* Makefile, example-Qt4/mainwindow.cpp, qt/PlatQt.cpp,\n\tqt/qsciscintilla.cpp:\n\tFixed a bug in default font handling. Removed use of QIODevice::Text\n\tin the example as it is unnecessary and a performance hog. Moved the\n\tinternal Qt3 build system to Qt v3.3.8. Auto-indentation should now\n\twork (as badly) as it did with QScintilla v1.\n\t[4d3ad4d1f295]\n\n2007-01-17  phil  <phil>\n\n\t* Python/sip/qsciapis.sip, qt/qsciapis.cpp, qt/qsciapis.h:\n\tAdded defaultPreparedName() to QsciAPIs.\n\t[2a3c872122dd]\n\n\t* designer-Qt4/qscintillaplugin.cpp:\n\tFixed the Qt4 Designer plugin include file value.\n\t[ea7cb8634ad2]\n\n2007-01-16  phil  <phil>\n\n\t* Python/sip/qsciapis.sip, qt/qsciapis.cpp, qt/qsciapis.h:\n\tAdded cancelPreparation() and apiPreparationCancelled() to QsciAPIs.\n\t[2d7dd00e3bc0]\n\n\t* Python/sip/qsciscintilla.sip, Python/sip/qsciscintillabase.sip,\n\tbuild.py, lib/LICENSE.commercial.short, lib/LICENSE.gpl.short,\n\tqt/qscintilla.pro, qt/qsciscintilla.cpp, qt/qsciscintilla.h,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tUpdated the copyright notices. Added selectionToEol() and\n\tsetSelectionToEol() to QsciScintilla. Added the other 1.72 changes\n\tto the low level API.\n\t[ddcf2d43cf31]\n\n\t* doc/SciBreak.jpg, doc/ScintillaDoc.html, doc/ScintillaDownload.html,\n\tdoc/ScintillaHistory.html, doc/ScintillaRelated.html,\n\tdoc/index.html, gtk/PlatGTK.cxx, gtk/ScintillaGTK.cxx, gtk/makefile,\n\tgtk/scintilla.mak, include/SciLexer.h, include/Scintilla.h,\n\tinclude/Scintilla.iface, qt/ScintillaQt.h, src/CellBuffer.cxx,\n\tsrc/CellBuffer.h, src/ContractionState.cxx, src/Document.cxx,\n\tsrc/Document.h, src/DocumentAccessor.cxx, src/Editor.cxx,\n\tsrc/Editor.h, src/KeyWords.cxx, src/LexCPP.cxx, src/LexD.cxx,\n\tsrc/LexGen.py, src/LexHTML.cxx, src/LexInno.cxx, src/LexLua.cxx,\n\tsrc/LexMatlab.cxx, src/LexNsis.cxx, src/LexOthers.cxx,\n\tsrc/LexRuby.cxx, src/LexTADS3.cxx, src/Partitioning.h,\n\tsrc/ScintillaBase.cxx, src/SplitVector.h, src/StyleContext.h,\n\tsrc/ViewStyle.cxx, src/ViewStyle.h, vcbuild/SciLexer.dsp,\n\tversion.txt, win32/ScintRes.rc, win32/ScintillaWin.cxx,\n\twin32/makefile, win32/scintilla.mak, win32/scintilla_vc6.mak:\n\tMerged Scintilla v1.72, but any new features are not yet exploited.\n\t[dcdfde9050a2]\n\n2007-01-09  phil  <phil>\n\n\t* Python/configure.py:\n\tFixed bug in configure.py when the -p flag wasn't specified.\n\t[50dc69f2b20d]\n\n2007-01-04  phil  <phil>\n\n\t* Python/configure.py, Python/sip/qscilexer.sip, qt/qsciapis.cpp,\n\tqt/qsciapis.h, qt/qsciscintilla.cpp:\n\tBackported to Qt v3. Note that this will probably break again in the\n\tfuture when call tips are redone.\n\t[3bcc4826fc73]\n\n2007-01-02  phil  <phil>\n\n\t* Python/configure.py, lib/gen_python_api.py,\n\tqsci/api/python/Python-2.4.api, qsci/api/python/Python-2.5.api,\n\tqt/qsciapis.cpp:\n\tAdded the Python v2.4 and v2.5 API files. Added the generation of\n\tthe QScintilla2.api file.\n\t[49beb92ca721]\n\n2007-01-01  phil  <phil>\n\n\t* Python/sip/qsciscintilla.sip, qt/qscilexer.h, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded autoCompletionFillupsEnabled() and\n\tsetAutoCompletionFillupsEnabled() to QsciScintilla. Updated the\n\tPython bindings.\n\t[7aa946010e9d]\n\n\t* Python/sip/qsciapis.sip, qt/qsciapis.cpp, qt/qsciapis.h:\n\tImplemented loadPrepared() and savePrepared() in QsciAPIs. Added\n\tisPrepared() to QsciAPIs. Updated the Python bindings.\n\t[4c5e3d80fec7]\n\n\t* Python/sip/qsciapis.sip, qt/qsciapis.cpp, qt/qsciapis.h:\n\tAdded installAPIFiles() and stubs for loadPrepared() and\n\tsavePrepared() to QsciAPIs.\n\t[93f4dd7222a1]\n\n\t* Python/sip/qsciapis.sip:\n\tAdded the missing qsciapis.sip file.\n\t[064b524acc93]\n\n\t* Python/sip/qscilexer.sip, Python/sip/qscimodcommon.sip,\n\tlib/qscintilla.dxy, qt/qsciapis.cpp, qt/qsciapis.h,\n\tqt/qscilexer.cpp, qt/qscilexer.h:\n\tFixed the generation of the API documentation. Added apis() and\n\tsetAPIs() to QsciLexer. Removed apiAdd(), apiClear(), apiLoad(),\n\tapiRemove(), apiProcessingStarted() and apiProcessingFinished() from\n\tQsciLexer. Added apiPreparationStarted() and\n\tapiPreparationFinished() to QsciAPIs. Made QsciAPIs part of the API\n\tagain. Updated the Python bindings.\n\t[851d133b12ff]\n\n2006-12-20  phil  <phil>\n\n\t* Makefile, qt/qsciapis.cpp, qt/qsciapis.h:\n\tUpdated the internal build system to Qt v4.2.2. More work on auto-\n\tcompletion.\n\t[d4542220e7a2]\n\n2006-11-26  phil  <phil>\n\n\t* qt/ListBoxQt.cpp, qt/ListBoxQt.h, qt/qsciapis.cpp, qt/qsciapis.h,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tMore work on the auto-completion code.\n\t[37b2d0d2b154]\n\n2006-11-22  phil  <phil>\n\n\t* qt/qsciapis.cpp, qt/qsciapis.h, qt/qscilexer.cpp, qt/qscilexer.h,\n\tqt/qscilexerbatch.cpp, qt/qscilexerbatch.h, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tChanged the handling of case sensitivity in auto-completion lists.\n\tLexers now say if they are case sensitive.\n\t[b1932fba61ec]\n\n2006-11-17  phil  <phil>\n\n\t* Makefile, Python/configure.py, Python/sip/qscicommand.sip,\n\tPython/sip/qscicommandset.sip, Python/sip/qscidocument.sip,\n\tPython/sip/qscilexer.sip, Python/sip/qscilexerbash.sip,\n\tPython/sip/qscilexerbatch.sip, Python/sip/qscilexercpp.sip,\n\tPython/sip/qscilexercsharp.sip, Python/sip/qscilexercss.sip,\n\tPython/sip/qscilexerdiff.sip, Python/sip/qscilexerhtml.sip,\n\tPython/sip/qscilexeridl.sip, Python/sip/qscilexerjava.sip,\n\tPython/sip/qscilexerjavascript.sip, Python/sip/qscilexerlua.sip,\n\tPython/sip/qscilexermakefile.sip, Python/sip/qscilexerperl.sip,\n\tPython/sip/qscilexerpov.sip, Python/sip/qscilexerproperties.sip,\n\tPython/sip/qscilexerpython.sip, Python/sip/qscilexerruby.sip,\n\tPython/sip/qscilexersql.sip, Python/sip/qscilexertex.sip,\n\tPython/sip/qscimacro.sip, Python/sip/qsciprinter.sip,\n\tPython/sip/qsciscintilla.sip, Python/sip/qsciscintillabase.sip,\n\tTODO, build.py, designer-Qt3/qscintillaplugin.cpp, designer-\n\tQt4/qscintillaplugin.cpp, example-Qt3/application.cpp, example-\n\tQt4/mainwindow.cpp, qt/PlatQt.cpp, qt/ScintillaQt.cpp,\n\tqt/qsciapis.cpp, qt/qsciapis.h, qt/qscicommand.cpp,\n\tqt/qscicommand.h, qt/qscicommandset.cpp, qt/qscicommandset.h,\n\tqt/qscidocument.cpp, qt/qscidocument.h, qt/qscilexer.cpp,\n\tqt/qscilexer.h, qt/qscilexerbash.cpp, qt/qscilexerbash.h,\n\tqt/qscilexerbatch.cpp, qt/qscilexerbatch.h, qt/qscilexercpp.cpp,\n\tqt/qscilexercpp.h, qt/qscilexercsharp.cpp, qt/qscilexercsharp.h,\n\tqt/qscilexercss.cpp, qt/qscilexercss.h, qt/qscilexerdiff.cpp,\n\tqt/qscilexerdiff.h, qt/qscilexerhtml.cpp, qt/qscilexerhtml.h,\n\tqt/qscilexeridl.cpp, qt/qscilexeridl.h, qt/qscilexerjava.cpp,\n\tqt/qscilexerjava.h, qt/qscilexerjavascript.cpp,\n\tqt/qscilexerjavascript.h, qt/qscilexerlua.cpp, qt/qscilexerlua.h,\n\tqt/qscilexermakefile.cpp, qt/qscilexermakefile.h,\n\tqt/qscilexerperl.cpp, qt/qscilexerperl.h, qt/qscilexerpov.cpp,\n\tqt/qscilexerpov.h, qt/qscilexerproperties.cpp,\n\tqt/qscilexerproperties.h, qt/qscilexerpython.cpp,\n\tqt/qscilexerpython.h, qt/qscilexerruby.cpp, qt/qscilexerruby.h,\n\tqt/qscilexersql.cpp, qt/qscilexersql.h, qt/qscilexertex.cpp,\n\tqt/qscilexertex.h, qt/qscimacro.cpp, qt/qscimacro.h,\n\tqt/qscintilla.pro, qt/qsciprinter.cpp, qt/qsciprinter.h,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h:\n\tFixed the name of the generated source packages. Reorganised so that\n\tthe header files are in a separate sub-directory. Updated the\n\tdesigner plugins and examples for the changing in header file\n\tstructure. More work on autocompletion. Basic functionality is\n\tthere, but no support for the \"current context\" yet.\n\t[312e74140bb8]\n\n2006-11-04  phil  <phil>\n\n\t* designer-Qt4/qscintillaplugin.cpp:\n\tDesigner plugin fixes for Qt4 from DavidB.\n\t[920f7af8bec6]\n\n2006-11-03  phil  <phil>\n\n\t* qt/qscilexer.cpp:\n\tFixed QsciLexer::setPaper() so that it also sets the background\n\tcolour of the default style.\n\t[fcab00732d97]\n\n2006-10-21  phil  <phil>\n\n\t* Makefile, qt/qsciapis.cpp, qt/qsciapis.h, qt/qsciscintilla.cpp:\n\tSwitched the internal build system to Qt v3.3.7 and v4.2.1.\n\tPortability fixes for Qt3.\n\t[512b57958ea4]\n\n2006-10-20  phil  <phil>\n\n\t* Makefile, build.py, include/Platform.h, lib/README.doc,\n\tqt/PlatQt.cpp, qt/qscimacro.cpp, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp:\n\tRenamed the base package QScintilla2. Platform portability fixes\n\tfrom Ulli. The qsci data directory is now installed (where API files\n\twill be kept).\n\t[2a61d65842fb]\n\n2006-10-13  phil  <phil>\n\n\t* Python/sip/qsciscintilla.sip, qt/qscintilla.pro,\n\tqt/qscintilla_pt_br.qm, qt/qscintilla_pt_br.ts,\n\tqt/qscintilla_ptbr.qm, qt/qscintilla_ptbr.ts, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded QsciScintilla::linesChanged() from Detlev. Removed\n\tQsciScintilla::markerChanged(). Renamed the Brazilian Portugese\n\ttranslation files.\n\t[5b23de72e063]\n\n\t* Makefile, Python/sip/qscilexer.sip, qt/ListBoxQt.cpp,\n\tqt/ListBoxQt.h, qt/ScintillaQt.cpp, qt/qsciapis.cpp, qt/qsciapis.h,\n\tqt/qscilexer.cpp, qt/qscilexer.h, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tAdded apiRemove(), apiProcessingStarted() and\n\tapiProcessingFinished() to QsciLexer.\n\t[ef2cb95b868a]\n\n2006-10-08  phil  <phil>\n\n\t* qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tReset the text and paper colours and font when removing a lexer.\n\t[08ac85b34d80]\n\n\t* qt/qsciscintilla.cpp:\n\tFixed Qt3 specific problem with most recent changes.\n\t[e4ba06e01a1e]\n\n2006-10-06  phil  <phil>\n\n\t* Python/sip/qsciapis.sip, Python/sip/qscilexer.sip,\n\tPython/sip/qscimodcommon.sip, Python/sip/qsciscintilla.sip,\n\tqt/ListBoxQt.cpp, qt/SciClasses.cpp, qt/qsciapis.cpp, qt/qsciapis.h,\n\tqt/qscilexer.cpp, qt/qscilexer.h, qt/qscilexerbash.cpp,\n\tqt/qscilexerbash.h, qt/qscilexerbatch.cpp, qt/qscilexerbatch.h,\n\tqt/qscilexercpp.cpp, qt/qscilexercpp.h, qt/qscilexercsharp.h,\n\tqt/qscilexercss.cpp, qt/qscilexercss.h, qt/qscilexerdiff.cpp,\n\tqt/qscilexerdiff.h, qt/qscilexerhtml.cpp, qt/qscilexerhtml.h,\n\tqt/qscilexeridl.h, qt/qscilexerjavascript.h, qt/qscilexerlua.cpp,\n\tqt/qscilexerlua.h, qt/qscilexermakefile.cpp, qt/qscilexermakefile.h,\n\tqt/qscilexerperl.cpp, qt/qscilexerperl.h, qt/qscilexerpov.cpp,\n\tqt/qscilexerpov.h, qt/qscilexerproperties.cpp,\n\tqt/qscilexerproperties.h, qt/qscilexerpython.cpp,\n\tqt/qscilexerpython.h, qt/qscilexerruby.cpp, qt/qscilexerruby.h,\n\tqt/qscilexersql.cpp, qt/qscilexersql.h, qt/qscilexertex.cpp,\n\tqt/qscilexertex.h, qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tMade QsciAPIs an internal class and instead added apiAdd(),\n\tapiClear() and apiLoad() to QsciLexer. Replaced\n\tsetAutoCompletionStartCharacters() with\n\tsetAutoCompletionWordSeparators() in QsciScintilla. Removed\n\tautoCompletionFillupsEnabled(), setAutoCompletionFillupsEnabled(),\n\tsetAutoCompletionAPIs() and setCallTipsAPIs() from QsciScintilla.\n\tAdded AcsNone to QsciScintilla::AutoCompletionSource. Horizontal\n\tscrollbars are displayed as needed in autocompletion lists. Added\n\tQsciScintilla::lexer(). Fixed setFont(), setColor(), setEolFill()\n\tand setPaper() in QsciLexer so that they handle all styles as\n\tdocumented. Removed all occurences of QString::null. Fixed the\n\tproblem with indentation guides not changing when the size of a\n\tspace changed. Added the QsciScintilla::markerChanged() signal.\n\tUpdated the Python bindings.\n\t[9ae22e152365]\n\n2006-10-01  phil  <phil>\n\n\t* qt/PlatQt.cpp:\n\tFixed a silly line drawing bug.\n\t[0f9f5c22421a]\n\n2006-09-30  phil  <phil>\n\n\t* qt/qscintilla.pro:\n\tFixes for building on Windows and MacOS/X.\n\t[c16bc6aeba20]\n\n2006-09-29  phil  <phil>\n\n\t* example-Qt4/application.pro, qt/PlatQt.cpp, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.cpp:\n\tFixed the documentation bug in QsciScintilla::insert(). Fixed the\n\tmouse shape changing properly. Fixed the drawing of fold markers.\n\t[08af64d93094]\n\n2006-09-23  phil  <phil>\n\n\t* lib/README:\n\tImproved the README for the pedants amongst us.\n\t[683bdb9a84fc]\n\n\t* designer-Qt4/designer.pro, designer-Qt4/qscintillaplugin.cpp,\n\tdesigner-Qt4/qscintillaplugin.h:\n\tThe Qt4 Designer plugin now loads - thanks to DavidB.\n\t[feb5a3618df6]\n\n2006-09-16  phil  <phil>\n\n\t* build.py, designer-Qt3/designer.pro, designer-\n\tQt3/qscintillaplugin.cpp, designer-Qt4/designer.pro, designer-\n\tQt4/qscintillaplugin.cpp, designer/designer.pro,\n\tdesigner/qscintillaplugin.cpp, lib/README.doc, qt/qsciscintilla.h:\n\tFixed the Qt3 designer plugin. Added the Qt4 designer plugin based\n\ton Andrius Ozelis's work. (But it doesn't load for me - does anybody\n\telse have a problem?)\n\t[3a0873ed5ff0]\n\n2006-09-09  phil  <phil>\n\n\t* Python/sip/qsciscintilla.sip, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h:\n\tQsciScintilla's setFont(), setColor() and setPaper() now work as\n\texpected when there is no lexer (and have no effect if there is a\n\tlexer).\n\t[65cc713d9ecb]\n\n2006-08-28  phil  <phil>\n\n\t* qt/ListBoxQt.cpp, qt/PlatQt.cpp:\n\tFixed a crash when double-clicking on an auto-completion list entry.\n\t[d8eecfc59ca2]\n\n2006-08-27  phil  <phil>\n\n\t* Python/sip/qsciscintillabase.sip, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/index.html, gtk/Converter.h, gtk/PlatGTK.cxx,\n\tgtk/ScintillaGTK.cxx, qt/ScintillaQt.cpp, qt/qsciscintillabase.h,\n\tsrc/Editor.cxx, src/LexCPP.cxx, src/LexPerl.cxx, src/LexVB.cxx,\n\tsrc/StyleContext.h, version.txt, win32/ScintRes.rc,\n\twin32/ScintillaWin.cxx:\n\tMerged Scintilla v1.71. The SCN_DOUBLECLICK() signal now passes the\n\tline and position of the click.\n\t[81c852fed943]\n\n2006-08-17  phil  <phil>\n\n\t* Python/sip/qsciscintilla.sip, qt/ScintillaQt.cpp:\n\tFixed pasting when Unicode mode is set.\n\t[9d4a7ccef6f4]\n\n\t* build.py:\n\tFixed the internal build system leaving SVN remnants around.\n\t[96c36a0e94ac]\n\n2006-07-30  phil  <phil>\n\n\t* NEWS, Python/sip/qsciscintilla.sip, qt/qscicommand.h,\n\tqt/qscicommandset.h, qt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tAdded autoCompletionFillupsEnabled() and\n\tsetAutoCompletionFillupsEnabled() to QsciScintilla. Don't auto-\n\tcomplete numbers. Removed QsciCommandList.\n\t[e9886e5da7c3]\n\n2006-07-29  phil  <phil>\n\n\t* lib/README.doc, qt/PlatQt.cpp:\n\tDebugged the Qt3 backport - all seems to work.\n\t[1e743e050599]\n\n\t* Python/configure.py, Python/sip/qscimod3.sip,\n\tPython/sip/qsciscintillabase.sip, Python/sip/qsciscintillabase4.sip,\n\tbuild.py, lib/README, lib/README.doc, lib/qscintilla.dxy,\n\tqt/qsciscintillabase.h:\n\tThe PyQt3 bindings now work. Updated the documentation and build\n\tsystem for both Qt3 and Qt4.\n\t[f4fa8a9a35c0]\n\n2006-07-28  phil  <phil>\n\n\t* Python/sip/qscimodcommon.sip, Python/sip/qsciscintillabase4.sip,\n\tPython/sip/qscitypes.sip, example-Qt3/application.cpp, example-\n\tQt3/application.h, example-Qt3/application.pro, qt/qscicommand.cpp,\n\tqt/qscicommandset.cpp, qt/qscidocument.cpp, qt/qscimacro.cpp,\n\tqt/qscintilla.pro, qt/qsciprinter.cpp, qt/qsciscintilla.cpp,\n\tqt/qsciscintilla.h, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h, qt/qscitypes.h:\n\tBacked out the QscoTypes namespace now that the Qt3/4 source code\n\thas been consolidated.\n\t[372c37fa8b9c]\n\n\t* qt/qscintilla_de.ts, qt/qscintilla_fr.ts, qt/qscintilla_ptbr.ts,\n\tqt/qscintilla_ru.ts, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h, qt/qsciscintillabase3.cpp,\n\tqt/qsciscintillabase3.h, qt/qsciscintillabase4.cpp,\n\tqt/qsciscintillabase4.h:\n\tIntegated the Qt3 and Qt4 source files.\n\t[4ee1fcf04cd9]\n\n\t* Makefile, build.py, lib/README.doc, lib/qscintilla.dxy,\n\tqt/qscintilla.pro, qt/qsciscintillabase.h,\n\tqt/qsciscintillabase3.cpp, qt/qsciscintillabase3.h,\n\tqt/qsciscintillabase4.cpp, qt/qsciscintillabase4.h:\n\tThe Qt3 port now compiles, but otherwise untested.\n\t[da227e07e729]\n\n\t* Python/sip/qscimacro.sip, lib/README.doc, lib/qscintilla.dxy,\n\tqt/PlatQt.cpp, qt/qscilexermakefile.cpp, qt/qscimacro.cpp,\n\tqt/qscimacro.h, qt/qscintilla.pro, qt/qsciscintillabase.h,\n\tqt/qsciscintillabase3.cpp, qt/qsciscintillabase3.h,\n\tqt/qsciscintillabase4.cpp, qt/qsciscintillabase4.h:\n\tChanges to QsciMacro so that it has a more consistent API across Qt3\n\tand Qt4. Backported to Qt3 - doesn't yet build because Qt3 qmake\n\tdoesn't understand the preprocessor.\n\t[910b415ec4a8]\n\n2006-07-27  phil  <phil>\n\n\t* build.py, designer/qscintillaplugin.cpp, example-Qt3/README,\n\texample-Qt4/README, lib/README, lib/README.doc, lib/qscintilla.dxy,\n\tqt/qscintilla.pro:\n\tUpdated the documentation.\n\t[7774f3e87003]\n\n2006-07-26  phil  <phil>\n\n\t* Makefile, Python/configure.py, Python/qsciapis.sip,\n\tPython/qscicommand.sip, Python/qscicommandset.sip,\n\tPython/qscidocument.sip, Python/qscilexer.sip,\n\tPython/qscilexerbash.sip, Python/qscilexerbatch.sip,\n\tPython/qscilexercpp.sip, Python/qscilexercsharp.sip,\n\tPython/qscilexercss.sip, Python/qscilexerdiff.sip,\n\tPython/qscilexerhtml.sip, Python/qscilexeridl.sip,\n\tPython/qscilexerjava.sip, Python/qscilexerjavascript.sip,\n\tPython/qscilexerlua.sip, Python/qscilexermakefile.sip,\n\tPython/qscilexerperl.sip, Python/qscilexerpov.sip,\n\tPython/qscilexerproperties.sip, Python/qscilexerpython.sip,\n\tPython/qscilexerruby.sip, Python/qscilexersql.sip,\n\tPython/qscilexertex.sip, Python/qscimacro.sip, Python/qscimod4.sip,\n\tPython/qscimodcommon.sip, Python/qsciprinter.sip,\n\tPython/qsciscintilla.sip, Python/qsciscintillabase4.sip,\n\tPython/qscitypes.sip, Python/sip/qsciapis.sip,\n\tPython/sip/qscicommand.sip, Python/sip/qscicommandset.sip,\n\tPython/sip/qscidocument.sip, Python/sip/qscilexer.sip,\n\tPython/sip/qscilexerbash.sip, Python/sip/qscilexerbatch.sip,\n\tPython/sip/qscilexercpp.sip, Python/sip/qscilexercsharp.sip,\n\tPython/sip/qscilexercss.sip, Python/sip/qscilexerdiff.sip,\n\tPython/sip/qscilexerhtml.sip, Python/sip/qscilexeridl.sip,\n\tPython/sip/qscilexerjava.sip, Python/sip/qscilexerjavascript.sip,\n\tPython/sip/qscilexerlua.sip, Python/sip/qscilexermakefile.sip,\n\tPython/sip/qscilexerperl.sip, Python/sip/qscilexerpov.sip,\n\tPython/sip/qscilexerproperties.sip, Python/sip/qscilexerpython.sip,\n\tPython/sip/qscilexerruby.sip, Python/sip/qscilexersql.sip,\n\tPython/sip/qscilexertex.sip, Python/sip/qscimacro.sip,\n\tPython/sip/qscimod4.sip, Python/sip/qscimodcommon.sip,\n\tPython/sip/qsciprinter.sip, Python/sip/qsciscintilla.sip,\n\tPython/sip/qsciscintillabase4.sip, Python/sip/qscitypes.sip,\n\tbuild.py, lib/LICENSE.edu, lib/LICENSE.edu.short, lib/README.MacOS:\n\tChanged the build system to add the Python bindings.\n\t[8a56c38c418b]\n\n\t* Python/configure.py, Python/qscicommandset.sip,\n\tPython/qscilexerruby.sip, Python/qscilexertex.sip,\n\tPython/qscimod4.sip, Python/qsciscintilla.sip,\n\tPython/qsciscintillabase4.sip, Python/qscitypes.sip:\n\tDebugged the Python bindings - not yet part of the snapshots.\n\t[8e348d9c7d38]\n\n2006-07-25  phil  <phil>\n\n\t* Python/qsciapis.sip, Python/qscicommand.sip,\n\tPython/qscicommandset.sip, Python/qscidocument.sip,\n\tPython/qscilexer.sip, Python/qscilexerbash.sip,\n\tPython/qscilexerbatch.sip, Python/qscilexercpp.sip,\n\tPython/qscilexercsharp.sip, Python/qscilexercss.sip,\n\tPython/qscilexerdiff.sip, Python/qscilexerhtml.sip,\n\tPython/qscilexeridl.sip, Python/qscilexerjava.sip,\n\tPython/qscilexerjavascript.sip, Python/qscilexerlua.sip,\n\tPython/qscilexermakefile.sip, Python/qscilexerperl.sip,\n\tPython/qscilexerpov.sip, Python/qscilexerproperties.sip,\n\tPython/qscilexerpython.sip, Python/qscilexerruby.sip,\n\tPython/qscilexersql.sip, Python/qscilexertex.sip,\n\tPython/qscimacro.sip, Python/qscimod4.sip, Python/qscimodcommon.sip,\n\tPython/qsciprinter.sip, Python/qsciscintilla.sip,\n\tPython/qsciscintillabase4.sip, Python/qscitypes.sip, qt/qsciapis.h,\n\tqt/qsciglobal.h, qt/qscilexer.h, qt/qscilexerbash.h,\n\tqt/qscilexercpp.h, qt/qscilexerperl.h, qt/qscilexerpython.h,\n\tqt/qscilexersql.h, qt/qsciprinter.h, qt/qsciscintilla.h:\n\tPorted the .sip files from v1. (Not yet part of the snapshot.)\n\t[c03807f9fbab]\n\n\t* Makefile, qt/qscintilla-Qt4.pro, qt/qscintilla.pro:\n\tThe .pro file should now work with both Qt v3 and v4.\n\t[c99aec4ce73d]\n\n\t* Makefile, qt/qscintilla-Qt4.pro, qt/qscintilla.pro,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h,\n\tqt/qsciscintillabase4.cpp, qt/qsciscintillabase4.h:\n\tSome file reorganisation for when the backport to Qt3 is done.\n\t[c97fb1bdc0e5]\n\n\t* qt/qscicommand.cpp, qt/qscicommandset.cpp, qt/qscidocument.cpp,\n\tqt/qscimacro.cpp, qt/qscintilla.pro, qt/qsciprinter.cpp,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h, qt/qsciscintillabase.cpp,\n\tqt/qsciscintillabase.h, qt/qscitypes.h:\n\tMoved the Scintilla API enums out of QsciScintillaBase and into the\n\tnew QsciTypes namespace.\n\t[6de0ac19e4df]\n\n\t* qt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tTriple clicking now works.\n\t[8ef632d89147]\n\n2006-07-23  phil  <phil>\n\n\t* qt/qsciscintillabase.cpp:\n\tFixed incorrect selection after dropping text.\n\t[4c62275c39f4]\n\n\t* qt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qsciscintillabase.cpp:\n\tDropping text seems (mostly) to work.\n\t[7acc97948229]\n\n2006-07-22  phil  <phil>\n\n\t* qt/PlatQt.cpp, qt/ScintillaQt.cpp, qt/ScintillaQt.h,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tScrollbars now work. The context menu now works. The clipboard and\n\tmouse selection now works. Dragging to external windows now works\n\t(but not dropping).\n\t[73995ec258cd]\n\n2006-07-18  phil  <phil>\n\n\t* example-Qt4/mainwindow.cpp, example-Qt4/mainwindow.h, qt/PlatQt.cpp,\n\tqt/qextscintillalexerbash.cxx, qt/qextscintillalexerbash.h,\n\tqt/qextscintillalexerbatch.cxx, qt/qextscintillalexerbatch.h,\n\tqt/qextscintillalexercpp.cxx, qt/qextscintillalexercpp.h,\n\tqt/qextscintillalexercsharp.cxx, qt/qextscintillalexercsharp.h,\n\tqt/qextscintillalexercss.cxx, qt/qextscintillalexercss.h,\n\tqt/qextscintillalexerdiff.cxx, qt/qextscintillalexerdiff.h,\n\tqt/qextscintillalexerhtml.cxx, qt/qextscintillalexerhtml.h,\n\tqt/qextscintillalexeridl.cxx, qt/qextscintillalexeridl.h,\n\tqt/qextscintillalexerjava.cxx, qt/qextscintillalexerjava.h,\n\tqt/qextscintillalexerjavascript.cxx,\n\tqt/qextscintillalexerjavascript.h, qt/qextscintillalexerlua.cxx,\n\tqt/qextscintillalexerlua.h, qt/qextscintillalexermakefile.cxx,\n\tqt/qextscintillalexermakefile.h, qt/qextscintillalexerperl.cxx,\n\tqt/qextscintillalexerperl.h, qt/qextscintillalexerpov.cxx,\n\tqt/qextscintillalexerpov.h, qt/qextscintillalexerproperties.cxx,\n\tqt/qextscintillalexerproperties.h, qt/qextscintillalexerpython.cxx,\n\tqt/qextscintillalexerpython.h, qt/qextscintillalexerruby.cxx,\n\tqt/qextscintillalexerruby.h, qt/qextscintillalexersql.cxx,\n\tqt/qextscintillalexersql.h, qt/qextscintillalexertex.cxx,\n\tqt/qextscintillalexertex.h, qt/qextscintillamacro.cxx,\n\tqt/qextscintillamacro.h, qt/qextscintillaprinter.cxx,\n\tqt/qextscintillaprinter.h, qt/qsciapis.h, qt/qscicommand.h,\n\tqt/qscilexer.h, qt/qscilexerbash.cpp, qt/qscilexerbash.h,\n\tqt/qscilexerbatch.cpp, qt/qscilexerbatch.h, qt/qscilexercpp.cpp,\n\tqt/qscilexercpp.h, qt/qscilexercsharp.cpp, qt/qscilexercsharp.h,\n\tqt/qscilexercss.cpp, qt/qscilexercss.h, qt/qscilexerdiff.cpp,\n\tqt/qscilexerdiff.h, qt/qscilexerhtml.cpp, qt/qscilexerhtml.h,\n\tqt/qscilexeridl.cpp, qt/qscilexeridl.h, qt/qscilexerjava.cpp,\n\tqt/qscilexerjava.h, qt/qscilexerjavascript.cpp,\n\tqt/qscilexerjavascript.h, qt/qscilexerlua.cpp, qt/qscilexerlua.h,\n\tqt/qscilexermakefile.cpp, qt/qscilexermakefile.h,\n\tqt/qscilexerperl.cpp, qt/qscilexerperl.h, qt/qscilexerpov.cpp,\n\tqt/qscilexerpov.h, qt/qscilexerproperties.cpp,\n\tqt/qscilexerproperties.h, qt/qscilexerpython.cpp,\n\tqt/qscilexerpython.h, qt/qscilexerruby.cpp, qt/qscilexerruby.h,\n\tqt/qscilexersql.cpp, qt/qscilexersql.h, qt/qscilexertex.cpp,\n\tqt/qscilexertex.h, qt/qscimacro.cpp, qt/qscimacro.h,\n\tqt/qscintilla.pro, qt/qsciprinter.cpp, qt/qsciprinter.h,\n\tqt/qsciscintilla.h:\n\tPorted the rest of the API to Qt4. Finished porting the example to\n\tQt4.\n\t[de0ede6bbcf5]\n\n2006-07-17  phil  <phil>\n\n\t* qt/qextscintilla.cxx, qt/qextscintilla.h, qt/qextscintillaapis.cxx,\n\tqt/qextscintillaapis.h, qt/qextscintillacommand.cxx,\n\tqt/qextscintillacommand.h, qt/qextscintillacommandset.cxx,\n\tqt/qextscintillacommandset.h, qt/qextscintilladocument.cxx,\n\tqt/qextscintilladocument.h, qt/qextscintillalexer.cxx,\n\tqt/qextscintillalexer.h, qt/qsciapis.cpp, qt/qsciapis.h,\n\tqt/qscicommand.cpp, qt/qscicommand.h, qt/qscicommandset.cpp,\n\tqt/qscicommandset.h, qt/qscidocument.cpp, qt/qscidocument.h,\n\tqt/qscilexer.cpp, qt/qscilexer.h, qt/qscintilla.pro,\n\tqt/qsciscintilla.cpp, qt/qsciscintilla.h:\n\tMore porting to Qt4 - just the lexers remaining.\n\t[07158797bcf2]\n\n\t* qt/ListBoxQt.cpp, qt/PlatQt.cpp, qt/SciClasses.cpp,\n\tqt/ScintillaQt.cpp, qt/qscintilla.pro, qt/qsciscintillabase.cpp:\n\tFurther Qt4 changes so that Q3Support is no longer needed.\n\t[cb3ca2aee49e]\n\n\t* qt/ListBoxQt.cpp, qt/ListBoxQt.h, qt/PlatQt.cpp, qt/SciClasses.cpp,\n\tqt/SciClasses.h, qt/SciListBox.cxx, qt/SciListBox.h,\n\tqt/ScintillaQt.cpp, qt/ScintillaQt.h, qt/qscintilla.pro,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tPorted the auto-completion list implementation to Qt4.\n\t[1d0d07f7ba3b]\n\n2006-07-16  phil  <phil>\n\n\t* qt/PlatQt.cpp, qt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tDrawing now seems Ok. Keyboard support now seems Ok. Start of the\n\tmouse support.\n\t[20a223c3f57e]\n\n2006-07-12  phil  <phil>\n\n\t* include/Platform.h, qt/PlatQt.cpp, qt/ScintillaQt.cpp:\n\tPainting now seems to happen only within paint events - but\n\tincorrectly.\n\t[a60a10298391]\n\n\t* qt/PlatQt.cpp, qt/PlatQt.cxx, qt/ScintillaQt.cpp,\n\tqt/ScintillaQt.cxx, qt/ScintillaQt.h, qt/qscintilla.pro:\n\tRecoded the implementation of surfaces so that painters are only\n\tactive during paint events. Not yet debugged.\n\t[d0d91ae8e514]\n\n\t* build.py, qt/PlatQt.cxx, qt/ScintillaQt.cxx, qt/ScintillaQt.h,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tRecoded the handling of key presses so that it doesn't use any Qt3\n\tspecific features and should be backported to QScintilla v1. It also\n\tshould work better in Unicode mode.\n\t[c2b96d686ee6]\n\n2006-07-11  phil  <phil>\n\n\t* Makefile, build.py, example-Qt3/README, example-Qt3/application.cpp,\n\texample-Qt3/application.h, example-Qt3/application.pro, example-\n\tQt3/fileopen.xpm, example-Qt3/fileprint.xpm, example-\n\tQt3/filesave.xpm, example-Qt3/main.cpp, example-Qt4/README, example-\n\tQt4/application.pro, example-Qt4/application.qrc, example-\n\tQt4/images/copy.png, example-Qt4/images/cut.png, example-\n\tQt4/images/new.png, example-Qt4/images/open.png, example-\n\tQt4/images/paste.png, example-Qt4/images/save.png, example-\n\tQt4/main.cpp, example-Qt4/mainwindow.cpp, example-Qt4/mainwindow.h,\n\texample/README, example/application.cpp, example/application.h,\n\texample/application.pro, example/fileopen.xpm,\n\texample/fileprint.xpm, example/filesave.xpm, example/main.cpp,\n\tqt/PlatQt.cxx, qt/SciListBox.cxx, qt/SciListBox.h,\n\tqt/ScintillaQt.cxx, qt/ScintillaQt.h, qt/qextscintilla.cxx,\n\tqt/qextscintillabase.cxx, qt/qextscintillabase.h,\n\tqt/qextscintillaglobal.h, qt/qsciglobal.h, qt/qscintilla.pro,\n\tqt/qsciscintillabase.cpp, qt/qsciscintillabase.h:\n\tWhole raft of changes starting QScintilla2.\n\t[7f0bd20f2f83]\n\n2006-07-09  phil  <phil>\n\n\t* qt/qscintilla_de.qm, qt/qscintilla_de.ts, qt/qscintilla_fr.ts,\n\tqt/qscintilla_ptbr.ts, qt/qscintilla_ru.ts:\n\tUpdated translations from Detlev.\n\t[c04c167d802e]\n\n2006-07-08  phil  <phil>\n\n\t* NEWS, qt/qextscintilla.cxx, qt/qextscintilla.h:\n\tAdded QextScintilla::isCallTipActive().\n\t[1f7dcb40db25]\n\n\t* lib/LICENSE.commercial.short, lib/LICENSE.edu.short,\n\tlib/LICENSE.gpl.short, qt/qextscintilla.cxx:\n\tChanged the autoindentation to be slightly cleverer when handling\n\tPython. If a lexer does not define block end words then a block\n\tstart word is ignored unless it is the last significant word in a\n\tline.\n\t[d5813c13f5da]\n\n2006-07-02  phil  <phil>\n\n\t* qt/PlatQt.cxx:\n\tPossibly fixed a possible problem with double clicking under\n\tWindows.\n\t[271141bb2b43]\n\n\t* NEWS, qt/ScintillaQt.cxx, qt/qextscintilla.cxx, qt/qextscintilla.h:\n\tAdded setWrapVisualFlags(), WrapMode::WrapCharacter, WrapVisualFlag\n\tto QextScintilla. The layout cache is now set according to the wrap\n\tmode. Setting a wrap mode now disables the horizontal scrollbar.\n\t[a498b86e7999]\n\n2006-07-01  phil  <phil>\n\n\t* NEWS, qt/qextscintilla.cxx, qt/qextscintilla.h:\n\tAdded cancelList(), firstVisibleLine(), isListActive(),\n\tshowUserList(), textHeight() and userListActivated() to\n\tQextScintilla.\n\t[058c7be4bdfe]\n\n\t* qt/qextscintilla.cxx:\n\tAuto-completion changed so that subsequent start characters cause\n\tthe list to be re-created (containing a subset of the previous one).\n\t[5b534658e638]\n\n2006-06-28  phil  <phil>\n\n\t* NEWS, qt/SciListBox.cxx, qt/qextscintilla.cxx, qt/qextscintilla.h,\n\tqt/qextscintillaapis.cxx, qt/qextscintillaapis.h,\n\tqt/qextscintillalexer.cxx, qt/qextscintillalexer.h,\n\tqt/qextscintillalexerpython.cxx, qt/qextscintillalexerpython.h:\n\tHandle Key_Enter the same as Key_Return. QextScintilla::foldAll()\n\tcan now optionally fold all child fold points. Added\n\tautoCompleteFromAll() and setAutoCompletionStartCharacters() to\n\tQextScintilla. Vastly improved the way auto-completion and call tips\n\twork.\n\t[8b0472aaed61]\n\n2006-06-25  phil  <phil>\n\n\t* qt/qextscintilla.cxx, qt/qextscintillabase.cxx,\n\tqt/qextscintillalexer.cxx:\n\tThe default fore and background colours now default to the\n\tapplication palette rather than being hardcoded to black and white.\n\t[6cb6b5bef5fc]\n\n\t* NEWS, qt/qextscintilla.cxx, qt/qextscintilla.h,\n\tqt/qextscintillalexer.cxx, qt/qextscintillalexer.h:\n\tAdded defaultColor() and setDefaultColor() to QextScintillaLexer.\n\tAdded color() and setColor() to QextScintilla. Renamed eraseColor()\n\tand setEraseColor() to paper() and setPaper() in QextScintilla.\n\t[c1fbfc192235]\n\n\t* NEWS, qt/SciListBox.cxx, qt/qextscintilla.cxx, qt/qextscintilla.h,\n\tqt/qextscintillaapis.cxx, qt/qextscintillaapis.h,\n\tqt/qextscintillabase.h, qt/qextscintillalexer.cxx,\n\tqt/qextscintillalexer.h:\n\tAdded a couple of extra SendScintilla overloads. One is needed for\n\tPyQt because of the change in SIP's handling of unsigned values. The\n\tother is needed to solve C++ problems caused by the first.\n\tAutocompletion list entries from APIs may now contain spaces. Added\n\tdefaultPaper() and setDefaultPaper() to QextScintillaLexer. Added\n\teraseColor() and setEraseColor() to QextScintilla.\n\t[34f527ca0f99]\n\n2006-06-21  phil  <phil>\n\n\t* qt/qextscintilla.cxx, qt/qextscintillalexer.cxx,\n\tqt/qextscintillalexer.h, qt/qextscintillalexerhtml.cxx,\n\tqt/qextscintillalexerhtml.h:\n\tRemoved QextScintillaLexer::styleBits() now that\n\tSCI_GETSTYLEBITSNEEDED is available.\n\t[1c6837500560]\n\n\t* NEWS, qt/PlatQt.cxx, qt/qextscintilla.cxx, qt/qextscintilla.h:\n\tQextScintilla::setSelectionBackgroundColor(),\n\tQextScintilla::setMarkerBackgroundColor() and\n\tQextScintilla::setCaretLineBackgroundColor() now respect the alpha\n\tcomponent.\n\t[48bae1fffe85]\n\n2006-06-20  phil  <phil>\n\n\t* NEWS, doc/ScintillaDoc.html, doc/ScintillaDownload.html,\n\tdoc/ScintillaHistory.html, doc/index.html, gtk/Converter.h,\n\tgtk/PlatGTK.cxx, gtk/ScintillaGTK.cxx, include/Scintilla.h,\n\tinclude/Scintilla.iface, qt/qextscintillabase.h,\n\tqt/qextscintillalexerpython.h, src/Editor.cxx, src/Editor.h,\n\tsrc/ViewStyle.cxx, src/ViewStyle.h, version.txt, win32/ScintRes.rc,\n\twin32/ScintillaWin.cxx:\n\tMerged Scintilla v1.70.\n\t[03ac3edd5dd2]\n\n2006-06-19  phil  <phil>\n\n\t* qt/qextscintillabase.h, qt/qextscintillalexerlua.h,\n\tqt/qextscintillalexerruby.cxx, qt/qextscintillalexerruby.h,\n\tqt/qextscintillalexersql.h:\n\tSignificant, and incompatible, updates to the QextScintillaLexerRuby\n\tclass.\n\t[0484fe132d0c]\n\n\t* src/PropSet.cxx:\n\tFix for qsort helpers linkage from Ulli. (Patch sent upstream.)\n\t[2307adf67045]\n\n2006-06-18  phil  <phil>\n\n\t* qt/qextscintillalexerpython.cxx, qt/qextscintillalexerpython.h:\n\tCtrl-D is now duplicate selection rather than duplicate line.\n\tUpdated the Python lexer to add support for hightlighted identifiers\n\tand decorators.\n\t[52ca24a722ac]\n\n\t* qt/qextscintillabase.h, qt/qextscintillacommandset.cxx,\n\tqt/qextscintillalexer.h, qt/qextscintillalexerbash.h,\n\tqt/qextscintillalexerbatch.h, qt/qextscintillalexercpp.h,\n\tqt/qextscintillalexercsharp.h, qt/qextscintillalexercss.h,\n\tqt/qextscintillalexerhtml.h, qt/qextscintillalexeridl.h,\n\tqt/qextscintillalexerjava.h, qt/qextscintillalexerjavascript.h,\n\tqt/qextscintillalexerlua.h, qt/qextscintillalexerperl.h,\n\tqt/qextscintillalexerpov.h, qt/qextscintillalexerpython.h,\n\tqt/qextscintillalexerruby.h, qt/qextscintillalexersql.h,\n\tqt/qextscintillalexertex.h, qt/qscintilla.pro:\n\tAdded the Scintilla 1.69 extensions to the low level API.\n\t[e89b98aaaa33]\n\n\t* .repoman, build.py, doc/Icons.html, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/ScintillaRelated.html, doc/ScintillaToDo.html, doc/index.html,\n\tgtk/PlatGTK.cxx, gtk/ScintillaGTK.cxx, gtk/deps.mak, gtk/makefile,\n\tgtk/scintilla.mak, include/HFacer.py, include/KeyWords.h,\n\tinclude/Platform.h, include/PropSet.h, include/SciLexer.h,\n\tinclude/Scintilla.h, include/Scintilla.iface,\n\tinclude/ScintillaWidget.h, qt/PlatQt.cxx, qt/ScintillaQt.h,\n\tqt/qscintilla.pro, src/CallTip.cxx, src/CallTip.h,\n\tsrc/CellBuffer.cxx, src/CellBuffer.h, src/CharClassify.cxx,\n\tsrc/CharClassify.h, src/ContractionState.cxx, src/Document.cxx,\n\tsrc/Document.h, src/DocumentAccessor.cxx, src/Editor.cxx,\n\tsrc/Editor.h, src/ExternalLexer.cxx, src/Indicator.cxx,\n\tsrc/KeyMap.cxx, src/KeyWords.cxx, src/LexAU3.cxx, src/LexBash.cxx,\n\tsrc/LexBasic.cxx, src/LexCPP.cxx, src/LexCaml.cxx,\n\tsrc/LexCsound.cxx, src/LexEiffel.cxx, src/LexGen.py,\n\tsrc/LexGui4Cli.cxx, src/LexHTML.cxx, src/LexInno.cxx,\n\tsrc/LexLua.cxx, src/LexMSSQL.cxx, src/LexOpal.cxx,\n\tsrc/LexOthers.cxx, src/LexPOV.cxx, src/LexPython.cxx,\n\tsrc/LexRuby.cxx, src/LexSQL.cxx, src/LexSpice.cxx, src/LexTCL.cxx,\n\tsrc/LexVB.cxx, src/LineMarker.h, src/PropSet.cxx, src/RESearch.cxx,\n\tsrc/RESearch.h, src/ScintillaBase.cxx, src/StyleContext.h,\n\tsrc/ViewStyle.cxx, src/ViewStyle.h, src/XPM.cxx,\n\tvcbuild/SciLexer.dsp, version.txt, win32/PlatWin.cxx,\n\twin32/ScintRes.rc, win32/ScintillaWin.cxx, win32/deps.mak,\n\twin32/makefile, win32/scintilla.mak, win32/scintilla_vc6.mak:\n\tRemoved the redundant .repoman file. Synced with Scintilla v1.69\n\twith only the minimal changes needed to compile it.\n\t[6774f137c5a1]\n\n2006-06-17  phil  <phil>\n\n\t* .repoman, License.txt, Makefile, NEWS, README, TODO, bin/empty.txt,\n\tbuild.py, delbin.bat, delcvs.bat, designer/designer.pro,\n\tdesigner/qscintillaplugin.cpp, doc/Design.html, doc/Lexer.txt,\n\tdoc/SciBreak.jpg, doc/SciCoding.html, doc/SciRest.jpg,\n\tdoc/SciTEIco.png, doc/SciWord.jpg, doc/ScintillaDoc.html,\n\tdoc/ScintillaDownload.html, doc/ScintillaHistory.html,\n\tdoc/ScintillaRelated.html, doc/ScintillaToDo.html,\n\tdoc/ScintillaUsage.html, doc/Steps.html, doc/index.html,\n\texample/README, example/application.cpp, example/application.h,\n\texample/application.pro, example/fileopen.xpm,\n\texample/fileprint.xpm, example/filesave.xpm, example/main.cpp,\n\tgtk/Converter.h, gtk/PlatGTK.cxx, gtk/ScintillaGTK.cxx,\n\tgtk/deps.mak, gtk/makefile, gtk/scintilla-marshal.c, gtk/scintilla-\n\tmarshal.h, gtk/scintilla-marshal.list, gtk/scintilla.mak,\n\tinclude/Accessor.h, include/Face.py, include/HFacer.py,\n\tinclude/KeyWords.h, include/Platform.h, include/PropSet.h,\n\tinclude/SString.h, include/SciLexer.h, include/Scintilla.h,\n\tinclude/Scintilla.iface, include/ScintillaWidget.h,\n\tinclude/WindowAccessor.h, lib/LICENSE.commercial,\n\tlib/LICENSE.commercial.short, lib/LICENSE.edu,\n\tlib/LICENSE.edu.short, lib/LICENSE.gpl, lib/LICENSE.gpl.short,\n\tlib/README, lib/README.MacOS, lib/qscintilla.dxy, qt/PlatQt.cxx,\n\tqt/SciListBox.cxx, qt/SciListBox.h, qt/ScintillaQt.cxx,\n\tqt/ScintillaQt.h, qt/qextscintilla.cxx, qt/qextscintilla.h,\n\tqt/qextscintillaapis.cxx, qt/qextscintillaapis.h,\n\tqt/qextscintillabase.cxx, qt/qextscintillabase.h,\n\tqt/qextscintillacommand.cxx, qt/qextscintillacommand.h,\n\tqt/qextscintillacommandset.cxx, qt/qextscintillacommandset.h,\n\tqt/qextscintilladocument.cxx, qt/qextscintilladocument.h,\n\tqt/qextscintillaglobal.h, qt/qextscintillalexer.cxx,\n\tqt/qextscintillalexer.h, qt/qextscintillalexerbash.cxx,\n\tqt/qextscintillalexerbash.h, qt/qextscintillalexerbatch.cxx,\n\tqt/qextscintillalexerbatch.h, qt/qextscintillalexercpp.cxx,\n\tqt/qextscintillalexercpp.h, qt/qextscintillalexercsharp.cxx,\n\tqt/qextscintillalexercsharp.h, qt/qextscintillalexercss.cxx,\n\tqt/qextscintillalexercss.h, qt/qextscintillalexerdiff.cxx,\n\tqt/qextscintillalexerdiff.h, qt/qextscintillalexerhtml.cxx,\n\tqt/qextscintillalexerhtml.h, qt/qextscintillalexeridl.cxx,\n\tqt/qextscintillalexeridl.h, qt/qextscintillalexerjava.cxx,\n\tqt/qextscintillalexerjava.h, qt/qextscintillalexerjavascript.cxx,\n\tqt/qextscintillalexerjavascript.h, qt/qextscintillalexerlua.cxx,\n\tqt/qextscintillalexerlua.h, qt/qextscintillalexermakefile.cxx,\n\tqt/qextscintillalexermakefile.h, qt/qextscintillalexerperl.cxx,\n\tqt/qextscintillalexerperl.h, qt/qextscintillalexerpov.cxx,\n\tqt/qextscintillalexerpov.h, qt/qextscintillalexerproperties.cxx,\n\tqt/qextscintillalexerproperties.h, qt/qextscintillalexerpython.cxx,\n\tqt/qextscintillalexerpython.h, qt/qextscintillalexerruby.cxx,\n\tqt/qextscintillalexerruby.h, qt/qextscintillalexersql.cxx,\n\tqt/qextscintillalexersql.h, qt/qextscintillalexertex.cxx,\n\tqt/qextscintillalexertex.h, qt/qextscintillamacro.cxx,\n\tqt/qextscintillamacro.h, qt/qextscintillaprinter.cxx,\n\tqt/qextscintillaprinter.h, qt/qscintilla.pro, qt/qscintilla_de.qm,\n\tqt/qscintilla_de.ts, qt/qscintilla_fr.qm, qt/qscintilla_fr.ts,\n\tqt/qscintilla_ptbr.qm, qt/qscintilla_ptbr.ts, qt/qscintilla_ru.qm,\n\tqt/qscintilla_ru.ts, src/AutoComplete.cxx, src/AutoComplete.h,\n\tsrc/CallTip.cxx, src/CallTip.h, src/CellBuffer.cxx,\n\tsrc/CellBuffer.h, src/ContractionState.cxx, src/ContractionState.h,\n\tsrc/Document.cxx, src/Document.h, src/DocumentAccessor.cxx,\n\tsrc/DocumentAccessor.h, src/Editor.cxx, src/Editor.h,\n\tsrc/ExternalLexer.cxx, src/ExternalLexer.h, src/Indicator.cxx,\n\tsrc/Indicator.h, src/KeyMap.cxx, src/KeyMap.h, src/KeyWords.cxx,\n\tsrc/LexAPDL.cxx, src/LexAU3.cxx, src/LexAVE.cxx, src/LexAda.cxx,\n\tsrc/LexAsm.cxx, src/LexAsn1.cxx, src/LexBaan.cxx, src/LexBash.cxx,\n\tsrc/LexBasic.cxx, src/LexBullant.cxx, src/LexCLW.cxx,\n\tsrc/LexCPP.cxx, src/LexCSS.cxx, src/LexCaml.cxx, src/LexConf.cxx,\n\tsrc/LexCrontab.cxx, src/LexCsound.cxx, src/LexEScript.cxx,\n\tsrc/LexEiffel.cxx, src/LexErlang.cxx, src/LexFlagship.cxx,\n\tsrc/LexForth.cxx, src/LexFortran.cxx, src/LexGen.py,\n\tsrc/LexGui4Cli.cxx, src/LexHTML.cxx, src/LexHaskell.cxx,\n\tsrc/LexKix.cxx, src/LexLisp.cxx, src/LexLout.cxx, src/LexLua.cxx,\n\tsrc/LexMMIXAL.cxx, src/LexMPT.cxx, src/LexMSSQL.cxx,\n\tsrc/LexMatlab.cxx, src/LexMetapost.cxx, src/LexNsis.cxx,\n\tsrc/LexOthers.cxx, src/LexPB.cxx, src/LexPOV.cxx, src/LexPS.cxx,\n\tsrc/LexPascal.cxx, src/LexPerl.cxx, src/LexPython.cxx,\n\tsrc/LexRebol.cxx, src/LexRuby.cxx, src/LexSQL.cxx,\n\tsrc/LexScriptol.cxx, src/LexSmalltalk.cxx, src/LexSpecman.cxx,\n\tsrc/LexTADS3.cxx, src/LexTeX.cxx, src/LexVB.cxx, src/LexVHDL.cxx,\n\tsrc/LexVerilog.cxx, src/LexYAML.cxx, src/LineMarker.cxx,\n\tsrc/LineMarker.h, src/PropSet.cxx, src/RESearch.cxx, src/RESearch.h,\n\tsrc/SVector.h, src/SciTE.properties, src/ScintillaBase.cxx,\n\tsrc/ScintillaBase.h, src/Style.cxx, src/Style.h,\n\tsrc/StyleContext.cxx, src/StyleContext.h, src/UniConversion.cxx,\n\tsrc/UniConversion.h, src/ViewStyle.cxx, src/ViewStyle.h,\n\tsrc/WindowAccessor.cxx, src/XPM.cxx, src/XPM.h, tgzsrc,\n\tvcbuild/SciLexer.dsp, version.txt, win32/Margin.cur,\n\twin32/PlatWin.cxx, win32/PlatformRes.h, win32/SciTE.properties,\n\twin32/ScintRes.rc, win32/Scintilla.def, win32/ScintillaWin.cxx,\n\twin32/deps.mak, win32/makefile, win32/scintilla.mak,\n\twin32/scintilla_vc6.mak, zipsrc.bat:\n\tFirst import of QScintilla\n\t[0521804cd44a]\n"
  },
  {
    "path": "old/3rdpart/qscintilla/LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n"
  },
  {
    "path": "old/3rdpart/qscintilla/NEWS",
    "content": "v2.10 20th February 2017\n  - Based on Scintilla v3.7.2.\n  - Added the QsciLexerJSON class.\n  - Added the QsciLexerMarkdown class.\n  - Added replaceHorizontalScrollBar() and replaceVerticalScrollBar() to\n    QsciScintillaBase.\n  - Added bytes() and a corresponding text() overload to QsciScintilla.\n  - Added EdgeMultipleLines to QsciScintilla::EdgeMode.\n  - Added addEdgeColumn() and clearEdgeColumns() to QsciScintilla.\n  - Added the marginRightClicked() signal to QsciScintilla.\n  - Added SymbolMarginColor to QsciScintilla::MarginType.\n  - Added setMarginBackgroundColor() and marginBackgroundColor() to\n    QsciScintilla.\n  - Added setMargins() and margins() to QsciScintilla.\n  - Added TriangleIndicator and TriangleCharacterIndicator to\n    QsciScintilla::IndicatorStyle.\n  - Added WsVisibleOnlyInIndent to QsciScintilla::WhitespaceVisibility.\n  - Added TabDrawMode, setTabDrawMode() and tabDrawMode() to QsciScintilla.\n  - Added InstanceProperty to QsciLexerCoffeeScript.\n  - Added EDGE_MULTILINE to QsciScintillaBase.\n  - Added INDIC_POINT and INDIC_POINTCHARACTER to QsciScintillaBase.\n  - Added SC_AC_FILLUP, SC_AC_DOUBLECLICK, SC_AC_TAB, SC_AC_NEWLINE and\n    SC_AC_COMMAND to QsciScintillaBase.\n  - Added SC_CASE_CAMEL to QsciScintillaBase.\n  - Added SC_CHARSET_CYRILLIC and SC_CHARSET_OEM866 to QsciScintillaBase.\n  - Added SC_FOLDDISPLAYTEXT_HIDDEN, SC_FOLDDISPLAYTEXT_STANDARD and\n    SC_FOLDDISPLAYTEXT_BOXED to QsciScintillaBase.\n  - Added SC_IDLESTYLING_NONE, SC_IDLESTYLING_TOVISIBLE,\n    SC_IDLESTYLING_AFTERVISIBLE and SC_IDLESTYLING_ALL to QsciScintillaBase.\n  - Added SC_MARGIN_COLOUR to QsciScintillaBase.\n  - Added SC_POPUP_NEVER, SC_POPUP_ALL and SC_POPUP_TEXT to QsciScintillaBase.\n  - Added SCI_FOLDDISPLAYTEXTSETSTYLE and SCI_TOGGLEFOLDSHOWTEXT to\n    QsciScintillaBase.\n  - Added SCI_GETIDLESTYLING and SCI_SETIDLESTYLING to QsciScintillaBase.\n  - Added SCI_GETMARGINBACKN and SCI_SETMARGINBACKN to QsciScintillaBase.\n  - Added SCI_GETMARGINS and SCI_SETMARGINS to QsciScintillaBase.\n  - Added SCI_GETMOUSEWHEELCAPTURES and SCI_SETMOUSEWHEELCAPTURES to\n    QsciScintillaBase.\n  - Added SCI_GETTABDRAWMODE and SCI_SETTABDRAWMODE to QsciScintillaBase.\n  - Added SCI_ISRANGEWORD to QsciScintillaBase.\n  - Added SCI_MULTIEDGEADDLINE and SCI_MULTIEDGECLEARALL to QsciScintillaBase.\n  - Added SCI_MULTIPLESELECTADDNEXT and SCI_MULTIPLESELECTADDEACH to\n    QsciScintillaBase.\n  - Added SCI_TARGETWHOLEDOCUMENT to QsciScintillaBase.\n  - Added SCLEX_JSON and SCLEX_EDIFACT to QsciScintillaBase.\n  - Added SCTD_LONGARROW and SCTD_STRIKEOUT to QsciScintillaBase.\n  - Added SCVS_NOWRAPLINESTART to QsciScintillaBase.\n  - Added SCWS_VISIBLEONLYININDENT to QsciScintillaBase.\n  - Added STYLE_FOLDDISPLAYTEXT to QsciScintillaBase.\n  - Added the SCN_AUTOCCOMPLETED() signal to QsciScintillaBase.\n  - Added the overloaded SCN_AUTOCSELECTION() and SCN_USERLISTSELECTION()\n    signals to QsciScintillaBase.\n  - Added the SCN_MARGINRIGHTCLICK() signal to QsciScintillaBase.\n  - Renamed SCI_GETTARGETRANGE to SCI_GETTARGETTEXT in QsciScintillaBase.\n  - Removed SCI_GETKEYSUNICODE and SCI_SETKEYSUNICODE to QsciScintillaBase.\n  - The autoCompletionFillups(), autoCompletionWordSeparators(), blockEnd(),\n    blockLookback(), blockStart(), blockStartKeyword(), braceStyle(),\n    caseSensitive(), indentationGuideView() and defaultStyle() methods of\n    QsciLexer are no longer marked as internal and are exposed to Python so\n    that they may be used by QsciLexerCustom sub-classes.\n  - The name of the library has been changed to include the major version\n    number of the version of Qt it is built against (ie. 4 or 5).\n\nv2.9.4 25th December 2016\n  - Added the .api file for Python v3.6.\n  - Bug fixes.\n\nv2.9.3 25th July 2016\n  - Bug fixes.\n\nv2.9.2 18th April 2016\n  - Added support for a PEP 484 stub file for the Python extension module.\n\nv2.9.1 24th October 2015\n  - Added the .api file for Python v3.5.\n  - Bug fixes.\n\nv2.9 20th April 2015\n  - Based on Scintilla v3.5.4.\n  - Added UserLiteral, InactiveUserLiteral, TaskMarker, InactiveTaskMarker,\n    EscapeSequence, InactiveEscapeSequence, setHighlightBackQuotedStrings(),\n    highlightBackQuotedStrings(), setHighlightEscapeSequences(),\n    highlightEscapeSequences(), setVerbatimStringEscapeSequencesAllowed() and\n    verbatimStringEscapeSequencesAllowed() to QsciLexerCPP.\n  - Added CommentKeyword, DeclareInputPort, DeclareOutputPort,\n    DeclareInputOutputPort, PortConnection and the inactive versions of all\n    styles to QsciLexerVerilog.\n  - Added CommentBlock to QsciLexerVHDL.\n  - Added AnnotationIndented to QsciScintilla::AnnotationDisplay.\n  - Added FullBoxIndicator, ThickCompositionIndicator, ThinCompositionIndicator\n    and TextColorIndicator to QsciScintilla::IndicatorStyle.\n  - Added setIndicatorHoverForegroundColor() and setIndicatorHoverStyle() to\n    QsciScintilla.\n  - Added Bookmark to QsciScintilla::MarkerSymbol.\n  - Added WrapWhitespace to QsciScintilla::WrapMode.\n  - Added SCLEX_AS, SCLEX_BIBTEX, SCLEX_DMAP, SCLEX_DMIS, SCLEX_IHEX,\n    SCLEX_REGISTRY, SCLEX_SREC and SCLEX_TEHEX to QsciScintillaBase.\n  - Added SCI_CHANGEINSERTION to QsciScintillaBase.\n  - Added SCI_CLEARTABSTOPS, SCI_ADDTABSTOP and SCI_GETNEXTTABSTOP to\n    QsciScintillaBase.\n  - Added SCI_GETIMEINTERACTION, SCI_SETIMEINTERACTION, SC_IME_WINDOWED and\n    SC_IME_INLINE to QsciScintillaBase.\n  - Added SC_MARK_BOOKMARK to QsciScintillaBase.\n  - Added INDIC_COMPOSITIONTHIN, INDIC_FULLBOX, INDIC_TEXTFORE, INDIC_IME,\n    INDIC_IME_MAX, SC_INDICVALUEBIT, SC_INDICVALUEMASK,\n    SC_INDICFLAG_VALUEBEFORE, SCI_INDICSETHOVERSTYLE, SCI_INDICGETHOVERSTYLE,\n    SCI_INDICSETHOVERFORE, SCI_INDICGETHOVERFORE, SCI_INDICSETFLAGS and\n    SCI_INDICGETFLAGS to QsciScintillaBase.\n  - Added SCI_SETTARGETRANGE and SCI_GETTARGETRANGE to QsciScintillaBase.\n  - Added SCFIND_CXX11REGEX to QsciScintillaBase.\n  - Added SCI_CALLTIPSETPOSSTART to QsciScintillaBase.\n  - Added SC_FOLDFLAG_LINESTATE to QsciScintillaBase.\n  - Added SC_WRAP_WHITESPACE to QsciScintillaBase.\n  - Added SC_PHASES_ONE, SC_PHASES_TWO, SC_PHASES_MULTIPLE, SCI_GETPHASESDRAW\n    and SCI_SETPHASESDRAW to QsciScintillaBase.\n  - Added SC_STATUS_OK, SC_STATUS_FAILURE, SC_STATUS_BADALLOC,\n    SC_STATUS_WARN_START and SC_STATUS_WARNREGEX to QsciScintillaBase.\n  - Added SC_MULTIAUTOC_ONCE, SC_MULTIAUTOC_EACH, SCI_AUTOCSETMULTI and\n    SCI_AUTOCGETMULTI to QsciScintillaBase.\n  - Added ANNOTATION_INDENTED to QsciScintillaBase.\n  - Added SCI_DROPSELECTIONN to QsciScintillaBase.\n  - Added SC_TECHNOLOGY_DIRECTWRITERETAIN and SC_TECHNOLOGY_DIRECTWRITEDC to\n    QsciScintillaBase.\n  - Added SC_LINE_END_TYPE_DEFAULT, SC_LINE_END_TYPE_UNICODE,\n    SCI_GETLINEENDTYPESSUPPORTED, SCI_SETLINEENDTYPESALLOWED,\n    SCI_GETLINEENDTYPESALLOWED and SCI_GETLINEENDTYPESACTIVE to\n    QsciScintillaBase.\n  - Added SCI_ALLOCATESUBSTYLES, SCI_GETSUBSTYLESSTART, SCI_GETSUBSTYLESLENGTH,\n    SCI_GETSTYLEFROMSUBSTYLE, SCI_GETPRIMARYSTYLEFROMSTYLE, SCI_FREESUBSTYLES,\n    SCI_SETIDENTIFIERS, SCI_DISTANCETOSECONDARYSTYLES and SCI_GETSUBSTYLEBASES\n    to QsciScintillaBase.\n  - Added SC_MOD_INSERTCHECK and SC_MOD_CHANGETABSTOPS to QsciScintillaBase.\n  - Qt v3 and PyQt v3 are no longer supported.\n\nv2.8.4 11th September 2014\n  - Added setHotspotForegroundColor(), resetHotspotForegroundColor(),\n    setHotspotBackgroundColor(), resetHotspotBackgroundColor(),\n    setHotspotUnderline() and setHotspotWrap() to QsciScintilla.\n  - Added SCI_SETHOTSPOTSINGLELINE to QsciScintillaBase.\n  - Bug fixes.\n\nv2.8.3 3rd July 2014\n  - Added the QsciLexerCoffeeScript class.\n  - Font sizes are now handled as floating point values rather than integers.\n  - Bug fixes.\n\nv2.8.2 26th May 2014\n  - Added the QsciLexerAVS class.\n  - Added the QsciLexerPO class.\n  - Added the --sysroot, --no-sip-files and --no-qsci-api options to the Python\n    bindings' configure.py.\n  - Cross-compilation (specifically to iOS and Android) is now supported.\n  - configure.py has been refactored and relicensed so that it can be used as a\n    template for wrapping other bindings.\n  - Bug fixes.\n\nv2.8.1 14th March 2014\n  - Added support for iOS and Android.\n  - Added support for retina displays.\n  - A qscintilla2.prf file is installed so that application .pro files only\n    need to add CONFIG += qscintilla2.\n  - Updated the keywords recognised by the Octave lexer.\n  - Bug fixes.\n\nv2.8 9th November 2013\n  - Based on Scintilla v3.3.6.\n  - Added the SCN_FOCUSIN() and SCN_FOCUSOUT() signals to QsciScintillaBase.\n  - Added PreProcessorCommentLineDoc and InactivePreProcessorCommentLineDoc to\n    QsciLexerCPP.\n  - Added SCLEX_LITERATEHASKELL, SCLEX_KVIRC, SCLEX_RUST and SCLEX_STTXT to\n    QsciScintillaBase.\n  - Added ThickCompositionIndicator to QsciScintilla::IndicatorStyle.\n  - Added INDIC_COMPOSITIONTHICK to QsciScintillaBase.\n  - Added SC_FOLDACTION_CONTRACT, SC_FOLDACTION_EXPAND and SC_FOLDACTION_TOGGLE\n    to QsciScintillaBase.\n  - Added SCI_FOLDLINE, SCI_FOLDCHILDREN, SCI_EXPANDCHILDREN and SCI_FOLDALL to\n    QsciScintillaBase.\n  - Added SC_AUTOMATICFOLD_SHOW, SC_AUTOMATICFOLD_CLICK and\n    SC_AUTOMATICFOLD_CHANGE to QsciScintillaBase.\n  - Added SCI_SETAUTOMATICFOLD and SCI_GETAUTOMATICFOLD to QsciScintillaBase.\n  - Added SC_ORDER_PRESORTED, SC_ORDER_PERFORMSORT and SC_ORDER_CUSTOM to\n    QsciScintillaBase.\n  - Added SCI_AUTOCSETORDER and SCI_AUTOCGETORDER to QsciScintillaBase.\n  - Added SCI_POSITIONRELATIVE to QsciScintillaBase.\n  - Added SCI_RELEASEALLEXTENDEDSTYLES and SCI_ALLOCATEEXTENDEDSTYLES to\n    QsciScintillaBase.\n  - Added SCI_SCROLLRANGE to QsciScintillaBase.\n  - Added SCI_SETCARETLINEVISIBLEALWAYS and SCI_GETCARETLINEVISIBLEALWAYS to\n    QsciScintillaBase.\n  - Added SCI_SETMOUSESELECTIONRECTANGULARSWITCH and\n    SCI_GETMOUSESELECTIONRECTANGULARSWITCH to QsciScintillaBase.\n  - Added SCI_SETREPRESENTATION, SCI_GETREPRESENTATION and\n    SCI_CLEARREPRESENTATION to QsciScintillaBase.\n  - Input methods are now properly supported.\n\nv2.7.2 16th June 2013\n  - The build script for the Python bindings now has a --pyqt argument for\n    specifying PyQt4 or PyQt5.\n  - The default EOL mode on OS/X is now EolUnix.\n  - Bug fixes.\n\nv2.7.1 1st March 2013\n  - Added support for the final release of Qt v5.\n  - The build script for the Python bindings should now work with SIP v5.\n  - Bug fixes.\n\nv2.7 8th December 2012\n  - Based on Scintilla v3.2.3.\n  - Added support for Qt v5-rc1.\n  - Added HashQuotedString, InactiveHashQuotedString, PreProcessorComment,\n    InactivePreProcessorComment, setHighlightHashQuotedStrings() and\n    highlightHashQuotedStrings() to QsciLexerCpp.\n  - Added Variable, setHSSLanguage(), HSSLanguage(), setLessLanguage(),\n    LessLanguage(), setSCCSLanguage() and SCCSLanguage() to QsciLexerCSS.\n  - Added setOverwriteMode() and overwriteMode() to QsciScintilla.\n  - Added wordAtLineIndex() to QsciScintilla.\n  - Added findFirstInSelection() to QsciScintilla.\n  - Added CallTipsPosition, callTipsPosition() and setCallTipsPosition() to\n    QsciScintilla.\n  - Added WrapFlagInMargin to QsciScintilla::WrapVisualFlag.\n  - Added SquigglePixmapIndicator to QsciScintilla::IndicatorStyle.\n  - The weight of a font (rather than whether it is just bold or not) is now\n    respected.\n  - Added SCLEX_AVS, SCLEX_COFFEESCRIPT, SCLEX_ECL, SCLEX_OSCRIPT,\n    SCLEX_TCMD and SCLEX_VISUALPROLOG to QsciScintillaBase.\n  - Added SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE and\n    SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE to QsciScintillaBase.\n  - Added SC_FONT_SIZE_MULTIPLIER to QsciScintillaBase.\n  - Added SC_WEIGHT_NORMAL, SC_WEIGHT_SEMIBOLD and SC_WEIGHT_BOLD to\n    QsciScintillaBase.\n  - Added SC_WRAPVISUALFLAG_MARGIN to QsciScintillaBase.\n  - Added INDIC_SQUIGGLEPIXMAP to QsciScintillaBase.\n  - Added SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR,\n    SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR, SCI_CALLTIPSETPOSITION,\n    SCI_COUNTCHARACTERS, SCI_CREATELOADER, SCI_DELETERANGE,\n    SCI_FINDINDICATORFLASH, SCI_FINDINDICATORHIDE, SCI_FINDINDICATORSHOW,\n    SCI_GETALLLINESVISIBLE, SCI_GETGAPPOSITION, SCI_GETPUNCTUATIONCHARS,\n    SCI_GETRANGEPOINTER, SCI_GETSELECTIONEMPTY, SCI_GETTECHNOLOGY,\n    SCI_GETWHITESPACECHARS, SCI_GETWORDCHARS, SCI_RGBAIMAGESETSCALE,\n    SCI_SETPUNCTUATIONCHARS, SCI_SETTECHNOLOGY, SCI_STYLESETSIZEFRACTIONAL,\n    SCI_STYLEGETSIZEFRACTIONAL, SCI_STYLESETWEIGHT and SCI_STYLEGETWEIGHT to\n    QsciScintillaBase.\n  - Removed SCI_GETUSEPALETTE and SCI_SETUSEPALETTE from QsciScintillaBase.\n  - Bug fixes.\n\nv2.6.2 20th June 2012\n  - Added support for Qt v5-alpha.\n  - QsciLexer::wordCharacters() is now part of the public API.\n  - Bug fixes.\n\nv2.6.1 10th February 2012\n  - Support SCI_NAMESPACE to enable all internal Scintilla classes to be put\n    into the Scintilla namespace.\n  - APIs now allow for spaces between the end of a word and the opening\n    parenthesis.\n  - Building against Qt v3 is fixed.\n\nv2.6 11th November 2011\n  - Based on Scintilla v2.29.\n  - Added Command, command() and execute() to QsciCommand.\n  - Added boundTo() and find() to QsciCommandSet.\n  - Added createStandardContextMenu() to QsciScintilla.\n  - Added StraightBoxIndicator, DashesIndicator, DotsIndicator,\n    SquiggleLowIndicator and DotBoxIndicator to QsciScintilla::IndicatorStyle.\n  - Added markerDefine() to QsciScintilla.\n  - Added MoNone, MoSublineSelect, marginOptions() and setMarginOptions() to\n    QsciScintilla.\n  - Added registerImage() to QsciScintilla.\n  - Added setIndicatorOutlineColor() to QsciScintilla.\n  - Added setMatchedBraceIndicator(), resetMatchedBraceIndicator(),\n    setUnmatchedBraceIndicator() and resetUnmatchedBraceIndicator() to\n    QsciScintilla.\n  - Added highlightTripleQuotedStrings() and setHighlightTripleQuotedStrings()\n    to QsciLexerCpp.\n  - Added Label to QsciLexerLua.\n  - Added DoubleQuotedStringVar, Translation, RegexVar, SubstitutionVar,\n    BackticksVar, DoubleQuotedHereDocumentVar, BacktickHereDocumentVar,\n    QuotedStringQQVar, QuotedStringQXVar, QuotedStringQRVar, setFoldAtElse()\n    and foldAtElse() to QsciLexerPerl.\n  - Added highlightSubidentifiers() and setHighlightSubidentifiers() to\n    QsciLexerPython.\n  - Added INDIC_STRAIGHTBOX, INDIC_DASH, INDIC_DOTS, INDIC_SQUIGGLELOW and\n    INDIC_DOTBOX to QsciScintillaBase.\n  - Added SC_MARGINOPTION_NONE and SC_MARGINOPTION_SUBLINESELECT to\n    QsciScintillaBase.\n  - Added SC_MARK_RGBAIMAGE to QsciScintillaBase.\n  - Added SCI_BRACEBADLIGHTINDICATOR, SCI_BRACEHIGHLIGHTINDICATOR,\n    SCI_GETIDENTIFIER, SCI_GETMARGINOPTIONS, SCI_INDICGETOUTLINEALPHA,\n    SCI_INDICSETOUTLINEALPHA, SCI_MARKERDEFINERGBAIMAGE,\n    SCI_MARKERENABLEHIGHLIGHT, SCI_MARKERSETBACKSELECTED,\n    SCI_MOVESELECTEDLINESDOWN, SCI_MOVESELECTEDLINESUP, SCI_REGISTERRGBAIMAGE,\n    SCI_RGBAIMAGESETHEIGHT, SCI_RGBAIMAGESETWIDTH, SCI_SCROLLTOEND,\n    SCI_SCROLLTOSTART, SCI_SETEMPTYSELECTION, SCI_SETIDENTIFIER and\n    SCI_SETMARGINOPTIONS to QsciScintillaBase.\n\nv2.5.1 17th April 2011\n  - Added QsciLexerMatlab and QsciLexerOctave.\n\nv2.5 29th March 2011\n  - Based on Scintilla v2.25.\n  - Rectangular selections are now fully supported and compatible with SciTE.\n  - The signature of the fromMimeData() and toMimeData() methods of\n    QsciScintillaBase have changed incompatibly in order to support rectangular\n    selections.\n  - Added QsciScintilla::setAutoCompletionUseSingle() to replace the now\n    deprecated setAutoCompletionShowSingle().\n  - Added QsciScintilla::autoCompletionUseSingle() to replace the now\n    deprecated autoCompletionShowSingle().\n  - QsciScintilla::setAutoCompletionCaseSensitivity() is no longer ignored if a\n    lexer has been set.\n  - Added FullRectangle, LeftRectangle and Underline to the\n    QsciScintilla::MarkerSymbol enum.\n  - Added setExtraAscent(), extraAscent(), setExtraDescent() and extraDescent()\n    to QsciScintilla.\n  - Added setWhitespaceSize() and whitespaceSize() to QsciScintilla.\n  - Added replaceSelectedText() to QsciScintilla.\n  - Added setWhitespaceBackgroundColor() and setWhitespaceForegroundColor() to\n    QsciScintilla.\n  - Added setWrapIndentMode() and wrapIndentMode() to QsciScintilla.\n  - Added setFirstVisibleLine() to QsciScintilla.\n  - Added setContractedFolds() and contractedFolds() to QsciScintilla.\n  - Added the SCN_HOTSPOTRELEASECLICK() signal to QsciScintillaBase.\n  - The signature of the QsciScintillaBase::SCN_UPDATEUI() signal has changed.\n  - Added the RawString and inactive styles to QsciLexerCPP.\n  - Added MediaRule to QsciLexerCSS.\n  - Added BackquoteString, RawString, KeywordSet5, KeywordSet6 and KeywordSet7\n    to QsciLexerD.\n  - Added setDjangoTemplates(), djangoTemplates(), setMakoTemplates() and\n    makoTemplates() to QsciLexerHTML.\n  - Added KeywordSet5, KeywordSet6, KeywordSet7 and KeywordSet8 to\n    QsciLexerLua.\n  - Added setInitialSpaces() and initialSpaces() to QsciLexerProperties.\n  - Added setFoldCompact(), foldCompact(), setStringsOverNewlineAllowed() and\n    stringsOverNewlineAllowed() to QsciLexerPython.\n  - Added setFoldComments(), foldComments(), setFoldCompact() and foldCompact()\n    to QsciLexerRuby.\n  - Added setFoldComments() and foldComments(), and removed setFoldCompact()\n    and foldCompact() from QsciLexerTCL.\n  - Added setFoldComments(), foldComments(), setFoldCompact(), foldCompact(),\n    setProcessComments(), processComments(), setProcessIf(), and processIf() to\n    QsciLexerTeX.\n  - Added QuotedIdentifier, setDottedWords(), dottedWords(), setFoldAtElse(),\n    foldAtElse(), setFoldOnlyBegin(), foldOnlyBegin(), setHashComments(),\n    hashComments(), setQuotedIdentifiers() and quotedIdentifiers() to\n    QsciLexerSQL.\n  - The Python bindings now allow optional arguments to be specified as keyword\n    arguments.\n  - The Python bindings will now build using the protected-is-public hack if\n    possible.\n\nv2.4.6 23rd December 2010\n  - Added support for indicators to the high-level API, i.e. added the\n    IndicatorStyle enum, the clearIndicatorRange(), fillIndicatorRange(),\n    indicatorDefine(), indicatorDrawUnder(), setIndicatorDrawUnder() and\n    setIndicatorForegroundColor methods, and the indicatorClicked() and\n    indicatorReleased() signals to QsciScintilla.\n  - Added support for the Key style in QsciLexerProperties.\n  - Added an API file for Python v2.7.\n  - Added the --no-timestamp command line option to the Python bindings'\n    configure.py.\n\nv2.4.5 31st August 2010\n  - A bug fix release.\n\nv2.4.4 12th July 2010\n  - Added the canInsertFromMimeData(), fromMimeData() and toMimeData() methods\n    to QsciScintillaBase.\n  - QsciScintilla::markerDefine() now allows existing markers to be redefined.\n\nv2.4.3 17th March 2010\n  - Added clearFolds() to QsciScintilla.\n\nv2.4.2 20th January 2010\n  - Updated Spanish translations from Jaime Seuma.\n  - Fixed compilation problems with Qt v3 and Qt v4 prior to v4.5.\n\nv2.4.1 14th January 2010\n  - Added the QsciLexerSpice and QsciLexerVerilog classes.\n  - Significant performance improvements when handling long lines.\n  - The Python bindings include automatically generated docstrings by default.\n  - Added an API file for Python v3.\n\nv2.4 5th June 2009\n  - Based on Scintilla v1.78.\n  - Added the QsciLexerCustom, QsciStyle and QsciStyledText classes.\n  - Added annotate(), annotation(), clearAnnotations(), setAnnotationDisplay()\n    and annotationDisplay() to QsciScintilla.\n  - Added setMarginText(), clearMarginText(), setMarginType() and marginType()\n    to QsciScintilla.\n  - Added QsciLexer::lexerId() so that container lexers can be implemented.\n  - Added editor() and styleBitsNeeded() to QsciLexer.\n  - Added setDollarsAllowed() and dollarsAllowed() to QsciLexerCPP.\n  - Added setFoldScriptComments(), foldScriptComments(),\n    setFoldScriptHeredocs() and foldScriptHeredocs() to QsciLexerHTML.\n  - Added setSmartHighlighting() and smartHighlighting() to QsciLexerPascal.\n    (Note that the Scintilla Pascal lexer has changed so that any saved colour\n    and font settings will not be properly restored.)\n  - Added setFoldPackages(), foldPackages(), setFoldPODBlocks() and\n    foldPODBlocks() to QsciLexerPerl.\n  - Added setV2UnicodeAllowed(), v2UnicodeAllowed(), setV3BinaryOctalAllowed(),\n    v3BinaryOctalAllowed(), setV3BytesAllowed and v3BytesAllowed() to\n    QsciLexerPython.\n  - Added setScriptsStyled() and scriptsStyled() to QsciLexerXML.\n  - Added Spanish translations from Jaime Seuma.\n\nv2.3.2 17th November 2008\n  - A bug fix release.\n\nv2.3.1 6th November 2008\n  - Based on Scintilla v1.77.\n  - Added the read() and write() methods to QsciScintilla to allow a file to be\n    read and written while minimising the conversions.\n  - Added the positionFromLineIndex() and lineIndexFromPosition() methods to\n    QsciScintilla to convert between a Scintilla character address and a\n    QScintilla character address.\n  - Added QsciScintilla::wordAtPoint() to return the word at the given screen\n    coordinates.\n  - QSciScintilla::setSelection() now allows the carat to be left at either the\n    start or the end of the selection.\n  - 'with' is now treated as a keyword by the Python lexer.\n\nv2.3 20th September 2008\n  - Based on Scintilla v1.76.\n  - The new QsciAbstractAPIs class allows applications to replace the default\n    implementation of the language APIs used for auto-completion lists and call\n    tips.\n  - Added QsciScintilla::apiContext() to allow applications to determine the\n    context used for auto-completion and call tips.\n  - Added the QsciLexerFortran, QsciLexerFortran77, QsciLexerPascal,\n    QsciLexerPostScript, QsciLexerTCL, QsciLexerXML and QsciLexerYAML classes.\n  - QsciScintilla::setFolding() will now accept an optional margin number.\n\nv2.2 27th February 2008\n  - Based on Scintilla v1.75.\n  - A lexer's default colour, paper and font are now written to and read from\n    the settings.\n  - Windows64 is now supported.\n  - The signature of the QsciScintillaBase::SCN_MACRORECORD() signal has\n    changed slightly.\n  - Changed the licensing to match the current Qt licenses, including GPL v3.\n\nv2.1 1st June 2007\n  - A slightly revised API, incompatible with QScintilla v2.0.\n  - Lexers now remember their style settings.  A lexer no longer has to be the\n    current lexer when changing a style's color, end-of-line fill, font or\n    paper.\n  - The color(), eolFill(), font() and paper() methods of QsciLexer now return\n    the current values for a style rather than the default values.\n  - The setDefaultColor(), setDefaultFont() and setDefaultPaper() methods of\n    QsciLexer are no longer slots and no longer virtual.\n  - The defaultColor(), defaultFont() and defaultPaper() methods of QsciLexer\n    are no longer virtual.\n  - The color(), eolFill(), font() and paper() methods of all QsciLexer derived\n    classes (except for QsciLexer itself) have been renamed defaultColor(),\n    defaultEolFill(), defaultFont() and defaultPaper() respectively.\n\nv2.0 26th May 2007\n  - A revised API, incompatible with QScintilla v1.\n  - Hugely improved autocompletion and call tips support.\n  - Supports both Qt v3 and Qt v4.\n  - Includes Python bindings.\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/InputMethod.cpp",
    "content": "// Copyright (c) 2017 Riverbank Computing Limited\n// Copyright (c) 2011 Archaeopteryx Software, Inc.\n// Copyright (c) 1990-2011, Scientific Toolworks, Inc.\n//\n// The License.txt file describes the conditions under which this software may\n// be distributed.\n\n\n#include <qglobal.h>\n\n#include <QColor>\n#include <QFont>\n#include <QInputMethodEvent>\n#include <QRect>\n#include <QTextCharFormat>\n#include <QTextFormat>\n#include <QVariant>\n#include <QVarLengthArray>\n\n#include \"SciNamespace.h\"\n\n#include \"Qsci/qsciscintillabase.h\"\n#include \"ScintillaQt.h\"\n\n\n#define INDIC_INPUTMETHOD 24\n\n#define MAXLENINPUTIME 200\n#define SC_INDICATOR_INPUT INDIC_IME\n#define SC_INDICATOR_TARGET INDIC_IME+1\n#define SC_INDICATOR_CONVERTED INDIC_IME+2\n#define SC_INDICATOR_UNKNOWN INDIC_IME_MAX\n\n\nstatic bool IsHangul(const QChar qchar)\n{\n    int unicode = (int)qchar.unicode();\n    // Korean character ranges used for preedit chars.\n    // http://www.programminginkorean.com/programming/hangul-in-unicode/\n    const bool HangulJamo = (0x1100 <= unicode && unicode <= 0x11FF);\n    const bool HangulCompatibleJamo = (0x3130 <= unicode && unicode <= 0x318F);\n    const bool HangulJamoExtendedA = (0xA960 <= unicode && unicode <= 0xA97F);\n    const bool HangulJamoExtendedB = (0xD7B0 <= unicode && unicode <= 0xD7FF);\n    const bool HangulSyllable = (0xAC00 <= unicode && unicode <= 0xD7A3);\n    return HangulJamo || HangulCompatibleJamo  || HangulSyllable ||\n                HangulJamoExtendedA || HangulJamoExtendedB;\n}\n\nstatic void MoveImeCarets(QsciScintillaQt *sqt, int offset)\n{\n    // Move carets relatively by bytes\n    for (size_t r=0; r < sqt->sel.Count(); r++) {\n        int positionInsert = sqt->sel.Range(r).Start().Position();\n        sqt->sel.Range(r).caret.SetPosition(positionInsert + offset);\n        sqt->sel.Range(r).anchor.SetPosition(positionInsert + offset);\n    }\n}\n\nstatic void DrawImeIndicator(QsciScintillaQt *sqt, int indicator, int len)\n{\n    // Emulate the visual style of IME characters with indicators.\n    // Draw an indicator on the character before caret by the character bytes of len\n    // so it should be called after AddCharUTF().\n    // It does not affect caret positions.\n    if (indicator < 8 || indicator > INDIC_MAX) {\n        return;\n    }\n    sqt->pdoc->decorations.SetCurrentIndicator(indicator);\n    for (size_t r=0; r< sqt-> sel.Count(); r++) {\n        int positionInsert = sqt->sel.Range(r).Start().Position();\n        sqt->pdoc->DecorationFillRange(positionInsert - len, 1, len);\n    }\n}\n\nstatic int GetImeCaretPos(QInputMethodEvent *event)\n{\n    foreach (QInputMethodEvent::Attribute attr, event->attributes()) {\n        if (attr.type == QInputMethodEvent::Cursor)\n            return attr.start;\n    }\n    return 0;\n}\n\nstatic std::vector<int> MapImeIndicators(QInputMethodEvent *event)\n{\n    std::vector<int> imeIndicator(event->preeditString().size(), SC_INDICATOR_UNKNOWN);\n    foreach (QInputMethodEvent::Attribute attr, event->attributes()) {\n        if (attr.type == QInputMethodEvent::TextFormat) {\n            QTextFormat format = attr.value.value<QTextFormat>();\n            QTextCharFormat charFormat = format.toCharFormat();\n\n            int indicator = SC_INDICATOR_UNKNOWN;\n            switch (charFormat.underlineStyle()) {\n                case QTextCharFormat::NoUnderline: // win32, linux\n                    indicator = SC_INDICATOR_TARGET;\n                    break;\n                case QTextCharFormat::SingleUnderline: // osx\n                case QTextCharFormat::DashUnderline: // win32, linux\n                    indicator = SC_INDICATOR_INPUT;\n                    break;\n                case QTextCharFormat::DotLine:\n                case QTextCharFormat::DashDotLine:\n                case QTextCharFormat::WaveUnderline:\n                case QTextCharFormat::SpellCheckUnderline:\n                    indicator = SC_INDICATOR_CONVERTED;\n                    break;\n\n                default:\n                    indicator = SC_INDICATOR_UNKNOWN;\n            }\n\n            if (format.hasProperty(QTextFormat::BackgroundBrush)) // win32, linux\n                indicator = SC_INDICATOR_TARGET;\n\n#ifdef Q_OS_OSX\n            if (charFormat.underlineStyle() == QTextCharFormat::SingleUnderline) {\n                QColor uc = charFormat.underlineColor();\n                if (uc.lightness() < 2) { // osx\n                    indicator = SC_INDICATOR_TARGET;\n                }\n            }\n#endif\n\n            for (int i = attr.start; i < attr.start+attr.length; i++) {\n                imeIndicator[i] = indicator;\n            }\n        }\n    }\n    return imeIndicator;\n}\n\nvoid QsciScintillaBase::inputMethodEvent(QInputMethodEvent *event)\n{\n    // Copy & paste by johnsonj with a lot of helps of Neil\n    // Great thanks for my forerunners, jiniya and BLUEnLIVE\n\n    if (sci->pdoc->IsReadOnly() || sci->SelectionContainsProtected()) {\n        // Here, a canceling and/or completing composition function is needed.\n        return;\n    }\n\n    if (sci->pdoc->TentativeActive()) {\n        sci->pdoc->TentativeUndo();\n    } else {\n        // No tentative undo means start of this composition so\n        // Fill in any virtual spaces.\n        sci->ClearBeforeTentativeStart();\n    }\n\n    sci->view.imeCaretBlockOverride = false;\n\n    if (!event->commitString().isEmpty()) {\n        const QString commitStr = event->commitString();\n        const unsigned int commitStrLen = commitStr.length();\n\n        for (unsigned int i = 0; i < commitStrLen;) {\n            const unsigned int ucWidth = commitStr.at(i).isHighSurrogate() ? 2 : 1;\n            const QString oneCharUTF16 = commitStr.mid(i, ucWidth);\n            const QByteArray oneChar = textAsBytes(oneCharUTF16);\n            const int oneCharLen = oneChar.length();\n\n            sci->AddCharUTF(oneChar.data(), oneCharLen);\n            i += ucWidth;\n        }\n\n    } else if (!event->preeditString().isEmpty()) {\n        const QString preeditStr = event->preeditString();\n        const unsigned int preeditStrLen = preeditStr.length();\n        if ((preeditStrLen == 0) || (preeditStrLen > MAXLENINPUTIME)) {\n            sci->ShowCaretAtCurrentPosition();\n            return;\n        }\n\n        sci->pdoc->TentativeStart(); // TentativeActive() from now on.\n\n        std::vector<int> imeIndicator = MapImeIndicators(event);\n\n        const bool recording = sci->recordingMacro;\n        sci->recordingMacro = false;\n        for (unsigned int i = 0; i < preeditStrLen;) {\n            const unsigned int ucWidth = preeditStr.at(i).isHighSurrogate() ? 2 : 1;\n            const QString oneCharUTF16 = preeditStr.mid(i, ucWidth);\n            const QByteArray oneChar = textAsBytes(oneCharUTF16);\n            const int oneCharLen = oneChar.length();\n\n            sci->AddCharUTF(oneChar.data(), oneCharLen);\n\n            DrawImeIndicator(sci, imeIndicator[i], oneCharLen);\n            i += ucWidth;\n        }\n        sci->recordingMacro = recording;\n\n        // Move IME carets.\n        int imeCaretPos = GetImeCaretPos(event);\n        int imeEndToImeCaretU16 = imeCaretPos - preeditStrLen;\n        int imeCaretPosDoc = sci->pdoc->GetRelativePositionUTF16(sci->CurrentPosition(), imeEndToImeCaretU16);\n\n        MoveImeCarets(sci, - sci->CurrentPosition() + imeCaretPosDoc);\n\n        if (IsHangul(preeditStr.at(0))) {\n#ifndef Q_OS_WIN\n            if (imeCaretPos > 0) {\n                int oneCharBefore = sci->pdoc->GetRelativePosition(sci->CurrentPosition(), -1);\n                MoveImeCarets(sci, - sci->CurrentPosition() + oneCharBefore);\n            }\n#endif\n            sci->view.imeCaretBlockOverride = true;\n        }\n\n        // Set candidate box position for Qt::ImMicroFocus.\n        preeditPos = sci->CurrentPosition();\n        sci->EnsureCaretVisible();\n        updateMicroFocus();\n    }\n    sci->ShowCaretAtCurrentPosition();\n}\n\nQVariant QsciScintillaBase::inputMethodQuery(Qt::InputMethodQuery query) const\n{\n    int pos = SendScintilla(SCI_GETCURRENTPOS);\n    int line = SendScintilla(SCI_LINEFROMPOSITION, pos);\n\n    switch (query) {\n#if QT_VERSION >= 0x050000\n        case Qt::ImHints:\n            return QWidget::inputMethodQuery(query);\n#endif\n\n        case Qt::ImMicroFocus:\n        {\n            int startPos = (preeditPos >= 0) ? preeditPos : pos;\n            QSCI_SCI_NAMESPACE(Point) pt = sci->LocationFromPosition(startPos);\n            int width = SendScintilla(SCI_GETCARETWIDTH);\n            int height = SendScintilla(SCI_TEXTHEIGHT, line);\n            return QRect(pt.x, pt.y, width, height);\n        }\n\n        case Qt::ImFont:\n        {\n            char fontName[64];\n            int style = SendScintilla(SCI_GETSTYLEAT, pos);\n            int len = SendScintilla(SCI_STYLEGETFONT, style, (sptr_t)fontName);\n            int size = SendScintilla(SCI_STYLEGETSIZE, style);\n            bool italic = SendScintilla(SCI_STYLEGETITALIC, style);\n            int weight = SendScintilla(SCI_STYLEGETBOLD, style) ? QFont::Bold : -1;\n            return QFont(QString::fromUtf8(fontName, len), size, weight, italic);\n        }\n\n        case Qt::ImCursorPosition:\n        {\n            int paraStart = sci->pdoc->ParaUp(pos);\n            return pos - paraStart;\n        }\n\n        case Qt::ImSurroundingText:\n        {\n            int paraStart = sci->pdoc->ParaUp(pos);\n            int paraEnd = sci->pdoc->ParaDown(pos);\n            QVarLengthArray<char,1024> buffer(paraEnd - paraStart + 1);\n\n            Sci_CharacterRange charRange;\n            charRange.cpMin = paraStart;\n            charRange.cpMax = paraEnd;\n\n            Sci_TextRange textRange;\n            textRange.chrg = charRange;\n            textRange.lpstrText = buffer.data();\n\n            SendScintilla(SCI_GETTEXTRANGE, 0, (sptr_t)&textRange);\n\n            return bytesAsText(buffer.constData());\n        }\n\n        case Qt::ImCurrentSelection:\n        {\n            QVarLengthArray<char,1024> buffer(SendScintilla(SCI_GETSELTEXT));\n            SendScintilla(SCI_GETSELTEXT, 0, (sptr_t)buffer.data());\n\n            return bytesAsText(buffer.constData());\n        }\n\n        default:\n            return QVariant();\n    }\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/ListBoxQt.cpp",
    "content": "// This module implements the specialisation of QListBox that handles the\n// Scintilla double-click callback.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"ListBoxQt.h\"\n\n#include <stdlib.h>\n\n#include \"SciClasses.h\"\n#include \"Qsci/qsciscintilla.h\"\n\n\nQsciListBoxQt::QsciListBoxQt()\n    : cb_action(0), cb_data(0), slb(0), visible_rows(5), utf8(false)\n{\n}\n\n\nvoid QsciListBoxQt::SetFont(QSCI_SCI_NAMESPACE(Font) &font)\n{\n    QFont *f = reinterpret_cast<QFont *>(font.GetID());\n\n    if (f)\n        slb->setFont(*f);\n}\n\n\nvoid QsciListBoxQt::Create(QSCI_SCI_NAMESPACE(Window) &parent, int,\n        QSCI_SCI_NAMESPACE(Point), int, bool unicodeMode, int)\n{\n    utf8 = unicodeMode;\n\n    // The parent we want is the QsciScintillaBase, not the text area.\n    wid = slb = new QsciSciListBox(reinterpret_cast<QWidget *>(parent.GetID())->parentWidget(), this);\n}\n\n\nvoid QsciListBoxQt::SetAverageCharWidth(int)\n{\n    // We rely on sizeHint() for the size of the list box rather than make\n    // calculations based on the average character width and the number of\n    // visible rows.\n}\n\n\nvoid QsciListBoxQt::SetVisibleRows(int vrows)\n{\n    // We only pretend to implement this.\n    visible_rows = vrows;\n}\n\n\nint QsciListBoxQt::GetVisibleRows() const\n{\n    return visible_rows;\n}\n\n\nQSCI_SCI_NAMESPACE(PRectangle) QsciListBoxQt::GetDesiredRect()\n{\n    QSCI_SCI_NAMESPACE(PRectangle) rc(0, 0, 100, 100);\n\n    if (slb)\n    {\n        QSize sh = slb->sizeHint();\n\n        rc.right = sh.width();\n        rc.bottom = sh.height();\n    }\n\n    return rc;\n}\n\n\nint QsciListBoxQt::CaretFromEdge()\n{\n    int dist = 0;\n\n    // Find the width of the biggest image.\n    for (xpmMap::const_iterator it = xset.begin(); it != xset.end(); ++it)\n    {\n        int w = it.value().width();\n\n        if (dist < w)\n            dist = w;\n    }\n\n    if (slb)\n        dist += slb->frameWidth();\n\n    // Fudge factor - adjust if required.\n    dist += 3;\n\n    return dist;\n}\n\n\nvoid QsciListBoxQt::Clear()\n{\n    Q_ASSERT(slb);\n\n    slb->clear();\n}\n\n\nvoid QsciListBoxQt::Append(char *s, int type)\n{\n    Q_ASSERT(slb);\n\n    QString qs;\n\n    if (utf8)\n        qs = QString::fromUtf8(s);\n    else\n        qs = QString::fromLatin1(s);\n\n    xpmMap::const_iterator it;\n\n    if (type < 0 || (it = xset.find(type)) == xset.end())\n        slb->addItem(qs);\n    else\n        slb->addItemPixmap(it.value(), qs);\n}\n\n\nint QsciListBoxQt::Length()\n{\n    Q_ASSERT(slb);\n\n    return slb->count();\n}\n\n\nvoid QsciListBoxQt::Select(int n)\n{\n    Q_ASSERT(slb);\n\n    slb->setCurrentRow(n);\n}\n\n\nint QsciListBoxQt::GetSelection()\n{\n    Q_ASSERT(slb);\n\n    return slb->currentRow();\n}\n\n\nint QsciListBoxQt::Find(const char *prefix)\n{\n    Q_ASSERT(slb);\n\n    return slb->find(prefix);\n}\n\n\nvoid QsciListBoxQt::GetValue(int n, char *value, int len)\n{\n    Q_ASSERT(slb);\n\n    QString selection = slb->text(n);\n\n    bool trim_selection = false;\n    QObject *sci_obj = slb->parent();\n\n    if (sci_obj->inherits(\"QsciScintilla\"))\n    {\n        QsciScintilla *sci = static_cast<QsciScintilla *>(sci_obj);\n\n        if (sci->isAutoCompletionList())\n        {\n            // Save the full selection and trim the value we return.\n            sci->acSelection = selection;\n            trim_selection = true;\n        }\n    }\n\n    if (selection.isEmpty() || len <= 0)\n        value[0] = '\\0';\n    else\n    {\n        const char *s;\n        int slen;\n\n        QByteArray bytes;\n\n        if (utf8)\n            bytes = selection.toUtf8();\n        else\n            bytes = selection.toLatin1();\n\n        s = bytes.data();\n        slen = bytes.length();\n\n        while (slen-- && len--)\n        {\n            if (trim_selection && *s == ' ')\n                break;\n\n            *value++ = *s++;\n        }\n\n        *value = '\\0';\n    }\n}\n\n\nvoid QsciListBoxQt::Sort()\n{\n    Q_ASSERT(slb);\n\n    slb->sortItems();\n}\n\n\nvoid QsciListBoxQt::RegisterImage(int type, const char *xpm_data)\n{\n    xset.insert(type, *reinterpret_cast<const QPixmap *>(xpm_data));\n}\n\n\nvoid QsciListBoxQt::RegisterRGBAImage(int type, int, int,\n        const unsigned char *pixelsImage)\n{\n    QPixmap pm;\n\n#if QT_VERSION >= 0x040700\n    pm.convertFromImage(*reinterpret_cast<const QImage *>(pixelsImage));\n#else\n    pm = QPixmap::fromImage(*reinterpret_cast<const QImage *>(pixelsImage));\n#endif\n\n    xset.insert(type, pm);\n}\n\n\nvoid QsciListBoxQt::ClearRegisteredImages()\n{\n    xset.clear();\n}\n\n\nvoid QsciListBoxQt::SetDoubleClickAction(\n        QSCI_SCI_NAMESPACE(CallBackAction) action, void *data)\n{\n    cb_action = action;\n    cb_data = data;\n}\n\n\nvoid QsciListBoxQt::SetList(const char *list, char separator, char typesep)\n{\n    char *words;\n\n    Clear();\n\n    if ((words = qstrdup(list)) != NULL)\n    {\n        char *startword = words;\n        char *numword = NULL;\n\n        for (int i = 0; words[i] != '\\0'; i++)\n        {\n            if (words[i] == separator)\n            {\n                words[i] = '\\0';\n\n                if (numword)\n                    *numword = '\\0';\n\n                Append(startword, numword ? atoi(numword + 1) : -1);\n\n                startword = words + i + 1;\n                numword = NULL;\n            }\n            else if (words[i] == typesep)\n            {\n                numword = words + i;\n            }\n        }\n\n        if (startword)\n        {\n            if (numword)\n                *numword = '\\0';\n\n            Append(startword, numword ? atoi(numword + 1) : -1);\n        }\n\n        delete[] words;\n    }\n}\n\n\n// The ListBox methods that need to be implemented explicitly.\n\nQSCI_SCI_NAMESPACE(ListBox)::ListBox()\n{\n}\n\n\nQSCI_SCI_NAMESPACE(ListBox)::~ListBox()\n{\n}\n\n\nQSCI_SCI_NAMESPACE(ListBox) *QSCI_SCI_NAMESPACE(ListBox)::Allocate()\n{\n    return new QsciListBoxQt();\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/ListBoxQt.h",
    "content": "// This defines the specialisation of QListBox that handles the Scintilla\n// double-click callback.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include <qmap.h>\n#include <qpixmap.h>\n#include <qstring.h>\n\n#include \"SciNamespace.h\"\n\n#include \"Platform.h\"\n\n\nclass QsciSciListBox;\n\n\n// This is an internal class but it is referenced by a public class so it has\n// to have a Qsci prefix rather than being put in the Scintilla namespace\n// which would mean exposing the SCI_NAMESPACE mechanism).\nclass QsciListBoxQt : public QSCI_SCI_NAMESPACE(ListBox)\n{\npublic:\n    QsciListBoxQt();\n\n    QSCI_SCI_NAMESPACE(CallBackAction) cb_action;\n    void *cb_data;\n\n    virtual void SetFont(QSCI_SCI_NAMESPACE(Font) &font);\n    virtual void Create(QSCI_SCI_NAMESPACE(Window) &parent, int,\n            QSCI_SCI_NAMESPACE(Point), int, bool unicodeMode, int);\n    virtual void SetAverageCharWidth(int);\n    virtual void SetVisibleRows(int);\n    virtual int GetVisibleRows() const;\n    virtual QSCI_SCI_NAMESPACE(PRectangle) GetDesiredRect();\n    virtual int CaretFromEdge();\n    virtual void Clear();\n    virtual void Append(char *s, int type = -1);\n    virtual int Length();\n    virtual void Select(int n);\n    virtual int GetSelection();\n    virtual int Find(const char *prefix);\n    virtual void GetValue(int n, char *value, int len);\n    virtual void Sort();\n    virtual void RegisterImage(int type, const char *xpm_data);\n    virtual void RegisterRGBAImage(int type, int width, int height,\n            const unsigned char *pixelsImage);\n    virtual void ClearRegisteredImages();\n    virtual void SetDoubleClickAction(\n            QSCI_SCI_NAMESPACE(CallBackAction) action, void *data);\n    virtual void SetList(const char *list, char separator, char typesep);\n\nprivate:\n    QsciSciListBox *slb;\n    int visible_rows;\n    bool utf8;\n\n    typedef QMap<int, QPixmap> xpmMap;\n    xpmMap xset;\n};\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/MacPasteboardMime.cpp",
    "content": "// This module implements part of the support for rectangular selections on\n// OS/X.  It is a separate file to avoid clashes between OS/X and Scintilla\n// data types.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include <qglobal.h>\n\n#if (QT_VERSION >= 0x040200 && QT_VERSION < 0x050000 && defined(Q_OS_MAC)) || (QT_VERSION >= 0x050200 && defined(Q_OS_OSX))\n\n#include <QByteArray>\n#include <QLatin1String>\n#include <QList>\n#include <QString>\n#include <QStringList>\n#include <QVariant>\n\n#include <QMacPasteboardMime>\n\n\nstatic const QLatin1String mimeRectangular(\"text/x-qscintilla-rectangular\");\nstatic const QLatin1String utiRectangularMac(\"com.scintilla.utf16-plain-text.rectangular\");\n\n\nclass RectangularPasteboardMime : public QMacPasteboardMime\n{\npublic:\n    RectangularPasteboardMime() : QMacPasteboardMime(MIME_ALL)\n    {\n    }\n\n    bool canConvert(const QString &mime, QString flav)\n    {\n        return mime == mimeRectangular && flav == utiRectangularMac;\n    }\n\n    QList<QByteArray> convertFromMime(const QString &, QVariant data, QString)\n    {\n        QList<QByteArray> converted;\n\n        converted.append(data.toByteArray());\n\n        return converted;\n    }\n\n    QVariant convertToMime(const QString &, QList<QByteArray> data, QString)\n    {\n        QByteArray converted;\n\n        foreach (QByteArray i, data)\n        {\n            converted += i;\n        }\n\n        return QVariant(converted);\n    }\n\n    QString convertorName()\n    {\n        return QString(\"QScintillaRectangular\");\n    }\n\n    QString flavorFor(const QString &mime)\n    {\n        if (mime == mimeRectangular)\n            return QString(utiRectangularMac);\n\n        return QString();\n    }\n\n    QString mimeFor(QString flav)\n    {\n        if (flav == utiRectangularMac)\n            return QString(mimeRectangular);\n\n        return QString();\n    }\n};\n\n\n// Initialise the singleton instance.\nvoid initialiseRectangularPasteboardMime()\n{\n    static RectangularPasteboardMime *instance = 0;\n\n    if (!instance)\n    {\n        instance = new RectangularPasteboardMime();\n\n        qRegisterDraggedTypes(QStringList(utiRectangularMac));\n    }\n}\n\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/PlatQt.cpp",
    "content": "// This module implements the portability layer for the Qt port of Scintilla.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include <stdio.h>\n#include <stdarg.h>\n#include <string.h>\n\n#include <qapplication.h>\n#include <qcursor.h>\n#include <qdatetime.h>\n#include <qdesktopwidget.h>\n#include <qfont.h>\n#include <qimage.h>\n#include <qlibrary.h>\n#include <qpainter.h>\n#include <qpixmap.h>\n#include <qpolygon.h>\n#include <qstring.h>\n#include <qtextlayout.h>\n#include <qwidget.h>\n\n#include \"SciNamespace.h\"\n\n#include \"Platform.h\"\n#include \"XPM.h\"\n\n#include \"Qsci/qsciscintillabase.h\"\n#include \"SciClasses.h\"\n\n#include \"FontQuality.h\"\n\n\nQSCI_BEGIN_SCI_NAMESPACE\n\n// Type convertors.\nstatic QFont *PFont(FontID fid)\n{\n    return reinterpret_cast<QFont *>(fid);\n}\n\nstatic QWidget *PWindow(WindowID wid)\n{\n    return reinterpret_cast<QWidget *>(wid);\n}\n\nstatic QsciSciPopup *PMenu(MenuID mid)\n{\n    return reinterpret_cast<QsciSciPopup *>(mid);\n}\n\n\n// Create a Point instance from a long value.\nPoint Point::FromLong(long lpoint)\n{\n    return Point(Platform::LowShortFromLong(lpoint),\n            Platform::HighShortFromLong(lpoint));\n}\n\n\n// Font management.\nFont::Font() : fid(0)\n{\n}\n\nFont::~Font()\n{\n}\n\nvoid Font::Create(const FontParameters &fp)\n{\n    Release();\n\n    QFont *f = new QFont();\n\n    QFont::StyleStrategy strategy;\n\n    switch (fp.extraFontFlag & SC_EFF_QUALITY_MASK)\n    {\n    case SC_EFF_QUALITY_NON_ANTIALIASED:\n        strategy = QFont::NoAntialias;\n        break;\n\n    case SC_EFF_QUALITY_ANTIALIASED:\n        strategy = QFont::PreferAntialias;\n        break;\n\n    default:\n        strategy = QFont::PreferDefault;\n    }\n\n#if defined(Q_OS_MAC)\n#if QT_VERSION >= 0x040700\n    strategy = static_cast<QFont::StyleStrategy>(strategy | QFont::ForceIntegerMetrics);\n#else\n#warning \"Correct handling of QFont metrics requires Qt v4.7.0 or later\"\n#endif\n#endif\n\n    f->setStyleStrategy(strategy);\n\n    // If name of the font begins with a '-', assume, that it is an XLFD.\n    if (fp.faceName[0] == '-')\n    {\n        f->setRawName(fp.faceName);\n    }\n    else\n    {\n        f->setFamily(fp.faceName);\n        f->setPointSizeF(fp.size);\n\n        // See if the Qt weight has been passed via the back door.   Otherwise\n        // map Scintilla weights to Qt weights ensuring that the SC_WEIGHT_*\n        // values get mapped to the correct QFont::Weight values.\n        int qt_weight;\n\n        if (fp.weight < 0)\n            qt_weight = -fp.weight;\n        else if (fp.weight <= 200)\n            qt_weight = QFont::Light;\n        else if (fp.weight <= QsciScintillaBase::SC_WEIGHT_NORMAL)\n            qt_weight = QFont::Normal;\n        else if (fp.weight <= 600)\n            qt_weight = QFont::DemiBold;\n        else if (fp.weight <= 850)\n            qt_weight = QFont::Bold;\n        else\n            qt_weight = QFont::Black;\n\n        f->setWeight(qt_weight);\n\n        f->setItalic(fp.italic);\n    }\n\n    fid = f;\n}\n\nvoid Font::Release()\n{\n    if (fid)\n    {\n        delete PFont(fid);\n        fid = 0;\n    }\n}\n\n\n// A surface abstracts a place to draw.\nclass SurfaceImpl : public Surface\n{\npublic:\n    SurfaceImpl();\n    virtual ~SurfaceImpl();\n\n    void Init(WindowID wid);\n    void Init(SurfaceID sid, WindowID);\n    void Init(QPainter *p);\n    void InitPixMap(int width, int height, Surface *, WindowID wid);\n\n    void Release();\n    bool Initialised() {return painter;}\n    void PenColour(ColourDesired fore);\n    int LogPixelsY() {return pd->logicalDpiY();}\n    int DeviceHeightFont(int points) {return points;}\n    void MoveTo(int x_,int y_);\n    void LineTo(int x_,int y_);\n    void Polygon(Point *pts, int npts, ColourDesired fore,\n            ColourDesired back);\n    void RectangleDraw(PRectangle rc, ColourDesired fore,\n            ColourDesired back);\n    void FillRectangle(PRectangle rc, ColourDesired back);\n    void FillRectangle(PRectangle rc, Surface &surfacePattern);\n    void RoundedRectangle(PRectangle rc, ColourDesired fore,\n            ColourDesired back);\n    void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill,\n            int alphaFill, ColourDesired outline, int alphaOutline,\n            int flags);\n    void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage);\n    void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back);\n    void Copy(PRectangle rc, Point from, Surface &surfaceSource);\n\n    void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase,\n            const char *s, int len, ColourDesired fore, ColourDesired back);\n    void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase,\n            const char *s, int len, ColourDesired fore, ColourDesired back);\n    void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase,\n            const char *s, int len, ColourDesired fore);\n    void MeasureWidths(Font &font_, const char *s, int len,\n            XYPOSITION *positions);\n    XYPOSITION WidthText(Font &font_, const char *s, int len);\n    XYPOSITION WidthChar(Font &font_, char ch);\n    XYPOSITION Ascent(Font &font_);\n    XYPOSITION Descent(Font &font_);\n    XYPOSITION InternalLeading(Font &font_) {return 0;}\n    XYPOSITION ExternalLeading(Font &font_);\n    XYPOSITION Height(Font &font_);\n    XYPOSITION AverageCharWidth(Font &font_);\n\n    void SetClip(PRectangle rc);\n    void FlushCachedState();\n\n    void SetUnicodeMode(bool unicodeMode_) {unicodeMode = unicodeMode_;}\n    void SetDBCSMode(int codePage) {}\n\n    void DrawXPM(PRectangle rc, const XPM *xpm);\n\nprivate:\n    void drawRect(const PRectangle &rc);\n    void drawText(const PRectangle &rc, Font &font_, XYPOSITION ybase,\n            const char *s, int len, ColourDesired fore);\n    static QFont convertQFont(Font &font);\n    QFontMetricsF metrics(Font &font_);\n    QString convertText(const char *s, int len);\n    static QColor convertQColor(const ColourDesired &col,\n            unsigned alpha = 255);\n\n    bool unicodeMode;\n    QPaintDevice *pd;\n    QPainter *painter;\n    bool my_resources;\n    int pen_x, pen_y;\n};\n\nSurface *Surface::Allocate(int)\n{\n    return new SurfaceImpl;\n}\n\nSurfaceImpl::SurfaceImpl()\n    : unicodeMode(false), pd(0), painter(0), my_resources(false), pen_x(0),\n      pen_y(0)\n{\n}\n\nSurfaceImpl::~SurfaceImpl()\n{\n    Release();\n}\n\nvoid SurfaceImpl::Init(WindowID wid)\n{\n    Release();\n\n    pd = reinterpret_cast<QWidget *>(wid);\n}\n\nvoid SurfaceImpl::Init(SurfaceID sid, WindowID)\n{\n    Release();\n\n    // This method, and the SurfaceID type, is only used when printing.  As it\n    // is actually a void * we pass (when using SCI_FORMATRANGE) a pointer to a\n    // QPainter rather than a pointer to a SurfaceImpl as might be expected.\n    QPainter *p = reinterpret_cast<QPainter *>(sid);\n\n    pd = p->device();\n    painter = p;\n}\n\nvoid SurfaceImpl::Init(QPainter *p)\n{\n    Release();\n\n    pd = p->device();\n    painter = p;\n}\n\nvoid SurfaceImpl::InitPixMap(int width, int height, Surface *, WindowID wid)\n{\n    Release();\n\n#if QT_VERSION >= 0x050100\n    int dpr = PWindow(wid)->devicePixelRatio();\n    QPixmap *pixmap = new QPixmap(width * dpr, height * dpr);\n    pixmap->setDevicePixelRatio(dpr);\n#else\n    QPixmap *pixmap = new QPixmap(width, height);\n    Q_UNUSED(wid);\n#endif\n\n    pd = pixmap;\n\n    painter = new QPainter(pd);\n    my_resources = true;\n}\n\nvoid SurfaceImpl::Release()\n{\n    if (my_resources)\n    {\n        if (painter)\n            delete painter;\n\n        if (pd)\n            delete pd;\n\n        my_resources = false;\n    }\n\n    painter = 0;\n    pd = 0;\n}\n\nvoid SurfaceImpl::MoveTo(int x_, int y_)\n{\n    Q_ASSERT(painter);\n\n    pen_x = x_;\n    pen_y = y_;\n}\n\nvoid SurfaceImpl::LineTo(int x_, int y_)\n{\n    Q_ASSERT(painter);\n\n    painter->drawLine(pen_x, pen_y, x_, y_);\n\n    pen_x = x_;\n    pen_y = y_;\n}\n\nvoid SurfaceImpl::PenColour(ColourDesired fore)\n{\n    Q_ASSERT(painter);\n\n    painter->setPen(convertQColor(fore));\n}\n\nvoid SurfaceImpl::Polygon(Point *pts, int npts, ColourDesired fore,\n        ColourDesired back)\n{\n    Q_ASSERT(painter);\n\n    QPolygonF qpts(npts);\n\n    for (int i = 0; i < npts; ++i)\n        qpts[i] = QPointF(pts[i].x, pts[i].y);\n\n    painter->setPen(convertQColor(fore));\n    painter->setBrush(convertQColor(back));\n    painter->drawPolygon(qpts);\n}\n\nvoid SurfaceImpl::RectangleDraw(PRectangle rc, ColourDesired fore,\n        ColourDesired back)\n{\n    Q_ASSERT(painter);\n\n    painter->setPen(convertQColor(fore));\n    painter->setBrush(convertQColor(back));\n    drawRect(rc);\n}\n\nvoid SurfaceImpl::FillRectangle(PRectangle rc, ColourDesired back)\n{\n    Q_ASSERT(painter);\n\n    painter->setPen(Qt::NoPen);\n    painter->setBrush(convertQColor(back));\n    drawRect(rc);\n}\n\nvoid SurfaceImpl::FillRectangle(PRectangle rc, Surface &surfacePattern)\n{\n    Q_ASSERT(painter);\n\n    SurfaceImpl &si = static_cast<SurfaceImpl &>(surfacePattern);\n    QPixmap *pm = static_cast<QPixmap *>(si.pd);\n\n    if (pm)\n    {\n        QBrush brsh(Qt::black, *pm);\n\n        painter->setPen(Qt::NoPen);\n        painter->setBrush(brsh);\n        drawRect(rc);\n    }\n    else\n    {\n        FillRectangle(rc, ColourDesired(0));\n    }\n}\n\nvoid SurfaceImpl::RoundedRectangle(PRectangle rc, ColourDesired fore,\n        ColourDesired back)\n{\n    Q_ASSERT(painter);\n\n    painter->setPen(convertQColor(fore));\n    painter->setBrush(convertQColor(back));\n    painter->drawRoundRect(\n            QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top));\n}\n\nvoid SurfaceImpl::AlphaRectangle(PRectangle rc, int cornerSize,\n        ColourDesired fill, int alphaFill, ColourDesired outline,\n        int alphaOutline, int)\n{\n    Q_ASSERT(painter);\n\n    QColor outline_colour = convertQColor(outline, alphaOutline);\n    QColor fill_colour = convertQColor(fill, alphaFill);\n\n    // There was a report of Qt seeming to ignore the alpha value of the pen so\n    // so we disable the pen if the outline and fill colours are the same.\n    if (outline_colour == fill_colour)\n        painter->setPen(Qt::NoPen);\n    else\n        painter->setPen(outline_colour);\n\n    painter->setBrush(fill_colour);\n\n    const int radius = (cornerSize ? 25 : 0);\n\n    painter->drawRoundRect(\n            QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top),\n            radius, radius);\n}\n\nvoid SurfaceImpl::drawRect(const PRectangle &rc)\n{\n    painter->drawRect(\n            QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top));\n}\n\nvoid SurfaceImpl::Ellipse(PRectangle rc, ColourDesired fore,\n        ColourDesired back)\n{\n    Q_ASSERT(painter);\n\n    painter->setPen(convertQColor(fore));\n    painter->setBrush(convertQColor(back));\n    painter->drawEllipse(\n            QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top));\n}\n\nvoid SurfaceImpl::Copy(PRectangle rc, Point from, Surface &surfaceSource)\n{\n    Q_ASSERT(painter);\n\n    SurfaceImpl &si = static_cast<SurfaceImpl &>(surfaceSource);\n\n    if (si.pd)\n    {\n        QPixmap *pm = static_cast<QPixmap *>(si.pd);\n        qreal x = from.x;\n        qreal y = from.y;\n        qreal width = rc.right - rc.left;\n        qreal height = rc.bottom - rc.top;\n\n#if QT_VERSION >= 0x050100\n        qreal dpr = pm->devicePixelRatio();\n\n        x *= dpr;\n        y *= dpr;\n        width *= dpr;\n        height *= dpr;\n#endif\n\n        painter->drawPixmap(QPointF(rc.left, rc.top), *pm,\n                QRectF(x, y, width, height));\n    }\n}\n\nvoid SurfaceImpl::DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase,\n        const char *s, int len, ColourDesired fore, ColourDesired back)\n{\n    Q_ASSERT(painter);\n\n    FillRectangle(rc, back);\n    drawText(rc, font_, ybase, s, len, fore);\n}\n\nvoid SurfaceImpl::DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase,\n        const char *s, int len, ColourDesired fore, ColourDesired back)\n{\n    Q_ASSERT(painter);\n\n    SetClip(rc);\n    DrawTextNoClip(rc, font_, ybase, s, len, fore, back);\n    painter->setClipping(false);\n}\n\nvoid SurfaceImpl::DrawTextTransparent(PRectangle rc, Font &font_,\n        XYPOSITION ybase, const char *s, int len, ColourDesired fore)\n{\n    // Only draw if there is a non-space.\n    for (int i = 0; i < len; ++i)\n        if (s[i] != ' ')\n        {\n            drawText(rc, font_, ybase, s, len, fore);\n            return;\n        }\n}\n\nvoid SurfaceImpl::drawText(const PRectangle &rc, Font &font_, XYPOSITION ybase,\n        const char *s, int len, ColourDesired fore)\n{\n    QString qs = convertText(s, len);\n\n    QFont *f = PFont(font_.GetID());\n\n    if (f)\n        painter->setFont(*f);\n\n    painter->setPen(convertQColor(fore));\n    painter->drawText(QPointF(rc.left, ybase), qs);\n}\n\nvoid SurfaceImpl::DrawXPM(PRectangle rc, const XPM *xpm)\n{\n    Q_ASSERT(painter);\n\n    XYPOSITION x, y;\n    const QPixmap &qpm = xpm->Pixmap();\n\n    x = rc.left + (rc.Width() - qpm.width()) / 2.0;\n    y = rc.top + (rc.Height() - qpm.height()) / 2.0;\n\n    painter->drawPixmap(QPointF(x, y), qpm);\n}\n\nvoid SurfaceImpl::DrawRGBAImage(PRectangle rc, int width, int height,\n        const unsigned char *pixelsImage)\n{\n    Q_ASSERT(painter);\n\n    const QImage *qim = reinterpret_cast<const QImage *>(pixelsImage);\n\n    painter->drawImage(QPointF(rc.left, rc.top), *qim);\n}\n\nvoid SurfaceImpl::MeasureWidths(Font &font_, const char *s, int len,\n        XYPOSITION *positions)\n{\n    QString qs = convertText(s, len);\n    QTextLayout text_layout(qs, convertQFont(font_), pd);\n\n    text_layout.beginLayout();\n    QTextLine text_line = text_layout.createLine();\n    text_layout.endLayout();\n\n    if (unicodeMode)\n    {\n        int i_char = 0, i_byte = 0;;\n\n        while (i_char < qs.size())\n        {\n            unsigned char byte = s[i_byte];\n            int nbytes, code_units;\n\n            // Work out character sizes by looking at the byte stream.\n            if (byte >= 0xf0)\n            {\n                nbytes = 4;\n                code_units = 2;\n            }\n            else\n            {\n                if (byte >= 0xe0)\n                    nbytes = 3;\n                else if (byte >= 0x80)\n                    nbytes = 2;\n                else\n                    nbytes = 1;\n\n                code_units = 1;\n            }\n\n            XYPOSITION position = text_line.cursorToX(i_char + code_units);\n\n            // Set the same position for each byte of the character.\n            for (int i = 0; i < nbytes && i_byte < len; ++i)\n                positions[i_byte++] = position;\n\n            i_char += code_units;\n        }\n\n        // This shouldn't be necessary...\n        XYPOSITION last_position = ((i_byte > 0) ? positions[i_byte - 1] : 0);\n\n        while (i_byte < len)\n            positions[i_byte++] = last_position;\n    }\n    else\n    {\n        for (int i = 0; i < len; ++i)\n            positions[i] = text_line.cursorToX(i + 1);\n    }\n}\n\nXYPOSITION SurfaceImpl::WidthText(Font &font_, const char *s, int len)\n{\n    return metrics(font_).width(convertText(s, len));\n\n}\n\nXYPOSITION SurfaceImpl::WidthChar(Font &font_, char ch)\n{\n    return metrics(font_).width(ch);\n}\n\nXYPOSITION SurfaceImpl::Ascent(Font &font_)\n{\n    return metrics(font_).ascent();\n}\n\nXYPOSITION SurfaceImpl::Descent(Font &font_)\n{\n    // Qt doesn't include the baseline in the descent, so add it.  Note that\n    // a descent from Qt4 always seems to be 2 pixels larger (irrespective of\n    // font or size) than the same descent from Qt3.  This means that text is a\n    // little more spaced out with Qt4 - and will be more noticeable with\n    // smaller fonts.\n    return metrics(font_).descent() + 1;\n}\n\nXYPOSITION SurfaceImpl::ExternalLeading(Font &font_)\n{\n    // Scintilla doesn't use this at the moment, which is good because Qt4 can\n    // return a negative value.\n    return metrics(font_).leading();\n}\n\nXYPOSITION SurfaceImpl::Height(Font &font_)\n{\n    return metrics(font_).height();\n}\n\nXYPOSITION SurfaceImpl::AverageCharWidth(Font &font_)\n{\n#if QT_VERSION >= 0x040200\n    return metrics(font_).averageCharWidth();\n#else\n    return WidthChar(font_, 'n');\n#endif\n}\n\nvoid SurfaceImpl::SetClip(PRectangle rc)\n{\n    Q_ASSERT(painter);\n\n    painter->setClipRect(\n            QRectF(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top));\n}\n\nvoid SurfaceImpl::FlushCachedState()\n{\n}\n\n// Return the QFont for a Font.\nQFont SurfaceImpl::convertQFont(Font &font)\n{\n    QFont *f = PFont(font.GetID());\n\n    if (f)\n        return *f;\n\n    return QApplication::font();\n}\n\n// Get the metrics for a font.\nQFontMetricsF SurfaceImpl::metrics(Font &font_)\n{\n    QFont fnt = convertQFont(font_);\n\n    return QFontMetricsF(fnt, pd);\n}\n\n// Convert a Scintilla string to a Qt Unicode string.\nQString SurfaceImpl::convertText(const char *s, int len)\n{\n    if (unicodeMode)\n        return QString::fromUtf8(s, len);\n\n    return QString::fromLatin1(s, len);\n}\n\n\n// Convert a Scintilla colour, and alpha component, to a Qt QColor.\nQColor SurfaceImpl::convertQColor(const ColourDesired &col, unsigned alpha)\n{\n    long c = col.AsLong();\n\n    unsigned r = c & 0xff;\n    unsigned g = (c >> 8) & 0xff;\n    unsigned b = (c >> 16) & 0xff;\n\n    return QColor(r, g, b, alpha);\n}\n\n\n// Window (widget) management.\nWindow::~Window()\n{\n}\n\nvoid Window::Destroy()\n{\n    QWidget *w = PWindow(wid);\n\n    if (w)\n    {\n        // Delete the widget next time round the event loop rather than\n        // straight away.  This gets round a problem when auto-completion lists\n        // are cancelled after an entry has been double-clicked, ie. the list's\n        // dtor is called from one of the list's slots.  There are other ways\n        // around the problem but this is the simplest and doesn't seem to\n        // cause problems of its own.\n        w->deleteLater();\n        wid = 0;\n    }\n}\n\nbool Window::HasFocus()\n{\n    return PWindow(wid)->hasFocus();\n}\n\nPRectangle Window::GetPosition()\n{\n    QWidget *w = PWindow(wid);\n\n    // Before any size allocated pretend its big enough not to be scrolled.\n    PRectangle rc(0,0,5000,5000);\n\n    if (w)\n    {\n        const QRect &r = w->geometry();\n\n        rc.right = r.right() - r.left() + 1;\n        rc.bottom = r.bottom() - r.top() + 1;\n    }\n\n    return rc;\n}\n\nvoid Window::SetPosition(PRectangle rc)\n{\n    PWindow(wid)->setGeometry(rc.left, rc.top, rc.right - rc.left,\n            rc.bottom - rc.top);\n}\n\nvoid Window::SetPositionRelative(PRectangle rc, Window relativeTo)\n{\n    QWidget *rel = PWindow(relativeTo.wid);\n    QPoint pos = rel->mapToGlobal(rel->pos());\n\n    int x = pos.x() + rc.left;\n    int y = pos.y() + rc.top;\n\n    PWindow(wid)->setGeometry(x, y, rc.right - rc.left, rc.bottom - rc.top);\n}\n\nPRectangle Window::GetClientPosition()\n{\n    return GetPosition();\n}\n\nvoid Window::Show(bool show)\n{\n    QWidget *w = PWindow(wid);\n\n    if (show)\n        w->show();\n    else\n        w->hide();\n}\n\nvoid Window::InvalidateAll()\n{\n    QWidget *w = PWindow(wid);\n\n    if (w)\n        w->update();\n}\n\nvoid Window::InvalidateRectangle(PRectangle rc)\n{\n    QWidget *w = PWindow(wid);\n\n    if (w)\n        w->update(rc.left, rc.top, rc.right - rc.left, rc.bottom - rc.top);\n}\n\nvoid Window::SetFont(Font &font)\n{\n    PWindow(wid)->setFont(*PFont(font.GetID()));\n}\n\nvoid Window::SetCursor(Cursor curs)\n{\n    Qt::CursorShape qc;\n\n    switch (curs)\n    {\n    case cursorText:\n        qc = Qt::IBeamCursor;\n        break;\n\n    case cursorUp:\n        qc = Qt::UpArrowCursor;\n        break;\n\n    case cursorWait:\n        qc = Qt::WaitCursor;\n        break;\n\n    case cursorHoriz:\n        qc = Qt::SizeHorCursor;\n        break;\n\n    case cursorVert:\n        qc = Qt::SizeVerCursor;\n        break;\n\n    case cursorHand:\n        qc = Qt::PointingHandCursor;\n        break;\n\n    default:\n        // Note that Qt doesn't have a standard cursor that could be used to\n        // implement cursorReverseArrow.\n        qc = Qt::ArrowCursor;\n    }\n\n    PWindow(wid)->setCursor(qc);\n}\n\nvoid Window::SetTitle(const char *s)\n{\n    PWindow(wid)->setWindowTitle(s);\n}\n\nPRectangle Window::GetMonitorRect(Point pt)\n{\n    QPoint qpt = PWindow(wid)->mapToGlobal(QPoint(pt.x, pt.y));\n    QRect qr = QApplication::desktop()->availableGeometry(qpt);\n    qpt = PWindow(wid)->mapFromGlobal(qr.topLeft());\n\n    return PRectangle(qpt.x(), qpt.y(), qpt.x() + qr.width(), qpt.y() + qr.height());\n}\n\n\n// Menu management.\nMenu::Menu() : mid(0)\n{\n}\n\nvoid Menu::CreatePopUp()\n{\n    Destroy();\n    mid = new QsciSciPopup();\n}\n\nvoid Menu::Destroy()\n{\n    QsciSciPopup *m = PMenu(mid);\n\n    if (m)\n    {\n        delete m;\n        mid = 0;\n    }\n}\n\nvoid Menu::Show(Point pt, Window &)\n{\n    PMenu(mid)->popup(QPoint(pt.x, pt.y));\n}\n\n\nclass DynamicLibraryImpl : public DynamicLibrary\n{\npublic:\n    DynamicLibraryImpl(const char *modulePath)\n    {\n        m = new QLibrary(modulePath);\n        m->load();\n    }\n\n    virtual ~DynamicLibraryImpl()\n    {\n        if (m)\n            delete m;\n    }\n\n    virtual Function FindFunction(const char *name)\n    {\n        if (m)\n            return (Function)m->resolve(name);\n\n        return 0;\n    }\n\n    virtual bool IsValid()\n    {\n        return m && m->isLoaded();\n    }\n\nprivate:\n    QLibrary* m;\n};\n\nDynamicLibrary *DynamicLibrary::Load(const char *modulePath)\n{\n    return new DynamicLibraryImpl(modulePath);\n}\n\n\n// Elapsed time.  This implementation assumes that the maximum elapsed time is\n// less than 48 hours.\nElapsedTime::ElapsedTime()\n{\n    QTime now = QTime::currentTime();\n\n    bigBit = now.hour() * 60 * 60 + now.minute() * 60 + now.second();\n    littleBit = now.msec();\n}\n\ndouble ElapsedTime::Duration(bool reset)\n{\n    long endBigBit, endLittleBit;\n    QTime now = QTime::currentTime();\n\n    endBigBit = now.hour() * 60 * 60 + now.minute() * 60 + now.second();\n    endLittleBit = now.msec();\n\n    double duration = endBigBit - bigBit;\n\n    if (duration < 0 || (duration == 0 && endLittleBit < littleBit))\n        duration += 24 * 60 * 60;\n\n    duration += (endLittleBit - littleBit) / 1000.0;\n\n    if (reset)\n    {\n        bigBit = endBigBit;\n        littleBit = endLittleBit;\n    }\n\n    return duration;\n}\n\n\n// Manage system wide parameters.\nColourDesired Platform::Chrome()\n{\n    return ColourDesired(0xe0,0xe0,0xe0);\n}\n\nColourDesired Platform::ChromeHighlight()\n{\n    return ColourDesired(0xff,0xff,0xff);\n}\n\nconst char *Platform::DefaultFont()\n{\n    static QByteArray def_font;\n\n    def_font = QApplication::font().family().toLatin1();\n\n    return def_font.constData();\n}\n\nint Platform::DefaultFontSize()\n{\n    return QApplication::font().pointSize();\n}\n\nunsigned int Platform::DoubleClickTime()\n{\n    return QApplication::doubleClickInterval();\n}\n\nbool Platform::MouseButtonBounce()\n{\n    return true;\n}\n\nvoid Platform::DebugDisplay(const char *s)\n{\n    qDebug(\"%s\", s);\n}\n\nbool Platform::IsKeyDown(int)\n{\n    return false;\n}\n\nlong Platform::SendScintilla(WindowID w, unsigned int msg,\n        unsigned long wParam, long lParam)\n{\n    // This is never called.\n    return 0;\n}\n\nlong Platform::SendScintillaPointer(WindowID w, unsigned int msg,\n        unsigned long wParam, void *lParam)\n{\n    // This is never called.\n    return 0;\n}\n\nbool Platform::IsDBCSLeadByte(int, char)\n{\n    // We don't support DBCS.\n    return false;\n}\n\nint Platform::DBCSCharLength(int, const char *)\n{\n    // We don't support DBCS.\n    return 1;\n}\n\nint Platform::DBCSCharMaxLength()\n{\n    // We don't support DBCS.\n    return 2;\n}\n\nint Platform::Minimum(int a, int b)\n{\n    return (a < b) ? a : b;\n}\n\nint Platform::Maximum(int a, int b)\n{\n    return (a > b) ? a : b;\n}\n\nint Platform::Clamp(int val, int minVal, int maxVal)\n{\n    if (val > maxVal)\n        val = maxVal;\n\n    if (val < minVal)\n        val = minVal;\n\n    return val;\n}\n\n\n//#define TRACE\n\n#ifdef TRACE\nvoid Platform::DebugPrintf(const char *format, ...)\n{\n    char buffer[2000];\n    va_list pArguments;\n\n    va_start(pArguments, format);\n    vsprintf(buffer, format, pArguments);\n    va_end(pArguments);\n\n    DebugDisplay(buffer);\n}\n#else\nvoid Platform::DebugPrintf(const char *, ...)\n{\n}\n#endif\n\nstatic bool assertionPopUps = true;\n\nbool Platform::ShowAssertionPopUps(bool assertionPopUps_)\n{\n    bool ret = assertionPopUps;\n\n    assertionPopUps = assertionPopUps_;\n\n    return ret;\n}\n\nvoid Platform::Assert(const char *c, const char *file, int line)\n{\n    qFatal(\"Assertion [%s] failed at %s %d\\n\", c, file, line);\n}\n\nQSCI_END_SCI_NAMESPACE\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qsciabstractapis.h",
    "content": "// This module defines interface to the QsciAbstractAPIs class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCIABSTRACTAPIS_H\n#define QSCIABSTRACTAPIS_H\n\n#include <QList>\n#include <QObject>\n#include <QStringList>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qsciscintilla.h>\n\n\nclass QsciLexer;\n\n\n//! \\brief The QsciAbstractAPIs class represents the interface to the textual\n//! API information used in call tips and for auto-completion.  A sub-class\n//! will provide the actual implementation of the interface.\n//!\n//! API information is specific to a particular language lexer but can be\n//! shared by multiple instances of the lexer.\nclass QSCINTILLA_EXPORT QsciAbstractAPIs : public QObject\n{\n    Q_OBJECT\n\npublic:\n    //! Constructs a QsciAbstractAPIs instance attached to lexer \\a lexer.  \\a\n    //! lexer becomes the instance's parent object although the instance can\n    //! also be subsequently attached to other lexers.\n    QsciAbstractAPIs(QsciLexer *lexer);\n\n    //! Destroy the QsciAbstractAPIs instance.\n    virtual ~QsciAbstractAPIs();\n\n    //! Return the lexer that the instance is attached to.\n    QsciLexer *lexer() const;\n\n    //! Update the list \\a list with API entries derived from \\a context.  \\a\n    //! context is the list of words in the text preceding the cursor position.\n    //! The characters that make up a word and the characters that separate\n    //! words are defined by the lexer.  The last word is a partial word and\n    //! may be empty if the user has just entered a word separator.\n    virtual void updateAutoCompletionList(const QStringList &context,\n            QStringList &list) = 0;\n\n    //! This is called when the user selects the entry \\a selection from the\n    //! auto-completion list.  A sub-class can use this as a hint to provide\n    //! more specific API entries in future calls to\n    //! updateAutoCompletionList().  The default implementation does nothing.\n    virtual void autoCompletionSelected(const QString &selection);\n\n    //! Return the call tips valid for the context \\a context.  (Note that the\n    //! last word of the context will always be empty.)  \\a commas is the number\n    //! of commas the user has typed after the context and before the cursor\n    //! position.  The exact position of the list of call tips can be adjusted\n    //! by specifying a corresponding left character shift in \\a shifts.  This\n    //! is normally done to correct for any displayed context according to \\a\n    //! style.\n    //!\n    //! \\sa updateAutoCompletionList()\n    virtual QStringList callTips(const QStringList &context, int commas,\n            QsciScintilla::CallTipsStyle style, QList<int> &shifts) = 0;\n\nprivate:\n    QsciLexer *lex;\n\n    QsciAbstractAPIs(const QsciAbstractAPIs &);\n    QsciAbstractAPIs &operator=(const QsciAbstractAPIs &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qsciapis.h",
    "content": "// This module defines interface to the QsciAPIs class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCIAPIS_H\n#define QSCIAPIS_H\n\n#include <QList>\n#include <QObject>\n#include <QPair>\n#include <QStringList>\n\n#include <Qsci/qsciabstractapis.h>\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qsciscintilla.h>\n\n\nclass QsciAPIsPrepared;\nclass QsciAPIsWorker;\nclass QsciLexer;\n\n\n//! \\brief The QsciAPIs class provies an implementation of the textual API\n//! information used in call tips and for auto-completion.\n//!\n//! Raw API information is read from one or more files.  Each API function is\n//! described by a single line of text comprising the function's name, followed\n//! by the function's optional comma separated parameters enclosed in\n//! parenthesis, and finally followed by optional explanatory text.\n//!\n//! A function name may be followed by a `?' and a number.  The number is used\n//! by auto-completion to display a registered QPixmap with the function name.\n//!\n//! All function names are used by auto-completion, but only those that include\n//! function parameters are used in call tips.\n//!\n//! QScintilla only deals with prepared API information and not the raw\n//! information described above.  This is done so that large APIs can be\n//! handled while still being responsive to user input.  The conversion of raw\n//! information to prepared information is time consuming (think tens of\n//! seconds) and implemented in a separate thread.  Prepared information can\n//! be quickly saved to and loaded from files.  Such files are portable between\n//! different architectures.\n//!\n//! QScintilla based applications that want to support large APIs would\n//! normally provide the user with the ability to specify a set of, possibly\n//! project specific, raw API files and convert them to prepared files that are\n//! loaded quickly when the application is invoked.\nclass QSCINTILLA_EXPORT QsciAPIs : public QsciAbstractAPIs\n{\n    Q_OBJECT\n\npublic:\n    //! Constructs a QsciAPIs instance attached to lexer \\a lexer.  \\a lexer\n    //! becomes the instance's parent object although the instance can also be\n    //! subsequently attached to other lexers.\n    QsciAPIs(QsciLexer *lexer);\n\n    //! Destroy the QsciAPIs instance.\n    virtual ~QsciAPIs();\n\n    //! Add the single raw API entry \\a entry to the current set.\n    //!\n    //! \\sa clear(), load(), remove()\n    void add(const QString &entry);\n\n    //! Deletes all raw API information.\n    //!\n    //! \\sa add(), load(), remove()\n    void clear();\n\n    //! Load the API information from the file named \\a filename, adding it to\n    //! the current set.  Returns true if successful, otherwise false.\n    bool load(const QString &filename);\n\n    //! Remove the single raw API entry \\a entry from the current set.\n    //!\n    //! \\sa add(), clear(), load()\n    void remove(const QString &entry);\n\n    //! Convert the current raw API information to prepared API information.\n    //! This is implemented by a separate thread.\n    //!\n    //! \\sa cancelPreparation()\n    void prepare();\n\n    //! Cancel the conversion of the current raw API information to prepared\n    //! API information.\n    //!\n    //! \\sa prepare()\n    void cancelPreparation();\n\n    //! Return the default name of the prepared API information file.  It is\n    //! based on the name of the associated lexer and in the directory defined\n    //! by the QSCIDIR environment variable.  If the environment variable isn't\n    //! set then $HOME/.qsci is used.\n    QString defaultPreparedName() const;\n\n    //! Check to see is a prepared API information file named \\a filename\n    //! exists.  If \\a filename is empty then the value returned by\n    //! defaultPreparedName() is used.  Returns true if successful, otherwise\n    //! false.\n    //!\n    //! \\sa defaultPreparedName()\n    bool isPrepared(const QString &filename = QString()) const;\n\n    //! Load the prepared API information from the file named \\a filename.  If\n    //! \\a filename is empty then a name is constructed based on the name of\n    //! the associated lexer and saved in the directory defined by the QSCIDIR\n    //! environment variable.  If the environment variable isn't set then\n    //! $HOME/.qsci is used.  Returns true if successful, otherwise false.\n    bool loadPrepared(const QString &filename = QString());\n\n    //! Save the prepared API information to the file named \\a filename.  If\n    //! \\a filename is empty then a name is constructed based on the name of\n    //! the associated lexer and saved in the directory defined by the QSCIDIR\n    //! environment variable.  If the environment variable isn't set then\n    //! $HOME/.qsci is used.  Returns true if successful, otherwise false.\n    bool savePrepared(const QString &filename = QString()) const;\n\n    //! \\reimp\n    virtual void updateAutoCompletionList(const QStringList &context,\n            QStringList &list);\n\n    //! \\reimp\n    virtual void autoCompletionSelected(const QString &sel);\n\n    //! \\reimp\n    virtual QStringList callTips(const QStringList &context, int commas,\n            QsciScintilla::CallTipsStyle style, QList<int> &shifts);\n\n    //! \\internal Reimplemented to receive termination events from the worker\n    //! thread.\n    virtual bool event(QEvent *e);\n\n    //! Return a list of the installed raw API file names for the associated\n    //! lexer.\n    QStringList installedAPIFiles() const;\n\nsignals:\n    //! This signal is emitted when the conversion of raw API information to\n    //! prepared API information has been cancelled.\n    //!\n    //! \\sa apiPreparationFinished(), apiPreparationStarted()\n    void apiPreparationCancelled();\n\n    //! This signal is emitted when the conversion of raw API information to\n    //! prepared API information starts and can be used to give some visual\n    //! feedback to the user.\n    //!\n    //! \\sa apiPreparationCancelled(), apiPreparationFinished()\n    void apiPreparationStarted();\n    \n    //! This signal is emitted when the conversion of raw API information to\n    //! prepared API information has finished.\n    //!\n    //! \\sa apiPreparationCancelled(), apiPreparationStarted()\n    void apiPreparationFinished();\n\nprivate:\n    friend class QsciAPIsPrepared;\n    friend class QsciAPIsWorker;\n\n    // This indexes a word in a set of raw APIs.  The first part indexes the\n    // entry in the set, the second part indexes the word within the entry.\n    typedef QPair<quint32, quint32> WordIndex;\n\n    // This is a list of word indexes.\n    typedef QList<WordIndex> WordIndexList;\n\n    QsciAPIsWorker *worker;\n    QStringList old_context;\n    QStringList::const_iterator origin;\n    int origin_len;\n    QString unambiguous_context;\n    QStringList apis;\n    QsciAPIsPrepared *prep;\n\n    static bool enoughCommas(const QString &s, int commas);\n\n    QStringList positionOrigin(const QStringList &context, QString &path);\n    bool originStartsWith(const QString &path, const QString &wsep);\n    const WordIndexList *wordIndexOf(const QString &word) const;\n    void lastCompleteWord(const QString &word, QStringList &with_context,\n            bool &unambig);\n    void lastPartialWord(const QString &word, QStringList &with_context,\n            bool &unambig);\n    void addAPIEntries(const WordIndexList &wl, bool complete,\n            QStringList &with_context, bool &unambig);\n    QString prepName(const QString &filename, bool mkpath = false) const;\n    void deleteWorker();\n\n    QsciAPIs(const QsciAPIs &);\n    QsciAPIs &operator=(const QsciAPIs &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscicommand.h",
    "content": "// This defines the interface to the QsciCommand class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCICOMMAND_H\n#define QSCICOMMAND_H\n\n#include <qstring.h>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qsciscintillabase.h>\n\n\nclass QsciScintilla;\n\n\n//! \\brief The QsciCommand class represents an internal editor command that may\n//! have one or two keys bound to it.\n//!\n//! Methods are provided to change the keys bound to the command and to remove\n//! a key binding.  Each command has a user friendly description of the command\n//! for use in key mapping dialogs.\nclass QSCINTILLA_EXPORT QsciCommand\n{\npublic:\n    //! This enum defines the different commands that can be assigned to a key.\n    enum Command {\n        //! Move down one line.\n        LineDown = QsciScintillaBase::SCI_LINEDOWN,\n\n        //! Extend the selection down one line.\n        LineDownExtend = QsciScintillaBase::SCI_LINEDOWNEXTEND,\n\n        //! Extend the rectangular selection down one line.\n        LineDownRectExtend = QsciScintillaBase::SCI_LINEDOWNRECTEXTEND,\n\n        //! Scroll the view down one line.\n        LineScrollDown = QsciScintillaBase::SCI_LINESCROLLDOWN,\n\n        //! Move up one line.\n        LineUp = QsciScintillaBase::SCI_LINEUP,\n\n        //! Extend the selection up one line.\n        LineUpExtend = QsciScintillaBase::SCI_LINEUPEXTEND,\n\n        //! Extend the rectangular selection up one line.\n        LineUpRectExtend = QsciScintillaBase::SCI_LINEUPRECTEXTEND,\n\n        //! Scroll the view up one line.\n        LineScrollUp = QsciScintillaBase::SCI_LINESCROLLUP,\n\n        //! Scroll to the start of the document.\n        ScrollToStart = QsciScintillaBase::SCI_SCROLLTOSTART,\n\n        //! Scroll to the end of the document.\n        ScrollToEnd = QsciScintillaBase::SCI_SCROLLTOEND,\n\n        //! Scroll vertically to centre the current line.\n        VerticalCentreCaret = QsciScintillaBase::SCI_VERTICALCENTRECARET,\n\n        //! Move down one paragraph.\n        ParaDown = QsciScintillaBase::SCI_PARADOWN,\n\n        //! Extend the selection down one paragraph.\n        ParaDownExtend = QsciScintillaBase::SCI_PARADOWNEXTEND,\n\n        //! Move up one paragraph.\n        ParaUp = QsciScintillaBase::SCI_PARAUP,\n\n        //! Extend the selection up one paragraph.\n        ParaUpExtend = QsciScintillaBase::SCI_PARAUPEXTEND,\n\n        //! Move left one character.\n        CharLeft = QsciScintillaBase::SCI_CHARLEFT,\n\n        //! Extend the selection left one character.\n        CharLeftExtend = QsciScintillaBase::SCI_CHARLEFTEXTEND,\n\n        //! Extend the rectangular selection left one character.\n        CharLeftRectExtend = QsciScintillaBase::SCI_CHARLEFTRECTEXTEND,\n\n        //! Move right one character.\n        CharRight = QsciScintillaBase::SCI_CHARRIGHT,\n\n        //! Extend the selection right one character.\n        CharRightExtend = QsciScintillaBase::SCI_CHARRIGHTEXTEND,\n\n        //! Extend the rectangular selection right one character.\n        CharRightRectExtend = QsciScintillaBase::SCI_CHARRIGHTRECTEXTEND,\n\n        //! Move left one word.\n        WordLeft = QsciScintillaBase::SCI_WORDLEFT,\n\n        //! Extend the selection left one word.\n        WordLeftExtend = QsciScintillaBase::SCI_WORDLEFTEXTEND,\n\n        //! Move right one word.\n        WordRight = QsciScintillaBase::SCI_WORDRIGHT,\n\n        //! Extend the selection right one word.\n        WordRightExtend = QsciScintillaBase::SCI_WORDRIGHTEXTEND,\n\n        //! Move to the end of the previous word.\n        WordLeftEnd = QsciScintillaBase::SCI_WORDLEFTEND,\n\n        //! Extend the selection to the end of the previous word.\n        WordLeftEndExtend = QsciScintillaBase::SCI_WORDLEFTENDEXTEND,\n\n        //! Move to the end of the next word.\n        WordRightEnd = QsciScintillaBase::SCI_WORDRIGHTEND,\n\n        //! Extend the selection to the end of the next word.\n        WordRightEndExtend = QsciScintillaBase::SCI_WORDRIGHTENDEXTEND,\n\n        //! Move left one word part.\n        WordPartLeft = QsciScintillaBase::SCI_WORDPARTLEFT,\n\n        //! Extend the selection left one word part.\n        WordPartLeftExtend = QsciScintillaBase::SCI_WORDPARTLEFTEXTEND,\n\n        //! Move right one word part.\n        WordPartRight = QsciScintillaBase::SCI_WORDPARTRIGHT,\n\n        //! Extend the selection right one word part.\n        WordPartRightExtend = QsciScintillaBase::SCI_WORDPARTRIGHTEXTEND,\n\n        //! Move to the start of the document line.\n        Home = QsciScintillaBase::SCI_HOME,\n\n        //! Extend the selection to the start of the document line.\n        HomeExtend = QsciScintillaBase::SCI_HOMEEXTEND,\n\n        //! Extend the rectangular selection to the start of the document line.\n        HomeRectExtend = QsciScintillaBase::SCI_HOMERECTEXTEND,\n\n        //! Move to the start of the displayed line.\n        HomeDisplay = QsciScintillaBase::SCI_HOMEDISPLAY,\n\n        //! Extend the selection to the start of the displayed line.\n        HomeDisplayExtend = QsciScintillaBase::SCI_HOMEDISPLAYEXTEND,\n\n        //! Move to the start of the displayed or document line.\n        HomeWrap = QsciScintillaBase::SCI_HOMEWRAP,\n\n        //! Extend the selection to the start of the displayed or document\n        //! line.\n        HomeWrapExtend = QsciScintillaBase::SCI_HOMEWRAPEXTEND,\n\n        //! Move to the first visible character in the document line.\n        VCHome = QsciScintillaBase::SCI_VCHOME,\n\n        //! Extend the selection to the first visible character in the document\n        //! line.\n        VCHomeExtend = QsciScintillaBase::SCI_VCHOMEEXTEND,\n\n        //! Extend the rectangular selection to the first visible character in\n        //! the document line.\n        VCHomeRectExtend = QsciScintillaBase::SCI_VCHOMERECTEXTEND,\n\n        //! Move to the first visible character of the displayed or document\n        //! line.\n        VCHomeWrap = QsciScintillaBase::SCI_VCHOMEWRAP,\n\n        //! Extend the selection to the first visible character of the\n        //! displayed or document line.\n        VCHomeWrapExtend = QsciScintillaBase::SCI_VCHOMEWRAPEXTEND,\n\n        //! Move to the end of the document line.\n        LineEnd = QsciScintillaBase::SCI_LINEEND,\n\n        //! Extend the selection to the end of the document line.\n        LineEndExtend = QsciScintillaBase::SCI_LINEENDEXTEND,\n\n        //! Extend the rectangular selection to the end of the document line.\n        LineEndRectExtend = QsciScintillaBase::SCI_LINEENDRECTEXTEND,\n\n        //! Move to the end of the displayed line.\n        LineEndDisplay = QsciScintillaBase::SCI_LINEENDDISPLAY,\n\n        //! Extend the selection to the end of the displayed line.\n        LineEndDisplayExtend = QsciScintillaBase::SCI_LINEENDDISPLAYEXTEND,\n\n        //! Move to the end of the displayed or document line.\n        LineEndWrap = QsciScintillaBase::SCI_LINEENDWRAP,\n\n        //! Extend the selection to the end of the displayed or document line.\n        LineEndWrapExtend = QsciScintillaBase::SCI_LINEENDWRAPEXTEND,\n\n        //! Move to the start of the document.\n        DocumentStart = QsciScintillaBase::SCI_DOCUMENTSTART,\n\n        //! Extend the selection to the start of the document.\n        DocumentStartExtend = QsciScintillaBase::SCI_DOCUMENTSTARTEXTEND,\n\n        //! Move to the end of the document.\n        DocumentEnd = QsciScintillaBase::SCI_DOCUMENTEND,\n\n        //! Extend the selection to the end of the document.\n        DocumentEndExtend = QsciScintillaBase::SCI_DOCUMENTENDEXTEND,\n\n        //! Move up one page.\n        PageUp = QsciScintillaBase::SCI_PAGEUP,\n\n        //! Extend the selection up one page.\n        PageUpExtend = QsciScintillaBase::SCI_PAGEUPEXTEND,\n\n        //! Extend the rectangular selection up one page.\n        PageUpRectExtend = QsciScintillaBase::SCI_PAGEUPRECTEXTEND,\n\n        //! Move down one page.\n        PageDown = QsciScintillaBase::SCI_PAGEDOWN,\n\n        //! Extend the selection down one page.\n        PageDownExtend = QsciScintillaBase::SCI_PAGEDOWNEXTEND,\n\n        //! Extend the rectangular selection down one page.\n        PageDownRectExtend = QsciScintillaBase::SCI_PAGEDOWNRECTEXTEND,\n\n        //! Stuttered move up one page.\n        StutteredPageUp = QsciScintillaBase::SCI_STUTTEREDPAGEUP,\n\n        //! Stuttered extend the selection up one page.\n        StutteredPageUpExtend = QsciScintillaBase::SCI_STUTTEREDPAGEUPEXTEND,\n\n        //! Stuttered move down one page.\n        StutteredPageDown = QsciScintillaBase::SCI_STUTTEREDPAGEDOWN,\n\n        //! Stuttered extend the selection down one page.\n        StutteredPageDownExtend = QsciScintillaBase::SCI_STUTTEREDPAGEDOWNEXTEND,\n\n        //! Delete the current character.\n        Delete = QsciScintillaBase::SCI_CLEAR,\n\n        //! Delete the previous character.\n        DeleteBack = QsciScintillaBase::SCI_DELETEBACK,\n\n        //! Delete the previous character if not at start of line.\n        DeleteBackNotLine = QsciScintillaBase::SCI_DELETEBACKNOTLINE,\n\n        //! Delete the word to the left.\n        DeleteWordLeft = QsciScintillaBase::SCI_DELWORDLEFT,\n\n        //! Delete the word to the right.\n        DeleteWordRight = QsciScintillaBase::SCI_DELWORDRIGHT,\n\n        //! Delete right to the end of the next word.\n        DeleteWordRightEnd = QsciScintillaBase::SCI_DELWORDRIGHTEND,\n\n        //! Delete the line to the left.\n        DeleteLineLeft = QsciScintillaBase::SCI_DELLINELEFT,\n\n        //! Delete the line to the right.\n        DeleteLineRight = QsciScintillaBase::SCI_DELLINERIGHT,\n\n        //! Delete the current line.\n        LineDelete = QsciScintillaBase::SCI_LINEDELETE,\n\n        //! Cut the current line to the clipboard.\n        LineCut = QsciScintillaBase::SCI_LINECUT,\n\n        //! Copy the current line to the clipboard.\n        LineCopy = QsciScintillaBase::SCI_LINECOPY,\n\n        //! Transpose the current and previous lines.\n        LineTranspose = QsciScintillaBase::SCI_LINETRANSPOSE,\n\n        //! Duplicate the current line.\n        LineDuplicate = QsciScintillaBase::SCI_LINEDUPLICATE,\n\n        //! Select the whole document.\n        SelectAll = QsciScintillaBase::SCI_SELECTALL,\n\n        //! Move the selected lines up one line.\n        MoveSelectedLinesUp = QsciScintillaBase::SCI_MOVESELECTEDLINESUP,\n\n        //! Move the selected lines down one line.\n        MoveSelectedLinesDown = QsciScintillaBase::SCI_MOVESELECTEDLINESDOWN,\n\n        //! Duplicate the selection.\n        SelectionDuplicate = QsciScintillaBase::SCI_SELECTIONDUPLICATE,\n\n        //! Convert the selection to lower case.\n        SelectionLowerCase = QsciScintillaBase::SCI_LOWERCASE,\n\n        //! Convert the selection to upper case.\n        SelectionUpperCase = QsciScintillaBase::SCI_UPPERCASE,\n\n        //! Cut the selection to the clipboard.\n        SelectionCut = QsciScintillaBase::SCI_CUT,\n\n        //! Copy the selection to the clipboard.\n        SelectionCopy = QsciScintillaBase::SCI_COPY,\n\n        //! Paste from the clipboard.\n        Paste = QsciScintillaBase::SCI_PASTE,\n\n        //! Toggle insert/overtype.\n        EditToggleOvertype = QsciScintillaBase::SCI_EDITTOGGLEOVERTYPE,\n\n        //! Insert a platform dependent newline.\n        Newline = QsciScintillaBase::SCI_NEWLINE,\n\n        //! Insert a formfeed.\n        Formfeed = QsciScintillaBase::SCI_FORMFEED,\n\n        //! Indent one level.\n        Tab = QsciScintillaBase::SCI_TAB,\n\n        //! De-indent one level.\n        Backtab = QsciScintillaBase::SCI_BACKTAB,\n\n        //! Cancel any current operation.\n        Cancel = QsciScintillaBase::SCI_CANCEL,\n\n        //! Undo the last command.\n        Undo = QsciScintillaBase::SCI_UNDO,\n\n        //! Redo the last command.\n        Redo = QsciScintillaBase::SCI_REDO,\n\n        //! Zoom in.\n        ZoomIn = QsciScintillaBase::SCI_ZOOMIN,\n\n        //! Zoom out.\n        ZoomOut = QsciScintillaBase::SCI_ZOOMOUT,\n    };\n\n    //! Return the command that will be executed by this instance.\n    Command command() const {return scicmd;}\n\n    //! Execute the command.\n    void execute();\n\n    //! Binds the key \\a key to the command.  If \\a key is 0 then the key\n    //! binding is removed.  If \\a key is invalid then the key binding is\n    //! unchanged.  Valid keys are any visible or control character or any\n    //! of \\c Qt::Key_Down, \\c Qt::Key_Up, \\c Qt::Key_Left, \\c Qt::Key_Right,\n    //! \\c Qt::Key_Home, \\c Qt::Key_End, \\c Qt::Key_PageUp,\n    //! \\c Qt::Key_PageDown, \\c Qt::Key_Delete, \\c Qt::Key_Insert,\n    //! \\c Qt::Key_Escape, \\c Qt::Key_Backspace, \\c Qt::Key_Tab,\n    //! \\c Qt::Key_Backtab, \\c Qt::Key_Return, \\c Qt::Key_Enter,\n    //! \\c Qt::Key_Super_L, \\c Qt::Key_Super_R or \\c Qt::Key_Menu.  Keys may be\n    //! modified with any combination of \\c Qt::ShiftModifier,\n    //! \\c Qt::ControlModifier, \\c Qt::AltModifier and \\c Qt::MetaModifier.\n    //!\n    //! \\sa key(), setAlternateKey(), validKey()\n    void setKey(int key);\n\n    //! Binds the alternate key \\a altkey to the command.  If \\a key is 0\n    //! then the alternate key binding is removed.\n    //!\n    //! \\sa alternateKey(), setKey(), validKey()\n    void setAlternateKey(int altkey);\n\n    //! The key that is currently bound to the command is returned.\n    //!\n    //! \\sa setKey(), alternateKey()\n    int key() const {return qkey;}\n\n    //! The alternate key that is currently bound to the command is\n    //! returned.\n    //!\n    //! \\sa setAlternateKey(), key()\n    int alternateKey() const {return qaltkey;}\n\n    //! If the key \\a key is valid then true is returned.\n    static bool validKey(int key);\n\n    //! The user friendly description of the command is returned.\n    QString description() const;\n\nprivate:\n    friend class QsciCommandSet;\n\n    QsciCommand(QsciScintilla *qs, Command cmd, int key, int altkey,\n            const char *desc);\n\n    void bindKey(int key,int &qk,int &scik);\n\n    QsciScintilla *qsCmd;\n    Command scicmd;\n    int qkey, scikey, qaltkey, scialtkey;\n    const char *descCmd;\n\n    QsciCommand(const QsciCommand &);\n    QsciCommand &operator=(const QsciCommand &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscicommandset.h",
    "content": "// This defines the interface to the QsciCommandSet class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCICOMMANDSET_H\n#define QSCICOMMANDSET_H\n\n#include <qglobal.h>\n\n#include <QList>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscicommand.h>\n\n\nQT_BEGIN_NAMESPACE\nclass QSettings;\nQT_END_NAMESPACE\n\nclass QsciScintilla;\n\n\n//! \\brief The QsciCommandSet class represents the set of all internal editor\n//! commands that may have keys bound.\n//!\n//! Methods are provided to access the individual commands and to read and\n//! write the current bindings from and to settings files.\nclass QSCINTILLA_EXPORT QsciCommandSet\n{\npublic:\n    //! The key bindings for each command in the set are read from the\n    //! settings \\a qs.  \\a prefix is prepended to the key of each entry.\n    //! true is returned if there was no error.\n    //!\n    //! \\sa writeSettings()\n    bool readSettings(QSettings &qs, const char *prefix = \"/Scintilla\");\n\n    //! The key bindings for each command in the set are written to the\n    //! settings \\a qs.  \\a prefix is prepended to the key of each entry.\n    //! true is returned if there was no error.\n    //!\n    //! \\sa readSettings()\n    bool writeSettings(QSettings &qs, const char *prefix = \"/Scintilla\");\n\n    //! The commands in the set are returned as a list.\n    QList<QsciCommand *> &commands() {return cmds;}\n\n    //! The primary keys bindings for all commands are removed.\n    void clearKeys();\n\n    //! The alternate keys bindings for all commands are removed.\n    void clearAlternateKeys();\n\n    // Find the command that is bound to \\a key.\n    QsciCommand *boundTo(int key) const;\n\n    // Find a specific command \\a command.\n    QsciCommand *find(QsciCommand::Command command) const;\n\nprivate:\n    friend class QsciScintilla;\n\n    QsciCommandSet(QsciScintilla *qs);\n    ~QsciCommandSet();\n\n    QsciScintilla *qsci;\n    QList<QsciCommand *> cmds;\n\n    QsciCommandSet(const QsciCommandSet &);\n    QsciCommandSet &operator=(const QsciCommandSet &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscidocument.h",
    "content": "// This defines the interface to the QsciDocument class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCIDOCUMENT_H\n#define QSCIDOCUMENT_H\n\n#include <Qsci/qsciglobal.h>\n\n\nclass QsciScintillaBase;\nclass QsciDocumentP;\n\n\n//! \\brief The QsciDocument class represents a document to be edited.\n//!\n//! It is an opaque class that can be attached to multiple instances of\n//! QsciScintilla to create different simultaneous views of the same document.\n//! QsciDocument uses implicit sharing so that copying class instances is a\n//! cheap operation.\nclass QSCINTILLA_EXPORT QsciDocument\n{\npublic:\n    //! Create a new unattached document.\n    QsciDocument();\n    virtual ~QsciDocument();\n\n    QsciDocument(const QsciDocument &);\n    QsciDocument &operator=(const QsciDocument &);\n\nprivate:\n    friend class QsciScintilla;\n\n    void attach(const QsciDocument &that);\n    void detach();\n    void display(QsciScintillaBase *qsb, const QsciDocument *from);\n    void undisplay(QsciScintillaBase *qsb);\n\n    bool isModified() const;\n    void setModified(bool m);\n\n    QsciDocumentP *pdoc;\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qsciglobal.h",
    "content": "// This module defines various things common to all of the Scintilla Qt port.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCIGLOBAL_H\n#define QSCIGLOBAL_H\n\n#include <qglobal.h>\n\n\n#define QSCINTILLA_VERSION      0x020a00\n#define QSCINTILLA_VERSION_STR  \"2.10\"\n\n\n// Define QSCINTILLA_MAKE_DLL to create a QScintilla shared library, or\n// define QSCINTILLA_DLL to link against a QScintilla shared library, or define\n// neither to either build or link against a static QScintilla library.\n#if defined(QSCINTILLA_DLL)\n#define QSCINTILLA_EXPORT       Q_DECL_IMPORT\n#elif defined(QSCINTILLA_MAKE_DLL)\n#define QSCINTILLA_EXPORT       Q_DECL_EXPORT\n#else\n#define QSCINTILLA_EXPORT\n#endif\n\n\n#if !defined(QT_BEGIN_NAMESPACE)\n#define QT_BEGIN_NAMESPACE\n#define QT_END_NAMESPACE\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexer.h",
    "content": "// This defines the interface to the QsciLexer class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXER_H\n#define QSCILEXER_H\n\n#include <QColor>\n#include <QFont>\n#include <QMap>\n#include <QObject>\n#include <QString>\n\n#include <Qsci/qsciglobal.h>\n\n\nQT_BEGIN_NAMESPACE\nclass QSettings;\nQT_END_NAMESPACE\n\nclass QsciAbstractAPIs;\nclass QsciScintilla;\n\n\n//! \\brief The QsciLexer class is an abstract class used as a base for language\n//! lexers.\n//!\n//! A lexer scans the text breaking it up into separate language objects, e.g.\n//! keywords, strings, operators.  The lexer then uses a different style to\n//! draw each object.  A style is identified by a style number and has a number\n//! of attributes, including colour and font.  A specific language lexer will\n//! implement appropriate default styles which can be overriden by an\n//! application by further sub-classing the specific language lexer.\n//!\n//! A lexer may provide one or more sets of words to be recognised as keywords.\n//! Most lexers only provide one set, but some may support languages embedded\n//! in other languages and provide several sets.\n//!\n//! QsciLexer provides convenience methods for saving and restoring user\n//! preferences for fonts and colours.\n//!\n//! If you want to write a lexer for a new language then you can add it to the\n//! underlying Scintilla code and implement a corresponding QsciLexer sub-class\n//! to manage the different styles used.  Alternatively you can implement a\n//! sub-class of QsciLexerCustom.\nclass QSCINTILLA_EXPORT QsciLexer : public QObject\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexer with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexer(QObject *parent = 0);\n\n    //! Destroy the QSciLexer.\n    virtual ~QsciLexer();\n\n    //! Returns the name of the language.  It must be re-implemented by a\n    //! sub-class.\n    virtual const char *language() const = 0;\n\n    //! Returns the name of the lexer.  If 0 is returned then the lexer's\n    //! numeric identifier is used.  The default implementation returns 0.\n    //!\n    //! \\sa lexerId()\n    virtual const char *lexer() const;\n\n    //! Returns the identifier (i.e. a QsciScintillaBase::SCLEX_* value) of the\n    //! lexer.  This is only used if lexer() returns 0.  The default\n    //! implementation returns QsciScintillaBase::SCLEX_CONTAINER.\n    //!\n    //! \\sa lexer()\n    virtual int lexerId() const;\n\n    //! Returns the current API set or 0 if there isn't one.\n    //!\n    //! \\sa setAPIs()\n    QsciAbstractAPIs *apis() const;\n\n    //! Returns the characters that can fill up auto-completion.\n    virtual const char *autoCompletionFillups() const;\n\n    //! Returns the list of character sequences that can separate\n    //! auto-completion words.  The first in the list is assumed to be the\n    //! sequence used to separate words in the lexer's API files.\n    virtual QStringList autoCompletionWordSeparators() const;\n\n    //! Returns the auto-indentation style.  The default is 0 if the\n    //! language is block structured, or QsciScintilla::AiMaintain if not.\n    //!\n    //! \\sa setAutoIndentStyle(), QsciScintilla::AiMaintain,\n    //! QsciScintilla::AiOpening, QsciScintilla::AiClosing\n    int autoIndentStyle();\n\n    //! Returns a space separated list of words or characters in a particular\n    //! style that define the end of a block for auto-indentation.  The style\n    //! is returned via \\a style.\n    virtual const char *blockEnd(int *style = 0) const;\n\n    //! Returns the number of lines prior to the current one when determining\n    //! the scope of a block when auto-indenting.\n    virtual int blockLookback() const;\n\n    //! Returns a space separated list of words or characters in a particular\n    //! style that define the start of a block for auto-indentation.  The style\n    //! is returned via \\a style.\n    virtual const char *blockStart(int *style = 0) const;\n\n    //! Returns a space separated list of keywords in a particular style that\n    //! define the start of a block for auto-indentation.  The style is\n    //! returned via \\a style.\n    virtual const char *blockStartKeyword(int *style = 0) const;\n\n    //! Returns the style used for braces for brace matching.\n    virtual int braceStyle() const;\n\n    //! Returns true if the language is case sensitive.  The default is true.\n    virtual bool caseSensitive() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //! The default colour is that returned by defaultColor().\n    //!\n    //! \\sa defaultColor(), paper()\n    virtual QColor color(int style) const;\n\n    //! Returns the end-of-line for style number \\a style.  The default is\n    //! false.\n    virtual bool eolFill(int style) const;\n\n    //! Returns the font for style number \\a style.  The default font is\n    //! that returned by defaultFont().\n    //!\n    //! \\sa defaultFont()\n    virtual QFont font(int style) const;\n\n    //! Returns the view used for indentation guides.\n    virtual int indentationGuideView() const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.  0 is returned if there\n    //! is no such set.\n    virtual const char *keywords(int set) const;\n\n    //! Returns the number of the style used for whitespace.  The default\n    //! implementation returns 0 which is the convention adopted by most\n    //! lexers.\n    virtual int defaultStyle() const;\n\n    //! Returns the descriptive name for style number \\a style.  For a valid\n    //! style number for this language a non-empty QString must be returned.\n    //! If the style number is invalid then an empty QString must be returned.\n    //! This is intended to be used in user preference dialogs.\n    virtual QString description(int style) const = 0;\n\n    //! Returns the background colour of the text for style number\n    //! \\a style.\n    //!\n    //! \\sa defaultPaper(), color()\n    virtual QColor paper(int style) const;\n\n    //! Returns the default text colour.\n    //!\n    //! \\sa setDefaultColor()\n    QColor defaultColor() const;\n\n    //! Returns the default text colour for style number \\a style.\n    virtual QColor defaultColor(int style) const;\n\n    //! Returns the default end-of-line for style number \\a style.  The default\n    //! is false.\n    virtual bool defaultEolFill(int style) const;\n\n    //! Returns the default font.\n    //!\n    //! \\sa setDefaultFont()\n    QFont defaultFont() const;\n\n    //! Returns the default font for style number \\a style.\n    virtual QFont defaultFont(int style) const;\n\n    //! Returns the default paper colour.\n    //!\n    //! \\sa setDefaultPaper()\n    QColor defaultPaper() const;\n\n    //! Returns the default paper colour for style number \\a style.\n    virtual QColor defaultPaper(int style) const;\n\n    //! Returns the QsciScintilla instance that the lexer is currently attached\n    //! to or 0 if it is unattached.\n    QsciScintilla *editor() const {return attached_editor;}\n\n    //! The current set of APIs is set to \\a apis.  If \\a apis is 0 then any\n    //! existing APIs for this lexer are removed.\n    //!\n    //! \\sa apis()\n    void setAPIs(QsciAbstractAPIs *apis);\n\n    //! The default text colour is set to \\a c.\n    //!\n    //! \\sa defaultColor(), color()\n    void setDefaultColor(const QColor &c);\n\n    //! The default font is set to \\a f.\n    //!\n    //! \\sa defaultFont(), font()\n    void setDefaultFont(const QFont &f);\n\n    //! The default paper colour is set to \\a c.\n    //!\n    //! \\sa defaultPaper(), paper()\n    void setDefaultPaper(const QColor &c);\n\n    //! \\internal Set the QsciScintilla instance that the lexer is attached to.\n    virtual void setEditor(QsciScintilla *editor);\n\n    //! The colour, paper, font and end-of-line for each style number, and\n    //! all lexer specific properties are read from the settings \\a qs.\n    //! \\a prefix is prepended to the key of each entry.  true is returned\n    //! if there was no error.\n    //!\n    //! \\sa writeSettings(), QsciScintilla::setLexer()\n    bool readSettings(QSettings &qs,const char *prefix = \"/Scintilla\");\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    virtual void refreshProperties();\n\n    //! Returns the number of style bits needed by the lexer.  Normally this\n    //! should only be re-implemented by custom lexers.\n    virtual int styleBitsNeeded() const;\n\n    //! Returns the string of characters that comprise a word.  The default is\n    //! 0 which implies the upper and lower case alphabetic characters and\n    //! underscore.\n    virtual const char *wordCharacters() const;\n\n    //! The colour, paper, font and end-of-line for each style number, and\n    //! all lexer specific properties are written to the settings \\a qs.\n    //! \\a prefix is prepended to the key of each entry.  true is returned\n    //! if there was no error.\n    //!\n    //! \\sa readSettings()\n    bool writeSettings(QSettings &qs,\n               const char *prefix = \"/Scintilla\") const;\n\npublic slots:\n    //! The auto-indentation style is set to \\a autoindentstyle.\n    //!\n    //! \\sa autoIndentStyle(), QsciScintilla::AiMaintain,\n    //! QsciScintilla::AiOpening, QsciScintilla::AiClosing\n    virtual void setAutoIndentStyle(int autoindentstyle);\n\n    //! The foreground colour for style number \\a style is set to \\a c.  If\n    //! \\a style is -1 then the colour is set for all styles.\n    virtual void setColor(const QColor &c,int style = -1);\n\n    //! The end-of-line fill for style number \\a style is set to\n    //! \\a eoffill.  If \\a style is -1 then the fill is set for all styles.\n    virtual void setEolFill(bool eoffill,int style = -1);\n\n    //! The font for style number \\a style is set to \\a f.  If \\a style is\n    //! -1 then the font is set for all styles.\n    virtual void setFont(const QFont &f,int style = -1);\n\n    //! The background colour for style number \\a style is set to \\a c.  If\n    //! \\a style is -1 then the colour is set for all styles.\n    virtual void setPaper(const QColor &c,int style = -1);\n\nsignals:\n    //! This signal is emitted when the foreground colour of style number\n    //! \\a style has changed.  The new colour is \\a c.\n    void colorChanged(const QColor &c,int style);\n\n    //! This signal is emitted when the end-of-file fill of style number\n    //! \\a style has changed.  The new fill is \\a eolfilled.\n    void eolFillChanged(bool eolfilled,int style);\n\n    //! This signal is emitted when the font of style number \\a style has\n    //! changed.  The new font is \\a f.\n    void fontChanged(const QFont &f,int style);\n\n    //! This signal is emitted when the background colour of style number\n    //! \\a style has changed.  The new colour is \\a c.\n    void paperChanged(const QColor &c,int style);\n\n    //! This signal is emitted when the value of the lexer property \\a prop\n    //! needs to be changed.  The new value is \\a val.\n    void propertyChanged(const char *prop, const char *val);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    virtual bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    virtual bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    struct StyleData {\n        QFont font;\n        QColor color;\n        QColor paper;\n        bool eol_fill;\n    };\n\n    struct StyleDataMap {\n        bool style_data_set;\n        QMap<int, StyleData> style_data;\n    };\n\n    StyleDataMap *style_map;\n\n    int autoIndStyle;\n    QFont defFont;\n    QColor defColor;\n    QColor defPaper;\n    QsciAbstractAPIs *apiSet;\n    QsciScintilla *attached_editor;\n\n    void setStyleDefaults() const;\n    StyleData &styleData(int style) const;\n\n    QsciLexer(const QsciLexer &);\n    QsciLexer &operator=(const QsciLexer &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexeravs.h",
    "content": "// This defines the interface to the QsciLexerAVS class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERAVS_H\n#define QSCILEXERAVS_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerAVS class encapsulates the Scintilla AVS lexer.\nclass QSCINTILLA_EXPORT QsciLexerAVS : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! AVS lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A block comment.\n        BlockComment = 1,\n\n        //! A nested block comment.\n        NestedBlockComment = 2,\n\n        //! A line comment.\n        LineComment = 3,\n\n        //! A number.\n        Number = 4,\n\n        //! An operator.\n        Operator = 5,\n\n        //! An identifier\n        Identifier = 6,\n\n        //! A string.\n        String = 7,\n\n        //! A triple quoted string.\n        TripleString = 8,\n\n        //! A keyword (as defined by keyword set number 1)..\n        Keyword = 9,\n\n        //! A filter (as defined by keyword set number 2).\n        Filter = 10,\n\n        //! A plugin (as defined by keyword set number 3).\n        Plugin = 11,\n\n        //! A function (as defined by keyword set number 4).\n        Function = 12,\n\n        //! A clip property (as defined by keyword set number 5).\n        ClipProperty = 13,\n\n        //! A keyword defined in keyword set number 6.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet6 = 14\n    };\n\n    //! Construct a QsciLexerAVS with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerAVS(QObject *parent = 0);\n\n    //! Destroys the QsciLexerAVS instance.\n    virtual ~QsciLexerAVS();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the propertyChanged()\n    //! signal as required.\n    void refreshProperties();\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\npublic slots:\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n\n    bool fold_comments;\n    bool fold_compact;\n\n    QsciLexerAVS(const QsciLexerAVS &);\n    QsciLexerAVS &operator=(const QsciLexerAVS &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerbash.h",
    "content": "// This defines the interface to the QsciLexerBash class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERBASH_H\n#define QSCILEXERBASH_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerBash class encapsulates the Scintilla Bash lexer.\nclass QSCINTILLA_EXPORT QsciLexerBash : public QsciLexer\n{\n\tQ_OBJECT\n\npublic:\n\t//! This enum defines the meanings of the different styles used by the\n\t//! Bash lexer.\n\tenum {\n\t\t//! The default.\n\t\tDefault = 0,\n\n\t\t//! An error.\n\t\tError = 1,\n\n\t\t//! A comment.\n\t\tComment = 2,\n\n\t\t//! A number.\n\t\tNumber = 3,\n\n\t\t//! A keyword.\n\t\tKeyword = 4,\n\n\t\t//! A double-quoted string.\n\t\tDoubleQuotedString = 5,\n\n\t\t//! A single-quoted string.\n\t\tSingleQuotedString = 6,\n\n\t\t//! An operator.\n\t\tOperator = 7,\n\n\t\t//! An identifier\n\t\tIdentifier = 8,\n\n\t\t//! A scalar.\n\t\tScalar = 9,\n\n\t\t//! Parameter expansion.\n\t\tParameterExpansion = 10,\n\n\t\t//! Backticks.\n\t\tBackticks = 11,\n\n\t\t//! A here document delimiter.\n\t\tHereDocumentDelimiter = 12,\n\n\t\t//! A single quoted here document.\n\t\tSingleQuotedHereDocument = 13\n\t};\n\n\t//! Construct a QsciLexerBash with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n\tQsciLexerBash(QObject *parent = 0);\n\n\t//! Destroys the QsciLexerBash instance.\n\tvirtual ~QsciLexerBash();\n\n\t//! Returns the name of the language.\n\tconst char *language() const;\n\n\t//! Returns the name of the lexer.  Some lexers support a number of\n\t//! languages.\n\tconst char *lexer() const;\n\n\t//! \\internal Returns the style used for braces for brace matching.\n\tint braceStyle() const;\n\n\t//! Returns the string of characters that comprise a word.\n\tconst char *wordCharacters() const;\n\n\t//! Returns the foreground colour of the text for style number \\a style.\n\t//!\n\t//! \\sa defaultPaper()\n\tQColor defaultColor(int style) const;\n\n\t//! Returns the end-of-line fill for style number \\a style.\n\tbool defaultEolFill(int style) const;\n\n\t//! Returns the font for style number \\a style.\n\tQFont defaultFont(int style) const;\n\n\t//! Returns the background colour of the text for style number \\a style.\n\t//!\n\t//! \\sa defaultColor()\n\tQColor defaultPaper(int style) const;\n\n\t//! Returns the set of keywords for the keyword set \\a set recognised\n\t//! by the lexer as a space separated string.\n\tconst char *keywords(int set) const;\n\n\t//! Returns the descriptive name for style number \\a style.  If the\n\t//! style is invalid for this language then an empty QString is returned.\n\t//! This is intended to be used in user preference dialogs.\n\tQString description(int style) const;\n\n\t//! Causes all properties to be refreshed by emitting the\n\t//! propertyChanged() signal as required.\n\tvoid refreshProperties();\n\n\t//! Returns true if multi-line comment blocks can be folded.\n\t//!\n\t//! \\sa setFoldComments()\n\tbool foldComments() const;\n\n\t//! Returns true if trailing blank lines are included in a fold block.\n\t//!\n\t//! \\sa setFoldCompact()\n\tbool foldCompact() const;\n\npublic slots:\n\t//! If \\a fold is true then multi-line comment blocks can be folded.\n\t//! The default is false.\n\t//!\n\t//! \\sa foldComments()\n\tvirtual void setFoldComments(bool fold);\n\n\t//! If \\a fold is true then trailing blank lines are included in a fold\n\t//! block. The default is true.\n\t//!\n\t//! \\sa foldCompact()\n\tvirtual void setFoldCompact(bool fold);\n\nprotected:\n\t//! The lexer's properties are read from the settings \\a qs.  \\a prefix\n\t//! (which has a trailing '/') should be used as a prefix to the key of\n\t//! each setting.  true is returned if there is no error.\n\t//!\n\tbool readProperties(QSettings &qs,const QString &prefix);\n\n\t//! The lexer's properties are written to the settings \\a qs.\n\t//! \\a prefix (which has a trailing '/') should be used as a prefix to\n\t//! the key of each setting.  true is returned if there is no error.\n\t//!\n\tbool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n\tvoid setCommentProp();\n\tvoid setCompactProp();\n\n\tbool fold_comments;\n\tbool fold_compact;\n\n\tQsciLexerBash(const QsciLexerBash &);\n\tQsciLexerBash &operator=(const QsciLexerBash &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerbatch.h",
    "content": "// This defines the interface to the QsciLexerBatch class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERBATCH_H\n#define QSCILEXERBATCH_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerBatch class encapsulates the Scintilla batch file\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerBatch : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! batch file lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A keyword.\n        Keyword = 2,\n\n        //! A label.\n        Label = 3,\n\n        //! An hide command character.\n        HideCommandChar = 4,\n\n        //! An external command .\n        ExternalCommand = 5,\n\n        //! A variable.\n        Variable = 6,\n        \n        //! An operator\n        Operator = 7\n    };\n\n    //! Construct a QsciLexerBatch with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerBatch(QObject *parent = 0);\n\n    //! Destroys the QsciLexerBatch instance.\n    virtual ~QsciLexerBatch();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! \\internal Returns true if the language is case sensitive.\n    bool caseSensitive() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    QsciLexerBatch(const QsciLexerBatch &);\n    QsciLexerBatch &operator=(const QsciLexerBatch &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexercmake.h",
    "content": "// This defines the interface to the QsciLexerCMake class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERCMAKE_H\n#define QSCILEXERCMAKE_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerCMake class encapsulates the Scintilla CMake lexer.\nclass QSCINTILLA_EXPORT QsciLexerCMake : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! CMake lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A string.\n        String = 2,\n\n        //! A left quoted string.\n        StringLeftQuote = 3,\n\n        //! A right quoted string.\n        StringRightQuote = 4,\n\n        //! A function.  (Defined by keyword set number 1.)\n        Function = 5,\n\n        //! A variable. (Defined by keyword set number 2.)\n        Variable = 6,\n\n        //! A label.\n        Label = 7,\n\n        //! A keyword defined in keyword set number 3.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet3 = 8,\n\n        //! A WHILE block.\n        BlockWhile = 9,\n\n        //! A FOREACH block.\n        BlockForeach = 10,\n\n        //! An IF block.\n        BlockIf = 11,\n\n        //! A MACRO block.\n        BlockMacro = 12,\n\n        //! A variable within a string.\n        StringVariable = 13,\n\n        //! A number.\n        Number = 14\n    };\n\n    //! Construct a QsciLexerCMake with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerCMake(QObject *parent = 0);\n\n    //! Destroys the QsciLexerCMake instance.\n    virtual ~QsciLexerCMake();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the propertyChanged()\n    //! signal as required.\n    void refreshProperties();\n\n    //! Returns true if ELSE blocks can be folded.\n    //!\n    //! \\sa setFoldAtElse()\n    bool foldAtElse() const;\n\npublic slots:\n    //! If \\a fold is true then ELSE blocks can be folded.  The default is\n    //! false.\n    //!\n    //! \\sa foldAtElse()\n    virtual void setFoldAtElse(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setAtElseProp();\n\n    bool fold_atelse;\n\n    QsciLexerCMake(const QsciLexerCMake &);\n    QsciLexerCMake &operator=(const QsciLexerCMake &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexercoffeescript.h",
    "content": "// This defines the interface to the QsciLexerCoffeeScript class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERCOFFEESCRIPT_H\n#define QSCILEXERCOFFEESCRIPT_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerCoffeeScript class encapsulates the Scintilla\n//! CoffeeScript lexer.\nclass QSCINTILLA_EXPORT QsciLexerCoffeeScript : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! C++ lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A C-style comment.\n        Comment = 1,\n\n        //! A C++-style comment line.\n        CommentLine = 2,\n\n        //! A JavaDoc/Doxygen C-style comment.\n        CommentDoc = 3,\n\n        //! A number.\n        Number = 4,\n\n        //! A keyword.\n        Keyword = 5,\n\n        //! A double-quoted string.\n        DoubleQuotedString = 6,\n\n        //! A single-quoted string.\n        SingleQuotedString = 7,\n\n        //! An IDL UUID.\n        UUID = 8,\n\n        //! A pre-processor block.\n        PreProcessor = 9,\n\n        //! An operator.\n        Operator = 10,\n\n        //! An identifier\n        Identifier = 11,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 12,\n\n        //! A C# verbatim string.\n        VerbatimString = 13,\n\n        //! A regular expression.\n        Regex = 14,\n\n        //! A JavaDoc/Doxygen C++-style comment line.\n        CommentLineDoc = 15,\n\n        //! A keyword defined in keyword set number 2.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet2 = 16,\n\n        //! A JavaDoc/Doxygen keyword.\n        CommentDocKeyword = 17,\n\n        //! A JavaDoc/Doxygen keyword error defined in keyword set number 3.\n        //! The class must be sub-classed and re-implement keywords() to make\n        //! use of this style.\n        CommentDocKeywordError = 18,\n\n        //! A global class defined in keyword set number 4.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        GlobalClass = 19,\n\n        //! A block comment.\n        CommentBlock = 22,\n\n        //! A block regular expression.\n        BlockRegex = 23,\n\n        //! A block regular expression comment.\n        BlockRegexComment = 24,\n\n        //! An instance property.\n        InstanceProperty = 25,\n    };\n\n    //! Construct a QsciLexerCoffeeScript with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerCoffeeScript(QObject *parent = 0);\n\n    //! Destroys the QsciLexerCoffeeScript instance.\n    virtual ~QsciLexerCoffeeScript();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the character sequences that can separate\n    //! auto-completion words.\n    QStringList autoCompletionWordSeparators() const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the end of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockEnd(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of keywords in a\n    //! particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStartKeyword(int *style = 0) const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.  Set 1 is normally used for\n    //! primary keywords and identifiers.  Set 2 is normally used for secondary\n    //! keywords and identifiers.  Set 3 is normally used for documentation\n    //! comment keywords.  Set 4 is normally used for global classes and\n    //! typedefs.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if '$' characters are allowed in identifier names.\n    //!\n    //! \\sa setDollarsAllowed()\n    bool dollarsAllowed() const {return dollars;}\n\n    //! If \\a allowed is true then '$' characters are allowed in identifier\n    //! names.  The default is true.\n    //!\n    //! \\sa dollarsAllowed()\n    void setDollarsAllowed(bool allowed);\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const {return fold_comments;}\n\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    void setFoldComments(bool fold);\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    void setFoldCompact(bool fold);\n\n    //! Returns true if preprocessor lines (after the preprocessor\n    //! directive) are styled.\n    //!\n    //! \\sa setStylePreprocessor()\n    bool stylePreprocessor() const {return style_preproc;}\n\n    //! If \\a style is true then preprocessor lines (after the preprocessor\n    //! directive) are styled.  The default is false.\n    //!\n    //! \\sa stylePreprocessor()\n    void setStylePreprocessor(bool style);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    //! \\sa writeProperties()\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    //! \\sa readProperties()\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n    void setStylePreprocProp();\n    void setDollarsProp();\n\n    bool fold_comments;\n    bool fold_compact;\n    bool style_preproc;\n    bool dollars;\n\n    QsciLexerCoffeeScript(const QsciLexerCoffeeScript &);\n    QsciLexerCoffeeScript &operator=(const QsciLexerCoffeeScript &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexercpp.h",
    "content": "// This defines the interface to the QsciLexerCPP class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERCPP_H\n#define QSCILEXERCPP_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerCPP class encapsulates the Scintilla C++\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerCPP : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! C++ lexer.\n    enum {\n        //! The default.\n        Default = 0,\n        InactiveDefault = Default + 64,\n\n        //! A C comment.\n        Comment = 1,\n        InactiveComment = Comment + 64,\n\n        //! A C++ comment line.\n        CommentLine = 2,\n        InactiveCommentLine = CommentLine + 64,\n\n        //! A JavaDoc/Doxygen style C comment.\n        CommentDoc = 3,\n        InactiveCommentDoc = CommentDoc + 64,\n\n        //! A number.\n        Number = 4,\n        InactiveNumber = Number + 64,\n\n        //! A keyword.\n        Keyword = 5,\n        InactiveKeyword = Keyword + 64,\n\n        //! A double-quoted string.\n        DoubleQuotedString = 6,\n        InactiveDoubleQuotedString = DoubleQuotedString + 64,\n\n        //! A single-quoted string.\n        SingleQuotedString = 7,\n        InactiveSingleQuotedString = SingleQuotedString + 64,\n\n        //! An IDL UUID.\n        UUID = 8,\n        InactiveUUID = UUID + 64,\n\n        //! A pre-processor block.\n        PreProcessor = 9,\n        InactivePreProcessor = PreProcessor + 64,\n\n        //! An operator.\n        Operator = 10,\n        InactiveOperator = Operator + 64,\n\n        //! An identifier\n        Identifier = 11,\n        InactiveIdentifier = Identifier + 64,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 12,\n        InactiveUnclosedString = UnclosedString + 64,\n\n        //! A C# verbatim string.\n        VerbatimString = 13,\n        InactiveVerbatimString = VerbatimString + 64,\n\n        //! A JavaScript regular expression.\n        Regex = 14,\n        InactiveRegex = Regex + 64,\n\n        //! A JavaDoc/Doxygen style C++ comment line.\n        CommentLineDoc = 15,\n        InactiveCommentLineDoc = CommentLineDoc + 64,\n\n        //! A keyword defined in keyword set number 2.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet2 = 16,\n        InactiveKeywordSet2 = KeywordSet2 + 64,\n\n        //! A JavaDoc/Doxygen keyword.\n        CommentDocKeyword = 17,\n        InactiveCommentDocKeyword = CommentDocKeyword + 64,\n\n        //! A JavaDoc/Doxygen keyword error.\n        CommentDocKeywordError = 18,\n        InactiveCommentDocKeywordError = CommentDocKeywordError + 64,\n\n        //! A global class or typedef defined in keyword set number 5.  The\n        //! class must be sub-classed and re-implement keywords() to make use\n        //! of this style.\n        GlobalClass = 19,\n        InactiveGlobalClass = GlobalClass + 64,\n\n        //! A C++ raw string.\n        RawString = 20,\n        InactiveRawString = RawString + 64,\n\n        //! A Vala triple-quoted verbatim string.\n        TripleQuotedVerbatimString = 21,\n        InactiveTripleQuotedVerbatimString = TripleQuotedVerbatimString + 64,\n\n        //! A Pike hash-quoted string.\n        HashQuotedString = 22,\n        InactiveHashQuotedString = HashQuotedString + 64,\n\n        //! A pre-processor stream comment.\n        PreProcessorComment = 23,\n        InactivePreProcessorComment = PreProcessorComment + 64,\n\n        //! A JavaDoc/Doxygen style pre-processor comment.\n        PreProcessorCommentLineDoc = 24,\n        InactivePreProcessorCommentLineDoc = PreProcessorCommentLineDoc + 64,\n\n        //! A user-defined literal.\n        UserLiteral = 25,\n        InactiveUserLiteral = UserLiteral + 64,\n\n        //! A task marker.\n        TaskMarker = 26,\n        InactiveTaskMarker = TaskMarker + 64,\n\n        //! An escape sequence.\n        EscapeSequence = 27,\n        InactiveEscapeSequence = EscapeSequence + 64,\n    };\n\n    //! Construct a QsciLexerCPP with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.  \\a caseInsensitiveKeywords is true if the\n    //! lexer ignores the case of keywords.\n    QsciLexerCPP(QObject *parent = 0, bool caseInsensitiveKeywords = false);\n\n    //! Destroys the QsciLexerCPP instance.\n    virtual ~QsciLexerCPP();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the character sequences that can separate\n    //! auto-completion words.\n    QStringList autoCompletionWordSeparators() const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the end of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockEnd(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of keywords in a\n    //! particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStartKeyword(int *style = 0) const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.  Set 1 is normally used for\n    //! primary keywords and identifiers.  Set 2 is normally used for secondary\n    //! keywords and identifiers.  Set 3 is normally used for documentation\n    //! comment keywords.  Set 4 is normally used for global classes and\n    //! typedefs.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if \"} else {\" lines can be folded.\n    //!\n    //! \\sa setFoldAtElse()\n    bool foldAtElse() const {return fold_atelse;}\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const {return fold_comments;}\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\n    //! Returns true if preprocessor blocks can be folded.\n    //!\n    //! \\sa setFoldPreprocessor()\n    bool foldPreprocessor() const {return fold_preproc;}\n\n    //! Returns true if preprocessor lines (after the preprocessor\n    //! directive) are styled.\n    //!\n    //! \\sa setStylePreprocessor()\n    bool stylePreprocessor() const {return style_preproc;}\n\n    //! If \\a allowed is true then '$' characters are allowed in identifier\n    //! names.  The default is true.\n    //!\n    //! \\sa dollarsAllowed()\n    void setDollarsAllowed(bool allowed);\n\n    //! Returns true if '$' characters are allowed in identifier names.\n    //!\n    //! \\sa setDollarsAllowed()\n    bool dollarsAllowed() const {return dollars;}\n\n    //! If \\a enabled is true then triple quoted strings are highlighted.  The\n    //! default is false.\n    //!\n    //! \\sa highlightTripleQuotedStrings()\n    void setHighlightTripleQuotedStrings(bool enabled);\n\n    //! Returns true if triple quoted strings should be highlighted.\n    //!\n    //! \\sa setHighlightTripleQuotedStrings()\n    bool highlightTripleQuotedStrings() const {return highlight_triple;}\n\n    //! If \\a enabled is true then hash quoted strings are highlighted.  The\n    //! default is false.\n    //!\n    //! \\sa highlightHashQuotedStrings()\n    void setHighlightHashQuotedStrings(bool enabled);\n\n    //! Returns true if hash quoted strings should be highlighted.\n    //!\n    //! \\sa setHighlightHashQuotedStrings()\n    bool highlightHashQuotedStrings() const {return highlight_hash;}\n\n    //! If \\a enabled is true then back-quoted raw strings are highlighted.\n    //! The default is false.\n    //!\n    //! \\sa highlightBackQuotedStrings()\n    void setHighlightBackQuotedStrings(bool enabled);\n\n    //! Returns true if back-quoted raw strings should be highlighted.\n    //!\n    //! \\sa setHighlightBackQuotedStrings()\n    bool highlightBackQuotedStrings() const {return highlight_back;}\n\n    //! If \\a enabled is true then escape sequences in strings are highlighted.\n    //! The default is false.\n    //!\n    //! \\sa highlightEscapeSequences()\n    void setHighlightEscapeSequences(bool enabled);\n\n    //! Returns true if escape sequences in strings should be highlighted.\n    //!\n    //! \\sa setHighlightEscapeSequences()\n    bool highlightEscapeSequences() const {return highlight_escape;}\n\n    //! If \\a allowed is true then escape sequences are allowed in verbatim\n    //! strings.  The default is false.\n    //!\n    //! \\sa verbatimStringEscapeSequencesAllowed()\n    void setVerbatimStringEscapeSequencesAllowed(bool allowed);\n\n    //! Returns true if hash quoted strings should be highlighted.\n    //!\n    //! \\sa setVerbatimStringEscapeSequencesAllowed()\n    bool verbatimStringEscapeSequencesAllowed() const {return vs_escape;}\n\npublic slots:\n    //! If \\a fold is true then \"} else {\" lines can be folded.  The\n    //! default is false.\n    //!\n    //! \\sa foldAtElse()\n    virtual void setFoldAtElse(bool fold);\n\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\n    //! If \\a fold is true then preprocessor blocks can be folded.  The\n    //! default is true.\n    //!\n    //! \\sa foldPreprocessor()\n    virtual void setFoldPreprocessor(bool fold);\n\n    //! If \\a style is true then preprocessor lines (after the preprocessor\n    //! directive) are styled.  The default is false.\n    //!\n    //! \\sa stylePreprocessor()\n    virtual void setStylePreprocessor(bool style);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    //! \\sa writeProperties()\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    //! \\sa readProperties()\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setAtElseProp();\n    void setCommentProp();\n    void setCompactProp();\n    void setPreprocProp();\n    void setStylePreprocProp();\n    void setDollarsProp();\n    void setHighlightTripleProp();\n    void setHighlightHashProp();\n    void setHighlightBackProp();\n    void setHighlightEscapeProp();\n    void setVerbatimStringEscapeProp();\n\n    bool fold_atelse;\n    bool fold_comments;\n    bool fold_compact;\n    bool fold_preproc;\n    bool style_preproc;\n    bool dollars;\n    bool highlight_triple;\n    bool highlight_hash;\n    bool highlight_back;\n    bool highlight_escape;\n    bool vs_escape;\n\n    bool nocase;\n\n    QsciLexerCPP(const QsciLexerCPP &);\n    QsciLexerCPP &operator=(const QsciLexerCPP &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexercsharp.h",
    "content": "// This defines the interface to the QsciLexerCSharp class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERCSHARP_H\n#define QSCILEXERCSHARP_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexercpp.h>\n\n\n//! \\brief The QsciLexerCSharp class encapsulates the Scintilla C#\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerCSharp : public QsciLexerCPP\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexerCSharp with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerCSharp(QObject *parent = 0);\n\n    //! Destroys the QsciLexerCSharp instance.\n    virtual ~QsciLexerCSharp();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    QsciLexerCSharp(const QsciLexerCSharp &);\n    QsciLexerCSharp &operator=(const QsciLexerCSharp &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexercss.h",
    "content": "// This defines the interface to the QsciLexerCSS class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERCSS_H\n#define QSCILEXERCSS_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerCSS class encapsulates the Scintilla CSS lexer.\nclass QSCINTILLA_EXPORT QsciLexerCSS : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! CSS lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A tag.\n        Tag = 1,\n\n        //! A class selector.\n        ClassSelector = 2,\n\n        //! A pseudo class.  The list of pseudo classes is defined by keyword\n        //! set 2.\n        PseudoClass = 3,\n\n        //! An unknown pseudo class.\n        UnknownPseudoClass = 4,\n\n        //! An operator.\n        Operator = 5,\n\n        //! A CSS1 property.  The list of CSS1 properties is defined by keyword\n        //! set 1.\n        CSS1Property = 6,\n\n        //! An unknown property.\n        UnknownProperty = 7,\n\n        //! A value.\n        Value = 8,\n\n        //! A comment.\n        Comment = 9,\n\n        //! An ID selector.\n        IDSelector = 10,\n\n        //! An important value.\n        Important = 11,\n\n        //! An @-rule.\n        AtRule = 12,\n\n        //! A double-quoted string.\n        DoubleQuotedString = 13,\n\n        //! A single-quoted string.\n        SingleQuotedString = 14,\n\n        //! A CSS2 property.  The list of CSS2 properties is defined by keyword\n        //! set 3.\n        CSS2Property = 15,\n\n        //! An attribute.\n        Attribute = 16,\n\n        //! A CSS3 property.  The list of CSS3 properties is defined by keyword\n        //! set 4.\n        CSS3Property = 17,\n\n        //! A pseudo element.  The list of pseudo elements is defined by\n        //! keyword set 5.\n        PseudoElement = 18,\n\n        //! An extended (browser specific) CSS property.  The list of extended\n        //! CSS properties is defined by keyword set 6.\n        ExtendedCSSProperty = 19,\n\n        //! An extended (browser specific) pseudo class.  The list of extended\n        //! pseudo classes is defined by keyword set 7.\n        ExtendedPseudoClass = 20,\n\n        //! An extended (browser specific) pseudo element.  The list of\n        //! extended pseudo elements is defined by keyword set 8.\n        ExtendedPseudoElement = 21,\n\n        //! A media rule.\n        MediaRule = 22,\n\n        //! A variable.\n        Variable = 23,\n    };\n\n    //! Construct a QsciLexerCSS with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerCSS(QObject *parent = 0);\n\n    //! Destroys the QsciLexerCSS instance.\n    virtual ~QsciLexerCSS();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the end of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockEnd(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    QColor defaultColor(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\n    //! If \\a enabled is true then support for HSS is enabled.  The default is\n    //! false.\n    //!\n    //! \\sa HSSLanguage()\n    void setHSSLanguage(bool enabled);\n\n    //! Returns true if support for HSS is enabled.\n    //!\n    //! \\sa setHSSLanguage()\n    bool HSSLanguage() const {return hss_language;}\n\n    //! If \\a enabled is true then support for Less CSS is enabled.  The\n    //! default is false.\n    //!\n    //! \\sa LessLanguage()\n    void setLessLanguage(bool enabled);\n\n    //! Returns true if support for Less CSS is enabled.\n    //!\n    //! \\sa setLessLanguage()\n    bool LessLanguage() const {return less_language;}\n\n    //! If \\a enabled is true then support for Sassy CSS is enabled.  The\n    //! default is false.\n    //!\n    //! \\sa SCSSLanguage()\n    void setSCSSLanguage(bool enabled);\n\n    //! Returns true if support for Sassy CSS is enabled.\n    //!\n    //! \\sa setSCSSLanguage()\n    bool SCSSLanguage() const {return scss_language;}\n\npublic slots:\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n    void setHSSProp();\n    void setLessProp();\n    void setSCSSProp();\n\n    bool fold_comments;\n    bool fold_compact;\n    bool hss_language;\n    bool less_language;\n    bool scss_language;\n\n    QsciLexerCSS(const QsciLexerCSS &);\n    QsciLexerCSS &operator=(const QsciLexerCSS &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexercustom.h",
    "content": "// This defines the interface to the QsciLexerCustom class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERCUSTOM_H\n#define QSCILEXERCUSTOM_H\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\nclass QsciScintilla;\nclass QsciStyle;\n\n\n//! \\brief The QsciLexerCustom class is an abstract class used as a base for\n//! new language lexers.\n//!\n//! The advantage of implementing a new lexer this way (as opposed to adding\n//! the lexer to the underlying Scintilla code) is that it does not require the\n//! QScintilla library to be re-compiled.  It also makes it possible to\n//! integrate external lexers.\n//!\n//! All that is necessary to implement a new lexer is to define appropriate\n//! styles and to re-implement the styleText() method.\nclass QSCINTILLA_EXPORT QsciLexerCustom : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexerCustom with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerCustom(QObject *parent = 0);\n\n    //! Destroy the QSciLexerCustom.\n    virtual ~QsciLexerCustom();\n\n    //! The next \\a length characters starting from the current styling\n    //! position have their style set to style number \\a style.  The current\n    //! styling position is moved.  The styling position is initially set by\n    //! calling startStyling().\n    //!\n    //! \\sa startStyling(), styleText()\n    void setStyling(int length, int style);\n\n    //! The next \\a length characters starting from the current styling\n    //! position have their style set to style \\a style.  The current styling\n    //! position is moved.  The styling position is initially set by calling\n    //! startStyling().\n    //!\n    //! \\sa startStyling(), styleText()\n    void setStyling(int length, const QsciStyle &style);\n\n    //! The styling position is set to \\a start.  \\a styleBits is unused.\n    //!\n    //! \\sa setStyling(), styleBitsNeeded(), styleText()\n    void startStyling(int pos, int styleBits = 0);\n\n    //! This is called when the section of text beginning at position \\a start\n    //! and up to position \\a end needs to be styled.  \\a start will always be\n    //! at the start of a line.  The text is styled by calling startStyling()\n    //! followed by one or more calls to setStyling().  It must be\n    //! re-implemented by a sub-class.\n    //!\n    //! \\sa setStyling(), startStyling(), QsciScintilla::bytes(),\n    //! QsciScintilla::text()\n    virtual void styleText(int start, int end) = 0;\n\n    //! \\reimp\n    virtual void setEditor(QsciScintilla *editor);\n\n    //! \\reimp This re-implementation returns 5 as the number of style bits\n    //! needed.\n    virtual int styleBitsNeeded() const;\n\nprivate slots:\n    void handleStyleNeeded(int pos);\n\nprivate:\n    QsciLexerCustom(const QsciLexerCustom &);\n    QsciLexerCustom &operator=(const QsciLexerCustom &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerd.h",
    "content": "// This defines the interface to the QsciLexerD class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERD_H\n#define QSCILEXERD_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerD class encapsulates the Scintilla D lexer.\nclass QSCINTILLA_EXPORT QsciLexerD : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the D\n    //! lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A comment line.\n        CommentLine = 2,\n\n        //! A JavaDoc and Doxygen comment.\n        CommentDoc = 3,\n\n        //! A nested comment.\n        CommentNested = 4,\n\n        //! A number.\n        Number = 5,\n\n        //! A keyword.\n        Keyword = 6,\n\n        //! A secondary keyword.\n        KeywordSecondary = 7,\n\n        //! A doc keyword\n        KeywordDoc = 8,\n        \n        //! Typedefs and aliases\n        Typedefs = 9,\n        \n        //! A string.\n        String = 10,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 11,\n        \n        //! A character\n        Character = 12,\n\n        //! An operator.\n        Operator = 13,\n\n        //! An identifier\n        Identifier = 14,\n\n        //! A JavaDoc and Doxygen line.\n        CommentLineDoc = 15,\n\n        //! A JavaDoc and Doxygen  keyword.\n        CommentDocKeyword = 16,\n\n        //! A JavaDoc and Doxygen keyword error.\n        CommentDocKeywordError = 17,\n\n        //! A backquoted string.\n        BackquoteString = 18,\n\n        //! A raw, hexadecimal or delimited string.\n        RawString = 19,\n\n        //! A keyword defined in keyword set number 5.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet5 = 20,\n\n        //! A keyword defined in keyword set number 6.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet6 = 21,\n\n        //! A keyword defined in keyword set number 7.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet7 = 22,\n    };\n\n    //! Construct a QsciLexerD with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerD(QObject *parent = 0);\n\n    //! Destroys the QsciLexerD instance.\n    virtual ~QsciLexerD();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the character sequences that can separate\n    //! auto-completion words.\n    QStringList autoCompletionWordSeparators() const;\n\n    //! \\internal Returns a space separated list of words or characters in a\n    //! particular style that define the end of a block for auto-indentation.\n    //! The styles is returned via \\a style.\n    const char *blockEnd(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of words or characters in a\n    //! particular style that define the start of a block for auto-indentation.\n    //! The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of keywords in a particular\n    //! style that define the start of a block for auto-indentation.  The\n    //! styles is returned via \\a style.\n    const char *blockStartKeyword(int *style = 0) const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised by\n    //! the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the style\n    //! is invalid for this language then an empty QString is returned.  This\n    //! is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the propertyChanged()\n    //! signal as required.\n    void refreshProperties();\n\n    //! Returns true if \"} else {\" lines can be folded.\n    //!\n    //! \\sa setFoldAtElse()\n    bool foldAtElse() const;\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\npublic slots:\n    //! If \\a fold is true then \"} else {\" lines can be folded.  The default is\n    //! false.\n    //!\n    //! \\sa foldAtElse()\n    virtual void setFoldAtElse(bool fold);\n\n    //! If \\a fold is true then multi-line comment blocks can be folded.  The\n    //! default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    //! \\sa writeProperties()\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    //! \\sa readProperties()\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setAtElseProp();\n    void setCommentProp();\n    void setCompactProp();\n\n    bool fold_atelse;\n    bool fold_comments;\n    bool fold_compact;\n\n    QsciLexerD(const QsciLexerD &);\n    QsciLexerD &operator=(const QsciLexerD &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerdiff.h",
    "content": "// This defines the interface to the QsciLexerDiff class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERDIFF_H\n#define QSCILEXERDIFF_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerDiff class encapsulates the Scintilla Diff\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerDiff : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Diff lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A command.\n        Command = 2,\n\n        //! A header.\n        Header = 3,\n\n        //! A position.\n        Position = 4,\n\n        //! A removed line.\n        LineRemoved = 5,\n\n        //! An added line.\n        LineAdded = 6,\n\n        //! A changed line.\n        LineChanged = 7\n    };\n\n    //! Construct a QsciLexerDiff with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerDiff(QObject *parent = 0);\n\n    //! Destroys the QsciLexerDiff instance.\n    virtual ~QsciLexerDiff();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    QColor defaultColor(int style) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    QsciLexerDiff(const QsciLexerDiff &);\n    QsciLexerDiff &operator=(const QsciLexerDiff &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerfortran.h",
    "content": "// This defines the interface to the QsciLexerFortran class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERFORTRAN_H\n#define QSCILEXERFORTRAN_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexerfortran77.h>\n\n\n//! \\brief The QsciLexerFortran class encapsulates the Scintilla Fortran lexer.\nclass QSCINTILLA_EXPORT QsciLexerFortran : public QsciLexerFortran77\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexerFortran with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerFortran(QObject *parent = 0);\n\n    //! Destroys the QsciLexerFortran instance.\n    virtual ~QsciLexerFortran();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\nprivate:\n    QsciLexerFortran(const QsciLexerFortran &);\n    QsciLexerFortran &operator=(const QsciLexerFortran &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerfortran77.h",
    "content": "// This defines the interface to the QsciLexerFortran77 class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERFORTRAN77_H\n#define QSCILEXERFORTRAN77_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerFortran77 class encapsulates the Scintilla Fortran77\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerFortran77 : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Fortran77 lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A number.\n        Number = 2,\n\n        //! A single-quoted string.\n        SingleQuotedString = 3,\n\n        //! A double-quoted string.\n        DoubleQuotedString = 4,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 5,\n\n        //! An operator.\n        Operator = 6,\n\n        //! An identifier\n        Identifier = 7,\n\n        //! A keyword.\n        Keyword = 8,\n\n        //! An intrinsic function.\n        IntrinsicFunction = 9,\n\n        //! An extended, non-standard or user defined function.\n        ExtendedFunction = 10,\n\n        //! A pre-processor block.\n        PreProcessor = 11,\n\n        //! An operator in .NAME. format.\n        DottedOperator = 12,\n\n        //! A label.\n        Label = 13,\n\n        //! A continuation.\n        Continuation = 14\n    };\n\n    //! Construct a QsciLexerFortran77 with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerFortran77(QObject *parent = 0);\n\n    //! Destroys the QsciLexerFortran77 instance.\n    virtual ~QsciLexerFortran77();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\npublic slots:\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    //! \\sa writeProperties()\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    //! \\sa readProperties()\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCompactProp();\n\n    bool fold_compact;\n\n    QsciLexerFortran77(const QsciLexerFortran77 &);\n    QsciLexerFortran77 &operator=(const QsciLexerFortran77 &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerhtml.h",
    "content": "// This defines the interface to the QsciLexerHTML class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERHTML_H\n#define QSCILEXERHTML_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerHTML class encapsulates the Scintilla HTML lexer.\nclass QSCINTILLA_EXPORT QsciLexerHTML : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! HTML lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A tag.\n        Tag = 1,\n\n        //! An unknown tag.\n        UnknownTag = 2,\n\n        //! An attribute.\n        Attribute = 3,\n\n        //! An unknown attribute.\n        UnknownAttribute = 4,\n\n        //! An HTML number.\n        HTMLNumber = 5,\n\n        //! An HTML double-quoted string.\n        HTMLDoubleQuotedString = 6,\n\n        //! An HTML single-quoted string.\n        HTMLSingleQuotedString = 7,\n\n        //! Other text within a tag.\n        OtherInTag = 8,\n\n        //! An HTML comment.\n        HTMLComment = 9,\n\n        //! An entity.\n        Entity = 10,\n\n        //! The end of an XML style tag.\n        XMLTagEnd = 11,\n\n        //! The start of an XML fragment.\n        XMLStart = 12,\n\n        //! The end of an XML fragment.\n        XMLEnd = 13,\n\n        //! A script tag.\n        Script = 14,\n\n        //! The start of an ASP fragment with @.\n        ASPAtStart = 15,\n\n        //! The start of an ASP fragment.\n        ASPStart = 16,\n\n        //! CDATA.\n        CDATA = 17,\n\n        //! The start of a PHP fragment.\n        PHPStart = 18,\n\n        //! An unquoted HTML value.\n        HTMLValue = 19,\n\n        //! An ASP X-Code comment.\n        ASPXCComment = 20,\n\n        //! The default for SGML.\n        SGMLDefault = 21,\n\n        //! An SGML command.\n        SGMLCommand = 22,\n\n        //! The first parameter of an SGML command.\n        SGMLParameter = 23,\n\n        //! An SGML double-quoted string.\n        SGMLDoubleQuotedString = 24,\n\n        //! An SGML single-quoted string.\n        SGMLSingleQuotedString = 25,\n\n        //! An SGML error.\n        SGMLError = 26,\n\n        //! An SGML special entity.\n        SGMLSpecial = 27,\n\n        //! An SGML entity.\n        SGMLEntity = 28,\n\n        //! An SGML comment.\n        SGMLComment = 29,\n\n        //! A comment with the first parameter of an SGML command.\n        SGMLParameterComment = 30,\n\n        //! The default for an SGML block.\n        SGMLBlockDefault = 31,\n\n        //! The start of a JavaScript fragment.\n        JavaScriptStart = 40,\n\n        //! The default for JavaScript.\n        JavaScriptDefault = 41,\n\n        //! A JavaScript comment.\n        JavaScriptComment = 42,\n\n        //! A JavaScript line comment.\n        JavaScriptCommentLine = 43,\n\n        //! A JavaDoc style JavaScript comment.\n        JavaScriptCommentDoc = 44,\n\n        //! A JavaScript number.\n        JavaScriptNumber = 45,\n\n        //! A JavaScript word.\n        JavaScriptWord = 46,\n\n        //! A JavaScript keyword.\n        JavaScriptKeyword = 47,\n\n        //! A JavaScript double-quoted string.\n        JavaScriptDoubleQuotedString = 48,\n\n        //! A JavaScript single-quoted string.\n        JavaScriptSingleQuotedString = 49,\n\n        //! A JavaScript symbol.\n        JavaScriptSymbol = 50,\n\n        //! The end of a JavaScript line where a string is not closed.\n        JavaScriptUnclosedString = 51,\n\n        //! A JavaScript regular expression.\n        JavaScriptRegex = 52,\n\n        //! The start of an ASP JavaScript fragment.\n        ASPJavaScriptStart = 55,\n\n        //! The default for ASP JavaScript.\n        ASPJavaScriptDefault = 56,\n\n        //! An ASP JavaScript comment.\n        ASPJavaScriptComment = 57,\n\n        //! An ASP JavaScript line comment.\n        ASPJavaScriptCommentLine = 58,\n\n        //! An ASP JavaDoc style JavaScript comment.\n        ASPJavaScriptCommentDoc = 59,\n\n        //! An ASP JavaScript number.\n        ASPJavaScriptNumber = 60,\n\n        //! An ASP JavaScript word.\n        ASPJavaScriptWord = 61,\n\n        //! An ASP JavaScript keyword.\n        ASPJavaScriptKeyword = 62,\n\n        //! An ASP JavaScript double-quoted string.\n        ASPJavaScriptDoubleQuotedString = 63,\n\n        //! An ASP JavaScript single-quoted string.\n        ASPJavaScriptSingleQuotedString = 64,\n\n        //! An ASP JavaScript symbol.\n        ASPJavaScriptSymbol = 65,\n\n        //! The end of an ASP JavaScript line where a string is not\n        //! closed.\n        ASPJavaScriptUnclosedString = 66,\n\n        //! An ASP JavaScript regular expression.\n        ASPJavaScriptRegex = 67,\n\n        //! The start of a VBScript fragment.\n        VBScriptStart = 70,\n\n        //! The default for VBScript.\n        VBScriptDefault = 71,\n\n        //! A VBScript comment.\n        VBScriptComment = 72,\n\n        //! A VBScript number.\n        VBScriptNumber = 73,\n\n        //! A VBScript keyword.\n        VBScriptKeyword = 74,\n\n        //! A VBScript string.\n        VBScriptString = 75,\n\n        //! A VBScript identifier.\n        VBScriptIdentifier = 76,\n\n        //! The end of a VBScript line where a string is not closed.\n        VBScriptUnclosedString = 77,\n\n        //! The start of an ASP VBScript fragment.\n        ASPVBScriptStart = 80,\n\n        //! The default for ASP VBScript.\n        ASPVBScriptDefault = 81,\n\n        //! An ASP VBScript comment.\n        ASPVBScriptComment = 82,\n\n        //! An ASP VBScript number.\n        ASPVBScriptNumber = 83,\n\n        //! An ASP VBScript keyword.\n        ASPVBScriptKeyword = 84,\n\n        //! An ASP VBScript string.\n        ASPVBScriptString = 85,\n\n        //! An ASP VBScript identifier.\n        ASPVBScriptIdentifier = 86,\n\n        //! The end of an ASP VBScript line where a string is not\n        //! closed.\n        ASPVBScriptUnclosedString = 87,\n\n        //! The start of a Python fragment.\n        PythonStart = 90,\n\n        //! The default for Python.\n        PythonDefault = 91,\n\n        //! A Python comment.\n        PythonComment = 92,\n\n        //! A Python number.\n        PythonNumber = 93,\n\n        //! A Python double-quoted string.\n        PythonDoubleQuotedString = 94,\n\n        //! A Python single-quoted string.\n        PythonSingleQuotedString = 95,\n\n        //! A Python keyword.\n        PythonKeyword = 96,\n\n        //! A Python triple single-quoted string.\n        PythonTripleSingleQuotedString = 97,\n\n        //! A Python triple double-quoted string.\n        PythonTripleDoubleQuotedString = 98,\n\n        //! The name of a Python class.\n        PythonClassName = 99,\n\n        //! The name of a Python function or method.\n        PythonFunctionMethodName = 100,\n\n        //! A Python operator.\n        PythonOperator = 101,\n\n        //! A Python identifier.\n        PythonIdentifier = 102,\n\n        //! The start of an ASP Python fragment.\n        ASPPythonStart = 105,\n\n        //! The default for ASP Python.\n        ASPPythonDefault = 106,\n\n        //! An ASP Python comment.\n        ASPPythonComment = 107,\n\n        //! An ASP Python number.\n        ASPPythonNumber = 108,\n\n        //! An ASP Python double-quoted string.\n        ASPPythonDoubleQuotedString = 109,\n\n        //! An ASP Python single-quoted string.\n        ASPPythonSingleQuotedString = 110,\n\n        //! An ASP Python keyword.\n        ASPPythonKeyword = 111,\n\n        //! An ASP Python triple single-quoted string.\n        ASPPythonTripleSingleQuotedString = 112,\n\n        //! An ASP Python triple double-quoted string.\n        ASPPythonTripleDoubleQuotedString = 113,\n\n        //! The name of an ASP Python class.\n        ASPPythonClassName = 114,\n\n        //! The name of an ASP Python function or method.\n        ASPPythonFunctionMethodName = 115,\n\n        //! An ASP Python operator.\n        ASPPythonOperator = 116,\n\n        //! An ASP Python identifier\n        ASPPythonIdentifier = 117,\n\n        //! The default for PHP.\n        PHPDefault = 118,\n\n        //! A PHP double-quoted string.\n        PHPDoubleQuotedString = 119,\n\n        //! A PHP single-quoted string.\n        PHPSingleQuotedString = 120,\n\n        //! A PHP keyword.\n        PHPKeyword = 121,\n\n        //! A PHP number.\n        PHPNumber = 122,\n\n        //! A PHP variable.\n        PHPVariable = 123,\n\n        //! A PHP comment.\n        PHPComment = 124,\n\n        //! A PHP line comment.\n        PHPCommentLine = 125,\n\n        //! A PHP double-quoted variable.\n        PHPDoubleQuotedVariable = 126,\n\n        //! A PHP operator.\n        PHPOperator = 127\n    };\n\n    //! Construct a QsciLexerHTML with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerHTML(QObject *parent = 0);\n\n    //! Destroys the QsciLexerHTML instance.\n    virtual ~QsciLexerHTML();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the auto-completion fillup characters.\n    const char *autoCompletionFillups() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if tags are case sensitive.\n    //!\n    //! \\sa setCaseSensitiveTags()\n    bool caseSensitiveTags() const {return case_sens_tags;}\n\n    //! If \\a enabled is true then Django templates are enabled.  The default\n    //! is false.\n    //!\n    //! \\sa djangoTemplates()\n    void setDjangoTemplates(bool enabled);\n\n    //! Returns true if support for Django templates is enabled.\n    //!\n    //! \\sa setDjangoTemplates()\n    bool djangoTemplates() const {return django_templates;}\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\n    //! Returns true if preprocessor blocks can be folded.\n    //!\n    //! \\sa setFoldPreprocessor()\n    bool foldPreprocessor() const {return fold_preproc;}\n\n    //! If \\a fold is true then script comments can be folded.  The default is\n    //! false.\n    //!\n    //! \\sa foldScriptComments()\n    void setFoldScriptComments(bool fold);\n\n    //! Returns true if script comments can be folded.\n    //!\n    //! \\sa setFoldScriptComments()\n    bool foldScriptComments() const {return fold_script_comments;}\n\n    //! If \\a fold is true then script heredocs can be folded.  The default is\n    //! false.\n    //!\n    //! \\sa foldScriptHeredocs()\n    void setFoldScriptHeredocs(bool fold);\n\n    //! Returns true if script heredocs can be folded.\n    //!\n    //! \\sa setFoldScriptHeredocs()\n    bool foldScriptHeredocs() const {return fold_script_heredocs;}\n\n    //! If \\a enabled is true then Mako templates are enabled.  The default is\n    //! false.\n    //!\n    //! \\sa makoTemplates()\n    void setMakoTemplates(bool enabled);\n\n    //! Returns true if support for Mako templates is enabled.\n    //!\n    //! \\sa setMakoTemplates()\n    bool makoTemplates() const {return mako_templates;}\n\npublic slots:\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\n    //! If \\a fold is true then preprocessor blocks can be folded.  The\n    //! default is false.\n    //!\n    //! \\sa foldPreprocessor()\n    virtual void setFoldPreprocessor(bool fold);\n\n    //! If \\a sens is true then tags are case sensitive.  The default is false.\n    //!\n    //! \\sa caseSensitiveTags()\n    virtual void setCaseSensitiveTags(bool sens);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCompactProp();\n    void setPreprocProp();\n    void setCaseSensTagsProp();\n    void setScriptCommentsProp();\n    void setScriptHeredocsProp();\n    void setDjangoProp();\n    void setMakoProp();\n\n    bool fold_compact;\n    bool fold_preproc;\n    bool case_sens_tags;\n    bool fold_script_comments;\n    bool fold_script_heredocs;\n    bool django_templates;\n    bool mako_templates;\n\n    QsciLexerHTML(const QsciLexerHTML &);\n    QsciLexerHTML &operator=(const QsciLexerHTML &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexeridl.h",
    "content": "// This defines the interface to the QsciLexerIDL class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERIDL_H\n#define QSCILEXERIDL_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexercpp.h>\n\n\n//! \\brief The QsciLexerIDL class encapsulates the Scintilla IDL\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerIDL : public QsciLexerCPP\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexerIDL with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerIDL(QObject *parent = 0);\n\n    //! Destroys the QsciLexerIDL instance.\n    virtual ~QsciLexerIDL();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    QColor defaultColor(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    QsciLexerIDL(const QsciLexerIDL &);\n    QsciLexerIDL &operator=(const QsciLexerIDL &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerjava.h",
    "content": "// This defines the interface to the QsciLexerJava class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERJAVA_H\n#define QSCILEXERJAVA_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexercpp.h>\n\n\n//! \\brief The QsciLexerJava class encapsulates the Scintilla Java lexer.\nclass QSCINTILLA_EXPORT QsciLexerJava : public QsciLexerCPP\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexerJava with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerJava(QObject *parent = 0);\n\n    //! Destroys the QsciLexerJava instance.\n    virtual ~QsciLexerJava();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\nprivate:\n    QsciLexerJava(const QsciLexerJava &);\n    QsciLexerJava &operator=(const QsciLexerJava &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerjavascript.h",
    "content": "// This defines the interface to the QsciLexerJavaScript class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERJSCRIPT_H\n#define QSCILEXERJSCRIPT_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexercpp.h>\n\n\n//! \\brief The QsciLexerJavaScript class encapsulates the Scintilla JavaScript\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerJavaScript : public QsciLexerCPP\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexerJavaScript with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerJavaScript(QObject *parent = 0);\n\n    //! Destroys the QsciLexerJavaScript instance.\n    virtual ~QsciLexerJavaScript();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    friend class QsciLexerHTML;\n\n    static const char *keywordClass;\n\n    QsciLexerJavaScript(const QsciLexerJavaScript &);\n    QsciLexerJavaScript &operator=(const QsciLexerJavaScript &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerjson.h",
    "content": "// This defines the interface to the QsciLexerJSON class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERJSON_H\n#define QSCILEXERJSON_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerJSON class encapsulates the Scintilla JSON lexer.\nclass QSCINTILLA_EXPORT QsciLexerJSON : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! JSON lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A number.\n        Number = 1,\n\n        //! A string.\n        String = 2,\n\n        //! An unclosed string.\n        UnclosedString = 3,\n\n        //! A property.\n        Property = 4,\n\n        //! An escape sequence.\n        EscapeSequence = 5,\n\n        //! A line comment.\n        CommentLine = 6,\n\n        //! A block comment.\n        CommentBlock = 7,\n\n        //! An operator.\n        Operator = 8,\n\n        //! An Internationalised Resource Identifier (IRI).\n        IRI = 9,\n\n        //! A JSON-LD compact IRI.\n        IRICompact = 10,\n\n        //! A JSON keyword.\n        Keyword = 11,\n\n        //! A JSON-LD keyword.\n        KeywordLD = 12,\n\n        //! A parsing error.\n        Error = 13,\n    };\n\n    //! Construct a QsciLexerJSON with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerJSON(QObject *parent = 0);\n\n    //! Destroys the QsciLexerJSON instance.\n    virtual ~QsciLexerJSON();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! If \\a highlight is true then line and block comments will be\n    //! highlighted.  The default is true.\n    //!\n    //! \\sa hightlightComments()\n    void setHighlightComments(bool highlight);\n\n    //! Returns true if line and block comments are highlighted\n    //!\n    //! \\sa setHightlightComments()\n    bool highlightComments() const {return allow_comments;}\n\n    //! If \\a highlight is true then escape sequences in strings are\n    //! highlighted.  The default is true.\n    //!\n    //! \\sa highlightEscapeSequences()\n    void setHighlightEscapeSequences(bool highlight);\n\n    //! Returns true if escape sequences in strings are highlighted.\n    //!\n    //! \\sa setHighlightEscapeSequences()\n    bool highlightEscapeSequences() const {return escape_sequence;}\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    void setFoldCompact(bool fold);\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n\tvoid setAllowCommentsProp();\n\tvoid setEscapeSequenceProp();\n\tvoid setCompactProp();\n\n\tbool allow_comments;\n\tbool escape_sequence;\n\tbool fold_compact;\n\n    QsciLexerJSON(const QsciLexerJSON &);\n    QsciLexerJSON &operator=(const QsciLexerJSON &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerlua.h",
    "content": "// This defines the interface to the QsciLexerLua class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERLUA_H\n#define QSCILEXERLUA_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerLua class encapsulates the Scintilla Lua\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerLua : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Lua lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A block comment.\n        Comment = 1,\n\n        //! A line comment.\n        LineComment = 2,\n\n        //! A number.\n        Number = 4,\n\n        //! A keyword.\n        Keyword = 5,\n\n        //! A string.\n        String = 6,\n\n        //! A character.\n        Character = 7,\n\n        //! A literal string.\n        LiteralString = 8,\n\n        //! Preprocessor\n        Preprocessor = 9,\n\n        //! An operator.\n        Operator = 10,\n\n        //! An identifier\n        Identifier = 11,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 12,\n\n        //! Basic functions.\n        BasicFunctions = 13,\n\n        //! String, table and maths functions.\n        StringTableMathsFunctions = 14,\n\n        //! Coroutines, I/O and system facilities.\n        CoroutinesIOSystemFacilities = 15,\n\n        //! A keyword defined in keyword set number 5.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet5 = 16,\n\n        //! A keyword defined in keyword set number 6.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet6 = 17,\n\n        //! A keyword defined in keyword set number 7.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet7 = 18,\n\n        //! A keyword defined in keyword set number 8.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet8 = 19,\n\n        //! A label.\n        Label = 20\n    };\n\n    //! Construct a QsciLexerLua with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerLua(QObject *parent = 0);\n\n    //! Destroys the QsciLexerLua instance.\n    virtual ~QsciLexerLua();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the character sequences that can separate\n    //! auto-completion words.\n    QStringList autoCompletionWordSeparators() const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\npublic slots:\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCompactProp();\n\n    bool fold_compact;\n\n    QsciLexerLua(const QsciLexerLua &);\n    QsciLexerLua &operator=(const QsciLexerLua &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexermakefile.h",
    "content": "// This defines the interface to the QsciLexerMakefile class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERMAKEFILE_H\n#define QSCILEXERMAKEFILE_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerMakefile class encapsulates the Scintilla\n//! Makefile lexer.\nclass QSCINTILLA_EXPORT QsciLexerMakefile : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Makefile lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A pre-processor directive.\n        Preprocessor = 2,\n\n        //! A variable.\n        Variable = 3,\n\n        //! An operator.\n        Operator = 4,\n\n        //! A target.\n        Target = 5,\n\n        //! An error.\n        Error = 9\n    };\n\n    //! Construct a QsciLexerMakefile with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerMakefile(QObject *parent = 0);\n\n    //! Destroys the QsciLexerMakefile instance.\n    virtual ~QsciLexerMakefile();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    QsciLexerMakefile(const QsciLexerMakefile &);\n    QsciLexerMakefile &operator=(const QsciLexerMakefile &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexermarkdown.h",
    "content": "// This defines the interface to the QsciLexerMarkdown class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERMARKDOWN_H\n#define QSCILEXERMARKDOWN_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerMarkdown class encapsulates the Scintilla Markdown\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerMarkdown : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Markdown lexer.\n\n    // Note that some values are omitted (ie. LINE_BEGIN and PRECHAR) as these\n    // seem to be internal state information rather than indicating that text\n    // should be styled differently.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! Special (e.g. end-of-line codes if enabled).\n        Special = 1,\n\n        //! Strong emphasis using double asterisks.\n        StrongEmphasisAsterisks = 2,\n\n        //! Strong emphasis using double underscores.\n        StrongEmphasisUnderscores = 3,\n\n        //! Emphasis using single asterisks.\n        EmphasisAsterisks = 4,\n\n        //! Emphasis using single underscores.\n        EmphasisUnderscores = 5,\n\n        //! A level 1 header.\n        Header1 = 6,\n\n        //! A level 2 header.\n        Header2 = 7,\n\n        //! A level 3 header.\n        Header3 = 8,\n\n        //! A level 4 header.\n        Header4 = 9,\n\n        //! A level 5 header.\n        Header5 = 10,\n\n        //! A level 6 header.\n        Header6 = 11,\n\n        //! Pre-char (up to three indent spaces, e.g. for a sub-list).\n        Prechar = 12,\n\n        //! An unordered list item.\n        UnorderedListItem = 13,\n\n        //! An ordered list item.\n        OrderedListItem = 14,\n\n        //! A block quote.\n        BlockQuote = 15,\n\n        //! Strike out.\n        StrikeOut = 16,\n\n        //! A horizontal rule.\n        HorizontalRule = 17,\n\n        //! A link.\n        Link = 18,\n\n        //! Code between backticks.\n        CodeBackticks = 19,\n\n        //! Code between double backticks.\n        CodeDoubleBackticks = 20,\n\n        //! A code block.\n        CodeBlock = 21,\n    };\n\n    //! Construct a QsciLexerMarkdown with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerMarkdown(QObject *parent = 0);\n\n    //! Destroys the QsciLexerMarkdown instance.\n    virtual ~QsciLexerMarkdown();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    QsciLexerMarkdown(const QsciLexerMarkdown &);\n    QsciLexerMarkdown &operator=(const QsciLexerMarkdown &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexermatlab.h",
    "content": "// This defines the interface to the QsciLexerMatlab class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERMATLAB_H\n#define QSCILEXERMATLAB_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerMatlab class encapsulates the Scintilla Matlab file\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerMatlab : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Matlab file lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A command.\n        Command = 2,\n\n        //! A number.\n        Number = 3,\n\n        //! A keyword.\n        Keyword = 4,\n\n        //! A single quoted string.\n        SingleQuotedString = 5,\n\n        //! An operator\n        Operator = 6,\n\n        //! An identifier.\n        Identifier = 7,\n\n        //! A double quoted string.\n        DoubleQuotedString = 8\n    };\n\n    //! Construct a QsciLexerMatlab with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerMatlab(QObject *parent = 0);\n\n    //! Destroys the QsciLexerMatlab instance.\n    virtual ~QsciLexerMatlab();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    QsciLexerMatlab(const QsciLexerMatlab &);\n    QsciLexerMatlab &operator=(const QsciLexerMatlab &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexeroctave.h",
    "content": "// This defines the interface to the QsciLexerOctave class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXEROCTAVE_H\n#define QSCILEXEROCTAVE_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexermatlab.h>\n\n\n//! \\brief The QsciLexerOctave class encapsulates the Scintilla Octave file\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerOctave : public QsciLexerMatlab\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexerOctave with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerOctave(QObject *parent = 0);\n\n    //! Destroys the QsciLexerOctave instance.\n    virtual ~QsciLexerOctave();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\nprivate:\n    QsciLexerOctave(const QsciLexerOctave &);\n    QsciLexerOctave &operator=(const QsciLexerOctave &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerpascal.h",
    "content": "// This defines the interface to the QsciLexerPascal class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERPASCAL_H\n#define QSCILEXERPASCAL_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerPascal class encapsulates the Scintilla Pascal lexer.\nclass QSCINTILLA_EXPORT QsciLexerPascal : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! C++ lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! An identifier\n        Identifier = 1,\n\n        //! A '{ ... }' style comment.\n        Comment = 2,\n\n        //! A '(* ... *)' style comment.\n        CommentParenthesis = 3,\n\n        //! A comment line.\n        CommentLine = 4,\n\n        //! A '{$ ... }' style pre-processor block.\n        PreProcessor = 5,\n\n        //! A '(*$ ... *)' style pre-processor block.\n        PreProcessorParenthesis = 6,\n\n        //! A number.\n        Number = 7,\n\n        //! A hexadecimal number.\n        HexNumber = 8,\n\n        //! A keyword.\n        Keyword = 9,\n\n        //! A single-quoted string.\n        SingleQuotedString = 10,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 11,\n\n        //! A character.\n        Character = 12,\n\n        //! An operator.\n        Operator = 13,\n\n        //! Inline Asm.\n        Asm = 14\n    };\n\n    //! Construct a QsciLexerPascal with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerPascal(QObject *parent = 0);\n\n    //! Destroys the QsciLexerPascal instance.\n    virtual ~QsciLexerPascal();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the character sequences that can separate\n    //! auto-completion words.\n    QStringList autoCompletionWordSeparators() const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the end of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockEnd(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of keywords in a\n    //! particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStartKeyword(int *style = 0) const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\n    //! Returns true if preprocessor blocks can be folded.\n    //!\n    //! \\sa setFoldPreprocessor()\n    bool foldPreprocessor() const;\n\n    //! If \\a enabled is true then some keywords will only be highlighted in an\n    //! appropriate context (similar to how the Delphi IDE works).  The default\n    //! is true.\n    //!\n    //! \\sa smartHighlighting()\n    void setSmartHighlighting(bool enabled);\n\n    //! Returns true if some keywords will only be highlighted in an\n    //! appropriate context (similar to how the Delphi IDE works).\n    //!\n    //! \\sa setSmartHighlighting()\n    bool smartHighlighting() const;\n\npublic slots:\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\n    //! If \\a fold is true then preprocessor blocks can be folded.  The\n    //! default is true.\n    //!\n    //! \\sa foldPreprocessor()\n    virtual void setFoldPreprocessor(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    //! \\sa writeProperties()\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    //! \\sa readProperties()\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n    void setPreprocProp();\n    void setSmartHighlightProp();\n\n    bool fold_comments;\n    bool fold_compact;\n    bool fold_preproc;\n    bool smart_highlight;\n\n    QsciLexerPascal(const QsciLexerPascal &);\n    QsciLexerPascal &operator=(const QsciLexerPascal &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerperl.h",
    "content": "// This defines the interface to the QsciLexerPerl class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERPERL_H\n#define QSCILEXERPERL_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerPerl class encapsulates the Scintilla Perl\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerPerl : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Perl lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! An error.\n        Error = 1,\n\n        //! A comment.\n        Comment = 2,\n\n        //! A POD.\n        POD = 3,\n\n        //! A number.\n        Number = 4,\n\n        //! A keyword.\n        Keyword = 5,\n\n        //! A double-quoted string.\n        DoubleQuotedString = 6,\n\n        //! A single-quoted string.\n        SingleQuotedString = 7,\n\n        //! An operator.\n        Operator = 10,\n\n        //! An identifier\n        Identifier = 11,\n\n        //! A scalar.\n        Scalar = 12,\n\n        //! An array.\n        Array = 13,\n\n        //! A hash.\n        Hash = 14,\n\n        //! A symbol table.\n        SymbolTable = 15,\n\n        //! A regular expression.\n        Regex = 17,\n\n        //! A substitution.\n        Substitution = 18,\n\n        //! Backticks.\n        Backticks = 20,\n\n        //! A data section.\n        DataSection = 21,\n\n        //! A here document delimiter.\n        HereDocumentDelimiter = 22,\n\n        //! A single quoted here document.\n        SingleQuotedHereDocument = 23,\n\n        //! A double quoted here document.\n        DoubleQuotedHereDocument = 24,\n\n        //! A backtick here document.\n        BacktickHereDocument = 25,\n\n        //! A quoted string (q).\n        QuotedStringQ = 26,\n\n        //! A quoted string (qq).\n        QuotedStringQQ = 27,\n\n        //! A quoted string (qx).\n        QuotedStringQX = 28,\n\n        //! A quoted string (qr).\n        QuotedStringQR = 29,\n\n        //! A quoted string (qw).\n        QuotedStringQW = 30,\n\n        //! A verbatim POD.\n        PODVerbatim = 31,\n\n        //! A Subroutine prototype.\n        SubroutinePrototype = 40,\n\n        //! A format identifier.\n        FormatIdentifier = 41,\n\n        //! A format body.\n        FormatBody = 42,\n\n        //! A double-quoted string (interpolated variable).\n        DoubleQuotedStringVar = 43,\n\n        //! A translation.\n        Translation = 44,\n\n        //! A regular expression (interpolated variable).\n        RegexVar = 54,\n\n        //! A substitution (interpolated variable).\n        SubstitutionVar = 55,\n\n        //! Backticks (interpolated variable).\n        BackticksVar = 57,\n\n        //! A double quoted here document (interpolated variable).\n        DoubleQuotedHereDocumentVar = 61,\n\n        //! A backtick here document (interpolated variable).\n        BacktickHereDocumentVar = 62,\n\n        //! A quoted string (qq, interpolated variable).\n        QuotedStringQQVar = 64,\n\n        //! A quoted string (qx, interpolated variable).\n        QuotedStringQXVar = 65,\n\n        //! A quoted string (qr, interpolated variable).\n        QuotedStringQRVar = 66\n    };\n\n    //! Construct a QsciLexerPerl with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerPerl(QObject *parent = 0);\n\n    //! Destroys the QsciLexerPerl instance.\n    virtual ~QsciLexerPerl();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the character sequences that can separate\n    //! auto-completion words.\n    QStringList autoCompletionWordSeparators() const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the end of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockEnd(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number\n    //! \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! If \\a fold is true then \"} else {\" lines can be folded.  The default is\n    //! false.\n    //!\n    //! \\sa foldAtElse()\n    void setFoldAtElse(bool fold);\n\n    //! Returns true if \"} else {\" lines can be folded.\n    //!\n    //! \\sa setFoldAtElse()\n    bool foldAtElse() const {return fold_atelse;}\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\n    //! If \\a fold is true then packages can be folded.  The default is true.\n    //!\n    //! \\sa foldPackages()\n    void setFoldPackages(bool fold);\n\n    //! Returns true if packages can be folded.\n    //!\n    //! \\sa setFoldPackages()\n    bool foldPackages() const;\n\n    //! If \\a fold is true then POD blocks can be folded.  The default is true.\n    //!\n    //! \\sa foldPODBlocks()\n    void setFoldPODBlocks(bool fold);\n\n    //! Returns true if POD blocks can be folded.\n    //!\n    //! \\sa setFoldPODBlocks()\n    bool foldPODBlocks() const;\n\npublic slots:\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setAtElseProp();\n    void setCommentProp();\n    void setCompactProp();\n    void setPackagesProp();\n    void setPODBlocksProp();\n\n    bool fold_atelse;\n    bool fold_comments;\n    bool fold_compact;\n    bool fold_packages;\n    bool fold_pod_blocks;\n\n    QsciLexerPerl(const QsciLexerPerl &);\n    QsciLexerPerl &operator=(const QsciLexerPerl &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerpo.h",
    "content": "// This defines the interface to the QsciLexerPO class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERPO_H\n#define QSCILEXERPO_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerPO class encapsulates the Scintilla PO lexer.\nclass QSCINTILLA_EXPORT QsciLexerPO : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! PO lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A message identifier.\n        MessageId = 2,\n\n        //! The text of a message identifier.\n        MessageIdText = 3,\n\n        //! A message string.\n        MessageString = 4,\n\n        //! The text of a message string.\n        MessageStringText = 5,\n\n        //! A message context.\n        MessageContext = 6,\n\n        //! The text of a message context.\n        MessageContextText = 7,\n\n        //! The \"fuzzy\" flag.\n        Fuzzy = 8,\n\n        //! A programmer comment.\n        ProgrammerComment = 9,\n\n        //! A reference.\n        Reference = 10,\n\n        //! A flag.\n        Flags = 11,\n\n        //! A message identifier text end-of-line.\n        MessageIdTextEOL = 12,\n\n        //! A message string text end-of-line.\n        MessageStringTextEOL = 13,\n\n        //! A message context text end-of-line.\n        MessageContextTextEOL = 14\n    };\n\n    //! Construct a QsciLexerPO with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerPO(QObject *parent = 0);\n\n    //! Destroys the QsciLexerPO instance.\n    virtual ~QsciLexerPO();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the propertyChanged()\n    //! signal as required.\n    void refreshProperties();\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\npublic slots:\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n\n    bool fold_comments;\n    bool fold_compact;\n\n    QsciLexerPO(const QsciLexerPO &);\n    QsciLexerPO &operator=(const QsciLexerPO &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerpostscript.h",
    "content": "// This defines the interface to the QsciLexerPostScript class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERPOSTSCRIPT_H\n#define QSCILEXERPOSTSCRIPT_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerPostScript class encapsulates the Scintilla PostScript\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerPostScript : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! PostScript lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A DSC comment.\n        DSCComment = 2,\n\n        //! A DSC comment value.\n        DSCCommentValue = 3,\n\n        //! A number.\n        Number = 4,\n\n        //! A name.\n        Name = 5,\n\n        //! A keyword.\n        Keyword = 6,\n\n        //! A literal.\n        Literal = 7,\n\n        //! An immediately evaluated literal.\n        ImmediateEvalLiteral = 8,\n\n        //! Array parenthesis.\n        ArrayParenthesis = 9,\n\n        //! Dictionary parenthesis.\n        DictionaryParenthesis = 10,\n\n        //! Procedure parenthesis.\n        ProcedureParenthesis = 11,\n\n        //! Text.\n        Text = 12,\n\n        //! A hexadecimal string.\n        HexString = 13,\n\n        //! A base85 string.\n        Base85String = 14,\n\n        //! A bad string character.\n        BadStringCharacter = 15\n    };\n\n    //! Construct a QsciLexerPostScript with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerPostScript(QObject *parent = 0);\n\n    //! Destroys the QsciLexerPostScript instance.\n    virtual ~QsciLexerPostScript();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.  Set 5 can be used to provide\n    //! additional user defined keywords.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the propertyChanged()\n    //! signal as required.\n    void refreshProperties();\n\n    //! Returns true if tokens should be marked.\n    //!\n    //! \\sa setTokenize()\n    bool tokenize() const;\n\n    //! Returns the PostScript level.\n    //!\n    //! \\sa setLevel()\n    int level() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\n    //! Returns true if else blocks can be folded.\n    //!\n    //! \\sa setFoldAtElse()\n    bool foldAtElse() const;\n\npublic slots:\n    //! If \\a tokenize is true then tokens are marked.  The default is false.\n    //!\n    //! \\sa tokenize()\n    virtual void setTokenize(bool tokenize);\n\n    //! The PostScript level is set to \\a level.  The default is 3.\n    //!\n    //! \\sa level()\n    virtual void setLevel(int level);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\n    //! If \\a fold is true then else blocks can be folded.  The default is\n    //! false.\n    //!\n    //! \\sa foldAtElse()\n    virtual void setFoldAtElse(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setTokenizeProp();\n    void setLevelProp();\n    void setCompactProp();\n    void setAtElseProp();\n\n    bool ps_tokenize;\n    int ps_level;\n    bool fold_compact;\n    bool fold_atelse;\n\n    QsciLexerPostScript(const QsciLexerPostScript &);\n    QsciLexerPostScript &operator=(const QsciLexerPostScript &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerpov.h",
    "content": "// This defines the interface to the QsciLexerPOV class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERPOV_H\n#define QSCILEXERPOV_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerPOV class encapsulates the Scintilla POV lexer.\nclass QSCINTILLA_EXPORT QsciLexerPOV : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! POV lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A comment line.\n        CommentLine = 2,\n\n        //! A number.\n        Number = 3,\n\n        //! An operator.\n        Operator = 4,\n\n        //! An identifier\n        Identifier = 5,\n\n        //! A string.\n        String = 6,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 7,\n\n        //! A directive.\n        Directive = 8,\n\n        //! A bad directive.\n        BadDirective = 9,\n\n        //! Objects, CSG and appearance.\n        ObjectsCSGAppearance = 10,\n\n        //! Types, modifiers and items.\n        TypesModifiersItems = 11,\n\n        //! Predefined identifiers.\n        PredefinedIdentifiers = 12,\n\n        //! Predefined identifiers.\n        PredefinedFunctions = 13,\n\n        //! A keyword defined in keyword set number 6.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet6 = 14,\n\n        //! A keyword defined in keyword set number 7.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet7 = 15,\n\n        //! A keyword defined in keyword set number 8.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet8 = 16\n    };\n\n    //! Construct a QsciLexerPOV with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerPOV(QObject *parent = 0);\n\n    //! Destroys the QsciLexerPOV instance.\n    virtual ~QsciLexerPOV();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the propertyChanged()\n    //! signal as required.\n    void refreshProperties();\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\n    //! Returns true if directives can be folded.\n    //!\n    //! \\sa setFoldDirectives()\n    bool foldDirectives() const;\n\npublic slots:\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\n    //! If \\a fold is true then directives can be folded.  The default is\n    //! false.\n    //!\n    //! \\sa foldDirectives()\n    virtual void setFoldDirectives(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n    void setDirectiveProp();\n\n    bool fold_comments;\n    bool fold_compact;\n    bool fold_directives;\n\n    QsciLexerPOV(const QsciLexerPOV &);\n    QsciLexerPOV &operator=(const QsciLexerPOV &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerproperties.h",
    "content": "// This defines the interface to the QsciLexerProperties class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERPROPERTIES_H\n#define QSCILEXERPROPERTIES_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerProperties class encapsulates the Scintilla\n//! Properties lexer.\nclass QSCINTILLA_EXPORT QsciLexerProperties : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Properties lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A section.\n        Section = 2,\n\n        //! An assignment operator.\n        Assignment = 3,\n\n        //! A default value.\n        DefaultValue = 4,\n\n        //! A key.\n        Key = 5\n    };\n\n    //! Construct a QsciLexerProperties with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerProperties(QObject *parent = 0);\n\n    //! Destroys the QsciLexerProperties instance.\n    virtual ~QsciLexerProperties();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the style\n    //! is invalid for this language then an empty QString is returned.  This\n    //! is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\n    //! If \\a enable is true then initial spaces in a line are allowed.  The\n    //! default is true.\n    //!\n    //! \\sa initialSpaces()\n    void setInitialSpaces(bool enable);\n\n    //! Returns true if initial spaces in a line are allowed.\n    //!\n    //! \\sa setInitialSpaces()\n    bool initialSpaces() const {return initial_spaces;}\n\npublic slots:\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    //! \\sa writeProperties()\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    //! \\sa readProperties()\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCompactProp();\n    void setInitialSpacesProp();\n\n    bool fold_compact;\n    bool initial_spaces;\n\n    QsciLexerProperties(const QsciLexerProperties &);\n    QsciLexerProperties &operator=(const QsciLexerProperties &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerpython.h",
    "content": "// This defines the interface to the QsciLexerPython class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERPYTHON_H\n#define QSCILEXERPYTHON_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n#include \"Qsci/qsciscintillabase.h\"\n\n\n//! \\brief The QsciLexerPython class encapsulates the Scintilla Python lexer.\nclass QSCINTILLA_EXPORT QsciLexerPython : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Python lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A number.\n        Number = 2,\n\n        //! A double-quoted string.\n        DoubleQuotedString = 3,\n\n        //! A single-quoted string.\n        SingleQuotedString = 4,\n\n        //! A keyword.\n        Keyword = 5,\n\n        //! A triple single-quoted string.\n        TripleSingleQuotedString = 6,\n\n        //! A triple double-quoted string.\n        TripleDoubleQuotedString = 7,\n\n        //! The name of a class.\n        ClassName = 8,\n\n        //! The name of a function or method.\n        FunctionMethodName = 9,\n\n        //! An operator.\n        Operator = 10,\n\n        //! An identifier\n        Identifier = 11,\n\n        //! A comment block.\n        CommentBlock = 12,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 13,\n\n        //! A highlighted identifier.  These are defined by keyword set\n        //! 2.  Reimplement keywords() to define keyword set 2.\n        HighlightedIdentifier = 14,\n\n        //! A decorator.\n        Decorator = 15\n    };\n\n    //! This enum defines the different conditions that can cause\n    //! indentations to be displayed as being bad.\n    enum IndentationWarning {\n        //! Bad indentation is not displayed differently.\n        NoWarning = 0,\n\n        //! The indentation is inconsistent when compared to the\n        //! previous line, ie. it is made up of a different combination\n        //! of tabs and/or spaces.\n        Inconsistent = 1,\n\n        //! The indentation is made up of spaces followed by tabs.\n        TabsAfterSpaces = 2,\n\n        //! The indentation contains spaces.\n        Spaces = 3,\n\n        //! The indentation contains tabs.\n        Tabs = 4\n    };\n\n    //! Construct a QsciLexerPython with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerPython(QObject *parent = 0);\n\n    //! Destroys the QsciLexerPython instance.\n    virtual ~QsciLexerPython();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the character sequences that can separate\n    //! auto-completion words.\n    QStringList autoCompletionWordSeparators() const;\n\n    //! \\internal Returns the number of lines prior to the current one when\n    //! determining the scope of a block when auto-indenting.\n    int blockLookback() const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! \\internal Returns the view used for indentation guides.\n    virtual int indentationGuideView() const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if indented comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const {return fold_comments;}\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    void setFoldCompact(bool fold);\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\n    //! Returns true if triple quoted strings can be folded.\n    //!\n    //! \\sa setFoldQuotes()\n    bool foldQuotes() const {return fold_quotes;}\n\n    //! Returns the condition that will cause bad indentations to be\n    //! displayed.\n    //!\n    //! \\sa setIndentationWarning()\n    QsciLexerPython::IndentationWarning indentationWarning() const {return indent_warn;}\n\n    //! If \\a enabled is true then sub-identifiers defined in keyword set 2\n    //! will be highlighted.  For example, if it is false and \"open\" is defined\n    //! in keyword set 2 then \"foo.open\" will not be highlighted.  The default\n    //! is true.\n    //!\n    //! \\sa highlightSubidentifiers()\n    void setHighlightSubidentifiers(bool enabled);\n\n    //! Returns true if string literals are allowed to span newline characters.\n    //!\n    //! \\sa setHighlightSubidentifiers()\n    bool highlightSubidentifiers() const {return highlight_subids;}\n\n    //! If \\a allowed is true then string literals are allowed to span newline\n    //! characters.  The default is false.\n    //!\n    //! \\sa stringsOverNewlineAllowed()\n    void setStringsOverNewlineAllowed(bool allowed);\n\n    //! Returns true if string literals are allowed to span newline characters.\n    //!\n    //! \\sa setStringsOverNewlineAllowed()\n    bool stringsOverNewlineAllowed() const {return strings_over_newline;}\n\n    //! If \\a allowed is true then Python v2 unicode string literals (e.g.\n    //! u\"utf8\") are allowed.  The default is true.\n    //!\n    //! \\sa v2UnicodeAllowed()\n    void setV2UnicodeAllowed(bool allowed);\n\n    //! Returns true if Python v2 unicode string literals (e.g. u\"utf8\") are\n    //! allowed.\n    //!\n    //! \\sa setV2UnicodeAllowed()\n    bool v2UnicodeAllowed() const {return v2_unicode;}\n\n    //! If \\a allowed is true then Python v3 binary and octal literals (e.g.\n    //! 0b1011, 0o712) are allowed.  The default is true.\n    //!\n    //! \\sa v3BinaryOctalAllowed()\n    void setV3BinaryOctalAllowed(bool allowed);\n\n    //! Returns true if Python v3 binary and octal literals (e.g. 0b1011,\n    //! 0o712) are allowed.\n    //!\n    //! \\sa setV3BinaryOctalAllowed()\n    bool v3BinaryOctalAllowed() const {return v3_binary_octal;}\n\n    //! If \\a allowed is true then Python v3 bytes string literals (e.g.\n    //! b\"bytes\") are allowed.  The default is true.\n    //!\n    //! \\sa v3BytesAllowed()\n    void setV3BytesAllowed(bool allowed);\n\n    //! Returns true if Python v3 bytes string literals (e.g. b\"bytes\") are\n    //! allowed.\n    //!\n    //! \\sa setV3BytesAllowed()\n    bool v3BytesAllowed() const {return v3_bytes;}\n\npublic slots:\n    //! If \\a fold is true then indented comment blocks can be folded.  The\n    //! default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then triple quoted strings can be folded.  The\n    //! default is false.\n    //!\n    //! \\sa foldQuotes()\n    virtual void setFoldQuotes(bool fold);\n\n    //! Sets the condition that will cause bad indentations to be\n    //! displayed.\n    //!\n    //! \\sa indentationWarning()\n    virtual void setIndentationWarning(QsciLexerPython::IndentationWarning warn);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n    void setQuotesProp();\n    void setTabWhingeProp();\n    void setStringsOverNewlineProp();\n    void setV2UnicodeProp();\n    void setV3BinaryOctalProp();\n    void setV3BytesProp();\n    void setHighlightSubidsProp();\n\n    bool fold_comments;\n    bool fold_compact;\n    bool fold_quotes;\n    IndentationWarning indent_warn;\n    bool strings_over_newline;\n    bool v2_unicode;\n    bool v3_binary_octal;\n    bool v3_bytes;\n    bool highlight_subids;\n\n    friend class QsciLexerHTML;\n\n    static const char *keywordClass;\n\n    QsciLexerPython(const QsciLexerPython &);\n    QsciLexerPython &operator=(const QsciLexerPython &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerruby.h",
    "content": "// This defines the interface to the QsciLexerRuby class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERRUBY_H\n#define QSCILEXERRUBY_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerRuby class encapsulates the Scintilla Ruby lexer.\nclass QSCINTILLA_EXPORT QsciLexerRuby : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Ruby lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! An error.\n        Error = 1,\n\n        //! A comment.\n        Comment = 2,\n\n        //! A POD.\n        POD = 3,\n\n        //! A number.\n        Number = 4,\n\n        //! A keyword.\n        Keyword = 5,\n\n        //! A double-quoted string.\n        DoubleQuotedString = 6,\n\n        //! A single-quoted string.\n        SingleQuotedString = 7,\n\n        //! The name of a class.\n        ClassName = 8,\n\n        //! The name of a function or method.\n        FunctionMethodName = 9,\n\n        //! An operator.\n        Operator = 10,\n\n        //! An identifier\n        Identifier = 11,\n\n        //! A regular expression.\n        Regex = 12,\n\n        //! A global.\n        Global = 13,\n\n        //! A symbol.\n        Symbol = 14,\n\n        //! The name of a module.\n        ModuleName = 15,\n\n        //! An instance variable.\n        InstanceVariable = 16,\n\n        //! A class variable.\n        ClassVariable = 17,\n\n        //! Backticks.\n        Backticks = 18,\n\n        //! A data section.\n        DataSection = 19,\n\n        //! A here document delimiter.\n        HereDocumentDelimiter = 20,\n\n        //! A here document.\n        HereDocument = 21,\n\n        //! A %q string.\n        PercentStringq = 24,\n\n        //! A %Q string.\n        PercentStringQ = 25,\n\n        //! A %x string.\n        PercentStringx = 26,\n\n        //! A %r string.\n        PercentStringr = 27,\n\n        //! A %w string.\n        PercentStringw = 28,\n\n        //! A demoted keyword.\n        DemotedKeyword = 29,\n\n        //! stdin.\n        Stdin = 30,\n\n        //! stdout.\n        Stdout = 31,\n\n        //! stderr.\n        Stderr = 40\n    };\n\n    //! Construct a QsciLexerRuby with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerRuby(QObject *parent = 0);\n\n    //! Destroys the QsciLexerRuby instance.\n    virtual ~QsciLexerRuby();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the end of a block for\n    //! auto-indentation.  The style is returned via \\a style.\n    const char *blockEnd(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of words or characters in\n    //! a particular style that define the start of a block for\n    //! auto-indentation.  The styles is returned via \\a style.\n    const char *blockStart(int *style = 0) const;\n\n    //! \\internal Returns a space separated list of keywords in a\n    //! particular style that define the start of a block for\n    //! auto-indentation.  The style is returned via \\a style.\n    const char *blockStartKeyword(int *style = 0) const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultpaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the style\n    //! is invalid for this language then an empty QString is returned.  This\n    //! is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    void setFoldComments(bool fold);\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const {return fold_comments;}\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    void setFoldCompact(bool fold);\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs, const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs, const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n\n    bool fold_comments;\n    bool fold_compact;\n\n    QsciLexerRuby(const QsciLexerRuby &);\n    QsciLexerRuby &operator=(const QsciLexerRuby &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerspice.h",
    "content": "// This defines the interface to the QsciLexerSpice class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERSPICE_H\n#define QSCILEXERSPICE_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerSpice class encapsulates the Scintilla Spice lexer.\nclass QSCINTILLA_EXPORT QsciLexerSpice : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Spice lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! An identifier.\n        Identifier = 1,\n\n        //! A command.\n        Command = 2,\n\n        //! A function.\n        Function = 3,\n\n        //! A parameter.\n        Parameter = 4,\n\n        //! A number.\n        Number = 5,\n\n        //! A delimiter.\n        Delimiter = 6,\n\n        //! A value.\n        Value = 7,\n\n        //! A comment.\n        Comment = 8\n    };\n\n    //! Construct a QsciLexerSpice with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerSpice(QObject *parent = 0);\n\n    //! Destroys the QsciLexerSpice instance.\n    virtual ~QsciLexerSpice();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\nprivate:\n    QsciLexerSpice(const QsciLexerSpice &);\n    QsciLexerSpice &operator=(const QsciLexerSpice &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexersql.h",
    "content": "// This defines the interface to the QsciLexerSQL class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERSQL_H\n#define QSCILEXERSQL_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerSQL class encapsulates the Scintilla SQL lexer.\nclass QSCINTILLA_EXPORT QsciLexerSQL : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! SQL lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A line comment.\n        CommentLine = 2,\n\n        //! A JavaDoc/Doxygen style comment.\n        CommentDoc = 3,\n\n        //! A number.\n        Number = 4,\n\n        //! A keyword.\n        Keyword = 5,\n\n        //! A double-quoted string.\n        DoubleQuotedString = 6,\n\n        //! A single-quoted string.\n        SingleQuotedString = 7,\n\n        //! An SQL*Plus keyword.\n        PlusKeyword = 8,\n\n        //! An SQL*Plus prompt.\n        PlusPrompt = 9,\n\n        //! An operator.\n        Operator = 10,\n\n        //! An identifier\n        Identifier = 11,\n\n        //! An SQL*Plus comment.\n        PlusComment = 13,\n\n        //! A '#' line comment.\n        CommentLineHash = 15,\n\n        //! A JavaDoc/Doxygen keyword.\n        CommentDocKeyword = 17,\n\n        //! A JavaDoc/Doxygen keyword error.\n        CommentDocKeywordError = 18,\n\n        //! A keyword defined in keyword set number 5.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        //! Note that keywords must be defined using lower case.\n        KeywordSet5 = 19,\n\n        //! A keyword defined in keyword set number 6.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        //! Note that keywords must be defined using lower case.\n        KeywordSet6 = 20,\n\n        //! A keyword defined in keyword set number 7.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        //! Note that keywords must be defined using lower case.\n        KeywordSet7 = 21,\n\n        //! A keyword defined in keyword set number 8.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        //! Note that keywords must be defined using lower case.\n        KeywordSet8 = 22,\n\n        //! A quoted identifier.\n        QuotedIdentifier = 23,\n\n        //! A quoted operator.\n        QuotedOperator = 24,\n    };\n\n    //! Construct a QsciLexerSQL with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerSQL(QObject *parent = 0);\n\n    //! Destroys the QsciLexerSQL instance.\n    virtual ~QsciLexerSQL();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised by\n    //! the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the style\n    //! is invalid for this language then an empty QString is returned.  This\n    //! is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! Returns true if backslash escapes are enabled.\n    //!\n    //! \\sa setBackslashEscapes()\n    bool backslashEscapes() const {return backslash_escapes;}\n\n    //! If \\a enable is true then words may contain dots (i.e. periods or full\n    //! stops).  The default is false.\n    //!\n    //! \\sa dottedWords()\n    void setDottedWords(bool enable);\n\n    //! Returns true if words may contain dots (i.e. periods or full stops).\n    //!\n    //! \\sa setDottedWords()\n    bool dottedWords() const {return allow_dotted_word;}\n\n    //! If \\a fold is true then ELSE blocks can be folded.  The default is\n    //! false.\n    //!\n    //! \\sa foldAtElse()\n    void setFoldAtElse(bool fold);\n\n    //! Returns true if ELSE blocks can be folded.\n    //!\n    //! \\sa setFoldAtElse()\n    bool foldAtElse() const {return at_else;}\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const {return fold_comments;}\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\n    //! If \\a fold is true then only BEGIN blocks can be folded.  The default\n    //! is false.\n    //!\n    //! \\sa foldOnlyBegin()\n    void setFoldOnlyBegin(bool fold);\n\n    //! Returns true if BEGIN blocks only can be folded.\n    //!\n    //! \\sa setFoldOnlyBegin()\n    bool foldOnlyBegin() const {return only_begin;}\n\n    //! If \\a enable is true then '#' is used as a comment character.  It is\n    //! typically enabled for MySQL and disabled for Oracle.  The default is\n    //! false.\n    //!\n    //! \\sa hashComments()\n    void setHashComments(bool enable);\n\n    //! Returns true if '#' is used as a comment character.\n    //!\n    //! \\sa setHashComments()\n    bool hashComments() const {return numbersign_comment;}\n\n    //! If \\a enable is true then quoted identifiers are enabled.  The default\n    //! is false.\n    //!\n    //! \\sa quotedIdentifiers()\n    void setQuotedIdentifiers(bool enable);\n\n    //! Returns true if quoted identifiers are enabled.\n    //!\n    //! \\sa setQuotedIdentifiers()\n    bool quotedIdentifiers() const {return backticks_identifier;}\n\npublic slots:\n    //! If \\a enable is true then backslash escapes are enabled.  The\n    //! default is false.\n    //!\n    //! \\sa backslashEscapes()\n    virtual void setBackslashEscapes(bool enable);\n\n    //! If \\a fold is true then multi-line comment blocks can be folded.  The\n    //! default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs, const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs, const QString &prefix) const;\n\nprivate:\n    void setAtElseProp();\n    void setCommentProp();\n    void setCompactProp();\n    void setOnlyBeginProp();\n    void setBackticksIdentifierProp();\n    void setNumbersignCommentProp();\n    void setBackslashEscapesProp();\n    void setAllowDottedWordProp();\n\n    bool at_else;\n    bool fold_comments;\n    bool fold_compact;\n    bool only_begin;\n    bool backticks_identifier;\n    bool numbersign_comment;\n    bool backslash_escapes;\n    bool allow_dotted_word;\n\n    QsciLexerSQL(const QsciLexerSQL &);\n    QsciLexerSQL &operator=(const QsciLexerSQL &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexertcl.h",
    "content": "// This defines the interface to the QsciLexerTCL class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERTCL_H\n#define QSCILEXERTCL_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerTCL class encapsulates the Scintilla TCL lexer.\nclass QSCINTILLA_EXPORT QsciLexerTCL : public QsciLexer\n{\n\tQ_OBJECT\n\npublic:\n\t//! This enum defines the meanings of the different styles used by the TCL\n\t//! lexer.\n\tenum {\n\t\t//! The default.\n\t\tDefault = 0,\n\n\t\t//! A comment.\n\t\tComment = 1,\n\n\t\t//! A comment line.\n\t\tCommentLine = 2,\n\n\t\t//! A number.\n\t\tNumber = 3,\n\n\t\t//! A quoted keyword.\n\t\tQuotedKeyword = 4,\n\n\t\t//! A quoted string.\n\t\tQuotedString = 5,\n\n\t\t//! An operator.\n\t\tOperator = 6,\n\n\t\t//! An identifier\n\t\tIdentifier = 7,\n\n\t\t//! A substitution.\n\t\tSubstitution = 8,\n\n\t\t//! A substitution starting with a brace.\n\t\tSubstitutionBrace = 9,\n\n\t\t//! A modifier.\n\t\tModifier = 10,\n\n\t\t//! Expand keyword (defined in keyword set number 5).\n\t\tExpandKeyword = 11,\n\n        //! A TCL keyword (defined in keyword set number 1).\n        TCLKeyword = 12,\n\n        //! A Tk keyword (defined in keyword set number 2).\n        TkKeyword = 13,\n\n        //! An iTCL keyword (defined in keyword set number 3).\n        ITCLKeyword = 14,\n\n        //! A Tk command (defined in keyword set number 4).\n        TkCommand = 15,\n\n        //! A keyword defined in keyword set number 6.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet6 = 16,\n\n        //! A keyword defined in keyword set number 7.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet7 = 17,\n\n        //! A keyword defined in keyword set number 8.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet8 = 18,\n\n        //! A keyword defined in keyword set number 9.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet9 = 19,\n\n        //! A comment box.\n        CommentBox = 20,\n\n        //! A comment block.\n        CommentBlock = 21\n\t};\n\n\t//! Construct a QsciLexerTCL with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n\tQsciLexerTCL(QObject *parent = 0);\n\n\t//! Destroys the QsciLexerTCL instance.\n\tvirtual ~QsciLexerTCL();\n\n\t//! Returns the name of the language.\n\tconst char *language() const;\n\n\t//! Returns the name of the lexer.  Some lexers support a number of\n\t//! languages.\n\tconst char *lexer() const;\n\n\t//! \\internal Returns the style used for braces for brace matching.\n\tint braceStyle() const;\n\n\t//! Returns the foreground colour of the text for style number \\a style.\n\t//!\n\t//! \\sa defaultPaper()\n\tQColor defaultColor(int style) const;\n\n\t//! Returns the end-of-line fill for style number \\a style.\n\tbool defaultEolFill(int style) const;\n\n\t//! Returns the font for style number \\a style.\n\tQFont defaultFont(int style) const;\n\n\t//! Returns the background colour of the text for style number \\a style.\n\t//!\n\t//! \\sa defaultColor()\n\tQColor defaultPaper(int style) const;\n\n\t//! Returns the set of keywords for the keyword set \\a set recognised\n\t//! by the lexer as a space separated string.\n\tconst char *keywords(int set) const;\n\n\t//! Returns the descriptive name for style number \\a style.  If the style\n\t//! is invalid for this language then an empty QString is returned.  This\n\t//! is intended to be used in user preference dialogs.\n\tQString description(int style) const;\n\n\t//! Causes all properties to be refreshed by emitting the\n\t//! propertyChanged() signal as required.\n\tvoid refreshProperties();\n\n\t//! If \\a fold is true then multi-line comment blocks can be folded.  The\n    //! default is false.\n\t//!\n\t//! \\sa foldComments()\n\tvoid setFoldComments(bool fold);\n\n    //! Returns true if multi-line comment blocks can be folded.\n\t//!\n\t//! \\sa setFoldComments()\n\tbool foldComments() const {return fold_comments;}\n\nprotected:\n\t//! The lexer's properties are read from the settings \\a qs.  \\a prefix\n\t//! (which has a trailing '/') should be used as a prefix to the key of\n\t//! each setting.  true is returned if there is no error.\n\t//!\n\tbool readProperties(QSettings &qs,const QString &prefix);\n\n\t//! The lexer's properties are written to the settings \\a qs.\n\t//! \\a prefix (which has a trailing '/') should be used as a prefix to\n\t//! the key of each setting.  true is returned if there is no error.\n\t//!\n\tbool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n\tvoid setCommentProp();\n\n\tbool fold_comments;\n\n\tQsciLexerTCL(const QsciLexerTCL &);\n\tQsciLexerTCL &operator=(const QsciLexerTCL &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexertex.h",
    "content": "// This defines the interface to the QsciLexerTeX class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERTEX_H\n#define QSCILEXERTEX_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerTeX class encapsulates the Scintilla TeX lexer.\nclass QSCINTILLA_EXPORT QsciLexerTeX : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! TeX lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A special.\n        Special = 1,\n\n        //! A group.\n        Group = 2,\n\n        //! A symbol.\n        Symbol = 3,\n\n        //! A command.\n        Command = 4,\n\n        //! Text.\n        Text = 5\n    };\n\n    //! Construct a QsciLexerTeX with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerTeX(QObject *parent = 0);\n\n    //! Destroys the QsciLexerTeX instance.\n    virtual ~QsciLexerTeX();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    QColor defaultColor(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! If \\a fold is true then multi-line comment blocks can be folded.  The\n    //! default is false.\n    //!\n    //! \\sa foldComments()\n    void setFoldComments(bool fold);\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const {return fold_comments;}\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    void setFoldCompact(bool fold);\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;}\n\n    //! If \\a enable is true then comments are processed as TeX source\n    //! otherwise they are ignored.  The default is false.\n    //!\n    //! \\sa processComments()\n    void setProcessComments(bool enable);\n\n    //! Returns true if comments are processed as TeX source.\n    //!\n    //! \\sa setProcessComments()\n    bool processComments() const {return process_comments;}\n\n    //! If \\a enable is true then \\\\if<unknown> processed is processed as a\n    //! command.  The default is true.\n    //!\n    //! \\sa processIf()\n    void setProcessIf(bool enable);\n\n    //! Returns true if \\\\if<unknown> is processed as a command.\n    //!\n    //! \\sa setProcessIf()\n    bool processIf() const {return process_if;}\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs, const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs, const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n    void setProcessCommentsProp();\n    void setAutoIfProp();\n\n    bool fold_comments;\n    bool fold_compact;\n    bool process_comments;\n    bool process_if;\n\n    QsciLexerTeX(const QsciLexerTeX &);\n    QsciLexerTeX &operator=(const QsciLexerTeX &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerverilog.h",
    "content": "// This defines the interface to the QsciLexerVerilog class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERVERILOG_H\n#define QSCILEXERVERILOG_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerVerilog class encapsulates the Scintilla Verilog\n//! lexer.\nclass QSCINTILLA_EXPORT QsciLexerVerilog : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! Verilog lexer.\n    enum {\n        //! The default.\n        Default = 0,\n        InactiveDefault = Default + 64,\n\n        //! A comment.\n        Comment = 1,\n        InactiveComment = Comment + 64,\n\n        //! A line comment.\n        CommentLine = 2,\n        InactiveCommentLine = CommentLine + 64,\n\n        //! A bang comment.\n        CommentBang = 3,\n        InactiveCommentBang = CommentBang + 64,\n\n        //! A number\n        Number = 4,\n        InactiveNumber = Number + 64,\n\n        //! A keyword.\n        Keyword = 5,\n        InactiveKeyword = Keyword + 64,\n\n        //! A string.\n        String = 6,\n        InactiveString = String + 64,\n\n        //! A keyword defined in keyword set number 2.  The class must\n        //! be sub-classed and re-implement keywords() to make use of\n        //! this style.\n        KeywordSet2 = 7,\n        InactiveKeywordSet2 = KeywordSet2 + 64,\n\n        //! A system task.\n        SystemTask = 8,\n        InactiveSystemTask = SystemTask + 64,\n\n        //! A pre-processor block.\n        Preprocessor = 9,\n        InactivePreprocessor = Preprocessor + 64,\n\n        //! An operator.\n        Operator = 10,\n        InactiveOperator = Operator + 64,\n\n        //! An identifier.\n        Identifier = 11,\n        InactiveIdentifier = Identifier + 64,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 12,\n        InactiveUnclosedString = UnclosedString + 64,\n\n        //! A keyword defined in keyword set number 4.  The class must\n        //! be sub-classed and re-implement keywords() to make use of\n        //! this style.  This set is intended to be used for user defined\n        //! identifiers and tasks.\n        UserKeywordSet = 19,\n        InactiveUserKeywordSet = UserKeywordSet + 64,\n\n        //! A keyword comment.\n        CommentKeyword = 20,\n        InactiveCommentKeyword = CommentKeyword + 64,\n\n        //! An input port declaration.\n        DeclareInputPort = 21,\n        InactiveDeclareInputPort = DeclareInputPort + 64,\n\n        //! An output port declaration.\n        DeclareOutputPort = 22,\n        InactiveDeclareOutputPort = DeclareOutputPort + 64,\n\n        //! An input/output port declaration.\n        DeclareInputOutputPort = 23,\n        InactiveDeclareInputOutputPort = DeclareInputOutputPort + 64,\n\n        //! A port connection.\n        PortConnection = 24,\n        InactivePortConnection = PortConnection + 64,\n    };\n\n    //! Construct a QsciLexerVerilog with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerVerilog(QObject *parent = 0);\n\n    //! Destroys the QsciLexerVerilog instance.\n    virtual ~QsciLexerVerilog();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the string of characters that comprise a word.\n    const char *wordCharacters() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! If \\a fold is true then \"} else {\" lines can be folded.  The\n    //! default is false.\n    //!\n    //! \\sa foldAtElse()\n    void setFoldAtElse(bool fold);\n\n    //! Returns true if \"} else {\" lines can be folded.\n    //!\n    //! \\sa setFoldAtElse()\n    bool foldAtElse() const {return fold_atelse;}\n\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    void setFoldComments(bool fold);\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const {return fold_comments;}\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    void setFoldCompact(bool fold);\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const {return fold_compact;};\n\n    //! If \\a fold is true then preprocessor blocks can be folded.  The\n    //! default is true.\n    //!\n    //! \\sa foldPreprocessor()\n    void setFoldPreprocessor(bool fold);\n\n    //! Returns true if preprocessor blocks can be folded.\n    //!\n    //! \\sa setFoldPreprocessor()\n    bool foldPreprocessor() const {return fold_preproc;};\n\n    //! If \\a fold is true then modules can be folded.  The default is false.\n    //!\n    //! \\sa foldAtModule()\n    void setFoldAtModule(bool fold);\n\n    //! Returns true if modules can be folded.\n    //!\n    //! \\sa setFoldAtModule()\n    bool foldAtModule() const {return fold_atmodule;};\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    //! \\sa writeProperties()\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    //! \\sa readProperties()\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setAtElseProp();\n    void setCommentProp();\n    void setCompactProp();\n    void setPreprocProp();\n    void setAtModuleProp();\n\n    bool fold_atelse;\n    bool fold_comments;\n    bool fold_compact;\n    bool fold_preproc;\n    bool fold_atmodule;\n\n    QsciLexerVerilog(const QsciLexerVerilog &);\n    QsciLexerVerilog &operator=(const QsciLexerVerilog &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexervhdl.h",
    "content": "// This defines the interface to the QsciLexerVHDL class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERVHDL_H\n#define QSCILEXERVHDL_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerVHDL class encapsulates the Scintilla VHDL lexer.\nclass QSCINTILLA_EXPORT QsciLexerVHDL : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! VHDL lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! A comment line.\n        CommentLine = 2,\n\n        //! A number.\n        Number = 3,\n\n        //! A string.\n        String = 4,\n\n        //! An operator.\n        Operator = 5,\n\n        //! An identifier\n        Identifier = 6,\n\n        //! The end of a line where a string is not closed.\n        UnclosedString = 7,\n\n        //! A keyword.\n        Keyword = 8,\n\n        //! A standard operator.\n        StandardOperator = 9,\n\n        //! An attribute.\n        Attribute = 10,\n\n        //! A standard function.\n        StandardFunction = 11,\n\n        //! A standard package.\n        StandardPackage = 12,\n\n        //! A standard type.\n        StandardType = 13,\n\n        //! A keyword defined in keyword set number 7.  The class must be\n        //! sub-classed and re-implement keywords() to make use of this style.\n        KeywordSet7 = 14,\n\n        //! A comment block.\n        CommentBlock = 15,\n    };\n\n    //! Construct a QsciLexerVHDL with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerVHDL(QObject *parent = 0);\n\n    //! Destroys the QsciLexerVHDL instance.\n    virtual ~QsciLexerVHDL();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! \\internal Returns the style used for braces for brace matching.\n    int braceStyle() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the propertyChanged()\n    //! signal as required.\n    void refreshProperties();\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\n    //! Returns true if trailing blank lines are included in a fold block.\n    //!\n    //! \\sa setFoldCompact()\n    bool foldCompact() const;\n\n    //! Returns true if else blocks can be folded.\n    //!\n    //! \\sa setFoldAtElse()\n    bool foldAtElse() const;\n\n    //! Returns true if begin blocks can be folded.\n    //!\n    //! \\sa setFoldAtBegin()\n    bool foldAtBegin() const;\n\n    //! Returns true if blocks can be folded at a parenthesis.\n    //!\n    //! \\sa setFoldAtParenthesis()\n    bool foldAtParenthesis() const;\n\npublic slots:\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is true.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\n    //! If \\a fold is true then trailing blank lines are included in a fold\n    //! block. The default is true.\n    //!\n    //! \\sa foldCompact()\n    virtual void setFoldCompact(bool fold);\n\n    //! If \\a fold is true then else blocks can be folded.  The default is\n    //! true.\n    //!\n    //! \\sa foldAtElse()\n    virtual void setFoldAtElse(bool fold);\n\n    //! If \\a fold is true then begin blocks can be folded.  The default is\n    //! true.\n    //!\n    //! \\sa foldAtBegin()\n    virtual void setFoldAtBegin(bool fold);\n\n    //! If \\a fold is true then blocks can be folded at a parenthesis.  The\n    //! default is true.\n    //!\n    //! \\sa foldAtParenthesis()\n    virtual void setFoldAtParenthesis(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n    void setCompactProp();\n    void setAtElseProp();\n    void setAtBeginProp();\n    void setAtParenthProp();\n\n    bool fold_comments;\n    bool fold_compact;\n    bool fold_atelse;\n    bool fold_atbegin;\n    bool fold_atparenth;\n\n    QsciLexerVHDL(const QsciLexerVHDL &);\n    QsciLexerVHDL &operator=(const QsciLexerVHDL &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexerxml.h",
    "content": "// This defines the interface to the QsciLexerXML class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERXML_H\n#define QSCILEXERXML_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexerhtml.h>\n\n\n//! \\brief The QsciLexerXML class encapsulates the Scintilla XML lexer.\nclass QSCINTILLA_EXPORT QsciLexerXML : public QsciLexerHTML\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciLexerXML with parent \\a parent.  \\a parent is typically\n    //! the QsciScintilla instance.\n    QsciLexerXML(QObject *parent = 0);\n\n    //! Destroys the QsciLexerXML instance.\n    virtual ~QsciLexerXML();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Causes all properties to be refreshed by emitting the\n    //! propertyChanged() signal as required.\n    void refreshProperties();\n\n    //! If \\a allowed is true then scripts are styled.  The default is true.\n    //!\n    //! \\sa scriptsStyled()\n    void setScriptsStyled(bool styled);\n\n    //! Returns true if scripts are styled.\n    //!\n    //! \\sa setScriptsStyled()\n    bool scriptsStyled() const;\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs, const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs, const QString &prefix) const;\n\nprivate:\n    void setScriptsProp();\n\n    bool scripts;\n\n    QsciLexerXML(const QsciLexerXML &);\n    QsciLexerXML &operator=(const QsciLexerXML &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscilexeryaml.h",
    "content": "// This defines the interface to the QsciLexerYAML class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCILEXERYAML_H\n#define QSCILEXERYAML_H\n\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscilexer.h>\n\n\n//! \\brief The QsciLexerYAML class encapsulates the Scintilla YAML lexer.\nclass QSCINTILLA_EXPORT QsciLexerYAML : public QsciLexer\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the meanings of the different styles used by the\n    //! YAML lexer.\n    enum {\n        //! The default.\n        Default = 0,\n\n        //! A comment.\n        Comment = 1,\n\n        //! An identifier.\n        Identifier = 2,\n\n        //! A keyword\n        Keyword = 3,\n\n        //! A number.\n        Number = 4,\n\n        //! A reference.\n        Reference = 5,\n\n        //! A document delimiter.\n        DocumentDelimiter = 6,\n\n        //! A text block marker.\n        TextBlockMarker = 7,\n\n        //! A syntax error marker.\n        SyntaxErrorMarker = 8,\n\n        //! An operator.\n        Operator = 9\n    };\n\n    //! Construct a QsciLexerYAML with parent \\a parent.  \\a parent is\n    //! typically the QsciScintilla instance.\n    QsciLexerYAML(QObject *parent = 0);\n\n    //! Destroys the QsciLexerYAML instance.\n    virtual ~QsciLexerYAML();\n\n    //! Returns the name of the language.\n    const char *language() const;\n\n    //! Returns the name of the lexer.  Some lexers support a number of\n    //! languages.\n    const char *lexer() const;\n\n    //! Returns the foreground colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultPaper()\n    QColor defaultColor(int style) const;\n\n    //! Returns the end-of-line fill for style number \\a style.\n    bool defaultEolFill(int style) const;\n\n    //! Returns the font for style number \\a style.\n    QFont defaultFont(int style) const;\n\n    //! Returns the background colour of the text for style number \\a style.\n    //!\n    //! \\sa defaultColor()\n    QColor defaultPaper(int style) const;\n\n    //! Returns the set of keywords for the keyword set \\a set recognised\n    //! by the lexer as a space separated string.\n    const char *keywords(int set) const;\n\n    //! Returns the descriptive name for style number \\a style.  If the\n    //! style is invalid for this language then an empty QString is returned.\n    //! This is intended to be used in user preference dialogs.\n    QString description(int style) const;\n\n    //! Causes all properties to be refreshed by emitting the propertyChanged()\n    //! signal as required.\n    void refreshProperties();\n\n    //! Returns true if multi-line comment blocks can be folded.\n    //!\n    //! \\sa setFoldComments()\n    bool foldComments() const;\n\npublic slots:\n    //! If \\a fold is true then multi-line comment blocks can be folded.\n    //! The default is false.\n    //!\n    //! \\sa foldComments()\n    virtual void setFoldComments(bool fold);\n\nprotected:\n    //! The lexer's properties are read from the settings \\a qs.  \\a prefix\n    //! (which has a trailing '/') should be used as a prefix to the key of\n    //! each setting.  true is returned if there is no error.\n    //!\n    bool readProperties(QSettings &qs,const QString &prefix);\n\n    //! The lexer's properties are written to the settings \\a qs.\n    //! \\a prefix (which has a trailing '/') should be used as a prefix to\n    //! the key of each setting.  true is returned if there is no error.\n    //!\n    bool writeProperties(QSettings &qs,const QString &prefix) const;\n\nprivate:\n    void setCommentProp();\n\n    bool fold_comments;\n\n    QsciLexerYAML(const QsciLexerYAML &);\n    QsciLexerYAML &operator=(const QsciLexerYAML &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscimacro.h",
    "content": "// This defines the interface to the QsciMacro class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCIMACRO_H\n#define QSCIMACRO_H\n\n#include <QList>\n#include <QObject>\n#include <QString>\n\n#include <Qsci/qsciglobal.h>\n\n\nclass QsciScintilla;\n\n\n//! \\brief The QsciMacro class represents a sequence of recordable editor\n//! commands.\n//!\n//! Methods are provided to convert convert a macro to and from a textual\n//! representation so that they can be easily written to and read from\n//! permanent storage.\nclass QSCINTILLA_EXPORT QsciMacro : public QObject\n{\n    Q_OBJECT\n\npublic:\n    //! Construct a QsciMacro with parent \\a parent.\n    QsciMacro(QsciScintilla *parent);\n\n    //! Construct a QsciMacro from the printable ASCII representation \\a asc,\n    //! with parent \\a parent.\n    QsciMacro(const QString &asc, QsciScintilla *parent);\n\n    //! Destroy the QsciMacro instance.\n    virtual ~QsciMacro();\n\n    //! Clear the contents of the macro.\n    void clear();\n\n    //! Load the macro from the printable ASCII representation \\a asc.  Returns\n    //! true if there was no error.\n    //!\n    //! \\sa save()\n    bool load(const QString &asc);\n\n    //! Return a printable ASCII representation of the macro.  It is guaranteed\n    //! that only printable ASCII characters are used and that double quote\n    //! characters will not be used.\n    //!\n    //! \\sa load()\n    QString save() const;\n\npublic slots:\n    //! Play the macro.\n    virtual void play();\n\n    //! Start recording user commands and add them to the macro.\n    virtual void startRecording();\n\n    //! Stop recording user commands.\n    virtual void endRecording();\n\nprivate slots:\n    void record(unsigned int msg, unsigned long wParam, void *lParam);\n\nprivate:\n    struct Macro {\n        unsigned int msg;\n        unsigned long wParam;\n        QByteArray text;\n    };\n\n    QsciScintilla *qsci;\n    QList<Macro> macro;\n\n    QsciMacro(const QsciMacro &);\n    QsciMacro &operator=(const QsciMacro &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qsciprinter.h",
    "content": "// This module defines interface to the QsciPrinter class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCIPRINTER_H\n#define QSCIPRINTER_H\n\n// This is needed for Qt v5.0.0-alpha.\n#if defined(B0)\n#undef B0\n#endif\n\n#include <qprinter.h>\n\n#if !defined(QT_NO_PRINTER)\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qsciscintilla.h>\n\n\nQT_BEGIN_NAMESPACE\nclass QRect;\nclass QPainter;\nQT_END_NAMESPACE\n\nclass QsciScintillaBase;\n\n\n//! \\brief The QsciPrinter class is a sub-class of the Qt QPrinter class that\n//! is able to print the text of a Scintilla document.\n//!\n//! The class can be further sub-classed to alter to layout of the text, adding\n//! headers and footers for example.\nclass QSCINTILLA_EXPORT QsciPrinter : public QPrinter\n{\npublic:\n    //! Constructs a printer paint device with mode \\a mode.\n    QsciPrinter(PrinterMode mode = ScreenResolution);\n\n    //! Destroys the QsciPrinter instance.\n    virtual ~QsciPrinter();\n\n    //! Format a page, by adding headers and footers for example, before the\n    //! document text is drawn on it.  \\a painter is the painter to be used to\n    //! add customised text and graphics.  \\a drawing is true if the page is\n    //! actually being drawn rather than being sized.  \\a painter drawing\n    //! methods must only be called when \\a drawing is true.  \\a area is the\n    //! area of the page that will be used to draw the text.  This should be\n    //! modified if it is necessary to reserve space for any customised text or\n    //! graphics.  By default the area is relative to the printable area of the\n    //! page.  Use QPrinter::setFullPage() because calling printRange() if you\n    //! want to try and print over the whole page.  \\a pagenr is the number of\n    //! the page.  The first page is numbered 1.\n    virtual void formatPage(QPainter &painter, bool drawing, QRect &area,\n            int pagenr);\n\n    //! Return the number of points to add to each font when printing.\n    //!\n    //! \\sa setMagnification()\n    int magnification() const {return mag;}\n\n    //! Sets the number of points to add to each font when printing to \\a\n    //! magnification.\n    //!\n    //! \\sa magnification()\n    virtual void setMagnification(int magnification);\n\n    //! Print a range of lines from the Scintilla instance \\a qsb.  \\a from is\n    //! the first line to print and a negative value signifies the first line\n    //! of text.  \\a to is the last line to print and a negative value\n    //! signifies the last line of text.  true is returned if there was no\n    //! error.\n    virtual int printRange(QsciScintillaBase *qsb, int from = -1, int to = -1);\n\n    //! Return the line wrap mode used when printing.  The default is\n    //! QsciScintilla::WrapWord.\n    //!\n    //! \\sa setWrapMode()\n    QsciScintilla::WrapMode wrapMode() const {return wrap;}\n\n    //! Sets the line wrap mode used when printing to \\a wmode.\n    //!\n    //! \\sa wrapMode()\n    virtual void setWrapMode(QsciScintilla::WrapMode wmode);\n\nprivate:\n    int mag;\n    QsciScintilla::WrapMode wrap;\n\n    QsciPrinter(const QsciPrinter &);\n    QsciPrinter &operator=(const QsciPrinter &);\n};\n\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qsciscintilla.h",
    "content": "// This module defines the \"official\" high-level API of the Qt port of\n// Scintilla.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCISCINTILLA_H\n#define QSCISCINTILLA_H\n\n#include <QByteArray>\n#include <QList>\n#include <QObject>\n#include <QPointer>\n#include <QStringList>\n\n#include <Qsci/qsciglobal.h>\n#include <Qsci/qscicommand.h>\n#include <Qsci/qscidocument.h>\n#include <Qsci/qsciscintillabase.h>\n\n\nQT_BEGIN_NAMESPACE\nclass QAction;\nclass QImage;\nclass QIODevice;\nclass QMenu;\nclass QPoint;\nQT_END_NAMESPACE\n\nclass QsciCommandSet;\nclass QsciLexer;\nclass QsciStyle;\nclass QsciStyledText;\nclass QsciListBoxQt;\n\n\n//! \\brief The QsciScintilla class implements a higher level, more Qt-like,\n//! API to the Scintilla editor widget.\n//!\n//! QsciScintilla implements methods, signals and slots similar to those found\n//! in other Qt editor classes. It also provides a higher level interface to\n//! features specific to Scintilla such as syntax styling, call tips,\n//! auto-indenting and auto-completion than that provided by QsciScintillaBase.\nclass QSCINTILLA_EXPORT QsciScintilla : public QsciScintillaBase\n{\n    Q_OBJECT\n\npublic:\n    //! This enum defines the different auto-indentation styles.\n    enum {\n        //! A line is automatically indented to match the previous line.\n        AiMaintain = 0x01,\n\n        //! If the language supported by the current lexer has a specific start\n        //! of block character (e.g. { in C++), then a line that begins with\n        //! that character is indented as well as the lines that make up the\n        //! block.  It may be logically ored with AiClosing.\n        AiOpening = 0x02,\n\n        //! If the language supported by the current lexer has a specific end\n        //! of block character (e.g. } in C++), then a line that begins with\n        //! that character is indented as well as the lines that make up the\n        //! block.  It may be logically ored with AiOpening.\n        AiClosing = 0x04\n    };\n\n    //! This enum defines the different annotation display styles.\n    enum AnnotationDisplay {\n        //! Annotations are not displayed.\n        AnnotationHidden = ANNOTATION_HIDDEN,\n\n        //! Annotations are drawn left justified with no adornment.\n        AnnotationStandard = ANNOTATION_STANDARD,\n\n        //! Annotations are surrounded by a box.\n        AnnotationBoxed = ANNOTATION_BOXED,\n\n        //! Annotations are indented to match the text.\n        AnnotationIndented = ANNOTATION_INDENTED,\n    };\n\n    //! This enum defines the behavior if an auto-completion list contains a\n    //! single entry.\n    enum AutoCompletionUseSingle {\n        //! The single entry is not used automatically and the auto-completion\n        //! list is displayed.\n        AcusNever,\n\n        //! The single entry is used automatically when auto-completion is\n        //! explicitly requested (using autoCompleteFromAPIs() or\n        //! autoCompleteFromDocument()) but not when auto-completion is\n        //! triggered as the user types.\n        AcusExplicit,\n\n        //! The single entry is used automatically and the auto-completion list\n        //! is not displayed.\n        AcusAlways\n    };\n\n    //! This enum defines the different sources for auto-completion lists.\n    enum AutoCompletionSource {\n        //! No sources are used, ie. automatic auto-completion is disabled.\n        AcsNone,\n\n        //! The source is all available sources.\n        AcsAll,\n\n        //! The source is the current document.\n        AcsDocument,\n\n        //! The source is any installed APIs.\n        AcsAPIs\n    };\n\n    //! This enum defines the different brace matching modes.  The character\n    //! pairs {}, [] and () are treated as braces.  The Python lexer will also\n    //! match a : with the end of the corresponding indented block.\n    enum BraceMatch {\n        //! Brace matching is disabled.\n        NoBraceMatch,\n\n        //! Brace matching is enabled for a brace immediately before the\n        //! current position.\n        StrictBraceMatch,\n\n        //! Brace matching is enabled for a brace immediately before or after\n        //! the current position.\n        SloppyBraceMatch\n    };\n\n    //! This enum defines the different call tip positions.\n    enum CallTipsPosition {\n        //! Call tips are placed below the text.\n        CallTipsBelowText,\n\n        //! Call tips are placed above the text.\n        CallTipsAboveText,\n    };\n\n    //! This enum defines the different call tip styles.\n    enum CallTipsStyle {\n        //! Call tips are disabled.\n        CallTipsNone,\n\n        //! Call tips are displayed without a context.  A context is any scope\n        //! (e.g. a C++ namespace or a Python module) prior to the function\n        //! name.\n        CallTipsNoContext,\n\n        //! Call tips are displayed with a context only if the user hasn't\n        //! already implicitly identified the context using autocompletion.\n        //! Note that this style may not always be able to align the call tip\n        //! with the text being entered.\n        CallTipsNoAutoCompletionContext,\n\n        //! Call tips are displayed with a context.  Note that this style\n        //! may not always be able to align the call tip with the text being\n        //! entered.\n        CallTipsContext\n    };\n\n    //! This enum defines the different edge modes for long lines.\n    enum EdgeMode {\n        //! Long lines are not marked.\n        EdgeNone = EDGE_NONE,\n\n        //! A vertical line is drawn at the column set by setEdgeColumn().\n        //! This is recommended for monospace fonts.\n        EdgeLine = EDGE_LINE,\n\n        //! The background color of characters after the column limit is\n        //! changed to the color set by setEdgeColor().  This is recommended\n        //! for proportional fonts.\n        EdgeBackground = EDGE_BACKGROUND,\n\n        //! Multiple vertical lines are drawn at the columns defined by\n        //! multiple calls to addEdgeColumn().\n        EdgeMultipleLines = EDGE_MULTILINE,\n    };\n\n    //! This enum defines the different end-of-line modes.\n    enum EolMode {\n        //! A carriage return/line feed as used on Windows systems.\n        EolWindows = SC_EOL_CRLF,\n\n        //! A line feed as used on Unix systems, including OS/X.\n        EolUnix = SC_EOL_LF,\n\n        //! A carriage return as used on Mac systems prior to OS/X.\n        EolMac = SC_EOL_CR\n    };\n\n    //! This enum defines the different styles for the folding margin.\n    enum FoldStyle {\n        //! Folding is disabled.\n        NoFoldStyle,\n\n        //! Plain folding style using plus and minus symbols.\n        PlainFoldStyle,\n\n        //! Circled folding style using circled plus and minus symbols.\n        CircledFoldStyle,\n\n        //! Boxed folding style using boxed plus and minus symbols.\n        BoxedFoldStyle,\n\n        //! Circled tree style using a flattened tree with circled plus and\n        //! minus symbols and rounded corners.\n        CircledTreeFoldStyle,\n\n        //! Boxed tree style using a flattened tree with boxed plus and minus\n        //! symbols and right-angled corners.\n        BoxedTreeFoldStyle\n    };\n\n    //! This enum defines the different indicator styles.\n    enum IndicatorStyle {\n        //! A single straight underline.\n        PlainIndicator = INDIC_PLAIN,\n\n        //! A squiggly underline that requires 3 pixels of descender space.\n        SquiggleIndicator = INDIC_SQUIGGLE,\n\n        //! A line of small T shapes.\n        TTIndicator = INDIC_TT,\n\n        //! Diagonal hatching.\n        DiagonalIndicator = INDIC_DIAGONAL,\n\n        //! Strike out.\n        StrikeIndicator = INDIC_STRIKE,\n\n        //! An indicator with no visual appearence.\n        HiddenIndicator = INDIC_HIDDEN,\n\n        //! A rectangle around the text.\n        BoxIndicator = INDIC_BOX,\n\n        //! A rectangle with rounded corners around the text with the interior\n        //! usually more transparent than the border.\n        RoundBoxIndicator = INDIC_ROUNDBOX,\n\n        //! A rectangle around the text with the interior usually more\n        //! transparent than the border.  It does not colour the top pixel of\n        //! the line so that indicators on contiguous lines are visually\n        //! distinct and disconnected.\n        StraightBoxIndicator = INDIC_STRAIGHTBOX,\n\n        //! A rectangle around the text with the interior usually more\n        //! transparent than the border.  Unlike StraightBoxIndicator it covers\n        //! the entire character area.\n        FullBoxIndicator = INDIC_FULLBOX,\n\n        //! A dashed underline.\n        DashesIndicator = INDIC_DASH,\n\n        //! A dotted underline.\n        DotsIndicator = INDIC_DOTS,\n\n        //! A squiggly underline that requires 2 pixels of descender space and\n        //! so will fit under smaller fonts.\n        SquiggleLowIndicator = INDIC_SQUIGGLELOW,\n\n        //! A dotted rectangle around the text with the interior usually more\n        //! transparent than the border.\n        DotBoxIndicator = INDIC_DOTBOX,\n\n        //! A version of SquiggleIndicator that uses a pixmap.  This is quicker\n        //! but may be of lower quality.\n        SquigglePixmapIndicator = INDIC_SQUIGGLEPIXMAP,\n\n        //! A thick underline typically used for the target during Asian\n        //! language input composition.\n        ThickCompositionIndicator = INDIC_COMPOSITIONTHICK,\n\n        //! A thin underline typically used for non-target ranges during Asian\n        //! language input composition.\n        ThinCompositionIndicator = INDIC_COMPOSITIONTHIN,\n\n        //! The color of the text is set to the color of the indicator's\n        //! foreground.\n        TextColorIndicator = INDIC_TEXTFORE,\n\n        //! A triangle below the start of the indicator range.\n        TriangleIndicator = INDIC_POINT,\n\n        //! A triangle below the centre of the first character in the indicator\n        //! range.\n        TriangleCharacterIndicator = INDIC_POINTCHARACTER,\n    };\n\n    //! This enum defines the different margin options.\n    enum {\n        //! Reset all margin options.\n        MoNone = SC_MARGINOPTION_NONE,\n\n        //! If this is set then only the first sub-line of a wrapped line will\n        //! be selected when clicking on a margin.\n        MoSublineSelect = SC_MARGINOPTION_SUBLINESELECT\n    };\n\n    //! This enum defines the different margin types.\n    enum MarginType {\n        //! The margin contains symbols, including those used for folding.\n        SymbolMargin = SC_MARGIN_SYMBOL,\n\n        //! The margin contains symbols and uses the default foreground color\n        //! as its background color.\n        SymbolMarginDefaultForegroundColor = SC_MARGIN_FORE,\n\n        //! The margin contains symbols and uses the default background color\n        //! as its background color.\n        SymbolMarginDefaultBackgroundColor = SC_MARGIN_BACK,\n\n        //! The margin contains line numbers.\n        NumberMargin = SC_MARGIN_NUMBER,\n\n        //! The margin contains styled text.\n        TextMargin = SC_MARGIN_TEXT,\n\n        //! The margin contains right justified styled text.\n        TextMarginRightJustified = SC_MARGIN_RTEXT,\n\n        //! The margin contains symbols and uses the color set by\n        //! setMarginBackgroundColor() as its background color.\n        SymbolMarginColor = SC_MARGIN_COLOUR,\n    };\n\n    //! This enum defines the different pre-defined marker symbols.\n    enum MarkerSymbol {\n        //! A circle.\n        Circle = SC_MARK_CIRCLE,\n\n        //! A rectangle.\n        Rectangle = SC_MARK_ROUNDRECT,\n\n        //! A triangle pointing to the right.\n        RightTriangle = SC_MARK_ARROW,\n\n        //! A smaller rectangle.\n        SmallRectangle = SC_MARK_SMALLRECT,\n\n        //! An arrow pointing to the right.\n        RightArrow = SC_MARK_SHORTARROW,\n\n        //! An invisible marker that allows code to track the movement\n        //! of lines.\n        Invisible = SC_MARK_EMPTY,\n\n        //! A triangle pointing down.\n        DownTriangle = SC_MARK_ARROWDOWN,\n\n        //! A drawn minus sign.\n        Minus = SC_MARK_MINUS,\n\n        //! A drawn plus sign.\n        Plus = SC_MARK_PLUS,\n\n        //! A vertical line drawn in the background colour.\n        VerticalLine = SC_MARK_VLINE,\n\n        //! A bottom left corner drawn in the background colour.\n        BottomLeftCorner = SC_MARK_LCORNER,\n\n        //! A vertical line with a centre right horizontal line drawn\n        //! in the background colour.\n        LeftSideSplitter = SC_MARK_TCORNER,\n\n        //! A drawn plus sign in a box.\n        BoxedPlus = SC_MARK_BOXPLUS,\n\n        //! A drawn plus sign in a connected box.\n        BoxedPlusConnected = SC_MARK_BOXPLUSCONNECTED,\n\n        //! A drawn minus sign in a box.\n        BoxedMinus = SC_MARK_BOXMINUS,\n\n        //! A drawn minus sign in a connected box.\n        BoxedMinusConnected = SC_MARK_BOXMINUSCONNECTED,\n\n        //! A rounded bottom left corner drawn in the background\n        //! colour.\n        RoundedBottomLeftCorner = SC_MARK_LCORNERCURVE,\n\n        //! A vertical line with a centre right curved line drawn in the\n        //! background colour.\n        LeftSideRoundedSplitter = SC_MARK_TCORNERCURVE,\n\n        //! A drawn plus sign in a circle.\n        CircledPlus = SC_MARK_CIRCLEPLUS,\n\n        //! A drawn plus sign in a connected box.\n        CircledPlusConnected = SC_MARK_CIRCLEPLUSCONNECTED,\n\n        //! A drawn minus sign in a circle.\n        CircledMinus = SC_MARK_CIRCLEMINUS,\n\n        //! A drawn minus sign in a connected circle.\n        CircledMinusConnected = SC_MARK_CIRCLEMINUSCONNECTED,\n\n        //! No symbol is drawn but the line is drawn with the same background\n        //! color as the marker's.\n        Background = SC_MARK_BACKGROUND,\n\n        //! Three drawn dots.\n        ThreeDots = SC_MARK_DOTDOTDOT,\n\n        //! Three drawn arrows pointing right.\n        ThreeRightArrows = SC_MARK_ARROWS,\n\n        //! A full rectangle (ie. the margin background) using the marker's\n        //! background color.\n        FullRectangle = SC_MARK_FULLRECT,\n\n        //! A left rectangle (ie. the left part of the margin background) using\n        //! the marker's background color.\n        LeftRectangle = SC_MARK_LEFTRECT,\n\n        //! No symbol is drawn but the line is drawn underlined using the\n        //! marker's background color.\n        Underline = SC_MARK_UNDERLINE,\n\n        //! A bookmark.\n        Bookmark = SC_MARK_BOOKMARK,\n    };\n\n    //! This enum defines how tab characters are drawn when whitespace is\n    //! visible.\n    enum TabDrawMode {\n        //! An arrow stretching to the tab stop.\n        TabLongArrow = SCTD_LONGARROW,\n\n        //! A horizontal line stretching to the tab stop.\n        TabStrikeOut = SCTD_STRIKEOUT,\n    };\n\n    //! This enum defines the different whitespace visibility modes.  When\n    //! whitespace is visible spaces are displayed as small centred dots and\n    //! tabs are displayed as light arrows pointing to the right.\n    enum WhitespaceVisibility {\n        //! Whitespace is invisible.\n        WsInvisible = SCWS_INVISIBLE,\n\n        //! Whitespace is always visible.\n        WsVisible = SCWS_VISIBLEALWAYS,\n\n        //! Whitespace is visible after the whitespace used for indentation.\n        WsVisibleAfterIndent = SCWS_VISIBLEAFTERINDENT,\n\n        //! Whitespace used for indentation is visible.\n        WsVisibleOnlyInIndent = SCWS_VISIBLEONLYININDENT,\n    };\n\n    //! This enum defines the different line wrap modes.\n    enum WrapMode {\n        //! Lines are not wrapped.\n        WrapNone = SC_WRAP_NONE,\n\n        //! Lines are wrapped at word boundaries.\n        WrapWord = SC_WRAP_WORD,\n\n        //! Lines are wrapped at character boundaries.\n        WrapCharacter = SC_WRAP_CHAR,\n\n        //! Lines are wrapped at whitespace boundaries.\n        WrapWhitespace = SC_WRAP_WHITESPACE,\n    };\n\n    //! This enum defines the different line wrap visual flags.\n    enum WrapVisualFlag {\n        //! No wrap flag is displayed.\n        WrapFlagNone,\n\n        //! A wrap flag is displayed by the text.\n        WrapFlagByText,\n\n        //! A wrap flag is displayed by the border.\n        WrapFlagByBorder,\n\n        //! A wrap flag is displayed in the line number margin.\n        WrapFlagInMargin\n    };\n\n    //! This enum defines the different line wrap indentation modes.\n    enum WrapIndentMode {\n        //! Wrapped sub-lines are indented by the amount set by\n        //! setWrapVisualFlags().\n        WrapIndentFixed = SC_WRAPINDENT_FIXED,\n\n        //! Wrapped sub-lines are indented by the same amount as the first\n        //! sub-line.\n        WrapIndentSame = SC_WRAPINDENT_SAME,\n\n        //! Wrapped sub-lines are indented by the same amount as the first\n        //! sub-line plus one more level of indentation.\n        WrapIndentIndented = SC_WRAPINDENT_INDENT\n    };\n\n    //! Construct an empty QsciScintilla with parent \\a parent.\n    QsciScintilla(QWidget *parent = 0);\n\n    //! Destroys the QsciScintilla instance.\n    virtual ~QsciScintilla();\n\n    //! Returns the API context, which is a list of words, before the position\n    //! \\a pos in the document.  The context can be used by auto-completion and\n    //! call tips to help to identify which API call the user is referring to.\n    //! In the default implementation the current lexer determines what\n    //! characters make up a word, and what characters determine the boundaries\n    //! of words (ie. the start characters).  If there is no current lexer then\n    //! the context will consist of a single word.  On return \\a context_start\n    //! will contain the position in the document of the start of the context\n    //! and \\a last_word_start will contain the position in the document of the\n    //! start of the last word of the context.\n    virtual QStringList apiContext(int pos, int &context_start,\n            int &last_word_start);\n\n    //! Annotate the line \\a line with the text \\a text using the style number\n    //! \\a style.\n    void annotate(int line, const QString &text, int style);\n\n    //! Annotate the line \\a line with the text \\a text using the style \\a\n    //! style.\n    void annotate(int line, const QString &text, const QsciStyle &style);\n\n    //! Annotate the line \\a line with the styled text \\a text.\n    void annotate(int line, const QsciStyledText &text);\n\n    //! Annotate the line \\a line with the list of styled text \\a text.\n    void annotate(int line, const QList<QsciStyledText> &text);\n\n    //! Returns the annotation on line \\a line, if any.\n    QString annotation(int line) const;\n\n    //! Returns the display style for annotations.\n    //!\n    //! \\sa setAnnotationDisplay()\n    AnnotationDisplay annotationDisplay() const;\n\n    //! The annotations on line \\a line are removed.  If \\a line is negative\n    //! then all annotations are removed.\n    void clearAnnotations(int line = -1);\n\n    //! Returns true if auto-completion lists are case sensitive.\n    //!\n    //! \\sa setAutoCompletionCaseSensitivity()\n    bool autoCompletionCaseSensitivity() const;\n\n    //! Returns true if auto-completion fill-up characters are enabled.\n    //!\n    //! \\sa setAutoCompletionFillups(), setAutoCompletionFillupsEnabled()\n    bool autoCompletionFillupsEnabled() const;\n\n    //! Returns true if the rest of the word to the right of the current cursor\n    //! is removed when an item from an auto-completion list is selected.\n    //!\n    //! \\sa setAutoCompletionReplaceWord()\n    bool autoCompletionReplaceWord() const;\n\n    //! Returns true if the only item in an auto-completion list with a single\n    //! entry is automatically used and the list not displayed.  Note that this\n    //! is deprecated and autoCompletionUseSingle() should be used instead.\n    //!\n    //! \\sa setAutoCompletionShowSingle()\n    bool autoCompletionShowSingle() const;\n\n    //! Returns the current source for the auto-completion list when it is\n    //! being displayed automatically as the user types.\n    //!\n    //! \\sa setAutoCompletionSource()\n    AutoCompletionSource autoCompletionSource() const {return acSource;}\n\n    //! Returns the current threshold for the automatic display of the\n    //! auto-completion list as the user types.\n    //!\n    //! \\sa setAutoCompletionThreshold()\n    int autoCompletionThreshold() const {return acThresh;}\n\n    //! Returns the current behavior when an auto-completion list contains a\n    //! single entry.\n    //!\n    //! \\sa setAutoCompletionUseSingle()\n    AutoCompletionUseSingle autoCompletionUseSingle() const;\n\n    //! Returns true if auto-indentation is enabled.\n    //!\n    //! \\sa setAutoIndent()\n    bool autoIndent() const {return autoInd;}\n\n    //! Returns true if the backspace key unindents a line instead of deleting\n    //! a character.  The default is false.\n    //!\n    //! \\sa setBackspaceUnindents(), tabIndents(), setTabIndents()\n    bool backspaceUnindents() const;\n\n    //! Mark the beginning of a sequence of actions that can be undone by a\n    //! single call to undo().\n    //!\n    //! \\sa endUndoAction(), undo()\n    void beginUndoAction();\n\n    //! Returns the brace matching mode.\n    //!\n    //! \\sa setBraceMatching()\n    BraceMatch braceMatching() const {return braceMode;}\n\n    //! Returns the encoded text between positions \\a start and \\a end.  This\n    //! is typically used by QsciLexerCustom::styleText().\n    //!\n    //! \\sa text()\n    QByteArray bytes(int start, int end) const;\n\n    //! Returns the current call tip position.\n    //!\n    //! \\sa setCallTipsPosition()\n    CallTipsPosition callTipsPosition() const {return call_tips_position;}\n\n    //! Returns the current call tip style.\n    //!\n    //! \\sa setCallTipsStyle()\n    CallTipsStyle callTipsStyle() const {return call_tips_style;}\n\n    //! Returns the maximum number of call tips that are displayed.\n    //!\n    //! \\sa setCallTipsVisible()\n    int callTipsVisible() const {return maxCallTips;}\n\n    //! Cancel any current auto-completion or user defined list.\n    void cancelList();\n\n    //! Returns true if the current language lexer is case sensitive.  If there\n    //! is no current lexer then true is returned.\n    bool caseSensitive() const;\n\n    //! Clear all current folds, i.e. ensure that all lines are displayed\n    //! unfolded.\n    //!\n    //! \\sa setFolding()\n    void clearFolds();\n\n    //! Clears the range of text with indicator \\a indicatorNumber starting at\n    //! position \\a indexFrom in line \\a lineFrom and finishing at position\n    //! \\a indexTo in line \\a lineTo.\n    //!\n    //! \\sa fillIndicatorRange()\n    void clearIndicatorRange(int lineFrom, int indexFrom, int lineTo,\n            int indexTo, int indicatorNumber);\n\n    //! Clear all registered images.\n    //!\n    //! \\sa registerImage()\n    void clearRegisteredImages();\n\n    //! Returns the widget's text (ie. foreground) colour.\n    //!\n    //! \\sa setColor()\n    QColor color() const;\n\n    //! Returns a list of the line numbers that have contracted folds.  This is\n    //! typically used to save the fold state of a document.\n    //!\n    //! \\sa setContractedFolds()\n    QList<int> contractedFolds() const;\n\n    //! All the lines of the text have their end-of-lines converted to mode\n    //! \\a mode.\n    //!\n    //! \\sa eolMode(), setEolMode()\n    void convertEols(EolMode mode);\n\n    //! Create the standard context menu which is shown when the user clicks\n    //! with the right mouse button.  It is called from contextMenuEvent().\n    //! The menu's ownership is transferred to the caller.\n    QMenu *createStandardContextMenu();\n\n    //! Returns the attached document.\n    //!\n    //! \\sa setDocument()\n    QsciDocument document() const {return doc;}\n\n    //! Mark the end of a sequence of actions that can be undone by a single\n    //! call to undo().\n    //!\n    //! \\sa beginUndoAction(), undo()\n    void endUndoAction();\n\n    //! Returns the color of the marker used to show that a line has exceeded\n    //! the length set by setEdgeColumn().\n    //!\n    //! \\sa setEdgeColor(), \\sa setEdgeColumn\n    QColor edgeColor() const;\n\n    //! Returns the number of the column after which lines are considered to be\n    //! long.\n    //!\n    //! \\sa setEdgeColumn()\n    int edgeColumn() const;\n\n    //! Returns the edge mode which determines how long lines are marked.\n    //!\n    //! \\sa setEdgeMode()\n    EdgeMode edgeMode() const;\n\n    //! Set the default font.  This has no effect if a language lexer has been\n    //! set.\n    void setFont(const QFont &f);\n\n    //! Returns the end-of-line mode.\n    //!\n    //! \\sa setEolMode()\n    EolMode eolMode() const;\n\n    //! Returns the visibility of end-of-lines.\n    //!\n    //! \\sa setEolVisibility()\n    bool eolVisibility() const;\n\n    //! Returns the extra space added to the height of a line above the\n    //! baseline of the text.\n    //!\n    //! \\sa setExtraAscent(), extraDescent()\n    int extraAscent() const;\n\n    //! Returns the extra space added to the height of a line below the\n    //! baseline of the text.\n    //!\n    //! \\sa setExtraDescent(), extraAscent()\n    int extraDescent() const;\n\n    //! Fills the range of text with indicator \\a indicatorNumber starting at\n    //! position \\a indexFrom in line \\a lineFrom and finishing at position\n    //! \\a indexTo in line \\a lineTo.\n    //!\n    //! \\sa clearIndicatorRange()\n    void fillIndicatorRange(int lineFrom, int indexFrom, int lineTo,\n            int indexTo, int indicatorNumber);\n\n    //! Find the first occurrence of the string \\a expr and return true if\n    //! \\a expr was found, otherwise returns false.  If \\a expr is found it\n    //! becomes the current selection.\n    //!\n    //! If \\a re is true then \\a expr is interpreted as a regular expression\n    //! rather than a simple string.\n    //!\n    //! If \\a cs is true then the search is case sensitive.\n    //!\n    //! If \\a wo is true then the search looks for whole word matches only,\n    //! otherwise it searches for any matching text.\n    //!\n    //! If \\a wrap is true then the search wraps around the end of the text.\n    //!\n    //! If \\a forward is true (the default) then the search is forward from the\n    //! starting position to the end of the text, otherwise it is backwards to\n    //! the beginning of the text. \n    //!\n    //! If either \\a line or \\a index are negative (the default) then the\n    //! search begins from the current cursor position.  Otherwise the search\n    //! begins at position \\a index of line \\a line.\n    //!\n    //! If \\a show is true (the default) then any text found is made visible\n    //! (ie. it is unfolded).\n    //!\n    //! If \\a posix is true then a regular expression is treated in a more\n    //! POSIX compatible manner by interpreting bare ( and ) as tagged sections\n    //! rather than \\( and \\).\n    //!\n    //! \\sa findFirstInSelection(), findNext(), replace()\n    virtual bool findFirst(const QString &expr, bool re, bool cs, bool wo,\n            bool wrap, bool forward = true, int line = -1, int index = -1,\n            bool show = true, bool posix = false);\n\n    //! Find the first occurrence of the string \\a expr in the current\n    //! selection and return true if \\a expr was found, otherwise returns\n    //! false.  If \\a expr is found it becomes the current selection.  The\n    //! original selection is restored when a subsequent call to findNext()\n    //! returns false.\n    //!\n    //! If \\a re is true then \\a expr is interpreted as a regular expression\n    //! rather than a simple string.\n    //!\n    //! If \\a cs is true then the search is case sensitive.\n    //!\n    //! If \\a wo is true then the search looks for whole word matches only,\n    //! otherwise it searches for any matching text.\n    //!\n    //! If \\a forward is true (the default) then the search is forward from the\n    //! start to the end of the selection, otherwise it is backwards from the\n    //! end to the start of the selection.\n    //!\n    //! If \\a show is true (the default) then any text found is made visible\n    //! (ie. it is unfolded).\n    //!\n    //! If \\a posix is true then a regular expression is treated in a more\n    //! POSIX compatible manner by interpreting bare ( and ) as tagged sections\n    //! rather than \\( and \\).\n    //!\n    //! \\sa findFirstInSelection(), findNext(), replace()\n    virtual bool findFirstInSelection(const QString &expr, bool re, bool cs,\n            bool wo, bool forward = true, bool show = true,\n            bool posix = false);\n\n    //! Find the next occurence of the string found using findFirst() or\n    //! findFirstInSelection().\n    //!\n    //! \\sa findFirst(), findFirstInSelection(), replace()\n    virtual bool findNext();\n\n    //! Returns the number of the first visible line.\n    //!\n    //! \\sa setFirstVisibleLine()\n    int firstVisibleLine() const;\n\n    //! Returns the current folding style.\n    //!\n    //! \\sa setFolding()\n    FoldStyle folding() const {return fold;}\n\n    //! Sets \\a *line and \\a *index to the line and index of the cursor.\n    //!\n    //! \\sa setCursorPosition()\n    void getCursorPosition(int *line, int *index) const;\n\n    //! If there is a selection, \\a *lineFrom is set to the line number in\n    //! which the selection begins and \\a *lineTo is set to the line number in\n    //! which the selection ends.  (They could be the same.)  \\a *indexFrom is\n    //! set to the index at which the selection begins within \\a *lineFrom, and\n    //! \\a *indexTo is set to the index at which the selection ends within\n    //! \\a *lineTo.  If there is no selection, \\a *lineFrom, \\a *indexFrom,\n    //! \\a *lineTo and \\a *indexTo are all set to -1. \n    //!\n    //! \\sa setSelection()\n    void getSelection(int *lineFrom, int *indexFrom, int *lineTo,\n            int *indexTo) const;\n\n    //! Returns true if some text is selected.\n    //!\n    //! \\sa selectedText()\n    bool hasSelectedText() const {return selText;}\n\n    //! Returns the number of characters that line \\a line is indented by.\n    //!\n    //! \\sa setIndentation()\n    int indentation(int line) const;\n\n    //! Returns true if the display of indentation guides is enabled.\n    //!\n    //! \\sa setIndentationGuides()\n    bool indentationGuides() const;\n\n    //! Returns true if indentations are created using tabs and spaces, rather\n    //! than just spaces.  The default is true.\n    //!\n    //! \\sa setIndentationsUseTabs()\n    bool indentationsUseTabs() const;\n\n    //! Returns the indentation width in characters.  The default is 0 which\n    //! means that the value returned by tabWidth() is actually used.\n    //!\n    //! \\sa setIndentationWidth(), tabWidth()\n    int indentationWidth() const;\n\n    //! Define a type of indicator using the style \\a style with the indicator\n    //! number \\a indicatorNumber.  If \\a indicatorNumber is -1 then the\n    //! indicator number is automatically allocated.  The indicator number is\n    //! returned or -1 if too many types of indicator have been defined.\n    //!\n    //! Indicators are used to display additional information over the top of\n    //! styling.  They can be used to show, for example, syntax errors,\n    //! deprecated names and bad indentation by drawing lines under text or\n    //! boxes around text.\n    //!\n    //! There may be up to 32 types of indicator defined at a time.  The first\n    //! 8 are normally used by lexers.  By default indicator number 0 is a\n    //! dark green SquiggleIndicator, 1 is a blue TTIndicator, and 2 is a red\n    //! PlainIndicator.\n    int indicatorDefine(IndicatorStyle style, int indicatorNumber = -1);\n\n    //! Returns true if the indicator \\a indicatorNumber is drawn under the\n    //! text (i.e. in the background).  The default is false.\n    //!\n    //! \\sa setIndicatorDrawUnder()\n    bool indicatorDrawUnder(int indicatorNumber) const;\n\n    //! Returns true if a call tip is currently active.\n    bool isCallTipActive() const;\n\n    //! Returns true if an auto-completion or user defined list is currently\n    //! active.\n    bool isListActive() const;\n\n    //! Returns true if the text has been modified.\n    //!\n    //! \\sa setModified(), modificationChanged()\n    bool isModified() const;\n\n    //! Returns true if the text edit is read-only.\n    //!\n    //! \\sa setReadOnly()\n    bool isReadOnly() const;\n\n    //! Returns true if there is something that can be redone.\n    //!\n    //! \\sa redo()\n    bool isRedoAvailable() const;\n\n    //! Returns true if there is something that can be undone.\n    //!\n    //! \\sa undo()\n    bool isUndoAvailable() const;\n\n    //! Returns true if text is interpreted as being UTF8 encoded.  The default\n    //! is to interpret the text as Latin1 encoded.\n    //!\n    //! \\sa setUtf8()\n    bool isUtf8() const;\n\n    //! Returns true if character \\a ch is a valid word character.\n    //!\n    //! \\sa wordCharacters()\n    bool isWordCharacter(char ch) const;\n\n    //! Returns the line which is at \\a point pixel coordinates or -1 if there\n    //! is no line at that point.\n    int lineAt(const QPoint &point) const;\n\n    //! QScintilla uses the combination of a line number and a character index\n    //! from the start of that line to specify the position of a character\n    //! within the text.  The underlying Scintilla instead uses a byte index\n    //! from the start of the text.  This will convert the \\a position byte\n    //! index to the \\a *line line number and \\a *index character index.\n    //!\n    //! \\sa positionFromLineIndex()\n    void lineIndexFromPosition(int position, int *line, int *index) const;\n\n    //! Returns the length of line \\a line int bytes or -1 if there is no such\n    //! line.  In order to get the length in characters use text(line).length().\n    int lineLength(int line) const;\n\n    //! Returns the number of lines of text.\n    int lines() const;\n\n    //! Returns the length of the text edit's text in bytes.  In order to get\n    //! the length in characters use text().length().\n    int length() const;\n\n    //! Returns the current language lexer used to style text.  If it is 0 then\n    //! syntax styling is disabled.\n    //!\n    //! \\sa setLexer()\n    QsciLexer *lexer() const;\n\n    //! Returns the background color of margin \\a margin.\n    //!\n    //! \\sa setMarginBackgroundColor()\n    QColor marginBackgroundColor(int margin) const;\n\n    //! Returns true if line numbers are enabled for margin \\a margin.\n    //!\n    //! \\sa setMarginLineNumbers(), marginType(), SCI_GETMARGINTYPEN\n    bool marginLineNumbers(int margin) const;\n\n    //! Returns the marker mask of margin \\a margin.\n    //!\n    //! \\sa setMarginMask(), QsciMarker, SCI_GETMARGINMASKN\n    int marginMarkerMask(int margin) const;\n\n    //! Returns the margin options.  The default is MoNone.\n    //!\n    //! \\sa setMarginOptions(), MoNone, MoSublineSelect.\n    int marginOptions() const;\n\n    //! Returns true if margin \\a margin is sensitive to mouse clicks.\n    //!\n    //! \\sa setMarginSensitivity(), marginClicked(), SCI_GETMARGINTYPEN\n    bool marginSensitivity(int margin) const;\n\n    //! Returns the type of margin \\a margin.\n    //!\n    //! \\sa setMarginType(), SCI_GETMARGINTYPEN\n    MarginType marginType(int margin) const;\n\n    //! Returns the width in pixels of margin \\a margin.\n    //!\n    //! \\sa setMarginWidth(), SCI_GETMARGINWIDTHN\n    int marginWidth(int margin) const;\n\n    //! Returns the number of margins.\n    //!\n    //! \\sa setMargins()\n    int margins() const;\n\n    //! Define a type of marker using the symbol \\a sym with the marker number\n    //! \\a markerNumber.  If \\a markerNumber is -1 then the marker number is\n    //! automatically allocated.  The marker number is returned or -1 if too\n    //! many types of marker have been defined.\n    //!\n    //! Markers are small geometric symbols and characters used, for example,\n    //! to indicate the current line or, in debuggers, to indicate breakpoints.\n    //! If a margin has a width of 0 then its markers are not drawn, but their\n    //! background colours affect the background colour of the corresponding\n    //! line of text.\n    //!\n    //! There may be up to 32 types of marker defined at a time and each line\n    //! of text has a set of marker instances associated with it.  Markers are\n    //! drawn according to their numerical identifier.  Markers try to move\n    //! with their text by tracking where the start of their line moves to.\n    //! For example, when a line is deleted its markers are added to previous\n    //! line's markers.\n    //!\n    //! Each marker type is identified by a marker number.  Each instance of a\n    //! marker is identified by a marker handle.\n    int markerDefine(MarkerSymbol sym, int markerNumber = -1);\n\n    //! Define a marker using the character \\a ch with the marker number\n    //! \\a markerNumber.  If \\a markerNumber is -1 then the marker number is\n    //! automatically allocated.  The marker number is returned or -1 if too\n    //! many markers have been defined.\n    int markerDefine(char ch, int markerNumber = -1);\n\n    //! Define a marker using a copy of the pixmap \\a pm with the marker number\n    //! \\a markerNumber.  If \\a markerNumber is -1 then the marker number is\n    //! automatically allocated.  The marker number is returned or -1 if too\n    //! many markers have been defined.\n    int markerDefine(const QPixmap &pm, int markerNumber = -1);\n\n    //! Define a marker using a copy of the image \\a im with the marker number\n    //! \\a markerNumber.  If \\a markerNumber is -1 then the marker number is\n    //! automatically allocated.  The marker number is returned or -1 if too\n    //! many markers have been defined.\n    int markerDefine(const QImage &im, int markerNumber = -1);\n\n    //! Add an instance of marker number \\a markerNumber to line number\n    //! \\a linenr.  A handle for the marker is returned which can be used to\n    //! track the marker's position, or -1 if the \\a markerNumber was invalid.\n    //!\n    //! \\sa markerDelete(), markerDeleteAll(), markerDeleteHandle()\n    int markerAdd(int linenr, int markerNumber);\n\n    //! Returns the 32 bit mask of marker numbers at line number \\a linenr.\n    //!\n    //! \\sa markerAdd()\n    unsigned markersAtLine(int linenr) const;\n\n    //! Delete all markers with the marker number \\a markerNumber in the line\n    //! \\a linenr.  If \\a markerNumber is -1 then delete all markers from line\n    //! \\a linenr.\n    //!\n    //! \\sa markerAdd(), markerDeleteAll(), markerDeleteHandle()\n    void markerDelete(int linenr, int markerNumber = -1);\n\n    //! Delete the all markers with the marker number \\a markerNumber.  If\n    //! \\a markerNumber is -1 then delete all markers.\n    //!\n    //! \\sa markerAdd(), markerDelete(), markerDeleteHandle()\n    void markerDeleteAll(int markerNumber = -1);\n\n    //! Delete the the marker instance with the marker handle \\a mhandle.\n    //!\n    //! \\sa markerAdd(), markerDelete(), markerDeleteAll()\n    void markerDeleteHandle(int mhandle);\n\n    //! Return the line number that contains the marker instance with the\n    //! marker handle \\a mhandle.\n    int markerLine(int mhandle) const;\n\n    //! Return the number of the next line to contain at least one marker from\n    //! a 32 bit mask of markers.  \\a linenr is the line number to start the\n    //! search from.  \\a mask is the mask of markers to search for.\n    //!\n    //! \\sa markerFindPrevious()\n    int markerFindNext(int linenr, unsigned mask) const;\n\n    //! Return the number of the previous line to contain at least one marker\n    //! from a 32 bit mask of markers.  \\a linenr is the line number to start\n    //! the search from.  \\a mask is the mask of markers to search for.\n    //!\n    //! \\sa markerFindNext()\n    int markerFindPrevious(int linenr, unsigned mask) const;\n\n    //! Returns true if text entered by the user will overwrite existing text.\n    //!\n    //! \\sa setOverwriteMode()\n    bool overwriteMode() const;\n\n    //! Returns the widget's paper (ie. background) colour.\n    //!\n    //! \\sa setPaper()\n    QColor paper() const;\n\n    //! QScintilla uses the combination of a line number and a character index\n    //! from the start of that line to specify the position of a character\n    //! within the text.  The underlying Scintilla instead uses a byte index\n    //! from the start of the text.  This will return the byte index\n    //! corresponding to the \\a line line number and \\a index character index.\n    //!\n    //! \\sa lineIndexFromPosition()\n    int positionFromLineIndex(int line, int index) const;\n\n    //! Reads the current document from the \\a io device and returns true if\n    //! there was no error.\n    //!\n    //! \\sa write()\n    bool read(QIODevice *io);\n\n    //! Recolours the document between the \\a start and \\a end positions.\n    //! \\a start defaults to the start of the document and \\a end defaults to\n    //! the end of the document.\n    virtual void recolor(int start = 0, int end = -1);\n\n    //! Register an image \\a pm with ID \\a id.  Registered images can be\n    //! displayed in auto-completion lists.\n    //!\n    //! \\sa clearRegisteredImages(), QsciLexer::apiLoad()\n    void registerImage(int id, const QPixmap &pm);\n\n    //! Register an image \\a im with ID \\a id.  Registered images can be\n    //! displayed in auto-completion lists.\n    //!\n    //! \\sa clearRegisteredImages(), QsciLexer::apiLoad()\n    void registerImage(int id, const QImage &im);\n\n    //! Replace the current selection, set by a previous call to findFirst(),\n    //! findFirstInSelection() or findNext(), with \\a replaceStr.\n    //!\n    //! \\sa findFirst(), findFirstInSelection(), findNext()\n    virtual void replace(const QString &replaceStr);\n\n    //! Reset the fold margin colours to their defaults.\n    //!\n    //! \\sa setFoldMarginColors()\n    void resetFoldMarginColors();\n\n    //! Resets the background colour of an active hotspot area to the default.\n    //!\n    //! \\sa setHotspotBackgroundColor(), resetHotspotForegroundColor()\n    void resetHotspotBackgroundColor();\n\n    //! Resets the foreground colour of an active hotspot area to the default.\n    //!\n    //! \\sa setHotspotForegroundColor(), resetHotspotBackgroundColor()\n    void resetHotspotForegroundColor();\n\n    //! The fold margin may be drawn as a one pixel sized checkerboard pattern\n    //! of two colours, \\a fore and \\a back.\n    //!\n    //! \\sa resetFoldMarginColors()\n    void setFoldMarginColors(const QColor &fore, const QColor &back);\n\n    //! Set the display style for annotations.  The default is\n    //! AnnotationStandard.\n    //!\n    //! \\sa annotationDisplay()\n    void setAnnotationDisplay(AnnotationDisplay display);\n\n    //! Enable the use of fill-up characters, either those explicitly set or\n    //! those set by a lexer.  By default, fill-up characters are disabled.\n    //!\n    //! \\sa autoCompletionFillupsEnabled(), setAutoCompletionFillups()\n    void setAutoCompletionFillupsEnabled(bool enabled);\n\n    //! A fill-up character is one that, when entered while an auto-completion\n    //! list is being displayed, causes the currently selected item from the\n    //! list to be added to the text followed by the fill-up character.\n    //! \\a fillups is the set of fill-up characters.  If a language lexer has\n    //! been set then this is ignored and the lexer defines the fill-up\n    //! characters.  The default is that no fill-up characters are set.\n    //!\n    //! \\sa autoCompletionFillupsEnabled(), setAutoCompletionFillupsEnabled()\n    void setAutoCompletionFillups(const char *fillups);\n\n    //! A word separator is a sequence of characters that, when entered, causes\n    //! the auto-completion list to be displayed.  If a language lexer has been\n    //! set then this is ignored and the lexer defines the word separators.\n    //! The default is that no word separators are set.\n    //!\n    //! \\sa setAutoCompletionThreshold()\n    void setAutoCompletionWordSeparators(const QStringList &separators);\n\n    //! Set the background colour of call tips to \\a col.  The default is\n    //! white.\n    void setCallTipsBackgroundColor(const QColor &col);\n\n    //! Set the foreground colour of call tips to \\a col.  The default is\n    //! mid-gray.\n    void setCallTipsForegroundColor(const QColor &col);\n\n    //! Set the highlighted colour of call tip text to \\a col.  The default is\n    //! dark blue.\n    void setCallTipsHighlightColor(const QColor &col);\n\n    //! Set the current call tip position.  The default is CallTipsBelowText.\n    //!\n    //! \\sa callTipsPosition()\n    void setCallTipsPosition(CallTipsPosition position);\n\n    //! Set the current call tip style.  The default is CallTipsNoContext.\n    //!\n    //! \\sa callTipsStyle()\n    void setCallTipsStyle(CallTipsStyle style);\n\n    //! Set the maximum number of call tips that are displayed to \\a nr.  If\n    //! the maximum number is 0 then all applicable call tips are displayed.\n    //! If the maximum number is -1 then one call tip will be displayed with up\n    //! and down arrows that allow the use to scroll through the full list.\n    //! The default is -1.\n    //!\n    //! \\sa callTipsVisible()\n    void setCallTipsVisible(int nr);\n\n    //! Sets each line in the \\a folds list of line numbers to be a contracted\n    //! fold.  This is typically used to restore the fold state of a document.\n    //!\n    //! \\sa contractedFolds()\n    void setContractedFolds(const QList<int> &folds);\n\n    //! Attach the document \\a document, replacing the currently attached\n    //! document.\n    //!\n    //! \\sa document()\n    void setDocument(const QsciDocument &document);\n\n    //! Add \\a colnr to the columns which are displayed with a vertical line.\n    //! The edge mode must be set to EdgeMultipleLines.\n    //!\n    //! \\sa clearEdgeColumns()\n    void addEdgeColumn(int colnr, const QColor &col);\n\n    //! Remove any columns added by previous calls to addEdgeColumn().\n    //!\n    //! \\sa addEdgeColumn()\n    void clearEdgeColumns();\n\n    //! Set the color of the marker used to show that a line has exceeded the\n    //! length set by setEdgeColumn().\n    //!\n    //! \\sa edgeColor(), \\sa setEdgeColumn\n    void setEdgeColor(const QColor &col);\n\n    //! Set the number of the column after which lines are considered to be\n    //! long.\n    //!\n    //! \\sa edgeColumn()\n    void setEdgeColumn(int colnr);\n\n    //! Set the edge mode which determines how long lines are marked.\n    //!\n    //! \\sa edgeMode()\n    void setEdgeMode(EdgeMode mode);\n\n    //! Set the number of the first visible line to \\a linenr.\n    //!\n    //! \\sa firstVisibleLine()\n    void setFirstVisibleLine(int linenr);\n\n    //! Enables or disables, according to \\a under, if the indicator\n    //! \\a indicatorNumber is drawn under or over the text (i.e. in the\n    //! background or foreground).  If \\a indicatorNumber is -1 then the state\n    //! of all indicators is set.\n    //!\n    //! \\sa indicatorDrawUnder()\n    void setIndicatorDrawUnder(bool under, int indicatorNumber = -1);\n\n    //! Set the foreground colour of indicator \\a indicatorNumber to \\a col.\n    //! If \\a indicatorNumber is -1 then the colour of all indicators is set.\n    void setIndicatorForegroundColor(const QColor &col, int indicatorNumber = -1);\n\n    //! Set the foreground colour of indicator \\a indicatorNumber to \\a col\n    //! when the mouse is over it or the caret moved into it.  If\n    //! \\a indicatorNumber is -1 then the colour of all indicators is set.\n    void setIndicatorHoverForegroundColor(const QColor &col, int indicatorNumber = -1);\n\n    //! Set the style of indicator \\a indicatorNumber to \\a style when the\n    //! mouse is over it or the caret moved into it.  If \\a indicatorNumber is\n    //! -1 then the style of all indicators is set.\n    void setIndicatorHoverStyle(IndicatorStyle style, int indicatorNumber = -1);\n\n    //! Set the outline colour of indicator \\a indicatorNumber to \\a col.\n    //! If \\a indicatorNumber is -1 then the colour of all indicators is set.\n    //! At the moment only the alpha value of the colour has any affect.\n    void setIndicatorOutlineColor(const QColor &col, int indicatorNumber = -1);\n\n    //! Sets the background color of margin \\a margin to \\a col.\n    //!\n    //! \\sa marginBackgroundColor()\n    void setMarginBackgroundColor(int margin, const QColor &col);\n\n    //! Set the margin options to \\a options.\n    //!\n    //! \\sa marginOptions(), MoNone, MoSublineSelect.\n    void setMarginOptions(int options);\n\n    //! Set the margin text of line \\a line with the text \\a text using the\n    //! style number \\a style.\n    void setMarginText(int line, const QString &text, int style);\n\n    //! Set the margin text of line \\a line with the text \\a text using the\n    //! style \\a style.\n    void setMarginText(int line, const QString &text, const QsciStyle &style);\n\n    //! Set the margin text of line \\a line with the styled text \\a text.\n    void setMarginText(int line, const QsciStyledText &text);\n\n    //! Set the margin text of line \\a line with the list of styled text \\a\n    //! text.\n    void setMarginText(int line, const QList<QsciStyledText> &text);\n\n    //! Set the type of margin \\a margin to type \\a type.\n    //!\n    //! \\sa marginType(), SCI_SETMARGINTYPEN\n    void setMarginType(int margin, MarginType type);\n\n    //! The margin text on line \\a line is removed.  If \\a line is negative\n    //! then all margin text is removed.\n    void clearMarginText(int line = -1);\n\n    //! Set the number of margins to \\a margins.\n    //!\n    //! \\sa margins()\n    void setMargins(int margins);\n\n    //! Set the background colour, including the alpha component, of marker\n    //! \\a markerNumber to \\a col.  If \\a markerNumber is -1 then the colour of\n    //! all markers is set.  The default is white.\n    //!\n    //! \\sa setMarkerForegroundColor()\n    void setMarkerBackgroundColor(const QColor &col, int markerNumber = -1);\n\n    //! Set the foreground colour of marker \\a markerNumber to \\a col.  If\n    //! \\a markerNumber is -1 then the colour of all markers is set.  The\n    //! default is black.\n    //!\n    //! \\sa setMarkerBackgroundColor()\n    void setMarkerForegroundColor(const QColor &col, int markerNumber = -1);\n\n    //! Set the background colour used to display matched braces to \\a col.  It\n    //! is ignored if an indicator is being used.  The default is white.\n    //!\n    //! \\sa setMatchedBraceForegroundColor(), setMatchedBraceIndicator()\n    void setMatchedBraceBackgroundColor(const QColor &col);\n\n    //! Set the foreground colour used to display matched braces to \\a col.  It\n    //! is ignored if an indicator is being used.  The default is red.\n    //!\n    //! \\sa setMatchedBraceBackgroundColor(), setMatchedBraceIndicator()\n    void setMatchedBraceForegroundColor(const QColor &col);\n\n    //! Set the indicator used to display matched braces to \\a indicatorNumber.\n    //! The default is not to use an indicator.\n    //!\n    //! \\sa resetMatchedBraceIndicator(), setMatchedBraceBackgroundColor()\n    void setMatchedBraceIndicator(int indicatorNumber);\n\n    //! Stop using an indicator to display matched braces.\n    //!\n    //! \\sa setMatchedBraceIndicator()\n    void resetMatchedBraceIndicator();\n\n    //! Sets the mode used to draw tab characters when whitespace is visible to\n    //! \\a mode.  The default is to use an arrow.\n    //!\n    //! \\sa tabDrawMode()\n    void setTabDrawMode(TabDrawMode mode);\n\n    //! Set the background colour used to display unmatched braces to \\a col.\n    //! It is ignored if an indicator is being used.  The default is white.\n    //!\n    //! \\sa setUnmatchedBraceForegroundColor(), setUnmatchedBraceIndicator()\n    void setUnmatchedBraceBackgroundColor(const QColor &col);\n\n    //! Set the foreground colour used to display unmatched braces to \\a col.\n    //! It is ignored if an indicator is being used.  The default is blue.\n    //!\n    //! \\sa setUnmatchedBraceBackgroundColor(), setUnmatchedBraceIndicator()\n    void setUnmatchedBraceForegroundColor(const QColor &col);\n\n    //! Set the indicator used to display unmatched braces to\n    //! \\a indicatorNumber.  The default is not to use an indicator.\n    //!\n    //! \\sa resetUnmatchedBraceIndicator(), setUnmatchedBraceBackgroundColor()\n    void setUnmatchedBraceIndicator(int indicatorNumber);\n\n    //! Stop using an indicator to display unmatched braces.\n    //!\n    //! \\sa setUnmatchedBraceIndicator()\n    void resetUnmatchedBraceIndicator();\n\n    //! Set the visual flags displayed when a line is wrapped.  \\a endFlag\n    //! determines if and where the flag at the end of a line is displayed.\n    //! \\a startFlag determines if and where the flag at the start of a line is\n    //! displayed.  \\a indent is the number of characters a wrapped line is\n    //! indented by.  By default no visual flags are displayed.\n    void setWrapVisualFlags(WrapVisualFlag endFlag,\n            WrapVisualFlag startFlag = WrapFlagNone, int indent = 0);\n\n    //! Returns the selected text or an empty string if there is no currently\n    //! selected text.\n    //!\n    //! \\sa hasSelectedText()\n    QString selectedText() const;\n\n    //! Returns whether or not the selection is drawn up to the right hand\n    //! border.\n    //!\n    //! \\sa setSelectionToEol()\n    bool selectionToEol() const;\n\n    //! Sets the background colour of an active hotspot area to \\a col.\n    //!\n    //! \\sa resetHotspotBackgroundColor(), setHotspotForegroundColor()\n    void setHotspotBackgroundColor(const QColor &col);\n\n    //! Sets the foreground colour of an active hotspot area to \\a col.\n    //!\n    //! \\sa resetHotspotForegroundColor(), setHotspotBackgroundColor()\n    void setHotspotForegroundColor(const QColor &col);\n\n    //! Enables or disables, according to \\a enable, the underlining of an\n    //! active hotspot area.  The default is false.\n    void setHotspotUnderline(bool enable);\n\n    //! Enables or disables, according to \\a enable, the wrapping of a hotspot\n    //! area to following lines.  The default is true.\n    void setHotspotWrap(bool enable);\n\n    //! Sets whether or not the selection is drawn up to the right hand border.\n    //! \\a filled is set if the selection is drawn to the border.\n    //!\n    //! \\sa selectionToEol()\n    void setSelectionToEol(bool filled);\n\n    //! Sets the extra space added to the height of a line above the baseline\n    //! of the text to \\a extra.\n    //!\n    //! \\sa extraAscent(), setExtraDescent()\n    void setExtraAscent(int extra);\n\n    //! Sets the extra space added to the height of a line below the baseline\n    //! of the text to \\a extra.\n    //!\n    //! \\sa extraDescent(), setExtraAscent()\n    void setExtraDescent(int extra);\n\n    //! Text entered by the user will overwrite existing text if \\a overwrite\n    //! is true.\n    //!\n    //! \\sa overwriteMode()\n    void setOverwriteMode(bool overwrite);\n\n    //! Sets the background colour of visible whitespace to \\a col.  If \\a col\n    //! is an invalid color (the default) then the color specified by the\n    //! current lexer is used.\n    void setWhitespaceBackgroundColor(const QColor &col);\n\n    //! Sets the foreground colour of visible whitespace to \\a col.  If \\a col\n    //! is an invalid color (the default) then the color specified by the\n    //! current lexer is used.\n    void setWhitespaceForegroundColor(const QColor &col);\n\n    //! Sets the size of the dots used to represent visible whitespace.\n    //!\n    //! \\sa whitespaceSize()\n    void setWhitespaceSize(int size);\n\n    //! Sets the line wrap indentation mode to \\a mode.  The default is\n    //! WrapIndentFixed.\n    //!\n    //! \\sa wrapIndentMode()\n    void setWrapIndentMode(WrapIndentMode mode);\n\n    //! Displays a user defined list which can be interacted with like an\n    //! auto-completion list.  \\a id is an identifier for the list which is\n    //! passed as an argument to the userListActivated() signal and must be at\n    //! least 1.  \\a list is the text with which the list is populated.\n    //!\n    //! \\sa cancelList(), isListActive(), userListActivated()\n    void showUserList(int id, const QStringList &list);\n\n    //! The standard command set is returned.\n    QsciCommandSet *standardCommands() const {return stdCmds;}\n\n    //! Returns the mode used to draw tab characters when whitespace is\n    //! visible.\n    //!\n    //! \\sa setTabDrawMode()\n    TabDrawMode tabDrawMode() const;\n\n    //! Returns true if the tab key indents a line instead of inserting a tab\n    //! character.  The default is true.\n    //!\n    //! \\sa setTabIndents(), backspaceUnindents(), setBackspaceUnindents()\n    bool tabIndents() const;\n\n    //! Returns the tab width in characters.  The default is 8.\n    //!\n    //! \\sa setTabWidth()\n    int tabWidth() const;\n\n    //! Returns the text of the current document.\n    //!\n    //! \\sa setText()\n    QString text() const;\n\n    //! \\overload\n    //!\n    //! Returns the text of line \\a line.\n    //!\n    //! \\sa setText()\n    QString text(int line) const;\n\n    //! \\overload\n    //!\n    //! Returns the text between positions \\a start and \\a end.  This is\n    //! typically used by QsciLexerCustom::styleText().\n    //!\n    //! \\sa bytes(), setText()\n    QString text(int start, int end) const;\n\n    //! Returns the height in pixels of the text in line number \\a linenr.\n    int textHeight(int linenr) const;\n\n    //! Returns the size of the dots used to represent visible whitespace.\n    //!\n    //! \\sa setWhitespaceSize()\n    int whitespaceSize() const;\n\n    //! Returns the visibility of whitespace.\n    //!\n    //! \\sa setWhitespaceVisibility()\n    WhitespaceVisibility whitespaceVisibility() const;\n\n    //! Returns the word at the \\a line line number and \\a index character\n    //! index.\n    QString wordAtLineIndex(int line, int index) const;\n\n    //! Returns the word at the \\a point pixel coordinates.\n    QString wordAtPoint(const QPoint &point) const;\n\n    //! Returns the set of valid word character as defined by the current\n    //! language lexer.  If there is no current lexer then the set contains an\n    //! an underscore, numbers and all upper and lower case alphabetic\n    //! characters.\n    //!\n    //! \\sa isWordCharacter()\n    const char *wordCharacters() const;\n\n    //! Returns the line wrap mode.\n    //!\n    //! \\sa setWrapMode()\n    WrapMode wrapMode() const;\n\n    //! Returns the line wrap indentation mode.\n    //!\n    //! \\sa setWrapIndentMode()\n    WrapIndentMode wrapIndentMode() const;\n\n    //! Writes the current document to the \\a io device and returns true if\n    //! there was no error.\n    //!\n    //! \\sa read()\n    bool write(QIODevice *io) const;\n\npublic slots:\n    //! Appends the text \\a text to the end of the text edit.  Note that the\n    //! undo/redo history is cleared by this function.\n    virtual void append(const QString &text);\n\n    //! Display an auto-completion list based on any installed APIs, the\n    //! current contents of the document and the characters immediately to the\n    //! left of the cursor.\n    //!\n    //! \\sa autoCompleteFromAPIs(), autoCompleteFromDocument()\n    virtual void autoCompleteFromAll();\n\n    //! Display an auto-completion list based on any installed APIs and the\n    //! characters immediately to the left of the cursor.\n    //!\n    //! \\sa autoCompleteFromAll(), autoCompleteFromDocument(),\n    //! setAutoCompletionAPIs()\n    virtual void autoCompleteFromAPIs();\n\n    //! Display an auto-completion list based on the current contents of the\n    //! document and the characters immediately to the left of the cursor.\n    //!\n    //! \\sa autoCompleteFromAll(), autoCompleteFromAPIs()\n    virtual void autoCompleteFromDocument();\n\n    //! Display a call tip based on the the characters immediately to the left\n    //! of the cursor.\n    virtual void callTip();\n\n    //! Deletes all the text in the text edit.\n    virtual void clear();\n\n    //! Copies any selected text to the clipboard.\n    //!\n    //! \\sa copyAvailable(), cut(), paste()\n    virtual void copy();\n\n    //! Copies any selected text to the clipboard and then deletes the text.\n    //!\n    //! \\sa copy(), paste()\n    virtual void cut();\n\n    //! Ensures that the cursor is visible.\n    virtual void ensureCursorVisible();\n\n    //! Ensures that the line number \\a line is visible.\n    virtual void ensureLineVisible(int line);\n\n    //! If any lines are currently folded then they are all unfolded.\n    //! Otherwise all lines are folded.  This has the same effect as clicking\n    //! in the fold margin with the shift and control keys pressed.  If\n    //! \\a children is not set (the default) then only the top level fold\n    //! points are affected, otherwise the state of all fold points are\n    //! changed.\n    virtual void foldAll(bool children = false);\n\n    //! If the line \\a line is folded then it is unfolded.  Otherwise it is\n    //! folded.  This has the same effect as clicking in the fold margin.\n    virtual void foldLine(int line);\n\n    //! Increases the indentation of line \\a line by an indentation width.\n    //!\n    //! \\sa unindent()\n    virtual void indent(int line);\n\n    //! Insert the text \\a text at the current position.\n    virtual void insert(const QString &text);\n\n    //! Insert the text \\a text in the line \\a line at the position\n    //! \\a index.\n    virtual void insertAt(const QString &text, int line, int index);\n\n    //! If the cursor is either side of a brace character then move it to the\n    //! position of the corresponding brace.\n    virtual void moveToMatchingBrace();\n\n    //! Pastes any text from the clipboard into the text edit at the current\n    //! cursor position.\n    //!\n    //! \\sa copy(), cut()\n    virtual void paste();\n\n    //! Redo the last change or sequence of changes.\n    //!\n    //! \\sa isRedoAvailable()\n    virtual void redo();\n\n    //! Removes any selected text.\n    //!\n    //! \\sa replaceSelectedText()\n    virtual void removeSelectedText();\n\n    //! Replaces any selected text with \\a text.\n    //!\n    //! \\sa removeSelectedText()\n    virtual void replaceSelectedText(const QString &text);\n\n    //! Resets the background colour of selected text to the default.\n    //!\n    //! \\sa setSelectionBackgroundColor(), resetSelectionForegroundColor()\n    virtual void resetSelectionBackgroundColor();\n\n    //! Resets the foreground colour of selected text to the default.\n    //!\n    //! \\sa setSelectionForegroundColor(), resetSelectionBackgroundColor()\n    virtual void resetSelectionForegroundColor();\n\n    //! If \\a select is true (the default) then all the text is selected.  If\n    //! \\a select is false then any currently selected text is deselected.\n    virtual void selectAll(bool select = true);\n\n    //! If the cursor is either side of a brace character then move it to the\n    //! position of the corresponding brace and select the text between the\n    //! braces.\n    virtual void selectToMatchingBrace();\n\n    //! If \\a cs is true then auto-completion lists are case sensitive.  The\n    //! default is true.  Note that setting a lexer may change the case\n    //! sensitivity.\n    //!\n    //! \\sa autoCompletionCaseSensitivity()\n    virtual void setAutoCompletionCaseSensitivity(bool cs);\n\n    //! If \\a replace is true then when an item from an auto-completion list is\n    //! selected, the rest of the word to the right of the current cursor is\n    //! removed.  The default is false.\n    //!\n    //! \\sa autoCompletionReplaceWord()\n    virtual void setAutoCompletionReplaceWord(bool replace);\n\n    //! If \\a single is true then when there is only a single entry in an\n    //! auto-completion list it is automatically used and the list is not\n    //! displayed.  This only has an effect when auto-completion is explicitly\n    //! requested (using autoCompleteFromAPIs() and autoCompleteFromDocument())\n    //! and has no effect when auto-completion is triggered as the user types.\n    //! The default is false.  Note that this is deprecated and\n    //! setAutoCompletionUseSingle() should be used instead.\n    //!\n    //! \\sa autoCompletionShowSingle()\n    virtual void setAutoCompletionShowSingle(bool single);\n\n    //! Sets the source for the auto-completion list when it is being displayed\n    //! automatically as the user types to \\a source.  The default is AcsNone,\n    //! ie. it is disabled.\n    //!\n    //! \\sa autoCompletionSource()\n    virtual void setAutoCompletionSource(AutoCompletionSource source);\n\n    //! Sets the threshold for the automatic display of the auto-completion\n    //! list as the user types to \\a thresh.  The threshold is the number of\n    //! characters that the user must type before the list is displayed.  If\n    //! the threshold is less than or equal to 0 then the list is disabled.\n    //! The default is -1.\n    //!\n    //! \\sa autoCompletionThreshold(), setAutoCompletionWordSeparators()\n    virtual void setAutoCompletionThreshold(int thresh);\n\n    //! Sets the behavior of the auto-completion list when it has a single\n    //! entry.  The default is AcusNever.\n    //!\n    //! \\sa autoCompletionUseSingle()\n    virtual void setAutoCompletionUseSingle(AutoCompletionUseSingle single);\n\n    //! If \\a autoindent is true then auto-indentation is enabled.  The default\n    //! is false.\n    //!\n    //! \\sa autoIndent()\n    virtual void setAutoIndent(bool autoindent);\n\n    //! Sets the brace matching mode to \\a bm.  The default is NoBraceMatching.\n    //!\n    //! \\sa braceMatching()\n    virtual void setBraceMatching(BraceMatch bm);\n\n    //! If \\a deindent is true then the backspace key will unindent a line\n    //! rather then delete a character.\n    //!\n    //! \\sa backspaceUnindents(), tabIndents(), setTabIndents()\n    virtual void setBackspaceUnindents(bool unindent);\n\n    //! Sets the foreground colour of the caret to \\a col.\n    virtual void setCaretForegroundColor(const QColor &col);\n\n    //! Sets the background colour, including the alpha component, of the line\n    //! containing the caret to \\a col.\n    //!\n    //! \\sa setCaretLineVisible()\n    virtual void setCaretLineBackgroundColor(const QColor &col);\n\n    //! Enables or disables, according to \\a enable, the background color of\n    //! the line containing the caret.\n    //!\n    //! \\sa setCaretLineBackgroundColor()\n    virtual void setCaretLineVisible(bool enable);\n\n    //! Sets the width of the caret to \\a width pixels.  A \\a width of 0 makes\n    //! the caret invisible.\n    virtual void setCaretWidth(int width);\n\n    //! The widget's text (ie. foreground) colour is set to \\a c.  This has no\n    //! effect if a language lexer has been set.\n    //!\n    //! \\sa color()\n    virtual void setColor(const QColor &c);\n\n    //! Sets the cursor to the line \\a line at the position \\a index.\n    //!\n    //! \\sa getCursorPosition()\n    virtual void setCursorPosition(int line, int index);\n\n    //! Sets the end-of-line mode to \\a mode.  The default is the platform's\n    //! natural mode.\n    //!\n    //! \\sa eolMode()\n    virtual void setEolMode(EolMode mode);\n\n    //! If \\a visible is true then end-of-lines are made visible.  The default\n    //! is that they are invisible.\n    //!\n    //! \\sa eolVisibility()\n    virtual void setEolVisibility(bool visible);\n\n    //! Sets the folding style for margin \\a margin to \\a fold.  The default\n    //! style is NoFoldStyle (ie. folding is disabled) and the default margin\n    //! is 2.\n    //!\n    //! \\sa folding()\n    virtual void setFolding(FoldStyle fold, int margin = 2);\n\n    //! Sets the indentation of line \\a line to \\a indentation characters.\n    //!\n    //! \\sa indentation()\n    virtual void setIndentation(int line, int indentation);\n\n    //! Enables or disables, according to \\a enable, this display of\n    //! indentation guides.\n    //!\n    //! \\sa indentationGuides()\n    virtual void setIndentationGuides(bool enable);\n\n    //! Set the background colour of indentation guides to \\a col.\n    //!\n    //! \\sa setIndentationGuidesForegroundColor()\n    virtual void setIndentationGuidesBackgroundColor(const QColor &col);\n\n    //! Set the foreground colour of indentation guides to \\a col.\n    //!\n    //! \\sa setIndentationGuidesBackgroundColor()\n    virtual void setIndentationGuidesForegroundColor(const QColor &col);\n\n    //! If \\a tabs is true then indentations are created using tabs and spaces,\n    //! rather than just spaces.\n    //!\n    //! \\sa indentationsUseTabs()\n    virtual void setIndentationsUseTabs(bool tabs);\n\n    //! Sets the indentation width to \\a width characters.  If \\a width is 0\n    //! then the value returned by tabWidth() is used.\n    //!\n    //! \\sa indentationWidth(), tabWidth()\n    virtual void setIndentationWidth(int width);\n\n    //! Sets the specific language lexer used to style text to \\a lex.  If\n    //! \\a lex is 0 then syntax styling is disabled.\n    //!\n    //! \\sa lexer()\n    virtual void setLexer(QsciLexer *lexer = 0);\n\n    //! Set the background colour of all margins to \\a col.  The default is a\n    //! gray.\n    //!\n    //! \\sa setMarginsForegroundColor()\n    virtual void setMarginsBackgroundColor(const QColor &col);\n\n    //! Set the font used in all margins to \\a f.\n    virtual void setMarginsFont(const QFont &f);\n\n    //! Set the foreground colour of all margins to \\a col.  The default is\n    //! black.\n    //!\n    //! \\sa setMarginsBackgroundColor()\n    virtual void setMarginsForegroundColor(const QColor &col);\n\n    //! Enables or disables, according to \\a lnrs, the display of line numbers\n    //! in margin \\a margin.\n    //!\n    //! \\sa marginLineNumbers(), setMarginType(), SCI_SETMARGINTYPEN\n    virtual void setMarginLineNumbers(int margin, bool lnrs);\n\n    //! Sets the marker mask of margin \\a margin to \\a mask.  Only those\n    //! markers whose bit is set in the mask are displayed in the margin.\n    //!\n    //! \\sa marginMarkerMask(), QsciMarker, SCI_SETMARGINMASKN\n    virtual void setMarginMarkerMask(int margin, int mask);\n\n    //! Enables or disables, according to \\a sens, the sensitivity of margin\n    //! \\a margin to mouse clicks.  If the user clicks in a sensitive margin\n    //! the marginClicked() signal is emitted.\n    //!\n    //! \\sa marginSensitivity(), marginClicked(), SCI_SETMARGINSENSITIVEN\n    virtual void setMarginSensitivity(int margin, bool sens);\n\n    //! Sets the width of margin \\a margin to \\a width pixels.  If the width of\n    //! a margin is 0 then it is not displayed.\n    //!\n    //! \\sa marginWidth(), SCI_SETMARGINWIDTHN\n    virtual void setMarginWidth(int margin, int width);\n\n    //! Sets the width of margin \\a margin so that it is wide enough to display\n    //! \\a s in the current margin font.\n    //!\n    //! \\sa marginWidth(), SCI_SETMARGINWIDTHN\n    virtual void setMarginWidth(int margin, const QString &s);\n\n    //! Sets the modified state of the text edit to \\a m.  Note that it is only\n    //! possible to clear the modified state (where \\a m is false).  Attempts\n    //! to set the modified state (where \\a m is true) are ignored.\n    //!\n    //! \\sa isModified(), modificationChanged()\n    virtual void setModified(bool m);\n\n    //! The widget's paper (ie. background) colour is set to \\a c.  This has no\n    //! effect if a language lexer has been set.\n    //!\n    //! \\sa paper()\n    virtual void setPaper(const QColor &c);\n\n    //! Sets the read-only state of the text edit to \\a ro.\n    //!\n    //! \\sa isReadOnly()\n    virtual void setReadOnly(bool ro);\n\n    //! Sets the selection which starts at position \\a indexFrom in line\n    //! \\a lineFrom and ends at position \\a indexTo in line \\a lineTo.  The\n    //! cursor is moved to position \\a indexTo in \\a lineTo.\n    //!\n    //! \\sa getSelection()\n    virtual void setSelection(int lineFrom, int indexFrom, int lineTo,\n            int indexTo);\n\n    //! Sets the background colour, including the alpha component, of selected\n    //! text to \\a col.\n    //!\n    //! \\sa resetSelectionBackgroundColor(), setSelectionForegroundColor()\n    virtual void setSelectionBackgroundColor(const QColor &col);\n\n    //! Sets the foreground colour of selected text to \\a col.\n    //!\n    //! \\sa resetSelectionForegroundColor(), setSelectionBackgroundColor()\n    virtual void setSelectionForegroundColor(const QColor &col);\n\n    //! If \\a indent is true then the tab key will indent a line rather than\n    //! insert a tab character.\n    //!\n    //! \\sa tabIndents(), backspaceUnindents(), setBackspaceUnindents()\n    virtual void setTabIndents(bool indent);\n\n    //! Sets the tab width to \\a width characters.\n    //!\n    //! \\sa tabWidth()\n    virtual void setTabWidth(int width);\n\n    //! Replaces all of the current text with \\a text.  Note that the\n    //! undo/redo history is cleared by this function.\n    //!\n    //! \\sa text()\n    virtual void setText(const QString &text);\n\n    //! Sets the current text encoding.  If \\a cp is true then UTF8 is used,\n    //! otherwise Latin1 is used.\n    //!\n    //! \\sa isUtf8()\n    virtual void setUtf8(bool cp);\n\n    //! Sets the visibility of whitespace to mode \\a mode.  The default is that\n    //! whitespace is invisible.\n    //!\n    //! \\sa whitespaceVisibility()\n    virtual void setWhitespaceVisibility(WhitespaceVisibility mode);\n\n    //! Sets the line wrap mode to \\a mode.  The default is that lines are not\n    //! wrapped.\n    //!\n    //! \\sa wrapMode()\n    virtual void setWrapMode(WrapMode mode);\n\n    //! Undo the last change or sequence of changes.\n    //!\n    //! Scintilla has multiple level undo and redo.  It will continue to record\n    //! undoable actions until memory runs out.  Sequences of typing or\n    //! deleting are compressed into single actions to make it easier to undo\n    //! and redo at a sensible level of detail.  Sequences of actions can be\n    //! combined into actions that are undone as a unit.  These sequences occur\n    //! between calls to beginUndoAction() and endUndoAction().  These\n    //! sequences can be nested and only the top level sequences are undone as\n    //! units. \n    //!\n    //! \\sa beginUndoAction(), endUndoAction(), isUndoAvailable()\n    virtual void undo();\n\n    //! Decreases the indentation of line \\a line by an indentation width.\n    //!\n    //! \\sa indent()\n    virtual void unindent(int line);\n\n    //! Zooms in on the text by by making the base font size \\a range points\n    //! larger and recalculating all font sizes.\n    //!\n    //! \\sa zoomOut(), zoomTo()\n    virtual void zoomIn(int range);\n\n    //! \\overload\n    //!\n    //! Zooms in on the text by by making the base font size one point larger\n    //! and recalculating all font sizes.\n    virtual void zoomIn();\n\n    //! Zooms out on the text by by making the base font size \\a range points\n    //! smaller and recalculating all font sizes.\n    //!\n    //! \\sa zoomIn(), zoomTo()\n    virtual void zoomOut(int range);\n\n    //! \\overload\n    //!\n    //! Zooms out on the text by by making the base font size one point larger\n    //! and recalculating all font sizes.\n    virtual void zoomOut();\n\n    //! Zooms the text by making the base font size \\a size points and\n    //! recalculating all font sizes.\n    //!\n    //! \\sa zoomIn(), zoomOut()\n    virtual void zoomTo(int size);\n\nsignals:\n    //! This signal is emitted whenever the cursor position changes.  \\a line\n    //! contains the line number and \\a index contains the character index\n    //! within the line.\n    void cursorPositionChanged(int line, int index);\n\n    //! This signal is emitted whenever text is selected or de-selected.\n    //! \\a yes is true if text has been selected and false if text has been\n    //! deselected.  If \\a yes is true then copy() can be used to copy the\n    //! selection to the clipboard.  If \\a yes is false then copy() does\n    //! nothing. \n    //!\n    //! \\sa copy(), selectionChanged()\n    void copyAvailable(bool yes);\n\n    //! This signal is emitted whenever the user clicks on an indicator.  \\a\n    //! line is the number of the line where the user clicked.  \\a index is the\n    //! character index within the line.  \\a state is the state of the modifier\n    //! keys (Qt::ShiftModifier, Qt::ControlModifier, Qt::AltModifer and\n    //! Qt::MetaModifier) when the user clicked.\n    //!\n    //! \\sa indicatorReleased()\n    void indicatorClicked(int line, int index, Qt::KeyboardModifiers state);\n\n    //! This signal is emitted whenever the user releases the mouse on an\n    //! indicator.  \\a line is the number of the line where the user clicked.\n    //! \\a index is the character index within the line.  \\a state is the state\n    //! of the modifier keys (Qt::ShiftModifier, Qt::ControlModifier,\n    //! Qt::AltModifer and Qt::MetaModifier) when the user released the mouse.\n    //!\n    //! \\sa indicatorClicked()\n    void indicatorReleased(int line, int index, Qt::KeyboardModifiers state);\n\n    //! This signal is emitted whenever the number of lines of text changes.\n    void linesChanged();\n\n    //! This signal is emitted whenever the user clicks on a sensitive margin.\n    //! \\a margin is the margin.  \\a line is the number of the line where the\n    //! user clicked.  \\a state is the state of the modifier keys\n    //! (Qt::ShiftModifier, Qt::ControlModifier, Qt::AltModifer and\n    //! Qt::MetaModifier) when the user clicked.\n    //!\n    //! \\sa marginSensitivity(), setMarginSensitivity()\n    void marginClicked(int margin, int line, Qt::KeyboardModifiers state);\n\n    //! This signal is emitted whenever the user right-clicks on a sensitive\n    //! margin.  \\a margin is the margin.  \\a line is the number of the line\n    //! where the user clicked.  \\a state is the state of the modifier keys\n    //! (Qt::ShiftModifier, Qt::ControlModifier, Qt::AltModifer and\n    //! Qt::MetaModifier) when the user clicked.\n    //!\n    //! \\sa marginSensitivity(), setMarginSensitivity()\n    void marginRightClicked(int margin, int line, Qt::KeyboardModifiers state);\n\n    //! This signal is emitted whenever the user attempts to modify read-only\n    //! text.\n    //!\n    //! \\sa isReadOnly(), setReadOnly()\n    void modificationAttempted();\n\n    //! This signal is emitted whenever the modification state of the text\n    //! changes.  \\a m is true if the text has been modified.\n    //!\n    //! \\sa isModified(), setModified()\n    void modificationChanged(bool m);\n\n    //! This signal is emitted whenever the selection changes.\n    //!\n    //! \\sa copyAvailable()\n    void selectionChanged();\n\n    //! This signal is emitted whenever the text in the text edit changes.\n    void textChanged();\n\n    //! This signal is emitted when an item in a user defined list is activated\n    //! (selected).  \\a id is the list identifier.  \\a string is the text of\n    //! the item.\n    //!\n    //! \\sa showUserList()\n    void userListActivated(int id, const QString &string);\n\nprotected:\n    //! \\reimp\n    virtual bool event(QEvent *e);\n\n    //! \\reimp\n    virtual void changeEvent(QEvent *e);\n\n    //! \\reimp\n    virtual void contextMenuEvent(QContextMenuEvent *e);\n\nprivate slots:\n    void handleCallTipClick(int dir);\n    void handleCharAdded(int charadded);\n    void handleIndicatorClick(int pos, int modifiers);\n    void handleIndicatorRelease(int pos, int modifiers);\n    void handleMarginClick(int pos, int margin, int modifiers);\n    void handleMarginRightClick(int pos, int margin, int modifiers);\n    void handleModified(int pos, int mtype, const char *text, int len,\n            int added, int line, int foldNow, int foldPrev, int token,\n            int annotationLinesAdded);\n    void handlePropertyChange(const char *prop, const char *val);\n    void handleSavePointReached();\n    void handleSavePointLeft();\n    void handleSelectionChanged(bool yes);\n    void handleAutoCompletionSelection();\n    void handleUserListSelection(const char *text, int id);\n\n    void handleStyleColorChange(const QColor &c, int style);\n    void handleStyleEolFillChange(bool eolfill, int style);\n    void handleStyleFontChange(const QFont &f, int style);\n    void handleStylePaperChange(const QColor &c, int style);\n\n    void handleUpdateUI(int updated);\n\n    void delete_selection();\n\nprivate:\n    void detachLexer();\n\n    enum IndentState {\n        isNone,\n        isKeywordStart,\n        isBlockStart,\n        isBlockEnd\n    };\n\n    void maintainIndentation(char ch, long pos);\n    void autoIndentation(char ch, long pos);\n    void autoIndentLine(long pos, int line, int indent);\n    int blockIndent(int line);\n    IndentState getIndentState(int line);\n    bool rangeIsWhitespace(long spos, long epos);\n    int findStyledWord(const char *text, int style, const char *words);\n\n    void checkMarker(int &markerNumber);\n    void checkIndicator(int &indicatorNumber);\n    static void allocateId(int &id, unsigned &allocated, int min, int max);\n    int currentIndent() const;\n    int indentWidth() const;\n    bool doFind();\n    int simpleFind();\n    void foldClick(int lineClick, int bstate);\n    void foldChanged(int line, int levelNow, int levelPrev);\n    void foldExpand(int &line, bool doExpand, bool force = false,\n            int visLevels = 0, int level = -1);\n    void setFoldMarker(int marknr, int mark = SC_MARK_EMPTY);\n    void setLexerStyle(int style);\n    void setStylesFont(const QFont &f, int style);\n    void setEnabledColors(int style, QColor &fore, QColor &back);\n\n    void braceMatch();\n    bool findMatchingBrace(long &brace, long &other, BraceMatch mode);\n    long checkBrace(long pos, int brace_style, bool &colonMode);\n    void gotoMatchingBrace(bool select);\n\n    void startAutoCompletion(AutoCompletionSource acs, bool checkThresh,\n            bool choose_single);\n\n    int adjustedCallTipPosition(int ctshift) const;\n    bool getSeparator(int &pos) const;\n    QString getWord(int &pos) const;\n    char getCharacter(int &pos) const;\n    bool isStartChar(char ch) const;\n\n    bool ensureRW();\n    void insertAtPos(const QString &text, int pos);\n    static int mapModifiers(int modifiers);\n\n    QString wordAtPosition(int position) const;\n\n    ScintillaBytes styleText(const QList<QsciStyledText> &styled_text,\n            char **styles, int style_offset = 0);\n\n    struct FindState\n    {\n        enum Status\n        {\n            Finding,\n            FindingInSelection,\n            Idle\n        };\n\n        FindState() : status(Idle) {}\n\n        Status status;\n        QString expr;\n        bool wrap;\n        bool forward;\n        int flags;\n        long startpos, startpos_orig;\n        long endpos, endpos_orig;\n        bool show;\n    };\n\n    FindState findState;\n\n    unsigned allocatedMarkers;\n    unsigned allocatedIndicators;\n    int oldPos;\n    int ctPos;\n    bool selText;\n    FoldStyle fold;\n    int foldmargin;\n    bool autoInd;\n    BraceMatch braceMode;\n    AutoCompletionSource acSource;\n    int acThresh;\n    QStringList wseps;\n    const char *wchars;\n    CallTipsPosition call_tips_position;\n    CallTipsStyle call_tips_style;\n    int maxCallTips;\n    QStringList ct_entries;\n    int ct_cursor;\n    QList<int> ct_shifts;\n    AutoCompletionUseSingle use_single;\n    QPointer<QsciLexer> lex;\n    QsciCommandSet *stdCmds;\n    QsciDocument doc;\n    QColor nl_text_colour;\n    QColor nl_paper_colour;\n    QByteArray explicit_fillups;\n    bool fillups_enabled;\n\n    // The following allow QsciListBoxQt to distinguish between an\n    // auto-completion list and a user list, and to return the full selection\n    // of an auto-completion list.\n    friend class QsciListBoxQt;\n\n    QString acSelection;\n    bool isAutoCompletionList() const;\n\n    void set_shortcut(QAction *action, QsciCommand::Command cmd_id) const;\n\n    QsciScintilla(const QsciScintilla &);\n    QsciScintilla &operator=(const QsciScintilla &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qsciscintillabase.h",
    "content": "// This class defines the \"official\" low-level API.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCISCINTILLABASE_H\n#define QSCISCINTILLABASE_H\n\n#include <qglobal.h>\n\n#include <QAbstractScrollArea>\n#include <QByteArray>\n#include <QPoint>\n#include <QTimer>\n\n#include <Qsci/qsciglobal.h>\n\n\nQT_BEGIN_NAMESPACE\nclass QColor;\nclass QImage;\nclass QMimeData;\nclass QPainter;\nclass QPixmap;\nQT_END_NAMESPACE\n\nclass QsciScintillaQt;\n\n\n//! \\brief The QsciScintillaBase class implements the Scintilla editor widget\n//! and its low-level API.\n//!\n//! Scintilla (http://www.scintilla.org) is a powerful C++ editor class that\n//! supports many features including syntax styling, error indicators, code\n//! completion and call tips. It is particularly useful as a programmer's\n//! editor.\n//!\n//! QsciScintillaBase is a port to Qt of Scintilla. It implements the standard\n//! Scintilla API which consists of a number of messages each taking up to\n//! two arguments.\n//!\n//! See QsciScintilla for the implementation of a higher level API that is more\n//! consistent with the rest of the Qt toolkit.\nclass QSCINTILLA_EXPORT QsciScintillaBase : public QAbstractScrollArea\n{\n    Q_OBJECT\n\npublic:\n    //! The low-level Scintilla API is implemented as a set of messages each of\n    //! which takes up to two parameters (\\a wParam and \\a lParam) and\n    //! optionally return a value. This enum defines all the possible messages.\n    enum\n    {\n        //!\n        SCI_START = 2000,\n\n        //!\n        SCI_OPTIONAL_START = 3000,\n\n        //!\n        SCI_LEXER_START = 4000,\n\n        //! This message appends some text to the end of the document.\n        //! \\a wParam is the length of the text.\n        //! \\a lParam is the text to be appended.\n        SCI_ADDTEXT = 2001,\n\n        //!\n        SCI_ADDSTYLEDTEXT = 2002,\n\n        //!\n        SCI_INSERTTEXT = 2003,\n\n        //!\n        SCI_CLEARALL = 2004,\n\n        //!\n        SCI_CLEARDOCUMENTSTYLE = 2005,\n\n        //!\n        SCI_GETLENGTH = 2006,\n\n        //!\n        SCI_GETCHARAT = 2007,\n\n        //! This message returns the current position.\n        //! \n        //! \\sa SCI_SETCURRENTPOS\n        SCI_GETCURRENTPOS = 2008,\n\n        //! This message returns the anchor.\n        //! \n        //! \\sa SCI_SETANCHOR\n        SCI_GETANCHOR = 2009,\n\n        //!\n        SCI_GETSTYLEAT = 2010,\n\n        //!\n        SCI_REDO = 2011,\n\n        //!\n        SCI_SETUNDOCOLLECTION = 2012,\n\n        //!\n        SCI_SELECTALL = 2013,\n\n        //! This message marks the current state of the text as the the save\n        //! point. This is usually done when the text is saved or loaded.\n        //! \n        //! \\sa SCN_SAVEPOINTREACHED(), SCN_SAVEPOINTLEFT()\n        SCI_SETSAVEPOINT = 2014,\n\n        //!\n        SCI_GETSTYLEDTEXT = 2015,\n\n        //!\n        SCI_CANREDO = 2016,\n\n        //! This message returns the line that contains a particular instance\n        //! of a marker.\n        //! \\a wParam is the handle of the marker.\n        //!\n        //! \\sa SCI_MARKERADD\n        SCI_MARKERLINEFROMHANDLE = 2017,\n\n        //! This message removes a particular instance of a marker.\n        //! \\a wParam is the handle of the marker.\n        //!\n        //! \\sa SCI_MARKERADD\n        SCI_MARKERDELETEHANDLE = 2018,\n\n        //!\n        SCI_GETUNDOCOLLECTION = 2019,\n\n        //!\n        SCI_GETVIEWWS = 2020,\n\n        //!\n        SCI_SETVIEWWS = 2021,\n\n        //!\n        SCI_POSITIONFROMPOINT = 2022,\n\n        //!\n        SCI_POSITIONFROMPOINTCLOSE = 2023,\n\n        //!\n        SCI_GOTOLINE = 2024,\n\n        //! This message clears the current selection and sets the current\n        //! position.\n        //! \\a wParam is the new current position.\n        //! \n        //! \\sa SCI_SETCURRENTPOS\n        SCI_GOTOPOS = 2025,\n\n        //! This message sets the anchor.\n        //! \\a wParam is the new anchor.\n        //! \n        //! \\sa SCI_GETANCHOR\n        SCI_SETANCHOR = 2026,\n\n        //!\n        SCI_GETCURLINE = 2027,\n\n        //! This message returns the character position of the start of the\n        //! text that needs to be syntax styled.\n        //! \n        //! \\sa SCN_STYLENEEDED()\n        SCI_GETENDSTYLED = 2028,\n\n        //!\n        SCI_CONVERTEOLS = 2029,\n\n        //!\n        SCI_GETEOLMODE = 2030,\n\n        //!\n        SCI_SETEOLMODE = 2031,\n\n        //!\n        SCI_STARTSTYLING = 2032,\n\n        //!\n        SCI_SETSTYLING = 2033,\n\n        //!\n        SCI_GETBUFFEREDDRAW = 2034,\n\n        //!\n        SCI_SETBUFFEREDDRAW = 2035,\n\n        //!\n        SCI_SETTABWIDTH = 2036,\n\n        //!\n        SCI_GETTABWIDTH = 2121,\n\n        //!\n        SCI_SETCODEPAGE = 2037,\n\n        //! This message sets the symbol used to draw one of 32 markers.  Some\n        //! markers have pre-defined uses, see the SC_MARKNUM_* values.\n        //! \\a wParam is the number of the marker.\n        //! \\a lParam is the marker symbol and is one of the SC_MARK_* values.\n        //!\n        //! \\sa SCI_MARKERADD, SCI_MARKERDEFINEPIXMAP,\n        //! SCI_MARKERDEFINERGBAIMAGE\n        SCI_MARKERDEFINE = 2040,\n\n        //! This message sets the foreground colour used to draw a marker.  A\n        //! colour is represented as a 24 bit value.  The 8 least significant\n        //! bits correspond to red, the middle 8 bits correspond to green, and\n        //! the 8 most significant bits correspond to blue.  The default value\n        //! is 0x000000.\n        //! \\a wParam is the number of the marker.\n        //! \\a lParam is the colour.\n        //!\n        //! \\sa SCI_MARKERSETBACK\n        SCI_MARKERSETFORE = 2041,\n\n        //! This message sets the background colour used to draw a marker.  A\n        //! colour is represented as a 24 bit value.  The 8 least significant\n        //! bits correspond to red, the middle 8 bits correspond to green, and\n        //! the 8 most significant bits correspond to blue.  The default value\n        //! is 0xffffff.\n        //! \\a wParam is the number of the marker.\n        //! \\a lParam is the colour.\n        //!\n        //! \\sa SCI_MARKERSETFORE\n        SCI_MARKERSETBACK = 2042,\n\n        //! This message adds a marker to a line.  A handle for the marker is\n        //! returned which can be used to track the marker's position.\n        //! \\a wParam is the line number.\n        //! \\a lParam is the number of the marker.\n        //!\n        //! \\sa SCI_MARKERDELETE, SCI_MARKERDELETEALL,\n        //! SCI_MARKERDELETEHANDLE\n        SCI_MARKERADD = 2043,\n\n        //! This message deletes a marker from a line.\n        //! \\a wParam is the line number.\n        //! \\a lParam is the number of the marker.\n        //!\n        //! \\sa SCI_MARKERADD, SCI_MARKERDELETEALL\n        SCI_MARKERDELETE = 2044,\n\n        //! This message deletes all occurences of a marker.\n        //! \\a wParam is the number of the marker.  If \\a wParam is -1 then all\n        //! markers are removed.\n        //!\n        //! \\sa SCI_MARKERADD, SCI_MARKERDELETE\n        SCI_MARKERDELETEALL = 2045,\n\n        //! This message returns the 32 bit mask of markers at a line.\n        //! \\a wParam is the line number.\n        SCI_MARKERGET = 2046,\n\n        //! This message looks for the next line to contain at least one marker\n        //! contained in a 32 bit mask of markers and returns the line number.\n        //! \\a wParam is the line number to start the search from.\n        //! \\a lParam is the mask of markers to search for.\n        //!\n        //! \\sa SCI_MARKERPREVIOUS\n        SCI_MARKERNEXT = 2047,\n\n        //! This message looks for the previous line to contain at least one\n        //! marker contained in a 32 bit mask of markers and returns the line\n        //! number.\n        //! \\a wParam is the line number to start the search from.\n        //! \\a lParam is the mask of markers to search for.\n        //!\n        //! \\sa SCI_MARKERNEXT\n        SCI_MARKERPREVIOUS = 2048,\n\n        //! This message sets the symbol used to draw one of the 32 markers to\n        //! a pixmap.  Pixmaps use the SC_MARK_PIXMAP marker symbol.\n        //! \\a wParam is the number of the marker.\n        //! \\a lParam is a pointer to a QPixmap instance.  Note that in other\n        //! ports of Scintilla this is a pointer to either raw or textual XPM\n        //! image data.\n        //!\n        //! \\sa SCI_MARKERDEFINE, SCI_MARKERDEFINERGBAIMAGE\n        SCI_MARKERDEFINEPIXMAP = 2049,\n\n        //! This message sets what can be displayed in a margin.\n        //! \\a wParam is the number of the margin.\n        //! \\a lParam is the logical or of the SC_MARGIN_* values.\n        //!\n        //! \\sa SCI_GETMARGINTYPEN\n        SCI_SETMARGINTYPEN = 2240,\n\n        //! This message returns what can be displayed in a margin.\n        //! \\a wParam is the number of the margin.\n        //!\n        //! \\sa SCI_SETMARGINTYPEN\n        SCI_GETMARGINTYPEN = 2241,\n\n        //! This message sets the width of a margin in pixels.\n        //! \\a wParam is the number of the margin.\n        //! \\a lParam is the new margin width.\n        //!\n        //! \\sa SCI_GETMARGINWIDTHN\n        SCI_SETMARGINWIDTHN = 2242,\n\n        //! This message returns the width of a margin in pixels.\n        //! \\a wParam is the number of the margin.\n        //!\n        //! \\sa SCI_SETMARGINWIDTHN\n        SCI_GETMARGINWIDTHN = 2243,\n\n        //! This message sets the mask of a margin.  The mask is a 32 value\n        //! with one bit for each possible marker.  If a bit is set then the\n        //! corresponding marker is displayed.  By default, all markers are\n        //! displayed.\n        //! \\a wParam is the number of the margin.\n        //! \\a lParam is the new margin mask.\n        //!\n        //! \\sa SCI_GETMARGINMASKN, SCI_MARKERDEFINE\n        SCI_SETMARGINMASKN = 2244,\n\n        //! This message returns the mask of a margin.\n        //! \\a wParam is the number of the margin.\n        //!\n        //! \\sa SCI_SETMARGINMASKN\n        SCI_GETMARGINMASKN = 2245,\n\n        //! This message sets the sensitivity of a margin to mouse clicks.\n        //! \\a wParam is the number of the margin.\n        //! \\a lParam is non-zero to make the margin sensitive to mouse clicks.\n        //! When the mouse is clicked the SCN_MARGINCLICK() signal is emitted.\n        //!\n        //! \\sa SCI_GETMARGINSENSITIVEN, SCN_MARGINCLICK()\n        SCI_SETMARGINSENSITIVEN = 2246,\n\n        //! This message returns the sensitivity of a margin to mouse clicks.\n        //! \\a wParam is the number of the margin.\n        //!\n        //! \\sa SCI_SETMARGINSENSITIVEN, SCN_MARGINCLICK()\n        SCI_GETMARGINSENSITIVEN = 2247,\n\n        //! This message sets the cursor shape displayed over a margin.\n        //! \\a wParam is the number of the margin.\n        //! \\a lParam is the cursor shape, normally either SC_CURSORARROW or\n        //! SC_CURSORREVERSEARROW.  Note that, currently, QScintilla implements\n        //! both of these as Qt::ArrowCursor.\n        //!\n        //! \\sa SCI_GETMARGINCURSORN\n        SCI_SETMARGINCURSORN = 2248,\n\n        //! This message returns the cursor shape displayed over a margin.\n        //! \\a wParam is the number of the margin.\n        //!\n        //! \\sa SCI_SETMARGINCURSORN\n        SCI_GETMARGINCURSORN = 2249,\n\n        //!\n        SCI_STYLECLEARALL = 2050,\n\n        //!\n        SCI_STYLESETFORE = 2051,\n\n        //!\n        SCI_STYLESETBACK = 2052,\n\n        //!\n        SCI_STYLESETBOLD = 2053,\n\n        //!\n        SCI_STYLESETITALIC = 2054,\n\n        //!\n        SCI_STYLESETSIZE = 2055,\n\n        //!\n        SCI_STYLESETFONT = 2056,\n\n        //!\n        SCI_STYLESETEOLFILLED = 2057,\n\n        //!\n        SCI_STYLERESETDEFAULT = 2058,\n\n        //!\n        SCI_STYLESETUNDERLINE = 2059,\n\n        //!\n        SCI_STYLESETCASE = 2060,\n\n        //!\n        SCI_STYLESETSIZEFRACTIONAL = 2061,\n\n        //!\n        SCI_STYLEGETSIZEFRACTIONAL = 2062,\n\n        //!\n        SCI_STYLESETWEIGHT = 2063,\n\n        //!\n        SCI_STYLEGETWEIGHT = 2064,\n\n        //!\n        SCI_STYLESETCHARACTERSET = 2066,\n\n        //!\n        SCI_SETSELFORE = 2067,\n\n        //!\n        SCI_SETSELBACK = 2068,\n\n        //!\n        SCI_SETCARETFORE = 2069,\n\n        //!\n        SCI_ASSIGNCMDKEY = 2070,\n\n        //!\n        SCI_CLEARCMDKEY = 2071,\n\n        //!\n        SCI_CLEARALLCMDKEYS = 2072,\n\n        //!\n        SCI_SETSTYLINGEX = 2073,\n\n        //!\n        SCI_STYLESETVISIBLE = 2074,\n\n        //!\n        SCI_GETCARETPERIOD = 2075,\n\n        //!\n        SCI_SETCARETPERIOD = 2076,\n\n        //!\n        SCI_SETWORDCHARS = 2077,\n\n        //!\n        SCI_BEGINUNDOACTION = 2078,\n\n        //!\n        SCI_ENDUNDOACTION = 2079,\n\n        //!\n        SCI_INDICSETSTYLE = 2080,\n\n        //!\n        SCI_INDICGETSTYLE = 2081,\n\n        //!\n        SCI_INDICSETFORE = 2082,\n\n        //!\n        SCI_INDICGETFORE = 2083,\n\n        //!\n        SCI_SETWHITESPACEFORE = 2084,\n\n        //!\n        SCI_SETWHITESPACEBACK = 2085,\n\n        //!\n        SCI_SETWHITESPACESIZE = 2086,\n\n        //!\n        SCI_GETWHITESPACESIZE = 2087,\n\n        //!\n        SCI_SETSTYLEBITS = 2090,\n\n        //!\n        SCI_GETSTYLEBITS = 2091,\n\n        //!\n        SCI_SETLINESTATE = 2092,\n\n        //!\n        SCI_GETLINESTATE = 2093,\n\n        //!\n        SCI_GETMAXLINESTATE = 2094,\n\n        //!\n        SCI_GETCARETLINEVISIBLE = 2095,\n\n        //!\n        SCI_SETCARETLINEVISIBLE = 2096,\n\n        //!\n        SCI_GETCARETLINEBACK = 2097,\n\n        //!\n        SCI_SETCARETLINEBACK = 2098,\n\n        //!\n        SCI_STYLESETCHANGEABLE = 2099,\n\n        //!\n        SCI_AUTOCSHOW = 2100,\n\n        //!\n        SCI_AUTOCCANCEL = 2101,\n\n        //!\n        SCI_AUTOCACTIVE = 2102,\n\n        //!\n        SCI_AUTOCPOSSTART = 2103,\n\n        //!\n        SCI_AUTOCCOMPLETE = 2104,\n\n        //!\n        SCI_AUTOCSTOPS = 2105,\n\n        //!\n        SCI_AUTOCSETSEPARATOR = 2106,\n\n        //!\n        SCI_AUTOCGETSEPARATOR = 2107,\n\n        //!\n        SCI_AUTOCSELECT = 2108,\n\n        //!\n        SCI_AUTOCSETCANCELATSTART = 2110,\n\n        //!\n        SCI_AUTOCGETCANCELATSTART = 2111,\n\n        //!\n        SCI_AUTOCSETFILLUPS = 2112,\n\n        //!\n        SCI_AUTOCSETCHOOSESINGLE = 2113,\n\n        //!\n        SCI_AUTOCGETCHOOSESINGLE = 2114,\n\n        //!\n        SCI_AUTOCSETIGNORECASE = 2115,\n\n        //!\n        SCI_AUTOCGETIGNORECASE = 2116,\n\n        //!\n        SCI_USERLISTSHOW = 2117,\n\n        //!\n        SCI_AUTOCSETAUTOHIDE = 2118,\n\n        //!\n        SCI_AUTOCGETAUTOHIDE = 2119,\n\n        //!\n        SCI_AUTOCSETDROPRESTOFWORD = 2270,\n\n        //!\n        SCI_AUTOCGETDROPRESTOFWORD = 2271,\n\n        //!\n        SCI_SETINDENT = 2122,\n\n        //!\n        SCI_GETINDENT = 2123,\n\n        //!\n        SCI_SETUSETABS = 2124,\n\n        //!\n        SCI_GETUSETABS = 2125,\n\n        //!\n        SCI_SETLINEINDENTATION = 2126,\n\n        //!\n        SCI_GETLINEINDENTATION = 2127,\n\n        //!\n        SCI_GETLINEINDENTPOSITION = 2128,\n\n        //!\n        SCI_GETCOLUMN = 2129,\n\n        //!\n        SCI_SETHSCROLLBAR = 2130,\n\n        //!\n        SCI_GETHSCROLLBAR = 2131,\n\n        //!\n        SCI_SETINDENTATIONGUIDES = 2132,\n\n        //!\n        SCI_GETINDENTATIONGUIDES = 2133,\n\n        //!\n        SCI_SETHIGHLIGHTGUIDE = 2134,\n\n        //!\n        SCI_GETHIGHLIGHTGUIDE = 2135,\n\n        //!\n        SCI_GETLINEENDPOSITION = 2136,\n\n        //!\n        SCI_GETCODEPAGE = 2137,\n\n        //!\n        SCI_GETCARETFORE = 2138,\n\n        //! This message returns a non-zero value if the document is read-only.\n        //! \n        //! \\sa SCI_SETREADONLY\n        SCI_GETREADONLY = 2140,\n\n        //! This message sets the current position.\n        //! \\a wParam is the new current position.\n        //! \n        //! \\sa SCI_GETCURRENTPOS\n        SCI_SETCURRENTPOS = 2141,\n\n        //!\n        SCI_SETSELECTIONSTART = 2142,\n\n        //!\n        SCI_GETSELECTIONSTART = 2143,\n\n        //!\n        SCI_SETSELECTIONEND = 2144,\n\n        //!\n        SCI_GETSELECTIONEND = 2145,\n\n        //!\n        SCI_SETPRINTMAGNIFICATION = 2146,\n\n        //!\n        SCI_GETPRINTMAGNIFICATION = 2147,\n\n        //!\n        SCI_SETPRINTCOLOURMODE = 2148,\n\n        //!\n        SCI_GETPRINTCOLOURMODE = 2149,\n\n        //!\n        SCI_FINDTEXT = 2150,\n\n        //!\n        SCI_FORMATRANGE = 2151,\n\n        //!\n        SCI_GETFIRSTVISIBLELINE = 2152,\n\n        //!\n        SCI_GETLINE = 2153,\n\n        //!\n        SCI_GETLINECOUNT = 2154,\n\n        //!\n        SCI_SETMARGINLEFT = 2155,\n\n        //!\n        SCI_GETMARGINLEFT = 2156,\n\n        //!\n        SCI_SETMARGINRIGHT = 2157,\n\n        //!\n        SCI_GETMARGINRIGHT = 2158,\n\n        //! This message returns a non-zero value if the document has been\n        //! modified.\n        SCI_GETMODIFY = 2159,\n\n        //!\n        SCI_SETSEL = 2160,\n\n        //!\n        SCI_GETSELTEXT = 2161,\n\n        //!\n        SCI_GETTEXTRANGE = 2162,\n\n        //!\n        SCI_HIDESELECTION = 2163,\n\n        //!\n        SCI_POINTXFROMPOSITION = 2164,\n\n        //!\n        SCI_POINTYFROMPOSITION = 2165,\n\n        //!\n        SCI_LINEFROMPOSITION = 2166,\n\n        //!\n        SCI_POSITIONFROMLINE = 2167,\n\n        //!\n        SCI_LINESCROLL = 2168,\n\n        //!\n        SCI_SCROLLCARET = 2169,\n\n        //!\n        SCI_REPLACESEL = 2170,\n\n        //! This message sets the read-only state of the document.\n        //! \\a wParam is the new read-only state of the document.\n        //! \n        //! \\sa SCI_GETREADONLY\n        SCI_SETREADONLY = 2171,\n\n        //!\n        SCI_NULL = 2172,\n\n        //!\n        SCI_CANPASTE = 2173,\n\n        //!\n        SCI_CANUNDO = 2174,\n\n        //! This message empties the undo buffer.\n        SCI_EMPTYUNDOBUFFER = 2175,\n\n        //!\n        SCI_UNDO = 2176,\n\n        //!\n        SCI_CUT = 2177,\n\n        //!\n        SCI_COPY = 2178,\n\n        //!\n        SCI_PASTE = 2179,\n\n        //!\n        SCI_CLEAR = 2180,\n\n        //! This message sets the text of the document.\n        //! \\a wParam is unused.\n        //! \\a lParam is the new text of the document.\n        //! \n        //! \\sa SCI_GETTEXT\n        SCI_SETTEXT = 2181,\n\n        //! This message gets the text of the document.\n        //! \\a wParam is size of the buffer that the text is copied to.\n        //! \\a lParam is the address of the buffer that the text is copied to.\n        //! \n        //! \\sa SCI_SETTEXT\n        SCI_GETTEXT = 2182,\n\n        //! This message returns the length of the document.\n        SCI_GETTEXTLENGTH = 2183,\n\n        //!\n        SCI_GETDIRECTFUNCTION = 2184,\n\n        //!\n        SCI_GETDIRECTPOINTER = 2185,\n\n        //!\n        SCI_SETOVERTYPE = 2186,\n\n        //!\n        SCI_GETOVERTYPE = 2187,\n\n        //!\n        SCI_SETCARETWIDTH = 2188,\n\n        //!\n        SCI_GETCARETWIDTH = 2189,\n\n        //!\n        SCI_SETTARGETSTART = 2190,\n\n        //!\n        SCI_GETTARGETSTART = 2191,\n\n        //!\n        SCI_SETTARGETEND = 2192,\n\n        //!\n        SCI_GETTARGETEND = 2193,\n\n        //!\n        SCI_REPLACETARGET = 2194,\n\n        //!\n        SCI_REPLACETARGETRE = 2195,\n\n        //!\n        SCI_SEARCHINTARGET = 2197,\n\n        //!\n        SCI_SETSEARCHFLAGS = 2198,\n\n        //!\n        SCI_GETSEARCHFLAGS = 2199,\n\n        //!\n        SCI_CALLTIPSHOW = 2200,\n\n        //!\n        SCI_CALLTIPCANCEL = 2201,\n\n        //!\n        SCI_CALLTIPACTIVE = 2202,\n\n        //!\n        SCI_CALLTIPPOSSTART = 2203,\n\n        //!\n        SCI_CALLTIPSETHLT = 2204,\n\n        //!\n        SCI_CALLTIPSETBACK = 2205,\n\n        //!\n        SCI_CALLTIPSETFORE = 2206,\n\n        //!\n        SCI_CALLTIPSETFOREHLT = 2207,\n\n        //!\n        SCI_AUTOCSETMAXWIDTH = 2208,\n\n        //!\n        SCI_AUTOCGETMAXWIDTH = 2209,\n\n        //! This message is not implemented.\n        SCI_AUTOCSETMAXHEIGHT = 2210,\n\n        //!\n        SCI_AUTOCGETMAXHEIGHT = 2211,\n\n        //!\n        SCI_CALLTIPUSESTYLE = 2212,\n\n        //!\n        SCI_CALLTIPSETPOSITION = 2213,\n\n        //!\n        SCI_CALLTIPSETPOSSTART = 2214,\n\n        //!\n        SCI_VISIBLEFROMDOCLINE = 2220,\n\n        //!\n        SCI_DOCLINEFROMVISIBLE = 2221,\n\n        //!\n        SCI_SETFOLDLEVEL = 2222,\n\n        //!\n        SCI_GETFOLDLEVEL = 2223,\n\n        //!\n        SCI_GETLASTCHILD = 2224,\n\n        //!\n        SCI_GETFOLDPARENT = 2225,\n\n        //!\n        SCI_SHOWLINES = 2226,\n\n        //!\n        SCI_HIDELINES = 2227,\n\n        //!\n        SCI_GETLINEVISIBLE = 2228,\n\n        //!\n        SCI_SETFOLDEXPANDED = 2229,\n\n        //!\n        SCI_GETFOLDEXPANDED = 2230,\n\n        //!\n        SCI_TOGGLEFOLD = 2231,\n\n        //!\n        SCI_ENSUREVISIBLE = 2232,\n\n        //!\n        SCI_SETFOLDFLAGS = 2233,\n\n        //!\n        SCI_ENSUREVISIBLEENFORCEPOLICY = 2234,\n\n        //!\n        SCI_WRAPCOUNT = 2235,\n\n        //!\n        SCI_GETALLLINESVISIBLE = 2236,\n\n        //!\n        SCI_FOLDLINE = 2237,\n\n        //!\n        SCI_FOLDCHILDREN = 2238,\n\n        //!\n        SCI_EXPANDCHILDREN = 2239,\n\n        //!\n        SCI_SETMARGINBACKN = 2250,\n\n        //!\n        SCI_GETMARGINBACKN = 2251,\n\n        //!\n        SCI_SETMARGINS = 2252,\n\n        //!\n        SCI_GETMARGINS = 2253,\n\n        //!\n        SCI_SETTABINDENTS = 2260,\n\n        //!\n        SCI_GETTABINDENTS = 2261,\n\n        //!\n        SCI_SETBACKSPACEUNINDENTS = 2262,\n\n        //!\n        SCI_GETBACKSPACEUNINDENTS = 2263,\n\n        //!\n        SCI_SETMOUSEDWELLTIME = 2264,\n\n        //!\n        SCI_GETMOUSEDWELLTIME = 2265,\n\n        //!\n        SCI_WORDSTARTPOSITION = 2266,\n\n        //!\n        SCI_WORDENDPOSITION = 2267,\n\n        //!\n        SCI_SETWRAPMODE = 2268,\n\n        //!\n        SCI_GETWRAPMODE = 2269,\n\n        //!\n        SCI_SETLAYOUTCACHE = 2272,\n\n        //!\n        SCI_GETLAYOUTCACHE = 2273,\n\n        //!\n        SCI_SETSCROLLWIDTH = 2274,\n\n        //!\n        SCI_GETSCROLLWIDTH = 2275,\n\n        //! This message returns the width of some text when rendered in a\n        //! particular style.\n        //! \\a wParam is the style number and is one of the STYLE_* values or\n        //! one of the styles defined by a lexer.\n        //! \\a lParam is a pointer to the text.\n        SCI_TEXTWIDTH = 2276,\n\n        //!\n        SCI_SETENDATLASTLINE = 2277,\n\n        //!\n        SCI_GETENDATLASTLINE = 2278,\n\n        //!\n        SCI_TEXTHEIGHT = 2279,\n\n        //!\n        SCI_SETVSCROLLBAR = 2280,\n\n        //!\n        SCI_GETVSCROLLBAR = 2281,\n\n        //!\n        SCI_APPENDTEXT = 2282,\n\n        //!\n        SCI_GETTWOPHASEDRAW = 2283,\n\n        //!\n        SCI_SETTWOPHASEDRAW = 2284,\n\n        //!\n        SCI_AUTOCGETTYPESEPARATOR = 2285,\n\n        //!\n        SCI_AUTOCSETTYPESEPARATOR = 2286,\n\n        //!\n        SCI_TARGETFROMSELECTION = 2287,\n\n        //!\n        SCI_LINESJOIN = 2288,\n\n        //!\n        SCI_LINESSPLIT = 2289,\n\n        //!\n        SCI_SETFOLDMARGINCOLOUR = 2290,\n\n        //!\n        SCI_SETFOLDMARGINHICOLOUR = 2291,\n\n        //!\n        SCI_MARKERSETBACKSELECTED = 2292,\n\n        //!\n        SCI_MARKERENABLEHIGHLIGHT = 2293,\n\n        //!\n        SCI_LINEDOWN = 2300,\n\n        //!\n        SCI_LINEDOWNEXTEND = 2301,\n\n        //!\n        SCI_LINEUP = 2302,\n\n        //!\n        SCI_LINEUPEXTEND = 2303,\n\n        //!\n        SCI_CHARLEFT = 2304,\n\n        //!\n        SCI_CHARLEFTEXTEND = 2305,\n\n        //!\n        SCI_CHARRIGHT = 2306,\n\n        //!\n        SCI_CHARRIGHTEXTEND = 2307,\n\n        //!\n        SCI_WORDLEFT = 2308,\n\n        //!\n        SCI_WORDLEFTEXTEND = 2309,\n\n        //!\n        SCI_WORDRIGHT = 2310,\n\n        //!\n        SCI_WORDRIGHTEXTEND = 2311,\n\n        //!\n        SCI_HOME = 2312,\n\n        //!\n        SCI_HOMEEXTEND = 2313,\n\n        //!\n        SCI_LINEEND = 2314,\n\n        //!\n        SCI_LINEENDEXTEND = 2315,\n\n        //!\n        SCI_DOCUMENTSTART = 2316,\n\n        //!\n        SCI_DOCUMENTSTARTEXTEND = 2317,\n\n        //!\n        SCI_DOCUMENTEND = 2318,\n\n        //!\n        SCI_DOCUMENTENDEXTEND = 2319,\n\n        //!\n        SCI_PAGEUP = 2320,\n\n        //!\n        SCI_PAGEUPEXTEND = 2321,\n\n        //!\n        SCI_PAGEDOWN = 2322,\n\n        //!\n        SCI_PAGEDOWNEXTEND = 2323,\n\n        //!\n        SCI_EDITTOGGLEOVERTYPE = 2324,\n\n        //!\n        SCI_CANCEL = 2325,\n\n        //!\n        SCI_DELETEBACK = 2326,\n\n        //!\n        SCI_TAB = 2327,\n\n        //!\n        SCI_BACKTAB = 2328,\n\n        //!\n        SCI_NEWLINE = 2329,\n\n        //!\n        SCI_FORMFEED = 2330,\n\n        //!\n        SCI_VCHOME = 2331,\n\n        //!\n        SCI_VCHOMEEXTEND = 2332,\n\n        //!\n        SCI_ZOOMIN = 2333,\n\n        //!\n        SCI_ZOOMOUT = 2334,\n\n        //!\n        SCI_DELWORDLEFT = 2335,\n\n        //!\n        SCI_DELWORDRIGHT = 2336,\n\n        //!\n        SCI_LINECUT = 2337,\n\n        //!\n        SCI_LINEDELETE = 2338,\n\n        //!\n        SCI_LINETRANSPOSE = 2339,\n\n        //!\n        SCI_LOWERCASE = 2340,\n\n        //!\n        SCI_UPPERCASE = 2341,\n\n        //!\n        SCI_LINESCROLLDOWN = 2342,\n\n        //!\n        SCI_LINESCROLLUP = 2343,\n\n        //!\n        SCI_DELETEBACKNOTLINE = 2344,\n\n        //!\n        SCI_HOMEDISPLAY = 2345,\n\n        //!\n        SCI_HOMEDISPLAYEXTEND = 2346,\n\n        //!\n        SCI_LINEENDDISPLAY = 2347,\n\n        //!\n        SCI_LINEENDDISPLAYEXTEND = 2348,\n\n        //!\n        SCI_MOVECARETINSIDEVIEW = 2401,\n\n        //!\n        SCI_LINELENGTH = 2350,\n\n        //!\n        SCI_BRACEHIGHLIGHT = 2351,\n\n        //!\n        SCI_BRACEBADLIGHT = 2352,\n\n        //!\n        SCI_BRACEMATCH = 2353,\n\n        //!\n        SCI_GETVIEWEOL = 2355,\n\n        //!\n        SCI_SETVIEWEOL = 2356,\n\n        //!\n        SCI_GETDOCPOINTER = 2357,\n\n        //!\n        SCI_SETDOCPOINTER = 2358,\n\n        //!\n        SCI_SETMODEVENTMASK = 2359,\n\n        //!\n        SCI_GETEDGECOLUMN = 2360,\n\n        //!\n        SCI_SETEDGECOLUMN = 2361,\n\n        //!\n        SCI_GETEDGEMODE = 2362,\n\n        //!\n        SCI_SETEDGEMODE = 2363,\n\n        //!\n        SCI_GETEDGECOLOUR = 2364,\n\n        //!\n        SCI_SETEDGECOLOUR = 2365,\n\n        //!\n        SCI_SEARCHANCHOR = 2366,\n\n        //!\n        SCI_SEARCHNEXT = 2367,\n\n        //!\n        SCI_SEARCHPREV = 2368,\n\n        //!\n        SCI_LINESONSCREEN = 2370,\n\n        //!\n        SCI_USEPOPUP = 2371,\n\n        //!\n        SCI_SELECTIONISRECTANGLE = 2372,\n\n        //!\n        SCI_SETZOOM = 2373,\n\n        //!\n        SCI_GETZOOM = 2374,\n\n        //!\n        SCI_CREATEDOCUMENT = 2375,\n\n        //!\n        SCI_ADDREFDOCUMENT = 2376,\n\n        //!\n        SCI_RELEASEDOCUMENT = 2377,\n\n        //!\n        SCI_GETMODEVENTMASK = 2378,\n\n        //!\n        SCI_SETFOCUS = 2380,\n\n        //!\n        SCI_GETFOCUS = 2381,\n\n        //!\n        SCI_SETSTATUS = 2382,\n\n        //!\n        SCI_GETSTATUS = 2383,\n\n        //!\n        SCI_SETMOUSEDOWNCAPTURES = 2384,\n\n        //!\n        SCI_GETMOUSEDOWNCAPTURES = 2385,\n\n        //!\n        SCI_SETCURSOR = 2386,\n\n        //!\n        SCI_GETCURSOR = 2387,\n\n        //!\n        SCI_SETCONTROLCHARSYMBOL = 2388,\n\n        //!\n        SCI_GETCONTROLCHARSYMBOL = 2389,\n\n        //!\n        SCI_WORDPARTLEFT = 2390,\n\n        //!\n        SCI_WORDPARTLEFTEXTEND = 2391,\n\n        //!\n        SCI_WORDPARTRIGHT = 2392,\n\n        //!\n        SCI_WORDPARTRIGHTEXTEND = 2393,\n\n        //!\n        SCI_SETVISIBLEPOLICY = 2394,\n\n        //!\n        SCI_DELLINELEFT = 2395,\n\n        //!\n        SCI_DELLINERIGHT = 2396,\n\n        //!\n        SCI_SETXOFFSET = 2397,\n\n        //!\n        SCI_GETXOFFSET = 2398,\n\n        //!\n        SCI_CHOOSECARETX = 2399,\n\n        //!\n        SCI_GRABFOCUS = 2400,\n\n        //!\n        SCI_SETXCARETPOLICY = 2402,\n\n        //!\n        SCI_SETYCARETPOLICY = 2403,\n\n        //!\n        SCI_LINEDUPLICATE = 2404,\n\n        //! This message takes a copy of an image and registers it so that it\n        //! can be refered to by a unique integer identifier.\n        //! \\a wParam is the image's identifier.\n        //! \\a lParam is a pointer to a QPixmap instance.  Note that in other\n        //! ports of Scintilla this is a pointer to either raw or textual XPM\n        //! image data.\n        //!\n        //! \\sa SCI_CLEARREGISTEREDIMAGES, SCI_REGISTERRGBAIMAGE\n        SCI_REGISTERIMAGE = 2405,\n\n        //!\n        SCI_SETPRINTWRAPMODE = 2406,\n\n        //!\n        SCI_GETPRINTWRAPMODE = 2407,\n\n        //! This message de-registers all currently registered images.\n        //!\n        //! \\sa SCI_REGISTERIMAGE, SCI_REGISTERRGBAIMAGE\n        SCI_CLEARREGISTEREDIMAGES = 2408,\n\n        //!\n        SCI_STYLESETHOTSPOT = 2409,\n\n        //!\n        SCI_SETHOTSPOTACTIVEFORE = 2410,\n\n        //!\n        SCI_SETHOTSPOTACTIVEBACK = 2411,\n\n        //!\n        SCI_SETHOTSPOTACTIVEUNDERLINE = 2412,\n\n        //!\n        SCI_PARADOWN = 2413,\n\n        //!\n        SCI_PARADOWNEXTEND = 2414,\n\n        //!\n        SCI_PARAUP = 2415,\n\n        //!\n        SCI_PARAUPEXTEND = 2416,\n\n        //!\n        SCI_POSITIONBEFORE = 2417,\n\n        //!\n        SCI_POSITIONAFTER = 2418,\n\n        //!\n        SCI_COPYRANGE = 2419,\n\n        //!\n        SCI_COPYTEXT = 2420,\n\n        //!\n        SCI_SETHOTSPOTSINGLELINE = 2421,\n\n        //!\n        SCI_SETSELECTIONMODE = 2422,\n\n        //!\n        SCI_GETSELECTIONMODE = 2423,\n\n        //!\n        SCI_GETLINESELSTARTPOSITION = 2424,\n\n        //!\n        SCI_GETLINESELENDPOSITION = 2425,\n\n        //!\n        SCI_LINEDOWNRECTEXTEND = 2426,\n\n        //!\n        SCI_LINEUPRECTEXTEND = 2427,\n\n        //!\n        SCI_CHARLEFTRECTEXTEND = 2428,\n\n        //!\n        SCI_CHARRIGHTRECTEXTEND = 2429,\n\n        //!\n        SCI_HOMERECTEXTEND = 2430,\n\n        //!\n        SCI_VCHOMERECTEXTEND = 2431,\n\n        //!\n        SCI_LINEENDRECTEXTEND = 2432,\n\n        //!\n        SCI_PAGEUPRECTEXTEND = 2433,\n\n        //!\n        SCI_PAGEDOWNRECTEXTEND = 2434,\n\n        //!\n        SCI_STUTTEREDPAGEUP = 2435,\n\n        //!\n        SCI_STUTTEREDPAGEUPEXTEND = 2436,\n\n        //!\n        SCI_STUTTEREDPAGEDOWN = 2437,\n\n        //!\n        SCI_STUTTEREDPAGEDOWNEXTEND = 2438,\n\n        //!\n        SCI_WORDLEFTEND = 2439,\n\n        //!\n        SCI_WORDLEFTENDEXTEND = 2440,\n\n        //!\n        SCI_WORDRIGHTEND = 2441,\n\n        //!\n        SCI_WORDRIGHTENDEXTEND = 2442,\n\n        //!\n        SCI_SETWHITESPACECHARS = 2443,\n\n        //!\n        SCI_SETCHARSDEFAULT = 2444,\n\n        //!\n        SCI_AUTOCGETCURRENT = 2445,\n\n        //!\n        SCI_ALLOCATE = 2446,\n\n        //!\n        SCI_HOMEWRAP = 2349,\n\n        //!\n        SCI_HOMEWRAPEXTEND = 2450,\n\n        //!\n        SCI_LINEENDWRAP = 2451,\n\n        //!\n        SCI_LINEENDWRAPEXTEND = 2452,\n\n        //!\n        SCI_VCHOMEWRAP = 2453,\n\n        //!\n        SCI_VCHOMEWRAPEXTEND = 2454,\n\n        //!\n        SCI_LINECOPY = 2455,\n\n        //!\n        SCI_FINDCOLUMN = 2456,\n\n        //!\n        SCI_GETCARETSTICKY = 2457,\n\n        //!\n        SCI_SETCARETSTICKY = 2458,\n\n        //!\n        SCI_TOGGLECARETSTICKY = 2459,\n\n        //!\n        SCI_SETWRAPVISUALFLAGS = 2460,\n\n        //!\n        SCI_GETWRAPVISUALFLAGS = 2461,\n\n        //!\n        SCI_SETWRAPVISUALFLAGSLOCATION = 2462,\n\n        //!\n        SCI_GETWRAPVISUALFLAGSLOCATION = 2463,\n\n        //!\n        SCI_SETWRAPSTARTINDENT = 2464,\n\n        //!\n        SCI_GETWRAPSTARTINDENT = 2465,\n\n        //!\n        SCI_MARKERADDSET = 2466,\n\n        //!\n        SCI_SETPASTECONVERTENDINGS = 2467,\n\n        //!\n        SCI_GETPASTECONVERTENDINGS = 2468,\n\n        //!\n        SCI_SELECTIONDUPLICATE = 2469,\n\n        //!\n        SCI_SETCARETLINEBACKALPHA = 2470,\n\n        //!\n        SCI_GETCARETLINEBACKALPHA = 2471,\n\n        //!\n        SCI_SETWRAPINDENTMODE = 2472,\n\n        //!\n        SCI_GETWRAPINDENTMODE = 2473,\n\n        //!\n        SCI_MARKERSETALPHA = 2476,\n\n        //!\n        SCI_GETSELALPHA = 2477,\n\n        //!\n        SCI_SETSELALPHA = 2478,\n\n        //!\n        SCI_GETSELEOLFILLED = 2479,\n\n        //!\n        SCI_SETSELEOLFILLED = 2480,\n\n        //!\n        SCI_STYLEGETFORE = 2481,\n\n        //!\n        SCI_STYLEGETBACK = 2482,\n\n        //!\n        SCI_STYLEGETBOLD = 2483,\n\n        //!\n        SCI_STYLEGETITALIC = 2484,\n\n        //!\n        SCI_STYLEGETSIZE = 2485,\n\n        //!\n        SCI_STYLEGETFONT = 2486,\n\n        //!\n        SCI_STYLEGETEOLFILLED = 2487,\n\n        //!\n        SCI_STYLEGETUNDERLINE = 2488,\n\n        //!\n        SCI_STYLEGETCASE = 2489,\n\n        //!\n        SCI_STYLEGETCHARACTERSET = 2490,\n\n        //!\n        SCI_STYLEGETVISIBLE = 2491,\n\n        //!\n        SCI_STYLEGETCHANGEABLE = 2492,\n\n        //!\n        SCI_STYLEGETHOTSPOT = 2493,\n\n        //!\n        SCI_GETHOTSPOTACTIVEFORE = 2494,\n\n        //!\n        SCI_GETHOTSPOTACTIVEBACK = 2495,\n\n        //!\n        SCI_GETHOTSPOTACTIVEUNDERLINE = 2496,\n\n        //!\n        SCI_GETHOTSPOTSINGLELINE = 2497,\n\n        //!\n        SCI_BRACEHIGHLIGHTINDICATOR = 2498,\n\n        //!\n        SCI_BRACEBADLIGHTINDICATOR = 2499,\n\n        //!\n        SCI_SETINDICATORCURRENT = 2500,\n\n        //!\n        SCI_GETINDICATORCURRENT = 2501,\n\n        //!\n        SCI_SETINDICATORVALUE = 2502,\n\n        //!\n        SCI_GETINDICATORVALUE = 2503,\n\n        //!\n        SCI_INDICATORFILLRANGE = 2504,\n\n        //!\n        SCI_INDICATORCLEARRANGE = 2505,\n\n        //!\n        SCI_INDICATORALLONFOR = 2506,\n\n        //!\n        SCI_INDICATORVALUEAT = 2507,\n\n        //!\n        SCI_INDICATORSTART = 2508,\n\n        //!\n        SCI_INDICATOREND = 2509,\n\n        //!\n        SCI_INDICSETUNDER = 2510,\n\n        //!\n        SCI_INDICGETUNDER = 2511,\n\n        //!\n        SCI_SETCARETSTYLE = 2512,\n\n        //!\n        SCI_GETCARETSTYLE = 2513,\n\n        //!\n        SCI_SETPOSITIONCACHE = 2514,\n\n        //!\n        SCI_GETPOSITIONCACHE = 2515,\n\n        //!\n        SCI_SETSCROLLWIDTHTRACKING = 2516,\n\n        //!\n        SCI_GETSCROLLWIDTHTRACKING = 2517,\n\n        //!\n        SCI_DELWORDRIGHTEND = 2518,\n\n        //! This message copies the selection.  If the selection is empty then\n        //! copy the line with the caret.\n        SCI_COPYALLOWLINE = 2519,\n\n        //! This message returns a pointer to the document text.  Any\n        //! subsequent message will invalidate the pointer.\n        SCI_GETCHARACTERPOINTER = 2520,\n\n        //!\n        SCI_INDICSETALPHA = 2523,\n\n        //!\n        SCI_INDICGETALPHA = 2524,\n\n        //!\n        SCI_SETEXTRAASCENT = 2525,\n\n        //!\n        SCI_GETEXTRAASCENT = 2526,\n\n        //!\n        SCI_SETEXTRADESCENT = 2527,\n\n        //!\n        SCI_GETEXTRADESCENT = 2528,\n\n        //!\n        SCI_MARKERSYMBOLDEFINED = 2529,\n\n        //!\n        SCI_MARGINSETTEXT = 2530,\n\n        //!\n        SCI_MARGINGETTEXT = 2531,\n\n        //!\n        SCI_MARGINSETSTYLE = 2532,\n\n        //!\n        SCI_MARGINGETSTYLE = 2533,\n\n        //!\n        SCI_MARGINSETSTYLES = 2534,\n\n        //!\n        SCI_MARGINGETSTYLES = 2535,\n\n        //!\n        SCI_MARGINTEXTCLEARALL = 2536,\n\n        //!\n        SCI_MARGINSETSTYLEOFFSET = 2537,\n\n        //!\n        SCI_MARGINGETSTYLEOFFSET = 2538,\n\n        //!\n        SCI_SETMARGINOPTIONS = 2539,\n\n        //!\n        SCI_ANNOTATIONSETTEXT = 2540,\n\n        //!\n        SCI_ANNOTATIONGETTEXT = 2541,\n\n        //!\n        SCI_ANNOTATIONSETSTYLE = 2542,\n\n        //!\n        SCI_ANNOTATIONGETSTYLE = 2543,\n\n        //!\n        SCI_ANNOTATIONSETSTYLES = 2544,\n\n        //!\n        SCI_ANNOTATIONGETSTYLES = 2545,\n\n        //!\n        SCI_ANNOTATIONGETLINES = 2546,\n\n        //!\n        SCI_ANNOTATIONCLEARALL = 2547,\n\n        //!\n        SCI_ANNOTATIONSETVISIBLE = 2548,\n\n        //!\n        SCI_ANNOTATIONGETVISIBLE = 2549,\n\n        //!\n        SCI_ANNOTATIONSETSTYLEOFFSET = 2550,\n\n        //!\n        SCI_ANNOTATIONGETSTYLEOFFSET = 2551,\n\n        //!\n        SCI_RELEASEALLEXTENDEDSTYLES = 2552,\n\n        //!\n        SCI_ALLOCATEEXTENDEDSTYLES = 2553,\n\n        //!\n        SCI_SETEMPTYSELECTION = 2556,\n\n        //!\n        SCI_GETMARGINOPTIONS = 2557,\n\n        //!\n        SCI_INDICSETOUTLINEALPHA = 2558,\n\n        //!\n        SCI_INDICGETOUTLINEALPHA = 2559,\n\n        //!\n        SCI_ADDUNDOACTION = 2560,\n\n        //!\n        SCI_CHARPOSITIONFROMPOINT = 2561,\n\n        //!\n        SCI_CHARPOSITIONFROMPOINTCLOSE = 2562,\n\n        //!\n        SCI_SETMULTIPLESELECTION = 2563,\n\n        //!\n        SCI_GETMULTIPLESELECTION = 2564,\n\n        //!\n        SCI_SETADDITIONALSELECTIONTYPING = 2565,\n\n        //!\n        SCI_GETADDITIONALSELECTIONTYPING = 2566,\n\n        //!\n        SCI_SETADDITIONALCARETSBLINK = 2567,\n\n        //!\n        SCI_GETADDITIONALCARETSBLINK = 2568,\n\n        //!\n        SCI_SCROLLRANGE = 2569,\n\n        //!\n        SCI_GETSELECTIONS = 2570,\n\n        //!\n        SCI_CLEARSELECTIONS = 2571,\n\n        //!\n        SCI_SETSELECTION = 2572,\n\n        //!\n        SCI_ADDSELECTION = 2573,\n\n        //!\n        SCI_SETMAINSELECTION = 2574,\n\n        //!\n        SCI_GETMAINSELECTION = 2575,\n\n        //!\n        SCI_SETSELECTIONNCARET = 2576,\n\n        //!\n        SCI_GETSELECTIONNCARET = 2577,\n\n        //!\n        SCI_SETSELECTIONNANCHOR = 2578,\n\n        //!\n        SCI_GETSELECTIONNANCHOR = 2579,\n\n        //!\n        SCI_SETSELECTIONNCARETVIRTUALSPACE = 2580,\n\n        //!\n        SCI_GETSELECTIONNCARETVIRTUALSPACE = 2581,\n\n        //!\n        SCI_SETSELECTIONNANCHORVIRTUALSPACE = 2582,\n\n        //!\n        SCI_GETSELECTIONNANCHORVIRTUALSPACE = 2583,\n\n        //!\n        SCI_SETSELECTIONNSTART = 2584,\n\n        //!\n        SCI_GETSELECTIONNSTART = 2585,\n\n        //!\n        SCI_SETSELECTIONNEND = 2586,\n\n        //!\n        SCI_GETSELECTIONNEND = 2587,\n\n        //!\n        SCI_SETRECTANGULARSELECTIONCARET = 2588,\n\n        //!\n        SCI_GETRECTANGULARSELECTIONCARET = 2589,\n\n        //!\n        SCI_SETRECTANGULARSELECTIONANCHOR = 2590,\n\n        //!\n        SCI_GETRECTANGULARSELECTIONANCHOR = 2591,\n\n        //!\n        SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE = 2592,\n\n        //!\n        SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE = 2593,\n\n        //!\n        SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE = 2594,\n\n        //!\n        SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE = 2595,\n\n        //!\n        SCI_SETVIRTUALSPACEOPTIONS = 2596,\n\n        //!\n        SCI_GETVIRTUALSPACEOPTIONS = 2597,\n\n        //!\n        SCI_SETRECTANGULARSELECTIONMODIFIER = 2598,\n\n        //!\n        SCI_GETRECTANGULARSELECTIONMODIFIER = 2599,\n\n        //!\n        SCI_SETADDITIONALSELFORE = 2600,\n\n        //!\n        SCI_SETADDITIONALSELBACK = 2601,\n\n        //!\n        SCI_SETADDITIONALSELALPHA = 2602,\n\n        //!\n        SCI_GETADDITIONALSELALPHA = 2603,\n\n        //!\n        SCI_SETADDITIONALCARETFORE = 2604,\n\n        //!\n        SCI_GETADDITIONALCARETFORE = 2605,\n\n        //!\n        SCI_ROTATESELECTION = 2606,\n\n        //!\n        SCI_SWAPMAINANCHORCARET = 2607,\n\n        //!\n        SCI_SETADDITIONALCARETSVISIBLE = 2608,\n\n        //!\n        SCI_GETADDITIONALCARETSVISIBLE = 2609,\n\n        //!\n        SCI_AUTOCGETCURRENTTEXT = 2610,\n\n        //!\n        SCI_SETFONTQUALITY = 2611,\n\n        //!\n        SCI_GETFONTQUALITY = 2612,\n\n        //!\n        SCI_SETFIRSTVISIBLELINE = 2613,\n\n        //!\n        SCI_SETMULTIPASTE = 2614,\n\n        //!\n        SCI_GETMULTIPASTE = 2615,\n\n        //!\n        SCI_GETTAG = 2616,\n\n        //!\n        SCI_CHANGELEXERSTATE = 2617,\n\n        //!\n        SCI_CONTRACTEDFOLDNEXT = 2618,\n\n        //!\n        SCI_VERTICALCENTRECARET = 2619,\n\n        //!\n        SCI_MOVESELECTEDLINESUP = 2620,\n\n        //!\n        SCI_MOVESELECTEDLINESDOWN = 2621,\n\n        //!\n        SCI_SETIDENTIFIER = 2622,\n\n        //!\n        SCI_GETIDENTIFIER = 2623,\n\n        //! This message sets the width of an RGBA image specified by a future\n        //! call to SCI_MARKERDEFINERGBAIMAGE or SCI_REGISTERRGBAIMAGE.\n        //!\n        //! \\sa SCI_RGBAIMAGESETHEIGHT, SCI_MARKERDEFINERGBAIMAGE,\n        //! SCI_REGISTERRGBAIMAGE.\n        SCI_RGBAIMAGESETWIDTH = 2624,\n\n        //! This message sets the height of an RGBA image specified by a future\n        //! call to SCI_MARKERDEFINERGBAIMAGE or SCI_REGISTERRGBAIMAGE.\n        //!\n        //! \\sa SCI_RGBAIMAGESETWIDTH, SCI_MARKERDEFINERGBAIMAGE,\n        //! SCI_REGISTERRGBAIMAGE.\n        SCI_RGBAIMAGESETHEIGHT = 2625,\n\n        //! This message sets the symbol used to draw one of the 32 markers to\n        //! an RGBA image.  RGBA images use the SC_MARK_RGBAIMAGE marker\n        //! symbol.\n        //! \\a wParam is the number of the marker.\n        //! \\a lParam is a pointer to a QImage instance.  Note that in other\n        //! ports of Scintilla this is a pointer to raw RGBA image data.\n        //!\n        //! \\sa SCI_MARKERDEFINE, SCI_MARKERDEFINEPIXMAP\n        SCI_MARKERDEFINERGBAIMAGE = 2626,\n\n        //! This message takes a copy of an image and registers it so that it\n        //! can be refered to by a unique integer identifier.\n        //! \\a wParam is the image's identifier.\n        //! \\a lParam is a pointer to a QImage instance.  Note that in other\n        //! ports of Scintilla this is a pointer to raw RGBA image data.\n        //!\n        //! \\sa SCI_CLEARREGISTEREDIMAGES, SCI_REGISTERIMAGE\n        SCI_REGISTERRGBAIMAGE = 2627,\n\n        //!\n        SCI_SCROLLTOSTART = 2628,\n\n        //!\n        SCI_SCROLLTOEND = 2629,\n\n        //!\n        SCI_SETTECHNOLOGY = 2630,\n\n        //!\n        SCI_GETTECHNOLOGY = 2631,\n\n        //!\n        SCI_CREATELOADER = 2632,\n\n        //!\n        SCI_COUNTCHARACTERS = 2633,\n\n        //!\n        SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR = 2634,\n\n        //!\n        SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR = 2635,\n\n        //!\n        SCI_AUTOCSETMULTI = 2636,\n\n        //!\n        SCI_AUTOCGETMULTI = 2637,\n\n        //!\n        SCI_FINDINDICATORSHOW = 2640,\n\n        //!\n        SCI_FINDINDICATORFLASH = 2641,\n\n        //!\n        SCI_FINDINDICATORHIDE = 2642,\n\n        //!\n        SCI_GETRANGEPOINTER = 2643,\n\n        //!\n        SCI_GETGAPPOSITION = 2644,\n\n        //!\n        SCI_DELETERANGE = 2645,\n\n        //!\n        SCI_GETWORDCHARS = 2646,\n\n        //!\n        SCI_GETWHITESPACECHARS = 2647,\n\n        //!\n        SCI_SETPUNCTUATIONCHARS = 2648,\n\n        //!\n        SCI_GETPUNCTUATIONCHARS = 2649,\n\n        //!\n        SCI_GETSELECTIONEMPTY = 2650,\n\n        //!\n        SCI_RGBAIMAGESETSCALE = 2651,\n\n        //!\n        SCI_VCHOMEDISPLAY = 2652,\n\n        //!\n        SCI_VCHOMEDISPLAYEXTEND = 2653,\n\n        //!\n        SCI_GETCARETLINEVISIBLEALWAYS = 2654,\n\n        //!\n        SCI_SETCARETLINEVISIBLEALWAYS = 2655,\n\n        //!\n        SCI_SETLINEENDTYPESALLOWED = 2656,\n\n        //!\n        SCI_GETLINEENDTYPESALLOWED = 2657,\n\n        //!\n        SCI_GETLINEENDTYPESACTIVE = 2658,\n\n        //!\n        SCI_AUTOCSETORDER = 2660,\n\n        //!\n        SCI_AUTOCGETORDER = 2661,\n\n        //!\n        SCI_FOLDALL = 2662,\n\n        //!\n        SCI_SETAUTOMATICFOLD = 2663,\n\n        //!\n        SCI_GETAUTOMATICFOLD = 2664,\n\n        //!\n        SCI_SETREPRESENTATION = 2665,\n\n        //!\n        SCI_GETREPRESENTATION = 2666,\n\n        //!\n        SCI_CLEARREPRESENTATION = 2667,\n\n        //!\n        SCI_SETMOUSESELECTIONRECTANGULARSWITCH = 2668,\n\n        //!\n        SCI_GETMOUSESELECTIONRECTANGULARSWITCH = 2669,\n\n        //!\n        SCI_POSITIONRELATIVE = 2670,\n\n        //!\n        SCI_DROPSELECTIONN = 2671,\n\n        //!\n        SCI_CHANGEINSERTION = 2672,\n\n        //!\n        SCI_GETPHASESDRAW = 2673,\n\n        //!\n        SCI_SETPHASESDRAW = 2674,\n\n        //!\n        SCI_CLEARTABSTOPS = 2675,\n\n        //!\n        SCI_ADDTABSTOP = 2676,\n\n        //!\n        SCI_GETNEXTTABSTOP = 2677,\n\n        //!\n        SCI_GETIMEINTERACTION = 2678,\n\n        //!\n        SCI_SETIMEINTERACTION = 2679,\n\n        //!\n        SCI_INDICSETHOVERSTYLE = 2680,\n\n        //!\n        SCI_INDICGETHOVERSTYLE = 2681,\n\n        //!\n        SCI_INDICSETHOVERFORE = 2682,\n\n        //!\n        SCI_INDICGETHOVERFORE = 2683,\n\n        //!\n        SCI_INDICSETFLAGS = 2684,\n\n        //!\n        SCI_INDICGETFLAGS = 2685,\n\n        //!\n        SCI_SETTARGETRANGE = 2686,\n\n        //!\n        SCI_GETTARGETTEXT = 2687,\n\n        //!\n        SCI_MULTIPLESELECTADDNEXT = 2688,\n\n        //!\n        SCI_MULTIPLESELECTADDEACH = 2689,\n\n        //!\n        SCI_TARGETWHOLEDOCUMENT = 2690,\n\n        //!\n        SCI_ISRANGEWORD = 2691,\n\n        //!\n        SCI_SETIDLESTYLING = 2692,\n\n        //!\n        SCI_GETIDLESTYLING = 2693,\n\n        //!\n        SCI_MULTIEDGEADDLINE = 2694,\n\n        //!\n        SCI_MULTIEDGECLEARALL = 2695,\n\n        //!\n        SCI_SETMOUSEWHEELCAPTURES = 2696,\n\n        //!\n        SCI_GETMOUSEWHEELCAPTURES = 2697,\n\n        //!\n        SCI_GETTABDRAWMODE = 2698,\n\n        //!\n        SCI_SETTABDRAWMODE = 2699,\n\n        //!\n        SCI_TOGGLEFOLDSHOWTEXT = 2700,\n\n        //!\n        SCI_FOLDDISPLAYTEXTSETSTYLE = 2701,\n\n        //!\n        SCI_STARTRECORD = 3001,\n\n        //!\n        SCI_STOPRECORD = 3002,\n\n        //! This message sets the number of the lexer to use for syntax\n        //! styling.\n        //! \\a wParam is the number of the lexer and is one of the SCLEX_*\n        //! values.\n        SCI_SETLEXER = 4001,\n\n        //! This message returns the number of the lexer being used for syntax\n        //! styling.\n        SCI_GETLEXER = 4002,\n\n        //!\n        SCI_COLOURISE = 4003,\n\n        //!\n        SCI_SETPROPERTY = 4004,\n\n        //!\n        SCI_SETKEYWORDS = 4005,\n\n        //! This message sets the name of the lexer to use for syntax styling.\n        //! \\a wParam is unused.\n        //! \\a lParam is the name of the lexer.\n        SCI_SETLEXERLANGUAGE = 4006,\n\n        //!\n        SCI_LOADLEXERLIBRARY = 4007,\n\n        //!\n        SCI_GETPROPERTY = 4008,\n\n        //!\n        SCI_GETPROPERTYEXPANDED = 4009,\n\n        //!\n        SCI_GETPROPERTYINT = 4010,\n\n        //!\n        SCI_GETSTYLEBITSNEEDED = 4011,\n\n        //!\n        SCI_GETLEXERLANGUAGE = 4012,\n\n        //!\n        SCI_PRIVATELEXERCALL = 4013,\n\n        //!\n        SCI_PROPERTYNAMES = 4014,\n\n        //!\n        SCI_PROPERTYTYPE = 4015,\n\n        //!\n        SCI_DESCRIBEPROPERTY = 4016,\n\n        //!\n        SCI_DESCRIBEKEYWORDSETS = 4017,\n\n        //!\n        SCI_GETLINEENDTYPESSUPPORTED = 4018,\n\n        //!\n        SCI_ALLOCATESUBSTYLES = 4020,\n\n        //!\n        SCI_GETSUBSTYLESSTART = 4021,\n\n        //!\n        SCI_GETSUBSTYLESLENGTH = 4022,\n\n        //!\n        SCI_GETSTYLEFROMSUBSTYLE = 4027,\n\n        //!\n        SCI_GETPRIMARYSTYLEFROMSTYLE = 4028,\n\n        //!\n        SCI_FREESUBSTYLES = 4023,\n\n        //!\n        SCI_SETIDENTIFIERS = 4024,\n\n        //!\n        SCI_DISTANCETOSECONDARYSTYLES = 4025,\n\n        //!\n        SCI_GETSUBSTYLEBASES = 4026,\n    };\n\n\tenum\n\t{\n\t\tSC_AC_FILLUP = 1,\n\t\tSC_AC_DOUBLECLICK = 2,\n\t\tSC_AC_TAB = 3,\n\t\tSC_AC_NEWLINE = 4,\n\t\tSC_AC_COMMAND = 5,\n\t};\n\n    enum\n    {\n        SC_ALPHA_TRANSPARENT = 0,\n        SC_ALPHA_OPAQUE = 255,\n        SC_ALPHA_NOALPHA = 256\n    };\n\n    enum\n    {\n        SC_CARETSTICKY_OFF = 0,\n        SC_CARETSTICKY_ON = 1,\n        SC_CARETSTICKY_WHITESPACE = 2\n    };\n\n    enum\n    {\n        SC_EFF_QUALITY_MASK = 0x0f,\n        SC_EFF_QUALITY_DEFAULT = 0,\n        SC_EFF_QUALITY_NON_ANTIALIASED = 1,\n        SC_EFF_QUALITY_ANTIALIASED = 2,\n        SC_EFF_QUALITY_LCD_OPTIMIZED = 3\n    };\n\n    enum\n    {\n        SC_IDLESTYLING_NONE = 0,\n        SC_IDLESTYLING_TOVISIBLE = 1,\n        SC_IDLESTYLING_AFTERVISIBLE = 2,\n        SC_IDLESTYLING_ALL = 3,\n    };\n\n    enum\n    {\n        SC_IME_WINDOWED = 0,\n        SC_IME_INLINE = 1,\n    };\n\n    enum\n    {\n        SC_MARGINOPTION_NONE = 0x00,\n        SC_MARGINOPTION_SUBLINESELECT = 0x01\n    };\n\n    enum\n    {\n        SC_MULTIAUTOC_ONCE = 0,\n        SC_MULTIAUTOC_EACH = 1\n    };\n\n    enum\n    {\n        SC_MULTIPASTE_ONCE = 0,\n        SC_MULTIPASTE_EACH = 1\n    };\n\n    enum\n    {\n        SC_POPUP_NEVER = 0,\n        SC_POPUP_ALL = 1,\n        SC_POPUP_TEXT = 2,\n    };\n\n    //! This enum defines the different selection modes.\n    //!\n    //! \\sa SCI_GETSELECTIONMODE, SCI_SETSELECTIONMODE\n    enum\n    {\n        SC_SEL_STREAM = 0,\n        SC_SEL_RECTANGLE = 1,\n        SC_SEL_LINES = 2,\n        SC_SEL_THIN = 3\n    };\n\n    enum\n    {\n        SC_STATUS_OK = 0,\n        SC_STATUS_FAILURE = 1,\n        SC_STATUS_BADALLOC = 2,\n        SC_STATUS_WARN_START = 1000,\n        SC_STATUS_WARNREGEX = 1001,\n    };\n\n    enum\n    {\n        SC_TYPE_BOOLEAN = 0,\n        SC_TYPE_INTEGER = 1,\n        SC_TYPE_STRING = 2\n    };\n\n    enum\n    {\n        SC_UPDATE_CONTENT = 0x01,\n        SC_UPDATE_SELECTION = 0x02,\n        SC_UPDATE_V_SCROLL = 0x04,\n        SC_UPDATE_H_SCROLL = 0x08\n    };\n\n    enum\n    {\n        SC_WRAPVISUALFLAG_NONE = 0x0000,\n        SC_WRAPVISUALFLAG_END = 0x0001,\n        SC_WRAPVISUALFLAG_START = 0x0002,\n        SC_WRAPVISUALFLAG_MARGIN = 0x0004\n    };\n\n    enum\n    {\n        SC_WRAPVISUALFLAGLOC_DEFAULT = 0x0000,\n        SC_WRAPVISUALFLAGLOC_END_BY_TEXT = 0x0001,\n        SC_WRAPVISUALFLAGLOC_START_BY_TEXT = 0x0002\n    };\n\n    enum\n    {\n        SCTD_LONGARROW = 0,\n        SCTD_STRIKEOUT = 1,\n    };\n\n    enum\n    {\n        SCVS_NONE = 0,\n        SCVS_RECTANGULARSELECTION = 1,\n        SCVS_USERACCESSIBLE = 2,\n        SCVS_NOWRAPLINESTART = 4,\n    };\n\n    enum\n    {\n        SCWS_INVISIBLE = 0,\n        SCWS_VISIBLEALWAYS = 1,\n        SCWS_VISIBLEAFTERINDENT = 2,\n        SCWS_VISIBLEONLYININDENT = 3,\n    };\n\n    enum\n    {\n        SC_EOL_CRLF = 0,\n        SC_EOL_CR = 1,\n        SC_EOL_LF = 2\n    };\n\n    enum\n    {\n        SC_CP_DBCS = 1,\n        SC_CP_UTF8 = 65001\n    };\n\n    //! This enum defines the different marker symbols.\n    //!\n    //! \\sa SCI_MARKERDEFINE\n    enum\n    {\n        //! A circle.\n        SC_MARK_CIRCLE = 0,\n\n        //! A rectangle.\n        SC_MARK_ROUNDRECT = 1,\n\n        //! A triangle pointing to the right.\n        SC_MARK_ARROW = 2,\n\n        //! A smaller rectangle.\n        SC_MARK_SMALLRECT = 3,\n\n        //! An arrow pointing to the right.\n        SC_MARK_SHORTARROW = 4,\n\n        //! An invisible marker that allows code to track the movement\n        //! of lines.\n        SC_MARK_EMPTY = 5,\n\n        //! A triangle pointing down.\n        SC_MARK_ARROWDOWN = 6,\n\n        //! A drawn minus sign.\n        SC_MARK_MINUS = 7,\n\n        //! A drawn plus sign.\n        SC_MARK_PLUS = 8,\n\n        //! A vertical line drawn in the background colour.\n        SC_MARK_VLINE = 9,\n\n        //! A bottom left corner drawn in the background colour.\n        SC_MARK_LCORNER = 10,\n\n        //! A vertical line with a centre right horizontal line drawn\n        //! in the background colour.\n        SC_MARK_TCORNER = 11,\n\n        //! A drawn plus sign in a box.\n        SC_MARK_BOXPLUS = 12,\n\n        //! A drawn plus sign in a connected box.\n        SC_MARK_BOXPLUSCONNECTED = 13,\n\n        //! A drawn minus sign in a box.\n        SC_MARK_BOXMINUS = 14,\n\n        //! A drawn minus sign in a connected box.\n        SC_MARK_BOXMINUSCONNECTED = 15,\n\n        //! A rounded bottom left corner drawn in the background\n        //! colour.\n        SC_MARK_LCORNERCURVE = 16,\n\n        //! A vertical line with a centre right curved line drawn in\n        //! the background colour.\n        SC_MARK_TCORNERCURVE = 17,\n\n        //! A drawn plus sign in a circle.\n        SC_MARK_CIRCLEPLUS = 18,\n\n        //! A drawn plus sign in a connected box.\n        SC_MARK_CIRCLEPLUSCONNECTED = 19,\n\n        //! A drawn minus sign in a circle.\n        SC_MARK_CIRCLEMINUS = 20,\n\n        //! A drawn minus sign in a connected circle.\n        SC_MARK_CIRCLEMINUSCONNECTED = 21,\n\n        //! No symbol is drawn but the line is drawn with the same background\n        //! color as the marker's.\n        SC_MARK_BACKGROUND = 22,\n\n        //! Three drawn dots.\n        SC_MARK_DOTDOTDOT = 23,\n\n        //! Three drawn arrows pointing right.\n        SC_MARK_ARROWS = 24,\n\n        //! An XPM format pixmap.\n        SC_MARK_PIXMAP = 25,\n\n        //! A full rectangle (ie. the margin background) using the marker's\n        //! background color.\n        SC_MARK_FULLRECT = 26,\n\n        //! A left rectangle (ie. the left part of the margin background) using\n        //! the marker's background color.\n        SC_MARK_LEFTRECT = 27,\n\n        //! The value is available for plugins to use.\n        SC_MARK_AVAILABLE = 28,\n\n        //! The line is underlined using the marker's background color.\n        SC_MARK_UNDERLINE = 29,\n\n        //! A RGBA format image.\n        SC_MARK_RGBAIMAGE = 30,\n\n        //! A bookmark.\n        SC_MARK_BOOKMARK = 31,\n\n        //! Characters can be used as symbols by adding this to the ASCII value\n        //! of the character.\n        SC_MARK_CHARACTER = 10000\n    };\n\n    enum\n    {\n        SC_MARKNUM_FOLDEREND = 25,\n        SC_MARKNUM_FOLDEROPENMID = 26,\n        SC_MARKNUM_FOLDERMIDTAIL = 27,\n        SC_MARKNUM_FOLDERTAIL = 28,\n        SC_MARKNUM_FOLDERSUB = 29,\n        SC_MARKNUM_FOLDER = 30,\n        SC_MARKNUM_FOLDEROPEN = 31,\n        SC_MASK_FOLDERS = 0xfe000000\n    };\n\n    //! This enum defines what can be displayed in a margin.\n    //!\n    //! \\sa SCI_GETMARGINTYPEN, SCI_SETMARGINTYPEN\n    enum\n    {\n        //! The margin can display symbols.  Note that all margins can display\n        //! symbols.\n        SC_MARGIN_SYMBOL = 0,\n\n        //! The margin will display line numbers.\n        SC_MARGIN_NUMBER = 1,\n\n        //! The margin's background color will be set to the default background\n        //! color.\n        SC_MARGIN_BACK = 2,\n\n        //! The margin's background color will be set to the default foreground\n        //! color.\n        SC_MARGIN_FORE = 3,\n\n        //! The margin will display text.\n        SC_MARGIN_TEXT = 4,\n\n        //! The margin will display right justified text.\n        SC_MARGIN_RTEXT = 5,\n\n        //! The margin's background color will be set to the color set by\n        //! SCI_SETMARGINBACKN.\n        SC_MARGIN_COLOUR = 6,\n    };\n\n    enum\n    {\n        STYLE_DEFAULT = 32,\n        STYLE_LINENUMBER = 33,\n        STYLE_BRACELIGHT = 34,\n        STYLE_BRACEBAD = 35,\n        STYLE_CONTROLCHAR = 36,\n        STYLE_INDENTGUIDE = 37,\n        STYLE_CALLTIP = 38,\n        STYLE_FOLDDISPLAYTEXT = 39,\n        STYLE_LASTPREDEFINED = 39,\n        STYLE_MAX = 255\n    };\n\n    enum\n    {\n        SC_CHARSET_ANSI = 0,\n        SC_CHARSET_DEFAULT = 1,\n        SC_CHARSET_BALTIC = 186,\n        SC_CHARSET_CHINESEBIG5 = 136,\n        SC_CHARSET_EASTEUROPE = 238,\n        SC_CHARSET_GB2312 = 134,\n        SC_CHARSET_GREEK = 161,\n        SC_CHARSET_HANGUL = 129,\n        SC_CHARSET_MAC = 77,\n        SC_CHARSET_OEM = 255,\n        SC_CHARSET_RUSSIAN = 204,\n        SC_CHARSET_OEM866 = 866,\n        SC_CHARSET_CYRILLIC = 1251,\n        SC_CHARSET_SHIFTJIS = 128,\n        SC_CHARSET_SYMBOL = 2,\n        SC_CHARSET_TURKISH = 162,\n        SC_CHARSET_JOHAB = 130,\n        SC_CHARSET_HEBREW = 177,\n        SC_CHARSET_ARABIC = 178,\n        SC_CHARSET_VIETNAMESE = 163,\n        SC_CHARSET_THAI = 222,\n        SC_CHARSET_8859_15 = 1000\n    };\n\n    enum\n    {\n        SC_CASE_MIXED = 0,\n        SC_CASE_UPPER = 1,\n        SC_CASE_LOWER = 2,\n        SC_CASE_CAMEL = 3,\n    };\n\n    //! This enum defines the different indentation guide views.\n    //!\n    //! \\sa SCI_GETINDENTATIONGUIDES, SCI_SETINDENTATIONGUIDES\n    enum\n    {\n        //! No indentation guides are shown.\n        SC_IV_NONE = 0,\n\n        //! Indentation guides are shown inside real indentation white space.\n        SC_IV_REAL = 1,\n\n        //! Indentation guides are shown beyond the actual indentation up to\n        //! the level of the next non-empty line.  If the previous non-empty\n        //! line was a fold header then indentation guides are shown for one\n        //! more level of indent than that line.  This setting is good for\n        //! Python.\n        SC_IV_LOOKFORWARD = 2,\n\n        //! Indentation guides are shown beyond the actual indentation up to\n        //! the level of the next non-empty line or previous non-empty line\n        //! whichever is the greater.  This setting is good for most languages.\n        SC_IV_LOOKBOTH = 3\n    };\n\n    enum\n    {\n        INDIC_PLAIN = 0,\n        INDIC_SQUIGGLE = 1,\n        INDIC_TT = 2,\n        INDIC_DIAGONAL = 3,\n        INDIC_STRIKE = 4,\n        INDIC_HIDDEN = 5,\n        INDIC_BOX = 6,\n        INDIC_ROUNDBOX = 7,\n        INDIC_STRAIGHTBOX = 8,\n        INDIC_DASH = 9,\n        INDIC_DOTS = 10,\n        INDIC_SQUIGGLELOW = 11,\n        INDIC_DOTBOX = 12,\n        INDIC_SQUIGGLEPIXMAP = 13,\n        INDIC_COMPOSITIONTHICK = 14,\n        INDIC_COMPOSITIONTHIN = 15,\n        INDIC_FULLBOX = 16,\n        INDIC_TEXTFORE = 17,\n        INDIC_POINT = 18,\n        INDIC_POINTCHARACTER = 19,\n\n        INDIC_IME = 32,\n        INDIC_IME_MAX = 35,\n\n        INDIC_CONTAINER = 8,\n        INDIC_MAX = 35,\n        INDIC0_MASK = 0x20,\n        INDIC1_MASK = 0x40,\n        INDIC2_MASK = 0x80,\n        INDICS_MASK = 0xe0,\n\n        SC_INDICVALUEBIT = 0x01000000,\n        SC_INDICVALUEMASK = 0x00ffffff,\n        SC_INDICFLAG_VALUEBEFORE = 1,\n    };\n\n    enum\n    {\n        SC_PRINT_NORMAL = 0,\n        SC_PRINT_INVERTLIGHT = 1,\n        SC_PRINT_BLACKONWHITE = 2,\n        SC_PRINT_COLOURONWHITE = 3,\n        SC_PRINT_COLOURONWHITEDEFAULTBG = 4\n    };\n\n    enum\n    {\n        SCFIND_WHOLEWORD = 2,\n        SCFIND_MATCHCASE = 4,\n        SCFIND_WORDSTART = 0x00100000,\n        SCFIND_REGEXP = 0x00200000,\n        SCFIND_POSIX = 0x00400000,\n        SCFIND_CXX11REGEX = 0x00800000,\n    };\n\n    enum\n    {\n        SC_FOLDDISPLAYTEXT_HIDDEN = 0,\n        SC_FOLDDISPLAYTEXT_STANDARD = 1,\n        SC_FOLDDISPLAYTEXT_BOXED = 2,\n    };\n\n    enum\n    {\n        SC_FOLDLEVELBASE = 0x00400,\n        SC_FOLDLEVELWHITEFLAG = 0x01000,\n        SC_FOLDLEVELHEADERFLAG = 0x02000,\n        SC_FOLDLEVELNUMBERMASK = 0x00fff\n    };\n\n    enum\n    {\n        SC_FOLDFLAG_LINEBEFORE_EXPANDED = 0x0002,\n        SC_FOLDFLAG_LINEBEFORE_CONTRACTED = 0x0004,\n        SC_FOLDFLAG_LINEAFTER_EXPANDED = 0x0008,\n        SC_FOLDFLAG_LINEAFTER_CONTRACTED = 0x0010,\n        SC_FOLDFLAG_LEVELNUMBERS = 0x0040,\n        SC_FOLDFLAG_LINESTATE = 0x0080,\n    };\n\n    enum\n    {\n        SC_LINE_END_TYPE_DEFAULT = 0,\n        SC_LINE_END_TYPE_UNICODE = 1,\n    };\n\n    enum\n    {\n        SC_TIME_FOREVER = 10000000\n    };\n\n    enum\n    {\n        SC_WRAP_NONE = 0,\n        SC_WRAP_WORD = 1,\n        SC_WRAP_CHAR = 2,\n        SC_WRAP_WHITESPACE = 3,\n    };\n\n    enum\n    {\n        SC_WRAPINDENT_FIXED = 0,\n        SC_WRAPINDENT_SAME = 1,\n        SC_WRAPINDENT_INDENT = 2\n    };\n\n    enum\n    {\n        SC_CACHE_NONE = 0,\n        SC_CACHE_CARET = 1,\n        SC_CACHE_PAGE = 2,\n        SC_CACHE_DOCUMENT = 3\n    };\n\n    enum\n    {\n        SC_PHASES_ONE = 0,\n        SC_PHASES_TWO = 1,\n        SC_PHASES_MULTIPLE = 2,\n    };\n\n    enum\n    {\n        ANNOTATION_HIDDEN = 0,\n        ANNOTATION_STANDARD = 1,\n        ANNOTATION_BOXED = 2,\n        ANNOTATION_INDENTED = 3,\n    };\n\n    enum\n    {\n        EDGE_NONE = 0,\n        EDGE_LINE = 1,\n        EDGE_BACKGROUND = 2,\n        EDGE_MULTILINE = 3,\n    };\n\n    enum\n    {\n        SC_CURSORNORMAL = -1,\n        SC_CURSORARROW = 2,\n        SC_CURSORWAIT = 4,\n        SC_CURSORREVERSEARROW = 7\n    };\n\n    enum\n    {\n        UNDO_MAY_COALESCE = 1\n    };\n\n    enum\n    {\n        VISIBLE_SLOP = 0x01,\n        VISIBLE_STRICT = 0x04\n    };\n\n    enum\n    {\n        CARET_SLOP = 0x01,\n        CARET_STRICT = 0x04,\n        CARET_JUMPS = 0x10,\n        CARET_EVEN = 0x08\n    };\n\n    enum\n    {\n        CARETSTYLE_INVISIBLE = 0,\n        CARETSTYLE_LINE = 1,\n        CARETSTYLE_BLOCK = 2\n    };\n\n    enum\n    {\n        SC_MOD_INSERTTEXT = 0x1,\n        SC_MOD_DELETETEXT = 0x2,\n        SC_MOD_CHANGESTYLE = 0x4,\n        SC_MOD_CHANGEFOLD = 0x8,\n        SC_PERFORMED_USER = 0x10,\n        SC_PERFORMED_UNDO = 0x20,\n        SC_PERFORMED_REDO = 0x40,\n        SC_MULTISTEPUNDOREDO = 0x80,\n        SC_LASTSTEPINUNDOREDO = 0x100,\n        SC_MOD_CHANGEMARKER = 0x200,\n        SC_MOD_BEFOREINSERT = 0x400,\n        SC_MOD_BEFOREDELETE = 0x800,\n        SC_MULTILINEUNDOREDO = 0x1000,\n        SC_STARTACTION = 0x2000,\n        SC_MOD_CHANGEINDICATOR = 0x4000,\n        SC_MOD_CHANGELINESTATE = 0x8000,\n        SC_MOD_CHANGEMARGIN = 0x10000,\n        SC_MOD_CHANGEANNOTATION = 0x20000,\n        SC_MOD_CONTAINER = 0x40000,\n        SC_MOD_LEXERSTATE = 0x80000,\n        SC_MOD_INSERTCHECK = 0x100000,\n        SC_MOD_CHANGETABSTOPS = 0x200000,\n        SC_MODEVENTMASKALL = 0x3fffff\n    };\n\n    enum\n    {\n        SCK_DOWN = 300,\n        SCK_UP = 301,\n        SCK_LEFT = 302,\n        SCK_RIGHT = 303,\n        SCK_HOME = 304,\n        SCK_END = 305,\n        SCK_PRIOR = 306,\n        SCK_NEXT = 307,\n        SCK_DELETE = 308,\n        SCK_INSERT = 309,\n        SCK_ESCAPE = 7,\n        SCK_BACK = 8,\n        SCK_TAB = 9,\n        SCK_RETURN = 13,\n        SCK_ADD = 310,\n        SCK_SUBTRACT = 311,\n        SCK_DIVIDE = 312,\n        SCK_WIN = 313,\n        SCK_RWIN = 314,\n        SCK_MENU = 315\n    };\n\n    //! This enum defines the different modifier keys.\n    enum\n    {\n        //! No modifier key.\n        SCMOD_NORM = 0,\n\n        //! Shift key.\n        SCMOD_SHIFT = 1,\n\n        //! Control key (the Command key on OS/X, the Ctrl key on other\n        //! platforms).\n        SCMOD_CTRL = 2,\n\n        //! Alt key.\n        SCMOD_ALT = 4,\n\n        //! This is the same as SCMOD_META on all platforms.\n        SCMOD_SUPER = 8,\n\n        //! Meta key (the Ctrl key on OS/X, the Windows key on other\n        //! platforms).\n        SCMOD_META = 16\n    };\n\n    //! This enum defines the different language lexers.\n    //!\n    //! \\sa SCI_GETLEXER, SCI_SETLEXER\n    enum\n    {\n        //! No lexer is selected and the SCN_STYLENEEDED signal is emitted so\n        //! that the application can style the text as needed.  This is the\n        //! default.\n        SCLEX_CONTAINER = 0,\n\n        //! Select the null lexer that does no syntax styling.\n        SCLEX_NULL = 1,\n\n        //! Select the Python lexer.\n        SCLEX_PYTHON = 2,\n\n        //! Select the C++ lexer.\n        SCLEX_CPP = 3,\n\n        //! Select the HTML lexer.\n        SCLEX_HTML = 4,\n\n        //! Select the XML lexer.\n        SCLEX_XML = 5,\n\n        //! Select the Perl lexer.\n        SCLEX_PERL = 6,\n\n        //! Select the SQL lexer.\n        SCLEX_SQL = 7,\n\n        //! Select the Visual Basic lexer.\n        SCLEX_VB = 8,\n\n        //! Select the lexer for properties style files.\n        SCLEX_PROPERTIES = 9,\n\n        //! Select the lexer for error list style files.\n        SCLEX_ERRORLIST = 10,\n\n        //! Select the Makefile lexer.\n        SCLEX_MAKEFILE = 11,\n\n        //! Select the Windows batch file lexer.\n        SCLEX_BATCH = 12,\n\n        //! Select the LaTex lexer.\n        SCLEX_LATEX = 14,\n\n        //! Select the Lua lexer.\n        SCLEX_LUA = 15,\n\n        //! Select the lexer for diff output.\n        SCLEX_DIFF = 16,\n\n        //! Select the lexer for Apache configuration files.\n        SCLEX_CONF = 17,\n\n        //! Select the Pascal lexer.\n        SCLEX_PASCAL = 18,\n\n        //! Select the Avenue lexer.\n        SCLEX_AVE = 19,\n\n        //! Select the Ada lexer.\n        SCLEX_ADA = 20,\n\n        //! Select the Lisp lexer.\n        SCLEX_LISP = 21,\n\n        //! Select the Ruby lexer.\n        SCLEX_RUBY = 22,\n\n        //! Select the Eiffel lexer.\n        SCLEX_EIFFEL = 23,\n\n        //! Select the Eiffel lexer folding at keywords.\n        SCLEX_EIFFELKW = 24,\n\n        //! Select the Tcl lexer.\n        SCLEX_TCL = 25,\n\n        //! Select the lexer for nnCron files.\n        SCLEX_NNCRONTAB = 26,\n\n        //! Select the Bullant lexer.\n        SCLEX_BULLANT = 27,\n\n        //! Select the VBScript lexer.\n        SCLEX_VBSCRIPT = 28,\n\n        //! Select the ASP lexer.\n        SCLEX_ASP = SCLEX_HTML,\n\n        //! Select the PHP lexer.\n        SCLEX_PHP = SCLEX_HTML,\n\n        //! Select the Baan lexer.\n        SCLEX_BAAN = 31,\n\n        //! Select the Matlab lexer.\n        SCLEX_MATLAB = 32,\n\n        //! Select the Scriptol lexer.\n        SCLEX_SCRIPTOL = 33,\n\n        //! Select the assembler lexer (';' comment character).\n        SCLEX_ASM = 34,\n\n        //! Select the C++ lexer with case insensitive keywords.\n        SCLEX_CPPNOCASE = 35,\n\n        //! Select the FORTRAN lexer.\n        SCLEX_FORTRAN = 36,\n\n        //! Select the FORTRAN77 lexer.\n        SCLEX_F77 = 37,\n\n        //! Select the CSS lexer.\n        SCLEX_CSS = 38,\n\n        //! Select the POV lexer.\n        SCLEX_POV = 39,\n\n        //! Select the Basser Lout typesetting language lexer.\n        SCLEX_LOUT = 40,\n\n        //! Select the EScript lexer.\n        SCLEX_ESCRIPT = 41,\n\n        //! Select the PostScript lexer.\n        SCLEX_PS = 42,\n\n        //! Select the NSIS lexer.\n        SCLEX_NSIS = 43,\n\n        //! Select the MMIX assembly language lexer.\n        SCLEX_MMIXAL = 44,\n\n        //! Select the Clarion lexer.\n        SCLEX_CLW = 45,\n\n        //! Select the Clarion lexer with case insensitive keywords.\n        SCLEX_CLWNOCASE = 46,\n\n        //! Select the MPT text log file lexer.\n        SCLEX_LOT = 47,\n\n        //! Select the YAML lexer.\n        SCLEX_YAML = 48,\n\n        //! Select the TeX lexer.\n        SCLEX_TEX = 49,\n\n        //! Select the Metapost lexer.\n        SCLEX_METAPOST = 50,\n\n        //! Select the PowerBASIC lexer.\n        SCLEX_POWERBASIC = 51,\n\n        //! Select the Forth lexer.\n        SCLEX_FORTH = 52,\n\n        //! Select the Erlang lexer.\n        SCLEX_ERLANG = 53,\n\n        //! Select the Octave lexer.\n        SCLEX_OCTAVE = 54,\n\n        //! Select the MS SQL lexer.\n        SCLEX_MSSQL = 55,\n\n        //! Select the Verilog lexer.\n        SCLEX_VERILOG = 56,\n\n        //! Select the KIX-Scripts lexer.\n        SCLEX_KIX = 57,\n\n        //! Select the Gui4Cli lexer.\n        SCLEX_GUI4CLI = 58,\n\n        //! Select the Specman E lexer.\n        SCLEX_SPECMAN = 59,\n\n        //! Select the AutoIt3 lexer.\n        SCLEX_AU3 = 60,\n\n        //! Select the APDL lexer.\n        SCLEX_APDL = 61,\n\n        //! Select the Bash lexer.\n        SCLEX_BASH = 62,\n\n        //! Select the ASN.1 lexer.\n        SCLEX_ASN1 = 63,\n\n        //! Select the VHDL lexer.\n        SCLEX_VHDL = 64,\n\n        //! Select the Caml lexer.\n        SCLEX_CAML = 65,\n\n        //! Select the BlitzBasic lexer.\n        SCLEX_BLITZBASIC = 66,\n\n        //! Select the PureBasic lexer.\n        SCLEX_PUREBASIC = 67,\n\n        //! Select the Haskell lexer.\n        SCLEX_HASKELL = 68,\n\n        //! Select the PHPScript lexer.\n        SCLEX_PHPSCRIPT = 69,\n\n        //! Select the TADS3 lexer.\n        SCLEX_TADS3 = 70,\n\n        //! Select the REBOL lexer.\n        SCLEX_REBOL = 71,\n\n        //! Select the Smalltalk lexer.\n        SCLEX_SMALLTALK = 72,\n\n        //! Select the FlagShip lexer.\n        SCLEX_FLAGSHIP = 73,\n\n        //! Select the Csound lexer.\n        SCLEX_CSOUND = 74,\n\n        //! Select the FreeBasic lexer.\n        SCLEX_FREEBASIC = 75,\n\n        //! Select the InnoSetup lexer.\n        SCLEX_INNOSETUP = 76,\n\n        //! Select the Opal lexer.\n        SCLEX_OPAL = 77,\n\n        //! Select the Spice lexer.\n        SCLEX_SPICE = 78,\n\n        //! Select the D lexer.\n        SCLEX_D = 79,\n\n        //! Select the CMake lexer.\n        SCLEX_CMAKE = 80,\n\n        //! Select the GAP lexer.\n        SCLEX_GAP = 81,\n\n        //! Select the PLM lexer.\n        SCLEX_PLM = 82,\n\n        //! Select the Progress lexer.\n        SCLEX_PROGRESS = 83,\n\n        //! Select the Abaqus lexer.\n        SCLEX_ABAQUS = 84,\n\n        //! Select the Asymptote lexer.\n        SCLEX_ASYMPTOTE = 85,\n\n        //! Select the R lexer.\n        SCLEX_R = 86,\n\n        //! Select the MagikSF lexer.\n        SCLEX_MAGIK = 87,\n\n        //! Select the PowerShell lexer.\n        SCLEX_POWERSHELL = 88,\n\n        //! Select the MySQL lexer.\n        SCLEX_MYSQL = 89,\n\n        //! Select the gettext .po file lexer.\n        SCLEX_PO = 90,\n\n        //! Select the TAL lexer.\n        SCLEX_TAL = 91,\n\n        //! Select the COBOL lexer.\n        SCLEX_COBOL = 92,\n\n        //! Select the TACL lexer.\n        SCLEX_TACL = 93,\n\n        //! Select the Sorcus lexer.\n        SCLEX_SORCUS = 94,\n\n        //! Select the PowerPro lexer.\n        SCLEX_POWERPRO = 95,\n\n        //! Select the Nimrod lexer.\n        SCLEX_NIMROD = 96,\n\n        //! Select the SML lexer.\n        SCLEX_SML = 97,\n\n        //! Select the Markdown lexer.\n        SCLEX_MARKDOWN = 98,\n\n        //! Select the txt2tags lexer.\n        SCLEX_TXT2TAGS = 99,\n\n        //! Select the 68000 assembler lexer.\n        SCLEX_A68K = 100,\n\n        //! Select the Modula 3 lexer.\n        SCLEX_MODULA = 101,\n\n        //! Select the CoffeeScript lexer.\n        SCLEX_COFFEESCRIPT = 102,\n\n        //! Select the Take Command lexer.\n        SCLEX_TCMD = 103,\n\n        //! Select the AviSynth lexer.\n        SCLEX_AVS = 104,\n\n        //! Select the ECL lexer.\n        SCLEX_ECL = 105,\n\n        //! Select the OScript lexer.\n        SCLEX_OSCRIPT = 106,\n\n        //! Select the Visual Prolog lexer.\n        SCLEX_VISUALPROLOG = 107,\n\n        //! Select the Literal Haskell lexer.\n        SCLEX_LITERATEHASKELL = 108,\n\n        //! Select the Structured Text lexer.\n        SCLEX_STTXT = 109,\n\n        //! Select the KVIrc lexer.\n        SCLEX_KVIRC = 110,\n\n        //! Select the Rust lexer.\n        SCLEX_RUST = 111,\n\n        //! Select the MSC Nastran DMAP lexer.\n        SCLEX_DMAP = 112,\n\n        //! Select the assembler lexer ('#' comment character).\n        SCLEX_AS = 113,\n\n        //! Select the DMIS lexer.\n        SCLEX_DMIS = 114,\n\n        //! Select the lexer for Windows registry files.\n        SCLEX_REGISTRY = 115,\n\n        //! Select the BibTex lexer.\n        SCLEX_BIBTEX = 116,\n\n        //! Select the Motorola S-Record hex lexer.\n        SCLEX_SREC = 117,\n\n        //! Select the Intel hex lexer.\n        SCLEX_IHEX = 118,\n\n        //! Select the Tektronix extended hex lexer.\n        SCLEX_TEHEX = 119,\n\n        //! Select the JSON hex lexer.\n        SCLEX_JSON = 120,\n\n        //! Select the EDIFACT lexer.\n        SCLEX_EDIFACT = 121,\n    };\n\n    enum\n    {\n        SC_WEIGHT_NORMAL = 400,\n        SC_WEIGHT_SEMIBOLD = 600,\n        SC_WEIGHT_BOLD = 700,\n    };\n\n    enum\n    {\n        SC_TECHNOLOGY_DEFAULT = 0,\n        SC_TECHNOLOGY_DIRECTWRITE = 1,\n        SC_TECHNOLOGY_DIRECTWRITERETAIN = 2,\n        SC_TECHNOLOGY_DIRECTWRITEDC = 3,\n    };\n\n    enum\n    {\n        SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE = 0,\n        SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE = 1,\n    };\n\n    enum\n    {\n        SC_FONT_SIZE_MULTIPLIER = 100,\n    };\n\n    enum\n    {\n        SC_FOLDACTION_CONTRACT = 0,\n        SC_FOLDACTION_EXPAND = 1,\n        SC_FOLDACTION_TOGGLE = 2,\n    };\n\n    enum\n    {\n        SC_AUTOMATICFOLD_SHOW = 0x0001,\n        SC_AUTOMATICFOLD_CLICK = 0x0002,\n        SC_AUTOMATICFOLD_CHANGE = 0x0004,\n    };\n\n    enum\n    {\n        SC_ORDER_PRESORTED = 0,\n        SC_ORDER_PERFORMSORT = 1,\n        SC_ORDER_CUSTOM = 2,\n    };\n\n    //! Construct an empty QsciScintillaBase with parent \\a parent.\n    explicit QsciScintillaBase(QWidget *parent = 0);\n\n    //! Destroys the QsciScintillaBase instance.\n    virtual ~QsciScintillaBase();\n\n    //! Returns a pointer to a QsciScintillaBase instance, or 0 if there isn't\n    //! one.  This can be used by the higher level API to send messages that\n    //! aren't associated with a particular instance.\n    static QsciScintillaBase *pool();\n\n    //! Replaces the existing horizontal scroll bar with \\a scrollBar.  The\n    //! existing scroll bar is deleted.  This should be called instead of\n    //! QAbstractScrollArea::setHorizontalScrollBar().\n    void replaceHorizontalScrollBar(QScrollBar *scrollBar);\n\n    //! Replaces the existing vertical scroll bar with \\a scrollBar.  The\n    //! existing scroll bar is deleted.  This should be called instead of\n    //! QAbstractScrollArea::setHorizontalScrollBar().\n    void replaceVerticalScrollBar(QScrollBar *scrollBar);\n\n    //! Send the Scintilla message \\a msg with the optional parameters \\a\n    //! wParam and \\a lParam.\n    long SendScintilla(unsigned int msg, unsigned long wParam = 0,\n            long lParam = 0) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, unsigned long wParam,\n            void *lParam) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, unsigned long wParam,\n            const char *lParam) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, const char *lParam) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, const char *wParam,\n            const char *lParam) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, long wParam) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, int wParam) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, long cpMin, long cpMax,\n            char *lpstrText) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, unsigned long wParam,\n            const QColor &col) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, const QColor &col) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, unsigned long wParam, QPainter *hdc,\n            const QRect &rc, long cpMin, long cpMax) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, unsigned long wParam,\n            const QPixmap &lParam) const;\n\n    //! \\overload\n    long SendScintilla(unsigned int msg, unsigned long wParam,\n            const QImage &lParam) const;\n\n    //! Send the Scintilla message \\a msg and return a pointer result.\n    void *SendScintillaPtrResult(unsigned int msg) const;\n\n    //! \\internal\n    static int commandKey(int qt_key, int &modifiers);\n\nsignals:\n    //! This signal is emitted when text is selected or de-selected.\n    //! \\a yes is true if text has been selected and false if text has been\n    //! deselected.\n    void QSCN_SELCHANGED(bool yes);\n\n    //! This signal is emitted when the user cancels an auto-completion list.\n    //!\n    //! \\sa SCN_AUTOCSELECTION()\n    void SCN_AUTOCCANCELLED();\n\n    //! This signal is emitted when the user deletes a character when an\n    //! auto-completion list is active.\n    void SCN_AUTOCCHARDELETED();\n\n    //! This signal is emitted after an auto-completion has inserted its text.\n    //! \\a selection is the text of the selection.\n    //! \\a position is the start position of the word being completed.\n    //! \\a ch is the fillup character that triggered the selection if method is\n    //! SC_AC_FILLUP.\n    //! \\a method is the method used to trigger the selection.\n    //!\n    //! \\sa SCN_AUTOCCANCELLED(), SCN_AUTOCSELECTION\n    void SCN_AUTOCCOMPLETED(const char *selection, int position, int ch, int method);\n\n    //! This signal is emitted when the user selects an item in an\n    //! auto-completion list.  It is emitted before the selection is inserted.\n    //! The insertion can be cancelled by sending an SCI_AUTOCANCEL message\n    //! from a connected slot.\n    //! \\a selection is the text of the selection.\n    //! \\a position is the start position of the word being completed.\n    //! \\a ch is the fillup character that triggered the selection if method is\n    //! SC_AC_FILLUP.\n    //! \\a method is the method used to trigger the selection.\n    //!\n    //! \\sa SCN_AUTOCCANCELLED(), SCN_AUTOCCOMPLETED\n    void SCN_AUTOCSELECTION(const char *selection, int position, int ch, int method);\n\n    //! \\overload\n    void SCN_AUTOCSELECTION(const char *selection, int position);\n\n    //! This signal is emitted when the document has changed for any reason.\n    void SCEN_CHANGE();\n\n    //! This signal ir emitted when the user clicks on a calltip.\n    //! \\a direction is 1 if the user clicked on the up arrow, 2 if the user\n    //! clicked on the down arrow, and 0 if the user clicked elsewhere.\n    void SCN_CALLTIPCLICK(int direction);\n\n    //! This signal is emitted whenever the user enters an ordinary character\n    //! into the text.\n    //! \\a charadded is the character. It can be used to decide to display a\n    //! call tip or an auto-completion list.\n    void SCN_CHARADDED(int charadded);\n\n    //! This signal is emitted when the user double clicks.\n    //! \\a position is the position in the text where the click occured.\n    //! \\a line is the number of the line in the text where the click occured.\n    //! \\a modifiers is the logical or of the modifier keys that were pressed\n    //! when the user double clicked.\n    void SCN_DOUBLECLICK(int position, int line, int modifiers);\n\n    //!\n    void SCN_DWELLEND(int, int, int);\n\n    //!\n    void SCN_DWELLSTART(int, int, int);\n\n    //! This signal is emitted when focus is received.\n    void SCN_FOCUSIN();\n\n    //! This signal is emitted when focus is lost.\n    void SCN_FOCUSOUT();\n\n    //! This signal is emitted when the user clicks on text in a style with the\n    //! hotspot attribute set.\n    //! \\a position is the position in the text where the click occured.\n    //! \\a modifiers is the logical or of the modifier keys that were pressed\n    //! when the user clicked.\n    void SCN_HOTSPOTCLICK(int position, int modifiers);\n\n    //! This signal is emitted when the user double clicks on text in a style\n    //! with the hotspot attribute set.\n    //! \\a position is the position in the text where the double click occured.\n    //! \\a modifiers is the logical or of the modifier keys that were pressed\n    //! when the user double clicked.\n    void SCN_HOTSPOTDOUBLECLICK(int position, int modifiers);\n\n    //! This signal is emitted when the user releases the mouse button on text\n    //! in a style with the hotspot attribute set.\n    //! \\a position is the position in the text where the release occured.\n    //! \\a modifiers is the logical or of the modifier keys that were pressed\n    //! when the user released the button.\n    void SCN_HOTSPOTRELEASECLICK(int position, int modifiers);\n\n    //! This signal is emitted when the user clicks on text that has an\n    //! indicator.\n    //! \\a position is the position in the text where the click occured.\n    //! \\a modifiers is the logical or of the modifier keys that were pressed\n    //! when the user clicked.\n    void SCN_INDICATORCLICK(int position, int modifiers);\n\n    //! This signal is emitted when the user releases the mouse button on text\n    //! that has an indicator.\n    //! \\a position is the position in the text where the release occured.\n    //! \\a modifiers is the logical or of the modifier keys that were pressed\n    //! when the user released.\n    void SCN_INDICATORRELEASE(int position, int modifiers);\n\n    //! This signal is emitted when a recordable editor command has been\n    //! executed.\n    void SCN_MACRORECORD(unsigned int, unsigned long, void *);\n\n    //! This signal is emitted when the user clicks on a sensitive margin.\n    //! \\a position is the position of the start of the line against which the\n    //! user clicked.\n    //! \\a modifiers is the logical or of the modifier keys that were pressed\n    //! when the user clicked.\n    //! \\a margin is the number of the margin the user clicked in: 0, 1 or 2.\n    //! \n    //! \\sa SCI_GETMARGINSENSITIVEN, SCI_SETMARGINSENSITIVEN\n    void SCN_MARGINCLICK(int position, int modifiers, int margin);\n\n    //! This signal is emitted when the user right-clicks on a sensitive\n    //! margin.  \\a position is the position of the start of the line against\n    //! which the user clicked.\n    //! \\a modifiers is the logical or of the modifier keys that were pressed\n    //! when the user clicked.\n    //! \\a margin is the number of the margin the user clicked in: 0, 1 or 2.\n    //! \n    //! \\sa SCI_GETMARGINSENSITIVEN, SCI_SETMARGINSENSITIVEN\n    void SCN_MARGINRIGHTCLICK(int position, int modifiers, int margin);\n\n    //!\n    void SCN_MODIFIED(int, int, const char *, int, int, int, int, int, int, int);\n\n    //! This signal is emitted when the user attempts to modify read-only\n    //! text.\n    void SCN_MODIFYATTEMPTRO();\n\n    //!\n    void SCN_NEEDSHOWN(int, int);\n\n    //! This signal is emitted when painting has been completed.  It is useful\n    //! to trigger some other change but to have the paint be done first to\n    //! appear more reponsive to the user.\n    void SCN_PAINTED();\n\n    //! This signal is emitted when the current state of the text no longer\n    //! corresponds to the state of the text at the save point.\n    //! \n    //! \\sa SCI_SETSAVEPOINT, SCN_SAVEPOINTREACHED()\n    void SCN_SAVEPOINTLEFT();\n\n    //! This signal is emitted when the current state of the text corresponds\n    //! to the state of the text at the save point. This allows feedback to be\n    //! given to the user as to whether the text has been modified since it was\n    //! last saved.\n    //! \n    //! \\sa SCI_SETSAVEPOINT, SCN_SAVEPOINTLEFT()\n    void SCN_SAVEPOINTREACHED();\n\n    //! This signal is emitted when a range of text needs to be syntax styled.\n    //! The range is from the value returned by the SCI_GETENDSTYLED message\n    //! and \\a position.  It is only emitted if the currently selected lexer is\n    //! SCLEX_CONTAINER.\n    //!\n    //! \\sa SCI_COLOURISE, SCI_GETENDSTYLED\n    void SCN_STYLENEEDED(int position);\n\n    //! This signal is emitted when either the text or styling of the text has\n    //! changed or the selection range or scroll position has changed.\n    //! \\a updated contains the set of SC_UPDATE_* flags describing the changes\n    //! since the signal was last emitted.\n    void SCN_UPDATEUI(int updated);\n\n    //!\n    void SCN_USERLISTSELECTION(const char *, int, int, int);\n\n    //! \\overload\n    void SCN_USERLISTSELECTION(const char *, int);\n\n    //!\n    void SCN_ZOOM();\n\nprotected:\n    //! Returns true if the contents of a MIME data object can be decoded and\n    //! inserted into the document.  It is called during drag and paste\n    //! operations.\n    //! \\a source is the MIME data object.\n    //!\n    //! \\sa fromMimeData(), toMimeData()\n    virtual bool canInsertFromMimeData(const QMimeData *source) const;\n\n    //! Returns the text of a MIME data object.  It is called when a drag and\n    //! drop is completed and when text is pasted from the clipboard.\n    //! \\a source is the MIME data object.  On return \\a rectangular is set if\n    //! the text corresponds to a rectangular selection.\n    //!\n    //! \\sa canInsertFromMimeData(), toMimeData()\n    virtual QByteArray fromMimeData(const QMimeData *source, bool &rectangular) const;\n\n    //! Returns a new MIME data object containing some text and whether it\n    //! corresponds to a rectangular selection.  It is called when a drag and\n    //! drop is started and when the selection is copied to the clipboard.\n    //! Ownership of the object is passed to the caller.  \\a text is the text.\n    //! \\a rectangular is set if the text corresponds to a rectangular\n    //! selection.\n    //!\n    //! \\sa canInsertFromMimeData(), fromMimeData()\n    virtual QMimeData *toMimeData(const QByteArray &text, bool rectangular) const;\n\n    //! Re-implemented to handle the context menu.\n    virtual void contextMenuEvent(QContextMenuEvent *e);\n\n    //! Re-implemented to handle drag enters.\n    virtual void dragEnterEvent(QDragEnterEvent *e);\n\n    //! Re-implemented to handle drag leaves.\n    virtual void dragLeaveEvent(QDragLeaveEvent *e);\n\n    //! Re-implemented to handle drag moves.\n    virtual void dragMoveEvent(QDragMoveEvent *e);\n\n    //! Re-implemented to handle drops.\n    virtual void dropEvent(QDropEvent *e);\n\n    //! Re-implemented to tell Scintilla it has the focus.\n    virtual void focusInEvent(QFocusEvent *e);\n\n    //! Re-implemented to tell Scintilla it has lost the focus.\n    virtual void focusOutEvent(QFocusEvent *e);\n\n    //! Re-implemented to allow tabs to be entered as text.\n    virtual bool focusNextPrevChild(bool next);\n\n    //! Re-implemented to handle key presses.\n    virtual void keyPressEvent(QKeyEvent *e);\n\n    //! Re-implemented to handle composed characters.\n    virtual void inputMethodEvent(QInputMethodEvent *event);\n    virtual QVariant inputMethodQuery(Qt::InputMethodQuery query) const;\n\n    //! Re-implemented to handle mouse double-clicks.\n    virtual void mouseDoubleClickEvent(QMouseEvent *e);\n\n    //! Re-implemented to handle mouse moves.\n    virtual void mouseMoveEvent(QMouseEvent *e);\n\n    //! Re-implemented to handle mouse presses.\n    virtual void mousePressEvent(QMouseEvent *e);\n\n    //! Re-implemented to handle mouse releases.\n    virtual void mouseReleaseEvent(QMouseEvent *e);\n\n    //! Re-implemented to paint the viewport.\n    virtual void paintEvent(QPaintEvent *e);\n\n    //! Re-implemented to handle resizes.\n    virtual void resizeEvent(QResizeEvent *e);\n\n    //! \\internal Re-implemented to handle scrolling.\n    virtual void scrollContentsBy(int dx, int dy);\n\n    //! \\internal This helps to work around some Scintilla bugs.\n    void setScrollBars();\n\n    //! \\internal Qt4, Qt5 portability.\n    typedef QByteArray ScintillaBytes;\n\n#define ScintillaBytesConstData(b)  (b).constData()\n\n    //! \\internal Convert a QString to encoded bytes.\n    ScintillaBytes textAsBytes(const QString &text) const;\n\n    //! \\internal Convert encoded bytes to a QString.\n    QString bytesAsText(const char *bytes) const;\n\nprivate slots:\n    void handleVSb(int value);\n    void handleHSb(int value);\n    void handleSelection();\n\nprivate:\n    // This is needed to allow QsciScintillaQt to emit this class's signals.\n    friend class QsciScintillaQt;\n\n    QsciScintillaQt *sci;\n    QPoint triple_click_at;\n    QTimer triple_click;\n    int preeditPos;\n    int preeditNrBytes;\n    QString preeditString;\n#if QT_VERSION >= 0x050000\n    bool clickCausedFocus;\n#endif\n\n    void connectHorizontalScrollBar();\n    void connectVerticalScrollBar();\n\n    void acceptAction(QDropEvent *e);\n\n    QsciScintillaBase(const QsciScintillaBase &);\n    QsciScintillaBase &operator=(const QsciScintillaBase &);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscistyle.h",
    "content": "// This module defines interface to the QsciStyle class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCISTYLE_H\n#define QSCISTYLE_H\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qstring.h>\n\n#include <Qsci/qsciglobal.h>\n\n\nclass QsciScintillaBase;\n\n\n//! \\brief The QsciStyle class encapsulates all the attributes of a style.\n//!\n//! Each character of a document has an associated style which determines how\n//! the character is displayed, e.g. its font and color.  A style is identified\n//! by a number.  Lexers define styles for each of the language's features so\n//! that they are displayed differently.  Some style numbers have hard-coded\n//! meanings, e.g. the style used for call tips.\nclass QSCINTILLA_EXPORT QsciStyle\n{\npublic:\n    //! This enum defines the different ways the displayed case of the text can\n    //! be changed.\n    enum TextCase {\n        //! The text is displayed as its original case.\n        OriginalCase = 0,\n\n        //! The text is displayed as upper case.\n        UpperCase = 1,\n\n        //! The text is displayed as lower case.\n        LowerCase = 2\n    };\n\n    //! Constructs a QsciStyle instance for style number \\a style.  If \\a style\n    //! is negative then a new style number is automatically allocated.\n    QsciStyle(int style = -1);\n\n    //! Constructs a QsciStyle instance for style number \\a style.  If \\a style\n    //! is negative then a new style number is automatically allocated.  The\n    //! styles description, color, paper color, font and end-of-line fill are\n    //! set to \\a description, \\a color, \\a paper, \\a font and \\a eolFill\n    //! respectively.\n    QsciStyle(int style, const QString &description, const QColor &color,\n            const QColor &paper, const QFont &font, bool eolFill = false);\n\n    //! \\internal Apply the style to a particular editor.\n    void apply(QsciScintillaBase *sci) const;\n\n    //! Returns the number of the style.\n    int style() const {return style_nr;}\n\n    //! The style's description is set to \\a description.\n    //!\n    //! \\sa description()\n    void setDescription(const QString &description) {style_description = description;}\n\n    //! Returns the style's description.\n    //!\n    //! \\sa setDescription()\n    QString description() const {return style_description;}\n\n    //! The style's foreground color is set to \\a color.  The default is taken\n    //! from the application's default palette.\n    //!\n    //! \\sa color()\n    void setColor(const QColor &color);\n\n    //! Returns the style's foreground color.\n    //!\n    //! \\sa setColor()\n    QColor color() const {return style_color;}\n\n    //! The style's background color is set to \\a paper.  The default is taken\n    //! from the application's default palette.\n    //!\n    //! \\sa paper()\n    void setPaper(const QColor &paper);\n\n    //! Returns the style's background color.\n    //!\n    //! \\sa setPaper()\n    QColor paper() const {return style_paper;}\n\n    //! The style's font is set to \\a font.  The default is the application's\n    //! default font.\n    //!\n    //! \\sa font()\n    void setFont(const QFont &font);\n\n    //! Returns the style's font.\n    //!\n    //! \\sa setFont()\n    QFont font() const {return style_font;}\n\n    //! The style's end-of-line fill is set to \\a fill.  The default is false.\n    //!\n    //! \\sa eolFill()\n    void setEolFill(bool fill);\n\n    //! Returns the style's end-of-line fill.\n    //!\n    //! \\sa setEolFill()\n    bool eolFill() const {return style_eol_fill;}\n\n    //! The style's text case is set to \\a text_case.  The default is\n    //! OriginalCase.\n    //!\n    //! \\sa textCase()\n    void setTextCase(TextCase text_case);\n\n    //! Returns the style's text case.\n    //!\n    //! \\sa setTextCase()\n    TextCase textCase() const {return style_case;}\n\n    //! The style's visibility is set to \\a visible.  The default is true.\n    //!\n    //! \\sa visible()\n    void setVisible(bool visible);\n\n    //! Returns the style's visibility.\n    //!\n    //! \\sa setVisible()\n    bool visible() const {return style_visible;}\n\n    //! The style's changeability is set to \\a changeable.  The default is\n    //! true.\n    //!\n    //! \\sa changeable()\n    void setChangeable(bool changeable);\n\n    //! Returns the style's changeability.\n    //!\n    //! \\sa setChangeable()\n    bool changeable() const {return style_changeable;}\n\n    //! The style's sensitivity to mouse clicks is set to \\a hotspot.  The\n    //! default is false.\n    //!\n    //! \\sa hotspot()\n    void setHotspot(bool hotspot);\n\n    //! Returns the style's sensitivity to mouse clicks.\n    //!\n    //! \\sa setHotspot()\n    bool hotspot() const {return style_hotspot;}\n\n    //! Refresh the style settings.\n    void refresh();\n\nprivate:\n    int style_nr;\n    QString style_description;\n    QColor style_color;\n    QColor style_paper;\n    QFont style_font;\n    bool style_eol_fill;\n    TextCase style_case;\n    bool style_visible;\n    bool style_changeable;\n    bool style_hotspot;\n\n    void init(int style);\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/Qsci/qscistyledtext.h",
    "content": "// This module defines interface to the QsciStyledText class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef QSCISTYLEDTEXT_H\n#define QSCISTYLEDTEXT_H\n\n#include <qstring.h>\n\n#include <Qsci/qsciglobal.h>\n\n\nclass QsciScintillaBase;\nclass QsciStyle;\n\n\n//! \\brief The QsciStyledText class is a container for a piece of text and the\n//! style used to display the text.\nclass QSCINTILLA_EXPORT QsciStyledText\n{\npublic:\n    //! Constructs a QsciStyledText instance for text \\a text and style number\n    //! \\a style.\n    QsciStyledText(const QString &text, int style);\n\n    //! Constructs a QsciStyledText instance for text \\a text and style \\a\n    //! style.\n    QsciStyledText(const QString &text, const QsciStyle &style);\n\n    //! \\internal Apply the style to a particular editor.\n    void apply(QsciScintillaBase *sci) const;\n\n    //! Returns a reference to the text.\n    const QString &text() const {return styled_text;}\n\n    //! Returns the number of the style.\n    int style() const;\n\nprivate:\n    QString styled_text;\n    int style_nr;\n    const QsciStyle *explicit_style;\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/SciClasses.cpp",
    "content": "// The implementation of various Qt version independent classes used by the\n// rest of the port.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"SciNamespace.h\"\n#include \"SciClasses.h\"\n\n#include <QCoreApplication>\n#include <QKeyEvent>\n#include <QListWidgetItem>\n#include <QMouseEvent>\n#include <QPainter>\n#include <QPaintEvent>\n\n#include \"ScintillaQt.h\"\n#include \"ListBoxQt.h\"\n\n\n// Create a call tip.\nQsciSciCallTip::QsciSciCallTip(QWidget *parent, QsciScintillaQt *sci_)\n    : QWidget(parent, Qt::WindowFlags(Qt::Popup|Qt::FramelessWindowHint|Qt::WA_StaticContents)),\n      sci(sci_)\n{\n    // Ensure that the main window keeps the focus (and the caret flashing)\n    // when this is displayed.\n    setFocusProxy(parent);\n}\n\n\n// Destroy a call tip.\nQsciSciCallTip::~QsciSciCallTip()\n{\n    // Ensure that the main window doesn't receive a focus out event when\n    // this is destroyed.\n    setFocusProxy(0);\n}\n\n\n// Paint a call tip.\nvoid QsciSciCallTip::paintEvent(QPaintEvent *)\n{\n    QSCI_SCI_NAMESPACE(Surface) *surfaceWindow = QSCI_SCI_NAMESPACE(Surface)::Allocate(SC_TECHNOLOGY_DEFAULT);\n\n    if (!surfaceWindow)\n        return;\n\n    QPainter p(this);\n\n    surfaceWindow->Init(&p);\n    surfaceWindow->SetUnicodeMode(sci->CodePage() == SC_CP_UTF8);\n    sci->ct.PaintCT(surfaceWindow);\n\n    delete surfaceWindow;\n}\n\n\n// Handle a mouse press in a call tip.\nvoid QsciSciCallTip::mousePressEvent(QMouseEvent *e)\n{\n    QSCI_SCI_NAMESPACE(Point) pt;\n\n    pt.x = e->x();\n    pt.y = e->y();\n\n    sci->ct.MouseClick(pt);\n    sci->CallTipClick();\n\n    update();\n}\n\n\n// Create the popup instance.\nQsciSciPopup::QsciSciPopup()\n{\n    // Set up the mapper.\n    connect(&mapper, SIGNAL(mapped(int)), this, SLOT(on_triggered(int)));\n}\n\n\n// Add an item and associated command to the popup and enable it if required.\nvoid QsciSciPopup::addItem(const QString &label, int cmd, bool enabled,\n        QsciScintillaQt *sci_)\n{\n    QAction *act = addAction(label, &mapper, SLOT(map()));\n    mapper.setMapping(act, cmd);\n    act->setEnabled(enabled);\n    sci = sci_;\n}\n\n\n// A slot to handle a menu action being triggered.\nvoid QsciSciPopup::on_triggered(int cmd)\n{\n    sci->Command(cmd);\n}\n\n\nQsciSciListBox::QsciSciListBox(QWidget *parent, QsciListBoxQt *lbx_)\n    : QListWidget(parent), lbx(lbx_)\n{\n    setAttribute(Qt::WA_StaticContents);\n\n#if defined(Q_OS_WIN)\n    setWindowFlags(Qt::Tool|Qt::FramelessWindowHint);\n\n    // This stops the main widget losing focus when the user clicks on this one\n    // (which prevents this one being destroyed).\n    setFocusPolicy(Qt::NoFocus);\n#else\n    // This is the root of the focus problems under Gnome's window manager.  We\n    // have tried many flag combinations in the past.  The consensus now seems\n    // to be that the following works.  However it might now work because of a\n    // change in Qt so we only enable it for recent versions in order to\n    // reduce the risk of breaking something that works with earlier versions.\n#if QT_VERSION >= 0x040500\n    setWindowFlags(Qt::ToolTip|Qt::WindowStaysOnTopHint);\n#else\n    setWindowFlags(Qt::Tool|Qt::FramelessWindowHint);\n#endif\n\n    // This may not be needed.\n    setFocusProxy(parent);\n#endif\n\n    setFrameShape(StyledPanel);\n    setFrameShadow(Plain);\n\n    connect(this, SIGNAL(itemDoubleClicked(QListWidgetItem *)),\n            SLOT(handleSelection()));\n}\n\n\nvoid QsciSciListBox::addItemPixmap(const QPixmap &pm, const QString &txt)\n{\n    new QListWidgetItem(pm, txt, this);\n}\n\n\nint QsciSciListBox::find(const QString &prefix)\n{\n    QList<QListWidgetItem *> itms = findItems(prefix,\n            Qt::MatchStartsWith|Qt::MatchCaseSensitive);\n\n    if (itms.size() == 0)\n        return -1;\n\n    return row(itms[0]);\n}\n\n\nQString QsciSciListBox::text(int n)\n{\n    QListWidgetItem *itm = item(n);\n\n    if (!itm)\n        return QString();\n\n    return itm->text();\n}\n\n\n// Reimplemented to close the list when the user presses Escape.\nvoid QsciSciListBox::keyPressEvent(QKeyEvent *e)\n{\n    if (e->key() == Qt::Key_Escape)\n    {\n        e->accept();\n        close();\n    }\n    else\n    {\n        QListWidget::keyPressEvent(e);\n\n        if (!e->isAccepted())\n            QCoreApplication::sendEvent(parent(), e);\n    }\n}\n\n\nQsciSciListBox::~QsciSciListBox()\n{\n    // Ensure that the main widget doesn't get a focus out event when this is\n    // destroyed.\n    setFocusProxy(0);\n}\n\n\nvoid QsciSciListBox::handleSelection()\n{\n    if (lbx && lbx->cb_action)\n        lbx->cb_action(lbx->cb_data);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/SciClasses.h",
    "content": "// The definition of various Qt version independent classes used by the rest of\n// the port.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef _SCICLASSES_H\n#define _SCICLASSES_H\n\n#include <QListWidget>\n#include <QMenu>\n#include <QSignalMapper>\n#include <QWidget>\n\n#include <Qsci/qsciglobal.h>\n\n\nclass QsciScintillaQt;\nclass QsciListBoxQt;\n\n\n// A simple QWidget sub-class to implement a call tip.  This is not put into\n// the Scintilla namespace because of moc's problems with preprocessor macros.\nclass QsciSciCallTip : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    QsciSciCallTip(QWidget *parent, QsciScintillaQt *sci_);\n    ~QsciSciCallTip();\n\nprotected:\n    void paintEvent(QPaintEvent *e);\n    void mousePressEvent(QMouseEvent *e);\n\nprivate:\n    QsciScintillaQt *sci;\n};\n\n\n// A popup menu where options correspond to a numeric command.  This is not put\n// into the Scintilla namespace because of moc's problems with preprocessor\n// macros.\nclass QsciSciPopup : public QMenu\n{\n    Q_OBJECT\n\npublic:\n    QsciSciPopup();\n\n    void addItem(const QString &label, int cmd, bool enabled,\n            QsciScintillaQt *sci_);\n\nprivate slots:\n    void on_triggered(int cmd);\n\nprivate:\n    QsciScintillaQt *sci;\n    QSignalMapper mapper;\n};\n\n\n// This sub-class of QListBox is needed to provide slots from which we can call\n// QsciListBox's double-click callback (and you thought this was a C++\n// program).  This is not put into the Scintilla namespace because of moc's\n// problems with preprocessor macros.\nclass QsciSciListBox : public QListWidget\n{\n    Q_OBJECT\n\npublic:\n    QsciSciListBox(QWidget *parent, QsciListBoxQt *lbx_);\n    virtual ~QsciSciListBox();\n\n    void addItemPixmap(const QPixmap &pm, const QString &txt);\n\n    int find(const QString &prefix);\n    QString text(int n);\n\nprotected:\n    void keyPressEvent(QKeyEvent *e);\n\nprivate slots:\n    void handleSelection();\n\nprivate:\n    QsciListBoxQt *lbx;\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/SciNamespace.h",
    "content": "// Support for building the Scintilla code in the Scintilla namespace using the\n// -DSCI_NAMESPACE compiler flag.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef _SCINAMESPACE_H\n#define _SCINAMESPACE_H\n\n#ifdef SCI_NAMESPACE\n#define QSCI_SCI_NAMESPACE(name)    Scintilla::name\n#define QSCI_BEGIN_SCI_NAMESPACE    namespace Scintilla {\n#define QSCI_END_SCI_NAMESPACE      };\n#else\n#define QSCI_SCI_NAMESPACE(name)    name\n#define QSCI_BEGIN_SCI_NAMESPACE\n#define QSCI_END_SCI_NAMESPACE\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/ScintillaQt.cpp",
    "content": "// The implementation of the Qt specific subclass of ScintillaBase.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include <string.h>\n\n#include <qapplication.h>\n#include <qbytearray.h>\n#include <qdrag.h>\n#include <qevent.h>\n#include <qmimedata.h>\n#include <qpainter.h>\n#include <qscrollbar.h>\n#include <qstring.h>\n\n#include \"Qsci/qsciscintillabase.h\"\n#include \"ScintillaQt.h\"\n#include \"SciClasses.h\"\n\n\n// We want to use the Scintilla notification names as Qt signal names.\n#undef  SCEN_CHANGE\n#undef  SCN_AUTOCCANCELLED\n#undef  SCN_AUTOCCHARDELETED\n#undef  SCN_AUTOCCOMPLETED\n#undef  SCN_AUTOCSELECTION\n#undef  SCN_CALLTIPCLICK\n#undef  SCN_CHARADDED\n#undef  SCN_DOUBLECLICK\n#undef  SCN_DWELLEND\n#undef  SCN_DWELLSTART\n#undef  SCN_FOCUSIN\n#undef  SCN_FOCUSOUT\n#undef  SCN_HOTSPOTCLICK\n#undef  SCN_HOTSPOTDOUBLECLICK\n#undef  SCN_HOTSPOTRELEASECLICK\n#undef  SCN_INDICATORCLICK\n#undef  SCN_INDICATORRELEASE\n#undef  SCN_MACRORECORD\n#undef  SCN_MARGINCLICK\n#undef  SCN_MARGINRIGHTCLICK\n#undef  SCN_MODIFIED\n#undef  SCN_MODIFYATTEMPTRO\n#undef  SCN_NEEDSHOWN\n#undef  SCN_PAINTED\n#undef  SCN_SAVEPOINTLEFT\n#undef  SCN_SAVEPOINTREACHED\n#undef  SCN_STYLENEEDED\n#undef  SCN_UPDATEUI\n#undef  SCN_USERLISTSELECTION\n#undef  SCN_ZOOM\n\nenum\n{\n    SCEN_CHANGE = 768,\n    SCN_AUTOCCANCELLED = 2025,\n    SCN_AUTOCCHARDELETED = 2026,\n    SCN_AUTOCCOMPLETED = 2030,\n    SCN_AUTOCSELECTION = 2022,\n    SCN_CALLTIPCLICK = 2021,\n    SCN_CHARADDED = 2001,\n    SCN_DOUBLECLICK = 2006,\n    SCN_DWELLEND = 2017,\n    SCN_DWELLSTART = 2016,\n    SCN_FOCUSIN = 2028,\n    SCN_FOCUSOUT = 2029,\n    SCN_HOTSPOTCLICK = 2019,\n    SCN_HOTSPOTDOUBLECLICK = 2020,\n    SCN_HOTSPOTRELEASECLICK = 2027,\n    SCN_INDICATORCLICK = 2023,\n    SCN_INDICATORRELEASE = 2024,\n    SCN_MACRORECORD = 2009,\n    SCN_MARGINCLICK = 2010,\n    SCN_MARGINRIGHTCLICK = 2031,\n    SCN_MODIFIED = 2008,\n    SCN_MODIFYATTEMPTRO = 2004,\n    SCN_NEEDSHOWN = 2011,\n    SCN_PAINTED = 2013,\n    SCN_SAVEPOINTLEFT = 2003,\n    SCN_SAVEPOINTREACHED = 2002,\n    SCN_STYLENEEDED = 2000,\n    SCN_UPDATEUI = 2007,\n    SCN_USERLISTSELECTION = 2014,\n    SCN_ZOOM = 2018\n};\n\n\n// The ctor.\nQsciScintillaQt::QsciScintillaQt(QsciScintillaBase *qsb_)\n    : vMax(0), hMax(0), vPage(0), hPage(0), capturedMouse(false), qsb(qsb_)\n{\n    wMain = qsb->viewport();\n\n    // This is ignored.\n    imeInteraction = imeInline;\n\n    for (int i = 0; i <= static_cast<int>(tickPlatform); ++i)\n        timers[i] = 0;\n\n    Initialise();\n}\n\n\n// The dtor.\nQsciScintillaQt::~QsciScintillaQt()\n{ \n    Finalise();\n}\n\n\n// Initialise the instance.\nvoid QsciScintillaQt::Initialise()\n{\n}\n\n\n// Tidy up the instance.\nvoid QsciScintillaQt::Finalise()\n{\n    for (int i = 0; i <= static_cast<int>(tickPlatform); ++i)\n        FineTickerCancel(static_cast<TickReason>(i));\n\n    ScintillaBase::Finalise();\n}\n\n\n// Start a drag.\nvoid QsciScintillaQt::StartDrag()\n{\n    inDragDrop = ddDragging;\n\n    QDrag *qdrag = new QDrag(qsb);\n    qdrag->setMimeData(mimeSelection(drag));\n\n#if QT_VERSION >= 0x040300\n    Qt::DropAction action = qdrag->exec(Qt::MoveAction | Qt::CopyAction, Qt::MoveAction);\n#else\n    Qt::DropAction action = qdrag->start(Qt::MoveAction);\n#endif\n\n    // Remove the dragged text if it was a move to another widget or\n    // application.\n    if (action == Qt::MoveAction && qdrag->target() != qsb->viewport())\n        ClearSelection();\n\n    SetDragPosition(QSCI_SCI_NAMESPACE(SelectionPosition)());\n    inDragDrop = ddNone;\n}\n\n\n// Re-implement to trap certain messages.\nsptr_t QsciScintillaQt::WndProc(unsigned int iMessage, uptr_t wParam,\n        sptr_t lParam)\n{\n    switch (iMessage)\n    {\n    case SCI_GETDIRECTFUNCTION:\n        return reinterpret_cast<sptr_t>(DirectFunction);\n    \n    case SCI_GETDIRECTPOINTER:\n        return reinterpret_cast<sptr_t>(this);\n    }\n\n    return ScintillaBase::WndProc(iMessage, wParam, lParam);\n}\n\n\n// Windows nonsense.\nsptr_t QsciScintillaQt::DefWndProc(unsigned int, uptr_t, sptr_t)\n{\n    return 0;\n}\n\n\n// Grab or release the mouse (and keyboard).\nvoid QsciScintillaQt::SetMouseCapture(bool on)\n{\n    if (mouseDownCaptures)\n        if (on)\n            qsb->viewport()->grabMouse();\n        else\n            qsb->viewport()->releaseMouse();\n\n    capturedMouse = on;\n}\n\n\n// Return true if the mouse/keyboard are currently grabbed.\nbool QsciScintillaQt::HaveMouseCapture()\n{\n    return capturedMouse;\n}\n\n\n// Set the position of the vertical scrollbar.\nvoid QsciScintillaQt::SetVerticalScrollPos()\n{\n    QScrollBar *sb = qsb->verticalScrollBar();\n    bool was_blocked = sb->blockSignals(true);\n\n    sb->setValue(topLine);\n\n    sb->blockSignals(was_blocked);\n}\n\n\n// Set the position of the horizontal scrollbar.\nvoid QsciScintillaQt::SetHorizontalScrollPos()\n{\n    QScrollBar *sb = qsb->horizontalScrollBar();\n    bool was_blocked = sb->blockSignals(true);\n\n    sb->setValue(xOffset);\n\n    sb->blockSignals(was_blocked);\n}\n\n\n// Set the extent of the vertical and horizontal scrollbars and return true if\n// the view needs re-drawing.\nbool QsciScintillaQt::ModifyScrollBars(int nMax,int nPage)\n{\n    bool modified = false;\n    QScrollBar *sb;\n\n    int vNewPage = nPage;\n    int vNewMax = nMax - vNewPage + 1;\n\n    if (vMax != vNewMax || vPage != vNewPage)\n    {\n        vMax = vNewMax;\n        vPage = vNewPage;\n        modified = true;\n\n        sb = qsb->verticalScrollBar();\n        sb->setMaximum(vMax);\n        sb->setPageStep(vPage);\n    }\n\n    int hNewPage = GetTextRectangle().Width();\n    int hNewMax = (scrollWidth > hNewPage) ? scrollWidth - hNewPage : 0;\n    int charWidth = vs.styles[STYLE_DEFAULT].aveCharWidth;\n\n    sb = qsb->horizontalScrollBar();\n\n    if (hMax != hNewMax || hPage != hNewPage || sb->singleStep() != charWidth)\n    {\n        hMax = hNewMax;\n        hPage = hNewPage;\n        modified = true;\n\n        sb->setMaximum(hMax);\n        sb->setPageStep(hPage);\n        sb->setSingleStep(charWidth);\n    }\n\n    return modified;\n}\n\n\n// Called after SCI_SETWRAPMODE and SCI_SETHSCROLLBAR.\nvoid QsciScintillaQt::ReconfigureScrollBars()\n{\n    // Hide or show the scrollbars if needed.\n    bool hsb = (horizontalScrollBarVisible && !Wrapping());\n\n    qsb->setHorizontalScrollBarPolicy(hsb ? Qt::ScrollBarAsNeeded : Qt::ScrollBarAlwaysOff);\n    qsb->setVerticalScrollBarPolicy(verticalScrollBarVisible ? Qt::ScrollBarAsNeeded : Qt::ScrollBarAlwaysOff);\n}\n\n\n// Notify interested parties of any change in the document.\nvoid QsciScintillaQt::NotifyChange()\n{\n    emit qsb->SCEN_CHANGE();\n}\n\n\n// Notify interested parties of various events.  This is the main mapping\n// between Scintilla notifications and Qt signals.\nvoid QsciScintillaQt::NotifyParent(SCNotification scn)\n{\n    switch (scn.nmhdr.code)\n    {\n    case SCN_CALLTIPCLICK:\n        emit qsb->SCN_CALLTIPCLICK(scn.position);\n        break;\n\n    case SCN_AUTOCCANCELLED:\n        emit qsb->SCN_AUTOCCANCELLED();\n        break;\n\n    case SCN_AUTOCCHARDELETED:\n        emit qsb->SCN_AUTOCCHARDELETED();\n        break;\n\n    case SCN_AUTOCCOMPLETED:\n        emit qsb->SCN_AUTOCCOMPLETED(scn.text, scn.lParam, scn.ch,\n                scn.listCompletionMethod);\n        break;\n\n    case SCN_AUTOCSELECTION:\n        emit qsb->SCN_AUTOCSELECTION(scn.text, scn.lParam, scn.ch,\n                scn.listCompletionMethod);\n        emit qsb->SCN_AUTOCSELECTION(scn.text, scn.lParam);\n        break;\n\n    case SCN_CHARADDED:\n        emit qsb->SCN_CHARADDED(scn.ch);\n        break;\n\n    case SCN_DOUBLECLICK:\n        emit qsb->SCN_DOUBLECLICK(scn.position, scn.line, scn.modifiers);\n        break;\n\n    case SCN_DWELLEND:\n        emit qsb->SCN_DWELLEND(scn.position, scn.x, scn.y);\n        break;\n\n    case SCN_DWELLSTART:\n        emit qsb->SCN_DWELLSTART(scn.position, scn.x, scn.y);\n        break;\n\n    case SCN_FOCUSIN:\n        emit qsb->SCN_FOCUSIN();\n        break;\n\n    case SCN_FOCUSOUT:\n        emit qsb->SCN_FOCUSOUT();\n        break;\n\n    case SCN_HOTSPOTCLICK:\n        emit qsb->SCN_HOTSPOTCLICK(scn.position, scn.modifiers);\n        break;\n\n    case SCN_HOTSPOTDOUBLECLICK:\n        emit qsb->SCN_HOTSPOTDOUBLECLICK(scn.position, scn.modifiers);\n        break;\n\n    case SCN_HOTSPOTRELEASECLICK:\n        emit qsb->SCN_HOTSPOTRELEASECLICK(scn.position, scn.modifiers);\n        break;\n\n    case SCN_INDICATORCLICK:\n        emit qsb->SCN_INDICATORCLICK(scn.position, scn.modifiers);\n        break;\n\n    case SCN_INDICATORRELEASE:\n        emit qsb->SCN_INDICATORRELEASE(scn.position, scn.modifiers);\n        break;\n\n    case SCN_MACRORECORD:\n        emit qsb->SCN_MACRORECORD(scn.message, scn.wParam,\n                reinterpret_cast<void *>(scn.lParam));\n        break;\n\n    case SCN_MARGINCLICK:\n        emit qsb->SCN_MARGINCLICK(scn.position, scn.modifiers, scn.margin);\n        break;\n\n    case SCN_MARGINRIGHTCLICK:\n        emit qsb->SCN_MARGINRIGHTCLICK(scn.position, scn.modifiers,\n                scn.margin);\n        break;\n\n    case SCN_MODIFIED:\n        {\n            char *text;\n\n            // Give some protection to the Python bindings.\n            if (scn.text && (scn.modificationType & (SC_MOD_INSERTTEXT|SC_MOD_DELETETEXT) != 0))\n            {\n                text = new char[scn.length + 1];\n                memcpy(text, scn.text, scn.length);\n                text[scn.length] = '\\0';\n            }\n            else\n            {\n                text = 0;\n            }\n\n            emit qsb->SCN_MODIFIED(scn.position, scn.modificationType, text,\n                    scn.length, scn.linesAdded, scn.line, scn.foldLevelNow,\n                    scn.foldLevelPrev, scn.token, scn.annotationLinesAdded);\n\n            if (text)\n                delete[] text;\n\n            break;\n        }\n\n    case SCN_MODIFYATTEMPTRO:\n        emit qsb->SCN_MODIFYATTEMPTRO();\n        break;\n\n    case SCN_NEEDSHOWN:\n        emit qsb->SCN_NEEDSHOWN(scn.position, scn.length);\n        break;\n\n    case SCN_PAINTED:\n        emit qsb->SCN_PAINTED();\n        break;\n\n    case SCN_SAVEPOINTLEFT:\n        emit qsb->SCN_SAVEPOINTLEFT();\n        break;\n\n    case SCN_SAVEPOINTREACHED:\n        emit qsb->SCN_SAVEPOINTREACHED();\n        break;\n\n    case SCN_STYLENEEDED:\n        emit qsb->SCN_STYLENEEDED(scn.position);\n        break;\n\n    case SCN_UPDATEUI:\n        emit qsb->SCN_UPDATEUI(scn.updated);\n        break;\n\n    case SCN_USERLISTSELECTION:\n        emit qsb->SCN_USERLISTSELECTION(scn.text, scn.wParam, scn.ch,\n                scn.listCompletionMethod);\n        emit qsb->SCN_USERLISTSELECTION(scn.text, scn.wParam);\n        break;\n\n    case SCN_ZOOM:\n        emit qsb->SCN_ZOOM();\n        break;\n\n    default:\n        qWarning(\"Unknown notification: %u\", scn.nmhdr.code);\n    }\n}\n\n\n// Convert a selection to mime data.\nQMimeData *QsciScintillaQt::mimeSelection(\n        const QSCI_SCI_NAMESPACE(SelectionText) &text) const\n{\n    return qsb->toMimeData(QByteArray(text.Data()), text.rectangular);\n}\n\n\n// Copy the selected text to the clipboard.\nvoid QsciScintillaQt::CopyToClipboard(\n        const QSCI_SCI_NAMESPACE(SelectionText) &selectedText)\n{\n    QApplication::clipboard()->setMimeData(mimeSelection(selectedText));\n}\n\n\n// Implement copy.\nvoid QsciScintillaQt::Copy()\n{\n    if (!sel.Empty())\n    {\n        QSCI_SCI_NAMESPACE(SelectionText) text;\n\n        CopySelectionRange(&text);\n        CopyToClipboard(text);\n    }\n}\n\n\n// Implement pasting text.\nvoid QsciScintillaQt::Paste()\n{\n    pasteFromClipboard(QClipboard::Clipboard);\n}\n\n\n// Paste text from either the clipboard or selection.\nvoid QsciScintillaQt::pasteFromClipboard(QClipboard::Mode mode)\n{\n    int len;\n    const char *s;\n    bool rectangular;\n\n    const QMimeData *source = QApplication::clipboard()->mimeData(mode);\n\n    if (!source || !qsb->canInsertFromMimeData(source))\n        return;\n\n    QByteArray text = qsb->fromMimeData(source, rectangular);\n    len = text.length();\n    s = text.data();\n\n    std::string dest = QSCI_SCI_NAMESPACE(Document)::TransformLineEnds(s, len,\n            pdoc->eolMode);\n\n    QSCI_SCI_NAMESPACE(SelectionText) selText;\n    selText.Copy(dest, (IsUnicodeMode() ? SC_CP_UTF8 : 0),\n            vs.styles[STYLE_DEFAULT].characterSet, rectangular, false);\n\n    QSCI_SCI_NAMESPACE(UndoGroup) ug(pdoc);\n\n    ClearSelection();\n    InsertPasteShape(selText.Data(), selText.Length(),\n            selText.rectangular ? pasteRectangular : pasteStream);\n    EnsureCaretVisible();\n}\n\n\n// Create a call tip window.\nvoid QsciScintillaQt::CreateCallTipWindow(QSCI_SCI_NAMESPACE(PRectangle) rc)\n{\n    if (!ct.wCallTip.Created())\n        ct.wCallTip = ct.wDraw = new QsciSciCallTip(qsb, this);\n\n    QsciSciCallTip *w = reinterpret_cast<QsciSciCallTip *>(ct.wCallTip.GetID());\n\n    w->resize(rc.right - rc.left, rc.bottom - rc.top);\n    ct.wCallTip.Show();\n}\n\n\n// Add an item to the right button menu.\nvoid QsciScintillaQt::AddToPopUp(const char *label, int cmd, bool enabled)\n{\n    QsciSciPopup *pm = static_cast<QsciSciPopup *>(popup.GetID());\n\n    if (*label)\n        pm->addItem(qApp->translate(\"ContextMenu\", label), cmd, enabled, this);\n    else\n        pm->addSeparator();\n}\n\n\n// Claim the selection.\nvoid QsciScintillaQt::ClaimSelection()\n{\n    bool isSel = !sel.Empty();\n\n    if (isSel)\n    {\n        QClipboard *cb = QApplication::clipboard();\n\n        // If we support X11 style selection then make it available now.\n        if (cb->supportsSelection())\n        {\n            QSCI_SCI_NAMESPACE(SelectionText) text;\n\n            CopySelectionRange(&text);\n\n            if (text.Data())\n                cb->setMimeData(mimeSelection(text), QClipboard::Selection);\n        }\n\n        primarySelection = true;\n    }\n    else\n        primarySelection = false;\n\n    emit qsb->QSCN_SELCHANGED(isSel);\n}\n\n\n// Unclaim the selection.\nvoid QsciScintillaQt::UnclaimSelection()\n{\n    if (primarySelection)\n    {\n        primarySelection = false;\n        qsb->viewport()->update();\n    }\n}\n\n\n// Implemented to provide compatibility with the Windows version.\nsptr_t QsciScintillaQt::DirectFunction(QsciScintillaQt *sciThis, unsigned int iMessage,\n        uptr_t wParam, sptr_t lParam)\n{\n    return sciThis->WndProc(iMessage,wParam,lParam);\n}\n\n\n// Draw the contents of the widget.\nvoid QsciScintillaQt::paintEvent(QPaintEvent *e)\n{\n    QSCI_SCI_NAMESPACE(Surface) *sw;\n\n    const QRect &qr = e->rect();\n\n    rcPaint.left = qr.left();\n    rcPaint.top = qr.top();\n    rcPaint.right = qr.right() + 1;\n    rcPaint.bottom = qr.bottom() + 1;\n\n    QSCI_SCI_NAMESPACE(PRectangle) rcClient = GetClientRectangle();\n    paintingAllText = rcPaint.Contains(rcClient);\n\n    sw = QSCI_SCI_NAMESPACE(Surface)::Allocate(SC_TECHNOLOGY_DEFAULT);\n    if (!sw)\n        return;\n\n    QPainter painter(qsb->viewport());\n\n    paintState = painting;\n    sw->Init(&painter);\n    sw->SetUnicodeMode(CodePage() == SC_CP_UTF8);\n    Paint(sw, rcPaint);\n\n    delete sw;\n\n    // If the painting area was insufficient to cover the new style or brace\n    // highlight positions then repaint the whole thing.\n    if (paintState == paintAbandoned)\n    {\n        // Do a full re-paint immediately.  This may only be needed on OS X (to\n        // avoid flicker).\n        paintingAllText = true;\n\n        sw = QSCI_SCI_NAMESPACE(Surface)::Allocate(SC_TECHNOLOGY_DEFAULT);\n        if (!sw)\n            return;\n\n        QPainter painter(qsb->viewport());\n\n        paintState = painting;\n        sw->Init(&painter);\n        sw->SetUnicodeMode(CodePage() == SC_CP_UTF8);\n        Paint(sw, rcPaint);\n\n        delete sw;\n\n        qsb->viewport()->update();\n    }\n\n    paintState = notPainting;\n}\n\n\n// Re-implemented to drive the tickers.\nvoid QsciScintillaQt::timerEvent(QTimerEvent *e)\n{\n    for (int i = 0; i <= static_cast<int>(tickPlatform); ++i)\n        if (timers[i] == e->timerId())\n            TickFor(static_cast<TickReason>(i));\n}\n\n\n// Re-implemented to say we support fine tickers.\nbool QsciScintillaQt::FineTickerAvailable()\n{\n    return true;\n}\n\n\n// Re-implemented to stop a ticker.\nvoid QsciScintillaQt::FineTickerCancel(TickReason reason)\n{\n    int &ticker = timers[static_cast<int>(reason)];\n\n    if (ticker != 0)\n    {\n        killTimer(ticker);\n        ticker = 0;\n    }\n}\n\n\n// Re-implemented to check if a particular ticker is running.\nbool QsciScintillaQt::FineTickerRunning(TickReason reason)\n{\n    return (timers[static_cast<int>(reason)] != 0);\n}\n\n\n// Re-implemented to start a ticker.\nvoid QsciScintillaQt::FineTickerStart(TickReason reason, int ms, int)\n{\n    int &ticker = timers[static_cast<int>(reason)];\n\n    if (ticker != 0)\n        killTimer(ticker);\n\n    ticker = startTimer(ms);\n}\n\n\n// Re-implemented to support idle processing.\nbool QsciScintillaQt::SetIdle(bool on)\n{\n    if (on)\n    {\n        if (!idler.state)\n        {\n            QTimer *timer = reinterpret_cast<QTimer *>(idler.idlerID);\n\n            if (!timer)\n            {\n                idler.idlerID = timer = new QTimer(this);\n                connect(timer, SIGNAL(timeout()), this, SLOT(onIdle()));\n            }\n\n            timer->start(0);\n            idler.state = true;\n        }\n    }\n    else if (idler.state)\n    {\n        reinterpret_cast<QTimer *>(idler.idlerID)->stop();\n        idler.state = false;\n    }\n\n    return true;\n}\n\n\n// Invoked to trigger any idle processing.\nvoid QsciScintillaQt::onIdle()\n{\n    if (!Idle())\n        SetIdle(false);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/ScintillaQt.h",
    "content": "// The definition of the Qt specific subclass of ScintillaBase.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#ifndef SCINTILLAQT_H\n#define\tSCINTILLAQT_H\n\n\n#include <QClipboard>\n#include <QObject>\n\n#include <Qsci/qsciglobal.h>\n\n#include \"SciNamespace.h\"\n\n// These are needed because Scintilla class header files don't manage their own\n// dependencies properly.\n#include <algorithm>\n#include <assert.h>\n#include <ctype.h>\n#include <stdexcept>\n#include <stdlib.h>\n#include <string>\n#include <map>\n#include <vector>\n#include \"ILexer.h\"\n#include \"Platform.h\"\n#include \"Scintilla.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"CellBuffer.h\"\n#include \"CharClassify.h\"\n#include \"RunStyles.h\"\n#include \"CaseFolder.h\"\n#include \"Decoration.h\"\n#include \"Document.h\"\n#include \"Style.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n#include \"Indicator.h\"\n#include \"ViewStyle.h\"\n#include \"KeyMap.h\"\n#include \"ContractionState.h\"\n#include \"Selection.h\"\n#include \"PositionCache.h\"\n#include \"EditModel.h\"\n#include \"MarginView.h\"\n#include \"EditView.h\"\n#include \"Editor.h\"\n#include \"AutoComplete.h\"\n#include \"CallTip.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n\n#include \"ScintillaBase.h\"\n\n\nQT_BEGIN_NAMESPACE\nclass QMimeData;\nclass QPaintEvent;\nQT_END_NAMESPACE\n\nclass QsciScintillaBase;\nclass QsciSciCallTip;\nclass QsciSciPopup;\n\n\n// This is an internal class but it is referenced by a public class so it has\n// to have a Qsci prefix rather than being put in the Scintilla namespace\n// which would mean exposing the SCI_NAMESPACE mechanism).\nclass QsciScintillaQt : public QObject, public QSCI_SCI_NAMESPACE(ScintillaBase)\n{\n    Q_OBJECT\n\n\tfriend class QsciScintillaBase;\n\tfriend class QsciSciCallTip;\n\tfriend class QsciSciPopup;\n\npublic:\n\tQsciScintillaQt(QsciScintillaBase *qsb_);\n\tvirtual ~QsciScintillaQt();\n\n\tvirtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam,\n            sptr_t lParam);\n\nprotected:\n    void timerEvent(QTimerEvent *e);\n\nprivate slots:\n    void onIdle();\n\nprivate:\n\tvoid Initialise();\n\tvoid Finalise();\n    bool SetIdle(bool on);\n\tvoid StartDrag();\n\tsptr_t DefWndProc(unsigned int, uptr_t, sptr_t);\n\tvoid SetMouseCapture(bool on);\n\tbool HaveMouseCapture();\n\tvoid SetVerticalScrollPos();\n\tvoid SetHorizontalScrollPos();\n\tbool ModifyScrollBars(int nMax, int nPage);\n\tvoid ReconfigureScrollBars();\n\tvoid NotifyChange();\n\tvoid NotifyParent(SCNotification scn);\n\tvoid CopyToClipboard(\n            const QSCI_SCI_NAMESPACE(SelectionText) &selectedText);\n\tvoid Copy();\n\tvoid Paste();\n\tvoid CreateCallTipWindow(QSCI_SCI_NAMESPACE(PRectangle) rc);\n\tvoid AddToPopUp(const char *label, int cmd = 0, bool enabled = true);\n\tvoid ClaimSelection();\n\tvoid UnclaimSelection();\n\tstatic sptr_t DirectFunction(QsciScintillaQt *sci, unsigned int iMessage,\n            uptr_t wParam,sptr_t lParam);\n\n\tQMimeData *mimeSelection(\n            const QSCI_SCI_NAMESPACE(SelectionText) &text) const;\n\tvoid paintEvent(QPaintEvent *e);\n    void pasteFromClipboard(QClipboard::Mode mode);\n\n    // tickPlatform is the last of the TickReason members.\n    int timers[tickPlatform + 1];\n    bool FineTickerAvailable();\n    void FineTickerCancel(TickReason reason);\n    bool FineTickerRunning(TickReason reason);\n    void FineTickerStart(TickReason reason, int ms, int tolerance);\n\n    int vMax, hMax, vPage, hPage;\n    bool capturedMouse;\n    QsciScintillaBase *qsb;\n};\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/features/qscintilla2.prf",
    "content": "greaterThan(QT_MAJOR_VERSION, 4) {\n    QT += widgets printsupport\n\n    greaterThan(QT_MINOR_VERSION, 1) {\n        macx:QT += macextras\n    }\n}\n\nDEFINES += QSCINTILLA_DLL\n\nINCLUDEPATH += $$[QT_INSTALL_HEADERS]\n\nLIBS += -L$$[QT_INSTALL_LIBS]\n\nCONFIG(debug, debug|release) {\n    mac: {\n        LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}_debug\n    } else {\n        win32: {\n            LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}d\n        } else {\n            LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}\n        }\n    }\n} else {\n    LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/features_staticlib/qscintilla2.prf",
    "content": "greaterThan(QT_MAJOR_VERSION, 4) {\n    QT += widgets printsupport\n\n    greaterThan(QT_MINOR_VERSION, 1) {\n        macx:QT += macextras\n    }\n}\n\nINCLUDEPATH += $$[QT_INSTALL_HEADERS]\n\nLIBS += -L$$[QT_INSTALL_LIBS]\n\nCONFIG(debug, debug|release) {\n    mac: {\n        LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}_debug\n    } else {\n        win32: {\n            LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}d\n        } else {\n            LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}\n        }\n    }\n} else {\n    LIBS += -lqscintilla2_qt$${QT_MAJOR_VERSION}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qsciabstractapis.cpp",
    "content": "// This module implements the QsciAbstractAPIs class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qsciabstractapis.h\"\n\n#include \"Qsci/qscilexer.h\"\n\n\n// The ctor.\nQsciAbstractAPIs::QsciAbstractAPIs(QsciLexer *lexer)\n    : QObject(lexer), lex(lexer)\n{\n    lexer->setAPIs(this);\n}\n\n\n// The dtor.\nQsciAbstractAPIs::~QsciAbstractAPIs()\n{\n}\n\n\n// Return the lexer.\nQsciLexer *QsciAbstractAPIs::lexer() const\n{\n    return lex;\n}\n\n\n// Called when the user has made a selection from the auto-completion list.\nvoid QsciAbstractAPIs::autoCompletionSelected(const QString &selection)\n{\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qsciapis.cpp",
    "content": "// This module implements the QsciAPIs class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include <stdlib.h>\n\n#include \"Qsci/qsciapis.h\"\n\n#include <QApplication>\n#include <QDataStream>\n#include <QDir>\n#include <QEvent>\n#include <QFile>\n#include <QLibraryInfo>\n#include <QMap>\n#include <QTextStream>\n#include <QThread>\n\n#include \"Qsci/qscilexer.h\"\n\n\n\n// The version number of the prepared API information format.\nconst unsigned char PreparedDataFormatVersion = 0;\n\n\n// This class contains prepared API information.\nstruct QsciAPIsPrepared\n{\n    // The word dictionary is a map of individual words and a list of positions\n    // each occurs in the sorted list of APIs.  A position is a tuple of the\n    // index into the list of APIs and the index into the particular API.\n    QMap<QString, QsciAPIs::WordIndexList> wdict;\n\n    // The case dictionary maps the case insensitive words to the form in which\n    // they are to be used.  It is only used if the language is case\n    // insensitive.\n    QMap<QString, QString> cdict;\n\n    // The raw API information.\n    QStringList raw_apis;\n\n    QStringList apiWords(int api_idx, const QStringList &wseps,\n            bool strip_image) const;\n    static QString apiBaseName(const QString &api);\n};\n\n\n// Return a particular API entry as a list of words.\nQStringList QsciAPIsPrepared::apiWords(int api_idx, const QStringList &wseps,\n        bool strip_image) const\n{\n    QString base = apiBaseName(raw_apis[api_idx]);\n\n    // Remove any embedded image reference if necessary.\n    if (strip_image)\n    {\n        int tail = base.indexOf('?');\n\n        if (tail >= 0)\n            base.truncate(tail);\n    }\n\n    if (wseps.isEmpty())\n        return QStringList(base);\n\n    return base.split(wseps.first());\n}\n\n\n// Return the name of an API function, ie. without the arguments.\nQString QsciAPIsPrepared::apiBaseName(const QString &api)\n{\n    QString base = api;\n    int tail = base.indexOf('(');\n\n    if (tail >= 0)\n        base.truncate(tail);\n\n    return base.simplified();\n}\n\n\n// The user event type that signals that the worker thread has started.\nconst QEvent::Type WorkerStarted = static_cast<QEvent::Type>(QEvent::User + 1012);\n\n\n// The user event type that signals that the worker thread has finished.\nconst QEvent::Type WorkerFinished = static_cast<QEvent::Type>(QEvent::User + 1013);\n\n\n// The user event type that signals that the worker thread has aborted.\nconst QEvent::Type WorkerAborted = static_cast<QEvent::Type>(QEvent::User + 1014);\n\n\n// This class is the worker thread that post-processes the API set.\nclass QsciAPIsWorker : public QThread\n{\npublic:\n    QsciAPIsWorker(QsciAPIs *apis);\n    virtual ~QsciAPIsWorker();\n\n    virtual void run();\n\n    QsciAPIsPrepared *prepared;\n\nprivate:\n    QsciAPIs *proxy;\n    bool abort;\n};\n\n\n// The worker thread ctor.\nQsciAPIsWorker::QsciAPIsWorker(QsciAPIs *apis)\n    : proxy(apis), prepared(0), abort(false)\n{\n}\n\n\n// The worker thread dtor.\nQsciAPIsWorker::~QsciAPIsWorker()\n{\n    // Tell the thread to stop.  There is no need to bother with a mutex.\n    abort = true;\n\n    // Wait for it to do so and hit it if it doesn't.\n    if (!wait(500))\n        terminate();\n\n    if (prepared)\n        delete prepared;\n}\n\n\n// The worker thread entry point.\nvoid QsciAPIsWorker::run()\n{\n    // Sanity check.\n    if (!prepared)\n        return;\n\n    // Tell the main thread we have started.\n    QApplication::postEvent(proxy, new QEvent(WorkerStarted));\n\n    // Sort the full list.\n    prepared->raw_apis.sort();\n\n    QStringList wseps = proxy->lexer()->autoCompletionWordSeparators();\n    bool cs = proxy->lexer()->caseSensitive();\n\n    // Split each entry into separate words but ignoring any arguments.\n    for (int a = 0; a < prepared->raw_apis.count(); ++a)\n    {\n        // Check to see if we should stop.\n        if (abort)\n            break;\n\n        QStringList words = prepared->apiWords(a, wseps, true);\n\n        for (int w = 0; w < words.count(); ++w)\n        {\n            const QString &word = words[w];\n\n            // Add the word's position to any existing list for this word.\n            QsciAPIs::WordIndexList wil = prepared->wdict[word];\n\n            // If the language is case insensitive and we haven't seen this\n            // word before then save it in the case dictionary.\n            if (!cs && wil.count() == 0)\n                prepared->cdict[word.toUpper()] = word;\n\n            wil.append(QsciAPIs::WordIndex(a, w));\n            prepared->wdict[word] = wil;\n        }\n    }\n\n    // Tell the main thread we have finished.\n    QApplication::postEvent(proxy, new QEvent(abort ? WorkerAborted : WorkerFinished));\n}\n\n\n// The ctor.\nQsciAPIs::QsciAPIs(QsciLexer *lexer)\n    : QsciAbstractAPIs(lexer), worker(0), origin_len(0)\n{\n    prep = new QsciAPIsPrepared;\n}\n\n\n// The dtor.\nQsciAPIs::~QsciAPIs()\n{\n    deleteWorker();\n    delete prep;\n}\n\n\n// Delete the worker thread if there is one.\nvoid QsciAPIs::deleteWorker()\n{\n    if (worker)\n    {\n        delete worker;\n        worker = 0;\n    }\n}\n\n\n//! Handle termination events from the worker thread.\nbool QsciAPIs::event(QEvent *e)\n{\n    switch (e->type())\n    {\n    case WorkerStarted:\n        emit apiPreparationStarted();\n        return true;\n\n    case WorkerAborted:\n        deleteWorker();\n        emit apiPreparationCancelled();\n        return true;\n\n    case WorkerFinished:\n        delete prep;\n        old_context.clear();\n\n        prep = worker->prepared;\n        worker->prepared = 0;\n        deleteWorker();\n\n        // Allow the raw API information to be modified.\n        apis = prep->raw_apis;\n\n        emit apiPreparationFinished();\n\n        return true;\n    }\n\n    return QObject::event(e);\n}\n\n\n// Clear the current raw API entries.\nvoid QsciAPIs::clear()\n{\n    apis.clear();\n}\n\n\n// Clear out all API information.\nbool QsciAPIs::load(const QString &filename)\n{\n    QFile f(filename);\n\n    if (!f.open(QIODevice::ReadOnly))\n        return false;\n\n    QTextStream ts(&f);\n\n    for (;;)\n    {\n        QString line = ts.readLine();\n\n        if (line.isEmpty())\n            break;\n\n        apis.append(line);\n    }\n\n    return true;\n}\n\n\n// Add a single API entry.\nvoid QsciAPIs::add(const QString &entry)\n{\n    apis.append(entry);\n}\n\n\n// Remove a single API entry.\nvoid QsciAPIs::remove(const QString &entry)\n{\n    int idx = apis.indexOf(entry);\n\n    if (idx >= 0)\n        apis.removeAt(idx);\n}\n\n\n// Position the \"origin\" cursor into the API entries according to the user\n// supplied context.\nQStringList QsciAPIs::positionOrigin(const QStringList &context, QString &path)\n{\n    // Get the list of words and see if the context is the same as last time we\n    // were called.\n    QStringList new_context;\n    bool same_context = (old_context.count() > 0 && old_context.count() < context.count());\n\n    for (int i = 0; i < context.count(); ++i)\n    {\n        QString word = context[i];\n\n        if (!lexer()->caseSensitive())\n            word = word.toUpper();\n\n        if (i < old_context.count() && old_context[i] != word)\n            same_context = false;\n\n        new_context << word;\n    }\n\n    // If the context has changed then reset the origin.\n    if (!same_context)\n        origin_len = 0;\n\n    // If we have a current origin (ie. the user made a specific selection in\n    // the current context) then adjust the origin to include the last complete\n    // word as the user may have entered more parts of the name without using\n    // auto-completion.\n    if (origin_len > 0)\n    {\n        const QString wsep = lexer()->autoCompletionWordSeparators().first();\n\n        int start_new = old_context.count();\n        int end_new = new_context.count() - 1;\n\n        if (start_new == end_new)\n        {\n            path = old_context.join(wsep);\n            origin_len = path.length();\n        }\n        else\n        {\n            QString fixed = *origin;\n            fixed.truncate(origin_len);\n\n            path = fixed;\n\n            while (start_new < end_new)\n            {\n                // Add this word to the current path.\n                path.append(wsep);\n                path.append(new_context[start_new]);\n                origin_len = path.length();\n\n                // Skip entries in the current origin that don't match the\n                // path.\n                while (origin != prep->raw_apis.end())\n                {\n                    // See if the current origin has come to an end.\n                    if (!originStartsWith(fixed, wsep))\n                        origin = prep->raw_apis.end();\n                    else if (originStartsWith(path, wsep))\n                        break;\n                    else\n                        ++origin;\n                }\n\n                if (origin == prep->raw_apis.end())\n                    break;\n\n                ++start_new;\n            }\n        }\n\n        // Terminate the path.\n        path.append(wsep);\n\n        // If the new text wasn't recognised then reset the origin.\n        if (origin == prep->raw_apis.end())\n            origin_len = 0;\n    }\n\n    if (origin_len == 0)\n        path.truncate(0);\n\n    // Save the \"committed\" context for next time.\n    old_context = new_context;\n    old_context.removeLast();\n\n    return new_context;\n}\n\n\n// Return true if the origin starts with the given path.\nbool QsciAPIs::originStartsWith(const QString &path, const QString &wsep)\n{\n    const QString &orig = *origin;\n\n    if (!orig.startsWith(path))\n        return false;\n\n    // Check that the path corresponds to the end of a word, ie. that what\n    // follows in the origin is either a word separator or a (.\n    QString tail = orig.mid(path.length());\n\n    return (!tail.isEmpty() && (tail.startsWith(wsep) || tail.at(0) == '('));\n}\n\n\n// Add auto-completion words to an existing list.\nvoid QsciAPIs::updateAutoCompletionList(const QStringList &context,\n        QStringList &list)\n{\n    QString path;\n    QStringList new_context = positionOrigin(context, path);\n\n    if (origin_len > 0)\n    {\n        const QString wsep = lexer()->autoCompletionWordSeparators().first();\n        QStringList::const_iterator it = origin;\n\n        unambiguous_context = path;\n\n        while (it != prep->raw_apis.end())\n        {\n            QString base = QsciAPIsPrepared::apiBaseName(*it);\n\n            if (!base.startsWith(path))\n                break;\n\n            // Make sure we have something after the path.\n            if (base != path)\n            {\n                // Get the word we are interested in (ie. the one after the\n                // current origin in path).\n                QString w = base.mid(origin_len + wsep.length()).split(wsep).first();\n\n                // Append the space, we know the origin is unambiguous.\n                w.append(' ');\n\n                if (!list.contains(w))\n                    list << w;\n            }\n\n            ++it;\n        }\n    }\n    else\n    {\n        // At the moment we assume we will add words from multiple contexts so\n        // mark the unambiguous context as unknown.\n        unambiguous_context = QString();\n\n        bool unambig = true;\n        QStringList with_context;\n\n        if (new_context.last().isEmpty())\n            lastCompleteWord(new_context[new_context.count() - 2], with_context, unambig);\n        else\n            lastPartialWord(new_context.last(), with_context, unambig);\n\n        for (int i = 0; i < with_context.count(); ++i)\n        {\n            // Remove any unambigious context (allowing for a possible image\n            // identifier).\n            QString noc = with_context[i];\n\n            if (unambig)\n            {\n                int op = noc.indexOf(QLatin1String(\" (\"));\n\n                if (op >= 0)\n                {\n                    int cl = noc.indexOf(QLatin1String(\")\"));\n\n                    if (cl > op)\n                        noc.remove(op, cl - op + 1);\n                    else\n                        noc.truncate(op);\n                }\n            }\n\n            list << noc;\n        }\n    }\n}\n\n\n// Get the index list for a particular word if there is one.\nconst QsciAPIs::WordIndexList *QsciAPIs::wordIndexOf(const QString &word) const\n{\n    QString csword;\n\n    // Indirect through the case dictionary if the language isn't case\n    // sensitive.\n    if (lexer()->caseSensitive())\n        csword = word;\n    else\n    {\n        csword = prep->cdict[word];\n\n        if (csword.isEmpty())\n            return 0;\n    }\n\n    // Get the possible API entries if any.\n    const WordIndexList *wl = &prep->wdict[csword];\n\n    if (wl->isEmpty())\n        return 0;\n\n    return wl;\n}\n\n\n// Add auto-completion words based on the last complete word entered.\nvoid QsciAPIs::lastCompleteWord(const QString &word, QStringList &with_context, bool &unambig)\n{\n    // Get the possible API entries if any.\n    const WordIndexList *wl = wordIndexOf(word);\n\n    if (wl)\n        addAPIEntries(*wl, true, with_context, unambig);\n}\n\n\n// Add auto-completion words based on the last partial word entered.\nvoid QsciAPIs::lastPartialWord(const QString &word, QStringList &with_context, bool &unambig)\n{\n    if (lexer()->caseSensitive())\n    {\n        QMap<QString, WordIndexList>::const_iterator it = prep->wdict.lowerBound(word);\n\n        while (it != prep->wdict.end())\n        {\n            if (!it.key().startsWith(word))\n                break;\n\n            addAPIEntries(it.value(), false, with_context, unambig);\n\n            ++it;\n        }\n    }\n    else\n    {\n        QMap<QString, QString>::const_iterator it = prep->cdict.lowerBound(word);\n\n        while (it != prep->cdict.end())\n        {\n            if (!it.key().startsWith(word))\n                break;\n\n            addAPIEntries(prep->wdict[it.value()], false, with_context, unambig);\n\n            ++it;\n        }\n    }\n}\n\n\n// Handle the selection of an entry in the auto-completion list.\nvoid QsciAPIs::autoCompletionSelected(const QString &selection)\n{\n    // If the selection is an API (ie. it has a space separating the selected\n    // word and the optional origin) then remember the origin.\n    QStringList lst = selection.split(' ');\n\n    if (lst.count() != 2)\n    {\n        origin_len = 0;\n        return;\n    }\n\n    const QString &path = lst[1];\n    QString owords;\n\n    if (path.isEmpty())\n        owords = unambiguous_context;\n    else\n    {\n        // Check the parenthesis.\n        if (!path.startsWith(\"(\") || !path.endsWith(\")\"))\n        {\n            origin_len = 0;\n            return;\n        }\n\n        // Remove the parenthesis.\n        owords = path.mid(1, path.length() - 2);\n    }\n\n    origin = qLowerBound(prep->raw_apis, owords);\n    /*\n     * There is a bug somewhere, either in qLowerBound() or QList (or in GCC as\n     * it seems to be Linux specific and the Qt code is the same on all\n     * platforms) that the following line seems to fix.  Note that it is\n     * actually the call to detach() within begin() that is the important bit.\n     */\n    prep->raw_apis.begin();\n    origin_len = owords.length();\n}\n\n\n// Add auto-completion words for a particular word (defined by where it appears\n// in the APIs) and depending on whether the word was complete (when it's\n// actually the next word in the API entry that is of interest) or not.\nvoid QsciAPIs::addAPIEntries(const WordIndexList &wl, bool complete,\n        QStringList &with_context, bool &unambig)\n{\n    QStringList wseps = lexer()->autoCompletionWordSeparators();\n\n    for (int w = 0; w < wl.count(); ++w)\n    {\n        const WordIndex &wi = wl[w];\n\n        QStringList api_words = prep->apiWords(wi.first, wseps, false);\n\n        int idx = wi.second;\n\n        if (complete)\n        {\n            // Skip if this is the last word.\n            if (++idx >= api_words.count())\n                continue;\n        }\n\n        QString api_word, org;\n\n        if (idx == 0)\n        {\n            api_word = api_words[0] + ' ';\n            org = QString::fromLatin1(\"\");\n        }\n        else\n        {\n            QStringList orgl = api_words.mid(0, idx);\n            org = orgl.join(wseps.first());\n\n            // Add the context (allowing for a possible image identifier).\n            QString w = api_words[idx];\n            QString type;\n            int type_idx = w.indexOf(QLatin1String(\"?\"));\n\n            if (type_idx >= 0)\n            {\n                type = w.mid(type_idx);\n                w.truncate(type_idx);\n            }\n\n            api_word = QString(\"%1 (%2)%3\").arg(w).arg(org).arg(type);\n        }\n\n        // If the origin is different to the context then the context is\n        // ambiguous.\n        if (unambig)\n        {\n            if (unambiguous_context.isNull())\n            {\n                unambiguous_context = org;\n            }\n            else if (unambiguous_context != org)\n            {\n                unambiguous_context.truncate(0);\n                unambig = false;\n            }\n        }\n\n        if (!with_context.contains(api_word))\n            with_context.append(api_word);\n    }\n}\n\n\n// Return the call tip for a function.\nQStringList QsciAPIs::callTips(const QStringList &context, int commas,\n        QsciScintilla::CallTipsStyle style, QList<int> &shifts)\n{\n    QString path;\n    QStringList new_context = positionOrigin(context, path);\n    QStringList wseps = lexer()->autoCompletionWordSeparators();\n    QStringList cts;\n\n    if (origin_len > 0)\n    {\n        // The path should have a trailing word separator.\n        const QString &wsep = wseps.first();\n        path.chop(wsep.length());\n\n        QStringList::const_iterator it = origin;\n        QString prev;\n\n        // Work out the length of the context.\n        QStringList strip = path.split(wsep);\n        strip.removeLast();\n        int ctstart = strip.join(wsep).length();\n\n        if (ctstart)\n            ctstart += wsep.length();\n\n        int shift;\n\n        if (style == QsciScintilla::CallTipsContext)\n        {\n            shift = ctstart;\n            ctstart = 0;\n        }\n        else\n            shift = 0;\n\n        // Make sure we only look at the functions we are interested in.\n        path.append('(');\n\n        while (it != prep->raw_apis.end() && (*it).startsWith(path))\n        {\n            QString w = (*it).mid(ctstart);\n\n            if (w != prev && enoughCommas(w, commas))\n            {\n                shifts << shift;\n                cts << w;\n                prev = w;\n            }\n\n            ++it;\n        }\n    }\n    else\n    {\n        const QString &fname = new_context[new_context.count() - 2];\n\n        // Find everywhere the function name appears in the APIs.\n        const WordIndexList *wil = wordIndexOf(fname);\n\n        if (wil)\n            for (int i = 0; i < wil->count(); ++i)\n            {\n                const WordIndex &wi = (*wil)[i];\n                QStringList awords = prep->apiWords(wi.first, wseps, true);\n\n                // Check the word is the function name and not part of any\n                // context.\n                if (wi.second != awords.count() - 1)\n                    continue;\n\n                const QString &api = prep->raw_apis[wi.first];\n\n                int tail = api.indexOf('(');\n\n                if (tail < 0)\n                    continue;\n\n                if (!enoughCommas(api, commas))\n                    continue;\n\n                if (style == QsciScintilla::CallTipsNoContext)\n                {\n                    shifts << 0;\n                    cts << (fname + api.mid(tail));\n                }\n                else\n                {\n                    shifts << tail - fname.length();\n\n                    // Remove any image type.\n                    int im_type = api.indexOf('?');\n\n                    if (im_type <= 0)\n                        cts << api;\n                    else\n                        cts << (api.left(im_type - 1) + api.mid(tail));\n                }\n            }\n    }\n\n    return cts;\n}\n\n\n// Return true if a string has enough commas in the argument list.\nbool QsciAPIs::enoughCommas(const QString &s, int commas)\n{\n    int end = s.indexOf(')');\n\n    if (end < 0)\n        return false;\n\n    QString w = s.left(end);\n\n    return (w.count(',') >= commas);\n}\n\n\n// Ensure the list is ready.\nvoid QsciAPIs::prepare()\n{\n    // Handle the trivial case.\n    if (worker)\n        return;\n\n    QsciAPIsPrepared *new_apis = new QsciAPIsPrepared;\n    new_apis->raw_apis = apis;\n\n    worker = new QsciAPIsWorker(this);\n    worker->prepared = new_apis;\n    worker->start();\n}\n\n\n// Cancel any current preparation.\nvoid QsciAPIs::cancelPreparation()\n{\n    deleteWorker();\n}\n\n\n// Check that a prepared API file exists.\nbool QsciAPIs::isPrepared(const QString &filename) const\n{\n    QString pname = prepName(filename);\n\n    if (pname.isEmpty())\n        return false;\n\n    QFileInfo fi(pname);\n\n    return fi.exists();\n}\n\n\n// Load the prepared API information.\nbool QsciAPIs::loadPrepared(const QString &filename)\n{\n    QString pname = prepName(filename);\n\n    if (pname.isEmpty())\n        return false;\n\n    // Read the prepared data and decompress it.\n    QFile pf(pname);\n\n    if (!pf.open(QIODevice::ReadOnly))\n        return false;\n\n    QByteArray cpdata = pf.readAll();\n\n    pf.close();\n\n    if (cpdata.count() == 0)\n        return false;\n\n    QByteArray pdata = qUncompress(cpdata);\n\n    // Extract the data.\n    QDataStream pds(pdata);\n\n    unsigned char vers;\n    pds >> vers;\n\n    if (vers > PreparedDataFormatVersion)\n        return false;\n\n    char *lex_name;\n    pds >> lex_name;\n\n    if (qstrcmp(lex_name, lexer()->lexer()) != 0)\n    {\n        delete[] lex_name;\n        return false;\n    }\n\n    delete[] lex_name;\n\n    prep->wdict.clear();\n    pds >> prep->wdict;\n\n    if (!lexer()->caseSensitive())\n    {\n        // Build up the case dictionary.\n        prep->cdict.clear();\n\n        QMap<QString, WordIndexList>::const_iterator it = prep->wdict.begin();\n\n        while (it != prep->wdict.end())\n        {\n            prep->cdict[it.key().toUpper()] = it.key();\n            ++it;\n        }\n    }\n\n    prep->raw_apis.clear();\n    pds >> prep->raw_apis;\n\n    // Allow the raw API information to be modified.\n    apis = prep->raw_apis;\n\n    return true;\n}\n\n\n// Save the prepared API information.\nbool QsciAPIs::savePrepared(const QString &filename) const\n{\n    QString pname = prepName(filename, true);\n\n    if (pname.isEmpty())\n        return false;\n\n    // Write the prepared data to a memory buffer.\n    QByteArray pdata;\n    QDataStream pds(&pdata, QIODevice::WriteOnly);\n\n    // Use a serialisation format supported by Qt v3.0 and later.\n    pds.setVersion(QDataStream::Qt_3_0);\n    pds << PreparedDataFormatVersion;\n    pds << lexer()->lexer();\n    pds << prep->wdict;\n    pds << prep->raw_apis;\n\n    // Compress the data and write it.\n    QFile pf(pname);\n\n    if (!pf.open(QIODevice::WriteOnly|QIODevice::Truncate))\n        return false;\n\n    if (pf.write(qCompress(pdata)) < 0)\n    {\n        pf.close();\n        return false;\n    }\n\n    pf.close();\n    return true;\n}\n\n\n// Return the name of the default prepared API file.\nQString QsciAPIs::defaultPreparedName() const\n{\n    return prepName(QString());\n}\n\n\n// Return the name of a prepared API file.\nQString QsciAPIs::prepName(const QString &filename, bool mkpath) const\n{\n    // Handle the tivial case.\n    if (!filename.isEmpty())\n        return filename;\n\n    QString pdname;\n    char *qsci = getenv(\"QSCIDIR\");\n\n    if (qsci)\n        pdname = qsci;\n    else\n    {\n        static const char *qsci_dir = \".qsci\";\n\n        QDir pd = QDir::home();\n\n        if (mkpath && !pd.exists(qsci_dir) && !pd.mkdir(qsci_dir))\n            return QString();\n\n        pdname = pd.filePath(qsci_dir);\n    }\n\n    return QString(\"%1/%2.pap\").arg(pdname).arg(lexer()->lexer());\n}\n\n\n// Return installed API files.\nQStringList QsciAPIs::installedAPIFiles() const\n{\n    QString qtdir = QLibraryInfo::location(QLibraryInfo::DataPath);\n\n    QDir apidir = QDir(QString(\"%1/qsci/api/%2\").arg(qtdir).arg(lexer()->lexer()));\n    QStringList filenames;\n\n    QStringList filters;\n    filters << \"*.api\";\n\n    QFileInfoList flist = apidir.entryInfoList(filters, QDir::Files, QDir::IgnoreCase);\n\n    foreach (QFileInfo fi, flist)\n        filenames << fi.absoluteFilePath();\n\n    return filenames;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscicommand.cpp",
    "content": "// This module implements the QsciCommand class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscicommand.h\"\n\n#include <qnamespace.h>\n#include <qapplication.h>\n\n#include \"Qsci/qsciscintilla.h\"\n#include \"Qsci/qsciscintillabase.h\"\n\n\nstatic int convert(int key);\n\n\n// The ctor.\nQsciCommand::QsciCommand(QsciScintilla *qs, QsciCommand::Command cmd, int key,\n        int altkey, const char *desc)\n    : qsCmd(qs), scicmd(cmd), qkey(key), qaltkey(altkey), descCmd(desc)\n{\n    scikey = convert(qkey);\n\n    if (scikey)\n        qsCmd->SendScintilla(QsciScintillaBase::SCI_ASSIGNCMDKEY, scikey,\n                scicmd);\n\n    scialtkey = convert(qaltkey);\n\n    if (scialtkey)\n        qsCmd->SendScintilla(QsciScintillaBase::SCI_ASSIGNCMDKEY, scialtkey,\n                scicmd);\n}\n\n\n// Execute the command.\nvoid QsciCommand::execute()\n{\n    qsCmd->SendScintilla(scicmd);\n}\n\n\n// Bind a key to a command.\nvoid QsciCommand::setKey(int key)\n{\n    bindKey(key,qkey,scikey);\n}\n\n\n// Bind an alternate key to a command.\nvoid QsciCommand::setAlternateKey(int altkey)\n{\n    bindKey(altkey,qaltkey,scialtkey);\n}\n\n\n// Do the hard work of binding a key.\nvoid QsciCommand::bindKey(int key,int &qk,int &scik)\n{\n    int new_scikey;\n\n    // Ignore if it is invalid, allowing for the fact that we might be\n    // unbinding it.\n    if (key)\n    {\n        new_scikey = convert(key);\n\n        if (!new_scikey)\n            return;\n    }\n    else\n        new_scikey = 0;\n\n    if (scik)\n        qsCmd->SendScintilla(QsciScintillaBase::SCI_CLEARCMDKEY, scik);\n\n    qk = key;\n    scik = new_scikey;\n\n    if (scik)\n        qsCmd->SendScintilla(QsciScintillaBase::SCI_ASSIGNCMDKEY, scik, scicmd);\n}\n\n\n// See if a key is valid.\nbool QsciCommand::validKey(int key)\n{\n    return convert(key);\n}\n\n\n// Convert a Qt character to the Scintilla equivalent.  Return zero if it is\n// invalid.\nstatic int convert(int key)\n{\n    // Convert the modifiers.\n    int sci_mod = 0;\n\n    if (key & Qt::SHIFT)\n        sci_mod |= QsciScintillaBase::SCMOD_SHIFT;\n\n    if (key & Qt::CTRL)\n        sci_mod |= QsciScintillaBase::SCMOD_CTRL;\n\n    if (key & Qt::ALT)\n        sci_mod |= QsciScintillaBase::SCMOD_ALT;\n\n    if (key & Qt::META)\n        sci_mod |= QsciScintillaBase::SCMOD_META;\n\n    key &= ~Qt::MODIFIER_MASK;\n\n    // Convert the key.\n    int sci_key = QsciScintillaBase::commandKey(key, sci_mod);\n\n    if (sci_key)\n        sci_key |= (sci_mod << 16);\n\n    return sci_key;\n}\n\n\n// Return the translated user friendly description.\nQString QsciCommand::description() const\n{\n    return qApp->translate(\"QsciCommand\", descCmd);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp",
    "content": "// This module implements the QsciCommandSet class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscicommandset.h\"\n\n#include <QSettings>\n\n#include \"Qsci/qscicommand.h\"\n#include \"Qsci/qsciscintilla.h\"\n#include \"Qsci/qsciscintillabase.h\"\n\n\n// Starting with QScintilla v2.7 the standard OS/X keyboard shortcuts are used\n// where possible.  In order to restore the behaviour of earlier versions then\n// #define DONT_USE_OSX_KEYS here or add it to the qmake project (.pro) file.\n#if defined(Q_OS_MAC) && !defined(DONT_USE_OSX_KEYS)\n#define USING_OSX_KEYS\n#else\n#undef  USING_OSX_KEYS\n#endif\n\n\n// The ctor.\nQsciCommandSet::QsciCommandSet(QsciScintilla *qs) : qsci(qs)\n{\n    struct sci_cmd {\n        QsciCommand::Command cmd;\n        int key;\n        int altkey;\n        const char *desc;\n    };\n\n    static struct sci_cmd cmd_table[] = {\n        {\n            QsciCommand::LineDown,\n            Qt::Key_Down,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_N | Qt::META,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move down one line\")\n        },\n        {\n            QsciCommand::LineDownExtend,\n            Qt::Key_Down | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_N | Qt::META | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Extend selection down one line\")\n        },\n        {\n            QsciCommand::LineDownRectExtend,\n            Qt::Key_Down | Qt::ALT | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_N | Qt::META | Qt::ALT | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend rectangular selection down one line\")\n        },\n        {\n            QsciCommand::LineScrollDown,\n            Qt::Key_Down | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Scroll view down one line\")\n        },\n        {\n            QsciCommand::LineUp,\n            Qt::Key_Up,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_P | Qt::META,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move up one line\")\n        },\n        {\n            QsciCommand::LineUpExtend,\n            Qt::Key_Up | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_P | Qt::META | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Extend selection up one line\")\n        },\n        {\n            QsciCommand::LineUpRectExtend,\n            Qt::Key_Up | Qt::ALT | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_P | Qt::META | Qt::ALT | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend rectangular selection up one line\")\n        },\n        {\n            QsciCommand::LineScrollUp,\n            Qt::Key_Up | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Scroll view up one line\")\n        },\n        {\n            QsciCommand::ScrollToStart,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Home,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Scroll to start of document\")\n        },\n        {\n            QsciCommand::ScrollToEnd,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_End,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Scroll to end of document\")\n        },\n        {\n            QsciCommand::VerticalCentreCaret,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_L | Qt::META,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Scroll vertically to centre current line\")\n        },\n        {\n            QsciCommand::ParaDown,\n            Qt::Key_BracketRight | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move down one paragraph\")\n        },\n        {\n            QsciCommand::ParaDownExtend,\n            Qt::Key_BracketRight | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection down one paragraph\")\n        },\n        {\n            QsciCommand::ParaUp,\n            Qt::Key_BracketLeft | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move up one paragraph\")\n        },\n        {\n            QsciCommand::ParaUpExtend,\n            Qt::Key_BracketLeft | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection up one paragraph\")\n        },\n        {\n            QsciCommand::CharLeft,\n            Qt::Key_Left,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_B | Qt::META,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move left one character\")\n        },\n        {\n            QsciCommand::CharLeftExtend,\n            Qt::Key_Left | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_B | Qt::META | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection left one character\")\n        },\n        {\n            QsciCommand::CharLeftRectExtend,\n            Qt::Key_Left | Qt::ALT | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_B | Qt::META | Qt::ALT | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend rectangular selection left one character\")\n        },\n        {\n            QsciCommand::CharRight,\n            Qt::Key_Right,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_F | Qt::META,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move right one character\")\n        },\n        {\n            QsciCommand::CharRightExtend,\n            Qt::Key_Right | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_F | Qt::META | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection right one character\")\n        },\n        {\n            QsciCommand::CharRightRectExtend,\n            Qt::Key_Right | Qt::ALT | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_F | Qt::META | Qt::ALT | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend rectangular selection right one character\")\n        },\n        {\n            QsciCommand::WordLeft,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Left | Qt::ALT,\n#else\n            Qt::Key_Left | Qt::CTRL,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move left one word\")\n        },\n        {\n            QsciCommand::WordLeftExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Left | Qt::ALT | Qt::SHIFT,\n#else\n            Qt::Key_Left | Qt::CTRL | Qt::SHIFT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Extend selection left one word\")\n        },\n        {\n            QsciCommand::WordRight,\n#if defined(USING_OSX_KEYS)\n            0,\n#else\n            Qt::Key_Right | Qt::CTRL,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move right one word\")\n        },\n        {\n            QsciCommand::WordRightExtend,\n            Qt::Key_Right | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Extend selection right one word\")\n        },\n        {\n            QsciCommand::WordLeftEnd,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move to end of previous word\")\n        },\n        {\n            QsciCommand::WordLeftEndExtend,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to end of previous word\")\n        },\n        {\n            QsciCommand::WordRightEnd,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Right | Qt::ALT,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move to end of next word\")\n        },\n        {\n            QsciCommand::WordRightEndExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Right | Qt::ALT | Qt::SHIFT,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to end of next word\")\n        },\n        {\n            QsciCommand::WordPartLeft,\n            Qt::Key_Slash | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move left one word part\")\n        },\n        {\n            QsciCommand::WordPartLeftExtend,\n            Qt::Key_Slash | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection left one word part\")\n        },\n        {\n            QsciCommand::WordPartRight,\n            Qt::Key_Backslash | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move right one word part\")\n        },\n        {\n            QsciCommand::WordPartRightExtend,\n            Qt::Key_Backslash | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection right one word part\")\n        },\n        {\n            QsciCommand::Home,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_A | Qt::META,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move to start of document line\")\n        },\n        {\n            QsciCommand::HomeExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_A | Qt::META | Qt::SHIFT,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to start of document line\")\n        },\n        {\n            QsciCommand::HomeRectExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_A | Qt::META | Qt::ALT | Qt::SHIFT,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend rectangular selection to start of document line\")\n        },\n        {\n            QsciCommand::HomeDisplay,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Left | Qt::CTRL,\n#else\n            Qt::Key_Home | Qt::ALT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move to start of display line\")\n        },\n        {\n            QsciCommand::HomeDisplayExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Left | Qt::CTRL | Qt::SHIFT,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to start of display line\")\n        },\n        {\n            QsciCommand::HomeWrap,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Move to start of display or document line\")\n        },\n        {\n            QsciCommand::HomeWrapExtend,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to start of display or document line\")\n        },\n        {\n            QsciCommand::VCHome,\n#if defined(USING_OSX_KEYS)\n            0,\n#else\n            Qt::Key_Home,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                \"Move to first visible character in document line\")\n        },\n        {\n            QsciCommand::VCHomeExtend,\n#if defined(USING_OSX_KEYS)\n            0,\n#else\n            Qt::Key_Home | Qt::SHIFT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                \"Extend selection to first visible character in document line\")\n        },\n        {\n            QsciCommand::VCHomeRectExtend,\n#if defined(USING_OSX_KEYS)\n            0,\n#else\n            Qt::Key_Home | Qt::ALT | Qt::SHIFT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                \"Extend rectangular selection to first visible character in document line\")\n        },\n        {\n            QsciCommand::VCHomeWrap,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Move to first visible character of display in document line\")\n        },\n        {\n            QsciCommand::VCHomeWrapExtend,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to first visible character in display or document line\")\n        },\n        {\n            QsciCommand::LineEnd,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_E | Qt::META,\n#else\n            Qt::Key_End,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move to end of document line\")\n        },\n        {\n            QsciCommand::LineEndExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_E | Qt::META | Qt::SHIFT,\n#else\n            Qt::Key_End | Qt::SHIFT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to end of document line\")\n        },\n        {\n            QsciCommand::LineEndRectExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_E | Qt::META | Qt::ALT | Qt::SHIFT,\n#else\n            Qt::Key_End | Qt::ALT | Qt::SHIFT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend rectangular selection to end of document line\")\n        },\n        {\n            QsciCommand::LineEndDisplay,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Right | Qt::CTRL,\n#else\n            Qt::Key_End | Qt::ALT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move to end of display line\")\n        },\n        {\n            QsciCommand::LineEndDisplayExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Right | Qt::CTRL | Qt::SHIFT,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to end of display line\")\n        },\n        {\n            QsciCommand::LineEndWrap,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Move to end of display or document line\")\n        },\n        {\n            QsciCommand::LineEndWrapExtend,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to end of display or document line\")\n        },\n        {\n            QsciCommand::DocumentStart,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Up | Qt::CTRL,\n#else\n            Qt::Key_Home | Qt::CTRL,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move to start of document\")\n        },\n        {\n            QsciCommand::DocumentStartExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Up | Qt::CTRL | Qt::SHIFT,\n#else\n            Qt::Key_Home | Qt::CTRL | Qt::SHIFT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to start of document\")\n        },\n        {\n            QsciCommand::DocumentEnd,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Down | Qt::CTRL,\n#else\n            Qt::Key_End | Qt::CTRL,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move to end of document\")\n        },\n        {\n            QsciCommand::DocumentEndExtend,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Down | Qt::CTRL | Qt::SHIFT,\n#else\n            Qt::Key_End | Qt::CTRL | Qt::SHIFT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend selection to end of document\")\n        },\n        {\n            QsciCommand::PageUp,\n            Qt::Key_PageUp,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move up one page\")\n        },\n        {\n            QsciCommand::PageUpExtend,\n            Qt::Key_PageUp | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Extend selection up one page\")\n        },\n        {\n            QsciCommand::PageUpRectExtend,\n            Qt::Key_PageUp | Qt::ALT | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend rectangular selection up one page\")\n        },\n        {\n            QsciCommand::PageDown,\n            Qt::Key_PageDown,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_V | Qt::META,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move down one page\")\n        },\n        {\n            QsciCommand::PageDownExtend,\n            Qt::Key_PageDown | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_V | Qt::META | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Extend selection down one page\")\n        },\n        {\n            QsciCommand::PageDownRectExtend,\n            Qt::Key_PageDown | Qt::ALT | Qt::SHIFT,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_V | Qt::META | Qt::ALT | Qt::SHIFT,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Extend rectangular selection down one page\")\n        },\n        {\n            QsciCommand::StutteredPageUp,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Stuttered move up one page\")\n        },\n        {\n            QsciCommand::StutteredPageUpExtend,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Stuttered extend selection up one page\")\n        },\n        {\n            QsciCommand::StutteredPageDown,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Stuttered move down one page\")\n        },\n        {\n            QsciCommand::StutteredPageDownExtend,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Stuttered extend selection down one page\")\n        },\n        {\n            QsciCommand::Delete,\n            Qt::Key_Delete,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_D | Qt::META,\n#else\n            0,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Delete current character\")\n        },\n        {\n            QsciCommand::DeleteBack,\n            Qt::Key_Backspace,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_H | Qt::META,\n#else\n            Qt::Key_Backspace | Qt::SHIFT,\n#endif\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Delete previous character\")\n        },\n        {\n            QsciCommand::DeleteBackNotLine,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                \"Delete previous character if not at start of line\")\n        },\n        {\n            QsciCommand::DeleteWordLeft,\n            Qt::Key_Backspace | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Delete word to left\")\n        },\n        {\n            QsciCommand::DeleteWordRight,\n            Qt::Key_Delete | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Delete word to right\")\n        },\n        {\n            QsciCommand::DeleteWordRightEnd,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Delete | Qt::ALT,\n#else\n            0,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Delete right to end of next word\")\n        },\n        {\n            QsciCommand::DeleteLineLeft,\n            Qt::Key_Backspace | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Delete line to left\")\n        },\n        {\n            QsciCommand::DeleteLineRight,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_K | Qt::META,\n#else\n            Qt::Key_Delete | Qt::CTRL | Qt::SHIFT,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Delete line to right\")\n        },\n        {\n            QsciCommand::LineDelete,\n            Qt::Key_L | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Delete current line\")\n        },\n        {\n            QsciCommand::LineCut,\n            Qt::Key_L | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Cut current line\")\n        },\n        {\n            QsciCommand::LineCopy,\n            Qt::Key_T | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Copy current line\")\n        },\n        {\n            QsciCommand::LineTranspose,\n            Qt::Key_T | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Transpose current and previous lines\")\n        },\n        {\n            QsciCommand::LineDuplicate,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Duplicate the current line\")\n        },\n        {\n            QsciCommand::SelectAll,\n            Qt::Key_A | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Select all\")\n        },\n        {\n            QsciCommand::MoveSelectedLinesUp,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Move selected lines up one line\")\n        },\n        {\n            QsciCommand::MoveSelectedLinesDown,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\",\n                    \"Move selected lines down one line\")\n        },\n        {\n            QsciCommand::SelectionDuplicate,\n            Qt::Key_D | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Duplicate selection\")\n        },\n        {\n            QsciCommand::SelectionLowerCase,\n            Qt::Key_U | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Convert selection to lower case\")\n        },\n        {\n            QsciCommand::SelectionUpperCase,\n            Qt::Key_U | Qt::CTRL | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Convert selection to upper case\")\n        },\n        {\n            QsciCommand::SelectionCut,\n            Qt::Key_X | Qt::CTRL,\n            Qt::Key_Delete | Qt::SHIFT,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Cut selection\")\n        },\n        {\n            QsciCommand::SelectionCopy,\n            Qt::Key_C | Qt::CTRL,\n            Qt::Key_Insert | Qt::CTRL,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Copy selection\")\n        },\n        {\n            QsciCommand::Paste,\n            Qt::Key_V | Qt::CTRL,\n            Qt::Key_Insert | Qt::SHIFT,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Paste\")\n        },\n        {\n            QsciCommand::EditToggleOvertype,\n            Qt::Key_Insert,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Toggle insert/overtype\")\n        },\n        {\n            QsciCommand::Newline,\n            Qt::Key_Return,\n            Qt::Key_Return | Qt::SHIFT,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Insert newline\")\n        },\n        {\n            QsciCommand::Formfeed,\n            0,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Formfeed\")\n        },\n        {\n            QsciCommand::Tab,\n            Qt::Key_Tab,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Indent one level\")\n        },\n        {\n            QsciCommand::Backtab,\n            Qt::Key_Tab | Qt::SHIFT,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"De-indent one level\")\n        },\n        {\n            QsciCommand::Cancel,\n            Qt::Key_Escape,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Cancel\")\n        },\n        {\n            QsciCommand::Undo,\n            Qt::Key_Z | Qt::CTRL,\n            Qt::Key_Backspace | Qt::ALT,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Undo last command\")\n        },\n        {\n            QsciCommand::Redo,\n#if defined(USING_OSX_KEYS)\n            Qt::Key_Z | Qt::CTRL | Qt::SHIFT,\n#else\n            Qt::Key_Y | Qt::CTRL,\n#endif\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Redo last command\")\n        },\n        {\n            QsciCommand::ZoomIn,\n            Qt::Key_Plus | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Zoom in\")\n        },\n        {\n            QsciCommand::ZoomOut,\n            Qt::Key_Minus | Qt::CTRL,\n            0,\n            QT_TRANSLATE_NOOP(\"QsciCommand\", \"Zoom out\")\n        },\n    };\n\n    // Clear the default map.\n    qsci->SendScintilla(QsciScintillaBase::SCI_CLEARALLCMDKEYS);\n\n    // By default control characters don't do anything (rather than insert the\n    // control character into the text).\n    for (int k = 'A'; k <= 'Z'; ++k)\n        qsci->SendScintilla(QsciScintillaBase::SCI_ASSIGNCMDKEY,\n                k + (QsciScintillaBase::SCMOD_CTRL << 16),\n                QsciScintillaBase::SCI_NULL);\n\n    for (int i = 0; i < sizeof (cmd_table) / sizeof (cmd_table[0]); ++i)\n        cmds.append(\n                new QsciCommand(qsci, cmd_table[i].cmd, cmd_table[i].key,\n                        cmd_table[i].altkey, cmd_table[i].desc));\n}\n\n\n// The dtor.\nQsciCommandSet::~QsciCommandSet()\n{\n    for (int i = 0; i < cmds.count(); ++i)\n        delete cmds.at(i);\n}\n\n\n// Read the command set from settings.\nbool QsciCommandSet::readSettings(QSettings &qs, const char *prefix)\n{\n    bool rc = true;\n    QString skey;\n\n    for (int i = 0; i < cmds.count(); ++i)\n    {\n        QsciCommand *cmd = cmds.at(i);\n\n        skey.sprintf(\"%s/keymap/c%d/\", prefix,\n                static_cast<int>(cmd->command()));\n\n        int key;\n        bool ok;\n\n        // Read the key.\n        ok = qs.contains(skey + \"key\");\n        key = qs.value(skey + \"key\", 0).toInt();\n\n        if (ok)\n            cmd->setKey(key);\n        else\n            rc = false;\n\n        // Read the alternate key.\n        ok = qs.contains(skey + \"alt\");\n        key = qs.value(skey + \"alt\", 0).toInt();\n\n        if (ok)\n            cmd->setAlternateKey(key);\n        else\n            rc = false;\n    }\n\n    return rc;\n}\n\n\n// Write the command set to settings.\nbool QsciCommandSet::writeSettings(QSettings &qs, const char *prefix)\n{\n    bool rc = true;\n    QString skey;\n\n    for (int i = 0; i < cmds.count(); ++i)\n    {\n        QsciCommand *cmd = cmds.at(i);\n\n        skey.sprintf(\"%s/keymap/c%d/\", prefix,\n                static_cast<int>(cmd->command()));\n\n        // Write the key.\n        qs.setValue(skey + \"key\", cmd->key());\n\n        // Write the alternate key.\n        qs.setValue(skey + \"alt\", cmd->key());\n    }\n\n    return rc;\n}\n\n\n// Clear the key bindings.\nvoid QsciCommandSet::clearKeys()\n{\n    for (int i = 0; i < cmds.count(); ++i)\n        cmds.at(i)->setKey(0);\n}\n\n\n// Clear the alternate key bindings.\nvoid QsciCommandSet::clearAlternateKeys()\n{\n    for (int i = 0; i < cmds.count(); ++i)\n        cmds.at(i)->setAlternateKey(0);\n}\n\n\n// Find the command bound to a key.\nQsciCommand *QsciCommandSet::boundTo(int key) const\n{\n    for (int i = 0; i < cmds.count(); ++i)\n    {\n        QsciCommand *cmd = cmds.at(i);\n\n        if (cmd->key() == key || cmd->alternateKey() == key)\n            return cmd;\n    }\n\n    return 0;\n}\n\n\n// Find a command.\nQsciCommand *QsciCommandSet::find(QsciCommand::Command command) const\n{\n    for (int i = 0; i < cmds.count(); ++i)\n    {\n        QsciCommand *cmd = cmds.at(i);\n\n        if (cmd->command() == command)\n            return cmd;\n    }\n\n    // This should never happen.\n    return 0;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscidocument.cpp",
    "content": "// This module implements the QsciDocument class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscidocument.h\"\n#include \"Qsci/qsciscintillabase.h\"\n\n\n// This internal class encapsulates the underlying document and is shared by\n// QsciDocument instances.\nclass QsciDocumentP\n{\npublic:\n    QsciDocumentP() : doc(0), nr_displays(0), nr_attaches(1), modified(false) {}\n\n    void *doc;              // The Scintilla document.\n    int nr_displays;        // The number of displays.\n    int nr_attaches;        // The number of attaches.\n    bool modified;          // Set if not at a save point.\n};\n\n\n// The ctor.\nQsciDocument::QsciDocument()\n{\n    pdoc = new QsciDocumentP();\n}\n\n\n// The dtor.\nQsciDocument::~QsciDocument()\n{\n    detach();\n}\n\n\n// The copy ctor.\nQsciDocument::QsciDocument(const QsciDocument &that)\n{\n    attach(that);\n}\n\n\n// The assignment operator.\nQsciDocument &QsciDocument::operator=(const QsciDocument &that)\n{\n    if (pdoc != that.pdoc)\n    {\n        detach();\n        attach(that);\n    }\n\n    return *this;\n}\n\n\n// Attach an existing document to this one.\nvoid QsciDocument::attach(const QsciDocument &that)\n{\n    ++that.pdoc->nr_attaches;\n    pdoc = that.pdoc;\n}\n\n\n// Detach the underlying document.\nvoid QsciDocument::detach()\n{\n    if (!pdoc)\n        return;\n\n    if (--pdoc->nr_attaches == 0)\n    {\n        if (pdoc->doc && pdoc->nr_displays == 0)\n        {\n            QsciScintillaBase *qsb = QsciScintillaBase::pool();\n\n            // Release the explicit reference to the document.  If the pool is\n            // empty then we just accept the memory leak.\n            if (qsb)\n                qsb->SendScintilla(QsciScintillaBase::SCI_RELEASEDOCUMENT, 0,\n                        pdoc->doc);\n        }\n\n        delete pdoc;\n    }\n\n    pdoc = 0;\n}\n\n\n// Undisplay and detach the underlying document.\nvoid QsciDocument::undisplay(QsciScintillaBase *qsb)\n{\n    if (--pdoc->nr_attaches == 0)\n        delete pdoc;\n    else if (--pdoc->nr_displays == 0)\n    {\n        // Create an explicit reference to the document to keep it alive.\n        qsb->SendScintilla(QsciScintillaBase::SCI_ADDREFDOCUMENT, 0, pdoc->doc);\n    }\n\n    pdoc = 0;\n}\n\n\n// Display the underlying document.\nvoid QsciDocument::display(QsciScintillaBase *qsb, const QsciDocument *from)\n{\n    void *ndoc = (from ? from->pdoc->doc : 0);\n\n    // SCI_SETDOCPOINTER appears to reset the EOL mode so save and restore it.\n    int eol_mode = qsb->SendScintilla(QsciScintillaBase::SCI_GETEOLMODE);\n\n    qsb->SendScintilla(QsciScintillaBase::SCI_SETDOCPOINTER, 0, ndoc);\n    ndoc = qsb->SendScintillaPtrResult(QsciScintillaBase::SCI_GETDOCPOINTER);\n\n    qsb->SendScintilla(QsciScintillaBase::SCI_SETEOLMODE, eol_mode);\n\n    pdoc->doc = ndoc;\n    ++pdoc->nr_displays;\n}\n\n\n// Return the modified state of the document.\nbool QsciDocument::isModified() const\n{\n    return pdoc->modified;\n}\n\n\n// Set the modified state of the document.\nvoid QsciDocument::setModified(bool m)\n{\n    pdoc->modified = m;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexer.cpp",
    "content": "// This module implements the QsciLexer class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexer.h\"\n\n#include <qapplication.h>\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n#include \"Qsci/qsciapis.h\"\n#include \"Qsci/qsciscintilla.h\"\n#include \"Qsci/qsciscintillabase.h\"\n\n\n// The ctor.\nQsciLexer::QsciLexer(QObject *parent)\n    : QObject(parent),\n      autoIndStyle(-1), apiSet(0), attached_editor(0)\n{\n#if defined(Q_OS_WIN)\n    defFont = QFont(\"Verdana\",10);\n#elif defined(Q_OS_MAC)\n    defFont = QFont(\"Verdana\", 12);\n#else\n    defFont = QFont(\"Bitstream Vera Sans\",9);\n#endif\n\n    // Set the default fore and background colours.\n    QPalette pal = QApplication::palette();\n    defColor = pal.text().color();\n    defPaper = pal.base().color();\n\n    // Putting this on the heap means we can keep the style getters const.\n    style_map = new StyleDataMap;\n    style_map->style_data_set = false;\n}\n\n\n// The dtor.\nQsciLexer::~QsciLexer()\n{\n    delete style_map;\n}\n\n\n// Set the attached editor.\nvoid QsciLexer::setEditor(QsciScintilla *editor)\n{\n    attached_editor = editor;\n\n    if (attached_editor)\n    {\n        attached_editor->SendScintilla(QsciScintillaBase::SCI_SETSTYLEBITS,\n                styleBitsNeeded());\n    }\n}\n\n\n// Return the lexer name.\nconst char *QsciLexer::lexer() const\n{\n    return 0;\n}\n\n\n// Return the lexer identifier.\nint QsciLexer::lexerId() const\n{\n    return QsciScintillaBase::SCLEX_CONTAINER;\n}\n\n\n// Return the number of style bits needed by the lexer.\nint QsciLexer::styleBitsNeeded() const\n{\n    if (!attached_editor)\n        return 5;\n\n    return attached_editor->SendScintilla(QsciScintillaBase::SCI_GETSTYLEBITSNEEDED);\n}\n\n\n// Make sure the style defaults have been set.\nvoid QsciLexer::setStyleDefaults() const\n{\n    if (!style_map->style_data_set)\n    {\n        for (int i = 0; i < 128; ++i)\n            if (!description(i).isEmpty())\n                styleData(i);\n\n        style_map->style_data_set = true;\n    }\n}\n\n\n// Return a reference to a style's data, setting up the defaults if needed.\nQsciLexer::StyleData &QsciLexer::styleData(int style) const\n{\n    StyleData &sd = style_map->style_data[style];\n\n    // See if this is a new style by checking if the colour is valid.\n    if (!sd.color.isValid())\n    {\n        sd.color = defaultColor(style);\n        sd.paper = defaultPaper(style);\n        sd.font = defaultFont(style);\n        sd.eol_fill = defaultEolFill(style);\n    }\n\n    return sd;\n}\n\n\n// Set the APIs associated with the lexer.\nvoid QsciLexer::setAPIs(QsciAbstractAPIs *apis)\n{\n    apiSet = apis;\n}\n\n\n// Return a pointer to the current APIs if there are any.\nQsciAbstractAPIs *QsciLexer::apis() const\n{\n    return apiSet;\n}\n\n\n// Default implementation to return the set of fill up characters that can end\n// auto-completion.\nconst char *QsciLexer::autoCompletionFillups() const\n{\n    return \"(\";\n}\n\n\n// Default implementation to return the view used for indentation guides.\nint QsciLexer::indentationGuideView() const\n{\n    return QsciScintillaBase::SC_IV_LOOKBOTH;\n}\n\n\n// Default implementation to return the list of character sequences that can\n// separate auto-completion words.\nQStringList QsciLexer::autoCompletionWordSeparators() const\n{\n    return QStringList();\n}\n\n\n// Default implementation to return the list of keywords that can start a\n// block.\nconst char *QsciLexer::blockStartKeyword(int *) const\n{\n    return 0;\n}\n\n\n// Default implementation to return the list of characters that can start a\n// block.\nconst char *QsciLexer::blockStart(int *) const\n{\n    return 0;\n}\n\n\n// Default implementation to return the list of characters that can end a\n// block.\nconst char *QsciLexer::blockEnd(int *) const\n{\n    return 0;\n}\n\n\n// Default implementation to return the style used for braces.\nint QsciLexer::braceStyle() const\n{\n    return -1;\n}\n\n\n// Default implementation to return the number of lines to look back when\n// auto-indenting.\nint QsciLexer::blockLookback() const\n{\n    return 20;\n}\n\n\n// Default implementation to return the case sensitivity of the language.\nbool QsciLexer::caseSensitive() const\n{\n    return true;\n}\n\n\n// Default implementation to return the characters that make up a word.\nconst char *QsciLexer::wordCharacters() const\n{\n    return 0;\n}\n\n\n// Default implementation to return the style used for whitespace.\nint QsciLexer::defaultStyle() const\n{\n    return 0;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexer::color(int style) const\n{\n    return styleData(style).color;\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexer::paper(int style) const\n{\n    return styleData(style).paper;\n}\n\n\n// Returns the font for a style.\nQFont QsciLexer::font(int style) const\n{\n    return styleData(style).font;\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexer::eolFill(int style) const\n{\n    return styleData(style).eol_fill;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexer::keywords(int) const\n{\n    return 0;\n}\n\n\n// Returns the default EOL fill for a style.\nbool QsciLexer::defaultEolFill(int) const\n{\n    return false;\n}\n\n\n// Returns the default font for a style.\nQFont QsciLexer::defaultFont(int) const\n{\n    return defaultFont();\n}\n\n\n// Returns the default font.\nQFont QsciLexer::defaultFont() const\n{\n    return defFont;\n}\n\n\n// Sets the default font.\nvoid QsciLexer::setDefaultFont(const QFont &f)\n{\n    defFont = f;\n}\n\n\n// Returns the default text colour for a style.\nQColor QsciLexer::defaultColor(int) const\n{\n    return defaultColor();\n}\n\n\n// Returns the default text colour.\nQColor QsciLexer::defaultColor() const\n{\n    return defColor;\n}\n\n\n// Sets the default text colour.\nvoid QsciLexer::setDefaultColor(const QColor &c)\n{\n    defColor = c;\n}\n\n\n// Returns the default paper colour for a styles.\nQColor QsciLexer::defaultPaper(int) const\n{\n    return defaultPaper();\n}\n\n\n// Returns the default paper colour.\nQColor QsciLexer::defaultPaper() const\n{\n    return defPaper;\n}\n\n\n// Sets the default paper colour.\nvoid QsciLexer::setDefaultPaper(const QColor &c)\n{\n    defPaper = c;\n\n    // Normally the default values are only intended to provide defaults when a\n    // lexer is first setup because once a style has been referenced then a\n    // copy of the default is made.  However the default paper is a special\n    // case because there is no other way to set the background colour used\n    // where there is no text.  Therefore we also actively set it.\n    setPaper(c, QsciScintillaBase::STYLE_DEFAULT);\n}\n\n\n// Read properties from the settings.\nbool QsciLexer::readProperties(QSettings &,const QString &)\n{\n    return true;\n}\n\n\n// Refresh all properties.\nvoid QsciLexer::refreshProperties()\n{\n}\n\n\n// Write properties to the settings.\nbool QsciLexer::writeProperties(QSettings &,const QString &) const\n{\n    return true;\n}\n\n\n// Restore the user settings.\nbool QsciLexer::readSettings(QSettings &qs,const char *prefix)\n{\n    bool ok, flag, rc = true;\n    int num;\n    QString key, full_key;\n    QStringList fdesc;\n\n    setStyleDefaults();\n\n    // Read the styles.\n    for (int i = 0; i < 128; ++i)\n    {\n        // Ignore invalid styles.\n        if (description(i).isEmpty())\n            continue;\n\n        key.sprintf(\"%s/%s/style%d/\",prefix,language(),i);\n\n        // Read the foreground colour.\n        full_key = key + \"color\";\n\n        ok = qs.contains(full_key);\n        num = qs.value(full_key).toInt();\n\n        if (ok)\n            setColor(QColor((num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff), i);\n        else\n            rc = false;\n\n        // Read the end-of-line fill.\n        full_key = key + \"eolfill\";\n\n        ok = qs.contains(full_key);\n        flag = qs.value(full_key, false).toBool();\n\n        if (ok)\n            setEolFill(flag, i);\n        else\n            rc = false;\n\n        // Read the font.  First try the deprecated format that uses an integer\n        // point size.\n        full_key = key + \"font\";\n\n        ok = qs.contains(full_key);\n        fdesc = qs.value(full_key).toStringList();\n\n        if (ok && fdesc.count() == 5)\n        {\n            QFont f;\n\n            f.setFamily(fdesc[0]);\n            f.setPointSize(fdesc[1].toInt());\n            f.setBold(fdesc[2].toInt());\n            f.setItalic(fdesc[3].toInt());\n            f.setUnderline(fdesc[4].toInt());\n\n            setFont(f, i);\n        }\n        else\n            rc = false;\n\n        // Now try the newer font format that uses a floating point point size.\n        // It is not an error if it doesn't exist.\n        full_key = key + \"font2\";\n\n        ok = qs.contains(full_key);\n        fdesc = qs.value(full_key).toStringList();\n\n        if (ok)\n        {\n            // Allow for future versions with more fields.\n            if (fdesc.count() >= 5)\n            {\n                QFont f;\n\n                f.setFamily(fdesc[0]);\n                f.setPointSizeF(fdesc[1].toDouble());\n                f.setBold(fdesc[2].toInt());\n                f.setItalic(fdesc[3].toInt());\n                f.setUnderline(fdesc[4].toInt());\n\n                setFont(f, i);\n            }\n            else\n            {\n                rc = false;\n            }\n        }\n\n        // Read the background colour.\n        full_key = key + \"paper\";\n\n        ok = qs.contains(full_key);\n        num = qs.value(full_key).toInt();\n\n        if (ok)\n            setPaper(QColor((num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff), i);\n        else\n            rc = false;\n    }\n\n    // Read the properties.\n    key.sprintf(\"%s/%s/properties/\",prefix,language());\n\n    if (!readProperties(qs,key))\n        rc = false;\n\n    refreshProperties();\n\n    // Read the rest.\n    key.sprintf(\"%s/%s/\",prefix,language());\n\n    // Read the default foreground colour.\n    full_key = key + \"defaultcolor\";\n\n    ok = qs.contains(full_key);\n    num = qs.value(full_key).toInt();\n\n    if (ok)\n        setDefaultColor(QColor((num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff));\n    else\n        rc = false;\n\n    // Read the default background colour.\n    full_key = key + \"defaultpaper\";\n\n    ok = qs.contains(full_key);\n    num = qs.value(full_key).toInt();\n\n    if (ok)\n        setDefaultPaper(QColor((num >> 16) & 0xff, (num >> 8) & 0xff, num & 0xff));\n    else\n        rc = false;\n\n    // Read the default font.  First try the deprecated format that uses an\n    // integer point size.\n    full_key = key + \"defaultfont\";\n\n    ok = qs.contains(full_key);\n    fdesc = qs.value(full_key).toStringList();\n\n    if (ok && fdesc.count() == 5)\n    {\n        QFont f;\n\n        f.setFamily(fdesc[0]);\n        f.setPointSize(fdesc[1].toInt());\n        f.setBold(fdesc[2].toInt());\n        f.setItalic(fdesc[3].toInt());\n        f.setUnderline(fdesc[4].toInt());\n\n        setDefaultFont(f);\n    }\n    else\n        rc = false;\n\n    // Now try the newer font format that uses a floating point point size.  It\n    // is not an error if it doesn't exist.\n    full_key = key + \"defaultfont2\";\n\n    ok = qs.contains(full_key);\n    fdesc = qs.value(full_key).toStringList();\n\n    if (ok)\n    {\n        // Allow for future versions with more fields.\n        if (fdesc.count() >= 5)\n        {\n            QFont f;\n\n            f.setFamily(fdesc[0]);\n            f.setPointSizeF(fdesc[1].toDouble());\n            f.setBold(fdesc[2].toInt());\n            f.setItalic(fdesc[3].toInt());\n            f.setUnderline(fdesc[4].toInt());\n\n            setDefaultFont(f);\n        }\n        else\n        {\n            rc = false;\n        }\n    }\n\n    full_key = key + \"autoindentstyle\";\n\n    ok = qs.contains(full_key);\n    num = qs.value(full_key).toInt();\n\n    if (ok)\n        setAutoIndentStyle(num);\n    else\n        rc = false;\n\n    return rc;\n}\n\n\n// Save the user settings.\nbool QsciLexer::writeSettings(QSettings &qs,const char *prefix) const\n{\n    bool rc = true;\n    QString key, fmt(\"%1\");\n    int num;\n    QStringList fdesc;\n\n    setStyleDefaults();\n\n    // Write the styles.\n    for (int i = 0; i < 128; ++i)\n    {\n        // Ignore invalid styles.\n        if (description(i).isEmpty())\n            continue;\n\n        QColor c;\n\n        key.sprintf(\"%s/%s/style%d/\",prefix,language(),i);\n\n        // Write the foreground colour.\n        c = color(i);\n        num = (c.red() << 16) | (c.green() << 8) | c.blue();\n\n        qs.setValue(key + \"color\", num);\n\n        // Write the end-of-line fill.\n        qs.setValue(key + \"eolfill\", eolFill(i));\n\n        // Write the font using the deprecated format.\n        QFont f = font(i);\n\n        fdesc.clear();\n        fdesc += f.family();\n        fdesc += fmt.arg(f.pointSize());\n\n        // The casts are for Borland.\n        fdesc += fmt.arg((int)f.bold());\n        fdesc += fmt.arg((int)f.italic());\n        fdesc += fmt.arg((int)f.underline());\n\n        qs.setValue(key + \"font\", fdesc);\n\n        // Write the font using the newer format.\n        fdesc[1] = fmt.arg(f.pointSizeF());\n\n        qs.setValue(key + \"font2\", fdesc);\n\n        // Write the background colour.\n        c = paper(i);\n        num = (c.red() << 16) | (c.green() << 8) | c.blue();\n\n        qs.setValue(key + \"paper\", num);\n    }\n\n    // Write the properties.\n    key.sprintf(\"%s/%s/properties/\",prefix,language());\n\n    if (!writeProperties(qs,key))\n        rc = false;\n\n    // Write the rest.\n    key.sprintf(\"%s/%s/\",prefix,language());\n\n    // Write the default foreground colour.\n    num = (defColor.red() << 16) | (defColor.green() << 8) | defColor.blue();\n\n    qs.setValue(key + \"defaultcolor\", num);\n\n    // Write the default background colour.\n    num = (defPaper.red() << 16) | (defPaper.green() << 8) | defPaper.blue();\n\n    qs.setValue(key + \"defaultpaper\", num);\n\n    // Write the default font using the deprecated format.\n    fdesc.clear();\n    fdesc += defFont.family();\n    fdesc += fmt.arg(defFont.pointSize());\n\n    // The casts are for Borland.\n    fdesc += fmt.arg((int)defFont.bold());\n    fdesc += fmt.arg((int)defFont.italic());\n    fdesc += fmt.arg((int)defFont.underline());\n\n    qs.setValue(key + \"defaultfont\", fdesc);\n\n    // Write the font using the newer format.\n    fdesc[1] = fmt.arg(defFont.pointSizeF());\n\n    qs.setValue(key + \"defaultfont2\", fdesc);\n\n    qs.setValue(key + \"autoindentstyle\", autoIndStyle);\n\n    return rc;\n}\n\n\n// Return the auto-indentation style.\nint QsciLexer::autoIndentStyle()\n{\n    // We can't do this in the ctor because we want the virtuals to work.\n    if (autoIndStyle < 0)\n        autoIndStyle = (blockStartKeyword() || blockStart() || blockEnd()) ?\n                    0 : QsciScintilla::AiMaintain;\n\n    return autoIndStyle;\n}\n\n\n// Set the auto-indentation style.\nvoid QsciLexer::setAutoIndentStyle(int autoindentstyle)\n{\n    autoIndStyle = autoindentstyle;\n}\n\n\n// Set the foreground colour for a style.\nvoid QsciLexer::setColor(const QColor &c, int style)\n{\n    if (style >= 0)\n    {\n        styleData(style).color = c;\n        emit colorChanged(c, style);\n    }\n    else\n        for (int i = 0; i < 128; ++i)\n            if (!description(i).isEmpty())\n                setColor(c, i);\n}\n\n\n// Set the end-of-line fill for a style.\nvoid QsciLexer::setEolFill(bool eolfill, int style)\n{\n    if (style >= 0)\n    {\n        styleData(style).eol_fill = eolfill;\n        emit eolFillChanged(eolfill, style);\n    }\n    else\n        for (int i = 0; i < 128; ++i)\n            if (!description(i).isEmpty())\n                setEolFill(eolfill, i);\n}\n\n\n// Set the font for a style.\nvoid QsciLexer::setFont(const QFont &f, int style)\n{\n    if (style >= 0)\n    {\n        styleData(style).font = f;\n        emit fontChanged(f, style);\n    }\n    else\n        for (int i = 0; i < 128; ++i)\n            if (!description(i).isEmpty())\n                setFont(f, i);\n}\n\n\n// Set the background colour for a style.\nvoid QsciLexer::setPaper(const QColor &c, int style)\n{\n    if (style >= 0)\n    {\n        styleData(style).paper = c;\n        emit paperChanged(c, style);\n    }\n    else\n    {\n        for (int i = 0; i < 128; ++i)\n            if (!description(i).isEmpty())\n                setPaper(c, i);\n\n        emit paperChanged(c, QsciScintillaBase::STYLE_DEFAULT);\n    }\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp",
    "content": "// This module implements the QsciLexerAVS class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexeravs.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerAVS::QsciLexerAVS(QObject *parent)\n    : QsciLexer(parent),\n      fold_comments(false), fold_compact(true)\n{\n}\n\n\n// The dtor.\nQsciLexerAVS::~QsciLexerAVS()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerAVS::language() const\n{\n    return \"AVS\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerAVS::lexer() const\n{\n    return \"avs\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerAVS::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerAVS::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerAVS::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n    case Operator:\n        return QColor(0x00, 0x00, 0x00);\n\n    case BlockComment:\n    case NestedBlockComment:\n    case LineComment:\n        return QColor(0x00, 0x7f, 0x00);\n\n    case Number:\n    case Function:\n        return QColor(0x00, 0x7f, 0x7f);\n\n    case String:\n    case TripleString:\n        return QColor(0x7f, 0x00, 0x7f);\n\n    case Keyword:\n    case Filter:\n    case ClipProperty:\n        return QColor(0x00, 0x00, 0x7f);\n\n    case Plugin:\n        return QColor(0x00, 0x80, 0xc0);\n\n    case KeywordSet6:\n        return QColor(0x80, 0x00, 0xff);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerAVS::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case BlockComment:\n    case NestedBlockComment:\n    case LineComment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\", 9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Georgia\", 13);\n#else\n        f = QFont(\"Bitstream Vera Serif\", 9);\n#endif\n        break;\n\n    case Keyword:\n    case Filter:\n    case Plugin:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerAVS::keywords(int set) const\n{\n    if (set == 1)\n        return \"true false return global\";\n\n    if (set == 2)\n        return\n            \"addborders alignedsplice amplify amplifydb animate applyrange \"\n            \"assumebff assumefieldbased assumefps assumeframebased \"\n            \"assumesamplerate assumescaledfps assumetff audiodub audiodubex \"\n            \"avifilesource avisource bicubicresize bilinearresize \"\n            \"blackmanresize blackness blankclip blur bob cache changefps \"\n            \"colorbars colorkeymask coloryuv compare complementparity \"\n            \"conditionalfilter conditionalreader convertaudio \"\n            \"convertaudioto16bit convertaudioto24bit convertaudioto32bit \"\n            \"convertaudioto8bit convertaudiotofloat convertbacktoyuy2 \"\n            \"convertfps converttobackyuy2 converttomono converttorgb \"\n            \"converttorgb24 converttorgb32 converttoy8 converttoyv16 \"\n            \"converttoyv24 converttoyv411 converttoyuy2 converttoyv12 crop \"\n            \"cropbottom delayaudio deleteframe dissolve distributor \"\n            \"doubleweave duplicateframe ensurevbrmp3sync fadein fadein0 \"\n            \"fadein2 fadeio fadeio0 fadeio2 fadeout fadeout0 fadeout2 \"\n            \"fixbrokenchromaupsampling fixluminance fliphorizontal \"\n            \"flipvertical frameevaluate freezeframe gaussresize \"\n            \"generalconvolution getchannel getchannels getmtmode getparity \"\n            \"grayscale greyscale histogram horizontalreduceby2 imagereader \"\n            \"imagesource imagewriter info interleave internalcache \"\n            \"internalcachemt invert killaudio killvideo lanczos4resize \"\n            \"lanczosresize layer letterbox levels limiter loop mask maskhs \"\n            \"max merge mergeargb mergechannels mergechroma mergeluma mergergb \"\n            \"messageclip min mixaudio monotostereo normalize null \"\n            \"opendmlsource overlay peculiarblend pointresize pulldown \"\n            \"reduceby2 resampleaudio resetmask reverse rgbadjust scriptclip \"\n            \"segmentedavisource segmenteddirectshowsource selecteven \"\n            \"selectevery selectodd selectrangeevery separatefields setmtmode \"\n            \"sharpen showalpha showblue showfiveversions showframenumber \"\n            \"showgreen showred showsmpte showtime sincresize skewrows \"\n            \"spatialsoften spline16resize spline36resize spline64resize ssrc \"\n            \"stackhorizontal stackvertical subtitle subtract supereq \"\n            \"swapfields swapuv temporalsoften timestretch tone trim turn180 \"\n            \"turnleft turnright tweak unalignedsplice utoy utoy8 version \"\n            \"verticalreduceby2 vtoy vtoy8 wavsource weave writefile \"\n            \"writefileend writefileif writefilestart ytouv\";\n\n    if (set == 3)\n        return\n            \"addgrain addgrainc agc_hdragc analyzelogo animeivtc asharp \"\n            \"audiograph autocrop autoyuy2 avsrecursion awarpsharp \"\n            \"bassaudiosource bicublinresize bifrost binarize blendfields \"\n            \"blindpp blockbuster bordercontrol cfielddiff cframediff \"\n            \"chromashift cnr2 colormatrix combmask contra convolution3d \"\n            \"convolution3dyv12 dctfilter ddcc deblendlogo deblock deblock_qed \"\n            \"decimate decomb dedup deen deflate degrainmedian depan \"\n            \"depanestimate depaninterleave depanscenes depanstabilize \"\n            \"descratch despot dfttest dgbob dgsource directshowsource \"\n            \"distancefunction dss2 dup dupmc edeen edgemask ediupsizer eedi2 \"\n            \"eedi3 eedi3_rpow2 expand faerydust fastbicubicresize \"\n            \"fastbilinearresize fastediupsizer dedgemask fdecimate \"\n            \"ffaudiosource ffdshow ffindex ffmpegsource ffmpegsource2 \"\n            \"fft3dfilter fft3dgpu ffvideosource fielddeinterlace fielddiff \"\n            \"fillmargins fity2uv fity2u fity2v fitu2y fitv2y fluxsmooth \"\n            \"fluxsmoothst fluxsmootht framediff framenumber frfun3b frfun7 \"\n            \"gicocu golddust gradfun2db grapesmoother greedyhma grid \"\n            \"guavacomb hqdn3d hybridfupp hysteresymask ibob \"\n            \"improvesceneswitch inflate inpand inpaintlogo interframe \"\n            \"interlacedresize interlacedwarpedresize interleaved2planar \"\n            \"iscombed iscombedt iscombedtivtc kerneldeint leakkernelbob \"\n            \"leakkerneldeint limitedsharpen limitedsharpenfaster logic lsfmod \"\n            \"lumafilter lumayv12 manalyse maskeddeinterlace maskedmerge \"\n            \"maskedmix mblockfps mcompensate mctemporaldenoise \"\n            \"mctemporaldenoisepp mdegrain1 mdegrain2 mdegrain3 mdepan \"\n            \"medianblur mergehints mflow mflowblur mflowfps mflowinter \"\n            \"minblur mipsmooth mmask moderatesharpen monitorfilter motionmask \"\n            \"mpasource mpeg2source mrecalculate mscdetection msharpen mshow \"\n            \"msmooth msu_fieldshiftfixer msu_frc msuper mt mt_adddiff \"\n            \"mt_average mt_binarize mt_circle mt_clamp mt_convolution \"\n            \"mt_deflate mt_diamond mt_edge mt_ellipse mt_expand \"\n            \"mt_freeellipse mt_freelosange mt_freerectangle mt_hysteresis \"\n            \"mt_infix mt_inflate mt_inpand mt_invert mt_logic mt_losange \"\n            \"mt_lut mt_lutf mt_luts mt_lutspa mt_lutsx mt_lutxy mt_lutxyz \"\n            \"mt_makediff mt_mappedblur mt_merge mt_motion mt_polish \"\n            \"mt_rectangle mt_square mti mtsource multidecimate mvanalyse \"\n            \"mvblockfps mvchangecompensate mvcompensate mvdegrain1 mvdegrain2 \"\n            \"mvdegrain3 mvdenoise mvdepan mvflow mvflowblur mvflowfps \"\n            \"mvflowfps2 mvflowinter mvincrease mvmask mvrecalculate \"\n            \"mvscdetection mvshow nicac3source nicdtssource niclpcmsource \"\n            \"nicmpasource nicmpg123source nnedi nnedi2 nnedi2_rpow2 nnedi3 \"\n            \"nnedi3_rpow2 nomosmooth overlaymask peachsmoother pixiedust \"\n            \"planar2interleaved qtgmc qtinput rawavsource rawsource \"\n            \"reduceflicker reinterpolate411 removedirt removedust removegrain \"\n            \"removegrainhd removetemporalgrain repair requestlinear \"\n            \"reversefielddominance rgb3dlut rgdeinterlace rgsdeinterlace \"\n            \"rgblut rotate sangnom seesaw sharpen2 showchannels \"\n            \"showcombedtivtc smartdecimate smartdeinterlace smdegrain \"\n            \"smoothdeinterlace smoothuv soothess soxfilter spacedust sshiq \"\n            \"ssim ssiq stmedianfilter t3dlut tanisotropic tbilateral tcanny \"\n            \"tcomb tcombmask tcpserver tcpsource tdecimate tdeint tedgemask \"\n            \"telecide temporalcleaner temporalrepair temporalsmoother \"\n            \"tfieldblank tfm tisophote tivtc tmaskblank tmaskedmerge \"\n            \"tmaskedmerge3 tmm tmonitor tnlmeans tomsmocomp toon textsub \"\n            \"ttempsmooth ttempsmoothf tunsharp unblock uncomb undot unfilter \"\n            \"unsharpmask vaguedenoiser variableblur verticalcleaner \"\n            \"videoscope vinverse vobsub vqmcalc warpedresize warpsharp \"\n            \"xsharpen yadif yadifmod yuy2lut yv12convolution \"\n            \"yv12interlacedreduceby2 yv12interlacedselecttopfields yv12layer \"\n            \"yv12lut yv12lutxy yv12substract yv12torgb24 yv12toyuy2\";\n\n    if (set == 4)\n        return\n            \"abs apply assert bool ceil chr clip continueddenominator \"\n            \"continuednumerator cos default defined eval averagechromau \"\n            \"averagechromav averageluma chromaudifference chromavdifference \"\n            \"lumadifference exist exp findstr float floor frac hexvalue \"\n            \"import int isbool isclip isfloat isint isstring lcase leftstr \"\n            \"load_stdcall_plugin loadcplugin loadplugin loadvfapiplugin \"\n            \"loadvirtualdubplugin log midstr muldiv nop opt_allowfloataudio \"\n            \"opt_avipadscanlines opt_dwchannelmask opt_usewaveextensible \"\n            \"opt_vdubplanarhack pi pow rand revstr rightstr round scriptdir \"\n            \"scriptfile scriptname select setmemorymax \"\n            \"setplanarlegacyalignment rgbdifference rgbdifferencefromprevious \"\n            \"rgbdifferencetonext udifferencefromprevious udifferencetonext \"\n            \"setworkingdir sign sin spline sqrt string strlen time ucase \"\n            \"undefined value versionnumber versionstring uplanemax \"\n            \"uplanemedian uplanemin uplaneminmaxdifference \"\n            \"vdifferencefromprevious vdifferencetonext vplanemax vplanemedian \"\n            \"vplanemin vplaneminmaxdifference ydifferencefromprevious \"\n            \"ydifferencetonext yplanemax yplanemedian yplanemin \"\n            \"yplaneminmaxdifference\";\n\n    if (set == 5)\n        return\n            \"audiobits audiochannels audiolength audiolengthf audiorate \"\n            \"framecount framerate frameratedenominator frameratenumerator \"\n            \"getleftchannel getrightchannel hasaudio hasvideo height \"\n            \"isaudiofloat isaudioint isfieldbased isframebased isinterleaved \"\n            \"isplanar isrgb isrgb24 isrgb32 isyuv isyuy2 isyv12 width\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerAVS::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case BlockComment:\n        return tr(\"Block comment\");\n\n    case NestedBlockComment:\n        return tr(\"Nested block comment\");\n\n    case LineComment:\n        return tr(\"Line comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case String:\n        return tr(\"Double-quoted string\");\n\n    case TripleString:\n        return tr(\"Triple double-quoted string\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case Filter:\n        return tr(\"Filter\");\n\n    case Plugin:\n        return tr(\"Plugin\");\n\n    case Function:\n        return tr(\"Function\");\n\n    case ClipProperty:\n        return tr(\"Clip property\");\n\n    case KeywordSet6:\n        return tr(\"User defined\");\n    }\n\n    return QString();\n}\n\n\n// Refresh all properties.\nvoid QsciLexerAVS::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerAVS::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerAVS::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n\n    return rc;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerAVS::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerAVS::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerAVS::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerAVS::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerAVS::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerAVS::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp",
    "content": "// This module implements the QsciLexerBash class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerbash.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerBash::QsciLexerBash(QObject *parent)\n    : QsciLexer(parent), fold_comments(false), fold_compact(true)\n{\n}\n\n\n// The dtor.\nQsciLexerBash::~QsciLexerBash()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerBash::language() const\n{\n    return \"Bash\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerBash::lexer() const\n{\n    return \"bash\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerBash::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerBash::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$@%&\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerBash::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Error:\n    case Backticks:\n        return QColor(0xff,0xff,0x00);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Keyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case SingleQuotedHereDocument:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Operator:\n    case Identifier:\n    case Scalar:\n    case ParameterExpansion:\n    case HereDocumentDelimiter:\n        return QColor(0x00,0x00,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerBash::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case SingleQuotedHereDocument:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerBash::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case Operator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerBash::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"alias ar asa awk banner basename bash bc bdiff break \"\n            \"bunzip2 bzip2 cal calendar case cat cc cd chmod \"\n            \"cksum clear cmp col comm compress continue cp cpio \"\n            \"crypt csplit ctags cut date dc dd declare deroff dev \"\n            \"df diff diff3 dircmp dirname do done du echo ed \"\n            \"egrep elif else env esac eval ex exec exit expand \"\n            \"export expr false fc fgrep fi file find fmt fold for \"\n            \"function functions getconf getopt getopts grep gres \"\n            \"hash head help history iconv id if in integer jobs \"\n            \"join kill local lc let line ln logname look ls m4 \"\n            \"mail mailx make man mkdir more mt mv newgrp nl nm \"\n            \"nohup ntps od pack paste patch pathchk pax pcat perl \"\n            \"pg pr print printf ps pwd read readonly red return \"\n            \"rev rm rmdir sed select set sh shift size sleep sort \"\n            \"spell split start stop strings strip stty sum \"\n            \"suspend sync tail tar tee test then time times touch \"\n            \"tr trap true tsort tty type typeset ulimit umask \"\n            \"unalias uname uncompress unexpand uniq unpack unset \"\n            \"until uudecode uuencode vi vim vpax wait wc whence \"\n            \"which while who wpaste wstart xargs zcat \"\n\n            \"chgrp chown chroot dir dircolors factor groups \"\n            \"hostid install link md5sum mkfifo mknod nice pinky \"\n            \"printenv ptx readlink seq sha1sum shred stat su tac \"\n            \"unlink users vdir whoami yes\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerBash::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Error:\n        return tr(\"Error\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case Scalar:\n        return tr(\"Scalar\");\n\n    case ParameterExpansion:\n        return tr(\"Parameter expansion\");\n\n    case Backticks:\n        return tr(\"Backticks\");\n\n    case HereDocumentDelimiter:\n        return tr(\"Here document delimiter\");\n\n    case SingleQuotedHereDocument:\n        return tr(\"Single-quoted here document\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerBash::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case Error:\n        return QColor(0xff,0x00,0x00);\n\n    case Scalar:\n        return QColor(0xff,0xe0,0xe0);\n\n    case ParameterExpansion:\n        return QColor(0xff,0xff,0xe0);\n\n    case Backticks:\n        return QColor(0xa0,0x80,0x80);\n\n    case HereDocumentDelimiter:\n    case SingleQuotedHereDocument:\n        return QColor(0xdd,0xd0,0xdd);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerBash::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerBash::readProperties(QSettings &qs, const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerBash::writeProperties(QSettings &qs, const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n\n    return rc;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerBash::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerBash::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerBash::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\", (fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerBash::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerBash::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerBash::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\", (fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp",
    "content": "// This module implements the QsciLexerBatch class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerbatch.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerBatch::QsciLexerBatch(QObject *parent)\n    : QsciLexer(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerBatch::~QsciLexerBatch()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerBatch::language() const\n{\n    return \"Batch\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerBatch::lexer() const\n{\n    return \"batch\";\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerBatch::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerBatch::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n    case Operator:\n        return QColor(0x00,0x00,0x00);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case Keyword:\n    case ExternalCommand:\n        return QColor(0x00,0x00,0x7f);\n\n    case Label:\n        return QColor(0x7f,0x00,0x7f);\n\n    case HideCommandChar:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Variable:\n        return QColor(0x80,0x00,0x80);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerBatch::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case Label:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerBatch::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case ExternalCommand:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerBatch::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"rem set if exist errorlevel for in do break call \"\n            \"chcp cd chdir choice cls country ctty date del \"\n            \"erase dir echo exit goto loadfix loadhigh mkdir md \"\n            \"move path pause prompt rename ren rmdir rd shift \"\n            \"time type ver verify vol com con lpt nul\";\n\n    return 0;\n}\n\n\n// Return the case sensitivity.\nbool QsciLexerBatch::caseSensitive() const\n{\n    return false;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerBatch::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case Label:\n        return tr(\"Label\");\n\n    case HideCommandChar:\n        return tr(\"Hide command character\");\n\n    case ExternalCommand:\n        return tr(\"External command\");\n\n    case Variable:\n        return tr(\"Variable\");\n\n    case Operator:\n        return tr(\"Operator\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerBatch::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case Label:\n        return QColor(0x60,0x60,0x60);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp",
    "content": "// This module implements the QsciLexerCMake class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexercmake.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerCMake::QsciLexerCMake(QObject *parent)\n    : QsciLexer(parent), fold_atelse(false)\n{\n}\n\n\n// The dtor.\nQsciLexerCMake::~QsciLexerCMake()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerCMake::language() const\n{\n    return \"CMake\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerCMake::lexer() const\n{\n    return \"cmake\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerCMake::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n    case KeywordSet3:\n        return QColor(0x00,0x00,0x00);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case String:\n    case StringLeftQuote:\n    case StringRightQuote:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Function:\n    case BlockWhile:\n    case BlockForeach:\n    case BlockIf:\n    case BlockMacro:\n        return QColor(0x00,0x00,0x7f);\n\n    case Variable:\n        return QColor(0x80,0x00,0x00);\n\n    case Label:\n    case StringVariable:\n        return QColor(0xcc,0x33,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerCMake::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Function:\n    case BlockWhile:\n    case BlockForeach:\n    case BlockIf:\n    case BlockMacro:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerCMake::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"add_custom_command add_custom_target add_definitions \"\n            \"add_dependencies add_executable add_library add_subdirectory \"\n            \"add_test aux_source_directory build_command build_name \"\n            \"cmake_minimum_required configure_file create_test_sourcelist \"\n            \"else elseif enable_language enable_testing endforeach endif \"\n            \"endmacro endwhile exec_program execute_process \"\n            \"export_library_dependencies file find_file find_library \"\n            \"find_package find_path find_program fltk_wrap_ui foreach \"\n            \"get_cmake_property get_directory_property get_filename_component \"\n            \"get_source_file_property get_target_property get_test_property \"\n            \"if include include_directories include_external_msproject \"\n            \"include_regular_expression install install_files \"\n            \"install_programs install_targets link_directories link_libraries \"\n            \"list load_cache load_command macro make_directory \"\n            \"mark_as_advanced math message option output_required_files \"\n            \"project qt_wrap_cpp qt_wrap_ui remove remove_definitions \"\n            \"separate_arguments set set_directory_properties \"\n            \"set_source_files_properties set_target_properties \"\n            \"set_tests_properties site_name source_group string \"\n            \"subdir_depends subdirs target_link_libraries try_compile try_run \"\n            \"use_mangled_mesa utility_source variable_requires \"\n            \"vtk_make_instantiator vtk_wrap_java vtk_wrap_python vtk_wrap_tcl \"\n            \"while write_file\";\n\n    if (set == 2)\n        return\n            \"ABSOLUTE ABSTRACT ADDITIONAL_MAKE_CLEAN_FILES ALL AND APPEND \"\n            \"ARGS ASCII BEFORE CACHE CACHE_VARIABLES CLEAR COMMAND COMMANDS \"\n            \"COMMAND_NAME COMMENT COMPARE COMPILE_FLAGS COPYONLY DEFINED \"\n            \"DEFINE_SYMBOL DEPENDS DOC EQUAL ESCAPE_QUOTES EXCLUDE \"\n            \"EXCLUDE_FROM_ALL EXISTS EXPORT_MACRO EXT EXTRA_INCLUDE \"\n            \"FATAL_ERROR FILE FILES FORCE FUNCTION GENERATED GLOB \"\n            \"GLOB_RECURSE GREATER GROUP_SIZE HEADER_FILE_ONLY HEADER_LOCATION \"\n            \"IMMEDIATE INCLUDES INCLUDE_DIRECTORIES INCLUDE_INTERNALS \"\n            \"INCLUDE_REGULAR_EXPRESSION LESS LINK_DIRECTORIES LINK_FLAGS \"\n            \"LOCATION MACOSX_BUNDLE MACROS MAIN_DEPENDENCY MAKE_DIRECTORY \"\n            \"MATCH MATCHALL MATCHES MODULE NAME NAME_WE NOT NOTEQUAL \"\n            \"NO_SYSTEM_PATH OBJECT_DEPENDS OPTIONAL OR OUTPUT OUTPUT_VARIABLE \"\n            \"PATH PATHS POST_BUILD POST_INSTALL_SCRIPT PREFIX PREORDER \"\n            \"PRE_BUILD PRE_INSTALL_SCRIPT PRE_LINK PROGRAM PROGRAM_ARGS \"\n            \"PROPERTIES QUIET RANGE READ REGEX REGULAR_EXPRESSION REPLACE \"\n            \"REQUIRED RETURN_VALUE RUNTIME_DIRECTORY SEND_ERROR SHARED \"\n            \"SOURCES STATIC STATUS STREQUAL STRGREATER STRLESS SUFFIX TARGET \"\n            \"TOLOWER TOUPPER VAR VARIABLES VERSION WIN32 WRAP_EXCLUDE WRITE \"\n            \"APPLE MINGW MSYS CYGWIN BORLAND WATCOM MSVC MSVC_IDE MSVC60 \"\n            \"MSVC70 MSVC71 MSVC80 CMAKE_COMPILER_2005 OFF ON\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerCMake::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case String:\n        return tr(\"String\");\n\n    case StringLeftQuote:\n        return tr(\"Left quoted string\");\n\n    case StringRightQuote:\n        return tr(\"Right quoted string\");\n\n    case Function:\n        return tr(\"Function\");\n\n    case Variable:\n        return tr(\"Variable\");\n\n    case Label:\n        return tr(\"Label\");\n\n    case KeywordSet3:\n        return tr(\"User defined\");\n\n    case BlockWhile:\n        return tr(\"WHILE block\");\n\n    case BlockForeach:\n        return tr(\"FOREACH block\");\n\n    case BlockIf:\n        return tr(\"IF block\");\n\n    case BlockMacro:\n        return tr(\"MACRO block\");\n\n    case StringVariable:\n        return tr(\"Variable within a string\");\n\n    case Number:\n        return tr(\"Number\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerCMake::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case String:\n    case StringLeftQuote:\n    case StringRightQuote:\n    case StringVariable:\n        return QColor(0xee,0xee,0xee);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerCMake::refreshProperties()\n{\n    setAtElseProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerCMake::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_atelse = qs.value(prefix + \"foldatelse\", false).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerCMake::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldatelse\", fold_atelse);\n\n    return rc;\n}\n\n\n// Return true if ELSE blocks can be folded.\nbool QsciLexerCMake::foldAtElse() const\n{\n    return fold_atelse;\n}\n\n\n// Set if ELSE blocks can be folded.\nvoid QsciLexerCMake::setFoldAtElse(bool fold)\n{\n    fold_atelse = fold;\n\n    setAtElseProp();\n}\n\n\n// Set the \"fold.at.else\" property.\nvoid QsciLexerCMake::setAtElseProp()\n{\n    emit propertyChanged(\"fold.at.else\",(fold_atelse ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp",
    "content": "// This module implements the QsciLexerCoffeeScript class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexercoffeescript.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerCoffeeScript::QsciLexerCoffeeScript(QObject *parent)\n    : QsciLexer(parent),\n      fold_comments(false), fold_compact(true), style_preproc(false),\n      dollars(true)\n{\n}\n\n\n// The dtor.\nQsciLexerCoffeeScript::~QsciLexerCoffeeScript()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerCoffeeScript::language() const\n{\n    return \"CoffeeScript\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerCoffeeScript::lexer() const\n{\n    return \"coffeescript\";\n}\n\n\n// Return the set of character sequences that can separate auto-completion\n// words.\nQStringList QsciLexerCoffeeScript::autoCompletionWordSeparators() const\n{\n    QStringList wl;\n\n    wl << \".\";\n\n    return wl;\n}\n\n\n// Return the list of keywords that can start a block.\nconst char *QsciLexerCoffeeScript::blockStartKeyword(int *style) const\n{\n    if (style)\n        *style = Keyword;\n\n    return \"catch class do else finally for if try until when while\";\n}\n\n\n// Return the list of characters that can start a block.\nconst char *QsciLexerCoffeeScript::blockStart(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"{\";\n}\n\n\n// Return the list of characters that can end a block.\nconst char *QsciLexerCoffeeScript::blockEnd(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"}\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerCoffeeScript::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerCoffeeScript::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerCoffeeScript::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80, 0x80, 0x80);\n\n    case Comment:\n    case CommentLine:\n    case CommentBlock:\n    case BlockRegexComment:\n        return QColor(0x00, 0x7f, 0x00);\n\n    case CommentDoc:\n    case CommentLineDoc:\n        return QColor(0x3f, 0x70, 0x3f);\n\n    case Number:\n        return QColor(0x00, 0x7f, 0x7f);\n\n    case Keyword:\n        return QColor(0x00, 0x00, 0x7f);\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n        return QColor(0x7f, 0x00, 0x7f);\n\n    case PreProcessor:\n        return QColor(0x7f, 0x7f, 0x00);\n\n    case Operator:\n    case UnclosedString:\n        return QColor(0x00, 0x00, 0x00);\n\n    case VerbatimString:\n        return QColor(0x00, 0x7f, 0x00);\n\n    case Regex:\n    case BlockRegex:\n        return QColor(0x3f, 0x7f, 0x3f);\n\n    case CommentDocKeyword:\n        return QColor(0x30, 0x60, 0xa0);\n\n    case CommentDocKeywordError:\n        return QColor(0x80, 0x40, 0x20);\n\n    case InstanceProperty:\n        return QColor(0xc0, 0x60, 0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerCoffeeScript::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case UnclosedString:\n    case VerbatimString:\n    case Regex:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerCoffeeScript::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case CommentLine:\n    case CommentDoc:\n    case CommentLineDoc:\n    case CommentDocKeyword:\n    case CommentDocKeywordError:\n    case CommentBlock:\n    case BlockRegexComment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case Operator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case UnclosedString:\n    case VerbatimString:\n    case Regex:\n    case BlockRegex:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerCoffeeScript::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"true false null this new delete typeof in instanceof return \"\n            \"throw break continue debugger if else switch for while do try \"\n            \"catch finally class extends super \"\n            \"undefined then unless until loop of by when and or is isnt not \"\n            \"yes no on off\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerCoffeeScript::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"C-style comment\");\n\n    case CommentLine:\n        return tr(\"C++-style comment\");\n\n    case CommentDoc:\n        return tr(\"JavaDoc C-style comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case UUID:\n        return tr(\"IDL UUID\");\n\n    case PreProcessor:\n        return tr(\"Pre-processor block\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case VerbatimString:\n        return tr(\"C# verbatim string\");\n\n    case Regex:\n        return tr(\"Regular expression\");\n\n    case CommentLineDoc:\n        return tr(\"JavaDoc C++-style comment\");\n\n    case KeywordSet2:\n        return tr(\"Secondary keywords and identifiers\");\n\n    case CommentDocKeyword:\n        return tr(\"JavaDoc keyword\");\n\n    case CommentDocKeywordError:\n        return tr(\"JavaDoc keyword error\");\n\n    case GlobalClass:\n        return tr(\"Global classes\");\n\n    case CommentBlock:\n        return tr(\"Block comment\");\n\n    case BlockRegex:\n        return tr(\"Block regular expression\");\n\n    case BlockRegexComment:\n        return tr(\"Block regular expression comment\");\n\n    case InstanceProperty:\n        return tr(\"Instance property\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerCoffeeScript::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case UnclosedString:\n        return QColor(0xe0,0xc0,0xe0);\n\n    case VerbatimString:\n        return QColor(0xe0,0xff,0xe0);\n\n    case Regex:\n        return QColor(0xe0,0xf0,0xe0);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerCoffeeScript::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n    setStylePreprocProp();\n    setDollarsProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerCoffeeScript::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    style_preproc = qs.value(prefix + \"stylepreprocessor\", false).toBool();\n    dollars = qs.value(prefix + \"dollars\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerCoffeeScript::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"stylepreprocessor\", style_preproc);\n    qs.setValue(prefix + \"dollars\", dollars);\n\n    return rc;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerCoffeeScript::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerCoffeeScript::setCommentProp()\n{\n    emit propertyChanged(\"fold.coffeescript.comment\",\n            (fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact\nvoid QsciLexerCoffeeScript::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerCoffeeScript::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\", (fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if preprocessor lines are styled.\nvoid QsciLexerCoffeeScript::setStylePreprocessor(bool style)\n{\n    style_preproc = style;\n\n    setStylePreprocProp();\n}\n\n\n// Set the \"styling.within.preprocessor\" property.\nvoid QsciLexerCoffeeScript::setStylePreprocProp()\n{\n    emit propertyChanged(\"styling.within.preprocessor\",\n            (style_preproc ? \"1\" : \"0\"));\n}\n\n\n// Set if '$' characters are allowed.\nvoid QsciLexerCoffeeScript::setDollarsAllowed(bool allowed)\n{\n    dollars = allowed;\n\n    setDollarsProp();\n}\n\n\n// Set the \"lexer.cpp.allow.dollars\" property.\nvoid QsciLexerCoffeeScript::setDollarsProp()\n{\n    emit propertyChanged(\"lexer.cpp.allow.dollars\", (dollars ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp",
    "content": "// This module implements the QsciLexerCPP class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexercpp.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerCPP::QsciLexerCPP(QObject *parent, bool caseInsensitiveKeywords)\n    : QsciLexer(parent),\n      fold_atelse(false), fold_comments(false), fold_compact(true),\n      fold_preproc(true), style_preproc(false), dollars(true),\n      highlight_triple(false), highlight_hash(false), highlight_back(false),\n      highlight_escape(false), vs_escape(false),\n      nocase(caseInsensitiveKeywords)\n{\n}\n\n\n// The dtor.\nQsciLexerCPP::~QsciLexerCPP()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerCPP::language() const\n{\n    return \"C++\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerCPP::lexer() const\n{\n    return (nocase ? \"cppnocase\" : \"cpp\");\n}\n\n\n// Return the set of character sequences that can separate auto-completion\n// words.\nQStringList QsciLexerCPP::autoCompletionWordSeparators() const\n{\n    QStringList wl;\n\n    wl << \"::\" << \"->\" << \".\";\n\n    return wl;\n}\n\n\n// Return the list of keywords that can start a block.\nconst char *QsciLexerCPP::blockStartKeyword(int *style) const\n{\n    if (style)\n        *style = Keyword;\n\n    return \"case catch class default do else finally for if private \"\n           \"protected public struct try union while\";\n}\n\n\n// Return the list of characters that can start a block.\nconst char *QsciLexerCPP::blockStart(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"{\";\n}\n\n\n// Return the list of characters that can end a block.\nconst char *QsciLexerCPP::blockEnd(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"}\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerCPP::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerCPP::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerCPP::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80, 0x80, 0x80);\n\n    case Comment:\n    case CommentLine:\n        return QColor(0x00, 0x7f, 0x00);\n\n    case CommentDoc:\n    case CommentLineDoc:\n    case PreProcessorCommentLineDoc:\n        return QColor(0x3f, 0x70, 0x3f);\n\n    case Number:\n        return QColor(0x00, 0x7f, 0x7f);\n\n    case Keyword:\n        return QColor(0x00, 0x00, 0x7f);\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case RawString:\n        return QColor(0x7f, 0x00, 0x7f);\n\n    case PreProcessor:\n        return QColor(0x7f, 0x7f, 0x00);\n\n    case Operator:\n    case UnclosedString:\n        return QColor(0x00, 0x00, 0x00);\n\n    case VerbatimString:\n    case TripleQuotedVerbatimString:\n    case HashQuotedString:\n        return QColor(0x00, 0x7f, 0x00);\n\n    case Regex:\n        return QColor(0x3f, 0x7f, 0x3f);\n\n    case CommentDocKeyword:\n        return QColor(0x30, 0x60, 0xa0);\n\n    case CommentDocKeywordError:\n        return QColor(0x80, 0x40, 0x20);\n\n    case PreProcessorComment:\n        return QColor(0x65, 0x99, 0x00);\n\n    case InactiveDefault:\n    case InactiveUUID:\n    case InactiveCommentLineDoc:\n    case InactiveKeywordSet2:\n    case InactiveCommentDocKeyword:\n    case InactiveCommentDocKeywordError:\n    case InactivePreProcessorCommentLineDoc:\n        return QColor(0xc0, 0xc0, 0xc0);\n\n    case InactiveComment:\n    case InactiveCommentLine:\n    case InactiveNumber:\n    case InactiveVerbatimString:\n    case InactiveTripleQuotedVerbatimString:\n    case InactiveHashQuotedString:\n        return QColor(0x90, 0xb0, 0x90);\n\n    case InactiveCommentDoc:\n        return QColor(0xd0, 0xd0, 0xd0);\n\n    case InactiveKeyword:\n        return QColor(0x90, 0x90, 0xb0);\n\n    case InactiveDoubleQuotedString:\n    case InactiveSingleQuotedString:\n    case InactiveRawString:\n        return QColor(0xb0, 0x90, 0xb0);\n\n    case InactivePreProcessor:\n        return QColor(0xb0, 0xb0, 0x90);\n\n    case InactiveOperator:\n    case InactiveIdentifier:\n    case InactiveGlobalClass:\n        return QColor(0xb0, 0xb0, 0xb0);\n\n    case InactiveUnclosedString:\n        return QColor(0x00, 0x00, 0x00);\n\n    case InactiveRegex:\n        return QColor(0x7f, 0xaf, 0x7f);\n\n    case InactivePreProcessorComment:\n        return QColor(0xa0, 0xc0, 0x90);\n\n    case UserLiteral:\n        return QColor(0xc0, 0x60, 0x00);\n\n    case InactiveUserLiteral:\n        return QColor(0xd7, 0xa0, 0x90);\n\n    case TaskMarker:\n        return QColor(0xbe, 0x07, 0xff);\n\n    case InactiveTaskMarker:\n        return QColor(0xc3, 0xa1, 0xcf);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerCPP::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case UnclosedString:\n    case InactiveUnclosedString:\n    case VerbatimString:\n    case InactiveVerbatimString:\n    case Regex:\n    case InactiveRegex:\n    case TripleQuotedVerbatimString:\n    case InactiveTripleQuotedVerbatimString:\n    case HashQuotedString:\n    case InactiveHashQuotedString:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerCPP::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case InactiveComment:\n    case CommentLine:\n    case InactiveCommentLine:\n    case CommentDoc:\n    case InactiveCommentDoc:\n    case CommentLineDoc:\n    case InactiveCommentLineDoc:\n    case CommentDocKeyword:\n    case InactiveCommentDocKeyword:\n    case CommentDocKeywordError:\n    case InactiveCommentDocKeywordError:\n    case TaskMarker:\n    case InactiveTaskMarker:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case InactiveKeyword:\n    case Operator:\n    case InactiveOperator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case DoubleQuotedString:\n    case InactiveDoubleQuotedString:\n    case SingleQuotedString:\n    case InactiveSingleQuotedString:\n    case UnclosedString:\n    case InactiveUnclosedString:\n    case VerbatimString:\n    case InactiveVerbatimString:\n    case Regex:\n    case InactiveRegex:\n    case TripleQuotedVerbatimString:\n    case InactiveTripleQuotedVerbatimString:\n    case HashQuotedString:\n    case InactiveHashQuotedString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerCPP::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"and and_eq asm auto bitand bitor bool break case \"\n            \"catch char class compl const const_cast continue \"\n            \"default delete do double dynamic_cast else enum \"\n            \"explicit export extern false float for friend goto if \"\n            \"inline int long mutable namespace new not not_eq \"\n            \"operator or or_eq private protected public register \"\n            \"reinterpret_cast return short signed sizeof static \"\n            \"static_cast struct switch template this throw true \"\n            \"try typedef typeid typename union unsigned using \"\n            \"virtual void volatile wchar_t while xor xor_eq\";\n\n    if (set == 3)\n        return\n            \"a addindex addtogroup anchor arg attention author b \"\n            \"brief bug c class code date def defgroup deprecated \"\n            \"dontinclude e em endcode endhtmlonly endif \"\n            \"endlatexonly endlink endverbatim enum example \"\n            \"exception f$ f[ f] file fn hideinitializer \"\n            \"htmlinclude htmlonly if image include ingroup \"\n            \"internal invariant interface latexonly li line link \"\n            \"mainpage name namespace nosubgrouping note overload \"\n            \"p page par param post pre ref relates remarks return \"\n            \"retval sa section see showinitializer since skip \"\n            \"skipline struct subsection test throw todo typedef \"\n            \"union until var verbatim verbinclude version warning \"\n            \"weakgroup $ @ \\\\ & < > # { }\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerCPP::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case InactiveDefault:\n        return tr(\"Inactive default\");\n\n    case Comment:\n        return tr(\"C comment\");\n\n    case InactiveComment:\n        return tr(\"Inactive C comment\");\n\n    case CommentLine:\n        return tr(\"C++ comment\");\n\n    case InactiveCommentLine:\n        return tr(\"Inactive C++ comment\");\n\n    case CommentDoc:\n        return tr(\"JavaDoc style C comment\");\n\n    case InactiveCommentDoc:\n        return tr(\"Inactive JavaDoc style C comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case InactiveNumber:\n        return tr(\"Inactive number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case InactiveKeyword:\n        return tr(\"Inactive keyword\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case InactiveDoubleQuotedString:\n        return tr(\"Inactive double-quoted string\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case InactiveSingleQuotedString:\n        return tr(\"Inactive single-quoted string\");\n\n    case UUID:\n        return tr(\"IDL UUID\");\n\n    case InactiveUUID:\n        return tr(\"Inactive IDL UUID\");\n\n    case PreProcessor:\n        return tr(\"Pre-processor block\");\n\n    case InactivePreProcessor:\n        return tr(\"Inactive pre-processor block\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case InactiveOperator:\n        return tr(\"Inactive operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case InactiveIdentifier:\n        return tr(\"Inactive identifier\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case InactiveUnclosedString:\n        return tr(\"Inactive unclosed string\");\n\n    case VerbatimString:\n        return tr(\"C# verbatim string\");\n\n    case InactiveVerbatimString:\n        return tr(\"Inactive C# verbatim string\");\n\n    case Regex:\n        return tr(\"JavaScript regular expression\");\n\n    case InactiveRegex:\n        return tr(\"Inactive JavaScript regular expression\");\n\n    case CommentLineDoc:\n        return tr(\"JavaDoc style C++ comment\");\n\n    case InactiveCommentLineDoc:\n        return tr(\"Inactive JavaDoc style C++ comment\");\n\n    case KeywordSet2:\n        return tr(\"Secondary keywords and identifiers\");\n\n    case InactiveKeywordSet2:\n        return tr(\"Inactive secondary keywords and identifiers\");\n\n    case CommentDocKeyword:\n        return tr(\"JavaDoc keyword\");\n\n    case InactiveCommentDocKeyword:\n        return tr(\"Inactive JavaDoc keyword\");\n\n    case CommentDocKeywordError:\n        return tr(\"JavaDoc keyword error\");\n\n    case InactiveCommentDocKeywordError:\n        return tr(\"Inactive JavaDoc keyword error\");\n\n    case GlobalClass:\n        return tr(\"Global classes and typedefs\");\n\n    case InactiveGlobalClass:\n        return tr(\"Inactive global classes and typedefs\");\n\n    case RawString:\n        return tr(\"C++ raw string\");\n\n    case InactiveRawString:\n        return tr(\"Inactive C++ raw string\");\n\n    case TripleQuotedVerbatimString:\n        return tr(\"Vala triple-quoted verbatim string\");\n\n    case InactiveTripleQuotedVerbatimString:\n        return tr(\"Inactive Vala triple-quoted verbatim string\");\n\n    case HashQuotedString:\n        return tr(\"Pike hash-quoted string\");\n\n    case InactiveHashQuotedString:\n        return tr(\"Inactive Pike hash-quoted string\");\n\n    case PreProcessorComment:\n        return tr(\"Pre-processor C comment\");\n\n    case InactivePreProcessorComment:\n        return tr(\"Inactive pre-processor C comment\");\n\n    case PreProcessorCommentLineDoc:\n        return tr(\"JavaDoc style pre-processor comment\");\n\n    case InactivePreProcessorCommentLineDoc:\n        return tr(\"Inactive JavaDoc style pre-processor comment\");\n\n    case UserLiteral:\n        return tr(\"User-defined literal\");\n\n    case InactiveUserLiteral:\n        return tr(\"Inactive user-defined literal\");\n\n    case TaskMarker:\n        return tr(\"Task marker\");\n\n    case InactiveTaskMarker:\n        return tr(\"Inactive task marker\");\n\n    case EscapeSequence:\n        return tr(\"Escape sequence\");\n\n    case InactiveEscapeSequence:\n        return tr(\"Inactive escape sequence\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerCPP::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case UnclosedString:\n    case InactiveUnclosedString:\n        return QColor(0xe0,0xc0,0xe0);\n\n    case VerbatimString:\n    case InactiveVerbatimString:\n    case TripleQuotedVerbatimString:\n    case InactiveTripleQuotedVerbatimString:\n        return QColor(0xe0,0xff,0xe0);\n\n    case Regex:\n    case InactiveRegex:\n        return QColor(0xe0,0xf0,0xe0);\n\n    case RawString:\n    case InactiveRawString:\n        return QColor(0xff,0xf3,0xff);\n\n    case HashQuotedString:\n    case InactiveHashQuotedString:\n        return QColor(0xe7,0xff,0xd7);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerCPP::refreshProperties()\n{\n    setAtElseProp();\n    setCommentProp();\n    setCompactProp();\n    setPreprocProp();\n    setStylePreprocProp();\n    setDollarsProp();\n    setHighlightTripleProp();\n    setHighlightHashProp();\n    setHighlightBackProp();\n    setHighlightEscapeProp();\n    setVerbatimStringEscapeProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerCPP::readProperties(QSettings &qs,const QString &prefix)\n{\n    fold_atelse = qs.value(prefix + \"foldatelse\", false).toBool();\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_preproc = qs.value(prefix + \"foldpreprocessor\", true).toBool();\n    style_preproc = qs.value(prefix + \"stylepreprocessor\", false).toBool();\n    dollars = qs.value(prefix + \"dollars\", true).toBool();\n    highlight_triple = qs.value(prefix + \"highlighttriple\", false).toBool();\n    highlight_hash = qs.value(prefix + \"highlighthash\", false).toBool();\n    highlight_back = qs.value(prefix + \"highlightback\", false).toBool();\n    highlight_escape = qs.value(prefix + \"highlightescape\", false).toBool();\n    vs_escape = qs.value(prefix + \"verbatimstringescape\", false).toBool();\n\n    return true;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerCPP::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    qs.setValue(prefix + \"foldatelse\", fold_atelse);\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"foldpreprocessor\", fold_preproc);\n    qs.setValue(prefix + \"stylepreprocessor\", style_preproc);\n    qs.setValue(prefix + \"dollars\", dollars);\n    qs.setValue(prefix + \"highlighttriple\", highlight_triple);\n    qs.setValue(prefix + \"highlighthash\", highlight_hash);\n    qs.setValue(prefix + \"highlightback\", highlight_back);\n    qs.setValue(prefix + \"highlightescape\", highlight_escape);\n    qs.setValue(prefix + \"verbatimstringescape\", vs_escape);\n\n    return true;\n}\n\n\n// Set if else can be folded.\nvoid QsciLexerCPP::setFoldAtElse(bool fold)\n{\n    fold_atelse = fold;\n\n    setAtElseProp();\n}\n\n\n// Set the \"fold.at.else\" property.\nvoid QsciLexerCPP::setAtElseProp()\n{\n    emit propertyChanged(\"fold.at.else\",(fold_atelse ? \"1\" : \"0\"));\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerCPP::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerCPP::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact\nvoid QsciLexerCPP::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerCPP::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if preprocessor blocks can be folded.\nvoid QsciLexerCPP::setFoldPreprocessor(bool fold)\n{\n    fold_preproc = fold;\n\n    setPreprocProp();\n}\n\n\n// Set the \"fold.preprocessor\" property.\nvoid QsciLexerCPP::setPreprocProp()\n{\n    emit propertyChanged(\"fold.preprocessor\",(fold_preproc ? \"1\" : \"0\"));\n}\n\n\n// Set if preprocessor lines are styled.\nvoid QsciLexerCPP::setStylePreprocessor(bool style)\n{\n    style_preproc = style;\n\n    setStylePreprocProp();\n}\n\n\n// Set the \"styling.within.preprocessor\" property.\nvoid QsciLexerCPP::setStylePreprocProp()\n{\n    emit propertyChanged(\"styling.within.preprocessor\",(style_preproc ? \"1\" : \"0\"));\n}\n\n\n// Set if '$' characters are allowed.\nvoid QsciLexerCPP::setDollarsAllowed(bool allowed)\n{\n    dollars = allowed;\n\n    setDollarsProp();\n}\n\n\n// Set the \"lexer.cpp.allow.dollars\" property.\nvoid QsciLexerCPP::setDollarsProp()\n{\n    emit propertyChanged(\"lexer.cpp.allow.dollars\",(dollars ? \"1\" : \"0\"));\n}\n\n\n// Set if triple quoted strings are highlighted.\nvoid QsciLexerCPP::setHighlightTripleQuotedStrings(bool enabled)\n{\n    highlight_triple = enabled;\n\n    setHighlightTripleProp();\n}\n\n\n// Set the \"lexer.cpp.triplequoted.strings\" property.\nvoid QsciLexerCPP::setHighlightTripleProp()\n{\n    emit propertyChanged(\"lexer.cpp.triplequoted.strings\",\n            (highlight_triple ? \"1\" : \"0\"));\n}\n\n\n// Set if hash quoted strings are highlighted.\nvoid QsciLexerCPP::setHighlightHashQuotedStrings(bool enabled)\n{\n    highlight_hash = enabled;\n\n    setHighlightHashProp();\n}\n\n\n// Set the \"lexer.cpp.hashquoted.strings\" property.\nvoid QsciLexerCPP::setHighlightHashProp()\n{\n    emit propertyChanged(\"lexer.cpp.hashquoted.strings\",\n            (highlight_hash ? \"1\" : \"0\"));\n}\n\n\n// Set if back-quoted strings are highlighted.\nvoid QsciLexerCPP::setHighlightBackQuotedStrings(bool enabled)\n{\n    highlight_back = enabled;\n\n    setHighlightBackProp();\n}\n\n\n// Set the \"lexer.cpp.backquoted.strings\" property.\nvoid QsciLexerCPP::setHighlightBackProp()\n{\n    emit propertyChanged(\"lexer.cpp.backquoted.strings\",\n            (highlight_back ? \"1\" : \"0\"));\n}\n\n\n// Set if escape sequences in strings are highlighted.\nvoid QsciLexerCPP::setHighlightEscapeSequences(bool enabled)\n{\n    highlight_escape = enabled;\n\n    setHighlightEscapeProp();\n}\n\n\n// Set the \"lexer.cpp.escape.sequence\" property.\nvoid QsciLexerCPP::setHighlightEscapeProp()\n{\n    emit propertyChanged(\"lexer.cpp.escape.sequence\",\n            (highlight_escape ? \"1\" : \"0\"));\n}\n\n\n// Set if escape sequences in verbatim strings are allowed.\nvoid QsciLexerCPP::setVerbatimStringEscapeSequencesAllowed(bool allowed)\n{\n    vs_escape = allowed;\n\n    setVerbatimStringEscapeProp();\n}\n\n\n// Set the \"lexer.cpp.verbatim.strings.allow.escapes\" property.\nvoid QsciLexerCPP::setVerbatimStringEscapeProp()\n{\n    emit propertyChanged(\"lexer.cpp.verbatim.strings.allow.escapes\",\n            (vs_escape ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexercsharp.cpp",
    "content": "// This module implements the QsciLexerCSharp class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexercsharp.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n\n\n// The ctor.\nQsciLexerCSharp::QsciLexerCSharp(QObject *parent)\n    : QsciLexerCPP(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerCSharp::~QsciLexerCSharp()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerCSharp::language() const\n{\n    return \"C#\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerCSharp::defaultColor(int style) const\n{\n    if (style == VerbatimString)\n        return QColor(0x00,0x7f,0x00);\n\n    return QsciLexerCPP::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerCSharp::defaultEolFill(int style) const\n{\n    if (style == VerbatimString)\n        return true;\n\n    return QsciLexerCPP::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerCSharp::defaultFont(int style) const\n{\n    if (style == VerbatimString)\n#if defined(Q_OS_WIN)\n        return QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        return QFont(\"Courier\", 12);\n#else\n        return QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n\n    return QsciLexerCPP::defaultFont(style);\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerCSharp::keywords(int set) const\n{\n    if (set != 1)\n        return 0;\n\n    return \"abstract as base bool break byte case catch char checked \"\n           \"class const continue decimal default delegate do double else \"\n           \"enum event explicit extern false finally fixed float for \"\n           \"foreach goto if implicit in int interface internal is lock \"\n           \"long namespace new null object operator out override params \"\n           \"private protected public readonly ref return sbyte sealed \"\n           \"short sizeof stackalloc static string struct switch this \"\n           \"throw true try typeof uint ulong unchecked unsafe ushort \"\n           \"using virtual void while\";\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerCSharp::description(int style) const\n{\n    if (style == VerbatimString)\n        return tr(\"Verbatim string\");\n\n    return QsciLexerCPP::description(style);\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerCSharp::defaultPaper(int style) const\n{\n    if (style == VerbatimString)\n        return QColor(0xe0,0xff,0xe0);\n\n    return QsciLexer::defaultPaper(style);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp",
    "content": "// This module implements the QsciLexerCSS class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexercss.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerCSS::QsciLexerCSS(QObject *parent)\n    : QsciLexer(parent),\n      fold_comments(false), fold_compact(true), hss_language(false),\n      less_language(false), scss_language(false)\n{\n}\n\n\n// The dtor.\nQsciLexerCSS::~QsciLexerCSS()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerCSS::language() const\n{\n    return \"CSS\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerCSS::lexer() const\n{\n    return \"css\";\n}\n\n\n// Return the list of characters that can start a block.\nconst char *QsciLexerCSS::blockStart(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"{\";\n}\n\n\n// Return the list of characters that can end a block.\nconst char *QsciLexerCSS::blockEnd(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"}\";\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerCSS::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerCSS::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0xff,0x00,0x80);\n\n    case Tag:\n        return QColor(0x00,0x00,0x7f);\n\n    case PseudoClass:\n    case Attribute:\n        return QColor(0x80,0x00,0x00);\n\n    case UnknownPseudoClass:\n    case UnknownProperty:\n        return QColor(0xff,0x00,0x00);\n\n    case Operator:\n        return QColor(0x00,0x00,0x00);\n\n    case CSS1Property:\n        return QColor(0x00,0x40,0xe0);\n\n    case Value:\n    case DoubleQuotedString:\n    case SingleQuotedString:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case IDSelector:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Important:\n        return QColor(0xff,0x80,0x00);\n\n    case AtRule:\n    case MediaRule:\n        return QColor(0x7f,0x7f,0x00);\n\n    case CSS2Property:\n        return QColor(0x00,0xa0,0xe0);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerCSS::defaultFont(int style) const\n{\n    QFont f;\n\n    if (style == Comment)\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n    else\n    {\n        f = QsciLexer::defaultFont(style);\n\n        switch (style)\n        {\n        case Tag:\n        case Important:\n        case MediaRule:\n            f.setBold(true);\n            break;\n\n        case IDSelector:\n            f.setItalic(true);\n            break;\n        }\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerCSS::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"color background-color background-image \"\n            \"background-repeat background-attachment \"\n            \"background-position background font-family \"\n            \"font-style font-variant font-weight font-size font \"\n            \"word-spacing letter-spacing text-decoration \"\n            \"vertical-align text-transform text-align \"\n            \"text-indent line-height margin-top margin-right \"\n            \"margin-bottom margin-left margin padding-top \"\n            \"padding-right padding-bottom padding-left padding \"\n            \"border-top-width border-right-width \"\n            \"border-bottom-width border-left-width border-width \"\n            \"border-top border-right border-bottom border-left \"\n            \"border border-color border-style width height float \"\n            \"clear display white-space list-style-type \"\n            \"list-style-image list-style-position list-style\";\n\n    if (set == 2)\n        return\n            \"first-letter first-line link active visited \"\n            \"first-child focus hover lang before after left \"\n            \"right first\";\n\n    if (set == 3)\n        return\n            \"border-top-color border-right-color \"\n            \"border-bottom-color border-left-color border-color \"\n            \"border-top-style border-right-style \"\n            \"border-bottom-style border-left-style border-style \"\n            \"top right bottom left position z-index direction \"\n            \"unicode-bidi min-width max-width min-height \"\n            \"max-height overflow clip visibility content quotes \"\n            \"counter-reset counter-increment marker-offset size \"\n            \"marks page-break-before page-break-after \"\n            \"page-break-inside page orphans widows font-stretch \"\n            \"font-size-adjust unicode-range units-per-em src \"\n            \"panose-1 stemv stemh slope cap-height x-height \"\n            \"ascent descent widths bbox definition-src baseline \"\n            \"centerline mathline topline text-shadow \"\n            \"caption-side table-layout border-collapse \"\n            \"border-spacing empty-cells speak-header cursor \"\n            \"outline outline-width outline-style outline-color \"\n            \"volume speak pause-before pause-after pause \"\n            \"cue-before cue-after cue play-during azimuth \"\n            \"elevation speech-rate voice-family pitch \"\n            \"pitch-range stress richness speak-punctuation \"\n            \"speak-numeral\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerCSS::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Tag:\n        return tr(\"Tag\");\n\n    case ClassSelector:\n        return tr(\"Class selector\");\n\n    case PseudoClass:\n        return tr(\"Pseudo-class\");\n\n    case UnknownPseudoClass:\n        return tr(\"Unknown pseudo-class\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case CSS1Property:\n        return tr(\"CSS1 property\");\n\n    case UnknownProperty:\n        return tr(\"Unknown property\");\n\n    case Value:\n        return tr(\"Value\");\n\n    case IDSelector:\n        return tr(\"ID selector\");\n\n    case Important:\n        return tr(\"Important\");\n\n    case AtRule:\n        return tr(\"@-rule\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case CSS2Property:\n        return tr(\"CSS2 property\");\n\n    case Attribute:\n        return tr(\"Attribute\");\n\n    case CSS3Property:\n        return tr(\"CSS3 property\");\n\n    case PseudoElement:\n        return tr(\"Pseudo-element\");\n\n    case ExtendedCSSProperty:\n        return tr(\"Extended CSS property\");\n\n    case ExtendedPseudoClass:\n        return tr(\"Extended pseudo-class\");\n\n    case ExtendedPseudoElement:\n        return tr(\"Extended pseudo-element\");\n\n    case MediaRule:\n        return tr(\"Media rule\");\n\n    case Variable:\n        return tr(\"Variable\");\n    }\n\n    return QString();\n}\n\n\n// Refresh all properties.\nvoid QsciLexerCSS::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n    setHSSProp();\n    setLessProp();\n    setSCSSProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerCSS::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    hss_language = qs.value(prefix + \"hsslanguage\", false).toBool();\n    less_language = qs.value(prefix + \"lesslanguage\", false).toBool();\n    scss_language = qs.value(prefix + \"scsslanguage\", false).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerCSS::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"hsslanguage\", hss_language);\n    qs.setValue(prefix + \"lesslanguage\", less_language);\n    qs.setValue(prefix + \"scsslanguage\", scss_language);\n\n    return rc;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerCSS::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerCSS::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerCSS::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerCSS::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerCSS::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerCSS::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if HSS is supported.\nvoid QsciLexerCSS::setHSSLanguage(bool enabled)\n{\n    hss_language = enabled;\n\n    setHSSProp();\n}\n\n\n// Set the \"lexer.css.hss.language\" property.\nvoid QsciLexerCSS::setHSSProp()\n{\n    emit propertyChanged(\"lexer.css.hss.language\",(hss_language ? \"1\" : \"0\"));\n}\n\n\n// Set if Less CSS is supported.\nvoid QsciLexerCSS::setLessLanguage(bool enabled)\n{\n    less_language = enabled;\n\n    setLessProp();\n}\n\n\n// Set the \"lexer.css.less.language\" property.\nvoid QsciLexerCSS::setLessProp()\n{\n    emit propertyChanged(\"lexer.css.less.language\",(less_language ? \"1\" : \"0\"));\n}\n\n\n// Set if Sassy CSS is supported.\nvoid QsciLexerCSS::setSCSSLanguage(bool enabled)\n{\n    scss_language = enabled;\n\n    setSCSSProp();\n}\n\n\n// Set the \"lexer.css.scss.language\" property.\nvoid QsciLexerCSS::setSCSSProp()\n{\n    emit propertyChanged(\"lexer.css.scss.language\",(scss_language ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexercustom.cpp",
    "content": "// This module implements the QsciLexerCustom class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexercustom.h\"\n\n#include \"Qsci/qsciscintilla.h\"\n#include \"Qsci/qsciscintillabase.h\"\n#include \"Qsci/qscistyle.h\"\n\n\n// The ctor.\nQsciLexerCustom::QsciLexerCustom(QObject *parent)\n    : QsciLexer(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerCustom::~QsciLexerCustom()\n{\n}\n\n\n// Start styling.\nvoid QsciLexerCustom::startStyling(int start, int)\n{\n    if (!editor())\n        return;\n\n    editor()->SendScintilla(QsciScintillaBase::SCI_STARTSTYLING, start);\n}\n\n\n// Set the style for a number of characters.\nvoid QsciLexerCustom::setStyling(int length, int style)\n{\n    if (!editor())\n        return;\n\n    editor()->SendScintilla(QsciScintillaBase::SCI_SETSTYLING, length, style);\n}\n\n\n// Set the style for a number of characters.\nvoid QsciLexerCustom::setStyling(int length, const QsciStyle &style)\n{\n    setStyling(length, style.style());\n}\n\n\n// Set the attached editor.\nvoid QsciLexerCustom::setEditor(QsciScintilla *new_editor)\n{\n    if (editor())\n        disconnect(editor(), SIGNAL(SCN_STYLENEEDED(int)), this,\n                SLOT(handleStyleNeeded(int)));\n\n    QsciLexer::setEditor(new_editor);\n\n    if (editor())\n        connect(editor(), SIGNAL(SCN_STYLENEEDED(int)), this,\n                SLOT(handleStyleNeeded(int)));\n}\n\n\n// Return the number of style bits needed by the lexer.\nint QsciLexerCustom::styleBitsNeeded() const\n{\n    return 5;\n}\n\n\n// Handle a request to style some text.\nvoid QsciLexerCustom::handleStyleNeeded(int pos)\n{\n    int start = editor()->SendScintilla(QsciScintillaBase::SCI_GETENDSTYLED);\n    int line = editor()->SendScintilla(QsciScintillaBase::SCI_LINEFROMPOSITION,\n            start);\n    start = editor()->SendScintilla(QsciScintillaBase::SCI_POSITIONFROMLINE,\n            line);\n\n    if (start != pos)\n        styleText(start, pos);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp",
    "content": "// This module implements the QsciLexerD class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerd.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerD::QsciLexerD(QObject *parent)\n    : QsciLexer(parent),\n      fold_atelse(false), fold_comments(false), fold_compact(true)\n{\n}\n\n\n// The dtor.\nQsciLexerD::~QsciLexerD()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerD::language() const\n{\n    return \"D\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerD::lexer() const\n{\n    return \"d\";\n}\n\n\n// Return the set of character sequences that can separate auto-completion\n// words.\nQStringList QsciLexerD::autoCompletionWordSeparators() const\n{\n    QStringList wl;\n\n    wl << \".\";\n\n    return wl;\n}\n\n\n// Return the list of keywords that can start a block.\nconst char *QsciLexerD::blockStartKeyword(int *style) const\n{\n    if (style)\n        *style = Keyword;\n\n    return \"case catch class default do else finally for foreach \"\n           \"foreach_reverse if private protected public struct try union \"\n           \"while\";\n}\n\n\n// Return the list of characters that can start a block.\nconst char *QsciLexerD::blockStart(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"{\";\n}\n\n\n// Return the list of characters that can end a block.\nconst char *QsciLexerD::blockEnd(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"}\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerD::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerD::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerD::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Comment:\n    case CommentLine:\n        return QColor(0x00,0x7f,0x00);\n\n    case CommentDoc:\n    case CommentLineDoc:\n        return QColor(0x3f,0x70,0x3f);\n\n    case CommentNested:\n        return QColor(0xa0,0xc0,0xa0);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Keyword:\n    case KeywordSecondary:\n    case KeywordDoc:\n    case Typedefs:\n        return QColor(0x00,0x00,0x7f);\n\n    case String:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Character:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Operator:\n    case UnclosedString:\n        return QColor(0x00,0x00,0x00);\n\n    case Identifier:\n        break;\n\n    case CommentDocKeyword:\n        return QColor(0x30,0x60,0xa0);\n\n    case CommentDocKeywordError:\n        return QColor(0x80,0x40,0x20);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerD::defaultEolFill(int style) const\n{\n    if (style == UnclosedString)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerD::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case CommentLine:\n    case CommentDoc:\n    case CommentNested:\n    case CommentLineDoc:\n    case CommentDocKeyword:\n    case CommentDocKeywordError:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case KeywordSecondary:\n    case KeywordDoc:\n    case Typedefs:\n    case Operator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case String:\n    case UnclosedString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerD::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"abstract alias align asm assert auto body bool break byte case \"\n            \"cast catch cdouble cent cfloat char class const continue creal \"\n            \"dchar debug default delegate delete deprecated do double else \"\n            \"enum export extern false final finally float for foreach \"\n            \"foreach_reverse function goto idouble if ifloat import in inout \"\n            \"int interface invariant ireal is lazy long mixin module new null \"\n            \"out override package pragma private protected public real return \"\n            \"scope short static struct super switch synchronized template \"\n            \"this throw true try typedef typeid typeof ubyte ucent uint ulong \"\n            \"union unittest ushort version void volatile wchar while with\";\n\n    if (set == 3)\n        return\n            \"a addindex addtogroup anchor arg attention author b brief bug c \"\n            \"class code date def defgroup deprecated dontinclude e em endcode \"\n            \"endhtmlonly endif endlatexonly endlink endverbatim enum example \"\n            \"exception f$ f[ f] file fn hideinitializer htmlinclude htmlonly \"\n            \"if image include ingroup internal invariant interface latexonly \"\n            \"li line link mainpage name namespace nosubgrouping note overload \"\n            \"p page par param post pre ref relates remarks return retval sa \"\n            \"section see showinitializer since skip skipline struct \"\n            \"subsection test throw todo typedef union until var verbatim \"\n            \"verbinclude version warning weakgroup $ @ \\\\ & < > # { }\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerD::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Block comment\");\n\n    case CommentLine:\n        return tr(\"Line comment\");\n\n    case CommentDoc:\n        return tr(\"DDoc style block comment\");\n\n    case CommentNested:\n        return tr(\"Nesting comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case KeywordSecondary:\n        return tr(\"Secondary keyword\");\n\n    case KeywordDoc:\n        return tr(\"Documentation keyword\");\n\n    case Typedefs:\n        return tr(\"Type definition\");\n\n    case String:\n        return tr(\"String\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case Character:\n        return tr(\"Character\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case CommentLineDoc:\n        return tr(\"DDoc style line comment\");\n\n    case CommentDocKeyword:\n        return tr(\"DDoc keyword\");\n\n    case CommentDocKeywordError:\n        return tr(\"DDoc keyword error\");\n\n    case BackquoteString:\n        return tr(\"Backquoted string\");\n\n    case RawString:\n        return tr(\"Raw string\");\n\n    case KeywordSet5:\n        return tr(\"User defined 1\");\n\n    case KeywordSet6:\n        return tr(\"User defined 2\");\n\n    case KeywordSet7:\n        return tr(\"User defined 3\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerD::defaultPaper(int style) const\n{\n    if (style == UnclosedString)\n        return QColor(0xe0,0xc0,0xe0);\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerD::refreshProperties()\n{\n    setAtElseProp();\n    setCommentProp();\n    setCompactProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerD::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_atelse = qs.value(prefix + \"foldatelse\", false).toBool();\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerD::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldatelse\", fold_atelse);\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n\n    return rc;\n}\n\n\n// Return true if else can be folded.\nbool QsciLexerD::foldAtElse() const\n{\n    return fold_atelse;\n}\n\n\n// Set if else can be folded.\nvoid QsciLexerD::setFoldAtElse(bool fold)\n{\n    fold_atelse = fold;\n\n    setAtElseProp();\n}\n\n\n// Set the \"fold.at.else\" property.\nvoid QsciLexerD::setAtElseProp()\n{\n    emit propertyChanged(\"fold.at.else\",(fold_atelse ? \"1\" : \"0\"));\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerD::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerD::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerD::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerD::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerD::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerD::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp",
    "content": "// This module implements the QsciLexerDiff class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerdiff.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerDiff::QsciLexerDiff(QObject *parent)\n    : QsciLexer(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerDiff::~QsciLexerDiff()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerDiff::language() const\n{\n    return \"Diff\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerDiff::lexer() const\n{\n    return \"diff\";\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerDiff::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerDiff::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x00,0x00,0x00);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case Command:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Header:\n        return QColor(0x7f,0x00,0x00);\n\n    case Position:\n        return QColor(0x7f,0x00,0x7f);\n\n    case LineRemoved:\n        return QColor(0x00,0x7f,0x7f);\n\n    case LineAdded:\n        return QColor(0x00,0x00,0x7f);\n\n    case LineChanged:\n        return QColor(0x7f,0x7f,0x7f);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerDiff::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Command:\n        return tr(\"Command\");\n\n    case Header:\n        return tr(\"Header\");\n\n    case Position:\n        return tr(\"Position\");\n\n    case LineRemoved:\n        return tr(\"Removed line\");\n\n    case LineAdded:\n        return tr(\"Added line\");\n\n    case LineChanged:\n        return tr(\"Changed line\");\n    }\n\n    return QString();\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerfortran.cpp",
    "content": "// This module implements the QsciLexerFortran class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerfortran.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerFortran::QsciLexerFortran(QObject *parent)\n    : QsciLexerFortran77(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerFortran::~QsciLexerFortran()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerFortran::language() const\n{\n    return \"Fortran\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerFortran::lexer() const\n{\n    return \"fortran\";\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerFortran::keywords(int set) const\n{\n    if (set == 2)\n        return\n            \"abs achar acos acosd adjustl adjustr aimag aimax0 aimin0 aint \"\n            \"ajmax0 ajmin0 akmax0 akmin0 all allocated alog alog10 amax0 \"\n            \"amax1 amin0 amin1 amod anint any asin asind associated atan \"\n            \"atan2 atan2d atand bitest bitl bitlr bitrl bjtest bit_size \"\n            \"bktest break btest cabs ccos cdabs cdcos cdexp cdlog cdsin \"\n            \"cdsqrt ceiling cexp char clog cmplx conjg cos cosd cosh count \"\n            \"cpu_time cshift csin csqrt dabs dacos dacosd dasin dasind datan \"\n            \"datan2 datan2d datand date date_and_time dble dcmplx dconjg dcos \"\n            \"dcosd dcosh dcotan ddim dexp dfloat dflotk dfloti dflotj digits \"\n            \"dim dimag dint dlog dlog10 dmax1 dmin1 dmod dnint dot_product \"\n            \"dprod dreal dsign dsin dsind dsinh dsqrt dtan dtand dtanh \"\n            \"eoshift epsilon errsns exp exponent float floati floatj floatk \"\n            \"floor fraction free huge iabs iachar iand ibclr ibits ibset \"\n            \"ichar idate idim idint idnint ieor ifix iiabs iiand iibclr \"\n            \"iibits iibset iidim iidint iidnnt iieor iifix iint iior iiqint \"\n            \"iiqnnt iishft iishftc iisign ilen imax0 imax1 imin0 imin1 imod \"\n            \"index inint inot int int1 int2 int4 int8 iqint iqnint ior ishft \"\n            \"ishftc isign isnan izext jiand jibclr jibits jibset jidim jidint \"\n            \"jidnnt jieor jifix jint jior jiqint jiqnnt jishft jishftc jisign \"\n            \"jmax0 jmax1 jmin0 jmin1 jmod jnint jnot jzext kiabs kiand kibclr \"\n            \"kibits kibset kidim kidint kidnnt kieor kifix kind kint kior \"\n            \"kishft kishftc kisign kmax0 kmax1 kmin0 kmin1 kmod knint knot \"\n            \"kzext lbound leadz len len_trim lenlge lge lgt lle llt log log10 \"\n            \"logical lshift malloc matmul max max0 max1 maxexponent maxloc \"\n            \"maxval merge min min0 min1 minexponent minloc minval mod modulo \"\n            \"mvbits nearest nint not nworkers number_of_processors pack \"\n            \"popcnt poppar precision present product radix random \"\n            \"random_number random_seed range real repeat reshape rrspacing \"\n            \"rshift scale scan secnds selected_int_kind selected_real_kind \"\n            \"set_exponent shape sign sin sind sinh size sizeof sngl snglq \"\n            \"spacing spread sqrt sum system_clock tan tand tanh tiny transfer \"\n            \"transpose trim ubound unpack verify\";\n\n    if (set == 3)\n        return\n            \"cdabs cdcos cdexp cdlog cdsin cdsqrt cotan cotand dcmplx dconjg \"\n            \"dcotan dcotand decode dimag dll_export dll_import doublecomplex \"\n            \"dreal dvchk encode find flen flush getarg getcharqq getcl getdat \"\n            \"getenv gettim hfix ibchng identifier imag int1 int2 int4 intc \"\n            \"intrup invalop iostat_msg isha ishc ishl jfix lacfar locking \"\n            \"locnear map nargs nbreak ndperr ndpexc offset ovefl peekcharqq \"\n            \"precfill prompt qabs qacos qacosd qasin qasind qatan qatand \"\n            \"qatan2 qcmplx qconjg qcos qcosd qcosh qdim qexp qext qextd \"\n            \"qfloat qimag qlog qlog10 qmax1 qmin1 qmod qreal qsign qsin qsind \"\n            \"qsinh qsqrt qtan qtand qtanh ran rand randu rewrite segment \"\n            \"setdat settim system timer undfl unlock union val virtual \"\n            \"volatile zabs zcos zexp zlog zsin zsqrt\";\n\n    return QsciLexerFortran77::keywords(set);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp",
    "content": "// This module implements the QsciLexerFortran77 class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerfortran77.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerFortran77::QsciLexerFortran77(QObject *parent)\n    : QsciLexer(parent), fold_compact(true)\n{\n}\n\n\n// The dtor.\nQsciLexerFortran77::~QsciLexerFortran77()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerFortran77::language() const\n{\n    return \"Fortran77\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerFortran77::lexer() const\n{\n    return \"f77\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerFortran77::braceStyle() const\n{\n    return Default;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerFortran77::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case SingleQuotedString:\n    case DoubleQuotedString:\n        return QColor(0x7f,0x00,0x7f);\n\n    case UnclosedString:\n    case Operator:\n    case DottedOperator:\n    case Continuation:\n        return QColor(0x00,0x00,0x00);\n\n    case Identifier:\n        break;\n\n    case Keyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case IntrinsicFunction:\n        return QColor(0xb0,0x00,0x40);\n\n    case ExtendedFunction:\n        return QColor(0xb0,0x40,0x80);\n\n    case PreProcessor:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Label:\n        return QColor(0xe0,0xc0,0xe0);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerFortran77::defaultEolFill(int style) const\n{\n    if (style == UnclosedString)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerFortran77::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Operator:\n    case DottedOperator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerFortran77::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"access action advance allocatable allocate apostrophe assign \"\n            \"assignment associate asynchronous backspace bind blank blockdata \"\n            \"call case character class close common complex contains continue \"\n            \"cycle data deallocate decimal delim default dimension direct do \"\n            \"dowhile double doubleprecision else elseif elsewhere encoding \"\n            \"end endassociate endblockdata enddo endfile endforall \"\n            \"endfunction endif endinterface endmodule endprogram endselect \"\n            \"endsubroutine endtype endwhere entry eor equivalence err errmsg \"\n            \"exist exit external file flush fmt forall form format formatted \"\n            \"function go goto id if implicit in include inout integer inquire \"\n            \"intent interface intrinsic iomsg iolength iostat kind len \"\n            \"logical module name named namelist nextrec nml none nullify \"\n            \"number only open opened operator optional out pad parameter pass \"\n            \"pause pending pointer pos position precision print private \"\n            \"program protected public quote read readwrite real rec recl \"\n            \"recursive result return rewind save select selectcase selecttype \"\n            \"sequential sign size stat status stop stream subroutine target \"\n            \"then to type unformatted unit use value volatile wait where \"\n            \"while write\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerFortran77::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case IntrinsicFunction:\n        return tr(\"Intrinsic function\");\n\n    case ExtendedFunction:\n        return tr(\"Extended function\");\n\n    case PreProcessor:\n        return tr(\"Pre-processor block\");\n\n    case DottedOperator:\n        return tr(\"Dotted operator\");\n\n    case Label:\n        return tr(\"Label\");\n\n    case Continuation:\n        return tr(\"Continuation\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerFortran77::defaultPaper(int style) const\n{\n    if (style == UnclosedString)\n        return QColor(0xe0,0xc0,0xe0);\n\n    if (style == Continuation)\n        return QColor(0xf0,0xe0,0x80);\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerFortran77::refreshProperties()\n{\n    setCompactProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerFortran77::readProperties(QSettings &qs, const QString &prefix)\n{\n    int rc = true;\n\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerFortran77::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n\n    return rc;\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerFortran77::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerFortran77::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerFortran77::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp",
    "content": "// This module implements the QsciLexerHTML class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerhtml.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n#include \"Qsci/qscilexerjavascript.h\"\n#include \"Qsci/qscilexerpython.h\"\n\n\n// The ctor.\nQsciLexerHTML::QsciLexerHTML(QObject *parent)\n    : QsciLexer(parent),\n      fold_compact(true), fold_preproc(true), case_sens_tags(false),\n      fold_script_comments(false), fold_script_heredocs(false),\n      django_templates(false), mako_templates(false)\n{\n}\n\n\n// The dtor.\nQsciLexerHTML::~QsciLexerHTML()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerHTML::language() const\n{\n    return \"HTML\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerHTML::lexer() const\n{\n    return \"hypertext\";\n}\n\n\n// Return the auto-completion fillup characters.\nconst char *QsciLexerHTML::autoCompletionFillups() const\n{\n    return \"/>\";\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerHTML::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerHTML::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n    case JavaScriptDefault:\n    case JavaScriptWord:\n    case JavaScriptSymbol:\n    case ASPJavaScriptDefault:\n    case ASPJavaScriptWord:\n    case ASPJavaScriptSymbol:\n    case VBScriptDefault:\n    case ASPVBScriptDefault:\n    case PHPOperator:\n        return QColor(0x00,0x00,0x00);\n\n    case Tag:\n    case XMLTagEnd:\n    case Script:\n    case SGMLDefault:\n    case SGMLCommand:\n    case VBScriptKeyword:\n    case VBScriptIdentifier:\n    case VBScriptUnclosedString:\n    case ASPVBScriptKeyword:\n    case ASPVBScriptIdentifier:\n    case ASPVBScriptUnclosedString:\n        return QColor(0x00,0x00,0x80);\n\n    case UnknownTag:\n    case UnknownAttribute:\n        return QColor(0xff,0x00,0x00);\n\n    case Attribute:\n    case VBScriptNumber:\n    case ASPVBScriptNumber:\n        return QColor(0x00,0x80,0x80);\n\n    case HTMLNumber:\n    case JavaScriptNumber:\n    case ASPJavaScriptNumber:\n    case PythonNumber:\n    case PythonFunctionMethodName:\n    case ASPPythonNumber:\n    case ASPPythonFunctionMethodName:\n        return QColor(0x00,0x7f,0x7f);\n\n    case HTMLDoubleQuotedString:\n    case HTMLSingleQuotedString:\n    case JavaScriptDoubleQuotedString:\n    case JavaScriptSingleQuotedString:\n    case ASPJavaScriptDoubleQuotedString:\n    case ASPJavaScriptSingleQuotedString:\n    case PythonDoubleQuotedString:\n    case PythonSingleQuotedString:\n    case ASPPythonDoubleQuotedString:\n    case ASPPythonSingleQuotedString:\n    case PHPKeyword:\n        return QColor(0x7f,0x00,0x7f);\n\n    case OtherInTag:\n    case Entity:\n    case VBScriptString:\n    case ASPVBScriptString:\n        return QColor(0x80,0x00,0x80);\n\n    case HTMLComment:\n    case SGMLComment:\n        return QColor(0x80,0x80,0x00);\n\n    case XMLStart:\n    case XMLEnd:\n    case PHPStart:\n    case PythonClassName:\n    case ASPPythonClassName:\n        return QColor(0x00,0x00,0xff);\n\n    case HTMLValue:\n        return QColor(0xff,0x00,0xff);\n\n    case SGMLParameter:\n        return QColor(0x00,0x66,0x00);\n\n    case SGMLDoubleQuotedString:\n    case SGMLError:\n        return QColor(0x80,0x00,0x00);\n\n    case SGMLSingleQuotedString:\n        return QColor(0x99,0x33,0x00);\n\n    case SGMLSpecial:\n        return QColor(0x33,0x66,0xff);\n\n    case SGMLEntity:\n        return QColor(0x33,0x33,0x33);\n\n    case SGMLBlockDefault:\n        return QColor(0x00,0x00,0x66);\n\n    case JavaScriptStart:\n    case ASPJavaScriptStart:\n        return QColor(0x7f,0x7f,0x00);\n\n    case JavaScriptComment:\n    case JavaScriptCommentLine:\n    case ASPJavaScriptComment:\n    case ASPJavaScriptCommentLine:\n    case PythonComment:\n    case ASPPythonComment:\n    case PHPDoubleQuotedString:\n        return QColor(0x00,0x7f,0x00);\n\n    case JavaScriptCommentDoc:\n        return QColor(0x3f,0x70,0x3f);\n\n    case JavaScriptKeyword:\n    case ASPJavaScriptKeyword:\n    case PythonKeyword:\n    case ASPPythonKeyword:\n    case PHPVariable:\n    case PHPDoubleQuotedVariable:\n        return QColor(0x00,0x00,0x7f);\n\n    case ASPJavaScriptCommentDoc:\n        return QColor(0x7f,0x7f,0x7f);\n\n    case VBScriptComment:\n    case ASPVBScriptComment:\n        return QColor(0x00,0x80,0x00);\n\n    case PythonStart:\n    case PythonDefault:\n    case ASPPythonStart:\n    case ASPPythonDefault:\n        return QColor(0x80,0x80,0x80);\n\n    case PythonTripleSingleQuotedString:\n    case PythonTripleDoubleQuotedString:\n    case ASPPythonTripleSingleQuotedString:\n    case ASPPythonTripleDoubleQuotedString:\n        return QColor(0x7f,0x00,0x00);\n\n    case PHPDefault:\n        return QColor(0x00,0x00,0x33);\n\n    case PHPSingleQuotedString:\n        return QColor(0x00,0x9f,0x00);\n\n    case PHPNumber:\n        return QColor(0xcc,0x99,0x00);\n\n    case PHPComment:\n        return QColor(0x99,0x99,0x99);\n\n    case PHPCommentLine:\n        return QColor(0x66,0x66,0x66);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerHTML::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case JavaScriptDefault:\n    case JavaScriptComment:\n    case JavaScriptCommentDoc:\n    case JavaScriptUnclosedString:\n    case ASPJavaScriptDefault:\n    case ASPJavaScriptComment:\n    case ASPJavaScriptCommentDoc:\n    case ASPJavaScriptUnclosedString:\n    case VBScriptDefault:\n    case VBScriptComment:\n    case VBScriptNumber:\n    case VBScriptKeyword:\n    case VBScriptString:\n    case VBScriptIdentifier:\n    case VBScriptUnclosedString:\n    case ASPVBScriptDefault:\n    case ASPVBScriptComment:\n    case ASPVBScriptNumber:\n    case ASPVBScriptKeyword:\n    case ASPVBScriptString:\n    case ASPVBScriptIdentifier:\n    case ASPVBScriptUnclosedString:\n    case PythonDefault:\n    case PythonComment:\n    case PythonNumber:\n    case PythonDoubleQuotedString:\n    case PythonSingleQuotedString:\n    case PythonKeyword:\n    case PythonTripleSingleQuotedString:\n    case PythonTripleDoubleQuotedString:\n    case PythonClassName:\n    case PythonFunctionMethodName:\n    case PythonOperator:\n    case PythonIdentifier:\n    case ASPPythonDefault:\n    case ASPPythonComment:\n    case ASPPythonNumber:\n    case ASPPythonDoubleQuotedString:\n    case ASPPythonSingleQuotedString:\n    case ASPPythonKeyword:\n    case ASPPythonTripleSingleQuotedString:\n    case ASPPythonTripleDoubleQuotedString:\n    case ASPPythonClassName:\n    case ASPPythonFunctionMethodName:\n    case ASPPythonOperator:\n    case ASPPythonIdentifier:\n    case PHPDefault:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerHTML::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Default:\n    case Entity:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Times New Roman\",11);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Times New Roman\", 12);\n#else\n        f = QFont(\"Bitstream Charter\",10);\n#endif\n        break;\n\n    case HTMLComment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Verdana\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Verdana\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans\",8);\n#endif\n        break;\n\n    case SGMLCommand:\n    case PythonKeyword:\n    case PythonClassName:\n    case PythonFunctionMethodName:\n    case PythonOperator:\n    case ASPPythonKeyword:\n    case ASPPythonClassName:\n    case ASPPythonFunctionMethodName:\n    case ASPPythonOperator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case JavaScriptDefault:\n    case JavaScriptCommentDoc:\n    case JavaScriptKeyword:\n    case JavaScriptSymbol:\n    case ASPJavaScriptDefault:\n    case ASPJavaScriptCommentDoc:\n    case ASPJavaScriptKeyword:\n    case ASPJavaScriptSymbol:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        f.setBold(true);\n        break;\n\n    case JavaScriptComment:\n    case JavaScriptCommentLine:\n    case JavaScriptNumber:\n    case JavaScriptWord:\n    case JavaScriptDoubleQuotedString:\n    case JavaScriptSingleQuotedString:\n    case ASPJavaScriptComment:\n    case ASPJavaScriptCommentLine:\n    case ASPJavaScriptNumber:\n    case ASPJavaScriptWord:\n    case ASPJavaScriptDoubleQuotedString:\n    case ASPJavaScriptSingleQuotedString:\n    case VBScriptComment:\n    case ASPVBScriptComment:\n    case PythonComment:\n    case ASPPythonComment:\n    case PHPComment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case VBScriptDefault:\n    case VBScriptNumber:\n    case VBScriptString:\n    case VBScriptIdentifier:\n    case VBScriptUnclosedString:\n    case ASPVBScriptDefault:\n    case ASPVBScriptNumber:\n    case ASPVBScriptString:\n    case ASPVBScriptIdentifier:\n    case ASPVBScriptUnclosedString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Lucida Sans Unicode\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Lucida Grande\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case VBScriptKeyword:\n    case ASPVBScriptKeyword:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Lucida Sans Unicode\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Lucida Grande\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        f.setBold(true);\n        break;\n\n    case PythonDoubleQuotedString:\n    case PythonSingleQuotedString:\n    case ASPPythonDoubleQuotedString:\n    case ASPPythonSingleQuotedString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier New\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    case PHPKeyword:\n    case PHPVariable:\n    case PHPDoubleQuotedVariable:\n        f = QsciLexer::defaultFont(style);\n        f.setItalic(true);\n        break;\n\n    case PHPCommentLine:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        f.setItalic(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerHTML::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"a abbr acronym address applet area \"\n            \"b base basefont bdo big blockquote body br button \"\n            \"caption center cite code col colgroup \"\n            \"dd del dfn dir div dl dt \"\n            \"em \"\n            \"fieldset font form frame frameset \"\n            \"h1 h2 h3 h4 h5 h6 head hr html \"\n            \"i iframe img input ins isindex \"\n            \"kbd \"\n            \"label legend li link \"\n            \"map menu meta \"\n            \"noframes noscript \"\n            \"object ol optgroup option \"\n            \"p param pre \"\n            \"q \"\n            \"s samp script select small span strike strong style \"\n            \"sub sup \"\n            \"table tbody td textarea tfoot th thead title tr tt \"\n            \"u ul \"\n            \"var \"\n            \"xml xmlns \"\n            \"abbr accept-charset accept accesskey action align \"\n            \"alink alt archive axis \"\n            \"background bgcolor border \"\n            \"cellpadding cellspacing char charoff charset checked \"\n            \"cite class classid clear codebase codetype color \"\n            \"cols colspan compact content coords \"\n            \"data datafld dataformatas datapagesize datasrc \"\n            \"datetime declare defer dir disabled \"\n            \"enctype event \"\n            \"face for frame frameborder \"\n            \"headers height href hreflang hspace http-equiv \"\n            \"id ismap label lang language leftmargin link \"\n            \"longdesc \"\n            \"marginwidth marginheight maxlength media method \"\n            \"multiple \"\n            \"name nohref noresize noshade nowrap \"\n            \"object onblur onchange onclick ondblclick onfocus \"\n            \"onkeydown onkeypress onkeyup onload onmousedown \"\n            \"onmousemove onmouseover onmouseout onmouseup onreset \"\n            \"onselect onsubmit onunload \"\n            \"profile prompt \"\n            \"readonly rel rev rows rowspan rules \"\n            \"scheme scope selected shape size span src standby \"\n            \"start style summary \"\n            \"tabindex target text title topmargin type \"\n            \"usemap \"\n            \"valign value valuetype version vlink vspace \"\n            \"width \"\n            \"text password checkbox radio submit reset file \"\n            \"hidden image \"\n            \"public !doctype\";\n\n    if (set == 2)\n        return QsciLexerJavaScript::keywordClass;\n\n    if (set == 3)\n        return\n            // Move these to QsciLexerVisualBasic when we\n            // get round to implementing it.\n            \"and begin case call continue do each else elseif end \"\n            \"erase error event exit false for function get gosub \"\n            \"goto if implement in load loop lset me mid new next \"\n            \"not nothing on or property raiseevent rem resume \"\n            \"return rset select set stop sub then to true unload \"\n            \"until wend while with withevents attribute alias as \"\n            \"boolean byref byte byval const compare currency date \"\n            \"declare dim double enum explicit friend global \"\n            \"integer let lib long module object option optional \"\n            \"preserve private property public redim single static \"\n            \"string type variant\";\n\n    if (set == 4)\n        return QsciLexerPython::keywordClass;\n\n    if (set == 5)\n        return\n            \"and argv as argc break case cfunction class continue \"\n            \"declare default do die \"\n            \"echo else elseif empty enddeclare endfor endforeach \"\n            \"endif endswitch endwhile e_all e_parse e_error \"\n            \"e_warning eval exit extends \"\n            \"false for foreach function global \"\n            \"http_cookie_vars http_get_vars http_post_vars \"\n            \"http_post_files http_env_vars http_server_vars \"\n            \"if include include_once list new not null \"\n            \"old_function or \"\n            \"parent php_os php_self php_version print \"\n            \"require require_once return \"\n            \"static switch stdclass this true var xor virtual \"\n            \"while \"\n            \"__file__ __line__ __sleep __wakeup\";\n\n    if (set == 6)\n        return \"ELEMENT DOCTYPE ATTLIST ENTITY NOTATION\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerHTML::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"HTML default\");\n\n    case Tag:\n        return tr(\"Tag\");\n\n    case UnknownTag:\n        return tr(\"Unknown tag\");\n\n    case Attribute:\n        return tr(\"Attribute\");\n\n    case UnknownAttribute:\n        return tr(\"Unknown attribute\");\n\n    case HTMLNumber:\n        return tr(\"HTML number\");\n\n    case HTMLDoubleQuotedString:\n        return tr(\"HTML double-quoted string\");\n\n    case HTMLSingleQuotedString:\n        return tr(\"HTML single-quoted string\");\n\n    case OtherInTag:\n        return tr(\"Other text in a tag\");\n\n    case HTMLComment:\n        return tr(\"HTML comment\");\n\n    case Entity:\n        return tr(\"Entity\");\n\n    case XMLTagEnd:\n        return tr(\"End of a tag\");\n\n    case XMLStart:\n        return tr(\"Start of an XML fragment\");\n\n    case XMLEnd:\n        return tr(\"End of an XML fragment\");\n\n    case Script:\n        return tr(\"Script tag\");\n\n    case ASPAtStart:\n        return tr(\"Start of an ASP fragment with @\");\n\n    case ASPStart:\n        return tr(\"Start of an ASP fragment\");\n\n    case CDATA:\n        return tr(\"CDATA\");\n\n    case PHPStart:\n        return tr(\"Start of a PHP fragment\");\n\n    case HTMLValue:\n        return tr(\"Unquoted HTML value\");\n\n    case ASPXCComment:\n        return tr(\"ASP X-Code comment\");\n\n    case SGMLDefault:\n        return tr(\"SGML default\");\n\n    case SGMLCommand:\n        return tr(\"SGML command\");\n\n    case SGMLParameter:\n        return tr(\"First parameter of an SGML command\");\n\n    case SGMLDoubleQuotedString:\n        return tr(\"SGML double-quoted string\");\n\n    case SGMLSingleQuotedString:\n        return tr(\"SGML single-quoted string\");\n\n    case SGMLError:\n        return tr(\"SGML error\");\n\n    case SGMLSpecial:\n        return tr(\"SGML special entity\");\n\n    case SGMLComment:\n        return tr(\"SGML comment\");\n\n    case SGMLParameterComment:\n        return tr(\"First parameter comment of an SGML command\");\n\n    case SGMLBlockDefault:\n        return tr(\"SGML block default\");\n\n    case JavaScriptStart:\n        return tr(\"Start of a JavaScript fragment\");\n\n    case JavaScriptDefault:\n        return tr(\"JavaScript default\");\n\n    case JavaScriptComment:\n        return tr(\"JavaScript comment\");\n\n    case JavaScriptCommentLine:\n        return tr(\"JavaScript line comment\");\n\n    case JavaScriptCommentDoc:\n        return tr(\"JavaDoc style JavaScript comment\");\n\n    case JavaScriptNumber:\n        return tr(\"JavaScript number\");\n\n    case JavaScriptWord:\n        return tr(\"JavaScript word\");\n\n    case JavaScriptKeyword:\n        return tr(\"JavaScript keyword\");\n\n    case JavaScriptDoubleQuotedString:\n        return tr(\"JavaScript double-quoted string\");\n\n    case JavaScriptSingleQuotedString:\n        return tr(\"JavaScript single-quoted string\");\n\n    case JavaScriptSymbol:\n        return tr(\"JavaScript symbol\");\n\n    case JavaScriptUnclosedString:\n        return tr(\"JavaScript unclosed string\");\n\n    case JavaScriptRegex:\n        return tr(\"JavaScript regular expression\");\n\n    case ASPJavaScriptStart:\n        return tr(\"Start of an ASP JavaScript fragment\");\n\n    case ASPJavaScriptDefault:\n        return tr(\"ASP JavaScript default\");\n\n    case ASPJavaScriptComment:\n        return tr(\"ASP JavaScript comment\");\n\n    case ASPJavaScriptCommentLine:\n        return tr(\"ASP JavaScript line comment\");\n\n    case ASPJavaScriptCommentDoc:\n        return tr(\"JavaDoc style ASP JavaScript comment\");\n\n    case ASPJavaScriptNumber:\n        return tr(\"ASP JavaScript number\");\n\n    case ASPJavaScriptWord:\n        return tr(\"ASP JavaScript word\");\n\n    case ASPJavaScriptKeyword:\n        return tr(\"ASP JavaScript keyword\");\n\n    case ASPJavaScriptDoubleQuotedString:\n        return tr(\"ASP JavaScript double-quoted string\");\n\n    case ASPJavaScriptSingleQuotedString:\n        return tr(\"ASP JavaScript single-quoted string\");\n\n    case ASPJavaScriptSymbol:\n        return tr(\"ASP JavaScript symbol\");\n\n    case ASPJavaScriptUnclosedString:\n        return tr(\"ASP JavaScript unclosed string\");\n\n    case ASPJavaScriptRegex:\n        return tr(\"ASP JavaScript regular expression\");\n\n    case VBScriptStart:\n        return tr(\"Start of a VBScript fragment\");\n\n    case VBScriptDefault:\n        return tr(\"VBScript default\");\n\n    case VBScriptComment:\n        return tr(\"VBScript comment\");\n\n    case VBScriptNumber:\n        return tr(\"VBScript number\");\n\n    case VBScriptKeyword:\n        return tr(\"VBScript keyword\");\n\n    case VBScriptString:\n        return tr(\"VBScript string\");\n\n    case VBScriptIdentifier:\n        return tr(\"VBScript identifier\");\n\n    case VBScriptUnclosedString:\n        return tr(\"VBScript unclosed string\");\n\n    case ASPVBScriptStart:\n        return tr(\"Start of an ASP VBScript fragment\");\n\n    case ASPVBScriptDefault:\n        return tr(\"ASP VBScript default\");\n\n    case ASPVBScriptComment:\n        return tr(\"ASP VBScript comment\");\n\n    case ASPVBScriptNumber:\n        return tr(\"ASP VBScript number\");\n\n    case ASPVBScriptKeyword:\n        return tr(\"ASP VBScript keyword\");\n\n    case ASPVBScriptString:\n        return tr(\"ASP VBScript string\");\n\n    case ASPVBScriptIdentifier:\n        return tr(\"ASP VBScript identifier\");\n\n    case ASPVBScriptUnclosedString:\n        return tr(\"ASP VBScript unclosed string\");\n\n    case PythonStart:\n        return tr(\"Start of a Python fragment\");\n\n    case PythonDefault:\n        return tr(\"Python default\");\n\n    case PythonComment:\n        return tr(\"Python comment\");\n\n    case PythonNumber:\n        return tr(\"Python number\");\n\n    case PythonDoubleQuotedString:\n        return tr(\"Python double-quoted string\");\n\n    case PythonSingleQuotedString:\n        return tr(\"Python single-quoted string\");\n\n    case PythonKeyword:\n        return tr(\"Python keyword\");\n\n    case PythonTripleDoubleQuotedString:\n        return tr(\"Python triple double-quoted string\");\n\n    case PythonTripleSingleQuotedString:\n        return tr(\"Python triple single-quoted string\");\n\n    case PythonClassName:\n        return tr(\"Python class name\");\n\n    case PythonFunctionMethodName:\n        return tr(\"Python function or method name\");\n\n    case PythonOperator:\n        return tr(\"Python operator\");\n\n    case PythonIdentifier:\n        return tr(\"Python identifier\");\n\n    case ASPPythonStart:\n        return tr(\"Start of an ASP Python fragment\");\n\n    case ASPPythonDefault:\n        return tr(\"ASP Python default\");\n\n    case ASPPythonComment:\n        return tr(\"ASP Python comment\");\n\n    case ASPPythonNumber:\n        return tr(\"ASP Python number\");\n\n    case ASPPythonDoubleQuotedString:\n        return tr(\"ASP Python double-quoted string\");\n\n    case ASPPythonSingleQuotedString:\n        return tr(\"ASP Python single-quoted string\");\n\n    case ASPPythonKeyword:\n        return tr(\"ASP Python keyword\");\n\n    case ASPPythonTripleDoubleQuotedString:\n        return tr(\"ASP Python triple double-quoted string\");\n\n    case ASPPythonTripleSingleQuotedString:\n        return tr(\"ASP Python triple single-quoted string\");\n\n    case ASPPythonClassName:\n        return tr(\"ASP Python class name\");\n\n    case ASPPythonFunctionMethodName:\n        return tr(\"ASP Python function or method name\");\n\n    case ASPPythonOperator:\n        return tr(\"ASP Python operator\");\n\n    case ASPPythonIdentifier:\n        return tr(\"ASP Python identifier\");\n\n    case PHPDefault:\n        return tr(\"PHP default\");\n\n    case PHPDoubleQuotedString:\n        return tr(\"PHP double-quoted string\");\n\n    case PHPSingleQuotedString:\n        return tr(\"PHP single-quoted string\");\n\n    case PHPKeyword:\n        return tr(\"PHP keyword\");\n\n    case PHPNumber:\n        return tr(\"PHP number\");\n\n    case PHPVariable:\n        return tr(\"PHP variable\");\n\n    case PHPComment:\n        return tr(\"PHP comment\");\n\n    case PHPCommentLine:\n        return tr(\"PHP line comment\");\n\n    case PHPDoubleQuotedVariable:\n        return tr(\"PHP double-quoted variable\");\n\n    case PHPOperator:\n        return tr(\"PHP operator\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerHTML::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case ASPAtStart:\n        return QColor(0xff,0xff,0x00);\n\n    case ASPStart:\n    case CDATA:\n        return QColor(0xff,0xdf,0x00);\n\n    case PHPStart:\n        return QColor(0xff,0xef,0xbf);\n\n    case HTMLValue:\n        return QColor(0xff,0xef,0xff);\n\n    case SGMLDefault:\n    case SGMLCommand:\n    case SGMLParameter:\n    case SGMLDoubleQuotedString:\n    case SGMLSingleQuotedString:\n    case SGMLSpecial:\n    case SGMLEntity:\n    case SGMLComment:\n        return QColor(0xef,0xef,0xff);\n\n    case SGMLError:\n        return QColor(0xff,0x66,0x66);\n\n    case SGMLBlockDefault:\n        return QColor(0xcc,0xcc,0xe0);\n\n    case JavaScriptDefault:\n    case JavaScriptComment:\n    case JavaScriptCommentLine:\n    case JavaScriptCommentDoc:\n    case JavaScriptNumber:\n    case JavaScriptWord:\n    case JavaScriptKeyword:\n    case JavaScriptDoubleQuotedString:\n    case JavaScriptSingleQuotedString:\n    case JavaScriptSymbol:\n        return QColor(0xf0,0xf0,0xff);\n\n    case JavaScriptUnclosedString:\n    case ASPJavaScriptUnclosedString:\n        return QColor(0xbf,0xbb,0xb0);\n\n    case JavaScriptRegex:\n    case ASPJavaScriptRegex:\n        return QColor(0xff,0xbb,0xb0);\n\n    case ASPJavaScriptDefault:\n    case ASPJavaScriptComment:\n    case ASPJavaScriptCommentLine:\n    case ASPJavaScriptCommentDoc:\n    case ASPJavaScriptNumber:\n    case ASPJavaScriptWord:\n    case ASPJavaScriptKeyword:\n    case ASPJavaScriptDoubleQuotedString:\n    case ASPJavaScriptSingleQuotedString:\n    case ASPJavaScriptSymbol:\n        return QColor(0xdf,0xdf,0x7f);\n\n    case VBScriptDefault:\n    case VBScriptComment:\n    case VBScriptNumber:\n    case VBScriptKeyword:\n    case VBScriptString:\n    case VBScriptIdentifier:\n        return QColor(0xef,0xef,0xff);\n\n    case VBScriptUnclosedString:\n    case ASPVBScriptUnclosedString:\n        return QColor(0x7f,0x7f,0xff);\n\n    case ASPVBScriptDefault:\n    case ASPVBScriptComment:\n    case ASPVBScriptNumber:\n    case ASPVBScriptKeyword:\n    case ASPVBScriptString:\n    case ASPVBScriptIdentifier:\n        return QColor(0xcf,0xcf,0xef);\n\n    case PythonDefault:\n    case PythonComment:\n    case PythonNumber:\n    case PythonDoubleQuotedString:\n    case PythonSingleQuotedString:\n    case PythonKeyword:\n    case PythonTripleSingleQuotedString:\n    case PythonTripleDoubleQuotedString:\n    case PythonClassName:\n    case PythonFunctionMethodName:\n    case PythonOperator:\n    case PythonIdentifier:\n        return QColor(0xef,0xff,0xef);\n\n    case ASPPythonDefault:\n    case ASPPythonComment:\n    case ASPPythonNumber:\n    case ASPPythonDoubleQuotedString:\n    case ASPPythonSingleQuotedString:\n    case ASPPythonKeyword:\n    case ASPPythonTripleSingleQuotedString:\n    case ASPPythonTripleDoubleQuotedString:\n    case ASPPythonClassName:\n    case ASPPythonFunctionMethodName:\n    case ASPPythonOperator:\n    case ASPPythonIdentifier:\n        return QColor(0xcf,0xef,0xcf);\n\n    case PHPDefault:\n    case PHPDoubleQuotedString:\n    case PHPSingleQuotedString:\n    case PHPKeyword:\n    case PHPNumber:\n    case PHPVariable:\n    case PHPComment:\n    case PHPCommentLine:\n    case PHPDoubleQuotedVariable:\n    case PHPOperator:\n        return QColor(0xff,0xf8,0xf8);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerHTML::refreshProperties()\n{\n    setCompactProp();\n    setPreprocProp();\n    setCaseSensTagsProp();\n    setScriptCommentsProp();\n    setScriptHeredocsProp();\n    setDjangoProp();\n    setMakoProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerHTML::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_preproc = qs.value(prefix + \"foldpreprocessor\", false).toBool();\n    case_sens_tags = qs.value(prefix + \"casesensitivetags\", false).toBool();\n    fold_script_comments = qs.value(prefix + \"foldscriptcomments\", false).toBool();\n    fold_script_heredocs = qs.value(prefix + \"foldscriptheredocs\", false).toBool();\n    django_templates = qs.value(prefix + \"djangotemplates\", false).toBool();\n    mako_templates = qs.value(prefix + \"makotemplates\", false).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerHTML::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"foldpreprocessor\", fold_preproc);\n    qs.setValue(prefix + \"casesensitivetags\", case_sens_tags);\n    qs.setValue(prefix + \"foldscriptcomments\", fold_script_comments);\n    qs.setValue(prefix + \"foldscriptheredocs\", fold_script_heredocs);\n    qs.setValue(prefix + \"djangotemplates\", django_templates);\n    qs.setValue(prefix + \"makotemplates\", mako_templates);\n\n    return rc;\n}\n\n\n// Set if tags are case sensitive.\nvoid QsciLexerHTML::setCaseSensitiveTags(bool sens)\n{\n    case_sens_tags = sens;\n\n    setCaseSensTagsProp();\n}\n\n\n// Set the \"html.tags.case.sensitive\" property.\nvoid QsciLexerHTML::setCaseSensTagsProp()\n{\n    emit propertyChanged(\"html.tags.case.sensitive\",(case_sens_tags ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact\nvoid QsciLexerHTML::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerHTML::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if preprocessor blocks can be folded.\nvoid QsciLexerHTML::setFoldPreprocessor(bool fold)\n{\n    fold_preproc = fold;\n\n    setPreprocProp();\n}\n\n\n// Set the \"fold.html.preprocessor\" property.\nvoid QsciLexerHTML::setPreprocProp()\n{\n    emit propertyChanged(\"fold.html.preprocessor\",(fold_preproc ? \"1\" : \"0\"));\n}\n\n\n// Set if script comments can be folded.\nvoid QsciLexerHTML::setFoldScriptComments(bool fold)\n{\n    fold_script_comments = fold;\n\n    setScriptCommentsProp();\n}\n\n\n// Set the \"fold.hypertext.comment\" property.\nvoid QsciLexerHTML::setScriptCommentsProp()\n{\n    emit propertyChanged(\"fold.hypertext.comment\",(fold_script_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if script heredocs can be folded.\nvoid QsciLexerHTML::setFoldScriptHeredocs(bool fold)\n{\n    fold_script_heredocs = fold;\n\n    setScriptHeredocsProp();\n}\n\n\n// Set the \"fold.hypertext.heredoc\" property.\nvoid QsciLexerHTML::setScriptHeredocsProp()\n{\n    emit propertyChanged(\"fold.hypertext.heredoc\",(fold_script_heredocs ? \"1\" : \"0\"));\n}\n\n\n// Set if Django templates are supported.\nvoid QsciLexerHTML::setDjangoTemplates(bool enable)\n{\n    django_templates = enable;\n\n    setDjangoProp();\n}\n\n\n// Set the \"lexer.html.django\" property.\nvoid QsciLexerHTML::setDjangoProp()\n{\n    emit propertyChanged(\"lexer.html.django\", (django_templates ? \"1\" : \"0\"));\n}\n\n\n// Set if Mako templates are supported.\nvoid QsciLexerHTML::setMakoTemplates(bool enable)\n{\n    mako_templates = enable;\n\n    setMakoProp();\n}\n\n\n// Set the \"lexer.html.mako\" property.\nvoid QsciLexerHTML::setMakoProp()\n{\n    emit propertyChanged(\"lexer.html.mako\", (mako_templates ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexeridl.cpp",
    "content": "// This module implements the QsciLexerIDL class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexeridl.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n\n\n// The ctor.\nQsciLexerIDL::QsciLexerIDL(QObject *parent)\n    : QsciLexerCPP(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerIDL::~QsciLexerIDL()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerIDL::language() const\n{\n    return \"IDL\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerIDL::defaultColor(int style) const\n{\n    if (style == UUID)\n        return QColor(0x80,0x40,0x80);\n\n    return QsciLexerCPP::defaultColor(style);\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerIDL::keywords(int set) const\n{\n    if (set != 1)\n        return 0;\n\n    return \"aggregatable allocate appobject arrays async async_uuid \"\n           \"auto_handle bindable boolean broadcast byte byte_count \"\n           \"call_as callback char coclass code comm_status const \"\n           \"context_handle context_handle_noserialize \"\n           \"context_handle_serialize control cpp_quote custom decode \"\n           \"default defaultbind defaultcollelem defaultvalue \"\n           \"defaultvtable dispinterface displaybind dllname double dual \"\n           \"enable_allocate encode endpoint entry enum error_status_t \"\n           \"explicit_handle fault_status first_is float handle_t heap \"\n           \"helpcontext helpfile helpstring helpstringcontext \"\n           \"helpstringdll hidden hyper id idempotent ignore iid_as iid_is \"\n           \"immediatebind implicit_handle import importlib in include \"\n           \"in_line int __int64 __int3264 interface last_is lcid \"\n           \"length_is library licensed local long max_is maybe message \"\n           \"methods midl_pragma midl_user_allocate midl_user_free min_is \"\n           \"module ms_union ncacn_at_dsp ncacn_dnet_nsp ncacn_http \"\n           \"ncacn_ip_tcp ncacn_nb_ipx ncacn_nb_nb ncacn_nb_tcp ncacn_np \"\n           \"ncacn_spx ncacn_vns_spp ncadg_ip_udp ncadg_ipx ncadg_mq \"\n           \"ncalrpc nocode nonbrowsable noncreatable nonextensible notify \"\n           \"object odl oleautomation optimize optional out out_of_line \"\n           \"pipe pointer_default pragma properties propget propput \"\n           \"propputref ptr public range readonly ref represent_as \"\n           \"requestedit restricted retval shape short signed size_is \"\n           \"small source strict_context_handle string struct switch \"\n           \"switch_is switch_type transmit_as typedef uidefault union \"\n           \"unique unsigned user_marshal usesgetlasterror uuid v1_enum \"\n           \"vararg version void wchar_t wire_marshal\";\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerIDL::description(int style) const\n{\n    if (style == UUID)\n        return tr(\"UUID\");\n\n    return QsciLexerCPP::description(style);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerjava.cpp",
    "content": "// This module implements the QsciLexerJava class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerjava.h\"\n\n\n// The ctor.\nQsciLexerJava::QsciLexerJava(QObject *parent)\n    : QsciLexerCPP(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerJava::~QsciLexerJava()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerJava::language() const\n{\n    return \"Java\";\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerJava::keywords(int set) const\n{\n    if (set != 1)\n        return 0;\n\n    return \"abstract assert boolean break byte case catch char class \"\n           \"const continue default do double else extends final finally \"\n           \"float for future generic goto if implements import inner \"\n           \"instanceof int interface long native new null operator outer \"\n           \"package private protected public rest return short static \"\n           \"super switch synchronized this throw throws transient try var \"\n           \"void volatile while\";\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerjavascript.cpp",
    "content": "// This module implements the QsciLexerJavaScript class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerjavascript.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n\n\n// The list of JavaScript keywords that can be used by other friendly lexers.\nconst char *QsciLexerJavaScript::keywordClass =\n    \"abstract boolean break byte case catch char class const continue \"\n    \"debugger default delete do double else enum export extends final \"\n    \"finally float for function goto if implements import in instanceof \"\n    \"int interface long native new package private protected public \"\n    \"return short static super switch synchronized this throw throws \"\n    \"transient try typeof var void volatile while with\";\n\n\n// The ctor.\nQsciLexerJavaScript::QsciLexerJavaScript(QObject *parent)\n    : QsciLexerCPP(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerJavaScript::~QsciLexerJavaScript()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerJavaScript::language() const\n{\n    return \"JavaScript\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerJavaScript::defaultColor(int style) const\n{\n    if (style == Regex)\n        return QColor(0x3f,0x7f,0x3f);\n\n    return QsciLexerCPP::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerJavaScript::defaultEolFill(int style) const\n{\n    if (style == Regex)\n        return true;\n\n    return QsciLexerCPP::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerJavaScript::defaultFont(int style) const\n{\n    if (style == Regex)\n#if defined(Q_OS_WIN)\n        return QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        return QFont(\"Courier\", 12);\n#else\n        return QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n\n    return QsciLexerCPP::defaultFont(style);\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerJavaScript::keywords(int set) const\n{\n    if (set != 1)\n        return 0;\n\n    return keywordClass;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerJavaScript::description(int style) const\n{\n    if (style == Regex)\n        return tr(\"Regular expression\");\n\n    return QsciLexerCPP::description(style);\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerJavaScript::defaultPaper(int style) const\n{\n    if (style == Regex)\n        return QColor(0xe0,0xf0,0xff);\n\n    return QsciLexer::defaultPaper(style);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp",
    "content": "// This module implements the QsciLexerJSON class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerjson.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerJSON::QsciLexerJSON(QObject *parent)\n    : QsciLexer(parent),\n      allow_comments(true), escape_sequence(true), fold_compact(true)\n{\n}\n\n\n// The dtor.\nQsciLexerJSON::~QsciLexerJSON()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerJSON::language() const\n{\n    return \"JSON\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerJSON::lexer() const\n{\n    return \"json\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerJSON::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case UnclosedString:\n    case Error:\n        return QColor(0xff, 0xff, 0xff);\n\n    case Number:\n        return QColor(0x00, 0x7f, 0x7f);\n\n    case String:\n        return QColor(0x7f, 0x00, 0x00);\n\n    case Property:\n        return QColor(0x88, 0x0a, 0xe8);\n\n    case EscapeSequence:\n        return QColor(0x0b, 0x98, 0x2e);\n\n    case CommentLine:\n    case CommentBlock:\n        return QColor(0x05, 0xbb, 0xae);\n\n    case Operator:\n        return QColor(0x18, 0x64, 0x4a);\n\n    case IRI:\n        return QColor(0x00, 0x00, 0xff);\n\n    case IRICompact:\n        return QColor(0xd1, 0x37, 0xc1);\n\n    case Keyword:\n        return QColor(0x0b, 0xce, 0xa7);\n\n    case KeywordLD:\n        return QColor(0xec, 0x28, 0x06);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerJSON::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case UnclosedString:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerJSON::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case CommentLine:\n        f = QsciLexer::defaultFont(style);\n        f.setItalic(true);\n        break;\n\n    case Keyword:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerJSON::keywords(int set) const\n{\n    if (set == 1)\n        return \"false true null\";\n\n    if (set == 2)\n        return\n            \"@id @context @type @value @language @container @list @set \"\n            \"@reverse @index @base @vocab @graph\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerJSON::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case String:\n        return tr(\"String\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case Property:\n        return tr(\"Property\");\n\n    case EscapeSequence:\n        return tr(\"Escape sequence\");\n\n    case CommentLine:\n        return tr(\"Line comment\");\n\n    case CommentBlock:\n        return tr(\"Block comment\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case IRI:\n        return tr(\"IRI\");\n\n    case IRICompact:\n        return tr(\"JSON-LD compact IRI\");\n\n    case Keyword:\n        return tr(\"JSON keyword\");\n\n    case KeywordLD:\n        return tr(\"JSON-LD keyword\");\n\n    case Error:\n        return tr(\"Parsing error\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerJSON::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case UnclosedString:\n    case Error:\n        return QColor(0xff, 0x00, 0x00);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerJSON::refreshProperties()\n{   \n    setAllowCommentsProp();\n    setEscapeSequenceProp();\n    setCompactProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerJSON::readProperties(QSettings &qs,const QString &prefix)\n{\n    allow_comments = qs.value(prefix + \"allowcomments\", true).toBool();\n    escape_sequence = qs.value(prefix + \"escapesequence\", true).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n\n    return true;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerJSON::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    qs.setValue(prefix + \"allowcomments\", allow_comments);\n    qs.setValue(prefix + \"escapesequence\", escape_sequence);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n\n    return true;\n}\n\n\n// Set if comments are highlighted\nvoid QsciLexerJSON::setHighlightComments(bool highlight)\n{\n    allow_comments = highlight;\n\n    setAllowCommentsProp();\n}\n\n\n// Set the \"lexer.json.allow.comments\" property.\nvoid QsciLexerJSON::setAllowCommentsProp()\n{\n    emit propertyChanged(\"lexer.json.allow.comments\",\n            (allow_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if escape sequences are highlighted.\nvoid QsciLexerJSON::setHighlightEscapeSequences(bool highlight)\n{\n    escape_sequence = highlight;\n\n    setEscapeSequenceProp();\n}\n\n\n// Set the \"lexer.json.escape.sequence\" property.\nvoid QsciLexerJSON::setEscapeSequenceProp()\n{\n    emit propertyChanged(\"lexer.json.escape.sequence\",\n            (escape_sequence ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact.\nvoid QsciLexerJSON::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerJSON::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\", (fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp",
    "content": "// This module implements the QsciLexerLua class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerlua.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerLua::QsciLexerLua(QObject *parent)\n    : QsciLexer(parent), fold_compact(true)\n{\n}\n\n\n// The dtor.\nQsciLexerLua::~QsciLexerLua()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerLua::language() const\n{\n    return \"Lua\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerLua::lexer() const\n{\n    return \"lua\";\n}\n\n\n// Return the set of character sequences that can separate auto-completion\n// words.\nQStringList QsciLexerLua::autoCompletionWordSeparators() const\n{\n    QStringList wl;\n\n    wl << \":\" << \".\";\n\n    return wl;\n}\n\n\n// Return the list of characters that can start a block.\nconst char *QsciLexerLua::blockStart(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerLua::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerLua::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x00,0x00,0x00);\n\n    case Comment:\n    case LineComment:\n        return QColor(0x00,0x7f,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Keyword:\n    case BasicFunctions:\n    case StringTableMathsFunctions:\n    case CoroutinesIOSystemFacilities:\n        return QColor(0x00,0x00,0x7f);\n\n    case String:\n    case Character:\n    case LiteralString:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Preprocessor:\n    case Label:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Operator:\n    case Identifier:\n        break;\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerLua::defaultEolFill(int style) const\n{\n    if (style == Comment || style == UnclosedString)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerLua::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case LineComment:\n    case LiteralString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerLua::keywords(int set) const\n{\n    if (set == 1)\n        // Keywords.\n        return\n            \"and break do else elseif end false for function if \"\n            \"in local nil not or repeat return then true until \"\n            \"while\";\n\n    if (set == 2)\n        // Basic functions.\n        return\n            \"_ALERT _ERRORMESSAGE _INPUT _PROMPT _OUTPUT _STDERR \"\n            \"_STDIN _STDOUT call dostring foreach foreachi getn \"\n            \"globals newtype rawget rawset require sort tinsert \"\n            \"tremove \"\n\n            \"G getfenv getmetatable ipairs loadlib next pairs \"\n            \"pcall rawegal rawget rawset require setfenv \"\n            \"setmetatable xpcall string table math coroutine io \"\n            \"os debug\";\n\n    if (set == 3)\n        // String, table and maths functions.\n        return\n            \"abs acos asin atan atan2 ceil cos deg exp floor \"\n            \"format frexp gsub ldexp log log10 max min mod rad \"\n            \"random randomseed sin sqrt strbyte strchar strfind \"\n            \"strlen strlower strrep strsub strupper tan \"\n\n            \"string.byte string.char string.dump string.find \"\n            \"string.len string.lower string.rep string.sub \"\n            \"string.upper string.format string.gfind string.gsub \"\n            \"table.concat table.foreach table.foreachi table.getn \"\n            \"table.sort table.insert table.remove table.setn \"\n            \"math.abs math.acos math.asin math.atan math.atan2 \"\n            \"math.ceil math.cos math.deg math.exp math.floor \"\n            \"math.frexp math.ldexp math.log math.log10 math.max \"\n            \"math.min math.mod math.pi math.rad math.random \"\n            \"math.randomseed math.sin math.sqrt math.tan\";\n\n    if (set == 4)\n        // Coroutine, I/O and system facilities.\n        return\n            \"openfile closefile readfrom writeto appendto remove \"\n            \"rename flush seek tmpfile tmpname read write clock \"\n            \"date difftime execute exit getenv setlocale time \"\n\n            \"coroutine.create coroutine.resume coroutine.status \"\n            \"coroutine.wrap coroutine.yield io.close io.flush \"\n            \"io.input io.lines io.open io.output io.read \"\n            \"io.tmpfile io.type io.write io.stdin io.stdout \"\n            \"io.stderr os.clock os.date os.difftime os.execute \"\n            \"os.exit os.getenv os.remove os.rename os.setlocale \"\n            \"os.time os.tmpname\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerLua::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case LineComment:\n        return tr(\"Line comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case String:\n        return tr(\"String\");\n\n    case Character:\n        return tr(\"Character\");\n\n    case LiteralString:\n        return tr(\"Literal string\");\n\n    case Preprocessor:\n        return tr(\"Preprocessor\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case BasicFunctions:\n        return tr(\"Basic functions\");\n\n    case StringTableMathsFunctions:\n        return tr(\"String, table and maths functions\");\n\n    case CoroutinesIOSystemFacilities:\n        return tr(\"Coroutines, i/o and system facilities\");\n\n    case KeywordSet5:\n        return tr(\"User defined 1\");\n\n    case KeywordSet6:\n        return tr(\"User defined 2\");\n\n    case KeywordSet7:\n        return tr(\"User defined 3\");\n\n    case KeywordSet8:\n        return tr(\"User defined 4\");\n\n    case Label:\n        return tr(\"Label\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerLua::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case Comment:\n        return QColor(0xd0,0xf0,0xf0);\n\n    case LiteralString:\n        return QColor(0xe0,0xff,0xff);\n\n    case UnclosedString:\n        return QColor(0xe0,0xc0,0xe0);\n\n    case BasicFunctions:\n        return QColor(0xd0,0xff,0xd0);\n\n    case StringTableMathsFunctions:\n        return QColor(0xd0,0xd0,0xff);\n\n    case CoroutinesIOSystemFacilities:\n        return QColor(0xff,0xd0,0xd0);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerLua::refreshProperties()\n{\n    setCompactProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerLua::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerLua::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n\n    return rc;\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerLua::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact.\nvoid QsciLexerLua::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerLua::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp",
    "content": "// This module implements the QsciLexerMakefile class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexermakefile.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n\n\n// The ctor.\nQsciLexerMakefile::QsciLexerMakefile(QObject *parent)\n    : QsciLexer(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerMakefile::~QsciLexerMakefile()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerMakefile::language() const\n{\n    return \"Makefile\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerMakefile::lexer() const\n{\n    return \"makefile\";\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerMakefile::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerMakefile::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n    case Operator:\n        return QColor(0x00,0x00,0x00);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case Preprocessor:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Variable:\n        return QColor(0x00,0x00,0x80);\n\n    case Target:\n        return QColor(0xa0,0x00,0x00);\n\n    case Error:\n        return QColor(0xff,0xff,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerMakefile::defaultEolFill(int style) const\n{\n    if (style == Error)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerMakefile::defaultFont(int style) const\n{\n    QFont f;\n\n    if (style == Comment)\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n    else\n        f = QsciLexer::defaultFont(style);\n\n    return f;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerMakefile::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Preprocessor:\n        return tr(\"Preprocessor\");\n\n    case Variable:\n        return tr(\"Variable\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Target:\n        return tr(\"Target\");\n\n    case Error:\n        return tr(\"Error\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerMakefile::defaultPaper(int style) const\n{\n    if (style == Error)\n        return QColor(0xff,0x00,0x00);\n\n    return QsciLexer::defaultPaper(style);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp",
    "content": "// This module implements the QsciLexerMarkdown class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexermarkdown.h\"\n\n#include <qfont.h>\n\n\n// The ctor.\nQsciLexerMarkdown::QsciLexerMarkdown(QObject *parent)\n    : QsciLexer(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerMarkdown::~QsciLexerMarkdown()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerMarkdown::language() const\n{\n    return \"Markdown\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerMarkdown::lexer() const\n{\n    return \"markdown\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerMarkdown::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Special:\n        return QColor(0xcc, 0x00, 0xff);\n\n    case StrongEmphasisAsterisks:\n    case StrongEmphasisUnderscores:\n        return QColor(0x22, 0x44, 0x66);\n\n    case EmphasisAsterisks:\n    case EmphasisUnderscores:\n        return QColor(0x88, 0x00, 0x88);\n\n    case Header1:\n        return QColor(0xff, 0x77, 0x00);\n\n    case Header2:\n        return QColor(0xdd, 0x66, 0x00);\n\n    case Header3:\n        return QColor(0xbb, 0x55, 0x00);\n\n    case Header4:\n        return QColor(0x99, 0x44, 0x00);\n\n    case Header5:\n        return QColor(0x77, 0x33, 0x00);\n\n    case Header6:\n        return QColor(0x55, 0x22, 0x00);\n\n    case Prechar:\n        return QColor(0x00, 0x00, 0x00);\n\n    case UnorderedListItem:\n        return QColor(0x82, 0x5d, 0x00);\n\n    case OrderedListItem:\n        return QColor(0x00, 0x00, 0x70);\n\n    case BlockQuote:\n        return QColor(0x00, 0x66, 0x00);\n\n    case StrikeOut:\n        return QColor(0xdd, 0xdd, 0xdd);\n\n    case HorizontalRule:\n        return QColor(0x1f, 0x1c, 0x1b);\n\n    case Link:\n        return QColor(0x00, 0x00, 0xaa);\n\n    case CodeBackticks:\n    case CodeDoubleBackticks:\n        return QColor(0x7f, 0x00, 0x7f);\n\n    case CodeBlock:\n        return QColor(0x00, 0x45, 0x8a);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerMarkdown::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case StrongEmphasisAsterisks:\n    case StrongEmphasisUnderscores:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case EmphasisAsterisks:\n    case EmphasisUnderscores:\n        f = QsciLexer::defaultFont(style);\n        f.setItalic(true);\n        break;\n\n    case Header1:\n    case Header2:\n    case Header3:\n    case Header4:\n    case Header5:\n    case Header6:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\", 10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\", 9);\n#endif\n        f.setBold(true);\n        break;\n\n    case HorizontalRule:\n    case CodeBackticks:\n    case CodeDoubleBackticks:\n    case CodeBlock:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\", 10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\", 9);\n#endif\n        break;\n\n    case Link:\n        f = QsciLexer::defaultFont(style);\n        f.setUnderline(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerMarkdown::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case Prechar:\n        return QColor(0xee, 0xee, 0xaa);\n\n    case UnorderedListItem:\n        return QColor(0xde, 0xd8, 0xc3);\n\n    case OrderedListItem:\n        return QColor(0xb8, 0xc3, 0xe1);\n\n    case BlockQuote:\n        return QColor(0xcb, 0xdc, 0xcb);\n\n    case StrikeOut:\n        return QColor(0xaa, 0x00, 0x00);\n\n    case HorizontalRule:\n        return QColor(0xe7, 0xd1, 0xc9);\n\n    case CodeBackticks:\n    case CodeDoubleBackticks:\n        return QColor(0xef, 0xff, 0xef);\n\n    case CodeBlock:\n        return QColor(0xc5, 0xe0, 0xf5);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerMarkdown::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Special:\n        return tr(\"Special\");\n\n\tcase StrongEmphasisAsterisks:\n        return tr(\"Strong emphasis using double asterisks\");\n\n\tcase StrongEmphasisUnderscores:\n        return tr(\"Strong emphasis using double underscores\");\n\n\tcase EmphasisAsterisks:\n        return tr(\"Emphasis using single asterisks\");\n\n\tcase EmphasisUnderscores:\n        return tr(\"Emphasis using single underscores\");\n\n\tcase Header1:\n        return tr(\"Level 1 header\");\n\n\tcase Header2:\n        return tr(\"Level 2 header\");\n\n\tcase Header3:\n        return tr(\"Level 3 header\");\n\n\tcase Header4:\n        return tr(\"Level 4 header\");\n\n\tcase Header5:\n        return tr(\"Level 5 header\");\n\n\tcase Header6:\n        return tr(\"Level 6 header\");\n\n\tcase Prechar:\n        return tr(\"Pre-char\");\n\n\tcase UnorderedListItem:\n        return tr(\"Unordered list item\");\n\n\tcase OrderedListItem:\n        return tr(\"Ordered list item\");\n\n\tcase BlockQuote:\n        return tr(\"Block quote\");\n\n\tcase StrikeOut:\n        return tr(\"Strike out\");\n\n\tcase HorizontalRule:\n        return tr(\"Horizontal rule\");\n\n\tcase Link:\n        return tr(\"Link\");\n\n\tcase CodeBackticks:\n        return tr(\"Code between backticks\");\n\n\tcase CodeDoubleBackticks:\n        return tr(\"Code between double backticks\");\n\n\tcase CodeBlock:\n        return tr(\"Code block\");\n    }\n\n    return QString();\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp",
    "content": "// This module implements the QsciLexerMatlab class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexermatlab.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n\n\n// The ctor.\nQsciLexerMatlab::QsciLexerMatlab(QObject *parent)\n    : QsciLexer(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerMatlab::~QsciLexerMatlab()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerMatlab::language() const\n{\n    return \"Matlab\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerMatlab::lexer() const\n{\n    return \"matlab\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerMatlab::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n    case Operator:\n        return QColor(0x00,0x00,0x00);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case Command:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Keyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case SingleQuotedString:\n    case DoubleQuotedString:\n        return QColor(0x7f,0x00,0x7f);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerMatlab::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case Operator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerMatlab::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"break case catch continue else elseif end for function \"\n            \"global if otherwise persistent return switch try while\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerMatlab::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Command:\n        return tr(\"Command\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n    }\n\n    return QString();\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexeroctave.cpp",
    "content": "// This module implements the QsciLexerOctave class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexeroctave.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n\n\n// The ctor.\nQsciLexerOctave::QsciLexerOctave(QObject *parent)\n    : QsciLexerMatlab(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerOctave::~QsciLexerOctave()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerOctave::language() const\n{\n    return \"Octave\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerOctave::lexer() const\n{\n    return \"octave\";\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerOctave::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"__FILE__ __LINE__ break case catch classdef continue do else \"\n            \"elseif end end_try_catch end_unwind_protect endclassdef \"\n            \"endenumeration endevents endfor endfunction endif endmethods \"\n            \"endparfor endproperties endswitch endwhile enumeration events \"\n            \"for function get global if methods otherwise parfor persistent \"\n            \"properties return set static switch try until unwind_protect \"\n            \"unwind_protect_cleanup while\";\n\n    return 0;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp",
    "content": "// This module implements the QsciLexerPascal class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerpascal.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerPascal::QsciLexerPascal(QObject *parent)\n    : QsciLexer(parent),\n      fold_comments(false), fold_compact(true), fold_preproc(false),\n      smart_highlight(true)\n{\n}\n\n\n// The dtor.\nQsciLexerPascal::~QsciLexerPascal()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerPascal::language() const\n{\n    return \"Pascal\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerPascal::lexer() const\n{\n    return \"pascal\";\n}\n\n\n// Return the set of character sequences that can separate auto-completion\n// words.\nQStringList QsciLexerPascal::autoCompletionWordSeparators() const\n{\n    QStringList wl;\n\n    wl << \".\" << \"^\";\n\n    return wl;\n}\n\n\n// Return the list of keywords that can start a block.\nconst char *QsciLexerPascal::blockStartKeyword(int *style) const\n{\n    if (style)\n        *style = Keyword;\n\n    return\n        \"case class do else for then private protected public published \"\n        \"repeat try while type\";\n}\n\n\n// Return the list of characters that can start a block.\nconst char *QsciLexerPascal::blockStart(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"begin\";\n}\n\n\n// Return the list of characters that can end a block.\nconst char *QsciLexerPascal::blockEnd(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"end\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerPascal::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerPascal::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Identifier:\n        break;\n\n    case Comment:\n    case CommentParenthesis:\n    case CommentLine:\n        return QColor(0x00,0x7f,0x00);\n\n    case PreProcessor:\n    case PreProcessorParenthesis:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Number:\n    case HexNumber:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Keyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case SingleQuotedString:\n    case Character:\n        return QColor(0x7f,0x00,0x7f);\n\n    case UnclosedString:\n    case Operator:\n        return QColor(0x00,0x00,0x00);\n\n    case Asm:\n        return QColor(0x80,0x40,0x80);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerPascal::defaultEolFill(int style) const\n{\n    if (style == UnclosedString)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerPascal::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case CommentParenthesis:\n    case CommentLine:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case Operator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case SingleQuotedString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Times New Roman\", 11);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Times New Roman\", 12);\n#else\n        f = QFont(\"Bitstream Charter\", 10);\n#endif\n        f.setItalic(true);\n        break;\n\n    case UnclosedString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\", 10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\", 9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerPascal::defaultPaper(int style) const\n{\n    if (style == UnclosedString)\n        return QColor(0xe0,0xc0,0xe0);\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerPascal::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"absolute abstract and array as asm assembler automated begin \"\n            \"case cdecl class const constructor delayed deprecated destructor \"\n            \"dispid dispinterface div do downto dynamic else end except \"\n            \"experimental export exports external far file final finalization \"\n            \"finally for forward function goto helper if implementation in \"\n            \"inherited initialization inline interface is label library \"\n            \"message mod near nil not object of on operator or out overload \"\n            \"override packed pascal platform private procedure program \"\n            \"property protected public published raise record reference \"\n            \"register reintroduce repeat resourcestring safecall sealed set \"\n            \"shl shr static stdcall strict string then threadvar to try type \"\n            \"unit unsafe until uses var varargs virtual while winapi with xor\"\n            \"add default implements index name nodefault read readonly remove \"\n            \"stored write writeonly\"\n            \"package contains requires\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerPascal::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case Comment:\n        return tr(\"'{ ... }' style comment\");\n\n    case CommentParenthesis:\n        return tr(\"'(* ... *)' style comment\");\n\n    case CommentLine:\n        return tr(\"Line comment\");\n\n    case PreProcessor:\n        return tr(\"'{$ ... }' style pre-processor block\");\n\n    case PreProcessorParenthesis:\n        return tr(\"'(*$ ... *)' style pre-processor block\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case HexNumber:\n        return tr(\"Hexadecimal number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case Character:\n        return tr(\"Character\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Asm:\n        return tr(\"Inline asm\");\n    }\n\n    return QString();\n}\n\n\n// Refresh all properties.\nvoid QsciLexerPascal::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n    setPreprocProp();\n    setSmartHighlightProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerPascal::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_preproc = qs.value(prefix + \"foldpreprocessor\", true).toBool();\n    smart_highlight = qs.value(prefix + \"smarthighlight\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerPascal::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"foldpreprocessor\", fold_preproc);\n    qs.setValue(prefix + \"smarthighlight\", smart_highlight);\n\n    return rc;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerPascal::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerPascal::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerPascal::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerPascal::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerPascal::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerPascal::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Return true if preprocessor blocks can be folded.\nbool QsciLexerPascal::foldPreprocessor() const\n{\n    return fold_preproc;\n}\n\n\n// Set if preprocessor blocks can be folded.\nvoid QsciLexerPascal::setFoldPreprocessor(bool fold)\n{\n    fold_preproc = fold;\n\n    setPreprocProp();\n}\n\n\n// Set the \"fold.preprocessor\" property.\nvoid QsciLexerPascal::setPreprocProp()\n{\n    emit propertyChanged(\"fold.preprocessor\",(fold_preproc ? \"1\" : \"0\"));\n}\n\n\n// Return true if smart highlighting is enabled.\nbool QsciLexerPascal::smartHighlighting() const\n{\n    return smart_highlight;\n}\n\n\n// Set if smart highlighting is enabled.\nvoid QsciLexerPascal::setSmartHighlighting(bool enabled)\n{\n    smart_highlight = enabled;\n\n    setSmartHighlightProp();\n}\n\n\n// Set the \"lexer.pascal.smart.highlighting\" property.\nvoid QsciLexerPascal::setSmartHighlightProp()\n{\n    emit propertyChanged(\"lexer.pascal.smart.highlighting\", (smart_highlight ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp",
    "content": "// This module implements the QsciLexerPerl class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerperl.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerPerl::QsciLexerPerl(QObject *parent)\n    : QsciLexer(parent),\n      fold_atelse(false), fold_comments(false), fold_compact(true),\n      fold_packages(true), fold_pod_blocks(true)\n{\n}\n\n\n// The dtor.\nQsciLexerPerl::~QsciLexerPerl()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerPerl::language() const\n{\n    return \"Perl\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerPerl::lexer() const\n{\n    return \"perl\";\n}\n\n\n// Return the set of character sequences that can separate auto-completion\n// words.\nQStringList QsciLexerPerl::autoCompletionWordSeparators() const\n{\n    QStringList wl;\n\n    wl << \"::\" << \"->\";\n\n    return wl;\n}\n\n\n// Return the list of characters that can start a block.\nconst char *QsciLexerPerl::blockStart(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"{\";\n}\n\n\n// Return the list of characters that can end a block.\nconst char *QsciLexerPerl::blockEnd(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \"}\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerPerl::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerPerl::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_$@%&\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerPerl::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Error:\n    case Backticks:\n    case QuotedStringQX:\n        return QColor(0xff,0xff,0x00);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case POD:\n    case PODVerbatim:\n        return QColor(0x00,0x40,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Keyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case SingleQuotedHereDocument:\n    case DoubleQuotedHereDocument:\n    case BacktickHereDocument:\n    case QuotedStringQ:\n    case QuotedStringQQ:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Operator:\n    case Identifier:\n    case Scalar:\n    case Array:\n    case Hash:\n    case SymbolTable:\n    case Regex:\n    case Substitution:\n    case HereDocumentDelimiter:\n    case QuotedStringQR:\n    case QuotedStringQW:\n    case SubroutinePrototype:\n    case Translation:\n        return QColor(0x00,0x00,0x00);\n\n    case DataSection:\n        return QColor(0x60,0x00,0x00);\n\n    case FormatIdentifier:\n    case FormatBody:\n        return QColor(0xc0,0x00,0xc0);\n\n    case DoubleQuotedStringVar:\n    case RegexVar:\n    case SubstitutionVar:\n    case BackticksVar:\n    case DoubleQuotedHereDocumentVar:\n    case BacktickHereDocumentVar:\n    case QuotedStringQQVar:\n    case QuotedStringQXVar:\n    case QuotedStringQRVar:\n        return QColor(0xd0, 0x00, 0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerPerl::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case POD:\n    case DataSection:\n    case SingleQuotedHereDocument:\n    case DoubleQuotedHereDocument:\n    case BacktickHereDocument:\n    case PODVerbatim:\n    case FormatBody:\n    case DoubleQuotedHereDocumentVar:\n    case BacktickHereDocumentVar:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerPerl::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case POD:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Times New Roman\",11);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Times New Roman\", 12);\n#else\n        f = QFont(\"Bitstream Charter\",10);\n#endif\n        break;\n\n    case Keyword:\n    case Operator:\n    case DoubleQuotedHereDocument:\n    case FormatIdentifier:\n    case RegexVar:\n    case SubstitutionVar:\n    case BackticksVar:\n    case DoubleQuotedHereDocumentVar:\n    case BacktickHereDocumentVar:\n    case QuotedStringQXVar:\n    case QuotedStringQRVar:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case QuotedStringQQ:\n    case PODVerbatim:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    case BacktickHereDocument:\n    case SubroutinePrototype:\n        f = QsciLexer::defaultFont(style);\n        f.setItalic(true);\n        break;\n\n    case DoubleQuotedStringVar:\n    case QuotedStringQQVar:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerPerl::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"NULL __FILE__ __LINE__ __PACKAGE__ __DATA__ __END__ \"\n            \"AUTOLOAD BEGIN CORE DESTROY END EQ GE GT INIT LE LT \"\n            \"NE CHECK abs accept alarm and atan2 bind binmode \"\n            \"bless caller chdir chmod chomp chop chown chr chroot \"\n            \"close closedir cmp connect continue cos crypt \"\n            \"dbmclose dbmopen defined delete die do dump each \"\n            \"else elsif endgrent endhostent endnetent endprotoent \"\n            \"endpwent endservent eof eq eval exec exists exit exp \"\n            \"fcntl fileno flock for foreach fork format formline \"\n            \"ge getc getgrent getgrgid getgrnam gethostbyaddr \"\n            \"gethostbyname gethostent getlogin getnetbyaddr \"\n            \"getnetbyname getnetent getpeername getpgrp getppid \"\n            \"getpriority getprotobyname getprotobynumber \"\n            \"getprotoent getpwent getpwnam getpwuid getservbyname \"\n            \"getservbyport getservent getsockname getsockopt glob \"\n            \"gmtime goto grep gt hex if index int ioctl join keys \"\n            \"kill last lc lcfirst le length link listen local \"\n            \"localtime lock log lstat lt m map mkdir msgctl \"\n            \"msgget msgrcv msgsnd my ne next no not oct open \"\n            \"opendir or ord our pack package pipe pop pos print \"\n            \"printf prototype push q qq qr quotemeta qu qw qx \"\n            \"rand read readdir readline readlink readpipe recv \"\n            \"redo ref rename require reset return reverse \"\n            \"rewinddir rindex rmdir s scalar seek seekdir select \"\n            \"semctl semget semop send setgrent sethostent \"\n            \"setnetent setpgrp setpriority setprotoent setpwent \"\n            \"setservent setsockopt shift shmctl shmget shmread \"\n            \"shmwrite shutdown sin sleep socket socketpair sort \"\n            \"splice split sprintf sqrt srand stat study sub \"\n            \"substr symlink syscall sysopen sysread sysseek \"\n            \"system syswrite tell telldir tie tied time times tr \"\n            \"truncate uc ucfirst umask undef unless unlink unpack \"\n            \"unshift untie until use utime values vec wait \"\n            \"waitpid wantarray warn while write x xor y\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerPerl::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Error:\n        return tr(\"Error\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case POD:\n        return tr(\"POD\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case Scalar:\n        return tr(\"Scalar\");\n\n    case Array:\n        return tr(\"Array\");\n\n    case Hash:\n        return tr(\"Hash\");\n\n    case SymbolTable:\n        return tr(\"Symbol table\");\n\n    case Regex:\n        return tr(\"Regular expression\");\n\n    case Substitution:\n        return tr(\"Substitution\");\n\n    case Backticks:\n        return tr(\"Backticks\");\n\n    case DataSection:\n        return tr(\"Data section\");\n\n    case HereDocumentDelimiter:\n        return tr(\"Here document delimiter\");\n\n    case SingleQuotedHereDocument:\n        return tr(\"Single-quoted here document\");\n\n    case DoubleQuotedHereDocument:\n        return tr(\"Double-quoted here document\");\n\n    case BacktickHereDocument:\n        return tr(\"Backtick here document\");\n\n    case QuotedStringQ:\n        return tr(\"Quoted string (q)\");\n\n    case QuotedStringQQ:\n        return tr(\"Quoted string (qq)\");\n\n    case QuotedStringQX:\n        return tr(\"Quoted string (qx)\");\n\n    case QuotedStringQR:\n        return tr(\"Quoted string (qr)\");\n\n    case QuotedStringQW:\n        return tr(\"Quoted string (qw)\");\n\n    case PODVerbatim:\n        return tr(\"POD verbatim\");\n\n    case SubroutinePrototype:\n        return tr(\"Subroutine prototype\");\n\n    case FormatIdentifier:\n        return tr(\"Format identifier\");\n\n    case FormatBody:\n        return tr(\"Format body\");\n\n    case DoubleQuotedStringVar:\n        return tr(\"Double-quoted string (interpolated variable)\");\n\n    case Translation:\n        return tr(\"Translation\");\n\n    case RegexVar:\n        return tr(\"Regular expression (interpolated variable)\");\n\n    case SubstitutionVar:\n        return tr(\"Substitution (interpolated variable)\");\n\n    case BackticksVar:\n        return tr(\"Backticks (interpolated variable)\");\n\n    case DoubleQuotedHereDocumentVar:\n        return tr(\"Double-quoted here document (interpolated variable)\");\n\n    case BacktickHereDocumentVar:\n        return tr(\"Backtick here document (interpolated variable)\");\n\n    case QuotedStringQQVar:\n        return tr(\"Quoted string (qq, interpolated variable)\");\n\n    case QuotedStringQXVar:\n        return tr(\"Quoted string (qx, interpolated variable)\");\n\n    case QuotedStringQRVar:\n        return tr(\"Quoted string (qr, interpolated variable)\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerPerl::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case Error:\n        return QColor(0xff,0x00,0x00);\n\n    case POD:\n        return QColor(0xe0,0xff,0xe0);\n\n    case Scalar:\n        return QColor(0xff,0xe0,0xe0);\n\n    case Array:\n        return QColor(0xff,0xff,0xe0);\n\n    case Hash:\n        return QColor(0xff,0xe0,0xff);\n\n    case SymbolTable:\n        return QColor(0xe0,0xe0,0xe0);\n\n    case Regex:\n        return QColor(0xa0,0xff,0xa0);\n\n    case Substitution:\n    case Translation:\n        return QColor(0xf0,0xe0,0x80);\n\n    case Backticks:\n    case BackticksVar:\n    case QuotedStringQXVar:\n        return QColor(0xa0,0x80,0x80);\n\n    case DataSection:\n        return QColor(0xff,0xf0,0xd8);\n\n    case HereDocumentDelimiter:\n    case SingleQuotedHereDocument:\n    case DoubleQuotedHereDocument:\n    case BacktickHereDocument:\n    case DoubleQuotedHereDocumentVar:\n    case BacktickHereDocumentVar:\n        return QColor(0xdd,0xd0,0xdd);\n\n    case PODVerbatim:\n        return QColor(0xc0,0xff,0xc0);\n\n    case FormatBody:\n        return QColor(0xff,0xf0,0xff);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerPerl::refreshProperties()\n{\n    setAtElseProp();\n    setCommentProp();\n    setCompactProp();\n    setPackagesProp();\n    setPODBlocksProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerPerl::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_atelse = qs.value(prefix + \"foldatelse\", false).toBool();\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_packages = qs.value(prefix + \"foldpackages\", true).toBool();\n    fold_pod_blocks = qs.value(prefix + \"foldpodblocks\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerPerl::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldatelse\", fold_atelse);\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"foldpackages\", fold_packages);\n    qs.setValue(prefix + \"foldpodblocks\", fold_pod_blocks);\n\n    return rc;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerPerl::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerPerl::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerPerl::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerPerl::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerPerl::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerPerl::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Return true if packages can be folded.\nbool QsciLexerPerl::foldPackages() const\n{\n    return fold_packages;\n}\n\n\n// Set if packages can be folded.\nvoid QsciLexerPerl::setFoldPackages(bool fold)\n{\n    fold_packages = fold;\n\n    setPackagesProp();\n}\n\n\n// Set the \"fold.perl.package\" property.\nvoid QsciLexerPerl::setPackagesProp()\n{\n    emit propertyChanged(\"fold.perl.package\",(fold_packages ? \"1\" : \"0\"));\n}\n\n\n// Return true if POD blocks can be folded.\nbool QsciLexerPerl::foldPODBlocks() const\n{\n    return fold_pod_blocks;\n}\n\n\n// Set if POD blocks can be folded.\nvoid QsciLexerPerl::setFoldPODBlocks(bool fold)\n{\n    fold_pod_blocks = fold;\n\n    setPODBlocksProp();\n}\n\n\n// Set the \"fold.perl.pod\" property.\nvoid QsciLexerPerl::setPODBlocksProp()\n{\n    emit propertyChanged(\"fold.perl.pod\",(fold_pod_blocks ? \"1\" : \"0\"));\n}\n\n\n// Set if else can be folded.\nvoid QsciLexerPerl::setFoldAtElse(bool fold)\n{\n    fold_atelse = fold;\n\n    setAtElseProp();\n}\n\n\n// Set the \"fold.perl.at.else\" property.\nvoid QsciLexerPerl::setAtElseProp()\n{\n    emit propertyChanged(\"fold.perl.at.else\",(fold_atelse ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp",
    "content": "// This module implements the QsciLexerPO class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerpo.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerPO::QsciLexerPO(QObject *parent)\n    : QsciLexer(parent), fold_comments(false), fold_compact(true)\n{\n}\n\n\n// The dtor.\nQsciLexerPO::~QsciLexerPO()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerPO::language() const\n{\n    return \"PO\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerPO::lexer() const\n{\n    return \"po\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerPO::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Comment:\n        return QColor(0x00, 0x7f, 0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerPO::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\", 9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Georgia\", 13);\n#else\n        f = QFont(\"Bitstream Vera Serif\", 9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerPO::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case MessageId:\n        return tr(\"Message identifier\");\n\n    case MessageIdText:\n        return tr(\"Message identifier text\");\n\n    case MessageString:\n        return tr(\"Message string\");\n\n    case MessageStringText:\n        return tr(\"Message string text\");\n\n    case MessageContext:\n        return tr(\"Message context\");\n\n    case MessageContextText:\n        return tr(\"Message context text\");\n\n    case Fuzzy:\n        return tr(\"Fuzzy flag\");\n\n    case ProgrammerComment:\n        return tr(\"Programmer comment\");\n\n    case Reference:\n        return tr(\"Reference\");\n\n    case Flags:\n        return tr(\"Flags\");\n\n    case MessageIdTextEOL:\n        return tr(\"Message identifier text end-of-line\");\n\n    case MessageStringTextEOL:\n        return tr(\"Message string text end-of-line\");\n\n    case MessageContextTextEOL:\n        return tr(\"Message context text end-of-line\");\n    }\n\n    return QString();\n}\n\n\n// Refresh all properties.\nvoid QsciLexerPO::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerPO::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerPO::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n\n    return rc;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerPO::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerPO::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerPO::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerPO::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerPO::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerPO::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp",
    "content": "// This module implements the QsciLexerPostScript class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerpostscript.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerPostScript::QsciLexerPostScript(QObject *parent)\n    : QsciLexer(parent),\n      ps_tokenize(false), ps_level(3), fold_compact(true), fold_atelse(false)\n{\n}\n\n\n// The dtor.\nQsciLexerPostScript::~QsciLexerPostScript()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerPostScript::language() const\n{\n    return \"PostScript\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerPostScript::lexer() const\n{\n    return \"ps\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerPostScript::braceStyle() const\n{\n    return ProcedureParenthesis;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerPostScript::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case DSCComment:\n        return QColor(0x3f,0x70,0x3f);\n\n    case DSCCommentValue:\n    case DictionaryParenthesis:\n        return QColor(0x30,0x60,0xa0);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Name:\n    case ProcedureParenthesis:\n        return QColor(0x00,0x00,0x00);\n\n    case Keyword:\n    case ArrayParenthesis:\n        return QColor(0x00,0x00,0x7f);\n\n    case Literal:\n    case ImmediateEvalLiteral:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Text:\n    case Base85String:\n        return QColor(0x7f,0x00,0x7f);\n\n    case HexString:\n        return QColor(0x3f,0x7f,0x3f);\n\n    case BadStringCharacter:\n        return QColor(0xff,0xff,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerPostScript::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case DSCComment:\n    case DSCCommentValue:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case ProcedureParenthesis:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n\n    case Text:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Times New Roman\", 11);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Times New Roman\", 12);\n#else\n        f = QFont(\"Bitstream Charter\", 10);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerPostScript::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"$error = == FontDirectory StandardEncoding UserObjects abs add \"\n            \"aload anchorsearch and arc arcn arcto array ashow astore atan \"\n            \"awidthshow begin bind bitshift bytesavailable cachestatus \"\n            \"ceiling charpath clear cleardictstack cleartomark clip clippath \"\n            \"closefile closepath concat concatmatrix copy copypage cos count \"\n            \"countdictstack countexecstack counttomark currentcmykcolor \"\n            \"currentcolorspace currentdash currentdict currentfile \"\n            \"currentflat currentfont currentgray currenthsbcolor \"\n            \"currentlinecap currentlinejoin currentlinewidth currentmatrix \"\n            \"currentmiterlimit currentpagedevice currentpoint currentrgbcolor \"\n            \"currentscreen currenttransfer cvi cvlit cvn cvr cvrs cvs cvx def \"\n            \"defaultmatrix definefont dict dictstack div dtransform dup echo \"\n            \"end eoclip eofill eq erasepage errordict exch exec execstack \"\n            \"executeonly executive exit exp false file fill findfont \"\n            \"flattenpath floor flush flushfile for forall ge get getinterval \"\n            \"grestore grestoreall gsave gt idetmatrix idiv idtransform if \"\n            \"ifelse image imagemask index initclip initgraphics initmatrix \"\n            \"inustroke invertmatrix itransform known kshow le length lineto \"\n            \"ln load log loop lt makefont mark matrix maxlength mod moveto \"\n            \"mul ne neg newpath noaccess nor not null nulldevice or pathbbox \"\n            \"pathforall pop print prompt pstack put putinterval quit rand \"\n            \"rcheck rcurveto read readhexstring readline readonly readstring \"\n            \"rectstroke repeat resetfile restore reversepath rlineto rmoveto \"\n            \"roll rotate round rrand run save scale scalefont search \"\n            \"setblackgeneration setcachedevice setcachelimit setcharwidth \"\n            \"setcolorscreen setcolortransfer setdash setflat setfont setgray \"\n            \"sethsbcolor setlinecap setlinejoin setlinewidth setmatrix \"\n            \"setmiterlimit setpagedevice setrgbcolor setscreen settransfer \"\n            \"setvmthreshold show showpage sin sqrt srand stack start status \"\n            \"statusdict stop stopped store string stringwidth stroke \"\n            \"strokepath sub systemdict token token transform translate true \"\n            \"truncate type ueofill undefineresource userdict usertime version \"\n            \"vmstatus wcheck where widthshow write writehexstring writestring \"\n            \"xcheck xor\";\n\n    if (set == 2)\n        return\n            \"GlobalFontDirectory ISOLatin1Encoding SharedFontDirectory \"\n            \"UserObject arct colorimage cshow currentblackgeneration \"\n            \"currentcacheparams currentcmykcolor currentcolor \"\n            \"currentcolorrendering currentcolorscreen currentcolorspace \"\n            \"currentcolortransfer currentdevparams currentglobal \"\n            \"currentgstate currenthalftone currentobjectformat \"\n            \"currentoverprint currentpacking currentpagedevice currentshared \"\n            \"currentstrokeadjust currentsystemparams currentundercolorremoval \"\n            \"currentuserparams defineresource defineuserobject deletefile \"\n            \"execform execuserobject filenameforall fileposition filter \"\n            \"findencoding findresource gcheck globaldict glyphshow gstate \"\n            \"ineofill infill instroke inueofill inufill inustroke \"\n            \"languagelevel makepattern packedarray printobject product \"\n            \"realtime rectclip rectfill rectstroke renamefile resourceforall \"\n            \"resourcestatus revision rootfont scheck selectfont serialnumber \"\n            \"setbbox setblackgeneration setcachedevice2 setcacheparams \"\n            \"setcmykcolor setcolor setcolorrendering setcolorscreen \"\n            \"setcolorspace setcolortranfer setdevparams setfileposition \"\n            \"setglobal setgstate sethalftone setobjectformat setoverprint \"\n            \"setpacking setpagedevice setpattern setshared setstrokeadjust \"\n            \"setsystemparams setucacheparams setundercolorremoval \"\n            \"setuserparams setvmthreshold shareddict startjob uappend ucache \"\n            \"ucachestatus ueofill ufill undef undefinefont undefineresource \"\n            \"undefineuserobject upath ustroke ustrokepath vmreclaim \"\n            \"writeobject xshow xyshow yshow\";\n\n    if (set == 3)\n        return\n            \"cliprestore clipsave composefont currentsmoothness \"\n            \"findcolorrendering setsmoothness shfill\";\n\n    if (set == 4)\n        return\n            \".begintransparencygroup .begintransparencymask .bytestring \"\n            \".charboxpath .currentaccuratecurves .currentblendmode \"\n            \".currentcurvejoin .currentdashadapt .currentdotlength \"\n            \".currentfilladjust2 .currentlimitclamp .currentopacityalpha \"\n            \".currentoverprintmode .currentrasterop .currentshapealpha \"\n            \".currentsourcetransparent .currenttextknockout \"\n            \".currenttexturetransparent .dashpath .dicttomark \"\n            \".discardtransparencygroup .discardtransparencymask \"\n            \".endtransparencygroup .endtransparencymask .execn .filename \"\n            \".filename .fileposition .forceput .forceundef .forgetsave \"\n            \".getbitsrect .getdevice .inittransparencymask .knownget \"\n            \".locksafe .makeoperator .namestring .oserrno .oserrorstring \"\n            \".peekstring .rectappend .runandhide .setaccuratecurves \"\n            \".setblendmode .setcurvejoin .setdashadapt .setdebug \"\n            \".setdefaultmatrix .setdotlength .setfilladjust2 .setlimitclamp \"\n            \".setmaxlength .setopacityalpha .setoverprintmode .setrasterop \"\n            \".setsafe .setshapealpha .setsourcetransparent .settextknockout \"\n            \".settexturetransparent .stringbreak .stringmatch .tempfile \"\n            \".type1decrypt .type1encrypt .type1execchar .unread arccos \"\n            \"arcsin copydevice copyscanlines currentdevice finddevice \"\n            \"findlibfile findprotodevice flushpage getdeviceprops getenv \"\n            \"makeimagedevice makewordimagedevice max min putdeviceprops \"\n            \"setdevice\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerPostScript::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case DSCComment:\n        return tr(\"DSC comment\");\n\n    case DSCCommentValue:\n        return tr(\"DSC comment value\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Name:\n        return tr(\"Name\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case Literal:\n        return tr(\"Literal\");\n\n    case ImmediateEvalLiteral:\n        return tr(\"Immediately evaluated literal\");\n\n    case ArrayParenthesis:\n        return tr(\"Array parenthesis\");\n\n    case DictionaryParenthesis:\n        return tr(\"Dictionary parenthesis\");\n\n    case ProcedureParenthesis:\n        return tr(\"Procedure parenthesis\");\n\n    case Text:\n        return tr(\"Text\");\n\n    case HexString:\n        return tr(\"Hexadecimal string\");\n\n    case Base85String:\n        return tr(\"Base85 string\");\n\n    case BadStringCharacter:\n        return tr(\"Bad string character\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerPostScript::defaultPaper(int style) const\n{\n    if (style == BadStringCharacter)\n        return QColor(0xff,0x00,0x00);\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerPostScript::refreshProperties()\n{\n    setTokenizeProp();\n    setLevelProp();\n    setCompactProp();\n    setAtElseProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerPostScript::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    ps_tokenize = qs.value(prefix + \"pstokenize\", false).toBool();\n    ps_level = qs.value(prefix + \"pslevel\", 3).toInt();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_atelse = qs.value(prefix + \"foldatelse\", false).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerPostScript::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"pstokenize\", ps_tokenize);\n    qs.setValue(prefix + \"pslevel\", ps_level);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"foldatelse\", fold_atelse);\n\n    return rc;\n}\n\n\n// Return true if tokens are marked.\nbool QsciLexerPostScript::tokenize() const\n{\n    return ps_tokenize;\n}\n\n\n// Set if tokens are marked.\nvoid QsciLexerPostScript::setTokenize(bool tokenize)\n{\n    ps_tokenize = tokenize;\n\n    setTokenizeProp();\n}\n\n\n// Set the \"ps.tokenize\" property.\nvoid QsciLexerPostScript::setTokenizeProp()\n{\n    emit propertyChanged(\"ps.tokenize\",(ps_tokenize ? \"1\" : \"0\"));\n}\n\n\n// Return the PostScript level.\nint QsciLexerPostScript::level() const\n{\n    return ps_level;\n}\n\n\n// Set the PostScript level.\nvoid QsciLexerPostScript::setLevel(int level)\n{\n    ps_level = level;\n\n    setLevelProp();\n}\n\n\n// Set the \"ps.level\" property.\nvoid QsciLexerPostScript::setLevelProp()\n{\n    emit propertyChanged(\"ps.level\", QByteArray::number(ps_level));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerPostScript::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerPostScript::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerPostScript::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Return true if else blocks can be folded.\nbool QsciLexerPostScript::foldAtElse() const\n{\n    return fold_atelse;\n}\n\n\n// Set if else blocks can be folded.\nvoid QsciLexerPostScript::setFoldAtElse(bool fold)\n{\n    fold_atelse = fold;\n\n    setAtElseProp();\n}\n\n\n// Set the \"fold.at.else\" property.\nvoid QsciLexerPostScript::setAtElseProp()\n{\n    emit propertyChanged(\"fold.at.else\",(fold_atelse ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp",
    "content": "// This module implements the QsciLexerPOV class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerpov.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerPOV::QsciLexerPOV(QObject *parent)\n    : QsciLexer(parent),\n      fold_comments(false), fold_compact(true), fold_directives(false) \n{\n}\n\n\n// The dtor.\nQsciLexerPOV::~QsciLexerPOV()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerPOV::language() const\n{\n    return \"POV\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerPOV::lexer() const\n{\n    return \"pov\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerPOV::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerPOV::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_#\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerPOV::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0xff,0x00,0x80);\n\n    case Comment:\n    case CommentLine:\n        return QColor(0x00,0x7f,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Operator:\n        return QColor(0x00,0x00,0x00);\n\n    case String:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Directive:\n        return QColor(0x7f,0x7f,0x00);\n\n    case BadDirective:\n        return QColor(0x80,0x40,0x20);\n\n    case ObjectsCSGAppearance:\n    case TypesModifiersItems:\n    case PredefinedIdentifiers:\n    case PredefinedFunctions:\n    case KeywordSet6:\n    case KeywordSet7:\n    case KeywordSet8:\n        return QColor(0x00,0x00,0x7f);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerPOV::defaultEolFill(int style) const\n{\n    if (style == UnclosedString)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerPOV::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case CommentLine:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case UnclosedString:\n    case PredefinedIdentifiers:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case BadDirective:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        f.setItalic(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerPOV::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"declare local include undef fopen fclose read write \"\n            \"default version case range break debug error \"\n            \"warning if ifdef ifndef switch while macro else end\";\n\n    if (set == 2)\n        return\n            \"camera light_source light_group object blob sphere \"\n            \"cylinder box cone height_field julia_fractal lathe \"\n            \"prism sphere_sweep superellipsoid sor text torus \"\n            \"bicubic_patch disc mesh mesh2 polygon triangle \"\n            \"smooth_triangle plane poly cubic quartic quadric \"\n            \"isosurface parametric union intersection difference \"\n            \"merge function array spline vertex_vectors \"\n            \"normal_vectors uv_vectors face_indices \"\n            \"normal_indices uv_indices texture texture_list \"\n            \"interior_texture texture_map material_map image_map \"\n            \"color_map colour_map pigment_map normal_map \"\n            \"slope_map bump_map density_map pigment normal \"\n            \"material interior finish reflection irid slope \"\n            \"pigment_pattern image_pattern warp media scattering \"\n            \"density background fog sky_sphere rainbow \"\n            \"global_settings radiosity photons pattern transform \"\n            \"looks_like projected_through contained_by \"\n            \"clipped_by bounded_by\";\n\n    if (set == 3)\n        return\n            \"linear_spline quadratic_spline cubic_spline \"\n            \"natural_spline bezier_spline b_spline read write \"\n            \"append inverse open perspective orthographic \"\n            \"fisheye ultra_wide_angle omnimax panoramic \"\n            \"spherical spotlight jitter circular orient \"\n            \"media_attenuation media_interaction shadowless \"\n            \"parallel refraction collect pass_through \"\n            \"global_lights hierarchy sturm smooth gif tga iff \"\n            \"pot png pgm ppm jpeg tiff sys ttf quaternion \"\n            \"hypercomplex linear_sweep conic_sweep type \"\n            \"all_intersections split_union cutaway_textures \"\n            \"no_shadow no_image no_reflection double_illuminate \"\n            \"hollow uv_mapping all use_index use_color \"\n            \"use_colour no_bump_scale conserve_energy fresnel \"\n            \"average agate boxed bozo bumps cells crackle \"\n            \"cylindrical density_file dents facets granite \"\n            \"leopard marble onion planar quilted radial ripples \"\n            \"spotted waves wood wrinkles solid use_alpha \"\n            \"interpolate magnet noise_generator toroidal \"\n            \"ramp_wave triangle_wave sine_wave scallop_wave \"\n            \"cubic_wave poly_wave once map_type method fog_type \"\n            \"hf_gray_16 charset ascii utf8 rotate scale \"\n            \"translate matrix location right up direction sky \"\n            \"angle look_at aperture blur_samples focal_point \"\n            \"confidence variance radius falloff tightness \"\n            \"point_at area_light adaptive fade_distance \"\n            \"fade_power threshold strength water_level tolerance \"\n            \"max_iteration precision slice u_steps v_steps \"\n            \"flatness inside_vector accuracy max_gradient \"\n            \"evaluate max_trace precompute target ior dispersion \"\n            \"dispersion_samples caustics color colour rgb rgbf \"\n            \"rgbt rgbft red green blue filter transmit gray hf \"\n            \"fade_color fade_colour quick_color quick_colour \"\n            \"brick checker hexagon brick_size mortar bump_size \"\n            \"ambient diffuse brilliance crand phong phong_size \"\n            \"metallic specular roughness reflection_exponent \"\n            \"exponent thickness gradient spiral1 spiral2 \"\n            \"agate_turb form metric offset df3 coords size \"\n            \"mandel exterior julia control0 control1 altitude \"\n            \"turbulence octaves omega lambda repeat flip \"\n            \"black-hole orientation dist_exp major_radius \"\n            \"frequency phase intervals samples ratio absorption \"\n            \"emission aa_threshold aa_level eccentricity \"\n            \"extinction distance turb_depth fog_offset fog_alt \"\n            \"width arc_angle falloff_angle adc_bailout \"\n            \"ambient_light assumed_gamma irid_wavelength \"\n            \"number_of_waves always_sample brigthness count \"\n            \"error_bound gray_threshold load_file \"\n            \"low_error_factor max_sample minimum_reuse \"\n            \"nearest_count pretrace_end pretrace_start \"\n            \"recursion_limit save_file spacing gather \"\n            \"max_trace_level autostop expand_thresholds\";\n\n    if (set == 4)\n        return\n            \"x y z t u v yes no true false on off clock \"\n            \"clock_delta clock_on final_clock final_frame \"\n            \"frame_number image_height image_width initial_clock \"\n            \"initial_frame pi version\";\n\n    if (set == 5)\n        return\n            \"abs acos acosh asc asin asinh atan atanh atan2 ceil \"\n            \"cos cosh defined degrees dimensions dimension_size \"\n            \"div exp file_exists floor inside int ln log max min \"\n            \"mod pow prod radians rand seed select sin sinh sqrt \"\n            \"strcmp strlen sum tan tanh val vdot vlength \"\n            \"min_extent max_extent trace vaxis_rotate vcross \"\n            \"vrotate vnormalize vturbulence chr concat str \"\n            \"strlwr strupr substr vstr sqr cube reciprocal pwr\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerPOV::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case CommentLine:\n        return tr(\"Comment line\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case String:\n        return tr(\"String\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case Directive:\n        return tr(\"Directive\");\n\n    case BadDirective:\n        return tr(\"Bad directive\");\n\n    case ObjectsCSGAppearance:\n        return tr(\"Objects, CSG and appearance\");\n\n    case TypesModifiersItems:\n        return tr(\"Types, modifiers and items\");\n\n    case PredefinedIdentifiers:\n        return tr(\"Predefined identifiers\");\n\n    case PredefinedFunctions:\n        return tr(\"Predefined functions\");\n\n    case KeywordSet6:\n        return tr(\"User defined 1\");\n\n    case KeywordSet7:\n        return tr(\"User defined 2\");\n\n    case KeywordSet8:\n        return tr(\"User defined 3\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerPOV::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case UnclosedString:\n        return QColor(0xe0,0xc0,0xe0);\n\n    case ObjectsCSGAppearance:\n        return QColor(0xff,0xd0,0xd0);\n\n    case TypesModifiersItems:\n        return QColor(0xff,0xff,0xd0);\n\n    case PredefinedFunctions:\n        return QColor(0xd0,0xd0,0xff);\n\n    case KeywordSet6:\n        return QColor(0xd0,0xff,0xd0);\n\n    case KeywordSet7:\n        return QColor(0xd0,0xd0,0xd0);\n\n    case KeywordSet8:\n        return QColor(0xe0,0xe0,0xe0);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerPOV::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n    setDirectiveProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerPOV::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_directives = qs.value(prefix + \"folddirectives\", false).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerPOV::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"folddirectives\", fold_directives);\n\n    return rc;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerPOV::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerPOV::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerPOV::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerPOV::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerPOV::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerPOV::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Return true if directives can be folded.\nbool QsciLexerPOV::foldDirectives() const\n{\n    return fold_directives;\n}\n\n\n// Set if directives can be folded.\nvoid QsciLexerPOV::setFoldDirectives(bool fold)\n{\n    fold_directives = fold;\n\n    setDirectiveProp();\n}\n\n\n// Set the \"fold.directive\" property.\nvoid QsciLexerPOV::setDirectiveProp()\n{\n    emit propertyChanged(\"fold.directive\",(fold_directives ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp",
    "content": "// This module implements the QsciLexerProperties class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerproperties.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerProperties::QsciLexerProperties(QObject *parent)\n    : QsciLexer(parent), fold_compact(true), initial_spaces(true)\n{\n}\n\n\n// The dtor.\nQsciLexerProperties::~QsciLexerProperties()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerProperties::language() const\n{\n    return \"Properties\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerProperties::lexer() const\n{\n    return \"props\";\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerProperties::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerProperties::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Comment:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Section:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Assignment:\n        return QColor(0xb0,0x60,0x00);\n\n    case DefaultValue:\n        return QColor(0x7f,0x7f,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerProperties::defaultEolFill(int style) const\n{\n    if (style == Section)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerProperties::defaultFont(int style) const\n{\n    QFont f;\n\n    if (style == Comment)\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n    else\n        f = QsciLexer::defaultFont(style);\n\n    return f;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerProperties::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Section:\n        return tr(\"Section\");\n\n    case Assignment:\n        return tr(\"Assignment\");\n\n    case DefaultValue:\n        return tr(\"Default value\");\n\n    case Key:\n        return tr(\"Key\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerProperties::defaultPaper(int style) const\n{\n    if (style == Section)\n        return QColor(0xe0,0xf0,0xf0);\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerProperties::refreshProperties()\n{\n    setCompactProp();\n    setInitialSpacesProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerProperties::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    initial_spaces = qs.value(prefix + \"initialspaces\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerProperties::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"initialspaces\", initial_spaces);\n\n    return rc;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerProperties::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerProperties::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\", (fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if initial spaces are allowed.\nvoid QsciLexerProperties::setInitialSpaces(bool enable)\n{\n    initial_spaces = enable;\n\n    setInitialSpacesProp();\n}\n\n\n// Set the \"lexer.props.allow.initial.spaces\" property.\nvoid QsciLexerProperties::setInitialSpacesProp()\n{\n    emit propertyChanged(\"lexer.props.allow.initial.spaces\", (fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp",
    "content": "// This module implements the QsciLexerPython class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerpython.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The list of Python keywords that can be used by other friendly lexers.\nconst char *QsciLexerPython::keywordClass =\n    \"and as assert break class continue def del elif else except exec \"\n    \"finally for from global if import in is lambda None not or pass \"\n    \"print raise return try while with yield\";\n\n\n// The ctor.\nQsciLexerPython::QsciLexerPython(QObject *parent)\n    : QsciLexer(parent),\n      fold_comments(false), fold_compact(true), fold_quotes(false),\n      indent_warn(NoWarning), strings_over_newline(false), v2_unicode(true),\n      v3_binary_octal(true), v3_bytes(true), highlight_subids(true)\n{\n}\n\n\n// The dtor.\nQsciLexerPython::~QsciLexerPython()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerPython::language() const\n{\n    return \"Python\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerPython::lexer() const\n{\n    return \"python\";\n}\n\n\n// Return the view used for indentation guides.\nint QsciLexerPython::indentationGuideView() const\n{\n    return QsciScintillaBase::SC_IV_LOOKFORWARD;\n}\n\n\n// Return the set of character sequences that can separate auto-completion\n// words.\nQStringList QsciLexerPython::autoCompletionWordSeparators() const\n{\n    QStringList wl;\n\n    wl << \".\";\n\n    return wl;\n}\n\n// Return the list of characters that can start a block.\nconst char *QsciLexerPython::blockStart(int *style) const\n{\n    if (style)\n        *style = Operator;\n\n    return \":\";\n}\n\n\n// Return the number of lines to look back when auto-indenting.\nint QsciLexerPython::blockLookback() const\n{\n    // This must be 0 otherwise de-indenting a Python block gets very\n    // difficult.\n    return 0;\n}\n\n\n// Return the style used for braces.\nint QsciLexerPython::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerPython::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Keyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case TripleSingleQuotedString:\n    case TripleDoubleQuotedString:\n        return QColor(0x7f,0x00,0x00);\n\n    case ClassName:\n        return QColor(0x00,0x00,0xff);\n\n    case FunctionMethodName:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Operator:\n    case Identifier:\n        break;\n\n    case CommentBlock:\n        return QColor(0x7f,0x7f,0x7f);\n\n    case UnclosedString:\n        return QColor(0x00,0x00,0x00);\n\n    case HighlightedIdentifier:\n        return QColor(0x40,0x70,0x90);\n\n    case Decorator:\n        return QColor(0x80,0x50,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerPython::defaultEolFill(int style) const\n{\n    if (style == UnclosedString)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerPython::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case UnclosedString:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    case Keyword:\n    case ClassName:\n    case FunctionMethodName:\n    case Operator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerPython::keywords(int set) const\n{\n    if (set != 1)\n        return 0;\n\n    return keywordClass;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerPython::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case TripleSingleQuotedString:\n        return tr(\"Triple single-quoted string\");\n\n    case TripleDoubleQuotedString:\n        return tr(\"Triple double-quoted string\");\n\n    case ClassName:\n        return tr(\"Class name\");\n\n    case FunctionMethodName:\n        return tr(\"Function or method name\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case CommentBlock:\n        return tr(\"Comment block\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case HighlightedIdentifier:\n        return tr(\"Highlighted identifier\");\n\n    case Decorator:\n        return tr(\"Decorator\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerPython::defaultPaper(int style) const\n{\n    if (style == UnclosedString)\n        return QColor(0xe0,0xc0,0xe0);\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerPython::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n    setQuotesProp();\n    setTabWhingeProp();\n    setStringsOverNewlineProp();\n    setV2UnicodeProp();\n    setV3BinaryOctalProp();\n    setV3BytesProp();\n    setHighlightSubidsProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerPython::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true, num;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_quotes = qs.value(prefix + \"foldquotes\", false).toBool();\n    indent_warn = (IndentationWarning)qs.value(prefix + \"indentwarning\", (int)NoWarning).toInt();\n    strings_over_newline = qs.value(prefix + \"stringsovernewline\", false).toBool();\n    v2_unicode = qs.value(prefix + \"v2unicode\", true).toBool();\n    v3_binary_octal = qs.value(prefix + \"v3binaryoctal\", true).toBool();\n    v3_bytes = qs.value(prefix + \"v3bytes\", true).toBool();\n    highlight_subids = qs.value(prefix + \"highlightsubids\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerPython::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"foldquotes\", fold_quotes);\n    qs.setValue(prefix + \"indentwarning\", (int)indent_warn);\n    qs.setValue(prefix + \"stringsovernewline\", strings_over_newline);\n    qs.setValue(prefix + \"v2unicode\", v2_unicode);\n    qs.setValue(prefix + \"v3binaryoctal\", v3_binary_octal);\n    qs.setValue(prefix + \"v3bytes\", v3_bytes);\n    qs.setValue(prefix + \"highlightsubids\", highlight_subids);\n\n    return rc;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerPython::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment.python\" property.\nvoid QsciLexerPython::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment.python\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact.\nvoid QsciLexerPython::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerPython::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if quotes can be folded.\nvoid QsciLexerPython::setFoldQuotes(bool fold)\n{\n    fold_quotes = fold;\n\n    setQuotesProp();\n}\n\n\n// Set the \"fold.quotes.python\" property.\nvoid QsciLexerPython::setQuotesProp()\n{\n    emit propertyChanged(\"fold.quotes.python\",(fold_quotes ? \"1\" : \"0\"));\n}\n\n\n// Set the indentation warning.\nvoid QsciLexerPython::setIndentationWarning(QsciLexerPython::IndentationWarning warn)\n{\n    indent_warn = warn;\n\n    setTabWhingeProp();\n}\n\n\n// Set the \"tab.timmy.whinge.level\" property.\nvoid QsciLexerPython::setTabWhingeProp()\n{\n    emit propertyChanged(\"tab.timmy.whinge.level\", QByteArray::number(indent_warn));\n}\n\n\n// Set if string literals can span newlines.\nvoid QsciLexerPython::setStringsOverNewlineAllowed(bool allowed)\n{\n    strings_over_newline = allowed;\n\n    setStringsOverNewlineProp();\n}\n\n\n// Set the \"lexer.python.strings.u\" property.\nvoid QsciLexerPython::setStringsOverNewlineProp()\n{\n    emit propertyChanged(\"lexer.python.strings.over.newline\", (strings_over_newline ? \"1\" : \"0\"));\n}\n\n\n// Set if v2 unicode string literals are allowed.\nvoid QsciLexerPython::setV2UnicodeAllowed(bool allowed)\n{\n    v2_unicode = allowed;\n\n    setV2UnicodeProp();\n}\n\n\n// Set the \"lexer.python.strings.u\" property.\nvoid QsciLexerPython::setV2UnicodeProp()\n{\n    emit propertyChanged(\"lexer.python.strings.u\", (v2_unicode ? \"1\" : \"0\"));\n}\n\n\n// Set if v3 binary and octal literals are allowed.\nvoid QsciLexerPython::setV3BinaryOctalAllowed(bool allowed)\n{\n    v3_binary_octal = allowed;\n\n    setV3BinaryOctalProp();\n}\n\n\n// Set the \"lexer.python.literals.binary\" property.\nvoid QsciLexerPython::setV3BinaryOctalProp()\n{\n    emit propertyChanged(\"lexer.python.literals.binary\", (v3_binary_octal ? \"1\" : \"0\"));\n}\n\n\n// Set if v3 bytes string literals are allowed.\nvoid QsciLexerPython::setV3BytesAllowed(bool allowed)\n{\n    v3_bytes = allowed;\n\n    setV3BytesProp();\n}\n\n\n// Set the \"lexer.python.strings.b\" property.\nvoid QsciLexerPython::setV3BytesProp()\n{\n    emit propertyChanged(\"lexer.python.strings.b\",(v3_bytes ? \"1\" : \"0\"));\n}\n\n\n// Set if sub-identifiers are highlighted.\nvoid QsciLexerPython::setHighlightSubidentifiers(bool enabled)\n{\n    highlight_subids = enabled;\n\n    setHighlightSubidsProp();\n}\n\n\n// Set the \"lexer.python.keywords2.no.sub.identifiers\" property.\nvoid QsciLexerPython::setHighlightSubidsProp()\n{\n    emit propertyChanged(\"lexer.python.keywords2.no.sub.identifiers\",\n            (highlight_subids ? \"0\" : \"1\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp",
    "content": "// This module implements the QsciLexerRuby class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerruby.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerRuby::QsciLexerRuby(QObject *parent)\n    : QsciLexer(parent), fold_comments(false), fold_compact(true)\n{\n}\n\n\n// The dtor.\nQsciLexerRuby::~QsciLexerRuby()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerRuby::language() const\n{\n    return \"Ruby\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerRuby::lexer() const\n{\n    return \"ruby\";\n}\n\n\n// Return the list of words that can start a block.\nconst char *QsciLexerRuby::blockStart(int *style) const\n{\n    if (style)\n        *style = Keyword;\n\n    return \"do\";\n}\n\n\n// Return the list of words that can start end a block.\nconst char *QsciLexerRuby::blockEnd(int *style) const\n{\n    if (style)\n        *style = Keyword;\n\n    return \"end\";\n}\n\n\n// Return the list of words that can start end a block.\nconst char *QsciLexerRuby::blockStartKeyword(int *style) const\n{\n    if (style)\n        *style = Keyword;\n\n    return \"def class if do elsif else case while for\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerRuby::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerRuby::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case POD:\n        return QColor(0x00,0x40,0x00);\n\n    case Number:\n    case FunctionMethodName:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Keyword:\n    case DemotedKeyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case HereDocument:\n    case PercentStringq:\n    case PercentStringQ:\n        return QColor(0x7f,0x00,0x7f);\n\n    case ClassName:\n        return QColor(0x00,0x00,0xff);\n\n    case Regex:\n    case HereDocumentDelimiter:\n    case PercentStringr:\n    case PercentStringw:\n        return QColor(0x00,0x00,0x00);\n\n    case Global:\n        return QColor(0x80,0x00,0x80);\n\n    case Symbol:\n        return QColor(0xc0,0xa0,0x30);\n\n    case ModuleName:\n        return QColor(0xa0,0x00,0xa0);\n\n    case InstanceVariable:\n        return QColor(0xb0,0x00,0x80);\n\n    case ClassVariable:\n        return QColor(0x80,0x00,0xb0);\n\n    case Backticks:\n    case PercentStringx:\n        return QColor(0xff,0xff,0x00);\n\n    case DataSection:\n        return QColor(0x60,0x00,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerRuby::defaultEolFill(int style) const\n{\n    bool fill;\n\n    switch (style)\n    {\n    case POD:\n    case DataSection:\n    case HereDocument:\n        fill = true;\n        break;\n\n    default:\n        fill = QsciLexer::defaultEolFill(style);\n    }\n\n    return fill;\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerRuby::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case POD:\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case PercentStringq:\n    case PercentStringQ:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    case Keyword:\n    case ClassName:\n    case FunctionMethodName:\n    case Operator:\n    case ModuleName:\n    case DemotedKeyword:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerRuby::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"__FILE__ and def end in or self unless __LINE__ \"\n            \"begin defined? ensure module redo super until BEGIN \"\n            \"break do false next rescue then when END case else \"\n            \"for nil require retry true while alias class elsif \"\n            \"if not return undef yield\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerRuby::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Error:\n        return tr(\"Error\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case POD:\n        return tr(\"POD\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case ClassName:\n        return tr(\"Class name\");\n\n    case FunctionMethodName:\n        return tr(\"Function or method name\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case Regex:\n        return tr(\"Regular expression\");\n\n    case Global:\n        return tr(\"Global\");\n\n    case Symbol:\n        return tr(\"Symbol\");\n\n    case ModuleName:\n        return tr(\"Module name\");\n\n    case InstanceVariable:\n        return tr(\"Instance variable\");\n\n    case ClassVariable:\n        return tr(\"Class variable\");\n\n    case Backticks:\n        return tr(\"Backticks\");\n\n    case DataSection:\n        return tr(\"Data section\");\n\n    case HereDocumentDelimiter:\n        return tr(\"Here document delimiter\");\n\n    case HereDocument:\n        return tr(\"Here document\");\n\n    case PercentStringq:\n        return tr(\"%q string\");\n\n    case PercentStringQ:\n        return tr(\"%Q string\");\n\n    case PercentStringx:\n        return tr(\"%x string\");\n\n    case PercentStringr:\n        return tr(\"%r string\");\n\n    case PercentStringw:\n        return tr(\"%w string\");\n\n    case DemotedKeyword:\n        return tr(\"Demoted keyword\");\n\n    case Stdin:\n        return tr(\"stdin\");\n\n    case Stdout:\n        return tr(\"stdout\");\n\n    case Stderr:\n        return tr(\"stderr\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerRuby::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case Error:\n        return QColor(0xff,0x00,0x00);\n\n    case POD:\n        return QColor(0xc0,0xff,0xc0);\n\n    case Regex:\n    case PercentStringr:\n        return QColor(0xa0,0xff,0xa0);\n\n    case Backticks:\n    case PercentStringx:\n        return QColor(0xa0,0x80,0x80);\n\n    case DataSection:\n        return QColor(0xff,0xf0,0xd8);\n\n    case HereDocumentDelimiter:\n    case HereDocument:\n        return QColor(0xdd,0xd0,0xdd);\n\n    case PercentStringw:\n        return QColor(0xff,0xff,0xe0);\n\n    case Stdin:\n    case Stdout:\n    case Stderr:\n        return QColor(0xff,0x80,0x80);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerRuby::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerRuby::readProperties(QSettings &qs, const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerRuby::writeProperties(QSettings &qs, const QString &prefix) const\n{\n    int rc = true;\n\n    qs.value(prefix + \"foldcomments\", fold_comments);\n    qs.value(prefix + \"foldcompact\", fold_compact);\n\n    return rc;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerRuby::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerRuby::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\", (fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact\nvoid QsciLexerRuby::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerRuby::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\", (fold_compact ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp",
    "content": "// This module implements the QsciLexerSpice class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerspice.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n\n\n// The ctor.\nQsciLexerSpice::QsciLexerSpice(QObject *parent)\n    : QsciLexer(parent)\n{\n}\n\n\n// The dtor.\nQsciLexerSpice::~QsciLexerSpice()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerSpice::language() const\n{\n    return \"Spice\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerSpice::lexer() const\n{\n    return \"spice\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerSpice::braceStyle() const\n{\n    return Parameter;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerSpice::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"ac alias alter alterparam append askvalues assertvalid \"\n            \"autoscale break compose copy copytodoc dc delete destroy \"\n            \"destroyvec diff display disto dowhile echo else end errorstop \"\n            \"fftinit filter foreach fourier freqtotime function \"\n            \"functionundef goto homecursors if isdisplayed label let \"\n            \"linearize listing load loadaccumulator makelabel movelabel \"\n            \"makesmithplot movecursorleft movecursorright msgbox nameplot \"\n            \"newplot nextparam noise nopoints op plot plotf plotref poly \"\n            \"print printcursors printevent printname printplot printstatus \"\n            \"printtext printtol printunits printval printvector pwl pz quit \"\n            \"removesmithplot rename repeat resume rotate runs rusage save \"\n            \"sendplot sendscript sens set setcursor setdoc setlabel \"\n            \"setlabeltype setmargins setnthtrigger setunits setvec setparam \"\n            \"setplot setquery setscaletype settracecolor settracestyle \"\n            \"setsource settrigger setvec setxlimits setylimits show showmod \"\n            \"sort status step stop switch tf timetofreq timetowave tran \"\n            \"unalias unlet unset unalterparam update version view wavefilter \"\n            \"wavetotime where while write\";\n\n    if (set == 2)\n        return\n            \"abs askvalue atan average ceil cos db differentiate \"\n            \"differentiatex exp finalvalue floor getcursorx getcursory \"\n            \"getcursory0 getcursory1 getparam im ln initialvalue integrate \"\n            \"integratex interpolate isdef isdisplayed j log length mag max \"\n            \"maxscale mean meanpts min minscale nextplot nextvector norm \"\n            \"operatingpoint ph phase phaseextend pk_pk pos pulse re rms \"\n            \"rmspts rnd sameplot sin sqrt stddev stddevpts tan tfall \"\n            \"tolerance trise unitvec vector\";\n\n    if (set == 3)\n        return \"param nodeset include options dcconv subckt ends model\";\n\n    return 0;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerSpice::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Command:\n    case Function:\n        return QColor(0x00,0x00,0x7f);\n\n    case Parameter:\n        return QColor(0x00,0x40,0xe0);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Delimiter:\n        return QColor(0x00,0x00,0x00);\n\n    case Value:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerSpice::defaultFont(int style) const\n{\n    QFont f;\n\n    if (style == Comment)\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n    else\n    {\n        f = QsciLexer::defaultFont(style);\n\n        if (style == Function || style == Delimiter)\n            f.setBold(true);\n    }\n\n    return f;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerSpice::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case Command:\n        return tr(\"Command\");\n\n    case Function:\n        return tr(\"Function\");\n\n    case Parameter:\n        return tr(\"Parameter\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Delimiter:\n        return tr(\"Delimiter\");\n\n    case Value:\n        return tr(\"Value\");\n\n    case Comment:\n        return tr(\"Comment\");\n    }\n\n    return QString();\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp",
    "content": "// This module implements the QsciLexerSQL class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexersql.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerSQL::QsciLexerSQL(QObject *parent)\n    : QsciLexer(parent),\n      at_else(false), fold_comments(false), fold_compact(true),\n      only_begin(false), backticks_identifier(false),\n      numbersign_comment(false), backslash_escapes(false),\n      allow_dotted_word(false)\n{\n}\n\n\n// The dtor.\nQsciLexerSQL::~QsciLexerSQL()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerSQL::language() const\n{\n    return \"SQL\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerSQL::lexer() const\n{\n    return \"sql\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerSQL::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerSQL::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Comment:\n    case CommentLine:\n    case PlusPrompt:\n    case PlusComment:\n    case CommentLineHash:\n        return QColor(0x00,0x7f,0x00);\n\n    case CommentDoc:\n        return QColor(0x7f,0x7f,0x7f);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Keyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n        return QColor(0x7f,0x00,0x7f);\n\n    case PlusKeyword:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Operator:\n    case Identifier:\n        break;\n\n    case CommentDocKeyword:\n        return QColor(0x30,0x60,0xa0);\n\n    case CommentDocKeywordError:\n        return QColor(0x80,0x40,0x20);\n\n    case KeywordSet5:\n        return QColor(0x4b,0x00,0x82);\n\n    case KeywordSet6:\n        return QColor(0xb0,0x00,0x40);\n\n    case KeywordSet7:\n        return QColor(0x8b,0x00,0x00);\n\n    case KeywordSet8:\n        return QColor(0x80,0x00,0x80);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerSQL::defaultEolFill(int style) const\n{\n    if (style == PlusPrompt)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerSQL::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case CommentLine:\n    case PlusComment:\n    case CommentLineHash:\n    case CommentDocKeyword:\n    case CommentDocKeywordError:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case Operator:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case DoubleQuotedString:\n    case SingleQuotedString:\n    case PlusPrompt:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Courier New\",10);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Courier\", 12);\n#else\n        f = QFont(\"Bitstream Vera Sans Mono\",9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerSQL::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"absolute action add admin after aggregate alias all \"\n            \"allocate alter and any are array as asc assertion \"\n            \"at authorization before begin binary bit blob \"\n            \"boolean both breadth by call cascade cascaded case \"\n            \"cast catalog char character check class clob close \"\n            \"collate collation column commit completion connect \"\n            \"connection constraint constraints constructor \"\n            \"continue corresponding create cross cube current \"\n            \"current_date current_path current_role current_time \"\n            \"current_timestamp current_user cursor cycle data \"\n            \"date day deallocate dec decimal declare default \"\n            \"deferrable deferred delete depth deref desc \"\n            \"describe descriptor destroy destructor \"\n            \"deterministic dictionary diagnostics disconnect \"\n            \"distinct domain double drop dynamic each else end \"\n            \"end-exec equals escape every except exception exec \"\n            \"execute external false fetch first float for \"\n            \"foreign found from free full function general get \"\n            \"global go goto grant group grouping having host \"\n            \"hour identity if ignore immediate in indicator \"\n            \"initialize initially inner inout input insert int \"\n            \"integer intersect interval into is isolation \"\n            \"iterate join key language large last lateral \"\n            \"leading left less level like limit local localtime \"\n            \"localtimestamp locator map match minute modifies \"\n            \"modify module month names national natural nchar \"\n            \"nclob new next no none not null numeric object of \"\n            \"off old on only open operation option or order \"\n            \"ordinality out outer output pad parameter \"\n            \"parameters partial path postfix precision prefix \"\n            \"preorder prepare preserve primary prior privileges \"\n            \"procedure public read reads real recursive ref \"\n            \"references referencing relative restrict result \"\n            \"return returns revoke right role rollback rollup \"\n            \"routine row rows savepoint schema scroll scope \"\n            \"search second section select sequence session \"\n            \"session_user set sets size smallint some| space \"\n            \"specific specifictype sql sqlexception sqlstate \"\n            \"sqlwarning start state statement static structure \"\n            \"system_user table temporary terminate than then \"\n            \"time timestamp timezone_hour timezone_minute to \"\n            \"trailing transaction translation treat trigger \"\n            \"true under union unique unknown unnest update usage \"\n            \"user using value values varchar variable varying \"\n            \"view when whenever where with without work write \"\n            \"year zone\";\n\n    if (set == 3)\n        return\n            \"param author since return see deprecated todo\";\n\n    if (set == 4)\n        return\n            \"acc~ept a~ppend archive log attribute bre~ak \"\n            \"bti~tle c~hange cl~ear col~umn comp~ute conn~ect \"\n            \"copy def~ine del desc~ribe disc~onnect e~dit \"\n            \"exec~ute exit get help ho~st i~nput l~ist passw~ord \"\n            \"pau~se pri~nt pro~mpt quit recover rem~ark \"\n            \"repf~ooter reph~eader r~un sav~e set sho~w shutdown \"\n            \"spo~ol sta~rt startup store timi~ng tti~tle \"\n            \"undef~ine var~iable whenever oserror whenever \"\n            \"sqlerror\";\n\n    if (set == 5)\n        return\n            \"dbms_output.disable dbms_output.enable dbms_output.get_line \"\n            \"dbms_output.get_lines dbms_output.new_line dbms_output.put \"\n            \"dbms_output.put_line\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerSQL::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case CommentLine:\n        return tr(\"Comment line\");\n\n    case CommentDoc:\n        return tr(\"JavaDoc style comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case DoubleQuotedString:\n        return tr(\"Double-quoted string\");\n\n    case SingleQuotedString:\n        return tr(\"Single-quoted string\");\n\n    case PlusKeyword:\n        return tr(\"SQL*Plus keyword\");\n\n    case PlusPrompt:\n        return tr(\"SQL*Plus prompt\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case PlusComment:\n        return tr(\"SQL*Plus comment\");\n\n    case CommentLineHash:\n        return tr(\"# comment line\");\n\n    case CommentDocKeyword:\n        return tr(\"JavaDoc keyword\");\n\n    case CommentDocKeywordError:\n        return tr(\"JavaDoc keyword error\");\n\n    case KeywordSet5:\n        return tr(\"User defined 1\");\n\n    case KeywordSet6:\n        return tr(\"User defined 2\");\n\n    case KeywordSet7:\n        return tr(\"User defined 3\");\n\n    case KeywordSet8:\n        return tr(\"User defined 4\");\n\n    case QuotedIdentifier:\n        return tr(\"Quoted identifier\");\n\n    case QuotedOperator:\n        return tr(\"Quoted operator\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerSQL::defaultPaper(int style) const\n{\n    if (style == PlusPrompt)\n        return QColor(0xe0,0xff,0xe0);\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerSQL::refreshProperties()\n{\n    setAtElseProp();\n    setCommentProp();\n    setCompactProp();\n    setOnlyBeginProp();\n    setBackticksIdentifierProp();\n    setNumbersignCommentProp();\n    setBackslashEscapesProp();\n    setAllowDottedWordProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerSQL::readProperties(QSettings &qs, const QString &prefix)\n{\n    int rc = true;\n\n    at_else = qs.value(prefix + \"atelse\", false).toBool();\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    only_begin = qs.value(prefix + \"onlybegin\", false).toBool();\n    backticks_identifier = qs.value(prefix + \"backticksidentifier\", false).toBool();\n    numbersign_comment = qs.value(prefix + \"numbersigncomment\", false).toBool();\n    backslash_escapes = qs.value(prefix + \"backslashescapes\", false).toBool();\n    allow_dotted_word = qs.value(prefix + \"allowdottedword\", false).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerSQL::writeProperties(QSettings &qs, const QString &prefix) const\n{\n    int rc = true;\n\n    qs.value(prefix + \"atelse\", at_else);\n    qs.value(prefix + \"foldcomments\", fold_comments);\n    qs.value(prefix + \"foldcompact\", fold_compact);\n    qs.value(prefix + \"onlybegin\", only_begin);\n    qs.value(prefix + \"backticksidentifier\", backticks_identifier);\n    qs.value(prefix + \"numbersigncomment\", numbersign_comment);\n    qs.value(prefix + \"backslashescapes\", backslash_escapes);\n    qs.value(prefix + \"allowdottedword\", allow_dotted_word);\n\n    return rc;\n}\n\n\n// Set if ELSE blocks can be folded.\nvoid QsciLexerSQL::setFoldAtElse(bool fold)\n{\n    at_else = fold;\n\n    setAtElseProp();\n}\n\n\n// Set the \"fold.sql.at.else\" property.\nvoid QsciLexerSQL::setAtElseProp()\n{\n    emit propertyChanged(\"fold.sql.at.else\", (at_else ? \"1\" : \"0\"));\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerSQL::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerSQL::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\", (fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact\nvoid QsciLexerSQL::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerSQL::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\", (fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if BEGIN blocks only can be folded.\nvoid QsciLexerSQL::setFoldOnlyBegin(bool fold)\n{\n    only_begin = fold;\n\n    setOnlyBeginProp();\n}\n\n\n// Set the \"fold.sql.only.begin\" property.\nvoid QsciLexerSQL::setOnlyBeginProp()\n{\n    emit propertyChanged(\"fold.sql.only.begin\", (only_begin ? \"1\" : \"0\"));\n}\n\n\n// Enable quoted identifiers.\nvoid QsciLexerSQL::setQuotedIdentifiers(bool enable)\n{\n    backticks_identifier = enable;\n\n    setBackticksIdentifierProp();\n}\n\n\n// Set the \"lexer.sql.backticks.identifier\" property.\nvoid QsciLexerSQL::setBackticksIdentifierProp()\n{\n    emit propertyChanged(\"lexer.sql.backticks.identifier\", (backticks_identifier ? \"1\" : \"0\"));\n}\n\n\n// Enable '#' as a comment character.\nvoid QsciLexerSQL::setHashComments(bool enable)\n{\n    numbersign_comment = enable;\n\n    setNumbersignCommentProp();\n}\n\n\n// Set the \"lexer.sql.numbersign.comment\" property.\nvoid QsciLexerSQL::setNumbersignCommentProp()\n{\n    emit propertyChanged(\"lexer.sql.numbersign.comment\", (numbersign_comment ? \"1\" : \"0\"));\n}\n\n\n// Enable/disable backslash escapes.\nvoid QsciLexerSQL::setBackslashEscapes(bool enable)\n{\n    backslash_escapes = enable;\n\n    setBackslashEscapesProp();\n}\n\n\n// Set the \"sql.backslash.escapes\" property.\nvoid QsciLexerSQL::setBackslashEscapesProp()\n{\n    emit propertyChanged(\"sql.backslash.escapes\", (backslash_escapes ? \"1\" : \"0\"));\n}\n\n\n// Enable dotted words.\nvoid QsciLexerSQL::setDottedWords(bool enable)\n{\n    allow_dotted_word = enable;\n\n    setAllowDottedWordProp();\n}\n\n\n// Set the \"lexer.sql.allow.dotted.word\" property.\nvoid QsciLexerSQL::setAllowDottedWordProp()\n{\n    emit propertyChanged(\"lexer.sql.allow.dotted.word\", (allow_dotted_word ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp",
    "content": "// This module implements the QsciLexerTCL class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexertcl.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerTCL::QsciLexerTCL(QObject *parent)\n    : QsciLexer(parent), fold_comments(false)\n{\n}\n\n\n// The dtor.\nQsciLexerTCL::~QsciLexerTCL()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerTCL::language() const\n{\n    return \"TCL\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerTCL::lexer() const\n{\n    return \"tcl\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerTCL::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerTCL::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x80,0x80);\n\n    case Comment:\n    case CommentLine:\n    case CommentBox:\n        return QColor(0x00,0x7f,0x00);\n\n    case Number:\n        return QColor(0x00,0x7f,0x7f);\n\n    case QuotedKeyword:\n    case QuotedString:\n    case Modifier:\n        return QColor(0x7f,0x00,0x7f);\n\n    case Operator:\n        return QColor(0x00,0x00,0x00);\n\n    case Identifier:\n    case ExpandKeyword:\n    case TCLKeyword:\n    case TkKeyword:\n    case ITCLKeyword:\n    case TkCommand:\n    case KeywordSet6:\n    case KeywordSet7:\n    case KeywordSet8:\n    case KeywordSet9:\n        return QColor(0x00,0x00,0x7f);\n\n    case Substitution:\n    case SubstitutionBrace:\n        return QColor(0x7f,0x7f,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerTCL::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case QuotedString:\n    case CommentBox:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerTCL::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case CommentLine:\n    case CommentBox:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\", 9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\", 9);\n#endif\n        break;\n\n    case QuotedKeyword:\n    case Operator:\n    case ExpandKeyword:\n    case TCLKeyword:\n    case TkKeyword:\n    case ITCLKeyword:\n    case TkCommand:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case CommentBlock:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\", 8);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 11);\n#else\n        f = QFont(\"Serif\", 9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerTCL::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"after append array auto_execok auto_import auto_load \"\n            \"auto_load_index auto_qualify beep bgerror binary break case \"\n            \"catch cd clock close concat continue dde default echo else \"\n            \"elseif encoding eof error eval exec exit expr fblocked \"\n            \"fconfigure fcopy file fileevent flush for foreach format gets \"\n            \"glob global history http if incr info interp join lappend lindex \"\n            \"linsert list llength load loadTk lrange lreplace lsearch lset \"\n            \"lsort memory msgcat namespace open package pid pkg::create \"\n            \"pkg_mkIndex Platform-specific proc puts pwd re_syntax read \"\n            \"regexp registry regsub rename resource return scan seek set \"\n            \"socket source split string subst switch tclLog tclMacPkgSearch \"\n            \"tclPkgSetup tclPkgUnknown tell time trace unknown unset update \"\n            \"uplevel upvar variable vwait while\";\n\n    if (set == 2)\n        return\n            \"bell bind bindtags bitmap button canvas checkbutton clipboard \"\n            \"colors console cursors destroy entry event focus font frame grab \"\n            \"grid image Inter-client keysyms label labelframe listbox lower \"\n            \"menu menubutton message option options pack panedwindow photo \"\n            \"place radiobutton raise scale scrollbar selection send spinbox \"\n            \"text tk tk_chooseColor tk_chooseDirectory tk_dialog tk_focusNext \"\n            \"tk_getOpenFile tk_messageBox tk_optionMenu tk_popup \"\n            \"tk_setPalette tkerror tkvars tkwait toplevel winfo wish wm\";\n\n    if (set == 3)\n        return\n            \"@scope body class code common component configbody constructor \"\n            \"define destructor hull import inherit itcl itk itk_component \"\n            \"itk_initialize itk_interior itk_option iwidgets keep method \"\n            \"private protected public\";\n\n    if (set == 4)\n        return\n            \"tk_bisque tk_chooseColor tk_dialog tk_focusFollowsMouse \"\n            \"tk_focusNext tk_focusPrev tk_getOpenFile tk_getSaveFile \"\n            \"tk_messageBox tk_optionMenu tk_popup tk_setPalette tk_textCopy \"\n            \"tk_textCut tk_textPaste tkButtonAutoInvoke tkButtonDown \"\n            \"tkButtonEnter tkButtonInvoke tkButtonLeave tkButtonUp \"\n            \"tkCancelRepeat tkCheckRadioDown tkCheckRadioEnter \"\n            \"tkCheckRadioInvoke tkColorDialog tkColorDialog_BuildDialog \"\n            \"tkColorDialog_CancelCmd tkColorDialog_Config \"\n            \"tkColorDialog_CreateSelector tkColorDialog_DrawColorScale \"\n            \"tkColorDialog_EnterColorBar tkColorDialog_HandleRGB Entry \"\n            \"tkColorDialog_HandleSelEntry tkColorDialog_InitValues \"\n            \"tkColorDialog_LeaveColorBar tkColorDialog_MoveSelector \"\n            \"tkColorDialog_OkCmd tkColorDialog_RedrawColorBars \"\n            \"tkColorDialog_RedrawFinalColor tkColorDialog_ReleaseMouse \"\n            \"tkColorDialog_ResizeColorBars tkColorDialog_RgbToX \"\n            \"tkColorDialog_SetRGBValue tkColorDialog_StartMove \"\n            \"tkColorDialog_XToRgb tkConsoleAbout tkConsoleBind tkConsoleExit \"\n            \"tkConsoleHistory tkConsoleInit tkConsoleInsert tkConsoleInvoke \"\n            \"tkConsoleOutput tkConsolePrompt tkConsoleSource tkDarken \"\n            \"tkEntryAutoScan tkEntryBackspace tkEntryButton1 \"\n            \"tkEntryClosestGap tkEntryGetSelection tkEntryInsert \"\n            \"tkEntryKeySelect tkEntryMouseSelect tkEntryNextWord tkEntryPaste \"\n            \"tkEntryPreviousWord tkEntrySeeInsert tkEntrySetCursor \"\n            \"tkEntryTranspose tkEventMotifBindings tkFDGetFileTypes \"\n            \"tkFirstMenu tkFocusGroup_BindIn tkFocusGroup_BindOut \"\n            \"tkFocusGroup_Create tkFocusGroup_Destroy tkFocusGroup_In \"\n            \"tkFocusGroup_Out tkFocusOK tkGenerateMenuSelect tkIconList \"\n            \"tkIconList_Add tkIconList_Arrange tkIconList_AutoScan \"\n            \"tkIconList_Btn1 tkIconList_Config tkIconList_Create \"\n            \"tkIconList_CtrlBtn1 tkIconList_Curselection tkIconList_DeleteAll \"\n            \"tkIconList_Double1 tkIconList_DrawSelection tkIconList_FocusIn \"\n            \"tkIconList_FocusOut tkIconList_Get tkIconList_Goto \"\n            \"tkIconList_Index tkIconList_Invoke tkIconList_KeyPress \"\n            \"tkIconList_Leave1 tkIconList_LeftRight tkIconList_Motion1 \"\n            \"tkIconList_Reset tkIconList_ReturnKey tkIconList_See \"\n            \"tkIconList_Select tkIconList_Selection tkIconList_ShiftBtn1 \"\n            \"tkIconList_UpDown tkListbox tkListboxAutoScan \"\n            \"tkListboxBeginExtend tkListboxBeginSelect tkListboxBeginToggle \"\n            \"tkListboxCancel tkListboxDataExtend tkListboxExtendUpDown \"\n            \"tkListboxKeyAccel_Goto tkListboxKeyAccel_Key \"\n            \"tkListboxKeyAccel_Reset tkListboxKeyAccel_Set \"\n            \"tkListboxKeyAccel_Unset tkListboxMotion tkListboxSelectAll \"\n            \"tkListboxUpDown tkMbButtonUp tkMbEnter tkMbLeave tkMbMotion \"\n            \"tkMbPost tkMenuButtonDown tkMenuDownArrow tkMenuDup tkMenuEscape \"\n            \"tkMenuFind tkMenuFindName tkMenuFirstEntry tkMenuInvoke \"\n            \"tkMenuLeave tkMenuLeftArrow tkMenuMotion tkMenuNextEntry \"\n            \"tkMenuNextMenu tkMenuRightArrow tkMenuUnpost tkMenuUpArrow \"\n            \"tkMessageBox tkMotifFDialog tkMotifFDialog_ActivateDList \"\n            \"tkMotifFDialog_ActivateFEnt tkMotifFDialog_ActivateFList \"\n            \"tkMotifFDialog_ActivateSEnt tkMotifFDialog_BrowseDList \"\n            \"tkMotifFDialog_BrowseFList tkMotifFDialog_BuildUI \"\n            \"tkMotifFDialog_CancelCmd tkMotifFDialog_Config \"\n            \"tkMotifFDialog_Create tkMotifFDialog_FileTypes \"\n            \"tkMotifFDialog_FilterCmd tkMotifFDialog_InterpFilter \"\n            \"tkMotifFDialog_LoadFiles tkMotifFDialog_MakeSList \"\n            \"tkMotifFDialog_OkCmd tkMotifFDialog_SetFilter \"\n            \"tkMotifFDialog_SetListMode tkMotifFDialog_Update tkPostOverPoint \"\n            \"tkRecolorTree tkRestoreOldGrab tkSaveGrabInfo tkScaleActivate \"\n            \"tkScaleButton2Down tkScaleButtonDown tkScaleControlPress \"\n            \"tkScaleDrag tkScaleEndDrag tkScaleIncrement tkScreenChanged \"\n            \"tkScrollButton2Down tkScrollButtonDown tkScrollButtonDrag \"\n            \"tkScrollButtonUp tkScrollByPages tkScrollByUnits tkScrollDrag \"\n            \"tkScrollEndDrag tkScrollSelect tkScrollStartDrag \"\n            \"tkScrollTopBottom tkScrollToPos tkTabToWindow tkTearOffMenu \"\n            \"tkTextAutoScan tkTextButton1 tkTextClosestGap tkTextInsert \"\n            \"tkTextKeyExtend tkTextKeySelect tkTextNextPara tkTextNextPos \"\n            \"tkTextNextWord tkTextPaste tkTextPrevPara tkTextPrevPos \"\n            \"tkTextPrevWord tkTextResetAnchor tkTextScrollPages \"\n            \"tkTextSelectTo tkTextSetCursor tkTextTranspose tkTextUpDownLine \"\n            \"tkTraverseToMenu tkTraverseWithinMenu\";\n\n    if (set == 5)\n        return \"expand\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerTCL::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case CommentLine:\n        return tr(\"Comment line\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case QuotedKeyword:\n        return tr(\"Quoted keyword\");\n\n    case QuotedString:\n        return tr(\"Quoted string\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case Substitution:\n        return tr(\"Substitution\");\n\n    case SubstitutionBrace:\n        return tr(\"Brace substitution\");\n\n    case Modifier:\n        return tr(\"Modifier\");\n\n    case ExpandKeyword:\n        return tr(\"Expand keyword\");\n\n    case TCLKeyword:\n        return tr(\"TCL keyword\");\n\n    case TkKeyword:\n        return tr(\"Tk keyword\");\n\n    case ITCLKeyword:\n        return tr(\"iTCL keyword\");\n\n    case TkCommand:\n        return tr(\"Tk command\");\n\n    case KeywordSet6:\n        return tr(\"User defined 1\");\n\n    case KeywordSet7:\n        return tr(\"User defined 2\");\n\n    case KeywordSet8:\n        return tr(\"User defined 3\");\n\n    case KeywordSet9:\n        return tr(\"User defined 4\");\n\n    case CommentBox:\n        return tr(\"Comment box\");\n\n    case CommentBlock:\n        return tr(\"Comment block\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerTCL::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case Comment:\n        return QColor(0xf0,0xff,0xe0);\n\n    case QuotedKeyword:\n    case QuotedString:\n    case ITCLKeyword:\n        return QColor(0xff,0xf0,0xf0);\n\n    case Substitution:\n        return QColor(0xef,0xff,0xf0);\n\n    case ExpandKeyword:\n        return QColor(0xff,0xff,0x80);\n\n    case TkKeyword:\n        return QColor(0xe0,0xff,0xf0);\n\n    case TkCommand:\n        return QColor(0xff,0xd0,0xd0);\n\n    case CommentBox:\n    case CommentBlock:\n        return QColor(0xf0,0xff,0xf0);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerTCL::refreshProperties()\n{\n    setCommentProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerTCL::readProperties(QSettings &qs, const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerTCL::writeProperties(QSettings &qs, const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n\n    return rc;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerTCL::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerTCL::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\", (fold_comments ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp",
    "content": "// This module implements the QsciLexerTeX class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexertex.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerTeX::QsciLexerTeX(QObject *parent)\n    : QsciLexer(parent),\n      fold_comments(false), fold_compact(true), process_comments(false),\n      process_if(true)\n{\n}\n\n\n// The dtor.\nQsciLexerTeX::~QsciLexerTeX()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerTeX::language() const\n{\n    return \"TeX\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerTeX::lexer() const\n{\n    return \"tex\";\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerTeX::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\\\@\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerTeX::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x3f,0x3f,0x3f);\n\n    case Special:\n        return QColor(0x00,0x7f,0x7f);\n\n    case Group:\n        return QColor(0x7f,0x00,0x00);\n\n    case Symbol:\n        return QColor(0x7f,0x7f,0x00);\n\n    case Command:\n        return QColor(0x00,0x7f,0x00);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerTeX::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"above abovedisplayshortskip abovedisplayskip \"\n            \"abovewithdelims accent adjdemerits advance \"\n            \"afterassignment aftergroup atop atopwithdelims \"\n            \"badness baselineskip batchmode begingroup \"\n            \"belowdisplayshortskip belowdisplayskip binoppenalty \"\n            \"botmark box boxmaxdepth brokenpenalty catcode char \"\n            \"chardef cleaders closein closeout clubpenalty copy \"\n            \"count countdef cr crcr csname day deadcycles def \"\n            \"defaulthyphenchar defaultskewchar delcode delimiter \"\n            \"delimiterfactor delimeters delimitershortfall \"\n            \"delimeters dimen dimendef discretionary \"\n            \"displayindent displaylimits displaystyle \"\n            \"displaywidowpenalty displaywidth divide \"\n            \"doublehyphendemerits dp dump edef else \"\n            \"emergencystretch end endcsname endgroup endinput \"\n            \"endlinechar eqno errhelp errmessage \"\n            \"errorcontextlines errorstopmode escapechar everycr \"\n            \"everydisplay everyhbox everyjob everymath everypar \"\n            \"everyvbox exhyphenpenalty expandafter fam fi \"\n            \"finalhyphendemerits firstmark floatingpenalty font \"\n            \"fontdimen fontname futurelet gdef global group \"\n            \"globaldefs halign hangafter hangindent hbadness \"\n            \"hbox hfil horizontal hfill horizontal hfilneg hfuzz \"\n            \"hoffset holdinginserts hrule hsize hskip hss \"\n            \"horizontal ht hyphenation hyphenchar hyphenpenalty \"\n            \"hyphen if ifcase ifcat ifdim ifeof iffalse ifhbox \"\n            \"ifhmode ifinner ifmmode ifnum ifodd iftrue ifvbox \"\n            \"ifvmode ifvoid ifx ignorespaces immediate indent \"\n            \"input inputlineno input insert insertpenalties \"\n            \"interlinepenalty jobname kern language lastbox \"\n            \"lastkern lastpenalty lastskip lccode leaders left \"\n            \"lefthyphenmin leftskip leqno let limits linepenalty \"\n            \"line lineskip lineskiplimit long looseness lower \"\n            \"lowercase mag mark mathaccent mathbin mathchar \"\n            \"mathchardef mathchoice mathclose mathcode mathinner \"\n            \"mathop mathopen mathord mathpunct mathrel \"\n            \"mathsurround maxdeadcycles maxdepth meaning \"\n            \"medmuskip message mkern month moveleft moveright \"\n            \"mskip multiply muskip muskipdef newlinechar noalign \"\n            \"noboundary noexpand noindent nolimits nonscript \"\n            \"scriptscript nonstopmode nulldelimiterspace \"\n            \"nullfont number omit openin openout or outer output \"\n            \"outputpenalty over overfullrule overline \"\n            \"overwithdelims pagedepth pagefilllstretch \"\n            \"pagefillstretch pagefilstretch pagegoal pageshrink \"\n            \"pagestretch pagetotal par parfillskip parindent \"\n            \"parshape parskip patterns pausing penalty \"\n            \"postdisplaypenalty predisplaypenalty predisplaysize \"\n            \"pretolerance prevdepth prevgraf radical raise read \"\n            \"relax relpenalty right righthyphenmin rightskip \"\n            \"romannumeral scriptfont scriptscriptfont \"\n            \"scriptscriptstyle scriptspace scriptstyle \"\n            \"scrollmode setbox setlanguage sfcode shipout show \"\n            \"showbox showboxbreadth showboxdepth showlists \"\n            \"showthe skewchar skip skipdef spacefactor spaceskip \"\n            \"span special splitbotmark splitfirstmark \"\n            \"splitmaxdepth splittopskip string tabskip textfont \"\n            \"textstyle the thickmuskip thinmuskip time toks \"\n            \"toksdef tolerance topmark topskip tracingcommands \"\n            \"tracinglostchars tracingmacros tracingonline \"\n            \"tracingoutput tracingpages tracingparagraphs \"\n            \"tracingrestores tracingstats uccode uchyph \"\n            \"underline unhbox unhcopy unkern unpenalty unskip \"\n            \"unvbox unvcopy uppercase vadjust valign vbadness \"\n            \"vbox vcenter vfil vfill vfilneg vfuzz voffset vrule \"\n            \"vsize vskip vsplit vss vtop wd widowpenalty write \"\n            \"xdef xleaders xspaceskip year \"\n            \"TeX bgroup egroup endgraf space empty null newcount \"\n            \"newdimen newskip newmuskip newbox newtoks newhelp \"\n            \"newread newwrite newfam newlanguage newinsert newif \"\n            \"maxdimen magstephalf magstep frenchspacing \"\n            \"nonfrenchspacing normalbaselines obeylines \"\n            \"obeyspaces raggedr ight ttraggedright thinspace \"\n            \"negthinspace enspace enskip quad qquad smallskip \"\n            \"medskip bigskip removelastskip topglue vglue hglue \"\n            \"break nobreak allowbreak filbreak goodbreak \"\n            \"smallbreak medbreak bigbreak line leftline \"\n            \"rightline centerline rlap llap underbar strutbox \"\n            \"strut cases matrix pmatrix bordermatrix eqalign \"\n            \"displaylines eqalignno leqalignno pageno folio \"\n            \"tracingall showhyphens fmtname fmtversion hphantom \"\n            \"vphantom phantom smash\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerTeX::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Special:\n        return tr(\"Special\");\n\n    case Group:\n        return tr(\"Group\");\n\n    case Symbol:\n        return tr(\"Symbol\");\n\n    case Command:\n        return tr(\"Command\");\n\n    case Text:\n        return tr(\"Text\");\n    }\n\n    return QString();\n}\n\n\n// Refresh all properties.\nvoid QsciLexerTeX::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n    setProcessCommentsProp();\n    setAutoIfProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerTeX::readProperties(QSettings &qs, const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    process_comments = qs.value(prefix + \"processcomments\", false).toBool();\n    process_if = qs.value(prefix + \"processif\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerTeX::writeProperties(QSettings &qs, const QString &prefix) const\n{\n    int rc = true;\n\n    qs.value(prefix + \"foldcomments\", fold_comments);\n    qs.value(prefix + \"foldcompact\", fold_compact);\n    qs.value(prefix + \"processcomments\", process_comments);\n    qs.value(prefix + \"processif\", process_if);\n\n    return rc;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerTeX::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerTeX::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\", (fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact.\nvoid QsciLexerTeX::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerTeX::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\", (fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if comments are processed\nvoid QsciLexerTeX::setProcessComments(bool enable)\n{\n    process_comments = enable;\n\n    setProcessCommentsProp();\n}\n\n\n// Set the \"lexer.tex.comment.process\" property.\nvoid QsciLexerTeX::setProcessCommentsProp()\n{\n    emit propertyChanged(\"lexer.tex.comment.process\", (process_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if \\if<unknown> is processed\nvoid QsciLexerTeX::setProcessIf(bool enable)\n{\n    process_if = enable;\n\n    setAutoIfProp();\n}\n\n\n// Set the \"lexer.tex.auto.if\" property.\nvoid QsciLexerTeX::setAutoIfProp()\n{\n    emit propertyChanged(\"lexer.tex.auto.if\", (process_if ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp",
    "content": "// This module implements the QsciLexerVerilog class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerverilog.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerVerilog::QsciLexerVerilog(QObject *parent)\n    : QsciLexer(parent),\n      fold_atelse(false), fold_comments(false), fold_compact(true),\n      fold_preproc(false), fold_atmodule(false)\n{\n}\n\n\n// The dtor.\nQsciLexerVerilog::~QsciLexerVerilog()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerVerilog::language() const\n{\n    return \"Verilog\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerVerilog::lexer() const\n{\n    return \"verilog\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerVerilog::braceStyle() const\n{\n    return Operator;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerVerilog::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"always and assign automatic begin buf bufif0 bufif1 case casex \"\n            \"casez cell cmos config deassign default defparam design disable \"\n            \"edge else end endcase endconfig endfunction endgenerate \"\n            \"endmodule endprimitiveendspecify endtable endtask event for \"\n            \"force forever fork function generate genvar highz0 highz1 if \"\n            \"ifnone incdir include initial inout input instance integer join \"\n            \"large liblist library localparam macromodule medium module nand \"\n            \"negedge nmos nor noshowcancelled not notif0 notif1 or output \"\n            \"parameter pmos posedge primitive pull0 pull1 pulldown pullup \"\n            \"pulsestyle_ondetect pulsestyle_onevent rcmos real realtime reg \"\n            \"release repeat rnmos rpmos rtran rtranif0 rtranif1 scalared \"\n            \"showcancelled signed small specify specparam strong0 strong1 \"\n            \"supply0 supply1 table task time tran tranif0 tranif1 tri tri0 \"\n            \"tri1 triand trior trireg unsigned use vectored wait wand weak0 \"\n            \"weak1 while wire wor xnor xor\";\n\n    if (set == 3)\n        return\n            \"$async$and$array $async$and$plane $async$nand$array \"\n            \"$async$nand$plane $async$nor$array $async$nor$plane \"\n            \"$async$or$array $async$or$plane $bitstoreal $countdrivers \"\n            \"$display $displayb $displayh $displayo $dist_chi_square \"\n            \"$dist_erlang $dist_exponential $dist_normal $dist_poisson \"\n            \"$dist_t $dist_uniform $dumpall $dumpfile $dumpflush $dumplimit \"\n            \"$dumpoff $dumpon $dumpportsall $dumpportsflush $dumpportslimit \"\n            \"$dumpportsoff $dumpportson $dumpvars $fclose $fdisplayh \"\n            \"$fdisplay $fdisplayf $fdisplayb $ferror $fflush $fgetc $fgets \"\n            \"$finish $fmonitorb $fmonitor $fmonitorf $fmonitorh $fopen \"\n            \"$fread $fscanf $fseek $fsscanf $fstrobe $fstrobebb $fstrobef \"\n            \"$fstrobeh $ftel $fullskew $fwriteb $fwritef $fwriteh $fwrite \"\n            \"$getpattern $history $hold $incsave $input $itor $key $list \"\n            \"$log $monitorb $monitorh $monitoroff $monitoron $monitor \"\n            \"$monitoro $nochange $nokey $nolog $period $printtimescale \"\n            \"$q_add $q_exam $q_full $q_initialize $q_remove $random \"\n            \"$readmemb $readmemh $readmemh $realtime $realtobits $recovery \"\n            \"$recrem $removal $reset_count $reset $reset_value $restart \"\n            \"$rewind $rtoi $save $scale $scope $sdf_annotate $setup \"\n            \"$setuphold $sformat $showscopes $showvariables $showvars \"\n            \"$signed $skew $sreadmemb $sreadmemh $stime $stop $strobeb \"\n            \"$strobe $strobeh $strobeo $swriteb $swriteh $swriteo $swrite \"\n            \"$sync$and$array $sync$and$plane $sync$nand$array \"\n            \"$sync$nand$plane $sync$nor$array $sync$nor$plane $sync$or$array \"\n            \"$sync$or$plane $test$plusargs $time $timeformat $timeskew \"\n            \"$ungetc $unsigned $value$plusargs $width $writeb $writeh $write \"\n            \"$writeo\";\n\n    return 0;\n}\n\n\n// Return the string of characters that comprise a word.\nconst char *QsciLexerVerilog::wordCharacters() const\n{\n    return \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_$\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerVerilog::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n    case InactiveComment:\n    case InactiveCommentLine:\n    case InactiveCommentBang:\n    case InactiveNumber:\n    case InactiveKeyword:\n    case InactiveString:\n    case InactiveKeywordSet2:\n    case InactiveSystemTask:\n    case InactivePreprocessor:\n    case InactiveOperator:\n    case InactiveIdentifier:\n    case InactiveUnclosedString:\n    case InactiveUserKeywordSet:\n    case InactiveCommentKeyword:\n    case InactiveDeclareInputPort:\n    case InactiveDeclareOutputPort:\n    case InactiveDeclareInputOutputPort:\n    case InactivePortConnection:\n        return QColor(0x80, 0x80, 0x80);\n\n    case Comment:\n    case CommentLine:\n        return QColor(0x00, 0x7f, 0x00);\n\n    case CommentBang:\n        return QColor(0x3f, 0x7f, 0x3f);\n\n    case Number:\n    case KeywordSet2:\n        return QColor(0x00, 0x7f, 0x7f);\n\n    case Keyword:\n    case DeclareOutputPort:\n        return QColor(0x00, 0x00, 0x7f);\n\n    case String:\n        return QColor(0x7f, 0x00, 0x7f);\n\n    case SystemTask:\n        return QColor(0x80, 0x40, 0x20);\n\n    case Preprocessor:\n        return QColor(0x7f, 0x7f, 0x00);\n\n    case Operator:\n        return QColor(0x00, 0x70, 0x70);\n\n    case UnclosedString:\n        return QColor(0x00, 0x00, 0x00);\n\n    case UserKeywordSet:\n    case CommentKeyword:\n        return QColor(0x2a, 0x00, 0xff);\n\n    case DeclareInputPort:\n        return QColor(0x7f, 0x00, 0x00);\n\n    case DeclareInputOutputPort:\n        return QColor(0x00, 0x00, 0xff);\n\n    case PortConnection:\n        return QColor(0x00, 0x50, 0x32);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerVerilog::defaultEolFill(int style) const\n{\n    switch (style)\n    {\n    case CommentBang:\n    case UnclosedString:\n    case InactiveDefault:\n    case InactiveComment:\n    case InactiveCommentLine:\n    case InactiveCommentBang:\n    case InactiveNumber:\n    case InactiveKeyword:\n    case InactiveString:\n    case InactiveKeywordSet2:\n    case InactiveSystemTask:\n    case InactivePreprocessor:\n    case InactiveOperator:\n    case InactiveIdentifier:\n    case InactiveUnclosedString:\n    case InactiveUserKeywordSet:\n    case InactiveCommentKeyword:\n    case InactiveDeclareInputPort:\n    case InactiveDeclareOutputPort:\n    case InactiveDeclareInputOutputPort:\n    case InactivePortConnection:\n        return true;\n    }\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerVerilog::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case CommentLine:\n    case CommentBang:\n    case UserKeywordSet:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    case Keyword:\n    case PortConnection:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case InactiveDefault:\n    case InactiveComment:\n    case InactiveCommentLine:\n    case InactiveCommentBang:\n    case InactiveNumber:\n    case InactiveKeyword:\n    case InactiveString:\n    case InactiveKeywordSet2:\n    case InactiveSystemTask:\n    case InactivePreprocessor:\n    case InactiveOperator:\n    case InactiveIdentifier:\n    case InactiveUnclosedString:\n    case InactiveUserKeywordSet:\n    case InactiveCommentKeyword:\n    case InactiveDeclareInputPort:\n    case InactiveDeclareOutputPort:\n    case InactiveDeclareInputOutputPort:\n    case InactivePortConnection:\n        f = QsciLexer::defaultFont(style);\n        f.setItalic(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerVerilog::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case CommentLine:\n        return tr(\"Line comment\");\n\n    case CommentBang:\n        return tr(\"Bang comment\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Keyword:\n        return tr(\"Primary keywords and identifiers\");\n\n    case String:\n        return tr(\"String\");\n\n    case KeywordSet2:\n        return tr(\"Secondary keywords and identifiers\");\n\n    case SystemTask:\n        return tr(\"System task\");\n\n    case Preprocessor:\n        return tr(\"Preprocessor block\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case UserKeywordSet:\n        return tr(\"User defined tasks and identifiers\");\n\n    case CommentKeyword:\n        return tr(\"Keyword comment\");\n\n    case InactiveCommentKeyword:\n        return tr(\"Inactive keyword comment\");\n\n    case DeclareInputPort:\n        return tr(\"Input port declaration\");\n\n    case InactiveDeclareInputPort:\n        return tr(\"Inactive input port declaration\");\n\n    case DeclareOutputPort:\n        return tr(\"Output port declaration\");\n\n    case InactiveDeclareOutputPort:\n        return tr(\"Inactive output port declaration\");\n\n    case DeclareInputOutputPort:\n        return tr(\"Input/output port declaration\");\n\n    case InactiveDeclareInputOutputPort:\n        return tr(\"Inactive input/output port declaration\");\n\n    case PortConnection:\n        return tr(\"Port connection\");\n\n    case InactivePortConnection:\n        return tr(\"Inactive port connection\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerVerilog::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case CommentBang:\n        return QColor(0xe0, 0xf0, 0xff);\n\n    case UnclosedString:\n        return QColor(0xe0, 0xc0, 0xe0);\n\n    case InactiveDefault:\n    case InactiveComment:\n    case InactiveCommentLine:\n    case InactiveCommentBang:\n    case InactiveNumber:\n    case InactiveKeyword:\n    case InactiveString:\n    case InactiveKeywordSet2:\n    case InactiveSystemTask:\n    case InactivePreprocessor:\n    case InactiveOperator:\n    case InactiveIdentifier:\n    case InactiveUnclosedString:\n    case InactiveUserKeywordSet:\n    case InactiveCommentKeyword:\n    case InactiveDeclareInputPort:\n    case InactiveDeclareOutputPort:\n    case InactiveDeclareInputOutputPort:\n    case InactivePortConnection:\n        return QColor(0xe0, 0xe0, 0xe0);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerVerilog::refreshProperties()\n{\n    setAtElseProp();\n    setCommentProp();\n    setCompactProp();\n    setPreprocProp();\n\n    // We don't provide options for these as there doesn't seem much point in\n    // disabling them.\n    emit propertyChanged(\"lexer.verilog.track.preprocessor\", \"1\");\n    emit propertyChanged(\"lexer.verilog.update.preprocessor\", \"1\");\n    emit propertyChanged(\"lexer.verilog.portstyling\", \"1\");\n    emit propertyChanged(\"lexer.verilog.allupperkeywords\", \"1\");\n}\n\n\n// Read properties from the settings.\nbool QsciLexerVerilog::readProperties(QSettings &qs,const QString &prefix)\n{\n    fold_atelse = qs.value(prefix + \"foldatelse\", false).toBool();\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_preproc = qs.value(prefix + \"foldpreprocessor\", false).toBool();\n    fold_atmodule = qs.value(prefix + \"foldverilogflags\", false).toBool();\n\n    return true;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerVerilog::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    qs.setValue(prefix + \"foldatelse\", fold_atelse);\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"foldpreprocessor\", fold_preproc);\n    qs.setValue(prefix + \"foldverilogflags\", fold_atmodule);\n\n    return true;\n}\n\n\n// Set if else can be folded.\nvoid QsciLexerVerilog::setFoldAtElse(bool fold)\n{\n    fold_atelse = fold;\n\n    setAtElseProp();\n}\n\n\n// Set the \"fold.at.else\" property.\nvoid QsciLexerVerilog::setAtElseProp()\n{\n    emit propertyChanged(\"fold.at.else\", (fold_atelse ? \"1\" : \"0\"));\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerVerilog::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerVerilog::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\", (fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Set if folds are compact\nvoid QsciLexerVerilog::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerVerilog::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\", (fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Set if preprocessor blocks can be folded.\nvoid QsciLexerVerilog::setFoldPreprocessor(bool fold)\n{\n    fold_preproc = fold;\n\n    setPreprocProp();\n}\n\n\n// Set the \"fold.preprocessor\" property.\nvoid QsciLexerVerilog::setPreprocProp()\n{\n    emit propertyChanged(\"fold.preprocessor\", (fold_preproc ? \"1\" : \"0\"));\n}\n\n\n// Set if modules can be folded.\nvoid QsciLexerVerilog::setFoldAtModule(bool fold)\n{\n    fold_atmodule = fold;\n\n    setAtModuleProp();\n}\n\n\n// Set the \"fold.verilog.flags\" property.\nvoid QsciLexerVerilog::setAtModuleProp()\n{\n    emit propertyChanged(\"fold.verilog.flags\", (fold_atmodule ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp",
    "content": "// This module implements the QsciLexerVHDL class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexervhdl.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerVHDL::QsciLexerVHDL(QObject *parent)\n    : QsciLexer(parent),\n      fold_comments(true), fold_compact(true), fold_atelse(true),\n      fold_atbegin(true), fold_atparenth(true)\n{\n}\n\n\n// The dtor.\nQsciLexerVHDL::~QsciLexerVHDL()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerVHDL::language() const\n{\n    return \"VHDL\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerVHDL::lexer() const\n{\n    return \"vhdl\";\n}\n\n\n// Return the style used for braces.\nint QsciLexerVHDL::braceStyle() const\n{\n    return Attribute;\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerVHDL::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x80,0x00,0x80);\n\n    case Comment:\n        return QColor(0x00,0x7f,0x00);\n\n    case CommentLine:\n        return QColor(0x3f,0x7f,0x3f);\n\n    case Number:\n    case StandardOperator:\n        return QColor(0x00,0x7f,0x7f);\n\n    case String:\n        return QColor(0x7f,0x00,0x7f);\n\n    case UnclosedString:\n        return QColor(0x00,0x00,0x00);\n\n    case Keyword:\n        return QColor(0x00,0x00,0x7f);\n\n    case Attribute:\n        return QColor(0x80,0x40,0x20);\n\n    case StandardFunction:\n        return QColor(0x80,0x80,0x20);\n\n    case StandardPackage:\n        return QColor(0x20,0x80,0x20);\n\n    case StandardType:\n        return QColor(0x20,0x80,0x80);\n\n    case KeywordSet7:\n        return QColor(0x80,0x40,0x20);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerVHDL::defaultEolFill(int style) const\n{\n    if (style == UnclosedString)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerVHDL::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Comment:\n    case CommentLine:\n    case KeywordSet7:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerVHDL::keywords(int set) const\n{\n    if (set == 1)\n        return\n            \"access after alias all architecture array assert attribute begin \"\n            \"block body buffer bus case component configuration constant \"\n            \"disconnect downto else elsif end entity exit file for function \"\n            \"generate generic group guarded if impure in inertial inout is \"\n            \"label library linkage literal loop map new next null of on open \"\n            \"others out package port postponed procedure process pure range \"\n            \"record register reject report return select severity shared \"\n            \"signal subtype then to transport type unaffected units until use \"\n            \"variable wait when while with\";\n\n    if (set == 2)\n        return\n            \"abs and mod nand nor not or rem rol ror sla sll sra srl xnor xor\";\n\n    if (set == 3)\n        return\n            \"left right low high ascending image value pos val succ pred \"\n            \"leftof rightof base range reverse_range length delayed stable \"\n            \"quiet transaction event active last_event last_active last_value \"\n            \"driving driving_value simple_name path_name instance_name\";\n\n    if (set == 4)\n        return\n            \"now readline read writeline write endfile resolved to_bit \"\n            \"to_bitvector to_stdulogic to_stdlogicvector to_stdulogicvector \"\n            \"to_x01 to_x01z to_UX01 rising_edge falling_edge is_x shift_left \"\n            \"shift_right rotate_left rotate_right resize to_integer \"\n            \"to_unsigned to_signed std_match to_01\";\n\n    if (set == 5)\n        return\n            \"std ieee work standard textio std_logic_1164 std_logic_arith \"\n            \"std_logic_misc std_logic_signed std_logic_textio \"\n            \"std_logic_unsigned numeric_bit numeric_std math_complex \"\n            \"math_real vital_primitives vital_timing\";\n\n    if (set == 6)\n        return\n            \"boolean bit character severity_level integer real time \"\n            \"delay_length natural positive string bit_vector file_open_kind \"\n            \"file_open_status line text side width std_ulogic \"\n            \"std_ulogic_vector std_logic std_logic_vector X01 X01Z UX01 UX01Z \"\n            \"unsigned signed\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerVHDL::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case CommentLine:\n        return tr(\"Comment line\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case String:\n        return tr(\"String\");\n\n    case Operator:\n        return tr(\"Operator\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case UnclosedString:\n        return tr(\"Unclosed string\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case StandardOperator:\n        return tr(\"Standard operator\");\n\n    case Attribute:\n        return tr(\"Attribute\");\n\n    case StandardFunction:\n        return tr(\"Standard function\");\n\n    case StandardPackage:\n        return tr(\"Standard package\");\n\n    case StandardType:\n        return tr(\"Standard type\");\n\n    case KeywordSet7:\n        return tr(\"User defined\");\n\n    case CommentBlock:\n        return tr(\"Comment block\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerVHDL::defaultPaper(int style) const\n{\n    if (style == UnclosedString)\n        return QColor(0xe0,0xc0,0xe0);\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerVHDL::refreshProperties()\n{\n    setCommentProp();\n    setCompactProp();\n    setAtElseProp();\n    setAtBeginProp();\n    setAtParenthProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerVHDL::readProperties(QSettings &qs,const QString &prefix)\n{\n    fold_comments = qs.value(prefix + \"foldcomments\", true).toBool();\n    fold_compact = qs.value(prefix + \"foldcompact\", true).toBool();\n    fold_atelse = qs.value(prefix + \"foldatelse\", true).toBool();\n    fold_atbegin = qs.value(prefix + \"foldatbegin\", true).toBool();\n    fold_atparenth = qs.value(prefix + \"foldatparenthesis\", true).toBool();\n\n    return true;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerVHDL::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n    qs.setValue(prefix + \"foldcompact\", fold_compact);\n    qs.setValue(prefix + \"foldatelse\", fold_atelse);\n    qs.setValue(prefix + \"foldatbegin\", fold_atbegin);\n    qs.setValue(prefix + \"foldatparenthesis\", fold_atparenth);\n\n    return true;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerVHDL::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerVHDL::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment\" property.\nvoid QsciLexerVHDL::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment\",(fold_comments ? \"1\" : \"0\"));\n}\n\n\n// Return true if folds are compact.\nbool QsciLexerVHDL::foldCompact() const\n{\n    return fold_compact;\n}\n\n\n// Set if folds are compact\nvoid QsciLexerVHDL::setFoldCompact(bool fold)\n{\n    fold_compact = fold;\n\n    setCompactProp();\n}\n\n\n// Set the \"fold.compact\" property.\nvoid QsciLexerVHDL::setCompactProp()\n{\n    emit propertyChanged(\"fold.compact\",(fold_compact ? \"1\" : \"0\"));\n}\n\n\n// Return true if else blocks can be folded.\nbool QsciLexerVHDL::foldAtElse() const\n{\n    return fold_atelse;\n}\n\n\n// Set if else blocks can be folded.\nvoid QsciLexerVHDL::setFoldAtElse(bool fold)\n{\n    fold_atelse = fold;\n\n    setAtElseProp();\n}\n\n\n// Set the \"fold.at.else\" property.\nvoid QsciLexerVHDL::setAtElseProp()\n{\n    emit propertyChanged(\"fold.at.else\",(fold_atelse ? \"1\" : \"0\"));\n}\n\n\n// Return true if begin blocks can be folded.\nbool QsciLexerVHDL::foldAtBegin() const\n{\n    return fold_atbegin;\n}\n\n\n// Set if begin blocks can be folded.\nvoid QsciLexerVHDL::setFoldAtBegin(bool fold)\n{\n    fold_atbegin = fold;\n\n    setAtBeginProp();\n}\n\n\n// Set the \"fold.at.Begin\" property.\nvoid QsciLexerVHDL::setAtBeginProp()\n{\n    emit propertyChanged(\"fold.at.Begin\",(fold_atelse ? \"1\" : \"0\"));\n}\n\n\n// Return true if blocks can be folded at a parenthesis.\nbool QsciLexerVHDL::foldAtParenthesis() const\n{\n    return fold_atparenth;\n}\n\n\n// Set if blocks can be folded at a parenthesis.\nvoid QsciLexerVHDL::setFoldAtParenthesis(bool fold)\n{\n    fold_atparenth = fold;\n\n    setAtParenthProp();\n}\n\n\n// Set the \"fold.at.Parenthese\" property.\nvoid QsciLexerVHDL::setAtParenthProp()\n{\n    emit propertyChanged(\"fold.at.Parenthese\",(fold_atparenth ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexerxml.cpp",
    "content": "// This module implements the QsciLexerXML class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexerxml.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerXML::QsciLexerXML(QObject *parent)\n    : QsciLexerHTML(parent), scripts(true)\n{\n}\n\n\n// The dtor.\nQsciLexerXML::~QsciLexerXML()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerXML::language() const\n{\n    return \"XML\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerXML::lexer() const\n{\n    return \"xml\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerXML::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x00,0x00,0x00);\n\n    case Tag:\n    case UnknownTag:\n    case XMLTagEnd:\n    case SGMLDefault:\n    case SGMLCommand:\n        return QColor(0x00,0x00,0x80);\n\n    case Attribute:\n    case UnknownAttribute:\n        return QColor(0x00,0x80,0x80);\n\n    case HTMLNumber:\n        return QColor(0x00,0x7f,0x7f);\n\n    case HTMLDoubleQuotedString:\n    case HTMLSingleQuotedString:\n        return QColor(0x7f,0x00,0x7f);\n\n    case OtherInTag:\n    case Entity:\n    case XMLStart:\n    case XMLEnd:\n        return QColor(0x80,0x00,0x80);\n\n    case HTMLComment:\n    case SGMLComment:\n        return QColor(0x80,0x80,0x00);\n\n    case CDATA:\n    case PHPStart:\n    case SGMLDoubleQuotedString:\n    case SGMLError:\n        return QColor(0x80,0x00,0x00);\n\n    case HTMLValue:\n        return QColor(0x60,0x80,0x60);\n\n    case SGMLParameter:\n        return QColor(0x00,0x66,0x00);\n\n    case SGMLSingleQuotedString:\n        return QColor(0x99,0x33,0x00);\n\n    case SGMLSpecial:\n        return QColor(0x33,0x66,0xff);\n\n    case SGMLEntity:\n        return QColor(0x33,0x33,0x33);\n\n    case SGMLBlockDefault:\n        return QColor(0x00,0x00,0x66);\n    }\n\n    return QsciLexerHTML::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerXML::defaultEolFill(int style) const\n{\n    if (style == CDATA)\n        return true;\n\n    return QsciLexerHTML::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerXML::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Default:\n    case Entity:\n    case CDATA:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Times New Roman\",11);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Times New Roman\", 12);\n#else\n        f = QFont(\"Bitstream Charter\",10);\n#endif\n        break;\n\n    case XMLStart:\n    case XMLEnd:\n    case SGMLCommand:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    default:\n        f = QsciLexerHTML::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerXML::keywords(int set) const\n{\n    if (set == 6)\n        return QsciLexerHTML::keywords(set);\n\n    return 0;\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerXML::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case CDATA:\n        return QColor(0xff,0xf0,0xf0);\n\n    case SGMLDefault:\n    case SGMLCommand:\n    case SGMLParameter:\n    case SGMLDoubleQuotedString:\n    case SGMLSingleQuotedString:\n    case SGMLSpecial:\n    case SGMLEntity:\n    case SGMLComment:\n        return QColor(0xef,0xef,0xff);\n\n    case SGMLError:\n        return QColor(0xff,0x66,0x66);\n\n    case SGMLBlockDefault:\n        return QColor(0xcc,0xcc,0xe0);\n    }\n\n    return QsciLexerHTML::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerXML::refreshProperties()\n{\n    setScriptsProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerXML::readProperties(QSettings &qs, const QString &prefix)\n{\n    int rc = QsciLexerHTML::readProperties(qs, prefix), num;\n\n    scripts = qs.value(prefix + \"scriptsstyled\", true).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerXML::writeProperties(QSettings &qs, const QString &prefix) const\n{\n    int rc = QsciLexerHTML::writeProperties(qs, prefix);\n\n    qs.setValue(prefix + \"scriptsstyled\", scripts);\n\n    return rc;\n}\n\n\n// Return true if scripts are styled.\nbool QsciLexerXML::scriptsStyled() const\n{\n    return scripts;\n}\n\n\n// Set if scripts are styled.\nvoid QsciLexerXML::setScriptsStyled(bool styled)\n{\n    scripts = styled;\n\n    setScriptsProp();\n}\n\n\n// Set the \"lexer.xml.allow.scripts\" property.\nvoid QsciLexerXML::setScriptsProp()\n{\n    emit propertyChanged(\"lexer.xml.allow.scripts\",(scripts ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp",
    "content": "// This module implements the QsciLexerYAML class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscilexeryaml.h\"\n\n#include <qcolor.h>\n#include <qfont.h>\n#include <qsettings.h>\n\n\n// The ctor.\nQsciLexerYAML::QsciLexerYAML(QObject *parent)\n    : QsciLexer(parent), fold_comments(false)\n{\n}\n\n\n// The dtor.\nQsciLexerYAML::~QsciLexerYAML()\n{\n}\n\n\n// Returns the language name.\nconst char *QsciLexerYAML::language() const\n{\n    return \"YAML\";\n}\n\n\n// Returns the lexer name.\nconst char *QsciLexerYAML::lexer() const\n{\n    return \"yaml\";\n}\n\n\n// Returns the foreground colour of the text for a style.\nQColor QsciLexerYAML::defaultColor(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return QColor(0x00,0x00,0x00);\n\n    case Comment:\n        return QColor(0x00,0x88,0x00);\n\n    case Identifier:\n        return QColor(0x00,0x00,0x88);\n\n    case Keyword:\n        return QColor(0x88,0x00,0x88);\n\n    case Number:\n        return QColor(0x88,0x00,0x00);\n\n    case Reference:\n        return QColor(0x00,0x88,0x88);\n\n    case DocumentDelimiter:\n    case SyntaxErrorMarker:\n        return QColor(0xff,0xff,0xff);\n\n    case TextBlockMarker:\n        return QColor(0x33,0x33,0x66);\n    }\n\n    return QsciLexer::defaultColor(style);\n}\n\n\n// Returns the end-of-line fill for a style.\nbool QsciLexerYAML::defaultEolFill(int style) const\n{\n    if (style == DocumentDelimiter || style == SyntaxErrorMarker)\n        return true;\n\n    return QsciLexer::defaultEolFill(style);\n}\n\n\n// Returns the font of the text for a style.\nQFont QsciLexerYAML::defaultFont(int style) const\n{\n    QFont f;\n\n    switch (style)\n    {\n    case Default:\n    case TextBlockMarker:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Times New Roman\", 11);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Times New Roman\", 12);\n#else\n        f = QFont(\"Bitstream Charter\", 10);\n#endif\n        break;\n\n    case Identifier:\n        f = QsciLexer::defaultFont(style);\n        f.setBold(true);\n        break;\n\n    case DocumentDelimiter:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Comic Sans MS\",9);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Comic Sans MS\", 12);\n#else\n        f = QFont(\"Bitstream Vera Serif\",9);\n#endif\n        f.setBold(true);\n        break;\n\n    case SyntaxErrorMarker:\n#if defined(Q_OS_WIN)\n        f = QFont(\"Times New Roman\", 11);\n#elif defined(Q_OS_MAC)\n        f = QFont(\"Times New Roman\", 12);\n#else\n        f = QFont(\"Bitstream Charter\", 10);\n#endif\n        f.setBold(true);\n        f.setItalic(true);\n        break;\n\n    default:\n        f = QsciLexer::defaultFont(style);\n    }\n\n    return f;\n}\n\n\n// Returns the set of keywords.\nconst char *QsciLexerYAML::keywords(int set) const\n{\n    if (set == 1)\n        return \"true false yes no\";\n\n    return 0;\n}\n\n\n// Returns the user name of a style.\nQString QsciLexerYAML::description(int style) const\n{\n    switch (style)\n    {\n    case Default:\n        return tr(\"Default\");\n\n    case Comment:\n        return tr(\"Comment\");\n\n    case Identifier:\n        return tr(\"Identifier\");\n\n    case Keyword:\n        return tr(\"Keyword\");\n\n    case Number:\n        return tr(\"Number\");\n\n    case Reference:\n        return tr(\"Reference\");\n\n    case DocumentDelimiter:\n        return tr(\"Document delimiter\");\n\n    case TextBlockMarker:\n        return tr(\"Text block marker\");\n\n    case SyntaxErrorMarker:\n        return tr(\"Syntax error marker\");\n\n    case Operator:\n        return tr(\"Operator\");\n    }\n\n    return QString();\n}\n\n\n// Returns the background colour of the text for a style.\nQColor QsciLexerYAML::defaultPaper(int style) const\n{\n    switch (style)\n    {\n    case DocumentDelimiter:\n        return QColor(0x00,0x00,0x88);\n\n    case SyntaxErrorMarker:\n        return QColor(0xff,0x00,0x00);\n    }\n\n    return QsciLexer::defaultPaper(style);\n}\n\n\n// Refresh all properties.\nvoid QsciLexerYAML::refreshProperties()\n{\n    setCommentProp();\n}\n\n\n// Read properties from the settings.\nbool QsciLexerYAML::readProperties(QSettings &qs,const QString &prefix)\n{\n    int rc = true;\n\n    fold_comments = qs.value(prefix + \"foldcomments\", false).toBool();\n\n    return rc;\n}\n\n\n// Write properties to the settings.\nbool QsciLexerYAML::writeProperties(QSettings &qs,const QString &prefix) const\n{\n    int rc = true;\n\n    qs.setValue(prefix + \"foldcomments\", fold_comments);\n\n    return rc;\n}\n\n\n// Return true if comments can be folded.\nbool QsciLexerYAML::foldComments() const\n{\n    return fold_comments;\n}\n\n\n// Set if comments can be folded.\nvoid QsciLexerYAML::setFoldComments(bool fold)\n{\n    fold_comments = fold;\n\n    setCommentProp();\n}\n\n\n// Set the \"fold.comment.yaml\" property.\nvoid QsciLexerYAML::setCommentProp()\n{\n    emit propertyChanged(\"fold.comment.yaml\",(fold_comments ? \"1\" : \"0\"));\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscimacro.cpp",
    "content": "// This module implements the QsciMacro class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscimacro.h\"\n\n#include <QStringList>\n\n#include \"Qsci/qsciscintilla.h\"\n\n\nstatic int fromHex(unsigned char ch);\n\n\n// The ctor.\nQsciMacro::QsciMacro(QsciScintilla *parent)\n    : QObject(parent), qsci(parent)\n{\n}\n\n\n// The ctor that initialises the macro.\nQsciMacro::QsciMacro(const QString &asc, QsciScintilla *parent)\n    : QObject(parent), qsci(parent)\n{\n    load(asc);\n}\n\n\n// The dtor.\nQsciMacro::~QsciMacro()\n{\n}\n\n\n// Clear the contents of the macro.\nvoid QsciMacro::clear()\n{\n    macro.clear();\n}\n\n\n// Read a macro from a string.\nbool QsciMacro::load(const QString &asc)\n{\n    bool ok = true;\n\n    macro.clear();\n\n    QStringList fields = asc.split(' ');\n\n    int f = 0;\n\n    while (f < fields.size())\n    {\n        Macro cmd;\n        unsigned len;\n\n        // Extract the 3 fixed fields.\n        if (f + 3 > fields.size())\n        {\n            ok = false;\n            break;\n        }\n\n        cmd.msg = fields[f++].toUInt(&ok);\n\n        if (!ok)\n            break;\n\n        cmd.wParam = fields[f++].toULong(&ok);\n\n        if (!ok)\n            break;\n\n        len = fields[f++].toUInt(&ok);\n\n        if (!ok)\n            break;\n\n        // Extract any text.\n        if (len)\n        {\n            if (f + 1 > fields.size())\n            {\n                ok = false;\n                break;\n            }\n\n            QByteArray ba = fields[f++].toLatin1();\n            const char *sp = ba.data();\n\n            if (!sp)\n            {\n                ok = false;\n                break;\n            }\n\n            // Because of historical bugs the length field is unreliable.\n            bool embedded_null = false;\n            unsigned char ch;\n\n            while ((ch = *sp++) != '\\0')\n            {\n                if (ch == '\"' || ch <= ' ' || ch >= 0x7f)\n                {\n                    ok = false;\n                    break;\n                }\n\n                if (ch == '\\\\')\n                {\n                    int b1, b2;\n\n                    if ((b1 = fromHex(*sp++)) < 0 ||\n                        (b2 = fromHex(*sp++)) < 0)\n                    {\n                        ok = false;\n                        break;\n                    }\n\n                    ch = (b1 << 4) + b2;\n                }\n\n                if (ch == '\\0')\n                {\n                    // Don't add it now as it may be the terminating '\\0'.\n                    embedded_null = true;\n                }\n                else\n                {\n                    if (embedded_null)\n                    {\n                        // Add the pending embedded '\\0'.\n                        cmd.text += '\\0';\n                        embedded_null = false;\n                    }\n\n                    cmd.text += ch;\n                }\n            }\n\n            if (!ok)\n                break;\n        }\n\n        macro.append(cmd);\n    }\n        \n    if (!ok)\n        macro.clear();\n\n    return ok;\n}\n\n\n// Write a macro to a string.\nQString QsciMacro::save() const\n{\n    QString ms;\n\n    QList<Macro>::const_iterator it;\n\n    for (it = macro.begin(); it != macro.end(); ++it)\n    {\n        if (!ms.isEmpty())\n            ms += ' ';\n\n        unsigned len = (*it).text.size();\n        QString m;\n\n        ms += m.sprintf(\"%u %lu %u\", (*it).msg, (*it).wParam, len);\n\n        if (len)\n        {\n            // In Qt v3, if the length is greater than zero then it also\n            // includes the '\\0', so we need to make sure that Qt v4 writes the\n            // '\\0'.  That the '\\0' is written at all is a bug because\n            // QCString::size() is used instead of QCString::length().  We\n            // don't fix this so as not to break old macros.  However this is\n            // still broken because we have already written the unadjusted\n            // length.  So, in summary, the length field should be interpreted\n            // as a zero/non-zero value, and the end of the data is either at\n            // the next space or the very end of the data.\n            ++len;\n\n            ms += ' ';\n\n            const char *cp = (*it).text.data();\n\n            while (len--)\n            {\n                unsigned char ch = *cp++;\n\n                if (ch == '\\\\' || ch == '\"' || ch <= ' ' || ch >= 0x7f)\n                {\n                    QString buf;\n\n                    ms += buf.sprintf(\"\\\\%02x\", ch);\n                }\n                else\n                    ms += ch;\n            }\n        }\n    }\n\n    return ms;\n}\n\n\n// Play the macro.\nvoid QsciMacro::play()\n{\n    if (!qsci)\n        return;\n\n    QList<Macro>::const_iterator it;\n\n    for (it = macro.begin(); it != macro.end(); ++it)\n        qsci->SendScintilla((*it).msg, (*it).wParam, (*it).text.data());\n}\n\n\n// Start recording.\nvoid QsciMacro::startRecording()\n{\n    if (!qsci)\n        return;\n\n    macro.clear();\n\n    connect(qsci, SIGNAL(SCN_MACRORECORD(unsigned int, unsigned long, void *)),\n            SLOT(record(unsigned int, unsigned long, void *)));\n\n    qsci->SendScintilla(QsciScintillaBase::SCI_STARTRECORD);\n}\n\n\n// End recording.\nvoid QsciMacro::endRecording()\n{\n    if (!qsci)\n        return;\n\n    qsci->SendScintilla(QsciScintillaBase::SCI_STOPRECORD);\n    qsci->disconnect(this);\n}\n\n\n// Record a command.\nvoid QsciMacro::record(unsigned int msg, unsigned long wParam, void *lParam)\n{\n    Macro m;\n\n    m.msg = msg;\n    m.wParam = wParam;\n\n    // Determine commands which need special handling of the parameters.\n    switch (msg)\n    {\n    case QsciScintillaBase::SCI_ADDTEXT:\n        m.text = QByteArray(reinterpret_cast<const char *>(lParam), wParam);\n        break;\n\n    case QsciScintillaBase::SCI_REPLACESEL:\n        if (!macro.isEmpty() && macro.last().msg == QsciScintillaBase::SCI_REPLACESEL)\n        {\n            // This is the command used for ordinary user input so it's a\n            // significant space reduction to append it to the previous\n            // command.\n\n            macro.last().text.append(reinterpret_cast<const char *>(lParam));\n            return;\n        }\n\n        /* Drop through. */\n\n    case QsciScintillaBase::SCI_INSERTTEXT:\n    case QsciScintillaBase::SCI_APPENDTEXT:\n    case QsciScintillaBase::SCI_SEARCHNEXT:\n    case QsciScintillaBase::SCI_SEARCHPREV:\n        m.text.append(reinterpret_cast<const char *>(lParam));\n        break;\n    }\n\n    macro.append(m);\n}\n\n\n// Return the given hex character as a binary.\nstatic int fromHex(unsigned char ch)\n{\n    if (ch >= '0' && ch <= '9')\n        return ch - '0';\n\n    if (ch >= 'a' && ch <= 'f')\n        return ch - 'a' + 10;\n\n    return -1;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscintilla.pro",
    "content": "# The project file for the QScintilla library.\n#\n# Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n# \n# This file is part of QScintilla.\n# \n# This file may be used under the terms of the GNU General Public License\n# version 3.0 as published by the Free Software Foundation and appearing in\n# the file LICENSE included in the packaging of this file.  Please review the\n# following information to ensure the GNU General Public License version 3.0\n# requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n# \n# If you do not wish to use this file under the terms of the GPL version 3.0\n# then you may purchase a commercial license.  For more information contact\n# info@riverbankcomputing.com.\n# \n# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n# This must be kept in sync with Python/configure.py, Python/configure-old.py,\n# example-Qt4Qt5/application.pro and designer-Qt4Qt5/designer.pro.\n!win32:VERSION = 13.0.0\n\nTEMPLATE = lib\nTARGET = qscintilla2_qt$${QT_MAJOR_VERSION}\nCONFIG += qt warn_off thread exceptions hide_symbols\nINCLUDEPATH += . ../include ../lexlib ../src\n\n!CONFIG(staticlib) {\n    DEFINES += QSCINTILLA_MAKE_DLL\n}\nDEFINES += SCINTILLA_QT SCI_LEXER\n\ngreaterThan(QT_MAJOR_VERSION, 4) {\n\tQT += widgets printsupport\n\n    greaterThan(QT_MINOR_VERSION, 1) {\n\t    macx:QT += macextras\n    }\n\n    # Work around QTBUG-39300.\n    CONFIG -= android_install\n}\n\n# Comment this in if you want the internal Scintilla classes to be placed in a\n# Scintilla namespace rather than pollute the global namespace.\n#DEFINES += SCI_NAMESPACE\n\ntarget.path = $$[QT_INSTALL_LIBS]\nINSTALLS += target\n\nheader.path = $$[QT_INSTALL_HEADERS]\nheader.files = Qsci\nINSTALLS += header\n\ntrans.path = $$[QT_INSTALL_TRANSLATIONS]\ntrans.files = qscintilla_*.qm\nINSTALLS += trans\n\nqsci.path = $$[QT_INSTALL_DATA]\nqsci.files = ../qsci\nINSTALLS += qsci\n\ngreaterThan(QT_MAJOR_VERSION, 4) {\n    features.path = $$[QT_HOST_DATA]/mkspecs/features\n} else {\n    features.path = $$[QT_INSTALL_DATA]/mkspecs/features\n}\nCONFIG(staticlib) {\n    features.files = $$PWD/features_staticlib/qscintilla2.prf\n} else {\n    features.files = $$PWD/features/qscintilla2.prf\n}\nINSTALLS += features\n\nHEADERS = \\\n\t./Qsci/qsciglobal.h \\\n\t./Qsci/qsciscintilla.h \\\n\t./Qsci/qsciscintillabase.h \\\n\t./Qsci/qsciabstractapis.h \\\n\t./Qsci/qsciapis.h \\\n\t./Qsci/qscicommand.h \\\n\t./Qsci/qscicommandset.h \\\n\t./Qsci/qscidocument.h \\\n\t./Qsci/qscilexer.h \\\n\t./Qsci/qscilexeravs.h \\\n\t./Qsci/qscilexerbash.h \\\n\t./Qsci/qscilexerbatch.h \\\n\t./Qsci/qscilexercmake.h \\\n\t./Qsci/qscilexercoffeescript.h \\\n\t./Qsci/qscilexercpp.h \\\n\t./Qsci/qscilexercsharp.h \\\n\t./Qsci/qscilexercss.h \\\n\t./Qsci/qscilexercustom.h \\\n\t./Qsci/qscilexerd.h \\\n\t./Qsci/qscilexerdiff.h \\\n\t./Qsci/qscilexerfortran.h \\\n\t./Qsci/qscilexerfortran77.h \\\n\t./Qsci/qscilexerhtml.h \\\n\t./Qsci/qscilexeridl.h \\\n\t./Qsci/qscilexerjava.h \\\n\t./Qsci/qscilexerjavascript.h \\\n\t./Qsci/qscilexerjson.h \\\n\t./Qsci/qscilexerlua.h \\\n\t./Qsci/qscilexermakefile.h \\\n\t./Qsci/qscilexermarkdown.h \\\n\t./Qsci/qscilexermatlab.h \\\n\t./Qsci/qscilexeroctave.h \\\n\t./Qsci/qscilexerpascal.h \\\n\t./Qsci/qscilexerperl.h \\\n\t./Qsci/qscilexerpostscript.h \\\n\t./Qsci/qscilexerpo.h \\\n\t./Qsci/qscilexerpov.h \\\n\t./Qsci/qscilexerproperties.h \\\n\t./Qsci/qscilexerpython.h \\\n\t./Qsci/qscilexerruby.h \\\n\t./Qsci/qscilexerspice.h \\\n\t./Qsci/qscilexersql.h \\\n\t./Qsci/qscilexertcl.h \\\n\t./Qsci/qscilexertex.h \\\n\t./Qsci/qscilexerverilog.h \\\n\t./Qsci/qscilexervhdl.h \\\n\t./Qsci/qscilexerxml.h \\\n\t./Qsci/qscilexeryaml.h \\\n\t./Qsci/qscimacro.h \\\n\t./Qsci/qsciprinter.h \\\n\t./Qsci/qscistyle.h \\\n\t./Qsci/qscistyledtext.h \\\n\tListBoxQt.h \\\n\tSciClasses.h \\\n\tSciNamespace.h \\\n\tScintillaQt.h \\\n\t../include/ILexer.h \\\n\t../include/Platform.h \\\n\t../include/Sci_Position.h \\\n\t../include/SciLexer.h \\\n\t../include/Scintilla.h \\\n\t../include/ScintillaWidget.h \\\n\t../lexlib/Accessor.h \\\n\t../lexlib/CharacterCategory.h \\\n\t../lexlib/CharacterSet.h \\\n\t../lexlib/LexAccessor.h \\\n\t../lexlib/LexerBase.h \\\n\t../lexlib/LexerModule.h \\\n\t../lexlib/LexerNoExceptions.h \\\n\t../lexlib/LexerSimple.h \\\n\t../lexlib/OptionSet.h \\\n\t../lexlib/PropSetSimple.h \\\n\t../lexlib/StringCopy.h \\\n\t../lexlib/StyleContext.h \\\n\t../lexlib/SubStyles.h \\\n\t../lexlib/WordList.h \\\n\t../src/AutoComplete.h \\\n\t../src/CallTip.h \\\n\t../src/CaseConvert.h \\\n\t../src/CaseFolder.h \\\n\t../src/Catalogue.h \\\n\t../src/CellBuffer.h \\\n\t../src/CharClassify.h \\\n\t../src/ContractionState.h \\\n\t../src/Decoration.h \\\n\t../src/Document.h \\\n\t../src/EditModel.h \\\n\t../src/Editor.h \\\n\t../src/EditView.h \\\n\t../src/ExternalLexer.h \\\n\t../src/FontQuality.h \\\n\t../src/Indicator.h \\\n\t../src/KeyMap.h \\\n\t../src/LineMarker.h \\\n\t../src/MarginView.h \\\n\t../src/Partitioning.h \\\n\t../src/PerLine.h \\\n\t../src/PositionCache.h \\\n\t../src/RESearch.h \\\n\t../src/RunStyles.h \\\n\t../src/ScintillaBase.h \\\n\t../src/Selection.h \\\n\t../src/SplitVector.h \\\n\t../src/Style.h \\\n\t../src/UnicodeFromUTF8.h \\\n\t../src/UniConversion.h \\\n\t../src/ViewStyle.h \\\n\t../src/XPM.h\n\nSOURCES = \\\n\tqsciscintilla.cpp \\\n\tqsciscintillabase.cpp \\\n\tqsciabstractapis.cpp \\\n\tqsciapis.cpp \\\n\tqscicommand.cpp \\\n\tqscicommandset.cpp \\\n\tqscidocument.cpp \\\n\tqscilexer.cpp \\\n\tqscilexeravs.cpp \\\n\tqscilexerbash.cpp \\\n\tqscilexerbatch.cpp \\\n\tqscilexercmake.cpp \\\n\tqscilexercoffeescript.cpp \\\n\tqscilexercpp.cpp \\\n\tqscilexercsharp.cpp \\\n\tqscilexercss.cpp \\\n\tqscilexercustom.cpp \\\n\tqscilexerd.cpp \\\n\tqscilexerdiff.cpp \\\n\tqscilexerfortran.cpp \\\n\tqscilexerfortran77.cpp \\\n\tqscilexerhtml.cpp \\\n\tqscilexeridl.cpp \\\n\tqscilexerjava.cpp \\\n\tqscilexerjavascript.cpp \\\n\tqscilexerjson.cpp \\\n\tqscilexerlua.cpp \\\n\tqscilexermakefile.cpp \\\n\tqscilexermarkdown.cpp \\\n\tqscilexermatlab.cpp \\\n\tqscilexeroctave.cpp \\\n\tqscilexerpascal.cpp \\\n\tqscilexerperl.cpp \\\n\tqscilexerpostscript.cpp \\\n\tqscilexerpo.cpp \\\n\tqscilexerpov.cpp \\\n\tqscilexerproperties.cpp \\\n\tqscilexerpython.cpp \\\n\tqscilexerruby.cpp \\\n\tqscilexerspice.cpp \\\n\tqscilexersql.cpp \\\n\tqscilexertcl.cpp \\\n\tqscilexertex.cpp \\\n\tqscilexerverilog.cpp \\\n\tqscilexervhdl.cpp \\\n\tqscilexerxml.cpp \\\n\tqscilexeryaml.cpp \\\n\tqscimacro.cpp \\\n\tqsciprinter.cpp \\\n\tqscistyle.cpp \\\n\tqscistyledtext.cpp \\\n    MacPasteboardMime.cpp \\\n    InputMethod.cpp \\\n\tSciClasses.cpp \\\n\tListBoxQt.cpp \\\n\tPlatQt.cpp \\\n\tScintillaQt.cpp \\\n\t../lexers/LexA68k.cpp \\\n\t../lexers/LexAbaqus.cpp \\\n\t../lexers/LexAda.cpp \\\n\t../lexers/LexAPDL.cpp \\\n\t../lexers/LexAsm.cpp \\\n\t../lexers/LexAsn1.cpp \\\n\t../lexers/LexASY.cpp \\\n\t../lexers/LexAU3.cpp \\\n\t../lexers/LexAVE.cpp \\\n\t../lexers/LexAVS.cpp \\\n\t../lexers/LexBaan.cpp \\\n\t../lexers/LexBash.cpp \\\n\t../lexers/LexBasic.cpp \\\n\t../lexers/LexBatch.cpp \\\n\t../lexers/LexBibTex.cpp \\\n\t../lexers/LexBullant.cpp \\\n\t../lexers/LexCaml.cpp \\\n\t../lexers/LexCLW.cpp \\\n\t../lexers/LexCmake.cpp \\\n\t../lexers/LexCOBOL.cpp \\\n\t../lexers/LexCoffeeScript.cpp \\\n\t../lexers/LexConf.cpp \\\n\t../lexers/LexCPP.cpp \\\n\t../lexers/LexCrontab.cpp \\\n\t../lexers/LexCsound.cpp \\\n\t../lexers/LexCSS.cpp \\\n\t../lexers/LexD.cpp \\\n\t../lexers/LexDiff.cpp \\\n\t../lexers/LexDMAP.cpp \\\n\t../lexers/LexDMIS.cpp \\\n\t../lexers/LexECL.cpp \\\n\t../lexers/LexEDIFACT.cpp \\\n\t../lexers/LexEiffel.cpp \\\n\t../lexers/LexErlang.cpp \\\n\t../lexers/LexErrorList.cpp \\\n\t../lexers/LexEScript.cpp \\\n\t../lexers/LexFlagship.cpp \\\n\t../lexers/LexForth.cpp \\\n\t../lexers/LexFortran.cpp \\\n\t../lexers/LexGAP.cpp \\\n\t../lexers/LexGui4Cli.cpp \\\n\t../lexers/LexHaskell.cpp \\\n\t../lexers/LexHex.cpp \\\n\t../lexers/LexHTML.cpp \\\n\t../lexers/LexInno.cpp \\\n\t../lexers/LexJSON.cpp \\\n\t../lexers/LexKix.cpp \\\n\t../lexers/LexKVIrc.cpp \\\n\t../lexers/LexLaTex.cpp \\\n\t../lexers/LexLisp.cpp \\\n\t../lexers/LexLout.cpp \\\n\t../lexers/LexLua.cpp \\\n\t../lexers/LexMagik.cpp \\\n\t../lexers/LexMake.cpp \\\n\t../lexers/LexMarkdown.cpp \\\n\t../lexers/LexMatlab.cpp \\\n\t../lexers/LexMetapost.cpp \\\n\t../lexers/LexMMIXAL.cpp \\\n\t../lexers/LexModula.cpp \\\n\t../lexers/LexMPT.cpp \\\n\t../lexers/LexMSSQL.cpp \\\n\t../lexers/LexMySQL.cpp \\\n\t../lexers/LexNimrod.cpp \\\n\t../lexers/LexNsis.cpp \\\n\t../lexers/LexNull.cpp \\\n\t../lexers/LexOpal.cpp \\\n\t../lexers/LexOScript.cpp \\\n\t../lexers/LexPascal.cpp \\\n\t../lexers/LexPB.cpp \\\n\t../lexers/LexPerl.cpp \\\n\t../lexers/LexPLM.cpp \\\n\t../lexers/LexPO.cpp \\\n\t../lexers/LexPOV.cpp \\\n\t../lexers/LexPowerPro.cpp \\\n\t../lexers/LexPowerShell.cpp \\\n\t../lexers/LexProgress.cpp \\\n\t../lexers/LexProps.cpp \\\n\t../lexers/LexPS.cpp \\\n\t../lexers/LexPython.cpp \\\n\t../lexers/LexR.cpp \\\n\t../lexers/LexRebol.cpp \\\n\t../lexers/LexRegistry.cpp \\\n\t../lexers/LexRuby.cpp \\\n\t../lexers/LexRust.cpp \\\n\t../lexers/LexScriptol.cpp \\\n\t../lexers/LexSmalltalk.cpp \\\n\t../lexers/LexSML.cpp \\\n\t../lexers/LexSorcus.cpp \\\n\t../lexers/LexSpecman.cpp \\\n\t../lexers/LexSpice.cpp \\\n\t../lexers/LexSQL.cpp \\\n\t../lexers/LexSTTXT.cpp \\\n\t../lexers/LexTACL.cpp \\\n\t../lexers/LexTADS3.cpp \\\n\t../lexers/LexTAL.cpp \\\n\t../lexers/LexTCL.cpp \\\n\t../lexers/LexTCMD.cpp \\\n\t../lexers/LexTeX.cpp \\\n\t../lexers/LexTxt2tags.cpp \\\n\t../lexers/LexVB.cpp \\\n\t../lexers/LexVerilog.cpp \\\n\t../lexers/LexVHDL.cpp \\\n\t../lexers/LexVisualProlog.cpp \\\n\t../lexers/LexYAML.cpp \\\n\t../lexlib/Accessor.cpp \\\n\t../lexlib/CharacterCategory.cpp \\\n\t../lexlib/CharacterSet.cpp \\\n\t../lexlib/LexerBase.cpp \\\n\t../lexlib/LexerModule.cpp \\\n\t../lexlib/LexerNoExceptions.cpp \\\n\t../lexlib/LexerSimple.cpp \\\n\t../lexlib/PropSetSimple.cpp \\\n\t../lexlib/StyleContext.cpp \\\n\t../lexlib/WordList.cpp \\\n\t../src/AutoComplete.cpp \\\n\t../src/CallTip.cpp \\\n\t../src/CaseConvert.cpp \\\n\t../src/CaseFolder.cpp \\\n\t../src/Catalogue.cpp \\\n\t../src/CellBuffer.cpp \\\n\t../src/CharClassify.cpp \\\n\t../src/ContractionState.cpp \\\n\t../src/Decoration.cpp \\\n\t../src/Document.cpp \\\n\t../src/EditModel.cpp \\\n\t../src/Editor.cpp \\\n\t../src/EditView.cpp \\\n\t../src/ExternalLexer.cpp \\\n\t../src/Indicator.cpp \\\n    ../src/KeyMap.cpp \\\n\t../src/LineMarker.cpp \\\n\t../src/MarginView.cpp \\\n\t../src/PerLine.cpp \\\n\t../src/PositionCache.cpp \\\n    ../src/RESearch.cpp \\\n\t../src/RunStyles.cpp \\\n    ../src/ScintillaBase.cpp \\\n    ../src/Selection.cpp \\\n\t../src/Style.cpp \\\n\t../src/UniConversion.cpp \\\n\t../src/ViewStyle.cpp \\\n\t../src/XPM.cpp\n\nTRANSLATIONS = \\\n\tqscintilla_cs.ts \\\n\tqscintilla_de.ts \\\n\tqscintilla_es.ts \\\n\tqscintilla_fr.ts \\\n\tqscintilla_pt_br.ts\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscintilla_cs.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"pt\">\n<context>\n    <name>QsciCommand</name>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"49\"/>\n        <source>Move down one line</source>\n        <translation>Posun o jednu řádku dolů</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"59\"/>\n        <source>Extend selection down one line</source>\n        <translation>Rozšířit výběr o jednu řádku dolů</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"76\"/>\n        <source>Scroll view down one line</source>\n        <translation>Rolovat pohled o jednu řádku dolů</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"69\"/>\n        <source>Extend rectangular selection down one line</source>\n        <translation>Rozšířit obdélníkový výběr o jednu řádku dolů</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"86\"/>\n        <source>Move up one line</source>\n        <translation>Posun o jednu řádku nahoru</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"96\"/>\n        <source>Extend selection up one line</source>\n        <translation>Rozšířit výběr o jednu řádku nahoru</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"113\"/>\n        <source>Scroll view up one line</source>\n        <translation>Rolovat pohled o jednu řádku nahoru</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"106\"/>\n        <source>Extend rectangular selection up one line</source>\n        <translation>Rozšířit obdélníkový výběr o jednu řádku nahoru</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"163\"/>\n        <source>Move up one paragraph</source>\n        <translation>Posun o jeden odstavec nahoru</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"169\"/>\n        <source>Extend selection up one paragraph</source>\n        <translation>Rozšířit výběr o jeden odstavec nahoru</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"150\"/>\n        <source>Move down one paragraph</source>\n        <translation>Posun o jeden odstavec dolů</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"123\"/>\n        <source>Scroll to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"133\"/>\n        <source>Scroll to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"143\"/>\n        <source>Scroll vertically to centre current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"156\"/>\n        <source>Extend selection down one paragraph</source>\n        <translation>Rozšířit výběr o jeden odstavec dolů</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"180\"/>\n        <source>Move left one character</source>\n        <translation>Posun o jedno písmeno doleva</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"190\"/>\n        <source>Extend selection left one character</source>\n        <translation>Rozšířit výběr o jedno písmeno doleva</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"244\"/>\n        <source>Move left one word</source>\n        <translation>Posun o jedno slovo vlevo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"254\"/>\n        <source>Extend selection left one word</source>\n        <translation>Rozšířit výběr o jedno slovo doleva</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"201\"/>\n        <source>Extend rectangular selection left one character</source>\n        <translation>Rozšířit obdélníkový výběr o jedno písmeno doleva</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"212\"/>\n        <source>Move right one character</source>\n        <translation>Posun o jedno písmeno doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"222\"/>\n        <source>Extend selection right one character</source>\n        <translation>Rozšířit výběr o jedno písmeno doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"264\"/>\n        <source>Move right one word</source>\n        <translation>Posun o jedno slovo doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"270\"/>\n        <source>Extend selection right one word</source>\n        <translation>Rozšířit výběr o jedno slovo doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"233\"/>\n        <source>Extend rectangular selection right one character</source>\n        <translation>Rozšířit obdélníkový výběr o jedno písmeno doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"276\"/>\n        <source>Move to end of previous word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"282\"/>\n        <source>Extend selection to end of previous word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"293\"/>\n        <source>Move to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"303\"/>\n        <source>Extend selection to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"310\"/>\n        <source>Move left one word part</source>\n        <translation>Posun o část slova doleva</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"316\"/>\n        <source>Extend selection left one word part</source>\n        <translation>Rozšířit výběr o část slova doleva</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"323\"/>\n        <source>Move right one word part</source>\n        <translation>Posun o část slova doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"329\"/>\n        <source>Extend selection right one word part</source>\n        <translation>Rozšířit výběr o část slova doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"559\"/>\n        <source>Move up one page</source>\n        <translation>Posun na předchozí stranu</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"565\"/>\n        <source>Extend selection up one page</source>\n        <translation>Rozšířit výběr na předchozí stranu</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"571\"/>\n        <source>Extend rectangular selection up one page</source>\n        <translation>Rozšířit obdélníkový výběr na předchozí stranu</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"582\"/>\n        <source>Move down one page</source>\n        <translation>Posun na další stranu</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"592\"/>\n        <source>Extend selection down one page</source>\n        <translation>Rozšířit výběr na další stranu</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"602\"/>\n        <source>Extend rectangular selection down one page</source>\n        <translation>Rozšířit obdélníkový výběr na další stranu</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"639\"/>\n        <source>Delete current character</source>\n        <translation>Smazat aktuální znak</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"769\"/>\n        <source>Cut selection</source>\n        <translation>Vyjmout výběr</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"668\"/>\n        <source>Delete word to right</source>\n        <translation>Smazat slovo doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"340\"/>\n        <source>Move to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"350\"/>\n        <source>Extend selection to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"361\"/>\n        <source>Extend rectangular selection to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"372\"/>\n        <source>Move to start of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"382\"/>\n        <source>Extend selection to start of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"389\"/>\n        <source>Move to start of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"396\"/>\n        <source>Extend selection to start of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"407\"/>\n        <source>Move to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"418\"/>\n        <source>Extend selection to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"429\"/>\n        <source>Extend rectangular selection to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"436\"/>\n        <source>Move to first visible character of display in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"443\"/>\n        <source>Extend selection to first visible character in display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"454\"/>\n        <source>Move to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"464\"/>\n        <source>Extend selection to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"475\"/>\n        <source>Extend rectangular selection to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"486\"/>\n        <source>Move to end of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"496\"/>\n        <source>Extend selection to end of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"503\"/>\n        <source>Move to end of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"510\"/>\n        <source>Extend selection to end of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"521\"/>\n        <source>Move to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"531\"/>\n        <source>Extend selection to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"542\"/>\n        <source>Move to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"552\"/>\n        <source>Extend selection to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"609\"/>\n        <source>Stuttered move up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"615\"/>\n        <source>Stuttered extend selection up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"622\"/>\n        <source>Stuttered move down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"628\"/>\n        <source>Stuttered extend selection down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"655\"/>\n        <source>Delete previous character if not at start of line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"678\"/>\n        <source>Delete right to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"695\"/>\n        <source>Delete line to right</source>\n        <translation>Smazat řádku doprava</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"719\"/>\n        <source>Transpose current and previous lines</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"726\"/>\n        <source>Duplicate the current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"732\"/>\n        <source>Select all</source>\n        <oldsource>Select document</oldsource>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"738\"/>\n        <source>Move selected lines up one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"744\"/>\n        <source>Move selected lines down one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"787\"/>\n        <source>Toggle insert/overtype</source>\n        <translation>Přepnout vkládání/přepisování</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"781\"/>\n        <source>Paste</source>\n        <translation>Vložit</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"775\"/>\n        <source>Copy selection</source>\n        <translation>Kopírovat výběr</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"793\"/>\n        <source>Insert newline</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"811\"/>\n        <source>De-indent one level</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"817\"/>\n        <source>Cancel</source>\n        <translation>Zrušit</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"649\"/>\n        <source>Delete previous character</source>\n        <translation>Smazat předchozí znak</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"662\"/>\n        <source>Delete word to left</source>\n        <translation>Smazat slovo doleva</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"685\"/>\n        <source>Delete line to left</source>\n        <translation>Smazat řádku doleva</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"823\"/>\n        <source>Undo last command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"833\"/>\n        <source>Redo last command</source>\n        <translation>Znovu použít poslední příkaz</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"805\"/>\n        <source>Indent one level</source>\n        <translation>Odsadit o jednu úroveň</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"839\"/>\n        <source>Zoom in</source>\n        <translation>Zvětšit</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"845\"/>\n        <source>Zoom out</source>\n        <translation>Zmenšit</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"799\"/>\n        <source>Formfeed</source>\n        <translation>Vysunout</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"707\"/>\n        <source>Cut current line</source>\n        <translation>Vyjmout aktuální řádku</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"701\"/>\n        <source>Delete current line</source>\n        <translation>Smazat aktuální řádku</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"713\"/>\n        <source>Copy current line</source>\n        <translation>Kopírovat aktuální řádku</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"757\"/>\n        <source>Convert selection to lower case</source>\n        <translation>Vybraný text převést na malá písmena</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"763\"/>\n        <source>Convert selection to upper case</source>\n        <translation>Vybraný text převést na velká písmena</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"751\"/>\n        <source>Duplicate selection</source>\n        <translation>Duplikovat výběr</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerAVS</name>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"280\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"283\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"286\"/>\n        <source>Nested block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"289\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"292\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"301\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\">String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"304\"/>\n        <source>Triple double-quoted string</source>\n        <translation type=\"unfinished\">String ve třech dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"307\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"310\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"313\"/>\n        <source>Plugin</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"316\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"319\"/>\n        <source>Clip property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"322\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBash</name>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"193\"/>\n        <source>Default</source>\n        <translation>Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"196\"/>\n        <source>Error</source>\n        <translation>Chyba</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"199\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"202\"/>\n        <source>Number</source>\n        <translation>Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"205\"/>\n        <source>Keyword</source>\n        <translation>Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"208\"/>\n        <source>Double-quoted string</source>\n        <translation>String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"211\"/>\n        <source>Single-quoted string</source>\n        <translation>String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"214\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"217\"/>\n        <source>Identifier</source>\n        <translation>Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"220\"/>\n        <source>Scalar</source>\n        <translation>Skalár</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"223\"/>\n        <source>Parameter expansion</source>\n        <translation>Rozklad parametru</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"226\"/>\n        <source>Backticks</source>\n        <translation>Zpětný chod</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"229\"/>\n        <source>Here document delimiter</source>\n        <translation>Zde je oddělovač dokumentu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"232\"/>\n        <source>Single-quoted here document</source>\n        <translation>Jednoduché uvozovky zde v dokumentu</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBatch</name>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"164\"/>\n        <source>Default</source>\n        <translation>Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"167\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"170\"/>\n        <source>Keyword</source>\n        <translation>Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"173\"/>\n        <source>Label</source>\n        <translation>Nadpis</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"176\"/>\n        <source>Hide command character</source>\n        <translation>Skrýt písmeno příkazu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"179\"/>\n        <source>External command</source>\n        <translation>Externí příkaz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"182\"/>\n        <source>Variable</source>\n        <translation>Proměnná</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"185\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCMake</name>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"180\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"183\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"186\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"189\"/>\n        <source>Left quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"192\"/>\n        <source>Right quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"195\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"198\"/>\n        <source>Variable</source>\n        <translation type=\"unfinished\">Proměnná</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"201\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\">Nadpis</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"204\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"207\"/>\n        <source>WHILE block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"210\"/>\n        <source>FOREACH block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"213\"/>\n        <source>IF block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"216\"/>\n        <source>MACRO block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"219\"/>\n        <source>Variable within a string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"222\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCPP</name>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"354\"/>\n        <source>Default</source>\n        <translation>Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"357\"/>\n        <source>Inactive default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"360\"/>\n        <source>C comment</source>\n        <translation>C komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"363\"/>\n        <source>Inactive C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"366\"/>\n        <source>C++ comment</source>\n        <translation>C++ komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"369\"/>\n        <source>Inactive C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"372\"/>\n        <source>JavaDoc style C comment</source>\n        <translation>JavaDoc styl C komentáře</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"375\"/>\n        <source>Inactive JavaDoc style C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"378\"/>\n        <source>Number</source>\n        <translation>Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"381\"/>\n        <source>Inactive number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"384\"/>\n        <source>Keyword</source>\n        <translation>Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"387\"/>\n        <source>Inactive keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"390\"/>\n        <source>Double-quoted string</source>\n        <translation>String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"393\"/>\n        <source>Inactive double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"396\"/>\n        <source>Single-quoted string</source>\n        <translation>String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"399\"/>\n        <source>Inactive single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"402\"/>\n        <source>IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"405\"/>\n        <source>Inactive IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"408\"/>\n        <source>Pre-processor block</source>\n        <translation>Pre-procesor blok</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"411\"/>\n        <source>Inactive pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"414\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"417\"/>\n        <source>Inactive operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"420\"/>\n        <source>Identifier</source>\n        <translation>Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"423\"/>\n        <source>Inactive identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"426\"/>\n        <source>Unclosed string</source>\n        <translation>Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"429\"/>\n        <source>Inactive unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"432\"/>\n        <source>C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"435\"/>\n        <source>Inactive C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"438\"/>\n        <source>JavaScript regular expression</source>\n        <translation type=\"unfinished\">JavaSript regulární výraz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"441\"/>\n        <source>Inactive JavaScript regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"444\"/>\n        <source>JavaDoc style C++ comment</source>\n        <translation>JavaDoc styl C++ komentáře</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"447\"/>\n        <source>Inactive JavaDoc style C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"450\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Sekundární klíčová slova a identifikátory</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"453\"/>\n        <source>Inactive secondary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"456\"/>\n        <source>JavaDoc keyword</source>\n        <translation>JavaDoc klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"459\"/>\n        <source>Inactive JavaDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"462\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>JavaDoc klíčové slovo chyby</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"465\"/>\n        <source>Inactive JavaDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"468\"/>\n        <source>Global classes and typedefs</source>\n        <translation>Globální třídy a definice typů</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"471\"/>\n        <source>Inactive global classes and typedefs</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"474\"/>\n        <source>C++ raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"477\"/>\n        <source>Inactive C++ raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"480\"/>\n        <source>Vala triple-quoted verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"483\"/>\n        <source>Inactive Vala triple-quoted verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"486\"/>\n        <source>Pike hash-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"489\"/>\n        <source>Inactive Pike hash-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"492\"/>\n        <source>Pre-processor C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"495\"/>\n        <source>Inactive pre-processor C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"498\"/>\n        <source>JavaDoc style pre-processor comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"501\"/>\n        <source>Inactive JavaDoc style pre-processor comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"504\"/>\n        <source>User-defined literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"507\"/>\n        <source>Inactive user-defined literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"510\"/>\n        <source>Task marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"513\"/>\n        <source>Inactive task marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"516\"/>\n        <source>Escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"519\"/>\n        <source>Inactive escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSS</name>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"225\"/>\n        <source>Tag</source>\n        <translation>Tag</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"228\"/>\n        <source>Class selector</source>\n        <translation>Selektor třídy</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"231\"/>\n        <source>Pseudo-class</source>\n        <translation>Pseudotřída</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"234\"/>\n        <source>Unknown pseudo-class</source>\n        <translation>Nedefinovaná pseudotřída</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"237\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"240\"/>\n        <source>CSS1 property</source>\n        <translation>CSS1 vlastnost</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"243\"/>\n        <source>Unknown property</source>\n        <translation>Nedefinovaná vlastnost</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"246\"/>\n        <source>Value</source>\n        <translation>Hodnota</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"249\"/>\n        <source>ID selector</source>\n        <translation>ID selektor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"252\"/>\n        <source>Important</source>\n        <translation>Important</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"255\"/>\n        <source>@-rule</source>\n        <translation>@-pravidlo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"258\"/>\n        <source>Double-quoted string</source>\n        <translation>String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"261\"/>\n        <source>Single-quoted string</source>\n        <translation>String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"264\"/>\n        <source>CSS2 property</source>\n        <translation>CSS2 vlastnost</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"267\"/>\n        <source>Attribute</source>\n        <translation>Atribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"270\"/>\n        <source>CSS3 property</source>\n        <translation type=\"unfinished\">CSS2 vlastnost {3 ?}</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"273\"/>\n        <source>Pseudo-element</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"276\"/>\n        <source>Extended CSS property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"279\"/>\n        <source>Extended pseudo-class</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"282\"/>\n        <source>Extended pseudo-element</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"285\"/>\n        <source>Media rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"288\"/>\n        <source>Variable</source>\n        <translation type=\"unfinished\">Proměnná</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSharp</name>\n    <message>\n        <location filename=\"qscilexercsharp.cpp\" line=\"95\"/>\n        <source>Verbatim string</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCoffeeScript</name>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"248\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"251\"/>\n        <source>C-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"254\"/>\n        <source>C++-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"257\"/>\n        <source>JavaDoc C-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"260\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"263\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"266\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\">String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"269\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\">String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"272\"/>\n        <source>IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"275\"/>\n        <source>Pre-processor block</source>\n        <translation type=\"unfinished\">Pre-procesor blok</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"278\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"281\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"284\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"287\"/>\n        <source>C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"290\"/>\n        <source>Regular expression</source>\n        <translation type=\"unfinished\">Regulární výraz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"293\"/>\n        <source>JavaDoc C++-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"296\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation type=\"unfinished\">Sekundární klíčová slova a identifikátory</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"299\"/>\n        <source>JavaDoc keyword</source>\n        <translation type=\"unfinished\">JavaDoc klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"302\"/>\n        <source>JavaDoc keyword error</source>\n        <translation type=\"unfinished\">JavaDoc klíčové slovo chyby</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"305\"/>\n        <source>Global classes</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"308\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"311\"/>\n        <source>Block regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"314\"/>\n        <source>Block regular expression comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"317\"/>\n        <source>Instance property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerD</name>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"259\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"262\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"265\"/>\n        <source>DDoc style block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"268\"/>\n        <source>Nesting comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"271\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"274\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"277\"/>\n        <source>Secondary keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"280\"/>\n        <source>Documentation keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"283\"/>\n        <source>Type definition</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"286\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"289\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"292\"/>\n        <source>Character</source>\n        <translation type=\"unfinished\">Znak</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"301\"/>\n        <source>DDoc style line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"304\"/>\n        <source>DDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"307\"/>\n        <source>DDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"310\"/>\n        <source>Backquoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"313\"/>\n        <source>Raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"316\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\">Definováno uživatelem 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"319\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\">Definováno uživatelem 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"322\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\">Definováno uživatelem 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerDiff</name>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"92\"/>\n        <source>Default</source>\n        <translation>Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"95\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"98\"/>\n        <source>Command</source>\n        <translation>Příkaz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"101\"/>\n        <source>Header</source>\n        <translation>Hlavička</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"104\"/>\n        <source>Position</source>\n        <translation>Pozice</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"107\"/>\n        <source>Removed line</source>\n        <translation>Odebraná řádka</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"110\"/>\n        <source>Added line</source>\n        <translation>Přidaná řádka</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"113\"/>\n        <source>Changed line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerFortran77</name>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"175\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"178\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"181\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"184\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\">String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"187\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\">String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"190\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"193\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"196\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"199\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"202\"/>\n        <source>Intrinsic function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"205\"/>\n        <source>Extended function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"208\"/>\n        <source>Pre-processor block</source>\n        <translation type=\"unfinished\">Pre-procesor blok</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"211\"/>\n        <source>Dotted operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"214\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\">Nadpis</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"217\"/>\n        <source>Continuation</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerHTML</name>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"553\"/>\n        <source>HTML default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"556\"/>\n        <source>Tag</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"559\"/>\n        <source>Unknown tag</source>\n        <translation>Nedefinovaný tag</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"562\"/>\n        <source>Attribute</source>\n        <translation>Atribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"565\"/>\n        <source>Unknown attribute</source>\n        <translation>Nedefinovaný atribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"568\"/>\n        <source>HTML number</source>\n        <translation>HTML číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"571\"/>\n        <source>HTML double-quoted string</source>\n        <translation>HTML string ve dojtých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"574\"/>\n        <source>HTML single-quoted string</source>\n        <translation>HTML string v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"577\"/>\n        <source>Other text in a tag</source>\n        <translation>Další text v tagu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"580\"/>\n        <source>HTML comment</source>\n        <translation>HTML komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"583\"/>\n        <source>Entity</source>\n        <translation>Entita</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"586\"/>\n        <source>End of a tag</source>\n        <translation>Konec tagu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"589\"/>\n        <source>Start of an XML fragment</source>\n        <translation>Začátek XML části</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"592\"/>\n        <source>End of an XML fragment</source>\n        <translation>Konec XML části</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"595\"/>\n        <source>Script tag</source>\n        <translation>Tag skriptu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"598\"/>\n        <source>Start of an ASP fragment with @</source>\n        <translation>Začátek ASP kódu s @</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"601\"/>\n        <source>Start of an ASP fragment</source>\n        <translation>Začátek ASP kódu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"604\"/>\n        <source>CDATA</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"607\"/>\n        <source>Start of a PHP fragment</source>\n        <translation>Začátek PHP kódu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"610\"/>\n        <source>Unquoted HTML value</source>\n        <translation>HTML hodnota bez uvozovek</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"613\"/>\n        <source>ASP X-Code comment</source>\n        <translation>ASP X-Code komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"616\"/>\n        <source>SGML default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"619\"/>\n        <source>SGML command</source>\n        <translation>SGML příkaz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"622\"/>\n        <source>First parameter of an SGML command</source>\n        <translation>První parametr v SGML příkazu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"625\"/>\n        <source>SGML double-quoted string</source>\n        <translation>SGML string ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"628\"/>\n        <source>SGML single-quoted string</source>\n        <translation>SGML string v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"631\"/>\n        <source>SGML error</source>\n        <translation>SGML chyba</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"634\"/>\n        <source>SGML special entity</source>\n        <translation>SGML speciální entita</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"637\"/>\n        <source>SGML comment</source>\n        <translation>SGML komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"640\"/>\n        <source>First parameter comment of an SGML command</source>\n        <translation>Komentář prvního parametru SGML příkazu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"643\"/>\n        <source>SGML block default</source>\n        <translation>SGML defaultní blok</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"646\"/>\n        <source>Start of a JavaScript fragment</source>\n        <translation>Začátek JavaScript kódu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"649\"/>\n        <source>JavaScript default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"652\"/>\n        <source>JavaScript comment</source>\n        <translation>JavaScript komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"655\"/>\n        <source>JavaScript line comment</source>\n        <translation>JavaScript jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"658\"/>\n        <source>JavaDoc style JavaScript comment</source>\n        <translation>JavaDoc styl JavaScript komentáře</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"661\"/>\n        <source>JavaScript number</source>\n        <translation>JavaScript číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"664\"/>\n        <source>JavaScript word</source>\n        <translation>JavaSript slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"667\"/>\n        <source>JavaScript keyword</source>\n        <translation>JavaSript klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"670\"/>\n        <source>JavaScript double-quoted string</source>\n        <translation>JavaSript string ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"673\"/>\n        <source>JavaScript single-quoted string</source>\n        <translation>JavaSript string v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"676\"/>\n        <source>JavaScript symbol</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"679\"/>\n        <source>JavaScript unclosed string</source>\n        <translation>JavaSript neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"682\"/>\n        <source>JavaScript regular expression</source>\n        <translation>JavaSript regulární výraz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"685\"/>\n        <source>Start of an ASP JavaScript fragment</source>\n        <translation>Začátek ASP JavaScript kódu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"688\"/>\n        <source>ASP JavaScript default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"691\"/>\n        <source>ASP JavaScript comment</source>\n        <translation>ASP JavaScript komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"694\"/>\n        <source>ASP JavaScript line comment</source>\n        <translation>ASP JavaScript jednořádkový komenář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"697\"/>\n        <source>JavaDoc style ASP JavaScript comment</source>\n        <translation>JavaDoc styl ASP JavaScript komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"700\"/>\n        <source>ASP JavaScript number</source>\n        <translation>ASP JavaScript číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"703\"/>\n        <source>ASP JavaScript word</source>\n        <translation>ASP JavaScript slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"706\"/>\n        <source>ASP JavaScript keyword</source>\n        <translation>ASP JavaScript klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"709\"/>\n        <source>ASP JavaScript double-quoted string</source>\n        <translation>ASP JavaScript string ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"712\"/>\n        <source>ASP JavaScript single-quoted string</source>\n        <translation>ASP JavaScript v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"715\"/>\n        <source>ASP JavaScript symbol</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"718\"/>\n        <source>ASP JavaScript unclosed string</source>\n        <translation>ASP JavaScript neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"721\"/>\n        <source>ASP JavaScript regular expression</source>\n        <translation>ASP JavaScript regulární výraz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"724\"/>\n        <source>Start of a VBScript fragment</source>\n        <translation>Začátek VBScript kódu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"727\"/>\n        <source>VBScript default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"730\"/>\n        <source>VBScript comment</source>\n        <translation>VBScript komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"733\"/>\n        <source>VBScript number</source>\n        <translation>VBScript číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"736\"/>\n        <source>VBScript keyword</source>\n        <translation>VBScript klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"739\"/>\n        <source>VBScript string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"742\"/>\n        <source>VBScript identifier</source>\n        <translation>VBScript identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"745\"/>\n        <source>VBScript unclosed string</source>\n        <translation>VBScript neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"748\"/>\n        <source>Start of an ASP VBScript fragment</source>\n        <translation>Začátek ASP VBScript kódu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"751\"/>\n        <source>ASP VBScript default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"754\"/>\n        <source>ASP VBScript comment</source>\n        <translation>ASP VBScript komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"757\"/>\n        <source>ASP VBScript number</source>\n        <translation>ASP VBScript číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"760\"/>\n        <source>ASP VBScript keyword</source>\n        <translation>ASP VBScript klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"763\"/>\n        <source>ASP VBScript string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"766\"/>\n        <source>ASP VBScript identifier</source>\n        <translation>ASP VBScript identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"769\"/>\n        <source>ASP VBScript unclosed string</source>\n        <translation>ASP VBScript neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"772\"/>\n        <source>Start of a Python fragment</source>\n        <translation>Začátek Python kódu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"775\"/>\n        <source>Python default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"778\"/>\n        <source>Python comment</source>\n        <translation>Python komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"781\"/>\n        <source>Python number</source>\n        <translation>Python číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"784\"/>\n        <source>Python double-quoted string</source>\n        <translation>Python string ve dojtých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"787\"/>\n        <source>Python single-quoted string</source>\n        <translation>Python string v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"790\"/>\n        <source>Python keyword</source>\n        <translation>Python klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"793\"/>\n        <source>Python triple double-quoted string</source>\n        <translation>Python string ve třech dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"796\"/>\n        <source>Python triple single-quoted string</source>\n        <translation>Python ve třech jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"799\"/>\n        <source>Python class name</source>\n        <translation>Python jméno třídy</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"802\"/>\n        <source>Python function or method name</source>\n        <translation>Python jméno funkce nebo metody</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"805\"/>\n        <source>Python operator</source>\n        <translation>Python operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"808\"/>\n        <source>Python identifier</source>\n        <translation>Python identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"811\"/>\n        <source>Start of an ASP Python fragment</source>\n        <translation>Začátek ASP Python kódu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"814\"/>\n        <source>ASP Python default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"817\"/>\n        <source>ASP Python comment</source>\n        <translation>ASP Python komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"820\"/>\n        <source>ASP Python number</source>\n        <translation>ASP Python číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"823\"/>\n        <source>ASP Python double-quoted string</source>\n        <translation>ASP Python string ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"826\"/>\n        <source>ASP Python single-quoted string</source>\n        <translation>ASP Python v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"829\"/>\n        <source>ASP Python keyword</source>\n        <translation>ASP Python klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"832\"/>\n        <source>ASP Python triple double-quoted string</source>\n        <translation>ASP Python ve třech dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"835\"/>\n        <source>ASP Python triple single-quoted string</source>\n        <translation>ASP Python ve třech jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"838\"/>\n        <source>ASP Python class name</source>\n        <translation>ASP Python jméno třídy</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"841\"/>\n        <source>ASP Python function or method name</source>\n        <translation>ASP Python jméno funkce  nebo metody</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"844\"/>\n        <source>ASP Python operator</source>\n        <translation>ASP Python operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"847\"/>\n        <source>ASP Python identifier</source>\n        <translation>ASP Python identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"850\"/>\n        <source>PHP default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"853\"/>\n        <source>PHP double-quoted string</source>\n        <translation>PHP string ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"856\"/>\n        <source>PHP single-quoted string</source>\n        <translation>PHP v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"859\"/>\n        <source>PHP keyword</source>\n        <translation>PHP klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"862\"/>\n        <source>PHP number</source>\n        <translation>PHP číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"865\"/>\n        <source>PHP variable</source>\n        <translation>PHP proměnná</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"868\"/>\n        <source>PHP comment</source>\n        <translation>PHP komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"871\"/>\n        <source>PHP line comment</source>\n        <translation>PHP jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"874\"/>\n        <source>PHP double-quoted variable</source>\n        <translation>PHP proměnná ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"877\"/>\n        <source>PHP operator</source>\n        <translation>PHP operátor</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerIDL</name>\n    <message>\n        <location filename=\"qscilexeridl.cpp\" line=\"87\"/>\n        <source>UUID</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJSON</name>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"150\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"153\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"156\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"159\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"162\"/>\n        <source>Property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"165\"/>\n        <source>Escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"168\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"171\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"174\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"177\"/>\n        <source>IRI</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"180\"/>\n        <source>JSON-LD compact IRI</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"183\"/>\n        <source>JSON keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"186\"/>\n        <source>JSON-LD keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"189\"/>\n        <source>Parsing error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJavaScript</name>\n    <message>\n        <location filename=\"qscilexerjavascript.cpp\" line=\"97\"/>\n        <source>Regular expression</source>\n        <translation>Regulární výraz</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerLua</name>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"217\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"220\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"223\"/>\n        <source>Line comment</source>\n        <translation>Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"226\"/>\n        <source>Number</source>\n        <translation>Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"229\"/>\n        <source>Keyword</source>\n        <translation>Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"232\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"235\"/>\n        <source>Character</source>\n        <translation>Znak</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"238\"/>\n        <source>Literal string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"241\"/>\n        <source>Preprocessor</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"244\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"247\"/>\n        <source>Identifier</source>\n        <translation>Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"250\"/>\n        <source>Unclosed string</source>\n        <translation>Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"253\"/>\n        <source>Basic functions</source>\n        <translation>Základní funkce</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"256\"/>\n        <source>String, table and maths functions</source>\n        <translation>String, tabulka a matematické funkce</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"259\"/>\n        <source>Coroutines, i/o and system facilities</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"262\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\">Definováno uživatelem 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"265\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\">Definováno uživatelem 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"268\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\">Definováno uživatelem 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"271\"/>\n        <source>User defined 4</source>\n        <translation type=\"unfinished\">Definováno uživatelem 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"274\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\">Nadpis</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMakefile</name>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"116\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"119\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"122\"/>\n        <source>Preprocessor</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"125\"/>\n        <source>Variable</source>\n        <translation>Proměnná</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"128\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"131\"/>\n        <source>Target</source>\n        <translation>Cíl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"134\"/>\n        <source>Error</source>\n        <translation>Chyba</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMarkdown</name>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"212\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"215\"/>\n        <source>Special</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"218\"/>\n        <source>Strong emphasis using double asterisks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"221\"/>\n        <source>Strong emphasis using double underscores</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"224\"/>\n        <source>Emphasis using single asterisks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"227\"/>\n        <source>Emphasis using single underscores</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"230\"/>\n        <source>Level 1 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"233\"/>\n        <source>Level 2 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"236\"/>\n        <source>Level 3 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"239\"/>\n        <source>Level 4 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"242\"/>\n        <source>Level 5 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"245\"/>\n        <source>Level 6 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"248\"/>\n        <source>Pre-char</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"251\"/>\n        <source>Unordered list item</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"254\"/>\n        <source>Ordered list item</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"257\"/>\n        <source>Block quote</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"260\"/>\n        <source>Strike out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"263\"/>\n        <source>Horizontal rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"266\"/>\n        <source>Link</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"269\"/>\n        <source>Code between backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"272\"/>\n        <source>Code between double backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"275\"/>\n        <source>Code block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMatlab</name>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"123\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"126\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"129\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\">Příkaz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"132\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"135\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"138\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\">String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"141\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"144\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"147\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\">String ve dvojitých uvozovkách</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPO</name>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"89\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"92\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"95\"/>\n        <source>Message identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"98\"/>\n        <source>Message identifier text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"101\"/>\n        <source>Message string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"104\"/>\n        <source>Message string text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"107\"/>\n        <source>Message context</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"110\"/>\n        <source>Message context text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"113\"/>\n        <source>Fuzzy flag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"116\"/>\n        <source>Programmer comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"119\"/>\n        <source>Reference</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"122\"/>\n        <source>Flags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"125\"/>\n        <source>Message identifier text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"128\"/>\n        <source>Message string text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"131\"/>\n        <source>Message context text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPOV</name>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"267\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"270\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"273\"/>\n        <source>Comment line</source>\n        <translation>Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"276\"/>\n        <source>Number</source>\n        <translation>Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"279\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"282\"/>\n        <source>Identifier</source>\n        <translation>Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"285\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"288\"/>\n        <source>Unclosed string</source>\n        <translation>Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"291\"/>\n        <source>Directive</source>\n        <translation>Direktiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"294\"/>\n        <source>Bad directive</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"297\"/>\n        <source>Objects, CSG and appearance</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"300\"/>\n        <source>Types, modifiers and items</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"303\"/>\n        <source>Predefined identifiers</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"306\"/>\n        <source>Predefined functions</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"309\"/>\n        <source>User defined 1</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"312\"/>\n        <source>User defined 2</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"315\"/>\n        <source>User defined 3</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPascal</name>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"246\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"258\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"267\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"273\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"276\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\">String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"285\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"249\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"252\"/>\n        <source>&apos;{ ... }&apos; style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"255\"/>\n        <source>&apos;(* ... *)&apos; style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"261\"/>\n        <source>&apos;{$ ... }&apos; style pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"264\"/>\n        <source>&apos;(*$ ... *)&apos; style pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"270\"/>\n        <source>Hexadecimal number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"279\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"282\"/>\n        <source>Character</source>\n        <translation type=\"unfinished\">Znak</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"288\"/>\n        <source>Inline asm</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPerl</name>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"318\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"321\"/>\n        <source>Error</source>\n        <translation>Chyba</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"324\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"327\"/>\n        <source>POD</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"330\"/>\n        <source>Number</source>\n        <translation>Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"333\"/>\n        <source>Keyword</source>\n        <translation>Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"336\"/>\n        <source>Double-quoted string</source>\n        <translation>String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"339\"/>\n        <source>Single-quoted string</source>\n        <translation>String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"342\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"345\"/>\n        <source>Identifier</source>\n        <translation>Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"348\"/>\n        <source>Scalar</source>\n        <translation>Skalár</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"351\"/>\n        <source>Array</source>\n        <translation>Pole</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"354\"/>\n        <source>Hash</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"357\"/>\n        <source>Symbol table</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"360\"/>\n        <source>Regular expression</source>\n        <translation>Regulární výraz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"363\"/>\n        <source>Substitution</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"366\"/>\n        <source>Backticks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"369\"/>\n        <source>Data section</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"372\"/>\n        <source>Here document delimiter</source>\n        <translation>Zde je oddělovač dokumentu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"375\"/>\n        <source>Single-quoted here document</source>\n        <translation>Zde je dokument v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"378\"/>\n        <source>Double-quoted here document</source>\n        <translation>Zde je dokument ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"381\"/>\n        <source>Backtick here document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"384\"/>\n        <source>Quoted string (q)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"387\"/>\n        <source>Quoted string (qq)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"390\"/>\n        <source>Quoted string (qx)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"393\"/>\n        <source>Quoted string (qr)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"396\"/>\n        <source>Quoted string (qw)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"399\"/>\n        <source>POD verbatim</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"402\"/>\n        <source>Subroutine prototype</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"405\"/>\n        <source>Format identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"408\"/>\n        <source>Format body</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"411\"/>\n        <source>Double-quoted string (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"414\"/>\n        <source>Translation</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"417\"/>\n        <source>Regular expression (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"420\"/>\n        <source>Substitution (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"423\"/>\n        <source>Backticks (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"426\"/>\n        <source>Double-quoted here document (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"429\"/>\n        <source>Backtick here document (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"432\"/>\n        <source>Quoted string (qq, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"435\"/>\n        <source>Quoted string (qx, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"438\"/>\n        <source>Quoted string (qr, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPostScript</name>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"249\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"252\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"255\"/>\n        <source>DSC comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"258\"/>\n        <source>DSC comment value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"261\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"264\"/>\n        <source>Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"267\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"270\"/>\n        <source>Literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"273\"/>\n        <source>Immediately evaluated literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"276\"/>\n        <source>Array parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"279\"/>\n        <source>Dictionary parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"282\"/>\n        <source>Procedure parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"285\"/>\n        <source>Text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"288\"/>\n        <source>Hexadecimal string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"291\"/>\n        <source>Base85 string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"294\"/>\n        <source>Bad string character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerProperties</name>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"110\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"113\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"116\"/>\n        <source>Section</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"119\"/>\n        <source>Assignment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"122\"/>\n        <source>Default value</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"125\"/>\n        <source>Key</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPython</name>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"225\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"228\"/>\n        <source>Number</source>\n        <translation>Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"231\"/>\n        <source>Double-quoted string</source>\n        <translation>String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"234\"/>\n        <source>Single-quoted string</source>\n        <translation>String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"237\"/>\n        <source>Keyword</source>\n        <translation>Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"240\"/>\n        <source>Triple single-quoted string</source>\n        <translation>String ve třech jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"243\"/>\n        <source>Triple double-quoted string</source>\n        <translation>String ve třech dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"246\"/>\n        <source>Class name</source>\n        <translation>Jméno třídy</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"249\"/>\n        <source>Function or method name</source>\n        <translation>Jméno funkce nebo metody</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"252\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"255\"/>\n        <source>Identifier</source>\n        <translation>Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"258\"/>\n        <source>Comment block</source>\n        <translation>Blok komentáře</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"261\"/>\n        <source>Unclosed string</source>\n        <translation>Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"264\"/>\n        <source>Highlighted identifier</source>\n        <translation>Zvýrazněný identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"267\"/>\n        <source>Decorator</source>\n        <translation>Dekorátor</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerRuby</name>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"238\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"244\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"250\"/>\n        <source>Number</source>\n        <translation>Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"256\"/>\n        <source>Double-quoted string</source>\n        <translation>String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"259\"/>\n        <source>Single-quoted string</source>\n        <translation>String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"253\"/>\n        <source>Keyword</source>\n        <translation>Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"262\"/>\n        <source>Class name</source>\n        <translation>Jméno třídy</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"265\"/>\n        <source>Function or method name</source>\n        <translation>Jméno funkce nebo metody</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"268\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"271\"/>\n        <source>Identifier</source>\n        <translation>Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"241\"/>\n        <source>Error</source>\n        <translation>Chyba</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"247\"/>\n        <source>POD</source>\n        <translation>POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"274\"/>\n        <source>Regular expression</source>\n        <translation>Regulární výraz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"277\"/>\n        <source>Global</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"280\"/>\n        <source>Symbol</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"283\"/>\n        <source>Module name</source>\n        <translation>Jméno modulu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"286\"/>\n        <source>Instance variable</source>\n        <translation>Proměnná instance</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"289\"/>\n        <source>Class variable</source>\n        <translation>Proměnná třídy</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"292\"/>\n        <source>Backticks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"295\"/>\n        <source>Data section</source>\n        <translation>Datová sekce</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"298\"/>\n        <source>Here document delimiter</source>\n        <translation>Zde je oddělovač dokumentu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"301\"/>\n        <source>Here document</source>\n        <translation>Zde je dokument</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"304\"/>\n        <source>%q string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"307\"/>\n        <source>%Q string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"310\"/>\n        <source>%x string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"313\"/>\n        <source>%r string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"316\"/>\n        <source>%w string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"319\"/>\n        <source>Demoted keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"322\"/>\n        <source>stdin</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"325\"/>\n        <source>stdout</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"328\"/>\n        <source>stderr</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSQL</name>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"259\"/>\n        <source>Comment</source>\n        <translation>Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"268\"/>\n        <source>Number</source>\n        <translation>Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"271\"/>\n        <source>Keyword</source>\n        <translation>Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"277\"/>\n        <source>Single-quoted string</source>\n        <translation>String v jednoduchých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"286\"/>\n        <source>Operator</source>\n        <translation>Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"289\"/>\n        <source>Identifier</source>\n        <translation>Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"262\"/>\n        <source>Comment line</source>\n        <translation>Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"265\"/>\n        <source>JavaDoc style comment</source>\n        <translation>JavaDoc styl komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"274\"/>\n        <source>Double-quoted string</source>\n        <translation>String ve dvojitých uvozovkách</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"280\"/>\n        <source>SQL*Plus keyword</source>\n        <translation>SQL*Plus klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"283\"/>\n        <source>SQL*Plus prompt</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"292\"/>\n        <source>SQL*Plus comment</source>\n        <translation>SQL*Plus komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"295\"/>\n        <source># comment line</source>\n        <translation># jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"298\"/>\n        <source>JavaDoc keyword</source>\n        <translation>JavaDoc klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"301\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>JavaDoc klíčové slovo chyby</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"304\"/>\n        <source>User defined 1</source>\n        <translation>Definováno uživatelem 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"307\"/>\n        <source>User defined 2</source>\n        <translation>Definováno uživatelem 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"310\"/>\n        <source>User defined 3</source>\n        <translation>Definováno uživatelem 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"313\"/>\n        <source>User defined 4</source>\n        <translation>Definováno uživatelem 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"316\"/>\n        <source>Quoted identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"319\"/>\n        <source>Quoted operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSpice</name>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"156\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"159\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"162\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\">Příkaz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"165\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"168\"/>\n        <source>Parameter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"171\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"174\"/>\n        <source>Delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"177\"/>\n        <source>Value</source>\n        <translation type=\"unfinished\">Hodnota</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"180\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTCL</name>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"282\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"285\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"288\"/>\n        <source>Comment line</source>\n        <translation type=\"unfinished\">Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"291\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"294\"/>\n        <source>Quoted keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"297\"/>\n        <source>Quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"300\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"303\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"306\"/>\n        <source>Substitution</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"309\"/>\n        <source>Brace substitution</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"312\"/>\n        <source>Modifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"315\"/>\n        <source>Expand keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"318\"/>\n        <source>TCL keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"321\"/>\n        <source>Tk keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"324\"/>\n        <source>iTCL keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"327\"/>\n        <source>Tk command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"330\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\">Definováno uživatelem 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"333\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\">Definováno uživatelem 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"336\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\">Definováno uživatelem 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"339\"/>\n        <source>User defined 4</source>\n        <translation type=\"unfinished\">Definováno uživatelem 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"342\"/>\n        <source>Comment box</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"345\"/>\n        <source>Comment block</source>\n        <translation type=\"unfinished\">Blok komentáře</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTeX</name>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"177\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"180\"/>\n        <source>Special</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"183\"/>\n        <source>Group</source>\n        <translation>Skupina</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"186\"/>\n        <source>Symbol</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"189\"/>\n        <source>Command</source>\n        <translation>Příkaz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"192\"/>\n        <source>Text</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVHDL</name>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"197\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"200\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"203\"/>\n        <source>Comment line</source>\n        <translation type=\"unfinished\">Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"206\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"209\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"212\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"215\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"218\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"221\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"224\"/>\n        <source>Standard operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"227\"/>\n        <source>Attribute</source>\n        <translation type=\"unfinished\">Atribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"230\"/>\n        <source>Standard function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"233\"/>\n        <source>Standard package</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"236\"/>\n        <source>Standard type</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"239\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"242\"/>\n        <source>Comment block</source>\n        <translation type=\"unfinished\">Blok komentáře</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVerilog</name>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"286\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"289\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"292\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Jednořádkový komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"295\"/>\n        <source>Bang comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"298\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"301\"/>\n        <source>Primary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"304\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"307\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation type=\"unfinished\">Sekundární klíčová slova a identifikátory</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"310\"/>\n        <source>System task</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"313\"/>\n        <source>Preprocessor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"316\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"319\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"322\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Neuzavřený string</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"325\"/>\n        <source>User defined tasks and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"328\"/>\n        <source>Keyword comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"331\"/>\n        <source>Inactive keyword comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"334\"/>\n        <source>Input port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"337\"/>\n        <source>Inactive input port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"340\"/>\n        <source>Output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"343\"/>\n        <source>Inactive output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"346\"/>\n        <source>Input/output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"349\"/>\n        <source>Inactive input/output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"352\"/>\n        <source>Port connection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"355\"/>\n        <source>Inactive port connection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerYAML</name>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"160\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Default</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"163\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Komentář</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"166\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identifikátor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"169\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Klíčové slovo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"172\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Číslo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"175\"/>\n        <source>Reference</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"178\"/>\n        <source>Document delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"181\"/>\n        <source>Text block marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"184\"/>\n        <source>Syntax error marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"187\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operátor</translation>\n    </message>\n</context>\n<context>\n    <name>QsciScintilla</name>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4404\"/>\n        <source>&amp;Undo</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4408\"/>\n        <source>&amp;Redo</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4414\"/>\n        <source>Cu&amp;t</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4419\"/>\n        <source>&amp;Copy</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4425\"/>\n        <source>&amp;Paste</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4429\"/>\n        <source>Delete</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4436\"/>\n        <source>Select All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscintilla_de.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"de\">\n<context>\n    <name>QsciCommand</name>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"180\"/>\n        <source>Move left one character</source>\n        <translation>Ein Zeichen nach links</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"212\"/>\n        <source>Move right one character</source>\n        <translation>Ein Zeichen nach rechts</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"86\"/>\n        <source>Move up one line</source>\n        <translation>Eine Zeile nach oben</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"49\"/>\n        <source>Move down one line</source>\n        <translation>Eine Zeile nach unten</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"310\"/>\n        <source>Move left one word part</source>\n        <translation>Ein Wortteil nach links</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"323\"/>\n        <source>Move right one word part</source>\n        <translation>Ein Wortteil nach rechts</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"244\"/>\n        <source>Move left one word</source>\n        <translation>Ein Wort nach links</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"264\"/>\n        <source>Move right one word</source>\n        <translation>Ein Wort nach rechts</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"76\"/>\n        <source>Scroll view down one line</source>\n        <translation>Eine Zeile nach unten rollen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"113\"/>\n        <source>Scroll view up one line</source>\n        <translation>Eine Zeile nach oben rollen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"559\"/>\n        <source>Move up one page</source>\n        <translation>Eine Seite hoch</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"582\"/>\n        <source>Move down one page</source>\n        <translation>Eine Seite nach unten</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"805\"/>\n        <source>Indent one level</source>\n        <translation>Eine Ebene einrücken</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"190\"/>\n        <source>Extend selection left one character</source>\n        <translation>Auswahl um ein Zeichen nach links erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"222\"/>\n        <source>Extend selection right one character</source>\n        <translation>Auswahl um ein Zeichen nach rechts erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"96\"/>\n        <source>Extend selection up one line</source>\n        <translation>Auswahl um eine Zeile nach oben erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"59\"/>\n        <source>Extend selection down one line</source>\n        <translation>Auswahl um eine Zeile nach unten erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"316\"/>\n        <source>Extend selection left one word part</source>\n        <translation>Auswahl um einen Wortteil nach links erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"329\"/>\n        <source>Extend selection right one word part</source>\n        <translation>Auswahl um einen Wortteil nach rechts erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"254\"/>\n        <source>Extend selection left one word</source>\n        <translation>Auswahl um ein Wort nach links erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"270\"/>\n        <source>Extend selection right one word</source>\n        <translation>Auswahl um ein Wort nach rechts erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"565\"/>\n        <source>Extend selection up one page</source>\n        <translation>Auswahl um eine Seite nach oben erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"592\"/>\n        <source>Extend selection down one page</source>\n        <translation>Auswahl um eine Seite nach unten erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"649\"/>\n        <source>Delete previous character</source>\n        <translation>Zeichen links löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"639\"/>\n        <source>Delete current character</source>\n        <translation>Aktuelles Zeichen löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"662\"/>\n        <source>Delete word to left</source>\n        <translation>Wort links löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"668\"/>\n        <source>Delete word to right</source>\n        <translation>Wort rechts löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"685\"/>\n        <source>Delete line to left</source>\n        <translation>Zeile links löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"695\"/>\n        <source>Delete line to right</source>\n        <translation>Zeile rechts löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"701\"/>\n        <source>Delete current line</source>\n        <translation>Aktuelle Zeile löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"707\"/>\n        <source>Cut current line</source>\n        <translation>Aktuelle Zeile ausschneiden</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"769\"/>\n        <source>Cut selection</source>\n        <translation>Auswahl ausschneiden</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"775\"/>\n        <source>Copy selection</source>\n        <translation>Auswahl kopieren</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"781\"/>\n        <source>Paste</source>\n        <translation>Einfügen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"833\"/>\n        <source>Redo last command</source>\n        <translation>Letzten Befehl wiederholen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"817\"/>\n        <source>Cancel</source>\n        <translation>Abbrechen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"787\"/>\n        <source>Toggle insert/overtype</source>\n        <translation>Einfügen/Überschreiben umschalten</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"123\"/>\n        <source>Scroll to start of document</source>\n        <translation>Zum Dokumentenanfang rollen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"133\"/>\n        <source>Scroll to end of document</source>\n        <translation>Zum Dokumentenende rollen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"143\"/>\n        <source>Scroll vertically to centre current line</source>\n        <translation>Vertical rollen, um aktuelle Zeile zu zentrieren</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"276\"/>\n        <source>Move to end of previous word</source>\n        <translation>Zum Ende des vorigen Wortes springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"282\"/>\n        <source>Extend selection to end of previous word</source>\n        <translation>Auswahl bis zum Ende des vorigen Wortes erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"293\"/>\n        <source>Move to end of next word</source>\n        <translation>Zum Ende des nächsten Wortes springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"303\"/>\n        <source>Extend selection to end of next word</source>\n        <translation>Auswahl bis zum Ende des nächsten Wortes erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"340\"/>\n        <source>Move to start of document line</source>\n        <translation>Zum Beginn der Dokumentenzeile springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"350\"/>\n        <source>Extend selection to start of document line</source>\n        <translation>Auswahl zum Beginn der Dokumentenzeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"361\"/>\n        <source>Extend rectangular selection to start of document line</source>\n        <translation>Rechteckige Auswahl zum Beginn der Dokumentenzeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"372\"/>\n        <source>Move to start of display line</source>\n        <translation>Zum Beginn der Anzeigezeile springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"382\"/>\n        <source>Extend selection to start of display line</source>\n        <translation>Auswahl zum Beginn der Anzeigezeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"389\"/>\n        <source>Move to start of display or document line</source>\n        <translation>Zum Beginn der Dokumenten- oder Anzeigezeile springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"396\"/>\n        <source>Extend selection to start of display or document line</source>\n        <translation>Rechteckige Auswahl zum Beginn der Dokumenten- oder Anzeigezeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"407\"/>\n        <source>Move to first visible character in document line</source>\n        <translation>Zum ersten sichtbaren Zeichen der Dokumentzeile springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"418\"/>\n        <source>Extend selection to first visible character in document line</source>\n        <translation>Auswahl zum ersten sichtbaren Zeichen der Dokumentzeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"429\"/>\n        <source>Extend rectangular selection to first visible character in document line</source>\n        <translation>Rechteckige Auswahl zum ersten sichtbaren Zeichen der Dokumentzeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"436\"/>\n        <source>Move to first visible character of display in document line</source>\n        <translation>Zum ersten angezeigten Zeichen der Dokumentzeile springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"443\"/>\n        <source>Extend selection to first visible character in display or document line</source>\n        <translation>Auswahl zum ersten sichtbaren Zeichen der Dokument- oder Anzeigezeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"454\"/>\n        <source>Move to end of document line</source>\n        <translation>Zum Ende der Dokumentzeile springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"464\"/>\n        <source>Extend selection to end of document line</source>\n        <translation>Auswahl zum Ende der Dokumentenzeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"475\"/>\n        <source>Extend rectangular selection to end of document line</source>\n        <translation>Rechteckige Auswahl zum Ende der Dokumentenzeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"486\"/>\n        <source>Move to end of display line</source>\n        <translation>Zum Ende der Anzeigezeile springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"496\"/>\n        <source>Extend selection to end of display line</source>\n        <translation>Auswahl zum Ende der Anzeigezeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"503\"/>\n        <source>Move to end of display or document line</source>\n        <translation>Zum Ende der Dokumenten- oder Anzeigezeile springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"510\"/>\n        <source>Extend selection to end of display or document line</source>\n        <translation>Rechteckige Auswahl zum Ende der Dokumenten- oder Anzeigezeile erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"521\"/>\n        <source>Move to start of document</source>\n        <translation>Zum Dokumentenanfang springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"531\"/>\n        <source>Extend selection to start of document</source>\n        <translation>Auswahl zum Dokumentenanfang erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"542\"/>\n        <source>Move to end of document</source>\n        <translation>Zum Dokumentenende springen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"552\"/>\n        <source>Extend selection to end of document</source>\n        <translation>Auswahl zum Dokumentenende erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"609\"/>\n        <source>Stuttered move up one page</source>\n        <translation>&quot;Stotternd&quot; um eine Seite nach oben</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"615\"/>\n        <source>Stuttered extend selection up one page</source>\n        <translation>Auswahl &quot;stotternd&quot; um eine Seite nach oben erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"622\"/>\n        <source>Stuttered move down one page</source>\n        <translation>&quot;Stotternd&quot; um eine Seite nach unten</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"628\"/>\n        <source>Stuttered extend selection down one page</source>\n        <translation>Auswahl &quot;stotternd&quot; um eine Seite nach unten erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"655\"/>\n        <source>Delete previous character if not at start of line</source>\n        <translation>Zeichen links löschen, wenn nicht am Zeilenanfang</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"678\"/>\n        <source>Delete right to end of next word</source>\n        <translation>Rechts bis zum Ende des nächsten Wortes löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"719\"/>\n        <source>Transpose current and previous lines</source>\n        <translation>Aktuelle und vorherige Zeile tauschen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"726\"/>\n        <source>Duplicate the current line</source>\n        <translation>Aktuelle Zeile duplizieren</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"732\"/>\n        <source>Select all</source>\n        <oldsource>Select document</oldsource>\n        <translation>Alle auswählen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"738\"/>\n        <source>Move selected lines up one line</source>\n        <translation>Ausgewählte Zeilen um eine Zeile nach oben</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"744\"/>\n        <source>Move selected lines down one line</source>\n        <translation>Ausgewählte Zeilen um eine Zeile nach unten</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"757\"/>\n        <source>Convert selection to lower case</source>\n        <translation>Auswahl in Kleinbuchstaben umwandeln</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"763\"/>\n        <source>Convert selection to upper case</source>\n        <translation>Auswahl in Großbuchstaben umwandeln</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"793\"/>\n        <source>Insert newline</source>\n        <translation>Neue Zeile einfügen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"811\"/>\n        <source>De-indent one level</source>\n        <translation>Eine Ebene ausrücken</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"823\"/>\n        <source>Undo last command</source>\n        <translation>Letzten Befehl rückgängig machen</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"839\"/>\n        <source>Zoom in</source>\n        <translation>Vergrößern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"845\"/>\n        <source>Zoom out</source>\n        <translation>Verkleinern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"163\"/>\n        <source>Move up one paragraph</source>\n        <translation>Einen Absatz nach oben</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"150\"/>\n        <source>Move down one paragraph</source>\n        <translation>Einen Absatz nach unten</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"169\"/>\n        <source>Extend selection up one paragraph</source>\n        <translation>Auswahl um einen Absatz nach oben erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"156\"/>\n        <source>Extend selection down one paragraph</source>\n        <translation>Auswahl um einen Absatz nach unten erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"713\"/>\n        <source>Copy current line</source>\n        <translation>Aktuelle Zeile kopieren</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"69\"/>\n        <source>Extend rectangular selection down one line</source>\n        <translation>Rechteckige Auswahl um eine Zeile nach unten erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"106\"/>\n        <source>Extend rectangular selection up one line</source>\n        <translation>Rechteckige Auswahl um eine Zeile nach oben erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"201\"/>\n        <source>Extend rectangular selection left one character</source>\n        <translation>Rechteckige Auswahl um ein Zeichen nach links erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"233\"/>\n        <source>Extend rectangular selection right one character</source>\n        <translation>Rechteckige Auswahl um ein Zeichen nach rechts erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"571\"/>\n        <source>Extend rectangular selection up one page</source>\n        <translation>Rechteckige Auswahl um eine Seite nach oben erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"602\"/>\n        <source>Extend rectangular selection down one page</source>\n        <translation>Rechteckige Auswahl um eine Seite nach unten erweitern</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"799\"/>\n        <source>Formfeed</source>\n        <translation>Seitenumbruch</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"751\"/>\n        <source>Duplicate selection</source>\n        <translation>Auswahl duplizieren</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerAVS</name>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"280\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"283\"/>\n        <source>Block comment</source>\n        <translation>Blockkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"286\"/>\n        <source>Nested block comment</source>\n        <translation>Verschachtelter Blockkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"289\"/>\n        <source>Line comment</source>\n        <translation>Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"292\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"301\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"304\"/>\n        <source>Triple double-quoted string</source>\n        <translation>Zeichenkette in dreifachen Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"307\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"310\"/>\n        <source>Filter</source>\n        <translation>Filter</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"313\"/>\n        <source>Plugin</source>\n        <translation>Plugin</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"316\"/>\n        <source>Function</source>\n        <translation>Funktion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"319\"/>\n        <source>Clip property</source>\n        <translation>Clip Eigenschaft</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"322\"/>\n        <source>User defined</source>\n        <translation>Nutzer definiert</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBash</name>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"193\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"196\"/>\n        <source>Error</source>\n        <translation>Fehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"199\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"202\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"205\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"208\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"211\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"214\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"217\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"220\"/>\n        <source>Scalar</source>\n        <translation>Skalar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"223\"/>\n        <source>Parameter expansion</source>\n        <translation>Parametererweiterung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"226\"/>\n        <source>Backticks</source>\n        <translation>Backticks</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"229\"/>\n        <source>Here document delimiter</source>\n        <translation>Here Dokument-Begrenzer</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"232\"/>\n        <source>Single-quoted here document</source>\n        <translation>Here Dokument in Hochkommata</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBatch</name>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"164\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"167\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"170\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"173\"/>\n        <source>Label</source>\n        <translation>Marke</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"182\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"185\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"176\"/>\n        <source>Hide command character</source>\n        <translation>&quot;Befehl verbergen&quot; Zeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"179\"/>\n        <source>External command</source>\n        <translation>Externer Befehl</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCMake</name>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"180\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"183\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"186\"/>\n        <source>String</source>\n        <translation>Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"189\"/>\n        <source>Left quoted string</source>\n        <translation>Links quotierte Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"192\"/>\n        <source>Right quoted string</source>\n        <translation>Rechts quotierte Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"195\"/>\n        <source>Function</source>\n        <translation>Funktion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"198\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"201\"/>\n        <source>Label</source>\n        <translation>Marke</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"204\"/>\n        <source>User defined</source>\n        <translation>Nutzer definiert</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"207\"/>\n        <source>WHILE block</source>\n        <translation>WHILE Block</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"210\"/>\n        <source>FOREACH block</source>\n        <translation>FOREACH Block</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"213\"/>\n        <source>IF block</source>\n        <translation>IF Block</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"216\"/>\n        <source>MACRO block</source>\n        <translation>MACRO Block</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"219\"/>\n        <source>Variable within a string</source>\n        <translation>Variable in einer Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"222\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCPP</name>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"378\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"384\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"390\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"396\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"402\"/>\n        <source>IDL UUID</source>\n        <translation>IDL UUID</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"408\"/>\n        <source>Pre-processor block</source>\n        <translation>Präprozessorblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"414\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"420\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"426\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"354\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"357\"/>\n        <source>Inactive default</source>\n        <translation>Inaktiver Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"360\"/>\n        <source>C comment</source>\n        <translation>C Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"363\"/>\n        <source>Inactive C comment</source>\n        <translation>Inaktiver C Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"366\"/>\n        <source>C++ comment</source>\n        <translation>C++ Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"369\"/>\n        <source>Inactive C++ comment</source>\n        <translation>Inaktiver C++ Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"372\"/>\n        <source>JavaDoc style C comment</source>\n        <translation>JavaDoc C Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"375\"/>\n        <source>Inactive JavaDoc style C comment</source>\n        <translation>Inaktiver JavaDoc C Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"381\"/>\n        <source>Inactive number</source>\n        <translation>Inaktive Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"387\"/>\n        <source>Inactive keyword</source>\n        <translation>Inaktives Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"393\"/>\n        <source>Inactive double-quoted string</source>\n        <translation>Inaktive Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"399\"/>\n        <source>Inactive single-quoted string</source>\n        <translation>Inaktive Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"405\"/>\n        <source>Inactive IDL UUID</source>\n        <translation>Inaktive IDL UUID</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"411\"/>\n        <source>Inactive pre-processor block</source>\n        <translation>Inaktiver Präprozessorblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"417\"/>\n        <source>Inactive operator</source>\n        <translation>Inaktiver Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"423\"/>\n        <source>Inactive identifier</source>\n        <translation>Inaktiver Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"429\"/>\n        <source>Inactive unclosed string</source>\n        <translation>Inaktive unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"432\"/>\n        <source>C# verbatim string</source>\n        <translation>Uninterpretierte C# Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"435\"/>\n        <source>Inactive C# verbatim string</source>\n        <translation>Inaktive, Uninterpretierte C# Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"438\"/>\n        <source>JavaScript regular expression</source>\n        <translation>JavaScript Regulärer Ausdruck</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"441\"/>\n        <source>Inactive JavaScript regular expression</source>\n        <translation>JavaScript Inaktiver Regulärer Ausdruck</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"444\"/>\n        <source>JavaDoc style C++ comment</source>\n        <translation>JavaDoc C++ Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"447\"/>\n        <source>Inactive JavaDoc style C++ comment</source>\n        <translation>Inaktiver JavaDoc C++ Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"453\"/>\n        <source>Inactive secondary keywords and identifiers</source>\n        <translation>Inaktive sekundäre Schlusselwörter und Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"456\"/>\n        <source>JavaDoc keyword</source>\n        <translation>JavaDoc Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"459\"/>\n        <source>Inactive JavaDoc keyword</source>\n        <translation>Inaktives JavaDoc Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"462\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>JavaDoc Schlüsselwortfehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"471\"/>\n        <source>Inactive global classes and typedefs</source>\n        <translation>Inaktive globale Klassen und Typdefinitionen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"474\"/>\n        <source>C++ raw string</source>\n        <translation>Rohe C++ Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"477\"/>\n        <source>Inactive C++ raw string</source>\n        <translation>Inaktive rohe C++ Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"480\"/>\n        <source>Vala triple-quoted verbatim string</source>\n        <translation>Vala Zeichenkette in dreifachen Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"483\"/>\n        <source>Inactive Vala triple-quoted verbatim string</source>\n        <translation>Inaktive Vala Zeichenkette in dreifachen Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"486\"/>\n        <source>Pike hash-quoted string</source>\n        <translation>Pike Zeichenkette in &apos;#-Anführungszeichen&apos;</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"489\"/>\n        <source>Inactive Pike hash-quoted string</source>\n        <translation>Inaktive Pike Zeichenkette in &apos;#-Anführungszeichen&apos;</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"492\"/>\n        <source>Pre-processor C comment</source>\n        <translation>C Präprozessorkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"495\"/>\n        <source>Inactive pre-processor C comment</source>\n        <translation>Inaktiver C Präprozessorkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"498\"/>\n        <source>JavaDoc style pre-processor comment</source>\n        <translation>JavaDoc Präprozessorkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"501\"/>\n        <source>Inactive JavaDoc style pre-processor comment</source>\n        <translation>Inaktiver JavaDoc Präprozessorkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"504\"/>\n        <source>User-defined literal</source>\n        <translation>Nutzer definiertes Literal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"507\"/>\n        <source>Inactive user-defined literal</source>\n        <translation>Inaktives Nutzer definiertes Literal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"510\"/>\n        <source>Task marker</source>\n        <translation>Aufgabenmarkierung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"513\"/>\n        <source>Inactive task marker</source>\n        <translation>Inaktive Aufgabenmarkierung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"516\"/>\n        <source>Escape sequence</source>\n        <translation>Escape-Sequenz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"519\"/>\n        <source>Inactive escape sequence</source>\n        <translation>Inaktive Escape-Sequenz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"450\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Sekundäre Schlusselwörter und Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"465\"/>\n        <source>Inactive JavaDoc keyword error</source>\n        <translation>Inaktiver JavaDoc Schlüsselwortfehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"468\"/>\n        <source>Global classes and typedefs</source>\n        <translation>Globale Klassen und Typdefinitionen</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSS</name>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"225\"/>\n        <source>Tag</source>\n        <translation>Tag</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"228\"/>\n        <source>Class selector</source>\n        <translation>Klassenselektor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"231\"/>\n        <source>Pseudo-class</source>\n        <translation>Pseudoklasse</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"234\"/>\n        <source>Unknown pseudo-class</source>\n        <translation>Unbekannte Pseudoklasse</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"237\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"240\"/>\n        <source>CSS1 property</source>\n        <translation>CSS1 Eigenschaft</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"243\"/>\n        <source>Unknown property</source>\n        <translation>Unbekannte Eigenschaft</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"246\"/>\n        <source>Value</source>\n        <translation>Wert</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"249\"/>\n        <source>ID selector</source>\n        <translation>ID-Selektor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"252\"/>\n        <source>Important</source>\n        <translation>Wichtig</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"255\"/>\n        <source>@-rule</source>\n        <translation>@-Regel</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"258\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"261\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"264\"/>\n        <source>CSS2 property</source>\n        <translation>CSS2 Eigenschaft</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"267\"/>\n        <source>Attribute</source>\n        <translation>Attribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"270\"/>\n        <source>CSS3 property</source>\n        <translation>CSS3 Eigenschaft</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"273\"/>\n        <source>Pseudo-element</source>\n        <translation>Pseudoelement</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"276\"/>\n        <source>Extended CSS property</source>\n        <translation>Erweiterte CSS Eigenschaft</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"279\"/>\n        <source>Extended pseudo-class</source>\n        <translation>Erweiterte Pseudoklasse</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"282\"/>\n        <source>Extended pseudo-element</source>\n        <translation>Erweitertes Pseudoelement</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"285\"/>\n        <source>Media rule</source>\n        <translation>Medienregel</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"288\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSharp</name>\n    <message>\n        <location filename=\"qscilexercsharp.cpp\" line=\"95\"/>\n        <source>Verbatim string</source>\n        <translation>Uninterpretierte Zeichenkette</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCoffeeScript</name>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"248\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"251\"/>\n        <source>C-style comment</source>\n        <translation>C Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"254\"/>\n        <source>C++-style comment</source>\n        <translation>C++ Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"257\"/>\n        <source>JavaDoc C-style comment</source>\n        <translation>JavaDoc C Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"260\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"263\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"266\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"269\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"272\"/>\n        <source>IDL UUID</source>\n        <translation>IDL UUID</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"275\"/>\n        <source>Pre-processor block</source>\n        <translation>Präprozessorblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"278\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"281\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"284\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"287\"/>\n        <source>C# verbatim string</source>\n        <translation>Uninterpretierte C# Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"290\"/>\n        <source>Regular expression</source>\n        <translation>Regulärer Ausdruck</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"293\"/>\n        <source>JavaDoc C++-style comment</source>\n        <translation>JavaDoc C++ Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"296\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Sekundäre Schlusselwörter und Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"299\"/>\n        <source>JavaDoc keyword</source>\n        <translation>JavaDoc Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"302\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>JavaDoc Schlüsselwortfehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"305\"/>\n        <source>Global classes</source>\n        <translation>Globale Klassen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"308\"/>\n        <source>Block comment</source>\n        <translation>Blockkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"311\"/>\n        <source>Block regular expression</source>\n        <translation>Regulärer Ausdrucksblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"314\"/>\n        <source>Block regular expression comment</source>\n        <translation>Regulärer Ausdrucksblockkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"317\"/>\n        <source>Instance property</source>\n        <translation>Instanz-Eigenschaft</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerD</name>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"259\"/>\n        <source>Block comment</source>\n        <translation>Blockkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"262\"/>\n        <source>Line comment</source>\n        <translation>Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"265\"/>\n        <source>DDoc style block comment</source>\n        <translation>DDoc Blockkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"268\"/>\n        <source>Nesting comment</source>\n        <translation>schachtelbarer Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"271\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"274\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"277\"/>\n        <source>Secondary keyword</source>\n        <translation>Sekundäres Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"280\"/>\n        <source>Documentation keyword</source>\n        <translation>Dokumentationsschlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"283\"/>\n        <source>Type definition</source>\n        <translation>Typdefinition</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"286\"/>\n        <source>String</source>\n        <translation>Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"289\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"292\"/>\n        <source>Character</source>\n        <translation>Zeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"301\"/>\n        <source>DDoc style line comment</source>\n        <translation>DDoc Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"304\"/>\n        <source>DDoc keyword</source>\n        <translation>DDoc Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"307\"/>\n        <source>DDoc keyword error</source>\n        <translation>DDoc Schlüsselwortfehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"310\"/>\n        <source>Backquoted string</source>\n        <translation>Zeichenkette in Rückwärtsstrichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"313\"/>\n        <source>Raw string</source>\n        <translation>Rohe Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"316\"/>\n        <source>User defined 1</source>\n        <translation>Nutzer definiert 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"319\"/>\n        <source>User defined 2</source>\n        <translation>Nutzer definiert 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"322\"/>\n        <source>User defined 3</source>\n        <translation>Nutzer definiert 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerDiff</name>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"92\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"95\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"98\"/>\n        <source>Command</source>\n        <translation>Befehl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"101\"/>\n        <source>Header</source>\n        <translation>Kopfzeilen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"104\"/>\n        <source>Position</source>\n        <translation>Position</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"107\"/>\n        <source>Removed line</source>\n        <translation>Entfernte Zeile</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"110\"/>\n        <source>Added line</source>\n        <translation>Hinzugefügte Zeile</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"113\"/>\n        <source>Changed line</source>\n        <translation>Geänderte Zeile</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerFortran77</name>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"175\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"178\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"181\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"184\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"187\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"190\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"193\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"196\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"199\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"202\"/>\n        <source>Intrinsic function</source>\n        <translation>Intrinsic-Funktion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"205\"/>\n        <source>Extended function</source>\n        <translation>Erweiterte Funktion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"208\"/>\n        <source>Pre-processor block</source>\n        <translation>Präprozessorblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"211\"/>\n        <source>Dotted operator</source>\n        <translation>Dotted Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"214\"/>\n        <source>Label</source>\n        <translation>Marke</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"217\"/>\n        <source>Continuation</source>\n        <translation>Fortsetzung</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerHTML</name>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"553\"/>\n        <source>HTML default</source>\n        <translation>HTML Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"556\"/>\n        <source>Tag</source>\n        <translation>Tag</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"559\"/>\n        <source>Unknown tag</source>\n        <translation>Unbekanntes Tag</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"562\"/>\n        <source>Attribute</source>\n        <translation>Attribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"565\"/>\n        <source>Unknown attribute</source>\n        <translation>Unbekanntes Attribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"568\"/>\n        <source>HTML number</source>\n        <translation>HTML Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"571\"/>\n        <source>HTML double-quoted string</source>\n        <translation>HTML Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"574\"/>\n        <source>HTML single-quoted string</source>\n        <translation>HTML Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"577\"/>\n        <source>Other text in a tag</source>\n        <translation>Anderer Text in einem Tag</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"580\"/>\n        <source>HTML comment</source>\n        <translation>HTML Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"583\"/>\n        <source>Entity</source>\n        <translation>Entität</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"586\"/>\n        <source>End of a tag</source>\n        <translation>Tagende</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"589\"/>\n        <source>Start of an XML fragment</source>\n        <translation>Beginn eines XML Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"592\"/>\n        <source>End of an XML fragment</source>\n        <translation>Ende eines XML Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"595\"/>\n        <source>Script tag</source>\n        <translation>Skript Tag</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"598\"/>\n        <source>Start of an ASP fragment with @</source>\n        <translation>Beginn eines ASP Fragmentes mit @</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"601\"/>\n        <source>Start of an ASP fragment</source>\n        <translation>Beginn eines ASP Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"604\"/>\n        <source>CDATA</source>\n        <translation>CDATA</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"607\"/>\n        <source>Start of a PHP fragment</source>\n        <translation>Beginn eines PHP Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"610\"/>\n        <source>Unquoted HTML value</source>\n        <translation>HTML Wert ohne Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"613\"/>\n        <source>ASP X-Code comment</source>\n        <translation>ASP X-Code Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"616\"/>\n        <source>SGML default</source>\n        <translation>SGML Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"619\"/>\n        <source>SGML command</source>\n        <translation>SGML Befehl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"622\"/>\n        <source>First parameter of an SGML command</source>\n        <translation>Erster Parameter eines SGML Befehls</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"625\"/>\n        <source>SGML double-quoted string</source>\n        <translation>SGML Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"628\"/>\n        <source>SGML single-quoted string</source>\n        <translation>SGML Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"631\"/>\n        <source>SGML error</source>\n        <translation>SGML Fehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"634\"/>\n        <source>SGML special entity</source>\n        <translation>SGML Spezielle Entität</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"637\"/>\n        <source>SGML comment</source>\n        <translation>SGML Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"640\"/>\n        <source>First parameter comment of an SGML command</source>\n        <translation>Kommentar des ersten Parameters eines SGML Befehls</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"643\"/>\n        <source>SGML block default</source>\n        <translation>SGML Standardblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"646\"/>\n        <source>Start of a JavaScript fragment</source>\n        <translation>Beginn eines JavaScript Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"649\"/>\n        <source>JavaScript default</source>\n        <translation>JavaScript Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"652\"/>\n        <source>JavaScript comment</source>\n        <translation>JavaScript Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"655\"/>\n        <source>JavaScript line comment</source>\n        <translation>JavaScript Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"658\"/>\n        <source>JavaDoc style JavaScript comment</source>\n        <translation>JavaDoc JavaScript Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"661\"/>\n        <source>JavaScript number</source>\n        <translation>JavaScript Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"664\"/>\n        <source>JavaScript word</source>\n        <translation>JavaScript Wort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"667\"/>\n        <source>JavaScript keyword</source>\n        <translation>JavaScript Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"670\"/>\n        <source>JavaScript double-quoted string</source>\n        <translation>JavaScript Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"673\"/>\n        <source>JavaScript single-quoted string</source>\n        <translation>JavaScript Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"676\"/>\n        <source>JavaScript symbol</source>\n        <translation>JavaScript Symbol</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"679\"/>\n        <source>JavaScript unclosed string</source>\n        <translation>JavaScript Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"682\"/>\n        <source>JavaScript regular expression</source>\n        <translation>JavaScript Regulärer Ausdruck</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"685\"/>\n        <source>Start of an ASP JavaScript fragment</source>\n        <translation>Beginn eines ASP JavaScript Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"688\"/>\n        <source>ASP JavaScript default</source>\n        <translation>ASP JavaScript Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"691\"/>\n        <source>ASP JavaScript comment</source>\n        <translation>ASP JavaScript Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"694\"/>\n        <source>ASP JavaScript line comment</source>\n        <translation>ASP JavaScript Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"697\"/>\n        <source>JavaDoc style ASP JavaScript comment</source>\n        <translation>JavaDoc ASP JavaScript Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"700\"/>\n        <source>ASP JavaScript number</source>\n        <translation>ASP JavaScript Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"703\"/>\n        <source>ASP JavaScript word</source>\n        <translation>ASP JavaScript Wort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"706\"/>\n        <source>ASP JavaScript keyword</source>\n        <translation>ASP JavaScript Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"709\"/>\n        <source>ASP JavaScript double-quoted string</source>\n        <translation>ASP JavaScript Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"712\"/>\n        <source>ASP JavaScript single-quoted string</source>\n        <translation>ASP JavaScript Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"715\"/>\n        <source>ASP JavaScript symbol</source>\n        <translation>ASP JavaScript Symbol</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"718\"/>\n        <source>ASP JavaScript unclosed string</source>\n        <translation>ASP JavaScript Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"721\"/>\n        <source>ASP JavaScript regular expression</source>\n        <translation>ASP JavaScript Regulärer Ausdruck</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"724\"/>\n        <source>Start of a VBScript fragment</source>\n        <translation>Beginn eines VBScript Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"727\"/>\n        <source>VBScript default</source>\n        <translation>VBScript Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"730\"/>\n        <source>VBScript comment</source>\n        <translation>VBScript Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"733\"/>\n        <source>VBScript number</source>\n        <translation>VBScript Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"736\"/>\n        <source>VBScript keyword</source>\n        <translation>VBScript Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"739\"/>\n        <source>VBScript string</source>\n        <translation>VBScript Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"742\"/>\n        <source>VBScript identifier</source>\n        <translation>VBScript Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"745\"/>\n        <source>VBScript unclosed string</source>\n        <translation>VBScript Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"748\"/>\n        <source>Start of an ASP VBScript fragment</source>\n        <translation>Beginn eines ASP VBScript Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"751\"/>\n        <source>ASP VBScript default</source>\n        <translation>ASP VBScript Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"754\"/>\n        <source>ASP VBScript comment</source>\n        <translation>ASP VBScript Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"757\"/>\n        <source>ASP VBScript number</source>\n        <translation>ASP VBScript Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"760\"/>\n        <source>ASP VBScript keyword</source>\n        <translation>ASP VBScript Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"763\"/>\n        <source>ASP VBScript string</source>\n        <translation>ASP VBScript Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"766\"/>\n        <source>ASP VBScript identifier</source>\n        <translation>ASP VBScript Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"769\"/>\n        <source>ASP VBScript unclosed string</source>\n        <translation>ASP VBScript Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"772\"/>\n        <source>Start of a Python fragment</source>\n        <translation>Beginn eines Python Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"775\"/>\n        <source>Python default</source>\n        <translation>Python Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"778\"/>\n        <source>Python comment</source>\n        <translation>Python Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"781\"/>\n        <source>Python number</source>\n        <translation>Python Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"784\"/>\n        <source>Python double-quoted string</source>\n        <translation>Python Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"787\"/>\n        <source>Python single-quoted string</source>\n        <translation>Python Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"790\"/>\n        <source>Python keyword</source>\n        <translation>Python Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"793\"/>\n        <source>Python triple double-quoted string</source>\n        <translation>Python Zeichenkette in dreifachen Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"796\"/>\n        <source>Python triple single-quoted string</source>\n        <translation>Python Zeichenkette in dreifachen Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"799\"/>\n        <source>Python class name</source>\n        <translation>Python Klassenname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"802\"/>\n        <source>Python function or method name</source>\n        <translation>Python Funktions- oder Methodenname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"805\"/>\n        <source>Python operator</source>\n        <translation>Python Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"808\"/>\n        <source>Python identifier</source>\n        <translation>Python Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"811\"/>\n        <source>Start of an ASP Python fragment</source>\n        <translation>Beginn eines ASP Python Fragmentes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"814\"/>\n        <source>ASP Python default</source>\n        <translation>ASP Python Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"817\"/>\n        <source>ASP Python comment</source>\n        <translation>ASP Python Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"820\"/>\n        <source>ASP Python number</source>\n        <translation>ASP Python Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"823\"/>\n        <source>ASP Python double-quoted string</source>\n        <translation>ASP Python Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"826\"/>\n        <source>ASP Python single-quoted string</source>\n        <translation>ASP Python Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"829\"/>\n        <source>ASP Python keyword</source>\n        <translation>ASP Python Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"832\"/>\n        <source>ASP Python triple double-quoted string</source>\n        <translation>ASP Python Zeichenkette in dreifachen Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"835\"/>\n        <source>ASP Python triple single-quoted string</source>\n        <translation>ASP Python Zeichenkette in dreifachen Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"838\"/>\n        <source>ASP Python class name</source>\n        <translation>ASP Python Klassenname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"841\"/>\n        <source>ASP Python function or method name</source>\n        <translation>ASP Python Funktions- oder Methodenname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"844\"/>\n        <source>ASP Python operator</source>\n        <translation>ASP Python Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"847\"/>\n        <source>ASP Python identifier</source>\n        <translation>ASP Python Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"850\"/>\n        <source>PHP default</source>\n        <translation>PHP Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"853\"/>\n        <source>PHP double-quoted string</source>\n        <translation>PHP Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"856\"/>\n        <source>PHP single-quoted string</source>\n        <translation>PHP Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"859\"/>\n        <source>PHP keyword</source>\n        <translation>PHP Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"862\"/>\n        <source>PHP number</source>\n        <translation>PHP Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"868\"/>\n        <source>PHP comment</source>\n        <translation>PHP Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"871\"/>\n        <source>PHP line comment</source>\n        <translation>PHP Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"874\"/>\n        <source>PHP double-quoted variable</source>\n        <translation>PHP Variable in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"877\"/>\n        <source>PHP operator</source>\n        <translation>PHP Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"865\"/>\n        <source>PHP variable</source>\n        <translation>PHP Variable</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerIDL</name>\n    <message>\n        <location filename=\"qscilexeridl.cpp\" line=\"87\"/>\n        <source>UUID</source>\n        <translation>UUID</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJSON</name>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"150\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"153\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"156\"/>\n        <source>String</source>\n        <translation>Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"159\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"162\"/>\n        <source>Property</source>\n        <translation>Eigenschaft</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"165\"/>\n        <source>Escape sequence</source>\n        <translation>Escape-Sequenz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"168\"/>\n        <source>Line comment</source>\n        <translation>Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"171\"/>\n        <source>Block comment</source>\n        <translation>Blockkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"174\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"177\"/>\n        <source>IRI</source>\n        <translation>IRI</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"180\"/>\n        <source>JSON-LD compact IRI</source>\n        <translation>JSON-LD kompaktes IRI</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"183\"/>\n        <source>JSON keyword</source>\n        <translation>JSON Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"186\"/>\n        <source>JSON-LD keyword</source>\n        <translation>JSON-LD Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"189\"/>\n        <source>Parsing error</source>\n        <translation>Analysefehler</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJavaScript</name>\n    <message>\n        <location filename=\"qscilexerjavascript.cpp\" line=\"97\"/>\n        <source>Regular expression</source>\n        <translation>Regulärer Ausdruck</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerLua</name>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"217\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"220\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"223\"/>\n        <source>Line comment</source>\n        <translation>Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"226\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"229\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"232\"/>\n        <source>String</source>\n        <translation>Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"235\"/>\n        <source>Character</source>\n        <translation>Zeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"238\"/>\n        <source>Literal string</source>\n        <translation>Uninterpretierte Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"241\"/>\n        <source>Preprocessor</source>\n        <translation>Präprozessor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"244\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"247\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"250\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"253\"/>\n        <source>Basic functions</source>\n        <translation>Basisfunktionen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"256\"/>\n        <source>String, table and maths functions</source>\n        <translation>Zeichenketten-, Tabelle- und mathematische Funktionen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"259\"/>\n        <source>Coroutines, i/o and system facilities</source>\n        <translation>Koroutinen, I/O- und Systemfunktionen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"262\"/>\n        <source>User defined 1</source>\n        <translation>Nutzer definiert 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"265\"/>\n        <source>User defined 2</source>\n        <translation>Nutzer definiert 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"268\"/>\n        <source>User defined 3</source>\n        <translation>Nutzer definiert 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"271\"/>\n        <source>User defined 4</source>\n        <translation>Nutzer definiert 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"274\"/>\n        <source>Label</source>\n        <translation>Marke</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMakefile</name>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"116\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"119\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"122\"/>\n        <source>Preprocessor</source>\n        <translation>Präprozessor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"125\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"128\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"131\"/>\n        <source>Target</source>\n        <translation>Ziel</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"134\"/>\n        <source>Error</source>\n        <translation>Fehler</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMarkdown</name>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"212\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"215\"/>\n        <source>Special</source>\n        <translation>Spezial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"218\"/>\n        <source>Strong emphasis using double asterisks</source>\n        <translation>Fettschrift mit doppelten Sternen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"221\"/>\n        <source>Strong emphasis using double underscores</source>\n        <translation>Fettschrift mit doppelten Unterstrichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"224\"/>\n        <source>Emphasis using single asterisks</source>\n        <translation>Kursive Schrift mit einfachen Sternen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"227\"/>\n        <source>Emphasis using single underscores</source>\n        <translation>Kursive Schrift mit einfachen Unterstrichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"230\"/>\n        <source>Level 1 header</source>\n        <translation>Überschrift Ebene 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"233\"/>\n        <source>Level 2 header</source>\n        <translation>Überschrift Ebene 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"236\"/>\n        <source>Level 3 header</source>\n        <translation>Überschrift Ebene 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"239\"/>\n        <source>Level 4 header</source>\n        <translation>Überschrift Ebene 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"242\"/>\n        <source>Level 5 header</source>\n        <translation>Überschrift Ebene 5</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"245\"/>\n        <source>Level 6 header</source>\n        <translation>Überschrift Ebene 6</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"248\"/>\n        <source>Pre-char</source>\n        <translation>Einleitungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"251\"/>\n        <source>Unordered list item</source>\n        <translation>Nicht nummeriertes Listenelement</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"254\"/>\n        <source>Ordered list item</source>\n        <translation>Nummeriertes Listenelement</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"257\"/>\n        <source>Block quote</source>\n        <translation>Blockzitat</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"260\"/>\n        <source>Strike out</source>\n        <translation>Durchgestrichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"263\"/>\n        <source>Horizontal rule</source>\n        <translation>Horizontale Linie</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"266\"/>\n        <source>Link</source>\n        <translation>Hyperlink</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"269\"/>\n        <source>Code between backticks</source>\n        <translation>Code zwischen Backticks</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"272\"/>\n        <source>Code between double backticks</source>\n        <translation>Code zwischen doppelten Backticks</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"275\"/>\n        <source>Code block</source>\n        <translation>Codeblock</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMatlab</name>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"123\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"126\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"129\"/>\n        <source>Command</source>\n        <translation>Befehl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"132\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"135\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"138\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"141\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"144\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"147\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPO</name>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"89\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"92\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"95\"/>\n        <source>Message identifier</source>\n        <translation>Meldungsbezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"98\"/>\n        <source>Message identifier text</source>\n        <translation>Meldungsbezeichnertext</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"101\"/>\n        <source>Message string</source>\n        <translation>Meldungszeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"104\"/>\n        <source>Message string text</source>\n        <translation>Meldungszeichenkettentext</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"107\"/>\n        <source>Message context</source>\n        <translation>Meldungskontext</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"110\"/>\n        <source>Message context text</source>\n        <translation>Meldungskontexttext</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"113\"/>\n        <source>Fuzzy flag</source>\n        <translation>Unschrfmarkierung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"116\"/>\n        <source>Programmer comment</source>\n        <translation>Programmiererkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"119\"/>\n        <source>Reference</source>\n        <translation>Referenz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"122\"/>\n        <source>Flags</source>\n        <translation>Markierung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"125\"/>\n        <source>Message identifier text end-of-line</source>\n        <translation>Meldungsbezeichnertext Zeilenende</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"128\"/>\n        <source>Message string text end-of-line</source>\n        <translation>Meldungszeichenkettentext Zeilenende</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"131\"/>\n        <source>Message context text end-of-line</source>\n        <translation>Meldungskontexttext Zeilenende</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPOV</name>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"267\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"270\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"273\"/>\n        <source>Comment line</source>\n        <translation>Kommentarzeile</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"276\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"279\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"282\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"285\"/>\n        <source>String</source>\n        <translation>Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"288\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"291\"/>\n        <source>Directive</source>\n        <translation>Direktive</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"294\"/>\n        <source>Bad directive</source>\n        <translation>Ungültige Direktive</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"297\"/>\n        <source>Objects, CSG and appearance</source>\n        <translation>Objekte, CSG und Erscheinung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"300\"/>\n        <source>Types, modifiers and items</source>\n        <translation>Typen, Modifizierer und Items</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"303\"/>\n        <source>Predefined identifiers</source>\n        <translation>Vordefinierter Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"306\"/>\n        <source>Predefined functions</source>\n        <translation>Vordefinierte Funktion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"309\"/>\n        <source>User defined 1</source>\n        <translation>Nutzer definiert 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"312\"/>\n        <source>User defined 2</source>\n        <translation>Nutzer definiert 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"315\"/>\n        <source>User defined 3</source>\n        <translation>Nutzer definiert 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPascal</name>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"246\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"258\"/>\n        <source>Line comment</source>\n        <translation>Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"267\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"273\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"276\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"285\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"249\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"252\"/>\n        <source>&apos;{ ... }&apos; style comment</source>\n        <translation>&apos;{ ... }&apos; Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"255\"/>\n        <source>&apos;(* ... *)&apos; style comment</source>\n        <translation>&apos;(* ... *)&apos; Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"261\"/>\n        <source>&apos;{$ ... }&apos; style pre-processor block</source>\n        <translation>&apos;{$ ... }&apos; Präprozessorblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"264\"/>\n        <source>&apos;(*$ ... *)&apos; style pre-processor block</source>\n        <translation>&apos;(*$ ... *)&apos; Präprozessorblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"270\"/>\n        <source>Hexadecimal number</source>\n        <translation>Hexadezimale Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"279\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"282\"/>\n        <source>Character</source>\n        <translation>Zeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"288\"/>\n        <source>Inline asm</source>\n        <translation>Inline Assembler</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPerl</name>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"318\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"321\"/>\n        <source>Error</source>\n        <translation>Fehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"324\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"327\"/>\n        <source>POD</source>\n        <translation>POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"330\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"333\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"336\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"339\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"342\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"345\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"348\"/>\n        <source>Scalar</source>\n        <translation>Skalar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"351\"/>\n        <source>Array</source>\n        <translation>Feld</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"354\"/>\n        <source>Hash</source>\n        <translation>Hash</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"357\"/>\n        <source>Symbol table</source>\n        <translation>Symboltabelle</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"360\"/>\n        <source>Regular expression</source>\n        <translation>Regulärer Ausdruck</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"363\"/>\n        <source>Substitution</source>\n        <translation>Ersetzung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"366\"/>\n        <source>Backticks</source>\n        <translation>Backticks</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"369\"/>\n        <source>Data section</source>\n        <translation>Datensektion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"372\"/>\n        <source>Here document delimiter</source>\n        <translation>Here Dokument-Begrenzer</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"375\"/>\n        <source>Single-quoted here document</source>\n        <translation>Here Dokument in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"378\"/>\n        <source>Double-quoted here document</source>\n        <translation>Here Dokument in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"381\"/>\n        <source>Backtick here document</source>\n        <translation>Here Dokument in Backticks</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"384\"/>\n        <source>Quoted string (q)</source>\n        <translation>Zeichenkette (q)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"387\"/>\n        <source>Quoted string (qq)</source>\n        <translation>Zeichenkette (qq)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"390\"/>\n        <source>Quoted string (qx)</source>\n        <translation>Zeichenkette (qx)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"393\"/>\n        <source>Quoted string (qr)</source>\n        <translation>Zeichenkette (qr)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"396\"/>\n        <source>Quoted string (qw)</source>\n        <translation>Zeichenkette (qw)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"399\"/>\n        <source>POD verbatim</source>\n        <translation>POD wörtlich</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"402\"/>\n        <source>Subroutine prototype</source>\n        <translation>Subroutinen Prototyp</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"405\"/>\n        <source>Format identifier</source>\n        <translation>Formatidentifikator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"408\"/>\n        <source>Format body</source>\n        <translation>Formatzweig</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"411\"/>\n        <source>Double-quoted string (interpolated variable)</source>\n        <translation>Zeichenkette in Anführungszeichen (interpolierte Variable)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"414\"/>\n        <source>Translation</source>\n        <translation>Übersetzung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"417\"/>\n        <source>Regular expression (interpolated variable)</source>\n        <translation>Regulärer Ausdruck (interpolierte Variable)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"420\"/>\n        <source>Substitution (interpolated variable)</source>\n        <translation>Ersetzung (interpolierte Variable)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"423\"/>\n        <source>Backticks (interpolated variable)</source>\n        <translation>Backticks (interpolierte Variable)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"426\"/>\n        <source>Double-quoted here document (interpolated variable)</source>\n        <translation>Here Dokument in Anführungszeichen (interpolierte Variable)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"429\"/>\n        <source>Backtick here document (interpolated variable)</source>\n        <translation>Here Dokument in Backticks (interpolierte Variable)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"432\"/>\n        <source>Quoted string (qq, interpolated variable)</source>\n        <translation>Zeichenkette (qq, interpolierte Variable)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"435\"/>\n        <source>Quoted string (qx, interpolated variable)</source>\n        <translation>Zeichenkette (qx, interpolierte Variable)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"438\"/>\n        <source>Quoted string (qr, interpolated variable)</source>\n        <translation>Zeichenkette (qr, interpolierte Variable)</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPostScript</name>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"249\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"252\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"255\"/>\n        <source>DSC comment</source>\n        <translation>DSC Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"258\"/>\n        <source>DSC comment value</source>\n        <translation>DSC Kommentarwert</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"261\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"264\"/>\n        <source>Name</source>\n        <translation>Name</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"267\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"270\"/>\n        <source>Literal</source>\n        <translation>Literal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"273\"/>\n        <source>Immediately evaluated literal</source>\n        <translation>Direkt ausgeführtes Literal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"276\"/>\n        <source>Array parenthesis</source>\n        <translation>Feldklammern</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"279\"/>\n        <source>Dictionary parenthesis</source>\n        <translation>Dictionary-Klammern</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"282\"/>\n        <source>Procedure parenthesis</source>\n        <translation>Prozedurklammern</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"285\"/>\n        <source>Text</source>\n        <translation>Text</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"288\"/>\n        <source>Hexadecimal string</source>\n        <translation>Hexadezimale Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"291\"/>\n        <source>Base85 string</source>\n        <translation>Base85 Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"294\"/>\n        <source>Bad string character</source>\n        <translation>Ungültiges Zeichen für Zeichenkette</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerProperties</name>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"110\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"113\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"116\"/>\n        <source>Section</source>\n        <translation>Abschnitt</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"119\"/>\n        <source>Assignment</source>\n        <translation>Zuweisung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"122\"/>\n        <source>Default value</source>\n        <translation>Standardwert</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"125\"/>\n        <source>Key</source>\n        <translation>Schlüssel</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPython</name>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"225\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"228\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"231\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"234\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"237\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"240\"/>\n        <source>Triple single-quoted string</source>\n        <translation>Zeichenkette in dreifachen Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"243\"/>\n        <source>Triple double-quoted string</source>\n        <translation>Zeichenkette in dreifachen Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"246\"/>\n        <source>Class name</source>\n        <translation>Klassenname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"249\"/>\n        <source>Function or method name</source>\n        <translation>Funktions- oder Methodenname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"252\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"255\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"258\"/>\n        <source>Comment block</source>\n        <translation>Kommentarblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"261\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"264\"/>\n        <source>Highlighted identifier</source>\n        <translation>Hervorgehobener Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"267\"/>\n        <source>Decorator</source>\n        <translation>Dekorator</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerRuby</name>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"238\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"244\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"250\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"256\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"259\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"253\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"262\"/>\n        <source>Class name</source>\n        <translation>Klassenname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"265\"/>\n        <source>Function or method name</source>\n        <translation>Funktions- oder Methodenname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"268\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"271\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"241\"/>\n        <source>Error</source>\n        <translation>Fehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"247\"/>\n        <source>POD</source>\n        <translation>POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"274\"/>\n        <source>Regular expression</source>\n        <translation>Regulärer Ausdruck</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"277\"/>\n        <source>Global</source>\n        <translation>Global</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"280\"/>\n        <source>Symbol</source>\n        <translation>Symbol</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"283\"/>\n        <source>Module name</source>\n        <translation>Modulname</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"286\"/>\n        <source>Instance variable</source>\n        <translation>Instanzvariable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"289\"/>\n        <source>Class variable</source>\n        <translation>Klassenvariable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"292\"/>\n        <source>Backticks</source>\n        <translation>Backticks</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"295\"/>\n        <source>Data section</source>\n        <translation>Datensektion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"298\"/>\n        <source>Here document delimiter</source>\n        <translation>Here Dokument-Begrenzer</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"301\"/>\n        <source>Here document</source>\n        <translation>Here Dokument</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"304\"/>\n        <source>%q string</source>\n        <translation>%q Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"307\"/>\n        <source>%Q string</source>\n        <translation>%Q Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"310\"/>\n        <source>%x string</source>\n        <translation>%x Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"313\"/>\n        <source>%r string</source>\n        <translation>%r Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"316\"/>\n        <source>%w string</source>\n        <translation>%w Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"319\"/>\n        <source>Demoted keyword</source>\n        <translation>zurückgestuftes Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"322\"/>\n        <source>stdin</source>\n        <translation>Stdin</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"325\"/>\n        <source>stdout</source>\n        <translation>Stdout</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"328\"/>\n        <source>stderr</source>\n        <translation>Stderr</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSQL</name>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"259\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"268\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"271\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"277\"/>\n        <source>Single-quoted string</source>\n        <translation>Zeichenkette in Hochkommata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"286\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"289\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"262\"/>\n        <source>Comment line</source>\n        <translation>Kommentarzeile</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"265\"/>\n        <source>JavaDoc style comment</source>\n        <translation>JavaDoc Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"274\"/>\n        <source>Double-quoted string</source>\n        <translation>Zeichenkette in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"280\"/>\n        <source>SQL*Plus keyword</source>\n        <translation>SQL*Plus Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"283\"/>\n        <source>SQL*Plus prompt</source>\n        <translation>SQL*Plus Eingabe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"292\"/>\n        <source>SQL*Plus comment</source>\n        <translation>SQL*Plus Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"295\"/>\n        <source># comment line</source>\n        <translation># Kommentarzeile</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"298\"/>\n        <source>JavaDoc keyword</source>\n        <translation>JavaDoc Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"301\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>JavaDoc Schlüsselwortfehler</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"304\"/>\n        <source>User defined 1</source>\n        <translation>Nutzer definiert 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"307\"/>\n        <source>User defined 2</source>\n        <translation>Nutzer definiert 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"310\"/>\n        <source>User defined 3</source>\n        <translation>Nutzer definiert 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"313\"/>\n        <source>User defined 4</source>\n        <translation>Nutzer definiert 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"316\"/>\n        <source>Quoted identifier</source>\n        <translation>Bezeichner in Anführungszeichen</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"319\"/>\n        <source>Quoted operator</source>\n        <translation>Operator in Anführungszeichen</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSpice</name>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"156\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"159\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"162\"/>\n        <source>Command</source>\n        <translation>Befehl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"165\"/>\n        <source>Function</source>\n        <translation>Funktion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"168\"/>\n        <source>Parameter</source>\n        <translation>Parameter</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"171\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"174\"/>\n        <source>Delimiter</source>\n        <translation>Delimiter</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"177\"/>\n        <source>Value</source>\n        <translation>Wert</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"180\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTCL</name>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"282\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"285\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"288\"/>\n        <source>Comment line</source>\n        <translation>Kommentarzeile</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"291\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"294\"/>\n        <source>Quoted keyword</source>\n        <translation>angeführtes Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"297\"/>\n        <source>Quoted string</source>\n        <translation>Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"300\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"303\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"306\"/>\n        <source>Substitution</source>\n        <translation>Ersetzung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"309\"/>\n        <source>Brace substitution</source>\n        <translation>Klammerersetzung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"312\"/>\n        <source>Modifier</source>\n        <translation>Modifizierer</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"315\"/>\n        <source>Expand keyword</source>\n        <translation>Erweiterungsschlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"318\"/>\n        <source>TCL keyword</source>\n        <translation>TCL Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"321\"/>\n        <source>Tk keyword</source>\n        <translation>Tk Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"324\"/>\n        <source>iTCL keyword</source>\n        <translation>iTCL Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"327\"/>\n        <source>Tk command</source>\n        <translation>Tk Befehl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"330\"/>\n        <source>User defined 1</source>\n        <translation>Nutzer definiert 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"333\"/>\n        <source>User defined 2</source>\n        <translation>Nutzer definiert 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"336\"/>\n        <source>User defined 3</source>\n        <translation>Nutzer definiert 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"339\"/>\n        <source>User defined 4</source>\n        <translation>Nutzer definiert 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"342\"/>\n        <source>Comment box</source>\n        <translation>Kommentarbox</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"345\"/>\n        <source>Comment block</source>\n        <translation>Kommentarblock</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTeX</name>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"177\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"180\"/>\n        <source>Special</source>\n        <translation>Spezial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"183\"/>\n        <source>Group</source>\n        <translation>Gruppe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"186\"/>\n        <source>Symbol</source>\n        <translation>Symbol</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"189\"/>\n        <source>Command</source>\n        <translation>Befehl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"192\"/>\n        <source>Text</source>\n        <translation>Text</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVHDL</name>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"197\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"200\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"203\"/>\n        <source>Comment line</source>\n        <translation>Kommentarzeile</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"206\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"209\"/>\n        <source>String</source>\n        <translation>Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"212\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"215\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"218\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"221\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"224\"/>\n        <source>Standard operator</source>\n        <translation>Standardoperator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"227\"/>\n        <source>Attribute</source>\n        <translation>Attribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"230\"/>\n        <source>Standard function</source>\n        <translation>Standardfunktion</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"233\"/>\n        <source>Standard package</source>\n        <translation>Standardpaket</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"236\"/>\n        <source>Standard type</source>\n        <translation>Standardtyp</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"239\"/>\n        <source>User defined</source>\n        <translation>Nutzer definiert</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"242\"/>\n        <source>Comment block</source>\n        <translation>Kommentarblock</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVerilog</name>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"286\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"289\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"292\"/>\n        <source>Line comment</source>\n        <translation>Zeilenkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"295\"/>\n        <source>Bang comment</source>\n        <translation>Bang Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"298\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"301\"/>\n        <source>Primary keywords and identifiers</source>\n        <translation>Primäre Schlusselwörter und Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"304\"/>\n        <source>String</source>\n        <translation>Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"307\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Sekundäre Schlusselwörter und Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"310\"/>\n        <source>System task</source>\n        <translation>Systemtask</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"313\"/>\n        <source>Preprocessor block</source>\n        <translation>Präprozessorblock</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"316\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"319\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"322\"/>\n        <source>Unclosed string</source>\n        <translation>Unbeendete Zeichenkette</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"325\"/>\n        <source>User defined tasks and identifiers</source>\n        <translation>Nutzerdefinierte Tasks und Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"328\"/>\n        <source>Keyword comment</source>\n        <translation>Schlüsselwortkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"331\"/>\n        <source>Inactive keyword comment</source>\n        <translation>Inaktiver Schlüsselwortkommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"334\"/>\n        <source>Input port declaration</source>\n        <translation>Eingabeportdefinition</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"337\"/>\n        <source>Inactive input port declaration</source>\n        <translation>Inaktive Eingabeportdefinition</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"340\"/>\n        <source>Output port declaration</source>\n        <translation>Ausgabeportdefinition</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"343\"/>\n        <source>Inactive output port declaration</source>\n        <translation>Inaktive Ausgabeportdefinition</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"346\"/>\n        <source>Input/output port declaration</source>\n        <translation>Ein-/Ausgabeportdefinition</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"349\"/>\n        <source>Inactive input/output port declaration</source>\n        <translation>Inaktive Ein-/Ausgabeportdefinition</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"352\"/>\n        <source>Port connection</source>\n        <translation>Portverbindung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"355\"/>\n        <source>Inactive port connection</source>\n        <translation>Inaktive Portverbindung</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerYAML</name>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"160\"/>\n        <source>Default</source>\n        <translation>Standard</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"163\"/>\n        <source>Comment</source>\n        <translation>Kommentar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"166\"/>\n        <source>Identifier</source>\n        <translation>Bezeichner</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"169\"/>\n        <source>Keyword</source>\n        <translation>Schlüsselwort</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"172\"/>\n        <source>Number</source>\n        <translation>Zahl</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"175\"/>\n        <source>Reference</source>\n        <translation>Referenz</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"178\"/>\n        <source>Document delimiter</source>\n        <translation>Dokumentbegrenzer</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"181\"/>\n        <source>Text block marker</source>\n        <translation>Textblock Markierung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"184\"/>\n        <source>Syntax error marker</source>\n        <translation>Syntaxfehler Markierung</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"187\"/>\n        <source>Operator</source>\n        <translation>Operator</translation>\n    </message>\n</context>\n<context>\n    <name>QsciScintilla</name>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4404\"/>\n        <source>&amp;Undo</source>\n        <translation>&amp;Rückgängig</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4408\"/>\n        <source>&amp;Redo</source>\n        <translation>Wieder&amp;herstellen</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4414\"/>\n        <source>Cu&amp;t</source>\n        <translation>&amp;Ausschneiden</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4419\"/>\n        <source>&amp;Copy</source>\n        <translation>&amp;Kopieren</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4425\"/>\n        <source>&amp;Paste</source>\n        <translation>Ein&amp;fügen</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4429\"/>\n        <source>Delete</source>\n        <translation>Löschen</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4436\"/>\n        <source>Select All</source>\n        <translation>Alle auswählen</translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscintilla_es.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"es\">\n<context>\n    <name>QsciCommand</name>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"49\"/>\n        <source>Move down one line</source>\n        <translation>Desplazar una línea hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"59\"/>\n        <source>Extend selection down one line</source>\n        <translation>Extender la selección una línea hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"76\"/>\n        <source>Scroll view down one line</source>\n        <translation>Desplazar la vista una línea hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"69\"/>\n        <source>Extend rectangular selection down one line</source>\n        <translation>Extender la selección rectangular una línea hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"86\"/>\n        <source>Move up one line</source>\n        <translation>Desplazar una línea hacia arriba</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"96\"/>\n        <source>Extend selection up one line</source>\n        <translation>Extender la selección una línea hacia arriba</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"113\"/>\n        <source>Scroll view up one line</source>\n        <translation>Desplazar la vista una línea hacia arriba</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"106\"/>\n        <source>Extend rectangular selection up one line</source>\n        <translation>Extender la selección rectangular una línea hacia arriba</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"163\"/>\n        <source>Move up one paragraph</source>\n        <translation>Desplazar un párrafo hacia arriba</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"169\"/>\n        <source>Extend selection up one paragraph</source>\n        <translation>Extender la selección un párrafo hacia arriba</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"150\"/>\n        <source>Move down one paragraph</source>\n        <translation>Desplazar un párrafo hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"123\"/>\n        <source>Scroll to start of document</source>\n        <translation>Desplazar al principio del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"133\"/>\n        <source>Scroll to end of document</source>\n        <translation>Desplazar al final del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"143\"/>\n        <source>Scroll vertically to centre current line</source>\n        <translation>Desplazar verticalmente al centro de la línea actual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"156\"/>\n        <source>Extend selection down one paragraph</source>\n        <translation>Extender la selección un párrafo hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"180\"/>\n        <source>Move left one character</source>\n        <translation>Mover un carácter hacia la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"190\"/>\n        <source>Extend selection left one character</source>\n        <translation>Extender la selección un carácter hacia la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"244\"/>\n        <source>Move left one word</source>\n        <translation>Mover una palabra hacia la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"254\"/>\n        <source>Extend selection left one word</source>\n        <translation>Extender la selección una palabra a la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"201\"/>\n        <source>Extend rectangular selection left one character</source>\n        <translation>Extender la selección rectangular un carácter hacia la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"212\"/>\n        <source>Move right one character</source>\n        <translation>Mover un carácter hacia la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"222\"/>\n        <source>Extend selection right one character</source>\n        <translation>Extender la selección un carácter hacia la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"264\"/>\n        <source>Move right one word</source>\n        <translation>Mover una palabra hacia la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"270\"/>\n        <source>Extend selection right one word</source>\n        <translation>Extender la selección una palabra a la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"233\"/>\n        <source>Extend rectangular selection right one character</source>\n        <translation>Extender la selección rectangular un carácter hacia la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"276\"/>\n        <source>Move to end of previous word</source>\n        <translation>Mover al final de palabra anterior</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"282\"/>\n        <source>Extend selection to end of previous word</source>\n        <translation>Extender selección al final de la palabra anterior</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"293\"/>\n        <source>Move to end of next word</source>\n        <translation>Mover al final de la palabra siguiente</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"303\"/>\n        <source>Extend selection to end of next word</source>\n        <translation>Extender la selección hasta el final de la palabra siguiente</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"310\"/>\n        <source>Move left one word part</source>\n        <translation>Mover parte de una palabra hacia la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"316\"/>\n        <source>Extend selection left one word part</source>\n        <translation>Extender la selección parte de una palabra a la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"323\"/>\n        <source>Move right one word part</source>\n        <translation>Mover parte de una palabra hacia la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"329\"/>\n        <source>Extend selection right one word part</source>\n        <translation>Extender la selección parte de una palabra a la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"559\"/>\n        <source>Move up one page</source>\n        <translation>Mover hacia arriba una página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"565\"/>\n        <source>Extend selection up one page</source>\n        <translation>Extender la selección hacia arriba una página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"571\"/>\n        <source>Extend rectangular selection up one page</source>\n        <translation>Extender la selección rectangular hacia arriba una página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"582\"/>\n        <source>Move down one page</source>\n        <translation>Mover hacia abajo una página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"592\"/>\n        <source>Extend selection down one page</source>\n        <translation>Extender la selección hacia abajo una página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"602\"/>\n        <source>Extend rectangular selection down one page</source>\n        <translation>Extender la selección rectangular una página hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"639\"/>\n        <source>Delete current character</source>\n        <translation>Borrar el carácter actual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"769\"/>\n        <source>Cut selection</source>\n        <translation>Cortar selección</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"668\"/>\n        <source>Delete word to right</source>\n        <translation>Borrar palabra hacia la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"340\"/>\n        <source>Move to start of document line</source>\n        <translation>Mover al principio de la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"350\"/>\n        <source>Extend selection to start of document line</source>\n        <translation>Extender selección al principio de la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"361\"/>\n        <source>Extend rectangular selection to start of document line</source>\n        <translation>Extender selección rectangular al principio de la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"372\"/>\n        <source>Move to start of display line</source>\n        <translation>Mover al principio de la línea visualizada</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"382\"/>\n        <source>Extend selection to start of display line</source>\n        <translation>Extender selección al principio de la línea visualizada</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"389\"/>\n        <source>Move to start of display or document line</source>\n        <translation>Mover al principio de la línea visualizada o del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"396\"/>\n        <source>Extend selection to start of display or document line</source>\n        <translation>Extender selección al principio de la línea visualizada o del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"407\"/>\n        <source>Move to first visible character in document line</source>\n        <translation>Mover al primer carácter visible en la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"418\"/>\n        <source>Extend selection to first visible character in document line</source>\n        <translation>Extender selección al primer carácter visible en la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"429\"/>\n        <source>Extend rectangular selection to first visible character in document line</source>\n        <translation>Extender selección rectangular al primer carácter visible en la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"436\"/>\n        <source>Move to first visible character of display in document line</source>\n        <translation>Extender selección al primer carácter visualizado en la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"443\"/>\n        <source>Extend selection to first visible character in display or document line</source>\n        <translation>Extender selección al primer carácter de línea visualizada o del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"454\"/>\n        <source>Move to end of document line</source>\n        <translation>Mover al final de la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"464\"/>\n        <source>Extend selection to end of document line</source>\n        <translation>Extender selección al final de la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"475\"/>\n        <source>Extend rectangular selection to end of document line</source>\n        <translation>Extender selección rectangular al final de la línea del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"486\"/>\n        <source>Move to end of display line</source>\n        <translation>Mover al final de la línea visualizada</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"496\"/>\n        <source>Extend selection to end of display line</source>\n        <translation>Extender selección al final de la línea visualizada</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"503\"/>\n        <source>Move to end of display or document line</source>\n        <translation>Mover al final de la línea visualizada o del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"510\"/>\n        <source>Extend selection to end of display or document line</source>\n        <translation>Extender selección al final de la línea visualizada o del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"521\"/>\n        <source>Move to start of document</source>\n        <translation>Mover al principio del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"531\"/>\n        <source>Extend selection to start of document</source>\n        <translation>Extender selección al principio del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"542\"/>\n        <source>Move to end of document</source>\n        <translation>Mover al final del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"552\"/>\n        <source>Extend selection to end of document</source>\n        <translation>Extender selección al final del documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"609\"/>\n        <source>Stuttered move up one page</source>\n        <translation>Mover progresivamente una página hacia arriba</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"615\"/>\n        <source>Stuttered extend selection up one page</source>\n        <translation>Extender progresivamente selección hacia arriba una página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"622\"/>\n        <source>Stuttered move down one page</source>\n        <translation>Mover progresivamente una página hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"628\"/>\n        <source>Stuttered extend selection down one page</source>\n        <translation>Extender progresivamente selección hacia abajo una página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"655\"/>\n        <source>Delete previous character if not at start of line</source>\n        <translation>Borrar carácter anterior si no está al principio de una línea</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"678\"/>\n        <source>Delete right to end of next word</source>\n        <translation>Borrar a la derecha hasta el final de la siguiente palabra</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"695\"/>\n        <source>Delete line to right</source>\n        <translation>Borrar línea hacia la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"719\"/>\n        <source>Transpose current and previous lines</source>\n        <translation>Transponer líneas actual y anterior</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"726\"/>\n        <source>Duplicate the current line</source>\n        <translation>Duplicar línea actual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"732\"/>\n        <source>Select all</source>\n        <oldsource>Select document</oldsource>\n        <translation>Seleccionar todo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"738\"/>\n        <source>Move selected lines up one line</source>\n        <translation>Mover las líneas seleccionadas una línea hacia arriba</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"744\"/>\n        <source>Move selected lines down one line</source>\n        <translation>Mover las líneas seleccionadas una línea hacia abajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"787\"/>\n        <source>Toggle insert/overtype</source>\n        <translation>Conmutar insertar/sobreescribir</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"781\"/>\n        <source>Paste</source>\n        <translation>Pegar</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"775\"/>\n        <source>Copy selection</source>\n        <translation>Copiar selección</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"793\"/>\n        <source>Insert newline</source>\n        <translation>Insertar carácter de nueva línea</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"811\"/>\n        <source>De-indent one level</source>\n        <translation>Deshacer un nivel de indentado</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"817\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"649\"/>\n        <source>Delete previous character</source>\n        <translation>Borrar carácter anterior</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"662\"/>\n        <source>Delete word to left</source>\n        <translation>Borrar palabra hacia la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"685\"/>\n        <source>Delete line to left</source>\n        <translation>Borrar línea hacia la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"823\"/>\n        <source>Undo last command</source>\n        <translation>Deshacer último comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"833\"/>\n        <source>Redo last command</source>\n        <translation>Rehacer último comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"805\"/>\n        <source>Indent one level</source>\n        <translation>Indentar un nivel</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"839\"/>\n        <source>Zoom in</source>\n        <translation>Aumentar zoom</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"845\"/>\n        <source>Zoom out</source>\n        <translation>Disminuir zoom</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"799\"/>\n        <source>Formfeed</source>\n        <translation>Carga de la página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"707\"/>\n        <source>Cut current line</source>\n        <translation>Cortar línea actual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"701\"/>\n        <source>Delete current line</source>\n        <translation>Borrar línea actual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"713\"/>\n        <source>Copy current line</source>\n        <translation>Copiar línea actual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"757\"/>\n        <source>Convert selection to lower case</source>\n        <translation>Convertir selección a minúsculas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"763\"/>\n        <source>Convert selection to upper case</source>\n        <translation>Convertir selección a mayúsculas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"751\"/>\n        <source>Duplicate selection</source>\n        <translation>Duplicar selección</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerAVS</name>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"280\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"283\"/>\n        <source>Block comment</source>\n        <translation>Comentario de bloque</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"286\"/>\n        <source>Nested block comment</source>\n        <translation>Comentario de bloque anidado</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"289\"/>\n        <source>Line comment</source>\n        <translation>Comentario de línea</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"292\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"301\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"304\"/>\n        <source>Triple double-quoted string</source>\n        <translation>Cadena con triple comilla doble</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"307\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"310\"/>\n        <source>Filter</source>\n        <translation>Filtro</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"313\"/>\n        <source>Plugin</source>\n        <translation>Plugin</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"316\"/>\n        <source>Function</source>\n        <translation>Función</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"319\"/>\n        <source>Clip property</source>\n        <translation>Propiedad de recorte</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"322\"/>\n        <source>User defined</source>\n        <translation>Definido por el usuario</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBash</name>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"193\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"196\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"199\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"202\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"205\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"208\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"211\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"214\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"217\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"220\"/>\n        <source>Scalar</source>\n        <translation>Escalar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"223\"/>\n        <source>Parameter expansion</source>\n        <translation>Expansión de parámetros</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"226\"/>\n        <source>Backticks</source>\n        <translation>Comilla inversa</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"229\"/>\n        <source>Here document delimiter</source>\n        <translation>Delimitador de documento integrado (here document)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"232\"/>\n        <source>Single-quoted here document</source>\n        <translation>Documento integrado (here document) con comilla simple</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBatch</name>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"164\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"167\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"170\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"173\"/>\n        <source>Label</source>\n        <translation>Etiqueta</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"176\"/>\n        <source>Hide command character</source>\n        <translation>Ocultar caracteres de comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"179\"/>\n        <source>External command</source>\n        <translation>Comando externo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"182\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"185\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCMake</name>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"180\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"183\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"186\"/>\n        <source>String</source>\n        <translation>Cadena de caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"189\"/>\n        <source>Left quoted string</source>\n        <translation>Cadena con comillas a la izquierda</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"192\"/>\n        <source>Right quoted string</source>\n        <translation>Cadena con comillas a la derecha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"195\"/>\n        <source>Function</source>\n        <translation>Función</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"198\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"201\"/>\n        <source>Label</source>\n        <translation>Etiqueta</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"204\"/>\n        <source>User defined</source>\n        <translation>Definido por el usuario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"207\"/>\n        <source>WHILE block</source>\n        <translation>Bloque WHILE</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"210\"/>\n        <source>FOREACH block</source>\n        <translation>Bloque FOREACH</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"213\"/>\n        <source>IF block</source>\n        <translation>Bloque IF</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"216\"/>\n        <source>MACRO block</source>\n        <translation>Bloque MACRO</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"219\"/>\n        <source>Variable within a string</source>\n        <translation>Variable en una cadena</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"222\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCPP</name>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"354\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"357\"/>\n        <source>Inactive default</source>\n        <translation>Por defecto inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"360\"/>\n        <source>C comment</source>\n        <translation>Comentario C</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"363\"/>\n        <source>Inactive C comment</source>\n        <translation>Comentario C inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"366\"/>\n        <source>C++ comment</source>\n        <translation>Comentario C++</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"369\"/>\n        <source>Inactive C++ comment</source>\n        <translation>Comentario C++ inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"372\"/>\n        <source>JavaDoc style C comment</source>\n        <translation>Comentario C de estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"375\"/>\n        <source>Inactive JavaDoc style C comment</source>\n        <translation>Comentario C estilo JavaDoc inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"378\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"381\"/>\n        <source>Inactive number</source>\n        <translation>Número inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"384\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"387\"/>\n        <source>Inactive keyword</source>\n        <translation>Palabra clave inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"390\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"393\"/>\n        <source>Inactive double-quoted string</source>\n        <translation>Cadena con doble comilla inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"396\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"399\"/>\n        <source>Inactive single-quoted string</source>\n        <translation>Cadena con comilla simple inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"402\"/>\n        <source>IDL UUID</source>\n        <translation>IDL UUID</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"405\"/>\n        <source>Inactive IDL UUID</source>\n        <translation>IDL UUID inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"408\"/>\n        <source>Pre-processor block</source>\n        <translation>Bloque de preprocesador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"411\"/>\n        <source>Inactive pre-processor block</source>\n        <translation>Bloque de preprocesador inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"414\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"417\"/>\n        <source>Inactive operator</source>\n        <translation>Operador inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"420\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"423\"/>\n        <source>Inactive identifier</source>\n        <translation>Identificador inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"426\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"429\"/>\n        <source>Inactive unclosed string</source>\n        <translation>Cadena sin cerrar inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"432\"/>\n        <source>C# verbatim string</source>\n        <translation>Cadena C# textual</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"435\"/>\n        <source>Inactive C# verbatim string</source>\n        <translation>Cadena C# textual inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"438\"/>\n        <source>JavaScript regular expression</source>\n        <translation>Expresión regular JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"441\"/>\n        <source>Inactive JavaScript regular expression</source>\n        <translation>Expresión regular JavaScript inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"444\"/>\n        <source>JavaDoc style C++ comment</source>\n        <translation>Comentario C++ de estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"447\"/>\n        <source>Inactive JavaDoc style C++ comment</source>\n        <translation>Comentario C++ estilo JavaDoc inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"450\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Identificadores y palabras clave secundarios</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"453\"/>\n        <source>Inactive secondary keywords and identifiers</source>\n        <translation>Identificadores y palabras clave secundarios inactivos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"456\"/>\n        <source>JavaDoc keyword</source>\n        <translation>Palabra clave de Javadoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"459\"/>\n        <source>Inactive JavaDoc keyword</source>\n        <translation>Palabra clave de JavaDoc inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"462\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>Error en palabra clave de Javadoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"465\"/>\n        <source>Inactive JavaDoc keyword error</source>\n        <translation>Error en palabra clave de Javadoc inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"468\"/>\n        <source>Global classes and typedefs</source>\n        <translation>Clases globales y typedefs</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"471\"/>\n        <source>Inactive global classes and typedefs</source>\n        <translation>Clases globales y typedefs inactivos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"474\"/>\n        <source>C++ raw string</source>\n        <translation>Cadena en bruto C++</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"477\"/>\n        <source>Inactive C++ raw string</source>\n        <translation>Cadena inactiva C++</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"480\"/>\n        <source>Vala triple-quoted verbatim string</source>\n        <translation>Cadena Vala con triple comilla textual</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"483\"/>\n        <source>Inactive Vala triple-quoted verbatim string</source>\n        <translation>Cadena Vala con triple comilla textual inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"486\"/>\n        <source>Pike hash-quoted string</source>\n        <translation>Cadena Pike con hash entrecomillado</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"489\"/>\n        <source>Inactive Pike hash-quoted string</source>\n        <translation>Cadena Pike con hash entrecomillado inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"492\"/>\n        <source>Pre-processor C comment</source>\n        <translation>Comentario C de preprocesador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"495\"/>\n        <source>Inactive pre-processor C comment</source>\n        <translation>Comentario C de preprocesador inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"498\"/>\n        <source>JavaDoc style pre-processor comment</source>\n        <translation>Comentario de preprocesador estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"501\"/>\n        <source>Inactive JavaDoc style pre-processor comment</source>\n        <translation>Comentario de preprocesador estilo JavaDoc inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"504\"/>\n        <source>User-defined literal</source>\n        <translation>Literal definido por el usuario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"507\"/>\n        <source>Inactive user-defined literal</source>\n        <translation>Literal inactivo definido por el usuario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"510\"/>\n        <source>Task marker</source>\n        <translation>Marcador de tarea</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"513\"/>\n        <source>Inactive task marker</source>\n        <translation>Marcador de tarea inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"516\"/>\n        <source>Escape sequence</source>\n        <translation>Secuencia de escape</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"519\"/>\n        <source>Inactive escape sequence</source>\n        <translation>Secuencia de escape inactiva</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSS</name>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"225\"/>\n        <source>Tag</source>\n        <translation>Etiqueta</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"228\"/>\n        <source>Class selector</source>\n        <translation>Selector de clase</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"231\"/>\n        <source>Pseudo-class</source>\n        <translation>Pseudoclase</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"234\"/>\n        <source>Unknown pseudo-class</source>\n        <translation>Pseudoclase desconocida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"237\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"240\"/>\n        <source>CSS1 property</source>\n        <translation>Propiedad CSS1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"243\"/>\n        <source>Unknown property</source>\n        <translation>Propiedad desconocida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"246\"/>\n        <source>Value</source>\n        <translation>Valor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"249\"/>\n        <source>ID selector</source>\n        <translation>Selector de ID</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"252\"/>\n        <source>Important</source>\n        <translation>Importante</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"255\"/>\n        <source>@-rule</source>\n        <translation>Regla-@</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"258\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"261\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"264\"/>\n        <source>CSS2 property</source>\n        <translation>Propiedad CSS2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"267\"/>\n        <source>Attribute</source>\n        <translation>Atributo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"270\"/>\n        <source>CSS3 property</source>\n        <translation>Propiedad CSS3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"273\"/>\n        <source>Pseudo-element</source>\n        <translation>Pseudoelemento</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"276\"/>\n        <source>Extended CSS property</source>\n        <translation>Propiedad CSS extendida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"279\"/>\n        <source>Extended pseudo-class</source>\n        <translation>Pseudoclase extendida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"282\"/>\n        <source>Extended pseudo-element</source>\n        <translation>Pseudoelemento extendido</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"285\"/>\n        <source>Media rule</source>\n        <translation>Regla de &apos;@media&apos;</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"288\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSharp</name>\n    <message>\n        <location filename=\"qscilexercsharp.cpp\" line=\"95\"/>\n        <source>Verbatim string</source>\n        <translation>Cadena textual</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCoffeeScript</name>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"248\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"251\"/>\n        <source>C-style comment</source>\n        <translation>Comentario de estilo C</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"254\"/>\n        <source>C++-style comment</source>\n        <translation>Comentario de estilo C++</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"257\"/>\n        <source>JavaDoc C-style comment</source>\n        <translation>Comentario de estilo JavaDoc C</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"260\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"263\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"266\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"269\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comilla simple</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"272\"/>\n        <source>IDL UUID</source>\n        <translation>IDL UUID</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"275\"/>\n        <source>Pre-processor block</source>\n        <translation>Bloque de preprocesador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"278\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"281\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"284\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"287\"/>\n        <source>C# verbatim string</source>\n        <translation>Cadena C# textual</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"290\"/>\n        <source>Regular expression</source>\n        <translation>Expresión regular</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"293\"/>\n        <source>JavaDoc C++-style comment</source>\n        <translation>Comentario de estilo JavaDoc C++</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"296\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Identificadores y palabras clave secundarios</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"299\"/>\n        <source>JavaDoc keyword</source>\n        <translation>Palabra clave de JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"302\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>Error en palabra clave de JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"305\"/>\n        <source>Global classes</source>\n        <translation>Clases globales</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"308\"/>\n        <source>Block comment</source>\n        <translation>Comentario de bloque</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"311\"/>\n        <source>Block regular expression</source>\n        <translation>Expresión regular de bloque</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"314\"/>\n        <source>Block regular expression comment</source>\n        <translation>Comentario de expresión regular de bloque</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"317\"/>\n        <source>Instance property</source>\n        <translation>Propiedad de instancia</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerD</name>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"259\"/>\n        <source>Block comment</source>\n        <translation>Comentario de bloque</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"262\"/>\n        <source>Line comment</source>\n        <translation>Comentario de línea</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"265\"/>\n        <source>DDoc style block comment</source>\n        <translation>Comentario de bloque estilo DDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"268\"/>\n        <source>Nesting comment</source>\n        <translation>Comentario anidado</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"271\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"274\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"277\"/>\n        <source>Secondary keyword</source>\n        <translation>Palabra clave secundaria</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"280\"/>\n        <source>Documentation keyword</source>\n        <translation>Palabra clave de documentación</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"283\"/>\n        <source>Type definition</source>\n        <translation>Definición de tipo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"286\"/>\n        <source>String</source>\n        <translation>Cadena de caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"289\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"292\"/>\n        <source>Character</source>\n        <translation>Carácter</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"301\"/>\n        <source>DDoc style line comment</source>\n        <translation>Comentario de línea estilo DDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"304\"/>\n        <source>DDoc keyword</source>\n        <translation>Palabra clave DDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"307\"/>\n        <source>DDoc keyword error</source>\n        <translation>Error en palabra clave DDOC</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"310\"/>\n        <source>Backquoted string</source>\n        <translation>Cadena con comillas hacia atrás</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"313\"/>\n        <source>Raw string</source>\n        <translation>Cadena en bruto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"316\"/>\n        <source>User defined 1</source>\n        <translation>Definido por el usuario 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"319\"/>\n        <source>User defined 2</source>\n        <translation>Definido por el usuario 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"322\"/>\n        <source>User defined 3</source>\n        <translation>Definido por el usuario 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerDiff</name>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"92\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"95\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"98\"/>\n        <source>Command</source>\n        <translation>Comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"101\"/>\n        <source>Header</source>\n        <translation>Encabezado</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"104\"/>\n        <source>Position</source>\n        <translation>Posición</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"107\"/>\n        <source>Removed line</source>\n        <translation>Línea eliminada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"110\"/>\n        <source>Added line</source>\n        <translation>Línea añadida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"113\"/>\n        <source>Changed line</source>\n        <translation>Línea modificada</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerFortran77</name>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"175\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"178\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"181\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"184\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"187\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"190\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"193\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"196\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"199\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"202\"/>\n        <source>Intrinsic function</source>\n        <translation>Función intrínseca</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"205\"/>\n        <source>Extended function</source>\n        <translation>Función extendida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"208\"/>\n        <source>Pre-processor block</source>\n        <translation>Bloque de preprocesador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"211\"/>\n        <source>Dotted operator</source>\n        <translation>Operador punteado</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"214\"/>\n        <source>Label</source>\n        <translation>Etiqueta</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"217\"/>\n        <source>Continuation</source>\n        <translation>Continuación</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerHTML</name>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"553\"/>\n        <source>HTML default</source>\n        <translation>HTML por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"556\"/>\n        <source>Tag</source>\n        <translation>Etiqueta</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"559\"/>\n        <source>Unknown tag</source>\n        <translation>Etiqueta desconocida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"562\"/>\n        <source>Attribute</source>\n        <translation>Atributo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"565\"/>\n        <source>Unknown attribute</source>\n        <translation>Atributo desconocido</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"568\"/>\n        <source>HTML number</source>\n        <translation>Número HTML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"571\"/>\n        <source>HTML double-quoted string</source>\n        <translation>Cadena HTML con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"574\"/>\n        <source>HTML single-quoted string</source>\n        <translation>Cadena HTML con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"577\"/>\n        <source>Other text in a tag</source>\n        <translation>Otro texto en una etiqueta</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"580\"/>\n        <source>HTML comment</source>\n        <translation>Comentario HTML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"583\"/>\n        <source>Entity</source>\n        <translation>Entidad</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"586\"/>\n        <source>End of a tag</source>\n        <translation>Final de una etiqueta</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"589\"/>\n        <source>Start of an XML fragment</source>\n        <translation>Inicio de un fragmento XML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"592\"/>\n        <source>End of an XML fragment</source>\n        <translation>Fin de un fragmento XML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"595\"/>\n        <source>Script tag</source>\n        <translation>Etiqueta de script</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"598\"/>\n        <source>Start of an ASP fragment with @</source>\n        <translation>Inicio de un fragmento ASP con @</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"601\"/>\n        <source>Start of an ASP fragment</source>\n        <translation>Inicio de un fragmento ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"604\"/>\n        <source>CDATA</source>\n        <translation>CDATA</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"607\"/>\n        <source>Start of a PHP fragment</source>\n        <translation>Inicio de un fragmento PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"610\"/>\n        <source>Unquoted HTML value</source>\n        <translation>Valor HTML sin comillas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"613\"/>\n        <source>ASP X-Code comment</source>\n        <translation>Comentario ASP X-Code</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"616\"/>\n        <source>SGML default</source>\n        <translation>SGML por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"619\"/>\n        <source>SGML command</source>\n        <translation>Comando SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"622\"/>\n        <source>First parameter of an SGML command</source>\n        <translation>Primer parametro de un comando SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"625\"/>\n        <source>SGML double-quoted string</source>\n        <translation>Cadena SGML con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"628\"/>\n        <source>SGML single-quoted string</source>\n        <translation>Cadena SGML con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"631\"/>\n        <source>SGML error</source>\n        <translation>Error SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"634\"/>\n        <source>SGML special entity</source>\n        <translation>Entidad SGML especial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"637\"/>\n        <source>SGML comment</source>\n        <translation>Comentario SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"640\"/>\n        <source>First parameter comment of an SGML command</source>\n        <translation>Comentario de primer parametro de un comando SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"643\"/>\n        <source>SGML block default</source>\n        <translation>Bloque SGML por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"646\"/>\n        <source>Start of a JavaScript fragment</source>\n        <translation>Inicio de un fragmento JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"649\"/>\n        <source>JavaScript default</source>\n        <translation>JavaScript por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"652\"/>\n        <source>JavaScript comment</source>\n        <translation>Comentario JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"655\"/>\n        <source>JavaScript line comment</source>\n        <translation>Comentario de línea de JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"658\"/>\n        <source>JavaDoc style JavaScript comment</source>\n        <translation>Comentario JavaScript de estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"661\"/>\n        <source>JavaScript number</source>\n        <translation>Número JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"664\"/>\n        <source>JavaScript word</source>\n        <translation>Palabra JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"667\"/>\n        <source>JavaScript keyword</source>\n        <translation>Palabra clave JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"670\"/>\n        <source>JavaScript double-quoted string</source>\n        <translation>Cadena JavaScript con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"673\"/>\n        <source>JavaScript single-quoted string</source>\n        <translation>Cadena JavaScript con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"676\"/>\n        <source>JavaScript symbol</source>\n        <translation>Símbolo JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"679\"/>\n        <source>JavaScript unclosed string</source>\n        <translation>Cadena JavaScript sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"682\"/>\n        <source>JavaScript regular expression</source>\n        <translation>Expresión regular JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"685\"/>\n        <source>Start of an ASP JavaScript fragment</source>\n        <translation>Inicio de un fragmento de ASP JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"688\"/>\n        <source>ASP JavaScript default</source>\n        <translation>ASP JavaScript por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"691\"/>\n        <source>ASP JavaScript comment</source>\n        <translation>Comentario de ASP JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"694\"/>\n        <source>ASP JavaScript line comment</source>\n        <translation>Comentario de línea de ASP JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"697\"/>\n        <source>JavaDoc style ASP JavaScript comment</source>\n        <translation>Comentario ASP JavaScript de estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"700\"/>\n        <source>ASP JavaScript number</source>\n        <translation>Número ASP JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"703\"/>\n        <source>ASP JavaScript word</source>\n        <translation>Palabra ASP JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"706\"/>\n        <source>ASP JavaScript keyword</source>\n        <translation>Palabra clave ASP JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"709\"/>\n        <source>ASP JavaScript double-quoted string</source>\n        <translation>Cadena ASP JavaScript con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"712\"/>\n        <source>ASP JavaScript single-quoted string</source>\n        <translation>Cadena ASP JavaScript con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"715\"/>\n        <source>ASP JavaScript symbol</source>\n        <translation>Símbolo ASP JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"718\"/>\n        <source>ASP JavaScript unclosed string</source>\n        <translation>Cadena ASP JavaScript sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"721\"/>\n        <source>ASP JavaScript regular expression</source>\n        <translation>Expresión regular ASP JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"724\"/>\n        <source>Start of a VBScript fragment</source>\n        <translation>Inicio de un fragmento VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"727\"/>\n        <source>VBScript default</source>\n        <translation>VBScript por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"730\"/>\n        <source>VBScript comment</source>\n        <translation>Comentario VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"733\"/>\n        <source>VBScript number</source>\n        <translation>Número VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"736\"/>\n        <source>VBScript keyword</source>\n        <translation>Palabra clave VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"739\"/>\n        <source>VBScript string</source>\n        <translation>Cadena de caracteres VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"742\"/>\n        <source>VBScript identifier</source>\n        <translation>Identificador VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"745\"/>\n        <source>VBScript unclosed string</source>\n        <translation>Cadena VBScript sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"748\"/>\n        <source>Start of an ASP VBScript fragment</source>\n        <translation>Inicio de un fragmento de ASP VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"751\"/>\n        <source>ASP VBScript default</source>\n        <translation>ASP VBScript por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"754\"/>\n        <source>ASP VBScript comment</source>\n        <translation>Comentario de ASP VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"757\"/>\n        <source>ASP VBScript number</source>\n        <translation>Número ASP VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"760\"/>\n        <source>ASP VBScript keyword</source>\n        <translation>Palabra clave ASP VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"763\"/>\n        <source>ASP VBScript string</source>\n        <translation>Cadena de caracteres ASP VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"766\"/>\n        <source>ASP VBScript identifier</source>\n        <translation>Identificador ASP VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"769\"/>\n        <source>ASP VBScript unclosed string</source>\n        <translation>Cadena ASP VBScript sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"772\"/>\n        <source>Start of a Python fragment</source>\n        <translation>Inicio de un fragmento Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"775\"/>\n        <source>Python default</source>\n        <translation>Python por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"778\"/>\n        <source>Python comment</source>\n        <translation>Comentario Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"781\"/>\n        <source>Python number</source>\n        <translation>Número Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"784\"/>\n        <source>Python double-quoted string</source>\n        <translation>Cadena Python con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"787\"/>\n        <source>Python single-quoted string</source>\n        <translation>Cadena Python con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"790\"/>\n        <source>Python keyword</source>\n        <translation>Palabra clave de Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"793\"/>\n        <source>Python triple double-quoted string</source>\n        <translation>Cadena Python con triple comilla doble</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"796\"/>\n        <source>Python triple single-quoted string</source>\n        <translation>Cadena Python con triple comilla simple</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"799\"/>\n        <source>Python class name</source>\n        <translation>Nombre de clase Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"802\"/>\n        <source>Python function or method name</source>\n        <translation>Nombre de método o función Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"805\"/>\n        <source>Python operator</source>\n        <translation>Operador Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"808\"/>\n        <source>Python identifier</source>\n        <translation>Identificador Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"811\"/>\n        <source>Start of an ASP Python fragment</source>\n        <translation>Inicio de un fragmento ASP Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"814\"/>\n        <source>ASP Python default</source>\n        <translation>ASP Python por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"817\"/>\n        <source>ASP Python comment</source>\n        <translation>Comentario ASP Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"820\"/>\n        <source>ASP Python number</source>\n        <translation>Número ASP Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"823\"/>\n        <source>ASP Python double-quoted string</source>\n        <translation>Cadena ASP Python con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"826\"/>\n        <source>ASP Python single-quoted string</source>\n        <translation>Cadena ASP Python con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"829\"/>\n        <source>ASP Python keyword</source>\n        <translation>Palabra clave de ASP Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"832\"/>\n        <source>ASP Python triple double-quoted string</source>\n        <translation>Cadena ASP Python con triple comilla doble</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"835\"/>\n        <source>ASP Python triple single-quoted string</source>\n        <translation>Cadena ASP Python con triple comilla simple</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"838\"/>\n        <source>ASP Python class name</source>\n        <translation>Nombre de clase ASP Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"841\"/>\n        <source>ASP Python function or method name</source>\n        <translation>Nombre de método o función ASP Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"844\"/>\n        <source>ASP Python operator</source>\n        <translation>Operador ASP Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"847\"/>\n        <source>ASP Python identifier</source>\n        <translation>Identificador ASP Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"850\"/>\n        <source>PHP default</source>\n        <translation>PHP por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"853\"/>\n        <source>PHP double-quoted string</source>\n        <translation>Cadena PHP con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"856\"/>\n        <source>PHP single-quoted string</source>\n        <translation>Cadena PHP con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"859\"/>\n        <source>PHP keyword</source>\n        <translation>Palabra clave PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"862\"/>\n        <source>PHP number</source>\n        <translation>Número PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"865\"/>\n        <source>PHP variable</source>\n        <translation>Variable PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"868\"/>\n        <source>PHP comment</source>\n        <translation>Comentario PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"871\"/>\n        <source>PHP line comment</source>\n        <translation>Comentario de línea PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"874\"/>\n        <source>PHP double-quoted variable</source>\n        <translation>Variable PHP con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"877\"/>\n        <source>PHP operator</source>\n        <translation>Operador PHP</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerIDL</name>\n    <message>\n        <location filename=\"qscilexeridl.cpp\" line=\"87\"/>\n        <source>UUID</source>\n        <translation>UUID</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJSON</name>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"150\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"153\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"156\"/>\n        <source>String</source>\n        <translation>Cadena</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"159\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"162\"/>\n        <source>Property</source>\n        <translation>Propiedad</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"165\"/>\n        <source>Escape sequence</source>\n        <translation>Secuencia de escape</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"168\"/>\n        <source>Line comment</source>\n        <translation>Comentario de línea</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"171\"/>\n        <source>Block comment</source>\n        <translation>Comentario de bloque</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"174\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"177\"/>\n        <source>IRI</source>\n        <translation>IRI</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"180\"/>\n        <source>JSON-LD compact IRI</source>\n        <translation>JSON-LD compact IRI</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"183\"/>\n        <source>JSON keyword</source>\n        <translation>Palabra clave JSON</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"186\"/>\n        <source>JSON-LD keyword</source>\n        <translation>Palabra clave JSON-LD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"189\"/>\n        <source>Parsing error</source>\n        <translation>Error de intérprete</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJavaScript</name>\n    <message>\n        <location filename=\"qscilexerjavascript.cpp\" line=\"97\"/>\n        <source>Regular expression</source>\n        <translation>Expresión regular</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerLua</name>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"217\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"220\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"223\"/>\n        <source>Line comment</source>\n        <translation>Comentario de línea</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"226\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"229\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"232\"/>\n        <source>String</source>\n        <translation>Cadena de caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"235\"/>\n        <source>Character</source>\n        <translation>Carácter</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"238\"/>\n        <source>Literal string</source>\n        <translation>Cadena literal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"241\"/>\n        <source>Preprocessor</source>\n        <translation>Preprocesador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"244\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"247\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"250\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"253\"/>\n        <source>Basic functions</source>\n        <translation>Funciones basicas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"256\"/>\n        <source>String, table and maths functions</source>\n        <translation>Funcines de cadena, tabla y matemáticas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"259\"/>\n        <source>Coroutines, i/o and system facilities</source>\n        <translation>Co-rutinas, e/s y funciones del sistema</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"262\"/>\n        <source>User defined 1</source>\n        <translation>Definido por el usuario 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"265\"/>\n        <source>User defined 2</source>\n        <translation>Definido por el usuario 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"268\"/>\n        <source>User defined 3</source>\n        <translation>Definido por el usuario 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"271\"/>\n        <source>User defined 4</source>\n        <translation>Definido por el usuario 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"274\"/>\n        <source>Label</source>\n        <translation>Etiqueta</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMakefile</name>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"116\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"119\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"122\"/>\n        <source>Preprocessor</source>\n        <translation>Preprocesador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"125\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"128\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"131\"/>\n        <source>Target</source>\n        <translation>Objetivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"134\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMarkdown</name>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"212\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"215\"/>\n        <source>Special</source>\n        <translation>Especial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"218\"/>\n        <source>Strong emphasis using double asterisks</source>\n        <translation>Énfasis fuerte usando doble asterisco</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"221\"/>\n        <source>Strong emphasis using double underscores</source>\n        <translation>Énfasis fuerte usando doble guión bajo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"224\"/>\n        <source>Emphasis using single asterisks</source>\n        <translation>Énfasis usando asterisco sencillo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"227\"/>\n        <source>Emphasis using single underscores</source>\n        <translation>Énfasis usando guión bajo sencillo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"230\"/>\n        <source>Level 1 header</source>\n        <translation>Encabezado de nivel 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"233\"/>\n        <source>Level 2 header</source>\n        <translation>Encabezado de nivel 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"236\"/>\n        <source>Level 3 header</source>\n        <translation>Encabezado de nivel 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"239\"/>\n        <source>Level 4 header</source>\n        <translation>Encabezado de nivel 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"242\"/>\n        <source>Level 5 header</source>\n        <translation>Encabezado de nivel 5</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"245\"/>\n        <source>Level 6 header</source>\n        <translation>Encabezado de nivel 6</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"248\"/>\n        <source>Pre-char</source>\n        <translation>Pre-char</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"251\"/>\n        <source>Unordered list item</source>\n        <translation>Elemento de lista sin ordenar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"254\"/>\n        <source>Ordered list item</source>\n        <translation>Elemento de lista ordenada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"257\"/>\n        <source>Block quote</source>\n        <translation>Bloque de cita</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"260\"/>\n        <source>Strike out</source>\n        <translation>Tachar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"263\"/>\n        <source>Horizontal rule</source>\n        <translation>Regla horizontal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"266\"/>\n        <source>Link</source>\n        <translation>Enlace</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"269\"/>\n        <source>Code between backticks</source>\n        <translation>Código entre comillas hacia atrás</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"272\"/>\n        <source>Code between double backticks</source>\n        <translation>Código entre comillas hacia atrás dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"275\"/>\n        <source>Code block</source>\n        <translation>Bloque de código</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMatlab</name>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"123\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"126\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"129\"/>\n        <source>Command</source>\n        <translation>Comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"132\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"135\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"138\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"141\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"144\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"147\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPO</name>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"89\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"92\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"95\"/>\n        <source>Message identifier</source>\n        <translation>Identificador de mensaje</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"98\"/>\n        <source>Message identifier text</source>\n        <translation>Texto identificador de mensaje</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"101\"/>\n        <source>Message string</source>\n        <translation>Cadena de mensaje</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"104\"/>\n        <source>Message string text</source>\n        <translation>Texto de cadena de mensaje</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"107\"/>\n        <source>Message context</source>\n        <translation>Contexto de mensaje</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"110\"/>\n        <source>Message context text</source>\n        <translation>Texto de contexto de mensaje</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"113\"/>\n        <source>Fuzzy flag</source>\n        <translation>Señalador difuso</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"116\"/>\n        <source>Programmer comment</source>\n        <translation>Comentario de programador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"119\"/>\n        <source>Reference</source>\n        <translation>Referencia</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"122\"/>\n        <source>Flags</source>\n        <translation>Señaladores</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"125\"/>\n        <source>Message identifier text end-of-line</source>\n        <translation>Fin de línea de texto identificador de mensaje</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"128\"/>\n        <source>Message string text end-of-line</source>\n        <translation>Fin de línea de texto de cadena de mensaje</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"131\"/>\n        <source>Message context text end-of-line</source>\n        <translation>Fin de línea de texto de contexto de mensaje</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPOV</name>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"267\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"270\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"273\"/>\n        <source>Comment line</source>\n        <translation>Línea de comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"276\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"279\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"282\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"285\"/>\n        <source>String</source>\n        <translation>Cadena de caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"288\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"291\"/>\n        <source>Directive</source>\n        <translation>Directiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"294\"/>\n        <source>Bad directive</source>\n        <translation>Mala directiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"297\"/>\n        <source>Objects, CSG and appearance</source>\n        <translation>Objetos, CSG y apariencia</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"300\"/>\n        <source>Types, modifiers and items</source>\n        <translation>Tipos, modificadores y elementos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"303\"/>\n        <source>Predefined identifiers</source>\n        <translation>Identificadores predefinidos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"306\"/>\n        <source>Predefined functions</source>\n        <translation>Funciones predefinidas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"309\"/>\n        <source>User defined 1</source>\n        <translation>Definido por el usuario 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"312\"/>\n        <source>User defined 2</source>\n        <translation>Definido por el usuario 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"315\"/>\n        <source>User defined 3</source>\n        <translation>Definido por el usuario 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPascal</name>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"246\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"258\"/>\n        <source>Line comment</source>\n        <translation>Comentario de línea</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"267\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"273\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"276\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"285\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"249\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"252\"/>\n        <source>&apos;{ ... }&apos; style comment</source>\n        <translation>Comentario de estilo &apos;{ ... }&apos; </translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"255\"/>\n        <source>&apos;(* ... *)&apos; style comment</source>\n        <translation>Comentario de estilo &apos;(* ... *)&apos;</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"261\"/>\n        <source>&apos;{$ ... }&apos; style pre-processor block</source>\n        <translation>Bloque de preprocesador de estilo &apos;{$ ... }&apos;</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"264\"/>\n        <source>&apos;(*$ ... *)&apos; style pre-processor block</source>\n        <translation>Bloque de preprocesador de estilo &apos;(*$ ... *)&apos;</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"270\"/>\n        <source>Hexadecimal number</source>\n        <translation>Número hexadecimal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"279\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"282\"/>\n        <source>Character</source>\n        <translation>Carácter</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"288\"/>\n        <source>Inline asm</source>\n        <translation>asm inline </translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPerl</name>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"318\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"321\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"324\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"327\"/>\n        <source>POD</source>\n        <translation>POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"330\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"333\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"336\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"339\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"342\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"345\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"348\"/>\n        <source>Scalar</source>\n        <translation>Escalar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"351\"/>\n        <source>Array</source>\n        <translation>Array</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"354\"/>\n        <source>Hash</source>\n        <translation>Hash</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"357\"/>\n        <source>Symbol table</source>\n        <translation>Tabla de símbolos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"360\"/>\n        <source>Regular expression</source>\n        <translation>Expresión regular</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"363\"/>\n        <source>Substitution</source>\n        <translation>Sustitución</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"366\"/>\n        <source>Backticks</source>\n        <translation>Comilla inversa</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"369\"/>\n        <source>Data section</source>\n        <translation>Sección de datos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"372\"/>\n        <source>Here document delimiter</source>\n        <translation>Delimitador de documento integrado (here document)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"375\"/>\n        <source>Single-quoted here document</source>\n        <translation>Documento integrado (here document) con comilla simple</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"378\"/>\n        <source>Double-quoted here document</source>\n        <translation>Documento integrado (here document) con comilla doble</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"381\"/>\n        <source>Backtick here document</source>\n        <translation>Documento integrado (here document) con comilla inversa</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"384\"/>\n        <source>Quoted string (q)</source>\n        <translation>Cadena con comillas (q)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"387\"/>\n        <source>Quoted string (qq)</source>\n        <translation>Cadena con comillas (qq)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"390\"/>\n        <source>Quoted string (qx)</source>\n        <translation>Cadena con comillas (qx)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"393\"/>\n        <source>Quoted string (qr)</source>\n        <translation>Cadena con comillas (qr)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"396\"/>\n        <source>Quoted string (qw)</source>\n        <translation>Cadena con comillas (qw)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"399\"/>\n        <source>POD verbatim</source>\n        <translation>POD textual</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"402\"/>\n        <source>Subroutine prototype</source>\n        <translation>Prototipo de subrutina</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"405\"/>\n        <source>Format identifier</source>\n        <translation>Identificador de formato</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"408\"/>\n        <source>Format body</source>\n        <translation>Cuerpo de formato</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"411\"/>\n        <source>Double-quoted string (interpolated variable)</source>\n        <translation>Cadena con doble comilla (variable interpolada)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"414\"/>\n        <source>Translation</source>\n        <translation>Traducción</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"417\"/>\n        <source>Regular expression (interpolated variable)</source>\n        <translation>Expresión regular (variable interpolada)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"420\"/>\n        <source>Substitution (interpolated variable)</source>\n        <translation>Substitución (variable interpolada)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"423\"/>\n        <source>Backticks (interpolated variable)</source>\n        <translation>Comilla hacia atrás (variable interpolada)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"426\"/>\n        <source>Double-quoted here document (interpolated variable)</source>\n        <translation>Here document con comilla doble (variable interpolada)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"429\"/>\n        <source>Backtick here document (interpolated variable)</source>\n        <translation>Here document con comilla hacia atrás (variable interpolada)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"432\"/>\n        <source>Quoted string (qq, interpolated variable)</source>\n        <translation>Cadena entrecomillada (qq, variable interpolada)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"435\"/>\n        <source>Quoted string (qx, interpolated variable)</source>\n        <translation>Cadena entrecomillada (qx, variable interpolada)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"438\"/>\n        <source>Quoted string (qr, interpolated variable)</source>\n        <translation>Cadena entrecomillada (qr, variable interpolada)</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPostScript</name>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"249\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"252\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"255\"/>\n        <source>DSC comment</source>\n        <translation>Comentario DSC</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"258\"/>\n        <source>DSC comment value</source>\n        <translation>Valor de comentario DSC</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"261\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"264\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"267\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"270\"/>\n        <source>Literal</source>\n        <translation>Literal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"273\"/>\n        <source>Immediately evaluated literal</source>\n        <translation>Literal de evaluación inmediata</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"276\"/>\n        <source>Array parenthesis</source>\n        <translation>Paréntesis de array</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"279\"/>\n        <source>Dictionary parenthesis</source>\n        <translation>Paréntesis de diccionario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"282\"/>\n        <source>Procedure parenthesis</source>\n        <translation>Paréntesis de procedimiento</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"285\"/>\n        <source>Text</source>\n        <translation>Texto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"288\"/>\n        <source>Hexadecimal string</source>\n        <translation>Cadena hexadecimal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"291\"/>\n        <source>Base85 string</source>\n        <translation>Cadena Base85</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"294\"/>\n        <source>Bad string character</source>\n        <translation>Carácter de cadena mala</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerProperties</name>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"110\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"113\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"116\"/>\n        <source>Section</source>\n        <translation>Sección</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"119\"/>\n        <source>Assignment</source>\n        <translation>Asignación</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"122\"/>\n        <source>Default value</source>\n        <translation>Valor por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"125\"/>\n        <source>Key</source>\n        <translation>Clave</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPython</name>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"225\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"228\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"231\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"234\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"237\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"240\"/>\n        <source>Triple single-quoted string</source>\n        <translation>Cadena con triple comilla simple</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"243\"/>\n        <source>Triple double-quoted string</source>\n        <translation>Cadena con triple comilla doble</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"246\"/>\n        <source>Class name</source>\n        <translation>Nombre de clase</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"249\"/>\n        <source>Function or method name</source>\n        <translation>Nombre de método o función</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"252\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"255\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"258\"/>\n        <source>Comment block</source>\n        <translation>Bloque de comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"261\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"264\"/>\n        <source>Highlighted identifier</source>\n        <translation>Identificador resaltado</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"267\"/>\n        <source>Decorator</source>\n        <translation>Decorador</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerRuby</name>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"238\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"244\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"250\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"256\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"259\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"253\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"262\"/>\n        <source>Class name</source>\n        <translation>Nombre de clase</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"265\"/>\n        <source>Function or method name</source>\n        <translation>Nombre de método o función</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"268\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"271\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"241\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"247\"/>\n        <source>POD</source>\n        <translation>POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"274\"/>\n        <source>Regular expression</source>\n        <translation>Expresión regular</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"277\"/>\n        <source>Global</source>\n        <translation>Global</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"280\"/>\n        <source>Symbol</source>\n        <translation>Símbolo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"283\"/>\n        <source>Module name</source>\n        <translation>Nombre de módulo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"286\"/>\n        <source>Instance variable</source>\n        <translation>Variable de instancia</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"289\"/>\n        <source>Class variable</source>\n        <translation>Variable de clase</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"292\"/>\n        <source>Backticks</source>\n        <translation>Comilla inversa</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"295\"/>\n        <source>Data section</source>\n        <translation>Sección de datos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"298\"/>\n        <source>Here document delimiter</source>\n        <translation>Delimitador de documento integrado (here document)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"301\"/>\n        <source>Here document</source>\n        <translation>Documento integrado (here document)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"304\"/>\n        <source>%q string</source>\n        <translation>Cadena %q</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"307\"/>\n        <source>%Q string</source>\n        <translation>Cadena %Q</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"310\"/>\n        <source>%x string</source>\n        <translation>Cadena %x</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"313\"/>\n        <source>%r string</source>\n        <translation>Cadena %r</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"316\"/>\n        <source>%w string</source>\n        <translation>Cadena %w</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"319\"/>\n        <source>Demoted keyword</source>\n        <translation>Palabra clave degradada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"322\"/>\n        <source>stdin</source>\n        <translation>stdin</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"325\"/>\n        <source>stdout</source>\n        <translation>stdout</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"328\"/>\n        <source>stderr</source>\n        <translation>stderr</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSQL</name>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"259\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"268\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"271\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"277\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadena con comillas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"286\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"289\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"262\"/>\n        <source>Comment line</source>\n        <translation>Línea de comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"265\"/>\n        <source>JavaDoc style comment</source>\n        <translation>Comentario de estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"274\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadena con comillas dobles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"280\"/>\n        <source>SQL*Plus keyword</source>\n        <translation>Palabra clave SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"283\"/>\n        <source>SQL*Plus prompt</source>\n        <translation>Prompt SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"292\"/>\n        <source>SQL*Plus comment</source>\n        <translation>Comentario SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"295\"/>\n        <source># comment line</source>\n        <translation># línea de comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"298\"/>\n        <source>JavaDoc keyword</source>\n        <translation>Palabra clave de Javadoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"301\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>Error en palabra clave de Javadoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"304\"/>\n        <source>User defined 1</source>\n        <translation>Definido por el usuario 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"307\"/>\n        <source>User defined 2</source>\n        <translation>Definido por el usuario 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"310\"/>\n        <source>User defined 3</source>\n        <translation>Definido por el usuario 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"313\"/>\n        <source>User defined 4</source>\n        <translation>Definido por el usuario 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"316\"/>\n        <source>Quoted identifier</source>\n        <translation>Identificador entrecomillado</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"319\"/>\n        <source>Quoted operator</source>\n        <translation>Operador entrecomillado</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSpice</name>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"156\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"159\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"162\"/>\n        <source>Command</source>\n        <translation>Comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"165\"/>\n        <source>Function</source>\n        <translation>Función</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"168\"/>\n        <source>Parameter</source>\n        <translation>Parámetro</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"171\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"174\"/>\n        <source>Delimiter</source>\n        <translation>Delimitador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"177\"/>\n        <source>Value</source>\n        <translation>Valor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"180\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTCL</name>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"282\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"285\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"288\"/>\n        <source>Comment line</source>\n        <translation>Línea de comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"291\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"294\"/>\n        <source>Quoted keyword</source>\n        <translation>Palabra clave entrecomillada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"297\"/>\n        <source>Quoted string</source>\n        <translation>Cadena entrecomillada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"300\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"303\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"306\"/>\n        <source>Substitution</source>\n        <translation>Sustitución</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"309\"/>\n        <source>Brace substitution</source>\n        <translation>Sustitución de corchetes</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"312\"/>\n        <source>Modifier</source>\n        <translation>Modificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"315\"/>\n        <source>Expand keyword</source>\n        <translation>Expandir palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"318\"/>\n        <source>TCL keyword</source>\n        <translation>Palabra clave TCL</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"321\"/>\n        <source>Tk keyword</source>\n        <translation>Palabra clave Tk</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"324\"/>\n        <source>iTCL keyword</source>\n        <translation>Palabra clave iTCL</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"327\"/>\n        <source>Tk command</source>\n        <translation>Comando Tk</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"330\"/>\n        <source>User defined 1</source>\n        <translation>Definido por el usuario 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"333\"/>\n        <source>User defined 2</source>\n        <translation>Definido por el usuario 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"336\"/>\n        <source>User defined 3</source>\n        <translation>Definido por el usuario 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"339\"/>\n        <source>User defined 4</source>\n        <translation>Definido por el usuario 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"342\"/>\n        <source>Comment box</source>\n        <translation>Caja de comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"345\"/>\n        <source>Comment block</source>\n        <translation>Bloque de comentario</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTeX</name>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"177\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"180\"/>\n        <source>Special</source>\n        <translation>Especial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"183\"/>\n        <source>Group</source>\n        <translation>Grupo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"186\"/>\n        <source>Symbol</source>\n        <translation>Símbolo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"189\"/>\n        <source>Command</source>\n        <translation>Comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"192\"/>\n        <source>Text</source>\n        <translation>Texto</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVHDL</name>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"197\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"200\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"203\"/>\n        <source>Comment line</source>\n        <translation>Línea de comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"206\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"209\"/>\n        <source>String</source>\n        <translation>Cadena de caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"212\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"215\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"218\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"221\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"224\"/>\n        <source>Standard operator</source>\n        <translation>Operador estándar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"227\"/>\n        <source>Attribute</source>\n        <translation>Atributo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"230\"/>\n        <source>Standard function</source>\n        <translation>Función estándar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"233\"/>\n        <source>Standard package</source>\n        <translation>Paquete estándar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"236\"/>\n        <source>Standard type</source>\n        <translation>Tipo estándar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"239\"/>\n        <source>User defined</source>\n        <translation>Definido por el usuario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"242\"/>\n        <source>Comment block</source>\n        <translation>Bloque de comentario</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVerilog</name>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"286\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"289\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"292\"/>\n        <source>Line comment</source>\n        <translation>Comentario de línea</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"295\"/>\n        <source>Bang comment</source>\n        <translation>Comentario&apos;Bang</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"298\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"301\"/>\n        <source>Primary keywords and identifiers</source>\n        <translation>Identificadores y palabras clave primarios</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"304\"/>\n        <source>String</source>\n        <translation>Cadena</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"307\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Palabras clave e identificadores secundarios</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"310\"/>\n        <source>System task</source>\n        <translation>Tarea de sistema</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"313\"/>\n        <source>Preprocessor block</source>\n        <translation>Bloque de preprocesador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"316\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"319\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"322\"/>\n        <source>Unclosed string</source>\n        <translation>Cadena sin cerrar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"325\"/>\n        <source>User defined tasks and identifiers</source>\n        <translation>Tareas definidas por el usuario e identificadores</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"328\"/>\n        <source>Keyword comment</source>\n        <translation>Comentario de palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"331\"/>\n        <source>Inactive keyword comment</source>\n        <translation>Comentario de palabra clave inactiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"334\"/>\n        <source>Input port declaration</source>\n        <translation>Declaración de puerto de input</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"337\"/>\n        <source>Inactive input port declaration</source>\n        <translation>Declaración de puerto de input inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"340\"/>\n        <source>Output port declaration</source>\n        <translation>Declaración de puerto de output</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"343\"/>\n        <source>Inactive output port declaration</source>\n        <translation>Declaración de puerto de output inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"346\"/>\n        <source>Input/output port declaration</source>\n        <translation>Declaración de puerto de input/output inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"349\"/>\n        <source>Inactive input/output port declaration</source>\n        <translation>Declaración de puerto de input/output inactivo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"352\"/>\n        <source>Port connection</source>\n        <translation>Conexión de puerto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"355\"/>\n        <source>Inactive port connection</source>\n        <translation>Conexión inactiva de puerto</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerYAML</name>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"160\"/>\n        <source>Default</source>\n        <translation>Por defecto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"163\"/>\n        <source>Comment</source>\n        <translation>Comentario</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"166\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"169\"/>\n        <source>Keyword</source>\n        <translation>Palabra clave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"172\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"175\"/>\n        <source>Reference</source>\n        <translation>Referencia</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"178\"/>\n        <source>Document delimiter</source>\n        <translation>Delimitador de documento</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"181\"/>\n        <source>Text block marker</source>\n        <translation>Marcador de bloque de texto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"184\"/>\n        <source>Syntax error marker</source>\n        <translation>Marcador de error de sintaxis</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"187\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n</context>\n<context>\n    <name>QsciScintilla</name>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4404\"/>\n        <source>&amp;Undo</source>\n        <translation>&amp;Deshacer</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4408\"/>\n        <source>&amp;Redo</source>\n        <translation>&amp;Rehacer</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4414\"/>\n        <source>Cu&amp;t</source>\n        <translation>Cor&amp;tar</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4419\"/>\n        <source>&amp;Copy</source>\n        <translation>&amp;Copiar</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4425\"/>\n        <source>&amp;Paste</source>\n        <translation>&amp;Pegar</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4429\"/>\n        <source>Delete</source>\n        <translation>Borrar</translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4436\"/>\n        <source>Select All</source>\n        <translation>Seleccionar todo</translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscintilla_fr.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"en_GB\">\n<context>\n    <name>QsciCommand</name>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"49\"/>\n        <source>Move down one line</source>\n        <translation>Déplacement d&apos;une ligne vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"59\"/>\n        <source>Extend selection down one line</source>\n        <translation>Extension de la sélection d&apos;une ligne vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"76\"/>\n        <source>Scroll view down one line</source>\n        <translation>Decendre la vue d&apos;une ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"69\"/>\n        <source>Extend rectangular selection down one line</source>\n        <translation>Extension de la sélection rectangulaire d&apos;une ligne vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"86\"/>\n        <source>Move up one line</source>\n        <translation>Déplacement d&apos;une ligne vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"96\"/>\n        <source>Extend selection up one line</source>\n        <translation>Extension de la sélection d&apos;une ligne vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"113\"/>\n        <source>Scroll view up one line</source>\n        <translation>Remonter la vue d&apos;une ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"106\"/>\n        <source>Extend rectangular selection up one line</source>\n        <translation>Extension de la sélection rectangulaire d&apos;une ligne vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"163\"/>\n        <source>Move up one paragraph</source>\n        <translation>Déplacement d&apos;un paragraphe vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"169\"/>\n        <source>Extend selection up one paragraph</source>\n        <translation>Extension de la sélection d&apos;un paragraphe vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"150\"/>\n        <source>Move down one paragraph</source>\n        <translation>Déplacement d&apos;un paragraphe vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"123\"/>\n        <source>Scroll to start of document</source>\n        <translation>Remonter au début du document</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"133\"/>\n        <source>Scroll to end of document</source>\n        <translation>Descendre à la fin du document</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"143\"/>\n        <source>Scroll vertically to centre current line</source>\n        <translation>Défiler verticalement pour centrer la ligne courante</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"156\"/>\n        <source>Extend selection down one paragraph</source>\n        <translation>Extension de la sélection d&apos;un paragraphe vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"180\"/>\n        <source>Move left one character</source>\n        <translation>Déplacement d&apos;un caractère vers la gauche</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"190\"/>\n        <source>Extend selection left one character</source>\n        <translation>Extension de la sélection d&apos;un caractère vers la gauche</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"244\"/>\n        <source>Move left one word</source>\n        <translation>Déplacement d&apos;un mot vers la gauche</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"254\"/>\n        <source>Extend selection left one word</source>\n        <translation>Extension de la sélection d&apos;un mot vers la gauche</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"201\"/>\n        <source>Extend rectangular selection left one character</source>\n        <translation>Extension de la sélection rectangulaire d&apos;un caractère vers la gauche</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"212\"/>\n        <source>Move right one character</source>\n        <translation>Déplacement d&apos;un caractère vers la droite</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"222\"/>\n        <source>Extend selection right one character</source>\n        <translation>Extension de la sélection d&apos;un caractère vers la droite</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"264\"/>\n        <source>Move right one word</source>\n        <translation>Déplacement d&apos;un mot vers la droite</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"270\"/>\n        <source>Extend selection right one word</source>\n        <translation>Extension de la sélection d&apos;un mot vers la droite</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"233\"/>\n        <source>Extend rectangular selection right one character</source>\n        <translation>Extension de la sélection rectangulaire d&apos;un caractère vers la droite</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"276\"/>\n        <source>Move to end of previous word</source>\n        <translation>Déplacement vers fin du mot précédent</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"282\"/>\n        <source>Extend selection to end of previous word</source>\n        <translation>Extension de la sélection vers fin du mot précédent</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"293\"/>\n        <source>Move to end of next word</source>\n        <translation>Déplacement vers fin du mot suivant</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"303\"/>\n        <source>Extend selection to end of next word</source>\n        <translation>Extension de la sélection vers fin du mot suivant</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"310\"/>\n        <source>Move left one word part</source>\n        <translation>Déplacement d&apos;une part de mot vers la gauche</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"316\"/>\n        <source>Extend selection left one word part</source>\n        <translation>Extension de la sélection d&apos;une part de mot vers la gauche</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"323\"/>\n        <source>Move right one word part</source>\n        <translation>Déplacement d&apos;une part de mot vers la droite</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"329\"/>\n        <source>Extend selection right one word part</source>\n        <translation>Extension de la sélection d&apos;une part de mot vers la droite</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"559\"/>\n        <source>Move up one page</source>\n        <translation>Déplacement d&apos;une page vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"565\"/>\n        <source>Extend selection up one page</source>\n        <translation>Extension de la sélection d&apos;une page vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"571\"/>\n        <source>Extend rectangular selection up one page</source>\n        <translation>Extension de la sélection rectangulaire d&apos;une page vers le haut</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"582\"/>\n        <source>Move down one page</source>\n        <translation>Déplacement d&apos;une page vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"592\"/>\n        <source>Extend selection down one page</source>\n        <translation>Extension de la sélection d&apos;une page vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"602\"/>\n        <source>Extend rectangular selection down one page</source>\n        <translation>Extension de la sélection rectangulaire d&apos;une page vers le bas</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"639\"/>\n        <source>Delete current character</source>\n        <translation>Effacement du caractère courant</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"769\"/>\n        <source>Cut selection</source>\n        <translation>Couper la sélection</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"668\"/>\n        <source>Delete word to right</source>\n        <translation>Suppression du mot de droite</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"340\"/>\n        <source>Move to start of document line</source>\n        <translation>Déplacement vers début de ligne du document</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"350\"/>\n        <source>Extend selection to start of document line</source>\n        <translation>Extension de la sélection vers début de ligne du document</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"361\"/>\n        <source>Extend rectangular selection to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"372\"/>\n        <source>Move to start of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"382\"/>\n        <source>Extend selection to start of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"389\"/>\n        <source>Move to start of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"396\"/>\n        <source>Extend selection to start of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"407\"/>\n        <source>Move to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"418\"/>\n        <source>Extend selection to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"429\"/>\n        <source>Extend rectangular selection to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"436\"/>\n        <source>Move to first visible character of display in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"443\"/>\n        <source>Extend selection to first visible character in display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"454\"/>\n        <source>Move to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"464\"/>\n        <source>Extend selection to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"475\"/>\n        <source>Extend rectangular selection to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"486\"/>\n        <source>Move to end of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"496\"/>\n        <source>Extend selection to end of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"503\"/>\n        <source>Move to end of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"510\"/>\n        <source>Extend selection to end of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"521\"/>\n        <source>Move to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"531\"/>\n        <source>Extend selection to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"542\"/>\n        <source>Move to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"552\"/>\n        <source>Extend selection to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"609\"/>\n        <source>Stuttered move up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"615\"/>\n        <source>Stuttered extend selection up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"622\"/>\n        <source>Stuttered move down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"628\"/>\n        <source>Stuttered extend selection down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"655\"/>\n        <source>Delete previous character if not at start of line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"678\"/>\n        <source>Delete right to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"695\"/>\n        <source>Delete line to right</source>\n        <translation>Suppression de la partie droite de la ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"719\"/>\n        <source>Transpose current and previous lines</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"726\"/>\n        <source>Duplicate the current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"732\"/>\n        <source>Select all</source>\n        <oldsource>Select document</oldsource>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"738\"/>\n        <source>Move selected lines up one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"744\"/>\n        <source>Move selected lines down one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"787\"/>\n        <source>Toggle insert/overtype</source>\n        <translation>Basculement Insertion /Ecrasement</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"781\"/>\n        <source>Paste</source>\n        <translation>Coller</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"775\"/>\n        <source>Copy selection</source>\n        <translation>Copier la sélection</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"793\"/>\n        <source>Insert newline</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"811\"/>\n        <source>De-indent one level</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"817\"/>\n        <source>Cancel</source>\n        <translation>Annuler</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"649\"/>\n        <source>Delete previous character</source>\n        <translation>Suppression du dernier caractère</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"662\"/>\n        <source>Delete word to left</source>\n        <translation>Suppression du mot de gauche</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"685\"/>\n        <source>Delete line to left</source>\n        <translation>Effacer la partie gauche de la ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"823\"/>\n        <source>Undo last command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"833\"/>\n        <source>Redo last command</source>\n        <translation>Refaire la dernière commande</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"805\"/>\n        <source>Indent one level</source>\n        <translation>Indentation d&apos;un niveau</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"839\"/>\n        <source>Zoom in</source>\n        <translation>Zoom avant</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"845\"/>\n        <source>Zoom out</source>\n        <translation>Zoom arrière</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"799\"/>\n        <source>Formfeed</source>\n        <translation>Chargement de la page</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"707\"/>\n        <source>Cut current line</source>\n        <translation>Couper la ligne courante</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"701\"/>\n        <source>Delete current line</source>\n        <translation>Suppression de la ligne courante</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"713\"/>\n        <source>Copy current line</source>\n        <translation>Copier la ligne courante</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"757\"/>\n        <source>Convert selection to lower case</source>\n        <translation>Conversion de la ligne courante en minuscules</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"763\"/>\n        <source>Convert selection to upper case</source>\n        <translation>Conversion de la ligne courante en majuscules</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"751\"/>\n        <source>Duplicate selection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerAVS</name>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"280\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"283\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"286\"/>\n        <source>Nested block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"289\"/>\n        <source>Line comment</source>\n        <translation>Commentaire de ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"292\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"301\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"304\"/>\n        <source>Triple double-quoted string</source>\n        <translation>Chaine de caractères HTML (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"307\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"310\"/>\n        <source>Filter</source>\n        <translation>Filtre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"313\"/>\n        <source>Plugin</source>\n        <translation>Extension</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"316\"/>\n        <source>Function</source>\n        <translation>Fonction</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"319\"/>\n        <source>Clip property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"322\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBash</name>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"193\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"196\"/>\n        <source>Error</source>\n        <translation>Erreur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"199\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"202\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"205\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"208\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"211\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"214\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"217\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"220\"/>\n        <source>Scalar</source>\n        <translation>Scalaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"223\"/>\n        <source>Parameter expansion</source>\n        <translation>Extension de paramètre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"226\"/>\n        <source>Backticks</source>\n        <translation>Quotes inverses</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"229\"/>\n        <source>Here document delimiter</source>\n        <translation>Ici délimiteur de document</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"232\"/>\n        <source>Single-quoted here document</source>\n        <translation>Document intégré guillemets simples</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBatch</name>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"164\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"167\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"170\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"173\"/>\n        <source>Label</source>\n        <translation>Titre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"176\"/>\n        <source>Hide command character</source>\n        <translation>Cacher le caratère de commande</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"179\"/>\n        <source>External command</source>\n        <translation>Commande externe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"182\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"185\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCMake</name>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"180\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"183\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"186\"/>\n        <source>String</source>\n        <translation>Chaîne de caractères</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"189\"/>\n        <source>Left quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"192\"/>\n        <source>Right quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"195\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"198\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"201\"/>\n        <source>Label</source>\n        <translation>Titre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"204\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"207\"/>\n        <source>WHILE block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"210\"/>\n        <source>FOREACH block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"213\"/>\n        <source>IF block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"216\"/>\n        <source>MACRO block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"219\"/>\n        <source>Variable within a string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"222\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCPP</name>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"354\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"357\"/>\n        <source>Inactive default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"360\"/>\n        <source>C comment</source>\n        <translation>Commentaire C</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"363\"/>\n        <source>Inactive C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"366\"/>\n        <source>C++ comment</source>\n        <translation>Commentaire C++</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"369\"/>\n        <source>Inactive C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"372\"/>\n        <source>JavaDoc style C comment</source>\n        <translation>Commentaire C de style JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"375\"/>\n        <source>Inactive JavaDoc style C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"378\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"381\"/>\n        <source>Inactive number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"384\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"387\"/>\n        <source>Inactive keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"390\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"393\"/>\n        <source>Inactive double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"396\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"399\"/>\n        <source>Inactive single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"402\"/>\n        <source>IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"405\"/>\n        <source>Inactive IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"408\"/>\n        <source>Pre-processor block</source>\n        <translation>Instructions de pré-processing</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"411\"/>\n        <source>Inactive pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"414\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"417\"/>\n        <source>Inactive operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"420\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"423\"/>\n        <source>Inactive identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"426\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"429\"/>\n        <source>Inactive unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"432\"/>\n        <source>C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"435\"/>\n        <source>Inactive C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"438\"/>\n        <source>JavaScript regular expression</source>\n        <translation>Expression régulière JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"441\"/>\n        <source>Inactive JavaScript regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"444\"/>\n        <source>JavaDoc style C++ comment</source>\n        <translation>Commentaire C++ de style JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"447\"/>\n        <source>Inactive JavaDoc style C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"450\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Seconds mots-clés et identificateurs</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"453\"/>\n        <source>Inactive secondary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"456\"/>\n        <source>JavaDoc keyword</source>\n        <translation>Mot-clé JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"459\"/>\n        <source>Inactive JavaDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"462\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>Erreur de mot-clé JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"465\"/>\n        <source>Inactive JavaDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"468\"/>\n        <source>Global classes and typedefs</source>\n        <translation>Classes globales et définitions de types</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"471\"/>\n        <source>Inactive global classes and typedefs</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"474\"/>\n        <source>C++ raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"477\"/>\n        <source>Inactive C++ raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"480\"/>\n        <source>Vala triple-quoted verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"483\"/>\n        <source>Inactive Vala triple-quoted verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"486\"/>\n        <source>Pike hash-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"489\"/>\n        <source>Inactive Pike hash-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"492\"/>\n        <source>Pre-processor C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"495\"/>\n        <source>Inactive pre-processor C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"498\"/>\n        <source>JavaDoc style pre-processor comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"501\"/>\n        <source>Inactive JavaDoc style pre-processor comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"504\"/>\n        <source>User-defined literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"507\"/>\n        <source>Inactive user-defined literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"510\"/>\n        <source>Task marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"513\"/>\n        <source>Inactive task marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"516\"/>\n        <source>Escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"519\"/>\n        <source>Inactive escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSS</name>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"225\"/>\n        <source>Tag</source>\n        <translation>Balise</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"228\"/>\n        <source>Class selector</source>\n        <translation>Classe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"231\"/>\n        <source>Pseudo-class</source>\n        <translation>Pseudo-classe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"234\"/>\n        <source>Unknown pseudo-class</source>\n        <translation>Peudo-classe inconnue</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"237\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"240\"/>\n        <source>CSS1 property</source>\n        <translation>Propriété CSS1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"243\"/>\n        <source>Unknown property</source>\n        <translation>Propriété inconnue</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"246\"/>\n        <source>Value</source>\n        <translation>Valeur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"249\"/>\n        <source>ID selector</source>\n        <translation>ID</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"252\"/>\n        <source>Important</source>\n        <translation>Important</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"255\"/>\n        <source>@-rule</source>\n        <translation>règle-@</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"258\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"261\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"264\"/>\n        <source>CSS2 property</source>\n        <translation>Propriété CSS2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"267\"/>\n        <source>Attribute</source>\n        <translation>Attribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"270\"/>\n        <source>CSS3 property</source>\n        <translation>Propriété CSS3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"273\"/>\n        <source>Pseudo-element</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"276\"/>\n        <source>Extended CSS property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"279\"/>\n        <source>Extended pseudo-class</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"282\"/>\n        <source>Extended pseudo-element</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"285\"/>\n        <source>Media rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"288\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSharp</name>\n    <message>\n        <location filename=\"qscilexercsharp.cpp\" line=\"95\"/>\n        <source>Verbatim string</source>\n        <translation>Chaine verbatim</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCoffeeScript</name>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"248\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"251\"/>\n        <source>C-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"254\"/>\n        <source>C++-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"257\"/>\n        <source>JavaDoc C-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"260\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"263\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"266\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"269\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"272\"/>\n        <source>IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"275\"/>\n        <source>Pre-processor block</source>\n        <translation>Instructions de pré-processing</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"278\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"281\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"284\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"287\"/>\n        <source>C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"290\"/>\n        <source>Regular expression</source>\n        <translation>Expression régulière</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"293\"/>\n        <source>JavaDoc C++-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"296\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Seconds mots-clés et identificateurs</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"299\"/>\n        <source>JavaDoc keyword</source>\n        <translation>Mot-clé JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"302\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>Erreur de mot-clé JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"305\"/>\n        <source>Global classes</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"308\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"311\"/>\n        <source>Block regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"314\"/>\n        <source>Block regular expression comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"317\"/>\n        <source>Instance property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerD</name>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"259\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"262\"/>\n        <source>Line comment</source>\n        <translation>Commentaire de ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"265\"/>\n        <source>DDoc style block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"268\"/>\n        <source>Nesting comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"271\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"274\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"277\"/>\n        <source>Secondary keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"280\"/>\n        <source>Documentation keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"283\"/>\n        <source>Type definition</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"286\"/>\n        <source>String</source>\n        <translation>Chaîne de caractères</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"289\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"292\"/>\n        <source>Character</source>\n        <translation>Caractère</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"301\"/>\n        <source>DDoc style line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"304\"/>\n        <source>DDoc keyword</source>\n        <translation>Mot-clé DDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"307\"/>\n        <source>DDoc keyword error</source>\n        <translation>Erreur de mot-clé DDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"310\"/>\n        <source>Backquoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"313\"/>\n        <source>Raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"316\"/>\n        <source>User defined 1</source>\n        <translation>Définition utilisateur 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"319\"/>\n        <source>User defined 2</source>\n        <translation>Définition utilisateur 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"322\"/>\n        <source>User defined 3</source>\n        <translation>Définition utilisateur 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerDiff</name>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"92\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"95\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"98\"/>\n        <source>Command</source>\n        <translation>Commande</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"101\"/>\n        <source>Header</source>\n        <translation>En-tête</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"104\"/>\n        <source>Position</source>\n        <translation>Position</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"107\"/>\n        <source>Removed line</source>\n        <translation>Ligne supprimée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"110\"/>\n        <source>Added line</source>\n        <translation>Ligne ajoutée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"113\"/>\n        <source>Changed line</source>\n        <translation>Ligne changée</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerFortran77</name>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"175\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"178\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"181\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"184\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"187\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"190\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"193\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"196\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"199\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"202\"/>\n        <source>Intrinsic function</source>\n        <translation>Fonction intrinsèque</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"205\"/>\n        <source>Extended function</source>\n        <translation>Fonction étendue</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"208\"/>\n        <source>Pre-processor block</source>\n        <translation>Instructions de pré-processing</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"211\"/>\n        <source>Dotted operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"214\"/>\n        <source>Label</source>\n        <translation>Titre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"217\"/>\n        <source>Continuation</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerHTML</name>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"553\"/>\n        <source>HTML default</source>\n        <translation>HTML par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"556\"/>\n        <source>Tag</source>\n        <translation>Balise</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"559\"/>\n        <source>Unknown tag</source>\n        <translation>Balise inconnue</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"562\"/>\n        <source>Attribute</source>\n        <translation>Attribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"565\"/>\n        <source>Unknown attribute</source>\n        <translation>Attribut inconnu</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"568\"/>\n        <source>HTML number</source>\n        <translation>Nombre HTML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"571\"/>\n        <source>HTML double-quoted string</source>\n        <translation>Chaine de caractères HTML (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"574\"/>\n        <source>HTML single-quoted string</source>\n        <translation>Chaine de caractères HTML (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"577\"/>\n        <source>Other text in a tag</source>\n        <translation>Autre texte dans les balises</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"580\"/>\n        <source>HTML comment</source>\n        <translation>Commentaire HTML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"583\"/>\n        <source>Entity</source>\n        <translation>Entité</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"586\"/>\n        <source>End of a tag</source>\n        <translation>Balise fermante</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"589\"/>\n        <source>Start of an XML fragment</source>\n        <translation>Début de block XML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"592\"/>\n        <source>End of an XML fragment</source>\n        <translation>Fin de block XML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"595\"/>\n        <source>Script tag</source>\n        <translation>Balise de script</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"598\"/>\n        <source>Start of an ASP fragment with @</source>\n        <translation>Début de block ASP avec @</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"601\"/>\n        <source>Start of an ASP fragment</source>\n        <translation>Début de block ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"604\"/>\n        <source>CDATA</source>\n        <translation>CDATA</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"607\"/>\n        <source>Start of a PHP fragment</source>\n        <translation>Début de block PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"610\"/>\n        <source>Unquoted HTML value</source>\n        <translation>Valeur HTML sans guillemets</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"613\"/>\n        <source>ASP X-Code comment</source>\n        <translation>Commentaire X-Code ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"616\"/>\n        <source>SGML default</source>\n        <translation>SGML par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"619\"/>\n        <source>SGML command</source>\n        <translation>Commande SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"622\"/>\n        <source>First parameter of an SGML command</source>\n        <translation>Premier paramètre de commande SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"625\"/>\n        <source>SGML double-quoted string</source>\n        <translation>Chaine de caractères SGML (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"628\"/>\n        <source>SGML single-quoted string</source>\n        <translation>Chaine de caractères SGML (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"631\"/>\n        <source>SGML error</source>\n        <translation>Erreur SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"634\"/>\n        <source>SGML special entity</source>\n        <translation>Entité SGML spéciale</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"637\"/>\n        <source>SGML comment</source>\n        <translation>Commentaire SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"640\"/>\n        <source>First parameter comment of an SGML command</source>\n        <translation>Premier paramètre de commentaire de commande SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"643\"/>\n        <source>SGML block default</source>\n        <translation>Block SGML par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"646\"/>\n        <source>Start of a JavaScript fragment</source>\n        <translation>Début de block JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"649\"/>\n        <source>JavaScript default</source>\n        <translation>JavaScript par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"652\"/>\n        <source>JavaScript comment</source>\n        <translation>Commentaire JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"655\"/>\n        <source>JavaScript line comment</source>\n        <translation>Commentaire de ligne JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"658\"/>\n        <source>JavaDoc style JavaScript comment</source>\n        <translation>Commentaire JavaScript de style JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"661\"/>\n        <source>JavaScript number</source>\n        <translation>Nombre JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"664\"/>\n        <source>JavaScript word</source>\n        <translation>Mot JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"667\"/>\n        <source>JavaScript keyword</source>\n        <translation>Mot-clé JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"670\"/>\n        <source>JavaScript double-quoted string</source>\n        <translation>Chaine de caractères JavaScript (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"673\"/>\n        <source>JavaScript single-quoted string</source>\n        <translation>Chaine de caractères JavaScript (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"676\"/>\n        <source>JavaScript symbol</source>\n        <translation>Symbole JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"679\"/>\n        <source>JavaScript unclosed string</source>\n        <translation>Chaine de caractères JavaScript non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"682\"/>\n        <source>JavaScript regular expression</source>\n        <translation>Expression régulière JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"685\"/>\n        <source>Start of an ASP JavaScript fragment</source>\n        <translation>Début de block JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"688\"/>\n        <source>ASP JavaScript default</source>\n        <translation>JavaScript ASP par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"691\"/>\n        <source>ASP JavaScript comment</source>\n        <translation>Commentaire JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"694\"/>\n        <source>ASP JavaScript line comment</source>\n        <translation>Commentaire de ligne JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"697\"/>\n        <source>JavaDoc style ASP JavaScript comment</source>\n        <translation>Commentaire JavaScript ASP de style JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"700\"/>\n        <source>ASP JavaScript number</source>\n        <translation>Nombre JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"703\"/>\n        <source>ASP JavaScript word</source>\n        <translation>Mot JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"706\"/>\n        <source>ASP JavaScript keyword</source>\n        <translation>Mot-clé JavaScript ASP </translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"709\"/>\n        <source>ASP JavaScript double-quoted string</source>\n        <translation>Chaine de caractères JavaScript ASP (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"712\"/>\n        <source>ASP JavaScript single-quoted string</source>\n        <translation>Chaine de caractères JavaScript ASP (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"715\"/>\n        <source>ASP JavaScript symbol</source>\n        <translation>Symbole JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"718\"/>\n        <source>ASP JavaScript unclosed string</source>\n        <translation>Chaine de caractères JavaScript ASP non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"721\"/>\n        <source>ASP JavaScript regular expression</source>\n        <translation>Expression régulière JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"724\"/>\n        <source>Start of a VBScript fragment</source>\n        <translation>Début de block VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"727\"/>\n        <source>VBScript default</source>\n        <translation>VBScript par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"730\"/>\n        <source>VBScript comment</source>\n        <translation>Commentaire VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"733\"/>\n        <source>VBScript number</source>\n        <translation>Nombre VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"736\"/>\n        <source>VBScript keyword</source>\n        <translation>Mot-clé VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"739\"/>\n        <source>VBScript string</source>\n        <translation>Chaine de caractères VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"742\"/>\n        <source>VBScript identifier</source>\n        <translation>Identificateur VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"745\"/>\n        <source>VBScript unclosed string</source>\n        <translation>Chaine de caractères VBScript non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"748\"/>\n        <source>Start of an ASP VBScript fragment</source>\n        <translation>Début de block VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"751\"/>\n        <source>ASP VBScript default</source>\n        <translation>VBScript ASP par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"754\"/>\n        <source>ASP VBScript comment</source>\n        <translation>Commentaire VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"757\"/>\n        <source>ASP VBScript number</source>\n        <translation>Nombre VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"760\"/>\n        <source>ASP VBScript keyword</source>\n        <translation>Mot-clé VBScript ASP </translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"763\"/>\n        <source>ASP VBScript string</source>\n        <translation>Chaine de caractères VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"766\"/>\n        <source>ASP VBScript identifier</source>\n        <translation>Identificateur VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"769\"/>\n        <source>ASP VBScript unclosed string</source>\n        <translation>Chaine de caractères VBScript ASP non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"772\"/>\n        <source>Start of a Python fragment</source>\n        <translation>Début de block Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"775\"/>\n        <source>Python default</source>\n        <translation>Python par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"778\"/>\n        <source>Python comment</source>\n        <translation>Commentaire Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"781\"/>\n        <source>Python number</source>\n        <translation>Nombre Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"784\"/>\n        <source>Python double-quoted string</source>\n        <translation>Chaine de caractères Python (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"787\"/>\n        <source>Python single-quoted string</source>\n        <translation>Chaine de caractères Python (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"790\"/>\n        <source>Python keyword</source>\n        <translation>Mot-clé Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"793\"/>\n        <source>Python triple double-quoted string</source>\n        <translation>Chaine de caractères Python (triples guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"796\"/>\n        <source>Python triple single-quoted string</source>\n        <translation>Chaine de caractères Python (triples guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"799\"/>\n        <source>Python class name</source>\n        <translation>Nom de classe Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"802\"/>\n        <source>Python function or method name</source>\n        <translation>Méthode ou fonction Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"805\"/>\n        <source>Python operator</source>\n        <translation>Opérateur Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"808\"/>\n        <source>Python identifier</source>\n        <translation>Identificateur Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"811\"/>\n        <source>Start of an ASP Python fragment</source>\n        <translation>Début de block Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"814\"/>\n        <source>ASP Python default</source>\n        <translation>Python ASP par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"817\"/>\n        <source>ASP Python comment</source>\n        <translation>Commentaire Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"820\"/>\n        <source>ASP Python number</source>\n        <translation>Nombre Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"823\"/>\n        <source>ASP Python double-quoted string</source>\n        <translation>Chaine de caractères Python ASP (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"826\"/>\n        <source>ASP Python single-quoted string</source>\n        <translation>Chaine de caractères Python ASP (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"829\"/>\n        <source>ASP Python keyword</source>\n        <translation>Mot-clé Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"832\"/>\n        <source>ASP Python triple double-quoted string</source>\n        <translation>Chaine de caractères Python ASP (triples guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"835\"/>\n        <source>ASP Python triple single-quoted string</source>\n        <translation>Chaine de caractères Python ASP (triples guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"838\"/>\n        <source>ASP Python class name</source>\n        <translation>Nom de classe Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"841\"/>\n        <source>ASP Python function or method name</source>\n        <translation>Méthode ou fonction Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"844\"/>\n        <source>ASP Python operator</source>\n        <translation>Opérateur Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"847\"/>\n        <source>ASP Python identifier</source>\n        <translation>Identificateur Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"850\"/>\n        <source>PHP default</source>\n        <translation>PHP par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"853\"/>\n        <source>PHP double-quoted string</source>\n        <translation>Chaine de caractères PHP (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"856\"/>\n        <source>PHP single-quoted string</source>\n        <translation>Chaine de caractères PHP (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"859\"/>\n        <source>PHP keyword</source>\n        <translation>Mot-clé PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"862\"/>\n        <source>PHP number</source>\n        <translation>Nombre PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"865\"/>\n        <source>PHP variable</source>\n        <translation>Variable PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"868\"/>\n        <source>PHP comment</source>\n        <translation>Commentaire PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"871\"/>\n        <source>PHP line comment</source>\n        <translation>Commentaire de ligne PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"874\"/>\n        <source>PHP double-quoted variable</source>\n        <translation>Variable PHP (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"877\"/>\n        <source>PHP operator</source>\n        <translation>Opérateur PHP</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerIDL</name>\n    <message>\n        <location filename=\"qscilexeridl.cpp\" line=\"87\"/>\n        <source>UUID</source>\n        <translation>UUID</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJSON</name>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"150\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"153\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"156\"/>\n        <source>String</source>\n        <translation>Chaîne de caractères</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"159\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"162\"/>\n        <source>Property</source>\n        <translation>Propriété</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"165\"/>\n        <source>Escape sequence</source>\n        <translation>Séquence d&apos;échappement</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"168\"/>\n        <source>Line comment</source>\n        <translation>Commentaire de ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"171\"/>\n        <source>Block comment</source>\n        <translation>Block de commentaires</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"174\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"177\"/>\n        <source>IRI</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"180\"/>\n        <source>JSON-LD compact IRI</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"183\"/>\n        <source>JSON keyword</source>\n        <translation>Mot-clé JSON</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"186\"/>\n        <source>JSON-LD keyword</source>\n        <translation>Mot-clé JSON-LD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"189\"/>\n        <source>Parsing error</source>\n        <translation>Erreur d&apos;analyse</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJavaScript</name>\n    <message>\n        <location filename=\"qscilexerjavascript.cpp\" line=\"97\"/>\n        <source>Regular expression</source>\n        <translation>Expression régulière</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerLua</name>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"217\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"220\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"223\"/>\n        <source>Line comment</source>\n        <translation>Commentaire de ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"226\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"229\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"232\"/>\n        <source>String</source>\n        <translation>Chaîne de caractères</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"235\"/>\n        <source>Character</source>\n        <translation>Caractère</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"238\"/>\n        <source>Literal string</source>\n        <translation>Chaîne littérale</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"241\"/>\n        <source>Preprocessor</source>\n        <translation>Préprocessing</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"244\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"247\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"250\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"253\"/>\n        <source>Basic functions</source>\n        <translation>Fonctions de base</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"256\"/>\n        <source>String, table and maths functions</source>\n        <translation>Fonctions sur les chaines, tables et fonctions math</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"259\"/>\n        <source>Coroutines, i/o and system facilities</source>\n        <translation>Coroutines, i/o et fonctions système</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"262\"/>\n        <source>User defined 1</source>\n        <translation>Définition utilisateur 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"265\"/>\n        <source>User defined 2</source>\n        <translation>Définition utilisateur 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"268\"/>\n        <source>User defined 3</source>\n        <translation>Définition utilisateur 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"271\"/>\n        <source>User defined 4</source>\n        <translation>Définition utilisateur 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"274\"/>\n        <source>Label</source>\n        <translation>Titre</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMakefile</name>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"116\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"119\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"122\"/>\n        <source>Preprocessor</source>\n        <translation>Préprocessing</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"125\"/>\n        <source>Variable</source>\n        <translation>Variable</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"128\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"131\"/>\n        <source>Target</source>\n        <translation>Cible</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"134\"/>\n        <source>Error</source>\n        <translation>Erreur</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMarkdown</name>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"212\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"215\"/>\n        <source>Special</source>\n        <translation>Spécial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"218\"/>\n        <source>Strong emphasis using double asterisks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"221\"/>\n        <source>Strong emphasis using double underscores</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"224\"/>\n        <source>Emphasis using single asterisks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"227\"/>\n        <source>Emphasis using single underscores</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"230\"/>\n        <source>Level 1 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"233\"/>\n        <source>Level 2 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"236\"/>\n        <source>Level 3 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"239\"/>\n        <source>Level 4 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"242\"/>\n        <source>Level 5 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"245\"/>\n        <source>Level 6 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"248\"/>\n        <source>Pre-char</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"251\"/>\n        <source>Unordered list item</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"254\"/>\n        <source>Ordered list item</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"257\"/>\n        <source>Block quote</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"260\"/>\n        <source>Strike out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"263\"/>\n        <source>Horizontal rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"266\"/>\n        <source>Link</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"269\"/>\n        <source>Code between backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"272\"/>\n        <source>Code between double backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"275\"/>\n        <source>Code block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMatlab</name>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"123\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"126\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"129\"/>\n        <source>Command</source>\n        <translation>Commande</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"132\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"135\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"138\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"141\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"144\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"147\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPO</name>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"89\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"92\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"95\"/>\n        <source>Message identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"98\"/>\n        <source>Message identifier text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"101\"/>\n        <source>Message string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"104\"/>\n        <source>Message string text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"107\"/>\n        <source>Message context</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"110\"/>\n        <source>Message context text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"113\"/>\n        <source>Fuzzy flag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"116\"/>\n        <source>Programmer comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"119\"/>\n        <source>Reference</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"122\"/>\n        <source>Flags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"125\"/>\n        <source>Message identifier text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"128\"/>\n        <source>Message string text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"131\"/>\n        <source>Message context text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPOV</name>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"267\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"270\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"273\"/>\n        <source>Comment line</source>\n        <translation>Ligne commentée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"276\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"279\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"282\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"285\"/>\n        <source>String</source>\n        <translation>Chaîne de caractères</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"288\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"291\"/>\n        <source>Directive</source>\n        <translation>Directive</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"294\"/>\n        <source>Bad directive</source>\n        <translation>Mauvaise directive</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"297\"/>\n        <source>Objects, CSG and appearance</source>\n        <translation>Objets, CSG et apparence</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"300\"/>\n        <source>Types, modifiers and items</source>\n        <translation>Types, modifieurs et éléments</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"303\"/>\n        <source>Predefined identifiers</source>\n        <translation>Identifiants prédéfinis</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"306\"/>\n        <source>Predefined functions</source>\n        <translation>Fonctions prédéfinies</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"309\"/>\n        <source>User defined 1</source>\n        <translation>Définition utilisateur 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"312\"/>\n        <source>User defined 2</source>\n        <translation>Définition utilisateur 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"315\"/>\n        <source>User defined 3</source>\n        <translation>Définition utilisateur 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPascal</name>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"246\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"258\"/>\n        <source>Line comment</source>\n        <translation>Commentaire de ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"267\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"273\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"276\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"285\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"249\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"252\"/>\n        <source>&apos;{ ... }&apos; style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"255\"/>\n        <source>&apos;(* ... *)&apos; style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"261\"/>\n        <source>&apos;{$ ... }&apos; style pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"264\"/>\n        <source>&apos;(*$ ... *)&apos; style pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"270\"/>\n        <source>Hexadecimal number</source>\n        <translation>Nombre hexadécimal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"279\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"282\"/>\n        <source>Character</source>\n        <translation>Caractère</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"288\"/>\n        <source>Inline asm</source>\n        <translation>Asm en ligne</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPerl</name>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"318\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"321\"/>\n        <source>Error</source>\n        <translation>Erreur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"324\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"327\"/>\n        <source>POD</source>\n        <translation>POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"330\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"333\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"336\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"339\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"342\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"345\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"348\"/>\n        <source>Scalar</source>\n        <translation>Scalaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"351\"/>\n        <source>Array</source>\n        <translation>Tableau</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"354\"/>\n        <source>Hash</source>\n        <translation>Hashage</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"357\"/>\n        <source>Symbol table</source>\n        <translation>Table de symboles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"360\"/>\n        <source>Regular expression</source>\n        <translation>Expression régulière</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"363\"/>\n        <source>Substitution</source>\n        <translation>Substitution</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"366\"/>\n        <source>Backticks</source>\n        <translation>Quotes inverses</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"369\"/>\n        <source>Data section</source>\n        <translation>Section de données</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"372\"/>\n        <source>Here document delimiter</source>\n        <translation>Ici délimiteur de document</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"375\"/>\n        <source>Single-quoted here document</source>\n        <translation>Document intégré guillemets simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"378\"/>\n        <source>Double-quoted here document</source>\n        <translation>Document intégré guillemets doubles</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"381\"/>\n        <source>Backtick here document</source>\n        <translation>Document intégré quotes inverses</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"384\"/>\n        <source>Quoted string (q)</source>\n        <translation>Chaine quotée (q)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"387\"/>\n        <source>Quoted string (qq)</source>\n        <translation>Chaine quotée (qq)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"390\"/>\n        <source>Quoted string (qx)</source>\n        <translation>Chaine quotée (qx)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"393\"/>\n        <source>Quoted string (qr)</source>\n        <translation>Chaine quotée (qr)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"396\"/>\n        <source>Quoted string (qw)</source>\n        <translation>Chaine quotée (qw)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"399\"/>\n        <source>POD verbatim</source>\n        <translation>POD verbatim</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"402\"/>\n        <source>Subroutine prototype</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"405\"/>\n        <source>Format identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"408\"/>\n        <source>Format body</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"411\"/>\n        <source>Double-quoted string (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"414\"/>\n        <source>Translation</source>\n        <translation>Traduction</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"417\"/>\n        <source>Regular expression (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"420\"/>\n        <source>Substitution (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"423\"/>\n        <source>Backticks (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"426\"/>\n        <source>Double-quoted here document (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"429\"/>\n        <source>Backtick here document (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"432\"/>\n        <source>Quoted string (qq, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"435\"/>\n        <source>Quoted string (qx, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"438\"/>\n        <source>Quoted string (qr, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPostScript</name>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"249\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"252\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"255\"/>\n        <source>DSC comment</source>\n        <translation>Commentaire DSC</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"258\"/>\n        <source>DSC comment value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"261\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"264\"/>\n        <source>Name</source>\n        <translation>Nom</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"267\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"270\"/>\n        <source>Literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"273\"/>\n        <source>Immediately evaluated literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"276\"/>\n        <source>Array parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"279\"/>\n        <source>Dictionary parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"282\"/>\n        <source>Procedure parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"285\"/>\n        <source>Text</source>\n        <translation>Texte</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"288\"/>\n        <source>Hexadecimal string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"291\"/>\n        <source>Base85 string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"294\"/>\n        <source>Bad string character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerProperties</name>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"110\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"113\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"116\"/>\n        <source>Section</source>\n        <translation>Section</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"119\"/>\n        <source>Assignment</source>\n        <translation>Affectation</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"122\"/>\n        <source>Default value</source>\n        <translation>Valeur par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"125\"/>\n        <source>Key</source>\n        <translation>Clé</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPython</name>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"225\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"228\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"231\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"234\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"237\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"240\"/>\n        <source>Triple single-quoted string</source>\n        <translation>Chaine de caractères HTML (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"243\"/>\n        <source>Triple double-quoted string</source>\n        <translation>Chaine de caractères HTML (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"246\"/>\n        <source>Class name</source>\n        <translation>Nom de classe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"249\"/>\n        <source>Function or method name</source>\n        <translation>Nom de méthode ou de fonction</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"252\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"255\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"258\"/>\n        <source>Comment block</source>\n        <translation>Block de commentaires</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"261\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"264\"/>\n        <source>Highlighted identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"267\"/>\n        <source>Decorator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerRuby</name>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"238\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"244\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"250\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"256\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"259\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"253\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"262\"/>\n        <source>Class name</source>\n        <translation>Nom de classe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"265\"/>\n        <source>Function or method name</source>\n        <translation>Nom de méthode ou de fonction</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"268\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"271\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"241\"/>\n        <source>Error</source>\n        <translation>Erreur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"247\"/>\n        <source>POD</source>\n        <translation>POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"274\"/>\n        <source>Regular expression</source>\n        <translation>Expression régulière</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"277\"/>\n        <source>Global</source>\n        <translation>Global</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"280\"/>\n        <source>Symbol</source>\n        <translation>Symbole</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"283\"/>\n        <source>Module name</source>\n        <translation>Nom de module</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"286\"/>\n        <source>Instance variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"289\"/>\n        <source>Class variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"292\"/>\n        <source>Backticks</source>\n        <translation>Quotes inverses</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"295\"/>\n        <source>Data section</source>\n        <translation>Section de données</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"298\"/>\n        <source>Here document delimiter</source>\n        <translation>Ici délimiteur de document</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"301\"/>\n        <source>Here document</source>\n        <translation>Ici document</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"304\"/>\n        <source>%q string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"307\"/>\n        <source>%Q string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"310\"/>\n        <source>%x string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"313\"/>\n        <source>%r string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"316\"/>\n        <source>%w string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"319\"/>\n        <source>Demoted keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"322\"/>\n        <source>stdin</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"325\"/>\n        <source>stdout</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"328\"/>\n        <source>stderr</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSQL</name>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"259\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"268\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"271\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"277\"/>\n        <source>Single-quoted string</source>\n        <translation>Chaine de caractères (guillemets simples)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"286\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"289\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"262\"/>\n        <source>Comment line</source>\n        <translation>Ligne commentée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"265\"/>\n        <source>JavaDoc style comment</source>\n        <translation>Commentaire style JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"274\"/>\n        <source>Double-quoted string</source>\n        <translation>Chaine de caractères (guillemets doubles)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"280\"/>\n        <source>SQL*Plus keyword</source>\n        <translation>Mot-clé SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"283\"/>\n        <source>SQL*Plus prompt</source>\n        <translation>Prompt SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"292\"/>\n        <source>SQL*Plus comment</source>\n        <translation>Commentaire SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"295\"/>\n        <source># comment line</source>\n        <translation># Ligne commentée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"298\"/>\n        <source>JavaDoc keyword</source>\n        <translation>Mot-clé JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"301\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>Erreur de mot-clé JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"304\"/>\n        <source>User defined 1</source>\n        <translation>Définition utilisateur 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"307\"/>\n        <source>User defined 2</source>\n        <translation>Définition utilisateur 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"310\"/>\n        <source>User defined 3</source>\n        <translation>Définition utilisateur 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"313\"/>\n        <source>User defined 4</source>\n        <translation>Définition utilisateur 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"316\"/>\n        <source>Quoted identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"319\"/>\n        <source>Quoted operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSpice</name>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"156\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"159\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"162\"/>\n        <source>Command</source>\n        <translation>Commande</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"165\"/>\n        <source>Function</source>\n        <translation>Fonction</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"168\"/>\n        <source>Parameter</source>\n        <translation>Paramètre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"171\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"174\"/>\n        <source>Delimiter</source>\n        <translation>Délimiteur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"177\"/>\n        <source>Value</source>\n        <translation>Valeur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"180\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTCL</name>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"282\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"285\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"288\"/>\n        <source>Comment line</source>\n        <translation>Ligne commentée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"291\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"294\"/>\n        <source>Quoted keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"297\"/>\n        <source>Quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"300\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"303\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"306\"/>\n        <source>Substitution</source>\n        <translation>Substitution</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"309\"/>\n        <source>Brace substitution</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"312\"/>\n        <source>Modifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"315\"/>\n        <source>Expand keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"318\"/>\n        <source>TCL keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"321\"/>\n        <source>Tk keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"324\"/>\n        <source>iTCL keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"327\"/>\n        <source>Tk command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"330\"/>\n        <source>User defined 1</source>\n        <translation>Définition utilisateur 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"333\"/>\n        <source>User defined 2</source>\n        <translation>Définition utilisateur 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"336\"/>\n        <source>User defined 3</source>\n        <translation>Définition utilisateur 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"339\"/>\n        <source>User defined 4</source>\n        <translation>Définition utilisateur 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"342\"/>\n        <source>Comment box</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"345\"/>\n        <source>Comment block</source>\n        <translation>Block de commentaires</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTeX</name>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"177\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"180\"/>\n        <source>Special</source>\n        <translation>Spécial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"183\"/>\n        <source>Group</source>\n        <translation>Groupe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"186\"/>\n        <source>Symbol</source>\n        <translation>Symbole</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"189\"/>\n        <source>Command</source>\n        <translation>Commande</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"192\"/>\n        <source>Text</source>\n        <translation>Texte</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVHDL</name>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"197\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"200\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"203\"/>\n        <source>Comment line</source>\n        <translation>Ligne commentée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"206\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"209\"/>\n        <source>String</source>\n        <translation>Chaîne de caractères</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"212\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"215\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"218\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"221\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"224\"/>\n        <source>Standard operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"227\"/>\n        <source>Attribute</source>\n        <translation>Attribut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"230\"/>\n        <source>Standard function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"233\"/>\n        <source>Standard package</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"236\"/>\n        <source>Standard type</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"239\"/>\n        <source>User defined</source>\n        <translation>Définition utilisateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"242\"/>\n        <source>Comment block</source>\n        <translation>Block de commentaires</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVerilog</name>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"286\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"289\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"292\"/>\n        <source>Line comment</source>\n        <translation>Commentaire de ligne</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"295\"/>\n        <source>Bang comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"298\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"301\"/>\n        <source>Primary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"304\"/>\n        <source>String</source>\n        <translation>Chaîne de caractères</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"307\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Seconds mots-clés et identificateurs</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"310\"/>\n        <source>System task</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"313\"/>\n        <source>Preprocessor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"316\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"319\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"322\"/>\n        <source>Unclosed string</source>\n        <translation>Chaine de caractères non refermée</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"325\"/>\n        <source>User defined tasks and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"328\"/>\n        <source>Keyword comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"331\"/>\n        <source>Inactive keyword comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"334\"/>\n        <source>Input port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"337\"/>\n        <source>Inactive input port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"340\"/>\n        <source>Output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"343\"/>\n        <source>Inactive output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"346\"/>\n        <source>Input/output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"349\"/>\n        <source>Inactive input/output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"352\"/>\n        <source>Port connection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"355\"/>\n        <source>Inactive port connection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerYAML</name>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"160\"/>\n        <source>Default</source>\n        <translation>Par défaut</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"163\"/>\n        <source>Comment</source>\n        <translation>Commentaire</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"166\"/>\n        <source>Identifier</source>\n        <translation>Identificateur</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"169\"/>\n        <source>Keyword</source>\n        <translation>Mot-clé</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"172\"/>\n        <source>Number</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"175\"/>\n        <source>Reference</source>\n        <translation>Référence</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"178\"/>\n        <source>Document delimiter</source>\n        <translation>Délimiteur de document</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"181\"/>\n        <source>Text block marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"184\"/>\n        <source>Syntax error marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"187\"/>\n        <source>Operator</source>\n        <translation>Opérateur</translation>\n    </message>\n</context>\n<context>\n    <name>QsciScintilla</name>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4404\"/>\n        <source>&amp;Undo</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4408\"/>\n        <source>&amp;Redo</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4414\"/>\n        <source>Cu&amp;t</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4419\"/>\n        <source>&amp;Copy</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4425\"/>\n        <source>&amp;Paste</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4429\"/>\n        <source>Delete</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4436\"/>\n        <source>Select All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscintilla_pt_br.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\">\n<context>\n    <name>QsciCommand</name>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"49\"/>\n        <source>Move down one line</source>\n        <translation>Mover uma linha para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"59\"/>\n        <source>Extend selection down one line</source>\n        <translation>Extender a seleção uma linha para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"76\"/>\n        <source>Scroll view down one line</source>\n        <translation>Descer a visão uma linha para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"69\"/>\n        <source>Extend rectangular selection down one line</source>\n        <translation>Extender a seleção retangular uma linha para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"86\"/>\n        <source>Move up one line</source>\n        <translation>Mover uma linha para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"96\"/>\n        <source>Extend selection up one line</source>\n        <translation>Extender a seleção uma linha para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"113\"/>\n        <source>Scroll view up one line</source>\n        <translation>Subir a visão uma linha para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"106\"/>\n        <source>Extend rectangular selection up one line</source>\n        <translation>Extender a seleção retangular uma linha para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"163\"/>\n        <source>Move up one paragraph</source>\n        <translation>Mover um paragrafo para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"169\"/>\n        <source>Extend selection up one paragraph</source>\n        <translation>Extender a seleção um paragrafo para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"150\"/>\n        <source>Move down one paragraph</source>\n        <translation>Mover um paragrafo para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"123\"/>\n        <source>Scroll to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"133\"/>\n        <source>Scroll to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"143\"/>\n        <source>Scroll vertically to centre current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"156\"/>\n        <source>Extend selection down one paragraph</source>\n        <translation>Extender a seleção  um paragrafo para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"180\"/>\n        <source>Move left one character</source>\n        <translation>Mover um caractere para a esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"190\"/>\n        <source>Extend selection left one character</source>\n        <translation>Extender a seleção um caractere para esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"244\"/>\n        <source>Move left one word</source>\n        <translation>Mover uma palavra para esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"254\"/>\n        <source>Extend selection left one word</source>\n        <translation>Extender a seleção uma palavra para esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"201\"/>\n        <source>Extend rectangular selection left one character</source>\n        <translation>Extender a seleção retangular um caractere para esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"212\"/>\n        <source>Move right one character</source>\n        <translation>Mover um caractere para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"222\"/>\n        <source>Extend selection right one character</source>\n        <translation>Extender a seleção um caractere para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"264\"/>\n        <source>Move right one word</source>\n        <translation>Mover uma palavra para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"270\"/>\n        <source>Extend selection right one word</source>\n        <translation>Extender a seleção uma palavra para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"233\"/>\n        <source>Extend rectangular selection right one character</source>\n        <translation>Extender a seleção retangular um caractere para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"276\"/>\n        <source>Move to end of previous word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"282\"/>\n        <source>Extend selection to end of previous word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"293\"/>\n        <source>Move to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"303\"/>\n        <source>Extend selection to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"310\"/>\n        <source>Move left one word part</source>\n        <translation>Mover uma parte da palavra para esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"316\"/>\n        <source>Extend selection left one word part</source>\n        <translation>Extender a seleção uma parte de palavra para esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"323\"/>\n        <source>Move right one word part</source>\n        <translation>Mover uma parte da palavra para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"329\"/>\n        <source>Extend selection right one word part</source>\n        <translation>Extender a seleção uma parte de palavra para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"559\"/>\n        <source>Move up one page</source>\n        <translation>Mover uma página para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"565\"/>\n        <source>Extend selection up one page</source>\n        <translation>Extender a seleção uma página para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"571\"/>\n        <source>Extend rectangular selection up one page</source>\n        <translation>Extender a seleção retangular uma página para cima</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"582\"/>\n        <source>Move down one page</source>\n        <translation>Mover uma página para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"592\"/>\n        <source>Extend selection down one page</source>\n        <translation>Extender a seleção uma página para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"602\"/>\n        <source>Extend rectangular selection down one page</source>\n        <translation>Extender a seleção retangular uma página para baixo</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"639\"/>\n        <source>Delete current character</source>\n        <translation>Excluir caractere atual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"769\"/>\n        <source>Cut selection</source>\n        <translation>Recortar seleção</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"668\"/>\n        <source>Delete word to right</source>\n        <translation>Excluir palavra para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"340\"/>\n        <source>Move to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"350\"/>\n        <source>Extend selection to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"361\"/>\n        <source>Extend rectangular selection to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"372\"/>\n        <source>Move to start of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"382\"/>\n        <source>Extend selection to start of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"389\"/>\n        <source>Move to start of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"396\"/>\n        <source>Extend selection to start of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"407\"/>\n        <source>Move to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"418\"/>\n        <source>Extend selection to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"429\"/>\n        <source>Extend rectangular selection to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"436\"/>\n        <source>Move to first visible character of display in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"443\"/>\n        <source>Extend selection to first visible character in display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"454\"/>\n        <source>Move to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"464\"/>\n        <source>Extend selection to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"475\"/>\n        <source>Extend rectangular selection to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"486\"/>\n        <source>Move to end of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"496\"/>\n        <source>Extend selection to end of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"503\"/>\n        <source>Move to end of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"510\"/>\n        <source>Extend selection to end of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"521\"/>\n        <source>Move to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"531\"/>\n        <source>Extend selection to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"542\"/>\n        <source>Move to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"552\"/>\n        <source>Extend selection to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"609\"/>\n        <source>Stuttered move up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"615\"/>\n        <source>Stuttered extend selection up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"622\"/>\n        <source>Stuttered move down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"628\"/>\n        <source>Stuttered extend selection down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"655\"/>\n        <source>Delete previous character if not at start of line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"678\"/>\n        <source>Delete right to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"695\"/>\n        <source>Delete line to right</source>\n        <translation>Excluir linha para direita</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"719\"/>\n        <source>Transpose current and previous lines</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"726\"/>\n        <source>Duplicate the current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"732\"/>\n        <source>Select all</source>\n        <oldsource>Select document</oldsource>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"738\"/>\n        <source>Move selected lines up one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"744\"/>\n        <source>Move selected lines down one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"787\"/>\n        <source>Toggle insert/overtype</source>\n        <translation>Alternar entre modo de inserir/sobreescrever</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"781\"/>\n        <source>Paste</source>\n        <translation>Copiar</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"775\"/>\n        <source>Copy selection</source>\n        <translation>Copiar seleção</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"793\"/>\n        <source>Insert newline</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"811\"/>\n        <source>De-indent one level</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"817\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"649\"/>\n        <source>Delete previous character</source>\n        <translation>Excluir caractere anterior</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"662\"/>\n        <source>Delete word to left</source>\n        <translation>Excluir palavra a esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"685\"/>\n        <source>Delete line to left</source>\n        <translation>Excluir linha a esquerda</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"823\"/>\n        <source>Undo last command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"833\"/>\n        <source>Redo last command</source>\n        <translation>Refazer último comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"805\"/>\n        <source>Indent one level</source>\n        <translation>Indentar um nível</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"839\"/>\n        <source>Zoom in</source>\n        <translation>Aumentar zoom</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"845\"/>\n        <source>Zoom out</source>\n        <translation>Diminuir zoom</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"799\"/>\n        <source>Formfeed</source>\n        <translation>Alimentação da Página</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"707\"/>\n        <source>Cut current line</source>\n        <translation>Configurar linha atual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"701\"/>\n        <source>Delete current line</source>\n        <translation>Excluir linha atual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"713\"/>\n        <source>Copy current line</source>\n        <translation>Copiar linha atual</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"757\"/>\n        <source>Convert selection to lower case</source>\n        <translation>Converter a seleção para minúscula</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"763\"/>\n        <source>Convert selection to upper case</source>\n        <translation>Converter a seleção para maiúscula</translation>\n    </message>\n    <message>\n        <location filename=\"qscicommandset.cpp\" line=\"751\"/>\n        <source>Duplicate selection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerAVS</name>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"280\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"283\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"286\"/>\n        <source>Nested block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"289\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Comentar Linha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"292\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"301\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"304\"/>\n        <source>Triple double-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por três aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"307\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"310\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"313\"/>\n        <source>Plugin</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"316\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"319\"/>\n        <source>Clip property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeravs.cpp\" line=\"322\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBash</name>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"193\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"196\"/>\n        <source>Error</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"199\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"202\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"205\"/>\n        <source>Keyword</source>\n        <translation>Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"208\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"211\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"214\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"217\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"220\"/>\n        <source>Scalar</source>\n        <translation>Escalar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"223\"/>\n        <source>Parameter expansion</source>\n        <translation>Parâmetro de Expansão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"226\"/>\n        <source>Backticks</source>\n        <translation>Aspas Invertidas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"229\"/>\n        <source>Here document delimiter</source>\n        <translation>Delimitador de &quot;here documents&quot;</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbash.cpp\" line=\"232\"/>\n        <source>Single-quoted here document</source>\n        <translation>&quot;here document&quot; envolvido por aspas simples</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBatch</name>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"164\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"167\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"170\"/>\n        <source>Keyword</source>\n        <translation>Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"173\"/>\n        <source>Label</source>\n        <translation>Rótulo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"176\"/>\n        <source>Hide command character</source>\n        <translation>Esconder caractere de comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"179\"/>\n        <source>External command</source>\n        <translation>Comando externo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"182\"/>\n        <source>Variable</source>\n        <translation>Variável</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerbatch.cpp\" line=\"185\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCMake</name>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"180\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"183\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"186\"/>\n        <source>String</source>\n        <translation type=\"unfinished\">Cadeia de Caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"189\"/>\n        <source>Left quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"192\"/>\n        <source>Right quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"195\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"198\"/>\n        <source>Variable</source>\n        <translation type=\"unfinished\">Variável</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"201\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\">Rótulo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"204\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"207\"/>\n        <source>WHILE block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"210\"/>\n        <source>FOREACH block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"213\"/>\n        <source>IF block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"216\"/>\n        <source>MACRO block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"219\"/>\n        <source>Variable within a string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercmake.cpp\" line=\"222\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCPP</name>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"354\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"357\"/>\n        <source>Inactive default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"360\"/>\n        <source>C comment</source>\n        <translation>Comentário C</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"363\"/>\n        <source>Inactive C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"366\"/>\n        <source>C++ comment</source>\n        <translation>Comentário C++</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"369\"/>\n        <source>Inactive C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"372\"/>\n        <source>JavaDoc style C comment</source>\n        <translation>Comentário JavaDoc estilo C</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"375\"/>\n        <source>Inactive JavaDoc style C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"378\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"381\"/>\n        <source>Inactive number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"384\"/>\n        <source>Keyword</source>\n        <translation>Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"387\"/>\n        <source>Inactive keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"390\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"393\"/>\n        <source>Inactive double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"396\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"399\"/>\n        <source>Inactive single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"402\"/>\n        <source>IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"405\"/>\n        <source>Inactive IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"408\"/>\n        <source>Pre-processor block</source>\n        <translation>Instruções de pré-processamento</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"411\"/>\n        <source>Inactive pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"414\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"417\"/>\n        <source>Inactive operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"420\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"423\"/>\n        <source>Inactive identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"426\"/>\n        <source>Unclosed string</source>\n        <translation>Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"429\"/>\n        <source>Inactive unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"432\"/>\n        <source>C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"435\"/>\n        <source>Inactive C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"438\"/>\n        <source>JavaScript regular expression</source>\n        <translation type=\"unfinished\">Expressão regular JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"441\"/>\n        <source>Inactive JavaScript regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"444\"/>\n        <source>JavaDoc style C++ comment</source>\n        <translation>Comentário JavaDoc estilo C++</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"447\"/>\n        <source>Inactive JavaDoc style C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"450\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation>Identificadores e palavras chave secundárias</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"453\"/>\n        <source>Inactive secondary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"456\"/>\n        <source>JavaDoc keyword</source>\n        <translation>Palavra chave JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"459\"/>\n        <source>Inactive JavaDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"462\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>Erro de palavra chave do JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"465\"/>\n        <source>Inactive JavaDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"468\"/>\n        <source>Global classes and typedefs</source>\n        <translation>Classes e definições de tipo globais</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"471\"/>\n        <source>Inactive global classes and typedefs</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"474\"/>\n        <source>C++ raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"477\"/>\n        <source>Inactive C++ raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"480\"/>\n        <source>Vala triple-quoted verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"483\"/>\n        <source>Inactive Vala triple-quoted verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"486\"/>\n        <source>Pike hash-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"489\"/>\n        <source>Inactive Pike hash-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"492\"/>\n        <source>Pre-processor C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"495\"/>\n        <source>Inactive pre-processor C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"498\"/>\n        <source>JavaDoc style pre-processor comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"501\"/>\n        <source>Inactive JavaDoc style pre-processor comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"504\"/>\n        <source>User-defined literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"507\"/>\n        <source>Inactive user-defined literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"510\"/>\n        <source>Task marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"513\"/>\n        <source>Inactive task marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"516\"/>\n        <source>Escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercpp.cpp\" line=\"519\"/>\n        <source>Inactive escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSS</name>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"225\"/>\n        <source>Tag</source>\n        <translation>Marcador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"228\"/>\n        <source>Class selector</source>\n        <translation>Seletor de classe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"231\"/>\n        <source>Pseudo-class</source>\n        <translation>Pseudo-classe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"234\"/>\n        <source>Unknown pseudo-class</source>\n        <translation>Pseudo-classe desconhecida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"237\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"240\"/>\n        <source>CSS1 property</source>\n        <translation>Propriedade CSS1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"243\"/>\n        <source>Unknown property</source>\n        <translation>Propriedade desconhecida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"246\"/>\n        <source>Value</source>\n        <translation>Valor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"249\"/>\n        <source>ID selector</source>\n        <translation>Seletor de ID</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"252\"/>\n        <source>Important</source>\n        <translation>Importante</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"255\"/>\n        <source>@-rule</source>\n        <translation>regra-@</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"258\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"261\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"264\"/>\n        <source>CSS2 property</source>\n        <translation>Propriedade CSS2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"267\"/>\n        <source>Attribute</source>\n        <translation>Atributo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"270\"/>\n        <source>CSS3 property</source>\n        <translation type=\"unfinished\">Propriedade CSS2 {3 ?}</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"273\"/>\n        <source>Pseudo-element</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"276\"/>\n        <source>Extended CSS property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"279\"/>\n        <source>Extended pseudo-class</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"282\"/>\n        <source>Extended pseudo-element</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"285\"/>\n        <source>Media rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercss.cpp\" line=\"288\"/>\n        <source>Variable</source>\n        <translation type=\"unfinished\">Variável</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSharp</name>\n    <message>\n        <location filename=\"qscilexercsharp.cpp\" line=\"95\"/>\n        <source>Verbatim string</source>\n        <translation>Cadeia de caracteres no formato verbatim</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCoffeeScript</name>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"248\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"251\"/>\n        <source>C-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"254\"/>\n        <source>C++-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"257\"/>\n        <source>JavaDoc C-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"260\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"263\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"266\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"269\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"272\"/>\n        <source>IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"275\"/>\n        <source>Pre-processor block</source>\n        <translation type=\"unfinished\">Instruções de pré-processamento</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"278\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"281\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"284\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"287\"/>\n        <source>C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"290\"/>\n        <source>Regular expression</source>\n        <translation type=\"unfinished\">Expressão Regular</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"293\"/>\n        <source>JavaDoc C++-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"296\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation type=\"unfinished\">Identificadores e palavras chave secundárias</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"299\"/>\n        <source>JavaDoc keyword</source>\n        <translation type=\"unfinished\">Palavra chave JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"302\"/>\n        <source>JavaDoc keyword error</source>\n        <translation type=\"unfinished\">Erro de palavra chave do JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"305\"/>\n        <source>Global classes</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"308\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"311\"/>\n        <source>Block regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"314\"/>\n        <source>Block regular expression comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexercoffeescript.cpp\" line=\"317\"/>\n        <source>Instance property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerD</name>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"259\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"262\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Comentar Linha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"265\"/>\n        <source>DDoc style block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"268\"/>\n        <source>Nesting comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"271\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"274\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"277\"/>\n        <source>Secondary keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"280\"/>\n        <source>Documentation keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"283\"/>\n        <source>Type definition</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"286\"/>\n        <source>String</source>\n        <translation type=\"unfinished\">Cadeia de Caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"289\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"292\"/>\n        <source>Character</source>\n        <translation type=\"unfinished\">Caractere</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"298\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"301\"/>\n        <source>DDoc style line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"304\"/>\n        <source>DDoc keyword</source>\n        <translation type=\"unfinished\">Palavra chave JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"307\"/>\n        <source>DDoc keyword error</source>\n        <translation type=\"unfinished\">Erro de palavra chave do JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"310\"/>\n        <source>Backquoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"313\"/>\n        <source>Raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"316\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\">Definição de usuário 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"319\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\">Definição de usuário 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerd.cpp\" line=\"322\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\">Definição de usuário 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerDiff</name>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"92\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"95\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"98\"/>\n        <source>Command</source>\n        <translation>Comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"101\"/>\n        <source>Header</source>\n        <translation>Cabeçalho</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"104\"/>\n        <source>Position</source>\n        <translation>Posição</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"107\"/>\n        <source>Removed line</source>\n        <translation>Linha Removida</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"110\"/>\n        <source>Added line</source>\n        <translation>Linha Adicionada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerdiff.cpp\" line=\"113\"/>\n        <source>Changed line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerFortran77</name>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"175\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"178\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"181\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"184\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"187\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"190\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"193\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"196\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"199\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"202\"/>\n        <source>Intrinsic function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"205\"/>\n        <source>Extended function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"208\"/>\n        <source>Pre-processor block</source>\n        <translation type=\"unfinished\">Instruções de pré-processamento</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"211\"/>\n        <source>Dotted operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"214\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\">Rótulo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerfortran77.cpp\" line=\"217\"/>\n        <source>Continuation</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerHTML</name>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"553\"/>\n        <source>HTML default</source>\n        <translation>HTML por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"556\"/>\n        <source>Tag</source>\n        <translation>Marcador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"559\"/>\n        <source>Unknown tag</source>\n        <translation>Marcador desconhecido</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"562\"/>\n        <source>Attribute</source>\n        <translation>Atributo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"565\"/>\n        <source>Unknown attribute</source>\n        <translation>Atributo desconhecido</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"568\"/>\n        <source>HTML number</source>\n        <translation>Número HTML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"571\"/>\n        <source>HTML double-quoted string</source>\n        <translation>Cadeia de caracteres HTML envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"574\"/>\n        <source>HTML single-quoted string</source>\n        <translation>Cadeia de caracteres HTML envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"577\"/>\n        <source>Other text in a tag</source>\n        <translation>Outro texto em um marcador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"580\"/>\n        <source>HTML comment</source>\n        <translation>Comentário HTML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"583\"/>\n        <source>Entity</source>\n        <translation>Entidade</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"586\"/>\n        <source>End of a tag</source>\n        <translation>Final de um marcador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"589\"/>\n        <source>Start of an XML fragment</source>\n        <translation>Início de um bloco XML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"592\"/>\n        <source>End of an XML fragment</source>\n        <translation>Final de um bloco XML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"595\"/>\n        <source>Script tag</source>\n        <translation>Marcador de script</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"598\"/>\n        <source>Start of an ASP fragment with @</source>\n        <translation>Início de um bloco ASP com @</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"601\"/>\n        <source>Start of an ASP fragment</source>\n        <translation>Início de um bloco ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"604\"/>\n        <source>CDATA</source>\n        <translation>CDATA</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"607\"/>\n        <source>Start of a PHP fragment</source>\n        <translation>Início de um bloco PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"610\"/>\n        <source>Unquoted HTML value</source>\n        <translation>Valor HTML não envolvido por aspas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"613\"/>\n        <source>ASP X-Code comment</source>\n        <translation>Comentário ASP X-Code</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"616\"/>\n        <source>SGML default</source>\n        <translation>SGML por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"619\"/>\n        <source>SGML command</source>\n        <translation>Comando SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"622\"/>\n        <source>First parameter of an SGML command</source>\n        <translation>Primeiro parâmetro em um comando SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"625\"/>\n        <source>SGML double-quoted string</source>\n        <translation>Cadeia de caracteres SGML envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"628\"/>\n        <source>SGML single-quoted string</source>\n        <translation>Cadeia de caracteres SGML envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"631\"/>\n        <source>SGML error</source>\n        <translation>Erro SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"634\"/>\n        <source>SGML special entity</source>\n        <translation>Entidade especial SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"637\"/>\n        <source>SGML comment</source>\n        <translation>Comando SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"640\"/>\n        <source>First parameter comment of an SGML command</source>\n        <translation>Primeiro comentário de parâmetro de uma comando SGML</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"643\"/>\n        <source>SGML block default</source>\n        <translation>Bloco SGML por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"646\"/>\n        <source>Start of a JavaScript fragment</source>\n        <translation>Início de um bloco Javascript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"649\"/>\n        <source>JavaScript default</source>\n        <translation>JavaScript por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"652\"/>\n        <source>JavaScript comment</source>\n        <translation>Comentário JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"655\"/>\n        <source>JavaScript line comment</source>\n        <translation>Comentário de linha JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"658\"/>\n        <source>JavaDoc style JavaScript comment</source>\n        <translation>Comentário JavaScript no estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"661\"/>\n        <source>JavaScript number</source>\n        <translation>Número JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"664\"/>\n        <source>JavaScript word</source>\n        <translation>Palavra JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"667\"/>\n        <source>JavaScript keyword</source>\n        <translation>Palavra chave JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"670\"/>\n        <source>JavaScript double-quoted string</source>\n        <translation>Cadeia de caracteres JavaScript envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"673\"/>\n        <source>JavaScript single-quoted string</source>\n        <translation>Cadeia de caracteres JavaScript envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"676\"/>\n        <source>JavaScript symbol</source>\n        <translation>Símbolo JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"679\"/>\n        <source>JavaScript unclosed string</source>\n        <translation>Cadeia de caracteres JavaScript não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"682\"/>\n        <source>JavaScript regular expression</source>\n        <translation>Expressão regular JavaScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"685\"/>\n        <source>Start of an ASP JavaScript fragment</source>\n        <translation>Início de um bloco Javascript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"688\"/>\n        <source>ASP JavaScript default</source>\n        <translation>JavaScript ASP por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"691\"/>\n        <source>ASP JavaScript comment</source>\n        <translation>Comentário JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"694\"/>\n        <source>ASP JavaScript line comment</source>\n        <translation>Comentário de linha JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"697\"/>\n        <source>JavaDoc style ASP JavaScript comment</source>\n        <translation>Comentário JavaScript ASP no estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"700\"/>\n        <source>ASP JavaScript number</source>\n        <translation>Número JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"703\"/>\n        <source>ASP JavaScript word</source>\n        <translation>Palavra chave JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"706\"/>\n        <source>ASP JavaScript keyword</source>\n        <translation>Palavra chave JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"709\"/>\n        <source>ASP JavaScript double-quoted string</source>\n        <translation>Cadeia de caracteres JavaScript ASP envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"712\"/>\n        <source>ASP JavaScript single-quoted string</source>\n        <translation>Cadeia de caracteres JavaScript ASP envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"715\"/>\n        <source>ASP JavaScript symbol</source>\n        <translation>Símbolo JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"718\"/>\n        <source>ASP JavaScript unclosed string</source>\n        <translation>Cadeia de caracteres JavaScript ASP não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"721\"/>\n        <source>ASP JavaScript regular expression</source>\n        <translation>Expressão regular JavaScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"724\"/>\n        <source>Start of a VBScript fragment</source>\n        <translation>Início de um bloco VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"727\"/>\n        <source>VBScript default</source>\n        <translation>VBScript por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"730\"/>\n        <source>VBScript comment</source>\n        <translation>Comentário VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"733\"/>\n        <source>VBScript number</source>\n        <translation>Número VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"736\"/>\n        <source>VBScript keyword</source>\n        <translation>Palavra chave VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"739\"/>\n        <source>VBScript string</source>\n        <translation>Cadeia de caracteres VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"742\"/>\n        <source>VBScript identifier</source>\n        <translation>Identificador VBScript</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"745\"/>\n        <source>VBScript unclosed string</source>\n        <translation>Cadeia de caracteres VBScript não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"748\"/>\n        <source>Start of an ASP VBScript fragment</source>\n        <translation>Início de um bloco VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"751\"/>\n        <source>ASP VBScript default</source>\n        <translation>VBScript ASP por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"754\"/>\n        <source>ASP VBScript comment</source>\n        <translation>Comentário VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"757\"/>\n        <source>ASP VBScript number</source>\n        <translation>Número VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"760\"/>\n        <source>ASP VBScript keyword</source>\n        <translation>Palavra chave VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"763\"/>\n        <source>ASP VBScript string</source>\n        <translation>Cadeia de caracteres VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"766\"/>\n        <source>ASP VBScript identifier</source>\n        <translation>Identificador VBScript ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"769\"/>\n        <source>ASP VBScript unclosed string</source>\n        <translation>Cadeia de caracteres VBScript ASP não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"772\"/>\n        <source>Start of a Python fragment</source>\n        <translation>Início de um bloco Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"775\"/>\n        <source>Python default</source>\n        <translation>Python por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"778\"/>\n        <source>Python comment</source>\n        <translation>Comentário Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"781\"/>\n        <source>Python number</source>\n        <translation>Número Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"784\"/>\n        <source>Python double-quoted string</source>\n        <translation>Cadeia de caracteres Python envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"787\"/>\n        <source>Python single-quoted string</source>\n        <translation>Cadeia de caracteres Python envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"790\"/>\n        <source>Python keyword</source>\n        <translation>Palavra chave Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"793\"/>\n        <source>Python triple double-quoted string</source>\n        <translation>Cadeia de caracteres Python envolvida por aspas triplas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"796\"/>\n        <source>Python triple single-quoted string</source>\n        <translation>Cadeia de caracteres Python envolvida por aspas triplas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"799\"/>\n        <source>Python class name</source>\n        <translation>Nome de classe Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"802\"/>\n        <source>Python function or method name</source>\n        <translation>Nome de método ou função Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"805\"/>\n        <source>Python operator</source>\n        <translation>Operador Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"808\"/>\n        <source>Python identifier</source>\n        <translation>Identificador Python</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"811\"/>\n        <source>Start of an ASP Python fragment</source>\n        <translation>Início de um bloco Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"814\"/>\n        <source>ASP Python default</source>\n        <translation>Python ASP por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"817\"/>\n        <source>ASP Python comment</source>\n        <translation>Comentário Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"820\"/>\n        <source>ASP Python number</source>\n        <translation>Número Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"823\"/>\n        <source>ASP Python double-quoted string</source>\n        <translation>Cadeia de caracteres Python ASP envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"826\"/>\n        <source>ASP Python single-quoted string</source>\n        <translation>Cadeia de caracteres Python ASP envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"829\"/>\n        <source>ASP Python keyword</source>\n        <translation>Palavra chave Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"832\"/>\n        <source>ASP Python triple double-quoted string</source>\n        <translation>Cadeia de caracteres Python ASP envolvida por aspas triplas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"835\"/>\n        <source>ASP Python triple single-quoted string</source>\n        <translation>Cadeia de caracteres Python ASP envolvida por aspas triplas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"838\"/>\n        <source>ASP Python class name</source>\n        <translation>Nome de classe Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"841\"/>\n        <source>ASP Python function or method name</source>\n        <translation>Nome de método ou função Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"844\"/>\n        <source>ASP Python operator</source>\n        <translation>Operador Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"847\"/>\n        <source>ASP Python identifier</source>\n        <translation>Identificador Python ASP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"850\"/>\n        <source>PHP default</source>\n        <translation>PHP por padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"853\"/>\n        <source>PHP double-quoted string</source>\n        <translation>Cadeia de caracteres PHP envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"856\"/>\n        <source>PHP single-quoted string</source>\n        <translation>Cadeia de caracteres PHP envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"859\"/>\n        <source>PHP keyword</source>\n        <translation>Palavra chave PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"862\"/>\n        <source>PHP number</source>\n        <translation>Número PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"865\"/>\n        <source>PHP variable</source>\n        <translation>Variável PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"868\"/>\n        <source>PHP comment</source>\n        <translation>Comentário PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"871\"/>\n        <source>PHP line comment</source>\n        <translation>Comentário de linha PHP</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"874\"/>\n        <source>PHP double-quoted variable</source>\n        <translation>Variável PHP envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerhtml.cpp\" line=\"877\"/>\n        <source>PHP operator</source>\n        <translation>Operador PHP</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerIDL</name>\n    <message>\n        <location filename=\"qscilexeridl.cpp\" line=\"87\"/>\n        <source>UUID</source>\n        <translation>UUID</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJSON</name>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"150\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"153\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"156\"/>\n        <source>String</source>\n        <translation type=\"unfinished\">Cadeia de Caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"159\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"162\"/>\n        <source>Property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"165\"/>\n        <source>Escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"168\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Comentar Linha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"171\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"174\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"177\"/>\n        <source>IRI</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"180\"/>\n        <source>JSON-LD compact IRI</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"183\"/>\n        <source>JSON keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"186\"/>\n        <source>JSON-LD keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerjson.cpp\" line=\"189\"/>\n        <source>Parsing error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJavaScript</name>\n    <message>\n        <location filename=\"qscilexerjavascript.cpp\" line=\"97\"/>\n        <source>Regular expression</source>\n        <translation>Expressão Regular</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerLua</name>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"217\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"220\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"223\"/>\n        <source>Line comment</source>\n        <translation>Comentar Linha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"226\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"229\"/>\n        <source>Keyword</source>\n        <translation>Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"232\"/>\n        <source>String</source>\n        <translation>Cadeia de Caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"235\"/>\n        <source>Character</source>\n        <translation>Caractere</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"238\"/>\n        <source>Literal string</source>\n        <translation>Cadeia de caracteres literal</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"241\"/>\n        <source>Preprocessor</source>\n        <translation>Preprocessador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"244\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"247\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"250\"/>\n        <source>Unclosed string</source>\n        <translation>Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"253\"/>\n        <source>Basic functions</source>\n        <translation>Funções básicas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"256\"/>\n        <source>String, table and maths functions</source>\n        <translation>Funções de cadeia de caracteres e de tabelas matemáticas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"259\"/>\n        <source>Coroutines, i/o and system facilities</source>\n        <translation>Funções auxiiares, e/s e funções de sistema</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"262\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\">Definição de usuário 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"265\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\">Definição de usuário 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"268\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\">Definição de usuário 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"271\"/>\n        <source>User defined 4</source>\n        <translation type=\"unfinished\">Definição de usuário 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerlua.cpp\" line=\"274\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\">Rótulo</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMakefile</name>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"116\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"119\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"122\"/>\n        <source>Preprocessor</source>\n        <translation>Preprocessador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"125\"/>\n        <source>Variable</source>\n        <translation>Variável</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"128\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"131\"/>\n        <source>Target</source>\n        <translation>Destino</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermakefile.cpp\" line=\"134\"/>\n        <source>Error</source>\n        <translation>Erro</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMarkdown</name>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"212\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"215\"/>\n        <source>Special</source>\n        <translation type=\"unfinished\">Especial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"218\"/>\n        <source>Strong emphasis using double asterisks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"221\"/>\n        <source>Strong emphasis using double underscores</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"224\"/>\n        <source>Emphasis using single asterisks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"227\"/>\n        <source>Emphasis using single underscores</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"230\"/>\n        <source>Level 1 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"233\"/>\n        <source>Level 2 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"236\"/>\n        <source>Level 3 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"239\"/>\n        <source>Level 4 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"242\"/>\n        <source>Level 5 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"245\"/>\n        <source>Level 6 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"248\"/>\n        <source>Pre-char</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"251\"/>\n        <source>Unordered list item</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"254\"/>\n        <source>Ordered list item</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"257\"/>\n        <source>Block quote</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"260\"/>\n        <source>Strike out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"263\"/>\n        <source>Horizontal rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"266\"/>\n        <source>Link</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"269\"/>\n        <source>Code between backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"272\"/>\n        <source>Code between double backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermarkdown.cpp\" line=\"275\"/>\n        <source>Code block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMatlab</name>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"123\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"126\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"129\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\">Comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"132\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"135\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"138\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"141\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"144\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexermatlab.cpp\" line=\"147\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPO</name>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"89\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"92\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"95\"/>\n        <source>Message identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"98\"/>\n        <source>Message identifier text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"101\"/>\n        <source>Message string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"104\"/>\n        <source>Message string text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"107\"/>\n        <source>Message context</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"110\"/>\n        <source>Message context text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"113\"/>\n        <source>Fuzzy flag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"116\"/>\n        <source>Programmer comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"119\"/>\n        <source>Reference</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"122\"/>\n        <source>Flags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"125\"/>\n        <source>Message identifier text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"128\"/>\n        <source>Message string text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpo.cpp\" line=\"131\"/>\n        <source>Message context text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPOV</name>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"267\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"270\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"273\"/>\n        <source>Comment line</source>\n        <translation>Comentar Linha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"276\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"279\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"282\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"285\"/>\n        <source>String</source>\n        <translation>Cadeia de Caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"288\"/>\n        <source>Unclosed string</source>\n        <translation>Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"291\"/>\n        <source>Directive</source>\n        <translation>Diretiva</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"294\"/>\n        <source>Bad directive</source>\n        <translation>Diretiva ruim</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"297\"/>\n        <source>Objects, CSG and appearance</source>\n        <translation>Objetos, CSG e aparência</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"300\"/>\n        <source>Types, modifiers and items</source>\n        <translation>Tipos, modificadores e itens</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"303\"/>\n        <source>Predefined identifiers</source>\n        <translation>Identificadores predefinidos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"306\"/>\n        <source>Predefined functions</source>\n        <translation>Funções predefinidas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"309\"/>\n        <source>User defined 1</source>\n        <translation>Definição de usuário 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"312\"/>\n        <source>User defined 2</source>\n        <translation>Definição de usuário 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpov.cpp\" line=\"315\"/>\n        <source>User defined 3</source>\n        <translation>Definição de usuário 3</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPascal</name>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"246\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"258\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Comentar Linha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"267\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"273\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"276\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"285\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"249\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"252\"/>\n        <source>&apos;{ ... }&apos; style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"255\"/>\n        <source>&apos;(* ... *)&apos; style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"261\"/>\n        <source>&apos;{$ ... }&apos; style pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"264\"/>\n        <source>&apos;(*$ ... *)&apos; style pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"270\"/>\n        <source>Hexadecimal number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"279\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"282\"/>\n        <source>Character</source>\n        <translation type=\"unfinished\">Caractere</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpascal.cpp\" line=\"288\"/>\n        <source>Inline asm</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPerl</name>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"318\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"321\"/>\n        <source>Error</source>\n        <translation>Erro</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"324\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"327\"/>\n        <source>POD</source>\n        <translation>POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"330\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"333\"/>\n        <source>Keyword</source>\n        <translation>Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"336\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"339\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"342\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"345\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"348\"/>\n        <source>Scalar</source>\n        <translation>Escalar</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"351\"/>\n        <source>Array</source>\n        <translation>Vetor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"354\"/>\n        <source>Hash</source>\n        <translation>Hash</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"357\"/>\n        <source>Symbol table</source>\n        <translation>Tabela de Símbolos</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"360\"/>\n        <source>Regular expression</source>\n        <translation>Expressão Regular</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"363\"/>\n        <source>Substitution</source>\n        <translation>Substituição</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"366\"/>\n        <source>Backticks</source>\n        <translation>Aspas Invertidas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"369\"/>\n        <source>Data section</source>\n        <translation>Seção de dados</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"372\"/>\n        <source>Here document delimiter</source>\n        <translation>Delimitador de documentos criados através de redicionadores (&gt;&gt; e &gt;)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"375\"/>\n        <source>Single-quoted here document</source>\n        <translation>&quot;here document&quot; envolvido por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"378\"/>\n        <source>Double-quoted here document</source>\n        <translation>&quot;here document&quot; envolvido por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"381\"/>\n        <source>Backtick here document</source>\n        <translation>&quot;here document&quot; envolvido por aspas invertidas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"384\"/>\n        <source>Quoted string (q)</source>\n        <translation>Cadeia de caracteres envolvida por aspas (q)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"387\"/>\n        <source>Quoted string (qq)</source>\n        <translation>Cadeia de caracteres envolvida por aspas (qq)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"390\"/>\n        <source>Quoted string (qx)</source>\n        <translation>Cadeia de caracteres envolvida por aspas (qx)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"393\"/>\n        <source>Quoted string (qr)</source>\n        <translation>Cadeia de caracteres envolvida por aspas (qr)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"396\"/>\n        <source>Quoted string (qw)</source>\n        <translation>Cadeia de caracteres envolvida por aspas (qw)</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"399\"/>\n        <source>POD verbatim</source>\n        <translation>POD em formato verbatim</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"402\"/>\n        <source>Subroutine prototype</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"405\"/>\n        <source>Format identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"408\"/>\n        <source>Format body</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"411\"/>\n        <source>Double-quoted string (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"414\"/>\n        <source>Translation</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"417\"/>\n        <source>Regular expression (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"420\"/>\n        <source>Substitution (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"423\"/>\n        <source>Backticks (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"426\"/>\n        <source>Double-quoted here document (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"429\"/>\n        <source>Backtick here document (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"432\"/>\n        <source>Quoted string (qq, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"435\"/>\n        <source>Quoted string (qx, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerperl.cpp\" line=\"438\"/>\n        <source>Quoted string (qr, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPostScript</name>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"249\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"252\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"255\"/>\n        <source>DSC comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"258\"/>\n        <source>DSC comment value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"261\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"264\"/>\n        <source>Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"267\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"270\"/>\n        <source>Literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"273\"/>\n        <source>Immediately evaluated literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"276\"/>\n        <source>Array parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"279\"/>\n        <source>Dictionary parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"282\"/>\n        <source>Procedure parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"285\"/>\n        <source>Text</source>\n        <translation type=\"unfinished\">Texto</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"288\"/>\n        <source>Hexadecimal string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"291\"/>\n        <source>Base85 string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpostscript.cpp\" line=\"294\"/>\n        <source>Bad string character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerProperties</name>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"110\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"113\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"116\"/>\n        <source>Section</source>\n        <translation>Seção</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"119\"/>\n        <source>Assignment</source>\n        <translation>Atribuição</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"122\"/>\n        <source>Default value</source>\n        <translation>Valor Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerproperties.cpp\" line=\"125\"/>\n        <source>Key</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPython</name>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"225\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"228\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"231\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"234\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"237\"/>\n        <source>Keyword</source>\n        <translation>Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"240\"/>\n        <source>Triple single-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por três aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"243\"/>\n        <source>Triple double-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por três aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"246\"/>\n        <source>Class name</source>\n        <translation>Nome da classe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"249\"/>\n        <source>Function or method name</source>\n        <translation>Nome da função ou método</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"252\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"255\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"258\"/>\n        <source>Comment block</source>\n        <translation>Bloco de comentários</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"261\"/>\n        <source>Unclosed string</source>\n        <translation>Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"264\"/>\n        <source>Highlighted identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerpython.cpp\" line=\"267\"/>\n        <source>Decorator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerRuby</name>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"238\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"244\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"250\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"256\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"259\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"253\"/>\n        <source>Keyword</source>\n        <translation>Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"262\"/>\n        <source>Class name</source>\n        <translation>Nome da classe</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"265\"/>\n        <source>Function or method name</source>\n        <translation>Nome da função ou método</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"268\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"271\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"241\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"247\"/>\n        <source>POD</source>\n        <translation type=\"unfinished\">POD</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"274\"/>\n        <source>Regular expression</source>\n        <translation type=\"unfinished\">Expressão Regular</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"277\"/>\n        <source>Global</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"280\"/>\n        <source>Symbol</source>\n        <translation type=\"unfinished\">Símbolo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"283\"/>\n        <source>Module name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"286\"/>\n        <source>Instance variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"289\"/>\n        <source>Class variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"292\"/>\n        <source>Backticks</source>\n        <translation type=\"unfinished\">Aspas Invertidas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"295\"/>\n        <source>Data section</source>\n        <translation type=\"unfinished\">Seção de dados</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"298\"/>\n        <source>Here document delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"301\"/>\n        <source>Here document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"304\"/>\n        <source>%q string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"307\"/>\n        <source>%Q string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"310\"/>\n        <source>%x string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"313\"/>\n        <source>%r string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"316\"/>\n        <source>%w string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"319\"/>\n        <source>Demoted keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"322\"/>\n        <source>stdin</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"325\"/>\n        <source>stdout</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerruby.cpp\" line=\"328\"/>\n        <source>stderr</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSQL</name>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"259\"/>\n        <source>Comment</source>\n        <translation>Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"268\"/>\n        <source>Number</source>\n        <translation>Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"271\"/>\n        <source>Keyword</source>\n        <translation>Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"277\"/>\n        <source>Single-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas simples</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"286\"/>\n        <source>Operator</source>\n        <translation>Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"289\"/>\n        <source>Identifier</source>\n        <translation>Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"262\"/>\n        <source>Comment line</source>\n        <translation>Comentário de Linha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"265\"/>\n        <source>JavaDoc style comment</source>\n        <translation>Comentário estilo JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"274\"/>\n        <source>Double-quoted string</source>\n        <translation>Cadeia de caracteres envolvida por aspas duplas</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"280\"/>\n        <source>SQL*Plus keyword</source>\n        <translation>Palavra chave do SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"283\"/>\n        <source>SQL*Plus prompt</source>\n        <translation>Prompt do SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"292\"/>\n        <source>SQL*Plus comment</source>\n        <translation>Comentário do SQL*Plus</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"295\"/>\n        <source># comment line</source>\n        <translation>Comentário de linha usando #</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"298\"/>\n        <source>JavaDoc keyword</source>\n        <translation>Palavra chave JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"301\"/>\n        <source>JavaDoc keyword error</source>\n        <translation>Erro de palavra chave do JavaDoc</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"304\"/>\n        <source>User defined 1</source>\n        <translation>Definição de usuário 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"307\"/>\n        <source>User defined 2</source>\n        <translation>Definição de usuário 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"310\"/>\n        <source>User defined 3</source>\n        <translation>Definição de usuário 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"313\"/>\n        <source>User defined 4</source>\n        <translation>Definição de usuário 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"316\"/>\n        <source>Quoted identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexersql.cpp\" line=\"319\"/>\n        <source>Quoted operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSpice</name>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"156\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"159\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"162\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\">Comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"165\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"168\"/>\n        <source>Parameter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"171\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"174\"/>\n        <source>Delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"177\"/>\n        <source>Value</source>\n        <translation type=\"unfinished\">Valor</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerspice.cpp\" line=\"180\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTCL</name>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"282\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"285\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"288\"/>\n        <source>Comment line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"291\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"294\"/>\n        <source>Quoted keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"297\"/>\n        <source>Quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"300\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"303\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"306\"/>\n        <source>Substitution</source>\n        <translation type=\"unfinished\">Substituição</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"309\"/>\n        <source>Brace substitution</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"312\"/>\n        <source>Modifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"315\"/>\n        <source>Expand keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"318\"/>\n        <source>TCL keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"321\"/>\n        <source>Tk keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"324\"/>\n        <source>iTCL keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"327\"/>\n        <source>Tk command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"330\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\">Definição de usuário 1</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"333\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\">Definição de usuário 2</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"336\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\">Definição de usuário 3</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"339\"/>\n        <source>User defined 4</source>\n        <translation type=\"unfinished\">Definição de usuário 4</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"342\"/>\n        <source>Comment box</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertcl.cpp\" line=\"345\"/>\n        <source>Comment block</source>\n        <translation type=\"unfinished\">Bloco de comentários</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTeX</name>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"177\"/>\n        <source>Default</source>\n        <translation>Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"180\"/>\n        <source>Special</source>\n        <translation>Especial</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"183\"/>\n        <source>Group</source>\n        <translation>Grupo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"186\"/>\n        <source>Symbol</source>\n        <translation>Símbolo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"189\"/>\n        <source>Command</source>\n        <translation>Comando</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexertex.cpp\" line=\"192\"/>\n        <source>Text</source>\n        <translation>Texto</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVHDL</name>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"197\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"200\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"203\"/>\n        <source>Comment line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"206\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"209\"/>\n        <source>String</source>\n        <translation type=\"unfinished\">Cadeia de Caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"212\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"215\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"218\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"221\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"224\"/>\n        <source>Standard operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"227\"/>\n        <source>Attribute</source>\n        <translation type=\"unfinished\">Atributo</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"230\"/>\n        <source>Standard function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"233\"/>\n        <source>Standard package</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"236\"/>\n        <source>Standard type</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"239\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexervhdl.cpp\" line=\"242\"/>\n        <source>Comment block</source>\n        <translation type=\"unfinished\">Bloco de comentários</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVerilog</name>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"286\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"289\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"292\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\">Comentar Linha</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"295\"/>\n        <source>Bang comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"298\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"301\"/>\n        <source>Primary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"304\"/>\n        <source>String</source>\n        <translation type=\"unfinished\">Cadeia de Caracteres</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"307\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation type=\"unfinished\">Identificadores e palavras chave secundárias</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"310\"/>\n        <source>System task</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"313\"/>\n        <source>Preprocessor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"316\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"319\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"322\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\">Cadeia de caracteres não fechada</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"325\"/>\n        <source>User defined tasks and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"328\"/>\n        <source>Keyword comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"331\"/>\n        <source>Inactive keyword comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"334\"/>\n        <source>Input port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"337\"/>\n        <source>Inactive input port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"340\"/>\n        <source>Output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"343\"/>\n        <source>Inactive output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"346\"/>\n        <source>Input/output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"349\"/>\n        <source>Inactive input/output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"352\"/>\n        <source>Port connection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexerverilog.cpp\" line=\"355\"/>\n        <source>Inactive port connection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerYAML</name>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"160\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\">Padrão</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"163\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\">Comentário</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"166\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\">Identificador</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"169\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\">Palavra Chave</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"172\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\">Número</translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"175\"/>\n        <source>Reference</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"178\"/>\n        <source>Document delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"181\"/>\n        <source>Text block marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"184\"/>\n        <source>Syntax error marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qscilexeryaml.cpp\" line=\"187\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\">Operador</translation>\n    </message>\n</context>\n<context>\n    <name>QsciScintilla</name>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4404\"/>\n        <source>&amp;Undo</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4408\"/>\n        <source>&amp;Redo</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4414\"/>\n        <source>Cu&amp;t</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4419\"/>\n        <source>&amp;Copy</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4425\"/>\n        <source>&amp;Paste</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4429\"/>\n        <source>Delete</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"qsciscintilla.cpp\" line=\"4436\"/>\n        <source>Select All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qsciprinter.cpp",
    "content": "// This module implements the QsciPrinter class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qsciprinter.h\"\n\n#if !defined(QT_NO_PRINTER)\n\n#include <QPrinter>\n#include <QPainter>\n#include <QStack>\n\n#include \"Qsci/qsciscintillabase.h\"\n\n\n// The ctor.\nQsciPrinter::QsciPrinter(QPrinter::PrinterMode mode)\n    : QPrinter(mode), mag(0), wrap(QsciScintilla::WrapWord)\n{\n}\n\n\n// The dtor.\nQsciPrinter::~QsciPrinter()\n{\n}\n\n\n// Format the page before the document text is drawn.\nvoid QsciPrinter::formatPage(QPainter &, bool, QRect &, int)\n{\n}\n\n\n// Print a range of lines to a printer.\nint QsciPrinter::printRange(QsciScintillaBase *qsb, int from, int to)\n{\n    // Sanity check.\n    if (!qsb)\n        return false;\n\n    // Setup the printing area.\n    QRect def_area;\n\n    def_area.setX(0);\n    def_area.setY(0);\n    def_area.setWidth(width());\n    def_area.setHeight(height());\n\n    // Get the page range.\n    int pgFrom, pgTo;\n\n    pgFrom = fromPage();\n    pgTo = toPage();\n\n    // Find the position range.\n    long startPos, endPos;\n\n    endPos = qsb->SendScintilla(QsciScintillaBase::SCI_GETLENGTH);\n\n    startPos = (from > 0 ? qsb -> SendScintilla(QsciScintillaBase::SCI_POSITIONFROMLINE,from) : 0);\n\n    if (to >= 0)\n    {\n        long toPos = qsb -> SendScintilla(QsciScintillaBase::SCI_POSITIONFROMLINE,to + 1);\n\n        if (endPos > toPos)\n            endPos = toPos;\n    }\n\n    if (startPos >= endPos)\n        return false;\n\n    QPainter painter(this);\n    bool reverse = (pageOrder() == LastPageFirst);\n    bool needNewPage = false;\n\n    qsb -> SendScintilla(QsciScintillaBase::SCI_SETPRINTMAGNIFICATION,mag);\n    qsb -> SendScintilla(QsciScintillaBase::SCI_SETPRINTWRAPMODE,wrap);\n\n    for (int i = 1; i <= numCopies(); ++i)\n    {\n        // If we are printing in reverse page order then remember the start\n        // position of each page.\n        QStack<long> pageStarts;\n\n        int currPage = 1;\n        long pos = startPos;\n\n        while (pos < endPos)\n        {\n            // See if we have finished the requested page range.\n            if (pgTo > 0 && pgTo < currPage)\n                break;\n\n            // See if we are going to render this page, or just see how much\n            // would fit onto it.\n            bool render = false;\n\n            if (pgFrom == 0 || pgFrom <= currPage)\n            {\n                if (reverse)\n                    pageStarts.push(pos);\n                else\n                {\n                    render = true;\n\n                    if (needNewPage)\n                    {\n                        if (!newPage())\n                            return false;\n                    }\n                    else\n                        needNewPage = true;\n                }\n            }\n\n            QRect area = def_area;\n\n            formatPage(painter,render,area,currPage);\n            pos = qsb -> SendScintilla(QsciScintillaBase::SCI_FORMATRANGE,render,&painter,area,pos,endPos);\n\n            ++currPage;\n        }\n\n        // All done if we are printing in normal page order.\n        if (!reverse)\n            continue;\n\n        // Now go through each page on the stack and really print it.\n        while (!pageStarts.isEmpty())\n        {\n            --currPage;\n\n            long ePos = pos;\n            pos = pageStarts.pop();\n\n            if (needNewPage)\n            {\n                if (!newPage())\n                    return false;\n            }\n            else\n                needNewPage = true;\n\n            QRect area = def_area;\n\n            formatPage(painter,true,area,currPage);\n            qsb->SendScintilla(QsciScintillaBase::SCI_FORMATRANGE,true,&painter,area,pos,ePos);\n        }\n    }\n\n    return true;\n}\n\n\n// Set the print magnification in points.\nvoid QsciPrinter::setMagnification(int magnification)\n{\n    mag = magnification;\n}\n\n\n// Set the line wrap mode.\nvoid QsciPrinter::setWrapMode(QsciScintilla::WrapMode wmode)\n{\n    wrap = wmode;\n}\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp",
    "content": "// This module implements the \"official\" high-level API of the Qt port of\n// Scintilla.  It is modelled on QTextEdit - a method of the same name should\n// behave in the same way.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qsciscintilla.h\"\n\n#include <string.h>\n\n#include <QAction>\n#include <QApplication>\n#include <QColor>\n#include <QEvent>\n#include <QImage>\n#include <QIODevice>\n#include <QKeyEvent>\n#include <QKeySequence>\n#include <QMenu>\n#include <QPoint>\n\n#include \"Qsci/qsciabstractapis.h\"\n#include \"Qsci/qscicommandset.h\"\n#include \"Qsci/qscilexer.h\"\n#include \"Qsci/qscistyle.h\"\n#include \"Qsci/qscistyledtext.h\"\n\n\n// Make sure these match the values in Scintilla.h.  We don't #include that\n// file because it just causes more clashes.\n#define KEYWORDSET_MAX  8\n#define MARKER_MAX      31\n\n// The list separators for auto-completion and user lists.\nconst char acSeparator = '\\x03';\nconst char userSeparator = '\\x04';\n\n// The default fold margin width.\nstatic const int defaultFoldMarginWidth = 14;\n\n// The default set of characters that make up a word.\nstatic const char *defaultWordChars = \"_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\";\n\n// Forward declarations.\nstatic QColor asQColor(long sci_colour);\n\n\n// The ctor.\nQsciScintilla::QsciScintilla(QWidget *parent)\n    : QsciScintillaBase(parent),\n      allocatedMarkers(0), allocatedIndicators(7), oldPos(-1), selText(false),\n      fold(NoFoldStyle), foldmargin(2), autoInd(false),\n      braceMode(NoBraceMatch), acSource(AcsNone), acThresh(-1),\n      wchars(defaultWordChars), call_tips_position(CallTipsBelowText),\n      call_tips_style(CallTipsNoContext), maxCallTips(-1),\n      use_single(AcusNever), explicit_fillups(\"\"), fillups_enabled(false)\n{\n    connect(this,SIGNAL(SCN_MODIFYATTEMPTRO()),\n             SIGNAL(modificationAttempted()));\n\n    connect(this,SIGNAL(SCN_MODIFIED(int,int,const char *,int,int,int,int,int,int,int)),\n             SLOT(handleModified(int,int,const char *,int,int,int,int,int,int,int)));\n    connect(this,SIGNAL(SCN_CALLTIPCLICK(int)),\n             SLOT(handleCallTipClick(int)));\n    connect(this,SIGNAL(SCN_CHARADDED(int)),\n             SLOT(handleCharAdded(int)));\n    connect(this,SIGNAL(SCN_INDICATORCLICK(int,int)),\n             SLOT(handleIndicatorClick(int,int)));\n    connect(this,SIGNAL(SCN_INDICATORRELEASE(int,int)),\n             SLOT(handleIndicatorRelease(int,int)));\n    connect(this,SIGNAL(SCN_MARGINCLICK(int,int,int)),\n             SLOT(handleMarginClick(int,int,int)));\n    connect(this,SIGNAL(SCN_MARGINRIGHTCLICK(int,int,int)),\n             SLOT(handleMarginRightClick(int,int,int)));\n    connect(this,SIGNAL(SCN_SAVEPOINTREACHED()),\n             SLOT(handleSavePointReached()));\n    connect(this,SIGNAL(SCN_SAVEPOINTLEFT()),\n             SLOT(handleSavePointLeft()));\n    connect(this,SIGNAL(SCN_UPDATEUI(int)),\n             SLOT(handleUpdateUI(int)));\n    connect(this,SIGNAL(QSCN_SELCHANGED(bool)),\n             SLOT(handleSelectionChanged(bool)));\n    connect(this,SIGNAL(SCN_AUTOCSELECTION(const char *,int)),\n             SLOT(handleAutoCompletionSelection()));\n    connect(this,SIGNAL(SCN_USERLISTSELECTION(const char *,int)),\n             SLOT(handleUserListSelection(const char *,int)));\n\n    // Set the default font.\n    setFont(QApplication::font());\n\n    // Set the default fore and background colours.\n    QPalette pal = QApplication::palette();\n    setColor(pal.text().color());\n    setPaper(pal.base().color());\n    setSelectionForegroundColor(pal.highlightedText().color());\n    setSelectionBackgroundColor(pal.highlight().color());\n\n#if defined(Q_OS_WIN)\n    setEolMode(EolWindows);\n#else\n    // Note that EolMac is pre-OS/X.\n    setEolMode(EolUnix);\n#endif\n\n    // Capturing the mouse seems to cause problems on multi-head systems. Qt\n    // should do the right thing anyway.\n    SendScintilla(SCI_SETMOUSEDOWNCAPTURES, 0UL);\n\n    setMatchedBraceForegroundColor(Qt::blue);\n    setUnmatchedBraceForegroundColor(Qt::red);\n\n    setAnnotationDisplay(AnnotationStandard);\n    setLexer();\n\n    // Set the visible policy.  These are the same as SciTE's defaults\n    // which, presumably, are sensible.\n    SendScintilla(SCI_SETVISIBLEPOLICY, VISIBLE_STRICT | VISIBLE_SLOP, 4);\n\n    // The default behaviour is unexpected.\n    SendScintilla(SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR,\n            SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE);\n\n    // Create the standard command set.\n    stdCmds = new QsciCommandSet(this);\n\n    doc.display(this,0);\n}\n\n\n// The dtor.\nQsciScintilla::~QsciScintilla()\n{\n    // Detach any current lexer.\n    detachLexer();\n\n    doc.undisplay(this);\n    delete stdCmds;\n}\n\n\n// Return the current text colour.\nQColor QsciScintilla::color() const\n{\n    return nl_text_colour;\n}\n\n\n// Set the text colour.\nvoid QsciScintilla::setColor(const QColor &c)\n{\n    if (lex.isNull())\n    {\n        // Assume style 0 applies to everything so that we don't need to use\n        // SCI_STYLECLEARALL which clears everything.\n        SendScintilla(SCI_STYLESETFORE, 0, c);\n        nl_text_colour = c;\n    }\n}\n\n\n// Return the overwrite mode.\nbool QsciScintilla::overwriteMode() const\n{\n    return SendScintilla(SCI_GETOVERTYPE);\n}\n\n\n// Set the overwrite mode.\nvoid QsciScintilla::setOverwriteMode(bool overwrite)\n{\n    SendScintilla(SCI_SETOVERTYPE, overwrite);\n}\n\n\n// Return the current paper colour.\nQColor QsciScintilla::paper() const\n{\n    return nl_paper_colour;\n}\n\n\n// Set the paper colour.\nvoid QsciScintilla::setPaper(const QColor &c)\n{\n    if (lex.isNull())\n    {\n        // Assume style 0 applies to everything so that we don't need to use\n        // SCI_STYLECLEARALL which clears everything.  We still have to set the\n        // default style as well for the background without any text.\n        SendScintilla(SCI_STYLESETBACK, 0, c);\n        SendScintilla(SCI_STYLESETBACK, STYLE_DEFAULT, c);\n        nl_paper_colour = c;\n    }\n}\n\n\n// Set the default font.\nvoid QsciScintilla::setFont(const QFont &f)\n{\n    if (lex.isNull())\n    {\n        // Assume style 0 applies to everything so that we don't need to use\n        // SCI_STYLECLEARALL which clears everything.\n        setStylesFont(f, 0);\n        QWidget::setFont(f);\n    }\n}\n\n\n// Enable/disable auto-indent.\nvoid QsciScintilla::setAutoIndent(bool autoindent)\n{\n    autoInd = autoindent;\n}\n\n\n// Set the brace matching mode.\nvoid QsciScintilla::setBraceMatching(BraceMatch bm)\n{\n    braceMode = bm;\n}\n\n\n// Handle the addition of a character.\nvoid QsciScintilla::handleCharAdded(int ch)\n{\n    // Ignore if there is a selection.\n    long pos = SendScintilla(SCI_GETSELECTIONSTART);\n\n    if (pos != SendScintilla(SCI_GETSELECTIONEND) || pos == 0)\n        return;\n\n    // If auto-completion is already active then see if this character is a\n    // start character.  If it is then create a new list which will be a subset\n    // of the current one.  The case where it isn't a start character seems to\n    // be handled correctly elsewhere.\n    if (isListActive() && isStartChar(ch))\n    {\n        cancelList();\n        startAutoCompletion(acSource, false, use_single == AcusAlways);\n\n        return;\n    }\n\n    // Handle call tips.\n    if (call_tips_style != CallTipsNone && !lex.isNull() && strchr(\"(),\", ch) != NULL)\n        callTip();\n\n    // Handle auto-indentation.\n    if (autoInd)\n        if (lex.isNull() || (lex->autoIndentStyle() & AiMaintain))\n            maintainIndentation(ch, pos);\n        else\n            autoIndentation(ch, pos);\n\n    // See if we might want to start auto-completion.\n    if (!isCallTipActive() && acSource != AcsNone)\n        if (isStartChar(ch))\n            startAutoCompletion(acSource, false, use_single == AcusAlways);\n        else if (acThresh >= 1 && isWordCharacter(ch))\n            startAutoCompletion(acSource, true, use_single == AcusAlways);\n}\n\n\n// See if a call tip is active.\nbool QsciScintilla::isCallTipActive() const\n{\n    return SendScintilla(SCI_CALLTIPACTIVE);\n}\n\n\n// Handle a possible change to any current call tip.\nvoid QsciScintilla::callTip()\n{\n    QsciAbstractAPIs *apis = lex->apis();\n\n    if (!apis)\n        return;\n\n    int pos, commas = 0;\n    bool found = false;\n    char ch;\n\n    pos = SendScintilla(SCI_GETCURRENTPOS);\n\n    // Move backwards through the line looking for the start of the current\n    // call tip and working out which argument it is.\n    while ((ch = getCharacter(pos)) != '\\0')\n    {\n        if (ch == ',')\n            ++commas;\n        else if (ch == ')')\n        {\n            int depth = 1;\n\n            // Ignore everything back to the start of the corresponding\n            // parenthesis.\n            while ((ch = getCharacter(pos)) != '\\0')\n            {\n                if (ch == ')')\n                    ++depth;\n                else if (ch == '(' && --depth == 0)\n                    break;\n            }\n        }\n        else if (ch == '(')\n        {\n            found = true;\n            break;\n        }\n    }\n\n    // Cancel any existing call tip.\n    SendScintilla(SCI_CALLTIPCANCEL);\n\n    // Done if there is no new call tip to set.\n    if (!found)\n        return;\n\n    QStringList context = apiContext(pos, pos, ctPos);\n\n    if (context.isEmpty())\n        return;\n\n    // The last word is complete, not partial.\n    context << QString();\n\n    ct_cursor = 0;\n    ct_shifts.clear();\n    ct_entries = apis->callTips(context, commas, call_tips_style, ct_shifts);\n\n    int nr_entries = ct_entries.count();\n\n    if (nr_entries == 0)\n        return;\n\n    if (maxCallTips > 0 && maxCallTips < nr_entries)\n    {\n        ct_entries = ct_entries.mid(0, maxCallTips);\n        nr_entries = maxCallTips;\n    }\n\n    int shift;\n    QString ct;\n\n    int nr_shifts = ct_shifts.count();\n\n    if (maxCallTips < 0 && nr_entries > 1)\n    {\n        shift = (nr_shifts > 0 ? ct_shifts.first() : 0);\n        ct = ct_entries[0];\n        ct.prepend('\\002');\n    }\n    else\n    {\n        if (nr_shifts > nr_entries)\n            nr_shifts = nr_entries;\n\n        // Find the biggest shift.\n        shift = 0;\n\n        for (int i = 0; i < nr_shifts; ++i)\n        {\n            int sh = ct_shifts[i];\n\n            if (shift < sh)\n                shift = sh;\n        }\n\n        ct = ct_entries.join(\"\\n\");\n    }\n\n    QByteArray ct_ba = ct.toLatin1();\n    const char *cts = ct_ba.data();\n\n    SendScintilla(SCI_CALLTIPSHOW, adjustedCallTipPosition(shift), cts);\n\n    // Done if there is more than one call tip.\n    if (nr_entries > 1)\n        return;\n\n    // Highlight the current argument.\n    const char *astart;\n\n    if (commas == 0)\n        astart = strchr(cts, '(');\n    else\n        for (astart = strchr(cts, ','); astart && --commas > 0; astart = strchr(astart + 1, ','))\n            ;\n\n    if (!astart || !*++astart)\n        return;\n\n    // The end is at the next comma or unmatched closing parenthesis.\n    const char *aend;\n    int depth = 0;\n\n    for (aend = astart; *aend; ++aend)\n    {\n        char ch = *aend;\n\n        if (ch == ',' && depth == 0)\n            break;\n        else if (ch == '(')\n            ++depth;\n        else if (ch == ')')\n        {\n            if (depth == 0)\n                break;\n\n            --depth;\n        }\n    }\n\n    if (astart != aend)\n        SendScintilla(SCI_CALLTIPSETHLT, astart - cts, aend - cts);\n}\n\n\n// Handle a call tip click.\nvoid QsciScintilla::handleCallTipClick(int dir)\n{\n    int nr_entries = ct_entries.count();\n\n    // Move the cursor while bounds checking.\n    if (dir == 1)\n    {\n        if (ct_cursor - 1 < 0)\n            return;\n\n        --ct_cursor;\n    }\n    else if (dir == 2)\n    {\n        if (ct_cursor + 1 >= nr_entries)\n            return;\n\n        ++ct_cursor;\n    }\n    else\n        return;\n\n    int shift = (ct_shifts.count() > ct_cursor ? ct_shifts[ct_cursor] : 0);\n    QString ct = ct_entries[ct_cursor];\n\n    // Add the arrows.\n    if (ct_cursor < nr_entries - 1)\n        ct.prepend('\\002');\n\n    if (ct_cursor > 0)\n        ct.prepend('\\001');\n\n    SendScintilla(SCI_CALLTIPSHOW, adjustedCallTipPosition(shift), ct.toLatin1().data());\n}\n\n\n// Shift the position of the call tip (to take any context into account) but\n// don't go before the start of the line.\nint QsciScintilla::adjustedCallTipPosition(int ctshift) const\n{\n    int ct = ctPos;\n\n    if (ctshift)\n    {\n        int ctmin = SendScintilla(SCI_POSITIONFROMLINE, SendScintilla(SCI_LINEFROMPOSITION, ct));\n\n        if (ct - ctshift < ctmin)\n            ct = ctmin;\n    }\n\n    return ct;\n}\n\n\n// Return the list of words that make up the context preceding the given\n// position.  The list will only have more than one element if there is a lexer\n// set and it defines start strings.  If so, then the last element might be\n// empty if a start string has just been typed.  On return pos is at the start\n// of the context.\nQStringList QsciScintilla::apiContext(int pos, int &context_start,\n        int &last_word_start)\n{\n    enum {\n        Either,\n        Separator,\n        Word\n    };\n\n    QStringList words;\n    int good_pos = pos, expecting = Either;\n\n    last_word_start = -1;\n\n    while (pos > 0)\n    {\n        if (getSeparator(pos))\n        {\n            if (expecting == Either)\n                words.prepend(QString());\n            else if (expecting == Word)\n                break;\n\n            good_pos = pos;\n            expecting = Word;\n        }\n        else\n        {\n            QString word = getWord(pos);\n\n            if (word.isEmpty() || expecting == Separator)\n                break;\n\n            words.prepend(word);\n            good_pos = pos;\n            expecting = Separator;\n\n            // Return the position of the start of the last word if required.\n            if (last_word_start < 0)\n                last_word_start = pos;\n        }\n\n        // Strip any preceding spaces (mainly around operators).\n        char ch;\n\n        while ((ch = getCharacter(pos)) != '\\0')\n        {\n            // This is the same definition of space that Scintilla uses.\n            if (ch != ' ' && (ch < 0x09 || ch > 0x0d))\n            {\n                ++pos;\n                break;\n            }\n        }\n    }\n\n    // A valid sequence always starts with a word and so should be expecting a\n    // separator.\n    if (expecting != Separator)\n        words.clear();\n\n    context_start = good_pos;\n\n    return words;\n}\n\n\n// Try and get a lexer's word separator from the text before the current\n// position.  Return true if one was found and adjust the position accordingly.\nbool QsciScintilla::getSeparator(int &pos) const\n{\n    int opos = pos;\n\n    // Go through each separator.\n    for (int i = 0; i < wseps.count(); ++i)\n    {\n        const QString &ws = wseps[i];\n\n        // Work backwards.\n        uint l;\n\n        for (l = ws.length(); l; --l)\n        {\n            char ch = getCharacter(pos);\n\n            if (ch == '\\0' || ws.at(l - 1) != ch)\n                break;\n        }\n\n        if (!l)\n            return true;\n\n        // Reset for the next separator.\n        pos = opos;\n    }\n\n    return false;\n}\n\n\n// Try and get a word from the text before the current position.  Return the\n// word if one was found and adjust the position accordingly.\nQString QsciScintilla::getWord(int &pos) const\n{\n    QString word;\n    bool numeric = true;\n    char ch;\n\n    while ((ch = getCharacter(pos)) != '\\0')\n    {\n        if (!isWordCharacter(ch))\n        {\n            ++pos;\n            break;\n        }\n\n        if (ch < '0' || ch > '9')\n            numeric = false;\n\n        word.prepend(ch);\n    }\n\n    // We don't auto-complete numbers.\n    if (numeric)\n        word.truncate(0);\n\n    return word;\n}\n\n\n// Get the \"next\" character (ie. the one before the current position) in the\n// current line.  The character will be '\\0' if there are no more.\nchar QsciScintilla::getCharacter(int &pos) const\n{\n    if (pos <= 0)\n        return '\\0';\n\n    char ch = SendScintilla(SCI_GETCHARAT, --pos);\n\n    // Don't go past the end of the previous line.\n    if (ch == '\\n' || ch == '\\r')\n    {\n        ++pos;\n        return '\\0';\n    }\n\n    return ch;\n}\n\n\n// See if a character is an auto-completion start character, ie. the last\n// character of a word separator.\nbool QsciScintilla::isStartChar(char ch) const\n{\n    QString s = QChar(ch);\n\n    for (int i = 0; i < wseps.count(); ++i)\n        if (wseps[i].endsWith(s))\n            return true;\n\n    return false;\n}\n\n\n// Possibly start auto-completion.\nvoid QsciScintilla::startAutoCompletion(AutoCompletionSource acs,\n        bool checkThresh, bool choose_single)\n{\n    int start, ignore;\n    QStringList context = apiContext(SendScintilla(SCI_GETCURRENTPOS), start,\n            ignore);\n\n    if (context.isEmpty())\n        return;\n\n    // Get the last word's raw data and length.\n    ScintillaBytes s = textAsBytes(context.last());\n    const char *last_data = ScintillaBytesConstData(s);\n    int last_len = s.length();\n\n    if (checkThresh && last_len < acThresh)\n        return;\n\n    // Generate the string representing the valid words to select from.\n    QStringList wlist;\n\n    if ((acs == AcsAll || acs == AcsAPIs) && !lex.isNull())\n    {\n        QsciAbstractAPIs *apis = lex->apis();\n\n        if (apis)\n            apis->updateAutoCompletionList(context, wlist);\n    }\n\n    if (acs == AcsAll || acs == AcsDocument)\n    {\n        int sflags = SCFIND_WORDSTART;\n\n        if (!SendScintilla(SCI_AUTOCGETIGNORECASE))\n            sflags |= SCFIND_MATCHCASE;\n\n        SendScintilla(SCI_SETSEARCHFLAGS, sflags);\n\n        int pos = 0;\n        int dlen = SendScintilla(SCI_GETLENGTH);\n        int caret = SendScintilla(SCI_GETCURRENTPOS);\n        int clen = caret - start;\n        char *orig_context = new char[clen + 1];\n\n        SendScintilla(SCI_GETTEXTRANGE, start, caret, orig_context);\n\n        for (;;)\n        {\n            int fstart;\n\n            SendScintilla(SCI_SETTARGETSTART, pos);\n            SendScintilla(SCI_SETTARGETEND, dlen);\n\n            if ((fstart = SendScintilla(SCI_SEARCHINTARGET, clen, orig_context)) < 0)\n                break;\n\n            // Move past the root part.\n            pos = fstart + clen;\n\n            // Skip if this is the context we are auto-completing.\n            if (pos == caret)\n                continue;\n\n            // Get the rest of this word.\n            QString w = last_data;\n\n            while (pos < dlen)\n            {\n                char ch = SendScintilla(SCI_GETCHARAT, pos);\n\n                if (!isWordCharacter(ch))\n                    break;\n\n                w += ch;\n                ++pos;\n            }\n\n            // Add the word if it isn't already there.\n            if (!w.isEmpty())\n            {\n                bool keep;\n\n                // If there are APIs then check if the word is already present\n                // as an API word (i.e. with a trailing space).\n                if (acs == AcsAll)\n                {\n                    QString api_w = w;\n                    api_w.append(' ');\n\n                    keep = !wlist.contains(api_w);\n                }\n                else\n                {\n                    keep = true;\n                }\n\n                if (keep && !wlist.contains(w))\n                    wlist.append(w);\n            }\n        }\n\n        delete []orig_context;\n    }\n\n    if (wlist.isEmpty())\n        return;\n\n    wlist.sort();\n\n    SendScintilla(SCI_AUTOCSETCHOOSESINGLE, choose_single);\n    SendScintilla(SCI_AUTOCSETSEPARATOR, acSeparator);\n\n    ScintillaBytes wlist_s = textAsBytes(wlist.join(QChar(acSeparator)));\n    SendScintilla(SCI_AUTOCSHOW, last_len, ScintillaBytesConstData(wlist_s));\n}\n\n\n// Maintain the indentation of the previous line.\nvoid QsciScintilla::maintainIndentation(char ch, long pos)\n{\n    if (ch != '\\r' && ch != '\\n')\n        return;\n\n    int curr_line = SendScintilla(SCI_LINEFROMPOSITION, pos);\n\n    // Get the indentation of the preceding non-zero length line.\n    int ind = 0;\n\n    for (int line = curr_line - 1; line >= 0; --line)\n    {\n        if (SendScintilla(SCI_GETLINEENDPOSITION, line) >\n            SendScintilla(SCI_POSITIONFROMLINE, line))\n        {\n            ind = indentation(line);\n            break;\n        }\n    }\n\n    if (ind > 0)\n        autoIndentLine(pos, curr_line, ind);\n}\n\n\n// Implement auto-indentation.\nvoid QsciScintilla::autoIndentation(char ch, long pos)\n{\n    int curr_line = SendScintilla(SCI_LINEFROMPOSITION, pos);\n    int ind_width = indentWidth();\n    long curr_line_start = SendScintilla(SCI_POSITIONFROMLINE, curr_line);\n\n    const char *block_start = lex->blockStart();\n    bool start_single = (block_start && qstrlen(block_start) == 1);\n\n    const char *block_end = lex->blockEnd();\n    bool end_single = (block_end && qstrlen(block_end) == 1);\n\n    if (end_single && block_end[0] == ch)\n    {\n        if (!(lex->autoIndentStyle() & AiClosing) && rangeIsWhitespace(curr_line_start, pos - 1))\n            autoIndentLine(pos, curr_line, blockIndent(curr_line - 1) - ind_width);\n    }\n    else if (start_single && block_start[0] == ch)\n    {\n        // De-indent if we have already indented because the previous line was\n        // a start of block keyword.\n        if (!(lex->autoIndentStyle() & AiOpening) && curr_line > 0 && getIndentState(curr_line - 1) == isKeywordStart && rangeIsWhitespace(curr_line_start, pos - 1))\n            autoIndentLine(pos, curr_line, blockIndent(curr_line - 1) - ind_width);\n    }\n    else if (ch == '\\r' || ch == '\\n')\n    {\n        // Don't auto-indent the line (ie. preserve its existing indentation)\n        // if we have inserted a new line above by pressing return at the start\n        // of this line - in other words, if the previous line is empty.\n        long prev_line_length = SendScintilla(SCI_GETLINEENDPOSITION, curr_line - 1) - SendScintilla(SCI_POSITIONFROMLINE, curr_line - 1);\n\n        if (prev_line_length != 0)\n            autoIndentLine(pos, curr_line, blockIndent(curr_line - 1));\n    }\n}\n\n\n// Set the indentation for a line.\nvoid QsciScintilla::autoIndentLine(long pos, int line, int indent)\n{\n    if (indent < 0)\n        return;\n\n    long pos_before = SendScintilla(SCI_GETLINEINDENTPOSITION, line);\n    SendScintilla(SCI_SETLINEINDENTATION, line, indent);\n    long pos_after = SendScintilla(SCI_GETLINEINDENTPOSITION, line);\n    long new_pos = -1;\n\n    if (pos_after > pos_before)\n        new_pos = pos + (pos_after - pos_before);\n    else if (pos_after < pos_before && pos >= pos_after)\n        if (pos >= pos_before)\n            new_pos = pos + (pos_after - pos_before);\n        else\n            new_pos = pos_after;\n\n    if (new_pos >= 0)\n        SendScintilla(SCI_SETSEL, new_pos, new_pos);\n}\n\n\n// Return the indentation of the block defined by the given line (or something\n// significant before).\nint QsciScintilla::blockIndent(int line)\n{\n    if (line < 0)\n        return 0;\n\n    // Handle the trvial case.\n    if (!lex->blockStartKeyword() && !lex->blockStart() && !lex->blockEnd())\n        return indentation(line);\n\n    int line_limit = line - lex->blockLookback();\n\n    if (line_limit < 0)\n        line_limit = 0;\n\n    for (int l = line; l >= line_limit; --l)\n    {\n        IndentState istate = getIndentState(l);\n\n        if (istate != isNone)\n        {\n            int ind_width = indentWidth();\n            int ind = indentation(l);\n\n            if (istate == isBlockStart)\n            {\n                if (!(lex -> autoIndentStyle() & AiOpening))\n                    ind += ind_width;\n            }\n            else if (istate == isBlockEnd)\n            {\n                if (lex -> autoIndentStyle() & AiClosing)\n                    ind -= ind_width;\n\n                if (ind < 0)\n                    ind = 0;\n            }\n            else if (line == l)\n                ind += ind_width;\n\n            return ind;\n        }\n    }\n\n    return indentation(line);\n}\n\n\n// Return true if all characters starting at spos up to, but not including\n// epos, are spaces or tabs.\nbool QsciScintilla::rangeIsWhitespace(long spos, long epos)\n{\n    while (spos < epos)\n    {\n        char ch = SendScintilla(SCI_GETCHARAT, spos);\n\n        if (ch != ' ' && ch != '\\t')\n            return false;\n\n        ++spos;\n    }\n\n    return true;\n}\n\n\n// Returns the indentation state of a line.\nQsciScintilla::IndentState QsciScintilla::getIndentState(int line)\n{\n    IndentState istate;\n\n    // Get the styled text.\n    long spos = SendScintilla(SCI_POSITIONFROMLINE, line);\n    long epos = SendScintilla(SCI_POSITIONFROMLINE, line + 1);\n\n    char *text = new char[(epos - spos + 1) * 2];\n\n    SendScintilla(SCI_GETSTYLEDTEXT, spos, epos, text);\n\n    int style, bstart_off, bend_off;\n\n    // Block start/end takes precedence over keywords.\n    const char *bstart_words = lex->blockStart(&style);\n    bstart_off = findStyledWord(text, style, bstart_words);\n\n    const char *bend_words = lex->blockEnd(&style);\n    bend_off = findStyledWord(text, style, bend_words);\n\n    // If there is a block start but no block end characters then ignore it\n    // unless the block start is the last significant thing on the line, ie.\n    // assume Python-like blocking.\n    if (bstart_off >= 0 && !bend_words)\n        for (int i = bstart_off * 2; text[i] != '\\0'; i += 2)\n            if (!QChar(text[i]).isSpace())\n                return isNone;\n\n    if (bstart_off > bend_off)\n        istate = isBlockStart;\n    else if (bend_off > bstart_off)\n        istate = isBlockEnd;\n    else\n    {\n        const char *words = lex->blockStartKeyword(&style);\n\n        istate = (findStyledWord(text,style,words) >= 0) ? isKeywordStart : isNone;\n    }\n\n    delete[] text;\n\n    return istate;\n}\n\n\n// text is a pointer to some styled text (ie. a character byte followed by a\n// style byte).  style is a style number.  words is a space separated list of\n// words.  Returns the position in the text immediately after the last one of\n// the words with the style.  The reason we are after the last, and not the\n// first, occurance is that we are looking for words that start and end a block\n// where the latest one is the most significant.\nint QsciScintilla::findStyledWord(const char *text, int style,\n        const char *words)\n{\n    if (!words)\n        return -1;\n\n    // Find the range of text with the style we are looking for.\n    const char *stext;\n\n    for (stext = text; stext[1] != style; stext += 2)\n        if (stext[0] == '\\0')\n            return -1;\n\n    // Move to the last character.\n    const char *etext = stext;\n\n    while (etext[2] != '\\0')\n        etext += 2;\n\n    // Backtrack until we find the style.  There will be one.\n    while (etext[1] != style)\n        etext -= 2;\n\n    // Look for each word in turn.\n    while (words[0] != '\\0')\n    {\n        // Find the end of the word.\n        const char *eword = words;\n\n        while (eword[1] != ' ' && eword[1] != '\\0')\n            ++eword;\n\n        // Now search the text backwards.\n        const char *wp = eword;\n\n        for (const char *tp = etext; tp >= stext; tp -= 2)\n        {\n            if (tp[0] != wp[0] || tp[1] != style)\n            {\n                // Reset the search.\n                wp = eword;\n                continue;\n            }\n\n            // See if all the word has matched.\n            if (wp-- == words)\n                return ((tp - text) / 2) + (eword - words) + 1;\n        }\n\n        // Move to the start of the next word if there is one.\n        words = eword + 1;\n\n        if (words[0] == ' ')\n            ++words;\n    }\n\n    return -1;\n}\n\n\n// Return true if the code page is UTF8.\nbool QsciScintilla::isUtf8() const\n{\n    return (SendScintilla(SCI_GETCODEPAGE) == SC_CP_UTF8);\n}\n\n\n// Set the code page.\nvoid QsciScintilla::setUtf8(bool cp)\n{\n    SendScintilla(SCI_SETCODEPAGE, (cp ? SC_CP_UTF8 : 0));\n}\n\n\n// Return the end-of-line mode.\nQsciScintilla::EolMode QsciScintilla::eolMode() const\n{\n    return (EolMode)SendScintilla(SCI_GETEOLMODE);\n}\n\n\n// Set the end-of-line mode.\nvoid QsciScintilla::setEolMode(EolMode mode)\n{\n    SendScintilla(SCI_SETEOLMODE, mode);\n}\n\n\n// Convert the end-of-lines to a particular mode.\nvoid QsciScintilla::convertEols(EolMode mode)\n{\n    SendScintilla(SCI_CONVERTEOLS, mode);\n}\n\n\n// Add an edge column.\nvoid QsciScintilla::addEdgeColumn(int colnr, const QColor &col)\n{\n    SendScintilla(SCI_MULTIEDGEADDLINE, colnr, col);\n}\n\n\n// Clear all multi-edge columns.\nvoid QsciScintilla::clearEdgeColumns()\n{\n    SendScintilla(SCI_MULTIEDGECLEARALL);\n}\n\n\n// Return the edge colour.\nQColor QsciScintilla::edgeColor() const\n{\n    return asQColor(SendScintilla(SCI_GETEDGECOLOUR));\n}\n\n\n// Set the edge colour.\nvoid QsciScintilla::setEdgeColor(const QColor &col)\n{\n    SendScintilla(SCI_SETEDGECOLOUR, col);\n}\n\n\n// Return the edge column.\nint QsciScintilla::edgeColumn() const\n{\n    return SendScintilla(SCI_GETEDGECOLUMN);\n}\n\n\n// Set the edge column.\nvoid QsciScintilla::setEdgeColumn(int colnr)\n{\n    SendScintilla(SCI_SETEDGECOLUMN, colnr);\n}\n\n\n// Return the edge mode.\nQsciScintilla::EdgeMode QsciScintilla::edgeMode() const\n{\n    return (EdgeMode)SendScintilla(SCI_GETEDGEMODE);\n}\n\n\n// Set the edge mode.\nvoid QsciScintilla::setEdgeMode(EdgeMode mode)\n{\n    SendScintilla(SCI_SETEDGEMODE, mode);\n}\n\n\n// Return the end-of-line visibility.\nbool QsciScintilla::eolVisibility() const\n{\n    return SendScintilla(SCI_GETVIEWEOL);\n}\n\n\n// Set the end-of-line visibility.\nvoid QsciScintilla::setEolVisibility(bool visible)\n{\n    SendScintilla(SCI_SETVIEWEOL, visible);\n}\n\n\n// Return the extra ascent.\nint QsciScintilla::extraAscent() const\n{\n    return SendScintilla(SCI_GETEXTRAASCENT);\n}\n\n\n// Set the extra ascent.\nvoid QsciScintilla::setExtraAscent(int extra)\n{\n    SendScintilla(SCI_SETEXTRAASCENT, extra);\n}\n\n\n// Return the extra descent.\nint QsciScintilla::extraDescent() const\n{\n    return SendScintilla(SCI_GETEXTRADESCENT);\n}\n\n\n// Set the extra descent.\nvoid QsciScintilla::setExtraDescent(int extra)\n{\n    SendScintilla(SCI_SETEXTRADESCENT, extra);\n}\n\n\n// Return the whitespace size.\nint QsciScintilla::whitespaceSize() const\n{\n    return SendScintilla(SCI_GETWHITESPACESIZE);\n}\n\n\n// Set the whitespace size.\nvoid QsciScintilla::setWhitespaceSize(int size)\n{\n    SendScintilla(SCI_SETWHITESPACESIZE, size);\n}\n\n\n// Set the whitespace background colour.\nvoid QsciScintilla::setWhitespaceBackgroundColor(const QColor &col)\n{\n    SendScintilla(SCI_SETWHITESPACEBACK, col.isValid(), col);\n}\n\n\n// Set the whitespace foreground colour.\nvoid QsciScintilla::setWhitespaceForegroundColor(const QColor &col)\n{\n    SendScintilla(SCI_SETWHITESPACEFORE, col.isValid(), col);\n}\n\n\n// Return the whitespace visibility.\nQsciScintilla::WhitespaceVisibility QsciScintilla::whitespaceVisibility() const\n{\n    return (WhitespaceVisibility)SendScintilla(SCI_GETVIEWWS);\n}\n\n\n// Set the whitespace visibility.\nvoid QsciScintilla::setWhitespaceVisibility(WhitespaceVisibility mode)\n{\n    SendScintilla(SCI_SETVIEWWS, mode);\n}\n\n\n// Return the tab draw mode.\nQsciScintilla::TabDrawMode QsciScintilla::tabDrawMode() const\n{\n    return (TabDrawMode)SendScintilla(SCI_GETTABDRAWMODE);\n}\n\n\n// Set the tab draw mode.\nvoid QsciScintilla::setTabDrawMode(TabDrawMode mode)\n{\n    SendScintilla(SCI_SETTABDRAWMODE, mode);\n}\n\n\n// Return the line wrap mode.\nQsciScintilla::WrapMode QsciScintilla::wrapMode() const\n{\n    return (WrapMode)SendScintilla(SCI_GETWRAPMODE);\n}\n\n\n// Set the line wrap mode.\nvoid QsciScintilla::setWrapMode(WrapMode mode)\n{\n    SendScintilla(SCI_SETLAYOUTCACHE,\n            (mode == WrapNone ? SC_CACHE_CARET : SC_CACHE_DOCUMENT));\n    SendScintilla(SCI_SETWRAPMODE, mode);\n}\n\n\n// Return the line wrap indent mode.\nQsciScintilla::WrapIndentMode QsciScintilla::wrapIndentMode() const\n{\n    return (WrapIndentMode)SendScintilla(SCI_GETWRAPINDENTMODE);\n}\n\n\n// Set the line wrap indent mode.\nvoid QsciScintilla::setWrapIndentMode(WrapIndentMode mode)\n{\n    SendScintilla(SCI_SETWRAPINDENTMODE, mode);\n}\n\n\n// Set the line wrap visual flags.\nvoid QsciScintilla::setWrapVisualFlags(WrapVisualFlag endFlag,\n        WrapVisualFlag startFlag, int indent)\n{\n    int flags = SC_WRAPVISUALFLAG_NONE;\n    int loc = SC_WRAPVISUALFLAGLOC_DEFAULT;\n\n    switch (endFlag)\n    {\n    case WrapFlagByText:\n        flags |= SC_WRAPVISUALFLAG_END;\n        loc |= SC_WRAPVISUALFLAGLOC_END_BY_TEXT;\n        break;\n\n    case WrapFlagByBorder:\n        flags |= SC_WRAPVISUALFLAG_END;\n        break;\n\n    case WrapFlagInMargin:\n        flags |= SC_WRAPVISUALFLAG_MARGIN;\n        break;\n    }\n\n    switch (startFlag)\n    {\n    case WrapFlagByText:\n        flags |= SC_WRAPVISUALFLAG_START;\n        loc |= SC_WRAPVISUALFLAGLOC_START_BY_TEXT;\n        break;\n\n    case WrapFlagByBorder:\n        flags |= SC_WRAPVISUALFLAG_START;\n        break;\n\n    case WrapFlagInMargin:\n        flags |= SC_WRAPVISUALFLAG_MARGIN;\n        break;\n    }\n\n    SendScintilla(SCI_SETWRAPVISUALFLAGS, flags);\n    SendScintilla(SCI_SETWRAPVISUALFLAGSLOCATION, loc);\n    SendScintilla(SCI_SETWRAPSTARTINDENT, indent);\n}\n\n\n// Set the folding style.\nvoid QsciScintilla::setFolding(FoldStyle folding, int margin)\n{\n    fold = folding;\n    foldmargin = margin;\n\n    if (folding == NoFoldStyle)\n    {\n        SendScintilla(SCI_SETMARGINWIDTHN, margin, 0L);\n        return;\n    }\n\n    int mask = SendScintilla(SCI_GETMODEVENTMASK);\n    SendScintilla(SCI_SETMODEVENTMASK, mask | SC_MOD_CHANGEFOLD);\n\n    SendScintilla(SCI_SETFOLDFLAGS, SC_FOLDFLAG_LINEAFTER_CONTRACTED);\n\n    SendScintilla(SCI_SETMARGINTYPEN, margin, (long)SC_MARGIN_SYMBOL);\n    SendScintilla(SCI_SETMARGINMASKN, margin, SC_MASK_FOLDERS);\n    SendScintilla(SCI_SETMARGINSENSITIVEN, margin, 1);\n\n    // Set the marker symbols to use.\n    switch (folding)\n    {\n    case PlainFoldStyle:\n        setFoldMarker(SC_MARKNUM_FOLDEROPEN, SC_MARK_MINUS);\n        setFoldMarker(SC_MARKNUM_FOLDER, SC_MARK_PLUS);\n        setFoldMarker(SC_MARKNUM_FOLDERSUB);\n        setFoldMarker(SC_MARKNUM_FOLDERTAIL);\n        setFoldMarker(SC_MARKNUM_FOLDEREND);\n        setFoldMarker(SC_MARKNUM_FOLDEROPENMID);\n        setFoldMarker(SC_MARKNUM_FOLDERMIDTAIL);\n        break;\n\n    case CircledFoldStyle:\n        setFoldMarker(SC_MARKNUM_FOLDEROPEN, SC_MARK_CIRCLEMINUS);\n        setFoldMarker(SC_MARKNUM_FOLDER, SC_MARK_CIRCLEPLUS);\n        setFoldMarker(SC_MARKNUM_FOLDERSUB);\n        setFoldMarker(SC_MARKNUM_FOLDERTAIL);\n        setFoldMarker(SC_MARKNUM_FOLDEREND);\n        setFoldMarker(SC_MARKNUM_FOLDEROPENMID);\n        setFoldMarker(SC_MARKNUM_FOLDERMIDTAIL);\n        break;\n\n    case BoxedFoldStyle:\n        setFoldMarker(SC_MARKNUM_FOLDEROPEN, SC_MARK_BOXMINUS);\n        setFoldMarker(SC_MARKNUM_FOLDER, SC_MARK_BOXPLUS);\n        setFoldMarker(SC_MARKNUM_FOLDERSUB);\n        setFoldMarker(SC_MARKNUM_FOLDERTAIL);\n        setFoldMarker(SC_MARKNUM_FOLDEREND);\n        setFoldMarker(SC_MARKNUM_FOLDEROPENMID);\n        setFoldMarker(SC_MARKNUM_FOLDERMIDTAIL);\n        break;\n\n    case CircledTreeFoldStyle:\n        setFoldMarker(SC_MARKNUM_FOLDEROPEN, SC_MARK_CIRCLEMINUS);\n        setFoldMarker(SC_MARKNUM_FOLDER, SC_MARK_CIRCLEPLUS);\n        setFoldMarker(SC_MARKNUM_FOLDERSUB, SC_MARK_VLINE);\n        setFoldMarker(SC_MARKNUM_FOLDERTAIL, SC_MARK_LCORNERCURVE);\n        setFoldMarker(SC_MARKNUM_FOLDEREND, SC_MARK_CIRCLEPLUSCONNECTED);\n        setFoldMarker(SC_MARKNUM_FOLDEROPENMID, SC_MARK_CIRCLEMINUSCONNECTED);\n        setFoldMarker(SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_TCORNERCURVE);\n        break;\n\n    case BoxedTreeFoldStyle:\n        setFoldMarker(SC_MARKNUM_FOLDEROPEN, SC_MARK_BOXMINUS);\n        setFoldMarker(SC_MARKNUM_FOLDER, SC_MARK_BOXPLUS);\n        setFoldMarker(SC_MARKNUM_FOLDERSUB, SC_MARK_VLINE);\n        setFoldMarker(SC_MARKNUM_FOLDERTAIL, SC_MARK_LCORNER);\n        setFoldMarker(SC_MARKNUM_FOLDEREND, SC_MARK_BOXPLUSCONNECTED);\n        setFoldMarker(SC_MARKNUM_FOLDEROPENMID, SC_MARK_BOXMINUSCONNECTED);\n        setFoldMarker(SC_MARKNUM_FOLDERMIDTAIL, SC_MARK_TCORNER);\n        break;\n    }\n\n    SendScintilla(SCI_SETMARGINWIDTHN, margin, defaultFoldMarginWidth);\n}\n\n\n// Clear all current folds.\nvoid QsciScintilla::clearFolds()\n{\n    recolor();\n\n    int maxLine = SendScintilla(SCI_GETLINECOUNT);\n\n    for (int line = 0; line < maxLine; line++)\n    {\n        int level = SendScintilla(SCI_GETFOLDLEVEL, line);\n\n        if (level & SC_FOLDLEVELHEADERFLAG)\n        {\n            SendScintilla(SCI_SETFOLDEXPANDED, line, 1);\n            foldExpand(line, true, false, 0, level);\n            line--;\n        }\n    }\n}\n\n\n// Set up a folder marker.\nvoid QsciScintilla::setFoldMarker(int marknr, int mark)\n{\n    SendScintilla(SCI_MARKERDEFINE, marknr, mark);\n\n    if (mark != SC_MARK_EMPTY)\n    {\n        SendScintilla(SCI_MARKERSETFORE, marknr, QColor(Qt::white));\n        SendScintilla(SCI_MARKERSETBACK, marknr, QColor(Qt::black));\n    }\n}\n\n\n// Handle a click in the fold margin.  This is mostly taken from SciTE.\nvoid QsciScintilla::foldClick(int lineClick, int bstate)\n{\n    bool shift = bstate & Qt::ShiftModifier;\n    bool ctrl = bstate & Qt::ControlModifier;\n\n    if (shift && ctrl)\n    {\n        foldAll();\n        return;\n    }\n\n    int levelClick = SendScintilla(SCI_GETFOLDLEVEL, lineClick);\n\n    if (levelClick & SC_FOLDLEVELHEADERFLAG)\n    {\n        if (shift)\n        {\n            // Ensure all children are visible.\n            SendScintilla(SCI_SETFOLDEXPANDED, lineClick, 1);\n            foldExpand(lineClick, true, true, 100, levelClick);\n        }\n        else if (ctrl)\n        {\n            if (SendScintilla(SCI_GETFOLDEXPANDED, lineClick))\n            {\n                // Contract this line and all its children.\n                SendScintilla(SCI_SETFOLDEXPANDED, lineClick, 0L);\n                foldExpand(lineClick, false, true, 0, levelClick);\n            }\n            else\n            {\n                // Expand this line and all its children.\n                SendScintilla(SCI_SETFOLDEXPANDED, lineClick, 1);\n                foldExpand(lineClick, true, true, 100, levelClick);\n            }\n        }\n        else\n        {\n            // Toggle this line.\n            SendScintilla(SCI_TOGGLEFOLD, lineClick);\n        }\n    }\n}\n\n\n// Do the hard work of hiding and showing lines.  This is mostly taken from\n// SciTE.\nvoid QsciScintilla::foldExpand(int &line, bool doExpand, bool force,\n        int visLevels, int level)\n{\n    int lineMaxSubord = SendScintilla(SCI_GETLASTCHILD, line,\n            level & SC_FOLDLEVELNUMBERMASK);\n\n    line++;\n\n    while (line <= lineMaxSubord)\n    {\n        if (force)\n        {\n            if (visLevels > 0)\n                SendScintilla(SCI_SHOWLINES, line, line);\n            else\n                SendScintilla(SCI_HIDELINES, line, line);\n        }\n        else if (doExpand)\n            SendScintilla(SCI_SHOWLINES, line, line);\n\n        int levelLine = level;\n\n        if (levelLine == -1)\n            levelLine = SendScintilla(SCI_GETFOLDLEVEL, line);\n\n        if (levelLine & SC_FOLDLEVELHEADERFLAG)\n        {\n            if (force)\n            {\n                if (visLevels > 1)\n                    SendScintilla(SCI_SETFOLDEXPANDED, line, 1);\n                else\n                    SendScintilla(SCI_SETFOLDEXPANDED, line, 0L);\n\n                foldExpand(line, doExpand, force, visLevels - 1);\n            }\n            else if (doExpand)\n            {\n                if (!SendScintilla(SCI_GETFOLDEXPANDED, line))\n                    SendScintilla(SCI_SETFOLDEXPANDED, line, 1);\n\n                foldExpand(line, true, force, visLevels - 1);\n            }\n            else\n                foldExpand(line, false, force, visLevels - 1);\n        }\n        else\n            line++;\n    }\n}\n\n\n// Fully expand (if there is any line currently folded) all text.  Otherwise,\n// fold all text.  This is mostly taken from SciTE.\nvoid QsciScintilla::foldAll(bool children)\n{\n    recolor();\n\n    int maxLine = SendScintilla(SCI_GETLINECOUNT);\n    bool expanding = true;\n\n    for (int lineSeek = 0; lineSeek < maxLine; lineSeek++)\n    {\n        if (SendScintilla(SCI_GETFOLDLEVEL,lineSeek) & SC_FOLDLEVELHEADERFLAG)\n        {\n            expanding = !SendScintilla(SCI_GETFOLDEXPANDED, lineSeek);\n            break;\n        }\n    }\n\n    for (int line = 0; line < maxLine; line++)\n    {\n        int level = SendScintilla(SCI_GETFOLDLEVEL, line);\n\n        if (!(level & SC_FOLDLEVELHEADERFLAG))\n            continue;\n\n        if (children ||\n            (SC_FOLDLEVELBASE == (level & SC_FOLDLEVELNUMBERMASK)))\n        {\n            if (expanding)\n            {\n                SendScintilla(SCI_SETFOLDEXPANDED, line, 1);\n                foldExpand(line, true, false, 0, level);\n                line--;\n            }\n            else\n            {\n                int lineMaxSubord = SendScintilla(SCI_GETLASTCHILD, line, -1);\n\n                SendScintilla(SCI_SETFOLDEXPANDED, line, 0L);\n\n                if (lineMaxSubord > line)\n                    SendScintilla(SCI_HIDELINES, line + 1, lineMaxSubord);\n            }\n        }\n    }\n}\n\n\n// Handle a fold change.  This is mostly taken from SciTE.\nvoid QsciScintilla::foldChanged(int line,int levelNow,int levelPrev)\n{\n    if (levelNow & SC_FOLDLEVELHEADERFLAG)\n    {\n        if (!(levelPrev & SC_FOLDLEVELHEADERFLAG))\n            SendScintilla(SCI_SETFOLDEXPANDED, line, 1);\n    }\n    else if (levelPrev & SC_FOLDLEVELHEADERFLAG)\n    {\n        if (!SendScintilla(SCI_GETFOLDEXPANDED, line))\n        {\n            // Removing the fold from one that has been contracted so should\n            // expand.  Otherwise lines are left invisible with no way to make\n            // them visible.\n            foldExpand(line, true, false, 0, levelPrev);\n        }\n    }\n}\n\n\n// Toggle the fold for a line if it contains a fold marker.\nvoid QsciScintilla::foldLine(int line)\n{\n    SendScintilla(SCI_TOGGLEFOLD, line);\n}\n\n\n// Return the list of folded lines.\nQList<int> QsciScintilla::contractedFolds() const\n{\n    QList<int> folds;\n    int linenr = 0, fold_line;\n\n    while ((fold_line = SendScintilla(SCI_CONTRACTEDFOLDNEXT, linenr)) >= 0)\n    {\n        folds.append(fold_line);\n        linenr = fold_line + 1;\n    }\n\n    return folds;\n}\n\n\n// Set the fold state from a list.\nvoid QsciScintilla::setContractedFolds(const QList<int> &folds)\n{\n    for (int i = 0; i < folds.count(); ++i)\n    {\n        int line = folds[i];\n        int last_line = SendScintilla(SCI_GETLASTCHILD, line, -1);\n\n        SendScintilla(SCI_SETFOLDEXPANDED, line, 0L);\n        SendScintilla(SCI_HIDELINES, line + 1, last_line);\n    }\n}\n\n\n// Handle the SCN_MODIFIED notification.\nvoid QsciScintilla::handleModified(int pos, int mtype, const char *text,\n        int len, int added, int line, int foldNow, int foldPrev, int token,\n        int annotationLinesAdded)\n{\n    if (mtype & SC_MOD_CHANGEFOLD)\n    {\n        if (fold)\n            foldChanged(line, foldNow, foldPrev);\n    }\n\n    if (mtype & (SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT))\n    {\n        emit textChanged();\n\n        if (added != 0)\n            emit linesChanged();\n    }\n}\n\n\n// Zoom in a number of points.\nvoid QsciScintilla::zoomIn(int range)\n{\n    zoomTo(SendScintilla(SCI_GETZOOM) + range);\n}\n\n\n// Zoom in a single point.\nvoid QsciScintilla::zoomIn()\n{\n    SendScintilla(SCI_ZOOMIN);\n}\n\n\n// Zoom out a number of points.\nvoid QsciScintilla::zoomOut(int range)\n{\n    zoomTo(SendScintilla(SCI_GETZOOM) - range);\n}\n\n\n// Zoom out a single point.\nvoid QsciScintilla::zoomOut()\n{\n    SendScintilla(SCI_ZOOMOUT);\n}\n\n\n// Set the zoom to a number of points.\nvoid QsciScintilla::zoomTo(int size)\n{\n    if (size < -10)\n        size = -10;\n    else if (size > 20)\n        size = 20;\n\n    SendScintilla(SCI_SETZOOM, size);\n}\n\n\n// Find the first occurrence of a string.\nbool QsciScintilla::findFirst(const QString &expr, bool re, bool cs, bool wo,\n        bool wrap, bool forward, int line, int index, bool show, bool posix)\n{\n    if (expr.isEmpty())\n    {\n        findState.status = FindState::Idle;\n        return false;\n    }\n\n    findState.status = FindState::Finding;\n    findState.expr = expr;\n    findState.wrap = wrap;\n    findState.forward = forward;\n\n    findState.flags =\n        (cs ? SCFIND_MATCHCASE : 0) |\n        (wo ? SCFIND_WHOLEWORD : 0) |\n        (re ? SCFIND_REGEXP : 0) |\n        (posix ? SCFIND_POSIX : 0);\n\n    if (line < 0 || index < 0)\n        findState.startpos = SendScintilla(SCI_GETCURRENTPOS);\n    else\n        findState.startpos = positionFromLineIndex(line, index);\n\n    if (forward)\n        findState.endpos = SendScintilla(SCI_GETLENGTH);\n    else\n        findState.endpos = 0;\n\n    findState.show = show;\n\n    return doFind();\n}\n\n\n// Find the first occurrence of a string in the current selection.\nbool QsciScintilla::findFirstInSelection(const QString &expr, bool re, bool cs,\n        bool wo, bool forward, bool show, bool posix)\n{\n    if (expr.isEmpty())\n    {\n        findState.status = FindState::Idle;\n        return false;\n    }\n\n    findState.status = FindState::FindingInSelection;\n    findState.expr = expr;\n    findState.wrap = false;\n    findState.forward = forward;\n\n    findState.flags =\n        (cs ? SCFIND_MATCHCASE : 0) |\n        (wo ? SCFIND_WHOLEWORD : 0) |\n        (re ? SCFIND_REGEXP : 0) |\n        (posix ? SCFIND_POSIX : 0);\n\n    findState.startpos_orig = SendScintilla(SCI_GETSELECTIONSTART);\n    findState.endpos_orig = SendScintilla(SCI_GETSELECTIONEND);\n\n    if (forward)\n    {\n        findState.startpos = findState.startpos_orig;\n        findState.endpos = findState.endpos_orig;\n    }\n    else\n    {\n        findState.startpos = findState.endpos_orig;\n        findState.endpos = findState.startpos_orig;\n    }\n\n    findState.show = show;\n\n    return doFind();\n}\n\n\n// Find the next occurrence of a string.\nbool QsciScintilla::findNext()\n{\n    if (findState.status == FindState::Idle)\n        return false;\n\n    return doFind();\n}\n\n\n// Do the hard work of the find methods.\nbool QsciScintilla::doFind()\n{\n    SendScintilla(SCI_SETSEARCHFLAGS, findState.flags);\n\n    int pos = simpleFind();\n\n    // See if it was found.  If not and wraparound is wanted, try again.\n    if (pos == -1 && findState.wrap)\n    {\n        if (findState.forward)\n        {\n            findState.startpos = 0;\n            findState.endpos = SendScintilla(SCI_GETLENGTH);\n        }\n        else\n        {\n            findState.startpos = SendScintilla(SCI_GETLENGTH);\n            findState.endpos = 0;\n        }\n\n        pos = simpleFind();\n    }\n\n    if (pos == -1)\n    {\n        // Restore the original selection.\n        if (findState.status == FindState::FindingInSelection)\n            SendScintilla(SCI_SETSEL, findState.startpos_orig,\n                    findState.endpos_orig);\n\n        findState.status = FindState::Idle;\n        return false;\n    }\n\n    // It was found.\n    long targstart = SendScintilla(SCI_GETTARGETSTART);\n    long targend = SendScintilla(SCI_GETTARGETEND);\n\n    // Ensure the text found is visible if required.\n    if (findState.show)\n    {\n        int startLine = SendScintilla(SCI_LINEFROMPOSITION, targstart);\n        int endLine = SendScintilla(SCI_LINEFROMPOSITION, targend);\n\n        for (int i = startLine; i <= endLine; ++i)\n            SendScintilla(SCI_ENSUREVISIBLEENFORCEPOLICY, i);\n    }\n\n    // Now set the selection.\n    SendScintilla(SCI_SETSEL, targstart, targend);\n\n    // Finally adjust the start position so that we don't find the same one\n    // again.\n    if (findState.forward)\n        findState.startpos = targend;\n    else if ((findState.startpos = targstart - 1) < 0)\n        findState.startpos = 0;\n\n    return true;\n}\n\n\n// Do a simple find between the start and end positions.\nint QsciScintilla::simpleFind()\n{\n    if (findState.startpos == findState.endpos)\n        return -1;\n\n    SendScintilla(SCI_SETTARGETSTART, findState.startpos);\n    SendScintilla(SCI_SETTARGETEND, findState.endpos);\n\n    ScintillaBytes s = textAsBytes(findState.expr);\n\n    return SendScintilla(SCI_SEARCHINTARGET, s.length(),\n            ScintillaBytesConstData(s));\n}\n\n\n// Replace the text found with the previous find method.\nvoid QsciScintilla::replace(const QString &replaceStr)\n{\n    if (findState.status == FindState::Idle)\n        return;\n\n    long start = SendScintilla(SCI_GETSELECTIONSTART);\n    long orig_len = SendScintilla(SCI_GETSELECTIONEND) - start;\n\n    SendScintilla(SCI_TARGETFROMSELECTION);\n\n    int cmd = (findState.flags & SCFIND_REGEXP) ? SCI_REPLACETARGETRE : SCI_REPLACETARGET;\n\n    ScintillaBytes s = textAsBytes(replaceStr);\n    long len = SendScintilla(cmd, -1, ScintillaBytesConstData(s));\n\n    // Reset the selection.\n    SendScintilla(SCI_SETSELECTIONSTART, start);\n    SendScintilla(SCI_SETSELECTIONEND, start + len);\n\n    // Fix the original selection.\n    findState.endpos_orig += (len - orig_len);\n\n    if (findState.forward)\n        findState.startpos = start + len;\n}\n\n\n// Query the modified state.\nbool QsciScintilla::isModified() const\n{\n    return doc.isModified();\n}\n\n\n// Set the modified state.\nvoid QsciScintilla::setModified(bool m)\n{\n    if (!m)\n        SendScintilla(SCI_SETSAVEPOINT);\n}\n\n\n// Handle the SCN_INDICATORCLICK notification.\nvoid QsciScintilla::handleIndicatorClick(int pos, int modifiers)\n{\n    int state = mapModifiers(modifiers);\n    int line, index;\n\n    lineIndexFromPosition(pos, &line, &index);\n\n    emit indicatorClicked(line, index, Qt::KeyboardModifiers(state));\n}\n\n\n// Handle the SCN_INDICATORRELEASE notification.\nvoid QsciScintilla::handleIndicatorRelease(int pos, int modifiers)\n{\n    int state = mapModifiers(modifiers);\n    int line, index;\n\n    lineIndexFromPosition(pos, &line, &index);\n\n    emit indicatorReleased(line, index, Qt::KeyboardModifiers(state));\n}\n\n\n// Handle the SCN_MARGINCLICK notification.\nvoid QsciScintilla::handleMarginClick(int pos, int modifiers, int margin)\n{\n    int state = mapModifiers(modifiers);\n    int line = SendScintilla(SCI_LINEFROMPOSITION, pos);\n\n    if (fold && margin == foldmargin)\n        foldClick(line, state);\n    else\n        emit marginClicked(margin, line, Qt::KeyboardModifiers(state));\n}\n\n\n// Handle the SCN_MARGINRIGHTCLICK notification.\nvoid QsciScintilla::handleMarginRightClick(int pos, int modifiers, int margin)\n{\n    int state = mapModifiers(modifiers);\n    int line = SendScintilla(SCI_LINEFROMPOSITION, pos);\n\n    emit marginRightClicked(margin, line, Qt::KeyboardModifiers(state));\n}\n\n\n// Handle the SCN_SAVEPOINTREACHED notification.\nvoid QsciScintilla::handleSavePointReached()\n{\n    doc.setModified(false);\n    emit modificationChanged(false);\n}\n\n\n// Handle the SCN_SAVEPOINTLEFT notification.\nvoid QsciScintilla::handleSavePointLeft()\n{\n    doc.setModified(true);\n    emit modificationChanged(true);\n}\n\n\n// Handle the QSCN_SELCHANGED signal.\nvoid QsciScintilla::handleSelectionChanged(bool yes)\n{\n    selText = yes;\n\n    emit copyAvailable(yes);\n    emit selectionChanged();\n}\n\n\n// Get the current selection.\nvoid QsciScintilla::getSelection(int *lineFrom, int *indexFrom, int *lineTo,\n        int *indexTo) const\n{\n    if (selText)\n    {\n        lineIndexFromPosition(SendScintilla(SCI_GETSELECTIONSTART), lineFrom,\n                indexFrom);\n        lineIndexFromPosition(SendScintilla(SCI_GETSELECTIONEND), lineTo,\n                indexTo);\n    }\n    else\n        *lineFrom = *indexFrom = *lineTo = *indexTo = -1;\n}\n\n\n// Sets the current selection.\nvoid QsciScintilla::setSelection(int lineFrom, int indexFrom, int lineTo,\n        int indexTo)\n{\n    SendScintilla(SCI_SETSEL, positionFromLineIndex(lineFrom, indexFrom),\n            positionFromLineIndex(lineTo, indexTo));\n}\n\n\n// Set the background colour of selected text.\nvoid QsciScintilla::setSelectionBackgroundColor(const QColor &col)\n{\n    int alpha = col.alpha();\n\n    if (alpha == 255)\n        alpha = SC_ALPHA_NOALPHA;\n\n    SendScintilla(SCI_SETSELBACK, 1, col);\n    SendScintilla(SCI_SETSELALPHA, alpha);\n}\n\n\n// Set the foreground colour of selected text.\nvoid QsciScintilla::setSelectionForegroundColor(const QColor &col)\n{\n    SendScintilla(SCI_SETSELFORE, 1, col);\n}\n\n\n// Reset the background colour of selected text to the default.\nvoid QsciScintilla::resetSelectionBackgroundColor()\n{\n    SendScintilla(SCI_SETSELALPHA, SC_ALPHA_NOALPHA);\n    SendScintilla(SCI_SETSELBACK, 0UL);\n}\n\n\n// Reset the foreground colour of selected text to the default.\nvoid QsciScintilla::resetSelectionForegroundColor()\n{\n    SendScintilla(SCI_SETSELFORE, 0UL);\n}\n\n\n// Set the fill to the end-of-line for the selection.\nvoid QsciScintilla::setSelectionToEol(bool filled)\n{\n    SendScintilla(SCI_SETSELEOLFILLED, filled);\n}\n\n\n// Return the fill to the end-of-line for the selection.\nbool QsciScintilla::selectionToEol() const\n{\n    return SendScintilla(SCI_GETSELEOLFILLED);\n}\n\n\n// Set the width of the caret.\nvoid QsciScintilla::setCaretWidth(int width)\n{\n    SendScintilla(SCI_SETCARETWIDTH, width);\n}\n\n\n// Set the foreground colour of the caret.\nvoid QsciScintilla::setCaretForegroundColor(const QColor &col)\n{\n    SendScintilla(SCI_SETCARETFORE, col);\n}\n\n\n// Set the background colour of the line containing the caret.\nvoid QsciScintilla::setCaretLineBackgroundColor(const QColor &col)\n{\n    int alpha = col.alpha();\n\n    if (alpha == 255)\n        alpha = SC_ALPHA_NOALPHA;\n\n    SendScintilla(SCI_SETCARETLINEBACK, col);\n    SendScintilla(SCI_SETCARETLINEBACKALPHA, alpha);\n}\n\n\n// Set the state of the background colour of the line containing the caret.\nvoid QsciScintilla::setCaretLineVisible(bool enable)\n{\n    SendScintilla(SCI_SETCARETLINEVISIBLE, enable);\n}\n\n\n// Set the background colour of a hotspot area.\nvoid QsciScintilla::setHotspotBackgroundColor(const QColor &col)\n{\n    SendScintilla(SCI_SETSELBACK, 1, col);\n}\n\n\n// Set the foreground colour of a hotspot area.\nvoid QsciScintilla::setHotspotForegroundColor(const QColor &col)\n{\n    SendScintilla(SCI_SETHOTSPOTACTIVEFORE, 1, col);\n}\n\n\n// Reset the background colour of a hotspot area to the default.\nvoid QsciScintilla::resetHotspotBackgroundColor()\n{\n    SendScintilla(SCI_SETSELBACK, 0UL);\n}\n\n\n// Reset the foreground colour of a hotspot area to the default.\nvoid QsciScintilla::resetHotspotForegroundColor()\n{\n    SendScintilla(SCI_SETHOTSPOTACTIVEFORE, 0UL);\n}\n\n\n// Set the underline of a hotspot area.\nvoid QsciScintilla::setHotspotUnderline(bool enable)\n{\n    SendScintilla(SCI_SETHOTSPOTACTIVEUNDERLINE, enable);\n}\n\n\n// Set the wrapping of a hotspot area.\nvoid QsciScintilla::setHotspotWrap(bool enable)\n{\n    SendScintilla(SCI_SETHOTSPOTSINGLELINE, !enable);\n}\n\n\n// Query the read-only state.\nbool QsciScintilla::isReadOnly() const\n{\n    return SendScintilla(SCI_GETREADONLY);\n}\n\n\n// Set the read-only state.\nvoid QsciScintilla::setReadOnly(bool ro)\n{\n    setAttribute(Qt::WA_InputMethodEnabled, !ro);\n    SendScintilla(SCI_SETREADONLY, ro);\n}\n\n\n// Append the given text.\nvoid QsciScintilla::append(const QString &text)\n{\n    bool ro = ensureRW();\n\n    ScintillaBytes s = textAsBytes(text);\n    SendScintilla(SCI_APPENDTEXT, s.length(), ScintillaBytesConstData(s));\n\n    SendScintilla(SCI_EMPTYUNDOBUFFER);\n\n    setReadOnly(ro);\n}\n\n\n// Insert the given text at the current position.\nvoid QsciScintilla::insert(const QString &text)\n{\n    insertAtPos(text, -1);\n}\n\n\n// Insert the given text at the given line and offset.\nvoid QsciScintilla::insertAt(const QString &text, int line, int index)\n{\n    insertAtPos(text, positionFromLineIndex(line, index));\n}\n\n\n// Insert the given text at the given position.\nvoid QsciScintilla::insertAtPos(const QString &text, int pos)\n{\n    bool ro = ensureRW();\n\n    SendScintilla(SCI_BEGINUNDOACTION);\n    SendScintilla(SCI_INSERTTEXT, pos,\n            ScintillaBytesConstData(textAsBytes(text)));\n    SendScintilla(SCI_ENDUNDOACTION);\n\n    setReadOnly(ro);\n}\n\n\n// Begin a sequence of undoable actions.\nvoid QsciScintilla::beginUndoAction()\n{\n    SendScintilla(SCI_BEGINUNDOACTION);\n}\n\n\n// End a sequence of undoable actions.\nvoid QsciScintilla::endUndoAction()\n{\n    SendScintilla(SCI_ENDUNDOACTION);\n}\n\n\n// Redo a sequence of actions.\nvoid QsciScintilla::redo()\n{\n    SendScintilla(SCI_REDO);\n}\n\n\n// Undo a sequence of actions.\nvoid QsciScintilla::undo()\n{\n    SendScintilla(SCI_UNDO);\n}\n\n\n// See if there is something to redo.\nbool QsciScintilla::isRedoAvailable() const\n{\n    return SendScintilla(SCI_CANREDO);\n}\n\n\n// See if there is something to undo.\nbool QsciScintilla::isUndoAvailable() const\n{\n    return SendScintilla(SCI_CANUNDO);\n}\n\n\n// Return the number of lines.\nint QsciScintilla::lines() const\n{\n    return SendScintilla(SCI_GETLINECOUNT);\n}\n\n\n// Return the line at a position.\nint QsciScintilla::lineAt(const QPoint &pos) const\n{\n    long chpos = SendScintilla(SCI_POSITIONFROMPOINTCLOSE, pos.x(), pos.y());\n\n    if (chpos < 0)\n        return -1;\n\n    return SendScintilla(SCI_LINEFROMPOSITION, chpos);\n}\n\n\n// Return the length of a line.\nint QsciScintilla::lineLength(int line) const\n{\n    if (line < 0 || line >= SendScintilla(SCI_GETLINECOUNT))\n        return -1;\n\n    return SendScintilla(SCI_LINELENGTH, line);\n}\n\n\n// Return the length of the current text.\nint QsciScintilla::length() const\n{\n    return SendScintilla(SCI_GETTEXTLENGTH);\n}\n\n\n// Remove any selected text.\nvoid QsciScintilla::removeSelectedText()\n{\n    SendScintilla(SCI_REPLACESEL, \"\");\n}\n\n\n// Replace any selected text.\nvoid QsciScintilla::replaceSelectedText(const QString &text)\n{\n    SendScintilla(SCI_REPLACESEL, ScintillaBytesConstData(textAsBytes(text)));\n}\n\n\n// Return the current selected text.\nQString QsciScintilla::selectedText() const\n{\n    if (!selText)\n        return QString();\n\n    char *buf = new char[SendScintilla(SCI_GETSELECTIONEND) - SendScintilla(SCI_GETSELECTIONSTART) + 1];\n\n    SendScintilla(SCI_GETSELTEXT, buf);\n\n    QString qs = bytesAsText(buf);\n    delete[] buf;\n\n    return qs;\n}\n\n\n// Return the current text.\nQString QsciScintilla::text() const\n{\n    int buflen = length() + 1;\n    char *buf = new char[buflen];\n\n    SendScintilla(SCI_GETTEXT, buflen, buf);\n\n    QString qs = bytesAsText(buf);\n    delete[] buf;\n\n    return qs;\n}\n\n\n// Return the text of a line.\nQString QsciScintilla::text(int line) const\n{\n    int line_len = lineLength(line);\n\n    if (line_len < 1)\n        return QString();\n\n    char *buf = new char[line_len + 1];\n\n    SendScintilla(SCI_GETLINE, line, buf);\n    buf[line_len] = '\\0';\n\n    QString qs = bytesAsText(buf);\n    delete[] buf;\n\n    return qs;\n}\n\n\n// Return the text between two positions.\nQString QsciScintilla::text(int start, int end) const\n{\n    char *buf = new char[end - start + 1];\n    SendScintilla(SCI_GETTEXTRANGE, start, end, buf);\n    QString text = bytesAsText(buf);\n    delete[] buf;\n\n    return text;\n}\n\n\n// Return the text as encoded bytes between two positions.\nQByteArray QsciScintilla::bytes(int start, int end) const\n{\n    QByteArray bytes(end - start + 1, '\\0');\n\n    SendScintilla(SCI_GETTEXTRANGE, start, end, bytes.data());\n\n    return bytes;\n}\n\n\n// Set the given text.\nvoid QsciScintilla::setText(const QString &text)\n{\n    bool ro = ensureRW();\n\n    SendScintilla(SCI_SETTEXT, ScintillaBytesConstData(textAsBytes(text)));\n    SendScintilla(SCI_EMPTYUNDOBUFFER);\n\n    setReadOnly(ro);\n}\n\n\n// Get the cursor position\nvoid QsciScintilla::getCursorPosition(int *line, int *index) const\n{\n    lineIndexFromPosition(SendScintilla(SCI_GETCURRENTPOS), line, index);\n}\n\n\n// Set the cursor position\nvoid QsciScintilla::setCursorPosition(int line, int index)\n{\n    SendScintilla(SCI_GOTOPOS, positionFromLineIndex(line, index));\n}\n\n\n// Ensure the cursor is visible.\nvoid QsciScintilla::ensureCursorVisible()\n{\n    SendScintilla(SCI_SCROLLCARET);\n}\n\n\n// Ensure a line is visible.\nvoid QsciScintilla::ensureLineVisible(int line)\n{\n    SendScintilla(SCI_ENSUREVISIBLEENFORCEPOLICY, line);\n}\n\n\n// Copy text to the clipboard.\nvoid QsciScintilla::copy()\n{\n    SendScintilla(SCI_COPY);\n}\n\n\n// Cut text to the clipboard.\nvoid QsciScintilla::cut()\n{\n    SendScintilla(SCI_CUT);\n}\n\n\n// Paste text from the clipboard.\nvoid QsciScintilla::paste()\n{\n    SendScintilla(SCI_PASTE);\n}\n\n\n// Select all text, or deselect any selected text.\nvoid QsciScintilla::selectAll(bool select)\n{\n    if (select)\n        SendScintilla(SCI_SELECTALL);\n    else\n        SendScintilla(SCI_SETANCHOR, SendScintilla(SCI_GETCURRENTPOS));\n}\n\n\n// Delete all text.\nvoid QsciScintilla::clear()\n{\n    bool ro = ensureRW();\n\n    SendScintilla(SCI_BEGINUNDOACTION);\n    SendScintilla(SCI_CLEARALL);\n    SendScintilla(SCI_ENDUNDOACTION);\n\n    setReadOnly(ro);\n}\n\n\n// Return the indentation of a line.\nint QsciScintilla::indentation(int line) const\n{\n    return SendScintilla(SCI_GETLINEINDENTATION, line);\n}\n\n\n// Set the indentation of a line.\nvoid QsciScintilla::setIndentation(int line, int indentation)\n{\n    SendScintilla(SCI_BEGINUNDOACTION);\n    SendScintilla(SCI_SETLINEINDENTATION, line, indentation);\n    SendScintilla(SCI_ENDUNDOACTION);\n}\n\n\n// Indent a line.\nvoid QsciScintilla::indent(int line)\n{\n    setIndentation(line, indentation(line) + indentWidth());\n}\n\n\n// Unindent a line.\nvoid QsciScintilla::unindent(int line)\n{\n    int newIndent = indentation(line) - indentWidth();\n\n    if (newIndent < 0)\n        newIndent = 0;\n\n    setIndentation(line, newIndent);\n}\n\n\n// Return the indentation of the current line.\nint QsciScintilla::currentIndent() const\n{\n    return indentation(SendScintilla(SCI_LINEFROMPOSITION,\n                SendScintilla(SCI_GETCURRENTPOS)));\n}\n\n\n// Return the current indentation width.\nint QsciScintilla::indentWidth() const\n{\n    int w = indentationWidth();\n\n    if (w == 0)\n        w = tabWidth();\n\n    return w;\n}\n\n\n// Return the state of indentation guides.\nbool QsciScintilla::indentationGuides() const\n{\n    return (SendScintilla(SCI_GETINDENTATIONGUIDES) != SC_IV_NONE);\n}\n\n\n// Enable and disable indentation guides.\nvoid QsciScintilla::setIndentationGuides(bool enable)\n{\n    int iv;\n\n    if (!enable)\n        iv = SC_IV_NONE;\n    else if (lex.isNull())\n        iv = SC_IV_REAL;\n    else\n        iv = lex->indentationGuideView();\n\n    SendScintilla(SCI_SETINDENTATIONGUIDES, iv);\n}\n\n\n// Set the background colour of indentation guides.\nvoid QsciScintilla::setIndentationGuidesBackgroundColor(const QColor &col)\n{\n    SendScintilla(SCI_STYLESETBACK, STYLE_INDENTGUIDE, col);\n}\n\n\n// Set the foreground colour of indentation guides.\nvoid QsciScintilla::setIndentationGuidesForegroundColor(const QColor &col)\n{\n    SendScintilla(SCI_STYLESETFORE, STYLE_INDENTGUIDE, col);\n}\n\n\n// Return the indentation width.\nint QsciScintilla::indentationWidth() const\n{\n    return SendScintilla(SCI_GETINDENT);\n}\n\n\n// Set the indentation width.\nvoid QsciScintilla::setIndentationWidth(int width)\n{\n    SendScintilla(SCI_SETINDENT, width);\n}\n\n\n// Return the tab width.\nint QsciScintilla::tabWidth() const\n{\n    return SendScintilla(SCI_GETTABWIDTH);\n}\n\n\n// Set the tab width.\nvoid QsciScintilla::setTabWidth(int width)\n{\n    SendScintilla(SCI_SETTABWIDTH, width);\n}\n\n\n// Return the effect of the backspace key.\nbool QsciScintilla::backspaceUnindents() const\n{\n    return SendScintilla(SCI_GETBACKSPACEUNINDENTS);\n}\n\n\n// Set the effect of the backspace key.\nvoid QsciScintilla::setBackspaceUnindents(bool unindents)\n{\n    SendScintilla(SCI_SETBACKSPACEUNINDENTS, unindents);\n}\n\n\n// Return the effect of the tab key.\nbool QsciScintilla::tabIndents() const\n{\n    return SendScintilla(SCI_GETTABINDENTS);\n}\n\n\n// Set the effect of the tab key.\nvoid QsciScintilla::setTabIndents(bool indents)\n{\n    SendScintilla(SCI_SETTABINDENTS, indents);\n}\n\n\n// Return the indentation use of tabs.\nbool QsciScintilla::indentationsUseTabs() const\n{\n    return SendScintilla(SCI_GETUSETABS);\n}\n\n\n// Set the indentation use of tabs.\nvoid QsciScintilla::setIndentationsUseTabs(bool tabs)\n{\n    SendScintilla(SCI_SETUSETABS, tabs);\n}\n\n\n// Return the number of margins.\nint QsciScintilla::margins() const\n{\n    return SendScintilla(SCI_GETMARGINS);\n}\n\n\n// Set the number of margins.\nvoid QsciScintilla::setMargins(int margins)\n{\n    SendScintilla(SCI_SETMARGINS, margins);\n}\n\n\n// Return the margin background colour.\nQColor QsciScintilla::marginBackgroundColor(int margin) const\n{\n    return asQColor(SendScintilla(SCI_GETMARGINBACKN, margin));\n}\n\n\n// Set the margin background colour.\nvoid QsciScintilla::setMarginBackgroundColor(int margin, const QColor &col)\n{\n    SendScintilla(SCI_SETMARGINBACKN, margin, col);\n}\n\n\n// Return the margin options.\nint QsciScintilla::marginOptions() const\n{\n    return SendScintilla(SCI_GETMARGINOPTIONS);\n}\n\n\n// Set the margin options.\nvoid QsciScintilla::setMarginOptions(int options)\n{\n    SendScintilla(SCI_SETMARGINOPTIONS, options);\n}\n\n\n// Return the margin type.\nQsciScintilla::MarginType QsciScintilla::marginType(int margin) const\n{\n    return (MarginType)SendScintilla(SCI_GETMARGINTYPEN, margin);\n}\n\n\n// Set the margin type.\nvoid QsciScintilla::setMarginType(int margin, QsciScintilla::MarginType type)\n{\n    SendScintilla(SCI_SETMARGINTYPEN, margin, type);\n}\n\n\n// Clear margin text.\nvoid QsciScintilla::clearMarginText(int line)\n{\n    if (line < 0)\n        SendScintilla(SCI_MARGINTEXTCLEARALL);\n    else\n        SendScintilla(SCI_MARGINSETTEXT, line, (const char *)0);\n}\n\n\n// Annotate a line.\nvoid QsciScintilla::setMarginText(int line, const QString &text, int style)\n{\n    int style_offset = SendScintilla(SCI_MARGINGETSTYLEOFFSET);\n\n    SendScintilla(SCI_MARGINSETTEXT, line,\n            ScintillaBytesConstData(textAsBytes(text)));\n\n    SendScintilla(SCI_MARGINSETSTYLE, line, style - style_offset);\n}\n\n\n// Annotate a line.\nvoid QsciScintilla::setMarginText(int line, const QString &text, const QsciStyle &style)\n{\n    style.apply(this);\n\n    setMarginText(line, text, style.style());\n}\n\n\n// Annotate a line.\nvoid QsciScintilla::setMarginText(int line, const QsciStyledText &text)\n{\n    text.apply(this);\n\n    setMarginText(line, text.text(), text.style());\n}\n\n\n// Annotate a line.\nvoid QsciScintilla::setMarginText(int line, const QList<QsciStyledText> &text)\n{\n    char *styles;\n    ScintillaBytes styled_text = styleText(text, &styles,\n            SendScintilla(SCI_MARGINGETSTYLEOFFSET));\n\n    SendScintilla(SCI_MARGINSETTEXT, line,\n            ScintillaBytesConstData(styled_text));\n    SendScintilla(SCI_MARGINSETSTYLES, line, styles);\n\n    delete[] styles;\n}\n\n\n// Return the state of line numbers in a margin.\nbool QsciScintilla::marginLineNumbers(int margin) const\n{\n    return SendScintilla(SCI_GETMARGINTYPEN, margin);\n}\n\n\n// Enable and disable line numbers in a margin.\nvoid QsciScintilla::setMarginLineNumbers(int margin, bool lnrs)\n{\n    SendScintilla(SCI_SETMARGINTYPEN, margin,\n            lnrs ? SC_MARGIN_NUMBER : SC_MARGIN_SYMBOL);\n}\n\n\n// Return the marker mask of a margin.\nint QsciScintilla::marginMarkerMask(int margin) const\n{\n    return SendScintilla(SCI_GETMARGINMASKN, margin);\n}\n\n\n// Set the marker mask of a margin.\nvoid QsciScintilla::setMarginMarkerMask(int margin,int mask)\n{\n    SendScintilla(SCI_SETMARGINMASKN, margin, mask);\n}\n\n\n// Return the state of a margin's sensitivity.\nbool QsciScintilla::marginSensitivity(int margin) const\n{\n    return SendScintilla(SCI_GETMARGINSENSITIVEN, margin);\n}\n\n\n// Enable and disable a margin's sensitivity.\nvoid QsciScintilla::setMarginSensitivity(int margin,bool sens)\n{\n    SendScintilla(SCI_SETMARGINSENSITIVEN, margin, sens);\n}\n\n\n// Return the width of a margin.\nint QsciScintilla::marginWidth(int margin) const\n{\n    return SendScintilla(SCI_GETMARGINWIDTHN, margin);\n}\n\n\n// Set the width of a margin.\nvoid QsciScintilla::setMarginWidth(int margin, int width)\n{\n    SendScintilla(SCI_SETMARGINWIDTHN, margin, width);\n}\n\n\n// Set the width of a margin to the width of some text.\nvoid QsciScintilla::setMarginWidth(int margin, const QString &s)\n{\n    int width = SendScintilla(SCI_TEXTWIDTH, STYLE_LINENUMBER,\n            ScintillaBytesConstData(textAsBytes(s)));\n\n    setMarginWidth(margin, width);\n}\n\n\n// Set the background colour of all margins.\nvoid QsciScintilla::setMarginsBackgroundColor(const QColor &col)\n{\n    handleStylePaperChange(col, STYLE_LINENUMBER);\n}\n\n\n// Set the foreground colour of all margins.\nvoid QsciScintilla::setMarginsForegroundColor(const QColor &col)\n{\n    handleStyleColorChange(col, STYLE_LINENUMBER);\n}\n\n\n// Set the font of all margins.\nvoid QsciScintilla::setMarginsFont(const QFont &f)\n{\n    setStylesFont(f, STYLE_LINENUMBER);\n}\n\n\n// Define an indicator.\nint QsciScintilla::indicatorDefine(IndicatorStyle style, int indicatorNumber)\n{\n    checkIndicator(indicatorNumber);\n\n    if (indicatorNumber >= 0)\n        SendScintilla(SCI_INDICSETSTYLE, indicatorNumber,\n                static_cast<long>(style));\n\n    return indicatorNumber;\n}\n\n\n// Return the state of an indicator being drawn under the text.\nbool QsciScintilla::indicatorDrawUnder(int indicatorNumber) const\n{\n    if (indicatorNumber < 0 || indicatorNumber >= INDIC_IME)\n        return false;\n\n    return SendScintilla(SCI_INDICGETUNDER, indicatorNumber);\n}\n\n\n// Set the state of indicators being drawn under the text.\nvoid QsciScintilla::setIndicatorDrawUnder(bool under, int indicatorNumber)\n{\n    if (indicatorNumber < INDIC_IME)\n    {\n        // We ignore allocatedIndicators to allow any indicators defined\n        // elsewhere (e.g. in lexers) to be set.\n        if (indicatorNumber < 0)\n        {\n            for (int i = 0; i < INDIC_IME; ++i)\n                SendScintilla(SCI_INDICSETUNDER, i, under);\n        }\n        else\n        {\n            SendScintilla(SCI_INDICSETUNDER, indicatorNumber, under);\n        }\n    }\n}\n\n\n// Set the indicator foreground colour.\nvoid QsciScintilla::setIndicatorForegroundColor(const QColor &col,\n        int indicatorNumber)\n{\n    if (indicatorNumber < INDIC_IME)\n    {\n        int alpha = col.alpha();\n\n        // We ignore allocatedIndicators to allow any indicators defined\n        // elsewhere (e.g. in lexers) to be set.\n        if (indicatorNumber < 0)\n        {\n            for (int i = 0; i < INDIC_IME; ++i)\n            {\n                SendScintilla(SCI_INDICSETFORE, i, col);\n                SendScintilla(SCI_INDICSETALPHA, i, alpha);\n            }\n        }\n        else\n        {\n            SendScintilla(SCI_INDICSETFORE, indicatorNumber, col);\n            SendScintilla(SCI_INDICSETALPHA, indicatorNumber, alpha);\n        }\n    }\n}\n\n\n// Set the indicator hover foreground colour.\nvoid QsciScintilla::setIndicatorHoverForegroundColor(const QColor &col,\n        int indicatorNumber)\n{\n    if (indicatorNumber < INDIC_IME)\n    {\n        // We ignore allocatedIndicators to allow any indicators defined\n        // elsewhere (e.g. in lexers) to be set.\n        if (indicatorNumber < 0)\n        {\n            for (int i = 0; i < INDIC_IME; ++i)\n                SendScintilla(SCI_INDICSETHOVERFORE, i, col);\n        }\n        else\n        {\n            SendScintilla(SCI_INDICSETHOVERFORE, indicatorNumber, col);\n        }\n    }\n}\n\n\n// Set the indicator hover style.\nvoid QsciScintilla::setIndicatorHoverStyle(IndicatorStyle style,\n        int indicatorNumber)\n{\n    if (indicatorNumber < INDIC_IME)\n    {\n        // We ignore allocatedIndicators to allow any indicators defined\n        // elsewhere (e.g. in lexers) to be set.\n        if (indicatorNumber < 0)\n        {\n            for (int i = 0; i < INDIC_IME; ++i)\n                SendScintilla(SCI_INDICSETHOVERSTYLE, i,\n                        static_cast<long>(style));\n        }\n        else\n        {\n            SendScintilla(SCI_INDICSETHOVERSTYLE, indicatorNumber,\n                    static_cast<long>(style));\n        }\n    }\n}\n\n\n// Set the indicator outline colour.\nvoid QsciScintilla::setIndicatorOutlineColor(const QColor &col, int indicatorNumber)\n{\n    if (indicatorNumber < INDIC_IME)\n    {\n        int alpha = col.alpha();\n\n        // We ignore allocatedIndicators to allow any indicators defined\n        // elsewhere (e.g. in lexers) to be set.\n        if (indicatorNumber < 0)\n        {\n            for (int i = 0; i < INDIC_IME; ++i)\n                SendScintilla(SCI_INDICSETOUTLINEALPHA, i, alpha);\n        }\n        else\n        {\n            SendScintilla(SCI_INDICSETOUTLINEALPHA, indicatorNumber, alpha);\n        }\n    }\n}\n\n\n// Fill a range with an indicator.\nvoid QsciScintilla::fillIndicatorRange(int lineFrom, int indexFrom,\n        int lineTo, int indexTo, int indicatorNumber)\n{\n    if (indicatorNumber < INDIC_IME)\n    {\n        int start = positionFromLineIndex(lineFrom, indexFrom);\n        int finish = positionFromLineIndex(lineTo, indexTo);\n\n        // We ignore allocatedIndicators to allow any indicators defined\n        // elsewhere (e.g. in lexers) to be set.\n        if (indicatorNumber < 0)\n        {\n            for (int i = 0; i < INDIC_IME; ++i)\n            {\n                SendScintilla(SCI_SETINDICATORCURRENT, i);\n                SendScintilla(SCI_INDICATORFILLRANGE, start, finish - start);\n            }\n        }\n        else\n        {\n            SendScintilla(SCI_SETINDICATORCURRENT, indicatorNumber);\n            SendScintilla(SCI_INDICATORFILLRANGE, start, finish - start);\n        }\n    }\n}\n\n\n// Clear a range with an indicator.\nvoid QsciScintilla::clearIndicatorRange(int lineFrom, int indexFrom,\n        int lineTo, int indexTo, int indicatorNumber)\n{\n    if (indicatorNumber < INDIC_IME)\n    {\n        int start = positionFromLineIndex(lineFrom, indexFrom);\n        int finish = positionFromLineIndex(lineTo, indexTo);\n\n        // We ignore allocatedIndicators to allow any indicators defined\n        // elsewhere (e.g. in lexers) to be set.\n        if (indicatorNumber < 0)\n        {\n            for (int i = 0; i < INDIC_IME; ++i)\n            {\n                SendScintilla(SCI_SETINDICATORCURRENT, i);\n                SendScintilla(SCI_INDICATORCLEARRANGE, start, finish - start);\n            }\n        }\n        else\n        {\n            SendScintilla(SCI_SETINDICATORCURRENT, indicatorNumber);\n            SendScintilla(SCI_INDICATORCLEARRANGE, start, finish - start);\n        }\n    }\n}\n\n\n// Define a marker based on a symbol.\nint QsciScintilla::markerDefine(MarkerSymbol sym, int markerNumber)\n{\n    checkMarker(markerNumber);\n\n    if (markerNumber >= 0)\n        SendScintilla(SCI_MARKERDEFINE, markerNumber, static_cast<long>(sym));\n\n    return markerNumber;\n}\n\n\n// Define a marker based on a character.\nint QsciScintilla::markerDefine(char ch, int markerNumber)\n{\n    checkMarker(markerNumber);\n\n    if (markerNumber >= 0)\n        SendScintilla(SCI_MARKERDEFINE, markerNumber,\n                static_cast<long>(SC_MARK_CHARACTER) + ch);\n\n    return markerNumber;\n}\n\n\n// Define a marker based on a QPixmap.\nint QsciScintilla::markerDefine(const QPixmap &pm, int markerNumber)\n{\n    checkMarker(markerNumber);\n\n    if (markerNumber >= 0)\n        SendScintilla(SCI_MARKERDEFINEPIXMAP, markerNumber, pm);\n\n    return markerNumber;\n}\n\n\n// Define a marker based on a QImage.\nint QsciScintilla::markerDefine(const QImage &im, int markerNumber)\n{\n    checkMarker(markerNumber);\n\n    if (markerNumber >= 0)\n    {\n        SendScintilla(SCI_RGBAIMAGESETHEIGHT, im.height());\n        SendScintilla(SCI_RGBAIMAGESETWIDTH, im.width());\n        SendScintilla(SCI_MARKERDEFINERGBAIMAGE, markerNumber, im);\n    }\n\n    return markerNumber;\n}\n\n\n// Add a marker to a line.\nint QsciScintilla::markerAdd(int linenr, int markerNumber)\n{\n    if (markerNumber < 0 || markerNumber > MARKER_MAX || (allocatedMarkers & (1 << markerNumber)) == 0)\n        return -1;\n\n    return SendScintilla(SCI_MARKERADD, linenr, markerNumber);\n}\n\n\n// Get the marker mask for a line.\nunsigned QsciScintilla::markersAtLine(int linenr) const\n{\n    return SendScintilla(SCI_MARKERGET, linenr);\n}\n\n\n// Delete a marker from a line.\nvoid QsciScintilla::markerDelete(int linenr, int markerNumber)\n{\n    if (markerNumber <= MARKER_MAX)\n    {\n        if (markerNumber < 0)\n        {\n            unsigned am = allocatedMarkers;\n\n            for (int m = 0; m <= MARKER_MAX; ++m)\n            {\n                if (am & 1)\n                    SendScintilla(SCI_MARKERDELETE, linenr, m);\n\n                am >>= 1;\n            }\n        }\n        else if (allocatedMarkers & (1 << markerNumber))\n            SendScintilla(SCI_MARKERDELETE, linenr, markerNumber);\n    }\n}\n\n\n// Delete a marker from the text.\nvoid QsciScintilla::markerDeleteAll(int markerNumber)\n{\n    if (markerNumber <= MARKER_MAX)\n    {\n        if (markerNumber < 0)\n            SendScintilla(SCI_MARKERDELETEALL, -1);\n        else if (allocatedMarkers & (1 << markerNumber))\n            SendScintilla(SCI_MARKERDELETEALL, markerNumber);\n    }\n}\n\n\n// Delete a marker handle from the text.\nvoid QsciScintilla::markerDeleteHandle(int mhandle)\n{\n    SendScintilla(SCI_MARKERDELETEHANDLE, mhandle);\n}\n\n\n// Return the line containing a marker instance.\nint QsciScintilla::markerLine(int mhandle) const\n{\n    return SendScintilla(SCI_MARKERLINEFROMHANDLE, mhandle);\n}\n\n\n// Search forwards for a marker.\nint QsciScintilla::markerFindNext(int linenr, unsigned mask) const\n{\n    return SendScintilla(SCI_MARKERNEXT, linenr, mask);\n}\n\n\n// Search backwards for a marker.\nint QsciScintilla::markerFindPrevious(int linenr, unsigned mask) const\n{\n    return SendScintilla(SCI_MARKERPREVIOUS, linenr, mask);\n}\n\n\n// Set the marker background colour.\nvoid QsciScintilla::setMarkerBackgroundColor(const QColor &col, int markerNumber)\n{\n    if (markerNumber <= MARKER_MAX)\n    {\n        int alpha = col.alpha();\n\n        // An opaque background would make the text invisible.\n        if (alpha == 255)\n            alpha = SC_ALPHA_NOALPHA;\n\n        if (markerNumber < 0)\n        {\n            unsigned am = allocatedMarkers;\n\n            for (int m = 0; m <= MARKER_MAX; ++m)\n            {\n                if (am & 1)\n                {\n                    SendScintilla(SCI_MARKERSETBACK, m, col);\n                    SendScintilla(SCI_MARKERSETALPHA, m, alpha);\n                }\n\n                am >>= 1;\n            }\n        }\n        else if (allocatedMarkers & (1 << markerNumber))\n        {\n            SendScintilla(SCI_MARKERSETBACK, markerNumber, col);\n            SendScintilla(SCI_MARKERSETALPHA, markerNumber, alpha);\n        }\n    }\n}\n\n\n// Set the marker foreground colour.\nvoid QsciScintilla::setMarkerForegroundColor(const QColor &col, int markerNumber)\n{\n    if (markerNumber <= MARKER_MAX)\n    {\n        if (markerNumber < 0)\n        {\n            unsigned am = allocatedMarkers;\n\n            for (int m = 0; m <= MARKER_MAX; ++m)\n            {\n                if (am & 1)\n                    SendScintilla(SCI_MARKERSETFORE, m, col);\n\n                am >>= 1;\n            }\n        }\n        else if (allocatedMarkers & (1 << markerNumber))\n        {\n            SendScintilla(SCI_MARKERSETFORE, markerNumber, col);\n        }\n    }\n}\n\n\n// Check a marker, allocating a marker number if necessary.\nvoid QsciScintilla::checkMarker(int &markerNumber)\n{\n    allocateId(markerNumber, allocatedMarkers, 0, MARKER_MAX);\n}\n\n\n// Check an indicator, allocating an indicator number if necessary.\nvoid QsciScintilla::checkIndicator(int &indicatorNumber)\n{\n    allocateId(indicatorNumber, allocatedIndicators, INDIC_CONTAINER,\n            INDIC_IME - 1);\n}\n\n\n// Make sure an identifier is valid and allocate it if necessary.\nvoid QsciScintilla::allocateId(int &id, unsigned &allocated, int min, int max)\n{\n    if (id >= 0)\n    {\n        // Note that we allow existing identifiers to be explicitly redefined.\n        if (id > max)\n            id = -1;\n    }\n    else\n    {\n        unsigned aids = allocated >> min;\n\n        // Find the smallest unallocated identifier.\n        for (id = min; id <= max; ++id)\n        {\n            if ((aids & 1) == 0)\n                break;\n\n            aids >>= 1;\n        }\n    }\n\n    // Allocate the identifier if it is valid.\n    if (id >= 0)\n        allocated |= (1 << id);\n}\n\n\n// Reset the fold margin colours.\nvoid QsciScintilla::resetFoldMarginColors()\n{\n    SendScintilla(SCI_SETFOLDMARGINHICOLOUR, 0, 0L);\n    SendScintilla(SCI_SETFOLDMARGINCOLOUR, 0, 0L);\n}\n\n\n// Set the fold margin colours.\nvoid QsciScintilla::setFoldMarginColors(const QColor &fore, const QColor &back)\n{\n    SendScintilla(SCI_SETFOLDMARGINHICOLOUR, 1, fore);\n    SendScintilla(SCI_SETFOLDMARGINCOLOUR, 1, back);\n}\n\n\n// Set the call tips background colour.\nvoid QsciScintilla::setCallTipsBackgroundColor(const QColor &col)\n{\n    SendScintilla(SCI_CALLTIPSETBACK, col);\n}\n\n\n// Set the call tips foreground colour.\nvoid QsciScintilla::setCallTipsForegroundColor(const QColor &col)\n{\n    SendScintilla(SCI_CALLTIPSETFORE, col);\n}\n\n\n// Set the call tips highlight colour.\nvoid QsciScintilla::setCallTipsHighlightColor(const QColor &col)\n{\n    SendScintilla(SCI_CALLTIPSETFOREHLT, col);\n}\n\n\n// Set the matched brace background colour.\nvoid QsciScintilla::setMatchedBraceBackgroundColor(const QColor &col)\n{\n    SendScintilla(SCI_STYLESETBACK, STYLE_BRACELIGHT, col);\n}\n\n\n// Set the matched brace foreground colour.\nvoid QsciScintilla::setMatchedBraceForegroundColor(const QColor &col)\n{\n    SendScintilla(SCI_STYLESETFORE, STYLE_BRACELIGHT, col);\n}\n\n\n// Set the matched brace indicator.\nvoid QsciScintilla::setMatchedBraceIndicator(int indicatorNumber)\n{\n    SendScintilla(SCI_BRACEHIGHLIGHTINDICATOR, 1, indicatorNumber);\n}\n\n\n// Reset the matched brace indicator.\nvoid QsciScintilla::resetMatchedBraceIndicator()\n{\n    SendScintilla(SCI_BRACEHIGHLIGHTINDICATOR, 0, 0L);\n}\n\n\n// Set the unmatched brace background colour.\nvoid QsciScintilla::setUnmatchedBraceBackgroundColor(const QColor &col)\n{\n    SendScintilla(SCI_STYLESETBACK, STYLE_BRACEBAD, col);\n}\n\n\n// Set the unmatched brace foreground colour.\nvoid QsciScintilla::setUnmatchedBraceForegroundColor(const QColor &col)\n{\n    SendScintilla(SCI_STYLESETFORE, STYLE_BRACEBAD, col);\n}\n\n\n// Set the unmatched brace indicator.\nvoid QsciScintilla::setUnmatchedBraceIndicator(int indicatorNumber)\n{\n    SendScintilla(SCI_BRACEBADLIGHTINDICATOR, 1, indicatorNumber);\n}\n\n\n// Reset the unmatched brace indicator.\nvoid QsciScintilla::resetUnmatchedBraceIndicator()\n{\n    SendScintilla(SCI_BRACEBADLIGHTINDICATOR, 0, 0L);\n}\n\n\n// Detach any lexer.\nvoid QsciScintilla::detachLexer()\n{\n    if (!lex.isNull())\n    {\n        lex->setEditor(0);\n        lex->disconnect(this);\n\n        SendScintilla(SCI_STYLERESETDEFAULT);\n        SendScintilla(SCI_STYLECLEARALL);\n    }\n}\n\n\n// Set the lexer.\nvoid QsciScintilla::setLexer(QsciLexer *lexer)\n{\n    // Detach any current lexer.\n    detachLexer();\n\n    // Connect up the new lexer.\n    lex = lexer;\n\n    if (lex)\n    {\n        SendScintilla(SCI_CLEARDOCUMENTSTYLE);\n\n        if (lex->lexer())\n            SendScintilla(SCI_SETLEXERLANGUAGE, lex->lexer());\n        else\n            SendScintilla(SCI_SETLEXER, lex->lexerId());\n\n        lex->setEditor(this);\n\n        connect(lex,SIGNAL(colorChanged(const QColor &, int)),\n                SLOT(handleStyleColorChange(const QColor &, int)));\n        connect(lex,SIGNAL(eolFillChanged(bool, int)),\n                SLOT(handleStyleEolFillChange(bool, int)));\n        connect(lex,SIGNAL(fontChanged(const QFont &, int)),\n                SLOT(handleStyleFontChange(const QFont &, int)));\n        connect(lex,SIGNAL(paperChanged(const QColor &, int)),\n                SLOT(handleStylePaperChange(const QColor &, int)));\n        connect(lex,SIGNAL(propertyChanged(const char *, const char *)),\n                SLOT(handlePropertyChange(const char *, const char *)));\n\n        SendScintilla(SCI_SETPROPERTY, \"fold\", \"1\");\n        SendScintilla(SCI_SETPROPERTY, \"fold.html\", \"1\");\n\n        // Set the keywords.  Scintilla allows for sets numbered 0 to\n        // KEYWORDSET_MAX (although the lexers only seem to exploit 0 to\n        // KEYWORDSET_MAX - 1).  We number from 1 in line with SciTE's property\n        // files.\n        for (int k = 0; k <= KEYWORDSET_MAX; ++k)\n        {\n            const char *kw = lex -> keywords(k + 1);\n\n            if (!kw)\n                kw = \"\";\n\n            SendScintilla(SCI_SETKEYWORDS, k, kw);\n        }\n\n        // Initialise each style.  Do the default first so its (possibly\n        // incorrect) font setting gets reset when style 0 is set.\n        setLexerStyle(STYLE_DEFAULT);\n\n        int nrStyles = 1 << SendScintilla(SCI_GETSTYLEBITS);\n\n        for (int s = 0; s < nrStyles; ++s)\n            if (!lex->description(s).isEmpty())\n                setLexerStyle(s);\n\n        // Initialise the properties.\n        lex->refreshProperties();\n\n        // Set the auto-completion fillups and word separators.\n        setAutoCompletionFillupsEnabled(fillups_enabled);\n        wseps = lex->autoCompletionWordSeparators();\n\n        wchars = lex->wordCharacters();\n\n        if (!wchars)\n            wchars = defaultWordChars;\n\n        SendScintilla(SCI_AUTOCSETIGNORECASE, !lex->caseSensitive());\n\n        recolor();\n    }\n    else\n    {\n        SendScintilla(SCI_SETLEXER, SCLEX_CONTAINER);\n\n        setColor(nl_text_colour);\n        setPaper(nl_paper_colour);\n\n        SendScintilla(SCI_AUTOCSETFILLUPS, \"\");\n        SendScintilla(SCI_AUTOCSETIGNORECASE, false);\n        wseps.clear();\n        wchars = defaultWordChars;\n    }\n}\n\n\n// Set a particular style of the current lexer.\nvoid QsciScintilla::setLexerStyle(int style)\n{\n    handleStyleColorChange(lex->color(style), style);\n    handleStyleEolFillChange(lex->eolFill(style), style);\n    handleStyleFontChange(lex->font(style), style);\n    handleStylePaperChange(lex->paper(style), style);\n}\n\n\n// Get the current lexer.\nQsciLexer *QsciScintilla::lexer() const\n{\n    return lex;\n}\n\n\n// Handle a change in lexer style foreground colour.\nvoid QsciScintilla::handleStyleColorChange(const QColor &c, int style)\n{\n    SendScintilla(SCI_STYLESETFORE, style, c);\n}\n\n\n// Handle a change in lexer style end-of-line fill.\nvoid QsciScintilla::handleStyleEolFillChange(bool eolfill, int style)\n{\n    SendScintilla(SCI_STYLESETEOLFILLED, style, eolfill);\n}\n\n\n// Handle a change in lexer style font.\nvoid QsciScintilla::handleStyleFontChange(const QFont &f, int style)\n{\n    setStylesFont(f, style);\n\n    if (style == lex->braceStyle())\n    {\n        setStylesFont(f, STYLE_BRACELIGHT);\n        setStylesFont(f, STYLE_BRACEBAD);\n    }\n}\n\n\n// Set the font for a style.\nvoid QsciScintilla::setStylesFont(const QFont &f, int style)\n{\n    SendScintilla(SCI_STYLESETFONT, style, f.family().toLatin1().data());\n    SendScintilla(SCI_STYLESETSIZEFRACTIONAL, style,\n            long(f.pointSizeF() * SC_FONT_SIZE_MULTIPLIER));\n\n    // Pass the Qt weight via the back door.\n    SendScintilla(SCI_STYLESETWEIGHT, style, -f.weight());\n\n    SendScintilla(SCI_STYLESETITALIC, style, f.italic());\n    SendScintilla(SCI_STYLESETUNDERLINE, style, f.underline());\n\n    // Tie the font settings of the default style to that of style 0 (the style\n    // conventionally used for whitespace by lexers).  This is needed so that\n    // fold marks, indentations, edge columns etc are set properly.\n    if (style == 0)\n        setStylesFont(f, STYLE_DEFAULT);\n}\n\n\n// Handle a change in lexer style background colour.\nvoid QsciScintilla::handleStylePaperChange(const QColor &c, int style)\n{\n    SendScintilla(SCI_STYLESETBACK, style, c);\n}\n\n\n// Handle a change in lexer property.\nvoid QsciScintilla::handlePropertyChange(const char *prop, const char *val)\n{\n    SendScintilla(SCI_SETPROPERTY, prop, val);\n}\n\n\n// Handle a change to the user visible user interface.\nvoid QsciScintilla::handleUpdateUI(int)\n{\n    int newPos = SendScintilla(SCI_GETCURRENTPOS);\n\n    if (newPos != oldPos)\n    {\n        oldPos = newPos;\n\n        int line = SendScintilla(SCI_LINEFROMPOSITION, newPos);\n        int col = SendScintilla(SCI_GETCOLUMN, newPos);\n\n        emit cursorPositionChanged(line, col);\n    }\n\n    if (braceMode != NoBraceMatch)\n        braceMatch();\n}\n\n\n// Handle brace matching.\nvoid QsciScintilla::braceMatch()\n{\n    long braceAtCaret, braceOpposite;\n\n    findMatchingBrace(braceAtCaret, braceOpposite, braceMode);\n\n    if (braceAtCaret >= 0 && braceOpposite < 0)\n    {\n        SendScintilla(SCI_BRACEBADLIGHT, braceAtCaret);\n        SendScintilla(SCI_SETHIGHLIGHTGUIDE, 0UL);\n    }\n    else\n    {\n        char chBrace = SendScintilla(SCI_GETCHARAT, braceAtCaret);\n\n        SendScintilla(SCI_BRACEHIGHLIGHT, braceAtCaret, braceOpposite);\n\n        long columnAtCaret = SendScintilla(SCI_GETCOLUMN, braceAtCaret);\n        long columnOpposite = SendScintilla(SCI_GETCOLUMN, braceOpposite);\n\n        if (chBrace == ':')\n        {\n            long lineStart = SendScintilla(SCI_LINEFROMPOSITION, braceAtCaret);\n            long indentPos = SendScintilla(SCI_GETLINEINDENTPOSITION,\n                    lineStart);\n            long indentPosNext = SendScintilla(SCI_GETLINEINDENTPOSITION,\n                    lineStart + 1);\n\n            columnAtCaret = SendScintilla(SCI_GETCOLUMN, indentPos);\n\n            long columnAtCaretNext = SendScintilla(SCI_GETCOLUMN,\n                    indentPosNext);\n            long indentSize = SendScintilla(SCI_GETINDENT);\n\n            if (columnAtCaretNext - indentSize > 1)\n                columnAtCaret = columnAtCaretNext - indentSize;\n\n            if (columnOpposite == 0)\n                columnOpposite = columnAtCaret;\n        }\n\n        long column = columnAtCaret;\n\n        if (column > columnOpposite)\n            column = columnOpposite;\n\n        SendScintilla(SCI_SETHIGHLIGHTGUIDE, column);\n    }\n}\n\n\n// Check if the character at a position is a brace.\nlong QsciScintilla::checkBrace(long pos, int brace_style, bool &colonMode)\n{\n    long brace_pos = -1;\n    char ch = SendScintilla(SCI_GETCHARAT, pos);\n\n    if (ch == ':')\n    {\n        // A bit of a hack, we should really use a virtual.\n        if (!lex.isNull() && qstrcmp(lex->lexer(), \"python\") == 0)\n        {\n            brace_pos = pos;\n            colonMode = true;\n        }\n    }\n    else if (ch && strchr(\"[](){}<>\", ch))\n    {\n        if (brace_style < 0)\n            brace_pos = pos;\n        else\n        {\n            int style = SendScintilla(SCI_GETSTYLEAT, pos) & 0x1f;\n\n            if (style == brace_style)\n                brace_pos = pos;\n        }\n    }\n\n    return brace_pos;\n}\n\n\n// Find a brace and it's match.  Return true if the current position is inside\n// a pair of braces.\nbool QsciScintilla::findMatchingBrace(long &brace, long &other,BraceMatch mode)\n{\n    bool colonMode = false;\n    int brace_style = (lex.isNull() ? -1 : lex->braceStyle());\n\n    brace = -1;\n    other = -1;\n\n    long caretPos = SendScintilla(SCI_GETCURRENTPOS);\n\n    if (caretPos > 0)\n        brace = checkBrace(caretPos - 1, brace_style, colonMode);\n\n    bool isInside = false;\n\n    if (brace < 0 && mode == SloppyBraceMatch)\n    {\n        brace = checkBrace(caretPos, brace_style, colonMode);\n\n        if (brace >= 0 && !colonMode)\n            isInside = true;\n    }\n\n    if (brace >= 0)\n    {\n        if (colonMode)\n        {\n            // Find the end of the Python indented block.\n            long lineStart = SendScintilla(SCI_LINEFROMPOSITION, brace);\n            long lineMaxSubord = SendScintilla(SCI_GETLASTCHILD, lineStart, -1);\n\n            other = SendScintilla(SCI_GETLINEENDPOSITION, lineMaxSubord);\n        }\n        else\n            other = SendScintilla(SCI_BRACEMATCH, brace, 0L);\n\n        if (other > brace)\n            isInside = !isInside;\n    }\n\n    return isInside;\n}\n\n\n// Move to the matching brace.\nvoid QsciScintilla::moveToMatchingBrace()\n{\n    gotoMatchingBrace(false);\n}\n\n\n// Select to the matching brace.\nvoid QsciScintilla::selectToMatchingBrace()\n{\n    gotoMatchingBrace(true);\n}\n\n\n// Move to the matching brace and optionally select the text.\nvoid QsciScintilla::gotoMatchingBrace(bool select)\n{\n    long braceAtCaret;\n    long braceOpposite;\n\n    bool isInside = findMatchingBrace(braceAtCaret, braceOpposite,\n            SloppyBraceMatch);\n\n    if (braceOpposite >= 0)\n    {\n        // Convert the character positions into caret positions based on\n        // whether the caret position was inside or outside the braces.\n        if (isInside)\n        {\n            if (braceOpposite > braceAtCaret)\n                braceAtCaret++;\n            else\n                braceOpposite++;\n        }\n        else\n        {\n            if (braceOpposite > braceAtCaret)\n                braceOpposite++;\n            else\n                braceAtCaret++;\n        }\n\n        ensureLineVisible(SendScintilla(SCI_LINEFROMPOSITION, braceOpposite));\n\n        if (select)\n            SendScintilla(SCI_SETSEL, braceAtCaret, braceOpposite);\n        else\n            SendScintilla(SCI_SETSEL, braceOpposite, braceOpposite);\n    }\n}\n\n\n// Return a position from a line number and an index within the line.\nint QsciScintilla::positionFromLineIndex(int line, int index) const\n{\n    int pos = SendScintilla(SCI_POSITIONFROMLINE, line);\n\n    // Allow for multi-byte characters.\n    for(int i = 0; i < index; i++)\n        pos = SendScintilla(SCI_POSITIONAFTER, pos);\n\n    return pos;\n}\n\n\n// Return a line number and an index within the line from a position.\nvoid QsciScintilla::lineIndexFromPosition(int position, int *line, int *index) const\n{\n    int lin = SendScintilla(SCI_LINEFROMPOSITION, position);\n    int linpos = SendScintilla(SCI_POSITIONFROMLINE, lin);\n    int indx = 0;\n\n    // Allow for multi-byte characters.\n    while (linpos < position)\n    {\n        int new_linpos = SendScintilla(SCI_POSITIONAFTER, linpos);\n\n        // If the position hasn't moved then we must be at the end of the text\n        // (which implies that the position passed was beyond the end of the\n        // text).\n        if (new_linpos == linpos)\n            break;\n\n        linpos = new_linpos;\n        ++indx;\n    }\n\n    *line = lin;\n    *index = indx;\n}\n\n\n// Set the source of the automatic auto-completion list.\nvoid QsciScintilla::setAutoCompletionSource(AutoCompletionSource source)\n{\n    acSource = source;\n}\n\n\n// Set the threshold for automatic auto-completion.\nvoid QsciScintilla::setAutoCompletionThreshold(int thresh)\n{\n    acThresh = thresh;\n}\n\n\n// Set the auto-completion word separators if there is no current lexer.\nvoid QsciScintilla::setAutoCompletionWordSeparators(const QStringList &separators)\n{\n    if (lex.isNull())\n        wseps = separators;\n}\n\n\n// Explicitly auto-complete from all sources.\nvoid QsciScintilla::autoCompleteFromAll()\n{\n    startAutoCompletion(AcsAll, false, use_single != AcusNever);\n}\n\n\n// Explicitly auto-complete from the APIs.\nvoid QsciScintilla::autoCompleteFromAPIs()\n{\n    startAutoCompletion(AcsAPIs, false, use_single != AcusNever);\n}\n\n\n// Explicitly auto-complete from the document.\nvoid QsciScintilla::autoCompleteFromDocument()\n{\n    startAutoCompletion(AcsDocument, false, use_single != AcusNever);\n}\n\n\n// Check if a character can be in a word.\nbool QsciScintilla::isWordCharacter(char ch) const\n{\n    return (strchr(wchars, ch) != NULL);\n}\n\n\n// Return the set of valid word characters.\nconst char *QsciScintilla::wordCharacters() const\n{\n    return wchars;\n}\n\n\n// Recolour the document.\nvoid QsciScintilla::recolor(int start, int end)\n{\n    SendScintilla(SCI_COLOURISE, start, end);\n}\n\n\n// Registered a QPixmap image.\nvoid QsciScintilla::registerImage(int id, const QPixmap &pm)\n{\n    SendScintilla(SCI_REGISTERIMAGE, id, pm);\n}\n\n\n// Registered a QImage image.\nvoid QsciScintilla::registerImage(int id, const QImage &im)\n{\n    SendScintilla(SCI_RGBAIMAGESETHEIGHT, im.height());\n    SendScintilla(SCI_RGBAIMAGESETWIDTH, im.width());\n    SendScintilla(SCI_REGISTERRGBAIMAGE, id, im);\n}\n\n\n// Clear all registered images.\nvoid QsciScintilla::clearRegisteredImages()\n{\n    SendScintilla(SCI_CLEARREGISTEREDIMAGES);\n}\n\n\n// Enable auto-completion fill-ups.\nvoid QsciScintilla::setAutoCompletionFillupsEnabled(bool enable)\n{\n    const char *fillups;\n\n    if (!enable)\n        fillups = \"\";\n    else if (!lex.isNull())\n        fillups = lex->autoCompletionFillups();\n    else\n        fillups = explicit_fillups.data();\n\n    SendScintilla(SCI_AUTOCSETFILLUPS, fillups);\n\n    fillups_enabled = enable;\n}\n\n\n// See if auto-completion fill-ups are enabled.\nbool QsciScintilla::autoCompletionFillupsEnabled() const\n{\n    return fillups_enabled;\n}\n\n\n// Set the fill-up characters for auto-completion if there is no current lexer.\nvoid QsciScintilla::setAutoCompletionFillups(const char *fillups)\n{\n    explicit_fillups = fillups;\n    setAutoCompletionFillupsEnabled(fillups_enabled);\n}\n\n\n// Set the case sensitivity for auto-completion.\nvoid QsciScintilla::setAutoCompletionCaseSensitivity(bool cs)\n{\n    SendScintilla(SCI_AUTOCSETIGNORECASE, !cs);\n}\n\n\n// Return the case sensitivity for auto-completion.\nbool QsciScintilla::autoCompletionCaseSensitivity() const\n{\n    return !SendScintilla(SCI_AUTOCGETIGNORECASE);\n}\n\n\n// Set the replace word mode for auto-completion.\nvoid QsciScintilla::setAutoCompletionReplaceWord(bool replace)\n{\n    SendScintilla(SCI_AUTOCSETDROPRESTOFWORD, replace);\n}\n\n\n// Return the replace word mode for auto-completion.\nbool QsciScintilla::autoCompletionReplaceWord() const\n{\n    return SendScintilla(SCI_AUTOCGETDROPRESTOFWORD);\n}\n\n\n// Set the single item mode for auto-completion.\nvoid QsciScintilla::setAutoCompletionUseSingle(AutoCompletionUseSingle single)\n{\n    use_single = single;\n}\n\n\n// Return the single item mode for auto-completion.\nQsciScintilla::AutoCompletionUseSingle QsciScintilla::autoCompletionUseSingle() const\n{\n    return use_single;\n}\n\n\n// Set the single item mode for auto-completion (deprecated).\nvoid QsciScintilla::setAutoCompletionShowSingle(bool single)\n{\n    use_single = (single ? AcusExplicit : AcusNever);\n}\n\n\n// Return the single item mode for auto-completion (deprecated).\nbool QsciScintilla::autoCompletionShowSingle() const\n{\n    return (use_single != AcusNever);\n}\n\n\n// Set current call tip position.\nvoid QsciScintilla::setCallTipsPosition(CallTipsPosition position)\n{\n    SendScintilla(SCI_CALLTIPSETPOSITION, (position == CallTipsAboveText));\n    call_tips_position = position;\n}\n\n\n// Set current call tip style.\nvoid QsciScintilla::setCallTipsStyle(CallTipsStyle style)\n{\n    call_tips_style = style;\n}\n\n\n// Set maximum number of call tips displayed.\nvoid QsciScintilla::setCallTipsVisible(int nr)\n{\n    maxCallTips = nr;\n}\n\n\n// Set the document to display.\nvoid QsciScintilla::setDocument(const QsciDocument &document)\n{\n    if (doc.pdoc != document.pdoc)\n    {\n        doc.undisplay(this);\n        doc.attach(document);\n        doc.display(this,&document);\n    }\n}\n\n\n// Ensure the document is read-write and return true if was was read-only.\nbool QsciScintilla::ensureRW()\n{\n    bool ro = isReadOnly();\n\n    if (ro)\n        setReadOnly(false);\n\n    return ro;\n}\n\n\n// Return the number of the first visible line.\nint QsciScintilla::firstVisibleLine() const\n{\n    return SendScintilla(SCI_GETFIRSTVISIBLELINE);\n}\n\n\n// Set the number of the first visible line.\nvoid QsciScintilla::setFirstVisibleLine(int linenr)\n{\n    SendScintilla(SCI_SETFIRSTVISIBLELINE, linenr);\n}\n\n\n// Return the height in pixels of the text in a particular line.\nint QsciScintilla::textHeight(int linenr) const\n{\n    return SendScintilla(SCI_TEXTHEIGHT, linenr);\n}\n\n\n// See if auto-completion or user list is active.\nbool QsciScintilla::isListActive() const\n{\n    return SendScintilla(SCI_AUTOCACTIVE);\n}\n\n\n// Cancel any current auto-completion or user list.\nvoid QsciScintilla::cancelList()\n{\n    SendScintilla(SCI_AUTOCCANCEL);\n}\n\n\n// Handle a selection from the auto-completion list.\nvoid QsciScintilla::handleAutoCompletionSelection()\n{\n    if (!lex.isNull())\n    {\n        QsciAbstractAPIs *apis = lex->apis();\n\n        if (apis)\n            apis->autoCompletionSelected(acSelection);\n    }\n}\n\n\n// Display a user list.\nvoid QsciScintilla::showUserList(int id, const QStringList &list)\n{\n    // Sanity check to make sure auto-completion doesn't get confused.\n    if (id <= 0)\n        return;\n\n    SendScintilla(SCI_AUTOCSETSEPARATOR, userSeparator);\n\n    ScintillaBytes s = textAsBytes(list.join(QChar(userSeparator)));\n    SendScintilla(SCI_USERLISTSHOW, id, ScintillaBytesConstData(s));\n}\n\n\n// Translate the SCN_USERLISTSELECTION notification into something more useful.\nvoid QsciScintilla::handleUserListSelection(const char *text, int id)\n{\n    emit userListActivated(id, QString(text));\n\n    // Make sure the editor hasn't been deactivated as a side effect.\n    activateWindow();\n}\n\n\n// Return the case sensitivity of any lexer.\nbool QsciScintilla::caseSensitive() const\n{\n    return lex.isNull() ? true : lex->caseSensitive();\n}\n\n\n// Return true if the current list is an auto-completion list rather than a\n// user list.\nbool QsciScintilla::isAutoCompletionList() const\n{\n    return (SendScintilla(SCI_AUTOCGETSEPARATOR) == acSeparator);\n}\n\n\n// Read the text from a QIODevice.\nbool QsciScintilla::read(QIODevice *io)\n{\n    const int min_size = 1024 * 8;\n\n    int buf_size = min_size;\n    char *buf = new char[buf_size];\n\n    int data_len = 0;\n    bool ok = true;\n\n    qint64 part;\n\n    // Read the whole lot in so we don't have to worry about character\n    // boundaries.\n    do\n    {\n        // Make sure there is a minimum amount of room.\n        if (buf_size - data_len < min_size)\n        {\n            buf_size *= 2;\n            char *new_buf = new char[buf_size * 2];\n\n            memcpy(new_buf, buf, data_len);\n            delete[] buf;\n            buf = new_buf;\n        }\n\n        part = io->read(buf + data_len, buf_size - data_len - 1);\n        data_len += part;\n    }\n    while (part > 0);\n\n    if (part < 0)\n        ok = false;\n    else\n    {\n        buf[data_len] = '\\0';\n\n        bool ro = ensureRW();\n\n        SendScintilla(SCI_SETTEXT, buf);\n        SendScintilla(SCI_EMPTYUNDOBUFFER);\n\n        setReadOnly(ro);\n    }\n\n    delete[] buf;\n\n    return ok;\n}\n\n\n// Write the text to a QIODevice.\nbool QsciScintilla::write(QIODevice *io) const\n{\n    const char *buf = reinterpret_cast<const char *>(SendScintillaPtrResult(SCI_GETCHARACTERPOINTER));\n\n    const char *bp = buf;\n    uint buflen = qstrlen(buf);\n\n    while (buflen > 0)\n    {\n        qint64 part = io->write(bp, buflen);\n\n        if (part < 0)\n            return false;\n\n        bp += part;\n        buflen -= part;\n    }\n\n    return true;\n}\n\n\n// Return the word at the given coordinates.\nQString QsciScintilla::wordAtLineIndex(int line, int index) const\n{\n    return wordAtPosition(positionFromLineIndex(line, index));\n}\n\n\n// Return the word at the given coordinates.\nQString QsciScintilla::wordAtPoint(const QPoint &point) const\n{\n    long close_pos = SendScintilla(SCI_POSITIONFROMPOINTCLOSE, point.x(),\n            point.y());\n\n    return wordAtPosition(close_pos);\n}\n\n\n// Return the word at the given position.\nQString QsciScintilla::wordAtPosition(int position) const\n{\n    if (position < 0)\n        return QString();\n\n    long start_pos = SendScintilla(SCI_WORDSTARTPOSITION, position, true);\n    long end_pos = SendScintilla(SCI_WORDENDPOSITION, position, true);\n\n    if (start_pos >= end_pos)\n        return QString();\n\n    return text(start_pos, end_pos);\n}\n\n\n// Return the display style for annotations.\nQsciScintilla::AnnotationDisplay QsciScintilla::annotationDisplay() const\n{\n    return (AnnotationDisplay)SendScintilla(SCI_ANNOTATIONGETVISIBLE);\n}\n\n\n// Set the display style for annotations.\nvoid QsciScintilla::setAnnotationDisplay(QsciScintilla::AnnotationDisplay display)\n{\n    SendScintilla(SCI_ANNOTATIONSETVISIBLE, display);\n    setScrollBars();\n}\n\n\n// Clear annotations.\nvoid QsciScintilla::clearAnnotations(int line)\n{\n    if (line >= 0)\n        SendScintilla(SCI_ANNOTATIONSETTEXT, line, (const char *)0);\n    else\n        SendScintilla(SCI_ANNOTATIONCLEARALL);\n\n    setScrollBars();\n}\n\n\n// Annotate a line.\nvoid QsciScintilla::annotate(int line, const QString &text, int style)\n{\n    int style_offset = SendScintilla(SCI_ANNOTATIONGETSTYLEOFFSET);\n\n    ScintillaBytes s = textAsBytes(text);\n\n    SendScintilla(SCI_ANNOTATIONSETTEXT, line, ScintillaBytesConstData(s));\n    SendScintilla(SCI_ANNOTATIONSETSTYLE, line, style - style_offset);\n\n    setScrollBars();\n}\n\n\n// Annotate a line.\nvoid QsciScintilla::annotate(int line, const QString &text, const QsciStyle &style)\n{\n    style.apply(this);\n\n    annotate(line, text, style.style());\n}\n\n\n// Annotate a line.\nvoid QsciScintilla::annotate(int line, const QsciStyledText &text)\n{\n    text.apply(this);\n\n    annotate(line, text.text(), text.style());\n}\n\n\n// Annotate a line.\nvoid QsciScintilla::annotate(int line, const QList<QsciStyledText> &text)\n{\n    char *styles;\n    ScintillaBytes styled_text = styleText(text, &styles,\n            SendScintilla(SCI_ANNOTATIONGETSTYLEOFFSET));\n\n    SendScintilla(SCI_ANNOTATIONSETTEXT, line,\n            ScintillaBytesConstData(styled_text));\n    SendScintilla(SCI_ANNOTATIONSETSTYLES, line, styles);\n\n    delete[] styles;\n}\n\n\n// Get the annotation for a line, if any.\nQString QsciScintilla::annotation(int line) const\n{\n    char *buf = new char[SendScintilla(SCI_ANNOTATIONGETTEXT, line, (const char *)0) + 1];\n\n    buf[SendScintilla(SCI_ANNOTATIONGETTEXT, line, buf)] = '\\0';\n\n    QString qs = bytesAsText(buf);\n    delete[] buf;\n\n    return qs;\n}\n\n\n// Convert a list of styled text to the low-level arrays.\nQsciScintillaBase::ScintillaBytes QsciScintilla::styleText(const QList<QsciStyledText> &styled_text, char **styles, int style_offset)\n{\n    QString text;\n    int i;\n\n    // Build the full text.\n    for (i = 0; i < styled_text.count(); ++i)\n    {\n        const QsciStyledText &st = styled_text[i];\n\n        st.apply(this);\n\n        text.append(st.text());\n    }\n\n    ScintillaBytes s = textAsBytes(text);\n\n    // There is a style byte for every byte.\n    char *sp = *styles = new char[s.length()];\n\n    for (i = 0; i < styled_text.count(); ++i)\n    {\n        const QsciStyledText &st = styled_text[i];\n        ScintillaBytes part = textAsBytes(st.text());\n        int part_length = part.length();\n\n        for (int c = 0; c < part_length; ++c)\n            *sp++ = (char)(st.style() - style_offset);\n    }\n\n    return s;\n}\n\n\n// Convert Scintilla modifiers to the Qt equivalent.\nint QsciScintilla::mapModifiers(int modifiers)\n{\n    int state = 0;\n\n    if (modifiers & SCMOD_SHIFT)\n        state |= Qt::ShiftModifier;\n\n    if (modifiers & SCMOD_CTRL)\n        state |= Qt::ControlModifier;\n\n    if (modifiers & SCMOD_ALT)\n        state |= Qt::AltModifier;\n\n    if (modifiers & (SCMOD_SUPER | SCMOD_META))\n        state |= Qt::MetaModifier;\n\n    return state;\n}\n\n\n// Re-implemented to handle shortcut overrides.\nbool QsciScintilla::event(QEvent *e)\n{\n    if (e->type() == QEvent::ShortcutOverride && !isReadOnly())\n    {\n        QKeyEvent *ke = static_cast<QKeyEvent *>(e);\n\n        if (ke->key())\n        {\n            // We want ordinary characters.\n            if ((ke->modifiers() == Qt::NoModifier || ke->modifiers() == Qt::ShiftModifier || ke->modifiers() == Qt::KeypadModifier) && ke->key() < Qt::Key_Escape)\n            {\n                ke->accept();\n                return true;\n            }\n\n            // We want any key that is bound.\n            QsciCommand *cmd = stdCmds->boundTo(ke->key() | (ke->modifiers() & ~Qt::KeypadModifier));\n\n            if (cmd)\n            {\n                ke->accept();\n                return true;\n            }\n        }\n    }\n\n    return QsciScintillaBase::event(e);\n}\n\n\n// Re-implemented to handle chenges to the enabled state.\nvoid QsciScintilla::changeEvent(QEvent *e)\n{\n    QsciScintillaBase::changeEvent(e);\n\n    if (e->type() != QEvent::EnabledChange)\n        return;\n\n    if (isEnabled())\n        SendScintilla(SCI_SETCARETSTYLE, CARETSTYLE_LINE);\n    else\n        SendScintilla(SCI_SETCARETSTYLE, CARETSTYLE_INVISIBLE);\n\n    QColor fore = palette().color(QPalette::Disabled, QPalette::Text);\n    QColor back = palette().color(QPalette::Disabled, QPalette::Base);\n\n    if (lex.isNull())\n    {\n        if (isEnabled())\n        {\n            fore = nl_text_colour;\n            back = nl_paper_colour;\n        }\n\n        SendScintilla(SCI_STYLESETFORE, 0, fore);\n\n        // Assume style 0 applies to everything so that we don't need to use\n        // SCI_STYLECLEARALL which clears everything.  We still have to set the\n        // default style as well for the background without any text.\n        SendScintilla(SCI_STYLESETBACK, 0, back);\n        SendScintilla(SCI_STYLESETBACK, STYLE_DEFAULT, back);\n    }\n    else\n    {\n        setEnabledColors(STYLE_DEFAULT, fore, back);\n\n        int nrStyles = 1 << SendScintilla(SCI_GETSTYLEBITS);\n\n        for (int s = 0; s < nrStyles; ++s)\n            if (!lex->description(s).isNull())\n                setEnabledColors(s, fore, back);\n    }\n}\n\n\n// Set the foreground and background colours for a style.\nvoid QsciScintilla::setEnabledColors(int style, QColor &fore, QColor &back)\n{\n    if (isEnabled())\n    {\n        fore = lex->color(style);\n        back = lex->paper(style);\n    }\n\n    handleStyleColorChange(fore, style);\n    handleStylePaperChange(back, style);\n}\n\n\n// Re-implemented to implement a more Qt-like context menu.\nvoid QsciScintilla::contextMenuEvent(QContextMenuEvent *e)\n{\n    QMenu *menu = createStandardContextMenu();\n\n    if (menu)\n    {\n        menu->setAttribute(Qt::WA_DeleteOnClose);\n        menu->popup(e->globalPos());\n    }\n}\n\n\n// Create an instance of the standard context menu.\nQMenu *QsciScintilla::createStandardContextMenu()\n{\n    bool read_only = isReadOnly();\n    bool has_selection = hasSelectedText();\n    QMenu *menu = new QMenu(this);\n    QAction *action;\n\n    if (!read_only)\n    {\n        action = menu->addAction(tr(\"&Undo\"), this, SLOT(undo()));\n        set_shortcut(action, QsciCommand::Undo);\n        action->setEnabled(isUndoAvailable());\n\n        action = menu->addAction(tr(\"&Redo\"), this, SLOT(redo()));\n        set_shortcut(action, QsciCommand::Redo);\n        action->setEnabled(isRedoAvailable());\n\n        menu->addSeparator();\n\n        action = menu->addAction(tr(\"Cu&t\"), this, SLOT(cut()));\n        set_shortcut(action, QsciCommand::SelectionCut);\n        action->setEnabled(has_selection);\n    }\n\n    action = menu->addAction(tr(\"&Copy\"), this, SLOT(copy()));\n    set_shortcut(action, QsciCommand::SelectionCopy);\n    action->setEnabled(has_selection);\n\n    if (!read_only)\n    {\n        action = menu->addAction(tr(\"&Paste\"), this, SLOT(paste()));\n        set_shortcut(action, QsciCommand::Paste);\n        action->setEnabled(SendScintilla(SCI_CANPASTE));\n\n        action = menu->addAction(tr(\"Delete\"), this, SLOT(delete_selection()));\n        action->setEnabled(has_selection);\n    }\n\n    if (!menu->isEmpty())\n        menu->addSeparator();\n\n    action = menu->addAction(tr(\"Select All\"), this, SLOT(selectAll()));\n    set_shortcut(action, QsciCommand::SelectAll);\n    action->setEnabled(length() != 0);\n\n    return menu;\n}\n\n\n// Set the shortcut for an action using any current key binding.\nvoid QsciScintilla::set_shortcut(QAction *action, QsciCommand::Command cmd_id) const\n{\n    QsciCommand *cmd = stdCmds->find(cmd_id);\n\n    if (cmd && cmd->key())\n        action->setShortcut(QKeySequence(cmd->key()));\n}\n\n\n// Delete the current selection.\nvoid QsciScintilla::delete_selection()\n{\n    SendScintilla(SCI_CLEAR);\n}\n\n\n// Convert a Scintilla colour to a QColor.\nstatic QColor asQColor(long sci_colour)\n{\n    return QColor(\n            ((int)sci_colour) & 0x00ff,\n            ((int)(sci_colour >> 8)) & 0x00ff,\n            ((int)(sci_colour >> 16)) & 0x00ff);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qsciscintillabase.cpp",
    "content": "// This module implements the \"official\" low-level API.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qsciscintillabase.h\"\n\n#include <QApplication>\n#include <QClipboard>\n#include <QColor>\n#include <QContextMenuEvent>\n#include <QDragEnterEvent>\n#include <QDragMoveEvent>\n#include <QDropEvent>\n#include <QDragLeaveEvent>\n#include <QFocusEvent>\n#include <QKeyEvent>\n#include <QList>\n#include <QMimeData>\n#include <QMouseEvent>\n#include <QPaintEvent>\n#include <QScrollBar>\n#include <QStyle>\n#include <QTextCodec>\n\n#include \"ScintillaQt.h\"\n\n\n// The #defines in Scintilla.h and the enums in qsciscintillabase.h conflict\n// (because we want to use the same names) so we have to undefine those we use\n// in this file.\n#undef  SCI_SETCARETPERIOD\n#undef  SCK_DOWN\n#undef  SCK_UP\n#undef  SCK_LEFT\n#undef  SCK_RIGHT\n#undef  SCK_HOME\n#undef  SCK_END\n#undef  SCK_PRIOR\n#undef  SCK_NEXT\n#undef  SCK_DELETE\n#undef  SCK_INSERT\n#undef  SCK_ESCAPE\n#undef  SCK_BACK\n#undef  SCK_TAB\n#undef  SCK_RETURN\n#undef  SCK_ADD\n#undef  SCK_SUBTRACT\n#undef  SCK_DIVIDE\n#undef  SCK_WIN\n#undef  SCK_RWIN\n#undef  SCK_MENU\n\n\n// Remember if we have linked the lexers.\nstatic bool lexersLinked = false;\n\n// The list of instances.\nstatic QList<QsciScintillaBase *> poolList;\n\n// Mime support.\nstatic const QLatin1String mimeTextPlain(\"text/plain\");\nstatic const QLatin1String mimeRectangularWin(\"MSDEVColumnSelect\");\nstatic const QLatin1String mimeRectangular(\"text/x-qscintilla-rectangular\");\n\n#if (QT_VERSION >= 0x040200 && QT_VERSION < 0x050000 && defined(Q_OS_MAC)) || (QT_VERSION >= 0x050200 && defined(Q_OS_OSX))\nextern void initialiseRectangularPasteboardMime();\n#endif\n\n// The ctor.\nQsciScintillaBase::QsciScintillaBase(QWidget *parent)\n    : QAbstractScrollArea(parent), preeditPos(-1), preeditNrBytes(0)\n#if QT_VERSION >= 0x050000\n        , clickCausedFocus(false)\n#endif\n{\n    connectVerticalScrollBar();\n    connectHorizontalScrollBar();\n\n    setAcceptDrops(true);\n    setFocusPolicy(Qt::WheelFocus);\n    setAttribute(Qt::WA_KeyCompression);\n    setAttribute(Qt::WA_InputMethodEnabled);\n#if QT_VERSION >= 0x050100\n    setInputMethodHints(\n            Qt::ImhNoAutoUppercase|Qt::ImhNoPredictiveText|Qt::ImhMultiLine);\n#elif QT_VERSION >= 0x040600\n    setInputMethodHints(Qt::ImhNoAutoUppercase|Qt::ImhNoPredictiveText);\n#endif\n\n    viewport()->setBackgroundRole(QPalette::Base);\n    viewport()->setMouseTracking(true);\n    viewport()->setAttribute(Qt::WA_NoSystemBackground);\n\n    triple_click.setSingleShot(true);\n\n#if (QT_VERSION >= 0x040200 && QT_VERSION < 0x050000 && defined(Q_OS_MAC)) || (QT_VERSION >= 0x050200 && defined(Q_OS_OSX))\n    initialiseRectangularPasteboardMime();\n#endif\n\n    sci = new QsciScintillaQt(this);\n\n    SendScintilla(SCI_SETCARETPERIOD, QApplication::cursorFlashTime() / 2);\n\n    // Make sure the lexers are linked in.\n    if (!lexersLinked)\n    {\n        Scintilla_LinkLexers();\n        lexersLinked = true;\n    }\n\n    QClipboard *cb = QApplication::clipboard();\n\n    if (cb->supportsSelection())\n        connect(cb, SIGNAL(selectionChanged()), SLOT(handleSelection()));\n\n    // Add it to the pool.\n    poolList.append(this);\n}\n\n\n// The dtor.\nQsciScintillaBase::~QsciScintillaBase()\n{\n    // The QsciScintillaQt object isn't a child so delete it explicitly.\n    delete sci;\n\n    // Remove it from the pool.\n    poolList.removeAt(poolList.indexOf(this));\n}\n\n\n// Return an instance from the pool.\nQsciScintillaBase *QsciScintillaBase::pool()\n{\n    return poolList.first();\n}\n\n\n// Tell Scintilla to update the scroll bars.  Scintilla should be doing this\n// itself.\nvoid QsciScintillaBase::setScrollBars()\n{\n    sci->SetScrollBars();\n}\n\n\n// Send a message to the real Scintilla widget using the low level Scintilla\n// API.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, unsigned long wParam,\n        long lParam) const\n{\n    return sci->WndProc(msg, wParam, lParam);\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, unsigned long wParam,\n        void *lParam) const\n{\n    return sci->WndProc(msg, wParam, reinterpret_cast<sptr_t>(lParam));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, unsigned long wParam,\n        const char *lParam) const\n{\n    return sci->WndProc(msg, wParam, reinterpret_cast<sptr_t>(lParam));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg,\n        const char *lParam) const\n{\n    return sci->WndProc(msg, static_cast<uptr_t>(0),\n            reinterpret_cast<sptr_t>(lParam));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, const char *wParam,\n        const char *lParam) const\n{\n    return sci->WndProc(msg, reinterpret_cast<uptr_t>(wParam),\n            reinterpret_cast<sptr_t>(lParam));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, long wParam) const\n{\n    return sci->WndProc(msg, static_cast<uptr_t>(wParam),\n            static_cast<sptr_t>(0));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, int wParam) const\n{\n    return sci->WndProc(msg, static_cast<uptr_t>(wParam),\n            static_cast<sptr_t>(0));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, long cpMin, long cpMax,\n        char *lpstrText) const\n{\n    Sci_TextRange tr;\n\n    tr.chrg.cpMin = cpMin;\n    tr.chrg.cpMax = cpMax;\n    tr.lpstrText = lpstrText;\n\n    return sci->WndProc(msg, static_cast<uptr_t>(0),\n            reinterpret_cast<sptr_t>(&tr));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, unsigned long wParam,\n        const QColor &col) const\n{\n    sptr_t lParam = (col.blue() << 16) | (col.green() << 8) | col.red();\n\n    return sci->WndProc(msg, wParam, lParam);\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, const QColor &col) const\n{\n    uptr_t wParam = (col.blue() << 16) | (col.green() << 8) | col.red();\n\n    return sci->WndProc(msg, wParam, static_cast<sptr_t>(0));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, unsigned long wParam,\n        QPainter *hdc, const QRect &rc, long cpMin, long cpMax) const\n{\n    Sci_RangeToFormat rf;\n\n    rf.hdc = rf.hdcTarget = reinterpret_cast<QSCI_SCI_NAMESPACE(SurfaceID)>(hdc);\n\n    rf.rc.left = rc.left();\n    rf.rc.top = rc.top();\n    rf.rc.right = rc.right() + 1;\n    rf.rc.bottom = rc.bottom() + 1;\n\n    rf.chrg.cpMin = cpMin;\n    rf.chrg.cpMax = cpMax;\n\n    return sci->WndProc(msg, wParam, reinterpret_cast<sptr_t>(&rf));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, unsigned long wParam,\n        const QPixmap &lParam) const\n{\n    return sci->WndProc(msg, wParam, reinterpret_cast<sptr_t>(&lParam));\n}\n\n\n// Overloaded message send.\nlong QsciScintillaBase::SendScintilla(unsigned int msg, unsigned long wParam,\n        const QImage &lParam) const\n{\n    return sci->WndProc(msg, wParam, reinterpret_cast<sptr_t>(&lParam));\n}\n\n\n// Send a message to the real Scintilla widget using the low level Scintilla\n// API that returns a pointer result.\nvoid *QsciScintillaBase::SendScintillaPtrResult(unsigned int msg) const\n{\n    return reinterpret_cast<void *>(sci->WndProc(msg, static_cast<uptr_t>(0),\n            static_cast<sptr_t>(0)));\n}\n\n\n// Re-implemented to handle the context menu.\nvoid QsciScintillaBase::contextMenuEvent(QContextMenuEvent *e)\n{\n    sci->ContextMenu(QSCI_SCI_NAMESPACE(Point)(e->globalX(), e->globalY()));\n}\n\n\n// Re-implemented to tell the widget it has the focus.\nvoid QsciScintillaBase::focusInEvent(QFocusEvent *e)\n{\n    sci->SetFocusState(true);\n\n#if QT_VERSION >= 0x050000\n    clickCausedFocus = (e->reason() == Qt::MouseFocusReason);\n#endif\n\n    QAbstractScrollArea::focusInEvent(e);\n}\n\n\n// Re-implemented to tell the widget it has lost the focus.\nvoid QsciScintillaBase::focusOutEvent(QFocusEvent *e)\n{\n    if (e->reason() == Qt::ActiveWindowFocusReason)\n    {\n        // Only tell Scintilla we have lost focus if the new active window\n        // isn't our auto-completion list.  This is probably only an issue on\n        // Linux and there are still problems because subsequent focus out\n        // events don't always seem to get generated (at least with Qt5).\n\n        QWidget *aw = QApplication::activeWindow();\n\n        if (!aw || aw->parent() != this || !aw->inherits(\"QsciSciListBox\"))\n            sci->SetFocusState(false);\n    }\n    else\n    {\n        sci->SetFocusState(false);\n    }\n\n    QAbstractScrollArea::focusOutEvent(e);\n}\n\n\n// Re-implemented to make sure tabs are passed to the editor.\nbool QsciScintillaBase::focusNextPrevChild(bool next)\n{\n    if (!sci->pdoc->IsReadOnly())\n        return false;\n\n    return QAbstractScrollArea::focusNextPrevChild(next);\n}\n\n\n// Handle the selection changing.\nvoid QsciScintillaBase::handleSelection()\n{\n    if (!QApplication::clipboard()->ownsSelection())\n        sci->UnclaimSelection();\n}\n\n\n// Handle key presses.\nvoid QsciScintillaBase::keyPressEvent(QKeyEvent *e)\n{\n    int modifiers = 0;\n\n    if (e->modifiers() & Qt::ShiftModifier)\n        modifiers |= SCMOD_SHIFT;\n\n    if (e->modifiers() & Qt::ControlModifier)\n        modifiers |= SCMOD_CTRL;\n\n    if (e->modifiers() & Qt::AltModifier)\n        modifiers |= SCMOD_ALT;\n\n    if (e->modifiers() & Qt::MetaModifier)\n        modifiers |= SCMOD_META;\n\n    int key = commandKey(e->key(), modifiers);\n\n    if (key)\n    {\n        bool consumed = false;\n\n        sci->KeyDownWithModifiers(key, modifiers, &consumed);\n\n        if (consumed)\n        {\n            e->accept();\n            return;\n        }\n    }\n\n    QString text = e->text();\n\n    if (!text.isEmpty() && text[0].isPrint())\n    {\n        ScintillaBytes bytes = textAsBytes(text);\n        sci->AddCharUTF(bytes.data(), bytes.length());\n        e->accept();\n    }\n    else\n    {\n        QAbstractScrollArea::keyPressEvent(e);\n    }\n}\n\n\n// Map a Qt key to a valid Scintilla command key, or 0 if none.\nint QsciScintillaBase::commandKey(int qt_key, int &modifiers)\n{\n    int key;\n\n    switch (qt_key)\n    {\n    case Qt::Key_Down:\n        key = SCK_DOWN;\n        break;\n\n    case Qt::Key_Up:\n        key = SCK_UP;\n        break;\n\n    case Qt::Key_Left:\n        key = SCK_LEFT;\n        break;\n\n    case Qt::Key_Right:\n        key = SCK_RIGHT;\n        break;\n\n    case Qt::Key_Home:\n        key = SCK_HOME;\n        break;\n\n    case Qt::Key_End:\n        key = SCK_END;\n        break;\n\n    case Qt::Key_PageUp:\n        key = SCK_PRIOR;\n        break;\n\n    case Qt::Key_PageDown:\n        key = SCK_NEXT;\n        break;\n\n    case Qt::Key_Delete:\n        key = SCK_DELETE;\n        break;\n\n    case Qt::Key_Insert:\n        key = SCK_INSERT;\n        break;\n\n    case Qt::Key_Escape:\n        key = SCK_ESCAPE;\n        break;\n\n    case Qt::Key_Backspace:\n        key = SCK_BACK;\n        break;\n\n    case Qt::Key_Tab:\n        key = SCK_TAB;\n        break;\n\n    case Qt::Key_Backtab:\n        // Scintilla assumes a backtab is shift-tab.\n        key = SCK_TAB;\n        modifiers |= SCMOD_SHIFT;\n        break;\n\n    case Qt::Key_Return:\n    case Qt::Key_Enter:\n        key = SCK_RETURN;\n        break;\n\n    case Qt::Key_Super_L:\n        key = SCK_WIN;\n        break;\n\n    case Qt::Key_Super_R:\n        key = SCK_RWIN;\n        break;\n\n    case Qt::Key_Menu:\n        key = SCK_MENU;\n        break;\n\n    default:\n        if ((key = qt_key) > 0x7f)\n            key = 0;\n    }\n\n    return key;\n}\n\n\n// Encode a QString as bytes.\nQsciScintillaBase::ScintillaBytes QsciScintillaBase::textAsBytes(const QString &text) const\n{\n    if (sci->IsUnicodeMode())\n        return text.toUtf8();\n\n    return text.toLatin1();\n}\n\n\n// Decode bytes as a QString.\nQString QsciScintillaBase::bytesAsText(const char *bytes) const\n{\n    if (sci->IsUnicodeMode())\n        return QString::fromUtf8(bytes);\n\n    return QString::fromLatin1(bytes);\n}\n\n\n// Handle a mouse button double click.\nvoid QsciScintillaBase::mouseDoubleClickEvent(QMouseEvent *e)\n{\n    if (e->button() != Qt::LeftButton)\n    {\n        e->ignore();\n        return;\n    }\n\n    setFocus();\n\n    // Make sure Scintilla will interpret this as a double-click.\n    unsigned clickTime = sci->lastClickTime + QSCI_SCI_NAMESPACE(Platform)::DoubleClickTime() - 1;\n\n    bool shift = e->modifiers() & Qt::ShiftModifier;\n    bool ctrl = e->modifiers() & Qt::ControlModifier;\n    bool alt = e->modifiers() & Qt::AltModifier;\n\n    sci->ButtonDown(QSCI_SCI_NAMESPACE(Point)(e->x(), e->y()), clickTime,\n            shift, ctrl, alt);\n\n    // Remember the current position and time in case it turns into a triple\n    // click.\n    triple_click_at = e->globalPos();\n    triple_click.start(QApplication::doubleClickInterval());\n}\n\n\n// Handle a mouse move.\nvoid QsciScintillaBase::mouseMoveEvent(QMouseEvent *e)\n{\n    sci->ButtonMove(QSCI_SCI_NAMESPACE(Point)(e->x(), e->y()));\n}\n\n\n// Handle a mouse button press.\nvoid QsciScintillaBase::mousePressEvent(QMouseEvent *e)\n{\n    setFocus();\n\n    QSCI_SCI_NAMESPACE(Point) pt(e->x(), e->y());\n\n    if (e->button() == Qt::LeftButton)\n    {\n        unsigned clickTime;\n\n        // It is a triple click if the timer is running and the mouse hasn't\n        // moved too much.\n        if (triple_click.isActive() && (e->globalPos() - triple_click_at).manhattanLength() < QApplication::startDragDistance())\n            clickTime = sci->lastClickTime + QSCI_SCI_NAMESPACE(Platform)::DoubleClickTime() - 1;\n        else\n            clickTime = sci->lastClickTime + QSCI_SCI_NAMESPACE(Platform)::DoubleClickTime() + 1;\n\n        triple_click.stop();\n\n        // Scintilla uses the Alt modifier to initiate rectangular selection.\n        // However the GTK port (under X11, not Windows) uses the Control\n        // modifier (by default, although it is configurable).  It does this\n        // because most X11 window managers hijack Alt-drag to move the window.\n        // We do the same, except that (for the moment at least) we don't allow\n        // the modifier to be configured.\n        bool shift = e->modifiers() & Qt::ShiftModifier;\n        bool ctrl = e->modifiers() & Qt::ControlModifier;\n#if defined(Q_OS_MAC) || defined(Q_OS_WIN)\n        bool alt = e->modifiers() & Qt::AltModifier;\n#else\n        bool alt = ctrl;\n#endif\n\n        sci->ButtonDown(pt, clickTime, shift, ctrl, alt);\n    }\n    else if (e->button() == Qt::MidButton)\n    {\n        QClipboard *cb = QApplication::clipboard();\n\n        if (cb->supportsSelection())\n        {\n            int pos = sci->PositionFromLocation(pt);\n\n            sci->sel.Clear();\n            sci->SetSelection(pos, pos);\n\n            sci->pasteFromClipboard(QClipboard::Selection);\n        }\n    }\n}\n\n\n// Handle a mouse button releases.\nvoid QsciScintillaBase::mouseReleaseEvent(QMouseEvent *e)\n{\n    if (e->button() != Qt::LeftButton)\n        return;\n\n    QSCI_SCI_NAMESPACE(Point) pt(e->x(), e->y());\n\n    if (sci->HaveMouseCapture())\n    {\n        bool ctrl = e->modifiers() & Qt::ControlModifier;\n\n        sci->ButtonUp(pt, 0, ctrl);\n    }\n\n#if QT_VERSION >= 0x050000\n    if (!sci->pdoc->IsReadOnly() && !sci->PointInSelMargin(pt) && qApp->autoSipEnabled())\n    {\n        QStyle::RequestSoftwareInputPanel rsip = QStyle::RequestSoftwareInputPanel(style()->styleHint(QStyle::SH_RequestSoftwareInputPanel));\n\n        if (!clickCausedFocus || rsip == QStyle::RSIP_OnMouseClick)\n            qApp->inputMethod()->show();\n    }\n\n    clickCausedFocus = false;\n#endif\n}\n\n\n// Handle paint events.\nvoid QsciScintillaBase::paintEvent(QPaintEvent *e)\n{\n    sci->paintEvent(e);\n}\n\n\n// Handle resize events.\nvoid QsciScintillaBase::resizeEvent(QResizeEvent *)\n{\n    sci->ChangeSize();\n}\n\n\n// Re-implemented to suppress the default behaviour as Scintilla works at a\n// more fundamental level.  Note that this means that replacing the scrollbars\n// with custom versions does not work.\nvoid QsciScintillaBase::scrollContentsBy(int, int)\n{\n}\n\n\n// Handle the vertical scrollbar.\nvoid QsciScintillaBase::handleVSb(int value)\n{\n    sci->ScrollTo(value);\n}\n\n\n// Handle the horizontal scrollbar.\nvoid QsciScintillaBase::handleHSb(int value)\n{\n    sci->HorizontalScrollTo(value);\n}\n\n\n// Handle drag enters.\nvoid QsciScintillaBase::dragEnterEvent(QDragEnterEvent *e)\n{\n    QsciScintillaBase::dragMoveEvent(e);\n}\n\n\n// Handle drag leaves.\nvoid QsciScintillaBase::dragLeaveEvent(QDragLeaveEvent *)\n{\n    sci->SetDragPosition(QSCI_SCI_NAMESPACE(SelectionPosition)());\n}\n\n\n// Handle drag moves.\nvoid QsciScintillaBase::dragMoveEvent(QDragMoveEvent *e)\n{\n    sci->SetDragPosition(\n            sci->SPositionFromLocation(\n                    QSCI_SCI_NAMESPACE(Point)(e->pos().x(), e->pos().y()),\n                    false, false, sci->UserVirtualSpace()));\n\n    acceptAction(e);\n}\n\n\n// Handle drops.\nvoid QsciScintillaBase::dropEvent(QDropEvent *e)\n{\n    bool moving;\n    int len;\n    const char *s;\n    bool rectangular;\n\n    acceptAction(e);\n\n    if (!e->isAccepted())\n        return;\n\n    moving = (e->dropAction() == Qt::MoveAction);\n\n    QByteArray text = fromMimeData(e->mimeData(), rectangular);\n    len = text.length();\n    s = text.data();\n\n    std::string dest = QSCI_SCI_NAMESPACE(Document)::TransformLineEnds(s, len,\n                sci->pdoc->eolMode);\n\n    sci->DropAt(sci->posDrop, dest.c_str(), dest.length(), moving,\n            rectangular);\n\n    sci->Redraw();\n}\n\n\nvoid QsciScintillaBase::acceptAction(QDropEvent *e)\n{\n    if (sci->pdoc->IsReadOnly() || !canInsertFromMimeData(e->mimeData()))\n        e->ignore();\n    else\n        e->acceptProposedAction();\n}\n\n\n// See if a MIME data object can be decoded.\nbool QsciScintillaBase::canInsertFromMimeData(const QMimeData *source) const\n{\n    return source->hasFormat(mimeTextPlain);\n}\n\n\n// Create text from a MIME data object.\nQByteArray QsciScintillaBase::fromMimeData(const QMimeData *source, bool &rectangular) const\n{\n    // See if it is rectangular.  We try all of the different formats that\n    // Scintilla supports in case we are working across different platforms.\n    if (source->hasFormat(mimeRectangularWin))\n        rectangular = true;\n    else if (source->hasFormat(mimeRectangular))\n        rectangular = true;\n    else\n        rectangular = false;\n\n    // Note that we don't support Scintilla's hack of adding a '\\0' as Qt\n    // strips it off under the covers when pasting from another process.\n    QString utf8 = source->text();\n    QByteArray text;\n\n    if (sci->IsUnicodeMode())\n        text = utf8.toUtf8();\n    else\n        text = utf8.toLatin1();\n\n    return text;\n}\n\n\n// Create a MIME data object for some text.\nQMimeData *QsciScintillaBase::toMimeData(const QByteArray &text, bool rectangular) const\n{\n    QMimeData *mime = new QMimeData;\n\n    QString utf8;\n\n    if (sci->IsUnicodeMode())\n        utf8 = QString::fromUtf8(text.constData(), text.size());\n    else\n        utf8 = QString::fromLatin1(text.constData(), text.size());\n\n    mime->setText(utf8);\n\n    if (rectangular)\n    {\n        // Use the platform specific \"standard\" for specifying a rectangular\n        // selection.\n#if defined(Q_OS_WIN)\n        mime->setData(mimeRectangularWin, QByteArray());\n#else\n        mime->setData(mimeRectangular, QByteArray());\n#endif\n    }\n\n    return mime;\n}\n\n\n// Connect up the vertical scroll bar.\nvoid QsciScintillaBase::connectVerticalScrollBar()\n{\n    connect(verticalScrollBar(), SIGNAL(valueChanged(int)),\n            SLOT(handleVSb(int)));\n}\n\n\n// Connect up the horizontal scroll bar.\nvoid QsciScintillaBase::connectHorizontalScrollBar()\n{\n    connect(horizontalScrollBar(), SIGNAL(valueChanged(int)),\n            SLOT(handleHSb(int)));\n}\n\n\n//! Replace the vertical scroll bar.\nvoid QsciScintillaBase::replaceVerticalScrollBar(QScrollBar *scrollBar)\n{\n    setVerticalScrollBar(scrollBar);\n    connectVerticalScrollBar();\n}\n\n\n// Replace the horizontal scroll bar.\nvoid QsciScintillaBase::replaceHorizontalScrollBar(QScrollBar *scrollBar)\n{\n    setHorizontalScrollBar(scrollBar);\n    connectHorizontalScrollBar();\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscistyle.cpp",
    "content": "// This module implements the QsciStyle class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscistyle.h\"\n\n#include <qapplication.h>\n\n#include \"Qsci/qsciscintillabase.h\"\n\n\n// A ctor.\nQsciStyle::QsciStyle(int style)\n{\n    init(style);\n\n    QPalette pal = QApplication::palette();\n    setColor(pal.text().color());\n    setPaper(pal.base().color());\n\n    setFont(QApplication::font());\n    setEolFill(false);\n}\n\n\n// A ctor.\nQsciStyle::QsciStyle(int style, const QString &description,\n        const QColor &color, const QColor &paper, const QFont &font,\n        bool eolFill)\n{\n    init(style);\n\n    setDescription(description);\n\n    setColor(color);\n    setPaper(paper);\n\n    setFont(font);\n    setEolFill(eolFill);\n}\n\n\n// Initialisation common to all ctors.\nvoid QsciStyle::init(int style)\n{\n    // The next style number to allocate.  The initial values corresponds to\n    // the amount of space that Scintilla initially creates for styles.\n    static int next_style_nr = 63;\n\n    // See if a new style should be allocated.  Note that we allow styles to be\n    // passed in that are bigger than STYLE_MAX because the styles used for\n    // annotations are allowed to be.\n    if (style < 0)\n    {\n        // Note that we don't deal with the situation where the newly allocated\n        // style number has already been used explicitly.\n        if (next_style_nr > QsciScintillaBase::STYLE_LASTPREDEFINED)\n            style = next_style_nr--;\n    }\n\n    style_nr = style;\n\n    // Initialise the minor attributes.\n    setTextCase(QsciStyle::OriginalCase);\n    setVisible(true);\n    setChangeable(true);\n    setHotspot(false);\n}\n\n\n// Apply the style to a particular editor.\nvoid QsciStyle::apply(QsciScintillaBase *sci) const\n{\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETFORE, style_nr,\n            style_color);\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETBACK, style_nr,\n            style_paper);\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETFONT, style_nr,\n            style_font.family().toLatin1().data());\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETSIZEFRACTIONAL, style_nr,\n            long(style_font.pointSizeF() * QsciScintillaBase::SC_FONT_SIZE_MULTIPLIER));\n\n    // Pass the Qt weight via the back door.\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETWEIGHT, style_nr,\n            -style_font.weight());\n\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETITALIC, style_nr,\n            style_font.italic());\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETUNDERLINE, style_nr,\n            style_font.underline());\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETEOLFILLED, style_nr,\n            style_eol_fill);\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETCASE, style_nr,\n            (long)style_case);\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETVISIBLE, style_nr,\n            style_visible);\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETCHANGEABLE, style_nr,\n            style_changeable);\n    sci->SendScintilla(QsciScintillaBase::SCI_STYLESETHOTSPOT, style_nr,\n            style_hotspot);\n}\n\n\n// Set the color attribute.\nvoid QsciStyle::setColor(const QColor &color)\n{\n    style_color = color;\n}\n\n\n// Set the paper attribute.\nvoid QsciStyle::setPaper(const QColor &paper)\n{\n    style_paper = paper;\n}\n\n\n// Set the font attribute.\nvoid QsciStyle::setFont(const QFont &font)\n{\n    style_font = font;\n}\n\n\n// Set the eol fill attribute.\nvoid QsciStyle::setEolFill(bool eolFill)\n{\n    style_eol_fill = eolFill;\n}\n\n\n// Set the text case attribute.\nvoid QsciStyle::setTextCase(QsciStyle::TextCase text_case)\n{\n    style_case = text_case;\n}\n\n\n// Set the visible attribute.\nvoid QsciStyle::setVisible(bool visible)\n{\n    style_visible = visible;\n}\n\n\n// Set the changeable attribute.\nvoid QsciStyle::setChangeable(bool changeable)\n{\n    style_changeable = changeable;\n}\n\n\n// Set the hotspot attribute.\nvoid QsciStyle::setHotspot(bool hotspot)\n{\n    style_hotspot = hotspot;\n}\n\n\n// Refresh the style.  Note that since we had to add apply() then this can't do\n// anything useful so we leave it as a no-op.\nvoid QsciStyle::refresh()\n{\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/Qt4Qt5/qscistyledtext.cpp",
    "content": "// This module implements the QsciStyledText class.\n//\n// Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n// \n// This file is part of QScintilla.\n// \n// This file may be used under the terms of the GNU General Public License\n// version 3.0 as published by the Free Software Foundation and appearing in\n// the file LICENSE included in the packaging of this file.  Please review the\n// following information to ensure the GNU General Public License version 3.0\n// requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n// \n// If you do not wish to use this file under the terms of the GPL version 3.0\n// then you may purchase a commercial license.  For more information contact\n// info@riverbankcomputing.com.\n// \n// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n#include \"Qsci/qscistyledtext.h\"\n\n#include \"Qsci/qsciscintillabase.h\"\n#include \"Qsci/qscistyle.h\"\n\n\n// A ctor.\nQsciStyledText::QsciStyledText(const QString &text, int style)\n    : styled_text(text), style_nr(style), explicit_style(0)\n{\n}\n\n\n// A ctor.\nQsciStyledText::QsciStyledText(const QString &text, const QsciStyle &style)\n    : styled_text(text), style_nr(-1)\n{\n    explicit_style = new QsciStyle(style);\n}\n\n\n// Return the number of the style.\nint QsciStyledText::style() const\n{\n    return explicit_style ? explicit_style->style() : style_nr;\n}\n\n\n// Apply any explicit style to an editor.\nvoid QsciStyledText::apply(QsciScintillaBase *sci) const\n{\n    if (explicit_style)\n        explicit_style->apply(sci);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/README",
    "content": "All the documentation for QScintilla for Qt v4 and Qt v5 (including\ninstallation instructions) can be found in doc/html-Qt4Qt5/index.html.\n"
  },
  {
    "path": "old/3rdpart/qscintilla/include/ILexer.h",
    "content": "// Scintilla source code edit control\n/** @file ILexer.h\n ** Interface between Scintilla and lexers.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef ILEXER_H\n#define ILEXER_H\n\n#include \"Sci_Position.h\"\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n#ifdef _WIN32\n\t#define SCI_METHOD __stdcall\n#else\n\t#define SCI_METHOD\n#endif\n\nenum { dvOriginal=0, dvLineEnd=1 };\n\nclass IDocument {\npublic:\n\tvirtual int SCI_METHOD Version() const = 0;\n\tvirtual void SCI_METHOD SetErrorStatus(int status) = 0;\n\tvirtual Sci_Position SCI_METHOD Length() const = 0;\n\tvirtual void SCI_METHOD GetCharRange(char *buffer, Sci_Position position, Sci_Position lengthRetrieve) const = 0;\n\tvirtual char SCI_METHOD StyleAt(Sci_Position position) const = 0;\n\tvirtual Sci_Position SCI_METHOD LineFromPosition(Sci_Position position) const = 0;\n\tvirtual Sci_Position SCI_METHOD LineStart(Sci_Position line) const = 0;\n\tvirtual int SCI_METHOD GetLevel(Sci_Position line) const = 0;\n\tvirtual int SCI_METHOD SetLevel(Sci_Position line, int level) = 0;\n\tvirtual int SCI_METHOD GetLineState(Sci_Position line) const = 0;\n\tvirtual int SCI_METHOD SetLineState(Sci_Position line, int state) = 0;\n\tvirtual void SCI_METHOD StartStyling(Sci_Position position, char mask) = 0;\n\tvirtual bool SCI_METHOD SetStyleFor(Sci_Position length, char style) = 0;\n\tvirtual bool SCI_METHOD SetStyles(Sci_Position length, const char *styles) = 0;\n\tvirtual void SCI_METHOD DecorationSetCurrentIndicator(int indicator) = 0;\n\tvirtual void SCI_METHOD DecorationFillRange(Sci_Position position, int value, Sci_Position fillLength) = 0;\n\tvirtual void SCI_METHOD ChangeLexerState(Sci_Position start, Sci_Position end) = 0;\n\tvirtual int SCI_METHOD CodePage() const = 0;\n\tvirtual bool SCI_METHOD IsDBCSLeadByte(char ch) const = 0;\n\tvirtual const char * SCI_METHOD BufferPointer() = 0;\n\tvirtual int SCI_METHOD GetLineIndentation(Sci_Position line) = 0;\n};\n\nclass IDocumentWithLineEnd : public IDocument {\npublic:\n\tvirtual Sci_Position SCI_METHOD LineEnd(Sci_Position line) const = 0;\n\tvirtual Sci_Position SCI_METHOD GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const = 0;\n\tvirtual int SCI_METHOD GetCharacterAndWidth(Sci_Position position, Sci_Position *pWidth) const = 0;\n};\n\nenum { lvOriginal=0, lvSubStyles=1 };\n\nclass ILexer {\npublic:\n\tvirtual int SCI_METHOD Version() const = 0;\n\tvirtual void SCI_METHOD Release() = 0;\n\tvirtual const char * SCI_METHOD PropertyNames() = 0;\n\tvirtual int SCI_METHOD PropertyType(const char *name) = 0;\n\tvirtual const char * SCI_METHOD DescribeProperty(const char *name) = 0;\n\tvirtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) = 0;\n\tvirtual const char * SCI_METHOD DescribeWordListSets() = 0;\n\tvirtual Sci_Position SCI_METHOD WordListSet(int n, const char *wl) = 0;\n\tvirtual void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) = 0;\n\tvirtual void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) = 0;\n\tvirtual void * SCI_METHOD PrivateCall(int operation, void *pointer) = 0;\n};\n\nclass ILexerWithSubStyles : public ILexer {\npublic:\n\tvirtual int SCI_METHOD LineEndTypesSupported() = 0;\n\tvirtual int SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) = 0;\n\tvirtual int SCI_METHOD SubStylesStart(int styleBase) = 0;\n\tvirtual int SCI_METHOD SubStylesLength(int styleBase) = 0;\n\tvirtual int SCI_METHOD StyleFromSubStyle(int subStyle) = 0;\n\tvirtual int SCI_METHOD PrimaryStyleFromStyle(int style) = 0;\n\tvirtual void SCI_METHOD FreeSubStyles() = 0;\n\tvirtual void SCI_METHOD SetIdentifiers(int style, const char *identifiers) = 0;\n\tvirtual int SCI_METHOD DistanceToSecondaryStyles() = 0;\n\tvirtual const char * SCI_METHOD GetSubStyleBases() = 0;\n};\n\nclass ILoader {\npublic:\n\tvirtual int SCI_METHOD Release() = 0;\n\t// Returns a status code from SC_STATUS_*\n\tvirtual int SCI_METHOD AddData(char *data, Sci_Position length) = 0;\n\tvirtual void * SCI_METHOD ConvertToDocument() = 0;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/include/License.txt",
    "content": "License for Scintilla and SciTE\n\nCopyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n\nAll Rights Reserved \n\nPermission to use, copy, modify, and distribute this software and its \ndocumentation for any purpose and without fee is hereby granted, \nprovided that the above copyright notice appear in all copies and that \nboth that copyright notice and this permission notice appear in \nsupporting documentation. \n\nNEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS \nSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY \nAND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY \nSPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES \nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, \nWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER \nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE \nOR PERFORMANCE OF THIS SOFTWARE. "
  },
  {
    "path": "old/3rdpart/qscintilla/include/Platform.h",
    "content": "// Scintilla source code edit control\n/** @file Platform.h\n ** Interface to platform facilities. Also includes some basic utilities.\n ** Implemented in PlatGTK.cxx for GTK+/Linux, PlatWin.cxx for Windows, and PlatWX.cxx for wxWindows.\n **/\n// Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef PLATFORM_H\n#define PLATFORM_H\n\n// PLAT_GTK = GTK+ on Linux or Win32\n// PLAT_GTK_WIN32 is defined additionally when running PLAT_GTK under Win32\n// PLAT_WIN = Win32 API on Win32 OS\n// PLAT_WX is wxWindows on any supported platform\n// PLAT_TK = Tcl/TK on Linux or Win32\n\n#define PLAT_GTK 0\n#define PLAT_GTK_WIN32 0\n#define PLAT_GTK_MACOSX 0\n#define PLAT_MACOSX 0\n#define PLAT_WIN 0\n#define PLAT_WX  0\n#define PLAT_QT 0\n#define PLAT_FOX 0\n#define PLAT_CURSES 0\n#define PLAT_TK 0\n\n#if defined(FOX)\n#undef PLAT_FOX\n#define PLAT_FOX 1\n\n#elif defined(__WX__)\n#undef PLAT_WX\n#define PLAT_WX  1\n\n#elif defined(CURSES)\n#undef PLAT_CURSES\n#define PLAT_CURSES 1\n\n#elif defined(SCINTILLA_QT)\n#undef PLAT_QT\n#define PLAT_QT 1\n\n#include <Qsci/qsciglobal.h>\nQT_BEGIN_NAMESPACE\nclass QPainter;\nQT_END_NAMESPACE\n\n// This is needed to work around an HP-UX bug with Qt4.\n#include <qnamespace.h>\n\n#elif defined(TK)\n#undef PLAT_TK\n#define PLAT_TK 1\n\n#elif defined(GTK)\n#undef PLAT_GTK\n#define PLAT_GTK 1\n\n#if defined(__WIN32__) || defined(_MSC_VER)\n#undef PLAT_GTK_WIN32\n#define PLAT_GTK_WIN32 1\n#endif\n\n#if defined(__APPLE__)\n#undef PLAT_GTK_MACOSX\n#define PLAT_GTK_MACOSX 1\n#endif\n\n#elif defined(__APPLE__)\n\n#undef PLAT_MACOSX\n#define PLAT_MACOSX 1\n\n#else\n#undef PLAT_WIN\n#define PLAT_WIN 1\n\n#endif\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\ntypedef float XYPOSITION;\ntypedef double XYACCUMULATOR;\ninline int RoundXYPosition(XYPOSITION xyPos) {\n\treturn int(xyPos + 0.5);\n}\n\n// Underlying the implementation of the platform classes are platform specific types.\n// Sometimes these need to be passed around by client code so they are defined here\n\ntypedef void *FontID;\ntypedef void *SurfaceID;\ntypedef void *WindowID;\ntypedef void *MenuID;\ntypedef void *TickerID;\ntypedef void *Function;\ntypedef void *IdlerID;\n\n/**\n * A geometric point class.\n * Point is similar to the Win32 POINT and GTK+ GdkPoint types.\n */\nclass Point {\npublic:\n\tXYPOSITION x;\n\tXYPOSITION y;\n\n\texplicit Point(XYPOSITION x_=0, XYPOSITION y_=0) : x(x_), y(y_) {\n\t}\n\n\tstatic Point FromInts(int x_, int y_) {\n\t\treturn Point(static_cast<XYPOSITION>(x_), static_cast<XYPOSITION>(y_));\n\t}\n\n\t// Other automatically defined methods (assignment, copy constructor, destructor) are fine\n\n\tstatic Point FromLong(long lpoint);\n};\n\n/**\n * A geometric rectangle class.\n * PRectangle is similar to the Win32 RECT.\n * PRectangles contain their top and left sides, but not their right and bottom sides.\n */\nclass PRectangle {\npublic:\n\tXYPOSITION left;\n\tXYPOSITION top;\n\tXYPOSITION right;\n\tXYPOSITION bottom;\n\n\texplicit PRectangle(XYPOSITION left_=0, XYPOSITION top_=0, XYPOSITION right_=0, XYPOSITION bottom_ = 0) :\n\t\tleft(left_), top(top_), right(right_), bottom(bottom_) {\n\t}\n\n\tstatic PRectangle FromInts(int left_, int top_, int right_, int bottom_) {\n\t\treturn PRectangle(static_cast<XYPOSITION>(left_), static_cast<XYPOSITION>(top_),\n\t\t\tstatic_cast<XYPOSITION>(right_), static_cast<XYPOSITION>(bottom_));\n\t}\n\n\t// Other automatically defined methods (assignment, copy constructor, destructor) are fine\n\n\tbool operator==(PRectangle &rc) const {\n\t\treturn (rc.left == left) && (rc.right == right) &&\n\t\t\t(rc.top == top) && (rc.bottom == bottom);\n\t}\n\tbool Contains(Point pt) const {\n\t\treturn (pt.x >= left) && (pt.x <= right) &&\n\t\t\t(pt.y >= top) && (pt.y <= bottom);\n\t}\n\tbool ContainsWholePixel(Point pt) const {\n\t\t// Does the rectangle contain all of the pixel to left/below the point\n\t\treturn (pt.x >= left) && ((pt.x+1) <= right) &&\n\t\t\t(pt.y >= top) && ((pt.y+1) <= bottom);\n\t}\n\tbool Contains(PRectangle rc) const {\n\t\treturn (rc.left >= left) && (rc.right <= right) &&\n\t\t\t(rc.top >= top) && (rc.bottom <= bottom);\n\t}\n\tbool Intersects(PRectangle other) const {\n\t\treturn (right > other.left) && (left < other.right) &&\n\t\t\t(bottom > other.top) && (top < other.bottom);\n\t}\n\tvoid Move(XYPOSITION xDelta, XYPOSITION yDelta) {\n\t\tleft += xDelta;\n\t\ttop += yDelta;\n\t\tright += xDelta;\n\t\tbottom += yDelta;\n\t}\n\tXYPOSITION Width() const { return right - left; }\n\tXYPOSITION Height() const { return bottom - top; }\n\tbool Empty() const {\n\t\treturn (Height() <= 0) || (Width() <= 0);\n\t}\n};\n\n/**\n * Holds a desired RGB colour.\n */\nclass ColourDesired {\n\tlong co;\npublic:\n\tColourDesired(long lcol=0) {\n\t\tco = lcol;\n\t}\n\n\tColourDesired(unsigned int red, unsigned int green, unsigned int blue) {\n\t\tSet(red, green, blue);\n\t}\n\n\tbool operator==(const ColourDesired &other) const {\n\t\treturn co == other.co;\n\t}\n\n\tvoid Set(long lcol) {\n\t\tco = lcol;\n\t}\n\n\tvoid Set(unsigned int red, unsigned int green, unsigned int blue) {\n\t\tco = red | (green << 8) | (blue << 16);\n\t}\n\n\tstatic inline unsigned int ValueOfHex(const char ch) {\n\t\tif (ch >= '0' && ch <= '9')\n\t\t\treturn ch - '0';\n\t\telse if (ch >= 'A' && ch <= 'F')\n\t\t\treturn ch - 'A' + 10;\n\t\telse if (ch >= 'a' && ch <= 'f')\n\t\t\treturn ch - 'a' + 10;\n\t\telse\n\t\t\treturn 0;\n\t}\n\n\tvoid Set(const char *val) {\n\t\tif (*val == '#') {\n\t\t\tval++;\n\t\t}\n\t\tunsigned int r = ValueOfHex(val[0]) * 16 + ValueOfHex(val[1]);\n\t\tunsigned int g = ValueOfHex(val[2]) * 16 + ValueOfHex(val[3]);\n\t\tunsigned int b = ValueOfHex(val[4]) * 16 + ValueOfHex(val[5]);\n\t\tSet(r, g, b);\n\t}\n\n\tlong AsLong() const {\n\t\treturn co;\n\t}\n\n\tunsigned int GetRed() const {\n\t\treturn co & 0xff;\n\t}\n\n\tunsigned int GetGreen() const {\n\t\treturn (co >> 8) & 0xff;\n\t}\n\n\tunsigned int GetBlue() const {\n\t\treturn (co >> 16) & 0xff;\n\t}\n};\n\n/**\n * Font management.\n */\n\nstruct FontParameters {\n\tconst char *faceName;\n\tfloat size;\n\tint weight;\n\tbool italic;\n\tint extraFontFlag;\n\tint technology;\n\tint characterSet;\n\n\tFontParameters(\n\t\tconst char *faceName_,\n\t\tfloat size_=10,\n\t\tint weight_=400,\n\t\tbool italic_=false,\n\t\tint extraFontFlag_=0,\n\t\tint technology_=0,\n\t\tint characterSet_=0) :\n\n\t\tfaceName(faceName_),\n\t\tsize(size_),\n\t\tweight(weight_),\n\t\titalic(italic_),\n\t\textraFontFlag(extraFontFlag_),\n\t\ttechnology(technology_),\n\t\tcharacterSet(characterSet_)\n\t{\n\t}\n\n};\n\nclass Font {\nprotected:\n\tFontID fid;\n\t// Private so Font objects can not be copied\n\tFont(const Font &);\n\tFont &operator=(const Font &);\npublic:\n\tFont();\n\tvirtual ~Font();\n\n\tvirtual void Create(const FontParameters &fp);\n\tvirtual void Release();\n\n\tFontID GetID() { return fid; }\n\t// Alias another font - caller guarantees not to Release\n\tvoid SetID(FontID fid_) { fid = fid_; }\n\tfriend class Surface;\n\tfriend class SurfaceImpl;\n};\n\n/**\n * A surface abstracts a place to draw.\n */\n#if defined(PLAT_QT)\nclass XPM;\n#endif\nclass Surface {\nprivate:\n\t// Private so Surface objects can not be copied\n\tSurface(const Surface &) {}\n\tSurface &operator=(const Surface &) { return *this; }\npublic:\n\tSurface() {}\n\tvirtual ~Surface() {}\n\tstatic Surface *Allocate(int technology);\n\n\tvirtual void Init(WindowID wid)=0;\n\tvirtual void Init(SurfaceID sid, WindowID wid)=0;\n\tvirtual void InitPixMap(int width, int height, Surface *surface_, WindowID wid)=0;\n\n\tvirtual void Release()=0;\n\tvirtual bool Initialised()=0;\n\tvirtual void PenColour(ColourDesired fore)=0;\n\tvirtual int LogPixelsY()=0;\n\tvirtual int DeviceHeightFont(int points)=0;\n\tvirtual void MoveTo(int x_, int y_)=0;\n\tvirtual void LineTo(int x_, int y_)=0;\n\tvirtual void Polygon(Point *pts, int npts, ColourDesired fore, ColourDesired back)=0;\n\tvirtual void RectangleDraw(PRectangle rc, ColourDesired fore, ColourDesired back)=0;\n\tvirtual void FillRectangle(PRectangle rc, ColourDesired back)=0;\n\tvirtual void FillRectangle(PRectangle rc, Surface &surfacePattern)=0;\n\tvirtual void RoundedRectangle(PRectangle rc, ColourDesired fore, ColourDesired back)=0;\n\tvirtual void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill, int alphaFill,\n\t\tColourDesired outline, int alphaOutline, int flags)=0;\n\tvirtual void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage) = 0;\n\tvirtual void Ellipse(PRectangle rc, ColourDesired fore, ColourDesired back)=0;\n\tvirtual void Copy(PRectangle rc, Point from, Surface &surfaceSource)=0;\n\n\tvirtual void DrawTextNoClip(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back)=0;\n\tvirtual void DrawTextClipped(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore, ColourDesired back)=0;\n\tvirtual void DrawTextTransparent(PRectangle rc, Font &font_, XYPOSITION ybase, const char *s, int len, ColourDesired fore)=0;\n\tvirtual void MeasureWidths(Font &font_, const char *s, int len, XYPOSITION *positions)=0;\n\tvirtual XYPOSITION WidthText(Font &font_, const char *s, int len)=0;\n\tvirtual XYPOSITION WidthChar(Font &font_, char ch)=0;\n\tvirtual XYPOSITION Ascent(Font &font_)=0;\n\tvirtual XYPOSITION Descent(Font &font_)=0;\n\tvirtual XYPOSITION InternalLeading(Font &font_)=0;\n\tvirtual XYPOSITION ExternalLeading(Font &font_)=0;\n\tvirtual XYPOSITION Height(Font &font_)=0;\n\tvirtual XYPOSITION AverageCharWidth(Font &font_)=0;\n\n\tvirtual void SetClip(PRectangle rc)=0;\n\tvirtual void FlushCachedState()=0;\n\n\tvirtual void SetUnicodeMode(bool unicodeMode_)=0;\n\tvirtual void SetDBCSMode(int codePage)=0;\n\n#if defined(PLAT_QT)\n    virtual void Init(QPainter *p)=0;\n    virtual void DrawXPM(PRectangle rc, const XPM *xpm)=0;\n#endif\n};\n\n/**\n * A simple callback action passing one piece of untyped user data.\n */\ntypedef void (*CallBackAction)(void*);\n\n/**\n * Class to hide the details of window manipulation.\n * Does not own the window which will normally have a longer life than this object.\n */\nclass Window {\nprotected:\n\tWindowID wid;\npublic:\n\tWindow() : wid(0), cursorLast(cursorInvalid) {\n\t}\n\tWindow(const Window &source) : wid(source.wid), cursorLast(cursorInvalid) {\n\t}\n\tvirtual ~Window();\n\tWindow &operator=(WindowID wid_) {\n\t\twid = wid_;\n\t\treturn *this;\n\t}\n\tWindowID GetID() const { return wid; }\n\tbool Created() const { return wid != 0; }\n\tvoid Destroy();\n\tbool HasFocus();\n\tPRectangle GetPosition();\n\tvoid SetPosition(PRectangle rc);\n\tvoid SetPositionRelative(PRectangle rc, Window relativeTo);\n\tPRectangle GetClientPosition();\n\tvoid Show(bool show=true);\n\tvoid InvalidateAll();\n\tvoid InvalidateRectangle(PRectangle rc);\n\tvirtual void SetFont(Font &font);\n\tenum Cursor { cursorInvalid, cursorText, cursorArrow, cursorUp, cursorWait, cursorHoriz, cursorVert, cursorReverseArrow, cursorHand };\n\tvoid SetCursor(Cursor curs);\n\tvoid SetTitle(const char *s);\n\tPRectangle GetMonitorRect(Point pt);\nprivate:\n\tCursor cursorLast;\n};\n\n/**\n * Listbox management.\n */\n\nclass ListBox : public Window {\npublic:\n\tListBox();\n\tvirtual ~ListBox();\n\tstatic ListBox *Allocate();\n\n\tvirtual void SetFont(Font &font)=0;\n\tvirtual void Create(Window &parent, int ctrlID, Point location, int lineHeight_, bool unicodeMode_, int technology_)=0;\n\tvirtual void SetAverageCharWidth(int width)=0;\n\tvirtual void SetVisibleRows(int rows)=0;\n\tvirtual int GetVisibleRows() const=0;\n\tvirtual PRectangle GetDesiredRect()=0;\n\tvirtual int CaretFromEdge()=0;\n\tvirtual void Clear()=0;\n\tvirtual void Append(char *s, int type = -1)=0;\n\tvirtual int Length()=0;\n\tvirtual void Select(int n)=0;\n\tvirtual int GetSelection()=0;\n\tvirtual int Find(const char *prefix)=0;\n\tvirtual void GetValue(int n, char *value, int len)=0;\n\tvirtual void RegisterImage(int type, const char *xpm_data)=0;\n\tvirtual void RegisterRGBAImage(int type, int width, int height, const unsigned char *pixelsImage) = 0;\n\tvirtual void ClearRegisteredImages()=0;\n\tvirtual void SetDoubleClickAction(CallBackAction, void *)=0;\n\tvirtual void SetList(const char* list, char separator, char typesep)=0;\n};\n\n/**\n * Menu management.\n */\nclass Menu {\n\tMenuID mid;\npublic:\n\tMenu();\n\tMenuID GetID() { return mid; }\n\tvoid CreatePopUp();\n\tvoid Destroy();\n\tvoid Show(Point pt, Window &w);\n};\n\nclass ElapsedTime {\n\tlong bigBit;\n\tlong littleBit;\npublic:\n\tElapsedTime();\n\tdouble Duration(bool reset=false);\n};\n\n/**\n * Dynamic Library (DLL/SO/...) loading\n */\nclass DynamicLibrary {\npublic:\n\tvirtual ~DynamicLibrary() {}\n\n\t/// @return Pointer to function \"name\", or NULL on failure.\n\tvirtual Function FindFunction(const char *name) = 0;\n\n\t/// @return true if the library was loaded successfully.\n\tvirtual bool IsValid() = 0;\n\n\t/// @return An instance of a DynamicLibrary subclass with \"modulePath\" loaded.\n\tstatic DynamicLibrary *Load(const char *modulePath);\n};\n\n#if defined(__clang__)\n# if __has_feature(attribute_analyzer_noreturn)\n#  define CLANG_ANALYZER_NORETURN __attribute__((analyzer_noreturn))\n# else\n#  define CLANG_ANALYZER_NORETURN\n# endif\n#else\n# define CLANG_ANALYZER_NORETURN\n#endif\n\n/**\n * Platform class used to retrieve system wide parameters such as double click speed\n * and chrome colour. Not a creatable object, more of a module with several functions.\n */\nclass Platform {\n\t// Private so Platform objects can not be copied\n\tPlatform(const Platform &) {}\n\tPlatform &operator=(const Platform &) { return *this; }\npublic:\n\t// Should be private because no new Platforms are ever created\n\t// but gcc warns about this\n\tPlatform() {}\n\t~Platform() {}\n\tstatic ColourDesired Chrome();\n\tstatic ColourDesired ChromeHighlight();\n\tstatic const char *DefaultFont();\n\tstatic int DefaultFontSize();\n\tstatic unsigned int DoubleClickTime();\n\tstatic bool MouseButtonBounce();\n\tstatic void DebugDisplay(const char *s);\n\tstatic bool IsKeyDown(int key);\n\tstatic long SendScintilla(\n\t\tWindowID w, unsigned int msg, unsigned long wParam=0, long lParam=0);\n\tstatic long SendScintillaPointer(\n\t\tWindowID w, unsigned int msg, unsigned long wParam=0, void *lParam=0);\n\tstatic bool IsDBCSLeadByte(int codePage, char ch);\n\tstatic int DBCSCharLength(int codePage, const char *s);\n\tstatic int DBCSCharMaxLength();\n\n\t// These are utility functions not really tied to a platform\n\tstatic int Minimum(int a, int b);\n\tstatic int Maximum(int a, int b);\n\t// Next three assume 16 bit shorts and 32 bit longs\n\tstatic long LongFromTwoShorts(short a,short b) {\n\t\treturn (a) | ((b) << 16);\n\t}\n\tstatic short HighShortFromLong(long x) {\n\t\treturn static_cast<short>(x >> 16);\n\t}\n\tstatic short LowShortFromLong(long x) {\n\t\treturn static_cast<short>(x & 0xffff);\n\t}\n\tstatic void DebugPrintf(const char *format, ...);\n\tstatic bool ShowAssertionPopUps(bool assertionPopUps_);\n\tstatic void Assert(const char *c, const char *file, int line) CLANG_ANALYZER_NORETURN;\n\tstatic int Clamp(int val, int minVal, int maxVal);\n};\n\n#ifdef  NDEBUG\n#define PLATFORM_ASSERT(c) ((void)0)\n#else\n#ifdef SCI_NAMESPACE\n#define PLATFORM_ASSERT(c) ((c) ? (void)(0) : Scintilla::Platform::Assert(#c, __FILE__, __LINE__))\n#else\n#define PLATFORM_ASSERT(c) ((c) ? (void)(0) : Platform::Assert(#c, __FILE__, __LINE__))\n#endif\n#endif\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/include/SciLexer.h",
    "content": "/* Scintilla source code edit control */\n/** @file SciLexer.h\n ** Interface to the added lexer functions in the SciLexer version of the edit control.\n **/\n/* Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n * The License.txt file describes the conditions under which this software may be distributed. */\n\n/* Most of this file is automatically generated from the Scintilla.iface interface definition\n * file which contains any comments about the definitions. HFacer.py does the generation. */\n\n#ifndef SCILEXER_H\n#define SCILEXER_H\n\n/* SciLexer features - not in standard Scintilla */\n\n/* ++Autogenerated -- start of section automatically generated from Scintilla.iface */\n#define SCLEX_CONTAINER 0\n#define SCLEX_NULL 1\n#define SCLEX_PYTHON 2\n#define SCLEX_CPP 3\n#define SCLEX_HTML 4\n#define SCLEX_XML 5\n#define SCLEX_PERL 6\n#define SCLEX_SQL 7\n#define SCLEX_VB 8\n#define SCLEX_PROPERTIES 9\n#define SCLEX_ERRORLIST 10\n#define SCLEX_MAKEFILE 11\n#define SCLEX_BATCH 12\n#define SCLEX_XCODE 13\n#define SCLEX_LATEX 14\n#define SCLEX_LUA 15\n#define SCLEX_DIFF 16\n#define SCLEX_CONF 17\n#define SCLEX_PASCAL 18\n#define SCLEX_AVE 19\n#define SCLEX_ADA 20\n#define SCLEX_LISP 21\n#define SCLEX_RUBY 22\n#define SCLEX_EIFFEL 23\n#define SCLEX_EIFFELKW 24\n#define SCLEX_TCL 25\n#define SCLEX_NNCRONTAB 26\n#define SCLEX_BULLANT 27\n#define SCLEX_VBSCRIPT 28\n#define SCLEX_BAAN 31\n#define SCLEX_MATLAB 32\n#define SCLEX_SCRIPTOL 33\n#define SCLEX_ASM 34\n#define SCLEX_CPPNOCASE 35\n#define SCLEX_FORTRAN 36\n#define SCLEX_F77 37\n#define SCLEX_CSS 38\n#define SCLEX_POV 39\n#define SCLEX_LOUT 40\n#define SCLEX_ESCRIPT 41\n#define SCLEX_PS 42\n#define SCLEX_NSIS 43\n#define SCLEX_MMIXAL 44\n#define SCLEX_CLW 45\n#define SCLEX_CLWNOCASE 46\n#define SCLEX_LOT 47\n#define SCLEX_YAML 48\n#define SCLEX_TEX 49\n#define SCLEX_METAPOST 50\n#define SCLEX_POWERBASIC 51\n#define SCLEX_FORTH 52\n#define SCLEX_ERLANG 53\n#define SCLEX_OCTAVE 54\n#define SCLEX_MSSQL 55\n#define SCLEX_VERILOG 56\n#define SCLEX_KIX 57\n#define SCLEX_GUI4CLI 58\n#define SCLEX_SPECMAN 59\n#define SCLEX_AU3 60\n#define SCLEX_APDL 61\n#define SCLEX_BASH 62\n#define SCLEX_ASN1 63\n#define SCLEX_VHDL 64\n#define SCLEX_CAML 65\n#define SCLEX_BLITZBASIC 66\n#define SCLEX_PUREBASIC 67\n#define SCLEX_HASKELL 68\n#define SCLEX_PHPSCRIPT 69\n#define SCLEX_TADS3 70\n#define SCLEX_REBOL 71\n#define SCLEX_SMALLTALK 72\n#define SCLEX_FLAGSHIP 73\n#define SCLEX_CSOUND 74\n#define SCLEX_FREEBASIC 75\n#define SCLEX_INNOSETUP 76\n#define SCLEX_OPAL 77\n#define SCLEX_SPICE 78\n#define SCLEX_D 79\n#define SCLEX_CMAKE 80\n#define SCLEX_GAP 81\n#define SCLEX_PLM 82\n#define SCLEX_PROGRESS 83\n#define SCLEX_ABAQUS 84\n#define SCLEX_ASYMPTOTE 85\n#define SCLEX_R 86\n#define SCLEX_MAGIK 87\n#define SCLEX_POWERSHELL 88\n#define SCLEX_MYSQL 89\n#define SCLEX_PO 90\n#define SCLEX_TAL 91\n#define SCLEX_COBOL 92\n#define SCLEX_TACL 93\n#define SCLEX_SORCUS 94\n#define SCLEX_POWERPRO 95\n#define SCLEX_NIMROD 96\n#define SCLEX_SML 97\n#define SCLEX_MARKDOWN 98\n#define SCLEX_TXT2TAGS 99\n#define SCLEX_A68K 100\n#define SCLEX_MODULA 101\n#define SCLEX_COFFEESCRIPT 102\n#define SCLEX_TCMD 103\n#define SCLEX_AVS 104\n#define SCLEX_ECL 105\n#define SCLEX_OSCRIPT 106\n#define SCLEX_VISUALPROLOG 107\n#define SCLEX_LITERATEHASKELL 108\n#define SCLEX_STTXT 109\n#define SCLEX_KVIRC 110\n#define SCLEX_RUST 111\n#define SCLEX_DMAP 112\n#define SCLEX_AS 113\n#define SCLEX_DMIS 114\n#define SCLEX_REGISTRY 115\n#define SCLEX_BIBTEX 116\n#define SCLEX_SREC 117\n#define SCLEX_IHEX 118\n#define SCLEX_TEHEX 119\n#define SCLEX_JSON 120\n#define SCLEX_EDIFACT 121\n#define SCLEX_AUTOMATIC 1000\n#define SCE_P_DEFAULT 0\n#define SCE_P_COMMENTLINE 1\n#define SCE_P_NUMBER 2\n#define SCE_P_STRING 3\n#define SCE_P_CHARACTER 4\n#define SCE_P_WORD 5\n#define SCE_P_TRIPLE 6\n#define SCE_P_TRIPLEDOUBLE 7\n#define SCE_P_CLASSNAME 8\n#define SCE_P_DEFNAME 9\n#define SCE_P_OPERATOR 10\n#define SCE_P_IDENTIFIER 11\n#define SCE_P_COMMENTBLOCK 12\n#define SCE_P_STRINGEOL 13\n#define SCE_P_WORD2 14\n#define SCE_P_DECORATOR 15\n#define SCE_C_DEFAULT 0\n#define SCE_C_COMMENT 1\n#define SCE_C_COMMENTLINE 2\n#define SCE_C_COMMENTDOC 3\n#define SCE_C_NUMBER 4\n#define SCE_C_WORD 5\n#define SCE_C_STRING 6\n#define SCE_C_CHARACTER 7\n#define SCE_C_UUID 8\n#define SCE_C_PREPROCESSOR 9\n#define SCE_C_OPERATOR 10\n#define SCE_C_IDENTIFIER 11\n#define SCE_C_STRINGEOL 12\n#define SCE_C_VERBATIM 13\n#define SCE_C_REGEX 14\n#define SCE_C_COMMENTLINEDOC 15\n#define SCE_C_WORD2 16\n#define SCE_C_COMMENTDOCKEYWORD 17\n#define SCE_C_COMMENTDOCKEYWORDERROR 18\n#define SCE_C_GLOBALCLASS 19\n#define SCE_C_STRINGRAW 20\n#define SCE_C_TRIPLEVERBATIM 21\n#define SCE_C_HASHQUOTEDSTRING 22\n#define SCE_C_PREPROCESSORCOMMENT 23\n#define SCE_C_PREPROCESSORCOMMENTDOC 24\n#define SCE_C_USERLITERAL 25\n#define SCE_C_TASKMARKER 26\n#define SCE_C_ESCAPESEQUENCE 27\n#define SCE_D_DEFAULT 0\n#define SCE_D_COMMENT 1\n#define SCE_D_COMMENTLINE 2\n#define SCE_D_COMMENTDOC 3\n#define SCE_D_COMMENTNESTED 4\n#define SCE_D_NUMBER 5\n#define SCE_D_WORD 6\n#define SCE_D_WORD2 7\n#define SCE_D_WORD3 8\n#define SCE_D_TYPEDEF 9\n#define SCE_D_STRING 10\n#define SCE_D_STRINGEOL 11\n#define SCE_D_CHARACTER 12\n#define SCE_D_OPERATOR 13\n#define SCE_D_IDENTIFIER 14\n#define SCE_D_COMMENTLINEDOC 15\n#define SCE_D_COMMENTDOCKEYWORD 16\n#define SCE_D_COMMENTDOCKEYWORDERROR 17\n#define SCE_D_STRINGB 18\n#define SCE_D_STRINGR 19\n#define SCE_D_WORD5 20\n#define SCE_D_WORD6 21\n#define SCE_D_WORD7 22\n#define SCE_TCL_DEFAULT 0\n#define SCE_TCL_COMMENT 1\n#define SCE_TCL_COMMENTLINE 2\n#define SCE_TCL_NUMBER 3\n#define SCE_TCL_WORD_IN_QUOTE 4\n#define SCE_TCL_IN_QUOTE 5\n#define SCE_TCL_OPERATOR 6\n#define SCE_TCL_IDENTIFIER 7\n#define SCE_TCL_SUBSTITUTION 8\n#define SCE_TCL_SUB_BRACE 9\n#define SCE_TCL_MODIFIER 10\n#define SCE_TCL_EXPAND 11\n#define SCE_TCL_WORD 12\n#define SCE_TCL_WORD2 13\n#define SCE_TCL_WORD3 14\n#define SCE_TCL_WORD4 15\n#define SCE_TCL_WORD5 16\n#define SCE_TCL_WORD6 17\n#define SCE_TCL_WORD7 18\n#define SCE_TCL_WORD8 19\n#define SCE_TCL_COMMENT_BOX 20\n#define SCE_TCL_BLOCK_COMMENT 21\n#define SCE_H_DEFAULT 0\n#define SCE_H_TAG 1\n#define SCE_H_TAGUNKNOWN 2\n#define SCE_H_ATTRIBUTE 3\n#define SCE_H_ATTRIBUTEUNKNOWN 4\n#define SCE_H_NUMBER 5\n#define SCE_H_DOUBLESTRING 6\n#define SCE_H_SINGLESTRING 7\n#define SCE_H_OTHER 8\n#define SCE_H_COMMENT 9\n#define SCE_H_ENTITY 10\n#define SCE_H_TAGEND 11\n#define SCE_H_XMLSTART 12\n#define SCE_H_XMLEND 13\n#define SCE_H_SCRIPT 14\n#define SCE_H_ASP 15\n#define SCE_H_ASPAT 16\n#define SCE_H_CDATA 17\n#define SCE_H_QUESTION 18\n#define SCE_H_VALUE 19\n#define SCE_H_XCCOMMENT 20\n#define SCE_H_SGML_DEFAULT 21\n#define SCE_H_SGML_COMMAND 22\n#define SCE_H_SGML_1ST_PARAM 23\n#define SCE_H_SGML_DOUBLESTRING 24\n#define SCE_H_SGML_SIMPLESTRING 25\n#define SCE_H_SGML_ERROR 26\n#define SCE_H_SGML_SPECIAL 27\n#define SCE_H_SGML_ENTITY 28\n#define SCE_H_SGML_COMMENT 29\n#define SCE_H_SGML_1ST_PARAM_COMMENT 30\n#define SCE_H_SGML_BLOCK_DEFAULT 31\n#define SCE_HJ_START 40\n#define SCE_HJ_DEFAULT 41\n#define SCE_HJ_COMMENT 42\n#define SCE_HJ_COMMENTLINE 43\n#define SCE_HJ_COMMENTDOC 44\n#define SCE_HJ_NUMBER 45\n#define SCE_HJ_WORD 46\n#define SCE_HJ_KEYWORD 47\n#define SCE_HJ_DOUBLESTRING 48\n#define SCE_HJ_SINGLESTRING 49\n#define SCE_HJ_SYMBOLS 50\n#define SCE_HJ_STRINGEOL 51\n#define SCE_HJ_REGEX 52\n#define SCE_HJA_START 55\n#define SCE_HJA_DEFAULT 56\n#define SCE_HJA_COMMENT 57\n#define SCE_HJA_COMMENTLINE 58\n#define SCE_HJA_COMMENTDOC 59\n#define SCE_HJA_NUMBER 60\n#define SCE_HJA_WORD 61\n#define SCE_HJA_KEYWORD 62\n#define SCE_HJA_DOUBLESTRING 63\n#define SCE_HJA_SINGLESTRING 64\n#define SCE_HJA_SYMBOLS 65\n#define SCE_HJA_STRINGEOL 66\n#define SCE_HJA_REGEX 67\n#define SCE_HB_START 70\n#define SCE_HB_DEFAULT 71\n#define SCE_HB_COMMENTLINE 72\n#define SCE_HB_NUMBER 73\n#define SCE_HB_WORD 74\n#define SCE_HB_STRING 75\n#define SCE_HB_IDENTIFIER 76\n#define SCE_HB_STRINGEOL 77\n#define SCE_HBA_START 80\n#define SCE_HBA_DEFAULT 81\n#define SCE_HBA_COMMENTLINE 82\n#define SCE_HBA_NUMBER 83\n#define SCE_HBA_WORD 84\n#define SCE_HBA_STRING 85\n#define SCE_HBA_IDENTIFIER 86\n#define SCE_HBA_STRINGEOL 87\n#define SCE_HP_START 90\n#define SCE_HP_DEFAULT 91\n#define SCE_HP_COMMENTLINE 92\n#define SCE_HP_NUMBER 93\n#define SCE_HP_STRING 94\n#define SCE_HP_CHARACTER 95\n#define SCE_HP_WORD 96\n#define SCE_HP_TRIPLE 97\n#define SCE_HP_TRIPLEDOUBLE 98\n#define SCE_HP_CLASSNAME 99\n#define SCE_HP_DEFNAME 100\n#define SCE_HP_OPERATOR 101\n#define SCE_HP_IDENTIFIER 102\n#define SCE_HPHP_COMPLEX_VARIABLE 104\n#define SCE_HPA_START 105\n#define SCE_HPA_DEFAULT 106\n#define SCE_HPA_COMMENTLINE 107\n#define SCE_HPA_NUMBER 108\n#define SCE_HPA_STRING 109\n#define SCE_HPA_CHARACTER 110\n#define SCE_HPA_WORD 111\n#define SCE_HPA_TRIPLE 112\n#define SCE_HPA_TRIPLEDOUBLE 113\n#define SCE_HPA_CLASSNAME 114\n#define SCE_HPA_DEFNAME 115\n#define SCE_HPA_OPERATOR 116\n#define SCE_HPA_IDENTIFIER 117\n#define SCE_HPHP_DEFAULT 118\n#define SCE_HPHP_HSTRING 119\n#define SCE_HPHP_SIMPLESTRING 120\n#define SCE_HPHP_WORD 121\n#define SCE_HPHP_NUMBER 122\n#define SCE_HPHP_VARIABLE 123\n#define SCE_HPHP_COMMENT 124\n#define SCE_HPHP_COMMENTLINE 125\n#define SCE_HPHP_HSTRING_VARIABLE 126\n#define SCE_HPHP_OPERATOR 127\n#define SCE_PL_DEFAULT 0\n#define SCE_PL_ERROR 1\n#define SCE_PL_COMMENTLINE 2\n#define SCE_PL_POD 3\n#define SCE_PL_NUMBER 4\n#define SCE_PL_WORD 5\n#define SCE_PL_STRING 6\n#define SCE_PL_CHARACTER 7\n#define SCE_PL_PUNCTUATION 8\n#define SCE_PL_PREPROCESSOR 9\n#define SCE_PL_OPERATOR 10\n#define SCE_PL_IDENTIFIER 11\n#define SCE_PL_SCALAR 12\n#define SCE_PL_ARRAY 13\n#define SCE_PL_HASH 14\n#define SCE_PL_SYMBOLTABLE 15\n#define SCE_PL_VARIABLE_INDEXER 16\n#define SCE_PL_REGEX 17\n#define SCE_PL_REGSUBST 18\n#define SCE_PL_LONGQUOTE 19\n#define SCE_PL_BACKTICKS 20\n#define SCE_PL_DATASECTION 21\n#define SCE_PL_HERE_DELIM 22\n#define SCE_PL_HERE_Q 23\n#define SCE_PL_HERE_QQ 24\n#define SCE_PL_HERE_QX 25\n#define SCE_PL_STRING_Q 26\n#define SCE_PL_STRING_QQ 27\n#define SCE_PL_STRING_QX 28\n#define SCE_PL_STRING_QR 29\n#define SCE_PL_STRING_QW 30\n#define SCE_PL_POD_VERB 31\n#define SCE_PL_SUB_PROTOTYPE 40\n#define SCE_PL_FORMAT_IDENT 41\n#define SCE_PL_FORMAT 42\n#define SCE_PL_STRING_VAR 43\n#define SCE_PL_XLAT 44\n#define SCE_PL_REGEX_VAR 54\n#define SCE_PL_REGSUBST_VAR 55\n#define SCE_PL_BACKTICKS_VAR 57\n#define SCE_PL_HERE_QQ_VAR 61\n#define SCE_PL_HERE_QX_VAR 62\n#define SCE_PL_STRING_QQ_VAR 64\n#define SCE_PL_STRING_QX_VAR 65\n#define SCE_PL_STRING_QR_VAR 66\n#define SCE_RB_DEFAULT 0\n#define SCE_RB_ERROR 1\n#define SCE_RB_COMMENTLINE 2\n#define SCE_RB_POD 3\n#define SCE_RB_NUMBER 4\n#define SCE_RB_WORD 5\n#define SCE_RB_STRING 6\n#define SCE_RB_CHARACTER 7\n#define SCE_RB_CLASSNAME 8\n#define SCE_RB_DEFNAME 9\n#define SCE_RB_OPERATOR 10\n#define SCE_RB_IDENTIFIER 11\n#define SCE_RB_REGEX 12\n#define SCE_RB_GLOBAL 13\n#define SCE_RB_SYMBOL 14\n#define SCE_RB_MODULE_NAME 15\n#define SCE_RB_INSTANCE_VAR 16\n#define SCE_RB_CLASS_VAR 17\n#define SCE_RB_BACKTICKS 18\n#define SCE_RB_DATASECTION 19\n#define SCE_RB_HERE_DELIM 20\n#define SCE_RB_HERE_Q 21\n#define SCE_RB_HERE_QQ 22\n#define SCE_RB_HERE_QX 23\n#define SCE_RB_STRING_Q 24\n#define SCE_RB_STRING_QQ 25\n#define SCE_RB_STRING_QX 26\n#define SCE_RB_STRING_QR 27\n#define SCE_RB_STRING_QW 28\n#define SCE_RB_WORD_DEMOTED 29\n#define SCE_RB_STDIN 30\n#define SCE_RB_STDOUT 31\n#define SCE_RB_STDERR 40\n#define SCE_RB_UPPER_BOUND 41\n#define SCE_B_DEFAULT 0\n#define SCE_B_COMMENT 1\n#define SCE_B_NUMBER 2\n#define SCE_B_KEYWORD 3\n#define SCE_B_STRING 4\n#define SCE_B_PREPROCESSOR 5\n#define SCE_B_OPERATOR 6\n#define SCE_B_IDENTIFIER 7\n#define SCE_B_DATE 8\n#define SCE_B_STRINGEOL 9\n#define SCE_B_KEYWORD2 10\n#define SCE_B_KEYWORD3 11\n#define SCE_B_KEYWORD4 12\n#define SCE_B_CONSTANT 13\n#define SCE_B_ASM 14\n#define SCE_B_LABEL 15\n#define SCE_B_ERROR 16\n#define SCE_B_HEXNUMBER 17\n#define SCE_B_BINNUMBER 18\n#define SCE_B_COMMENTBLOCK 19\n#define SCE_B_DOCLINE 20\n#define SCE_B_DOCBLOCK 21\n#define SCE_B_DOCKEYWORD 22\n#define SCE_PROPS_DEFAULT 0\n#define SCE_PROPS_COMMENT 1\n#define SCE_PROPS_SECTION 2\n#define SCE_PROPS_ASSIGNMENT 3\n#define SCE_PROPS_DEFVAL 4\n#define SCE_PROPS_KEY 5\n#define SCE_L_DEFAULT 0\n#define SCE_L_COMMAND 1\n#define SCE_L_TAG 2\n#define SCE_L_MATH 3\n#define SCE_L_COMMENT 4\n#define SCE_L_TAG2 5\n#define SCE_L_MATH2 6\n#define SCE_L_COMMENT2 7\n#define SCE_L_VERBATIM 8\n#define SCE_L_SHORTCMD 9\n#define SCE_L_SPECIAL 10\n#define SCE_L_CMDOPT 11\n#define SCE_L_ERROR 12\n#define SCE_LUA_DEFAULT 0\n#define SCE_LUA_COMMENT 1\n#define SCE_LUA_COMMENTLINE 2\n#define SCE_LUA_COMMENTDOC 3\n#define SCE_LUA_NUMBER 4\n#define SCE_LUA_WORD 5\n#define SCE_LUA_STRING 6\n#define SCE_LUA_CHARACTER 7\n#define SCE_LUA_LITERALSTRING 8\n#define SCE_LUA_PREPROCESSOR 9\n#define SCE_LUA_OPERATOR 10\n#define SCE_LUA_IDENTIFIER 11\n#define SCE_LUA_STRINGEOL 12\n#define SCE_LUA_WORD2 13\n#define SCE_LUA_WORD3 14\n#define SCE_LUA_WORD4 15\n#define SCE_LUA_WORD5 16\n#define SCE_LUA_WORD6 17\n#define SCE_LUA_WORD7 18\n#define SCE_LUA_WORD8 19\n#define SCE_LUA_LABEL 20\n#define SCE_ERR_DEFAULT 0\n#define SCE_ERR_PYTHON 1\n#define SCE_ERR_GCC 2\n#define SCE_ERR_MS 3\n#define SCE_ERR_CMD 4\n#define SCE_ERR_BORLAND 5\n#define SCE_ERR_PERL 6\n#define SCE_ERR_NET 7\n#define SCE_ERR_LUA 8\n#define SCE_ERR_CTAG 9\n#define SCE_ERR_DIFF_CHANGED 10\n#define SCE_ERR_DIFF_ADDITION 11\n#define SCE_ERR_DIFF_DELETION 12\n#define SCE_ERR_DIFF_MESSAGE 13\n#define SCE_ERR_PHP 14\n#define SCE_ERR_ELF 15\n#define SCE_ERR_IFC 16\n#define SCE_ERR_IFORT 17\n#define SCE_ERR_ABSF 18\n#define SCE_ERR_TIDY 19\n#define SCE_ERR_JAVA_STACK 20\n#define SCE_ERR_VALUE 21\n#define SCE_ERR_GCC_INCLUDED_FROM 22\n#define SCE_ERR_ESCSEQ 23\n#define SCE_ERR_ESCSEQ_UNKNOWN 24\n#define SCE_ERR_ES_BLACK 40\n#define SCE_ERR_ES_RED 41\n#define SCE_ERR_ES_GREEN 42\n#define SCE_ERR_ES_BROWN 43\n#define SCE_ERR_ES_BLUE 44\n#define SCE_ERR_ES_MAGENTA 45\n#define SCE_ERR_ES_CYAN 46\n#define SCE_ERR_ES_GRAY 47\n#define SCE_ERR_ES_DARK_GRAY 48\n#define SCE_ERR_ES_BRIGHT_RED 49\n#define SCE_ERR_ES_BRIGHT_GREEN 50\n#define SCE_ERR_ES_YELLOW 51\n#define SCE_ERR_ES_BRIGHT_BLUE 52\n#define SCE_ERR_ES_BRIGHT_MAGENTA 53\n#define SCE_ERR_ES_BRIGHT_CYAN 54\n#define SCE_ERR_ES_WHITE 55\n#define SCE_BAT_DEFAULT 0\n#define SCE_BAT_COMMENT 1\n#define SCE_BAT_WORD 2\n#define SCE_BAT_LABEL 3\n#define SCE_BAT_HIDE 4\n#define SCE_BAT_COMMAND 5\n#define SCE_BAT_IDENTIFIER 6\n#define SCE_BAT_OPERATOR 7\n#define SCE_TCMD_DEFAULT 0\n#define SCE_TCMD_COMMENT 1\n#define SCE_TCMD_WORD 2\n#define SCE_TCMD_LABEL 3\n#define SCE_TCMD_HIDE 4\n#define SCE_TCMD_COMMAND 5\n#define SCE_TCMD_IDENTIFIER 6\n#define SCE_TCMD_OPERATOR 7\n#define SCE_TCMD_ENVIRONMENT 8\n#define SCE_TCMD_EXPANSION 9\n#define SCE_TCMD_CLABEL 10\n#define SCE_MAKE_DEFAULT 0\n#define SCE_MAKE_COMMENT 1\n#define SCE_MAKE_PREPROCESSOR 2\n#define SCE_MAKE_IDENTIFIER 3\n#define SCE_MAKE_OPERATOR 4\n#define SCE_MAKE_TARGET 5\n#define SCE_MAKE_IDEOL 9\n#define SCE_DIFF_DEFAULT 0\n#define SCE_DIFF_COMMENT 1\n#define SCE_DIFF_COMMAND 2\n#define SCE_DIFF_HEADER 3\n#define SCE_DIFF_POSITION 4\n#define SCE_DIFF_DELETED 5\n#define SCE_DIFF_ADDED 6\n#define SCE_DIFF_CHANGED 7\n#define SCE_CONF_DEFAULT 0\n#define SCE_CONF_COMMENT 1\n#define SCE_CONF_NUMBER 2\n#define SCE_CONF_IDENTIFIER 3\n#define SCE_CONF_EXTENSION 4\n#define SCE_CONF_PARAMETER 5\n#define SCE_CONF_STRING 6\n#define SCE_CONF_OPERATOR 7\n#define SCE_CONF_IP 8\n#define SCE_CONF_DIRECTIVE 9\n#define SCE_AVE_DEFAULT 0\n#define SCE_AVE_COMMENT 1\n#define SCE_AVE_NUMBER 2\n#define SCE_AVE_WORD 3\n#define SCE_AVE_STRING 6\n#define SCE_AVE_ENUM 7\n#define SCE_AVE_STRINGEOL 8\n#define SCE_AVE_IDENTIFIER 9\n#define SCE_AVE_OPERATOR 10\n#define SCE_AVE_WORD1 11\n#define SCE_AVE_WORD2 12\n#define SCE_AVE_WORD3 13\n#define SCE_AVE_WORD4 14\n#define SCE_AVE_WORD5 15\n#define SCE_AVE_WORD6 16\n#define SCE_ADA_DEFAULT 0\n#define SCE_ADA_WORD 1\n#define SCE_ADA_IDENTIFIER 2\n#define SCE_ADA_NUMBER 3\n#define SCE_ADA_DELIMITER 4\n#define SCE_ADA_CHARACTER 5\n#define SCE_ADA_CHARACTEREOL 6\n#define SCE_ADA_STRING 7\n#define SCE_ADA_STRINGEOL 8\n#define SCE_ADA_LABEL 9\n#define SCE_ADA_COMMENTLINE 10\n#define SCE_ADA_ILLEGAL 11\n#define SCE_BAAN_DEFAULT 0\n#define SCE_BAAN_COMMENT 1\n#define SCE_BAAN_COMMENTDOC 2\n#define SCE_BAAN_NUMBER 3\n#define SCE_BAAN_WORD 4\n#define SCE_BAAN_STRING 5\n#define SCE_BAAN_PREPROCESSOR 6\n#define SCE_BAAN_OPERATOR 7\n#define SCE_BAAN_IDENTIFIER 8\n#define SCE_BAAN_STRINGEOL 9\n#define SCE_BAAN_WORD2 10\n#define SCE_BAAN_WORD3 11\n#define SCE_BAAN_WORD4 12\n#define SCE_BAAN_WORD5 13\n#define SCE_BAAN_WORD6 14\n#define SCE_BAAN_WORD7 15\n#define SCE_BAAN_WORD8 16\n#define SCE_BAAN_WORD9 17\n#define SCE_BAAN_TABLEDEF 18\n#define SCE_BAAN_TABLESQL 19\n#define SCE_BAAN_FUNCTION 20\n#define SCE_BAAN_DOMDEF 21\n#define SCE_BAAN_FUNCDEF 22\n#define SCE_BAAN_OBJECTDEF 23\n#define SCE_BAAN_DEFINEDEF 24\n#define SCE_LISP_DEFAULT 0\n#define SCE_LISP_COMMENT 1\n#define SCE_LISP_NUMBER 2\n#define SCE_LISP_KEYWORD 3\n#define SCE_LISP_KEYWORD_KW 4\n#define SCE_LISP_SYMBOL 5\n#define SCE_LISP_STRING 6\n#define SCE_LISP_STRINGEOL 8\n#define SCE_LISP_IDENTIFIER 9\n#define SCE_LISP_OPERATOR 10\n#define SCE_LISP_SPECIAL 11\n#define SCE_LISP_MULTI_COMMENT 12\n#define SCE_EIFFEL_DEFAULT 0\n#define SCE_EIFFEL_COMMENTLINE 1\n#define SCE_EIFFEL_NUMBER 2\n#define SCE_EIFFEL_WORD 3\n#define SCE_EIFFEL_STRING 4\n#define SCE_EIFFEL_CHARACTER 5\n#define SCE_EIFFEL_OPERATOR 6\n#define SCE_EIFFEL_IDENTIFIER 7\n#define SCE_EIFFEL_STRINGEOL 8\n#define SCE_NNCRONTAB_DEFAULT 0\n#define SCE_NNCRONTAB_COMMENT 1\n#define SCE_NNCRONTAB_TASK 2\n#define SCE_NNCRONTAB_SECTION 3\n#define SCE_NNCRONTAB_KEYWORD 4\n#define SCE_NNCRONTAB_MODIFIER 5\n#define SCE_NNCRONTAB_ASTERISK 6\n#define SCE_NNCRONTAB_NUMBER 7\n#define SCE_NNCRONTAB_STRING 8\n#define SCE_NNCRONTAB_ENVIRONMENT 9\n#define SCE_NNCRONTAB_IDENTIFIER 10\n#define SCE_FORTH_DEFAULT 0\n#define SCE_FORTH_COMMENT 1\n#define SCE_FORTH_COMMENT_ML 2\n#define SCE_FORTH_IDENTIFIER 3\n#define SCE_FORTH_CONTROL 4\n#define SCE_FORTH_KEYWORD 5\n#define SCE_FORTH_DEFWORD 6\n#define SCE_FORTH_PREWORD1 7\n#define SCE_FORTH_PREWORD2 8\n#define SCE_FORTH_NUMBER 9\n#define SCE_FORTH_STRING 10\n#define SCE_FORTH_LOCALE 11\n#define SCE_MATLAB_DEFAULT 0\n#define SCE_MATLAB_COMMENT 1\n#define SCE_MATLAB_COMMAND 2\n#define SCE_MATLAB_NUMBER 3\n#define SCE_MATLAB_KEYWORD 4\n#define SCE_MATLAB_STRING 5\n#define SCE_MATLAB_OPERATOR 6\n#define SCE_MATLAB_IDENTIFIER 7\n#define SCE_MATLAB_DOUBLEQUOTESTRING 8\n#define SCE_SCRIPTOL_DEFAULT 0\n#define SCE_SCRIPTOL_WHITE 1\n#define SCE_SCRIPTOL_COMMENTLINE 2\n#define SCE_SCRIPTOL_PERSISTENT 3\n#define SCE_SCRIPTOL_CSTYLE 4\n#define SCE_SCRIPTOL_COMMENTBLOCK 5\n#define SCE_SCRIPTOL_NUMBER 6\n#define SCE_SCRIPTOL_STRING 7\n#define SCE_SCRIPTOL_CHARACTER 8\n#define SCE_SCRIPTOL_STRINGEOL 9\n#define SCE_SCRIPTOL_KEYWORD 10\n#define SCE_SCRIPTOL_OPERATOR 11\n#define SCE_SCRIPTOL_IDENTIFIER 12\n#define SCE_SCRIPTOL_TRIPLE 13\n#define SCE_SCRIPTOL_CLASSNAME 14\n#define SCE_SCRIPTOL_PREPROCESSOR 15\n#define SCE_ASM_DEFAULT 0\n#define SCE_ASM_COMMENT 1\n#define SCE_ASM_NUMBER 2\n#define SCE_ASM_STRING 3\n#define SCE_ASM_OPERATOR 4\n#define SCE_ASM_IDENTIFIER 5\n#define SCE_ASM_CPUINSTRUCTION 6\n#define SCE_ASM_MATHINSTRUCTION 7\n#define SCE_ASM_REGISTER 8\n#define SCE_ASM_DIRECTIVE 9\n#define SCE_ASM_DIRECTIVEOPERAND 10\n#define SCE_ASM_COMMENTBLOCK 11\n#define SCE_ASM_CHARACTER 12\n#define SCE_ASM_STRINGEOL 13\n#define SCE_ASM_EXTINSTRUCTION 14\n#define SCE_ASM_COMMENTDIRECTIVE 15\n#define SCE_F_DEFAULT 0\n#define SCE_F_COMMENT 1\n#define SCE_F_NUMBER 2\n#define SCE_F_STRING1 3\n#define SCE_F_STRING2 4\n#define SCE_F_STRINGEOL 5\n#define SCE_F_OPERATOR 6\n#define SCE_F_IDENTIFIER 7\n#define SCE_F_WORD 8\n#define SCE_F_WORD2 9\n#define SCE_F_WORD3 10\n#define SCE_F_PREPROCESSOR 11\n#define SCE_F_OPERATOR2 12\n#define SCE_F_LABEL 13\n#define SCE_F_CONTINUATION 14\n#define SCE_CSS_DEFAULT 0\n#define SCE_CSS_TAG 1\n#define SCE_CSS_CLASS 2\n#define SCE_CSS_PSEUDOCLASS 3\n#define SCE_CSS_UNKNOWN_PSEUDOCLASS 4\n#define SCE_CSS_OPERATOR 5\n#define SCE_CSS_IDENTIFIER 6\n#define SCE_CSS_UNKNOWN_IDENTIFIER 7\n#define SCE_CSS_VALUE 8\n#define SCE_CSS_COMMENT 9\n#define SCE_CSS_ID 10\n#define SCE_CSS_IMPORTANT 11\n#define SCE_CSS_DIRECTIVE 12\n#define SCE_CSS_DOUBLESTRING 13\n#define SCE_CSS_SINGLESTRING 14\n#define SCE_CSS_IDENTIFIER2 15\n#define SCE_CSS_ATTRIBUTE 16\n#define SCE_CSS_IDENTIFIER3 17\n#define SCE_CSS_PSEUDOELEMENT 18\n#define SCE_CSS_EXTENDED_IDENTIFIER 19\n#define SCE_CSS_EXTENDED_PSEUDOCLASS 20\n#define SCE_CSS_EXTENDED_PSEUDOELEMENT 21\n#define SCE_CSS_MEDIA 22\n#define SCE_CSS_VARIABLE 23\n#define SCE_POV_DEFAULT 0\n#define SCE_POV_COMMENT 1\n#define SCE_POV_COMMENTLINE 2\n#define SCE_POV_NUMBER 3\n#define SCE_POV_OPERATOR 4\n#define SCE_POV_IDENTIFIER 5\n#define SCE_POV_STRING 6\n#define SCE_POV_STRINGEOL 7\n#define SCE_POV_DIRECTIVE 8\n#define SCE_POV_BADDIRECTIVE 9\n#define SCE_POV_WORD2 10\n#define SCE_POV_WORD3 11\n#define SCE_POV_WORD4 12\n#define SCE_POV_WORD5 13\n#define SCE_POV_WORD6 14\n#define SCE_POV_WORD7 15\n#define SCE_POV_WORD8 16\n#define SCE_LOUT_DEFAULT 0\n#define SCE_LOUT_COMMENT 1\n#define SCE_LOUT_NUMBER 2\n#define SCE_LOUT_WORD 3\n#define SCE_LOUT_WORD2 4\n#define SCE_LOUT_WORD3 5\n#define SCE_LOUT_WORD4 6\n#define SCE_LOUT_STRING 7\n#define SCE_LOUT_OPERATOR 8\n#define SCE_LOUT_IDENTIFIER 9\n#define SCE_LOUT_STRINGEOL 10\n#define SCE_ESCRIPT_DEFAULT 0\n#define SCE_ESCRIPT_COMMENT 1\n#define SCE_ESCRIPT_COMMENTLINE 2\n#define SCE_ESCRIPT_COMMENTDOC 3\n#define SCE_ESCRIPT_NUMBER 4\n#define SCE_ESCRIPT_WORD 5\n#define SCE_ESCRIPT_STRING 6\n#define SCE_ESCRIPT_OPERATOR 7\n#define SCE_ESCRIPT_IDENTIFIER 8\n#define SCE_ESCRIPT_BRACE 9\n#define SCE_ESCRIPT_WORD2 10\n#define SCE_ESCRIPT_WORD3 11\n#define SCE_PS_DEFAULT 0\n#define SCE_PS_COMMENT 1\n#define SCE_PS_DSC_COMMENT 2\n#define SCE_PS_DSC_VALUE 3\n#define SCE_PS_NUMBER 4\n#define SCE_PS_NAME 5\n#define SCE_PS_KEYWORD 6\n#define SCE_PS_LITERAL 7\n#define SCE_PS_IMMEVAL 8\n#define SCE_PS_PAREN_ARRAY 9\n#define SCE_PS_PAREN_DICT 10\n#define SCE_PS_PAREN_PROC 11\n#define SCE_PS_TEXT 12\n#define SCE_PS_HEXSTRING 13\n#define SCE_PS_BASE85STRING 14\n#define SCE_PS_BADSTRINGCHAR 15\n#define SCE_NSIS_DEFAULT 0\n#define SCE_NSIS_COMMENT 1\n#define SCE_NSIS_STRINGDQ 2\n#define SCE_NSIS_STRINGLQ 3\n#define SCE_NSIS_STRINGRQ 4\n#define SCE_NSIS_FUNCTION 5\n#define SCE_NSIS_VARIABLE 6\n#define SCE_NSIS_LABEL 7\n#define SCE_NSIS_USERDEFINED 8\n#define SCE_NSIS_SECTIONDEF 9\n#define SCE_NSIS_SUBSECTIONDEF 10\n#define SCE_NSIS_IFDEFINEDEF 11\n#define SCE_NSIS_MACRODEF 12\n#define SCE_NSIS_STRINGVAR 13\n#define SCE_NSIS_NUMBER 14\n#define SCE_NSIS_SECTIONGROUP 15\n#define SCE_NSIS_PAGEEX 16\n#define SCE_NSIS_FUNCTIONDEF 17\n#define SCE_NSIS_COMMENTBOX 18\n#define SCE_MMIXAL_LEADWS 0\n#define SCE_MMIXAL_COMMENT 1\n#define SCE_MMIXAL_LABEL 2\n#define SCE_MMIXAL_OPCODE 3\n#define SCE_MMIXAL_OPCODE_PRE 4\n#define SCE_MMIXAL_OPCODE_VALID 5\n#define SCE_MMIXAL_OPCODE_UNKNOWN 6\n#define SCE_MMIXAL_OPCODE_POST 7\n#define SCE_MMIXAL_OPERANDS 8\n#define SCE_MMIXAL_NUMBER 9\n#define SCE_MMIXAL_REF 10\n#define SCE_MMIXAL_CHAR 11\n#define SCE_MMIXAL_STRING 12\n#define SCE_MMIXAL_REGISTER 13\n#define SCE_MMIXAL_HEX 14\n#define SCE_MMIXAL_OPERATOR 15\n#define SCE_MMIXAL_SYMBOL 16\n#define SCE_MMIXAL_INCLUDE 17\n#define SCE_CLW_DEFAULT 0\n#define SCE_CLW_LABEL 1\n#define SCE_CLW_COMMENT 2\n#define SCE_CLW_STRING 3\n#define SCE_CLW_USER_IDENTIFIER 4\n#define SCE_CLW_INTEGER_CONSTANT 5\n#define SCE_CLW_REAL_CONSTANT 6\n#define SCE_CLW_PICTURE_STRING 7\n#define SCE_CLW_KEYWORD 8\n#define SCE_CLW_COMPILER_DIRECTIVE 9\n#define SCE_CLW_RUNTIME_EXPRESSIONS 10\n#define SCE_CLW_BUILTIN_PROCEDURES_FUNCTION 11\n#define SCE_CLW_STRUCTURE_DATA_TYPE 12\n#define SCE_CLW_ATTRIBUTE 13\n#define SCE_CLW_STANDARD_EQUATE 14\n#define SCE_CLW_ERROR 15\n#define SCE_CLW_DEPRECATED 16\n#define SCE_LOT_DEFAULT 0\n#define SCE_LOT_HEADER 1\n#define SCE_LOT_BREAK 2\n#define SCE_LOT_SET 3\n#define SCE_LOT_PASS 4\n#define SCE_LOT_FAIL 5\n#define SCE_LOT_ABORT 6\n#define SCE_YAML_DEFAULT 0\n#define SCE_YAML_COMMENT 1\n#define SCE_YAML_IDENTIFIER 2\n#define SCE_YAML_KEYWORD 3\n#define SCE_YAML_NUMBER 4\n#define SCE_YAML_REFERENCE 5\n#define SCE_YAML_DOCUMENT 6\n#define SCE_YAML_TEXT 7\n#define SCE_YAML_ERROR 8\n#define SCE_YAML_OPERATOR 9\n#define SCE_TEX_DEFAULT 0\n#define SCE_TEX_SPECIAL 1\n#define SCE_TEX_GROUP 2\n#define SCE_TEX_SYMBOL 3\n#define SCE_TEX_COMMAND 4\n#define SCE_TEX_TEXT 5\n#define SCE_METAPOST_DEFAULT 0\n#define SCE_METAPOST_SPECIAL 1\n#define SCE_METAPOST_GROUP 2\n#define SCE_METAPOST_SYMBOL 3\n#define SCE_METAPOST_COMMAND 4\n#define SCE_METAPOST_TEXT 5\n#define SCE_METAPOST_EXTRA 6\n#define SCE_ERLANG_DEFAULT 0\n#define SCE_ERLANG_COMMENT 1\n#define SCE_ERLANG_VARIABLE 2\n#define SCE_ERLANG_NUMBER 3\n#define SCE_ERLANG_KEYWORD 4\n#define SCE_ERLANG_STRING 5\n#define SCE_ERLANG_OPERATOR 6\n#define SCE_ERLANG_ATOM 7\n#define SCE_ERLANG_FUNCTION_NAME 8\n#define SCE_ERLANG_CHARACTER 9\n#define SCE_ERLANG_MACRO 10\n#define SCE_ERLANG_RECORD 11\n#define SCE_ERLANG_PREPROC 12\n#define SCE_ERLANG_NODE_NAME 13\n#define SCE_ERLANG_COMMENT_FUNCTION 14\n#define SCE_ERLANG_COMMENT_MODULE 15\n#define SCE_ERLANG_COMMENT_DOC 16\n#define SCE_ERLANG_COMMENT_DOC_MACRO 17\n#define SCE_ERLANG_ATOM_QUOTED 18\n#define SCE_ERLANG_MACRO_QUOTED 19\n#define SCE_ERLANG_RECORD_QUOTED 20\n#define SCE_ERLANG_NODE_NAME_QUOTED 21\n#define SCE_ERLANG_BIFS 22\n#define SCE_ERLANG_MODULES 23\n#define SCE_ERLANG_MODULES_ATT 24\n#define SCE_ERLANG_UNKNOWN 31\n#define SCE_MSSQL_DEFAULT 0\n#define SCE_MSSQL_COMMENT 1\n#define SCE_MSSQL_LINE_COMMENT 2\n#define SCE_MSSQL_NUMBER 3\n#define SCE_MSSQL_STRING 4\n#define SCE_MSSQL_OPERATOR 5\n#define SCE_MSSQL_IDENTIFIER 6\n#define SCE_MSSQL_VARIABLE 7\n#define SCE_MSSQL_COLUMN_NAME 8\n#define SCE_MSSQL_STATEMENT 9\n#define SCE_MSSQL_DATATYPE 10\n#define SCE_MSSQL_SYSTABLE 11\n#define SCE_MSSQL_GLOBAL_VARIABLE 12\n#define SCE_MSSQL_FUNCTION 13\n#define SCE_MSSQL_STORED_PROCEDURE 14\n#define SCE_MSSQL_DEFAULT_PREF_DATATYPE 15\n#define SCE_MSSQL_COLUMN_NAME_2 16\n#define SCE_V_DEFAULT 0\n#define SCE_V_COMMENT 1\n#define SCE_V_COMMENTLINE 2\n#define SCE_V_COMMENTLINEBANG 3\n#define SCE_V_NUMBER 4\n#define SCE_V_WORD 5\n#define SCE_V_STRING 6\n#define SCE_V_WORD2 7\n#define SCE_V_WORD3 8\n#define SCE_V_PREPROCESSOR 9\n#define SCE_V_OPERATOR 10\n#define SCE_V_IDENTIFIER 11\n#define SCE_V_STRINGEOL 12\n#define SCE_V_USER 19\n#define SCE_V_COMMENT_WORD 20\n#define SCE_V_INPUT 21\n#define SCE_V_OUTPUT 22\n#define SCE_V_INOUT 23\n#define SCE_V_PORT_CONNECT 24\n#define SCE_KIX_DEFAULT 0\n#define SCE_KIX_COMMENT 1\n#define SCE_KIX_STRING1 2\n#define SCE_KIX_STRING2 3\n#define SCE_KIX_NUMBER 4\n#define SCE_KIX_VAR 5\n#define SCE_KIX_MACRO 6\n#define SCE_KIX_KEYWORD 7\n#define SCE_KIX_FUNCTIONS 8\n#define SCE_KIX_OPERATOR 9\n#define SCE_KIX_COMMENTSTREAM 10\n#define SCE_KIX_IDENTIFIER 31\n#define SCE_GC_DEFAULT 0\n#define SCE_GC_COMMENTLINE 1\n#define SCE_GC_COMMENTBLOCK 2\n#define SCE_GC_GLOBAL 3\n#define SCE_GC_EVENT 4\n#define SCE_GC_ATTRIBUTE 5\n#define SCE_GC_CONTROL 6\n#define SCE_GC_COMMAND 7\n#define SCE_GC_STRING 8\n#define SCE_GC_OPERATOR 9\n#define SCE_SN_DEFAULT 0\n#define SCE_SN_CODE 1\n#define SCE_SN_COMMENTLINE 2\n#define SCE_SN_COMMENTLINEBANG 3\n#define SCE_SN_NUMBER 4\n#define SCE_SN_WORD 5\n#define SCE_SN_STRING 6\n#define SCE_SN_WORD2 7\n#define SCE_SN_WORD3 8\n#define SCE_SN_PREPROCESSOR 9\n#define SCE_SN_OPERATOR 10\n#define SCE_SN_IDENTIFIER 11\n#define SCE_SN_STRINGEOL 12\n#define SCE_SN_REGEXTAG 13\n#define SCE_SN_SIGNAL 14\n#define SCE_SN_USER 19\n#define SCE_AU3_DEFAULT 0\n#define SCE_AU3_COMMENT 1\n#define SCE_AU3_COMMENTBLOCK 2\n#define SCE_AU3_NUMBER 3\n#define SCE_AU3_FUNCTION 4\n#define SCE_AU3_KEYWORD 5\n#define SCE_AU3_MACRO 6\n#define SCE_AU3_STRING 7\n#define SCE_AU3_OPERATOR 8\n#define SCE_AU3_VARIABLE 9\n#define SCE_AU3_SENT 10\n#define SCE_AU3_PREPROCESSOR 11\n#define SCE_AU3_SPECIAL 12\n#define SCE_AU3_EXPAND 13\n#define SCE_AU3_COMOBJ 14\n#define SCE_AU3_UDF 15\n#define SCE_APDL_DEFAULT 0\n#define SCE_APDL_COMMENT 1\n#define SCE_APDL_COMMENTBLOCK 2\n#define SCE_APDL_NUMBER 3\n#define SCE_APDL_STRING 4\n#define SCE_APDL_OPERATOR 5\n#define SCE_APDL_WORD 6\n#define SCE_APDL_PROCESSOR 7\n#define SCE_APDL_COMMAND 8\n#define SCE_APDL_SLASHCOMMAND 9\n#define SCE_APDL_STARCOMMAND 10\n#define SCE_APDL_ARGUMENT 11\n#define SCE_APDL_FUNCTION 12\n#define SCE_SH_DEFAULT 0\n#define SCE_SH_ERROR 1\n#define SCE_SH_COMMENTLINE 2\n#define SCE_SH_NUMBER 3\n#define SCE_SH_WORD 4\n#define SCE_SH_STRING 5\n#define SCE_SH_CHARACTER 6\n#define SCE_SH_OPERATOR 7\n#define SCE_SH_IDENTIFIER 8\n#define SCE_SH_SCALAR 9\n#define SCE_SH_PARAM 10\n#define SCE_SH_BACKTICKS 11\n#define SCE_SH_HERE_DELIM 12\n#define SCE_SH_HERE_Q 13\n#define SCE_ASN1_DEFAULT 0\n#define SCE_ASN1_COMMENT 1\n#define SCE_ASN1_IDENTIFIER 2\n#define SCE_ASN1_STRING 3\n#define SCE_ASN1_OID 4\n#define SCE_ASN1_SCALAR 5\n#define SCE_ASN1_KEYWORD 6\n#define SCE_ASN1_ATTRIBUTE 7\n#define SCE_ASN1_DESCRIPTOR 8\n#define SCE_ASN1_TYPE 9\n#define SCE_ASN1_OPERATOR 10\n#define SCE_VHDL_DEFAULT 0\n#define SCE_VHDL_COMMENT 1\n#define SCE_VHDL_COMMENTLINEBANG 2\n#define SCE_VHDL_NUMBER 3\n#define SCE_VHDL_STRING 4\n#define SCE_VHDL_OPERATOR 5\n#define SCE_VHDL_IDENTIFIER 6\n#define SCE_VHDL_STRINGEOL 7\n#define SCE_VHDL_KEYWORD 8\n#define SCE_VHDL_STDOPERATOR 9\n#define SCE_VHDL_ATTRIBUTE 10\n#define SCE_VHDL_STDFUNCTION 11\n#define SCE_VHDL_STDPACKAGE 12\n#define SCE_VHDL_STDTYPE 13\n#define SCE_VHDL_USERWORD 14\n#define SCE_VHDL_BLOCK_COMMENT 15\n#define SCE_CAML_DEFAULT 0\n#define SCE_CAML_IDENTIFIER 1\n#define SCE_CAML_TAGNAME 2\n#define SCE_CAML_KEYWORD 3\n#define SCE_CAML_KEYWORD2 4\n#define SCE_CAML_KEYWORD3 5\n#define SCE_CAML_LINENUM 6\n#define SCE_CAML_OPERATOR 7\n#define SCE_CAML_NUMBER 8\n#define SCE_CAML_CHAR 9\n#define SCE_CAML_WHITE 10\n#define SCE_CAML_STRING 11\n#define SCE_CAML_COMMENT 12\n#define SCE_CAML_COMMENT1 13\n#define SCE_CAML_COMMENT2 14\n#define SCE_CAML_COMMENT3 15\n#define SCE_HA_DEFAULT 0\n#define SCE_HA_IDENTIFIER 1\n#define SCE_HA_KEYWORD 2\n#define SCE_HA_NUMBER 3\n#define SCE_HA_STRING 4\n#define SCE_HA_CHARACTER 5\n#define SCE_HA_CLASS 6\n#define SCE_HA_MODULE 7\n#define SCE_HA_CAPITAL 8\n#define SCE_HA_DATA 9\n#define SCE_HA_IMPORT 10\n#define SCE_HA_OPERATOR 11\n#define SCE_HA_INSTANCE 12\n#define SCE_HA_COMMENTLINE 13\n#define SCE_HA_COMMENTBLOCK 14\n#define SCE_HA_COMMENTBLOCK2 15\n#define SCE_HA_COMMENTBLOCK3 16\n#define SCE_HA_PRAGMA 17\n#define SCE_HA_PREPROCESSOR 18\n#define SCE_HA_STRINGEOL 19\n#define SCE_HA_RESERVED_OPERATOR 20\n#define SCE_HA_LITERATE_COMMENT 21\n#define SCE_HA_LITERATE_CODEDELIM 22\n#define SCE_T3_DEFAULT 0\n#define SCE_T3_X_DEFAULT 1\n#define SCE_T3_PREPROCESSOR 2\n#define SCE_T3_BLOCK_COMMENT 3\n#define SCE_T3_LINE_COMMENT 4\n#define SCE_T3_OPERATOR 5\n#define SCE_T3_KEYWORD 6\n#define SCE_T3_NUMBER 7\n#define SCE_T3_IDENTIFIER 8\n#define SCE_T3_S_STRING 9\n#define SCE_T3_D_STRING 10\n#define SCE_T3_X_STRING 11\n#define SCE_T3_LIB_DIRECTIVE 12\n#define SCE_T3_MSG_PARAM 13\n#define SCE_T3_HTML_TAG 14\n#define SCE_T3_HTML_DEFAULT 15\n#define SCE_T3_HTML_STRING 16\n#define SCE_T3_USER1 17\n#define SCE_T3_USER2 18\n#define SCE_T3_USER3 19\n#define SCE_T3_BRACE 20\n#define SCE_REBOL_DEFAULT 0\n#define SCE_REBOL_COMMENTLINE 1\n#define SCE_REBOL_COMMENTBLOCK 2\n#define SCE_REBOL_PREFACE 3\n#define SCE_REBOL_OPERATOR 4\n#define SCE_REBOL_CHARACTER 5\n#define SCE_REBOL_QUOTEDSTRING 6\n#define SCE_REBOL_BRACEDSTRING 7\n#define SCE_REBOL_NUMBER 8\n#define SCE_REBOL_PAIR 9\n#define SCE_REBOL_TUPLE 10\n#define SCE_REBOL_BINARY 11\n#define SCE_REBOL_MONEY 12\n#define SCE_REBOL_ISSUE 13\n#define SCE_REBOL_TAG 14\n#define SCE_REBOL_FILE 15\n#define SCE_REBOL_EMAIL 16\n#define SCE_REBOL_URL 17\n#define SCE_REBOL_DATE 18\n#define SCE_REBOL_TIME 19\n#define SCE_REBOL_IDENTIFIER 20\n#define SCE_REBOL_WORD 21\n#define SCE_REBOL_WORD2 22\n#define SCE_REBOL_WORD3 23\n#define SCE_REBOL_WORD4 24\n#define SCE_REBOL_WORD5 25\n#define SCE_REBOL_WORD6 26\n#define SCE_REBOL_WORD7 27\n#define SCE_REBOL_WORD8 28\n#define SCE_SQL_DEFAULT 0\n#define SCE_SQL_COMMENT 1\n#define SCE_SQL_COMMENTLINE 2\n#define SCE_SQL_COMMENTDOC 3\n#define SCE_SQL_NUMBER 4\n#define SCE_SQL_WORD 5\n#define SCE_SQL_STRING 6\n#define SCE_SQL_CHARACTER 7\n#define SCE_SQL_SQLPLUS 8\n#define SCE_SQL_SQLPLUS_PROMPT 9\n#define SCE_SQL_OPERATOR 10\n#define SCE_SQL_IDENTIFIER 11\n#define SCE_SQL_SQLPLUS_COMMENT 13\n#define SCE_SQL_COMMENTLINEDOC 15\n#define SCE_SQL_WORD2 16\n#define SCE_SQL_COMMENTDOCKEYWORD 17\n#define SCE_SQL_COMMENTDOCKEYWORDERROR 18\n#define SCE_SQL_USER1 19\n#define SCE_SQL_USER2 20\n#define SCE_SQL_USER3 21\n#define SCE_SQL_USER4 22\n#define SCE_SQL_QUOTEDIDENTIFIER 23\n#define SCE_SQL_QOPERATOR 24\n#define SCE_ST_DEFAULT 0\n#define SCE_ST_STRING 1\n#define SCE_ST_NUMBER 2\n#define SCE_ST_COMMENT 3\n#define SCE_ST_SYMBOL 4\n#define SCE_ST_BINARY 5\n#define SCE_ST_BOOL 6\n#define SCE_ST_SELF 7\n#define SCE_ST_SUPER 8\n#define SCE_ST_NIL 9\n#define SCE_ST_GLOBAL 10\n#define SCE_ST_RETURN 11\n#define SCE_ST_SPECIAL 12\n#define SCE_ST_KWSEND 13\n#define SCE_ST_ASSIGN 14\n#define SCE_ST_CHARACTER 15\n#define SCE_ST_SPEC_SEL 16\n#define SCE_FS_DEFAULT 0\n#define SCE_FS_COMMENT 1\n#define SCE_FS_COMMENTLINE 2\n#define SCE_FS_COMMENTDOC 3\n#define SCE_FS_COMMENTLINEDOC 4\n#define SCE_FS_COMMENTDOCKEYWORD 5\n#define SCE_FS_COMMENTDOCKEYWORDERROR 6\n#define SCE_FS_KEYWORD 7\n#define SCE_FS_KEYWORD2 8\n#define SCE_FS_KEYWORD3 9\n#define SCE_FS_KEYWORD4 10\n#define SCE_FS_NUMBER 11\n#define SCE_FS_STRING 12\n#define SCE_FS_PREPROCESSOR 13\n#define SCE_FS_OPERATOR 14\n#define SCE_FS_IDENTIFIER 15\n#define SCE_FS_DATE 16\n#define SCE_FS_STRINGEOL 17\n#define SCE_FS_CONSTANT 18\n#define SCE_FS_WORDOPERATOR 19\n#define SCE_FS_DISABLEDCODE 20\n#define SCE_FS_DEFAULT_C 21\n#define SCE_FS_COMMENTDOC_C 22\n#define SCE_FS_COMMENTLINEDOC_C 23\n#define SCE_FS_KEYWORD_C 24\n#define SCE_FS_KEYWORD2_C 25\n#define SCE_FS_NUMBER_C 26\n#define SCE_FS_STRING_C 27\n#define SCE_FS_PREPROCESSOR_C 28\n#define SCE_FS_OPERATOR_C 29\n#define SCE_FS_IDENTIFIER_C 30\n#define SCE_FS_STRINGEOL_C 31\n#define SCE_CSOUND_DEFAULT 0\n#define SCE_CSOUND_COMMENT 1\n#define SCE_CSOUND_NUMBER 2\n#define SCE_CSOUND_OPERATOR 3\n#define SCE_CSOUND_INSTR 4\n#define SCE_CSOUND_IDENTIFIER 5\n#define SCE_CSOUND_OPCODE 6\n#define SCE_CSOUND_HEADERSTMT 7\n#define SCE_CSOUND_USERKEYWORD 8\n#define SCE_CSOUND_COMMENTBLOCK 9\n#define SCE_CSOUND_PARAM 10\n#define SCE_CSOUND_ARATE_VAR 11\n#define SCE_CSOUND_KRATE_VAR 12\n#define SCE_CSOUND_IRATE_VAR 13\n#define SCE_CSOUND_GLOBAL_VAR 14\n#define SCE_CSOUND_STRINGEOL 15\n#define SCE_INNO_DEFAULT 0\n#define SCE_INNO_COMMENT 1\n#define SCE_INNO_KEYWORD 2\n#define SCE_INNO_PARAMETER 3\n#define SCE_INNO_SECTION 4\n#define SCE_INNO_PREPROC 5\n#define SCE_INNO_INLINE_EXPANSION 6\n#define SCE_INNO_COMMENT_PASCAL 7\n#define SCE_INNO_KEYWORD_PASCAL 8\n#define SCE_INNO_KEYWORD_USER 9\n#define SCE_INNO_STRING_DOUBLE 10\n#define SCE_INNO_STRING_SINGLE 11\n#define SCE_INNO_IDENTIFIER 12\n#define SCE_OPAL_SPACE 0\n#define SCE_OPAL_COMMENT_BLOCK 1\n#define SCE_OPAL_COMMENT_LINE 2\n#define SCE_OPAL_INTEGER 3\n#define SCE_OPAL_KEYWORD 4\n#define SCE_OPAL_SORT 5\n#define SCE_OPAL_STRING 6\n#define SCE_OPAL_PAR 7\n#define SCE_OPAL_BOOL_CONST 8\n#define SCE_OPAL_DEFAULT 32\n#define SCE_SPICE_DEFAULT 0\n#define SCE_SPICE_IDENTIFIER 1\n#define SCE_SPICE_KEYWORD 2\n#define SCE_SPICE_KEYWORD2 3\n#define SCE_SPICE_KEYWORD3 4\n#define SCE_SPICE_NUMBER 5\n#define SCE_SPICE_DELIMITER 6\n#define SCE_SPICE_VALUE 7\n#define SCE_SPICE_COMMENTLINE 8\n#define SCE_CMAKE_DEFAULT 0\n#define SCE_CMAKE_COMMENT 1\n#define SCE_CMAKE_STRINGDQ 2\n#define SCE_CMAKE_STRINGLQ 3\n#define SCE_CMAKE_STRINGRQ 4\n#define SCE_CMAKE_COMMANDS 5\n#define SCE_CMAKE_PARAMETERS 6\n#define SCE_CMAKE_VARIABLE 7\n#define SCE_CMAKE_USERDEFINED 8\n#define SCE_CMAKE_WHILEDEF 9\n#define SCE_CMAKE_FOREACHDEF 10\n#define SCE_CMAKE_IFDEFINEDEF 11\n#define SCE_CMAKE_MACRODEF 12\n#define SCE_CMAKE_STRINGVAR 13\n#define SCE_CMAKE_NUMBER 14\n#define SCE_GAP_DEFAULT 0\n#define SCE_GAP_IDENTIFIER 1\n#define SCE_GAP_KEYWORD 2\n#define SCE_GAP_KEYWORD2 3\n#define SCE_GAP_KEYWORD3 4\n#define SCE_GAP_KEYWORD4 5\n#define SCE_GAP_STRING 6\n#define SCE_GAP_CHAR 7\n#define SCE_GAP_OPERATOR 8\n#define SCE_GAP_COMMENT 9\n#define SCE_GAP_NUMBER 10\n#define SCE_GAP_STRINGEOL 11\n#define SCE_PLM_DEFAULT 0\n#define SCE_PLM_COMMENT 1\n#define SCE_PLM_STRING 2\n#define SCE_PLM_NUMBER 3\n#define SCE_PLM_IDENTIFIER 4\n#define SCE_PLM_OPERATOR 5\n#define SCE_PLM_CONTROL 6\n#define SCE_PLM_KEYWORD 7\n#define SCE_ABL_DEFAULT 0\n#define SCE_ABL_NUMBER 1\n#define SCE_ABL_WORD 2\n#define SCE_ABL_STRING 3\n#define SCE_ABL_CHARACTER 4\n#define SCE_ABL_PREPROCESSOR 5\n#define SCE_ABL_OPERATOR 6\n#define SCE_ABL_IDENTIFIER 7\n#define SCE_ABL_BLOCK 8\n#define SCE_ABL_END 9\n#define SCE_ABL_COMMENT 10\n#define SCE_ABL_TASKMARKER 11\n#define SCE_ABL_LINECOMMENT 12\n#define SCE_ABAQUS_DEFAULT 0\n#define SCE_ABAQUS_COMMENT 1\n#define SCE_ABAQUS_COMMENTBLOCK 2\n#define SCE_ABAQUS_NUMBER 3\n#define SCE_ABAQUS_STRING 4\n#define SCE_ABAQUS_OPERATOR 5\n#define SCE_ABAQUS_WORD 6\n#define SCE_ABAQUS_PROCESSOR 7\n#define SCE_ABAQUS_COMMAND 8\n#define SCE_ABAQUS_SLASHCOMMAND 9\n#define SCE_ABAQUS_STARCOMMAND 10\n#define SCE_ABAQUS_ARGUMENT 11\n#define SCE_ABAQUS_FUNCTION 12\n#define SCE_ASY_DEFAULT 0\n#define SCE_ASY_COMMENT 1\n#define SCE_ASY_COMMENTLINE 2\n#define SCE_ASY_NUMBER 3\n#define SCE_ASY_WORD 4\n#define SCE_ASY_STRING 5\n#define SCE_ASY_CHARACTER 6\n#define SCE_ASY_OPERATOR 7\n#define SCE_ASY_IDENTIFIER 8\n#define SCE_ASY_STRINGEOL 9\n#define SCE_ASY_COMMENTLINEDOC 10\n#define SCE_ASY_WORD2 11\n#define SCE_R_DEFAULT 0\n#define SCE_R_COMMENT 1\n#define SCE_R_KWORD 2\n#define SCE_R_BASEKWORD 3\n#define SCE_R_OTHERKWORD 4\n#define SCE_R_NUMBER 5\n#define SCE_R_STRING 6\n#define SCE_R_STRING2 7\n#define SCE_R_OPERATOR 8\n#define SCE_R_IDENTIFIER 9\n#define SCE_R_INFIX 10\n#define SCE_R_INFIXEOL 11\n#define SCE_MAGIK_DEFAULT 0\n#define SCE_MAGIK_COMMENT 1\n#define SCE_MAGIK_HYPER_COMMENT 16\n#define SCE_MAGIK_STRING 2\n#define SCE_MAGIK_CHARACTER 3\n#define SCE_MAGIK_NUMBER 4\n#define SCE_MAGIK_IDENTIFIER 5\n#define SCE_MAGIK_OPERATOR 6\n#define SCE_MAGIK_FLOW 7\n#define SCE_MAGIK_CONTAINER 8\n#define SCE_MAGIK_BRACKET_BLOCK 9\n#define SCE_MAGIK_BRACE_BLOCK 10\n#define SCE_MAGIK_SQBRACKET_BLOCK 11\n#define SCE_MAGIK_UNKNOWN_KEYWORD 12\n#define SCE_MAGIK_KEYWORD 13\n#define SCE_MAGIK_PRAGMA 14\n#define SCE_MAGIK_SYMBOL 15\n#define SCE_POWERSHELL_DEFAULT 0\n#define SCE_POWERSHELL_COMMENT 1\n#define SCE_POWERSHELL_STRING 2\n#define SCE_POWERSHELL_CHARACTER 3\n#define SCE_POWERSHELL_NUMBER 4\n#define SCE_POWERSHELL_VARIABLE 5\n#define SCE_POWERSHELL_OPERATOR 6\n#define SCE_POWERSHELL_IDENTIFIER 7\n#define SCE_POWERSHELL_KEYWORD 8\n#define SCE_POWERSHELL_CMDLET 9\n#define SCE_POWERSHELL_ALIAS 10\n#define SCE_POWERSHELL_FUNCTION 11\n#define SCE_POWERSHELL_USER1 12\n#define SCE_POWERSHELL_COMMENTSTREAM 13\n#define SCE_POWERSHELL_HERE_STRING 14\n#define SCE_POWERSHELL_HERE_CHARACTER 15\n#define SCE_POWERSHELL_COMMENTDOCKEYWORD 16\n#define SCE_MYSQL_DEFAULT 0\n#define SCE_MYSQL_COMMENT 1\n#define SCE_MYSQL_COMMENTLINE 2\n#define SCE_MYSQL_VARIABLE 3\n#define SCE_MYSQL_SYSTEMVARIABLE 4\n#define SCE_MYSQL_KNOWNSYSTEMVARIABLE 5\n#define SCE_MYSQL_NUMBER 6\n#define SCE_MYSQL_MAJORKEYWORD 7\n#define SCE_MYSQL_KEYWORD 8\n#define SCE_MYSQL_DATABASEOBJECT 9\n#define SCE_MYSQL_PROCEDUREKEYWORD 10\n#define SCE_MYSQL_STRING 11\n#define SCE_MYSQL_SQSTRING 12\n#define SCE_MYSQL_DQSTRING 13\n#define SCE_MYSQL_OPERATOR 14\n#define SCE_MYSQL_FUNCTION 15\n#define SCE_MYSQL_IDENTIFIER 16\n#define SCE_MYSQL_QUOTEDIDENTIFIER 17\n#define SCE_MYSQL_USER1 18\n#define SCE_MYSQL_USER2 19\n#define SCE_MYSQL_USER3 20\n#define SCE_MYSQL_HIDDENCOMMAND 21\n#define SCE_MYSQL_PLACEHOLDER 22\n#define SCE_PO_DEFAULT 0\n#define SCE_PO_COMMENT 1\n#define SCE_PO_MSGID 2\n#define SCE_PO_MSGID_TEXT 3\n#define SCE_PO_MSGSTR 4\n#define SCE_PO_MSGSTR_TEXT 5\n#define SCE_PO_MSGCTXT 6\n#define SCE_PO_MSGCTXT_TEXT 7\n#define SCE_PO_FUZZY 8\n#define SCE_PO_PROGRAMMER_COMMENT 9\n#define SCE_PO_REFERENCE 10\n#define SCE_PO_FLAGS 11\n#define SCE_PO_MSGID_TEXT_EOL 12\n#define SCE_PO_MSGSTR_TEXT_EOL 13\n#define SCE_PO_MSGCTXT_TEXT_EOL 14\n#define SCE_PO_ERROR 15\n#define SCE_PAS_DEFAULT 0\n#define SCE_PAS_IDENTIFIER 1\n#define SCE_PAS_COMMENT 2\n#define SCE_PAS_COMMENT2 3\n#define SCE_PAS_COMMENTLINE 4\n#define SCE_PAS_PREPROCESSOR 5\n#define SCE_PAS_PREPROCESSOR2 6\n#define SCE_PAS_NUMBER 7\n#define SCE_PAS_HEXNUMBER 8\n#define SCE_PAS_WORD 9\n#define SCE_PAS_STRING 10\n#define SCE_PAS_STRINGEOL 11\n#define SCE_PAS_CHARACTER 12\n#define SCE_PAS_OPERATOR 13\n#define SCE_PAS_ASM 14\n#define SCE_SORCUS_DEFAULT 0\n#define SCE_SORCUS_COMMAND 1\n#define SCE_SORCUS_PARAMETER 2\n#define SCE_SORCUS_COMMENTLINE 3\n#define SCE_SORCUS_STRING 4\n#define SCE_SORCUS_STRINGEOL 5\n#define SCE_SORCUS_IDENTIFIER 6\n#define SCE_SORCUS_OPERATOR 7\n#define SCE_SORCUS_NUMBER 8\n#define SCE_SORCUS_CONSTANT 9\n#define SCE_POWERPRO_DEFAULT 0\n#define SCE_POWERPRO_COMMENTBLOCK 1\n#define SCE_POWERPRO_COMMENTLINE 2\n#define SCE_POWERPRO_NUMBER 3\n#define SCE_POWERPRO_WORD 4\n#define SCE_POWERPRO_WORD2 5\n#define SCE_POWERPRO_WORD3 6\n#define SCE_POWERPRO_WORD4 7\n#define SCE_POWERPRO_DOUBLEQUOTEDSTRING 8\n#define SCE_POWERPRO_SINGLEQUOTEDSTRING 9\n#define SCE_POWERPRO_LINECONTINUE 10\n#define SCE_POWERPRO_OPERATOR 11\n#define SCE_POWERPRO_IDENTIFIER 12\n#define SCE_POWERPRO_STRINGEOL 13\n#define SCE_POWERPRO_VERBATIM 14\n#define SCE_POWERPRO_ALTQUOTE 15\n#define SCE_POWERPRO_FUNCTION 16\n#define SCE_SML_DEFAULT 0\n#define SCE_SML_IDENTIFIER 1\n#define SCE_SML_TAGNAME 2\n#define SCE_SML_KEYWORD 3\n#define SCE_SML_KEYWORD2 4\n#define SCE_SML_KEYWORD3 5\n#define SCE_SML_LINENUM 6\n#define SCE_SML_OPERATOR 7\n#define SCE_SML_NUMBER 8\n#define SCE_SML_CHAR 9\n#define SCE_SML_STRING 11\n#define SCE_SML_COMMENT 12\n#define SCE_SML_COMMENT1 13\n#define SCE_SML_COMMENT2 14\n#define SCE_SML_COMMENT3 15\n#define SCE_MARKDOWN_DEFAULT 0\n#define SCE_MARKDOWN_LINE_BEGIN 1\n#define SCE_MARKDOWN_STRONG1 2\n#define SCE_MARKDOWN_STRONG2 3\n#define SCE_MARKDOWN_EM1 4\n#define SCE_MARKDOWN_EM2 5\n#define SCE_MARKDOWN_HEADER1 6\n#define SCE_MARKDOWN_HEADER2 7\n#define SCE_MARKDOWN_HEADER3 8\n#define SCE_MARKDOWN_HEADER4 9\n#define SCE_MARKDOWN_HEADER5 10\n#define SCE_MARKDOWN_HEADER6 11\n#define SCE_MARKDOWN_PRECHAR 12\n#define SCE_MARKDOWN_ULIST_ITEM 13\n#define SCE_MARKDOWN_OLIST_ITEM 14\n#define SCE_MARKDOWN_BLOCKQUOTE 15\n#define SCE_MARKDOWN_STRIKEOUT 16\n#define SCE_MARKDOWN_HRULE 17\n#define SCE_MARKDOWN_LINK 18\n#define SCE_MARKDOWN_CODE 19\n#define SCE_MARKDOWN_CODE2 20\n#define SCE_MARKDOWN_CODEBK 21\n#define SCE_TXT2TAGS_DEFAULT 0\n#define SCE_TXT2TAGS_LINE_BEGIN 1\n#define SCE_TXT2TAGS_STRONG1 2\n#define SCE_TXT2TAGS_STRONG2 3\n#define SCE_TXT2TAGS_EM1 4\n#define SCE_TXT2TAGS_EM2 5\n#define SCE_TXT2TAGS_HEADER1 6\n#define SCE_TXT2TAGS_HEADER2 7\n#define SCE_TXT2TAGS_HEADER3 8\n#define SCE_TXT2TAGS_HEADER4 9\n#define SCE_TXT2TAGS_HEADER5 10\n#define SCE_TXT2TAGS_HEADER6 11\n#define SCE_TXT2TAGS_PRECHAR 12\n#define SCE_TXT2TAGS_ULIST_ITEM 13\n#define SCE_TXT2TAGS_OLIST_ITEM 14\n#define SCE_TXT2TAGS_BLOCKQUOTE 15\n#define SCE_TXT2TAGS_STRIKEOUT 16\n#define SCE_TXT2TAGS_HRULE 17\n#define SCE_TXT2TAGS_LINK 18\n#define SCE_TXT2TAGS_CODE 19\n#define SCE_TXT2TAGS_CODE2 20\n#define SCE_TXT2TAGS_CODEBK 21\n#define SCE_TXT2TAGS_COMMENT 22\n#define SCE_TXT2TAGS_OPTION 23\n#define SCE_TXT2TAGS_PREPROC 24\n#define SCE_TXT2TAGS_POSTPROC 25\n#define SCE_A68K_DEFAULT 0\n#define SCE_A68K_COMMENT 1\n#define SCE_A68K_NUMBER_DEC 2\n#define SCE_A68K_NUMBER_BIN 3\n#define SCE_A68K_NUMBER_HEX 4\n#define SCE_A68K_STRING1 5\n#define SCE_A68K_OPERATOR 6\n#define SCE_A68K_CPUINSTRUCTION 7\n#define SCE_A68K_EXTINSTRUCTION 8\n#define SCE_A68K_REGISTER 9\n#define SCE_A68K_DIRECTIVE 10\n#define SCE_A68K_MACRO_ARG 11\n#define SCE_A68K_LABEL 12\n#define SCE_A68K_STRING2 13\n#define SCE_A68K_IDENTIFIER 14\n#define SCE_A68K_MACRO_DECLARATION 15\n#define SCE_A68K_COMMENT_WORD 16\n#define SCE_A68K_COMMENT_SPECIAL 17\n#define SCE_A68K_COMMENT_DOXYGEN 18\n#define SCE_MODULA_DEFAULT 0\n#define SCE_MODULA_COMMENT 1\n#define SCE_MODULA_DOXYCOMM 2\n#define SCE_MODULA_DOXYKEY 3\n#define SCE_MODULA_KEYWORD 4\n#define SCE_MODULA_RESERVED 5\n#define SCE_MODULA_NUMBER 6\n#define SCE_MODULA_BASENUM 7\n#define SCE_MODULA_FLOAT 8\n#define SCE_MODULA_STRING 9\n#define SCE_MODULA_STRSPEC 10\n#define SCE_MODULA_CHAR 11\n#define SCE_MODULA_CHARSPEC 12\n#define SCE_MODULA_PROC 13\n#define SCE_MODULA_PRAGMA 14\n#define SCE_MODULA_PRGKEY 15\n#define SCE_MODULA_OPERATOR 16\n#define SCE_MODULA_BADSTR 17\n#define SCE_COFFEESCRIPT_DEFAULT 0\n#define SCE_COFFEESCRIPT_COMMENT 1\n#define SCE_COFFEESCRIPT_COMMENTLINE 2\n#define SCE_COFFEESCRIPT_COMMENTDOC 3\n#define SCE_COFFEESCRIPT_NUMBER 4\n#define SCE_COFFEESCRIPT_WORD 5\n#define SCE_COFFEESCRIPT_STRING 6\n#define SCE_COFFEESCRIPT_CHARACTER 7\n#define SCE_COFFEESCRIPT_UUID 8\n#define SCE_COFFEESCRIPT_PREPROCESSOR 9\n#define SCE_COFFEESCRIPT_OPERATOR 10\n#define SCE_COFFEESCRIPT_IDENTIFIER 11\n#define SCE_COFFEESCRIPT_STRINGEOL 12\n#define SCE_COFFEESCRIPT_VERBATIM 13\n#define SCE_COFFEESCRIPT_REGEX 14\n#define SCE_COFFEESCRIPT_COMMENTLINEDOC 15\n#define SCE_COFFEESCRIPT_WORD2 16\n#define SCE_COFFEESCRIPT_COMMENTDOCKEYWORD 17\n#define SCE_COFFEESCRIPT_COMMENTDOCKEYWORDERROR 18\n#define SCE_COFFEESCRIPT_GLOBALCLASS 19\n#define SCE_COFFEESCRIPT_STRINGRAW 20\n#define SCE_COFFEESCRIPT_TRIPLEVERBATIM 21\n#define SCE_COFFEESCRIPT_COMMENTBLOCK 22\n#define SCE_COFFEESCRIPT_VERBOSE_REGEX 23\n#define SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT 24\n#define SCE_COFFEESCRIPT_INSTANCEPROPERTY 25\n#define SCE_AVS_DEFAULT 0\n#define SCE_AVS_COMMENTBLOCK 1\n#define SCE_AVS_COMMENTBLOCKN 2\n#define SCE_AVS_COMMENTLINE 3\n#define SCE_AVS_NUMBER 4\n#define SCE_AVS_OPERATOR 5\n#define SCE_AVS_IDENTIFIER 6\n#define SCE_AVS_STRING 7\n#define SCE_AVS_TRIPLESTRING 8\n#define SCE_AVS_KEYWORD 9\n#define SCE_AVS_FILTER 10\n#define SCE_AVS_PLUGIN 11\n#define SCE_AVS_FUNCTION 12\n#define SCE_AVS_CLIPPROP 13\n#define SCE_AVS_USERDFN 14\n#define SCE_ECL_DEFAULT 0\n#define SCE_ECL_COMMENT 1\n#define SCE_ECL_COMMENTLINE 2\n#define SCE_ECL_NUMBER 3\n#define SCE_ECL_STRING 4\n#define SCE_ECL_WORD0 5\n#define SCE_ECL_OPERATOR 6\n#define SCE_ECL_CHARACTER 7\n#define SCE_ECL_UUID 8\n#define SCE_ECL_PREPROCESSOR 9\n#define SCE_ECL_UNKNOWN 10\n#define SCE_ECL_IDENTIFIER 11\n#define SCE_ECL_STRINGEOL 12\n#define SCE_ECL_VERBATIM 13\n#define SCE_ECL_REGEX 14\n#define SCE_ECL_COMMENTLINEDOC 15\n#define SCE_ECL_WORD1 16\n#define SCE_ECL_COMMENTDOCKEYWORD 17\n#define SCE_ECL_COMMENTDOCKEYWORDERROR 18\n#define SCE_ECL_WORD2 19\n#define SCE_ECL_WORD3 20\n#define SCE_ECL_WORD4 21\n#define SCE_ECL_WORD5 22\n#define SCE_ECL_COMMENTDOC 23\n#define SCE_ECL_ADDED 24\n#define SCE_ECL_DELETED 25\n#define SCE_ECL_CHANGED 26\n#define SCE_ECL_MOVED 27\n#define SCE_OSCRIPT_DEFAULT 0\n#define SCE_OSCRIPT_LINE_COMMENT 1\n#define SCE_OSCRIPT_BLOCK_COMMENT 2\n#define SCE_OSCRIPT_DOC_COMMENT 3\n#define SCE_OSCRIPT_PREPROCESSOR 4\n#define SCE_OSCRIPT_NUMBER 5\n#define SCE_OSCRIPT_SINGLEQUOTE_STRING 6\n#define SCE_OSCRIPT_DOUBLEQUOTE_STRING 7\n#define SCE_OSCRIPT_CONSTANT 8\n#define SCE_OSCRIPT_IDENTIFIER 9\n#define SCE_OSCRIPT_GLOBAL 10\n#define SCE_OSCRIPT_KEYWORD 11\n#define SCE_OSCRIPT_OPERATOR 12\n#define SCE_OSCRIPT_LABEL 13\n#define SCE_OSCRIPT_TYPE 14\n#define SCE_OSCRIPT_FUNCTION 15\n#define SCE_OSCRIPT_OBJECT 16\n#define SCE_OSCRIPT_PROPERTY 17\n#define SCE_OSCRIPT_METHOD 18\n#define SCE_VISUALPROLOG_DEFAULT 0\n#define SCE_VISUALPROLOG_KEY_MAJOR 1\n#define SCE_VISUALPROLOG_KEY_MINOR 2\n#define SCE_VISUALPROLOG_KEY_DIRECTIVE 3\n#define SCE_VISUALPROLOG_COMMENT_BLOCK 4\n#define SCE_VISUALPROLOG_COMMENT_LINE 5\n#define SCE_VISUALPROLOG_COMMENT_KEY 6\n#define SCE_VISUALPROLOG_COMMENT_KEY_ERROR 7\n#define SCE_VISUALPROLOG_IDENTIFIER 8\n#define SCE_VISUALPROLOG_VARIABLE 9\n#define SCE_VISUALPROLOG_ANONYMOUS 10\n#define SCE_VISUALPROLOG_NUMBER 11\n#define SCE_VISUALPROLOG_OPERATOR 12\n#define SCE_VISUALPROLOG_CHARACTER 13\n#define SCE_VISUALPROLOG_CHARACTER_TOO_MANY 14\n#define SCE_VISUALPROLOG_CHARACTER_ESCAPE_ERROR 15\n#define SCE_VISUALPROLOG_STRING 16\n#define SCE_VISUALPROLOG_STRING_ESCAPE 17\n#define SCE_VISUALPROLOG_STRING_ESCAPE_ERROR 18\n#define SCE_VISUALPROLOG_STRING_EOL_OPEN 19\n#define SCE_VISUALPROLOG_STRING_VERBATIM 20\n#define SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL 21\n#define SCE_VISUALPROLOG_STRING_VERBATIM_EOL 22\n#define SCE_STTXT_DEFAULT 0\n#define SCE_STTXT_COMMENT 1\n#define SCE_STTXT_COMMENTLINE 2\n#define SCE_STTXT_KEYWORD 3\n#define SCE_STTXT_TYPE 4\n#define SCE_STTXT_FUNCTION 5\n#define SCE_STTXT_FB 6\n#define SCE_STTXT_NUMBER 7\n#define SCE_STTXT_HEXNUMBER 8\n#define SCE_STTXT_PRAGMA 9\n#define SCE_STTXT_OPERATOR 10\n#define SCE_STTXT_CHARACTER 11\n#define SCE_STTXT_STRING1 12\n#define SCE_STTXT_STRING2 13\n#define SCE_STTXT_STRINGEOL 14\n#define SCE_STTXT_IDENTIFIER 15\n#define SCE_STTXT_DATETIME 16\n#define SCE_STTXT_VARS 17\n#define SCE_STTXT_PRAGMAS 18\n#define SCE_KVIRC_DEFAULT 0\n#define SCE_KVIRC_COMMENT 1\n#define SCE_KVIRC_COMMENTBLOCK 2\n#define SCE_KVIRC_STRING 3\n#define SCE_KVIRC_WORD 4\n#define SCE_KVIRC_KEYWORD 5\n#define SCE_KVIRC_FUNCTION_KEYWORD 6\n#define SCE_KVIRC_FUNCTION 7\n#define SCE_KVIRC_VARIABLE 8\n#define SCE_KVIRC_NUMBER 9\n#define SCE_KVIRC_OPERATOR 10\n#define SCE_KVIRC_STRING_FUNCTION 11\n#define SCE_KVIRC_STRING_VARIABLE 12\n#define SCE_RUST_DEFAULT 0\n#define SCE_RUST_COMMENTBLOCK 1\n#define SCE_RUST_COMMENTLINE 2\n#define SCE_RUST_COMMENTBLOCKDOC 3\n#define SCE_RUST_COMMENTLINEDOC 4\n#define SCE_RUST_NUMBER 5\n#define SCE_RUST_WORD 6\n#define SCE_RUST_WORD2 7\n#define SCE_RUST_WORD3 8\n#define SCE_RUST_WORD4 9\n#define SCE_RUST_WORD5 10\n#define SCE_RUST_WORD6 11\n#define SCE_RUST_WORD7 12\n#define SCE_RUST_STRING 13\n#define SCE_RUST_STRINGR 14\n#define SCE_RUST_CHARACTER 15\n#define SCE_RUST_OPERATOR 16\n#define SCE_RUST_IDENTIFIER 17\n#define SCE_RUST_LIFETIME 18\n#define SCE_RUST_MACRO 19\n#define SCE_RUST_LEXERROR 20\n#define SCE_RUST_BYTESTRING 21\n#define SCE_RUST_BYTESTRINGR 22\n#define SCE_RUST_BYTECHARACTER 23\n#define SCE_DMAP_DEFAULT 0\n#define SCE_DMAP_COMMENT 1\n#define SCE_DMAP_NUMBER 2\n#define SCE_DMAP_STRING1 3\n#define SCE_DMAP_STRING2 4\n#define SCE_DMAP_STRINGEOL 5\n#define SCE_DMAP_OPERATOR 6\n#define SCE_DMAP_IDENTIFIER 7\n#define SCE_DMAP_WORD 8\n#define SCE_DMAP_WORD2 9\n#define SCE_DMAP_WORD3 10\n#define SCE_DMIS_DEFAULT 0\n#define SCE_DMIS_COMMENT 1\n#define SCE_DMIS_STRING 2\n#define SCE_DMIS_NUMBER 3\n#define SCE_DMIS_KEYWORD 4\n#define SCE_DMIS_MAJORWORD 5\n#define SCE_DMIS_MINORWORD 6\n#define SCE_DMIS_UNSUPPORTED_MAJOR 7\n#define SCE_DMIS_UNSUPPORTED_MINOR 8\n#define SCE_DMIS_LABEL 9\n#define SCE_REG_DEFAULT 0\n#define SCE_REG_COMMENT 1\n#define SCE_REG_VALUENAME 2\n#define SCE_REG_STRING 3\n#define SCE_REG_HEXDIGIT 4\n#define SCE_REG_VALUETYPE 5\n#define SCE_REG_ADDEDKEY 6\n#define SCE_REG_DELETEDKEY 7\n#define SCE_REG_ESCAPED 8\n#define SCE_REG_KEYPATH_GUID 9\n#define SCE_REG_STRING_GUID 10\n#define SCE_REG_PARAMETER 11\n#define SCE_REG_OPERATOR 12\n#define SCE_BIBTEX_DEFAULT 0\n#define SCE_BIBTEX_ENTRY 1\n#define SCE_BIBTEX_UNKNOWN_ENTRY 2\n#define SCE_BIBTEX_KEY 3\n#define SCE_BIBTEX_PARAMETER 4\n#define SCE_BIBTEX_VALUE 5\n#define SCE_BIBTEX_COMMENT 6\n#define SCE_HEX_DEFAULT 0\n#define SCE_HEX_RECSTART 1\n#define SCE_HEX_RECTYPE 2\n#define SCE_HEX_RECTYPE_UNKNOWN 3\n#define SCE_HEX_BYTECOUNT 4\n#define SCE_HEX_BYTECOUNT_WRONG 5\n#define SCE_HEX_NOADDRESS 6\n#define SCE_HEX_DATAADDRESS 7\n#define SCE_HEX_RECCOUNT 8\n#define SCE_HEX_STARTADDRESS 9\n#define SCE_HEX_ADDRESSFIELD_UNKNOWN 10\n#define SCE_HEX_EXTENDEDADDRESS 11\n#define SCE_HEX_DATA_ODD 12\n#define SCE_HEX_DATA_EVEN 13\n#define SCE_HEX_DATA_UNKNOWN 14\n#define SCE_HEX_DATA_EMPTY 15\n#define SCE_HEX_CHECKSUM 16\n#define SCE_HEX_CHECKSUM_WRONG 17\n#define SCE_HEX_GARBAGE 18\n#define SCE_JSON_DEFAULT 0\n#define SCE_JSON_NUMBER 1\n#define SCE_JSON_STRING 2\n#define SCE_JSON_STRINGEOL 3\n#define SCE_JSON_PROPERTYNAME 4\n#define SCE_JSON_ESCAPESEQUENCE 5\n#define SCE_JSON_LINECOMMENT 6\n#define SCE_JSON_BLOCKCOMMENT 7\n#define SCE_JSON_OPERATOR 8\n#define SCE_JSON_URI 9\n#define SCE_JSON_COMPACTIRI 10\n#define SCE_JSON_KEYWORD 11\n#define SCE_JSON_LDKEYWORD 12\n#define SCE_JSON_ERROR 13\n#define SCE_EDI_DEFAULT 0\n#define SCE_EDI_SEGMENTSTART 1\n#define SCE_EDI_SEGMENTEND 2\n#define SCE_EDI_SEP_ELEMENT 3\n#define SCE_EDI_SEP_COMPOSITE 4\n#define SCE_EDI_SEP_RELEASE 5\n#define SCE_EDI_UNA 6\n#define SCE_EDI_UNH 7\n#define SCE_EDI_BADSEGMENT 8\n/* --Autogenerated -- end of section automatically generated from Scintilla.iface */\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/include/Sci_Position.h",
    "content": "// Scintilla source code edit control\n/** @file Sci_Position.h\n ** Define the Sci_Position type used in Scintilla's external interfaces.\n ** These need to be available to clients written in C so are not in a C++ namespace.\n **/\n// Copyright 2015 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef SCI_POSITION_H\n#define SCI_POSITION_H\n\n// Basic signed type used throughout interface\ntypedef int Sci_Position;\n\n// Unsigned variant used for ILexer::Lex and ILexer::Fold\ntypedef unsigned int Sci_PositionU;\n\n// For Sci_CharacterRange  which is defined as long to be compatible with Win32 CHARRANGE\ntypedef long Sci_PositionCR;\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/include/Scintilla.h",
    "content": "/* Scintilla source code edit control */\n/** @file Scintilla.h\n ** Interface to the edit control.\n **/\n/* Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n * The License.txt file describes the conditions under which this software may be distributed. */\n\n/* Most of this file is automatically generated from the Scintilla.iface interface definition\n * file which contains any comments about the definitions. HFacer.py does the generation. */\n\n#ifndef SCINTILLA_H\n#define SCINTILLA_H\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#if defined(_WIN32)\n/* Return false on failure: */\nint Scintilla_RegisterClasses(void *hInstance);\nint Scintilla_ReleaseResources(void);\n#endif\nint Scintilla_LinkLexers(void);\n\n#ifdef __cplusplus\n}\n#endif\n\n// Include header that defines basic numeric types.\n#if defined(_MSC_VER)\n// Older releases of MSVC did not have stdint.h.\n#include <stddef.h>\n#else\n#include <stdint.h>\n#endif\n\n// Define uptr_t, an unsigned integer type large enough to hold a pointer.\ntypedef uintptr_t uptr_t;\n// Define sptr_t, a signed integer large enough to hold a pointer.\ntypedef intptr_t sptr_t;\n\n#include \"Sci_Position.h\"\n\ntypedef sptr_t (*SciFnDirect)(sptr_t ptr, unsigned int iMessage, uptr_t wParam, sptr_t lParam);\n\n/* ++Autogenerated -- start of section automatically generated from Scintilla.iface */\n#define INVALID_POSITION -1\n#define SCI_START 2000\n#define SCI_OPTIONAL_START 3000\n#define SCI_LEXER_START 4000\n#define SCI_ADDTEXT 2001\n#define SCI_ADDSTYLEDTEXT 2002\n#define SCI_INSERTTEXT 2003\n#define SCI_CHANGEINSERTION 2672\n#define SCI_CLEARALL 2004\n#define SCI_DELETERANGE 2645\n#define SCI_CLEARDOCUMENTSTYLE 2005\n#define SCI_GETLENGTH 2006\n#define SCI_GETCHARAT 2007\n#define SCI_GETCURRENTPOS 2008\n#define SCI_GETANCHOR 2009\n#define SCI_GETSTYLEAT 2010\n#define SCI_REDO 2011\n#define SCI_SETUNDOCOLLECTION 2012\n#define SCI_SELECTALL 2013\n#define SCI_SETSAVEPOINT 2014\n#define SCI_GETSTYLEDTEXT 2015\n#define SCI_CANREDO 2016\n#define SCI_MARKERLINEFROMHANDLE 2017\n#define SCI_MARKERDELETEHANDLE 2018\n#define SCI_GETUNDOCOLLECTION 2019\n#define SCWS_INVISIBLE 0\n#define SCWS_VISIBLEALWAYS 1\n#define SCWS_VISIBLEAFTERINDENT 2\n#define SCWS_VISIBLEONLYININDENT 3\n#define SCI_GETVIEWWS 2020\n#define SCI_SETVIEWWS 2021\n#define SCTD_LONGARROW 0\n#define SCTD_STRIKEOUT 1\n#define SCI_GETTABDRAWMODE 2698\n#define SCI_SETTABDRAWMODE 2699\n#define SCI_POSITIONFROMPOINT 2022\n#define SCI_POSITIONFROMPOINTCLOSE 2023\n#define SCI_GOTOLINE 2024\n#define SCI_GOTOPOS 2025\n#define SCI_SETANCHOR 2026\n#define SCI_GETCURLINE 2027\n#define SCI_GETENDSTYLED 2028\n#define SC_EOL_CRLF 0\n#define SC_EOL_CR 1\n#define SC_EOL_LF 2\n#define SCI_CONVERTEOLS 2029\n#define SCI_GETEOLMODE 2030\n#define SCI_SETEOLMODE 2031\n#define SCI_STARTSTYLING 2032\n#define SCI_SETSTYLING 2033\n#define SCI_GETBUFFEREDDRAW 2034\n#define SCI_SETBUFFEREDDRAW 2035\n#define SCI_SETTABWIDTH 2036\n#define SCI_GETTABWIDTH 2121\n#define SCI_CLEARTABSTOPS 2675\n#define SCI_ADDTABSTOP 2676\n#define SCI_GETNEXTTABSTOP 2677\n#define SC_CP_UTF8 65001\n#define SCI_SETCODEPAGE 2037\n#define SC_IME_WINDOWED 0\n#define SC_IME_INLINE 1\n#define SCI_GETIMEINTERACTION 2678\n#define SCI_SETIMEINTERACTION 2679\n#define MARKER_MAX 31\n#define SC_MARK_CIRCLE 0\n#define SC_MARK_ROUNDRECT 1\n#define SC_MARK_ARROW 2\n#define SC_MARK_SMALLRECT 3\n#define SC_MARK_SHORTARROW 4\n#define SC_MARK_EMPTY 5\n#define SC_MARK_ARROWDOWN 6\n#define SC_MARK_MINUS 7\n#define SC_MARK_PLUS 8\n#define SC_MARK_VLINE 9\n#define SC_MARK_LCORNER 10\n#define SC_MARK_TCORNER 11\n#define SC_MARK_BOXPLUS 12\n#define SC_MARK_BOXPLUSCONNECTED 13\n#define SC_MARK_BOXMINUS 14\n#define SC_MARK_BOXMINUSCONNECTED 15\n#define SC_MARK_LCORNERCURVE 16\n#define SC_MARK_TCORNERCURVE 17\n#define SC_MARK_CIRCLEPLUS 18\n#define SC_MARK_CIRCLEPLUSCONNECTED 19\n#define SC_MARK_CIRCLEMINUS 20\n#define SC_MARK_CIRCLEMINUSCONNECTED 21\n#define SC_MARK_BACKGROUND 22\n#define SC_MARK_DOTDOTDOT 23\n#define SC_MARK_ARROWS 24\n#define SC_MARK_PIXMAP 25\n#define SC_MARK_FULLRECT 26\n#define SC_MARK_LEFTRECT 27\n#define SC_MARK_AVAILABLE 28\n#define SC_MARK_UNDERLINE 29\n#define SC_MARK_RGBAIMAGE 30\n#define SC_MARK_BOOKMARK 31\n#define SC_MARK_CHARACTER 10000\n#define SC_MARKNUM_FOLDEREND 25\n#define SC_MARKNUM_FOLDEROPENMID 26\n#define SC_MARKNUM_FOLDERMIDTAIL 27\n#define SC_MARKNUM_FOLDERTAIL 28\n#define SC_MARKNUM_FOLDERSUB 29\n#define SC_MARKNUM_FOLDER 30\n#define SC_MARKNUM_FOLDEROPEN 31\n#define SC_MASK_FOLDERS 0xFE000000\n#define SCI_MARKERDEFINE 2040\n#define SCI_MARKERSETFORE 2041\n#define SCI_MARKERSETBACK 2042\n#define SCI_MARKERSETBACKSELECTED 2292\n#define SCI_MARKERENABLEHIGHLIGHT 2293\n#define SCI_MARKERADD 2043\n#define SCI_MARKERDELETE 2044\n#define SCI_MARKERDELETEALL 2045\n#define SCI_MARKERGET 2046\n#define SCI_MARKERNEXT 2047\n#define SCI_MARKERPREVIOUS 2048\n#define SCI_MARKERDEFINEPIXMAP 2049\n#define SCI_MARKERADDSET 2466\n#define SCI_MARKERSETALPHA 2476\n#define SC_MAX_MARGIN 4\n#define SC_MARGIN_SYMBOL 0\n#define SC_MARGIN_NUMBER 1\n#define SC_MARGIN_BACK 2\n#define SC_MARGIN_FORE 3\n#define SC_MARGIN_TEXT 4\n#define SC_MARGIN_RTEXT 5\n#define SC_MARGIN_COLOUR 6\n#define SCI_SETMARGINTYPEN 2240\n#define SCI_GETMARGINTYPEN 2241\n#define SCI_SETMARGINWIDTHN 2242\n#define SCI_GETMARGINWIDTHN 2243\n#define SCI_SETMARGINMASKN 2244\n#define SCI_GETMARGINMASKN 2245\n#define SCI_SETMARGINSENSITIVEN 2246\n#define SCI_GETMARGINSENSITIVEN 2247\n#define SCI_SETMARGINCURSORN 2248\n#define SCI_GETMARGINCURSORN 2249\n#define SCI_SETMARGINBACKN 2250\n#define SCI_GETMARGINBACKN 2251\n#define SCI_SETMARGINS 2252\n#define SCI_GETMARGINS 2253\n#define STYLE_DEFAULT 32\n#define STYLE_LINENUMBER 33\n#define STYLE_BRACELIGHT 34\n#define STYLE_BRACEBAD 35\n#define STYLE_CONTROLCHAR 36\n#define STYLE_INDENTGUIDE 37\n#define STYLE_CALLTIP 38\n#define STYLE_FOLDDISPLAYTEXT 39\n#define STYLE_LASTPREDEFINED 39\n#define STYLE_MAX 255\n#define SC_CHARSET_ANSI 0\n#define SC_CHARSET_DEFAULT 1\n#define SC_CHARSET_BALTIC 186\n#define SC_CHARSET_CHINESEBIG5 136\n#define SC_CHARSET_EASTEUROPE 238\n#define SC_CHARSET_GB2312 134\n#define SC_CHARSET_GREEK 161\n#define SC_CHARSET_HANGUL 129\n#define SC_CHARSET_MAC 77\n#define SC_CHARSET_OEM 255\n#define SC_CHARSET_RUSSIAN 204\n#define SC_CHARSET_OEM866 866\n#define SC_CHARSET_CYRILLIC 1251\n#define SC_CHARSET_SHIFTJIS 128\n#define SC_CHARSET_SYMBOL 2\n#define SC_CHARSET_TURKISH 162\n#define SC_CHARSET_JOHAB 130\n#define SC_CHARSET_HEBREW 177\n#define SC_CHARSET_ARABIC 178\n#define SC_CHARSET_VIETNAMESE 163\n#define SC_CHARSET_THAI 222\n#define SC_CHARSET_8859_15 1000\n#define SCI_STYLECLEARALL 2050\n#define SCI_STYLESETFORE 2051\n#define SCI_STYLESETBACK 2052\n#define SCI_STYLESETBOLD 2053\n#define SCI_STYLESETITALIC 2054\n#define SCI_STYLESETSIZE 2055\n#define SCI_STYLESETFONT 2056\n#define SCI_STYLESETEOLFILLED 2057\n#define SCI_STYLERESETDEFAULT 2058\n#define SCI_STYLESETUNDERLINE 2059\n#define SC_CASE_MIXED 0\n#define SC_CASE_UPPER 1\n#define SC_CASE_LOWER 2\n#define SC_CASE_CAMEL 3\n#define SCI_STYLEGETFORE 2481\n#define SCI_STYLEGETBACK 2482\n#define SCI_STYLEGETBOLD 2483\n#define SCI_STYLEGETITALIC 2484\n#define SCI_STYLEGETSIZE 2485\n#define SCI_STYLEGETFONT 2486\n#define SCI_STYLEGETEOLFILLED 2487\n#define SCI_STYLEGETUNDERLINE 2488\n#define SCI_STYLEGETCASE 2489\n#define SCI_STYLEGETCHARACTERSET 2490\n#define SCI_STYLEGETVISIBLE 2491\n#define SCI_STYLEGETCHANGEABLE 2492\n#define SCI_STYLEGETHOTSPOT 2493\n#define SCI_STYLESETCASE 2060\n#define SC_FONT_SIZE_MULTIPLIER 100\n#define SCI_STYLESETSIZEFRACTIONAL 2061\n#define SCI_STYLEGETSIZEFRACTIONAL 2062\n#define SC_WEIGHT_NORMAL 400\n#define SC_WEIGHT_SEMIBOLD 600\n#define SC_WEIGHT_BOLD 700\n#define SCI_STYLESETWEIGHT 2063\n#define SCI_STYLEGETWEIGHT 2064\n#define SCI_STYLESETCHARACTERSET 2066\n#define SCI_STYLESETHOTSPOT 2409\n#define SCI_SETSELFORE 2067\n#define SCI_SETSELBACK 2068\n#define SCI_GETSELALPHA 2477\n#define SCI_SETSELALPHA 2478\n#define SCI_GETSELEOLFILLED 2479\n#define SCI_SETSELEOLFILLED 2480\n#define SCI_SETCARETFORE 2069\n#define SCI_ASSIGNCMDKEY 2070\n#define SCI_CLEARCMDKEY 2071\n#define SCI_CLEARALLCMDKEYS 2072\n#define SCI_SETSTYLINGEX 2073\n#define SCI_STYLESETVISIBLE 2074\n#define SCI_GETCARETPERIOD 2075\n#define SCI_SETCARETPERIOD 2076\n#define SCI_SETWORDCHARS 2077\n#define SCI_GETWORDCHARS 2646\n#define SCI_BEGINUNDOACTION 2078\n#define SCI_ENDUNDOACTION 2079\n#define INDIC_PLAIN 0\n#define INDIC_SQUIGGLE 1\n#define INDIC_TT 2\n#define INDIC_DIAGONAL 3\n#define INDIC_STRIKE 4\n#define INDIC_HIDDEN 5\n#define INDIC_BOX 6\n#define INDIC_ROUNDBOX 7\n#define INDIC_STRAIGHTBOX 8\n#define INDIC_DASH 9\n#define INDIC_DOTS 10\n#define INDIC_SQUIGGLELOW 11\n#define INDIC_DOTBOX 12\n#define INDIC_SQUIGGLEPIXMAP 13\n#define INDIC_COMPOSITIONTHICK 14\n#define INDIC_COMPOSITIONTHIN 15\n#define INDIC_FULLBOX 16\n#define INDIC_TEXTFORE 17\n#define INDIC_POINT 18\n#define INDIC_POINTCHARACTER 19\n#define INDIC_IME 32\n#define INDIC_IME_MAX 35\n#define INDIC_MAX 35\n#define INDIC_CONTAINER 8\n#define INDIC0_MASK 0x20\n#define INDIC1_MASK 0x40\n#define INDIC2_MASK 0x80\n#define INDICS_MASK 0xE0\n#define SCI_INDICSETSTYLE 2080\n#define SCI_INDICGETSTYLE 2081\n#define SCI_INDICSETFORE 2082\n#define SCI_INDICGETFORE 2083\n#define SCI_INDICSETUNDER 2510\n#define SCI_INDICGETUNDER 2511\n#define SCI_INDICSETHOVERSTYLE 2680\n#define SCI_INDICGETHOVERSTYLE 2681\n#define SCI_INDICSETHOVERFORE 2682\n#define SCI_INDICGETHOVERFORE 2683\n#define SC_INDICVALUEBIT 0x1000000\n#define SC_INDICVALUEMASK 0xFFFFFF\n#define SC_INDICFLAG_VALUEFORE 1\n#define SCI_INDICSETFLAGS 2684\n#define SCI_INDICGETFLAGS 2685\n#define SCI_SETWHITESPACEFORE 2084\n#define SCI_SETWHITESPACEBACK 2085\n#define SCI_SETWHITESPACESIZE 2086\n#define SCI_GETWHITESPACESIZE 2087\n#define SCI_SETSTYLEBITS 2090\n#define SCI_GETSTYLEBITS 2091\n#define SCI_SETLINESTATE 2092\n#define SCI_GETLINESTATE 2093\n#define SCI_GETMAXLINESTATE 2094\n#define SCI_GETCARETLINEVISIBLE 2095\n#define SCI_SETCARETLINEVISIBLE 2096\n#define SCI_GETCARETLINEBACK 2097\n#define SCI_SETCARETLINEBACK 2098\n#define SCI_STYLESETCHANGEABLE 2099\n#define SCI_AUTOCSHOW 2100\n#define SCI_AUTOCCANCEL 2101\n#define SCI_AUTOCACTIVE 2102\n#define SCI_AUTOCPOSSTART 2103\n#define SCI_AUTOCCOMPLETE 2104\n#define SCI_AUTOCSTOPS 2105\n#define SCI_AUTOCSETSEPARATOR 2106\n#define SCI_AUTOCGETSEPARATOR 2107\n#define SCI_AUTOCSELECT 2108\n#define SCI_AUTOCSETCANCELATSTART 2110\n#define SCI_AUTOCGETCANCELATSTART 2111\n#define SCI_AUTOCSETFILLUPS 2112\n#define SCI_AUTOCSETCHOOSESINGLE 2113\n#define SCI_AUTOCGETCHOOSESINGLE 2114\n#define SCI_AUTOCSETIGNORECASE 2115\n#define SCI_AUTOCGETIGNORECASE 2116\n#define SCI_USERLISTSHOW 2117\n#define SCI_AUTOCSETAUTOHIDE 2118\n#define SCI_AUTOCGETAUTOHIDE 2119\n#define SCI_AUTOCSETDROPRESTOFWORD 2270\n#define SCI_AUTOCGETDROPRESTOFWORD 2271\n#define SCI_REGISTERIMAGE 2405\n#define SCI_CLEARREGISTEREDIMAGES 2408\n#define SCI_AUTOCGETTYPESEPARATOR 2285\n#define SCI_AUTOCSETTYPESEPARATOR 2286\n#define SCI_AUTOCSETMAXWIDTH 2208\n#define SCI_AUTOCGETMAXWIDTH 2209\n#define SCI_AUTOCSETMAXHEIGHT 2210\n#define SCI_AUTOCGETMAXHEIGHT 2211\n#define SCI_SETINDENT 2122\n#define SCI_GETINDENT 2123\n#define SCI_SETUSETABS 2124\n#define SCI_GETUSETABS 2125\n#define SCI_SETLINEINDENTATION 2126\n#define SCI_GETLINEINDENTATION 2127\n#define SCI_GETLINEINDENTPOSITION 2128\n#define SCI_GETCOLUMN 2129\n#define SCI_COUNTCHARACTERS 2633\n#define SCI_SETHSCROLLBAR 2130\n#define SCI_GETHSCROLLBAR 2131\n#define SC_IV_NONE 0\n#define SC_IV_REAL 1\n#define SC_IV_LOOKFORWARD 2\n#define SC_IV_LOOKBOTH 3\n#define SCI_SETINDENTATIONGUIDES 2132\n#define SCI_GETINDENTATIONGUIDES 2133\n#define SCI_SETHIGHLIGHTGUIDE 2134\n#define SCI_GETHIGHLIGHTGUIDE 2135\n#define SCI_GETLINEENDPOSITION 2136\n#define SCI_GETCODEPAGE 2137\n#define SCI_GETCARETFORE 2138\n#define SCI_GETREADONLY 2140\n#define SCI_SETCURRENTPOS 2141\n#define SCI_SETSELECTIONSTART 2142\n#define SCI_GETSELECTIONSTART 2143\n#define SCI_SETSELECTIONEND 2144\n#define SCI_GETSELECTIONEND 2145\n#define SCI_SETEMPTYSELECTION 2556\n#define SCI_SETPRINTMAGNIFICATION 2146\n#define SCI_GETPRINTMAGNIFICATION 2147\n#define SC_PRINT_NORMAL 0\n#define SC_PRINT_INVERTLIGHT 1\n#define SC_PRINT_BLACKONWHITE 2\n#define SC_PRINT_COLOURONWHITE 3\n#define SC_PRINT_COLOURONWHITEDEFAULTBG 4\n#define SCI_SETPRINTCOLOURMODE 2148\n#define SCI_GETPRINTCOLOURMODE 2149\n#define SCFIND_WHOLEWORD 0x2\n#define SCFIND_MATCHCASE 0x4\n#define SCFIND_WORDSTART 0x00100000\n#define SCFIND_REGEXP 0x00200000\n#define SCFIND_POSIX 0x00400000\n#define SCFIND_CXX11REGEX 0x00800000\n#define SCI_FINDTEXT 2150\n#define SCI_FORMATRANGE 2151\n#define SCI_GETFIRSTVISIBLELINE 2152\n#define SCI_GETLINE 2153\n#define SCI_GETLINECOUNT 2154\n#define SCI_SETMARGINLEFT 2155\n#define SCI_GETMARGINLEFT 2156\n#define SCI_SETMARGINRIGHT 2157\n#define SCI_GETMARGINRIGHT 2158\n#define SCI_GETMODIFY 2159\n#define SCI_SETSEL 2160\n#define SCI_GETSELTEXT 2161\n#define SCI_GETTEXTRANGE 2162\n#define SCI_HIDESELECTION 2163\n#define SCI_POINTXFROMPOSITION 2164\n#define SCI_POINTYFROMPOSITION 2165\n#define SCI_LINEFROMPOSITION 2166\n#define SCI_POSITIONFROMLINE 2167\n#define SCI_LINESCROLL 2168\n#define SCI_SCROLLCARET 2169\n#define SCI_SCROLLRANGE 2569\n#define SCI_REPLACESEL 2170\n#define SCI_SETREADONLY 2171\n#define SCI_NULL 2172\n#define SCI_CANPASTE 2173\n#define SCI_CANUNDO 2174\n#define SCI_EMPTYUNDOBUFFER 2175\n#define SCI_UNDO 2176\n#define SCI_CUT 2177\n#define SCI_COPY 2178\n#define SCI_PASTE 2179\n#define SCI_CLEAR 2180\n#define SCI_SETTEXT 2181\n#define SCI_GETTEXT 2182\n#define SCI_GETTEXTLENGTH 2183\n#define SCI_GETDIRECTFUNCTION 2184\n#define SCI_GETDIRECTPOINTER 2185\n#define SCI_SETOVERTYPE 2186\n#define SCI_GETOVERTYPE 2187\n#define SCI_SETCARETWIDTH 2188\n#define SCI_GETCARETWIDTH 2189\n#define SCI_SETTARGETSTART 2190\n#define SCI_GETTARGETSTART 2191\n#define SCI_SETTARGETEND 2192\n#define SCI_GETTARGETEND 2193\n#define SCI_SETTARGETRANGE 2686\n#define SCI_GETTARGETTEXT 2687\n#define SCI_TARGETFROMSELECTION 2287\n#define SCI_TARGETWHOLEDOCUMENT 2690\n#define SCI_REPLACETARGET 2194\n#define SCI_REPLACETARGETRE 2195\n#define SCI_SEARCHINTARGET 2197\n#define SCI_SETSEARCHFLAGS 2198\n#define SCI_GETSEARCHFLAGS 2199\n#define SCI_CALLTIPSHOW 2200\n#define SCI_CALLTIPCANCEL 2201\n#define SCI_CALLTIPACTIVE 2202\n#define SCI_CALLTIPPOSSTART 2203\n#define SCI_CALLTIPSETPOSSTART 2214\n#define SCI_CALLTIPSETHLT 2204\n#define SCI_CALLTIPSETBACK 2205\n#define SCI_CALLTIPSETFORE 2206\n#define SCI_CALLTIPSETFOREHLT 2207\n#define SCI_CALLTIPUSESTYLE 2212\n#define SCI_CALLTIPSETPOSITION 2213\n#define SCI_VISIBLEFROMDOCLINE 2220\n#define SCI_DOCLINEFROMVISIBLE 2221\n#define SCI_WRAPCOUNT 2235\n#define SC_FOLDLEVELBASE 0x400\n#define SC_FOLDLEVELWHITEFLAG 0x1000\n#define SC_FOLDLEVELHEADERFLAG 0x2000\n#define SC_FOLDLEVELNUMBERMASK 0x0FFF\n#define SCI_SETFOLDLEVEL 2222\n#define SCI_GETFOLDLEVEL 2223\n#define SCI_GETLASTCHILD 2224\n#define SCI_GETFOLDPARENT 2225\n#define SCI_SHOWLINES 2226\n#define SCI_HIDELINES 2227\n#define SCI_GETLINEVISIBLE 2228\n#define SCI_GETALLLINESVISIBLE 2236\n#define SCI_SETFOLDEXPANDED 2229\n#define SCI_GETFOLDEXPANDED 2230\n#define SCI_TOGGLEFOLD 2231\n#define SCI_TOGGLEFOLDSHOWTEXT 2700\n#define SC_FOLDDISPLAYTEXT_HIDDEN 0\n#define SC_FOLDDISPLAYTEXT_STANDARD 1\n#define SC_FOLDDISPLAYTEXT_BOXED 2\n#define SCI_FOLDDISPLAYTEXTSETSTYLE 2701\n#define SC_FOLDACTION_CONTRACT 0\n#define SC_FOLDACTION_EXPAND 1\n#define SC_FOLDACTION_TOGGLE 2\n#define SCI_FOLDLINE 2237\n#define SCI_FOLDCHILDREN 2238\n#define SCI_EXPANDCHILDREN 2239\n#define SCI_FOLDALL 2662\n#define SCI_ENSUREVISIBLE 2232\n#define SC_AUTOMATICFOLD_SHOW 0x0001\n#define SC_AUTOMATICFOLD_CLICK 0x0002\n#define SC_AUTOMATICFOLD_CHANGE 0x0004\n#define SCI_SETAUTOMATICFOLD 2663\n#define SCI_GETAUTOMATICFOLD 2664\n#define SC_FOLDFLAG_LINEBEFORE_EXPANDED 0x0002\n#define SC_FOLDFLAG_LINEBEFORE_CONTRACTED 0x0004\n#define SC_FOLDFLAG_LINEAFTER_EXPANDED 0x0008\n#define SC_FOLDFLAG_LINEAFTER_CONTRACTED 0x0010\n#define SC_FOLDFLAG_LEVELNUMBERS 0x0040\n#define SC_FOLDFLAG_LINESTATE 0x0080\n#define SCI_SETFOLDFLAGS 2233\n#define SCI_ENSUREVISIBLEENFORCEPOLICY 2234\n#define SCI_SETTABINDENTS 2260\n#define SCI_GETTABINDENTS 2261\n#define SCI_SETBACKSPACEUNINDENTS 2262\n#define SCI_GETBACKSPACEUNINDENTS 2263\n#define SC_TIME_FOREVER 10000000\n#define SCI_SETMOUSEDWELLTIME 2264\n#define SCI_GETMOUSEDWELLTIME 2265\n#define SCI_WORDSTARTPOSITION 2266\n#define SCI_WORDENDPOSITION 2267\n#define SCI_ISRANGEWORD 2691\n#define SC_IDLESTYLING_NONE 0\n#define SC_IDLESTYLING_TOVISIBLE 1\n#define SC_IDLESTYLING_AFTERVISIBLE 2\n#define SC_IDLESTYLING_ALL 3\n#define SCI_SETIDLESTYLING 2692\n#define SCI_GETIDLESTYLING 2693\n#define SC_WRAP_NONE 0\n#define SC_WRAP_WORD 1\n#define SC_WRAP_CHAR 2\n#define SC_WRAP_WHITESPACE 3\n#define SCI_SETWRAPMODE 2268\n#define SCI_GETWRAPMODE 2269\n#define SC_WRAPVISUALFLAG_NONE 0x0000\n#define SC_WRAPVISUALFLAG_END 0x0001\n#define SC_WRAPVISUALFLAG_START 0x0002\n#define SC_WRAPVISUALFLAG_MARGIN 0x0004\n#define SCI_SETWRAPVISUALFLAGS 2460\n#define SCI_GETWRAPVISUALFLAGS 2461\n#define SC_WRAPVISUALFLAGLOC_DEFAULT 0x0000\n#define SC_WRAPVISUALFLAGLOC_END_BY_TEXT 0x0001\n#define SC_WRAPVISUALFLAGLOC_START_BY_TEXT 0x0002\n#define SCI_SETWRAPVISUALFLAGSLOCATION 2462\n#define SCI_GETWRAPVISUALFLAGSLOCATION 2463\n#define SCI_SETWRAPSTARTINDENT 2464\n#define SCI_GETWRAPSTARTINDENT 2465\n#define SC_WRAPINDENT_FIXED 0\n#define SC_WRAPINDENT_SAME 1\n#define SC_WRAPINDENT_INDENT 2\n#define SCI_SETWRAPINDENTMODE 2472\n#define SCI_GETWRAPINDENTMODE 2473\n#define SC_CACHE_NONE 0\n#define SC_CACHE_CARET 1\n#define SC_CACHE_PAGE 2\n#define SC_CACHE_DOCUMENT 3\n#define SCI_SETLAYOUTCACHE 2272\n#define SCI_GETLAYOUTCACHE 2273\n#define SCI_SETSCROLLWIDTH 2274\n#define SCI_GETSCROLLWIDTH 2275\n#define SCI_SETSCROLLWIDTHTRACKING 2516\n#define SCI_GETSCROLLWIDTHTRACKING 2517\n#define SCI_TEXTWIDTH 2276\n#define SCI_SETENDATLASTLINE 2277\n#define SCI_GETENDATLASTLINE 2278\n#define SCI_TEXTHEIGHT 2279\n#define SCI_SETVSCROLLBAR 2280\n#define SCI_GETVSCROLLBAR 2281\n#define SCI_APPENDTEXT 2282\n#define SCI_GETTWOPHASEDRAW 2283\n#define SCI_SETTWOPHASEDRAW 2284\n#define SC_PHASES_ONE 0\n#define SC_PHASES_TWO 1\n#define SC_PHASES_MULTIPLE 2\n#define SCI_GETPHASESDRAW 2673\n#define SCI_SETPHASESDRAW 2674\n#define SC_EFF_QUALITY_MASK 0xF\n#define SC_EFF_QUALITY_DEFAULT 0\n#define SC_EFF_QUALITY_NON_ANTIALIASED 1\n#define SC_EFF_QUALITY_ANTIALIASED 2\n#define SC_EFF_QUALITY_LCD_OPTIMIZED 3\n#define SCI_SETFONTQUALITY 2611\n#define SCI_GETFONTQUALITY 2612\n#define SCI_SETFIRSTVISIBLELINE 2613\n#define SC_MULTIPASTE_ONCE 0\n#define SC_MULTIPASTE_EACH 1\n#define SCI_SETMULTIPASTE 2614\n#define SCI_GETMULTIPASTE 2615\n#define SCI_GETTAG 2616\n#define SCI_LINESJOIN 2288\n#define SCI_LINESSPLIT 2289\n#define SCI_SETFOLDMARGINCOLOUR 2290\n#define SCI_SETFOLDMARGINHICOLOUR 2291\n#define SCI_LINEDOWN 2300\n#define SCI_LINEDOWNEXTEND 2301\n#define SCI_LINEUP 2302\n#define SCI_LINEUPEXTEND 2303\n#define SCI_CHARLEFT 2304\n#define SCI_CHARLEFTEXTEND 2305\n#define SCI_CHARRIGHT 2306\n#define SCI_CHARRIGHTEXTEND 2307\n#define SCI_WORDLEFT 2308\n#define SCI_WORDLEFTEXTEND 2309\n#define SCI_WORDRIGHT 2310\n#define SCI_WORDRIGHTEXTEND 2311\n#define SCI_HOME 2312\n#define SCI_HOMEEXTEND 2313\n#define SCI_LINEEND 2314\n#define SCI_LINEENDEXTEND 2315\n#define SCI_DOCUMENTSTART 2316\n#define SCI_DOCUMENTSTARTEXTEND 2317\n#define SCI_DOCUMENTEND 2318\n#define SCI_DOCUMENTENDEXTEND 2319\n#define SCI_PAGEUP 2320\n#define SCI_PAGEUPEXTEND 2321\n#define SCI_PAGEDOWN 2322\n#define SCI_PAGEDOWNEXTEND 2323\n#define SCI_EDITTOGGLEOVERTYPE 2324\n#define SCI_CANCEL 2325\n#define SCI_DELETEBACK 2326\n#define SCI_TAB 2327\n#define SCI_BACKTAB 2328\n#define SCI_NEWLINE 2329\n#define SCI_FORMFEED 2330\n#define SCI_VCHOME 2331\n#define SCI_VCHOMEEXTEND 2332\n#define SCI_ZOOMIN 2333\n#define SCI_ZOOMOUT 2334\n#define SCI_DELWORDLEFT 2335\n#define SCI_DELWORDRIGHT 2336\n#define SCI_DELWORDRIGHTEND 2518\n#define SCI_LINECUT 2337\n#define SCI_LINEDELETE 2338\n#define SCI_LINETRANSPOSE 2339\n#define SCI_LINEDUPLICATE 2404\n#define SCI_LOWERCASE 2340\n#define SCI_UPPERCASE 2341\n#define SCI_LINESCROLLDOWN 2342\n#define SCI_LINESCROLLUP 2343\n#define SCI_DELETEBACKNOTLINE 2344\n#define SCI_HOMEDISPLAY 2345\n#define SCI_HOMEDISPLAYEXTEND 2346\n#define SCI_LINEENDDISPLAY 2347\n#define SCI_LINEENDDISPLAYEXTEND 2348\n#define SCI_HOMEWRAP 2349\n#define SCI_HOMEWRAPEXTEND 2450\n#define SCI_LINEENDWRAP 2451\n#define SCI_LINEENDWRAPEXTEND 2452\n#define SCI_VCHOMEWRAP 2453\n#define SCI_VCHOMEWRAPEXTEND 2454\n#define SCI_LINECOPY 2455\n#define SCI_MOVECARETINSIDEVIEW 2401\n#define SCI_LINELENGTH 2350\n#define SCI_BRACEHIGHLIGHT 2351\n#define SCI_BRACEHIGHLIGHTINDICATOR 2498\n#define SCI_BRACEBADLIGHT 2352\n#define SCI_BRACEBADLIGHTINDICATOR 2499\n#define SCI_BRACEMATCH 2353\n#define SCI_GETVIEWEOL 2355\n#define SCI_SETVIEWEOL 2356\n#define SCI_GETDOCPOINTER 2357\n#define SCI_SETDOCPOINTER 2358\n#define SCI_SETMODEVENTMASK 2359\n#define EDGE_NONE 0\n#define EDGE_LINE 1\n#define EDGE_BACKGROUND 2\n#define EDGE_MULTILINE 3\n#define SCI_GETEDGECOLUMN 2360\n#define SCI_SETEDGECOLUMN 2361\n#define SCI_GETEDGEMODE 2362\n#define SCI_SETEDGEMODE 2363\n#define SCI_GETEDGECOLOUR 2364\n#define SCI_SETEDGECOLOUR 2365\n#define SCI_MULTIEDGEADDLINE 2694\n#define SCI_MULTIEDGECLEARALL 2695\n#define SCI_SEARCHANCHOR 2366\n#define SCI_SEARCHNEXT 2367\n#define SCI_SEARCHPREV 2368\n#define SCI_LINESONSCREEN 2370\n#define SC_POPUP_NEVER 0\n#define SC_POPUP_ALL 1\n#define SC_POPUP_TEXT 2\n#define SCI_USEPOPUP 2371\n#define SCI_SELECTIONISRECTANGLE 2372\n#define SCI_SETZOOM 2373\n#define SCI_GETZOOM 2374\n#define SCI_CREATEDOCUMENT 2375\n#define SCI_ADDREFDOCUMENT 2376\n#define SCI_RELEASEDOCUMENT 2377\n#define SCI_GETMODEVENTMASK 2378\n#define SCI_SETFOCUS 2380\n#define SCI_GETFOCUS 2381\n#define SC_STATUS_OK 0\n#define SC_STATUS_FAILURE 1\n#define SC_STATUS_BADALLOC 2\n#define SC_STATUS_WARN_START 1000\n#define SC_STATUS_WARN_REGEX 1001\n#define SCI_SETSTATUS 2382\n#define SCI_GETSTATUS 2383\n#define SCI_SETMOUSEDOWNCAPTURES 2384\n#define SCI_GETMOUSEDOWNCAPTURES 2385\n#define SCI_SETMOUSEWHEELCAPTURES 2696\n#define SCI_GETMOUSEWHEELCAPTURES 2697\n#define SC_CURSORNORMAL -1\n#define SC_CURSORARROW 2\n#define SC_CURSORWAIT 4\n#define SC_CURSORREVERSEARROW 7\n#define SCI_SETCURSOR 2386\n#define SCI_GETCURSOR 2387\n#define SCI_SETCONTROLCHARSYMBOL 2388\n#define SCI_GETCONTROLCHARSYMBOL 2389\n#define SCI_WORDPARTLEFT 2390\n#define SCI_WORDPARTLEFTEXTEND 2391\n#define SCI_WORDPARTRIGHT 2392\n#define SCI_WORDPARTRIGHTEXTEND 2393\n#define VISIBLE_SLOP 0x01\n#define VISIBLE_STRICT 0x04\n#define SCI_SETVISIBLEPOLICY 2394\n#define SCI_DELLINELEFT 2395\n#define SCI_DELLINERIGHT 2396\n#define SCI_SETXOFFSET 2397\n#define SCI_GETXOFFSET 2398\n#define SCI_CHOOSECARETX 2399\n#define SCI_GRABFOCUS 2400\n#define CARET_SLOP 0x01\n#define CARET_STRICT 0x04\n#define CARET_JUMPS 0x10\n#define CARET_EVEN 0x08\n#define SCI_SETXCARETPOLICY 2402\n#define SCI_SETYCARETPOLICY 2403\n#define SCI_SETPRINTWRAPMODE 2406\n#define SCI_GETPRINTWRAPMODE 2407\n#define SCI_SETHOTSPOTACTIVEFORE 2410\n#define SCI_GETHOTSPOTACTIVEFORE 2494\n#define SCI_SETHOTSPOTACTIVEBACK 2411\n#define SCI_GETHOTSPOTACTIVEBACK 2495\n#define SCI_SETHOTSPOTACTIVEUNDERLINE 2412\n#define SCI_GETHOTSPOTACTIVEUNDERLINE 2496\n#define SCI_SETHOTSPOTSINGLELINE 2421\n#define SCI_GETHOTSPOTSINGLELINE 2497\n#define SCI_PARADOWN 2413\n#define SCI_PARADOWNEXTEND 2414\n#define SCI_PARAUP 2415\n#define SCI_PARAUPEXTEND 2416\n#define SCI_POSITIONBEFORE 2417\n#define SCI_POSITIONAFTER 2418\n#define SCI_POSITIONRELATIVE 2670\n#define SCI_COPYRANGE 2419\n#define SCI_COPYTEXT 2420\n#define SC_SEL_STREAM 0\n#define SC_SEL_RECTANGLE 1\n#define SC_SEL_LINES 2\n#define SC_SEL_THIN 3\n#define SCI_SETSELECTIONMODE 2422\n#define SCI_GETSELECTIONMODE 2423\n#define SCI_GETLINESELSTARTPOSITION 2424\n#define SCI_GETLINESELENDPOSITION 2425\n#define SCI_LINEDOWNRECTEXTEND 2426\n#define SCI_LINEUPRECTEXTEND 2427\n#define SCI_CHARLEFTRECTEXTEND 2428\n#define SCI_CHARRIGHTRECTEXTEND 2429\n#define SCI_HOMERECTEXTEND 2430\n#define SCI_VCHOMERECTEXTEND 2431\n#define SCI_LINEENDRECTEXTEND 2432\n#define SCI_PAGEUPRECTEXTEND 2433\n#define SCI_PAGEDOWNRECTEXTEND 2434\n#define SCI_STUTTEREDPAGEUP 2435\n#define SCI_STUTTEREDPAGEUPEXTEND 2436\n#define SCI_STUTTEREDPAGEDOWN 2437\n#define SCI_STUTTEREDPAGEDOWNEXTEND 2438\n#define SCI_WORDLEFTEND 2439\n#define SCI_WORDLEFTENDEXTEND 2440\n#define SCI_WORDRIGHTEND 2441\n#define SCI_WORDRIGHTENDEXTEND 2442\n#define SCI_SETWHITESPACECHARS 2443\n#define SCI_GETWHITESPACECHARS 2647\n#define SCI_SETPUNCTUATIONCHARS 2648\n#define SCI_GETPUNCTUATIONCHARS 2649\n#define SCI_SETCHARSDEFAULT 2444\n#define SCI_AUTOCGETCURRENT 2445\n#define SCI_AUTOCGETCURRENTTEXT 2610\n#define SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE 0\n#define SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE 1\n#define SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR 2634\n#define SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR 2635\n#define SC_MULTIAUTOC_ONCE 0\n#define SC_MULTIAUTOC_EACH 1\n#define SCI_AUTOCSETMULTI 2636\n#define SCI_AUTOCGETMULTI 2637\n#define SC_ORDER_PRESORTED 0\n#define SC_ORDER_PERFORMSORT 1\n#define SC_ORDER_CUSTOM 2\n#define SCI_AUTOCSETORDER 2660\n#define SCI_AUTOCGETORDER 2661\n#define SCI_ALLOCATE 2446\n#define SCI_TARGETASUTF8 2447\n#define SCI_SETLENGTHFORENCODE 2448\n#define SCI_ENCODEDFROMUTF8 2449\n#define SCI_FINDCOLUMN 2456\n#define SCI_GETCARETSTICKY 2457\n#define SCI_SETCARETSTICKY 2458\n#define SC_CARETSTICKY_OFF 0\n#define SC_CARETSTICKY_ON 1\n#define SC_CARETSTICKY_WHITESPACE 2\n#define SCI_TOGGLECARETSTICKY 2459\n#define SCI_SETPASTECONVERTENDINGS 2467\n#define SCI_GETPASTECONVERTENDINGS 2468\n#define SCI_SELECTIONDUPLICATE 2469\n#define SC_ALPHA_TRANSPARENT 0\n#define SC_ALPHA_OPAQUE 255\n#define SC_ALPHA_NOALPHA 256\n#define SCI_SETCARETLINEBACKALPHA 2470\n#define SCI_GETCARETLINEBACKALPHA 2471\n#define CARETSTYLE_INVISIBLE 0\n#define CARETSTYLE_LINE 1\n#define CARETSTYLE_BLOCK 2\n#define SCI_SETCARETSTYLE 2512\n#define SCI_GETCARETSTYLE 2513\n#define SCI_SETINDICATORCURRENT 2500\n#define SCI_GETINDICATORCURRENT 2501\n#define SCI_SETINDICATORVALUE 2502\n#define SCI_GETINDICATORVALUE 2503\n#define SCI_INDICATORFILLRANGE 2504\n#define SCI_INDICATORCLEARRANGE 2505\n#define SCI_INDICATORALLONFOR 2506\n#define SCI_INDICATORVALUEAT 2507\n#define SCI_INDICATORSTART 2508\n#define SCI_INDICATOREND 2509\n#define SCI_SETPOSITIONCACHE 2514\n#define SCI_GETPOSITIONCACHE 2515\n#define SCI_COPYALLOWLINE 2519\n#define SCI_GETCHARACTERPOINTER 2520\n#define SCI_GETRANGEPOINTER 2643\n#define SCI_GETGAPPOSITION 2644\n#define SCI_INDICSETALPHA 2523\n#define SCI_INDICGETALPHA 2524\n#define SCI_INDICSETOUTLINEALPHA 2558\n#define SCI_INDICGETOUTLINEALPHA 2559\n#define SCI_SETEXTRAASCENT 2525\n#define SCI_GETEXTRAASCENT 2526\n#define SCI_SETEXTRADESCENT 2527\n#define SCI_GETEXTRADESCENT 2528\n#define SCI_MARKERSYMBOLDEFINED 2529\n#define SCI_MARGINSETTEXT 2530\n#define SCI_MARGINGETTEXT 2531\n#define SCI_MARGINSETSTYLE 2532\n#define SCI_MARGINGETSTYLE 2533\n#define SCI_MARGINSETSTYLES 2534\n#define SCI_MARGINGETSTYLES 2535\n#define SCI_MARGINTEXTCLEARALL 2536\n#define SCI_MARGINSETSTYLEOFFSET 2537\n#define SCI_MARGINGETSTYLEOFFSET 2538\n#define SC_MARGINOPTION_NONE 0\n#define SC_MARGINOPTION_SUBLINESELECT 1\n#define SCI_SETMARGINOPTIONS 2539\n#define SCI_GETMARGINOPTIONS 2557\n#define SCI_ANNOTATIONSETTEXT 2540\n#define SCI_ANNOTATIONGETTEXT 2541\n#define SCI_ANNOTATIONSETSTYLE 2542\n#define SCI_ANNOTATIONGETSTYLE 2543\n#define SCI_ANNOTATIONSETSTYLES 2544\n#define SCI_ANNOTATIONGETSTYLES 2545\n#define SCI_ANNOTATIONGETLINES 2546\n#define SCI_ANNOTATIONCLEARALL 2547\n#define ANNOTATION_HIDDEN 0\n#define ANNOTATION_STANDARD 1\n#define ANNOTATION_BOXED 2\n#define ANNOTATION_INDENTED 3\n#define SCI_ANNOTATIONSETVISIBLE 2548\n#define SCI_ANNOTATIONGETVISIBLE 2549\n#define SCI_ANNOTATIONSETSTYLEOFFSET 2550\n#define SCI_ANNOTATIONGETSTYLEOFFSET 2551\n#define SCI_RELEASEALLEXTENDEDSTYLES 2552\n#define SCI_ALLOCATEEXTENDEDSTYLES 2553\n#define UNDO_MAY_COALESCE 1\n#define SCI_ADDUNDOACTION 2560\n#define SCI_CHARPOSITIONFROMPOINT 2561\n#define SCI_CHARPOSITIONFROMPOINTCLOSE 2562\n#define SCI_SETMOUSESELECTIONRECTANGULARSWITCH 2668\n#define SCI_GETMOUSESELECTIONRECTANGULARSWITCH 2669\n#define SCI_SETMULTIPLESELECTION 2563\n#define SCI_GETMULTIPLESELECTION 2564\n#define SCI_SETADDITIONALSELECTIONTYPING 2565\n#define SCI_GETADDITIONALSELECTIONTYPING 2566\n#define SCI_SETADDITIONALCARETSBLINK 2567\n#define SCI_GETADDITIONALCARETSBLINK 2568\n#define SCI_SETADDITIONALCARETSVISIBLE 2608\n#define SCI_GETADDITIONALCARETSVISIBLE 2609\n#define SCI_GETSELECTIONS 2570\n#define SCI_GETSELECTIONEMPTY 2650\n#define SCI_CLEARSELECTIONS 2571\n#define SCI_SETSELECTION 2572\n#define SCI_ADDSELECTION 2573\n#define SCI_DROPSELECTIONN 2671\n#define SCI_SETMAINSELECTION 2574\n#define SCI_GETMAINSELECTION 2575\n#define SCI_SETSELECTIONNCARET 2576\n#define SCI_GETSELECTIONNCARET 2577\n#define SCI_SETSELECTIONNANCHOR 2578\n#define SCI_GETSELECTIONNANCHOR 2579\n#define SCI_SETSELECTIONNCARETVIRTUALSPACE 2580\n#define SCI_GETSELECTIONNCARETVIRTUALSPACE 2581\n#define SCI_SETSELECTIONNANCHORVIRTUALSPACE 2582\n#define SCI_GETSELECTIONNANCHORVIRTUALSPACE 2583\n#define SCI_SETSELECTIONNSTART 2584\n#define SCI_GETSELECTIONNSTART 2585\n#define SCI_SETSELECTIONNEND 2586\n#define SCI_GETSELECTIONNEND 2587\n#define SCI_SETRECTANGULARSELECTIONCARET 2588\n#define SCI_GETRECTANGULARSELECTIONCARET 2589\n#define SCI_SETRECTANGULARSELECTIONANCHOR 2590\n#define SCI_GETRECTANGULARSELECTIONANCHOR 2591\n#define SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE 2592\n#define SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE 2593\n#define SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE 2594\n#define SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE 2595\n#define SCVS_NONE 0\n#define SCVS_RECTANGULARSELECTION 1\n#define SCVS_USERACCESSIBLE 2\n#define SCVS_NOWRAPLINESTART 4\n#define SCI_SETVIRTUALSPACEOPTIONS 2596\n#define SCI_GETVIRTUALSPACEOPTIONS 2597\n#define SCI_SETRECTANGULARSELECTIONMODIFIER 2598\n#define SCI_GETRECTANGULARSELECTIONMODIFIER 2599\n#define SCI_SETADDITIONALSELFORE 2600\n#define SCI_SETADDITIONALSELBACK 2601\n#define SCI_SETADDITIONALSELALPHA 2602\n#define SCI_GETADDITIONALSELALPHA 2603\n#define SCI_SETADDITIONALCARETFORE 2604\n#define SCI_GETADDITIONALCARETFORE 2605\n#define SCI_ROTATESELECTION 2606\n#define SCI_SWAPMAINANCHORCARET 2607\n#define SCI_MULTIPLESELECTADDNEXT 2688\n#define SCI_MULTIPLESELECTADDEACH 2689\n#define SCI_CHANGELEXERSTATE 2617\n#define SCI_CONTRACTEDFOLDNEXT 2618\n#define SCI_VERTICALCENTRECARET 2619\n#define SCI_MOVESELECTEDLINESUP 2620\n#define SCI_MOVESELECTEDLINESDOWN 2621\n#define SCI_SETIDENTIFIER 2622\n#define SCI_GETIDENTIFIER 2623\n#define SCI_RGBAIMAGESETWIDTH 2624\n#define SCI_RGBAIMAGESETHEIGHT 2625\n#define SCI_RGBAIMAGESETSCALE 2651\n#define SCI_MARKERDEFINERGBAIMAGE 2626\n#define SCI_REGISTERRGBAIMAGE 2627\n#define SCI_SCROLLTOSTART 2628\n#define SCI_SCROLLTOEND 2629\n#define SC_TECHNOLOGY_DEFAULT 0\n#define SC_TECHNOLOGY_DIRECTWRITE 1\n#define SC_TECHNOLOGY_DIRECTWRITERETAIN 2\n#define SC_TECHNOLOGY_DIRECTWRITEDC 3\n#define SCI_SETTECHNOLOGY 2630\n#define SCI_GETTECHNOLOGY 2631\n#define SCI_CREATELOADER 2632\n#define SCI_FINDINDICATORSHOW 2640\n#define SCI_FINDINDICATORFLASH 2641\n#define SCI_FINDINDICATORHIDE 2642\n#define SCI_VCHOMEDISPLAY 2652\n#define SCI_VCHOMEDISPLAYEXTEND 2653\n#define SCI_GETCARETLINEVISIBLEALWAYS 2654\n#define SCI_SETCARETLINEVISIBLEALWAYS 2655\n#define SC_LINE_END_TYPE_DEFAULT 0\n#define SC_LINE_END_TYPE_UNICODE 1\n#define SCI_SETLINEENDTYPESALLOWED 2656\n#define SCI_GETLINEENDTYPESALLOWED 2657\n#define SCI_GETLINEENDTYPESACTIVE 2658\n#define SCI_SETREPRESENTATION 2665\n#define SCI_GETREPRESENTATION 2666\n#define SCI_CLEARREPRESENTATION 2667\n#define SCI_STARTRECORD 3001\n#define SCI_STOPRECORD 3002\n#define SCI_SETLEXER 4001\n#define SCI_GETLEXER 4002\n#define SCI_COLOURISE 4003\n#define SCI_SETPROPERTY 4004\n#define KEYWORDSET_MAX 8\n#define SCI_SETKEYWORDS 4005\n#define SCI_SETLEXERLANGUAGE 4006\n#define SCI_LOADLEXERLIBRARY 4007\n#define SCI_GETPROPERTY 4008\n#define SCI_GETPROPERTYEXPANDED 4009\n#define SCI_GETPROPERTYINT 4010\n#define SCI_GETSTYLEBITSNEEDED 4011\n#define SCI_GETLEXERLANGUAGE 4012\n#define SCI_PRIVATELEXERCALL 4013\n#define SCI_PROPERTYNAMES 4014\n#define SC_TYPE_BOOLEAN 0\n#define SC_TYPE_INTEGER 1\n#define SC_TYPE_STRING 2\n#define SCI_PROPERTYTYPE 4015\n#define SCI_DESCRIBEPROPERTY 4016\n#define SCI_DESCRIBEKEYWORDSETS 4017\n#define SCI_GETLINEENDTYPESSUPPORTED 4018\n#define SCI_ALLOCATESUBSTYLES 4020\n#define SCI_GETSUBSTYLESSTART 4021\n#define SCI_GETSUBSTYLESLENGTH 4022\n#define SCI_GETSTYLEFROMSUBSTYLE 4027\n#define SCI_GETPRIMARYSTYLEFROMSTYLE 4028\n#define SCI_FREESUBSTYLES 4023\n#define SCI_SETIDENTIFIERS 4024\n#define SCI_DISTANCETOSECONDARYSTYLES 4025\n#define SCI_GETSUBSTYLEBASES 4026\n#define SC_MOD_INSERTTEXT 0x1\n#define SC_MOD_DELETETEXT 0x2\n#define SC_MOD_CHANGESTYLE 0x4\n#define SC_MOD_CHANGEFOLD 0x8\n#define SC_PERFORMED_USER 0x10\n#define SC_PERFORMED_UNDO 0x20\n#define SC_PERFORMED_REDO 0x40\n#define SC_MULTISTEPUNDOREDO 0x80\n#define SC_LASTSTEPINUNDOREDO 0x100\n#define SC_MOD_CHANGEMARKER 0x200\n#define SC_MOD_BEFOREINSERT 0x400\n#define SC_MOD_BEFOREDELETE 0x800\n#define SC_MULTILINEUNDOREDO 0x1000\n#define SC_STARTACTION 0x2000\n#define SC_MOD_CHANGEINDICATOR 0x4000\n#define SC_MOD_CHANGELINESTATE 0x8000\n#define SC_MOD_CHANGEMARGIN 0x10000\n#define SC_MOD_CHANGEANNOTATION 0x20000\n#define SC_MOD_CONTAINER 0x40000\n#define SC_MOD_LEXERSTATE 0x80000\n#define SC_MOD_INSERTCHECK 0x100000\n#define SC_MOD_CHANGETABSTOPS 0x200000\n#define SC_MODEVENTMASKALL 0x3FFFFF\n#define SC_UPDATE_CONTENT 0x1\n#define SC_UPDATE_SELECTION 0x2\n#define SC_UPDATE_V_SCROLL 0x4\n#define SC_UPDATE_H_SCROLL 0x8\n#define SCEN_CHANGE 768\n#define SCEN_SETFOCUS 512\n#define SCEN_KILLFOCUS 256\n#define SCK_DOWN 300\n#define SCK_UP 301\n#define SCK_LEFT 302\n#define SCK_RIGHT 303\n#define SCK_HOME 304\n#define SCK_END 305\n#define SCK_PRIOR 306\n#define SCK_NEXT 307\n#define SCK_DELETE 308\n#define SCK_INSERT 309\n#define SCK_ESCAPE 7\n#define SCK_BACK 8\n#define SCK_TAB 9\n#define SCK_RETURN 13\n#define SCK_ADD 310\n#define SCK_SUBTRACT 311\n#define SCK_DIVIDE 312\n#define SCK_WIN 313\n#define SCK_RWIN 314\n#define SCK_MENU 315\n#define SCMOD_NORM 0\n#define SCMOD_SHIFT 1\n#define SCMOD_CTRL 2\n#define SCMOD_ALT 4\n#define SCMOD_SUPER 8\n#define SCMOD_META 16\n#define SC_AC_FILLUP 1\n#define SC_AC_DOUBLECLICK 2\n#define SC_AC_TAB 3\n#define SC_AC_NEWLINE 4\n#define SC_AC_COMMAND 5\n#define SCN_STYLENEEDED 2000\n#define SCN_CHARADDED 2001\n#define SCN_SAVEPOINTREACHED 2002\n#define SCN_SAVEPOINTLEFT 2003\n#define SCN_MODIFYATTEMPTRO 2004\n#define SCN_KEY 2005\n#define SCN_DOUBLECLICK 2006\n#define SCN_UPDATEUI 2007\n#define SCN_MODIFIED 2008\n#define SCN_MACRORECORD 2009\n#define SCN_MARGINCLICK 2010\n#define SCN_NEEDSHOWN 2011\n#define SCN_PAINTED 2013\n#define SCN_USERLISTSELECTION 2014\n#define SCN_URIDROPPED 2015\n#define SCN_DWELLSTART 2016\n#define SCN_DWELLEND 2017\n#define SCN_ZOOM 2018\n#define SCN_HOTSPOTCLICK 2019\n#define SCN_HOTSPOTDOUBLECLICK 2020\n#define SCN_CALLTIPCLICK 2021\n#define SCN_AUTOCSELECTION 2022\n#define SCN_INDICATORCLICK 2023\n#define SCN_INDICATORRELEASE 2024\n#define SCN_AUTOCCANCELLED 2025\n#define SCN_AUTOCCHARDELETED 2026\n#define SCN_HOTSPOTRELEASECLICK 2027\n#define SCN_FOCUSIN 2028\n#define SCN_FOCUSOUT 2029\n#define SCN_AUTOCCOMPLETED 2030\n#define SCN_MARGINRIGHTCLICK 2031\n/* --Autogenerated -- end of section automatically generated from Scintilla.iface */\n\n/* These structures are defined to be exactly the same shape as the Win32\n * CHARRANGE, TEXTRANGE, FINDTEXTEX, FORMATRANGE, and NMHDR structs.\n * So older code that treats Scintilla as a RichEdit will work. */\n\nstruct Sci_CharacterRange {\n\tSci_PositionCR cpMin;\n\tSci_PositionCR cpMax;\n};\n\nstruct Sci_TextRange {\n\tstruct Sci_CharacterRange chrg;\n\tchar *lpstrText;\n};\n\nstruct Sci_TextToFind {\n\tstruct Sci_CharacterRange chrg;\n\tconst char *lpstrText;\n\tstruct Sci_CharacterRange chrgText;\n};\n\ntypedef void *Sci_SurfaceID;\n\nstruct Sci_Rectangle {\n\tint left;\n\tint top;\n\tint right;\n\tint bottom;\n};\n\n/* This structure is used in printing and requires some of the graphics types\n * from Platform.h.  Not needed by most client code. */\n\nstruct Sci_RangeToFormat {\n\tSci_SurfaceID hdc;\n\tSci_SurfaceID hdcTarget;\n\tstruct Sci_Rectangle rc;\n\tstruct Sci_Rectangle rcPage;\n\tstruct Sci_CharacterRange chrg;\n};\n\n#ifndef __cplusplus\n/* For the GTK+ platform, g-ir-scanner needs to have these typedefs. This\n * is not required in C++ code and actually seems to break ScintillaEditPy */\ntypedef struct Sci_NotifyHeader Sci_NotifyHeader;\ntypedef struct SCNotification SCNotification;\n#endif\n\nstruct Sci_NotifyHeader {\n\t/* Compatible with Windows NMHDR.\n\t * hwndFrom is really an environment specific window handle or pointer\n\t * but most clients of Scintilla.h do not have this type visible. */\n\tvoid *hwndFrom;\n\tuptr_t idFrom;\n\tunsigned int code;\n};\n\nstruct SCNotification {\n\tSci_NotifyHeader nmhdr;\n\tSci_Position position;\n\t/* SCN_STYLENEEDED, SCN_DOUBLECLICK, SCN_MODIFIED, SCN_MARGINCLICK, */\n\t/* SCN_NEEDSHOWN, SCN_DWELLSTART, SCN_DWELLEND, SCN_CALLTIPCLICK, */\n\t/* SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK, SCN_HOTSPOTRELEASECLICK, */\n\t/* SCN_INDICATORCLICK, SCN_INDICATORRELEASE, */\n\t/* SCN_USERLISTSELECTION, SCN_AUTOCSELECTION */\n\n\tint ch;\n\t/* SCN_CHARADDED, SCN_KEY, SCN_AUTOCCOMPLETED, SCN_AUTOCSELECTION, */\n\t/* SCN_USERLISTSELECTION */\n\tint modifiers;\n\t/* SCN_KEY, SCN_DOUBLECLICK, SCN_HOTSPOTCLICK, SCN_HOTSPOTDOUBLECLICK, */\n\t/* SCN_HOTSPOTRELEASECLICK, SCN_INDICATORCLICK, SCN_INDICATORRELEASE, */\n\n\tint modificationType;\t/* SCN_MODIFIED */\n\tconst char *text;\n\t/* SCN_MODIFIED, SCN_USERLISTSELECTION, SCN_AUTOCSELECTION, SCN_URIDROPPED */\n\n\tSci_Position length;\t\t/* SCN_MODIFIED */\n\tSci_Position linesAdded;\t/* SCN_MODIFIED */\n\tint message;\t/* SCN_MACRORECORD */\n\tuptr_t wParam;\t/* SCN_MACRORECORD */\n\tsptr_t lParam;\t/* SCN_MACRORECORD */\n\tSci_Position line;\t\t/* SCN_MODIFIED */\n\tint foldLevelNow;\t/* SCN_MODIFIED */\n\tint foldLevelPrev;\t/* SCN_MODIFIED */\n\tint margin;\t\t/* SCN_MARGINCLICK */\n\tint listType;\t/* SCN_USERLISTSELECTION */\n\tint x;\t\t\t/* SCN_DWELLSTART, SCN_DWELLEND */\n\tint y;\t\t/* SCN_DWELLSTART, SCN_DWELLEND */\n\tint token;\t\t/* SCN_MODIFIED with SC_MOD_CONTAINER */\n\tSci_Position annotationLinesAdded;\t/* SCN_MODIFIED with SC_MOD_CHANGEANNOTATION */\n\tint updated;\t/* SCN_UPDATEUI */\n\tint listCompletionMethod;\n\t/* SCN_AUTOCSELECTION, SCN_AUTOCCOMPLETED, SCN_USERLISTSELECTION, */\n};\n\n#ifdef INCLUDE_DEPRECATED_FEATURES\n\n#define SCI_SETKEYSUNICODE 2521\n#define SCI_GETKEYSUNICODE 2522\n\n#define CharacterRange Sci_CharacterRange\n#define TextRange Sci_TextRange\n#define TextToFind Sci_TextToFind\n#define RangeToFormat Sci_RangeToFormat\n#define NotifyHeader Sci_NotifyHeader\n\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/include/Scintilla.iface",
    "content": "## First line may be used for shbang\n\n## This file defines the interface to Scintilla\n\n## Copyright 2000-2003 by Neil Hodgson <neilh@scintilla.org>\n## The License.txt file describes the conditions under which this software may be distributed.\n\n## A line starting with ## is a pure comment and should be stripped by readers.\n## A line starting with #! is for future shbang use\n## A line starting with # followed by a space is a documentation comment and refers\n## to the next feature definition.\n\n## Each feature is defined by a line starting with fun, get, set, val or evt.\n##     cat -> start a category\n##     fun -> a function\n##     get -> a property get function\n##     set -> a property set function\n##     val -> definition of a constant\n##     evt -> an event\n##     enu -> associate an enumeration with a set of vals with a prefix\n##     lex -> associate a lexer with the lexical classes it produces\n##\n## All other feature names should be ignored. They may be defined in the future.\n## A property may have a set function, a get function or both. Each will have\n## \"Get\" or \"Set\" in their names and the corresponding name will have the obvious switch.\n## A property may be subscripted, in which case the first parameter is the subscript.\n## fun, get, and set features have a strict syntax:\n## <featureType><ws><returnType><ws><name>[=<number](<param>,<param>)\n## where <ws> stands for white space.\n## param may be empty (null value) or is <paramType><ws><paramName>[=<value>]\n## Additional white space is allowed between elements.\n## The syntax for evt is <featureType><ws><returnType><ws><name>[=<number]([<param>[,<param>]*])\n## Feature names that contain an underscore are defined by Windows, so in these\n## cases, using the Windows definition is preferred where available.\n## The feature numbers are stable so features will not be renumbered.\n## Features may be removed but they will go through a period of deprecation\n## before removal which is signalled by moving them into the Deprecated category.\n##\n## enu has the syntax enu<ws><enumeration>=<prefix>[<ws><prefix>]* where all the val\n## features in this file starting with a given <prefix> are considered part of the\n## enumeration.\n##\n## lex has the syntax lex<ws><name>=<lexerVal><ws><prefix>[<ws><prefix>]*\n## where name is a reasonably capitalised (Python, XML) identifier or UI name,\n## lexerVal is the val used to specify the lexer, and the list of prefixes is similar\n## to enu. The name may not be the same as that used within the lexer so the lexerVal\n## should be used to tie these entities together.\n\n## Types:\n##     void\n##     int\n##     bool -> integer, 1=true, 0=false\n##     position -> integer position in a document\n##     colour -> colour integer containing red, green and blue bytes.\n##     string -> pointer to const character\n##     stringresult -> pointer to character, NULL-> return size of result\n##     cells -> pointer to array of cells, each cell containing a style byte and character byte\n##     textrange -> range of a min and a max position with an output string\n##     findtext -> searchrange, text -> foundposition\n##     keymod -> integer containing key in low half and modifiers in high half\n##     formatrange\n## Types no longer used:\n##     findtextex -> searchrange\n##     charrange -> range of a min and a max position\n##     charrangeresult -> like charrange, but output param\n##     countedstring\n##     point -> x,y\n##     pointresult  -> like point, but output param\n##     rectangle -> left,top,right,bottom\n## Client code should ignore definitions containing types it does not understand, except\n## for possibly #defining the constants\n\n## Line numbers and positions start at 0.\n## String arguments may contain NUL ('\\0') characters where the calls provide a length\n## argument and retrieve NUL characters. APIs marked as NUL-terminated also have a\n## NUL appended but client code should calculate the size that will be returned rather\n## than relying upon the NUL whenever possible. Allow for the extra NUL character when\n## allocating buffers. The size to allocate for a stringresult (not including NUL) can be\n## determined by calling with a NULL (0) pointer.\n\ncat Basics\n\n################################################\n## For Scintilla.h\nval INVALID_POSITION=-1\n# Define start of Scintilla messages to be greater than all Windows edit (EM_*) messages\n# as many EM_ messages can be used although that use is deprecated.\nval SCI_START=2000\nval SCI_OPTIONAL_START=3000\nval SCI_LEXER_START=4000\n\n# Add text to the document at current position.\nfun void AddText=2001(int length, string text)\n\n# Add array of cells to document.\nfun void AddStyledText=2002(int length, cells c)\n\n# Insert string at a position.\nfun void InsertText=2003(position pos, string text)\n\n# Change the text that is being inserted in response to SC_MOD_INSERTCHECK\nfun void ChangeInsertion=2672(int length, string text)\n\n# Delete all text in the document.\nfun void ClearAll=2004(,)\n\n# Delete a range of text in the document.\nfun void DeleteRange=2645(position start, int lengthDelete)\n\n# Set all style bytes to 0, remove all folding information.\nfun void ClearDocumentStyle=2005(,)\n\n# Returns the number of bytes in the document.\nget int GetLength=2006(,)\n\n# Returns the character byte at the position.\nget int GetCharAt=2007(position pos,)\n\n# Returns the position of the caret.\nget position GetCurrentPos=2008(,)\n\n# Returns the position of the opposite end of the selection to the caret.\nget position GetAnchor=2009(,)\n\n# Returns the style byte at the position.\nget int GetStyleAt=2010(position pos,)\n\n# Redoes the next action on the undo history.\nfun void Redo=2011(,)\n\n# Choose between collecting actions into the undo\n# history and discarding them.\nset void SetUndoCollection=2012(bool collectUndo,)\n\n# Select all the text in the document.\nfun void SelectAll=2013(,)\n\n# Remember the current position in the undo history as the position\n# at which the document was saved.\nfun void SetSavePoint=2014(,)\n\n# Retrieve a buffer of cells.\n# Returns the number of bytes in the buffer not including terminating NULs.\nfun int GetStyledText=2015(, textrange tr)\n\n# Are there any redoable actions in the undo history?\nfun bool CanRedo=2016(,)\n\n# Retrieve the line number at which a particular marker is located.\nfun int MarkerLineFromHandle=2017(int markerHandle,)\n\n# Delete a marker.\nfun void MarkerDeleteHandle=2018(int markerHandle,)\n\n# Is undo history being collected?\nget bool GetUndoCollection=2019(,)\n\nenu WhiteSpace=SCWS_\nval SCWS_INVISIBLE=0\nval SCWS_VISIBLEALWAYS=1\nval SCWS_VISIBLEAFTERINDENT=2\nval SCWS_VISIBLEONLYININDENT=3\n\n# Are white space characters currently visible?\n# Returns one of SCWS_* constants.\nget int GetViewWS=2020(,)\n\n# Make white space characters invisible, always visible or visible outside indentation.\nset void SetViewWS=2021(int viewWS,)\n\nenu TabDrawMode=SCTD_\nval SCTD_LONGARROW=0\nval SCTD_STRIKEOUT=1\n\n# Retrieve the current tab draw mode.\n# Returns one of SCTD_* constants.\nget int GetTabDrawMode=2698(,)\n\n# Set how tabs are drawn when visible.\nset void SetTabDrawMode=2699(int tabDrawMode,)\n\n# Find the position from a point within the window.\nfun position PositionFromPoint=2022(int x, int y)\n\n# Find the position from a point within the window but return\n# INVALID_POSITION if not close to text.\nfun position PositionFromPointClose=2023(int x, int y)\n\n# Set caret to start of a line and ensure it is visible.\nfun void GotoLine=2024(int line,)\n\n# Set caret to a position and ensure it is visible.\nfun void GotoPos=2025(position caret,)\n\n# Set the selection anchor to a position. The anchor is the opposite\n# end of the selection from the caret.\nset void SetAnchor=2026(position anchor,)\n\n# Retrieve the text of the line containing the caret.\n# Returns the index of the caret on the line.\n# Result is NUL-terminated.\nfun int GetCurLine=2027(int length, stringresult text)\n\n# Retrieve the position of the last correctly styled character.\nget position GetEndStyled=2028(,)\n\nenu EndOfLine=SC_EOL_\nval SC_EOL_CRLF=0\nval SC_EOL_CR=1\nval SC_EOL_LF=2\n\n# Convert all line endings in the document to one mode.\nfun void ConvertEOLs=2029(int eolMode,)\n\n# Retrieve the current end of line mode - one of CRLF, CR, or LF.\nget int GetEOLMode=2030(,)\n\n# Set the current end of line mode.\nset void SetEOLMode=2031(int eolMode,)\n\n# Set the current styling position to start.\n# The unused parameter is no longer used and should be set to 0.\nfun void StartStyling=2032(position start, int unused)\n\n# Change style from current styling position for length characters to a style\n# and move the current styling position to after this newly styled segment.\nfun void SetStyling=2033(int length, int style)\n\n# Is drawing done first into a buffer or direct to the screen?\nget bool GetBufferedDraw=2034(,)\n\n# If drawing is buffered then each line of text is drawn into a bitmap buffer\n# before drawing it to the screen to avoid flicker.\nset void SetBufferedDraw=2035(bool buffered,)\n\n# Change the visible size of a tab to be a multiple of the width of a space character.\nset void SetTabWidth=2036(int tabWidth,)\n\n# Retrieve the visible size of a tab.\nget int GetTabWidth=2121(,)\n\n# Clear explicit tabstops on a line.\nfun void ClearTabStops=2675(int line,)\n\n# Add an explicit tab stop for a line.\nfun void AddTabStop=2676(int line, int x)\n\n# Find the next explicit tab stop position on a line after a position.\nfun int GetNextTabStop=2677(int line, int x)\n\n# The SC_CP_UTF8 value can be used to enter Unicode mode.\n# This is the same value as CP_UTF8 in Windows\nval SC_CP_UTF8=65001\n\n# Set the code page used to interpret the bytes of the document as characters.\n# The SC_CP_UTF8 value can be used to enter Unicode mode.\nset void SetCodePage=2037(int codePage,)\n\nenu IMEInteraction=SC_IME_\nval SC_IME_WINDOWED=0\nval SC_IME_INLINE=1\n\n# Is the IME displayed in a window or inline?\nget int GetIMEInteraction=2678(,)\n\n# Choose to display the the IME in a winow or inline.\nset void SetIMEInteraction=2679(int imeInteraction,)\n\nenu MarkerSymbol=SC_MARK_\nval MARKER_MAX=31\nval SC_MARK_CIRCLE=0\nval SC_MARK_ROUNDRECT=1\nval SC_MARK_ARROW=2\nval SC_MARK_SMALLRECT=3\nval SC_MARK_SHORTARROW=4\nval SC_MARK_EMPTY=5\nval SC_MARK_ARROWDOWN=6\nval SC_MARK_MINUS=7\nval SC_MARK_PLUS=8\n\n# Shapes used for outlining column.\nval SC_MARK_VLINE=9\nval SC_MARK_LCORNER=10\nval SC_MARK_TCORNER=11\nval SC_MARK_BOXPLUS=12\nval SC_MARK_BOXPLUSCONNECTED=13\nval SC_MARK_BOXMINUS=14\nval SC_MARK_BOXMINUSCONNECTED=15\nval SC_MARK_LCORNERCURVE=16\nval SC_MARK_TCORNERCURVE=17\nval SC_MARK_CIRCLEPLUS=18\nval SC_MARK_CIRCLEPLUSCONNECTED=19\nval SC_MARK_CIRCLEMINUS=20\nval SC_MARK_CIRCLEMINUSCONNECTED=21\n\n# Invisible mark that only sets the line background colour.\nval SC_MARK_BACKGROUND=22\nval SC_MARK_DOTDOTDOT=23\nval SC_MARK_ARROWS=24\nval SC_MARK_PIXMAP=25\nval SC_MARK_FULLRECT=26\nval SC_MARK_LEFTRECT=27\nval SC_MARK_AVAILABLE=28\nval SC_MARK_UNDERLINE=29\nval SC_MARK_RGBAIMAGE=30\nval SC_MARK_BOOKMARK=31\n\nval SC_MARK_CHARACTER=10000\n\nenu MarkerOutline=SC_MARKNUM_\n# Markers used for outlining column.\nval SC_MARKNUM_FOLDEREND=25\nval SC_MARKNUM_FOLDEROPENMID=26\nval SC_MARKNUM_FOLDERMIDTAIL=27\nval SC_MARKNUM_FOLDERTAIL=28\nval SC_MARKNUM_FOLDERSUB=29\nval SC_MARKNUM_FOLDER=30\nval SC_MARKNUM_FOLDEROPEN=31\n\nval SC_MASK_FOLDERS=0xFE000000\n\n# Set the symbol used for a particular marker number.\nfun void MarkerDefine=2040(int markerNumber, int markerSymbol)\n\n# Set the foreground colour used for a particular marker number.\nset void MarkerSetFore=2041(int markerNumber, colour fore)\n\n# Set the background colour used for a particular marker number.\nset void MarkerSetBack=2042(int markerNumber, colour back)\n\n# Set the background colour used for a particular marker number when its folding block is selected.\nset void MarkerSetBackSelected=2292(int markerNumber, colour back)\n\n# Enable/disable highlight for current folding bloc (smallest one that contains the caret)\nfun void MarkerEnableHighlight=2293(bool enabled,)\n\n# Add a marker to a line, returning an ID which can be used to find or delete the marker.\nfun int MarkerAdd=2043(int line, int markerNumber)\n\n# Delete a marker from a line.\nfun void MarkerDelete=2044(int line, int markerNumber)\n\n# Delete all markers with a particular number from all lines.\nfun void MarkerDeleteAll=2045(int markerNumber,)\n\n# Get a bit mask of all the markers set on a line.\nfun int MarkerGet=2046(int line,)\n\n# Find the next line at or after lineStart that includes a marker in mask.\n# Return -1 when no more lines.\nfun int MarkerNext=2047(int lineStart, int markerMask)\n\n# Find the previous line before lineStart that includes a marker in mask.\nfun int MarkerPrevious=2048(int lineStart, int markerMask)\n\n# Define a marker from a pixmap.\nfun void MarkerDefinePixmap=2049(int markerNumber, string pixmap)\n\n# Add a set of markers to a line.\nfun void MarkerAddSet=2466(int line, int markerSet)\n\n# Set the alpha used for a marker that is drawn in the text area, not the margin.\nset void MarkerSetAlpha=2476(int markerNumber, int alpha)\n\nval SC_MAX_MARGIN=4\n\nenu MarginType=SC_MARGIN_\nval SC_MARGIN_SYMBOL=0\nval SC_MARGIN_NUMBER=1\nval SC_MARGIN_BACK=2\nval SC_MARGIN_FORE=3\nval SC_MARGIN_TEXT=4\nval SC_MARGIN_RTEXT=5\nval SC_MARGIN_COLOUR=6\n\n# Set a margin to be either numeric or symbolic.\nset void SetMarginTypeN=2240(int margin, int marginType)\n\n# Retrieve the type of a margin.\nget int GetMarginTypeN=2241(int margin,)\n\n# Set the width of a margin to a width expressed in pixels.\nset void SetMarginWidthN=2242(int margin, int pixelWidth)\n\n# Retrieve the width of a margin in pixels.\nget int GetMarginWidthN=2243(int margin,)\n\n# Set a mask that determines which markers are displayed in a margin.\nset void SetMarginMaskN=2244(int margin, int mask)\n\n# Retrieve the marker mask of a margin.\nget int GetMarginMaskN=2245(int margin,)\n\n# Make a margin sensitive or insensitive to mouse clicks.\nset void SetMarginSensitiveN=2246(int margin, bool sensitive)\n\n# Retrieve the mouse click sensitivity of a margin.\nget bool GetMarginSensitiveN=2247(int margin,)\n\n# Set the cursor shown when the mouse is inside a margin.\nset void SetMarginCursorN=2248(int margin, int cursor)\n\n# Retrieve the cursor shown in a margin.\nget int GetMarginCursorN=2249(int margin,)\n\n# Set the background colour of a margin. Only visible for SC_MARGIN_COLOUR.\nset void SetMarginBackN=2250(int margin, colour back)\n\n# Retrieve the background colour of a margin\nget colour GetMarginBackN=2251(int margin,)\n\n# Allocate a non-standard number of margins.\nset void SetMargins=2252(int margins,)\n\n# How many margins are there?.\nget int GetMargins=2253(,)\n\n# Styles in range 32..38 are predefined for parts of the UI and are not used as normal styles.\n# Style 39 is for future use.\nenu StylesCommon=STYLE_\nval STYLE_DEFAULT=32\nval STYLE_LINENUMBER=33\nval STYLE_BRACELIGHT=34\nval STYLE_BRACEBAD=35\nval STYLE_CONTROLCHAR=36\nval STYLE_INDENTGUIDE=37\nval STYLE_CALLTIP=38\nval STYLE_FOLDDISPLAYTEXT=39\nval STYLE_LASTPREDEFINED=39\nval STYLE_MAX=255\n\n# Character set identifiers are used in StyleSetCharacterSet.\n# The values are the same as the Windows *_CHARSET values.\nenu CharacterSet=SC_CHARSET_\nval SC_CHARSET_ANSI=0\nval SC_CHARSET_DEFAULT=1\nval SC_CHARSET_BALTIC=186\nval SC_CHARSET_CHINESEBIG5=136\nval SC_CHARSET_EASTEUROPE=238\nval SC_CHARSET_GB2312=134\nval SC_CHARSET_GREEK=161\nval SC_CHARSET_HANGUL=129\nval SC_CHARSET_MAC=77\nval SC_CHARSET_OEM=255\nval SC_CHARSET_RUSSIAN=204\nval SC_CHARSET_OEM866=866\nval SC_CHARSET_CYRILLIC=1251\nval SC_CHARSET_SHIFTJIS=128\nval SC_CHARSET_SYMBOL=2\nval SC_CHARSET_TURKISH=162\nval SC_CHARSET_JOHAB=130\nval SC_CHARSET_HEBREW=177\nval SC_CHARSET_ARABIC=178\nval SC_CHARSET_VIETNAMESE=163\nval SC_CHARSET_THAI=222\nval SC_CHARSET_8859_15=1000\n\n# Clear all the styles and make equivalent to the global default style.\nfun void StyleClearAll=2050(,)\n\n# Set the foreground colour of a style.\nset void StyleSetFore=2051(int style, colour fore)\n\n# Set the background colour of a style.\nset void StyleSetBack=2052(int style, colour back)\n\n# Set a style to be bold or not.\nset void StyleSetBold=2053(int style, bool bold)\n\n# Set a style to be italic or not.\nset void StyleSetItalic=2054(int style, bool italic)\n\n# Set the size of characters of a style.\nset void StyleSetSize=2055(int style, int sizePoints)\n\n# Set the font of a style.\nset void StyleSetFont=2056(int style, string fontName)\n\n# Set a style to have its end of line filled or not.\nset void StyleSetEOLFilled=2057(int style, bool eolFilled)\n\n# Reset the default style to its state at startup\nfun void StyleResetDefault=2058(,)\n\n# Set a style to be underlined or not.\nset void StyleSetUnderline=2059(int style, bool underline)\n\nenu CaseVisible=SC_CASE_\nval SC_CASE_MIXED=0\nval SC_CASE_UPPER=1\nval SC_CASE_LOWER=2\nval SC_CASE_CAMEL=3\n\n# Get the foreground colour of a style.\nget colour StyleGetFore=2481(int style,)\n\n# Get the background colour of a style.\nget colour StyleGetBack=2482(int style,)\n\n# Get is a style bold or not.\nget bool StyleGetBold=2483(int style,)\n\n# Get is a style italic or not.\nget bool StyleGetItalic=2484(int style,)\n\n# Get the size of characters of a style.\nget int StyleGetSize=2485(int style,)\n\n# Get the font of a style.\n# Returns the length of the fontName\n# Result is NUL-terminated.\nget int StyleGetFont=2486(int style, stringresult fontName)\n\n# Get is a style to have its end of line filled or not.\nget bool StyleGetEOLFilled=2487(int style,)\n\n# Get is a style underlined or not.\nget bool StyleGetUnderline=2488(int style,)\n\n# Get is a style mixed case, or to force upper or lower case.\nget int StyleGetCase=2489(int style,)\n\n# Get the character get of the font in a style.\nget int StyleGetCharacterSet=2490(int style,)\n\n# Get is a style visible or not.\nget bool StyleGetVisible=2491(int style,)\n\n# Get is a style changeable or not (read only).\n# Experimental feature, currently buggy.\nget bool StyleGetChangeable=2492(int style,)\n\n# Get is a style a hotspot or not.\nget bool StyleGetHotSpot=2493(int style,)\n\n# Set a style to be mixed case, or to force upper or lower case.\nset void StyleSetCase=2060(int style, int caseVisible)\n\nval SC_FONT_SIZE_MULTIPLIER=100\n\n# Set the size of characters of a style. Size is in points multiplied by 100.\nset void StyleSetSizeFractional=2061(int style, int sizeHundredthPoints)\n\n# Get the size of characters of a style in points multiplied by 100\nget int StyleGetSizeFractional=2062(int style,)\n\nenu FontWeight=SC_WEIGHT_\nval SC_WEIGHT_NORMAL=400\nval SC_WEIGHT_SEMIBOLD=600\nval SC_WEIGHT_BOLD=700\n\n# Set the weight of characters of a style.\nset void StyleSetWeight=2063(int style, int weight)\n\n# Get the weight of characters of a style.\nget int StyleGetWeight=2064(int style,)\n\n# Set the character set of the font in a style.\nset void StyleSetCharacterSet=2066(int style, int characterSet)\n\n# Set a style to be a hotspot or not.\nset void StyleSetHotSpot=2409(int style, bool hotspot)\n\n# Set the foreground colour of the main and additional selections and whether to use this setting.\nfun void SetSelFore=2067(bool useSetting, colour fore)\n\n# Set the background colour of the main and additional selections and whether to use this setting.\nfun void SetSelBack=2068(bool useSetting, colour back)\n\n# Get the alpha of the selection.\nget int GetSelAlpha=2477(,)\n\n# Set the alpha of the selection.\nset void SetSelAlpha=2478(int alpha,)\n\n# Is the selection end of line filled?\nget bool GetSelEOLFilled=2479(,)\n\n# Set the selection to have its end of line filled or not.\nset void SetSelEOLFilled=2480(bool filled,)\n\n# Set the foreground colour of the caret.\nset void SetCaretFore=2069(colour fore,)\n\n# When key+modifier combination keyDefinition is pressed perform sciCommand.\nfun void AssignCmdKey=2070(keymod keyDefinition, int sciCommand)\n\n# When key+modifier combination keyDefinition is pressed do nothing.\nfun void ClearCmdKey=2071(keymod keyDefinition,)\n\n# Drop all key mappings.\nfun void ClearAllCmdKeys=2072(,)\n\n# Set the styles for a segment of the document.\nfun void SetStylingEx=2073(int length, string styles)\n\n# Set a style to be visible or not.\nset void StyleSetVisible=2074(int style, bool visible)\n\n# Get the time in milliseconds that the caret is on and off.\nget int GetCaretPeriod=2075(,)\n\n# Get the time in milliseconds that the caret is on and off. 0 = steady on.\nset void SetCaretPeriod=2076(int periodMilliseconds,)\n\n# Set the set of characters making up words for when moving or selecting by word.\n# First sets defaults like SetCharsDefault.\nset void SetWordChars=2077(, string characters)\n\n# Get the set of characters making up words for when moving or selecting by word.\n# Returns the number of characters\nget int GetWordChars=2646(, stringresult characters)\n\n# Start a sequence of actions that is undone and redone as a unit.\n# May be nested.\nfun void BeginUndoAction=2078(,)\n\n# End a sequence of actions that is undone and redone as a unit.\nfun void EndUndoAction=2079(,)\n\n# Indicator style enumeration and some constants\nenu IndicatorStyle=INDIC_\nval INDIC_PLAIN=0\nval INDIC_SQUIGGLE=1\nval INDIC_TT=2\nval INDIC_DIAGONAL=3\nval INDIC_STRIKE=4\nval INDIC_HIDDEN=5\nval INDIC_BOX=6\nval INDIC_ROUNDBOX=7\nval INDIC_STRAIGHTBOX=8\nval INDIC_DASH=9\nval INDIC_DOTS=10\nval INDIC_SQUIGGLELOW=11\nval INDIC_DOTBOX=12\nval INDIC_SQUIGGLEPIXMAP=13\nval INDIC_COMPOSITIONTHICK=14\nval INDIC_COMPOSITIONTHIN=15\nval INDIC_FULLBOX=16\nval INDIC_TEXTFORE=17\nval INDIC_POINT=18\nval INDIC_POINTCHARACTER=19\nval INDIC_IME=32\nval INDIC_IME_MAX=35\nval INDIC_MAX=35\nval INDIC_CONTAINER=8\nval INDIC0_MASK=0x20\nval INDIC1_MASK=0x40\nval INDIC2_MASK=0x80\nval INDICS_MASK=0xE0\n\n# Set an indicator to plain, squiggle or TT.\nset void IndicSetStyle=2080(int indicator, int indicatorStyle)\n\n# Retrieve the style of an indicator.\nget int IndicGetStyle=2081(int indicator,)\n\n# Set the foreground colour of an indicator.\nset void IndicSetFore=2082(int indicator, colour fore)\n\n# Retrieve the foreground colour of an indicator.\nget colour IndicGetFore=2083(int indicator,)\n\n# Set an indicator to draw under text or over(default).\nset void IndicSetUnder=2510(int indicator, bool under)\n\n# Retrieve whether indicator drawn under or over text.\nget bool IndicGetUnder=2511(int indicator,)\n\n# Set a hover indicator to plain, squiggle or TT.\nset void IndicSetHoverStyle=2680(int indicator, int indicatorStyle)\n\n# Retrieve the hover style of an indicator.\nget int IndicGetHoverStyle=2681(int indicator,)\n\n# Set the foreground hover colour of an indicator.\nset void IndicSetHoverFore=2682(int indicator, colour fore)\n\n# Retrieve the foreground hover colour of an indicator.\nget colour IndicGetHoverFore=2683(int indicator,)\n\nval SC_INDICVALUEBIT=0x1000000\nval SC_INDICVALUEMASK=0xFFFFFF\n\nenu IndicFlag=SC_INDICFLAG_\nval SC_INDICFLAG_VALUEFORE=1\n\n# Set the attributes of an indicator.\nset void IndicSetFlags=2684(int indicator, int flags)\n\n# Retrieve the attributes of an indicator.\nget int IndicGetFlags=2685(int indicator,)\n\n# Set the foreground colour of all whitespace and whether to use this setting.\nfun void SetWhitespaceFore=2084(bool useSetting, colour fore)\n\n# Set the background colour of all whitespace and whether to use this setting.\nfun void SetWhitespaceBack=2085(bool useSetting, colour back)\n\n# Set the size of the dots used to mark space characters.\nset void SetWhitespaceSize=2086(int size,)\n\n# Get the size of the dots used to mark space characters.\nget int GetWhitespaceSize=2087(,)\n\n# Divide each styling byte into lexical class bits (default: 5) and indicator\n# bits (default: 3). If a lexer requires more than 32 lexical states, then this\n# is used to expand the possible states.\nset void SetStyleBits=2090(int bits,)\n\n# Retrieve number of bits in style bytes used to hold the lexical state.\nget int GetStyleBits=2091(,)\n\n# Used to hold extra styling information for each line.\nset void SetLineState=2092(int line, int state)\n\n# Retrieve the extra styling information for a line.\nget int GetLineState=2093(int line,)\n\n# Retrieve the last line number that has line state.\nget int GetMaxLineState=2094(,)\n\n# Is the background of the line containing the caret in a different colour?\nget bool GetCaretLineVisible=2095(,)\n\n# Display the background of the line containing the caret in a different colour.\nset void SetCaretLineVisible=2096(bool show,)\n\n# Get the colour of the background of the line containing the caret.\nget colour GetCaretLineBack=2097(,)\n\n# Set the colour of the background of the line containing the caret.\nset void SetCaretLineBack=2098(colour back,)\n\n# Set a style to be changeable or not (read only).\n# Experimental feature, currently buggy.\nset void StyleSetChangeable=2099(int style, bool changeable)\n\n# Display a auto-completion list.\n# The lengthEntered parameter indicates how many characters before\n# the caret should be used to provide context.\nfun void AutoCShow=2100(int lengthEntered, string itemList)\n\n# Remove the auto-completion list from the screen.\nfun void AutoCCancel=2101(,)\n\n# Is there an auto-completion list visible?\nfun bool AutoCActive=2102(,)\n\n# Retrieve the position of the caret when the auto-completion list was displayed.\nfun position AutoCPosStart=2103(,)\n\n# User has selected an item so remove the list and insert the selection.\nfun void AutoCComplete=2104(,)\n\n# Define a set of character that when typed cancel the auto-completion list.\nfun void AutoCStops=2105(, string characterSet)\n\n# Change the separator character in the string setting up an auto-completion list.\n# Default is space but can be changed if items contain space.\nset void AutoCSetSeparator=2106(int separatorCharacter,)\n\n# Retrieve the auto-completion list separator character.\nget int AutoCGetSeparator=2107(,)\n\n# Select the item in the auto-completion list that starts with a string.\nfun void AutoCSelect=2108(, string select)\n\n# Should the auto-completion list be cancelled if the user backspaces to a\n# position before where the box was created.\nset void AutoCSetCancelAtStart=2110(bool cancel,)\n\n# Retrieve whether auto-completion cancelled by backspacing before start.\nget bool AutoCGetCancelAtStart=2111(,)\n\n# Define a set of characters that when typed will cause the autocompletion to\n# choose the selected item.\nset void AutoCSetFillUps=2112(, string characterSet)\n\n# Should a single item auto-completion list automatically choose the item.\nset void AutoCSetChooseSingle=2113(bool chooseSingle,)\n\n# Retrieve whether a single item auto-completion list automatically choose the item.\nget bool AutoCGetChooseSingle=2114(,)\n\n# Set whether case is significant when performing auto-completion searches.\nset void AutoCSetIgnoreCase=2115(bool ignoreCase,)\n\n# Retrieve state of ignore case flag.\nget bool AutoCGetIgnoreCase=2116(,)\n\n# Display a list of strings and send notification when user chooses one.\nfun void UserListShow=2117(int listType, string itemList)\n\n# Set whether or not autocompletion is hidden automatically when nothing matches.\nset void AutoCSetAutoHide=2118(bool autoHide,)\n\n# Retrieve whether or not autocompletion is hidden automatically when nothing matches.\nget bool AutoCGetAutoHide=2119(,)\n\n# Set whether or not autocompletion deletes any word characters\n# after the inserted text upon completion.\nset void AutoCSetDropRestOfWord=2270(bool dropRestOfWord,)\n\n# Retrieve whether or not autocompletion deletes any word characters\n# after the inserted text upon completion.\nget bool AutoCGetDropRestOfWord=2271(,)\n\n# Register an XPM image for use in autocompletion lists.\nfun void RegisterImage=2405(int type, string xpmData)\n\n# Clear all the registered XPM images.\nfun void ClearRegisteredImages=2408(,)\n\n# Retrieve the auto-completion list type-separator character.\nget int AutoCGetTypeSeparator=2285(,)\n\n# Change the type-separator character in the string setting up an auto-completion list.\n# Default is '?' but can be changed if items contain '?'.\nset void AutoCSetTypeSeparator=2286(int separatorCharacter,)\n\n# Set the maximum width, in characters, of auto-completion and user lists.\n# Set to 0 to autosize to fit longest item, which is the default.\nset void AutoCSetMaxWidth=2208(int characterCount,)\n\n# Get the maximum width, in characters, of auto-completion and user lists.\nget int AutoCGetMaxWidth=2209(,)\n\n# Set the maximum height, in rows, of auto-completion and user lists.\n# The default is 5 rows.\nset void AutoCSetMaxHeight=2210(int rowCount,)\n\n# Set the maximum height, in rows, of auto-completion and user lists.\nget int AutoCGetMaxHeight=2211(,)\n\n# Set the number of spaces used for one level of indentation.\nset void SetIndent=2122(int indentSize,)\n\n# Retrieve indentation size.\nget int GetIndent=2123(,)\n\n# Indentation will only use space characters if useTabs is false, otherwise\n# it will use a combination of tabs and spaces.\nset void SetUseTabs=2124(bool useTabs,)\n\n# Retrieve whether tabs will be used in indentation.\nget bool GetUseTabs=2125(,)\n\n# Change the indentation of a line to a number of columns.\nset void SetLineIndentation=2126(int line, int indentation)\n\n# Retrieve the number of columns that a line is indented.\nget int GetLineIndentation=2127(int line,)\n\n# Retrieve the position before the first non indentation character on a line.\nget position GetLineIndentPosition=2128(int line,)\n\n# Retrieve the column number of a position, taking tab width into account.\nget int GetColumn=2129(position pos,)\n\n# Count characters between two positions.\nfun int CountCharacters=2633(position start, position end)\n\n# Show or hide the horizontal scroll bar.\nset void SetHScrollBar=2130(bool visible,)\n# Is the horizontal scroll bar visible?\nget bool GetHScrollBar=2131(,)\n\nenu IndentView=SC_IV_\nval SC_IV_NONE=0\nval SC_IV_REAL=1\nval SC_IV_LOOKFORWARD=2\nval SC_IV_LOOKBOTH=3\n\n# Show or hide indentation guides.\nset void SetIndentationGuides=2132(int indentView,)\n\n# Are the indentation guides visible?\nget int GetIndentationGuides=2133(,)\n\n# Set the highlighted indentation guide column.\n# 0 = no highlighted guide.\nset void SetHighlightGuide=2134(int column,)\n\n# Get the highlighted indentation guide column.\nget int GetHighlightGuide=2135(,)\n\n# Get the position after the last visible characters on a line.\nget position GetLineEndPosition=2136(int line,)\n\n# Get the code page used to interpret the bytes of the document as characters.\nget int GetCodePage=2137(,)\n\n# Get the foreground colour of the caret.\nget colour GetCaretFore=2138(,)\n\n# In read-only mode?\nget bool GetReadOnly=2140(,)\n\n# Sets the position of the caret.\nset void SetCurrentPos=2141(position caret,)\n\n# Sets the position that starts the selection - this becomes the anchor.\nset void SetSelectionStart=2142(position anchor,)\n\n# Returns the position at the start of the selection.\nget position GetSelectionStart=2143(,)\n\n# Sets the position that ends the selection - this becomes the caret.\nset void SetSelectionEnd=2144(position caret,)\n\n# Returns the position at the end of the selection.\nget position GetSelectionEnd=2145(,)\n\n# Set caret to a position, while removing any existing selection.\nfun void SetEmptySelection=2556(position caret,)\n\n# Sets the print magnification added to the point size of each style for printing.\nset void SetPrintMagnification=2146(int magnification,)\n\n# Returns the print magnification.\nget int GetPrintMagnification=2147(,)\n\nenu PrintOption=SC_PRINT_\n# PrintColourMode - use same colours as screen.\nval SC_PRINT_NORMAL=0\n# PrintColourMode - invert the light value of each style for printing.\nval SC_PRINT_INVERTLIGHT=1\n# PrintColourMode - force black text on white background for printing.\nval SC_PRINT_BLACKONWHITE=2\n# PrintColourMode - text stays coloured, but all background is forced to be white for printing.\nval SC_PRINT_COLOURONWHITE=3\n# PrintColourMode - only the default-background is forced to be white for printing.\nval SC_PRINT_COLOURONWHITEDEFAULTBG=4\n\n# Modify colours when printing for clearer printed text.\nset void SetPrintColourMode=2148(int mode,)\n\n# Returns the print colour mode.\nget int GetPrintColourMode=2149(,)\n\nenu FindOption=SCFIND_\nval SCFIND_WHOLEWORD=0x2\nval SCFIND_MATCHCASE=0x4\nval SCFIND_WORDSTART=0x00100000\nval SCFIND_REGEXP=0x00200000\nval SCFIND_POSIX=0x00400000\nval SCFIND_CXX11REGEX=0x00800000\n\n# Find some text in the document.\nfun position FindText=2150(int searchFlags, findtext ft)\n\n# On Windows, will draw the document into a display context such as a printer.\nfun position FormatRange=2151(bool draw, formatrange fr)\n\n# Retrieve the display line at the top of the display.\nget int GetFirstVisibleLine=2152(,)\n\n# Retrieve the contents of a line.\n# Returns the length of the line.\nfun int GetLine=2153(int line, stringresult text)\n\n# Returns the number of lines in the document. There is always at least one.\nget int GetLineCount=2154(,)\n\n# Sets the size in pixels of the left margin.\nset void SetMarginLeft=2155(, int pixelWidth)\n\n# Returns the size in pixels of the left margin.\nget int GetMarginLeft=2156(,)\n\n# Sets the size in pixels of the right margin.\nset void SetMarginRight=2157(, int pixelWidth)\n\n# Returns the size in pixels of the right margin.\nget int GetMarginRight=2158(,)\n\n# Is the document different from when it was last saved?\nget bool GetModify=2159(,)\n\n# Select a range of text.\nfun void SetSel=2160(position anchor, position caret)\n\n# Retrieve the selected text.\n# Return the length of the text.\n# Result is NUL-terminated.\nfun int GetSelText=2161(, stringresult text)\n\n# Retrieve a range of text.\n# Return the length of the text.\nfun int GetTextRange=2162(, textrange tr)\n\n# Draw the selection in normal style or with selection highlighted.\nfun void HideSelection=2163(bool hide,)\n\n# Retrieve the x value of the point in the window where a position is displayed.\nfun int PointXFromPosition=2164(, position pos)\n\n# Retrieve the y value of the point in the window where a position is displayed.\nfun int PointYFromPosition=2165(, position pos)\n\n# Retrieve the line containing a position.\nfun int LineFromPosition=2166(position pos,)\n\n# Retrieve the position at the start of a line.\nfun position PositionFromLine=2167(int line,)\n\n# Scroll horizontally and vertically.\nfun void LineScroll=2168(int columns, int lines)\n\n# Ensure the caret is visible.\nfun void ScrollCaret=2169(,)\n\n# Scroll the argument positions and the range between them into view giving\n# priority to the primary position then the secondary position.\n# This may be used to make a search match visible.\nfun void ScrollRange=2569(position secondary, position primary)\n\n# Replace the selected text with the argument text.\nfun void ReplaceSel=2170(, string text)\n\n# Set to read only or read write.\nset void SetReadOnly=2171(bool readOnly,)\n\n# Null operation.\nfun void Null=2172(,)\n\n# Will a paste succeed?\nfun bool CanPaste=2173(,)\n\n# Are there any undoable actions in the undo history?\nfun bool CanUndo=2174(,)\n\n# Delete the undo history.\nfun void EmptyUndoBuffer=2175(,)\n\n# Undo one action in the undo history.\nfun void Undo=2176(,)\n\n# Cut the selection to the clipboard.\nfun void Cut=2177(,)\n\n# Copy the selection to the clipboard.\nfun void Copy=2178(,)\n\n# Paste the contents of the clipboard into the document replacing the selection.\nfun void Paste=2179(,)\n\n# Clear the selection.\nfun void Clear=2180(,)\n\n# Replace the contents of the document with the argument text.\nfun void SetText=2181(, string text)\n\n# Retrieve all the text in the document.\n# Returns number of characters retrieved.\n# Result is NUL-terminated.\nfun int GetText=2182(int length, stringresult text)\n\n# Retrieve the number of characters in the document.\nget int GetTextLength=2183(,)\n\n# Retrieve a pointer to a function that processes messages for this Scintilla.\nget int GetDirectFunction=2184(,)\n\n# Retrieve a pointer value to use as the first argument when calling\n# the function returned by GetDirectFunction.\nget int GetDirectPointer=2185(,)\n\n# Set to overtype (true) or insert mode.\nset void SetOvertype=2186(bool overType,)\n\n# Returns true if overtype mode is active otherwise false is returned.\nget bool GetOvertype=2187(,)\n\n# Set the width of the insert mode caret.\nset void SetCaretWidth=2188(int pixelWidth,)\n\n# Returns the width of the insert mode caret.\nget int GetCaretWidth=2189(,)\n\n# Sets the position that starts the target which is used for updating the\n# document without affecting the scroll position.\nset void SetTargetStart=2190(position start,)\n\n# Get the position that starts the target.\nget position GetTargetStart=2191(,)\n\n# Sets the position that ends the target which is used for updating the\n# document without affecting the scroll position.\nset void SetTargetEnd=2192(position end,)\n\n# Get the position that ends the target.\nget position GetTargetEnd=2193(,)\n\n# Sets both the start and end of the target in one call.\nfun void SetTargetRange=2686(position start, position end)\n\n# Retrieve the text in the target.\nget int GetTargetText=2687(, stringresult text)\n\n# Make the target range start and end be the same as the selection range start and end.\nfun void TargetFromSelection=2287(,)\n\n# Sets the target to the whole document.\nfun void TargetWholeDocument=2690(,)\n\n# Replace the target text with the argument text.\n# Text is counted so it can contain NULs.\n# Returns the length of the replacement text.\nfun int ReplaceTarget=2194(int length, string text)\n\n# Replace the target text with the argument text after \\d processing.\n# Text is counted so it can contain NULs.\n# Looks for \\d where d is between 1 and 9 and replaces these with the strings\n# matched in the last search operation which were surrounded by \\( and \\).\n# Returns the length of the replacement text including any change\n# caused by processing the \\d patterns.\nfun int ReplaceTargetRE=2195(int length, string text)\n\n# Search for a counted string in the target and set the target to the found\n# range. Text is counted so it can contain NULs.\n# Returns length of range or -1 for failure in which case target is not moved.\nfun int SearchInTarget=2197(int length, string text)\n\n# Set the search flags used by SearchInTarget.\nset void SetSearchFlags=2198(int searchFlags,)\n\n# Get the search flags used by SearchInTarget.\nget int GetSearchFlags=2199(,)\n\n# Show a call tip containing a definition near position pos.\nfun void CallTipShow=2200(position pos, string definition)\n\n# Remove the call tip from the screen.\nfun void CallTipCancel=2201(,)\n\n# Is there an active call tip?\nfun bool CallTipActive=2202(,)\n\n# Retrieve the position where the caret was before displaying the call tip.\nfun position CallTipPosStart=2203(,)\n\n# Set the start position in order to change when backspacing removes the calltip.\nset void CallTipSetPosStart=2214(int posStart,)\n\n# Highlight a segment of the definition.\nfun void CallTipSetHlt=2204(int highlightStart, int highlightEnd)\n\n# Set the background colour for the call tip.\nset void CallTipSetBack=2205(colour back,)\n\n# Set the foreground colour for the call tip.\nset void CallTipSetFore=2206(colour fore,)\n\n# Set the foreground colour for the highlighted part of the call tip.\nset void CallTipSetForeHlt=2207(colour fore,)\n\n# Enable use of STYLE_CALLTIP and set call tip tab size in pixels.\nset void CallTipUseStyle=2212(int tabSize,)\n\n# Set position of calltip, above or below text.\nset void CallTipSetPosition=2213(bool above,)\n\n# Find the display line of a document line taking hidden lines into account.\nfun int VisibleFromDocLine=2220(int docLine,)\n\n# Find the document line of a display line taking hidden lines into account.\nfun int DocLineFromVisible=2221(int displayLine,)\n\n# The number of display lines needed to wrap a document line\nfun int WrapCount=2235(int docLine,)\n\nenu FoldLevel=SC_FOLDLEVEL\nval SC_FOLDLEVELBASE=0x400\nval SC_FOLDLEVELWHITEFLAG=0x1000\nval SC_FOLDLEVELHEADERFLAG=0x2000\nval SC_FOLDLEVELNUMBERMASK=0x0FFF\n\n# Set the fold level of a line.\n# This encodes an integer level along with flags indicating whether the\n# line is a header and whether it is effectively white space.\nset void SetFoldLevel=2222(int line, int level)\n\n# Retrieve the fold level of a line.\nget int GetFoldLevel=2223(int line,)\n\n# Find the last child line of a header line.\nget int GetLastChild=2224(int line, int level)\n\n# Find the parent line of a child line.\nget int GetFoldParent=2225(int line,)\n\n# Make a range of lines visible.\nfun void ShowLines=2226(int lineStart, int lineEnd)\n\n# Make a range of lines invisible.\nfun void HideLines=2227(int lineStart, int lineEnd)\n\n# Is a line visible?\nget bool GetLineVisible=2228(int line,)\n\n# Are all lines visible?\nget bool GetAllLinesVisible=2236(,)\n\n# Show the children of a header line.\nset void SetFoldExpanded=2229(int line, bool expanded)\n\n# Is a header line expanded?\nget bool GetFoldExpanded=2230(int line,)\n\n# Switch a header line between expanded and contracted.\nfun void ToggleFold=2231(int line,)\n\n# Switch a header line between expanded and contracted and show some text after the line.\nfun void ToggleFoldShowText=2700(int line, string text)\n\nenu foldDisplayTextStyle=SC_FOLDDISPLAYTEXTSTYLE_\nval SC_FOLDDISPLAYTEXT_HIDDEN=0\nval SC_FOLDDISPLAYTEXT_STANDARD=1\nval SC_FOLDDISPLAYTEXT_BOXED=2\n\n# Set the style of fold display text\nset void FoldDisplayTextSetStyle=2701(int style,)\n\nenu FoldAction=SC_FOLDACTION_\nval SC_FOLDACTION_CONTRACT=0\nval SC_FOLDACTION_EXPAND=1\nval SC_FOLDACTION_TOGGLE=2\n\n# Expand or contract a fold header.\nfun void FoldLine=2237(int line, int action)\n\n# Expand or contract a fold header and its children.\nfun void FoldChildren=2238(int line, int action)\n\n# Expand a fold header and all children. Use the level argument instead of the line's current level.\nfun void ExpandChildren=2239(int line, int level)\n\n# Expand or contract all fold headers.\nfun void FoldAll=2662(int action,)\n\n# Ensure a particular line is visible by expanding any header line hiding it.\nfun void EnsureVisible=2232(int line,)\n\nenu AutomaticFold=SC_AUTOMATICFOLD_\nval SC_AUTOMATICFOLD_SHOW=0x0001\nval SC_AUTOMATICFOLD_CLICK=0x0002\nval SC_AUTOMATICFOLD_CHANGE=0x0004\n\n# Set automatic folding behaviours.\nset void SetAutomaticFold=2663(int automaticFold,)\n\n# Get automatic folding behaviours.\nget int GetAutomaticFold=2664(,)\n\nenu FoldFlag=SC_FOLDFLAG_\nval SC_FOLDFLAG_LINEBEFORE_EXPANDED=0x0002\nval SC_FOLDFLAG_LINEBEFORE_CONTRACTED=0x0004\nval SC_FOLDFLAG_LINEAFTER_EXPANDED=0x0008\nval SC_FOLDFLAG_LINEAFTER_CONTRACTED=0x0010\nval SC_FOLDFLAG_LEVELNUMBERS=0x0040\nval SC_FOLDFLAG_LINESTATE=0x0080\n\n# Set some style options for folding.\nset void SetFoldFlags=2233(int flags,)\n\n# Ensure a particular line is visible by expanding any header line hiding it.\n# Use the currently set visibility policy to determine which range to display.\nfun void EnsureVisibleEnforcePolicy=2234(int line,)\n\n# Sets whether a tab pressed when caret is within indentation indents.\nset void SetTabIndents=2260(bool tabIndents,)\n\n# Does a tab pressed when caret is within indentation indent?\nget bool GetTabIndents=2261(,)\n\n# Sets whether a backspace pressed when caret is within indentation unindents.\nset void SetBackSpaceUnIndents=2262(bool bsUnIndents,)\n\n# Does a backspace pressed when caret is within indentation unindent?\nget bool GetBackSpaceUnIndents=2263(,)\n\nval SC_TIME_FOREVER=10000000\n\n# Sets the time the mouse must sit still to generate a mouse dwell event.\nset void SetMouseDwellTime=2264(int periodMilliseconds,)\n\n# Retrieve the time the mouse must sit still to generate a mouse dwell event.\nget int GetMouseDwellTime=2265(,)\n\n# Get position of start of word.\nfun int WordStartPosition=2266(position pos, bool onlyWordCharacters)\n\n# Get position of end of word.\nfun int WordEndPosition=2267(position pos, bool onlyWordCharacters)\n\n# Is the range start..end considered a word?\nfun bool IsRangeWord=2691(position start, position end)\n\nenu IdleStyling=SC_IDLESTYLING_\nval SC_IDLESTYLING_NONE=0\nval SC_IDLESTYLING_TOVISIBLE=1\nval SC_IDLESTYLING_AFTERVISIBLE=2\nval SC_IDLESTYLING_ALL=3\n\n# Sets limits to idle styling.\nset void SetIdleStyling=2692(int idleStyling,)\n\n# Retrieve the limits to idle styling.\nget int GetIdleStyling=2693(,)\n\nenu Wrap=SC_WRAP_\nval SC_WRAP_NONE=0\nval SC_WRAP_WORD=1\nval SC_WRAP_CHAR=2\nval SC_WRAP_WHITESPACE=3\n\n# Sets whether text is word wrapped.\nset void SetWrapMode=2268(int wrapMode,)\n\n# Retrieve whether text is word wrapped.\nget int GetWrapMode=2269(,)\n\nenu WrapVisualFlag=SC_WRAPVISUALFLAG_\nval SC_WRAPVISUALFLAG_NONE=0x0000\nval SC_WRAPVISUALFLAG_END=0x0001\nval SC_WRAPVISUALFLAG_START=0x0002\nval SC_WRAPVISUALFLAG_MARGIN=0x0004\n\n# Set the display mode of visual flags for wrapped lines.\nset void SetWrapVisualFlags=2460(int wrapVisualFlags,)\n\n# Retrive the display mode of visual flags for wrapped lines.\nget int GetWrapVisualFlags=2461(,)\n\nenu WrapVisualLocation=SC_WRAPVISUALFLAGLOC_\nval SC_WRAPVISUALFLAGLOC_DEFAULT=0x0000\nval SC_WRAPVISUALFLAGLOC_END_BY_TEXT=0x0001\nval SC_WRAPVISUALFLAGLOC_START_BY_TEXT=0x0002\n\n# Set the location of visual flags for wrapped lines.\nset void SetWrapVisualFlagsLocation=2462(int wrapVisualFlagsLocation,)\n\n# Retrive the location of visual flags for wrapped lines.\nget int GetWrapVisualFlagsLocation=2463(,)\n\n# Set the start indent for wrapped lines.\nset void SetWrapStartIndent=2464(int indent,)\n\n# Retrive the start indent for wrapped lines.\nget int GetWrapStartIndent=2465(,)\n\nenu WrapIndentMode=SC_WRAPINDENT_\nval SC_WRAPINDENT_FIXED=0\nval SC_WRAPINDENT_SAME=1\nval SC_WRAPINDENT_INDENT=2\n\n# Sets how wrapped sublines are placed. Default is fixed.\nset void SetWrapIndentMode=2472(int wrapIndentMode,)\n\n# Retrieve how wrapped sublines are placed. Default is fixed.\nget int GetWrapIndentMode=2473(,)\n\nenu LineCache=SC_CACHE_\nval SC_CACHE_NONE=0\nval SC_CACHE_CARET=1\nval SC_CACHE_PAGE=2\nval SC_CACHE_DOCUMENT=3\n\n# Sets the degree of caching of layout information.\nset void SetLayoutCache=2272(int cacheMode,)\n\n# Retrieve the degree of caching of layout information.\nget int GetLayoutCache=2273(,)\n\n# Sets the document width assumed for scrolling.\nset void SetScrollWidth=2274(int pixelWidth,)\n\n# Retrieve the document width assumed for scrolling.\nget int GetScrollWidth=2275(,)\n\n# Sets whether the maximum width line displayed is used to set scroll width.\nset void SetScrollWidthTracking=2516(bool tracking,)\n\n# Retrieve whether the scroll width tracks wide lines.\nget bool GetScrollWidthTracking=2517(,)\n\n# Measure the pixel width of some text in a particular style.\n# NUL terminated text argument.\n# Does not handle tab or control characters.\nfun int TextWidth=2276(int style, string text)\n\n# Sets the scroll range so that maximum scroll position has\n# the last line at the bottom of the view (default).\n# Setting this to false allows scrolling one page below the last line.\nset void SetEndAtLastLine=2277(bool endAtLastLine,)\n\n# Retrieve whether the maximum scroll position has the last\n# line at the bottom of the view.\nget bool GetEndAtLastLine=2278(,)\n\n# Retrieve the height of a particular line of text in pixels.\nfun int TextHeight=2279(int line,)\n\n# Show or hide the vertical scroll bar.\nset void SetVScrollBar=2280(bool visible,)\n\n# Is the vertical scroll bar visible?\nget bool GetVScrollBar=2281(,)\n\n# Append a string to the end of the document without changing the selection.\nfun void AppendText=2282(int length, string text)\n\n# Is drawing done in two phases with backgrounds drawn before foregrounds?\nget bool GetTwoPhaseDraw=2283(,)\n\n# In twoPhaseDraw mode, drawing is performed in two phases, first the background\n# and then the foreground. This avoids chopping off characters that overlap the next run.\nset void SetTwoPhaseDraw=2284(bool twoPhase,)\n\nenu PhasesDraw=SC_PHASES_\nval SC_PHASES_ONE=0\nval SC_PHASES_TWO=1\nval SC_PHASES_MULTIPLE=2\n\n# How many phases is drawing done in?\nget int GetPhasesDraw=2673(,)\n\n# In one phase draw, text is drawn in a series of rectangular blocks with no overlap.\n# In two phase draw, text is drawn in a series of lines allowing runs to overlap horizontally.\n# In multiple phase draw, each element is drawn over the whole drawing area, allowing text\n# to overlap from one line to the next.\nset void SetPhasesDraw=2674(int phases,)\n\n# Control font anti-aliasing.\n\nenu FontQuality=SC_EFF_\nval SC_EFF_QUALITY_MASK=0xF\nval SC_EFF_QUALITY_DEFAULT=0\nval SC_EFF_QUALITY_NON_ANTIALIASED=1\nval SC_EFF_QUALITY_ANTIALIASED=2\nval SC_EFF_QUALITY_LCD_OPTIMIZED=3\n\n# Choose the quality level for text from the FontQuality enumeration.\nset void SetFontQuality=2611(int fontQuality,)\n\n# Retrieve the quality level for text.\nget int GetFontQuality=2612(,)\n\n# Scroll so that a display line is at the top of the display.\nset void SetFirstVisibleLine=2613(int displayLine,)\n\nenu MultiPaste=SC_MULTIPASTE_\nval SC_MULTIPASTE_ONCE=0\nval SC_MULTIPASTE_EACH=1\n\n# Change the effect of pasting when there are multiple selections.\nset void SetMultiPaste=2614(int multiPaste,)\n\n# Retrieve the effect of pasting when there are multiple selections.\nget int GetMultiPaste=2615(,)\n\n# Retrieve the value of a tag from a regular expression search.\n# Result is NUL-terminated.\nget int GetTag=2616(int tagNumber, stringresult tagValue)\n\n# Join the lines in the target.\nfun void LinesJoin=2288(,)\n\n# Split the lines in the target into lines that are less wide than pixelWidth\n# where possible.\nfun void LinesSplit=2289(int pixelWidth,)\n\n# Set one of the colours used as a chequerboard pattern in the fold margin\nfun void SetFoldMarginColour=2290(bool useSetting, colour back)\n# Set the other colour used as a chequerboard pattern in the fold margin\nfun void SetFoldMarginHiColour=2291(bool useSetting, colour fore)\n\n## New messages go here\n\n## Start of key messages\n# Move caret down one line.\nfun void LineDown=2300(,)\n\n# Move caret down one line extending selection to new caret position.\nfun void LineDownExtend=2301(,)\n\n# Move caret up one line.\nfun void LineUp=2302(,)\n\n# Move caret up one line extending selection to new caret position.\nfun void LineUpExtend=2303(,)\n\n# Move caret left one character.\nfun void CharLeft=2304(,)\n\n# Move caret left one character extending selection to new caret position.\nfun void CharLeftExtend=2305(,)\n\n# Move caret right one character.\nfun void CharRight=2306(,)\n\n# Move caret right one character extending selection to new caret position.\nfun void CharRightExtend=2307(,)\n\n# Move caret left one word.\nfun void WordLeft=2308(,)\n\n# Move caret left one word extending selection to new caret position.\nfun void WordLeftExtend=2309(,)\n\n# Move caret right one word.\nfun void WordRight=2310(,)\n\n# Move caret right one word extending selection to new caret position.\nfun void WordRightExtend=2311(,)\n\n# Move caret to first position on line.\nfun void Home=2312(,)\n\n# Move caret to first position on line extending selection to new caret position.\nfun void HomeExtend=2313(,)\n\n# Move caret to last position on line.\nfun void LineEnd=2314(,)\n\n# Move caret to last position on line extending selection to new caret position.\nfun void LineEndExtend=2315(,)\n\n# Move caret to first position in document.\nfun void DocumentStart=2316(,)\n\n# Move caret to first position in document extending selection to new caret position.\nfun void DocumentStartExtend=2317(,)\n\n# Move caret to last position in document.\nfun void DocumentEnd=2318(,)\n\n# Move caret to last position in document extending selection to new caret position.\nfun void DocumentEndExtend=2319(,)\n\n# Move caret one page up.\nfun void PageUp=2320(,)\n\n# Move caret one page up extending selection to new caret position.\nfun void PageUpExtend=2321(,)\n\n# Move caret one page down.\nfun void PageDown=2322(,)\n\n# Move caret one page down extending selection to new caret position.\nfun void PageDownExtend=2323(,)\n\n# Switch from insert to overtype mode or the reverse.\nfun void EditToggleOvertype=2324(,)\n\n# Cancel any modes such as call tip or auto-completion list display.\nfun void Cancel=2325(,)\n\n# Delete the selection or if no selection, the character before the caret.\nfun void DeleteBack=2326(,)\n\n# If selection is empty or all on one line replace the selection with a tab character.\n# If more than one line selected, indent the lines.\nfun void Tab=2327(,)\n\n# Dedent the selected lines.\nfun void BackTab=2328(,)\n\n# Insert a new line, may use a CRLF, CR or LF depending on EOL mode.\nfun void NewLine=2329(,)\n\n# Insert a Form Feed character.\nfun void FormFeed=2330(,)\n\n# Move caret to before first visible character on line.\n# If already there move to first character on line.\nfun void VCHome=2331(,)\n\n# Like VCHome but extending selection to new caret position.\nfun void VCHomeExtend=2332(,)\n\n# Magnify the displayed text by increasing the sizes by 1 point.\nfun void ZoomIn=2333(,)\n\n# Make the displayed text smaller by decreasing the sizes by 1 point.\nfun void ZoomOut=2334(,)\n\n# Delete the word to the left of the caret.\nfun void DelWordLeft=2335(,)\n\n# Delete the word to the right of the caret.\nfun void DelWordRight=2336(,)\n\n# Delete the word to the right of the caret, but not the trailing non-word characters.\nfun void DelWordRightEnd=2518(,)\n\n# Cut the line containing the caret.\nfun void LineCut=2337(,)\n\n# Delete the line containing the caret.\nfun void LineDelete=2338(,)\n\n# Switch the current line with the previous.\nfun void LineTranspose=2339(,)\n\n# Duplicate the current line.\nfun void LineDuplicate=2404(,)\n\n# Transform the selection to lower case.\nfun void LowerCase=2340(,)\n\n# Transform the selection to upper case.\nfun void UpperCase=2341(,)\n\n# Scroll the document down, keeping the caret visible.\nfun void LineScrollDown=2342(,)\n\n# Scroll the document up, keeping the caret visible.\nfun void LineScrollUp=2343(,)\n\n# Delete the selection or if no selection, the character before the caret.\n# Will not delete the character before at the start of a line.\nfun void DeleteBackNotLine=2344(,)\n\n# Move caret to first position on display line.\nfun void HomeDisplay=2345(,)\n\n# Move caret to first position on display line extending selection to\n# new caret position.\nfun void HomeDisplayExtend=2346(,)\n\n# Move caret to last position on display line.\nfun void LineEndDisplay=2347(,)\n\n# Move caret to last position on display line extending selection to new\n# caret position.\nfun void LineEndDisplayExtend=2348(,)\n\n# Like Home but when word-wrap is enabled goes first to start of display line\n# HomeDisplay, then to start of document line Home.\nfun void HomeWrap=2349(,)\n\n# Like HomeExtend but when word-wrap is enabled extends first to start of display line\n# HomeDisplayExtend, then to start of document line HomeExtend.\nfun void HomeWrapExtend=2450(,)\n\n# Like LineEnd but when word-wrap is enabled goes first to end of display line\n# LineEndDisplay, then to start of document line LineEnd.\nfun void LineEndWrap=2451(,)\n\n# Like LineEndExtend but when word-wrap is enabled extends first to end of display line\n# LineEndDisplayExtend, then to start of document line LineEndExtend.\nfun void LineEndWrapExtend=2452(,)\n\n# Like VCHome but when word-wrap is enabled goes first to start of display line\n# VCHomeDisplay, then behaves like VCHome.\nfun void VCHomeWrap=2453(,)\n\n# Like VCHomeExtend but when word-wrap is enabled extends first to start of display line\n# VCHomeDisplayExtend, then behaves like VCHomeExtend.\nfun void VCHomeWrapExtend=2454(,)\n\n# Copy the line containing the caret.\nfun void LineCopy=2455(,)\n\n# Move the caret inside current view if it's not there already.\nfun void MoveCaretInsideView=2401(,)\n\n# How many characters are on a line, including end of line characters?\nfun int LineLength=2350(int line,)\n\n# Highlight the characters at two positions.\nfun void BraceHighlight=2351(position posA, position posB)\n\n# Use specified indicator to highlight matching braces instead of changing their style.\nfun void BraceHighlightIndicator=2498(bool useSetting, int indicator)\n\n# Highlight the character at a position indicating there is no matching brace.\nfun void BraceBadLight=2352(position pos,)\n\n# Use specified indicator to highlight non matching brace instead of changing its style.\nfun void BraceBadLightIndicator=2499(bool useSetting, int indicator)\n\n# Find the position of a matching brace or INVALID_POSITION if no match.\n# The maxReStyle must be 0 for now. It may be defined in a future release.\nfun position BraceMatch=2353(position pos, int maxReStyle)\n\n# Are the end of line characters visible?\nget bool GetViewEOL=2355(,)\n\n# Make the end of line characters visible or invisible.\nset void SetViewEOL=2356(bool visible,)\n\n# Retrieve a pointer to the document object.\nget int GetDocPointer=2357(,)\n\n# Change the document object used.\nset void SetDocPointer=2358(, int doc)\n\n# Set which document modification events are sent to the container.\nset void SetModEventMask=2359(int eventMask,)\n\nenu EdgeVisualStyle=EDGE_\nval EDGE_NONE=0\nval EDGE_LINE=1\nval EDGE_BACKGROUND=2\nval EDGE_MULTILINE=3\n\n# Retrieve the column number which text should be kept within.\nget int GetEdgeColumn=2360(,)\n\n# Set the column number of the edge.\n# If text goes past the edge then it is highlighted.\nset void SetEdgeColumn=2361(int column,)\n\n# Retrieve the edge highlight mode.\nget int GetEdgeMode=2362(,)\n\n# The edge may be displayed by a line (EDGE_LINE/EDGE_MULTILINE) or by highlighting text that\n# goes beyond it (EDGE_BACKGROUND) or not displayed at all (EDGE_NONE).\nset void SetEdgeMode=2363(int edgeMode,)\n\n# Retrieve the colour used in edge indication.\nget colour GetEdgeColour=2364(,)\n\n# Change the colour used in edge indication.\nset void SetEdgeColour=2365(colour edgeColour,)\n\n# Add a new vertical edge to the view.\nfun void MultiEdgeAddLine=2694(int column, colour edgeColour)\n\n# Clear all vertical edges.\nfun void MultiEdgeClearAll=2695(,)\n\n# Sets the current caret position to be the search anchor.\nfun void SearchAnchor=2366(,)\n\n# Find some text starting at the search anchor.\n# Does not ensure the selection is visible.\nfun int SearchNext=2367(int searchFlags, string text)\n\n# Find some text starting at the search anchor and moving backwards.\n# Does not ensure the selection is visible.\nfun int SearchPrev=2368(int searchFlags, string text)\n\n# Retrieves the number of lines completely visible.\nget int LinesOnScreen=2370(,)\n\nenu PopUp=SC_POPUP_\nval SC_POPUP_NEVER=0\nval SC_POPUP_ALL=1\nval SC_POPUP_TEXT=2\n\n# Set whether a pop up menu is displayed automatically when the user presses\n# the wrong mouse button on certain areas.\nfun void UsePopUp=2371(int popUpMode,)\n\n# Is the selection rectangular? The alternative is the more common stream selection.\nget bool SelectionIsRectangle=2372(,)\n\n# Set the zoom level. This number of points is added to the size of all fonts.\n# It may be positive to magnify or negative to reduce.\nset void SetZoom=2373(int zoomInPoints,)\n# Retrieve the zoom level.\nget int GetZoom=2374(,)\n\n# Create a new document object.\n# Starts with reference count of 1 and not selected into editor.\nfun int CreateDocument=2375(,)\n# Extend life of document.\nfun void AddRefDocument=2376(, int doc)\n# Release a reference to the document, deleting document if it fades to black.\nfun void ReleaseDocument=2377(, int doc)\n\n# Get which document modification events are sent to the container.\nget int GetModEventMask=2378(,)\n\n# Change internal focus flag.\nset void SetFocus=2380(bool focus,)\n# Get internal focus flag.\nget bool GetFocus=2381(,)\n\nenu Status=SC_STATUS_\nval SC_STATUS_OK=0\nval SC_STATUS_FAILURE=1\nval SC_STATUS_BADALLOC=2\nval SC_STATUS_WARN_START=1000\nval SC_STATUS_WARN_REGEX=1001\n\n# Change error status - 0 = OK.\nset void SetStatus=2382(int status,)\n# Get error status.\nget int GetStatus=2383(,)\n\n# Set whether the mouse is captured when its button is pressed.\nset void SetMouseDownCaptures=2384(bool captures,)\n# Get whether mouse gets captured.\nget bool GetMouseDownCaptures=2385(,)\n\n# Set whether the mouse wheel can be active outside the window.\nset void SetMouseWheelCaptures=2696(bool captures,)\n# Get whether mouse wheel can be active outside the window.\nget bool GetMouseWheelCaptures=2697(,)\n\nenu CursorShape=SC_CURSOR\nval SC_CURSORNORMAL=-1\nval SC_CURSORARROW=2\nval SC_CURSORWAIT=4\nval SC_CURSORREVERSEARROW=7\n# Sets the cursor to one of the SC_CURSOR* values.\nset void SetCursor=2386(int cursorType,)\n# Get cursor type.\nget int GetCursor=2387(,)\n\n# Change the way control characters are displayed:\n# If symbol is < 32, keep the drawn way, else, use the given character.\nset void SetControlCharSymbol=2388(int symbol,)\n# Get the way control characters are displayed.\nget int GetControlCharSymbol=2389(,)\n\n# Move to the previous change in capitalisation.\nfun void WordPartLeft=2390(,)\n# Move to the previous change in capitalisation extending selection\n# to new caret position.\nfun void WordPartLeftExtend=2391(,)\n# Move to the change next in capitalisation.\nfun void WordPartRight=2392(,)\n# Move to the next change in capitalisation extending selection\n# to new caret position.\nfun void WordPartRightExtend=2393(,)\n\n# Constants for use with SetVisiblePolicy, similar to SetCaretPolicy.\nval VISIBLE_SLOP=0x01\nval VISIBLE_STRICT=0x04\n# Set the way the display area is determined when a particular line\n# is to be moved to by Find, FindNext, GotoLine, etc.\nfun void SetVisiblePolicy=2394(int visiblePolicy, int visibleSlop)\n\n# Delete back from the current position to the start of the line.\nfun void DelLineLeft=2395(,)\n\n# Delete forwards from the current position to the end of the line.\nfun void DelLineRight=2396(,)\n\n# Get and Set the xOffset (ie, horizontal scroll position).\nset void SetXOffset=2397(int xOffset,)\nget int GetXOffset=2398(,)\n\n# Set the last x chosen value to be the caret x position.\nfun void ChooseCaretX=2399(,)\n\n# Set the focus to this Scintilla widget.\nfun void GrabFocus=2400(,)\n\nenu CaretPolicy=CARET_\n# Caret policy, used by SetXCaretPolicy and SetYCaretPolicy.\n# If CARET_SLOP is set, we can define a slop value: caretSlop.\n# This value defines an unwanted zone (UZ) where the caret is... unwanted.\n# This zone is defined as a number of pixels near the vertical margins,\n# and as a number of lines near the horizontal margins.\n# By keeping the caret away from the edges, it is seen within its context,\n# so it is likely that the identifier that the caret is on can be completely seen,\n# and that the current line is seen with some of the lines following it which are\n# often dependent on that line.\nval CARET_SLOP=0x01\n# If CARET_STRICT is set, the policy is enforced... strictly.\n# The caret is centred on the display if slop is not set,\n# and cannot go in the UZ if slop is set.\nval CARET_STRICT=0x04\n# If CARET_JUMPS is set, the display is moved more energetically\n# so the caret can move in the same direction longer before the policy is applied again.\nval CARET_JUMPS=0x10\n# If CARET_EVEN is not set, instead of having symmetrical UZs,\n# the left and bottom UZs are extended up to right and top UZs respectively.\n# This way, we favour the displaying of useful information: the beginning of lines,\n# where most code reside, and the lines after the caret, eg. the body of a function.\nval CARET_EVEN=0x08\n\n# Set the way the caret is kept visible when going sideways.\n# The exclusion zone is given in pixels.\nfun void SetXCaretPolicy=2402(int caretPolicy, int caretSlop)\n\n# Set the way the line the caret is on is kept visible.\n# The exclusion zone is given in lines.\nfun void SetYCaretPolicy=2403(int caretPolicy, int caretSlop)\n\n# Set printing to line wrapped (SC_WRAP_WORD) or not line wrapped (SC_WRAP_NONE).\nset void SetPrintWrapMode=2406(int wrapMode,)\n\n# Is printing line wrapped?\nget int GetPrintWrapMode=2407(,)\n\n# Set a fore colour for active hotspots.\nset void SetHotspotActiveFore=2410(bool useSetting, colour fore)\n\n# Get the fore colour for active hotspots.\nget colour GetHotspotActiveFore=2494(,)\n\n# Set a back colour for active hotspots.\nset void SetHotspotActiveBack=2411(bool useSetting, colour back)\n\n# Get the back colour for active hotspots.\nget colour GetHotspotActiveBack=2495(,)\n\n# Enable / Disable underlining active hotspots.\nset void SetHotspotActiveUnderline=2412(bool underline,)\n\n# Get whether underlining for active hotspots.\nget bool GetHotspotActiveUnderline=2496(,)\n\n# Limit hotspots to single line so hotspots on two lines don't merge.\nset void SetHotspotSingleLine=2421(bool singleLine,)\n\n# Get the HotspotSingleLine property\nget bool GetHotspotSingleLine=2497(,)\n\n# Move caret down one paragraph (delimited by empty lines).\nfun void ParaDown=2413(,)\n# Extend selection down one paragraph (delimited by empty lines).\nfun void ParaDownExtend=2414(,)\n# Move caret up one paragraph (delimited by empty lines).\nfun void ParaUp=2415(,)\n# Extend selection up one paragraph (delimited by empty lines).\nfun void ParaUpExtend=2416(,)\n\n# Given a valid document position, return the previous position taking code\n# page into account. Returns 0 if passed 0.\nfun position PositionBefore=2417(position pos,)\n\n# Given a valid document position, return the next position taking code\n# page into account. Maximum value returned is the last position in the document.\nfun position PositionAfter=2418(position pos,)\n\n# Given a valid document position, return a position that differs in a number\n# of characters. Returned value is always between 0 and last position in document.\nfun position PositionRelative=2670(position pos, int relative)\n\n# Copy a range of text to the clipboard. Positions are clipped into the document.\nfun void CopyRange=2419(position start, position end)\n\n# Copy argument text to the clipboard.\nfun void CopyText=2420(int length, string text)\n\nenu SelectionMode=SC_SEL_\nval SC_SEL_STREAM=0\nval SC_SEL_RECTANGLE=1\nval SC_SEL_LINES=2\nval SC_SEL_THIN=3\n\n# Set the selection mode to stream (SC_SEL_STREAM) or rectangular (SC_SEL_RECTANGLE/SC_SEL_THIN) or\n# by lines (SC_SEL_LINES).\nset void SetSelectionMode=2422(int selectionMode,)\n\n# Get the mode of the current selection.\nget int GetSelectionMode=2423(,)\n\n# Retrieve the position of the start of the selection at the given line (INVALID_POSITION if no selection on this line).\nfun position GetLineSelStartPosition=2424(int line,)\n\n# Retrieve the position of the end of the selection at the given line (INVALID_POSITION if no selection on this line).\nfun position GetLineSelEndPosition=2425(int line,)\n\n## RectExtended rectangular selection moves\n# Move caret down one line, extending rectangular selection to new caret position.\nfun void LineDownRectExtend=2426(,)\n\n# Move caret up one line, extending rectangular selection to new caret position.\nfun void LineUpRectExtend=2427(,)\n\n# Move caret left one character, extending rectangular selection to new caret position.\nfun void CharLeftRectExtend=2428(,)\n\n# Move caret right one character, extending rectangular selection to new caret position.\nfun void CharRightRectExtend=2429(,)\n\n# Move caret to first position on line, extending rectangular selection to new caret position.\nfun void HomeRectExtend=2430(,)\n\n# Move caret to before first visible character on line.\n# If already there move to first character on line.\n# In either case, extend rectangular selection to new caret position.\nfun void VCHomeRectExtend=2431(,)\n\n# Move caret to last position on line, extending rectangular selection to new caret position.\nfun void LineEndRectExtend=2432(,)\n\n# Move caret one page up, extending rectangular selection to new caret position.\nfun void PageUpRectExtend=2433(,)\n\n# Move caret one page down, extending rectangular selection to new caret position.\nfun void PageDownRectExtend=2434(,)\n\n\n# Move caret to top of page, or one page up if already at top of page.\nfun void StutteredPageUp=2435(,)\n\n# Move caret to top of page, or one page up if already at top of page, extending selection to new caret position.\nfun void StutteredPageUpExtend=2436(,)\n\n# Move caret to bottom of page, or one page down if already at bottom of page.\nfun void StutteredPageDown=2437(,)\n\n# Move caret to bottom of page, or one page down if already at bottom of page, extending selection to new caret position.\nfun void StutteredPageDownExtend=2438(,)\n\n\n# Move caret left one word, position cursor at end of word.\nfun void WordLeftEnd=2439(,)\n\n# Move caret left one word, position cursor at end of word, extending selection to new caret position.\nfun void WordLeftEndExtend=2440(,)\n\n# Move caret right one word, position cursor at end of word.\nfun void WordRightEnd=2441(,)\n\n# Move caret right one word, position cursor at end of word, extending selection to new caret position.\nfun void WordRightEndExtend=2442(,)\n\n# Set the set of characters making up whitespace for when moving or selecting by word.\n# Should be called after SetWordChars.\nset void SetWhitespaceChars=2443(, string characters)\n\n# Get the set of characters making up whitespace for when moving or selecting by word.\nget int GetWhitespaceChars=2647(, stringresult characters)\n\n# Set the set of characters making up punctuation characters\n# Should be called after SetWordChars.\nset void SetPunctuationChars=2648(, string characters)\n\n# Get the set of characters making up punctuation characters\nget int GetPunctuationChars=2649(, stringresult characters)\n\n# Reset the set of characters for whitespace and word characters to the defaults.\nfun void SetCharsDefault=2444(,)\n\n# Get currently selected item position in the auto-completion list\nget int AutoCGetCurrent=2445(,)\n\n# Get currently selected item text in the auto-completion list\n# Returns the length of the item text\n# Result is NUL-terminated.\nget int AutoCGetCurrentText=2610(, stringresult text)\n\nenu CaseInsensitiveBehaviour=SC_CASEINSENSITIVEBEHAVIOUR_\nval SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE=0\nval SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE=1\n\n# Set auto-completion case insensitive behaviour to either prefer case-sensitive matches or have no preference.\nset void AutoCSetCaseInsensitiveBehaviour=2634(int behaviour,)\n\n# Get auto-completion case insensitive behaviour.\nget int AutoCGetCaseInsensitiveBehaviour=2635(,)\n\nenu MultiAutoComplete=SC_MULTIAUTOC_\nval SC_MULTIAUTOC_ONCE=0\nval SC_MULTIAUTOC_EACH=1\n\n# Change the effect of autocompleting when there are multiple selections.\nset void AutoCSetMulti=2636(int multi,)\n\n# Retrieve the effect of autocompleting when there are multiple selections.\nget int AutoCGetMulti=2637(,)\n\nenu Ordering=SC_ORDER_\nval SC_ORDER_PRESORTED=0\nval SC_ORDER_PERFORMSORT=1\nval SC_ORDER_CUSTOM=2\n\n# Set the way autocompletion lists are ordered.\nset void AutoCSetOrder=2660(int order,)\n\n# Get the way autocompletion lists are ordered.\nget int AutoCGetOrder=2661(,)\n\n# Enlarge the document to a particular size of text bytes.\nfun void Allocate=2446(int bytes,)\n\n# Returns the target converted to UTF8.\n# Return the length in bytes.\nfun int TargetAsUTF8=2447(, stringresult s)\n\n# Set the length of the utf8 argument for calling EncodedFromUTF8.\n# Set to -1 and the string will be measured to the first nul.\nfun void SetLengthForEncode=2448(int bytes,)\n\n# Translates a UTF8 string into the document encoding.\n# Return the length of the result in bytes.\n# On error return 0.\nfun int EncodedFromUTF8=2449(string utf8, stringresult encoded)\n\n# Find the position of a column on a line taking into account tabs and\n# multi-byte characters. If beyond end of line, return line end position.\nfun int FindColumn=2456(int line, int column)\n\n# Can the caret preferred x position only be changed by explicit movement commands?\nget int GetCaretSticky=2457(,)\n\n# Stop the caret preferred x position changing when the user types.\nset void SetCaretSticky=2458(int useCaretStickyBehaviour,)\n\nenu CaretSticky=SC_CARETSTICKY_\nval SC_CARETSTICKY_OFF=0\nval SC_CARETSTICKY_ON=1\nval SC_CARETSTICKY_WHITESPACE=2\n\n# Switch between sticky and non-sticky: meant to be bound to a key.\nfun void ToggleCaretSticky=2459(,)\n\n# Enable/Disable convert-on-paste for line endings\nset void SetPasteConvertEndings=2467(bool convert,)\n\n# Get convert-on-paste setting\nget bool GetPasteConvertEndings=2468(,)\n\n# Duplicate the selection. If selection empty duplicate the line containing the caret.\nfun void SelectionDuplicate=2469(,)\n\nval SC_ALPHA_TRANSPARENT=0\nval SC_ALPHA_OPAQUE=255\nval SC_ALPHA_NOALPHA=256\n\n# Set background alpha of the caret line.\nset void SetCaretLineBackAlpha=2470(int alpha,)\n\n# Get the background alpha of the caret line.\nget int GetCaretLineBackAlpha=2471(,)\n\nenu CaretStyle=CARETSTYLE_\nval CARETSTYLE_INVISIBLE=0\nval CARETSTYLE_LINE=1\nval CARETSTYLE_BLOCK=2\n\n# Set the style of the caret to be drawn.\nset void SetCaretStyle=2512(int caretStyle,)\n\n# Returns the current style of the caret.\nget int GetCaretStyle=2513(,)\n\n# Set the indicator used for IndicatorFillRange and IndicatorClearRange\nset void SetIndicatorCurrent=2500(int indicator,)\n\n# Get the current indicator\nget int GetIndicatorCurrent=2501(,)\n\n# Set the value used for IndicatorFillRange\nset void SetIndicatorValue=2502(int value,)\n\n# Get the current indicator value\nget int GetIndicatorValue=2503(,)\n\n# Turn a indicator on over a range.\nfun void IndicatorFillRange=2504(position start, int lengthFill)\n\n# Turn a indicator off over a range.\nfun void IndicatorClearRange=2505(position start, int lengthClear)\n\n# Are any indicators present at pos?\nfun int IndicatorAllOnFor=2506(position pos,)\n\n# What value does a particular indicator have at a position?\nfun int IndicatorValueAt=2507(int indicator, position pos)\n\n# Where does a particular indicator start?\nfun int IndicatorStart=2508(int indicator, position pos)\n\n# Where does a particular indicator end?\nfun int IndicatorEnd=2509(int indicator, position pos)\n\n# Set number of entries in position cache\nset void SetPositionCache=2514(int size,)\n\n# How many entries are allocated to the position cache?\nget int GetPositionCache=2515(,)\n\n# Copy the selection, if selection empty copy the line with the caret\nfun void CopyAllowLine=2519(,)\n\n# Compact the document buffer and return a read-only pointer to the\n# characters in the document.\nget int GetCharacterPointer=2520(,)\n\n# Return a read-only pointer to a range of characters in the document.\n# May move the gap so that the range is contiguous, but will only move up\n# to lengthRange bytes.\nget int GetRangePointer=2643(position start, int lengthRange)\n\n# Return a position which, to avoid performance costs, should not be within\n# the range of a call to GetRangePointer.\nget position GetGapPosition=2644(,)\n\n# Set the alpha fill colour of the given indicator.\nset void IndicSetAlpha=2523(int indicator, int alpha)\n\n# Get the alpha fill colour of the given indicator.\nget int IndicGetAlpha=2524(int indicator,)\n\n# Set the alpha outline colour of the given indicator.\nset void IndicSetOutlineAlpha=2558(int indicator, int alpha)\n\n# Get the alpha outline colour of the given indicator.\nget int IndicGetOutlineAlpha=2559(int indicator,)\n\n# Set extra ascent for each line\nset void SetExtraAscent=2525(int extraAscent,)\n\n# Get extra ascent for each line\nget int GetExtraAscent=2526(,)\n\n# Set extra descent for each line\nset void SetExtraDescent=2527(int extraDescent,)\n\n# Get extra descent for each line\nget int GetExtraDescent=2528(,)\n\n# Which symbol was defined for markerNumber with MarkerDefine\nfun int MarkerSymbolDefined=2529(int markerNumber,)\n\n# Set the text in the text margin for a line\nset void MarginSetText=2530(int line, string text)\n\n# Get the text in the text margin for a line\nget int MarginGetText=2531(int line, stringresult text)\n\n# Set the style number for the text margin for a line\nset void MarginSetStyle=2532(int line, int style)\n\n# Get the style number for the text margin for a line\nget int MarginGetStyle=2533(int line,)\n\n# Set the style in the text margin for a line\nset void MarginSetStyles=2534(int line, string styles)\n\n# Get the styles in the text margin for a line\nget int MarginGetStyles=2535(int line, stringresult styles)\n\n# Clear the margin text on all lines\nfun void MarginTextClearAll=2536(,)\n\n# Get the start of the range of style numbers used for margin text\nset void MarginSetStyleOffset=2537(int style,)\n\n# Get the start of the range of style numbers used for margin text\nget int MarginGetStyleOffset=2538(,)\n\nenu MarginOption=SC_MARGINOPTION_\nval SC_MARGINOPTION_NONE=0\nval SC_MARGINOPTION_SUBLINESELECT=1\n\n# Set the margin options.\nset void SetMarginOptions=2539(int marginOptions,)\n\n# Get the margin options.\nget int GetMarginOptions=2557(,)\n\n# Set the annotation text for a line\nset void AnnotationSetText=2540(int line, string text)\n\n# Get the annotation text for a line\nget int AnnotationGetText=2541(int line, stringresult text)\n\n# Set the style number for the annotations for a line\nset void AnnotationSetStyle=2542(int line, int style)\n\n# Get the style number for the annotations for a line\nget int AnnotationGetStyle=2543(int line,)\n\n# Set the annotation styles for a line\nset void AnnotationSetStyles=2544(int line, string styles)\n\n# Get the annotation styles for a line\nget int AnnotationGetStyles=2545(int line, stringresult styles)\n\n# Get the number of annotation lines for a line\nget int AnnotationGetLines=2546(int line,)\n\n# Clear the annotations from all lines\nfun void AnnotationClearAll=2547(,)\n\nenu AnnotationVisible=ANNOTATION_\nval ANNOTATION_HIDDEN=0\nval ANNOTATION_STANDARD=1\nval ANNOTATION_BOXED=2\nval ANNOTATION_INDENTED=3\n\n# Set the visibility for the annotations for a view\nset void AnnotationSetVisible=2548(int visible,)\n\n# Get the visibility for the annotations for a view\nget int AnnotationGetVisible=2549(,)\n\n# Get the start of the range of style numbers used for annotations\nset void AnnotationSetStyleOffset=2550(int style,)\n\n# Get the start of the range of style numbers used for annotations\nget int AnnotationGetStyleOffset=2551(,)\n\n# Release all extended (>255) style numbers\nfun void ReleaseAllExtendedStyles=2552(,)\n\n# Allocate some extended (>255) style numbers and return the start of the range\nfun int AllocateExtendedStyles=2553(int numberStyles,)\n\nval UNDO_MAY_COALESCE=1\n\n# Add a container action to the undo stack\nfun void AddUndoAction=2560(int token, int flags)\n\n# Find the position of a character from a point within the window.\nfun position CharPositionFromPoint=2561(int x, int y)\n\n# Find the position of a character from a point within the window.\n# Return INVALID_POSITION if not close to text.\nfun position CharPositionFromPointClose=2562(int x, int y)\n\n# Set whether switching to rectangular mode while selecting with the mouse is allowed.\nset void SetMouseSelectionRectangularSwitch=2668(bool mouseSelectionRectangularSwitch,)\n\n# Whether switching to rectangular mode while selecting with the mouse is allowed.\nget bool GetMouseSelectionRectangularSwitch=2669(,)\n\n# Set whether multiple selections can be made\nset void SetMultipleSelection=2563(bool multipleSelection,)\n\n# Whether multiple selections can be made\nget bool GetMultipleSelection=2564(,)\n\n# Set whether typing can be performed into multiple selections\nset void SetAdditionalSelectionTyping=2565(bool additionalSelectionTyping,)\n\n# Whether typing can be performed into multiple selections\nget bool GetAdditionalSelectionTyping=2566(,)\n\n# Set whether additional carets will blink\nset void SetAdditionalCaretsBlink=2567(bool additionalCaretsBlink,)\n\n# Whether additional carets will blink\nget bool GetAdditionalCaretsBlink=2568(,)\n\n# Set whether additional carets are visible\nset void SetAdditionalCaretsVisible=2608(bool additionalCaretsVisible,)\n\n# Whether additional carets are visible\nget bool GetAdditionalCaretsVisible=2609(,)\n\n# How many selections are there?\nget int GetSelections=2570(,)\n\n# Is every selected range empty?\nget bool GetSelectionEmpty=2650(,)\n\n# Clear selections to a single empty stream selection\nfun void ClearSelections=2571(,)\n\n# Set a simple selection\nfun int SetSelection=2572(position caret, position anchor)\n\n# Add a selection\nfun int AddSelection=2573(position caret, position anchor)\n\n# Drop one selection\nfun void DropSelectionN=2671(int selection,)\n\n# Set the main selection\nset void SetMainSelection=2574(int selection,)\n\n# Which selection is the main selection\nget int GetMainSelection=2575(,)\n\n# Set the caret position of the nth selection.\nset void SetSelectionNCaret=2576(int selection, position caret)\n# Return the caret position of the nth selection.\nget position GetSelectionNCaret=2577(int selection,)\n# Set the anchor position of the nth selection.\nset void SetSelectionNAnchor=2578(int selection, position anchor)\n# Return the anchor position of the nth selection.\nget position GetSelectionNAnchor=2579(int selection,)\n# Set the virtual space of the caret of the nth selection.\nset void SetSelectionNCaretVirtualSpace=2580(int selection, int space)\n# Return the virtual space of the caret of the nth selection.\nget int GetSelectionNCaretVirtualSpace=2581(int selection,)\n# Set the virtual space of the anchor of the nth selection.\nset void SetSelectionNAnchorVirtualSpace=2582(int selection, int space)\n# Return the virtual space of the anchor of the nth selection.\nget int GetSelectionNAnchorVirtualSpace=2583(int selection,)\n\n# Sets the position that starts the selection - this becomes the anchor.\nset void SetSelectionNStart=2584(int selection, position anchor)\n\n# Returns the position at the start of the selection.\nget position GetSelectionNStart=2585(int selection,)\n\n# Sets the position that ends the selection - this becomes the currentPosition.\nset void SetSelectionNEnd=2586(int selection, position caret)\n\n# Returns the position at the end of the selection.\nget position GetSelectionNEnd=2587(int selection,)\n\n# Set the caret position of the rectangular selection.\nset void SetRectangularSelectionCaret=2588(position caret,)\n# Return the caret position of the rectangular selection.\nget position GetRectangularSelectionCaret=2589(,)\n# Set the anchor position of the rectangular selection.\nset void SetRectangularSelectionAnchor=2590(position anchor,)\n# Return the anchor position of the rectangular selection.\nget position GetRectangularSelectionAnchor=2591(,)\n# Set the virtual space of the caret of the rectangular selection.\nset void SetRectangularSelectionCaretVirtualSpace=2592(int space,)\n# Return the virtual space of the caret of the rectangular selection.\nget int GetRectangularSelectionCaretVirtualSpace=2593(,)\n# Set the virtual space of the anchor of the rectangular selection.\nset void SetRectangularSelectionAnchorVirtualSpace=2594(int space,)\n# Return the virtual space of the anchor of the rectangular selection.\nget int GetRectangularSelectionAnchorVirtualSpace=2595(,)\n\nenu VirtualSpace=SCVS_\nval SCVS_NONE=0\nval SCVS_RECTANGULARSELECTION=1\nval SCVS_USERACCESSIBLE=2\nval SCVS_NOWRAPLINESTART=4\n\n# Set options for virtual space behaviour.\nset void SetVirtualSpaceOptions=2596(int virtualSpaceOptions,)\n# Return options for virtual space behaviour.\nget int GetVirtualSpaceOptions=2597(,)\n\n# On GTK+, allow selecting the modifier key to use for mouse-based\n# rectangular selection. Often the window manager requires Alt+Mouse Drag\n# for moving windows.\n# Valid values are SCMOD_CTRL(default), SCMOD_ALT, or SCMOD_SUPER.\n\nset void SetRectangularSelectionModifier=2598(int modifier,)\n\n# Get the modifier key used for rectangular selection.\nget int GetRectangularSelectionModifier=2599(,)\n\n# Set the foreground colour of additional selections.\n# Must have previously called SetSelFore with non-zero first argument for this to have an effect.\nset void SetAdditionalSelFore=2600(colour fore,)\n\n# Set the background colour of additional selections.\n# Must have previously called SetSelBack with non-zero first argument for this to have an effect.\nset void SetAdditionalSelBack=2601(colour back,)\n\n# Set the alpha of the selection.\nset void SetAdditionalSelAlpha=2602(int alpha,)\n\n# Get the alpha of the selection.\nget int GetAdditionalSelAlpha=2603(,)\n\n# Set the foreground colour of additional carets.\nset void SetAdditionalCaretFore=2604(colour fore,)\n\n# Get the foreground colour of additional carets.\nget colour GetAdditionalCaretFore=2605(,)\n\n# Set the main selection to the next selection.\nfun void RotateSelection=2606(,)\n\n# Swap that caret and anchor of the main selection.\nfun void SwapMainAnchorCaret=2607(,)\n\n# Add the next occurrence of the main selection to the set of selections as main.\n# If the current selection is empty then select word around caret.\nfun void MultipleSelectAddNext=2688(,)\n\n# Add each occurrence of the main selection in the target to the set of selections.\n# If the current selection is empty then select word around caret.\nfun void MultipleSelectAddEach=2689(,)\n\n# Indicate that the internal state of a lexer has changed over a range and therefore\n# there may be a need to redraw.\nfun int ChangeLexerState=2617(position start, position end)\n\n# Find the next line at or after lineStart that is a contracted fold header line.\n# Return -1 when no more lines.\nfun int ContractedFoldNext=2618(int lineStart,)\n\n# Centre current line in window.\nfun void VerticalCentreCaret=2619(,)\n\n# Move the selected lines up one line, shifting the line above after the selection\nfun void MoveSelectedLinesUp=2620(,)\n\n# Move the selected lines down one line, shifting the line below before the selection\nfun void MoveSelectedLinesDown=2621(,)\n\n# Set the identifier reported as idFrom in notification messages.\nset void SetIdentifier=2622(int identifier,)\n\n# Get the identifier.\nget int GetIdentifier=2623(,)\n\n# Set the width for future RGBA image data.\nset void RGBAImageSetWidth=2624(int width,)\n\n# Set the height for future RGBA image data.\nset void RGBAImageSetHeight=2625(int height,)\n\n# Set the scale factor in percent for future RGBA image data.\nset void RGBAImageSetScale=2651(int scalePercent,)\n\n# Define a marker from RGBA data.\n# It has the width and height from RGBAImageSetWidth/Height\nfun void MarkerDefineRGBAImage=2626(int markerNumber, string pixels)\n\n# Register an RGBA image for use in autocompletion lists.\n# It has the width and height from RGBAImageSetWidth/Height\nfun void RegisterRGBAImage=2627(int type, string pixels)\n\n# Scroll to start of document.\nfun void ScrollToStart=2628(,)\n\n# Scroll to end of document.\nfun void ScrollToEnd=2629(,)\n\nval SC_TECHNOLOGY_DEFAULT=0\nval SC_TECHNOLOGY_DIRECTWRITE=1\nval SC_TECHNOLOGY_DIRECTWRITERETAIN=2\nval SC_TECHNOLOGY_DIRECTWRITEDC=3\n\n# Set the technology used.\nset void SetTechnology=2630(int technology,)\n\n# Get the tech.\nget int GetTechnology=2631(,)\n\n# Create an ILoader*.\nfun int CreateLoader=2632(int bytes,)\n\n# On OS X, show a find indicator.\nfun void FindIndicatorShow=2640(position start, position end)\n\n# On OS X, flash a find indicator, then fade out.\nfun void FindIndicatorFlash=2641(position start, position end)\n\n# On OS X, hide the find indicator.\nfun void FindIndicatorHide=2642(,)\n\n# Move caret to before first visible character on display line.\n# If already there move to first character on display line.\nfun void VCHomeDisplay=2652(,)\n\n# Like VCHomeDisplay but extending selection to new caret position.\nfun void VCHomeDisplayExtend=2653(,)\n\n# Is the caret line always visible?\nget bool GetCaretLineVisibleAlways=2654(,)\n\n# Sets the caret line to always visible.\nset void SetCaretLineVisibleAlways=2655(bool alwaysVisible,)\n\n# Line end types which may be used in addition to LF, CR, and CRLF\n# SC_LINE_END_TYPE_UNICODE includes U+2028 Line Separator,\n# U+2029 Paragraph Separator, and U+0085 Next Line\nenu LineEndType=SC_LINE_END_TYPE_\nval SC_LINE_END_TYPE_DEFAULT=0\nval SC_LINE_END_TYPE_UNICODE=1\n\n# Set the line end types that the application wants to use. May not be used if incompatible with lexer or encoding.\nset void SetLineEndTypesAllowed=2656(int lineEndBitSet,)\n\n# Get the line end types currently allowed.\nget int GetLineEndTypesAllowed=2657(,)\n\n# Get the line end types currently recognised. May be a subset of the allowed types due to lexer limitation.\nget int GetLineEndTypesActive=2658(,)\n\n# Set the way a character is drawn.\nset void SetRepresentation=2665(string encodedCharacter, string representation)\n\n# Set the way a character is drawn.\n# Result is NUL-terminated.\nget int GetRepresentation=2666(string encodedCharacter, stringresult representation)\n\n# Remove a character representation.\nfun void ClearRepresentation=2667(string encodedCharacter,)\n\n# Start notifying the container of all key presses and commands.\nfun void StartRecord=3001(,)\n\n# Stop notifying the container of all key presses and commands.\nfun void StopRecord=3002(,)\n\n# Set the lexing language of the document.\nset void SetLexer=4001(int lexer,)\n\n# Retrieve the lexing language of the document.\nget int GetLexer=4002(,)\n\n# Colourise a segment of the document using the current lexing language.\nfun void Colourise=4003(position start, position end)\n\n# Set up a value that may be used by a lexer for some optional feature.\nset void SetProperty=4004(string key, string value)\n\n# Maximum value of keywordSet parameter of SetKeyWords.\nval KEYWORDSET_MAX=8\n\n# Set up the key words used by the lexer.\nset void SetKeyWords=4005(int keyWordSet, string keyWords)\n\n# Set the lexing language of the document based on string name.\nset void SetLexerLanguage=4006(, string language)\n\n# Load a lexer library (dll / so).\nfun void LoadLexerLibrary=4007(, string path)\n\n# Retrieve a \"property\" value previously set with SetProperty.\n# Result is NUL-terminated.\nget int GetProperty=4008(string key, stringresult value)\n\n# Retrieve a \"property\" value previously set with SetProperty,\n# with \"$()\" variable replacement on returned buffer.\n# Result is NUL-terminated.\nget int GetPropertyExpanded=4009(string key, stringresult value)\n\n# Retrieve a \"property\" value previously set with SetProperty,\n# interpreted as an int AFTER any \"$()\" variable replacement.\nget int GetPropertyInt=4010(string key, int defaultValue)\n\n# Retrieve the number of bits the current lexer needs for styling.\nget int GetStyleBitsNeeded=4011(,)\n\n# Retrieve the name of the lexer.\n# Return the length of the text.\n# Result is NUL-terminated.\nget int GetLexerLanguage=4012(, stringresult language)\n\n# For private communication between an application and a known lexer.\nfun int PrivateLexerCall=4013(int operation, int pointer)\n\n# Retrieve a '\\n' separated list of properties understood by the current lexer.\n# Result is NUL-terminated.\nfun int PropertyNames=4014(, stringresult names)\n\nenu TypeProperty=SC_TYPE_\nval SC_TYPE_BOOLEAN=0\nval SC_TYPE_INTEGER=1\nval SC_TYPE_STRING=2\n\n# Retrieve the type of a property.\nfun int PropertyType=4015(string name,)\n\n# Describe a property.\n# Result is NUL-terminated.\nfun int DescribeProperty=4016(string name, stringresult description)\n\n# Retrieve a '\\n' separated list of descriptions of the keyword sets understood by the current lexer.\n# Result is NUL-terminated.\nfun int DescribeKeyWordSets=4017(, stringresult descriptions)\n\n# Bit set of LineEndType enumertion for which line ends beyond the standard\n# LF, CR, and CRLF are supported by the lexer.\nget int GetLineEndTypesSupported=4018(,)\n\n# Allocate a set of sub styles for a particular base style, returning start of range\nfun int AllocateSubStyles=4020(int styleBase, int numberStyles)\n\n# The starting style number for the sub styles associated with a base style\nget int GetSubStylesStart=4021(int styleBase,)\n\n# The number of sub styles associated with a base style\nget int GetSubStylesLength=4022(int styleBase,)\n\n# For a sub style, return the base style, else return the argument.\nget int GetStyleFromSubStyle=4027(int subStyle,)\n\n# For a secondary style, return the primary style, else return the argument.\nget int GetPrimaryStyleFromStyle=4028(int style,)\n\n# Free allocated sub styles\nfun void FreeSubStyles=4023(,)\n\n# Set the identifiers that are shown in a particular style\nset void SetIdentifiers=4024(int style, string identifiers)\n\n# Where styles are duplicated by a feature such as active/inactive code\n# return the distance between the two types.\nget int DistanceToSecondaryStyles=4025(,)\n\n# Get the set of base styles that can be extended with sub styles\n# Result is NUL-terminated.\nget int GetSubStyleBases=4026(, stringresult styles)\n\n# Notifications\n# Type of modification and the action which caused the modification.\n# These are defined as a bit mask to make it easy to specify which notifications are wanted.\n# One bit is set from each of SC_MOD_* and SC_PERFORMED_*.\nenu ModificationFlags=SC_MOD_ SC_PERFORMED_ SC_MULTISTEPUNDOREDO SC_LASTSTEPINUNDOREDO SC_MULTILINEUNDOREDO SC_STARTACTION SC_MODEVENTMASKALL\nval SC_MOD_INSERTTEXT=0x1\nval SC_MOD_DELETETEXT=0x2\nval SC_MOD_CHANGESTYLE=0x4\nval SC_MOD_CHANGEFOLD=0x8\nval SC_PERFORMED_USER=0x10\nval SC_PERFORMED_UNDO=0x20\nval SC_PERFORMED_REDO=0x40\nval SC_MULTISTEPUNDOREDO=0x80\nval SC_LASTSTEPINUNDOREDO=0x100\nval SC_MOD_CHANGEMARKER=0x200\nval SC_MOD_BEFOREINSERT=0x400\nval SC_MOD_BEFOREDELETE=0x800\nval SC_MULTILINEUNDOREDO=0x1000\nval SC_STARTACTION=0x2000\nval SC_MOD_CHANGEINDICATOR=0x4000\nval SC_MOD_CHANGELINESTATE=0x8000\nval SC_MOD_CHANGEMARGIN=0x10000\nval SC_MOD_CHANGEANNOTATION=0x20000\nval SC_MOD_CONTAINER=0x40000\nval SC_MOD_LEXERSTATE=0x80000\nval SC_MOD_INSERTCHECK=0x100000\nval SC_MOD_CHANGETABSTOPS=0x200000\nval SC_MODEVENTMASKALL=0x3FFFFF\n\nenu Update=SC_UPDATE_\nval SC_UPDATE_CONTENT=0x1\nval SC_UPDATE_SELECTION=0x2\nval SC_UPDATE_V_SCROLL=0x4\nval SC_UPDATE_H_SCROLL=0x8\n\n# For compatibility, these go through the COMMAND notification rather than NOTIFY\n# and should have had exactly the same values as the EN_* constants.\n# Unfortunately the SETFOCUS and KILLFOCUS are flipped over from EN_*\n# As clients depend on these constants, this will not be changed.\nval SCEN_CHANGE=768\nval SCEN_SETFOCUS=512\nval SCEN_KILLFOCUS=256\n\n# Symbolic key codes and modifier flags.\n# ASCII and other printable characters below 256.\n# Extended keys above 300.\n\nenu Keys=SCK_\nval SCK_DOWN=300\nval SCK_UP=301\nval SCK_LEFT=302\nval SCK_RIGHT=303\nval SCK_HOME=304\nval SCK_END=305\nval SCK_PRIOR=306\nval SCK_NEXT=307\nval SCK_DELETE=308\nval SCK_INSERT=309\nval SCK_ESCAPE=7\nval SCK_BACK=8\nval SCK_TAB=9\nval SCK_RETURN=13\nval SCK_ADD=310\nval SCK_SUBTRACT=311\nval SCK_DIVIDE=312\nval SCK_WIN=313\nval SCK_RWIN=314\nval SCK_MENU=315\n\nenu KeyMod=SCMOD_\nval SCMOD_NORM=0\nval SCMOD_SHIFT=1\nval SCMOD_CTRL=2\nval SCMOD_ALT=4\nval SCMOD_SUPER=8\nval SCMOD_META=16\n\nenu CompletionMethods=SC_AC_\nval SC_AC_FILLUP=1\nval SC_AC_DOUBLECLICK=2\nval SC_AC_TAB=3\nval SC_AC_NEWLINE=4\nval SC_AC_COMMAND=5\n\n################################################\n# For SciLexer.h\nenu Lexer=SCLEX_\nval SCLEX_CONTAINER=0\nval SCLEX_NULL=1\nval SCLEX_PYTHON=2\nval SCLEX_CPP=3\nval SCLEX_HTML=4\nval SCLEX_XML=5\nval SCLEX_PERL=6\nval SCLEX_SQL=7\nval SCLEX_VB=8\nval SCLEX_PROPERTIES=9\nval SCLEX_ERRORLIST=10\nval SCLEX_MAKEFILE=11\nval SCLEX_BATCH=12\nval SCLEX_XCODE=13\nval SCLEX_LATEX=14\nval SCLEX_LUA=15\nval SCLEX_DIFF=16\nval SCLEX_CONF=17\nval SCLEX_PASCAL=18\nval SCLEX_AVE=19\nval SCLEX_ADA=20\nval SCLEX_LISP=21\nval SCLEX_RUBY=22\nval SCLEX_EIFFEL=23\nval SCLEX_EIFFELKW=24\nval SCLEX_TCL=25\nval SCLEX_NNCRONTAB=26\nval SCLEX_BULLANT=27\nval SCLEX_VBSCRIPT=28\nval SCLEX_BAAN=31\nval SCLEX_MATLAB=32\nval SCLEX_SCRIPTOL=33\nval SCLEX_ASM=34\nval SCLEX_CPPNOCASE=35\nval SCLEX_FORTRAN=36\nval SCLEX_F77=37\nval SCLEX_CSS=38\nval SCLEX_POV=39\nval SCLEX_LOUT=40\nval SCLEX_ESCRIPT=41\nval SCLEX_PS=42\nval SCLEX_NSIS=43\nval SCLEX_MMIXAL=44\nval SCLEX_CLW=45\nval SCLEX_CLWNOCASE=46\nval SCLEX_LOT=47\nval SCLEX_YAML=48\nval SCLEX_TEX=49\nval SCLEX_METAPOST=50\nval SCLEX_POWERBASIC=51\nval SCLEX_FORTH=52\nval SCLEX_ERLANG=53\nval SCLEX_OCTAVE=54\nval SCLEX_MSSQL=55\nval SCLEX_VERILOG=56\nval SCLEX_KIX=57\nval SCLEX_GUI4CLI=58\nval SCLEX_SPECMAN=59\nval SCLEX_AU3=60\nval SCLEX_APDL=61\nval SCLEX_BASH=62\nval SCLEX_ASN1=63\nval SCLEX_VHDL=64\nval SCLEX_CAML=65\nval SCLEX_BLITZBASIC=66\nval SCLEX_PUREBASIC=67\nval SCLEX_HASKELL=68\nval SCLEX_PHPSCRIPT=69\nval SCLEX_TADS3=70\nval SCLEX_REBOL=71\nval SCLEX_SMALLTALK=72\nval SCLEX_FLAGSHIP=73\nval SCLEX_CSOUND=74\nval SCLEX_FREEBASIC=75\nval SCLEX_INNOSETUP=76\nval SCLEX_OPAL=77\nval SCLEX_SPICE=78\nval SCLEX_D=79\nval SCLEX_CMAKE=80\nval SCLEX_GAP=81\nval SCLEX_PLM=82\nval SCLEX_PROGRESS=83\nval SCLEX_ABAQUS=84\nval SCLEX_ASYMPTOTE=85\nval SCLEX_R=86\nval SCLEX_MAGIK=87\nval SCLEX_POWERSHELL=88\nval SCLEX_MYSQL=89\nval SCLEX_PO=90\nval SCLEX_TAL=91\nval SCLEX_COBOL=92\nval SCLEX_TACL=93\nval SCLEX_SORCUS=94\nval SCLEX_POWERPRO=95\nval SCLEX_NIMROD=96\nval SCLEX_SML=97\nval SCLEX_MARKDOWN=98\nval SCLEX_TXT2TAGS=99\nval SCLEX_A68K=100\nval SCLEX_MODULA=101\nval SCLEX_COFFEESCRIPT=102\nval SCLEX_TCMD=103\nval SCLEX_AVS=104\nval SCLEX_ECL=105\nval SCLEX_OSCRIPT=106\nval SCLEX_VISUALPROLOG=107\nval SCLEX_LITERATEHASKELL=108\nval SCLEX_STTXT=109\nval SCLEX_KVIRC=110\nval SCLEX_RUST=111\nval SCLEX_DMAP=112\nval SCLEX_AS=113\nval SCLEX_DMIS=114\nval SCLEX_REGISTRY=115\nval SCLEX_BIBTEX=116\nval SCLEX_SREC=117\nval SCLEX_IHEX=118\nval SCLEX_TEHEX=119\nval SCLEX_JSON=120\nval SCLEX_EDIFACT=121\n\n# When a lexer specifies its language as SCLEX_AUTOMATIC it receives a\n# value assigned in sequence from SCLEX_AUTOMATIC+1.\nval SCLEX_AUTOMATIC=1000\n# Lexical states for SCLEX_PYTHON\nlex Python=SCLEX_PYTHON SCE_P_\nlex Nimrod=SCLEX_NIMROD SCE_P_\nval SCE_P_DEFAULT=0\nval SCE_P_COMMENTLINE=1\nval SCE_P_NUMBER=2\nval SCE_P_STRING=3\nval SCE_P_CHARACTER=4\nval SCE_P_WORD=5\nval SCE_P_TRIPLE=6\nval SCE_P_TRIPLEDOUBLE=7\nval SCE_P_CLASSNAME=8\nval SCE_P_DEFNAME=9\nval SCE_P_OPERATOR=10\nval SCE_P_IDENTIFIER=11\nval SCE_P_COMMENTBLOCK=12\nval SCE_P_STRINGEOL=13\nval SCE_P_WORD2=14\nval SCE_P_DECORATOR=15\n# Lexical states for SCLEX_CPP, SCLEX_BULLANT, SCLEX_COBOL, SCLEX_TACL, SCLEX_TAL\nlex Cpp=SCLEX_CPP SCE_C_\nlex BullAnt=SCLEX_BULLANT SCE_C_\nlex COBOL=SCLEX_COBOL SCE_C_\nlex TACL=SCLEX_TACL SCE_C_\nlex TAL=SCLEX_TAL SCE_C_\nval SCE_C_DEFAULT=0\nval SCE_C_COMMENT=1\nval SCE_C_COMMENTLINE=2\nval SCE_C_COMMENTDOC=3\nval SCE_C_NUMBER=4\nval SCE_C_WORD=5\nval SCE_C_STRING=6\nval SCE_C_CHARACTER=7\nval SCE_C_UUID=8\nval SCE_C_PREPROCESSOR=9\nval SCE_C_OPERATOR=10\nval SCE_C_IDENTIFIER=11\nval SCE_C_STRINGEOL=12\nval SCE_C_VERBATIM=13\nval SCE_C_REGEX=14\nval SCE_C_COMMENTLINEDOC=15\nval SCE_C_WORD2=16\nval SCE_C_COMMENTDOCKEYWORD=17\nval SCE_C_COMMENTDOCKEYWORDERROR=18\nval SCE_C_GLOBALCLASS=19\nval SCE_C_STRINGRAW=20\nval SCE_C_TRIPLEVERBATIM=21\nval SCE_C_HASHQUOTEDSTRING=22\nval SCE_C_PREPROCESSORCOMMENT=23\nval SCE_C_PREPROCESSORCOMMENTDOC=24\nval SCE_C_USERLITERAL=25\nval SCE_C_TASKMARKER=26\nval SCE_C_ESCAPESEQUENCE=27\n# Lexical states for SCLEX_D\nlex D=SCLEX_D SCE_D_\nval SCE_D_DEFAULT=0\nval SCE_D_COMMENT=1\nval SCE_D_COMMENTLINE=2\nval SCE_D_COMMENTDOC=3\nval SCE_D_COMMENTNESTED=4\nval SCE_D_NUMBER=5\nval SCE_D_WORD=6\nval SCE_D_WORD2=7\nval SCE_D_WORD3=8\nval SCE_D_TYPEDEF=9\nval SCE_D_STRING=10\nval SCE_D_STRINGEOL=11\nval SCE_D_CHARACTER=12\nval SCE_D_OPERATOR=13\nval SCE_D_IDENTIFIER=14\nval SCE_D_COMMENTLINEDOC=15\nval SCE_D_COMMENTDOCKEYWORD=16\nval SCE_D_COMMENTDOCKEYWORDERROR=17\nval SCE_D_STRINGB=18\nval SCE_D_STRINGR=19\nval SCE_D_WORD5=20\nval SCE_D_WORD6=21\nval SCE_D_WORD7=22\n# Lexical states for SCLEX_TCL\nlex TCL=SCLEX_TCL SCE_TCL_\nval SCE_TCL_DEFAULT=0\nval SCE_TCL_COMMENT=1\nval SCE_TCL_COMMENTLINE=2\nval SCE_TCL_NUMBER=3\nval SCE_TCL_WORD_IN_QUOTE=4\nval SCE_TCL_IN_QUOTE=5\nval SCE_TCL_OPERATOR=6\nval SCE_TCL_IDENTIFIER=7\nval SCE_TCL_SUBSTITUTION=8\nval SCE_TCL_SUB_BRACE=9\nval SCE_TCL_MODIFIER=10\nval SCE_TCL_EXPAND=11\nval SCE_TCL_WORD=12\nval SCE_TCL_WORD2=13\nval SCE_TCL_WORD3=14\nval SCE_TCL_WORD4=15\nval SCE_TCL_WORD5=16\nval SCE_TCL_WORD6=17\nval SCE_TCL_WORD7=18\nval SCE_TCL_WORD8=19\nval SCE_TCL_COMMENT_BOX=20\nval SCE_TCL_BLOCK_COMMENT=21\n# Lexical states for SCLEX_HTML, SCLEX_XML\nlex HTML=SCLEX_HTML SCE_H_ SCE_HJ_ SCE_HJA_ SCE_HB_ SCE_HBA_ SCE_HP_ SCE_HPHP_ SCE_HPA_\nlex XML=SCLEX_XML SCE_H_ SCE_HJ_ SCE_HJA_ SCE_HB_ SCE_HBA_ SCE_HP_ SCE_HPHP_ SCE_HPA_\nval SCE_H_DEFAULT=0\nval SCE_H_TAG=1\nval SCE_H_TAGUNKNOWN=2\nval SCE_H_ATTRIBUTE=3\nval SCE_H_ATTRIBUTEUNKNOWN=4\nval SCE_H_NUMBER=5\nval SCE_H_DOUBLESTRING=6\nval SCE_H_SINGLESTRING=7\nval SCE_H_OTHER=8\nval SCE_H_COMMENT=9\nval SCE_H_ENTITY=10\n# XML and ASP\nval SCE_H_TAGEND=11\nval SCE_H_XMLSTART=12\nval SCE_H_XMLEND=13\nval SCE_H_SCRIPT=14\nval SCE_H_ASP=15\nval SCE_H_ASPAT=16\nval SCE_H_CDATA=17\nval SCE_H_QUESTION=18\n# More HTML\nval SCE_H_VALUE=19\n# X-Code\nval SCE_H_XCCOMMENT=20\n# SGML\nval SCE_H_SGML_DEFAULT=21\nval SCE_H_SGML_COMMAND=22\nval SCE_H_SGML_1ST_PARAM=23\nval SCE_H_SGML_DOUBLESTRING=24\nval SCE_H_SGML_SIMPLESTRING=25\nval SCE_H_SGML_ERROR=26\nval SCE_H_SGML_SPECIAL=27\nval SCE_H_SGML_ENTITY=28\nval SCE_H_SGML_COMMENT=29\nval SCE_H_SGML_1ST_PARAM_COMMENT=30\nval SCE_H_SGML_BLOCK_DEFAULT=31\n# Embedded Javascript\nval SCE_HJ_START=40\nval SCE_HJ_DEFAULT=41\nval SCE_HJ_COMMENT=42\nval SCE_HJ_COMMENTLINE=43\nval SCE_HJ_COMMENTDOC=44\nval SCE_HJ_NUMBER=45\nval SCE_HJ_WORD=46\nval SCE_HJ_KEYWORD=47\nval SCE_HJ_DOUBLESTRING=48\nval SCE_HJ_SINGLESTRING=49\nval SCE_HJ_SYMBOLS=50\nval SCE_HJ_STRINGEOL=51\nval SCE_HJ_REGEX=52\n# ASP Javascript\nval SCE_HJA_START=55\nval SCE_HJA_DEFAULT=56\nval SCE_HJA_COMMENT=57\nval SCE_HJA_COMMENTLINE=58\nval SCE_HJA_COMMENTDOC=59\nval SCE_HJA_NUMBER=60\nval SCE_HJA_WORD=61\nval SCE_HJA_KEYWORD=62\nval SCE_HJA_DOUBLESTRING=63\nval SCE_HJA_SINGLESTRING=64\nval SCE_HJA_SYMBOLS=65\nval SCE_HJA_STRINGEOL=66\nval SCE_HJA_REGEX=67\n# Embedded VBScript\nval SCE_HB_START=70\nval SCE_HB_DEFAULT=71\nval SCE_HB_COMMENTLINE=72\nval SCE_HB_NUMBER=73\nval SCE_HB_WORD=74\nval SCE_HB_STRING=75\nval SCE_HB_IDENTIFIER=76\nval SCE_HB_STRINGEOL=77\n# ASP VBScript\nval SCE_HBA_START=80\nval SCE_HBA_DEFAULT=81\nval SCE_HBA_COMMENTLINE=82\nval SCE_HBA_NUMBER=83\nval SCE_HBA_WORD=84\nval SCE_HBA_STRING=85\nval SCE_HBA_IDENTIFIER=86\nval SCE_HBA_STRINGEOL=87\n# Embedded Python\nval SCE_HP_START=90\nval SCE_HP_DEFAULT=91\nval SCE_HP_COMMENTLINE=92\nval SCE_HP_NUMBER=93\nval SCE_HP_STRING=94\nval SCE_HP_CHARACTER=95\nval SCE_HP_WORD=96\nval SCE_HP_TRIPLE=97\nval SCE_HP_TRIPLEDOUBLE=98\nval SCE_HP_CLASSNAME=99\nval SCE_HP_DEFNAME=100\nval SCE_HP_OPERATOR=101\nval SCE_HP_IDENTIFIER=102\n# PHP\nval SCE_HPHP_COMPLEX_VARIABLE=104\n# ASP Python\nval SCE_HPA_START=105\nval SCE_HPA_DEFAULT=106\nval SCE_HPA_COMMENTLINE=107\nval SCE_HPA_NUMBER=108\nval SCE_HPA_STRING=109\nval SCE_HPA_CHARACTER=110\nval SCE_HPA_WORD=111\nval SCE_HPA_TRIPLE=112\nval SCE_HPA_TRIPLEDOUBLE=113\nval SCE_HPA_CLASSNAME=114\nval SCE_HPA_DEFNAME=115\nval SCE_HPA_OPERATOR=116\nval SCE_HPA_IDENTIFIER=117\n# PHP\nval SCE_HPHP_DEFAULT=118\nval SCE_HPHP_HSTRING=119\nval SCE_HPHP_SIMPLESTRING=120\nval SCE_HPHP_WORD=121\nval SCE_HPHP_NUMBER=122\nval SCE_HPHP_VARIABLE=123\nval SCE_HPHP_COMMENT=124\nval SCE_HPHP_COMMENTLINE=125\nval SCE_HPHP_HSTRING_VARIABLE=126\nval SCE_HPHP_OPERATOR=127\n# Lexical states for SCLEX_PERL\nlex Perl=SCLEX_PERL SCE_PL_\nval SCE_PL_DEFAULT=0\nval SCE_PL_ERROR=1\nval SCE_PL_COMMENTLINE=2\nval SCE_PL_POD=3\nval SCE_PL_NUMBER=4\nval SCE_PL_WORD=5\nval SCE_PL_STRING=6\nval SCE_PL_CHARACTER=7\nval SCE_PL_PUNCTUATION=8\nval SCE_PL_PREPROCESSOR=9\nval SCE_PL_OPERATOR=10\nval SCE_PL_IDENTIFIER=11\nval SCE_PL_SCALAR=12\nval SCE_PL_ARRAY=13\nval SCE_PL_HASH=14\nval SCE_PL_SYMBOLTABLE=15\nval SCE_PL_VARIABLE_INDEXER=16\nval SCE_PL_REGEX=17\nval SCE_PL_REGSUBST=18\nval SCE_PL_LONGQUOTE=19\nval SCE_PL_BACKTICKS=20\nval SCE_PL_DATASECTION=21\nval SCE_PL_HERE_DELIM=22\nval SCE_PL_HERE_Q=23\nval SCE_PL_HERE_QQ=24\nval SCE_PL_HERE_QX=25\nval SCE_PL_STRING_Q=26\nval SCE_PL_STRING_QQ=27\nval SCE_PL_STRING_QX=28\nval SCE_PL_STRING_QR=29\nval SCE_PL_STRING_QW=30\nval SCE_PL_POD_VERB=31\nval SCE_PL_SUB_PROTOTYPE=40\nval SCE_PL_FORMAT_IDENT=41\nval SCE_PL_FORMAT=42\nval SCE_PL_STRING_VAR=43\nval SCE_PL_XLAT=44\nval SCE_PL_REGEX_VAR=54\nval SCE_PL_REGSUBST_VAR=55\nval SCE_PL_BACKTICKS_VAR=57\nval SCE_PL_HERE_QQ_VAR=61\nval SCE_PL_HERE_QX_VAR=62\nval SCE_PL_STRING_QQ_VAR=64\nval SCE_PL_STRING_QX_VAR=65\nval SCE_PL_STRING_QR_VAR=66\n# Lexical states for SCLEX_RUBY\nlex Ruby=SCLEX_RUBY SCE_RB_\nval SCE_RB_DEFAULT=0\nval SCE_RB_ERROR=1\nval SCE_RB_COMMENTLINE=2\nval SCE_RB_POD=3\nval SCE_RB_NUMBER=4\nval SCE_RB_WORD=5\nval SCE_RB_STRING=6\nval SCE_RB_CHARACTER=7\nval SCE_RB_CLASSNAME=8\nval SCE_RB_DEFNAME=9\nval SCE_RB_OPERATOR=10\nval SCE_RB_IDENTIFIER=11\nval SCE_RB_REGEX=12\nval SCE_RB_GLOBAL=13\nval SCE_RB_SYMBOL=14\nval SCE_RB_MODULE_NAME=15\nval SCE_RB_INSTANCE_VAR=16\nval SCE_RB_CLASS_VAR=17\nval SCE_RB_BACKTICKS=18\nval SCE_RB_DATASECTION=19\nval SCE_RB_HERE_DELIM=20\nval SCE_RB_HERE_Q=21\nval SCE_RB_HERE_QQ=22\nval SCE_RB_HERE_QX=23\nval SCE_RB_STRING_Q=24\nval SCE_RB_STRING_QQ=25\nval SCE_RB_STRING_QX=26\nval SCE_RB_STRING_QR=27\nval SCE_RB_STRING_QW=28\nval SCE_RB_WORD_DEMOTED=29\nval SCE_RB_STDIN=30\nval SCE_RB_STDOUT=31\nval SCE_RB_STDERR=40\nval SCE_RB_UPPER_BOUND=41\n# Lexical states for SCLEX_VB, SCLEX_VBSCRIPT, SCLEX_POWERBASIC, SCLEX_BLITZBASIC, SCLEX_PUREBASIC, SCLEX_FREEBASIC\nlex VB=SCLEX_VB SCE_B_\nlex VBScript=SCLEX_VBSCRIPT SCE_B_\nlex PowerBasic=SCLEX_POWERBASIC SCE_B_\nlex BlitzBasic=SCLEX_BLITZBASIC SCE_B_\nlex PureBasic=SCLEX_PUREBASIC SCE_B_\nlex FreeBasic=SCLEX_FREEBASIC SCE_B_\nval SCE_B_DEFAULT=0\nval SCE_B_COMMENT=1\nval SCE_B_NUMBER=2\nval SCE_B_KEYWORD=3\nval SCE_B_STRING=4\nval SCE_B_PREPROCESSOR=5\nval SCE_B_OPERATOR=6\nval SCE_B_IDENTIFIER=7\nval SCE_B_DATE=8\nval SCE_B_STRINGEOL=9\nval SCE_B_KEYWORD2=10\nval SCE_B_KEYWORD3=11\nval SCE_B_KEYWORD4=12\nval SCE_B_CONSTANT=13\nval SCE_B_ASM=14\nval SCE_B_LABEL=15\nval SCE_B_ERROR=16\nval SCE_B_HEXNUMBER=17\nval SCE_B_BINNUMBER=18\nval SCE_B_COMMENTBLOCK=19\nval SCE_B_DOCLINE=20\nval SCE_B_DOCBLOCK=21\nval SCE_B_DOCKEYWORD=22\n# Lexical states for SCLEX_PROPERTIES\nlex Properties=SCLEX_PROPERTIES SCE_PROPS_\nval SCE_PROPS_DEFAULT=0\nval SCE_PROPS_COMMENT=1\nval SCE_PROPS_SECTION=2\nval SCE_PROPS_ASSIGNMENT=3\nval SCE_PROPS_DEFVAL=4\nval SCE_PROPS_KEY=5\n# Lexical states for SCLEX_LATEX\nlex LaTeX=SCLEX_LATEX SCE_L_\nval SCE_L_DEFAULT=0\nval SCE_L_COMMAND=1\nval SCE_L_TAG=2\nval SCE_L_MATH=3\nval SCE_L_COMMENT=4\nval SCE_L_TAG2=5\nval SCE_L_MATH2=6\nval SCE_L_COMMENT2=7\nval SCE_L_VERBATIM=8\nval SCE_L_SHORTCMD=9\nval SCE_L_SPECIAL=10\nval SCE_L_CMDOPT=11\nval SCE_L_ERROR=12\n# Lexical states for SCLEX_LUA\nlex Lua=SCLEX_LUA SCE_LUA_\nval SCE_LUA_DEFAULT=0\nval SCE_LUA_COMMENT=1\nval SCE_LUA_COMMENTLINE=2\nval SCE_LUA_COMMENTDOC=3\nval SCE_LUA_NUMBER=4\nval SCE_LUA_WORD=5\nval SCE_LUA_STRING=6\nval SCE_LUA_CHARACTER=7\nval SCE_LUA_LITERALSTRING=8\nval SCE_LUA_PREPROCESSOR=9\nval SCE_LUA_OPERATOR=10\nval SCE_LUA_IDENTIFIER=11\nval SCE_LUA_STRINGEOL=12\nval SCE_LUA_WORD2=13\nval SCE_LUA_WORD3=14\nval SCE_LUA_WORD4=15\nval SCE_LUA_WORD5=16\nval SCE_LUA_WORD6=17\nval SCE_LUA_WORD7=18\nval SCE_LUA_WORD8=19\nval SCE_LUA_LABEL=20\n# Lexical states for SCLEX_ERRORLIST\nlex ErrorList=SCLEX_ERRORLIST SCE_ERR_\nval SCE_ERR_DEFAULT=0\nval SCE_ERR_PYTHON=1\nval SCE_ERR_GCC=2\nval SCE_ERR_MS=3\nval SCE_ERR_CMD=4\nval SCE_ERR_BORLAND=5\nval SCE_ERR_PERL=6\nval SCE_ERR_NET=7\nval SCE_ERR_LUA=8\nval SCE_ERR_CTAG=9\nval SCE_ERR_DIFF_CHANGED=10\nval SCE_ERR_DIFF_ADDITION=11\nval SCE_ERR_DIFF_DELETION=12\nval SCE_ERR_DIFF_MESSAGE=13\nval SCE_ERR_PHP=14\nval SCE_ERR_ELF=15\nval SCE_ERR_IFC=16\nval SCE_ERR_IFORT=17\nval SCE_ERR_ABSF=18\nval SCE_ERR_TIDY=19\nval SCE_ERR_JAVA_STACK=20\nval SCE_ERR_VALUE=21\nval SCE_ERR_GCC_INCLUDED_FROM=22\nval SCE_ERR_ESCSEQ=23\nval SCE_ERR_ESCSEQ_UNKNOWN=24\nval SCE_ERR_ES_BLACK=40\nval SCE_ERR_ES_RED=41\nval SCE_ERR_ES_GREEN=42\nval SCE_ERR_ES_BROWN=43\nval SCE_ERR_ES_BLUE=44\nval SCE_ERR_ES_MAGENTA=45\nval SCE_ERR_ES_CYAN=46\nval SCE_ERR_ES_GRAY=47\nval SCE_ERR_ES_DARK_GRAY=48\nval SCE_ERR_ES_BRIGHT_RED=49\nval SCE_ERR_ES_BRIGHT_GREEN=50\nval SCE_ERR_ES_YELLOW=51\nval SCE_ERR_ES_BRIGHT_BLUE=52\nval SCE_ERR_ES_BRIGHT_MAGENTA=53\nval SCE_ERR_ES_BRIGHT_CYAN=54\nval SCE_ERR_ES_WHITE=55\n# Lexical states for SCLEX_BATCH\nlex Batch=SCLEX_BATCH SCE_BAT_\nval SCE_BAT_DEFAULT=0\nval SCE_BAT_COMMENT=1\nval SCE_BAT_WORD=2\nval SCE_BAT_LABEL=3\nval SCE_BAT_HIDE=4\nval SCE_BAT_COMMAND=5\nval SCE_BAT_IDENTIFIER=6\nval SCE_BAT_OPERATOR=7\n# Lexical states for SCLEX_TCMD\nlex TCMD=SCLEX_TCMD SCE_TCMD_\nval SCE_TCMD_DEFAULT=0\nval SCE_TCMD_COMMENT=1\nval SCE_TCMD_WORD=2\nval SCE_TCMD_LABEL=3\nval SCE_TCMD_HIDE=4\nval SCE_TCMD_COMMAND=5\nval SCE_TCMD_IDENTIFIER=6\nval SCE_TCMD_OPERATOR=7\nval SCE_TCMD_ENVIRONMENT=8\nval SCE_TCMD_EXPANSION=9\nval SCE_TCMD_CLABEL=10\n# Lexical states for SCLEX_MAKEFILE\nlex MakeFile=SCLEX_MAKEFILE SCE_MAKE_\nval SCE_MAKE_DEFAULT=0\nval SCE_MAKE_COMMENT=1\nval SCE_MAKE_PREPROCESSOR=2\nval SCE_MAKE_IDENTIFIER=3\nval SCE_MAKE_OPERATOR=4\nval SCE_MAKE_TARGET=5\nval SCE_MAKE_IDEOL=9\n# Lexical states for SCLEX_DIFF\nlex Diff=SCLEX_DIFF SCE_DIFF_\nval SCE_DIFF_DEFAULT=0\nval SCE_DIFF_COMMENT=1\nval SCE_DIFF_COMMAND=2\nval SCE_DIFF_HEADER=3\nval SCE_DIFF_POSITION=4\nval SCE_DIFF_DELETED=5\nval SCE_DIFF_ADDED=6\nval SCE_DIFF_CHANGED=7\n# Lexical states for SCLEX_CONF (Apache Configuration Files Lexer)\nlex Conf=SCLEX_CONF SCE_CONF_\nval SCE_CONF_DEFAULT=0\nval SCE_CONF_COMMENT=1\nval SCE_CONF_NUMBER=2\nval SCE_CONF_IDENTIFIER=3\nval SCE_CONF_EXTENSION=4\nval SCE_CONF_PARAMETER=5\nval SCE_CONF_STRING=6\nval SCE_CONF_OPERATOR=7\nval SCE_CONF_IP=8\nval SCE_CONF_DIRECTIVE=9\n# Lexical states for SCLEX_AVE, Avenue\nlex Avenue=SCLEX_AVE SCE_AVE_\nval SCE_AVE_DEFAULT=0\nval SCE_AVE_COMMENT=1\nval SCE_AVE_NUMBER=2\nval SCE_AVE_WORD=3\nval SCE_AVE_STRING=6\nval SCE_AVE_ENUM=7\nval SCE_AVE_STRINGEOL=8\nval SCE_AVE_IDENTIFIER=9\nval SCE_AVE_OPERATOR=10\nval SCE_AVE_WORD1=11\nval SCE_AVE_WORD2=12\nval SCE_AVE_WORD3=13\nval SCE_AVE_WORD4=14\nval SCE_AVE_WORD5=15\nval SCE_AVE_WORD6=16\n# Lexical states for SCLEX_ADA\nlex Ada=SCLEX_ADA SCE_ADA_\nval SCE_ADA_DEFAULT=0\nval SCE_ADA_WORD=1\nval SCE_ADA_IDENTIFIER=2\nval SCE_ADA_NUMBER=3\nval SCE_ADA_DELIMITER=4\nval SCE_ADA_CHARACTER=5\nval SCE_ADA_CHARACTEREOL=6\nval SCE_ADA_STRING=7\nval SCE_ADA_STRINGEOL=8\nval SCE_ADA_LABEL=9\nval SCE_ADA_COMMENTLINE=10\nval SCE_ADA_ILLEGAL=11\n# Lexical states for SCLEX_BAAN\nlex Baan=SCLEX_BAAN SCE_BAAN_\nval SCE_BAAN_DEFAULT=0\nval SCE_BAAN_COMMENT=1\nval SCE_BAAN_COMMENTDOC=2\nval SCE_BAAN_NUMBER=3\nval SCE_BAAN_WORD=4\nval SCE_BAAN_STRING=5\nval SCE_BAAN_PREPROCESSOR=6\nval SCE_BAAN_OPERATOR=7\nval SCE_BAAN_IDENTIFIER=8\nval SCE_BAAN_STRINGEOL=9\nval SCE_BAAN_WORD2=10\nval SCE_BAAN_WORD3=11\nval SCE_BAAN_WORD4=12\nval SCE_BAAN_WORD5=13\nval SCE_BAAN_WORD6=14\nval SCE_BAAN_WORD7=15\nval SCE_BAAN_WORD8=16\nval SCE_BAAN_WORD9=17\nval SCE_BAAN_TABLEDEF=18\nval SCE_BAAN_TABLESQL=19\nval SCE_BAAN_FUNCTION=20\nval SCE_BAAN_DOMDEF=21\nval SCE_BAAN_FUNCDEF=22\nval SCE_BAAN_OBJECTDEF=23\nval SCE_BAAN_DEFINEDEF=24\n# Lexical states for SCLEX_LISP\nlex Lisp=SCLEX_LISP SCE_LISP_\nval SCE_LISP_DEFAULT=0\nval SCE_LISP_COMMENT=1\nval SCE_LISP_NUMBER=2\nval SCE_LISP_KEYWORD=3\nval SCE_LISP_KEYWORD_KW=4\nval SCE_LISP_SYMBOL=5\nval SCE_LISP_STRING=6\nval SCE_LISP_STRINGEOL=8\nval SCE_LISP_IDENTIFIER=9\nval SCE_LISP_OPERATOR=10\nval SCE_LISP_SPECIAL=11\nval SCE_LISP_MULTI_COMMENT=12\n# Lexical states for SCLEX_EIFFEL and SCLEX_EIFFELKW\nlex Eiffel=SCLEX_EIFFEL SCE_EIFFEL_\nlex EiffelKW=SCLEX_EIFFELKW SCE_EIFFEL_\nval SCE_EIFFEL_DEFAULT=0\nval SCE_EIFFEL_COMMENTLINE=1\nval SCE_EIFFEL_NUMBER=2\nval SCE_EIFFEL_WORD=3\nval SCE_EIFFEL_STRING=4\nval SCE_EIFFEL_CHARACTER=5\nval SCE_EIFFEL_OPERATOR=6\nval SCE_EIFFEL_IDENTIFIER=7\nval SCE_EIFFEL_STRINGEOL=8\n# Lexical states for SCLEX_NNCRONTAB (nnCron crontab Lexer)\nlex NNCronTab=SCLEX_NNCRONTAB SCE_NNCRONTAB_\nval SCE_NNCRONTAB_DEFAULT=0\nval SCE_NNCRONTAB_COMMENT=1\nval SCE_NNCRONTAB_TASK=2\nval SCE_NNCRONTAB_SECTION=3\nval SCE_NNCRONTAB_KEYWORD=4\nval SCE_NNCRONTAB_MODIFIER=5\nval SCE_NNCRONTAB_ASTERISK=6\nval SCE_NNCRONTAB_NUMBER=7\nval SCE_NNCRONTAB_STRING=8\nval SCE_NNCRONTAB_ENVIRONMENT=9\nval SCE_NNCRONTAB_IDENTIFIER=10\n# Lexical states for SCLEX_FORTH (Forth Lexer)\nlex Forth=SCLEX_FORTH SCE_FORTH_\nval SCE_FORTH_DEFAULT=0\nval SCE_FORTH_COMMENT=1\nval SCE_FORTH_COMMENT_ML=2\nval SCE_FORTH_IDENTIFIER=3\nval SCE_FORTH_CONTROL=4\nval SCE_FORTH_KEYWORD=5\nval SCE_FORTH_DEFWORD=6\nval SCE_FORTH_PREWORD1=7\nval SCE_FORTH_PREWORD2=8\nval SCE_FORTH_NUMBER=9\nval SCE_FORTH_STRING=10\nval SCE_FORTH_LOCALE=11\n# Lexical states for SCLEX_MATLAB\nlex MatLab=SCLEX_MATLAB SCE_MATLAB_\nval SCE_MATLAB_DEFAULT=0\nval SCE_MATLAB_COMMENT=1\nval SCE_MATLAB_COMMAND=2\nval SCE_MATLAB_NUMBER=3\nval SCE_MATLAB_KEYWORD=4\n# single quoted string\nval SCE_MATLAB_STRING=5\nval SCE_MATLAB_OPERATOR=6\nval SCE_MATLAB_IDENTIFIER=7\nval SCE_MATLAB_DOUBLEQUOTESTRING=8\n# Lexical states for SCLEX_SCRIPTOL\nlex Sol=SCLEX_SCRIPTOL SCE_SCRIPTOL_\nval SCE_SCRIPTOL_DEFAULT=0\nval SCE_SCRIPTOL_WHITE=1\nval SCE_SCRIPTOL_COMMENTLINE=2\nval SCE_SCRIPTOL_PERSISTENT=3\nval SCE_SCRIPTOL_CSTYLE=4\nval SCE_SCRIPTOL_COMMENTBLOCK=5\nval SCE_SCRIPTOL_NUMBER=6\nval SCE_SCRIPTOL_STRING=7\nval SCE_SCRIPTOL_CHARACTER=8\nval SCE_SCRIPTOL_STRINGEOL=9\nval SCE_SCRIPTOL_KEYWORD=10\nval SCE_SCRIPTOL_OPERATOR=11\nval SCE_SCRIPTOL_IDENTIFIER=12\nval SCE_SCRIPTOL_TRIPLE=13\nval SCE_SCRIPTOL_CLASSNAME=14\nval SCE_SCRIPTOL_PREPROCESSOR=15\n# Lexical states for SCLEX_ASM, SCLEX_AS\nlex Asm=SCLEX_ASM SCE_ASM_\nlex As=SCLEX_AS SCE_ASM_\nval SCE_ASM_DEFAULT=0\nval SCE_ASM_COMMENT=1\nval SCE_ASM_NUMBER=2\nval SCE_ASM_STRING=3\nval SCE_ASM_OPERATOR=4\nval SCE_ASM_IDENTIFIER=5\nval SCE_ASM_CPUINSTRUCTION=6\nval SCE_ASM_MATHINSTRUCTION=7\nval SCE_ASM_REGISTER=8\nval SCE_ASM_DIRECTIVE=9\nval SCE_ASM_DIRECTIVEOPERAND=10\nval SCE_ASM_COMMENTBLOCK=11\nval SCE_ASM_CHARACTER=12\nval SCE_ASM_STRINGEOL=13\nval SCE_ASM_EXTINSTRUCTION=14\nval SCE_ASM_COMMENTDIRECTIVE=15\n# Lexical states for SCLEX_FORTRAN\nlex Fortran=SCLEX_FORTRAN SCE_F_\nlex F77=SCLEX_F77 SCE_F_\nval SCE_F_DEFAULT=0\nval SCE_F_COMMENT=1\nval SCE_F_NUMBER=2\nval SCE_F_STRING1=3\nval SCE_F_STRING2=4\nval SCE_F_STRINGEOL=5\nval SCE_F_OPERATOR=6\nval SCE_F_IDENTIFIER=7\nval SCE_F_WORD=8\nval SCE_F_WORD2=9\nval SCE_F_WORD3=10\nval SCE_F_PREPROCESSOR=11\nval SCE_F_OPERATOR2=12\nval SCE_F_LABEL=13\nval SCE_F_CONTINUATION=14\n# Lexical states for SCLEX_CSS\nlex CSS=SCLEX_CSS SCE_CSS_\nval SCE_CSS_DEFAULT=0\nval SCE_CSS_TAG=1\nval SCE_CSS_CLASS=2\nval SCE_CSS_PSEUDOCLASS=3\nval SCE_CSS_UNKNOWN_PSEUDOCLASS=4\nval SCE_CSS_OPERATOR=5\nval SCE_CSS_IDENTIFIER=6\nval SCE_CSS_UNKNOWN_IDENTIFIER=7\nval SCE_CSS_VALUE=8\nval SCE_CSS_COMMENT=9\nval SCE_CSS_ID=10\nval SCE_CSS_IMPORTANT=11\nval SCE_CSS_DIRECTIVE=12\nval SCE_CSS_DOUBLESTRING=13\nval SCE_CSS_SINGLESTRING=14\nval SCE_CSS_IDENTIFIER2=15\nval SCE_CSS_ATTRIBUTE=16\nval SCE_CSS_IDENTIFIER3=17\nval SCE_CSS_PSEUDOELEMENT=18\nval SCE_CSS_EXTENDED_IDENTIFIER=19\nval SCE_CSS_EXTENDED_PSEUDOCLASS=20\nval SCE_CSS_EXTENDED_PSEUDOELEMENT=21\nval SCE_CSS_MEDIA=22\nval SCE_CSS_VARIABLE=23\n# Lexical states for SCLEX_POV\nlex POV=SCLEX_POV SCE_POV_\nval SCE_POV_DEFAULT=0\nval SCE_POV_COMMENT=1\nval SCE_POV_COMMENTLINE=2\nval SCE_POV_NUMBER=3\nval SCE_POV_OPERATOR=4\nval SCE_POV_IDENTIFIER=5\nval SCE_POV_STRING=6\nval SCE_POV_STRINGEOL=7\nval SCE_POV_DIRECTIVE=8\nval SCE_POV_BADDIRECTIVE=9\nval SCE_POV_WORD2=10\nval SCE_POV_WORD3=11\nval SCE_POV_WORD4=12\nval SCE_POV_WORD5=13\nval SCE_POV_WORD6=14\nval SCE_POV_WORD7=15\nval SCE_POV_WORD8=16\n# Lexical states for SCLEX_LOUT\nlex LOUT=SCLEX_LOUT SCE_LOUT_\nval SCE_LOUT_DEFAULT=0\nval SCE_LOUT_COMMENT=1\nval SCE_LOUT_NUMBER=2\nval SCE_LOUT_WORD=3\nval SCE_LOUT_WORD2=4\nval SCE_LOUT_WORD3=5\nval SCE_LOUT_WORD4=6\nval SCE_LOUT_STRING=7\nval SCE_LOUT_OPERATOR=8\nval SCE_LOUT_IDENTIFIER=9\nval SCE_LOUT_STRINGEOL=10\n# Lexical states for SCLEX_ESCRIPT\nlex ESCRIPT=SCLEX_ESCRIPT SCE_ESCRIPT_\nval SCE_ESCRIPT_DEFAULT=0\nval SCE_ESCRIPT_COMMENT=1\nval SCE_ESCRIPT_COMMENTLINE=2\nval SCE_ESCRIPT_COMMENTDOC=3\nval SCE_ESCRIPT_NUMBER=4\nval SCE_ESCRIPT_WORD=5\nval SCE_ESCRIPT_STRING=6\nval SCE_ESCRIPT_OPERATOR=7\nval SCE_ESCRIPT_IDENTIFIER=8\nval SCE_ESCRIPT_BRACE=9\nval SCE_ESCRIPT_WORD2=10\nval SCE_ESCRIPT_WORD3=11\n# Lexical states for SCLEX_PS\nlex PS=SCLEX_PS SCE_PS_\nval SCE_PS_DEFAULT=0\nval SCE_PS_COMMENT=1\nval SCE_PS_DSC_COMMENT=2\nval SCE_PS_DSC_VALUE=3\nval SCE_PS_NUMBER=4\nval SCE_PS_NAME=5\nval SCE_PS_KEYWORD=6\nval SCE_PS_LITERAL=7\nval SCE_PS_IMMEVAL=8\nval SCE_PS_PAREN_ARRAY=9\nval SCE_PS_PAREN_DICT=10\nval SCE_PS_PAREN_PROC=11\nval SCE_PS_TEXT=12\nval SCE_PS_HEXSTRING=13\nval SCE_PS_BASE85STRING=14\nval SCE_PS_BADSTRINGCHAR=15\n# Lexical states for SCLEX_NSIS\nlex NSIS=SCLEX_NSIS SCE_NSIS_\nval SCE_NSIS_DEFAULT=0\nval SCE_NSIS_COMMENT=1\nval SCE_NSIS_STRINGDQ=2\nval SCE_NSIS_STRINGLQ=3\nval SCE_NSIS_STRINGRQ=4\nval SCE_NSIS_FUNCTION=5\nval SCE_NSIS_VARIABLE=6\nval SCE_NSIS_LABEL=7\nval SCE_NSIS_USERDEFINED=8\nval SCE_NSIS_SECTIONDEF=9\nval SCE_NSIS_SUBSECTIONDEF=10\nval SCE_NSIS_IFDEFINEDEF=11\nval SCE_NSIS_MACRODEF=12\nval SCE_NSIS_STRINGVAR=13\nval SCE_NSIS_NUMBER=14\nval SCE_NSIS_SECTIONGROUP=15\nval SCE_NSIS_PAGEEX=16\nval SCE_NSIS_FUNCTIONDEF=17\nval SCE_NSIS_COMMENTBOX=18\n# Lexical states for SCLEX_MMIXAL\nlex MMIXAL=SCLEX_MMIXAL SCE_MMIXAL_\nval SCE_MMIXAL_LEADWS=0\nval SCE_MMIXAL_COMMENT=1\nval SCE_MMIXAL_LABEL=2\nval SCE_MMIXAL_OPCODE=3\nval SCE_MMIXAL_OPCODE_PRE=4\nval SCE_MMIXAL_OPCODE_VALID=5\nval SCE_MMIXAL_OPCODE_UNKNOWN=6\nval SCE_MMIXAL_OPCODE_POST=7\nval SCE_MMIXAL_OPERANDS=8\nval SCE_MMIXAL_NUMBER=9\nval SCE_MMIXAL_REF=10\nval SCE_MMIXAL_CHAR=11\nval SCE_MMIXAL_STRING=12\nval SCE_MMIXAL_REGISTER=13\nval SCE_MMIXAL_HEX=14\nval SCE_MMIXAL_OPERATOR=15\nval SCE_MMIXAL_SYMBOL=16\nval SCE_MMIXAL_INCLUDE=17\n# Lexical states for SCLEX_CLW\nlex Clarion=SCLEX_CLW SCE_CLW_\nval SCE_CLW_DEFAULT=0\nval SCE_CLW_LABEL=1\nval SCE_CLW_COMMENT=2\nval SCE_CLW_STRING=3\nval SCE_CLW_USER_IDENTIFIER=4\nval SCE_CLW_INTEGER_CONSTANT=5\nval SCE_CLW_REAL_CONSTANT=6\nval SCE_CLW_PICTURE_STRING=7\nval SCE_CLW_KEYWORD=8\nval SCE_CLW_COMPILER_DIRECTIVE=9\nval SCE_CLW_RUNTIME_EXPRESSIONS=10\nval SCE_CLW_BUILTIN_PROCEDURES_FUNCTION=11\nval SCE_CLW_STRUCTURE_DATA_TYPE=12\nval SCE_CLW_ATTRIBUTE=13\nval SCE_CLW_STANDARD_EQUATE=14\nval SCE_CLW_ERROR=15\nval SCE_CLW_DEPRECATED=16\n# Lexical states for SCLEX_LOT\nlex LOT=SCLEX_LOT SCE_LOT_\nval SCE_LOT_DEFAULT=0\nval SCE_LOT_HEADER=1\nval SCE_LOT_BREAK=2\nval SCE_LOT_SET=3\nval SCE_LOT_PASS=4\nval SCE_LOT_FAIL=5\nval SCE_LOT_ABORT=6\n# Lexical states for SCLEX_YAML\nlex YAML=SCLEX_YAML SCE_YAML_\nval SCE_YAML_DEFAULT=0\nval SCE_YAML_COMMENT=1\nval SCE_YAML_IDENTIFIER=2\nval SCE_YAML_KEYWORD=3\nval SCE_YAML_NUMBER=4\nval SCE_YAML_REFERENCE=5\nval SCE_YAML_DOCUMENT=6\nval SCE_YAML_TEXT=7\nval SCE_YAML_ERROR=8\nval SCE_YAML_OPERATOR=9\n# Lexical states for SCLEX_TEX\nlex TeX=SCLEX_TEX SCE_TEX_\nval SCE_TEX_DEFAULT=0\nval SCE_TEX_SPECIAL=1\nval SCE_TEX_GROUP=2\nval SCE_TEX_SYMBOL=3\nval SCE_TEX_COMMAND=4\nval SCE_TEX_TEXT=5\nlex Metapost=SCLEX_METAPOST SCE_METAPOST_\nval SCE_METAPOST_DEFAULT=0\nval SCE_METAPOST_SPECIAL=1\nval SCE_METAPOST_GROUP=2\nval SCE_METAPOST_SYMBOL=3\nval SCE_METAPOST_COMMAND=4\nval SCE_METAPOST_TEXT=5\nval SCE_METAPOST_EXTRA=6\n# Lexical states for SCLEX_ERLANG\nlex Erlang=SCLEX_ERLANG SCE_ERLANG_\nval SCE_ERLANG_DEFAULT=0\nval SCE_ERLANG_COMMENT=1\nval SCE_ERLANG_VARIABLE=2\nval SCE_ERLANG_NUMBER=3\nval SCE_ERLANG_KEYWORD=4\nval SCE_ERLANG_STRING=5\nval SCE_ERLANG_OPERATOR=6\nval SCE_ERLANG_ATOM=7\nval SCE_ERLANG_FUNCTION_NAME=8\nval SCE_ERLANG_CHARACTER=9\nval SCE_ERLANG_MACRO=10\nval SCE_ERLANG_RECORD=11\nval SCE_ERLANG_PREPROC=12\nval SCE_ERLANG_NODE_NAME=13\nval SCE_ERLANG_COMMENT_FUNCTION=14\nval SCE_ERLANG_COMMENT_MODULE=15\nval SCE_ERLANG_COMMENT_DOC=16\nval SCE_ERLANG_COMMENT_DOC_MACRO=17\nval SCE_ERLANG_ATOM_QUOTED=18\nval SCE_ERLANG_MACRO_QUOTED=19\nval SCE_ERLANG_RECORD_QUOTED=20\nval SCE_ERLANG_NODE_NAME_QUOTED=21\nval SCE_ERLANG_BIFS=22\nval SCE_ERLANG_MODULES=23\nval SCE_ERLANG_MODULES_ATT=24\nval SCE_ERLANG_UNKNOWN=31\n# Lexical states for SCLEX_OCTAVE are identical to MatLab\nlex Octave=SCLEX_OCTAVE SCE_MATLAB_\n# Lexical states for SCLEX_MSSQL\nlex MSSQL=SCLEX_MSSQL SCE_MSSQL_\nval SCE_MSSQL_DEFAULT=0\nval SCE_MSSQL_COMMENT=1\nval SCE_MSSQL_LINE_COMMENT=2\nval SCE_MSSQL_NUMBER=3\nval SCE_MSSQL_STRING=4\nval SCE_MSSQL_OPERATOR=5\nval SCE_MSSQL_IDENTIFIER=6\nval SCE_MSSQL_VARIABLE=7\nval SCE_MSSQL_COLUMN_NAME=8\nval SCE_MSSQL_STATEMENT=9\nval SCE_MSSQL_DATATYPE=10\nval SCE_MSSQL_SYSTABLE=11\nval SCE_MSSQL_GLOBAL_VARIABLE=12\nval SCE_MSSQL_FUNCTION=13\nval SCE_MSSQL_STORED_PROCEDURE=14\nval SCE_MSSQL_DEFAULT_PREF_DATATYPE=15\nval SCE_MSSQL_COLUMN_NAME_2=16\n# Lexical states for SCLEX_VERILOG\nlex Verilog=SCLEX_VERILOG SCE_V_\nval SCE_V_DEFAULT=0\nval SCE_V_COMMENT=1\nval SCE_V_COMMENTLINE=2\nval SCE_V_COMMENTLINEBANG=3\nval SCE_V_NUMBER=4\nval SCE_V_WORD=5\nval SCE_V_STRING=6\nval SCE_V_WORD2=7\nval SCE_V_WORD3=8\nval SCE_V_PREPROCESSOR=9\nval SCE_V_OPERATOR=10\nval SCE_V_IDENTIFIER=11\nval SCE_V_STRINGEOL=12\nval SCE_V_USER=19\nval SCE_V_COMMENT_WORD=20\nval SCE_V_INPUT=21\nval SCE_V_OUTPUT=22\nval SCE_V_INOUT=23\nval SCE_V_PORT_CONNECT=24\n# Lexical states for SCLEX_KIX\nlex Kix=SCLEX_KIX SCE_KIX_\nval SCE_KIX_DEFAULT=0\nval SCE_KIX_COMMENT=1\nval SCE_KIX_STRING1=2\nval SCE_KIX_STRING2=3\nval SCE_KIX_NUMBER=4\nval SCE_KIX_VAR=5\nval SCE_KIX_MACRO=6\nval SCE_KIX_KEYWORD=7\nval SCE_KIX_FUNCTIONS=8\nval SCE_KIX_OPERATOR=9\nval SCE_KIX_COMMENTSTREAM=10\nval SCE_KIX_IDENTIFIER=31\n# Lexical states for SCLEX_GUI4CLI\nlex Gui4Cli=SCLEX_GUI4CLI SCE_GC_\nval SCE_GC_DEFAULT=0\nval SCE_GC_COMMENTLINE=1\nval SCE_GC_COMMENTBLOCK=2\nval SCE_GC_GLOBAL=3\nval SCE_GC_EVENT=4\nval SCE_GC_ATTRIBUTE=5\nval SCE_GC_CONTROL=6\nval SCE_GC_COMMAND=7\nval SCE_GC_STRING=8\nval SCE_GC_OPERATOR=9\n# Lexical states for SCLEX_SPECMAN\nlex Specman=SCLEX_SPECMAN SCE_SN_\nval SCE_SN_DEFAULT=0\nval SCE_SN_CODE=1\nval SCE_SN_COMMENTLINE=2\nval SCE_SN_COMMENTLINEBANG=3\nval SCE_SN_NUMBER=4\nval SCE_SN_WORD=5\nval SCE_SN_STRING=6\nval SCE_SN_WORD2=7\nval SCE_SN_WORD3=8\nval SCE_SN_PREPROCESSOR=9\nval SCE_SN_OPERATOR=10\nval SCE_SN_IDENTIFIER=11\nval SCE_SN_STRINGEOL=12\nval SCE_SN_REGEXTAG=13\nval SCE_SN_SIGNAL=14\nval SCE_SN_USER=19\n# Lexical states for SCLEX_AU3\nlex Au3=SCLEX_AU3 SCE_AU3_\nval SCE_AU3_DEFAULT=0\nval SCE_AU3_COMMENT=1\nval SCE_AU3_COMMENTBLOCK=2\nval SCE_AU3_NUMBER=3\nval SCE_AU3_FUNCTION=4\nval SCE_AU3_KEYWORD=5\nval SCE_AU3_MACRO=6\nval SCE_AU3_STRING=7\nval SCE_AU3_OPERATOR=8\nval SCE_AU3_VARIABLE=9\nval SCE_AU3_SENT=10\nval SCE_AU3_PREPROCESSOR=11\nval SCE_AU3_SPECIAL=12\nval SCE_AU3_EXPAND=13\nval SCE_AU3_COMOBJ=14\nval SCE_AU3_UDF=15\n# Lexical states for SCLEX_APDL\nlex APDL=SCLEX_APDL SCE_APDL_\nval SCE_APDL_DEFAULT=0\nval SCE_APDL_COMMENT=1\nval SCE_APDL_COMMENTBLOCK=2\nval SCE_APDL_NUMBER=3\nval SCE_APDL_STRING=4\nval SCE_APDL_OPERATOR=5\nval SCE_APDL_WORD=6\nval SCE_APDL_PROCESSOR=7\nval SCE_APDL_COMMAND=8\nval SCE_APDL_SLASHCOMMAND=9\nval SCE_APDL_STARCOMMAND=10\nval SCE_APDL_ARGUMENT=11\nval SCE_APDL_FUNCTION=12\n# Lexical states for SCLEX_BASH\nlex Bash=SCLEX_BASH SCE_SH_\nval SCE_SH_DEFAULT=0\nval SCE_SH_ERROR=1\nval SCE_SH_COMMENTLINE=2\nval SCE_SH_NUMBER=3\nval SCE_SH_WORD=4\nval SCE_SH_STRING=5\nval SCE_SH_CHARACTER=6\nval SCE_SH_OPERATOR=7\nval SCE_SH_IDENTIFIER=8\nval SCE_SH_SCALAR=9\nval SCE_SH_PARAM=10\nval SCE_SH_BACKTICKS=11\nval SCE_SH_HERE_DELIM=12\nval SCE_SH_HERE_Q=13\n# Lexical states for SCLEX_ASN1\nlex Asn1=SCLEX_ASN1 SCE_ASN1_\nval SCE_ASN1_DEFAULT=0\nval SCE_ASN1_COMMENT=1\nval SCE_ASN1_IDENTIFIER=2\nval SCE_ASN1_STRING=3\nval SCE_ASN1_OID=4\nval SCE_ASN1_SCALAR=5\nval SCE_ASN1_KEYWORD=6\nval SCE_ASN1_ATTRIBUTE=7\nval SCE_ASN1_DESCRIPTOR=8\nval SCE_ASN1_TYPE=9\nval SCE_ASN1_OPERATOR=10\n# Lexical states for SCLEX_VHDL\nlex VHDL=SCLEX_VHDL SCE_VHDL_\nval SCE_VHDL_DEFAULT=0\nval SCE_VHDL_COMMENT=1\nval SCE_VHDL_COMMENTLINEBANG=2\nval SCE_VHDL_NUMBER=3\nval SCE_VHDL_STRING=4\nval SCE_VHDL_OPERATOR=5\nval SCE_VHDL_IDENTIFIER=6\nval SCE_VHDL_STRINGEOL=7\nval SCE_VHDL_KEYWORD=8\nval SCE_VHDL_STDOPERATOR=9\nval SCE_VHDL_ATTRIBUTE=10\nval SCE_VHDL_STDFUNCTION=11\nval SCE_VHDL_STDPACKAGE=12\nval SCE_VHDL_STDTYPE=13\nval SCE_VHDL_USERWORD=14\nval SCE_VHDL_BLOCK_COMMENT=15\n# Lexical states for SCLEX_CAML\nlex Caml=SCLEX_CAML SCE_CAML_\nval SCE_CAML_DEFAULT=0\nval SCE_CAML_IDENTIFIER=1\nval SCE_CAML_TAGNAME=2\nval SCE_CAML_KEYWORD=3\nval SCE_CAML_KEYWORD2=4\nval SCE_CAML_KEYWORD3=5\nval SCE_CAML_LINENUM=6\nval SCE_CAML_OPERATOR=7\nval SCE_CAML_NUMBER=8\nval SCE_CAML_CHAR=9\nval SCE_CAML_WHITE=10\nval SCE_CAML_STRING=11\nval SCE_CAML_COMMENT=12\nval SCE_CAML_COMMENT1=13\nval SCE_CAML_COMMENT2=14\nval SCE_CAML_COMMENT3=15\n# Lexical states for SCLEX_HASKELL\nlex Haskell=SCLEX_HASKELL SCE_HA_\nval SCE_HA_DEFAULT=0\nval SCE_HA_IDENTIFIER=1\nval SCE_HA_KEYWORD=2\nval SCE_HA_NUMBER=3\nval SCE_HA_STRING=4\nval SCE_HA_CHARACTER=5\nval SCE_HA_CLASS=6\nval SCE_HA_MODULE=7\nval SCE_HA_CAPITAL=8\nval SCE_HA_DATA=9\nval SCE_HA_IMPORT=10\nval SCE_HA_OPERATOR=11\nval SCE_HA_INSTANCE=12\nval SCE_HA_COMMENTLINE=13\nval SCE_HA_COMMENTBLOCK=14\nval SCE_HA_COMMENTBLOCK2=15\nval SCE_HA_COMMENTBLOCK3=16\nval SCE_HA_PRAGMA=17\nval SCE_HA_PREPROCESSOR=18\nval SCE_HA_STRINGEOL=19\nval SCE_HA_RESERVED_OPERATOR=20\nval SCE_HA_LITERATE_COMMENT=21\nval SCE_HA_LITERATE_CODEDELIM=22\n# Lexical states of SCLEX_TADS3\nlex TADS3=SCLEX_TADS3 SCE_T3_\nval SCE_T3_DEFAULT=0\nval SCE_T3_X_DEFAULT=1\nval SCE_T3_PREPROCESSOR=2\nval SCE_T3_BLOCK_COMMENT=3\nval SCE_T3_LINE_COMMENT=4\nval SCE_T3_OPERATOR=5\nval SCE_T3_KEYWORD=6\nval SCE_T3_NUMBER=7\nval SCE_T3_IDENTIFIER=8\nval SCE_T3_S_STRING=9\nval SCE_T3_D_STRING=10\nval SCE_T3_X_STRING=11\nval SCE_T3_LIB_DIRECTIVE=12\nval SCE_T3_MSG_PARAM=13\nval SCE_T3_HTML_TAG=14\nval SCE_T3_HTML_DEFAULT=15\nval SCE_T3_HTML_STRING=16\nval SCE_T3_USER1=17\nval SCE_T3_USER2=18\nval SCE_T3_USER3=19\nval SCE_T3_BRACE=20\n# Lexical states for SCLEX_REBOL\nlex Rebol=SCLEX_REBOL SCE_REBOL_\nval SCE_REBOL_DEFAULT=0\nval SCE_REBOL_COMMENTLINE=1\nval SCE_REBOL_COMMENTBLOCK=2\nval SCE_REBOL_PREFACE=3\nval SCE_REBOL_OPERATOR=4\nval SCE_REBOL_CHARACTER=5\nval SCE_REBOL_QUOTEDSTRING=6\nval SCE_REBOL_BRACEDSTRING=7\nval SCE_REBOL_NUMBER=8\nval SCE_REBOL_PAIR=9\nval SCE_REBOL_TUPLE=10\nval SCE_REBOL_BINARY=11\nval SCE_REBOL_MONEY=12\nval SCE_REBOL_ISSUE=13\nval SCE_REBOL_TAG=14\nval SCE_REBOL_FILE=15\nval SCE_REBOL_EMAIL=16\nval SCE_REBOL_URL=17\nval SCE_REBOL_DATE=18\nval SCE_REBOL_TIME=19\nval SCE_REBOL_IDENTIFIER=20\nval SCE_REBOL_WORD=21\nval SCE_REBOL_WORD2=22\nval SCE_REBOL_WORD3=23\nval SCE_REBOL_WORD4=24\nval SCE_REBOL_WORD5=25\nval SCE_REBOL_WORD6=26\nval SCE_REBOL_WORD7=27\nval SCE_REBOL_WORD8=28\n# Lexical states for SCLEX_SQL\nlex SQL=SCLEX_SQL SCE_SQL_\nval SCE_SQL_DEFAULT=0\nval SCE_SQL_COMMENT=1\nval SCE_SQL_COMMENTLINE=2\nval SCE_SQL_COMMENTDOC=3\nval SCE_SQL_NUMBER=4\nval SCE_SQL_WORD=5\nval SCE_SQL_STRING=6\nval SCE_SQL_CHARACTER=7\nval SCE_SQL_SQLPLUS=8\nval SCE_SQL_SQLPLUS_PROMPT=9\nval SCE_SQL_OPERATOR=10\nval SCE_SQL_IDENTIFIER=11\nval SCE_SQL_SQLPLUS_COMMENT=13\nval SCE_SQL_COMMENTLINEDOC=15\nval SCE_SQL_WORD2=16\nval SCE_SQL_COMMENTDOCKEYWORD=17\nval SCE_SQL_COMMENTDOCKEYWORDERROR=18\nval SCE_SQL_USER1=19\nval SCE_SQL_USER2=20\nval SCE_SQL_USER3=21\nval SCE_SQL_USER4=22\nval SCE_SQL_QUOTEDIDENTIFIER=23\nval SCE_SQL_QOPERATOR=24\n# Lexical states for SCLEX_SMALLTALK\nlex Smalltalk=SCLEX_SMALLTALK SCE_ST_\nval SCE_ST_DEFAULT=0\nval SCE_ST_STRING=1\nval SCE_ST_NUMBER=2\nval SCE_ST_COMMENT=3\nval SCE_ST_SYMBOL=4\nval SCE_ST_BINARY=5\nval SCE_ST_BOOL=6\nval SCE_ST_SELF=7\nval SCE_ST_SUPER=8\nval SCE_ST_NIL=9\nval SCE_ST_GLOBAL=10\nval SCE_ST_RETURN=11\nval SCE_ST_SPECIAL=12\nval SCE_ST_KWSEND=13\nval SCE_ST_ASSIGN=14\nval SCE_ST_CHARACTER=15\nval SCE_ST_SPEC_SEL=16\n# Lexical states for SCLEX_FLAGSHIP (clipper)\nlex FlagShip=SCLEX_FLAGSHIP SCE_FS_\nval SCE_FS_DEFAULT=0\nval SCE_FS_COMMENT=1\nval SCE_FS_COMMENTLINE=2\nval SCE_FS_COMMENTDOC=3\nval SCE_FS_COMMENTLINEDOC=4\nval SCE_FS_COMMENTDOCKEYWORD=5\nval SCE_FS_COMMENTDOCKEYWORDERROR=6\nval SCE_FS_KEYWORD=7\nval SCE_FS_KEYWORD2=8\nval SCE_FS_KEYWORD3=9\nval SCE_FS_KEYWORD4=10\nval SCE_FS_NUMBER=11\nval SCE_FS_STRING=12\nval SCE_FS_PREPROCESSOR=13\nval SCE_FS_OPERATOR=14\nval SCE_FS_IDENTIFIER=15\nval SCE_FS_DATE=16\nval SCE_FS_STRINGEOL=17\nval SCE_FS_CONSTANT=18\nval SCE_FS_WORDOPERATOR=19\nval SCE_FS_DISABLEDCODE=20\nval SCE_FS_DEFAULT_C=21\nval SCE_FS_COMMENTDOC_C=22\nval SCE_FS_COMMENTLINEDOC_C=23\nval SCE_FS_KEYWORD_C=24\nval SCE_FS_KEYWORD2_C=25\nval SCE_FS_NUMBER_C=26\nval SCE_FS_STRING_C=27\nval SCE_FS_PREPROCESSOR_C=28\nval SCE_FS_OPERATOR_C=29\nval SCE_FS_IDENTIFIER_C=30\nval SCE_FS_STRINGEOL_C=31\n# Lexical states for SCLEX_CSOUND\nlex Csound=SCLEX_CSOUND SCE_CSOUND_\nval SCE_CSOUND_DEFAULT=0\nval SCE_CSOUND_COMMENT=1\nval SCE_CSOUND_NUMBER=2\nval SCE_CSOUND_OPERATOR=3\nval SCE_CSOUND_INSTR=4\nval SCE_CSOUND_IDENTIFIER=5\nval SCE_CSOUND_OPCODE=6\nval SCE_CSOUND_HEADERSTMT=7\nval SCE_CSOUND_USERKEYWORD=8\nval SCE_CSOUND_COMMENTBLOCK=9\nval SCE_CSOUND_PARAM=10\nval SCE_CSOUND_ARATE_VAR=11\nval SCE_CSOUND_KRATE_VAR=12\nval SCE_CSOUND_IRATE_VAR=13\nval SCE_CSOUND_GLOBAL_VAR=14\nval SCE_CSOUND_STRINGEOL=15\n# Lexical states for SCLEX_INNOSETUP\nlex Inno=SCLEX_INNOSETUP SCE_INNO_\nval SCE_INNO_DEFAULT=0\nval SCE_INNO_COMMENT=1\nval SCE_INNO_KEYWORD=2\nval SCE_INNO_PARAMETER=3\nval SCE_INNO_SECTION=4\nval SCE_INNO_PREPROC=5\nval SCE_INNO_INLINE_EXPANSION=6\nval SCE_INNO_COMMENT_PASCAL=7\nval SCE_INNO_KEYWORD_PASCAL=8\nval SCE_INNO_KEYWORD_USER=9\nval SCE_INNO_STRING_DOUBLE=10\nval SCE_INNO_STRING_SINGLE=11\nval SCE_INNO_IDENTIFIER=12\n# Lexical states for SCLEX_OPAL\nlex Opal=SCLEX_OPAL SCE_OPAL_\nval SCE_OPAL_SPACE=0\nval SCE_OPAL_COMMENT_BLOCK=1\nval SCE_OPAL_COMMENT_LINE=2\nval SCE_OPAL_INTEGER=3\nval SCE_OPAL_KEYWORD=4\nval SCE_OPAL_SORT=5\nval SCE_OPAL_STRING=6\nval SCE_OPAL_PAR=7\nval SCE_OPAL_BOOL_CONST=8\nval SCE_OPAL_DEFAULT=32\n# Lexical states for SCLEX_SPICE\nlex Spice=SCLEX_SPICE SCE_SPICE_\nval SCE_SPICE_DEFAULT=0\nval SCE_SPICE_IDENTIFIER=1\nval SCE_SPICE_KEYWORD=2\nval SCE_SPICE_KEYWORD2=3\nval SCE_SPICE_KEYWORD3=4\nval SCE_SPICE_NUMBER=5\nval SCE_SPICE_DELIMITER=6\nval SCE_SPICE_VALUE=7\nval SCE_SPICE_COMMENTLINE=8\n# Lexical states for SCLEX_CMAKE\nlex CMAKE=SCLEX_CMAKE SCE_CMAKE_\nval SCE_CMAKE_DEFAULT=0\nval SCE_CMAKE_COMMENT=1\nval SCE_CMAKE_STRINGDQ=2\nval SCE_CMAKE_STRINGLQ=3\nval SCE_CMAKE_STRINGRQ=4\nval SCE_CMAKE_COMMANDS=5\nval SCE_CMAKE_PARAMETERS=6\nval SCE_CMAKE_VARIABLE=7\nval SCE_CMAKE_USERDEFINED=8\nval SCE_CMAKE_WHILEDEF=9\nval SCE_CMAKE_FOREACHDEF=10\nval SCE_CMAKE_IFDEFINEDEF=11\nval SCE_CMAKE_MACRODEF=12\nval SCE_CMAKE_STRINGVAR=13\nval SCE_CMAKE_NUMBER=14\n# Lexical states for SCLEX_GAP\nlex Gap=SCLEX_GAP SCE_GAP_\nval SCE_GAP_DEFAULT=0\nval SCE_GAP_IDENTIFIER=1\nval SCE_GAP_KEYWORD=2\nval SCE_GAP_KEYWORD2=3\nval SCE_GAP_KEYWORD3=4\nval SCE_GAP_KEYWORD4=5\nval SCE_GAP_STRING=6\nval SCE_GAP_CHAR=7\nval SCE_GAP_OPERATOR=8\nval SCE_GAP_COMMENT=9\nval SCE_GAP_NUMBER=10\nval SCE_GAP_STRINGEOL=11\n# Lexical state for SCLEX_PLM\nlex PLM=SCLEX_PLM SCE_PLM_\nval SCE_PLM_DEFAULT=0\nval SCE_PLM_COMMENT=1\nval SCE_PLM_STRING=2\nval SCE_PLM_NUMBER=3\nval SCE_PLM_IDENTIFIER=4\nval SCE_PLM_OPERATOR=5\nval SCE_PLM_CONTROL=6\nval SCE_PLM_KEYWORD=7\n# Lexical state for SCLEX_PROGRESS\nlex Progress=SCLEX_PROGRESS SCE_ABL_\nval SCE_ABL_DEFAULT=0\nval SCE_ABL_NUMBER=1\nval SCE_ABL_WORD=2\nval SCE_ABL_STRING=3\nval SCE_ABL_CHARACTER=4\nval SCE_ABL_PREPROCESSOR=5\nval SCE_ABL_OPERATOR=6\nval SCE_ABL_IDENTIFIER=7\nval SCE_ABL_BLOCK=8\nval SCE_ABL_END=9\nval SCE_ABL_COMMENT=10\nval SCE_ABL_TASKMARKER=11\nval SCE_ABL_LINECOMMENT=12\n# Lexical states for SCLEX_ABAQUS\nlex ABAQUS=SCLEX_ABAQUS SCE_ABAQUS_\nval SCE_ABAQUS_DEFAULT=0\nval SCE_ABAQUS_COMMENT=1\nval SCE_ABAQUS_COMMENTBLOCK=2\nval SCE_ABAQUS_NUMBER=3\nval SCE_ABAQUS_STRING=4\nval SCE_ABAQUS_OPERATOR=5\nval SCE_ABAQUS_WORD=6\nval SCE_ABAQUS_PROCESSOR=7\nval SCE_ABAQUS_COMMAND=8\nval SCE_ABAQUS_SLASHCOMMAND=9\nval SCE_ABAQUS_STARCOMMAND=10\nval SCE_ABAQUS_ARGUMENT=11\nval SCE_ABAQUS_FUNCTION=12\n# Lexical states for SCLEX_ASYMPTOTE\nlex Asymptote=SCLEX_ASYMPTOTE SCE_ASY_\nval SCE_ASY_DEFAULT=0\nval SCE_ASY_COMMENT=1\nval SCE_ASY_COMMENTLINE=2\nval SCE_ASY_NUMBER=3\nval SCE_ASY_WORD=4\nval SCE_ASY_STRING=5\nval SCE_ASY_CHARACTER=6\nval SCE_ASY_OPERATOR=7\nval SCE_ASY_IDENTIFIER=8\nval SCE_ASY_STRINGEOL=9\nval SCE_ASY_COMMENTLINEDOC=10\nval SCE_ASY_WORD2=11\n# Lexical states for SCLEX_R\nlex R=SCLEX_R SCE_R_\nval SCE_R_DEFAULT=0\nval SCE_R_COMMENT=1\nval SCE_R_KWORD=2\nval SCE_R_BASEKWORD=3\nval SCE_R_OTHERKWORD=4\nval SCE_R_NUMBER=5\nval SCE_R_STRING=6\nval SCE_R_STRING2=7\nval SCE_R_OPERATOR=8\nval SCE_R_IDENTIFIER=9\nval SCE_R_INFIX=10\nval SCE_R_INFIXEOL=11\n# Lexical state for SCLEX_MAGIK\nlex MagikSF=SCLEX_MAGIK SCE_MAGIK_\nval SCE_MAGIK_DEFAULT=0\nval SCE_MAGIK_COMMENT=1\nval SCE_MAGIK_HYPER_COMMENT=16\nval SCE_MAGIK_STRING=2\nval SCE_MAGIK_CHARACTER=3\nval SCE_MAGIK_NUMBER=4\nval SCE_MAGIK_IDENTIFIER=5\nval SCE_MAGIK_OPERATOR=6\nval SCE_MAGIK_FLOW=7\nval SCE_MAGIK_CONTAINER=8\nval SCE_MAGIK_BRACKET_BLOCK=9\nval SCE_MAGIK_BRACE_BLOCK=10\nval SCE_MAGIK_SQBRACKET_BLOCK=11\nval SCE_MAGIK_UNKNOWN_KEYWORD=12\nval SCE_MAGIK_KEYWORD=13\nval SCE_MAGIK_PRAGMA=14\nval SCE_MAGIK_SYMBOL=15\n# Lexical state for SCLEX_POWERSHELL\nlex PowerShell=SCLEX_POWERSHELL SCE_POWERSHELL_\nval SCE_POWERSHELL_DEFAULT=0\nval SCE_POWERSHELL_COMMENT=1\nval SCE_POWERSHELL_STRING=2\nval SCE_POWERSHELL_CHARACTER=3\nval SCE_POWERSHELL_NUMBER=4\nval SCE_POWERSHELL_VARIABLE=5\nval SCE_POWERSHELL_OPERATOR=6\nval SCE_POWERSHELL_IDENTIFIER=7\nval SCE_POWERSHELL_KEYWORD=8\nval SCE_POWERSHELL_CMDLET=9\nval SCE_POWERSHELL_ALIAS=10\nval SCE_POWERSHELL_FUNCTION=11\nval SCE_POWERSHELL_USER1=12\nval SCE_POWERSHELL_COMMENTSTREAM=13\nval SCE_POWERSHELL_HERE_STRING=14\nval SCE_POWERSHELL_HERE_CHARACTER=15\nval SCE_POWERSHELL_COMMENTDOCKEYWORD=16\n# Lexical state for SCLEX_MYSQL\nlex MySQL=SCLEX_MYSQL SCE_MYSQL_\nval SCE_MYSQL_DEFAULT=0\nval SCE_MYSQL_COMMENT=1\nval SCE_MYSQL_COMMENTLINE=2\nval SCE_MYSQL_VARIABLE=3\nval SCE_MYSQL_SYSTEMVARIABLE=4\nval SCE_MYSQL_KNOWNSYSTEMVARIABLE=5\nval SCE_MYSQL_NUMBER=6\nval SCE_MYSQL_MAJORKEYWORD=7\nval SCE_MYSQL_KEYWORD=8\nval SCE_MYSQL_DATABASEOBJECT=9\nval SCE_MYSQL_PROCEDUREKEYWORD=10\nval SCE_MYSQL_STRING=11\nval SCE_MYSQL_SQSTRING=12\nval SCE_MYSQL_DQSTRING=13\nval SCE_MYSQL_OPERATOR=14\nval SCE_MYSQL_FUNCTION=15\nval SCE_MYSQL_IDENTIFIER=16\nval SCE_MYSQL_QUOTEDIDENTIFIER=17\nval SCE_MYSQL_USER1=18\nval SCE_MYSQL_USER2=19\nval SCE_MYSQL_USER3=20\nval SCE_MYSQL_HIDDENCOMMAND=21\nval SCE_MYSQL_PLACEHOLDER=22\n# Lexical state for SCLEX_PO\nlex Po=SCLEX_PO SCE_PO_\nval SCE_PO_DEFAULT=0\nval SCE_PO_COMMENT=1\nval SCE_PO_MSGID=2\nval SCE_PO_MSGID_TEXT=3\nval SCE_PO_MSGSTR=4\nval SCE_PO_MSGSTR_TEXT=5\nval SCE_PO_MSGCTXT=6\nval SCE_PO_MSGCTXT_TEXT=7\nval SCE_PO_FUZZY=8\nval SCE_PO_PROGRAMMER_COMMENT=9\nval SCE_PO_REFERENCE=10\nval SCE_PO_FLAGS=11\nval SCE_PO_MSGID_TEXT_EOL=12\nval SCE_PO_MSGSTR_TEXT_EOL=13\nval SCE_PO_MSGCTXT_TEXT_EOL=14\nval SCE_PO_ERROR=15\n# Lexical states for SCLEX_PASCAL\nlex Pascal=SCLEX_PASCAL SCE_PAS_\nval SCE_PAS_DEFAULT=0\nval SCE_PAS_IDENTIFIER=1\nval SCE_PAS_COMMENT=2\nval SCE_PAS_COMMENT2=3\nval SCE_PAS_COMMENTLINE=4\nval SCE_PAS_PREPROCESSOR=5\nval SCE_PAS_PREPROCESSOR2=6\nval SCE_PAS_NUMBER=7\nval SCE_PAS_HEXNUMBER=8\nval SCE_PAS_WORD=9\nval SCE_PAS_STRING=10\nval SCE_PAS_STRINGEOL=11\nval SCE_PAS_CHARACTER=12\nval SCE_PAS_OPERATOR=13\nval SCE_PAS_ASM=14\n# Lexical state for SCLEX_SORCUS\nlex SORCUS=SCLEX_SORCUS SCE_SORCUS_\nval SCE_SORCUS_DEFAULT=0\nval SCE_SORCUS_COMMAND=1\nval SCE_SORCUS_PARAMETER=2\nval SCE_SORCUS_COMMENTLINE=3\nval SCE_SORCUS_STRING=4\nval SCE_SORCUS_STRINGEOL=5\nval SCE_SORCUS_IDENTIFIER=6\nval SCE_SORCUS_OPERATOR=7\nval SCE_SORCUS_NUMBER=8\nval SCE_SORCUS_CONSTANT=9\n# Lexical state for SCLEX_POWERPRO\nlex PowerPro=SCLEX_POWERPRO SCE_POWERPRO_\nval SCE_POWERPRO_DEFAULT=0\nval SCE_POWERPRO_COMMENTBLOCK=1\nval SCE_POWERPRO_COMMENTLINE=2\nval SCE_POWERPRO_NUMBER=3\nval SCE_POWERPRO_WORD=4\nval SCE_POWERPRO_WORD2=5\nval SCE_POWERPRO_WORD3=6\nval SCE_POWERPRO_WORD4=7\nval SCE_POWERPRO_DOUBLEQUOTEDSTRING=8\nval SCE_POWERPRO_SINGLEQUOTEDSTRING=9\nval SCE_POWERPRO_LINECONTINUE=10\nval SCE_POWERPRO_OPERATOR=11\nval SCE_POWERPRO_IDENTIFIER=12\nval SCE_POWERPRO_STRINGEOL=13\nval SCE_POWERPRO_VERBATIM=14\nval SCE_POWERPRO_ALTQUOTE=15\nval SCE_POWERPRO_FUNCTION=16\n# Lexical states for SCLEX_SML\nlex SML=SCLEX_SML SCE_SML_\nval SCE_SML_DEFAULT=0\nval SCE_SML_IDENTIFIER=1\nval SCE_SML_TAGNAME=2\nval SCE_SML_KEYWORD=3\nval SCE_SML_KEYWORD2=4\nval SCE_SML_KEYWORD3=5\nval SCE_SML_LINENUM=6\nval SCE_SML_OPERATOR=7\nval SCE_SML_NUMBER=8\nval SCE_SML_CHAR=9\nval SCE_SML_STRING=11\nval SCE_SML_COMMENT=12\nval SCE_SML_COMMENT1=13\nval SCE_SML_COMMENT2=14\nval SCE_SML_COMMENT3=15\n# Lexical state for SCLEX_MARKDOWN\nlex Markdown=SCLEX_MARKDOWN SCE_MARKDOWN_\nval SCE_MARKDOWN_DEFAULT=0\nval SCE_MARKDOWN_LINE_BEGIN=1\nval SCE_MARKDOWN_STRONG1=2\nval SCE_MARKDOWN_STRONG2=3\nval SCE_MARKDOWN_EM1=4\nval SCE_MARKDOWN_EM2=5\nval SCE_MARKDOWN_HEADER1=6\nval SCE_MARKDOWN_HEADER2=7\nval SCE_MARKDOWN_HEADER3=8\nval SCE_MARKDOWN_HEADER4=9\nval SCE_MARKDOWN_HEADER5=10\nval SCE_MARKDOWN_HEADER6=11\nval SCE_MARKDOWN_PRECHAR=12\nval SCE_MARKDOWN_ULIST_ITEM=13\nval SCE_MARKDOWN_OLIST_ITEM=14\nval SCE_MARKDOWN_BLOCKQUOTE=15\nval SCE_MARKDOWN_STRIKEOUT=16\nval SCE_MARKDOWN_HRULE=17\nval SCE_MARKDOWN_LINK=18\nval SCE_MARKDOWN_CODE=19\nval SCE_MARKDOWN_CODE2=20\nval SCE_MARKDOWN_CODEBK=21\n# Lexical state for SCLEX_TXT2TAGS\nlex Txt2tags=SCLEX_TXT2TAGS SCE_TXT2TAGS_\nval SCE_TXT2TAGS_DEFAULT=0\nval SCE_TXT2TAGS_LINE_BEGIN=1\nval SCE_TXT2TAGS_STRONG1=2\nval SCE_TXT2TAGS_STRONG2=3\nval SCE_TXT2TAGS_EM1=4\nval SCE_TXT2TAGS_EM2=5\nval SCE_TXT2TAGS_HEADER1=6\nval SCE_TXT2TAGS_HEADER2=7\nval SCE_TXT2TAGS_HEADER3=8\nval SCE_TXT2TAGS_HEADER4=9\nval SCE_TXT2TAGS_HEADER5=10\nval SCE_TXT2TAGS_HEADER6=11\nval SCE_TXT2TAGS_PRECHAR=12\nval SCE_TXT2TAGS_ULIST_ITEM=13\nval SCE_TXT2TAGS_OLIST_ITEM=14\nval SCE_TXT2TAGS_BLOCKQUOTE=15\nval SCE_TXT2TAGS_STRIKEOUT=16\nval SCE_TXT2TAGS_HRULE=17\nval SCE_TXT2TAGS_LINK=18\nval SCE_TXT2TAGS_CODE=19\nval SCE_TXT2TAGS_CODE2=20\nval SCE_TXT2TAGS_CODEBK=21\nval SCE_TXT2TAGS_COMMENT=22\nval SCE_TXT2TAGS_OPTION=23\nval SCE_TXT2TAGS_PREPROC=24\nval SCE_TXT2TAGS_POSTPROC=25\n# Lexical states for SCLEX_A68K\nlex A68k=SCLEX_A68K SCE_A68K_\nval SCE_A68K_DEFAULT=0\nval SCE_A68K_COMMENT=1\nval SCE_A68K_NUMBER_DEC=2\nval SCE_A68K_NUMBER_BIN=3\nval SCE_A68K_NUMBER_HEX=4\nval SCE_A68K_STRING1=5\nval SCE_A68K_OPERATOR=6\nval SCE_A68K_CPUINSTRUCTION=7\nval SCE_A68K_EXTINSTRUCTION=8\nval SCE_A68K_REGISTER=9\nval SCE_A68K_DIRECTIVE=10\nval SCE_A68K_MACRO_ARG=11\nval SCE_A68K_LABEL=12\nval SCE_A68K_STRING2=13\nval SCE_A68K_IDENTIFIER=14\nval SCE_A68K_MACRO_DECLARATION=15\nval SCE_A68K_COMMENT_WORD=16\nval SCE_A68K_COMMENT_SPECIAL=17\nval SCE_A68K_COMMENT_DOXYGEN=18\n# Lexical states for SCLEX_MODULA\nlex Modula=SCLEX_MODULA SCE_MODULA_\nval SCE_MODULA_DEFAULT=0\nval SCE_MODULA_COMMENT=1\nval SCE_MODULA_DOXYCOMM=2\nval SCE_MODULA_DOXYKEY=3\nval SCE_MODULA_KEYWORD=4\nval SCE_MODULA_RESERVED=5\nval SCE_MODULA_NUMBER=6\nval SCE_MODULA_BASENUM=7\nval SCE_MODULA_FLOAT=8\nval SCE_MODULA_STRING=9\nval SCE_MODULA_STRSPEC=10\nval SCE_MODULA_CHAR=11\nval SCE_MODULA_CHARSPEC=12\nval SCE_MODULA_PROC=13\nval SCE_MODULA_PRAGMA=14\nval SCE_MODULA_PRGKEY=15\nval SCE_MODULA_OPERATOR=16\nval SCE_MODULA_BADSTR=17\n# Lexical states for SCLEX_COFFEESCRIPT\nlex CoffeeScript=SCLEX_COFFEESCRIPT SCE_COFFEESCRIPT_\nval SCE_COFFEESCRIPT_DEFAULT=0\nval SCE_COFFEESCRIPT_COMMENT=1\nval SCE_COFFEESCRIPT_COMMENTLINE=2\nval SCE_COFFEESCRIPT_COMMENTDOC=3\nval SCE_COFFEESCRIPT_NUMBER=4\nval SCE_COFFEESCRIPT_WORD=5\nval SCE_COFFEESCRIPT_STRING=6\nval SCE_COFFEESCRIPT_CHARACTER=7\nval SCE_COFFEESCRIPT_UUID=8\nval SCE_COFFEESCRIPT_PREPROCESSOR=9\nval SCE_COFFEESCRIPT_OPERATOR=10\nval SCE_COFFEESCRIPT_IDENTIFIER=11\nval SCE_COFFEESCRIPT_STRINGEOL=12\nval SCE_COFFEESCRIPT_VERBATIM=13\nval SCE_COFFEESCRIPT_REGEX=14\nval SCE_COFFEESCRIPT_COMMENTLINEDOC=15\nval SCE_COFFEESCRIPT_WORD2=16\nval SCE_COFFEESCRIPT_COMMENTDOCKEYWORD=17\nval SCE_COFFEESCRIPT_COMMENTDOCKEYWORDERROR=18\nval SCE_COFFEESCRIPT_GLOBALCLASS=19\nval SCE_COFFEESCRIPT_STRINGRAW=20\nval SCE_COFFEESCRIPT_TRIPLEVERBATIM=21\nval SCE_COFFEESCRIPT_COMMENTBLOCK=22\nval SCE_COFFEESCRIPT_VERBOSE_REGEX=23\nval SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT=24\nval SCE_COFFEESCRIPT_INSTANCEPROPERTY=25\n# Lexical states for SCLEX_AVS\nlex AVS=SCLEX_AVS SCE_AVS_\nval SCE_AVS_DEFAULT=0\nval SCE_AVS_COMMENTBLOCK=1\nval SCE_AVS_COMMENTBLOCKN=2\nval SCE_AVS_COMMENTLINE=3\nval SCE_AVS_NUMBER=4\nval SCE_AVS_OPERATOR=5\nval SCE_AVS_IDENTIFIER=6\nval SCE_AVS_STRING=7\nval SCE_AVS_TRIPLESTRING=8\nval SCE_AVS_KEYWORD=9\nval SCE_AVS_FILTER=10\nval SCE_AVS_PLUGIN=11\nval SCE_AVS_FUNCTION=12\nval SCE_AVS_CLIPPROP=13\nval SCE_AVS_USERDFN=14\n# Lexical states for SCLEX_ECL\nlex ECL=SCLEX_ECL SCE_ECL_\nval SCE_ECL_DEFAULT=0\nval SCE_ECL_COMMENT=1\nval SCE_ECL_COMMENTLINE=2\nval SCE_ECL_NUMBER=3\nval SCE_ECL_STRING=4\nval SCE_ECL_WORD0=5\nval SCE_ECL_OPERATOR=6\nval SCE_ECL_CHARACTER=7\nval SCE_ECL_UUID=8\nval SCE_ECL_PREPROCESSOR=9\nval SCE_ECL_UNKNOWN=10\nval SCE_ECL_IDENTIFIER=11\nval SCE_ECL_STRINGEOL=12\nval SCE_ECL_VERBATIM=13\nval SCE_ECL_REGEX=14\nval SCE_ECL_COMMENTLINEDOC=15\nval SCE_ECL_WORD1=16\nval SCE_ECL_COMMENTDOCKEYWORD=17\nval SCE_ECL_COMMENTDOCKEYWORDERROR=18\nval SCE_ECL_WORD2=19\nval SCE_ECL_WORD3=20\nval SCE_ECL_WORD4=21\nval SCE_ECL_WORD5=22\nval SCE_ECL_COMMENTDOC=23\nval SCE_ECL_ADDED=24\nval SCE_ECL_DELETED=25\nval SCE_ECL_CHANGED=26\nval SCE_ECL_MOVED=27\n# Lexical states for SCLEX_OSCRIPT\nlex OScript=SCLEX_OSCRIPT SCE_OSCRIPT_\nval SCE_OSCRIPT_DEFAULT=0\nval SCE_OSCRIPT_LINE_COMMENT=1\nval SCE_OSCRIPT_BLOCK_COMMENT=2\nval SCE_OSCRIPT_DOC_COMMENT=3\nval SCE_OSCRIPT_PREPROCESSOR=4\nval SCE_OSCRIPT_NUMBER=5\nval SCE_OSCRIPT_SINGLEQUOTE_STRING=6\nval SCE_OSCRIPT_DOUBLEQUOTE_STRING=7\nval SCE_OSCRIPT_CONSTANT=8\nval SCE_OSCRIPT_IDENTIFIER=9\nval SCE_OSCRIPT_GLOBAL=10\nval SCE_OSCRIPT_KEYWORD=11\nval SCE_OSCRIPT_OPERATOR=12\nval SCE_OSCRIPT_LABEL=13\nval SCE_OSCRIPT_TYPE=14\nval SCE_OSCRIPT_FUNCTION=15\nval SCE_OSCRIPT_OBJECT=16\nval SCE_OSCRIPT_PROPERTY=17\nval SCE_OSCRIPT_METHOD=18\n# Lexical states for SCLEX_VISUALPROLOG\nlex VisualProlog=SCLEX_VISUALPROLOG SCE_VISUALPROLOG_\nval SCE_VISUALPROLOG_DEFAULT=0\nval SCE_VISUALPROLOG_KEY_MAJOR=1\nval SCE_VISUALPROLOG_KEY_MINOR=2\nval SCE_VISUALPROLOG_KEY_DIRECTIVE=3\nval SCE_VISUALPROLOG_COMMENT_BLOCK=4\nval SCE_VISUALPROLOG_COMMENT_LINE=5\nval SCE_VISUALPROLOG_COMMENT_KEY=6\nval SCE_VISUALPROLOG_COMMENT_KEY_ERROR=7\nval SCE_VISUALPROLOG_IDENTIFIER=8\nval SCE_VISUALPROLOG_VARIABLE=9\nval SCE_VISUALPROLOG_ANONYMOUS=10\nval SCE_VISUALPROLOG_NUMBER=11\nval SCE_VISUALPROLOG_OPERATOR=12\nval SCE_VISUALPROLOG_CHARACTER=13\nval SCE_VISUALPROLOG_CHARACTER_TOO_MANY=14\nval SCE_VISUALPROLOG_CHARACTER_ESCAPE_ERROR=15\nval SCE_VISUALPROLOG_STRING=16\nval SCE_VISUALPROLOG_STRING_ESCAPE=17\nval SCE_VISUALPROLOG_STRING_ESCAPE_ERROR=18\nval SCE_VISUALPROLOG_STRING_EOL_OPEN=19\nval SCE_VISUALPROLOG_STRING_VERBATIM=20\nval SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL=21\nval SCE_VISUALPROLOG_STRING_VERBATIM_EOL=22\n# Lexical states for SCLEX_STTXT\nlex StructuredText=SCLEX_STTXT SCE_STTXT_\nval SCE_STTXT_DEFAULT=0\nval SCE_STTXT_COMMENT=1\nval SCE_STTXT_COMMENTLINE=2\nval SCE_STTXT_KEYWORD=3\nval SCE_STTXT_TYPE=4\nval SCE_STTXT_FUNCTION=5\nval SCE_STTXT_FB=6\nval SCE_STTXT_NUMBER=7\nval SCE_STTXT_HEXNUMBER=8\nval SCE_STTXT_PRAGMA=9\nval SCE_STTXT_OPERATOR=10\nval SCE_STTXT_CHARACTER=11\nval SCE_STTXT_STRING1=12\nval SCE_STTXT_STRING2=13\nval SCE_STTXT_STRINGEOL=14\nval SCE_STTXT_IDENTIFIER=15\nval SCE_STTXT_DATETIME=16\nval SCE_STTXT_VARS=17\nval SCE_STTXT_PRAGMAS=18\n# Lexical states for SCLEX_KVIRC\nlex KVIrc=SCLEX_KVIRC SCE_KVIRC_\nval SCE_KVIRC_DEFAULT=0\nval SCE_KVIRC_COMMENT=1\nval SCE_KVIRC_COMMENTBLOCK=2\nval SCE_KVIRC_STRING=3\nval SCE_KVIRC_WORD=4\nval SCE_KVIRC_KEYWORD=5\nval SCE_KVIRC_FUNCTION_KEYWORD=6\nval SCE_KVIRC_FUNCTION=7\nval SCE_KVIRC_VARIABLE=8\nval SCE_KVIRC_NUMBER=9\nval SCE_KVIRC_OPERATOR=10\nval SCE_KVIRC_STRING_FUNCTION=11\nval SCE_KVIRC_STRING_VARIABLE=12\n# Lexical states for SCLEX_RUST\nlex Rust=SCLEX_RUST SCE_RUST_\nval SCE_RUST_DEFAULT=0\nval SCE_RUST_COMMENTBLOCK=1\nval SCE_RUST_COMMENTLINE=2\nval SCE_RUST_COMMENTBLOCKDOC=3\nval SCE_RUST_COMMENTLINEDOC=4\nval SCE_RUST_NUMBER=5\nval SCE_RUST_WORD=6\nval SCE_RUST_WORD2=7\nval SCE_RUST_WORD3=8\nval SCE_RUST_WORD4=9\nval SCE_RUST_WORD5=10\nval SCE_RUST_WORD6=11\nval SCE_RUST_WORD7=12\nval SCE_RUST_STRING=13\nval SCE_RUST_STRINGR=14\nval SCE_RUST_CHARACTER=15\nval SCE_RUST_OPERATOR=16\nval SCE_RUST_IDENTIFIER=17\nval SCE_RUST_LIFETIME=18\nval SCE_RUST_MACRO=19\nval SCE_RUST_LEXERROR=20\nval SCE_RUST_BYTESTRING=21\nval SCE_RUST_BYTESTRINGR=22\nval SCE_RUST_BYTECHARACTER=23\n# Lexical states for SCLEX_DMAP\nlex DMAP=SCLEX_DMAP SCE_DMAP_\nval SCE_DMAP_DEFAULT=0\nval SCE_DMAP_COMMENT=1\nval SCE_DMAP_NUMBER=2\nval SCE_DMAP_STRING1=3\nval SCE_DMAP_STRING2=4\nval SCE_DMAP_STRINGEOL=5\nval SCE_DMAP_OPERATOR=6\nval SCE_DMAP_IDENTIFIER=7\nval SCE_DMAP_WORD=8\nval SCE_DMAP_WORD2=9\nval SCE_DMAP_WORD3=10\n# Lexical states for SCLEX_DMIS\nlex DMIS=SCLEX_DMIS SCE_DMIS_\nval SCE_DMIS_DEFAULT=0\nval SCE_DMIS_COMMENT=1\nval SCE_DMIS_STRING=2\nval SCE_DMIS_NUMBER=3\nval SCE_DMIS_KEYWORD=4\nval SCE_DMIS_MAJORWORD=5\nval SCE_DMIS_MINORWORD=6\nval SCE_DMIS_UNSUPPORTED_MAJOR=7\nval SCE_DMIS_UNSUPPORTED_MINOR=8\nval SCE_DMIS_LABEL=9\n# Lexical states for SCLEX_REGISTRY\nlex REG=SCLEX_REGISTRY SCE_REG_\nval SCE_REG_DEFAULT=0\nval SCE_REG_COMMENT=1\nval SCE_REG_VALUENAME=2\nval SCE_REG_STRING=3\nval SCE_REG_HEXDIGIT=4\nval SCE_REG_VALUETYPE=5\nval SCE_REG_ADDEDKEY=6\nval SCE_REG_DELETEDKEY=7\nval SCE_REG_ESCAPED=8\nval SCE_REG_KEYPATH_GUID=9\nval SCE_REG_STRING_GUID=10\nval SCE_REG_PARAMETER=11\nval SCE_REG_OPERATOR=12\n# Lexical state for SCLEX_BIBTEX\nlex BibTeX=SCLEX_BIBTEX SCE_BIBTEX_\nval SCE_BIBTEX_DEFAULT=0\nval SCE_BIBTEX_ENTRY=1\nval SCE_BIBTEX_UNKNOWN_ENTRY=2\nval SCE_BIBTEX_KEY=3\nval SCE_BIBTEX_PARAMETER=4\nval SCE_BIBTEX_VALUE=5\nval SCE_BIBTEX_COMMENT=6\n# Lexical state for SCLEX_SREC\nlex Srec=SCLEX_SREC SCE_HEX_\nval SCE_HEX_DEFAULT=0\nval SCE_HEX_RECSTART=1\nval SCE_HEX_RECTYPE=2\nval SCE_HEX_RECTYPE_UNKNOWN=3\nval SCE_HEX_BYTECOUNT=4\nval SCE_HEX_BYTECOUNT_WRONG=5\nval SCE_HEX_NOADDRESS=6\nval SCE_HEX_DATAADDRESS=7\nval SCE_HEX_RECCOUNT=8\nval SCE_HEX_STARTADDRESS=9\nval SCE_HEX_ADDRESSFIELD_UNKNOWN=10\nval SCE_HEX_EXTENDEDADDRESS=11\nval SCE_HEX_DATA_ODD=12\nval SCE_HEX_DATA_EVEN=13\nval SCE_HEX_DATA_UNKNOWN=14\nval SCE_HEX_DATA_EMPTY=15\nval SCE_HEX_CHECKSUM=16\nval SCE_HEX_CHECKSUM_WRONG=17\nval SCE_HEX_GARBAGE=18\n# Lexical state for SCLEX_IHEX (shared with Srec)\nlex IHex=SCLEX_IHEX SCE_HEX_\n# Lexical state for SCLEX_TEHEX (shared with Srec)\nlex TEHex=SCLEX_TEHEX SCE_HEX_\n# Lexical states for SCLEX_JSON\nlex JSON=SCLEX_JSON SCE_JSON_\nval SCE_JSON_DEFAULT=0\nval SCE_JSON_NUMBER=1\nval SCE_JSON_STRING=2\nval SCE_JSON_STRINGEOL=3\nval SCE_JSON_PROPERTYNAME=4\nval SCE_JSON_ESCAPESEQUENCE=5\nval SCE_JSON_LINECOMMENT=6\nval SCE_JSON_BLOCKCOMMENT=7\nval SCE_JSON_OPERATOR=8\nval SCE_JSON_URI=9\nval SCE_JSON_COMPACTIRI=10\nval SCE_JSON_KEYWORD=11\nval SCE_JSON_LDKEYWORD=12\nval SCE_JSON_ERROR=13\nlex EDIFACT=SCLEX_EDIFACT SCE_EDI_\nval SCE_EDI_DEFAULT=0\nval SCE_EDI_SEGMENTSTART=1\nval SCE_EDI_SEGMENTEND=2\nval SCE_EDI_SEP_ELEMENT=3\nval SCE_EDI_SEP_COMPOSITE=4\nval SCE_EDI_SEP_RELEASE=5\nval SCE_EDI_UNA=6\nval SCE_EDI_UNH=7\nval SCE_EDI_BADSEGMENT=8\n\n# Events\n\nevt void StyleNeeded=2000(int position)\nevt void CharAdded=2001(int ch)\nevt void SavePointReached=2002(void)\nevt void SavePointLeft=2003(void)\nevt void ModifyAttemptRO=2004(void)\n# GTK+ Specific to work around focus and accelerator problems:\nevt void Key=2005(int ch, int modifiers)\nevt void DoubleClick=2006(int modifiers, int position, int line)\nevt void UpdateUI=2007(int updated)\nevt void Modified=2008(int position, int modificationType, string text, int length, int linesAdded, int line, int foldLevelNow, int foldLevelPrev, int token, int annotationLinesAdded)\nevt void MacroRecord=2009(int message, int wParam, int lParam)\nevt void MarginClick=2010(int modifiers, int position, int margin)\nevt void NeedShown=2011(int position, int length)\nevt void Painted=2013(void)\nevt void UserListSelection=2014(int listType, string text, int positionint, int ch, CompletionMethods listCompletionMethod)\nevt void URIDropped=2015(string text)\nevt void DwellStart=2016(int position, int x, int y)\nevt void DwellEnd=2017(int position, int x, int y)\nevt void Zoom=2018(void)\nevt void HotSpotClick=2019(int modifiers, int position)\nevt void HotSpotDoubleClick=2020(int modifiers, int position)\nevt void CallTipClick=2021(int position)\nevt void AutoCSelection=2022(string text, int position, int ch, CompletionMethods listCompletionMethod)\nevt void IndicatorClick=2023(int modifiers, int position)\nevt void IndicatorRelease=2024(int modifiers, int position)\nevt void AutoCCancelled=2025(void)\nevt void AutoCCharDeleted=2026(void)\nevt void HotSpotReleaseClick=2027(int modifiers, int position)\nevt void FocusIn=2028(void)\nevt void FocusOut=2029(void)\nevt void AutoCCompleted=2030(string text, int position, int ch, CompletionMethods listCompletionMethod)\nevt void MarginRightClick=2031(int modifiers, int position, int margin)\n\n# There are no provisional APIs currently, but some arguments to SCI_SETTECHNOLOGY are provisional.\n\ncat Provisional\n\ncat Deprecated\n\n# Deprecated in 3.5.5\n\n# Always interpret keyboard input as Unicode\nset void SetKeysUnicode=2521(bool keysUnicode,)\n\n# Are keys always interpreted as Unicode?\nget bool GetKeysUnicode=2522(,)\n"
  },
  {
    "path": "old/3rdpart/qscintilla/include/ScintillaWidget.h",
    "content": "/* Scintilla source code edit control */\n/* @file ScintillaWidget.h\n * Definition of Scintilla widget for GTK+.\n * Only needed by GTK+ code but is harmless on other platforms.\n * This comment is not a doc-comment as that causes warnings from g-ir-scanner.\n */\n/* Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n * The License.txt file describes the conditions under which this software may be distributed. */\n\n#ifndef SCINTILLAWIDGET_H\n#define SCINTILLAWIDGET_H\n\n#if defined(GTK)\n\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n\n#define SCINTILLA(obj)          G_TYPE_CHECK_INSTANCE_CAST (obj, scintilla_get_type (), ScintillaObject)\n#define SCINTILLA_CLASS(klass)  G_TYPE_CHECK_CLASS_CAST (klass, scintilla_get_type (), ScintillaClass)\n#define IS_SCINTILLA(obj)       G_TYPE_CHECK_INSTANCE_TYPE (obj, scintilla_get_type ())\n\n#define SCINTILLA_TYPE_OBJECT             (scintilla_object_get_type())\n#define SCINTILLA_OBJECT(obj)             (G_TYPE_CHECK_INSTANCE_CAST((obj), SCINTILLA_TYPE_OBJECT, ScintillaObject))\n#define SCINTILLA_IS_OBJECT(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SCINTILLA_TYPE_OBJECT))\n#define SCINTILLA_OBJECT_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST((klass), SCINTILLA_TYPE_OBJECT, ScintillaObjectClass))\n#define SCINTILLA_IS_OBJECT_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE((klass), SCINTILLA_TYPE_OBJECT))\n#define SCINTILLA_OBJECT_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS((obj), SCINTILLA_TYPE_OBJECT, ScintillaObjectClass))\n\ntypedef struct _ScintillaObject ScintillaObject;\ntypedef struct _ScintillaClass  ScintillaObjectClass;\n\nstruct _ScintillaObject {\n\tGtkContainer cont;\n\tvoid *pscin;\n};\n\nstruct _ScintillaClass {\n\tGtkContainerClass parent_class;\n\n\tvoid (* command) (ScintillaObject *sci, int cmd, GtkWidget *window);\n\tvoid (* notify) (ScintillaObject *sci, int id, SCNotification *scn);\n};\n\nGType\t\tscintilla_object_get_type\t\t(void);\nGtkWidget*\tscintilla_object_new\t\t\t(void);\ngintptr\t\tscintilla_object_send_message\t(ScintillaObject *sci, unsigned int iMessage, guintptr wParam, gintptr lParam);\n\n\nGType\t\tscnotification_get_type\t\t\t(void);\n#define SCINTILLA_TYPE_NOTIFICATION        (scnotification_get_type())\n\n#ifndef G_IR_SCANNING\n/* The legacy names confuse the g-ir-scanner program */\ntypedef struct _ScintillaClass  ScintillaClass;\n\nGType\t\tscintilla_get_type\t(void);\nGtkWidget*\tscintilla_new\t\t(void);\nvoid\t\tscintilla_set_id\t(ScintillaObject *sci, uptr_t id);\nsptr_t\t\tscintilla_send_message\t(ScintillaObject *sci,unsigned int iMessage, uptr_t wParam, sptr_t lParam);\nvoid\t\tscintilla_release_resources(void);\n#endif\n\n#define SCINTILLA_NOTIFY \"sci-notify\"\n\n#ifdef __cplusplus\n}\n#endif\n\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexA68k.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexA68k.cxx\n ** Lexer for Assembler, just for the MASM syntax\n ** Written by Martial Demolins AKA Folco\n **/\n// Copyright 2010 Martial Demolins <mdemolins(a)gmail.com>\n// The License.txt file describes the conditions under which this software\n// may be distributed.\n\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\n// Return values for GetOperatorType\n#define NO_OPERATOR     0\n#define OPERATOR_1CHAR  1\n#define OPERATOR_2CHAR  2\n\n\n/**\n *  IsIdentifierStart\n *\n *  Return true if the given char is a valid identifier first char\n */\n\nstatic inline bool IsIdentifierStart (const int ch)\n{\n    return (isalpha(ch) || (ch == '_') || (ch == '\\\\'));\n}\n\n\n/**\n *  IsIdentifierChar\n *\n *  Return true if the given char is a valid identifier char\n */\n\nstatic inline bool IsIdentifierChar (const int ch)\n{\n    return (isalnum(ch) || (ch == '_') || (ch == '@') || (ch == ':') || (ch == '.'));\n}\n\n\n/**\n *  GetOperatorType\n *\n *  Return:\n *  NO_OPERATOR     if char is not an operator\n *  OPERATOR_1CHAR  if the operator is one char long\n *  OPERATOR_2CHAR  if the operator is two chars long\n */\n\nstatic inline int GetOperatorType (const int ch1, const int ch2)\n{\n    int OpType = NO_OPERATOR;\n\n    if ((ch1 == '+') || (ch1 == '-') || (ch1 == '*') || (ch1 == '/') || (ch1 == '#') ||\n        (ch1 == '(') || (ch1 == ')') || (ch1 == '~') || (ch1 == '&') || (ch1 == '|') || (ch1 == ','))\n        OpType = OPERATOR_1CHAR;\n\n    else if ((ch1 == ch2) && (ch1 == '<' || ch1 == '>'))\n        OpType = OPERATOR_2CHAR;\n\n    return OpType;\n}\n\n\n/**\n *  IsBin\n *\n *  Return true if the given char is 0 or 1\n */\n\nstatic inline bool IsBin (const int ch)\n{\n    return (ch == '0') || (ch == '1');\n}\n\n\n/**\n *  IsDoxygenChar\n *\n *  Return true if the char may be part of a Doxygen keyword\n */\n\nstatic inline bool IsDoxygenChar (const int ch)\n{\n    return isalpha(ch) || (ch == '$') || (ch == '[') || (ch == ']') || (ch == '{') || (ch == '}');\n}\n\n\n/**\n *  ColouriseA68kDoc\n *\n *  Main function, which colourises a 68k source\n */\n\nstatic void ColouriseA68kDoc (Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler)\n{\n    // Used to buffer a string, to be able to compare it using built-in functions\n    char Buffer[100];\n\n\n    // Used to know the length of an operator\n    int OpType;\n\n\n    // Get references to keywords lists\n    WordList &cpuInstruction = *keywordlists[0];\n    WordList &registers = *keywordlists[1];\n    WordList &directive = *keywordlists[2];\n    WordList &extInstruction = *keywordlists[3];\n    WordList &alert          = *keywordlists[4];\n    WordList &doxygenKeyword = *keywordlists[5];\n\n\n    // Instanciate a context for our source\n    StyleContext sc(startPos, length, initStyle, styler);\n\n\n    /************************************************************\n    *\n    *   Parse the source\n    *\n    ************************************************************/\n\n    for ( ; sc.More(); sc.Forward())\n    {\n        /************************************************************\n        *\n        *   A style always terminates at the end of a line, even for\n        *   comments (no multi-lines comments)\n        *\n        ************************************************************/\n        if (sc.atLineStart) {\n            sc.SetState(SCE_A68K_DEFAULT);\n        }\n\n\n        /************************************************************\n        *\n        *   If we are not in \"default style\", check if the style continues\n        *   In this case, we just have to loop\n        *\n        ************************************************************/\n\n        if (sc.state != SCE_A68K_DEFAULT)\n        {\n            if (   ((sc.state == SCE_A68K_NUMBER_DEC)        && isdigit(sc.ch))                      // Decimal number\n                || ((sc.state == SCE_A68K_NUMBER_BIN) && IsBin(sc.ch))                                      // Binary number\n                || ((sc.state == SCE_A68K_NUMBER_HEX) && isxdigit(sc.ch))                                   // Hexa number\n                || ((sc.state == SCE_A68K_MACRO_ARG)         && isdigit(sc.ch))                      // Macro argument\n                || ((sc.state == SCE_A68K_STRING1)    && (sc.ch != '\\''))                                   // String single-quoted\n                || ((sc.state == SCE_A68K_STRING2)    && (sc.ch != '\\\"'))                                   // String double-quoted\n                || ((sc.state == SCE_A68K_MACRO_DECLARATION) && IsIdentifierChar(sc.ch))             // Macro declaration (or global label, we don't know at this point)\n                || ((sc.state == SCE_A68K_IDENTIFIER)        && IsIdentifierChar(sc.ch))             // Identifier\n                || ((sc.state == SCE_A68K_LABEL)             && IsIdentifierChar(sc.ch))             // Label (local)\n                || ((sc.state == SCE_A68K_COMMENT_DOXYGEN)   && IsDoxygenChar(sc.ch))                // Doxygen keyword\n                || ((sc.state == SCE_A68K_COMMENT_SPECIAL)   && isalpha(sc.ch))                      // Alert\n                || ((sc.state == SCE_A68K_COMMENT)           && !isalpha(sc.ch) && (sc.ch != '\\\\'))) // Normal comment\n            {\n                continue;\n            }\n\n        /************************************************************\n        *\n        *   Check if current state terminates\n        *\n        ************************************************************/\n\n            // Strings: include terminal ' or \" in the current string by skipping it\n            if ((sc.state == SCE_A68K_STRING1) || (sc.state == SCE_A68K_STRING2)) {\n                sc.Forward();\n                }\n\n\n            // If a macro declaration was terminated with ':', it was a label\n            else if ((sc.state == SCE_A68K_MACRO_DECLARATION) && (sc.chPrev == ':')) {\n                sc.ChangeState(SCE_A68K_LABEL);\n            }\n\n\n            // If it wasn't a Doxygen keyword, change it to normal comment\n            else if (sc.state == SCE_A68K_COMMENT_DOXYGEN) {\n                sc.GetCurrent(Buffer, sizeof(Buffer));\n                if (!doxygenKeyword.InList(Buffer)) {\n                    sc.ChangeState(SCE_A68K_COMMENT);\n                }\n                sc.SetState(SCE_A68K_COMMENT);\n                continue;\n            }\n\n\n            // If it wasn't an Alert, change it to normal comment\n            else if (sc.state == SCE_A68K_COMMENT_SPECIAL) {\n                sc.GetCurrent(Buffer, sizeof(Buffer));\n                if (!alert.InList(Buffer)) {\n                    sc.ChangeState(SCE_A68K_COMMENT);\n                }\n                // Reset style to normal comment, or to Doxygen keyword if it begins with '\\'\n                if (sc.ch == '\\\\') {\n                    sc.SetState(SCE_A68K_COMMENT_DOXYGEN);\n                }\n                else {\n                sc.SetState(SCE_A68K_COMMENT);\n                }\n                continue;\n            }\n\n\n            // If we are in a comment, it's a Doxygen keyword or an Alert\n            else if (sc.state == SCE_A68K_COMMENT) {\n                if (sc.ch == '\\\\') {\n                    sc.SetState(SCE_A68K_COMMENT_DOXYGEN);\n                }\n                else {\n                    sc.SetState(SCE_A68K_COMMENT_SPECIAL);\n                }\n                continue;\n            }\n\n\n            // Check if we are at the end of an identifier\n            // In this case, colourise it if was a keyword.\n            else if ((sc.state == SCE_A68K_IDENTIFIER) && !IsIdentifierChar(sc.ch)) {\n                sc.GetCurrentLowered(Buffer, sizeof(Buffer));                           // Buffer the string of the current context\n                if (cpuInstruction.InList(Buffer)) {                                    // And check if it belongs to a keyword list\n                    sc.ChangeState(SCE_A68K_CPUINSTRUCTION);\n                }\n                else if (extInstruction.InList(Buffer)) {\n                    sc.ChangeState(SCE_A68K_EXTINSTRUCTION);\n                }\n                else if (registers.InList(Buffer)) {\n                    sc.ChangeState(SCE_A68K_REGISTER);\n                }\n                else if (directive.InList(Buffer)) {\n                    sc.ChangeState(SCE_A68K_DIRECTIVE);\n                }\n            }\n\n            // All special contexts are now handled.Come back to default style\n            sc.SetState(SCE_A68K_DEFAULT);\n        }\n\n\n        /************************************************************\n        *\n        *   Check if we must enter a new state\n        *\n        ************************************************************/\n\n        // Something which begins at the beginning of a line, and with\n        // - '\\' + an identifier start char, or\n        // - '\\\\@' + an identifier start char\n        // is a local label (second case is used for macro local labels). We set it already as a label, it can't be a macro/equ declaration\n        if (sc.atLineStart && (sc.ch < 0x80) && IsIdentifierStart(sc.chNext) && (sc.ch == '\\\\')) {\n            sc.SetState(SCE_A68K_LABEL);\n        }\n\n        if (sc.atLineStart && (sc.ch < 0x80) && (sc.ch == '\\\\') && (sc.chNext == '\\\\')) {\n            sc.Forward(2);\n            if ((sc.ch == '@') && IsIdentifierStart(sc.chNext)) {\n                sc.ChangeState(SCE_A68K_LABEL);\n                sc.SetState(SCE_A68K_LABEL);\n            }\n        }\n\n        // Label and macro identifiers start at the beginning of a line\n        // We set both as a macro id, but if it wasn't one (':' at the end),\n        // it will be changed as a label.\n        if (sc.atLineStart && (sc.ch < 0x80) && IsIdentifierStart(sc.ch)) {\n            sc.SetState(SCE_A68K_MACRO_DECLARATION);\n        }\n        else if ((sc.ch < 0x80) && (sc.ch == ';')) {                            // Default: alert in a comment. If it doesn't match\n            sc.SetState(SCE_A68K_COMMENT);                                      // with an alert, it will be toggle to a normal comment\n        }\n        else if ((sc.ch < 0x80) && isdigit(sc.ch)) {                            // Decimal numbers haven't prefix\n            sc.SetState(SCE_A68K_NUMBER_DEC);\n        }\n        else if ((sc.ch < 0x80) && (sc.ch == '%')) {                            // Binary numbers are prefixed with '%'\n            sc.SetState(SCE_A68K_NUMBER_BIN);\n        }\n        else if ((sc.ch < 0x80) && (sc.ch == '$')) {                            // Hexadecimal numbers are prefixed with '$'\n            sc.SetState(SCE_A68K_NUMBER_HEX);\n        }\n        else if ((sc.ch < 0x80) && (sc.ch == '\\'')) {                           // String (single-quoted)\n            sc.SetState(SCE_A68K_STRING1);\n        }\n        else if ((sc.ch < 0x80) && (sc.ch == '\\\"')) {                           // String (double-quoted)\n            sc.SetState(SCE_A68K_STRING2);\n        }\n        else if ((sc.ch < 0x80) && (sc.ch == '\\\\') && (isdigit(sc.chNext))) {   // Replacement symbols in macro are prefixed with '\\'\n            sc.SetState(SCE_A68K_MACRO_ARG);\n        }\n        else if ((sc.ch < 0x80) && IsIdentifierStart(sc.ch)) {                  // An identifier: constant, label, etc...\n            sc.SetState(SCE_A68K_IDENTIFIER);\n        }\n        else {\n            if (sc.ch < 0x80) {\n                OpType = GetOperatorType(sc.ch, sc.chNext);                     // Check if current char is an operator\n                if (OpType != NO_OPERATOR) {\n                    sc.SetState(SCE_A68K_OPERATOR);\n                    if (OpType == OPERATOR_2CHAR) {                             // Check if the operator is 2 bytes long\n                        sc.ForwardSetState(SCE_A68K_OPERATOR);                  // (>> or <<)\n                    }\n                }\n            }\n        }\n    }                                                                           // End of for()\n    sc.Complete();\n}\n\n\n// Names of the keyword lists\n\nstatic const char * const a68kWordListDesc[] =\n{\n    \"CPU instructions\",\n    \"Registers\",\n    \"Directives\",\n    \"Extended instructions\",\n    \"Comment special words\",\n    \"Doxygen keywords\",\n    0\n};\n\nLexerModule lmA68k(SCLEX_A68K, ColouriseA68kDoc, \"a68k\", 0, a68kWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexAPDL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexAPDL.cxx\n ** Lexer for APDL. Based on the lexer for Assembler by The Black Horus.\n ** By Hadar Raz.\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80 && (isalnum(ch) || ch == '_'));\n}\n\nstatic inline bool IsAnOperator(char ch) {\n\t// '.' left out as it is used to make up numbers\n\tif (ch == '*' || ch == '/' || ch == '-' || ch == '+' ||\n\t\tch == '(' || ch == ')' || ch == '=' || ch == '^' ||\n\t\tch == '[' || ch == ']' || ch == '<' || ch == '&' ||\n\t\tch == '>' || ch == ',' || ch == '|' || ch == '~' ||\n\t\tch == '$' || ch == ':' || ch == '%')\n\t\treturn true;\n\treturn false;\n}\n\nstatic void ColouriseAPDLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler) {\n\n\tint stringStart = ' ';\n\n\tWordList &processors = *keywordlists[0];\n\tWordList &commands = *keywordlists[1];\n\tWordList &slashcommands = *keywordlists[2];\n\tWordList &starcommands = *keywordlists[3];\n\tWordList &arguments = *keywordlists[4];\n\tWordList &functions = *keywordlists[5];\n\n\t// Do not leak onto next line\n\tinitStyle = SCE_APDL_DEFAULT;\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_APDL_NUMBER) {\n\t\t\tif (!(IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') ||\n\t\t\t\t((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) {\n\t\t\t\tsc.SetState(SCE_APDL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_APDL_COMMENT) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_APDL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_APDL_COMMENTBLOCK) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tif (sc.ch == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tsc.ForwardSetState(SCE_APDL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_APDL_STRING) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_APDL_DEFAULT);\n\t\t\t} else if ((sc.ch == '\\'' && stringStart == '\\'') || (sc.ch == '\\\"' && stringStart == '\\\"')) {\n\t\t\t\tsc.ForwardSetState(SCE_APDL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_APDL_WORD) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (processors.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_APDL_PROCESSOR);\n\t\t\t\t} else if (slashcommands.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_APDL_SLASHCOMMAND);\n\t\t\t\t} else if (starcommands.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_APDL_STARCOMMAND);\n\t\t\t\t} else if (commands.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_APDL_COMMAND);\n\t\t\t\t} else if (arguments.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_APDL_ARGUMENT);\n\t\t\t\t} else if (functions.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_APDL_FUNCTION);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_APDL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_APDL_OPERATOR) {\n\t\t\tif (!IsAnOperator(static_cast<char>(sc.ch))) {\n\t\t\t    sc.SetState(SCE_APDL_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_APDL_DEFAULT) {\n\t\t\tif (sc.ch == '!' && sc.chNext == '!') {\n\t\t\t\tsc.SetState(SCE_APDL_COMMENTBLOCK);\n\t\t\t} else if (sc.ch == '!') {\n\t\t\t\tsc.SetState(SCE_APDL_COMMENT);\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_APDL_NUMBER);\n\t\t\t} else if (sc.ch == '\\'' || sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_APDL_STRING);\n\t\t\t\tstringStart = sc.ch;\n\t\t\t} else if (IsAWordChar(sc.ch) || ((sc.ch == '*' || sc.ch == '/') && !isgraph(sc.chPrev))) {\n\t\t\t\tsc.SetState(SCE_APDL_WORD);\n\t\t\t} else if (IsAnOperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_APDL_OPERATOR);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\n//------------------------------------------------------------------------------\n// 06-27-07 Sergio Lucato\n// - Included code folding for Ansys APDL lexer\n// - Copyied from LexBasic.cxx and modified for APDL\n//------------------------------------------------------------------------------\n\n/* Bits:\n * 1  - whitespace\n * 2  - operator\n * 4  - identifier\n * 8  - decimal digit\n * 16 - hex digit\n * 32 - bin digit\n */\nstatic int character_classification[128] =\n{\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  1,  0,  0,\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n    1,  2,  0,  2,  2,  2,  2,  2,  2,  2,  6,  2,  2,  2,  10, 6,\n    60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2,  2,  2,  2,  2,  2,\n    2,  20, 20, 20, 20, 20, 20, 4,  4,  4,  4,  4,  4,  4,  4,  4,\n    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  2,  2,  2,  2,  4,\n    2,  20, 20, 20, 20, 20, 20, 4,  4,  4,  4,  4,  4,  4,  4,  4,\n    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  2,  2,  2,  2,  0\n};\n\nstatic bool IsSpace(int c) {\n\treturn c < 128 && (character_classification[c] & 1);\n}\n\nstatic bool IsIdentifier(int c) {\n\treturn c < 128 && (character_classification[c] & 4);\n}\n\nstatic int LowerCase(int c)\n{\n\tif (c >= 'A' && c <= 'Z')\n\t\treturn 'a' + c - 'A';\n\treturn c;\n}\n\nstatic int CheckAPDLFoldPoint(char const *token, int &level) {\n\tif (!strcmp(token, \"*if\") ||\n\t\t!strcmp(token, \"*do\") ||\n\t\t!strcmp(token, \"*dowhile\") ) {\n\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\treturn 1;\n\t}\n\tif (!strcmp(token, \"*endif\") ||\n\t\t!strcmp(token, \"*enddo\") ) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n\nstatic void FoldAPDLDoc(Sci_PositionU startPos, Sci_Position length, int,\n\tWordList *[], Accessor &styler) {\n\n\tSci_Position line = styler.GetLine(startPos);\n\tint level = styler.LevelAt(line);\n\tint go = 0, done = 0;\n\tSci_Position endPos = startPos + length;\n\tchar word[256];\n\tint wordlen = 0;\n\tSci_Position i;\n    bool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\t// Scan for tokens at the start of the line (they may include\n\t// whitespace, for tokens like \"End Function\"\n\tfor (i = startPos; i < endPos; i++) {\n\t\tint c = styler.SafeGetCharAt(i);\n\t\tif (!done && !go) {\n\t\t\tif (wordlen) { // are we scanning a token already?\n\t\t\t\tword[wordlen] = static_cast<char>(LowerCase(c));\n\t\t\t\tif (!IsIdentifier(c)) { // done with token\n\t\t\t\t\tword[wordlen] = '\\0';\n\t\t\t\t\tgo = CheckAPDLFoldPoint(word, level);\n\t\t\t\t\tif (!go) {\n\t\t\t\t\t\t// Treat any whitespace as single blank, for\n\t\t\t\t\t\t// things like \"End   Function\".\n\t\t\t\t\t\tif (IsSpace(c) && IsIdentifier(word[wordlen - 1])) {\n\t\t\t\t\t\t\tword[wordlen] = ' ';\n\t\t\t\t\t\t\tif (wordlen < 255)\n\t\t\t\t\t\t\t\twordlen++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse // done with this line\n\t\t\t\t\t\t\tdone = 1;\n\t\t\t\t\t}\n\t\t\t\t} else if (wordlen < 255) {\n\t\t\t\t\twordlen++;\n\t\t\t\t}\n\t\t\t} else { // start scanning at first non-whitespace character\n\t\t\t\tif (!IsSpace(c)) {\n\t\t\t\t\tif (IsIdentifier(c)) {\n\t\t\t\t\t\tword[0] = static_cast<char>(LowerCase(c));\n\t\t\t\t\t\twordlen = 1;\n\t\t\t\t\t} else // done with this line\n\t\t\t\t\t\tdone = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (c == '\\n') { // line end\n\t\t\tif (!done && wordlen == 0 && foldCompact) // line was only space\n\t\t\t\tlevel |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (level != styler.LevelAt(line))\n\t\t\t\tstyler.SetLevel(line, level);\n\t\t\tlevel += go;\n\t\t\tline++;\n\t\t\t// reset state\n\t\t\twordlen = 0;\n\t\t\tlevel &= ~SC_FOLDLEVELHEADERFLAG;\n\t\t\tlevel &= ~SC_FOLDLEVELWHITEFLAG;\n\t\t\tgo = 0;\n\t\t\tdone = 0;\n\t\t}\n\t}\n}\n\nstatic const char * const apdlWordListDesc[] = {\n    \"processors\",\n    \"commands\",\n    \"slashommands\",\n    \"starcommands\",\n    \"arguments\",\n    \"functions\",\n    0\n};\n\nLexerModule lmAPDL(SCLEX_APDL, ColouriseAPDLDoc, \"apdl\", FoldAPDLDoc, apdlWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexASY.cpp",
    "content": "// Scintilla source code edit control\n//Author: instanton (email: soft_share<at>126<dot>com)\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ColouriseAsyDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\tWordList *keywordlists[], Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_\", 0x80, true);\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"._\", 0x80, true);\n\n\tint visibleChars = 0;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.atLineStart) {\n\t\t\tif (sc.state == SCE_ASY_STRING) {\n\t\t\t\tsc.SetState(SCE_ASY_STRING);\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\tif (sc.ch == '\\\\') {\n\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n//\t\t\t\tcontinuationLine = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_ASY_OPERATOR:\n\t\t\t\tsc.SetState(SCE_ASY_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_ASY_NUMBER:\n\t\t\t\tif (!setWord.Contains(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_ASY_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ASY_IDENTIFIER:\n\t\t\t\tif (!setWord.Contains(sc.ch) || (sc.ch == '.')) {\n\t\t\t\t\tchar s[1000];\n\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ASY_WORD);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ASY_WORD2);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_ASY_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ASY_COMMENT:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_ASY_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ASY_COMMENTLINE:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_ASY_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ASY_STRING:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_ASY_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tsc.ForwardSetState(SCE_ASY_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ASY_CHARACTER:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_ASY_STRINGEOL);\n\t\t\t\t} else \tif (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tsc.ForwardSetState(SCE_ASY_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_ASY_DEFAULT) {\n\t\t\tif (setWordStart.Contains(sc.ch) || (sc.ch == '@')) {\n\t\t\t\tsc.SetState(SCE_ASY_IDENTIFIER);\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tsc.SetState(SCE_ASY_COMMENT);\n\t\t\t\tsc.Forward();\t//\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tsc.SetState(SCE_ASY_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_ASY_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_ASY_CHARACTER);\n\t\t\t} else if (sc.ch == '#' && visibleChars == 0) {\n\t\t\t\tdo {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More());\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_ASY_DEFAULT);\n\t\t\t\t}\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_ASY_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t}\n\tsc.Complete();\n}\n\nstatic bool IsAsyCommentStyle(int style) {\n\treturn style == SCE_ASY_COMMENT;\n}\n\n\nstatic inline bool isASYidentifier(int ch) {\n\treturn\n      ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) ;\n}\n\nstatic int ParseASYWord(Sci_PositionU pos, Accessor &styler, char *word)\n{\n  int length=0;\n  char ch=styler.SafeGetCharAt(pos);\n  *word=0;\n\n  while(isASYidentifier(ch) && length<100){\n          word[length]=ch;\n          length++;\n          ch=styler.SafeGetCharAt(pos+length);\n  }\n  word[length]=0;\n  return length;\n}\n\nstatic bool IsASYDrawingLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\n\tSci_Position startpos = pos;\n\tchar buffer[100]=\"\";\n\n\twhile (startpos<eol_pos){\n\t\tchar ch = styler[startpos];\n\t\tParseASYWord(startpos,styler,buffer);\n\t\tbool drawcommands = strncmp(buffer,\"draw\",4)==0||\n\t\t\tstrncmp(buffer,\"pair\",4)==0||strncmp(buffer,\"label\",5)==0;\n\t\tif (!drawcommands && ch!=' ') return false;\n\t\telse if (drawcommands) return true;\n\t\tstartpos++;\n\t}\n\treturn false;\n}\n\nstatic void FoldAsyDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\t\t\t\t   WordList *[], Accessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tbool foldAtElse = styler.GetPropertyInt(\"fold.at.else\", 0) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (foldComment && IsAsyCommentStyle(style)) {\n\t\t\tif (!IsAsyCommentStyle(stylePrev) && (stylePrev != SCE_ASY_COMMENTLINEDOC)) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (!IsAsyCommentStyle(styleNext) && (styleNext != SCE_ASY_COMMENTLINEDOC) && !atEOL) {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (style == SCE_ASY_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\n\t\tif (atEOL && IsASYDrawingLine(lineCurrent, styler)){\n\t\t\tif (lineCurrent==0 && IsASYDrawingLine(lineCurrent + 1, styler))\n\t\t\t\tlevelNext++;\n\t\t\telse if (lineCurrent!=0 && !IsASYDrawingLine(lineCurrent - 1, styler)\n\t\t\t\t&& IsASYDrawingLine(lineCurrent + 1, styler)\n\t\t\t\t)\n\t\t\t\tlevelNext++;\n\t\t\telse if (lineCurrent!=0 && IsASYDrawingLine(lineCurrent - 1, styler) &&\n\t\t\t\t!IsASYDrawingLine(lineCurrent+1, styler))\n\t\t\t\tlevelNext--;\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif (foldAtElse) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\t}\n}\n\nstatic const char * const asyWordLists[] = {\n            \"Primary keywords and identifiers\",\n            \"Secondary keywords and identifiers\",\n            0,\n        };\n\nLexerModule lmASY(SCLEX_ASYMPTOTE, ColouriseAsyDoc, \"asy\", FoldAsyDoc, asyWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexAU3.cpp",
    "content": "// Scintilla source code edit control\n// @file LexAU3.cxx\n// Lexer for AutoIt3  http://www.hiddensoft.com/autoit3\n// by Jos van der Zande, jvdzande@yahoo.com\n//\n// Changes:\n// March 28, 2004 - Added the standard Folding code\n// April 21, 2004 - Added Preprosessor Table + Syntax Highlighting\n//                  Fixed Number highlighting\n//                  Changed default isoperator to IsAOperator to have a better match to AutoIt3\n//                  Fixed \"#comments_start\" -> \"#comments-start\"\n//                  Fixed \"#comments_end\" -> \"#comments-end\"\n//                  Fixed Sendkeys in Strings when not terminated with }\n//                  Added support for Sendkey strings that have second parameter e.g. {UP 5} or {a down}\n// April 26, 2004 - Fixed # pre-processor statement inside of comment block would invalidly change the color.\n//                  Added logic for #include <xyz.au3> to treat the <> as string\n//                  Added underscore to IsAOperator.\n// May 17, 2004   - Changed the folding logic from indent to keyword folding.\n//                  Added Folding logic for blocks of single-commentlines or commentblock.\n//                        triggered by: fold.comment=1\n//                  Added Folding logic for preprocessor blocks triggered by fold.preprocessor=1\n//                  Added Special for #region - #endregion syntax highlight and folding.\n// May 30, 2004   - Fixed issue with continuation lines on If statements.\n// June 5, 2004   - Added comma to Operators for better readability.\n//                  Added fold.compact support set with fold.compact=1\n//                  Changed folding inside of #cs-#ce. Default is no keyword folding inside comment blocks when fold.comment=1\n//                        it will now only happen when fold.comment=2.\n// Sep 5, 2004    - Added logic to handle colourizing words on the last line.\n//                        Typed Characters now show as \"default\" till they match any table.\n// Oct 10, 2004   - Added logic to show Comments in \"Special\" directives.\n// Nov  1, 2004   - Added better testing for Numbers supporting x and e notation.\n// Nov 28, 2004   - Added logic to handle continuation lines for syntax highlighting.\n// Jan 10, 2005   - Added Abbreviations Keyword used for expansion\n// Mar 24, 2005   - Updated Abbreviations Keywords to fix when followed by Operator.\n// Apr 18, 2005   - Updated #CE/#Comment-End logic to take a linecomment \";\" into account\n//                - Added folding support for With...EndWith\n//                - Added support for a DOT in variable names\n//                - Fixed Underscore in CommentBlock\n// May 23, 2005   - Fixed the SentKey lexing in case of a missing }\n// Aug 11, 2005   - Fixed possible bug with s_save length > 100.\n// Aug 23, 2005   - Added Switch/endswitch support to the folding logic.\n// Sep 27, 2005   - Fixed the SentKey lexing logic in case of multiple sentkeys.\n// Mar 12, 2006   - Fixed issue with <> coloring as String in stead of Operator in rare occasions.\n// Apr  8, 2006   - Added support for AutoIt3 Standard UDF library (SCE_AU3_UDF)\n// Mar  9, 2007   - Fixed bug with + following a String getting the wrong Color.\n// Jun 20, 2007   - Fixed Commentblock issue when LF's are used as EOL.\n// Jul 26, 2007   - Fixed #endregion undetected bug.\n//\n// Copyright for Scintilla: 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n// Scintilla source code edit control\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsTypeCharacter(const int ch)\n{\n    return ch == '$';\n}\nstatic inline bool IsAWordChar(const int ch)\n{\n    return (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\nstatic inline bool IsAWordStart(const int ch)\n{\n    return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '@' || ch == '#' || ch == '$' || ch == '.');\n}\n\nstatic inline bool IsAOperator(char ch) {\n\tif (IsASCII(ch) && isalnum(ch))\n\t\treturn false;\n\tif (ch == '+' || ch == '-' || ch == '*' || ch == '/' ||\n\t    ch == '&' || ch == '^' || ch == '=' || ch == '<' || ch == '>' ||\n\t    ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == ',' )\n\t\treturn true;\n\treturn false;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// GetSendKey() filters the portion before and after a/multiple space(s)\n// and return the first portion to be looked-up in the table\n// also check if the second portion is valid... (up,down.on.off,toggle or a number)\n///////////////////////////////////////////////////////////////////////////////\n\nstatic int GetSendKey(const char *szLine, char *szKey)\n{\n\tint\t\tnFlag\t= 0;\n\tint\t\tnStartFound\t= 0;\n\tint\t\tnKeyPos\t= 0;\n\tint\t\tnSpecPos= 0;\n\tint\t\tnSpecNum= 1;\n\tint\t\tnPos\t= 0;\n\tchar\tcTemp;\n\tchar\tszSpecial[100];\n\n\t// split the portion of the sendkey in the part before and after the spaces\n\twhile ( ( (cTemp = szLine[nPos]) != '\\0'))\n\t{\n\t\t// skip leading Ctrl/Shift/Alt state\n\t\tif (cTemp == '{') {\n\t\t\tnStartFound = 1;\n\t\t}\n\t\t//\n\t\tif (nStartFound == 1) {\n\t\t\tif ((cTemp == ' ') && (nFlag == 0) ) // get the stuff till first space\n\t\t\t{\n\t\t\t\tnFlag = 1;\n\t\t\t\t// Add } to the end of the first bit for table lookup later.\n\t\t\t\tszKey[nKeyPos++] = '}';\n\t\t\t}\n\t\t\telse if (cTemp == ' ')\n\t\t\t{\n\t\t\t\t// skip other spaces\n\t\t\t}\n\t\t\telse if (nFlag == 0)\n\t\t\t{\n\t\t\t\t// save first portion into var till space or } is hit\n\t\t\t\tszKey[nKeyPos++] = cTemp;\n\t\t\t}\n\t\t\telse if ((nFlag == 1) && (cTemp != '}'))\n\t\t\t{\n\t\t\t\t// Save second portion into var...\n\t\t\t\tszSpecial[nSpecPos++] = cTemp;\n\t\t\t\t// check if Second portion is all numbers for repeat fuction\n\t\t\t\tif (isdigit(cTemp) == false) {nSpecNum = 0;}\n\t\t\t}\n\t\t}\n\t\tnPos++;\t\t\t\t\t\t\t\t\t// skip to next char\n\n\t} // End While\n\n\n\t// Check if the second portion is either a number or one of these keywords\n\tszKey[nKeyPos] = '\\0';\n\tszSpecial[nSpecPos] = '\\0';\n\tif (strcmp(szSpecial,\"down\")== 0    || strcmp(szSpecial,\"up\")== 0  ||\n\t\tstrcmp(szSpecial,\"on\")== 0      || strcmp(szSpecial,\"off\")== 0 ||\n\t\tstrcmp(szSpecial,\"toggle\")== 0  || nSpecNum == 1 )\n\t{\n\t\tnFlag = 0;\n\t}\n\telse\n\t{\n\t\tnFlag = 1;\n\t}\n\treturn nFlag;  // 1 is bad, 0 is good\n\n} // GetSendKey()\n\n//\n// Routine to check the last \"none comment\" character on a line to see if its a continuation\n//\nstatic bool IsContinuationLine(Sci_PositionU szLine, Accessor &styler)\n{\n\tSci_Position nsPos = styler.LineStart(szLine);\n\tSci_Position nePos = styler.LineStart(szLine+1) - 2;\n\t//int stylech = styler.StyleAt(nsPos);\n\twhile (nsPos < nePos)\n\t{\n\t\t//stylech = styler.StyleAt(nePos);\n\t\tint stylech = styler.StyleAt(nsPos);\n\t\tif (!(stylech == SCE_AU3_COMMENT)) {\n\t\t\tchar ch = styler.SafeGetCharAt(nePos);\n\t\t\tif (!isspacechar(ch)) {\n\t\t\t\tif (ch == '_')\n\t\t\t\t\treturn true;\n\t\t\t\telse\n\t\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tnePos--; // skip to next char\n\t} // End While\n\treturn false;\n} // IsContinuationLine()\n\n//\n// syntax highlighting logic\nstatic void ColouriseAU3Doc(Sci_PositionU startPos,\n\t\t\t\t\t\t\tSci_Position length, int initStyle,\n\t\t\t\t\t\t\tWordList *keywordlists[],\n\t\t\t\t\t\t\tAccessor &styler) {\n\n    WordList &keywords = *keywordlists[0];\n    WordList &keywords2 = *keywordlists[1];\n    WordList &keywords3 = *keywordlists[2];\n    WordList &keywords4 = *keywordlists[3];\n    WordList &keywords5 = *keywordlists[4];\n    WordList &keywords6 = *keywordlists[5];\n    WordList &keywords7 = *keywordlists[6];\n    WordList &keywords8 = *keywordlists[7];\n\t// find the first previous line without continuation character at the end\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tSci_Position s_startPos = startPos;\n\t// When not inside a Block comment: find First line without _\n\tif (!(initStyle==SCE_AU3_COMMENTBLOCK)) {\n\t\twhile ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) ||\n\t\t\t   (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) {\n\t\t\tlineCurrent--;\n\t\t\tstartPos = styler.LineStart(lineCurrent); // get start position\n\t\t\tinitStyle =  0;                           // reset the start style to 0\n\t\t}\n\t}\n\t// Set the new length to include it from the start and set the start position\n\tlength = length + s_startPos - startPos;      // correct the total length to process\n    styler.StartAt(startPos);\n\n    StyleContext sc(startPos, length, initStyle, styler);\n\tchar si;     // string indicator \"=1 '=2\n\tchar ni;     // Numeric indicator error=9 normal=0 normal+dec=1 hex=2 Enot=3\n\tchar ci;     // comment indicator 0=not linecomment(;)\n\tchar s_save[100] = \"\";\n\tsi=0;\n\tni=0;\n\tci=0;\n\t//$$$\n    for (; sc.More(); sc.Forward()) {\n\t\tchar s[100];\n\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t// **********************************************\n\t\t// save the total current word for eof processing\n\t\tif (IsAWordChar(sc.ch) || sc.ch == '}')\n\t\t{\n\t\t\tstrcpy(s_save,s);\n\t\t\tint tp = static_cast<int>(strlen(s_save));\n\t\t\tif (tp < 99) {\n\t\t\t\ts_save[tp] = static_cast<char>(tolower(sc.ch));\n\t\t\t\ts_save[tp+1] = '\\0';\n\t\t\t}\n\t\t}\n\t\t// **********************************************\n\t\t//\n\t\tswitch (sc.state)\n        {\n            case SCE_AU3_COMMENTBLOCK:\n            {\n\t\t\t\t//Reset at line end\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tci=0;\n\t\t\t\t\tif (strcmp(s, \"#ce\")== 0 || strcmp(s, \"#comments-end\")== 0) {\n\t\t\t\t\t\tif (sc.atLineEnd)\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_COMMENTBLOCK);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t//skip rest of line when a ; is encountered\n\t\t\t\tif (sc.chPrev == ';') {\n\t\t\t\t\tci=2;\n\t\t\t\t\tsc.SetState(SCE_AU3_COMMENTBLOCK);\n\t\t\t\t}\n\t\t\t\t// skip rest of the line\n\t\t\t\tif (ci==2)\n\t\t\t\t\tbreak;\n\t\t\t\t// check when first character is detected on the line\n\t\t\t\tif (ci==0) {\n\t\t\t\t\tif (IsAWordStart(static_cast<char>(sc.ch)) || IsAOperator(static_cast<char>(sc.ch))) {\n\t\t\t\t\t\tci=1;\n\t\t\t\t\t\tsc.SetState(SCE_AU3_COMMENTBLOCK);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (!(IsAWordChar(sc.ch) || (sc.ch == '-' && strcmp(s, \"#comments\") == 0))) {\n\t\t\t\t\tif ((strcmp(s, \"#ce\")== 0 || strcmp(s, \"#comments-end\")== 0))\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_COMMENT);  // set to comment line for the rest of the line\n\t\t\t\t\telse\n\t\t\t\t\t\tci=2;  // line doesn't begin with #CE so skip the rest of the line\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n            case SCE_AU3_COMMENT:\n            {\n                if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}\n                break;\n            }\n            case SCE_AU3_OPERATOR:\n            {\n                // check if its a COMobject\n\t\t\t\tif (sc.chPrev == '.' && IsAWordChar(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_AU3_COMOBJ);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t}\n                break;\n            }\n            case SCE_AU3_SPECIAL:\n            {\n                if (sc.ch == ';') {sc.SetState(SCE_AU3_COMMENT);}\n\t\t\t\tif (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}\n                break;\n            }\n            case SCE_AU3_KEYWORD:\n            {\n                if (!(IsAWordChar(sc.ch) || (sc.ch == '-' && (strcmp(s, \"#comments\") == 0 || strcmp(s, \"#include\") == 0))))\n                {\n                    if (!IsTypeCharacter(sc.ch))\n                    {\n\t\t\t\t\t\tif (strcmp(s, \"#cs\")== 0 || strcmp(s, \"#comments-start\")== 0 )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_COMMENTBLOCK);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_COMMENTBLOCK);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (keywords.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_KEYWORD);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (keywords2.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_FUNCTION);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (keywords3.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_MACRO);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (keywords5.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_PREPROCESSOR);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t\tif (strcmp(s, \"#include\")== 0)\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsi = 3;   // use to determine string start for #inlude <>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (keywords6.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_SPECIAL);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_SPECIAL);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if ((keywords7.InList(s)) && (!IsAOperator(static_cast<char>(sc.ch)))) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_EXPAND);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (keywords8.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_UDF);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (strcmp(s, \"_\") == 0) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_OPERATOR);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (!IsAWordChar(sc.ch)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n                if (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);}\n                break;\n            }\n\t\t\tcase SCE_AU3_NUMBER:\n            {\n\t\t\t\t// Numeric indicator error=9 normal=0 normal+dec=1 hex=2 E-not=3\n\t\t\t\t//\n\t\t\t\t// test for Hex notation\n\t\t\t\tif (strcmp(s, \"0\") == 0 && (sc.ch == 'x' || sc.ch == 'X') && ni == 0)\n\t\t\t\t{\n\t\t\t\t\tni = 2;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// test for E notation\n\t\t\t\tif (IsADigit(sc.chPrev) && (sc.ch == 'e' || sc.ch == 'E') && ni <= 1)\n\t\t\t\t{\n\t\t\t\t\tni = 3;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t//  Allow Hex characters inside hex numeric strings\n\t\t\t\tif ((ni == 2) &&\n\t\t\t\t\t(sc.ch == 'a' || sc.ch == 'b' || sc.ch == 'c' || sc.ch == 'd' || sc.ch == 'e' || sc.ch == 'f' ||\n\t\t\t\t\t sc.ch == 'A' || sc.ch == 'B' || sc.ch == 'C' || sc.ch == 'D' || sc.ch == 'E' || sc.ch == 'F' ))\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// test for 1 dec point only\n\t\t\t\tif (sc.ch == '.')\n\t\t\t\t{\n\t\t\t\t\tif (ni==0)\n\t\t\t\t\t{\n\t\t\t\t\t\tni=1;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tni=9;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// end of numeric string ?\n\t\t\t\tif (!(IsADigit(sc.ch)))\n\t\t\t\t{\n\t\t\t\t\tif (ni==9)\n\t\t\t\t\t{\n\t\t\t\t\t\tsc.ChangeState(SCE_AU3_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_AU3_VARIABLE:\n\t\t\t{\n\t\t\t\t// Check if its a COMObject\n\t\t\t\tif (sc.ch == '.' && !IsADigit(sc.chNext)) {\n\t\t\t\t\tsc.SetState(SCE_AU3_OPERATOR);\n\t\t\t\t}\n\t\t\t\telse if (!IsAWordChar(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n            }\n\t\t\tcase SCE_AU3_COMOBJ:\n\t\t\t{\n\t\t\t\tif (!(IsAWordChar(sc.ch))) {\n\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n            }\n            case SCE_AU3_STRING:\n            {\n\t\t\t\t// check for \" to end a double qouted string or\n\t\t\t\t// check for ' to end a single qouted string\n\t            if ((si == 1 && sc.ch == '\\\"') || (si == 2 && sc.ch == '\\'') || (si == 3 && sc.ch == '>'))\n\t\t\t\t{\n\t\t\t\t\tsc.ForwardSetState(SCE_AU3_DEFAULT);\n\t\t\t\t\tsi=0;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n                if (sc.atLineEnd)\n\t\t\t\t{\n\t\t\t\t\tsi=0;\n\t\t\t\t\t// at line end and not found a continuation char then reset to default\n\t\t\t\t\tSci_Position lineCurrent = styler.GetLine(sc.currentPos);\n\t\t\t\t\tif (!IsContinuationLine(lineCurrent,styler))\n\t\t\t\t\t{\n\t\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// find Sendkeys in a STRING\n\t\t\t\tif (sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' ) {\n\t\t\t\t\tsc.SetState(SCE_AU3_SENT);}\n\t\t\t\tbreak;\n            }\n\n            case SCE_AU3_SENT:\n            {\n\t\t\t\t// Send key string ended\n\t\t\t\tif (sc.chPrev == '}' && sc.ch != '}')\n\t\t\t\t{\n\t\t\t\t\t// set color to SENDKEY when valid sendkey .. else set back to regular string\n\t\t\t\t\tchar sk[100];\n\t\t\t\t\t// split {111 222} and return {111} and check if 222 is valid.\n\t\t\t\t\t// if return code = 1 then invalid 222 so must be string\n\t\t\t\t\tif (GetSendKey(s,sk))\n\t\t\t\t\t{\n\t\t\t\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\t\t\t}\n\t\t\t\t\t// if single char between {?} then its ok as sendkey for a single character\n\t\t\t\t\telse if (strlen(sk) == 3)\n\t\t\t\t\t{\n\t\t\t\t\t\tsc.ChangeState(SCE_AU3_SENT);\n\t\t\t\t\t}\n\t\t\t\t\t// if sendkey {111} is in table then ok as sendkey\n\t\t\t\t\telse if (keywords4.InList(sk))\n\t\t\t\t\t{\n\t\t\t\t\t\tsc.ChangeState(SCE_AU3_SENT);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_AU3_STRING);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t// check if the start is a valid SendKey start\n\t\t\t\t\tSci_Position\t\tnPos\t= 0;\n\t\t\t\t\tint\t\tnState\t= 1;\n\t\t\t\t\tchar\tcTemp;\n\t\t\t\t\twhile (!(nState == 2) && ((cTemp = s[nPos]) != '\\0'))\n\t\t\t\t\t{\n\t\t\t\t\t\tif (cTemp == '{' && nState == 1)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnState = 2;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (nState == 1 && !(cTemp == '+' || cTemp == '!' || cTemp == '^' || cTemp == '#' ))\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tnState = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnPos++;\n\t\t\t\t\t}\n\t\t\t\t\t//Verify characters infront of { ... if not assume  regular string\n\t\t\t\t\tif (nState == 1 && (!(sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' ))) {\n\t\t\t\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\t\t\t\tsc.SetState(SCE_AU3_STRING);\n\t\t\t\t\t}\n\t\t\t\t\t// If invalid character found then assume its a regular string\n\t\t\t\t\tif (nState == 0) {\n\t\t\t\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\t\t\t\tsc.SetState(SCE_AU3_STRING);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// check if next portion is again a sendkey\n\t\t\t\tif (sc.atLineEnd)\n\t\t\t\t{\n\t\t\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t\t\t\tsi = 0;  // reset string indicator\n\t\t\t\t}\n\t\t\t\t//* check in next characters following a sentkey are again a sent key\n\t\t\t\t// Need this test incase of 2 sentkeys like {F1}{ENTER} but not detect {{}\n\t\t\t\tif (sc.state == SCE_AU3_STRING && (sc.ch == '{' || sc.ch == '+' || sc.ch == '!' || sc.ch == '^' || sc.ch == '#' )) {\n\t\t\t\t\tsc.SetState(SCE_AU3_SENT);}\n\t\t\t\t// check to see if the string ended...\n\t\t\t\t// Sendkey string isn't complete but the string ended....\n\t\t\t\tif ((si == 1 && sc.ch == '\\\"') || (si == 2 && sc.ch == '\\''))\n\t\t\t\t{\n\t\t\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\t\t\tsc.ForwardSetState(SCE_AU3_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n            }\n        }  //switch (sc.state)\n\n        // Determine if a new state should be entered:\n\n\t\tif (sc.state == SCE_AU3_DEFAULT)\n        {\n            if (sc.ch == ';') {sc.SetState(SCE_AU3_COMMENT);}\n            else if (sc.ch == '#') {sc.SetState(SCE_AU3_KEYWORD);}\n            else if (sc.ch == '$') {sc.SetState(SCE_AU3_VARIABLE);}\n            else if (sc.ch == '.' && !IsADigit(sc.chNext)) {sc.SetState(SCE_AU3_OPERATOR);}\n            else if (sc.ch == '@') {sc.SetState(SCE_AU3_KEYWORD);}\n            //else if (sc.ch == '_') {sc.SetState(SCE_AU3_KEYWORD);}\n            else if (sc.ch == '<' && si==3) {sc.SetState(SCE_AU3_STRING);}  // string after #include\n            else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_AU3_STRING);\n\t\t\t\tsi = 1;\t}\n            else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_AU3_STRING);\n\t\t\t\tsi = 2;\t}\n            else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)))\n\t\t\t{\n\t\t\t\tsc.SetState(SCE_AU3_NUMBER);\n\t\t\t\tni = 0;\n\t\t\t}\n            else if (IsAWordStart(sc.ch)) {sc.SetState(SCE_AU3_KEYWORD);}\n            else if (IsAOperator(static_cast<char>(sc.ch))) {sc.SetState(SCE_AU3_OPERATOR);}\n\t\t\telse if (sc.atLineEnd) {sc.SetState(SCE_AU3_DEFAULT);}\n        }\n    }      //for (; sc.More(); sc.Forward())\n\n\t//*************************************\n\t// Colourize the last word correctly\n\t//*************************************\n\tif (sc.state == SCE_AU3_KEYWORD)\n\t\t{\n\t\tif (strcmp(s_save, \"#cs\")== 0 || strcmp(s_save, \"#comments-start\")== 0 )\n\t\t{\n\t\t\tsc.ChangeState(SCE_AU3_COMMENTBLOCK);\n\t\t\tsc.SetState(SCE_AU3_COMMENTBLOCK);\n\t\t}\n\t\telse if (keywords.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_AU3_KEYWORD);\n\t\t\tsc.SetState(SCE_AU3_KEYWORD);\n\t\t}\n\t\telse if (keywords2.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_AU3_FUNCTION);\n\t\t\tsc.SetState(SCE_AU3_FUNCTION);\n\t\t}\n\t\telse if (keywords3.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_AU3_MACRO);\n\t\t\tsc.SetState(SCE_AU3_MACRO);\n\t\t}\n\t\telse if (keywords5.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_AU3_PREPROCESSOR);\n\t\t\tsc.SetState(SCE_AU3_PREPROCESSOR);\n\t\t}\n\t\telse if (keywords6.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_AU3_SPECIAL);\n\t\t\tsc.SetState(SCE_AU3_SPECIAL);\n\t\t}\n\t\telse if (keywords7.InList(s_save) && sc.atLineEnd) {\n\t\t\tsc.ChangeState(SCE_AU3_EXPAND);\n\t\t\tsc.SetState(SCE_AU3_EXPAND);\n\t\t}\n\t\telse if (keywords8.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_AU3_UDF);\n\t\t\tsc.SetState(SCE_AU3_UDF);\n\t\t}\n\t\telse {\n\t\t\tsc.ChangeState(SCE_AU3_DEFAULT);\n\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t}\n\t}\n\tif (sc.state == SCE_AU3_SENT)\n    {\n\t\t// Send key string ended\n\t\tif (sc.chPrev == '}' && sc.ch != '}')\n\t\t{\n\t\t\t// set color to SENDKEY when valid sendkey .. else set back to regular string\n\t\t\tchar sk[100];\n\t\t\t// split {111 222} and return {111} and check if 222 is valid.\n\t\t\t// if return code = 1 then invalid 222 so must be string\n\t\t\tif (GetSendKey(s_save,sk))\n\t\t\t{\n\t\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\t}\n\t\t\t// if single char between {?} then its ok as sendkey for a single character\n\t\t\telse if (strlen(sk) == 3)\n\t\t\t{\n\t\t\t\tsc.ChangeState(SCE_AU3_SENT);\n\t\t\t}\n\t\t\t// if sendkey {111} is in table then ok as sendkey\n\t\t\telse if (keywords4.InList(sk))\n\t\t\t{\n\t\t\t\tsc.ChangeState(SCE_AU3_SENT);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\t}\n\t\t\tsc.SetState(SCE_AU3_STRING);\n\t\t}\n\t\t// check if next portion is again a sendkey\n\t\tif (sc.atLineEnd)\n\t\t{\n\t\t\tsc.ChangeState(SCE_AU3_STRING);\n\t\t\tsc.SetState(SCE_AU3_DEFAULT);\n\t\t}\n    }\n\t//*************************************\n\tsc.Complete();\n}\n\n//\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_AU3_COMMENT || style == SCE_AU3_COMMENTBLOCK;\n}\n\n//\n// Routine to find first none space on the current line and return its Style\n// needed for comment lines not starting on pos 1\nstatic int GetStyleFirstWord(Sci_PositionU szLine, Accessor &styler)\n{\n\tSci_Position nsPos = styler.LineStart(szLine);\n\tSci_Position nePos = styler.LineStart(szLine+1) - 1;\n\twhile (isspacechar(styler.SafeGetCharAt(nsPos)) && nsPos < nePos)\n\t{\n\t\tnsPos++; // skip to next char\n\n\t} // End While\n\treturn styler.StyleAt(nsPos);\n\n} // GetStyleFirstWord()\n\n\n//\nstatic void FoldAU3Doc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler)\n{\n\tSci_Position endPos = startPos + length;\n\t// get settings from the config files for folding comments and preprocessor lines\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldInComment = styler.GetPropertyInt(\"fold.comment\") == 2;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tbool foldpreprocessor = styler.GetPropertyInt(\"fold.preprocessor\") != 0;\n\t// Backtrack to previous line in case need to fix its fold status\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tif (startPos > 0) {\n\t\tif (lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\tstartPos = styler.LineStart(lineCurrent);\n\t\t}\n\t}\n\t// vars for style of previous/current/next lines\n\tint style = GetStyleFirstWord(lineCurrent,styler);\n\tint stylePrev = 0;\n\t// find the first previous line without continuation character at the end\n\twhile ((lineCurrent > 0 && IsContinuationLine(lineCurrent,styler)) ||\n\t       (lineCurrent > 1 && IsContinuationLine(lineCurrent-1,styler))) {\n\t\tlineCurrent--;\n\t\tstartPos = styler.LineStart(lineCurrent);\n\t}\n\tif (lineCurrent > 0) {\n\t\tstylePrev = GetStyleFirstWord(lineCurrent-1,styler);\n\t}\n\t// vars for getting first word to check for keywords\n\tbool FirstWordStart = false;\n\tbool FirstWordEnd = false;\n\tchar szKeyword[11]=\"\";\n\tint\t szKeywordlen = 0;\n\tchar szThen[5]=\"\";\n\tint\t szThenlen = 0;\n\tbool ThenFoundLast = false;\n\t// var for indentlevel\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelNext = levelCurrent;\n\t//\n\tint\tvisibleChars = 0;\n\tchar chNext = styler.SafeGetCharAt(startPos);\n\tchar chPrev = ' ';\n\t//\n\tfor (Sci_Position i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tif (IsAWordChar(ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t\t// get the syle for the current character neede to check in comment\n\t\tint stylech = styler.StyleAt(i);\n\t\t// get first word for the line for indent check max 9 characters\n\t\tif (FirstWordStart && (!(FirstWordEnd))) {\n\t\t\tif (!IsAWordChar(ch)) {\n\t\t\t\tFirstWordEnd = true;\n\t\t\t\tszKeyword[szKeywordlen] = '\\0';\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (szKeywordlen < 10) {\n\t\t\t\tszKeyword[szKeywordlen++] = static_cast<char>(tolower(ch));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// start the capture of the first word\n\t\tif (!(FirstWordStart)) {\n\t\t\tif (IsAWordChar(ch) || IsAWordStart(ch) || ch == ';') {\n\t\t\t\tFirstWordStart = true;\n\t\t\t\tszKeyword[szKeywordlen++] = static_cast<char>(tolower(ch));\n\t\t\t}\n\t\t}\n\t\t// only process this logic when not in comment section\n\t\tif (!(stylech == SCE_AU3_COMMENT)) {\n\t\t\tif (ThenFoundLast) {\n\t\t\t\tif (IsAWordChar(ch)) {\n\t\t\t\t\tThenFoundLast = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// find out if the word \"then\" is the last on a \"if\" line\n\t\t\tif (FirstWordEnd && strcmp(szKeyword,\"if\") == 0) {\n\t\t\t\tif (szThenlen == 4) {\n\t\t\t\t\tszThen[0] = szThen[1];\n\t\t\t\t\tszThen[1] = szThen[2];\n\t\t\t\t\tszThen[2] = szThen[3];\n\t\t\t\t\tszThen[3] = static_cast<char>(tolower(ch));\n\t\t\t\t\tif (strcmp(szThen,\"then\") == 0 ) {\n\t\t\t\t\t\tThenFoundLast = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tszThen[szThenlen++] = static_cast<char>(tolower(ch));\n\t\t\t\t\tif (szThenlen == 5) {\n\t\t\t\t\t\tszThen[4] = '\\0';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// End of Line found so process the information\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n') || (i == endPos)) {\n\t\t\t// **************************\n\t\t\t// Folding logic for Keywords\n\t\t\t// **************************\n\t\t\t// if a keyword is found on the current line and the line doesn't end with _ (continuation)\n\t\t\t//    and we are not inside a commentblock.\n\t\t\tif (szKeywordlen > 0 && (!(chPrev == '_')) &&\n\t\t\t\t((!(IsStreamCommentStyle(style)) || foldInComment)) ) {\n\t\t\t\tszKeyword[szKeywordlen] = '\\0';\n\t\t\t\t// only fold \"if\" last keyword is \"then\"  (else its a one line if)\n\t\t\t\tif (strcmp(szKeyword,\"if\") == 0  && ThenFoundLast) {\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t}\n\t\t\t\t// create new fold for these words\n\t\t\t\tif (strcmp(szKeyword,\"do\") == 0   || strcmp(szKeyword,\"for\") == 0 ||\n\t\t\t\t\tstrcmp(szKeyword,\"func\") == 0 || strcmp(szKeyword,\"while\") == 0||\n\t\t\t\t\tstrcmp(szKeyword,\"with\") == 0 || strcmp(szKeyword,\"#region\") == 0 ) {\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t}\n\t\t\t\t// create double Fold for select&switch because Case will subtract one of the current level\n\t\t\t\tif (strcmp(szKeyword,\"select\") == 0 || strcmp(szKeyword,\"switch\") == 0) {\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t}\n\t\t\t\t// end the fold for these words before the current line\n\t\t\t\tif (strcmp(szKeyword,\"endfunc\") == 0 || strcmp(szKeyword,\"endif\") == 0 ||\n\t\t\t\t\tstrcmp(szKeyword,\"next\") == 0    || strcmp(szKeyword,\"until\") == 0 ||\n\t\t\t\t\tstrcmp(szKeyword,\"endwith\") == 0 ||strcmp(szKeyword,\"wend\") == 0){\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t\t// end the fold for these words before the current line and Start new fold\n\t\t\t\tif (strcmp(szKeyword,\"case\") == 0      || strcmp(szKeyword,\"else\") == 0 ||\n\t\t\t\t\tstrcmp(szKeyword,\"elseif\") == 0 ) {\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t\t// end the double fold for this word before the current line\n\t\t\t\tif (strcmp(szKeyword,\"endselect\") == 0 || strcmp(szKeyword,\"endswitch\") == 0 ) {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t\t// end the fold for these words on the current line\n\t\t\t\tif (strcmp(szKeyword,\"#endregion\") == 0 ) {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Preprocessor and Comment folding\n\t\t\tint styleNext = GetStyleFirstWord(lineCurrent + 1,styler);\n\t\t\t// *************************************\n\t\t\t// Folding logic for preprocessor blocks\n\t\t\t// *************************************\n\t\t\t// process preprosessor line\n\t\t\tif (foldpreprocessor && style == SCE_AU3_PREPROCESSOR) {\n\t\t\t\tif (!(stylePrev == SCE_AU3_PREPROCESSOR) && (styleNext == SCE_AU3_PREPROCESSOR)) {\n\t\t\t\t    levelNext++;\n\t\t\t\t}\n\t\t\t\t// fold till the last line for normal comment lines\n\t\t\t\telse if (stylePrev == SCE_AU3_PREPROCESSOR && !(styleNext == SCE_AU3_PREPROCESSOR)) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// *********************************\n\t\t\t// Folding logic for Comment blocks\n\t\t\t// *********************************\n\t\t\tif (foldComment && IsStreamCommentStyle(style)) {\n\t\t\t\t// Start of a comment block\n\t\t\t\tif (!(stylePrev==style) && IsStreamCommentStyle(styleNext) && styleNext==style) {\n\t\t\t\t    levelNext++;\n\t\t\t\t}\n\t\t\t\t// fold till the last line for normal comment lines\n\t\t\t\telse if (IsStreamCommentStyle(stylePrev)\n\t\t\t\t\t\t&& !(styleNext == SCE_AU3_COMMENT)\n\t\t\t\t\t\t&& stylePrev == SCE_AU3_COMMENT\n\t\t\t\t\t\t&& style == SCE_AU3_COMMENT) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t\t// fold till the one but last line for Blockcomment lines\n\t\t\t\telse if (IsStreamCommentStyle(stylePrev)\n\t\t\t\t\t\t&& !(styleNext == SCE_AU3_COMMENTBLOCK)\n\t\t\t\t\t\t&& style == SCE_AU3_COMMENTBLOCK) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tint levelUse = levelCurrent;\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext) {\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t}\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\t// reset values for the next line\n\t\t\tlineCurrent++;\n\t\t\tstylePrev = style;\n\t\t\tstyle = styleNext;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tvisibleChars = 0;\n\t\t\t// if the last character is an Underscore then don't reset since the line continues on the next line.\n\t\t\tif (!(chPrev == '_')) {\n\t\t\t\tszKeywordlen = 0;\n\t\t\t\tszThenlen = 0;\n\t\t\t\tFirstWordStart = false;\n\t\t\t\tFirstWordEnd = false;\n\t\t\t\tThenFoundLast = false;\n\t\t\t}\n\t\t}\n\t\t// save the last processed character\n\t\tif (!isspacechar(ch)) {\n\t\t\tchPrev = ch;\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n}\n\n\n//\n\nstatic const char * const AU3WordLists[] = {\n    \"#autoit keywords\",\n    \"#autoit functions\",\n    \"#autoit macros\",\n    \"#autoit Sent keys\",\n    \"#autoit Pre-processors\",\n    \"#autoit Special\",\n    \"#autoit Expand\",\n    \"#autoit UDF\",\n    0\n};\nLexerModule lmAU3(SCLEX_AU3, ColouriseAU3Doc, \"au3\", FoldAU3Doc , AU3WordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexAVE.cpp",
    "content": "// SciTE - Scintilla based Text Editor\n/** @file LexAVE.cxx\n ** Lexer for Avenue.\n **\n  ** Written by Alexey Yutkin <yutkin@geol.msu.ru>.\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_');\n}\nstatic inline bool IsEnumChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch)|| ch == '_');\n}\nstatic inline bool IsANumberChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' );\n}\n\ninline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\ninline bool isAveOperator(char ch) {\n\tif (IsASCII(ch) && isalnum(ch))\n\t\treturn false;\n\t// '.' left out as it is used to make up numbers\n\tif (ch == '*' || ch == '/' || ch == '-' || ch == '+' ||\n\t\tch == '(' || ch == ')' || ch == '=' ||\n\t\tch == '{' || ch == '}' ||\n\t\tch == '[' || ch == ']' || ch == ';' ||\n\t\tch == '<' || ch == '>' || ch == ',' ||\n\t\tch == '.'  )\n\t\treturn true;\n\treturn false;\n}\n\nstatic void ColouriseAveDoc(\n\tSci_PositionU startPos,\n\tSci_Position length,\n\tint initStyle,\n\tWordList *keywordlists[],\n\tAccessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\tWordList &keywords5 = *keywordlists[4];\n\tWordList &keywords6 = *keywordlists[5];\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_AVE_STRINGEOL) {\n\t\tinitStyle = SCE_AVE_DEFAULT;\n\t}\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\tif (sc.atLineEnd) {\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tSci_Position currentLine = styler.GetLine(sc.currentPos);\n\t\t\tstyler.SetLineState(currentLine, 0);\n\t\t}\n\t\tif (sc.atLineStart && (sc.state == SCE_AVE_STRING)) {\n\t\t\t// Prevent SCE_AVE_STRINGEOL from leaking back to previous line\n\t\t\tsc.SetState(SCE_AVE_STRING);\n\t\t}\n\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_AVE_OPERATOR) {\n\t\t\tsc.SetState(SCE_AVE_DEFAULT);\n\t\t} else if (sc.state == SCE_AVE_NUMBER) {\n\t\t\tif (!IsANumberChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_AVE_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVE_ENUM) {\n\t\t\tif (!IsEnumChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_AVE_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVE_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch) || (sc.ch == '.')) {\n\t\t\t\tchar s[100];\n\t\t\t\t//sc.GetCurrent(s, sizeof(s));\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVE_WORD);\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVE_WORD2);\n\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVE_WORD3);\n\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVE_WORD4);\n\t\t\t\t} else if (keywords5.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVE_WORD5);\n\t\t\t\t} else if (keywords6.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVE_WORD6);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_AVE_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVE_COMMENT) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_AVE_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVE_STRING) {\n\t\t\t if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_AVE_DEFAULT);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_AVE_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_AVE_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_AVE_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_AVE_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_AVE_IDENTIFIER);\n\t\t\t} else if (sc.Match('\\\"')) {\n\t\t\t\tsc.SetState(SCE_AVE_STRING);\n\t\t\t} else if (sc.Match('\\'')) {\n\t\t\t\tsc.SetState(SCE_AVE_COMMENT);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (isAveOperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_AVE_OPERATOR);\n\t\t\t} else if (sc.Match('#')) {\n\t\t\t\tsc.SetState(SCE_AVE_ENUM);\n\t\t\t\tsc.Forward();\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldAveDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[],\n                       Accessor &styler) {\n\tSci_PositionU lengthDoc = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = static_cast<char>(tolower(styler[startPos]));\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tint styleNext = styler.StyleAt(startPos);\n\tchar s[10] = \"\";\n\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = static_cast<char>(tolower(chNext));\n\t\tchNext = static_cast<char>(tolower(styler.SafeGetCharAt(i + 1)));\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (style == SCE_AVE_WORD) {\n\t\t\tif (ch == 't' || ch == 'f' || ch == 'w' || ch == 'e') {\n\t\t\t\tfor (unsigned int j = 0; j < 6; j++) {\n\t\t\t\t\tif (!iswordchar(styler[i + j])) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\ts[j] = static_cast<char>(tolower(styler[i + j]));\n\t\t\t\t\ts[j + 1] = '\\0';\n\t\t\t\t}\n\n\t\t\t\tif ((strcmp(s, \"then\") == 0) || (strcmp(s, \"for\") == 0) || (strcmp(s, \"while\") == 0)) {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t}\n\t\t\t\tif ((strcmp(s, \"end\") == 0) || (strcmp(s, \"elseif\") == 0)) {\n\t\t\t\t\t// Normally \"elseif\" and \"then\" will be on the same line and will cancel\n\t\t\t\t\t// each other out.  // As implemented, this does not support fold.at.else.\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (style == SCE_AVE_OPERATOR) {\n\t\t\tif (ch == '{' || ch == '(') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == '}' || ch == ')') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact) {\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\t}\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0)) {\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t}\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nLexerModule lmAVE(SCLEX_AVE, ColouriseAveDoc, \"ave\", FoldAveDoc);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexAVS.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexAVS.cxx\n ** Lexer for AviSynth.\n **/\n// Copyright 2012 by Bruno Barbieri <brunorex@gmail.com>\n// Heavily based on LexPOV by Neil Hodgson\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\nstatic inline bool IsAWordStart(int ch) {\n\treturn isalpha(ch) || (ch != ' ' && ch != '\\n' && ch != '(' && ch != '.' && ch != ',');\n}\n\nstatic inline bool IsANumberChar(int ch) {\n\t// Not exactly following number definition (several dots are seen as OK, etc.)\n\t// but probably enough in most cases.\n\treturn (ch < 0x80) &&\n\t\t\t(isdigit(ch) || ch == '.' || ch == '-' || ch == '+');\n}\n\nstatic void ColouriseAvsDoc(\n\tSci_PositionU startPos,\n\tSci_Position length,\n\tint initStyle,\n\tWordList *keywordlists[],\n\tAccessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &filters = *keywordlists[1];\n\tWordList &plugins = *keywordlists[2];\n\tWordList &functions = *keywordlists[3];\n\tWordList &clipProperties = *keywordlists[4];\n\tWordList &userDefined = *keywordlists[5];\n\n\tSci_Position currentLine = styler.GetLine(startPos);\n\t// Initialize the block comment nesting level, if we are inside such a comment.\n\tint blockCommentLevel = 0;\n\tif (initStyle == SCE_AVS_COMMENTBLOCK || initStyle == SCE_AVS_COMMENTBLOCKN) {\n\t\tblockCommentLevel = styler.GetLineState(currentLine - 1);\n\t}\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_AVS_COMMENTLINE) {\n\t\tinitStyle = SCE_AVS_DEFAULT;\n\t}\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\tif (sc.atLineEnd) {\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tcurrentLine = styler.GetLine(sc.currentPos);\n\t\t\tif (sc.state == SCE_AVS_COMMENTBLOCK || sc.state == SCE_AVS_COMMENTBLOCKN) {\n\t\t\t\t// Inside a block comment, we set the line state\n\t\t\t\tstyler.SetLineState(currentLine, blockCommentLevel);\n\t\t\t} else {\n\t\t\t\t// Reset the line state\n\t\t\t\tstyler.SetLineState(currentLine, 0);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_AVS_OPERATOR) {\n\t\t\tsc.SetState(SCE_AVS_DEFAULT);\n\t\t} else if (sc.state == SCE_AVS_NUMBER) {\n\t\t\t// We stop the number definition on non-numerical non-dot non-sign char\n\t\t\tif (!IsANumberChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_AVS_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVS_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVS_KEYWORD);\n\t\t\t\t} else if (filters.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVS_FILTER);\n\t\t\t\t} else if (plugins.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVS_PLUGIN);\n\t\t\t\t} else if (functions.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVS_FUNCTION);\n\t\t\t\t} else if (clipProperties.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVS_CLIPPROP);\n\t\t\t\t} else if (userDefined.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_AVS_USERDFN);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_AVS_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVS_COMMENTBLOCK) {\n\t\t\tif (sc.Match('/', '*')) {\n\t\t\t\tblockCommentLevel++;\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match('*', '/') && blockCommentLevel > 0) {\n\t\t\t\tblockCommentLevel--;\n\t\t\t\tsc.Forward();\n\t\t\t\tif (blockCommentLevel == 0) {\n\t\t\t\t\tsc.ForwardSetState(SCE_AVS_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVS_COMMENTBLOCKN) {\n\t\t\tif (sc.Match('[', '*')) {\n\t\t\t\tblockCommentLevel++;\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match('*', ']') && blockCommentLevel > 0) {\n\t\t\t\tblockCommentLevel--;\n\t\t\t\tsc.Forward();\n\t\t\t\tif (blockCommentLevel == 0) {\n\t\t\t\t\tsc.ForwardSetState(SCE_AVS_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVS_COMMENTLINE) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_AVS_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVS_STRING) {\n\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_AVS_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_AVS_TRIPLESTRING) {\n\t\t\tif (sc.Match(\"\\\"\\\"\\\"\")) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_AVS_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_AVS_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_AVS_NUMBER);\n\t\t\t} else \tif (IsADigit(sc.ch) || (sc.ch == ',' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState(SCE_AVS_NUMBER);\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tblockCommentLevel = 1;\n\t\t\t\tsc.SetState(SCE_AVS_COMMENTBLOCK);\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('[', '*')) {\n\t\t\t\tblockCommentLevel = 1;\n\t\t\t\tsc.SetState(SCE_AVS_COMMENTBLOCKN);\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tsc.SetState(SCE_AVS_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tif (sc.Match(\"\\\"\\\"\\\"\")) {\n\t\t\t\t\tsc.SetState(SCE_AVS_TRIPLESTRING);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_AVS_STRING);\n\t\t\t\t}\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_AVS_OPERATOR);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_AVS_IDENTIFIER);\n\t\t\t}\n\t\t}\n\t}\n\n\t// End of file: complete any pending changeState\n\tif (sc.state == SCE_AVS_IDENTIFIER) {\n\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\tchar s[100];\n\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\n\t\t\tif (keywords.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_AVS_KEYWORD);\n\t\t\t} else if (filters.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_AVS_FILTER);\n\t\t\t} else if (plugins.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_AVS_PLUGIN);\n\t\t\t} else if (functions.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_AVS_FUNCTION);\n\t\t\t} else if (clipProperties.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_AVS_CLIPPROP);\n\t\t\t} else if (userDefined.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_AVS_USERDFN);\n\t\t\t}\n\t\t\tsc.SetState(SCE_AVS_DEFAULT);\n\t\t}\n\t}\n\n\tsc.Complete();\n}\n\nstatic void FoldAvsDoc(\n\tSci_PositionU startPos,\n\tSci_Position length,\n\tint initStyle,\n\tWordList *[],\n\tAccessor &styler) {\n\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (foldComment && style == SCE_AVS_COMMENTBLOCK) {\n\t\t\tif (stylePrev != SCE_AVS_COMMENTBLOCK) {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if ((styleNext != SCE_AVS_COMMENTBLOCK) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\n\t\tif (foldComment && style == SCE_AVS_COMMENTBLOCKN) {\n\t\t\tif (stylePrev != SCE_AVS_COMMENTBLOCKN) {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if ((styleNext != SCE_AVS_COMMENTBLOCKN) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\n\t\tif (style == SCE_AVS_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const avsWordLists[] = {\n\t\"Keywords\",\n\t\"Filters\",\n\t\"Plugins\",\n\t\"Functions\",\n\t\"Clip properties\",\n\t\"User defined functions\",\n\t0,\n};\n\nLexerModule lmAVS(SCLEX_AVS, ColouriseAvsDoc, \"avs\", FoldAvsDoc, avsWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexAbaqus.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexABAQUS.cxx\n ** Lexer for ABAQUS. Based on the lexer for APDL by Hadar Raz.\n ** By Sergio Lucato.\n ** Sort of completely rewritten by Gertjan Kloosterman\n **/\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// Code folding copyied and modified from LexBasic.cxx\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAKeywordChar(const int ch) {\n\treturn (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == ' ')));\n}\n\nstatic inline bool IsASetChar(const int ch) {\n\treturn (ch < 0x80 && (isalnum(ch) || (ch == '_') || (ch == '.') || (ch == '-')));\n}\n\nstatic void ColouriseABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList*[] /* *keywordlists[] */,\n                            Accessor &styler) {\n\tenum localState { KW_LINE_KW, KW_LINE_COMMA, KW_LINE_PAR, KW_LINE_EQ, KW_LINE_VAL, \\\n\t\t\t\t\t  DAT_LINE_VAL, DAT_LINE_COMMA,\\\n\t\t\t\t\t  COMMENT_LINE,\\\n\t\t\t\t\t  ST_ERROR, LINE_END } state ;\n\n\t// Do not leak onto next line\n\tstate = LINE_END ;\n\tinitStyle = SCE_ABAQUS_DEFAULT;\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\t// Things are actually quite simple\n\t// we have commentlines\n\t// keywordlines and datalines\n\t// On a data line there will only be colouring of numbers\n\t// a keyword line is constructed as\n\t// *word,[ paramname[=paramvalue]]*\n\t// if the line ends with a , the keyword line continues onto the new line\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\tswitch ( state ) {\n        case KW_LINE_KW :\n            if ( sc.atLineEnd ) {\n                // finished the line in keyword state, switch to LINE_END\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = LINE_END ;\n            } else if ( IsAKeywordChar(sc.ch) ) {\n                // nothing changes\n                state = KW_LINE_KW ;\n            } else if ( sc.ch == ',' ) {\n                // Well well we say a comma, arguments *MUST* follow\n                sc.SetState(SCE_ABAQUS_OPERATOR) ;\n                state = KW_LINE_COMMA ;\n            } else {\n                // Flag an error\n                sc.SetState(SCE_ABAQUS_PROCESSOR) ;\n                state = ST_ERROR ;\n            }\n            // Done with processing\n            break ;\n        case KW_LINE_COMMA :\n            // acomma on a keywordline was seen\n            if ( IsAKeywordChar(sc.ch)) {\n                sc.SetState(SCE_ABAQUS_ARGUMENT) ;\n                state = KW_LINE_PAR ;\n            } else if ( sc.atLineEnd || (sc.ch == ',') ) {\n                // we remain in keyword mode\n                state = KW_LINE_COMMA ;\n            } else if ( sc.ch == ' ' ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = KW_LINE_COMMA ;\n            } else {\n                // Anything else constitutes an error\n                sc.SetState(SCE_ABAQUS_PROCESSOR) ;\n                state = ST_ERROR ;\n            }\n            break ;\n        case KW_LINE_PAR :\n            if ( sc.atLineEnd ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = LINE_END ;\n            } else if ( IsAKeywordChar(sc.ch) || (sc.ch == '-') ) {\n                // remain in this state\n                state = KW_LINE_PAR ;\n            } else if ( sc.ch == ',' ) {\n                sc.SetState(SCE_ABAQUS_OPERATOR) ;\n                state = KW_LINE_COMMA ;\n            } else if ( sc.ch == '=' ) {\n                sc.SetState(SCE_ABAQUS_OPERATOR) ;\n                state = KW_LINE_EQ ;\n            } else {\n                // Anything else constitutes an error\n                sc.SetState(SCE_ABAQUS_PROCESSOR) ;\n                state = ST_ERROR ;\n            }\n            break ;\n        case KW_LINE_EQ :\n            if ( sc.ch == ' ' ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                // remain in this state\n                state = KW_LINE_EQ ;\n            } else if ( IsADigit(sc.ch) || (sc.ch == '-') || (sc.ch == '.' && IsADigit(sc.chNext)) ) {\n                sc.SetState(SCE_ABAQUS_NUMBER) ;\n                state = KW_LINE_VAL ;\n            } else if ( IsAKeywordChar(sc.ch) ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = KW_LINE_VAL ;\n            } else if ( (sc.ch == '\\'') || (sc.ch == '\\\"') ) {\n                sc.SetState(SCE_ABAQUS_STRING) ;\n                state = KW_LINE_VAL ;\n            } else {\n                sc.SetState(SCE_ABAQUS_PROCESSOR) ;\n                state = ST_ERROR ;\n            }\n            break ;\n        case KW_LINE_VAL :\n            if ( sc.atLineEnd ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = LINE_END ;\n            } else if ( IsASetChar(sc.ch) && (sc.state == SCE_ABAQUS_DEFAULT) ) {\n                // nothing changes\n                state = KW_LINE_VAL ;\n            } else if (( (IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') ||\n                    ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) &&\n                    (sc.state == SCE_ABAQUS_NUMBER)) {\n                // remain in number mode\n                state = KW_LINE_VAL ;\n            } else if (sc.state == SCE_ABAQUS_STRING) {\n                // accept everything until a closing quote\n                if ( sc.ch == '\\'' || sc.ch == '\\\"' ) {\n                    sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                    state = KW_LINE_VAL ;\n                }\n            } else if ( sc.ch == ',' ) {\n                sc.SetState(SCE_ABAQUS_OPERATOR) ;\n                state = KW_LINE_COMMA ;\n            } else {\n                // anything else is an error\n                sc.SetState(SCE_ABAQUS_PROCESSOR) ;\n                state = ST_ERROR ;\n            }\n            break ;\n        case DAT_LINE_VAL :\n            if ( sc.atLineEnd ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = LINE_END ;\n            } else if ( IsASetChar(sc.ch) && (sc.state == SCE_ABAQUS_DEFAULT) ) {\n                // nothing changes\n                state = DAT_LINE_VAL ;\n            } else if (( (IsADigit(sc.ch) || sc.ch == '.' || (sc.ch == 'e' || sc.ch == 'E') ||\n                    ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) &&\n                    (sc.state == SCE_ABAQUS_NUMBER)) {\n                // remain in number mode\n                state = DAT_LINE_VAL ;\n            } else if (sc.state == SCE_ABAQUS_STRING) {\n                // accept everything until a closing quote\n                if ( sc.ch == '\\'' || sc.ch == '\\\"' ) {\n                    sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                    state = DAT_LINE_VAL ;\n                }\n            } else if ( sc.ch == ',' ) {\n                sc.SetState(SCE_ABAQUS_OPERATOR) ;\n                state = DAT_LINE_COMMA ;\n            } else {\n                // anything else is an error\n                sc.SetState(SCE_ABAQUS_PROCESSOR) ;\n                state = ST_ERROR ;\n            }\n            break ;\n        case DAT_LINE_COMMA :\n            // a comma on a data line was seen\n            if ( sc.atLineEnd ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = LINE_END ;\n            } else if ( sc.ch == ' ' ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = DAT_LINE_COMMA ;\n            } else if (sc.ch == ',')  {\n                sc.SetState(SCE_ABAQUS_OPERATOR) ;\n                state = DAT_LINE_COMMA ;\n            } else if ( IsADigit(sc.ch) || (sc.ch == '-')|| (sc.ch == '.' && IsADigit(sc.chNext)) ) {\n                sc.SetState(SCE_ABAQUS_NUMBER) ;\n                state = DAT_LINE_VAL ;\n            } else if ( IsAKeywordChar(sc.ch) ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = DAT_LINE_VAL ;\n            } else if ( (sc.ch == '\\'') || (sc.ch == '\\\"') ) {\n                sc.SetState(SCE_ABAQUS_STRING) ;\n                state = DAT_LINE_VAL ;\n            } else {\n                sc.SetState(SCE_ABAQUS_PROCESSOR) ;\n                state = ST_ERROR ;\n            }\n            break ;\n        case COMMENT_LINE :\n            if ( sc.atLineEnd ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = LINE_END ;\n            }\n            break ;\n        case ST_ERROR :\n            if ( sc.atLineEnd ) {\n                sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                state = LINE_END ;\n            }\n            break ;\n        case LINE_END :\n            if ( sc.atLineEnd || sc.ch == ' ' ) {\n                // nothing changes\n                state = LINE_END ;\n            } else if ( sc.ch == '*' ) {\n                if ( sc.chNext == '*' ) {\n                    state = COMMENT_LINE ;\n                    sc.SetState(SCE_ABAQUS_COMMENT) ;\n                } else {\n                    state = KW_LINE_KW ;\n                    sc.SetState(SCE_ABAQUS_STARCOMMAND) ;\n                }\n            } else {\n                // it must be a data line, things are as if we are in DAT_LINE_COMMA\n                if ( sc.ch == ',' ) {\n                    sc.SetState(SCE_ABAQUS_OPERATOR) ;\n                    state = DAT_LINE_COMMA ;\n                } else if ( IsADigit(sc.ch) || (sc.ch == '-')|| (sc.ch == '.' && IsADigit(sc.chNext)) ) {\n                    sc.SetState(SCE_ABAQUS_NUMBER) ;\n                    state = DAT_LINE_VAL ;\n                } else if ( IsAKeywordChar(sc.ch) ) {\n                    sc.SetState(SCE_ABAQUS_DEFAULT) ;\n                    state = DAT_LINE_VAL ;\n                } else if ( (sc.ch == '\\'') || (sc.ch == '\\\"') ) {\n                    sc.SetState(SCE_ABAQUS_STRING) ;\n                    state = DAT_LINE_VAL ;\n                } else {\n                    sc.SetState(SCE_ABAQUS_PROCESSOR) ;\n                    state = ST_ERROR ;\n                }\n            }\n            break ;\n\t\t  }\n   }\n   sc.Complete();\n}\n\n//------------------------------------------------------------------------------\n// This copyied and modified from LexBasic.cxx\n//------------------------------------------------------------------------------\n\n/* Bits:\n * 1  - whitespace\n * 2  - operator\n * 4  - identifier\n * 8  - decimal digit\n * 16 - hex digit\n * 32 - bin digit\n */\nstatic int character_classification[128] =\n{\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  1,  0,  0,\n    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n    1,  2,  0,  2,  2,  2,  2,  2,  2,  2,  6,  2,  2,  2,  10, 6,\n    60, 60, 28, 28, 28, 28, 28, 28, 28, 28, 2,  2,  2,  2,  2,  2,\n    2,  20, 20, 20, 20, 20, 20, 4,  4,  4,  4,  4,  4,  4,  4,  4,\n    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  2,  2,  2,  2,  4,\n    2,  20, 20, 20, 20, 20, 20, 4,  4,  4,  4,  4,  4,  4,  4,  4,\n    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  2,  2,  2,  2,  0\n};\n\nstatic bool IsSpace(int c) {\n\treturn c < 128 && (character_classification[c] & 1);\n}\n\nstatic bool IsIdentifier(int c) {\n\treturn c < 128 && (character_classification[c] & 4);\n}\n\nstatic int LowerCase(int c)\n{\n\tif (c >= 'A' && c <= 'Z')\n\t\treturn 'a' + c - 'A';\n\treturn c;\n}\n\nstatic Sci_Position LineEnd(Sci_Position line, Accessor &styler)\n{\n    const Sci_Position docLines = styler.GetLine(styler.Length() - 1);  // Available last line\n    Sci_Position eol_pos ;\n    // if the line is the last line, the eol_pos is styler.Length()\n    // eol will contain a new line, or a virtual new line\n    if ( docLines == line )\n        eol_pos = styler.Length() ;\n    else\n        eol_pos = styler.LineStart(line + 1) - 1;\n    return eol_pos ;\n}\n\nstatic Sci_Position LineStart(Sci_Position line, Accessor &styler)\n{\n    return styler.LineStart(line) ;\n}\n\n// LineType\n//\n// bits determines the line type\n// 1  : data line\n// 2  : only whitespace\n// 3  : data line with only whitespace\n// 4  : keyword line\n// 5  : block open keyword line\n// 6  : block close keyword line\n// 7  : keyword line in error\n// 8  : comment line\nstatic int LineType(Sci_Position line, Accessor &styler) {\n    Sci_Position pos = LineStart(line, styler) ;\n    Sci_Position eol_pos = LineEnd(line, styler) ;\n\n    int c ;\n    char ch = ' ';\n\n    Sci_Position i = pos ;\n    while ( i < eol_pos ) {\n        c = styler.SafeGetCharAt(i);\n        ch = static_cast<char>(LowerCase(c));\n        // We can say something as soon as no whitespace\n        // was encountered\n        if ( !IsSpace(c) )\n            break ;\n        i++ ;\n    }\n\n    if ( i >= eol_pos ) {\n        // This is a whitespace line, currently\n        // classifies as data line\n        return 3 ;\n    }\n\n    if ( ch != '*' ) {\n        // This is a data line\n        return 1 ;\n    }\n\n    if ( i == eol_pos - 1 ) {\n        // Only a single *, error but make keyword line\n        return 4+3 ;\n    }\n\n    // This means we can have a second character\n    // if that is also a * this means a comment\n    // otherwise it is a keyword.\n    c = styler.SafeGetCharAt(i+1);\n    ch = static_cast<char>(LowerCase(c));\n    if ( ch == '*' ) {\n        return 8 ;\n    }\n\n    // At this point we know this is a keyword line\n    // the character at position i is a *\n    // it is not a comment line\n    char word[256] ;\n    int  wlen = 0;\n\n    word[wlen] = '*' ;\n\twlen++ ;\n\n    i++ ;\n    while ( (i < eol_pos) && (wlen < 255) ) {\n        c = styler.SafeGetCharAt(i);\n        ch = static_cast<char>(LowerCase(c));\n\n        if ( (!IsSpace(c)) && (!IsIdentifier(c)) )\n            break ;\n\n        if ( IsIdentifier(c) ) {\n            word[wlen] = ch ;\n\t\t\twlen++ ;\n\t\t}\n\n        i++ ;\n    }\n\n    word[wlen] = 0 ;\n\n    // Make a comparison\n\tif ( !strcmp(word, \"*step\") ||\n         !strcmp(word, \"*part\") ||\n         !strcmp(word, \"*instance\") ||\n         !strcmp(word, \"*assembly\")) {\n       return 4+1 ;\n    }\n\n\tif ( !strcmp(word, \"*endstep\") ||\n         !strcmp(word, \"*endpart\") ||\n         !strcmp(word, \"*endinstance\") ||\n         !strcmp(word, \"*endassembly\")) {\n       return 4+2 ;\n    }\n\n    return 4 ;\n}\n\nstatic void SafeSetLevel(Sci_Position line, int level, Accessor &styler)\n{\n    if ( line < 0 )\n        return ;\n\n    int mask = ((~SC_FOLDLEVELHEADERFLAG) | (~SC_FOLDLEVELWHITEFLAG));\n\n    if ( (level & mask) < 0 )\n        return ;\n\n    if ( styler.LevelAt(line) != level )\n        styler.SetLevel(line, level) ;\n}\n\nstatic void FoldABAQUSDoc(Sci_PositionU startPos, Sci_Position length, int,\nWordList *[], Accessor &styler) {\n    Sci_Position startLine = styler.GetLine(startPos) ;\n    Sci_Position endLine   = styler.GetLine(startPos+length-1) ;\n\n    // bool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n    // We want to deal with all the cases\n    // To know the correct indentlevel, we need to look back to the\n    // previous command line indentation level\n\t// order of formatting keyline datalines commentlines\n    Sci_Position beginData    = -1 ;\n    Sci_Position beginComment = -1 ;\n    Sci_Position prvKeyLine   = startLine ;\n    Sci_Position prvKeyLineTp =  0 ;\n\n    // Scan until we find the previous keyword line\n    // this will give us the level reference that we need\n    while ( prvKeyLine > 0 ) {\n        prvKeyLine-- ;\n        prvKeyLineTp = LineType(prvKeyLine, styler) ;\n        if ( prvKeyLineTp & 4 )\n            break ;\n    }\n\n    // Determine the base line level of all lines following\n    // the previous keyword\n    // new keyword lines are placed on this level\n    //if ( prvKeyLineTp & 4 ) {\n    int level = styler.LevelAt(prvKeyLine) & ~SC_FOLDLEVELHEADERFLAG ;\n    //}\n\n    // uncomment line below if weird behaviour continues\n    prvKeyLine = -1 ;\n\n    // Now start scanning over the lines.\n    for ( Sci_Position line = startLine; line <= endLine; line++ ) {\n        int lineType = LineType(line, styler) ;\n\n        // Check for comment line\n        if ( lineType == 8 ) {\n            if ( beginComment < 0 ) {\n                beginComment = line ;\n\t\t\t}\n        }\n\n        // Check for data line\n        if ( (lineType == 1) || (lineType == 3) ) {\n            if ( beginData < 0 ) {\n                if ( beginComment >= 0 ) {\n                    beginData = beginComment ;\n                } else {\n                    beginData = line ;\n                }\n            }\n\t\t\tbeginComment = -1 ;\n\t\t}\n\n        // Check for keywordline.\n        // As soon as a keyword line is encountered, we can set the\n        // levels of everything from the previous keyword line to this one\n        if ( lineType & 4 ) {\n            // this is a keyword, we can now place the previous keyword\n            // all its data lines and the remainder\n\n            // Write comments and data line\n            if ( beginComment < 0 ) {\n                beginComment = line ;\n\t\t\t}\n\n            if ( beginData < 0 ) {\n                beginData = beginComment ;\n\t\t\t\tif ( prvKeyLineTp != 5 )\n\t\t\t\t\tSafeSetLevel(prvKeyLine, level, styler) ;\n\t\t\t\telse\n\t\t\t\t\tSafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ;\n            } else {\n                SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ;\n            }\n\n            int datLevel = level + 1 ;\n\t\t\tif ( !(prvKeyLineTp & 4) ) {\n\t\t\t\tdatLevel = level ;\n\t\t\t}\n\n            for ( Sci_Position ll = beginData; ll < beginComment; ll++ )\n                SafeSetLevel(ll, datLevel, styler) ;\n\n            // The keyword we just found is going to be written at another level\n            // if we have a type 5 and type 6\n            if ( prvKeyLineTp == 5 ) {\n                level += 1 ;\n\t\t\t}\n\n            if ( prvKeyLineTp == 6 ) {\n                level -= 1 ;\n\t\t\t\tif ( level < 0 ) {\n\t\t\t\t\tlevel = 0 ;\n\t\t\t\t}\n            }\n\n            for ( Sci_Position lll = beginComment; lll < line; lll++ )\n                SafeSetLevel(lll, level, styler) ;\n\n            // wrap and reset\n            beginComment = -1 ;\n            beginData    = -1 ;\n            prvKeyLine   = line ;\n            prvKeyLineTp = lineType ;\n        }\n\n    }\n\n    if ( beginComment < 0 ) {\n        beginComment = endLine + 1 ;\n    } else {\n        // We need to find out whether this comment block is followed by\n        // a data line or a keyword line\n        const Sci_Position docLines = styler.GetLine(styler.Length() - 1);\n\n        for ( Sci_Position line = endLine + 1; line <= docLines; line++ ) {\n            Sci_Position lineType = LineType(line, styler) ;\n\n            if ( lineType != 8 ) {\n\t\t\t\tif ( !(lineType & 4) )  {\n\t\t\t\t\tbeginComment = endLine + 1 ;\n\t\t\t\t}\n                break ;\n\t\t\t}\n        }\n    }\n\n    if ( beginData < 0 ) {\n        beginData = beginComment ;\n\t\tif ( prvKeyLineTp != 5 )\n\t\t\tSafeSetLevel(prvKeyLine, level, styler) ;\n\t\telse\n\t\t\tSafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ;\n    } else {\n        SafeSetLevel(prvKeyLine, level | SC_FOLDLEVELHEADERFLAG, styler) ;\n    }\n\n    int datLevel = level + 1 ;\n\tif ( !(prvKeyLineTp & 4) ) {\n\t\tdatLevel = level ;\n\t}\n\n    for ( Sci_Position ll = beginData; ll < beginComment; ll++ )\n        SafeSetLevel(ll, datLevel, styler) ;\n\n    if ( prvKeyLineTp == 5 ) {\n        level += 1 ;\n    }\n\n    if ( prvKeyLineTp == 6 ) {\n        level -= 1 ;\n    }\n    for ( Sci_Position m = beginComment; m <= endLine; m++ )\n        SafeSetLevel(m, level, styler) ;\n}\n\nstatic const char * const abaqusWordListDesc[] = {\n    \"processors\",\n    \"commands\",\n    \"slashommands\",\n    \"starcommands\",\n    \"arguments\",\n    \"functions\",\n    0\n};\n\nLexerModule lmAbaqus(SCLEX_ABAQUS, ColouriseABAQUSDoc, \"abaqus\", FoldABAQUSDoc, abaqusWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexAda.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexAda.cxx\n ** Lexer for Ada 95\n **/\n// Copyright 2002 by Sergey Koshcheyev <sergey.k@seznam.cz>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/*\n * Interface\n */\n\nstatic void ColouriseDocument(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    int initStyle,\n    WordList *keywordlists[],\n    Accessor &styler);\n\nstatic const char * const adaWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmAda(SCLEX_ADA, ColouriseDocument, \"ada\", NULL, adaWordListDesc);\n\n/*\n * Implementation\n */\n\n// Functions that have apostropheStartsAttribute as a parameter set it according to whether\n// an apostrophe encountered after processing the current token will start an attribute or\n// a character literal.\nstatic void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseComment(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL);\nstatic void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute);\nstatic void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseString(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseWhiteSpace(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseWord(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute);\n\nstatic inline bool IsDelimiterCharacter(int ch);\nstatic inline bool IsSeparatorOrDelimiterCharacter(int ch);\nstatic bool IsValidIdentifier(const std::string& identifier);\nstatic bool IsValidNumber(const std::string& number);\nstatic inline bool IsWordStartCharacter(int ch);\nstatic inline bool IsWordCharacter(int ch);\n\nstatic void ColouriseCharacter(StyleContext& sc, bool& apostropheStartsAttribute) {\n\tapostropheStartsAttribute = true;\n\n\tsc.SetState(SCE_ADA_CHARACTER);\n\n\t// Skip the apostrophe and one more character (so that '' is shown as non-terminated and '''\n\t// is handled correctly)\n\tsc.Forward();\n\tsc.Forward();\n\n\tColouriseContext(sc, '\\'', SCE_ADA_CHARACTEREOL);\n}\n\nstatic void ColouriseContext(StyleContext& sc, char chEnd, int stateEOL) {\n\twhile (!sc.atLineEnd && !sc.Match(chEnd)) {\n\t\tsc.Forward();\n\t}\n\n\tif (!sc.atLineEnd) {\n\t\tsc.ForwardSetState(SCE_ADA_DEFAULT);\n\t} else {\n\t\tsc.ChangeState(stateEOL);\n\t}\n}\n\nstatic void ColouriseComment(StyleContext& sc, bool& /*apostropheStartsAttribute*/) {\n\t// Apostrophe meaning is not changed, but the parameter is present for uniformity\n\n\tsc.SetState(SCE_ADA_COMMENTLINE);\n\n\twhile (!sc.atLineEnd) {\n\t\tsc.Forward();\n\t}\n}\n\nstatic void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute) {\n\tapostropheStartsAttribute = sc.Match (')');\n\tsc.SetState(SCE_ADA_DELIMITER);\n\tsc.ForwardSetState(SCE_ADA_DEFAULT);\n}\n\nstatic void ColouriseLabel(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute) {\n\tapostropheStartsAttribute = false;\n\n\tsc.SetState(SCE_ADA_LABEL);\n\n\t// Skip \"<<\"\n\tsc.Forward();\n\tsc.Forward();\n\n\tstd::string identifier;\n\n\twhile (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) {\n\t\tidentifier += static_cast<char>(tolower(sc.ch));\n\t\tsc.Forward();\n\t}\n\n\t// Skip \">>\"\n\tif (sc.Match('>', '>')) {\n\t\tsc.Forward();\n\t\tsc.Forward();\n\t} else {\n\t\tsc.ChangeState(SCE_ADA_ILLEGAL);\n\t}\n\n\t// If the name is an invalid identifier or a keyword, then make it invalid label\n\tif (!IsValidIdentifier(identifier) || keywords.InList(identifier.c_str())) {\n\t\tsc.ChangeState(SCE_ADA_ILLEGAL);\n\t}\n\n\tsc.SetState(SCE_ADA_DEFAULT);\n\n}\n\nstatic void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute) {\n\tapostropheStartsAttribute = true;\n\n\tstd::string number;\n\tsc.SetState(SCE_ADA_NUMBER);\n\n\t// Get all characters up to a delimiter or a separator, including points, but excluding\n\t// double points (ranges).\n\twhile (!IsSeparatorOrDelimiterCharacter(sc.ch) || (sc.ch == '.' && sc.chNext != '.')) {\n\t\tnumber += static_cast<char>(sc.ch);\n\t\tsc.Forward();\n\t}\n\n\t// Special case: exponent with sign\n\tif ((sc.chPrev == 'e' || sc.chPrev == 'E') &&\n\t        (sc.ch == '+' || sc.ch == '-')) {\n\t\tnumber += static_cast<char>(sc.ch);\n\t\tsc.Forward ();\n\n\t\twhile (!IsSeparatorOrDelimiterCharacter(sc.ch)) {\n\t\t\tnumber += static_cast<char>(sc.ch);\n\t\t\tsc.Forward();\n\t\t}\n\t}\n\n\tif (!IsValidNumber(number)) {\n\t\tsc.ChangeState(SCE_ADA_ILLEGAL);\n\t}\n\n\tsc.SetState(SCE_ADA_DEFAULT);\n}\n\nstatic void ColouriseString(StyleContext& sc, bool& apostropheStartsAttribute) {\n\tapostropheStartsAttribute = true;\n\n\tsc.SetState(SCE_ADA_STRING);\n\tsc.Forward();\n\n\tColouriseContext(sc, '\"', SCE_ADA_STRINGEOL);\n}\n\nstatic void ColouriseWhiteSpace(StyleContext& sc, bool& /*apostropheStartsAttribute*/) {\n\t// Apostrophe meaning is not changed, but the parameter is present for uniformity\n\tsc.SetState(SCE_ADA_DEFAULT);\n\tsc.ForwardSetState(SCE_ADA_DEFAULT);\n}\n\nstatic void ColouriseWord(StyleContext& sc, WordList& keywords, bool& apostropheStartsAttribute) {\n\tapostropheStartsAttribute = true;\n\tsc.SetState(SCE_ADA_IDENTIFIER);\n\n\tstd::string word;\n\n\twhile (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) {\n\t\tword += static_cast<char>(tolower(sc.ch));\n\t\tsc.Forward();\n\t}\n\n\tif (!IsValidIdentifier(word)) {\n\t\tsc.ChangeState(SCE_ADA_ILLEGAL);\n\n\t} else if (keywords.InList(word.c_str())) {\n\t\tsc.ChangeState(SCE_ADA_WORD);\n\n\t\tif (word != \"all\") {\n\t\t\tapostropheStartsAttribute = false;\n\t\t}\n\t}\n\n\tsc.SetState(SCE_ADA_DEFAULT);\n}\n\n//\n// ColouriseDocument\n//\n\nstatic void ColouriseDocument(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    int initStyle,\n    WordList *keywordlists[],\n    Accessor &styler) {\n\tWordList &keywords = *keywordlists[0];\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tbool apostropheStartsAttribute = (styler.GetLineState(lineCurrent) & 1) != 0;\n\n\twhile (sc.More()) {\n\t\tif (sc.atLineEnd) {\n\t\t\t// Go to the next line\n\t\t\tsc.Forward();\n\t\t\tlineCurrent++;\n\n\t\t\t// Remember the line state for future incremental lexing\n\t\t\tstyler.SetLineState(lineCurrent, apostropheStartsAttribute);\n\n\t\t\t// Don't continue any styles on the next line\n\t\t\tsc.SetState(SCE_ADA_DEFAULT);\n\t\t}\n\n\t\t// Comments\n\t\tif (sc.Match('-', '-')) {\n\t\t\tColouriseComment(sc, apostropheStartsAttribute);\n\n\t\t// Strings\n\t\t} else if (sc.Match('\"')) {\n\t\t\tColouriseString(sc, apostropheStartsAttribute);\n\n\t\t// Characters\n\t\t} else if (sc.Match('\\'') && !apostropheStartsAttribute) {\n\t\t\tColouriseCharacter(sc, apostropheStartsAttribute);\n\n\t\t// Labels\n\t\t} else if (sc.Match('<', '<')) {\n\t\t\tColouriseLabel(sc, keywords, apostropheStartsAttribute);\n\n\t\t// Whitespace\n\t\t} else if (IsASpace(sc.ch)) {\n\t\t\tColouriseWhiteSpace(sc, apostropheStartsAttribute);\n\n\t\t// Delimiters\n\t\t} else if (IsDelimiterCharacter(sc.ch)) {\n\t\t\tColouriseDelimiter(sc, apostropheStartsAttribute);\n\n\t\t// Numbers\n\t\t} else if (IsADigit(sc.ch) || sc.ch == '#') {\n\t\t\tColouriseNumber(sc, apostropheStartsAttribute);\n\n\t\t// Keywords or identifiers\n\t\t} else {\n\t\t\tColouriseWord(sc, keywords, apostropheStartsAttribute);\n\t\t}\n\t}\n\n\tsc.Complete();\n}\n\nstatic inline bool IsDelimiterCharacter(int ch) {\n\tswitch (ch) {\n\tcase '&':\n\tcase '\\'':\n\tcase '(':\n\tcase ')':\n\tcase '*':\n\tcase '+':\n\tcase ',':\n\tcase '-':\n\tcase '.':\n\tcase '/':\n\tcase ':':\n\tcase ';':\n\tcase '<':\n\tcase '=':\n\tcase '>':\n\tcase '|':\n\t\treturn true;\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nstatic inline bool IsSeparatorOrDelimiterCharacter(int ch) {\n\treturn IsASpace(ch) || IsDelimiterCharacter(ch);\n}\n\nstatic bool IsValidIdentifier(const std::string& identifier) {\n\t// First character can't be '_', so initialize the flag to true\n\tbool lastWasUnderscore = true;\n\n\tsize_t length = identifier.length();\n\n\t// Zero-length identifiers are not valid (these can occur inside labels)\n\tif (length == 0) {\n\t\treturn false;\n\t}\n\n\t// Check for valid character at the start\n\tif (!IsWordStartCharacter(identifier[0])) {\n\t\treturn false;\n\t}\n\n\t// Check for only valid characters and no double underscores\n\tfor (size_t i = 0; i < length; i++) {\n\t\tif (!IsWordCharacter(identifier[i]) ||\n\t\t        (identifier[i] == '_' && lastWasUnderscore)) {\n\t\t\treturn false;\n\t\t}\n\t\tlastWasUnderscore = identifier[i] == '_';\n\t}\n\n\t// Check for underscore at the end\n\tif (lastWasUnderscore == true) {\n\t\treturn false;\n\t}\n\n\t// All checks passed\n\treturn true;\n}\n\nstatic bool IsValidNumber(const std::string& number) {\n\tsize_t hashPos = number.find(\"#\");\n\tbool seenDot = false;\n\n\tsize_t i = 0;\n\tsize_t length = number.length();\n\n\tif (length == 0)\n\t\treturn false; // Just in case\n\n\t// Decimal number\n\tif (hashPos == std::string::npos) {\n\t\tbool canBeSpecial = false;\n\n\t\tfor (; i < length; i++) {\n\t\t\tif (number[i] == '_') {\n\t\t\t\tif (!canBeSpecial) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcanBeSpecial = false;\n\t\t\t} else if (number[i] == '.') {\n\t\t\t\tif (!canBeSpecial || seenDot) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcanBeSpecial = false;\n\t\t\t\tseenDot = true;\n\t\t\t} else if (IsADigit(number[i])) {\n\t\t\t\tcanBeSpecial = true;\n\t\t\t} else {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!canBeSpecial)\n\t\t\treturn false;\n\t} else {\n\t\t// Based number\n\t\tbool canBeSpecial = false;\n\t\tint base = 0;\n\n\t\t// Parse base\n\t\tfor (; i < length; i++) {\n\t\t\tint ch = number[i];\n\t\t\tif (ch == '_') {\n\t\t\t\tif (!canBeSpecial)\n\t\t\t\t\treturn false;\n\t\t\t\tcanBeSpecial = false;\n\t\t\t} else if (IsADigit(ch)) {\n\t\t\t\tbase = base * 10 + (ch - '0');\n\t\t\t\tif (base > 16)\n\t\t\t\t\treturn false;\n\t\t\t\tcanBeSpecial = true;\n\t\t\t} else if (ch == '#' && canBeSpecial) {\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (base < 2)\n\t\t\treturn false;\n\t\tif (i == length)\n\t\t\treturn false;\n\n\t\ti++; // Skip over '#'\n\n\t\t// Parse number\n\t\tcanBeSpecial = false;\n\n\t\tfor (; i < length; i++) {\n\t\t\tint ch = tolower(number[i]);\n\n\t\t\tif (ch == '_') {\n\t\t\t\tif (!canBeSpecial) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcanBeSpecial = false;\n\n\t\t\t} else if (ch == '.') {\n\t\t\t\tif (!canBeSpecial || seenDot) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcanBeSpecial = false;\n\t\t\t\tseenDot = true;\n\n\t\t\t} else if (IsADigit(ch)) {\n\t\t\t\tif (ch - '0' >= base) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcanBeSpecial = true;\n\n\t\t\t} else if (ch >= 'a' && ch <= 'f') {\n\t\t\t\tif (ch - 'a' + 10 >= base) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcanBeSpecial = true;\n\n\t\t\t} else if (ch == '#' && canBeSpecial) {\n\t\t\t\tbreak;\n\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (i == length) {\n\t\t\treturn false;\n\t\t}\n\n\t\ti++;\n\t}\n\n\t// Exponent (optional)\n\tif (i < length) {\n\t\tif (number[i] != 'e' && number[i] != 'E')\n\t\t\treturn false;\n\n\t\ti++; // Move past 'E'\n\n\t\tif (i == length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (number[i] == '+')\n\t\t\ti++;\n\t\telse if (number[i] == '-') {\n\t\t\tif (seenDot) {\n\t\t\t\ti++;\n\t\t\t} else {\n\t\t\t\treturn false; // Integer literals should not have negative exponents\n\t\t\t}\n\t\t}\n\n\t\tif (i == length) {\n\t\t\treturn false;\n\t\t}\n\n\t\tbool canBeSpecial = false;\n\n\t\tfor (; i < length; i++) {\n\t\t\tif (number[i] == '_') {\n\t\t\t\tif (!canBeSpecial) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tcanBeSpecial = false;\n\t\t\t} else if (IsADigit(number[i])) {\n\t\t\t\tcanBeSpecial = true;\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tif (!canBeSpecial)\n\t\t\treturn false;\n\t}\n\n\t// if i == length, number was parsed successfully.\n\treturn i == length;\n}\n\nstatic inline bool IsWordCharacter(int ch) {\n\treturn IsWordStartCharacter(ch) || IsADigit(ch);\n}\n\nstatic inline bool IsWordStartCharacter(int ch) {\n\treturn (IsASCII(ch) && isalpha(ch)) || ch == '_';\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexAsm.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexAsm.cxx\n ** Lexer for Assembler, just for the MASM syntax\n ** Written by The Black Horus\n ** Enhancements and NASM stuff by Kein-Hong Man, 2003-10\n ** SCE_ASM_COMMENTBLOCK and SCE_ASM_CHARACTER are for future GNU as colouring\n ** Converted to lexer object and added further folding features/properties by \"Udo Lechner\" <dlchnr(at)gmx(dot)net>\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <map>\n#include <set>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' ||\n\t\tch == '_' || ch == '?');\n}\n\nstatic inline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' ||\n\t\tch == '%' || ch == '@' || ch == '$' || ch == '?');\n}\n\nstatic inline bool IsAsmOperator(const int ch) {\n\tif ((ch < 0x80) && (isalnum(ch)))\n\t\treturn false;\n\t// '.' left out as it is used to make up numbers\n\tif (ch == '*' || ch == '/' || ch == '-' || ch == '+' ||\n\t\tch == '(' || ch == ')' || ch == '=' || ch == '^' ||\n\t\tch == '[' || ch == ']' || ch == '<' || ch == '&' ||\n\t\tch == '>' || ch == ',' || ch == '|' || ch == '~' ||\n\t\tch == '%' || ch == ':')\n\t\treturn true;\n\treturn false;\n}\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_ASM_COMMENTDIRECTIVE || style == SCE_ASM_COMMENTBLOCK;\n}\n\nstatic inline int LowerCase(int c) {\n\tif (c >= 'A' && c <= 'Z')\n\t\treturn 'a' + c - 'A';\n\treturn c;\n}\n\n// An individual named option for use in an OptionSet\n\n// Options used for LexerAsm\nstruct OptionsAsm {\n\tstd::string delimiter;\n\tbool fold;\n\tbool foldSyntaxBased;\n\tbool foldCommentMultiline;\n\tbool foldCommentExplicit;\n\tstd::string foldExplicitStart;\n\tstd::string foldExplicitEnd;\n\tbool foldExplicitAnywhere;\n\tbool foldCompact;\n\tOptionsAsm() {\n\t\tdelimiter = \"\";\n\t\tfold = false;\n\t\tfoldSyntaxBased = true;\n\t\tfoldCommentMultiline = false;\n\t\tfoldCommentExplicit = false;\n\t\tfoldExplicitStart = \"\";\n\t\tfoldExplicitEnd   = \"\";\n\t\tfoldExplicitAnywhere = false;\n\t\tfoldCompact = true;\n\t}\n};\n\nstatic const char * const asmWordListDesc[] = {\n\t\"CPU instructions\",\n\t\"FPU instructions\",\n\t\"Registers\",\n\t\"Directives\",\n\t\"Directive operands\",\n\t\"Extended instructions\",\n\t\"Directives4Foldstart\",\n\t\"Directives4Foldend\",\n\t0\n};\n\nstruct OptionSetAsm : public OptionSet<OptionsAsm> {\n\tOptionSetAsm() {\n\t\tDefineProperty(\"lexer.asm.comment.delimiter\", &OptionsAsm::delimiter,\n\t\t\t\"Character used for COMMENT directive's delimiter, replacing the standard \\\"~\\\".\");\n\n\t\tDefineProperty(\"fold\", &OptionsAsm::fold);\n\n\t\tDefineProperty(\"fold.asm.syntax.based\", &OptionsAsm::foldSyntaxBased,\n\t\t\t\"Set this property to 0 to disable syntax based folding.\");\n\n\t\tDefineProperty(\"fold.asm.comment.multiline\", &OptionsAsm::foldCommentMultiline,\n\t\t\t\"Set this property to 1 to enable folding multi-line comments.\");\n\n\t\tDefineProperty(\"fold.asm.comment.explicit\", &OptionsAsm::foldCommentExplicit,\n\t\t\t\"This option enables folding explicit fold points when using the Asm lexer. \"\n\t\t\t\"Explicit fold points allows adding extra folding by placing a ;{ comment at the start and a ;} \"\n\t\t\t\"at the end of a section that should fold.\");\n\n\t\tDefineProperty(\"fold.asm.explicit.start\", &OptionsAsm::foldExplicitStart,\n\t\t\t\"The string to use for explicit fold start points, replacing the standard ;{.\");\n\n\t\tDefineProperty(\"fold.asm.explicit.end\", &OptionsAsm::foldExplicitEnd,\n\t\t\t\"The string to use for explicit fold end points, replacing the standard ;}.\");\n\n\t\tDefineProperty(\"fold.asm.explicit.anywhere\", &OptionsAsm::foldExplicitAnywhere,\n\t\t\t\"Set this property to 1 to enable explicit fold points anywhere, not just in line comments.\");\n\n\t\tDefineProperty(\"fold.compact\", &OptionsAsm::foldCompact);\n\n\t\tDefineWordListSets(asmWordListDesc);\n\t}\n};\n\nclass LexerAsm : public ILexer {\n\tWordList cpuInstruction;\n\tWordList mathInstruction;\n\tWordList registers;\n\tWordList directive;\n\tWordList directiveOperand;\n\tWordList extInstruction;\n\tWordList directives4foldstart;\n\tWordList directives4foldend;\n\tOptionsAsm options;\n\tOptionSetAsm osAsm;\n\tint commentChar;\npublic:\n\tLexerAsm(int commentChar_) {\n\t\tcommentChar = commentChar_;\n\t}\n\tvirtual ~LexerAsm() {\n\t}\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tint SCI_METHOD Version() const {\n\t\treturn lvOriginal;\n\t}\n\tconst char * SCI_METHOD PropertyNames() {\n\t\treturn osAsm.PropertyNames();\n\t}\n\tint SCI_METHOD PropertyType(const char *name) {\n\t\treturn osAsm.PropertyType(name);\n\t}\n\tconst char * SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn osAsm.DescribeProperty(name);\n\t}\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tconst char * SCI_METHOD DescribeWordListSets() {\n\t\treturn osAsm.DescribeWordListSets();\n\t}\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\n\tstatic ILexer *LexerFactoryAsm() {\n\t\treturn new LexerAsm(';');\n\t}\n\n\tstatic ILexer *LexerFactoryAs() {\n\t\treturn new LexerAsm('#');\n\t}\n};\n\nSci_Position SCI_METHOD LexerAsm::PropertySet(const char *key, const char *val) {\n\tif (osAsm.PropertySet(&options, key, val)) {\n\t\treturn 0;\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerAsm::WordListSet(int n, const char *wl) {\n\tWordList *wordListN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\twordListN = &cpuInstruction;\n\t\tbreak;\n\tcase 1:\n\t\twordListN = &mathInstruction;\n\t\tbreak;\n\tcase 2:\n\t\twordListN = &registers;\n\t\tbreak;\n\tcase 3:\n\t\twordListN = &directive;\n\t\tbreak;\n\tcase 4:\n\t\twordListN = &directiveOperand;\n\t\tbreak;\n\tcase 5:\n\t\twordListN = &extInstruction;\n\t\tbreak;\n\tcase 6:\n\t\twordListN = &directives4foldstart;\n\t\tbreak;\n\tcase 7:\n\t\twordListN = &directives4foldend;\n\t\tbreak;\n\t}\n\tSci_Position firstModification = -1;\n\tif (wordListN) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nvoid SCI_METHOD LexerAsm::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tLexAccessor styler(pAccess);\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_ASM_STRINGEOL)\n\t\tinitStyle = SCE_ASM_DEFAULT;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward())\n\t{\n\n\t\t// Prevent SCE_ASM_STRINGEOL from leaking back to previous line\n\t\tif (sc.atLineStart && (sc.state == SCE_ASM_STRING)) {\n\t\t\tsc.SetState(SCE_ASM_STRING);\n\t\t} else if (sc.atLineStart && (sc.state == SCE_ASM_CHARACTER)) {\n\t\t\tsc.SetState(SCE_ASM_CHARACTER);\n\t\t}\n\n\t\t// Handle line continuation generically.\n\t\tif (sc.ch == '\\\\') {\n\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_ASM_OPERATOR) {\n\t\t\tif (!IsAsmOperator(sc.ch)) {\n\t\t\t    sc.SetState(SCE_ASM_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ASM_NUMBER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_ASM_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ASM_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch) ) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tbool IsDirective = false;\n\n\t\t\t\tif (cpuInstruction.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ASM_CPUINSTRUCTION);\n\t\t\t\t} else if (mathInstruction.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ASM_MATHINSTRUCTION);\n\t\t\t\t} else if (registers.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ASM_REGISTER);\n\t\t\t\t}  else if (directive.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ASM_DIRECTIVE);\n\t\t\t\t\tIsDirective = true;\n\t\t\t\t} else if (directiveOperand.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ASM_DIRECTIVEOPERAND);\n\t\t\t\t} else if (extInstruction.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ASM_EXTINSTRUCTION);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_ASM_DEFAULT);\n\t\t\t\tif (IsDirective && !strcmp(s, \"comment\")) {\n\t\t\t\t\tchar delimiter = options.delimiter.empty() ? '~' : options.delimiter.c_str()[0];\n\t\t\t\t\twhile (IsASpaceOrTab(sc.ch) && !sc.atLineEnd) {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ASM_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\tif (sc.ch == delimiter) {\n\t\t\t\t\t\tsc.SetState(SCE_ASM_COMMENTDIRECTIVE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_ASM_COMMENTDIRECTIVE) {\n\t\t\tchar delimiter = options.delimiter.empty() ? '~' : options.delimiter.c_str()[0];\n\t\t\tif (sc.ch == delimiter) {\n\t\t\t\twhile (!sc.atLineEnd) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_ASM_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ASM_COMMENT ) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_ASM_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ASM_STRING) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_ASM_DEFAULT);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_ASM_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_ASM_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ASM_CHARACTER) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.ForwardSetState(SCE_ASM_DEFAULT);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_ASM_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_ASM_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_ASM_DEFAULT) {\n\t\t\tif (sc.ch == commentChar){\n\t\t\t\tsc.SetState(SCE_ASM_COMMENT);\n\t\t\t} else if (IsASCII(sc.ch) && (isdigit(sc.ch) || (sc.ch == '.' && IsASCII(sc.chNext) && isdigit(sc.chNext)))) {\n\t\t\t\tsc.SetState(SCE_ASM_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_ASM_IDENTIFIER);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_ASM_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_ASM_CHARACTER);\n\t\t\t} else if (IsAsmOperator(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_ASM_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t}\n\tsc.Complete();\n}\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"else\".\n\nvoid SCI_METHOD LexerAsm::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\n\tif (!options.fold)\n\t\treturn;\n\n\tLexAccessor styler(pAccess);\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tchar word[100];\n\tint wordlen = 0;\n\tconst bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty();\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (options.foldCommentMultiline && IsStreamCommentStyle(style)) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (options.foldCommentExplicit && ((style == SCE_ASM_COMMENT) || options.foldExplicitAnywhere)) {\n\t\t\tif (userDefinedFoldMarkers) {\n\t\t\t\tif (styler.Match(i, options.foldExplicitStart.c_str())) {\n \t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (styler.Match(i, options.foldExplicitEnd.c_str())) {\n \t\t\t\t\tlevelNext--;\n \t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (ch == ';') {\n\t\t\t\t\tif (chNext == '{') {\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t} else if (chNext == '}') {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t}\n\t\t\t\t}\n \t\t\t}\n \t\t}\n\t\tif (options.foldSyntaxBased && (style == SCE_ASM_DIRECTIVE)) {\n\t\t\tword[wordlen++] = static_cast<char>(LowerCase(ch));\n\t\t\tif (wordlen == 100) {                   // prevent overflow\n\t\t\t\tword[0] = '\\0';\n\t\t\t\twordlen = 1;\n\t\t\t}\n\t\t\tif (styleNext != SCE_ASM_DIRECTIVE) {   // reading directive ready\n\t\t\t\tword[wordlen] = '\\0';\n\t\t\t\twordlen = 0;\n\t\t\t\tif (directives4foldstart.InList(word)) {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (directives4foldend.InList(word)){\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\t\tif (atEOL || (i == endPos-1)) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && options.foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tif (atEOL && (i == static_cast<Sci_PositionU>(styler.Length() - 1))) {\n\t\t\t\t// There is an empty line at end of file so give it same level and empty\n\t\t\t\tstyler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG);\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\t\t}\n\t}\n}\n\nLexerModule lmAsm(SCLEX_ASM, LexerAsm::LexerFactoryAsm, \"asm\", asmWordListDesc);\nLexerModule lmAs(SCLEX_AS, LexerAsm::LexerFactoryAs, \"as\", asmWordListDesc);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexAsn1.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexAsn1.cxx\n ** Lexer for ASN.1\n **/\n// Copyright 2004 by Herr Pfarrer rpfarrer <at> yahoo <dot> de\n// Last Updated: 20/07/2004\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Some char test functions\nstatic bool isAsn1Number(int ch)\n{\n\treturn (ch >= '0' && ch <= '9');\n}\n\nstatic bool isAsn1Letter(int ch)\n{\n\treturn (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');\n}\n\nstatic bool isAsn1Char(int ch)\n{\n\treturn (ch == '-' ) || isAsn1Number(ch) || isAsn1Letter (ch);\n}\n\n//\n//\tFunction determining the color of a given code portion\n//\tBased on a \"state\"\n//\nstatic void ColouriseAsn1Doc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordLists[], Accessor &styler)\n{\n\t// The keywords\n\tWordList &Keywords = *keywordLists[0];\n\tWordList &Attributes = *keywordLists[1];\n\tWordList &Descriptors = *keywordLists[2];\n\tWordList &Types = *keywordLists[3];\n\n\t// Parse the whole buffer character by character using StyleContext\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tfor (; sc.More(); sc.Forward())\n\t{\n\t\t// The state engine\n\t\tswitch (sc.state)\n\t\t{\n\t\tcase SCE_ASN1_DEFAULT:\t\t// Plain characters\nasn1_default:\n\t\t\tif (sc.ch == '-' && sc.chNext == '-')\n\t\t\t\t// A comment begins here\n\t\t\t\tsc.SetState(SCE_ASN1_COMMENT);\n\t\t\telse if (sc.ch == '\"')\n\t\t\t\t// A string begins here\n\t\t\t\tsc.SetState(SCE_ASN1_STRING);\n\t\t\telse if (isAsn1Number (sc.ch))\n\t\t\t\t// A number starts here (identifier should start with a letter in ASN.1)\n\t\t\t\tsc.SetState(SCE_ASN1_SCALAR);\n\t\t\telse if (isAsn1Char (sc.ch))\n\t\t\t\t// An identifier starts here (identifier always start with a letter)\n\t\t\t\tsc.SetState(SCE_ASN1_IDENTIFIER);\n\t\t\telse if (sc.ch == ':')\n\t\t\t\t// A ::= operator starts here\n\t\t\t\tsc.SetState(SCE_ASN1_OPERATOR);\n\t\t\tbreak;\n\t\tcase SCE_ASN1_COMMENT:\t\t// A comment\n\t\t\tif (sc.ch == '\\r' || sc.ch == '\\n')\n\t\t\t\t// A comment ends here\n\t\t\t\tsc.SetState(SCE_ASN1_DEFAULT);\n\t\t\tbreak;\n\t\tcase SCE_ASN1_IDENTIFIER:\t// An identifier (keyword, attribute, descriptor or type)\n\t\t\tif (!isAsn1Char (sc.ch))\n\t\t\t{\n\t\t\t\t// The end of identifier is here: we can look for it in lists by now and change its state\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tif (Keywords.InList(s))\n\t\t\t\t\t// It's a keyword, change its state\n\t\t\t\t\tsc.ChangeState(SCE_ASN1_KEYWORD);\n\t\t\t\telse if (Attributes.InList(s))\n\t\t\t\t\t// It's an attribute, change its state\n\t\t\t\t\tsc.ChangeState(SCE_ASN1_ATTRIBUTE);\n\t\t\t\telse if (Descriptors.InList(s))\n\t\t\t\t\t// It's a descriptor, change its state\n\t\t\t\t\tsc.ChangeState(SCE_ASN1_DESCRIPTOR);\n\t\t\t\telse if (Types.InList(s))\n\t\t\t\t\t// It's a type, change its state\n\t\t\t\t\tsc.ChangeState(SCE_ASN1_TYPE);\n\n\t\t\t\t// Set to default now\n\t\t\t\tsc.SetState(SCE_ASN1_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_ASN1_STRING:\t\t// A string delimited by \"\"\n\t\t\tif (sc.ch == '\"')\n\t\t\t{\n\t\t\t\t// A string ends here\n\t\t\t\tsc.ForwardSetState(SCE_ASN1_DEFAULT);\n\n\t\t\t\t// To correctly manage a char sticking to the string quote\n\t\t\t\tgoto asn1_default;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_ASN1_SCALAR:\t\t// A plain number\n\t\t\tif (!isAsn1Number (sc.ch))\n\t\t\t\t// A number ends here\n\t\t\t\tsc.SetState(SCE_ASN1_DEFAULT);\n\t\t\tbreak;\n\t\tcase SCE_ASN1_OPERATOR:\t\t// The affectation operator ::= and wath follows (eg: ::= { org 6 } OID or ::= 12 trap)\n\t\t\tif (sc.ch == '{')\n\t\t\t{\n\t\t\t\t// An OID definition starts here: enter the sub loop\n\t\t\t\tfor (; sc.More(); sc.Forward())\n\t\t\t\t{\n\t\t\t\t\tif (isAsn1Number (sc.ch) && (!isAsn1Char (sc.chPrev) || isAsn1Number (sc.chPrev)))\n\t\t\t\t\t\t// The OID number is highlighted\n\t\t\t\t\t\tsc.SetState(SCE_ASN1_OID);\n\t\t\t\t\telse if (isAsn1Char (sc.ch))\n\t\t\t\t\t\t// The OID parent identifier is plain\n\t\t\t\t\t\tsc.SetState(SCE_ASN1_IDENTIFIER);\n\t\t\t\t\telse\n\t\t\t\t\t\tsc.SetState(SCE_ASN1_DEFAULT);\n\n\t\t\t\t\tif (sc.ch == '}')\n\t\t\t\t\t\t// Here ends the OID and the operator sub loop: go back to main loop\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (isAsn1Number (sc.ch))\n\t\t\t{\n\t\t\t\t// A trap number definition starts here: enter the sub loop\n\t\t\t\tfor (; sc.More(); sc.Forward())\n\t\t\t\t{\n\t\t\t\t\tif (isAsn1Number (sc.ch))\n\t\t\t\t\t\t// The trap number is highlighted\n\t\t\t\t\t\tsc.SetState(SCE_ASN1_OID);\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\t// The number ends here: go back to main loop\n\t\t\t\t\t\tsc.SetState(SCE_ASN1_DEFAULT);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (sc.ch != ':' && sc.ch != '=' && sc.ch != ' ')\n\t\t\t\t// The operator doesn't imply an OID definition nor a trap, back to main loop\n\t\t\t\tgoto asn1_default; // To be sure to handle actually the state change\n\t\t\tbreak;\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldAsn1Doc(Sci_PositionU, Sci_Position, int, WordList *[], Accessor &styler)\n{\n\t// No folding enabled, no reason to continue...\n\tif( styler.GetPropertyInt(\"fold\") == 0 )\n\t\treturn;\n\n\t// No folding implemented: doesn't make sense for ASN.1\n}\n\nstatic const char * const asn1WordLists[] = {\n\t\"Keywords\",\n\t\"Attributes\",\n\t\"Descriptors\",\n\t\"Types\",\n\t0, };\n\n\nLexerModule lmAsn1(SCLEX_ASN1, ColouriseAsn1Doc, \"asn1\", FoldAsn1Doc, asn1WordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexBaan.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexBaan.cxx\n** Lexer for Baan.\n** Based heavily on LexCPP.cxx\n**/\n// Copyright 2001- by Vamsi Potluru <vamsi@who.net> & Praveen Ambekar <ambekarpraveen@yahoo.com>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// C standard library\n#include <stdlib.h>\n#include <string.h>\n\n// C++ wrappers of C standard library\n#include <cassert>\n\n// C++ standard library\n#include <string>\n#include <map>\n\n// Scintilla headers\n\n// Non-platform-specific headers\n\n// include\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n// lexlib\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n# ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n# endif\n\nnamespace {\n// Use an unnamed namespace to protect the functions and classes from name conflicts\n\n// Options used for LexerBaan\nstruct OptionsBaan {\n\tbool fold;\n\tbool foldComment;\n\tbool foldPreprocessor;\n\tbool foldCompact;\n\tbool baanFoldSyntaxBased;\n\tbool baanFoldKeywordsBased;\n\tbool baanFoldSections;\n\tbool baanFoldInnerLevel;\n\tbool baanStylingWithinPreprocessor;\n\tOptionsBaan() {\n\t\tfold = false;\n\t\tfoldComment = false;\n\t\tfoldPreprocessor = false;\n\t\tfoldCompact = false;\n\t\tbaanFoldSyntaxBased = false;\n\t\tbaanFoldKeywordsBased = false;\n\t\tbaanFoldSections = false;\n\t\tbaanFoldInnerLevel = false;\n\t\tbaanStylingWithinPreprocessor = false;\n\t}\n};\n\nconst char *const baanWordLists[] = {\n\t\"Baan & BaanSQL Reserved Keywords \",\n\t\"Baan Standard functions\",\n\t\"Baan Functions Abridged\",\n\t\"Baan Main Sections \",\n\t\"Baan Sub Sections\",\n\t\"PreDefined Variables\",\n\t\"PreDefined Attributes\",\n\t\"Enumerates\",\n\t0,\n};\n\nstruct OptionSetBaan : public OptionSet<OptionsBaan> {\n\tOptionSetBaan() {\n\t\tDefineProperty(\"fold\", &OptionsBaan::fold);\n\n\t\tDefineProperty(\"fold.comment\", &OptionsBaan::foldComment);\n\n\t\tDefineProperty(\"fold.preprocessor\", &OptionsBaan::foldPreprocessor);\n\n\t\tDefineProperty(\"fold.compact\", &OptionsBaan::foldCompact);\n\n\t\tDefineProperty(\"fold.baan.syntax.based\", &OptionsBaan::baanFoldSyntaxBased,\n\t\t\t\"Set this property to 0 to disable syntax based folding, which is folding based on '{' & '('.\");\n\n\t\tDefineProperty(\"fold.baan.keywords.based\", &OptionsBaan::baanFoldKeywordsBased,\n\t\t\t\"Set this property to 0 to disable keywords based folding, which is folding based on \"\n\t\t\t\" for, if, on (case), repeat, select, while and fold ends based on endfor, endif, endcase, until, endselect, endwhile respectively.\"\n\t\t\t\"Also folds declarations which are grouped together.\");\n\n\t\tDefineProperty(\"fold.baan.sections\", &OptionsBaan::baanFoldSections,\n\t\t\t\"Set this property to 0 to disable folding of Main Sections as well as Sub Sections.\");\n\n\t\tDefineProperty(\"fold.baan.inner.level\", &OptionsBaan::baanFoldInnerLevel,\n\t\t\t\"Set this property to 1 to enable folding of inner levels of select statements.\"\n\t\t\t\"Disabled by default. case and if statements are also eligible\" );\n\n\t\tDefineProperty(\"lexer.baan.styling.within.preprocessor\", &OptionsBaan::baanStylingWithinPreprocessor,\n\t\t\t\"For Baan code, determines whether all preprocessor code is styled in the \"\n\t\t\t\"preprocessor style (0, the default) or only from the initial # to the end \"\n\t\t\t\"of the command word(1).\");\n\n\t\tDefineWordListSets(baanWordLists);\n\t}\n};\n\nstatic inline bool IsAWordChar(const int  ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch == '$');\n}\n\nstatic inline bool IsAnOperator(int ch) {\n\tif (IsAlphaNumeric(ch))\n\t\treturn false;\n\tif (ch == '#' || ch == '^' || ch == '&' || ch == '*' ||\n\t\tch == '(' || ch == ')' || ch == '-' || ch == '+' ||\n\t\tch == '=' || ch == '|' || ch == '{' || ch == '}' ||\n\t\tch == '[' || ch == ']' || ch == ':' || ch == ';' ||\n\t\tch == '<' || ch == '>' || ch == ',' || ch == '/' ||\n\t\tch == '?' || ch == '!' || ch == '\"' || ch == '~' ||\n\t\tch == '\\\\')\n\t\treturn true;\n\treturn false;\n}\n\nstatic inline int IsAnyOtherIdentifier(char *s, int sLength) {\n\n\t/*\tIsAnyOtherIdentifier uses standard templates used in baan.\n\tThe matching template is shown as comments just above the return condition.\n\t^ - refers to any character [a-z].\n\t# - refers to any number [0-9].\n\tOther characters shown are compared as is.\n\tTried implementing with Regex... it was too complicated for me.\n\tAny other implementation suggestion welcome.\n\t*/\n\tswitch (sLength) {\n\tcase 8:\n\t\tif (isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) {\n\t\t\t//^^^^^### \n\t\t\treturn(SCE_BAAN_TABLEDEF);\n\t\t}\n\t\tbreak;\n\tcase 9:\n\t\tif (s[0] == 't' && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && isalpha(s[5]) && IsADigit(s[6]) && IsADigit(s[7]) && IsADigit(s[8])) {\n\t\t\t//t^^^^^###\n\t\t\treturn(SCE_BAAN_TABLEDEF);\n\t\t}\n\t\telse if (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) {\n\t\t\t//^^^^^###.\n\t\t\treturn(SCE_BAAN_TABLESQL);\n\t\t}\n\t\tbreak;\n\tcase 13:\n\t\tif (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) {\n\t\t\t//^^^^^###.****\n\t\t\treturn(SCE_BAAN_TABLESQL);\n\t\t}\n\t\telse if (s[0] == 'r' && s[1] == 'c' && s[2] == 'd' && s[3] == '.' && s[4] == 't' && isalpha(s[5]) && isalpha(s[6]) && isalpha(s[7]) && isalpha(s[8]) && isalpha(s[9]) && IsADigit(s[10]) && IsADigit(s[11]) && IsADigit(s[12])) {\n\t\t\t//rcd.t^^^^^###\n\t\t\treturn(SCE_BAAN_TABLEDEF);\n\t\t}\n\t\tbreak;\n\tcase 14:\n\tcase 15:\n\t\tif (s[8] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) {\n\t\t\tif (s[13] != ':') {\n\t\t\t\t//^^^^^###.******\n\t\t\t\treturn(SCE_BAAN_TABLESQL);\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase 16:\n\tcase 17:\n\t\tif (s[8] == '.' && s[9] == '_' && s[10] == 'i' && s[11] == 'n' && s[12] == 'd' && s[13] == 'e' && s[14] == 'x' && IsADigit(s[15]) && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) {\n\t\t\t//^^^^^###._index##\n\t\t\treturn(SCE_BAAN_TABLEDEF);\n\t\t}\n\t\telse if (s[8] == '.' && s[9] == '_' && s[10] == 'c' && s[11] == 'o' && s[12] == 'm' && s[13] == 'p' && s[14] == 'n' && s[15] == 'r' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[5]) && IsADigit(s[6]) && IsADigit(s[7])) {\n\t\t\t//^^^^^###._compnr\n\t\t\treturn(SCE_BAAN_TABLEDEF);\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tbreak;\n\t}\n\tif (sLength > 14 && s[5] == '.' && s[6] == 'd' && s[7] == 'l' && s[8] == 'l' && s[13] == '.' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && IsADigit(s[9]) && IsADigit(s[10]) && IsADigit(s[11]) && IsADigit(s[12])) {\n\t\t//^^^^^.dll####.\n\t\treturn(SCE_BAAN_FUNCTION);\n\t}\n\telse if (sLength > 15 && s[2] == 'i' && s[3] == 'n' && s[4] == 't' && s[5] == '.' && s[6] == 'd' && s[7] == 'l' && s[8] == 'l' && isalpha(s[0]) && isalpha(s[1]) && isalpha(s[9]) && isalpha(s[10]) && isalpha(s[11]) && isalpha(s[12]) && isalpha(s[13])) {\n\t\t//^^int.dll^^^^^.\n\t\treturn(SCE_BAAN_FUNCTION);\n\t}\n\telse if (sLength > 11 && s[0] == 'i' && s[10] == '.' && isalpha(s[1]) && isalpha(s[2]) && isalpha(s[3]) && isalpha(s[4]) && isalpha(s[5]) && IsADigit(s[6]) && IsADigit(s[7]) && IsADigit(s[8]) && IsADigit(s[9])) {\n\t\t//i^^^^^####.\n\t\treturn(SCE_BAAN_FUNCTION);\n\t}\n\n\treturn(SCE_BAAN_DEFAULT);\n}\n\nstatic bool IsCommentLine(Sci_Position line, LexAccessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tint style = styler.StyleAt(i);\n\t\tif (ch == '|' && style == SCE_BAAN_COMMENT)\n\t\t\treturn true;\n\t\telse if (!IsASpaceOrTab(ch))\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic bool IsPreProcLine(Sci_Position line, LexAccessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tint style = styler.StyleAt(i);\n\t\tif (ch == '#' && style == SCE_BAAN_PREPROCESSOR) {\n\t\t\tif (styler.Match(i, \"#elif\") || styler.Match(i, \"#else\") || styler.Match(i, \"#endif\")\n\t\t\t\t|| styler.Match(i, \"#if\") || styler.Match(i, \"#ifdef\") || styler.Match(i, \"#ifndef\"))\n\t\t\t\t// Above PreProcessors has a seperate fold mechanism.\n\t\t\t\treturn false;\n\t\t\telse\n\t\t\t\treturn true;\n\t\t}\n\t\telse if (ch == '^')\n\t\t\treturn true;\n\t\telse if (!IsASpaceOrTab(ch))\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic int mainOrSubSectionLine(Sci_Position line, LexAccessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tint style = styler.StyleAt(i);\n\t\tif (style == SCE_BAAN_WORD5 || style == SCE_BAAN_WORD4)\n\t\t\treturn style;\n\t\telse if (IsASpaceOrTab(ch))\n\t\t\tcontinue;\n\t\telse\n\t\t\tbreak;\n\t}\n\treturn 0;\n}\n\nstatic bool priorSectionIsSubSection(Sci_Position line, LexAccessor &styler){\n\twhile (line > 0) {\n\t\tSci_Position pos = styler.LineStart(line);\n\t\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\t\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\t\tchar ch = styler[i];\n\t\t\tint style = styler.StyleAt(i);\n\t\t\tif (style == SCE_BAAN_WORD4)\n\t\t\t\treturn true;\n\t\t\telse if (style == SCE_BAAN_WORD5)\n\t\t\t\treturn false;\n\t\t\telse if (IsASpaceOrTab(ch))\n\t\t\t\tcontinue;\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\t\tline--;\n\t}\n\treturn false;\n}\n\nstatic bool nextSectionIsSubSection(Sci_Position line, LexAccessor &styler) {\n\twhile (line > 0) {\n\t\tSci_Position pos = styler.LineStart(line);\n\t\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\t\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\t\tchar ch = styler[i];\n\t\t\tint style = styler.StyleAt(i);\n\t\t\tif (style == SCE_BAAN_WORD4)\n\t\t\t\treturn true;\n\t\t\telse if (style == SCE_BAAN_WORD5)\n\t\t\t\treturn false;\n\t\t\telse if (IsASpaceOrTab(ch))\n\t\t\t\tcontinue;\n\t\t\telse\n\t\t\t\tbreak;\n\t\t}\n\t\tline++;\n\t}\n\treturn false;\n}\n\nstatic bool IsDeclarationLine(Sci_Position line, LexAccessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tint style = styler.StyleAt(i);\n\t\tif (style == SCE_BAAN_WORD) {\n\t\t\tif (styler.Match(i, \"table\") || styler.Match(i, \"extern\") || styler.Match(i, \"long\")\n\t\t\t\t|| styler.Match(i, \"double\") || styler.Match(i, \"boolean\") || styler.Match(i, \"string\")\n\t\t\t\t|| styler.Match(i, \"domain\")) {\n\t\t\t\tfor (Sci_Position j = eol_pos; j > pos; j--) {\n\t\t\t\t\tint styleFromEnd = styler.StyleAt(j);\n\t\t\t\t\tif (styleFromEnd == SCE_BAAN_COMMENT)\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\telse if (IsASpace(styler[j]))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\telse if (styler[j] != ',')\n\t\t\t\t\t\t//Above conditions ensures, Declaration is not part of any function parameters.\n\t\t\t\t\t\treturn true;\n\t\t\t\t\telse\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t\treturn false;\n\t\t}\n\t\telse if (!IsASpaceOrTab(ch))\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic bool IsInnerLevelFold(Sci_Position line, LexAccessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tint style = styler.StyleAt(i);\n\t\tif (style == SCE_BAAN_WORD && (styler.Match(i, \"else\" ) || styler.Match(i, \"case\")\n\t\t\t|| styler.Match(i, \"default\") || styler.Match(i, \"selectdo\") || styler.Match(i, \"selecteos\")\n\t\t\t|| styler.Match(i, \"selectempty\") || styler.Match(i, \"selecterror\")))\n\t\t\treturn true;\n\t\telse if (IsASpaceOrTab(ch))\n\t\t\tcontinue;\n\t\telse\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic inline bool wordInArray(const std::string& value, std::string *array, int length)\n{\n\tfor (int i = 0; i < length; i++)\n\t{\n\t\tif (value == array[i])\n\t\t{\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nclass WordListAbridged : public WordList {\npublic:\n\tWordListAbridged() {\n\t\tkwAbridged = false;\n\t\tkwHasSection = false;\n\t};\n\t~WordListAbridged() {\n\t\tClear();\n\t};\n\tbool kwAbridged;\n\tbool kwHasSection;\n\tbool Contains(const char *s) {\n\t\treturn kwAbridged ? InListAbridged(s, '~') : InList(s);\n\t};\n};\n\n}\n\nclass LexerBaan : public ILexer {\n\tWordListAbridged keywords;\n\tWordListAbridged keywords2;\n\tWordListAbridged keywords3;\n\tWordListAbridged keywords4;\n\tWordListAbridged keywords5;\n\tWordListAbridged keywords6;\n\tWordListAbridged keywords7;\n\tWordListAbridged keywords8;\n\tWordListAbridged keywords9;\n\tOptionsBaan options;\n\tOptionSetBaan osBaan;\npublic:\n\tLexerBaan() {\n\t}\n\n\tvirtual ~LexerBaan() {\n\t}\n\n\tint SCI_METHOD Version() const {\n\t\treturn lvOriginal;\n\t}\n\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\n\tconst char * SCI_METHOD PropertyNames() {\n\t\treturn osBaan.PropertyNames();\n\t}\n\n\tint SCI_METHOD PropertyType(const char * name) {\n\t\treturn osBaan.PropertyType(name);\n\t}\n\n\tconst char * SCI_METHOD DescribeProperty(const char * name) {\n\t\treturn osBaan.DescribeProperty(name);\n\t}\n\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\n\tconst char * SCI_METHOD DescribeWordListSets() {\n\t\treturn osBaan.DescribeWordListSets();\n\t}\n\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\treturn NULL;\n\t}\n\n\tstatic ILexer * LexerFactoryBaan() {\n\t\treturn new LexerBaan();\n\t}\n};\n\nSci_Position SCI_METHOD LexerBaan::PropertySet(const char *key, const char *val) {\n\tif (osBaan.PropertySet(&options, key, val)) {\n\t\treturn 0;\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerBaan::WordListSet(int n, const char *wl) {\n\tWordListAbridged *WordListAbridgedN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\tWordListAbridgedN = &keywords;\n\t\tbreak;\n\tcase 1:\n\t\tWordListAbridgedN = &keywords2;\n\t\tbreak;\n\tcase 2:\n\t\tWordListAbridgedN = &keywords3;\n\t\tbreak;\n\tcase 3:\n\t\tWordListAbridgedN = &keywords4;\n\t\tbreak;\n\tcase 4:\n\t\tWordListAbridgedN = &keywords5;\n\t\tbreak;\n\tcase 5:\n\t\tWordListAbridgedN = &keywords6;\n\t\tbreak;\n\tcase 6:\n\t\tWordListAbridgedN = &keywords7;\n\t\tbreak;\n\tcase 7:\n\t\tWordListAbridgedN = &keywords8;\n\t\tbreak;\n\tcase 8:\n\t\tWordListAbridgedN = &keywords9;\n\t\tbreak;\n\t}\n\tSci_Position firstModification = -1;\n\tif (WordListAbridgedN) {\n\t\tWordListAbridged wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*WordListAbridgedN != wlNew) {\n\t\t\tWordListAbridgedN->Set(wl);\n\t\t\tWordListAbridgedN->kwAbridged = strchr(wl, '~') != NULL;\n\t\t\tWordListAbridgedN->kwHasSection = strchr(wl, ':') != NULL;\n\n\t\t\tfirstModification = 0;\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nvoid SCI_METHOD LexerBaan::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\n\tif (initStyle == SCE_BAAN_STRINGEOL)\t// Does not leak onto next line\n\t\tinitStyle = SCE_BAAN_DEFAULT;\n\n\tint visibleChars = 0;\n\tbool lineHasDomain = false;\n\tbool lineHasFunction = false;\n\tbool lineHasPreProc = false;\n\tbool lineIgnoreString = false;\n\tbool lineHasDefines = false;\n\tchar word[1000];\n\tint wordlen = 0;\n\n\tstd::string preProcessorTags[11] = { \"#define\", \"#elif\", \"#else\", \"#endif\",\n\t\t\"#ident\", \"#if\", \"#ifdef\", \"#ifndef\",\n\t\t\"#include\", \"#pragma\", \"#undef\" };\n\tLexAccessor styler(pAccess);\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\tcase SCE_BAAN_OPERATOR:\n\t\t\tsc.SetState(SCE_BAAN_DEFAULT);\n\t\t\tbreak;\n\t\tcase SCE_BAAN_NUMBER:\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_BAAN_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_BAAN_IDENTIFIER:\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[1000];\n\t\t\t\tchar s1[1000];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (sc.ch == ':') {\n\t\t\t\t\tmemcpy(s1, s, sizeof(s));\n\t\t\t\t\ts1[sc.LengthCurrent()] = sc.ch;\n\t\t\t\t\ts1[sc.LengthCurrent() + 1] = '\\0';\n\t\t\t\t}\n\t\t\t\tif ((keywords.kwHasSection && (sc.ch == ':')) ? keywords.Contains(s1) : keywords.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD);\n\t\t\t\t\tif (0 == strcmp(s, \"domain\")) {\n\t\t\t\t\t\tlineHasDomain = true;\n\t\t\t\t\t}\n\t\t\t\t\telse if (0 == strcmp(s, \"function\")) {\n\t\t\t\t\t\tlineHasFunction = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (lineHasDomain) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_DOMDEF);\n\t\t\t\t\tlineHasDomain = false;\n\t\t\t\t}\n\t\t\t\telse if (lineHasFunction) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_FUNCDEF);\n\t\t\t\t\tlineHasFunction = false;\n\t\t\t\t}\n\t\t\t\telse if ((keywords2.kwHasSection && (sc.ch == ':')) ? keywords2.Contains(s1) : keywords2.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD2);\n\t\t\t\t}\n\t\t\t\telse if ((keywords3.kwHasSection && (sc.ch == ':')) ? keywords3.Contains(s1) : keywords3.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD3);\n\t\t\t\t}\n\t\t\t\telse if ((keywords4.kwHasSection && (sc.ch == ':')) ? keywords4.Contains(s1) : keywords4.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD4);\n\t\t\t\t}\n\t\t\t\telse if ((keywords5.kwHasSection && (sc.ch == ':')) ? keywords5.Contains(s1) : keywords5.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD5);\n\t\t\t\t}\n\t\t\t\telse if ((keywords6.kwHasSection && (sc.ch == ':')) ? keywords6.Contains(s1) : keywords6.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD6);\n\t\t\t\t}\n\t\t\t\telse if ((keywords7.kwHasSection && (sc.ch == ':')) ? keywords7.Contains(s1) : keywords7.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD7);\n\t\t\t\t}\n\t\t\t\telse if ((keywords8.kwHasSection && (sc.ch == ':')) ? keywords8.Contains(s1) : keywords8.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD8);\n\t\t\t\t}\n\t\t\t\telse if ((keywords9.kwHasSection && (sc.ch == ':')) ? keywords9.Contains(s1) : keywords9.Contains(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_WORD9);\n\t\t\t\t}\n\t\t\t\telse if (lineHasPreProc) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_OBJECTDEF);\n\t\t\t\t\tlineHasPreProc = false;\n\t\t\t\t}\n\t\t\t\telse if (lineHasDefines) {\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_DEFINEDEF);\n\t\t\t\t\tlineHasDefines = false;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tint state = IsAnyOtherIdentifier(s, sc.LengthCurrent());\n\t\t\t\t\tif (state > 0) {\n\t\t\t\t\t\tsc.ChangeState(state);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_BAAN_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_BAAN_PREPROCESSOR:\n\t\t\tif (options.baanStylingWithinPreprocessor) {\n\t\t\t\tif (IsASpace(sc.ch) || IsAnOperator(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_BAAN_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (sc.atLineEnd && (sc.chNext != '^')) {\n\t\t\t\t\tsc.SetState(SCE_BAAN_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_BAAN_COMMENT:\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_BAAN_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_BAAN_COMMENTDOC:\n\t\t\tif (sc.MatchIgnoreCase(\"enddllusage\")) {\n\t\t\t\tfor (unsigned int i = 0; i < 10; i++) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tsc.ForwardSetState(SCE_BAAN_DEFAULT);\n\t\t\t}\n\t\t\telse if (sc.MatchIgnoreCase(\"endfunctionusage\")) {\n\t\t\t\tfor (unsigned int i = 0; i < 15; i++) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tsc.ForwardSetState(SCE_BAAN_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_BAAN_STRING:\n\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_BAAN_DEFAULT);\n\t\t\t}\n\t\t\telse if ((sc.atLineEnd) && (sc.chNext != '^')) {\n\t\t\t\tsc.ChangeState(SCE_BAAN_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_BAAN_DEFAULT);\n\t\t\t\tvisibleChars = 0;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_BAAN_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_BAAN_NUMBER);\n\t\t\t}\n\t\t\telse if (sc.MatchIgnoreCase(\"dllusage\") || sc.MatchIgnoreCase(\"functionusage\")) {\n\t\t\t\tsc.SetState(SCE_BAAN_COMMENTDOC);\n\t\t\t\tdo {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} while ((!sc.atLineEnd) && sc.More());\n\t\t\t}\n\t\t\telse if (iswordstart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_BAAN_IDENTIFIER);\n\t\t\t}\n\t\t\telse if (sc.Match('|')) {\n\t\t\t\tsc.SetState(SCE_BAAN_COMMENT);\n\t\t\t}\n\t\t\telse if (sc.ch == '\\\"' && !(lineIgnoreString)) {\n\t\t\t\tsc.SetState(SCE_BAAN_STRING);\n\t\t\t}\n\t\t\telse if (sc.ch == '#' && visibleChars == 0) {\n\t\t\t\t// Preprocessor commands are alone on their line\n\t\t\t\tsc.SetState(SCE_BAAN_PREPROCESSOR);\n\t\t\t\tword[0] = '\\0';\n\t\t\t\twordlen = 0;\n\t\t\t\twhile (sc.More() && !(IsASpace(sc.chNext) || IsAnOperator(sc.chNext))) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\twordlen++;\n\t\t\t\t}\n\t\t\t\tsc.GetCurrentLowered(word, sizeof(word));\n\t\t\t\tif (!sc.atLineEnd) {\n\t\t\t\t\tword[wordlen++] = sc.ch;\n\t\t\t\t\tword[wordlen++] = '\\0';\n\t\t\t\t}\n\t\t\t\tif (!wordInArray(word, preProcessorTags, 11))\n\t\t\t\t\t// Colorise only preprocessor built in Baan.\n\t\t\t\t\tsc.ChangeState(SCE_BAAN_IDENTIFIER);\n\t\t\t\tif (strcmp(word, \"#pragma\") == 0 || strcmp(word, \"#include\") == 0) {\n\t\t\t\t\tlineHasPreProc = true;\n\t\t\t\t\tlineIgnoreString = true;\n\t\t\t\t}\n\t\t\t\telse if (strcmp(word, \"#define\") == 0 || strcmp(word, \"#undef\") == 0 ||\n\t\t\t\t\tstrcmp(word, \"#ifdef\") == 0 || strcmp(word, \"#if\") == 0 || strcmp(word, \"#ifndef\") == 0) {\n\t\t\t\t\tlineHasDefines = true;\n\t\t\t\t\tlineIgnoreString = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (IsAnOperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_BAAN_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\t// Reset states to begining of colourise so no surprises\n\t\t\t// if different sets of lines lexed.\n\t\t\tvisibleChars = 0;\n\t\t\tlineHasDomain = false;\n\t\t\tlineHasFunction = false;\n\t\t\tlineHasPreProc = false;\n\t\t\tlineIgnoreString = false;\n\t\t\tlineHasDefines = false;\n\t\t}\n\t\tif (!IsASpace(sc.ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nvoid SCI_METHOD LexerBaan::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tif (!options.fold)\n\t\treturn;\n\n\tchar word[100];\n\tint wordlen = 0;\n\tbool foldStart = true;\n\tbool foldNextSelect = true;\n\tbool afterFunctionSection = false;\n\tbool beforeDeclarationSection = false;\n\tint currLineStyle = 0;\n\tint nextLineStyle = 0;\n\n\tstd::string startTags[6] = { \"for\", \"if\", \"on\", \"repeat\", \"select\", \"while\" };\n\tstd::string endTags[6] = { \"endcase\", \"endfor\", \"endif\", \"endselect\", \"endwhile\", \"until\" };\n\tstd::string selectCloseTags[5] = { \"selectdo\", \"selecteos\", \"selectempty\", \"selecterror\", \"endselect\" };\n\n\tLexAccessor styler(pAccess);\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\n\t// Backtrack to previous line in case need to fix its fold status\n\tif (startPos > 0) {\n\t\tif (lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\tstartPos = styler.LineStart(lineCurrent);\n\t\t}\n\t}\n\n\tint levelPrev = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelPrev = styler.LevelAt(lineCurrent - 1) >> 16;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint style = initStyle;\n\tint styleNext = styler.StyleAt(startPos);\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tint stylePrev = (i) ? styler.StyleAt(i - 1) : SCE_BAAN_DEFAULT;\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\t// Comment folding\n\t\tif (options.foldComment && style == SCE_BAAN_COMMENTDOC) {\n\t\t\tif (style != stylePrev) {\n\t\t\t\tlevelCurrent++;\n\t\t\t}\n\t\t\telse if (style != styleNext) {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (options.foldComment && atEOL && IsCommentLine(lineCurrent, styler)) {\n\t\t\tif (!IsCommentLine(lineCurrent - 1, styler)\n\t\t\t\t&& IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (IsCommentLine(lineCurrent - 1, styler)\n\t\t\t\t&& !IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelCurrent--;\n\t\t}\n\t\t// PreProcessor Folding\n\t\tif (options.foldPreprocessor) {\n\t\t\tif (atEOL && IsPreProcLine(lineCurrent, styler)) {\n\t\t\t\tif (!IsPreProcLine(lineCurrent - 1, styler)\n\t\t\t\t\t&& IsPreProcLine(lineCurrent + 1, styler))\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\telse if (IsPreProcLine(lineCurrent - 1, styler)\n\t\t\t\t\t&& !IsPreProcLine(lineCurrent + 1, styler))\n\t\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t\telse if (style == SCE_BAAN_PREPROCESSOR) {\n\t\t\t\t// folds #ifdef/#if/#ifndef - they are not part of the IsPreProcLine folding.\n\t\t\t\tif (ch == '#') {\n\t\t\t\t\tif (styler.Match(i, \"#ifdef\") || styler.Match(i, \"#if\") || styler.Match(i, \"#ifndef\"))\n\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\telse if (styler.Match(i, \"#endif\"))\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//Syntax Folding\n\t\tif (options.baanFoldSyntaxBased && (style == SCE_BAAN_OPERATOR)) {\n\t\t\tif (ch == '{' || ch == '(') {\n\t\t\t\tlevelCurrent++;\n\t\t\t}\n\t\t\telse if (ch == '}' || ch == ')') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\t//Keywords Folding\n\t\tif (options.baanFoldKeywordsBased) {\n\t\t\tif (atEOL && IsDeclarationLine(lineCurrent, styler)) {\n\t\t\t\tif (!IsDeclarationLine(lineCurrent - 1, styler)\n\t\t\t\t\t&& IsDeclarationLine(lineCurrent + 1, styler))\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\telse if (IsDeclarationLine(lineCurrent - 1, styler)\n\t\t\t\t\t&& !IsDeclarationLine(lineCurrent + 1, styler))\n\t\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t\telse if (style == SCE_BAAN_WORD) {\n\t\t\t\tword[wordlen++] = static_cast<char>(MakeLowerCase(ch));\n\t\t\t\tif (wordlen == 100) {                   // prevent overflow\n\t\t\t\t\tword[0] = '\\0';\n\t\t\t\t\twordlen = 1;\n\t\t\t\t}\n\t\t\t\tif (styleNext != SCE_BAAN_WORD) {\n\t\t\t\t\tword[wordlen] = '\\0';\n\t\t\t\t\twordlen = 0;\n\t\t\t\t\tif (strcmp(word, \"for\") == 0) {\n\t\t\t\t\t\tSci_PositionU j = i + 1;\n\t\t\t\t\t\twhile ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (styler.Match(j, \"update\")) {\n\t\t\t\t\t\t\t// Means this is a \"for update\" used by Select which is already folded.\n\t\t\t\t\t\t\tfoldStart = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (strcmp(word, \"on\") == 0) {\n\t\t\t\t\t\tSci_PositionU j = i + 1;\n\t\t\t\t\t\twhile ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!styler.Match(j, \"case\")) {\n\t\t\t\t\t\t\t// Means this is not a \"on Case\" statement... could be \"on\" used by index.\n\t\t\t\t\t\t\tfoldStart = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (strcmp(word, \"select\") == 0) {\n\t\t\t\t\t\tif (foldNextSelect) {\n\t\t\t\t\t\t\t// Next Selects are sub-clause till reach of selectCloseTags[] array.\n\t\t\t\t\t\t\tfoldNextSelect = false;\n\t\t\t\t\t\t\tfoldStart = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tfoldNextSelect = false;\n\t\t\t\t\t\t\tfoldStart = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse if (wordInArray(word, selectCloseTags, 5)) {\n\t\t\t\t\t\t// select clause ends, next select clause can be folded.\n\t\t\t\t\t\tfoldNextSelect = true;\n\t\t\t\t\t\tfoldStart = true;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfoldStart = true;\n\t\t\t\t\t}\n\t\t\t\t\tif (foldStart) {\n\t\t\t\t\t\tif (wordInArray(word, startTags, 6)) {\n\t\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (wordInArray(word, endTags, 6)) {\n\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Fold inner level of if/select/case statements\n\t\tif (options.baanFoldInnerLevel && atEOL) {\n\t\t\tbool currLineInnerLevel = IsInnerLevelFold(lineCurrent, styler);\n\t\t\tbool nextLineInnerLevel = IsInnerLevelFold(lineCurrent + 1, styler);\n\t\t\tif (currLineInnerLevel && currLineInnerLevel != nextLineInnerLevel) {\n\t\t\t\tlevelCurrent++;\n\t\t\t}\n\t\t\telse if (nextLineInnerLevel && nextLineInnerLevel != currLineInnerLevel) {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\t// Section Foldings.\n\t\t// One way of implementing Section Foldings, as there is no END markings of sections.\n\t\t// first section ends on the previous line of next section.\n\t\t// Re-written whole folding to accomodate this.\n\t\tif (options.baanFoldSections && atEOL) {\n\t\t\tcurrLineStyle = mainOrSubSectionLine(lineCurrent, styler);\n\t\t\tnextLineStyle = mainOrSubSectionLine(lineCurrent + 1, styler);\n\t\t\tif (currLineStyle != 0 && currLineStyle != nextLineStyle) {\n\t\t\t\tif (levelCurrent < levelPrev)\n\t\t\t\t\t--levelPrev;\n\t\t\t\tfor (Sci_Position j = styler.LineStart(lineCurrent); j < styler.LineStart(lineCurrent + 1) - 1; j++) {\n\t\t\t\t\tif (IsASpaceOrTab(styler[j]))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\telse if (styler.StyleAt(j) == SCE_BAAN_WORD5) {\n\t\t\t\t\t\tif (styler.Match(j, \"functions:\")) {\n\t\t\t\t\t\t\t// Means functions: is the end of MainSections.\n\t\t\t\t\t\t\t// Nothing to fold after this.\n\t\t\t\t\t\t\tafterFunctionSection = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tafterFunctionSection = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tafterFunctionSection = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!afterFunctionSection)\n\t\t\t\t\tlevelCurrent++;\n\t\t\t}\n\t\t\telse if (nextLineStyle != 0 && currLineStyle != nextLineStyle\n\t\t\t\t&& (priorSectionIsSubSection(lineCurrent -1 ,styler) \n\t\t\t\t\t|| !nextSectionIsSubSection(lineCurrent + 1, styler))) {\n\t\t\t\tfor (Sci_Position j = styler.LineStart(lineCurrent + 1); j < styler.LineStart(lineCurrent + 1 + 1) - 1; j++) {\n\t\t\t\t\tif (IsASpaceOrTab(styler[j]))\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\telse if (styler.StyleAt(j) == SCE_BAAN_WORD5) {\n\t\t\t\t\t\tif (styler.Match(j, \"declaration:\")) {\n\t\t\t\t\t\t\t// Means declaration: is the start of MainSections.\n\t\t\t\t\t\t\t// Nothing to fold before this.\n\t\t\t\t\t\t\tbeforeDeclarationSection = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbeforeDeclarationSection = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tbeforeDeclarationSection = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!beforeDeclarationSection) {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\tif (nextLineStyle == SCE_BAAN_WORD5 && priorSectionIsSubSection(lineCurrent-1, styler))\n\t\t\t\t\t\t// next levelCurrent--; is to unfold previous subsection fold.\n\t\t\t\t\t\t// On reaching the next main section, the previous main as well sub section ends.\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tlev |= levelCurrent << 16;\n\t\t\tif (visibleChars == 0 && options.foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nLexerModule lmBaan(SCLEX_BAAN, LexerBaan::LexerFactoryBaan, \"baan\", baanWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexBash.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexBash.cxx\n ** Lexer for Bash.\n **/\n// Copyright 2004-2012 by Neil Hodgson <neilh@scintilla.org>\n// Adapted from LexPerl by Kein-Hong Man 2004\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#define HERE_DELIM_MAX\t\t\t256\n\n// define this if you want 'invalid octals' to be marked as errors\n// usually, this is not a good idea, permissive lexing is better\n#undef PEDANTIC_OCTAL\n\n#define BASH_BASE_ERROR\t\t\t65\n#define BASH_BASE_DECIMAL\t\t66\n#define BASH_BASE_HEX\t\t\t67\n#ifdef PEDANTIC_OCTAL\n#define BASH_BASE_OCTAL\t\t\t68\n#define\tBASH_BASE_OCTAL_ERROR\t69\n#endif\n\n// state constants for parts of a bash command segment\n#define\tBASH_CMD_BODY\t\t\t0\n#define BASH_CMD_START\t\t\t1\n#define BASH_CMD_WORD\t\t\t2\n#define BASH_CMD_TEST\t\t\t3\n#define BASH_CMD_ARITH\t\t\t4\n#define BASH_CMD_DELIM\t\t\t5\n\n// state constants for nested delimiter pairs, used by\n// SCE_SH_STRING and SCE_SH_BACKTICKS processing\n#define BASH_DELIM_LITERAL\t\t0\n#define BASH_DELIM_STRING\t\t1\n#define BASH_DELIM_CSTRING\t\t2\n#define BASH_DELIM_LSTRING\t\t3\n#define BASH_DELIM_COMMAND\t\t4\n#define BASH_DELIM_BACKTICK\t\t5\n\n#define BASH_DELIM_STACK_MAX\t7\n\nstatic inline int translateBashDigit(int ch) {\n\tif (ch >= '0' && ch <= '9') {\n\t\treturn ch - '0';\n\t} else if (ch >= 'a' && ch <= 'z') {\n\t\treturn ch - 'a' + 10;\n\t} else if (ch >= 'A' && ch <= 'Z') {\n\t\treturn ch - 'A' + 36;\n\t} else if (ch == '@') {\n\t\treturn 62;\n\t} else if (ch == '_') {\n\t\treturn 63;\n\t}\n\treturn BASH_BASE_ERROR;\n}\n\nstatic inline int getBashNumberBase(char *s) {\n\tint i = 0;\n\tint base = 0;\n\twhile (*s) {\n\t\tbase = base * 10 + (*s++ - '0');\n\t\ti++;\n\t}\n\tif (base > 64 || i > 2) {\n\t\treturn BASH_BASE_ERROR;\n\t}\n\treturn base;\n}\n\nstatic int opposite(int ch) {\n\tif (ch == '(') return ')';\n\tif (ch == '[') return ']';\n\tif (ch == '{') return '}';\n\tif (ch == '<') return '>';\n\treturn ch;\n}\n\nstatic int GlobScan(StyleContext &sc) {\n\t// forward scan for a glob-like (...), no whitespace allowed\n\tint c, sLen = 0;\n\twhile ((c = sc.GetRelativeCharacter(++sLen)) != 0) {\n\t\tif (IsASpace(c)) {\n\t\t\treturn 0;\n\t\t} else if (c == ')') {\n\t\t\treturn sLen;\n\t\t}\n\t}\n\treturn 0;\n}\n\nstatic void ColouriseBashDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\t\t\t\t\t\t WordList *keywordlists[], Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList cmdDelimiter, bashStruct, bashStruct_in;\n\tcmdDelimiter.Set(\"| || |& & && ; ;; ( ) { }\");\n\tbashStruct.Set(\"if elif fi while until else then do done esac eval\");\n\tbashStruct_in.Set(\"for case select\");\n\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_\");\n\t// note that [+-] are often parts of identifiers in shell scripts\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"._+-\");\n\tCharacterSet setMetaCharacter(CharacterSet::setNone, \"|&;()<> \\t\\r\\n\");\n\tsetMetaCharacter.Add(0);\n\tCharacterSet setBashOperator(CharacterSet::setNone, \"^&%()-+=|{}[]:;>,*/<?!.~@\");\n\tCharacterSet setSingleCharOp(CharacterSet::setNone, \"rwxoRWXOezsfdlpSbctugkTBMACahGLNn\");\n\tCharacterSet setParam(CharacterSet::setAlphaNum, \"$_\");\n\tCharacterSet setHereDoc(CharacterSet::setAlpha, \"_\\\\-+!%*,./:?@[]^`{}~\");\n\tCharacterSet setHereDoc2(CharacterSet::setAlphaNum, \"_-+!%*,./:=?@[]^`{}~\");\n\tCharacterSet setLeftShift(CharacterSet::setDigits, \"$\");\n\n\tclass HereDocCls {\t// Class to manage HERE document elements\n\tpublic:\n\t\tint State;\t\t// 0: '<<' encountered\n\t\t// 1: collect the delimiter\n\t\t// 2: here doc text (lines after the delimiter)\n\t\tint Quote;\t\t// the char after '<<'\n\t\tbool Quoted;\t\t// true if Quote in ('\\'','\"','`')\n\t\tbool Indent;\t\t// indented delimiter (for <<-)\n\t\tint DelimiterLength;\t// strlen(Delimiter)\n\t\tchar Delimiter[HERE_DELIM_MAX];\t// the Delimiter\n\t\tHereDocCls() {\n\t\t\tState = 0;\n\t\t\tQuote = 0;\n\t\t\tQuoted = false;\n\t\t\tIndent = 0;\n\t\t\tDelimiterLength = 0;\n\t\t\tDelimiter[0] = '\\0';\n\t\t}\n\t\tvoid Append(int ch) {\n\t\t\tDelimiter[DelimiterLength++] = static_cast<char>(ch);\n\t\t\tDelimiter[DelimiterLength] = '\\0';\n\t\t}\n\t\t~HereDocCls() {\n\t\t}\n\t};\n\tHereDocCls HereDoc;\n\n\tclass QuoteCls {\t// Class to manage quote pairs (simplified vs LexPerl)\n\t\tpublic:\n\t\tint Count;\n\t\tint Up, Down;\n\t\tQuoteCls() {\n\t\t\tCount = 0;\n\t\t\tUp    = '\\0';\n\t\t\tDown  = '\\0';\n\t\t}\n\t\tvoid Open(int u) {\n\t\t\tCount++;\n\t\t\tUp    = u;\n\t\t\tDown  = opposite(Up);\n\t\t}\n\t\tvoid Start(int u) {\n\t\t\tCount = 0;\n\t\t\tOpen(u);\n\t\t}\n\t};\n\tQuoteCls Quote;\n\n\tclass QuoteStackCls {\t// Class to manage quote pairs that nest\n\t\tpublic:\n\t\tint Count;\n\t\tint Up, Down;\n\t\tint Style;\n\t\tint Depth;\t\t\t// levels pushed\n\t\tint CountStack[BASH_DELIM_STACK_MAX];\n\t\tint UpStack   [BASH_DELIM_STACK_MAX];\n\t\tint StyleStack[BASH_DELIM_STACK_MAX];\n\t\tQuoteStackCls() {\n\t\t\tCount = 0;\n\t\t\tUp    = '\\0';\n\t\t\tDown  = '\\0';\n\t\t\tStyle = 0;\n\t\t\tDepth = 0;\n\t\t}\n\t\tvoid Start(int u, int s) {\n\t\t\tCount = 1;\n\t\t\tUp    = u;\n\t\t\tDown  = opposite(Up);\n\t\t\tStyle = s;\n\t\t}\n\t\tvoid Push(int u, int s) {\n\t\t\tif (Depth >= BASH_DELIM_STACK_MAX)\n\t\t\t\treturn;\n\t\t\tCountStack[Depth] = Count;\n\t\t\tUpStack   [Depth] = Up;\n\t\t\tStyleStack[Depth] = Style;\n\t\t\tDepth++;\n\t\t\tCount = 1;\n\t\t\tUp    = u;\n\t\t\tDown  = opposite(Up);\n\t\t\tStyle = s;\n\t\t}\n\t\tvoid Pop(void) {\n\t\t\tif (Depth <= 0)\n\t\t\t\treturn;\n\t\t\tDepth--;\n\t\t\tCount = CountStack[Depth];\n\t\t\tUp    = UpStack   [Depth];\n\t\t\tStyle = StyleStack[Depth];\n\t\t\tDown  = opposite(Up);\n\t\t}\n\t\t~QuoteStackCls() {\n\t\t}\n\t};\n\tQuoteStackCls QuoteStack;\n\n\tint numBase = 0;\n\tint digit;\n\tSci_PositionU endPos = startPos + length;\n\tint cmdState = BASH_CMD_START;\n\tint testExprType = 0;\n\n\t// Always backtracks to the start of a line that is not a continuation\n\t// of the previous line (i.e. start of a bash command segment)\n\tSci_Position ln = styler.GetLine(startPos);\n\tif (ln > 0 && startPos == static_cast<Sci_PositionU>(styler.LineStart(ln)))\n\t\tln--;\n\tfor (;;) {\n\t\tstartPos = styler.LineStart(ln);\n\t\tif (ln == 0 || styler.GetLineState(ln) == BASH_CMD_START)\n\t\t\tbreak;\n\t\tln--;\n\t}\n\tinitStyle = SCE_SH_DEFAULT;\n\n\tStyleContext sc(startPos, endPos - startPos, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\t// handle line continuation, updates per-line stored state\n\t\tif (sc.atLineStart) {\n\t\t\tln = styler.GetLine(sc.currentPos);\n\t\t\tif (sc.state == SCE_SH_STRING\n\t\t\t || sc.state == SCE_SH_BACKTICKS\n\t\t\t || sc.state == SCE_SH_CHARACTER\n\t\t\t || sc.state == SCE_SH_HERE_Q\n\t\t\t || sc.state == SCE_SH_COMMENTLINE\n\t\t\t || sc.state == SCE_SH_PARAM) {\n\t\t\t\t// force backtrack while retaining cmdState\n\t\t\t\tstyler.SetLineState(ln, BASH_CMD_BODY);\n\t\t\t} else {\n\t\t\t\tif (ln > 0) {\n\t\t\t\t\tif ((sc.GetRelative(-3) == '\\\\' && sc.GetRelative(-2) == '\\r' && sc.chPrev == '\\n')\n\t\t\t\t\t || sc.GetRelative(-2) == '\\\\') {\t// handle '\\' line continuation\n\t\t\t\t\t\t// retain last line's state\n\t\t\t\t\t} else\n\t\t\t\t\t\tcmdState = BASH_CMD_START;\n\t\t\t\t}\n\t\t\t\tstyler.SetLineState(ln, cmdState);\n\t\t\t}\n\t\t}\n\n\t\t// controls change of cmdState at the end of a non-whitespace element\n\t\t// states BODY|TEST|ARITH persist until the end of a command segment\n\t\t// state WORD persist, but ends with 'in' or 'do' construct keywords\n\t\tint cmdStateNew = BASH_CMD_BODY;\n\t\tif (cmdState == BASH_CMD_TEST || cmdState == BASH_CMD_ARITH || cmdState == BASH_CMD_WORD)\n\t\t\tcmdStateNew = cmdState;\n\t\tint stylePrev = sc.state;\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_SH_OPERATOR:\n\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\tif (cmdState == BASH_CMD_DELIM)\t\t// if command delimiter, start new command\n\t\t\t\t\tcmdStateNew = BASH_CMD_START;\n\t\t\t\telse if (sc.chPrev == '\\\\')\t\t\t// propagate command state if line continued\n\t\t\t\t\tcmdStateNew = cmdState;\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_WORD:\n\t\t\t\t// \".\" never used in Bash variable names but used in file names\n\t\t\t\tif (!setWord.Contains(sc.ch)) {\n\t\t\t\t\tchar s[500];\n\t\t\t\t\tchar s2[10];\n\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t// allow keywords ending in a whitespace or command delimiter\n\t\t\t\t\ts2[0] = static_cast<char>(sc.ch);\n\t\t\t\t\ts2[1] = '\\0';\n\t\t\t\t\tbool keywordEnds = IsASpace(sc.ch) || cmdDelimiter.InList(s2);\n\t\t\t\t\t// 'in' or 'do' may be construct keywords\n\t\t\t\t\tif (cmdState == BASH_CMD_WORD) {\n\t\t\t\t\t\tif (strcmp(s, \"in\") == 0 && keywordEnds)\n\t\t\t\t\t\t\tcmdStateNew = BASH_CMD_BODY;\n\t\t\t\t\t\telse if (strcmp(s, \"do\") == 0 && keywordEnds)\n\t\t\t\t\t\t\tcmdStateNew = BASH_CMD_START;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tsc.ChangeState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\t// a 'test' keyword starts a test expression\n\t\t\t\t\tif (strcmp(s, \"test\") == 0) {\n\t\t\t\t\t\tif (cmdState == BASH_CMD_START && keywordEnds) {\n\t\t\t\t\t\t\tcmdStateNew = BASH_CMD_TEST;\n\t\t\t\t\t\t\ttestExprType = 0;\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tsc.ChangeState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t\t// detect bash construct keywords\n\t\t\t\t\telse if (bashStruct.InList(s)) {\n\t\t\t\t\t\tif (cmdState == BASH_CMD_START && keywordEnds)\n\t\t\t\t\t\t\tcmdStateNew = BASH_CMD_START;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tsc.ChangeState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t\t// 'for'|'case'|'select' needs 'in'|'do' to be highlighted later\n\t\t\t\t\telse if (bashStruct_in.InList(s)) {\n\t\t\t\t\t\tif (cmdState == BASH_CMD_START && keywordEnds)\n\t\t\t\t\t\t\tcmdStateNew = BASH_CMD_WORD;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tsc.ChangeState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t\t// disambiguate option items and file test operators\n\t\t\t\t\telse if (s[0] == '-') {\n\t\t\t\t\t\tif (cmdState != BASH_CMD_TEST)\n\t\t\t\t\t\t\tsc.ChangeState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t\t// disambiguate keywords and identifiers\n\t\t\t\t\telse if (cmdState != BASH_CMD_START\n\t\t\t\t\t\t  || !(keywords.InList(s) && keywordEnds)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_IDENTIFIER:\n\t\t\t\tif (sc.chPrev == '\\\\') {\t// for escaped chars\n\t\t\t\t\tsc.ForwardSetState(SCE_SH_DEFAULT);\n\t\t\t\t} else if (!setWord.Contains(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t} else if (cmdState == BASH_CMD_ARITH && !setWordStart.Contains(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_NUMBER:\n\t\t\t\tdigit = translateBashDigit(sc.ch);\n\t\t\t\tif (numBase == BASH_BASE_DECIMAL) {\n\t\t\t\t\tif (sc.ch == '#') {\n\t\t\t\t\t\tchar s[10];\n\t\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t\tnumBase = getBashNumberBase(s);\n\t\t\t\t\t\tif (numBase != BASH_BASE_ERROR)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (IsADigit(sc.ch))\n\t\t\t\t\t\tbreak;\n\t\t\t\t} else if (numBase == BASH_BASE_HEX) {\n\t\t\t\t\tif (IsADigit(sc.ch, 16))\n\t\t\t\t\t\tbreak;\n#ifdef PEDANTIC_OCTAL\n\t\t\t\t} else if (numBase == BASH_BASE_OCTAL ||\n\t\t\t\t\t\t   numBase == BASH_BASE_OCTAL_ERROR) {\n\t\t\t\t\tif (digit <= 7)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tif (digit <= 9) {\n\t\t\t\t\t\tnumBase = BASH_BASE_OCTAL_ERROR;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n#endif\n\t\t\t\t} else if (numBase == BASH_BASE_ERROR) {\n\t\t\t\t\tif (digit <= 9)\n\t\t\t\t\t\tbreak;\n\t\t\t\t} else {\t// DD#DDDD number style handling\n\t\t\t\t\tif (digit != BASH_BASE_ERROR) {\n\t\t\t\t\t\tif (numBase <= 36) {\n\t\t\t\t\t\t\t// case-insensitive if base<=36\n\t\t\t\t\t\t\tif (digit >= 36) digit -= 26;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (digit < numBase)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tif (digit <= 9) {\n\t\t\t\t\t\t\tnumBase = BASH_BASE_ERROR;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// fallthrough when number is at an end or error\n\t\t\t\tif (numBase == BASH_BASE_ERROR\n#ifdef PEDANTIC_OCTAL\n\t\t\t\t\t|| numBase == BASH_BASE_OCTAL_ERROR\n#endif\n\t\t\t\t) {\n\t\t\t\t\tsc.ChangeState(SCE_SH_ERROR);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_COMMENTLINE:\n\t\t\t\tif (sc.atLineEnd && sc.chPrev != '\\\\') {\n\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_HERE_DELIM:\n\t\t\t\t// From Bash info:\n\t\t\t\t// ---------------\n\t\t\t\t// Specifier format is: <<[-]WORD\n\t\t\t\t// Optional '-' is for removal of leading tabs from here-doc.\n\t\t\t\t// Whitespace acceptable after <<[-] operator\n\t\t\t\t//\n\t\t\t\tif (HereDoc.State == 0) { // '<<' encountered\n\t\t\t\t\tHereDoc.Quote = sc.chNext;\n\t\t\t\t\tHereDoc.Quoted = false;\n\t\t\t\t\tHereDoc.DelimiterLength = 0;\n\t\t\t\t\tHereDoc.Delimiter[HereDoc.DelimiterLength] = '\\0';\n\t\t\t\t\tif (sc.chNext == '\\'' || sc.chNext == '\\\"') {\t// a quoted here-doc delimiter (' or \")\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\tHereDoc.Quoted = true;\n\t\t\t\t\t\tHereDoc.State = 1;\n\t\t\t\t\t} else if (setHereDoc.Contains(sc.chNext) ||\n\t\t\t\t\t           (sc.chNext == '=' && cmdState != BASH_CMD_ARITH)) {\n\t\t\t\t\t\t// an unquoted here-doc delimiter, no special handling\n\t\t\t\t\t\tHereDoc.State = 1;\n\t\t\t\t\t} else if (sc.chNext == '<') {\t// HERE string <<<\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\tsc.ForwardSetState(SCE_SH_DEFAULT);\n\t\t\t\t\t} else if (IsASpace(sc.chNext)) {\n\t\t\t\t\t\t// eat whitespace\n\t\t\t\t\t} else if (setLeftShift.Contains(sc.chNext) ||\n\t\t\t\t\t           (sc.chNext == '=' && cmdState == BASH_CMD_ARITH)) {\n\t\t\t\t\t\t// left shift <<$var or <<= cases\n\t\t\t\t\t\tsc.ChangeState(SCE_SH_OPERATOR);\n\t\t\t\t\t\tsc.ForwardSetState(SCE_SH_DEFAULT);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// symbols terminates; deprecated zero-length delimiter\n\t\t\t\t\t\tHereDoc.State = 1;\n\t\t\t\t\t}\n\t\t\t\t} else if (HereDoc.State == 1) { // collect the delimiter\n\t\t\t\t\t// * if single quoted, there's no escape\n\t\t\t\t\t// * if double quoted, there are \\\\ and \\\" escapes\n\t\t\t\t\tif ((HereDoc.Quote == '\\'' && sc.ch != HereDoc.Quote) ||\n\t\t\t\t\t    (HereDoc.Quoted && sc.ch != HereDoc.Quote && sc.ch != '\\\\') ||\n\t\t\t\t\t    (HereDoc.Quote != '\\'' && sc.chPrev == '\\\\') ||\n\t\t\t\t\t    (setHereDoc2.Contains(sc.ch))) {\n\t\t\t\t\t\tHereDoc.Append(sc.ch);\n\t\t\t\t\t} else if (HereDoc.Quoted && sc.ch == HereDoc.Quote) {\t// closing quote => end of delimiter\n\t\t\t\t\t\tsc.ForwardSetState(SCE_SH_DEFAULT);\n\t\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\t\tif (HereDoc.Quoted && sc.chNext != HereDoc.Quote && sc.chNext != '\\\\') {\n\t\t\t\t\t\t\t// in quoted prefixes only \\ and the quote eat the escape\n\t\t\t\t\t\t\tHereDoc.Append(sc.ch);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// skip escape prefix\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!HereDoc.Quoted) {\n\t\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\tif (HereDoc.DelimiterLength >= HERE_DELIM_MAX - 1) {\t// force blowup\n\t\t\t\t\t\tsc.SetState(SCE_SH_ERROR);\n\t\t\t\t\t\tHereDoc.State = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_HERE_Q:\n\t\t\t\t// HereDoc.State == 2\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_SH_HERE_Q);\n\t\t\t\t\tint prefixws = 0;\n\t\t\t\t\twhile (sc.ch == '\\t' && !sc.atLineEnd) {\t// tabulation prefix\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\tprefixws++;\n\t\t\t\t\t}\n\t\t\t\t\tif (prefixws > 0)\n\t\t\t\t\t\tsc.SetState(SCE_SH_HERE_Q);\n\t\t\t\t\twhile (!sc.atLineEnd) {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t\tchar s[HERE_DELIM_MAX];\n\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\tif (sc.LengthCurrent() == 0) {  // '' or \"\" delimiters\n\t\t\t\t\t\tif ((prefixws == 0 || HereDoc.Indent) &&\n\t\t\t\t\t\t\tHereDoc.Quoted && HereDoc.DelimiterLength == 0)\n\t\t\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (s[strlen(s) - 1] == '\\r')\n\t\t\t\t\t\ts[strlen(s) - 1] = '\\0';\n\t\t\t\t\tif (strcmp(HereDoc.Delimiter, s) == 0) {\n\t\t\t\t\t\tif ((prefixws == 0) ||\t// indentation rule\n\t\t\t\t\t\t\t(prefixws > 0 && HereDoc.Indent)) {\n\t\t\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_SCALAR:\t// variable names\n\t\t\t\tif (!setParam.Contains(sc.ch)) {\n\t\t\t\t\tif (sc.LengthCurrent() == 1) {\n\t\t\t\t\t\t// Special variable: $(, $_ etc.\n\t\t\t\t\t\tsc.ForwardSetState(SCE_SH_DEFAULT);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_STRING:\t// delimited styles, can nest\n\t\t\tcase SCE_SH_BACKTICKS:\n\t\t\t\tif (sc.ch == '\\\\' && QuoteStack.Up != '\\\\') {\n\t\t\t\t\tif (QuoteStack.Style != BASH_DELIM_LITERAL)\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (sc.ch == QuoteStack.Down) {\n\t\t\t\t\tQuoteStack.Count--;\n\t\t\t\t\tif (QuoteStack.Count == 0) {\n\t\t\t\t\t\tif (QuoteStack.Depth > 0) {\n\t\t\t\t\t\t\tQuoteStack.Pop();\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tsc.ForwardSetState(SCE_SH_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == QuoteStack.Up) {\n\t\t\t\t\tQuoteStack.Count++;\n\t\t\t\t} else {\n\t\t\t\t\tif (QuoteStack.Style == BASH_DELIM_STRING ||\n\t\t\t\t\t\tQuoteStack.Style == BASH_DELIM_LSTRING\n\t\t\t\t\t) {\t// do nesting for \"string\", $\"locale-string\"\n\t\t\t\t\t\tif (sc.ch == '`') {\n\t\t\t\t\t\t\tQuoteStack.Push(sc.ch, BASH_DELIM_BACKTICK);\n\t\t\t\t\t\t} else if (sc.ch == '$' && sc.chNext == '(') {\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\tQuoteStack.Push(sc.ch, BASH_DELIM_COMMAND);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (QuoteStack.Style == BASH_DELIM_COMMAND ||\n\t\t\t\t\t\t\t   QuoteStack.Style == BASH_DELIM_BACKTICK\n\t\t\t\t\t) {\t// do nesting for $(command), `command`\n\t\t\t\t\t\tif (sc.ch == '\\'') {\n\t\t\t\t\t\t\tQuoteStack.Push(sc.ch, BASH_DELIM_LITERAL);\n\t\t\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\t\t\tQuoteStack.Push(sc.ch, BASH_DELIM_STRING);\n\t\t\t\t\t\t} else if (sc.ch == '`') {\n\t\t\t\t\t\t\tQuoteStack.Push(sc.ch, BASH_DELIM_BACKTICK);\n\t\t\t\t\t\t} else if (sc.ch == '$') {\n\t\t\t\t\t\t\tif (sc.chNext == '\\'') {\n\t\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\t\tQuoteStack.Push(sc.ch, BASH_DELIM_CSTRING);\n\t\t\t\t\t\t\t} else if (sc.chNext == '\\\"') {\n\t\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\t\tQuoteStack.Push(sc.ch, BASH_DELIM_LSTRING);\n\t\t\t\t\t\t\t} else if (sc.chNext == '(') {\n\t\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\t\tQuoteStack.Push(sc.ch, BASH_DELIM_COMMAND);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_PARAM: // ${parameter}\n\t\t\t\tif (sc.ch == '\\\\' && Quote.Up != '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (sc.ch == Quote.Down) {\n\t\t\t\t\tQuote.Count--;\n\t\t\t\t\tif (Quote.Count == 0) {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_SH_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == Quote.Up) {\n\t\t\t\t\tQuote.Count++;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_SH_CHARACTER: // singly-quoted strings\n\t\t\t\tif (sc.ch == Quote.Down) {\n\t\t\t\t\tQuote.Count--;\n\t\t\t\t\tif (Quote.Count == 0) {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_SH_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Must check end of HereDoc state 1 before default state is handled\n\t\tif (HereDoc.State == 1 && sc.atLineEnd) {\n\t\t\t// Begin of here-doc (the line after the here-doc delimiter):\n\t\t\t// Lexically, the here-doc starts from the next line after the >>, but the\n\t\t\t// first line of here-doc seem to follow the style of the last EOL sequence\n\t\t\tHereDoc.State = 2;\n\t\t\tif (HereDoc.Quoted) {\n\t\t\t\tif (sc.state == SCE_SH_HERE_DELIM) {\n\t\t\t\t\t// Missing quote at end of string! Syntax error in bash 4.3\n\t\t\t\t\t// Mark this bit as an error, do not colour any here-doc\n\t\t\t\t\tsc.ChangeState(SCE_SH_ERROR);\n\t\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t\t} else {\n\t\t\t\t\t// HereDoc.Quote always == '\\''\n\t\t\t\t\tsc.SetState(SCE_SH_HERE_Q);\n\t\t\t\t}\n\t\t\t} else if (HereDoc.DelimiterLength == 0) {\n\t\t\t\t// no delimiter, illegal (but '' and \"\" are legal)\n\t\t\t\tsc.ChangeState(SCE_SH_ERROR);\n\t\t\t\tsc.SetState(SCE_SH_DEFAULT);\n\t\t\t} else {\n\t\t\t\tsc.SetState(SCE_SH_HERE_Q);\n\t\t\t}\n\t\t}\n\n\t\t// update cmdState about the current command segment\n\t\tif (stylePrev != SCE_SH_DEFAULT && sc.state == SCE_SH_DEFAULT) {\n\t\t\tcmdState = cmdStateNew;\n\t\t}\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_SH_DEFAULT) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\t// Bash can escape any non-newline as a literal\n\t\t\t\tsc.SetState(SCE_SH_IDENTIFIER);\n\t\t\t\tif (sc.chNext == '\\r' || sc.chNext == '\\n')\n\t\t\t\t\tsc.SetState(SCE_SH_OPERATOR);\n\t\t\t} else if (IsADigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_SH_NUMBER);\n\t\t\t\tnumBase = BASH_BASE_DECIMAL;\n\t\t\t\tif (sc.ch == '0') {\t// hex,octal\n\t\t\t\t\tif (sc.chNext == 'x' || sc.chNext == 'X') {\n\t\t\t\t\t\tnumBase = BASH_BASE_HEX;\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} else if (IsADigit(sc.chNext)) {\n#ifdef PEDANTIC_OCTAL\n\t\t\t\t\t\tnumBase = BASH_BASE_OCTAL;\n#else\n\t\t\t\t\t\tnumBase = BASH_BASE_HEX;\n#endif\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (setWordStart.Contains(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_SH_WORD);\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tif (stylePrev != SCE_SH_WORD && stylePrev != SCE_SH_IDENTIFIER &&\n\t\t\t\t\t(sc.currentPos == 0 || setMetaCharacter.Contains(sc.chPrev))) {\n\t\t\t\t\tsc.SetState(SCE_SH_COMMENTLINE);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_SH_WORD);\n\t\t\t\t}\n\t\t\t\t// handle some zsh features within arithmetic expressions only\n\t\t\t\tif (cmdState == BASH_CMD_ARITH) {\n\t\t\t\t\tif (sc.chPrev == '[') {\t// [#8] [##8] output digit setting\n\t\t\t\t\t\tsc.SetState(SCE_SH_WORD);\n\t\t\t\t\t\tif (sc.chNext == '#') {\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (sc.Match(\"##^\") && IsUpperCase(sc.GetRelative(3))) {\t// ##^A\n\t\t\t\t\t\tsc.SetState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t\tsc.Forward(3);\n\t\t\t\t\t} else if (sc.chNext == '#' && !IsASpace(sc.GetRelative(2))) {\t// ##a\n\t\t\t\t\t\tsc.SetState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t\tsc.Forward(2);\n\t\t\t\t\t} else if (setWordStart.Contains(sc.chNext)) {\t// #name\n\t\t\t\t\t\tsc.SetState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_SH_STRING);\n\t\t\t\tQuoteStack.Start(sc.ch, BASH_DELIM_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_SH_CHARACTER);\n\t\t\t\tQuote.Start(sc.ch);\n\t\t\t} else if (sc.ch == '`') {\n\t\t\t\tsc.SetState(SCE_SH_BACKTICKS);\n\t\t\t\tQuoteStack.Start(sc.ch, BASH_DELIM_BACKTICK);\n\t\t\t} else if (sc.ch == '$') {\n\t\t\t\tif (sc.Match(\"$((\")) {\n\t\t\t\t\tsc.SetState(SCE_SH_OPERATOR);\t// handle '((' later\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_SH_SCALAR);\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '{') {\n\t\t\t\t\tsc.ChangeState(SCE_SH_PARAM);\n\t\t\t\t\tQuote.Start(sc.ch);\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tsc.ChangeState(SCE_SH_STRING);\n\t\t\t\t\tQuoteStack.Start(sc.ch, BASH_DELIM_CSTRING);\n\t\t\t\t} else if (sc.ch == '\"') {\n\t\t\t\t\tsc.ChangeState(SCE_SH_STRING);\n\t\t\t\t\tQuoteStack.Start(sc.ch, BASH_DELIM_LSTRING);\n\t\t\t\t} else if (sc.ch == '(') {\n\t\t\t\t\tsc.ChangeState(SCE_SH_BACKTICKS);\n\t\t\t\t\tQuoteStack.Start(sc.ch, BASH_DELIM_COMMAND);\n\t\t\t\t} else if (sc.ch == '`') {\t// $` seen in a configure script, valid?\n\t\t\t\t\tsc.ChangeState(SCE_SH_BACKTICKS);\n\t\t\t\t\tQuoteStack.Start(sc.ch, BASH_DELIM_BACKTICK);\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\t// scalar has no delimiter pair\n\t\t\t\t}\n\t\t\t} else if (sc.Match('<', '<')) {\n\t\t\t\tsc.SetState(SCE_SH_HERE_DELIM);\n\t\t\t\tHereDoc.State = 0;\n\t\t\t\tif (sc.GetRelative(2) == '-') {\t// <<- indent case\n\t\t\t\t\tHereDoc.Indent = true;\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tHereDoc.Indent = false;\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '-'\t&&\t// one-char file test operators\n\t\t\t\t\t   setSingleCharOp.Contains(sc.chNext) &&\n\t\t\t\t\t   !setWord.Contains(sc.GetRelative(2)) &&\n\t\t\t\t\t   IsASpace(sc.chPrev)) {\n\t\t\t\tsc.SetState(SCE_SH_WORD);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (setBashOperator.Contains(sc.ch)) {\n\t\t\t\tchar s[10];\n\t\t\t\tbool isCmdDelim = false;\n\t\t\t\tsc.SetState(SCE_SH_OPERATOR);\n\t\t\t\t// globs have no whitespace, do not appear in arithmetic expressions\n\t\t\t\tif (cmdState != BASH_CMD_ARITH && sc.ch == '(' && sc.chNext != '(') {\n\t\t\t\t\tint i = GlobScan(sc);\n\t\t\t\t\tif (i > 1) {\n\t\t\t\t\t\tsc.SetState(SCE_SH_IDENTIFIER);\n\t\t\t\t\t\tsc.Forward(i);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// handle opening delimiters for test/arithmetic expressions - ((,[[,[\n\t\t\t\tif (cmdState == BASH_CMD_START\n\t\t\t\t || cmdState == BASH_CMD_BODY) {\n\t\t\t\t\tif (sc.Match('(', '(')) {\n\t\t\t\t\t\tcmdState = BASH_CMD_ARITH;\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} else if (sc.Match('[', '[') && IsASpace(sc.GetRelative(2))) {\n\t\t\t\t\t\tcmdState = BASH_CMD_TEST;\n\t\t\t\t\t\ttestExprType = 1;\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} else if (sc.ch == '[' && IsASpace(sc.chNext)) {\n\t\t\t\t\t\tcmdState = BASH_CMD_TEST;\n\t\t\t\t\t\ttestExprType = 2;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// special state -- for ((x;y;z)) in ... looping\n\t\t\t\tif (cmdState == BASH_CMD_WORD && sc.Match('(', '(')) {\n\t\t\t\t\tcmdState = BASH_CMD_ARITH;\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\t// handle command delimiters in command START|BODY|WORD state, also TEST if 'test'\n\t\t\t\tif (cmdState == BASH_CMD_START\n\t\t\t\t || cmdState == BASH_CMD_BODY\n\t\t\t\t || cmdState == BASH_CMD_WORD\n\t\t\t\t || (cmdState == BASH_CMD_TEST && testExprType == 0)) {\n\t\t\t\t\ts[0] = static_cast<char>(sc.ch);\n\t\t\t\t\tif (setBashOperator.Contains(sc.chNext)) {\n\t\t\t\t\t\ts[1] = static_cast<char>(sc.chNext);\n\t\t\t\t\t\ts[2] = '\\0';\n\t\t\t\t\t\tisCmdDelim = cmdDelimiter.InList(s);\n\t\t\t\t\t\tif (isCmdDelim)\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t\tif (!isCmdDelim) {\n\t\t\t\t\t\ts[1] = '\\0';\n\t\t\t\t\t\tisCmdDelim = cmdDelimiter.InList(s);\n\t\t\t\t\t}\n\t\t\t\t\tif (isCmdDelim) {\n\t\t\t\t\t\tcmdState = BASH_CMD_DELIM;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// handle closing delimiters for test/arithmetic expressions - )),]],]\n\t\t\t\tif (cmdState == BASH_CMD_ARITH && sc.Match(')', ')')) {\n\t\t\t\t\tcmdState = BASH_CMD_BODY;\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (cmdState == BASH_CMD_TEST && IsASpace(sc.chPrev)) {\n\t\t\t\t\tif (sc.Match(']', ']') && testExprType == 1) {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\tcmdState = BASH_CMD_BODY;\n\t\t\t\t\t} else if (sc.ch == ']' && testExprType == 2) {\n\t\t\t\t\t\tcmdState = BASH_CMD_BODY;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}// sc.state\n\t}\n\tsc.Complete();\n\tif (sc.state == SCE_SH_HERE_Q) {\n\t\tstyler.ChangeLexerState(sc.currentPos, styler.Length());\n\t}\n\tsc.Complete();\n}\n\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tif (ch == '#')\n\t\t\treturn true;\n\t\telse if (ch != ' ' && ch != '\\t')\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic void FoldBashDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[],\n\t\t\t\t\t\tAccessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tint skipHereCh = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\t// Comment folding\n\t\tif (foldComment && atEOL && IsCommentLine(lineCurrent, styler))\n\t\t{\n\t\t\tif (!IsCommentLine(lineCurrent - 1, styler)\n\t\t\t\t&& IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (IsCommentLine(lineCurrent - 1, styler)\n\t\t\t\t\t && !IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelCurrent--;\n\t\t}\n\t\tif (style == SCE_SH_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\t// Here Document folding\n\t\tif (style == SCE_SH_HERE_DELIM) {\n\t\t\tif (ch == '<' && chNext == '<') {\n\t\t\t\tif (styler.SafeGetCharAt(i + 2) == '<') {\n\t\t\t\t\tskipHereCh = 1;\n\t\t\t\t} else {\n\t\t\t\t\tif (skipHereCh == 0) {\n\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tskipHereCh = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (style == SCE_SH_HERE_Q && styler.StyleAt(i+1) == SCE_SH_DEFAULT) {\n\t\t\tlevelCurrent--;\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const bashWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmBash(SCLEX_BASH, ColouriseBashDoc, \"bash\", FoldBashDoc, bashWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexBasic.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexBasic.cxx\n ** Lexer for BlitzBasic and PureBasic.\n ** Converted to lexer object and added further folding features/properties by \"Udo Lechner\" <dlchnr(at)gmx(dot)net>\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// This tries to be a unified Lexer/Folder for all the BlitzBasic/BlitzMax/PurBasic basics\n// and derivatives. Once they diverge enough, might want to split it into multiple\n// lexers for more code clearity.\n//\n// Mail me (elias <at> users <dot> sf <dot> net) for any bugs.\n\n// Folding only works for simple things like functions or types.\n\n// You may want to have a look at my ctags lexer as well, if you additionally to coloring\n// and folding need to extract things like label tags in your editor.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/* Bits:\n * 1  - whitespace\n * 2  - operator\n * 4  - identifier\n * 8  - decimal digit\n * 16 - hex digit\n * 32 - bin digit\n * 64 - letter\n */\nstatic int character_classification[128] =\n{\n\t\t0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  1,  0,  0,  1,  0,  0,\n\t\t0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,\n\t\t1,  2,  0,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  10, 2,\n\t 60, 60, 28, 28, 28, 28, 28, 28, 28, 28,  2,  2,  2,  2,  2,  2,\n\t\t2, 84, 84, 84, 84, 84, 84, 68, 68, 68, 68, 68, 68, 68, 68, 68,\n\t 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,  2,  2,  2,  2, 68,\n\t\t2, 84, 84, 84, 84, 84, 84, 68, 68, 68, 68, 68, 68, 68, 68, 68,\n\t 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,  2,  2,  2,  2,  0\n};\n\nstatic bool IsSpace(int c) {\n\treturn c < 128 && (character_classification[c] & 1);\n}\n\nstatic bool IsOperator(int c) {\n\treturn c < 128 && (character_classification[c] & 2);\n}\n\nstatic bool IsIdentifier(int c) {\n\treturn c < 128 && (character_classification[c] & 4);\n}\n\nstatic bool IsDigit(int c) {\n\treturn c < 128 && (character_classification[c] & 8);\n}\n\nstatic bool IsHexDigit(int c) {\n\treturn c < 128 && (character_classification[c] & 16);\n}\n\nstatic bool IsBinDigit(int c) {\n\treturn c < 128 && (character_classification[c] & 32);\n}\n\nstatic bool IsLetter(int c) {\n\treturn c < 128 && (character_classification[c] & 64);\n}\n\nstatic int LowerCase(int c)\n{\n\tif (c >= 'A' && c <= 'Z')\n\t\treturn 'a' + c - 'A';\n\treturn c;\n}\n\nstatic int CheckBlitzFoldPoint(char const *token, int &level) {\n\tif (!strcmp(token, \"function\") ||\n\t\t!strcmp(token, \"type\")) {\n\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\treturn 1;\n\t}\n\tif (!strcmp(token, \"end function\") ||\n\t\t!strcmp(token, \"end type\")) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n\nstatic int CheckPureFoldPoint(char const *token, int &level) {\n\tif (!strcmp(token, \"procedure\") ||\n\t\t!strcmp(token, \"enumeration\") ||\n\t\t!strcmp(token, \"interface\") ||\n\t\t!strcmp(token, \"structure\")) {\n\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\treturn 1;\n\t}\n\tif (!strcmp(token, \"endprocedure\") ||\n\t\t!strcmp(token, \"endenumeration\") ||\n\t\t!strcmp(token, \"endinterface\") ||\n\t\t!strcmp(token, \"endstructure\")) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n\nstatic int CheckFreeFoldPoint(char const *token, int &level) {\n\tif (!strcmp(token, \"function\") ||\n\t\t!strcmp(token, \"sub\") ||\n\t\t!strcmp(token, \"enum\") ||\n\t\t!strcmp(token, \"type\") ||\n\t\t!strcmp(token, \"union\") ||\n\t\t!strcmp(token, \"property\") ||\n\t\t!strcmp(token, \"destructor\") ||\n\t\t!strcmp(token, \"constructor\")) {\n\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\treturn 1;\n\t}\n\tif (!strcmp(token, \"end function\") ||\n\t\t!strcmp(token, \"end sub\") ||\n\t\t!strcmp(token, \"end enum\") ||\n\t\t!strcmp(token, \"end type\") ||\n\t\t!strcmp(token, \"end union\") ||\n\t\t!strcmp(token, \"end property\") ||\n\t\t!strcmp(token, \"end destructor\") ||\n\t\t!strcmp(token, \"end constructor\")) {\n\t\treturn -1;\n\t}\n\treturn 0;\n}\n\n// An individual named option for use in an OptionSet\n\n// Options used for LexerBasic\nstruct OptionsBasic {\n\tbool fold;\n\tbool foldSyntaxBased;\n\tbool foldCommentExplicit;\n\tstd::string foldExplicitStart;\n\tstd::string foldExplicitEnd;\n\tbool foldExplicitAnywhere;\n\tbool foldCompact;\n\tOptionsBasic() {\n\t\tfold = false;\n\t\tfoldSyntaxBased = true;\n\t\tfoldCommentExplicit = false;\n\t\tfoldExplicitStart = \"\";\n\t\tfoldExplicitEnd   = \"\";\n\t\tfoldExplicitAnywhere = false;\n\t\tfoldCompact = true;\n\t}\n};\n\nstatic const char * const blitzbasicWordListDesc[] = {\n\t\"BlitzBasic Keywords\",\n\t\"user1\",\n\t\"user2\",\n\t\"user3\",\n\t0\n};\n\nstatic const char * const purebasicWordListDesc[] = {\n\t\"PureBasic Keywords\",\n\t\"PureBasic PreProcessor Keywords\",\n\t\"user defined 1\",\n\t\"user defined 2\",\n\t0\n};\n\nstatic const char * const freebasicWordListDesc[] = {\n\t\"FreeBasic Keywords\",\n\t\"FreeBasic PreProcessor Keywords\",\n\t\"user defined 1\",\n\t\"user defined 2\",\n\t0\n};\n\nstruct OptionSetBasic : public OptionSet<OptionsBasic> {\n\tOptionSetBasic(const char * const wordListDescriptions[]) {\n\t\tDefineProperty(\"fold\", &OptionsBasic::fold);\n\n\t\tDefineProperty(\"fold.basic.syntax.based\", &OptionsBasic::foldSyntaxBased,\n\t\t\t\"Set this property to 0 to disable syntax based folding.\");\n\n\t\tDefineProperty(\"fold.basic.comment.explicit\", &OptionsBasic::foldCommentExplicit,\n\t\t\t\"This option enables folding explicit fold points when using the Basic lexer. \"\n\t\t\t\"Explicit fold points allows adding extra folding by placing a ;{ (BB/PB) or '{ (FB) comment at the start \"\n\t\t\t\"and a ;} (BB/PB) or '} (FB) at the end of a section that should be folded.\");\n\n\t\tDefineProperty(\"fold.basic.explicit.start\", &OptionsBasic::foldExplicitStart,\n\t\t\t\"The string to use for explicit fold start points, replacing the standard ;{ (BB/PB) or '{ (FB).\");\n\n\t\tDefineProperty(\"fold.basic.explicit.end\", &OptionsBasic::foldExplicitEnd,\n\t\t\t\"The string to use for explicit fold end points, replacing the standard ;} (BB/PB) or '} (FB).\");\n\n\t\tDefineProperty(\"fold.basic.explicit.anywhere\", &OptionsBasic::foldExplicitAnywhere,\n\t\t\t\"Set this property to 1 to enable explicit fold points anywhere, not just in line comments.\");\n\n\t\tDefineProperty(\"fold.compact\", &OptionsBasic::foldCompact);\n\n\t\tDefineWordListSets(wordListDescriptions);\n\t}\n};\n\nclass LexerBasic : public ILexer {\n\tchar comment_char;\n\tint (*CheckFoldPoint)(char const *, int &);\n\tWordList keywordlists[4];\n\tOptionsBasic options;\n\tOptionSetBasic osBasic;\npublic:\n\tLexerBasic(char comment_char_, int (*CheckFoldPoint_)(char const *, int &), const char * const wordListDescriptions[]) :\n\t\t\t\t\t\t comment_char(comment_char_),\n\t\t\t\t\t\t CheckFoldPoint(CheckFoldPoint_),\n\t\t\t\t\t\t osBasic(wordListDescriptions) {\n\t}\n\tvirtual ~LexerBasic() {\n\t}\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tint SCI_METHOD Version() const {\n\t\treturn lvOriginal;\n\t}\n\tconst char * SCI_METHOD PropertyNames() {\n\t\treturn osBasic.PropertyNames();\n\t}\n\tint SCI_METHOD PropertyType(const char *name) {\n\t\treturn osBasic.PropertyType(name);\n\t}\n\tconst char * SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn osBasic.DescribeProperty(name);\n\t}\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tconst char * SCI_METHOD DescribeWordListSets() {\n\t\treturn osBasic.DescribeWordListSets();\n\t}\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\tstatic ILexer *LexerFactoryBlitzBasic() {\n\t\treturn new LexerBasic(';', CheckBlitzFoldPoint, blitzbasicWordListDesc);\n\t}\n\tstatic ILexer *LexerFactoryPureBasic() {\n\t\treturn new LexerBasic(';', CheckPureFoldPoint, purebasicWordListDesc);\n\t}\n\tstatic ILexer *LexerFactoryFreeBasic() {\n\t\treturn new LexerBasic('\\'', CheckFreeFoldPoint, freebasicWordListDesc );\n\t}\n};\n\nSci_Position SCI_METHOD LexerBasic::PropertySet(const char *key, const char *val) {\n\tif (osBasic.PropertySet(&options, key, val)) {\n\t\treturn 0;\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerBasic::WordListSet(int n, const char *wl) {\n\tWordList *wordListN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\twordListN = &keywordlists[0];\n\t\tbreak;\n\tcase 1:\n\t\twordListN = &keywordlists[1];\n\t\tbreak;\n\tcase 2:\n\t\twordListN = &keywordlists[2];\n\t\tbreak;\n\tcase 3:\n\t\twordListN = &keywordlists[3];\n\t\tbreak;\n\t}\n\tSci_Position firstModification = -1;\n\tif (wordListN) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nvoid SCI_METHOD LexerBasic::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tLexAccessor styler(pAccess);\n\n\tbool wasfirst = true, isfirst = true; // true if first token in a line\n\tstyler.StartAt(startPos);\n\tint styleBeforeKeyword = SCE_B_DEFAULT;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\t// Can't use sc.More() here else we miss the last character\n\tfor (; ; sc.Forward()) {\n\t\tif (sc.state == SCE_B_IDENTIFIER) {\n\t\t\tif (!IsIdentifier(sc.ch)) {\n\t\t\t\t// Labels\n\t\t\t\tif (wasfirst && sc.Match(':')) {\n\t\t\t\t\tsc.ChangeState(SCE_B_LABEL);\n\t\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t\t} else {\n\t\t\t\t\tchar s[100];\n\t\t\t\t\tint kstates[4] = {\n\t\t\t\t\t\tSCE_B_KEYWORD,\n\t\t\t\t\t\tSCE_B_KEYWORD2,\n\t\t\t\t\t\tSCE_B_KEYWORD3,\n\t\t\t\t\t\tSCE_B_KEYWORD4,\n\t\t\t\t\t};\n\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\tfor (int i = 0; i < 4; i++) {\n\t\t\t\t\t\tif (keywordlists[i].InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(kstates[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Types, must set them as operator else they will be\n\t\t\t\t\t// matched as number/constant\n\t\t\t\t\tif (sc.Match('.') || sc.Match('$') || sc.Match('%') ||\n\t\t\t\t\t\tsc.Match('#')) {\n\t\t\t\t\t\tsc.SetState(SCE_B_OPERATOR);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_OPERATOR) {\n\t\t\tif (!IsOperator(sc.ch) || sc.Match('#'))\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t} else if (sc.state == SCE_B_LABEL) {\n\t\t\tif (!IsIdentifier(sc.ch))\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t} else if (sc.state == SCE_B_CONSTANT) {\n\t\t\tif (!IsIdentifier(sc.ch))\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t} else if (sc.state == SCE_B_NUMBER) {\n\t\t\tif (!IsDigit(sc.ch))\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t} else if (sc.state == SCE_B_HEXNUMBER) {\n\t\t\tif (!IsHexDigit(sc.ch))\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t} else if (sc.state == SCE_B_BINNUMBER) {\n\t\t\tif (!IsBinDigit(sc.ch))\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t} else if (sc.state == SCE_B_STRING) {\n\t\t\tif (sc.ch == '\"') {\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_B_ERROR);\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_COMMENT || sc.state == SCE_B_PREPROCESSOR) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_DOCLINE) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t\t} else if (sc.ch == '\\\\' || sc.ch == '@') {\n\t\t\t\tif (IsLetter(sc.chNext) && sc.chPrev != '\\\\') {\n\t\t\t\t\tstyleBeforeKeyword = sc.state;\n\t\t\t\t\tsc.SetState(SCE_B_DOCKEYWORD);\n\t\t\t\t};\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_DOCKEYWORD) {\n\t\t\tif (IsSpace(sc.ch)) {\n\t\t\t\tsc.SetState(styleBeforeKeyword);\n\t\t\t}\telse if (sc.atLineEnd && styleBeforeKeyword == SCE_B_DOCLINE) {\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_COMMENTBLOCK) {\n\t\t\tif (sc.Match(\"\\'/\")) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_DOCBLOCK) {\n\t\t\tif (sc.Match(\"\\'/\")) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t} else if (sc.ch == '\\\\' || sc.ch == '@') {\n\t\t\t\tif (IsLetter(sc.chNext) && sc.chPrev != '\\\\') {\n\t\t\t\t\tstyleBeforeKeyword = sc.state;\n\t\t\t\t\tsc.SetState(SCE_B_DOCKEYWORD);\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineStart)\n\t\t\tisfirst = true;\n\n\t\tif (sc.state == SCE_B_DEFAULT || sc.state == SCE_B_ERROR) {\n\t\t\tif (isfirst && sc.Match('.') && comment_char != '\\'') {\n\t\t\t\t\tsc.SetState(SCE_B_LABEL);\n\t\t\t} else if (isfirst && sc.Match('#')) {\n\t\t\t\twasfirst = isfirst;\n\t\t\t\tsc.SetState(SCE_B_IDENTIFIER);\n\t\t\t} else if (sc.Match(comment_char)) {\n\t\t\t\t// Hack to make deprecated QBASIC '$Include show\n\t\t\t\t// up in freebasic with SCE_B_PREPROCESSOR.\n\t\t\t\tif (comment_char == '\\'' && sc.Match(comment_char, '$'))\n\t\t\t\t\tsc.SetState(SCE_B_PREPROCESSOR);\n\t\t\t\telse if (sc.Match(\"\\'*\") || sc.Match(\"\\'!\")) {\n\t\t\t\t\tsc.SetState(SCE_B_DOCLINE);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_B_COMMENT);\n\t\t\t\t}\n\t\t\t} else if (sc.Match(\"/\\'\")) {\n\t\t\t\tif (sc.Match(\"/\\'*\") || sc.Match(\"/\\'!\")) {\t// Support of gtk-doc/Doxygen doc. style\n\t\t\t\t\tsc.SetState(SCE_B_DOCBLOCK);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_B_COMMENTBLOCK);\n\t\t\t\t}\n\t\t\t\tsc.Forward();\t// Eat the ' so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('\"')) {\n\t\t\t\tsc.SetState(SCE_B_STRING);\n\t\t\t} else if (IsDigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_B_NUMBER);\n\t\t\t} else if (sc.Match('$') || sc.Match(\"&h\") || sc.Match(\"&H\") || sc.Match(\"&o\") || sc.Match(\"&O\")) {\n\t\t\t\tsc.SetState(SCE_B_HEXNUMBER);\n\t\t\t} else if (sc.Match('%') || sc.Match(\"&b\") || sc.Match(\"&B\")) {\n\t\t\t\tsc.SetState(SCE_B_BINNUMBER);\n\t\t\t} else if (sc.Match('#')) {\n\t\t\t\tsc.SetState(SCE_B_CONSTANT);\n\t\t\t} else if (IsOperator(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_B_OPERATOR);\n\t\t\t} else if (IsIdentifier(sc.ch)) {\n\t\t\t\twasfirst = isfirst;\n\t\t\t\tsc.SetState(SCE_B_IDENTIFIER);\n\t\t\t} else if (!IsSpace(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_B_ERROR);\n\t\t\t}\n\t\t}\n\n\t\tif (!IsSpace(sc.ch))\n\t\t\tisfirst = false;\n\n\t\tif (!sc.More())\n\t\t\tbreak;\n\t}\n\tsc.Complete();\n}\n\n\nvoid SCI_METHOD LexerBasic::Fold(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, IDocument *pAccess) {\n\n\tif (!options.fold)\n\t\treturn;\n\n\tLexAccessor styler(pAccess);\n\n\tSci_Position line = styler.GetLine(startPos);\n\tint level = styler.LevelAt(line);\n\tint go = 0, done = 0;\n\tSci_Position endPos = startPos + length;\n\tchar word[256];\n\tint wordlen = 0;\n\tconst bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty();\n\tint cNext = styler[startPos];\n\n\t// Scan for tokens at the start of the line (they may include\n\t// whitespace, for tokens like \"End Function\"\n\tfor (Sci_Position i = startPos; i < endPos; i++) {\n\t\tint c = cNext;\n\t\tcNext = styler.SafeGetCharAt(i + 1);\n\t\tbool atEOL = (c == '\\r' && cNext != '\\n') || (c == '\\n');\n\t\tif (options.foldSyntaxBased && !done && !go) {\n\t\t\tif (wordlen) { // are we scanning a token already?\n\t\t\t\tword[wordlen] = static_cast<char>(LowerCase(c));\n\t\t\t\tif (!IsIdentifier(c)) { // done with token\n\t\t\t\t\tword[wordlen] = '\\0';\n\t\t\t\t\tgo = CheckFoldPoint(word, level);\n\t\t\t\t\tif (!go) {\n\t\t\t\t\t\t// Treat any whitespace as single blank, for\n\t\t\t\t\t\t// things like \"End   Function\".\n\t\t\t\t\t\tif (IsSpace(c) && IsIdentifier(word[wordlen - 1])) {\n\t\t\t\t\t\t\tword[wordlen] = ' ';\n\t\t\t\t\t\t\tif (wordlen < 255)\n\t\t\t\t\t\t\t\twordlen++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse // done with this line\n\t\t\t\t\t\t\tdone = 1;\n\t\t\t\t\t}\n\t\t\t\t} else if (wordlen < 255) {\n\t\t\t\t\twordlen++;\n\t\t\t\t}\n\t\t\t} else { // start scanning at first non-whitespace character\n\t\t\t\tif (!IsSpace(c)) {\n\t\t\t\t\tif (IsIdentifier(c)) {\n\t\t\t\t\t\tword[0] = static_cast<char>(LowerCase(c));\n\t\t\t\t\t\twordlen = 1;\n\t\t\t\t\t} else // done with this line\n\t\t\t\t\t\tdone = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (options.foldCommentExplicit && ((styler.StyleAt(i) == SCE_B_COMMENT) || options.foldExplicitAnywhere)) {\n\t\t\tif (userDefinedFoldMarkers) {\n\t\t\t\tif (styler.Match(i, options.foldExplicitStart.c_str())) {\n \t\t\t\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t\tgo = 1;\n\t\t\t\t} else if (styler.Match(i, options.foldExplicitEnd.c_str())) {\n \t\t\t\t\tgo = -1;\n \t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (c == comment_char) {\n\t\t\t\t\tif (cNext == '{') {\n\t\t\t\t\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t\t\tgo = 1;\n\t\t\t\t\t} else if (cNext == '}') {\n\t\t\t\t\t\tgo = -1;\n\t\t\t\t\t}\n\t\t\t\t}\n \t\t\t}\n \t\t}\n\t\tif (atEOL) { // line end\n\t\t\tif (!done && wordlen == 0 && options.foldCompact) // line was only space\n\t\t\t\tlevel |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (level != styler.LevelAt(line))\n\t\t\t\tstyler.SetLevel(line, level);\n\t\t\tlevel += go;\n\t\t\tline++;\n\t\t\t// reset state\n\t\t\twordlen = 0;\n\t\t\tlevel &= ~SC_FOLDLEVELHEADERFLAG;\n\t\t\tlevel &= ~SC_FOLDLEVELWHITEFLAG;\n\t\t\tgo = 0;\n\t\t\tdone = 0;\n\t\t}\n\t}\n}\n\nLexerModule lmBlitzBasic(SCLEX_BLITZBASIC, LexerBasic::LexerFactoryBlitzBasic, \"blitzbasic\", blitzbasicWordListDesc);\n\nLexerModule lmPureBasic(SCLEX_PUREBASIC, LexerBasic::LexerFactoryPureBasic, \"purebasic\", purebasicWordListDesc);\n\nLexerModule lmFreeBasic(SCLEX_FREEBASIC, LexerBasic::LexerFactoryFreeBasic, \"freebasic\", freebasicWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexBatch.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexBatch.cxx\n ** Lexer for batch files.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic bool Is0To9(char ch) {\n\treturn (ch >= '0') && (ch <= '9');\n}\n\nstatic bool IsAlphabetic(int ch) {\n\treturn IsASCII(ch) && isalpha(ch);\n}\n\nstatic inline bool AtEOL(Accessor &styler, Sci_PositionU i) {\n\treturn (styler[i] == '\\n') ||\n\t       ((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n'));\n}\n\n// Tests for BATCH Operators\nstatic bool IsBOperator(char ch) {\n\treturn (ch == '=') || (ch == '+') || (ch == '>') || (ch == '<') ||\n\t\t(ch == '|') || (ch == '?') || (ch == '*');\n}\n\n// Tests for BATCH Separators\nstatic bool IsBSeparator(char ch) {\n\treturn (ch == '\\\\') || (ch == '.') || (ch == ';') ||\n\t\t(ch == '\\\"') || (ch == '\\'') || (ch == '/');\n}\n\nstatic void ColouriseBatchLine(\n    char *lineBuffer,\n    Sci_PositionU lengthLine,\n    Sci_PositionU startLine,\n    Sci_PositionU endPos,\n    WordList *keywordlists[],\n    Accessor &styler) {\n\n\tSci_PositionU offset = 0;\t// Line Buffer Offset\n\tSci_PositionU cmdLoc;\t\t// External Command / Program Location\n\tchar wordBuffer[81];\t\t// Word Buffer - large to catch long paths\n\tSci_PositionU wbl;\t\t// Word Buffer Length\n\tSci_PositionU wbo;\t\t// Word Buffer Offset - also Special Keyword Buffer Length\n\tWordList &keywords = *keywordlists[0];      // Internal Commands\n\tWordList &keywords2 = *keywordlists[1];     // External Commands (optional)\n\n\t// CHOICE, ECHO, GOTO, PROMPT and SET have Default Text that may contain Regular Keywords\n\t//   Toggling Regular Keyword Checking off improves readability\n\t// Other Regular Keywords and External Commands / Programs might also benefit from toggling\n\t//   Need a more robust algorithm to properly toggle Regular Keyword Checking\n\tbool continueProcessing = true;\t// Used to toggle Regular Keyword Checking\n\t// Special Keywords are those that allow certain characters without whitespace after the command\n\t// Examples are: cd. cd\\ md. rd. dir| dir> echo: echo. path=\n\t// Special Keyword Buffer used to determine if the first n characters is a Keyword\n\tchar sKeywordBuffer[10];\t// Special Keyword Buffer\n\tbool sKeywordFound;\t\t// Exit Special Keyword for-loop if found\n\n\t// Skip initial spaces\n\twhile ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) {\n\t\toffset++;\n\t}\n\t// Colorize Default Text\n\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT);\n\t// Set External Command / Program Location\n\tcmdLoc = offset;\n\n\t// Check for Fake Label (Comment) or Real Label - return if found\n\tif (lineBuffer[offset] == ':') {\n\t\tif (lineBuffer[offset + 1] == ':') {\n\t\t\t// Colorize Fake Label (Comment) - :: is similar to REM, see http://content.techweb.com/winmag/columns/explorer/2000/21.htm\n\t\t\tstyler.ColourTo(endPos, SCE_BAT_COMMENT);\n\t\t} else {\n\t\t\t// Colorize Real Label\n\t\t\tstyler.ColourTo(endPos, SCE_BAT_LABEL);\n\t\t}\n\t\treturn;\n\t// Check for Drive Change (Drive Change is internal command) - return if found\n\t} else if ((IsAlphabetic(lineBuffer[offset])) &&\n\t\t(lineBuffer[offset + 1] == ':') &&\n\t\t((isspacechar(lineBuffer[offset + 2])) ||\n\t\t(((lineBuffer[offset + 2] == '\\\\')) &&\n\t\t(isspacechar(lineBuffer[offset + 3]))))) {\n\t\t// Colorize Regular Keyword\n\t\tstyler.ColourTo(endPos, SCE_BAT_WORD);\n\t\treturn;\n\t}\n\n\t// Check for Hide Command (@ECHO OFF/ON)\n\tif (lineBuffer[offset] == '@') {\n\t\tstyler.ColourTo(startLine + offset, SCE_BAT_HIDE);\n\t\toffset++;\n\t}\n\t// Skip next spaces\n\twhile ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) {\n\t\toffset++;\n\t}\n\n\t// Read remainder of line word-at-a-time or remainder-of-word-at-a-time\n\twhile (offset < lengthLine) {\n\t\tif (offset > startLine) {\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT);\n\t\t}\n\t\t// Copy word from Line Buffer into Word Buffer\n\t\twbl = 0;\n\t\tfor (; offset < lengthLine && wbl < 80 &&\n\t\t        !isspacechar(lineBuffer[offset]); wbl++, offset++) {\n\t\t\twordBuffer[wbl] = static_cast<char>(tolower(lineBuffer[offset]));\n\t\t}\n\t\twordBuffer[wbl] = '\\0';\n\t\twbo = 0;\n\n\t\t// Check for Comment - return if found\n\t\tif (CompareCaseInsensitive(wordBuffer, \"rem\") == 0) {\n\t\t\tstyler.ColourTo(endPos, SCE_BAT_COMMENT);\n\t\t\treturn;\n\t\t}\n\t\t// Check for Separator\n\t\tif (IsBSeparator(wordBuffer[0])) {\n\t\t\t// Check for External Command / Program\n\t\t\tif ((cmdLoc == offset - wbl) &&\n\t\t\t\t((wordBuffer[0] == ':') ||\n\t\t\t\t(wordBuffer[0] == '\\\\') ||\n\t\t\t\t(wordBuffer[0] == '.'))) {\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 1);\n\t\t\t\t// Colorize External Command / Program\n\t\t\t\tif (!keywords2) {\n\t\t\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND);\n\t\t\t\t} else if (keywords2.InList(wordBuffer)) {\n\t\t\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND);\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT);\n\t\t\t\t}\n\t\t\t\t// Reset External Command / Program Location\n\t\t\t\tcmdLoc = offset;\n\t\t\t} else {\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 1);\n\t\t\t\t// Colorize Default Text\n\t\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT);\n\t\t\t}\n\t\t// Check for Regular Keyword in list\n\t\t} else if ((keywords.InList(wordBuffer)) &&\n\t\t\t(continueProcessing)) {\n\t\t\t// ECHO, GOTO, PROMPT and SET require no further Regular Keyword Checking\n\t\t\tif ((CompareCaseInsensitive(wordBuffer, \"echo\") == 0) ||\n\t\t\t\t(CompareCaseInsensitive(wordBuffer, \"goto\") == 0) ||\n\t\t\t\t(CompareCaseInsensitive(wordBuffer, \"prompt\") == 0) ||\n\t\t\t\t(CompareCaseInsensitive(wordBuffer, \"set\") == 0)) {\n\t\t\t\tcontinueProcessing = false;\n\t\t\t}\n\t\t\t// Identify External Command / Program Location for ERRORLEVEL, and EXIST\n\t\t\tif ((CompareCaseInsensitive(wordBuffer, \"errorlevel\") == 0) ||\n\t\t\t\t(CompareCaseInsensitive(wordBuffer, \"exist\") == 0)) {\n\t\t\t\t// Reset External Command / Program Location\n\t\t\t\tcmdLoc = offset;\n\t\t\t\t// Skip next spaces\n\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t(isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\tcmdLoc++;\n\t\t\t\t}\n\t\t\t\t// Skip comparison\n\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t(!isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\tcmdLoc++;\n\t\t\t\t}\n\t\t\t\t// Skip next spaces\n\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t(isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\tcmdLoc++;\n\t\t\t\t}\n\t\t\t// Identify External Command / Program Location for CALL, DO, LOADHIGH and LH\n\t\t\t} else if ((CompareCaseInsensitive(wordBuffer, \"call\") == 0) ||\n\t\t\t\t(CompareCaseInsensitive(wordBuffer, \"do\") == 0) ||\n\t\t\t\t(CompareCaseInsensitive(wordBuffer, \"loadhigh\") == 0) ||\n\t\t\t\t(CompareCaseInsensitive(wordBuffer, \"lh\") == 0)) {\n\t\t\t\t// Reset External Command / Program Location\n\t\t\t\tcmdLoc = offset;\n\t\t\t\t// Skip next spaces\n\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t(isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\tcmdLoc++;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Colorize Regular keyword\n\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_WORD);\n\t\t\t// No need to Reset Offset\n\t\t// Check for Special Keyword in list, External Command / Program, or Default Text\n\t\t} else if ((wordBuffer[0] != '%') &&\n\t\t\t\t   (wordBuffer[0] != '!') &&\n\t\t\t(!IsBOperator(wordBuffer[0])) &&\n\t\t\t(continueProcessing)) {\n\t\t\t// Check for Special Keyword\n\t\t\t//     Affected Commands are in Length range 2-6\n\t\t\t//     Good that ERRORLEVEL, EXIST, CALL, DO, LOADHIGH, and LH are unaffected\n\t\t\tsKeywordFound = false;\n\t\t\tfor (Sci_PositionU keywordLength = 2; keywordLength < wbl && keywordLength < 7 && !sKeywordFound; keywordLength++) {\n\t\t\t\twbo = 0;\n\t\t\t\t// Copy Keyword Length from Word Buffer into Special Keyword Buffer\n\t\t\t\tfor (; wbo < keywordLength; wbo++) {\n\t\t\t\t\tsKeywordBuffer[wbo] = static_cast<char>(wordBuffer[wbo]);\n\t\t\t\t}\n\t\t\t\tsKeywordBuffer[wbo] = '\\0';\n\t\t\t\t// Check for Special Keyword in list\n\t\t\t\tif ((keywords.InList(sKeywordBuffer)) &&\n\t\t\t\t\t((IsBOperator(wordBuffer[wbo])) ||\n\t\t\t\t\t(IsBSeparator(wordBuffer[wbo])))) {\n\t\t\t\t\tsKeywordFound = true;\n\t\t\t\t\t// ECHO requires no further Regular Keyword Checking\n\t\t\t\t\tif (CompareCaseInsensitive(sKeywordBuffer, \"echo\") == 0) {\n\t\t\t\t\t\tcontinueProcessing = false;\n\t\t\t\t\t}\n\t\t\t\t\t// Colorize Special Keyword as Regular Keyword\n\t\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_WORD);\n\t\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\t\toffset -= (wbl - wbo);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check for External Command / Program or Default Text\n\t\t\tif (!sKeywordFound) {\n\t\t\t\twbo = 0;\n\t\t\t\t// Check for External Command / Program\n\t\t\t\tif (cmdLoc == offset - wbl) {\n\t\t\t\t\t// Read up to %, Operator or Separator\n\t\t\t\t\twhile ((wbo < wbl) &&\n\t\t\t\t\t\t(wordBuffer[wbo] != '%') &&\n\t\t\t\t\t\t(wordBuffer[wbo] != '!') &&\n\t\t\t\t\t\t(!IsBOperator(wordBuffer[wbo])) &&\n\t\t\t\t\t\t(!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\t\t\twbo++;\n\t\t\t\t\t}\n\t\t\t\t\t// Reset External Command / Program Location\n\t\t\t\t\tcmdLoc = offset - (wbl - wbo);\n\t\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\t\toffset -= (wbl - wbo);\n\t\t\t\t\t// CHOICE requires no further Regular Keyword Checking\n\t\t\t\t\tif (CompareCaseInsensitive(wordBuffer, \"choice\") == 0) {\n\t\t\t\t\t\tcontinueProcessing = false;\n\t\t\t\t\t}\n\t\t\t\t\t// Check for START (and its switches) - What follows is External Command \\ Program\n\t\t\t\t\tif (CompareCaseInsensitive(wordBuffer, \"start\") == 0) {\n\t\t\t\t\t\t// Reset External Command / Program Location\n\t\t\t\t\t\tcmdLoc = offset;\n\t\t\t\t\t\t// Skip next spaces\n\t\t\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t\t\t(isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\t\t\tcmdLoc++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Reset External Command / Program Location if command switch detected\n\t\t\t\t\t\tif (lineBuffer[cmdLoc] == '/') {\n\t\t\t\t\t\t\t// Skip command switch\n\t\t\t\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t\t\t\t(!isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\t\t\t\tcmdLoc++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Skip next spaces\n\t\t\t\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t\t\t\t(isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\t\t\t\tcmdLoc++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Colorize External Command / Program\n\t\t\t\t\tif (!keywords2) {\n\t\t\t\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND);\n\t\t\t\t\t} else if (keywords2.InList(wordBuffer)) {\n\t\t\t\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_COMMAND);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\t// No need to Reset Offset\n\t\t\t\t// Check for Default Text\n\t\t\t\t} else {\n\t\t\t\t\t// Read up to %, Operator or Separator\n\t\t\t\t\twhile ((wbo < wbl) &&\n\t\t\t\t\t\t(wordBuffer[wbo] != '%') &&\n\t\t\t\t\t\t(wordBuffer[wbo] != '!') &&\n\t\t\t\t\t\t(!IsBOperator(wordBuffer[wbo])) &&\n\t\t\t\t\t\t(!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\t\t\twbo++;\n\t\t\t\t\t}\n\t\t\t\t\t// Colorize Default Text\n\t\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_DEFAULT);\n\t\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\t\toffset -= (wbl - wbo);\n\t\t\t\t}\n\t\t\t}\n\t\t// Check for Argument  (%n), Environment Variable (%x...%) or Local Variable (%%a)\n\t\t} else if (wordBuffer[0] == '%') {\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT);\n\t\t\twbo++;\n\t\t\t// Search to end of word for second % (can be a long path)\n\t\t\twhile ((wbo < wbl) &&\n\t\t\t\t(wordBuffer[wbo] != '%') &&\n\t\t\t\t(!IsBOperator(wordBuffer[wbo])) &&\n\t\t\t\t(!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\twbo++;\n\t\t\t}\n\t\t\t// Check for Argument (%n) or (%*)\n\t\t\tif (((Is0To9(wordBuffer[1])) || (wordBuffer[1] == '*')) &&\n\t\t\t\t(wordBuffer[wbo] != '%')) {\n\t\t\t\t// Check for External Command / Program\n\t\t\t\tif (cmdLoc == offset - wbl) {\n\t\t\t\t\tcmdLoc = offset - (wbl - 2);\n\t\t\t\t}\n\t\t\t\t// Colorize Argument\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 2), SCE_BAT_IDENTIFIER);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 2);\n\t\t\t// Check for Expanded Argument (%~...) / Variable (%%~...)\n\t\t\t} else if (((wbl > 1) && (wordBuffer[1] == '~')) ||\n\t\t\t\t((wbl > 2) && (wordBuffer[1] == '%') && (wordBuffer[2] == '~'))) {\n\t\t\t\t// Check for External Command / Program\n\t\t\t\tif (cmdLoc == offset - wbl) {\n\t\t\t\t\tcmdLoc = offset - (wbl - wbo);\n\t\t\t\t}\n\t\t\t\t// Colorize Expanded Argument / Variable\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - wbo);\n\t\t\t// Check for Environment Variable (%x...%)\n\t\t\t} else if ((wordBuffer[1] != '%') &&\n\t\t\t\t(wordBuffer[wbo] == '%')) {\n\t\t\t\twbo++;\n\t\t\t\t// Check for External Command / Program\n\t\t\t\tif (cmdLoc == offset - wbl) {\n\t\t\t\t\tcmdLoc = offset - (wbl - wbo);\n\t\t\t\t}\n\t\t\t\t// Colorize Environment Variable\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - wbo);\n\t\t\t// Check for Local Variable (%%a)\n\t\t\t} else if (\n\t\t\t\t(wbl > 2) &&\n\t\t\t\t(wordBuffer[1] == '%') &&\n\t\t\t\t(wordBuffer[2] != '%') &&\n\t\t\t\t(!IsBOperator(wordBuffer[2])) &&\n\t\t\t\t(!IsBSeparator(wordBuffer[2]))) {\n\t\t\t\t// Check for External Command / Program\n\t\t\t\tif (cmdLoc == offset - wbl) {\n\t\t\t\t\tcmdLoc = offset - (wbl - 3);\n\t\t\t\t}\n\t\t\t\t// Colorize Local Variable\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 3), SCE_BAT_IDENTIFIER);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 3);\n\t\t\t}\n\t\t// Check for Environment Variable (!x...!)\n\t\t} else if (wordBuffer[0] == '!') {\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT);\n\t\t\twbo++;\n\t\t\t// Search to end of word for second ! (can be a long path)\n\t\t\twhile ((wbo < wbl) &&\n\t\t\t\t(wordBuffer[wbo] != '!') &&\n\t\t\t\t(!IsBOperator(wordBuffer[wbo])) &&\n\t\t\t\t(!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\twbo++;\n\t\t\t}\n\t\t\tif (wordBuffer[wbo] == '!') {\n\t\t\t\twbo++;\n\t\t\t\t// Check for External Command / Program\n\t\t\t\tif (cmdLoc == offset - wbl) {\n\t\t\t\t\tcmdLoc = offset - (wbl - wbo);\n\t\t\t\t}\n\t\t\t\t// Colorize Environment Variable\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_IDENTIFIER);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - wbo);\n\t\t\t}\n\t\t// Check for Operator\n\t\t} else if (IsBOperator(wordBuffer[0])) {\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - wbl, SCE_BAT_DEFAULT);\n\t\t\t// Check for Comparison Operator\n\t\t\tif ((wordBuffer[0] == '=') && (wordBuffer[1] == '=')) {\n\t\t\t\t// Identify External Command / Program Location for IF\n\t\t\t\tcmdLoc = offset;\n\t\t\t\t// Skip next spaces\n\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t(isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\tcmdLoc++;\n\t\t\t\t}\n\t\t\t\t// Colorize Comparison Operator\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 2), SCE_BAT_OPERATOR);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 2);\n\t\t\t// Check for Pipe Operator\n\t\t\t} else if (wordBuffer[0] == '|') {\n\t\t\t\t// Reset External Command / Program Location\n\t\t\t\tcmdLoc = offset - wbl + 1;\n\t\t\t\t// Skip next spaces\n\t\t\t\twhile ((cmdLoc < lengthLine) &&\n\t\t\t\t\t(isspacechar(lineBuffer[cmdLoc]))) {\n\t\t\t\t\tcmdLoc++;\n\t\t\t\t}\n\t\t\t\t// Colorize Pipe Operator\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_BAT_OPERATOR);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 1);\n\t\t\t// Check for Other Operator\n\t\t\t} else {\n\t\t\t\t// Check for > Operator\n\t\t\t\tif (wordBuffer[0] == '>') {\n\t\t\t\t\t// Turn Keyword and External Command / Program checking back on\n\t\t\t\t\tcontinueProcessing = true;\n\t\t\t\t}\n\t\t\t\t// Colorize Other Operator\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_BAT_OPERATOR);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 1);\n\t\t\t}\n\t\t// Check for Default Text\n\t\t} else {\n\t\t\t// Read up to %, Operator or Separator\n\t\t\twhile ((wbo < wbl) &&\n\t\t\t\t(wordBuffer[wbo] != '%') &&\n\t\t\t\t(wordBuffer[wbo] != '!') &&\n\t\t\t\t(!IsBOperator(wordBuffer[wbo])) &&\n\t\t\t\t(!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\twbo++;\n\t\t\t}\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_BAT_DEFAULT);\n\t\t\t// Reset Offset to re-process remainder of word\n\t\t\toffset -= (wbl - wbo);\n\t\t}\n\t\t// Skip next spaces - nothing happens if Offset was Reset\n\t\twhile ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) {\n\t\t\toffset++;\n\t\t}\n\t}\n\t// Colorize Default Text for remainder of line - currently not lexed\n\tstyler.ColourTo(endPos, SCE_BAT_DEFAULT);\n}\n\nstatic void ColouriseBatchDoc(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    int /*initStyle*/,\n    WordList *keywordlists[],\n    Accessor &styler) {\n\n\tchar lineBuffer[1024];\n\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tSci_PositionU linePos = 0;\n\tSci_PositionU startLine = startPos;\n\tfor (Sci_PositionU i = startPos; i < startPos + length; i++) {\n\t\tlineBuffer[linePos++] = styler[i];\n\t\tif (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {\n\t\t\t// End of line (or of line buffer) met, colourise it\n\t\t\tlineBuffer[linePos] = '\\0';\n\t\t\tColouriseBatchLine(lineBuffer, linePos, startLine, i, keywordlists, styler);\n\t\t\tlinePos = 0;\n\t\t\tstartLine = i + 1;\n\t\t}\n\t}\n\tif (linePos > 0) {\t// Last line does not have ending characters\n\t\tlineBuffer[linePos] = '\\0';\n\t\tColouriseBatchLine(lineBuffer, linePos, startLine, startPos + length - 1,\n\t\t                   keywordlists, styler);\n\t}\n}\n\nstatic const char *const batchWordListDesc[] = {\n\t\"Internal Commands\",\n\t\"External Commands\",\n\t0\n};\n\nLexerModule lmBatch(SCLEX_BATCH, ColouriseBatchDoc, \"batch\", 0, batchWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexBibTeX.cpp",
    "content": "// Copyright 2008-2010 Sergiu Dotenco. The License.txt file describes the\n// conditions under which this software may be distributed.\n\n/**\n * @file LexBibTeX.cxx\n * @brief General BibTeX coloring scheme.\n * @author Sergiu Dotenco\n * @date April 18, 2009\n */\n\n#include <stdlib.h>\n#include <string.h>\n\n#include <cassert>\n#include <cctype>\n\n#include <string>\n#include <algorithm>\n#include <functional>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nnamespace {\n\tbool IsAlphabetic(unsigned int ch)\n\t{\n\t\treturn IsASCII(ch) && std::isalpha(ch) != 0;\n\t}\n\tbool IsAlphaNumeric(char ch)\n\t{\n\t    return IsASCII(ch) && std::isalnum(ch);\n\t}\n\n\tbool EqualCaseInsensitive(const char* a, const char* b)\n\t{\n\t\treturn CompareCaseInsensitive(a, b) == 0;\n\t}\n\n\tbool EntryWithoutKey(const char* name)\n\t{\n\t\treturn EqualCaseInsensitive(name,\"string\");\n\t}\n\n\tchar GetClosingBrace(char openbrace)\n\t{\n\t\tchar result = openbrace;\n\n\t\tswitch (openbrace) {\n\t\t\tcase '(': result = ')'; break;\n\t\t\tcase '{': result = '}'; break;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tbool IsEntryStart(char prev, char ch)\n\t{\n\t\treturn prev != '\\\\' && ch == '@';\n\t}\n\n\tbool IsEntryStart(const StyleContext& sc)\n\t{\n\t\treturn IsEntryStart(sc.chPrev, sc.ch);\n\t}\n\n\tvoid ColorizeBibTeX(Sci_PositionU start_pos, Sci_Position length, int /*init_style*/, WordList* keywordlists[], Accessor& styler)\n\t{\n\t    WordList &EntryNames = *keywordlists[0];\n\t\tbool fold_compact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\n\t\tstd::string buffer;\n\t\tbuffer.reserve(25);\n\n\t\t// We always colorize a section from the beginning, so let's\n\t\t// search for the @ character which isn't escaped, i.e. \\@\n\t\twhile (start_pos > 0 && !IsEntryStart(styler.SafeGetCharAt(start_pos - 1),\n\t\t\tstyler.SafeGetCharAt(start_pos))) {\n\t\t\t--start_pos; ++length;\n\t\t}\n\n\t\tstyler.StartAt(start_pos);\n\t\tstyler.StartSegment(start_pos);\n\n\t\tSci_Position current_line = styler.GetLine(start_pos);\n\t\tint prev_level = styler.LevelAt(current_line) & SC_FOLDLEVELNUMBERMASK;\n\t\tint current_level = prev_level;\n\t\tint visible_chars = 0;\n\n\t\tbool in_comment = false ;\n\t\tStyleContext sc(start_pos, length, SCE_BIBTEX_DEFAULT, styler);\n\n\t\tbool going = sc.More(); // needed because of a fuzzy end of file state\n\t\tchar closing_brace = 0;\n\t\tbool collect_entry_name = false;\n\n\t\tfor (; going; sc.Forward()) {\n\t\t\tif (!sc.More())\n\t\t\t\tgoing = false; // we need to go one behind the end of text\n\n\t\t\tif (in_comment) {\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_BIBTEX_DEFAULT);\n\t\t\t\t\tin_comment = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Found @entry\n\t\t\t\tif (IsEntryStart(sc)) {\n\t\t\t\t\tsc.SetState(SCE_BIBTEX_UNKNOWN_ENTRY);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\t++current_level;\n\n\t\t\t\t\tbuffer.clear();\n\t\t\t\t\tcollect_entry_name = true;\n\t\t\t\t}\n\t\t\t\telse if ((sc.state == SCE_BIBTEX_ENTRY || sc.state == SCE_BIBTEX_UNKNOWN_ENTRY)\n\t\t\t\t\t&& (sc.ch == '{' || sc.ch == '(')) {\n\t\t\t\t\t// Entry name colorization done\n\t\t\t\t\t// Found either a { or a ( after entry's name, e.g. @entry(...) @entry{...}\n\t\t\t\t\t// Closing counterpart needs to be stored.\n\t\t\t\t\tclosing_brace = GetClosingBrace(sc.ch);\n\n\t\t\t\t\tsc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize { (\n\n\t\t\t\t\t// @string doesn't have any key\n\t\t\t\t\tif (EntryWithoutKey(buffer.c_str()))\n\t\t\t\t\t\tsc.ForwardSetState(SCE_BIBTEX_PARAMETER);\n\t\t\t\t\telse\n\t\t\t\t\t\tsc.ForwardSetState(SCE_BIBTEX_KEY); // Key/label colorization\n\t\t\t\t}\n\n\t\t\t\t// Need to handle the case where entry's key is empty\n\t\t\t\t// e.g. @book{,...}\n\t\t\t\tif (sc.state == SCE_BIBTEX_KEY && sc.ch == ',') {\n\t\t\t\t\t// Key/label colorization done\n\t\t\t\t\tsc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize the ,\n\t\t\t\t\tsc.ForwardSetState(SCE_BIBTEX_PARAMETER); // Parameter colorization\n\t\t\t\t}\n\t\t\t\telse if (sc.state == SCE_BIBTEX_PARAMETER && sc.ch == '=') {\n\t\t\t\t\tsc.SetState(SCE_BIBTEX_DEFAULT); // Don't colorize the =\n\t\t\t\t\tsc.ForwardSetState(SCE_BIBTEX_VALUE); // Parameter value colorization\n\n\t\t\t\t\tSci_Position start = sc.currentPos;\n\n\t\t\t\t\t// We need to handle multiple situations:\n\t\t\t\t\t// 1. name\"one two {three}\"\n\t\t\t\t\t// 2. name={one {one two {two}} three}\n\t\t\t\t\t// 3. year=2005\n\n\t\t\t\t\t// Skip \", { until we encounter the first alphanumerical character\n\t\t\t\t\twhile (sc.More() && !(IsAlphaNumeric(sc.ch) || sc.ch == '\"' || sc.ch == '{'))\n\t\t\t\t\t\tsc.Forward();\n\n\t\t\t\t\tif (sc.More()) {\n\t\t\t\t\t\t// Store \" or {\n\t\t\t\t\t\tchar ch = sc.ch;\n\n\t\t\t\t\t\t// Not interested in alphanumerical characters\n\t\t\t\t\t\tif (IsAlphaNumeric(ch))\n\t\t\t\t\t\t\tch = 0;\n\n\t\t\t\t\t\tint skipped = 0;\n\n\t\t\t\t\t\tif (ch) {\n\t\t\t\t\t\t\t// Skip preceding \" or { such as in name={{test}}.\n\t\t\t\t\t\t\t// Remember how many characters have been skipped\n\t\t\t\t\t\t\t// Make sure that empty values, i.e. \"\" are also handled correctly\n\t\t\t\t\t\t\twhile (sc.More() && (sc.ch == ch && (ch != '\"' || skipped < 1))) {\n\t\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\t\t++skipped;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Closing counterpart for \" is the same character\n\t\t\t\t\t\tif (ch == '{')\n\t\t\t\t\t\t\tch = '}';\n\n\t\t\t\t\t\t// We have reached the parameter value\n\t\t\t\t\t\t// In case the open character was a alnum char, skip until , is found\n\t\t\t\t\t\t// otherwise until skipped == 0\n\t\t\t\t\t\twhile (sc.More() && (skipped > 0 || (!ch && !(sc.ch == ',' || sc.ch == closing_brace)))) {\n\t\t\t\t\t\t\t// Make sure the character isn't escaped\n\t\t\t\t\t\t\tif (sc.chPrev != '\\\\') {\n\t\t\t\t\t\t\t\t// Parameter value contains a { which is the 2nd case described above\n\t\t\t\t\t\t\t\tif (sc.ch == '{')\n\t\t\t\t\t\t\t\t\t++skipped; // Remember it\n\t\t\t\t\t\t\t\telse if (sc.ch == '}')\n\t\t\t\t\t\t\t\t\t--skipped;\n\t\t\t\t\t\t\t\telse if (skipped == 1 && sc.ch == ch && ch == '\"') // Don't ignore cases like {\"o}\n\t\t\t\t\t\t\t\t\tskipped = 0;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Don't colorize the ,\n\t\t\t\t\tsc.SetState(SCE_BIBTEX_DEFAULT);\n\n\t\t\t\t\t// Skip until the , or entry's closing closing_brace is found\n\t\t\t\t\t// since this parameter might be the last one\n\t\t\t\t\twhile (sc.More() && !(sc.ch == ',' || sc.ch == closing_brace))\n\t\t\t\t\t\tsc.Forward();\n\n\t\t\t\t\tint state = SCE_BIBTEX_PARAMETER; // The might be more parameters\n\n\t\t\t\t\t// We've reached the closing closing_brace for the bib entry\n\t\t\t\t\t// in case no \" or {} has been used to enclose the value,\n\t\t\t\t\t// as in 3rd case described above\n\t\t\t\t\tif (sc.ch == closing_brace) {\n\t\t\t\t\t\t--current_level;\n\t\t\t\t\t\t// Make sure the text between entries is not colored\n\t\t\t\t\t\t// using parameter's style\n\t\t\t\t\t\tstate = SCE_BIBTEX_DEFAULT;\n\t\t\t\t\t}\n\n\t\t\t\t\tSci_Position end = sc.currentPos;\n\t\t\t\t\tcurrent_line = styler.GetLine(end);\n\n\t\t\t\t\t// We have possibly skipped some lines, so the folding levels\n\t\t\t\t\t// have to be adjusted separately\n\t\t\t\t\tfor (Sci_Position i = styler.GetLine(start); i <= styler.GetLine(end); ++i)\n\t\t\t\t\t\tstyler.SetLevel(i, prev_level);\n\n\t\t\t\t\tsc.ForwardSetState(state);\n\t\t\t\t}\n\n\t\t\t\tif (sc.state == SCE_BIBTEX_PARAMETER && sc.ch == closing_brace) {\n\t\t\t\t\tsc.SetState(SCE_BIBTEX_DEFAULT);\n\t\t\t\t\t--current_level;\n\t\t\t\t}\n\n\t\t\t\t// Non escaped % found which represents a comment until the end of the line\n\t\t\t\tif (sc.chPrev != '\\\\' && sc.ch == '%') {\n\t\t\t\t\tin_comment = true;\n\t\t\t\t\tsc.SetState(SCE_BIBTEX_COMMENT);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (sc.state == SCE_BIBTEX_UNKNOWN_ENTRY || sc.state == SCE_BIBTEX_ENTRY) {\n\t\t\t\tif (!IsAlphabetic(sc.ch) && collect_entry_name)\n\t\t\t\t\tcollect_entry_name = false;\n\n\t\t\t\tif (collect_entry_name) {\n\t\t\t\t\tbuffer += static_cast<char>(tolower(sc.ch));\n                    if (EntryNames.InList(buffer.c_str()))\n                        sc.ChangeState(SCE_BIBTEX_ENTRY);\n                    else\n                        sc.ChangeState(SCE_BIBTEX_UNKNOWN_ENTRY);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tint level = prev_level;\n\n\t\t\t\tif (visible_chars == 0 && fold_compact)\n\t\t\t\t\tlevel |= SC_FOLDLEVELWHITEFLAG;\n\n\t\t\t\tif ((current_level > prev_level))\n\t\t\t\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t// else if (current_level < prev_level)\n\t\t\t\t//\tlevel |= SC_FOLDLEVELBOXFOOTERFLAG; // Deprecated\n\n\t\t\t\tif (level != styler.LevelAt(current_line)) {\n\t\t\t\t\tstyler.SetLevel(current_line, level);\n\t\t\t\t}\n\n\t\t\t\t++current_line;\n\t\t\t\tprev_level = current_level;\n\t\t\t\tvisible_chars = 0;\n\t\t\t}\n\n\t\t\tif (!isspacechar(sc.ch))\n\t\t\t\t++visible_chars;\n\t\t}\n\n\t\tsc.Complete();\n\n\t\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\t\tint flagsNext = styler.LevelAt(current_line) & ~SC_FOLDLEVELNUMBERMASK;\n\t\tstyler.SetLevel(current_line, prev_level | flagsNext);\n\t}\n}\nstatic const char * const BibTeXWordLists[] = {\n            \"Entry Names\",\n            0,\n};\n\n\nLexerModule lmBibTeX(SCLEX_BIBTEX, ColorizeBibTeX, \"bib\", 0, BibTeXWordLists);\n\n// Entry Names\n//    article, book, booklet, conference, inbook,\n//    incollection, inproceedings, manual, mastersthesis,\n//    misc, phdthesis, proceedings, techreport, unpublished,\n//    string, url\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexBullant.cpp",
    "content": "// SciTE - Scintilla based Text Editor\n// LexBullant.cxx - lexer for Bullant\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic int classifyWordBullant(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) {\n\tchar s[100];\n\ts[0] = '\\0';\n\tfor (Sci_PositionU i = 0; i < end - start + 1 && i < 30; i++) {\n\t\ts[i] = static_cast<char>(tolower(styler[start + i]));\n\t\ts[i + 1] = '\\0';\n\t}\n\tint lev= 0;\n\tchar chAttr = SCE_C_IDENTIFIER;\n\tif (isdigit(s[0]) || (s[0] == '.')){\n\t\tchAttr = SCE_C_NUMBER;\n\t}\n\telse {\n\t\tif (keywords.InList(s)) {\n\t\t\tchAttr = SCE_C_WORD;\n\t\t\tif (strcmp(s, \"end\") == 0)\n\t\t\t\tlev = -1;\n\t\t\telse if (strcmp(s, \"method\") == 0 ||\n\t\t\t\tstrcmp(s, \"case\") == 0 ||\n\t\t\t\tstrcmp(s, \"class\") == 0 ||\n\t\t\t\tstrcmp(s, \"debug\") == 0 ||\n\t\t\t\tstrcmp(s, \"test\") == 0 ||\n\t\t\t\tstrcmp(s, \"if\") == 0 ||\n\t\t\t\tstrcmp(s, \"lock\") == 0 ||\n\t\t\t\tstrcmp(s, \"transaction\") == 0 ||\n\t\t\t\tstrcmp(s, \"trap\") == 0 ||\n\t\t\t\tstrcmp(s, \"until\") == 0 ||\n\t\t\t\tstrcmp(s, \"while\") == 0)\n\t\t\t\tlev = 1;\n\t\t}\n\t}\n\tstyler.ColourTo(end, chAttr);\n\treturn lev;\n}\n\nstatic void ColouriseBullantDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n\tAccessor &styler) {\n\tWordList &keywords = *keywordlists[0];\n\n\tstyler.StartAt(startPos);\n\n\tbool fold = styler.GetPropertyInt(\"fold\") != 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\n\tint state = initStyle;\n\tif (state == SCE_C_STRINGEOL)\t// Does not leak onto next line\n\t\tstate = SCE_C_DEFAULT;\n\tchar chPrev = ' ';\n\tchar chNext = styler[startPos];\n\tSci_PositionU lengthDoc = startPos + length;\n\tint visibleChars = 0;\n\tstyler.StartSegment(startPos);\n\tint endFoundThisLine = 0;\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n')) {\n\t\t\t// Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix)\n\t\t\t// Avoid triggering two times on Dos/Win\n\t\t\t// End of line\n\t\t\tendFoundThisLine = 0;\n\t\t\tif (state == SCE_C_STRINGEOL) {\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t}\n\t\t\tif (fold) {\n\t\t\t\tint lev = levelPrev;\n\t\t\t\tif (visibleChars == 0)\n\t\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t\tlineCurrent++;\n\t\t\t\tlevelPrev = levelCurrent;\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\n/*\t\t\tint indentBlock = GetLineIndentation(lineCurrent);\n\t\t\tif (blockChange==1){\n\t\t\t\tlineCurrent++;\n\t\t\t\tint pos=SetLineIndentation(lineCurrent, indentBlock + indentSize);\n\t\t\t} else if (blockChange==-1) {\n\t\t\t\tindentBlock -= indentSize;\n\t\t\t\tif (indentBlock < 0)\n\t\t\t\t\tindentBlock = 0;\n\t\t\t\tSetLineIndentation(lineCurrent, indentBlock);\n\t\t\t\tlineCurrent++;\n\t\t\t}\n\t\t\tblockChange=0;\n*/\t\t}\n\t\tif (!(IsASCII(ch) && isspace(ch)))\n\t\t\tvisibleChars++;\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\tchNext = styler.SafeGetCharAt(i + 2);\n\t\t\tchPrev = ' ';\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (state == SCE_C_DEFAULT) {\n\t\t\tif (iswordstart(ch)) {\n\t\t\t\tstyler.ColourTo(i-1, state);\n\t\t\t\t\tstate = SCE_C_IDENTIFIER;\n\t\t\t} else if (ch == '@' && chNext == 'o') {\n\t\t\t\tif ((styler.SafeGetCharAt(i+2) =='f') && (styler.SafeGetCharAt(i+3) == 'f')) {\n\t\t\t\t\tstyler.ColourTo(i-1, state);\n\t\t\t\t\tstate = SCE_C_COMMENT;\n\t\t\t\t}\n\t\t\t} else if (ch == '#') {\n\t\t\t\tstyler.ColourTo(i-1, state);\n\t\t\t\tstate = SCE_C_COMMENTLINE;\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i-1, state);\n\t\t\t\tstate = SCE_C_STRING;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i-1, state);\n\t\t\t\tstate = SCE_C_CHARACTER;\n\t\t\t} else if (isoperator(ch)) {\n\t\t\t\tstyler.ColourTo(i-1, state);\n\t\t\t\tstyler.ColourTo(i, SCE_C_OPERATOR);\n\t\t\t}\n\t\t} else if (state == SCE_C_IDENTIFIER) {\n\t\t\tif (!iswordchar(ch)) {\n\t\t\t\tint levelChange = classifyWordBullant(styler.GetStartSegment(), i - 1, keywords, styler);\n\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\tif (ch == '#') {\n\t\t\t\t\tstate = SCE_C_COMMENTLINE;\n\t\t\t\t} else if (ch == '\\\"') {\n\t\t\t\t\tstate = SCE_C_STRING;\n\t\t\t\t} else if (ch == '\\'') {\n\t\t\t\t\tstate = SCE_C_CHARACTER;\n\t\t\t\t} else if (isoperator(ch)) {\n\t\t\t\t\tstyler.ColourTo(i, SCE_C_OPERATOR);\n\t\t\t\t}\n\t\t\t\tif (endFoundThisLine == 0)\n\t\t\t\t\tlevelCurrent+=levelChange;\n\t\t\t\tif (levelChange == -1)\n\t\t\t\t\tendFoundThisLine=1;\n\t\t\t}\n\t\t} else if (state == SCE_C_COMMENT) {\n\t\t\tif (ch == '@' && chNext == 'o') {\n\t\t\t\tif (styler.SafeGetCharAt(i+2) == 'n') {\n\t\t\t\t\tstyler.ColourTo(i+2, state);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t\ti+=2;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (state == SCE_C_COMMENTLINE) {\n\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\tendFoundThisLine = 0;\n\t\t\t\tstyler.ColourTo(i-1, state);\n\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_C_STRING) {\n\t\t\tif (ch == '\\\\') {\n\t\t\t\tif (chNext == '\\\"' || chNext == '\\'' || chNext == '\\\\') {\n\t\t\t\t\ti++;\n\t\t\t\t\tch = chNext;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t}\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t} else if (chNext == '\\r' || chNext == '\\n') {\n\t\t\t\tendFoundThisLine = 0;\n\t\t\t\tstyler.ColourTo(i-1, SCE_C_STRINGEOL);\n\t\t\t\tstate = SCE_C_STRINGEOL;\n\t\t\t}\n\t\t} else if (state == SCE_C_CHARACTER) {\n\t\t\tif ((ch == '\\r' || ch == '\\n') && (chPrev != '\\\\')) {\n\t\t\t\tendFoundThisLine = 0;\n\t\t\t\tstyler.ColourTo(i-1, SCE_C_STRINGEOL);\n\t\t\t\tstate = SCE_C_STRINGEOL;\n\t\t\t} else if (ch == '\\\\') {\n\t\t\t\tif (chNext == '\\\"' || chNext == '\\'' || chNext == '\\\\') {\n\t\t\t\t\ti++;\n\t\t\t\t\tch = chNext;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t}\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t}\n\t\t}\n\t\tchPrev = ch;\n\t}\n\tstyler.ColourTo(lengthDoc - 1, state);\n\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tif (fold) {\n\t\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\t\t//styler.SetLevel(lineCurrent, levelCurrent | flagsNext);\n\t\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n\n\t}\n}\n\nstatic const char * const bullantWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmBullant(SCLEX_BULLANT, ColouriseBullantDoc, \"bullant\", 0, bullantWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCLW.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexClw.cxx\n ** Lexer for Clarion.\n ** 2004/12/17 Updated Lexer\n **/\n// Copyright 2003-2004 by Ron Schofield <ron@schofieldcomputer.com>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Is an end of line character\ninline bool IsEOL(const int ch) {\n\n\treturn(ch == '\\n');\n}\n\n// Convert character to uppercase\nstatic char CharacterUpper(char chChar) {\n\n\tif (chChar < 'a' || chChar > 'z') {\n\t\treturn(chChar);\n\t}\n\telse {\n\t\treturn(static_cast<char>(chChar - 'a' + 'A'));\n\t}\n}\n\n// Convert string to uppercase\nstatic void StringUpper(char *szString) {\n\n\twhile (*szString) {\n\t\t*szString = CharacterUpper(*szString);\n\t\tszString++;\n\t}\n}\n\n// Is a label start character\ninline bool IsALabelStart(const int iChar) {\n\n\treturn(isalpha(iChar) || iChar == '_');\n}\n\n// Is a label character\ninline bool IsALabelCharacter(const int iChar) {\n\n\treturn(isalnum(iChar) || iChar == '_' || iChar == ':');\n}\n\n// Is the character is a ! and the the next character is not a !\ninline bool IsACommentStart(const int iChar) {\n\n\treturn(iChar == '!');\n}\n\n// Is the character a Clarion hex character (ABCDEF)\ninline bool IsAHexCharacter(const int iChar, bool bCaseSensitive) {\n\n\t// Case insensitive.\n\tif (!bCaseSensitive) {\n\t\tif (strchr(\"ABCDEFabcdef\", iChar) != NULL) {\n\t\t\treturn(true);\n\t\t}\n\t}\n\t// Case sensitive\n\telse {\n\t\tif (strchr(\"ABCDEF\", iChar) != NULL) {\n\t\t\treturn(true);\n\t\t}\n\t}\n\treturn(false);\n}\n\n// Is the character a Clarion base character (B=Binary, O=Octal, H=Hex)\ninline bool IsANumericBaseCharacter(const int iChar, bool bCaseSensitive) {\n\n\t// Case insensitive.\n\tif (!bCaseSensitive) {\n\t\t// If character is a numeric base character\n\t\tif (strchr(\"BOHboh\", iChar) != NULL) {\n\t\t\treturn(true);\n\t\t}\n\t}\n\t// Case sensitive\n\telse {\n\t\t// If character is a numeric base character\n\t\tif (strchr(\"BOH\", iChar) != NULL) {\n\t\t\treturn(true);\n\t\t}\n\t}\n\treturn(false);\n}\n\n// Set the correct numeric constant state\ninline bool SetNumericConstantState(StyleContext &scDoc) {\n\n\tint iPoints = 0;\t\t\t// Point counter\n\tchar cNumericString[512];\t// Numeric string buffer\n\n\t// Buffer the current numberic string\n\tscDoc.GetCurrent(cNumericString, sizeof(cNumericString));\n\t// Loop through the string until end of string (NULL termination)\n\tfor (int iIndex = 0; cNumericString[iIndex] != '\\0'; iIndex++) {\n\t\t// Depending on the character\n\t\tswitch (cNumericString[iIndex]) {\n\t\t\t// Is a . (point)\n\t\t\tcase '.' :\n\t\t\t\t// Increment point counter\n\t\t\t\tiPoints++;\n\t\t\t\tbreak;\n\t\t\tdefault :\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// If points found (can be more than one for improper formatted number\n\tif (iPoints > 0) {\n\t\treturn(true);\n\t}\n\t// Else no points found\n\telse {\n\t\treturn(false);\n\t}\n}\n\n// Get the next word in uppercase from the current position (keyword lookahead)\ninline bool GetNextWordUpper(Accessor &styler, Sci_PositionU uiStartPos, Sci_Position iLength, char *cWord) {\n\n\tSci_PositionU iIndex = 0;\t\t// Buffer Index\n\n\t// Loop through the remaining string from the current position\n\tfor (Sci_Position iOffset = uiStartPos; iOffset < iLength; iOffset++) {\n\t\t// Get the character from the buffer using the offset\n\t\tchar cCharacter = styler[iOffset];\n\t\tif (IsEOL(cCharacter)) {\n\t\t\tbreak;\n\t\t}\n\t\t// If the character is alphabet character\n\t\tif (isalpha(cCharacter)) {\n\t\t\t// Add UPPERCASE character to the word buffer\n\t\t\tcWord[iIndex++] = CharacterUpper(cCharacter);\n\t\t}\n\t}\n\t// Add null termination\n\tcWord[iIndex] = '\\0';\n\t// If no word was found\n\tif (iIndex == 0) {\n\t\t// Return failure\n\t\treturn(false);\n\t}\n\t// Else word was found\n\telse {\n\t\t// Return success\n\t\treturn(true);\n\t}\n}\n\n// Clarion Language Colouring Procedure\nstatic void ColouriseClarionDoc(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler, bool bCaseSensitive) {\n\n\tint iParenthesesLevel = 0;\t\t// Parenthese Level\n\tint iColumn1Label = false;\t\t// Label starts in Column 1\n\n\tWordList &wlClarionKeywords = *wlKeywords[0];\t\t\t// Clarion Keywords\n\tWordList &wlCompilerDirectives = *wlKeywords[1];\t\t// Compiler Directives\n\tWordList &wlRuntimeExpressions = *wlKeywords[2];\t\t// Runtime Expressions\n\tWordList &wlBuiltInProcsFuncs = *wlKeywords[3];\t\t\t// Builtin Procedures and Functions\n\tWordList &wlStructsDataTypes = *wlKeywords[4];\t\t\t// Structures and Data Types\n\tWordList &wlAttributes = *wlKeywords[5];\t\t\t\t// Procedure Attributes\n\tWordList &wlStandardEquates = *wlKeywords[6];\t\t\t// Standard Equates\n\tWordList &wlLabelReservedWords = *wlKeywords[7];\t\t// Clarion Reserved Keywords (Labels)\n\tWordList &wlProcLabelReservedWords = *wlKeywords[8];\t// Clarion Reserved Keywords (Procedure Labels)\n\n\tconst char wlProcReservedKeywordList[] =\n\t\"PROCEDURE FUNCTION\";\n\tWordList wlProcReservedKeywords;\n\twlProcReservedKeywords.Set(wlProcReservedKeywordList);\n\n\tconst char wlCompilerKeywordList[] =\n\t\"COMPILE OMIT\";\n\tWordList wlCompilerKeywords;\n\twlCompilerKeywords.Set(wlCompilerKeywordList);\n\n\tconst char wlLegacyStatementsList[] =\n\t\"BOF EOF FUNCTION POINTER SHARE\";\n\tWordList wlLegacyStatements;\n\twlLegacyStatements.Set(wlLegacyStatementsList);\n\n\tStyleContext scDoc(uiStartPos, iLength, iInitStyle, accStyler);\n\n\t// lex source code\n    for (; scDoc.More(); scDoc.Forward())\n\t{\n\t\t//\n\t\t// Determine if the current state should terminate.\n\t\t//\n\n\t\t// Label State Handling\n\t\tif (scDoc.state == SCE_CLW_LABEL) {\n\t\t\t// If the character is not a valid label\n\t\t\tif (!IsALabelCharacter(scDoc.ch)) {\n\t\t\t\t// If the character is a . (dot syntax)\n\t\t\t\tif (scDoc.ch == '.') {\n\t\t\t\t\t// Turn off column 1 label flag as label now cannot be reserved work\n\t\t\t\t\tiColumn1Label = false;\n\t\t\t\t\t// Uncolour the . (dot) to default state, move forward one character,\n\t\t\t\t\t// and change back to the label state.\n\t\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t\t\tscDoc.Forward();\n\t\t\t\t\tscDoc.SetState(SCE_CLW_LABEL);\n\t\t\t\t}\n\t\t\t\t// Else check label\n\t\t\t\telse {\n\t\t\t\t\tchar cLabel[512];\t\t// Label buffer\n\t\t\t\t\t// Buffer the current label string\n\t\t\t\t\tscDoc.GetCurrent(cLabel,sizeof(cLabel));\n\t\t\t\t\t// If case insensitive, convert string to UPPERCASE to match passed keywords.\n\t\t\t\t\tif (!bCaseSensitive) {\n\t\t\t\t\t\tStringUpper(cLabel);\n\t\t\t\t\t}\n\t\t\t\t\t// Else if UPPERCASE label string is in the Clarion compiler keyword list\n\t\t\t\t\tif (wlCompilerKeywords.InList(cLabel) && iColumn1Label){\n\t\t\t\t\t\t// change the label to error state\n\t\t\t\t\t\tscDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE);\n\t\t\t\t\t}\n\t\t\t\t\t// Else if UPPERCASE label string is in the Clarion reserved keyword list\n\t\t\t\t\telse if (wlLabelReservedWords.InList(cLabel) && iColumn1Label){\n\t\t\t\t\t\t// change the label to error state\n\t\t\t\t\t\tscDoc.ChangeState(SCE_CLW_ERROR);\n\t\t\t\t\t}\n\t\t\t\t\t// Else if UPPERCASE label string is\n\t\t\t\t\telse if (wlProcLabelReservedWords.InList(cLabel) && iColumn1Label) {\n\t\t\t\t\t\tchar cWord[512];\t// Word buffer\n\t\t\t\t\t\t// Get the next word from the current position\n\t\t\t\t\t\tif (GetNextWordUpper(accStyler,scDoc.currentPos,uiStartPos+iLength,cWord)) {\n\t\t\t\t\t\t\t// If the next word is a procedure reserved word\n\t\t\t\t\t\t\tif (wlProcReservedKeywords.InList(cWord)) {\n\t\t\t\t\t\t\t\t// Change the label to error state\n\t\t\t\t\t\t\t\tscDoc.ChangeState(SCE_CLW_ERROR);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Else if label string is in the compiler directive keyword list\n\t\t\t\t\telse if (wlCompilerDirectives.InList(cLabel)) {\n\t\t\t\t\t\t// change the state to compiler directive state\n\t\t\t\t\t\tscDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE);\n\t\t\t\t\t}\n\t\t\t\t\t// Terminate the label state and set to default state\n\t\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Keyword State Handling\n\t\telse if (scDoc.state == SCE_CLW_KEYWORD) {\n\t\t\t// If character is : (colon)\n\t\t\tif (scDoc.ch == ':') {\n\t\t\t\tchar cEquate[512];\t\t// Equate buffer\n\t\t\t\t// Move forward to include : (colon) in buffer\n\t\t\t\tscDoc.Forward();\n\t\t\t\t// Buffer the equate string\n\t\t\t\tscDoc.GetCurrent(cEquate,sizeof(cEquate));\n\t\t\t\t// If case insensitive, convert string to UPPERCASE to match passed keywords.\n\t\t\t\tif (!bCaseSensitive) {\n\t\t\t\t\tStringUpper(cEquate);\n\t\t\t\t}\n\t\t\t\t// If statement string is in the equate list\n\t\t\t\tif (wlStandardEquates.InList(cEquate)) {\n\t\t\t\t\t// Change to equate state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_STANDARD_EQUATE);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// If the character is not a valid label character\n\t\t\telse if (!IsALabelCharacter(scDoc.ch)) {\n\t\t\t\tchar cStatement[512];\t\t// Statement buffer\n\t\t\t\t// Buffer the statement string\n\t\t\t\tscDoc.GetCurrent(cStatement,sizeof(cStatement));\n\t\t\t\t// If case insensitive, convert string to UPPERCASE to match passed keywords.\n\t\t\t\tif (!bCaseSensitive) {\n\t\t\t\t\tStringUpper(cStatement);\n\t\t\t\t}\n\t\t\t\t// If statement string is in the Clarion keyword list\n\t\t\t\tif (wlClarionKeywords.InList(cStatement)) {\n\t\t\t\t\t// Change the statement string to the Clarion keyword state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_KEYWORD);\n\t\t\t\t}\n\t\t\t\t// Else if statement string is in the compiler directive keyword list\n\t\t\t\telse if (wlCompilerDirectives.InList(cStatement)) {\n\t\t\t\t\t// Change the statement string to the compiler directive state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE);\n\t\t\t\t}\n\t\t\t\t// Else if statement string is in the runtime expressions keyword list\n\t\t\t\telse if (wlRuntimeExpressions.InList(cStatement)) {\n\t\t\t\t\t// Change the statement string to the runtime expressions state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_RUNTIME_EXPRESSIONS);\n\t\t\t\t}\n\t\t\t\t// Else if statement string is in the builtin procedures and functions keyword list\n\t\t\t\telse if (wlBuiltInProcsFuncs.InList(cStatement)) {\n\t\t\t\t\t// Change the statement string to the builtin procedures and functions state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_BUILTIN_PROCEDURES_FUNCTION);\n\t\t\t\t}\n\t\t\t\t// Else if statement string is in the tructures and data types keyword list\n\t\t\t\telse if (wlStructsDataTypes.InList(cStatement)) {\n\t\t\t\t\t// Change the statement string to the structures and data types state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_STRUCTURE_DATA_TYPE);\n\t\t\t\t}\n\t\t\t\t// Else if statement string is in the procedure attribute keyword list\n\t\t\t\telse if (wlAttributes.InList(cStatement)) {\n\t\t\t\t\t// Change the statement string to the procedure attribute state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_ATTRIBUTE);\n\t\t\t\t}\n\t\t\t\t// Else if statement string is in the standard equate keyword list\n\t\t\t\telse if (wlStandardEquates.InList(cStatement)) {\n\t\t\t\t\t// Change the statement string to the standard equate state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_STANDARD_EQUATE);\n\t\t\t\t}\n\t\t\t\t// Else if statement string is in the deprecated or legacy keyword list\n\t\t\t\telse if (wlLegacyStatements.InList(cStatement)) {\n\t\t\t\t\t// Change the statement string to the standard equate state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_DEPRECATED);\n\t\t\t\t}\n\t\t\t\t// Else the statement string doesn't match any work list\n\t\t\t\telse {\n\t\t\t\t\t// Change the statement string to the default state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_DEFAULT);\n\t\t\t\t}\n\t\t\t\t// Terminate the keyword state and set to default state\n\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t}\n\t\t}\n\t\t// String State Handling\n\t\telse if (scDoc.state == SCE_CLW_STRING) {\n\t\t\t// If the character is an ' (single quote)\n\t\t\tif (scDoc.ch == '\\'') {\n\t\t\t\t// Set the state to default and move forward colouring\n\t\t\t\t// the ' (single quote) as default state\n\t\t\t\t// terminating the string state\n\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t\tscDoc.Forward();\n\t\t\t}\n\t\t\t// If the next character is an ' (single quote)\n\t\t\tif (scDoc.chNext == '\\'') {\n\t\t\t\t// Move forward one character and set to default state\n\t\t\t\t// colouring the next ' (single quote) as default state\n\t\t\t\t// terminating the string state\n\t\t\t\tscDoc.ForwardSetState(SCE_CLW_DEFAULT);\n\t\t\t\tscDoc.Forward();\n\t\t\t}\n\t\t}\n\t\t// Picture String State Handling\n\t\telse if (scDoc.state == SCE_CLW_PICTURE_STRING) {\n\t\t\t// If the character is an ( (open parenthese)\n\t\t\tif (scDoc.ch == '(') {\n\t\t\t\t// Increment the parenthese level\n\t\t\t\tiParenthesesLevel++;\n\t\t\t}\n\t\t\t// Else if the character is a ) (close parenthese)\n\t\t\telse if (scDoc.ch == ')') {\n\t\t\t\t// If the parenthese level is set to zero\n\t\t\t\t// parentheses matched\n\t\t\t\tif (!iParenthesesLevel) {\n\t\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t\t}\n\t\t\t\t// Else parenthese level is greater than zero\n\t\t\t\t// still looking for matching parentheses\n\t\t\t\telse {\n\t\t\t\t\t// Decrement the parenthese level\n\t\t\t\t\tiParenthesesLevel--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Standard Equate State Handling\n\t\telse if (scDoc.state == SCE_CLW_STANDARD_EQUATE) {\n\t\t\tif (!isalnum(scDoc.ch)) {\n\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t}\n\t\t}\n\t\t// Integer Constant State Handling\n\t\telse if (scDoc.state == SCE_CLW_INTEGER_CONSTANT) {\n\t\t\t// If the character is not a digit (0-9)\n\t\t\t// or character is not a hexidecimal character (A-F)\n\t\t\t// or character is not a . (point)\n\t\t\t// or character is not a numberic base character (B,O,H)\n\t\t\tif (!(isdigit(scDoc.ch)\n\t\t\t|| IsAHexCharacter(scDoc.ch, bCaseSensitive)\n\t\t\t|| scDoc.ch == '.'\n\t\t\t|| IsANumericBaseCharacter(scDoc.ch, bCaseSensitive))) {\n\t\t\t\t// If the number was a real\n\t\t\t\tif (SetNumericConstantState(scDoc)) {\n\t\t\t\t\t// Colour the matched string to the real constant state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_REAL_CONSTANT);\n\t\t\t\t}\n\t\t\t\t// Else the number was an integer\n\t\t\t\telse {\n\t\t\t\t\t// Colour the matched string to an integer constant state\n\t\t\t\t\tscDoc.ChangeState(SCE_CLW_INTEGER_CONSTANT);\n\t\t\t\t}\n\t\t\t\t// Terminate the integer constant state and set to default state\n\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t//\n\t\t// Determine if a new state should be entered.\n\t\t//\n\n\t\t// Beginning of Line Handling\n\t\tif (scDoc.atLineStart) {\n\t\t\t// Reset the column 1 label flag\n\t\t\tiColumn1Label = false;\n\t\t\t// If column 1 character is a label start character\n\t\t\tif (IsALabelStart(scDoc.ch)) {\n\t\t\t\t// Label character is found in column 1\n\t\t\t\t// so set column 1 label flag and clear last column 1 label\n\t\t\t\tiColumn1Label = true;\n\t\t\t\t// Set the state to label\n\t\t\t\tscDoc.SetState(SCE_CLW_LABEL);\n\t\t\t}\n\t\t\t// else if character is a space or tab\n\t\t\telse if (IsASpace(scDoc.ch)){\n\t\t\t\t// Set to default state\n\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t}\n\t\t\t// else if comment start (!) or is an * (asterisk)\n\t\t\telse if (IsACommentStart(scDoc.ch) || scDoc.ch == '*' ) {\n\t\t\t\t// then set the state to comment.\n\t\t\t\tscDoc.SetState(SCE_CLW_COMMENT);\n\t\t\t}\n\t\t\t// else the character is a ? (question mark)\n\t\t\telse if (scDoc.ch == '?') {\n\t\t\t\t// Change to the compiler directive state, move forward,\n\t\t\t\t// colouring the ? (question mark), change back to default state.\n\t\t\t\tscDoc.ChangeState(SCE_CLW_COMPILER_DIRECTIVE);\n\t\t\t\tscDoc.Forward();\n\t\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t\t}\n\t\t\t// else an invalid character in column 1\n\t\t\telse {\n\t\t\t\t// Set to error state\n\t\t\t\tscDoc.SetState(SCE_CLW_ERROR);\n\t\t\t}\n\t\t}\n\t\t// End of Line Handling\n\t\telse if (scDoc.atLineEnd) {\n\t\t\t// Reset to the default state at the end of each line.\n\t\t\tscDoc.SetState(SCE_CLW_DEFAULT);\n\t\t}\n\t\t// Default Handling\n\t\telse {\n\t\t\t// If in default state\n\t\t\tif (scDoc.state == SCE_CLW_DEFAULT) {\n\t\t\t\t// If is a letter could be a possible statement\n\t\t\t\tif (isalpha(scDoc.ch)) {\n\t\t\t\t\t// Set the state to Clarion Keyword and verify later\n\t\t\t\t\tscDoc.SetState(SCE_CLW_KEYWORD);\n\t\t\t\t}\n\t\t\t\t// else is a number\n\t\t\t\telse if (isdigit(scDoc.ch)) {\n\t\t\t\t\t// Set the state to Integer Constant and verify later\n\t\t\t\t\tscDoc.SetState(SCE_CLW_INTEGER_CONSTANT);\n\t\t\t\t}\n\t\t\t\t// else if the start of a comment or a | (line continuation)\n\t\t\t\telse if (IsACommentStart(scDoc.ch) || scDoc.ch == '|') {\n\t\t\t\t\t// then set the state to comment.\n\t\t\t\t\tscDoc.SetState(SCE_CLW_COMMENT);\n\t\t\t\t}\n\t\t\t\t// else if the character is a ' (single quote)\n\t\t\t\telse if (scDoc.ch == '\\'') {\n\t\t\t\t\t// If the character is also a ' (single quote)\n\t\t\t\t\t// Embedded Apostrophe\n\t\t\t\t\tif (scDoc.chNext == '\\'') {\n\t\t\t\t\t\t// Move forward colouring it as default state\n\t\t\t\t\t\tscDoc.ForwardSetState(SCE_CLW_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// move to the next character and then set the state to comment.\n\t\t\t\t\t\tscDoc.ForwardSetState(SCE_CLW_STRING);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// else the character is an @ (ampersand)\n\t\t\t\telse if (scDoc.ch == '@') {\n\t\t\t\t\t// Case insensitive.\n\t\t\t\t\tif (!bCaseSensitive) {\n\t\t\t\t\t\t// If character is a valid picture token character\n\t\t\t\t\t\tif (strchr(\"DEKNPSTdeknpst\", scDoc.chNext) != NULL) {\n\t\t\t\t\t\t\t// Set to the picture string state\n\t\t\t\t\t\t\tscDoc.SetState(SCE_CLW_PICTURE_STRING);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// Case sensitive\n\t\t\t\t\telse {\n\t\t\t\t\t\t// If character is a valid picture token character\n\t\t\t\t\t\tif (strchr(\"DEKNPST\", scDoc.chNext) != NULL) {\n\t\t\t\t\t\t\t// Set the picture string state\n\t\t\t\t\t\t\tscDoc.SetState(SCE_CLW_PICTURE_STRING);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// lexing complete\n\tscDoc.Complete();\n}\n\n// Clarion Language Case Sensitive Colouring Procedure\nstatic void ColouriseClarionDocSensitive(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler) {\n\n\tColouriseClarionDoc(uiStartPos, iLength, iInitStyle, wlKeywords, accStyler, true);\n}\n\n// Clarion Language Case Insensitive Colouring Procedure\nstatic void ColouriseClarionDocInsensitive(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *wlKeywords[], Accessor &accStyler) {\n\n\tColouriseClarionDoc(uiStartPos, iLength, iInitStyle, wlKeywords, accStyler, false);\n}\n\n// Fill Buffer\n\nstatic void FillBuffer(Sci_PositionU uiStart, Sci_PositionU uiEnd, Accessor &accStyler, char *szBuffer, Sci_PositionU uiLength) {\n\n\tSci_PositionU uiPos = 0;\n\n\twhile ((uiPos < uiEnd - uiStart + 1) && (uiPos < uiLength-1)) {\n\t\tszBuffer[uiPos] = static_cast<char>(toupper(accStyler[uiStart + uiPos]));\n\t\tuiPos++;\n\t}\n\tszBuffer[uiPos] = '\\0';\n}\n\n// Classify Clarion Fold Point\n\nstatic int ClassifyClarionFoldPoint(int iLevel, const char* szString) {\n\n\tif (!(isdigit(szString[0]) || (szString[0] == '.'))) {\n\t\tif (strcmp(szString, \"PROCEDURE\") == 0) {\n\t//\t\tiLevel = SC_FOLDLEVELBASE + 1;\n\t\t}\n\t\telse if (strcmp(szString, \"MAP\") == 0 ||\n\t\t\tstrcmp(szString,\"ACCEPT\") == 0 ||\n\t\t\tstrcmp(szString,\"BEGIN\") == 0 ||\n\t\t\tstrcmp(szString,\"CASE\") == 0 ||\n\t\t\tstrcmp(szString,\"EXECUTE\") == 0 ||\n\t\t\tstrcmp(szString,\"IF\") == 0 ||\n\t\t\tstrcmp(szString,\"ITEMIZE\") == 0 ||\n\t\t\tstrcmp(szString,\"INTERFACE\") == 0 ||\n\t\t\tstrcmp(szString,\"JOIN\") == 0 ||\n\t\t\tstrcmp(szString,\"LOOP\") == 0 ||\n\t\t\tstrcmp(szString,\"MODULE\") == 0 ||\n\t\t\tstrcmp(szString,\"RECORD\") == 0) {\n\t\t\tiLevel++;\n\t\t}\n\t\telse if (strcmp(szString, \"APPLICATION\") == 0 ||\n\t\t\tstrcmp(szString, \"CLASS\") == 0 ||\n\t\t\tstrcmp(szString, \"DETAIL\") == 0 ||\n\t\t\tstrcmp(szString, \"FILE\") == 0 ||\n\t\t\tstrcmp(szString, \"FOOTER\") == 0 ||\n\t\t\tstrcmp(szString, \"FORM\") == 0 ||\n\t\t\tstrcmp(szString, \"GROUP\") == 0 ||\n\t\t\tstrcmp(szString, \"HEADER\") == 0 ||\n\t\t\tstrcmp(szString, \"INTERFACE\") == 0 ||\n\t\t\tstrcmp(szString, \"MENU\") == 0 ||\n\t\t\tstrcmp(szString, \"MENUBAR\") == 0 ||\n\t\t\tstrcmp(szString, \"OLE\") == 0 ||\n\t\t\tstrcmp(szString, \"OPTION\") == 0 ||\n\t\t\tstrcmp(szString, \"QUEUE\") == 0 ||\n\t\t\tstrcmp(szString, \"REPORT\") == 0 ||\n\t\t\tstrcmp(szString, \"SHEET\") == 0 ||\n\t\t\tstrcmp(szString, \"TAB\") == 0 ||\n\t\t\tstrcmp(szString, \"TOOLBAR\") == 0 ||\n\t\t\tstrcmp(szString, \"VIEW\") == 0 ||\n\t\t\tstrcmp(szString, \"WINDOW\") == 0) {\n\t\t\tiLevel++;\n\t\t}\n\t\telse if (strcmp(szString, \"END\") == 0 ||\n\t\t\tstrcmp(szString, \"UNTIL\") == 0 ||\n\t\t\tstrcmp(szString, \"WHILE\") == 0) {\n\t\t\tiLevel--;\n\t\t}\n\t}\n\treturn(iLevel);\n}\n\n// Clarion Language Folding Procedure\nstatic void FoldClarionDoc(Sci_PositionU uiStartPos, Sci_Position iLength, int iInitStyle, WordList *[], Accessor &accStyler) {\n\n\tSci_PositionU uiEndPos = uiStartPos + iLength;\n\tSci_Position iLineCurrent = accStyler.GetLine(uiStartPos);\n\tint iLevelPrev = accStyler.LevelAt(iLineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint iLevelCurrent = iLevelPrev;\n\tchar chNext = accStyler[uiStartPos];\n\tint iStyle = iInitStyle;\n\tint iStyleNext = accStyler.StyleAt(uiStartPos);\n\tint iVisibleChars = 0;\n\tSci_Position iLastStart = 0;\n\n\tfor (Sci_PositionU uiPos = uiStartPos; uiPos < uiEndPos; uiPos++) {\n\n\t\tchar chChar = chNext;\n\t\tchNext = accStyler.SafeGetCharAt(uiPos + 1);\n\t\tint iStylePrev = iStyle;\n\t\tiStyle = iStyleNext;\n\t\tiStyleNext = accStyler.StyleAt(uiPos + 1);\n\t\tbool bEOL = (chChar == '\\r' && chNext != '\\n') || (chChar == '\\n');\n\n\t\tif (iStylePrev == SCE_CLW_DEFAULT) {\n\t\t\tif (iStyle == SCE_CLW_KEYWORD || iStyle == SCE_CLW_STRUCTURE_DATA_TYPE) {\n\t\t\t\t// Store last word start point.\n\t\t\t\tiLastStart = uiPos;\n\t\t\t}\n\t\t}\n\n\t\tif (iStylePrev == SCE_CLW_KEYWORD || iStylePrev == SCE_CLW_STRUCTURE_DATA_TYPE) {\n\t\t\tif(iswordchar(chChar) && !iswordchar(chNext)) {\n\t\t\t\tchar chBuffer[100];\n\t\t\t\tFillBuffer(iLastStart, uiPos, accStyler, chBuffer, sizeof(chBuffer));\n\t\t\t\tiLevelCurrent = ClassifyClarionFoldPoint(iLevelCurrent,chBuffer);\n\t\t\t//\tif ((iLevelCurrent == SC_FOLDLEVELBASE + 1) && iLineCurrent > 1) {\n\t\t\t//\t\taccStyler.SetLevel(iLineCurrent-1,SC_FOLDLEVELBASE);\n\t\t\t//\t\tiLevelPrev = SC_FOLDLEVELBASE;\n\t\t\t//\t}\n\t\t\t}\n\t\t}\n\n\t\tif (bEOL) {\n\t\t\tint iLevel = iLevelPrev;\n\t\t\tif ((iLevelCurrent > iLevelPrev) && (iVisibleChars > 0))\n\t\t\t\tiLevel |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (iLevel != accStyler.LevelAt(iLineCurrent)) {\n\t\t\t\taccStyler.SetLevel(iLineCurrent,iLevel);\n\t\t\t}\n\t\t\tiLineCurrent++;\n\t\t\tiLevelPrev = iLevelCurrent;\n\t\t\tiVisibleChars = 0;\n\t\t}\n\n\t\tif (!isspacechar(chChar))\n\t\t\tiVisibleChars++;\n\t}\n\n\t// Fill in the real level of the next line, keeping the current flags\n\t// as they will be filled in later.\n\tint iFlagsNext = accStyler.LevelAt(iLineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\taccStyler.SetLevel(iLineCurrent, iLevelPrev | iFlagsNext);\n}\n\n// Word List Descriptions\nstatic const char * const rgWordListDescriptions[] = {\n\t\"Clarion Keywords\",\n\t\"Compiler Directives\",\n\t\"Built-in Procedures and Functions\",\n\t\"Runtime Expressions\",\n\t\"Structure and Data Types\",\n\t\"Attributes\",\n\t\"Standard Equates\",\n\t\"Reserved Words (Labels)\",\n\t\"Reserved Words (Procedure Labels)\",\n\t0,\n};\n\n// Case Sensitive Clarion Language Lexer\nLexerModule lmClw(SCLEX_CLW, ColouriseClarionDocSensitive, \"clarion\", FoldClarionDoc, rgWordListDescriptions);\n\n// Case Insensitive Clarion Language Lexer\nLexerModule lmClwNoCase(SCLEX_CLWNOCASE, ColouriseClarionDocInsensitive, \"clarionnocase\", FoldClarionDoc, rgWordListDescriptions);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCOBOL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexCOBOL.cxx\n ** Lexer for COBOL\n ** Based on LexPascal.cxx\n ** Written by Laurent le Tynevez\n ** Updated by Simon Steele <s.steele@pnotepad.org> September 2002\n ** Updated by Mathias Rauen <scite@madshi.net> May 2003 (Delphi adjustments)\n ** Updated by Rod Falck, Aug 2006 Converted to COBOL\n **/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#define IN_DIVISION 0x01\n#define IN_DECLARATIVES 0x02\n#define IN_SECTION 0x04\n#define IN_PARAGRAPH 0x08\n#define IN_FLAGS 0xF\n#define NOT_HEADER 0x10\n\ninline bool isCOBOLoperator(char ch)\n    {\n    return isoperator(ch);\n    }\n\ninline bool isCOBOLwordchar(char ch)\n    {\n    return IsASCII(ch) && (isalnum(ch) || ch == '-');\n\n    }\n\ninline bool isCOBOLwordstart(char ch)\n    {\n    return IsASCII(ch) && isalnum(ch);\n    }\n\nstatic int CountBits(int nBits)\n\t{\n\tint count = 0;\n\tfor (int i = 0; i < 32; ++i)\n\t\t{\n\t\tcount += nBits & 1;\n\t\tnBits >>= 1;\n\t\t}\n\treturn count;\n\t}\n\nstatic void getRange(Sci_PositionU start,\n        Sci_PositionU end,\n        Accessor &styler,\n        char *s,\n        Sci_PositionU len) {\n    Sci_PositionU i = 0;\n    while ((i < end - start + 1) && (i < len-1)) {\n        s[i] = static_cast<char>(tolower(styler[start + i]));\n        i++;\n    }\n    s[i] = '\\0';\n}\n\nstatic void ColourTo(Accessor &styler, Sci_PositionU end, unsigned int attr) {\n    styler.ColourTo(end, attr);\n}\n\n\nstatic int classifyWordCOBOL(Sci_PositionU start, Sci_PositionU end, /*WordList &keywords*/WordList *keywordlists[], Accessor &styler, int nContainment, bool *bAarea) {\n    int ret = 0;\n\n    WordList& a_keywords = *keywordlists[0];\n    WordList& b_keywords = *keywordlists[1];\n    WordList& c_keywords = *keywordlists[2];\n\n    char s[100];\n    s[0] = '\\0';\n    s[1] = '\\0';\n    getRange(start, end, styler, s, sizeof(s));\n\n    char chAttr = SCE_C_IDENTIFIER;\n    if (isdigit(s[0]) || (s[0] == '.') || (s[0] == 'v')) {\n        chAttr = SCE_C_NUMBER;\n\t\tchar *p = s + 1;\n\t\twhile (*p) {\n\t\t\tif ((!isdigit(*p) && (*p) != 'v') && isCOBOLwordchar(*p)) {\n\t\t\t\tchAttr = SCE_C_IDENTIFIER;\n\t\t\t    break;\n\t\t\t}\n\t\t\t++p;\n\t\t}\n    }\n    else {\n        if (a_keywords.InList(s)) {\n            chAttr = SCE_C_WORD;\n        }\n        else if (b_keywords.InList(s)) {\n            chAttr = SCE_C_WORD2;\n        }\n        else if (c_keywords.InList(s)) {\n            chAttr = SCE_C_UUID;\n        }\n    }\n    if (*bAarea) {\n        if (strcmp(s, \"division\") == 0) {\n            ret = IN_DIVISION;\n\t\t\t// we've determined the containment, anything else is just ignored for those purposes\n\t\t\t*bAarea = false;\n\t\t} else if (strcmp(s, \"declaratives\") == 0) {\n            ret = IN_DIVISION | IN_DECLARATIVES;\n\t\t\tif (nContainment & IN_DECLARATIVES)\n\t\t\t\tret |= NOT_HEADER | IN_SECTION;\n\t\t\t// we've determined the containment, anything else is just ignored for those purposes\n\t\t\t*bAarea = false;\n\t\t} else if (strcmp(s, \"section\") == 0) {\n            ret = (nContainment &~ IN_PARAGRAPH) | IN_SECTION;\n\t\t\t// we've determined the containment, anything else is just ignored for those purposes\n\t\t\t*bAarea = false;\n\t\t} else if (strcmp(s, \"end\") == 0 && (nContainment & IN_DECLARATIVES)) {\n            ret = IN_DIVISION | IN_DECLARATIVES | IN_SECTION | NOT_HEADER;\n\t\t} else {\n\t\t\tret = nContainment | IN_PARAGRAPH;\n        }\n    }\n    ColourTo(styler, end, chAttr);\n    return ret;\n}\n\nstatic void ColouriseCOBOLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n    Accessor &styler) {\n\n    styler.StartAt(startPos);\n\n    int state = initStyle;\n    if (state == SCE_C_CHARACTER)   // Does not leak onto next line\n        state = SCE_C_DEFAULT;\n    char chPrev = ' ';\n    char chNext = styler[startPos];\n    Sci_PositionU lengthDoc = startPos + length;\n\n    int nContainment;\n\n    Sci_Position currentLine = styler.GetLine(startPos);\n    if (currentLine > 0) {\n        styler.SetLineState(currentLine, styler.GetLineState(currentLine-1));\n        nContainment = styler.GetLineState(currentLine);\n\t\tnContainment &= ~NOT_HEADER;\n    } else {\n        styler.SetLineState(currentLine, 0);\n        nContainment = 0;\n    }\n\n    styler.StartSegment(startPos);\n    bool bNewLine = true;\n    bool bAarea = !isspacechar(chNext);\n\tint column = 0;\n    for (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n        char ch = chNext;\n\n        chNext = styler.SafeGetCharAt(i + 1);\n\n\t\t++column;\n\n        if (bNewLine) {\n\t\t\tcolumn = 0;\n        }\n\t\tif (column <= 1 && !bAarea) {\n\t\t\tbAarea = !isspacechar(ch);\n\t\t\t}\n        bool bSetNewLine = false;\n        if ((ch == '\\r' && chNext != '\\n') || (ch == '\\n')) {\n            // Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix)\n            // Avoid triggering two times on Dos/Win\n            // End of line\n            if (state == SCE_C_CHARACTER) {\n                ColourTo(styler, i, state);\n                state = SCE_C_DEFAULT;\n            }\n            styler.SetLineState(currentLine, nContainment);\n            currentLine++;\n            bSetNewLine = true;\n\t\t\tif (nContainment & NOT_HEADER)\n\t\t\t\tnContainment &= ~(NOT_HEADER | IN_DECLARATIVES | IN_SECTION);\n        }\n\n        if (styler.IsLeadByte(ch)) {\n            chNext = styler.SafeGetCharAt(i + 2);\n            chPrev = ' ';\n            i += 1;\n            continue;\n        }\n\n        if (state == SCE_C_DEFAULT) {\n            if (isCOBOLwordstart(ch) || (ch == '$' && IsASCII(chNext) && isalpha(chNext))) {\n                ColourTo(styler, i-1, state);\n                state = SCE_C_IDENTIFIER;\n            } else if (column == 6 && ch == '*') {\n            // Cobol comment line: asterisk in column 7.\n                ColourTo(styler, i-1, state);\n                state = SCE_C_COMMENTLINE;\n            } else if (ch == '*' && chNext == '>') {\n            // Cobol inline comment: asterisk, followed by greater than.\n                ColourTo(styler, i-1, state);\n                state = SCE_C_COMMENTLINE;\n            } else if (column == 0 && ch == '*' && chNext != '*') {\n                ColourTo(styler, i-1, state);\n                state = SCE_C_COMMENTLINE;\n            } else if (column == 0 && ch == '/' && chNext != '*') {\n                ColourTo(styler, i-1, state);\n                state = SCE_C_COMMENTLINE;\n            } else if (column == 0 && ch == '*' && chNext == '*') {\n                ColourTo(styler, i-1, state);\n                state = SCE_C_COMMENTDOC;\n            } else if (column == 0 && ch == '/' && chNext == '*') {\n                ColourTo(styler, i-1, state);\n                state = SCE_C_COMMENTDOC;\n            } else if (ch == '\"') {\n                ColourTo(styler, i-1, state);\n                state = SCE_C_STRING;\n            } else if (ch == '\\'') {\n                ColourTo(styler, i-1, state);\n                state = SCE_C_CHARACTER;\n            } else if (ch == '?' && column == 0) {\n                ColourTo(styler, i-1, state);\n                state = SCE_C_PREPROCESSOR;\n            } else if (isCOBOLoperator(ch)) {\n                ColourTo(styler, i-1, state);\n                ColourTo(styler, i, SCE_C_OPERATOR);\n            }\n        } else if (state == SCE_C_IDENTIFIER) {\n            if (!isCOBOLwordchar(ch)) {\n                int lStateChange = classifyWordCOBOL(styler.GetStartSegment(), i - 1, keywordlists, styler, nContainment, &bAarea);\n\n                if(lStateChange != 0) {\n                    styler.SetLineState(currentLine, lStateChange);\n                    nContainment = lStateChange;\n                }\n\n                state = SCE_C_DEFAULT;\n                chNext = styler.SafeGetCharAt(i + 1);\n                if (ch == '\"') {\n                    state = SCE_C_STRING;\n                } else if (ch == '\\'') {\n                    state = SCE_C_CHARACTER;\n                } else if (isCOBOLoperator(ch)) {\n                    ColourTo(styler, i, SCE_C_OPERATOR);\n                }\n            }\n        } else {\n            if (state == SCE_C_PREPROCESSOR) {\n                if ((ch == '\\r' || ch == '\\n') && !(chPrev == '\\\\' || chPrev == '\\r')) {\n                    ColourTo(styler, i-1, state);\n                    state = SCE_C_DEFAULT;\n                }\n            } else if (state == SCE_C_COMMENT) {\n                if (ch == '\\r' || ch == '\\n') {\n                    ColourTo(styler, i, state);\n                    state = SCE_C_DEFAULT;\n                }\n            } else if (state == SCE_C_COMMENTDOC) {\n                if (ch == '\\r' || ch == '\\n') {\n                    if (((i > styler.GetStartSegment() + 2) || (\n                        (initStyle == SCE_C_COMMENTDOC) &&\n                        (styler.GetStartSegment() == static_cast<Sci_PositionU>(startPos))))) {\n                            ColourTo(styler, i, state);\n                            state = SCE_C_DEFAULT;\n                    }\n                }\n            } else if (state == SCE_C_COMMENTLINE) {\n                if (ch == '\\r' || ch == '\\n') {\n                    ColourTo(styler, i-1, state);\n                    state = SCE_C_DEFAULT;\n                }\n            } else if (state == SCE_C_STRING) {\n                if (ch == '\"') {\n                    ColourTo(styler, i, state);\n                    state = SCE_C_DEFAULT;\n                }\n            } else if (state == SCE_C_CHARACTER) {\n                if (ch == '\\'') {\n                    ColourTo(styler, i, state);\n                    state = SCE_C_DEFAULT;\n                }\n            }\n        }\n        chPrev = ch;\n        bNewLine = bSetNewLine;\n\t\tif (bNewLine)\n\t\t\t{\n\t\t\tbAarea = false;\n\t\t\t}\n    }\n    ColourTo(styler, lengthDoc - 1, state);\n}\n\nstatic void FoldCOBOLDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[],\n                            Accessor &styler) {\n    bool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n    Sci_PositionU endPos = startPos + length;\n    int visibleChars = 0;\n    Sci_Position lineCurrent = styler.GetLine(startPos);\n    int levelPrev = lineCurrent > 0 ? styler.LevelAt(lineCurrent - 1) & SC_FOLDLEVELNUMBERMASK : 0xFFF;\n    char chNext = styler[startPos];\n\n    bool bNewLine = true;\n    bool bAarea = !isspacechar(chNext);\n\tint column = 0;\n\tbool bComment = false;\n    for (Sci_PositionU i = startPos; i < endPos; i++) {\n        char ch = chNext;\n        chNext = styler.SafeGetCharAt(i + 1);\n\t\t++column;\n\n        if (bNewLine) {\n\t\t\tcolumn = 0;\n\t\t\tbComment = (ch == '*' || ch == '/' || ch == '?');\n        }\n\t\tif (column <= 1 && !bAarea) {\n\t\t\tbAarea = !isspacechar(ch);\n\t\t\t}\n        bool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n        if (atEOL) {\n\t\t\tint nContainment = styler.GetLineState(lineCurrent);\n            int lev = CountBits(nContainment & IN_FLAGS) | SC_FOLDLEVELBASE;\n\t\t\tif (bAarea && !bComment)\n\t\t\t\t--lev;\n            if (visibleChars == 0 && foldCompact)\n                lev |= SC_FOLDLEVELWHITEFLAG;\n            if ((bAarea) && (visibleChars > 0) && !(nContainment & NOT_HEADER) && !bComment)\n                lev |= SC_FOLDLEVELHEADERFLAG;\n            if (lev != styler.LevelAt(lineCurrent)) {\n                styler.SetLevel(lineCurrent, lev);\n            }\n\t\t\tif ((lev & SC_FOLDLEVELNUMBERMASK) <= (levelPrev & SC_FOLDLEVELNUMBERMASK)) {\n\t\t\t\t// this level is at the same level or less than the previous line\n\t\t\t\t// therefore these is nothing for the previous header to collapse, so remove the header\n\t\t\t\tstyler.SetLevel(lineCurrent - 1, levelPrev & ~SC_FOLDLEVELHEADERFLAG);\n\t\t\t}\n            levelPrev = lev;\n            visibleChars = 0;\n\t\t\tbAarea = false;\n            bNewLine = true;\n            lineCurrent++;\n        } else {\n            bNewLine = false;\n        }\n\n\n        if (!isspacechar(ch))\n            visibleChars++;\n    }\n\n    // Fill in the real level of the next line, keeping the current flags as they will be filled in later\n    int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n    styler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const COBOLWordListDesc[] = {\n    \"A Keywords\",\n    \"B Keywords\",\n    \"Extended Keywords\",\n    0\n};\n\nLexerModule lmCOBOL(SCLEX_COBOL, ColouriseCOBOLDoc, \"COBOL\", FoldCOBOLDoc, COBOLWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCPP.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexCPP.cxx\n ** Lexer for C++, C, Java, and JavaScript.\n ** Further folding features and configuration properties added by \"Udo Lechner\" <dlchnr(at)gmx(dot)net>\n **/\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n#include \"SparseState.h\"\n#include \"SubStyles.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nnamespace {\n\t// Use an unnamed namespace to protect the functions and classes from name conflicts\n\nbool IsSpaceEquiv(int state) {\n\treturn (state <= SCE_C_COMMENTDOC) ||\n\t\t// including SCE_C_DEFAULT, SCE_C_COMMENT, SCE_C_COMMENTLINE\n\t\t(state == SCE_C_COMMENTLINEDOC) || (state == SCE_C_COMMENTDOCKEYWORD) ||\n\t\t(state == SCE_C_COMMENTDOCKEYWORDERROR);\n}\n\n// Preconditions: sc.currentPos points to a character after '+' or '-'.\n// The test for pos reaching 0 should be redundant,\n// and is in only for safety measures.\n// Limitation: this code will give the incorrect answer for code like\n// a = b+++/ptn/...\n// Putting a space between the '++' post-inc operator and the '+' binary op\n// fixes this, and is highly recommended for readability anyway.\nbool FollowsPostfixOperator(StyleContext &sc, LexAccessor &styler) {\n\tSci_Position pos = (Sci_Position) sc.currentPos;\n\twhile (--pos > 0) {\n\t\tchar ch = styler[pos];\n\t\tif (ch == '+' || ch == '-') {\n\t\t\treturn styler[pos - 1] == ch;\n\t\t}\n\t}\n\treturn false;\n}\n\nbool followsReturnKeyword(StyleContext &sc, LexAccessor &styler) {\n\t// Don't look at styles, so no need to flush.\n\tSci_Position pos = (Sci_Position) sc.currentPos;\n\tSci_Position currentLine = styler.GetLine(pos);\n\tSci_Position lineStartPos = styler.LineStart(currentLine);\n\twhile (--pos > lineStartPos) {\n\t\tchar ch = styler.SafeGetCharAt(pos);\n\t\tif (ch != ' ' && ch != '\\t') {\n\t\t\tbreak;\n\t\t}\n\t}\n\tconst char *retBack = \"nruter\";\n\tconst char *s = retBack;\n\twhile (*s\n\t\t&& pos >= lineStartPos\n\t\t&& styler.SafeGetCharAt(pos) == *s) {\n\t\ts++;\n\t\tpos--;\n\t}\n\treturn !*s;\n}\n\nbool IsSpaceOrTab(int ch) {\n\treturn ch == ' ' || ch == '\\t';\n}\n\nbool OnlySpaceOrTab(const std::string &s) {\n\tfor (std::string::const_iterator it = s.begin(); it != s.end(); ++it) {\n\t\tif (!IsSpaceOrTab(*it))\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\nstd::vector<std::string> StringSplit(const std::string &text, int separator) {\n\tstd::vector<std::string> vs(text.empty() ? 0 : 1);\n\tfor (std::string::const_iterator it = text.begin(); it != text.end(); ++it) {\n\t\tif (*it == separator) {\n\t\t\tvs.push_back(std::string());\n\t\t} else {\n\t\t\tvs.back() += *it;\n\t\t}\n\t}\n\treturn vs;\n}\n\nstruct BracketPair {\n\tstd::vector<std::string>::iterator itBracket;\n\tstd::vector<std::string>::iterator itEndBracket;\n};\n\nBracketPair FindBracketPair(std::vector<std::string> &tokens) {\n\tBracketPair bp;\n\tstd::vector<std::string>::iterator itTok = std::find(tokens.begin(), tokens.end(), \"(\");\n\tbp.itBracket = tokens.end();\n\tbp.itEndBracket = tokens.end();\n\tif (itTok != tokens.end()) {\n\t\tbp.itBracket = itTok;\n\t\tsize_t nest = 0;\n\t\twhile (itTok != tokens.end()) {\n\t\t\tif (*itTok == \"(\") {\n\t\t\t\tnest++;\n\t\t\t} else if (*itTok == \")\") {\n\t\t\t\tnest--;\n\t\t\t\tif (nest == 0) {\n\t\t\t\t\tbp.itEndBracket = itTok;\n\t\t\t\t\treturn bp;\n\t\t\t\t}\n\t\t\t}\n\t\t\t++itTok;\n\t\t}\n\t}\n\tbp.itBracket = tokens.end();\n\treturn bp;\n}\n\nvoid highlightTaskMarker(StyleContext &sc, LexAccessor &styler,\n\t\tint activity, WordList &markerList, bool caseSensitive){\n\tif ((isoperator(sc.chPrev) || IsASpace(sc.chPrev)) && markerList.Length()) {\n\t\tconst int lengthMarker = 50;\n\t\tchar marker[lengthMarker+1];\n\t\tSci_Position currPos = (Sci_Position) sc.currentPos;\n\t\tint i = 0;\n\t\twhile (i < lengthMarker) {\n\t\t\tchar ch = styler.SafeGetCharAt(currPos + i);\n\t\t\tif (IsASpace(ch) || isoperator(ch)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (caseSensitive)\n\t\t\t\tmarker[i] = ch;\n\t\t\telse\n\t\t\t\tmarker[i] = static_cast<char>(tolower(ch));\n\t\t\ti++;\n\t\t}\n\t\tmarker[i] = '\\0';\n\t\tif (markerList.InList(marker)) {\n\t\t\tsc.SetState(SCE_C_TASKMARKER|activity);\n\t\t}\n\t}\n}\n\nstruct EscapeSequence {\n\tint digitsLeft;\n\tCharacterSet setHexDigits;\n\tCharacterSet setOctDigits;\n\tCharacterSet setNoneNumeric;\n\tCharacterSet *escapeSetValid;\n\tEscapeSequence() {\n\t\tdigitsLeft = 0;\n\t\tescapeSetValid = 0;\n\t\tsetHexDigits = CharacterSet(CharacterSet::setDigits, \"ABCDEFabcdef\");\n\t\tsetOctDigits = CharacterSet(CharacterSet::setNone, \"01234567\");\n\t}\n\tvoid resetEscapeState(int nextChar) {\n\t\tdigitsLeft = 0;\n\t\tescapeSetValid = &setNoneNumeric;\n\t\tif (nextChar == 'U') {\n\t\t\tdigitsLeft = 9;\n\t\t\tescapeSetValid = &setHexDigits;\n\t\t} else if (nextChar == 'u') {\n\t\t\tdigitsLeft = 5;\n\t\t\tescapeSetValid = &setHexDigits;\n\t\t} else if (nextChar == 'x') {\n\t\t\tdigitsLeft = 5;\n\t\t\tescapeSetValid = &setHexDigits;\n\t\t} else if (setOctDigits.Contains(nextChar)) {\n\t\t\tdigitsLeft = 3;\n\t\t\tescapeSetValid = &setOctDigits;\n\t\t}\n\t}\n\tbool atEscapeEnd(int currChar) const {\n\t\treturn (digitsLeft <= 0) || !escapeSetValid->Contains(currChar);\n\t}\n};\n\nstd::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpace) {\n\tstd::string restOfLine;\n\tSci_Position i =0;\n\tchar ch = styler.SafeGetCharAt(start, '\\n');\n\tSci_Position endLine = styler.LineEnd(styler.GetLine(start));\n\twhile (((start+i) < endLine) && (ch != '\\r')) {\n\t\tchar chNext = styler.SafeGetCharAt(start + i + 1, '\\n');\n\t\tif (ch == '/' && (chNext == '/' || chNext == '*'))\n\t\t\tbreak;\n\t\tif (allowSpace || (ch != ' '))\n\t\t\trestOfLine += ch;\n\t\ti++;\n\t\tch = chNext;\n\t}\n\treturn restOfLine;\n}\n\nbool IsStreamCommentStyle(int style) {\n\treturn style == SCE_C_COMMENT ||\n\t\tstyle == SCE_C_COMMENTDOC ||\n\t\tstyle == SCE_C_COMMENTDOCKEYWORD ||\n\t\tstyle == SCE_C_COMMENTDOCKEYWORDERROR;\n}\n\nstruct PPDefinition {\n\tSci_Position line;\n\tstd::string key;\n\tstd::string value;\n\tbool isUndef;\n\tstd::string arguments;\n\tPPDefinition(Sci_Position line_, const std::string &key_, const std::string &value_, bool isUndef_ = false, const std::string &arguments_=\"\") :\n\t\tline(line_), key(key_), value(value_), isUndef(isUndef_), arguments(arguments_) {\n\t}\n};\n\nclass LinePPState {\n\tint state;\n\tint ifTaken;\n\tint level;\n\tbool ValidLevel() const {\n\t\treturn level >= 0 && level < 32;\n\t}\n\tint maskLevel() const {\n\t\treturn 1 << level;\n\t}\npublic:\n\tLinePPState() : state(0), ifTaken(0), level(-1) {\n\t}\n\tbool IsInactive() const {\n\t\treturn state != 0;\n\t}\n\tbool CurrentIfTaken() const {\n\t\treturn (ifTaken & maskLevel()) != 0;\n\t}\n\tvoid StartSection(bool on) {\n\t\tlevel++;\n\t\tif (ValidLevel()) {\n\t\t\tif (on) {\n\t\t\t\tstate &= ~maskLevel();\n\t\t\t\tifTaken |= maskLevel();\n\t\t\t} else {\n\t\t\t\tstate |= maskLevel();\n\t\t\t\tifTaken &= ~maskLevel();\n\t\t\t}\n\t\t}\n\t}\n\tvoid EndSection() {\n\t\tif (ValidLevel()) {\n\t\t\tstate &= ~maskLevel();\n\t\t\tifTaken &= ~maskLevel();\n\t\t}\n\t\tlevel--;\n\t}\n\tvoid InvertCurrentLevel() {\n\t\tif (ValidLevel()) {\n\t\t\tstate ^= maskLevel();\n\t\t\tifTaken |= maskLevel();\n\t\t}\n\t}\n};\n\n// Hold the preprocessor state for each line seen.\n// Currently one entry per line but could become sparse with just one entry per preprocessor line.\nclass PPStates {\n\tstd::vector<LinePPState> vlls;\npublic:\n\tLinePPState ForLine(Sci_Position line) const {\n\t\tif ((line > 0) && (vlls.size() > static_cast<size_t>(line))) {\n\t\t\treturn vlls[line];\n\t\t} else {\n\t\t\treturn LinePPState();\n\t\t}\n\t}\n\tvoid Add(Sci_Position line, LinePPState lls) {\n\t\tvlls.resize(line+1);\n\t\tvlls[line] = lls;\n\t}\n};\n\n// An individual named option for use in an OptionSet\n\n// Options used for LexerCPP\nstruct OptionsCPP {\n\tbool stylingWithinPreprocessor;\n\tbool identifiersAllowDollars;\n\tbool trackPreprocessor;\n\tbool updatePreprocessor;\n\tbool verbatimStringsAllowEscapes;\n\tbool triplequotedStrings;\n\tbool hashquotedStrings;\n\tbool backQuotedStrings;\n\tbool escapeSequence;\n\tbool fold;\n\tbool foldSyntaxBased;\n\tbool foldComment;\n\tbool foldCommentMultiline;\n\tbool foldCommentExplicit;\n\tstd::string foldExplicitStart;\n\tstd::string foldExplicitEnd;\n\tbool foldExplicitAnywhere;\n\tbool foldPreprocessor;\n\tbool foldPreprocessorAtElse;\n\tbool foldCompact;\n\tbool foldAtElse;\n\tOptionsCPP() {\n\t\tstylingWithinPreprocessor = false;\n\t\tidentifiersAllowDollars = true;\n\t\ttrackPreprocessor = true;\n\t\tupdatePreprocessor = true;\n\t\tverbatimStringsAllowEscapes = false;\n\t\ttriplequotedStrings = false;\n\t\thashquotedStrings = false;\n\t\tbackQuotedStrings = false;\n\t\tescapeSequence = false;\n\t\tfold = false;\n\t\tfoldSyntaxBased = true;\n\t\tfoldComment = false;\n\t\tfoldCommentMultiline = true;\n\t\tfoldCommentExplicit = true;\n\t\tfoldExplicitStart = \"\";\n\t\tfoldExplicitEnd = \"\";\n\t\tfoldExplicitAnywhere = false;\n\t\tfoldPreprocessor = false;\n\t\tfoldPreprocessorAtElse = false;\n\t\tfoldCompact = false;\n\t\tfoldAtElse = false;\n\t}\n};\n\nconst char *const cppWordLists[] = {\n            \"Primary keywords and identifiers\",\n            \"Secondary keywords and identifiers\",\n            \"Documentation comment keywords\",\n            \"Global classes and typedefs\",\n            \"Preprocessor definitions\",\n            \"Task marker and error marker keywords\",\n            0,\n};\n\nstruct OptionSetCPP : public OptionSet<OptionsCPP> {\n\tOptionSetCPP() {\n\t\tDefineProperty(\"styling.within.preprocessor\", &OptionsCPP::stylingWithinPreprocessor,\n\t\t\t\"For C++ code, determines whether all preprocessor code is styled in the \"\n\t\t\t\"preprocessor style (0, the default) or only from the initial # to the end \"\n\t\t\t\"of the command word(1).\");\n\n\t\tDefineProperty(\"lexer.cpp.allow.dollars\", &OptionsCPP::identifiersAllowDollars,\n\t\t\t\"Set to 0 to disallow the '$' character in identifiers with the cpp lexer.\");\n\n\t\tDefineProperty(\"lexer.cpp.track.preprocessor\", &OptionsCPP::trackPreprocessor,\n\t\t\t\"Set to 1 to interpret #if/#else/#endif to grey out code that is not active.\");\n\n\t\tDefineProperty(\"lexer.cpp.update.preprocessor\", &OptionsCPP::updatePreprocessor,\n\t\t\t\"Set to 1 to update preprocessor definitions when #define found.\");\n\n\t\tDefineProperty(\"lexer.cpp.verbatim.strings.allow.escapes\", &OptionsCPP::verbatimStringsAllowEscapes,\n\t\t\t\"Set to 1 to allow verbatim strings to contain escape sequences.\");\n\n\t\tDefineProperty(\"lexer.cpp.triplequoted.strings\", &OptionsCPP::triplequotedStrings,\n\t\t\t\"Set to 1 to enable highlighting of triple-quoted strings.\");\n\n\t\tDefineProperty(\"lexer.cpp.hashquoted.strings\", &OptionsCPP::hashquotedStrings,\n\t\t\t\"Set to 1 to enable highlighting of hash-quoted strings.\");\n\n\t\tDefineProperty(\"lexer.cpp.backquoted.strings\", &OptionsCPP::backQuotedStrings,\n\t\t\t\"Set to 1 to enable highlighting of back-quoted raw strings .\");\n\n\t\tDefineProperty(\"lexer.cpp.escape.sequence\", &OptionsCPP::escapeSequence,\n\t\t\t\"Set to 1 to enable highlighting of escape sequences in strings\");\n\n\t\tDefineProperty(\"fold\", &OptionsCPP::fold);\n\n\t\tDefineProperty(\"fold.cpp.syntax.based\", &OptionsCPP::foldSyntaxBased,\n\t\t\t\"Set this property to 0 to disable syntax based folding.\");\n\n\t\tDefineProperty(\"fold.comment\", &OptionsCPP::foldComment,\n\t\t\t\"This option enables folding multi-line comments and explicit fold points when using the C++ lexer. \"\n\t\t\t\"Explicit fold points allows adding extra folding by placing a //{ comment at the start and a //} \"\n\t\t\t\"at the end of a section that should fold.\");\n\n\t\tDefineProperty(\"fold.cpp.comment.multiline\", &OptionsCPP::foldCommentMultiline,\n\t\t\t\"Set this property to 0 to disable folding multi-line comments when fold.comment=1.\");\n\n\t\tDefineProperty(\"fold.cpp.comment.explicit\", &OptionsCPP::foldCommentExplicit,\n\t\t\t\"Set this property to 0 to disable folding explicit fold points when fold.comment=1.\");\n\n\t\tDefineProperty(\"fold.cpp.explicit.start\", &OptionsCPP::foldExplicitStart,\n\t\t\t\"The string to use for explicit fold start points, replacing the standard //{.\");\n\n\t\tDefineProperty(\"fold.cpp.explicit.end\", &OptionsCPP::foldExplicitEnd,\n\t\t\t\"The string to use for explicit fold end points, replacing the standard //}.\");\n\n\t\tDefineProperty(\"fold.cpp.explicit.anywhere\", &OptionsCPP::foldExplicitAnywhere,\n\t\t\t\"Set this property to 1 to enable explicit fold points anywhere, not just in line comments.\");\n\t\t\n\t\tDefineProperty(\"fold.cpp.preprocessor.at.else\", &OptionsCPP::foldPreprocessorAtElse,\n\t\t\t\"This option enables folding on a preprocessor #else or #endif line of an #if statement.\");\n\n\t\tDefineProperty(\"fold.preprocessor\", &OptionsCPP::foldPreprocessor,\n\t\t\t\"This option enables folding preprocessor directives when using the C++ lexer. \"\n\t\t\t\"Includes C#'s explicit #region and #endregion folding directives.\");\n\n\t\tDefineProperty(\"fold.compact\", &OptionsCPP::foldCompact);\n\n\t\tDefineProperty(\"fold.at.else\", &OptionsCPP::foldAtElse,\n\t\t\t\"This option enables C++ folding on a \\\"} else {\\\" line of an if statement.\");\n\n\t\tDefineWordListSets(cppWordLists);\n\t}\n};\n\nconst char styleSubable[] = {SCE_C_IDENTIFIER, SCE_C_COMMENTDOCKEYWORD, 0};\n\n}\n\nclass LexerCPP : public ILexerWithSubStyles {\n\tbool caseSensitive;\n\tCharacterSet setWord;\n\tCharacterSet setNegationOp;\n\tCharacterSet setArithmethicOp;\n\tCharacterSet setRelOp;\n\tCharacterSet setLogicalOp;\n\tCharacterSet setWordStart;\n\tPPStates vlls;\n\tstd::vector<PPDefinition> ppDefineHistory;\n\tWordList keywords;\n\tWordList keywords2;\n\tWordList keywords3;\n\tWordList keywords4;\n\tWordList ppDefinitions;\n\tWordList markerList;\n\tstruct SymbolValue {\n\t\tstd::string value;\n\t\tstd::string arguments;\n\t\tSymbolValue(const std::string &value_=\"\", const std::string &arguments_=\"\") : value(value_), arguments(arguments_) {\n\t\t}\n\t\tSymbolValue &operator = (const std::string &value_) {\n\t\t\tvalue = value_;\n\t\t\targuments.clear();\n\t\t\treturn *this;\n\t\t}\n\t\tbool IsMacro() const {\n\t\t\treturn !arguments.empty();\n\t\t}\n\t};\n\ttypedef std::map<std::string, SymbolValue> SymbolTable;\n\tSymbolTable preprocessorDefinitionsStart;\n\tOptionsCPP options;\n\tOptionSetCPP osCPP;\n\tEscapeSequence escapeSeq;\n\tSparseState<std::string> rawStringTerminators;\n\tenum { activeFlag = 0x40 };\n\tenum { ssIdentifier, ssDocKeyword };\n\tSubStyles subStyles;\npublic:\n\texplicit LexerCPP(bool caseSensitive_) :\n\t\tcaseSensitive(caseSensitive_),\n\t\tsetWord(CharacterSet::setAlphaNum, \"._\", 0x80, true),\n\t\tsetNegationOp(CharacterSet::setNone, \"!\"),\n\t\tsetArithmethicOp(CharacterSet::setNone, \"+-/*%\"),\n\t\tsetRelOp(CharacterSet::setNone, \"=!<>\"),\n\t\tsetLogicalOp(CharacterSet::setNone, \"|&\"),\n\t\tsubStyles(styleSubable, 0x80, 0x40, activeFlag) {\n\t}\n\tvirtual ~LexerCPP() {\n\t}\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tint SCI_METHOD Version() const {\n\t\treturn lvSubStyles;\n\t}\n\tconst char * SCI_METHOD PropertyNames() {\n\t\treturn osCPP.PropertyNames();\n\t}\n\tint SCI_METHOD PropertyType(const char *name) {\n\t\treturn osCPP.PropertyType(name);\n\t}\n\tconst char * SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn osCPP.DescribeProperty(name);\n\t}\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tconst char * SCI_METHOD DescribeWordListSets() {\n\t\treturn osCPP.DescribeWordListSets();\n\t}\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\n\tint SCI_METHOD LineEndTypesSupported() {\n\t\treturn SC_LINE_END_TYPE_UNICODE;\n\t}\n\n\tint SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) {\n\t\treturn subStyles.Allocate(styleBase, numberStyles);\n\t}\n\tint SCI_METHOD SubStylesStart(int styleBase) {\n\t\treturn subStyles.Start(styleBase);\n\t}\n\tint SCI_METHOD SubStylesLength(int styleBase) {\n\t\treturn subStyles.Length(styleBase);\n\t}\n\tint SCI_METHOD StyleFromSubStyle(int subStyle) {\n\t\tint styleBase = subStyles.BaseStyle(MaskActive(subStyle));\n\t\tint active = subStyle & activeFlag;\n\t\treturn styleBase | active;\n\t}\n\tint SCI_METHOD PrimaryStyleFromStyle(int style) {\n\t\treturn MaskActive(style);\n \t}\n\tvoid SCI_METHOD FreeSubStyles() {\n\t\tsubStyles.Free();\n\t}\n\tvoid SCI_METHOD SetIdentifiers(int style, const char *identifiers) {\n\t\tsubStyles.SetIdentifiers(style, identifiers);\n\t}\n\tint SCI_METHOD DistanceToSecondaryStyles() {\n\t\treturn activeFlag;\n\t}\n\tconst char * SCI_METHOD GetSubStyleBases() {\n\t\treturn styleSubable;\n\t}\n\n\tstatic ILexer *LexerFactoryCPP() {\n\t\treturn new LexerCPP(true);\n\t}\n\tstatic ILexer *LexerFactoryCPPInsensitive() {\n\t\treturn new LexerCPP(false);\n\t}\n\tstatic int MaskActive(int style) {\n\t\treturn style & ~activeFlag;\n\t}\n\tvoid EvaluateTokens(std::vector<std::string> &tokens, const SymbolTable &preprocessorDefinitions);\n\tstd::vector<std::string> Tokenize(const std::string &expr) const;\n\tbool EvaluateExpression(const std::string &expr, const SymbolTable &preprocessorDefinitions);\n};\n\nSci_Position SCI_METHOD LexerCPP::PropertySet(const char *key, const char *val) {\n\tif (osCPP.PropertySet(&options, key, val)) {\n\t\tif (strcmp(key, \"lexer.cpp.allow.dollars\") == 0) {\n\t\t\tsetWord = CharacterSet(CharacterSet::setAlphaNum, \"._\", 0x80, true);\n\t\t\tif (options.identifiersAllowDollars) {\n\t\t\t\tsetWord.Add('$');\n\t\t\t}\n\t\t}\n\t\treturn 0;\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerCPP::WordListSet(int n, const char *wl) {\n\tWordList *wordListN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\twordListN = &keywords;\n\t\tbreak;\n\tcase 1:\n\t\twordListN = &keywords2;\n\t\tbreak;\n\tcase 2:\n\t\twordListN = &keywords3;\n\t\tbreak;\n\tcase 3:\n\t\twordListN = &keywords4;\n\t\tbreak;\n\tcase 4:\n\t\twordListN = &ppDefinitions;\n\t\tbreak;\n\tcase 5:\n\t\twordListN = &markerList;\n\t\tbreak;\n\t}\n\tSci_Position firstModification = -1;\n\tif (wordListN) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t\tif (n == 4) {\n\t\t\t\t// Rebuild preprocessorDefinitions\n\t\t\t\tpreprocessorDefinitionsStart.clear();\n\t\t\t\tfor (int nDefinition = 0; nDefinition < ppDefinitions.Length(); nDefinition++) {\n\t\t\t\t\tconst char *cpDefinition = ppDefinitions.WordAt(nDefinition);\n\t\t\t\t\tconst char *cpEquals = strchr(cpDefinition, '=');\n\t\t\t\t\tif (cpEquals) {\n\t\t\t\t\t\tstd::string name(cpDefinition, cpEquals - cpDefinition);\n\t\t\t\t\t\tstd::string val(cpEquals+1);\n\t\t\t\t\t\tsize_t bracket = name.find('(');\n\t\t\t\t\t\tsize_t bracketEnd = name.find(')');\n\t\t\t\t\t\tif ((bracket != std::string::npos) && (bracketEnd != std::string::npos)) {\n\t\t\t\t\t\t\t// Macro\n\t\t\t\t\t\t\tstd::string args = name.substr(bracket + 1, bracketEnd - bracket - 1);\n\t\t\t\t\t\t\tname = name.substr(0, bracket);\n\t\t\t\t\t\t\tpreprocessorDefinitionsStart[name] = SymbolValue(val, args);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpreprocessorDefinitionsStart[name] = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstd::string name(cpDefinition);\n\t\t\t\t\t\tstd::string val(\"1\");\n\t\t\t\t\t\tpreprocessorDefinitionsStart[name] = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn firstModification;\n}\n\n// Functor used to truncate history\nstruct After {\n\tSci_Position line;\n\texplicit After(Sci_Position line_) : line(line_) {}\n\tbool operator()(PPDefinition &p) const {\n\t\treturn p.line > line;\n\t}\n};\n\nvoid SCI_METHOD LexerCPP::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tLexAccessor styler(pAccess);\n\n\tCharacterSet setOKBeforeRE(CharacterSet::setNone, \"([{=,:;!%^&*|?~+-\");\n\tCharacterSet setCouldBePostOp(CharacterSet::setNone, \"+-\");\n\n\tCharacterSet setDoxygen(CharacterSet::setAlpha, \"$@\\\\&<>#{}[]\");\n\n\tsetWordStart = CharacterSet(CharacterSet::setAlpha, \"_\", 0x80, true);\n\n\tCharacterSet setInvalidRawFirst(CharacterSet::setNone, \" )\\\\\\t\\v\\f\\n\");\n\n\tif (options.identifiersAllowDollars) {\n\t\tsetWordStart.Add('$');\n\t}\n\n\tint chPrevNonWhite = ' ';\n\tint visibleChars = 0;\n\tbool lastWordWasUUID = false;\n\tint styleBeforeDCKeyword = SCE_C_DEFAULT;\n\tint styleBeforeTaskMarker = SCE_C_DEFAULT;\n\tbool continuationLine = false;\n\tbool isIncludePreprocessor = false;\n\tbool isStringInPreprocessor = false;\n\tbool inRERange = false;\n\tbool seenDocKeyBrace = false;\n\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tif ((MaskActive(initStyle) == SCE_C_PREPROCESSOR) ||\n      (MaskActive(initStyle) == SCE_C_COMMENTLINE) ||\n      (MaskActive(initStyle) == SCE_C_COMMENTLINEDOC)) {\n\t\t// Set continuationLine if last character of previous line is '\\'\n\t\tif (lineCurrent > 0) {\n\t\t\tSci_Position endLinePrevious = styler.LineEnd(lineCurrent - 1);\n\t\t\tif (endLinePrevious > 0) {\n\t\t\t\tcontinuationLine = styler.SafeGetCharAt(endLinePrevious-1) == '\\\\';\n\t\t\t}\n\t\t}\n\t}\n\n\t// look back to set chPrevNonWhite properly for better regex colouring\n\tif (startPos > 0) {\n\t\tSci_Position back = startPos;\n\t\twhile (--back && IsSpaceEquiv(MaskActive(styler.StyleAt(back))))\n\t\t\t;\n\t\tif (MaskActive(styler.StyleAt(back)) == SCE_C_OPERATOR) {\n\t\t\tchPrevNonWhite = styler.SafeGetCharAt(back);\n\t\t}\n\t}\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tLinePPState preproc = vlls.ForLine(lineCurrent);\n\n\tbool definitionsChanged = false;\n\n\t// Truncate ppDefineHistory before current line\n\n\tif (!options.updatePreprocessor)\n\t\tppDefineHistory.clear();\n\n\tstd::vector<PPDefinition>::iterator itInvalid = std::find_if(ppDefineHistory.begin(), ppDefineHistory.end(), After(lineCurrent-1));\n\tif (itInvalid != ppDefineHistory.end()) {\n\t\tppDefineHistory.erase(itInvalid, ppDefineHistory.end());\n\t\tdefinitionsChanged = true;\n\t}\n\n\tSymbolTable preprocessorDefinitions = preprocessorDefinitionsStart;\n\tfor (std::vector<PPDefinition>::iterator itDef = ppDefineHistory.begin(); itDef != ppDefineHistory.end(); ++itDef) {\n\t\tif (itDef->isUndef)\n\t\t\tpreprocessorDefinitions.erase(itDef->key);\n\t\telse\n\t\t\tpreprocessorDefinitions[itDef->key] = SymbolValue(itDef->value, itDef->arguments);\n\t}\n\n\tstd::string rawStringTerminator = rawStringTerminators.ValueAt(lineCurrent-1);\n\tSparseState<std::string> rawSTNew(lineCurrent);\n\n\tint activitySet = preproc.IsInactive() ? activeFlag : 0;\n\n\tconst WordClassifier &classifierIdentifiers = subStyles.Classifier(SCE_C_IDENTIFIER);\n\tconst WordClassifier &classifierDocKeyWords = subStyles.Classifier(SCE_C_COMMENTDOCKEYWORD);\n\n\tSci_Position lineEndNext = styler.LineEnd(lineCurrent);\n\n\tfor (; sc.More();) {\n\n\t\tif (sc.atLineStart) {\n\t\t\t// Using MaskActive() is not needed in the following statement.\n\t\t\t// Inside inactive preprocessor declaration, state will be reset anyway at the end of this block.\n\t\t\tif ((sc.state == SCE_C_STRING) || (sc.state == SCE_C_CHARACTER)) {\n\t\t\t\t// Prevent SCE_C_STRINGEOL from leaking back to previous line which\n\t\t\t\t// ends with a line continuation by locking in the state up to this position.\n\t\t\t\tsc.SetState(sc.state);\n\t\t\t}\n\t\t\tif ((MaskActive(sc.state) == SCE_C_PREPROCESSOR) && (!continuationLine)) {\n\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t}\n\t\t\t// Reset states to beginning of colourise so no surprises\n\t\t\t// if different sets of lines lexed.\n\t\t\tvisibleChars = 0;\n\t\t\tlastWordWasUUID = false;\n\t\t\tisIncludePreprocessor = false;\n\t\t\tinRERange = false;\n\t\t\tif (preproc.IsInactive()) {\n\t\t\t\tactivitySet = activeFlag;\n\t\t\t\tsc.SetState(sc.state | activitySet);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\tlineCurrent++;\n\t\t\tlineEndNext = styler.LineEnd(lineCurrent);\n\t\t\tvlls.Add(lineCurrent, preproc);\n\t\t\tif (rawStringTerminator != \"\") {\n\t\t\t\trawSTNew.Set(lineCurrent-1, rawStringTerminator);\n\t\t\t}\n\t\t}\n\n\t\t// Handle line continuation generically.\n\t\tif (sc.ch == '\\\\') {\n\t\t\tif (static_cast<Sci_Position>((sc.currentPos+1)) >= lineEndNext) {\n\t\t\t\tlineCurrent++;\n\t\t\t\tlineEndNext = styler.LineEnd(lineCurrent);\n\t\t\t\tvlls.Add(lineCurrent, preproc);\n\t\t\t\tif (rawStringTerminator != \"\") {\n\t\t\t\t\trawSTNew.Set(lineCurrent-1, rawStringTerminator);\n\t\t\t\t}\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\t// Even in UTF-8, \\r and \\n are separate\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinuationLine = true;\n\t\t\t\tsc.Forward();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\tconst bool atLineEndBeforeSwitch = sc.atLineEnd;\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (MaskActive(sc.state)) {\n\t\t\tcase SCE_C_OPERATOR:\n\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_NUMBER:\n\t\t\t\t// We accept almost anything because of hex. and number suffixes\n\t\t\t\tif (sc.ch == '_') {\n\t\t\t\t\tsc.ChangeState(SCE_C_USERLITERAL|activitySet);\n\t\t\t\t} else if (!(setWord.Contains(sc.ch)\n\t\t\t\t   || (sc.ch == '\\'')\n\t\t\t\t   || ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E' ||\n\t\t\t\t                                          sc.chPrev == 'p' || sc.chPrev == 'P')))) {\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_USERLITERAL:\n\t\t\t\tif (!(setWord.Contains(sc.ch)))\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_IDENTIFIER:\n\t\t\t\tif (sc.atLineStart || sc.atLineEnd || !setWord.Contains(sc.ch) || (sc.ch == '.')) {\n\t\t\t\t\tchar s[1000];\n\t\t\t\t\tif (caseSensitive) {\n\t\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\t}\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tlastWordWasUUID = strcmp(s, \"uuid\") == 0;\n\t\t\t\t\t\tsc.ChangeState(SCE_C_WORD|activitySet);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_C_WORD2|activitySet);\n\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_C_GLOBALCLASS|activitySet);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tint subStyle = classifierIdentifiers.ValueFor(s);\n\t\t\t\t\t\tif (subStyle >= 0) {\n\t\t\t\t\t\t\tsc.ChangeState(subStyle|activitySet);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconst bool literalString = sc.ch == '\\\"';\n\t\t\t\t\tif (literalString || sc.ch == '\\'') {\n\t\t\t\t\t\tsize_t lenS = strlen(s);\n\t\t\t\t\t\tconst bool raw = literalString && sc.chPrev == 'R' && !setInvalidRawFirst.Contains(sc.chNext);\n\t\t\t\t\t\tif (raw)\n\t\t\t\t\t\t\ts[lenS--] = '\\0';\n\t\t\t\t\t\tbool valid =\n\t\t\t\t\t\t\t(lenS == 0) ||\n\t\t\t\t\t\t\t((lenS == 1) && ((s[0] == 'L') || (s[0] == 'u') || (s[0] == 'U'))) ||\n\t\t\t\t\t\t\t((lenS == 2) && literalString && (s[0] == 'u') && (s[1] == '8'));\n\t\t\t\t\t\tif (valid) {\n\t\t\t\t\t\t\tif (literalString) {\n\t\t\t\t\t\t\t\tif (raw) {\n\t\t\t\t\t\t\t\t\t// Set the style of the string prefix to SCE_C_STRINGRAW but then change to\n\t\t\t\t\t\t\t\t\t// SCE_C_DEFAULT as that allows the raw string start code to run.\n\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_C_STRINGRAW|activitySet);\n\t\t\t\t\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_C_STRING|activitySet);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsc.ChangeState(SCE_C_CHARACTER|activitySet);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState(SCE_C_DEFAULT | activitySet);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_PREPROCESSOR:\n\t\t\t\tif (options.stylingWithinPreprocessor) {\n\t\t\t\t\tif (IsASpace(sc.ch)) {\n\t\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\t}\n\t\t\t\t} else if (isStringInPreprocessor && (sc.Match('>') || sc.Match('\\\"') || sc.atLineEnd)) {\n\t\t\t\t\tisStringInPreprocessor = false;\n\t\t\t\t} else if (!isStringInPreprocessor) {\n\t\t\t\t\tif ((isIncludePreprocessor && sc.Match('<')) || sc.Match('\\\"')) {\n\t\t\t\t\t\tisStringInPreprocessor = true;\n\t\t\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\t\t\tif (sc.Match(\"/**\") || sc.Match(\"/*!\")) {\n\t\t\t\t\t\t\tsc.SetState(SCE_C_PREPROCESSORCOMMENTDOC|activitySet);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState(SCE_C_PREPROCESSORCOMMENT|activitySet);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsc.Forward();\t// Eat the *\n\t\t\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_PREPROCESSORCOMMENT:\n\t\t\tcase SCE_C_PREPROCESSORCOMMENTDOC:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_C_PREPROCESSOR|activitySet);\n\t\t\t\t\tcontinue;\t// Without advancing in case of '\\'.\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_COMMENT:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t} else {\n\t\t\t\t\tstyleBeforeTaskMarker = SCE_C_COMMENT;\n\t\t\t\t\thighlightTaskMarker(sc, styler, activitySet, markerList, caseSensitive);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_COMMENTDOC:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // JavaDoc and Doxygen support\n\t\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\t\tstyleBeforeDCKeyword = SCE_C_COMMENTDOC;\n\t\t\t\t\t\tsc.SetState(SCE_C_COMMENTDOCKEYWORD|activitySet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_COMMENTLINE:\n\t\t\t\tif (sc.atLineStart && !continuationLine) {\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t} else {\n\t\t\t\t\tstyleBeforeTaskMarker = SCE_C_COMMENTLINE;\n\t\t\t\t\thighlightTaskMarker(sc, styler, activitySet, markerList, caseSensitive);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_COMMENTLINEDOC:\n\t\t\t\tif (sc.atLineStart && !continuationLine) {\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // JavaDoc and Doxygen support\n\t\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\t\tstyleBeforeDCKeyword = SCE_C_COMMENTLINEDOC;\n\t\t\t\t\t\tsc.SetState(SCE_C_COMMENTDOCKEYWORD|activitySet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_COMMENTDOCKEYWORD:\n\t\t\t\tif ((styleBeforeDCKeyword == SCE_C_COMMENTDOC) && sc.Match('*', '/')) {\n\t\t\t\t\tsc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\tseenDocKeyBrace = false;\n\t\t\t\t} else if (sc.ch == '[' || sc.ch == '{') {\n\t\t\t\t\tseenDocKeyBrace = true;\n\t\t\t\t} else if (!setDoxygen.Contains(sc.ch)\n\t\t\t\t           && !(seenDocKeyBrace && (sc.ch == ',' || sc.ch == '.'))) {\n\t\t\t\t\tchar s[100];\n\t\t\t\t\tif (caseSensitive) {\n\t\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\t}\n\t\t\t\t\tif (!(IsASpace(sc.ch) || (sc.ch == 0))) {\n\t\t\t\t\t\tsc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR|activitySet);\n\t\t\t\t\t} else if (!keywords3.InList(s + 1)) {\n\t\t\t\t\t\tint subStyleCDKW = classifierDocKeyWords.ValueFor(s+1);\n\t\t\t\t\t\tif (subStyleCDKW >= 0) {\n\t\t\t\t\t\t\tsc.ChangeState(subStyleCDKW|activitySet);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_C_COMMENTDOCKEYWORDERROR|activitySet);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(styleBeforeDCKeyword|activitySet);\n\t\t\t\t\tseenDocKeyBrace = false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_STRING:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_C_STRINGEOL|activitySet);\n\t\t\t\t} else if (isIncludePreprocessor) {\n\t\t\t\t\tif (sc.ch == '>') {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\t\tisIncludePreprocessor = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (options.escapeSequence) {\n\t\t\t\t\t\tsc.SetState(SCE_C_ESCAPESEQUENCE|activitySet);\n\t\t\t\t\t\tescapeSeq.resetEscapeState(sc.chNext);\n\t\t\t\t\t}\n\t\t\t\t\tsc.Forward(); // Skip all characters after the backslash\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tif (sc.chNext == '_') {\n\t\t\t\t\t\tsc.ChangeState(SCE_C_USERLITERAL|activitySet);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_ESCAPESEQUENCE:\n\t\t\t\tescapeSeq.digitsLeft--;\n\t\t\t\tif (!escapeSeq.atEscapeEnd(sc.ch)) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (sc.ch == '\"') {\n\t\t\t\t\tsc.SetState(SCE_C_STRING|activitySet);\n\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tescapeSeq.resetEscapeState(sc.chNext);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_C_STRING|activitySet);\n\t\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\t\tsc.ChangeState(SCE_C_STRINGEOL|activitySet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_HASHQUOTEDSTRING:\n\t\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_STRINGRAW:\n\t\t\t\tif (sc.Match(rawStringTerminator.c_str())) {\n\t\t\t\t\tfor (size_t termPos=rawStringTerminator.size(); termPos; termPos--)\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\trawStringTerminator = \"\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_CHARACTER:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_C_STRINGEOL|activitySet);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tif (sc.chNext == '_') {\n\t\t\t\t\t\tsc.ChangeState(SCE_C_USERLITERAL|activitySet);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_REGEX:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t} else if (! inRERange && sc.ch == '/') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\twhile ((sc.ch < 0x80) && islower(sc.ch))\n\t\t\t\t\t\tsc.Forward();    // gobble regex flags\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t} else if (sc.ch == '\\\\' && (static_cast<Sci_Position>(sc.currentPos+1) < lineEndNext)) {\n\t\t\t\t\t// Gobble up the escaped character\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (sc.ch == '[') {\n\t\t\t\t\tinRERange = true;\n\t\t\t\t} else if (sc.ch == ']') {\n\t\t\t\t\tinRERange = false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_STRINGEOL:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_VERBATIM:\n\t\t\t\tif (options.verbatimStringsAllowEscapes && (sc.ch == '\\\\')) {\n\t\t\t\t\tsc.Forward(); // Skip all characters after the backslash\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tif (sc.chNext == '\\\"') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_TRIPLEVERBATIM:\n\t\t\t\tif (sc.Match(\"\\\"\\\"\\\"\")) {\n\t\t\t\t\twhile (sc.Match('\"')) {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_UUID:\n\t\t\t\tif (sc.atLineEnd || sc.ch == ')') {\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_C_TASKMARKER:\n\t\t\t\tif (isoperator(sc.ch) || IsASpace(sc.ch)) {\n\t\t\t\t\tsc.SetState(styleBeforeTaskMarker|activitySet);\n\t\t\t\t\tstyleBeforeTaskMarker = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd && !atLineEndBeforeSwitch) {\n\t\t\t// State exit processing consumed characters up to end of line.\n\t\t\tlineCurrent++;\n\t\t\tlineEndNext = styler.LineEnd(lineCurrent);\n\t\t\tvlls.Add(lineCurrent, preproc);\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (MaskActive(sc.state) == SCE_C_DEFAULT) {\n\t\t\tif (sc.Match('@', '\\\"')) {\n\t\t\t\tsc.SetState(SCE_C_VERBATIM|activitySet);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (options.triplequotedStrings && sc.Match(\"\\\"\\\"\\\"\")) {\n\t\t\t\tsc.SetState(SCE_C_TRIPLEVERBATIM|activitySet);\n\t\t\t\tsc.Forward(2);\n\t\t\t} else if (options.hashquotedStrings && sc.Match('#', '\\\"')) {\n\t\t\t\tsc.SetState(SCE_C_HASHQUOTEDSTRING|activitySet);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (options.backQuotedStrings && sc.Match('`')) {\n\t\t\t\tsc.SetState(SCE_C_STRINGRAW|activitySet);\n\t\t\t\trawStringTerminator = \"`\";\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tif (lastWordWasUUID) {\n\t\t\t\t\tsc.SetState(SCE_C_UUID|activitySet);\n\t\t\t\t\tlastWordWasUUID = false;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_C_NUMBER|activitySet);\n\t\t\t\t}\n\t\t\t} else if (!sc.atLineEnd && (setWordStart.Contains(sc.ch) || (sc.ch == '@'))) {\n\t\t\t\tif (lastWordWasUUID) {\n\t\t\t\t\tsc.SetState(SCE_C_UUID|activitySet);\n\t\t\t\t\tlastWordWasUUID = false;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_C_IDENTIFIER|activitySet);\n\t\t\t\t}\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tif (sc.Match(\"/**\") || sc.Match(\"/*!\")) {\t// Support of Qt/Doxygen doc. style\n\t\t\t\t\tsc.SetState(SCE_C_COMMENTDOC|activitySet);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_C_COMMENT|activitySet);\n\t\t\t\t}\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tif ((sc.Match(\"///\") && !sc.Match(\"////\")) || sc.Match(\"//!\"))\n\t\t\t\t\t// Support of Qt/Doxygen doc. style\n\t\t\t\t\tsc.SetState(SCE_C_COMMENTLINEDOC|activitySet);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_C_COMMENTLINE|activitySet);\n\t\t\t} else if (sc.ch == '/'\n\t\t\t\t   && (setOKBeforeRE.Contains(chPrevNonWhite)\n\t\t\t\t       || followsReturnKeyword(sc, styler))\n\t\t\t\t   && (!setCouldBePostOp.Contains(chPrevNonWhite)\n\t\t\t\t       || !FollowsPostfixOperator(sc, styler))) {\n\t\t\t\tsc.SetState(SCE_C_REGEX|activitySet);\t// JavaScript's RegEx\n\t\t\t\tinRERange = false;\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tif (sc.chPrev == 'R') {\n\t\t\t\t\tstyler.Flush();\n\t\t\t\t\tif (MaskActive(styler.StyleAt(sc.currentPos - 1)) == SCE_C_STRINGRAW) {\n\t\t\t\t\t\tsc.SetState(SCE_C_STRINGRAW|activitySet);\n\t\t\t\t\t\trawStringTerminator = \")\";\n\t\t\t\t\t\tfor (Sci_Position termPos = sc.currentPos + 1;; termPos++) {\n\t\t\t\t\t\t\tchar chTerminator = styler.SafeGetCharAt(termPos, '(');\n\t\t\t\t\t\t\tif (chTerminator == '(')\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\trawStringTerminator += chTerminator;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trawStringTerminator += '\\\"';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_C_STRING|activitySet);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_C_STRING|activitySet);\n\t\t\t\t}\n\t\t\t\tisIncludePreprocessor = false;\t// ensure that '>' won't end the string\n\t\t\t} else if (isIncludePreprocessor && sc.ch == '<') {\n\t\t\t\tsc.SetState(SCE_C_STRING|activitySet);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_C_CHARACTER|activitySet);\n\t\t\t} else if (sc.ch == '#' && visibleChars == 0) {\n\t\t\t\t// Preprocessor commands are alone on their line\n\t\t\t\tsc.SetState(SCE_C_PREPROCESSOR|activitySet);\n\t\t\t\t// Skip whitespace between # and preprocessor word\n\t\t\t\tdo {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More());\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_C_DEFAULT|activitySet);\n\t\t\t\t} else if (sc.Match(\"include\")) {\n\t\t\t\t\tisIncludePreprocessor = true;\n\t\t\t\t} else {\n\t\t\t\t\tif (options.trackPreprocessor) {\n\t\t\t\t\t\tif (sc.Match(\"ifdef\") || sc.Match(\"ifndef\")) {\n\t\t\t\t\t\t\tbool isIfDef = sc.Match(\"ifdef\");\n\t\t\t\t\t\t\tint i = isIfDef ? 5 : 6;\n\t\t\t\t\t\t\tstd::string restOfLine = GetRestOfLine(styler, sc.currentPos + i + 1, false);\n\t\t\t\t\t\t\tbool foundDef = preprocessorDefinitions.find(restOfLine) != preprocessorDefinitions.end();\n\t\t\t\t\t\t\tpreproc.StartSection(isIfDef == foundDef);\n\t\t\t\t\t\t} else if (sc.Match(\"if\")) {\n\t\t\t\t\t\t\tstd::string restOfLine = GetRestOfLine(styler, sc.currentPos + 2, true);\n\t\t\t\t\t\t\tbool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions);\n\t\t\t\t\t\t\tpreproc.StartSection(ifGood);\n\t\t\t\t\t\t} else if (sc.Match(\"else\")) {\n\t\t\t\t\t\t\tif (!preproc.CurrentIfTaken()) {\n\t\t\t\t\t\t\t\tpreproc.InvertCurrentLevel();\n\t\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\t\tif (!activitySet)\n\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_C_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t\t} else if (!preproc.IsInactive()) {\n\t\t\t\t\t\t\t\tpreproc.InvertCurrentLevel();\n\t\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\t\tif (!activitySet)\n\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_C_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (sc.Match(\"elif\")) {\n\t\t\t\t\t\t\t// Ensure only one chosen out of #if .. #elif .. #elif .. #else .. #endif\n\t\t\t\t\t\t\tif (!preproc.CurrentIfTaken()) {\n\t\t\t\t\t\t\t\t// Similar to #if\n\t\t\t\t\t\t\t\tstd::string restOfLine = GetRestOfLine(styler, sc.currentPos + 2, true);\n\t\t\t\t\t\t\t\tbool ifGood = EvaluateExpression(restOfLine, preprocessorDefinitions);\n\t\t\t\t\t\t\t\tif (ifGood) {\n\t\t\t\t\t\t\t\t\tpreproc.InvertCurrentLevel();\n\t\t\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\t\t\tif (!activitySet)\n\t\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_C_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (!preproc.IsInactive()) {\n\t\t\t\t\t\t\t\tpreproc.InvertCurrentLevel();\n\t\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\t\tif (!activitySet)\n\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_C_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (sc.Match(\"endif\")) {\n\t\t\t\t\t\t\tpreproc.EndSection();\n\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\tsc.ChangeState(SCE_C_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t} else if (sc.Match(\"define\")) {\n\t\t\t\t\t\t\tif (options.updatePreprocessor && !preproc.IsInactive()) {\n\t\t\t\t\t\t\t\tstd::string restOfLine = GetRestOfLine(styler, sc.currentPos + 6, true);\n\t\t\t\t\t\t\t\tsize_t startName = 0;\n\t\t\t\t\t\t\t\twhile ((startName < restOfLine.length()) && IsSpaceOrTab(restOfLine[startName]))\n\t\t\t\t\t\t\t\t\tstartName++;\n\t\t\t\t\t\t\t\tsize_t endName = startName;\n\t\t\t\t\t\t\t\twhile ((endName < restOfLine.length()) && setWord.Contains(static_cast<unsigned char>(restOfLine[endName])))\n\t\t\t\t\t\t\t\t\tendName++;\n\t\t\t\t\t\t\t\tstd::string key = restOfLine.substr(startName, endName-startName);\n\t\t\t\t\t\t\t\tif ((endName < restOfLine.length()) && (restOfLine.at(endName) == '(')) {\n\t\t\t\t\t\t\t\t\t// Macro\n\t\t\t\t\t\t\t\t\tsize_t endArgs = endName;\n\t\t\t\t\t\t\t\t\twhile ((endArgs < restOfLine.length()) && (restOfLine[endArgs] != ')'))\n\t\t\t\t\t\t\t\t\t\tendArgs++;\n\t\t\t\t\t\t\t\t\tstd::string args = restOfLine.substr(endName + 1, endArgs - endName - 1);\n\t\t\t\t\t\t\t\t\tsize_t startValue = endArgs+1;\n\t\t\t\t\t\t\t\t\twhile ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue]))\n\t\t\t\t\t\t\t\t\t\tstartValue++;\n\t\t\t\t\t\t\t\t\tstd::string value;\n\t\t\t\t\t\t\t\t\tif (startValue < restOfLine.length())\n\t\t\t\t\t\t\t\t\t\tvalue = restOfLine.substr(startValue);\n\t\t\t\t\t\t\t\t\tpreprocessorDefinitions[key] = SymbolValue(value, args);\n\t\t\t\t\t\t\t\t\tppDefineHistory.push_back(PPDefinition(lineCurrent, key, value, false, args));\n\t\t\t\t\t\t\t\t\tdefinitionsChanged = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Value\n\t\t\t\t\t\t\t\t\tsize_t startValue = endName;\n\t\t\t\t\t\t\t\t\twhile ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue]))\n\t\t\t\t\t\t\t\t\t\tstartValue++;\n\t\t\t\t\t\t\t\t\tstd::string value = restOfLine.substr(startValue);\n\t\t\t\t\t\t\t\t\tpreprocessorDefinitions[key] = value;\n\t\t\t\t\t\t\t\t\tppDefineHistory.push_back(PPDefinition(lineCurrent, key, value));\n\t\t\t\t\t\t\t\t\tdefinitionsChanged = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (sc.Match(\"undef\")) {\n\t\t\t\t\t\t\tif (options.updatePreprocessor && !preproc.IsInactive()) {\n\t\t\t\t\t\t\t\tconst std::string restOfLine = GetRestOfLine(styler, sc.currentPos + 5, false);\n\t\t\t\t\t\t\t\tstd::vector<std::string> tokens = Tokenize(restOfLine);\n\t\t\t\t\t\t\t\tif (tokens.size() >= 1) {\n\t\t\t\t\t\t\t\t\tconst std::string key = tokens[0];\n\t\t\t\t\t\t\t\t\tpreprocessorDefinitions.erase(key);\n\t\t\t\t\t\t\t\t\tppDefineHistory.push_back(PPDefinition(lineCurrent, key, \"\", true));\n\t\t\t\t\t\t\t\t\tdefinitionsChanged = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (isoperator(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_C_OPERATOR|activitySet);\n\t\t\t}\n\t\t}\n\n\t\tif (!IsASpace(sc.ch) && !IsSpaceEquiv(MaskActive(sc.state))) {\n\t\t\tchPrevNonWhite = sc.ch;\n\t\t\tvisibleChars++;\n\t\t}\n\t\tcontinuationLine = false;\n\t\tsc.Forward();\n\t}\n\tconst bool rawStringsChanged = rawStringTerminators.Merge(rawSTNew, lineCurrent);\n\tif (definitionsChanged || rawStringsChanged)\n\t\tstyler.ChangeLexerState(startPos, startPos + length);\n\tsc.Complete();\n}\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\n\nvoid SCI_METHOD LexerCPP::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\n\tif (!options.fold)\n\t\treturn;\n\n\tLexAccessor styler(pAccess);\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tbool inLineComment = false;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tSci_PositionU lineStartNext = styler.LineStart(lineCurrent+1);\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = MaskActive(styler.StyleAt(startPos));\n\tint style = MaskActive(initStyle);\n\tconst bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty();\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = MaskActive(styler.StyleAt(i + 1));\n\t\tbool atEOL = i == (lineStartNext-1);\n\t\tif ((style == SCE_C_COMMENTLINE) || (style == SCE_C_COMMENTLINEDOC))\n\t\t\tinLineComment = true;\n\t\tif (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style) && !inLineComment) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (options.foldComment && options.foldCommentExplicit && ((style == SCE_C_COMMENTLINE) || options.foldExplicitAnywhere)) {\n\t\t\tif (userDefinedFoldMarkers) {\n\t\t\t\tif (styler.Match(i, options.foldExplicitStart.c_str())) {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (styler.Match(i, options.foldExplicitEnd.c_str())) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (options.foldPreprocessor && (style == SCE_C_PREPROCESSOR)) {\n\t\t\tif (ch == '#') {\n\t\t\t\tSci_PositionU j = i + 1;\n\t\t\t\twhile ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\tif (styler.Match(j, \"region\") || styler.Match(j, \"if\")) {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (styler.Match(j, \"end\")) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (options.foldPreprocessorAtElse && (styler.Match(j, \"else\") || styler.Match(j, \"elif\"))) {\n\t\t\t\t\tlevelMinCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (options.foldSyntaxBased && (style == SCE_C_OPERATOR)) {\n\t\t\tif (ch == '{' || ch == '[' || ch == '(') {\n\t\t\t\t// Measure the minimum before a '{' to allow\n\t\t\t\t// folding on \"} else {\"\n\t\t\t\tif (options.foldAtElse && levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == '}' || ch == ']' || ch == ')') {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\t\tif (atEOL || (i == endPos-1)) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif ((options.foldSyntaxBased && options.foldAtElse) ||\n\t\t\t\t(options.foldPreprocessor && options.foldPreprocessorAtElse)\n\t\t\t) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && options.foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlineStartNext = styler.LineStart(lineCurrent+1);\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tif (atEOL && (i == static_cast<Sci_PositionU>(styler.Length()-1))) {\n\t\t\t\t// There is an empty line at end of file so give it same level and empty\n\t\t\t\tstyler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG);\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\t\t\tinLineComment = false;\n\t\t}\n\t}\n}\n\nvoid LexerCPP::EvaluateTokens(std::vector<std::string> &tokens, const SymbolTable &preprocessorDefinitions) {\n\n\t// Remove whitespace tokens\n\ttokens.erase(std::remove_if(tokens.begin(), tokens.end(), OnlySpaceOrTab), tokens.end());\n\n\t// Evaluate defined statements to either 0 or 1\n\tfor (size_t i=0; (i+1)<tokens.size();) {\n\t\tif (tokens[i] == \"defined\") {\n\t\t\tconst char *val = \"0\";\n\t\t\tif (tokens[i+1] == \"(\") {\n\t\t\t\tif (((i + 2)<tokens.size()) && (tokens[i + 2] == \")\")) {\n\t\t\t\t\t// defined()\n\t\t\t\t\ttokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 3);\n\t\t\t\t} else if (((i+3)<tokens.size()) && (tokens[i+3] == \")\")) {\n\t\t\t\t\t// defined(<identifier>)\n\t\t\t\t\tSymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i+2]);\n\t\t\t\t\tif (it != preprocessorDefinitions.end()) {\n\t\t\t\t\t\tval = \"1\";\n\t\t\t\t\t}\n\t\t\t\t\ttokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 4);\n\t\t\t\t} else {\n\t\t\t\t\t// Spurious '(' so erase as more likely to result in false\n\t\t\t\t\ttokens.erase(tokens.begin() + i + 1, tokens.begin() + i + 2);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// defined <identifier>\n\t\t\t\tSymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i+1]);\n\t\t\t\tif (it != preprocessorDefinitions.end()) {\n\t\t\t\t\tval = \"1\";\n\t\t\t\t}\n\t\t\t}\n\t\t\ttokens[i] = val;\n\t\t} else {\n\t\t\ti++;\n\t\t}\n\t}\n\n\t// Evaluate identifiers\n\tconst size_t maxIterations = 100;\n\tsize_t iterations = 0;\t// Limit number of iterations in case there is a recursive macro.\n\tfor (size_t i = 0; (i<tokens.size()) && (iterations < maxIterations);) {\n\t\titerations++;\n\t\tif (setWordStart.Contains(static_cast<unsigned char>(tokens[i][0]))) {\n\t\t\tSymbolTable::const_iterator it = preprocessorDefinitions.find(tokens[i]);\n\t\t\tif (it != preprocessorDefinitions.end()) {\n\t\t\t\t// Tokenize value\n\t\t\t\tstd::vector<std::string> macroTokens = Tokenize(it->second.value);\n\t\t\t\tif (it->second.IsMacro()) {\n\t\t\t\t\tif ((i + 1 < tokens.size()) && (tokens.at(i + 1) == \"(\")) {\n\t\t\t\t\t\t// Create map of argument name to value\n\t\t\t\t\t\tstd::vector<std::string> argumentNames = StringSplit(it->second.arguments, ',');\n\t\t\t\t\t\tstd::map<std::string, std::string> arguments;\n\t\t\t\t\t\tsize_t arg = 0;\n\t\t\t\t\t\tsize_t tok = i+2;\n\t\t\t\t\t\twhile ((tok < tokens.size()) && (arg < argumentNames.size()) && (tokens.at(tok) != \")\")) {\n\t\t\t\t\t\t\tif (tokens.at(tok) != \",\") {\n\t\t\t\t\t\t\t\targuments[argumentNames.at(arg)] = tokens.at(tok);\n\t\t\t\t\t\t\t\targ++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\ttok++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Remove invocation\n\t\t\t\t\t\ttokens.erase(tokens.begin() + i, tokens.begin() + tok + 1);\n\n\t\t\t\t\t\t// Substitute values into macro\n\t\t\t\t\t\tmacroTokens.erase(std::remove_if(macroTokens.begin(), macroTokens.end(), OnlySpaceOrTab), macroTokens.end());\n\n\t\t\t\t\t\tfor (size_t iMacro = 0; iMacro < macroTokens.size();) {\n\t\t\t\t\t\t\tif (setWordStart.Contains(static_cast<unsigned char>(macroTokens[iMacro][0]))) {\n\t\t\t\t\t\t\t\tstd::map<std::string, std::string>::const_iterator itFind = arguments.find(macroTokens[iMacro]);\n\t\t\t\t\t\t\t\tif (itFind != arguments.end()) {\n\t\t\t\t\t\t\t\t\t// TODO: Possible that value will be expression so should insert tokenized form\n\t\t\t\t\t\t\t\t\tmacroTokens[iMacro] = itFind->second;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tiMacro++;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Insert results back into tokens\n\t\t\t\t\t\ttokens.insert(tokens.begin() + i, macroTokens.begin(), macroTokens.end());\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Remove invocation\n\t\t\t\t\ttokens.erase(tokens.begin() + i);\n\t\t\t\t\t// Insert results back into tokens\n\t\t\t\t\ttokens.insert(tokens.begin() + i, macroTokens.begin(), macroTokens.end());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Identifier not found\n\t\t\t\ttokens.erase(tokens.begin() + i);\n\t\t\t}\n\t\t} else {\n\t\t\ti++;\n\t\t}\n\t}\n\n\t// Find bracketed subexpressions and recurse on them\n\tBracketPair bracketPair = FindBracketPair(tokens);\n\twhile (bracketPair.itBracket != tokens.end()) {\n\t\tstd::vector<std::string> inBracket(bracketPair.itBracket + 1, bracketPair.itEndBracket);\n\t\tEvaluateTokens(inBracket, preprocessorDefinitions);\n\n\t\t// The insertion is done before the removal because there were failures with the opposite approach\n\t\ttokens.insert(bracketPair.itBracket, inBracket.begin(), inBracket.end());\n\n\t\tbracketPair = FindBracketPair(tokens);\n\t\ttokens.erase(bracketPair.itBracket, bracketPair.itEndBracket + 1);\n\n\t\tbracketPair = FindBracketPair(tokens);\n\t}\n\n\t// Evaluate logical negations\n\tfor (size_t j=0; (j+1)<tokens.size();) {\n\t\tif (setNegationOp.Contains(tokens[j][0])) {\n\t\t\tint isTrue = atoi(tokens[j+1].c_str());\n\t\t\tif (tokens[j] == \"!\")\n\t\t\t\tisTrue = !isTrue;\n\t\t\tstd::vector<std::string>::iterator itInsert =\n\t\t\t\ttokens.erase(tokens.begin() + j, tokens.begin() + j + 2);\n\t\t\ttokens.insert(itInsert, isTrue ? \"1\" : \"0\");\n\t\t} else {\n\t\t\tj++;\n\t\t}\n\t}\n\n\t// Evaluate expressions in precedence order\n\tenum precedence { precArithmetic, precRelative, precLogical };\n\tfor (int prec=precArithmetic; prec <= precLogical; prec++) {\n\t\t// Looking at 3 tokens at a time so end at 2 before end\n\t\tfor (size_t k=0; (k+2)<tokens.size();) {\n\t\t\tchar chOp = tokens[k+1][0];\n\t\t\tif (\n\t\t\t\t((prec==precArithmetic) && setArithmethicOp.Contains(chOp)) ||\n\t\t\t\t((prec==precRelative) && setRelOp.Contains(chOp)) ||\n\t\t\t\t((prec==precLogical) && setLogicalOp.Contains(chOp))\n\t\t\t\t) {\n\t\t\t\tint valA = atoi(tokens[k].c_str());\n\t\t\t\tint valB = atoi(tokens[k+2].c_str());\n\t\t\t\tint result = 0;\n\t\t\t\tif (tokens[k+1] == \"+\")\n\t\t\t\t\tresult = valA + valB;\n\t\t\t\telse if (tokens[k+1] == \"-\")\n\t\t\t\t\tresult = valA - valB;\n\t\t\t\telse if (tokens[k+1] == \"*\")\n\t\t\t\t\tresult = valA * valB;\n\t\t\t\telse if (tokens[k+1] == \"/\")\n\t\t\t\t\tresult = valA / (valB ? valB : 1);\n\t\t\t\telse if (tokens[k+1] == \"%\")\n\t\t\t\t\tresult = valA % (valB ? valB : 1);\n\t\t\t\telse if (tokens[k+1] == \"<\")\n\t\t\t\t\tresult = valA < valB;\n\t\t\t\telse if (tokens[k+1] == \"<=\")\n\t\t\t\t\tresult = valA <= valB;\n\t\t\t\telse if (tokens[k+1] == \">\")\n\t\t\t\t\tresult = valA > valB;\n\t\t\t\telse if (tokens[k+1] == \">=\")\n\t\t\t\t\tresult = valA >= valB;\n\t\t\t\telse if (tokens[k+1] == \"==\")\n\t\t\t\t\tresult = valA == valB;\n\t\t\t\telse if (tokens[k+1] == \"!=\")\n\t\t\t\t\tresult = valA != valB;\n\t\t\t\telse if (tokens[k+1] == \"||\")\n\t\t\t\t\tresult = valA || valB;\n\t\t\t\telse if (tokens[k+1] == \"&&\")\n\t\t\t\t\tresult = valA && valB;\n\t\t\t\tchar sResult[30];\n\t\t\t\tsprintf(sResult, \"%d\", result);\n\t\t\t\tstd::vector<std::string>::iterator itInsert =\n\t\t\t\t\ttokens.erase(tokens.begin() + k, tokens.begin() + k + 3);\n\t\t\t\ttokens.insert(itInsert, sResult);\n\t\t\t} else {\n\t\t\t\tk++;\n\t\t\t}\n\t\t}\n\t}\n}\n\nstd::vector<std::string> LexerCPP::Tokenize(const std::string &expr) const {\n\t// Break into tokens\n\tstd::vector<std::string> tokens;\n\tconst char *cp = expr.c_str();\n\twhile (*cp) {\n\t\tstd::string word;\n\t\tif (setWord.Contains(static_cast<unsigned char>(*cp))) {\n\t\t\t// Identifiers and numbers\n\t\t\twhile (setWord.Contains(static_cast<unsigned char>(*cp))) {\n\t\t\t\tword += *cp;\n\t\t\t\tcp++;\n\t\t\t}\n\t\t} else if (IsSpaceOrTab(*cp)) {\n\t\t\twhile (IsSpaceOrTab(*cp)) {\n\t\t\t\tword += *cp;\n\t\t\t\tcp++;\n\t\t\t}\n\t\t} else if (setRelOp.Contains(static_cast<unsigned char>(*cp))) {\n\t\t\tword += *cp;\n\t\t\tcp++;\n\t\t\tif (setRelOp.Contains(static_cast<unsigned char>(*cp))) {\n\t\t\t\tword += *cp;\n\t\t\t\tcp++;\n\t\t\t}\n\t\t} else if (setLogicalOp.Contains(static_cast<unsigned char>(*cp))) {\n\t\t\tword += *cp;\n\t\t\tcp++;\n\t\t\tif (setLogicalOp.Contains(static_cast<unsigned char>(*cp))) {\n\t\t\t\tword += *cp;\n\t\t\t\tcp++;\n\t\t\t}\n\t\t} else {\n\t\t\t// Should handle strings, characters, and comments here\n\t\t\tword += *cp;\n\t\t\tcp++;\n\t\t}\n\t\ttokens.push_back(word);\n\t}\n\treturn tokens;\n}\n\nbool LexerCPP::EvaluateExpression(const std::string &expr, const SymbolTable &preprocessorDefinitions) {\n\tstd::vector<std::string> tokens = Tokenize(expr);\n\n\tEvaluateTokens(tokens, preprocessorDefinitions);\n\n\t// \"0\" or \"\" -> false else true\n\tbool isFalse = tokens.empty() ||\n\t\t((tokens.size() == 1) && ((tokens[0] == \"\") || tokens[0] == \"0\"));\n\treturn !isFalse;\n}\n\nLexerModule lmCPP(SCLEX_CPP, LexerCPP::LexerFactoryCPP, \"cpp\", cppWordLists);\nLexerModule lmCPPNoCase(SCLEX_CPPNOCASE, LexerCPP::LexerFactoryCPPInsensitive, \"cppnocase\", cppWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCSS.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexCSS.cxx\n ** Lexer for Cascading Style Sheets\n ** Written by Jakub Vrna\n ** Improved by Philippe Lhoste (CSS2)\n ** Improved by Ross McKay (SCSS mode; see http://sass-lang.com/ )\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// TODO: handle SCSS nested properties like font: { weight: bold; size: 1em; }\n// TODO: handle SCSS interpolation: #{}\n// TODO: add features for Less if somebody feels like contributing; http://lesscss.org/\n// TODO: refactor this monster so that the next poor slob can read it!\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\nstatic inline bool IsAWordChar(const unsigned int ch) {\n\t/* FIXME:\n\t * The CSS spec allows \"ISO 10646 characters U+00A1 and higher\" to be treated as word chars.\n\t * Unfortunately, we are only getting string bytes here, and not full unicode characters. We cannot guarantee\n\t * that our byte is between U+0080 - U+00A0 (to return false), so we have to allow all characters U+0080 and higher\n\t */\n\treturn ch >= 0x80 || isalnum(ch) || ch == '-' || ch == '_';\n}\n\ninline bool IsCssOperator(const int ch) {\n\tif (!((ch < 0x80) && isalnum(ch)) &&\n\t\t(ch == '{' || ch == '}' || ch == ':' || ch == ',' || ch == ';' ||\n\t\t ch == '.' || ch == '#' || ch == '!' || ch == '@' ||\n\t\t /* CSS2 */\n\t\t ch == '*' || ch == '>' || ch == '+' || ch == '=' || ch == '~' || ch == '|' ||\n\t\t ch == '[' || ch == ']' || ch == '(' || ch == ')')) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n// look behind (from start of document to our start position) to determine current nesting level\ninline int NestingLevelLookBehind(Sci_PositionU startPos, Accessor &styler) {\n\tint ch;\n\tint nestingLevel = 0;\n\n\tfor (Sci_PositionU i = 0; i < startPos; i++) {\n\t\tch = styler.SafeGetCharAt(i);\n\t\tif (ch == '{')\n\t\t\tnestingLevel++;\n\t\telse if (ch == '}')\n\t\t\tnestingLevel--;\n\t}\n\n\treturn nestingLevel;\n}\n\nstatic void ColouriseCssDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) {\n\tWordList &css1Props = *keywordlists[0];\n\tWordList &pseudoClasses = *keywordlists[1];\n\tWordList &css2Props = *keywordlists[2];\n\tWordList &css3Props = *keywordlists[3];\n\tWordList &pseudoElements = *keywordlists[4];\n\tWordList &exProps = *keywordlists[5];\n\tWordList &exPseudoClasses = *keywordlists[6];\n\tWordList &exPseudoElements = *keywordlists[7];\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tint lastState = -1; // before operator\n\tint lastStateC = -1; // before comment\n\tint lastStateS = -1; // before single-quoted/double-quoted string\n\tint lastStateVar = -1; // before variable (SCSS)\n\tint lastStateVal = -1; // before value (SCSS)\n\tint op = ' '; // last operator\n\tint opPrev = ' '; // last operator\n\tbool insideParentheses = false; // true if currently in a CSS url() or similar construct\n\n\t// property lexer.css.scss.language\n\t//\tSet to 1 for Sassy CSS (.scss)\n\tbool isScssDocument = styler.GetPropertyInt(\"lexer.css.scss.language\") != 0;\n\n\t// property lexer.css.less.language\n\t// Set to 1 for Less CSS (.less)\n\tbool isLessDocument = styler.GetPropertyInt(\"lexer.css.less.language\") != 0;\n\n\t// property lexer.css.hss.language\n\t// Set to 1 for HSS (.hss)\n\tbool isHssDocument = styler.GetPropertyInt(\"lexer.css.hss.language\") != 0;\n\n\t// SCSS/LESS/HSS have the concept of variable\n\tbool hasVariables = isScssDocument || isLessDocument || isHssDocument;\n\tchar varPrefix = 0;\n\tif (hasVariables)\n\t\tvarPrefix = isLessDocument ? '@' : '$';\n\n\t// SCSS/LESS/HSS support single-line comments\n\ttypedef enum _CommentModes { eCommentBlock = 0, eCommentLine = 1} CommentMode;\n\tCommentMode comment_mode = eCommentBlock;\n\tbool hasSingleLineComments = isScssDocument || isLessDocument || isHssDocument;\n\n\t// must keep track of nesting level in document types that support it (SCSS/LESS/HSS)\n\tbool hasNesting = false;\n\tint nestingLevel = 0;\n\tif (isScssDocument || isLessDocument || isHssDocument) {\n\t\thasNesting = true;\n\t\tnestingLevel = NestingLevelLookBehind(startPos, styler);\n\t}\n\n\t// \"the loop\"\n\tfor (; sc.More(); sc.Forward()) {\n\t\tif (sc.state == SCE_CSS_COMMENT && ((comment_mode == eCommentBlock && sc.Match('*', '/')) || (comment_mode == eCommentLine && sc.atLineEnd))) {\n\t\t\tif (lastStateC == -1) {\n\t\t\t\t// backtrack to get last state:\n\t\t\t\t// comments are like whitespace, so we must return to the previous state\n\t\t\t\tSci_PositionU i = startPos;\n\t\t\t\tfor (; i > 0; i--) {\n\t\t\t\t\tif ((lastStateC = styler.StyleAt(i-1)) != SCE_CSS_COMMENT) {\n\t\t\t\t\t\tif (lastStateC == SCE_CSS_OPERATOR) {\n\t\t\t\t\t\t\top = styler.SafeGetCharAt(i-1);\n\t\t\t\t\t\t\topPrev = styler.SafeGetCharAt(i-2);\n\t\t\t\t\t\t\twhile (--i) {\n\t\t\t\t\t\t\t\tlastState = styler.StyleAt(i-1);\n\t\t\t\t\t\t\t\tif (lastState != SCE_CSS_OPERATOR && lastState != SCE_CSS_COMMENT)\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (i == 0)\n\t\t\t\t\t\t\t\tlastState = SCE_CSS_DEFAULT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (i == 0)\n\t\t\t\t\tlastStateC = SCE_CSS_DEFAULT;\n\t\t\t}\n\t\t\tif (comment_mode == eCommentBlock) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(lastStateC);\n\t\t\t} else /* eCommentLine */ {\n\t\t\t\tsc.SetState(lastStateC);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.state == SCE_CSS_COMMENT)\n\t\t\tcontinue;\n\n\t\tif (sc.state == SCE_CSS_DOUBLESTRING || sc.state == SCE_CSS_SINGLESTRING) {\n\t\t\tif (sc.ch != (sc.state == SCE_CSS_DOUBLESTRING ? '\\\"' : '\\''))\n\t\t\t\tcontinue;\n\t\t\tSci_PositionU i = sc.currentPos;\n\t\t\twhile (i && styler[i-1] == '\\\\')\n\t\t\t\ti--;\n\t\t\tif ((sc.currentPos - i) % 2 == 1)\n\t\t\t\tcontinue;\n\t\t\tsc.ForwardSetState(lastStateS);\n\t\t}\n\n\t\tif (sc.state == SCE_CSS_OPERATOR) {\n\t\t\tif (op == ' ') {\n\t\t\t\tSci_PositionU i = startPos;\n\t\t\t\top = styler.SafeGetCharAt(i-1);\n\t\t\t\topPrev = styler.SafeGetCharAt(i-2);\n\t\t\t\twhile (--i) {\n\t\t\t\t\tlastState = styler.StyleAt(i-1);\n\t\t\t\t\tif (lastState != SCE_CSS_OPERATOR && lastState != SCE_CSS_COMMENT)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tswitch (op) {\n\t\t\tcase '@':\n\t\t\t\tif (lastState == SCE_CSS_DEFAULT || hasNesting)\n\t\t\t\t\tsc.SetState(SCE_CSS_DIRECTIVE);\n\t\t\t\tbreak;\n\t\t\tcase '>':\n\t\t\tcase '+':\n\t\t\t\tif (lastState == SCE_CSS_TAG || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID ||\n\t\t\t\t\tlastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS)\n\t\t\t\t\tsc.SetState(SCE_CSS_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase '[':\n\t\t\t\tif (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID ||\n\t\t\t\t\tlastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS)\n\t\t\t\t\tsc.SetState(SCE_CSS_ATTRIBUTE);\n\t\t\t\tbreak;\n\t\t\tcase ']':\n\t\t\t\tif (lastState == SCE_CSS_ATTRIBUTE)\n\t\t\t\t\tsc.SetState(SCE_CSS_TAG);\n\t\t\t\tbreak;\n\t\t\tcase '{':\n\t\t\t\tnestingLevel++;\n\t\t\t\tswitch (lastState) {\n\t\t\t\tcase SCE_CSS_MEDIA:\n\t\t\t\t\tsc.SetState(SCE_CSS_DEFAULT);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCE_CSS_TAG:\n\t\t\t\tcase SCE_CSS_DIRECTIVE:\n\t\t\t\t\tsc.SetState(SCE_CSS_IDENTIFIER);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '}':\n\t\t\t\tif (--nestingLevel < 0)\n\t\t\t\t\tnestingLevel = 0;\n\t\t\t\tswitch (lastState) {\n\t\t\t\tcase SCE_CSS_DEFAULT:\n\t\t\t\tcase SCE_CSS_VALUE:\n\t\t\t\tcase SCE_CSS_IMPORTANT:\n\t\t\t\tcase SCE_CSS_IDENTIFIER:\n\t\t\t\tcase SCE_CSS_IDENTIFIER2:\n\t\t\t\tcase SCE_CSS_IDENTIFIER3:\n\t\t\t\t\tif (hasNesting)\n\t\t\t\t\t\tsc.SetState(nestingLevel > 0 ? SCE_CSS_IDENTIFIER : SCE_CSS_DEFAULT);\n\t\t\t\t\telse\n\t\t\t\t\t\tsc.SetState(SCE_CSS_DEFAULT);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '(':\n\t\t\t\tif (lastState == SCE_CSS_PSEUDOCLASS)\n\t\t\t\t\tsc.SetState(SCE_CSS_TAG);\n\t\t\t\telse if (lastState == SCE_CSS_EXTENDED_PSEUDOCLASS)\n\t\t\t\t\tsc.SetState(SCE_CSS_EXTENDED_PSEUDOCLASS);\n\t\t\t\tbreak;\n\t\t\tcase ')':\n\t\t\t\tif (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID ||\n\t\t\t\t\tlastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS ||\n\t\t\t\t\tlastState == SCE_CSS_PSEUDOELEMENT || lastState == SCE_CSS_EXTENDED_PSEUDOELEMENT)\n\t\t\t\t\tsc.SetState(SCE_CSS_TAG);\n\t\t\t\tbreak;\n\t\t\tcase ':':\n\t\t\t\tswitch (lastState) {\n\t\t\t\tcase SCE_CSS_TAG:\n\t\t\t\tcase SCE_CSS_DEFAULT:\n\t\t\t\tcase SCE_CSS_CLASS:\n\t\t\t\tcase SCE_CSS_ID:\n\t\t\t\tcase SCE_CSS_PSEUDOCLASS:\n\t\t\t\tcase SCE_CSS_EXTENDED_PSEUDOCLASS:\n\t\t\t\tcase SCE_CSS_UNKNOWN_PSEUDOCLASS:\n\t\t\t\tcase SCE_CSS_PSEUDOELEMENT:\n\t\t\t\tcase SCE_CSS_EXTENDED_PSEUDOELEMENT:\n\t\t\t\t\tsc.SetState(SCE_CSS_PSEUDOCLASS);\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCE_CSS_IDENTIFIER:\n\t\t\t\tcase SCE_CSS_IDENTIFIER2:\n\t\t\t\tcase SCE_CSS_IDENTIFIER3:\n\t\t\t\tcase SCE_CSS_EXTENDED_IDENTIFIER:\n\t\t\t\tcase SCE_CSS_UNKNOWN_IDENTIFIER:\n\t\t\t\tcase SCE_CSS_VARIABLE:\n\t\t\t\t\tsc.SetState(SCE_CSS_VALUE);\n\t\t\t\t\tlastStateVal = lastState;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '.':\n\t\t\t\tif (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID ||\n\t\t\t\t\tlastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS)\n\t\t\t\t\tsc.SetState(SCE_CSS_CLASS);\n\t\t\t\tbreak;\n\t\t\tcase '#':\n\t\t\t\tif (lastState == SCE_CSS_TAG || lastState == SCE_CSS_DEFAULT || lastState == SCE_CSS_CLASS || lastState == SCE_CSS_ID ||\n\t\t\t\t\tlastState == SCE_CSS_PSEUDOCLASS || lastState == SCE_CSS_EXTENDED_PSEUDOCLASS || lastState == SCE_CSS_UNKNOWN_PSEUDOCLASS)\n\t\t\t\t\tsc.SetState(SCE_CSS_ID);\n\t\t\t\tbreak;\n\t\t\tcase ',':\n\t\t\tcase '|':\n\t\t\tcase '~':\n\t\t\t\tif (lastState == SCE_CSS_TAG)\n\t\t\t\t\tsc.SetState(SCE_CSS_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase ';':\n\t\t\t\tswitch (lastState) {\n\t\t\t\tcase SCE_CSS_DIRECTIVE:\n\t\t\t\t\tif (hasNesting) {\n\t\t\t\t\t\tsc.SetState(nestingLevel > 0 ? SCE_CSS_IDENTIFIER : SCE_CSS_DEFAULT);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_CSS_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCE_CSS_VALUE:\n\t\t\t\tcase SCE_CSS_IMPORTANT:\n\t\t\t\t\t// data URLs can have semicolons; simplistically check for wrapping parentheses and move along\n\t\t\t\t\tif (insideParentheses) {\n\t\t\t\t\t\tsc.SetState(lastState);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (lastStateVal == SCE_CSS_VARIABLE) {\n\t\t\t\t\t\t\tsc.SetState(SCE_CSS_DEFAULT);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState(SCE_CSS_IDENTIFIER);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase SCE_CSS_VARIABLE:\n\t\t\t\t\tif (lastStateVar == SCE_CSS_VALUE) {\n\t\t\t\t\t\t// data URLs can have semicolons; simplistically check for wrapping parentheses and move along\n\t\t\t\t\t\tif (insideParentheses) {\n\t\t\t\t\t\t\tsc.SetState(SCE_CSS_VALUE);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState(SCE_CSS_IDENTIFIER);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_CSS_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '!':\n\t\t\t\tif (lastState == SCE_CSS_VALUE)\n\t\t\t\t\tsc.SetState(SCE_CSS_IMPORTANT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (sc.ch == '*' && sc.state == SCE_CSS_DEFAULT) {\n\t\t\tsc.SetState(SCE_CSS_TAG);\n\t\t\tcontinue;\n\t\t}\n\n\t\t// check for inside parentheses (whether part of an \"operator\" or not)\n\t\tif (sc.ch == '(')\n\t\t\tinsideParentheses = true;\n\t\telse if (sc.ch == ')')\n\t\t\tinsideParentheses = false;\n\n\t\t// SCSS special modes\n\t\tif (hasVariables) {\n\t\t\t// variable name\n\t\t\tif (sc.ch == varPrefix) {\n\t\t\t\tswitch (sc.state) {\n\t\t\t\tcase SCE_CSS_DEFAULT:\n\t\t\t\t\tif (isLessDocument) // give priority to pseudo elements\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase SCE_CSS_VALUE:\n\t\t\t\t\tlastStateVar = sc.state;\n\t\t\t\t\tsc.SetState(SCE_CSS_VARIABLE);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sc.state == SCE_CSS_VARIABLE) {\n\t\t\t\tif (IsAWordChar(sc.ch)) {\n\t\t\t\t\t// still looking at the variable name\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (lastStateVar == SCE_CSS_VALUE) {\n\t\t\t\t\t// not looking at the variable name any more, and it was part of a value\n\t\t\t\t\tsc.SetState(SCE_CSS_VALUE);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// nested rule parent selector\n\t\t\tif (sc.ch == '&') {\n\t\t\t\tswitch (sc.state) {\n\t\t\t\tcase SCE_CSS_DEFAULT:\n\t\t\t\tcase SCE_CSS_IDENTIFIER:\n\t\t\t\t\tsc.SetState(SCE_CSS_TAG);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// nesting rules that apply to SCSS and Less\n\t\tif (hasNesting) {\n\t\t\t// check for nested rule selector\n\t\t\tif (sc.state == SCE_CSS_IDENTIFIER && (IsAWordChar(sc.ch) || sc.ch == ':' || sc.ch == '.' || sc.ch == '#')) {\n\t\t\t\t// look ahead to see whether { comes before next ; and }\n\t\t\t\tSci_PositionU endPos = startPos + length;\n\t\t\t\tint ch;\n\n\t\t\t\tfor (Sci_PositionU i = sc.currentPos; i < endPos; i++) {\n\t\t\t\t\tch = styler.SafeGetCharAt(i);\n\t\t\t\t\tif (ch == ';' || ch == '}')\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tif (ch == '{') {\n\t\t\t\t\t\tsc.SetState(SCE_CSS_DEFAULT);\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif (IsAWordChar(sc.ch)) {\n\t\t\tif (sc.state == SCE_CSS_DEFAULT)\n\t\t\t\tsc.SetState(SCE_CSS_TAG);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (IsAWordChar(sc.chPrev) && (\n\t\t\tsc.state == SCE_CSS_IDENTIFIER || sc.state == SCE_CSS_IDENTIFIER2 ||\n\t\t\tsc.state == SCE_CSS_IDENTIFIER3 || sc.state == SCE_CSS_EXTENDED_IDENTIFIER ||\n\t\t\tsc.state == SCE_CSS_UNKNOWN_IDENTIFIER ||\n\t\t\tsc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_PSEUDOELEMENT ||\n\t\t\tsc.state == SCE_CSS_EXTENDED_PSEUDOCLASS || sc.state == SCE_CSS_EXTENDED_PSEUDOELEMENT ||\n\t\t\tsc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS ||\n\t\t\tsc.state == SCE_CSS_IMPORTANT ||\n\t\t\tsc.state == SCE_CSS_DIRECTIVE\n\t\t)) {\n\t\t\tchar s[100];\n\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\tchar *s2 = s;\n\t\t\twhile (*s2 && !IsAWordChar(*s2))\n\t\t\t\ts2++;\n\t\t\tswitch (sc.state) {\n\t\t\tcase SCE_CSS_IDENTIFIER:\n\t\t\tcase SCE_CSS_IDENTIFIER2:\n\t\t\tcase SCE_CSS_IDENTIFIER3:\n\t\t\tcase SCE_CSS_EXTENDED_IDENTIFIER:\n\t\t\tcase SCE_CSS_UNKNOWN_IDENTIFIER:\n\t\t\t\tif (css1Props.InList(s2))\n\t\t\t\t\tsc.ChangeState(SCE_CSS_IDENTIFIER);\n\t\t\t\telse if (css2Props.InList(s2))\n\t\t\t\t\tsc.ChangeState(SCE_CSS_IDENTIFIER2);\n\t\t\t\telse if (css3Props.InList(s2))\n\t\t\t\t\tsc.ChangeState(SCE_CSS_IDENTIFIER3);\n\t\t\t\telse if (exProps.InList(s2))\n\t\t\t\t\tsc.ChangeState(SCE_CSS_EXTENDED_IDENTIFIER);\n\t\t\t\telse\n\t\t\t\t\tsc.ChangeState(SCE_CSS_UNKNOWN_IDENTIFIER);\n\t\t\t\tbreak;\n\t\t\tcase SCE_CSS_PSEUDOCLASS:\n\t\t\tcase SCE_CSS_PSEUDOELEMENT:\n\t\t\tcase SCE_CSS_EXTENDED_PSEUDOCLASS:\n\t\t\tcase SCE_CSS_EXTENDED_PSEUDOELEMENT:\n\t\t\tcase SCE_CSS_UNKNOWN_PSEUDOCLASS:\n\t\t\t\tif (op == ':' && opPrev != ':' && pseudoClasses.InList(s2))\n\t\t\t\t\tsc.ChangeState(SCE_CSS_PSEUDOCLASS);\n\t\t\t\telse if (opPrev == ':' && pseudoElements.InList(s2))\n\t\t\t\t\tsc.ChangeState(SCE_CSS_PSEUDOELEMENT);\n\t\t\t\telse if ((op == ':' || (op == '(' && lastState == SCE_CSS_EXTENDED_PSEUDOCLASS)) && opPrev != ':' && exPseudoClasses.InList(s2))\n\t\t\t\t\tsc.ChangeState(SCE_CSS_EXTENDED_PSEUDOCLASS);\n\t\t\t\telse if (opPrev == ':' && exPseudoElements.InList(s2))\n\t\t\t\t\tsc.ChangeState(SCE_CSS_EXTENDED_PSEUDOELEMENT);\n\t\t\t\telse\n\t\t\t\t\tsc.ChangeState(SCE_CSS_UNKNOWN_PSEUDOCLASS);\n\t\t\t\tbreak;\n\t\t\tcase SCE_CSS_IMPORTANT:\n\t\t\t\tif (strcmp(s2, \"important\") != 0)\n\t\t\t\t\tsc.ChangeState(SCE_CSS_VALUE);\n\t\t\t\tbreak;\n\t\t\tcase SCE_CSS_DIRECTIVE:\n\t\t\t\tif (op == '@' && strcmp(s2, \"media\") == 0)\n\t\t\t\t\tsc.ChangeState(SCE_CSS_MEDIA);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (sc.ch != '.' && sc.ch != ':' && sc.ch != '#' && (\n\t\t\tsc.state == SCE_CSS_CLASS || sc.state == SCE_CSS_ID ||\n\t\t\t(sc.ch != '(' && sc.ch != ')' && ( /* This line of the condition makes it possible to extend pseudo-classes with parentheses */\n\t\t\t\tsc.state == SCE_CSS_PSEUDOCLASS || sc.state == SCE_CSS_PSEUDOELEMENT ||\n\t\t\t\tsc.state == SCE_CSS_EXTENDED_PSEUDOCLASS || sc.state == SCE_CSS_EXTENDED_PSEUDOELEMENT ||\n\t\t\t\tsc.state == SCE_CSS_UNKNOWN_PSEUDOCLASS\n\t\t\t))\n\t\t))\n\t\t\tsc.SetState(SCE_CSS_TAG);\n\n\t\tif (sc.Match('/', '*')) {\n\t\t\tlastStateC = sc.state;\n\t\t\tcomment_mode = eCommentBlock;\n\t\t\tsc.SetState(SCE_CSS_COMMENT);\n\t\t\tsc.Forward();\n\t\t} else if (hasSingleLineComments && sc.Match('/', '/') && !insideParentheses) {\n\t\t\t// note that we've had to treat ([...]// as the start of a URL not a comment, e.g. url(http://example.com), url(//example.com)\n\t\t\tlastStateC = sc.state;\n\t\t\tcomment_mode = eCommentLine;\n\t\t\tsc.SetState(SCE_CSS_COMMENT);\n\t\t\tsc.Forward();\n\t\t} else if ((sc.state == SCE_CSS_VALUE || sc.state == SCE_CSS_ATTRIBUTE)\n\t\t\t&& (sc.ch == '\\\"' || sc.ch == '\\'')) {\n\t\t\tlastStateS = sc.state;\n\t\t\tsc.SetState((sc.ch == '\\\"' ? SCE_CSS_DOUBLESTRING : SCE_CSS_SINGLESTRING));\n\t\t} else if (IsCssOperator(sc.ch)\n\t\t\t&& (sc.state != SCE_CSS_ATTRIBUTE || sc.ch == ']')\n\t\t\t&& (sc.state != SCE_CSS_VALUE || sc.ch == ';' || sc.ch == '}' || sc.ch == '!')\n\t\t\t&& ((sc.state != SCE_CSS_DIRECTIVE && sc.state != SCE_CSS_MEDIA) || sc.ch == ';' || sc.ch == '{')\n\t\t) {\n\t\t\tif (sc.state != SCE_CSS_OPERATOR)\n\t\t\t\tlastState = sc.state;\n\t\t\tsc.SetState(SCE_CSS_OPERATOR);\n\t\t\top = sc.ch;\n\t\t\topPrev = sc.chPrev;\n\t\t}\n\t}\n\n\tsc.Complete();\n}\n\nstatic void FoldCSSDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tbool inComment = (styler.StyleAt(startPos-1) == SCE_CSS_COMMENT);\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styler.StyleAt(i);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (foldComment) {\n\t\t\tif (!inComment && (style == SCE_CSS_COMMENT))\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (inComment && (style != SCE_CSS_COMMENT))\n\t\t\t\tlevelCurrent--;\n\t\t\tinComment = (style == SCE_CSS_COMMENT);\n\t\t}\n\t\tif (style == SCE_CSS_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const cssWordListDesc[] = {\n\t\"CSS1 Properties\",\n\t\"Pseudo-classes\",\n\t\"CSS2 Properties\",\n\t\"CSS3 Properties\",\n\t\"Pseudo-elements\",\n\t\"Browser-Specific CSS Properties\",\n\t\"Browser-Specific Pseudo-classes\",\n\t\"Browser-Specific Pseudo-elements\",\n\t0\n};\n\nLexerModule lmCss(SCLEX_CSS, ColouriseCssDoc, \"css\", FoldCSSDoc, cssWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCaml.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexCaml.cxx\n ** Lexer for Objective Caml.\n **/\n// Copyright 2005-2009 by Robert Roessler <robertr@rftp.com>\n// The License.txt file describes the conditions under which this software may be distributed.\n/*\tRelease History\n\t20050204 Initial release.\n\t20050205 Quick compiler standards/\"cleanliness\" adjustment.\n\t20050206 Added cast for IsLeadByte().\n\t20050209 Changes to \"external\" build support.\n\t20050306 Fix for 1st-char-in-doc \"corner\" case.\n\t20050502 Fix for [harmless] one-past-the-end coloring.\n\t20050515 Refined numeric token recognition logic.\n\t20051125 Added 2nd \"optional\" keywords class.\n\t20051129 Support \"magic\" (read-only) comments for RCaml.\n\t20051204 Swtich to using StyleContext infrastructure.\n\t20090629 Add full Standard ML '97 support.\n*/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n//\tSince the Microsoft __iscsym[f] funcs are not ANSI...\ninline int  iscaml(int c) {return isalnum(c) || c == '_';}\ninline int iscamlf(int c) {return isalpha(c) || c == '_';}\n\nstatic const int baseT[24] = {\n\t0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\t/* A - L */\n\t0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0,16\t/* M - X */\n};\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#ifdef BUILD_AS_EXTERNAL_LEXER\n/*\n\t(actually seems to work!)\n*/\n#include <string>\n#include \"WindowAccessor.h\"\n#include \"ExternalLexer.h\"\n\n#undef EXT_LEXER_DECL\n#define EXT_LEXER_DECL __declspec( dllexport ) __stdcall\n\n#if PLAT_WIN\n#include <windows.h>\n#endif\n\nstatic void ColouriseCamlDoc(\n\tSci_PositionU startPos, Sci_Position length,\n\tint initStyle,\n\tWordList *keywordlists[],\n\tAccessor &styler);\n\nstatic void FoldCamlDoc(\n\tSci_PositionU startPos, Sci_Position length,\n\tint initStyle,\n\tWordList *keywordlists[],\n\tAccessor &styler);\n\nstatic void InternalLexOrFold(int lexOrFold, Sci_PositionU startPos, Sci_Position length,\n\tint initStyle, char *words[], WindowID window, char *props);\n\nstatic const char* LexerName = \"caml\";\n\n#ifdef TRACE\nvoid Platform::DebugPrintf(const char *format, ...) {\n\tchar buffer[2000];\n\tva_list pArguments;\n\tva_start(pArguments, format);\n\tvsprintf(buffer,format,pArguments);\n\tva_end(pArguments);\n\tPlatform::DebugDisplay(buffer);\n}\n#else\nvoid Platform::DebugPrintf(const char *, ...) {\n}\n#endif\n\nbool Platform::IsDBCSLeadByte(int codePage, char ch) {\n\treturn ::IsDBCSLeadByteEx(codePage, ch) != 0;\n}\n\nlong Platform::SendScintilla(WindowID w, unsigned int msg, unsigned long wParam, long lParam) {\n\treturn ::SendMessage(reinterpret_cast<HWND>(w), msg, wParam, lParam);\n}\n\nlong Platform::SendScintillaPointer(WindowID w, unsigned int msg, unsigned long wParam, void *lParam) {\n\treturn ::SendMessage(reinterpret_cast<HWND>(w), msg, wParam,\n\t\treinterpret_cast<LPARAM>(lParam));\n}\n\nvoid EXT_LEXER_DECL Fold(unsigned int lexer, Sci_PositionU startPos, Sci_Position length,\n\tint initStyle, char *words[], WindowID window, char *props)\n{\n\t// below useless evaluation(s) to supress \"not used\" warnings\n\tlexer;\n\t// build expected data structures and do the Fold\n\tInternalLexOrFold(1, startPos, length, initStyle, words, window, props);\n\n}\n\nint EXT_LEXER_DECL GetLexerCount()\n{\n\treturn 1;\t// just us [Objective] Caml lexers here!\n}\n\nvoid EXT_LEXER_DECL GetLexerName(unsigned int Index, char *name, int buflength)\n{\n\t// below useless evaluation(s) to supress \"not used\" warnings\n\tIndex;\n\t// return as much of our lexer name as will fit (what's up with Index?)\n\tif (buflength > 0) {\n\t\tbuflength--;\n\t\tint n = strlen(LexerName);\n\t\tif (n > buflength)\n\t\t\tn = buflength;\n\t\tmemcpy(name, LexerName, n), name[n] = '\\0';\n\t}\n}\n\nvoid EXT_LEXER_DECL Lex(unsigned int lexer, Sci_PositionU startPos, Sci_Position length,\n\tint initStyle, char *words[], WindowID window, char *props)\n{\n\t// below useless evaluation(s) to supress \"not used\" warnings\n\tlexer;\n\t// build expected data structures and do the Lex\n\tInternalLexOrFold(0, startPos, length, initStyle, words, window, props);\n}\n\nstatic void InternalLexOrFold(int foldOrLex, Sci_PositionU startPos, Sci_Position length,\n\tint initStyle, char *words[], WindowID window, char *props)\n{\n\t// create and initialize a WindowAccessor (including contained PropSet)\n\tPropSetSimple ps;\n\tps.SetMultiple(props);\n\tWindowAccessor wa(window, ps);\n\t// create and initialize WordList(s)\n\tint nWL = 0;\n\tfor (; words[nWL]; nWL++) ;\t// count # of WordList PTRs needed\n\tWordList** wl = new WordList* [nWL + 1];// alloc WordList PTRs\n\tint i = 0;\n\tfor (; i < nWL; i++) {\n\t\twl[i] = new WordList();\t// (works or THROWS bad_alloc EXCEPTION)\n\t\twl[i]->Set(words[i]);\n\t}\n\twl[i] = 0;\n\t// call our \"internal\" folder/lexer (... then do Flush!)\n\tif (foldOrLex)\n\t\tFoldCamlDoc(startPos, length, initStyle, wl, wa);\n\telse\n\t\tColouriseCamlDoc(startPos, length, initStyle, wl, wa);\n\twa.Flush();\n\t// clean up before leaving\n\tfor (i = nWL - 1; i >= 0; i--)\n\t\tdelete wl[i];\n\tdelete [] wl;\n}\n\nstatic\n#endif\t/* BUILD_AS_EXTERNAL_LEXER */\n\nvoid ColouriseCamlDoc(\n\tSci_PositionU startPos, Sci_Position length,\n\tint initStyle,\n\tWordList *keywordlists[],\n\tAccessor &styler)\n{\n\t// initialize styler\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tSci_PositionU chToken = 0;\n\tint chBase = 0, chLit = 0;\n\tWordList& keywords  = *keywordlists[0];\n\tWordList& keywords2 = *keywordlists[1];\n\tWordList& keywords3 = *keywordlists[2];\n\tconst bool isSML = keywords.InList(\"andalso\");\n\tconst int useMagic = styler.GetPropertyInt(\"lexer.caml.magic\", 0);\n\n\t// set up [initial] state info (terminating states that shouldn't \"bleed\")\n\tconst int state_ = sc.state & 0x0f;\n\tif (state_ <= SCE_CAML_CHAR\n\t\t|| (isSML && state_ == SCE_CAML_STRING))\n\t\tsc.state = SCE_CAML_DEFAULT;\n\tint nesting = (state_ >= SCE_CAML_COMMENT)? (state_ - SCE_CAML_COMMENT): 0;\n\n\t// foreach char in range...\n\twhile (sc.More()) {\n\t\t// set up [per-char] state info\n\t\tint state2 = -1;\t\t\t\t// (ASSUME no state change)\n\t\tSci_Position chColor = sc.currentPos - 1;// (ASSUME standard coloring range)\n\t\tbool advance = true;\t\t\t// (ASSUME scanner \"eats\" 1 char)\n\n\t\t// step state machine\n\t\tswitch (sc.state & 0x0f) {\n\t\tcase SCE_CAML_DEFAULT:\n\t\t\tchToken = sc.currentPos;\t// save [possible] token start (JIC)\n\t\t\t// it's wide open; what do we have?\n\t\t\tif (iscamlf(sc.ch))\n\t\t\t\tstate2 = SCE_CAML_IDENTIFIER;\n\t\t\telse if (!isSML && sc.Match('`') && iscamlf(sc.chNext))\n\t\t\t\tstate2 = SCE_CAML_TAGNAME;\n\t\t\telse if (!isSML && sc.Match('#') && isdigit(sc.chNext))\n\t\t\t\tstate2 = SCE_CAML_LINENUM;\n\t\t\telse if (isdigit(sc.ch)) {\n\t\t\t\t// it's a number, assume base 10\n\t\t\t\tstate2 = SCE_CAML_NUMBER, chBase = 10;\n\t\t\t\tif (sc.Match('0')) {\n\t\t\t\t\t// there MAY be a base specified...\n\t\t\t\t\tconst char* baseC = \"bBoOxX\";\n\t\t\t\t\tif (isSML) {\n\t\t\t\t\t\tif (sc.chNext == 'w')\n\t\t\t\t\t\t\tsc.Forward();\t// (consume SML \"word\" indicator)\n\t\t\t\t\t\tbaseC = \"x\";\n\t\t\t\t\t}\n\t\t\t\t\t// ... change to specified base AS REQUIRED\n\t\t\t\t\tif (strchr(baseC, sc.chNext))\n\t\t\t\t\t\tchBase = baseT[tolower(sc.chNext) - 'a'], sc.Forward();\n\t\t\t\t}\n\t\t\t} else if (!isSML && sc.Match('\\''))\t// (Caml char literal?)\n\t\t\t\tstate2 = SCE_CAML_CHAR, chLit = 0;\n\t\t\telse if (isSML && sc.Match('#', '\"'))\t// (SML char literal?)\n\t\t\t\tstate2 = SCE_CAML_CHAR, sc.Forward();\n\t\t\telse if (sc.Match('\"'))\n\t\t\t\tstate2 = SCE_CAML_STRING;\n\t\t\telse if (sc.Match('(', '*'))\n\t\t\t\tstate2 = SCE_CAML_COMMENT, sc.Forward(), sc.ch = ' '; // (*)...\n\t\t\telse if (strchr(\"!?~\"\t\t\t/* Caml \"prefix-symbol\" */\n\t\t\t\t\t\"=<>@^|&+-*/$%\"\t\t\t/* Caml \"infix-symbol\" */\n\t\t\t\t\t\"()[]{};,:.#\", sc.ch)\t// Caml \"bracket\" or ;,:.#\n\t\t\t\t\t\t\t\t\t\t\t// SML \"extra\" ident chars\n\t\t\t\t|| (isSML && (sc.Match('\\\\') || sc.Match('`'))))\n\t\t\t\tstate2 = SCE_CAML_OPERATOR;\n\t\t\tbreak;\n\n\t\tcase SCE_CAML_IDENTIFIER:\n\t\t\t// [try to] interpret as [additional] identifier char\n\t\t\tif (!(iscaml(sc.ch) || sc.Match('\\''))) {\n\t\t\t\tconst Sci_Position n = sc.currentPos - chToken;\n\t\t\t\tif (n < 24) {\n\t\t\t\t\t// length is believable as keyword, [re-]construct token\n\t\t\t\t\tchar t[24];\n\t\t\t\t\tfor (Sci_Position i = -n; i < 0; i++)\n\t\t\t\t\t\tt[n + i] = static_cast<char>(sc.GetRelative(i));\n\t\t\t\t\tt[n] = '\\0';\n\t\t\t\t\t// special-case \"_\" token as KEYWORD\n\t\t\t\t\tif ((n == 1 && sc.chPrev == '_') || keywords.InList(t))\n\t\t\t\t\t\tsc.ChangeState(SCE_CAML_KEYWORD);\n\t\t\t\t\telse if (keywords2.InList(t))\n\t\t\t\t\t\tsc.ChangeState(SCE_CAML_KEYWORD2);\n\t\t\t\t\telse if (keywords3.InList(t))\n\t\t\t\t\t\tsc.ChangeState(SCE_CAML_KEYWORD3);\n\t\t\t\t}\n\t\t\t\tstate2 = SCE_CAML_DEFAULT, advance = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_CAML_TAGNAME:\n\t\t\t// [try to] interpret as [additional] tagname char\n\t\t\tif (!(iscaml(sc.ch) || sc.Match('\\'')))\n\t\t\t\tstate2 = SCE_CAML_DEFAULT, advance = false;\n\t\t\tbreak;\n\n\t\t/*case SCE_CAML_KEYWORD:\n\t\tcase SCE_CAML_KEYWORD2:\n\t\tcase SCE_CAML_KEYWORD3:\n\t\t\t// [try to] interpret as [additional] keyword char\n\t\t\tif (!iscaml(ch))\n\t\t\t\tstate2 = SCE_CAML_DEFAULT, advance = false;\n\t\t\tbreak;*/\n\n\t\tcase SCE_CAML_LINENUM:\n\t\t\t// [try to] interpret as [additional] linenum directive char\n\t\t\tif (!isdigit(sc.ch))\n\t\t\t\tstate2 = SCE_CAML_DEFAULT, advance = false;\n\t\t\tbreak;\n\n\t\tcase SCE_CAML_OPERATOR: {\n\t\t\t// [try to] interpret as [additional] operator char\n\t\t\tconst char* o = 0;\n\t\t\tif (iscaml(sc.ch) || isspace(sc.ch)\t\t\t// ident or whitespace\n\t\t\t\t|| (o = strchr(\")]};,\\'\\\"#\", sc.ch),o)\t// \"termination\" chars\n\t\t\t\t|| (!isSML && sc.Match('`'))\t\t\t// Caml extra term char\n\t\t\t\t|| (!strchr(\"!$%&*+-./:<=>?@^|~\", sc.ch)// \"operator\" chars\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t// SML extra ident chars\n\t\t\t\t\t&& !(isSML && (sc.Match('\\\\') || sc.Match('`'))))) {\n\t\t\t\t// check for INCLUSIVE termination\n\t\t\t\tif (o && strchr(\")]};,\", sc.ch)) {\n\t\t\t\t\tif ((sc.Match(')') && sc.chPrev == '(')\n\t\t\t\t\t\t|| (sc.Match(']') && sc.chPrev == '['))\n\t\t\t\t\t\t// special-case \"()\" and \"[]\" tokens as KEYWORDS\n\t\t\t\t\t\tsc.ChangeState(SCE_CAML_KEYWORD);\n\t\t\t\t\tchColor++;\n\t\t\t\t} else\n\t\t\t\t\tadvance = false;\n\t\t\t\tstate2 = SCE_CAML_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\tcase SCE_CAML_NUMBER:\n\t\t\t// [try to] interpret as [additional] numeric literal char\n\t\t\tif ((!isSML && sc.Match('_')) || IsADigit(sc.ch, chBase))\n\t\t\t\tbreak;\n\t\t\t// how about an integer suffix?\n\t\t\tif (!isSML && (sc.Match('l') || sc.Match('L') || sc.Match('n'))\n\t\t\t\t&& (sc.chPrev == '_' || IsADigit(sc.chPrev, chBase)))\n\t\t\t\tbreak;\n\t\t\t// or a floating-point literal?\n\t\t\tif (chBase == 10) {\n\t\t\t\t// with a decimal point?\n\t\t\t\tif (sc.Match('.')\n\t\t\t\t\t&& ((!isSML && sc.chPrev == '_')\n\t\t\t\t\t\t|| IsADigit(sc.chPrev, chBase)))\n\t\t\t\t\tbreak;\n\t\t\t\t// with an exponent? (I)\n\t\t\t\tif ((sc.Match('e') || sc.Match('E'))\n\t\t\t\t\t&& ((!isSML && (sc.chPrev == '.' || sc.chPrev == '_'))\n\t\t\t\t\t\t|| IsADigit(sc.chPrev, chBase)))\n\t\t\t\t\tbreak;\n\t\t\t\t// with an exponent? (II)\n\t\t\t\tif (((!isSML && (sc.Match('+') || sc.Match('-')))\n\t\t\t\t\t\t|| (isSML && sc.Match('~')))\n\t\t\t\t\t&& (sc.chPrev == 'e' || sc.chPrev == 'E'))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// it looks like we have run out of number\n\t\t\tstate2 = SCE_CAML_DEFAULT, advance = false;\n\t\t\tbreak;\n\n\t\tcase SCE_CAML_CHAR:\n\t\t\tif (!isSML) {\n\t\t\t\t// [try to] interpret as [additional] char literal char\n\t\t\t\tif (sc.Match('\\\\')) {\n\t\t\t\t\tchLit = 1;\t// (definitely IS a char literal)\n\t\t\t\t\tif (sc.chPrev == '\\\\')\n\t\t\t\t\t\tsc.ch = ' ';\t// (...\\\\')\n\t\t\t\t// should we be terminating - one way or another?\n\t\t\t\t} else if ((sc.Match('\\'') && sc.chPrev != '\\\\')\n\t\t\t\t\t|| sc.atLineEnd) {\n\t\t\t\t\tstate2 = SCE_CAML_DEFAULT;\n\t\t\t\t\tif (sc.Match('\\''))\n\t\t\t\t\t\tchColor++;\n\t\t\t\t\telse\n\t\t\t\t\t\tsc.ChangeState(SCE_CAML_IDENTIFIER);\n\t\t\t\t// ... maybe a char literal, maybe not\n\t\t\t\t} else if (chLit < 1 && sc.currentPos - chToken >= 2)\n\t\t\t\t\tsc.ChangeState(SCE_CAML_IDENTIFIER), advance = false;\n\t\t\t\tbreak;\n\t\t\t}/* else\n\t\t\t\t// fall through for SML char literal (handle like string) */\n\n\t\tcase SCE_CAML_STRING:\n\t\t\t// [try to] interpret as [additional] [SML char/] string literal char\n\t\t\tif (isSML && sc.Match('\\\\') && sc.chPrev != '\\\\' && isspace(sc.chNext))\n\t\t\t\tstate2 = SCE_CAML_WHITE;\n\t\t\telse if (sc.Match('\\\\') && sc.chPrev == '\\\\')\n\t\t\t\tsc.ch = ' ';\t// (...\\\\\")\n\t\t\t// should we be terminating - one way or another?\n\t\t\telse if ((sc.Match('\"') && sc.chPrev != '\\\\')\n\t\t\t\t|| (isSML && sc.atLineEnd)) {\n\t\t\t\tstate2 = SCE_CAML_DEFAULT;\n\t\t\t\tif (sc.Match('\"'))\n\t\t\t\t\tchColor++;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_CAML_WHITE:\n\t\t\t// [try to] interpret as [additional] SML embedded whitespace char\n\t\t\tif (sc.Match('\\\\')) {\n\t\t\t\t// style this puppy NOW...\n\t\t\t\tstate2 = SCE_CAML_STRING, sc.ch = ' ' /* (...\\\") */, chColor++,\n\t\t\t\t\tstyler.ColourTo(chColor, SCE_CAML_WHITE), styler.Flush();\n\t\t\t\t// ... then backtrack to determine original SML literal type\n\t\t\t\tSci_Position p = chColor - 2;\n\t\t\t\tfor (; p >= 0 && styler.StyleAt(p) == SCE_CAML_WHITE; p--) ;\n\t\t\t\tif (p >= 0)\n\t\t\t\t\tstate2 = static_cast<int>(styler.StyleAt(p));\n\t\t\t\t// take care of state change NOW\n\t\t\t\tsc.ChangeState(state2), state2 = -1;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_CAML_COMMENT:\n\t\tcase SCE_CAML_COMMENT1:\n\t\tcase SCE_CAML_COMMENT2:\n\t\tcase SCE_CAML_COMMENT3:\n\t\t\t// we're IN a comment - does this start a NESTED comment?\n\t\t\tif (sc.Match('(', '*'))\n\t\t\t\tstate2 = sc.state + 1, chToken = sc.currentPos,\n\t\t\t\t\tsc.Forward(), sc.ch = ' ' /* (*)... */, nesting++;\n\t\t\t// [try to] interpret as [additional] comment char\n\t\t\telse if (sc.Match(')') && sc.chPrev == '*') {\n\t\t\t\tif (nesting)\n\t\t\t\t\tstate2 = (sc.state & 0x0f) - 1, chToken = 0, nesting--;\n\t\t\t\telse\n\t\t\t\t\tstate2 = SCE_CAML_DEFAULT;\n\t\t\t\tchColor++;\n\t\t\t// enable \"magic\" (read-only) comment AS REQUIRED\n\t\t\t} else if (useMagic && sc.currentPos - chToken == 4\n\t\t\t\t&& sc.Match('c') && sc.chPrev == 'r' && sc.GetRelative(-2) == '@')\n\t\t\t\tsc.state |= 0x10;\t// (switch to read-only comment style)\n\t\t\tbreak;\n\t\t}\n\n\t\t// handle state change and char coloring AS REQUIRED\n\t\tif (state2 >= 0)\n\t\t\tstyler.ColourTo(chColor, sc.state), sc.ChangeState(state2);\n\t\t// move to next char UNLESS re-scanning current char\n\t\tif (advance)\n\t\t\tsc.Forward();\n\t}\n\n\t// do any required terminal char coloring (JIC)\n\tsc.Complete();\n}\n\n#ifdef BUILD_AS_EXTERNAL_LEXER\nstatic\n#endif\t/* BUILD_AS_EXTERNAL_LEXER */\nvoid FoldCamlDoc(\n\tSci_PositionU, Sci_Position,\n\tint,\n\tWordList *[],\n\tAccessor &)\n{\n}\n\nstatic const char * const camlWordListDesc[] = {\n\t\"Keywords\",\t\t// primary Objective Caml keywords\n\t\"Keywords2\",\t// \"optional\" keywords (typically from Pervasives)\n\t\"Keywords3\",\t// \"optional\" keywords (typically typenames)\n\t0\n};\n\n#ifndef BUILD_AS_EXTERNAL_LEXER\nLexerModule lmCaml(SCLEX_CAML, ColouriseCamlDoc, \"caml\", FoldCamlDoc, camlWordListDesc);\n#endif\t/* BUILD_AS_EXTERNAL_LEXER */\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCmake.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexCmake.cxx\n ** Lexer for Cmake\n **/\n// Copyright 2007 by Cristian Adam <cristian [dot] adam [at] gmx [dot] net>\n// based on the NSIS lexer\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic bool isCmakeNumber(char ch)\n{\n    return(ch >= '0' && ch <= '9');\n}\n\nstatic bool isCmakeChar(char ch)\n{\n    return(ch == '.' ) || (ch == '_' ) || isCmakeNumber(ch) || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');\n}\n\nstatic bool isCmakeLetter(char ch)\n{\n    return(ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');\n}\n\nstatic bool CmakeNextLineHasElse(Sci_PositionU start, Sci_PositionU end, Accessor &styler)\n{\n    Sci_Position nNextLine = -1;\n    for ( Sci_PositionU i = start; i < end; i++ ) {\n        char cNext = styler.SafeGetCharAt( i );\n        if ( cNext == '\\n' ) {\n            nNextLine = i+1;\n            break;\n        }\n    }\n\n    if ( nNextLine == -1 ) // We never foudn the next line...\n        return false;\n\n    for ( Sci_PositionU firstChar = nNextLine; firstChar < end; firstChar++ ) {\n        char cNext = styler.SafeGetCharAt( firstChar );\n        if ( cNext == ' ' )\n            continue;\n        if ( cNext == '\\t' )\n            continue;\n        if ( styler.Match(firstChar, \"ELSE\")  || styler.Match(firstChar, \"else\"))\n            return true;\n        break;\n    }\n\n    return false;\n}\n\nstatic int calculateFoldCmake(Sci_PositionU start, Sci_PositionU end, int foldlevel, Accessor &styler, bool bElse)\n{\n    // If the word is too long, it is not what we are looking for\n    if ( end - start > 20 )\n        return foldlevel;\n\n    int newFoldlevel = foldlevel;\n\n    char s[20]; // The key word we are looking for has atmost 13 characters\n    for (unsigned int i = 0; i < end - start + 1 && i < 19; i++) {\n        s[i] = static_cast<char>( styler[ start + i ] );\n        s[i + 1] = '\\0';\n    }\n\n    if ( CompareCaseInsensitive(s, \"IF\") == 0 || CompareCaseInsensitive(s, \"WHILE\") == 0\n         || CompareCaseInsensitive(s, \"MACRO\") == 0 || CompareCaseInsensitive(s, \"FOREACH\") == 0\n         || CompareCaseInsensitive(s, \"ELSEIF\") == 0 )\n        newFoldlevel++;\n    else if ( CompareCaseInsensitive(s, \"ENDIF\") == 0 || CompareCaseInsensitive(s, \"ENDWHILE\") == 0\n              || CompareCaseInsensitive(s, \"ENDMACRO\") == 0 || CompareCaseInsensitive(s, \"ENDFOREACH\") == 0)\n        newFoldlevel--;\n    else if ( bElse && CompareCaseInsensitive(s, \"ELSEIF\") == 0 )\n        newFoldlevel++;\n    else if ( bElse && CompareCaseInsensitive(s, \"ELSE\") == 0 )\n        newFoldlevel++;\n\n    return newFoldlevel;\n}\n\nstatic int classifyWordCmake(Sci_PositionU start, Sci_PositionU end, WordList *keywordLists[], Accessor &styler )\n{\n    char word[100] = {0};\n    char lowercaseWord[100] = {0};\n\n    WordList &Commands = *keywordLists[0];\n    WordList &Parameters = *keywordLists[1];\n    WordList &UserDefined = *keywordLists[2];\n\n    for (Sci_PositionU i = 0; i < end - start + 1 && i < 99; i++) {\n        word[i] = static_cast<char>( styler[ start + i ] );\n        lowercaseWord[i] = static_cast<char>(tolower(word[i]));\n    }\n\n    // Check for special words...\n    if ( CompareCaseInsensitive(word, \"MACRO\") == 0 || CompareCaseInsensitive(word, \"ENDMACRO\") == 0 )\n        return SCE_CMAKE_MACRODEF;\n\n    if ( CompareCaseInsensitive(word, \"IF\") == 0 ||  CompareCaseInsensitive(word, \"ENDIF\") == 0 )\n        return SCE_CMAKE_IFDEFINEDEF;\n\n    if ( CompareCaseInsensitive(word, \"ELSEIF\") == 0  || CompareCaseInsensitive(word, \"ELSE\") == 0 )\n        return SCE_CMAKE_IFDEFINEDEF;\n\n    if ( CompareCaseInsensitive(word, \"WHILE\") == 0 || CompareCaseInsensitive(word, \"ENDWHILE\") == 0)\n        return SCE_CMAKE_WHILEDEF;\n\n    if ( CompareCaseInsensitive(word, \"FOREACH\") == 0 || CompareCaseInsensitive(word, \"ENDFOREACH\") == 0)\n        return SCE_CMAKE_FOREACHDEF;\n\n    if ( Commands.InList(lowercaseWord) )\n        return SCE_CMAKE_COMMANDS;\n\n    if ( Parameters.InList(word) )\n        return SCE_CMAKE_PARAMETERS;\n\n\n    if ( UserDefined.InList(word) )\n        return SCE_CMAKE_USERDEFINED;\n\n    if ( strlen(word) > 3 ) {\n        if ( word[1] == '{' && word[strlen(word)-1] == '}' )\n            return SCE_CMAKE_VARIABLE;\n    }\n\n    // To check for numbers\n    if ( isCmakeNumber( word[0] ) ) {\n        bool bHasSimpleCmakeNumber = true;\n        for (unsigned int j = 1; j < end - start + 1 && j < 99; j++) {\n            if ( !isCmakeNumber( word[j] ) ) {\n                bHasSimpleCmakeNumber = false;\n                break;\n            }\n        }\n\n        if ( bHasSimpleCmakeNumber )\n            return SCE_CMAKE_NUMBER;\n    }\n\n    return SCE_CMAKE_DEFAULT;\n}\n\nstatic void ColouriseCmakeDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler)\n{\n    int state = SCE_CMAKE_DEFAULT;\n    if ( startPos > 0 )\n        state = styler.StyleAt(startPos-1); // Use the style from the previous line, usually default, but could be commentbox\n\n    styler.StartAt( startPos );\n    styler.GetLine( startPos );\n\n    Sci_PositionU nLengthDoc = startPos + length;\n    styler.StartSegment( startPos );\n\n    char cCurrChar;\n    bool bVarInString = false;\n    bool bClassicVarInString = false;\n\n    Sci_PositionU i;\n    for ( i = startPos; i < nLengthDoc; i++ ) {\n        cCurrChar = styler.SafeGetCharAt( i );\n        char cNextChar = styler.SafeGetCharAt(i+1);\n\n        switch (state) {\n        case SCE_CMAKE_DEFAULT:\n            if ( cCurrChar == '#' ) { // we have a comment line\n                styler.ColourTo(i-1, state );\n                state = SCE_CMAKE_COMMENT;\n                break;\n            }\n            if ( cCurrChar == '\"' ) {\n                styler.ColourTo(i-1, state );\n                state = SCE_CMAKE_STRINGDQ;\n                bVarInString = false;\n                bClassicVarInString = false;\n                break;\n            }\n            if ( cCurrChar == '\\'' ) {\n                styler.ColourTo(i-1, state );\n                state = SCE_CMAKE_STRINGRQ;\n                bVarInString = false;\n                bClassicVarInString = false;\n                break;\n            }\n            if ( cCurrChar == '`' ) {\n                styler.ColourTo(i-1, state );\n                state = SCE_CMAKE_STRINGLQ;\n                bVarInString = false;\n                bClassicVarInString = false;\n                break;\n            }\n\n            // CMake Variable\n            if ( cCurrChar == '$' || isCmakeChar(cCurrChar)) {\n                styler.ColourTo(i-1,state);\n                state = SCE_CMAKE_VARIABLE;\n\n                // If it is a number, we must check and set style here first...\n                if ( isCmakeNumber(cCurrChar) && (cNextChar == '\\t' || cNextChar == ' ' || cNextChar == '\\r' || cNextChar == '\\n' ) )\n                    styler.ColourTo( i, SCE_CMAKE_NUMBER);\n\n                break;\n            }\n\n            break;\n        case SCE_CMAKE_COMMENT:\n            if ( cCurrChar == '\\n' || cCurrChar == '\\r' ) {\n                if ( styler.SafeGetCharAt(i-1) == '\\\\' ) {\n                    styler.ColourTo(i-2,state);\n                    styler.ColourTo(i-1,SCE_CMAKE_DEFAULT);\n                }\n                else {\n                    styler.ColourTo(i-1,state);\n                    state = SCE_CMAKE_DEFAULT;\n                }\n            }\n            break;\n        case SCE_CMAKE_STRINGDQ:\n        case SCE_CMAKE_STRINGLQ:\n        case SCE_CMAKE_STRINGRQ:\n\n            if ( styler.SafeGetCharAt(i-1) == '\\\\' && styler.SafeGetCharAt(i-2) == '$' )\n                break; // Ignore the next character, even if it is a quote of some sort\n\n            if ( cCurrChar == '\"' && state == SCE_CMAKE_STRINGDQ ) {\n                styler.ColourTo(i,state);\n                state = SCE_CMAKE_DEFAULT;\n                break;\n            }\n\n            if ( cCurrChar == '`' && state == SCE_CMAKE_STRINGLQ ) {\n                styler.ColourTo(i,state);\n                state = SCE_CMAKE_DEFAULT;\n                break;\n            }\n\n            if ( cCurrChar == '\\'' && state == SCE_CMAKE_STRINGRQ ) {\n                styler.ColourTo(i,state);\n                state = SCE_CMAKE_DEFAULT;\n                break;\n            }\n\n            if ( cNextChar == '\\r' || cNextChar == '\\n' ) {\n                Sci_Position nCurLine = styler.GetLine(i+1);\n                Sci_Position nBack = i;\n                // We need to check if the previous line has a \\ in it...\n                bool bNextLine = false;\n\n                while ( nBack > 0 ) {\n                    if ( styler.GetLine(nBack) != nCurLine )\n                        break;\n\n                    char cTemp = styler.SafeGetCharAt(nBack, 'a'); // Letter 'a' is safe here\n\n                    if ( cTemp == '\\\\' ) {\n                        bNextLine = true;\n                        break;\n                    }\n                    if ( cTemp != '\\r' && cTemp != '\\n' && cTemp != '\\t' && cTemp != ' ' )\n                        break;\n\n                    nBack--;\n                }\n\n                if ( bNextLine ) {\n                    styler.ColourTo(i+1,state);\n                }\n                if ( bNextLine == false ) {\n                    styler.ColourTo(i,state);\n                    state = SCE_CMAKE_DEFAULT;\n                }\n            }\n            break;\n\n        case SCE_CMAKE_VARIABLE:\n\n            // CMake Variable:\n            if ( cCurrChar == '$' )\n                state = SCE_CMAKE_DEFAULT;\n            else if ( cCurrChar == '\\\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' ) )\n                state = SCE_CMAKE_DEFAULT;\n            else if ( (isCmakeChar(cCurrChar) && !isCmakeChar( cNextChar) && cNextChar != '}') || cCurrChar == '}' ) {\n                state = classifyWordCmake( styler.GetStartSegment(), i, keywordLists, styler );\n                styler.ColourTo( i, state);\n                state = SCE_CMAKE_DEFAULT;\n            }\n            else if ( !isCmakeChar( cCurrChar ) && cCurrChar != '{' && cCurrChar != '}' ) {\n                if ( classifyWordCmake( styler.GetStartSegment(), i-1, keywordLists, styler) == SCE_CMAKE_NUMBER )\n                    styler.ColourTo( i-1, SCE_CMAKE_NUMBER );\n\n                state = SCE_CMAKE_DEFAULT;\n\n                if ( cCurrChar == '\"' ) {\n                    state = SCE_CMAKE_STRINGDQ;\n                    bVarInString = false;\n                    bClassicVarInString = false;\n                }\n                else if ( cCurrChar == '`' ) {\n                    state = SCE_CMAKE_STRINGLQ;\n                    bVarInString = false;\n                    bClassicVarInString = false;\n                }\n                else if ( cCurrChar == '\\'' ) {\n                    state = SCE_CMAKE_STRINGRQ;\n                    bVarInString = false;\n                    bClassicVarInString = false;\n                }\n                else if ( cCurrChar == '#' ) {\n                    state = SCE_CMAKE_COMMENT;\n                }\n            }\n            break;\n        }\n\n        if ( state == SCE_CMAKE_STRINGDQ || state == SCE_CMAKE_STRINGLQ || state == SCE_CMAKE_STRINGRQ ) {\n            bool bIngoreNextDollarSign = false;\n\n            if ( bVarInString && cCurrChar == '$' ) {\n                bVarInString = false;\n                bIngoreNextDollarSign = true;\n            }\n            else if ( bVarInString && cCurrChar == '\\\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' || cNextChar == '\"' || cNextChar == '`' || cNextChar == '\\'' ) ) {\n                styler.ColourTo( i+1, SCE_CMAKE_STRINGVAR);\n                bVarInString = false;\n                bIngoreNextDollarSign = false;\n            }\n\n            else if ( bVarInString && !isCmakeChar(cNextChar) ) {\n                int nWordState = classifyWordCmake( styler.GetStartSegment(), i, keywordLists, styler);\n                if ( nWordState == SCE_CMAKE_VARIABLE )\n                    styler.ColourTo( i, SCE_CMAKE_STRINGVAR);\n                bVarInString = false;\n            }\n            // Covers \"${TEST}...\"\n            else if ( bClassicVarInString && cNextChar == '}' ) {\n                styler.ColourTo( i+1, SCE_CMAKE_STRINGVAR);\n                bClassicVarInString = false;\n            }\n\n            // Start of var in string\n            if ( !bIngoreNextDollarSign && cCurrChar == '$' && cNextChar == '{' ) {\n                styler.ColourTo( i-1, state);\n                bClassicVarInString = true;\n                bVarInString = false;\n            }\n            else if ( !bIngoreNextDollarSign && cCurrChar == '$' ) {\n                styler.ColourTo( i-1, state);\n                bVarInString = true;\n                bClassicVarInString = false;\n            }\n        }\n    }\n\n    // Colourise remaining document\n    styler.ColourTo(nLengthDoc-1,state);\n}\n\nstatic void FoldCmakeDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler)\n{\n    // No folding enabled, no reason to continue...\n    if ( styler.GetPropertyInt(\"fold\") == 0 )\n        return;\n\n    bool foldAtElse = styler.GetPropertyInt(\"fold.at.else\", 0) == 1;\n\n    Sci_Position lineCurrent = styler.GetLine(startPos);\n    Sci_PositionU safeStartPos = styler.LineStart( lineCurrent );\n\n    bool bArg1 = true;\n    Sci_Position nWordStart = -1;\n\n    int levelCurrent = SC_FOLDLEVELBASE;\n    if (lineCurrent > 0)\n        levelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n    int levelNext = levelCurrent;\n\n    for (Sci_PositionU i = safeStartPos; i < startPos + length; i++) {\n        char chCurr = styler.SafeGetCharAt(i);\n\n        if ( bArg1 ) {\n            if ( nWordStart == -1 && (isCmakeLetter(chCurr)) ) {\n                nWordStart = i;\n            }\n            else if ( isCmakeLetter(chCurr) == false && nWordStart > -1 ) {\n                int newLevel = calculateFoldCmake( nWordStart, i-1, levelNext, styler, foldAtElse);\n\n                if ( newLevel == levelNext ) {\n                    if ( foldAtElse ) {\n                        if ( CmakeNextLineHasElse(i, startPos + length, styler) )\n                            levelNext--;\n                    }\n                }\n                else\n                    levelNext = newLevel;\n                bArg1 = false;\n            }\n        }\n\n        if ( chCurr == '\\n' ) {\n            if ( bArg1 && foldAtElse) {\n                if ( CmakeNextLineHasElse(i, startPos + length, styler) )\n                    levelNext--;\n            }\n\n            // If we are on a new line...\n            int levelUse = levelCurrent;\n            int lev = levelUse | levelNext << 16;\n            if (levelUse < levelNext )\n                lev |= SC_FOLDLEVELHEADERFLAG;\n            if (lev != styler.LevelAt(lineCurrent))\n                styler.SetLevel(lineCurrent, lev);\n\n            lineCurrent++;\n            levelCurrent = levelNext;\n            bArg1 = true; // New line, lets look at first argument again\n            nWordStart = -1;\n        }\n    }\n\n    int levelUse = levelCurrent;\n    int lev = levelUse | levelNext << 16;\n    if (levelUse < levelNext)\n        lev |= SC_FOLDLEVELHEADERFLAG;\n    if (lev != styler.LevelAt(lineCurrent))\n        styler.SetLevel(lineCurrent, lev);\n}\n\nstatic const char * const cmakeWordLists[] = {\n    \"Commands\",\n    \"Parameters\",\n    \"UserDefined\",\n    0,\n    0,};\n\nLexerModule lmCmake(SCLEX_CMAKE, ColouriseCmakeDoc, \"cmake\", FoldCmakeDoc, cmakeWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCoffeeScript.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexCoffeeScript.cxx\n ** Lexer for CoffeeScript.\n **/\n// Copyright 1998-2011 by Neil Hodgson <neilh@scintilla.org>\n// Based on the Scintilla C++ Lexer\n// Written by Eric Promislow <ericp@activestate.com> in 2011 for the Komodo IDE\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"Platform.h\"\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic bool IsSpaceEquiv(int state) {\n\treturn (state == SCE_COFFEESCRIPT_DEFAULT\n\t    || state == SCE_COFFEESCRIPT_COMMENTLINE\n\t    || state == SCE_COFFEESCRIPT_COMMENTBLOCK\n\t    || state == SCE_COFFEESCRIPT_VERBOSE_REGEX\n\t    || state == SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT\n\t    || state == SCE_COFFEESCRIPT_WORD\n\t    || state == SCE_COFFEESCRIPT_REGEX);\n}\n\n// Store the current lexer state and brace count prior to starting a new\n// `#{}` interpolation level.\n// Based on LexRuby.cxx.\nstatic void enterInnerExpression(int  *p_inner_string_types,\n                                 int  *p_inner_expn_brace_counts,\n                                 int&  inner_string_count,\n                                 int   state,\n                                 int&  brace_counts\n                                 ) {\n\tp_inner_string_types[inner_string_count] = state;\n\tp_inner_expn_brace_counts[inner_string_count] = brace_counts;\n\tbrace_counts = 0;\n\t++inner_string_count;\n}\n\n// Restore the lexer state and brace count for the previous `#{}` interpolation\n// level upon returning to it.\n// Note the previous lexer state is the return value and needs to be restored\n// manually by the StyleContext.\n// Based on LexRuby.cxx.\nstatic int exitInnerExpression(int  *p_inner_string_types,\n                               int  *p_inner_expn_brace_counts,\n                               int&  inner_string_count,\n                               int&  brace_counts\n                              ) {\n\t--inner_string_count;\n\tbrace_counts = p_inner_expn_brace_counts[inner_string_count];\n\treturn p_inner_string_types[inner_string_count];\n}\n\n// Preconditions: sc.currentPos points to a character after '+' or '-'.\n// The test for pos reaching 0 should be redundant,\n// and is in only for safety measures.\n// Limitation: this code will give the incorrect answer for code like\n// a = b+++/ptn/...\n// Putting a space between the '++' post-inc operator and the '+' binary op\n// fixes this, and is highly recommended for readability anyway.\nstatic bool FollowsPostfixOperator(StyleContext &sc, Accessor &styler) {\n\tSci_Position pos = (Sci_Position) sc.currentPos;\n\twhile (--pos > 0) {\n\t\tchar ch = styler[pos];\n\t\tif (ch == '+' || ch == '-') {\n\t\t\treturn styler[pos - 1] == ch;\n\t\t}\n\t}\n\treturn false;\n}\n\nstatic bool followsKeyword(StyleContext &sc, Accessor &styler) {\n\tSci_Position pos = (Sci_Position) sc.currentPos;\n\tSci_Position currentLine = styler.GetLine(pos);\n\tSci_Position lineStartPos = styler.LineStart(currentLine);\n\twhile (--pos > lineStartPos) {\n\t\tchar ch = styler.SafeGetCharAt(pos);\n\t\tif (ch != ' ' && ch != '\\t') {\n\t\t\tbreak;\n\t\t}\n\t}\n\tstyler.Flush();\n\treturn styler.StyleAt(pos) == SCE_COFFEESCRIPT_WORD;\n}\n\nstatic void ColouriseCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords4 = *keywordlists[3];\n\n\tCharacterSet setOKBeforeRE(CharacterSet::setNone, \"([{=,:;!%^&*|?~+-\");\n\tCharacterSet setCouldBePostOp(CharacterSet::setNone, \"+-\");\n\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_$@\", 0x80, true);\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"._$\", 0x80, true);\n\n\tint chPrevNonWhite = ' ';\n\tint visibleChars = 0;\n\n\t// String/Regex interpolation variables, based on LexRuby.cxx.\n\t// In most cases a value of 2 should be ample for the code the user is\n\t// likely to enter. For example,\n\t//   \"Filling the #{container} with #{liquid}...\"\n\t// from the CoffeeScript homepage nests to a level of 2\n\t// If the user actually hits a 6th occurrence of '#{' in a double-quoted\n\t// string (including regexes), it will stay as a string.  The problem with\n\t// this is that quotes might flip, a 7th '#{' will look like a comment,\n\t// and code-folding might be wrong.\n#define INNER_STRINGS_MAX_COUNT 5\n\t// These vars track our instances of \"...#{,,,'..#{,,,}...',,,}...\"\n\tint inner_string_types[INNER_STRINGS_MAX_COUNT];\n\t// Track # braces when we push a new #{ thing\n\tint inner_expn_brace_counts[INNER_STRINGS_MAX_COUNT];\n\tint inner_string_count = 0;\n\tint brace_counts = 0;   // Number of #{ ... } things within an expression\n\tfor (int i = 0; i < INNER_STRINGS_MAX_COUNT; i++) {\n\t\tinner_string_types[i] = 0;\n\t\tinner_expn_brace_counts[i] = 0;\n\t}\n\n\t// look back to set chPrevNonWhite properly for better regex colouring\n\tSci_Position endPos = startPos + length;\n        if (startPos > 0 && IsSpaceEquiv(initStyle)) {\n\t\tSci_PositionU back = startPos;\n\t\tstyler.Flush();\n\t\twhile (back > 0 && IsSpaceEquiv(styler.StyleAt(--back)))\n\t\t\t;\n\t\tif (styler.StyleAt(back) == SCE_COFFEESCRIPT_OPERATOR) {\n\t\t\tchPrevNonWhite = styler.SafeGetCharAt(back);\n\t\t}\n\t\tif (startPos != back) {\n\t\t\tinitStyle = styler.StyleAt(back);\n\t\t\tif (IsSpaceEquiv(initStyle)) {\n\t\t\t\tinitStyle = SCE_COFFEESCRIPT_DEFAULT;\n\t\t\t}\n\t\t}\n\t\tstartPos = back;\n\t}\n\n\tStyleContext sc(startPos, endPos - startPos, initStyle, styler);\n\n\tfor (; sc.More();) {\n\n\t\tif (sc.atLineStart) {\n\t\t\t// Reset states to beginning of colourise so no surprises\n\t\t\t// if different sets of lines lexed.\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_COFFEESCRIPT_OPERATOR:\n\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_NUMBER:\n\t\t\t\t// We accept almost anything because of hex. and number suffixes\n\t\t\t\tif (!setWord.Contains(sc.ch) || sc.Match('.', '.')) {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_IDENTIFIER:\n\t\t\t\tif (!setWord.Contains(sc.ch) || (sc.ch == '.') || (sc.ch == '$')) {\n\t\t\t\t\tchar s[1000];\n\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_COFFEESCRIPT_WORD);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_COFFEESCRIPT_WORD2);\n\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_COFFEESCRIPT_GLOBALCLASS);\n\t\t\t\t\t} else if (sc.LengthCurrent() > 0 && s[0] == '@') {\n\t\t\t\t\t\tsc.ChangeState(SCE_COFFEESCRIPT_INSTANCEPROPERTY);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_WORD:\n\t\t\tcase SCE_COFFEESCRIPT_WORD2:\n\t\t\tcase SCE_COFFEESCRIPT_GLOBALCLASS:\n\t\t\tcase SCE_COFFEESCRIPT_INSTANCEPROPERTY:\n\t\t\t\tif (!setWord.Contains(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_COMMENTLINE:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_STRING:\n\t\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tsc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t} else if (sc.ch == '#' && sc.chNext == '{' && inner_string_count < INNER_STRINGS_MAX_COUNT) {\n\t\t\t\t\t// process interpolated code #{ ... }\n\t\t\t\t\tenterInnerExpression(inner_string_types,\n\t\t\t\t\t                     inner_expn_brace_counts,\n\t\t\t\t\t                     inner_string_count,\n\t\t\t\t\t                     sc.state,\n\t\t\t\t\t                     brace_counts);\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_OPERATOR);\n\t\t\t\t\tsc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_CHARACTER:\n\t\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tsc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_REGEX:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t} else if (sc.ch == '/') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\twhile ((sc.ch < 0x80) && islower(sc.ch))\n\t\t\t\t\t\tsc.Forward();    // gobble regex flags\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\t// Gobble up the quoted character\n\t\t\t\t\tif (sc.chNext == '\\\\' || sc.chNext == '/') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_STRINGEOL:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_COMMENTBLOCK:\n\t\t\t\tif (sc.Match(\"###\")) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_VERBOSE_REGEX:\n\t\t\t\tif (sc.Match(\"///\")) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_COFFEESCRIPT_DEFAULT);\n\t\t\t\t} else if (sc.Match('#')) {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_COFFEESCRIPT_VERBOSE_REGEX_COMMENT:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_COFFEESCRIPT_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_NUMBER);\n\t\t\t} else if (setWordStart.Contains(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_IDENTIFIER);\n\t\t\t} else if (sc.Match(\"///\")) {\n\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_VERBOSE_REGEX);\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '/'\n\t\t\t\t   && (setOKBeforeRE.Contains(chPrevNonWhite)\n\t\t\t\t       || followsKeyword(sc, styler))\n\t\t\t\t   && (!setCouldBePostOp.Contains(chPrevNonWhite)\n\t\t\t\t       || !FollowsPostfixOperator(sc, styler))) {\n\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_REGEX);\t// JavaScript's RegEx\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_CHARACTER);\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tif (sc.Match(\"###\")) {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_COMMENTBLOCK);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_COMMENTLINE);\n\t\t\t\t}\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_COFFEESCRIPT_OPERATOR);\n\t\t\t\t// Handle '..' and '...' operators correctly.\n\t\t\t\tif (sc.ch == '.') {\n\t\t\t\t\tfor (int i = 0; i < 2 && sc.chNext == '.'; i++, sc.Forward()) ;\n\t\t\t\t} else if (sc.ch == '{') {\n\t\t\t\t\t++brace_counts;\n\t\t\t\t} else if (sc.ch == '}' && --brace_counts <= 0 && inner_string_count > 0) {\n\t\t\t\t\t// Return to previous state before #{ ... }\n\t\t\t\t\tsc.ForwardSetState(exitInnerExpression(inner_string_types,\n\t\t\t\t\t                                       inner_expn_brace_counts,\n\t\t\t\t\t                                       inner_string_count,\n\t\t\t\t\t                                       brace_counts));\n\t\t\t\t\tcontinue; // skip sc.Forward() at loop end\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (!IsASpace(sc.ch) && !IsSpaceEquiv(sc.state)) {\n\t\t\tchPrevNonWhite = sc.ch;\n\t\t\tvisibleChars++;\n\t\t}\n\t\tsc.Forward();\n\t}\n\tsc.Complete();\n}\n\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tif (ch == '#')\n\t\t\treturn true;\n\t\telse if (ch != ' ' && ch != '\\t')\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic void FoldCoffeeScriptDoc(Sci_PositionU startPos, Sci_Position length, int,\n\t\t\t\tWordList *[], Accessor &styler) {\n\t// A simplified version of FoldPyDoc\n\tconst Sci_Position maxPos = startPos + length;\n\tconst Sci_Position maxLines = styler.GetLine(maxPos - 1);             // Requested last line\n\tconst Sci_Position docLines = styler.GetLine(styler.Length() - 1);  // Available last line\n\n\t// property fold.coffeescript.comment\n\tconst bool foldComment = styler.GetPropertyInt(\"fold.coffeescript.comment\") != 0;\n\n\tconst bool foldCompact = styler.GetPropertyInt(\"fold.compact\") != 0;\n\n\t// Backtrack to previous non-blank line so we can determine indent level\n\t// for any white space lines\n\t// and so we can fix any preceding fold level (which is why we go back\n\t// at least one line in all cases)\n\tint spaceFlags = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n\twhile (lineCurrent > 0) {\n\t\tlineCurrent--;\n\t\tindentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n\t\tif (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)\n\t\t    && !IsCommentLine(lineCurrent, styler))\n\t\t\tbreak;\n\t}\n\tint indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\n\t// Set up initial loop state\n\tint prevComment = 0;\n\tif (lineCurrent >= 1)\n\t\tprevComment = foldComment && IsCommentLine(lineCurrent - 1, styler);\n\n\t// Process all characters to end of requested range\n\t// or comment that hangs over the end of the range.  Cap processing in all cases\n\t// to end of document (in case of comment at end).\n\twhile ((lineCurrent <= docLines) && ((lineCurrent <= maxLines) || prevComment)) {\n\n\t\t// Gather info\n\t\tint lev = indentCurrent;\n\t\tSci_Position lineNext = lineCurrent + 1;\n\t\tint indentNext = indentCurrent;\n\t\tif (lineNext <= docLines) {\n\t\t\t// Information about next line is only available if not at end of document\n\t\t\tindentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL);\n\t\t}\n\t\tconst int comment = foldComment && IsCommentLine(lineCurrent, styler);\n\t\tconst int comment_start = (comment && !prevComment && (lineNext <= docLines) &&\n\t\t                           IsCommentLine(lineNext, styler) && (lev > SC_FOLDLEVELBASE));\n\t\tconst int comment_continue = (comment && prevComment);\n\t\tif (!comment)\n\t\t\tindentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\t\tif (indentNext & SC_FOLDLEVELWHITEFLAG)\n\t\t\tindentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel;\n\n\t\tif (comment_start) {\n\t\t\t// Place fold point at start of a block of comments\n\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t} else if (comment_continue) {\n\t\t\t// Add level to rest of lines in the block\n\t\t\tlev = lev + 1;\n\t\t}\n\n\t\t// Skip past any blank lines for next indent level info; we skip also\n\t\t// comments (all comments, not just those starting in column 0)\n\t\t// which effectively folds them into surrounding code rather\n\t\t// than screwing up folding.\n\n\t\twhile ((lineNext < docLines) &&\n\t\t        ((indentNext & SC_FOLDLEVELWHITEFLAG) ||\n\t\t         (lineNext <= docLines && IsCommentLine(lineNext, styler)))) {\n\n\t\t\tlineNext++;\n\t\t\tindentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL);\n\t\t}\n\n\t\tconst int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK;\n\t\tconst int levelBeforeComments = Platform::Maximum(indentCurrentLevel,levelAfterComments);\n\n\t\t// Now set all the indent levels on the lines we skipped\n\t\t// Do this from end to start.  Once we encounter one line\n\t\t// which is indented more than the line after the end of\n\t\t// the comment-block, use the level of the block before\n\n\t\tSci_Position skipLine = lineNext;\n\t\tint skipLevel = levelAfterComments;\n\n\t\twhile (--skipLine > lineCurrent) {\n\t\t\tint skipLineIndent = styler.IndentAmount(skipLine, &spaceFlags, NULL);\n\n\t\t\tif (foldCompact) {\n\t\t\t\tif ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments)\n\t\t\t\t\tskipLevel = levelBeforeComments;\n\n\t\t\t\tint whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG;\n\n\t\t\t\tstyler.SetLevel(skipLine, skipLevel | whiteFlag);\n\t\t\t} else {\n\t\t\t\tif ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments &&\n\t\t\t\t\t!(skipLineIndent & SC_FOLDLEVELWHITEFLAG) &&\n\t\t\t\t\t!IsCommentLine(skipLine, styler))\n\t\t\t\t\tskipLevel = levelBeforeComments;\n\n\t\t\t\tstyler.SetLevel(skipLine, skipLevel);\n\t\t\t}\n\t\t}\n\n\t\t// Set fold header on non-comment line\n\t\tif (!comment && !(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {\n\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t}\n\n\t\t// Keep track of block comment state of previous line\n\t\tprevComment = comment_start || comment_continue;\n\n\t\t// Set fold level for this line and move to next line\n\t\tstyler.SetLevel(lineCurrent, lev);\n\t\tindentCurrent = indentNext;\n\t\tlineCurrent = lineNext;\n\t}\n}\n\nstatic const char *const csWordLists[] = {\n            \"Keywords\",\n            \"Secondary keywords\",\n            \"Unused\",\n            \"Global classes\",\n            0,\n};\n\nLexerModule lmCoffeeScript(SCLEX_COFFEESCRIPT, ColouriseCoffeeScriptDoc, \"coffeescript\", FoldCoffeeScriptDoc, csWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexConf.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexConf.cxx\n ** Lexer for Apache Configuration Files.\n **\n ** First working version contributed by Ahmad Zawawi <ahmad.zawawi@gmail.com> on October 28, 2000.\n ** i created this lexer because i needed something pretty when dealing\n ** when Apache Configuration files...\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ColouriseConfDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler)\n{\n\tint state = SCE_CONF_DEFAULT;\n\tchar chNext = styler[startPos];\n\tSci_Position lengthDoc = startPos + length;\n\t// create a buffer large enough to take the largest chunk...\n\tchar *buffer = new char[length+1];\n\tSci_Position bufferCount = 0;\n\n\t// this assumes that we have 2 keyword list in conf.properties\n\tWordList &directives = *keywordLists[0];\n\tWordList &params = *keywordLists[1];\n\n\t// go through all provided text segment\n\t// using the hand-written state machine shown below\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tfor (Sci_Position i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\tchNext = styler.SafeGetCharAt(i + 2);\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tswitch(state) {\n\t\t\tcase SCE_CONF_DEFAULT:\n\t\t\t\tif( ch == '\\n' || ch == '\\r' || ch == '\\t' || ch == ' ') {\n\t\t\t\t\t// whitespace is simply ignored here...\n\t\t\t\t\tstyler.ColourTo(i,SCE_CONF_DEFAULT);\n\t\t\t\t\tbreak;\n\t\t\t\t} else if( ch == '#' ) {\n\t\t\t\t\t// signals the start of a comment...\n\t\t\t\t\tstate = SCE_CONF_COMMENT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_CONF_COMMENT);\n\t\t\t\t} else if( ch == '.' /*|| ch == '/'*/) {\n\t\t\t\t\t// signals the start of a file...\n\t\t\t\t\tstate = SCE_CONF_EXTENSION;\n\t\t\t\t\tstyler.ColourTo(i,SCE_CONF_EXTENSION);\n\t\t\t\t} else if( ch == '\"') {\n\t\t\t\t\tstate = SCE_CONF_STRING;\n\t\t\t\t\tstyler.ColourTo(i,SCE_CONF_STRING);\n\t\t\t\t} else if( IsASCII(ch) && ispunct(ch) ) {\n\t\t\t\t\t// signals an operator...\n\t\t\t\t\t// no state jump necessary for this\n\t\t\t\t\t// simple case...\n\t\t\t\t\tstyler.ColourTo(i,SCE_CONF_OPERATOR);\n\t\t\t\t} else if( IsASCII(ch) && isalpha(ch) ) {\n\t\t\t\t\t// signals the start of an identifier\n\t\t\t\t\tbufferCount = 0;\n\t\t\t\t\tbuffer[bufferCount++] = static_cast<char>(tolower(ch));\n\t\t\t\t\tstate = SCE_CONF_IDENTIFIER;\n\t\t\t\t} else if( IsASCII(ch) && isdigit(ch) ) {\n\t\t\t\t\t// signals the start of a number\n\t\t\t\t\tbufferCount = 0;\n\t\t\t\t\tbuffer[bufferCount++] = ch;\n\t\t\t\t\t//styler.ColourTo(i,SCE_CONF_NUMBER);\n\t\t\t\t\tstate = SCE_CONF_NUMBER;\n\t\t\t\t} else {\n\t\t\t\t\t// style it the default style..\n\t\t\t\t\tstyler.ColourTo(i,SCE_CONF_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_CONF_COMMENT:\n\t\t\t\t// if we find a newline here,\n\t\t\t\t// we simply go to default state\n\t\t\t\t// else continue to work on it...\n\t\t\t\tif( ch == '\\n' || ch == '\\r' ) {\n\t\t\t\t\tstate = SCE_CONF_DEFAULT;\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i,SCE_CONF_COMMENT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_CONF_EXTENSION:\n\t\t\t\t// if we find a non-alphanumeric char,\n\t\t\t\t// we simply go to default state\n\t\t\t\t// else we're still dealing with an extension...\n\t\t\t\tif( (IsASCII(ch) && isalnum(ch)) || (ch == '_') ||\n\t\t\t\t\t(ch == '-') || (ch == '$') ||\n\t\t\t\t\t(ch == '/') || (ch == '.') || (ch == '*') )\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(i,SCE_CONF_EXTENSION);\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_CONF_DEFAULT;\n\t\t\t\t\tchNext = styler[i--];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_CONF_STRING:\n\t\t\t\t// if we find the end of a string char, we simply go to default state\n\t\t\t\t// else we're still dealing with an string...\n\t\t\t\tif( (ch == '\"' && styler.SafeGetCharAt(i-1)!='\\\\') || (ch == '\\n') || (ch == '\\r') ) {\n\t\t\t\t\tstate = SCE_CONF_DEFAULT;\n\t\t\t\t}\n\t\t\t\tstyler.ColourTo(i,SCE_CONF_STRING);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_CONF_IDENTIFIER:\n\t\t\t\t// stay  in CONF_IDENTIFIER state until we find a non-alphanumeric\n\t\t\t\tif( (IsASCII(ch) && isalnum(ch)) || (ch == '_') || (ch == '-') || (ch == '/') || (ch == '$') || (ch == '.') || (ch == '*')) {\n\t\t\t\t\tbuffer[bufferCount++] = static_cast<char>(tolower(ch));\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_CONF_DEFAULT;\n\t\t\t\t\tbuffer[bufferCount] = '\\0';\n\n\t\t\t\t\t// check if the buffer contains a keyword, and highlight it if it is a keyword...\n\t\t\t\t\tif(directives.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_CONF_DIRECTIVE );\n\t\t\t\t\t} else if(params.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_CONF_PARAMETER );\n\t\t\t\t\t} else if(strchr(buffer,'/') || strchr(buffer,'.')) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_CONF_EXTENSION);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_CONF_DEFAULT);\n\t\t\t\t\t}\n\n\t\t\t\t\t// push back the faulty character\n\t\t\t\t\tchNext = styler[i--];\n\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_CONF_NUMBER:\n\t\t\t\t// stay  in CONF_NUMBER state until we find a non-numeric\n\t\t\t\tif( (IsASCII(ch) && isdigit(ch)) || ch == '.') {\n\t\t\t\t\tbuffer[bufferCount++] = ch;\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_CONF_DEFAULT;\n\t\t\t\t\tbuffer[bufferCount] = '\\0';\n\n\t\t\t\t\t// Colourize here...\n\t\t\t\t\tif( strchr(buffer,'.') ) {\n\t\t\t\t\t\t// it is an IP address...\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_CONF_IP);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// normal number\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_CONF_NUMBER);\n\t\t\t\t\t}\n\n\t\t\t\t\t// push back a character\n\t\t\t\t\tchNext = styler[i--];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t}\n\t}\n\tdelete []buffer;\n}\n\nstatic const char * const confWordListDesc[] = {\n\t\"Directives\",\n\t\"Parameters\",\n\t0\n};\n\nLexerModule lmConf(SCLEX_CONF, ColouriseConfDoc, \"conf\", 0, confWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCrontab.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexCrontab.cxx\n ** Lexer to use with extended crontab files used by a powerful\n ** Windows scheduler/event monitor/automation manager nnCron.\n ** (http://nemtsev.eserv.ru/)\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ColouriseNncrontabDoc(Sci_PositionU startPos, Sci_Position length, int, WordList\n*keywordLists[], Accessor &styler)\n{\n\tint state = SCE_NNCRONTAB_DEFAULT;\n\tchar chNext = styler[startPos];\n\tSci_Position lengthDoc = startPos + length;\n\t// create a buffer large enough to take the largest chunk...\n\tchar *buffer = new char[length+1];\n\tSci_Position bufferCount = 0;\n\t// used when highliting environment variables inside quoted string:\n\tbool insideString = false;\n\n\t// this assumes that we have 3 keyword list in conf.properties\n\tWordList &section = *keywordLists[0];\n\tWordList &keyword = *keywordLists[1];\n\tWordList &modifier = *keywordLists[2];\n\n\t// go through all provided text segment\n\t// using the hand-written state machine shown below\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tfor (Sci_Position i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\tchNext = styler.SafeGetCharAt(i + 2);\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tswitch(state) {\n\t\t\tcase SCE_NNCRONTAB_DEFAULT:\n\t\t\t\tif( ch == '\\n' || ch == '\\r' || ch == '\\t' || ch == ' ') {\n\t\t\t\t\t// whitespace is simply ignored here...\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_DEFAULT);\n\t\t\t\t\tbreak;\n\t\t\t\t} else if( ch == '#' && styler.SafeGetCharAt(i+1) == '(') {\n\t\t\t\t\t// signals the start of a task...\n\t\t\t\t\tstate = SCE_NNCRONTAB_TASK;\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_TASK);\n\t\t\t\t}\n\t\t\t\t  else if( ch == '\\\\' && (styler.SafeGetCharAt(i+1) == ' ' ||\n\t\t\t\t\t\t\t\t\t\t styler.SafeGetCharAt(i+1) == '\\t')) {\n\t\t\t\t\t// signals the start of an extended comment...\n\t\t\t\t\tstate = SCE_NNCRONTAB_COMMENT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_COMMENT);\n\t\t\t\t} else if( ch == '#' ) {\n\t\t\t\t\t// signals the start of a plain comment...\n\t\t\t\t\tstate = SCE_NNCRONTAB_COMMENT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_COMMENT);\n\t\t\t\t} else if( ch == ')' && styler.SafeGetCharAt(i+1) == '#') {\n\t\t\t\t\t// signals the end of a task...\n\t\t\t\t\tstate = SCE_NNCRONTAB_TASK;\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_TASK);\n\t\t\t\t} else if( ch == '\"') {\n\t\t\t\t\tstate = SCE_NNCRONTAB_STRING;\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_STRING);\n\t\t\t\t} else if( ch == '%') {\n\t\t\t\t\t// signals environment variables\n\t\t\t\t\tstate = SCE_NNCRONTAB_ENVIRONMENT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT);\n\t\t\t\t} else if( ch == '<' && styler.SafeGetCharAt(i+1) == '%') {\n\t\t\t\t\t// signals environment variables\n\t\t\t\t\tstate = SCE_NNCRONTAB_ENVIRONMENT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT);\n\t\t\t\t} else if( ch == '*' ) {\n\t\t\t\t\t// signals an asterisk\n\t\t\t\t\t// no state jump necessary for this simple case...\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_ASTERISK);\n\t\t\t\t} else if( (IsASCII(ch) && isalpha(ch)) || ch == '<' ) {\n\t\t\t\t\t// signals the start of an identifier\n\t\t\t\t\tbufferCount = 0;\n\t\t\t\t\tbuffer[bufferCount++] = ch;\n\t\t\t\t\tstate = SCE_NNCRONTAB_IDENTIFIER;\n\t\t\t\t} else if( IsASCII(ch) && isdigit(ch) ) {\n\t\t\t\t\t// signals the start of a number\n\t\t\t\t\tbufferCount = 0;\n\t\t\t\t\tbuffer[bufferCount++] = ch;\n\t\t\t\t\tstate = SCE_NNCRONTAB_NUMBER;\n\t\t\t\t} else {\n\t\t\t\t\t// style it the default style..\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_NNCRONTAB_COMMENT:\n\t\t\t\t// if we find a newline here,\n\t\t\t\t// we simply go to default state\n\t\t\t\t// else continue to work on it...\n\t\t\t\tif( ch == '\\n' || ch == '\\r' ) {\n\t\t\t\t\tstate = SCE_NNCRONTAB_DEFAULT;\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_COMMENT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_NNCRONTAB_TASK:\n\t\t\t\t// if we find a newline here,\n\t\t\t\t// we simply go to default state\n\t\t\t\t// else continue to work on it...\n\t\t\t\tif( ch == '\\n' || ch == '\\r' ) {\n\t\t\t\t\tstate = SCE_NNCRONTAB_DEFAULT;\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_TASK);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_NNCRONTAB_STRING:\n\t\t\t\tif( ch == '%' ) {\n\t\t\t\t\tstate = SCE_NNCRONTAB_ENVIRONMENT;\n\t\t\t\t\tinsideString = true;\n\t\t\t\t\tstyler.ColourTo(i-1,SCE_NNCRONTAB_STRING);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// if we find the end of a string char, we simply go to default state\n\t\t\t\t// else we're still dealing with an string...\n\t\t\t\tif( (ch == '\"' && styler.SafeGetCharAt(i-1)!='\\\\') ||\n\t\t\t\t\t(ch == '\\n') || (ch == '\\r') ) {\n\t\t\t\t\tstate = SCE_NNCRONTAB_DEFAULT;\n\t\t\t\t}\n\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_STRING);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_NNCRONTAB_ENVIRONMENT:\n\t\t\t\t// if we find the end of a string char, we simply go to default state\n\t\t\t\t// else we're still dealing with an string...\n\t\t\t\tif( ch == '%' && insideString ) {\n\t\t\t\t\tstate = SCE_NNCRONTAB_STRING;\n\t\t\t\t\tinsideString = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif( (ch == '%' && styler.SafeGetCharAt(i-1)!='\\\\')\n\t\t\t\t\t|| (ch == '\\n') || (ch == '\\r') || (ch == '>') ) {\n\t\t\t\t\tstate = SCE_NNCRONTAB_DEFAULT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_ENVIRONMENT);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tstyler.ColourTo(i+1,SCE_NNCRONTAB_ENVIRONMENT);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_NNCRONTAB_IDENTIFIER:\n\t\t\t\t// stay  in CONF_IDENTIFIER state until we find a non-alphanumeric\n\t\t\t\tif( (IsASCII(ch) && isalnum(ch)) || (ch == '_') || (ch == '-') || (ch == '/') ||\n\t\t\t\t\t(ch == '$') || (ch == '.') || (ch == '<') || (ch == '>') ||\n\t\t\t\t\t(ch == '@') ) {\n\t\t\t\t\tbuffer[bufferCount++] = ch;\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_NNCRONTAB_DEFAULT;\n\t\t\t\t\tbuffer[bufferCount] = '\\0';\n\n\t\t\t\t\t// check if the buffer contains a keyword,\n\t\t\t\t\t// and highlight it if it is a keyword...\n\t\t\t\t\tif(section.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i,SCE_NNCRONTAB_SECTION );\n\t\t\t\t\t} else if(keyword.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_NNCRONTAB_KEYWORD );\n\t\t\t\t\t} // else if(strchr(buffer,'/') || strchr(buffer,'.')) {\n\t\t\t\t\t//\tstyler.ColourTo(i-1,SCE_NNCRONTAB_EXTENSION);\n\t\t\t\t\t// }\n\t\t\t\t\t  else if(modifier.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_NNCRONTAB_MODIFIER );\n\t\t\t\t\t  }\telse {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_NNCRONTAB_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\t// push back the faulty character\n\t\t\t\t\tchNext = styler[i--];\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_NNCRONTAB_NUMBER:\n\t\t\t\t// stay  in CONF_NUMBER state until we find a non-numeric\n\t\t\t\tif( IsASCII(ch) && isdigit(ch) /* || ch == '.' */ ) {\n\t\t\t\t\tbuffer[bufferCount++] = ch;\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_NNCRONTAB_DEFAULT;\n\t\t\t\t\tbuffer[bufferCount] = '\\0';\n\t\t\t\t\t// Colourize here... (normal number)\n\t\t\t\t\tstyler.ColourTo(i-1,SCE_NNCRONTAB_NUMBER);\n\t\t\t\t\t// push back a character\n\t\t\t\t\tchNext = styler[i--];\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tdelete []buffer;\n}\n\nstatic const char * const cronWordListDesc[] = {\n\t\"Section keywords and Forth words\",\n\t\"nnCrontab keywords\",\n\t\"Modifiers\",\n\t0\n};\n\nLexerModule lmNncrontab(SCLEX_NNCRONTAB, ColouriseNncrontabDoc, \"nncrontab\", 0, cronWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexCsound.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexCsound.cxx\n ** Lexer for Csound (Orchestra & Score)\n ** Written by Georg Ritter - <ritterfuture A T gmail D O T com>\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' ||\n\t\tch == '_' || ch == '?');\n}\n\nstatic inline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.' ||\n\t\tch == '%' || ch == '@' || ch == '$' || ch == '?');\n}\n\nstatic inline bool IsCsoundOperator(char ch) {\n\tif (IsASCII(ch) && isalnum(ch))\n\t\treturn false;\n\t// '.' left out as it is used to make up numbers\n\tif (ch == '*' || ch == '/' || ch == '-' || ch == '+' ||\n\t\tch == '(' || ch == ')' || ch == '=' || ch == '^' ||\n\t\tch == '[' || ch == ']' || ch == '<' || ch == '&' ||\n\t\tch == '>' || ch == ',' || ch == '|' || ch == '~' ||\n\t\tch == '%' || ch == ':')\n\t\treturn true;\n\treturn false;\n}\n\nstatic void ColouriseCsoundDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n\t\t\t\tAccessor &styler) {\n\n\tWordList &opcode = *keywordlists[0];\n\tWordList &headerStmt = *keywordlists[1];\n\tWordList &otherKeyword = *keywordlists[2];\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_CSOUND_STRINGEOL)\n\t\tinitStyle = SCE_CSOUND_DEFAULT;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward())\n\t{\n\t\t// Handle line continuation generically.\n\t\tif (sc.ch == '\\\\') {\n\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_CSOUND_OPERATOR) {\n\t\t\tif (!IsCsoundOperator(static_cast<char>(sc.ch))) {\n\t\t\t    sc.SetState(SCE_CSOUND_DEFAULT);\n\t\t\t}\n\t\t}else if (sc.state == SCE_CSOUND_NUMBER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_CSOUND_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_CSOUND_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch) ) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\n\t\t\t\tif (opcode.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_CSOUND_OPCODE);\n\t\t\t\t} else if (headerStmt.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_CSOUND_HEADERSTMT);\n\t\t\t\t} else if (otherKeyword.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_CSOUND_USERKEYWORD);\n\t\t\t\t} else if (s[0] == 'p') {\n\t\t\t\t\tsc.ChangeState(SCE_CSOUND_PARAM);\n\t\t\t\t} else if (s[0] == 'a') {\n\t\t\t\t\tsc.ChangeState(SCE_CSOUND_ARATE_VAR);\n\t\t\t\t} else if (s[0] == 'k') {\n\t\t\t\t\tsc.ChangeState(SCE_CSOUND_KRATE_VAR);\n\t\t\t\t} else if (s[0] == 'i') { // covers both i-rate variables and i-statements\n\t\t\t\t\tsc.ChangeState(SCE_CSOUND_IRATE_VAR);\n\t\t\t\t} else if (s[0] == 'g') {\n\t\t\t\t\tsc.ChangeState(SCE_CSOUND_GLOBAL_VAR);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_CSOUND_DEFAULT);\n\t\t\t}\n\t\t}\n\t\telse if (sc.state == SCE_CSOUND_COMMENT ) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_CSOUND_DEFAULT);\n\t\t\t}\n\t\t}\n\t\telse if ((sc.state == SCE_CSOUND_ARATE_VAR) ||\n\t\t\t(sc.state == SCE_CSOUND_KRATE_VAR) ||\n\t\t(sc.state == SCE_CSOUND_IRATE_VAR)) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_CSOUND_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_CSOUND_DEFAULT) {\n\t\t\tif (sc.ch == ';'){\n\t\t\t\tsc.SetState(SCE_CSOUND_COMMENT);\n\t\t\t} else if (isdigit(sc.ch) || (sc.ch == '.' && isdigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_CSOUND_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_CSOUND_IDENTIFIER);\n\t\t\t} else if (IsCsoundOperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_CSOUND_OPERATOR);\n\t\t\t} else if (sc.ch == 'p') {\n\t\t\t\tsc.SetState(SCE_CSOUND_PARAM);\n\t\t\t} else if (sc.ch == 'a') {\n\t\t\t\tsc.SetState(SCE_CSOUND_ARATE_VAR);\n\t\t\t} else if (sc.ch == 'k') {\n\t\t\t\tsc.SetState(SCE_CSOUND_KRATE_VAR);\n\t\t\t} else if (sc.ch == 'i') { // covers both i-rate variables and i-statements\n\t\t\t\tsc.SetState(SCE_CSOUND_IRATE_VAR);\n\t\t\t} else if (sc.ch == 'g') {\n\t\t\t\tsc.SetState(SCE_CSOUND_GLOBAL_VAR);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldCsoundInstruments(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[],\n\t\tAccessor &styler) {\n\tSci_PositionU lengthDoc = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint stylePrev = 0;\n\tint styleNext = styler.StyleAt(startPos);\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif ((stylePrev != SCE_CSOUND_OPCODE) && (style == SCE_CSOUND_OPCODE)) {\n\t\t\tchar s[20];\n\t\t\tunsigned int j = 0;\n\t\t\twhile ((j < (sizeof(s) - 1)) && (iswordchar(styler[i + j]))) {\n\t\t\t\ts[j] = styler[i + j];\n\t\t\t\tj++;\n\t\t\t}\n\t\t\ts[j] = '\\0';\n\n\t\t\tif (strcmp(s, \"instr\") == 0)\n\t\t\t\tlevelCurrent++;\n\t\t\tif (strcmp(s, \"endin\") == 0)\n\t\t\t\tlevelCurrent--;\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t\tstylePrev = style;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\n\nstatic const char * const csoundWordListDesc[] = {\n\t\"Opcodes\",\n\t\"Header Statements\",\n\t\"User keywords\",\n\t0\n};\n\nLexerModule lmCsound(SCLEX_CSOUND, ColouriseCsoundDoc, \"csound\", FoldCsoundInstruments, csoundWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexD.cpp",
    "content": "/** @file LexD.cxx\n ** Lexer for D.\n **\n ** Copyright (c) 2006 by Waldemar Augustyn <waldemar@wdmsys.com>\n ** Converted to lexer object and added further folding features/properties by \"Udo Lechner\" <dlchnr(at)gmx(dot)net>\n **/\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/* Nested comments require keeping the value of the nesting level for every\n   position in the document.  But since scintilla always styles line by line,\n   we only need to store one value per line. The non-negative number indicates\n   nesting level at the end of the line.\n*/\n\n// Underscore, letter, digit and universal alphas from C99 Appendix D.\n\nstatic bool IsWordStart(int ch) {\n\treturn (IsASCII(ch) && (isalpha(ch) || ch == '_')) || !IsASCII(ch);\n}\n\nstatic bool IsWord(int ch) {\n\treturn (IsASCII(ch) && (isalnum(ch) || ch == '_')) || !IsASCII(ch);\n}\n\nstatic bool IsDoxygen(int ch) {\n\tif (IsASCII(ch) && islower(ch))\n\t\treturn true;\n\tif (ch == '$' || ch == '@' || ch == '\\\\' ||\n\t\tch == '&' || ch == '#' || ch == '<' || ch == '>' ||\n\t\tch == '{' || ch == '}' || ch == '[' || ch == ']')\n\t\treturn true;\n\treturn false;\n}\n\nstatic bool IsStringSuffix(int ch) {\n\treturn ch == 'c' || ch == 'w' || ch == 'd';\n}\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_D_COMMENT ||\n\t\tstyle == SCE_D_COMMENTDOC ||\n\t\tstyle == SCE_D_COMMENTDOCKEYWORD ||\n\t\tstyle == SCE_D_COMMENTDOCKEYWORDERROR;\n}\n\n// An individual named option for use in an OptionSet\n\n// Options used for LexerD\nstruct OptionsD {\n\tbool fold;\n\tbool foldSyntaxBased;\n\tbool foldComment;\n\tbool foldCommentMultiline;\n\tbool foldCommentExplicit;\n\tstd::string foldExplicitStart;\n\tstd::string foldExplicitEnd;\n\tbool foldExplicitAnywhere;\n\tbool foldCompact;\n\tint  foldAtElseInt;\n\tbool foldAtElse;\n\tOptionsD() {\n\t\tfold = false;\n\t\tfoldSyntaxBased = true;\n\t\tfoldComment = false;\n\t\tfoldCommentMultiline = true;\n\t\tfoldCommentExplicit = true;\n\t\tfoldExplicitStart = \"\";\n\t\tfoldExplicitEnd   = \"\";\n\t\tfoldExplicitAnywhere = false;\n\t\tfoldCompact = true;\n\t\tfoldAtElseInt = -1;\n\t\tfoldAtElse = false;\n\t}\n};\n\nstatic const char * const dWordLists[] = {\n\t\t\t\"Primary keywords and identifiers\",\n\t\t\t\"Secondary keywords and identifiers\",\n\t\t\t\"Documentation comment keywords\",\n\t\t\t\"Type definitions and aliases\",\n\t\t\t\"Keywords 5\",\n\t\t\t\"Keywords 6\",\n\t\t\t\"Keywords 7\",\n\t\t\t0,\n\t\t};\n\nstruct OptionSetD : public OptionSet<OptionsD> {\n\tOptionSetD() {\n\t\tDefineProperty(\"fold\", &OptionsD::fold);\n\n\t\tDefineProperty(\"fold.d.syntax.based\", &OptionsD::foldSyntaxBased,\n\t\t\t\"Set this property to 0 to disable syntax based folding.\");\n\n\t\tDefineProperty(\"fold.comment\", &OptionsD::foldComment);\n\n\t\tDefineProperty(\"fold.d.comment.multiline\", &OptionsD::foldCommentMultiline,\n\t\t\t\"Set this property to 0 to disable folding multi-line comments when fold.comment=1.\");\n\n\t\tDefineProperty(\"fold.d.comment.explicit\", &OptionsD::foldCommentExplicit,\n\t\t\t\"Set this property to 0 to disable folding explicit fold points when fold.comment=1.\");\n\n\t\tDefineProperty(\"fold.d.explicit.start\", &OptionsD::foldExplicitStart,\n\t\t\t\"The string to use for explicit fold start points, replacing the standard //{.\");\n\n\t\tDefineProperty(\"fold.d.explicit.end\", &OptionsD::foldExplicitEnd,\n\t\t\t\"The string to use for explicit fold end points, replacing the standard //}.\");\n\n\t\tDefineProperty(\"fold.d.explicit.anywhere\", &OptionsD::foldExplicitAnywhere,\n\t\t\t\"Set this property to 1 to enable explicit fold points anywhere, not just in line comments.\");\n\n\t\tDefineProperty(\"fold.compact\", &OptionsD::foldCompact);\n\n\t\tDefineProperty(\"lexer.d.fold.at.else\", &OptionsD::foldAtElseInt,\n\t\t\t\"This option enables D folding on a \\\"} else {\\\" line of an if statement.\");\n\n\t\tDefineProperty(\"fold.at.else\", &OptionsD::foldAtElse);\n\n\t\tDefineWordListSets(dWordLists);\n\t}\n};\n\nclass LexerD : public ILexer {\n\tbool caseSensitive;\n\tWordList keywords;\n\tWordList keywords2;\n\tWordList keywords3;\n\tWordList keywords4;\n\tWordList keywords5;\n\tWordList keywords6;\n\tWordList keywords7;\n\tOptionsD options;\n\tOptionSetD osD;\npublic:\n\tLexerD(bool caseSensitive_) :\n\t\tcaseSensitive(caseSensitive_) {\n\t}\n\tvirtual ~LexerD() {\n\t}\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tint SCI_METHOD Version() const {\n\t\treturn lvOriginal;\n\t}\n\tconst char * SCI_METHOD PropertyNames() {\n\t\treturn osD.PropertyNames();\n\t}\n\tint SCI_METHOD PropertyType(const char *name) {\n\t\treturn osD.PropertyType(name);\n\t}\n\tconst char * SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn osD.DescribeProperty(name);\n\t}\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tconst char * SCI_METHOD DescribeWordListSets() {\n\t\treturn osD.DescribeWordListSets();\n\t}\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\n\tstatic ILexer *LexerFactoryD() {\n\t\treturn new LexerD(true);\n\t}\n\tstatic ILexer *LexerFactoryDInsensitive() {\n\t\treturn new LexerD(false);\n\t}\n};\n\nSci_Position SCI_METHOD LexerD::PropertySet(const char *key, const char *val) {\n\tif (osD.PropertySet(&options, key, val)) {\n\t\treturn 0;\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerD::WordListSet(int n, const char *wl) {\n\tWordList *wordListN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\twordListN = &keywords;\n\t\tbreak;\n\tcase 1:\n\t\twordListN = &keywords2;\n\t\tbreak;\n\tcase 2:\n\t\twordListN = &keywords3;\n\t\tbreak;\n\tcase 3:\n\t\twordListN = &keywords4;\n\t\tbreak;\n\tcase 4:\n\t\twordListN = &keywords5;\n\t\tbreak;\n\tcase 5:\n\t\twordListN = &keywords6;\n\t\tbreak;\n\tcase 6:\n\t\twordListN = &keywords7;\n\t\tbreak;\n\t}\n\tSci_Position firstModification = -1;\n\tif (wordListN) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nvoid SCI_METHOD LexerD::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tLexAccessor styler(pAccess);\n\n\tint styleBeforeDCKeyword = SCE_D_DEFAULT;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tSci_Position curLine = styler.GetLine(startPos);\n\tint curNcLevel = curLine > 0? styler.GetLineState(curLine-1): 0;\n\tbool numFloat = false; // Float literals have '+' and '-' signs\n\tbool numHex = false;\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.atLineStart) {\n\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\tstyler.SetLineState(curLine, curNcLevel);\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_D_OPERATOR:\n\t\t\t\tsc.SetState(SCE_D_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_NUMBER:\n\t\t\t\t// We accept almost anything because of hex. and number suffixes\n\t\t\t\tif (IsASCII(sc.ch) && (isalnum(sc.ch) || sc.ch == '_')) {\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if (sc.ch == '.' && sc.chNext != '.' && !numFloat) {\n\t\t\t\t\t// Don't parse 0..2 as number.\n\t\t\t\t\tnumFloat=true;\n\t\t\t\t\tcontinue;\n\t\t\t\t} else if ( ( sc.ch == '-' || sc.ch == '+' ) && (\t\t/*sign and*/\n\t\t\t\t\t( !numHex && ( sc.chPrev == 'e' || sc.chPrev == 'E' ) ) || /*decimal or*/\n\t\t\t\t\t( sc.chPrev == 'p' || sc.chPrev == 'P' ) ) ) {\t\t/*hex*/\n\t\t\t\t\t// Parse exponent sign in float literals: 2e+10 0x2e+10\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_IDENTIFIER:\n\t\t\t\tif (!IsWord(sc.ch)) {\n\t\t\t\t\tchar s[1000];\n\t\t\t\t\tif (caseSensitive) {\n\t\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\t}\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_D_WORD);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_D_WORD2);\n\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_D_TYPEDEF);\n\t\t\t\t\t} else if (keywords5.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_D_WORD5);\n\t\t\t\t\t} else if (keywords6.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_D_WORD6);\n\t\t\t\t\t} else if (keywords7.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_D_WORD7);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_COMMENT:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_COMMENTDOC:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // JavaDoc and Doxygen support\n\t\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\t\tstyleBeforeDCKeyword = SCE_D_COMMENTDOC;\n\t\t\t\t\t\tsc.SetState(SCE_D_COMMENTDOCKEYWORD);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_COMMENTLINE:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_COMMENTLINEDOC:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_D_DEFAULT);\n\t\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // JavaDoc and Doxygen support\n\t\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\t\tstyleBeforeDCKeyword = SCE_D_COMMENTLINEDOC;\n\t\t\t\t\t\tsc.SetState(SCE_D_COMMENTDOCKEYWORD);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_COMMENTDOCKEYWORD:\n\t\t\t\tif ((styleBeforeDCKeyword == SCE_D_COMMENTDOC) && sc.Match('*', '/')) {\n\t\t\t\t\tsc.ChangeState(SCE_D_COMMENTDOCKEYWORDERROR);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t} else if (!IsDoxygen(sc.ch)) {\n\t\t\t\t\tchar s[100];\n\t\t\t\t\tif (caseSensitive) {\n\t\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\t}\n\t\t\t\t\tif (!IsASpace(sc.ch) || !keywords3.InList(s + 1)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_D_COMMENTDOCKEYWORDERROR);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(styleBeforeDCKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_COMMENTNESTED:\n\t\t\t\tif (sc.Match('+', '/')) {\n\t\t\t\t\tif (curNcLevel > 0)\n\t\t\t\t\t\tcurNcLevel -= 1;\n\t\t\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\t\t\tstyler.SetLineState(curLine, curNcLevel);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tif (curNcLevel == 0) {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.Match('/','+')) {\n\t\t\t\t\tcurNcLevel += 1;\n\t\t\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\t\t\tstyler.SetLineState(curLine, curNcLevel);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_STRING:\n\t\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\"' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\"') {\n\t\t\t\t\tif(IsStringSuffix(sc.chNext))\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_CHARACTER:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_D_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\t// Char has no suffixes\n\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_STRINGEOL:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_STRINGB:\n\t\t\t\tif (sc.ch == '`') {\n\t\t\t\t\tif(IsStringSuffix(sc.chNext))\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_D_STRINGR:\n\t\t\t\tif (sc.ch == '\"') {\n\t\t\t\t\tif(IsStringSuffix(sc.chNext))\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_D_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_D_NUMBER);\n\t\t\t\tnumFloat = sc.ch == '.';\n\t\t\t\t// Remember hex literal\n\t\t\t\tnumHex = sc.ch == '0' && ( sc.chNext == 'x' || sc.chNext == 'X' );\n\t\t\t} else if ( (sc.ch == 'r' || sc.ch == 'x' || sc.ch == 'q')\n\t\t\t\t&& sc.chNext == '\"' ) {\n\t\t\t\t// Limited support for hex and delimited strings: parse as r\"\"\n\t\t\t\tsc.SetState(SCE_D_STRINGR);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (IsWordStart(sc.ch) || sc.ch == '$') {\n\t\t\t\tsc.SetState(SCE_D_IDENTIFIER);\n\t\t\t} else if (sc.Match('/','+')) {\n\t\t\t\tcurNcLevel += 1;\n\t\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\t\tstyler.SetLineState(curLine, curNcLevel);\n\t\t\t\tsc.SetState(SCE_D_COMMENTNESTED);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tif (sc.Match(\"/**\") || sc.Match(\"/*!\")) {   // Support of Qt/Doxygen doc. style\n\t\t\t\t\tsc.SetState(SCE_D_COMMENTDOC);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_D_COMMENT);\n\t\t\t\t}\n\t\t\t\tsc.Forward();   // Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tif ((sc.Match(\"///\") && !sc.Match(\"////\")) || sc.Match(\"//!\"))\n\t\t\t\t\t// Support of Qt/Doxygen doc. style\n\t\t\t\t\tsc.SetState(SCE_D_COMMENTLINEDOC);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_D_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\"') {\n\t\t\t\tsc.SetState(SCE_D_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_D_CHARACTER);\n\t\t\t} else if (sc.ch == '`') {\n\t\t\t\tsc.SetState(SCE_D_STRINGB);\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_D_OPERATOR);\n\t\t\t\tif (sc.ch == '.' && sc.chNext == '.') sc.Forward(); // Range operator\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\n\nvoid SCI_METHOD LexerD::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\n\tif (!options.fold)\n\t\treturn;\n\n\tLexAccessor styler(pAccess);\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tbool foldAtElse = options.foldAtElseInt >= 0 ? options.foldAtElseInt != 0 : options.foldAtElse;\n\tconst bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty();\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style)) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (options.foldComment && options.foldCommentExplicit && ((style == SCE_D_COMMENTLINE) || options.foldExplicitAnywhere)) {\n\t\t\tif (userDefinedFoldMarkers) {\n\t\t\t\tif (styler.Match(i, options.foldExplicitStart.c_str())) {\n \t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (styler.Match(i, options.foldExplicitEnd.c_str())) {\n \t\t\t\t\tlevelNext--;\n \t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t}\n\t\t\t\t}\n \t\t\t}\n \t\t}\n\t\tif (options.foldSyntaxBased && (style == SCE_D_OPERATOR)) {\n\t\t\tif (ch == '{') {\n\t\t\t\t// Measure the minimum before a '{' to allow\n\t\t\t\t// folding on \"} else {\"\n\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL || (i == endPos-1)) {\n\t\t\tif (options.foldComment && options.foldCommentMultiline) {  // Handle nested comments\n\t\t\t\tint nc;\n\t\t\t\tnc =  styler.GetLineState(lineCurrent);\n\t\t\t\tnc -= lineCurrent>0? styler.GetLineState(lineCurrent-1): 0;\n\t\t\t\tlevelNext += nc;\n\t\t\t}\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif (options.foldSyntaxBased && foldAtElse) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && options.foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\t}\n}\n\nLexerModule lmD(SCLEX_D, LexerD::LexerFactoryD, \"d\", dWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexDMAP.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexDMAP.cxx\n ** Lexer for MSC Nastran DMAP.\n ** Written by Mark Robinson, based on the Fortran lexer by Chuan-jian Shen, Last changed Aug. 2013\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n/***************************************/\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n/***************************************/\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n/***************************************/\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/***********************************************/\nstatic inline bool IsAWordChar(const int ch) {\n    return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '%');\n}\n/**********************************************/\nstatic inline bool IsAWordStart(const int ch) {\n    return (ch < 0x80) && (isalnum(ch));\n}\n/***************************************/\nstatic void ColouriseDMAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n            WordList *keywordlists[], Accessor &styler) {\n    WordList &keywords = *keywordlists[0];\n    WordList &keywords2 = *keywordlists[1];\n    WordList &keywords3 = *keywordlists[2];\n    /***************************************/\n    Sci_Position posLineStart = 0, numNonBlank = 0;\n    Sci_Position endPos = startPos + length;\n    /***************************************/\n    // backtrack to the nearest keyword\n    while ((startPos > 1) && (styler.StyleAt(startPos) != SCE_DMAP_WORD)) {\n        startPos--;\n    }\n    startPos = styler.LineStart(styler.GetLine(startPos));\n    initStyle = styler.StyleAt(startPos - 1);\n    StyleContext sc(startPos, endPos-startPos, initStyle, styler);\n    /***************************************/\n    for (; sc.More(); sc.Forward()) {\n        // remember the start position of the line\n        if (sc.atLineStart) {\n            posLineStart = sc.currentPos;\n            numNonBlank = 0;\n            sc.SetState(SCE_DMAP_DEFAULT);\n        }\n        if (!IsASpaceOrTab(sc.ch)) numNonBlank ++;\n        /***********************************************/\n        // Handle data appearing after column 72; it is ignored\n        Sci_Position toLineStart = sc.currentPos - posLineStart;\n        if (toLineStart >= 72 || sc.ch == '$') {\n            sc.SetState(SCE_DMAP_COMMENT);\n            while (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end\n            continue;\n        }\n        /***************************************/\n        // Determine if the current state should terminate.\n        if (sc.state == SCE_DMAP_OPERATOR) {\n            sc.SetState(SCE_DMAP_DEFAULT);\n        } else if (sc.state == SCE_DMAP_NUMBER) {\n            if (!(IsAWordChar(sc.ch) || sc.ch=='\\'' || sc.ch=='\\\"' || sc.ch=='.')) {\n                sc.SetState(SCE_DMAP_DEFAULT);\n            }\n        } else if (sc.state == SCE_DMAP_IDENTIFIER) {\n            if (!IsAWordChar(sc.ch) || (sc.ch == '%')) {\n                char s[100];\n                sc.GetCurrentLowered(s, sizeof(s));\n                if (keywords.InList(s)) {\n                    sc.ChangeState(SCE_DMAP_WORD);\n                } else if (keywords2.InList(s)) {\n                    sc.ChangeState(SCE_DMAP_WORD2);\n                } else if (keywords3.InList(s)) {\n                    sc.ChangeState(SCE_DMAP_WORD3);\n                }\n                sc.SetState(SCE_DMAP_DEFAULT);\n            }\n        } else if (sc.state == SCE_DMAP_COMMENT) {\n            if (sc.ch == '\\r' || sc.ch == '\\n') {\n                sc.SetState(SCE_DMAP_DEFAULT);\n            }\n        } else if (sc.state == SCE_DMAP_STRING1) {\n            if (sc.ch == '\\'') {\n                if (sc.chNext == '\\'') {\n                    sc.Forward();\n                } else {\n                    sc.ForwardSetState(SCE_DMAP_DEFAULT);\n                }\n            } else if (sc.atLineEnd) {\n                sc.ChangeState(SCE_DMAP_STRINGEOL);\n                sc.ForwardSetState(SCE_DMAP_DEFAULT);\n            }\n        } else if (sc.state == SCE_DMAP_STRING2) {\n            if (sc.atLineEnd) {\n                sc.ChangeState(SCE_DMAP_STRINGEOL);\n                sc.ForwardSetState(SCE_DMAP_DEFAULT);\n            } else if (sc.ch == '\\\"') {\n                if (sc.chNext == '\\\"') {\n                    sc.Forward();\n                } else {\n                    sc.ForwardSetState(SCE_DMAP_DEFAULT);\n                }\n            }\n        }\n        /***************************************/\n        // Determine if a new state should be entered.\n        if (sc.state == SCE_DMAP_DEFAULT) {\n            if (sc.ch == '$') {\n                sc.SetState(SCE_DMAP_COMMENT);\n            } else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)) || (sc.ch == '-' && IsADigit(sc.chNext))) {\n                sc.SetState(SCE_F_NUMBER);\n            } else if (IsAWordStart(sc.ch)) {\n                sc.SetState(SCE_DMAP_IDENTIFIER);\n            } else if (sc.ch == '\\\"') {\n                sc.SetState(SCE_DMAP_STRING2);\n            } else if (sc.ch == '\\'') {\n                sc.SetState(SCE_DMAP_STRING1);\n            } else if (isoperator(static_cast<char>(sc.ch))) {\n                sc.SetState(SCE_DMAP_OPERATOR);\n            }\n        }\n    }\n    sc.Complete();\n}\n/***************************************/\n// To determine the folding level depending on keywords\nstatic int classifyFoldPointDMAP(const char* s, const char* prevWord) {\n    int lev = 0;\n    if ((strcmp(prevWord, \"else\") == 0 && strcmp(s, \"if\") == 0) || strcmp(s, \"enddo\") == 0 || strcmp(s, \"endif\") == 0) {\n        lev = -1;\n    } else if ((strcmp(prevWord, \"do\") == 0 && strcmp(s, \"while\") == 0) || strcmp(s, \"then\") == 0) {\n        lev = 1;\n    }\n    return lev;\n}\n// Folding the code\nstatic void FoldDMAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *[], Accessor &styler) {\n    //\n    // bool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n    // Do not know how to fold the comment at the moment.\n    //\n    bool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n    Sci_PositionU endPos = startPos + length;\n    int visibleChars = 0;\n    Sci_Position lineCurrent = styler.GetLine(startPos);\n    int levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n    int levelCurrent = levelPrev;\n    char chNext = styler[startPos];\n    int styleNext = styler.StyleAt(startPos);\n    int style = initStyle;\n    /***************************************/\n    Sci_Position lastStart = 0;\n    char prevWord[32] = \"\";\n    /***************************************/\n    for (Sci_PositionU i = startPos; i < endPos; i++) {\n        char ch = chNext;\n        chNext = styler.SafeGetCharAt(i + 1);\n        int stylePrev = style;\n        style = styleNext;\n        styleNext = styler.StyleAt(i + 1);\n        bool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n        //\n        if ((stylePrev == SCE_DMAP_DEFAULT || stylePrev == SCE_DMAP_OPERATOR || stylePrev == SCE_DMAP_COMMENT) && (style == SCE_DMAP_WORD)) {\n            // Store last word and label start point.\n            lastStart = i;\n        }\n        /***************************************/\n        if (style == SCE_DMAP_WORD) {\n            if(iswordchar(ch) && !iswordchar(chNext)) {\n                char s[32];\n                Sci_PositionU k;\n                for(k=0; (k<31 ) && (k<i-lastStart+1 ); k++) {\n                    s[k] = static_cast<char>(tolower(styler[lastStart+k]));\n                }\n                s[k] = '\\0';\n                levelCurrent += classifyFoldPointDMAP(s, prevWord);\n                strcpy(prevWord, s);\n            }\n        }\n        if (atEOL) {\n            int lev = levelPrev;\n            if (visibleChars == 0 && foldCompact)\n                lev |= SC_FOLDLEVELWHITEFLAG;\n            if ((levelCurrent > levelPrev) && (visibleChars > 0))\n                lev |= SC_FOLDLEVELHEADERFLAG;\n            if (lev != styler.LevelAt(lineCurrent)) {\n                styler.SetLevel(lineCurrent, lev);\n            }\n            lineCurrent++;\n            levelPrev = levelCurrent;\n            visibleChars = 0;\n            strcpy(prevWord, \"\");\n        }\n        /***************************************/\n        if (!isspacechar(ch)) visibleChars++;\n    }\n    /***************************************/\n    // Fill in the real level of the next line, keeping the current flags as they will be filled in later\n    int flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n    styler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n/***************************************/\nstatic const char * const DMAPWordLists[] = {\n    \"Primary keywords and identifiers\",\n    \"Intrinsic functions\",\n    \"Extended and user defined functions\",\n    0,\n};\n/***************************************/\nLexerModule lmDMAP(SCLEX_DMAP, ColouriseDMAPDoc, \"DMAP\", FoldDMAPDoc, DMAPWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexDMIS.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexDMIS.cxx\n ** Lexer for DMIS.\n  **/\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// Copyright 2013-2014 by Andreas Tscharner <andy@vis.ethz.ch>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n\n#include <cstdlib>\n#include <cassert>\n#include <cstring>\n#include <cctype>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\nstatic const char *const DMISWordListDesc[] = {\n\t\"DMIS Major Words\",\n\t\"DMIS Minor Words\",\n\t\"Unsupported DMIS Major Words\",\n\t\"Unsupported DMIS Minor Words\",\n\t\"Keywords for code folding start\",\n\t\"Corresponding keywords for code folding end\",\n\t0\n};\n\n\nclass LexerDMIS : public ILexer\n{\n\tprivate:\n\t\tchar *m_wordListSets;\n\t\tWordList m_majorWords;\n\t\tWordList m_minorWords;\n\t\tWordList m_unsupportedMajor;\n\t\tWordList m_unsupportedMinor;\n\t\tWordList m_codeFoldingStart;\n\t\tWordList m_codeFoldingEnd;\n\n\t\tchar * SCI_METHOD UpperCase(char *item);\n\t\tvoid SCI_METHOD InitWordListSets(void);\n\n\tpublic:\n\t\tLexerDMIS(void);\n\t\tvirtual ~LexerDMIS(void);\n\n\t\tint SCI_METHOD Version() const {\n\t\t\treturn lvOriginal;\n\t\t}\n\n\t\tvoid SCI_METHOD Release() {\n\t\t\tdelete this;\n\t\t}\n\n\t\tconst char * SCI_METHOD PropertyNames() {\n\t\t\treturn NULL;\n\t\t}\n\n\t\tint SCI_METHOD PropertyType(const char *) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tconst char * SCI_METHOD DescribeProperty(const char *) {\n\t\t\treturn NULL;\n\t\t}\n\n\t\tSci_Position SCI_METHOD PropertySet(const char *, const char *) {\n\t\t\treturn -1;\n\t\t}\n\n\t\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\n\t\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\t\treturn NULL;\n\t\t}\n\n\t\tstatic ILexer *LexerFactoryDMIS() {\n\t\t\treturn new LexerDMIS;\n\t\t}\n\n\t\tconst char * SCI_METHOD DescribeWordListSets();\n\t\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n\t\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n};\n\n\nchar * SCI_METHOD LexerDMIS::UpperCase(char *item)\n{\n\tchar *itemStart;\n\n\n\titemStart = item;\n\twhile (item && *item) {\n\t\t*item = toupper(*item);\n\t\titem++;\n\t};\n\treturn itemStart;\n}\n\nvoid SCI_METHOD LexerDMIS::InitWordListSets(void)\n{\n\tsize_t totalLen = 0;\n\n\n\tfor (int i=0; DMISWordListDesc[i]; i++) {\n\t\ttotalLen += strlen(DMISWordListDesc[i]);\n\t\ttotalLen++;\n\t};\n\n\ttotalLen++;\n\tthis->m_wordListSets = new char[totalLen];\n\tmemset(this->m_wordListSets, 0, totalLen);\n\n\tfor (int i=0; DMISWordListDesc[i]; i++) {\n\t\tstrcat(this->m_wordListSets, DMISWordListDesc[i]);\n\t\tstrcat(this->m_wordListSets, \"\\n\");\n\t};\n}\n\n\nLexerDMIS::LexerDMIS(void) {\n\tthis->InitWordListSets();\n\n\tthis->m_majorWords.Clear();\n\tthis->m_minorWords.Clear();\n\tthis->m_unsupportedMajor.Clear();\n\tthis->m_unsupportedMinor.Clear();\n\tthis->m_codeFoldingStart.Clear();\n\tthis->m_codeFoldingEnd.Clear();\n}\n\nLexerDMIS::~LexerDMIS(void) {\n\tdelete[] this->m_wordListSets;\n}\n\nSci_Position SCI_METHOD LexerDMIS::WordListSet(int n, const char *wl)\n{\n\tswitch (n) {\n\t\tcase 0:\n\t\t\tthis->m_majorWords.Clear();\n\t\t\tthis->m_majorWords.Set(wl);\n\t\t\tbreak;\n\t\tcase 1:\n\t\t\tthis->m_minorWords.Clear();\n\t\t\tthis->m_minorWords.Set(wl);\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tthis->m_unsupportedMajor.Clear();\n\t\t\tthis->m_unsupportedMajor.Set(wl);\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tthis->m_unsupportedMinor.Clear();\n\t\t\tthis->m_unsupportedMinor.Set(wl);\n\t\t\tbreak;\n\t\tcase 4:\n\t\t\tthis->m_codeFoldingStart.Clear();\n\t\t\tthis->m_codeFoldingStart.Set(wl);\n\t\t\tbreak;\n\t\tcase 5:\n\t\t\tthis->m_codeFoldingEnd.Clear();\n\t\t\tthis->m_codeFoldingEnd.Set(wl);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn -1;\n\t\t\tbreak;\n\t}\n\n\treturn 0;\n}\n\nconst char * SCI_METHOD LexerDMIS::DescribeWordListSets()\n{\n\treturn this->m_wordListSets;\n}\n\nvoid SCI_METHOD LexerDMIS::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess)\n{\n\tconst Sci_PositionU MAX_STR_LEN = 100;\n\n\tLexAccessor styler(pAccess);\n\tStyleContext scCTX(startPos, lengthDoc, initStyle, styler);\n\tCharacterSet setDMISNumber(CharacterSet::setDigits, \".-+eE\");\n\tCharacterSet setDMISWordStart(CharacterSet::setAlpha, \"-234\", 0x80, true);\n\tCharacterSet setDMISWord(CharacterSet::setAlpha);\n\n\n\tbool isIFLine = false;\n\n\tfor (; scCTX.More(); scCTX.Forward()) {\n\t\tif (scCTX.atLineEnd) {\n\t\t\tisIFLine = false;\n\t\t};\n\n\t\tswitch (scCTX.state) {\n\t\t\tcase SCE_DMIS_DEFAULT:\n\t\t\t\tif (scCTX.Match('$', '$')) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_COMMENT);\n\t\t\t\t\tscCTX.Forward();\n\t\t\t\t};\n\t\t\t\tif (scCTX.Match('\\'')) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_STRING);\n\t\t\t\t};\n\t\t\t\tif (IsADigit(scCTX.ch) || ((scCTX.Match('-') || scCTX.Match('+')) && IsADigit(scCTX.chNext))) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_NUMBER);\n\t\t\t\t\tbreak;\n\t\t\t\t};\n\t\t\t\tif (setDMISWordStart.Contains(scCTX.ch)) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_KEYWORD);\n\t\t\t\t};\n\t\t\t\tif (scCTX.Match('(') && (!isIFLine)) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_LABEL);\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_DMIS_COMMENT:\n\t\t\t\tif (scCTX.atLineEnd) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_DEFAULT);\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_DMIS_STRING:\n\t\t\t\tif (scCTX.Match('\\'')) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_DEFAULT);\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_DMIS_NUMBER:\n\t\t\t\tif (!setDMISNumber.Contains(scCTX.ch)) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_DEFAULT);\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_DMIS_KEYWORD:\n\t\t\t\tif (!setDMISWord.Contains(scCTX.ch)) {\n\t\t\t\t\tchar tmpStr[MAX_STR_LEN];\n\t\t\t\t\tmemset(tmpStr, 0, MAX_STR_LEN*sizeof(char));\n\t\t\t\t\tscCTX.GetCurrent(tmpStr, (MAX_STR_LEN-1));\n\t\t\t\t\tstrncpy(tmpStr, this->UpperCase(tmpStr), (MAX_STR_LEN-1));\n\n\t\t\t\t\tif (this->m_minorWords.InList(tmpStr)) {\n\t\t\t\t\t\tscCTX.ChangeState(SCE_DMIS_MINORWORD);\n\t\t\t\t\t};\n\t\t\t\t\tif (this->m_majorWords.InList(tmpStr)) {\n\t\t\t\t\t\tisIFLine = (strcmp(tmpStr, \"IF\") == 0);\n\t\t\t\t\t\tscCTX.ChangeState(SCE_DMIS_MAJORWORD);\n\t\t\t\t\t};\n\t\t\t\t\tif (this->m_unsupportedMajor.InList(tmpStr)) {\n\t\t\t\t\t\tscCTX.ChangeState(SCE_DMIS_UNSUPPORTED_MAJOR);\n\t\t\t\t\t};\n\t\t\t\t\tif (this->m_unsupportedMinor.InList(tmpStr)) {\n\t\t\t\t\t\tscCTX.ChangeState(SCE_DMIS_UNSUPPORTED_MINOR);\n\t\t\t\t\t};\n\n\t\t\t\t\tif (scCTX.Match('(') && (!isIFLine)) {\n\t\t\t\t\t\tscCTX.SetState(SCE_DMIS_LABEL);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tscCTX.SetState(SCE_DMIS_DEFAULT);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_DMIS_LABEL:\n\t\t\t\tif (scCTX.Match(')')) {\n\t\t\t\t\tscCTX.SetState(SCE_DMIS_DEFAULT);\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t};\n\t};\n\tscCTX.Complete();\n}\n\nvoid SCI_METHOD LexerDMIS::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess)\n{\n\tconst int MAX_STR_LEN = 100;\n\n\tLexAccessor styler(pAccess);\n\tSci_PositionU endPos = startPos + lengthDoc;\n\tchar chNext = styler[startPos];\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tint strPos = 0;\n\tbool foldWordPossible = false;\n\tCharacterSet setDMISFoldWord(CharacterSet::setAlpha);\n\tchar *tmpStr;\n\n\n\ttmpStr = new char[MAX_STR_LEN];\n\tmemset(tmpStr, 0, MAX_STR_LEN*sizeof(char));\n\n\tfor (Sci_PositionU i=startPos; i<endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i+1);\n\n\t\tbool atEOL = ((ch == '\\r' && chNext != '\\n') || (ch == '\\n'));\n\n\t\tif (strPos >= (MAX_STR_LEN-1)) {\n\t\t\tstrPos = MAX_STR_LEN-1;\n\t\t};\n\n\t\tint style = styler.StyleAt(i);\n\t\tbool noFoldPos = ((style == SCE_DMIS_COMMENT) || (style == SCE_DMIS_STRING));\n\n\t\tif (foldWordPossible) {\n\t\t\tif (setDMISFoldWord.Contains(ch)) {\n\t\t\t\ttmpStr[strPos++] = ch;\n\t\t\t} else {\n\t\t\t\ttmpStr = this->UpperCase(tmpStr);\n\t\t\t\tif (this->m_codeFoldingStart.InList(tmpStr) && (!noFoldPos)) {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t};\n\t\t\t\tif (this->m_codeFoldingEnd.InList(tmpStr) && (!noFoldPos)) {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t};\n\t\t\t\tmemset(tmpStr, 0, MAX_STR_LEN*sizeof(char));\n\t\t\t\tstrPos = 0;\n\t\t\t\tfoldWordPossible = false;\n\t\t\t};\n\t\t} else {\n\t\t\tif (setDMISFoldWord.Contains(ch)) {\n\t\t\t\ttmpStr[strPos++] = ch;\n\t\t\t\tfoldWordPossible = true;\n\t\t\t};\n\t\t};\n\n\t\tif (atEOL || (i == (endPos-1))) {\n\t\t\tint lev = levelPrev;\n\n\t\t\tif (levelCurrent > levelPrev) {\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t};\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t};\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t};\n\t};\n\tdelete[] tmpStr;\n}\n\n\nLexerModule lmDMIS(SCLEX_DMIS, LexerDMIS::LexerFactoryDMIS, \"DMIS\", DMISWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexDiff.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexDiff.cxx\n ** Lexer for diff results.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool AtEOL(Accessor &styler, Sci_PositionU i) {\n\treturn (styler[i] == '\\n') ||\n\t       ((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n'));\n}\n\n#define DIFF_BUFFER_START_SIZE 16\n// Note that ColouriseDiffLine analyzes only the first DIFF_BUFFER_START_SIZE\n// characters of each line to classify the line.\n\nstatic void ColouriseDiffLine(char *lineBuffer, Sci_Position endLine, Accessor &styler) {\n\t// It is needed to remember the current state to recognize starting\n\t// comment lines before the first \"diff \" or \"--- \". If a real\n\t// difference starts then each line starting with ' ' is a whitespace\n\t// otherwise it is considered a comment (Only in..., Binary file...)\n\tif (0 == strncmp(lineBuffer, \"diff \", 5)) {\n\t\tstyler.ColourTo(endLine, SCE_DIFF_COMMAND);\n\t} else if (0 == strncmp(lineBuffer, \"Index: \", 7)) {  // For subversion's diff\n\t\tstyler.ColourTo(endLine, SCE_DIFF_COMMAND);\n\t} else if (0 == strncmp(lineBuffer, \"---\", 3) && lineBuffer[3] != '-') {\n\t\t// In a context diff, --- appears in both the header and the position markers\n\t\tif (lineBuffer[3] == ' ' && atoi(lineBuffer + 4) && !strchr(lineBuffer, '/'))\n\t\t\tstyler.ColourTo(endLine, SCE_DIFF_POSITION);\n\t\telse if (lineBuffer[3] == '\\r' || lineBuffer[3] == '\\n')\n\t\t\tstyler.ColourTo(endLine, SCE_DIFF_POSITION);\n\t\telse\n\t\t\tstyler.ColourTo(endLine, SCE_DIFF_HEADER);\n\t} else if (0 == strncmp(lineBuffer, \"+++ \", 4)) {\n\t\t// I don't know of any diff where \"+++ \" is a position marker, but for\n\t\t// consistency, do the same as with \"--- \" and \"*** \".\n\t\tif (atoi(lineBuffer+4) && !strchr(lineBuffer, '/'))\n\t\t\tstyler.ColourTo(endLine, SCE_DIFF_POSITION);\n\t\telse\n\t\t\tstyler.ColourTo(endLine, SCE_DIFF_HEADER);\n\t} else if (0 == strncmp(lineBuffer, \"====\", 4)) {  // For p4's diff\n\t\tstyler.ColourTo(endLine, SCE_DIFF_HEADER);\n\t} else if (0 == strncmp(lineBuffer, \"***\", 3)) {\n\t\t// In a context diff, *** appears in both the header and the position markers.\n\t\t// Also ******** is a chunk header, but here it's treated as part of the\n\t\t// position marker since there is no separate style for a chunk header.\n\t\tif (lineBuffer[3] == ' ' && atoi(lineBuffer+4) && !strchr(lineBuffer, '/'))\n\t\t\tstyler.ColourTo(endLine, SCE_DIFF_POSITION);\n\t\telse if (lineBuffer[3] == '*')\n\t\t\tstyler.ColourTo(endLine, SCE_DIFF_POSITION);\n\t\telse\n\t\t\tstyler.ColourTo(endLine, SCE_DIFF_HEADER);\n\t} else if (0 == strncmp(lineBuffer, \"? \", 2)) {    // For difflib\n\t\tstyler.ColourTo(endLine, SCE_DIFF_HEADER);\n\t} else if (lineBuffer[0] == '@') {\n\t\tstyler.ColourTo(endLine, SCE_DIFF_POSITION);\n\t} else if (lineBuffer[0] >= '0' && lineBuffer[0] <= '9') {\n\t\tstyler.ColourTo(endLine, SCE_DIFF_POSITION);\n\t} else if (lineBuffer[0] == '-' || lineBuffer[0] == '<') {\n\t\tstyler.ColourTo(endLine, SCE_DIFF_DELETED);\n\t} else if (lineBuffer[0] == '+' || lineBuffer[0] == '>') {\n\t\tstyler.ColourTo(endLine, SCE_DIFF_ADDED);\n\t} else if (lineBuffer[0] == '!') {\n\t\tstyler.ColourTo(endLine, SCE_DIFF_CHANGED);\n\t} else if (lineBuffer[0] != ' ') {\n\t\tstyler.ColourTo(endLine, SCE_DIFF_COMMENT);\n\t} else {\n\t\tstyler.ColourTo(endLine, SCE_DIFF_DEFAULT);\n\t}\n}\n\nstatic void ColouriseDiffDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tchar lineBuffer[DIFF_BUFFER_START_SIZE] = \"\";\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tSci_PositionU linePos = 0;\n\tfor (Sci_PositionU i = startPos; i < startPos + length; i++) {\n\t\tif (AtEOL(styler, i)) {\n\t\t\tif (linePos < DIFF_BUFFER_START_SIZE) {\n\t\t\t\tlineBuffer[linePos] = 0;\n\t\t\t}\n\t\t\tColouriseDiffLine(lineBuffer, i, styler);\n\t\t\tlinePos = 0;\n\t\t} else if (linePos < DIFF_BUFFER_START_SIZE - 1) {\n\t\t\tlineBuffer[linePos++] = styler[i];\n\t\t} else if (linePos == DIFF_BUFFER_START_SIZE - 1) {\n\t\t\tlineBuffer[linePos++] = 0;\n\t\t}\n\t}\n\tif (linePos > 0) {\t// Last line does not have ending characters\n\t\tif (linePos < DIFF_BUFFER_START_SIZE) {\n\t\t\tlineBuffer[linePos] = 0;\n\t\t}\n\t\tColouriseDiffLine(lineBuffer, startPos + length - 1, styler);\n\t}\n}\n\nstatic void FoldDiffDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tSci_Position curLine = styler.GetLine(startPos);\n\tSci_Position curLineStart = styler.LineStart(curLine);\n\tint prevLevel = curLine > 0 ? styler.LevelAt(curLine - 1) : SC_FOLDLEVELBASE;\n\tint nextLevel;\n\n\tdo {\n\t\tint lineType = styler.StyleAt(curLineStart);\n\t\tif (lineType == SCE_DIFF_COMMAND)\n\t\t\tnextLevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\telse if (lineType == SCE_DIFF_HEADER)\n\t\t\tnextLevel = (SC_FOLDLEVELBASE + 1) | SC_FOLDLEVELHEADERFLAG;\n\t\telse if (lineType == SCE_DIFF_POSITION && styler[curLineStart] != '-')\n\t\t\tnextLevel = (SC_FOLDLEVELBASE + 2) | SC_FOLDLEVELHEADERFLAG;\n\t\telse if (prevLevel & SC_FOLDLEVELHEADERFLAG)\n\t\t\tnextLevel = (prevLevel & SC_FOLDLEVELNUMBERMASK) + 1;\n\t\telse\n\t\t\tnextLevel = prevLevel;\n\n\t\tif ((nextLevel & SC_FOLDLEVELHEADERFLAG) && (nextLevel == prevLevel))\n\t\t\tstyler.SetLevel(curLine-1, prevLevel & ~SC_FOLDLEVELHEADERFLAG);\n\n\t\tstyler.SetLevel(curLine, nextLevel);\n\t\tprevLevel = nextLevel;\n\n\t\tcurLineStart = styler.LineStart(++curLine);\n\t} while (static_cast<Sci_Position>(startPos)+length > curLineStart);\n}\n\nstatic const char *const emptyWordListDesc[] = {\n\t0\n};\n\nLexerModule lmDiff(SCLEX_DIFF, ColouriseDiffDoc, \"diff\", FoldDiffDoc, emptyWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexECL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexECL.cxx\n ** Lexer for ECL.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#ifdef _MSC_VER\n#pragma warning(disable: 4786)\n#endif\n#ifdef __BORLANDC__\n// Borland C++ displays warnings in vector header without this\n#pragma option -w-ccc -w-rch\n#endif\n\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#define SET_LOWER \"abcdefghijklmnopqrstuvwxyz\"\n#define SET_UPPER \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\"\n#define SET_DIGITS \"0123456789\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic bool IsSpaceEquiv(int state) {\n\tswitch (state) {\n\tcase SCE_ECL_DEFAULT:\n\tcase SCE_ECL_COMMENT:\n\tcase SCE_ECL_COMMENTLINE:\n\tcase SCE_ECL_COMMENTLINEDOC:\n\tcase SCE_ECL_COMMENTDOCKEYWORD:\n\tcase SCE_ECL_COMMENTDOCKEYWORDERROR:\n\tcase SCE_ECL_COMMENTDOC:\n\t\treturn true;\n\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nstatic void ColouriseEclDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler) {\n\tWordList &keywords0 = *keywordlists[0];\n\tWordList &keywords1 = *keywordlists[1];\n\tWordList &keywords2 = *keywordlists[2];\n\tWordList &keywords3 = *keywordlists[3]; //Value Types\n\tWordList &keywords4 = *keywordlists[4];\n\tWordList &keywords5 = *keywordlists[5];\n\tWordList &keywords6 = *keywordlists[6];\t//Javadoc Tags\n\tWordList cplusplus;\n\tcplusplus.Set(\"beginc endc\");\n\n\tbool stylingWithinPreprocessor = false;\n\n\tCharacterSet setOKBeforeRE(CharacterSet::setNone, \"(=,\");\n\tCharacterSet setDoxygen(CharacterSet::setLower, \"$@\\\\&<>#{}[]\");\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_\", 0x80, true);\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"._\", 0x80, true);\n\tCharacterSet setQualified(CharacterSet::setNone, \"uUxX\");\n\n\tint chPrevNonWhite = ' ';\n\tint visibleChars = 0;\n\tbool lastWordWasUUID = false;\n\tint styleBeforeDCKeyword = SCE_ECL_DEFAULT;\n\tbool continuationLine = false;\n\n\tif (initStyle == SCE_ECL_PREPROCESSOR) {\n\t\t// Set continuationLine if last character of previous line is '\\'\n\t\tSci_Position lineCurrent = styler.GetLine(startPos);\n\t\tif (lineCurrent > 0) {\n\t\t\tint chBack = styler.SafeGetCharAt(startPos-1, 0);\n\t\t\tint chBack2 = styler.SafeGetCharAt(startPos-2, 0);\n\t\t\tint lineEndChar = '!';\n\t\t\tif (chBack2 == '\\r' && chBack == '\\n') {\n\t\t\t\tlineEndChar = styler.SafeGetCharAt(startPos-3, 0);\n\t\t\t} else if (chBack == '\\n' || chBack == '\\r') {\n\t\t\t\tlineEndChar = chBack2;\n\t\t\t}\n\t\t\tcontinuationLine = lineEndChar == '\\\\';\n\t\t}\n\t}\n\n\t// look back to set chPrevNonWhite properly for better regex colouring\n\tif (startPos > 0) {\n\t\tSci_Position back = startPos;\n\t\twhile (--back && IsSpaceEquiv(styler.StyleAt(back)))\n\t\t\t;\n\t\tif (styler.StyleAt(back) == SCE_ECL_OPERATOR) {\n\t\t\tchPrevNonWhite = styler.SafeGetCharAt(back);\n\t\t}\n\t}\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\tif (sc.atLineStart) {\n\t\t\tif (sc.state == SCE_ECL_STRING) {\n\t\t\t\t// Prevent SCE_ECL_STRINGEOL from leaking back to previous line which\n\t\t\t\t// ends with a line continuation by locking in the state upto this position.\n\t\t\t\tsc.SetState(SCE_ECL_STRING);\n\t\t\t}\n\t\t\t// Reset states to begining of colourise so no surprises\n\t\t\t// if different sets of lines lexed.\n\t\t\tvisibleChars = 0;\n\t\t\tlastWordWasUUID = false;\n\t\t}\n\n\t\t// Handle line continuation generically.\n\t\tif (sc.ch == '\\\\') {\n\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinuationLine = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_ECL_ADDED:\n\t\t\tcase SCE_ECL_DELETED:\n\t\t\tcase SCE_ECL_CHANGED:\n\t\t\tcase SCE_ECL_MOVED:\n\t\t\tif (sc.atLineStart)\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_OPERATOR:\n\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_NUMBER:\n\t\t\t\t// We accept almost anything because of hex. and number suffixes\n\t\t\t\tif (!setWord.Contains(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_IDENTIFIER:\n\t\t\t\tif (!setWord.Contains(sc.ch) || (sc.ch == '.')) {\n\t\t\t\t\tchar s[1000];\n\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\tif (keywords0.InList(s)) {\n\t\t\t\t\t\tlastWordWasUUID = strcmp(s, \"uuid\") == 0;\n\t\t\t\t\t\tsc.ChangeState(SCE_ECL_WORD0);\n\t\t\t\t\t} else if (keywords1.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ECL_WORD1);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ECL_WORD2);\n\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ECL_WORD4);\n\t\t\t\t\t} else if (keywords5.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ECL_WORD5);\n\t\t\t\t\t}\n\t\t\t\t\telse\t//Data types are of from KEYWORD##\n\t\t\t\t\t{\n\t\t\t\t\t\tint i = static_cast<int>(strlen(s)) - 1;\n\t\t\t\t\t\twhile(i >= 0 && (isdigit(s[i]) || s[i] == '_'))\n\t\t\t\t\t\t\t--i;\n\n\t\t\t\t\t\tchar s2[1000];\n\t\t\t\t\t\tstrncpy(s2, s, i + 1);\n\t\t\t\t\t\ts2[i + 1] = 0;\n\t\t\t\t\t\tif (keywords3.InList(s2)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_ECL_WORD3);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_PREPROCESSOR:\n\t\t\t\tif (sc.atLineStart && !continuationLine) {\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t} else if (stylingWithinPreprocessor) {\n\t\t\t\t\tif (IsASpace(sc.ch)) {\n\t\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (sc.Match('/', '*') || sc.Match('/', '/')) {\n\t\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_COMMENT:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_COMMENTDOC:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_ECL_DEFAULT);\n\t\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // JavaDoc and Doxygen support\n\t\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\t\tstyleBeforeDCKeyword = SCE_ECL_COMMENTDOC;\n\t\t\t\t\t\tsc.SetState(SCE_ECL_COMMENTDOCKEYWORD);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_COMMENTLINE:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_COMMENTLINEDOC:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // JavaDoc and Doxygen support\n\t\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\t\tstyleBeforeDCKeyword = SCE_ECL_COMMENTLINEDOC;\n\t\t\t\t\t\tsc.SetState(SCE_ECL_COMMENTDOCKEYWORD);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_COMMENTDOCKEYWORD:\n\t\t\t\tif ((styleBeforeDCKeyword == SCE_ECL_COMMENTDOC) && sc.Match('*', '/')) {\n\t\t\t\t\tsc.ChangeState(SCE_ECL_COMMENTDOCKEYWORDERROR);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_ECL_DEFAULT);\n\t\t\t\t} else if (!setDoxygen.Contains(sc.ch)) {\n\t\t\t\t\tchar s[1000];\n\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\tif (!IsASpace(sc.ch) || !keywords6.InList(s+1)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ECL_COMMENTDOCKEYWORDERROR);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(styleBeforeDCKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_STRING:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_ECL_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tsc.ForwardSetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_CHARACTER:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_ECL_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tsc.ForwardSetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_REGEX:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t} else if (sc.ch == '/') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\twhile ((sc.ch < 0x80) && islower(sc.ch))\n\t\t\t\t\t\tsc.Forward();    // gobble regex flags\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\t// Gobble up the quoted character\n\t\t\t\t\tif (sc.chNext == '\\\\' || sc.chNext == '/') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_STRINGEOL:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_VERBATIM:\n\t\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\t\tif (sc.chNext == '\\\"') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ECL_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_ECL_UUID:\n\t\t\t\tif (sc.ch == '\\r' || sc.ch == '\\n' || sc.ch == ')') {\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tSci_Position lineCurrent = styler.GetLine(sc.currentPos);\n\t\tint lineState = styler.GetLineState(lineCurrent);\n\t\tif (sc.state == SCE_ECL_DEFAULT) {\n\t\t\tif (lineState) {\n\t\t\t\tsc.SetState(lineState);\n\t\t\t}\n\t\t\telse if (sc.Match('@', '\\\"')) {\n\t\t\t\tsc.SetState(SCE_ECL_VERBATIM);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (setQualified.Contains(sc.ch) && sc.chNext == '\\'') {\n\t\t\t\tsc.SetState(SCE_ECL_CHARACTER);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tif (lastWordWasUUID) {\n\t\t\t\t\tsc.SetState(SCE_ECL_UUID);\n\t\t\t\t\tlastWordWasUUID = false;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_ECL_NUMBER);\n\t\t\t\t}\n\t\t\t} else if (setWordStart.Contains(sc.ch) || (sc.ch == '@')) {\n\t\t\t\tif (lastWordWasUUID) {\n\t\t\t\t\tsc.SetState(SCE_ECL_UUID);\n\t\t\t\t\tlastWordWasUUID = false;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_ECL_IDENTIFIER);\n\t\t\t\t}\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tif (sc.Match(\"/**\") || sc.Match(\"/*!\")) {\t// Support of Qt/Doxygen doc. style\n\t\t\t\t\tsc.SetState(SCE_ECL_COMMENTDOC);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_ECL_COMMENT);\n\t\t\t\t}\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tif ((sc.Match(\"///\") && !sc.Match(\"////\")) || sc.Match(\"//!\"))\n\t\t\t\t\t// Support of Qt/Doxygen doc. style\n\t\t\t\t\tsc.SetState(SCE_ECL_COMMENTLINEDOC);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_ECL_COMMENTLINE);\n\t\t\t} else if (sc.ch == '/' && setOKBeforeRE.Contains(chPrevNonWhite)) {\n\t\t\t\tsc.SetState(SCE_ECL_REGEX);\t// JavaScript's RegEx\n//\t\t\t} else if (sc.ch == '\\\"') {\n//\t\t\t\tsc.SetState(SCE_ECL_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_ECL_CHARACTER);\n\t\t\t} else if (sc.ch == '#' && visibleChars == 0) {\n\t\t\t\t// Preprocessor commands are alone on their line\n\t\t\t\tsc.SetState(SCE_ECL_PREPROCESSOR);\n\t\t\t\t// Skip whitespace between # and preprocessor word\n\t\t\t\tdo {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More());\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_ECL_DEFAULT);\n\t\t\t\t}\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_ECL_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t\tif (!IsASpace(sc.ch) && !IsSpaceEquiv(sc.state)) {\n\t\t\tchPrevNonWhite = sc.ch;\n\t\t\tvisibleChars++;\n\t\t}\n\t\tcontinuationLine = false;\n\t}\n\tsc.Complete();\n\n}\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_ECL_COMMENT ||\n\t\tstyle == SCE_ECL_COMMENTDOC ||\n\t\tstyle == SCE_ECL_COMMENTDOCKEYWORD ||\n\t\tstyle == SCE_ECL_COMMENTDOCKEYWORDERROR;\n}\n\nstatic bool MatchNoCase(Accessor & styler, Sci_PositionU & pos, const char *s) {\n\tSci_Position i=0;\n\tfor (; *s; i++) {\n\t\tchar compare_char = tolower(*s);\n\t\tchar styler_char = tolower(styler.SafeGetCharAt(pos+i));\n\t\tif (compare_char != styler_char)\n\t\t\treturn false;\n\t\ts++;\n\t}\n\tpos+=i-1;\n\treturn true;\n}\n\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\nstatic void FoldEclDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\t\t\t\t   WordList *[], Accessor &styler) {\n\tbool foldComment = true;\n\tbool foldPreprocessor = true;\n\tbool foldCompact = true;\n\tbool foldAtElse = true;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (foldComment && IsStreamCommentStyle(style)) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev) && (stylePrev != SCE_ECL_COMMENTLINEDOC)) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && (styleNext != SCE_ECL_COMMENTLINEDOC) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (foldComment && (style == SCE_ECL_COMMENTLINE)) {\n\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (foldPreprocessor && (style == SCE_ECL_PREPROCESSOR)) {\n\t\t\tif (ch == '#') {\n\t\t\t\tSci_PositionU j = i + 1;\n\t\t\t\twhile ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\tif (MatchNoCase(styler, j, \"region\") || MatchNoCase(styler, j, \"if\")) {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (MatchNoCase(styler, j, \"endregion\") || MatchNoCase(styler, j, \"end\")) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (style == SCE_ECL_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\t// Measure the minimum before a '{' to allow\n\t\t\t\t// folding on \"} else {\"\n\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (style == SCE_ECL_WORD2) {\n\t\t\tif (MatchNoCase(styler, i, \"record\") || MatchNoCase(styler, i, \"transform\") || MatchNoCase(styler, i, \"type\") || MatchNoCase(styler, i, \"function\") ||\n\t\t\t\tMatchNoCase(styler, i, \"module\") || MatchNoCase(styler, i, \"service\") || MatchNoCase(styler, i, \"interface\") || MatchNoCase(styler, i, \"ifblock\") ||\n\t\t\t\tMatchNoCase(styler, i, \"macro\") || MatchNoCase(styler, i, \"beginc++\")) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (MatchNoCase(styler, i, \"endmacro\") || MatchNoCase(styler, i, \"endc++\") || MatchNoCase(styler, i, \"end\")) {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL || (i == endPos-1)) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif (foldAtElse) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tif (atEOL && (i == static_cast<Sci_PositionU>(styler.Length()-1))) {\n\t\t\t\t// There is an empty line at end of file so give it same level and empty\n\t\t\t\tstyler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG);\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\t}\n}\n\nstatic const char * const EclWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmECL(\n   SCLEX_ECL,\n   ColouriseEclDoc,\n   \"ecl\",\n   FoldEclDoc,\n   EclWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexEDIFACT.cpp",
    "content": "// Scintilla Lexer for EDIFACT\n// Written by Iain Clarke, IMCSoft & Inobiz AB.\n// EDIFACT documented here: https://www.unece.org/cefact/edifact/welcome.html\n// and more readably here: https://en.wikipedia.org/wiki/EDIFACT\n// This code is subject to the same license terms as the rest of the scintilla project:\n// The License.txt file describes the conditions under which this software may be distributed.\n// \n\n// Header order must match order in scripts/HeaderOrder.txt\n#include <cstdlib>\n#include <cassert>\n#include <cstring>\n#include <cctype>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"LexAccessor.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nclass LexerEDIFACT : public ILexer\n{\npublic:\n\tLexerEDIFACT();\n\tvirtual ~LexerEDIFACT() {} // virtual destructor, as we inherit from ILexer\n\n\tstatic ILexer *Factory() {\n\t\treturn new LexerEDIFACT;\n\t}\n\n\tvirtual int SCI_METHOD Version() const\n\t{\n\t\treturn lvOriginal;\n\t}\n\tvirtual void SCI_METHOD Release()\n\t{\n\t\tdelete this;\n\t}\n\n\tconst char * SCI_METHOD PropertyNames()\n\t{\n\t\treturn \"fold\";\n\t}\n\tint SCI_METHOD PropertyType(const char *)\n\t{\n\t\treturn SC_TYPE_BOOLEAN; // Only one property!\n\t}\n\tconst char * SCI_METHOD DescribeProperty(const char *name)\n\t{\n\t\tif (strcmp(name, \"fold\"))\n\t\t\treturn NULL;\n\t\treturn \"Whether to apply folding to document or not\";\n\t}\n\n\tvirtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val)\n\t{\n\t\tif (strcmp(key, \"fold\"))\n\t\t\treturn -1;\n\t\tm_bFold = strcmp(val, \"0\") ? true : false;\n\t\treturn 0;\n\t}\n\tconst char * SCI_METHOD DescribeWordListSets()\n\t{\n\t\treturn NULL;\n\t}\n\tvirtual Sci_Position SCI_METHOD WordListSet(int, const char *)\n\t{\n\t\treturn -1;\n\t}\n\tvirtual void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n\tvirtual void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n\tvirtual void * SCI_METHOD PrivateCall(int, void *)\n\t{\n\t\treturn NULL;\n\t}\n\nprotected:\n\tSci_Position InitialiseFromUNA(IDocument *pAccess, Sci_PositionU MaxLength);\n\tSci_Position FindPreviousEnd(IDocument *pAccess, Sci_Position startPos) const;\n\tSci_Position ForwardPastWhitespace(IDocument *pAccess, Sci_Position startPos, Sci_Position MaxLength) const;\n\tint DetectSegmentHeader(char SegmentHeader[3]) const;\n\n\tbool m_bFold;\n\tchar m_chComponent;\n\tchar m_chData;\n\tchar m_chDecimal;\n\tchar m_chRelease;\n\tchar m_chSegment;\n};\n\nLexerModule lmEDIFACT(SCLEX_EDIFACT, LexerEDIFACT::Factory, \"edifact\");\n\n///////////////////////////////////////////////////////////////////////////////\n\n\n\n///////////////////////////////////////////////////////////////////////////////\n\nLexerEDIFACT::LexerEDIFACT()\n{\n\tm_bFold = false;\n\tm_chComponent = ':';\n\tm_chData = '+';\n\tm_chDecimal = '.';\n\tm_chRelease = '?';\n\tm_chSegment = '\\'';\n}\n\nvoid LexerEDIFACT::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess)\n{\n\tSci_PositionU posFinish = startPos + lengthDoc;\n\tInitialiseFromUNA(pAccess, posFinish);\n\n\t// Look backwards for a ' or a document beginning\n\tSci_PositionU posCurrent = FindPreviousEnd(pAccess, startPos);\n\t// And jump past the ' if this was not the beginning of the document\n\tif (posCurrent != 0)\n\t\tposCurrent++;\n\n\t// Style buffer, so we're not issuing loads of notifications\n\tLexAccessor styler (pAccess);\n\tpAccess->StartStyling(posCurrent, '\\377');\n\tstyler.StartSegment(posCurrent);\n\tSci_Position posSegmentStart = -1;\n\n\twhile ((posCurrent < posFinish) && (posSegmentStart == -1))\n\t{\n\t\tposCurrent = ForwardPastWhitespace(pAccess, posCurrent, posFinish);\n\t\t// Mark whitespace as default\n\t\tstyler.ColourTo(posCurrent - 1, SCE_EDI_DEFAULT);\n\t\tif (posCurrent >= posFinish)\n\t\t\tbreak;\n\n\t\t// Does is start with 3 charaters? ie, UNH\n\t\tchar SegmentHeader[4] = { 0 };\n\t\tpAccess->GetCharRange(SegmentHeader, posCurrent, 3);\n\n\t\tint SegmentStyle = DetectSegmentHeader(SegmentHeader);\n\t\tif (SegmentStyle == SCE_EDI_BADSEGMENT)\n\t\t\tbreak;\n\t\tif (SegmentStyle == SCE_EDI_UNA)\n\t\t{\n\t\t\tposCurrent += 9;\n\t\t\tstyler.ColourTo(posCurrent - 1, SCE_EDI_UNA); // UNA   \n\t\t\tcontinue;\n\t\t}\n\t\tposSegmentStart = posCurrent;\n\t\tposCurrent += 3;\n\n\t\tstyler.ColourTo(posCurrent - 1, SegmentStyle); // UNH etc\n\n\t\t// Colour in the rest of the segment\n\t\tfor (char c; posCurrent < posFinish; posCurrent++)\n\t\t{\n\t\t\tpAccess->GetCharRange(&c, posCurrent, 1);\n\n\t\t\tif (c == m_chRelease) // ? escape character, check first, in case of ?'\n\t\t\t\tposCurrent++;\n\t\t\telse if (c == m_chSegment) // '\n\t\t\t{\n\t\t\t\t// Make sure the whole segment is on one line. styler won't let us go back in time, so we'll settle for marking the ' as bad.\n\t\t\t\tSci_Position lineSegmentStart = pAccess->LineFromPosition(posSegmentStart);\n\t\t\t\tSci_Position lineSegmentEnd = pAccess->LineFromPosition(posCurrent);\n\t\t\t\tif (lineSegmentStart == lineSegmentEnd)\n\t\t\t\t\tstyler.ColourTo(posCurrent, SCE_EDI_SEGMENTEND);\n\t\t\t\telse\n\t\t\t\t\tstyler.ColourTo(posCurrent, SCE_EDI_BADSEGMENT);\n\t\t\t\tposSegmentStart = -1;\n\t\t\t\tposCurrent++;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (c == m_chComponent) // :\n\t\t\t\tstyler.ColourTo(posCurrent, SCE_EDI_SEP_COMPOSITE);\n\t\t\telse if (c == m_chData) // +\n\t\t\t\tstyler.ColourTo(posCurrent, SCE_EDI_SEP_ELEMENT);\n\t\t\telse\n\t\t\t\tstyler.ColourTo(posCurrent, SCE_EDI_DEFAULT);\n\t\t}\n\t}\n\tstyler.Flush();\n\n\tif (posSegmentStart == -1)\n\t\treturn;\n\n\tpAccess->StartStyling(posSegmentStart, -1);\n\tpAccess->SetStyleFor(posFinish - posSegmentStart, SCE_EDI_BADSEGMENT);\n}\n\nvoid LexerEDIFACT::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int, IDocument *pAccess)\n{\n\tif (!m_bFold)\n\t\treturn;\n\n\t// Fold at UNx lines. ie, UNx segments = 0, other segments = 1.\n\t// There's no sub folding, so we can be quite simple.\n\tSci_Position endPos = startPos + lengthDoc;\n\tchar SegmentHeader[4] = { 0 };\n\n\tint iIndentPrevious = 0;\n\tSci_Position lineLast = pAccess->LineFromPosition(endPos);\n\n\tfor (Sci_Position lineCurrent = pAccess->LineFromPosition(startPos); lineCurrent <= lineLast; lineCurrent++)\n\t{\n\t\tSci_Position posLineStart = pAccess->LineStart(lineCurrent);\n\t\tposLineStart = ForwardPastWhitespace(pAccess, posLineStart, endPos);\n\t\tSci_Position lineDataStart = pAccess->LineFromPosition(posLineStart);\n\t\t// Fill in whitespace lines?\n\t\tfor (; lineCurrent < lineDataStart; lineCurrent++)\n\t\t\tpAccess->SetLevel(lineCurrent, SC_FOLDLEVELBASE | SC_FOLDLEVELWHITEFLAG | iIndentPrevious);\n\t\tpAccess->GetCharRange(SegmentHeader, posLineStart, 3);\n\t\t//if (DetectSegmentHeader(SegmentHeader) == SCE_EDI_BADSEGMENT) // Abort if this is not a proper segment header\n\n\t\tint level = 0;\n\t\tif (memcmp(SegmentHeader, \"UNH\", 3) == 0) // UNH starts blocks\n\t\t\tlevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\t// Check for UNA,B and Z. All others are inside messages\n\t\telse if (!memcmp(SegmentHeader, \"UNA\", 3) || !memcmp(SegmentHeader, \"UNB\", 3) || !memcmp(SegmentHeader, \"UNZ\", 3))\n\t\t\tlevel = SC_FOLDLEVELBASE;\n\t\telse\n\t\t\tlevel = SC_FOLDLEVELBASE | 1;\n\t\tpAccess->SetLevel(lineCurrent, level);\n\t\tiIndentPrevious = level & SC_FOLDLEVELNUMBERMASK;\n\t}\n}\n\nSci_Position LexerEDIFACT::InitialiseFromUNA(IDocument *pAccess, Sci_PositionU MaxLength)\n{\n\tMaxLength -= 9; // drop 9 chars, to give us room for UNA:+.? '\n\n\tSci_PositionU startPos = 0;\n\tstartPos += ForwardPastWhitespace(pAccess, 0, MaxLength);\n\tif (startPos < MaxLength)\n\t{\n\t\tchar bufUNA[9];\n\t\tpAccess->GetCharRange(bufUNA, startPos, 9);\n\n\t\t// Check it's UNA segment\n\t\tif (!memcmp(bufUNA, \"UNA\", 3))\n\t\t{\n\t\t\tm_chComponent = bufUNA[3];\n\t\t\tm_chData = bufUNA[4];\n\t\t\tm_chDecimal = bufUNA[5];\n\t\t\tm_chRelease = bufUNA[6];\n\t\t\t// bufUNA [7] should be space - reserved.\n\t\t\tm_chSegment = bufUNA[8];\n\n\t\t\treturn 0; // success!\n\t\t}\n\t}\n\n\t// We failed to find a UNA, so drop to defaults\n\tm_chComponent = ':';\n\tm_chData = '+';\n\tm_chDecimal = '.';\n\tm_chRelease = '?';\n\tm_chSegment = '\\'';\n\n\treturn -1;\n}\n\nSci_Position LexerEDIFACT::ForwardPastWhitespace(IDocument *pAccess, Sci_Position startPos, Sci_Position MaxLength) const\n{\n\tchar c;\n\n\twhile (startPos < MaxLength)\n\t{\n\t\tpAccess->GetCharRange(&c, startPos, 1);\n\t\tswitch (c)\n\t\t{\n\t\tcase '\\t':\n\t\tcase '\\r':\n\t\tcase '\\n':\n\t\tcase ' ':\n\t\t\tbreak;\n\t\tdefault:\n\t\t\treturn startPos;\n\t\t}\n\n\t\tstartPos++;\n\t}\n\n\treturn MaxLength;\n}\n\nint LexerEDIFACT::DetectSegmentHeader(char SegmentHeader[3]) const\n{\n\tif (\n\t\tSegmentHeader[0] < 'A' || SegmentHeader[0] > 'Z' ||\n\t\tSegmentHeader[1] < 'A' || SegmentHeader[1] > 'Z' ||\n\t\tSegmentHeader[2] < 'A' || SegmentHeader[2] > 'Z')\n\t\treturn SCE_EDI_BADSEGMENT;\n\n\tif (memcmp(SegmentHeader, \"UNA\", 3) == 0)\n\t\treturn SCE_EDI_UNA;\n\tif (memcmp(SegmentHeader, \"UNH\", 3) == 0)\n\t\treturn SCE_EDI_UNH;\n\n\treturn SCE_EDI_SEGMENTSTART;\n}\n\n// Look backwards for a ' or a document beginning\nSci_Position LexerEDIFACT::FindPreviousEnd(IDocument *pAccess, Sci_Position startPos) const\n{\n\tfor (char c; startPos > 0; startPos--)\n\t{\n\t\tpAccess->GetCharRange(&c, startPos, 1);\n\t\tif (c == m_chSegment)\n\t\t\treturn startPos;\n\t}\n\t// We didn't find a ', so just go with the beginning\n\treturn 0;\n}\n\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexEScript.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexESCRIPT.cxx\n ** Lexer for ESCRIPT\n **/\n// Copyright 2003 by Patrizio Bekerle (patrizio@bekerle.com)\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_');\n}\n\nstatic inline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\n\n\nstatic void ColouriseESCRIPTDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\n\t// Do not leak onto next line\n\t/*if (initStyle == SCE_ESCRIPT_STRINGEOL)\n\t\tinitStyle = SCE_ESCRIPT_DEFAULT;*/\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tbool caseSensitive = styler.GetPropertyInt(\"escript.case.sensitive\", 0) != 0;\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\t/*if (sc.atLineStart && (sc.state == SCE_ESCRIPT_STRING)) {\n\t\t\t// Prevent SCE_ESCRIPT_STRINGEOL from leaking back to previous line\n\t\t\tsc.SetState(SCE_ESCRIPT_STRING);\n\t\t}*/\n\n\t\t// Handle line continuation generically.\n\t\tif (sc.ch == '\\\\') {\n\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_ESCRIPT_OPERATOR || sc.state == SCE_ESCRIPT_BRACE) {\n\t\t\tsc.SetState(SCE_ESCRIPT_DEFAULT);\n\t\t} else if (sc.state == SCE_ESCRIPT_NUMBER) {\n\t\t\tif (!IsADigit(sc.ch) || sc.ch != '.') {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ESCRIPT_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch) || (sc.ch == '.')) {\n\t\t\t\tchar s[100];\n\t\t\t\tif (caseSensitive) {\n\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t} else {\n\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t}\n\n//\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\n                                if (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ESCRIPT_WORD);\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ESCRIPT_WORD2);\n\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_ESCRIPT_WORD3);\n                                        // sc.state = SCE_ESCRIPT_IDENTIFIER;\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_ESCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ESCRIPT_COMMENT) {\n\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_ESCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ESCRIPT_COMMENTDOC) {\n\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_ESCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ESCRIPT_COMMENTLINE) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_ESCRIPT_STRING) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_ESCRIPT_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_ESCRIPT_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch) || (sc.ch == '#')) {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_IDENTIFIER);\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_COMMENT);\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_STRING);\n\t\t\t\t//} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t} else if (sc.ch == '+' || sc.ch == '-' || sc.ch == '*' || sc.ch == '/' || sc.ch == '=' || sc.ch == '<' || sc.ch == '>' || sc.ch == '&' || sc.ch == '|' || sc.ch == '!' || sc.ch == '?' || sc.ch == ':') {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_OPERATOR);\n\t\t\t} else if (sc.ch == '{' || sc.ch == '}') {\n\t\t\t\tsc.SetState(SCE_ESCRIPT_BRACE);\n\t\t\t}\n\t\t}\n\n\t}\n\tsc.Complete();\n}\n\n\nstatic int classifyFoldPointESCRIPT(const char* s, const char* prevWord) {\n\tint lev = 0;\n\tif (strcmp(prevWord, \"end\") == 0) return lev;\n\tif ((strcmp(prevWord, \"else\") == 0 && strcmp(s, \"if\") == 0) || strcmp(s, \"elseif\") == 0)\n\t\treturn -1;\n\n        if (strcmp(s, \"for\") == 0 || strcmp(s, \"foreach\") == 0\n\t    || strcmp(s, \"program\") == 0 || strcmp(s, \"function\") == 0\n\t    || strcmp(s, \"while\") == 0 || strcmp(s, \"case\") == 0\n\t    || strcmp(s, \"if\") == 0 ) {\n\t\tlev = 1;\n\t} else if ( strcmp(s, \"endfor\") == 0 || strcmp(s, \"endforeach\") == 0\n\t    || strcmp(s, \"endprogram\") == 0 || strcmp(s, \"endfunction\") == 0\n\t    || strcmp(s, \"endwhile\") == 0 || strcmp(s, \"endcase\") == 0\n\t    || strcmp(s, \"endif\") == 0 ) {\n\t\tlev = -1;\n\t}\n\n\treturn lev;\n}\n\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_ESCRIPT_COMMENT ||\n\t       style == SCE_ESCRIPT_COMMENTDOC ||\n\t       style == SCE_ESCRIPT_COMMENTLINE;\n}\n\nstatic void FoldESCRIPTDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) {\n\t//~ bool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\t// Do not know how to fold the comment at the moment.\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n        bool foldComment = true;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\n\tSci_Position lastStart = 0;\n\tchar prevWord[32] = \"\";\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\n\t\tif (foldComment && IsStreamCommentStyle(style)) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\n\t\tif (foldComment && (style == SCE_ESCRIPT_COMMENTLINE)) {\n\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (stylePrev == SCE_ESCRIPT_DEFAULT && style == SCE_ESCRIPT_WORD3)\n\t\t{\n\t\t\t// Store last word start point.\n\t\t\tlastStart = i;\n\t\t}\n\n\t\tif (style == SCE_ESCRIPT_WORD3) {\n\t\t\tif(iswordchar(ch) && !iswordchar(chNext)) {\n\t\t\t\tchar s[32];\n\t\t\t\tSci_PositionU j;\n\t\t\t\tfor(j = 0; ( j < 31 ) && ( j < i-lastStart+1 ); j++) {\n\t\t\t\t\ts[j] = static_cast<char>(tolower(styler[lastStart + j]));\n\t\t\t\t}\n\t\t\t\ts[j] = '\\0';\n\t\t\t\tlevelCurrent += classifyFoldPointESCRIPT(s, prevWord);\n\t\t\t\tstrcpy(prevWord, s);\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t\tstrcpy(prevWord, \"\");\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\n\n\nstatic const char * const ESCRIPTWordLists[] = {\n\t\"Primary keywords and identifiers\",\n\t\"Intrinsic functions\",\n\t\"Extended and user defined functions\",\n\t0,\n};\n\nLexerModule lmESCRIPT(SCLEX_ESCRIPT, ColouriseESCRIPTDoc, \"escript\", FoldESCRIPTDoc, ESCRIPTWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexEiffel.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexEiffel.cxx\n ** Lexer for Eiffel.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool isEiffelOperator(unsigned int ch) {\n\t// '.' left out as it is used to make up numbers\n\treturn ch == '*' || ch == '/' || ch == '\\\\' || ch == '-' || ch == '+' ||\n\t        ch == '(' || ch == ')' || ch == '=' ||\n\t        ch == '{' || ch == '}' || ch == '~' ||\n\t        ch == '[' || ch == ']' || ch == ';' ||\n\t        ch == '<' || ch == '>' || ch == ',' ||\n\t        ch == '.' || ch == '^' || ch == '%' || ch == ':' ||\n\t\tch == '!' || ch == '@' || ch == '?';\n}\n\nstatic inline bool IsAWordChar(unsigned int  ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\nstatic inline bool IsAWordStart(unsigned int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\nstatic void ColouriseEiffelDoc(Sci_PositionU startPos,\n                            Sci_Position length,\n                            int initStyle,\n                            WordList *keywordlists[],\n                            Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.state == SCE_EIFFEL_STRINGEOL) {\n\t\t\tif (sc.ch != '\\r' && sc.ch != '\\n') {\n\t\t\t\tsc.SetState(SCE_EIFFEL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_EIFFEL_OPERATOR) {\n\t\t\tsc.SetState(SCE_EIFFEL_DEFAULT);\n\t\t} else if (sc.state == SCE_EIFFEL_WORD) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (!keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_EIFFEL_IDENTIFIER);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_EIFFEL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_EIFFEL_NUMBER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_EIFFEL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_EIFFEL_COMMENTLINE) {\n\t\t\tif (sc.ch == '\\r' || sc.ch == '\\n') {\n\t\t\t\tsc.SetState(SCE_EIFFEL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_EIFFEL_STRING) {\n\t\t\tif (sc.ch == '%') {\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState(SCE_EIFFEL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_EIFFEL_CHARACTER) {\n\t\t\tif (sc.ch == '\\r' || sc.ch == '\\n') {\n\t\t\t\tsc.SetState(SCE_EIFFEL_STRINGEOL);\n\t\t\t} else if (sc.ch == '%') {\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState(SCE_EIFFEL_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.state == SCE_EIFFEL_DEFAULT) {\n\t\t\tif (sc.ch == '-' && sc.chNext == '-') {\n\t\t\t\tsc.SetState(SCE_EIFFEL_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_EIFFEL_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_EIFFEL_CHARACTER);\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.')) {\n\t\t\t\tsc.SetState(SCE_EIFFEL_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_EIFFEL_WORD);\n\t\t\t} else if (isEiffelOperator(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_EIFFEL_OPERATOR);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic bool IsEiffelComment(Accessor &styler, Sci_Position pos, Sci_Position len) {\n\treturn len>1 && styler[pos]=='-' && styler[pos+1]=='-';\n}\n\nstatic void FoldEiffelDocIndent(Sci_PositionU startPos, Sci_Position length, int,\n\t\t\t\t\t\t   WordList *[], Accessor &styler) {\n\tSci_Position lengthDoc = startPos + length;\n\n\t// Backtrack to previous line in case need to fix its fold status\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tif (startPos > 0) {\n\t\tif (lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\tstartPos = styler.LineStart(lineCurrent);\n\t\t}\n\t}\n\tint spaceFlags = 0;\n\tint indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsEiffelComment);\n\tchar chNext = styler[startPos];\n\tfor (Sci_Position i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n') || (i == lengthDoc)) {\n\t\t\tint lev = indentCurrent;\n\t\t\tint indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags, IsEiffelComment);\n\t\t\tif (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {\n\t\t\t\t// Only non whitespace lines can be headers\n\t\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) {\n\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t} else if (indentNext & SC_FOLDLEVELWHITEFLAG) {\n\t\t\t\t\t// Line after is blank so check the next - maybe should continue further?\n\t\t\t\t\tint spaceFlags2 = 0;\n\t\t\t\t\tint indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2, IsEiffelComment);\n\t\t\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) {\n\t\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tindentCurrent = indentNext;\n\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\tlineCurrent++;\n\t\t}\n\t}\n}\n\nstatic void FoldEiffelDocKeyWords(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[],\n                       Accessor &styler) {\n\tSci_PositionU lengthDoc = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint stylePrev = 0;\n\tint styleNext = styler.StyleAt(startPos);\n\t// lastDeferred should be determined by looking back to last keyword in case\n\t// the \"deferred\" is on a line before \"class\"\n\tbool lastDeferred = false;\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif ((stylePrev != SCE_EIFFEL_WORD) && (style == SCE_EIFFEL_WORD)) {\n\t\t\tchar s[20];\n\t\t\tSci_PositionU j = 0;\n\t\t\twhile ((j < (sizeof(s) - 1)) && (iswordchar(styler[i + j]))) {\n\t\t\t\ts[j] = styler[i + j];\n\t\t\t\tj++;\n\t\t\t}\n\t\t\ts[j] = '\\0';\n\n\t\t\tif (\n\t\t\t\t(strcmp(s, \"check\") == 0) ||\n\t\t\t\t(strcmp(s, \"debug\") == 0) ||\n\t\t\t\t(strcmp(s, \"deferred\") == 0) ||\n\t\t\t\t(strcmp(s, \"do\") == 0) ||\n\t\t\t\t(strcmp(s, \"from\") == 0) ||\n\t\t\t\t(strcmp(s, \"if\") == 0) ||\n\t\t\t\t(strcmp(s, \"inspect\") == 0) ||\n\t\t\t\t(strcmp(s, \"once\") == 0)\n\t\t\t)\n\t\t\t\tlevelCurrent++;\n\t\t\tif (!lastDeferred && (strcmp(s, \"class\") == 0))\n\t\t\t\tlevelCurrent++;\n\t\t\tif (strcmp(s, \"end\") == 0)\n\t\t\t\tlevelCurrent--;\n\t\t\tlastDeferred = strcmp(s, \"deferred\") == 0;\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t\tstylePrev = style;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const eiffelWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmEiffel(SCLEX_EIFFEL, ColouriseEiffelDoc, \"eiffel\", FoldEiffelDocIndent, eiffelWordListDesc);\nLexerModule lmEiffelkw(SCLEX_EIFFELKW, ColouriseEiffelDoc, \"eiffelkw\", FoldEiffelDocKeyWords, eiffelWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexErlang.cpp",
    "content": "// Scintilla source code edit control\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n/** @file LexErlang.cxx\n ** Lexer for Erlang.\n ** Enhanced by Etienne 'Lenain' Girondel (lenaing@gmail.com)\n ** Originally wrote by Peter-Henry Mander,\n ** based on Matlab lexer by Jos Fonseca.\n **/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic int is_radix(int radix, int ch) {\n\tint digit;\n\n\tif (36 < radix || 2 > radix)\n\t\treturn 0;\n\n\tif (isdigit(ch)) {\n\t\tdigit = ch - '0';\n\t} else if (isalnum(ch)) {\n\t\tdigit = toupper(ch) - 'A' + 10;\n\t} else {\n\t\treturn 0;\n\t}\n\n\treturn (digit < radix);\n}\n\ntypedef enum {\n\tSTATE_NULL,\n\tCOMMENT,\n\tCOMMENT_FUNCTION,\n\tCOMMENT_MODULE,\n\tCOMMENT_DOC,\n\tCOMMENT_DOC_MACRO,\n\tATOM_UNQUOTED,\n\tATOM_QUOTED,\n\tNODE_NAME_UNQUOTED,\n\tNODE_NAME_QUOTED,\n\tMACRO_START,\n\tMACRO_UNQUOTED,\n\tMACRO_QUOTED,\n\tRECORD_START,\n\tRECORD_UNQUOTED,\n\tRECORD_QUOTED,\n\tNUMERAL_START,\n\tNUMERAL_BASE_VALUE,\n\tNUMERAL_FLOAT,\n\tNUMERAL_EXPONENT,\n\tPREPROCESSOR\n} atom_parse_state_t;\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (ch != ' ') && (isalnum(ch) || ch == '_');\n}\n\nstatic void ColouriseErlangDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\t\t\t\t\t\t\tWordList *keywordlists[], Accessor &styler) {\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tWordList &reservedWords = *keywordlists[0];\n\tWordList &erlangBIFs = *keywordlists[1];\n\tWordList &erlangPreproc = *keywordlists[2];\n\tWordList &erlangModulesAtt = *keywordlists[3];\n\tWordList &erlangDoc = *keywordlists[4];\n\tWordList &erlangDocMacro = *keywordlists[5];\n\tint radix_digits = 0;\n\tint exponent_digits = 0;\n\tatom_parse_state_t parse_state = STATE_NULL;\n\tatom_parse_state_t old_parse_state = STATE_NULL;\n\tbool to_late_to_comment = false;\n\tchar cur[100];\n\tint old_style = SCE_ERLANG_DEFAULT;\n\n\tstyler.StartAt(startPos);\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\tint style = SCE_ERLANG_DEFAULT;\n\t\tif (STATE_NULL != parse_state) {\n\n\t\t\tswitch (parse_state) {\n\n\t\t\t\tcase STATE_NULL : sc.SetState(SCE_ERLANG_DEFAULT); break;\n\n\t\t\t/* COMMENTS ------------------------------------------------------*/\n\t\t\t\tcase COMMENT : {\n\t\t\t\t\tif (sc.ch != '%') {\n\t\t\t\t\t\tto_late_to_comment = true;\n\t\t\t\t\t} else if (!to_late_to_comment && sc.ch == '%') {\n\t\t\t\t\t\t// Switch to comment level 2 (Function)\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_COMMENT_FUNCTION);\n\t\t\t\t\t\told_style = SCE_ERLANG_COMMENT_FUNCTION;\n\t\t\t\t\t\tparse_state = COMMENT_FUNCTION;\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// V--- Falling through!\n\t\t\t\tcase COMMENT_FUNCTION : {\n\t\t\t\t\tif (sc.ch != '%') {\n\t\t\t\t\t\tto_late_to_comment = true;\n\t\t\t\t\t} else if (!to_late_to_comment && sc.ch == '%') {\n\t\t\t\t\t\t// Switch to comment level 3 (Module)\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_COMMENT_MODULE);\n\t\t\t\t\t\told_style = SCE_ERLANG_COMMENT_MODULE;\n\t\t\t\t\t\tparse_state = COMMENT_MODULE;\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// V--- Falling through!\n\t\t\t\tcase COMMENT_MODULE : {\n\t\t\t\t\tif (parse_state != COMMENT) {\n\t\t\t\t\t\t// Search for comment documentation\n\t\t\t\t\t\tif (sc.chNext == '@') {\n\t\t\t\t\t\t\told_parse_state = parse_state;\n\t\t\t\t\t\t\tparse_state = ('{' == sc.ch)\n\t\t\t\t\t\t\t\t\t\t\t? COMMENT_DOC_MACRO\n\t\t\t\t\t\t\t\t\t\t\t: COMMENT_DOC;\n\t\t\t\t\t\t\tsc.ForwardSetState(sc.state);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// All comments types fall here.\n\t\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\t\tto_late_to_comment = false;\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tcase COMMENT_DOC :\n\t\t\t\t// V--- Falling through!\n\t\t\t\tcase COMMENT_DOC_MACRO : {\n\n\t\t\t\t\tif (!isalnum(sc.ch)) {\n\t\t\t\t\t\t// Try to match documentation comment\n\t\t\t\t\t\tsc.GetCurrent(cur, sizeof(cur));\n\n\t\t\t\t\t\tif (parse_state == COMMENT_DOC_MACRO\n\t\t\t\t\t\t\t&& erlangDocMacro.InList(cur)) {\n\t\t\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_COMMENT_DOC_MACRO);\n\t\t\t\t\t\t\t\twhile (sc.ch != '}' && !sc.atLineEnd)\n\t\t\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t} else if (erlangDoc.InList(cur)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_COMMENT_DOC);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.ChangeState(old_style);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Switch back to old state\n\t\t\t\t\t\tsc.SetState(old_style);\n\t\t\t\t\t\tparse_state = old_parse_state;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\t\tto_late_to_comment = false;\n\t\t\t\t\t\tsc.ChangeState(old_style);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* -------------------------------------------------------------- */\n\t\t\t/* Atoms ---------------------------------------------------------*/\n\t\t\t\tcase ATOM_UNQUOTED : {\n\t\t\t\t\tif ('@' == sc.ch){\n\t\t\t\t\t\tparse_state = NODE_NAME_UNQUOTED;\n\t\t\t\t\t} else if (sc.ch == ':') {\n\t\t\t\t\t\t// Searching for module name\n\t\t\t\t\t\tif (sc.chNext == ' ') {\n\t\t\t\t\t\t\t// error\n\t\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_UNKNOWN);\n\t\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\tif (isalnum(sc.ch))  {\n\t\t\t\t\t\t\t\tsc.GetCurrent(cur, sizeof(cur));\n\t\t\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_MODULES);\n\t\t\t\t\t\t\t\tsc.SetState(SCE_ERLANG_MODULES);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (!IsAWordChar(sc.ch)) {\n\n\t\t\t\t\t\tsc.GetCurrent(cur, sizeof(cur));\n\t\t\t\t\t\tif (reservedWords.InList(cur)) {\n\t\t\t\t\t\t\tstyle = SCE_ERLANG_KEYWORD;\n\t\t\t\t\t\t} else if (erlangBIFs.InList(cur)\n\t\t\t\t\t\t\t\t\t&& strcmp(cur,\"erlang:\")){\n\t\t\t\t\t\t\tstyle = SCE_ERLANG_BIFS;\n\t\t\t\t\t\t} else if (sc.ch == '(' || '/' == sc.ch){\n\t\t\t\t\t\t\tstyle = SCE_ERLANG_FUNCTION_NAME;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstyle = SCE_ERLANG_ATOM;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsc.ChangeState(style);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\n\t\t\t\t} break;\n\n\t\t\t\tcase ATOM_QUOTED : {\n\t\t\t\t\tif ( '@' == sc.ch ){\n\t\t\t\t\t\tparse_state = NODE_NAME_QUOTED;\n\t\t\t\t\t} else if ('\\'' == sc.ch && '\\\\' != sc.chPrev) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_ATOM);\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* -------------------------------------------------------------- */\n\t\t\t/* Node names ----------------------------------------------------*/\n\t\t\t\tcase NODE_NAME_UNQUOTED : {\n\t\t\t\t\tif ('@' == sc.ch) {\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t} else if (!IsAWordChar(sc.ch)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_NODE_NAME);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tcase NODE_NAME_QUOTED : {\n\t\t\t\t\tif ('@' == sc.ch) {\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t} else if ('\\'' == sc.ch && '\\\\' != sc.chPrev) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_NODE_NAME_QUOTED);\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* -------------------------------------------------------------- */\n\t\t\t/* Records -------------------------------------------------------*/\n\t\t\t\tcase RECORD_START : {\n\t\t\t\t\tif ('\\'' == sc.ch) {\n\t\t\t\t\t\tparse_state = RECORD_QUOTED;\n\t\t\t\t\t} else if (isalpha(sc.ch) && islower(sc.ch)) {\n\t\t\t\t\t\tparse_state = RECORD_UNQUOTED;\n\t\t\t\t\t} else { // error\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tcase RECORD_UNQUOTED : {\n\t\t\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_RECORD);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tcase RECORD_QUOTED : {\n\t\t\t\t\tif ('\\'' == sc.ch && '\\\\' != sc.chPrev) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_RECORD_QUOTED);\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* -------------------------------------------------------------- */\n\t\t\t/* Macros --------------------------------------------------------*/\n\t\t\t\tcase MACRO_START : {\n\t\t\t\t\tif ('\\'' == sc.ch) {\n\t\t\t\t\t\tparse_state = MACRO_QUOTED;\n\t\t\t\t\t} else if (isalpha(sc.ch)) {\n\t\t\t\t\t\tparse_state = MACRO_UNQUOTED;\n\t\t\t\t\t} else { // error\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tcase MACRO_UNQUOTED : {\n\t\t\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_MACRO);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t\tcase MACRO_QUOTED : {\n\t\t\t\t\tif ('\\'' == sc.ch && '\\\\' != sc.chPrev) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_MACRO_QUOTED);\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* -------------------------------------------------------------- */\n\t\t\t/* Numerics ------------------------------------------------------*/\n\t\t\t/* Simple integer */\n\t\t\t\tcase NUMERAL_START : {\n\t\t\t\t\tif (isdigit(sc.ch)) {\n\t\t\t\t\t\tradix_digits *= 10;\n\t\t\t\t\t\tradix_digits += sc.ch - '0'; // Assuming ASCII here!\n\t\t\t\t\t} else if ('#' == sc.ch) {\n\t\t\t\t\t\tif (2 > radix_digits || 36 < radix_digits) {\n\t\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tparse_state = NUMERAL_BASE_VALUE;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ('.' == sc.ch && isdigit(sc.chNext)) {\n\t\t\t\t\t\tradix_digits = 0;\n\t\t\t\t\t\tparse_state = NUMERAL_FLOAT;\n\t\t\t\t\t} else if ('e' == sc.ch || 'E' == sc.ch) {\n\t\t\t\t\t\texponent_digits = 0;\n\t\t\t\t\t\tparse_state = NUMERAL_EXPONENT;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tradix_digits = 0;\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_NUMBER);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* Integer in other base than 10 (x#yyy) */\n\t\t\t\tcase NUMERAL_BASE_VALUE : {\n\t\t\t\t\tif (!is_radix(radix_digits,sc.ch)) {\n\t\t\t\t\t\tradix_digits = 0;\n\n\t\t\t\t\t\tif (!isalnum(sc.ch))\n\t\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_NUMBER);\n\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* Float (x.yyy) */\n\t\t\t\tcase NUMERAL_FLOAT : {\n\t\t\t\t\tif ('e' == sc.ch || 'E' == sc.ch) {\n\t\t\t\t\t\texponent_digits = 0;\n\t\t\t\t\t\tparse_state = NUMERAL_EXPONENT;\n\t\t\t\t\t} else if (!isdigit(sc.ch)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_NUMBER);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* Exponent, either integer or float (xEyy, x.yyEzzz) */\n\t\t\t\tcase NUMERAL_EXPONENT : {\n\t\t\t\t\tif (('-' == sc.ch || '+' == sc.ch)\n\t\t\t\t\t\t\t&& (isdigit(sc.chNext))) {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} else if (!isdigit(sc.ch)) {\n\t\t\t\t\t\tif (0 < exponent_digits)\n\t\t\t\t\t\t\tsc.ChangeState(SCE_ERLANG_NUMBER);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t++exponent_digits;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t/* -------------------------------------------------------------- */\n\t\t\t/* Preprocessor --------------------------------------------------*/\n\t\t\t\tcase PREPROCESSOR : {\n\t\t\t\t\tif (!IsAWordChar(sc.ch)) {\n\n\t\t\t\t\t\tsc.GetCurrent(cur, sizeof(cur));\n\t\t\t\t\t\tif (erlangPreproc.InList(cur)) {\n\t\t\t\t\t\t\tstyle = SCE_ERLANG_PREPROC;\n\t\t\t\t\t\t} else if (erlangModulesAtt.InList(cur)) {\n\t\t\t\t\t\t\tstyle = SCE_ERLANG_MODULES_ATT;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsc.ChangeState(style);\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\tparse_state = STATE_NULL;\n\t\t\t\t\t}\n\t\t\t\t} break;\n\n\t\t\t}\n\n\t\t} /* End of : STATE_NULL != parse_state */\n\t\telse\n\t\t{\n\t\t\tswitch (sc.state) {\n\t\t\t\tcase SCE_ERLANG_VARIABLE : {\n\t\t\t\t\tif (!IsAWordChar(sc.ch))\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t} break;\n\t\t\t\tcase SCE_ERLANG_STRING : {\n\t\t\t\t\t if (sc.ch == '\\\"' && sc.chPrev != '\\\\')\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t} break;\n\t\t\t\tcase SCE_ERLANG_COMMENT : {\n\t\t\t\t\t if (sc.atLineEnd)\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t} break;\n\t\t\t\tcase SCE_ERLANG_CHARACTER : {\n\t\t\t\t\tif (sc.chPrev == '\\\\') {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t} else if (sc.ch != '\\\\') {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tcase SCE_ERLANG_OPERATOR : {\n\t\t\t\t\tif (sc.chPrev == '.') {\n\t\t\t\t\t\tif (sc.ch == '*' || sc.ch == '/' || sc.ch == '\\\\'\n\t\t\t\t\t\t\t|| sc.ch == '^') {\n\t\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\t\t\tsc.ForwardSetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t}\n\t\t}\n\n\t\tif (sc.state == SCE_ERLANG_DEFAULT) {\n\t\t\tbool no_new_state = false;\n\n\t\t\tswitch (sc.ch) {\n\t\t\t\tcase '\\\"' : sc.SetState(SCE_ERLANG_STRING); break;\n\t\t\t\tcase '$' : sc.SetState(SCE_ERLANG_CHARACTER); break;\n\t\t\t\tcase '%' : {\n\t\t\t\t\tparse_state = COMMENT;\n\t\t\t\t\tsc.SetState(SCE_ERLANG_COMMENT);\n\t\t\t\t} break;\n\t\t\t\tcase '#' : {\n\t\t\t\t\tparse_state = RECORD_START;\n\t\t\t\t\tsc.SetState(SCE_ERLANG_UNKNOWN);\n\t\t\t\t} break;\n\t\t\t\tcase '?' : {\n\t\t\t\t\tparse_state = MACRO_START;\n\t\t\t\t\tsc.SetState(SCE_ERLANG_UNKNOWN);\n\t\t\t\t} break;\n\t\t\t\tcase '\\'' : {\n\t\t\t\t\tparse_state = ATOM_QUOTED;\n\t\t\t\t\tsc.SetState(SCE_ERLANG_UNKNOWN);\n\t\t\t\t} break;\n\t\t\t\tcase '+' :\n\t\t\t\tcase '-' : {\n\t\t\t\t\tif (IsADigit(sc.chNext)) {\n\t\t\t\t\t\tparse_state = NUMERAL_START;\n\t\t\t\t\t\tradix_digits = 0;\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_UNKNOWN);\n\t\t\t\t\t} else if (sc.ch != '+') {\n\t\t\t\t\t\tparse_state = PREPROCESSOR;\n\t\t\t\t\t\tsc.SetState(SCE_ERLANG_UNKNOWN);\n\t\t\t\t\t}\n\t\t\t\t} break;\n\t\t\t\tdefault : no_new_state = true;\n\t\t\t}\n\n\t\t\tif (no_new_state) {\n\t\t\t\tif (isdigit(sc.ch)) {\n\t\t\t\t\tparse_state = NUMERAL_START;\n\t\t\t\t\tradix_digits = sc.ch - '0';\n\t\t\t\t\tsc.SetState(SCE_ERLANG_UNKNOWN);\n\t\t\t\t} else if (isupper(sc.ch) || '_' == sc.ch) {\n\t\t\t\t\tsc.SetState(SCE_ERLANG_VARIABLE);\n\t\t\t\t} else if (isalpha(sc.ch)) {\n\t\t\t\t\tparse_state = ATOM_UNQUOTED;\n\t\t\t\t\tsc.SetState(SCE_ERLANG_UNKNOWN);\n\t\t\t\t} else if (isoperator(static_cast<char>(sc.ch))\n\t\t\t\t\t\t\t|| sc.ch == '\\\\') {\n\t\t\t\t\tsc.SetState(SCE_ERLANG_OPERATOR);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\tsc.Complete();\n}\n\nstatic int ClassifyErlangFoldPoint(\n\tAccessor &styler,\n\tint styleNext,\n\tSci_Position keyword_start\n) {\n\tint lev = 0;\n\tif (styler.Match(keyword_start,\"case\")\n\t\t|| (\n\t\t\tstyler.Match(keyword_start,\"fun\")\n\t\t\t&& (SCE_ERLANG_FUNCTION_NAME != styleNext)\n\t\t\t)\n\t\t|| styler.Match(keyword_start,\"if\")\n\t\t|| styler.Match(keyword_start,\"query\")\n\t\t|| styler.Match(keyword_start,\"receive\")\n\t) {\n\t\t++lev;\n\t} else if (styler.Match(keyword_start,\"end\")) {\n\t\t--lev;\n\t}\n\n\treturn lev;\n}\n\nstatic void FoldErlangDoc(\n\tSci_PositionU startPos, Sci_Position length, int initStyle,\n\tWordList** /*keywordlists*/, Accessor &styler\n) {\n\tSci_PositionU endPos = startPos + length;\n\tSci_Position currentLine = styler.GetLine(startPos);\n\tint lev;\n\tint previousLevel = styler.LevelAt(currentLine) & SC_FOLDLEVELNUMBERMASK;\n\tint currentLevel = previousLevel;\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tint stylePrev;\n\tSci_Position keyword_start = 0;\n\tchar ch;\n\tchar chNext = styler.SafeGetCharAt(startPos);\n\tbool atEOL;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\t// Get styles\n\t\tstylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tatEOL = ((ch == '\\r') && (chNext != '\\n')) || (ch == '\\n');\n\n\t\tif (stylePrev != SCE_ERLANG_KEYWORD\n\t\t\t&& style == SCE_ERLANG_KEYWORD) {\n\t\t\tkeyword_start = i;\n\t\t}\n\n\t\t// Fold on keywords\n\t\tif (stylePrev == SCE_ERLANG_KEYWORD\n\t\t\t&& style != SCE_ERLANG_KEYWORD\n\t\t\t&& style != SCE_ERLANG_ATOM\n\t\t) {\n\t\t\tcurrentLevel += ClassifyErlangFoldPoint(styler,\n\t\t\t\t\t\t\t\t\t\t\t\t\tstyleNext,\n\t\t\t\t\t\t\t\t\t\t\t\t\tkeyword_start);\n\t\t}\n\n\t\t// Fold on comments\n\t\tif (style == SCE_ERLANG_COMMENT\n\t\t\t|| style == SCE_ERLANG_COMMENT_MODULE\n\t\t\t|| style == SCE_ERLANG_COMMENT_FUNCTION) {\n\n\t\t\tif (ch == '%' && chNext == '{') {\n\t\t\t\tcurrentLevel++;\n\t\t\t} else if (ch == '%' && chNext == '}') {\n\t\t\t\tcurrentLevel--;\n\t\t\t}\n\t\t}\n\n\t\t// Fold on braces\n\t\tif (style == SCE_ERLANG_OPERATOR) {\n\t\t\tif (ch == '{' || ch == '(' || ch == '[') {\n\t\t\t\tcurrentLevel++;\n\t\t\t} else if (ch == '}' || ch == ')' || ch == ']') {\n\t\t\t\tcurrentLevel--;\n\t\t\t}\n\t\t}\n\n\n\t\tif (atEOL) {\n\t\t\tlev = previousLevel;\n\n\t\t\tif (currentLevel > previousLevel)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\n\t\t\tif (lev != styler.LevelAt(currentLine))\n\t\t\t\tstyler.SetLevel(currentLine, lev);\n\n\t\t\tcurrentLine++;\n\t\t\tpreviousLevel = currentLevel;\n\t\t}\n\n\t}\n\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tstyler.SetLevel(currentLine,\n\t\t\t\t\tpreviousLevel\n\t\t\t\t\t| (styler.LevelAt(currentLine) & ~SC_FOLDLEVELNUMBERMASK));\n}\n\nstatic const char * const erlangWordListDesc[] = {\n\t\"Erlang Reserved words\",\n\t\"Erlang BIFs\",\n\t\"Erlang Preprocessor\",\n\t\"Erlang Module Attributes\",\n\t\"Erlang Documentation\",\n\t\"Erlang Documentation Macro\",\n\t0\n};\n\nLexerModule lmErlang(\n\tSCLEX_ERLANG,\n\tColouriseErlangDoc,\n\t\"erlang\",\n\tFoldErlangDoc,\n\terlangWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexErrorList.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexErrorList.cxx\n ** Lexer for error lists. Used for the output pane in SciTE.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic bool strstart(const char *haystack, const char *needle) {\n\treturn strncmp(haystack, needle, strlen(needle)) == 0;\n}\n\nstatic bool Is0To9(char ch) {\n\treturn (ch >= '0') && (ch <= '9');\n}\n\nstatic bool Is1To9(char ch) {\n\treturn (ch >= '1') && (ch <= '9');\n}\n\nstatic bool IsAlphabetic(int ch) {\n\treturn IsASCII(ch) && isalpha(ch);\n}\n\nstatic inline bool AtEOL(Accessor &styler, Sci_PositionU i) {\n\treturn (styler[i] == '\\n') ||\n\t       ((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n'));\n}\n\nstatic int RecogniseErrorListLine(const char *lineBuffer, Sci_PositionU lengthLine, Sci_Position &startValue) {\n\tif (lineBuffer[0] == '>') {\n\t\t// Command or return status\n\t\treturn SCE_ERR_CMD;\n\t} else if (lineBuffer[0] == '<') {\n\t\t// Diff removal.\n\t\treturn SCE_ERR_DIFF_DELETION;\n\t} else if (lineBuffer[0] == '!') {\n\t\treturn SCE_ERR_DIFF_CHANGED;\n\t} else if (lineBuffer[0] == '+') {\n\t\tif (strstart(lineBuffer, \"+++ \")) {\n\t\t\treturn SCE_ERR_DIFF_MESSAGE;\n\t\t} else {\n\t\t\treturn SCE_ERR_DIFF_ADDITION;\n\t\t}\n\t} else if (lineBuffer[0] == '-') {\n\t\tif (strstart(lineBuffer, \"--- \")) {\n\t\t\treturn SCE_ERR_DIFF_MESSAGE;\n\t\t} else {\n\t\t\treturn SCE_ERR_DIFF_DELETION;\n\t\t}\n\t} else if (strstart(lineBuffer, \"cf90-\")) {\n\t\t// Absoft Pro Fortran 90/95 v8.2 error and/or warning message\n\t\treturn SCE_ERR_ABSF;\n\t} else if (strstart(lineBuffer, \"fortcom:\")) {\n\t\t// Intel Fortran Compiler v8.0 error/warning message\n\t\treturn SCE_ERR_IFORT;\n\t} else if (strstr(lineBuffer, \"File \\\"\") && strstr(lineBuffer, \", line \")) {\n\t\treturn SCE_ERR_PYTHON;\n\t} else if (strstr(lineBuffer, \" in \") && strstr(lineBuffer, \" on line \")) {\n\t\treturn SCE_ERR_PHP;\n\t} else if ((strstart(lineBuffer, \"Error \") ||\n\t            strstart(lineBuffer, \"Warning \")) &&\n\t           strstr(lineBuffer, \" at (\") &&\n\t           strstr(lineBuffer, \") : \") &&\n\t           (strstr(lineBuffer, \" at (\") < strstr(lineBuffer, \") : \"))) {\n\t\t// Intel Fortran Compiler error/warning message\n\t\treturn SCE_ERR_IFC;\n\t} else if (strstart(lineBuffer, \"Error \")) {\n\t\t// Borland error message\n\t\treturn SCE_ERR_BORLAND;\n\t} else if (strstart(lineBuffer, \"Warning \")) {\n\t\t// Borland warning message\n\t\treturn SCE_ERR_BORLAND;\n\t} else if (strstr(lineBuffer, \"at line \") &&\n\t        (strstr(lineBuffer, \"at line \") < (lineBuffer + lengthLine)) &&\n\t           strstr(lineBuffer, \"file \") &&\n\t           (strstr(lineBuffer, \"file \") < (lineBuffer + lengthLine))) {\n\t\t// Lua 4 error message\n\t\treturn SCE_ERR_LUA;\n\t} else if (strstr(lineBuffer, \" at \") &&\n\t        (strstr(lineBuffer, \" at \") < (lineBuffer + lengthLine)) &&\n\t           strstr(lineBuffer, \" line \") &&\n\t           (strstr(lineBuffer, \" line \") < (lineBuffer + lengthLine)) &&\n\t        (strstr(lineBuffer, \" at \") + 4 < (strstr(lineBuffer, \" line \")))) {\n\t\t// perl error message:\n\t\t// <message> at <file> line <line>\n\t\treturn SCE_ERR_PERL;\n\t} else if ((memcmp(lineBuffer, \"   at \", 6) == 0) &&\n\t           strstr(lineBuffer, \":line \")) {\n\t\t// A .NET traceback\n\t\treturn SCE_ERR_NET;\n\t} else if (strstart(lineBuffer, \"Line \") &&\n\t           strstr(lineBuffer, \", file \")) {\n\t\t// Essential Lahey Fortran error message\n\t\treturn SCE_ERR_ELF;\n\t} else if (strstart(lineBuffer, \"line \") &&\n\t           strstr(lineBuffer, \" column \")) {\n\t\t// HTML tidy style: line 42 column 1\n\t\treturn SCE_ERR_TIDY;\n\t} else if (strstart(lineBuffer, \"\\tat \") &&\n\t           strstr(lineBuffer, \"(\") &&\n\t           strstr(lineBuffer, \".java:\")) {\n\t\t// Java stack back trace\n\t\treturn SCE_ERR_JAVA_STACK;\n\t} else if (strstart(lineBuffer, \"In file included from \") ||\n\t           strstart(lineBuffer, \"                 from \")) {\n\t\t// GCC showing include path to following error\n\t\treturn SCE_ERR_GCC_INCLUDED_FROM;\n\t} else if (strstr(lineBuffer, \"warning LNK\")) {\n\t\t// Microsoft linker warning:\n\t\t// {<object> : } warning LNK9999\n\t\treturn SCE_ERR_MS;\n\t} else {\n\t\t// Look for one of the following formats:\n\t\t// GCC: <filename>:<line>:<message>\n\t\t// Microsoft: <filename>(<line>) :<message>\n\t\t// Common: <filename>(<line>): warning|error|note|remark|catastrophic|fatal\n\t\t// Common: <filename>(<line>) warning|error|note|remark|catastrophic|fatal\n\t\t// Microsoft: <filename>(<line>,<column>)<message>\n\t\t// CTags: <identifier>\\t<filename>\\t<message>\n\t\t// Lua 5 traceback: \\t<filename>:<line>:<message>\n\t\t// Lua 5.1: <exe>: <filename>:<line>:<message>\n\t\tbool initialTab = (lineBuffer[0] == '\\t');\n\t\tbool initialColonPart = false;\n\t\tbool canBeCtags = !initialTab;\t// For ctags must have an identifier with no spaces then a tab\n\t\tenum { stInitial,\n\t\t\tstGccStart, stGccDigit, stGccColumn, stGcc,\n\t\t\tstMsStart, stMsDigit, stMsBracket, stMsVc, stMsDigitComma, stMsDotNet,\n\t\t\tstCtagsStart, stCtagsFile, stCtagsStartString, stCtagsStringDollar, stCtags,\n\t\t\tstUnrecognized\n\t\t} state = stInitial;\n\t\tfor (Sci_PositionU i = 0; i < lengthLine; i++) {\n\t\t\tchar ch = lineBuffer[i];\n\t\t\tchar chNext = ' ';\n\t\t\tif ((i + 1) < lengthLine)\n\t\t\t\tchNext = lineBuffer[i + 1];\n\t\t\tif (state == stInitial) {\n\t\t\t\tif (ch == ':') {\n\t\t\t\t\t// May be GCC, or might be Lua 5 (Lua traceback same but with tab prefix)\n\t\t\t\t\tif ((chNext != '\\\\') && (chNext != '/') && (chNext != ' ')) {\n\t\t\t\t\t\t// This check is not completely accurate as may be on\n\t\t\t\t\t\t// GTK+ with a file name that includes ':'.\n\t\t\t\t\t\tstate = stGccStart;\n\t\t\t\t\t} else if (chNext == ' ') { // indicates a Lua 5.1 error message\n\t\t\t\t\t\tinitialColonPart = true;\n\t\t\t\t\t}\n\t\t\t\t} else if ((ch == '(') && Is1To9(chNext) && (!initialTab)) {\n\t\t\t\t\t// May be Microsoft\n\t\t\t\t\t// Check against '0' often removes phone numbers\n\t\t\t\t\tstate = stMsStart;\n\t\t\t\t} else if ((ch == '\\t') && canBeCtags) {\n\t\t\t\t\t// May be CTags\n\t\t\t\t\tstate = stCtagsStart;\n\t\t\t\t} else if (ch == ' ') {\n\t\t\t\t\tcanBeCtags = false;\n\t\t\t\t}\n\t\t\t} else if (state == stGccStart) {\t// <filename>:\n\t\t\t\tstate = Is0To9(ch) ? stGccDigit : stUnrecognized;\n\t\t\t} else if (state == stGccDigit) {\t// <filename>:<line>\n\t\t\t\tif (ch == ':') {\n\t\t\t\t\tstate = stGccColumn;\t// :9.*: is GCC\n\t\t\t\t\tstartValue = i + 1;\n\t\t\t\t} else if (!Is0To9(ch)) {\n\t\t\t\t\tstate = stUnrecognized;\n\t\t\t\t}\n\t\t\t} else if (state == stGccColumn) {\t// <filename>:<line>:<column>\n\t\t\t\tif (!Is0To9(ch)) {\n\t\t\t\t\tstate = stGcc;\n\t\t\t\t\tif (ch == ':')\n\t\t\t\t\t\tstartValue = i + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if (state == stMsStart) {\t// <filename>(\n\t\t\t\tstate = Is0To9(ch) ? stMsDigit : stUnrecognized;\n\t\t\t} else if (state == stMsDigit) {\t// <filename>(<line>\n\t\t\t\tif (ch == ',') {\n\t\t\t\t\tstate = stMsDigitComma;\n\t\t\t\t} else if (ch == ')') {\n\t\t\t\t\tstate = stMsBracket;\n\t\t\t\t} else if ((ch != ' ') && !Is0To9(ch)) {\n\t\t\t\t\tstate = stUnrecognized;\n\t\t\t\t}\n\t\t\t} else if (state == stMsBracket) {\t// <filename>(<line>)\n\t\t\t\tif ((ch == ' ') && (chNext == ':')) {\n\t\t\t\t\tstate = stMsVc;\n\t\t\t\t} else if ((ch == ':' && chNext == ' ') || (ch == ' ')) {\n\t\t\t\t\t// Possibly Delphi.. don't test against chNext as it's one of the strings below.\n\t\t\t\t\tchar word[512];\n\t\t\t\t\tSci_PositionU j, chPos;\n\t\t\t\t\tunsigned numstep;\n\t\t\t\t\tchPos = 0;\n\t\t\t\t\tif (ch == ' ')\n\t\t\t\t\t\tnumstep = 1; // ch was ' ', handle as if it's a delphi errorline, only add 1 to i.\n\t\t\t\t\telse\n\t\t\t\t\t\tnumstep = 2; // otherwise add 2.\n\t\t\t\t\tfor (j = i + numstep; j < lengthLine && IsAlphabetic(lineBuffer[j]) && chPos < sizeof(word) - 1; j++)\n\t\t\t\t\t\tword[chPos++] = lineBuffer[j];\n\t\t\t\t\tword[chPos] = 0;\n\t\t\t\t\tif (!CompareCaseInsensitive(word, \"error\") || !CompareCaseInsensitive(word, \"warning\") ||\n\t\t\t\t\t\t!CompareCaseInsensitive(word, \"fatal\") || !CompareCaseInsensitive(word, \"catastrophic\") ||\n\t\t\t\t\t\t!CompareCaseInsensitive(word, \"note\") || !CompareCaseInsensitive(word, \"remark\")) {\n\t\t\t\t\t\tstate = stMsVc;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = stUnrecognized;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstate = stUnrecognized;\n\t\t\t\t}\n\t\t\t} else if (state == stMsDigitComma) {\t// <filename>(<line>,\n\t\t\t\tif (ch == ')') {\n\t\t\t\t\tstate = stMsDotNet;\n\t\t\t\t\tbreak;\n\t\t\t\t} else if ((ch != ' ') && !Is0To9(ch)) {\n\t\t\t\t\tstate = stUnrecognized;\n\t\t\t\t}\n\t\t\t} else if (state == stCtagsStart) {\n\t\t\t\tif (ch == '\\t') {\n\t\t\t\t\tstate = stCtagsFile;\n\t\t\t\t}\n\t\t\t} else if (state == stCtagsFile) {\n\t\t\t\tif ((lineBuffer[i - 1] == '\\t') &&\n\t\t\t\t        ((ch == '/' && chNext == '^') || Is0To9(ch))) {\n\t\t\t\t\tstate = stCtags;\n\t\t\t\t\tbreak;\n\t\t\t\t} else if ((ch == '/') && (chNext == '^')) {\n\t\t\t\t\tstate = stCtagsStartString;\n\t\t\t\t}\n\t\t\t} else if ((state == stCtagsStartString) && ((lineBuffer[i] == '$') && (lineBuffer[i + 1] == '/'))) {\n\t\t\t\tstate = stCtagsStringDollar;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (state == stGcc) {\n\t\t\treturn initialColonPart ? SCE_ERR_LUA : SCE_ERR_GCC;\n\t\t} else if ((state == stMsVc) || (state == stMsDotNet)) {\n\t\t\treturn SCE_ERR_MS;\n\t\t} else if ((state == stCtagsStringDollar) || (state == stCtags)) {\n\t\t\treturn SCE_ERR_CTAG;\n\t\t} else if (initialColonPart && strstr(lineBuffer, \": warning C\")) {\n\t\t\t// Microsoft warning without line number\n\t\t\t// <filename>: warning C9999\n\t\t\treturn SCE_ERR_MS;\n\t\t} else {\n\t\t\treturn SCE_ERR_DEFAULT;\n\t\t}\n\t}\n}\n\n#define CSI \"\\033[\"\n\nnamespace {\n\nbool SequenceEnd(int ch) {\n\treturn (ch == 0) || ((ch >= '@') && (ch <= '~'));\n}\n\nint StyleFromSequence(const char *seq) {\n\tint bold = 0;\n\tint colour = 0;\n\twhile (!SequenceEnd(*seq)) {\n\t\tif (Is0To9(*seq)) {\n\t\t\tint base = *seq - '0';\n\t\t\tif (Is0To9(seq[1])) {\n\t\t\t\tbase = base * 10;\n\t\t\t\tbase += seq[1] - '0';\n\t\t\t\tseq++;\n\t\t\t}\n\t\t\tif (base == 0) {\n\t\t\t\tcolour = 0;\n\t\t\t\tbold = 0;\n\t\t\t}\n\t\t\telse if (base == 1) {\n\t\t\t\tbold = 1;\n\t\t\t}\n\t\t\telse if (base >= 30 && base <= 37) {\n\t\t\t\tcolour = base - 30;\n\t\t\t}\n\t\t}\n\t\tseq++;\n\t}\n\treturn SCE_ERR_ES_BLACK + bold * 8 + colour;\n}\n\n}\n\nstatic void ColouriseErrorListLine(\n    char *lineBuffer,\n    Sci_PositionU lengthLine,\n    Sci_PositionU endPos,\n    Accessor &styler,\n\tbool valueSeparate,\n\tbool escapeSequences) {\n\tSci_Position startValue = -1;\n\tint style = RecogniseErrorListLine(lineBuffer, lengthLine, startValue);\n\tif (escapeSequences && strstr(lineBuffer, CSI)) {\n\t\tconst int startPos = endPos - lengthLine;\n\t\tconst char *linePortion = lineBuffer;\n\t\tint startPortion = startPos;\n\t\tint portionStyle = style;\n\t\twhile (const char *startSeq = strstr(linePortion, CSI)) {\n\t\t\tif (startSeq > linePortion) {\n\t\t\t\tstyler.ColourTo(startPortion + static_cast<int>(startSeq - linePortion), portionStyle);\n\t\t\t}\n\t\t\tconst char *endSeq = startSeq + 2;\n\t\t\twhile (!SequenceEnd(*endSeq))\n\t\t\t\tendSeq++;\n\t\t\tconst int endSeqPosition = startPortion + static_cast<int>(endSeq - linePortion) + 1;\n\t\t\tswitch (*endSeq) {\n\t\t\tcase 0:\n\t\t\t\tstyler.ColourTo(endPos, SCE_ERR_ESCSEQ_UNKNOWN);\n\t\t\t\treturn;\n\t\t\tcase 'm':\t// Colour command\n\t\t\t\tstyler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ);\n\t\t\t\tportionStyle = StyleFromSequence(startSeq+2);\n\t\t\t\tbreak;\n\t\t\tcase 'K':\t// Erase to end of line -> ignore\n\t\t\t\tstyler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tstyler.ColourTo(endSeqPosition, SCE_ERR_ESCSEQ_UNKNOWN);\n\t\t\t\tportionStyle = style;\n\t\t\t}\n\t\t\tstartPortion = endSeqPosition;\n\t\t\tlinePortion = endSeq + 1;\n\t\t}\n\t\tstyler.ColourTo(endPos, portionStyle);\n\t} else {\n\t\tif (valueSeparate && (startValue >= 0)) {\n\t\t\tstyler.ColourTo(endPos - (lengthLine - startValue), style);\n\t\t\tstyler.ColourTo(endPos, SCE_ERR_VALUE);\n\t\t} else {\n\t\t\tstyler.ColourTo(endPos, style);\n\t\t}\n\t}\n}\n\nstatic void ColouriseErrorListDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tchar lineBuffer[10000];\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tSci_PositionU linePos = 0;\n\n\t// property lexer.errorlist.value.separate\n\t//\tFor lines in the output pane that are matches from Find in Files or GCC-style\n\t//\tdiagnostics, style the path and line number separately from the rest of the\n\t//\tline with style 21 used for the rest of the line.\n\t//\tThis allows matched text to be more easily distinguished from its location.\n\tbool valueSeparate = styler.GetPropertyInt(\"lexer.errorlist.value.separate\", 0) != 0;\n\n\t// property lexer.errorlist.escape.sequences\n\t//\tSet to 1 to interpret escape sequences.\n\tconst bool escapeSequences = styler.GetPropertyInt(\"lexer.errorlist.escape.sequences\") != 0;\n\n\tfor (Sci_PositionU i = startPos; i < startPos + length; i++) {\n\t\tlineBuffer[linePos++] = styler[i];\n\t\tif (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {\n\t\t\t// End of line (or of line buffer) met, colourise it\n\t\t\tlineBuffer[linePos] = '\\0';\n\t\t\tColouriseErrorListLine(lineBuffer, linePos, i, styler, valueSeparate, escapeSequences);\n\t\t\tlinePos = 0;\n\t\t}\n\t}\n\tif (linePos > 0) {\t// Last line does not have ending characters\n\t\tlineBuffer[linePos] = '\\0';\n\t\tColouriseErrorListLine(lineBuffer, linePos, startPos + length - 1, styler, valueSeparate, escapeSequences);\n\t}\n}\n\nstatic const char *const emptyWordListDesc[] = {\n\t0\n};\n\nLexerModule lmErrorList(SCLEX_ERRORLIST, ColouriseErrorListDoc, \"errorlist\", 0, emptyWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexFlagship.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexFlagShip.cxx\n ** Lexer for Harbour and FlagShip.\n ** (Syntactically compatible to other xBase dialects, like Clipper, dBase, Clip, FoxPro etc.)\n **/\n// Copyright 2005 by Randy Butler\n// Copyright 2010 by Xavi <jarabal/at/gmail.com> (Harbour)\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Extended to accept accented characters\nstatic inline bool IsAWordChar(int ch)\n{\n\treturn ch >= 0x80 ||\n\t\t\t\t(isalnum(ch) || ch == '_');\n}\n\nstatic void ColouriseFlagShipDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                                 WordList *keywordlists[], Accessor &styler)\n{\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\tWordList &keywords5 = *keywordlists[4];\n\n\t// property lexer.flagship.styling.within.preprocessor\n\t//\tFor Harbour code, determines whether all preprocessor code is styled in the preprocessor style (0) or only from the\n\t//\tinitial # to the end of the command word(1, the default). It also determines how to present text, dump, and disabled code.\n\tbool stylingWithinPreprocessor = styler.GetPropertyInt(\"lexer.flagship.styling.within.preprocessor\", 1) != 0;\n\n\tCharacterSet setDoxygen(CharacterSet::setAlpha, \"$@\\\\&<>#{}[]\");\n\n\tint visibleChars = 0;\n\tint closeStringChar = 0;\n\tint styleBeforeDCKeyword = SCE_FS_DEFAULT;\n\tbool bEnableCode = initStyle < SCE_FS_DISABLEDCODE;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_FS_OPERATOR:\n\t\t\tcase SCE_FS_OPERATOR_C:\n\t\t\tcase SCE_FS_WORDOPERATOR:\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_IDENTIFIER:\n\t\t\tcase SCE_FS_IDENTIFIER_C:\n\t\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\t\tchar s[64];\n\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(bEnableCode ? SCE_FS_KEYWORD : SCE_FS_KEYWORD_C);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(bEnableCode ? SCE_FS_KEYWORD2 : SCE_FS_KEYWORD2_C);\n\t\t\t\t\t} else if (bEnableCode && keywords3.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_FS_KEYWORD3);\n\t\t\t\t\t} else if (bEnableCode && keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_FS_KEYWORD4);\n\t\t\t\t\t}// Else, it is really an identifier...\n\t\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_NUMBER:\n\t\t\t\tif (!IsAWordChar(sc.ch) && !(sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\t\tsc.SetState(SCE_FS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_NUMBER_C:\n\t\t\t\tif (!IsAWordChar(sc.ch) && sc.ch != '.') {\n\t\t\t\t\tsc.SetState(SCE_FS_DEFAULT_C);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_CONSTANT:\n\t\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_FS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_STRING:\n\t\t\tcase SCE_FS_STRING_C:\n\t\t\t\tif (sc.ch == closeStringChar) {\n\t\t\t\t\tsc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(bEnableCode ? SCE_FS_STRINGEOL : SCE_FS_STRINGEOL_C);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_STRINGEOL:\n\t\t\tcase SCE_FS_STRINGEOL_C:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_COMMENTDOC:\n\t\t\tcase SCE_FS_COMMENTDOC_C:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // JavaDoc and Doxygen support\n\t\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\t\tstyleBeforeDCKeyword = bEnableCode ? SCE_FS_COMMENTDOC : SCE_FS_COMMENTDOC_C;\n\t\t\t\t\t\tsc.SetState(SCE_FS_COMMENTDOCKEYWORD);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_COMMENT:\n\t\t\tcase SCE_FS_COMMENTLINE:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_FS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_COMMENTLINEDOC:\n\t\t\tcase SCE_FS_COMMENTLINEDOC_C:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // JavaDoc and Doxygen support\n\t\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '/' || sc.chPrev == '!') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\t\tstyleBeforeDCKeyword = bEnableCode ? SCE_FS_COMMENTLINEDOC : SCE_FS_COMMENTLINEDOC_C;\n\t\t\t\t\t\tsc.SetState(SCE_FS_COMMENTDOCKEYWORD);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_COMMENTDOCKEYWORD:\n\t\t\t\tif ((styleBeforeDCKeyword == SCE_FS_COMMENTDOC || styleBeforeDCKeyword == SCE_FS_COMMENTDOC_C) &&\n\t\t\t\t\t\tsc.Match('*', '/')) {\n\t\t\t\t\tsc.ChangeState(SCE_FS_COMMENTDOCKEYWORDERROR);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t} else if (!setDoxygen.Contains(sc.ch)) {\n\t\t\t\t\tchar s[64];\n\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\tif (!IsASpace(sc.ch) || !keywords5.InList(s + 1)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_FS_COMMENTDOCKEYWORDERROR);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(styleBeforeDCKeyword);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_PREPROCESSOR:\n\t\t\tcase SCE_FS_PREPROCESSOR_C:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tif (!(sc.chPrev == ';' || sc.GetRelative(-2) == ';')) {\n\t\t\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t\t}\n\t\t\t\t} else if (stylingWithinPreprocessor) {\n\t\t\t\t\tif (IsASpaceOrTab(sc.ch)) {\n\t\t\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.Match('/', '*') || sc.Match('/', '/') || sc.Match('&', '&')) {\n\t\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_DISABLEDCODE:\n\t\t\t\tif (sc.ch == '#' && visibleChars == 0) {\n\t\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_PREPROCESSOR : SCE_FS_PREPROCESSOR_C);\n\t\t\t\t\tdo {\t// Skip whitespace between # and preprocessor word\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} while (IsASpaceOrTab(sc.ch) && sc.More());\n\t\t\t\t\tif (sc.MatchIgnoreCase(\"pragma\")) {\n\t\t\t\t\t\tsc.Forward(6);\n\t\t\t\t\t\tdo {\t// Skip more whitespace until keyword\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t} while (IsASpaceOrTab(sc.ch) && sc.More());\n\t\t\t\t\t\tif (sc.MatchIgnoreCase(\"enddump\") || sc.MatchIgnoreCase(\"__endtext\")) {\n\t\t\t\t\t\t\tbEnableCode = true;\n\t\t\t\t\t\t\tsc.SetState(SCE_FS_DISABLEDCODE);\n\t\t\t\t\t\t\tsc.Forward(sc.ch == '_' ? 8 : 6);\n\t\t\t\t\t\t\tsc.ForwardSetState(SCE_FS_DEFAULT);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_FS_DISABLEDCODE);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.ChangeState(SCE_FS_DISABLEDCODE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_FS_DATE:\n\t\t\t\tif (sc.ch == '}') {\n\t\t\t\t\tsc.ForwardSetState(SCE_FS_DEFAULT);\n\t\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_FS_STRINGEOL);\n\t\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_FS_DEFAULT || sc.state == SCE_FS_DEFAULT_C) {\n\t\t\tif (bEnableCode &&\n\t\t\t\t\t(sc.MatchIgnoreCase(\".and.\") || sc.MatchIgnoreCase(\".not.\"))) {\n\t\t\t\tsc.SetState(SCE_FS_WORDOPERATOR);\n\t\t\t\tsc.Forward(4);\n\t\t\t} else if (bEnableCode && sc.MatchIgnoreCase(\".or.\")) {\n\t\t\t\tsc.SetState(SCE_FS_WORDOPERATOR);\n\t\t\t\tsc.Forward(3);\n\t\t\t} else if (bEnableCode &&\n\t\t\t\t\t(sc.MatchIgnoreCase(\".t.\") || sc.MatchIgnoreCase(\".f.\") ||\n\t\t\t\t\t(!IsAWordChar(sc.GetRelative(3)) && sc.MatchIgnoreCase(\"nil\")))) {\n\t\t\t\tsc.SetState(SCE_FS_CONSTANT);\n\t\t\t\tsc.Forward(2);\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_COMMENTDOC : SCE_FS_COMMENTDOC_C);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (bEnableCode && sc.Match('&', '&')) {\n\t\t\t\tsc.SetState(SCE_FS_COMMENTLINE);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_COMMENTLINEDOC : SCE_FS_COMMENTLINEDOC_C);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (bEnableCode && sc.ch == '*' && visibleChars == 0) {\n\t\t\t\tsc.SetState(SCE_FS_COMMENT);\n\t\t\t} else if (sc.ch == '\\\"' || sc.ch == '\\'') {\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_STRING : SCE_FS_STRING_C);\n\t\t\t\tcloseStringChar = sc.ch;\n\t\t\t} else if (closeStringChar == '>' && sc.ch == '<') {\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_STRING : SCE_FS_STRING_C);\n\t\t\t} else if (sc.ch == '#' && visibleChars == 0) {\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_PREPROCESSOR : SCE_FS_PREPROCESSOR_C);\n\t\t\t\tdo {\t// Skip whitespace between # and preprocessor word\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} while (IsASpaceOrTab(sc.ch) && sc.More());\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_DEFAULT : SCE_FS_DEFAULT_C);\n\t\t\t\t} else if (sc.MatchIgnoreCase(\"include\")) {\n\t\t\t\t\tif (stylingWithinPreprocessor) {\n\t\t\t\t\t\tcloseStringChar = '>';\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.MatchIgnoreCase(\"pragma\")) {\n\t\t\t\t\tsc.Forward(6);\n\t\t\t\t\tdo {\t// Skip more whitespace until keyword\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} while (IsASpaceOrTab(sc.ch) && sc.More());\n\t\t\t\t\tif (sc.MatchIgnoreCase(\"begindump\") || sc.MatchIgnoreCase(\"__cstream\")) {\n\t\t\t\t\t\tbEnableCode = false;\n\t\t\t\t\t\tif (stylingWithinPreprocessor) {\n\t\t\t\t\t\t\tsc.SetState(SCE_FS_DISABLEDCODE);\n\t\t\t\t\t\t\tsc.Forward(8);\n\t\t\t\t\t\t\tsc.ForwardSetState(SCE_FS_DEFAULT_C);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState(SCE_FS_DISABLEDCODE);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (sc.MatchIgnoreCase(\"enddump\") || sc.MatchIgnoreCase(\"__endtext\")) {\n\t\t\t\t\t\tbEnableCode = true;\n\t\t\t\t\t\tsc.SetState(SCE_FS_DISABLEDCODE);\n\t\t\t\t\t\tsc.Forward(sc.ch == '_' ? 8 : 6);\n\t\t\t\t\t\tsc.ForwardSetState(SCE_FS_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (bEnableCode && sc.ch == '{') {\n\t\t\t\tSci_Position p = 0;\n\t\t\t\tint chSeek;\n\t\t\t\tSci_PositionU endPos(startPos + length);\n\t\t\t\tdo {\t// Skip whitespace\n\t\t\t\t\tchSeek = sc.GetRelative(++p);\n\t\t\t\t} while (IsASpaceOrTab(chSeek) && (sc.currentPos + p < endPos));\n\t\t\t\tif (chSeek == '^') {\n\t\t\t\t\tsc.SetState(SCE_FS_DATE);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_FS_OPERATOR);\n\t\t\t\t}\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_NUMBER : SCE_FS_NUMBER_C);\n\t\t\t} else if (IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_IDENTIFIER : SCE_FS_IDENTIFIER_C);\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch)) || (bEnableCode && sc.ch == '@')) {\n\t\t\t\tsc.SetState(bEnableCode ? SCE_FS_OPERATOR : SCE_FS_OPERATOR_C);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\tvisibleChars = 0;\n\t\t\tcloseStringChar = 0;\n\t\t}\n\t\tif (!IsASpace(sc.ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldFlagShipDoc(Sci_PositionU startPos, Sci_Position length, int,\n\t\t\t\t\t\t\t\t\tWordList *[], Accessor &styler)\n{\n\n\tSci_Position endPos = startPos + length;\n\n\t// Backtrack to previous line in case need to fix its fold status\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tif (startPos > 0 && lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\tstartPos = styler.LineStart(lineCurrent);\n\t}\n\tint spaceFlags = 0;\n\tint indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags);\n\tchar chNext = styler[startPos];\n\tfor (Sci_Position i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n') || (i == endPos-1)) {\n\t\t\tint lev = indentCurrent;\n\t\t\tint indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags);\n\t\t\tif (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {\n\t\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) {\n\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t} else if (indentNext & SC_FOLDLEVELWHITEFLAG) {\n\t\t\t\t\tint spaceFlags2 = 0;\n\t\t\t\t\tint indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2);\n\t\t\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) {\n\t\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tindentCurrent = indentNext;\n\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\tlineCurrent++;\n\t\t}\n\t}\n}\n\nstatic const char * const FSWordListDesc[] = {\n\t\"Keywords Commands\",\n\t\"Std Library Functions\",\n\t\"Procedure, return, exit\",\n\t\"Class (oop)\",\n\t\"Doxygen keywords\",\n\t0\n};\n\nLexerModule lmFlagShip(SCLEX_FLAGSHIP, ColouriseFlagShipDoc, \"flagship\", FoldFlagShipDoc, FSWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexForth.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexForth.cxx\n ** Lexer for FORTH\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordStart(int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.');\n}\n\nstatic inline bool IsANumChar(int ch) {\n\treturn (ch < 0x80) && (isxdigit(ch) || ch == '.' || ch == 'e' || ch == 'E' );\n}\n\nstatic inline bool IsASpaceChar(int ch) {\n\treturn (ch < 0x80) && isspace(ch);\n}\n\nstatic void ColouriseForthDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordLists[],\n                            Accessor &styler) {\n\n    WordList &control = *keywordLists[0];\n    WordList &keyword = *keywordLists[1];\n    WordList &defword = *keywordLists[2];\n    WordList &preword1 = *keywordLists[3];\n    WordList &preword2 = *keywordLists[4];\n    WordList &strings = *keywordLists[5];\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward())\n\t{\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_FORTH_COMMENT) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_FORTH_DEFAULT);\n\t\t\t}\n\t\t}else if (sc.state == SCE_FORTH_COMMENT_ML) {\n\t\t\tif (sc.ch == ')') {\n\t\t\t\tsc.ForwardSetState(SCE_FORTH_DEFAULT);\n\t\t\t}\n\t\t}else if (sc.state == SCE_FORTH_IDENTIFIER || sc.state == SCE_FORTH_NUMBER) {\n\t\t\t// handle numbers here too, because what we thought was a number might\n\t\t\t// turn out to be a keyword e.g. 2DUP\n\t\t\tif (IsASpaceChar(sc.ch) ) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tint newState = sc.state == SCE_FORTH_NUMBER ? SCE_FORTH_NUMBER : SCE_FORTH_DEFAULT;\n\t\t\t\tif (control.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_FORTH_CONTROL);\n\t\t\t\t} else if (keyword.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_FORTH_KEYWORD);\n\t\t\t\t} else if (defword.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_FORTH_DEFWORD);\n\t\t\t\t}  else if (preword1.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_FORTH_PREWORD1);\n\t\t\t\t} else if (preword2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_FORTH_PREWORD2);\n\t\t\t\t} else if (strings.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_FORTH_STRING);\n\t\t\t\t\tnewState = SCE_FORTH_STRING;\n\t\t\t\t}\n\t\t\t\tsc.SetState(newState);\n\t\t\t}\n\t\t\tif (sc.state == SCE_FORTH_NUMBER) {\n\t\t\t\tif (IsASpaceChar(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_FORTH_DEFAULT);\n\t\t\t\t} else if (!IsANumChar(sc.ch)) {\n\t\t\t\t\tsc.ChangeState(SCE_FORTH_IDENTIFIER);\n\t\t\t\t}\n\t\t\t}\n\t\t}else if (sc.state == SCE_FORTH_STRING) {\n\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_FORTH_DEFAULT);\n\t\t\t}\n\t\t}else if (sc.state == SCE_FORTH_LOCALE) {\n\t\t\tif (sc.ch == '}') {\n\t\t\t\tsc.ForwardSetState(SCE_FORTH_DEFAULT);\n\t\t\t}\n\t\t}else if (sc.state == SCE_FORTH_DEFWORD) {\n\t\t\tif (IsASpaceChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_FORTH_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_FORTH_DEFAULT) {\n\t\t\tif (sc.ch == '\\\\'){\n\t\t\t\tsc.SetState(SCE_FORTH_COMMENT);\n\t\t\t} else if (sc.ch == '(' &&\n\t\t\t\t\t(sc.atLineStart || IsASpaceChar(sc.chPrev)) &&\n\t\t\t\t\t(sc.atLineEnd   || IsASpaceChar(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_FORTH_COMMENT_ML);\n\t\t\t} else if (\t(sc.ch == '$' && (IsASCII(sc.chNext) && isxdigit(sc.chNext))) ) {\n\t\t\t\t// number starting with $ is a hex number\n\t\t\t\tsc.SetState(SCE_FORTH_NUMBER);\n\t\t\t\twhile(sc.More() && IsASCII(sc.chNext) && isxdigit(sc.chNext))\n\t\t\t\t\tsc.Forward();\n\t\t\t} else if ( (sc.ch == '%' && (IsASCII(sc.chNext) && (sc.chNext == '0' || sc.chNext == '1'))) ) {\n\t\t\t\t// number starting with % is binary\n\t\t\t\tsc.SetState(SCE_FORTH_NUMBER);\n\t\t\t\twhile(sc.More() && IsASCII(sc.chNext) && (sc.chNext == '0' || sc.chNext == '1'))\n\t\t\t\t\tsc.Forward();\n\t\t\t} else if (\tIsASCII(sc.ch) &&\n\t\t\t\t\t\t(isxdigit(sc.ch) || ((sc.ch == '.' || sc.ch == '-') && IsASCII(sc.chNext) && isxdigit(sc.chNext)) )\n\t\t\t\t\t){\n\t\t\t\tsc.SetState(SCE_FORTH_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_FORTH_IDENTIFIER);\n\t\t\t} else if (sc.ch == '{') {\n\t\t\t\tsc.SetState(SCE_FORTH_LOCALE);\n\t\t\t} else if (sc.ch == ':' && IsASCII(sc.chNext) && isspace(sc.chNext)) {\n\t\t\t\t// highlight word definitions e.g.  : GCD ( n n -- n ) ..... ;\n\t\t\t\t//                                  ^ ^^^\n\t\t\t\tsc.SetState(SCE_FORTH_DEFWORD);\n\t\t\t\twhile(sc.More() && IsASCII(sc.chNext) && isspace(sc.chNext))\n\t\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == ';' &&\n\t\t\t\t\t(sc.atLineStart || IsASpaceChar(sc.chPrev)) &&\n\t\t\t\t\t(sc.atLineEnd   || IsASpaceChar(sc.chNext))\t) {\n\t\t\t\t// mark the ';' that ends a word\n\t\t\t\tsc.SetState(SCE_FORTH_DEFWORD);\n\t\t\t\tsc.ForwardSetState(SCE_FORTH_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldForthDoc(Sci_PositionU, Sci_Position, int, WordList *[],\n\t\t\t\t\t\tAccessor &) {\n}\n\nstatic const char * const forthWordLists[] = {\n\t\t\t\"control keywords\",\n\t\t\t\"keywords\",\n\t\t\t\"definition words\",\n\t\t\t\"prewords with one argument\",\n\t\t\t\"prewords with two arguments\",\n\t\t\t\"string definition keywords\",\n\t\t\t0,\n\t\t};\n\nLexerModule lmForth(SCLEX_FORTH, ColouriseForthDoc, \"forth\", FoldForthDoc, forthWordLists);\n\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexFortran.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexFortran.cxx\n ** Lexer for Fortran.\n ** Written by Chuan-jian Shen, Last changed Sep. 2003\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n/***************************************/\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n/***************************************/\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n/***************************************/\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/***********************************************/\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '%');\n}\n/**********************************************/\nstatic inline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch));\n}\n/***************************************/\nstatic inline bool IsABlank(unsigned int ch) {\n\treturn (ch == ' ') || (ch == 0x09) || (ch == 0x0b) ;\n}\n/***************************************/\nstatic inline bool IsALineEnd(char ch) {\n\treturn ((ch == '\\n') || (ch == '\\r')) ;\n}\n/***************************************/\nstatic Sci_PositionU GetContinuedPos(Sci_PositionU pos, Accessor &styler) {\n\twhile (!IsALineEnd(styler.SafeGetCharAt(pos++))) continue;\n\tif (styler.SafeGetCharAt(pos) == '\\n') pos++;\n\twhile (IsABlank(styler.SafeGetCharAt(pos++))) continue;\n\tchar chCur = styler.SafeGetCharAt(pos);\n\tif (chCur == '&') {\n\t\twhile (IsABlank(styler.SafeGetCharAt(++pos))) continue;\n\t\treturn pos;\n\t} else {\n\t\treturn pos;\n\t}\n}\n/***************************************/\nstatic void ColouriseFortranDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n        WordList *keywordlists[], Accessor &styler, bool isFixFormat) {\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\t/***************************************/\n\tSci_Position posLineStart = 0;\n\tint numNonBlank = 0, prevState = 0;\n\tSci_Position endPos = startPos + length;\n\t/***************************************/\n\t// backtrack to the nearest keyword\n\twhile ((startPos > 1) && (styler.StyleAt(startPos) != SCE_F_WORD)) {\n\t\tstartPos--;\n\t}\n\tstartPos = styler.LineStart(styler.GetLine(startPos));\n\tinitStyle = styler.StyleAt(startPos - 1);\n\tStyleContext sc(startPos, endPos-startPos, initStyle, styler);\n\t/***************************************/\n\tfor (; sc.More(); sc.Forward()) {\n\t\t// remember the start position of the line\n\t\tif (sc.atLineStart) {\n\t\t\tposLineStart = sc.currentPos;\n\t\t\tnumNonBlank = 0;\n\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t}\n\t\tif (!IsASpaceOrTab(sc.ch)) numNonBlank ++;\n\t\t/***********************************************/\n\t\t// Handle the fix format generically\n\t\tSci_Position toLineStart = sc.currentPos - posLineStart;\n\t\tif (isFixFormat && (toLineStart < 6 || toLineStart >= 72)) {\n\t\t\tif ((toLineStart == 0 && (tolower(sc.ch) == 'c' || sc.ch == '*')) || sc.ch == '!') {\n\t\t\t\tif (sc.MatchIgnoreCase(\"cdec$\") || sc.MatchIgnoreCase(\"*dec$\") || sc.MatchIgnoreCase(\"!dec$\") ||\n\t\t\t\t        sc.MatchIgnoreCase(\"cdir$\") || sc.MatchIgnoreCase(\"*dir$\") || sc.MatchIgnoreCase(\"!dir$\") ||\n\t\t\t\t        sc.MatchIgnoreCase(\"cms$\")  || sc.MatchIgnoreCase(\"*ms$\")  || sc.MatchIgnoreCase(\"!ms$\")  ||\n\t\t\t\t        sc.chNext == '$') {\n\t\t\t\t\tsc.SetState(SCE_F_PREPROCESSOR);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_F_COMMENT);\n\t\t\t\t}\n\n\t\t\t\twhile (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end\n\t\t\t} else if (toLineStart >= 72) {\n\t\t\t\tsc.SetState(SCE_F_COMMENT);\n\t\t\t\twhile (!sc.atLineEnd && sc.More()) sc.Forward(); // Until line end\n\t\t\t} else if (toLineStart < 5) {\n\t\t\t\tif (IsADigit(sc.ch))\n\t\t\t\t\tsc.SetState(SCE_F_LABEL);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t\t} else if (toLineStart == 5) {\n\t\t\t\t//if (!IsASpace(sc.ch) && sc.ch != '0') {\n\t\t\t\tif (sc.ch != '\\r' && sc.ch != '\\n') {\n\t\t\t\t\tsc.SetState(SCE_F_CONTINUATION);\n\t\t\t\t\tif (!IsASpace(sc.ch) && sc.ch != '0')\n\t\t\t\t\t\tsc.ForwardSetState(prevState);\n\t\t\t\t} else\n\t\t\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\t/***************************************/\n\t\t// Hanndle preprocessor directives\n\t\tif (sc.ch == '#' && numNonBlank == 1)\n\t\t{\n\t\t\tsc.SetState(SCE_F_PREPROCESSOR);\n\t\t\twhile (!sc.atLineEnd && sc.More())\n\t\t\t\tsc.Forward(); // Until line end\n\t\t}\n\t\t/***************************************/\n\t\t// Handle line continuation generically.\n\t\tif (!isFixFormat && sc.ch == '&' && sc.state != SCE_F_COMMENT) {\n\t\t\tchar chTemp = ' ';\n\t\t\tSci_Position j = 1;\n\t\t\twhile (IsABlank(chTemp) && j<132) {\n\t\t\t\tchTemp = static_cast<char>(sc.GetRelative(j));\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (chTemp == '!') {\n\t\t\t\tsc.SetState(SCE_F_CONTINUATION);\n\t\t\t\tif (sc.chNext == '!') sc.ForwardSetState(SCE_F_COMMENT);\n\t\t\t} else if (chTemp == '\\r' || chTemp == '\\n') {\n\t\t\t\tint currentState = sc.state;\n\t\t\t\tsc.SetState(SCE_F_CONTINUATION);\n\t\t\t\tsc.ForwardSetState(SCE_F_DEFAULT);\n\t\t\t\twhile (IsASpace(sc.ch) && sc.More()) sc.Forward();\n\t\t\t\tif (sc.ch == '&') {\n\t\t\t\t\tsc.SetState(SCE_F_CONTINUATION);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tsc.SetState(currentState);\n\t\t\t}\n\t\t}\n\t\t/***************************************/\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_F_OPERATOR) {\n\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t} else if (sc.state == SCE_F_NUMBER) {\n\t\t\tif (!(IsAWordChar(sc.ch) || sc.ch=='\\'' || sc.ch=='\\\"' || sc.ch=='.')) {\n\t\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_F_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch) || (sc.ch == '%')) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_F_WORD);\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_F_WORD2);\n\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_F_WORD3);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_F_COMMENT || sc.state == SCE_F_PREPROCESSOR) {\n\t\t\tif (sc.ch == '\\r' || sc.ch == '\\n') {\n\t\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_F_STRING1) {\n\t\t\tprevState = sc.state;\n\t\t\tif (sc.ch == '\\'') {\n\t\t\t\tif (sc.chNext == '\\'') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.ForwardSetState(SCE_F_DEFAULT);\n\t\t\t\t\tprevState = SCE_F_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_F_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_F_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_F_STRING2) {\n\t\t\tprevState = sc.state;\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_F_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_F_DEFAULT);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tif (sc.chNext == '\\\"') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.ForwardSetState(SCE_F_DEFAULT);\n\t\t\t\t\tprevState = SCE_F_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_F_OPERATOR2) {\n\t\t\tif (sc.ch == '.') {\n\t\t\t\tsc.ForwardSetState(SCE_F_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_F_CONTINUATION) {\n\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t} else if (sc.state == SCE_F_LABEL) {\n\t\t\tif (!IsADigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t\t} else {\n\t\t\t\tif (isFixFormat && sc.currentPos-posLineStart > 4)\n\t\t\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t\t\telse if (numNonBlank > 5)\n\t\t\t\t\tsc.SetState(SCE_F_DEFAULT);\n\t\t\t}\n\t\t}\n\t\t/***************************************/\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_F_DEFAULT) {\n\t\t\tif (sc.ch == '!') {\n\t\t\t\tif (sc.MatchIgnoreCase(\"!dec$\") || sc.MatchIgnoreCase(\"!dir$\") ||\n\t\t\t\t        sc.MatchIgnoreCase(\"!ms$\") || sc.chNext == '$') {\n\t\t\t\t\tsc.SetState(SCE_F_PREPROCESSOR);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_F_COMMENT);\n\t\t\t\t}\n\t\t\t} else if ((!isFixFormat) && IsADigit(sc.ch) && numNonBlank == 1) {\n\t\t\t\tsc.SetState(SCE_F_LABEL);\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_F_NUMBER);\n\t\t\t} else if ((tolower(sc.ch) == 'b' || tolower(sc.ch) == 'o' ||\n\t\t\t        tolower(sc.ch) == 'z') && (sc.chNext == '\\\"' || sc.chNext == '\\'')) {\n\t\t\t\tsc.SetState(SCE_F_NUMBER);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '.' && isalpha(sc.chNext)) {\n\t\t\t\tsc.SetState(SCE_F_OPERATOR2);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_F_IDENTIFIER);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_F_STRING2);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_F_STRING1);\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_F_OPERATOR);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n/***************************************/\n// To determine the folding level depending on keywords\nstatic int classifyFoldPointFortran(const char* s, const char* prevWord, const char chNextNonBlank) {\n\tint lev = 0;\n\n\tif ((strcmp(prevWord, \"module\") == 0 && strcmp(s, \"subroutine\") == 0)\n\t\t|| (strcmp(prevWord, \"module\") == 0 && strcmp(s, \"function\") == 0)) {\n\t\tlev = 0;\n\t} else if (strcmp(s, \"associate\") == 0 || strcmp(s, \"block\") == 0\n\t        || strcmp(s, \"blockdata\") == 0 || strcmp(s, \"select\") == 0\n\t        || strcmp(s, \"selecttype\") == 0 || strcmp(s, \"selectcase\") == 0\n\t        || strcmp(s, \"do\") == 0 || strcmp(s, \"enum\") ==0\n\t        || strcmp(s, \"function\") == 0 || strcmp(s, \"interface\") == 0\n\t        || strcmp(s, \"module\") == 0 || strcmp(s, \"program\") == 0\n\t        || strcmp(s, \"subroutine\") == 0 || strcmp(s, \"then\") == 0\n\t        || (strcmp(s, \"type\") == 0 && chNextNonBlank != '(')\n\t\t|| strcmp(s, \"critical\") == 0 || strcmp(s, \"submodule\") == 0){\n\t\tif (strcmp(prevWord, \"end\") == 0)\n\t\t\tlev = 0;\n\t\telse\n\t\t\tlev = 1;\n\t} else if ((strcmp(s, \"end\") == 0 && chNextNonBlank != '=')\n\t        || strcmp(s, \"endassociate\") == 0 || strcmp(s, \"endblock\") == 0\n\t        || strcmp(s, \"endblockdata\") == 0 || strcmp(s, \"endselect\") == 0\n\t        || strcmp(s, \"enddo\") == 0 || strcmp(s, \"endenum\") ==0\n\t        || strcmp(s, \"endif\") == 0 || strcmp(s, \"endforall\") == 0\n\t        || strcmp(s, \"endfunction\") == 0 || strcmp(s, \"endinterface\") == 0\n\t        || strcmp(s, \"endmodule\") == 0 || strcmp(s, \"endprogram\") == 0\n\t        || strcmp(s, \"endsubroutine\") == 0 || strcmp(s, \"endtype\") == 0\n\t        || strcmp(s, \"endwhere\") == 0 || strcmp(s, \"endcritical\") == 0\n\t\t|| (strcmp(prevWord, \"module\") == 0 && strcmp(s, \"procedure\") == 0)  // Take care of the \"module procedure\" statement\n\t\t|| strcmp(s, \"endsubmodule\") == 0) {\n\t\tlev = -1;\n\t} else if (strcmp(prevWord, \"end\") == 0 && strcmp(s, \"if\") == 0){ // end if\n\t\tlev = 0;\n\t} else if (strcmp(prevWord, \"type\") == 0 && strcmp(s, \"is\") == 0){ // type is\n\t\tlev = -1;\n\t} else if ((strcmp(prevWord, \"end\") == 0 && strcmp(s, \"procedure\") == 0)\n\t\t\t   || strcmp(s, \"endprocedure\") == 0) {\n\t\t\tlev = 1; // level back to 0, because no folding support for \"module procedure\" in submodule\n\t}\n\treturn lev;\n}\n/***************************************/\n// Folding the code\nstatic void FoldFortranDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n        Accessor &styler, bool isFixFormat) {\n\t//\n\t// bool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\t// Do not know how to fold the comment at the moment.\n\t//\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent;\n\tbool isPrevLine;\n\tif (lineCurrent > 0) {\n\t\tlineCurrent--;\n\t\tstartPos = styler.LineStart(lineCurrent);\n\t\tlevelCurrent = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\t\tisPrevLine = true;\n\t} else {\n\t\tlevelCurrent = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\t\tisPrevLine = false;\n\t}\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tint levelDeltaNext = 0;\n\t/***************************************/\n\tSci_Position lastStart = 0;\n\tchar prevWord[32] = \"\";\n\t/***************************************/\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tchar chNextNonBlank = chNext;\n\t\tbool nextEOL = false;\n\t\tif (IsALineEnd(chNextNonBlank)) {\n\t\t\tnextEOL = true;\n\t\t}\n\t\tSci_PositionU j=i+1;\n\t\twhile(IsABlank(chNextNonBlank) && j<endPos) {\n\t\t\tj ++ ;\n\t\t\tchNextNonBlank = styler.SafeGetCharAt(j);\n\t\t\tif (IsALineEnd(chNextNonBlank)) {\n\t\t\t\tnextEOL = true;\n\t\t\t}\n\t\t}\n\t\tif (!nextEOL && j == endPos) {\n\t\t\tnextEOL = true;\n\t\t}\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\t//\n\t\tif (((isFixFormat && stylePrev == SCE_F_CONTINUATION) || stylePrev == SCE_F_DEFAULT\n\t\t\t|| stylePrev == SCE_F_OPERATOR) && (style == SCE_F_WORD || style == SCE_F_LABEL)) {\n\t\t\t// Store last word and label start point.\n\t\t\tlastStart = i;\n\t\t}\n\t\t/***************************************/\n\t\tif (style == SCE_F_WORD) {\n\t\t\tif(iswordchar(ch) && !iswordchar(chNext)) {\n\t\t\t\tchar s[32];\n\t\t\t\tSci_PositionU k;\n\t\t\t\tfor(k=0; (k<31 ) && (k<i-lastStart+1 ); k++) {\n\t\t\t\t\ts[k] = static_cast<char>(tolower(styler[lastStart+k]));\n\t\t\t\t}\n\t\t\t\ts[k] = '\\0';\n\t\t\t\t// Handle the forall and where statement and structure.\n\t\t\t\tif (strcmp(s, \"forall\") == 0 || (strcmp(s, \"where\") == 0 && strcmp(prevWord, \"else\") != 0)) {\n\t\t\t\t\tif (strcmp(prevWord, \"end\") != 0) {\n\t\t\t\t\t\tj = i + 1;\n\t\t\t\t\t\tchar chBrace = '(', chSeek = ')', ch1 = styler.SafeGetCharAt(j);\n\t\t\t\t\t\t// Find the position of the first (\n\t\t\t\t\t\twhile (ch1 != chBrace && j<endPos) {\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t\tch1 = styler.SafeGetCharAt(j);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchar styBrace = styler.StyleAt(j);\n\t\t\t\t\t\tint depth = 1;\n\t\t\t\t\t\tchar chAtPos;\n\t\t\t\t\t\tchar styAtPos;\n\t\t\t\t\t\twhile (j<endPos) {\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t\tchAtPos = styler.SafeGetCharAt(j);\n\t\t\t\t\t\t\tstyAtPos = styler.StyleAt(j);\n\t\t\t\t\t\t\tif (styAtPos == styBrace) {\n\t\t\t\t\t\t\t\tif (chAtPos == chBrace) depth++;\n\t\t\t\t\t\t\t\tif (chAtPos == chSeek) depth--;\n\t\t\t\t\t\t\t\tif (depth == 0) break;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tSci_Position tmpLineCurrent = lineCurrent;\n\t\t\t\t\t\twhile (j<endPos) {\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t\tchAtPos = styler.SafeGetCharAt(j);\n\t\t\t\t\t\t\tstyAtPos = styler.StyleAt(j);\n\t\t\t\t\t\t\tif (!IsALineEnd(chAtPos) && (styAtPos == SCE_F_COMMENT || IsABlank(chAtPos))) continue;\n\t\t\t\t\t\t\tif (isFixFormat) {\n\t\t\t\t\t\t\t\tif (!IsALineEnd(chAtPos)) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (tmpLineCurrent < styler.GetLine(styler.Length()-1)) {\n\t\t\t\t\t\t\t\t\t\ttmpLineCurrent++;\n\t\t\t\t\t\t\t\t\t\tj = styler.LineStart(tmpLineCurrent);\n\t\t\t\t\t\t\t\t\t\tif (styler.StyleAt(j+5) == SCE_F_CONTINUATION\n\t\t\t\t\t\t\t\t\t\t\t&& !IsABlank(styler.SafeGetCharAt(j+5)) && styler.SafeGetCharAt(j+5) != '0') {\n\t\t\t\t\t\t\t\t\t\t\tj += 5;\n\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tlevelDeltaNext++;\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (chAtPos == '&' && styler.StyleAt(j) == SCE_F_CONTINUATION) {\n\t\t\t\t\t\t\t\t\tj = GetContinuedPos(j+1, styler);\n\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t} else if (IsALineEnd(chAtPos)) {\n\t\t\t\t\t\t\t\t\tlevelDeltaNext++;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tint wordLevelDelta = classifyFoldPointFortran(s, prevWord, chNextNonBlank);\n\t\t\t\t\tlevelDeltaNext += wordLevelDelta;\n\t\t\t\t\tif (((strcmp(s, \"else\") == 0) && (nextEOL || chNextNonBlank == '!')) ||\n\t\t\t\t\t\t(strcmp(prevWord, \"else\") == 0 && strcmp(s, \"where\") == 0) || strcmp(s, \"elsewhere\") == 0) {\n\t\t\t\t\t\tif (!isPrevLine) {\n\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlevelDeltaNext++;\n\t\t\t\t\t} else if ((strcmp(prevWord, \"else\") == 0 && strcmp(s, \"if\") == 0) || strcmp(s, \"elseif\") == 0) {\n\t\t\t\t\t\tif (!isPrevLine) {\n\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ((strcmp(prevWord, \"select\") == 0 && strcmp(s, \"case\") == 0) || strcmp(s, \"selectcase\") == 0 ||\n\t\t\t\t\t\t\t   (strcmp(prevWord, \"select\") == 0 && strcmp(s, \"type\") == 0) || strcmp(s, \"selecttype\") == 0) {\n\t\t\t\t\t\tlevelDeltaNext += 2;\n\t\t\t\t\t} else if ((strcmp(s, \"case\") == 0 && chNextNonBlank == '(') || (strcmp(prevWord, \"case\") == 0 && strcmp(s, \"default\") == 0) ||\n\t\t\t\t\t\t\t   (strcmp(prevWord, \"type\") == 0 && strcmp(s, \"is\") == 0) ||\n\t\t\t\t\t\t\t   (strcmp(prevWord, \"class\") == 0 && strcmp(s, \"is\") == 0) ||\n\t\t\t\t\t\t\t   (strcmp(prevWord, \"class\") == 0 && strcmp(s, \"default\") == 0) ) {\n\t\t\t\t\t\tif (!isPrevLine) {\n\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlevelDeltaNext++;\n\t\t\t\t\t} else if ((strcmp(prevWord, \"end\") == 0 && strcmp(s, \"select\") == 0) || strcmp(s, \"endselect\") == 0) {\n\t\t\t\t\t\tlevelDeltaNext -= 2;\n\t\t\t\t\t}\n\n\t\t\t\t\t// There are multiple forms of \"do\" loop. The older form with a label \"do 100 i=1,10\" would require matching\n\t\t\t\t\t// labels to ensure the folding level does not decrease too far when labels are used for other purposes.\n\t\t\t\t\t// Since this is difficult, do-label constructs are not folded.\n\t\t\t\t\tif (strcmp(s, \"do\") == 0 && IsADigit(chNextNonBlank)) {\n\t\t\t\t\t\t// Remove delta for do-label\n\t\t\t\t\t\tlevelDeltaNext -= wordLevelDelta;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstrcpy(prevWord, s);\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelCurrent;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelDeltaNext > 0) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent))\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent += levelDeltaNext;\n\t\t\tlevelDeltaNext = 0;\n\t\t\tvisibleChars = 0;\n\t\t\tstrcpy(prevWord, \"\");\n\t\t\tisPrevLine = false;\n\t\t}\n\t\t/***************************************/\n\t\tif (!isspacechar(ch)) visibleChars++;\n\t}\n\t/***************************************/\n}\n/***************************************/\nstatic const char * const FortranWordLists[] = {\n\t\"Primary keywords and identifiers\",\n\t\"Intrinsic functions\",\n\t\"Extended and user defined functions\",\n\t0,\n};\n/***************************************/\nstatic void ColouriseFortranDocFreeFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n        Accessor &styler) {\n\tColouriseFortranDoc(startPos, length, initStyle, keywordlists, styler, false);\n}\n/***************************************/\nstatic void ColouriseFortranDocFixFormat(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n        Accessor &styler) {\n\tColouriseFortranDoc(startPos, length, initStyle, keywordlists, styler, true);\n}\n/***************************************/\nstatic void FoldFortranDocFreeFormat(Sci_PositionU startPos, Sci_Position length, int initStyle,\n        WordList *[], Accessor &styler) {\n\tFoldFortranDoc(startPos, length, initStyle,styler, false);\n}\n/***************************************/\nstatic void FoldFortranDocFixFormat(Sci_PositionU startPos, Sci_Position length, int initStyle,\n        WordList *[], Accessor &styler) {\n\tFoldFortranDoc(startPos, length, initStyle,styler, true);\n}\n/***************************************/\nLexerModule lmFortran(SCLEX_FORTRAN, ColouriseFortranDocFreeFormat, \"fortran\", FoldFortranDocFreeFormat, FortranWordLists);\nLexerModule lmF77(SCLEX_F77, ColouriseFortranDocFixFormat, \"f77\", FoldFortranDocFixFormat, FortranWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexGAP.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexGAP.cxx\n ** Lexer for the GAP language. (The GAP System for Computational Discrete Algebra)\n ** http://www.gap-system.org\n **/\n// Copyright 2007 by Istvan Szollosi ( szteven <at> gmail <dot> com )\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsGAPOperator(char ch) {\n\tif (IsASCII(ch) && isalnum(ch)) return false;\n\tif (ch == '+' || ch == '-' || ch == '*' || ch == '/' ||\n\t\tch == '^' || ch == ',' || ch == '!' || ch == '.' ||\n\t\tch == '=' || ch == '<' || ch == '>' || ch == '(' ||\n\t\tch == ')' || ch == ';' || ch == '[' || ch == ']' ||\n\t\tch == '{' || ch == '}' || ch == ':' )\n\t\treturn true;\n\treturn false;\n}\n\nstatic void GetRange(Sci_PositionU start, Sci_PositionU end, Accessor &styler, char *s, Sci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile ((i < end - start + 1) && (i < len-1)) {\n\t\ts[i] = static_cast<char>(styler[start + i]);\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nstatic void ColouriseGAPDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) {\n\n\tWordList &keywords1 = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_GAP_STRINGEOL) initStyle = SCE_GAP_DEFAULT;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\t// Prevent SCE_GAP_STRINGEOL from leaking back to previous line\n\t\tif ( sc.atLineStart ) {\n\t\t\tif (sc.state == SCE_GAP_STRING) sc.SetState(SCE_GAP_STRING);\n\t\t\tif (sc.state == SCE_GAP_CHAR) sc.SetState(SCE_GAP_CHAR);\n\t\t}\n\n\t\t// Handle line continuation generically\n\t\tif (sc.ch == '\\\\' ) {\n\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_GAP_OPERATOR :\n\t\t\t\tsc.SetState(SCE_GAP_DEFAULT);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_GAP_NUMBER :\n\t\t\t\tif (!IsADigit(sc.ch)) {\n\t\t\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\t\t\tif (!sc.atLineEnd) {\n\t\t\t\t\t\t\tif (!IsADigit(sc.chNext)) {\n\t\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\t\tsc.ChangeState(SCE_GAP_IDENTIFIER);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (isalpha(sc.ch) || sc.ch == '_') {\n\t\t\t\t\t\tsc.ChangeState(SCE_GAP_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t\telse sc.SetState(SCE_GAP_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_GAP_IDENTIFIER :\n\t\t\t\tif (!(iswordstart(static_cast<char>(sc.ch)) || sc.ch == '$')) {\n\t\t\t\t\tif (sc.ch == '\\\\') sc.Forward();\n\t\t\t\t\telse {\n\t\t\t\t\t\tchar s[1000];\n\t\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t\tif (keywords1.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_GAP_KEYWORD);\n\t\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_GAP_KEYWORD2);\n\t\t\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_GAP_KEYWORD3);\n\t\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_GAP_KEYWORD4);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsc.SetState(SCE_GAP_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_GAP_COMMENT :\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_GAP_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_GAP_STRING:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_GAP_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tsc.ForwardSetState(SCE_GAP_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_GAP_CHAR:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_GAP_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tsc.ForwardSetState(SCE_GAP_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_GAP_STRINGEOL:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_GAP_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered\n\t\tif (sc.state == SCE_GAP_DEFAULT) {\n\t\t\tif (IsGAPOperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_GAP_OPERATOR);\n\t\t\t}\n\t\t\telse if (IsADigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_GAP_NUMBER);\n\t\t\t} else if (isalpha(sc.ch) || sc.ch == '_' || sc.ch == '\\\\' || sc.ch == '$' || sc.ch == '~') {\n\t\t\t\tsc.SetState(SCE_GAP_IDENTIFIER);\n\t\t\t\tif (sc.ch == '\\\\') sc.Forward();\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tsc.SetState(SCE_GAP_COMMENT);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_GAP_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_GAP_CHAR);\n\t\t\t}\n\t\t}\n\n\t}\n\tsc.Complete();\n}\n\nstatic int ClassifyFoldPointGAP(const char* s) {\n\tint level = 0;\n\tif (strcmp(s, \"function\") == 0 ||\n\t\tstrcmp(s, \"do\") == 0 ||\n\t\tstrcmp(s, \"if\") == 0 ||\n\t\tstrcmp(s, \"repeat\") == 0 ) {\n\t\tlevel = 1;\n\t} else if (strcmp(s, \"end\") == 0 ||\n\t\t\tstrcmp(s, \"od\") == 0 ||\n\t\t\tstrcmp(s, \"fi\") == 0 ||\n\t\t\tstrcmp(s, \"until\") == 0 ) {\n\t\tlevel = -1;\n\t}\n\treturn level;\n}\n\nstatic void FoldGAPDoc( Sci_PositionU startPos, Sci_Position length, int initStyle,   WordList** , Accessor &styler) {\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\n\tSci_Position lastStart = 0;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (stylePrev != SCE_GAP_KEYWORD && style == SCE_GAP_KEYWORD) {\n\t\t\t// Store last word start point.\n\t\t\tlastStart = i;\n\t\t}\n\n\t\tif (stylePrev == SCE_GAP_KEYWORD) {\n\t\t\tif(iswordchar(ch) && !iswordchar(chNext)) {\n\t\t\t\tchar s[100];\n\t\t\t\tGetRange(lastStart, i, styler, s, sizeof(s));\n\t\t\t\tlevelCurrent += ClassifyFoldPointGAP(s);\n\t\t\t}\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const GAPWordListDesc[] = {\n\t\"Keywords 1\",\n\t\"Keywords 2\",\n\t\"Keywords 3 (unused)\",\n\t\"Keywords 4 (unused)\",\n\t0\n};\n\nLexerModule lmGAP(\n   SCLEX_GAP,\n   ColouriseGAPDoc,\n   \"gap\",\n   FoldGAPDoc,\n   GAPWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexGui4Cli.cpp",
    "content": "// Scintilla source code edit control\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n/*\nThis is the Lexer for Gui4Cli, included in SciLexer.dll\n- by d. Keletsekis, 2/10/2003\n\nTo add to SciLexer.dll:\n1. Add the values below to INCLUDE\\Scintilla.iface\n2. Run the scripts/HFacer.py script\n3. Run the scripts/LexGen.py script\n\nval SCE_GC_DEFAULT=0\nval SCE_GC_COMMENTLINE=1\nval SCE_GC_COMMENTBLOCK=2\nval SCE_GC_GLOBAL=3\nval SCE_GC_EVENT=4\nval SCE_GC_ATTRIBUTE=5\nval SCE_GC_CONTROL=6\nval SCE_GC_COMMAND=7\nval SCE_GC_STRING=8\nval SCE_GC_OPERATOR=9\n*/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#define debug Platform::DebugPrintf\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch =='\\\\');\n}\n\ninline bool isGCOperator(int ch)\n{\tif (isalnum(ch))\n\t\treturn false;\n\t// '.' left out as it is used to make up numbers\n\tif (ch == '*' || ch == '/' || ch == '-' || ch == '+' ||\n\t\t ch == '(' || ch == ')' || ch == '=' || ch == '%' ||\n\t\t ch == '[' || ch == ']' || ch == '<' || ch == '>' ||\n\t\t ch == ',' || ch == ';' || ch == ':')\n\t\treturn true;\n\treturn false;\n}\n\n#define isSpace(x)\t\t((x)==' ' || (x)=='\\t')\n#define isNL(x)\t\t\t((x)=='\\n' || (x)=='\\r')\n#define isSpaceOrNL(x)  (isSpace(x) || isNL(x))\n#define BUFFSIZE 500\n#define isFoldPoint(x)  ((styler.LevelAt(x) & SC_FOLDLEVELNUMBERMASK) == 1024)\n\nstatic void colorFirstWord(WordList *keywordlists[], Accessor &styler,\n\t\t\t\t\t\t\t\t\tStyleContext *sc, char *buff, Sci_Position length, int)\n{\n\tSci_Position c = 0;\n\twhile (sc->More() && isSpaceOrNL(sc->ch))\n\t{\tsc->Forward();\n\t}\n\tstyler.ColourTo(sc->currentPos - 1, sc->state);\n\n\tif (!IsAWordChar(sc->ch)) // comment, marker, etc..\n\t\treturn;\n\n\twhile (sc->More() && !isSpaceOrNL(sc->ch) && (c < length-1) && !isGCOperator(sc->ch))\n\t{\tbuff[c] = static_cast<char>(sc->ch);\n\t\t++c; sc->Forward();\n\t}\n\tbuff[c] = '\\0';\n\tchar *p = buff;\n\twhile (*p)\t// capitalize..\n\t{\tif (islower(*p)) *p = static_cast<char>(toupper(*p));\n\t\t++p;\n\t}\n\n\tWordList &kGlobal\t\t= *keywordlists[0];\t// keyword lists set by the user\n\tWordList &kEvent\t\t= *keywordlists[1];\n\tWordList &kAttribute\t= *keywordlists[2];\n\tWordList &kControl\t= *keywordlists[3];\n\tWordList &kCommand\t= *keywordlists[4];\n\n\tint state = 0;\n\t// int level = styler.LevelAt(line) & SC_FOLDLEVELNUMBERMASK;\n\t// debug (\"line = %d, level = %d\", line, level);\n\n\tif\t     (kGlobal.InList(buff))\t\tstate = SCE_GC_GLOBAL;\n\telse if (kAttribute.InList(buff))\tstate = SCE_GC_ATTRIBUTE;\n\telse if (kControl.InList(buff))\t\tstate = SCE_GC_CONTROL;\n\telse if (kCommand.InList(buff))\t\tstate = SCE_GC_COMMAND;\n\telse if (kEvent.InList(buff))\t\t\tstate = SCE_GC_EVENT;\n\n\tif (state)\n\t{\tsc->ChangeState(state);\n\t\tstyler.ColourTo(sc->currentPos - 1, sc->state);\n\t\tsc->ChangeState(SCE_GC_DEFAULT);\n\t}\n\telse\n\t{\tsc->ChangeState(SCE_GC_DEFAULT);\n\t\tstyler.ColourTo(sc->currentPos - 1, sc->state);\n\t}\n}\n\n// Main colorizing function called by Scintilla\nstatic void\nColouriseGui4CliDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                    WordList *keywordlists[], Accessor &styler)\n{\n\tstyler.StartAt(startPos);\n\n\tSci_Position currentline = styler.GetLine(startPos);\n\tint quotestart = 0, oldstate;\n\tstyler.StartSegment(startPos);\n\tbool noforward;\n\tchar buff[BUFFSIZE+1];\t// buffer for command name\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tbuff[0] = '\\0'; // cbuff = 0;\n\n\tif (sc.state != SCE_GC_COMMENTBLOCK) // colorize 1st word..\n\t\tcolorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline);\n\n\twhile (sc.More())\n\t{\tnoforward = 0;\n\n\t\tswitch (sc.ch)\n\t\t{\n\t\t\tcase '/':\n\t\t\t\tif (sc.state == SCE_GC_COMMENTBLOCK || sc.state == SCE_GC_STRING)\n\t\t\t\t\tbreak;\n\t\t\t\tif (sc.chNext == '/')\t// line comment\n\t\t\t\t{\tsc.SetState (SCE_GC_COMMENTLINE);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tstyler.ColourTo(sc.currentPos, sc.state);\n\t\t\t\t}\n\t\t\t\telse if (sc.chNext == '*')\t// block comment\n\t\t\t\t{\tsc.SetState(SCE_GC_COMMENTBLOCK);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tstyler.ColourTo(sc.currentPos, sc.state);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tstyler.ColourTo(sc.currentPos, sc.state);\n\t\t\t\tbreak;\n\n\t\t\tcase '*':\t// end of comment block, or operator..\n\t\t\t\tif (sc.state == SCE_GC_STRING)\n\t\t\t\t\tbreak;\n\t\t\t\tif (sc.state == SCE_GC_COMMENTBLOCK && sc.chNext == '/')\n\t\t\t\t{\tsc.Forward();\n\t\t\t\t\tstyler.ColourTo(sc.currentPos, sc.state);\n\t\t\t\t\tsc.ChangeState (SCE_GC_DEFAULT);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t\tstyler.ColourTo(sc.currentPos, sc.state);\n\t\t\t\tbreak;\n\n\t\t\tcase '\\'':\tcase '\\\"': // strings..\n\t\t\t\tif (sc.state == SCE_GC_COMMENTBLOCK || sc.state == SCE_GC_COMMENTLINE)\n\t\t\t\t\tbreak;\n\t\t\t\tif (sc.state == SCE_GC_STRING)\n\t\t\t\t{\tif (sc.ch == quotestart)\t// match same quote char..\n\t\t\t\t\t{\tstyler.ColourTo(sc.currentPos, sc.state);\n\t\t\t\t\t\tsc.ChangeState(SCE_GC_DEFAULT);\n\t\t\t\t\t\tquotestart = 0;\n\t\t\t\t}\t}\n\t\t\t\telse\n\t\t\t\t{\tstyler.ColourTo(sc.currentPos - 1, sc.state);\n\t\t\t\t\tsc.ChangeState(SCE_GC_STRING);\n\t\t\t\t\tquotestart = sc.ch;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase ';':\t// end of commandline character\n\t\t\t\tif (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE &&\n\t\t\t\t\t sc.state != SCE_GC_STRING)\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(sc.currentPos - 1, sc.state);\n\t\t\t\t\tstyler.ColourTo(sc.currentPos, SCE_GC_OPERATOR);\n\t\t\t\t\tsc.ChangeState(SCE_GC_DEFAULT);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tcolorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline);\n\t\t\t\t\tnoforward = 1; // don't move forward - already positioned at next char..\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase '+': case '-': case '=':\tcase '!':\t// operators..\n\t\t\tcase '<': case '>': case '&': case '|': case '$':\n\t\t\t\tif (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE &&\n\t\t\t\t\t sc.state != SCE_GC_STRING)\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(sc.currentPos - 1, sc.state);\n\t\t\t\t\tstyler.ColourTo(sc.currentPos, SCE_GC_OPERATOR);\n\t\t\t\t\tsc.ChangeState(SCE_GC_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase '\\\\':\t// escape - same as operator, but also mark in strings..\n\t\t\t\tif (sc.state != SCE_GC_COMMENTBLOCK && sc.state != SCE_GC_COMMENTLINE)\n\t\t\t\t{\n\t\t\t\t\toldstate = sc.state;\n\t\t\t\t\tstyler.ColourTo(sc.currentPos - 1, sc.state);\n\t\t\t\t\tsc.Forward(); // mark also the next char..\n\t\t\t\t\tstyler.ColourTo(sc.currentPos, SCE_GC_OPERATOR);\n\t\t\t\t\tsc.ChangeState(oldstate);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase '\\n': case '\\r':\n\t\t\t\t++currentline;\n\t\t\t\tif (sc.state == SCE_GC_COMMENTLINE)\n\t\t\t\t{\tstyler.ColourTo(sc.currentPos, sc.state);\n\t\t\t\t\tsc.ChangeState (SCE_GC_DEFAULT);\n\t\t\t\t}\n\t\t\t\telse if (sc.state != SCE_GC_COMMENTBLOCK)\n\t\t\t\t{\tcolorFirstWord(keywordlists, styler, &sc, buff, BUFFSIZE, currentline);\n\t\t\t\t\tnoforward = 1; // don't move forward - already positioned at next char..\n\t\t\t\t}\n\t\t\t\tbreak;\n\n//\t\t\tcase ' ': case '\\t':\n//\t\t\tdefault :\n\t\t}\n\n\t\tif (!noforward) sc.Forward();\n\n\t}\n\tsc.Complete();\n}\n\n// Main folding function called by Scintilla - (based on props (.ini) files function)\nstatic void FoldGui4Cli(Sci_PositionU startPos, Sci_Position length, int,\n\t\t\t\t\t\t\t\tWordList *[], Accessor &styler)\n{\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tbool headerPoint = false;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++)\n\t{\n\t\tchar ch = chNext;\n\t\tchNext = styler[i+1];\n\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (style == SCE_GC_EVENT || style == SCE_GC_GLOBAL)\n\t\t{\theaderPoint = true; // fold at events and globals\n\t\t}\n\n\t\tif (atEOL)\n\t\t{\tint lev = SC_FOLDLEVELBASE+1;\n\n\t\t\tif (headerPoint)\n\t\t\t\tlev = SC_FOLDLEVELBASE;\n\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\n\t\t\tif (headerPoint)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) // set level, if not already correct\n\t\t\t{\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\n\t\t\tlineCurrent++;\t\t// re-initialize our flags\n\t\t\tvisibleChars = 0;\n\t\t\theaderPoint = false;\n\t\t}\n\n\t\tif (!(isspacechar(ch))) // || (style == SCE_GC_COMMENTLINE) || (style != SCE_GC_COMMENTBLOCK)))\n\t\t\tvisibleChars++;\n\t}\n\n\tint lev = headerPoint ? SC_FOLDLEVELBASE : SC_FOLDLEVELBASE+1;\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, lev | flagsNext);\n}\n\n// I have no idea what these are for.. probably accessible by some message.\nstatic const char * const gui4cliWordListDesc[] = {\n\t\"Globals\", \"Events\", \"Attributes\", \"Control\", \"Commands\",\n\t0\n};\n\n// Declare language & pass our function pointers to Scintilla\nLexerModule lmGui4Cli(SCLEX_GUI4CLI, ColouriseGui4CliDoc, \"gui4cli\", FoldGui4Cli, gui4cliWordListDesc);\n\n#undef debug\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexHTML.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexHTML.cxx\n ** Lexer for HTML.\n **/\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"StringCopy.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#define SCE_HA_JS (SCE_HJA_START - SCE_HJ_START)\n#define SCE_HA_VBS (SCE_HBA_START - SCE_HB_START)\n#define SCE_HA_PYTHON (SCE_HPA_START - SCE_HP_START)\n\nenum script_type { eScriptNone = 0, eScriptJS, eScriptVBS, eScriptPython, eScriptPHP, eScriptXML, eScriptSGML, eScriptSGMLblock, eScriptComment };\nenum script_mode { eHtml = 0, eNonHtmlScript, eNonHtmlPreProc, eNonHtmlScriptPreProc };\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_');\n}\n\nstatic inline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\ninline bool IsOperator(int ch) {\n\tif (IsASCII(ch) && isalnum(ch))\n\t\treturn false;\n\t// '.' left out as it is used to make up numbers\n\tif (ch == '%' || ch == '^' || ch == '&' || ch == '*' ||\n\t        ch == '(' || ch == ')' || ch == '-' || ch == '+' ||\n\t        ch == '=' || ch == '|' || ch == '{' || ch == '}' ||\n\t        ch == '[' || ch == ']' || ch == ':' || ch == ';' ||\n\t        ch == '<' || ch == '>' || ch == ',' || ch == '/' ||\n\t        ch == '?' || ch == '!' || ch == '.' || ch == '~')\n\t\treturn true;\n\treturn false;\n}\n\nstatic void GetTextSegment(Accessor &styler, Sci_PositionU start, Sci_PositionU end, char *s, size_t len) {\n\tSci_PositionU i = 0;\n\tfor (; (i < end - start + 1) && (i < len-1); i++) {\n\t\ts[i] = static_cast<char>(MakeLowerCase(styler[start + i]));\n\t}\n\ts[i] = '\\0';\n}\n\nstatic const char *GetNextWord(Accessor &styler, Sci_PositionU start, char *s, size_t sLen) {\n\n\tSci_PositionU i = 0;\n\tfor (; i < sLen-1; i++) {\n\t\tchar ch = static_cast<char>(styler.SafeGetCharAt(start + i));\n\t\tif ((i == 0) && !IsAWordStart(ch))\n\t\t\tbreak;\n\t\tif ((i > 0) && !IsAWordChar(ch))\n\t\t\tbreak;\n\t\ts[i] = ch;\n\t}\n\ts[i] = '\\0';\n\n\treturn s;\n}\n\nstatic script_type segIsScriptingIndicator(Accessor &styler, Sci_PositionU start, Sci_PositionU end, script_type prevValue) {\n\tchar s[100];\n\tGetTextSegment(styler, start, end, s, sizeof(s));\n\t//Platform::DebugPrintf(\"Scripting indicator [%s]\\n\", s);\n\tif (strstr(s, \"src\"))\t// External script\n\t\treturn eScriptNone;\n\tif (strstr(s, \"vbs\"))\n\t\treturn eScriptVBS;\n\tif (strstr(s, \"pyth\"))\n\t\treturn eScriptPython;\n\tif (strstr(s, \"javas\"))\n\t\treturn eScriptJS;\n\tif (strstr(s, \"jscr\"))\n\t\treturn eScriptJS;\n\tif (strstr(s, \"php\"))\n\t\treturn eScriptPHP;\n\tif (strstr(s, \"xml\")) {\n\t\tconst char *xml = strstr(s, \"xml\");\n\t\tfor (const char *t=s; t<xml; t++) {\n\t\t\tif (!IsASpace(*t)) {\n\t\t\t\treturn prevValue;\n\t\t\t}\n\t\t}\n\t\treturn eScriptXML;\n\t}\n\n\treturn prevValue;\n}\n\nstatic int PrintScriptingIndicatorOffset(Accessor &styler, Sci_PositionU start, Sci_PositionU end) {\n\tint iResult = 0;\n\tchar s[100];\n\tGetTextSegment(styler, start, end, s, sizeof(s));\n\tif (0 == strncmp(s, \"php\", 3)) {\n\t\tiResult = 3;\n\t}\n\n\treturn iResult;\n}\n\nstatic script_type ScriptOfState(int state) {\n\tif ((state >= SCE_HP_START) && (state <= SCE_HP_IDENTIFIER)) {\n\t\treturn eScriptPython;\n\t} else if ((state >= SCE_HB_START) && (state <= SCE_HB_STRINGEOL)) {\n\t\treturn eScriptVBS;\n\t} else if ((state >= SCE_HJ_START) && (state <= SCE_HJ_REGEX)) {\n\t\treturn eScriptJS;\n\t} else if ((state >= SCE_HPHP_DEFAULT) && (state <= SCE_HPHP_COMMENTLINE)) {\n\t\treturn eScriptPHP;\n\t} else if ((state >= SCE_H_SGML_DEFAULT) && (state < SCE_H_SGML_BLOCK_DEFAULT)) {\n\t\treturn eScriptSGML;\n\t} else if (state == SCE_H_SGML_BLOCK_DEFAULT) {\n\t\treturn eScriptSGMLblock;\n\t} else {\n\t\treturn eScriptNone;\n\t}\n}\n\nstatic int statePrintForState(int state, script_mode inScriptType) {\n\tint StateToPrint = state;\n\n\tif (state >= SCE_HJ_START) {\n\t\tif ((state >= SCE_HP_START) && (state <= SCE_HP_IDENTIFIER)) {\n\t\t\tStateToPrint = state + ((inScriptType == eNonHtmlScript) ? 0 : SCE_HA_PYTHON);\n\t\t} else if ((state >= SCE_HB_START) && (state <= SCE_HB_STRINGEOL)) {\n\t\t\tStateToPrint = state + ((inScriptType == eNonHtmlScript) ? 0 : SCE_HA_VBS);\n\t\t} else if ((state >= SCE_HJ_START) && (state <= SCE_HJ_REGEX)) {\n\t\t\tStateToPrint = state + ((inScriptType == eNonHtmlScript) ? 0 : SCE_HA_JS);\n\t\t}\n\t}\n\n\treturn StateToPrint;\n}\n\nstatic int stateForPrintState(int StateToPrint) {\n\tint state;\n\n\tif ((StateToPrint >= SCE_HPA_START) && (StateToPrint <= SCE_HPA_IDENTIFIER)) {\n\t\tstate = StateToPrint - SCE_HA_PYTHON;\n\t} else if ((StateToPrint >= SCE_HBA_START) && (StateToPrint <= SCE_HBA_STRINGEOL)) {\n\t\tstate = StateToPrint - SCE_HA_VBS;\n\t} else if ((StateToPrint >= SCE_HJA_START) && (StateToPrint <= SCE_HJA_REGEX)) {\n\t\tstate = StateToPrint - SCE_HA_JS;\n\t} else {\n\t\tstate = StateToPrint;\n\t}\n\n\treturn state;\n}\n\nstatic inline bool IsNumber(Sci_PositionU start, Accessor &styler) {\n\treturn IsADigit(styler[start]) || (styler[start] == '.') ||\n\t       (styler[start] == '-') || (styler[start] == '#');\n}\n\nstatic inline bool isStringState(int state) {\n\tbool bResult;\n\n\tswitch (state) {\n\tcase SCE_HJ_DOUBLESTRING:\n\tcase SCE_HJ_SINGLESTRING:\n\tcase SCE_HJA_DOUBLESTRING:\n\tcase SCE_HJA_SINGLESTRING:\n\tcase SCE_HB_STRING:\n\tcase SCE_HBA_STRING:\n\tcase SCE_HP_STRING:\n\tcase SCE_HP_CHARACTER:\n\tcase SCE_HP_TRIPLE:\n\tcase SCE_HP_TRIPLEDOUBLE:\n\tcase SCE_HPA_STRING:\n\tcase SCE_HPA_CHARACTER:\n\tcase SCE_HPA_TRIPLE:\n\tcase SCE_HPA_TRIPLEDOUBLE:\n\tcase SCE_HPHP_HSTRING:\n\tcase SCE_HPHP_SIMPLESTRING:\n\tcase SCE_HPHP_HSTRING_VARIABLE:\n\tcase SCE_HPHP_COMPLEX_VARIABLE:\n\t\tbResult = true;\n\t\tbreak;\n\tdefault :\n\t\tbResult = false;\n\t\tbreak;\n\t}\n\treturn bResult;\n}\n\nstatic inline bool stateAllowsTermination(int state) {\n\tbool allowTermination = !isStringState(state);\n\tif (allowTermination) {\n\t\tswitch (state) {\n\t\tcase SCE_HB_COMMENTLINE:\n\t\tcase SCE_HPHP_COMMENT:\n\t\tcase SCE_HP_COMMENTLINE:\n\t\tcase SCE_HPA_COMMENTLINE:\n\t\t\tallowTermination = false;\n\t\t}\n\t}\n\treturn allowTermination;\n}\n\n// not really well done, since it's only comments that should lex the %> and <%\nstatic inline bool isCommentASPState(int state) {\n\tbool bResult;\n\n\tswitch (state) {\n\tcase SCE_HJ_COMMENT:\n\tcase SCE_HJ_COMMENTLINE:\n\tcase SCE_HJ_COMMENTDOC:\n\tcase SCE_HB_COMMENTLINE:\n\tcase SCE_HP_COMMENTLINE:\n\tcase SCE_HPHP_COMMENT:\n\tcase SCE_HPHP_COMMENTLINE:\n\t\tbResult = true;\n\t\tbreak;\n\tdefault :\n\t\tbResult = false;\n\t\tbreak;\n\t}\n\treturn bResult;\n}\n\nstatic void classifyAttribHTML(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) {\n\tbool wordIsNumber = IsNumber(start, styler);\n\tchar chAttr = SCE_H_ATTRIBUTEUNKNOWN;\n\tif (wordIsNumber) {\n\t\tchAttr = SCE_H_NUMBER;\n\t} else {\n\t\tchar s[100];\n\t\tGetTextSegment(styler, start, end, s, sizeof(s));\n\t\tif (keywords.InList(s))\n\t\t\tchAttr = SCE_H_ATTRIBUTE;\n\t}\n\tif ((chAttr == SCE_H_ATTRIBUTEUNKNOWN) && !keywords)\n\t\t// No keywords -> all are known\n\t\tchAttr = SCE_H_ATTRIBUTE;\n\tstyler.ColourTo(end, chAttr);\n}\n\nstatic int classifyTagHTML(Sci_PositionU start, Sci_PositionU end,\n                           WordList &keywords, Accessor &styler, bool &tagDontFold,\n\t\t\t   bool caseSensitive, bool isXml, bool allowScripts) {\n\tchar withSpace[30 + 2] = \" \";\n\tconst char *s = withSpace + 1;\n\t// Copy after the '<'\n\tSci_PositionU i = 1;\n\tfor (Sci_PositionU cPos = start; cPos <= end && i < 30; cPos++) {\n\t\tchar ch = styler[cPos];\n\t\tif ((ch != '<') && (ch != '/')) {\n\t\t\twithSpace[i++] = caseSensitive ? ch : static_cast<char>(MakeLowerCase(ch));\n\t\t}\n\t}\n\n\t//The following is only a quick hack, to see if this whole thing would work\n\t//we first need the tagname with a trailing space...\n\twithSpace[i] = ' ';\n\twithSpace[i+1] = '\\0';\n\n\t// if the current language is XML, I can fold any tag\n\t// if the current language is HTML, I don't want to fold certain tags (input, meta, etc.)\n\t//...to find it in the list of no-container-tags\n\ttagDontFold = (!isXml) && (NULL != strstr(\" area base basefont br col command embed frame hr img input isindex keygen link meta param source track wbr \", withSpace));\n\n\t//now we can remove the trailing space\n\twithSpace[i] = '\\0';\n\n\t// No keywords -> all are known\n\tchar chAttr = SCE_H_TAGUNKNOWN;\n\tif (s[0] == '!') {\n\t\tchAttr = SCE_H_SGML_DEFAULT;\n\t} else if (!keywords || keywords.InList(s)) {\n\t\tchAttr = SCE_H_TAG;\n\t}\n\tstyler.ColourTo(end, chAttr);\n\tif (chAttr == SCE_H_TAG) {\n\t\tif (allowScripts && 0 == strcmp(s, \"script\")) {\n\t\t\t// check to see if this is a self-closing tag by sniffing ahead\n\t\t\tbool isSelfClose = false;\n\t\t\tfor (Sci_PositionU cPos = end; cPos <= end + 200; cPos++) {\n\t\t\t\tchar ch = styler.SafeGetCharAt(cPos, '\\0');\n\t\t\t\tif (ch == '\\0' || ch == '>')\n\t\t\t\t\tbreak;\n\t\t\t\telse if (ch == '/' && styler.SafeGetCharAt(cPos + 1, '\\0') == '>') {\n\t\t\t\t\tisSelfClose = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// do not enter a script state if the tag self-closed\n\t\t\tif (!isSelfClose)\n\t\t\t\tchAttr = SCE_H_SCRIPT;\n\t\t} else if (!isXml && 0 == strcmp(s, \"comment\")) {\n\t\t\tchAttr = SCE_H_COMMENT;\n\t\t}\n\t}\n\treturn chAttr;\n}\n\nstatic void classifyWordHTJS(Sci_PositionU start, Sci_PositionU end,\n                             WordList &keywords, Accessor &styler, script_mode inScriptType) {\n\tchar s[30 + 1];\n\tSci_PositionU i = 0;\n\tfor (; i < end - start + 1 && i < 30; i++) {\n\t\ts[i] = styler[start + i];\n\t}\n\ts[i] = '\\0';\n\n\tchar chAttr = SCE_HJ_WORD;\n\tbool wordIsNumber = IsADigit(s[0]) || ((s[0] == '.') && IsADigit(s[1]));\n\tif (wordIsNumber) {\n\t\tchAttr = SCE_HJ_NUMBER;\n\t} else if (keywords.InList(s)) {\n\t\tchAttr = SCE_HJ_KEYWORD;\n\t}\n\tstyler.ColourTo(end, statePrintForState(chAttr, inScriptType));\n}\n\nstatic int classifyWordHTVB(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler, script_mode inScriptType) {\n\tchar chAttr = SCE_HB_IDENTIFIER;\n\tbool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.');\n\tif (wordIsNumber) {\n\t\tchAttr = SCE_HB_NUMBER;\n\t} else {\n\t\tchar s[100];\n\t\tGetTextSegment(styler, start, end, s, sizeof(s));\n\t\tif (keywords.InList(s)) {\n\t\t\tchAttr = SCE_HB_WORD;\n\t\t\tif (strcmp(s, \"rem\") == 0)\n\t\t\t\tchAttr = SCE_HB_COMMENTLINE;\n\t\t}\n\t}\n\tstyler.ColourTo(end, statePrintForState(chAttr, inScriptType));\n\tif (chAttr == SCE_HB_COMMENTLINE)\n\t\treturn SCE_HB_COMMENTLINE;\n\telse\n\t\treturn SCE_HB_DEFAULT;\n}\n\nstatic void classifyWordHTPy(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler, char *prevWord, script_mode inScriptType, bool isMako) {\n\tbool wordIsNumber = IsADigit(styler[start]);\n\tchar s[30 + 1];\n\tSci_PositionU i = 0;\n\tfor (; i < end - start + 1 && i < 30; i++) {\n\t\ts[i] = styler[start + i];\n\t}\n\ts[i] = '\\0';\n\tchar chAttr = SCE_HP_IDENTIFIER;\n\tif (0 == strcmp(prevWord, \"class\"))\n\t\tchAttr = SCE_HP_CLASSNAME;\n\telse if (0 == strcmp(prevWord, \"def\"))\n\t\tchAttr = SCE_HP_DEFNAME;\n\telse if (wordIsNumber)\n\t\tchAttr = SCE_HP_NUMBER;\n\telse if (keywords.InList(s))\n\t\tchAttr = SCE_HP_WORD;\n\telse if (isMako && 0 == strcmp(s, \"block\"))\n\t\tchAttr = SCE_HP_WORD;\n\tstyler.ColourTo(end, statePrintForState(chAttr, inScriptType));\n\tstrcpy(prevWord, s);\n}\n\n// Update the word colour to default or keyword\n// Called when in a PHP word\nstatic void classifyWordHTPHP(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) {\n\tchar chAttr = SCE_HPHP_DEFAULT;\n\tbool wordIsNumber = IsADigit(styler[start]) || (styler[start] == '.' && start+1 <= end && IsADigit(styler[start+1]));\n\tif (wordIsNumber) {\n\t\tchAttr = SCE_HPHP_NUMBER;\n\t} else {\n\t\tchar s[100];\n\t\tGetTextSegment(styler, start, end, s, sizeof(s));\n\t\tif (keywords.InList(s))\n\t\t\tchAttr = SCE_HPHP_WORD;\n\t}\n\tstyler.ColourTo(end, chAttr);\n}\n\nstatic bool isWordHSGML(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler) {\n\tchar s[30 + 1];\n\tSci_PositionU i = 0;\n\tfor (; i < end - start + 1 && i < 30; i++) {\n\t\ts[i] = styler[start + i];\n\t}\n\ts[i] = '\\0';\n\treturn keywords.InList(s);\n}\n\nstatic bool isWordCdata(Sci_PositionU start, Sci_PositionU end, Accessor &styler) {\n\tchar s[30 + 1];\n\tSci_PositionU i = 0;\n\tfor (; i < end - start + 1 && i < 30; i++) {\n\t\ts[i] = styler[start + i];\n\t}\n\ts[i] = '\\0';\n\treturn (0 == strcmp(s, \"[CDATA[\"));\n}\n\n// Return the first state to reach when entering a scripting language\nstatic int StateForScript(script_type scriptLanguage) {\n\tint Result;\n\tswitch (scriptLanguage) {\n\tcase eScriptVBS:\n\t\tResult = SCE_HB_START;\n\t\tbreak;\n\tcase eScriptPython:\n\t\tResult = SCE_HP_START;\n\t\tbreak;\n\tcase eScriptPHP:\n\t\tResult = SCE_HPHP_DEFAULT;\n\t\tbreak;\n\tcase eScriptXML:\n\t\tResult = SCE_H_TAGUNKNOWN;\n\t\tbreak;\n\tcase eScriptSGML:\n\t\tResult = SCE_H_SGML_DEFAULT;\n\t\tbreak;\n\tcase eScriptComment:\n\t\tResult = SCE_H_COMMENT;\n\t\tbreak;\n\tdefault :\n\t\tResult = SCE_HJ_START;\n\t\tbreak;\n\t}\n\treturn Result;\n}\n\nstatic inline bool issgmlwordchar(int ch) {\n\treturn !IsASCII(ch) ||\n\t\t(isalnum(ch) || ch == '.' || ch == '_' || ch == ':' || ch == '!' || ch == '#' || ch == '[');\n}\n\nstatic inline bool IsPhpWordStart(int ch) {\n\treturn (IsASCII(ch) && (isalpha(ch) || (ch == '_'))) || (ch >= 0x7f);\n}\n\nstatic inline bool IsPhpWordChar(int ch) {\n\treturn IsADigit(ch) || IsPhpWordStart(ch);\n}\n\nstatic bool InTagState(int state) {\n\treturn state == SCE_H_TAG || state == SCE_H_TAGUNKNOWN ||\n\t       state == SCE_H_SCRIPT ||\n\t       state == SCE_H_ATTRIBUTE || state == SCE_H_ATTRIBUTEUNKNOWN ||\n\t       state == SCE_H_NUMBER || state == SCE_H_OTHER ||\n\t       state == SCE_H_DOUBLESTRING || state == SCE_H_SINGLESTRING;\n}\n\nstatic bool IsCommentState(const int state) {\n\treturn state == SCE_H_COMMENT || state == SCE_H_SGML_COMMENT;\n}\n\nstatic bool IsScriptCommentState(const int state) {\n\treturn state == SCE_HJ_COMMENT || state == SCE_HJ_COMMENTLINE || state == SCE_HJA_COMMENT ||\n\t\t   state == SCE_HJA_COMMENTLINE || state == SCE_HB_COMMENTLINE || state == SCE_HBA_COMMENTLINE;\n}\n\nstatic bool isLineEnd(int ch) {\n\treturn ch == '\\r' || ch == '\\n';\n}\n\nstatic bool isMakoBlockEnd(const int ch, const int chNext, const char *blockType) {\n\tif (strlen(blockType) == 0) {\n\t\treturn ((ch == '%') && (chNext == '>'));\n\t} else if ((0 == strcmp(blockType, \"inherit\")) ||\n\t\t\t   (0 == strcmp(blockType, \"namespace\")) ||\n\t\t\t   (0 == strcmp(blockType, \"include\")) ||\n\t\t\t   (0 == strcmp(blockType, \"page\"))) {\n\t\treturn ((ch == '/') && (chNext == '>'));\n\t} else if (0 == strcmp(blockType, \"%\")) {\n\t\tif (ch == '/' && isLineEnd(chNext))\n\t\t\treturn 1;\n\t\telse\n\t\t    return isLineEnd(ch);\n\t} else if (0 == strcmp(blockType, \"{\")) {\n\t\treturn ch == '}';\n\t} else {\n\t\treturn (ch == '>');\n\t}\n}\n\nstatic bool isDjangoBlockEnd(const int ch, const int chNext, const char *blockType) {\n\tif (strlen(blockType) == 0) {\n\t\treturn 0;\n\t} else if (0 == strcmp(blockType, \"%\")) {\n\t\treturn ((ch == '%') && (chNext == '}'));\n\t} else if (0 == strcmp(blockType, \"{\")) {\n\t\treturn ((ch == '}') && (chNext == '}'));\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nstatic bool isPHPStringState(int state) {\n\treturn\n\t    (state == SCE_HPHP_HSTRING) ||\n\t    (state == SCE_HPHP_SIMPLESTRING) ||\n\t    (state == SCE_HPHP_HSTRING_VARIABLE) ||\n\t    (state == SCE_HPHP_COMPLEX_VARIABLE);\n}\n\nstatic Sci_Position FindPhpStringDelimiter(char *phpStringDelimiter, const int phpStringDelimiterSize, Sci_Position i, const Sci_Position lengthDoc, Accessor &styler, bool &isSimpleString) {\n\tSci_Position j;\n\tconst Sci_Position beginning = i - 1;\n\tbool isValidSimpleString = false;\n\n\twhile (i < lengthDoc && (styler[i] == ' ' || styler[i] == '\\t'))\n\t\ti++;\n\n\tchar ch = styler.SafeGetCharAt(i);\n\tconst char chNext = styler.SafeGetCharAt(i + 1);\n\tif (!IsPhpWordStart(ch)) {\n\t\tif (ch == '\\'' && IsPhpWordStart(chNext)) {\n\t\t\ti++;\n\t\t\tch = chNext;\n\t\t\tisSimpleString = true;\n\t\t} else {\n\t\t\tphpStringDelimiter[0] = '\\0';\n\t\t\treturn beginning;\n\t\t}\n\t}\n\tphpStringDelimiter[0] = ch;\n\ti++;\n\n\tfor (j = i; j < lengthDoc && !isLineEnd(styler[j]); j++) {\n\t\tif (!IsPhpWordChar(styler[j])) {\n\t\t\tif (isSimpleString && (styler[j] == '\\'') && isLineEnd(styler.SafeGetCharAt(j + 1))) {\n\t\t\t\tisValidSimpleString = true;\n\t\t\t\tj++;\n\t\t\t\tbreak;\n\t\t\t} else {\n\t\t\t\tphpStringDelimiter[0] = '\\0';\n\t\t\t\treturn beginning;\n\t\t\t}\n\t\t}\n\t\tif (j - i < phpStringDelimiterSize - 2)\n\t\t\tphpStringDelimiter[j-i+1] = styler[j];\n\t\telse\n\t\t\ti++;\n\t}\n\tif (isSimpleString && !isValidSimpleString) {\n\t\tphpStringDelimiter[0] = '\\0';\n\t\treturn beginning;\n\t}\n\tphpStringDelimiter[j-i+1 - (isSimpleString ? 1 : 0)] = '\\0';\n\treturn j - 1;\n}\n\nstatic void ColouriseHyperTextDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                                  Accessor &styler, bool isXml) {\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\tWordList &keywords5 = *keywordlists[4];\n\tWordList &keywords6 = *keywordlists[5]; // SGML (DTD) keywords\n\n\tstyler.StartAt(startPos);\n\tchar prevWord[200];\n\tprevWord[0] = '\\0';\n\tchar phpStringDelimiter[200]; // PHP is not limited in length, we are\n\tphpStringDelimiter[0] = '\\0';\n\tint StateToPrint = initStyle;\n\tint state = stateForPrintState(StateToPrint);\n\tchar makoBlockType[200];\n\tmakoBlockType[0] = '\\0';\n\tint makoComment = 0;\n\tchar djangoBlockType[2];\n\tdjangoBlockType[0] = '\\0';\n\n\t// If inside a tag, it may be a script tag, so reread from the start of line starting tag to ensure any language tags are seen\n\tif (InTagState(state)) {\n\t\twhile ((startPos > 0) && (InTagState(styler.StyleAt(startPos - 1)))) {\n\t\t\tSci_Position backLineStart = styler.LineStart(styler.GetLine(startPos-1));\n\t\t\tlength += startPos - backLineStart;\n\t\t\tstartPos = backLineStart;\n\t\t}\n\t\tstate = SCE_H_DEFAULT;\n\t}\n\t// String can be heredoc, must find a delimiter first. Reread from beginning of line containing the string, to get the correct lineState\n\tif (isPHPStringState(state)) {\n\t\twhile (startPos > 0 && (isPHPStringState(state) || !isLineEnd(styler[startPos - 1]))) {\n\t\t\tstartPos--;\n\t\t\tlength++;\n\t\t\tstate = styler.StyleAt(startPos);\n\t\t}\n\t\tif (startPos == 0)\n\t\t\tstate = SCE_H_DEFAULT;\n\t}\n\tstyler.StartAt(startPos);\n\n\t/* Nothing handles getting out of these, so we need not start in any of them.\n\t * As we're at line start and they can't span lines, we'll re-detect them anyway */\n\tswitch (state) {\n\t\tcase SCE_H_QUESTION:\n\t\tcase SCE_H_XMLSTART:\n\t\tcase SCE_H_XMLEND:\n\t\tcase SCE_H_ASP:\n\t\t\tstate = SCE_H_DEFAULT;\n\t\t\tbreak;\n\t}\n\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint lineState;\n\tif (lineCurrent > 0) {\n\t\tlineState = styler.GetLineState(lineCurrent-1);\n\t} else {\n\t\t// Default client and ASP scripting language is JavaScript\n\t\tlineState = eScriptJS << 8;\n\n\t\t// property asp.default.language\n\t\t//\tScript in ASP code is initially assumed to be in JavaScript.\n\t\t//\tTo change this to VBScript set asp.default.language to 2. Python is 3.\n\t\tlineState |= styler.GetPropertyInt(\"asp.default.language\", eScriptJS) << 4;\n\t}\n\tscript_mode inScriptType = script_mode((lineState >> 0) & 0x03); // 2 bits of scripting mode\n\tbool tagOpened = (lineState >> 2) & 0x01; // 1 bit to know if we are in an opened tag\n\tbool tagClosing = (lineState >> 3) & 0x01; // 1 bit to know if we are in a closing tag\n\tbool tagDontFold = false; //some HTML tags should not be folded\n\tscript_type aspScript = script_type((lineState >> 4) & 0x0F); // 4 bits of script name\n\tscript_type clientScript = script_type((lineState >> 8) & 0x0F); // 4 bits of script name\n\tint beforePreProc = (lineState >> 12) & 0xFF; // 8 bits of state\n\n\tscript_type scriptLanguage = ScriptOfState(state);\n\t// If eNonHtmlScript coincides with SCE_H_COMMENT, assume eScriptComment\n\tif (inScriptType == eNonHtmlScript && state == SCE_H_COMMENT) {\n\t\tscriptLanguage = eScriptComment;\n\t}\n\tscript_type beforeLanguage = ScriptOfState(beforePreProc);\n\n\t// property fold.html\n\t//\tFolding is turned on or off for HTML and XML files with this option.\n\t//\tThe fold option must also be on for folding to occur.\n\tconst bool foldHTML = styler.GetPropertyInt(\"fold.html\", 0) != 0;\n\n\tconst bool fold = foldHTML && styler.GetPropertyInt(\"fold\", 0);\n\n\t// property fold.html.preprocessor\n\t//\tFolding is turned on or off for scripts embedded in HTML files with this option.\n\t//\tThe default is on.\n\tconst bool foldHTMLPreprocessor = foldHTML && styler.GetPropertyInt(\"fold.html.preprocessor\", 1);\n\n\tconst bool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\n\t// property fold.hypertext.comment\n\t//\tAllow folding for comments in scripts embedded in HTML.\n\t//\tThe default is off.\n\tconst bool foldComment = fold && styler.GetPropertyInt(\"fold.hypertext.comment\", 0) != 0;\n\n\t// property fold.hypertext.heredoc\n\t//\tAllow folding for heredocs in scripts embedded in HTML.\n\t//\tThe default is off.\n\tconst bool foldHeredoc = fold && styler.GetPropertyInt(\"fold.hypertext.heredoc\", 0) != 0;\n\n\t// property html.tags.case.sensitive\n\t//\tFor XML and HTML, setting this property to 1 will make tags match in a case\n\t//\tsensitive way which is the expected behaviour for XML and XHTML.\n\tconst bool caseSensitive = styler.GetPropertyInt(\"html.tags.case.sensitive\", 0) != 0;\n\n\t// property lexer.xml.allow.scripts\n\t//\tSet to 0 to disable scripts in XML.\n\tconst bool allowScripts = styler.GetPropertyInt(\"lexer.xml.allow.scripts\", 1) != 0;\n\n\t// property lexer.html.mako\n\t//\tSet to 1 to enable the mako template language.\n\tconst bool isMako = styler.GetPropertyInt(\"lexer.html.mako\", 0) != 0;\n\n\t// property lexer.html.django\n\t//\tSet to 1 to enable the django template language.\n\tconst bool isDjango = styler.GetPropertyInt(\"lexer.html.django\", 0) != 0;\n\n\tconst CharacterSet setHTMLWord(CharacterSet::setAlphaNum, \".-_:!#\", 0x80, true);\n\tconst CharacterSet setTagContinue(CharacterSet::setAlphaNum, \".-_:!#[\", 0x80, true);\n\tconst CharacterSet setAttributeContinue(CharacterSet::setAlphaNum, \".-_:!#/\", 0x80, true);\n\t// TODO: also handle + and - (except if they're part of ++ or --) and return keywords\n\tconst CharacterSet setOKBeforeJSRE(CharacterSet::setNone, \"([{=,:;!%^&*|?~\");\n\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tint visibleChars = 0;\n\tint lineStartVisibleChars = 0;\n\n\tint chPrev = ' ';\n\tint ch = ' ';\n\tint chPrevNonWhite = ' ';\n\t// look back to set chPrevNonWhite properly for better regex colouring\n\tif (scriptLanguage == eScriptJS && startPos > 0) {\n\t\tSci_Position back = startPos;\n\t\tint style = 0;\n\t\twhile (--back) {\n\t\t\tstyle = styler.StyleAt(back);\n\t\t\tif (style < SCE_HJ_DEFAULT || style > SCE_HJ_COMMENTDOC)\n\t\t\t\t// includes SCE_HJ_COMMENT & SCE_HJ_COMMENTLINE\n\t\t\t\tbreak;\n\t\t}\n\t\tif (style == SCE_HJ_SYMBOLS) {\n\t\t\tchPrevNonWhite = static_cast<unsigned char>(styler.SafeGetCharAt(back));\n\t\t}\n\t}\n\n\tstyler.StartSegment(startPos);\n\tconst Sci_Position lengthDoc = startPos + length;\n\tfor (Sci_Position i = startPos; i < lengthDoc; i++) {\n\t\tconst int chPrev2 = chPrev;\n\t\tchPrev = ch;\n\t\tif (!IsASpace(ch) && state != SCE_HJ_COMMENT &&\n\t\t\tstate != SCE_HJ_COMMENTLINE && state != SCE_HJ_COMMENTDOC)\n\t\t\tchPrevNonWhite = ch;\n\t\tch = static_cast<unsigned char>(styler[i]);\n\t\tint chNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\tconst int chNext2 = static_cast<unsigned char>(styler.SafeGetCharAt(i + 2));\n\n\t\t// Handle DBCS codepages\n\t\tif (styler.IsLeadByte(static_cast<char>(ch))) {\n\t\t\tchPrev = ' ';\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ((!IsASpace(ch) || !foldCompact) && fold)\n\t\t\tvisibleChars++;\n\t\tif (!IsASpace(ch))\n\t\t\tlineStartVisibleChars++;\n\n\t\t// decide what is the current state to print (depending of the script tag)\n\t\tStateToPrint = statePrintForState(state, inScriptType);\n\n\t\t// handle script folding\n\t\tif (fold) {\n\t\t\tswitch (scriptLanguage) {\n\t\t\tcase eScriptJS:\n\t\t\tcase eScriptPHP:\n\t\t\t\t//not currently supported\t\t\t\tcase eScriptVBS:\n\n\t\t\t\tif ((state != SCE_HPHP_COMMENT) && (state != SCE_HPHP_COMMENTLINE) && (state != SCE_HJ_COMMENT) && (state != SCE_HJ_COMMENTLINE) && (state != SCE_HJ_COMMENTDOC) && (!isStringState(state))) {\n\t\t\t\t//Platform::DebugPrintf(\"state=%d, StateToPrint=%d, initStyle=%d\\n\", state, StateToPrint, initStyle);\n\t\t\t\t//if ((state == SCE_HPHP_OPERATOR) || (state == SCE_HPHP_DEFAULT) || (state == SCE_HJ_SYMBOLS) || (state == SCE_HJ_START) || (state == SCE_HJ_DEFAULT)) {\n\t\t\t\t\tif (ch == '#') {\n\t\t\t\t\t\tSci_Position j = i + 1;\n\t\t\t\t\t\twhile ((j < lengthDoc) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\t\t\tj++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (styler.Match(j, \"region\") || styler.Match(j, \"if\")) {\n\t\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t\t} else if (styler.Match(j, \"end\")) {\n\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if ((ch == '{') || (ch == '}') || (foldComment && (ch == '/') && (chNext == '*'))) {\n\t\t\t\t\t\tlevelCurrent += (((ch == '{') || (ch == '/')) ? 1 : -1);\n\t\t\t\t\t}\n\t\t\t\t} else if (((state == SCE_HPHP_COMMENT) || (state == SCE_HJ_COMMENT)) && foldComment && (ch == '*') && (chNext == '/')) {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase eScriptPython:\n\t\t\t\tif (state != SCE_HP_COMMENTLINE && !isMako) {\n\t\t\t\t\tif ((ch == ':') && ((chNext == '\\n') || (chNext == '\\r' && chNext2 == '\\n'))) {\n\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t} else if ((ch == '\\n') && !((chNext == '\\r') && (chNext2 == '\\n')) && (chNext != '\\n')) {\n\t\t\t\t\t\t// check if the number of tabs is lower than the level\n\t\t\t\t\t\tint Findlevel = (levelCurrent & ~SC_FOLDLEVELBASE) * 8;\n\t\t\t\t\t\tfor (Sci_Position j = 0; Findlevel > 0; j++) {\n\t\t\t\t\t\t\tchar chTmp = styler.SafeGetCharAt(i + j + 1);\n\t\t\t\t\t\t\tif (chTmp == '\\t') {\n\t\t\t\t\t\t\t\tFindlevel -= 8;\n\t\t\t\t\t\t\t} else if (chTmp == ' ') {\n\t\t\t\t\t\t\t\tFindlevel--;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (Findlevel > 0) {\n\t\t\t\t\t\t\tlevelCurrent -= Findlevel / 8;\n\t\t\t\t\t\t\tif (Findlevel % 8)\n\t\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n')) {\n\t\t\t// Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix)\n\t\t\t// Avoid triggering two times on Dos/Win\n\t\t\t// New line -> record any line state onto /next/ line\n\t\t\tif (fold) {\n\t\t\t\tint lev = levelPrev;\n\t\t\t\tif (visibleChars == 0)\n\t\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t\tvisibleChars = 0;\n\t\t\t\tlevelPrev = levelCurrent;\n\t\t\t}\n\t\t\tstyler.SetLineState(lineCurrent,\n\t\t\t                    ((inScriptType & 0x03) << 0) |\n\t\t\t                    ((tagOpened ? 1 : 0) << 2) |\n\t\t\t                    ((tagClosing ? 1 : 0) << 3) |\n\t\t\t                    ((aspScript & 0x0F) << 4) |\n\t\t\t                    ((clientScript & 0x0F) << 8) |\n\t\t\t                    ((beforePreProc & 0xFF) << 12));\n\t\t\tlineCurrent++;\n\t\t\tlineStartVisibleChars = 0;\n\t\t}\n\n\t\t// handle start of Mako comment line\n\t\tif (isMako && ch == '#' && chNext == '#') {\n\t\t\tmakoComment = 1;\n\t\t\tstate = SCE_HP_COMMENTLINE;\n\t\t}\n\n\t\t// handle end of Mako comment line\n\t\telse if (isMako && makoComment && (ch == '\\r' || ch == '\\n')) {\n\t\t\tmakoComment = 0;\n\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\tif (scriptLanguage == eScriptPython) {\n\t\t\t\tstate = SCE_HP_DEFAULT;\n\t\t\t} else {\n\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t}\n\t\t}\n\n\t\t// Allow falling through to mako handling code if newline is going to end a block\n\t\tif (((ch == '\\r' && chNext != '\\n') || (ch == '\\n')) &&\n\t\t\t(!isMako || (0 != strcmp(makoBlockType, \"%\")))) {\n\t\t}\n\t\t// Ignore everything in mako comment until the line ends\n\t\telse if (isMako && makoComment) {\n\t\t}\n\n\t\t// generic end of script processing\n\t\telse if ((inScriptType == eNonHtmlScript) && (ch == '<') && (chNext == '/')) {\n\t\t\t// Check if it's the end of the script tag (or any other HTML tag)\n\t\t\tswitch (state) {\n\t\t\t\t// in these cases, you can embed HTML tags (to confirm !!!!!!!!!!!!!!!!!!!!!!)\n\t\t\tcase SCE_H_DOUBLESTRING:\n\t\t\tcase SCE_H_SINGLESTRING:\n\t\t\tcase SCE_HJ_COMMENT:\n\t\t\tcase SCE_HJ_COMMENTDOC:\n\t\t\t//case SCE_HJ_COMMENTLINE: // removed as this is a common thing done to hide\n\t\t\t// the end of script marker from some JS interpreters.\n\t\t\tcase SCE_HB_COMMENTLINE:\n\t\t\tcase SCE_HBA_COMMENTLINE:\n\t\t\tcase SCE_HJ_DOUBLESTRING:\n\t\t\tcase SCE_HJ_SINGLESTRING:\n\t\t\tcase SCE_HJ_REGEX:\n\t\t\tcase SCE_HB_STRING:\n\t\t\tcase SCE_HBA_STRING:\n\t\t\tcase SCE_HP_STRING:\n\t\t\tcase SCE_HP_TRIPLE:\n\t\t\tcase SCE_HP_TRIPLEDOUBLE:\n\t\t\tcase SCE_HPHP_HSTRING:\n\t\t\tcase SCE_HPHP_SIMPLESTRING:\n\t\t\tcase SCE_HPHP_COMMENT:\n\t\t\tcase SCE_HPHP_COMMENTLINE:\n\t\t\t\tbreak;\n\t\t\tdefault :\n\t\t\t\t// check if the closing tag is a script tag\n\t\t\t\tif (const char *tag =\n\t\t\t\t\t\tstate == SCE_HJ_COMMENTLINE || isXml ? \"script\" :\n\t\t\t\t\t\tstate == SCE_H_COMMENT ? \"comment\" : 0) {\n\t\t\t\t\tSci_Position j = i + 2;\n\t\t\t\t\tint chr;\n\t\t\t\t\tdo {\n\t\t\t\t\t\tchr = static_cast<int>(*tag++);\n\t\t\t\t\t} while (chr != 0 && chr == MakeLowerCase(styler.SafeGetCharAt(j++)));\n\t\t\t\t\tif (chr != 0) break;\n\t\t\t\t}\n\t\t\t\t// closing tag of the script (it's a closing HTML tag anyway)\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_H_TAGUNKNOWN;\n\t\t\t\tinScriptType = eHtml;\n\t\t\t\tscriptLanguage = eScriptNone;\n\t\t\t\tclientScript = eScriptJS;\n\t\t\t\ti += 2;\n\t\t\t\tvisibleChars += 2;\n\t\t\t\ttagClosing = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t/////////////////////////////////////\n\t\t// handle the start of PHP pre-processor = Non-HTML\n\t\telse if ((state != SCE_H_ASPAT) &&\n\t\t         !isStringState(state) &&\n\t\t         (state != SCE_HPHP_COMMENT) &&\n\t\t         (state != SCE_HPHP_COMMENTLINE) &&\n\t\t         (ch == '<') &&\n\t\t         (chNext == '?') &&\n\t\t\t\t !IsScriptCommentState(state)) {\n \t\t\tbeforeLanguage = scriptLanguage;\n\t\t\tscriptLanguage = segIsScriptingIndicator(styler, i + 2, i + 6, isXml ? eScriptXML : eScriptPHP);\n\t\t\tif ((scriptLanguage != eScriptPHP) && (isStringState(state) || (state==SCE_H_COMMENT))) continue;\n\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\tbeforePreProc = state;\n\t\t\ti++;\n\t\t\tvisibleChars++;\n\t\t\ti += PrintScriptingIndicatorOffset(styler, styler.GetStartSegment() + 2, i + 6);\n\t\t\tif (scriptLanguage == eScriptXML)\n\t\t\t\tstyler.ColourTo(i, SCE_H_XMLSTART);\n\t\t\telse\n\t\t\t\tstyler.ColourTo(i, SCE_H_QUESTION);\n\t\t\tstate = StateForScript(scriptLanguage);\n\t\t\tif (inScriptType == eNonHtmlScript)\n\t\t\t\tinScriptType = eNonHtmlScriptPreProc;\n\t\t\telse\n\t\t\t\tinScriptType = eNonHtmlPreProc;\n\t\t\t// Fold whole script, but not if the XML first tag (all XML-like tags in this case)\n\t\t\tif (foldHTMLPreprocessor && (scriptLanguage != eScriptXML)) {\n\t\t\t\tlevelCurrent++;\n\t\t\t}\n\t\t\t// should be better\n\t\t\tch = static_cast<unsigned char>(styler.SafeGetCharAt(i));\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle the start Mako template Python code\n\t\telse if (isMako && scriptLanguage == eScriptNone && ((ch == '<' && chNext == '%') ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t (lineStartVisibleChars == 1 && ch == '%') ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t (lineStartVisibleChars == 1 && ch == '/' && chNext == '%') ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t (ch == '$' && chNext == '{') ||\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t (ch == '<' && chNext == '/' && chNext2 == '%'))) {\n\t\t\tif (ch == '%' || ch == '/')\n\t\t\t\tStringCopy(makoBlockType, \"%\");\n\t\t\telse if (ch == '$')\n\t\t\t\tStringCopy(makoBlockType, \"{\");\n\t\t\telse if (chNext == '/')\n\t\t\t\tGetNextWord(styler, i+3, makoBlockType, sizeof(makoBlockType));\n\t\t\telse\n\t\t\t\tGetNextWord(styler, i+2, makoBlockType, sizeof(makoBlockType));\n\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\tbeforePreProc = state;\n\t\t\tif (inScriptType == eNonHtmlScript)\n\t\t\t\tinScriptType = eNonHtmlScriptPreProc;\n\t\t\telse\n\t\t\t\tinScriptType = eNonHtmlPreProc;\n\n\t\t\tif (chNext == '/') {\n\t\t\t\ti += 2;\n\t\t\t\tvisibleChars += 2;\n\t\t\t} else if (ch != '%') {\n\t\t\t\ti++;\n\t\t\t\tvisibleChars++;\n\t\t\t}\n\t\t\tstate = SCE_HP_START;\n\t\t\tscriptLanguage = eScriptPython;\n\t\t\tstyler.ColourTo(i, SCE_H_ASP);\n\n\t\t\tif (ch != '%' && ch != '$' && ch != '/') {\n\t\t\t\ti += static_cast<int>(strlen(makoBlockType));\n\t\t\t\tvisibleChars += static_cast<int>(strlen(makoBlockType));\n\t\t\t\tif (keywords4.InList(makoBlockType))\n\t\t\t\t\tstyler.ColourTo(i, SCE_HP_WORD);\n\t\t\t\telse\n\t\t\t\t\tstyler.ColourTo(i, SCE_H_TAGUNKNOWN);\n\t\t\t}\n\n\t\t\tch = static_cast<unsigned char>(styler.SafeGetCharAt(i));\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle the start/end of Django comment\n\t\telse if (isDjango && state != SCE_H_COMMENT && (ch == '{' && chNext == '#')) {\n\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\tbeforePreProc = state;\n\t\t\tbeforeLanguage = scriptLanguage;\n\t\t\tif (inScriptType == eNonHtmlScript)\n\t\t\t\tinScriptType = eNonHtmlScriptPreProc;\n\t\t\telse\n\t\t\t\tinScriptType = eNonHtmlPreProc;\n\t\t\ti += 1;\n\t\t\tvisibleChars += 1;\n\t\t\tscriptLanguage = eScriptComment;\n\t\t\tstate = SCE_H_COMMENT;\n\t\t\tstyler.ColourTo(i, SCE_H_ASP);\n\t\t\tch = static_cast<unsigned char>(styler.SafeGetCharAt(i));\n\t\t\tcontinue;\n\t\t} else if (isDjango && state == SCE_H_COMMENT && (ch == '#' && chNext == '}')) {\n\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\ti += 1;\n\t\t\tvisibleChars += 1;\n\t\t\tstyler.ColourTo(i, SCE_H_ASP);\n\t\t\tstate = beforePreProc;\n\t\t\tif (inScriptType == eNonHtmlScriptPreProc)\n\t\t\t\tinScriptType = eNonHtmlScript;\n\t\t\telse\n\t\t\t\tinScriptType = eHtml;\n\t\t\tscriptLanguage = beforeLanguage;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle the start Django template code\n\t\telse if (isDjango && scriptLanguage != eScriptPython && (ch == '{' && (chNext == '%' ||  chNext == '{'))) {\n\t\t\tif (chNext == '%')\n\t\t\t\tStringCopy(djangoBlockType, \"%\");\n\t\t\telse\n\t\t\t\tStringCopy(djangoBlockType, \"{\");\n\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\tbeforePreProc = state;\n\t\t\tif (inScriptType == eNonHtmlScript)\n\t\t\t\tinScriptType = eNonHtmlScriptPreProc;\n\t\t\telse\n\t\t\t\tinScriptType = eNonHtmlPreProc;\n\n\t\t\ti += 1;\n\t\t\tvisibleChars += 1;\n\t\t\tstate = SCE_HP_START;\n\t\t\tbeforeLanguage = scriptLanguage;\n\t\t\tscriptLanguage = eScriptPython;\n\t\t\tstyler.ColourTo(i, SCE_H_ASP);\n\n\t\t\tch = static_cast<unsigned char>(styler.SafeGetCharAt(i));\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle the start of ASP pre-processor = Non-HTML\n\t\telse if (!isMako && !isDjango && !isCommentASPState(state) && (ch == '<') && (chNext == '%') && !isPHPStringState(state)) {\n\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\tbeforePreProc = state;\n\t\t\tif (inScriptType == eNonHtmlScript)\n\t\t\t\tinScriptType = eNonHtmlScriptPreProc;\n\t\t\telse\n\t\t\t\tinScriptType = eNonHtmlPreProc;\n\n\t\t\tif (chNext2 == '@') {\n\t\t\t\ti += 2; // place as if it was the second next char treated\n\t\t\t\tvisibleChars += 2;\n\t\t\t\tstate = SCE_H_ASPAT;\n\t\t\t} else if ((chNext2 == '-') && (styler.SafeGetCharAt(i + 3) == '-')) {\n\t\t\t\tstyler.ColourTo(i + 3, SCE_H_ASP);\n\t\t\t\tstate = SCE_H_XCCOMMENT;\n\t\t\t\tscriptLanguage = eScriptVBS;\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\tif (chNext2 == '=') {\n\t\t\t\t\ti += 2; // place as if it was the second next char treated\n\t\t\t\t\tvisibleChars += 2;\n\t\t\t\t} else {\n\t\t\t\t\ti++; // place as if it was the next char treated\n\t\t\t\t\tvisibleChars++;\n\t\t\t\t}\n\n\t\t\t\tstate = StateForScript(aspScript);\n\t\t\t}\n\t\t\tscriptLanguage = eScriptVBS;\n\t\t\tstyler.ColourTo(i, SCE_H_ASP);\n\t\t\t// fold whole script\n\t\t\tif (foldHTMLPreprocessor)\n\t\t\t\tlevelCurrent++;\n\t\t\t// should be better\n\t\t\tch = static_cast<unsigned char>(styler.SafeGetCharAt(i));\n\t\t\tcontinue;\n\t\t}\n\n\t\t/////////////////////////////////////\n\t\t// handle the start of SGML language (DTD)\n\t\telse if (((scriptLanguage == eScriptNone) || (scriptLanguage == eScriptXML)) &&\n\t\t\t\t (chPrev == '<') &&\n\t\t\t\t (ch == '!') &&\n\t\t\t\t (StateToPrint != SCE_H_CDATA) &&\n\t\t\t\t (!IsCommentState(StateToPrint)) &&\n\t\t\t\t (!IsScriptCommentState(StateToPrint))) {\n\t\t\tbeforePreProc = state;\n\t\t\tstyler.ColourTo(i - 2, StateToPrint);\n\t\t\tif ((chNext == '-') && (chNext2 == '-')) {\n\t\t\t\tstate = SCE_H_COMMENT; // wait for a pending command\n\t\t\t\tstyler.ColourTo(i + 2, SCE_H_COMMENT);\n\t\t\t\ti += 2; // follow styling after the --\n\t\t\t} else if (isWordCdata(i + 1, i + 7, styler)) {\n\t\t\t\tstate = SCE_H_CDATA;\n\t\t\t} else {\n\t\t\t\tstyler.ColourTo(i, SCE_H_SGML_DEFAULT); // <! is default\n\t\t\t\tscriptLanguage = eScriptSGML;\n\t\t\t\tstate = SCE_H_SGML_COMMAND; // wait for a pending command\n\t\t\t}\n\t\t\t// fold whole tag (-- when closing the tag)\n\t\t\tif (foldHTMLPreprocessor || state == SCE_H_COMMENT || state == SCE_H_CDATA)\n\t\t\t\tlevelCurrent++;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle the end of Mako Python code\n\t\telse if (isMako &&\n\t\t\t     ((inScriptType == eNonHtmlPreProc) || (inScriptType == eNonHtmlScriptPreProc)) &&\n\t\t\t\t (scriptLanguage != eScriptNone) && stateAllowsTermination(state) &&\n\t\t\t\t isMakoBlockEnd(ch, chNext, makoBlockType)) {\n\t\t\tif (state == SCE_H_ASPAT) {\n\t\t\t\taspScript = segIsScriptingIndicator(styler,\n\t\t\t\t                                    styler.GetStartSegment(), i - 1, aspScript);\n\t\t\t}\n\t\t\tif (state == SCE_HP_WORD) {\n\t\t\t\tclassifyWordHTPy(styler.GetStartSegment(), i - 1, keywords4, styler, prevWord, inScriptType, isMako);\n\t\t\t} else {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t}\n\t\t\tif (0 != strcmp(makoBlockType, \"%\") && (0 != strcmp(makoBlockType, \"{\")) && ch != '>') {\n\t\t\t\ti++;\n\t\t\t\tvisibleChars++;\n\t\t    }\n\t\t\telse if (0 == strcmp(makoBlockType, \"%\") && ch == '/') {\n\t\t\t\ti++;\n\t\t\t\tvisibleChars++;\n\t\t\t}\n\t\t\tif (0 != strcmp(makoBlockType, \"%\") || ch == '/') {\n\t\t\t\tstyler.ColourTo(i, SCE_H_ASP);\n\t\t\t}\n\t\t\tstate = beforePreProc;\n\t\t\tif (inScriptType == eNonHtmlScriptPreProc)\n\t\t\t\tinScriptType = eNonHtmlScript;\n\t\t\telse\n\t\t\t\tinScriptType = eHtml;\n\t\t\tscriptLanguage = eScriptNone;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle the end of Django template code\n\t\telse if (isDjango &&\n\t\t\t     ((inScriptType == eNonHtmlPreProc) || (inScriptType == eNonHtmlScriptPreProc)) &&\n\t\t\t\t (scriptLanguage != eScriptNone) && stateAllowsTermination(state) &&\n\t\t\t\t isDjangoBlockEnd(ch, chNext, djangoBlockType)) {\n\t\t\tif (state == SCE_H_ASPAT) {\n\t\t\t\taspScript = segIsScriptingIndicator(styler,\n\t\t\t\t                                    styler.GetStartSegment(), i - 1, aspScript);\n\t\t\t}\n\t\t\tif (state == SCE_HP_WORD) {\n\t\t\t\tclassifyWordHTPy(styler.GetStartSegment(), i - 1, keywords4, styler, prevWord, inScriptType, isMako);\n\t\t\t} else {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t}\n\t\t\ti += 1;\n\t\t\tvisibleChars += 1;\n\t\t\tstyler.ColourTo(i, SCE_H_ASP);\n\t\t\tstate = beforePreProc;\n\t\t\tif (inScriptType == eNonHtmlScriptPreProc)\n\t\t\t\tinScriptType = eNonHtmlScript;\n\t\t\telse\n\t\t\t\tinScriptType = eHtml;\n\t\t\tscriptLanguage = beforeLanguage;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// handle the end of a pre-processor = Non-HTML\n\t\telse if ((!isMako && !isDjango && ((inScriptType == eNonHtmlPreProc) || (inScriptType == eNonHtmlScriptPreProc)) &&\n\t\t\t\t  (((scriptLanguage != eScriptNone) && stateAllowsTermination(state))) &&\n\t\t\t\t  (((ch == '%') || (ch == '?')) && (chNext == '>'))) ||\n\t\t         ((scriptLanguage == eScriptSGML) && (ch == '>') && (state != SCE_H_SGML_COMMENT))) {\n\t\t\tif (state == SCE_H_ASPAT) {\n\t\t\t\taspScript = segIsScriptingIndicator(styler,\n\t\t\t\t                                    styler.GetStartSegment(), i - 1, aspScript);\n\t\t\t}\n\t\t\t// Bounce out of any ASP mode\n\t\t\tswitch (state) {\n\t\t\tcase SCE_HJ_WORD:\n\t\t\t\tclassifyWordHTJS(styler.GetStartSegment(), i - 1, keywords2, styler, inScriptType);\n\t\t\t\tbreak;\n\t\t\tcase SCE_HB_WORD:\n\t\t\t\tclassifyWordHTVB(styler.GetStartSegment(), i - 1, keywords3, styler, inScriptType);\n\t\t\t\tbreak;\n\t\t\tcase SCE_HP_WORD:\n\t\t\t\tclassifyWordHTPy(styler.GetStartSegment(), i - 1, keywords4, styler, prevWord, inScriptType, isMako);\n\t\t\t\tbreak;\n\t\t\tcase SCE_HPHP_WORD:\n\t\t\t\tclassifyWordHTPHP(styler.GetStartSegment(), i - 1, keywords5, styler);\n\t\t\t\tbreak;\n\t\t\tcase SCE_H_XCCOMMENT:\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tbreak;\n\t\t\tdefault :\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (scriptLanguage != eScriptSGML) {\n\t\t\t\ti++;\n\t\t\t\tvisibleChars++;\n\t\t\t}\n\t\t\tif (ch == '%')\n\t\t\t\tstyler.ColourTo(i, SCE_H_ASP);\n\t\t\telse if (scriptLanguage == eScriptXML)\n\t\t\t\tstyler.ColourTo(i, SCE_H_XMLEND);\n\t\t\telse if (scriptLanguage == eScriptSGML)\n\t\t\t\tstyler.ColourTo(i, SCE_H_SGML_DEFAULT);\n\t\t\telse\n\t\t\t\tstyler.ColourTo(i, SCE_H_QUESTION);\n\t\t\tstate = beforePreProc;\n\t\t\tif (inScriptType == eNonHtmlScriptPreProc)\n\t\t\t\tinScriptType = eNonHtmlScript;\n\t\t\telse\n\t\t\t\tinScriptType = eHtml;\n\t\t\t// Unfold all scripting languages, except for XML tag\n\t\t\tif (foldHTMLPreprocessor && (scriptLanguage != eScriptXML)) {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t\tscriptLanguage = beforeLanguage;\n\t\t\tcontinue;\n\t\t}\n\t\t/////////////////////////////////////\n\n\t\tswitch (state) {\n\t\tcase SCE_H_DEFAULT:\n\t\t\tif (ch == '<') {\n\t\t\t\t// in HTML, fold on tag open and unfold on tag close\n\t\t\t\ttagOpened = true;\n\t\t\t\ttagClosing = (chNext == '/');\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tif (chNext != '!')\n\t\t\t\t\tstate = SCE_H_TAGUNKNOWN;\n\t\t\t} else if (ch == '&') {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_H_DEFAULT);\n\t\t\t\tstate = SCE_H_ENTITY;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_DEFAULT:\n\t\tcase SCE_H_SGML_BLOCK_DEFAULT:\n//\t\t\tif (scriptLanguage == eScriptSGMLblock)\n//\t\t\t\tStateToPrint = SCE_H_SGML_BLOCK_DEFAULT;\n\n\t\t\tif (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_DOUBLESTRING;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_SIMPLESTRING;\n\t\t\t} else if ((ch == '-') && (chPrev == '-')) {\n\t\t\t\tif (static_cast<Sci_Position>(styler.GetStartSegment()) <= (i - 2)) {\n\t\t\t\t\tstyler.ColourTo(i - 2, StateToPrint);\n\t\t\t\t}\n\t\t\t\tstate = SCE_H_SGML_COMMENT;\n\t\t\t} else if (IsASCII(ch) && isalpha(ch) && (chPrev == '%')) {\n\t\t\t\tstyler.ColourTo(i - 2, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_ENTITY;\n\t\t\t} else if (ch == '#') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_SPECIAL;\n\t\t\t} else if (ch == '[') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tscriptLanguage = eScriptSGMLblock;\n\t\t\t\tstate = SCE_H_SGML_BLOCK_DEFAULT;\n\t\t\t} else if (ch == ']') {\n\t\t\t\tif (scriptLanguage == eScriptSGMLblock) {\n\t\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\t\tscriptLanguage = eScriptSGML;\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\tstyler.ColourTo(i, SCE_H_SGML_ERROR);\n\t\t\t\t}\n\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t} else if (scriptLanguage == eScriptSGMLblock) {\n\t\t\t\tif ((ch == '!') && (chPrev == '<')) {\n\t\t\t\t\tstyler.ColourTo(i - 2, StateToPrint);\n\t\t\t\t\tstyler.ColourTo(i, SCE_H_SGML_DEFAULT);\n\t\t\t\t\tstate = SCE_H_SGML_COMMAND;\n\t\t\t\t} else if (ch == '>') {\n\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\tstyler.ColourTo(i, SCE_H_SGML_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_COMMAND:\n\t\t\tif ((ch == '-') && (chPrev == '-')) {\n\t\t\t\tstyler.ColourTo(i - 2, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_COMMENT;\n\t\t\t} else if (!issgmlwordchar(ch)) {\n\t\t\t\tif (isWordHSGML(styler.GetStartSegment(), i - 1, keywords6, styler)) {\n\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\tstate = SCE_H_SGML_1ST_PARAM;\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_H_SGML_ERROR;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_1ST_PARAM:\n\t\t\t// wait for the beginning of the word\n\t\t\tif ((ch == '-') && (chPrev == '-')) {\n\t\t\t\tif (scriptLanguage == eScriptSGMLblock) {\n\t\t\t\t\tstyler.ColourTo(i - 2, SCE_H_SGML_BLOCK_DEFAULT);\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i - 2, SCE_H_SGML_DEFAULT);\n\t\t\t\t}\n\t\t\t\tstate = SCE_H_SGML_1ST_PARAM_COMMENT;\n\t\t\t} else if (issgmlwordchar(ch)) {\n\t\t\t\tif (scriptLanguage == eScriptSGMLblock) {\n\t\t\t\t\tstyler.ColourTo(i - 1, SCE_H_SGML_BLOCK_DEFAULT);\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i - 1, SCE_H_SGML_DEFAULT);\n\t\t\t\t}\n\t\t\t\t// find the length of the word\n\t\t\t\tint size = 1;\n\t\t\t\twhile (setHTMLWord.Contains(static_cast<unsigned char>(styler.SafeGetCharAt(i + size))))\n\t\t\t\t\tsize++;\n\t\t\t\tstyler.ColourTo(i + size - 1, StateToPrint);\n\t\t\t\ti += size - 1;\n\t\t\t\tvisibleChars += size - 1;\n\t\t\t\tch = static_cast<unsigned char>(styler.SafeGetCharAt(i));\n\t\t\t\tif (scriptLanguage == eScriptSGMLblock) {\n\t\t\t\t\tstate = SCE_H_SGML_BLOCK_DEFAULT;\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_ERROR:\n\t\t\tif ((ch == '-') && (chPrev == '-')) {\n\t\t\t\tstyler.ColourTo(i - 2, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_COMMENT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_DOUBLESTRING:\n\t\t\tif (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_SIMPLESTRING:\n\t\t\tif (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_COMMENT:\n\t\t\tif ((ch == '-') && (chPrev == '-')) {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_CDATA:\n\t\t\tif ((chPrev2 == ']') && (chPrev == ']') && (ch == '>')) {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_COMMENT:\n\t\t\tif ((scriptLanguage != eScriptComment) && (chPrev2 == '-') && (chPrev == '-') && (ch == '>')) {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_1ST_PARAM_COMMENT:\n\t\t\tif ((ch == '-') && (chPrev == '-')) {\n\t\t\t\tstyler.ColourTo(i, SCE_H_SGML_COMMENT);\n\t\t\t\tstate = SCE_H_SGML_1ST_PARAM;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_SPECIAL:\n\t\t\tif (!(IsASCII(ch) && isupper(ch))) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tif (isalnum(ch)) {\n\t\t\t\t\tstate = SCE_H_SGML_ERROR;\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SGML_ENTITY:\n\t\t\tif (ch == ';') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t} else if (!(IsASCII(ch) && isalnum(ch)) && ch != '-' && ch != '.') {\n\t\t\t\tstyler.ColourTo(i, SCE_H_SGML_ERROR);\n\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_ENTITY:\n\t\t\tif (ch == ';') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t}\n\t\t\tif (ch != '#' && !(IsASCII(ch) && isalnum(ch))\t// Should check that '#' follows '&', but it is unlikely anyway...\n\t\t\t\t&& ch != '.' && ch != '-' && ch != '_' && ch != ':') { // valid in XML\n\t\t\t\tif (!IsASCII(ch))\t// Possibly start of a multibyte character so don't allow this byte to be in entity style\n\t\t\t\t\tstyler.ColourTo(i-1, SCE_H_TAGUNKNOWN);\n\t\t\t\telse\n\t\t\t\t\tstyler.ColourTo(i, SCE_H_TAGUNKNOWN);\n\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_TAGUNKNOWN:\n\t\t\tif (!setTagContinue.Contains(ch) && !((ch == '/') && (chPrev == '<'))) {\n\t\t\t\tint eClass = classifyTagHTML(styler.GetStartSegment(),\n\t\t\t\t\ti - 1, keywords, styler, tagDontFold, caseSensitive, isXml, allowScripts);\n\t\t\t\tif (eClass == SCE_H_SCRIPT || eClass == SCE_H_COMMENT) {\n\t\t\t\t\tif (!tagClosing) {\n\t\t\t\t\t\tinScriptType = eNonHtmlScript;\n\t\t\t\t\t\tscriptLanguage = eClass == SCE_H_SCRIPT ? clientScript : eScriptComment;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tscriptLanguage = eScriptNone;\n\t\t\t\t\t}\n\t\t\t\t\teClass = SCE_H_TAG;\n\t\t\t\t}\n\t\t\t\tif (ch == '>') {\n\t\t\t\t\tstyler.ColourTo(i, eClass);\n\t\t\t\t\tif (inScriptType == eNonHtmlScript) {\n\t\t\t\t\t\tstate = StateForScript(scriptLanguage);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t\ttagOpened = false;\n\t\t\t\t\tif (!tagDontFold) {\n\t\t\t\t\t\tif (tagClosing) {\n\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttagClosing = false;\n\t\t\t\t} else if (ch == '/' && chNext == '>') {\n\t\t\t\t\tif (eClass == SCE_H_TAGUNKNOWN) {\n\t\t\t\t\t\tstyler.ColourTo(i + 1, SCE_H_TAGUNKNOWN);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\t\tstyler.ColourTo(i + 1, SCE_H_TAGEND);\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t\tch = chNext;\n\t\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t\t\ttagOpened = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (eClass != SCE_H_TAGUNKNOWN) {\n\t\t\t\t\t\tif (eClass == SCE_H_SGML_DEFAULT) {\n\t\t\t\t\t\t\tstate = SCE_H_SGML_DEFAULT;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstate = SCE_H_OTHER;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_ATTRIBUTE:\n\t\t\tif (!setAttributeContinue.Contains(ch)) {\n\t\t\t\tif (inScriptType == eNonHtmlScript) {\n\t\t\t\t\tint scriptLanguagePrev = scriptLanguage;\n\t\t\t\t\tclientScript = segIsScriptingIndicator(styler, styler.GetStartSegment(), i - 1, scriptLanguage);\n\t\t\t\t\tscriptLanguage = clientScript;\n\t\t\t\t\tif ((scriptLanguagePrev != scriptLanguage) && (scriptLanguage == eScriptNone))\n\t\t\t\t\t\tinScriptType = eHtml;\n\t\t\t\t}\n\t\t\t\tclassifyAttribHTML(styler.GetStartSegment(), i - 1, keywords, styler);\n\t\t\t\tif (ch == '>') {\n\t\t\t\t\tstyler.ColourTo(i, SCE_H_TAG);\n\t\t\t\t\tif (inScriptType == eNonHtmlScript) {\n\t\t\t\t\t\tstate = StateForScript(scriptLanguage);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t\ttagOpened = false;\n\t\t\t\t\tif (!tagDontFold) {\n\t\t\t\t\t\tif (tagClosing) {\n\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\ttagClosing = false;\n\t\t\t\t} else if (ch == '=') {\n\t\t\t\t\tstyler.ColourTo(i, SCE_H_OTHER);\n\t\t\t\t\tstate = SCE_H_VALUE;\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_H_OTHER;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_OTHER:\n\t\t\tif (ch == '>') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstyler.ColourTo(i, SCE_H_TAG);\n\t\t\t\tif (inScriptType == eNonHtmlScript) {\n\t\t\t\t\tstate = StateForScript(scriptLanguage);\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t\t}\n\t\t\t\ttagOpened = false;\n\t\t\t\tif (!tagDontFold) {\n\t\t\t\t\tif (tagClosing) {\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttagClosing = false;\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_H_DOUBLESTRING;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_H_SINGLESTRING;\n\t\t\t} else if (ch == '=') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_H_VALUE;\n\t\t\t} else if (ch == '/' && chNext == '>') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstyler.ColourTo(i + 1, SCE_H_TAGEND);\n\t\t\t\ti++;\n\t\t\t\tch = chNext;\n\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t\ttagOpened = false;\n\t\t\t} else if (ch == '?' && chNext == '>') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstyler.ColourTo(i + 1, SCE_H_XMLEND);\n\t\t\t\ti++;\n\t\t\t\tch = chNext;\n\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t} else if (setHTMLWord.Contains(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_H_ATTRIBUTE;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_DOUBLESTRING:\n\t\t\tif (ch == '\\\"') {\n\t\t\t\tif (inScriptType == eNonHtmlScript) {\n\t\t\t\t\tscriptLanguage = segIsScriptingIndicator(styler, styler.GetStartSegment(), i, scriptLanguage);\n\t\t\t\t}\n\t\t\t\tstyler.ColourTo(i, SCE_H_DOUBLESTRING);\n\t\t\t\tstate = SCE_H_OTHER;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_SINGLESTRING:\n\t\t\tif (ch == '\\'') {\n\t\t\t\tif (inScriptType == eNonHtmlScript) {\n\t\t\t\t\tscriptLanguage = segIsScriptingIndicator(styler, styler.GetStartSegment(), i, scriptLanguage);\n\t\t\t\t}\n\t\t\t\tstyler.ColourTo(i, SCE_H_SINGLESTRING);\n\t\t\t\tstate = SCE_H_OTHER;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_H_VALUE:\n\t\t\tif (!setHTMLWord.Contains(ch)) {\n\t\t\t\tif (ch == '\\\"' && chPrev == '=') {\n\t\t\t\t\t// Should really test for being first character\n\t\t\t\t\tstate = SCE_H_DOUBLESTRING;\n\t\t\t\t} else if (ch == '\\'' && chPrev == '=') {\n\t\t\t\t\tstate = SCE_H_SINGLESTRING;\n\t\t\t\t} else {\n\t\t\t\t\tif (IsNumber(styler.GetStartSegment(), styler)) {\n\t\t\t\t\t\tstyler.ColourTo(i - 1, SCE_H_NUMBER);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\t}\n\t\t\t\t\tif (ch == '>') {\n\t\t\t\t\t\tstyler.ColourTo(i, SCE_H_TAG);\n\t\t\t\t\t\tif (inScriptType == eNonHtmlScript) {\n\t\t\t\t\t\t\tstate = StateForScript(scriptLanguage);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstate = SCE_H_DEFAULT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttagOpened = false;\n\t\t\t\t\t\tif (!tagDontFold) {\n\t\t\t\t\t\t\tif (tagClosing) {\n\t\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttagClosing = false;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = SCE_H_OTHER;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HJ_DEFAULT:\n\t\tcase SCE_HJ_START:\n\t\tcase SCE_HJ_SYMBOLS:\n\t\t\tif (IsAWordStart(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_WORD;\n\t\t\t} else if (ch == '/' && chNext == '*') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tif (chNext2 == '*')\n\t\t\t\t\tstate = SCE_HJ_COMMENTDOC;\n\t\t\t\telse\n\t\t\t\t\tstate = SCE_HJ_COMMENT;\n\t\t\t\tif (chNext2 == '/') {\n\t\t\t\t\t// Eat the * so it isn't used for the end of the comment\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else if (ch == '/' && chNext == '/') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_COMMENTLINE;\n\t\t\t} else if (ch == '/' && setOKBeforeJSRE.Contains(chPrevNonWhite)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_REGEX;\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_DOUBLESTRING;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_SINGLESTRING;\n\t\t\t} else if ((ch == '<') && (chNext == '!') && (chNext2 == '-') &&\n\t\t\t           styler.SafeGetCharAt(i + 3) == '-') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_COMMENTLINE;\n\t\t\t} else if ((ch == '-') && (chNext == '-') && (chNext2 == '>')) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_COMMENTLINE;\n\t\t\t\ti += 2;\n\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HJ_SYMBOLS, inScriptType));\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t} else if ((ch == ' ') || (ch == '\\t')) {\n\t\t\t\tif (state == SCE_HJ_START) {\n\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HJ_WORD:\n\t\t\tif (!IsAWordChar(ch)) {\n\t\t\t\tclassifyWordHTJS(styler.GetStartSegment(), i - 1, keywords2, styler, inScriptType);\n\t\t\t\t//styler.ColourTo(i - 1, eHTJSKeyword);\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t\tif (ch == '/' && chNext == '*') {\n\t\t\t\t\tif (chNext2 == '*')\n\t\t\t\t\t\tstate = SCE_HJ_COMMENTDOC;\n\t\t\t\t\telse\n\t\t\t\t\t\tstate = SCE_HJ_COMMENT;\n\t\t\t\t} else if (ch == '/' && chNext == '/') {\n\t\t\t\t\tstate = SCE_HJ_COMMENTLINE;\n\t\t\t\t} else if (ch == '\\\"') {\n\t\t\t\t\tstate = SCE_HJ_DOUBLESTRING;\n\t\t\t\t} else if (ch == '\\'') {\n\t\t\t\t\tstate = SCE_HJ_SINGLESTRING;\n\t\t\t\t} else if ((ch == '-') && (chNext == '-') && (chNext2 == '>')) {\n\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\tstate = SCE_HJ_COMMENTLINE;\n\t\t\t\t\ti += 2;\n\t\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HJ_SYMBOLS, inScriptType));\n\t\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HJ_COMMENT:\n\t\tcase SCE_HJ_COMMENTDOC:\n\t\t\tif (ch == '/' && chPrev == '*') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t\tch = ' ';\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HJ_COMMENTLINE:\n\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\tstyler.ColourTo(i - 1, statePrintForState(SCE_HJ_COMMENTLINE, inScriptType));\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t\tch = ' ';\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HJ_DOUBLESTRING:\n\t\t\tif (ch == '\\\\') {\n\t\t\t\tif (chNext == '\\\"' || chNext == '\\'' || chNext == '\\\\') {\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HJ_DOUBLESTRING, inScriptType));\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t} else if ((inScriptType == eNonHtmlScript) && (ch == '-') && (chNext == '-') && (chNext2 == '>')) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_COMMENTLINE;\n\t\t\t\ti += 2;\n\t\t\t} else if (isLineEnd(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_STRINGEOL;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HJ_SINGLESTRING:\n\t\t\tif (ch == '\\\\') {\n\t\t\t\tif (chNext == '\\\"' || chNext == '\\'' || chNext == '\\\\') {\n\t\t\t\t\ti++;\n\t\t\t\t}\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HJ_SINGLESTRING, inScriptType));\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t} else if ((inScriptType == eNonHtmlScript) && (ch == '-') && (chNext == '-') && (chNext2 == '>')) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_COMMENTLINE;\n\t\t\t\ti += 2;\n\t\t\t} else if (isLineEnd(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tif (chPrev != '\\\\' && (chPrev2 != '\\\\' || chPrev != '\\r' || ch != '\\n')) {\n\t\t\t\t\tstate = SCE_HJ_STRINGEOL;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HJ_STRINGEOL:\n\t\t\tif (!isLineEnd(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t} else if (!isLineEnd(chNext)) {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HJ_REGEX:\n\t\t\tif (ch == '\\r' || ch == '\\n' || ch == '/') {\n\t\t\t\tif (ch == '/') {\n\t\t\t\t\twhile (IsASCII(chNext) && islower(chNext)) {   // gobble regex flags\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\tch = chNext;\n\t\t\t\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HJ_DEFAULT;\n\t\t\t} else if (ch == '\\\\') {\n\t\t\t\t// Gobble up the quoted character\n\t\t\t\tif (chNext == '\\\\' || chNext == '/') {\n\t\t\t\t\ti++;\n\t\t\t\t\tch = chNext;\n\t\t\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HB_DEFAULT:\n\t\tcase SCE_HB_START:\n\t\t\tif (IsAWordStart(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HB_WORD;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HB_COMMENTLINE;\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HB_STRING;\n\t\t\t} else if ((ch == '<') && (chNext == '!') && (chNext2 == '-') &&\n\t\t\t           styler.SafeGetCharAt(i + 3) == '-') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HB_COMMENTLINE;\n\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HB_DEFAULT, inScriptType));\n\t\t\t\tstate = SCE_HB_DEFAULT;\n\t\t\t} else if ((ch == ' ') || (ch == '\\t')) {\n\t\t\t\tif (state == SCE_HB_START) {\n\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\tstate = SCE_HB_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HB_WORD:\n\t\t\tif (!IsAWordChar(ch)) {\n\t\t\t\tstate = classifyWordHTVB(styler.GetStartSegment(), i - 1, keywords3, styler, inScriptType);\n\t\t\t\tif (state == SCE_HB_DEFAULT) {\n\t\t\t\t\tif (ch == '\\\"') {\n\t\t\t\t\t\tstate = SCE_HB_STRING;\n\t\t\t\t\t} else if (ch == '\\'') {\n\t\t\t\t\t\tstate = SCE_HB_COMMENTLINE;\n\t\t\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HB_DEFAULT, inScriptType));\n\t\t\t\t\t\tstate = SCE_HB_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HB_STRING:\n\t\t\tif (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HB_DEFAULT;\n\t\t\t} else if (ch == '\\r' || ch == '\\n') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HB_STRINGEOL;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HB_COMMENTLINE:\n\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HB_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HB_STRINGEOL:\n\t\t\tif (!isLineEnd(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HB_DEFAULT;\n\t\t\t} else if (!isLineEnd(chNext)) {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HB_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HP_DEFAULT:\n\t\tcase SCE_HP_START:\n\t\t\tif (IsAWordStart(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HP_WORD;\n\t\t\t} else if ((ch == '<') && (chNext == '!') && (chNext2 == '-') &&\n\t\t\t           styler.SafeGetCharAt(i + 3) == '-') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HP_COMMENTLINE;\n\t\t\t} else if (ch == '#') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HP_COMMENTLINE;\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tif (chNext == '\\\"' && chNext2 == '\\\"') {\n\t\t\t\t\ti += 2;\n\t\t\t\t\tstate = SCE_HP_TRIPLEDOUBLE;\n\t\t\t\t\tch = ' ';\n\t\t\t\t\tchPrev = ' ';\n\t\t\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\t\t\t} else {\n\t\t\t\t\t//\t\t\t\t\tstate = statePrintForState(SCE_HP_STRING,inScriptType);\n\t\t\t\t\tstate = SCE_HP_STRING;\n\t\t\t\t}\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tif (chNext == '\\'' && chNext2 == '\\'') {\n\t\t\t\t\ti += 2;\n\t\t\t\t\tstate = SCE_HP_TRIPLE;\n\t\t\t\t\tch = ' ';\n\t\t\t\t\tchPrev = ' ';\n\t\t\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_HP_CHARACTER;\n\t\t\t\t}\n\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HP_OPERATOR, inScriptType));\n\t\t\t} else if ((ch == ' ') || (ch == '\\t')) {\n\t\t\t\tif (state == SCE_HP_START) {\n\t\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\t\tstate = SCE_HP_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HP_WORD:\n\t\t\tif (!IsAWordChar(ch)) {\n\t\t\t\tclassifyWordHTPy(styler.GetStartSegment(), i - 1, keywords4, styler, prevWord, inScriptType, isMako);\n\t\t\t\tstate = SCE_HP_DEFAULT;\n\t\t\t\tif (ch == '#') {\n\t\t\t\t\tstate = SCE_HP_COMMENTLINE;\n\t\t\t\t} else if (ch == '\\\"') {\n\t\t\t\t\tif (chNext == '\\\"' && chNext2 == '\\\"') {\n\t\t\t\t\t\ti += 2;\n\t\t\t\t\t\tstate = SCE_HP_TRIPLEDOUBLE;\n\t\t\t\t\t\tch = ' ';\n\t\t\t\t\t\tchPrev = ' ';\n\t\t\t\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = SCE_HP_STRING;\n\t\t\t\t\t}\n\t\t\t\t} else if (ch == '\\'') {\n\t\t\t\t\tif (chNext == '\\'' && chNext2 == '\\'') {\n\t\t\t\t\t\ti += 2;\n\t\t\t\t\t\tstate = SCE_HP_TRIPLE;\n\t\t\t\t\t\tch = ' ';\n\t\t\t\t\t\tchPrev = ' ';\n\t\t\t\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstate = SCE_HP_CHARACTER;\n\t\t\t\t\t}\n\t\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HP_OPERATOR, inScriptType));\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HP_COMMENTLINE:\n\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HP_STRING:\n\t\t\tif (ch == '\\\\') {\n\t\t\t\tif (chNext == '\\\"' || chNext == '\\'' || chNext == '\\\\') {\n\t\t\t\t\ti++;\n\t\t\t\t\tch = chNext;\n\t\t\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\t\t\t}\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HP_CHARACTER:\n\t\t\tif (ch == '\\\\') {\n\t\t\t\tif (chNext == '\\\"' || chNext == '\\'' || chNext == '\\\\') {\n\t\t\t\t\ti++;\n\t\t\t\t\tch = chNext;\n\t\t\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(i + 1));\n\t\t\t\t}\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HP_TRIPLE:\n\t\t\tif (ch == '\\'' && chPrev == '\\'' && chPrev2 == '\\'') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HP_TRIPLEDOUBLE:\n\t\t\tif (ch == '\\\"' && chPrev == '\\\"' && chPrev2 == '\\\"') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\t\t///////////// start - PHP state handling\n\t\tcase SCE_HPHP_WORD:\n\t\t\tif (!IsAWordChar(ch)) {\n\t\t\t\tclassifyWordHTPHP(styler.GetStartSegment(), i - 1, keywords5, styler);\n\t\t\t\tif (ch == '/' && chNext == '*') {\n\t\t\t\t\ti++;\n\t\t\t\t\tstate = SCE_HPHP_COMMENT;\n\t\t\t\t} else if (ch == '/' && chNext == '/') {\n\t\t\t\t\ti++;\n\t\t\t\t\tstate = SCE_HPHP_COMMENTLINE;\n\t\t\t\t} else if (ch == '#') {\n\t\t\t\t\tstate = SCE_HPHP_COMMENTLINE;\n\t\t\t\t} else if (ch == '\\\"') {\n\t\t\t\t\tstate = SCE_HPHP_HSTRING;\n\t\t\t\t\tStringCopy(phpStringDelimiter, \"\\\"\");\n\t\t\t\t} else if (styler.Match(i, \"<<<\")) {\n\t\t\t\t\tbool isSimpleString = false;\n\t\t\t\t\ti = FindPhpStringDelimiter(phpStringDelimiter, sizeof(phpStringDelimiter), i + 3, lengthDoc, styler, isSimpleString);\n\t\t\t\t\tif (strlen(phpStringDelimiter)) {\n\t\t\t\t\t\tstate = (isSimpleString ? SCE_HPHP_SIMPLESTRING : SCE_HPHP_HSTRING);\n\t\t\t\t\t\tif (foldHeredoc) levelCurrent++;\n\t\t\t\t\t}\n\t\t\t\t} else if (ch == '\\'') {\n\t\t\t\t\tstate = SCE_HPHP_SIMPLESTRING;\n\t\t\t\t\tStringCopy(phpStringDelimiter, \"\\'\");\n\t\t\t\t} else if (ch == '$' && IsPhpWordStart(chNext)) {\n\t\t\t\t\tstate = SCE_HPHP_VARIABLE;\n\t\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\t\tstate = SCE_HPHP_OPERATOR;\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_NUMBER:\n\t\t\t// recognize bases 8,10 or 16 integers OR floating-point numbers\n\t\t\tif (!IsADigit(ch)\n\t\t\t\t&& strchr(\".xXabcdefABCDEF\", ch) == NULL\n\t\t\t\t&& ((ch != '-' && ch != '+') || (chPrev != 'e' && chPrev != 'E'))) {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_HPHP_NUMBER);\n\t\t\t\tif (IsOperator(ch))\n\t\t\t\t\tstate = SCE_HPHP_OPERATOR;\n\t\t\t\telse\n\t\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_VARIABLE:\n\t\t\tif (!IsPhpWordChar(chNext)) {\n\t\t\t\tstyler.ColourTo(i, SCE_HPHP_VARIABLE);\n\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_COMMENT:\n\t\t\tif (ch == '/' && chPrev == '*') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_COMMENTLINE:\n\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_HSTRING:\n\t\t\tif (ch == '\\\\' && (phpStringDelimiter[0] == '\\\"' || chNext == '$' || chNext == '{')) {\n\t\t\t\t// skip the next char\n\t\t\t\ti++;\n\t\t\t} else if (((ch == '{' && chNext == '$') || (ch == '$' && chNext == '{'))\n\t\t\t\t&& IsPhpWordStart(chNext2)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HPHP_COMPLEX_VARIABLE;\n\t\t\t} else if (ch == '$' && IsPhpWordStart(chNext)) {\n\t\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\t\tstate = SCE_HPHP_HSTRING_VARIABLE;\n\t\t\t} else if (styler.Match(i, phpStringDelimiter)) {\n\t\t\t\tif (phpStringDelimiter[0] == '\\\"') {\n\t\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t\t} else if (isLineEnd(chPrev)) {\n\t\t\t\t\tconst int psdLength = static_cast<int>(strlen(phpStringDelimiter));\n\t\t\t\t\tconst char chAfterPsd = styler.SafeGetCharAt(i + psdLength);\n\t\t\t\t\tconst char chAfterPsd2 = styler.SafeGetCharAt(i + psdLength + 1);\n\t\t\t\t\tif (isLineEnd(chAfterPsd) ||\n\t\t\t\t\t\t(chAfterPsd == ';' && isLineEnd(chAfterPsd2))) {\n\t\t\t\t\t\t\ti += (((i + psdLength) < lengthDoc) ? psdLength : lengthDoc) - 1;\n\t\t\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t\t\t\tif (foldHeredoc) levelCurrent--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_SIMPLESTRING:\n\t\t\tif (phpStringDelimiter[0] == '\\'') {\n\t\t\t\tif (ch == '\\\\') {\n\t\t\t\t\t// skip the next char\n\t\t\t\t\ti++;\n\t\t\t\t} else if (ch == '\\'') {\n\t\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (isLineEnd(chPrev) && styler.Match(i, phpStringDelimiter)) {\n\t\t\t\tconst int psdLength = static_cast<int>(strlen(phpStringDelimiter));\n\t\t\t\tconst char chAfterPsd = styler.SafeGetCharAt(i + psdLength);\n\t\t\t\tconst char chAfterPsd2 = styler.SafeGetCharAt(i + psdLength + 1);\n\t\t\t\tif (isLineEnd(chAfterPsd) ||\n\t\t\t\t(chAfterPsd == ';' && isLineEnd(chAfterPsd2))) {\n\t\t\t\t\ti += (((i + psdLength) < lengthDoc) ? psdLength : lengthDoc) - 1;\n\t\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t\t\tif (foldHeredoc) levelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_HSTRING_VARIABLE:\n\t\t\tif (!IsPhpWordChar(chNext)) {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HPHP_HSTRING;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_COMPLEX_VARIABLE:\n\t\t\tif (ch == '}') {\n\t\t\t\tstyler.ColourTo(i, StateToPrint);\n\t\t\t\tstate = SCE_HPHP_HSTRING;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_HPHP_OPERATOR:\n\t\tcase SCE_HPHP_DEFAULT:\n\t\t\tstyler.ColourTo(i - 1, StateToPrint);\n\t\t\tif (IsADigit(ch) || (ch == '.' && IsADigit(chNext))) {\n\t\t\t\tstate = SCE_HPHP_NUMBER;\n\t\t\t} else if (IsAWordStart(ch)) {\n\t\t\t\tstate = SCE_HPHP_WORD;\n\t\t\t} else if (ch == '/' && chNext == '*') {\n\t\t\t\ti++;\n\t\t\t\tstate = SCE_HPHP_COMMENT;\n\t\t\t} else if (ch == '/' && chNext == '/') {\n\t\t\t\ti++;\n\t\t\t\tstate = SCE_HPHP_COMMENTLINE;\n\t\t\t} else if (ch == '#') {\n\t\t\t\tstate = SCE_HPHP_COMMENTLINE;\n\t\t\t} else if (ch == '\\\"') {\n\t\t\t\tstate = SCE_HPHP_HSTRING;\n\t\t\t\tStringCopy(phpStringDelimiter, \"\\\"\");\n\t\t\t} else if (styler.Match(i, \"<<<\")) {\n\t\t\t\tbool isSimpleString = false;\n\t\t\t\ti = FindPhpStringDelimiter(phpStringDelimiter, sizeof(phpStringDelimiter), i + 3, lengthDoc, styler, isSimpleString);\n\t\t\t\tif (strlen(phpStringDelimiter)) {\n\t\t\t\t\tstate = (isSimpleString ? SCE_HPHP_SIMPLESTRING : SCE_HPHP_HSTRING);\n\t\t\t\t\tif (foldHeredoc) levelCurrent++;\n\t\t\t\t}\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstate = SCE_HPHP_SIMPLESTRING;\n\t\t\t\tStringCopy(phpStringDelimiter, \"\\'\");\n\t\t\t} else if (ch == '$' && IsPhpWordStart(chNext)) {\n\t\t\t\tstate = SCE_HPHP_VARIABLE;\n\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\tstate = SCE_HPHP_OPERATOR;\n\t\t\t} else if ((state == SCE_HPHP_OPERATOR) && (IsASpace(ch))) {\n\t\t\t\tstate = SCE_HPHP_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\t\t///////////// end - PHP state handling\n\t\t}\n\n\t\t// Some of the above terminated their lexeme but since the same character starts\n\t\t// the same class again, only reenter if non empty segment.\n\n\t\tbool nonEmptySegment = i >= static_cast<Sci_Position>(styler.GetStartSegment());\n\t\tif (state == SCE_HB_DEFAULT) {    // One of the above succeeded\n\t\t\tif ((ch == '\\\"') && (nonEmptySegment)) {\n\t\t\t\tstate = SCE_HB_STRING;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstate = SCE_HB_COMMENTLINE;\n\t\t\t} else if (IsAWordStart(ch)) {\n\t\t\t\tstate = SCE_HB_WORD;\n\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\tstyler.ColourTo(i, SCE_HB_DEFAULT);\n\t\t\t}\n\t\t} else if (state == SCE_HBA_DEFAULT) {    // One of the above succeeded\n\t\t\tif ((ch == '\\\"') && (nonEmptySegment)) {\n\t\t\t\tstate = SCE_HBA_STRING;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstate = SCE_HBA_COMMENTLINE;\n\t\t\t} else if (IsAWordStart(ch)) {\n\t\t\t\tstate = SCE_HBA_WORD;\n\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\tstyler.ColourTo(i, SCE_HBA_DEFAULT);\n\t\t\t}\n\t\t} else if (state == SCE_HJ_DEFAULT) {    // One of the above succeeded\n\t\t\tif (ch == '/' && chNext == '*') {\n\t\t\t\tif (styler.SafeGetCharAt(i + 2) == '*')\n\t\t\t\t\tstate = SCE_HJ_COMMENTDOC;\n\t\t\t\telse\n\t\t\t\t\tstate = SCE_HJ_COMMENT;\n\t\t\t} else if (ch == '/' && chNext == '/') {\n\t\t\t\tstate = SCE_HJ_COMMENTLINE;\n\t\t\t} else if ((ch == '\\\"') && (nonEmptySegment)) {\n\t\t\t\tstate = SCE_HJ_DOUBLESTRING;\n\t\t\t} else if ((ch == '\\'') && (nonEmptySegment)) {\n\t\t\t\tstate = SCE_HJ_SINGLESTRING;\n\t\t\t} else if (IsAWordStart(ch)) {\n\t\t\t\tstate = SCE_HJ_WORD;\n\t\t\t} else if (IsOperator(ch)) {\n\t\t\t\tstyler.ColourTo(i, statePrintForState(SCE_HJ_SYMBOLS, inScriptType));\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch (state) {\n\tcase SCE_HJ_WORD:\n\t\tclassifyWordHTJS(styler.GetStartSegment(), lengthDoc - 1, keywords2, styler, inScriptType);\n\t\tbreak;\n\tcase SCE_HB_WORD:\n\t\tclassifyWordHTVB(styler.GetStartSegment(), lengthDoc - 1, keywords3, styler, inScriptType);\n\t\tbreak;\n\tcase SCE_HP_WORD:\n\t\tclassifyWordHTPy(styler.GetStartSegment(), lengthDoc - 1, keywords4, styler, prevWord, inScriptType, isMako);\n\t\tbreak;\n\tcase SCE_HPHP_WORD:\n\t\tclassifyWordHTPHP(styler.GetStartSegment(), lengthDoc - 1, keywords5, styler);\n\t\tbreak;\n\tdefault:\n\t\tStateToPrint = statePrintForState(state, inScriptType);\n\t\tif (static_cast<Sci_Position>(styler.GetStartSegment()) < lengthDoc)\n\t\t\tstyler.ColourTo(lengthDoc - 1, StateToPrint);\n\t\tbreak;\n\t}\n\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tif (fold) {\n\t\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\t\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n\t}\n}\n\nstatic void ColouriseXMLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                                  Accessor &styler) {\n\t// Passing in true because we're lexing XML\n\tColouriseHyperTextDoc(startPos, length, initStyle, keywordlists, styler, true);\n}\n\nstatic void ColouriseHTMLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                                  Accessor &styler) {\n\t// Passing in false because we're notlexing XML\n\tColouriseHyperTextDoc(startPos, length, initStyle, keywordlists, styler, false);\n}\n\nstatic void ColourisePHPScriptDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n        Accessor &styler) {\n\tif (startPos == 0)\n\t\tinitStyle = SCE_HPHP_DEFAULT;\n\tColouriseHTMLDoc(startPos, length, initStyle, keywordlists, styler);\n}\n\nstatic const char * const htmlWordListDesc[] = {\n\t\"HTML elements and attributes\",\n\t\"JavaScript keywords\",\n\t\"VBScript keywords\",\n\t\"Python keywords\",\n\t\"PHP keywords\",\n\t\"SGML and DTD keywords\",\n\t0,\n};\n\nstatic const char * const phpscriptWordListDesc[] = {\n\t\"\", //Unused\n\t\"\", //Unused\n\t\"\", //Unused\n\t\"\", //Unused\n\t\"PHP keywords\",\n\t\"\", //Unused\n\t0,\n};\n\nLexerModule lmHTML(SCLEX_HTML, ColouriseHTMLDoc, \"hypertext\", 0, htmlWordListDesc);\nLexerModule lmXML(SCLEX_XML, ColouriseXMLDoc, \"xml\", 0, htmlWordListDesc);\nLexerModule lmPHPSCRIPT(SCLEX_PHPSCRIPT, ColourisePHPScriptDoc, \"phpscript\", 0, phpscriptWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexHaskell.cpp",
    "content": "/******************************************************************\n *    LexHaskell.cxx\n *\n *    A haskell lexer for the scintilla code control.\n *    Some stuff \"lended\" from LexPython.cxx and LexCPP.cxx.\n *    External lexer stuff inspired from the caml external lexer.\n *    Folder copied from Python's.\n *\n *    Written by Tobias Engvall - tumm at dtek dot chalmers dot se\n *\n *    Several bug fixes by Krasimir Angelov - kr.angelov at gmail.com\n *\n *    Improved by kudah <kudahkukarek@gmail.com>\n *\n *    TODO:\n *    * A proper lexical folder to fold group declarations, comments, pragmas,\n *      #ifdefs, explicit layout, lists, tuples, quasi-quotes, splces, etc, etc,\n *      etc.\n *\n *****************************************************************/\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"CharacterCategory.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// See https://github.com/ghc/ghc/blob/master/compiler/parser/Lexer.x#L1682\n// Note, letter modifiers are prohibited.\n\nstatic int u_iswupper (int ch) {\n   CharacterCategory c = CategoriseCharacter(ch);\n   return c == ccLu || c == ccLt;\n}\n\nstatic int u_iswalpha (int ch) {\n   CharacterCategory c = CategoriseCharacter(ch);\n   return c == ccLl || c == ccLu || c == ccLt || c == ccLo;\n}\n\nstatic int u_iswalnum (int ch) {\n   CharacterCategory c = CategoriseCharacter(ch);\n   return c == ccLl || c == ccLu || c == ccLt || c == ccLo\n       || c == ccNd || c == ccNo;\n}\n\nstatic int u_IsHaskellSymbol(int ch) {\n   CharacterCategory c = CategoriseCharacter(ch);\n   return c == ccPc || c == ccPd || c == ccPo\n       || c == ccSm || c == ccSc || c == ccSk || c == ccSo;\n}\n\nstatic inline bool IsHaskellLetter(const int ch) {\n   if (IsASCII(ch)) {\n      return (ch >= 'a' && ch <= 'z')\n          || (ch >= 'A' && ch <= 'Z');\n   } else {\n      return u_iswalpha(ch) != 0;\n   }\n}\n\nstatic inline bool IsHaskellAlphaNumeric(const int ch) {\n   if (IsASCII(ch)) {\n      return IsAlphaNumeric(ch);\n   } else {\n      return u_iswalnum(ch) != 0;\n   }\n}\n\nstatic inline bool IsHaskellUpperCase(const int ch) {\n   if (IsASCII(ch)) {\n      return ch >= 'A' && ch <= 'Z';\n   } else {\n      return u_iswupper(ch) != 0;\n   }\n}\n\nstatic inline bool IsAnHaskellOperatorChar(const int ch) {\n   if (IsASCII(ch)) {\n      return\n         (  ch == '!' || ch == '#' || ch == '$' || ch == '%'\n         || ch == '&' || ch == '*' || ch == '+' || ch == '-'\n         || ch == '.' || ch == '/' || ch == ':' || ch == '<'\n         || ch == '=' || ch == '>' || ch == '?' || ch == '@'\n         || ch == '^' || ch == '|' || ch == '~' || ch == '\\\\');\n   } else {\n      return u_IsHaskellSymbol(ch) != 0;\n   }\n}\n\nstatic inline bool IsAHaskellWordStart(const int ch) {\n   return IsHaskellLetter(ch) || ch == '_';\n}\n\nstatic inline bool IsAHaskellWordChar(const int ch) {\n   return (  IsHaskellAlphaNumeric(ch)\n          || ch == '_'\n          || ch == '\\'');\n}\n\nstatic inline bool IsCommentBlockStyle(int style) {\n   return (style >= SCE_HA_COMMENTBLOCK && style <= SCE_HA_COMMENTBLOCK3);\n}\n\nstatic inline bool IsCommentStyle(int style) {\n   return (style >= SCE_HA_COMMENTLINE && style <= SCE_HA_COMMENTBLOCK3)\n       || ( style == SCE_HA_LITERATE_COMMENT\n         || style == SCE_HA_LITERATE_CODEDELIM);\n}\n\n// styles which do not belong to Haskell, but to external tools\nstatic inline bool IsExternalStyle(int style) {\n   return ( style == SCE_HA_PREPROCESSOR\n         || style == SCE_HA_LITERATE_COMMENT\n         || style == SCE_HA_LITERATE_CODEDELIM);\n}\n\nstatic inline int CommentBlockStyleFromNestLevel(const unsigned int nestLevel) {\n   return SCE_HA_COMMENTBLOCK + (nestLevel % 3);\n}\n\n// Mangled version of lexlib/Accessor.cxx IndentAmount.\n// Modified to treat comment blocks as whitespace\n// plus special case for commentline/preprocessor.\nstatic int HaskellIndentAmount(Accessor &styler, const Sci_Position line) {\n\n   // Determines the indentation level of the current line\n   // Comment blocks are treated as whitespace\n\n   Sci_Position pos = styler.LineStart(line);\n   Sci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\n   char ch = styler[pos];\n   int style = styler.StyleAt(pos);\n\n   int indent = 0;\n   bool inPrevPrefix = line > 0;\n\n   Sci_Position posPrev = inPrevPrefix ? styler.LineStart(line-1) : 0;\n\n   while ((  ch == ' ' || ch == '\\t'\n          || IsCommentBlockStyle(style)\n          || style == SCE_HA_LITERATE_CODEDELIM)\n         && (pos < eol_pos)) {\n      if (inPrevPrefix) {\n         char chPrev = styler[posPrev++];\n         if (chPrev != ' ' && chPrev != '\\t') {\n            inPrevPrefix = false;\n         }\n      }\n      if (ch == '\\t') {\n         indent = (indent / 8 + 1) * 8;\n      } else { // Space or comment block\n         indent++;\n      }\n      pos++;\n      ch = styler[pos];\n      style = styler.StyleAt(pos);\n   }\n\n   indent += SC_FOLDLEVELBASE;\n   // if completely empty line or the start of a comment or preprocessor...\n   if (  styler.LineStart(line) == styler.Length()\n      || ch == ' '\n      || ch == '\\t'\n      || ch == '\\n'\n      || ch == '\\r'\n      || IsCommentStyle(style)\n      || style == SCE_HA_PREPROCESSOR)\n      return indent | SC_FOLDLEVELWHITEFLAG;\n   else\n      return indent;\n}\n\nstruct OptionsHaskell {\n   bool magicHash;\n   bool allowQuotes;\n   bool implicitParams;\n   bool highlightSafe;\n   bool cpp;\n   bool stylingWithinPreprocessor;\n   bool fold;\n   bool foldComment;\n   bool foldCompact;\n   bool foldImports;\n   OptionsHaskell() {\n      magicHash = true;       // Widespread use, enabled by default.\n      allowQuotes = true;     // Widespread use, enabled by default.\n      implicitParams = false; // Fell out of favor, seldom used, disabled.\n      highlightSafe = true;   // Moderately used, doesn't hurt to enable.\n      cpp = true;             // Widespread use, enabled by default;\n      stylingWithinPreprocessor = false;\n      fold = false;\n      foldComment = false;\n      foldCompact = false;\n      foldImports = false;\n   }\n};\n\nstatic const char * const haskellWordListDesc[] = {\n   \"Keywords\",\n   \"FFI\",\n   \"Reserved operators\",\n   0\n};\n\nstruct OptionSetHaskell : public OptionSet<OptionsHaskell> {\n   OptionSetHaskell() {\n      DefineProperty(\"lexer.haskell.allow.hash\", &OptionsHaskell::magicHash,\n         \"Set to 0 to disallow the '#' character at the end of identifiers and \"\n         \"literals with the haskell lexer \"\n         \"(GHC -XMagicHash extension)\");\n\n      DefineProperty(\"lexer.haskell.allow.quotes\", &OptionsHaskell::allowQuotes,\n         \"Set to 0 to disable highlighting of Template Haskell name quotations \"\n         \"and promoted constructors \"\n         \"(GHC -XTemplateHaskell and -XDataKinds extensions)\");\n\n      DefineProperty(\"lexer.haskell.allow.questionmark\", &OptionsHaskell::implicitParams,\n         \"Set to 1 to allow the '?' character at the start of identifiers \"\n         \"with the haskell lexer \"\n         \"(GHC & Hugs -XImplicitParams extension)\");\n\n      DefineProperty(\"lexer.haskell.import.safe\", &OptionsHaskell::highlightSafe,\n         \"Set to 0 to disallow \\\"safe\\\" keyword in imports \"\n         \"(GHC -XSafe, -XTrustworthy, -XUnsafe extensions)\");\n\n      DefineProperty(\"lexer.haskell.cpp\", &OptionsHaskell::cpp,\n         \"Set to 0 to disable C-preprocessor highlighting \"\n         \"(-XCPP extension)\");\n\n      DefineProperty(\"styling.within.preprocessor\", &OptionsHaskell::stylingWithinPreprocessor,\n         \"For Haskell code, determines whether all preprocessor code is styled in the \"\n         \"preprocessor style (0, the default) or only from the initial # to the end \"\n         \"of the command word(1).\"\n         );\n\n      DefineProperty(\"fold\", &OptionsHaskell::fold);\n\n      DefineProperty(\"fold.comment\", &OptionsHaskell::foldComment);\n\n      DefineProperty(\"fold.compact\", &OptionsHaskell::foldCompact);\n\n      DefineProperty(\"fold.haskell.imports\", &OptionsHaskell::foldImports,\n         \"Set to 1 to enable folding of import declarations\");\n\n      DefineWordListSets(haskellWordListDesc);\n   }\n};\n\nclass LexerHaskell : public ILexer {\n   bool literate;\n   Sci_Position firstImportLine;\n   int firstImportIndent;\n   WordList keywords;\n   WordList ffi;\n   WordList reserved_operators;\n   OptionsHaskell options;\n   OptionSetHaskell osHaskell;\n\n   enum HashCount {\n       oneHash\n      ,twoHashes\n      ,unlimitedHashes\n   };\n\n   enum KeywordMode {\n       HA_MODE_DEFAULT = 0\n      ,HA_MODE_IMPORT1 = 1 // after \"import\", before \"qualified\" or \"safe\" or package name or module name.\n      ,HA_MODE_IMPORT2 = 2 // after module name, before \"as\" or \"hiding\".\n      ,HA_MODE_IMPORT3 = 3 // after \"as\", before \"hiding\"\n      ,HA_MODE_MODULE  = 4 // after \"module\", before module name.\n      ,HA_MODE_FFI     = 5 // after \"foreign\", before FFI keywords\n      ,HA_MODE_TYPE    = 6 // after \"type\" or \"data\", before \"family\"\n   };\n\n   enum LiterateMode {\n       LITERATE_BIRD  = 0 // if '>' is the first character on the line,\n                          //   color '>' as a codedelim and the rest of\n                          //   the line as code.\n                          // else if \"\\begin{code}\" is the only word on the\n                          //    line except whitespace, switch to LITERATE_BLOCK\n                          // otherwise color the line as a literate comment.\n      ,LITERATE_BLOCK = 1 // if the string \"\\end{code}\" is encountered at column\n                          //   0 ignoring all later characters, color the line\n                          //   as a codedelim and switch to LITERATE_BIRD\n                          // otherwise color the line as code.\n   };\n\n   struct HaskellLineInfo {\n      unsigned int nestLevel; // 22 bits ought to be enough for anybody\n      unsigned int nonexternalStyle; // 5 bits, widen if number of styles goes\n                                     // beyond 31.\n      bool pragma;\n      LiterateMode lmode;\n      KeywordMode mode;\n\n      HaskellLineInfo(int state) :\n         nestLevel (state >> 10)\n       , nonexternalStyle ((state >> 5) & 0x1F)\n       , pragma ((state >> 4) & 0x1)\n       , lmode (static_cast<LiterateMode>((state >> 3) & 0x1))\n       , mode (static_cast<KeywordMode>(state & 0x7))\n         {}\n\n      int ToLineState() {\n         return\n              (nestLevel << 10)\n            | (nonexternalStyle << 5)\n            | (pragma << 4)\n            | (lmode << 3)\n            | mode;\n      }\n   };\n\n   inline void skipMagicHash(StyleContext &sc, const HashCount hashes) const {\n      if (options.magicHash && sc.ch == '#') {\n         sc.Forward();\n         if (hashes == twoHashes && sc.ch == '#') {\n            sc.Forward();\n         } else if (hashes == unlimitedHashes) {\n            while (sc.ch == '#') {\n               sc.Forward();\n            }\n         }\n      }\n   }\n\n   bool LineContainsImport(const Sci_Position line, Accessor &styler) const {\n      if (options.foldImports) {\n         Sci_Position currentPos = styler.LineStart(line);\n         int style = styler.StyleAt(currentPos);\n\n         Sci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\n         while (currentPos < eol_pos) {\n            int ch = styler[currentPos];\n            style = styler.StyleAt(currentPos);\n\n            if (ch == ' ' || ch == '\\t'\n             || IsCommentBlockStyle(style)\n             || style == SCE_HA_LITERATE_CODEDELIM) {\n               currentPos++;\n            } else {\n               break;\n            }\n         }\n\n         return (style == SCE_HA_KEYWORD\n              && styler.Match(currentPos, \"import\"));\n      } else {\n         return false;\n      }\n   }\n\n   inline int IndentAmountWithOffset(Accessor &styler, const Sci_Position line) const {\n      const int indent = HaskellIndentAmount(styler, line);\n      const int indentLevel = indent & SC_FOLDLEVELNUMBERMASK;\n      return indentLevel <= ((firstImportIndent - 1) + SC_FOLDLEVELBASE)\n               ? indent\n               : (indentLevel + firstImportIndent) | (indent & ~SC_FOLDLEVELNUMBERMASK);\n   }\n\n   inline int IndentLevelRemoveIndentOffset(const int indentLevel) const {\n      return indentLevel <= ((firstImportIndent - 1) + SC_FOLDLEVELBASE)\n            ? indentLevel\n            : indentLevel - firstImportIndent;\n   }\n\npublic:\n   LexerHaskell(bool literate_)\n      : literate(literate_)\n      , firstImportLine(-1)\n      , firstImportIndent(0)\n      {}\n   virtual ~LexerHaskell() {}\n\n   void SCI_METHOD Release() {\n      delete this;\n   }\n\n   int SCI_METHOD Version() const {\n      return lvOriginal;\n   }\n\n   const char * SCI_METHOD PropertyNames() {\n      return osHaskell.PropertyNames();\n   }\n\n   int SCI_METHOD PropertyType(const char *name) {\n      return osHaskell.PropertyType(name);\n   }\n\n   const char * SCI_METHOD DescribeProperty(const char *name) {\n      return osHaskell.DescribeProperty(name);\n   }\n\n   Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\n   const char * SCI_METHOD DescribeWordListSets() {\n      return osHaskell.DescribeWordListSets();\n   }\n\n   Sci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\n   void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n   void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n   void * SCI_METHOD PrivateCall(int, void *) {\n      return 0;\n   }\n\n   static ILexer *LexerFactoryHaskell() {\n      return new LexerHaskell(false);\n   }\n\n   static ILexer *LexerFactoryLiterateHaskell() {\n      return new LexerHaskell(true);\n   }\n};\n\nSci_Position SCI_METHOD LexerHaskell::PropertySet(const char *key, const char *val) {\n   if (osHaskell.PropertySet(&options, key, val)) {\n      return 0;\n   }\n   return -1;\n}\n\nSci_Position SCI_METHOD LexerHaskell::WordListSet(int n, const char *wl) {\n   WordList *wordListN = 0;\n   switch (n) {\n   case 0:\n      wordListN = &keywords;\n      break;\n   case 1:\n      wordListN = &ffi;\n      break;\n   case 2:\n      wordListN = &reserved_operators;\n      break;\n   }\n   Sci_Position firstModification = -1;\n   if (wordListN) {\n      WordList wlNew;\n      wlNew.Set(wl);\n      if (*wordListN != wlNew) {\n         wordListN->Set(wl);\n         firstModification = 0;\n      }\n   }\n   return firstModification;\n}\n\nvoid SCI_METHOD LexerHaskell::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle\n                                 ,IDocument *pAccess) {\n   LexAccessor styler(pAccess);\n\n   Sci_Position lineCurrent = styler.GetLine(startPos);\n\n   HaskellLineInfo hs = HaskellLineInfo(lineCurrent ? styler.GetLineState(lineCurrent-1) : 0);\n\n   // Do not leak onto next line\n   if (initStyle == SCE_HA_STRINGEOL)\n      initStyle = SCE_HA_DEFAULT;\n   else if (initStyle == SCE_HA_LITERATE_CODEDELIM)\n      initStyle = hs.nonexternalStyle;\n\n   StyleContext sc(startPos, length, initStyle, styler);\n\n   int base = 10;\n   bool dot = false;\n\n   bool inDashes = false;\n   bool alreadyInTheMiddleOfOperator = false;\n\n   assert(!(IsCommentBlockStyle(initStyle) && hs.nestLevel == 0));\n\n   while (sc.More()) {\n      // Check for state end\n\n      if (!IsExternalStyle(sc.state)) {\n         hs.nonexternalStyle = sc.state;\n      }\n\n      // For lexer to work, states should unconditionally forward at least one\n      // character.\n      // If they don't, they should still check if they are at line end and\n      // forward if so.\n      // If a state forwards more than one character, it should check every time\n      // that it is not a line end and cease forwarding otherwise.\n      if (sc.atLineEnd) {\n         // Remember the line state for future incremental lexing\n         styler.SetLineState(lineCurrent, hs.ToLineState());\n         lineCurrent++;\n      }\n\n      // Handle line continuation generically.\n      if (sc.ch == '\\\\' && (sc.chNext == '\\n' || sc.chNext == '\\r')\n         && (  sc.state == SCE_HA_STRING\n            || sc.state == SCE_HA_PREPROCESSOR)) {\n         // Remember the line state for future incremental lexing\n         styler.SetLineState(lineCurrent, hs.ToLineState());\n         lineCurrent++;\n\n         sc.Forward();\n         if (sc.ch == '\\r' && sc.chNext == '\\n') {\n            sc.Forward();\n         }\n         sc.Forward();\n\n         continue;\n      }\n\n      if (sc.atLineStart) {\n\n         if (sc.state == SCE_HA_STRING || sc.state == SCE_HA_CHARACTER) {\n            // Prevent SCE_HA_STRINGEOL from leaking back to previous line\n            sc.SetState(sc.state);\n         }\n\n         if (literate && hs.lmode == LITERATE_BIRD) {\n            if (!IsExternalStyle(sc.state)) {\n               sc.SetState(SCE_HA_LITERATE_COMMENT);\n            }\n         }\n      }\n\n      // External\n         // Literate\n      if (  literate && hs.lmode == LITERATE_BIRD && sc.atLineStart\n         && sc.ch == '>') {\n            sc.SetState(SCE_HA_LITERATE_CODEDELIM);\n            sc.ForwardSetState(hs.nonexternalStyle);\n      }\n      else if (literate && hs.lmode == LITERATE_BIRD && sc.atLineStart\n            && (  sc.ch == ' ' || sc.ch == '\\t'\n               || sc.Match(\"\\\\begin{code}\"))) {\n         sc.SetState(sc.state);\n\n         while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More())\n            sc.Forward();\n\n         if (sc.Match(\"\\\\begin{code}\")) {\n            sc.Forward(static_cast<int>(strlen(\"\\\\begin{code}\")));\n\n            bool correct = true;\n\n            while (!sc.atLineEnd && sc.More()) {\n               if (sc.ch != ' ' && sc.ch != '\\t') {\n                  correct = false;\n               }\n               sc.Forward();\n            }\n\n            if (correct) {\n               sc.ChangeState(SCE_HA_LITERATE_CODEDELIM); // color the line end\n               hs.lmode = LITERATE_BLOCK;\n            }\n         }\n      }\n      else if (literate && hs.lmode == LITERATE_BLOCK && sc.atLineStart\n            && sc.Match(\"\\\\end{code}\")) {\n         sc.SetState(SCE_HA_LITERATE_CODEDELIM);\n\n         sc.Forward(static_cast<int>(strlen(\"\\\\end{code}\")));\n\n         while (!sc.atLineEnd && sc.More()) {\n            sc.Forward();\n         }\n\n         sc.SetState(SCE_HA_LITERATE_COMMENT);\n         hs.lmode = LITERATE_BIRD;\n      }\n         // Preprocessor\n      else if (sc.atLineStart && sc.ch == '#' && options.cpp\n            && (!options.stylingWithinPreprocessor || sc.state == SCE_HA_DEFAULT)) {\n         sc.SetState(SCE_HA_PREPROCESSOR);\n         sc.Forward();\n      }\n            // Literate\n      else if (sc.state == SCE_HA_LITERATE_COMMENT) {\n         sc.Forward();\n      }\n      else if (sc.state == SCE_HA_LITERATE_CODEDELIM) {\n         sc.ForwardSetState(hs.nonexternalStyle);\n      }\n            // Preprocessor\n      else if (sc.state == SCE_HA_PREPROCESSOR) {\n         if (sc.atLineEnd) {\n            sc.SetState(options.stylingWithinPreprocessor\n                        ? SCE_HA_DEFAULT\n                        : hs.nonexternalStyle);\n            sc.Forward(); // prevent double counting a line\n         } else if (options.stylingWithinPreprocessor && !IsHaskellLetter(sc.ch)) {\n            sc.SetState(SCE_HA_DEFAULT);\n         } else {\n            sc.Forward();\n         }\n      }\n      // Haskell\n         // Operator\n      else if (sc.state == SCE_HA_OPERATOR) {\n         int style = SCE_HA_OPERATOR;\n\n         if ( sc.ch == ':'\n            && !alreadyInTheMiddleOfOperator\n            // except \"::\"\n            && !( sc.chNext == ':'\n               && !IsAnHaskellOperatorChar(sc.GetRelative(2)))) {\n            style = SCE_HA_CAPITAL;\n         }\n\n         alreadyInTheMiddleOfOperator = false;\n\n         while (IsAnHaskellOperatorChar(sc.ch))\n               sc.Forward();\n\n         char s[100];\n         sc.GetCurrent(s, sizeof(s));\n\n         if (reserved_operators.InList(s))\n            style = SCE_HA_RESERVED_OPERATOR;\n\n         sc.ChangeState(style);\n         sc.SetState(SCE_HA_DEFAULT);\n      }\n         // String\n      else if (sc.state == SCE_HA_STRING) {\n         if (sc.atLineEnd) {\n            sc.ChangeState(SCE_HA_STRINGEOL);\n            sc.ForwardSetState(SCE_HA_DEFAULT);\n         } else if (sc.ch == '\\\"') {\n            sc.Forward();\n            skipMagicHash(sc, oneHash);\n            sc.SetState(SCE_HA_DEFAULT);\n         } else if (sc.ch == '\\\\') {\n            sc.Forward(2);\n         } else {\n            sc.Forward();\n         }\n      }\n         // Char\n      else if (sc.state == SCE_HA_CHARACTER) {\n         if (sc.atLineEnd) {\n            sc.ChangeState(SCE_HA_STRINGEOL);\n            sc.ForwardSetState(SCE_HA_DEFAULT);\n         } else if (sc.ch == '\\'') {\n            sc.Forward();\n            skipMagicHash(sc, oneHash);\n            sc.SetState(SCE_HA_DEFAULT);\n         } else if (sc.ch == '\\\\') {\n            sc.Forward(2);\n         } else {\n            sc.Forward();\n         }\n      }\n         // Number\n      else if (sc.state == SCE_HA_NUMBER) {\n         if (sc.atLineEnd) {\n            sc.SetState(SCE_HA_DEFAULT);\n            sc.Forward(); // prevent double counting a line\n         } else if (IsADigit(sc.ch, base)) {\n            sc.Forward();\n         } else if (sc.ch=='.' && dot && IsADigit(sc.chNext, base)) {\n            sc.Forward(2);\n            dot = false;\n         } else if ((base == 10) &&\n                    (sc.ch == 'e' || sc.ch == 'E') &&\n                    (IsADigit(sc.chNext) || sc.chNext == '+' || sc.chNext == '-')) {\n            sc.Forward();\n            if (sc.ch == '+' || sc.ch == '-')\n                sc.Forward();\n         } else {\n            skipMagicHash(sc, twoHashes);\n            sc.SetState(SCE_HA_DEFAULT);\n         }\n      }\n         // Keyword or Identifier\n      else if (sc.state == SCE_HA_IDENTIFIER) {\n         int style = IsHaskellUpperCase(sc.ch) ? SCE_HA_CAPITAL : SCE_HA_IDENTIFIER;\n\n         assert(IsAHaskellWordStart(sc.ch));\n\n         sc.Forward();\n\n         while (sc.More()) {\n            if (IsAHaskellWordChar(sc.ch)) {\n               sc.Forward();\n            } else if (sc.ch == '.' && style == SCE_HA_CAPITAL) {\n               if (IsHaskellUpperCase(sc.chNext)) {\n                  sc.Forward();\n                  style = SCE_HA_CAPITAL;\n               } else if (IsAHaskellWordStart(sc.chNext)) {\n                  sc.Forward();\n                  style = SCE_HA_IDENTIFIER;\n               } else if (IsAnHaskellOperatorChar(sc.chNext)) {\n                  sc.Forward();\n                  style = sc.ch == ':' ? SCE_HA_CAPITAL : SCE_HA_OPERATOR;\n                  while (IsAnHaskellOperatorChar(sc.ch))\n                     sc.Forward();\n                  break;\n               } else {\n                  break;\n               }\n            } else {\n               break;\n            }\n         }\n\n         skipMagicHash(sc, unlimitedHashes);\n\n         char s[100];\n         sc.GetCurrent(s, sizeof(s));\n\n         KeywordMode new_mode = HA_MODE_DEFAULT;\n\n         if (keywords.InList(s)) {\n            style = SCE_HA_KEYWORD;\n         } else if (style == SCE_HA_CAPITAL) {\n            if (hs.mode == HA_MODE_IMPORT1 || hs.mode == HA_MODE_IMPORT3) {\n               style    = SCE_HA_MODULE;\n               new_mode = HA_MODE_IMPORT2;\n            } else if (hs.mode == HA_MODE_MODULE) {\n               style = SCE_HA_MODULE;\n            }\n         } else if (hs.mode == HA_MODE_IMPORT1 &&\n                    strcmp(s,\"qualified\") == 0) {\n             style    = SCE_HA_KEYWORD;\n             new_mode = HA_MODE_IMPORT1;\n         } else if (options.highlightSafe &&\n                    hs.mode == HA_MODE_IMPORT1 &&\n                    strcmp(s,\"safe\") == 0) {\n             style    = SCE_HA_KEYWORD;\n             new_mode = HA_MODE_IMPORT1;\n         } else if (hs.mode == HA_MODE_IMPORT2) {\n             if (strcmp(s,\"as\") == 0) {\n                style    = SCE_HA_KEYWORD;\n                new_mode = HA_MODE_IMPORT3;\n            } else if (strcmp(s,\"hiding\") == 0) {\n                style     = SCE_HA_KEYWORD;\n            }\n         } else if (hs.mode == HA_MODE_TYPE) {\n            if (strcmp(s,\"family\") == 0)\n               style    = SCE_HA_KEYWORD;\n         }\n\n         if (hs.mode == HA_MODE_FFI) {\n            if (ffi.InList(s)) {\n               style = SCE_HA_KEYWORD;\n               new_mode = HA_MODE_FFI;\n            }\n         }\n\n         sc.ChangeState(style);\n         sc.SetState(SCE_HA_DEFAULT);\n\n         if (strcmp(s,\"import\") == 0 && hs.mode != HA_MODE_FFI)\n            new_mode = HA_MODE_IMPORT1;\n         else if (strcmp(s,\"module\") == 0)\n            new_mode = HA_MODE_MODULE;\n         else if (strcmp(s,\"foreign\") == 0)\n            new_mode = HA_MODE_FFI;\n         else if (strcmp(s,\"type\") == 0\n               || strcmp(s,\"data\") == 0)\n            new_mode = HA_MODE_TYPE;\n\n         hs.mode = new_mode;\n      }\n\n         // Comments\n            // Oneliner\n      else if (sc.state == SCE_HA_COMMENTLINE) {\n         if (sc.atLineEnd) {\n            sc.SetState(hs.pragma ? SCE_HA_PRAGMA : SCE_HA_DEFAULT);\n            sc.Forward(); // prevent double counting a line\n         } else if (inDashes && sc.ch != '-' && !hs.pragma) {\n            inDashes = false;\n            if (IsAnHaskellOperatorChar(sc.ch)) {\n               alreadyInTheMiddleOfOperator = true;\n               sc.ChangeState(SCE_HA_OPERATOR);\n            }\n         } else {\n            sc.Forward();\n         }\n      }\n            // Nested\n      else if (IsCommentBlockStyle(sc.state)) {\n         if (sc.Match('{','-')) {\n            sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel));\n            sc.Forward(2);\n            hs.nestLevel++;\n         } else if (sc.Match('-','}')) {\n            sc.Forward(2);\n            assert(hs.nestLevel > 0);\n            if (hs.nestLevel > 0)\n               hs.nestLevel--;\n            sc.SetState(\n               hs.nestLevel == 0\n                  ? (hs.pragma ? SCE_HA_PRAGMA : SCE_HA_DEFAULT)\n                  : CommentBlockStyleFromNestLevel(hs.nestLevel - 1));\n         } else {\n            sc.Forward();\n         }\n      }\n            // Pragma\n      else if (sc.state == SCE_HA_PRAGMA) {\n         if (sc.Match(\"#-}\")) {\n            hs.pragma = false;\n            sc.Forward(3);\n            sc.SetState(SCE_HA_DEFAULT);\n         } else if (sc.Match('-','-')) {\n            sc.SetState(SCE_HA_COMMENTLINE);\n            sc.Forward(2);\n            inDashes = false;\n         } else if (sc.Match('{','-')) {\n            sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel));\n            sc.Forward(2);\n            hs.nestLevel = 1;\n         } else {\n            sc.Forward();\n         }\n      }\n            // New state?\n      else if (sc.state == SCE_HA_DEFAULT) {\n         // Digit\n         if (IsADigit(sc.ch)) {\n            hs.mode = HA_MODE_DEFAULT;\n\n            sc.SetState(SCE_HA_NUMBER);\n            if (sc.ch == '0' && (sc.chNext == 'X' || sc.chNext == 'x')) {\n               // Match anything starting with \"0x\" or \"0X\", too\n               sc.Forward(2);\n               base = 16;\n               dot = false;\n            } else if (sc.ch == '0' && (sc.chNext == 'O' || sc.chNext == 'o')) {\n               // Match anything starting with \"0o\" or \"0O\", too\n               sc.Forward(2);\n               base = 8;\n               dot = false;\n            } else {\n               sc.Forward();\n               base = 10;\n               dot = true;\n            }\n         }\n         // Pragma\n         else if (sc.Match(\"{-#\")) {\n            hs.pragma = true;\n            sc.SetState(SCE_HA_PRAGMA);\n            sc.Forward(3);\n         }\n         // Comment line\n         else if (sc.Match('-','-')) {\n            sc.SetState(SCE_HA_COMMENTLINE);\n            sc.Forward(2);\n            inDashes = true;\n         }\n         // Comment block\n         else if (sc.Match('{','-')) {\n            sc.SetState(CommentBlockStyleFromNestLevel(hs.nestLevel));\n            sc.Forward(2);\n            hs.nestLevel = 1;\n         }\n         // String\n         else if (sc.ch == '\\\"') {\n            sc.SetState(SCE_HA_STRING);\n            sc.Forward();\n         }\n         // Character or quoted name or promoted term\n         else if (sc.ch == '\\'') {\n            hs.mode = HA_MODE_DEFAULT;\n\n            sc.SetState(SCE_HA_CHARACTER);\n            sc.Forward();\n\n            if (options.allowQuotes) {\n               // Quoted type ''T\n               if (sc.ch=='\\'' && IsAHaskellWordStart(sc.chNext)) {\n                  sc.Forward();\n                  sc.ChangeState(SCE_HA_IDENTIFIER);\n               } else if (sc.chNext != '\\'') {\n                  // Quoted name 'n or promoted constructor 'N\n                  if (IsAHaskellWordStart(sc.ch)) {\n                     sc.ChangeState(SCE_HA_IDENTIFIER);\n                  // Promoted constructor operator ':~>\n                  } else if (sc.ch == ':') {\n                     alreadyInTheMiddleOfOperator = false;\n                     sc.ChangeState(SCE_HA_OPERATOR);\n                  // Promoted list or tuple '[T]\n                  } else if (sc.ch == '[' || sc.ch== '(') {\n                     sc.ChangeState(SCE_HA_OPERATOR);\n                     sc.ForwardSetState(SCE_HA_DEFAULT);\n                  }\n               }\n            }\n         }\n         // Operator starting with '?' or an implicit parameter\n         else if (sc.ch == '?') {\n            hs.mode = HA_MODE_DEFAULT;\n\n            alreadyInTheMiddleOfOperator = false;\n            sc.SetState(SCE_HA_OPERATOR);\n\n            if (  options.implicitParams\n               && IsAHaskellWordStart(sc.chNext)\n               && !IsHaskellUpperCase(sc.chNext)) {\n               sc.Forward();\n               sc.ChangeState(SCE_HA_IDENTIFIER);\n            }\n         }\n         // Operator\n         else if (IsAnHaskellOperatorChar(sc.ch)) {\n            hs.mode = HA_MODE_DEFAULT;\n\n            sc.SetState(SCE_HA_OPERATOR);\n         }\n         // Braces and punctuation\n         else if (sc.ch == ',' || sc.ch == ';'\n               || sc.ch == '(' || sc.ch == ')'\n               || sc.ch == '[' || sc.ch == ']'\n               || sc.ch == '{' || sc.ch == '}') {\n            sc.SetState(SCE_HA_OPERATOR);\n            sc.ForwardSetState(SCE_HA_DEFAULT);\n         }\n         // Keyword or Identifier\n         else if (IsAHaskellWordStart(sc.ch)) {\n            sc.SetState(SCE_HA_IDENTIFIER);\n         // Something we don't care about\n         } else {\n            sc.Forward();\n         }\n      }\n            // This branch should never be reached.\n      else {\n         assert(false);\n         sc.Forward();\n      }\n   }\n   sc.Complete();\n}\n\nvoid SCI_METHOD LexerHaskell::Fold(Sci_PositionU startPos, Sci_Position length, int // initStyle\n                                  ,IDocument *pAccess) {\n   if (!options.fold)\n      return;\n\n   Accessor styler(pAccess, NULL);\n\n   Sci_Position lineCurrent = styler.GetLine(startPos);\n\n   if (lineCurrent <= firstImportLine) {\n      firstImportLine = -1; // readjust first import position\n      firstImportIndent = 0;\n   }\n\n   const Sci_Position maxPos = startPos + length;\n   const Sci_Position maxLines =\n      maxPos == styler.Length()\n         ? styler.GetLine(maxPos)\n         : styler.GetLine(maxPos - 1);  // Requested last line\n   const Sci_Position docLines = styler.GetLine(styler.Length()); // Available last line\n\n   // Backtrack to previous non-blank line so we can determine indent level\n   // for any white space lines\n   // and so we can fix any preceding fold level (which is why we go back\n   // at least one line in all cases)\n   bool importHere = LineContainsImport(lineCurrent, styler);\n   int indentCurrent = IndentAmountWithOffset(styler, lineCurrent);\n\n   while (lineCurrent > 0) {\n      lineCurrent--;\n      importHere = LineContainsImport(lineCurrent, styler);\n      indentCurrent = IndentAmountWithOffset(styler, lineCurrent);\n      if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG))\n         break;\n   }\n\n   int indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\n   if (importHere) {\n      indentCurrentLevel = IndentLevelRemoveIndentOffset(indentCurrentLevel);\n      if (firstImportLine == -1) {\n         firstImportLine = lineCurrent;\n         firstImportIndent = (1 + indentCurrentLevel) - SC_FOLDLEVELBASE;\n      }\n      if (firstImportLine != lineCurrent) {\n         indentCurrentLevel++;\n      }\n   }\n\n   indentCurrent = indentCurrentLevel | (indentCurrent & ~SC_FOLDLEVELNUMBERMASK);\n\n   // Process all characters to end of requested range\n   //that hangs over the end of the range.  Cap processing in all cases\n   // to end of document.\n   while (lineCurrent <= docLines && lineCurrent <= maxLines) {\n\n      // Gather info\n      Sci_Position lineNext = lineCurrent + 1;\n      importHere = false;\n      int indentNext = indentCurrent;\n\n      if (lineNext <= docLines) {\n         // Information about next line is only available if not at end of document\n         importHere = LineContainsImport(lineNext, styler);\n         indentNext = IndentAmountWithOffset(styler, lineNext);\n      }\n      if (indentNext & SC_FOLDLEVELWHITEFLAG)\n         indentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel;\n\n      // Skip past any blank lines for next indent level info; we skip also\n      // comments (all comments, not just those starting in column 0)\n      // which effectively folds them into surrounding code rather\n      // than screwing up folding.\n\n      while (lineNext < docLines && (indentNext & SC_FOLDLEVELWHITEFLAG)) {\n         lineNext++;\n         importHere = LineContainsImport(lineNext, styler);\n         indentNext = IndentAmountWithOffset(styler, lineNext);\n      }\n\n      int indentNextLevel = indentNext & SC_FOLDLEVELNUMBERMASK;\n\n      if (importHere) {\n         indentNextLevel = IndentLevelRemoveIndentOffset(indentNextLevel);\n         if (firstImportLine == -1) {\n            firstImportLine = lineNext;\n            firstImportIndent = (1 + indentNextLevel) - SC_FOLDLEVELBASE;\n         }\n         if (firstImportLine != lineNext) {\n            indentNextLevel++;\n         }\n      }\n\n      indentNext = indentNextLevel | (indentNext & ~SC_FOLDLEVELNUMBERMASK);\n\n      const int levelBeforeComments = Maximum(indentCurrentLevel,indentNextLevel);\n\n      // Now set all the indent levels on the lines we skipped\n      // Do this from end to start.  Once we encounter one line\n      // which is indented more than the line after the end of\n      // the comment-block, use the level of the block before\n\n      Sci_Position skipLine = lineNext;\n      int skipLevel = indentNextLevel;\n\n      while (--skipLine > lineCurrent) {\n         int skipLineIndent = IndentAmountWithOffset(styler, skipLine);\n\n         if (options.foldCompact) {\n            if ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > indentNextLevel) {\n               skipLevel = levelBeforeComments;\n            }\n\n            int whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG;\n\n            styler.SetLevel(skipLine, skipLevel | whiteFlag);\n         } else {\n            if (  (skipLineIndent & SC_FOLDLEVELNUMBERMASK) > indentNextLevel\n               && !(skipLineIndent & SC_FOLDLEVELWHITEFLAG)) {\n               skipLevel = levelBeforeComments;\n            }\n\n            styler.SetLevel(skipLine, skipLevel);\n         }\n      }\n\n      int lev = indentCurrent;\n\n      if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {\n         if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK))\n            lev |= SC_FOLDLEVELHEADERFLAG;\n      }\n\n      // Set fold level for this line and move to next line\n      styler.SetLevel(lineCurrent, options.foldCompact ? lev : lev & ~SC_FOLDLEVELWHITEFLAG);\n\n      indentCurrent = indentNext;\n      indentCurrentLevel = indentNextLevel;\n      lineCurrent = lineNext;\n   }\n\n   // NOTE: Cannot set level of last line here because indentCurrent doesn't have\n   // header flag set; the loop above is crafted to take care of this case!\n   //styler.SetLevel(lineCurrent, indentCurrent);\n}\n\nLexerModule lmHaskell(SCLEX_HASKELL, LexerHaskell::LexerFactoryHaskell, \"haskell\", haskellWordListDesc);\nLexerModule lmLiterateHaskell(SCLEX_LITERATEHASKELL, LexerHaskell::LexerFactoryLiterateHaskell, \"literatehaskell\", haskellWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexHex.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexHex.cxx\n ** Lexers for Motorola S-Record, Intel HEX and Tektronix extended HEX.\n **\n ** Written by Markus Heidelberg\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n/*\n *  Motorola S-Record\n * ===============================\n *\n * Each record (line) is built as follows:\n *\n *    field       digits          states\n *\n *  +----------+\n *  | start    |  1 ('S')         SCE_HEX_RECSTART\n *  +----------+\n *  | type     |  1               SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN)\n *  +----------+\n *  | count    |  2               SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG\n *  +----------+\n *  | address  |  4/6/8           SCE_HEX_NOADDRESS, SCE_HEX_DATAADDRESS, SCE_HEX_RECCOUNT, SCE_HEX_STARTADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN)\n *  +----------+\n *  | data     |  0..504/502/500  SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN, SCE_HEX_DATA_EMPTY, (SCE_HEX_DATA_UNKNOWN)\n *  +----------+\n *  | checksum |  2               SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG\n *  +----------+\n *\n *\n *  Intel HEX\n * ===============================\n *\n * Each record (line) is built as follows:\n *\n *    field       digits          states\n *\n *  +----------+\n *  | start    |  1 (':')         SCE_HEX_RECSTART\n *  +----------+\n *  | count    |  2               SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG\n *  +----------+\n *  | address  |  4               SCE_HEX_NOADDRESS, SCE_HEX_DATAADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN)\n *  +----------+\n *  | type     |  2               SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN)\n *  +----------+\n *  | data     |  0..510          SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN, SCE_HEX_DATA_EMPTY, SCE_HEX_EXTENDEDADDRESS, SCE_HEX_STARTADDRESS, (SCE_HEX_DATA_UNKNOWN)\n *  +----------+\n *  | checksum |  2               SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG\n *  +----------+\n *\n *\n * Folding:\n *\n *   Data records (type 0x00), which follow an extended address record (type\n *   0x02 or 0x04), can be folded. The extended address record is the fold\n *   point at fold level 0, the corresponding data records are set to level 1.\n *\n *   Any record, which is not a data record, sets the fold level back to 0.\n *   Any line, which is not a record (blank lines and lines starting with a\n *   character other than ':'), leaves the fold level unchanged.\n *\n *\n *  Tektronix extended HEX\n * ===============================\n *\n * Each record (line) is built as follows:\n *\n *    field       digits          states\n *\n *  +----------+\n *  | start    |  1 ('%')         SCE_HEX_RECSTART\n *  +----------+\n *  | length   |  2               SCE_HEX_BYTECOUNT, SCE_HEX_BYTECOUNT_WRONG\n *  +----------+\n *  | type     |  1               SCE_HEX_RECTYPE, (SCE_HEX_RECTYPE_UNKNOWN)\n *  +----------+\n *  | checksum |  2               SCE_HEX_CHECKSUM, SCE_HEX_CHECKSUM_WRONG\n *  +----------+\n *  | address  |  9               SCE_HEX_DATAADDRESS, SCE_HEX_STARTADDRESS, (SCE_HEX_ADDRESSFIELD_UNKNOWN)\n *  +----------+\n *  | data     |  0..241          SCE_HEX_DATA_ODD, SCE_HEX_DATA_EVEN\n *  +----------+\n *\n *\n *  General notes for all lexers\n * ===============================\n *\n * - Depending on where the helper functions are invoked, some of them have to\n *   read beyond the current position. In case of malformed data (record too\n *   short), it has to be ensured that this either does not have bad influence\n *   or will be captured deliberately.\n *\n * - States in parentheses in the upper format descriptions indicate that they\n *   should not appear in a valid hex file.\n *\n * - State SCE_HEX_GARBAGE means garbage data after the intended end of the\n *   record, the line is too long then. This state is used in all lexers.\n */\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// prototypes for general helper functions\nstatic inline bool IsNewline(const int ch);\nstatic int GetHexaNibble(char hd);\nstatic int GetHexaChar(char hd1, char hd2);\nstatic int GetHexaChar(Sci_PositionU pos, Accessor &styler);\nstatic bool ForwardWithinLine(StyleContext &sc, Sci_Position nb = 1);\nstatic bool PosInSameRecord(Sci_PositionU pos1, Sci_PositionU pos2, Accessor &styler);\nstatic Sci_Position CountByteCount(Sci_PositionU startPos, Sci_Position uncountedDigits, Accessor &styler);\nstatic int CalcChecksum(Sci_PositionU startPos, Sci_Position cnt, bool twosCompl, Accessor &styler);\n\n// prototypes for file format specific helper functions\nstatic Sci_PositionU GetSrecRecStartPosition(Sci_PositionU pos, Accessor &styler);\nstatic int GetSrecByteCount(Sci_PositionU recStartPos, Accessor &styler);\nstatic Sci_Position CountSrecByteCount(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetSrecAddressFieldSize(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetSrecAddressFieldType(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetSrecDataFieldType(Sci_PositionU recStartPos, Accessor &styler);\nstatic Sci_Position GetSrecRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetSrecChecksum(Sci_PositionU recStartPos, Accessor &styler);\nstatic int CalcSrecChecksum(Sci_PositionU recStartPos, Accessor &styler);\n\nstatic Sci_PositionU GetIHexRecStartPosition(Sci_PositionU pos, Accessor &styler);\nstatic int GetIHexByteCount(Sci_PositionU recStartPos, Accessor &styler);\nstatic Sci_Position CountIHexByteCount(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetIHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetIHexDataFieldType(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetIHexRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetIHexChecksum(Sci_PositionU recStartPos, Accessor &styler);\nstatic int CalcIHexChecksum(Sci_PositionU recStartPos, Accessor &styler);\n\nstatic int GetTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler);\nstatic Sci_Position CountTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetTEHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler);\nstatic int GetTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler);\nstatic int CalcTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler);\n\nstatic inline bool IsNewline(const int ch)\n{\n    return (ch == '\\n' || ch == '\\r');\n}\n\nstatic int GetHexaNibble(char hd)\n{\n\tint hexValue = 0;\n\n\tif (hd >= '0' && hd <= '9') {\n\t\thexValue += hd - '0';\n\t} else if (hd >= 'A' && hd <= 'F') {\n\t\thexValue += hd - 'A' + 10;\n\t} else if (hd >= 'a' && hd <= 'f') {\n\t\thexValue += hd - 'a' + 10;\n\t} else {\n\t\treturn -1;\n\t}\n\n\treturn hexValue;\n}\n\nstatic int GetHexaChar(char hd1, char hd2)\n{\n\tint hexValue = 0;\n\n\tif (hd1 >= '0' && hd1 <= '9') {\n\t\thexValue += 16 * (hd1 - '0');\n\t} else if (hd1 >= 'A' && hd1 <= 'F') {\n\t\thexValue += 16 * (hd1 - 'A' + 10);\n\t} else if (hd1 >= 'a' && hd1 <= 'f') {\n\t\thexValue += 16 * (hd1 - 'a' + 10);\n\t} else {\n\t\treturn -1;\n\t}\n\n\tif (hd2 >= '0' && hd2 <= '9') {\n\t\thexValue += hd2 - '0';\n\t} else if (hd2 >= 'A' && hd2 <= 'F') {\n\t\thexValue += hd2 - 'A' + 10;\n\t} else if (hd2 >= 'a' && hd2 <= 'f') {\n\t\thexValue += hd2 - 'a' + 10;\n\t} else {\n\t\treturn -1;\n\t}\n\n\treturn hexValue;\n}\n\nstatic int GetHexaChar(Sci_PositionU pos, Accessor &styler)\n{\n\tchar highNibble, lowNibble;\n\n\thighNibble = styler.SafeGetCharAt(pos);\n\tlowNibble = styler.SafeGetCharAt(pos + 1);\n\n\treturn GetHexaChar(highNibble, lowNibble);\n}\n\n// Forward <nb> characters, but abort (and return false) if hitting the line\n// end. Return true if forwarding within the line was possible.\n// Avoids influence on highlighting of the subsequent line if the current line\n// is malformed (too short).\nstatic bool ForwardWithinLine(StyleContext &sc, Sci_Position nb)\n{\n\tfor (Sci_Position i = 0; i < nb; i++) {\n\t\tif (sc.atLineEnd) {\n\t\t\t// line is too short\n\t\t\tsc.SetState(SCE_HEX_DEFAULT);\n\t\t\tsc.Forward();\n\t\t\treturn false;\n\t\t} else {\n\t\t\tsc.Forward();\n\t\t}\n\t}\n\n\treturn true;\n}\n\n// Checks whether the given positions are in the same record.\nstatic bool PosInSameRecord(Sci_PositionU pos1, Sci_PositionU pos2, Accessor &styler)\n{\n\treturn styler.GetLine(pos1) == styler.GetLine(pos2);\n}\n\n// Count the number of digit pairs from <startPos> till end of record, ignoring\n// <uncountedDigits> digits.\n// If the record is too short, a negative count may be returned.\nstatic Sci_Position CountByteCount(Sci_PositionU startPos, Sci_Position uncountedDigits, Accessor &styler)\n{\n\tSci_Position cnt;\n\tSci_PositionU pos;\n\n\tpos = startPos;\n\n\twhile (!IsNewline(styler.SafeGetCharAt(pos, '\\n'))) {\n\t\tpos++;\n\t}\n\n\t// number of digits in this line minus number of digits of uncounted fields\n\tcnt = static_cast<Sci_Position>(pos - startPos) - uncountedDigits;\n\n\t// Prepare round up if odd (digit pair incomplete), this way the byte\n\t// count is considered to be valid if the checksum is incomplete.\n\tif (cnt >= 0) {\n\t\tcnt++;\n\t}\n\n\t// digit pairs\n\tcnt /= 2;\n\n\treturn cnt;\n}\n\n// Calculate the checksum of the record.\n// <startPos> is the position of the first character of the starting digit\n// pair, <cnt> is the number of digit pairs.\nstatic int CalcChecksum(Sci_PositionU startPos, Sci_Position cnt, bool twosCompl, Accessor &styler)\n{\n\tint cs = 0;\n\n\tfor (Sci_PositionU pos = startPos; pos < startPos + cnt; pos += 2) {\n\t\tint val = GetHexaChar(pos, styler);\n\n\t\tif (val < 0) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// overflow does not matter\n\t\tcs += val;\n\t}\n\n\tif (twosCompl) {\n\t\t// low byte of two's complement\n\t\treturn -cs & 0xFF;\n\t} else {\n\t\t// low byte of one's complement\n\t\treturn ~cs & 0xFF;\n\t}\n}\n\n// Get the position of the record \"start\" field (first character in line) in\n// the record around position <pos>.\nstatic Sci_PositionU GetSrecRecStartPosition(Sci_PositionU pos, Accessor &styler)\n{\n\twhile (styler.SafeGetCharAt(pos) != 'S') {\n\t\tpos--;\n\t}\n\n\treturn pos;\n}\n\n// Get the value of the \"byte count\" field, it counts the number of bytes in\n// the subsequent fields (\"address\", \"data\" and \"checksum\" fields).\nstatic int GetSrecByteCount(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tint val;\n\n\tval = GetHexaChar(recStartPos + 2, styler);\n\tif (val < 0) {\n\t       val = 0;\n\t}\n\n\treturn val;\n}\n\n// Count the number of digit pairs for the \"address\", \"data\" and \"checksum\"\n// fields in this record. Has to be equal to the \"byte count\" field value.\n// If the record is too short, a negative count may be returned.\nstatic Sci_Position CountSrecByteCount(Sci_PositionU recStartPos, Accessor &styler)\n{\n\treturn CountByteCount(recStartPos, 4, styler);\n}\n\n// Get the size of the \"address\" field.\nstatic int GetSrecAddressFieldSize(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tswitch (styler.SafeGetCharAt(recStartPos + 1)) {\n\t\tcase '0':\n\t\tcase '1':\n\t\tcase '5':\n\t\tcase '9':\n\t\t\treturn 2; // 16 bit\n\n\t\tcase '2':\n\t\tcase '6':\n\t\tcase '8':\n\t\t\treturn 3; // 24 bit\n\n\t\tcase '3':\n\t\tcase '7':\n\t\t\treturn 4; // 32 bit\n\n\t\tdefault:\n\t\t\treturn 0;\n\t}\n}\n\n// Get the type of the \"address\" field content.\nstatic int GetSrecAddressFieldType(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tswitch (styler.SafeGetCharAt(recStartPos + 1)) {\n\t\tcase '0':\n\t\t\treturn SCE_HEX_NOADDRESS;\n\n\t\tcase '1':\n\t\tcase '2':\n\t\tcase '3':\n\t\t\treturn SCE_HEX_DATAADDRESS;\n\n\t\tcase '5':\n\t\tcase '6':\n\t\t\treturn SCE_HEX_RECCOUNT;\n\n\t\tcase '7':\n\t\tcase '8':\n\t\tcase '9':\n\t\t\treturn SCE_HEX_STARTADDRESS;\n\n\t\tdefault: // handle possible format extension in the future\n\t\t\treturn SCE_HEX_ADDRESSFIELD_UNKNOWN;\n\t}\n}\n\n// Get the type of the \"data\" field content.\nstatic int GetSrecDataFieldType(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tswitch (styler.SafeGetCharAt(recStartPos + 1)) {\n\t\tcase '0':\n\t\tcase '1':\n\t\tcase '2':\n\t\tcase '3':\n\t\t\treturn SCE_HEX_DATA_ODD;\n\n\t\tcase '5':\n\t\tcase '6':\n\t\tcase '7':\n\t\tcase '8':\n\t\tcase '9':\n\t\t\treturn SCE_HEX_DATA_EMPTY;\n\n\t\tdefault: // handle possible format extension in the future\n\t\t\treturn SCE_HEX_DATA_UNKNOWN;\n\t}\n}\n\n// Get the required size of the \"data\" field. Useless for block header and\n// ordinary data records (type S0, S1, S2, S3), return the value calculated\n// from the \"byte count\" and \"address field\" size in this case.\nstatic Sci_Position GetSrecRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tswitch (styler.SafeGetCharAt(recStartPos + 1)) {\n\t\tcase '5':\n\t\tcase '6':\n\t\tcase '7':\n\t\tcase '8':\n\t\tcase '9':\n\t\t\treturn 0;\n\n\t\tdefault:\n\t\t\treturn GetSrecByteCount(recStartPos, styler)\n\t\t\t\t- GetSrecAddressFieldSize(recStartPos, styler)\n\t\t\t\t- 1; // -1 for checksum field\n\t}\n}\n\n// Get the value of the \"checksum\" field.\nstatic int GetSrecChecksum(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tint byteCount;\n\n\tbyteCount = GetSrecByteCount(recStartPos, styler);\n\n\treturn GetHexaChar(recStartPos + 2 + byteCount * 2, styler);\n}\n\n// Calculate the checksum of the record.\nstatic int CalcSrecChecksum(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tSci_Position byteCount;\n\n\tbyteCount = GetSrecByteCount(recStartPos, styler);\n\n\t// sum over \"byte count\", \"address\" and \"data\" fields (6..510 digits)\n\treturn CalcChecksum(recStartPos + 2, byteCount * 2, false, styler);\n}\n\n// Get the position of the record \"start\" field (first character in line) in\n// the record around position <pos>.\nstatic Sci_PositionU GetIHexRecStartPosition(Sci_PositionU pos, Accessor &styler)\n{\n\twhile (styler.SafeGetCharAt(pos) != ':') {\n\t\tpos--;\n\t}\n\n\treturn pos;\n}\n\n// Get the value of the \"byte count\" field, it counts the number of bytes in\n// the \"data\" field.\nstatic int GetIHexByteCount(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tint val;\n\n\tval = GetHexaChar(recStartPos + 1, styler);\n\tif (val < 0) {\n\t       val = 0;\n\t}\n\n\treturn val;\n}\n\n// Count the number of digit pairs for the \"data\" field in this record. Has to\n// be equal to the \"byte count\" field value.\n// If the record is too short, a negative count may be returned.\nstatic Sci_Position CountIHexByteCount(Sci_PositionU recStartPos, Accessor &styler)\n{\n\treturn CountByteCount(recStartPos, 11, styler);\n}\n\n// Get the type of the \"address\" field content.\nstatic int GetIHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tif (!PosInSameRecord(recStartPos, recStartPos + 7, styler)) {\n\t\t// malformed (record too short)\n\t\t// type cannot be determined\n\t\treturn SCE_HEX_ADDRESSFIELD_UNKNOWN;\n\t}\n\n\tswitch (GetHexaChar(recStartPos + 7, styler)) {\n\t\tcase 0x00:\n\t\t\treturn SCE_HEX_DATAADDRESS;\n\n\t\tcase 0x01:\n\t\tcase 0x02:\n\t\tcase 0x03:\n\t\tcase 0x04:\n\t\tcase 0x05:\n\t\t\treturn SCE_HEX_NOADDRESS;\n\n\t\tdefault: // handle possible format extension in the future\n\t\t\treturn SCE_HEX_ADDRESSFIELD_UNKNOWN;\n\t}\n}\n\n// Get the type of the \"data\" field content.\nstatic int GetIHexDataFieldType(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tswitch (GetHexaChar(recStartPos + 7, styler)) {\n\t\tcase 0x00:\n\t\t\treturn SCE_HEX_DATA_ODD;\n\n\t\tcase 0x01:\n\t\t\treturn SCE_HEX_DATA_EMPTY;\n\n\t\tcase 0x02:\n\t\tcase 0x04:\n\t\t\treturn SCE_HEX_EXTENDEDADDRESS;\n\n\t\tcase 0x03:\n\t\tcase 0x05:\n\t\t\treturn SCE_HEX_STARTADDRESS;\n\n\t\tdefault: // handle possible format extension in the future\n\t\t\treturn SCE_HEX_DATA_UNKNOWN;\n\t}\n}\n\n// Get the required size of the \"data\" field. Useless for an ordinary data\n// record (type 00), return the \"byte count\" in this case.\nstatic int GetIHexRequiredDataFieldSize(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tswitch (GetHexaChar(recStartPos + 7, styler)) {\n\t\tcase 0x01:\n\t\t\treturn 0;\n\n\t\tcase 0x02:\n\t\tcase 0x04:\n\t\t\treturn 2;\n\n\t\tcase 0x03:\n\t\tcase 0x05:\n\t\t\treturn 4;\n\n\t\tdefault:\n\t\t\treturn GetIHexByteCount(recStartPos, styler);\n\t}\n}\n\n// Get the value of the \"checksum\" field.\nstatic int GetIHexChecksum(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tint byteCount;\n\n\tbyteCount = GetIHexByteCount(recStartPos, styler);\n\n\treturn GetHexaChar(recStartPos + 9 + byteCount * 2, styler);\n}\n\n// Calculate the checksum of the record.\nstatic int CalcIHexChecksum(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tint byteCount;\n\n\tbyteCount = GetIHexByteCount(recStartPos, styler);\n\n\t// sum over \"byte count\", \"address\", \"type\" and \"data\" fields (8..518 digits)\n\treturn CalcChecksum(recStartPos + 1, 8 + byteCount * 2, true, styler);\n}\n\n\n// Get the value of the \"record length\" field, it counts the number of digits in\n// the record excluding the percent.\nstatic int GetTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tint val = GetHexaChar(recStartPos + 1, styler);\n\tif (val < 0)\n\t       val = 0;\n\n\treturn val;\n}\n\n// Count the number of digits in this record. Has to\n// be equal to the \"record length\" field value.\nstatic Sci_Position CountTEHexDigitCount(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tSci_PositionU pos;\n\n\tpos = recStartPos+1;\n\n\twhile (!IsNewline(styler.SafeGetCharAt(pos, '\\n'))) {\n\t\tpos++;\n\t}\n\n\treturn static_cast<Sci_Position>(pos - (recStartPos+1));\n}\n\n// Get the type of the \"address\" field content.\nstatic int GetTEHexAddressFieldType(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tswitch (styler.SafeGetCharAt(recStartPos + 3)) {\n\t\tcase '6':\n\t\t\treturn SCE_HEX_DATAADDRESS;\n\n\t\tcase '8':\n\t\t\treturn SCE_HEX_STARTADDRESS;\n\n\t\tdefault: // handle possible format extension in the future\n\t\t\treturn SCE_HEX_ADDRESSFIELD_UNKNOWN;\n\t}\n}\n\n// Get the value of the \"checksum\" field.\nstatic int GetTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler)\n{\n\treturn GetHexaChar(recStartPos+4, styler);\n}\n\n// Calculate the checksum of the record (excluding the checksum field).\nstatic int CalcTEHexChecksum(Sci_PositionU recStartPos, Accessor &styler)\n{\n\tSci_PositionU pos = recStartPos +1;\n\tSci_PositionU length = GetTEHexDigitCount(recStartPos, styler);\n\n\tint cs = GetHexaNibble(styler.SafeGetCharAt(pos++));//length\n\tcs += GetHexaNibble(styler.SafeGetCharAt(pos++));//length\n\n\tcs += GetHexaNibble(styler.SafeGetCharAt(pos++));//type\n\n\tpos += 2;// jump over CS field\n\n\tfor (; pos <= recStartPos + length; ++pos) {\n\t\tint val = GetHexaNibble(styler.SafeGetCharAt(pos));\n\n\t\tif (val < 0) {\n\t\t\treturn val;\n\t\t}\n\n\t\t// overflow does not matter\n\t\tcs += val;\n\t}\n\n\t// low byte\n\treturn cs & 0xFF;\n\n}\n\nstatic void ColouriseSrecDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler)\n{\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\twhile (sc.More()) {\n\t\tSci_PositionU recStartPos;\n\t\tint byteCount, reqByteCount, addrFieldSize, addrFieldType, dataFieldSize, dataFieldType;\n\t\tint cs1, cs2;\n\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_HEX_DEFAULT:\n\t\t\t\tif (sc.atLineStart && sc.Match('S')) {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECSTART);\n\t\t\t\t}\n\t\t\t\tForwardWithinLine(sc);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_RECSTART:\n\t\t\t\trecStartPos = sc.currentPos - 1;\n\t\t\t\taddrFieldType = GetSrecAddressFieldType(recStartPos, styler);\n\n\t\t\t\tif (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECTYPE_UNKNOWN);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECTYPE);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_RECTYPE:\n\t\t\tcase SCE_HEX_RECTYPE_UNKNOWN:\n\t\t\t\trecStartPos = sc.currentPos - 2;\n\t\t\t\tbyteCount = GetSrecByteCount(recStartPos, styler);\n\t\t\t\treqByteCount = GetSrecAddressFieldSize(recStartPos, styler)\n\t\t\t\t\t\t+ GetSrecRequiredDataFieldSize(recStartPos, styler)\n\t\t\t\t\t\t+ 1; // +1 for checksum field\n\n\t\t\t\tif (byteCount == CountSrecByteCount(recStartPos, styler)\n\t\t\t\t\t\t&& byteCount == reqByteCount) {\n\t\t\t\t\tsc.SetState(SCE_HEX_BYTECOUNT);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_BYTECOUNT_WRONG);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc, 2);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_BYTECOUNT:\n\t\t\tcase SCE_HEX_BYTECOUNT_WRONG:\n\t\t\t\trecStartPos = sc.currentPos - 4;\n\t\t\t\taddrFieldSize = GetSrecAddressFieldSize(recStartPos, styler);\n\t\t\t\taddrFieldType = GetSrecAddressFieldType(recStartPos, styler);\n\n\t\t\t\tsc.SetState(addrFieldType);\n\t\t\t\tForwardWithinLine(sc, addrFieldSize * 2);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_NOADDRESS:\n\t\t\tcase SCE_HEX_DATAADDRESS:\n\t\t\tcase SCE_HEX_RECCOUNT:\n\t\t\tcase SCE_HEX_STARTADDRESS:\n\t\t\tcase SCE_HEX_ADDRESSFIELD_UNKNOWN:\n\t\t\t\trecStartPos = GetSrecRecStartPosition(sc.currentPos, styler);\n\t\t\t\tdataFieldType = GetSrecDataFieldType(recStartPos, styler);\n\n\t\t\t\t// Using the required size here if possible has the effect that the\n\t\t\t\t// checksum is highlighted at a fixed position after this field for\n\t\t\t\t// specific record types, independent on the \"byte count\" value.\n\t\t\t\tdataFieldSize = GetSrecRequiredDataFieldSize(recStartPos, styler);\n\n\t\t\t\tsc.SetState(dataFieldType);\n\n\t\t\t\tif (dataFieldType == SCE_HEX_DATA_ODD) {\n\t\t\t\t\tfor (int i = 0; i < dataFieldSize * 2; i++) {\n\t\t\t\t\t\tif ((i & 0x3) == 0) {\n\t\t\t\t\t\t\tsc.SetState(SCE_HEX_DATA_ODD);\n\t\t\t\t\t\t} else if ((i & 0x3) == 2) {\n\t\t\t\t\t\t\tsc.SetState(SCE_HEX_DATA_EVEN);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!ForwardWithinLine(sc)) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tForwardWithinLine(sc, dataFieldSize * 2);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_DATA_ODD:\n\t\t\tcase SCE_HEX_DATA_EVEN:\n\t\t\tcase SCE_HEX_DATA_EMPTY:\n\t\t\tcase SCE_HEX_DATA_UNKNOWN:\n\t\t\t\trecStartPos = GetSrecRecStartPosition(sc.currentPos, styler);\n\t\t\t\tcs1 = CalcSrecChecksum(recStartPos, styler);\n\t\t\t\tcs2 = GetSrecChecksum(recStartPos, styler);\n\n\t\t\t\tif (cs1 != cs2 || cs1 < 0 || cs2 < 0) {\n\t\t\t\t\tsc.SetState(SCE_HEX_CHECKSUM_WRONG);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_CHECKSUM);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc, 2);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_CHECKSUM:\n\t\t\tcase SCE_HEX_CHECKSUM_WRONG:\n\t\t\tcase SCE_HEX_GARBAGE:\n\t\t\t\t// record finished or line too long\n\t\t\t\tsc.SetState(SCE_HEX_GARBAGE);\n\t\t\t\tForwardWithinLine(sc);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// prevent endless loop in faulty state\n\t\t\t\tsc.SetState(SCE_HEX_DEFAULT);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void ColouriseIHexDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler)\n{\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\twhile (sc.More()) {\n\t\tSci_PositionU recStartPos;\n\t\tint byteCount, addrFieldType, dataFieldSize, dataFieldType;\n\t\tint cs1, cs2;\n\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_HEX_DEFAULT:\n\t\t\t\tif (sc.atLineStart && sc.Match(':')) {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECSTART);\n\t\t\t\t}\n\t\t\t\tForwardWithinLine(sc);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_RECSTART:\n\t\t\t\trecStartPos = sc.currentPos - 1;\n\t\t\t\tbyteCount = GetIHexByteCount(recStartPos, styler);\n\t\t\t\tdataFieldSize = GetIHexRequiredDataFieldSize(recStartPos, styler);\n\n\t\t\t\tif (byteCount == CountIHexByteCount(recStartPos, styler)\n\t\t\t\t\t\t&& byteCount == dataFieldSize) {\n\t\t\t\t\tsc.SetState(SCE_HEX_BYTECOUNT);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_BYTECOUNT_WRONG);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc, 2);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_BYTECOUNT:\n\t\t\tcase SCE_HEX_BYTECOUNT_WRONG:\n\t\t\t\trecStartPos = sc.currentPos - 3;\n\t\t\t\taddrFieldType = GetIHexAddressFieldType(recStartPos, styler);\n\n\t\t\t\tsc.SetState(addrFieldType);\n\t\t\t\tForwardWithinLine(sc, 4);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_NOADDRESS:\n\t\t\tcase SCE_HEX_DATAADDRESS:\n\t\t\tcase SCE_HEX_ADDRESSFIELD_UNKNOWN:\n\t\t\t\trecStartPos = sc.currentPos - 7;\n\t\t\t\taddrFieldType = GetIHexAddressFieldType(recStartPos, styler);\n\n\t\t\t\tif (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECTYPE_UNKNOWN);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECTYPE);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc, 2);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_RECTYPE:\n\t\t\tcase SCE_HEX_RECTYPE_UNKNOWN:\n\t\t\t\trecStartPos = sc.currentPos - 9;\n\t\t\t\tdataFieldType = GetIHexDataFieldType(recStartPos, styler);\n\n\t\t\t\t// Using the required size here if possible has the effect that the\n\t\t\t\t// checksum is highlighted at a fixed position after this field for\n\t\t\t\t// specific record types, independent on the \"byte count\" value.\n\t\t\t\tdataFieldSize = GetIHexRequiredDataFieldSize(recStartPos, styler);\n\n\t\t\t\tsc.SetState(dataFieldType);\n\n\t\t\t\tif (dataFieldType == SCE_HEX_DATA_ODD) {\n\t\t\t\t\tfor (int i = 0; i < dataFieldSize * 2; i++) {\n\t\t\t\t\t\tif ((i & 0x3) == 0) {\n\t\t\t\t\t\t\tsc.SetState(SCE_HEX_DATA_ODD);\n\t\t\t\t\t\t} else if ((i & 0x3) == 2) {\n\t\t\t\t\t\t\tsc.SetState(SCE_HEX_DATA_EVEN);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (!ForwardWithinLine(sc)) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tForwardWithinLine(sc, dataFieldSize * 2);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_DATA_ODD:\n\t\t\tcase SCE_HEX_DATA_EVEN:\n\t\t\tcase SCE_HEX_DATA_EMPTY:\n\t\t\tcase SCE_HEX_EXTENDEDADDRESS:\n\t\t\tcase SCE_HEX_STARTADDRESS:\n\t\t\tcase SCE_HEX_DATA_UNKNOWN:\n\t\t\t\trecStartPos = GetIHexRecStartPosition(sc.currentPos, styler);\n\t\t\t\tcs1 = CalcIHexChecksum(recStartPos, styler);\n\t\t\t\tcs2 = GetIHexChecksum(recStartPos, styler);\n\n\t\t\t\tif (cs1 != cs2 || cs1 < 0 || cs2 < 0) {\n\t\t\t\t\tsc.SetState(SCE_HEX_CHECKSUM_WRONG);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_CHECKSUM);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc, 2);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_CHECKSUM:\n\t\t\tcase SCE_HEX_CHECKSUM_WRONG:\n\t\t\tcase SCE_HEX_GARBAGE:\n\t\t\t\t// record finished or line too long\n\t\t\t\tsc.SetState(SCE_HEX_GARBAGE);\n\t\t\t\tForwardWithinLine(sc);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// prevent endless loop in faulty state\n\t\t\t\tsc.SetState(SCE_HEX_DEFAULT);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldIHexDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler)\n{\n\tSci_PositionU endPos = startPos + length;\n\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent - 1);\n\n\tSci_PositionU lineStartNext = styler.LineStart(lineCurrent + 1);\n\tint levelNext = SC_FOLDLEVELBASE; // default if no specific line found\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tbool atEOL = i == (lineStartNext - 1);\n\t\tint style = styler.StyleAt(i);\n\n\t\t// search for specific lines\n\t\tif (style == SCE_HEX_EXTENDEDADDRESS) {\n\t\t\t// extended addres record\n\t\t\tlevelNext = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\t} else if (style == SCE_HEX_DATAADDRESS\n\t\t\t|| (style == SCE_HEX_DEFAULT\n\t\t\t\t&& i == (Sci_PositionU)styler.LineStart(lineCurrent))) {\n\t\t\t// data record or no record start code at all\n\t\t\tif (levelCurrent & SC_FOLDLEVELHEADERFLAG) {\n\t\t\t\tlevelNext = SC_FOLDLEVELBASE + 1;\n\t\t\t} else {\n\t\t\t\t// continue level 0 or 1, no fold point\n\t\t\t\tlevelNext = levelCurrent;\n\t\t\t}\n\t\t}\n\n\t\tif (atEOL || (i == endPos - 1)) {\n\t\t\tstyler.SetLevel(lineCurrent, levelNext);\n\n\t\t\tlineCurrent++;\n\t\t\tlineStartNext = styler.LineStart(lineCurrent + 1);\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelNext = SC_FOLDLEVELBASE;\n\t\t}\n\t}\n}\n\nstatic void ColouriseTEHexDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler)\n{\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\twhile (sc.More()) {\n\t\tSci_PositionU recStartPos;\n\t\tint digitCount, addrFieldType;\n\t\tint cs1, cs2;\n\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_HEX_DEFAULT:\n\t\t\t\tif (sc.atLineStart && sc.Match('%')) {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECSTART);\n\t\t\t\t}\n\t\t\t\tForwardWithinLine(sc);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_RECSTART:\n\n\t\t\t\trecStartPos = sc.currentPos - 1;\n\n\t\t\t\tif (GetTEHexDigitCount(recStartPos, styler) == CountTEHexDigitCount(recStartPos, styler)) {\n\t\t\t\t\tsc.SetState(SCE_HEX_BYTECOUNT);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_BYTECOUNT_WRONG);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc, 2);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_BYTECOUNT:\n\t\t\tcase SCE_HEX_BYTECOUNT_WRONG:\n\t\t\t\trecStartPos = sc.currentPos - 3;\n\t\t\t\taddrFieldType = GetTEHexAddressFieldType(recStartPos, styler);\n\n\t\t\t\tif (addrFieldType == SCE_HEX_ADDRESSFIELD_UNKNOWN) {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECTYPE_UNKNOWN);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_RECTYPE);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_RECTYPE:\n\t\t\tcase SCE_HEX_RECTYPE_UNKNOWN:\n\t\t\t\trecStartPos = sc.currentPos - 4;\n\t\t\t\tcs1 = CalcTEHexChecksum(recStartPos, styler);\n\t\t\t\tcs2 = GetTEHexChecksum(recStartPos, styler);\n\n\t\t\t\tif (cs1 != cs2 || cs1 < 0 || cs2 < 0) {\n\t\t\t\t\tsc.SetState(SCE_HEX_CHECKSUM_WRONG);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_HEX_CHECKSUM);\n\t\t\t\t}\n\n\t\t\t\tForwardWithinLine(sc, 2);\n\t\t\t\tbreak;\n\n\n\t\t\tcase SCE_HEX_CHECKSUM:\n\t\t\tcase SCE_HEX_CHECKSUM_WRONG:\n\t\t\t\trecStartPos = sc.currentPos - 6;\n\t\t\t\taddrFieldType = GetTEHexAddressFieldType(recStartPos, styler);\n\n\t\t\t\tsc.SetState(addrFieldType);\n\t\t\t\tForwardWithinLine(sc, 9);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_DATAADDRESS:\n\t\t\tcase SCE_HEX_STARTADDRESS:\n\t\t\tcase SCE_HEX_ADDRESSFIELD_UNKNOWN:\n\t\t\t\trecStartPos = sc.currentPos - 15;\n\t\t\t\tdigitCount = GetTEHexDigitCount(recStartPos, styler) - 14;\n\n\t\t\t\tsc.SetState(SCE_HEX_DATA_ODD);\n\n\t\t\t\tfor (int i = 0; i < digitCount; i++) {\n\t\t\t\t\tif ((i & 0x3) == 0) {\n\t\t\t\t\t\tsc.SetState(SCE_HEX_DATA_ODD);\n\t\t\t\t\t} else if ((i & 0x3) == 2) {\n\t\t\t\t\t\tsc.SetState(SCE_HEX_DATA_EVEN);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!ForwardWithinLine(sc)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_HEX_DATA_ODD:\n\t\t\tcase SCE_HEX_DATA_EVEN:\n\t\t\tcase SCE_HEX_GARBAGE:\n\t\t\t\t// record finished or line too long\n\t\t\t\tsc.SetState(SCE_HEX_GARBAGE);\n\t\t\t\tForwardWithinLine(sc);\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\t// prevent endless loop in faulty state\n\t\t\t\tsc.SetState(SCE_HEX_DEFAULT);\n\t\t\t\tbreak;\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nLexerModule lmSrec(SCLEX_SREC, ColouriseSrecDoc, \"srec\", 0, NULL);\nLexerModule lmIHex(SCLEX_IHEX, ColouriseIHexDoc, \"ihex\", FoldIHexDoc, NULL);\nLexerModule lmTEHex(SCLEX_TEHEX, ColouriseTEHexDoc, \"tehex\", 0, NULL);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexInno.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexInno.cxx\n ** Lexer for Inno Setup scripts.\n **/\n// Written by Friedrich Vedder <fvedd@t-online.de>, using code from LexOthers.cxx.\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ColouriseInnoDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler) {\n\tint state = SCE_INNO_DEFAULT;\n\tchar chPrev;\n\tchar ch = 0;\n\tchar chNext = styler[startPos];\n\tSci_Position lengthDoc = startPos + length;\n\tchar *buffer = new char[length+1];\n\tSci_Position bufferCount = 0;\n\tbool isBOL, isEOL, isWS, isBOLWS = 0;\n\tbool isCStyleComment = false;\n\n\tWordList &sectionKeywords = *keywordLists[0];\n\tWordList &standardKeywords = *keywordLists[1];\n\tWordList &parameterKeywords = *keywordLists[2];\n\tWordList &preprocessorKeywords = *keywordLists[3];\n\tWordList &pascalKeywords = *keywordLists[4];\n\tWordList &userKeywords = *keywordLists[5];\n\n\tSci_Position curLine = styler.GetLine(startPos);\n\tint curLineState = curLine > 0 ? styler.GetLineState(curLine - 1) : 0;\n\tbool isCode = (curLineState == 1);\n\n\t// Go through all provided text segment\n\t// using the hand-written state machine shown below\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tfor (Sci_Position i = startPos; i < lengthDoc; i++) {\n\t\tchPrev = ch;\n\t\tch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\tchNext = styler.SafeGetCharAt(i + 2);\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tisBOL = (chPrev == 0) || (chPrev == '\\n') || (chPrev == '\\r' && ch != '\\n');\n\t\tisBOLWS = (isBOL) ? 1 : (isBOLWS && (chPrev == ' ' || chPrev == '\\t'));\n\t\tisEOL = (ch == '\\n' || ch == '\\r');\n\t\tisWS = (ch == ' ' || ch == '\\t');\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n')) {\n\t\t\t// Remember the line state for future incremental lexing\n\t\t\tcurLine = styler.GetLine(i);\n\t\t\tstyler.SetLineState(curLine, (isCode ? 1 : 0));\n\t\t}\n\n\t\tswitch(state) {\n\t\t\tcase SCE_INNO_DEFAULT:\n\t\t\t\tif (!isCode && ch == ';' && isBOLWS) {\n\t\t\t\t\t// Start of a comment\n\t\t\t\t\tstate = SCE_INNO_COMMENT;\n\t\t\t\t} else if (ch == '[' && isBOLWS) {\n\t\t\t\t\t// Start of a section name\n\t\t\t\t\tbufferCount = 0;\n\t\t\t\t\tstate = SCE_INNO_SECTION;\n\t\t\t\t} else if (ch == '#' && isBOLWS) {\n\t\t\t\t\t// Start of a preprocessor directive\n\t\t\t\t\tstate = SCE_INNO_PREPROC;\n\t\t\t\t} else if (!isCode && ch == '{' && chNext != '{' && chPrev != '{') {\n\t\t\t\t\t// Start of an inline expansion\n\t\t\t\t\tstate = SCE_INNO_INLINE_EXPANSION;\n\t\t\t\t} else if (isCode && (ch == '{' || (ch == '(' && chNext == '*'))) {\n\t\t\t\t\t// Start of a Pascal comment\n\t\t\t\t\tstate = SCE_INNO_COMMENT_PASCAL;\n\t\t\t\t\tisCStyleComment = false;\n\t\t\t\t} else if (isCode && ch == '/' && chNext == '/') {\n\t\t\t\t\t// Apparently, C-style comments are legal, too\n\t\t\t\t\tstate = SCE_INNO_COMMENT_PASCAL;\n\t\t\t\t\tisCStyleComment = true;\n\t\t\t\t} else if (ch == '\"') {\n\t\t\t\t\t// Start of a double-quote string\n\t\t\t\t\tstate = SCE_INNO_STRING_DOUBLE;\n\t\t\t\t} else if (ch == '\\'') {\n\t\t\t\t\t// Start of a single-quote string\n\t\t\t\t\tstate = SCE_INNO_STRING_SINGLE;\n\t\t\t\t} else if (IsASCII(ch) && (isalpha(ch) || (ch == '_'))) {\n\t\t\t\t\t// Start of an identifier\n\t\t\t\t\tbufferCount = 0;\n\t\t\t\t\tbuffer[bufferCount++] = static_cast<char>(tolower(ch));\n\t\t\t\t\tstate = SCE_INNO_IDENTIFIER;\n\t\t\t\t} else {\n\t\t\t\t\t// Style it the default style\n\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_INNO_COMMENT:\n\t\t\t\tif (isEOL) {\n\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_COMMENT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_INNO_IDENTIFIER:\n\t\t\t\tif (IsASCII(ch) && (isalnum(ch) || (ch == '_'))) {\n\t\t\t\t\tbuffer[bufferCount++] = static_cast<char>(tolower(ch));\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\tbuffer[bufferCount] = '\\0';\n\n\t\t\t\t\t// Check if the buffer contains a keyword\n\t\t\t\t\tif (!isCode && standardKeywords.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_INNO_KEYWORD);\n\t\t\t\t\t} else if (!isCode && parameterKeywords.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_INNO_PARAMETER);\n\t\t\t\t\t} else if (isCode && pascalKeywords.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_INNO_KEYWORD_PASCAL);\n\t\t\t\t\t} else if (!isCode && userKeywords.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_INNO_KEYWORD_USER);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_INNO_DEFAULT);\n\t\t\t\t\t}\n\n\t\t\t\t\t// Push back the faulty character\n\t\t\t\t\tchNext = styler[i--];\n\t\t\t\t\tch = chPrev;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_INNO_SECTION:\n\t\t\t\tif (ch == ']') {\n\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\tbuffer[bufferCount] = '\\0';\n\n\t\t\t\t\t// Check if the buffer contains a section name\n\t\t\t\t\tif (sectionKeywords.InList(buffer)) {\n\t\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_SECTION);\n\t\t\t\t\t\tisCode = !CompareCaseInsensitive(buffer, \"code\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} else if (IsASCII(ch) && (isalnum(ch) || (ch == '_'))) {\n\t\t\t\t\tbuffer[bufferCount++] = static_cast<char>(tolower(ch));\n\t\t\t\t} else {\n\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_INNO_PREPROC:\n\t\t\t\tif (isWS || isEOL) {\n\t\t\t\t\tif (IsASCII(chPrev) && isalpha(chPrev)) {\n\t\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\t\tbuffer[bufferCount] = '\\0';\n\n\t\t\t\t\t\t// Check if the buffer contains a preprocessor directive\n\t\t\t\t\t\tif (preprocessorKeywords.InList(buffer)) {\n\t\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_INNO_PREPROC);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tstyler.ColourTo(i-1,SCE_INNO_DEFAULT);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Push back the faulty character\n\t\t\t\t\t\tchNext = styler[i--];\n\t\t\t\t\t\tch = chPrev;\n\t\t\t\t\t}\n\t\t\t\t} else if (IsASCII(ch) && isalpha(ch)) {\n\t\t\t\t\tif (chPrev == '#' || chPrev == ' ' || chPrev == '\\t')\n\t\t\t\t\t\tbufferCount = 0;\n\t\t\t\t\tbuffer[bufferCount++] = static_cast<char>(tolower(ch));\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_INNO_STRING_DOUBLE:\n\t\t\t\tif (ch == '\"' || isEOL) {\n\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_STRING_DOUBLE);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_INNO_STRING_SINGLE:\n\t\t\t\tif (ch == '\\'' || isEOL) {\n\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_STRING_SINGLE);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_INNO_INLINE_EXPANSION:\n\t\t\t\tif (ch == '}') {\n\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_INLINE_EXPANSION);\n\t\t\t\t} else if (isEOL) {\n\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_INNO_COMMENT_PASCAL:\n\t\t\t\tif (isCStyleComment) {\n\t\t\t\t\tif (isEOL) {\n\t\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_COMMENT_PASCAL);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (ch == '}' || (ch == ')' && chPrev == '*')) {\n\t\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_COMMENT_PASCAL);\n\t\t\t\t\t} else if (isEOL) {\n\t\t\t\t\t\tstate = SCE_INNO_DEFAULT;\n\t\t\t\t\t\tstyler.ColourTo(i,SCE_INNO_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t}\n\t}\n\tdelete []buffer;\n}\n\nstatic const char * const innoWordListDesc[] = {\n\t\"Sections\",\n\t\"Keywords\",\n\t\"Parameters\",\n\t\"Preprocessor directives\",\n\t\"Pascal keywords\",\n\t\"User defined keywords\",\n\t0\n};\n\nstatic void FoldInnoDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tSci_PositionU endPos = startPos + length;\n\tchar chNext = styler[startPos];\n\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\n\tbool sectionFlag = false;\n\tint levelPrev = lineCurrent > 0 ? styler.LevelAt(lineCurrent - 1) : SC_FOLDLEVELBASE;\n\tint level;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler[i+1];\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tint style = styler.StyleAt(i);\n\n\t\tif (style == SCE_INNO_SECTION)\n\t\t\tsectionFlag = true;\n\n\t\tif (atEOL || i == endPos - 1) {\n\t\t\tif (sectionFlag) {\n\t\t\t\tlevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\t\t\tif (level == levelPrev)\n\t\t\t\t\tstyler.SetLevel(lineCurrent - 1, levelPrev & ~SC_FOLDLEVELHEADERFLAG);\n\t\t\t} else {\n\t\t\t\tlevel = levelPrev & SC_FOLDLEVELNUMBERMASK;\n\t\t\t\tif (levelPrev & SC_FOLDLEVELHEADERFLAG)\n\t\t\t\t\tlevel++;\n\t\t\t}\n\n\t\t\tstyler.SetLevel(lineCurrent, level);\n\n\t\t\tlevelPrev = level;\n\t\t\tlineCurrent++;\n\t\t\tsectionFlag = false;\n\t\t}\n\t}\n}\n\nLexerModule lmInno(SCLEX_INNOSETUP, ColouriseInnoDoc, \"inno\", FoldInnoDoc, innoWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexJSON.cpp",
    "content": "// Scintilla source code edit control\n/**\n * @file LexJSON.cxx\n * @date February 19, 2016\n * @brief Lexer for JSON and JSON-LD formats\n * @author nkmathew\n *\n * The License.txt file describes the conditions under which this software may\n * be distributed.\n *\n */\n\n#include <cstdlib>\n#include <cassert>\n#include <cctype>\n#include <cstdio>\n#include <string>\n#include <vector>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic const char *const JSONWordListDesc[] = {\n\t\"JSON Keywords\",\n\t\"JSON-LD Keywords\",\n\t0\n};\n\n/**\n * Used to detect compact IRI/URLs in JSON-LD without first looking ahead for the\n * colon separating the prefix and suffix\n *\n * https://www.w3.org/TR/json-ld/#dfn-compact-iri\n */\nstruct CompactIRI {\n\tint colonCount;\n\tbool foundInvalidChar;\n\tCharacterSet setCompactIRI;\n\tCompactIRI() {\n\t\tcolonCount = 0;\n\t\tfoundInvalidChar = false;\n\t\tsetCompactIRI = CharacterSet(CharacterSet::setAlpha, \"$_-\");\n\t}\n\tvoid resetState() {\n\t\tcolonCount = 0;\n\t\tfoundInvalidChar = false;\n\t}\n\tvoid checkChar(int ch) {\n\t\tif (ch == ':') {\n\t\t\tcolonCount++;\n\t\t} else {\n\t\t\tfoundInvalidChar |= !setCompactIRI.Contains(ch);\n\t\t}\n\t}\n\tbool shouldHighlight() const {\n\t\treturn !foundInvalidChar && colonCount == 1;\n\t}\n};\n\n/**\n * Keeps track of escaped characters in strings as per:\n *\n * https://tools.ietf.org/html/rfc7159#section-7\n */\nstruct EscapeSequence {\n\tint digitsLeft;\n\tCharacterSet setHexDigits;\n\tCharacterSet setEscapeChars;\n\tEscapeSequence() {\n\t\tdigitsLeft = 0;\n\t\tsetHexDigits = CharacterSet(CharacterSet::setDigits, \"ABCDEFabcdef\");\n\t\tsetEscapeChars = CharacterSet(CharacterSet::setNone, \"\\\\\\\"tnbfru/\");\n\t}\n\t// Returns true if the following character is a valid escaped character\n\tbool newSequence(int nextChar) {\n\t\tdigitsLeft = 0;\n\t\tif (nextChar == 'u') {\n\t\t\tdigitsLeft = 5;\n\t\t} else if (!setEscapeChars.Contains(nextChar)) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\tbool atEscapeEnd() const {\n\t\treturn digitsLeft <= 0;\n\t}\n\tbool isInvalidChar(int currChar) const {\n\t\treturn !setHexDigits.Contains(currChar);\n\t}\n};\n\nstruct OptionsJSON {\n\tbool foldCompact;\n\tbool fold;\n\tbool allowComments;\n\tbool escapeSequence;\n\tOptionsJSON() {\n\t\tfoldCompact = false;\n\t\tfold = false;\n\t\tallowComments = false;\n\t\tescapeSequence = false;\n\t}\n};\n\nstruct OptionSetJSON : public OptionSet<OptionsJSON> {\n\tOptionSetJSON() {\n\t\tDefineProperty(\"lexer.json.escape.sequence\", &OptionsJSON::escapeSequence,\n\t\t\t\t\t   \"Set to 1 to enable highlighting of escape sequences in strings\");\n\n\t\tDefineProperty(\"lexer.json.allow.comments\", &OptionsJSON::allowComments,\n\t\t\t\t\t   \"Set to 1 to enable highlighting of line/block comments in JSON\");\n\n\t\tDefineProperty(\"fold.compact\", &OptionsJSON::foldCompact);\n\t\tDefineProperty(\"fold\", &OptionsJSON::fold);\n\t\tDefineWordListSets(JSONWordListDesc);\n\t}\n};\n\nclass LexerJSON : public ILexer {\n\tOptionsJSON options;\n\tOptionSetJSON optSetJSON;\n\tEscapeSequence escapeSeq;\n\tWordList keywordsJSON;\n\tWordList keywordsJSONLD;\n\tCharacterSet setOperators;\n\tCharacterSet setURL;\n\tCharacterSet setKeywordJSONLD;\n\tCharacterSet setKeywordJSON;\n\tCompactIRI compactIRI;\n\n\tstatic bool IsNextNonWhitespace(LexAccessor &styler, Sci_Position start, char ch) {\n\t\tSci_Position i = 0;\n\t\twhile (i < 50) {\n\t\t\ti++;\n\t\t\tchar curr = styler.SafeGetCharAt(start+i, '\\0');\n\t\t\tchar next = styler.SafeGetCharAt(start+i+1, '\\0');\n\t\t\tbool atEOL = (curr == '\\r' && next != '\\n') || (curr == '\\n');\n\t\t\tif (curr == ch) {\n\t\t\t\treturn true;\n\t\t\t} else if (!isspacechar(curr) || atEOL) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Looks for the colon following the end quote\n\t *\n\t * Assumes property names of lengths no longer than a 100 characters.\n\t * The colon is also expected to be less than 50 spaces after the end\n\t * quote for the string to be considered a property name\n\t */\n\tstatic bool AtPropertyName(LexAccessor &styler, Sci_Position start) {\n\t\tSci_Position i = 0;\n\t\tbool escaped = false;\n\t\twhile (i < 100) {\n\t\t\ti++;\n\t\t\tchar curr = styler.SafeGetCharAt(start+i, '\\0');\n\t\t\tif (escaped) {\n\t\t\t\tescaped = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tescaped = curr == '\\\\';\n\t\t\tif (curr == '\"') {\n\t\t\t\treturn IsNextNonWhitespace(styler, start+i, ':');\n\t\t\t} else if (!curr) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tstatic bool IsNextWordInList(WordList &keywordList, CharacterSet wordSet,\n\t\t\t\t\t\t\t\t StyleContext &context, LexAccessor &styler) {\n\t\tchar word[51];\n\t\tSci_Position currPos = (Sci_Position) context.currentPos;\n\t\tint i = 0;\n\t\twhile (i < 50) {\n\t\t\tchar ch = styler.SafeGetCharAt(currPos + i);\n\t\t\tif (!wordSet.Contains(ch)) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tword[i] = ch;\n\t\t\ti++;\n\t\t}\n\t\tword[i] = '\\0';\n\t\treturn keywordList.InList(word);\n\t}\n\n\tpublic:\n\tLexerJSON() :\n\t\tsetOperators(CharacterSet::setNone, \"[{}]:,\"),\n\t\tsetURL(CharacterSet::setAlphaNum, \"-._~:/?#[]@!$&'()*+,),=\"),\n\t\tsetKeywordJSONLD(CharacterSet::setAlpha, \":@\"),\n\t\tsetKeywordJSON(CharacterSet::setAlpha, \"$_\") {\n\t}\n\tvirtual ~LexerJSON() {}\n\tvirtual int SCI_METHOD Version() const {\n\t\treturn lvOriginal;\n\t}\n\tvirtual void SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tvirtual const char *SCI_METHOD PropertyNames() {\n\t\treturn optSetJSON.PropertyNames();\n\t}\n\tvirtual int SCI_METHOD PropertyType(const char *name) {\n\t\treturn optSetJSON.PropertyType(name);\n\t}\n\tvirtual const char *SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn optSetJSON.DescribeProperty(name);\n\t}\n\tvirtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) {\n\t\tif (optSetJSON.PropertySet(&options, key, val)) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -1;\n\t}\n\tvirtual Sci_Position SCI_METHOD WordListSet(int n, const char *wl) {\n\t\tWordList *wordListN = 0;\n\t\tswitch (n) {\n\t\t\tcase 0:\n\t\t\t\twordListN = &keywordsJSON;\n\t\t\t\tbreak;\n\t\t\tcase 1:\n\t\t\t\twordListN = &keywordsJSONLD;\n\t\t\t\tbreak;\n\t\t}\n\t\tSci_Position firstModification = -1;\n\t\tif (wordListN) {\n\t\t\tWordList wlNew;\n\t\t\twlNew.Set(wl);\n\t\t\tif (*wordListN != wlNew) {\n\t\t\t\twordListN->Set(wl);\n\t\t\t\tfirstModification = 0;\n\t\t\t}\n\t\t}\n\t\treturn firstModification;\n\t}\n\tvirtual void *SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\tstatic ILexer *LexerFactoryJSON() {\n\t\treturn new LexerJSON;\n\t}\n\tvirtual const char *SCI_METHOD DescribeWordListSets() {\n\t\treturn optSetJSON.DescribeWordListSets();\n\t}\n\tvirtual void SCI_METHOD Lex(Sci_PositionU startPos,\n\t\t\t\t\t\t\t\tSci_Position length,\n\t\t\t\t\t\t\t\tint initStyle,\n\t\t\t\t\t\t\t\tIDocument *pAccess);\n\tvirtual void SCI_METHOD Fold(Sci_PositionU startPos,\n\t\t\t\t\t\t\t\t Sci_Position length,\n\t\t\t\t\t\t\t\t int initStyle,\n\t\t\t\t\t\t\t\t IDocument *pAccess);\n};\n\nvoid SCI_METHOD LexerJSON::Lex(Sci_PositionU startPos,\n\t\t\t\t\t\t\t   Sci_Position length,\n\t\t\t\t\t\t\t   int initStyle,\n\t\t\t\t\t\t\t   IDocument *pAccess) {\n\tLexAccessor styler(pAccess);\n\tStyleContext context(startPos, length, initStyle, styler);\n\tint stringStyleBefore = SCE_JSON_STRING;\n\twhile (context.More()) {\n\t\tswitch (context.state) {\n\t\t\tcase SCE_JSON_BLOCKCOMMENT:\n\t\t\t\tif (context.Match(\"*/\")) {\n\t\t\t\t\tcontext.Forward();\n\t\t\t\t\tcontext.ForwardSetState(SCE_JSON_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_JSON_LINECOMMENT:\n\t\t\t\tif (context.atLineEnd) {\n\t\t\t\t\tcontext.SetState(SCE_JSON_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_JSON_STRINGEOL:\n\t\t\t\tif (context.atLineStart) {\n\t\t\t\t\tcontext.SetState(SCE_JSON_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_JSON_ESCAPESEQUENCE:\n\t\t\t\tescapeSeq.digitsLeft--;\n\t\t\t\tif (!escapeSeq.atEscapeEnd()) {\n\t\t\t\t\tif (escapeSeq.isInvalidChar(context.ch)) {\n\t\t\t\t\t\tcontext.SetState(SCE_JSON_ERROR);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (context.ch == '\"') {\n\t\t\t\t\tcontext.SetState(stringStyleBefore);\n\t\t\t\t\tcontext.ForwardSetState(SCE_C_DEFAULT);\n\t\t\t\t} else if (context.ch == '\\\\') {\n\t\t\t\t\tif (!escapeSeq.newSequence(context.chNext)) {\n\t\t\t\t\t\tcontext.SetState(SCE_JSON_ERROR);\n\t\t\t\t\t}\n\t\t\t\t\tcontext.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tcontext.SetState(stringStyleBefore);\n\t\t\t\t\tif (context.atLineEnd) {\n\t\t\t\t\t\tcontext.ChangeState(SCE_JSON_STRINGEOL);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_JSON_PROPERTYNAME:\n\t\t\tcase SCE_JSON_STRING:\n\t\t\t\tif (context.ch == '\"') {\n\t\t\t\t\tif (compactIRI.shouldHighlight()) {\n\t\t\t\t\t\tcontext.ChangeState(SCE_JSON_COMPACTIRI);\n\t\t\t\t\t\tcontext.ForwardSetState(SCE_JSON_DEFAULT);\n\t\t\t\t\t\tcompactIRI.resetState();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.ForwardSetState(SCE_JSON_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} else if (context.atLineEnd) {\n\t\t\t\t\tcontext.ChangeState(SCE_JSON_STRINGEOL);\n\t\t\t\t} else if (context.ch == '\\\\') {\n\t\t\t\t\tstringStyleBefore = context.state;\n\t\t\t\t\tif (options.escapeSequence) {\n\t\t\t\t\t\tcontext.SetState(SCE_JSON_ESCAPESEQUENCE);\n\t\t\t\t\t\tif (!escapeSeq.newSequence(context.chNext)) {\n\t\t\t\t\t\t\tcontext.SetState(SCE_JSON_ERROR);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontext.Forward();\n\t\t\t\t} else if (context.Match(\"https://\") ||\n\t\t\t\t\t\t   context.Match(\"http://\") ||\n\t\t\t\t\t\t   context.Match(\"ssh://\") ||\n\t\t\t\t\t\t   context.Match(\"git://\") ||\n\t\t\t\t\t\t   context.Match(\"svn://\") ||\n\t\t\t\t\t\t   context.Match(\"ftp://\") ||\n\t\t\t\t\t\t   context.Match(\"mailto:\")) {\n\t\t\t\t\t// Handle most common URI schemes only\n\t\t\t\t\tstringStyleBefore = context.state;\n\t\t\t\t\tcontext.SetState(SCE_JSON_URI);\n\t\t\t\t} else if (context.ch == '@') {\n\t\t\t\t\t// https://www.w3.org/TR/json-ld/#dfn-keyword\n\t\t\t\t\tif (IsNextWordInList(keywordsJSONLD, setKeywordJSONLD, context, styler)) {\n\t\t\t\t\t\tstringStyleBefore = context.state;\n\t\t\t\t\t\tcontext.SetState(SCE_JSON_LDKEYWORD);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcompactIRI.checkChar(context.ch);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_JSON_LDKEYWORD:\n\t\t\tcase SCE_JSON_URI:\n\t\t\t\tif ((!setKeywordJSONLD.Contains(context.ch) &&\n\t\t\t\t\t (context.state == SCE_JSON_LDKEYWORD)) ||\n\t\t\t\t\t(!setURL.Contains(context.ch))) {\n\t\t\t\t\tcontext.SetState(stringStyleBefore);\n\t\t\t\t}\n\t\t\t\tif (context.ch == '\"') {\n\t\t\t\t\tcontext.ForwardSetState(SCE_JSON_DEFAULT);\n\t\t\t\t} else if (context.atLineEnd) {\n\t\t\t\t\tcontext.ChangeState(SCE_JSON_STRINGEOL);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_JSON_OPERATOR:\n\t\t\tcase SCE_JSON_NUMBER:\n\t\t\t\tcontext.SetState(SCE_JSON_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_JSON_ERROR:\n\t\t\t\tif (context.atLineEnd) {\n\t\t\t\t\tcontext.SetState(SCE_JSON_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_JSON_KEYWORD:\n\t\t\t\tif (!setKeywordJSON.Contains(context.ch)) {\n\t\t\t\t\tcontext.SetState(SCE_JSON_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\tif (context.state == SCE_JSON_DEFAULT) {\n\t\t\tif (context.ch == '\"') {\n\t\t\t\tcompactIRI.resetState();\n\t\t\t\tcontext.SetState(SCE_JSON_STRING);\n\t\t\t\tSci_Position currPos = static_cast<Sci_Position>(context.currentPos);\n\t\t\t\tif (AtPropertyName(styler, currPos)) {\n\t\t\t\t\tcontext.SetState(SCE_JSON_PROPERTYNAME);\n\t\t\t\t}\n\t\t\t} else if (setOperators.Contains(context.ch)) {\n\t\t\t\tcontext.SetState(SCE_JSON_OPERATOR);\n\t\t\t} else if (options.allowComments && context.Match(\"/*\")) {\n\t\t\t\tcontext.SetState(SCE_JSON_BLOCKCOMMENT);\n\t\t\t\tcontext.Forward();\n\t\t\t} else if (options.allowComments && context.Match(\"//\")) {\n\t\t\t\tcontext.SetState(SCE_JSON_LINECOMMENT);\n\t\t\t} else if (setKeywordJSON.Contains(context.ch)) {\n\t\t\t\tif (IsNextWordInList(keywordsJSON, setKeywordJSON, context, styler)) {\n\t\t\t\t\tcontext.SetState(SCE_JSON_KEYWORD);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbool numberStart =\n\t\t\t\tIsADigit(context.ch) && (context.chPrev == '+'||\n\t\t\t\t\t\t\t\t\t\t context.chPrev == '-' ||\n\t\t\t\t\t\t\t\t\t\t context.atLineStart ||\n\t\t\t\t\t\t\t\t\t\t IsASpace(context.chPrev) ||\n\t\t\t\t\t\t\t\t\t\t setOperators.Contains(context.chPrev));\n\t\t\tbool exponentPart =\n\t\t\t\ttolower(context.ch) == 'e' &&\n\t\t\t\tIsADigit(context.chPrev) &&\n\t\t\t\t(IsADigit(context.chNext) ||\n\t\t\t\t context.chNext == '+' ||\n\t\t\t\t context.chNext == '-');\n\t\t\tbool signPart =\n\t\t\t\t(context.ch == '-' || context.ch == '+') &&\n\t\t\t\t((tolower(context.chPrev) == 'e' && IsADigit(context.chNext)) ||\n\t\t\t\t ((IsASpace(context.chPrev) || setOperators.Contains(context.chPrev))\n\t\t\t\t  && IsADigit(context.chNext)));\n\t\t\tbool adjacentDigit =\n\t\t\t\tIsADigit(context.ch) && IsADigit(context.chPrev);\n\t\t\tbool afterExponent = IsADigit(context.ch) && tolower(context.chPrev) == 'e';\n\t\t\tbool dotPart = context.ch == '.' &&\n\t\t\t\tIsADigit(context.chPrev) &&\n\t\t\t\tIsADigit(context.chNext);\n\t\t\tbool afterDot = IsADigit(context.ch) && context.chPrev == '.';\n\t\t\tif (numberStart ||\n\t\t\t\texponentPart ||\n\t\t\t\tsignPart ||\n\t\t\t\tadjacentDigit ||\n\t\t\t\tdotPart ||\n\t\t\t\tafterExponent ||\n\t\t\t\tafterDot) {\n\t\t\t\tcontext.SetState(SCE_JSON_NUMBER);\n\t\t\t} else if (context.state == SCE_JSON_DEFAULT && !IsASpace(context.ch)) {\n\t\t\t\tcontext.SetState(SCE_JSON_ERROR);\n\t\t\t}\n\t\t}\n\t\tcontext.Forward();\n\t}\n\tcontext.Complete();\n}\n\nvoid SCI_METHOD LexerJSON::Fold(Sci_PositionU startPos,\n\t\t\t\t\t\t\t\tSci_Position length,\n\t\t\t\t\t\t\t\tint,\n\t\t\t\t\t\t\t\tIDocument *pAccess) {\n\tif (!options.fold) {\n\t\treturn;\n\t}\n\tLexAccessor styler(pAccess);\n\tSci_PositionU currLine = styler.GetLine(startPos);\n\tSci_PositionU endPos = startPos + length;\n\tint currLevel = SC_FOLDLEVELBASE;\n\tif (currLine > 0)\n\t\tcurrLevel = styler.LevelAt(currLine - 1) >> 16;\n\tint nextLevel = currLevel;\n\tint visibleChars = 0;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar curr = styler.SafeGetCharAt(i);\n\t\tchar next = styler.SafeGetCharAt(i+1);\n\t\tbool atEOL = (curr == '\\r' && next != '\\n') || (curr == '\\n');\n\t\tif (styler.StyleAt(i) == SCE_JSON_OPERATOR) {\n\t\t\tif (curr == '{' || curr == '[') {\n\t\t\t\tnextLevel++;\n\t\t\t} else if (curr == '}' || curr == ']') {\n\t\t\t\tnextLevel--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL || i == (endPos-1)) {\n\t\t\tint level = currLevel | nextLevel << 16;\n\t\t\tif (!visibleChars && options.foldCompact) {\n\t\t\t\tlevel |= SC_FOLDLEVELWHITEFLAG;\n\t\t\t} else if (nextLevel > currLevel) {\n\t\t\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t}\n\t\t\tif (level != styler.LevelAt(currLine)) {\n\t\t\t\tstyler.SetLevel(currLine, level);\n\t\t\t}\n\t\t\tcurrLine++;\n\t\t\tcurrLevel = nextLevel;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(curr)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n}\n\nLexerModule lmJSON(SCLEX_JSON,\n\t\t\t\t   LexerJSON::LexerFactoryJSON,\n\t\t\t\t   \"json\",\n\t\t\t\t   JSONWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexKVIrc.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexKVIrc.cxx\n ** Lexer for KVIrc script.\n **/\n// Copyright 2013 by OmegaPhil <OmegaPhil+scintilla@gmail.com>, based in\n// part from LexPython Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// and LexCmake Copyright 2007 by Cristian Adam <cristian [dot] adam [at] gmx [dot] net>\n\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\n/* KVIrc Script syntactic rules: http://www.kvirc.net/doc/doc_syntactic_rules.html */\n\n/* Utility functions */\nstatic inline bool IsAWordChar(int ch) {\n\n    /* Keyword list includes modules, i.e. words including '.', and\n     * alias namespaces include ':' */\n    return (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.'\n            || ch == ':');\n}\nstatic inline bool IsAWordStart(int ch) {\n\n    /* Functions (start with '$') are treated separately to keywords */\n    return (ch < 0x80) && (isalnum(ch) || ch == '_' );\n}\n\n/* Interface function called by Scintilla to request some text to be\n syntax highlighted */\nstatic void ColouriseKVIrcDoc(Sci_PositionU startPos, Sci_Position length,\n                              int initStyle, WordList *keywordlists[],\n                              Accessor &styler)\n{\n    /* Fetching style context */\n    StyleContext sc(startPos, length, initStyle, styler);\n\n    /* Accessing keywords and function-marking keywords */\n    WordList &keywords = *keywordlists[0];\n    WordList &functionKeywords = *keywordlists[1];\n\n    /* Looping for all characters - only automatically moving forward\n     * when asked for (transitions leaving strings and keywords do this\n     * already) */\n    bool next = true;\n    for( ; sc.More(); next ? sc.Forward() : (void)0 )\n    {\n        /* Resetting next */\n        next = true;\n\n        /* Dealing with different states */\n        switch (sc.state)\n        {\n            case SCE_KVIRC_DEFAULT:\n\n                /* Detecting single-line comments\n                 * Unfortunately KVIrc script allows raw '#<channel\n                 * name>' to be used, and appending # to an array returns\n                 * its length...\n                 * Going for a compromise where single line comments not\n                 * starting on a newline are allowed in all cases except\n                 * when they are preceeded with an opening bracket or comma\n                 * (this will probably be the most common style a valid\n                 * string-less channel name will be used with), with the\n                 * array length case included\n                 */\n                if (\n                    (sc.ch == '#' && sc.atLineStart) ||\n                    (sc.ch == '#' && (\n                        sc.chPrev != '(' && sc.chPrev != ',' &&\n                        sc.chPrev != ']')\n                    )\n                )\n                {\n                    sc.SetState(SCE_KVIRC_COMMENT);\n                    break;\n                }\n\n                /* Detecting multi-line comments */\n                if (sc.Match('/', '*'))\n                {\n                    sc.SetState(SCE_KVIRC_COMMENTBLOCK);\n                    break;\n                }\n\n                /* Detecting strings */\n                if (sc.ch == '\"')\n                {\n                    sc.SetState(SCE_KVIRC_STRING);\n                    break;\n                }\n\n                /* Detecting functions */\n                if (sc.ch == '$')\n                {\n                    sc.SetState(SCE_KVIRC_FUNCTION);\n                    break;\n                }\n\n                /* Detecting variables */\n                if (sc.ch == '%')\n                {\n                    sc.SetState(SCE_KVIRC_VARIABLE);\n                    break;\n                }\n\n                /* Detecting numbers - isdigit is unsafe as it does not\n                 * validate, use CharacterSet.h functions */\n                if (IsADigit(sc.ch))\n                {\n                    sc.SetState(SCE_KVIRC_NUMBER);\n                    break;\n                }\n\n                /* Detecting words */\n                if (IsAWordStart(sc.ch) && IsAWordChar(sc.chNext))\n                {\n                    sc.SetState(SCE_KVIRC_WORD);\n                    sc.Forward();\n                    break;\n                }\n\n                /* Detecting operators */\n                if (isoperator(sc.ch))\n                {\n                    sc.SetState(SCE_KVIRC_OPERATOR);\n                    break;\n                }\n\n                break;\n\n            case SCE_KVIRC_COMMENT:\n\n                /* Breaking out of single line comment when a newline\n                 * is introduced */\n                if (sc.ch == '\\r' || sc.ch == '\\n')\n                {\n                    sc.SetState(SCE_KVIRC_DEFAULT);\n                    break;\n                }\n\n                break;\n\n            case SCE_KVIRC_COMMENTBLOCK:\n\n                /* Detecting end of multi-line comment */\n                if (sc.Match('*', '/'))\n                {\n                    // Moving the current position forward two characters\n                    // so that '*/' is included in the comment\n                    sc.Forward(2);\n                    sc.SetState(SCE_KVIRC_DEFAULT);\n\n                    /* Comment has been exited and the current position\n                     * moved forward, yet the new current character\n                     * has yet to be defined - loop without moving\n                     * forward again */\n                    next = false;\n                    break;\n                }\n\n                break;\n\n            case SCE_KVIRC_STRING:\n\n                /* Detecting end of string - closing speechmarks */\n                if (sc.ch == '\"')\n                {\n                    /* Allowing escaped speechmarks to pass */\n                    if (sc.chPrev == '\\\\')\n                        break;\n\n                    /* Moving the current position forward to capture the\n                     * terminating speechmarks, and ending string */\n                    sc.ForwardSetState(SCE_KVIRC_DEFAULT);\n\n                    /* String has been exited and the current position\n                     * moved forward, yet the new current character\n                     * has yet to be defined - loop without moving\n                     * forward again */\n                    next = false;\n                    break;\n                }\n\n                /* Functions and variables are now highlighted in strings\n                 * Detecting functions */\n                if (sc.ch == '$')\n                {\n                    /* Allowing escaped functions to pass */\n                    if (sc.chPrev == '\\\\')\n                        break;\n\n                    sc.SetState(SCE_KVIRC_STRING_FUNCTION);\n                    break;\n                }\n\n                /* Detecting variables */\n                if (sc.ch == '%')\n                {\n                    /* Allowing escaped variables to pass */\n                    if (sc.chPrev == '\\\\')\n                        break;\n\n                    sc.SetState(SCE_KVIRC_STRING_VARIABLE);\n                    break;\n                }\n\n                /* Breaking out of a string when a newline is introduced */\n                if (sc.ch == '\\r' || sc.ch == '\\n')\n                {\n                    /* Allowing escaped newlines */\n                    if (sc.chPrev == '\\\\')\n                        break;\n\n                    sc.SetState(SCE_KVIRC_DEFAULT);\n                    break;\n                }\n\n                break;\n\n            case SCE_KVIRC_FUNCTION:\n            case SCE_KVIRC_VARIABLE:\n\n                /* Detecting the end of a function/variable (word) */\n                if (!IsAWordChar(sc.ch))\n                {\n                    sc.SetState(SCE_KVIRC_DEFAULT);\n\n                    /* Word has been exited yet the current character\n                     * has yet to be defined - loop without moving\n                     * forward again */\n                    next = false;\n                    break;\n                }\n\n                break;\n\n            case SCE_KVIRC_STRING_FUNCTION:\n            case SCE_KVIRC_STRING_VARIABLE:\n\n                /* A function or variable in a string\n                 * Detecting the end of a function/variable (word) */\n                if (!IsAWordChar(sc.ch))\n                {\n                    sc.SetState(SCE_KVIRC_STRING);\n\n                    /* Word has been exited yet the current character\n                     * has yet to be defined - loop without moving\n                     * forward again */\n                    next = false;\n                    break;\n                }\n\n                break;\n\n            case SCE_KVIRC_NUMBER:\n\n                /* Detecting the end of a number */\n                if (!IsADigit(sc.ch))\n                {\n                    sc.SetState(SCE_KVIRC_DEFAULT);\n\n                    /* Number has been exited yet the current character\n                     * has yet to be defined - loop without moving\n                     * forward */\n                    next = false;\n                    break;\n                }\n\n                break;\n\n            case SCE_KVIRC_OPERATOR:\n\n                /* Because '%' is an operator but is also the marker for\n                 * a variable, I need to always treat operators as single\n                 * character strings and therefore redo their detection\n                 * after every character */\n                sc.SetState(SCE_KVIRC_DEFAULT);\n\n                /* Operator has been exited yet the current character\n                 * has yet to be defined - loop without moving\n                 * forward */\n                next = false;\n                break;\n\n            case SCE_KVIRC_WORD:\n\n                /* Detecting the end of a word */\n                if (!IsAWordChar(sc.ch))\n                {\n                    /* Checking if the word was actually a keyword -\n                     * fetching the current word, NULL-terminated like\n                     * the keyword list */\n                    char s[100];\n                    Sci_Position wordLen = sc.currentPos - styler.GetStartSegment();\n                    if (wordLen > 99)\n                        wordLen = 99;  /* Include '\\0' in buffer */\n                    Sci_Position i;\n                    for( i = 0; i < wordLen; ++i )\n                    {\n                        s[i] = styler.SafeGetCharAt( styler.GetStartSegment() + i );\n                    }\n                    s[wordLen] = '\\0';\n\n                    /* Actually detecting keywords and fixing the state */\n                    if (keywords.InList(s))\n                    {\n                        /* The SetState call actually commits the\n                         * previous keyword state */\n                        sc.ChangeState(SCE_KVIRC_KEYWORD);\n                    }\n                    else if (functionKeywords.InList(s))\n                    {\n                        // Detecting function keywords and fixing the state\n                        sc.ChangeState(SCE_KVIRC_FUNCTION_KEYWORD);\n                    }\n\n                    /* Transitioning to default and committing the previous\n                     * word state */\n                    sc.SetState(SCE_KVIRC_DEFAULT);\n\n                    /* Word has been exited yet the current character\n                     * has yet to be defined - loop without moving\n                     * forward again */\n                    next = false;\n                    break;\n                }\n\n                break;\n        }\n    }\n\n    /* Indicating processing is complete */\n    sc.Complete();\n}\n\nstatic void FoldKVIrcDoc(Sci_PositionU startPos, Sci_Position length, int /*initStyle - unused*/,\n                      WordList *[], Accessor &styler)\n{\n    /* Based on CMake's folder */\n\n    /* Exiting if folding isnt enabled */\n    if ( styler.GetPropertyInt(\"fold\") == 0 )\n        return;\n\n    /* Obtaining current line number*/\n    Sci_Position currentLine = styler.GetLine(startPos);\n\n    /* Obtaining starting character - indentation is done on a line basis,\n     * not character */\n    Sci_PositionU safeStartPos = styler.LineStart( currentLine );\n\n    /* Initialising current level - this is defined as indentation level\n     * in the low 12 bits, with flag bits in the upper four bits.\n     * It looks like two indentation states are maintained in the returned\n     * 32bit value - 'nextLevel' in the most-significant bits, 'currentLevel'\n     * in the least-significant bits. Since the next level is the most\n     * up to date, this must refer to the current state of indentation.\n     * So the code bitshifts the old current level out of existence to\n     * get at the actual current state of indentation\n     * Based on the LexerCPP.cxx line 958 comment */\n    int currentLevel = SC_FOLDLEVELBASE;\n    if (currentLine > 0)\n        currentLevel = styler.LevelAt(currentLine - 1) >> 16;\n    int nextLevel = currentLevel;\n\n    // Looping for characters in range\n    for (Sci_PositionU i = safeStartPos; i < startPos + length; ++i)\n    {\n        /* Folding occurs after syntax highlighting, meaning Scintilla\n         * already knows where the comments are\n         * Fetching the current state */\n        int state = styler.StyleAt(i) & 31;\n\n        switch( styler.SafeGetCharAt(i) )\n        {\n            case '{':\n\n                /* Indenting only when the braces are not contained in\n                 * a comment */\n                if (state != SCE_KVIRC_COMMENT &&\n                    state != SCE_KVIRC_COMMENTBLOCK)\n                    ++nextLevel;\n                break;\n\n            case '}':\n\n                /* Outdenting only when the braces are not contained in\n                 * a comment */\n                if (state != SCE_KVIRC_COMMENT &&\n                    state != SCE_KVIRC_COMMENTBLOCK)\n                    --nextLevel;\n                break;\n\n            case '\\n':\n            case '\\r':\n\n                /* Preparing indentation information to return - combining\n                 * current and next level data */\n                int lev = currentLevel | nextLevel << 16;\n\n                /* If the next level increases the indent level, mark the\n                 * current line as a fold point - current level data is\n                 * in the least significant bits */\n                if (nextLevel > currentLevel )\n                    lev |= SC_FOLDLEVELHEADERFLAG;\n\n                /* Updating indentation level if needed */\n                if (lev != styler.LevelAt(currentLine))\n                    styler.SetLevel(currentLine, lev);\n\n                /* Updating variables */\n                ++currentLine;\n                currentLevel = nextLevel;\n\n                /* Dealing with problematic Windows newlines -\n                 * incrementing to avoid the extra newline breaking the\n                 * fold point */\n                if (styler.SafeGetCharAt(i) == '\\r' &&\n                    styler.SafeGetCharAt(i + 1) == '\\n')\n                    ++i;\n                break;\n        }\n    }\n\n    /* At this point the data has ended, so presumably the end of the line?\n     * Preparing indentation information to return - combining current\n     * and next level data */\n    int lev = currentLevel | nextLevel << 16;\n\n    /* If the next level increases the indent level, mark the current\n     * line as a fold point - current level data is in the least\n     * significant bits */\n    if (nextLevel > currentLevel )\n        lev |= SC_FOLDLEVELHEADERFLAG;\n\n    /* Updating indentation level if needed */\n    if (lev != styler.LevelAt(currentLine))\n        styler.SetLevel(currentLine, lev);\n}\n\n/* Registering wordlists */\nstatic const char *const kvircWordListDesc[] = {\n\t\"primary\",\n\t\"function_keywords\",\n\t0\n};\n\n\n/* Registering functions and wordlists */\nLexerModule lmKVIrc(SCLEX_KVIRC, ColouriseKVIrcDoc, \"kvirc\", FoldKVIrcDoc,\n                    kvircWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexKix.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexKix.cxx\n ** Lexer for KIX-Scripts.\n **/\n// Copyright 2004 by Manfred Becker <manfred@becker-trdf.de>\n// The License.txt file describes the conditions under which this software may be distributed.\n// Edited by Lee Wilmott (24-Jun-2014) added support for block comments\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Extended to accept accented characters\nstatic inline bool IsAWordChar(int ch) {\n\treturn ch >= 0x80 || isalnum(ch) || ch == '_';\n}\n\nstatic inline bool IsOperator(const int ch) {\n\treturn (ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '&' || ch == '|' || ch == '<' || ch == '>' || ch == '=');\n}\n\nstatic void ColouriseKixDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *keywordlists[], Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n//\tWordList &keywords4 = *keywordlists[3];\n\n\tstyler.StartAt(startPos);\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.state == SCE_KIX_COMMENT) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_KIX_COMMENTSTREAM) {\n\t\t\tif (sc.ch == '/' && sc.chPrev == '*') {\n\t\t\t\tsc.ForwardSetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_KIX_STRING1) {\n\t\t\t// This is a doubles quotes string\n\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_KIX_STRING2) {\n\t\t\t// This is a single quote string\n\t\t\tif (sc.ch == '\\'') {\n\t\t\t\tsc.ForwardSetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_KIX_NUMBER) {\n\t\t\tif (!IsADigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_KIX_VAR) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_KIX_MACRO) {\n\t\t\tif (!IsAWordChar(sc.ch) && !IsADigit(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\n\t\t\t\tif (!keywords3.InList(&s[1])) {\n\t\t\t\t\tsc.ChangeState(SCE_KIX_DEFAULT);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_KIX_OPERATOR) {\n\t\t\tif (!IsOperator(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_KIX_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_KIX_KEYWORD);\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_KIX_FUNCTIONS);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_KIX_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_KIX_DEFAULT) {\n\t\t\tif (sc.ch == ';') {\n\t\t\t\tsc.SetState(SCE_KIX_COMMENT);\n\t\t\t} else if (sc.ch == '/' && sc.chNext == '*') {\n\t\t\t\tsc.SetState(SCE_KIX_COMMENTSTREAM);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_KIX_STRING1);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_KIX_STRING2);\n\t\t\t} else if (sc.ch == '$') {\n\t\t\t\tsc.SetState(SCE_KIX_VAR);\n\t\t\t} else if (sc.ch == '@') {\n\t\t\t\tsc.SetState(SCE_KIX_MACRO);\n\t\t\t} else if (IsADigit(sc.ch) || ((sc.ch == '.' || sc.ch == '&') && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_KIX_NUMBER);\n\t\t\t} else if (IsOperator(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_KIX_OPERATOR);\n\t\t\t} else if (IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_KIX_IDENTIFIER);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\n\nLexerModule lmKix(SCLEX_KIX, ColouriseKixDoc, \"kix\");\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexLaTeX.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexLaTeX.cxx\n ** Lexer for LaTeX2e.\n  **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// Modified by G. HU in 2013. Added folding, syntax highting inside math environments, and changed some minor behaviors.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n#include <vector>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"LexerBase.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nusing namespace std;\n\nstruct latexFoldSave {\n\tlatexFoldSave() : structLev(0) {\n\t\tfor (int i = 0; i < 8; ++i) openBegins[i] = 0;\n\t}\n\tlatexFoldSave(const latexFoldSave &save) : structLev(save.structLev) {\n\t\tfor (int i = 0; i < 8; ++i) openBegins[i] = save.openBegins[i];\n\t}\n\tint openBegins[8];\n\tint structLev;\n};\n\nclass LexerLaTeX : public LexerBase {\nprivate:\n\tvector<int> modes;\n\tvoid setMode(Sci_Position line, int mode) {\n\t\tif (line >= static_cast<Sci_Position>(modes.size())) modes.resize(line + 1, 0);\n\t\tmodes[line] = mode;\n\t}\n\tint getMode(Sci_Position line) {\n\t\tif (line >= 0 && line < static_cast<Sci_Position>(modes.size())) return modes[line];\n\t\treturn 0;\n\t}\n\tvoid truncModes(Sci_Position numLines) {\n\t\tif (static_cast<Sci_Position>(modes.size()) > numLines * 2 + 256)\n\t\t\tmodes.resize(numLines + 128);\n\t}\n\n\tvector<latexFoldSave> saves;\n\tvoid setSave(Sci_Position line, const latexFoldSave &save) {\n\t\tif (line >= static_cast<Sci_Position>(saves.size())) saves.resize(line + 1);\n\t\tsaves[line] = save;\n\t}\n\tvoid getSave(Sci_Position line, latexFoldSave &save) {\n\t\tif (line >= 0 && line < static_cast<Sci_Position>(saves.size())) save = saves[line];\n\t\telse {\n\t\t\tsave.structLev = 0;\n\t\t\tfor (int i = 0; i < 8; ++i) save.openBegins[i] = 0;\n\t\t}\n\t}\n\tvoid truncSaves(Sci_Position numLines) {\n\t\tif (static_cast<Sci_Position>(saves.size()) > numLines * 2 + 256)\n\t\t\tsaves.resize(numLines + 128);\n\t}\npublic:\n\tstatic ILexer *LexerFactoryLaTeX() {\n\t\treturn new LexerLaTeX();\n\t}\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n};\n\nstatic bool latexIsSpecial(int ch) {\n\treturn (ch == '#') || (ch == '$') || (ch == '%') || (ch == '&') || (ch == '_') ||\n\t\t   (ch == '{') || (ch == '}') || (ch == ' ');\n}\n\nstatic bool latexIsBlank(int ch) {\n\treturn (ch == ' ') || (ch == '\\t');\n}\n\nstatic bool latexIsBlankAndNL(int ch) {\n\treturn (ch == ' ') || (ch == '\\t') || (ch == '\\r') || (ch == '\\n');\n}\n\nstatic bool latexIsLetter(int ch) {\n\treturn IsASCII(ch) && isalpha(ch);\n}\n\nstatic bool latexIsTagValid(Sci_Position &i, Sci_Position l, Accessor &styler) {\n\twhile (i < l) {\n\t\tif (styler.SafeGetCharAt(i) == '{') {\n\t\t\twhile (i < l) {\n\t\t\t\ti++;\n\t\t\t\tif (styler.SafeGetCharAt(i) == '}') {\n\t\t\t\t\treturn true;\n\t\t\t\t}\telse if (!latexIsLetter(styler.SafeGetCharAt(i)) &&\n                   styler.SafeGetCharAt(i)!='*') {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!latexIsBlank(styler.SafeGetCharAt(i))) {\n\t\t\treturn false;\n\t\t}\n\t\ti++;\n\t}\n\treturn false;\n}\n\nstatic bool latexNextNotBlankIs(Sci_Position i, Accessor &styler, char needle) {\n  char ch;\n\twhile (i < styler.Length()) {\n    ch = styler.SafeGetCharAt(i);\n\t\tif (!latexIsBlankAndNL(ch) && ch != '*') {\n      if (ch == needle)\n        return true;\n      else\n        return false;\n\t\t}\n\t\ti++;\n\t}\n\treturn false;\n}\n\nstatic bool latexLastWordIs(Sci_Position start, Accessor &styler, const char *needle) {\n\tSci_PositionU i = 0;\n\tSci_PositionU l = static_cast<Sci_PositionU>(strlen(needle));\n\tSci_Position ini = start-l+1;\n\tchar s[32];\n\n\twhile (i < l && i < 31) {\n\t\ts[i] = styler.SafeGetCharAt(ini + i);\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n\n\treturn (strcmp(s, needle) == 0);\n}\n\nstatic bool latexLastWordIsMathEnv(Sci_Position pos, Accessor &styler) {\n\tSci_Position i, j;\n\tchar s[32];\n\tconst char *mathEnvs[] = { \"align\", \"alignat\", \"flalign\", \"gather\",\n\t\t\"multiline\", \"displaymath\", \"eqnarray\", \"equation\" };\n\tif (styler.SafeGetCharAt(pos) != '}') return false;\n\tfor (i = pos - 1; i >= 0; --i) {\n\t\tif (styler.SafeGetCharAt(i) == '{') break;\n\t\tif (pos - i >= 20) return false;\n\t}\n\tif (i < 0 || i == pos - 1) return false;\n\t++i;\n\tfor (j = 0; i + j < pos; ++j)\n\t\ts[j] = styler.SafeGetCharAt(i + j);\n\ts[j] = '\\0';\n\tif (j == 0) return false;\n\tif (s[j - 1] == '*') s[--j] = '\\0';\n\tfor (i = 0; i < static_cast<int>(sizeof(mathEnvs) / sizeof(const char *)); ++i)\n\t\tif (strcmp(s, mathEnvs[i]) == 0) return true;\n\treturn false;\n}\n\nstatic inline void latexStateReset(int &mode, int &state) {\n\tswitch (mode) {\n\tcase 1:     state = SCE_L_MATH; break;\n\tcase 2:     state = SCE_L_MATH2; break;\n\tdefault:    state = SCE_L_DEFAULT; break;\n\t}\n}\n\n// There are cases not handled correctly, like $abcd\\textrm{what is $x+y$}z+w$.\n// But I think it's already good enough.\nvoid SCI_METHOD LexerLaTeX::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\t// startPos is assumed to be the first character of a line\n\tAccessor styler(pAccess, &props);\n\tstyler.StartAt(startPos);\n\tint mode = getMode(styler.GetLine(startPos) - 1);\n\tint state = initStyle;\n\tif (state == SCE_L_ERROR || state == SCE_L_SHORTCMD || state == SCE_L_SPECIAL)   // should not happen\n\t\tlatexStateReset(mode, state);\n\n\tchar chNext = styler.SafeGetCharAt(startPos);\n\tchar chVerbatimDelim = '\\0';\n\tstyler.StartSegment(startPos);\n\tSci_Position lengthDoc = startPos + length;\n\n\tfor (Sci_Position i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\ti++;\n\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (ch == '\\r' || ch == '\\n')\n\t\t\tsetMode(styler.GetLine(i), mode);\n\n\t\tswitch (state) {\n\t\tcase SCE_L_DEFAULT :\n\t\t\tswitch (ch) {\n\t\t\tcase '\\\\' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tif (latexIsLetter(chNext)) {\n\t\t\t\t\tstate = SCE_L_COMMAND;\n\t\t\t\t} else if (latexIsSpecial(chNext)) {\n\t\t\t\t\tstyler.ColourTo(i + 1, SCE_L_SPECIAL);\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t} else if (chNext == '\\r' || chNext == '\\n') {\n\t\t\t\t\tstyler.ColourTo(i, SCE_L_ERROR);\n\t\t\t\t} else if (IsASCII(chNext)) {\n\t\t\t\t\tstyler.ColourTo(i + 1, SCE_L_SHORTCMD);\n\t\t\t\t\tif (chNext == '(') {\n\t\t\t\t\t\tmode = 1;\n\t\t\t\t\t\tstate = SCE_L_MATH;\n\t\t\t\t\t} else if (chNext == '[') {\n\t\t\t\t\t\tmode = 2;\n\t\t\t\t\t\tstate = SCE_L_MATH2;\n\t\t\t\t\t}\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '$' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tif (chNext == '$') {\n\t\t\t\t\tstyler.ColourTo(i + 1, SCE_L_SHORTCMD);\n\t\t\t\t\tmode = 2;\n\t\t\t\t\tstate = SCE_L_MATH2;\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i, SCE_L_SHORTCMD);\n\t\t\t\t\tmode = 1;\n\t\t\t\t\tstate = SCE_L_MATH;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '%' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_L_COMMENT;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\t// These 3 will never be reached.\n\t\tcase SCE_L_ERROR:\n\t\tcase SCE_L_SPECIAL:\n\t\tcase SCE_L_SHORTCMD:\n\t\t\tbreak;\n\t\tcase SCE_L_COMMAND :\n\t\t\tif (!latexIsLetter(chNext)) {\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tif (latexNextNotBlankIs(i + 1, styler, '[' )) {\n\t\t\t\t\tstate = SCE_L_CMDOPT;\n\t\t\t\t} else if (latexLastWordIs(i, styler, \"\\\\begin\")) {\n\t\t\t\t\tstate = SCE_L_TAG;\n\t\t\t\t} else if (latexLastWordIs(i, styler, \"\\\\end\")) {\n\t\t\t\t\tstate = SCE_L_TAG2;\n\t\t\t\t} else if (latexLastWordIs(i, styler, \"\\\\verb\") && chNext != '*' && chNext != ' ') {\n\t\t\t\t\tchVerbatimDelim = chNext;\n\t\t\t\t\tstate = SCE_L_VERBATIM;\n\t\t\t\t} else {\n\t\t\t\t\tlatexStateReset(mode, state);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_L_CMDOPT :\n\t\t\tif (ch == ']') {\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tlatexStateReset(mode, state);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_L_TAG :\n\t\t\tif (latexIsTagValid(i, lengthDoc, styler)) {\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tlatexStateReset(mode, state);\n\t\t\t\tif (latexLastWordIs(i, styler, \"{verbatim}\")) {\n\t\t\t\t\tstate = SCE_L_VERBATIM;\n\t\t\t\t} else if (latexLastWordIs(i, styler, \"{comment}\")) {\n\t\t\t\t\tstate = SCE_L_COMMENT2;\n\t\t\t\t} else if (latexLastWordIs(i, styler, \"{math}\") && mode == 0) {\n\t\t\t\t\tmode = 1;\n\t\t\t\t\tstate = SCE_L_MATH;\n\t\t\t\t} else if (latexLastWordIsMathEnv(i, styler) && mode == 0) {\n\t\t\t\t\tmode = 2;\n\t\t\t\t\tstate = SCE_L_MATH2;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstyler.ColourTo(i, SCE_L_ERROR);\n\t\t\t\tlatexStateReset(mode, state);\n\t\t\t\tch = styler.SafeGetCharAt(i);\n\t\t\t\tif (ch == '\\r' || ch == '\\n') setMode(styler.GetLine(i), mode);\n\t\t\t}\n\t\t\tchNext = styler.SafeGetCharAt(i+1);\n\t\t\tbreak;\n\t\tcase SCE_L_TAG2 :\n\t\t\tif (latexIsTagValid(i, lengthDoc, styler)) {\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tlatexStateReset(mode, state);\n\t\t\t} else {\n\t\t\t\tstyler.ColourTo(i, SCE_L_ERROR);\n\t\t\t\tlatexStateReset(mode, state);\n\t\t\t\tch = styler.SafeGetCharAt(i);\n\t\t\t\tif (ch == '\\r' || ch == '\\n') setMode(styler.GetLine(i), mode);\n\t\t\t}\n\t\t\tchNext = styler.SafeGetCharAt(i+1);\n\t\t\tbreak;\n\t\tcase SCE_L_MATH :\n\t\t\tswitch (ch) {\n\t\t\tcase '\\\\' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tif (latexIsLetter(chNext)) {\n\t\t\t\t\tSci_Position match = i + 3;\n\t\t\t\t\tif (latexLastWordIs(match, styler, \"\\\\end\")) {\n\t\t\t\t\t\tmatch++;\n\t\t\t\t\t\tif (latexIsTagValid(match, lengthDoc, styler)) {\n\t\t\t\t\t\t\tif (latexLastWordIs(match, styler, \"{math}\"))\n\t\t\t\t\t\t\t\tmode = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstate = SCE_L_COMMAND;\n\t\t\t\t} else if (latexIsSpecial(chNext)) {\n\t\t\t\t\tstyler.ColourTo(i + 1, SCE_L_SPECIAL);\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t} else if (chNext == '\\r' || chNext == '\\n') {\n\t\t\t\t\tstyler.ColourTo(i, SCE_L_ERROR);\n\t\t\t\t} else if (IsASCII(chNext)) {\n\t\t\t\t\tif (chNext == ')') {\n\t\t\t\t\t\tmode = 0;\n\t\t\t\t\t\tstate = SCE_L_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t\tstyler.ColourTo(i + 1, SCE_L_SHORTCMD);\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '$' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstyler.ColourTo(i, SCE_L_SHORTCMD);\n\t\t\t\tmode = 0;\n\t\t\t\tstate = SCE_L_DEFAULT;\n\t\t\t\tbreak;\n\t\t\tcase '%' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_L_COMMENT;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_L_MATH2 :\n\t\t\tswitch (ch) {\n\t\t\tcase '\\\\' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tif (latexIsLetter(chNext)) {\n\t\t\t\t\tSci_Position match = i + 3;\n\t\t\t\t\tif (latexLastWordIs(match, styler, \"\\\\end\")) {\n\t\t\t\t\t\tmatch++;\n\t\t\t\t\t\tif (latexIsTagValid(match, lengthDoc, styler)) {\n\t\t\t\t\t\t\tif (latexLastWordIsMathEnv(match, styler))\n\t\t\t\t\t\t\t\tmode = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tstate = SCE_L_COMMAND;\n\t\t\t\t} else if (latexIsSpecial(chNext)) {\n\t\t\t\t\tstyler.ColourTo(i + 1, SCE_L_SPECIAL);\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t} else if (chNext == '\\r' || chNext == '\\n') {\n\t\t\t\t\tstyler.ColourTo(i, SCE_L_ERROR);\n\t\t\t\t} else if (IsASCII(chNext)) {\n\t\t\t\t\tif (chNext == ']') {\n\t\t\t\t\t\tmode = 0;\n\t\t\t\t\t\tstate = SCE_L_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t\tstyler.ColourTo(i + 1, SCE_L_SHORTCMD);\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '$' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tif (chNext == '$') {\n\t\t\t\t\tstyler.ColourTo(i + 1, SCE_L_SHORTCMD);\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t\tmode = 0;\n\t\t\t\t\tstate = SCE_L_DEFAULT;\n\t\t\t\t} else { // This may not be an error, e.g. \\begin{equation}\\text{$a$}\\end{equation}\n\t\t\t\t\tstyler.ColourTo(i, SCE_L_SHORTCMD);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '%' :\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_L_COMMENT;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_L_COMMENT :\n\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tlatexStateReset(mode, state);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_L_COMMENT2 :\n\t\t\tif (ch == '\\\\') {\n\t\t\t\tSci_Position match = i + 3;\n\t\t\t\tif (latexLastWordIs(match, styler, \"\\\\end\")) {\n\t\t\t\t\tmatch++;\n\t\t\t\t\tif (latexIsTagValid(match, lengthDoc, styler)) {\n\t\t\t\t\t\tif (latexLastWordIs(match, styler, \"{comment}\")) {\n\t\t\t\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\t\t\t\tstate = SCE_L_COMMAND;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_L_VERBATIM :\n\t\t\tif (ch == '\\\\') {\n\t\t\t\tSci_Position match = i + 3;\n\t\t\t\tif (latexLastWordIs(match, styler, \"\\\\end\")) {\n\t\t\t\t\tmatch++;\n\t\t\t\t\tif (latexIsTagValid(match, lengthDoc, styler)) {\n\t\t\t\t\t\tif (latexLastWordIs(match, styler, \"{verbatim}\")) {\n\t\t\t\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\t\t\t\tstate = SCE_L_COMMAND;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (chNext == chVerbatimDelim) {\n\t\t\t\tstyler.ColourTo(i + 1, state);\n\t\t\t\tlatexStateReset(mode, state);\n\t\t\t\tchVerbatimDelim = '\\0';\n\t\t\t\ti++;\n\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t} else if (chVerbatimDelim != '\\0' && (ch == '\\n' || ch == '\\r')) {\n\t\t\t\tstyler.ColourTo(i, SCE_L_ERROR);\n\t\t\t\tlatexStateReset(mode, state);\n\t\t\t\tchVerbatimDelim = '\\0';\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (lengthDoc == styler.Length()) truncModes(styler.GetLine(lengthDoc - 1));\n\tstyler.ColourTo(lengthDoc - 1, state);\n\tstyler.Flush();\n}\n\nstatic int latexFoldSaveToInt(const latexFoldSave &save) {\n\tint sum = 0;\n\tfor (int i = 0; i <= save.structLev; ++i)\n\t\tsum += save.openBegins[i];\n\treturn ((sum + save.structLev + SC_FOLDLEVELBASE) & SC_FOLDLEVELNUMBERMASK);\n}\n\n// Change folding state while processing a line\n// Return the level before the first relevant command\nvoid SCI_METHOD LexerLaTeX::Fold(Sci_PositionU startPos, Sci_Position length, int, IDocument *pAccess) {\n\tconst char *structWords[7] = {\"part\", \"chapter\", \"section\", \"subsection\",\n\t\t\"subsubsection\", \"paragraph\", \"subparagraph\"};\n\tAccessor styler(pAccess, &props);\n\tSci_PositionU endPos = startPos + length;\n\tSci_Position curLine = styler.GetLine(startPos);\n\tlatexFoldSave save;\n\tgetSave(curLine - 1, save);\n\tdo {\n\t\tchar ch, buf[16];\n\t\tSci_Position i, j;\n\t\tint lev = -1;\n\t\tbool needFold = false;\n\t\tfor (i = static_cast<Sci_Position>(startPos); i < static_cast<Sci_Position>(endPos); ++i) {\n\t\t\tch = styler.SafeGetCharAt(i);\n\t\t\tif (ch == '\\r' || ch == '\\n') break;\n\t\t\tif (ch != '\\\\' || styler.StyleAt(i) != SCE_L_COMMAND) continue;\n\t\t\tfor (j = 0; j < 15 && i + 1 < static_cast<Sci_Position>(endPos); ++j, ++i) {\n\t\t\t\tbuf[j] = styler.SafeGetCharAt(i + 1);\n\t\t\t\tif (!latexIsLetter(buf[j])) break;\n\t\t\t}\n\t\t\tbuf[j] = '\\0';\n\t\t\tif (strcmp(buf, \"begin\") == 0) {\n\t\t\t\tif (lev < 0) lev = latexFoldSaveToInt(save);\n\t\t\t\t++save.openBegins[save.structLev];\n\t\t\t\tneedFold = true;\n\t\t\t}\n\t\t\telse if (strcmp(buf, \"end\") == 0) {\n\t\t\t\twhile (save.structLev > 0 && save.openBegins[save.structLev] == 0)\n\t\t\t\t\t--save.structLev;\n\t\t\t\tif (lev < 0) lev = latexFoldSaveToInt(save);\n\t\t\t\tif (save.openBegins[save.structLev] > 0) --save.openBegins[save.structLev];\n\t\t\t}\n\t\t\telse {\n\t\t\t\tfor (j = 0; j < 7; ++j)\n\t\t\t\t\tif (strcmp(buf, structWords[j]) == 0) break;\n\t\t\t\tif (j >= 7) continue;\n\t\t\t\tsave.structLev = j;   // level before the command\n\t\t\t\tfor (j = save.structLev + 1; j < 8; ++j) {\n\t\t\t\t\tsave.openBegins[save.structLev] += save.openBegins[j];\n\t\t\t\t\tsave.openBegins[j] = 0;\n\t\t\t\t}\n\t\t\t\tif (lev < 0) lev = latexFoldSaveToInt(save);\n\t\t\t\t++save.structLev;   // level after the command\n\t\t\t\tneedFold = true;\n\t\t\t}\n\t\t}\n\t\tif (lev < 0) lev = latexFoldSaveToInt(save);\n\t\tif (needFold) lev |= SC_FOLDLEVELHEADERFLAG;\n\t\tstyler.SetLevel(curLine, lev);\n\t\tsetSave(curLine, save);\n\t\t++curLine;\n\t\tstartPos = styler.LineStart(curLine);\n\t\tif (static_cast<Sci_Position>(startPos) == styler.Length()) {\n\t\t\tlev = latexFoldSaveToInt(save);\n\t\t\tstyler.SetLevel(curLine, lev);\n\t\t\tsetSave(curLine, save);\n\t\t\ttruncSaves(curLine);\n\t\t}\n\t} while (startPos < endPos);\n\tstyler.Flush();\n}\n\nstatic const char *const emptyWordListDesc[] = {\n\t0\n};\n\nLexerModule lmLatex(SCLEX_LATEX, LexerLaTeX::LexerFactoryLaTeX, \"latex\", emptyWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexLisp.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexLisp.cxx\n ** Lexer for Lisp.\n ** Written by Alexey Yutkin.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#define SCE_LISP_CHARACTER 29\n#define SCE_LISP_MACRO 30\n#define SCE_LISP_MACRO_DISPATCH 31\n\nstatic inline bool isLispoperator(char ch) {\n\tif (IsASCII(ch) && isalnum(ch))\n\t\treturn false;\n\tif (ch == '\\'' || ch == '`' || ch == '(' || ch == ')' || ch == '[' || ch == ']' || ch == '{' || ch == '}')\n\t\treturn true;\n\treturn false;\n}\n\nstatic inline bool isLispwordstart(char ch) {\n\treturn IsASCII(ch) && ch != ';'  && !isspacechar(ch) && !isLispoperator(ch) &&\n\t\tch != '\\n' && ch != '\\r' &&  ch != '\\\"';\n}\n\n\nstatic void classifyWordLisp(Sci_PositionU start, Sci_PositionU end, WordList &keywords, WordList &keywords_kw, Accessor &styler) {\n\tassert(end >= start);\n\tchar s[100];\n\tSci_PositionU i;\n\tbool digit_flag = true;\n\tfor (i = 0; (i < end - start + 1) && (i < 99); i++) {\n\t\ts[i] = styler[start + i];\n\t\ts[i + 1] = '\\0';\n\t\tif (!isdigit(s[i]) && (s[i] != '.')) digit_flag = false;\n\t}\n\tchar chAttr = SCE_LISP_IDENTIFIER;\n\n\tif(digit_flag) chAttr = SCE_LISP_NUMBER;\n\telse {\n\t\tif (keywords.InList(s)) {\n\t\t\tchAttr = SCE_LISP_KEYWORD;\n\t\t} else if (keywords_kw.InList(s)) {\n\t\t\tchAttr = SCE_LISP_KEYWORD_KW;\n\t\t} else if ((s[0] == '*' && s[i-1] == '*') ||\n\t\t\t   (s[0] == '+' && s[i-1] == '+')) {\n\t\t\tchAttr = SCE_LISP_SPECIAL;\n\t\t}\n\t}\n\tstyler.ColourTo(end, chAttr);\n\treturn;\n}\n\n\nstatic void ColouriseLispDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords_kw = *keywordlists[1];\n\n\tstyler.StartAt(startPos);\n\n\tint state = initStyle, radix = -1;\n\tchar chNext = styler[startPos];\n\tSci_PositionU lengthDoc = startPos + length;\n\tstyler.StartSegment(startPos);\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\tchNext = styler.SafeGetCharAt(i + 2);\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (state == SCE_LISP_DEFAULT) {\n\t\t\tif (ch == '#') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tradix = -1;\n\t\t\t\tstate = SCE_LISP_MACRO_DISPATCH;\n\t\t\t} else if (ch == ':' && isLispwordstart(chNext)) {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_LISP_SYMBOL;\n\t\t\t} else if (isLispwordstart(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_LISP_IDENTIFIER;\n\t\t\t}\n\t\t\telse if (ch == ';') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_LISP_COMMENT;\n\t\t\t}\n\t\t\telse if (isLispoperator(ch) || ch=='\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstyler.ColourTo(i, SCE_LISP_OPERATOR);\n\t\t\t\tif (ch=='\\'' && isLispwordstart(chNext)) {\n\t\t\t\t\tstate = SCE_LISP_SYMBOL;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (ch == '\\\"') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_LISP_STRING;\n\t\t\t}\n\t\t} else if (state == SCE_LISP_IDENTIFIER || state == SCE_LISP_SYMBOL) {\n\t\t\tif (!isLispwordstart(ch)) {\n\t\t\t\tif (state == SCE_LISP_IDENTIFIER) {\n\t\t\t\t\tclassifyWordLisp(styler.GetStartSegment(), i - 1, keywords, keywords_kw, styler);\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\t}\n\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t} /*else*/\n\t\t\tif (isLispoperator(ch) || ch=='\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstyler.ColourTo(i, SCE_LISP_OPERATOR);\n\t\t\t\tif (ch=='\\'' && isLispwordstart(chNext)) {\n\t\t\t\t\tstate = SCE_LISP_SYMBOL;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (state == SCE_LISP_MACRO_DISPATCH) {\n\t\t\tif (!(IsASCII(ch) && isdigit(ch))) {\n\t\t\t\tif (ch != 'r' && ch != 'R' && (i - styler.GetStartSegment()) > 1) {\n\t\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t\t} else {\n\t\t\t\t\tswitch (ch) {\n\t\t\t\t\t\tcase '|': state = SCE_LISP_MULTI_COMMENT; break;\n\t\t\t\t\t\tcase 'o':\n\t\t\t\t\t\tcase 'O': radix = 8; state = SCE_LISP_MACRO; break;\n\t\t\t\t\t\tcase 'x':\n\t\t\t\t\t\tcase 'X': radix = 16; state = SCE_LISP_MACRO; break;\n\t\t\t\t\t\tcase 'b':\n\t\t\t\t\t\tcase 'B': radix = 2; state = SCE_LISP_MACRO; break;\n\t\t\t\t\t\tcase '\\\\': state = SCE_LISP_CHARACTER; break;\n\t\t\t\t\t\tcase ':':\n\t\t\t\t\t\tcase '-':\n\t\t\t\t\t\tcase '+': state = SCE_LISP_MACRO; break;\n\t\t\t\t\t\tcase '\\'': if (isLispwordstart(chNext)) {\n\t\t\t\t\t\t\t\t   state = SCE_LISP_SPECIAL;\n\t\t\t\t\t\t\t   } else {\n\t\t\t\t\t\t\t\t   styler.ColourTo(i - 1, SCE_LISP_DEFAULT);\n\t\t\t\t\t\t\t\t   styler.ColourTo(i, SCE_LISP_OPERATOR);\n\t\t\t\t\t\t\t\t   state = SCE_LISP_DEFAULT;\n\t\t\t\t\t\t\t   }\n\t\t\t\t\t\t\t   break;\n\t\t\t\t\t\tdefault: if (isLispoperator(ch)) {\n\t\t\t\t\t\t\t\t styler.ColourTo(i - 1, SCE_LISP_DEFAULT);\n\t\t\t\t\t\t\t\t styler.ColourTo(i, SCE_LISP_OPERATOR);\n\t\t\t\t\t\t\t }\n\t\t\t\t\t\t\t state = SCE_LISP_DEFAULT;\n\t\t\t\t\t\t\t break;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (state == SCE_LISP_MACRO) {\n\t\t\tif (isLispwordstart(ch) && (radix == -1 || IsADigit(ch, radix))) {\n\t\t\t\tstate = SCE_LISP_SPECIAL;\n\t\t\t} else {\n\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_LISP_CHARACTER) {\n\t\t\tif (isLispoperator(ch)) {\n\t\t\t\tstyler.ColourTo(i, SCE_LISP_SPECIAL);\n\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t} else if (isLispwordstart(ch)) {\n\t\t\t\tstyler.ColourTo(i, SCE_LISP_SPECIAL);\n\t\t\t\tstate = SCE_LISP_SPECIAL;\n\t\t\t} else {\n\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_LISP_SPECIAL) {\n\t\t\tif (!isLispwordstart(ch) || (radix != -1 && !IsADigit(ch, radix))) {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t}\n\t\t\tif (isLispoperator(ch) || ch=='\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstyler.ColourTo(i, SCE_LISP_OPERATOR);\n\t\t\t\tif (ch=='\\'' && isLispwordstart(chNext)) {\n\t\t\t\t\tstate = SCE_LISP_SYMBOL;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (state == SCE_LISP_COMMENT) {\n\t\t\t\tif (atEOL) {\n\t\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (state == SCE_LISP_MULTI_COMMENT) {\n\t\t\t\tif (ch == '|' && chNext == '#') {\n\t\t\t\t\ti++;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (state == SCE_LISP_STRING) {\n\t\t\t\tif (ch == '\\\\') {\n\t\t\t\t\tif (chNext == '\\\"' || chNext == '\\'' || chNext == '\\\\') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t\t}\n\t\t\t\t} else if (ch == '\\\"') {\n\t\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\t\tstate = SCE_LISP_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\tstyler.ColourTo(lengthDoc - 1, state);\n}\n\nstatic void FoldLispDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[],\n                            Accessor &styler) {\n\tSci_PositionU lengthDoc = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (style == SCE_LISP_OPERATOR) {\n\t\t\tif (ch == '(' || ch == '[' || ch == '{') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == ')' || ch == ']' || ch == '}') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const lispWordListDesc[] = {\n\t\"Functions and special operators\",\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmLISP(SCLEX_LISP, ColouriseLispDoc, \"lisp\", FoldLispDoc, lispWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexLout.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexLout.cxx\n ** Lexer for the Basser Lout (>= version 3) typesetting language\n **/\n// Copyright 2003 by Kein-Hong Man <mkh@pl.jaring.my>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalpha(ch) || ch == '@' || ch == '_');\n}\n\nstatic inline bool IsAnOther(const int ch) {\n\treturn (ch < 0x80) && (ch == '{' || ch == '}' ||\n\tch == '!' || ch == '$' || ch == '%' || ch == '&' || ch == '\\'' ||\n\tch == '(' || ch == ')' || ch == '*' || ch == '+' || ch == ',' ||\n\tch == '-' || ch == '.' || ch == '/' || ch == ':' || ch == ';' ||\n\tch == '<' || ch == '=' || ch == '>' || ch == '?' || ch == '[' ||\n\tch == ']' || ch == '^' || ch == '`' || ch == '|' || ch == '~');\n}\n\nstatic void ColouriseLoutDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\t\t     WordList *keywordlists[], Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\n\tint visibleChars = 0;\n\tint firstWordInLine = 0;\n\tint leadingAtSign = 0;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.atLineStart && (sc.state == SCE_LOUT_STRING)) {\n\t\t\t// Prevent SCE_LOUT_STRINGEOL from leaking back to previous line\n\t\t\tsc.SetState(SCE_LOUT_STRING);\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_LOUT_COMMENT) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_LOUT_DEFAULT);\n\t\t\t\tvisibleChars = 0;\n\t\t\t}\n\t\t} else if (sc.state == SCE_LOUT_NUMBER) {\n\t\t\tif (!IsADigit(sc.ch) && sc.ch != '.') {\n\t\t\t\tsc.SetState(SCE_LOUT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_LOUT_STRING) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_LOUT_DEFAULT);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_LOUT_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_LOUT_DEFAULT);\n\t\t\t\tvisibleChars = 0;\n\t\t\t}\n\t\t} else if (sc.state == SCE_LOUT_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\n\t\t\t\tif (leadingAtSign) {\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_LOUT_WORD);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.ChangeState(SCE_LOUT_WORD4);\n\t\t\t\t\t}\n\t\t\t\t} else if (firstWordInLine && keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LOUT_WORD3);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_LOUT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_LOUT_OPERATOR) {\n\t\t\tif (!IsAnOther(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\n\t\t\t\tif (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LOUT_WORD2);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_LOUT_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_LOUT_DEFAULT) {\n\t\t\tif (sc.ch == '#') {\n\t\t\t\tsc.SetState(SCE_LOUT_COMMENT);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_LOUT_STRING);\n\t\t\t} else if (IsADigit(sc.ch) ||\n\t\t\t\t  (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_LOUT_NUMBER);\n\t\t\t} else if (IsAWordChar(sc.ch)) {\n\t\t\t\tfirstWordInLine = (visibleChars == 0);\n\t\t\t\tleadingAtSign = (sc.ch == '@');\n\t\t\t\tsc.SetState(SCE_LOUT_IDENTIFIER);\n\t\t\t} else if (IsAnOther(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_LOUT_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\t// Reset states to begining of colourise so no surprises\n\t\t\t// if different sets of lines lexed.\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!IsASpace(sc.ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldLoutDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[],\n                        Accessor &styler) {\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tint styleNext = styler.StyleAt(startPos);\n\tchar s[10] = \"\";\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (style == SCE_LOUT_WORD) {\n\t\t\tif (ch == '@') {\n\t\t\t\tfor (Sci_PositionU j = 0; j < 8; j++) {\n\t\t\t\t\tif (!IsAWordChar(styler[i + j])) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\ts[j] = styler[i + j];\n\t\t\t\t\ts[j + 1] = '\\0';\n\t\t\t\t}\n\t\t\t\tif (strcmp(s, \"@Begin\") == 0) {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t} else if (strcmp(s, \"@End\") == 0) {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (style == SCE_LOUT_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact) {\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\t}\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0)) {\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t}\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const loutWordLists[] = {\n            \"Predefined identifiers\",\n            \"Predefined delimiters\",\n            \"Predefined keywords\",\n            0,\n        };\n\nLexerModule lmLout(SCLEX_LOUT, ColouriseLoutDoc, \"lout\", FoldLoutDoc, loutWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexLua.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexLua.cxx\n ** Lexer for Lua language.\n **\n ** Written by Paul Winwood.\n ** Folder by Alexey Yutkin.\n ** Modified by Marcos E. Wurzius & Philippe Lhoste\n **/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Test for [=[ ... ]=] delimiters, returns 0 if it's only a [ or ],\n// return 1 for [[ or ]], returns >=2 for [=[ or ]=] and so on.\n// The maximum number of '=' characters allowed is 254.\nstatic int LongDelimCheck(StyleContext &sc) {\n\tint sep = 1;\n\twhile (sc.GetRelative(sep) == '=' && sep < 0xFF)\n\t\tsep++;\n\tif (sc.GetRelative(sep) == sc.ch)\n\t\treturn sep;\n\treturn 0;\n}\n\nstatic void ColouriseLuaDoc(\n\tSci_PositionU startPos,\n\tSci_Position length,\n\tint initStyle,\n\tWordList *keywordlists[],\n\tAccessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\tWordList &keywords5 = *keywordlists[4];\n\tWordList &keywords6 = *keywordlists[5];\n\tWordList &keywords7 = *keywordlists[6];\n\tWordList &keywords8 = *keywordlists[7];\n\n\t// Accepts accented characters\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_\", 0x80, true);\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"_\", 0x80, true);\n\t// Not exactly following number definition (several dots are seen as OK, etc.)\n\t// but probably enough in most cases. [pP] is for hex floats.\n\tCharacterSet setNumber(CharacterSet::setDigits, \".-+abcdefpABCDEFP\");\n\tCharacterSet setExponent(CharacterSet::setNone, \"eEpP\");\n\tCharacterSet setLuaOperator(CharacterSet::setNone, \"*/-+()={}~[];<>,.^%:#&|\");\n\tCharacterSet setEscapeSkip(CharacterSet::setNone, \"\\\"'\\\\\");\n\n\tSci_Position currentLine = styler.GetLine(startPos);\n\t// Initialize long string [[ ... ]] or block comment --[[ ... ]] nesting level,\n\t// if we are inside such a string. Block comment was introduced in Lua 5.0,\n\t// blocks with separators [=[ ... ]=] in Lua 5.1.\n\t// Continuation of a string (\\z whitespace escaping) is controlled by stringWs.\n\tint nestLevel = 0;\n\tint sepCount = 0;\n\tint stringWs = 0;\n\tif (initStyle == SCE_LUA_LITERALSTRING || initStyle == SCE_LUA_COMMENT ||\n\t\tinitStyle == SCE_LUA_STRING || initStyle == SCE_LUA_CHARACTER) {\n\t\tint lineState = styler.GetLineState(currentLine - 1);\n\t\tnestLevel = lineState >> 9;\n\t\tsepCount = lineState & 0xFF;\n\t\tstringWs = lineState & 0x100;\n\t}\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_LUA_STRINGEOL || initStyle == SCE_LUA_COMMENTLINE || initStyle == SCE_LUA_PREPROCESSOR) {\n\t\tinitStyle = SCE_LUA_DEFAULT;\n\t}\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tif (startPos == 0 && sc.ch == '#') {\n\t\t// shbang line: # is a comment only if first char of the script\n\t\tsc.SetState(SCE_LUA_COMMENTLINE);\n\t}\n\tfor (; sc.More(); sc.Forward()) {\n\t\tif (sc.atLineEnd) {\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tcurrentLine = styler.GetLine(sc.currentPos);\n\t\t\tswitch (sc.state) {\n\t\t\tcase SCE_LUA_LITERALSTRING:\n\t\t\tcase SCE_LUA_COMMENT:\n\t\t\tcase SCE_LUA_STRING:\n\t\t\tcase SCE_LUA_CHARACTER:\n\t\t\t\t// Inside a literal string, block comment or string, we set the line state\n\t\t\t\tstyler.SetLineState(currentLine, (nestLevel << 9) | stringWs | sepCount);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Reset the line state\n\t\t\t\tstyler.SetLineState(currentLine, 0);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (sc.atLineStart && (sc.state == SCE_LUA_STRING)) {\n\t\t\t// Prevent SCE_LUA_STRINGEOL from leaking back to previous line\n\t\t\tsc.SetState(SCE_LUA_STRING);\n\t\t}\n\n\t\t// Handle string line continuation\n\t\tif ((sc.state == SCE_LUA_STRING || sc.state == SCE_LUA_CHARACTER) &&\n\t\t\t\tsc.ch == '\\\\') {\n\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_LUA_OPERATOR) {\n\t\t\tif (sc.ch == ':' && sc.chPrev == ':') {\t// :: <label> :: forward scan\n\t\t\t\tsc.Forward();\n\t\t\t\tSci_Position ln = 0;\n\t\t\t\twhile (IsASpaceOrTab(sc.GetRelative(ln)))\t// skip over spaces/tabs\n\t\t\t\t\tln++;\n\t\t\t\tSci_Position ws1 = ln;\n\t\t\t\tif (setWordStart.Contains(sc.GetRelative(ln))) {\n\t\t\t\t\tint c, i = 0;\n\t\t\t\t\tchar s[100];\n\t\t\t\t\twhile (setWord.Contains(c = sc.GetRelative(ln))) {\t// get potential label\n\t\t\t\t\t\tif (i < 90)\n\t\t\t\t\t\t\ts[i++] = static_cast<char>(c);\n\t\t\t\t\t\tln++;\n\t\t\t\t\t}\n\t\t\t\t\ts[i] = '\\0'; Sci_Position lbl = ln;\n\t\t\t\t\tif (!keywords.InList(s)) {\n\t\t\t\t\t\twhile (IsASpaceOrTab(sc.GetRelative(ln)))\t// skip over spaces/tabs\n\t\t\t\t\t\t\tln++;\n\t\t\t\t\t\tSci_Position ws2 = ln - lbl;\n\t\t\t\t\t\tif (sc.GetRelative(ln) == ':' && sc.GetRelative(ln + 1) == ':') {\n\t\t\t\t\t\t\t// final :: found, complete valid label construct\n\t\t\t\t\t\t\tsc.ChangeState(SCE_LUA_LABEL);\n\t\t\t\t\t\t\tif (ws1) {\n\t\t\t\t\t\t\t\tsc.SetState(SCE_LUA_DEFAULT);\n\t\t\t\t\t\t\t\tsc.ForwardBytes(ws1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsc.SetState(SCE_LUA_LABEL);\n\t\t\t\t\t\t\tsc.ForwardBytes(lbl - ws1);\n\t\t\t\t\t\t\tif (ws2) {\n\t\t\t\t\t\t\t\tsc.SetState(SCE_LUA_DEFAULT);\n\t\t\t\t\t\t\t\tsc.ForwardBytes(ws2);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsc.SetState(SCE_LUA_LABEL);\n\t\t\t\t\t\t\tsc.ForwardBytes(2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tsc.SetState(SCE_LUA_DEFAULT);\n\t\t} else if (sc.state == SCE_LUA_NUMBER) {\n\t\t\t// We stop the number definition on non-numerical non-dot non-eEpP non-sign non-hexdigit char\n\t\t\tif (!setNumber.Contains(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_LUA_DEFAULT);\n\t\t\t} else if (sc.ch == '-' || sc.ch == '+') {\n\t\t\t\tif (!setExponent.Contains(sc.chPrev))\n\t\t\t\t\tsc.SetState(SCE_LUA_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_LUA_IDENTIFIER) {\n\t\t\tif (!(setWord.Contains(sc.ch) || sc.ch == '.') || sc.Match('.', '.')) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD);\n\t\t\t\t\tif (strcmp(s, \"goto\") == 0) {\t// goto <label> forward scan\n\t\t\t\t\t\tsc.SetState(SCE_LUA_DEFAULT);\n\t\t\t\t\t\twhile (IsASpaceOrTab(sc.ch) && !sc.atLineEnd)\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\tif (setWordStart.Contains(sc.ch)) {\n\t\t\t\t\t\t\tsc.SetState(SCE_LUA_LABEL);\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\twhile (setWord.Contains(sc.ch))\n\t\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t\t\tif (keywords.InList(s))\n\t\t\t\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsc.SetState(SCE_LUA_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD2);\n\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD3);\n\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD4);\n\t\t\t\t} else if (keywords5.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD5);\n\t\t\t\t} else if (keywords6.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD6);\n\t\t\t\t} else if (keywords7.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD7);\n\t\t\t\t} else if (keywords8.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_LUA_WORD8);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_LUA_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_LUA_COMMENTLINE || sc.state == SCE_LUA_PREPROCESSOR) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_LUA_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_LUA_STRING) {\n\t\t\tif (stringWs) {\n\t\t\t\tif (!IsASpace(sc.ch))\n\t\t\t\t\tstringWs = 0;\n\t\t\t}\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (setEscapeSkip.Contains(sc.chNext)) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (sc.chNext == 'z') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tstringWs = 0x100;\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_LUA_DEFAULT);\n\t\t\t} else if (stringWs == 0 && sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_LUA_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_LUA_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_LUA_CHARACTER) {\n\t\t\tif (stringWs) {\n\t\t\t\tif (!IsASpace(sc.ch))\n\t\t\t\t\tstringWs = 0;\n\t\t\t}\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (setEscapeSkip.Contains(sc.chNext)) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (sc.chNext == 'z') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tstringWs = 0x100;\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.ForwardSetState(SCE_LUA_DEFAULT);\n\t\t\t} else if (stringWs == 0 && sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_LUA_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_LUA_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_LUA_LITERALSTRING || sc.state == SCE_LUA_COMMENT) {\n\t\t\tif (sc.ch == '[') {\n\t\t\t\tint sep = LongDelimCheck(sc);\n\t\t\t\tif (sep == 1 && sepCount == 1) {    // [[-only allowed to nest\n\t\t\t\t\tnestLevel++;\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == ']') {\n\t\t\t\tint sep = LongDelimCheck(sc);\n\t\t\t\tif (sep == 1 && sepCount == 1) {    // un-nest with ]]-only\n\t\t\t\t\tnestLevel--;\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tif (nestLevel == 0) {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_LUA_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t} else if (sep > 1 && sep == sepCount) {   // ]=]-style delim\n\t\t\t\t\tsc.Forward(sep);\n\t\t\t\t\tsc.ForwardSetState(SCE_LUA_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_LUA_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_LUA_NUMBER);\n\t\t\t\tif (sc.ch == '0' && toupper(sc.chNext) == 'X') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (setWordStart.Contains(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_LUA_IDENTIFIER);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_LUA_STRING);\n\t\t\t\tstringWs = 0;\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_LUA_CHARACTER);\n\t\t\t\tstringWs = 0;\n\t\t\t} else if (sc.ch == '[') {\n\t\t\t\tsepCount = LongDelimCheck(sc);\n\t\t\t\tif (sepCount == 0) {\n\t\t\t\t\tsc.SetState(SCE_LUA_OPERATOR);\n\t\t\t\t} else {\n\t\t\t\t\tnestLevel = 1;\n\t\t\t\t\tsc.SetState(SCE_LUA_LITERALSTRING);\n\t\t\t\t\tsc.Forward(sepCount);\n\t\t\t\t}\n\t\t\t} else if (sc.Match('-', '-')) {\n\t\t\t\tsc.SetState(SCE_LUA_COMMENTLINE);\n\t\t\t\tif (sc.Match(\"--[\")) {\n\t\t\t\t\tsc.Forward(2);\n\t\t\t\t\tsepCount = LongDelimCheck(sc);\n\t\t\t\t\tif (sepCount > 0) {\n\t\t\t\t\t\tnestLevel = 1;\n\t\t\t\t\t\tsc.ChangeState(SCE_LUA_COMMENT);\n\t\t\t\t\t\tsc.Forward(sepCount);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.atLineStart && sc.Match('$')) {\n\t\t\t\tsc.SetState(SCE_LUA_PREPROCESSOR);\t// Obsolete since Lua 4.0, but still in old code\n\t\t\t} else if (setLuaOperator.Contains(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_LUA_OPERATOR);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (setWord.Contains(sc.chPrev) || sc.chPrev == '.') {\n\t\tchar s[100];\n\t\tsc.GetCurrent(s, sizeof(s));\n\t\tif (keywords.InList(s)) {\n\t\t\tsc.ChangeState(SCE_LUA_WORD);\n\t\t} else if (keywords2.InList(s)) {\n\t\t\tsc.ChangeState(SCE_LUA_WORD2);\n\t\t} else if (keywords3.InList(s)) {\n\t\t\tsc.ChangeState(SCE_LUA_WORD3);\n\t\t} else if (keywords4.InList(s)) {\n\t\t\tsc.ChangeState(SCE_LUA_WORD4);\n\t\t} else if (keywords5.InList(s)) {\n\t\t\tsc.ChangeState(SCE_LUA_WORD5);\n\t\t} else if (keywords6.InList(s)) {\n\t\t\tsc.ChangeState(SCE_LUA_WORD6);\n\t\t} else if (keywords7.InList(s)) {\n\t\t\tsc.ChangeState(SCE_LUA_WORD7);\n\t\t} else if (keywords8.InList(s)) {\n\t\t\tsc.ChangeState(SCE_LUA_WORD8);\n\t\t}\n\t}\n\n\tsc.Complete();\n}\n\nstatic void FoldLuaDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[],\n                       Accessor &styler) {\n\tSci_PositionU lengthDoc = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tint styleNext = styler.StyleAt(startPos);\n\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (style == SCE_LUA_WORD) {\n\t\t\tif (ch == 'i' || ch == 'd' || ch == 'f' || ch == 'e' || ch == 'r' || ch == 'u') {\n\t\t\t\tchar s[10] = \"\";\n\t\t\t\tfor (Sci_PositionU j = 0; j < 8; j++) {\n\t\t\t\t\tif (!iswordchar(styler[i + j])) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\ts[j] = styler[i + j];\n\t\t\t\t\ts[j + 1] = '\\0';\n\t\t\t\t}\n\n\t\t\t\tif ((strcmp(s, \"if\") == 0) || (strcmp(s, \"do\") == 0) || (strcmp(s, \"function\") == 0) || (strcmp(s, \"repeat\") == 0)) {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t}\n\t\t\t\tif ((strcmp(s, \"end\") == 0) || (strcmp(s, \"elseif\") == 0) || (strcmp(s, \"until\") == 0)) {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (style == SCE_LUA_OPERATOR) {\n\t\t\tif (ch == '{' || ch == '(') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == '}' || ch == ')') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t} else if (style == SCE_LUA_LITERALSTRING || style == SCE_LUA_COMMENT) {\n\t\t\tif (ch == '[') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == ']') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact) {\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\t}\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0)) {\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t}\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const luaWordListDesc[] = {\n\t\"Keywords\",\n\t\"Basic functions\",\n\t\"String, (table) & math functions\",\n\t\"(coroutines), I/O & system facilities\",\n\t\"user1\",\n\t\"user2\",\n\t\"user3\",\n\t\"user4\",\n\t0\n};\n\nLexerModule lmLua(SCLEX_LUA, ColouriseLuaDoc, \"lua\", FoldLuaDoc, luaWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMMIXAL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexMMIXAL.cxx\n ** Lexer for MMIX Assembler Language.\n ** Written by Christoph Hsler <christoph.hoesler@student.uni-tuebingen.de>\n ** For information about MMIX visit http://www-cs-faculty.stanford.edu/~knuth/mmix.html\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == ':' || ch == '_');\n}\n\ninline bool isMMIXALOperator(char ch) {\n\tif (IsASCII(ch) && isalnum(ch))\n\t\treturn false;\n\tif (ch == '+' || ch == '-' || ch == '|' || ch == '^' ||\n\t\tch == '*' || ch == '/' ||\n\t\tch == '%' || ch == '<' || ch == '>' || ch == '&' ||\n\t\tch == '~' || ch == '$' ||\n\t\tch == ',' || ch == '(' || ch == ')' ||\n\t\tch == '[' || ch == ']')\n\t\treturn true;\n\treturn false;\n}\n\nstatic void ColouriseMMIXALDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler) {\n\n\tWordList &opcodes = *keywordlists[0];\n\tWordList &special_register = *keywordlists[1];\n\tWordList &predef_symbols = *keywordlists[2];\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward())\n\t{\n\t\t// No EOL continuation\n\t\tif (sc.atLineStart) {\n\t\t\tif (sc.ch ==  '@' && sc.chNext == 'i') {\n\t\t\t\tsc.SetState(SCE_MMIXAL_INCLUDE);\n\t\t\t} else {\n\t\t\t\tsc.SetState(SCE_MMIXAL_LEADWS);\n\t\t\t}\n\t\t}\n\n\t\t// Check if first non whitespace character in line is alphanumeric\n\t\tif (sc.state == SCE_MMIXAL_LEADWS && !isspace(sc.ch)) {\t// LEADWS\n\t\t\tif(!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_COMMENT);\n\t\t\t} else {\n\t\t\t\tif(sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_MMIXAL_LABEL);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_MMIXAL_OPCODE_PRE);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_MMIXAL_OPERATOR) {\t\t\t// OPERATOR\n\t\t\tsc.SetState(SCE_MMIXAL_OPERANDS);\n\t\t} else if (sc.state == SCE_MMIXAL_NUMBER) {\t\t// NUMBER\n\t\t\tif (!isdigit(sc.ch)) {\n\t\t\t\tif (IsAWordChar(sc.ch)) {\n\t\t\t\t\tchar s[100];\n\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\tsc.ChangeState(SCE_MMIXAL_REF);\n\t\t\t\t\tsc.SetState(SCE_MMIXAL_REF);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_MMIXAL_OPERANDS);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_MMIXAL_LABEL) {\t\t\t// LABEL\n\t\t\tif (!IsAWordChar(sc.ch) ) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_OPCODE_PRE);\n\t\t\t}\n\t\t} else if (sc.state == SCE_MMIXAL_REF) {\t\t\t// REF\n\t\t\tif (!IsAWordChar(sc.ch) ) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tif (*s == ':') {\t// ignore base prefix for match\n\t\t\t\t\tfor (size_t i = 0; i != sizeof(s); ++i) {\n\t\t\t\t\t\t*(s+i) = *(s+i+1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (special_register.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_MMIXAL_REGISTER);\n\t\t\t\t} else if (predef_symbols.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_MMIXAL_SYMBOL);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_MMIXAL_OPERANDS);\n\t\t\t}\n\t\t} else if (sc.state == SCE_MMIXAL_OPCODE_PRE) {\t// OPCODE_PRE\n\t\t\t\tif (!isspace(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_MMIXAL_OPCODE);\n\t\t\t\t}\n\t\t} else if (sc.state == SCE_MMIXAL_OPCODE) {\t\t// OPCODE\n\t\t\tif (!IsAWordChar(sc.ch) ) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tif (opcodes.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_MMIXAL_OPCODE_VALID);\n\t\t\t\t} else {\n\t\t\t\t\tsc.ChangeState(SCE_MMIXAL_OPCODE_UNKNOWN);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_MMIXAL_OPCODE_POST);\n\t\t\t}\n\t\t} else if (sc.state == SCE_MMIXAL_STRING) {\t\t// STRING\n\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_MMIXAL_OPERANDS);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_MMIXAL_OPERANDS);\n\t\t\t}\n\t\t} else if (sc.state == SCE_MMIXAL_CHAR) {\t\t\t// CHAR\n\t\t\tif (sc.ch == '\\'') {\n\t\t\t\tsc.ForwardSetState(SCE_MMIXAL_OPERANDS);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_MMIXAL_OPERANDS);\n\t\t\t}\n\t\t} else if (sc.state == SCE_MMIXAL_REGISTER) {\t\t// REGISTER\n\t\t\tif (!isdigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_OPERANDS);\n\t\t\t}\n\t\t} else if (sc.state == SCE_MMIXAL_HEX) {\t\t\t// HEX\n\t\t\tif (!isxdigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_OPERANDS);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_MMIXAL_OPCODE_POST ||\t\t// OPCODE_POST\n\t\t\tsc.state == SCE_MMIXAL_OPERANDS) {\t\t\t// OPERANDS\n\t\t\tif (sc.state == SCE_MMIXAL_OPERANDS && isspace(sc.ch)) {\n\t\t\t\tif (!sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_MMIXAL_COMMENT);\n\t\t\t\t}\n\t\t\t} else if (isdigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_NUMBER);\n\t\t\t} else if (IsAWordChar(sc.ch) || sc.Match('@')) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_REF);\n\t\t\t} else if (sc.Match('\\\"')) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_STRING);\n\t\t\t} else if (sc.Match('\\'')) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_CHAR);\n\t\t\t} else if (sc.Match('$')) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_REGISTER);\n\t\t\t} else if (sc.Match('#')) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_HEX);\n\t\t\t} else if (isMMIXALOperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_MMIXAL_OPERATOR);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic const char * const MMIXALWordListDesc[] = {\n\t\"Operation Codes\",\n\t\"Special Register\",\n\t\"Predefined Symbols\",\n\t0\n};\n\nLexerModule lmMMIXAL(SCLEX_MMIXAL, ColouriseMMIXALDoc, \"mmixal\", 0, MMIXALWordListDesc);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMPT.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexMPT.cxx\n ** Lexer for MPT specific files. Based on LexOthers.cxx\n ** LOT = the text log file created by the MPT application while running a test program\n ** Other MPT specific files to be added later.\n **/\n// Copyright 2003 by Marius Gheorghe <mgheorghe@cabletest.com>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic int GetLotLineState(std::string &line) {\n\tif (line.length()) {\n\t\t// Most of the time the first non-blank character in line determines that line's type\n\t\t// Now finds the first non-blank character\n\t\tunsigned i; // Declares counter here to make it persistent after the for loop\n\t\tfor (i = 0; i < line.length(); ++i) {\n\t\t\tif (!(IsASCII(line[i]) && isspace(line[i])))\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Checks if it was a blank line\n\t\tif (i == line.length())\n\t\t\treturn SCE_LOT_DEFAULT;\n\n\t\tswitch (line[i]) {\n\t\tcase '*': // Fail measurement\n\t\t\treturn SCE_LOT_FAIL;\n\n\t\tcase '+': // Header\n\t\tcase '|': // Header\n\t\t\treturn SCE_LOT_HEADER;\n\n\t\tcase ':': // Set test limits\n\t\t\treturn SCE_LOT_SET;\n\n\t\tcase '-': // Section break\n\t\t\treturn SCE_LOT_BREAK;\n\n\t\tdefault:  // Any other line\n\t\t\t// Checks for message at the end of lot file\n\t\t\tif (line.find(\"PASSED\") != std::string::npos) {\n\t\t\t\treturn SCE_LOT_PASS;\n\t\t\t}\n\t\t\telse if (line.find(\"FAILED\") != std::string::npos) {\n\t\t\t\treturn SCE_LOT_FAIL;\n\t\t\t}\n\t\t\telse if (line.find(\"ABORTED\") != std::string::npos) {\n\t\t\t\treturn SCE_LOT_ABORT;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn i ? SCE_LOT_PASS : SCE_LOT_DEFAULT;\n\t\t\t}\n\t\t}\n\t}\n\telse {\n\t\treturn SCE_LOT_DEFAULT;\n\t}\n}\n\nstatic void ColourizeLotDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tbool atLineStart = true;// Arms the 'at line start' flag\n\tchar chNext = styler.SafeGetCharAt(startPos);\n\tstd::string line(\"\");\n\tline.reserve(256);\t// Lot lines are less than 256 chars long most of the time. This should avoid reallocations\n\n\t// Styles LOT document\n\tSci_PositionU i;\t\t\t// Declared here because it's used after the for loop\n\tfor (i = startPos; i < startPos + length; ++i) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tline += ch;\n\t\tatLineStart = false;\n\n\t\t// LOT files are only used on the Win32 platform, thus EOL == CR+LF\n\t\t// Searches for the end of line\n\t\tif (ch == '\\r' && chNext == '\\n') {\n\t\t\tline += chNext; // Gets the '\\n'\n\t\t\t++i; // Advances past the '\\n'\n\t\t\tchNext = styler.SafeGetCharAt(i + 1); // Gets character of next line\n\t\t\tstyler.ColourTo(i, GetLotLineState(line));\n\t\t\tline = \"\";\n\t\t\tatLineStart = true; // Arms flag for next line\n\t\t}\n\t}\n\n\t// Last line may not have a line ending\n\tif (!atLineStart) {\n\t\tstyler.ColourTo(i - 1, GetLotLineState(line));\n\t}\n}\n\n// Folds an MPT LOT file: the blocks that can be folded are:\n// sections (headed by a set line)\n// passes (contiguous pass results within a section)\n// fails (contiguous fail results within a section)\nstatic void FoldLotDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 0) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\n\tchar chNext = styler.SafeGetCharAt(startPos);\n\tint style = SCE_LOT_DEFAULT;\n\tint styleNext = styler.StyleAt(startPos);\n\tint lev = SC_FOLDLEVELBASE;\n\n\t// Gets style of previous line if not at the beginning of the document\n\tif (startPos > 1)\n\t\tstyle = styler.StyleAt(startPos - 2);\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif (ch == '\\r' && chNext == '\\n') {\n\t\t\t// TO DO:\n\t\t\t// Should really get the state of the previous line from the styler\n\t\t\tint stylePrev = style;\n\t\t\tstyle = styleNext;\n\t\t\tstyleNext = styler.StyleAt(i + 2);\n\n\t\t\tswitch (style) {\n/*\n\t\t\tcase SCE_LOT_SET:\n\t\t\t\tlev = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\t\t\tbreak;\n*/\n\t\t\tcase SCE_LOT_FAIL:\n/*\n\t\t\t\tif (stylePrev != SCE_LOT_FAIL)\n\t\t\t\t\tlev = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\t\t\telse\n\t\t\t\t\tlev = SC_FOLDLEVELBASE + 1;\n*/\n\t\t\t\tlev = SC_FOLDLEVELBASE;\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tif (lineCurrent == 0 || stylePrev == SCE_LOT_FAIL)\n\t\t\t\t\tlev = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\t\t\telse\n\t\t\t\t\tlev = SC_FOLDLEVELBASE + 1;\n\n\t\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (lev != styler.LevelAt(lineCurrent))\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\n\t\t\tlineCurrent++;\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, lev | flagsNext);\n}\n\nstatic const char * const emptyWordListDesc[] = {\n\t0\n};\n\nLexerModule lmLot(SCLEX_LOT, ColourizeLotDoc, \"lot\", FoldLotDoc, emptyWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMSSQL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexMSSQL.cxx\n ** Lexer for MSSQL.\n **/\n// By Filip Yaghob <fyaghob@gmail.com>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#define KW_MSSQL_STATEMENTS         0\n#define KW_MSSQL_DATA_TYPES         1\n#define KW_MSSQL_SYSTEM_TABLES      2\n#define KW_MSSQL_GLOBAL_VARIABLES   3\n#define KW_MSSQL_FUNCTIONS          4\n#define KW_MSSQL_STORED_PROCEDURES  5\n#define KW_MSSQL_OPERATORS          6\n\nstatic char classifyWordSQL(Sci_PositionU start,\n                            Sci_PositionU end,\n                            WordList *keywordlists[],\n                            Accessor &styler,\n                            unsigned int actualState,\n\t\t\t\t\t\t\tunsigned int prevState) {\n\tchar s[256];\n\tbool wordIsNumber = isdigit(styler[start]) || (styler[start] == '.');\n\n\tWordList &kwStatements          = *keywordlists[KW_MSSQL_STATEMENTS];\n    WordList &kwDataTypes           = *keywordlists[KW_MSSQL_DATA_TYPES];\n    WordList &kwSystemTables        = *keywordlists[KW_MSSQL_SYSTEM_TABLES];\n    WordList &kwGlobalVariables     = *keywordlists[KW_MSSQL_GLOBAL_VARIABLES];\n    WordList &kwFunctions           = *keywordlists[KW_MSSQL_FUNCTIONS];\n    WordList &kwStoredProcedures    = *keywordlists[KW_MSSQL_STORED_PROCEDURES];\n    WordList &kwOperators           = *keywordlists[KW_MSSQL_OPERATORS];\n\n\tfor (Sci_PositionU i = 0; i < end - start + 1 && i < 128; i++) {\n\t\ts[i] = static_cast<char>(tolower(styler[start + i]));\n\t\ts[i + 1] = '\\0';\n\t}\n\tchar chAttr = SCE_MSSQL_IDENTIFIER;\n\n\tif (actualState == SCE_MSSQL_GLOBAL_VARIABLE) {\n\n        if (kwGlobalVariables.InList(&s[2]))\n            chAttr = SCE_MSSQL_GLOBAL_VARIABLE;\n\n\t} else if (wordIsNumber) {\n\t\tchAttr = SCE_MSSQL_NUMBER;\n\n\t} else if (prevState == SCE_MSSQL_DEFAULT_PREF_DATATYPE) {\n\t\t// Look first in datatypes\n        if (kwDataTypes.InList(s))\n            chAttr = SCE_MSSQL_DATATYPE;\n\t\telse if (kwOperators.InList(s))\n\t\t\tchAttr = SCE_MSSQL_OPERATOR;\n\t\telse if (kwStatements.InList(s))\n\t\t\tchAttr = SCE_MSSQL_STATEMENT;\n\t\telse if (kwSystemTables.InList(s))\n\t\t\tchAttr = SCE_MSSQL_SYSTABLE;\n\t\telse if (kwFunctions.InList(s))\n            chAttr = SCE_MSSQL_FUNCTION;\n\t\telse if (kwStoredProcedures.InList(s))\n\t\t\tchAttr = SCE_MSSQL_STORED_PROCEDURE;\n\n\t} else {\n\t\tif (kwOperators.InList(s))\n\t\t\tchAttr = SCE_MSSQL_OPERATOR;\n\t\telse if (kwStatements.InList(s))\n\t\t\tchAttr = SCE_MSSQL_STATEMENT;\n\t\telse if (kwSystemTables.InList(s))\n\t\t\tchAttr = SCE_MSSQL_SYSTABLE;\n\t\telse if (kwFunctions.InList(s))\n\t\t\tchAttr = SCE_MSSQL_FUNCTION;\n\t\telse if (kwStoredProcedures.InList(s))\n\t\t\tchAttr = SCE_MSSQL_STORED_PROCEDURE;\n\t\telse if (kwDataTypes.InList(s))\n\t\t\tchAttr = SCE_MSSQL_DATATYPE;\n\t}\n\n\tstyler.ColourTo(end, chAttr);\n\n\treturn chAttr;\n}\n\nstatic void ColouriseMSSQLDoc(Sci_PositionU startPos, Sci_Position length,\n                              int initStyle, WordList *keywordlists[], Accessor &styler) {\n\n\n\tstyler.StartAt(startPos);\n\n\tbool fold = styler.GetPropertyInt(\"fold\") != 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint spaceFlags = 0;\n\n\tint state = initStyle;\n\tint prevState = initStyle;\n\tchar chPrev = ' ';\n\tchar chNext = styler[startPos];\n\tstyler.StartSegment(startPos);\n\tSci_PositionU lengthDoc = startPos + length;\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n')) {\n\t\t\tint indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags);\n\t\t\tint lev = indentCurrent;\n\t\t\tif (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {\n\t\t\t\t// Only non whitespace lines can be headers\n\t\t\t\tint indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags);\n\t\t\t\tif (indentCurrent < (indentNext & ~SC_FOLDLEVELWHITEFLAG)) {\n\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (fold) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t}\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\tchNext = styler.SafeGetCharAt(i + 2);\n\t\t\tchPrev = ' ';\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// When the last char isn't part of the state (have to deal with it too)...\n\t\tif ( (state == SCE_MSSQL_IDENTIFIER) ||\n                    (state == SCE_MSSQL_STORED_PROCEDURE) ||\n                    (state == SCE_MSSQL_DATATYPE) ||\n                    //~ (state == SCE_MSSQL_COLUMN_NAME) ||\n                    (state == SCE_MSSQL_FUNCTION) ||\n                    //~ (state == SCE_MSSQL_GLOBAL_VARIABLE) ||\n                    (state == SCE_MSSQL_VARIABLE)) {\n\t\t\tif (!iswordchar(ch)) {\n\t\t\t\tint stateTmp;\n\n                if ((state == SCE_MSSQL_VARIABLE) || (state == SCE_MSSQL_COLUMN_NAME)) {\n                    styler.ColourTo(i - 1, state);\n\t\t\t\t\tstateTmp = state;\n                } else\n                    stateTmp = classifyWordSQL(styler.GetStartSegment(), i - 1, keywordlists, styler, state, prevState);\n\n\t\t\t\tprevState = state;\n\n\t\t\t\tif (stateTmp == SCE_MSSQL_IDENTIFIER || stateTmp == SCE_MSSQL_VARIABLE)\n\t\t\t\t\tstate = SCE_MSSQL_DEFAULT_PREF_DATATYPE;\n\t\t\t\telse\n\t\t\t\t\tstate = SCE_MSSQL_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_MSSQL_LINE_COMMENT) {\n\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_MSSQL_GLOBAL_VARIABLE) {\n\t\t\tif ((ch != '@') && !iswordchar(ch)) {\n\t\t\t\tclassifyWordSQL(styler.GetStartSegment(), i - 1, keywordlists, styler, state, prevState);\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_DEFAULT;\n\t\t\t}\n\t\t}\n\n\t\t// If is the default or one of the above succeeded\n\t\tif (state == SCE_MSSQL_DEFAULT || state == SCE_MSSQL_DEFAULT_PREF_DATATYPE) {\n\t\t\tif (iswordstart(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_IDENTIFIER;\n\t\t\t} else if (ch == '/' && chNext == '*') {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_COMMENT;\n\t\t\t} else if (ch == '-' && chNext == '-') {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_LINE_COMMENT;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_STRING;\n\t\t\t} else if (ch == '\"') {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_COLUMN_NAME;\n\t\t\t} else if (ch == '[') {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_COLUMN_NAME_2;\n\t\t\t} else if (isoperator(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);\n\t\t\t\tstyler.ColourTo(i, SCE_MSSQL_OPERATOR);\n                //~ style = SCE_MSSQL_DEFAULT;\n\t\t\t\tprevState = state;\n\t\t\t\tstate = SCE_MSSQL_DEFAULT;\n\t\t\t} else if (ch == '@') {\n                styler.ColourTo(i - 1, SCE_MSSQL_DEFAULT);\n\t\t\t\tprevState = state;\n                if (chNext == '@') {\n                    state = SCE_MSSQL_GLOBAL_VARIABLE;\n//                    i += 2;\n                } else\n                    state = SCE_MSSQL_VARIABLE;\n            }\n\n\n\t\t// When the last char is part of the state...\n\t\t} else if (state == SCE_MSSQL_COMMENT) {\n\t\t\t\tif (ch == '/' && chPrev == '*') {\n\t\t\t\t\tif (((i > (styler.GetStartSegment() + 2)) || ((initStyle == SCE_MSSQL_COMMENT) &&\n\t\t\t\t\t    (styler.GetStartSegment() == startPos)))) {\n\t\t\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\t\t\t//~ state = SCE_MSSQL_COMMENT;\n\t\t\t\t\tprevState = state;\n                        state = SCE_MSSQL_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (state == SCE_MSSQL_STRING) {\n\t\t\t\tif (ch == '\\'') {\n\t\t\t\t\tif ( chNext == '\\'' ) {\n\t\t\t\t\t\ti++;\n\t\t\t\t\tch = chNext;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\t\tprevState = state;\n\t\t\t\t\t\tstate = SCE_MSSQL_DEFAULT;\n\t\t\t\t\t//i++;\n\t\t\t\t\t}\n\t\t\t\t//ch = chNext;\n\t\t\t\t//chNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t}\n\t\t\t} else if (state == SCE_MSSQL_COLUMN_NAME) {\n\t\t\t\tif (ch == '\"') {\n\t\t\t\t\tif (chNext == '\"') {\n\t\t\t\t\t\ti++;\n\t\t\t\t\tch = chNext;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t} else {\n                    styler.ColourTo(i, state);\n\t\t\t\t\tprevState = state;\n\t\t\t\t\tstate = SCE_MSSQL_DEFAULT_PREF_DATATYPE;\n\t\t\t\t\t//i++;\n                }\n                }\n\t\t} else if (state == SCE_MSSQL_COLUMN_NAME_2) {\n\t\t\tif (ch == ']') {\n                styler.ColourTo(i, state);\n\t\t\t\tprevState = state;\n                state = SCE_MSSQL_DEFAULT_PREF_DATATYPE;\n                //i++;\n\t\t\t}\n\t\t}\n\n\t\tchPrev = ch;\n\t}\n\tstyler.ColourTo(lengthDoc - 1, state);\n}\n\nstatic void FoldMSSQLDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tbool inComment = (styler.StyleAt(startPos-1) == SCE_MSSQL_COMMENT);\n    char s[10] = \"\";\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styler.StyleAt(i);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n        // Comment folding\n\t\tif (foldComment) {\n\t\t\tif (!inComment && (style == SCE_MSSQL_COMMENT))\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (inComment && (style != SCE_MSSQL_COMMENT))\n\t\t\t\tlevelCurrent--;\n\t\t\tinComment = (style == SCE_MSSQL_COMMENT);\n\t\t}\n        if (style == SCE_MSSQL_STATEMENT) {\n            // Folding between begin or case and end\n            if (ch == 'b' || ch == 'B' || ch == 'c' || ch == 'C' || ch == 'e' || ch == 'E') {\n                for (Sci_PositionU j = 0; j < 5; j++) {\n\t\t\t\t\tif (!iswordchar(styler[i + j])) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\ts[j] = static_cast<char>(tolower(styler[i + j]));\n\t\t\t\t\ts[j + 1] = '\\0';\n                }\n\t\t\t\tif ((strcmp(s, \"begin\") == 0) || (strcmp(s, \"case\") == 0)) {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t}\n\t\t\t\tif (strcmp(s, \"end\") == 0) {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n            }\n        }\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const sqlWordListDesc[] = {\n\t\"Statements\",\n    \"Data Types\",\n    \"System tables\",\n    \"Global variables\",\n    \"Functions\",\n    \"System Stored Procedures\",\n    \"Operators\",\n\t0,\n};\n\nLexerModule lmMSSQL(SCLEX_MSSQL, ColouriseMSSQLDoc, \"mssql\", FoldMSSQLDoc, sqlWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMagik.cpp",
    "content": "// Scintilla source code edit control\n/**\n * @file LexMagik.cxx\n * Lexer for GE(r) Smallworld(tm) MagikSF\n */\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/**\n * Is it a core character (C isalpha(), exclamation and question mark)\n *\n * \\param  ch The character\n * \\return True if ch is a character, False otherwise\n */\nstatic inline bool IsAlphaCore(int ch) {\n    return (isalpha(ch) || ch == '!' || ch == '?');\n}\n\n/**\n * Is it a character (IsAlphaCore() and underscore)\n *\n * \\param  ch The character\n * \\return True if ch is a character, False otherwise\n */\nstatic inline bool IsAlpha(int ch) {\n    return (IsAlphaCore(ch) || ch == '_');\n}\n\n/**\n * Is it a symbolic character (IsAlpha() and colon)\n *\n * \\param  ch The character\n * \\return True if ch is a character, False otherwise\n */\nstatic inline bool IsAlphaSym(int ch) {\n    return (IsAlpha(ch) || ch == ':');\n}\n\n/**\n * Is it a numerical character (IsAlpha() and 0 - 9)\n *\n * \\param  ch The character\n * \\return True if ch is a character, False otherwise\n */\nstatic inline bool IsAlNum(int ch) {\n    return ((ch >= '0' && ch <= '9') || IsAlpha(ch));\n}\n\n/**\n * Is it a symbolic numerical character (IsAlNum() and colon)\n *\n * \\param  ch The character\n * \\return True if ch is a character, False otherwise\n */\nstatic inline bool IsAlNumSym(int ch) {\n    return (IsAlNum(ch) || ch == ':');\n}\n\n/**\n * The lexer function\n *\n * \\param  startPos Where to start scanning\n * \\param  length Where to scan to\n * \\param  initStyle The style at the initial point, not used in this folder\n * \\param  keywordslists The keywordslists, currently, number 5 is used\n * \\param  styler The styler\n */\nstatic void ColouriseMagikDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *keywordlists[], Accessor &styler) {\n    styler.StartAt(startPos);\n\n    WordList &keywords = *keywordlists[0];\n    WordList &pragmatics = *keywordlists[1];\n    WordList &containers = *keywordlists[2];\n    WordList &flow = *keywordlists[3];\n    WordList &characters = *keywordlists[4];\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\n\tfor (; sc.More(); sc.Forward()) {\n\n    repeat:\n\n        if(sc.ch == '#') {\n            if (sc.chNext == '#') sc.SetState(SCE_MAGIK_HYPER_COMMENT);\n            else sc.SetState(SCE_MAGIK_COMMENT);\n            for(; sc.More() && !(sc.atLineEnd); sc.Forward());\n            sc.SetState(SCE_MAGIK_DEFAULT);\n            goto repeat;\n        }\n\n        if(sc.ch == '\"') {\n            sc.SetState(SCE_MAGIK_STRING);\n\n            if(sc.More())\n            {\n                sc.Forward();\n                for(; sc.More() && sc.ch != '\"'; sc.Forward());\n            }\n\n            sc.ForwardSetState(SCE_MAGIK_DEFAULT);\n            goto repeat;\n        }\n\n\t    // The default state\n\t    if(sc.state == SCE_MAGIK_DEFAULT) {\n\n\t        // A certain keyword has been detected\n\t        if (sc.ch == '_' && (\n                    sc.currentPos == 0 || !IsAlNum(sc.chPrev))) {\n\t            char keyword[50];\n\t            memset(keyword, '\\0', 50);\n\n\t            for(\n                    int scanPosition = 0;\n                    scanPosition < 50;\n                    scanPosition++) {\n\t                char keywordChar = static_cast<char>(\n                        tolower(styler.SafeGetCharAt(\n                            scanPosition +\n                                static_cast<Sci_Position>(sc.currentPos+1), ' ')));\n                    if(IsAlpha(keywordChar)) {\n                        keyword[scanPosition] = keywordChar;\n                    } else {\n                        break;\n                    }\n\t            }\n\n                // It is a pragma\n\t            if(pragmatics.InList(keyword)) {\n\t                sc.SetState(SCE_MAGIK_PRAGMA);\n\t            }\n\n\t            // it is a normal keyword like _local, _self, etc.\n\t            else if(keywords.InList(keyword)) {\n\t                sc.SetState(SCE_MAGIK_KEYWORD);\n\t            }\n\n                // It is a container keyword, such as _method, _proc, etc.\n\t            else if(containers.InList(keyword)) {\n\t                sc.SetState(SCE_MAGIK_CONTAINER);\n\t            }\n\n\t            // It is a flow keyword, such as _for, _if, _try, etc.\n\t            else if(flow.InList(keyword)) {\n\t                sc.SetState(SCE_MAGIK_FLOW);\n\t            }\n\n\t            // Interpret as unknown keyword\n\t            else {\n\t                sc.SetState(SCE_MAGIK_UNKNOWN_KEYWORD);\n\t            }\n\t        }\n\n            // Symbolic expression\n\t        else if(sc.ch == ':' && !IsAlNum(sc.chPrev)) {\n\t            sc.SetState(SCE_MAGIK_SYMBOL);\n\t            bool firstTrip = true;\n\t            for(sc.Forward(); sc.More(); sc.Forward()) {\n\t                if(firstTrip && IsAlphaSym(sc.ch));\n\t                else if(!firstTrip && IsAlNumSym(sc.ch));\n\t                else if(sc.ch == '|') {\n\t                    for(sc.Forward();\n                            sc.More() && sc.ch != '|';\n                            sc.Forward());\n\t                }\n\t                else break;\n\n\t                firstTrip = false;\n\t            }\n\t            sc.SetState(SCE_MAGIK_DEFAULT);\n\t            goto repeat;\n\t        }\n\n            // Identifier (label) expression\n\t        else if(sc.ch == '@') {\n\t            sc.SetState(SCE_MAGIK_IDENTIFIER);\n\t            bool firstTrip = true;\n\t            for(sc.Forward(); sc.More(); sc.Forward()) {\n\t                if(firstTrip && IsAlphaCore(sc.ch)) {\n\t                    firstTrip = false;\n\t                }\n\t                else if(!firstTrip && IsAlpha(sc.ch));\n\t                else break;\n\t            }\n\t            sc.SetState(SCE_MAGIK_DEFAULT);\n\t            goto repeat;\n\t        }\n\n\t        // Start of a character\n            else if(sc.ch == '%') {\n                sc.SetState(SCE_MAGIK_CHARACTER);\n                sc.Forward();\n                char keyword[50];\n\t            memset(keyword, '\\0', 50);\n\n\t            for(\n                    int scanPosition = 0;\n                    scanPosition < 50;\n                    scanPosition++) {\n\t                char keywordChar = static_cast<char>(\n                        tolower(styler.SafeGetCharAt(\n                            scanPosition +\n                                static_cast<int>(sc.currentPos), ' ')));\n                    if(IsAlpha(keywordChar)) {\n                        keyword[scanPosition] = keywordChar;\n                    } else {\n                        break;\n                    }\n\t            }\n\n\t            if(characters.InList(keyword)) {\n\t                sc.Forward(static_cast<int>(strlen(keyword)));\n\t            } else {\n\t                sc.Forward();\n\t            }\n\n                sc.SetState(SCE_MAGIK_DEFAULT);\n                goto repeat;\n            }\n\n            // Operators\n\t        else if(\n                sc.ch == '>' ||\n                sc.ch == '<' ||\n                sc.ch == '.' ||\n                sc.ch == ',' ||\n                sc.ch == '+' ||\n                sc.ch == '-' ||\n                sc.ch == '/' ||\n                sc.ch == '*' ||\n                sc.ch == '~' ||\n                sc.ch == '$' ||\n                sc.ch == '=') {\n                sc.SetState(SCE_MAGIK_OPERATOR);\n            }\n\n            // Braces\n            else if(sc.ch == '(' || sc.ch == ')') {\n                sc.SetState(SCE_MAGIK_BRACE_BLOCK);\n            }\n\n            // Brackets\n            else if(sc.ch == '{' || sc.ch == '}') {\n                sc.SetState(SCE_MAGIK_BRACKET_BLOCK);\n            }\n\n            // Square Brackets\n            else if(sc.ch == '[' || sc.ch == ']') {\n                sc.SetState(SCE_MAGIK_SQBRACKET_BLOCK);\n            }\n\n\n\t    }\n\n\t    // It is an operator\n\t    else if(\n            sc.state == SCE_MAGIK_OPERATOR ||\n            sc.state == SCE_MAGIK_BRACE_BLOCK ||\n            sc.state == SCE_MAGIK_BRACKET_BLOCK ||\n            sc.state == SCE_MAGIK_SQBRACKET_BLOCK) {\n\t        sc.SetState(SCE_MAGIK_DEFAULT);\n\t        goto repeat;\n\t    }\n\n\t    // It is the pragma state\n\t    else if(sc.state == SCE_MAGIK_PRAGMA) {\n\t        if(!IsAlpha(sc.ch)) {\n\t            sc.SetState(SCE_MAGIK_DEFAULT);\n                goto repeat;\n\t        }\n\t    }\n\n\t    // It is the keyword state\n\t    else if(\n            sc.state == SCE_MAGIK_KEYWORD ||\n            sc.state == SCE_MAGIK_CONTAINER ||\n            sc.state == SCE_MAGIK_FLOW ||\n            sc.state == SCE_MAGIK_UNKNOWN_KEYWORD) {\n\t        if(!IsAlpha(sc.ch)) {\n\t            sc.SetState(SCE_MAGIK_DEFAULT);\n\t            goto repeat;\n\t        }\n\t    }\n\t}\n\n\tsc.Complete();\n}\n\n/**\n * The word list description\n */\nstatic const char * const magikWordListDesc[] = {\n    \"Accessors (local, global, self, super, thisthread)\",\n    \"Pragmatic (pragma, private)\",\n    \"Containers (method, block, proc)\",\n    \"Flow (if, then, elif, else)\",\n    \"Characters (space, tab, newline, return)\",\n    \"Fold Containers (method, proc, block, if, loop)\",\n    0};\n\n/**\n * This function detects keywords which are able to have a body. Note that it\n * uses the Fold Containers word description, not the containers description. It\n * only works when the style at that particular position is set on Containers\n * or Flow (number 3 or 4).\n *\n * \\param  keywordslist The list of keywords that are scanned, they should only\n *         contain the start keywords, not the end keywords\n * \\param  The actual keyword\n * \\return 1 if it is a folding start-keyword, -1 if it is a folding end-keyword\n *         0 otherwise\n */\nstatic inline int IsFoldingContainer(WordList &keywordslist, char * keyword) {\n    if(\n        strlen(keyword) > 3 &&\n        keyword[0] == 'e' && keyword[1] == 'n' && keyword[2] == 'd') {\n        if (keywordslist.InList(keyword + 3)) {\n            return -1;\n        }\n\n    } else {\n        if(keywordslist.InList(keyword)) {\n            return 1;\n        }\n    }\n\n    return 0;\n}\n\n/**\n * The folding function\n *\n * \\param  startPos Where to start scanning\n * \\param  length Where to scan to\n * \\param  keywordslists The keywordslists, currently, number 5 is used\n * \\param  styler The styler\n */\nstatic void FoldMagikDoc(Sci_PositionU startPos, Sci_Position length, int,\n    WordList *keywordslists[], Accessor &styler) {\n\n    bool compact = styler.GetPropertyInt(\"fold.compact\") != 0;\n\n    WordList &foldingElements = *keywordslists[5];\n    Sci_Position endPos = startPos + length;\n    Sci_Position line = styler.GetLine(startPos);\n    int level = styler.LevelAt(line) & SC_FOLDLEVELNUMBERMASK;\n    int flags = styler.LevelAt(line) & ~SC_FOLDLEVELNUMBERMASK;\n\n    for(\n        Sci_Position currentPos = startPos;\n        currentPos < endPos;\n        currentPos++) {\n            char currentState = styler.StyleAt(currentPos);\n            char c = styler.SafeGetCharAt(currentPos, ' ');\n            Sci_Position prevLine = styler.GetLine(currentPos - 1);\n            line = styler.GetLine(currentPos);\n\n            // Default situation\n            if(prevLine < line) {\n                styler.SetLevel(line, (level|flags) & ~SC_FOLDLEVELHEADERFLAG);\n                flags = styler.LevelAt(line) & ~SC_FOLDLEVELNUMBERMASK;\n            }\n\n            if(\n                (\n                    currentState == SCE_MAGIK_CONTAINER ||\n                    currentState == SCE_MAGIK_FLOW\n                ) &&\n                c == '_') {\n\n                char keyword[50];\n                memset(keyword, '\\0', 50);\n\n                for(\n                    int scanPosition = 0;\n                    scanPosition < 50;\n                    scanPosition++) {\n                    char keywordChar = static_cast<char>(\n                        tolower(styler.SafeGetCharAt(\n                            scanPosition +\n                                currentPos + 1, ' ')));\n                    if(IsAlpha(keywordChar)) {\n                        keyword[scanPosition] = keywordChar;\n                    } else {\n                        break;\n                    }\n                }\n\n                if(IsFoldingContainer(foldingElements, keyword) > 0) {\n                    styler.SetLevel(\n                        line,\n                        styler.LevelAt(line) | SC_FOLDLEVELHEADERFLAG);\n                    level++;\n                } else if(IsFoldingContainer(foldingElements, keyword) < 0) {\n                    styler.SetLevel(line, styler.LevelAt(line));\n                    level--;\n                }\n            }\n\n            if(\n                compact && (\n                    currentState == SCE_MAGIK_BRACE_BLOCK ||\n                    currentState == SCE_MAGIK_BRACKET_BLOCK ||\n                    currentState == SCE_MAGIK_SQBRACKET_BLOCK)) {\n                if(c == '{' || c == '[' || c == '(') {\n                    styler.SetLevel(\n                        line,\n                        styler.LevelAt(line) | SC_FOLDLEVELHEADERFLAG);\n                    level++;\n                } else if(c == '}' || c == ']' || c == ')') {\n                    styler.SetLevel(line, styler.LevelAt(line));\n                    level--;\n                }\n            }\n        }\n\n}\n\n/**\n * Injecting the module\n */\nLexerModule lmMagikSF(\n    SCLEX_MAGIK, ColouriseMagikDoc, \"magiksf\", FoldMagikDoc, magikWordListDesc);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMake.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexMake.cxx\n ** Lexer for make files.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool AtEOL(Accessor &styler, Sci_PositionU i) {\n\treturn (styler[i] == '\\n') ||\n\t       ((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n'));\n}\n\nstatic void ColouriseMakeLine(\n    char *lineBuffer,\n    Sci_PositionU lengthLine,\n    Sci_PositionU startLine,\n    Sci_PositionU endPos,\n    Accessor &styler) {\n\n\tSci_PositionU i = 0;\n\tSci_Position lastNonSpace = -1;\n\tunsigned int state = SCE_MAKE_DEFAULT;\n\tbool bSpecial = false;\n\n\t// check for a tab character in column 0 indicating a command\n\tbool bCommand = false;\n\tif ((lengthLine > 0) && (lineBuffer[0] == '\\t'))\n\t\tbCommand = true;\n\n\t// Skip initial spaces\n\twhile ((i < lengthLine) && isspacechar(lineBuffer[i])) {\n\t\ti++;\n\t}\n\tif (i < lengthLine) {\n\t\tif (lineBuffer[i] == '#') {\t// Comment\n\t\t\tstyler.ColourTo(endPos, SCE_MAKE_COMMENT);\n\t\t\treturn;\n\t\t}\n\t\tif (lineBuffer[i] == '!') {\t// Special directive\n\t\t\tstyler.ColourTo(endPos, SCE_MAKE_PREPROCESSOR);\n\t\t\treturn;\n\t\t}\n\t}\n\tint varCount = 0;\n\twhile (i < lengthLine) {\n\t\tif (((i + 1) < lengthLine) && (lineBuffer[i] == '$' && lineBuffer[i + 1] == '(')) {\n\t\t\tstyler.ColourTo(startLine + i - 1, state);\n\t\t\tstate = SCE_MAKE_IDENTIFIER;\n\t\t\tvarCount++;\n\t\t} else if (state == SCE_MAKE_IDENTIFIER && lineBuffer[i] == ')') {\n\t\t\tif (--varCount == 0) {\n\t\t\t\tstyler.ColourTo(startLine + i, state);\n\t\t\t\tstate = SCE_MAKE_DEFAULT;\n\t\t\t}\n\t\t}\n\n\t\t// skip identifier and target styling if this is a command line\n\t\tif (!bSpecial && !bCommand) {\n\t\t\tif (lineBuffer[i] == ':') {\n\t\t\t\tif (((i + 1) < lengthLine) && (lineBuffer[i + 1] == '=')) {\n\t\t\t\t\t// it's a ':=', so style as an identifier\n\t\t\t\t\tif (lastNonSpace >= 0)\n\t\t\t\t\t\tstyler.ColourTo(startLine + lastNonSpace, SCE_MAKE_IDENTIFIER);\n\t\t\t\t\tstyler.ColourTo(startLine + i - 1, SCE_MAKE_DEFAULT);\n\t\t\t\t\tstyler.ColourTo(startLine + i + 1, SCE_MAKE_OPERATOR);\n\t\t\t\t} else {\n\t\t\t\t\t// We should check that no colouring was made since the beginning of the line,\n\t\t\t\t\t// to avoid colouring stuff like /OUT:file\n\t\t\t\t\tif (lastNonSpace >= 0)\n\t\t\t\t\t\tstyler.ColourTo(startLine + lastNonSpace, SCE_MAKE_TARGET);\n\t\t\t\t\tstyler.ColourTo(startLine + i - 1, SCE_MAKE_DEFAULT);\n\t\t\t\t\tstyler.ColourTo(startLine + i, SCE_MAKE_OPERATOR);\n\t\t\t\t}\n\t\t\t\tbSpecial = true;\t// Only react to the first ':' of the line\n\t\t\t\tstate = SCE_MAKE_DEFAULT;\n\t\t\t} else if (lineBuffer[i] == '=') {\n\t\t\t\tif (lastNonSpace >= 0)\n\t\t\t\t\tstyler.ColourTo(startLine + lastNonSpace, SCE_MAKE_IDENTIFIER);\n\t\t\t\tstyler.ColourTo(startLine + i - 1, SCE_MAKE_DEFAULT);\n\t\t\t\tstyler.ColourTo(startLine + i, SCE_MAKE_OPERATOR);\n\t\t\t\tbSpecial = true;\t// Only react to the first '=' of the line\n\t\t\t\tstate = SCE_MAKE_DEFAULT;\n\t\t\t}\n\t\t}\n\t\tif (!isspacechar(lineBuffer[i])) {\n\t\t\tlastNonSpace = i;\n\t\t}\n\t\ti++;\n\t}\n\tif (state == SCE_MAKE_IDENTIFIER) {\n\t\tstyler.ColourTo(endPos, SCE_MAKE_IDEOL);\t// Error, variable reference not ended\n\t} else {\n\t\tstyler.ColourTo(endPos, SCE_MAKE_DEFAULT);\n\t}\n}\n\nstatic void ColouriseMakeDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tchar lineBuffer[1024];\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tSci_PositionU linePos = 0;\n\tSci_PositionU startLine = startPos;\n\tfor (Sci_PositionU i = startPos; i < startPos + length; i++) {\n\t\tlineBuffer[linePos++] = styler[i];\n\t\tif (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {\n\t\t\t// End of line (or of line buffer) met, colourise it\n\t\t\tlineBuffer[linePos] = '\\0';\n\t\t\tColouriseMakeLine(lineBuffer, linePos, startLine, i, styler);\n\t\t\tlinePos = 0;\n\t\t\tstartLine = i + 1;\n\t\t}\n\t}\n\tif (linePos > 0) {\t// Last line does not have ending characters\n\t\tColouriseMakeLine(lineBuffer, linePos, startLine, startPos + length - 1, styler);\n\t}\n}\n\nstatic const char *const emptyWordListDesc[] = {\n\t0\n};\n\nLexerModule lmMake(SCLEX_MAKEFILE, ColouriseMakeDoc, \"makefile\", 0, emptyWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMarkdown.cpp",
    "content": "/******************************************************************\n *  LexMarkdown.cxx\n *\n *  A simple Markdown lexer for scintilla.\n *\n *  Includes highlighting for some extra features from the\n *  Pandoc implementation; strikeout, using '#.' as a default\n *  ordered list item marker, and delimited code blocks.\n *\n *  Limitations:\n *\n *  Standard indented code blocks are not highlighted at all,\n *  as it would conflict with other indentation schemes. Use\n *  delimited code blocks for blanket highlighting of an\n *  entire code block.  Embedded HTML is not highlighted either.\n *  Blanket HTML highlighting has issues, because some Markdown\n *  implementations allow Markdown markup inside of the HTML. Also,\n *  there is a following blank line issue that can't be ignored,\n *  explained in the next paragraph. Embedded HTML and code\n *  blocks would be better supported with language specific\n *  highlighting.\n *\n *  The highlighting aims to accurately reflect correct syntax,\n *  but a few restrictions are relaxed. Delimited code blocks are\n *  highlighted, even if the line following the code block is not blank.\n *  Requiring a blank line after a block, breaks the highlighting\n *  in certain cases, because of the way Scintilla ends up calling\n *  the lexer.\n *\n *  Written by Jon Strait - jstrait@moonloop.net\n *\n *  The License.txt file describes the conditions under which this\n *  software may be distributed.\n *\n *****************************************************************/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsNewline(const int ch) {\n    return (ch == '\\n' || ch == '\\r');\n}\n\n// True if can follow ch down to the end with possibly trailing whitespace\nstatic bool FollowToLineEnd(const int ch, const int state, const Sci_PositionU endPos, StyleContext &sc) {\n    Sci_PositionU i = 0;\n    while (sc.GetRelative(++i) == ch)\n        ;\n    // Skip over whitespace\n    while (IsASpaceOrTab(sc.GetRelative(i)) && sc.currentPos + i < endPos)\n        ++i;\n    if (IsNewline(sc.GetRelative(i)) || sc.currentPos + i == endPos) {\n        sc.Forward(i);\n        sc.ChangeState(state);\n        sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n        return true;\n    }\n    else return false;\n}\n\n// Set the state on text section from current to length characters,\n// then set the rest until the newline to default, except for any characters matching token\nstatic void SetStateAndZoom(const int state, const Sci_Position length, const int token, StyleContext &sc) {\n    sc.SetState(state);\n    sc.Forward(length);\n    sc.SetState(SCE_MARKDOWN_DEFAULT);\n    sc.Forward();\n    bool started = false;\n    while (sc.More() && !IsNewline(sc.ch)) {\n        if (sc.ch == token && !started) {\n            sc.SetState(state);\n            started = true;\n        }\n        else if (sc.ch != token) {\n            sc.SetState(SCE_MARKDOWN_DEFAULT);\n            started = false;\n        }\n        sc.Forward();\n    }\n    sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n}\n\n// Does the previous line have more than spaces and tabs?\nstatic bool HasPrevLineContent(StyleContext &sc) {\n    Sci_Position i = 0;\n    // Go back to the previous newline\n    while ((--i + (Sci_Position)sc.currentPos) >= 0 && !IsNewline(sc.GetRelative(i)))\n        ;\n    while ((--i + (Sci_Position)sc.currentPos) >= 0) {\n        if (IsNewline(sc.GetRelative(i)))\n            break;\n        if (!IsASpaceOrTab(sc.GetRelative(i)))\n            return true;\n    }\n    return false;\n}\n\nstatic bool AtTermStart(StyleContext &sc) {\n    return sc.currentPos == 0 || sc.chPrev == 0 || isspacechar(sc.chPrev);\n}\n\nstatic bool IsValidHrule(const Sci_PositionU endPos, StyleContext &sc) {\n    int count = 1;\n    Sci_PositionU i = 0;\n    for (;;) {\n        ++i;\n        int c = sc.GetRelative(i);\n        if (c == sc.ch)\n            ++count;\n        // hit a terminating character\n        else if (!IsASpaceOrTab(c) || sc.currentPos + i == endPos) {\n            // Are we a valid HRULE\n            if ((IsNewline(c) || sc.currentPos + i == endPos) &&\n                    count >= 3 && !HasPrevLineContent(sc)) {\n                sc.SetState(SCE_MARKDOWN_HRULE);\n                sc.Forward(i);\n                sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n                return true;\n            }\n            else {\n                sc.SetState(SCE_MARKDOWN_DEFAULT);\n\t\treturn false;\n            }\n        }\n    }\n}\n\nstatic void ColorizeMarkdownDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                               WordList **, Accessor &styler) {\n    Sci_PositionU endPos = startPos + length;\n    int precharCount = 0;\n    // Don't advance on a new loop iteration and retry at the same position.\n    // Useful in the corner case of having to start at the beginning file position\n    // in the default state.\n    bool freezeCursor = false;\n\n    StyleContext sc(startPos, length, initStyle, styler);\n\n    while (sc.More()) {\n        // Skip past escaped characters\n        if (sc.ch == '\\\\') {\n            sc.Forward();\n            continue;\n        }\n\n        // A blockquotes resets the line semantics\n        if (sc.state == SCE_MARKDOWN_BLOCKQUOTE)\n            sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n\n        // Conditional state-based actions\n        if (sc.state == SCE_MARKDOWN_CODE2) {\n            if (sc.Match(\"``\") && sc.GetRelative(-2) != ' ') {\n                sc.Forward(2);\n                sc.SetState(SCE_MARKDOWN_DEFAULT);\n            }\n        }\n        else if (sc.state == SCE_MARKDOWN_CODE) {\n            if (sc.ch == '`' && sc.chPrev != ' ')\n                sc.ForwardSetState(SCE_MARKDOWN_DEFAULT);\n        }\n        /* De-activated because it gets in the way of other valid indentation\n         * schemes, for example multiple paragraphs inside a list item.\n        // Code block\n        else if (sc.state == SCE_MARKDOWN_CODEBK) {\n            bool d = true;\n            if (IsNewline(sc.ch)) {\n                if (sc.chNext != '\\t') {\n                    for (int c = 1; c < 5; ++c) {\n                        if (sc.GetRelative(c) != ' ')\n                            d = false;\n                    }\n                }\n            }\n            else if (sc.atLineStart) {\n                if (sc.ch != '\\t' ) {\n                    for (int i = 0; i < 4; ++i) {\n                        if (sc.GetRelative(i) != ' ')\n                            d = false;\n                    }\n                }\n            }\n            if (!d)\n                sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n        }\n        */\n        // Strong\n        else if (sc.state == SCE_MARKDOWN_STRONG1) {\n            if (sc.Match(\"**\") && sc.chPrev != ' ') {\n                sc.Forward(2);\n                sc.SetState(SCE_MARKDOWN_DEFAULT);\n            }\n        }\n        else if (sc.state == SCE_MARKDOWN_STRONG2) {\n            if (sc.Match(\"__\") && sc.chPrev != ' ') {\n                sc.Forward(2);\n                sc.SetState(SCE_MARKDOWN_DEFAULT);\n            }\n        }\n        // Emphasis\n        else if (sc.state == SCE_MARKDOWN_EM1) {\n            if (sc.ch == '*' && sc.chPrev != ' ')\n                sc.ForwardSetState(SCE_MARKDOWN_DEFAULT);\n        }\n        else if (sc.state == SCE_MARKDOWN_EM2) {\n            if (sc.ch == '_' && sc.chPrev != ' ')\n                sc.ForwardSetState(SCE_MARKDOWN_DEFAULT);\n        }\n        else if (sc.state == SCE_MARKDOWN_CODEBK) {\n            if (sc.atLineStart && sc.Match(\"~~~\")) {\n                Sci_Position i = 1;\n                while (!IsNewline(sc.GetRelative(i)) && sc.currentPos + i < endPos)\n                    i++;\n                sc.Forward(i);\n                sc.SetState(SCE_MARKDOWN_DEFAULT);\n            }\n        }\n        else if (sc.state == SCE_MARKDOWN_STRIKEOUT) {\n            if (sc.Match(\"~~\") && sc.chPrev != ' ') {\n                sc.Forward(2);\n                sc.SetState(SCE_MARKDOWN_DEFAULT);\n            }\n        }\n        else if (sc.state == SCE_MARKDOWN_LINE_BEGIN) {\n            // Header\n            if (sc.Match(\"######\"))\n                SetStateAndZoom(SCE_MARKDOWN_HEADER6, 6, '#', sc);\n            else if (sc.Match(\"#####\"))\n                SetStateAndZoom(SCE_MARKDOWN_HEADER5, 5, '#', sc);\n            else if (sc.Match(\"####\"))\n                SetStateAndZoom(SCE_MARKDOWN_HEADER4, 4, '#', sc);\n            else if (sc.Match(\"###\"))\n                SetStateAndZoom(SCE_MARKDOWN_HEADER3, 3, '#', sc);\n            else if (sc.Match(\"##\"))\n                SetStateAndZoom(SCE_MARKDOWN_HEADER2, 2, '#', sc);\n            else if (sc.Match(\"#\")) {\n                // Catch the special case of an unordered list\n                if (sc.chNext == '.' && IsASpaceOrTab(sc.GetRelative(2))) {\n                    precharCount = 0;\n                    sc.SetState(SCE_MARKDOWN_PRECHAR);\n                }\n                else\n                    SetStateAndZoom(SCE_MARKDOWN_HEADER1, 1, '#', sc);\n            }\n            // Code block\n            else if (sc.Match(\"~~~\")) {\n                if (!HasPrevLineContent(sc))\n                    sc.SetState(SCE_MARKDOWN_CODEBK);\n                else\n                    sc.SetState(SCE_MARKDOWN_DEFAULT);\n            }\n            else if (sc.ch == '=') {\n                if (HasPrevLineContent(sc) && FollowToLineEnd('=', SCE_MARKDOWN_HEADER1, endPos, sc))\n                    ;\n                else\n                    sc.SetState(SCE_MARKDOWN_DEFAULT);\n            }\n            else if (sc.ch == '-') {\n                if (HasPrevLineContent(sc) && FollowToLineEnd('-', SCE_MARKDOWN_HEADER2, endPos, sc))\n                    ;\n                else {\n                    precharCount = 0;\n                    sc.SetState(SCE_MARKDOWN_PRECHAR);\n                }\n            }\n            else if (IsNewline(sc.ch))\n                sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n            else {\n                precharCount = 0;\n                sc.SetState(SCE_MARKDOWN_PRECHAR);\n            }\n        }\n\n        // The header lasts until the newline\n        else if (sc.state == SCE_MARKDOWN_HEADER1 || sc.state == SCE_MARKDOWN_HEADER2 ||\n                sc.state == SCE_MARKDOWN_HEADER3 || sc.state == SCE_MARKDOWN_HEADER4 ||\n                sc.state == SCE_MARKDOWN_HEADER5 || sc.state == SCE_MARKDOWN_HEADER6) {\n            if (IsNewline(sc.ch))\n                sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n        }\n\n        // New state only within the initial whitespace\n        if (sc.state == SCE_MARKDOWN_PRECHAR) {\n            // Blockquote\n            if (sc.ch == '>' && precharCount < 5)\n                sc.SetState(SCE_MARKDOWN_BLOCKQUOTE);\n            /*\n            // Begin of code block\n            else if (!HasPrevLineContent(sc) && (sc.chPrev == '\\t' || precharCount >= 4))\n                sc.SetState(SCE_MARKDOWN_CODEBK);\n            */\n            // HRule - Total of three or more hyphens, asterisks, or underscores\n            // on a line by themselves\n            else if ((sc.ch == '-' || sc.ch == '*' || sc.ch == '_') && IsValidHrule(endPos, sc))\n                ;\n            // Unordered list\n            else if ((sc.ch == '-' || sc.ch == '*' || sc.ch == '+') && IsASpaceOrTab(sc.chNext)) {\n                sc.SetState(SCE_MARKDOWN_ULIST_ITEM);\n                sc.ForwardSetState(SCE_MARKDOWN_DEFAULT);\n            }\n            // Ordered list\n            else if (IsADigit(sc.ch)) {\n                int digitCount = 0;\n                while (IsADigit(sc.GetRelative(++digitCount)))\n                    ;\n                if (sc.GetRelative(digitCount) == '.' &&\n                        IsASpaceOrTab(sc.GetRelative(digitCount + 1))) {\n                    sc.SetState(SCE_MARKDOWN_OLIST_ITEM);\n                    sc.Forward(digitCount + 1);\n                    sc.SetState(SCE_MARKDOWN_DEFAULT);\n                }\n            }\n            // Alternate Ordered list\n            else if (sc.ch == '#' && sc.chNext == '.' && IsASpaceOrTab(sc.GetRelative(2))) {\n                sc.SetState(SCE_MARKDOWN_OLIST_ITEM);\n                sc.Forward(2);\n                sc.SetState(SCE_MARKDOWN_DEFAULT);\n            }\n            else if (sc.ch != ' ' || precharCount > 2)\n                sc.SetState(SCE_MARKDOWN_DEFAULT);\n            else\n                ++precharCount;\n        }\n\n        // New state anywhere in doc\n        if (sc.state == SCE_MARKDOWN_DEFAULT) {\n            if (sc.atLineStart && sc.ch == '#') {\n                sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n                freezeCursor = true;\n            }\n            // Links and Images\n            if (sc.Match(\"![\") || sc.ch == '[') {\n                Sci_Position i = 0, j = 0, k = 0;\n                Sci_Position len = endPos - sc.currentPos;\n                while (i < len && (sc.GetRelative(++i) != ']' || sc.GetRelative(i - 1) == '\\\\'))\n                    ;\n                if (sc.GetRelative(i) == ']') {\n                    j = i;\n                    if (sc.GetRelative(++i) == '(') {\n                        while (i < len && (sc.GetRelative(++i) != ')' || sc.GetRelative(i - 1) == '\\\\'))\n                            ;\n                        if (sc.GetRelative(i) == ')')\n                            k = i;\n                    }\n                    else if (sc.GetRelative(i) == '[' || sc.GetRelative(++i) == '[') {\n                        while (i < len && (sc.GetRelative(++i) != ']' || sc.GetRelative(i - 1) == '\\\\'))\n                            ;\n                        if (sc.GetRelative(i) == ']')\n                            k = i;\n                    }\n                }\n                // At least a link text\n                if (j) {\n                    sc.SetState(SCE_MARKDOWN_LINK);\n                    sc.Forward(j);\n                    // Also has a URL or reference portion\n                    if (k)\n                        sc.Forward(k - j);\n                    sc.ForwardSetState(SCE_MARKDOWN_DEFAULT);\n                }\n            }\n            // Code - also a special case for alternate inside spacing\n            if (sc.Match(\"``\") && sc.GetRelative(3) != ' ' && AtTermStart(sc)) {\n                sc.SetState(SCE_MARKDOWN_CODE2);\n                sc.Forward();\n            }\n            else if (sc.ch == '`' && sc.chNext != ' ' && AtTermStart(sc)) {\n                sc.SetState(SCE_MARKDOWN_CODE);\n            }\n            // Strong\n            else if (sc.Match(\"**\") && sc.GetRelative(2) != ' ' && AtTermStart(sc)) {\n                sc.SetState(SCE_MARKDOWN_STRONG1);\n                sc.Forward();\n           }\n            else if (sc.Match(\"__\") && sc.GetRelative(2) != ' ' && AtTermStart(sc)) {\n                sc.SetState(SCE_MARKDOWN_STRONG2);\n                sc.Forward();\n            }\n            // Emphasis\n            else if (sc.ch == '*' && sc.chNext != ' ' && AtTermStart(sc)) {\n                sc.SetState(SCE_MARKDOWN_EM1);\n            }\n            else if (sc.ch == '_' && sc.chNext != ' ' && AtTermStart(sc)) {\n                sc.SetState(SCE_MARKDOWN_EM2);\n            }\n            // Strikeout\n            else if (sc.Match(\"~~\") && sc.GetRelative(2) != ' ' && AtTermStart(sc)) {\n                sc.SetState(SCE_MARKDOWN_STRIKEOUT);\n                sc.Forward();\n            }\n            // Beginning of line\n            else if (IsNewline(sc.ch)) {\n                sc.SetState(SCE_MARKDOWN_LINE_BEGIN);\n            }\n        }\n        // Advance if not holding back the cursor for this iteration.\n        if (!freezeCursor)\n            sc.Forward();\n        freezeCursor = false;\n    }\n    sc.Complete();\n}\n\nLexerModule lmMarkdown(SCLEX_MARKDOWN, ColorizeMarkdownDoc, \"markdown\");\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMatlab.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexMatlab.cxx\n ** Lexer for Matlab.\n ** Written by Jos Fonseca\n **\n ** Changes by Christoph Dalitz 2003/12/04:\n **   - added support for Octave\n **   - Strings can now be included both in single or double quotes\n **\n ** Changes by John Donoghue 2012/04/02\n **   - added block comment (and nested block comments)\n **   - added ... displayed as a comment\n **   - removed unused IsAWord functions\n **   - added some comments\n **\n ** Changes by John Donoghue 2014/08/01\n **   - fix allowed transpose ' after {} operator\n **\n ** Changes by John Donoghue 2016/11/15\n **   - update matlab code folding\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic bool IsMatlabCommentChar(int c) {\n\treturn (c == '%') ;\n}\n\nstatic bool IsOctaveCommentChar(int c) {\n\treturn (c == '%' || c == '#') ;\n}\n\nstatic inline int LowerCase(int c) {\n\tif (c >= 'A' && c <= 'Z')\n\t\treturn 'a' + c - 'A';\n\treturn c;\n}\n\nstatic int CheckKeywordFoldPoint(char *str) {\n\tif (strcmp (\"if\", str) == 0 ||\n\t\tstrcmp (\"for\", str) == 0 ||\n\t\tstrcmp (\"switch\", str) == 0 ||\n\t\tstrcmp (\"try\", str) == 0 ||\n\t\tstrcmp (\"do\", str) == 0 ||\n\t\tstrcmp (\"parfor\", str) == 0 ||\n\t\tstrcmp (\"function\", str) == 0)\n\t\treturn 1;\n\tif (strncmp(\"end\", str, 3) == 0 ||\n\t\tstrcmp(\"until\", str) == 0)\n\t\treturn -1;\n\treturn 0;\n}\n\n\nstatic void ColouriseMatlabOctaveDoc(\n            Sci_PositionU startPos, Sci_Position length, int initStyle,\n            WordList *keywordlists[], Accessor &styler,\n            bool (*IsCommentChar)(int),\n            bool ismatlab) {\n\n\tWordList &keywords = *keywordlists[0];\n\n\tstyler.StartAt(startPos);\n\n\t// boolean for when the ' is allowed to be transpose vs the start/end\n\t// of a string\n\tbool transpose = false;\n\n\t// approximate position of first non space character in a line\n\tint nonSpaceColumn = -1;\n\t// approximate column position of the current character in a line\n\tint column = 0;\n\n        // use the line state of each line to store the block comment depth\n\tSci_Position curLine = styler.GetLine(startPos);\n        int commentDepth = curLine > 0 ? styler.GetLineState(curLine-1) : 0;\n\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward(), column++) {\n\n               \tif(sc.atLineStart) {\n\t\t\t// set the line state to the current commentDepth\n\t\t\tcurLine = styler.GetLine(sc.currentPos);\n                        styler.SetLineState(curLine, commentDepth);\n\n\t\t\t// reset the column to 0, nonSpace to -1 (not set)\n\t\t\tcolumn = 0;\n\t\t\tnonSpaceColumn = -1;\n\t\t}\n\n\t\t// save the column position of first non space character in a line\n\t\tif((nonSpaceColumn == -1) && (! IsASpace(sc.ch)))\n\t\t{\n\t\t\tnonSpaceColumn = column;\n\t\t}\n\n\t\t// check for end of states\n\t\tif (sc.state == SCE_MATLAB_OPERATOR) {\n\t\t\tif (sc.chPrev == '.') {\n\t\t\t\tif (sc.ch == '*' || sc.ch == '/' || sc.ch == '\\\\' || sc.ch == '^') {\n\t\t\t\t\tsc.ForwardSetState(SCE_MATLAB_DEFAULT);\n\t\t\t\t\ttranspose = false;\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tsc.ForwardSetState(SCE_MATLAB_DEFAULT);\n\t\t\t\t\ttranspose = true;\n                                } else if(sc.ch == '.' && sc.chNext == '.') {\n                                        // we werent an operator, but a '...'\n                                        sc.ChangeState(SCE_MATLAB_COMMENT);\n                                        transpose = false;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_MATLAB_DEFAULT);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsc.SetState(SCE_MATLAB_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_MATLAB_KEYWORD) {\n\t\t\tif (!isalnum(sc.ch) && sc.ch != '_') {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.SetState(SCE_MATLAB_DEFAULT);\n\t\t\t\t\ttranspose = false;\n\t\t\t\t} else {\n\t\t\t\t\tsc.ChangeState(SCE_MATLAB_IDENTIFIER);\n\t\t\t\t\tsc.SetState(SCE_MATLAB_DEFAULT);\n\t\t\t\t\ttranspose = true;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_MATLAB_NUMBER) {\n\t\t\tif (!isdigit(sc.ch) && sc.ch != '.'\n\t\t\t        && !(sc.ch == 'e' || sc.ch == 'E')\n\t\t\t        && !((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E'))) {\n\t\t\t\tsc.SetState(SCE_MATLAB_DEFAULT);\n\t\t\t\ttranspose = true;\n\t\t\t}\n\t\t} else if (sc.state == SCE_MATLAB_STRING) {\n\t\t\tif (sc.ch == '\\'') {\n\t\t\t\tif (sc.chNext == '\\'') {\n \t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.ForwardSetState(SCE_MATLAB_DEFAULT);\n \t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_MATLAB_DOUBLEQUOTESTRING) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_MATLAB_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_MATLAB_COMMAND) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_MATLAB_DEFAULT);\n\t\t\t\ttranspose = false;\n\t\t\t}\n\t\t} else if (sc.state == SCE_MATLAB_COMMENT) {\n\t\t\t// end or start of a nested a block comment?\n\t\t\tif( IsCommentChar(sc.ch) && sc.chNext == '}' && nonSpaceColumn == column) {\n                           \tif(commentDepth > 0) commentDepth --;\n\n\t\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\t\tstyler.SetLineState(curLine, commentDepth);\n\t\t\t\tsc.Forward();\n\n\t\t\t\tif (commentDepth == 0) {\n\t\t\t\t\tsc.ForwardSetState(SCE_D_DEFAULT);\n\t\t\t\t\ttranspose = false;\n\t\t\t\t}\n                        }\n                        else if( IsCommentChar(sc.ch) && sc.chNext == '{' && nonSpaceColumn == column)\n                        {\n \t\t\t\tcommentDepth ++;\n\n\t\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\t\tstyler.SetLineState(curLine, commentDepth);\n\t\t\t\tsc.Forward();\n\t\t\t\ttranspose = false;\n\n                        } else if(commentDepth == 0) {\n\t\t\t\t// single line comment\n\t\t\t\tif (sc.atLineEnd || sc.ch == '\\r' || sc.ch == '\\n') {\n\t\t\t\t\tsc.SetState(SCE_MATLAB_DEFAULT);\n\t\t\t\t\ttranspose = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check start of a new state\n\t\tif (sc.state == SCE_MATLAB_DEFAULT) {\n\t\t\tif (IsCommentChar(sc.ch)) {\n\t\t\t\t// ncrement depth if we are a block comment\n\t\t\t\tif(sc.chNext == '{' && nonSpaceColumn == column)\n\t\t\t\t\tcommentDepth ++;\n\t\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\t\tstyler.SetLineState(curLine, commentDepth);\n\t\t\t\tsc.SetState(SCE_MATLAB_COMMENT);\n\t\t\t} else if (sc.ch == '!' && sc.chNext != '=' ) {\n\t\t\t\tif(ismatlab) {\n\t\t\t\t\tsc.SetState(SCE_MATLAB_COMMAND);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_MATLAB_OPERATOR);\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tif (transpose) {\n\t\t\t\t\tsc.SetState(SCE_MATLAB_OPERATOR);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_MATLAB_STRING);\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\"') {\n\t\t\t\tsc.SetState(SCE_MATLAB_DOUBLEQUOTESTRING);\n\t\t\t} else if (isdigit(sc.ch) || (sc.ch == '.' && isdigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_MATLAB_NUMBER);\n\t\t\t} else if (isalpha(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_MATLAB_KEYWORD);\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch)) || sc.ch == '@' || sc.ch == '\\\\') {\n\t\t\t\tif (sc.ch == ')' || sc.ch == ']' || sc.ch == '}') {\n\t\t\t\t\ttranspose = true;\n\t\t\t\t} else {\n\t\t\t\t\ttranspose = false;\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_MATLAB_OPERATOR);\n\t\t\t} else {\n\t\t\t\ttranspose = false;\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void ColouriseMatlabDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                               WordList *keywordlists[], Accessor &styler) {\n\tColouriseMatlabOctaveDoc(startPos, length, initStyle, keywordlists, styler, IsMatlabCommentChar, true);\n}\n\nstatic void ColouriseOctaveDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                               WordList *keywordlists[], Accessor &styler) {\n\tColouriseMatlabOctaveDoc(startPos, length, initStyle, keywordlists, styler, IsOctaveCommentChar, false);\n}\n\nstatic void FoldMatlabOctaveDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                                WordList *[], Accessor &styler,\n                                bool (*IsComment)(int ch)) {\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tchar word[100];\n\tint wordlen = 0;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\n\t\t// a line that starts with a comment\n\t\tif (style == SCE_MATLAB_COMMENT && IsComment(ch) && visibleChars == 0) {\n\t\t\t// start/end of block comment \n\t\t\tif (chNext == '{')\n\t\t\t\tlevelNext ++;\n\t\t\tif (chNext == '}')\n\t\t\t\tlevelNext --;\n\t\t}\n\t\t// keyword\n\t\tif(style == SCE_MATLAB_KEYWORD) {\n\t\t\tword[wordlen++] = static_cast<char>(LowerCase(ch));\n\t\t\tif (wordlen == 100) {  // prevent overflow\n\t\t\t\tword[0] = '\\0';\n\t\t\t\twordlen = 1;\n\t\t\t}\n\t\t\tif (styleNext !=  SCE_MATLAB_KEYWORD) {\n\t\t\t\tword[wordlen] = '\\0';\n\t\t\t\twordlen = 0;\n\t\n\t\t\t\tlevelNext += CheckKeywordFoldPoint(word);\n \t\t\t}\n\t\t}\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\t\tif (atEOL || (i == endPos-1)) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tif (atEOL && (i == static_cast<Sci_PositionU>(styler.Length() - 1))) {\n\t\t\t\t// There is an empty line at end of file so give it same level and empty\n\t\t\t\tstyler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG);\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\t\t}\n\t}\n}\n\nstatic void FoldMatlabDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                          WordList *keywordlists[], Accessor &styler) {\n\tFoldMatlabOctaveDoc(startPos, length, initStyle, keywordlists, styler, IsMatlabCommentChar);\n}\n\nstatic void FoldOctaveDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                          WordList *keywordlists[], Accessor &styler) {\n\tFoldMatlabOctaveDoc(startPos, length, initStyle, keywordlists, styler, IsOctaveCommentChar);\n}\n\nstatic const char * const matlabWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nstatic const char * const octaveWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmMatlab(SCLEX_MATLAB, ColouriseMatlabDoc, \"matlab\", FoldMatlabDoc, matlabWordListDesc);\n\nLexerModule lmOctave(SCLEX_OCTAVE, ColouriseOctaveDoc, \"octave\", FoldOctaveDoc, octaveWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMetapost.cpp",
    "content": "// Scintilla source code edit control\n\n// File: LexMetapost.cxx - general context conformant metapost coloring scheme\n// Author: Hans Hagen - PRAGMA ADE - Hasselt NL - www.pragma-ade.com\n// Version: September 28, 2003\n// Modified by instanton: July 10, 2007\n// Folding based on keywordlists[]\n\n// Copyright: 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// This lexer is derived from the one written for the texwork environment (1999++) which in\n// turn is inspired on texedit (1991++) which finds its roots in wdt (1986).\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// val SCE_METAPOST_DEFAULT = 0\n// val SCE_METAPOST_SPECIAL = 1\n// val SCE_METAPOST_GROUP = 2\n// val SCE_METAPOST_SYMBOL = 3\n// val SCE_METAPOST_COMMAND = 4\n// val SCE_METAPOST_TEXT = 5\n\n// Definitions in SciTEGlobal.properties:\n//\n// Metapost Highlighting\n//\n// # Default\n// style.metapost.0=fore:#7F7F00\n// # Special\n// style.metapost.1=fore:#007F7F\n// # Group\n// style.metapost.2=fore:#880000\n// # Symbol\n// style.metapost.3=fore:#7F7F00\n// # Command\n// style.metapost.4=fore:#008800\n// # Text\n// style.metapost.5=fore:#000000\n\n// lexer.tex.comment.process=0\n\n// Auxiliary functions:\n\nstatic inline bool endOfLine(Accessor &styler, Sci_PositionU i) {\n\treturn\n      (styler[i] == '\\n') || ((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n')) ;\n}\n\nstatic inline bool isMETAPOSTcomment(int ch) {\n\treturn\n      (ch == '%') ;\n}\n\nstatic inline bool isMETAPOSTone(int ch) {\n\treturn\n      (ch == '[') || (ch == ']') || (ch == '(') || (ch == ')') ||\n      (ch == ':') || (ch == '=') || (ch == '<') || (ch == '>') ||\n      (ch == '{') || (ch == '}') || (ch == '\\'') || (ch == '\\\"') ;\n}\n\nstatic inline bool isMETAPOSTtwo(int ch) {\n\treturn\n      (ch == ';') || (ch == '$') || (ch == '@') || (ch == '#');\n}\n\nstatic inline bool isMETAPOSTthree(int ch) {\n\treturn\n      (ch == '.') || (ch == '-') || (ch == '+') || (ch == '/') ||\n      (ch == '*') || (ch == ',') || (ch == '|') || (ch == '`') ||\n      (ch == '!') || (ch == '?') || (ch == '^') || (ch == '&') ||\n      (ch == '%') ;\n}\n\nstatic inline bool isMETAPOSTidentifier(int ch) {\n\treturn\n      ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) ||\n      (ch == '_') ;\n}\n\nstatic inline bool isMETAPOSTnumber(int ch) {\n\treturn\n      (ch >= '0') && (ch <= '9') ;\n}\n\nstatic inline bool isMETAPOSTstring(int ch) {\n\treturn\n      (ch == '\\\"') ;\n}\n\nstatic inline bool isMETAPOSTcolon(int ch) {\n\treturn\n\t\t(ch == ':') ;\n}\n\nstatic inline bool isMETAPOSTequal(int ch) {\n\treturn\n\t\t(ch == '=') ;\n}\n\nstatic int CheckMETAPOSTInterface(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    Accessor &styler,\n\tint defaultInterface) {\n\n    char lineBuffer[1024] ;\n\tSci_PositionU linePos = 0 ;\n\n\t// some day we can make something lexer.metapost.mapping=(none,0)(metapost,1)(mp,1)(metafun,2)...\n\n    if (styler.SafeGetCharAt(0) == '%') {\n        for (Sci_PositionU i = 0; i < startPos + length; i++) {\n            lineBuffer[linePos++] = styler.SafeGetCharAt(i) ;\n            if (endOfLine(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {\n                lineBuffer[linePos] = '\\0';\n\t\t\t\tif (strstr(lineBuffer, \"interface=none\")) {\n                    return 0 ;\n\t\t\t\t} else if (strstr(lineBuffer, \"interface=metapost\") || strstr(lineBuffer, \"interface=mp\")) {\n                    return 1 ;\n\t\t\t\t} else if (strstr(lineBuffer, \"interface=metafun\")) {\n                    return 2 ;\n\t\t\t\t} else if (styler.SafeGetCharAt(1) == 'D' && strstr(lineBuffer, \"%D \\\\module\")) {\n\t\t\t\t\t// better would be to limit the search to just one line\n\t\t\t\t\treturn 2 ;\n                } else {\n                    return defaultInterface ;\n                }\n            }\n\t\t}\n    }\n\n    return defaultInterface ;\n}\n\nstatic void ColouriseMETAPOSTDoc(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    int,\n    WordList *keywordlists[],\n    Accessor &styler) {\n\n\tstyler.StartAt(startPos) ;\n\tstyler.StartSegment(startPos) ;\n\n\tbool processComment   = styler.GetPropertyInt(\"lexer.metapost.comment.process\",   0) == 1 ;\n    int  defaultInterface = styler.GetPropertyInt(\"lexer.metapost.interface.default\", 1) ;\n\n\tint currentInterface = CheckMETAPOSTInterface(startPos,length,styler,defaultInterface) ;\n\n\t// 0  no keyword highlighting\n\t// 1  metapost keyword hightlighting\n\t// 2+ metafun keyword hightlighting\n\n\tint extraInterface = 0 ;\n\n\tif (currentInterface != 0) {\n\t\textraInterface = currentInterface ;\n\t}\n\n\tWordList &keywords  = *keywordlists[0] ;\n\tWordList &keywords2 = *keywordlists[extraInterface-1] ;\n\n\tStyleContext sc(startPos, length, SCE_METAPOST_TEXT, styler) ;\n\n\tchar key[100] ;\n\n    bool inTeX     = false ;\n\tbool inComment = false ;\n\tbool inString  = false ;\n\tbool inClause  = false ;\n\n\tbool going = sc.More() ; // needed because of a fuzzy end of file state\n\n\tfor (; going; sc.Forward()) {\n\n\t\tif (! sc.More()) { going = false ; } // we need to go one behind the end of text\n\n\t\tif (inClause) {\n\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\tinClause = false ;\n\t\t}\n\n\t\tif (inComment) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\tinTeX = false ;\n\t\t\t\tinComment = false ;\n\t\t\t\tinClause = false ;\n\t\t\t\tinString = false ; // not correct but we want to stimulate one-lines\n\t\t\t}\n\t\t} else if (inString) {\n\t\t\tif (isMETAPOSTstring(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_METAPOST_SPECIAL) ;\n\t\t\t\tsc.ForwardSetState(SCE_METAPOST_TEXT) ;\n\t\t\t\tinString = false ;\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\tinTeX = false ;\n\t\t\t\tinComment = false ;\n\t\t\t\tinClause = false ;\n\t\t\t\tinString = false ; // not correct but we want to stimulate one-lines\n\t\t\t}\n\t\t} else {\n\t\t\tif ((! isMETAPOSTidentifier(sc.ch)) && (sc.LengthCurrent() > 0)) {\n\t\t\t\tif (sc.state == SCE_METAPOST_COMMAND) {\n\t\t\t\t\tsc.GetCurrent(key, sizeof(key)) ;\n\t\t\t\t\tif ((strcmp(key,\"btex\") == 0) || (strcmp(key,\"verbatimtex\") == 0)) {\n    \t\t\t\t\tsc.ChangeState(SCE_METAPOST_GROUP) ;\n\t\t\t\t\t\tinTeX = true ;\n\t\t\t\t\t} else if (inTeX) {\n\t\t\t\t\t\tif (strcmp(key,\"etex\") == 0) {\n\t    \t\t\t\t\tsc.ChangeState(SCE_METAPOST_GROUP) ;\n\t\t\t\t\t\t\tinTeX = false ;\n\t\t\t\t\t\t} else {\n\t    \t\t\t\t\tsc.ChangeState(SCE_METAPOST_TEXT) ;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (keywords && keywords.InList(key)) {\n    \t\t\t\t\t\tsc.ChangeState(SCE_METAPOST_COMMAND) ;\n\t\t\t\t\t\t} else if (keywords2 && keywords2.InList(key)) {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_METAPOST_EXTRA) ;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_METAPOST_TEXT) ;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isMETAPOSTcomment(sc.ch)) {\n\t\t\t\tif (! inTeX) {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_SYMBOL) ;\n\t\t\t\t\tsc.ForwardSetState(SCE_METAPOST_DEFAULT) ;\n\t\t\t\t\tinComment = ! processComment ;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\t}\n\t\t\t} else if (isMETAPOSTstring(sc.ch)) {\n\t\t\t\tif (! inTeX) {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_SPECIAL) ;\n\t\t\t\t\tif (! isMETAPOSTstring(sc.chNext)) {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_METAPOST_TEXT) ;\n\t\t\t\t\t}\n\t\t\t\t\tinString = true ;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\t}\n\t\t\t} else if (isMETAPOSTcolon(sc.ch)) {\n\t\t\t\tif (! inTeX) {\n\t\t\t\t\tif (! isMETAPOSTequal(sc.chNext)) {\n\t\t\t\t\t\tsc.SetState(SCE_METAPOST_COMMAND) ;\n\t\t\t\t\t\tinClause = true ;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_METAPOST_SPECIAL) ;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\t}\n\t\t\t} else if (isMETAPOSTone(sc.ch)) {\n\t\t\t\tif (! inTeX) {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_SPECIAL) ;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\t}\n\t\t\t} else if (isMETAPOSTtwo(sc.ch)) {\n\t\t\t\tif (! inTeX) {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_GROUP) ;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\t}\n\t\t\t} else if (isMETAPOSTthree(sc.ch)) {\n\t\t\t\tif (! inTeX) {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_SYMBOL) ;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\t}\n\t\t\t} else if (isMETAPOSTidentifier(sc.ch)) {\n\t\t\t\tif (sc.state != SCE_METAPOST_COMMAND) {\n\t\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\t\tsc.ChangeState(SCE_METAPOST_COMMAND) ;\n\t\t\t\t}\n\t\t\t} else if (isMETAPOSTnumber(sc.ch)) {\n\t\t\t\t// rather redundant since for the moment we don't handle numbers\n\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t\tinTeX = false ;\n\t\t\t\tinComment = false ;\n\t\t\t\tinClause = false ;\n\t\t\t\tinString = false ;\n\t\t\t} else {\n\t\t\t\tsc.SetState(SCE_METAPOST_TEXT) ;\n\t\t\t}\n\t\t}\n\n\t}\n\n\tsc.Complete();\n\n}\n\n// Hooks info the system:\n\nstatic const char * const metapostWordListDesc[] = {\n\t\"MetaPost\",\n\t\"MetaFun\",\n\t0\n} ;\n\nstatic int classifyFoldPointMetapost(const char* s,WordList *keywordlists[]) {\n\tWordList& keywordsStart=*keywordlists[3];\n\tWordList& keywordsStop1=*keywordlists[4];\n\n\tif (keywordsStart.InList(s)) {return 1;}\n\telse if (keywordsStop1.InList(s)) {return -1;}\n\treturn 0;\n\n}\n\nstatic int ParseMetapostWord(Sci_PositionU pos, Accessor &styler, char *word)\n{\n  int length=0;\n  char ch=styler.SafeGetCharAt(pos);\n  *word=0;\n\n  while(isMETAPOSTidentifier(ch) && isalpha(ch) && length<100){\n          word[length]=ch;\n          length++;\n          ch=styler.SafeGetCharAt(pos+length);\n  }\n  word[length]=0;\n  return length;\n}\n\nstatic void FoldMetapostDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordlists[], Accessor &styler)\n{\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos+length;\n\tint visibleChars=0;\n\tSci_Position lineCurrent=styler.GetLine(startPos);\n\tint levelPrev=styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent=levelPrev;\n\tchar chNext=styler[startPos];\n\n\tchar buffer[100]=\"\";\n\n\tfor (Sci_PositionU i=startPos; i < endPos; i++) {\n\t\tchar ch=chNext;\n\t\tchNext=styler.SafeGetCharAt(i+1);\n\t\tchar chPrev=styler.SafeGetCharAt(i-1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif(i==0 || chPrev == '\\r' || chPrev=='\\n'|| chPrev==' '|| chPrev=='(' || chPrev=='$')\n\t\t{\n            ParseMetapostWord(i, styler, buffer);\n\t\t\tlevelCurrent += classifyFoldPointMetapost(buffer,keywordlists);\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n\n}\n\n\nLexerModule lmMETAPOST(SCLEX_METAPOST, ColouriseMETAPOSTDoc, \"metapost\", FoldMetapostDoc, metapostWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexModula.cpp",
    "content": "//\t-*- coding: utf-8 -*-\n//\tScintilla source code edit control\n/**\n *\t@file LexModula.cxx\n *\t@author Dariusz \"DKnoto\" Knociński\n *\t@date 2011/02/03\n *\t@brief Lexer for Modula-2/3 documents.\n */\n//\tThe License.txt file describes the conditions under which this software may\n//\tbe distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#ifdef DEBUG_LEX_MODULA\n#define DEBUG_STATE( p, c )\\\n\t\tfprintf( stderr, \"Unknown state: currentPos = %ud, char = '%c'\\n\", p, c );\n#else\n#define DEBUG_STATE( p, c )\n#endif\n\nstatic inline bool IsDigitOfBase( unsigned ch, unsigned base ) {\n\tif( ch < '0' || ch > 'f' ) return false;\n\tif( base <= 10 ) {\n\t\tif( ch >= ( '0' + base ) ) return false;\n\t} else {\n\t\tif( ch > '9' ) {\n\t\t\tunsigned nb = base - 10;\n\t\t\tif( ( ch < 'A' ) || ( ch >= ( 'A' + nb ) ) ) {\n\t\t\t\tif( ( ch < 'a' ) || ( ch >= ( 'a' + nb ) ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn true;\n}\n\nstatic inline unsigned IsOperator( StyleContext & sc, WordList & op ) {\n\tint i;\n\tchar s[3];\n\n\ts[0] = sc.ch;\n\ts[1] = sc.chNext;\n\ts[2] = 0;\n\tfor( i = 0; i < op.Length(); i++ ) {\n\t\tif( ( strlen( op.WordAt(i) ) == 2 ) &&\n\t\t\t( s[0] == op.WordAt(i)[0] && s[1] == op.WordAt(i)[1] ) ) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\ts[1] = 0;\n\tfor( i = 0; i < op.Length(); i++ ) {\n\t\tif( ( strlen( op.WordAt(i) ) == 1 ) &&\n\t\t\t( s[0] == op.WordAt(i)[0] ) ) {\n\t\t\treturn 1;\n\t\t}\n\t}\n\treturn 0;\n}\n\nstatic inline bool IsEOL( Accessor &styler, Sci_PositionU curPos ) {\n\tunsigned ch = styler.SafeGetCharAt( curPos );\n\tif( ( ch == '\\r' && styler.SafeGetCharAt( curPos + 1 ) == '\\n' ) ||\n\t\t( ch == '\\n' ) ) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nstatic inline bool checkStatement(\n\tAccessor &styler,\n\tSci_Position &curPos,\n\tconst char *stt, bool spaceAfter = true ) {\n\tint len = static_cast<int>(strlen( stt ));\n\tint i;\n\tfor( i = 0; i < len; i++ ) {\n\t\tif( styler.SafeGetCharAt( curPos + i ) != stt[i] ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\tif( spaceAfter ) {\n\t\tif( ! isspace( styler.SafeGetCharAt( curPos + i ) ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\tcurPos += ( len - 1 );\n\treturn true;\n}\n\nstatic inline bool checkEndSemicolon(\n\tAccessor &styler,\n\tSci_Position &curPos, Sci_Position endPos )\n{\n\tconst char *stt = \"END\";\n\tint len = static_cast<int>(strlen( stt ));\n\tint i;\n\tfor( i = 0; i < len; i++ ) {\n\t\tif( styler.SafeGetCharAt( curPos + i ) != stt[i] ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\twhile( isspace( styler.SafeGetCharAt( curPos + i ) ) ) {\n\t\ti++;\n\t\tif( ( curPos + i ) >= endPos ) return false;\n\t}\n\tif( styler.SafeGetCharAt( curPos + i ) != ';' ) {\n\t\treturn false;\n\t}\n\tcurPos += ( i - 1 );\n\treturn true;\n}\n\nstatic inline bool checkKeyIdentOper(\n\n\tAccessor &styler,\n\tSci_Position &curPos, Sci_Position endPos,\n\tconst char *stt, const char etk ) {\n\tSci_Position newPos = curPos;\n\tif( ! checkStatement( styler, newPos, stt ) )\n\t\treturn false;\n\tnewPos++;\n\tif( newPos >= endPos )\n\t\treturn false;\n\tif( ! isspace( styler.SafeGetCharAt( newPos ) ) )\n\t\treturn false;\n\tnewPos++;\n\tif( newPos >= endPos )\n\t\treturn false;\n\twhile( isspace( styler.SafeGetCharAt( newPos ) ) ) {\n\t\tnewPos++;\n\t\tif( newPos >= endPos )\n\t\t\treturn false;\n\t}\n\tif( ! isalpha( styler.SafeGetCharAt( newPos ) ) )\n\t\treturn false;\n\tnewPos++;\n\tif( newPos >= endPos )\n\t\treturn false;\n\tchar ch;\n\tch = styler.SafeGetCharAt( newPos );\n\twhile( isalpha( ch ) || isdigit( ch ) || ch == '_' ) {\n\t\tnewPos++;\n\t\tif( newPos >= endPos ) return false;\n\t\tch = styler.SafeGetCharAt( newPos );\n\t}\n\twhile( isspace( styler.SafeGetCharAt( newPos ) ) ) {\n\t\tnewPos++;\n\t\tif( newPos >= endPos ) return false;\n\t}\n\tif( styler.SafeGetCharAt( newPos ) != etk )\n\t\treturn false;\n\tcurPos = newPos;\n\treturn true;\n}\n\nstatic void FoldModulaDoc( Sci_PositionU startPos,\n\t\t\t\t\t\t Sci_Position length,\n\t\t\t\t\t\t int , WordList *[],\n\t\t\t\t\t\t Accessor &styler)\n{\n\tSci_Position curLine = styler.GetLine(startPos);\n\tint curLevel = SC_FOLDLEVELBASE;\n\tSci_Position endPos = startPos + length;\n\tif( curLine > 0 )\n\t\tcurLevel = styler.LevelAt( curLine - 1 ) >> 16;\n\tSci_Position curPos = startPos;\n\tint style = styler.StyleAt( curPos );\n\tint visChars = 0;\n\tint nextLevel = curLevel;\n\n\twhile( curPos < endPos ) {\n\t\tif( ! isspace( styler.SafeGetCharAt( curPos ) ) ) visChars++;\n\n\t\tswitch( style ) {\n\t\tcase SCE_MODULA_COMMENT:\n\t\t\tif( checkStatement( styler, curPos, \"(*\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"*)\" ) )\n\t\t\t\tnextLevel--;\n\t\t\tbreak;\n\n\t\tcase SCE_MODULA_DOXYCOMM:\n\t\t\tif( checkStatement( styler, curPos, \"(**\", false ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"*)\" ) )\n\t\t\t\tnextLevel--;\n\t\t\tbreak;\n\n\t\tcase SCE_MODULA_KEYWORD:\n\t\t\tif( checkStatement( styler, curPos, \"IF\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"BEGIN\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"TRY\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"LOOP\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"FOR\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"WHILE\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"REPEAT\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"UNTIL\" ) )\n\t\t\t\tnextLevel--;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"WITH\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"CASE\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"TYPECASE\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkStatement( styler, curPos, \"LOCK\" ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkKeyIdentOper( styler, curPos, endPos, \"PROCEDURE\", '(' ) )\n\t\t\t\tnextLevel++;\n\t\t\telse\n\t\t\tif( checkKeyIdentOper( styler, curPos, endPos, \"END\", ';' ) ) {\n\t\t\t\tSci_Position cln = curLine;\n\t\t\t\tint clv_old = curLevel;\n\t\t\t\tSci_Position pos;\n\t\t\t\tchar ch;\n\t\t\t\tint clv_new;\n\t\t\t\twhile( cln > 0 ) {\n\t\t\t\t\tclv_new = styler.LevelAt( cln - 1 ) >> 16;\n\t\t\t\t\tif( clv_new < clv_old ) {\n\t\t\t\t\t\tnextLevel--;\n\t\t\t\t\t\tpos = styler.LineStart( cln );\n\t\t\t\t\t\twhile( ( ch = styler.SafeGetCharAt( pos ) ) != '\\n' ) {\n\t\t\t\t\t\t\tif( ch == 'P' ) {\n\t\t\t\t\t\t\t\tif( styler.StyleAt(pos) == SCE_MODULA_KEYWORD )\t{\n\t\t\t\t\t\t\t\t\tif( checkKeyIdentOper( styler, pos, endPos,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\"PROCEDURE\", '(' ) ) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpos++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclv_old = clv_new;\n\t\t\t\t\t}\n\t\t\t\t\tcln--;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\tif( checkKeyIdentOper( styler, curPos, endPos, \"END\", '.' ) )\n\t\t\t\tnextLevel--;\n\t\t\telse\n\t\t\tif( checkEndSemicolon( styler, curPos, endPos ) )\n\t\t\t\tnextLevel--;\n\t\t\telse {\n\t\t\t\twhile( styler.StyleAt( curPos + 1 ) == SCE_MODULA_KEYWORD )\n\t\t\t\t\tcurPos++;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\n\t\tif( IsEOL( styler, curPos ) || ( curPos == endPos - 1 ) ) {\n\t\t\tint efectiveLevel = curLevel | nextLevel << 16;\n\t\t\tif( visChars == 0 )\n\t\t\t\tefectiveLevel |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif( curLevel < nextLevel )\n\t\t\t\tefectiveLevel |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif( efectiveLevel != styler.LevelAt(curLine) ) {\n\t\t\t\tstyler.SetLevel(curLine, efectiveLevel );\n\t\t\t}\n\t\t\tcurLine++;\n\t\t\tcurLevel = nextLevel;\n\t\t\tif( IsEOL( styler, curPos ) && ( curPos == endPos - 1 ) ) {\n\t\t\t\tstyler.SetLevel( curLine, ( curLevel | curLevel << 16)\n\t\t\t\t\t\t\t\t| SC_FOLDLEVELWHITEFLAG);\n\t\t\t}\n\t\t\tvisChars = 0;\n\t\t}\n\t\tcurPos++;\n\t\tstyle = styler.StyleAt( curPos );\n\t}\n}\n\nstatic inline bool skipWhiteSpaces( StyleContext & sc ) {\n\twhile( isspace( sc.ch ) ) {\n\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\tif( sc.More() )\n\t\t\tsc.Forward();\n\t\telse\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\nstatic void ColouriseModulaDoc(\tSci_PositionU startPos,\n\t\t\t\t\t\t\t\t\tSci_Position length,\n\t\t\t\t\t\t\t\t\tint initStyle,\n\t\t\t\t\t\t\t\t\tWordList *wl[],\n\t\t\t\t\t\t\t\t\tAccessor &styler ) {\n\tWordList& keyWords\t\t= *wl[0];\n\tWordList& reservedWords\t= *wl[1];\n\tWordList& operators \t= *wl[2];\n\tWordList& pragmaWords \t= *wl[3];\n\tWordList& escapeCodes\t= *wl[4];\n\tWordList& doxyKeys\t\t= *wl[5];\n\n\tconst int BUFLEN = 128;\n\n\tchar\tbuf[BUFLEN];\n\tint\t\ti, kl;\n\n\tSci_Position  charPos = 0;\n\n\tStyleContext sc( startPos, length, initStyle, styler );\n\n\twhile( sc.More() ) \t{\n\t\tswitch( sc.state )\t{\n\t\tcase SCE_MODULA_DEFAULT:\n\t\t\tif( ! skipWhiteSpaces( sc ) ) break;\n\n\t\t\tif( sc.ch == '(' && sc.chNext == '*' ) {\n\t\t\t\tif( sc.GetRelative(2) == '*' ) {\n\t\t\t\t\tsc.SetState( SCE_MODULA_DOXYCOMM );\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState( SCE_MODULA_COMMENT );\n\t\t\t\t}\n\t\t\t\tsc.Forward();\n\t\t\t}\n\t\t\telse\n\t\t\tif( isalpha( sc.ch ) ) {\n\t\t\t\tif( isupper( sc.ch ) && isupper( sc.chNext ) ) {\n\t\t\t\t\tfor( i = 0; i < BUFLEN - 1; i++ ) {\n\t\t\t\t\t\tbuf[i] = sc.GetRelative(i);\n\t\t\t\t\t\tif( !isalpha( buf[i] ) && !(buf[i] == '_') )\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tkl = i;\n\t\t\t\t\tbuf[kl] = 0;\n\n\t\t\t\t\tif( keyWords.InList( buf ) ) {\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_KEYWORD );\n\t\t\t\t\t\tsc.Forward( kl );\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\tif( reservedWords.InList( buf ) ) {\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_RESERVED );\n\t\t\t\t\t\tsc.Forward( kl );\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t/** check procedure identifier */\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor( i = 0; i < BUFLEN - 1; i++ ) {\n\t\t\t\t\t\tbuf[i] = sc.GetRelative(i);\n\t\t\t\t\t\tif( !isalpha( buf[i] ) &&\n\t\t\t\t\t\t\t!isdigit( buf[i] ) &&\n\t\t\t\t\t\t\t!(buf[i] == '_') )\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tkl = i;\n\t\t\t\t\tbuf[kl] = 0;\n\n\t\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\t\tsc.Forward( kl );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\tif( isdigit( sc.ch ) ) {\n\t\t\t\tsc.SetState( SCE_MODULA_NUMBER );\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse\n\t\t\tif( sc.ch == '\\\"' ) {\n\t\t\t\tsc.SetState( SCE_MODULA_STRING );\n\t\t\t}\n\t\t\telse\n\t\t\tif( sc.ch == '\\'' ) {\n\t\t\t\tcharPos = sc.currentPos;\n\t\t\t\tsc.SetState( SCE_MODULA_CHAR );\n\t\t\t}\n\t\t\telse\n\t\t\tif( sc.ch == '<' && sc.chNext == '*' ) {\n\t\t\t\tsc.SetState( SCE_MODULA_PRAGMA );\n\t\t\t\tsc.Forward();\n\t\t\t} else {\n\t\t\t\tunsigned len = IsOperator( sc, operators );\n\t\t\t\tif( len > 0 ) {\n\t\t\t\t\tsc.SetState( SCE_MODULA_OPERATOR );\n\t\t\t\t\tsc.Forward( len );\n\t\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\t\tcontinue;\n\t\t\t\t} else {\n\t\t\t\t\tDEBUG_STATE( sc.currentPos, sc.ch );\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_MODULA_COMMENT:\n\t\t\tif( sc.ch == '*' && sc.chNext == ')' ) {\n\t\t\t\tsc.Forward( 2 );\n\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_MODULA_DOXYCOMM:\n\t\t\tswitch( sc.ch ) {\n\t\t\tcase '*':\n\t\t\t\tif( sc.chNext == ')' ) {\n\t\t\t\t\tsc.Forward( 2 );\n\t\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase '@':\n\t\t\t\tif( islower( sc.chNext ) ) {\n\t\t\t\t\tfor( i = 0; i < BUFLEN - 1; i++ ) {\n\t\t\t\t\t\tbuf[i] = sc.GetRelative(i+1);\n\t\t\t\t\t\tif( isspace( buf[i] ) ) break;\n\t\t\t\t\t}\n\t\t\t\t\tbuf[i] = 0;\n\t\t\t\t\tkl = i;\n\n\t\t\t\t\tif( doxyKeys.InList( buf ) ) {\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_DOXYKEY );\n\t\t\t\t\t\tsc.Forward( kl + 1 );\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_DOXYCOMM );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_MODULA_NUMBER:\n\t\t\t{\n\t\t\t\tbuf[0] = sc.ch;\n\t\t\t\tfor( i = 1; i < BUFLEN - 1; i++ ) {\n\t\t\t\t\tbuf[i] = sc.GetRelative(i);\n\t\t\t\t\tif( ! isdigit( buf[i] ) )\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tkl = i;\n\t\t\t\tbuf[kl] = 0;\n\n\t\t\t\tswitch( sc.GetRelative(kl) ) {\n\t\t\t\tcase '_':\n\t\t\t\t\t{\n\t\t\t\t\t\tint base = atoi( buf );\n\t\t\t\t\t\tif( base < 2 || base > 16 ) {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tint imax;\n\n\t\t\t\t\t\t\tkl++;\n\t\t\t\t\t\t\tfor( i = 0; i < BUFLEN - 1; i++ ) {\n\t\t\t\t\t\t\t\tbuf[i] = sc.GetRelative(kl+i);\n\t\t\t\t\t\t\t\tif( ! IsDigitOfBase( buf[i], 16 ) ) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\timax = i;\n\t\t\t\t\t\t\tfor( i = 0; i < imax; i++ ) {\n\t\t\t\t\t\t\t\tif( ! IsDigitOfBase( buf[i], base ) ) {\n\t\t\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tkl += imax;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_BASENUM );\n\t\t\t\t\t\tfor( i = 0; i < kl; i++ ) {\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tcase '.':\n\t\t\t\t\tif( sc.GetRelative(kl+1) == '.' ) {\n\t\t\t\t\t\tkl--;\n\t\t\t\t\t\tfor( i = 0; i < kl; i++ ) {\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbool doNext = false;\n\n\t\t\t\t\t\tkl++;\n\n\t\t\t\t\t\tbuf[0] = sc.GetRelative(kl);\n\t\t\t\t\t\tif( isdigit( buf[0] ) ) {\n\t\t\t\t\t\t\tfor( i = 0;; i++ ) {\n\t\t\t\t\t\t\t\tif( !isdigit(sc.GetRelative(kl+i)) )\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tkl += i;\n\t\t\t\t\t\t\tbuf[0] = sc.GetRelative(kl);\n\n\t\t\t\t\t\t\tswitch( buf[0] )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\tcase 'E':\n\t\t\t\t\t\t\tcase 'e':\n\t\t\t\t\t\t\tcase 'D':\n\t\t\t\t\t\t\tcase 'd':\n\t\t\t\t\t\t\tcase 'X':\n\t\t\t\t\t\t\tcase 'x':\n\t\t\t\t\t\t\t\tkl++;\n\t\t\t\t\t\t\t\tbuf[0] = sc.GetRelative(kl);\n\t\t\t\t\t\t\t\tif( buf[0] == '-' || buf[0] == '+' ) {\n\t\t\t\t\t\t\t\t\tkl++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbuf[0] = sc.GetRelative(kl);\n\t\t\t\t\t\t\t\tif( isdigit( buf[0] ) ) {\n\t\t\t\t\t\t\t\t\tfor( i = 0;; i++ ) {\n\t\t\t\t\t\t\t\t\t\tif( !isdigit(sc.GetRelative(kl+i)) ) {\n\t\t\t\t\t\t\t\t\t\t\tbuf[0] = sc.GetRelative(kl+i);\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tkl += i;\n\t\t\t\t\t\t\t\t\tdoNext = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tdoNext = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif( doNext ) {\n\t\t\t\t\t\t\tif( ! isspace( buf[0] ) &&\n\t\t\t\t\t\t\t\tbuf[0] != ')' &&\n\t\t\t\t\t\t\t\tbuf[0] != '>' &&\n\t\t\t\t\t\t\t\tbuf[0] != '<' &&\n\t\t\t\t\t\t\t\tbuf[0] != '=' &&\n\t\t\t\t\t\t\t\tbuf[0] != '#' &&\n\t\t\t\t\t\t\t\tbuf[0] != '+' &&\n\t\t\t\t\t\t\t\tbuf[0] != '-' &&\n\t\t\t\t\t\t\t\tbuf[0] != '*' &&\n\t\t\t\t\t\t\t\tbuf[0] != '/' &&\n\t\t\t\t\t\t\t\tbuf[0] != ',' &&\n\t\t\t\t\t\t\t\tbuf[0] != ';'\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tkl--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState( SCE_MODULA_FLOAT );\n\t\t\t\t\tfor( i = 0; i < kl; i++ ) {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\t\tcontinue;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tfor( i = 0; i < kl; i++ ) {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_MODULA_STRING:\n\t\t\tif( sc.ch == '\\\"' ) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\tcontinue;\n\t\t\t} else {\n\t\t\t\tif( sc.ch == '\\\\' ) {\n\t\t\t\t\ti = 1;\n\t\t\t\t\tif( IsDigitOfBase( sc.chNext, 8 ) ) {\n\t\t\t\t\t\tfor( i = 1; i < BUFLEN - 1; i++ ) {\n\t\t\t\t\t\t\tif( ! IsDigitOfBase(sc.GetRelative(i+1), 8 ) )\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( i == 3 ) {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_STRSPEC );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuf[0] = sc.chNext;\n\t\t\t\t\t\tbuf[1] = 0;\n\n\t\t\t\t\t\tif( escapeCodes.InList( buf ) ) {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_STRSPEC );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsc.Forward(i+1);\n\t\t\t\t\tsc.SetState( SCE_MODULA_STRING );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_MODULA_CHAR:\n\t\t\tif( sc.ch == '\\'' ) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse\n\t\t\tif( ( sc.currentPos - charPos ) == 1 ) {\n\t\t\t\tif( sc.ch == '\\\\' ) {\n\t\t\t\t\ti = 1;\n\t\t\t\t\tif( IsDigitOfBase( sc.chNext, 8 ) ) {\n\t\t\t\t\t\tfor( i = 1; i < BUFLEN - 1; i++ ) {\n\t\t\t\t\t\t\tif( ! IsDigitOfBase(sc.GetRelative(i+1), 8 ) )\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif( i == 3 ) {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_CHARSPEC );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuf[0] = sc.chNext;\n\t\t\t\t\t\tbuf[1] = 0;\n\n\t\t\t\t\t\tif( escapeCodes.InList( buf ) ) {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_CHARSPEC );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tsc.Forward(i+1);\n\t\t\t\t\tsc.SetState( SCE_MODULA_CHAR );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsc.SetState( SCE_MODULA_BADSTR );\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState( SCE_MODULA_CHAR );\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_MODULA_PRAGMA:\n\t\t\tif( sc.ch == '*' && sc.chNext == '>' ) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState( SCE_MODULA_DEFAULT );\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\telse\n\t\t\tif( isupper( sc.ch ) && isupper( sc.chNext ) ) {\n\t\t\t\tbuf[0] = sc.ch;\n\t\t\t\tbuf[1] = sc.chNext;\n\t\t\t\tfor( i = 2; i < BUFLEN - 1; i++ ) {\n\t\t\t\t\tbuf[i] = sc.GetRelative(i);\n\t\t\t\t\tif( !isupper( buf[i] ) )\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tkl = i;\n\t\t\t\tbuf[kl] = 0;\n\t\t\t\tif( pragmaWords.InList( buf ) ) {\n\t\t\t\t\tsc.SetState( SCE_MODULA_PRGKEY );\n\t\t\t\t\tsc.Forward( kl );\n\t\t\t\t\tsc.SetState( SCE_MODULA_PRAGMA );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tbreak;\n\t\t}\n\t\tsc.Forward();\n\t}\n\tsc.Complete();\n}\n\nstatic const char *const modulaWordListDesc[] =\n{\n\t\"Keywords\",\n\t\"ReservedKeywords\",\n\t\"Operators\",\n\t\"PragmaKeyswords\",\n\t\"EscapeCodes\",\n\t\"DoxygeneKeywords\",\n\t0\n};\n\nLexerModule lmModula( SCLEX_MODULA, ColouriseModulaDoc, \"modula\", FoldModulaDoc,\n\t\t\t\t\t  modulaWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexMySQL.cpp",
    "content": "/**\n * Scintilla source code edit control\n * @file LexMySQL.cxx\n * Lexer for MySQL\n *\n * Improved by Mike Lischke <mike.lischke@oracle.com>\n * Adopted from LexSQL.cxx by Anders Karlsson <anders@mysql.com>\n * Original work by Neil Hodgson <neilh@scintilla.org>\n * Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n * The License.txt file describes the conditions under which this software may be distributed.\n */\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\nstatic inline bool IsAWordStart(int ch) {\n\treturn (ch < 0x80) && (isalpha(ch) || ch == '_');\n}\n\nstatic inline bool IsANumberChar(int ch) {\n\t// Not exactly following number definition (several dots are seen as OK, etc.)\n\t// but probably enough in most cases.\n\treturn (ch < 0x80) &&\n\t        (isdigit(ch) || toupper(ch) == 'E' ||\n             ch == '.' || ch == '-' || ch == '+');\n}\n\n//--------------------------------------------------------------------------------------------------\n\n/**\n * Check if the current content context represent a keyword and set the context state if so.\n */\nstatic void CheckForKeyword(StyleContext& sc, WordList* keywordlists[], int activeState)\n{\n  int length = sc.LengthCurrent() + 1; // +1 for the next char\n  char* s = new char[length];\n  sc.GetCurrentLowered(s, length);\n  if (keywordlists[0]->InList(s))\n    sc.ChangeState(SCE_MYSQL_MAJORKEYWORD | activeState);\n  else\n    if (keywordlists[1]->InList(s))\n      sc.ChangeState(SCE_MYSQL_KEYWORD | activeState);\n    else\n      if (keywordlists[2]->InList(s))\n        sc.ChangeState(SCE_MYSQL_DATABASEOBJECT | activeState);\n      else\n        if (keywordlists[3]->InList(s))\n          sc.ChangeState(SCE_MYSQL_FUNCTION | activeState);\n        else\n          if (keywordlists[5]->InList(s))\n            sc.ChangeState(SCE_MYSQL_PROCEDUREKEYWORD | activeState);\n          else\n            if (keywordlists[6]->InList(s))\n              sc.ChangeState(SCE_MYSQL_USER1 | activeState);\n            else\n              if (keywordlists[7]->InList(s))\n                sc.ChangeState(SCE_MYSQL_USER2 | activeState);\n              else\n                if (keywordlists[8]->InList(s))\n                  sc.ChangeState(SCE_MYSQL_USER3 | activeState);\n  delete [] s;\n}\n\n//--------------------------------------------------------------------------------------------------\n\n#define HIDDENCOMMAND_STATE 0x40 // Offset for states within a hidden command.\n#define MASKACTIVE(style) (style & ~HIDDENCOMMAND_STATE)\n\nstatic void SetDefaultState(StyleContext& sc, int activeState)\n{\n  if (activeState == 0)\n    sc.SetState(SCE_MYSQL_DEFAULT);\n  else\n    sc.SetState(SCE_MYSQL_HIDDENCOMMAND);\n}\n\nstatic void ForwardDefaultState(StyleContext& sc, int activeState)\n{\n  if (activeState == 0)\n    sc.ForwardSetState(SCE_MYSQL_DEFAULT);\n  else\n    sc.ForwardSetState(SCE_MYSQL_HIDDENCOMMAND);\n}\n\nstatic void ColouriseMySQLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler)\n{\n\tStyleContext sc(startPos, length, initStyle, styler, 127);\n  int activeState = (initStyle == SCE_MYSQL_HIDDENCOMMAND) ? HIDDENCOMMAND_STATE : initStyle & HIDDENCOMMAND_STATE;\n\n\tfor (; sc.More(); sc.Forward())\n  {\n\t\t// Determine if the current state should terminate.\n\t\tswitch (MASKACTIVE(sc.state))\n    {\n      case SCE_MYSQL_OPERATOR:\n        SetDefaultState(sc, activeState);\n        break;\n      case SCE_MYSQL_NUMBER:\n        // We stop the number definition on non-numerical non-dot non-eE non-sign char.\n        if (!IsANumberChar(sc.ch))\n          SetDefaultState(sc, activeState);\n        break;\n      case SCE_MYSQL_IDENTIFIER:\n        // Switch from identifier to keyword state and open a new state for the new char.\n        if (!IsAWordChar(sc.ch))\n        {\n          CheckForKeyword(sc, keywordlists, activeState);\n\n          // Additional check for function keywords needed.\n          // A function name must be followed by an opening parenthesis.\n          if (MASKACTIVE(sc.state) == SCE_MYSQL_FUNCTION && sc.ch != '(')\n          {\n            if (activeState > 0)\n              sc.ChangeState(SCE_MYSQL_HIDDENCOMMAND);\n            else\n              sc.ChangeState(SCE_MYSQL_DEFAULT);\n          }\n\n          SetDefaultState(sc, activeState);\n        }\n        break;\n      case SCE_MYSQL_VARIABLE:\n        if (!IsAWordChar(sc.ch))\n          SetDefaultState(sc, activeState);\n        break;\n      case SCE_MYSQL_SYSTEMVARIABLE:\n        if (!IsAWordChar(sc.ch))\n        {\n          Sci_Position length = sc.LengthCurrent() + 1;\n          char* s = new char[length];\n          sc.GetCurrentLowered(s, length);\n\n          // Check for known system variables here.\n          if (keywordlists[4]->InList(&s[2]))\n            sc.ChangeState(SCE_MYSQL_KNOWNSYSTEMVARIABLE | activeState);\n          delete [] s;\n\n          SetDefaultState(sc, activeState);\n        }\n        break;\n      case SCE_MYSQL_QUOTEDIDENTIFIER:\n        if (sc.ch == '`')\n        {\n          if (sc.chNext == '`')\n            sc.Forward();\t// Ignore it\n          else\n            ForwardDefaultState(sc, activeState);\n\t\t\t\t}\n  \t\t\tbreak;\n      case SCE_MYSQL_COMMENT:\n        if (sc.Match('*', '/'))\n        {\n          sc.Forward();\n          ForwardDefaultState(sc, activeState);\n        }\n        break;\n      case SCE_MYSQL_COMMENTLINE:\n        if (sc.atLineStart)\n          SetDefaultState(sc, activeState);\n        break;\n      case SCE_MYSQL_SQSTRING:\n        if (sc.ch == '\\\\')\n          sc.Forward(); // Escape sequence\n        else\n          if (sc.ch == '\\'')\n          {\n            // End of single quoted string reached?\n            if (sc.chNext == '\\'')\n              sc.Forward();\n            else\n              ForwardDefaultState(sc, activeState);\n          }\n        break;\n      case SCE_MYSQL_DQSTRING:\n        if (sc.ch == '\\\\')\n          sc.Forward(); // Escape sequence\n        else\n          if (sc.ch == '\\\"')\n          {\n            // End of single quoted string reached?\n            if (sc.chNext == '\\\"')\n              sc.Forward();\n            else\n              ForwardDefaultState(sc, activeState);\n          }\n        break;\n      case SCE_MYSQL_PLACEHOLDER:\n        if (sc.Match('}', '>'))\n        {\n          sc.Forward();\n          ForwardDefaultState(sc, activeState);\n        }\n        break;\n    }\n\n    if (sc.state == SCE_MYSQL_HIDDENCOMMAND && sc.Match('*', '/'))\n    {\n      activeState = 0;\n      sc.Forward();\n      ForwardDefaultState(sc, activeState);\n    }\n\n    // Determine if a new state should be entered.\n    if (sc.state == SCE_MYSQL_DEFAULT || sc.state == SCE_MYSQL_HIDDENCOMMAND)\n    {\n      switch (sc.ch)\n      {\n        case '@':\n          if (sc.chNext == '@')\n          {\n            sc.SetState(SCE_MYSQL_SYSTEMVARIABLE | activeState);\n            sc.Forward(2); // Skip past @@.\n          }\n          else\n            if (IsAWordStart(sc.ch))\n            {\n              sc.SetState(SCE_MYSQL_VARIABLE | activeState);\n              sc.Forward(); // Skip past @.\n            }\n            else\n              sc.SetState(SCE_MYSQL_OPERATOR | activeState);\n          break;\n        case '`':\n          sc.SetState(SCE_MYSQL_QUOTEDIDENTIFIER | activeState);\n          break;\n        case '#':\n          sc.SetState(SCE_MYSQL_COMMENTLINE | activeState);\n          break;\n        case '\\'':\n          sc.SetState(SCE_MYSQL_SQSTRING | activeState);\n          break;\n        case '\\\"':\n          sc.SetState(SCE_MYSQL_DQSTRING | activeState);\n          break;\n        default:\n          if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)))\n            sc.SetState(SCE_MYSQL_NUMBER | activeState);\n          else\n            if (IsAWordStart(sc.ch))\n              sc.SetState(SCE_MYSQL_IDENTIFIER | activeState);\n            else\n              if (sc.Match('/', '*'))\n              {\n                sc.SetState(SCE_MYSQL_COMMENT | activeState);\n\n                // Skip first char of comment introducer and check for hidden command.\n                // The second char is skipped by the outer loop.\n                sc.Forward();\n                if (sc.GetRelativeCharacter(1) == '!')\n                {\n                  // Version comment found. Skip * now.\n                  sc.Forward();\n                  activeState = HIDDENCOMMAND_STATE;\n                  sc.ChangeState(SCE_MYSQL_HIDDENCOMMAND);\n                }\n              }\n              else if (sc.Match('<', '{'))\n              {\n                sc.SetState(SCE_MYSQL_PLACEHOLDER | activeState);\n              }\n              else\n                if (sc.Match(\"--\"))\n                {\n                  // Special MySQL single line comment.\n                  sc.SetState(SCE_MYSQL_COMMENTLINE | activeState);\n                  sc.Forward(2);\n\n                  // Check the third character too. It must be a space or EOL.\n                  if (sc.ch != ' ' && sc.ch != '\\n' && sc.ch != '\\r')\n                    sc.ChangeState(SCE_MYSQL_OPERATOR | activeState);\n                }\n                else\n                  if (isoperator(static_cast<char>(sc.ch)))\n                    sc.SetState(SCE_MYSQL_OPERATOR | activeState);\n      }\n    }\n  }\n\n  // Do a final check for keywords if we currently have an identifier, to highlight them\n  // also at the end of a line.\n  if (sc.state == SCE_MYSQL_IDENTIFIER)\n  {\n    CheckForKeyword(sc, keywordlists, activeState);\n\n    // Additional check for function keywords needed.\n    // A function name must be followed by an opening parenthesis.\n    if (sc.state == SCE_MYSQL_FUNCTION && sc.ch != '(')\n      SetDefaultState(sc, activeState);\n  }\n\n  sc.Complete();\n}\n\n//--------------------------------------------------------------------------------------------------\n\n/**\n * Helper function to determine if we have a foldable comment currently.\n */\nstatic bool IsStreamCommentStyle(int style)\n{\n\treturn MASKACTIVE(style) == SCE_MYSQL_COMMENT;\n}\n\n//--------------------------------------------------------------------------------------------------\n\n/**\n * Code copied from StyleContext and modified to work here. Should go into Accessor as a\n * companion to Match()...\n */\nstatic bool MatchIgnoreCase(Accessor &styler, Sci_Position currentPos, const char *s)\n{\n  for (Sci_Position n = 0; *s; n++)\n  {\n    if (*s != tolower(styler.SafeGetCharAt(currentPos + n)))\n      return false;\n    s++;\n  }\n  return true;\n}\n\n//--------------------------------------------------------------------------------------------------\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment.\nstatic void FoldMySQLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler)\n{\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tbool foldOnlyBegin = styler.GetPropertyInt(\"fold.sql.only.begin\", 0) != 0;\n\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent - 1) >> 16;\n\tint levelNext = levelCurrent;\n\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n  int activeState = (style == SCE_MYSQL_HIDDENCOMMAND) ? HIDDENCOMMAND_STATE : style & HIDDENCOMMAND_STATE;\n\n  bool endPending = false;\n\tbool whenPending = false;\n\tbool elseIfPending = false;\n\n  char nextChar = styler.SafeGetCharAt(startPos);\n  for (Sci_PositionU i = startPos; length > 0; i++, length--)\n  {\n\t\tint stylePrev = style;\n    int lastActiveState = activeState;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n    activeState = (style == SCE_MYSQL_HIDDENCOMMAND) ? HIDDENCOMMAND_STATE : style & HIDDENCOMMAND_STATE;\n\n    char currentChar = nextChar;\n    nextChar = styler.SafeGetCharAt(i + 1);\n\t\tbool atEOL = (currentChar == '\\r' && nextChar != '\\n') || (currentChar == '\\n');\n\n    switch (MASKACTIVE(style))\n    {\n      case SCE_MYSQL_COMMENT:\n        if (foldComment)\n        {\n          // Multiline comment style /* .. */ just started or is still in progress.\n          if (IsStreamCommentStyle(style) && !IsStreamCommentStyle(stylePrev))\n            levelNext++;\n        }\n        break;\n      case SCE_MYSQL_COMMENTLINE:\n        if (foldComment)\n        {\n          // Not really a standard, but we add support for single line comments\n          // with special curly braces syntax as foldable comments too.\n          // MySQL needs -- comments to be followed by space or control char\n          if (styler.Match(i, \"--\"))\n          {\n            char chNext2 = styler.SafeGetCharAt(i + 2);\n            char chNext3 = styler.SafeGetCharAt(i + 3);\n            if (chNext2 == '{' || chNext3 == '{')\n              levelNext++;\n            else\n              if (chNext2 == '}' || chNext3 == '}')\n                levelNext--;\n          }\n        }\n        break;\n      case SCE_MYSQL_HIDDENCOMMAND:\n        /*\n        if (endPending)\n        {\n          // A conditional command is not a white space so it should end the current block\n          // before opening a new one.\n          endPending = false;\n          levelNext--;\n          if (levelNext < SC_FOLDLEVELBASE)\n            levelNext = SC_FOLDLEVELBASE;\n        }\n        }*/\n        if (activeState != lastActiveState)\n          levelNext++;\n        break;\n      case SCE_MYSQL_OPERATOR:\n        if (endPending)\n        {\n          endPending = false;\n          levelNext--;\n          if (levelNext < SC_FOLDLEVELBASE)\n            levelNext = SC_FOLDLEVELBASE;\n        }\n        if (currentChar == '(')\n          levelNext++;\n        else\n          if (currentChar == ')')\n          {\n            levelNext--;\n            if (levelNext < SC_FOLDLEVELBASE)\n              levelNext = SC_FOLDLEVELBASE;\n          }\n        break;\n      case SCE_MYSQL_MAJORKEYWORD:\n      case SCE_MYSQL_KEYWORD:\n      case SCE_MYSQL_FUNCTION:\n      case SCE_MYSQL_PROCEDUREKEYWORD:\n        // Reserved and other keywords.\n        if (style != stylePrev)\n        {\n          // END decreases the folding level, regardless which keyword follows.\n          bool endFound = MatchIgnoreCase(styler, i, \"end\");\n          if (endPending)\n          {\n            levelNext--;\n            if (levelNext < SC_FOLDLEVELBASE)\n              levelNext = SC_FOLDLEVELBASE;\n          }\n          else\n            if (!endFound)\n            {\n              if (MatchIgnoreCase(styler, i, \"begin\"))\n                levelNext++;\n              else\n              {\n                if (!foldOnlyBegin)\n                {\n                  bool whileFound = MatchIgnoreCase(styler, i, \"while\");\n                  bool loopFound = MatchIgnoreCase(styler, i, \"loop\");\n                  bool repeatFound = MatchIgnoreCase(styler, i, \"repeat\");\n                  bool caseFound = MatchIgnoreCase(styler, i, \"case\");\n\n                  if (whileFound || loopFound || repeatFound || caseFound)\n                    levelNext++;\n                  else\n                  {\n                    // IF alone does not increase the fold level as it is also used in non-block'ed\n                    // code like DROP PROCEDURE blah IF EXISTS.\n                    // Instead THEN opens the new level (if not part of an ELSEIF or WHEN (case) branch).\n                    if (MatchIgnoreCase(styler, i, \"then\"))\n                    {\n                      if (!elseIfPending && !whenPending)\n                        levelNext++;\n                      else\n                      {\n                        elseIfPending = false;\n                        whenPending = false;\n                      }\n                    }\n                    else\n                    {\n                      // Neither of if/then/while/loop/repeat/case, so check for\n                      // sub parts of IF and CASE.\n                      if (MatchIgnoreCase(styler, i, \"elseif\"))\n                        elseIfPending = true;\n                      if (MatchIgnoreCase(styler, i, \"when\"))\n                        whenPending = true;\n                    }\n                  }\n                }\n              }\n            }\n\n          // Keep the current end state for the next round.\n          endPending = endFound;\n        }\n        break;\n\n      default:\n        if (!isspacechar(currentChar) && endPending)\n        {\n          // END followed by a non-whitespace character (not covered by other cases like identifiers)\n          // also should end a folding block. Typical case: END followed by self defined delimiter.\n          levelNext--;\n          if (levelNext < SC_FOLDLEVELBASE)\n            levelNext = SC_FOLDLEVELBASE;\n        }\n        break;\n    }\n\n    // Go up one level if we just ended a multi line comment.\n    if (IsStreamCommentStyle(stylePrev) && !IsStreamCommentStyle(style))\n    {\n      levelNext--;\n      if (levelNext < SC_FOLDLEVELBASE)\n        levelNext = SC_FOLDLEVELBASE;\n    }\n\n    if (activeState == 0 && lastActiveState != 0)\n    {\n      // Decrease fold level when we left a hidden command.\n      levelNext--;\n      if (levelNext < SC_FOLDLEVELBASE)\n        levelNext = SC_FOLDLEVELBASE;\n    }\n\n    if (atEOL)\n    {\n      // Apply the new folding level to this line.\n      // Leave pending states as they are otherwise a line break will de-sync\n      // code folding and valid syntax.\n      int levelUse = levelCurrent;\n      int lev = levelUse | levelNext << 16;\n      if (visibleChars == 0 && foldCompact)\n        lev |= SC_FOLDLEVELWHITEFLAG;\n      if (levelUse < levelNext)\n        lev |= SC_FOLDLEVELHEADERFLAG;\n      if (lev != styler.LevelAt(lineCurrent))\n        styler.SetLevel(lineCurrent, lev);\n\n      lineCurrent++;\n      levelCurrent = levelNext;\n      visibleChars = 0;\n    }\n\n\t\tif (!isspacechar(currentChar))\n      visibleChars++;\n  }\n}\n\n//--------------------------------------------------------------------------------------------------\n\nstatic const char * const mysqlWordListDesc[] = {\n\t\"Major Keywords\",\n\t\"Keywords\",\n\t\"Database Objects\",\n\t\"Functions\",\n\t\"System Variables\",\n\t\"Procedure keywords\",\n\t\"User Keywords 1\",\n\t\"User Keywords 2\",\n\t\"User Keywords 3\",\n\t0\n};\n\nLexerModule lmMySQL(SCLEX_MYSQL, ColouriseMySQLDoc, \"mysql\", FoldMySQLDoc, mysqlWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexNimrod.cpp",
    "content": "// Scintilla source code edit control\n// Nimrod lexer\n// (c) 2009 Andreas Rumpf\n/** @file LexNimrod.cxx\n ** Lexer for Nimrod.\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(int ch) {\n\treturn (ch >= 0x80) || isalnum(ch) || ch == '_';\n}\n\nstatic Sci_Position tillEndOfTripleQuote(Accessor &styler, Sci_Position pos, Sci_Position max) {\n  /* search for \"\"\" */\n  for (;;) {\n    if (styler.SafeGetCharAt(pos, '\\0') == '\\0') return pos;\n    if (pos >= max) return pos;\n    if (styler.Match(pos, \"\\\"\\\"\\\"\")) {\n      return pos + 2;\n    }\n    pos++;\n  }\n}\n\n#define CR 13 /* use both because Scite allows changing the line ending */\n#define LF 10\n\nstatic bool inline isNewLine(int ch) {\n  return ch == CR || ch == LF;\n}\n\nstatic Sci_Position scanString(Accessor &styler, Sci_Position pos, Sci_Position max, bool rawMode) {\n  for (;;) {\n    if (pos >= max) return pos;\n    char ch = styler.SafeGetCharAt(pos, '\\0');\n    if (ch == CR || ch == LF || ch == '\\0') return pos;\n    if (ch == '\"') return pos;\n    if (ch == '\\\\' && !rawMode) {\n      pos += 2;\n    } else {\n      pos++;\n    }\n  }\n}\n\nstatic Sci_Position scanChar(Accessor &styler, Sci_Position pos, Sci_Position max) {\n  for (;;) {\n    if (pos >= max) return pos;\n    char ch = styler.SafeGetCharAt(pos, '\\0');\n    if (ch == CR || ch == LF || ch == '\\0') return pos;\n    if (ch == '\\'' && !isalnum(styler.SafeGetCharAt(pos+1, '\\0')) )\n      return pos;\n    if (ch == '\\\\') {\n      pos += 2;\n    } else {\n      pos++;\n    }\n  }\n}\n\nstatic Sci_Position scanIdent(Accessor &styler, Sci_Position pos, WordList &keywords) {\n  char buf[100]; /* copy to lowercase and ignore underscores */\n  Sci_Position i = 0;\n\n  for (;;) {\n    char ch = styler.SafeGetCharAt(pos, '\\0');\n    if (!IsAWordChar(ch)) break;\n    if (ch != '_' && i < ((int)sizeof(buf))-1) {\n      buf[i] = static_cast<char>(tolower(ch));\n      i++;\n    }\n    pos++;\n  }\n  buf[i] = '\\0';\n  /* look for keyword */\n  if (keywords.InList(buf)) {\n    styler.ColourTo(pos-1, SCE_P_WORD);\n  } else {\n    styler.ColourTo(pos-1, SCE_P_IDENTIFIER);\n  }\n  return pos;\n}\n\nstatic Sci_Position scanNumber(Accessor &styler, Sci_Position pos) {\n  char ch, ch2;\n  ch = styler.SafeGetCharAt(pos, '\\0');\n  ch2 = styler.SafeGetCharAt(pos+1, '\\0');\n  if (ch == '0' && (ch2 == 'b' || ch2 == 'B')) {\n    /* binary number: */\n    pos += 2;\n    for (;;) {\n      ch = styler.SafeGetCharAt(pos, '\\0');\n      if (ch == '_' || (ch >= '0' && ch <= '1')) ++pos;\n      else break;\n    }\n  } else if (ch == '0' &&\n            (ch2 == 'o' || ch2 == 'O' || ch2 == 'c' || ch2 == 'C')) {\n    /* octal number: */\n    pos += 2;\n    for (;;) {\n      ch = styler.SafeGetCharAt(pos, '\\0');\n      if (ch == '_' || (ch >= '0' && ch <= '7')) ++pos;\n      else break;\n    }\n  } else if (ch == '0' && (ch2 == 'x' || ch2 == 'X')) {\n    /* hexadecimal number: */\n    pos += 2;\n    for (;;) {\n      ch = styler.SafeGetCharAt(pos, '\\0');\n      if (ch == '_' || (ch >= '0' && ch <= '9')\n          || (ch >= 'a' && ch <= 'f')\n          || (ch >= 'A' && ch <= 'F')) ++pos;\n      else break;\n    }\n  } else {\n    // skip decimal part:\n    for (;;) {\n      ch = styler.SafeGetCharAt(pos, '\\0');\n      if (ch == '_' || (ch >= '0' && ch <= '9')) ++pos;\n      else break;\n    }\n    ch2 = styler.SafeGetCharAt(pos+1, '\\0');\n    if (ch == '.' && ch2 >= '0' && ch2 <= '9') {\n      ++pos; // skip '.'\n      for (;;) {\n        ch = styler.SafeGetCharAt(pos, '\\0');\n        if (ch == '_' || (ch >= '0' && ch <= '9')) ++pos;\n        else break;\n      }\n    }\n    if (ch == 'e' || ch == 'E') {\n      ++pos;\n      ch = styler.SafeGetCharAt(pos, '\\0');\n      if (ch == '-' || ch == '+') ++pos;\n      for (;;) {\n        ch = styler.SafeGetCharAt(pos, '\\0');\n        if (ch == '_' || (ch >= '0' && ch <= '9')) ++pos;\n        else break;\n      }\n    }\n  }\n  if (ch == '\\'') {\n    /* a type suffix: */\n    pos++;\n    for (;;) {\n      ch = styler.SafeGetCharAt(pos);\n      if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z')\n         || (ch >= 'a' && ch <= 'z') || ch == '_') ++pos;\n      else break;\n    }\n  }\n  styler.ColourTo(pos-1, SCE_P_NUMBER);\n  return pos;\n}\n\n/* rewritten from scratch, because I couldn't get rid of the bugs...\n   (A character based approach sucks!)\n*/\nstatic void ColouriseNimrodDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                                WordList *keywordlists[], Accessor &styler) {\n  Sci_Position pos = startPos;\n  Sci_Position max = startPos + length;\n  char ch;\n  WordList &keywords = *keywordlists[0];\n\n  styler.StartAt(startPos);\n  styler.StartSegment(startPos);\n\n  switch (initStyle) {\n    /* check where we are: */\n    case SCE_P_TRIPLEDOUBLE:\n      pos = tillEndOfTripleQuote(styler, pos, max);\n      styler.ColourTo(pos, SCE_P_TRIPLEDOUBLE);\n      pos++;\n    break;\n    default: /* nothing to do: */\n    break;\n  }\n  while (pos < max) {\n    ch = styler.SafeGetCharAt(pos, '\\0');\n    switch (ch) {\n      case '\\0': return;\n      case '#': {\n        bool doccomment = (styler.SafeGetCharAt(pos+1) == '#');\n        while (pos < max && !isNewLine(styler.SafeGetCharAt(pos, LF))) pos++;\n        if (doccomment)\n          styler.ColourTo(pos, SCE_C_COMMENTLINEDOC);\n        else\n          styler.ColourTo(pos, SCE_P_COMMENTLINE);\n      } break;\n      case 'r': case 'R': {\n        if (styler.SafeGetCharAt(pos+1) == '\"') {\n          pos = scanString(styler, pos+2, max, true);\n          styler.ColourTo(pos, SCE_P_STRING);\n          pos++;\n        } else {\n          pos = scanIdent(styler, pos, keywords);\n        }\n      } break;\n      case '\"':\n        if (styler.Match(pos+1, \"\\\"\\\"\")) {\n          pos = tillEndOfTripleQuote(styler, pos+3, max);\n          styler.ColourTo(pos, SCE_P_TRIPLEDOUBLE);\n        } else {\n          pos = scanString(styler, pos+1, max, false);\n          styler.ColourTo(pos, SCE_P_STRING);\n        }\n        pos++;\n      break;\n      case '\\'':\n        pos = scanChar(styler, pos+1, max);\n        styler.ColourTo(pos, SCE_P_CHARACTER);\n        pos++;\n      break;\n      default: // identifers, numbers, operators, whitespace\n        if (ch >= '0' && ch <= '9') {\n          pos = scanNumber(styler, pos);\n        } else if (IsAWordChar(ch)) {\n          pos = scanIdent(styler, pos, keywords);\n        } else if (ch == '`') {\n          pos++;\n          while (pos < max) {\n            ch = styler.SafeGetCharAt(pos, LF);\n            if (ch == '`') {\n              ++pos;\n              break;\n            }\n            if (ch == CR || ch == LF) break;\n            ++pos;\n          }\n          styler.ColourTo(pos, SCE_P_IDENTIFIER);\n        } else if (strchr(\"()[]{}:=;-\\\\/&%$!+<>|^?,.*~@\", ch)) {\n          styler.ColourTo(pos, SCE_P_OPERATOR);\n          pos++;\n        } else {\n          styler.ColourTo(pos, SCE_P_DEFAULT);\n          pos++;\n        }\n      break;\n    }\n  }\n}\n\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tif (ch == '#')\n\t\t\treturn true;\n\t\telse if (ch != ' ' && ch != '\\t')\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic bool IsQuoteLine(Sci_Position line, Accessor &styler) {\n\tint style = styler.StyleAt(styler.LineStart(line)) & 31;\n\treturn ((style == SCE_P_TRIPLE) || (style == SCE_P_TRIPLEDOUBLE));\n}\n\n\nstatic void FoldNimrodDoc(Sci_PositionU startPos, Sci_Position length,\n                          int /*initStyle - unused*/,\n                          WordList *[], Accessor &styler) {\n\tconst Sci_Position maxPos = startPos + length;\n\tconst Sci_Position maxLines = styler.GetLine(maxPos - 1); // Requested last line\n\tconst Sci_Position docLines = styler.GetLine(styler.Length() - 1); // Available last line\n\tconst bool foldComment = styler.GetPropertyInt(\"fold.comment.nimrod\") != 0;\n\tconst bool foldQuotes = styler.GetPropertyInt(\"fold.quotes.nimrod\") != 0;\n\n\t// Backtrack to previous non-blank line so we can determine indent level\n\t// for any white space lines (needed esp. within triple quoted strings)\n\t// and so we can fix any preceding fold level (which is why we go back\n\t// at least one line in all cases)\n\tint spaceFlags = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n\twhile (lineCurrent > 0) {\n\t\tlineCurrent--;\n\t\tindentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n\t\tif (!(indentCurrent & SC_FOLDLEVELWHITEFLAG) &&\n\t\t        (!IsCommentLine(lineCurrent, styler)) &&\n\t\t        (!IsQuoteLine(lineCurrent, styler)))\n\t\t\tbreak;\n\t}\n\tint indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\n\t// Set up initial loop state\n\tstartPos = styler.LineStart(lineCurrent);\n\tint prev_state = SCE_P_DEFAULT & 31;\n\tif (lineCurrent >= 1)\n\t\tprev_state = styler.StyleAt(startPos - 1) & 31;\n\tint prevQuote = foldQuotes && ((prev_state == SCE_P_TRIPLE) ||\n\t                               (prev_state == SCE_P_TRIPLEDOUBLE));\n\tint prevComment = 0;\n\tif (lineCurrent >= 1)\n\t\tprevComment = foldComment && IsCommentLine(lineCurrent - 1, styler);\n\n\t// Process all characters to end of requested range or end of any triple quote\n\t// or comment that hangs over the end of the range.  Cap processing in all cases\n\t// to end of document (in case of unclosed quote or comment at end).\n\twhile ((lineCurrent <= docLines) && ((lineCurrent <= maxLines) ||\n\t                                      prevQuote || prevComment)) {\n\n\t\t// Gather info\n\t\tint lev = indentCurrent;\n\t\tSci_Position lineNext = lineCurrent + 1;\n\t\tint indentNext = indentCurrent;\n\t\tint quote = false;\n\t\tif (lineNext <= docLines) {\n\t\t\t// Information about next line is only available if not at end of document\n\t\t\tindentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL);\n\t\t\tint style = styler.StyleAt(styler.LineStart(lineNext)) & 31;\n\t\t\tquote = foldQuotes && ((style == SCE_P_TRIPLE) || (style == SCE_P_TRIPLEDOUBLE));\n\t\t}\n\t\tconst int quote_start = (quote && !prevQuote);\n\t\tconst int quote_continue = (quote && prevQuote);\n\t\tconst int comment = foldComment && IsCommentLine(lineCurrent, styler);\n\t\tconst int comment_start = (comment && !prevComment && (lineNext <= docLines) &&\n\t\t                           IsCommentLine(lineNext, styler) &&\n\t\t                           (lev > SC_FOLDLEVELBASE));\n\t\tconst int comment_continue = (comment && prevComment);\n\t\tif ((!quote || !prevQuote) && !comment)\n\t\t\tindentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\t\tif (quote)\n\t\t\tindentNext = indentCurrentLevel;\n\t\tif (indentNext & SC_FOLDLEVELWHITEFLAG)\n\t\t\tindentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel;\n\n\t\tif (quote_start) {\n\t\t\t// Place fold point at start of triple quoted string\n\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t} else if (quote_continue || prevQuote) {\n\t\t\t// Add level to rest of lines in the string\n\t\t\tlev = lev + 1;\n\t\t} else if (comment_start) {\n\t\t\t// Place fold point at start of a block of comments\n\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t} else if (comment_continue) {\n\t\t\t// Add level to rest of lines in the block\n\t\t\tlev = lev + 1;\n\t\t}\n\n\t\t// Skip past any blank lines for next indent level info; we skip also\n\t\t// comments (all comments, not just those starting in column 0)\n\t\t// which effectively folds them into surrounding code rather\n\t\t// than screwing up folding.\n\n\t\twhile (!quote &&\n\t\t        (lineNext < docLines) &&\n\t\t        ((indentNext & SC_FOLDLEVELWHITEFLAG) ||\n\t\t         (lineNext <= docLines && IsCommentLine(lineNext, styler)))) {\n\n\t\t\tlineNext++;\n\t\t\tindentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL);\n\t\t}\n\n\t\tconst int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK;\n\t\tconst int levelBeforeComments =\n\t\t    Maximum(indentCurrentLevel,levelAfterComments);\n\n\t\t// Now set all the indent levels on the lines we skipped\n\t\t// Do this from end to start.  Once we encounter one line\n\t\t// which is indented more than the line after the end of\n\t\t// the comment-block, use the level of the block before\n\n\t\tSci_Position skipLine = lineNext;\n\t\tint skipLevel = levelAfterComments;\n\n\t\twhile (--skipLine > lineCurrent) {\n\t\t\tint skipLineIndent = styler.IndentAmount(skipLine, &spaceFlags, NULL);\n\n\t\t\tif ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments)\n\t\t\t\tskipLevel = levelBeforeComments;\n\n\t\t\tint whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG;\n\n\t\t\tstyler.SetLevel(skipLine, skipLevel | whiteFlag);\n\t\t}\n\n\t\t// Set fold header on non-quote/non-comment line\n\t\tif (!quote && !comment && !(indentCurrent & SC_FOLDLEVELWHITEFLAG) ) {\n\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) <\n\t\t\t     (indentNext & SC_FOLDLEVELNUMBERMASK))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t}\n\n\t\t// Keep track of triple quote and block comment state of previous line\n\t\tprevQuote = quote;\n\t\tprevComment = comment_start || comment_continue;\n\n\t\t// Set fold level for this line and move to next line\n\t\tstyler.SetLevel(lineCurrent, lev);\n\t\tindentCurrent = indentNext;\n\t\tlineCurrent = lineNext;\n\t}\n\n\t// NOTE: Cannot set level of last line here because indentCurrent doesn't have\n\t// header flag set; the loop above is crafted to take care of this case!\n\t//styler.SetLevel(lineCurrent, indentCurrent);\n}\n\nstatic const char * const nimrodWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmNimrod(SCLEX_NIMROD, ColouriseNimrodDoc, \"nimrod\", FoldNimrodDoc,\n\t\t\t\t     nimrodWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexNsis.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexNsis.cxx\n ** Lexer for NSIS\n **/\n// Copyright 2003 - 2005 by Angelo Mandato <angelo [at] spaceblue [dot] com>\n// Last Updated: 03/13/2005\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/*\n// located in SciLexer.h\n#define SCLEX_NSIS 43\n\n#define SCE_NSIS_DEFAULT 0\n#define SCE_NSIS_COMMENT 1\n#define SCE_NSIS_STRINGDQ 2\n#define SCE_NSIS_STRINGLQ 3\n#define SCE_NSIS_STRINGRQ 4\n#define SCE_NSIS_FUNCTION 5\n#define SCE_NSIS_VARIABLE 6\n#define SCE_NSIS_LABEL 7\n#define SCE_NSIS_USERDEFINED 8\n#define SCE_NSIS_SECTIONDEF 9\n#define SCE_NSIS_SUBSECTIONDEF 10\n#define SCE_NSIS_IFDEFINEDEF 11\n#define SCE_NSIS_MACRODEF 12\n#define SCE_NSIS_STRINGVAR 13\n#define SCE_NSIS_NUMBER 14\n// ADDED for Scintilla v1.63\n#define SCE_NSIS_SECTIONGROUP 15\n#define SCE_NSIS_PAGEEX 16\n#define SCE_NSIS_FUNCTIONDEF 17\n#define SCE_NSIS_COMMENTBOX 18\n*/\n\nstatic bool isNsisNumber(char ch)\n{\n  return (ch >= '0' && ch <= '9');\n}\n\nstatic bool isNsisChar(char ch)\n{\n  return (ch == '.' ) || (ch == '_' ) || isNsisNumber(ch) || (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');\n}\n\nstatic bool isNsisLetter(char ch)\n{\n  return (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');\n}\n\nstatic bool NsisNextLineHasElse(Sci_PositionU start, Sci_PositionU end, Accessor &styler)\n{\n  Sci_Position nNextLine = -1;\n  for( Sci_PositionU i = start; i < end; i++ )\n  {\n    char cNext = styler.SafeGetCharAt( i );\n    if( cNext == '\\n' )\n    {\n      nNextLine = i+1;\n      break;\n    }\n  }\n\n  if( nNextLine == -1 ) // We never found the next line...\n    return false;\n\n  for( Sci_PositionU firstChar = nNextLine; firstChar < end; firstChar++ )\n  {\n    char cNext = styler.SafeGetCharAt( firstChar );\n    if( cNext == ' ' )\n      continue;\n    if( cNext == '\\t' )\n      continue;\n    if( cNext == '!' )\n    {\n      if( styler.Match(firstChar, \"!else\") )\n        return true;\n    }\n    break;\n  }\n\n  return false;\n}\n\nstatic int NsisCmp( const char *s1, const char *s2, bool bIgnoreCase )\n{\n  if( bIgnoreCase )\n     return CompareCaseInsensitive( s1, s2);\n\n  return strcmp( s1, s2 );\n}\n\nstatic int calculateFoldNsis(Sci_PositionU start, Sci_PositionU end, int foldlevel, Accessor &styler, bool bElse, bool foldUtilityCmd )\n{\n  int style = styler.StyleAt(end);\n\n  // If the word is too long, it is not what we are looking for\n  if( end - start > 20 )\n    return foldlevel;\n\n  if( foldUtilityCmd )\n  {\n    // Check the style at this point, if it is not valid, then return zero\n    if( style != SCE_NSIS_FUNCTIONDEF && style != SCE_NSIS_SECTIONDEF &&\n        style != SCE_NSIS_SUBSECTIONDEF && style != SCE_NSIS_IFDEFINEDEF &&\n        style != SCE_NSIS_MACRODEF && style != SCE_NSIS_SECTIONGROUP &&\n        style != SCE_NSIS_PAGEEX )\n          return foldlevel;\n  }\n  else\n  {\n    if( style != SCE_NSIS_FUNCTIONDEF && style != SCE_NSIS_SECTIONDEF &&\n        style != SCE_NSIS_SUBSECTIONDEF && style != SCE_NSIS_SECTIONGROUP &&\n        style != SCE_NSIS_PAGEEX )\n          return foldlevel;\n  }\n\n  int newFoldlevel = foldlevel;\n  bool bIgnoreCase = false;\n  if( styler.GetPropertyInt(\"nsis.ignorecase\") == 1 )\n    bIgnoreCase = true;\n\n  char s[20]; // The key word we are looking for has atmost 13 characters\n  s[0] = '\\0';\n  for (Sci_PositionU i = 0; i < end - start + 1 && i < 19; i++)\n\t{\n\t\ts[i] = static_cast<char>( styler[ start + i ] );\n\t\ts[i + 1] = '\\0';\n\t}\n\n  if( s[0] == '!' )\n  {\n    if( NsisCmp(s, \"!ifndef\", bIgnoreCase) == 0 || NsisCmp(s, \"!ifdef\", bIgnoreCase ) == 0 || NsisCmp(s, \"!ifmacrodef\", bIgnoreCase ) == 0 || NsisCmp(s, \"!ifmacrondef\", bIgnoreCase ) == 0 || NsisCmp(s, \"!if\", bIgnoreCase ) == 0 || NsisCmp(s, \"!macro\", bIgnoreCase ) == 0 )\n      newFoldlevel++;\n    else if( NsisCmp(s, \"!endif\", bIgnoreCase) == 0 || NsisCmp(s, \"!macroend\", bIgnoreCase ) == 0 )\n      newFoldlevel--;\n    else if( bElse && NsisCmp(s, \"!else\", bIgnoreCase) == 0 )\n      newFoldlevel++;\n  }\n  else\n  {\n    if( NsisCmp(s, \"Section\", bIgnoreCase ) == 0 || NsisCmp(s, \"SectionGroup\", bIgnoreCase ) == 0 || NsisCmp(s, \"Function\", bIgnoreCase) == 0 || NsisCmp(s, \"SubSection\", bIgnoreCase ) == 0 || NsisCmp(s, \"PageEx\", bIgnoreCase ) == 0 )\n      newFoldlevel++;\n    else if( NsisCmp(s, \"SectionGroupEnd\", bIgnoreCase ) == 0 || NsisCmp(s, \"SubSectionEnd\", bIgnoreCase ) == 0 || NsisCmp(s, \"FunctionEnd\", bIgnoreCase) == 0 || NsisCmp(s, \"SectionEnd\", bIgnoreCase ) == 0 || NsisCmp(s, \"PageExEnd\", bIgnoreCase ) == 0 )\n      newFoldlevel--;\n  }\n\n  return newFoldlevel;\n}\n\nstatic int classifyWordNsis(Sci_PositionU start, Sci_PositionU end, WordList *keywordLists[], Accessor &styler )\n{\n  bool bIgnoreCase = false;\n  if( styler.GetPropertyInt(\"nsis.ignorecase\") == 1 )\n    bIgnoreCase = true;\n\n  bool bUserVars = false;\n  if( styler.GetPropertyInt(\"nsis.uservars\") == 1 )\n    bUserVars = true;\n\n\tchar s[100];\n\ts[0] = '\\0';\n\ts[1] = '\\0';\n\n\tWordList &Functions = *keywordLists[0];\n\tWordList &Variables = *keywordLists[1];\n\tWordList &Lables = *keywordLists[2];\n\tWordList &UserDefined = *keywordLists[3];\n\n\tfor (Sci_PositionU i = 0; i < end - start + 1 && i < 99; i++)\n\t{\n    if( bIgnoreCase )\n      s[i] = static_cast<char>( tolower(styler[ start + i ] ) );\n    else\n\t\t  s[i] = static_cast<char>( styler[ start + i ] );\n\t\ts[i + 1] = '\\0';\n\t}\n\n\t// Check for special words...\n\tif( NsisCmp(s, \"!macro\", bIgnoreCase ) == 0 || NsisCmp(s, \"!macroend\", bIgnoreCase) == 0 ) // Covers !macro and !macroend\n\t\treturn SCE_NSIS_MACRODEF;\n\n\tif( NsisCmp(s, \"!ifdef\", bIgnoreCase ) == 0 ||  NsisCmp(s, \"!ifndef\", bIgnoreCase) == 0 ||  NsisCmp(s, \"!endif\", bIgnoreCase) == 0 ) // Covers !ifdef, !ifndef and !endif\n\t\treturn SCE_NSIS_IFDEFINEDEF;\n\n\tif( NsisCmp(s, \"!if\", bIgnoreCase ) == 0 || NsisCmp(s, \"!else\", bIgnoreCase )  == 0 ) // Covers !if and else\n\t\treturn SCE_NSIS_IFDEFINEDEF;\n\n\tif (NsisCmp(s, \"!ifmacrodef\", bIgnoreCase ) == 0 || NsisCmp(s, \"!ifmacrondef\", bIgnoreCase )  == 0 ) // Covers !ifmacrodef and !ifnmacrodef\n\t\treturn SCE_NSIS_IFDEFINEDEF;\n\n  if( NsisCmp(s, \"SectionGroup\", bIgnoreCase) == 0 || NsisCmp(s, \"SectionGroupEnd\", bIgnoreCase) == 0 ) // Covers SectionGroup and SectionGroupEnd\n    return SCE_NSIS_SECTIONGROUP;\n\n\tif( NsisCmp(s, \"Section\", bIgnoreCase ) == 0 || NsisCmp(s, \"SectionEnd\", bIgnoreCase) == 0 ) // Covers Section and SectionEnd\n\t\treturn SCE_NSIS_SECTIONDEF;\n\n\tif( NsisCmp(s, \"SubSection\", bIgnoreCase) == 0 || NsisCmp(s, \"SubSectionEnd\", bIgnoreCase) == 0 ) // Covers SubSection and SubSectionEnd\n\t\treturn SCE_NSIS_SUBSECTIONDEF;\n\n  if( NsisCmp(s, \"PageEx\", bIgnoreCase) == 0 || NsisCmp(s, \"PageExEnd\", bIgnoreCase) == 0 ) // Covers PageEx and PageExEnd\n    return SCE_NSIS_PAGEEX;\n\n\tif( NsisCmp(s, \"Function\", bIgnoreCase) == 0 || NsisCmp(s, \"FunctionEnd\", bIgnoreCase) == 0 ) // Covers Function and FunctionEnd\n\t\treturn SCE_NSIS_FUNCTIONDEF;\n\n\tif ( Functions.InList(s) )\n\t\treturn SCE_NSIS_FUNCTION;\n\n\tif ( Variables.InList(s) )\n\t\treturn SCE_NSIS_VARIABLE;\n\n\tif ( Lables.InList(s) )\n\t\treturn SCE_NSIS_LABEL;\n\n\tif( UserDefined.InList(s) )\n\t\treturn SCE_NSIS_USERDEFINED;\n\n\tif( strlen(s) > 3 )\n\t{\n\t\tif( s[1] == '{' && s[strlen(s)-1] == '}' )\n\t\t\treturn SCE_NSIS_VARIABLE;\n\t}\n\n  // See if the variable is a user defined variable\n  if( s[0] == '$' && bUserVars )\n  {\n    bool bHasSimpleNsisChars = true;\n    for (Sci_PositionU j = 1; j < end - start + 1 && j < 99; j++)\n\t  {\n      if( !isNsisChar( s[j] ) )\n      {\n        bHasSimpleNsisChars = false;\n        break;\n      }\n\t  }\n\n    if( bHasSimpleNsisChars )\n      return SCE_NSIS_VARIABLE;\n  }\n\n  // To check for numbers\n  if( isNsisNumber( s[0] ) )\n  {\n    bool bHasSimpleNsisNumber = true;\n    for (Sci_PositionU j = 1; j < end - start + 1 && j < 99; j++)\n\t  {\n      if( !isNsisNumber( s[j] ) )\n      {\n        bHasSimpleNsisNumber = false;\n        break;\n      }\n\t  }\n\n    if( bHasSimpleNsisNumber )\n      return SCE_NSIS_NUMBER;\n  }\n\n\treturn SCE_NSIS_DEFAULT;\n}\n\nstatic void ColouriseNsisDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler)\n{\n\tint state = SCE_NSIS_DEFAULT;\n  if( startPos > 0 )\n    state = styler.StyleAt(startPos-1); // Use the style from the previous line, usually default, but could be commentbox\n\n\tstyler.StartAt( startPos );\n\tstyler.GetLine( startPos );\n\n\tSci_PositionU nLengthDoc = startPos + length;\n\tstyler.StartSegment( startPos );\n\n\tchar cCurrChar;\n\tbool bVarInString = false;\n  bool bClassicVarInString = false;\n\n\tSci_PositionU i;\n\tfor( i = startPos; i < nLengthDoc; i++ )\n\t{\n\t\tcCurrChar = styler.SafeGetCharAt( i );\n\t\tchar cNextChar = styler.SafeGetCharAt(i+1);\n\n\t\tswitch(state)\n\t\t{\n\t\t\tcase SCE_NSIS_DEFAULT:\n\t\t\t\tif( cCurrChar == ';' || cCurrChar == '#' ) // we have a comment line\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(i-1, state );\n\t\t\t\t\tstate = SCE_NSIS_COMMENT;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif( cCurrChar == '\"' )\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(i-1, state );\n\t\t\t\t\tstate = SCE_NSIS_STRINGDQ;\n\t\t\t\t\tbVarInString = false;\n          bClassicVarInString = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif( cCurrChar == '\\'' )\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(i-1, state );\n\t\t\t\t\tstate = SCE_NSIS_STRINGRQ;\n\t\t\t\t\tbVarInString = false;\n          bClassicVarInString = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif( cCurrChar == '`' )\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(i-1, state );\n\t\t\t\t\tstate = SCE_NSIS_STRINGLQ;\n\t\t\t\t\tbVarInString = false;\n          bClassicVarInString = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// NSIS KeyWord,Function, Variable, UserDefined:\n\t\t\t\tif( cCurrChar == '$' || isNsisChar(cCurrChar) || cCurrChar == '!' )\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(i-1,state);\n\t\t\t\t  state = SCE_NSIS_FUNCTION;\n\n          // If it is a number, we must check and set style here first...\n          if( isNsisNumber(cCurrChar) && (cNextChar == '\\t' || cNextChar == ' ' || cNextChar == '\\r' || cNextChar == '\\n' ) )\n              styler.ColourTo( i, SCE_NSIS_NUMBER);\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n        if( cCurrChar == '/' && cNextChar == '*' )\n        {\n          styler.ColourTo(i-1,state);\n          state = SCE_NSIS_COMMENTBOX;\n          break;\n        }\n\n\t\t\t\tbreak;\n\t\t\tcase SCE_NSIS_COMMENT:\n\t\t\t\tif( cNextChar == '\\n' || cNextChar == '\\r' )\n        {\n          // Special case:\n          if( cCurrChar == '\\\\' )\n          {\n            styler.ColourTo(i-2,state);\n            styler.ColourTo(i,SCE_NSIS_DEFAULT);\n          }\n          else\n          {\n\t\t\t\t    styler.ColourTo(i,state);\n            state = SCE_NSIS_DEFAULT;\n          }\n        }\n\t\t\t\tbreak;\n\t\t\tcase SCE_NSIS_STRINGDQ:\n      case SCE_NSIS_STRINGLQ:\n      case SCE_NSIS_STRINGRQ:\n\n        if( styler.SafeGetCharAt(i-1) == '\\\\' && styler.SafeGetCharAt(i-2) == '$' )\n          break; // Ignore the next character, even if it is a quote of some sort\n\n        if( cCurrChar == '\"' && state == SCE_NSIS_STRINGDQ )\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(i,state);\n\t\t\t\t  state = SCE_NSIS_DEFAULT;\n          break;\n\t\t\t\t}\n\n        if( cCurrChar == '`' && state == SCE_NSIS_STRINGLQ )\n        {\n\t\t\t\t\tstyler.ColourTo(i,state);\n\t\t\t\t  state = SCE_NSIS_DEFAULT;\n          break;\n\t\t\t\t}\n\n        if( cCurrChar == '\\'' && state == SCE_NSIS_STRINGRQ )\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo(i,state);\n\t\t\t\t  state = SCE_NSIS_DEFAULT;\n          break;\n\t\t\t\t}\n\n        if( cNextChar == '\\r' || cNextChar == '\\n' )\n        {\n          Sci_Position nCurLine = styler.GetLine(i+1);\n          Sci_Position nBack = i;\n          // We need to check if the previous line has a \\ in it...\n          bool bNextLine = false;\n\n          while( nBack > 0 )\n          {\n            if( styler.GetLine(nBack) != nCurLine )\n              break;\n\n            char cTemp = styler.SafeGetCharAt(nBack, 'a'); // Letter 'a' is safe here\n\n            if( cTemp == '\\\\' )\n            {\n              bNextLine = true;\n              break;\n            }\n            if( cTemp != '\\r' && cTemp != '\\n' && cTemp != '\\t' && cTemp != ' ' )\n              break;\n\n            nBack--;\n          }\n\n          if( bNextLine )\n          {\n            styler.ColourTo(i+1,state);\n          }\n          if( bNextLine == false )\n          {\n            styler.ColourTo(i,state);\n\t\t\t\t    state = SCE_NSIS_DEFAULT;\n          }\n        }\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_NSIS_FUNCTION:\n\n\t\t\t\t// NSIS KeyWord:\n        if( cCurrChar == '$' )\n          state = SCE_NSIS_DEFAULT;\n        else if( cCurrChar == '\\\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' ) )\n          state = SCE_NSIS_DEFAULT;\n\t\t\t\telse if( (isNsisChar(cCurrChar) && !isNsisChar( cNextChar) && cNextChar != '}') || cCurrChar == '}' )\n\t\t\t\t{\n\t\t\t\t\tstate = classifyWordNsis( styler.GetStartSegment(), i, keywordLists, styler );\n\t\t\t\t\tstyler.ColourTo( i, state);\n\t\t\t\t\tstate = SCE_NSIS_DEFAULT;\n\t\t\t\t}\n\t\t\t\telse if( !isNsisChar( cCurrChar ) && cCurrChar != '{' && cCurrChar != '}' )\n\t\t\t\t{\n          if( classifyWordNsis( styler.GetStartSegment(), i-1, keywordLists, styler) == SCE_NSIS_NUMBER )\n             styler.ColourTo( i-1, SCE_NSIS_NUMBER );\n\n\t\t\t\t\tstate = SCE_NSIS_DEFAULT;\n\n\t\t\t\t\tif( cCurrChar == '\"' )\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = SCE_NSIS_STRINGDQ;\n\t\t\t\t\t\tbVarInString = false;\n            bClassicVarInString = false;\n\t\t\t\t\t}\n\t\t\t\t\telse if( cCurrChar == '`' )\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = SCE_NSIS_STRINGLQ;\n\t\t\t\t\t\tbVarInString = false;\n            bClassicVarInString = false;\n\t\t\t\t\t}\n\t\t\t\t\telse if( cCurrChar == '\\'' )\n\t\t\t\t\t{\n\t\t\t\t\t\tstate = SCE_NSIS_STRINGRQ;\n\t\t\t\t\t\tbVarInString = false;\n            bClassicVarInString = false;\n\t\t\t\t\t}\n\t\t\t\t\telse if( cCurrChar == '#' || cCurrChar == ';' )\n          {\n\t\t\t\t\t\tstate = SCE_NSIS_COMMENT;\n          }\n\t\t\t\t}\n\t\t\t\tbreak;\n      case SCE_NSIS_COMMENTBOX:\n\n        if( styler.SafeGetCharAt(i-1) == '*' && cCurrChar == '/' )\n        {\n          styler.ColourTo(i,state);\n          state = SCE_NSIS_DEFAULT;\n        }\n        break;\n\t\t}\n\n\t\tif( state == SCE_NSIS_COMMENT || state == SCE_NSIS_COMMENTBOX )\n\t\t{\n\t\t\tstyler.ColourTo(i,state);\n\t\t}\n\t\telse if( state == SCE_NSIS_STRINGDQ || state == SCE_NSIS_STRINGLQ || state == SCE_NSIS_STRINGRQ )\n\t\t{\n      bool bIngoreNextDollarSign = false;\n      bool bUserVars = false;\n      if( styler.GetPropertyInt(\"nsis.uservars\") == 1 )\n        bUserVars = true;\n\n      if( bVarInString && cCurrChar == '$' )\n      {\n        bVarInString = false;\n        bIngoreNextDollarSign = true;\n      }\n      else if( bVarInString && cCurrChar == '\\\\' && (cNextChar == 'n' || cNextChar == 'r' || cNextChar == 't' || cNextChar == '\"' || cNextChar == '`' || cNextChar == '\\'' ) )\n      {\n        styler.ColourTo( i+1, SCE_NSIS_STRINGVAR);\n        bVarInString = false;\n        bIngoreNextDollarSign = false;\n      }\n\n      // Covers \"$INSTDIR and user vars like $MYVAR\"\n      else if( bVarInString && !isNsisChar(cNextChar) )\n      {\n        int nWordState = classifyWordNsis( styler.GetStartSegment(), i, keywordLists, styler);\n\t\t\t\tif( nWordState == SCE_NSIS_VARIABLE )\n\t\t\t\t\tstyler.ColourTo( i, SCE_NSIS_STRINGVAR);\n        else if( bUserVars )\n          styler.ColourTo( i, SCE_NSIS_STRINGVAR);\n        bVarInString = false;\n      }\n      // Covers \"${TEST}...\"\n      else if( bClassicVarInString && cNextChar == '}' )\n      {\n        styler.ColourTo( i+1, SCE_NSIS_STRINGVAR);\n\t\t\t\tbClassicVarInString = false;\n      }\n\n      // Start of var in string\n\t\t\tif( !bIngoreNextDollarSign && cCurrChar == '$' && cNextChar == '{' )\n\t\t\t{\n\t\t\t\tstyler.ColourTo( i-1, state);\n\t\t\t\tbClassicVarInString = true;\n        bVarInString = false;\n\t\t\t}\n      else if( !bIngoreNextDollarSign && cCurrChar == '$' )\n      {\n        styler.ColourTo( i-1, state);\n        bVarInString = true;\n        bClassicVarInString = false;\n      }\n\t\t}\n\t}\n\n  // Colourise remaining document\n\tstyler.ColourTo(nLengthDoc-1,state);\n}\n\nstatic void FoldNsisDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler)\n{\n\t// No folding enabled, no reason to continue...\n\tif( styler.GetPropertyInt(\"fold\") == 0 )\n\t\treturn;\n\n  bool foldAtElse = styler.GetPropertyInt(\"fold.at.else\", 0) == 1;\n  bool foldUtilityCmd = styler.GetPropertyInt(\"nsis.foldutilcmd\", 1) == 1;\n  bool blockComment = false;\n\n  Sci_Position lineCurrent = styler.GetLine(startPos);\n  Sci_PositionU safeStartPos = styler.LineStart( lineCurrent );\n\n  bool bArg1 = true;\n  Sci_Position nWordStart = -1;\n\n  int levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelNext = levelCurrent;\n  int style = styler.StyleAt(safeStartPos);\n  if( style == SCE_NSIS_COMMENTBOX )\n  {\n    if( styler.SafeGetCharAt(safeStartPos) == '/' && styler.SafeGetCharAt(safeStartPos+1) == '*' )\n      levelNext++;\n    blockComment = true;\n  }\n\n  for (Sci_PositionU i = safeStartPos; i < startPos + length; i++)\n\t{\n    char chCurr = styler.SafeGetCharAt(i);\n    style = styler.StyleAt(i);\n    if( blockComment && style != SCE_NSIS_COMMENTBOX )\n    {\n      levelNext--;\n      blockComment = false;\n    }\n    else if( !blockComment && style == SCE_NSIS_COMMENTBOX )\n    {\n      levelNext++;\n      blockComment = true;\n    }\n\n    if( bArg1 && !blockComment)\n    {\n      if( nWordStart == -1 && (isNsisLetter(chCurr) || chCurr == '!') )\n      {\n        nWordStart = i;\n      }\n      else if( isNsisLetter(chCurr) == false && nWordStart > -1 )\n      {\n        int newLevel = calculateFoldNsis( nWordStart, i-1, levelNext, styler, foldAtElse, foldUtilityCmd );\n\n        if( newLevel == levelNext )\n        {\n          if( foldAtElse && foldUtilityCmd )\n          {\n            if( NsisNextLineHasElse(i, startPos + length, styler) )\n              levelNext--;\n          }\n        }\n        else\n          levelNext = newLevel;\n        bArg1 = false;\n      }\n    }\n\n    if( chCurr == '\\n' )\n    {\n      if( bArg1 && foldAtElse && foldUtilityCmd && !blockComment )\n      {\n        if( NsisNextLineHasElse(i, startPos + length, styler) )\n          levelNext--;\n      }\n\n      // If we are on a new line...\n      int levelUse = levelCurrent;\n\t\t\tint lev = levelUse | levelNext << 16;\n      if (levelUse < levelNext )\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent))\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n      bArg1 = true; // New line, lets look at first argument again\n      nWordStart = -1;\n    }\n  }\n\n\tint levelUse = levelCurrent;\n\tint lev = levelUse | levelNext << 16;\n\tif (levelUse < levelNext)\n\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\tif (lev != styler.LevelAt(lineCurrent))\n\t\tstyler.SetLevel(lineCurrent, lev);\n}\n\nstatic const char * const nsisWordLists[] = {\n\t\"Functions\",\n\t\"Variables\",\n\t\"Lables\",\n\t\"UserDefined\",\n\t0, };\n\n\nLexerModule lmNsis(SCLEX_NSIS, ColouriseNsisDoc, \"nsis\", FoldNsisDoc, nsisWordLists);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexNull.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexNull.cxx\n ** Lexer for no language. Used for plain text and unrecognized files.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ColouriseNullDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[],\n                            Accessor &styler) {\n\t// Null language means all style bytes are 0 so just mark the end - no need to fill in.\n\tif (length > 0) {\n\t\tstyler.StartAt(startPos + length - 1);\n\t\tstyler.StartSegment(startPos + length - 1);\n\t\tstyler.ColourTo(startPos + length - 1, 0);\n\t}\n}\n\nLexerModule lmNull(SCLEX_NULL, ColouriseNullDoc, \"null\");\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexOScript.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexOScript.cxx\n ** Lexer for OScript sources; ocx files and/or OSpace dumps.\n ** OScript is a programming language used to develop applications for the\n ** Livelink server platform.\n **/\n// Written by Ferdinand Prantl <prantlf@gmail.com>, inspired by the code from\n// LexVB.cxx and LexPascal.cxx. The License.txt file describes the conditions\n// under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// -----------------------------------------\n// Functions classifying a single character.\n\n// This function is generic and should be probably moved to CharSet.h where\n// IsAlphaNumeric the others reside.\ninline bool IsAlpha(int ch) {\n\treturn (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');\n}\n\nstatic inline bool IsIdentifierChar(int ch) {\n\t// Identifiers cannot contain non-ASCII letters; a word with non-English\n\t// language-specific characters cannot be an identifier.\n\treturn IsAlphaNumeric(ch) || ch == '_';\n}\n\nstatic inline bool IsIdentifierStart(int ch) {\n\t// Identifiers cannot contain non-ASCII letters; a word with non-English\n\t// language-specific characters cannot be an identifier.\n\treturn IsAlpha(ch) || ch == '_';\n}\n\nstatic inline bool IsNumberChar(int ch, int chNext) {\n\t// Numeric constructs are not checked for lexical correctness. They are\n\t// expected to look like +1.23-E9 but actually any bunch of the following\n\t// characters will be styled as number.\n\t// KNOWN PROBLEM: if you put + or - operators immediately after a number\n\t// and the next operand starts with the letter E, the operator will not be\n\t// recognized and it will be styled together with the preceding number.\n\t// This should not occur; at least not often. The coding style recommends\n\t// putting spaces around operators.\n\treturn IsADigit(ch) || toupper(ch) == 'E' || ch == '.' ||\n\t\t   ((ch == '-' || ch == '+') && toupper(chNext) == 'E');\n}\n\n// This function checks for the start or a natural number without any symbols\n// or operators as a prefix; the IsPrefixedNumberStart should be called\n// immediately after this one to cover all possible numeric constructs.\nstatic inline bool IsNaturalNumberStart(int ch) {\n\treturn IsADigit(ch) != 0;\n}\n\nstatic inline bool IsPrefixedNumberStart(int ch, int chNext) {\n\t// KNOWN PROBLEM: if you put + or - operators immediately before a number\n\t// the operator will not be recognized and it will be styled together with\n\t// the succeeding number. This should not occur; at least not often. The\n\t// coding style recommends putting spaces around operators.\n\treturn (ch == '.' || ch == '-' || ch == '+') && IsADigit(chNext);\n}\n\nstatic inline bool IsOperator(int ch) {\n\treturn strchr(\"%^&*()-+={}[]:;<>,/?!.~|\\\\\", ch) != NULL;\n}\n\n// ---------------------------------------------------------------\n// Functions classifying a token currently processed in the lexer.\n\n// Checks if the current line starts with the preprocessor directive used\n// usually to introduce documentation comments: #ifdef DOC. This method is\n// supposed to be called if the line has been recognized as a preprocessor\n// directive already.\nstatic bool IsDocCommentStart(StyleContext &sc) {\n\t// Check the line back to its start only if the end looks promising.\n\tif (sc.LengthCurrent() == 10 && !IsAlphaNumeric(sc.ch)) {\n\t\tchar s[11];\n\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\treturn strcmp(s, \"#ifdef doc\") == 0;\n\t}\n\treturn false;\n}\n\n// Checks if the current line starts with the preprocessor directive that\n// is complementary to the #ifdef DOC start: #endif. This method is supposed\n// to be called if the current state point to the documentation comment.\n// QUESTIONAL ASSUMPTION: The complete #endif directive is not checked; just\n// the starting #e. However, there is no other preprocessor directive with\n// the same starting letter and thus this optimization should always work.\nstatic bool IsDocCommentEnd(StyleContext &sc) {\n\treturn sc.ch == '#' && sc.chNext == 'e';\n}\n\nclass IdentifierClassifier {\n\tWordList &keywords;  // Passed from keywords property.\n\tWordList &constants; // Passed from keywords2 property.\n\tWordList &operators; // Passed from keywords3 property.\n\tWordList &types;     // Passed from keywords4 property.\n\tWordList &functions; // Passed from keywords5 property.\n\tWordList &objects;   // Passed from keywords6 property.\n\n\tIdentifierClassifier(IdentifierClassifier const&);\n\tIdentifierClassifier& operator=(IdentifierClassifier const&);\n\npublic:\n\tIdentifierClassifier(WordList *keywordlists[]) :\n\t\tkeywords(*keywordlists[0]), constants(*keywordlists[1]),\n\t\toperators(*keywordlists[2]), types(*keywordlists[3]),\n\t\tfunctions(*keywordlists[4]), objects(*keywordlists[5])\n\t{}\n\n\tvoid ClassifyIdentifier(StyleContext &sc) {\n\t\t// Opening parenthesis following an identifier makes it a possible\n\t\t// function call.\n\t\t// KNOWN PROBLEM: If some whitespace is inserted between the\n\t\t// identifier and the parenthesis they will not be able to be\n\t\t// recognized as a function call. This should not occur; at\n\t\t// least not often. Such coding style would be weird.\n\t\tif (sc.Match('(')) {\n\t\t\tchar s[100];\n\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t// Before an opening brace can be control statements and\n\t\t\t// operators too; function call is the last option.\n\t\t\tif (keywords.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_OSCRIPT_KEYWORD);\n\t\t\t} else if (operators.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_OSCRIPT_OPERATOR);\n\t\t\t} else if (functions.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_OSCRIPT_FUNCTION);\n\t\t\t} else {\n\t\t\t\tsc.ChangeState(SCE_OSCRIPT_METHOD);\n\t\t\t}\n\t\t\tsc.SetState(SCE_OSCRIPT_OPERATOR);\n\t\t} else {\n\t\t\tchar s[100];\n\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t// A dot following an identifier means an access to an object\n\t\t\t// member. The related object identifier can be special.\n\t\t\t// KNOWN PROBLEM: If there is whitespace between the identifier\n\t\t\t// and the following dot, the identifier will not be recognized\n\t\t\t// as an object in an object member access. If it is one of the\n\t\t\t// listed static objects it will not be styled.\n\t\t\tif (sc.Match('.') && objects.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_OSCRIPT_OBJECT);\n\t\t\t\tsc.SetState(SCE_OSCRIPT_OPERATOR);\n\t\t\t} else {\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_OSCRIPT_KEYWORD);\n\t\t\t\t} else if (constants.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_OSCRIPT_CONSTANT);\n\t\t\t\t} else if (operators.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_OSCRIPT_OPERATOR);\n\t\t\t\t} else if (types.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_OSCRIPT_TYPE);\n\t\t\t\t} else if (functions.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_OSCRIPT_FUNCTION);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t}\n\t}\n};\n\n// ------------------------------------------------\n// Function colourising an excerpt of OScript code.\n\nstatic void ColouriseOScriptDoc(Sci_PositionU startPos, Sci_Position length,\n\t\t\t\t\t\t\t\tint initStyle, WordList *keywordlists[],\n\t\t\t\t\t\t\t\tAccessor &styler) {\n\t// I wonder how whole-line styles ended by EOLN can escape the resetting\n\t// code in the loop below and overflow to the next line. Let us make sure\n\t// that a new line does not start with them carried from the previous one.\n\t// NOTE: An overflowing string is intentionally not checked; it reminds\n\t// the developer that the string must be ended on the same line.\n\tif (initStyle == SCE_OSCRIPT_LINE_COMMENT ||\n\t\t\tinitStyle == SCE_OSCRIPT_PREPROCESSOR) {\n\t\tinitStyle = SCE_OSCRIPT_DEFAULT;\n\t}\n\n\tstyler.StartAt(startPos);\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tIdentifierClassifier identifierClassifier(keywordlists);\n\n\t// It starts with true at the beginning of a line and changes to false as\n\t// soon as the first non-whitespace character has been processed.\n\tbool isFirstToken = true;\n\t// It starts with true at the beginning of a line and changes to false as\n\t// soon as the first identifier on the line is passed by.\n\tbool isFirstIdentifier = true;\n\t// It becomes false when #ifdef DOC (the preprocessor directive often\n\t// used to start a documentation comment) is encountered and remain false\n\t// until the end of the documentation block is not detected. This is done\n\t// by checking for the complementary #endif preprocessor directive.\n\tbool endDocComment = false;\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.atLineStart) {\n\t\t\tisFirstToken = true;\n\t\t\tisFirstIdentifier = true;\n\t\t// Detect the current state is neither whitespace nor identifier. It\n\t\t// means that no next identifier can be the first token on the line.\n\t\t} else if (isFirstIdentifier && sc.state != SCE_OSCRIPT_DEFAULT &&\n\t\t\t\t   sc.state != SCE_OSCRIPT_IDENTIFIER) {\n\t\t\tisFirstIdentifier = false;\n\t\t}\n\n\t\t// Check if the current state should be changed.\n\t\tif (sc.state == SCE_OSCRIPT_OPERATOR) {\n\t\t\t// Multiple-symbol operators are marked by single characters.\n\t\t\tsc.SetState(SCE_OSCRIPT_DEFAULT);\n\t\t} else if (sc.state == SCE_OSCRIPT_IDENTIFIER) {\n\t\t\tif (!IsIdentifierChar(sc.ch)) {\n\t\t\t\t// Colon after an identifier makes it a label if it is the\n\t\t\t\t// first token on the line.\n\t\t\t\t// KNOWN PROBLEM: If some whitespace is inserted between the\n\t\t\t\t// identifier and the colon they will not be recognized as a\n\t\t\t\t// label. This should not occur; at least not often. It would\n\t\t\t\t// make the code structure less legible and examples in the\n\t\t\t\t// Livelink documentation do not show it.\n\t\t\t\tif (sc.Match(':') && isFirstIdentifier) {\n\t\t\t\t\tsc.ChangeState(SCE_OSCRIPT_LABEL);\n\t\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t\t} else {\n\t\t\t\t\tidentifierClassifier.ClassifyIdentifier(sc);\n\t\t\t\t}\n\t\t\t\t// Avoid a sequence of two words be mistaken for a label. A\n\t\t\t\t// switch case would be an example.\n\t\t\t\tisFirstIdentifier = false;\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_GLOBAL) {\n\t\t\tif (!IsIdentifierChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_PROPERTY) {\n\t\t\tif (!IsIdentifierChar(sc.ch)) {\n\t\t\t\t// Any member access introduced by the dot operator is\n\t\t\t\t// initially marked as a property access. If an opening\n\t\t\t\t// parenthesis is detected later it is changed to method call.\n\t\t\t\t// KNOWN PROBLEM: The same as at the function call recognition\n\t\t\t\t// for SCE_OSCRIPT_IDENTIFIER above.\n\t\t\t\tif (sc.Match('(')) {\n\t\t\t\t\tsc.ChangeState(SCE_OSCRIPT_METHOD);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_NUMBER) {\n\t\t\tif (!IsNumberChar(sc.ch, sc.chNext)) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_SINGLEQUOTE_STRING) {\n\t\t\tif (sc.ch == '\\'') {\n\t\t\t\t// Two consequential apostrophes convert to a single one.\n\t\t\t\tif (sc.chNext == '\\'') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_DOUBLEQUOTE_STRING) {\n\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\t// Two consequential quotation marks convert to a single one.\n\t\t\t\tif (sc.chNext == '\\\"') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t\t}\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_BLOCK_COMMENT) {\n\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_LINE_COMMENT) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_PREPROCESSOR) {\n\t\t\tif (IsDocCommentStart(sc)) {\n\t\t\t\tsc.ChangeState(SCE_OSCRIPT_DOC_COMMENT);\n\t\t\t\tendDocComment = false;\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_OSCRIPT_DOC_COMMENT) {\n\t\t\t// KNOWN PROBLEM: The first line detected that would close a\n\t\t\t// conditional preprocessor block (#endif) the documentation\n\t\t\t// comment block will end. (Nested #if-#endif blocks are not\n\t\t\t// supported. Hopefully it will not occur often that a line\n\t\t\t// within the text block would stat with #endif.\n\t\t\tif (isFirstToken && IsDocCommentEnd(sc)) {\n\t\t\t\tendDocComment = true;\n\t\t\t} else if (sc.atLineEnd && endDocComment) {\n\t\t\t\tsc.ForwardSetState(SCE_OSCRIPT_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Check what state starts with the current character.\n\t\tif (sc.state == SCE_OSCRIPT_DEFAULT) {\n\t\t\tif (sc.Match('\\'')) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_SINGLEQUOTE_STRING);\n\t\t\t} else if (sc.Match('\\\"')) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_DOUBLEQUOTE_STRING);\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_LINE_COMMENT);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_BLOCK_COMMENT);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (isFirstToken && sc.Match('#')) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_PREPROCESSOR);\n\t\t\t} else if (sc.Match('$')) {\n\t\t\t\t// Both process-global ($xxx) and thread-global ($$xxx)\n\t\t\t\t// variables are handled as one global.\n\t\t\t\tsc.SetState(SCE_OSCRIPT_GLOBAL);\n\t\t\t} else if (IsNaturalNumberStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_NUMBER);\n\t\t\t} else if (IsPrefixedNumberStart(sc.ch, sc.chNext)) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_NUMBER);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match('.') && IsIdentifierStart(sc.chNext)) {\n\t\t\t\t// Every object member access is marked as a property access\n\t\t\t\t// initially. The decision between property and method is made\n\t\t\t\t// after parsing the identifier and looking what comes then.\n\t\t\t\t// KNOWN PROBLEM: If there is whitespace between the following\n\t\t\t\t// identifier and the dot, the dot will not be recognized\n\t\t\t\t// as a member accessing operator. In turn, the identifier\n\t\t\t\t// will not be recognizable as a property or a method too.\n\t\t\t\tsc.SetState(SCE_OSCRIPT_OPERATOR);\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState(SCE_OSCRIPT_PROPERTY);\n\t\t\t} else if (IsIdentifierStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_IDENTIFIER);\n\t\t\t} else if (IsOperator(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_OSCRIPT_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t\tif (isFirstToken && !IsASpaceOrTab(sc.ch)) {\n\t\t\tisFirstToken = false;\n\t\t}\n\t}\n\n\tsc.Complete();\n}\n\n// ------------------------------------------\n// Functions supporting OScript code folding.\n\nstatic inline bool IsBlockComment(int style) {\n\treturn style == SCE_OSCRIPT_BLOCK_COMMENT;\n}\n\nstatic bool IsLineComment(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eolPos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eolPos; i++) {\n\t\tchar ch = styler[i];\n\t\tchar chNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styler.StyleAt(i);\n\t\tif (ch == '/' && chNext == '/' && style == SCE_OSCRIPT_LINE_COMMENT) {\n\t\t\treturn true;\n\t\t} else if (!IsASpaceOrTab(ch)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n}\n\nstatic inline bool IsPreprocessor(int style) {\n\treturn style == SCE_OSCRIPT_PREPROCESSOR ||\n\t\t   style == SCE_OSCRIPT_DOC_COMMENT;\n}\n\nstatic void GetRangeLowered(Sci_PositionU start, Sci_PositionU end,\n\t\t\t\t\t\t\tAccessor &styler, char *s, Sci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile (i < end - start + 1 && i < len - 1) {\n\t\ts[i] = static_cast<char>(tolower(styler[start + i]));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nstatic void GetForwardWordLowered(Sci_PositionU start, Accessor &styler,\n\t\t\t\t\t\t\t\t  char *s, Sci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile (i < len - 1 && IsAlpha(styler.SafeGetCharAt(start + i))) {\n\t\ts[i] = static_cast<char>(tolower(styler.SafeGetCharAt(start + i)));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nstatic void UpdatePreprocessorFoldLevel(int &levelCurrent,\n\t\tSci_PositionU startPos, Accessor &styler) {\n\tchar s[7]; // Size of the longest possible keyword + null.\n\tGetForwardWordLowered(startPos, styler, s, sizeof(s));\n\n\tif (strcmp(s, \"ifdef\") == 0 ||\n\t\tstrcmp(s, \"ifndef\") == 0) {\n\t\tlevelCurrent++;\n\t} else if (strcmp(s, \"endif\") == 0) {\n\t\tlevelCurrent--;\n\t\tif (levelCurrent < SC_FOLDLEVELBASE) {\n\t\t\tlevelCurrent = SC_FOLDLEVELBASE;\n\t\t}\n\t}\n}\n\nstatic void UpdateKeywordFoldLevel(int &levelCurrent, Sci_PositionU lastStart,\n\t\tSci_PositionU currentPos, Accessor &styler) {\n\tchar s[9];\n\tGetRangeLowered(lastStart, currentPos, styler, s, sizeof(s));\n\n\tif (strcmp(s, \"if\") == 0 || strcmp(s, \"for\") == 0 ||\n\t\tstrcmp(s, \"switch\") == 0 || strcmp(s, \"function\") == 0 ||\n\t\tstrcmp(s, \"while\") == 0 || strcmp(s, \"repeat\") == 0) {\n\t\tlevelCurrent++;\n\t} else if (strcmp(s, \"end\") == 0 || strcmp(s, \"until\") == 0) {\n\t\tlevelCurrent--;\n\t\tif (levelCurrent < SC_FOLDLEVELBASE) {\n\t\t\tlevelCurrent = SC_FOLDLEVELBASE;\n\t\t}\n\t}\n}\n\n// ------------------------------\n// Function folding OScript code.\n\nstatic void FoldOScriptDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\t\t\t\t\t   WordList *[], Accessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldPreprocessor = styler.GetPropertyInt(\"fold.preprocessor\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_Position endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tint lastStart = 0;\n\n\tfor (Sci_Position i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atLineEnd = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (foldComment && IsBlockComment(style)) {\n\t\t\tif (!IsBlockComment(stylePrev)) {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (!IsBlockComment(styleNext) && !atLineEnd) {\n\t\t\t\t// Comments do not end at end of line and the next character\n\t\t\t\t// may not be styled.\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (foldComment && atLineEnd && IsLineComment(lineCurrent, styler)) {\n\t\t\tif (!IsLineComment(lineCurrent - 1, styler) &&\n\t\t\t\tIsLineComment(lineCurrent + 1, styler))\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (IsLineComment(lineCurrent - 1, styler) &&\n\t\t\t\t\t !IsLineComment(lineCurrent+1, styler))\n\t\t\t\tlevelCurrent--;\n\t\t}\n\t\tif (foldPreprocessor) {\n\t\t\tif (ch == '#' && IsPreprocessor(style)) {\n\t\t\t\tUpdatePreprocessorFoldLevel(levelCurrent, i + 1, styler);\n\t\t\t}\n\t\t}\n\n\t\tif (stylePrev != SCE_OSCRIPT_KEYWORD && style == SCE_OSCRIPT_KEYWORD) {\n\t\t\tlastStart = i;\n\t\t}\n\t\tif (stylePrev == SCE_OSCRIPT_KEYWORD) {\n\t\t\tif(IsIdentifierChar(ch) && !IsIdentifierChar(chNext)) {\n\t\t\t\tUpdateKeywordFoldLevel(levelCurrent, lastStart, i, styler);\n\t\t\t}\n\t\t}\n\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\n\t\tif (atLineEnd) {\n\t\t\tint level = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlevel |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (level != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, level);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t}\n\n\t// If we did not reach EOLN in the previous loop, store the line level and\n\t// whitespace information. The rest will be filled in later.\n\tint lev = levelPrev;\n\tif (visibleChars == 0 && foldCompact)\n\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\tstyler.SetLevel(lineCurrent, lev);\n}\n\n// --------------------------------------------\n// Declaration of the OScript lexer descriptor.\n\nstatic const char * const oscriptWordListDesc[] = {\n\t\"Keywords and reserved words\",\n\t\"Literal constants\",\n\t\"Literal operators\",\n\t\"Built-in value and reference types\",\n\t\"Built-in global functions\",\n\t\"Built-in static objects\",\n\t0\n};\n\nLexerModule lmOScript(SCLEX_OSCRIPT, ColouriseOScriptDoc, \"oscript\", FoldOScriptDoc, oscriptWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexOpal.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexOpal.cxx\n ** Lexer for OPAL (functional language similar to Haskell)\n ** Written by Sebastian Pipping <webmaster@hartwork.org>\n **/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\ninline static void getRange( Sci_PositionU start, Sci_PositionU end, Accessor & styler, char * s, Sci_PositionU len )\n{\n\tSci_PositionU i = 0;\n\twhile( ( i < end - start + 1 ) && ( i < len - 1 ) )\n\t{\n\t\ts[i] = static_cast<char>( styler[ start + i ] );\n\t\ti++;\n\t}\n\ts[ i ] = '\\0';\n}\n\ninline bool HandleString( Sci_PositionU & cur, Sci_PositionU one_too_much, Accessor & styler )\n{\n\tchar ch;\n\n\t// Wait for string to close\n\tbool even_backslash_count = true; // Without gaps in between\n\tcur++; // Skip initial quote\n\tfor( ; ; )\n\t{\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_STRING );\n\t\t\treturn false; // STOP\n\t\t}\n\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tif( ( ch == '\\015' ) || ( ch == '\\012' ) ) // Deny multi-line strings\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_STRING );\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif( even_backslash_count )\n\t\t\t{\n\t\t\t\tif( ch == '\"' )\n\t\t\t\t{\n\t\t\t\t\tstyler.ColourTo( cur, SCE_OPAL_STRING );\n\t\t\t\t\tcur++;\n\t\t\t\t\tif( cur >= one_too_much )\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false; // STOP\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tstyler.StartSegment( cur );\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if( ch == '\\\\' )\n\t\t\t\t{\n\t\t\t\t\teven_backslash_count = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\teven_backslash_count = true;\n\t\t\t}\n\t\t}\n\n\t\tcur++;\n\t}\n}\n\ninline bool HandleCommentBlock( Sci_PositionU & cur, Sci_PositionU one_too_much, Accessor & styler, bool could_fail )\n{\n\tchar ch;\n\n\tif( could_fail )\n\t{\n\t\tcur++;\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_DEFAULT );\n\t\t\treturn false; // STOP\n\t\t}\n\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tif( ch != '*' )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_DEFAULT );\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// Wait for comment close\n\tcur++;\n\tbool star_found = false;\n\tfor( ; ; )\n\t{\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_COMMENT_BLOCK );\n\t\t\treturn false; // STOP\n\t\t}\n\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tif( star_found )\n\t\t{\n\t\t\tif( ch == '/' )\n\t\t\t{\n\t\t\t\tstyler.ColourTo( cur, SCE_OPAL_COMMENT_BLOCK );\n\t\t\t\tcur++;\n\t\t\t\tif( cur >= one_too_much )\n\t\t\t\t{\n\t\t\t\t\treturn false; // STOP\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tstyler.StartSegment( cur );\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if( ch != '*' )\n\t\t\t{\n\t\t\t\tstar_found = false;\n\t\t\t}\n\t\t}\n\t\telse if( ch == '*' )\n\t\t{\n\t\t\tstar_found = true;\n\t\t}\n\t\tcur++;\n\t}\n}\n\ninline bool HandleCommentLine( Sci_PositionU & cur, Sci_PositionU one_too_much, Accessor & styler, bool could_fail )\n{\n\tchar ch;\n\n\tif( could_fail )\n\t{\n\t\tcur++;\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_DEFAULT );\n\t\t\treturn false; // STOP\n\t\t}\n\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tif( ch != '-' )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_DEFAULT );\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\n\t\tcur++;\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_DEFAULT );\n\t\t\treturn false; // STOP\n\t\t}\n\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tif( ( ch != ' ' ) && ( ch != '\\t' ) )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_DEFAULT );\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t}\n\n\t// Wait for end of line\n\tbool fifteen_found = false;\n\n\tfor( ; ; )\n\t{\n\t\tcur++;\n\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_COMMENT_LINE );\n\t\t\treturn false; // STOP\n\t\t}\n\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tif( fifteen_found )\n\t\t{\n/*\n\t\t\tif( ch == '\\012' )\n\t\t\t{\n\t\t\t\t// One newline on Windows (015, 012)\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t// One newline on MAC (015) and another char\n\t\t\t}\n*/\n\t\t\tcur--;\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_COMMENT_LINE );\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif( ch == '\\015' )\n\t\t\t{\n\t\t\t\tfifteen_found = true;\n\t\t\t}\n\t\t\telse if( ch == '\\012' )\n\t\t\t{\n\t\t\t\t// One newline on Linux (012)\n\t\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_COMMENT_LINE );\n\t\t\t\tstyler.StartSegment( cur );\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n}\n\ninline bool HandlePar( Sci_PositionU & cur, Accessor & styler )\n{\n\tstyler.ColourTo( cur, SCE_OPAL_PAR );\n\n\tcur++;\n\n\tstyler.StartSegment( cur );\n\treturn true;\n}\n\ninline bool HandleSpace( Sci_PositionU & cur, Sci_PositionU one_too_much, Accessor & styler )\n{\n\tchar ch;\n\n\tcur++;\n\tfor( ; ; )\n\t{\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_SPACE );\n\t\t\treturn false;\n\t\t}\n\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tswitch( ch )\n\t\t{\n\t\tcase ' ':\n\t\tcase '\\t':\n\t\tcase '\\015':\n\t\tcase '\\012':\n\t\t\tcur++;\n\t\t\tbreak;\n\n\t\tdefault:\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_SPACE );\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t}\n}\n\ninline bool HandleInteger( Sci_PositionU & cur, Sci_PositionU one_too_much, Accessor & styler )\n{\n\tchar ch;\n\n\tfor( ; ; )\n\t{\n\t\tcur++;\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_INTEGER );\n\t\t\treturn false; // STOP\n\t\t}\n\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tif( !( IsASCII( ch ) && isdigit( ch ) ) )\n\t\t{\n\t\t\tstyler.ColourTo( cur - 1, SCE_OPAL_INTEGER );\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t}\n}\n\ninline bool HandleWord( Sci_PositionU & cur, Sci_PositionU one_too_much, Accessor & styler, WordList * keywordlists[] )\n{\n\tchar ch;\n\tconst Sci_PositionU beg = cur;\n\n\tcur++;\n\tfor( ; ; )\n\t{\n\t\tch = styler.SafeGetCharAt( cur );\n\t\tif( ( ch != '_' ) && ( ch != '-' ) &&\n\t\t\t!( IsASCII( ch ) && ( islower( ch ) || isupper( ch ) || isdigit( ch ) ) ) ) break;\n\n\t\tcur++;\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tconst Sci_Position ide_len = cur - beg + 1;\n\tchar * ide = new char[ ide_len ];\n\tgetRange( beg, cur, styler, ide, ide_len );\n\n\tWordList & keywords    = *keywordlists[ 0 ];\n\tWordList & classwords  = *keywordlists[ 1 ];\n\n\tif( keywords.InList( ide ) ) // Keyword\n\t{\n\t\tdelete [] ide;\n\n\t\tstyler.ColourTo( cur - 1, SCE_OPAL_KEYWORD );\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\treturn false; // STOP\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t}\n\telse if( classwords.InList( ide ) ) // Sort\n\t{\n\t\tdelete [] ide;\n\n\t\tstyler.ColourTo( cur - 1, SCE_OPAL_SORT );\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\treturn false; // STOP\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t}\n\telse if( !strcmp( ide, \"true\" ) || !strcmp( ide, \"false\" ) ) // Bool const\n\t{\n\t\tdelete [] ide;\n\n\t\tstyler.ColourTo( cur - 1, SCE_OPAL_BOOL_CONST );\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\treturn false; // STOP\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t}\n\telse // Unknown keyword\n\t{\n\t\tdelete [] ide;\n\n\t\tstyler.ColourTo( cur - 1, SCE_OPAL_DEFAULT );\n\t\tif( cur >= one_too_much )\n\t\t{\n\t\t\treturn false; // STOP\n\t\t}\n\t\telse\n\t\t{\n\t\t\tstyler.StartSegment( cur );\n\t\t\treturn true;\n\t\t}\n\t}\n\n}\n\ninline bool HandleSkip( Sci_PositionU & cur, Sci_PositionU one_too_much, Accessor & styler )\n{\n\tcur++;\n\tstyler.ColourTo( cur - 1, SCE_OPAL_DEFAULT );\n\tif( cur >= one_too_much )\n\t{\n\t\treturn false; // STOP\n\t}\n\telse\n\t{\n\t\tstyler.StartSegment( cur );\n\t\treturn true;\n\t}\n}\n\nstatic void ColouriseOpalDoc( Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor & styler )\n{\n\tstyler.StartAt( startPos );\n\tstyler.StartSegment( startPos );\n\n\tSci_PositionU & cur = startPos;\n\tconst Sci_PositionU one_too_much = startPos + length;\n\n\tint state = initStyle;\n\n\tfor( ; ; )\n\t{\n\t\tswitch( state )\n\t\t{\n\t\tcase SCE_OPAL_KEYWORD:\n\t\tcase SCE_OPAL_SORT:\n\t\t\tif( !HandleWord( cur, one_too_much, styler, keywordlists ) ) return;\n\t\t\tstate = SCE_OPAL_DEFAULT;\n\t\t\tbreak;\n\n\t\tcase SCE_OPAL_INTEGER:\n\t\t\tif( !HandleInteger( cur, one_too_much, styler ) ) return;\n\t\t\tstate = SCE_OPAL_DEFAULT;\n\t\t\tbreak;\n\n\t\tcase SCE_OPAL_COMMENT_BLOCK:\n\t\t\tif( !HandleCommentBlock( cur, one_too_much, styler, false ) ) return;\n\t\t\tstate = SCE_OPAL_DEFAULT;\n\t\t\tbreak;\n\n\t\tcase SCE_OPAL_COMMENT_LINE:\n\t\t\tif( !HandleCommentLine( cur, one_too_much, styler, false ) ) return;\n\t\t\tstate = SCE_OPAL_DEFAULT;\n\t\t\tbreak;\n\n\t\tcase SCE_OPAL_STRING:\n\t\t\tif( !HandleString( cur, one_too_much, styler ) ) return;\n\t\t\tstate = SCE_OPAL_DEFAULT;\n\t\t\tbreak;\n\n\t\tdefault: // SCE_OPAL_DEFAULT:\n\t\t\t{\n\t\t\t\tchar ch = styler.SafeGetCharAt( cur );\n\n\t\t\t\tswitch( ch )\n\t\t\t\t{\n\t\t\t\t// String\n\t\t\t\tcase '\"':\n\t\t\t\t\tif( !HandleString( cur, one_too_much, styler ) ) return;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// Comment block\n\t\t\t\tcase '/':\n\t\t\t\t\tif( !HandleCommentBlock( cur, one_too_much, styler, true ) ) return;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// Comment line\n\t\t\t\tcase '-':\n\t\t\t\t\tif( !HandleCommentLine( cur, one_too_much, styler, true ) ) return;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// Par\n\t\t\t\tcase '(':\n\t\t\t\tcase ')':\n\t\t\t\tcase '[':\n\t\t\t\tcase ']':\n\t\t\t\tcase '{':\n\t\t\t\tcase '}':\n\t\t\t\t\tif( !HandlePar( cur, styler ) ) return;\n\t\t\t\t\tbreak;\n\n\t\t\t\t// Whitespace\n\t\t\t\tcase ' ':\n\t\t\t\tcase '\\t':\n\t\t\t\tcase '\\015':\n\t\t\t\tcase '\\012':\n\t\t\t\t\tif( !HandleSpace( cur, one_too_much, styler ) ) return;\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\t{\n\t\t\t\t\t\t// Integer\n\t\t\t\t\t\tif( IsASCII( ch ) && isdigit( ch ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( !HandleInteger( cur, one_too_much, styler ) ) return;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Keyword\n\t\t\t\t\t\telse if( IsASCII( ch ) && ( islower( ch ) || isupper( ch ) ) )\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( !HandleWord( cur, one_too_much, styler, keywordlists ) ) return;\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Skip\n\t\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( !HandleSkip( cur, one_too_much, styler ) ) return;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n}\n\nstatic const char * const opalWordListDesc[] = {\n\t\"Keywords\",\n\t\"Sorts\",\n\t0\n};\n\nLexerModule lmOpal(SCLEX_OPAL, ColouriseOpalDoc, \"opal\", NULL, opalWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPB.cpp",
    "content": "// Scintilla source code edit control\n// @file LexPB.cxx\n// Lexer for PowerBasic by Roland Walter, roland@rowalt.de (for PowerBasic see www.powerbasic.com)\n//\n// Changes:\n// 17.10.2003: Toggling of subs/functions now until next sub/function - this gives better results\n// 29.10.2003: 1. Bug: Toggling didn't work for subs/functions added in editor\n//             2. Own colors for PB constants and Inline Assembler SCE_B_CONSTANT and SCE_B_ASM\n//             3. Several smaller syntax coloring improvements and speed optimizations\n// 12.07.2004: 1. Toggling for macros added\n//             2. Further folding speed optimitations (for people dealing with very large listings)\n//\n// Necessary changes for the PB lexer in Scintilla project:\n//  - In SciLexer.h and Scintilla.iface:\n//\n//    #define SCLEX_POWERBASIC 51       //ID for PowerBasic lexer\n//    (...)\n//    #define SCE_B_DEFAULT 0           //in both VB and PB lexer\n//    #define SCE_B_COMMENT 1           //in both VB and PB lexer\n//    #define SCE_B_NUMBER 2            //in both VB and PB lexer\n//    #define SCE_B_KEYWORD 3           //in both VB and PB lexer\n//    #define SCE_B_STRING 4            //in both VB and PB lexer\n//    #define SCE_B_PREPROCESSOR 5      //VB lexer only, not in PB lexer\n//    #define SCE_B_OPERATOR 6          //in both VB and PB lexer\n//    #define SCE_B_IDENTIFIER 7        //in both VB and PB lexer\n//    #define SCE_B_DATE 8              //VB lexer only, not in PB lexer\n//    #define SCE_B_CONSTANT 13         //PB lexer only, not in VB lexer\n//    #define SCE_B_ASM 14              //PB lexer only, not in VB lexer\n\n//  - Statement added to KeyWords.cxx:      'LINK_LEXER(lmPB);'\n//  - Statement added to scintilla_vc6.mak: '$(DIR_O)\\LexPB.obj: ...\\src\\LexPB.cxx $(LEX_HEADERS)'\n//\n// Copyright for Scintilla: 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsTypeCharacter(const int ch)\n{\n    return ch == '%' || ch == '&' || ch == '@' || ch == '!' || ch == '#' || ch == '$' || ch == '?';\n}\n\nstatic inline bool IsAWordChar(const int ch)\n{\n    return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_');\n}\n\nstatic inline bool IsAWordStart(const int ch)\n{\n    return (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\nstatic bool MatchUpperCase(Accessor &styler, Sci_Position pos, const char *s)   //Same as styler.Match() but uppercase comparison (a-z,A-Z and space only)\n{\n    char ch;\n    for (Sci_Position i=0; *s; i++)\n    {\n        ch=styler.SafeGetCharAt(pos+i);\n        if (ch > 0x60) ch -= '\\x20';\n        if (*s != ch) return false;\n        s++;\n    }\n    return true;\n}\n\nstatic void ColourisePBDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,WordList *keywordlists[],Accessor &styler) {\n\n    WordList &keywords = *keywordlists[0];\n\n    styler.StartAt(startPos);\n\n    StyleContext sc(startPos, length, initStyle, styler);\n\n    for (; sc.More(); sc.Forward()) {\n        switch (sc.state)\n        {\n            case SCE_B_OPERATOR:\n            {\n                sc.SetState(SCE_B_DEFAULT);\n                break;\n            }\n            case SCE_B_KEYWORD:\n            {\n                if (!IsAWordChar(sc.ch))\n                {\n                    if (!IsTypeCharacter(sc.ch))\n                    {\n                        char s[100];\n                        sc.GetCurrentLowered(s, sizeof(s));\n                        if (keywords.InList(s))\n                        {\n                            if (strcmp(s, \"rem\") == 0)\n                            {\n                                sc.ChangeState(SCE_B_COMMENT);\n                                if (sc.atLineEnd) {sc.SetState(SCE_B_DEFAULT);}\n                            }\n                            else if (strcmp(s, \"asm\") == 0)\n                            {\n                                sc.ChangeState(SCE_B_ASM);\n                                if (sc.atLineEnd) {sc.SetState(SCE_B_DEFAULT);}\n                            }\n                            else\n                            {\n                                sc.SetState(SCE_B_DEFAULT);\n                            }\n                        }\n                        else\n                        {\n                            sc.ChangeState(SCE_B_IDENTIFIER);\n                            sc.SetState(SCE_B_DEFAULT);\n                        }\n                    }\n                }\n                break;\n            }\n            case SCE_B_NUMBER:\n            {\n                if (!IsAWordChar(sc.ch)) {sc.SetState(SCE_B_DEFAULT);}\n                break;\n            }\n            case SCE_B_STRING:\n            {\n                if (sc.ch == '\\\"'){sc.ForwardSetState(SCE_B_DEFAULT);}\n                break;\n            }\n            case SCE_B_CONSTANT:\n            {\n                if (!IsAWordChar(sc.ch)) {sc.SetState(SCE_B_DEFAULT);}\n                break;\n            }\n            case SCE_B_COMMENT:\n            {\n                if (sc.atLineEnd) {sc.SetState(SCE_B_DEFAULT);}\n                break;\n            }\n            case SCE_B_ASM:\n            {\n                if (sc.atLineEnd) {sc.SetState(SCE_B_DEFAULT);}\n                break;\n            }\n        }  //switch (sc.state)\n\n        // Determine if a new state should be entered:\n        if (sc.state == SCE_B_DEFAULT)\n        {\n            if (sc.ch == '\\'') {sc.SetState(SCE_B_COMMENT);}\n            else if (sc.ch == '\\\"') {sc.SetState(SCE_B_STRING);}\n            else if (sc.ch == '&' && tolower(sc.chNext) == 'h') {sc.SetState(SCE_B_NUMBER);}\n            else if (sc.ch == '&' && tolower(sc.chNext) == 'b') {sc.SetState(SCE_B_NUMBER);}\n            else if (sc.ch == '&' && tolower(sc.chNext) == 'o') {sc.SetState(SCE_B_NUMBER);}\n            else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {sc.SetState(SCE_B_NUMBER);}\n            else if (IsAWordStart(sc.ch)) {sc.SetState(SCE_B_KEYWORD);}\n            else if (sc.ch == '%') {sc.SetState(SCE_B_CONSTANT);}\n            else if (sc.ch == '$') {sc.SetState(SCE_B_CONSTANT);}\n            else if (sc.ch == '#') {sc.SetState(SCE_B_KEYWORD);}\n            else if (sc.ch == '!') {sc.SetState(SCE_B_ASM);}\n            else if (isoperator(static_cast<char>(sc.ch)) || (sc.ch == '\\\\')) {sc.SetState(SCE_B_OPERATOR);}\n        }\n    }      //for (; sc.More(); sc.Forward())\n    sc.Complete();\n}\n\n//The folding routine for PowerBasic toggles SUBs and FUNCTIONs only. This was exactly what I wanted,\n//nothing more. I had worked with this kind of toggling for several years when I used the great good old\n//GFA Basic which is dead now. After testing the feature of toggling FOR-NEXT loops, WHILE-WEND loops\n//and so on too I found this is more disturbing then helping (for me). So if You think in another way\n//you can (or must) write Your own toggling routine ;-)\nstatic void FoldPBDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler)\n{\n    // No folding enabled, no reason to continue...\n    if( styler.GetPropertyInt(\"fold\") == 0 )\n        return;\n\n    Sci_PositionU endPos = startPos + length;\n    Sci_Position lineCurrent = styler.GetLine(startPos);\n    int levelCurrent = SC_FOLDLEVELBASE;\n    if (lineCurrent > 0)\n        levelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n    int levelNext = levelCurrent;\n    char chNext = styler[startPos];\n\n    bool fNewLine=true;\n    bool fMightBeMultiLineMacro=false;\n    bool fBeginOfCommentFound=false;\n    for (Sci_PositionU i = startPos; i < endPos; i++)\n    {\n        char ch = chNext;\n        chNext = styler.SafeGetCharAt(i + 1);\n\n        if (fNewLine)            //Begin of a new line (The Sub/Function/Macro keywords may occur at begin of line only)\n        {\n            fNewLine=false;\n            fBeginOfCommentFound=false;\n            switch (ch)\n            {\n            case ' ':      //Most lines start with space - so check this first, the code is the same as for 'default:'\n            case '\\t':     //Handle tab too\n                {\n                    int levelUse = levelCurrent;\n                    int lev = levelUse | levelNext << 16;\n                    styler.SetLevel(lineCurrent, lev);\n                    break;\n                }\n            case 'F':\n            case 'f':\n                {\n\t\t\t\t\tswitch (chNext)\n\t\t\t\t\t{\n                    case 'U':\n                    case 'u':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( MatchUpperCase(styler,i,\"FUNCTION\") )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstyler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);\n\t\t\t\t\t\t\t\tlevelNext=SC_FOLDLEVELBASE+1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n                break;\n                }\n            case 'S':\n            case 's':\n                {\n\t\t\t\t\tswitch (chNext)\n\t\t\t\t\t{\n                    case 'U':\n                    case 'u':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( MatchUpperCase(styler,i,\"SUB\") )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstyler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);\n\t\t\t\t\t\t\t\tlevelNext=SC_FOLDLEVELBASE+1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n                    case 'T':\n                    case 't':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( MatchUpperCase(styler,i,\"STATIC FUNCTION\") )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstyler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);\n\t\t\t\t\t\t\t\tlevelNext=SC_FOLDLEVELBASE+1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if( MatchUpperCase(styler,i,\"STATIC SUB\") )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstyler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);\n\t\t\t\t\t\t\t\tlevelNext=SC_FOLDLEVELBASE+1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n                break;\n                }\n            case 'C':\n            case 'c':\n                {\n\t\t\t\t\tswitch (chNext)\n\t\t\t\t\t{\n                    case 'A':\n                    case 'a':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( MatchUpperCase(styler,i,\"CALLBACK FUNCTION\") )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tstyler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);\n\t\t\t\t\t\t\t\tlevelNext=SC_FOLDLEVELBASE+1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n                break;\n                }\n            case 'M':\n            case 'm':\n                {\n\t\t\t\t\tswitch (chNext)\n\t\t\t\t\t{\n                    case 'A':\n                    case 'a':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tif( MatchUpperCase(styler,i,\"MACRO\") )\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tfMightBeMultiLineMacro=true;  //Set folder level at end of line, we have to check for single line macro\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n                break;\n                }\n            default:\n                {\n                    int levelUse = levelCurrent;\n                    int lev = levelUse | levelNext << 16;\n                    styler.SetLevel(lineCurrent, lev);\n                    break;\n                }\n            }  //switch (ch)\n        }  //if( fNewLine )\n\n        switch (ch)\n        {\n            case '=':                              //To test single line macros\n            {\n                if (fBeginOfCommentFound==false)\n                    fMightBeMultiLineMacro=false;  //The found macro is a single line macro only;\n                break;\n            }\n            case '\\'':                             //A comment starts\n            {\n                fBeginOfCommentFound=true;\n                break;\n            }\n            case '\\n':\n            {\n                if (fMightBeMultiLineMacro)        //The current line is the begin of a multi line macro\n                {\n                    fMightBeMultiLineMacro=false;\n                    styler.SetLevel(lineCurrent, (SC_FOLDLEVELBASE << 16) | SC_FOLDLEVELHEADERFLAG);\n                    levelNext=SC_FOLDLEVELBASE+1;\n                }\n                lineCurrent++;\n                levelCurrent = levelNext;\n                fNewLine=true;\n                break;\n            }\n            case '\\r':\n            {\n                if (chNext != '\\n')\n                {\n                    lineCurrent++;\n                    levelCurrent = levelNext;\n                    fNewLine=true;\n                }\n                break;\n            }\n        }  //switch (ch)\n    }  //for (Sci_PositionU i = startPos; i < endPos; i++)\n}\n\nstatic const char * const pbWordListDesc[] = {\n    \"Keywords\",\n    0\n};\n\nLexerModule lmPB(SCLEX_POWERBASIC, ColourisePBDoc, \"powerbasic\", FoldPBDoc, pbWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPLM.cpp",
    "content": "// Copyright (c) 1990-2007, Scientific Toolworks, Inc.\n// Author: Jason Haslam\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void GetRange(Sci_PositionU start,\n                     Sci_PositionU end,\n                     Accessor &styler,\n                     char *s,\n                     Sci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile ((i < end - start + 1) && (i < len-1)) {\n\t\ts[i] = static_cast<char>(tolower(styler[start + i]));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nstatic void ColourisePlmDoc(Sci_PositionU startPos,\n                            Sci_Position length,\n                            int initStyle,\n                            WordList *keywordlists[],\n                            Accessor &styler)\n{\n\tSci_PositionU endPos = startPos + length;\n\tint state = initStyle;\n\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = styler.SafeGetCharAt(i);\n\t\tchar chNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif (state == SCE_PLM_DEFAULT) {\n\t\t\tif (ch == '/' && chNext == '*') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_PLM_COMMENT;\n\t\t\t} else if (ch == '\\'') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_PLM_STRING;\n\t\t\t} else if (isdigit(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_PLM_NUMBER;\n\t\t\t} else if (isalpha(ch)) {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_PLM_IDENTIFIER;\n\t\t\t} else if (ch == '+' || ch == '-' || ch == '*' || ch == '/' ||\n\t\t\t           ch == '=' || ch == '<' || ch == '>' || ch == ':') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_PLM_OPERATOR;\n\t\t\t} else if (ch == '$') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_PLM_CONTROL;\n\t\t\t}\n\t\t} else if (state == SCE_PLM_COMMENT) {\n\t\t\tif (ch == '*' && chNext == '/') {\n\t\t\t\ti++;\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tstate = SCE_PLM_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_PLM_STRING) {\n\t\t\tif (ch == '\\'') {\n\t\t\t\tif (chNext == '\\'') {\n\t\t\t\t\ti++;\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\t\tstate = SCE_PLM_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (state == SCE_PLM_NUMBER) {\n\t\t\tif (!isdigit(ch) && !isalpha(ch) && ch != '$') {\n\t\t\t\ti--;\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tstate = SCE_PLM_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_PLM_IDENTIFIER) {\n\t\t\tif (!isdigit(ch) && !isalpha(ch) && ch != '$') {\n\t\t\t\t// Get the entire identifier.\n\t\t\t\tchar word[1024];\n\t\t\t\tSci_Position segmentStart = styler.GetStartSegment();\n\t\t\t\tGetRange(segmentStart, i - 1, styler, word, sizeof(word));\n\n\t\t\t\ti--;\n\t\t\t\tif (keywordlists[0]->InList(word))\n\t\t\t\t\tstyler.ColourTo(i, SCE_PLM_KEYWORD);\n\t\t\t\telse\n\t\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tstate = SCE_PLM_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_PLM_OPERATOR) {\n\t\t\tif (ch != '=' && ch != '>') {\n\t\t\t\ti--;\n\t\t\t\tstyler.ColourTo(i, state);\n\t\t\t\tstate = SCE_PLM_DEFAULT;\n\t\t\t}\n\t\t} else if (state == SCE_PLM_CONTROL) {\n\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\tstyler.ColourTo(i - 1, state);\n\t\t\t\tstate = SCE_PLM_DEFAULT;\n\t\t\t}\n\t\t}\n\t}\n\tstyler.ColourTo(endPos - 1, state);\n}\n\nstatic void FoldPlmDoc(Sci_PositionU startPos,\n                       Sci_Position length,\n                       int initStyle,\n                       WordList *[],\n                       Accessor &styler)\n{\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tSci_Position startKeyword = 0;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (stylePrev != SCE_PLM_KEYWORD && style == SCE_PLM_KEYWORD)\n\t\t\tstartKeyword = i;\n\n\t\tif (style == SCE_PLM_KEYWORD && styleNext != SCE_PLM_KEYWORD) {\n\t\t\tchar word[1024];\n\t\t\tGetRange(startKeyword, i, styler, word, sizeof(word));\n\n\t\t\tif (strcmp(word, \"procedure\") == 0 || strcmp(word, \"do\") == 0)\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (strcmp(word, \"end\") == 0)\n\t\t\t\tlevelCurrent--;\n\t\t}\n\n\t\tif (foldComment) {\n\t\t\tif (stylePrev != SCE_PLM_COMMENT && style == SCE_PLM_COMMENT)\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (stylePrev == SCE_PLM_COMMENT && style != SCE_PLM_COMMENT)\n\t\t\t\tlevelCurrent--;\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char *const plmWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmPLM(SCLEX_PLM, ColourisePlmDoc, \"PL/M\", FoldPlmDoc, plmWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPO.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexPO.cxx\n ** Lexer for GetText Translation (PO) files.\n **/\n// Copyright 2012 by Colomban Wendling <ban@herbesfolles.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// see https://www.gnu.org/software/gettext/manual/gettext.html#PO-Files for the syntax reference\n// some details are taken from the GNU msgfmt behavior (like that indent is allows in front of lines)\n\n// TODO:\n// * add keywords for flags (fuzzy, c-format, ...)\n// * highlight formats inside c-format strings (%s, %d, etc.)\n// * style for previous untranslated string? (\"#|\" comment)\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ColourisePODoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[], Accessor &styler) {\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tbool escaped = false;\n\tSci_Position curLine = styler.GetLine(startPos);\n\t// the line state holds the last state on or before the line that isn't the default style\n\tint curLineState = curLine > 0 ? styler.GetLineState(curLine - 1) : SCE_PO_DEFAULT;\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\t// whether we should leave a state\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_PO_COMMENT:\n\t\t\tcase SCE_PO_PROGRAMMER_COMMENT:\n\t\t\tcase SCE_PO_REFERENCE:\n\t\t\tcase SCE_PO_FLAGS:\n\t\t\tcase SCE_PO_FUZZY:\n\t\t\t\tif (sc.atLineEnd)\n\t\t\t\t\tsc.SetState(SCE_PO_DEFAULT);\n\t\t\t\telse if (sc.state == SCE_PO_FLAGS && sc.Match(\"fuzzy\"))\n\t\t\t\t\t// here we behave like the previous parser, but this should probably be highlighted\n\t\t\t\t\t// on its own like a keyword rather than changing the whole flags style\n\t\t\t\t\tsc.ChangeState(SCE_PO_FUZZY);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_PO_MSGCTXT:\n\t\t\tcase SCE_PO_MSGID:\n\t\t\tcase SCE_PO_MSGSTR:\n\t\t\t\tif (isspacechar(sc.ch))\n\t\t\t\t\tsc.SetState(SCE_PO_DEFAULT);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_PO_ERROR:\n\t\t\t\tif (sc.atLineEnd)\n\t\t\t\t\tsc.SetState(SCE_PO_DEFAULT);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_PO_MSGCTXT_TEXT:\n\t\t\tcase SCE_PO_MSGID_TEXT:\n\t\t\tcase SCE_PO_MSGSTR_TEXT:\n\t\t\t\tif (sc.atLineEnd) { // invalid inside a string\n\t\t\t\t\tif (sc.state == SCE_PO_MSGCTXT_TEXT)\n\t\t\t\t\t\tsc.ChangeState(SCE_PO_MSGCTXT_TEXT_EOL);\n\t\t\t\t\telse if (sc.state == SCE_PO_MSGID_TEXT)\n\t\t\t\t\t\tsc.ChangeState(SCE_PO_MSGID_TEXT_EOL);\n\t\t\t\t\telse if (sc.state == SCE_PO_MSGSTR_TEXT)\n\t\t\t\t\t\tsc.ChangeState(SCE_PO_MSGSTR_TEXT_EOL);\n\t\t\t\t\tsc.SetState(SCE_PO_DEFAULT);\n\t\t\t\t\tescaped = false;\n\t\t\t\t} else {\n\t\t\t\t\tif (escaped)\n\t\t\t\t\t\tescaped = false;\n\t\t\t\t\telse if (sc.ch == '\\\\')\n\t\t\t\t\t\tescaped = true;\n\t\t\t\t\telse if (sc.ch == '\"')\n\t\t\t\t\t\tsc.ForwardSetState(SCE_PO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// whether we should enter a new state\n\t\tif (sc.state == SCE_PO_DEFAULT) {\n\t\t\t// forward to the first non-white character on the line\n\t\t\tbool atLineStart = sc.atLineStart;\n\t\t\tif (atLineStart) {\n\t\t\t\t// reset line state if it is set to comment state so empty lines don't get\n\t\t\t\t// comment line state, and the folding code folds comments separately,\n\t\t\t\t// and anyway the styling don't use line state for comments\n\t\t\t\tif (curLineState == SCE_PO_COMMENT)\n\t\t\t\t\tcurLineState = SCE_PO_DEFAULT;\n\n\t\t\t\twhile (sc.More() && ! sc.atLineEnd && isspacechar(sc.ch))\n\t\t\t\t\tsc.Forward();\n\t\t\t}\n\n\t\t\tif (atLineStart && sc.ch == '#') {\n\t\t\t\tif (sc.chNext == '.')\n\t\t\t\t\tsc.SetState(SCE_PO_PROGRAMMER_COMMENT);\n\t\t\t\telse if (sc.chNext == ':')\n\t\t\t\t\tsc.SetState(SCE_PO_REFERENCE);\n\t\t\t\telse if (sc.chNext == ',')\n\t\t\t\t\tsc.SetState(SCE_PO_FLAGS);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_PO_COMMENT);\n\t\t\t} else if (atLineStart && sc.Match(\"msgid\")) { // includes msgid_plural\n\t\t\t\tsc.SetState(SCE_PO_MSGID);\n\t\t\t} else if (atLineStart && sc.Match(\"msgstr\")) { // includes [] suffixes\n\t\t\t\tsc.SetState(SCE_PO_MSGSTR);\n\t\t\t} else if (atLineStart && sc.Match(\"msgctxt\")) {\n\t\t\t\tsc.SetState(SCE_PO_MSGCTXT);\n\t\t\t} else if (sc.ch == '\"') {\n\t\t\t\tif (curLineState == SCE_PO_MSGCTXT || curLineState == SCE_PO_MSGCTXT_TEXT)\n\t\t\t\t\tsc.SetState(SCE_PO_MSGCTXT_TEXT);\n\t\t\t\telse if (curLineState == SCE_PO_MSGID || curLineState == SCE_PO_MSGID_TEXT)\n\t\t\t\t\tsc.SetState(SCE_PO_MSGID_TEXT);\n\t\t\t\telse if (curLineState == SCE_PO_MSGSTR || curLineState == SCE_PO_MSGSTR_TEXT)\n\t\t\t\t\tsc.SetState(SCE_PO_MSGSTR_TEXT);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_PO_ERROR);\n\t\t\t} else if (! isspacechar(sc.ch))\n\t\t\t\tsc.SetState(SCE_PO_ERROR);\n\n\t\t\tif (sc.state != SCE_PO_DEFAULT)\n\t\t\t\tcurLineState = sc.state;\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\tstyler.SetLineState(curLine, curLineState);\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic int FindNextNonEmptyLineState(Sci_PositionU startPos, Accessor &styler) {\n\tSci_PositionU length = styler.Length();\n\tfor (Sci_PositionU i = startPos; i < length; i++) {\n\t\tif (! isspacechar(styler[i])) {\n\t\t\treturn styler.GetLineState(styler.GetLine(i));\n\t\t}\n\t}\n\treturn 0;\n}\n\nstatic void FoldPODoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tif (! styler.GetPropertyInt(\"fold\"))\n\t\treturn;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\") != 0;\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\n\tSci_PositionU endPos = startPos + length;\n\tSci_Position curLine = styler.GetLine(startPos);\n\tint lineState = styler.GetLineState(curLine);\n\tint nextLineState;\n\tint level = styler.LevelAt(curLine) & SC_FOLDLEVELNUMBERMASK;\n\tint nextLevel;\n\tint visible = 0;\n\tint chNext = styler[startPos];\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tint ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i+1);\n\n\t\tif (! isspacechar(ch)) {\n\t\t\tvisible++;\n\t\t} else if ((ch == '\\r' && chNext != '\\n') || ch == '\\n' || i+1 >= endPos) {\n\t\t\tint lvl = level;\n\t\t\tSci_Position nextLine = curLine + 1;\n\n\t\t\tnextLineState = styler.GetLineState(nextLine);\n\t\t\tif ((lineState != SCE_PO_COMMENT || foldComment) &&\n\t\t\t\t\tnextLineState == lineState &&\n\t\t\t\t\tFindNextNonEmptyLineState(i, styler) == lineState)\n\t\t\t\tnextLevel = SC_FOLDLEVELBASE + 1;\n\t\t\telse\n\t\t\t\tnextLevel = SC_FOLDLEVELBASE;\n\n\t\t\tif (nextLevel > level)\n\t\t\t\tlvl |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (visible == 0 && foldCompact)\n\t\t\t\tlvl |= SC_FOLDLEVELWHITEFLAG;\n\n\t\t\tstyler.SetLevel(curLine, lvl);\n\n\t\t\tlineState = nextLineState;\n\t\t\tcurLine = nextLine;\n\t\t\tlevel = nextLevel;\n\t\t\tvisible = 0;\n\t\t}\n\t}\n}\n\nstatic const char *const poWordListDesc[] = {\n\t0\n};\n\nLexerModule lmPO(SCLEX_PO, ColourisePODoc, \"po\", FoldPODoc, poWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPOV.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexPOV.cxx\n ** Lexer for POV-Ray SDL (Persistance of Vision Raytracer, Scene Description Language).\n ** Written by Philippe Lhoste but this is mostly a derivative of LexCPP...\n **/\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// Some points that distinguish from a simple C lexer:\n// Identifiers start only by a character.\n// No line continuation character.\n// Strings are limited to 256 characters.\n// Directives are similar to preprocessor commands,\n// but we match directive keywords and colorize incorrect ones.\n// Block comments can be nested (code stolen from my code in LexLua).\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(int ch) {\n\treturn ch < 0x80 && (isalnum(ch) || ch == '_');\n}\n\nstatic inline bool IsAWordStart(int ch) {\n\treturn ch < 0x80 && isalpha(ch);\n}\n\nstatic inline bool IsANumberChar(int ch) {\n\t// Not exactly following number definition (several dots are seen as OK, etc.)\n\t// but probably enough in most cases.\n\treturn (ch < 0x80) &&\n\t        (isdigit(ch) || toupper(ch) == 'E' ||\n             ch == '.' || ch == '-' || ch == '+');\n}\n\nstatic void ColourisePovDoc(\n\tSci_PositionU startPos,\n\tSci_Position length,\n\tint initStyle,\n\tWordList *keywordlists[],\n    Accessor &styler) {\n\n\tWordList &keywords1 = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\tWordList &keywords5 = *keywordlists[4];\n\tWordList &keywords6 = *keywordlists[5];\n\tWordList &keywords7 = *keywordlists[6];\n\tWordList &keywords8 = *keywordlists[7];\n\n\tSci_Position currentLine = styler.GetLine(startPos);\n\t// Initialize the block comment /* */ nesting level, if we are inside such a comment.\n\tint blockCommentLevel = 0;\n\tif (initStyle == SCE_POV_COMMENT) {\n\t\tblockCommentLevel = styler.GetLineState(currentLine - 1);\n\t}\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_POV_STRINGEOL || initStyle == SCE_POV_COMMENTLINE) {\n\t\tinitStyle = SCE_POV_DEFAULT;\n\t}\n\n\tshort stringLen = 0;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\tif (sc.atLineEnd) {\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tcurrentLine = styler.GetLine(sc.currentPos);\n\t\t\tif (sc.state == SCE_POV_COMMENT) {\n\t\t\t\t// Inside a block comment, we set the line state\n\t\t\t\tstyler.SetLineState(currentLine, blockCommentLevel);\n\t\t\t} else {\n\t\t\t\t// Reset the line state\n\t\t\t\tstyler.SetLineState(currentLine, 0);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineStart && (sc.state == SCE_POV_STRING)) {\n\t\t\t// Prevent SCE_POV_STRINGEOL from leaking back to previous line\n\t\t\tsc.SetState(SCE_POV_STRING);\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_POV_OPERATOR) {\n\t\t\tsc.SetState(SCE_POV_DEFAULT);\n\t\t} else if (sc.state == SCE_POV_NUMBER) {\n\t\t\t// We stop the number definition on non-numerical non-dot non-eE non-sign char\n\t\t\tif (!IsANumberChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_POV_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POV_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tif (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POV_WORD2);\n\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POV_WORD3);\n\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POV_WORD4);\n\t\t\t\t} else if (keywords5.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POV_WORD5);\n\t\t\t\t} else if (keywords6.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POV_WORD6);\n\t\t\t\t} else if (keywords7.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POV_WORD7);\n\t\t\t\t} else if (keywords8.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POV_WORD8);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_POV_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POV_DIRECTIVE) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tchar *p;\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tp = s;\n\t\t\t\t// Skip # and whitespace between # and directive word\n\t\t\t\tdo {\n\t\t\t\t\tp++;\n\t\t\t\t} while ((*p == ' ' || *p == '\\t') && *p != '\\0');\n\t\t\t\tif (!keywords1.InList(p)) {\n\t\t\t\t\tsc.ChangeState(SCE_POV_BADDIRECTIVE);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_POV_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POV_COMMENT) {\n\t\t\tif (sc.Match('/', '*')) {\n\t\t\t\tblockCommentLevel++;\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match('*', '/') && blockCommentLevel > 0) {\n\t\t\t\tblockCommentLevel--;\n\t\t\t\tsc.Forward();\n\t\t\t\tif (blockCommentLevel == 0) {\n\t\t\t\t\tsc.ForwardSetState(SCE_POV_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_POV_COMMENTLINE) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_POV_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POV_STRING) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tstringLen++;\n\t\t\t\tif (strchr(\"abfnrtuv0'\\\"\", sc.chNext)) {\n\t\t\t\t\t// Compound characters are counted as one.\n\t\t\t\t\t// Note: for Unicode chars \\u, we shouldn't count the next 4 digits...\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_POV_DEFAULT);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_POV_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_POV_DEFAULT);\n\t\t\t} else {\n\t\t\t\tstringLen++;\n\t\t\t}\n\t\t\tif (stringLen > 256) {\n\t\t\t\t// Strings are limited to 256 chars\n\t\t\t\tsc.SetState(SCE_POV_STRINGEOL);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POV_STRINGEOL) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_C_DEFAULT);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ForwardSetState(SCE_POV_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_POV_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_POV_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_POV_IDENTIFIER);\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tblockCommentLevel = 1;\n\t\t\t\tsc.SetState(SCE_POV_COMMENT);\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tsc.SetState(SCE_POV_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_POV_STRING);\n\t\t\t\tstringLen = 0;\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tsc.SetState(SCE_POV_DIRECTIVE);\n\t\t\t\t// Skip whitespace between # and directive word\n\t\t\t\tdo {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More());\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_POV_DEFAULT);\n\t\t\t\t}\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_POV_OPERATOR);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldPovDoc(\n\tSci_PositionU startPos,\n\tSci_Position length,\n\tint initStyle,\n\tWordList *[],\n\tAccessor &styler) {\n\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldDirective = styler.GetPropertyInt(\"fold.directive\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (foldComment && (style == SCE_POV_COMMENT)) {\n\t\t\tif (stylePrev != SCE_POV_COMMENT) {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if ((styleNext != SCE_POV_COMMENT) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (foldComment && (style == SCE_POV_COMMENTLINE)) {\n\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (foldDirective && (style == SCE_POV_DIRECTIVE)) {\n\t\t\tif (ch == '#') {\n\t\t\t\tSci_PositionU j=i+1;\n\t\t\t\twhile ((j<endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (style == SCE_POV_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const povWordLists[] = {\n\t\"Language directives\",\n\t\"Objects & CSG & Appearance\",\n\t\"Types & Modifiers & Items\",\n\t\"Predefined Identifiers\",\n\t\"Predefined Functions\",\n\t\"User defined 1\",\n\t\"User defined 2\",\n\t\"User defined 3\",\n\t0,\n};\n\nLexerModule lmPOV(SCLEX_POV, ColourisePovDoc, \"pov\", FoldPovDoc, povWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPS.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexPS.cxx\n ** Lexer for PostScript\n **\n ** Written by Nigel Hathaway <nigel@bprj.co.uk>.\n ** The License.txt file describes the conditions under which this software may be distributed.\n **/\n\n// Previous releases of this lexer included support for marking token starts with\n// a style byte indicator. This was used by the wxGhostscript IDE/debugger.\n// Style byte indicators were removed in version 3.4.3.\n// Anyone wanting to restore this functionality for wxGhostscript using 'modern'\n// indicators can examine the earlier source in the Mercurial repository.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsASelfDelimitingChar(const int ch) {\n    return (ch == '[' || ch == ']' || ch == '{' || ch == '}' ||\n            ch == '/' || ch == '<' || ch == '>' ||\n            ch == '(' || ch == ')' || ch == '%');\n}\n\nstatic inline bool IsAWhitespaceChar(const int ch) {\n    return (ch == ' '  || ch == '\\t' || ch == '\\r' ||\n            ch == '\\n' || ch == '\\f' || ch == '\\0');\n}\n\nstatic bool IsABaseNDigit(const int ch, const int base) {\n    int maxdig = '9';\n    int letterext = -1;\n\n    if (base <= 10)\n        maxdig = '0' + base - 1;\n    else\n        letterext = base - 11;\n\n    return ((ch >= '0' && ch <= maxdig) ||\n            (ch >= 'A' && ch <= ('A' + letterext)) ||\n            (ch >= 'a' && ch <= ('a' + letterext)));\n}\n\nstatic inline bool IsABase85Char(const int ch) {\n    return ((ch >= '!' && ch <= 'u') || ch == 'z');\n}\n\nstatic void ColourisePSDoc(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    int initStyle,\n    WordList *keywordlists[],\n    Accessor &styler) {\n\n    WordList &keywords1 = *keywordlists[0];\n    WordList &keywords2 = *keywordlists[1];\n    WordList &keywords3 = *keywordlists[2];\n    WordList &keywords4 = *keywordlists[3];\n    WordList &keywords5 = *keywordlists[4];\n\n    StyleContext sc(startPos, length, initStyle, styler);\n\n    int pslevel = styler.GetPropertyInt(\"ps.level\", 3);\n    Sci_Position lineCurrent = styler.GetLine(startPos);\n    int nestTextCurrent = 0;\n    if (lineCurrent > 0 && initStyle == SCE_PS_TEXT)\n        nestTextCurrent = styler.GetLineState(lineCurrent - 1);\n    int numRadix = 0;\n    bool numHasPoint = false;\n    bool numHasExponent = false;\n    bool numHasSign = false;\n\n    for (; sc.More(); sc.Forward()) {\n        if (sc.atLineStart)\n            lineCurrent = styler.GetLine(sc.currentPos);\n\n        // Determine if the current state should terminate.\n        if (sc.state == SCE_PS_COMMENT || sc.state == SCE_PS_DSC_VALUE) {\n            if (sc.atLineEnd) {\n                sc.SetState(SCE_C_DEFAULT);\n            }\n        } else if (sc.state == SCE_PS_DSC_COMMENT) {\n            if (sc.ch == ':') {\n                sc.Forward();\n                if (!sc.atLineEnd)\n                    sc.SetState(SCE_PS_DSC_VALUE);\n                else\n                    sc.SetState(SCE_C_DEFAULT);\n            } else if (sc.atLineEnd) {\n                sc.SetState(SCE_C_DEFAULT);\n            } else if (IsAWhitespaceChar(sc.ch) && sc.ch != '\\r') {\n                sc.ChangeState(SCE_PS_COMMENT);\n            }\n        } else if (sc.state == SCE_PS_NUMBER) {\n            if (IsASelfDelimitingChar(sc.ch) || IsAWhitespaceChar(sc.ch)) {\n                if ((sc.chPrev == '+' || sc.chPrev == '-' ||\n                     sc.chPrev == 'E' || sc.chPrev == 'e') && numRadix == 0)\n                    sc.ChangeState(SCE_PS_NAME);\n                sc.SetState(SCE_C_DEFAULT);\n            } else if (sc.ch == '#') {\n                if (numHasPoint || numHasExponent || numHasSign || numRadix != 0) {\n                    sc.ChangeState(SCE_PS_NAME);\n                } else {\n                    char szradix[5];\n                    sc.GetCurrent(szradix, 4);\n                    numRadix = atoi(szradix);\n                    if (numRadix < 2 || numRadix > 36)\n                        sc.ChangeState(SCE_PS_NAME);\n                }\n            } else if ((sc.ch == 'E' || sc.ch == 'e') && numRadix == 0) {\n                if (numHasExponent) {\n                    sc.ChangeState(SCE_PS_NAME);\n                } else {\n                    numHasExponent = true;\n                    if (sc.chNext == '+' || sc.chNext == '-')\n                        sc.Forward();\n                }\n            } else if (sc.ch == '.') {\n                if (numHasPoint || numHasExponent || numRadix != 0) {\n                    sc.ChangeState(SCE_PS_NAME);\n                } else {\n                    numHasPoint = true;\n                }\n            } else if (numRadix == 0) {\n                if (!IsABaseNDigit(sc.ch, 10))\n                    sc.ChangeState(SCE_PS_NAME);\n            } else {\n                if (!IsABaseNDigit(sc.ch, numRadix))\n                    sc.ChangeState(SCE_PS_NAME);\n            }\n        } else if (sc.state == SCE_PS_NAME || sc.state == SCE_PS_KEYWORD) {\n            if (IsASelfDelimitingChar(sc.ch) || IsAWhitespaceChar(sc.ch)) {\n                char s[100];\n                sc.GetCurrent(s, sizeof(s));\n                if ((pslevel >= 1 && keywords1.InList(s)) ||\n                    (pslevel >= 2 && keywords2.InList(s)) ||\n                    (pslevel >= 3 && keywords3.InList(s)) ||\n                    keywords4.InList(s) || keywords5.InList(s)) {\n                    sc.ChangeState(SCE_PS_KEYWORD);\n                }\n                sc.SetState(SCE_C_DEFAULT);\n            }\n        } else if (sc.state == SCE_PS_LITERAL || sc.state == SCE_PS_IMMEVAL) {\n            if (IsASelfDelimitingChar(sc.ch) || IsAWhitespaceChar(sc.ch))\n                sc.SetState(SCE_C_DEFAULT);\n        } else if (sc.state == SCE_PS_PAREN_ARRAY || sc.state == SCE_PS_PAREN_DICT ||\n                   sc.state == SCE_PS_PAREN_PROC) {\n            sc.SetState(SCE_C_DEFAULT);\n        } else if (sc.state == SCE_PS_TEXT) {\n            if (sc.ch == '(') {\n                nestTextCurrent++;\n            } else if (sc.ch == ')') {\n                if (--nestTextCurrent == 0)\n                   sc.ForwardSetState(SCE_PS_DEFAULT);\n            } else if (sc.ch == '\\\\') {\n                sc.Forward();\n            }\n        } else if (sc.state == SCE_PS_HEXSTRING) {\n            if (sc.ch == '>') {\n                sc.ForwardSetState(SCE_PS_DEFAULT);\n            } else if (!IsABaseNDigit(sc.ch, 16) && !IsAWhitespaceChar(sc.ch)) {\n                sc.SetState(SCE_PS_HEXSTRING);\n                styler.ColourTo(sc.currentPos, SCE_PS_BADSTRINGCHAR);\n            }\n        } else if (sc.state == SCE_PS_BASE85STRING) {\n            if (sc.Match('~', '>')) {\n                sc.Forward();\n                sc.ForwardSetState(SCE_PS_DEFAULT);\n            } else if (!IsABase85Char(sc.ch) && !IsAWhitespaceChar(sc.ch)) {\n                sc.SetState(SCE_PS_BASE85STRING);\n                styler.ColourTo(sc.currentPos, SCE_PS_BADSTRINGCHAR);\n            }\n        }\n\n        // Determine if a new state should be entered.\n        if (sc.state == SCE_C_DEFAULT) {\n\n            if (sc.ch == '[' || sc.ch == ']') {\n                sc.SetState(SCE_PS_PAREN_ARRAY);\n            } else if (sc.ch == '{' || sc.ch == '}') {\n                sc.SetState(SCE_PS_PAREN_PROC);\n            } else if (sc.ch == '/') {\n                if (sc.chNext == '/') {\n                    sc.SetState(SCE_PS_IMMEVAL);\n                    sc.Forward();\n                } else {\n                    sc.SetState(SCE_PS_LITERAL);\n                }\n            } else if (sc.ch == '<') {\n                if (sc.chNext == '<') {\n                    sc.SetState(SCE_PS_PAREN_DICT);\n                    sc.Forward();\n                } else if (sc.chNext == '~') {\n                    sc.SetState(SCE_PS_BASE85STRING);\n                    sc.Forward();\n                } else {\n                    sc.SetState(SCE_PS_HEXSTRING);\n                }\n            } else if (sc.ch == '>' && sc.chNext == '>') {\n                    sc.SetState(SCE_PS_PAREN_DICT);\n                    sc.Forward();\n            } else if (sc.ch == '>' || sc.ch == ')') {\n                sc.SetState(SCE_C_DEFAULT);\n                styler.ColourTo(sc.currentPos, SCE_PS_BADSTRINGCHAR);\n            } else if (sc.ch == '(') {\n                sc.SetState(SCE_PS_TEXT);\n                nestTextCurrent = 1;\n            } else if (sc.ch == '%') {\n                if (sc.chNext == '%' && sc.atLineStart) {\n                    sc.SetState(SCE_PS_DSC_COMMENT);\n                    sc.Forward();\n                    if (sc.chNext == '+') {\n                        sc.Forward();\n                        sc.ForwardSetState(SCE_PS_DSC_VALUE);\n                    }\n                } else {\n                    sc.SetState(SCE_PS_COMMENT);\n                }\n            } else if ((sc.ch == '+' || sc.ch == '-' || sc.ch == '.') &&\n                       IsABaseNDigit(sc.chNext, 10)) {\n                sc.SetState(SCE_PS_NUMBER);\n                numRadix = 0;\n                numHasPoint = (sc.ch == '.');\n                numHasExponent = false;\n                numHasSign = (sc.ch == '+' || sc.ch == '-');\n            } else if ((sc.ch == '+' || sc.ch == '-') && sc.chNext == '.' &&\n                       IsABaseNDigit(sc.GetRelative(2), 10)) {\n                sc.SetState(SCE_PS_NUMBER);\n                numRadix = 0;\n                numHasPoint = false;\n                numHasExponent = false;\n                numHasSign = true;\n            } else if (IsABaseNDigit(sc.ch, 10)) {\n                sc.SetState(SCE_PS_NUMBER);\n                numRadix = 0;\n                numHasPoint = false;\n                numHasExponent = false;\n                numHasSign = false;\n            } else if (!IsAWhitespaceChar(sc.ch)) {\n                sc.SetState(SCE_PS_NAME);\n            }\n        }\n\n        if (sc.atLineEnd)\n            styler.SetLineState(lineCurrent, nestTextCurrent);\n    }\n\n    sc.Complete();\n}\n\nstatic void FoldPSDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[],\n                       Accessor &styler) {\n    bool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n    bool foldAtElse = styler.GetPropertyInt(\"fold.at.else\", 0) != 0;\n    Sci_PositionU endPos = startPos + length;\n    int visibleChars = 0;\n    Sci_Position lineCurrent = styler.GetLine(startPos);\n    int levelCurrent = SC_FOLDLEVELBASE;\n    if (lineCurrent > 0)\n        levelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n    int levelMinCurrent = levelCurrent;\n    int levelNext = levelCurrent;\n    char chNext = styler[startPos];\n    int styleNext = styler.StyleAt(startPos);\n    for (Sci_PositionU i = startPos; i < endPos; i++) {\n        char ch = chNext;\n        chNext = styler.SafeGetCharAt(i + 1);\n        int style = styleNext;\n        styleNext = styler.StyleAt(i + 1);\n        bool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');  //mac??\n        if ((style & 31) == SCE_PS_PAREN_PROC) {\n            if (ch == '{') {\n                // Measure the minimum before a '{' to allow\n                // folding on \"} {\"\n                if (levelMinCurrent > levelNext) {\n                    levelMinCurrent = levelNext;\n                }\n                levelNext++;\n            } else if (ch == '}') {\n                levelNext--;\n            }\n        }\n        if (atEOL) {\n            int levelUse = levelCurrent;\n            if (foldAtElse) {\n                levelUse = levelMinCurrent;\n            }\n            int lev = levelUse | levelNext << 16;\n            if (visibleChars == 0 && foldCompact)\n                lev |= SC_FOLDLEVELWHITEFLAG;\n            if (levelUse < levelNext)\n                lev |= SC_FOLDLEVELHEADERFLAG;\n            if (lev != styler.LevelAt(lineCurrent)) {\n                styler.SetLevel(lineCurrent, lev);\n            }\n            lineCurrent++;\n            levelCurrent = levelNext;\n            levelMinCurrent = levelCurrent;\n            visibleChars = 0;\n        }\n        if (!isspacechar(ch))\n            visibleChars++;\n    }\n}\n\nstatic const char * const psWordListDesc[] = {\n    \"PS Level 1 operators\",\n    \"PS Level 2 operators\",\n    \"PS Level 3 operators\",\n    \"RIP-specific operators\",\n    \"User-defined operators\",\n    0\n};\n\nLexerModule lmPS(SCLEX_PS, ColourisePSDoc, \"ps\", FoldPSDoc, psWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPascal.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexPascal.cxx\n ** Lexer for Pascal.\n ** Written by Laurent le Tynevez\n ** Updated by Simon Steele <s.steele@pnotepad.org> September 2002\n ** Updated by Mathias Rauen <scite@madshi.net> May 2003 (Delphi adjustments)\n ** Completely rewritten by Marko Njezic <sf@maxempire.com> October 2008\n **/\n\n/*\n\nA few words about features of the new completely rewritten LexPascal...\n\nGenerally speaking LexPascal tries to support all available Delphi features (up\nto Delphi XE4 at this time).\n\n~ HIGHLIGHTING:\n\nIf you enable \"lexer.pascal.smart.highlighting\" property, some keywords will\nonly be highlighted in appropriate context. As implemented those are keywords\nrelated to property and DLL exports declarations (similar to how Delphi IDE\nworks).\n\nFor example, keywords \"read\" and \"write\" will only be highlighted if they are in\nproperty declaration:\n\nproperty MyProperty: boolean read FMyProperty write FMyProperty;\n\n~ FOLDING:\n\nFolding is supported in the following cases:\n\n- Folding of stream-like comments\n- Folding of groups of consecutive line comments\n- Folding of preprocessor blocks (the following preprocessor blocks are\nsupported: IF / IFEND; IFDEF, IFNDEF, IFOPT / ENDIF and REGION / ENDREGION\nblocks), including nesting of preprocessor blocks up to 255 levels\n- Folding of code blocks on appropriate keywords (the following code blocks are\nsupported: \"begin, asm, record, try, case / end\" blocks, class & object\ndeclarations and interface declarations)\n\nRemarks:\n\n- Folding of code blocks tries to handle all special cases in which folding\nshould not occur. As implemented those are:\n\n1. Structure \"record case / end\" (there's only one \"end\" statement and \"case\" is\nignored as fold point)\n2. Forward class declarations (\"type TMyClass = class;\") and object method\ndeclarations (\"TNotifyEvent = procedure(Sender: TObject) of object;\") are\nignored as fold points\n3. Simplified complete class declarations (\"type TMyClass = class(TObject);\")\nare ignored as fold points\n4. Every other situation when class keyword doesn't actually start class\ndeclaration (\"class procedure\", \"class function\", \"class of\", \"class var\",\n\"class property\" and \"class operator\")\n5. Forward (disp)interface declarations (\"type IMyInterface = interface;\") are\nignored as fold points\n\n- Folding of code blocks inside preprocessor blocks is disabled (any comments\ninside them will be folded fine) because there is no guarantee that complete\ncode block will be contained inside folded preprocessor block in which case\nfolded code block could end prematurely at the end of preprocessor block if\nthere is no closing statement inside. This was done in order to properly process\ndocument that may contain something like this:\n\ntype\n{$IFDEF UNICODE}\n  TMyClass = class(UnicodeAncestor)\n{$ELSE}\n  TMyClass = class(AnsiAncestor)\n{$ENDIF}\n  private\n  ...\n  public\n  ...\n  published\n  ...\nend;\n\nIf class declarations were folded, then the second class declaration would end\nat \"$ENDIF\" statement, first class statement would end at \"end;\" statement and\npreprocessor \"$IFDEF\" block would go all the way to the end of document.\nHowever, having in mind all this, if you want to enable folding of code blocks\ninside preprocessor blocks, you can disable folding of preprocessor blocks by\nchanging \"fold.preprocessor\" property, in which case everything inside them\nwould be folded.\n\n~ KEYWORDS:\n\nThe list of keywords that can be used in pascal.properties file (up to Delphi\nXE4):\n\n- Keywords: absolute abstract and array as asm assembler automated begin case\ncdecl class const constructor delayed deprecated destructor dispid dispinterface\ndiv do downto dynamic else end except experimental export exports external far\nfile final finalization finally for forward function goto helper if\nimplementation in inherited initialization inline interface is label library\nmessage mod near nil not object of on operator or out overload override packed\npascal platform private procedure program property protected public published\nraise record reference register reintroduce repeat resourcestring safecall\nsealed set shl shr static stdcall strict string then threadvar to try type unit\nunsafe until uses var varargs virtual while winapi with xor\n\n- Keywords related to the \"smart highlithing\" feature: add default implements\nindex name nodefault read readonly remove stored write writeonly\n\n- Keywords related to Delphi packages (in addition to all above): package\ncontains requires\n\n*/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void GetRangeLowered(Sci_PositionU start,\n\t\tSci_PositionU end,\n\t\tAccessor &styler,\n\t\tchar *s,\n\t\tSci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile ((i < end - start + 1) && (i < len-1)) {\n\t\ts[i] = static_cast<char>(tolower(styler[start + i]));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nstatic void GetForwardRangeLowered(Sci_PositionU start,\n\t\tCharacterSet &charSet,\n\t\tAccessor &styler,\n\t\tchar *s,\n\t\tSci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile ((i < len-1) && charSet.Contains(styler.SafeGetCharAt(start + i))) {\n\t\ts[i] = static_cast<char>(tolower(styler.SafeGetCharAt(start + i)));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n\n}\n\nenum {\n\tstateInAsm = 0x1000,\n\tstateInProperty = 0x2000,\n\tstateInExport = 0x4000,\n\tstateFoldInPreprocessor = 0x0100,\n\tstateFoldInRecord = 0x0200,\n\tstateFoldInPreprocessorLevelMask = 0x00FF,\n\tstateFoldMaskAll = 0x0FFF\n};\n\nstatic void ClassifyPascalWord(WordList *keywordlists[], StyleContext &sc, int &curLineState, bool bSmartHighlighting) {\n\tWordList& keywords = *keywordlists[0];\n\n\tchar s[100];\n\tsc.GetCurrentLowered(s, sizeof(s));\n\tif (keywords.InList(s)) {\n\t\tif (curLineState & stateInAsm) {\n\t\t\tif (strcmp(s, \"end\") == 0 && sc.GetRelative(-4) != '@') {\n\t\t\t\tcurLineState &= ~stateInAsm;\n\t\t\t\tsc.ChangeState(SCE_PAS_WORD);\n\t\t\t} else {\n\t\t\t\tsc.ChangeState(SCE_PAS_ASM);\n\t\t\t}\n\t\t} else {\n\t\t\tbool ignoreKeyword = false;\n\t\t\tif (strcmp(s, \"asm\") == 0) {\n\t\t\t\tcurLineState |= stateInAsm;\n\t\t\t} else if (bSmartHighlighting) {\n\t\t\t\tif (strcmp(s, \"property\") == 0) {\n\t\t\t\t\tcurLineState |= stateInProperty;\n\t\t\t\t} else if (strcmp(s, \"exports\") == 0) {\n\t\t\t\t\tcurLineState |= stateInExport;\n\t\t\t\t} else if (!(curLineState & (stateInProperty | stateInExport)) && strcmp(s, \"index\") == 0) {\n\t\t\t\t\tignoreKeyword = true;\n\t\t\t\t} else if (!(curLineState & stateInExport) && strcmp(s, \"name\") == 0) {\n\t\t\t\t\tignoreKeyword = true;\n\t\t\t\t} else if (!(curLineState & stateInProperty) &&\n\t\t\t\t\t(strcmp(s, \"read\") == 0 || strcmp(s, \"write\") == 0 ||\n\t\t\t\t\t strcmp(s, \"default\") == 0 || strcmp(s, \"nodefault\") == 0 ||\n\t\t\t\t\t strcmp(s, \"stored\") == 0 || strcmp(s, \"implements\") == 0 ||\n\t\t\t\t\t strcmp(s, \"readonly\") == 0 || strcmp(s, \"writeonly\") == 0 ||\n\t\t\t\t\t strcmp(s, \"add\") == 0 || strcmp(s, \"remove\") == 0)) {\n\t\t\t\t\tignoreKeyword = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!ignoreKeyword) {\n\t\t\t\tsc.ChangeState(SCE_PAS_WORD);\n\t\t\t}\n\t\t}\n\t} else if (curLineState & stateInAsm) {\n\t\tsc.ChangeState(SCE_PAS_ASM);\n\t}\n\tsc.SetState(SCE_PAS_DEFAULT);\n}\n\nstatic void ColourisePascalDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n\t\tAccessor &styler) {\n\tbool bSmartHighlighting = styler.GetPropertyInt(\"lexer.pascal.smart.highlighting\", 1) != 0;\n\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_\", 0x80, true);\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"_\", 0x80, true);\n\tCharacterSet setNumber(CharacterSet::setDigits, \".-+eE\");\n\tCharacterSet setHexNumber(CharacterSet::setDigits, \"abcdefABCDEF\");\n\tCharacterSet setOperator(CharacterSet::setNone, \"#$&'()*+,-./:;<=>@[]^{}\");\n\n\tSci_Position curLine = styler.GetLine(startPos);\n\tint curLineState = curLine > 0 ? styler.GetLineState(curLine - 1) : 0;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\tif (sc.atLineEnd) {\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tcurLine = styler.GetLine(sc.currentPos);\n\t\t\tstyler.SetLineState(curLine, curLineState);\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_PAS_NUMBER:\n\t\t\t\tif (!setNumber.Contains(sc.ch) || (sc.ch == '.' && sc.chNext == '.')) {\n\t\t\t\t\tsc.SetState(SCE_PAS_DEFAULT);\n\t\t\t\t} else if (sc.ch == '-' || sc.ch == '+') {\n\t\t\t\t\tif (sc.chPrev != 'E' && sc.chPrev != 'e') {\n\t\t\t\t\t\tsc.SetState(SCE_PAS_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_IDENTIFIER:\n\t\t\t\tif (!setWord.Contains(sc.ch)) {\n\t\t\t\t\tClassifyPascalWord(keywordlists, sc, curLineState, bSmartHighlighting);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_HEXNUMBER:\n\t\t\t\tif (!setHexNumber.Contains(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_PAS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_COMMENT:\n\t\t\tcase SCE_PAS_PREPROCESSOR:\n\t\t\t\tif (sc.ch == '}') {\n\t\t\t\t\tsc.ForwardSetState(SCE_PAS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_COMMENT2:\n\t\t\tcase SCE_PAS_PREPROCESSOR2:\n\t\t\t\tif (sc.Match('*', ')')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_PAS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_COMMENTLINE:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_PAS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_STRING:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_PAS_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\'' && sc.chNext == '\\'') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tsc.ForwardSetState(SCE_PAS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_STRINGEOL:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_PAS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_CHARACTER:\n\t\t\t\tif (!setHexNumber.Contains(sc.ch) && sc.ch != '$') {\n\t\t\t\t\tsc.SetState(SCE_PAS_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_OPERATOR:\n\t\t\t\tif (bSmartHighlighting && sc.chPrev == ';') {\n\t\t\t\t\tcurLineState &= ~(stateInProperty | stateInExport);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_PAS_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_PAS_ASM:\n\t\t\t\tsc.SetState(SCE_PAS_DEFAULT);\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_PAS_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) && !(curLineState & stateInAsm)) {\n\t\t\t\tsc.SetState(SCE_PAS_NUMBER);\n\t\t\t} else if (setWordStart.Contains(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_PAS_IDENTIFIER);\n\t\t\t} else if (sc.ch == '$' && !(curLineState & stateInAsm)) {\n\t\t\t\tsc.SetState(SCE_PAS_HEXNUMBER);\n\t\t\t} else if (sc.Match('{', '$')) {\n\t\t\t\tsc.SetState(SCE_PAS_PREPROCESSOR);\n\t\t\t} else if (sc.ch == '{') {\n\t\t\t\tsc.SetState(SCE_PAS_COMMENT);\n\t\t\t} else if (sc.Match(\"(*$\")) {\n\t\t\t\tsc.SetState(SCE_PAS_PREPROCESSOR2);\n\t\t\t} else if (sc.Match('(', '*')) {\n\t\t\t\tsc.SetState(SCE_PAS_COMMENT2);\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tsc.SetState(SCE_PAS_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_PAS_STRING);\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tsc.SetState(SCE_PAS_CHARACTER);\n\t\t\t} else if (setOperator.Contains(sc.ch) && !(curLineState & stateInAsm)) {\n\t\t\t\tsc.SetState(SCE_PAS_OPERATOR);\n\t\t\t} else if (curLineState & stateInAsm) {\n\t\t\t\tsc.SetState(SCE_PAS_ASM);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (sc.state == SCE_PAS_IDENTIFIER && setWord.Contains(sc.chPrev)) {\n\t\tClassifyPascalWord(keywordlists, sc, curLineState, bSmartHighlighting);\n\t}\n\n\tsc.Complete();\n}\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_PAS_COMMENT || style == SCE_PAS_COMMENT2;\n}\n\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eolPos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eolPos; i++) {\n\t\tchar ch = styler[i];\n\t\tchar chNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styler.StyleAt(i);\n\t\tif (ch == '/' && chNext == '/' && style == SCE_PAS_COMMENTLINE) {\n\t\t\treturn true;\n\t\t} else if (!IsASpaceOrTab(ch)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n}\n\nstatic unsigned int GetFoldInPreprocessorLevelFlag(int lineFoldStateCurrent) {\n\treturn lineFoldStateCurrent & stateFoldInPreprocessorLevelMask;\n}\n\nstatic void SetFoldInPreprocessorLevelFlag(int &lineFoldStateCurrent, unsigned int nestLevel) {\n\tlineFoldStateCurrent &= ~stateFoldInPreprocessorLevelMask;\n\tlineFoldStateCurrent |= nestLevel & stateFoldInPreprocessorLevelMask;\n}\n\nstatic void ClassifyPascalPreprocessorFoldPoint(int &levelCurrent, int &lineFoldStateCurrent,\n\t\tSci_PositionU startPos, Accessor &styler) {\n\tCharacterSet setWord(CharacterSet::setAlpha);\n\n\tchar s[11];\t// Size of the longest possible keyword + one additional character + null\n\tGetForwardRangeLowered(startPos, setWord, styler, s, sizeof(s));\n\n\tunsigned int nestLevel = GetFoldInPreprocessorLevelFlag(lineFoldStateCurrent);\n\n\tif (strcmp(s, \"if\") == 0 ||\n\t\tstrcmp(s, \"ifdef\") == 0 ||\n\t\tstrcmp(s, \"ifndef\") == 0 ||\n\t\tstrcmp(s, \"ifopt\") == 0 ||\n\t\tstrcmp(s, \"region\") == 0) {\n\t\tnestLevel++;\n\t\tSetFoldInPreprocessorLevelFlag(lineFoldStateCurrent, nestLevel);\n\t\tlineFoldStateCurrent |= stateFoldInPreprocessor;\n\t\tlevelCurrent++;\n\t} else if (strcmp(s, \"endif\") == 0 ||\n\t\tstrcmp(s, \"ifend\") == 0 ||\n\t\tstrcmp(s, \"endregion\") == 0) {\n\t\tnestLevel--;\n\t\tSetFoldInPreprocessorLevelFlag(lineFoldStateCurrent, nestLevel);\n\t\tif (nestLevel == 0) {\n\t\t\tlineFoldStateCurrent &= ~stateFoldInPreprocessor;\n\t\t}\n\t\tlevelCurrent--;\n\t\tif (levelCurrent < SC_FOLDLEVELBASE) {\n\t\t\tlevelCurrent = SC_FOLDLEVELBASE;\n\t\t}\n\t}\n}\n\nstatic Sci_PositionU SkipWhiteSpace(Sci_PositionU currentPos, Sci_PositionU endPos,\n\t\tAccessor &styler, bool includeChars = false) {\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"_\");\n\tSci_PositionU j = currentPos + 1;\n\tchar ch = styler.SafeGetCharAt(j);\n\twhile ((j < endPos) && (IsASpaceOrTab(ch) || ch == '\\r' || ch == '\\n' ||\n\t\tIsStreamCommentStyle(styler.StyleAt(j)) || (includeChars && setWord.Contains(ch)))) {\n\t\tj++;\n\t\tch = styler.SafeGetCharAt(j);\n\t}\n\treturn j;\n}\n\nstatic void ClassifyPascalWordFoldPoint(int &levelCurrent, int &lineFoldStateCurrent,\n\t\tSci_Position startPos, Sci_PositionU endPos,\n\t\tSci_PositionU lastStart, Sci_PositionU currentPos, Accessor &styler) {\n\tchar s[100];\n\tGetRangeLowered(lastStart, currentPos, styler, s, sizeof(s));\n\n\tif (strcmp(s, \"record\") == 0) {\n\t\tlineFoldStateCurrent |= stateFoldInRecord;\n\t\tlevelCurrent++;\n\t} else if (strcmp(s, \"begin\") == 0 ||\n\t\tstrcmp(s, \"asm\") == 0 ||\n\t\tstrcmp(s, \"try\") == 0 ||\n\t\t(strcmp(s, \"case\") == 0 && !(lineFoldStateCurrent & stateFoldInRecord))) {\n\t\tlevelCurrent++;\n\t} else if (strcmp(s, \"class\") == 0 || strcmp(s, \"object\") == 0) {\n\t\t// \"class\" & \"object\" keywords require special handling...\n\t\tbool ignoreKeyword = false;\n\t\tSci_PositionU j = SkipWhiteSpace(currentPos, endPos, styler);\n\t\tif (j < endPos) {\n\t\t\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_\");\n\t\t\tCharacterSet setWord(CharacterSet::setAlphaNum, \"_\");\n\n\t\t\tif (styler.SafeGetCharAt(j) == ';') {\n\t\t\t\t// Handle forward class declarations (\"type TMyClass = class;\")\n\t\t\t\t// and object method declarations (\"TNotifyEvent = procedure(Sender: TObject) of object;\")\n\t\t\t\tignoreKeyword = true;\n\t\t\t} else if (strcmp(s, \"class\") == 0) {\n\t\t\t\t// \"class\" keyword has a few more special cases...\n\t\t\t\tif (styler.SafeGetCharAt(j) == '(') {\n\t\t\t\t\t// Handle simplified complete class declarations (\"type TMyClass = class(TObject);\")\n\t\t\t\t\tj = SkipWhiteSpace(j, endPos, styler, true);\n\t\t\t\t\tif (j < endPos && styler.SafeGetCharAt(j) == ')') {\n\t\t\t\t\t\tj = SkipWhiteSpace(j, endPos, styler);\n\t\t\t\t\t\tif (j < endPos && styler.SafeGetCharAt(j) == ';') {\n\t\t\t\t\t\t\tignoreKeyword = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (setWordStart.Contains(styler.SafeGetCharAt(j))) {\n\t\t\t\t\tchar s2[11];\t// Size of the longest possible keyword + one additional character + null\n\t\t\t\t\tGetForwardRangeLowered(j, setWord, styler, s2, sizeof(s2));\n\n\t\t\t\t\tif (strcmp(s2, \"procedure\") == 0 ||\n\t\t\t\t\t\tstrcmp(s2, \"function\") == 0 ||\n\t\t\t\t\t\tstrcmp(s2, \"of\") == 0 ||\n\t\t\t\t\t\tstrcmp(s2, \"var\") == 0 ||\n\t\t\t\t\t\tstrcmp(s2, \"property\") == 0 ||\n\t\t\t\t\t\tstrcmp(s2, \"operator\") == 0) {\n\t\t\t\t\t\tignoreKeyword = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!ignoreKeyword) {\n\t\t\tlevelCurrent++;\n\t\t}\n\t} else if (strcmp(s, \"interface\") == 0) {\n\t\t// \"interface\" keyword requires special handling...\n\t\tbool ignoreKeyword = true;\n\t\tSci_Position j = lastStart - 1;\n\t\tchar ch = styler.SafeGetCharAt(j);\n\t\twhile ((j >= startPos) && (IsASpaceOrTab(ch) || ch == '\\r' || ch == '\\n' ||\n\t\t\tIsStreamCommentStyle(styler.StyleAt(j)))) {\n\t\t\tj--;\n\t\t\tch = styler.SafeGetCharAt(j);\n\t\t}\n\t\tif (j >= startPos && styler.SafeGetCharAt(j) == '=') {\n\t\t\tignoreKeyword = false;\n\t\t}\n\t\tif (!ignoreKeyword) {\n\t\t\tSci_PositionU k = SkipWhiteSpace(currentPos, endPos, styler);\n\t\t\tif (k < endPos && styler.SafeGetCharAt(k) == ';') {\n\t\t\t\t// Handle forward interface declarations (\"type IMyInterface = interface;\")\n\t\t\t\tignoreKeyword = true;\n\t\t\t}\n\t\t}\n\t\tif (!ignoreKeyword) {\n\t\t\tlevelCurrent++;\n\t\t}\n\t} else if (strcmp(s, \"dispinterface\") == 0) {\n\t\t// \"dispinterface\" keyword requires special handling...\n\t\tbool ignoreKeyword = false;\n\t\tSci_PositionU j = SkipWhiteSpace(currentPos, endPos, styler);\n\t\tif (j < endPos && styler.SafeGetCharAt(j) == ';') {\n\t\t\t// Handle forward dispinterface declarations (\"type IMyInterface = dispinterface;\")\n\t\t\tignoreKeyword = true;\n\t\t}\n\t\tif (!ignoreKeyword) {\n\t\t\tlevelCurrent++;\n\t\t}\n\t} else if (strcmp(s, \"end\") == 0) {\n\t\tlineFoldStateCurrent &= ~stateFoldInRecord;\n\t\tlevelCurrent--;\n\t\tif (levelCurrent < SC_FOLDLEVELBASE) {\n\t\t\tlevelCurrent = SC_FOLDLEVELBASE;\n\t\t}\n\t}\n}\n\nstatic void FoldPascalDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[],\n\t\tAccessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldPreprocessor = styler.GetPropertyInt(\"fold.preprocessor\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tint lineFoldStateCurrent = lineCurrent > 0 ? styler.GetLineState(lineCurrent - 1) & stateFoldMaskAll : 0;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\n\tSci_Position lastStart = 0;\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"_\", 0x80, true);\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (foldComment && IsStreamCommentStyle(style)) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (foldComment && atEOL && IsCommentLine(lineCurrent, styler))\n\t\t{\n\t\t\tif (!IsCommentLine(lineCurrent - 1, styler)\n\t\t\t    && IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (IsCommentLine(lineCurrent - 1, styler)\n\t\t\t         && !IsCommentLine(lineCurrent+1, styler))\n\t\t\t\tlevelCurrent--;\n\t\t}\n\t\tif (foldPreprocessor) {\n\t\t\tif (style == SCE_PAS_PREPROCESSOR && ch == '{' && chNext == '$') {\n\t\t\t\tClassifyPascalPreprocessorFoldPoint(levelCurrent, lineFoldStateCurrent, i + 2, styler);\n\t\t\t} else if (style == SCE_PAS_PREPROCESSOR2 && ch == '(' && chNext == '*'\n\t\t\t           && styler.SafeGetCharAt(i + 2) == '$') {\n\t\t\t\tClassifyPascalPreprocessorFoldPoint(levelCurrent, lineFoldStateCurrent, i + 3, styler);\n\t\t\t}\n\t\t}\n\n\t\tif (stylePrev != SCE_PAS_WORD && style == SCE_PAS_WORD)\n\t\t{\n\t\t\t// Store last word start point.\n\t\t\tlastStart = i;\n\t\t}\n\t\tif (stylePrev == SCE_PAS_WORD && !(lineFoldStateCurrent & stateFoldInPreprocessor)) {\n\t\t\tif(setWord.Contains(ch) && !setWord.Contains(chNext)) {\n\t\t\t\tClassifyPascalWordFoldPoint(levelCurrent, lineFoldStateCurrent, startPos, endPos, lastStart, i, styler);\n\t\t\t}\n\t\t}\n\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tint newLineState = (styler.GetLineState(lineCurrent) & ~stateFoldMaskAll) | lineFoldStateCurrent;\n\t\t\tstyler.SetLineState(lineCurrent, newLineState);\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t}\n\n\t// If we didn't reach the EOL in previous loop, store line level and whitespace information.\n\t// The rest will be filled in later...\n\tint lev = levelPrev;\n\tif (visibleChars == 0 && foldCompact)\n\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\tstyler.SetLevel(lineCurrent, lev);\n}\n\nstatic const char * const pascalWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmPascal(SCLEX_PASCAL, ColourisePascalDoc, \"pascal\", FoldPascalDoc, pascalWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPerl.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexPerl.cxx\n ** Lexer for Perl.\n ** Converted to lexer object by \"Udo Lechner\" <dlchnr(at)gmx(dot)net>\n **/\n// Copyright 1998-2008 by Neil Hodgson <neilh@scintilla.org>\n// Lexical analysis fixes by Kein-Hong Man <mkh@pl.jaring.my>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Info for HERE document handling from perldata.pod (reformatted):\n// ----------------------------------------------------------------\n// A line-oriented form of quoting is based on the shell ``here-doc'' syntax.\n// Following a << you specify a string to terminate the quoted material, and\n// all lines following the current line down to the terminating string are\n// the value of the item.\n// * The terminating string may be either an identifier (a word), or some\n//   quoted text.\n// * If quoted, the type of quotes you use determines the treatment of the\n//   text, just as in regular quoting.\n// * An unquoted identifier works like double quotes.\n// * There must be no space between the << and the identifier.\n//   (If you put a space it will be treated as a null identifier,\n//    which is valid, and matches the first empty line.)\n//   (This is deprecated, -w warns of this syntax)\n// * The terminating string must appear by itself (unquoted and\n//   with no surrounding whitespace) on the terminating line.\n\n#define HERE_DELIM_MAX 256\t\t// maximum length of HERE doc delimiter\n\n#define PERLNUM_BINARY\t\t1\t// order is significant: 1-3 cannot have a dot\n#define PERLNUM_OCTAL\t\t2\n#define PERLNUM_FLOAT_EXP\t3\t// exponent part only\n#define PERLNUM_HEX\t\t\t4\t// may be a hex float\n#define PERLNUM_DECIMAL\t\t5\t// 1-5 are numbers; 6-7 are strings\n#define PERLNUM_VECTOR\t\t6\n#define PERLNUM_V_VECTOR\t7\n#define PERLNUM_BAD\t\t\t8\n\n#define BACK_NONE\t\t0\t// lookback state for bareword disambiguation:\n#define BACK_OPERATOR\t1\t// whitespace/comments are insignificant\n#define BACK_KEYWORD\t2\t// operators/keywords are needed for disambiguation\n\n#define SUB_BEGIN\t\t0\t// states for subroutine prototype scan:\n#define SUB_HAS_PROTO\t1\t// only 'prototype' attribute allows prototypes\n#define SUB_HAS_ATTRIB\t2\t// other attributes can exist leftward\n#define SUB_HAS_MODULE\t3\t// sub name can have a ::identifier part\n#define SUB_HAS_SUB\t\t4\t// 'sub' keyword\n\n// all interpolated styles are different from their parent styles by a constant difference\n// we also assume SCE_PL_STRING_VAR is the interpolated style with the smallest value\n#define\tINTERPOLATE_SHIFT\t(SCE_PL_STRING_VAR - SCE_PL_STRING)\n\nstatic bool isPerlKeyword(Sci_PositionU start, Sci_PositionU end, WordList &keywords, LexAccessor &styler) {\n\t// old-style keyword matcher; needed because GetCurrent() needs\n\t// current segment to be committed, but we may abandon early...\n\tchar s[100];\n\tSci_PositionU i, len = end - start;\n\tif (len > 30) { len = 30; }\n\tfor (i = 0; i < len; i++, start++) s[i] = styler[start];\n\ts[i] = '\\0';\n\treturn keywords.InList(s);\n}\n\nstatic int disambiguateBareword(LexAccessor &styler, Sci_PositionU bk, Sci_PositionU fw,\n        int backFlag, Sci_PositionU backPos, Sci_PositionU endPos) {\n\t// identifiers are recognized by Perl as barewords under some\n\t// conditions, the following attempts to do the disambiguation\n\t// by looking backward and forward; result in 2 LSB\n\tint result = 0;\n\tbool moreback = false;\t\t// true if passed newline/comments\n\tbool brace = false;\t\t\t// true if opening brace found\n\t// if BACK_NONE, neither operator nor keyword, so skip test\n\tif (backFlag == BACK_NONE)\n\t\treturn result;\n\t// first look backwards past whitespace/comments to set EOL flag\n\t// (some disambiguation patterns must be on a single line)\n\tif (backPos <= static_cast<Sci_PositionU>(styler.LineStart(styler.GetLine(bk))))\n\t\tmoreback = true;\n\t// look backwards at last significant lexed item for disambiguation\n\tbk = backPos - 1;\n\tint ch = static_cast<unsigned char>(styler.SafeGetCharAt(bk));\n\tif (ch == '{' && !moreback) {\n\t\t// {bareword: possible variable spec\n\t\tbrace = true;\n\t} else if ((ch == '&' && styler.SafeGetCharAt(bk - 1) != '&')\n\t        // &bareword: subroutine call\n\t        || styler.Match(bk - 1, \"->\")\n\t        // ->bareword: part of variable spec\n\t        || styler.Match(bk - 1, \"::\")\n\t        // ::bareword: part of module spec\n\t        || styler.Match(bk - 2, \"sub\")) {\n\t        // sub bareword: subroutine declaration\n\t        // (implied BACK_KEYWORD, no keywords end in 'sub'!)\n\t\tresult |= 1;\n\t}\n\t// next, scan forward after word past tab/spaces only;\n\t// if ch isn't one of '[{(,' we can skip the test\n\tif ((ch == '{' || ch == '(' || ch == '['|| ch == ',')\n\t        && fw < endPos) {\n\t\twhile (ch = static_cast<unsigned char>(styler.SafeGetCharAt(fw)),\n\t\t        IsASpaceOrTab(ch) && fw < endPos) {\n\t\t\tfw++;\n\t\t}\n\t\tif ((ch == '}' && brace)\n\t\t        // {bareword}: variable spec\n\t\t        || styler.Match(fw, \"=>\")) {\n\t\t        // [{(, bareword=>: hash literal\n\t\t\tresult |= 2;\n\t\t}\n\t}\n\treturn result;\n}\n\nstatic void skipWhitespaceComment(LexAccessor &styler, Sci_PositionU &p) {\n\t// when backtracking, we need to skip whitespace and comments\n\tint style;\n\twhile ((p > 0) && (style = styler.StyleAt(p),\n\t        style == SCE_PL_DEFAULT || style == SCE_PL_COMMENTLINE))\n\t\tp--;\n}\n\nstatic int findPrevLexeme(LexAccessor &styler, Sci_PositionU &bk, int &style) {\n\t// scan backward past whitespace and comments to find a lexeme\n\tskipWhitespaceComment(styler, bk);\n\tif (bk == 0)\n\t\treturn 0;\n\tint sz = 1;\n\tstyle = styler.StyleAt(bk);\n\twhile (bk > 0) {\t// find extent of lexeme\n\t\tif (styler.StyleAt(bk - 1) == style) {\n\t\t\tbk--; sz++;\n\t\t} else\n\t\t\tbreak;\n\t}\n\treturn sz;\n}\n\nstatic int styleBeforeBracePair(LexAccessor &styler, Sci_PositionU bk) {\n\t// backtrack to find open '{' corresponding to a '}', balanced\n\t// return significant style to be tested for '/' disambiguation\n\tint braceCount = 1;\n\tif (bk == 0)\n\t\treturn SCE_PL_DEFAULT;\n\twhile (--bk > 0) {\n\t\tif (styler.StyleAt(bk) == SCE_PL_OPERATOR) {\n\t\t\tint bkch = static_cast<unsigned char>(styler.SafeGetCharAt(bk));\n\t\t\tif (bkch == ';') {\t// early out\n\t\t\t\tbreak;\n\t\t\t} else if (bkch == '}') {\n\t\t\t\tbraceCount++;\n\t\t\t} else if (bkch == '{') {\n\t\t\t\tif (--braceCount == 0) break;\n\t\t\t}\n\t\t}\n\t}\n\tif (bk > 0 && braceCount == 0) {\n\t\t// balanced { found, bk > 0, skip more whitespace/comments\n\t\tbk--;\n\t\tskipWhitespaceComment(styler, bk);\n\t\treturn styler.StyleAt(bk);\n\t}\n\treturn SCE_PL_DEFAULT;\n}\n\nstatic int styleCheckIdentifier(LexAccessor &styler, Sci_PositionU bk) {\n\t// backtrack to classify sub-styles of identifier under test\n\t// return sub-style to be tested for '/' disambiguation\n\tif (styler.SafeGetCharAt(bk) == '>')\t// inputsymbol, like <foo>\n\t\treturn 1;\n\t// backtrack to check for possible \"->\" or \"::\" before identifier\n\twhile (bk > 0 && styler.StyleAt(bk) == SCE_PL_IDENTIFIER) {\n\t\tbk--;\n\t}\n\twhile (bk > 0) {\n\t\tint bkstyle = styler.StyleAt(bk);\n\t\tif (bkstyle == SCE_PL_DEFAULT\n\t\t        || bkstyle == SCE_PL_COMMENTLINE) {\n\t\t\t// skip whitespace, comments\n\t\t} else if (bkstyle == SCE_PL_OPERATOR) {\n\t\t\t// test for \"->\" and \"::\"\n\t\t\tif (styler.Match(bk - 1, \"->\") || styler.Match(bk - 1, \"::\"))\n\t\t\t\treturn 2;\n\t\t} else\n\t\t\treturn 3;\t// bare identifier\n\t\tbk--;\n\t}\n\treturn 0;\n}\n\nstatic int podLineScan(LexAccessor &styler, Sci_PositionU &pos, Sci_PositionU endPos) {\n\t// forward scan the current line to classify line for POD style\n\tint state = -1;\n\twhile (pos < endPos) {\n\t\tint ch = static_cast<unsigned char>(styler.SafeGetCharAt(pos));\n\t\tif (ch == '\\n' || ch == '\\r') {\n\t\t\tif (ch == '\\r' && styler.SafeGetCharAt(pos + 1) == '\\n') pos++;\n\t\t\tbreak;\n\t\t}\n\t\tif (IsASpaceOrTab(ch)) {\t// whitespace, take note\n\t\t\tif (state == -1)\n\t\t\t\tstate = SCE_PL_DEFAULT;\n\t\t} else if (state == SCE_PL_DEFAULT) {\t// verbatim POD line\n\t\t\tstate = SCE_PL_POD_VERB;\n\t\t} else if (state != SCE_PL_POD_VERB) {\t// regular POD line\n\t\t\tstate = SCE_PL_POD;\n\t\t}\n\t\tpos++;\n\t}\n\tif (state == -1)\n\t\tstate = SCE_PL_DEFAULT;\n\treturn state;\n}\n\nstatic bool styleCheckSubPrototype(LexAccessor &styler, Sci_PositionU bk) {\n\t// backtrack to identify if we're starting a subroutine prototype\n\t// we also need to ignore whitespace/comments, format is like:\n\t//     sub abc::pqr :const :prototype(...)\n\t// lexemes are tested in pairs, e.g. '::'+'pqr', ':'+'const', etc.\n\t// and a state machine generates legal subroutine syntax matches\n\tstyler.Flush();\n\tint state = SUB_BEGIN;\n\tdo {\n\t\t// find two lexemes, lexeme 2 follows lexeme 1\n\t\tint style2 = SCE_PL_DEFAULT;\n\t\tSci_PositionU pos2 = bk;\n\t\tint len2 = findPrevLexeme(styler, pos2, style2);\n\t\tint style1 = SCE_PL_DEFAULT;\n\t\tSci_PositionU pos1 = pos2;\n\t\tif (pos1 > 0) pos1--;\n\t\tint len1 = findPrevLexeme(styler, pos1, style1);\n\t\tif (len1 == 0 || len2 == 0)\t\t// lexeme pair must exist\n\t\t\tbreak;\n\n\t\t// match parts of syntax, if invalid subroutine syntax, break off\n\t\tif (style1 == SCE_PL_OPERATOR && len1 == 1 &&\n\t\t    styler.SafeGetCharAt(pos1) == ':') {\t// ':'\n\t\t\tif (style2 == SCE_PL_IDENTIFIER || style2 == SCE_PL_WORD) {\n\t\t\t\tif (len2 == 9 && styler.Match(pos2, \"prototype\")) {\t// ':' 'prototype'\n\t\t\t\t\tif (state == SUB_BEGIN) {\n\t\t\t\t\t\tstate = SUB_HAS_PROTO;\n\t\t\t\t\t} else\n\t\t\t\t\t\tbreak;\n\t\t\t\t} else {\t// ':' <attribute>\n\t\t\t\t\tif (state == SUB_HAS_PROTO || state == SUB_HAS_ATTRIB) {\n\t\t\t\t\t\tstate = SUB_HAS_ATTRIB;\n\t\t\t\t\t} else\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else\n\t\t\t\tbreak;\n\t\t} else if (style1 == SCE_PL_OPERATOR && len1 == 2 &&\n\t\t           styler.Match(pos1, \"::\")) {\t// '::'\n\t\t\tif (style2 == SCE_PL_IDENTIFIER) {\t// '::' <identifier>\n\t\t\t\tstate = SUB_HAS_MODULE;\n\t\t\t} else\n\t\t\t\tbreak;\n\t\t} else if (style1 == SCE_PL_WORD && len1 == 3 &&\n\t\t           styler.Match(pos1, \"sub\")) {\t// 'sub'\n\t\t\tif (style2 == SCE_PL_IDENTIFIER) {\t// 'sub' <identifier>\n\t\t\t\tstate = SUB_HAS_SUB;\n\t\t\t} else\n\t\t\t\tbreak;\n\t\t} else\n\t\t\tbreak;\n\t\tbk = pos1;\t\t\t// set position for finding next lexeme pair\n\t\tif (bk > 0) bk--;\n\t} while (state != SUB_HAS_SUB);\n\treturn (state == SUB_HAS_SUB);\n}\n\nstatic int actualNumStyle(int numberStyle) {\n\tif (numberStyle == PERLNUM_VECTOR || numberStyle == PERLNUM_V_VECTOR) {\n\t\treturn SCE_PL_STRING;\n\t} else if (numberStyle == PERLNUM_BAD) {\n\t\treturn SCE_PL_ERROR;\n\t}\n\treturn SCE_PL_NUMBER;\n}\n\nstatic int opposite(int ch) {\n\tif (ch == '(') return ')';\n\tif (ch == '[') return ']';\n\tif (ch == '{') return '}';\n\tif (ch == '<') return '>';\n\treturn ch;\n}\n\nstatic bool IsCommentLine(Sci_Position line, LexAccessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tint style = styler.StyleAt(i);\n\t\tif (ch == '#' && style == SCE_PL_COMMENTLINE)\n\t\t\treturn true;\n\t\telse if (!IsASpaceOrTab(ch))\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic bool IsPackageLine(Sci_Position line, LexAccessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tint style = styler.StyleAt(pos);\n\tif (style == SCE_PL_WORD && styler.Match(pos, \"package\")) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nstatic int PodHeadingLevel(Sci_Position pos, LexAccessor &styler) {\n\tint lvl = static_cast<unsigned char>(styler.SafeGetCharAt(pos + 5));\n\tif (lvl >= '1' && lvl <= '4') {\n\t\treturn lvl - '0';\n\t}\n\treturn 0;\n}\n\n// An individual named option for use in an OptionSet\n\n// Options used for LexerPerl\nstruct OptionsPerl {\n\tbool fold;\n\tbool foldComment;\n\tbool foldCompact;\n\t// Custom folding of POD and packages\n\tbool foldPOD;            // fold.perl.pod\n\t// Enable folding Pod blocks when using the Perl lexer.\n\tbool foldPackage;        // fold.perl.package\n\t// Enable folding packages when using the Perl lexer.\n\n\tbool foldCommentExplicit;\n\n\tbool foldAtElse;\n\n\tOptionsPerl() {\n\t\tfold = false;\n\t\tfoldComment = false;\n\t\tfoldCompact = true;\n\t\tfoldPOD = true;\n\t\tfoldPackage = true;\n\t\tfoldCommentExplicit = true;\n\t\tfoldAtElse = false;\n\t}\n};\n\nstatic const char *const perlWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nstruct OptionSetPerl : public OptionSet<OptionsPerl> {\n\tOptionSetPerl() {\n\t\tDefineProperty(\"fold\", &OptionsPerl::fold);\n\n\t\tDefineProperty(\"fold.comment\", &OptionsPerl::foldComment);\n\n\t\tDefineProperty(\"fold.compact\", &OptionsPerl::foldCompact);\n\n\t\tDefineProperty(\"fold.perl.pod\", &OptionsPerl::foldPOD,\n\t\t        \"Set to 0 to disable folding Pod blocks when using the Perl lexer.\");\n\n\t\tDefineProperty(\"fold.perl.package\", &OptionsPerl::foldPackage,\n\t\t        \"Set to 0 to disable folding packages when using the Perl lexer.\");\n\n\t\tDefineProperty(\"fold.perl.comment.explicit\", &OptionsPerl::foldCommentExplicit,\n\t\t        \"Set to 0 to disable explicit folding.\");\n\n\t\tDefineProperty(\"fold.perl.at.else\", &OptionsPerl::foldAtElse,\n\t\t               \"This option enables Perl folding on a \\\"} else {\\\" line of an if statement.\");\n\n\t\tDefineWordListSets(perlWordListDesc);\n\t}\n};\n\nclass LexerPerl : public ILexer {\n\tCharacterSet setWordStart;\n\tCharacterSet setWord;\n\tCharacterSet setSpecialVar;\n\tCharacterSet setControlVar;\n\tWordList keywords;\n\tOptionsPerl options;\n\tOptionSetPerl osPerl;\npublic:\n\tLexerPerl() :\n\t\tsetWordStart(CharacterSet::setAlpha, \"_\", 0x80, true),\n\t\tsetWord(CharacterSet::setAlphaNum, \"_\", 0x80, true),\n\t\tsetSpecialVar(CharacterSet::setNone, \"\\\"$;<>&`'+,./\\\\%:=~!?@[]\"),\n\t\tsetControlVar(CharacterSet::setNone, \"ACDEFHILMNOPRSTVWX\") {\n\t}\n\tvirtual ~LexerPerl() {\n\t}\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tint SCI_METHOD Version() const {\n\t\treturn lvOriginal;\n\t}\n\tconst char *SCI_METHOD PropertyNames() {\n\t\treturn osPerl.PropertyNames();\n\t}\n\tint SCI_METHOD PropertyType(const char *name) {\n\t\treturn osPerl.PropertyType(name);\n\t}\n\tconst char *SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn osPerl.DescribeProperty(name);\n\t}\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tconst char *SCI_METHOD DescribeWordListSets() {\n\t\treturn osPerl.DescribeWordListSets();\n\t}\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n\tvoid *SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\n\tstatic ILexer *LexerFactoryPerl() {\n\t\treturn new LexerPerl();\n\t}\n\tint InputSymbolScan(StyleContext &sc);\n\tvoid InterpolateSegment(StyleContext &sc, int maxSeg, bool isPattern=false);\n};\n\nSci_Position SCI_METHOD LexerPerl::PropertySet(const char *key, const char *val) {\n\tif (osPerl.PropertySet(&options, key, val)) {\n\t\treturn 0;\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerPerl::WordListSet(int n, const char *wl) {\n\tWordList *wordListN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\twordListN = &keywords;\n\t\tbreak;\n\t}\n\tSci_Position firstModification = -1;\n\tif (wordListN) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nint LexerPerl::InputSymbolScan(StyleContext &sc) {\n\t// forward scan for matching > on same line; file handles\n\tint c, sLen = 0;\n\twhile ((c = sc.GetRelativeCharacter(++sLen)) != 0) {\n\t\tif (c == '\\r' || c == '\\n') {\n\t\t\treturn 0;\n\t\t} else if (c == '>') {\n\t\t\tif (sc.Match(\"<=>\"))\t// '<=>' case\n\t\t\t\treturn 0;\n\t\t\treturn sLen;\n\t\t}\n\t}\n\treturn 0;\n}\n\nvoid LexerPerl::InterpolateSegment(StyleContext &sc, int maxSeg, bool isPattern) {\n\t// interpolate a segment (with no active backslashes or delimiters within)\n\t// switch in or out of an interpolation style or continue current style\n\t// commit variable patterns if found, trim segment, repeat until done\n\twhile (maxSeg > 0) {\n\t\tbool isVar = false;\n\t\tint sLen = 0;\n\t\tif ((maxSeg > 1) && (sc.ch == '$' || sc.ch == '@')) {\n\t\t\t// $#[$]*word [$@][$]*word (where word or {word} is always present)\n\t\t\tbool braces = false;\n\t\t\tsLen = 1;\n\t\t\tif (sc.ch == '$' && sc.chNext == '#') {\t// starts with $#\n\t\t\t\tsLen++;\n\t\t\t}\n\t\t\twhile ((maxSeg > sLen) && (sc.GetRelativeCharacter(sLen) == '$'))\t// >0 $ dereference within\n\t\t\t\tsLen++;\n\t\t\tif ((maxSeg > sLen) && (sc.GetRelativeCharacter(sLen) == '{')) {\t// { start for {word}\n\t\t\t\tsLen++;\n\t\t\t\tbraces = true;\n\t\t\t}\n\t\t\tif (maxSeg > sLen) {\n\t\t\t\tint c = sc.GetRelativeCharacter(sLen);\n\t\t\t\tif (setWordStart.Contains(c)) {\t// word (various)\n\t\t\t\t\tsLen++;\n\t\t\t\t\tisVar = true;\n\t\t\t\t\twhile (maxSeg > sLen) {\n\t\t\t\t\t\tif (!setWord.Contains(sc.GetRelativeCharacter(sLen)))\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tsLen++;\n\t\t\t\t\t}\n\t\t\t\t} else if (braces && IsADigit(c) && (sLen == 2)) {\t// digit for ${digit}\n\t\t\t\t\tsLen++;\n\t\t\t\t\tisVar = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (braces) {\n\t\t\t\tif ((maxSeg > sLen) && (sc.GetRelativeCharacter(sLen) == '}')) {\t// } end for {word}\n\t\t\t\t\tsLen++;\n\t\t\t\t} else\n\t\t\t\t\tisVar = false;\n\t\t\t}\n\t\t}\n\t\tif (!isVar && (maxSeg > 1)) {\t// $- or @-specific variable patterns\n\t\t\tint c = sc.chNext;\n\t\t\tif (sc.ch == '$') {\n\t\t\t\tsLen = 1;\n\t\t\t\tif (IsADigit(c)) {\t// $[0-9] and slurp trailing digits\n\t\t\t\t\tsLen++;\n\t\t\t\t\tisVar = true;\n\t\t\t\t\twhile ((maxSeg > sLen) && IsADigit(sc.GetRelativeCharacter(sLen)))\n\t\t\t\t\t\tsLen++;\n\t\t\t\t} else if (setSpecialVar.Contains(c)) {\t// $ special variables\n\t\t\t\t\tsLen++;\n\t\t\t\t\tisVar = true;\n\t\t\t\t} else if (!isPattern && ((c == '(') || (c == ')') || (c == '|'))) {\t// $ additional\n\t\t\t\t\tsLen++;\n\t\t\t\t\tisVar = true;\n\t\t\t\t} else if (c == '^') {\t// $^A control-char style\n\t\t\t\t\tsLen++;\n\t\t\t\t\tif ((maxSeg > sLen) && setControlVar.Contains(sc.GetRelativeCharacter(sLen))) {\n\t\t\t\t\t\tsLen++;\n\t\t\t\t\t\tisVar = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '@') {\n\t\t\t\tsLen = 1;\n\t\t\t\tif (!isPattern && ((c == '+') || (c == '-'))) {\t// @ specials non-pattern\n\t\t\t\t\tsLen++;\n\t\t\t\t\tisVar = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isVar) {\t// commit as interpolated variable or normal character\n\t\t\tif (sc.state < SCE_PL_STRING_VAR)\n\t\t\t\tsc.SetState(sc.state + INTERPOLATE_SHIFT);\n\t\t\tsc.Forward(sLen);\n\t\t\tmaxSeg -= sLen;\n\t\t} else {\n\t\t\tif (sc.state >= SCE_PL_STRING_VAR)\n\t\t\t\tsc.SetState(sc.state - INTERPOLATE_SHIFT);\n\t\t\tsc.Forward();\n\t\t\tmaxSeg--;\n\t\t}\n\t}\n\tif (sc.state >= SCE_PL_STRING_VAR)\n\t\tsc.SetState(sc.state - INTERPOLATE_SHIFT);\n}\n\nvoid SCI_METHOD LexerPerl::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tLexAccessor styler(pAccess);\n\n\t// keywords that forces /PATTERN/ at all times; should track vim's behaviour\n\tWordList reWords;\n\treWords.Set(\"elsif if split while\");\n\n\t// charset classes\n\tCharacterSet setSingleCharOp(CharacterSet::setNone, \"rwxoRWXOezsfdlpSbctugkTBMAC\");\n\t// lexing of \"%*</\" operators is non-trivial; these are missing in the set below\n\tCharacterSet setPerlOperator(CharacterSet::setNone, \"^&\\\\()-+=|{}[]:;>,?!.~\");\n\tCharacterSet setQDelim(CharacterSet::setNone, \"qrwx\");\n\tCharacterSet setModifiers(CharacterSet::setAlpha);\n\tCharacterSet setPreferRE(CharacterSet::setNone, \"*/<%\");\n\t// setArray and setHash also accepts chars for special vars like $_,\n\t// which are then truncated when the next char does not match setVar\n\tCharacterSet setVar(CharacterSet::setAlphaNum, \"#$_'\", 0x80, true);\n\tCharacterSet setArray(CharacterSet::setAlpha, \"#$_+-\", 0x80, true);\n\tCharacterSet setHash(CharacterSet::setAlpha, \"#$_!^+-\", 0x80, true);\n\tCharacterSet &setPOD = setModifiers;\n\tCharacterSet setNonHereDoc(CharacterSet::setDigits, \"=$@\");\n\tCharacterSet setHereDocDelim(CharacterSet::setAlphaNum, \"_\");\n\tCharacterSet setSubPrototype(CharacterSet::setNone, \"\\\\[$@%&*+];_ \\t\");\n\tCharacterSet setRepetition(CharacterSet::setDigits, \")\\\"'\");\n\t// for format identifiers\n\tCharacterSet setFormatStart(CharacterSet::setAlpha, \"_=\");\n\tCharacterSet &setFormat = setHereDocDelim;\n\n\t// Lexer for perl often has to backtrack to start of current style to determine\n\t// which characters are being used as quotes, how deeply nested is the\n\t// start position and what the termination string is for HERE documents.\n\n\tclass HereDocCls {\t// Class to manage HERE doc sequence\n\tpublic:\n\t\tint State;\n\t\t// 0: '<<' encountered\n\t\t// 1: collect the delimiter\n\t\t// 2: here doc text (lines after the delimiter)\n\t\tint Quote;\t\t// the char after '<<'\n\t\tbool Quoted;\t\t// true if Quote in ('\\'','\"','`')\n\t\tint DelimiterLength;\t// strlen(Delimiter)\n\t\tchar Delimiter[HERE_DELIM_MAX];\t// the Delimiter\n\t\tHereDocCls() {\n\t\t\tState = 0;\n\t\t\tQuote = 0;\n\t\t\tQuoted = false;\n\t\t\tDelimiterLength = 0;\n\t\t\tDelimiter[0] = '\\0';\n\t\t}\n\t\tvoid Append(int ch) {\n\t\t\tDelimiter[DelimiterLength++] = static_cast<char>(ch);\n\t\t\tDelimiter[DelimiterLength] = '\\0';\n\t\t}\n\t\t~HereDocCls() {\n\t\t}\n\t};\n\tHereDocCls HereDoc;\t\t// TODO: FIFO for stacked here-docs\n\n\tclass QuoteCls {\t// Class to manage quote pairs\n\tpublic:\n\t\tint Rep;\n\t\tint Count;\n\t\tint Up, Down;\n\t\tQuoteCls() {\n\t\t\tNew(1);\n\t\t}\n\t\tvoid New(int r = 1) {\n\t\t\tRep   = r;\n\t\t\tCount = 0;\n\t\t\tUp    = '\\0';\n\t\t\tDown  = '\\0';\n\t\t}\n\t\tvoid Open(int u) {\n\t\t\tCount++;\n\t\t\tUp    = u;\n\t\t\tDown  = opposite(Up);\n\t\t}\n\t};\n\tQuoteCls Quote;\n\n\t// additional state for number lexing\n\tint numState = PERLNUM_DECIMAL;\n\tint dotCount = 0;\n\n\tSci_PositionU endPos = startPos + length;\n\n\t// Backtrack to beginning of style if required...\n\t// If in a long distance lexical state, backtrack to find quote characters.\n\t// Includes strings (may be multi-line), numbers (additional state), format\n\t// bodies, as well as POD sections.\n\tif (initStyle == SCE_PL_HERE_Q\n\t    || initStyle == SCE_PL_HERE_QQ\n\t    || initStyle == SCE_PL_HERE_QX\n\t    || initStyle == SCE_PL_FORMAT\n\t    || initStyle == SCE_PL_HERE_QQ_VAR\n\t    || initStyle == SCE_PL_HERE_QX_VAR\n\t   ) {\n\t\t// backtrack through multiple styles to reach the delimiter start\n\t\tint delim = (initStyle == SCE_PL_FORMAT) ? SCE_PL_FORMAT_IDENT:SCE_PL_HERE_DELIM;\n\t\twhile ((startPos > 1) && (styler.StyleAt(startPos) != delim)) {\n\t\t\tstartPos--;\n\t\t}\n\t\tstartPos = styler.LineStart(styler.GetLine(startPos));\n\t\tinitStyle = styler.StyleAt(startPos - 1);\n\t}\n\tif (initStyle == SCE_PL_STRING\n\t    || initStyle == SCE_PL_STRING_QQ\n\t    || initStyle == SCE_PL_BACKTICKS\n\t    || initStyle == SCE_PL_STRING_QX\n\t    || initStyle == SCE_PL_REGEX\n\t    || initStyle == SCE_PL_STRING_QR\n\t    || initStyle == SCE_PL_REGSUBST\n\t    || initStyle == SCE_PL_STRING_VAR\n\t    || initStyle == SCE_PL_STRING_QQ_VAR\n\t    || initStyle == SCE_PL_BACKTICKS_VAR\n\t    || initStyle == SCE_PL_STRING_QX_VAR\n\t    || initStyle == SCE_PL_REGEX_VAR\n\t    || initStyle == SCE_PL_STRING_QR_VAR\n\t    || initStyle == SCE_PL_REGSUBST_VAR\n\t   ) {\n\t\t// for interpolation, must backtrack through a mix of two different styles\n\t\tint otherStyle = (initStyle >= SCE_PL_STRING_VAR) ?\n\t\t\tinitStyle - INTERPOLATE_SHIFT : initStyle + INTERPOLATE_SHIFT;\n\t\twhile (startPos > 1) {\n\t\t\tint st = styler.StyleAt(startPos - 1);\n\t\t\tif ((st != initStyle) && (st != otherStyle))\n\t\t\t\tbreak;\n\t\t\tstartPos--;\n\t\t}\n\t\tinitStyle = SCE_PL_DEFAULT;\n\t} else if (initStyle == SCE_PL_STRING_Q\n\t        || initStyle == SCE_PL_STRING_QW\n\t        || initStyle == SCE_PL_XLAT\n\t        || initStyle == SCE_PL_CHARACTER\n\t        || initStyle == SCE_PL_NUMBER\n\t        || initStyle == SCE_PL_IDENTIFIER\n\t        || initStyle == SCE_PL_ERROR\n\t        || initStyle == SCE_PL_SUB_PROTOTYPE\n\t   ) {\n\t\twhile ((startPos > 1) && (styler.StyleAt(startPos - 1) == initStyle)) {\n\t\t\tstartPos--;\n\t\t}\n\t\tinitStyle = SCE_PL_DEFAULT;\n\t} else if (initStyle == SCE_PL_POD\n\t        || initStyle == SCE_PL_POD_VERB\n\t          ) {\n\t\t// POD backtracking finds preceding blank lines and goes back past them\n\t\tSci_Position ln = styler.GetLine(startPos);\n\t\tif (ln > 0) {\n\t\t\tinitStyle = styler.StyleAt(styler.LineStart(--ln));\n\t\t\tif (initStyle == SCE_PL_POD || initStyle == SCE_PL_POD_VERB) {\n\t\t\t\twhile (ln > 0 && styler.GetLineState(ln) == SCE_PL_DEFAULT)\n\t\t\t\t\tln--;\n\t\t\t}\n\t\t\tstartPos = styler.LineStart(++ln);\n\t\t\tinitStyle = styler.StyleAt(startPos - 1);\n\t\t} else {\n\t\t\tstartPos = 0;\n\t\t\tinitStyle = SCE_PL_DEFAULT;\n\t\t}\n\t}\n\n\t// backFlag, backPos are additional state to aid identifier corner cases.\n\t// Look backwards past whitespace and comments in order to detect either\n\t// operator or keyword. Later updated as we go along.\n\tint backFlag = BACK_NONE;\n\tSci_PositionU backPos = startPos;\n\tif (backPos > 0) {\n\t\tbackPos--;\n\t\tskipWhitespaceComment(styler, backPos);\n\t\tif (styler.StyleAt(backPos) == SCE_PL_OPERATOR)\n\t\t\tbackFlag = BACK_OPERATOR;\n\t\telse if (styler.StyleAt(backPos) == SCE_PL_WORD)\n\t\t\tbackFlag = BACK_KEYWORD;\n\t\tbackPos++;\n\t}\n\n\tStyleContext sc(startPos, endPos - startPos, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\tcase SCE_PL_OPERATOR:\n\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\tbackFlag = BACK_OPERATOR;\n\t\t\tbackPos = sc.currentPos;\n\t\t\tbreak;\n\t\tcase SCE_PL_IDENTIFIER:\t\t// identifier, bareword, inputsymbol\n\t\t\tif ((!setWord.Contains(sc.ch) && sc.ch != '\\'')\n\t\t\t        || sc.Match('.', '.')\n\t\t\t        || sc.chPrev == '>') {\t// end of inputsymbol\n\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_WORD:\t\t// keyword, plus special cases\n\t\t\tif (!setWord.Contains(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tif ((strcmp(s, \"__DATA__\") == 0) || (strcmp(s, \"__END__\") == 0)) {\n\t\t\t\t\tsc.ChangeState(SCE_PL_DATASECTION);\n\t\t\t\t} else {\n\t\t\t\t\tif ((strcmp(s, \"format\") == 0)) {\n\t\t\t\t\t\tsc.SetState(SCE_PL_FORMAT_IDENT);\n\t\t\t\t\t\tHereDoc.State = 0;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t\tbackFlag = BACK_KEYWORD;\n\t\t\t\t\tbackPos = sc.currentPos;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_SCALAR:\n\t\tcase SCE_PL_ARRAY:\n\t\tcase SCE_PL_HASH:\n\t\tcase SCE_PL_SYMBOLTABLE:\n\t\t\tif (sc.Match(':', ':')) {\t// skip ::\n\t\t\t\tsc.Forward();\n\t\t\t} else if (!setVar.Contains(sc.ch)) {\n\t\t\t\tif (sc.LengthCurrent() == 1) {\n\t\t\t\t\t// Special variable: $(, $_ etc.\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_NUMBER:\n\t\t\t// if no early break, number style is terminated at \"(go through)\"\n\t\t\tif (sc.ch == '.') {\n\t\t\t\tif (sc.chNext == '.') {\n\t\t\t\t\t// double dot is always an operator (go through)\n\t\t\t\t} else if (numState <= PERLNUM_FLOAT_EXP) {\n\t\t\t\t\t// non-decimal number or float exponent, consume next dot\n\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\t// decimal or vectors allows dots\n\t\t\t\t\tdotCount++;\n\t\t\t\t\tif (numState == PERLNUM_DECIMAL) {\n\t\t\t\t\t\tif (dotCount <= 1)\t// number with one dot in it\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tif (IsADigit(sc.chNext)) {\t// really a vector\n\t\t\t\t\t\t\tnumState = PERLNUM_VECTOR;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// number then dot (go through)\n\t\t\t\t\t} else if (numState == PERLNUM_HEX) {\n\t\t\t\t\t\tif (dotCount <= 1 && IsADigit(sc.chNext, 16)) {\n\t\t\t\t\t\t\tbreak;\t// hex with one dot is a hex float\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// hex then dot (go through)\n\t\t\t\t\t} else if (IsADigit(sc.chNext))\t// vectors\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t// vector then dot (go through)\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '_') {\n\t\t\t\t// permissive underscoring for number and vector literals\n\t\t\t\tbreak;\n\t\t\t} else if (numState == PERLNUM_DECIMAL) {\n\t\t\t\tif (sc.ch == 'E' || sc.ch == 'e') {\t// exponent, sign\n\t\t\t\t\tnumState = PERLNUM_FLOAT_EXP;\n\t\t\t\t\tif (sc.chNext == '+' || sc.chNext == '-') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (IsADigit(sc.ch))\n\t\t\t\t\tbreak;\n\t\t\t\t// number then word (go through)\n\t\t\t} else if (numState == PERLNUM_HEX) {\n\t\t\t\tif (sc.ch == 'P' || sc.ch == 'p') {\t// hex float exponent, sign\n\t\t\t\t\tnumState = PERLNUM_FLOAT_EXP;\n\t\t\t\t\tif (sc.chNext == '+' || sc.chNext == '-') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (IsADigit(sc.ch, 16))\n\t\t\t\t\tbreak;\n\t\t\t\t// hex or hex float then word (go through)\n\t\t\t} else if (numState == PERLNUM_VECTOR || numState == PERLNUM_V_VECTOR) {\n\t\t\t\tif (IsADigit(sc.ch))\t// vector\n\t\t\t\t\tbreak;\n\t\t\t\tif (setWord.Contains(sc.ch) && dotCount == 0) {\t// change to word\n\t\t\t\t\tsc.ChangeState(SCE_PL_IDENTIFIER);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\t// vector then word (go through)\n\t\t\t} else if (IsADigit(sc.ch)) {\n\t\t\t\tif (numState == PERLNUM_FLOAT_EXP) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else if (numState == PERLNUM_OCTAL) {\n\t\t\t\t\tif (sc.ch <= '7') break;\n\t\t\t\t} else if (numState == PERLNUM_BINARY) {\n\t\t\t\t\tif (sc.ch <= '1') break;\n\t\t\t\t}\n\t\t\t\t// mark invalid octal, binary numbers (go through)\n\t\t\t\tnumState = PERLNUM_BAD;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// complete current number or vector\n\t\t\tsc.ChangeState(actualNumStyle(numState));\n\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\tbreak;\n\t\tcase SCE_PL_COMMENTLINE:\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_HERE_DELIM:\n\t\t\tif (HereDoc.State == 0) { // '<<' encountered\n\t\t\t\tint delim_ch = sc.chNext;\n\t\t\t\tSci_Position ws_skip = 0;\n\t\t\t\tHereDoc.State = 1;\t// pre-init HERE doc class\n\t\t\t\tHereDoc.Quote = sc.chNext;\n\t\t\t\tHereDoc.Quoted = false;\n\t\t\t\tHereDoc.DelimiterLength = 0;\n\t\t\t\tHereDoc.Delimiter[HereDoc.DelimiterLength] = '\\0';\n\t\t\t\tif (IsASpaceOrTab(delim_ch)) {\n\t\t\t\t\t// skip whitespace; legal only for quoted delimiters\n\t\t\t\t\tSci_PositionU i = sc.currentPos + 1;\n\t\t\t\t\twhile ((i < endPos) && IsASpaceOrTab(delim_ch)) {\n\t\t\t\t\t\ti++;\n\t\t\t\t\t\tdelim_ch = static_cast<unsigned char>(styler.SafeGetCharAt(i));\n\t\t\t\t\t}\n\t\t\t\t\tws_skip = i - sc.currentPos - 1;\n\t\t\t\t}\n\t\t\t\tif (delim_ch == '\\'' || delim_ch == '\"' || delim_ch == '`') {\n\t\t\t\t\t// a quoted here-doc delimiter; skip any whitespace\n\t\t\t\t\tsc.Forward(ws_skip + 1);\n\t\t\t\t\tHereDoc.Quote = delim_ch;\n\t\t\t\t\tHereDoc.Quoted = true;\n\t\t\t\t} else if ((ws_skip == 0 && setNonHereDoc.Contains(sc.chNext))\n\t\t\t\t        || ws_skip > 0) {\n\t\t\t\t\t// left shift << or <<= operator cases\n\t\t\t\t\t// restore position if operator\n\t\t\t\t\tsc.ChangeState(SCE_PL_OPERATOR);\n\t\t\t\t\tsc.ForwardSetState(SCE_PL_DEFAULT);\n\t\t\t\t\tbackFlag = BACK_OPERATOR;\n\t\t\t\t\tbackPos = sc.currentPos;\n\t\t\t\t\tHereDoc.State = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// specially handle initial '\\' for identifier\n\t\t\t\t\tif (ws_skip == 0 && HereDoc.Quote == '\\\\')\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t// an unquoted here-doc delimiter, no special handling\n\t\t\t\t\t// (cannot be prefixed by spaces/tabs), or\n\t\t\t\t\t// symbols terminates; deprecated zero-length delimiter\n\t\t\t\t}\n\t\t\t} else if (HereDoc.State == 1) { // collect the delimiter\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t\tif (HereDoc.Quoted) { // a quoted here-doc delimiter\n\t\t\t\t\tif (sc.ch == HereDoc.Quote) { // closing quote => end of delimiter\n\t\t\t\t\t\tsc.ForwardSetState(SCE_PL_DEFAULT);\n\t\t\t\t\t} else if (!sc.atLineEnd) {\n\t\t\t\t\t\tif (sc.Match('\\\\', static_cast<char>(HereDoc.Quote))) { // escaped quote\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sc.ch != '\\r') {\t// skip CR if CRLF\n\t\t\t\t\t\t\tint i = 0;\t\t\t// else append char, possibly an extended char\n\t\t\t\t\t\t\twhile (i < sc.width) {\n\t\t\t\t\t\t\t\tHereDoc.Append(static_cast<unsigned char>(styler.SafeGetCharAt(sc.currentPos + i)));\n\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else { // an unquoted here-doc delimiter, no extended charsets\n\t\t\t\t\tif (setHereDocDelim.Contains(sc.ch)) {\n\t\t\t\t\t\tHereDoc.Append(sc.ch);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (HereDoc.DelimiterLength >= HERE_DELIM_MAX - 1) {\n\t\t\t\t\tsc.SetState(SCE_PL_ERROR);\n\t\t\t\t\tHereDoc.State = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_HERE_Q:\n\t\tcase SCE_PL_HERE_QQ:\n\t\tcase SCE_PL_HERE_QX:\n\t\t\t// also implies HereDoc.State == 2\n\t\t\tsc.Complete();\n\t\t\tif (HereDoc.DelimiterLength == 0 || sc.Match(HereDoc.Delimiter)) {\n\t\t\t\tint c = sc.GetRelative(HereDoc.DelimiterLength);\n\t\t\t\tif (c == '\\r' || c == '\\n') {\t// peek first, do not consume match\n\t\t\t\t\tsc.ForwardBytes(HereDoc.DelimiterLength);\n\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t\t\tHereDoc.State = 0;\n\t\t\t\t\tif (!sc.atLineEnd)\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sc.state == SCE_PL_HERE_Q) {\t// \\EOF and 'EOF' non-interpolated\n\t\t\t\twhile (!sc.atLineEnd)\n\t\t\t\t\tsc.Forward();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\twhile (!sc.atLineEnd) {\t\t// \"EOF\" and `EOF` interpolated\n\t\t\t\tint c, sLen = 0, endType = 0;\n\t\t\t\twhile ((c = sc.GetRelativeCharacter(sLen)) != 0) {\n\t\t\t\t\t// scan to break string into segments\n\t\t\t\t\tif (c == '\\\\') {\n\t\t\t\t\t\tendType = 1; break;\n\t\t\t\t\t} else if (c == '\\r' || c == '\\n') {\n\t\t\t\t\t\tendType = 2; break;\n\t\t\t\t\t}\n\t\t\t\t\tsLen++;\n\t\t\t\t}\n\t\t\t\tif (sLen > 0)\t// process non-empty segments\n\t\t\t\t\tInterpolateSegment(sc, sLen);\n\t\t\t\tif (endType == 1) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\t// \\ at end-of-line does not appear to have any effect, skip\n\t\t\t\t\tif (sc.ch != '\\r' && sc.ch != '\\n')\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (endType == 2) {\n\t\t\t\t\tif (!sc.atLineEnd)\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_POD:\n\t\tcase SCE_PL_POD_VERB: {\n\t\t\t\tSci_PositionU fw = sc.currentPos;\n\t\t\t\tSci_Position ln = styler.GetLine(fw);\n\t\t\t\tif (sc.atLineStart && sc.Match(\"=cut\")) {\t// end of POD\n\t\t\t\t\tsc.SetState(SCE_PL_POD);\n\t\t\t\t\tsc.Forward(4);\n\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t\t\tstyler.SetLineState(ln, SCE_PL_POD);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tint pod = podLineScan(styler, fw, endPos);\t// classify POD line\n\t\t\t\tstyler.SetLineState(ln, pod);\n\t\t\t\tif (pod == SCE_PL_DEFAULT) {\n\t\t\t\t\tif (sc.state == SCE_PL_POD_VERB) {\n\t\t\t\t\t\tSci_PositionU fw2 = fw;\n\t\t\t\t\t\twhile (fw2 < (endPos - 1) && pod == SCE_PL_DEFAULT) {\n\t\t\t\t\t\t\tfw = fw2++;\t// penultimate line (last blank line)\n\t\t\t\t\t\t\tpod = podLineScan(styler, fw2, endPos);\n\t\t\t\t\t\t\tstyler.SetLineState(styler.GetLine(fw2), pod);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (pod == SCE_PL_POD) {\t// truncate verbatim POD early\n\t\t\t\t\t\t\tsc.SetState(SCE_PL_POD);\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tfw = fw2;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (pod == SCE_PL_POD_VERB\t// still part of current paragraph\n\t\t\t\t\t        && (styler.GetLineState(ln - 1) == SCE_PL_POD)) {\n\t\t\t\t\t\tpod = SCE_PL_POD;\n\t\t\t\t\t\tstyler.SetLineState(ln, pod);\n\t\t\t\t\t} else if (pod == SCE_PL_POD\n\t\t\t\t\t        && (styler.GetLineState(ln - 1) == SCE_PL_POD_VERB)) {\n\t\t\t\t\t\tpod = SCE_PL_POD_VERB;\n\t\t\t\t\t\tstyler.SetLineState(ln, pod);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(pod);\n\t\t\t\t}\n\t\t\t\tsc.ForwardBytes(fw - sc.currentPos);\t// commit style\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_REGEX:\n\t\tcase SCE_PL_STRING_QR:\n\t\t\tif (Quote.Rep <= 0) {\n\t\t\t\tif (!setModifiers.Contains(sc.ch))\n\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t} else if (!Quote.Up && !IsASpace(sc.ch)) {\n\t\t\t\tQuote.Open(sc.ch);\n\t\t\t} else {\n\t\t\t\tint c, sLen = 0, endType = 0;\n\t\t\t\twhile ((c = sc.GetRelativeCharacter(sLen)) != 0) {\n\t\t\t\t\t// scan to break string into segments\n\t\t\t\t\tif (IsASpace(c)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (c == '\\\\' && Quote.Up != '\\\\') {\n\t\t\t\t\t\tendType = 1; break;\n\t\t\t\t\t} else if (c == Quote.Down) {\n\t\t\t\t\t\tQuote.Count--;\n\t\t\t\t\t\tif (Quote.Count == 0) {\n\t\t\t\t\t\t\tQuote.Rep--;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (c == Quote.Up)\n\t\t\t\t\t\tQuote.Count++;\n\t\t\t\t\tsLen++;\n\t\t\t\t}\n\t\t\t\tif (sLen > 0) {\t// process non-empty segments\n\t\t\t\t\tif (Quote.Up != '\\'') {\n\t\t\t\t\t\tInterpolateSegment(sc, sLen, true);\n\t\t\t\t\t} else\t\t// non-interpolated path\n\t\t\t\t\t\tsc.Forward(sLen);\n\t\t\t\t}\n\t\t\t\tif (endType == 1)\n\t\t\t\t\tsc.Forward();\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_REGSUBST:\n\t\tcase SCE_PL_XLAT:\n\t\t\tif (Quote.Rep <= 0) {\n\t\t\t\tif (!setModifiers.Contains(sc.ch))\n\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t} else if (!Quote.Up && !IsASpace(sc.ch)) {\n\t\t\t\tQuote.Open(sc.ch);\n\t\t\t} else {\n\t\t\t\tint c, sLen = 0, endType = 0;\n\t\t\t\tbool isPattern = (Quote.Rep == 2);\n\t\t\t\twhile ((c = sc.GetRelativeCharacter(sLen)) != 0) {\n\t\t\t\t\t// scan to break string into segments\n\t\t\t\t\tif (c == '\\\\' && Quote.Up != '\\\\') {\n\t\t\t\t\t\tendType = 2; break;\n\t\t\t\t\t} else if (Quote.Count == 0 && Quote.Rep == 1) {\n\t\t\t\t\t\t// We matched something like s(...) or tr{...}, Perl 5.10\n\t\t\t\t\t\t// appears to allow almost any character for use as the\n\t\t\t\t\t\t// next delimiters. Whitespace and comments are accepted in\n\t\t\t\t\t\t// between, but we'll limit to whitespace here.\n\t\t\t\t\t\t// For '#', if no whitespace in between, it's a delimiter.\n\t\t\t\t\t\tif (IsASpace(c)) {\n\t\t\t\t\t\t\t// Keep going\n\t\t\t\t\t\t} else if (c == '#' && IsASpaceOrTab(sc.GetRelativeCharacter(sLen - 1))) {\n\t\t\t\t\t\t\tendType = 3;\n\t\t\t\t\t\t} else\n\t\t\t\t\t\t\tQuote.Open(c);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (c == Quote.Down) {\n\t\t\t\t\t\tQuote.Count--;\n\t\t\t\t\t\tif (Quote.Count == 0) {\n\t\t\t\t\t\t\tQuote.Rep--;\n\t\t\t\t\t\t\tendType = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (Quote.Up == Quote.Down)\n\t\t\t\t\t\t\tQuote.Count++;\n\t\t\t\t\t\tif (endType == 1)\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (c == Quote.Up) {\n\t\t\t\t\t\tQuote.Count++;\n\t\t\t\t\t} else if (IsASpace(c))\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tsLen++;\n\t\t\t\t}\n\t\t\t\tif (sLen > 0) {\t// process non-empty segments\n\t\t\t\t\tif (sc.state == SCE_PL_REGSUBST && Quote.Up != '\\'') {\n\t\t\t\t\t\tInterpolateSegment(sc, sLen, isPattern);\n\t\t\t\t\t} else\t\t// non-interpolated path\n\t\t\t\t\t\tsc.Forward(sLen);\n\t\t\t\t}\n\t\t\t\tif (endType == 2) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (endType == 3)\n\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_STRING_Q:\n\t\tcase SCE_PL_STRING_QQ:\n\t\tcase SCE_PL_STRING_QX:\n\t\tcase SCE_PL_STRING_QW:\n\t\tcase SCE_PL_STRING:\n\t\tcase SCE_PL_CHARACTER:\n\t\tcase SCE_PL_BACKTICKS:\n\t\t\tif (!Quote.Down && !IsASpace(sc.ch)) {\n\t\t\t\tQuote.Open(sc.ch);\n\t\t\t} else {\n\t\t\t\tint c, sLen = 0, endType = 0;\n\t\t\t\twhile ((c = sc.GetRelativeCharacter(sLen)) != 0) {\n\t\t\t\t\t// scan to break string into segments\n\t\t\t\t\tif (IsASpace(c)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (c == '\\\\' && Quote.Up != '\\\\') {\n\t\t\t\t\t\tendType = 2; break;\n\t\t\t\t\t} else if (c == Quote.Down) {\n\t\t\t\t\t\tQuote.Count--;\n\t\t\t\t\t\tif (Quote.Count == 0) {\n\t\t\t\t\t\t\tendType = 3; break;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (c == Quote.Up)\n\t\t\t\t\t\tQuote.Count++;\n\t\t\t\t\tsLen++;\n\t\t\t\t}\n\t\t\t\tif (sLen > 0) {\t// process non-empty segments\n\t\t\t\t\tswitch (sc.state) {\n\t\t\t\t\tcase SCE_PL_STRING:\n\t\t\t\t\tcase SCE_PL_STRING_QQ:\n\t\t\t\t\tcase SCE_PL_BACKTICKS:\n\t\t\t\t\t\tInterpolateSegment(sc, sLen);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SCE_PL_STRING_QX:\n\t\t\t\t\t\tif (Quote.Up != '\\'') {\n\t\t\t\t\t\t\tInterpolateSegment(sc, sLen);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// (continued for ' delim)\n\t\t\t\t\tdefault:\t// non-interpolated path\n\t\t\t\t\t\tsc.Forward(sLen);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (endType == 2) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else if (endType == 3)\n\t\t\t\t\tsc.ForwardSetState(SCE_PL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_SUB_PROTOTYPE: {\n\t\t\t\tint i = 0;\n\t\t\t\t// forward scan; must all be valid proto characters\n\t\t\t\twhile (setSubPrototype.Contains(sc.GetRelative(i)))\n\t\t\t\t\ti++;\n\t\t\t\tif (sc.GetRelative(i) == ')') {\t// valid sub prototype\n\t\t\t\t\tsc.ForwardBytes(i);\n\t\t\t\t\tsc.ForwardSetState(SCE_PL_DEFAULT);\n\t\t\t\t} else {\n\t\t\t\t\t// abandon prototype, restart from '('\n\t\t\t\t\tsc.ChangeState(SCE_PL_OPERATOR);\n\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_FORMAT: {\n\t\t\t\tsc.Complete();\n\t\t\t\tif (sc.Match('.')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tif (sc.atLineEnd || ((sc.ch == '\\r' && sc.chNext == '\\n')))\n\t\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t\t}\n\t\t\t\twhile (!sc.atLineEnd)\n\t\t\t\t\tsc.Forward();\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_PL_ERROR:\n\t\t\tbreak;\n\t\t}\n\t\t// Needed for specific continuation styles (one follows the other)\n\t\tswitch (sc.state) {\n\t\t\t// continued from SCE_PL_WORD\n\t\tcase SCE_PL_FORMAT_IDENT:\n\t\t\t// occupies HereDoc state 3 to avoid clashing with HERE docs\n\t\t\tif (IsASpaceOrTab(sc.ch)) {\t\t// skip whitespace\n\t\t\t\tsc.ChangeState(SCE_PL_DEFAULT);\n\t\t\t\twhile (IsASpaceOrTab(sc.ch) && !sc.atLineEnd)\n\t\t\t\t\tsc.Forward();\n\t\t\t\tsc.SetState(SCE_PL_FORMAT_IDENT);\n\t\t\t}\n\t\t\tif (setFormatStart.Contains(sc.ch)) {\t// identifier or '='\n\t\t\t\tif (sc.ch != '=') {\n\t\t\t\t\tdo {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} while (setFormat.Contains(sc.ch));\n\t\t\t\t}\n\t\t\t\twhile (IsASpaceOrTab(sc.ch) && !sc.atLineEnd)\n\t\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '=') {\n\t\t\t\t\tsc.ForwardSetState(SCE_PL_DEFAULT);\n\t\t\t\t\tHereDoc.State = 3;\n\t\t\t\t} else {\n\t\t\t\t\t// invalid identifier; inexact fallback, but hey\n\t\t\t\t\tsc.ChangeState(SCE_PL_IDENTIFIER);\n\t\t\t\t\tsc.SetState(SCE_PL_DEFAULT);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsc.ChangeState(SCE_PL_DEFAULT);\t// invalid identifier\n\t\t\t}\n\t\t\tbackFlag = BACK_NONE;\n\t\t\tbreak;\n\t\t}\n\n\t\t// Must check end of HereDoc states here before default state is handled\n\t\tif (HereDoc.State == 1 && sc.atLineEnd) {\n\t\t\t// Begin of here-doc (the line after the here-doc delimiter):\n\t\t\t// Lexically, the here-doc starts from the next line after the >>, but the\n\t\t\t// first line of here-doc seem to follow the style of the last EOL sequence\n\t\t\tint st_new = SCE_PL_HERE_QQ;\n\t\t\tHereDoc.State = 2;\n\t\t\tif (HereDoc.Quoted) {\n\t\t\t\tif (sc.state == SCE_PL_HERE_DELIM) {\n\t\t\t\t\t// Missing quote at end of string! We are stricter than perl.\n\t\t\t\t\t// Colour here-doc anyway while marking this bit as an error.\n\t\t\t\t\tsc.ChangeState(SCE_PL_ERROR);\n\t\t\t\t}\n\t\t\t\tswitch (HereDoc.Quote) {\n\t\t\t\tcase '\\'':\n\t\t\t\t\tst_new = SCE_PL_HERE_Q;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '\"' :\n\t\t\t\t\tst_new = SCE_PL_HERE_QQ;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '`' :\n\t\t\t\t\tst_new = SCE_PL_HERE_QX;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (HereDoc.Quote == '\\\\')\n\t\t\t\t\tst_new = SCE_PL_HERE_Q;\n\t\t\t}\n\t\t\tsc.SetState(st_new);\n\t\t}\n\t\tif (HereDoc.State == 3 && sc.atLineEnd) {\n\t\t\t// Start of format body.\n\t\t\tHereDoc.State = 0;\n\t\t\tsc.SetState(SCE_PL_FORMAT);\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_PL_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) ||\n\t\t\t        (IsADigit(sc.chNext) && (sc.ch == '.' || sc.ch == 'v'))) {\n\t\t\t\tsc.SetState(SCE_PL_NUMBER);\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t\tnumState = PERLNUM_DECIMAL;\n\t\t\t\tdotCount = 0;\n\t\t\t\tif (sc.ch == '0') {\t\t// hex,bin,octal\n\t\t\t\t\tif (sc.chNext == 'x' || sc.chNext == 'X') {\n\t\t\t\t\t\tnumState = PERLNUM_HEX;\n\t\t\t\t\t} else if (sc.chNext == 'b' || sc.chNext == 'B') {\n\t\t\t\t\t\tnumState = PERLNUM_BINARY;\n\t\t\t\t\t} else if (IsADigit(sc.chNext)) {\n\t\t\t\t\t\tnumState = PERLNUM_OCTAL;\n\t\t\t\t\t}\n\t\t\t\t\tif (numState != PERLNUM_DECIMAL) {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == 'v') {\t\t// vector\n\t\t\t\t\tnumState = PERLNUM_V_VECTOR;\n\t\t\t\t}\n\t\t\t} else if (setWord.Contains(sc.ch)) {\n\t\t\t\t// if immediately prefixed by '::', always a bareword\n\t\t\t\tsc.SetState(SCE_PL_WORD);\n\t\t\t\tif (sc.chPrev == ':' && sc.GetRelative(-2) == ':') {\n\t\t\t\t\tsc.ChangeState(SCE_PL_IDENTIFIER);\n\t\t\t\t}\n\t\t\t\tSci_PositionU bk = sc.currentPos;\n\t\t\t\tSci_PositionU fw = sc.currentPos + 1;\n\t\t\t\t// first check for possible quote-like delimiter\n\t\t\t\tif (sc.ch == 's' && !setWord.Contains(sc.chNext)) {\n\t\t\t\t\tsc.ChangeState(SCE_PL_REGSUBST);\n\t\t\t\t\tQuote.New(2);\n\t\t\t\t} else if (sc.ch == 'm' && !setWord.Contains(sc.chNext)) {\n\t\t\t\t\tsc.ChangeState(SCE_PL_REGEX);\n\t\t\t\t\tQuote.New();\n\t\t\t\t} else if (sc.ch == 'q' && !setWord.Contains(sc.chNext)) {\n\t\t\t\t\tsc.ChangeState(SCE_PL_STRING_Q);\n\t\t\t\t\tQuote.New();\n\t\t\t\t} else if (sc.ch == 'y' && !setWord.Contains(sc.chNext)) {\n\t\t\t\t\tsc.ChangeState(SCE_PL_XLAT);\n\t\t\t\t\tQuote.New(2);\n\t\t\t\t} else if (sc.Match('t', 'r') && !setWord.Contains(sc.GetRelative(2))) {\n\t\t\t\t\tsc.ChangeState(SCE_PL_XLAT);\n\t\t\t\t\tQuote.New(2);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tfw++;\n\t\t\t\t} else if (sc.ch == 'q' && setQDelim.Contains(sc.chNext)\n\t\t\t\t        && !setWord.Contains(sc.GetRelative(2))) {\n\t\t\t\t\tif (sc.chNext == 'q') sc.ChangeState(SCE_PL_STRING_QQ);\n\t\t\t\t\telse if (sc.chNext == 'x') sc.ChangeState(SCE_PL_STRING_QX);\n\t\t\t\t\telse if (sc.chNext == 'r') sc.ChangeState(SCE_PL_STRING_QR);\n\t\t\t\t\telse sc.ChangeState(SCE_PL_STRING_QW);\t// sc.chNext == 'w'\n\t\t\t\t\tQuote.New();\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tfw++;\n\t\t\t\t} else if (sc.ch == 'x' && (sc.chNext == '=' ||\t// repetition\n\t\t\t\t        !setWord.Contains(sc.chNext) ||\n\t\t\t\t        (setRepetition.Contains(sc.chPrev) && IsADigit(sc.chNext)))) {\n\t\t\t\t\tsc.ChangeState(SCE_PL_OPERATOR);\n\t\t\t\t}\n\t\t\t\t// if potentially a keyword, scan forward and grab word, then check\n\t\t\t\t// if it's really one; if yes, disambiguation test is performed\n\t\t\t\t// otherwise it is always a bareword and we skip a lot of scanning\n\t\t\t\tif (sc.state == SCE_PL_WORD) {\n\t\t\t\t\twhile (setWord.Contains(static_cast<unsigned char>(styler.SafeGetCharAt(fw))))\n\t\t\t\t\t\tfw++;\n\t\t\t\t\tif (!isPerlKeyword(styler.GetStartSegment(), fw, keywords, styler)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_PL_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// if already SCE_PL_IDENTIFIER, then no ambiguity, skip this\n\t\t\t\t// for quote-like delimiters/keywords, attempt to disambiguate\n\t\t\t\t// to select for bareword, change state -> SCE_PL_IDENTIFIER\n\t\t\t\tif (sc.state != SCE_PL_IDENTIFIER && bk > 0) {\n\t\t\t\t\tif (disambiguateBareword(styler, bk, fw, backFlag, backPos, endPos))\n\t\t\t\t\t\tsc.ChangeState(SCE_PL_IDENTIFIER);\n\t\t\t\t}\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tsc.SetState(SCE_PL_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_PL_STRING);\n\t\t\t\tQuote.New();\n\t\t\t\tQuote.Open(sc.ch);\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tif (sc.chPrev == '&' && setWordStart.Contains(sc.chNext)) {\n\t\t\t\t\t// Archaic call\n\t\t\t\t\tsc.SetState(SCE_PL_IDENTIFIER);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_PL_CHARACTER);\n\t\t\t\t\tQuote.New();\n\t\t\t\t\tQuote.Open(sc.ch);\n\t\t\t\t}\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t} else if (sc.ch == '`') {\n\t\t\t\tsc.SetState(SCE_PL_BACKTICKS);\n\t\t\t\tQuote.New();\n\t\t\t\tQuote.Open(sc.ch);\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t} else if (sc.ch == '$') {\n\t\t\t\tsc.SetState(SCE_PL_SCALAR);\n\t\t\t\tif (sc.chNext == '{') {\n\t\t\t\t\tsc.ForwardSetState(SCE_PL_OPERATOR);\n\t\t\t\t} else if (IsASpace(sc.chNext)) {\n\t\t\t\t\tsc.ForwardSetState(SCE_PL_DEFAULT);\n\t\t\t\t} else {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tif (sc.Match('`', '`') || sc.Match(':', ':')) {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t} else if (sc.ch == '@') {\n\t\t\t\tsc.SetState(SCE_PL_ARRAY);\n\t\t\t\tif (setArray.Contains(sc.chNext)) {\n\t\t\t\t\t// no special treatment\n\t\t\t\t} else if (sc.chNext == ':' && sc.GetRelative(2) == ':') {\n\t\t\t\t\tsc.ForwardBytes(2);\n\t\t\t\t} else if (sc.chNext == '{' || sc.chNext == '[') {\n\t\t\t\t\tsc.ForwardSetState(SCE_PL_OPERATOR);\n\t\t\t\t} else {\n\t\t\t\t\tsc.ChangeState(SCE_PL_OPERATOR);\n\t\t\t\t}\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t} else if (setPreferRE.Contains(sc.ch)) {\n\t\t\t\t// Explicit backward peeking to set a consistent preferRE for\n\t\t\t\t// any slash found, so no longer need to track preferRE state.\n\t\t\t\t// Find first previous significant lexed element and interpret.\n\t\t\t\t// A few symbols shares this code for disambiguation.\n\t\t\t\tbool preferRE = false;\n\t\t\t\tbool isHereDoc = sc.Match('<', '<');\n\t\t\t\tbool hereDocSpace = false;\t\t// for: SCALAR [whitespace] '<<'\n\t\t\t\tSci_PositionU bk = (sc.currentPos > 0) ? sc.currentPos - 1: 0;\n\t\t\t\tsc.Complete();\n\t\t\t\tstyler.Flush();\n\t\t\t\tif (styler.StyleAt(bk) == SCE_PL_DEFAULT)\n\t\t\t\t\thereDocSpace = true;\n\t\t\t\tskipWhitespaceComment(styler, bk);\n\t\t\t\tif (bk == 0) {\n\t\t\t\t\t// avoid backward scanning breakage\n\t\t\t\t\tpreferRE = true;\n\t\t\t\t} else {\n\t\t\t\t\tint bkstyle = styler.StyleAt(bk);\n\t\t\t\t\tint bkch = static_cast<unsigned char>(styler.SafeGetCharAt(bk));\n\t\t\t\t\tswitch (bkstyle) {\n\t\t\t\t\tcase SCE_PL_OPERATOR:\n\t\t\t\t\t\tpreferRE = true;\n\t\t\t\t\t\tif (bkch == ')' || bkch == ']') {\n\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t} else if (bkch == '}') {\n\t\t\t\t\t\t\t// backtrack by counting balanced brace pairs\n\t\t\t\t\t\t\t// needed to test for variables like ${}, @{} etc.\n\t\t\t\t\t\t\tbkstyle = styleBeforeBracePair(styler, bk);\n\t\t\t\t\t\t\tif (bkstyle == SCE_PL_SCALAR\n\t\t\t\t\t\t\t        || bkstyle == SCE_PL_ARRAY\n\t\t\t\t\t\t\t        || bkstyle == SCE_PL_HASH\n\t\t\t\t\t\t\t        || bkstyle == SCE_PL_SYMBOLTABLE\n\t\t\t\t\t\t\t        || bkstyle == SCE_PL_OPERATOR) {\n\t\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (bkch == '+' || bkch == '-') {\n\t\t\t\t\t\t\tif (bkch == static_cast<unsigned char>(styler.SafeGetCharAt(bk - 1))\n\t\t\t\t\t\t\t        && bkch != static_cast<unsigned char>(styler.SafeGetCharAt(bk - 2)))\n\t\t\t\t\t\t\t\t// exceptions for operators: unary suffixes ++, --\n\t\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SCE_PL_IDENTIFIER:\n\t\t\t\t\t\tpreferRE = true;\n\t\t\t\t\t\tbkstyle = styleCheckIdentifier(styler, bk);\n\t\t\t\t\t\tif ((bkstyle == 1) || (bkstyle == 2)) {\n\t\t\t\t\t\t\t// inputsymbol or var with \"->\" or \"::\" before identifier\n\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t} else if (bkstyle == 3) {\n\t\t\t\t\t\t\t// bare identifier, test cases follows:\n\t\t\t\t\t\t\tif (sc.ch == '/') {\n\t\t\t\t\t\t\t\t// if '/', /PATTERN/ unless digit/space immediately after '/'\n\t\t\t\t\t\t\t\t// if '//', always expect defined-or operator to follow identifier\n\t\t\t\t\t\t\t\tif (IsASpace(sc.chNext) || IsADigit(sc.chNext) || sc.chNext == '/')\n\t\t\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t\t} else if (sc.ch == '*' || sc.ch == '%') {\n\t\t\t\t\t\t\t\tif (IsASpace(sc.chNext) || IsADigit(sc.chNext) || sc.Match('*', '*'))\n\t\t\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t\t} else if (sc.ch == '<') {\n\t\t\t\t\t\t\t\tif (IsASpace(sc.chNext) || sc.chNext == '=')\n\t\t\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SCE_PL_SCALAR:\t\t// for $var<< case:\n\t\t\t\t\t\tif (isHereDoc && hereDocSpace)\t// if SCALAR whitespace '<<', *always* a HERE doc\n\t\t\t\t\t\t\tpreferRE = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SCE_PL_WORD:\n\t\t\t\t\t\tpreferRE = true;\n\t\t\t\t\t\t// for HERE docs, always true\n\t\t\t\t\t\tif (sc.ch == '/') {\n\t\t\t\t\t\t\t// adopt heuristics similar to vim-style rules:\n\t\t\t\t\t\t\t// keywords always forced as /PATTERN/: split, if, elsif, while\n\t\t\t\t\t\t\t// everything else /PATTERN/ unless digit/space immediately after '/'\n\t\t\t\t\t\t\t// for '//', defined-or favoured unless special keywords\n\t\t\t\t\t\t\tSci_PositionU bkend = bk + 1;\n\t\t\t\t\t\t\twhile (bk > 0 && styler.StyleAt(bk - 1) == SCE_PL_WORD) {\n\t\t\t\t\t\t\t\tbk--;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (isPerlKeyword(bk, bkend, reWords, styler))\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\tif (IsASpace(sc.chNext) || IsADigit(sc.chNext) || sc.chNext == '/')\n\t\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t} else if (sc.ch == '*' || sc.ch == '%') {\n\t\t\t\t\t\t\tif (IsASpace(sc.chNext) || IsADigit(sc.chNext) || sc.Match('*', '*'))\n\t\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t} else if (sc.ch == '<') {\n\t\t\t\t\t\t\tif (IsASpace(sc.chNext) || sc.chNext == '=')\n\t\t\t\t\t\t\t\tpreferRE = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\t\t// other styles uses the default, preferRE=false\n\t\t\t\t\tcase SCE_PL_POD:\n\t\t\t\t\tcase SCE_PL_HERE_Q:\n\t\t\t\t\tcase SCE_PL_HERE_QQ:\n\t\t\t\t\tcase SCE_PL_HERE_QX:\n\t\t\t\t\t\tpreferRE = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t\tif (isHereDoc) {\t// handle '<<', HERE doc\n\t\t\t\t\tif (sc.Match(\"<<>>\")) {\t\t// double-diamond operator (5.22)\n\t\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\t\tsc.Forward(3);\n\t\t\t\t\t} else if (preferRE) {\n\t\t\t\t\t\tsc.SetState(SCE_PL_HERE_DELIM);\n\t\t\t\t\t\tHereDoc.State = 0;\n\t\t\t\t\t} else {\t\t// << operator\n\t\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '*') {\t// handle '*', typeglob\n\t\t\t\t\tif (preferRE) {\n\t\t\t\t\t\tsc.SetState(SCE_PL_SYMBOLTABLE);\n\t\t\t\t\t\tif (sc.chNext == ':' && sc.GetRelative(2) == ':') {\n\t\t\t\t\t\t\tsc.ForwardBytes(2);\n\t\t\t\t\t\t} else if (sc.chNext == '{') {\n\t\t\t\t\t\t\tsc.ForwardSetState(SCE_PL_OPERATOR);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\t\tif (sc.chNext == '*') \t// exponentiation\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '%') {\t// handle '%', hash\n\t\t\t\t\tif (preferRE) {\n\t\t\t\t\t\tsc.SetState(SCE_PL_HASH);\n\t\t\t\t\t\tif (setHash.Contains(sc.chNext)) {\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t} else if (sc.chNext == ':' && sc.GetRelative(2) == ':') {\n\t\t\t\t\t\t\tsc.ForwardBytes(2);\n\t\t\t\t\t\t} else if (sc.chNext == '{') {\n\t\t\t\t\t\t\tsc.ForwardSetState(SCE_PL_OPERATOR);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_PL_OPERATOR);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '<') {\t// handle '<', inputsymbol\n\t\t\t\t\tif (preferRE) {\n\t\t\t\t\t\t// forward scan\n\t\t\t\t\t\tint i = InputSymbolScan(sc);\n\t\t\t\t\t\tif (i > 0) {\n\t\t\t\t\t\t\tsc.SetState(SCE_PL_IDENTIFIER);\n\t\t\t\t\t\t\tsc.Forward(i);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\t}\n\t\t\t\t} else {\t\t\t// handle '/', regexp\n\t\t\t\t\tif (preferRE) {\n\t\t\t\t\t\tsc.SetState(SCE_PL_REGEX);\n\t\t\t\t\t\tQuote.New();\n\t\t\t\t\t\tQuote.Open(sc.ch);\n\t\t\t\t\t} else {\t\t// / and // operators\n\t\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t\t\tif (sc.chNext == '/') {\n\t\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '='\t\t// POD\n\t\t\t        && setPOD.Contains(sc.chNext)\n\t\t\t        && sc.atLineStart) {\n\t\t\t\tsc.SetState(SCE_PL_POD);\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t} else if (sc.ch == '-' && setWordStart.Contains(sc.chNext)) {\t// extended '-' cases\n\t\t\t\tSci_PositionU bk = sc.currentPos;\n\t\t\t\tSci_PositionU fw = 2;\n\t\t\t\tif (setSingleCharOp.Contains(sc.chNext) &&\t// file test operators\n\t\t\t\t        !setWord.Contains(sc.GetRelative(2))) {\n\t\t\t\t\tsc.SetState(SCE_PL_WORD);\n\t\t\t\t} else {\n\t\t\t\t\t// nominally a minus and bareword; find extent of bareword\n\t\t\t\t\twhile (setWord.Contains(sc.GetRelative(fw)))\n\t\t\t\t\t\tfw++;\n\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t}\n\t\t\t\t// force to bareword for hash key => or {variable literal} cases\n\t\t\t\tif (disambiguateBareword(styler, bk, bk + fw, backFlag, backPos, endPos) & 2) {\n\t\t\t\t\tsc.ChangeState(SCE_PL_IDENTIFIER);\n\t\t\t\t}\n\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t} else if (sc.ch == '(' && sc.currentPos > 0) {\t// '(' or subroutine prototype\n\t\t\t\tsc.Complete();\n\t\t\t\tif (styleCheckSubPrototype(styler, sc.currentPos - 1)) {\n\t\t\t\t\tsc.SetState(SCE_PL_SUB_PROTOTYPE);\n\t\t\t\t\tbackFlag = BACK_NONE;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\t}\n\t\t\t} else if (setPerlOperator.Contains(sc.ch)) {\t// operators\n\t\t\t\tsc.SetState(SCE_PL_OPERATOR);\n\t\t\t\tif (sc.Match('.', '.')) {\t// .. and ...\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tif (sc.chNext == '.') sc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == 4 || sc.ch == 26) {\t\t// ^D and ^Z ends valid perl source\n\t\t\t\tsc.SetState(SCE_PL_DATASECTION);\n\t\t\t} else {\n\t\t\t\t// keep colouring defaults\n\t\t\t\tsc.Complete();\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n\tif (sc.state == SCE_PL_HERE_Q\n\t        || sc.state == SCE_PL_HERE_QQ\n\t        || sc.state == SCE_PL_HERE_QX\n\t        || sc.state == SCE_PL_FORMAT) {\n\t\tstyler.ChangeLexerState(sc.currentPos, styler.Length());\n\t}\n\tsc.Complete();\n}\n\n#define PERL_HEADFOLD_SHIFT\t\t4\n#define PERL_HEADFOLD_MASK\t\t0xF0\n\nvoid SCI_METHOD LexerPerl::Fold(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, IDocument *pAccess) {\n\n\tif (!options.fold)\n\t\treturn;\n\n\tLexAccessor styler(pAccess);\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\n\t// Backtrack to previous line in case need to fix its fold status\n\tif (startPos > 0) {\n\t\tif (lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\tstartPos = styler.LineStart(lineCurrent);\n\t\t}\n\t}\n\n\tint levelPrev = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelPrev = styler.LevelAt(lineCurrent - 1) >> 16;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tchar chPrev = styler.SafeGetCharAt(startPos - 1);\n\tint styleNext = styler.StyleAt(startPos);\n\t// Used at end of line to determine if the line was a package definition\n\tbool isPackageLine = false;\n\tint podHeading = 0;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tint stylePrevCh = (i) ? styler.StyleAt(i - 1):SCE_PL_DEFAULT;\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tbool atLineStart = ((chPrev == '\\r') || (chPrev == '\\n')) || i == 0;\n\t\t// Comment folding\n\t\tif (options.foldComment && atEOL && IsCommentLine(lineCurrent, styler)) {\n\t\t\tif (!IsCommentLine(lineCurrent - 1, styler)\n\t\t\t        && IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelCurrent++;\n\t\t\telse if (IsCommentLine(lineCurrent - 1, styler)\n\t\t\t        && !IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelCurrent--;\n\t\t}\n\t\t// {} [] block folding\n\t\tif (style == SCE_PL_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\tif (options.foldAtElse && levelCurrent < levelPrev)\n\t\t\t\t\t--levelPrev;\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t\tif (ch == '[') {\n\t\t\t\tif (options.foldAtElse && levelCurrent < levelPrev)\n\t\t\t\t\t--levelPrev;\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == ']') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\t// POD folding\n\t\tif (options.foldPOD && atLineStart) {\n\t\t\tif (style == SCE_PL_POD) {\n\t\t\t\tif (stylePrevCh != SCE_PL_POD && stylePrevCh != SCE_PL_POD_VERB)\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\telse if (styler.Match(i, \"=cut\"))\n\t\t\t\t\tlevelCurrent = (levelCurrent & ~PERL_HEADFOLD_MASK) - 1;\n\t\t\t\telse if (styler.Match(i, \"=head\"))\n\t\t\t\t\tpodHeading = PodHeadingLevel(i, styler);\n\t\t\t} else if (style == SCE_PL_DATASECTION) {\n\t\t\t\tif (ch == '=' && IsASCII(chNext) && isalpha(chNext) && levelCurrent == SC_FOLDLEVELBASE)\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\telse if (styler.Match(i, \"=cut\") && levelCurrent > SC_FOLDLEVELBASE)\n\t\t\t\t\tlevelCurrent = (levelCurrent & ~PERL_HEADFOLD_MASK) - 1;\n\t\t\t\telse if (styler.Match(i, \"=head\"))\n\t\t\t\t\tpodHeading = PodHeadingLevel(i, styler);\n\t\t\t\t// if package used or unclosed brace, level > SC_FOLDLEVELBASE!\n\t\t\t\t// reset needed as level test is vs. SC_FOLDLEVELBASE\n\t\t\t\telse if (stylePrevCh != SCE_PL_DATASECTION)\n\t\t\t\t\tlevelCurrent = SC_FOLDLEVELBASE;\n\t\t\t}\n\t\t}\n\t\t// package folding\n\t\tif (options.foldPackage && atLineStart) {\n\t\t\tif (IsPackageLine(lineCurrent, styler)\n\t\t\t        && !IsPackageLine(lineCurrent + 1, styler))\n\t\t\t\tisPackageLine = true;\n\t\t}\n\n\t\t//heredoc folding\n\t\tswitch (style) {\n\t\tcase SCE_PL_HERE_QQ :\n\t\tcase SCE_PL_HERE_Q :\n\t\tcase SCE_PL_HERE_QX :\n\t\t\tswitch (stylePrevCh) {\n\t\t\tcase SCE_PL_HERE_QQ :\n\t\t\tcase SCE_PL_HERE_Q :\n\t\t\tcase SCE_PL_HERE_QX :\n\t\t\t\t//do nothing;\n\t\t\t\tbreak;\n\t\t\tdefault :\n\t\t\t\tlevelCurrent++;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tswitch (stylePrevCh) {\n\t\t\tcase SCE_PL_HERE_QQ :\n\t\t\tcase SCE_PL_HERE_Q :\n\t\t\tcase SCE_PL_HERE_QX :\n\t\t\t\tlevelCurrent--;\n\t\t\t\tbreak;\n\t\t\tdefault :\n\t\t\t\t//do nothing;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t//explicit folding\n\t\tif (options.foldCommentExplicit && style == SCE_PL_COMMENTLINE && ch == '#') {\n\t\t\tif (chNext == '{') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (levelCurrent > SC_FOLDLEVELBASE  && chNext == '}') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\t// POD headings occupy bits 7-4, leaving some breathing room for\n\t\t\t// non-standard practice -- POD sections stuck in blocks, etc.\n\t\t\tif (podHeading > 0) {\n\t\t\t\tlevelCurrent = (lev & ~PERL_HEADFOLD_MASK) | (podHeading << PERL_HEADFOLD_SHIFT);\n\t\t\t\tlev = levelCurrent - 1;\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\tpodHeading = 0;\n\t\t\t}\n\t\t\t// Check if line was a package declaration\n\t\t\t// because packages need \"special\" treatment\n\t\t\tif (isPackageLine) {\n\t\t\t\tlev = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\t\t\tlevelCurrent = SC_FOLDLEVELBASE + 1;\n\t\t\t\tisPackageLine = false;\n\t\t\t}\n\t\t\tlev |= levelCurrent << 16;\n\t\t\tif (visibleChars == 0 && options.foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t\tchPrev = ch;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nLexerModule lmPerl(SCLEX_PERL, LexerPerl::LexerFactoryPerl, \"perl\", perlWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPowerPro.cpp",
    "content": "// Scintilla source code edit control\n// @file LexPowerPro.cxx\n// PowerPro utility, written by Bruce Switzer, is available from http://powerpro.webeddie.com\n// PowerPro lexer is written by Christopher Bean (cbean@cb-software.net)\n//\n// Lexer code heavily borrowed from:\n//\tLexAU3.cxx by Jos van der Zande\n//\tLexCPP.cxx by Neil Hodgson\n//\tLexVB.cxx by Neil Hodgson\n//\n// Changes:\n// \t2008-10-25 - Initial release\n//\t2008-10-26 - Changed how <name> is hilighted in  'function <name>' so that\n//\t\t\t\t local isFunction = \"\" and local functions = \"\" don't get falsely highlighted\n//\t2008-12-14 - Added bounds checking for szFirstWord and szDo\n//\t\t\t   - Replaced SetOfCharacters with CharacterSet\n//\t\t\t   - Made sure that CharacterSet::Contains is passed only positive values\n//\t\t\t   - Made sure that the return value of Accessor::SafeGetCharAt is positive before\n//\t\t\t\t passing to functions that require positive values like isspacechar()\n//\t\t\t   - Removed unused visibleChars processing from ColourisePowerProDoc()\n//\t\t\t   - Fixed bug with folding logic where line continuations didn't end where\n//\t\t\t\t they were supposed to\n//\t\t\t   - Moved all helper functions to the top of the file\n//\t2010-06-03 - Added onlySpaces variable to allow the @function and ;comment styles to be indented\n//\t\t\t   - Modified HasFunction function to be a bit more robust\n//\t\t\t   - Renamed HasFunction function to IsFunction\n//\t\t\t   - Cleanup\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <string.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_POWERPRO_COMMENTBLOCK;\n}\n\nstatic inline bool IsLineEndChar(unsigned char ch) {\n\treturn \tch == 0x0a \t\t//LF\n\t\t\t|| ch == 0x0c\t//FF\n\t\t\t|| ch == 0x0d;\t//CR\n}\n\nstatic bool IsContinuationLine(Sci_PositionU szLine, Accessor &styler)\n{\n\tSci_Position startPos = styler.LineStart(szLine);\n\tSci_Position endPos = styler.LineStart(szLine + 1) - 2;\n\twhile (startPos < endPos)\n\t{\n\t\tchar stylech = styler.StyleAt(startPos);\n\t\tif (!(stylech == SCE_POWERPRO_COMMENTBLOCK)) {\n\t\t\tchar ch = styler.SafeGetCharAt(endPos);\n\t\t\tchar chPrev = styler.SafeGetCharAt(endPos - 1);\n\t\t\tchar chPrevPrev = styler.SafeGetCharAt(endPos - 2);\n\t\t\tif (ch > 0 && chPrev > 0 && chPrevPrev > 0 && !isspacechar(ch) && !isspacechar(chPrev) && !isspacechar(chPrevPrev) )\n\t\t\t\treturn (chPrevPrev == ';' && chPrev == ';' && ch == '+');\n\t\t\t}\n\t\tendPos--; // skip to next char\n\t}\n\treturn false;\n}\n\n// Routine to find first none space on the current line and return its Style\n// needed for comment lines not starting on pos 1\nstatic int GetStyleFirstWord(Sci_Position szLine, Accessor &styler)\n{\n\tSci_Position startPos = styler.LineStart(szLine);\n\tSci_Position endPos = styler.LineStart(szLine + 1) - 1;\n\tchar ch = styler.SafeGetCharAt(startPos);\n\n\twhile (ch > 0 && isspacechar(ch) && startPos < endPos)\n\t{\n\t\tstartPos++; // skip to next char\n\t\tch = styler.SafeGetCharAt(startPos);\n\t}\n\treturn styler.StyleAt(startPos);\n}\n\n//returns true if there is a function to highlight\n//used to highlight <name> in 'function <name>'\n//note:\n//\t\tsample line (without quotes): \"\\tfunction asdf()\n//\t\tcurrentPos will be the position of 'a'\nstatic bool IsFunction(Accessor &styler, Sci_PositionU currentPos) {\n\n\tconst char function[10] = \"function \"; //10 includes \\0\n\tunsigned int numberOfCharacters = sizeof(function) - 1;\n\tSci_PositionU position = currentPos - numberOfCharacters;\n\n\t//compare each character with the letters in the function array\n\t//return false if ALL don't match\n\tfor (Sci_PositionU i = 0; i < numberOfCharacters; i++) {\n\t\tchar c = styler.SafeGetCharAt(position++);\n\t\tif (c != function[i])\n\t\t\treturn false;\n\t}\n\n\t//make sure that there are only spaces (or tabs) between the beginning\n\t//of the line and the function declaration\n\tposition = currentPos - numberOfCharacters - 1; \t\t//-1 to move to char before 'function'\n\tfor (Sci_PositionU j = 0; j < 16; j++) {\t\t\t\t\t//check up to 16 preceeding characters\n\t\tchar c = styler.SafeGetCharAt(position--, '\\0');\t//if can't read char, return NUL (past beginning of document)\n\t\tif (c <= 0)\t//reached beginning of document\n\t\t\treturn true;\n\t\tif (c > 0 && IsLineEndChar(c))\n\t\t\treturn true;\n\t\telse if (c > 0 && !IsASpaceOrTab(c))\n\t\t\treturn false;\n\t}\n\n\t//fall-through\n\treturn false;\n}\n\nstatic void ColourisePowerProDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler, bool caseSensitive) {\n\n\tWordList &keywords  = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\n\t//define the character sets\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_@\", 0x80, true);\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"._\", 0x80, true);\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tchar s_save[100]; //for last line highlighting\n\n\t//are there only spaces between the first letter of the line and the beginning of the line\n\tbool onlySpaces = true;\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\t// save the total current word for eof processing\n\t\tchar s[100];\n\t\tsc.GetCurrentLowered(s, sizeof(s));\n\n\t\tif ((sc.ch > 0) && setWord.Contains(sc.ch))\n\t\t{\n\t\t\tstrcpy(s_save,s);\n\t\t\tint tp = static_cast<int>(strlen(s_save));\n\t\t\tif (tp < 99) {\n\t\t\t\ts_save[tp] = static_cast<char>(tolower(sc.ch));\n\t\t\t\ts_save[tp+1] = '\\0';\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineStart) {\n\t\t\tif (sc.state == SCE_POWERPRO_DOUBLEQUOTEDSTRING) {\n\t\t\t\t// Prevent SCE_POWERPRO_STRINGEOL from leaking back to previous line which\n\t\t\t\t// ends with a line continuation by locking in the state upto this position.\n\t\t\t\tsc.SetState(SCE_POWERPRO_DOUBLEQUOTEDSTRING);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\t\tcase SCE_POWERPRO_OPERATOR:\n\t\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_NUMBER:\n\n\t\t\t\tif (!IsADigit(sc.ch))\n\t\t\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_IDENTIFIER:\n\t\t\t\t//if ((sc.ch > 0) && !setWord.Contains(sc.ch) || (sc.ch == '.')) { // use this line if don't want to match keywords with . in them. ie: win.debug will match both win and debug so win debug will also be colorized\n\t\t\t\tif ((sc.ch > 0) && !setWord.Contains(sc.ch)){  // || (sc.ch == '.')) { // use this line if you want to match keywords with a . ie: win.debug will only match win.debug neither win nor debug will be colorized separately\n\t\t\t\t\tchar s[1000];\n\t\t\t\t\tif (caseSensitive) {\n\t\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t\t}\n\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_POWERPRO_WORD);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_POWERPRO_WORD2);\n\t\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_POWERPRO_WORD3);\n\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_POWERPRO_WORD4);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_LINECONTINUE:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t} else if (sc.Match('/', '*') || sc.Match('/', '/')) {\n\t\t\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_COMMENTBLOCK:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_COMMENTLINE:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_DOUBLEQUOTEDSTRING:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_POWERPRO_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tsc.ForwardSetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_SINGLEQUOTEDSTRING:\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_POWERPRO_STRINGEOL);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\t\tsc.ForwardSetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_STRINGEOL:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_VERBATIM:\n\t\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\t\tif (sc.chNext == '\\\"') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_ALTQUOTE:\n\t\t\t\tif (sc.ch == '#') {\n\t\t\t\t\tif (sc.chNext == '#') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCE_POWERPRO_FUNCTION:\n\t\t\t\tif (isspacechar(sc.ch) || sc.ch == '(') {\n\t\t\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_POWERPRO_DEFAULT) {\n\t\t\tif (sc.Match('?', '\\\"')) {\n\t\t\t\tsc.SetState(SCE_POWERPRO_VERBATIM);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_POWERPRO_NUMBER);\n\t\t\t}else if (sc.Match('?','#')) {\n\t\t\t\tif (sc.ch == '?' && sc.chNext == '#') {\n\t\t\t\t\tsc.SetState(SCE_POWERPRO_ALTQUOTE);\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (IsFunction(styler, sc.currentPos)) {\t//highlight <name> in 'function <name>'\n\t\t\t\tsc.SetState(SCE_POWERPRO_FUNCTION);\n\t\t\t} else if (onlySpaces && sc.ch == '@') { \t\t//alternate function definition [label]\n\t\t\t\tsc.SetState(SCE_POWERPRO_FUNCTION);\n\t\t\t} else if ((sc.ch > 0) && (setWordStart.Contains(sc.ch) || (sc.ch == '?'))) {\n\t\t\t\tsc.SetState(SCE_POWERPRO_IDENTIFIER);\n\t\t\t} else if (sc.Match(\";;+\")) {\n\t\t\t\tsc.SetState(SCE_POWERPRO_LINECONTINUE);\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tsc.SetState(SCE_POWERPRO_COMMENTBLOCK);\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tsc.SetState(SCE_POWERPRO_COMMENTLINE);\n\t\t\t} else if (onlySpaces && sc.ch == ';') {\t\t//legacy comment that can only have blank space in front of it\n\t\t\t\tsc.SetState(SCE_POWERPRO_COMMENTLINE);\n\t\t\t} else if (sc.Match(\";;\")) {\n\t\t\t\tsc.SetState(SCE_POWERPRO_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_POWERPRO_DOUBLEQUOTEDSTRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_POWERPRO_SINGLEQUOTEDSTRING);\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_POWERPRO_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t\t//maintain a record of whether or not all the preceding characters on\n\t\t//a line are space characters\n\t\tif (onlySpaces && !IsASpaceOrTab(sc.ch))\n\t\t\tonlySpaces = false;\n\n\t\t//reset when starting a new line\n\t\tif (sc.atLineEnd)\n\t\t\tonlySpaces = true;\n\t}\n\n\t//*************************************\n\t// Colourize the last word correctly\n\t//*************************************\n\tif (sc.state == SCE_POWERPRO_IDENTIFIER)\n\t{\n\t\tif (keywords.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_POWERPRO_WORD);\n\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t}\n\t\telse if (keywords2.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_POWERPRO_WORD2);\n\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t}\n\t\telse if (keywords3.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_POWERPRO_WORD3);\n\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t}\n\t\telse if (keywords4.InList(s_save)) {\n\t\t\tsc.ChangeState(SCE_POWERPRO_WORD4);\n\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t}\n\t\telse {\n\t\t\tsc.SetState(SCE_POWERPRO_DEFAULT);\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic void FoldPowerProDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler)\n{\n\t//define the character sets\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_@\", 0x80, true);\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"._\", 0x80, true);\n\n\t//used to tell if we're recursively folding the whole document, or just a small piece (ie: if statement or 1 function)\n\tbool isFoldingAll = true;\n\n\tSci_Position endPos = startPos + length;\n\tSci_Position lastLine = styler.GetLine(styler.Length()); //used to help fold the last line correctly\n\n\t// get settings from the config files for folding comments and preprocessor lines\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldInComment = styler.GetPropertyInt(\"fold.comment\") == 2;\n\tbool foldCompact = true;\n\n\t// Backtrack to previous line in case need to fix its fold status\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tif (startPos > 0) {\n\t\tisFoldingAll = false;\n\t\tif (lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\tstartPos = styler.LineStart(lineCurrent);\n\t\t}\n\t}\n\t// vars for style of previous/current/next lines\n\tint style = GetStyleFirstWord(lineCurrent,styler);\n\tint stylePrev = 0;\n\n\t// find the first previous line without continuation character at the end\n\twhile ((lineCurrent > 0 && IsContinuationLine(lineCurrent, styler))\n\t       || (lineCurrent > 1 && IsContinuationLine(lineCurrent - 1, styler))) {\n\t\tlineCurrent--;\n\t\tstartPos = styler.LineStart(lineCurrent);\n\t}\n\n\tif (lineCurrent > 0) {\n\t\tstylePrev = GetStyleFirstWord(lineCurrent-1,styler);\n\t}\n\n\t// vars for getting first word to check for keywords\n\tbool isFirstWordStarted = false;\n\tbool isFirstWordEnded = false;\n\n\tconst unsigned int FIRST_WORD_MAX_LEN = 10;\n\tchar szFirstWord[FIRST_WORD_MAX_LEN] = \"\";\n\tunsigned int firstWordLen = 0;\n\n\tchar szDo[3]=\"\";\n\tint\t szDolen = 0;\n\tbool isDoLastWord = false;\n\n\t// var for indentlevel\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelNext = levelCurrent;\n\n\tint\tvisibleChars = 0;\n\tint functionCount = 0;\n\n\tchar chNext = styler.SafeGetCharAt(startPos);\n\tchar chPrev = '\\0';\n\tchar chPrevPrev = '\\0';\n\tchar chPrevPrevPrev = '\\0';\n\n\tfor (Sci_Position i = startPos; i < endPos; i++) {\n\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif ((ch > 0) && setWord.Contains(ch))\n\t\t\tvisibleChars++;\n\n\t\t// get the syle for the current character neede to check in comment\n\t\tint stylech = styler.StyleAt(i);\n\n\t\t// start the capture of the first word\n\t\tif (!isFirstWordStarted && (ch > 0)) {\n\t\t\tif (setWord.Contains(ch) || setWordStart.Contains(ch) || ch == ';' || ch == '/') {\n\t\t\t\tisFirstWordStarted = true;\n\t\t\t\tif (firstWordLen < FIRST_WORD_MAX_LEN - 1) {\n\t\t\t\t\tszFirstWord[firstWordLen++] = static_cast<char>(tolower(ch));\n\t\t\t\t\tszFirstWord[firstWordLen] = '\\0';\n\t\t\t\t}\n\t\t\t}\n\t\t} // continue capture of the first word on the line\n\t\telse if (isFirstWordStarted && !isFirstWordEnded && (ch > 0)) {\n\t\t\tif (!setWord.Contains(ch)) {\n\t\t\t\tisFirstWordEnded = true;\n\t\t\t}\n\t\t\telse if (firstWordLen < (FIRST_WORD_MAX_LEN - 1)) {\n\t\t\t\tszFirstWord[firstWordLen++] = static_cast<char>(tolower(ch));\n\t\t\t\tszFirstWord[firstWordLen] = '\\0';\n\t\t\t}\n\t\t}\n\n\t\tif (stylech != SCE_POWERPRO_COMMENTLINE) {\n\n\t\t\t//reset isDoLastWord if we find a character(ignoring spaces) after 'do'\n\t\t\tif (isDoLastWord && (ch > 0) && setWord.Contains(ch))\n\t\t\t\tisDoLastWord = false;\n\n\t\t\t// --find out if the word \"do\" is the last on a \"if\" line--\n\t\t\t// collect each letter and put it into a buffer 2 chars long\n\t\t\t// if we end up with \"do\" in the buffer when we reach the end of\n\t\t\t// the line, \"do\" was the last word on the line\n\t\t\tif ((ch > 0) && isFirstWordEnded && strcmp(szFirstWord, \"if\") == 0) {\n\t\t\t\tif (szDolen == 2) {\n\t\t\t\t\tszDo[0] = szDo[1];\n\t\t\t\t\tszDo[1] = static_cast<char>(tolower(ch));\n\t\t\t\t\tszDo[2] = '\\0';\n\n\t\t\t\t\tif (strcmp(szDo, \"do\") == 0)\n\t\t\t\t\t\tisDoLastWord = true;\n\n\t\t\t\t} else if (szDolen < 2) {\n\t\t\t\t\tszDo[szDolen++] = static_cast<char>(tolower(ch));\n\t\t\t\t\tszDo[szDolen] = '\\0';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// End of Line found so process the information\n\t\t if ((ch == '\\r' && chNext != '\\n') // \\r\\n\n\t\t\t|| ch == '\\n' \t\t\t\t\t// \\n\n\t\t\t|| i == endPos) {\t\t\t\t// end of selection\n\n\t\t\t// **************************\n\t\t\t// Folding logic for Keywords\n\t\t\t// **************************\n\n\t\t\t// if a keyword is found on the current line and the line doesn't end with ;;+ (continuation)\n\t\t\t//    and we are not inside a commentblock.\n\t\t\tif (firstWordLen > 0\n\t\t\t\t&& chPrev != '+' && chPrevPrev != ';' && chPrevPrevPrev !=';'\n\t\t\t\t&& (!IsStreamCommentStyle(style) || foldInComment) ) {\n\n\t\t\t\t// only fold \"if\" last keyword is \"then\"  (else its a one line if)\n\t\t\t\tif (strcmp(szFirstWord, \"if\") == 0  && isDoLastWord)\n\t\t\t\t\t\tlevelNext++;\n\n\t\t\t\t// create new fold for these words\n\t\t\t\tif (strcmp(szFirstWord, \"for\") == 0)\n\t\t\t\t\tlevelNext++;\n\n\t\t\t\t//handle folding for functions/labels\n\t\t\t\t//Note: Functions and labels don't have an explicit end like [end function]\n\t\t\t\t//\t1. functions/labels end at the start of another function\n\t\t\t\t//\t2. functions/labels end at the end of the file\n\t\t\t\tif ((strcmp(szFirstWord, \"function\") == 0) || (firstWordLen > 0 && szFirstWord[0] == '@')) {\n\t\t\t\t\tif (isFoldingAll) { //if we're folding the whole document (recursivly by lua script)\n\n\t\t\t\t\t\tif (functionCount > 0) {\n\t\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfunctionCount++;\n\n\t\t\t\t\t} else { //if just folding a small piece (by clicking on the minus sign next to the word)\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// end the fold for these words before the current line\n\t\t\t\tif (strcmp(szFirstWord, \"endif\") == 0 || strcmp(szFirstWord, \"endfor\") == 0) {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\n\t\t\t\t// end the fold for these words before the current line and Start new fold\n\t\t\t\tif (strcmp(szFirstWord, \"else\") == 0 || strcmp(szFirstWord, \"elseif\") == 0 )\n\t\t\t\t\t\tlevelCurrent--;\n\n\t\t\t}\n\t\t\t// Preprocessor and Comment folding\n\t\t\tint styleNext = GetStyleFirstWord(lineCurrent + 1,styler);\n\n\t\t\t// *********************************\n\t\t\t// Folding logic for Comment blocks\n\t\t\t// *********************************\n\t\t\tif (foldComment && IsStreamCommentStyle(style)) {\n\n\t\t\t\t// Start of a comment block\n\t\t\t\tif (stylePrev != style && IsStreamCommentStyle(styleNext) && styleNext == style) {\n\t\t\t\t    levelNext++;\n\t\t\t\t} // fold till the last line for normal comment lines\n\t\t\t\telse if (IsStreamCommentStyle(stylePrev)\n\t\t\t\t\t\t&& styleNext != SCE_POWERPRO_COMMENTLINE\n\t\t\t\t\t\t&& stylePrev == SCE_POWERPRO_COMMENTLINE\n\t\t\t\t\t\t&& style == SCE_POWERPRO_COMMENTLINE) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t} // fold till the one but last line for Blockcomment lines\n\t\t\t\telse if (IsStreamCommentStyle(stylePrev)\n\t\t\t\t\t\t&& styleNext != SCE_POWERPRO_COMMENTBLOCK\n\t\t\t\t\t\t&& style == SCE_POWERPRO_COMMENTBLOCK) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tint levelUse = levelCurrent;\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent))\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\n\t\t\t// reset values for the next line\n\t\t\tlineCurrent++;\n\t\t\tstylePrev = style;\n\t\t\tstyle = styleNext;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tvisibleChars = 0;\n\n\t\t\t// if the last characters are ;;+ then don't reset since the line continues on the next line.\n\t\t\tif (chPrev != '+' && chPrevPrev != ';' && chPrevPrevPrev != ';') {\n\t\t\t\tfirstWordLen = 0;\n\t\t\t\tszDolen = 0;\n\t\t\t\tisFirstWordStarted = false;\n\t\t\t\tisFirstWordEnded = false;\n\t\t\t\tisDoLastWord = false;\n\n\t\t\t\t//blank out first word\n\t\t\t\tfor (unsigned int i = 0; i < FIRST_WORD_MAX_LEN; i++)\n\t\t\t\t\tszFirstWord[i] = '\\0';\n\t\t\t}\n\t\t}\n\n\t\t// save the last processed characters\n\t\tif ((ch > 0) && !isspacechar(ch)) {\n\t\t\tchPrevPrevPrev = chPrevPrev;\n\t\t\tchPrevPrev = chPrev;\n\t\t\tchPrev = ch;\n\t\t}\n\t}\n\n\t//close folds on the last line - without this a 'phantom'\n\t//fold can appear when an open fold is on the last line\n\t//this can occur because functions and labels don't have an explicit end\n\tif (lineCurrent >= lastLine) {\n\t\tint lev = 0;\n\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\tstyler.SetLevel(lineCurrent, lev);\n\t}\n\n}\n\nstatic const char * const powerProWordLists[] = {\n            \"Keyword list 1\",\n            \"Keyword list 2\",\n            \"Keyword list 3\",\n            \"Keyword list 4\",\n            0,\n        };\n\nstatic void ColourisePowerProDocWrapper(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                                       Accessor &styler) {\n\tColourisePowerProDoc(startPos, length, initStyle, keywordlists, styler, false);\n}\n\nLexerModule lmPowerPro(SCLEX_POWERPRO, ColourisePowerProDocWrapper, \"powerpro\", FoldPowerProDoc, powerProWordLists);\n\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPowerShell.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexPowerShell.cxx\n ** Lexer for PowerShell scripts.\n **/\n// Copyright 2008 by Tim Gerundt <tim@gerundt.de>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Extended to accept accented characters\nstatic inline bool IsAWordChar(int ch) {\n\treturn ch >= 0x80 || isalnum(ch) || ch == '-' || ch == '_';\n}\n\nstatic void ColourisePowerShellDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *keywordlists[], Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\tWordList &keywords5 = *keywordlists[4];\n\tWordList &keywords6 = *keywordlists[5];\n\n\tstyler.StartAt(startPos);\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.state == SCE_POWERSHELL_COMMENT) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_COMMENTSTREAM) {\n\t\t\tif(sc.atLineStart) {\n\t\t\t\twhile(IsASpaceOrTab(sc.ch)) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tif (sc.ch == '.' && IsAWordChar(sc.chNext)) {\n\t\t\t\t\tsc.SetState(SCE_POWERSHELL_COMMENTDOCKEYWORD);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (sc.ch == '>' && sc.chPrev == '#') {\n\t\t\t\tsc.ForwardSetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_COMMENTDOCKEYWORD) {\n\t\t\tif(!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (!keywords6.InList(s + 1)) {\n\t\t\t\t\tsc.ChangeState(SCE_POWERSHELL_COMMENTSTREAM);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_POWERSHELL_COMMENTSTREAM);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_STRING) {\n\t\t\t// This is a doubles quotes string\n\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_CHARACTER) {\n\t\t\t// This is a single quote string\n\t\t\tif (sc.ch == '\\'') {\n\t\t\t\tsc.ForwardSetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_HERE_STRING) {\n\t\t\t// This is a doubles quotes here-string\n\t\t\tif (sc.atLineStart && sc.ch == '\\\"' && sc.chNext == '@') {\n\t\t\t\tsc.Forward(2);\n\t\t\t\tsc.SetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_HERE_CHARACTER) {\n\t\t\t// This is a single quote here-string\n\t\t\tif (sc.atLineStart && sc.ch == '\\'' && sc.chNext == '@') {\n\t\t\t\tsc.Forward(2);\n\t\t\t\tsc.SetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_NUMBER) {\n\t\t\tif (!IsADigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_VARIABLE) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_OPERATOR) {\n\t\t\tif (!isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_POWERSHELL_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POWERSHELL_KEYWORD);\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POWERSHELL_CMDLET);\n\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POWERSHELL_ALIAS);\n\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POWERSHELL_FUNCTION);\n\t\t\t\t} else if (keywords5.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_POWERSHELL_USER1);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_POWERSHELL_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_POWERSHELL_DEFAULT) {\n\t\t\tif (sc.ch == '#') {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_COMMENT);\n\t\t\t} else if (sc.ch == '<' && sc.chNext == '#') {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_COMMENTSTREAM);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_CHARACTER);\n\t\t\t} else if (sc.ch == '@' && sc.chNext == '\\\"') {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_HERE_STRING);\n\t\t\t} else if (sc.ch == '@' && sc.chNext == '\\'') {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_HERE_CHARACTER);\n\t\t\t} else if (sc.ch == '$') {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_VARIABLE);\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_NUMBER);\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_OPERATOR);\n\t\t\t} else if (IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_POWERSHELL_IDENTIFIER);\n\t\t\t} else if (sc.ch == '`') {\n\t\t\t\tsc.Forward(); // skip next escaped character\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\nstatic void FoldPowerShellDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *[], Accessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tbool foldAtElse = styler.GetPropertyInt(\"fold.at.else\", 0) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (style == SCE_POWERSHELL_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\t// Measure the minimum before a '{' to allow\n\t\t\t\t// folding on \"} else {\"\n\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t} else if (foldComment && style == SCE_POWERSHELL_COMMENTSTREAM) {\n\t\t\tif (stylePrev != SCE_POWERSHELL_COMMENTSTREAM && stylePrev != SCE_POWERSHELL_COMMENTDOCKEYWORD) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (styleNext != SCE_POWERSHELL_COMMENTSTREAM && styleNext != SCE_POWERSHELL_COMMENTDOCKEYWORD) {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t} else if (foldComment && style == SCE_POWERSHELL_COMMENT) {\n\t\t\tif (ch == '#') {\n\t\t\t\tSci_PositionU j = i + 1;\n\t\t\t\twhile ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\tif (styler.Match(j, \"region\")) {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (styler.Match(j, \"endregion\")) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\t\tif (atEOL || (i == endPos-1)) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif (foldAtElse) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t}\n}\n\nstatic const char * const powershellWordLists[] = {\n\t\"Commands\",\n\t\"Cmdlets\",\n\t\"Aliases\",\n\t\"Functions\",\n\t\"User1\",\n\t\"DocComment\",\n\t0\n};\n\nLexerModule lmPowerShell(SCLEX_POWERSHELL, ColourisePowerShellDoc, \"powershell\", FoldPowerShellDoc, powershellWordLists);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexProgress.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexProgress.cxx\n **  Lexer for Progress 4GL.\n ** Based on LexCPP.cxx of Neil Hodgson <neilh@scintilla.org>\n  **/\n// Copyright 2006-2016 by Yuval Papish <Yuval@YuvCom.com>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n/** TODO:\n\nSpeedScript support in html lexer\nDifferentiate between labels and variables\n  Option 1: By symbols table\n  Option 2: As a single unidentified symbol in a sytactical line \n\n**/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <vector>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n#include \"SparseState.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nnamespace {\n   // Use an unnamed namespace to protect the functions and classes from name conflicts\n\n   bool IsSpaceEquiv(int state) {\n      return (state == SCE_ABL_COMMENT ||\n              state == SCE_ABL_LINECOMMENT ||\n              state == SCE_ABL_DEFAULT);\n   }\n\n   void highlightTaskMarker(StyleContext &sc, LexAccessor &styler, WordList &markerList){\n      if ((isoperator(sc.chPrev) || IsASpace(sc.chPrev)) && markerList.Length()) {\n         const int lengthMarker = 50;\n         char marker[lengthMarker+1];\n         Sci_Position currPos = (Sci_Position) sc.currentPos;\n         Sci_Position i = 0;\n         while (i < lengthMarker) {\n            char ch = styler.SafeGetCharAt(currPos + i);\n            if (IsASpace(ch) || isoperator(ch)) {\n               break;\n            }\n            marker[i] = ch;\n            i++;\n         }\n         marker[i] = '\\0';\n         if (markerList.InListAbbreviated (marker,'(')) {\n            sc.SetState(SCE_ABL_TASKMARKER);\n         }\n      }\n   }\n\n   bool IsStreamCommentStyle(int style) {\n      return style == SCE_ABL_COMMENT;\n             // style == SCE_ABL_LINECOMMENT;  Only block comments are used for folding \n   }\n\n   // Options used for LexerABL\n   struct OptionsABL {\n      bool fold;\n      bool foldSyntaxBased;\n      bool foldComment;\n      bool foldCommentMultiline;\n      bool foldCompact;\n      OptionsABL() {\n         fold = false;\n         foldSyntaxBased = true;\n         foldComment = true;\n         foldCommentMultiline = true;\n         foldCompact = false;\n      }\n   };\n\n   const char *const ablWordLists[] = {\n               \"Primary keywords and identifiers\",\n               \"Keywords that opens a block, only when used to begin a syntactic line\",\n               \"Keywords that opens a block anywhere in a syntactic line\",\n               \"Task Marker\", /* \"END MODIFY START TODO\" */\n               0,\n   };\n\n   struct OptionSetABL : public OptionSet<OptionsABL> {\n      OptionSetABL() {\n         DefineProperty(\"fold\", &OptionsABL::fold);\n\n         DefineProperty(\"fold.abl.syntax.based\", &OptionsABL::foldSyntaxBased,\n            \"Set this property to 0 to disable syntax based folding.\");\n\n         DefineProperty(\"fold.comment\", &OptionsABL::foldComment,\n            \"This option enables folding multi-line comments and explicit fold points when using the ABL lexer. \");\n\n         DefineProperty(\"fold.abl.comment.multiline\", &OptionsABL::foldCommentMultiline,\n            \"Set this property to 0 to disable folding multi-line comments when fold.comment=1.\");\n\n         DefineProperty(\"fold.compact\", &OptionsABL::foldCompact);\n\n         DefineWordListSets(ablWordLists);\n      }\n   };\n}\n\nclass LexerABL : public ILexer {\n   CharacterSet setWord;\n   CharacterSet setNegationOp;\n   CharacterSet setArithmethicOp;\n   CharacterSet setRelOp;\n   CharacterSet setLogicalOp;\n   CharacterSet setWordStart;\n   WordList keywords1;      // regular keywords\n   WordList keywords2;      // block opening keywords, only when isSentenceStart\n   WordList keywords3;      // block opening keywords\n   WordList keywords4;      // Task Marker\n   OptionsABL options;\n   OptionSetABL osABL;\npublic:\n   LexerABL() :\n      setWord(CharacterSet::setAlphaNum, \"_\", 0x80, true),\n      setNegationOp(CharacterSet::setNone, \"!\"),\n      setArithmethicOp(CharacterSet::setNone, \"+-/*%\"),\n      setRelOp(CharacterSet::setNone, \"=!<>\"),\n      setLogicalOp(CharacterSet::setNone, \"|&\"){\n   }\n   virtual ~LexerABL() {\n   }\n   void SCI_METHOD Release() {\n      delete this;\n   }\n   int SCI_METHOD Version() const {\n      return lvOriginal;\n   }\n   const char * SCI_METHOD PropertyNames() {\n      return osABL.PropertyNames();\n   }\n   int SCI_METHOD PropertyType(const char *name) {\n      return osABL.PropertyType(name);\n   }\n   const char * SCI_METHOD DescribeProperty(const char *name) {\n      return osABL.DescribeProperty(name);\n   }\n   Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) ;\n   \n   const char * SCI_METHOD DescribeWordListSets() {\n      return osABL.DescribeWordListSets();\n   }\n   Sci_Position SCI_METHOD WordListSet(int n, const char *wl);\n   void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n   void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n   void * SCI_METHOD PrivateCall(int, void *) {\n      return 0;\n   }\n   int SCI_METHOD LineEndTypesSupported() {\n      return SC_LINE_END_TYPE_DEFAULT;\n   }\n   static ILexer *LexerFactoryABL() {\n      return new LexerABL();\n   }\n};\n\nSci_Position SCI_METHOD LexerABL::PropertySet(const char *key, const char *val) {\n   if (osABL.PropertySet(&options, key, val)) {\n      return 0;\n   }\n   return -1;\n}\n\nSci_Position SCI_METHOD LexerABL::WordListSet(int n, const char *wl) {\n   WordList *wordListN = 0;\n   switch (n) {\n   case 0:\n      wordListN = &keywords1;\n      break;\n   case 1:\n      wordListN = &keywords2;\n      break;\n   case 2:\n      wordListN = &keywords3;\n      break;\n   case 3:\n      wordListN = &keywords4;\n      break;\n   }\n   Sci_Position firstModification = -1;\n   if (wordListN) {\n      WordList wlNew;\n      wlNew.Set(wl);\n      if (*wordListN != wlNew) {\n         wordListN->Set(wl);\n         firstModification = 0;\n      }\n   }\n   return firstModification;\n}\n\nvoid SCI_METHOD LexerABL::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n   LexAccessor styler(pAccess);\n\n   setWordStart = CharacterSet(CharacterSet::setAlpha, \"_\", 0x80, true);\n\n   int visibleChars = 0;\n   int visibleChars1 = 0;\n   int styleBeforeTaskMarker = SCE_ABL_DEFAULT;\n   bool continuationLine = false;\n   int commentNestingLevel = 0;\n   bool isSentenceStart = true;\n   bool possibleOOLChange = false;\n\n   Sci_Position lineCurrent = styler.GetLine(startPos);\n   if (initStyle == SCE_ABL_PREPROCESSOR) {\n      // Set continuationLine if last character of previous line is '~'\n      if (lineCurrent > 0) {\n         Sci_Position endLinePrevious = styler.LineEnd(lineCurrent-1);\n         if (endLinePrevious > 0) {\n            continuationLine = styler.SafeGetCharAt(endLinePrevious-1) == '~';\n         }\n      }\n   } \n\n    // Look back to set variables that are actually invisible secondary states. The reason to avoid formal states is to cut down on state's bits\n   if (startPos > 0) {\n      Sci_Position back = startPos;\n      bool checkCommentNestingLevel = (initStyle == SCE_ABL_COMMENT);\n      bool checkIsSentenceStart = (initStyle == SCE_ABL_DEFAULT || initStyle == SCE_ABL_IDENTIFIER);\n      char ch;\n      char st;\n      char chPrev;\n      char chPrev_1;\n      char chPrev_2;\n      char chPrev_3;\n\n      while (back >= 0 && (checkCommentNestingLevel || checkIsSentenceStart)) {\n         ch = styler.SafeGetCharAt(back);\n         styler.Flush();  // looking at styles so need to flush\n         st = styler.StyleAt(back);\n         \n         chPrev = styler.SafeGetCharAt(back-1);\n         // isSentenceStart is a non-visible state, used to identify where statements and preprocessor declerations can start \n         if (checkIsSentenceStart && st != SCE_ABL_COMMENT && st != SCE_ABL_LINECOMMENT && st != SCE_ABL_CHARACTER  && st != SCE_ABL_STRING ) {\n            chPrev_1 = styler.SafeGetCharAt(back-2);\n            chPrev_2 = styler.SafeGetCharAt(back-3);\n            chPrev_3 = styler.SafeGetCharAt(back-4);\n            if ((chPrev == '.' || chPrev == ':' || chPrev == '}' ||\n               (chPrev_3 == 'e' && chPrev_2 == 'l' && chPrev_1 == 's' &&  chPrev == 'e') ||\n               (chPrev_3 == 't' && chPrev_2 == 'h' && chPrev_1 == 'e' &&  chPrev == 'n')) &&\n               (IsASpace(ch) || (ch == '/' && styler.SafeGetCharAt(back+1) == '*'))\n               ) {\n                  checkIsSentenceStart = false;\n                  isSentenceStart = true;\n            }\n            else if (IsASpace(chPrev) && ch == '{') {\n               checkIsSentenceStart = false;\n               isSentenceStart = false;\n            }\n         }\n\n         // commentNestingLevel is a non-visible state, used to identify the nesting level of a comment\n         if (checkCommentNestingLevel) {\n            if (chPrev == '/' && ch == '*')\n               commentNestingLevel++;\n            if (chPrev == '*' && ch == '/') {\n               commentNestingLevel--;\n            }\n         }         \n         --back;\n      }\n   }\n\n   StyleContext sc(startPos, length, initStyle, styler, static_cast<unsigned char>(0xff));\n   Sci_Position lineEndNext = styler.LineEnd(lineCurrent);\n\n   for (; sc.More();) {\n      if (sc.atLineStart) {\n         visibleChars = 0;\n         visibleChars1 = 0;\n      }\n      if (sc.atLineEnd) {\n         lineCurrent++;\n         lineEndNext = styler.LineEnd(lineCurrent);\n      }\n      // Handle line continuation generically.\n      if (sc.ch == '~') {\n         if (static_cast<Sci_Position>((sc.currentPos+1)) >= lineEndNext) {\n            lineCurrent++;\n            lineEndNext = styler.LineEnd(lineCurrent);\n            sc.Forward();\n            if (sc.ch == '\\r' && sc.chNext == '\\n') {\n               sc.Forward();\n            }\n            continuationLine = true;\n            sc.Forward();\n            continue;\n         }\n      }\n\n      const bool atLineEndBeforeSwitch = sc.atLineEnd;\n      // Determine if the current state should terminate.\n      switch (sc.state) {\n         case SCE_ABL_OPERATOR:\n            sc.SetState(SCE_ABL_DEFAULT);\n            break;\n         case SCE_ABL_NUMBER:\n            // We accept almost anything because of hex. and maybe number suffixes and scientific notations in the future\n            if (!(setWord.Contains(sc.ch)\n\t\t\t\t   || ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E' ||\n\t\t\t\t                                          sc.chPrev == 'p' || sc.chPrev == 'P')))) {\n               sc.SetState(SCE_ABL_DEFAULT);\n            }\n            break;\n         case SCE_ABL_IDENTIFIER:\n            if (sc.atLineStart || sc.atLineEnd || (!setWord.Contains(sc.ch) && sc.ch != '-')) {\n               char s[1000];\n               sc.GetCurrentLowered(s, sizeof(s));\n               bool isLastWordEnd = (s[0] == 'e' && s[1] =='n' && s[2] == 'd' && !IsAlphaNumeric(s[3]) && s[3] != '-');  // helps to identify \"end trigger\" phrase\n               if ((isSentenceStart && keywords2.InListAbbreviated (s,'(')) || (!isLastWordEnd && keywords3.InListAbbreviated (s,'('))) {\n                  sc.ChangeState(SCE_ABL_BLOCK);\n                  isSentenceStart = false;\n               }\n               else if (keywords1.InListAbbreviated (s,'(')) {\n                  if (isLastWordEnd ||\n                     (s[0] == 'f' && s[1] =='o' && s[2] == 'r' && s[3] == 'w' && s[4] =='a' && s[5] == 'r' && s[6] == 'd'&& !IsAlphaNumeric(s[7]))) {\n                     sc.ChangeState(SCE_ABL_END);\n                     isSentenceStart = false;\n                  }\n                  else if ((s[0] == 'e' && s[1] =='l' && s[2] == 's' && s[3] == 'e') ||\n                         (s[0] == 't' && s[1] =='h' && s[2] == 'e' && s[3] == 'n')) {\n                     sc.ChangeState(SCE_ABL_WORD);\n                     isSentenceStart = true;\n                  }\n                  else {\n                     sc.ChangeState(SCE_ABL_WORD);\n                     isSentenceStart = false;\n                  }\n               }\n               sc.SetState(SCE_ABL_DEFAULT);\n            }\n            break;\n         case SCE_ABL_PREPROCESSOR:\n            if (sc.atLineStart && !continuationLine) {\n               sc.SetState(SCE_ABL_DEFAULT);\n               // Force Scintilla to acknowledge changed stated even though this change might happen outside of the current line\n               possibleOOLChange = true;\n               isSentenceStart = true;\n            }\n            break;\n         case SCE_ABL_LINECOMMENT:\n            if (sc.atLineStart && !continuationLine) {\n               sc.SetState(SCE_ABL_DEFAULT);\n               isSentenceStart = true;\n            } else {\n               styleBeforeTaskMarker = SCE_ABL_LINECOMMENT;\n               highlightTaskMarker(sc, styler, keywords4);\n            }\n            break;\n         case SCE_ABL_TASKMARKER:\n            if (isoperator(sc.ch) || IsASpace(sc.ch)) {\n               sc.SetState(styleBeforeTaskMarker);\n               styleBeforeTaskMarker = SCE_ABL_DEFAULT;\n            }\n            // fall through\n         case SCE_ABL_COMMENT:\n            if (sc.Match('*', '/')) {\n               sc.Forward();\n               commentNestingLevel--;\n               if (commentNestingLevel == 0) {\n                  sc.ForwardSetState(SCE_ABL_DEFAULT);\n                  possibleOOLChange = true;\n               }\n            } else if (sc.Match('/', '*')) {\n               commentNestingLevel++;\n               sc.Forward();\n            }\n            if (commentNestingLevel > 0) {\n               styleBeforeTaskMarker = SCE_ABL_COMMENT;\n               possibleOOLChange = true;\n               highlightTaskMarker(sc, styler, keywords4);\n            }\n            break;\n         case SCE_ABL_STRING:\n            if (sc.ch == '~') {\n               sc.Forward(); // Skip a character after a tilde\n            } else if (sc.ch == '\\\"') {\n                  sc.ForwardSetState(SCE_ABL_DEFAULT);\n            }\n            break;\n         case SCE_ABL_CHARACTER:\n            if (sc.ch == '~') {\n               sc.Forward(); // Skip a character after a tilde\n            } else if (sc.ch == '\\'') {\n                  sc.ForwardSetState(SCE_ABL_DEFAULT);\n            }\n            break;\n      }\n\n      if (sc.atLineEnd && !atLineEndBeforeSwitch) {\n         // State exit processing consumed characters up to end of line.\n         lineCurrent++;\n         lineEndNext = styler.LineEnd(lineCurrent);\n      }\n\n      // Determine if a new state should be entered.\n      if (sc.state == SCE_ABL_DEFAULT) {\n         if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n               sc.SetState(SCE_ABL_NUMBER);\n               isSentenceStart = false;\n         } else if (!sc.atLineEnd && (setWordStart.Contains(sc.ch)) && sc.chPrev != '&') {\n               sc.SetState(SCE_ABL_IDENTIFIER);\n         } else if (sc.Match('/', '*')) {\n            if (sc.chPrev == '.' || sc.chPrev == ':' || sc.chPrev == '}') {\n               isSentenceStart = true;\n            }\n            sc.SetState(SCE_ABL_COMMENT);\n            possibleOOLChange = true;\n            commentNestingLevel++;\n            sc.Forward();   // Eat the * so it isn't used for the end of the comment\n         } else if (sc.ch == '\\\"') {\n               sc.SetState(SCE_ABL_STRING);\n               isSentenceStart = false;\n         } else if (sc.ch == '\\'') {\n            sc.SetState(SCE_ABL_CHARACTER);\n            isSentenceStart = false;\n         } else if (sc.ch == '&' && visibleChars1 == 0 && isSentenceStart) {\n            // Preprocessor commands are alone on their line\n            sc.SetState(SCE_ABL_PREPROCESSOR);\n            // Force Scintilla to acknowledge changed stated even though this change might happen outside of the current line\n            possibleOOLChange = true;\n            // Skip whitespace between & and preprocessor word\n            do {\n               sc.Forward();\n            } while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More());\n            if (sc.atLineEnd) {\n               sc.SetState(SCE_ABL_DEFAULT);\n            }\n         } else if (sc.Match('/','/') && (IsASpace(sc.chPrev) || isSentenceStart)) {\n            // Line comments are valid after a white space or EOL\n            sc.SetState(SCE_ABL_LINECOMMENT);\n            // Skip whitespace between // and preprocessor word\n            do {\n               sc.Forward();\n            } while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More());\n            if (sc.atLineEnd) {\n               sc.SetState(SCE_ABL_DEFAULT);\n            }\n         } else if (isoperator(sc.ch)) {\n            sc.SetState(SCE_ABL_OPERATOR);\n            /*    This code allows highlight of handles. Alas, it would cause the phrase \"last-event:function\"\n               to be recognized as a BlockBegin */\n               isSentenceStart = false;\n         }\n         else if ((sc.chPrev == '.' || sc.chPrev == ':' || sc.chPrev == '}') && (IsASpace(sc.ch))) {\n            isSentenceStart = true;\n         }\n      }\n      if (!IsASpace(sc.ch)) {\n         visibleChars1++;\n      }\n      if (!IsASpace(sc.ch) && !IsSpaceEquiv(sc.state)) {\n         visibleChars++;\n      }\n      continuationLine = false;\n      sc.Forward();\n   }\n\tif (possibleOOLChange)\n\t\tstyler.ChangeLexerState(startPos, startPos + length);\n   sc.Complete();\n}\n\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\n\nvoid SCI_METHOD LexerABL::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\n   if (!options.fold)\n      return;\n\n   LexAccessor styler(pAccess);\n\n   Sci_PositionU endPos = startPos + length;\n   int visibleChars = 0;\n   Sci_Position lineCurrent = styler.GetLine(startPos);\n   int levelCurrent = SC_FOLDLEVELBASE;\n   if (lineCurrent > 0)\n      levelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n   Sci_PositionU lineStartNext = styler.LineStart(lineCurrent+1);\n   int levelNext = levelCurrent;\n   char chNext = styler[startPos];\n   int styleNext = styler.StyleAt(startPos);\n   int style = initStyle;\n   for (Sci_PositionU i = startPos; i < endPos; i++) {\n      chNext = static_cast<char>(tolower(chNext));  // check tolower\n      char ch = chNext;\n      chNext = styler.SafeGetCharAt(i+1);\n      int stylePrev = style;\n      style = styleNext;\n      styleNext = styler.StyleAt(i+1);\n      bool atEOL = i == (lineStartNext-1);\n      if (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style)) {\n         if (!IsStreamCommentStyle(stylePrev)) {\n            levelNext++;\n         } else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n            // Comments don't end at end of line and the next character may be unstyled.\n            levelNext--;\n         }\n      }\n      if (options.foldSyntaxBased) {\n         if (style == SCE_ABL_BLOCK && !IsAlphaNumeric(chNext)) {\n            levelNext++;\n         }\n         else if (style == SCE_ABL_END  && (ch == 'e' || ch == 'f')) {\n            levelNext--;\n         }\n      }\n      if (!IsASpace(ch))\n         visibleChars++;\n      if (atEOL || (i == endPos-1)) {\n         int lev = levelCurrent | levelNext << 16;\n         if (visibleChars == 0 && options.foldCompact)\n            lev |= SC_FOLDLEVELWHITEFLAG;\n         if (levelCurrent < levelNext)\n            lev |= SC_FOLDLEVELHEADERFLAG;\n         if (lev != styler.LevelAt(lineCurrent)) {\n            styler.SetLevel(lineCurrent, lev);\n         }\n         lineCurrent++;\n         lineStartNext = styler.LineStart(lineCurrent+1);\n         levelCurrent = levelNext;\n         if (atEOL && (i == static_cast<Sci_PositionU>(styler.Length()-1))) {\n            // There is an empty line at end of file so give it same level and empty\n            styler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG);\n         }\n         visibleChars = 0;\n      }\n   }\n}\n\nLexerModule lmProgress(SCLEX_PROGRESS, LexerABL::LexerFactoryABL, \"abl\", ablWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexProps.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexProps.cxx\n ** Lexer for properties files.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool AtEOL(Accessor &styler, Sci_PositionU i) {\n\treturn (styler[i] == '\\n') ||\n\t       ((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n'));\n}\n\nstatic inline bool isassignchar(unsigned char ch) {\n\treturn (ch == '=') || (ch == ':');\n}\n\nstatic void ColourisePropsLine(\n    char *lineBuffer,\n    Sci_PositionU lengthLine,\n    Sci_PositionU startLine,\n    Sci_PositionU endPos,\n    Accessor &styler,\n    bool allowInitialSpaces) {\n\n\tSci_PositionU i = 0;\n\tif (allowInitialSpaces) {\n\t\twhile ((i < lengthLine) && isspacechar(lineBuffer[i]))\t// Skip initial spaces\n\t\t\ti++;\n\t} else {\n\t\tif (isspacechar(lineBuffer[i])) // don't allow initial spaces\n\t\t\ti = lengthLine;\n\t}\n\n\tif (i < lengthLine) {\n\t\tif (lineBuffer[i] == '#' || lineBuffer[i] == '!' || lineBuffer[i] == ';') {\n\t\t\tstyler.ColourTo(endPos, SCE_PROPS_COMMENT);\n\t\t} else if (lineBuffer[i] == '[') {\n\t\t\tstyler.ColourTo(endPos, SCE_PROPS_SECTION);\n\t\t} else if (lineBuffer[i] == '@') {\n\t\t\tstyler.ColourTo(startLine + i, SCE_PROPS_DEFVAL);\n\t\t\tif (isassignchar(lineBuffer[i++]))\n\t\t\t\tstyler.ColourTo(startLine + i, SCE_PROPS_ASSIGNMENT);\n\t\t\tstyler.ColourTo(endPos, SCE_PROPS_DEFAULT);\n\t\t} else {\n\t\t\t// Search for the '=' character\n\t\t\twhile ((i < lengthLine) && !isassignchar(lineBuffer[i]))\n\t\t\t\ti++;\n\t\t\tif ((i < lengthLine) && isassignchar(lineBuffer[i])) {\n\t\t\t\tstyler.ColourTo(startLine + i - 1, SCE_PROPS_KEY);\n\t\t\t\tstyler.ColourTo(startLine + i, SCE_PROPS_ASSIGNMENT);\n\t\t\t\tstyler.ColourTo(endPos, SCE_PROPS_DEFAULT);\n\t\t\t} else {\n\t\t\t\tstyler.ColourTo(endPos, SCE_PROPS_DEFAULT);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tstyler.ColourTo(endPos, SCE_PROPS_DEFAULT);\n\t}\n}\n\nstatic void ColourisePropsDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tchar lineBuffer[1024];\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tSci_PositionU linePos = 0;\n\tSci_PositionU startLine = startPos;\n\n\t// property lexer.props.allow.initial.spaces\n\t//\tFor properties files, set to 0 to style all lines that start with whitespace in the default style.\n\t//\tThis is not suitable for SciTE .properties files which use indentation for flow control but\n\t//\tcan be used for RFC2822 text where indentation is used for continuation lines.\n\tbool allowInitialSpaces = styler.GetPropertyInt(\"lexer.props.allow.initial.spaces\", 1) != 0;\n\n\tfor (Sci_PositionU i = startPos; i < startPos + length; i++) {\n\t\tlineBuffer[linePos++] = styler[i];\n\t\tif (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {\n\t\t\t// End of line (or of line buffer) met, colourise it\n\t\t\tlineBuffer[linePos] = '\\0';\n\t\t\tColourisePropsLine(lineBuffer, linePos, startLine, i, styler, allowInitialSpaces);\n\t\t\tlinePos = 0;\n\t\t\tstartLine = i + 1;\n\t\t}\n\t}\n\tif (linePos > 0) {\t// Last line does not have ending characters\n\t\tColourisePropsLine(lineBuffer, linePos, startLine, startPos + length - 1, styler, allowInitialSpaces);\n\t}\n}\n\n// adaption by ksc, using the \"} else {\" trick of 1.53\n// 030721\nstatic void FoldPropsDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler) {\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tbool headerPoint = false;\n\tint lev;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler[i+1];\n\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (style == SCE_PROPS_SECTION) {\n\t\t\theaderPoint = true;\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tlev = SC_FOLDLEVELBASE;\n\n\t\t\tif (lineCurrent > 0) {\n\t\t\t\tint levelPrevious = styler.LevelAt(lineCurrent - 1);\n\n\t\t\t\tif (levelPrevious & SC_FOLDLEVELHEADERFLAG) {\n\t\t\t\t\tlev = SC_FOLDLEVELBASE + 1;\n\t\t\t\t} else {\n\t\t\t\t\tlev = levelPrevious & SC_FOLDLEVELNUMBERMASK;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (headerPoint) {\n\t\t\t\tlev = SC_FOLDLEVELBASE;\n\t\t\t}\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\n\t\t\tif (headerPoint) {\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t}\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\n\t\t\tlineCurrent++;\n\t\t\tvisibleChars = 0;\n\t\t\theaderPoint = false;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\n\tif (lineCurrent > 0) {\n\t\tint levelPrevious = styler.LevelAt(lineCurrent - 1);\n\t\tif (levelPrevious & SC_FOLDLEVELHEADERFLAG) {\n\t\t\tlev = SC_FOLDLEVELBASE + 1;\n\t\t} else {\n\t\t\tlev = levelPrevious & SC_FOLDLEVELNUMBERMASK;\n\t\t}\n\t} else {\n\t\tlev = SC_FOLDLEVELBASE;\n\t}\n\tint flagsNext = styler.LevelAt(lineCurrent);\n\tstyler.SetLevel(lineCurrent, lev | (flagsNext & ~SC_FOLDLEVELNUMBERMASK));\n}\n\nstatic const char *const emptyWordListDesc[] = {\n\t0\n};\n\nLexerModule lmProps(SCLEX_PROPERTIES, ColourisePropsDoc, \"props\", FoldPropsDoc, emptyWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexPython.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexPython.cxx\n ** Lexer for Python.\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <vector>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n#include \"SubStyles.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nnamespace {\n\t// Use an unnamed namespace to protect the functions and classes from name conflicts\n\n/* kwCDef, kwCTypeName only used for Cython */\nenum kwType { kwOther, kwClass, kwDef, kwImport, kwCDef, kwCTypeName, kwCPDef };\n\nenum literalsAllowed { litNone = 0, litU = 1, litB = 2 };\n\nconst int indicatorWhitespace = 1;\n\nbool IsPyComment(Accessor &styler, Sci_Position pos, Sci_Position len) {\n\treturn len > 0 && styler[pos] == '#';\n}\n\nbool IsPyStringTypeChar(int ch, literalsAllowed allowed) {\n\treturn\n\t\t((allowed & litB) && (ch == 'b' || ch == 'B')) ||\n\t\t((allowed & litU) && (ch == 'u' || ch == 'U'));\n}\n\nbool IsPyStringStart(int ch, int chNext, int chNext2, literalsAllowed allowed) {\n\tif (ch == '\\'' || ch == '\"')\n\t\treturn true;\n\tif (IsPyStringTypeChar(ch, allowed)) {\n\t\tif (chNext == '\"' || chNext == '\\'')\n\t\t\treturn true;\n\t\tif ((chNext == 'r' || chNext == 'R') && (chNext2 == '\"' || chNext2 == '\\''))\n\t\t\treturn true;\n\t}\n\tif ((ch == 'r' || ch == 'R') && (chNext == '\"' || chNext == '\\''))\n\t\treturn true;\n\n\treturn false;\n}\n\n/* Return the state to use for the string starting at i; *nextIndex will be set to the first index following the quote(s) */\nint GetPyStringState(Accessor &styler, Sci_Position i, Sci_PositionU *nextIndex, literalsAllowed allowed) {\n\tchar ch = styler.SafeGetCharAt(i);\n\tchar chNext = styler.SafeGetCharAt(i + 1);\n\n\t// Advance beyond r, u, or ur prefix (or r, b, or br in Python 3.0), but bail if there are any unexpected chars\n\tif (ch == 'r' || ch == 'R') {\n\t\ti++;\n\t\tch = styler.SafeGetCharAt(i);\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t} else if (IsPyStringTypeChar(ch, allowed)) {\n\t\tif (chNext == 'r' || chNext == 'R')\n\t\t\ti += 2;\n\t\telse\n\t\t\ti += 1;\n\t\tch = styler.SafeGetCharAt(i);\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t}\n\n\tif (ch != '\"' && ch != '\\'') {\n\t\t*nextIndex = i + 1;\n\t\treturn SCE_P_DEFAULT;\n\t}\n\n\tif (ch == chNext && ch == styler.SafeGetCharAt(i + 2)) {\n\t\t*nextIndex = i + 3;\n\n\t\tif (ch == '\"')\n\t\t\treturn SCE_P_TRIPLEDOUBLE;\n\t\telse\n\t\t\treturn SCE_P_TRIPLE;\n\t} else {\n\t\t*nextIndex = i + 1;\n\n\t\tif (ch == '\"')\n\t\t\treturn SCE_P_STRING;\n\t\telse\n\t\t\treturn SCE_P_CHARACTER;\n\t}\n}\n\ninline bool IsAWordChar(int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_');\n}\n\ninline bool IsAWordStart(int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\nstatic bool IsFirstNonWhitespace(Sci_Position pos, Accessor &styler) {\n\tSci_Position line = styler.GetLine(pos);\n\tSci_Position start_pos = styler.LineStart(line);\n\tfor (Sci_Position i = start_pos; i < pos; i++) {\n\t\tchar ch = styler[i];\n\t\tif (!(ch == ' ' || ch == '\\t'))\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\n// Options used for LexerPython\nstruct OptionsPython {\n\tint whingeLevel;\n\tbool base2or8Literals;\n\tbool stringsU;\n\tbool stringsB;\n\tbool stringsOverNewline;\n\tbool keywords2NoSubIdentifiers;\n\tbool fold;\n\tbool foldQuotes;\n\tbool foldCompact;\n\n\tOptionsPython() {\n\t\twhingeLevel = 0;\n\t\tbase2or8Literals = true;\n\t\tstringsU = true;\n\t\tstringsB = true;\n\t\tstringsOverNewline = false;\n\t\tkeywords2NoSubIdentifiers = false;\n\t\tfold = false;\n\t\tfoldQuotes = false;\n\t\tfoldCompact = false;\n\t}\n\n\tliteralsAllowed AllowedLiterals() const {\n\t\tliteralsAllowed allowedLiterals = stringsU ? litU : litNone;\n\t\tif (stringsB)\n\t\t\tallowedLiterals = static_cast<literalsAllowed>(allowedLiterals | litB);\n\t\treturn allowedLiterals;\n\t}\n};\n\nstatic const char *const pythonWordListDesc[] = {\n\t\"Keywords\",\n\t\"Highlighted identifiers\",\n\t0\n};\n\nstruct OptionSetPython : public OptionSet<OptionsPython> {\n\tOptionSetPython() {\n\t\tDefineProperty(\"tab.timmy.whinge.level\", &OptionsPython::whingeLevel,\n\t\t\t\"For Python code, checks whether indenting is consistent. \"\n\t\t\t\"The default, 0 turns off indentation checking, \"\n\t\t\t\"1 checks whether each line is potentially inconsistent with the previous line, \"\n\t\t\t\"2 checks whether any space characters occur before a tab character in the indentation, \"\n\t\t\t\"3 checks whether any spaces are in the indentation, and \"\n\t\t\t\"4 checks for any tab characters in the indentation. \"\n\t\t\t\"1 is a good level to use.\");\n\n\t\tDefineProperty(\"lexer.python.literals.binary\", &OptionsPython::base2or8Literals,\n\t\t\t\"Set to 0 to not recognise Python 3 binary and octal literals: 0b1011 0o712.\");\n\n\t\tDefineProperty(\"lexer.python.strings.u\", &OptionsPython::stringsU,\n\t\t\t\"Set to 0 to not recognise Python Unicode literals u\\\"x\\\" as used before Python 3.\");\n\n\t\tDefineProperty(\"lexer.python.strings.b\", &OptionsPython::stringsB,\n\t\t\t\"Set to 0 to not recognise Python 3 bytes literals b\\\"x\\\".\");\n\n\t\tDefineProperty(\"lexer.python.strings.over.newline\", &OptionsPython::stringsOverNewline,\n\t\t\t\"Set to 1 to allow strings to span newline characters.\");\n\n\t\tDefineProperty(\"lexer.python.keywords2.no.sub.identifiers\", &OptionsPython::keywords2NoSubIdentifiers,\n\t\t\t\"When enabled, it will not style keywords2 items that are used as a sub-identifier. \"\n\t\t\t\"Example: when set, will not highlight \\\"foo.open\\\" when \\\"open\\\" is a keywords2 item.\");\n\n\t\tDefineProperty(\"fold\", &OptionsPython::fold);\n\n\t\tDefineProperty(\"fold.quotes.python\", &OptionsPython::foldQuotes,\n\t\t\t\"This option enables folding multi-line quoted strings when using the Python lexer.\");\n\n\t\tDefineProperty(\"fold.compact\", &OptionsPython::foldCompact);\n\n\t\tDefineWordListSets(pythonWordListDesc);\n\t}\n};\n\nconst char styleSubable[] = { SCE_P_IDENTIFIER, 0 };\n\n}\n\nclass LexerPython : public ILexerWithSubStyles {\n\tWordList keywords;\n\tWordList keywords2;\n\tOptionsPython options;\n\tOptionSetPython osPython;\n\tenum { ssIdentifier };\n\tSubStyles subStyles;\npublic:\n\texplicit LexerPython() :\n\t\tsubStyles(styleSubable, 0x80, 0x40, 0) {\n\t}\n\tvirtual ~LexerPython() {\n\t}\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tint SCI_METHOD Version() const {\n\t\treturn lvSubStyles;\n\t}\n\tconst char * SCI_METHOD PropertyNames() {\n\t\treturn osPython.PropertyNames();\n\t}\n\tint SCI_METHOD PropertyType(const char *name) {\n\t\treturn osPython.PropertyType(name);\n\t}\n\tconst char * SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn osPython.DescribeProperty(name);\n\t}\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tconst char * SCI_METHOD DescribeWordListSets() {\n\t\treturn osPython.DescribeWordListSets();\n\t}\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\n\tint SCI_METHOD LineEndTypesSupported() {\n\t\treturn SC_LINE_END_TYPE_UNICODE;\n\t}\n\n\tint SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) {\n\t\treturn subStyles.Allocate(styleBase, numberStyles);\n\t}\n\tint SCI_METHOD SubStylesStart(int styleBase) {\n\t\treturn subStyles.Start(styleBase);\n\t}\n\tint SCI_METHOD SubStylesLength(int styleBase) {\n\t\treturn subStyles.Length(styleBase);\n\t}\n\tint SCI_METHOD StyleFromSubStyle(int subStyle) {\n\t\tint styleBase = subStyles.BaseStyle(subStyle);\n\t\treturn styleBase;\n\t}\n\tint SCI_METHOD PrimaryStyleFromStyle(int style) {\n\t\treturn style;\n\t}\n\tvoid SCI_METHOD FreeSubStyles() {\n\t\tsubStyles.Free();\n\t}\n\tvoid SCI_METHOD SetIdentifiers(int style, const char *identifiers) {\n\t\tsubStyles.SetIdentifiers(style, identifiers);\n\t}\n\tint SCI_METHOD DistanceToSecondaryStyles() {\n\t\treturn 0;\n\t}\n\tconst char * SCI_METHOD GetSubStyleBases() {\n\t\treturn styleSubable;\n\t}\n\n\tstatic ILexer *LexerFactoryPython() {\n\t\treturn new LexerPython();\n\t}\n};\n\nSci_Position SCI_METHOD LexerPython::PropertySet(const char *key, const char *val) {\n\tif (osPython.PropertySet(&options, key, val)) {\n\t\treturn 0;\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerPython::WordListSet(int n, const char *wl) {\n\tWordList *wordListN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\twordListN = &keywords;\n\t\tbreak;\n\tcase 1:\n\t\twordListN = &keywords2;\n\t\tbreak;\n\t}\n\tSci_Position firstModification = -1;\n\tif (wordListN) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nvoid SCI_METHOD LexerPython::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tAccessor styler(pAccess, NULL);\n\n\tconst Sci_Position endPos = startPos + length;\n\n\t// Backtrack to previous line in case need to fix its tab whinging\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tif (startPos > 0) {\n\t\tif (lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\t// Look for backslash-continued lines\n\t\t\twhile (lineCurrent > 0) {\n\t\t\t\tSci_Position eolPos = styler.LineStart(lineCurrent) - 1;\n\t\t\t\tint eolStyle = styler.StyleAt(eolPos);\n\t\t\t\tif (eolStyle == SCE_P_STRING\n\t\t\t\t    || eolStyle == SCE_P_CHARACTER\n\t\t\t\t    || eolStyle == SCE_P_STRINGEOL) {\n\t\t\t\t\tlineCurrent -= 1;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tstartPos = styler.LineStart(lineCurrent);\n\t\t}\n\t\tinitStyle = startPos == 0 ? SCE_P_DEFAULT : styler.StyleAt(startPos - 1);\n\t}\n\n\tconst literalsAllowed allowedLiterals = options.AllowedLiterals();\n\n\tinitStyle = initStyle & 31;\n\tif (initStyle == SCE_P_STRINGEOL) {\n\t\tinitStyle = SCE_P_DEFAULT;\n\t}\n\n\tkwType kwLast = kwOther;\n\tint spaceFlags = 0;\n\tstyler.IndentAmount(lineCurrent, &spaceFlags, IsPyComment);\n\tbool base_n_number = false;\n\n\tconst WordClassifier &classifierIdentifiers = subStyles.Classifier(SCE_P_IDENTIFIER);\n\n\tStyleContext sc(startPos, endPos - startPos, initStyle, styler);\n\n\tbool indentGood = true;\n\tSci_Position startIndicator = sc.currentPos;\n\tbool inContinuedString = false;\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.atLineStart) {\n\t\t\tstyler.IndentAmount(lineCurrent, &spaceFlags, IsPyComment);\n\t\t\tindentGood = true;\n\t\t\tif (options.whingeLevel == 1) {\n\t\t\t\tindentGood = (spaceFlags & wsInconsistent) == 0;\n\t\t\t} else if (options.whingeLevel == 2) {\n\t\t\t\tindentGood = (spaceFlags & wsSpaceTab) == 0;\n\t\t\t} else if (options.whingeLevel == 3) {\n\t\t\t\tindentGood = (spaceFlags & wsSpace) == 0;\n\t\t\t} else if (options.whingeLevel == 4) {\n\t\t\t\tindentGood = (spaceFlags & wsTab) == 0;\n\t\t\t}\n\t\t\tif (!indentGood) {\n\t\t\t\tstyler.IndicatorFill(startIndicator, sc.currentPos, indicatorWhitespace, 0);\n\t\t\t\tstartIndicator = sc.currentPos;\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\tif ((sc.state == SCE_P_DEFAULT) ||\n\t\t\t        (sc.state == SCE_P_TRIPLE) ||\n\t\t\t        (sc.state == SCE_P_TRIPLEDOUBLE)) {\n\t\t\t\t// Perform colourisation of white space and triple quoted strings at end of each line to allow\n\t\t\t\t// tab marking to work inside white space and triple quoted strings\n\t\t\t\tsc.SetState(sc.state);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tif ((sc.state == SCE_P_STRING) || (sc.state == SCE_P_CHARACTER)) {\n\t\t\t\tif (inContinuedString || options.stringsOverNewline) {\n\t\t\t\t\tinContinuedString = false;\n\t\t\t\t} else {\n\t\t\t\t\tsc.ChangeState(SCE_P_STRINGEOL);\n\t\t\t\t\tsc.ForwardSetState(SCE_P_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!sc.More())\n\t\t\t\tbreak;\n\t\t}\n\n\t\tbool needEOLCheck = false;\n\n\t\t// Check for a state end\n\t\tif (sc.state == SCE_P_OPERATOR) {\n\t\t\tkwLast = kwOther;\n\t\t\tsc.SetState(SCE_P_DEFAULT);\n\t\t} else if (sc.state == SCE_P_NUMBER) {\n\t\t\tif (!IsAWordChar(sc.ch) &&\n\t\t\t        !(!base_n_number && ((sc.ch == '+' || sc.ch == '-') && (sc.chPrev == 'e' || sc.chPrev == 'E')))) {\n\t\t\t\tsc.SetState(SCE_P_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_P_IDENTIFIER) {\n\t\t\tif ((sc.ch == '.') || (!IsAWordChar(sc.ch))) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tint style = SCE_P_IDENTIFIER;\n\t\t\t\tif ((kwLast == kwImport) && (strcmp(s, \"as\") == 0)) {\n\t\t\t\t\tstyle = SCE_P_WORD;\n\t\t\t\t} else if (keywords.InList(s)) {\n\t\t\t\t\tstyle = SCE_P_WORD;\n\t\t\t\t} else if (kwLast == kwClass) {\n\t\t\t\t\tstyle = SCE_P_CLASSNAME;\n\t\t\t\t} else if (kwLast == kwDef) {\n\t\t\t\t\tstyle = SCE_P_DEFNAME;\n\t\t\t\t} else if (kwLast == kwCDef || kwLast == kwCPDef) {\n\t\t\t\t\tSci_Position pos = sc.currentPos;\n\t\t\t\t\tunsigned char ch = styler.SafeGetCharAt(pos, '\\0');\n\t\t\t\t\twhile (ch != '\\0') {\n\t\t\t\t\t\tif (ch == '(') {\n\t\t\t\t\t\t\tstyle = SCE_P_DEFNAME;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (ch == ':') {\n\t\t\t\t\t\t\tstyle = SCE_P_CLASSNAME;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else if (ch == ' ' || ch == '\\t' || ch == '\\n' || ch == '\\r') {\n\t\t\t\t\t\t\tpos++;\n\t\t\t\t\t\t\tch = styler.SafeGetCharAt(pos, '\\0');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tif (options.keywords2NoSubIdentifiers) {\n\t\t\t\t\t\t// We don't want to highlight keywords2\n\t\t\t\t\t\t// that are used as a sub-identifier,\n\t\t\t\t\t\t// i.e. not open in \"foo.open\".\n\t\t\t\t\t\tSci_Position pos = styler.GetStartSegment() - 1;\n\t\t\t\t\t\tif (pos < 0 || (styler.SafeGetCharAt(pos, '\\0') != '.'))\n\t\t\t\t\t\t\tstyle = SCE_P_WORD2;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstyle = SCE_P_WORD2;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tint subStyle = classifierIdentifiers.ValueFor(s);\n\t\t\t\t\tif (subStyle >= 0) {\n\t\t\t\t\t\tstyle = subStyle;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsc.ChangeState(style);\n\t\t\t\tsc.SetState(SCE_P_DEFAULT);\n\t\t\t\tif (style == SCE_P_WORD) {\n\t\t\t\t\tif (0 == strcmp(s, \"class\"))\n\t\t\t\t\t\tkwLast = kwClass;\n\t\t\t\t\telse if (0 == strcmp(s, \"def\"))\n\t\t\t\t\t\tkwLast = kwDef;\n\t\t\t\t\telse if (0 == strcmp(s, \"import\"))\n\t\t\t\t\t\tkwLast = kwImport;\n\t\t\t\t\telse if (0 == strcmp(s, \"cdef\"))\n\t\t\t\t\t\tkwLast = kwCDef;\n\t\t\t\t\telse if (0 == strcmp(s, \"cpdef\"))\n\t\t\t\t\t\tkwLast = kwCPDef;\n\t\t\t\t\telse if (0 == strcmp(s, \"cimport\"))\n\t\t\t\t\t\tkwLast = kwImport;\n\t\t\t\t\telse if (kwLast != kwCDef && kwLast != kwCPDef)\n\t\t\t\t\t\tkwLast = kwOther;\n\t\t\t\t} else if (kwLast != kwCDef && kwLast != kwCPDef) {\n\t\t\t\t\tkwLast = kwOther;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if ((sc.state == SCE_P_COMMENTLINE) || (sc.state == SCE_P_COMMENTBLOCK)) {\n\t\t\tif (sc.ch == '\\r' || sc.ch == '\\n') {\n\t\t\t\tsc.SetState(SCE_P_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_P_DECORATOR) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_P_DEFAULT);\n\t\t\t}\n\t\t} else if ((sc.state == SCE_P_STRING) || (sc.state == SCE_P_CHARACTER)) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif ((sc.chNext == '\\r') && (sc.GetRelative(2) == '\\n')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\t\tinContinuedString = true;\n\t\t\t\t} else {\n\t\t\t\t\t// Don't roll over the newline.\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if ((sc.state == SCE_P_STRING) && (sc.ch == '\\\"')) {\n\t\t\t\tsc.ForwardSetState(SCE_P_DEFAULT);\n\t\t\t\tneedEOLCheck = true;\n\t\t\t} else if ((sc.state == SCE_P_CHARACTER) && (sc.ch == '\\'')) {\n\t\t\t\tsc.ForwardSetState(SCE_P_DEFAULT);\n\t\t\t\tneedEOLCheck = true;\n\t\t\t}\n\t\t} else if (sc.state == SCE_P_TRIPLE) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match(\"\\'\\'\\'\")) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_P_DEFAULT);\n\t\t\t\tneedEOLCheck = true;\n\t\t\t}\n\t\t} else if (sc.state == SCE_P_TRIPLEDOUBLE) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.Match(\"\\\"\\\"\\\"\")) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_P_DEFAULT);\n\t\t\t\tneedEOLCheck = true;\n\t\t\t}\n\t\t}\n\n\t\tif (!indentGood && !IsASpaceOrTab(sc.ch)) {\n\t\t\tstyler.IndicatorFill(startIndicator, sc.currentPos, indicatorWhitespace, 1);\n\t\t\tstartIndicator = sc.currentPos;\n\t\t\tindentGood = true;\n\t\t}\n\n\t\t// One cdef or cpdef line, clear kwLast only at end of line\n\t\tif ((kwLast == kwCDef || kwLast == kwCPDef) && sc.atLineEnd) {\n\t\t\tkwLast = kwOther;\n\t\t}\n\n\t\t// State exit code may have moved on to end of line\n\t\tif (needEOLCheck && sc.atLineEnd) {\n\t\t\tlineCurrent++;\n\t\t\tstyler.IndentAmount(lineCurrent, &spaceFlags, IsPyComment);\n\t\t\tif (!sc.More())\n\t\t\t\tbreak;\n\t\t}\n\n\t\t// Check for a new state starting character\n\t\tif (sc.state == SCE_P_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tif (sc.ch == '0' && (sc.chNext == 'x' || sc.chNext == 'X')) {\n\t\t\t\t\tbase_n_number = true;\n\t\t\t\t\tsc.SetState(SCE_P_NUMBER);\n\t\t\t\t} else if (sc.ch == '0' &&\n\t\t\t\t\t(sc.chNext == 'o' || sc.chNext == 'O' || sc.chNext == 'b' || sc.chNext == 'B')) {\n\t\t\t\t\tif (options.base2or8Literals) {\n\t\t\t\t\t\tbase_n_number = true;\n\t\t\t\t\t\tsc.SetState(SCE_P_NUMBER);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_P_NUMBER);\n\t\t\t\t\t\tsc.ForwardSetState(SCE_P_IDENTIFIER);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tbase_n_number = false;\n\t\t\t\t\tsc.SetState(SCE_P_NUMBER);\n\t\t\t\t}\n\t\t\t} else if ((IsASCII(sc.ch) && isoperator(static_cast<char>(sc.ch))) || sc.ch == '`') {\n\t\t\t\tsc.SetState(SCE_P_OPERATOR);\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tsc.SetState(sc.chNext == '#' ? SCE_P_COMMENTBLOCK : SCE_P_COMMENTLINE);\n\t\t\t} else if (sc.ch == '@') {\n\t\t\t\tif (IsFirstNonWhitespace(sc.currentPos, styler))\n\t\t\t\t\tsc.SetState(SCE_P_DECORATOR);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_P_OPERATOR);\n\t\t\t} else if (IsPyStringStart(sc.ch, sc.chNext, sc.GetRelative(2), allowedLiterals)) {\n\t\t\t\tSci_PositionU nextIndex = 0;\n\t\t\t\tsc.SetState(GetPyStringState(styler, sc.currentPos, &nextIndex, allowedLiterals));\n\t\t\t\twhile (nextIndex > (sc.currentPos + 1) && sc.More()) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_P_IDENTIFIER);\n\t\t\t}\n\t\t}\n\t}\n\tstyler.IndicatorFill(startIndicator, sc.currentPos, indicatorWhitespace, 0);\n\tsc.Complete();\n}\n\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tif (ch == '#')\n\t\t\treturn true;\n\t\telse if (ch != ' ' && ch != '\\t')\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic bool IsQuoteLine(Sci_Position line, Accessor &styler) {\n\tint style = styler.StyleAt(styler.LineStart(line)) & 31;\n\treturn ((style == SCE_P_TRIPLE) || (style == SCE_P_TRIPLEDOUBLE));\n}\n\n\nvoid SCI_METHOD LexerPython::Fold(Sci_PositionU startPos, Sci_Position length, int /*initStyle - unused*/, IDocument *pAccess) {\n\tif (!options.fold)\n\t\treturn;\n\n\tAccessor styler(pAccess, NULL);\n\n\tconst Sci_Position maxPos = startPos + length;\n\tconst Sci_Position maxLines = (maxPos == styler.Length()) ? styler.GetLine(maxPos) : styler.GetLine(maxPos - 1);\t// Requested last line\n\tconst Sci_Position docLines = styler.GetLine(styler.Length());\t// Available last line\n\n\t// Backtrack to previous non-blank line so we can determine indent level\n\t// for any white space lines (needed esp. within triple quoted strings)\n\t// and so we can fix any preceding fold level (which is why we go back\n\t// at least one line in all cases)\n\tint spaceFlags = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n\twhile (lineCurrent > 0) {\n\t\tlineCurrent--;\n\t\tindentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n\t\tif (!(indentCurrent & SC_FOLDLEVELWHITEFLAG) &&\n\t\t        (!IsCommentLine(lineCurrent, styler)) &&\n\t\t        (!IsQuoteLine(lineCurrent, styler)))\n\t\t\tbreak;\n\t}\n\tint indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\n\t// Set up initial loop state\n\tstartPos = styler.LineStart(lineCurrent);\n\tint prev_state = SCE_P_DEFAULT & 31;\n\tif (lineCurrent >= 1)\n\t\tprev_state = styler.StyleAt(startPos - 1) & 31;\n\tint prevQuote = options.foldQuotes && ((prev_state == SCE_P_TRIPLE) || (prev_state == SCE_P_TRIPLEDOUBLE));\n\n\t// Process all characters to end of requested range or end of any triple quote\n\t//that hangs over the end of the range.  Cap processing in all cases\n\t// to end of document (in case of unclosed quote at end).\n\twhile ((lineCurrent <= docLines) && ((lineCurrent <= maxLines) || prevQuote)) {\n\n\t\t// Gather info\n\t\tint lev = indentCurrent;\n\t\tSci_Position lineNext = lineCurrent + 1;\n\t\tint indentNext = indentCurrent;\n\t\tint quote = false;\n\t\tif (lineNext <= docLines) {\n\t\t\t// Information about next line is only available if not at end of document\n\t\t\tindentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL);\n\t\t\tSci_Position lookAtPos = (styler.LineStart(lineNext) == styler.Length()) ? styler.Length() - 1 : styler.LineStart(lineNext);\n\t\t\tint style = styler.StyleAt(lookAtPos) & 31;\n\t\t\tquote = options.foldQuotes && ((style == SCE_P_TRIPLE) || (style == SCE_P_TRIPLEDOUBLE));\n\t\t}\n\t\tconst int quote_start = (quote && !prevQuote);\n\t\tconst int quote_continue = (quote && prevQuote);\n\t\tif (!quote || !prevQuote)\n\t\t\tindentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\t\tif (quote)\n\t\t\tindentNext = indentCurrentLevel;\n\t\tif (indentNext & SC_FOLDLEVELWHITEFLAG)\n\t\t\tindentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel;\n\n\t\tif (quote_start) {\n\t\t\t// Place fold point at start of triple quoted string\n\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t} else if (quote_continue || prevQuote) {\n\t\t\t// Add level to rest of lines in the string\n\t\t\tlev = lev + 1;\n\t\t}\n\n\t\t// Skip past any blank lines for next indent level info; we skip also\n\t\t// comments (all comments, not just those starting in column 0)\n\t\t// which effectively folds them into surrounding code rather\n\t\t// than screwing up folding.\n\n\t\twhile (!quote &&\n\t\t        (lineNext < docLines) &&\n\t\t        ((indentNext & SC_FOLDLEVELWHITEFLAG) ||\n\t\t         (lineNext <= docLines && IsCommentLine(lineNext, styler)))) {\n\n\t\t\tlineNext++;\n\t\t\tindentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL);\n\t\t}\n\n\t\tconst int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK;\n\t\tconst int levelBeforeComments = Maximum(indentCurrentLevel,levelAfterComments);\n\n\t\t// Now set all the indent levels on the lines we skipped\n\t\t// Do this from end to start.  Once we encounter one line\n\t\t// which is indented more than the line after the end of\n\t\t// the comment-block, use the level of the block before\n\n\t\tSci_Position skipLine = lineNext;\n\t\tint skipLevel = levelAfterComments;\n\n\t\twhile (--skipLine > lineCurrent) {\n\t\t\tint skipLineIndent = styler.IndentAmount(skipLine, &spaceFlags, NULL);\n\n\t\t\tif (options.foldCompact) {\n\t\t\t\tif ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments)\n\t\t\t\t\tskipLevel = levelBeforeComments;\n\n\t\t\t\tint whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG;\n\n\t\t\t\tstyler.SetLevel(skipLine, skipLevel | whiteFlag);\n\t\t\t} else {\n\t\t\t\tif ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments &&\n\t\t\t\t\t!(skipLineIndent & SC_FOLDLEVELWHITEFLAG) &&\n\t\t\t\t\t!IsCommentLine(skipLine, styler))\n\t\t\t\t\tskipLevel = levelBeforeComments;\n\n\t\t\t\tstyler.SetLevel(skipLine, skipLevel);\n\t\t\t}\n\t\t}\n\n\t\t// Set fold header on non-quote line\n\t\tif (!quote && !(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {\n\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t}\n\n\t\t// Keep track of triple quote state of previous line\n\t\tprevQuote = quote;\n\n\t\t// Set fold level for this line and move to next line\n\t\tstyler.SetLevel(lineCurrent, options.foldCompact ? lev : lev & ~SC_FOLDLEVELWHITEFLAG);\n\t\tindentCurrent = indentNext;\n\t\tlineCurrent = lineNext;\n\t}\n\n\t// NOTE: Cannot set level of last line here because indentCurrent doesn't have\n\t// header flag set; the loop above is crafted to take care of this case!\n\t//styler.SetLevel(lineCurrent, indentCurrent);\n}\n\nLexerModule lmPython(SCLEX_PYTHON, LexerPython::LexerFactoryPython, \"python\",\n\t\t\t\t\t pythonWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexR.cpp",
    "content": "// Scintilla source code edit control\n/** @file Lexr.cxx\n ** Lexer for R, S, SPlus Statistics Program (Heavily derived from CPP Lexer).\n **\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_');\n}\n\nstatic inline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\nstatic inline bool IsAnOperator(const int ch) {\n\tif (IsASCII(ch) && isalnum(ch))\n\t\treturn false;\n\t// '.' left out as it is used to make up numbers\n\tif (ch == '-' || ch == '+' || ch == '!' || ch == '~' ||\n\t        ch == '?' || ch == ':' || ch == '*' || ch == '/' ||\n\t        ch == '^' || ch == '<' || ch == '>' || ch == '=' ||\n\t        ch == '&' || ch == '|' || ch == '$' || ch == '(' ||\n\t        ch == ')' || ch == '}' || ch == '{' || ch == '[' ||\n\t\tch == ']')\n\t\treturn true;\n\treturn false;\n}\n\nstatic void ColouriseRDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler) {\n\n\tWordList &keywords   = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_R_INFIXEOL)\n\t\tinitStyle = SCE_R_DEFAULT;\n\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.atLineStart && (sc.state == SCE_R_STRING)) {\n\t\t\t// Prevent SCE_R_STRINGEOL from leaking back to previous line\n\t\t\tsc.SetState(SCE_R_STRING);\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_R_OPERATOR) {\n\t\t\tsc.SetState(SCE_R_DEFAULT);\n\t\t} else if (sc.state == SCE_R_NUMBER) {\n\t\t\tif (!IsADigit(sc.ch) && !(sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_R_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_R_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_R_KWORD);\n\t\t\t\t} else if  (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_R_BASEKWORD);\n\t\t\t\t} else if  (keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_R_OTHERKWORD);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_R_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_R_COMMENT) {\n\t\t\tif (sc.ch == '\\r' || sc.ch == '\\n') {\n\t\t\t\tsc.SetState(SCE_R_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_R_STRING) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_R_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_R_INFIX) {\n\t\t\tif (sc.ch == '%') {\n\t\t\t\tsc.ForwardSetState(SCE_R_DEFAULT);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_R_INFIXEOL);\n\t\t\t\tsc.ForwardSetState(SCE_R_DEFAULT);\n\t\t\t}\n\t\t}else if (sc.state == SCE_R_STRING2) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.ForwardSetState(SCE_R_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_R_DEFAULT) {\n\t\t\tif (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_R_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch) ) {\n\t\t\t\tsc.SetState(SCE_R_IDENTIFIER);\n\t\t\t} else if (sc.Match('#')) {\n\t\t\t\t\tsc.SetState(SCE_R_COMMENT);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_R_STRING);\n\t\t\t} else if (sc.ch == '%') {\n\t\t\t\tsc.SetState(SCE_R_INFIX);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_R_STRING2);\n\t\t\t} else if (IsAnOperator(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_R_OPERATOR);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\nstatic void FoldRDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[],\n                       Accessor &styler) {\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tbool foldAtElse = styler.GetPropertyInt(\"fold.at.else\", 0) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (style == SCE_R_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\t// Measure the minimum before a '{' to allow\n\t\t\t\t// folding on \"} else {\"\n\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif (foldAtElse) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n}\n\n\nstatic const char * const RWordLists[] = {\n            \"Language Keywords\",\n            \"Base / Default package function\",\n            \"Other Package Functions\",\n            \"Unused\",\n            \"Unused\",\n            0,\n        };\n\n\n\nLexerModule lmR(SCLEX_R, ColouriseRDoc, \"r\", FoldRDoc, RWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexRebol.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexRebol.cxx\n ** Lexer for REBOL.\n ** Written by Pascal Hurni, inspired from LexLua by Paul Winwood & Marcos E. Wurzius & Philippe Lhoste\n **\n ** History:\n **\t\t2005-04-07\tFirst release.\n **\t\t2005-04-10\tClosing parens and brackets go now in default style\n **\t\t\t\t\tString and comment nesting should be more safe\n **/\n// Copyright 2005 by Pascal Hurni <pascal_hurni@fastmail.fm>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (isalnum(ch) || ch == '?' || ch == '!' || ch == '.' || ch == '\\'' || ch == '+' || ch == '-' || ch == '*' || ch == '&' || ch == '|' || ch == '=' || ch == '_' || ch == '~');\n}\n\nstatic inline bool IsAWordStart(const int ch, const int ch2) {\n\treturn ((ch == '+' || ch == '-' || ch == '.') && !isdigit(ch2)) ||\n\t\t(isalpha(ch) || ch == '?' || ch == '!' || ch == '\\'' || ch == '*' || ch == '&' || ch == '|' || ch == '=' || ch == '_' || ch == '~');\n}\n\nstatic inline bool IsAnOperator(const int ch, const int ch2, const int ch3) {\n\t// One char operators\n\tif (IsASpaceOrTab(ch2)) {\n\t\treturn ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '<' || ch == '>' || ch == '=' || ch == '?';\n\t}\n\n\t// Two char operators\n\tif (IsASpaceOrTab(ch3)) {\n\t\treturn (ch == '*' && ch2 == '*') ||\n\t\t\t   (ch == '/' && ch2 == '/') ||\n\t\t\t   (ch == '<' && (ch2 == '=' || ch2 == '>')) ||\n\t\t\t   (ch == '>' && ch2 == '=') ||\n\t\t\t   (ch == '=' && (ch2 == '=' || ch2 == '?')) ||\n\t\t\t   (ch == '?' && ch2 == '?');\n\t}\n\n\treturn false;\n}\n\nstatic inline bool IsBinaryStart(const int ch, const int ch2, const int ch3, const int ch4) {\n\treturn (ch == '#' && ch2 == '{') ||\n\t\t   (IsADigit(ch) && ch2 == '#' && ch3 == '{' ) ||\n\t\t   (IsADigit(ch) && IsADigit(ch2) && ch3 == '#' && ch4 == '{' );\n}\n\n\nstatic void ColouriseRebolDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[], Accessor &styler) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\tWordList &keywords5 = *keywordlists[4];\n\tWordList &keywords6 = *keywordlists[5];\n\tWordList &keywords7 = *keywordlists[6];\n\tWordList &keywords8 = *keywordlists[7];\n\n\tSci_Position currentLine = styler.GetLine(startPos);\n\t// Initialize the braced string {.. { ... } ..} nesting level, if we are inside such a string.\n\tint stringLevel = 0;\n\tif (initStyle == SCE_REBOL_BRACEDSTRING || initStyle == SCE_REBOL_COMMENTBLOCK) {\n\t\tstringLevel = styler.GetLineState(currentLine - 1);\n\t}\n\n\tbool blockComment = initStyle == SCE_REBOL_COMMENTBLOCK;\n\tint dotCount = 0;\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_REBOL_COMMENTLINE) {\n\t\tinitStyle = SCE_REBOL_DEFAULT;\n\t}\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tif (startPos == 0) {\n\t\tsc.SetState(SCE_REBOL_PREFACE);\n\t}\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\t//--- What to do at line end ?\n\t\tif (sc.atLineEnd) {\n\t\t\t// Can be either inside a {} string or simply at eol\n\t\t\tif (sc.state != SCE_REBOL_BRACEDSTRING && sc.state != SCE_REBOL_COMMENTBLOCK &&\n\t\t\t\tsc.state != SCE_REBOL_BINARY && sc.state != SCE_REBOL_PREFACE)\n\t\t\t\tsc.SetState(SCE_REBOL_DEFAULT);\n\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tcurrentLine = styler.GetLine(sc.currentPos);\n\t\t\tswitch (sc.state) {\n\t\t\tcase SCE_REBOL_BRACEDSTRING:\n\t\t\tcase SCE_REBOL_COMMENTBLOCK:\n\t\t\t\t// Inside a braced string, we set the line state\n\t\t\t\tstyler.SetLineState(currentLine, stringLevel);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\t// Reset the line state\n\t\t\t\tstyler.SetLineState(currentLine, 0);\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// continue with next char\n\t\t\tcontinue;\n\t\t}\n\n\t\t//--- What to do on white-space ?\n\t\tif (IsASpaceOrTab(sc.ch))\n\t\t{\n\t\t\t// Return to default if any of these states\n\t\t\tif (sc.state == SCE_REBOL_OPERATOR || sc.state == SCE_REBOL_CHARACTER ||\n\t\t\t\tsc.state == SCE_REBOL_NUMBER || sc.state == SCE_REBOL_PAIR ||\n\t\t\t\tsc.state == SCE_REBOL_TUPLE || sc.state == SCE_REBOL_FILE ||\n\t\t\t\tsc.state == SCE_REBOL_DATE || sc.state == SCE_REBOL_TIME ||\n\t\t\t\tsc.state == SCE_REBOL_MONEY || sc.state == SCE_REBOL_ISSUE ||\n\t\t\t\tsc.state == SCE_REBOL_URL || sc.state == SCE_REBOL_EMAIL) {\n\t\t\t\tsc.SetState(SCE_REBOL_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t//--- Specialize state ?\n\t\t// URL, Email look like identifier\n\t\tif (sc.state == SCE_REBOL_IDENTIFIER)\n\t\t{\n\t\t\tif (sc.ch == ':' && !IsASpace(sc.chNext)) {\n\t\t\t\tsc.ChangeState(SCE_REBOL_URL);\n\t\t\t} else if (sc.ch == '@') {\n\t\t\t\tsc.ChangeState(SCE_REBOL_EMAIL);\n\t\t\t} else if (sc.ch == '$') {\n\t\t\t\tsc.ChangeState(SCE_REBOL_MONEY);\n\t\t\t}\n\t\t}\n\t\t// Words look like identifiers\n\t\tif (sc.state == SCE_REBOL_IDENTIFIER || (sc.state >= SCE_REBOL_WORD && sc.state <= SCE_REBOL_WORD8)) {\n\t\t\t// Keywords ?\n\t\t\tif (!IsAWordChar(sc.ch) || sc.Match('/')) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tblockComment = strcmp(s, \"comment\") == 0;\n\t\t\t\tif (keywords8.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_REBOL_WORD8);\n\t\t\t\t} else if (keywords7.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_REBOL_WORD7);\n\t\t\t\t} else if (keywords6.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_REBOL_WORD6);\n\t\t\t\t} else if (keywords5.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_REBOL_WORD5);\n\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_REBOL_WORD4);\n\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_REBOL_WORD3);\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_REBOL_WORD2);\n\t\t\t\t} else if (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_REBOL_WORD);\n\t\t\t\t}\n\t\t\t\t// Keep same style if there are refinements\n\t\t\t\tif (!sc.Match('/')) {\n\t\t\t\t\tsc.SetState(SCE_REBOL_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t// special numbers\n\t\t} else if (sc.state == SCE_REBOL_NUMBER) {\n\t\t\tswitch (sc.ch) {\n\t\t\tcase 'x':\tsc.ChangeState(SCE_REBOL_PAIR);\n\t\t\t\t\t\tbreak;\n\t\t\tcase ':':\tsc.ChangeState(SCE_REBOL_TIME);\n\t\t\t\t\t\tbreak;\n\t\t\tcase '-':\n\t\t\tcase '/':\tsc.ChangeState(SCE_REBOL_DATE);\n\t\t\t\t\t\tbreak;\n\t\t\tcase '.':\tif (++dotCount >= 2) sc.ChangeState(SCE_REBOL_TUPLE);\n\t\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//--- Determine if the current state should terminate\n\t\tif (sc.state == SCE_REBOL_QUOTEDSTRING || sc.state == SCE_REBOL_CHARACTER) {\n\t\t\tif (sc.ch == '^' && sc.chNext == '\\\"') {\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_REBOL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_REBOL_BRACEDSTRING || sc.state == SCE_REBOL_COMMENTBLOCK) {\n\t\t\tif (sc.ch == '}') {\n\t\t\t\tif (--stringLevel == 0) {\n\t\t\t\t\tsc.ForwardSetState(SCE_REBOL_DEFAULT);\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '{') {\n\t\t\t\tstringLevel++;\n\t\t\t}\n\t\t} else if (sc.state == SCE_REBOL_BINARY) {\n\t\t\tif (sc.ch == '}') {\n\t\t\t\tsc.ForwardSetState(SCE_REBOL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_REBOL_TAG) {\n\t\t\tif (sc.ch == '>') {\n\t\t\t\tsc.ForwardSetState(SCE_REBOL_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_REBOL_PREFACE) {\n\t\t\tif (sc.MatchIgnoreCase(\"rebol\"))\n\t\t\t{\n\t\t\t\tint i;\n\t\t\t\tfor (i=5; IsASpaceOrTab(styler.SafeGetCharAt(sc.currentPos+i, 0)); i++);\n\t\t\t\tif (sc.GetRelative(i) == '[')\n\t\t\t\t\tsc.SetState(SCE_REBOL_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t//--- Parens and bracket changes to default style when the current is a number\n\t\tif (sc.state == SCE_REBOL_NUMBER || sc.state == SCE_REBOL_PAIR || sc.state == SCE_REBOL_TUPLE ||\n\t\t\tsc.state == SCE_REBOL_MONEY || sc.state == SCE_REBOL_ISSUE || sc.state == SCE_REBOL_EMAIL ||\n\t\t\tsc.state == SCE_REBOL_URL || sc.state == SCE_REBOL_DATE || sc.state == SCE_REBOL_TIME) {\n\t\t\tif (sc.ch == '(' || sc.ch == '[' || sc.ch == ')' || sc.ch == ']') {\n\t\t\t\tsc.SetState(SCE_REBOL_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\t//--- Determine if a new state should be entered.\n\t\tif (sc.state == SCE_REBOL_DEFAULT) {\n\t\t\tif (IsAnOperator(sc.ch, sc.chNext, sc.GetRelative(2))) {\n\t\t\t\tsc.SetState(SCE_REBOL_OPERATOR);\n\t\t\t} else if (IsBinaryStart(sc.ch, sc.chNext, sc.GetRelative(2), sc.GetRelative(3))) {\n\t\t\t\tsc.SetState(SCE_REBOL_BINARY);\n\t\t\t} else if (IsAWordStart(sc.ch, sc.chNext)) {\n\t\t\t\tsc.SetState(SCE_REBOL_IDENTIFIER);\n\t\t\t} else if (IsADigit(sc.ch) || sc.ch == '+' || sc.ch == '-' || /*Decimal*/ sc.ch == '.' || sc.ch == ',') {\n\t\t\t\tdotCount = 0;\n\t\t\t\tsc.SetState(SCE_REBOL_NUMBER);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_REBOL_QUOTEDSTRING);\n\t\t\t} else if (sc.ch == '{') {\n\t\t\t\tsc.SetState(blockComment ? SCE_REBOL_COMMENTBLOCK : SCE_REBOL_BRACEDSTRING);\n\t\t\t\t++stringLevel;\n\t\t\t} else if (sc.ch == ';') {\n\t\t\t\tsc.SetState(SCE_REBOL_COMMENTLINE);\n\t\t\t} else if (sc.ch == '$') {\n\t\t\t\tsc.SetState(SCE_REBOL_MONEY);\n\t\t\t} else if (sc.ch == '%') {\n\t\t\t\tsc.SetState(SCE_REBOL_FILE);\n\t\t\t} else if (sc.ch == '<') {\n\t\t\t\tsc.SetState(SCE_REBOL_TAG);\n\t\t\t} else if (sc.ch == '#' && sc.chNext == '\"') {\n\t\t\t\tsc.SetState(SCE_REBOL_CHARACTER);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '#' && sc.chNext != '\"' && sc.chNext != '{' ) {\n\t\t\t\tsc.SetState(SCE_REBOL_ISSUE);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\n\nstatic void FoldRebolDoc(Sci_PositionU startPos, Sci_Position length, int /* initStyle */, WordList *[],\n                            Accessor &styler) {\n\tSci_PositionU lengthDoc = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (style == SCE_REBOL_DEFAULT) {\n\t\t\tif (ch == '[') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == ']') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const rebolWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nLexerModule lmREBOL(SCLEX_REBOL, ColouriseRebolDoc, \"rebol\", FoldRebolDoc, rebolWordListDesc);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexRegistry.cpp",
    "content": "// Scintilla source code edit control\n/**\n * @file LexRegistry.cxx\n * @date July 26 2014\n * @brief Lexer for Windows registration files(.reg)\n * @author nkmathew\n *\n * The License.txt file describes the conditions under which this software may be\n * distributed.\n *\n */\n\n#include <cstdlib>\n#include <cassert>\n#include <cctype>\n#include <cstdio>\n#include <string>\n#include <vector>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic const char *const RegistryWordListDesc[] = {\n\t0\n};\n\nstruct OptionsRegistry {\n\tbool foldCompact;\n\tbool fold;\n\tOptionsRegistry() {\n\t\tfoldCompact = false;\n\t\tfold = false;\n\t}\n};\n\nstruct OptionSetRegistry : public OptionSet<OptionsRegistry> {\n\tOptionSetRegistry() {\n\t\tDefineProperty(\"fold.compact\", &OptionsRegistry::foldCompact);\n\t\tDefineProperty(\"fold\", &OptionsRegistry::fold);\n\t\tDefineWordListSets(RegistryWordListDesc);\n\t}\n};\n\nclass LexerRegistry : public ILexer {\n\tOptionsRegistry options;\n\tOptionSetRegistry optSetRegistry;\n\n\tstatic bool IsStringState(int state) {\n\t\treturn (state == SCE_REG_VALUENAME || state == SCE_REG_STRING);\n\t}\n\n\tstatic bool IsKeyPathState(int state) {\n\t\treturn (state == SCE_REG_ADDEDKEY || state == SCE_REG_DELETEDKEY);\n\t}\n\n\tstatic bool AtValueType(LexAccessor &styler, Sci_Position start) {\n\t\tSci_Position i = 0;\n\t\twhile (i < 10) {\n\t\t\ti++;\n\t\t\tchar curr = styler.SafeGetCharAt(start+i, '\\0');\n\t\t\tif (curr == ':') {\n\t\t\t\treturn true;\n\t\t\t} else if (!curr) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tstatic bool IsNextNonWhitespace(LexAccessor &styler, Sci_Position start, char ch) {\n\t\tSci_Position i = 0;\n\t\twhile (i < 100) {\n\t\t\ti++;\n\t\t\tchar curr = styler.SafeGetCharAt(start+i, '\\0');\n\t\t\tchar next = styler.SafeGetCharAt(start+i+1, '\\0');\n\t\t\tbool atEOL = (curr == '\\r' && next != '\\n') || (curr == '\\n');\n\t\t\tif (curr == ch) {\n\t\t\t\treturn true;\n\t\t\t} else if (!isspacechar(curr) || atEOL) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\t// Looks for the equal sign at the end of the string\n\tstatic bool AtValueName(LexAccessor &styler, Sci_Position start) {\n\t\tbool atEOL = false;\n\t\tSci_Position i = 0;\n\t\tbool escaped = false;\n\t\twhile (!atEOL) {\n\t\t\ti++;\n\t\t\tchar curr = styler.SafeGetCharAt(start+i, '\\0');\n\t\t\tchar next = styler.SafeGetCharAt(start+i+1, '\\0');\n\t\t\tatEOL = (curr == '\\r' && next != '\\n') || (curr == '\\n');\n\t\t\tif (escaped) {\n\t\t\t\tescaped = false;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tescaped = curr == '\\\\';\n\t\t\tif (curr == '\"') {\n\t\t\t\treturn IsNextNonWhitespace(styler, start+i, '=');\n\t\t\t} else if (!curr) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tstatic bool AtKeyPathEnd(LexAccessor &styler, Sci_Position start) {\n\t\tbool atEOL = false;\n\t\tSci_Position i = 0;\n\t\twhile (!atEOL) {\n\t\t\ti++;\n\t\t\tchar curr = styler.SafeGetCharAt(start+i, '\\0');\n\t\t\tchar next = styler.SafeGetCharAt(start+i+1, '\\0');\n\t\t\tatEOL = (curr == '\\r' && next != '\\n') || (curr == '\\n');\n\t\t\tif (curr == ']' || !curr) {\n\t\t\t\t// There's still at least one or more square brackets ahead\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\tstatic bool AtGUID(LexAccessor &styler, Sci_Position start) {\n\t\tint count = 8;\n\t\tint portion = 0;\n\t\tint offset = 1;\n\t\tchar digit = '\\0';\n\t\twhile (portion < 5) {\n\t\t\tint i = 0;\n\t\t\twhile (i < count) {\n\t\t\t\tdigit = styler.SafeGetCharAt(start+offset);\n\t\t\t\tif (!(isxdigit(digit) || digit == '-')) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\toffset++;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tportion++;\n\t\t\tcount = (portion == 4) ? 13 : 5;\n\t\t}\n\t\tdigit = styler.SafeGetCharAt(start+offset);\n\t\tif (digit == '}') {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\npublic:\n\tLexerRegistry() {}\n\tvirtual ~LexerRegistry() {}\n\tvirtual int SCI_METHOD Version() const {\n\t\treturn lvOriginal;\n\t}\n\tvirtual void SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tvirtual const char *SCI_METHOD PropertyNames() {\n\t\treturn optSetRegistry.PropertyNames();\n\t}\n\tvirtual int SCI_METHOD PropertyType(const char *name) {\n\t\treturn optSetRegistry.PropertyType(name);\n\t}\n\tvirtual const char *SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn optSetRegistry.DescribeProperty(name);\n\t}\n\tvirtual Sci_Position SCI_METHOD PropertySet(const char *key, const char *val) {\n\t\tif (optSetRegistry.PropertySet(&options, key, val)) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -1;\n\t}\n\tvirtual Sci_Position SCI_METHOD WordListSet(int, const char *) {\n\t\treturn -1;\n\t}\n\tvirtual void *SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\tstatic ILexer *LexerFactoryRegistry() {\n\t\treturn new LexerRegistry;\n\t}\n\tvirtual const char *SCI_METHOD DescribeWordListSets() {\n\t\treturn optSetRegistry.DescribeWordListSets();\n\t}\n\tvirtual void SCI_METHOD Lex(Sci_PositionU startPos,\n\t\t\t\t\t\t\t\tSci_Position length,\n\t\t\t\t\t\t\t\tint initStyle,\n\t\t\t\t\t\t\t\tIDocument *pAccess);\n\tvirtual void SCI_METHOD Fold(Sci_PositionU startPos,\n\t\t\t\t\t\t\t\t Sci_Position length,\n\t\t\t\t\t\t\t\t int initStyle,\n\t\t\t\t\t\t\t\t IDocument *pAccess);\n};\n\nvoid SCI_METHOD LexerRegistry::Lex(Sci_PositionU startPos,\n\t\t\t\t\t\t\t\t   Sci_Position length,\n\t\t\t\t\t\t\t\t   int initStyle,\n\t\t\t\t\t\t\t\t   IDocument *pAccess) {\n\tint beforeGUID = SCE_REG_DEFAULT;\n\tint beforeEscape = SCE_REG_DEFAULT;\n\tCharacterSet setOperators = CharacterSet(CharacterSet::setNone, \"-,.=:\\\\@()\");\n\tLexAccessor styler(pAccess);\n\tStyleContext context(startPos, length, initStyle, styler);\n\tbool highlight = true;\n\tbool afterEqualSign = false;\n\twhile (context.More()) {\n\t\tif (context.atLineStart) {\n\t\t\tSci_Position currPos = static_cast<Sci_Position>(context.currentPos);\n\t\t\tbool continued = styler[currPos-3] == '\\\\';\n\t\t\thighlight = continued ? true : false;\n\t\t}\n\t\tswitch (context.state) {\n\t\t\tcase SCE_REG_COMMENT:\n\t\t\t\tif (context.atLineEnd) {\n\t\t\t\t\tcontext.SetState(SCE_REG_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_REG_VALUENAME:\n\t\t\tcase SCE_REG_STRING: {\n\t\t\t\t\tSci_Position currPos = static_cast<Sci_Position>(context.currentPos);\n\t\t\t\t\tif (context.ch == '\"') {\n\t\t\t\t\t\tcontext.ForwardSetState(SCE_REG_DEFAULT);\n\t\t\t\t\t} else if (context.ch == '\\\\') {\n\t\t\t\t\t\tbeforeEscape = context.state;\n\t\t\t\t\t\tcontext.SetState(SCE_REG_ESCAPED);\n\t\t\t\t\t\tcontext.Forward();\n\t\t\t\t\t} else if (context.ch == '{') {\n\t\t\t\t\t\tif (AtGUID(styler, currPos)) {\n\t\t\t\t\t\t\tbeforeGUID = context.state;\n\t\t\t\t\t\t\tcontext.SetState(SCE_REG_STRING_GUID);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (context.state == SCE_REG_STRING &&\n\t\t\t\t\t\tcontext.ch == '%' &&\n\t\t\t\t\t\t(isdigit(context.chNext) || context.chNext == '*')) {\n\t\t\t\t\t\tcontext.SetState(SCE_REG_PARAMETER);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_REG_PARAMETER:\n\t\t\t\tcontext.ForwardSetState(SCE_REG_STRING);\n\t\t\t\tif (context.ch == '\"') {\n\t\t\t\t\tcontext.ForwardSetState(SCE_REG_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_REG_VALUETYPE:\n\t\t\t\tif (context.ch == ':') {\n\t\t\t\t\tcontext.SetState(SCE_REG_DEFAULT);\n\t\t\t\t\tafterEqualSign = false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_REG_HEXDIGIT:\n\t\t\tcase SCE_REG_OPERATOR:\n\t\t\t\tcontext.SetState(SCE_REG_DEFAULT);\n\t\t\t\tbreak;\n\t\t\tcase SCE_REG_DELETEDKEY:\n\t\t\tcase SCE_REG_ADDEDKEY: {\n\t\t\t\t\tSci_Position currPos = static_cast<Sci_Position>(context.currentPos);\n\t\t\t\t\tif (context.ch == ']' && AtKeyPathEnd(styler, currPos)) {\n\t\t\t\t\t\tcontext.ForwardSetState(SCE_REG_DEFAULT);\n\t\t\t\t\t} else if (context.ch == '{') {\n\t\t\t\t\t\tif (AtGUID(styler, currPos)) {\n\t\t\t\t\t\t\tbeforeGUID = context.state;\n\t\t\t\t\t\t\tcontext.SetState(SCE_REG_KEYPATH_GUID);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_REG_ESCAPED:\n\t\t\t\tif (context.ch == '\"') {\n\t\t\t\t\tcontext.SetState(beforeEscape);\n\t\t\t\t\tcontext.ForwardSetState(SCE_REG_DEFAULT);\n\t\t\t\t} else if (context.ch == '\\\\') {\n\t\t\t\t\tcontext.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tcontext.SetState(beforeEscape);\n\t\t\t\t\tbeforeEscape = SCE_REG_DEFAULT;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_REG_STRING_GUID:\n\t\t\tcase SCE_REG_KEYPATH_GUID: {\n\t\t\t\t\tif (context.ch == '}') {\n\t\t\t\t\t\tcontext.ForwardSetState(beforeGUID);\n\t\t\t\t\t\tbeforeGUID = SCE_REG_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t\tSci_Position currPos = static_cast<Sci_Position>(context.currentPos);\n\t\t\t\t\tif (context.ch == '\"' && IsStringState(context.state)) {\n\t\t\t\t\t\tcontext.ForwardSetState(SCE_REG_DEFAULT);\n\t\t\t\t\t} else if (context.ch == ']' &&\n\t\t\t\t\t\t\t   AtKeyPathEnd(styler, currPos) &&\n\t\t\t\t\t\t\t   IsKeyPathState(context.state)) {\n\t\t\t\t\t\tcontext.ForwardSetState(SCE_REG_DEFAULT);\n\t\t\t\t\t} else if (context.ch == '\\\\' && IsStringState(context.state)) {\n\t\t\t\t\t\tbeforeEscape = context.state;\n\t\t\t\t\t\tcontext.SetState(SCE_REG_ESCAPED);\n\t\t\t\t\t\tcontext.Forward();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t// Determine if a new state should be entered.\n\t\tif (context.state == SCE_REG_DEFAULT) {\n\t\t\tSci_Position currPos = static_cast<Sci_Position>(context.currentPos);\n\t\t\tif (context.ch == ';') {\n\t\t\t\tcontext.SetState(SCE_REG_COMMENT);\n\t\t\t} else if (context.ch == '\"') {\n\t\t\t\tif (AtValueName(styler, currPos)) {\n\t\t\t\t\tcontext.SetState(SCE_REG_VALUENAME);\n\t\t\t\t} else {\n\t\t\t\t\tcontext.SetState(SCE_REG_STRING);\n\t\t\t\t}\n\t\t\t} else if (context.ch == '[') {\n\t\t\t\tif (IsNextNonWhitespace(styler, currPos, '-')) {\n\t\t\t\t\tcontext.SetState(SCE_REG_DELETEDKEY);\n\t\t\t\t} else {\n\t\t\t\t\tcontext.SetState(SCE_REG_ADDEDKEY);\n\t\t\t\t}\n\t\t\t} else if (context.ch == '=') {\n\t\t\t\tafterEqualSign = true;\n\t\t\t\thighlight = true;\n\t\t\t} else if (afterEqualSign) {\n\t\t\t\tbool wordStart = isalpha(context.ch) && !isalpha(context.chPrev);\n\t\t\t\tif (wordStart && AtValueType(styler, currPos)) {\n\t\t\t\t\tcontext.SetState(SCE_REG_VALUETYPE);\n\t\t\t\t}\n\t\t\t} else if (isxdigit(context.ch) && highlight) {\n\t\t\t\tcontext.SetState(SCE_REG_HEXDIGIT);\n\t\t\t}\n\t\t\thighlight = (context.ch == '@') ? true : highlight;\n\t\t\tif (setOperators.Contains(context.ch) && highlight) {\n\t\t\t\tcontext.SetState(SCE_REG_OPERATOR);\n\t\t\t}\n\t\t}\n\t\tcontext.Forward();\n\t}\n\tcontext.Complete();\n}\n\n// Folding similar to that of FoldPropsDoc in LexOthers\nvoid SCI_METHOD LexerRegistry::Fold(Sci_PositionU startPos,\n\t\t\t\t\t\t\t\t\tSci_Position length,\n\t\t\t\t\t\t\t\t\tint,\n\t\t\t\t\t\t\t\t\tIDocument *pAccess) {\n\tif (!options.fold) {\n\t\treturn;\n\t}\n\tLexAccessor styler(pAccess);\n\tSci_Position currLine = styler.GetLine(startPos);\n\tint visibleChars = 0;\n\tSci_PositionU endPos = startPos + length;\n\tbool atKeyPath = false;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tatKeyPath = IsKeyPathState(styler.StyleAt(i)) ? true : atKeyPath;\n\t\tchar curr = styler.SafeGetCharAt(i);\n\t\tchar next = styler.SafeGetCharAt(i+1);\n\t\tbool atEOL = (curr == '\\r' && next != '\\n') || (curr == '\\n');\n\t\tif (atEOL || i == (endPos-1)) {\n\t\t\tint level = SC_FOLDLEVELBASE;\n\t\t\tif (currLine > 0) {\n\t\t\t\tint prevLevel = styler.LevelAt(currLine-1);\n\t\t\t\tif (prevLevel & SC_FOLDLEVELHEADERFLAG) {\n\t\t\t\t\tlevel += 1;\n\t\t\t\t} else {\n\t\t\t\t\tlevel = prevLevel;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!visibleChars && options.foldCompact) {\n\t\t\t\tlevel |= SC_FOLDLEVELWHITEFLAG;\n\t\t\t} else if (atKeyPath) {\n\t\t\t\tlevel = SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG;\n\t\t\t}\n\t\t\tif (level != styler.LevelAt(currLine)) {\n\t\t\t\tstyler.SetLevel(currLine, level);\n\t\t\t}\n\t\t\tcurrLine++;\n\t\t\tvisibleChars = 0;\n\t\t\tatKeyPath = false;\n\t\t}\n\t\tif (!isspacechar(curr)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n\n\t// Make the folding reach the last line in the file\n\tint level = SC_FOLDLEVELBASE;\n\tif (currLine > 0) {\n\t\tint prevLevel = styler.LevelAt(currLine-1);\n\t\tif (prevLevel & SC_FOLDLEVELHEADERFLAG) {\n\t\t\tlevel += 1;\n\t\t} else {\n\t\t\tlevel = prevLevel;\n\t\t}\n\t}\n\tstyler.SetLevel(currLine, level);\n}\n\nLexerModule lmRegistry(SCLEX_REGISTRY,\n\t\t\t\t\t   LexerRegistry::LexerFactoryRegistry,\n\t\t\t\t\t   \"registry\",\n\t\t\t\t\t   RegistryWordListDesc);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexRuby.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexRuby.cxx\n ** Lexer for Ruby.\n **/\n// Copyright 2001- by Clemens Wyss <wys@helbling.ch>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n//XXX Identical to Perl, put in common area\nstatic inline bool isEOLChar(char ch) {\n    return (ch == '\\r') || (ch == '\\n');\n}\n\n#define isSafeASCII(ch) ((unsigned int)(ch) <= 127)\n// This one's redundant, but makes for more readable code\n#define isHighBitChar(ch) ((unsigned int)(ch) > 127)\n\nstatic inline bool isSafeAlpha(char ch) {\n    return (isSafeASCII(ch) && isalpha(ch)) || ch == '_';\n}\n\nstatic inline bool isSafeAlnum(char ch) {\n    return (isSafeASCII(ch) && isalnum(ch)) || ch == '_';\n}\n\nstatic inline bool isSafeAlnumOrHigh(char ch) {\n    return isHighBitChar(ch) || isalnum(ch) || ch == '_';\n}\n\nstatic inline bool isSafeDigit(char ch) {\n    return isSafeASCII(ch) && isdigit(ch);\n}\n\nstatic inline bool isSafeWordcharOrHigh(char ch) {\n    // Error: scintilla's KeyWords.h includes '.' as a word-char\n    // we want to separate things that can take methods from the\n    // methods.\n    return isHighBitChar(ch) || isalnum(ch) || ch == '_';\n}\n\nstatic bool inline iswhitespace(char ch) {\n    return ch == ' ' || ch == '\\t';\n}\n\n#define MAX_KEYWORD_LENGTH 200\n\n#define STYLE_MASK 63\n#define actual_style(style) (style & STYLE_MASK)\n\nstatic bool followsDot(Sci_PositionU pos, Accessor &styler) {\n    styler.Flush();\n    for (; pos >= 1; --pos) {\n        int style = actual_style(styler.StyleAt(pos));\n        char ch;\n        switch (style) {\n        case SCE_RB_DEFAULT:\n            ch = styler[pos];\n            if (ch == ' ' || ch == '\\t') {\n                //continue\n            } else {\n                return false;\n            }\n            break;\n\n        case SCE_RB_OPERATOR:\n            return styler[pos] == '.';\n\n        default:\n            return false;\n        }\n    }\n    return false;\n}\n\n// Forward declarations\nstatic bool keywordIsAmbiguous(const char *prevWord);\nstatic bool keywordDoStartsLoop(Sci_Position pos,\n                                Accessor &styler);\nstatic bool keywordIsModifier(const char *word,\n                              Sci_Position pos,\n                              Accessor &styler);\n\nstatic int ClassifyWordRb(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler, char *prevWord) {\n    char s[MAX_KEYWORD_LENGTH];\n    Sci_PositionU i, j;\n    Sci_PositionU lim = end - start + 1; // num chars to copy\n    if (lim >= MAX_KEYWORD_LENGTH) {\n        lim = MAX_KEYWORD_LENGTH - 1;\n    }\n    for (i = start, j = 0; j < lim; i++, j++) {\n        s[j] = styler[i];\n    }\n    s[j] = '\\0';\n    int chAttr;\n    if (0 == strcmp(prevWord, \"class\"))\n        chAttr = SCE_RB_CLASSNAME;\n    else if (0 == strcmp(prevWord, \"module\"))\n        chAttr = SCE_RB_MODULE_NAME;\n    else if (0 == strcmp(prevWord, \"def\"))\n        chAttr = SCE_RB_DEFNAME;\n    else if (keywords.InList(s) && ((start == 0) || !followsDot(start - 1, styler))) {\n        if (keywordIsAmbiguous(s)\n                && keywordIsModifier(s, start, styler)) {\n\n            // Demoted keywords are colored as keywords,\n            // but do not affect changes in indentation.\n            //\n            // Consider the word 'if':\n            // 1. <<if test ...>> : normal\n            // 2. <<stmt if test>> : demoted\n            // 3. <<lhs = if ...>> : normal: start a new indent level\n            // 4. <<obj.if = 10>> : color as identifer, since it follows '.'\n\n            chAttr = SCE_RB_WORD_DEMOTED;\n        } else {\n            chAttr = SCE_RB_WORD;\n        }\n    } else\n        chAttr = SCE_RB_IDENTIFIER;\n    styler.ColourTo(end, chAttr);\n    if (chAttr == SCE_RB_WORD) {\n        strcpy(prevWord, s);\n    } else {\n        prevWord[0] = 0;\n    }\n    return chAttr;\n}\n\n\n//XXX Identical to Perl, put in common area\nstatic bool isMatch(Accessor &styler, Sci_Position lengthDoc, Sci_Position pos, const char *val) {\n    if ((pos + static_cast<int>(strlen(val))) >= lengthDoc) {\n        return false;\n    }\n    while (*val) {\n        if (*val != styler[pos++]) {\n            return false;\n        }\n        val++;\n    }\n    return true;\n}\n\n// Do Ruby better -- find the end of the line, work back,\n// and then check for leading white space\n\n// Precondition: the here-doc target can be indented\nstatic bool lookingAtHereDocDelim(Accessor   \t&styler,\n                                  Sci_Position \tpos,\n                                  Sci_Position \tlengthDoc,\n                                  const char   *HereDocDelim)\n{\n    if (!isMatch(styler, lengthDoc, pos, HereDocDelim)) {\n        return false;\n    }\n    while (--pos > 0) {\n        char ch = styler[pos];\n        if (isEOLChar(ch)) {\n            return true;\n        } else if (ch != ' ' && ch != '\\t') {\n            return false;\n        }\n    }\n    return false;\n}\n\n//XXX Identical to Perl, put in common area\nstatic char opposite(char ch) {\n    if (ch == '(')\n        return ')';\n    if (ch == '[')\n        return ']';\n    if (ch == '{')\n        return '}';\n    if (ch == '<')\n        return '>';\n    return ch;\n}\n\n// Null transitions when we see we've reached the end\n// and need to relex the curr char.\n\nstatic void redo_char(Sci_Position &i, char &ch, char &chNext, char &chNext2,\n                      int &state) {\n    i--;\n    chNext2 = chNext;\n    chNext = ch;\n    state = SCE_RB_DEFAULT;\n}\n\nstatic void advance_char(Sci_Position &i, char &ch, char &chNext, char &chNext2) {\n    i++;\n    ch = chNext;\n    chNext = chNext2;\n}\n\n// precondition: startPos points to one after the EOL char\nstatic bool currLineContainsHereDelims(Sci_Position &startPos,\n                                       Accessor &styler) {\n    if (startPos <= 1)\n        return false;\n\n    Sci_Position pos;\n    for (pos = startPos - 1; pos > 0; pos--) {\n        char ch = styler.SafeGetCharAt(pos);\n        if (isEOLChar(ch)) {\n            // Leave the pointers where they are -- there are no\n            // here doc delims on the current line, even if\n            // the EOL isn't default style\n\n            return false;\n        } else {\n            styler.Flush();\n            if (actual_style(styler.StyleAt(pos)) == SCE_RB_HERE_DELIM) {\n                break;\n            }\n        }\n    }\n    if (pos == 0) {\n        return false;\n    }\n    // Update the pointers so we don't have to re-analyze the string\n    startPos = pos;\n    return true;\n}\n\n// This class is used by the enter and exit methods, so it needs\n// to be hoisted out of the function.\n\nclass QuoteCls {\npublic:\n    int  Count;\n    char Up;\n    char Down;\n    QuoteCls() {\n        New();\n    }\n    void New() {\n        Count = 0;\n        Up    = '\\0';\n        Down  = '\\0';\n    }\n    void Open(char u) {\n        Count++;\n        Up    = u;\n        Down  = opposite(Up);\n    }\n    QuoteCls(const QuoteCls &q) {\n        // copy constructor -- use this for copying in\n        Count = q.Count;\n        Up    = q.Up;\n        Down  = q.Down;\n    }\n    QuoteCls &operator=(const QuoteCls &q) { // assignment constructor\n        if (this != &q) {\n            Count = q.Count;\n            Up    = q.Up;\n            Down  = q.Down;\n        }\n        return *this;\n    }\n\n};\n\n\nstatic void enterInnerExpression(int  *p_inner_string_types,\n                                 int  *p_inner_expn_brace_counts,\n                                 QuoteCls *p_inner_quotes,\n                                 int  &inner_string_count,\n                                 int  &state,\n                                 int  &brace_counts,\n                                 QuoteCls curr_quote\n                                ) {\n    p_inner_string_types[inner_string_count] = state;\n    state = SCE_RB_DEFAULT;\n    p_inner_expn_brace_counts[inner_string_count] = brace_counts;\n    brace_counts = 0;\n    p_inner_quotes[inner_string_count] = curr_quote;\n    ++inner_string_count;\n}\n\nstatic void exitInnerExpression(int *p_inner_string_types,\n                                int *p_inner_expn_brace_counts,\n                                QuoteCls *p_inner_quotes,\n                                int &inner_string_count,\n                                int &state,\n                                int  &brace_counts,\n                                QuoteCls &curr_quote\n                               ) {\n    --inner_string_count;\n    state = p_inner_string_types[inner_string_count];\n    brace_counts = p_inner_expn_brace_counts[inner_string_count];\n    curr_quote = p_inner_quotes[inner_string_count];\n}\n\nstatic bool isEmptyLine(Sci_Position pos,\n                        Accessor &styler) {\n    int spaceFlags = 0;\n    Sci_Position lineCurrent = styler.GetLine(pos);\n    int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n    return (indentCurrent & SC_FOLDLEVELWHITEFLAG) != 0;\n}\n\nstatic bool RE_CanFollowKeyword(const char *keyword) {\n    if (!strcmp(keyword, \"and\")\n            || !strcmp(keyword, \"begin\")\n            || !strcmp(keyword, \"break\")\n            || !strcmp(keyword, \"case\")\n            || !strcmp(keyword, \"do\")\n            || !strcmp(keyword, \"else\")\n            || !strcmp(keyword, \"elsif\")\n            || !strcmp(keyword, \"if\")\n            || !strcmp(keyword, \"next\")\n            || !strcmp(keyword, \"return\")\n            || !strcmp(keyword, \"when\")\n            || !strcmp(keyword, \"unless\")\n            || !strcmp(keyword, \"until\")\n            || !strcmp(keyword, \"not\")\n            || !strcmp(keyword, \"or\")) {\n        return true;\n    }\n    return false;\n}\n\n// Look at chars up to but not including endPos\n// Don't look at styles in case we're looking forward\n\nstatic int skipWhitespace(Sci_Position startPos,\n                          Sci_Position endPos,\n                          Accessor &styler) {\n    for (Sci_Position i = startPos; i < endPos; i++) {\n        if (!iswhitespace(styler[i])) {\n            return i;\n        }\n    }\n    return endPos;\n}\n\n// This routine looks for false positives like\n// undef foo, <<\n// There aren't too many.\n//\n// iPrev points to the start of <<\n\nstatic bool sureThisIsHeredoc(Sci_Position iPrev,\n                              Accessor &styler,\n                              char *prevWord) {\n\n    // Not so fast, since Ruby's so dynamic.  Check the context\n    // to make sure we're OK.\n    int prevStyle;\n    Sci_Position lineStart = styler.GetLine(iPrev);\n    Sci_Position lineStartPosn = styler.LineStart(lineStart);\n    styler.Flush();\n\n    // Find the first word after some whitespace\n    Sci_Position firstWordPosn = skipWhitespace(lineStartPosn, iPrev, styler);\n    if (firstWordPosn >= iPrev) {\n        // Have something like {^     <<}\n        //XXX Look at the first previous non-comment non-white line\n        // to establish the context.  Not too likely though.\n        return true;\n    } else {\n        switch (prevStyle = styler.StyleAt(firstWordPosn)) {\n        case SCE_RB_WORD:\n        case SCE_RB_WORD_DEMOTED:\n        case SCE_RB_IDENTIFIER:\n            break;\n        default:\n            return true;\n        }\n    }\n    Sci_Position firstWordEndPosn = firstWordPosn;\n    char *dst = prevWord;\n    for (;;) {\n        if (firstWordEndPosn >= iPrev ||\n                styler.StyleAt(firstWordEndPosn) != prevStyle) {\n            *dst = 0;\n            break;\n        }\n        *dst++ = styler[firstWordEndPosn];\n        firstWordEndPosn += 1;\n    }\n    //XXX Write a style-aware thing to regex scintilla buffer objects\n    if (!strcmp(prevWord, \"undef\")\n            || !strcmp(prevWord, \"def\")\n            || !strcmp(prevWord, \"alias\")) {\n        // These keywords are what we were looking for\n        return false;\n    }\n    return true;\n}\n\n// Routine that saves us from allocating a buffer for the here-doc target\n// targetEndPos points one past the end of the current target\nstatic bool haveTargetMatch(Sci_Position currPos,\n                            Sci_Position lengthDoc,\n                            Sci_Position targetStartPos,\n                            Sci_Position targetEndPos,\n                            Accessor &styler) {\n    if (lengthDoc - currPos < targetEndPos - targetStartPos) {\n        return false;\n    }\n    Sci_Position i, j;\n    for (i = targetStartPos, j = currPos;\n            i < targetEndPos && j < lengthDoc;\n            i++, j++) {\n        if (styler[i] != styler[j]) {\n            return false;\n        }\n    }\n    return true;\n}\n\n// Finds the start position of the expression containing @p pos\n// @p min_pos should be a known expression start, e.g. the start of the line\nstatic Sci_Position findExpressionStart(Sci_Position pos,\n                                        Sci_Position min_pos,\n                                        Accessor &styler) {\n    int depth = 0;\n    for (; pos > min_pos; pos -= 1) {\n        int style = styler.StyleAt(pos - 1);\n        if (style == SCE_RB_OPERATOR) {\n            int ch = styler[pos - 1];\n            if (ch == '}' || ch == ')' || ch == ']') {\n                depth += 1;\n            } else if (ch == '{' || ch == '(' || ch == '[') {\n                if (depth == 0) {\n                    break;\n                } else {\n                    depth -= 1;\n                }\n            } else if (ch == ';' && depth == 0) {\n                break;\n            }\n        }\n    }\n    return pos;\n}\n\n// We need a check because the form\n// [identifier] <<[target]\n// is ambiguous.  The Ruby lexer/parser resolves it by\n// looking to see if [identifier] names a variable or a\n// function.  If it's the first, it's the start of a here-doc.\n// If it's a var, it's an operator.  This lexer doesn't\n// maintain a symbol table, so it looks ahead to see what's\n// going on, in cases where we have\n// ^[white-space]*[identifier([.|::]identifier)*][white-space]*<<[target]\n//\n// If there's no occurrence of [target] on a line, assume we don't.\n\n// return true == yes, we have no heredocs\n\nstatic bool sureThisIsNotHeredoc(Sci_Position lt2StartPos,\n                                 Accessor &styler) {\n    int prevStyle;\n    // Use full document, not just part we're styling\n    Sci_Position lengthDoc = styler.Length();\n    Sci_Position lineStart = styler.GetLine(lt2StartPos);\n    Sci_Position lineStartPosn = styler.LineStart(lineStart);\n    styler.Flush();\n    const bool definitely_not_a_here_doc = true;\n    const bool looks_like_a_here_doc = false;\n\n    // find the expression start rather than the line start\n    Sci_Position exprStartPosn = findExpressionStart(lt2StartPos, lineStartPosn, styler);\n\n    // Find the first word after some whitespace\n    Sci_Position firstWordPosn = skipWhitespace(exprStartPosn, lt2StartPos, styler);\n    if (firstWordPosn >= lt2StartPos) {\n        return definitely_not_a_here_doc;\n    }\n    prevStyle = styler.StyleAt(firstWordPosn);\n    // If we have '<<' following a keyword, it's not a heredoc\n    if (prevStyle != SCE_RB_IDENTIFIER\n            && prevStyle != SCE_RB_SYMBOL\n            && prevStyle != SCE_RB_INSTANCE_VAR\n            && prevStyle != SCE_RB_CLASS_VAR) {\n        return definitely_not_a_here_doc;\n    }\n    int newStyle = prevStyle;\n    // Some compilers incorrectly warn about uninit newStyle\n    for (firstWordPosn += 1; firstWordPosn <= lt2StartPos; firstWordPosn += 1) {\n        // Inner loop looks at the name\n        for (; firstWordPosn <= lt2StartPos; firstWordPosn += 1) {\n            newStyle = styler.StyleAt(firstWordPosn);\n            if (newStyle != prevStyle) {\n                break;\n            }\n        }\n        // Do we have '::' or '.'?\n        if (firstWordPosn < lt2StartPos && newStyle == SCE_RB_OPERATOR) {\n            char ch = styler[firstWordPosn];\n            if (ch == '.') {\n                // yes\n            } else if (ch == ':') {\n                if (styler.StyleAt(++firstWordPosn) != SCE_RB_OPERATOR) {\n                    return definitely_not_a_here_doc;\n                } else if (styler[firstWordPosn] != ':') {\n                    return definitely_not_a_here_doc;\n                }\n            } else {\n                break;\n            }\n        } else {\n            break;\n        }\n        // on second and next passes, only identifiers may appear since\n        // class and instance variable are private\n        prevStyle = SCE_RB_IDENTIFIER;\n    }\n    // Skip next batch of white-space\n    firstWordPosn = skipWhitespace(firstWordPosn, lt2StartPos, styler);\n    // possible symbol for an implicit hash argument\n    if (firstWordPosn < lt2StartPos && styler.StyleAt(firstWordPosn) == SCE_RB_SYMBOL) {\n        for (; firstWordPosn <= lt2StartPos; firstWordPosn += 1) {\n            if (styler.StyleAt(firstWordPosn) != SCE_RB_SYMBOL) {\n                break;\n            }\n        }\n        // Skip next batch of white-space\n        firstWordPosn = skipWhitespace(firstWordPosn, lt2StartPos, styler);\n    }\n    if (firstWordPosn != lt2StartPos) {\n        // Have [[^ws[identifier]ws[*something_else*]ws<<\n        return definitely_not_a_here_doc;\n    }\n    // OK, now 'j' will point to the current spot moving ahead\n    Sci_Position j = firstWordPosn + 1;\n    if (styler.StyleAt(j) != SCE_RB_OPERATOR || styler[j] != '<') {\n        // This shouldn't happen\n        return definitely_not_a_here_doc;\n    }\n    Sci_Position nextLineStartPosn = styler.LineStart(lineStart + 1);\n    if (nextLineStartPosn >= lengthDoc) {\n        return definitely_not_a_here_doc;\n    }\n    j = skipWhitespace(j + 1, nextLineStartPosn, styler);\n    if (j >= lengthDoc) {\n        return definitely_not_a_here_doc;\n    }\n    bool allow_indent;\n    Sci_Position target_start, target_end;\n    // From this point on no more styling, since we're looking ahead\n    if (styler[j] == '-') {\n        allow_indent = true;\n        j++;\n    } else {\n        allow_indent = false;\n    }\n\n    // Allow for quoted targets.\n    char target_quote = 0;\n    switch (styler[j]) {\n    case '\\'':\n    case '\"':\n    case '`':\n        target_quote = styler[j];\n        j += 1;\n    }\n\n    if (isSafeAlnum(styler[j])) {\n        // Init target_end because some compilers think it won't\n        // be initialized by the time it's used\n        target_start = target_end = j;\n        j++;\n    } else {\n        return definitely_not_a_here_doc;\n    }\n    for (; j < lengthDoc; j++) {\n        if (!isSafeAlnum(styler[j])) {\n            if (target_quote && styler[j] != target_quote) {\n                // unquoted end\n                return definitely_not_a_here_doc;\n            }\n\n            // And for now make sure that it's a newline\n            // don't handle arbitrary expressions yet\n\n            target_end = j;\n            if (target_quote) {\n                // Now we can move to the character after the string delimiter.\n                j += 1;\n            }\n            j = skipWhitespace(j, lengthDoc, styler);\n            if (j >= lengthDoc) {\n                return definitely_not_a_here_doc;\n            } else {\n                char ch = styler[j];\n                if (ch == '#' || isEOLChar(ch)) {\n                    // This is OK, so break and continue;\n                    break;\n                } else {\n                    return definitely_not_a_here_doc;\n                }\n            }\n        }\n    }\n\n    // Just look at the start of each line\n    Sci_Position last_line = styler.GetLine(lengthDoc - 1);\n    // But don't go too far\n    if (last_line > lineStart + 50) {\n        last_line = lineStart + 50;\n    }\n    for (Sci_Position line_num = lineStart + 1; line_num <= last_line; line_num++) {\n        if (allow_indent) {\n            j = skipWhitespace(styler.LineStart(line_num), lengthDoc, styler);\n        } else {\n            j = styler.LineStart(line_num);\n        }\n        // target_end is one past the end\n        if (haveTargetMatch(j, lengthDoc, target_start, target_end, styler)) {\n            // We got it\n            return looks_like_a_here_doc;\n        }\n    }\n    return definitely_not_a_here_doc;\n}\n\n//todo: if we aren't looking at a stdio character,\n// move to the start of the first line that is not in a\n// multi-line construct\n\nstatic void synchronizeDocStart(Sci_PositionU &startPos,\n                                Sci_Position &length,\n                                int &initStyle,\n                                Accessor &styler,\n                                bool skipWhiteSpace=false) {\n\n    styler.Flush();\n    int style = actual_style(styler.StyleAt(startPos));\n    switch (style) {\n    case SCE_RB_STDIN:\n    case SCE_RB_STDOUT:\n    case SCE_RB_STDERR:\n        // Don't do anything else with these.\n        return;\n    }\n\n    Sci_Position pos = startPos;\n    // Quick way to characterize each line\n    Sci_Position lineStart;\n    for (lineStart = styler.GetLine(pos); lineStart > 0; lineStart--) {\n        // Now look at the style before the previous line's EOL\n        pos = styler.LineStart(lineStart) - 1;\n        if (pos <= 10) {\n            lineStart = 0;\n            break;\n        }\n        char ch = styler.SafeGetCharAt(pos);\n        char chPrev = styler.SafeGetCharAt(pos - 1);\n        if (ch == '\\n' && chPrev == '\\r') {\n            pos--;\n        }\n        if (styler.SafeGetCharAt(pos - 1) == '\\\\') {\n            // Continuation line -- keep going\n        } else if (actual_style(styler.StyleAt(pos)) != SCE_RB_DEFAULT) {\n            // Part of multi-line construct -- keep going\n        } else if (currLineContainsHereDelims(pos, styler)) {\n            // Keep going, with pos and length now pointing\n            // at the end of the here-doc delimiter\n        } else if (skipWhiteSpace && isEmptyLine(pos, styler)) {\n            // Keep going\n        } else {\n            break;\n        }\n    }\n    pos = styler.LineStart(lineStart);\n    length += (startPos - pos);\n    startPos = pos;\n    initStyle = SCE_RB_DEFAULT;\n}\n\nstatic void ColouriseRbDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *keywordlists[], Accessor &styler) {\n\n    // Lexer for Ruby often has to backtrack to start of current style to determine\n    // which characters are being used as quotes, how deeply nested is the\n    // start position and what the termination string is for here documents\n\n    WordList &keywords = *keywordlists[0];\n\n    class HereDocCls {\n    public:\n        int State;\n        // States\n        // 0: '<<' encountered\n        // 1: collect the delimiter\n        // 1b: text between the end of the delimiter and the EOL\n        // 2: here doc text (lines after the delimiter)\n        char Quote;\t\t// the char after '<<'\n        bool Quoted;\t\t// true if Quote in ('\\'','\"','`')\n        int DelimiterLength;\t// strlen(Delimiter)\n        char Delimiter[256];\t// the Delimiter, limit of 256: from Perl\n        bool CanBeIndented;\n        HereDocCls() {\n            State = 0;\n            DelimiterLength = 0;\n            Delimiter[0] = '\\0';\n            CanBeIndented = false;\n        }\n    };\n    HereDocCls HereDoc;\n\n    QuoteCls Quote;\n\n    int numDots = 0;  // For numbers --\n    // Don't start lexing in the middle of a num\n\n    synchronizeDocStart(startPos, length, initStyle, styler, // ref args\n                        false);\n\n    bool preferRE = true;\n    int state = initStyle;\n    Sci_Position lengthDoc = startPos + length;\n\n    char prevWord[MAX_KEYWORD_LENGTH + 1]; // 1 byte for zero\n    prevWord[0] = '\\0';\n    if (length == 0)\n        return;\n\n    char chPrev = styler.SafeGetCharAt(startPos - 1);\n    char chNext = styler.SafeGetCharAt(startPos);\n    bool is_real_number = true;   // Differentiate between constants and ?-sequences.\n    styler.StartAt(startPos);\n    styler.StartSegment(startPos);\n\n    static int q_states[] = {SCE_RB_STRING_Q,\n                             SCE_RB_STRING_QQ,\n                             SCE_RB_STRING_QR,\n                             SCE_RB_STRING_QW,\n                             SCE_RB_STRING_QW,\n                             SCE_RB_STRING_QX\n                            };\n    static const char *q_chars = \"qQrwWx\";\n\n    // In most cases a value of 2 should be ample for the code in the\n    // Ruby library, and the code the user is likely to enter.\n    // For example,\n    // fu_output_message \"mkdir #{options[:mode] ? ('-m %03o ' % options[:mode]) : ''}#{list.join ' '}\"\n    //     if options[:verbose]\n    // from fileutils.rb nests to a level of 2\n    // If the user actually hits a 6th occurrence of '#{' in a double-quoted\n    // string (including regex'es, %Q, %<sym>, %w, and other strings\n    // that interpolate), it will stay as a string.  The problem with this\n    // is that quotes might flip, a 7th '#{' will look like a comment,\n    // and code-folding might be wrong.\n\n    // If anyone runs into this problem, I recommend raising this\n    // value slightly higher to replacing the fixed array with a linked\n    // list.  Keep in mind this code will be called every time the lexer\n    // is invoked.\n\n#define INNER_STRINGS_MAX_COUNT 5\n    // These vars track our instances of \"...#{,,,%Q<..#{,,,}...>,,,}...\"\n    int inner_string_types[INNER_STRINGS_MAX_COUNT];\n    // Track # braces when we push a new #{ thing\n    int inner_expn_brace_counts[INNER_STRINGS_MAX_COUNT];\n    QuoteCls inner_quotes[INNER_STRINGS_MAX_COUNT];\n    int inner_string_count = 0;\n    int brace_counts = 0;   // Number of #{ ... } things within an expression\n\n    Sci_Position i;\n    for (i = 0; i < INNER_STRINGS_MAX_COUNT; i++) {\n        inner_string_types[i] = 0;\n        inner_expn_brace_counts[i] = 0;\n    }\n    for (i = startPos; i < lengthDoc; i++) {\n        char ch = chNext;\n        chNext = styler.SafeGetCharAt(i + 1);\n        char chNext2 = styler.SafeGetCharAt(i + 2);\n\n        if (styler.IsLeadByte(ch)) {\n            chNext = chNext2;\n            chPrev = ' ';\n            i += 1;\n            continue;\n        }\n\n        // skip on DOS/Windows\n        //No, don't, because some things will get tagged on,\n        // so we won't recognize keywords, for example\n#if 0\n        if (ch == '\\r' && chNext == '\\n') {\n            continue;\n        }\n#endif\n\n        if (HereDoc.State == 1 && isEOLChar(ch)) {\n            // Begin of here-doc (the line after the here-doc delimiter):\n            HereDoc.State = 2;\n            styler.ColourTo(i-1, state);\n            // Don't check for a missing quote, just jump into\n            // the here-doc state\n            state = SCE_RB_HERE_Q;\n        }\n\n        // Regular transitions\n        if (state == SCE_RB_DEFAULT) {\n            if (isSafeDigit(ch)) {\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_NUMBER;\n                is_real_number = true;\n                numDots = 0;\n            } else if (isHighBitChar(ch) || iswordstart(ch)) {\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_WORD;\n            } else if (ch == '#') {\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_COMMENTLINE;\n            } else if (ch == '=') {\n                // =begin indicates the start of a comment (doc) block\n                if ((i == 0 || isEOLChar(chPrev))\n                        && chNext == 'b'\n                        && styler.SafeGetCharAt(i + 2) == 'e'\n                        && styler.SafeGetCharAt(i + 3) == 'g'\n                        && styler.SafeGetCharAt(i + 4) == 'i'\n                        && styler.SafeGetCharAt(i + 5) == 'n'\n                        && !isSafeWordcharOrHigh(styler.SafeGetCharAt(i + 6))) {\n                    styler.ColourTo(i - 1, state);\n                    state = SCE_RB_POD;\n                } else {\n                    styler.ColourTo(i - 1, state);\n                    styler.ColourTo(i, SCE_RB_OPERATOR);\n                    preferRE = true;\n                }\n            } else if (ch == '\"') {\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_STRING;\n                Quote.New();\n                Quote.Open(ch);\n            } else if (ch == '\\'') {\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_CHARACTER;\n                Quote.New();\n                Quote.Open(ch);\n            } else if (ch == '`') {\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_BACKTICKS;\n                Quote.New();\n                Quote.Open(ch);\n            } else if (ch == '@') {\n                // Instance or class var\n                styler.ColourTo(i - 1, state);\n                if (chNext == '@') {\n                    state = SCE_RB_CLASS_VAR;\n                    advance_char(i, ch, chNext, chNext2); // pass by ref\n                } else {\n                    state = SCE_RB_INSTANCE_VAR;\n                }\n            } else if (ch == '$') {\n                // Check for a builtin global\n                styler.ColourTo(i - 1, state);\n                // Recognize it bit by bit\n                state = SCE_RB_GLOBAL;\n            } else if (ch == '/' && preferRE) {\n                // Ambigous operator\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_REGEX;\n                Quote.New();\n                Quote.Open(ch);\n            } else if (ch == '<' && chNext == '<' && chNext2 != '=') {\n\n                // Recognise the '<<' symbol - either a here document or a binary op\n                styler.ColourTo(i - 1, state);\n                i++;\n                chNext = chNext2;\n                styler.ColourTo(i, SCE_RB_OPERATOR);\n\n                if (!(strchr(\"\\\"\\'`_-\", chNext2) || isSafeAlpha(chNext2))) {\n                    // It's definitely not a here-doc,\n                    // based on Ruby's lexer/parser in the\n                    // heredoc_identifier routine.\n                    // Nothing else to do.\n                } else if (preferRE) {\n                    if (sureThisIsHeredoc(i - 1, styler, prevWord)) {\n                        state = SCE_RB_HERE_DELIM;\n                        HereDoc.State = 0;\n                    }\n                    // else leave it in default state\n                } else {\n                    if (sureThisIsNotHeredoc(i - 1, styler)) {\n                        // leave state as default\n                        // We don't have all the heuristics Perl has for indications\n                        // of a here-doc, because '<<' is overloadable and used\n                        // for so many other classes.\n                    } else {\n                        state = SCE_RB_HERE_DELIM;\n                        HereDoc.State = 0;\n                    }\n                }\n                preferRE = (state != SCE_RB_HERE_DELIM);\n            } else if (ch == ':') {\n                styler.ColourTo(i - 1, state);\n                if (chNext == ':') {\n                    // Mark \"::\" as an operator, not symbol start\n                    styler.ColourTo(i + 1, SCE_RB_OPERATOR);\n                    advance_char(i, ch, chNext, chNext2); // pass by ref\n                    state = SCE_RB_DEFAULT;\n                    preferRE = false;\n                } else if (isSafeWordcharOrHigh(chNext)) {\n                    state = SCE_RB_SYMBOL;\n                } else if ((chNext == '@' || chNext == '$') &&\n                           isSafeWordcharOrHigh(chNext2)) {\n                    // instance and global variable followed by an identifier\n                    advance_char(i, ch, chNext, chNext2);\n                    state = SCE_RB_SYMBOL;\n                } else if (((chNext == '@' && chNext2 == '@')  ||\n                            (chNext == '$' && chNext2 == '-')) &&\n                           isSafeWordcharOrHigh(styler.SafeGetCharAt(i+3))) {\n                    // class variables and special global variable \"$-IDENTCHAR\"\n                    state = SCE_RB_SYMBOL;\n                    // $-IDENTCHAR doesn't continue past the IDENTCHAR\n                    if (chNext == '$') {\n                        styler.ColourTo(i+3, SCE_RB_SYMBOL);\n                        state = SCE_RB_DEFAULT;\n                    }\n                    i += 3;\n                    ch = styler.SafeGetCharAt(i);\n                    chNext = styler.SafeGetCharAt(i+1);\n                } else if (chNext == '$' && strchr(\"_~*$?!@/\\\\;,.=:<>\\\"&`'+\", chNext2)) {\n                    // single-character special global variables\n                    i += 2;\n                    ch = chNext2;\n                    chNext = styler.SafeGetCharAt(i+1);\n                    styler.ColourTo(i, SCE_RB_SYMBOL);\n                    state = SCE_RB_DEFAULT;\n                } else if (strchr(\"[*!~+-*/%=<>&^|\", chNext)) {\n                    // Do the operator analysis in-line, looking ahead\n                    // Based on the table in pickaxe 2nd ed., page 339\n                    bool doColoring = true;\n                    switch (chNext) {\n                    case '[':\n                        if (chNext2 == ']') {\n                            char ch_tmp = styler.SafeGetCharAt(i + 3);\n                            if (ch_tmp == '=') {\n                                i += 3;\n                                ch = ch_tmp;\n                                chNext = styler.SafeGetCharAt(i + 1);\n                            } else {\n                                i += 2;\n                                ch = chNext2;\n                                chNext = ch_tmp;\n                            }\n                        } else {\n                            doColoring = false;\n                        }\n                        break;\n\n                    case '*':\n                        if (chNext2 == '*') {\n                            i += 2;\n                            ch = chNext2;\n                            chNext = styler.SafeGetCharAt(i + 1);\n                        } else {\n                            advance_char(i, ch, chNext, chNext2);\n                        }\n                        break;\n\n                    case '!':\n                        if (chNext2 == '=' || chNext2 == '~') {\n                            i += 2;\n                            ch = chNext2;\n                            chNext = styler.SafeGetCharAt(i + 1);\n                        } else {\n                            advance_char(i, ch, chNext, chNext2);\n                        }\n                        break;\n\n                    case '<':\n                        if (chNext2 == '<') {\n                            i += 2;\n                            ch = chNext2;\n                            chNext = styler.SafeGetCharAt(i + 1);\n                        } else if (chNext2 == '=') {\n                            char ch_tmp = styler.SafeGetCharAt(i + 3);\n                            if (ch_tmp == '>') {  // <=> operator\n                                i += 3;\n                                ch = ch_tmp;\n                                chNext = styler.SafeGetCharAt(i + 1);\n                            } else {\n                                i += 2;\n                                ch = chNext2;\n                                chNext = ch_tmp;\n                            }\n                        } else {\n                            advance_char(i, ch, chNext, chNext2);\n                        }\n                        break;\n\n                    default:\n                        // Simple one-character operators\n                        advance_char(i, ch, chNext, chNext2);\n                        break;\n                    }\n                    if (doColoring) {\n                        styler.ColourTo(i, SCE_RB_SYMBOL);\n                        state = SCE_RB_DEFAULT;\n                    }\n                } else if (!preferRE) {\n                    // Don't color symbol strings (yet)\n                    // Just color the \":\" and color rest as string\n                    styler.ColourTo(i, SCE_RB_SYMBOL);\n                    state = SCE_RB_DEFAULT;\n                } else {\n                    styler.ColourTo(i, SCE_RB_OPERATOR);\n                    state = SCE_RB_DEFAULT;\n                    preferRE = true;\n                }\n            } else if (ch == '%') {\n                styler.ColourTo(i - 1, state);\n                bool have_string = false;\n                if (strchr(q_chars, chNext) && !isSafeWordcharOrHigh(chNext2)) {\n                    Quote.New();\n                    const char *hit = strchr(q_chars, chNext);\n                    if (hit != NULL) {\n                        state = q_states[hit - q_chars];\n                        Quote.Open(chNext2);\n                        i += 2;\n                        ch = chNext2;\n                        chNext = styler.SafeGetCharAt(i + 1);\n                        have_string = true;\n                    }\n                } else if (preferRE && !isSafeWordcharOrHigh(chNext)) {\n                    // Ruby doesn't allow high bit chars here,\n                    // but the editor host might\n                    Quote.New();\n                    state = SCE_RB_STRING_QQ;\n                    Quote.Open(chNext);\n                    advance_char(i, ch, chNext, chNext2); // pass by ref\n                    have_string = true;\n                } else if (!isSafeWordcharOrHigh(chNext) && !iswhitespace(chNext) && !isEOLChar(chNext)) {\n                    // Ruby doesn't allow high bit chars here,\n                    // but the editor host might\n                    Quote.New();\n                    state = SCE_RB_STRING_QQ;\n                    Quote.Open(chNext);\n                    advance_char(i, ch, chNext, chNext2); // pass by ref\n                    have_string = true;\n                }\n                if (!have_string) {\n                    styler.ColourTo(i, SCE_RB_OPERATOR);\n                    // stay in default\n                    preferRE = true;\n                }\n            } else if (ch == '?') {\n                styler.ColourTo(i - 1, state);\n                if (iswhitespace(chNext) || chNext == '\\n' || chNext == '\\r') {\n                    styler.ColourTo(i, SCE_RB_OPERATOR);\n                } else {\n                    // It's the start of a character code escape sequence\n                    // Color it as a number.\n                    state = SCE_RB_NUMBER;\n                    is_real_number = false;\n                }\n            } else if (isoperator(ch) || ch == '.') {\n                styler.ColourTo(i - 1, state);\n                styler.ColourTo(i, SCE_RB_OPERATOR);\n                // If we're ending an expression or block,\n                // assume it ends an object, and the ambivalent\n                // constructs are binary operators\n                //\n                // So if we don't have one of these chars,\n                // we aren't ending an object exp'n, and ops\n                // like : << / are unary operators.\n\n                if (ch == '{') {\n                    ++brace_counts;\n                    preferRE = true;\n                } else if (ch == '}' && --brace_counts < 0\n                           && inner_string_count > 0) {\n                    styler.ColourTo(i, SCE_RB_OPERATOR);\n                    exitInnerExpression(inner_string_types,\n                                        inner_expn_brace_counts,\n                                        inner_quotes,\n                                        inner_string_count,\n                                        state, brace_counts, Quote);\n                } else {\n                    preferRE = (strchr(\")}].\", ch) == NULL);\n                }\n                // Stay in default state\n            } else if (isEOLChar(ch)) {\n                // Make sure it's a true line-end, with no backslash\n                if ((ch == '\\r' || (ch == '\\n' && chPrev != '\\r'))\n                        && chPrev != '\\\\') {\n                    // Assume we've hit the end of the statement.\n                    preferRE = true;\n                }\n            }\n        } else if (state == SCE_RB_WORD) {\n            if (ch == '.' || !isSafeWordcharOrHigh(ch)) {\n                // Words include x? in all contexts,\n                // and <letters>= after either 'def' or a dot\n                // Move along until a complete word is on our left\n\n                // Default accessor treats '.' as word-chars,\n                // but we don't for now.\n\n                if (ch == '='\n                        && isSafeWordcharOrHigh(chPrev)\n                        && (chNext == '('\n                            || strchr(\" \\t\\n\\r\", chNext) != NULL)\n                        && (!strcmp(prevWord, \"def\")\n                            || followsDot(styler.GetStartSegment(), styler))) {\n                    // <name>= is a name only when being def'd -- Get it the next time\n                    // This means that <name>=<name> is always lexed as\n                    // <name>, (op, =), <name>\n                } else if (ch == ':'\n                           && isSafeWordcharOrHigh(chPrev)\n                           && strchr(\" \\t\\n\\r\", chNext) != NULL) {\n                    state = SCE_RB_SYMBOL;\n                } else if ((ch == '?' || ch == '!')\n                           && isSafeWordcharOrHigh(chPrev)\n                           && !isSafeWordcharOrHigh(chNext)) {\n                    // <name>? is a name -- Get it the next time\n                    // But <name>?<name> is always lexed as\n                    // <name>, (op, ?), <name>\n                    // Same with <name>! to indicate a method that\n                    // modifies its target\n                } else if (isEOLChar(ch)\n                           && isMatch(styler, lengthDoc, i - 7, \"__END__\")) {\n                    styler.ColourTo(i, SCE_RB_DATASECTION);\n                    state = SCE_RB_DATASECTION;\n                    // No need to handle this state -- we'll just move to the end\n                    preferRE = false;\n                } else {\n                    Sci_Position wordStartPos = styler.GetStartSegment();\n                    int word_style = ClassifyWordRb(wordStartPos, i - 1, keywords, styler, prevWord);\n                    switch (word_style) {\n                    case SCE_RB_WORD:\n                        preferRE = RE_CanFollowKeyword(prevWord);\n                        break;\n\n                    case SCE_RB_WORD_DEMOTED:\n                        preferRE = true;\n                        break;\n\n                    case SCE_RB_IDENTIFIER:\n                        if (isMatch(styler, lengthDoc, wordStartPos, \"print\")) {\n                            preferRE = true;\n                        } else if (isEOLChar(ch)) {\n                            preferRE = true;\n                        } else {\n                            preferRE = false;\n                        }\n                        break;\n                    default:\n                        preferRE = false;\n                    }\n                    if (ch == '.') {\n                        // We might be redefining an operator-method\n                        preferRE = false;\n                    }\n                    // And if it's the first\n                    redo_char(i, ch, chNext, chNext2, state); // pass by ref\n                }\n            }\n        } else if (state == SCE_RB_NUMBER) {\n            if (!is_real_number) {\n                if (ch != '\\\\') {\n                    styler.ColourTo(i, state);\n                    state = SCE_RB_DEFAULT;\n                    preferRE = false;\n                } else if (strchr(\"\\\\ntrfvaebs\", chNext)) {\n                    // Terminal escape sequence -- handle it next time\n                    // Nothing more to do this time through the loop\n                } else if (chNext == 'C' || chNext == 'M') {\n                    if (chNext2 != '-') {\n                        // \\C or \\M ends the sequence -- handle it next time\n                    } else {\n                        // Move from abc?\\C-x\n                        //               ^\n                        // to\n                        //                 ^\n                        i += 2;\n                        ch = chNext2;\n                        chNext = styler.SafeGetCharAt(i + 1);\n                    }\n                } else if (chNext == 'c') {\n                    // Stay here, \\c is a combining sequence\n                    advance_char(i, ch, chNext, chNext2); // pass by ref\n                } else {\n                    // ?\\x, including ?\\\\ is final.\n                    styler.ColourTo(i + 1, state);\n                    state = SCE_RB_DEFAULT;\n                    preferRE = false;\n                    advance_char(i, ch, chNext, chNext2);\n                }\n            } else if (isSafeAlnumOrHigh(ch) || ch == '_') {\n                // Keep going\n            } else if (ch == '.' && chNext == '.') {\n                ++numDots;\n                styler.ColourTo(i - 1, state);\n                redo_char(i, ch, chNext, chNext2, state); // pass by ref\n            } else if (ch == '.' && ++numDots == 1) {\n                // Keep going\n            } else {\n                styler.ColourTo(i - 1, state);\n                redo_char(i, ch, chNext, chNext2, state); // pass by ref\n                preferRE = false;\n            }\n        } else if (state == SCE_RB_COMMENTLINE) {\n            if (isEOLChar(ch)) {\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_DEFAULT;\n                // Use whatever setting we had going into the comment\n            }\n        } else if (state == SCE_RB_HERE_DELIM) {\n            // See the comment for SCE_RB_HERE_DELIM in LexPerl.cxx\n            // Slightly different: if we find an immediate '-',\n            // the target can appear indented.\n\n            if (HereDoc.State == 0) { // '<<' encountered\n                HereDoc.State = 1;\n                HereDoc.DelimiterLength = 0;\n                if (ch == '-') {\n                    HereDoc.CanBeIndented = true;\n                    advance_char(i, ch, chNext, chNext2); // pass by ref\n                } else {\n                    HereDoc.CanBeIndented = false;\n                }\n                if (isEOLChar(ch)) {\n                    // Bail out of doing a here doc if there's no target\n                    state = SCE_RB_DEFAULT;\n                    preferRE = false;\n                } else {\n                    HereDoc.Quote = ch;\n\n                    if (ch == '\\'' || ch == '\"' || ch == '`') {\n                        HereDoc.Quoted = true;\n                        HereDoc.Delimiter[0] = '\\0';\n                    } else {\n                        HereDoc.Quoted = false;\n                        HereDoc.Delimiter[0] = ch;\n                        HereDoc.Delimiter[1] = '\\0';\n                        HereDoc.DelimiterLength = 1;\n                    }\n                }\n            } else if (HereDoc.State == 1) { // collect the delimiter\n                if (isEOLChar(ch)) {\n                    // End the quote now, and go back for more\n                    styler.ColourTo(i - 1, state);\n                    state = SCE_RB_DEFAULT;\n                    i--;\n                    chNext = ch;\n                    preferRE = false;\n                } else if (HereDoc.Quoted) {\n                    if (ch == HereDoc.Quote) { // closing quote => end of delimiter\n                        styler.ColourTo(i, state);\n                        state = SCE_RB_DEFAULT;\n                        preferRE = false;\n                    } else {\n                        if (ch == '\\\\' && !isEOLChar(chNext)) {\n                            advance_char(i, ch, chNext, chNext2);\n                        }\n                        HereDoc.Delimiter[HereDoc.DelimiterLength++] = ch;\n                        HereDoc.Delimiter[HereDoc.DelimiterLength] = '\\0';\n                    }\n                } else { // an unquoted here-doc delimiter\n                    if (isSafeAlnumOrHigh(ch) || ch == '_') {\n                        HereDoc.Delimiter[HereDoc.DelimiterLength++] = ch;\n                        HereDoc.Delimiter[HereDoc.DelimiterLength] = '\\0';\n                    } else {\n                        styler.ColourTo(i - 1, state);\n                        redo_char(i, ch, chNext, chNext2, state);\n                        preferRE = false;\n                    }\n                }\n                if (HereDoc.DelimiterLength >= static_cast<int>(sizeof(HereDoc.Delimiter)) - 1) {\n                    styler.ColourTo(i - 1, state);\n                    state = SCE_RB_ERROR;\n                    preferRE = false;\n                }\n            }\n        } else if (state == SCE_RB_HERE_Q) {\n            // Not needed: HereDoc.State == 2\n            // Indentable here docs: look backwards\n            // Non-indentable: look forwards, like in Perl\n            //\n            // Why: so we can quickly resolve things like <<-\" abc\"\n\n            if (!HereDoc.CanBeIndented) {\n                if (isEOLChar(chPrev)\n                        && isMatch(styler, lengthDoc, i, HereDoc.Delimiter)) {\n                    styler.ColourTo(i - 1, state);\n                    i += HereDoc.DelimiterLength - 1;\n                    chNext = styler.SafeGetCharAt(i + 1);\n                    if (isEOLChar(chNext)) {\n                        styler.ColourTo(i, SCE_RB_HERE_DELIM);\n                        state = SCE_RB_DEFAULT;\n                        HereDoc.State = 0;\n                        preferRE = false;\n                    }\n                    // Otherwise we skipped through the here doc faster.\n                }\n            } else if (isEOLChar(chNext)\n                       && lookingAtHereDocDelim(styler,\n                                                i - HereDoc.DelimiterLength + 1,\n                                                lengthDoc,\n                                                HereDoc.Delimiter)) {\n                styler.ColourTo(i - 1 - HereDoc.DelimiterLength, state);\n                styler.ColourTo(i, SCE_RB_HERE_DELIM);\n                state = SCE_RB_DEFAULT;\n                preferRE = false;\n                HereDoc.State = 0;\n            }\n        } else if (state == SCE_RB_CLASS_VAR\n                   || state == SCE_RB_INSTANCE_VAR\n                   || state == SCE_RB_SYMBOL) {\n            if (state == SCE_RB_SYMBOL &&\n                    // FIDs suffices '?' and '!'\n                    (((ch == '!' || ch == '?') && chNext != '=') ||\n                     // identifier suffix '='\n                     (ch == '=' && (chNext != '~' && chNext != '>' &&\n                                    (chNext != '=' || chNext2 == '>'))))) {\n                styler.ColourTo(i, state);\n                state = SCE_RB_DEFAULT;\n                preferRE = false;\n            } else if (!isSafeWordcharOrHigh(ch)) {\n                styler.ColourTo(i - 1, state);\n                redo_char(i, ch, chNext, chNext2, state); // pass by ref\n                preferRE = false;\n            }\n        } else if (state == SCE_RB_GLOBAL) {\n            if (!isSafeWordcharOrHigh(ch)) {\n                // handle special globals here as well\n                if (chPrev == '$') {\n                    if (ch == '-') {\n                        // Include the next char, like $-a\n                        advance_char(i, ch, chNext, chNext2);\n                    }\n                    styler.ColourTo(i, state);\n                    state = SCE_RB_DEFAULT;\n                } else {\n                    styler.ColourTo(i - 1, state);\n                    redo_char(i, ch, chNext, chNext2, state); // pass by ref\n                }\n                preferRE = false;\n            }\n        } else if (state == SCE_RB_POD) {\n            // PODs end with ^=end\\s, -- any whitespace can follow =end\n            if (strchr(\" \\t\\n\\r\", ch) != NULL\n                    && i > 5\n                    && isEOLChar(styler[i - 5])\n                    && isMatch(styler, lengthDoc, i - 4, \"=end\")) {\n                styler.ColourTo(i - 1, state);\n                state = SCE_RB_DEFAULT;\n                preferRE = false;\n            }\n        } else if (state == SCE_RB_REGEX || state == SCE_RB_STRING_QR) {\n            if (ch == '\\\\' && Quote.Up != '\\\\') {\n                // Skip one\n                advance_char(i, ch, chNext, chNext2);\n            } else if (ch == Quote.Down) {\n                Quote.Count--;\n                if (Quote.Count == 0) {\n                    // Include the options\n                    while (isSafeAlpha(chNext)) {\n                        i++;\n                        ch = chNext;\n                        chNext = styler.SafeGetCharAt(i + 1);\n                    }\n                    styler.ColourTo(i, state);\n                    state = SCE_RB_DEFAULT;\n                    preferRE = false;\n                }\n            } else if (ch == Quote.Up) {\n                // Only if close quoter != open quoter\n                Quote.Count++;\n\n            } else if (ch == '#') {\n                if (chNext == '{'\n                        && inner_string_count < INNER_STRINGS_MAX_COUNT) {\n                    // process #{ ... }\n                    styler.ColourTo(i - 1, state);\n                    styler.ColourTo(i + 1, SCE_RB_OPERATOR);\n                    enterInnerExpression(inner_string_types,\n                                         inner_expn_brace_counts,\n                                         inner_quotes,\n                                         inner_string_count,\n                                         state,\n                                         brace_counts,\n                                         Quote);\n                    preferRE = true;\n                    // Skip one\n                    advance_char(i, ch, chNext, chNext2);\n                } else {\n                    //todo: distinguish comments from pound chars\n                    // for now, handle as comment\n                    styler.ColourTo(i - 1, state);\n                    bool inEscape = false;\n                    while (++i < lengthDoc) {\n                        ch = styler.SafeGetCharAt(i);\n                        if (ch == '\\\\') {\n                            inEscape = true;\n                        } else if (isEOLChar(ch)) {\n                            // Comment inside a regex\n                            styler.ColourTo(i - 1, SCE_RB_COMMENTLINE);\n                            break;\n                        } else if (inEscape) {\n                            inEscape = false;  // don't look at char\n                        } else if (ch == Quote.Down) {\n                            // Have the regular handler deal with this\n                            // to get trailing modifiers.\n                            i--;\n                            ch = styler[i];\n                            break;\n                        }\n                    }\n                    chNext = styler.SafeGetCharAt(i + 1);\n                }\n            }\n            // Quotes of all kinds...\n        } else if (state == SCE_RB_STRING_Q || state == SCE_RB_STRING_QQ ||\n                   state == SCE_RB_STRING_QX || state == SCE_RB_STRING_QW ||\n                   state == SCE_RB_STRING || state == SCE_RB_CHARACTER ||\n                   state == SCE_RB_BACKTICKS) {\n            if (!Quote.Down && !isspacechar(ch)) {\n                Quote.Open(ch);\n            } else if (ch == '\\\\' && Quote.Up != '\\\\') {\n                //Riddle me this: Is it safe to skip *every* escaped char?\n                advance_char(i, ch, chNext, chNext2);\n            } else if (ch == Quote.Down) {\n                Quote.Count--;\n                if (Quote.Count == 0) {\n                    styler.ColourTo(i, state);\n                    state = SCE_RB_DEFAULT;\n                    preferRE = false;\n                }\n            } else if (ch == Quote.Up) {\n                Quote.Count++;\n            } else if (ch == '#' && chNext == '{'\n                       && inner_string_count < INNER_STRINGS_MAX_COUNT\n                       && state != SCE_RB_CHARACTER\n                       && state != SCE_RB_STRING_Q) {\n                // process #{ ... }\n                styler.ColourTo(i - 1, state);\n                styler.ColourTo(i + 1, SCE_RB_OPERATOR);\n                enterInnerExpression(inner_string_types,\n                                     inner_expn_brace_counts,\n                                     inner_quotes,\n                                     inner_string_count,\n                                     state,\n                                     brace_counts,\n                                     Quote);\n                preferRE = true;\n                // Skip one\n                advance_char(i, ch, chNext, chNext2);\n            }\n        }\n\n        if (state == SCE_RB_ERROR) {\n            break;\n        }\n        chPrev = ch;\n    }\n    if (state == SCE_RB_WORD) {\n        // We've ended on a word, possibly at EOF, and need to\n        // classify it.\n        (void) ClassifyWordRb(styler.GetStartSegment(), lengthDoc - 1, keywords, styler, prevWord);\n    } else {\n        styler.ColourTo(lengthDoc - 1, state);\n    }\n}\n\n// Helper functions for folding, disambiguation keywords\n// Assert that there are no high-bit chars\n\nstatic void getPrevWord(Sci_Position pos,\n                        char *prevWord,\n                        Accessor &styler,\n                        int word_state)\n{\n    Sci_Position i;\n    styler.Flush();\n    for (i = pos - 1; i > 0; i--) {\n        if (actual_style(styler.StyleAt(i)) != word_state) {\n            i++;\n            break;\n        }\n    }\n    if (i < pos - MAX_KEYWORD_LENGTH) // overflow\n        i = pos - MAX_KEYWORD_LENGTH;\n    char *dst = prevWord;\n    for (; i <= pos; i++) {\n        *dst++ = styler[i];\n    }\n    *dst = 0;\n}\n\nstatic bool keywordIsAmbiguous(const char *prevWord)\n{\n    // Order from most likely used to least likely\n    // Lots of ways to do a loop in Ruby besides 'while/until'\n    if (!strcmp(prevWord, \"if\")\n            || !strcmp(prevWord, \"do\")\n            || !strcmp(prevWord, \"while\")\n            || !strcmp(prevWord, \"unless\")\n            || !strcmp(prevWord, \"until\")\n            || !strcmp(prevWord, \"for\")) {\n        return true;\n    } else {\n        return false;\n    }\n}\n\n// Demote keywords in the following conditions:\n// if, while, unless, until modify a statement\n// do after a while or until, as a noise word (like then after if)\n\nstatic bool keywordIsModifier(const char *word,\n                              Sci_Position pos,\n                              Accessor &styler)\n{\n    if (word[0] == 'd' && word[1] == 'o' && !word[2]) {\n        return keywordDoStartsLoop(pos, styler);\n    }\n    char ch, chPrev, chPrev2;\n    int style = SCE_RB_DEFAULT;\n    Sci_Position lineStart = styler.GetLine(pos);\n    Sci_Position lineStartPosn = styler.LineStart(lineStart);\n    // We want to step backwards until we don't care about the current\n    // position. But first move lineStartPosn back behind any\n    // continuations immediately above word.\n    while (lineStartPosn > 0) {\n        ch = styler[lineStartPosn-1];\n        if (ch == '\\n' || ch == '\\r') {\n            chPrev  = styler.SafeGetCharAt(lineStartPosn-2);\n            chPrev2 = styler.SafeGetCharAt(lineStartPosn-3);\n            lineStart = styler.GetLine(lineStartPosn-1);\n            // If we find a continuation line, include it in our analysis.\n            if (chPrev == '\\\\') {\n                lineStartPosn = styler.LineStart(lineStart);\n            } else if (ch == '\\n' && chPrev == '\\r' && chPrev2 == '\\\\') {\n                lineStartPosn = styler.LineStart(lineStart);\n            } else {\n                break;\n            }\n        } else {\n            break;\n        }\n    }\n\n    styler.Flush();\n    while (--pos >= lineStartPosn) {\n        style = actual_style(styler.StyleAt(pos));\n        if (style == SCE_RB_DEFAULT) {\n            if (iswhitespace(ch = styler[pos])) {\n                //continue\n            } else if (ch == '\\r' || ch == '\\n') {\n                // Scintilla's LineStart() and GetLine() routines aren't\n                // platform-independent, so if we have text prepared with\n                // a different system we can't rely on it.\n\n                // Also, lineStartPosn may have been moved to more than one\n                // line above word's line while pushing past continuations.\n                chPrev = styler.SafeGetCharAt(pos - 1);\n                chPrev2 = styler.SafeGetCharAt(pos - 2);\n                if (chPrev == '\\\\') {\n                    pos-=1;  // gloss over the \"\\\\\"\n                    //continue\n                } else if (ch == '\\n' && chPrev == '\\r' && chPrev2 == '\\\\') {\n                    pos-=2;  // gloss over the \"\\\\\\r\"\n                    //continue\n                } else {\n                    return false;\n                }\n            }\n        } else {\n            break;\n        }\n    }\n    if (pos < lineStartPosn) {\n        return false;\n    }\n    // First things where the action is unambiguous\n    switch (style) {\n    case SCE_RB_DEFAULT:\n    case SCE_RB_COMMENTLINE:\n    case SCE_RB_POD:\n    case SCE_RB_CLASSNAME:\n    case SCE_RB_DEFNAME:\n    case SCE_RB_MODULE_NAME:\n        return false;\n    case SCE_RB_OPERATOR:\n        break;\n    case SCE_RB_WORD:\n        // Watch out for uses of 'else if'\n        //XXX: Make a list of other keywords where 'if' isn't a modifier\n        //     and can appear legitimately\n        // Formulate this to avoid warnings from most compilers\n        if (strcmp(word, \"if\") == 0) {\n            char prevWord[MAX_KEYWORD_LENGTH + 1];\n            getPrevWord(pos, prevWord, styler, SCE_RB_WORD);\n            return strcmp(prevWord, \"else\") != 0;\n        }\n        return true;\n    default:\n        return true;\n    }\n    // Assume that if the keyword follows an operator,\n    // usually it's a block assignment, like\n    // a << if x then y else z\n\n    ch = styler[pos];\n    switch (ch) {\n    case ')':\n    case ']':\n    case '}':\n        return true;\n    default:\n        return false;\n    }\n}\n\n#define WHILE_BACKWARDS \"elihw\"\n#define UNTIL_BACKWARDS \"litnu\"\n#define FOR_BACKWARDS \"rof\"\n\n// Nothing fancy -- look to see if we follow a while/until somewhere\n// on the current line\n\nstatic bool keywordDoStartsLoop(Sci_Position pos,\n                                Accessor &styler)\n{\n    char ch;\n    int style;\n    Sci_Position lineStart = styler.GetLine(pos);\n    Sci_Position lineStartPosn = styler.LineStart(lineStart);\n    styler.Flush();\n    while (--pos >= lineStartPosn) {\n        style = actual_style(styler.StyleAt(pos));\n        if (style == SCE_RB_DEFAULT) {\n            if ((ch = styler[pos]) == '\\r' || ch == '\\n') {\n                // Scintilla's LineStart() and GetLine() routines aren't\n                // platform-independent, so if we have text prepared with\n                // a different system we can't rely on it.\n                return false;\n            }\n        } else if (style == SCE_RB_WORD) {\n            // Check for while or until, but write the word in backwards\n            char prevWord[MAX_KEYWORD_LENGTH + 1]; // 1 byte for zero\n            char *dst = prevWord;\n            int wordLen = 0;\n            Sci_Position start_word;\n            for (start_word = pos;\n                    start_word >= lineStartPosn && actual_style(styler.StyleAt(start_word)) == SCE_RB_WORD;\n                    start_word--) {\n                if (++wordLen < MAX_KEYWORD_LENGTH) {\n                    *dst++ = styler[start_word];\n                }\n            }\n            *dst = 0;\n            // Did we see our keyword?\n            if (!strcmp(prevWord, WHILE_BACKWARDS)\n                    || !strcmp(prevWord, UNTIL_BACKWARDS)\n                    || !strcmp(prevWord, FOR_BACKWARDS)) {\n                return true;\n            }\n            // We can move pos to the beginning of the keyword, and then\n            // accept another decrement, as we can never have two contiguous\n            // keywords:\n            // word1 word2\n            //           ^\n            //        <-  move to start_word\n            //      ^\n            //      <- loop decrement\n            //     ^  # pointing to end of word1 is fine\n            pos = start_word;\n        }\n    }\n    return false;\n}\n\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler) {\n    Sci_Position pos = styler.LineStart(line);\n    Sci_Position eol_pos = styler.LineStart(line + 1) - 1;\n    for (Sci_Position i = pos; i < eol_pos; i++) {\n        char ch = styler[i];\n        if (ch == '#')\n            return true;\n        else if (ch != ' ' && ch != '\\t')\n            return false;\n    }\n    return false;\n}\n\n/*\n *  Folding Ruby\n *\n *  The language is quite complex to analyze without a full parse.\n *  For example, this line shouldn't affect fold level:\n *\n *   print \"hello\" if feeling_friendly?\n *\n *  Neither should this:\n *\n *   print \"hello\" \\\n *      if feeling_friendly?\n *\n *\n *  But this should:\n *\n *   if feeling_friendly?  #++\n *     print \"hello\" \\\n *     print \"goodbye\"\n *   end                   #--\n *\n *  So we cheat, by actually looking at the existing indentation\n *  levels for each line, and just echoing it back.  Like Python.\n *  Then if we get better at it, we'll take braces into consideration,\n *  which always affect folding levels.\n\n *  How the keywords should work:\n *  No effect:\n *  __FILE__ __LINE__ BEGIN END alias and\n *  defined? false in nil not or self super then\n *  true undef\n\n *  Always increment:\n *  begin  class def do for module when {\n *\n *  Always decrement:\n *  end }\n *\n *  Increment if these start a statement\n *  if unless until while -- do nothing if they're modifiers\n\n *  These end a block if there's no modifier, but don't bother\n *  break next redo retry return yield\n *\n *  These temporarily de-indent, but re-indent\n *  case else elsif ensure rescue\n *\n *  This means that the folder reflects indentation rather\n *  than setting it.  The language-service updates indentation\n *  when users type return and finishes entering de-denters.\n *\n *  Later offer to fold POD, here-docs, strings, and blocks of comments\n */\n\nstatic void FoldRbDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                      WordList *[], Accessor &styler) {\n    const bool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n    bool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\n    synchronizeDocStart(startPos, length, initStyle, styler, // ref args\n                        false);\n    Sci_PositionU endPos = startPos + length;\n    int visibleChars = 0;\n    Sci_Position lineCurrent = styler.GetLine(startPos);\n    int levelPrev = startPos == 0 ? 0 : (styler.LevelAt(lineCurrent)\n                                         & SC_FOLDLEVELNUMBERMASK\n                                         & ~SC_FOLDLEVELBASE);\n    int levelCurrent = levelPrev;\n    char chNext = styler[startPos];\n    int styleNext = styler.StyleAt(startPos);\n    int stylePrev = startPos <= 1 ? SCE_RB_DEFAULT : styler.StyleAt(startPos - 1);\n    bool buffer_ends_with_eol = false;\n    for (Sci_PositionU i = startPos; i < endPos; i++) {\n        char ch = chNext;\n        chNext = styler.SafeGetCharAt(i + 1);\n        int style = styleNext;\n        styleNext = styler.StyleAt(i + 1);\n        bool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n        /*Mutiline comment patch*/\n        if (foldComment && atEOL && IsCommentLine(lineCurrent, styler)) {\n            if (!IsCommentLine(lineCurrent - 1, styler)\n                    && IsCommentLine(lineCurrent + 1, styler))\n                levelCurrent++;\n            else if (IsCommentLine(lineCurrent - 1, styler)\n                     && !IsCommentLine(lineCurrent + 1, styler))\n                levelCurrent--;\n        }\n\n        if (style == SCE_RB_COMMENTLINE) {\n            if (foldComment && stylePrev != SCE_RB_COMMENTLINE) {\n                if (chNext == '{') {\n                    levelCurrent++;\n                } else if (chNext == '}' && levelCurrent > 0) {\n                    levelCurrent--;\n                }\n            }\n        } else if (style == SCE_RB_OPERATOR) {\n            if (strchr(\"[{(\", ch)) {\n                levelCurrent++;\n            } else if (strchr(\")}]\", ch)) {\n                // Don't decrement below 0\n                if (levelCurrent > 0)\n                    levelCurrent--;\n            }\n        } else if (style == SCE_RB_WORD && styleNext != SCE_RB_WORD) {\n            // Look at the keyword on the left and decide what to do\n            char prevWord[MAX_KEYWORD_LENGTH + 1]; // 1 byte for zero\n            prevWord[0] = 0;\n            getPrevWord(i, prevWord, styler, SCE_RB_WORD);\n            if (!strcmp(prevWord, \"end\")) {\n                // Don't decrement below 0\n                if (levelCurrent > 0)\n                    levelCurrent--;\n            } else if (!strcmp(prevWord, \"if\")\n                       || !strcmp(prevWord, \"def\")\n                       || !strcmp(prevWord, \"class\")\n                       || !strcmp(prevWord, \"module\")\n                       || !strcmp(prevWord, \"begin\")\n                       || !strcmp(prevWord, \"case\")\n                       || !strcmp(prevWord, \"do\")\n                       || !strcmp(prevWord, \"while\")\n                       || !strcmp(prevWord, \"unless\")\n                       || !strcmp(prevWord, \"until\")\n                       || !strcmp(prevWord, \"for\")\n                      ) {\n                levelCurrent++;\n            }\n        } else if (style == SCE_RB_HERE_DELIM) {\n            if (styler.SafeGetCharAt(i-2) == '<' && styler.SafeGetCharAt(i-1) == '<') {\n                levelCurrent++;\n            } else if (styleNext == SCE_RB_DEFAULT) {\n                levelCurrent--;\n            }\n        }\n        if (atEOL) {\n            int lev = levelPrev;\n            if (visibleChars == 0 && foldCompact)\n                lev |= SC_FOLDLEVELWHITEFLAG;\n            if ((levelCurrent > levelPrev) && (visibleChars > 0))\n                lev |= SC_FOLDLEVELHEADERFLAG;\n            styler.SetLevel(lineCurrent, lev|SC_FOLDLEVELBASE);\n            lineCurrent++;\n            levelPrev = levelCurrent;\n            visibleChars = 0;\n            buffer_ends_with_eol = true;\n        } else if (!isspacechar(ch)) {\n            visibleChars++;\n            buffer_ends_with_eol = false;\n        }\n        stylePrev = style;\n    }\n    // Fill in the real level of the next line, keeping the current flags as they will be filled in later\n    if (!buffer_ends_with_eol) {\n        lineCurrent++;\n        int new_lev = levelCurrent;\n        if (visibleChars == 0 && foldCompact)\n            new_lev |= SC_FOLDLEVELWHITEFLAG;\n        if ((levelCurrent > levelPrev) && (visibleChars > 0))\n            new_lev |= SC_FOLDLEVELHEADERFLAG;\n        levelCurrent = new_lev;\n    }\n    styler.SetLevel(lineCurrent, levelCurrent|SC_FOLDLEVELBASE);\n}\n\nstatic const char *const rubyWordListDesc[] = {\n    \"Keywords\",\n    0\n};\n\nLexerModule lmRuby(SCLEX_RUBY, ColouriseRbDoc, \"ruby\", FoldRbDoc, rubyWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexRust.cpp",
    "content": "/** @file LexRust.cxx\n ** Lexer for Rust.\n **\n ** Copyright (c) 2013 by SiegeLord <slabode@aim.com>\n ** Converted to lexer object and added further folding features/properties by \"Udo Lechner\" <dlchnr(at)gmx(dot)net>\n **/\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <map>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic const int NUM_RUST_KEYWORD_LISTS = 7;\nstatic const int MAX_RUST_IDENT_CHARS = 1023;\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_RUST_COMMENTBLOCK ||\n\t\t   style == SCE_RUST_COMMENTBLOCKDOC;\n}\n\n// Options used for LexerRust\nstruct OptionsRust {\n\tbool fold;\n\tbool foldSyntaxBased;\n\tbool foldComment;\n\tbool foldCommentMultiline;\n\tbool foldCommentExplicit;\n\tstd::string foldExplicitStart;\n\tstd::string foldExplicitEnd;\n\tbool foldExplicitAnywhere;\n\tbool foldCompact;\n\tint  foldAtElseInt;\n\tbool foldAtElse;\n\tOptionsRust() {\n\t\tfold = false;\n\t\tfoldSyntaxBased = true;\n\t\tfoldComment = false;\n\t\tfoldCommentMultiline = true;\n\t\tfoldCommentExplicit = true;\n\t\tfoldExplicitStart = \"\";\n\t\tfoldExplicitEnd   = \"\";\n\t\tfoldExplicitAnywhere = false;\n\t\tfoldCompact = true;\n\t\tfoldAtElseInt = -1;\n\t\tfoldAtElse = false;\n\t}\n};\n\nstatic const char * const rustWordLists[NUM_RUST_KEYWORD_LISTS + 1] = {\n\t\t\t\"Primary keywords and identifiers\",\n\t\t\t\"Built in types\",\n\t\t\t\"Other keywords\",\n\t\t\t\"Keywords 4\",\n\t\t\t\"Keywords 5\",\n\t\t\t\"Keywords 6\",\n\t\t\t\"Keywords 7\",\n\t\t\t0,\n\t\t};\n\nstruct OptionSetRust : public OptionSet<OptionsRust> {\n\tOptionSetRust() {\n\t\tDefineProperty(\"fold\", &OptionsRust::fold);\n\n\t\tDefineProperty(\"fold.comment\", &OptionsRust::foldComment);\n\n\t\tDefineProperty(\"fold.compact\", &OptionsRust::foldCompact);\n\n\t\tDefineProperty(\"fold.at.else\", &OptionsRust::foldAtElse);\n\n\t\tDefineProperty(\"fold.rust.syntax.based\", &OptionsRust::foldSyntaxBased,\n\t\t\t\"Set this property to 0 to disable syntax based folding.\");\n\n\t\tDefineProperty(\"fold.rust.comment.multiline\", &OptionsRust::foldCommentMultiline,\n\t\t\t\"Set this property to 0 to disable folding multi-line comments when fold.comment=1.\");\n\n\t\tDefineProperty(\"fold.rust.comment.explicit\", &OptionsRust::foldCommentExplicit,\n\t\t\t\"Set this property to 0 to disable folding explicit fold points when fold.comment=1.\");\n\n\t\tDefineProperty(\"fold.rust.explicit.start\", &OptionsRust::foldExplicitStart,\n\t\t\t\"The string to use for explicit fold start points, replacing the standard //{.\");\n\n\t\tDefineProperty(\"fold.rust.explicit.end\", &OptionsRust::foldExplicitEnd,\n\t\t\t\"The string to use for explicit fold end points, replacing the standard //}.\");\n\n\t\tDefineProperty(\"fold.rust.explicit.anywhere\", &OptionsRust::foldExplicitAnywhere,\n\t\t\t\"Set this property to 1 to enable explicit fold points anywhere, not just in line comments.\");\n\n\t\tDefineProperty(\"lexer.rust.fold.at.else\", &OptionsRust::foldAtElseInt,\n\t\t\t\"This option enables Rust folding on a \\\"} else {\\\" line of an if statement.\");\n\n\t\tDefineWordListSets(rustWordLists);\n\t}\n};\n\nclass LexerRust : public ILexer {\n\tWordList keywords[NUM_RUST_KEYWORD_LISTS];\n\tOptionsRust options;\n\tOptionSetRust osRust;\npublic:\n\tvirtual ~LexerRust() {\n\t}\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tint SCI_METHOD Version() const {\n\t\treturn lvOriginal;\n\t}\n\tconst char * SCI_METHOD PropertyNames() {\n\t\treturn osRust.PropertyNames();\n\t}\n\tint SCI_METHOD PropertyType(const char *name) {\n\t\treturn osRust.PropertyType(name);\n\t}\n\tconst char * SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn osRust.DescribeProperty(name);\n\t}\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tconst char * SCI_METHOD DescribeWordListSets() {\n\t\treturn osRust.DescribeWordListSets();\n\t}\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\tstatic ILexer *LexerFactoryRust() {\n\t\treturn new LexerRust();\n\t}\n};\n\nSci_Position SCI_METHOD LexerRust::PropertySet(const char *key, const char *val) {\n\tif (osRust.PropertySet(&options, key, val)) {\n\t\treturn 0;\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerRust::WordListSet(int n, const char *wl) {\n\tSci_Position firstModification = -1;\n\tif (n < NUM_RUST_KEYWORD_LISTS) {\n\t\tWordList *wordListN = &keywords[n];\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nstatic bool IsWhitespace(int c) {\n    return c == ' ' || c == '\\t' || c == '\\r' || c == '\\n';\n}\n\n/* This isn't quite right for Unicode identifiers */\nstatic bool IsIdentifierStart(int ch) {\n\treturn (IsASCII(ch) && (isalpha(ch) || ch == '_')) || !IsASCII(ch);\n}\n\n/* This isn't quite right for Unicode identifiers */\nstatic bool IsIdentifierContinue(int ch) {\n\treturn (IsASCII(ch) && (isalnum(ch) || ch == '_')) || !IsASCII(ch);\n}\n\nstatic void ScanWhitespace(Accessor& styler, Sci_Position& pos, Sci_Position max) {\n\twhile (IsWhitespace(styler.SafeGetCharAt(pos, '\\0')) && pos < max) {\n\t\tif (pos == styler.LineEnd(styler.GetLine(pos)))\n\t\t\tstyler.SetLineState(styler.GetLine(pos), 0);\n\t\tpos++;\n\t}\n\tstyler.ColourTo(pos-1, SCE_RUST_DEFAULT);\n}\n\nstatic void GrabString(char* s, Accessor& styler, Sci_Position start, Sci_Position len) {\n\tfor (Sci_Position ii = 0; ii < len; ii++)\n\t\ts[ii] = styler[ii + start];\n\ts[len] = '\\0';\n}\n\nstatic void ScanIdentifier(Accessor& styler, Sci_Position& pos, WordList *keywords) {\n\tSci_Position start = pos;\n\twhile (IsIdentifierContinue(styler.SafeGetCharAt(pos, '\\0')))\n\t\tpos++;\n\n\tif (styler.SafeGetCharAt(pos, '\\0') == '!') {\n\t\tpos++;\n\t\tstyler.ColourTo(pos - 1, SCE_RUST_MACRO);\n\t} else {\n\t\tchar s[MAX_RUST_IDENT_CHARS + 1];\n\t\tint len = pos - start;\n\t\tlen = len > MAX_RUST_IDENT_CHARS ? MAX_RUST_IDENT_CHARS : len;\n\t\tGrabString(s, styler, start, len);\n\t\tbool keyword = false;\n\t\tfor (int ii = 0; ii < NUM_RUST_KEYWORD_LISTS; ii++) {\n\t\t\tif (keywords[ii].InList(s)) {\n\t\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_WORD + ii);\n\t\t\t\tkeyword = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (!keyword) {\n\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_IDENTIFIER);\n\t\t}\n\t}\n}\n\n/* Scans a sequence of digits, returning true if it found any. */\nstatic bool ScanDigits(Accessor& styler, Sci_Position& pos, int base) {\n\tSci_Position old_pos = pos;\n\tfor (;;) {\n\t\tint c = styler.SafeGetCharAt(pos, '\\0');\n\t\tif (IsADigit(c, base) || c == '_')\n\t\t\tpos++;\n\t\telse\n\t\t\tbreak;\n\t}\n\treturn old_pos != pos;\n}\n\n/* Scans an integer and floating point literals. */\nstatic void ScanNumber(Accessor& styler, Sci_Position& pos) {\n\tint base = 10;\n\tint c = styler.SafeGetCharAt(pos, '\\0');\n\tint n = styler.SafeGetCharAt(pos + 1, '\\0');\n\tbool error = false;\n\t/* Scan the prefix, thus determining the base.\n\t * 10 is default if there's no prefix. */\n\tif (c == '0' && n == 'x') {\n\t\tpos += 2;\n\t\tbase = 16;\n\t} else if (c == '0' && n == 'b') {\n\t\tpos += 2;\n\t\tbase = 2;\n\t} else if (c == '0' && n == 'o') {\n\t\tpos += 2;\n\t\tbase = 8;\n\t}\n\n\t/* Scan initial digits. The literal is malformed if there are none. */\n\terror |= !ScanDigits(styler, pos, base);\n\t/* See if there's an integer suffix. We mimic the Rust's lexer\n\t * and munch it even if there was an error above. */\n\tc = styler.SafeGetCharAt(pos, '\\0');\n\tif (c == 'u' || c == 'i') {\n\t\tpos++;\n\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t\tn = styler.SafeGetCharAt(pos + 1, '\\0');\n\t\tif (c == '8' || c == 's') {\n\t\t\tpos++;\n\t\t} else if (c == '1' && n == '6') {\n\t\t\tpos += 2;\n\t\t} else if (c == '3' && n == '2') {\n\t\t\tpos += 2;\n\t\t} else if (c == '6' && n == '4') {\n\t\t\tpos += 2;\n\t\t} else {\n\t\t\terror = true;\n\t\t}\n\t/* See if it's a floating point literal. These literals have to be base 10.\n\t */\n\t} else if (!error) {\n\t\t/* If there's a period, it's a floating point literal unless it's\n\t\t * followed by an identifier (meaning this is a method call, e.g.\n\t\t * `1.foo()`) or another period, in which case it's a range (e.g. 1..2)\n\t\t */\n\t\tn = styler.SafeGetCharAt(pos + 1, '\\0');\n\t\tif (c == '.' && !(IsIdentifierStart(n) || n == '.')) {\n\t\t\terror |= base != 10;\n\t\t\tpos++;\n\t\t\t/* It's ok to have no digits after the period. */\n\t\t\tScanDigits(styler, pos, 10);\n\t\t}\n\n\t\t/* Look for the exponentiation. */\n\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t\tif (c == 'e' || c == 'E') {\n\t\t\terror |= base != 10;\n\t\t\tpos++;\n\t\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t\t\tif (c == '-' || c == '+')\n\t\t\t\tpos++;\n\t\t\t/* It is invalid to have no digits in the exponent. */\n\t\t\terror |= !ScanDigits(styler, pos, 10);\n\t\t}\n\n\t\t/* Scan the floating point suffix. */\n\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t\tif (c == 'f') {\n\t\t\terror |= base != 10;\n\t\t\tpos++;\n\t\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t\t\tn = styler.SafeGetCharAt(pos + 1, '\\0');\n\t\t\tif (c == '3' && n == '2') {\n\t\t\t\tpos += 2;\n\t\t\t} else if (c == '6' && n == '4') {\n\t\t\t\tpos += 2;\n\t\t\t} else {\n\t\t\t\terror = true;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (error)\n\t\tstyler.ColourTo(pos - 1, SCE_RUST_LEXERROR);\n\telse\n\t\tstyler.ColourTo(pos - 1, SCE_RUST_NUMBER);\n}\n\nstatic bool IsOneCharOperator(int c) {\n\treturn c == ';' || c == ',' || c == '(' || c == ')'\n\t    || c == '{' || c == '}' || c == '[' || c == ']'\n\t    || c == '@' || c == '#' || c == '~' || c == '+'\n\t    || c == '*' || c == '/' || c == '^' || c == '%'\n\t    || c == '.' || c == ':' || c == '!' || c == '<'\n\t    || c == '>' || c == '=' || c == '-' || c == '&'\n\t    || c == '|' || c == '$' || c == '?';\n}\n\nstatic bool IsTwoCharOperator(int c, int n) {\n\treturn (c == '.' && n == '.') || (c == ':' && n == ':')\n\t    || (c == '!' && n == '=') || (c == '<' && n == '<')\n\t    || (c == '<' && n == '=') || (c == '>' && n == '>')\n\t    || (c == '>' && n == '=') || (c == '=' && n == '=')\n\t    || (c == '=' && n == '>') || (c == '-' && n == '>')\n\t    || (c == '&' && n == '&') || (c == '|' && n == '|')\n\t    || (c == '-' && n == '=') || (c == '&' && n == '=')\n\t    || (c == '|' && n == '=') || (c == '+' && n == '=')\n\t    || (c == '*' && n == '=') || (c == '/' && n == '=')\n\t    || (c == '^' && n == '=') || (c == '%' && n == '=');\n}\n\nstatic bool IsThreeCharOperator(int c, int n, int n2) {\n\treturn (c == '<' && n == '<' && n2 == '=')\n\t    || (c == '>' && n == '>' && n2 == '=');\n}\n\nstatic bool IsValidCharacterEscape(int c) {\n\treturn c == 'n'  || c == 'r' || c == 't' || c == '\\\\'\n\t    || c == '\\'' || c == '\"' || c == '0';\n}\n\nstatic bool IsValidStringEscape(int c) {\n\treturn IsValidCharacterEscape(c) || c == '\\n' || c == '\\r';\n}\n\nstatic bool ScanNumericEscape(Accessor &styler, Sci_Position& pos, Sci_Position num_digits, bool stop_asap) {\n\tfor (;;) {\n\t\tint c = styler.SafeGetCharAt(pos, '\\0');\n\t\tif (!IsADigit(c, 16))\n\t\t\tbreak;\n\t\tnum_digits--;\n\t\tpos++;\n\t\tif (num_digits == 0 && stop_asap)\n\t\t\treturn true;\n\t}\n\tif (num_digits == 0) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\n/* This is overly permissive for character literals in order to accept UTF-8 encoded\n * character literals. */\nstatic void ScanCharacterLiteralOrLifetime(Accessor &styler, Sci_Position& pos, bool ascii_only) {\n\tpos++;\n\tint c = styler.SafeGetCharAt(pos, '\\0');\n\tint n = styler.SafeGetCharAt(pos + 1, '\\0');\n\tbool done = false;\n\tbool valid_lifetime = !ascii_only && IsIdentifierStart(c);\n\tbool valid_char = true;\n\tbool first = true;\n\twhile (!done) {\n\t\tswitch (c) {\n\t\t\tcase '\\\\':\n\t\t\t\tdone = true;\n\t\t\t\tif (IsValidCharacterEscape(n)) {\n\t\t\t\t\tpos += 2;\n\t\t\t\t} else if (n == 'x') {\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tvalid_char = ScanNumericEscape(styler, pos, 2, false);\n\t\t\t\t} else if (n == 'u' && !ascii_only) {\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tif (styler.SafeGetCharAt(pos, '\\0') != '{') {\n\t\t\t\t\t\t// old-style\n\t\t\t\t\t\tvalid_char = ScanNumericEscape(styler, pos, 4, false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tint n_digits = 0;\n\t\t\t\t\t\twhile (IsADigit(styler.SafeGetCharAt(++pos, '\\0'), 16) && n_digits++ < 6) {\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (n_digits > 0 && styler.SafeGetCharAt(pos, '\\0') == '}')\n\t\t\t\t\t\t\tpos++;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tvalid_char = false;\n\t\t\t\t\t}\n\t\t\t\t} else if (n == 'U' && !ascii_only) {\n\t\t\t\t\tpos += 2;\n\t\t\t\t\tvalid_char = ScanNumericEscape(styler, pos, 8, false);\n\t\t\t\t} else {\n\t\t\t\t\tvalid_char = false;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase '\\'':\n\t\t\t\tvalid_char = !first;\n\t\t\t\tdone = true;\n\t\t\t\tbreak;\n\t\t\tcase '\\t':\n\t\t\tcase '\\n':\n\t\t\tcase '\\r':\n\t\t\tcase '\\0':\n\t\t\t\tvalid_char = false;\n\t\t\t\tdone = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (ascii_only && !IsASCII((char)c)) {\n\t\t\t\t\tdone = true;\n\t\t\t\t\tvalid_char = false;\n\t\t\t\t} else if (!IsIdentifierContinue(c) && !first) {\n\t\t\t\t\tdone = true;\n\t\t\t\t} else {\n\t\t\t\t\tpos++;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t\tn = styler.SafeGetCharAt(pos + 1, '\\0');\n\n\t\tfirst = false;\n\t}\n\tif (styler.SafeGetCharAt(pos, '\\0') == '\\'') {\n\t\tvalid_lifetime = false;\n\t} else {\n\t\tvalid_char = false;\n\t}\n\tif (valid_lifetime) {\n\t\tstyler.ColourTo(pos - 1, SCE_RUST_LIFETIME);\n\t} else if (valid_char) {\n\t\tpos++;\n\t\tstyler.ColourTo(pos - 1, ascii_only ? SCE_RUST_BYTECHARACTER : SCE_RUST_CHARACTER);\n\t} else {\n\t\tstyler.ColourTo(pos - 1, SCE_RUST_LEXERROR);\n\t}\n}\n\nenum CommentState {\n\tUnknownComment,\n\tDocComment,\n\tNotDocComment\n};\n\n/*\n * The rule for block-doc comments is as follows: /xxN and /x! (where x is an asterisk, N is a non-asterisk) start doc comments.\n * Otherwise it's a regular comment.\n */\nstatic void ResumeBlockComment(Accessor &styler, Sci_Position& pos, Sci_Position max, CommentState state, int level) {\n\tint c = styler.SafeGetCharAt(pos, '\\0');\n\tbool maybe_doc_comment = false;\n\tif (c == '*') {\n\t\tint n = styler.SafeGetCharAt(pos + 1, '\\0');\n\t\tif (n != '*' && n != '/') {\n\t\t\tmaybe_doc_comment = true;\n\t\t}\n\t} else if (c == '!') {\n\t\tmaybe_doc_comment = true;\n\t}\n\n\tfor (;;) {\n\t\tint n = styler.SafeGetCharAt(pos + 1, '\\0');\n\t\tif (pos == styler.LineEnd(styler.GetLine(pos)))\n\t\t\tstyler.SetLineState(styler.GetLine(pos), level);\n\t\tif (c == '*') {\n\t\t\tpos++;\n\t\t\tif (n == '/') {\n\t\t\t\tpos++;\n\t\t\t\tlevel--;\n\t\t\t\tif (level == 0) {\n\t\t\t\t\tstyler.SetLineState(styler.GetLine(pos), 0);\n\t\t\t\t\tif (state == DocComment || (state == UnknownComment && maybe_doc_comment))\n\t\t\t\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_COMMENTBLOCKDOC);\n\t\t\t\t\telse\n\t\t\t\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_COMMENTBLOCK);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (c == '/') {\n\t\t\tpos++;\n\t\t\tif (n == '*') {\n\t\t\t\tpos++;\n\t\t\t\tlevel++;\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tpos++;\n\t\t}\n\t\tif (pos >= max) {\n\t\t\tif (state == DocComment || (state == UnknownComment && maybe_doc_comment))\n\t\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_COMMENTBLOCKDOC);\n\t\t\telse\n\t\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_COMMENTBLOCK);\n\t\t\tbreak;\n\t\t}\n\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t}\n}\n\n/*\n * The rule for line-doc comments is as follows... ///N and //! (where N is a non slash) start doc comments.\n * Otherwise it's a normal line comment.\n */\nstatic void ResumeLineComment(Accessor &styler, Sci_Position& pos, Sci_Position max, CommentState state) {\n\tbool maybe_doc_comment = false;\n\tint c = styler.SafeGetCharAt(pos, '\\0');\n\tif (c == '/') {\n\t\tif (pos < max) {\n\t\t\tpos++;\n\t\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t\t\tif (c != '/') {\n\t\t\t\tmaybe_doc_comment = true;\n\t\t\t}\n\t\t}\n\t} else if (c == '!') {\n\t\tmaybe_doc_comment = true;\n\t}\n\n\twhile (pos < max && c != '\\n') {\n\t\tif (pos == styler.LineEnd(styler.GetLine(pos)))\n\t\t\tstyler.SetLineState(styler.GetLine(pos), 0);\n\t\tpos++;\n\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t}\n\n\tif (state == DocComment || (state == UnknownComment && maybe_doc_comment))\n\t\tstyler.ColourTo(pos - 1, SCE_RUST_COMMENTLINEDOC);\n\telse\n\t\tstyler.ColourTo(pos - 1, SCE_RUST_COMMENTLINE);\n}\n\nstatic void ScanComments(Accessor &styler, Sci_Position& pos, Sci_Position max) {\n\tpos++;\n\tint c = styler.SafeGetCharAt(pos, '\\0');\n\tpos++;\n\tif (c == '/')\n\t\tResumeLineComment(styler, pos, max, UnknownComment);\n\telse if (c == '*')\n\t\tResumeBlockComment(styler, pos, max, UnknownComment, 1);\n}\n\nstatic void ResumeString(Accessor &styler, Sci_Position& pos, Sci_Position max, bool ascii_only) {\n\tint c = styler.SafeGetCharAt(pos, '\\0');\n\tbool error = false;\n\twhile (c != '\"' && !error) {\n\t\tif (pos >= max) {\n\t\t\terror = true;\n\t\t\tbreak;\n\t\t}\n\t\tif (pos == styler.LineEnd(styler.GetLine(pos)))\n\t\t\tstyler.SetLineState(styler.GetLine(pos), 0);\n\t\tif (c == '\\\\') {\n\t\t\tint n = styler.SafeGetCharAt(pos + 1, '\\0');\n\t\t\tif (IsValidStringEscape(n)) {\n\t\t\t\tpos += 2;\n\t\t\t} else if (n == 'x') {\n\t\t\t\tpos += 2;\n\t\t\t\terror = !ScanNumericEscape(styler, pos, 2, true);\n\t\t\t} else if (n == 'u' && !ascii_only) {\n\t\t\t\tpos += 2;\n\t\t\t\tif (styler.SafeGetCharAt(pos, '\\0') != '{') {\n\t\t\t\t\t// old-style\n\t\t\t\t\terror = !ScanNumericEscape(styler, pos, 4, true);\n\t\t\t\t} else {\n\t\t\t\t\tint n_digits = 0;\n\t\t\t\t\twhile (IsADigit(styler.SafeGetCharAt(++pos, '\\0'), 16) && n_digits++ < 6) {\n\t\t\t\t\t}\n\t\t\t\t\tif (n_digits > 0 && styler.SafeGetCharAt(pos, '\\0') == '}')\n\t\t\t\t\t\tpos++;\n\t\t\t\t\telse\n\t\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t} else if (n == 'U' && !ascii_only) {\n\t\t\t\tpos += 2;\n\t\t\t\terror = !ScanNumericEscape(styler, pos, 8, true);\n\t\t\t} else {\n\t\t\t\tpos += 1;\n\t\t\t\terror = true;\n\t\t\t}\n\t\t} else {\n\t\t\tif (ascii_only && !IsASCII((char)c))\n\t\t\t\terror = true;\n\t\t\telse\n\t\t\t\tpos++;\n\t\t}\n\t\tc = styler.SafeGetCharAt(pos, '\\0');\n\t}\n\tif (!error)\n\t\tpos++;\n\tstyler.ColourTo(pos - 1, ascii_only ? SCE_RUST_BYTESTRING : SCE_RUST_STRING);\n}\n\nstatic void ResumeRawString(Accessor &styler, Sci_Position& pos, Sci_Position max, int num_hashes, bool ascii_only) {\n\tfor (;;) {\n\t\tif (pos == styler.LineEnd(styler.GetLine(pos)))\n\t\t\tstyler.SetLineState(styler.GetLine(pos), num_hashes);\n\n\t\tint c = styler.SafeGetCharAt(pos, '\\0');\n\t\tif (c == '\"') {\n\t\t\tpos++;\n\t\t\tint trailing_num_hashes = 0;\n\t\t\twhile (styler.SafeGetCharAt(pos, '\\0') == '#' && trailing_num_hashes < num_hashes) {\n\t\t\t\ttrailing_num_hashes++;\n\t\t\t\tpos++;\n\t\t\t}\n\t\t\tif (trailing_num_hashes == num_hashes) {\n\t\t\t\tstyler.SetLineState(styler.GetLine(pos), 0);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else if (pos >= max) {\n\t\t\tbreak;\n\t\t} else {\n\t\t\tif (ascii_only && !IsASCII((char)c))\n\t\t\t\tbreak;\n\t\t\tpos++;\n\t\t}\n\t}\n\tstyler.ColourTo(pos - 1, ascii_only ? SCE_RUST_BYTESTRINGR : SCE_RUST_STRINGR);\n}\n\nstatic void ScanRawString(Accessor &styler, Sci_Position& pos, Sci_Position max, bool ascii_only) {\n\tpos++;\n\tint num_hashes = 0;\n\twhile (styler.SafeGetCharAt(pos, '\\0') == '#') {\n\t\tnum_hashes++;\n\t\tpos++;\n\t}\n\tif (styler.SafeGetCharAt(pos, '\\0') != '\"') {\n\t\tstyler.ColourTo(pos - 1, SCE_RUST_LEXERROR);\n\t} else {\n\t\tpos++;\n\t\tResumeRawString(styler, pos, max, num_hashes, ascii_only);\n\t}\n}\n\nvoid SCI_METHOD LexerRust::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tPropSetSimple props;\n\tAccessor styler(pAccess, &props);\n\tSci_Position pos = startPos;\n\tSci_Position max = pos + length;\n\n\tstyler.StartAt(pos);\n\tstyler.StartSegment(pos);\n\n\tif (initStyle == SCE_RUST_COMMENTBLOCK || initStyle == SCE_RUST_COMMENTBLOCKDOC) {\n\t\tResumeBlockComment(styler, pos, max, initStyle == SCE_RUST_COMMENTBLOCKDOC ? DocComment : NotDocComment, styler.GetLineState(styler.GetLine(pos) - 1));\n\t} else if (initStyle == SCE_RUST_COMMENTLINE || initStyle == SCE_RUST_COMMENTLINEDOC) {\n\t\tResumeLineComment(styler, pos, max, initStyle == SCE_RUST_COMMENTLINEDOC ? DocComment : NotDocComment);\n\t} else if (initStyle == SCE_RUST_STRING) {\n\t\tResumeString(styler, pos, max, false);\n\t} else if (initStyle == SCE_RUST_BYTESTRING) {\n\t\tResumeString(styler, pos, max, true);\n\t} else if (initStyle == SCE_RUST_STRINGR) {\n\t\tResumeRawString(styler, pos, max, styler.GetLineState(styler.GetLine(pos) - 1), false);\n\t} else if (initStyle == SCE_RUST_BYTESTRINGR) {\n\t\tResumeRawString(styler, pos, max, styler.GetLineState(styler.GetLine(pos) - 1), true);\n\t}\n\n\twhile (pos < max) {\n\t\tint c = styler.SafeGetCharAt(pos, '\\0');\n\t\tint n = styler.SafeGetCharAt(pos + 1, '\\0');\n\t\tint n2 = styler.SafeGetCharAt(pos + 2, '\\0');\n\n\t\tif (pos == 0 && c == '#' && n == '!' && n2 != '[') {\n\t\t\tpos += 2;\n\t\t\tResumeLineComment(styler, pos, max, NotDocComment);\n\t\t} else if (IsWhitespace(c)) {\n\t\t\tScanWhitespace(styler, pos, max);\n\t\t} else if (c == '/' && (n == '/' || n == '*')) {\n\t\t\tScanComments(styler, pos, max);\n\t\t} else if (c == 'r' && (n == '#' || n == '\"')) {\n\t\t\tScanRawString(styler, pos, max, false);\n\t\t} else if (c == 'b' && n == 'r' && (n2 == '#' || n2 == '\"')) {\n\t\t\tpos++;\n\t\t\tScanRawString(styler, pos, max, true);\n\t\t} else if (c == 'b' && n == '\"') {\n\t\t\tpos += 2;\n\t\t\tResumeString(styler, pos, max, true);\n\t\t} else if (c == 'b' && n == '\\'') {\n\t\t\tpos++;\n\t\t\tScanCharacterLiteralOrLifetime(styler, pos, true);\n\t\t} else if (IsIdentifierStart(c)) {\n\t\t\tScanIdentifier(styler, pos, keywords);\n\t\t} else if (IsADigit(c)) {\n\t\t\tScanNumber(styler, pos);\n\t\t} else if (IsThreeCharOperator(c, n, n2)) {\n\t\t\tpos += 3;\n\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_OPERATOR);\n\t\t} else if (IsTwoCharOperator(c, n)) {\n\t\t\tpos += 2;\n\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_OPERATOR);\n\t\t} else if (IsOneCharOperator(c)) {\n\t\t\tpos++;\n\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_OPERATOR);\n\t\t} else if (c == '\\'') {\n\t\t\tScanCharacterLiteralOrLifetime(styler, pos, false);\n\t\t} else if (c == '\"') {\n\t\t\tpos++;\n\t\t\tResumeString(styler, pos, max, false);\n\t\t} else {\n\t\t\tpos++;\n\t\t\tstyler.ColourTo(pos - 1, SCE_RUST_LEXERROR);\n\t\t}\n\t}\n\tstyler.ColourTo(pos - 1, SCE_RUST_DEFAULT);\n\tstyler.Flush();\n}\n\nvoid SCI_METHOD LexerRust::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\n\tif (!options.fold)\n\t\treturn;\n\n\tLexAccessor styler(pAccess);\n\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tbool inLineComment = false;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tSci_PositionU lineStartNext = styler.LineStart(lineCurrent+1);\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tconst bool userDefinedFoldMarkers = !options.foldExplicitStart.empty() && !options.foldExplicitEnd.empty();\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = i == (lineStartNext-1);\n\t\tif ((style == SCE_RUST_COMMENTLINE) || (style == SCE_RUST_COMMENTLINEDOC))\n\t\t\tinLineComment = true;\n\t\tif (options.foldComment && options.foldCommentMultiline && IsStreamCommentStyle(style) && !inLineComment) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (options.foldComment && options.foldCommentExplicit && ((style == SCE_RUST_COMMENTLINE) || options.foldExplicitAnywhere)) {\n\t\t\tif (userDefinedFoldMarkers) {\n\t\t\t\tif (styler.Match(i, options.foldExplicitStart.c_str())) {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (styler.Match(i, options.foldExplicitEnd.c_str())) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (options.foldSyntaxBased && (style == SCE_RUST_OPERATOR)) {\n\t\t\tif (ch == '{') {\n\t\t\t\t// Measure the minimum before a '{' to allow\n\t\t\t\t// folding on \"} else {\"\n\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (!IsASpace(ch))\n\t\t\tvisibleChars++;\n\t\tif (atEOL || (i == endPos-1)) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif (options.foldSyntaxBased && options.foldAtElse) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && options.foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlineStartNext = styler.LineStart(lineCurrent+1);\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tif (atEOL && (i == static_cast<Sci_PositionU>(styler.Length()-1))) {\n\t\t\t\t// There is an empty line at end of file so give it same level and empty\n\t\t\t\tstyler.SetLevel(lineCurrent, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG);\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\t\t\tinLineComment = false;\n\t\t}\n\t}\n}\n\nLexerModule lmRust(SCLEX_RUST, LexerRust::LexerFactoryRust, \"rust\", rustWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexSML.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexSML.cxx\n ** Lexer for SML.\n **/\n// Copyright 2009 by James Moffatt and Yuzhou Xin\n// Modified from LexCaml.cxx by Robert Roessler <robertr@rftp.com> Copyright 2005\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\ninline int  issml(int c) {return isalnum(c) || c == '_';}\ninline int issmlf(int c) {return isalpha(c) || c == '_';}\ninline int issmld(int c) {return isdigit(c) || c == '_';}\n\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ColouriseSMLDoc(\n\tSci_PositionU startPos, Sci_Position length,\n\tint initStyle,\n\tWordList *keywordlists[],\n\tAccessor &styler)\n{\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tint nesting = 0;\n\tif (sc.state < SCE_SML_STRING)\n\t\tsc.state = SCE_SML_DEFAULT;\n\tif (sc.state >= SCE_SML_COMMENT)\n\t\tnesting = (sc.state & 0x0f) - SCE_SML_COMMENT;\n\n\tSci_PositionU chToken = 0;\n\tint chBase = 0, chLit = 0;\n\tWordList& keywords  = *keywordlists[0];\n\tWordList& keywords2 = *keywordlists[1];\n\tWordList& keywords3 = *keywordlists[2];\n\tconst int useMagic = styler.GetPropertyInt(\"lexer.caml.magic\", 0);\n\n\twhile (sc.More()) {\n\t\tint state2 = -1;\n\t\tSci_Position chColor = sc.currentPos - 1;\n\t\tbool advance = true;\n\n\t\tswitch (sc.state & 0x0f) {\n\t\tcase SCE_SML_DEFAULT:\n\t\t\tchToken = sc.currentPos;\n\t\t\tif (issmlf(sc.ch))\n\t\t\t\tstate2 = SCE_SML_IDENTIFIER;\n\t\t\telse if (sc.Match('`') && issmlf(sc.chNext))\n\t\t\t\tstate2 = SCE_SML_TAGNAME;\n\t\t\telse if (sc.Match('#')&&isdigit(sc.chNext))\n\t\t\t\t\tstate2 = SCE_SML_LINENUM;\n\t\t\telse if (sc.Match('#','\\\"')){\n\t\t\t\t\tstate2 = SCE_SML_CHAR,chLit = 0;\n\t\t\t\t\tsc.Forward();\n\n\t\t\t\t}\n\t\t\telse if (isdigit(sc.ch)) {\n\t\t\t\tstate2 = SCE_SML_NUMBER, chBase = 10;\n\t\t\t\tif (sc.Match('0') && strchr(\"xX\", sc.chNext))\n\t\t\t\t\tchBase = 16, sc.Forward();}\n\t\t\telse if (sc.Match('\\\"')&&sc.chPrev!='#')\n\t\t\t\tstate2 = SCE_SML_STRING;\n\t\t\telse if (sc.Match('(', '*')){\n\t\t\t\tstate2 = SCE_SML_COMMENT,\n\t\t\t\t\tsc.ch = ' ',\n\t\t\t\t\tsc.Forward();}\n\t\t\telse if (strchr(\"!~\"\n\t\t\t\t\t\"=<>@^+-*/\"\n\t\t\t\t\t\"()[];,:.#\", sc.ch))\n\t\t\t\tstate2 = SCE_SML_OPERATOR;\n\t\t\tbreak;\n\n\t\tcase SCE_SML_IDENTIFIER:\n\t\t\tif (!(issml(sc.ch) || sc.Match('\\''))) {\n\t\t\t\tconst Sci_Position n = sc.currentPos - chToken;\n\t\t\t\tif (n < 24) {\n\t\t\t\t\tchar t[24];\n\t\t\t\t\tfor (Sci_Position i = -n; i < 0; i++)\n\t\t\t\t\t\tt[n + i] = static_cast<char>(sc.GetRelative(i));\n\t\t\t\t\tt[n] = '\\0';\n\t\t\t\t\tif ((n == 1 && sc.chPrev == '_') || keywords.InList(t))\n\t\t\t\t\t\tsc.ChangeState(SCE_SML_KEYWORD);\n\t\t\t\t\telse if (keywords2.InList(t))\n\t\t\t\t\t\tsc.ChangeState(SCE_SML_KEYWORD2);\n\t\t\t\t\telse if (keywords3.InList(t))\n\t\t\t\t\t\tsc.ChangeState(SCE_SML_KEYWORD3);\n\t\t\t\t}\n\t\t\t\tstate2 = SCE_SML_DEFAULT, advance = false;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase SCE_SML_TAGNAME:\n\t\t\tif (!(issml(sc.ch) || sc.Match('\\'')))\n\t\t\t\tstate2 = SCE_SML_DEFAULT, advance = false;\n\t\t\tbreak;\n\n\t\tcase SCE_SML_LINENUM:\n\t\t\tif (!isdigit(sc.ch))\n\t\t\t\tstate2 = SCE_SML_DEFAULT, advance = false;\n\t\t\tbreak;\n\n\t\tcase SCE_SML_OPERATOR: {\n\t\t\tconst char* o = 0;\n\t\t\tif (issml(sc.ch) || isspace(sc.ch)\n\t\t\t\t|| (o = strchr(\")]};,\\'\\\"`#\", sc.ch),o)\n\t\t\t\t|| !strchr(\"!$%&*+-./:<=>?@^|~\", sc.ch)) {\n\t\t\t\tif (o && strchr(\")]};,\", sc.ch)) {\n\t\t\t\t\tif ((sc.Match(')') && sc.chPrev == '(')\n\t\t\t\t\t\t|| (sc.Match(']') && sc.chPrev == '['))\n\t\t\t\t\t\tsc.ChangeState(SCE_SML_KEYWORD);\n\t\t\t\t\tchColor++;\n\t\t\t\t} else\n\t\t\t\t\tadvance = false;\n\t\t\t\tstate2 = SCE_SML_DEFAULT;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\tcase SCE_SML_NUMBER:\n\t\t\tif (issmld(sc.ch) || IsADigit(sc.ch, chBase))\n\t\t\t\tbreak;\n\t\t\tif ((sc.Match('l') || sc.Match('L') || sc.Match('n'))\n\t\t\t\t&& (issmld(sc.chPrev) || IsADigit(sc.chPrev, chBase)))\n\t\t\t\tbreak;\n\t\t\tif (chBase == 10) {\n\t\t\t\tif (sc.Match('.') && issmld(sc.chPrev))\n\t\t\t\t\tbreak;\n\t\t\t\tif ((sc.Match('e') || sc.Match('E'))\n\t\t\t\t\t&& (issmld(sc.chPrev) || sc.chPrev == '.'))\n\t\t\t\t\tbreak;\n\t\t\t\tif ((sc.Match('+') || sc.Match('-'))\n\t\t\t\t\t&& (sc.chPrev == 'e' || sc.chPrev == 'E'))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tstate2 = SCE_SML_DEFAULT, advance = false;\n\t\t\tbreak;\n\n\t\tcase SCE_SML_CHAR:\n\t\t\tif (sc.Match('\\\\')) {\n\t\t\t\tchLit = 1;\n\t\t\t\tif (sc.chPrev == '\\\\')\n\t\t\t\t\tsc.ch = ' ';\n\t\t\t} else if ((sc.Match('\\\"') && sc.chPrev != '\\\\') || sc.atLineEnd) {\n\t\t\t\tstate2 = SCE_SML_DEFAULT;\n\t\t\t\tchLit = 1;\n\t\t\t\tif (sc.Match('\\\"'))\n\t\t\t\t\tchColor++;\n\t\t\t\telse\n\t\t\t\t\tsc.ChangeState(SCE_SML_IDENTIFIER);\n\t\t\t} else if (chLit < 1 && sc.currentPos - chToken >= 3)\n\t\t\t\tsc.ChangeState(SCE_SML_IDENTIFIER), advance = false;\n\t\t\tbreak;\n\n\t\tcase SCE_SML_STRING:\n\t\t\tif (sc.Match('\\\\') && sc.chPrev == '\\\\')\n\t\t\t\tsc.ch = ' ';\n\t\t\telse if (sc.Match('\\\"') && sc.chPrev != '\\\\')\n\t\t\t\tstate2 = SCE_SML_DEFAULT, chColor++;\n\t\t\tbreak;\n\n\t\tcase SCE_SML_COMMENT:\n\t\tcase SCE_SML_COMMENT1:\n\t\tcase SCE_SML_COMMENT2:\n\t\tcase SCE_SML_COMMENT3:\n\t\t\tif (sc.Match('(', '*'))\n\t\t\t\tstate2 = sc.state + 1, chToken = sc.currentPos,\n\t\t\t\t\tsc.ch = ' ',\n\t\t\t\t\tsc.Forward(), nesting++;\n\t\t\telse if (sc.Match(')') && sc.chPrev == '*') {\n\t\t\t\tif (nesting)\n\t\t\t\t\tstate2 = (sc.state & 0x0f) - 1, chToken = 0, nesting--;\n\t\t\t\telse\n\t\t\t\t\tstate2 = SCE_SML_DEFAULT;\n\t\t\t\tchColor++;\n\t\t\t} else if (useMagic && sc.currentPos - chToken == 4\n\t\t\t\t&& sc.Match('c') && sc.chPrev == 'r' && sc.GetRelative(-2) == '@')\n\t\t\t\tsc.state |= 0x10;\n\t\t\tbreak;\n\t\t}\n\n\t\tif (state2 >= 0)\n\t\t\tstyler.ColourTo(chColor, sc.state), sc.ChangeState(state2);\n\t\tif (advance)\n\t\t\tsc.Forward();\n\t}\n\n\tsc.Complete();\n}\n\nstatic void FoldSMLDoc(\n\tSci_PositionU, Sci_Position,\n\tint,\n\tWordList *[],\n\tAccessor &)\n{\n}\n\nstatic const char * const SMLWordListDesc[] = {\n\t\"Keywords\",\n\t\"Keywords2\",\n\t\"Keywords3\",\n\t0\n};\n\nLexerModule lmSML(SCLEX_SML, ColouriseSMLDoc, \"SML\", FoldSMLDoc, SMLWordListDesc);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexSQL.cpp",
    "content": "//-*- coding: utf-8 -*-\n// Scintilla source code edit control\n/** @file LexSQL.cxx\n ** Lexer for SQL, including PL/SQL and SQL*Plus.\n ** Improved by Jérôme LAFORGE <jerome.laforge_AT_gmail_DOT_com> from 2010 to 2012.\n **/\n// Copyright 1998-2012 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n#include \"SparseState.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(int ch, bool sqlAllowDottedWord) {\n\tif (!sqlAllowDottedWord)\n\t\treturn (ch < 0x80) && (isalnum(ch) || ch == '_');\n\telse\n\t\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '.');\n}\n\nstatic inline bool IsAWordStart(int ch) {\n\treturn (ch < 0x80) && (isalpha(ch) || ch == '_');\n}\n\nstatic inline bool IsADoxygenChar(int ch) {\n\treturn (islower(ch) || ch == '$' || ch == '@' ||\n\t        ch == '\\\\' || ch == '&' || ch == '<' ||\n\t        ch == '>' || ch == '#' || ch == '{' ||\n\t        ch == '}' || ch == '[' || ch == ']');\n}\n\nstatic inline bool IsANumberChar(int ch, int chPrev) {\n\t// Not exactly following number definition (several dots are seen as OK, etc.)\n\t// but probably enough in most cases.\n\treturn (ch < 0x80) &&\n\t       (isdigit(ch) || toupper(ch) == 'E' ||\n\t        ch == '.' || ((ch == '-' || ch == '+') && chPrev < 0x80 && toupper(chPrev) == 'E'));\n}\n\ntypedef unsigned int sql_state_t;\n\nclass SQLStates {\npublic :\n\tvoid Set(Sci_Position lineNumber, unsigned short int sqlStatesLine) {\n\t\tsqlStatement.Set(lineNumber, sqlStatesLine);\n\t}\n\n\tsql_state_t IgnoreWhen (sql_state_t sqlStatesLine, bool enable) {\n\t\tif (enable)\n\t\t\tsqlStatesLine |= MASK_IGNORE_WHEN;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_IGNORE_WHEN;\n\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t IntoCondition (sql_state_t sqlStatesLine, bool enable) {\n\t\tif (enable)\n\t\t\tsqlStatesLine |= MASK_INTO_CONDITION;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_INTO_CONDITION;\n\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t IntoExceptionBlock (sql_state_t sqlStatesLine, bool enable) {\n\t\tif (enable)\n\t\t\tsqlStatesLine |= MASK_INTO_EXCEPTION;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_INTO_EXCEPTION;\n\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t IntoDeclareBlock (sql_state_t sqlStatesLine, bool enable) {\n\t\tif (enable)\n\t\t\tsqlStatesLine |= MASK_INTO_DECLARE;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_INTO_DECLARE;\n\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t IntoMergeStatement (sql_state_t sqlStatesLine, bool enable) {\n\t\tif (enable)\n\t\t\tsqlStatesLine |= MASK_MERGE_STATEMENT;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_MERGE_STATEMENT;\n\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t CaseMergeWithoutWhenFound (sql_state_t sqlStatesLine, bool found) {\n\t\tif (found)\n\t\t\tsqlStatesLine |= MASK_CASE_MERGE_WITHOUT_WHEN_FOUND;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_CASE_MERGE_WITHOUT_WHEN_FOUND;\n\n\t\treturn sqlStatesLine;\n\t}\n\tsql_state_t IntoSelectStatementOrAssignment (sql_state_t sqlStatesLine, bool found) {\n\t\tif (found)\n\t\t\tsqlStatesLine |= MASK_INTO_SELECT_STATEMENT_OR_ASSIGNEMENT;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_INTO_SELECT_STATEMENT_OR_ASSIGNEMENT;\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t BeginCaseBlock (sql_state_t sqlStatesLine) {\n\t\tif ((sqlStatesLine & MASK_NESTED_CASES) < MASK_NESTED_CASES) {\n\t\t\tsqlStatesLine++;\n\t\t}\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t EndCaseBlock (sql_state_t sqlStatesLine) {\n\t\tif ((sqlStatesLine & MASK_NESTED_CASES) > 0) {\n\t\t\tsqlStatesLine--;\n\t\t}\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t IntoCreateStatement (sql_state_t sqlStatesLine, bool enable) {\n\t\tif (enable)\n\t\t\tsqlStatesLine |= MASK_INTO_CREATE;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_INTO_CREATE;\n\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t IntoCreateViewStatement (sql_state_t sqlStatesLine, bool enable) {\n\t\tif (enable)\n\t\t\tsqlStatesLine |= MASK_INTO_CREATE_VIEW;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_INTO_CREATE_VIEW;\n\n\t\treturn sqlStatesLine;\n\t}\n\n\tsql_state_t IntoCreateViewAsStatement (sql_state_t sqlStatesLine, bool enable) {\n\t\tif (enable)\n\t\t\tsqlStatesLine |= MASK_INTO_CREATE_VIEW_AS_STATEMENT;\n\t\telse\n\t\t\tsqlStatesLine &= ~MASK_INTO_CREATE_VIEW_AS_STATEMENT;\n\n\t\treturn sqlStatesLine;\n\t}\n\n\tbool IsIgnoreWhen (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_IGNORE_WHEN) != 0;\n\t}\n\n\tbool IsIntoCondition (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_INTO_CONDITION) != 0;\n\t}\n\n\tbool IsIntoCaseBlock (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_NESTED_CASES) != 0;\n\t}\n\n\tbool IsIntoExceptionBlock (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_INTO_EXCEPTION) != 0;\n\t}\n\tbool IsIntoSelectStatementOrAssignment (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_INTO_SELECT_STATEMENT_OR_ASSIGNEMENT) != 0;\n\t}\n\tbool IsCaseMergeWithoutWhenFound (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_CASE_MERGE_WITHOUT_WHEN_FOUND) != 0;\n\t}\n\n\tbool IsIntoDeclareBlock (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_INTO_DECLARE) != 0;\n\t}\n\n\tbool IsIntoMergeStatement (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_MERGE_STATEMENT) != 0;\n\t}\n\n\tbool IsIntoCreateStatement (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_INTO_CREATE) != 0;\n\t}\n\n\tbool IsIntoCreateViewStatement (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_INTO_CREATE_VIEW) != 0;\n\t}\n\n\tbool IsIntoCreateViewAsStatement (sql_state_t sqlStatesLine) {\n\t\treturn (sqlStatesLine & MASK_INTO_CREATE_VIEW_AS_STATEMENT) != 0;\n\t}\n\n\tsql_state_t ForLine(Sci_Position lineNumber) {\n\t\treturn sqlStatement.ValueAt(lineNumber);\n\t}\n\n\tSQLStates() {}\n\nprivate :\n\tSparseState <sql_state_t> sqlStatement;\n\tenum {\n\t\tMASK_NESTED_CASES                         = 0x0001FF,\n\t\tMASK_INTO_SELECT_STATEMENT_OR_ASSIGNEMENT = 0x000200,\n\t\tMASK_CASE_MERGE_WITHOUT_WHEN_FOUND        = 0x000400,\n\t\tMASK_MERGE_STATEMENT                      = 0x000800,\n\t\tMASK_INTO_DECLARE                         = 0x001000,\n\t\tMASK_INTO_EXCEPTION                       = 0x002000,\n\t\tMASK_INTO_CONDITION                       = 0x004000,\n\t\tMASK_IGNORE_WHEN                          = 0x008000,\n\t\tMASK_INTO_CREATE                          = 0x010000,\n\t\tMASK_INTO_CREATE_VIEW                     = 0x020000,\n\t\tMASK_INTO_CREATE_VIEW_AS_STATEMENT        = 0x040000\n\t};\n};\n\n// Options used for LexerSQL\nstruct OptionsSQL {\n\tbool fold;\n\tbool foldAtElse;\n\tbool foldComment;\n\tbool foldCompact;\n\tbool foldOnlyBegin;\n\tbool sqlBackticksIdentifier;\n\tbool sqlNumbersignComment;\n\tbool sqlBackslashEscapes;\n\tbool sqlAllowDottedWord;\n\tOptionsSQL() {\n\t\tfold = false;\n\t\tfoldAtElse = false;\n\t\tfoldComment = false;\n\t\tfoldCompact = false;\n\t\tfoldOnlyBegin = false;\n\t\tsqlBackticksIdentifier = false;\n\t\tsqlNumbersignComment = false;\n\t\tsqlBackslashEscapes = false;\n\t\tsqlAllowDottedWord = false;\n\t}\n};\n\nstatic const char * const sqlWordListDesc[] = {\n\t\"Keywords\",\n\t\"Database Objects\",\n\t\"PLDoc\",\n\t\"SQL*Plus\",\n\t\"User Keywords 1\",\n\t\"User Keywords 2\",\n\t\"User Keywords 3\",\n\t\"User Keywords 4\",\n\t0\n};\n\nstruct OptionSetSQL : public OptionSet<OptionsSQL> {\n\tOptionSetSQL() {\n\t\tDefineProperty(\"fold\", &OptionsSQL::fold);\n\n\t\tDefineProperty(\"fold.sql.at.else\", &OptionsSQL::foldAtElse,\n\t\t               \"This option enables SQL folding on a \\\"ELSE\\\" and \\\"ELSIF\\\" line of an IF statement.\");\n\n\t\tDefineProperty(\"fold.comment\", &OptionsSQL::foldComment);\n\n\t\tDefineProperty(\"fold.compact\", &OptionsSQL::foldCompact);\n\n\t\tDefineProperty(\"fold.sql.only.begin\", &OptionsSQL::foldOnlyBegin);\n\n\t\tDefineProperty(\"lexer.sql.backticks.identifier\", &OptionsSQL::sqlBackticksIdentifier);\n\n\t\tDefineProperty(\"lexer.sql.numbersign.comment\", &OptionsSQL::sqlNumbersignComment,\n\t\t               \"If \\\"lexer.sql.numbersign.comment\\\" property is set to 0 a line beginning with '#' will not be a comment.\");\n\n\t\tDefineProperty(\"sql.backslash.escapes\", &OptionsSQL::sqlBackslashEscapes,\n\t\t               \"Enables backslash as an escape character in SQL.\");\n\n\t\tDefineProperty(\"lexer.sql.allow.dotted.word\", &OptionsSQL::sqlAllowDottedWord,\n\t\t               \"Set to 1 to colourise recognized words with dots \"\n\t\t               \"(recommended for Oracle PL/SQL objects).\");\n\n\t\tDefineWordListSets(sqlWordListDesc);\n\t}\n};\n\nclass LexerSQL : public ILexer {\npublic :\n\tLexerSQL() {}\n\n\tvirtual ~LexerSQL() {}\n\n\tint SCI_METHOD Version () const {\n\t\treturn lvOriginal;\n\t}\n\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\n\tconst char * SCI_METHOD PropertyNames() {\n\t\treturn osSQL.PropertyNames();\n\t}\n\n\tint SCI_METHOD PropertyType(const char *name) {\n\t\treturn osSQL.PropertyType(name);\n\t}\n\n\tconst char * SCI_METHOD DescribeProperty(const char *name) {\n\t\treturn osSQL.DescribeProperty(name);\n\t}\n\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val) {\n\t\tif (osSQL.PropertySet(&options, key, val)) {\n\t\t\treturn 0;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tconst char * SCI_METHOD DescribeWordListSets() {\n\t\treturn osSQL.DescribeWordListSets();\n\t}\n\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n\n\tvoid * SCI_METHOD PrivateCall(int, void *) {\n\t\treturn 0;\n\t}\n\n\tstatic ILexer *LexerFactorySQL() {\n\t\treturn new LexerSQL();\n\t}\nprivate:\n\tbool IsStreamCommentStyle(int style) {\n\t\treturn style == SCE_SQL_COMMENT ||\n\t\t       style == SCE_SQL_COMMENTDOC ||\n\t\t       style == SCE_SQL_COMMENTDOCKEYWORD ||\n\t\t       style == SCE_SQL_COMMENTDOCKEYWORDERROR;\n\t}\n\n\tbool IsCommentStyle (int style) {\n\t\tswitch (style) {\n\t\tcase SCE_SQL_COMMENT :\n\t\tcase SCE_SQL_COMMENTDOC :\n\t\tcase SCE_SQL_COMMENTLINE :\n\t\tcase SCE_SQL_COMMENTLINEDOC :\n\t\tcase SCE_SQL_COMMENTDOCKEYWORD :\n\t\tcase SCE_SQL_COMMENTDOCKEYWORDERROR :\n\t\t\treturn true;\n\t\tdefault :\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tbool IsCommentLine (Sci_Position line, LexAccessor &styler) {\n\t\tSci_Position pos = styler.LineStart(line);\n\t\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\t\tfor (Sci_Position i = pos; i + 1 < eol_pos; i++) {\n\t\t\tint style = styler.StyleAt(i);\n\t\t\t// MySQL needs -- comments to be followed by space or control char\n\t\t\tif (style == SCE_SQL_COMMENTLINE && styler.Match(i, \"--\"))\n\t\t\t\treturn true;\n\t\t\telse if (!IsASpaceOrTab(styler[i]))\n\t\t\t\treturn false;\n\t\t}\n\t\treturn false;\n\t}\n\n\tOptionsSQL options;\n\tOptionSetSQL osSQL;\n\tSQLStates sqlStates;\n\n\tWordList keywords1;\n\tWordList keywords2;\n\tWordList kw_pldoc;\n\tWordList kw_sqlplus;\n\tWordList kw_user1;\n\tWordList kw_user2;\n\tWordList kw_user3;\n\tWordList kw_user4;\n};\n\nSci_Position SCI_METHOD LexerSQL::WordListSet(int n, const char *wl) {\n\tWordList *wordListN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\twordListN = &keywords1;\n\t\tbreak;\n\tcase 1:\n\t\twordListN = &keywords2;\n\t\tbreak;\n\tcase 2:\n\t\twordListN = &kw_pldoc;\n\t\tbreak;\n\tcase 3:\n\t\twordListN = &kw_sqlplus;\n\t\tbreak;\n\tcase 4:\n\t\twordListN = &kw_user1;\n\t\tbreak;\n\tcase 5:\n\t\twordListN = &kw_user2;\n\t\tbreak;\n\tcase 6:\n\t\twordListN = &kw_user3;\n\t\tbreak;\n\tcase 7:\n\t\twordListN = &kw_user4;\n\t}\n\tSci_Position firstModification = -1;\n\tif (wordListN) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nvoid SCI_METHOD LexerSQL::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tLexAccessor styler(pAccess);\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tint styleBeforeDCKeyword = SCE_SQL_DEFAULT;\n\tSci_Position offset = 0;\n\n\tfor (; sc.More(); sc.Forward(), offset++) {\n\t\t// Determine if the current state should terminate.\n\t\tswitch (sc.state) {\n\t\tcase SCE_SQL_OPERATOR:\n\t\t\tsc.SetState(SCE_SQL_DEFAULT);\n\t\t\tbreak;\n\t\tcase SCE_SQL_NUMBER:\n\t\t\t// We stop the number definition on non-numerical non-dot non-eE non-sign char\n\t\t\tif (!IsANumberChar(sc.ch, sc.chPrev)) {\n\t\t\t\tsc.SetState(SCE_SQL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_IDENTIFIER:\n\t\t\tif (!IsAWordChar(sc.ch, options.sqlAllowDottedWord)) {\n\t\t\t\tint nextState = SCE_SQL_DEFAULT;\n\t\t\t\tchar s[1000];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (keywords1.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SQL_WORD);\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SQL_WORD2);\n\t\t\t\t} else if (kw_sqlplus.InListAbbreviated(s, '~')) {\n\t\t\t\t\tsc.ChangeState(SCE_SQL_SQLPLUS);\n\t\t\t\t\tif (strncmp(s, \"rem\", 3) == 0) {\n\t\t\t\t\t\tnextState = SCE_SQL_SQLPLUS_COMMENT;\n\t\t\t\t\t} else if (strncmp(s, \"pro\", 3) == 0) {\n\t\t\t\t\t\tnextState = SCE_SQL_SQLPLUS_PROMPT;\n\t\t\t\t\t}\n\t\t\t\t} else if (kw_user1.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SQL_USER1);\n\t\t\t\t} else if (kw_user2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SQL_USER2);\n\t\t\t\t} else if (kw_user3.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SQL_USER3);\n\t\t\t\t} else if (kw_user4.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SQL_USER4);\n\t\t\t\t}\n\t\t\t\tsc.SetState(nextState);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_QUOTEDIDENTIFIER:\n\t\t\tif (sc.ch == 0x60) {\n\t\t\t\tif (sc.chNext == 0x60) {\n\t\t\t\t\tsc.Forward();\t// Ignore it\n\t\t\t\t} else {\n\t\t\t\t\tsc.ForwardSetState(SCE_SQL_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_COMMENT:\n\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_SQL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_COMMENTDOC:\n\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_SQL_DEFAULT);\n\t\t\t} else if (sc.ch == '@' || sc.ch == '\\\\') { // Doxygen support\n\t\t\t\t// Verify that we have the conditions to mark a comment-doc-keyword\n\t\t\t\tif ((IsASpace(sc.chPrev) || sc.chPrev == '*') && (!IsASpace(sc.chNext))) {\n\t\t\t\t\tstyleBeforeDCKeyword = SCE_SQL_COMMENTDOC;\n\t\t\t\t\tsc.SetState(SCE_SQL_COMMENTDOCKEYWORD);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_COMMENTLINE:\n\t\tcase SCE_SQL_COMMENTLINEDOC:\n\t\tcase SCE_SQL_SQLPLUS_COMMENT:\n\t\tcase SCE_SQL_SQLPLUS_PROMPT:\n\t\t\tif (sc.atLineStart) {\n\t\t\t\tsc.SetState(SCE_SQL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_COMMENTDOCKEYWORD:\n\t\t\tif ((styleBeforeDCKeyword == SCE_SQL_COMMENTDOC) && sc.Match('*', '/')) {\n\t\t\t\tsc.ChangeState(SCE_SQL_COMMENTDOCKEYWORDERROR);\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_SQL_DEFAULT);\n\t\t\t} else if (!IsADoxygenChar(sc.ch)) {\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (!isspace(sc.ch) || !kw_pldoc.InList(s + 1)) {\n\t\t\t\t\tsc.ChangeState(SCE_SQL_COMMENTDOCKEYWORDERROR);\n\t\t\t\t}\n\t\t\t\tsc.SetState(styleBeforeDCKeyword);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_CHARACTER:\n\t\t\tif (options.sqlBackslashEscapes && sc.ch == '\\\\') {\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tif (sc.chNext == '\\\"') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.ForwardSetState(SCE_SQL_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_STRING:\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\t// Escape sequence\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tif (sc.chNext == '\\\"') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tsc.ForwardSetState(SCE_SQL_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCE_SQL_QOPERATOR:\n\t\t\t// Locate the unique Q operator character\n\t\t\tsc.Complete();\n\t\t\tchar qOperator = 0x00;\n\t\t\tfor (Sci_Position styleStartPos = sc.currentPos; styleStartPos > 0; --styleStartPos) {\n\t\t\t\tif (styler.StyleAt(styleStartPos - 1) != SCE_SQL_QOPERATOR) {\n\t\t\t\t\tqOperator = styler.SafeGetCharAt(styleStartPos + 2);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchar qComplement = 0x00;\n\n\t\t\tif (qOperator == '<') {\n\t\t\t\tqComplement = '>';\n\t\t\t} else if (qOperator == '(') {\n\t\t\t\tqComplement = ')';\n\t\t\t} else if (qOperator == '{') {\n\t\t\t\tqComplement = '}';\n\t\t\t} else if (qOperator == '[') {\n\t\t\t\tqComplement = ']';\n\t\t\t} else {\n\t\t\t\tqComplement = qOperator;\n\t\t\t}\n\n\t\t\tif (sc.Match(qComplement, '\\'')) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_SQL_DEFAULT);\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_SQL_DEFAULT) {\n\t\t\tif (sc.Match('q', '\\'') || sc.Match('Q', '\\'')) {\n\t\t\t\tsc.SetState(SCE_SQL_QOPERATOR);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext)) ||\n\t\t\t          ((sc.ch == '-' || sc.ch == '+') && IsADigit(sc.chNext) && !IsADigit(sc.chPrev))) {\n\t\t\t\tsc.SetState(SCE_SQL_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_SQL_IDENTIFIER);\n\t\t\t} else if (sc.ch == 0x60 && options.sqlBackticksIdentifier) {\n\t\t\t\tsc.SetState(SCE_SQL_QUOTEDIDENTIFIER);\n\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\tif (sc.Match(\"/**\") || sc.Match(\"/*!\")) {\t// Support of Doxygen doc. style\n\t\t\t\t\tsc.SetState(SCE_SQL_COMMENTDOC);\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_SQL_COMMENT);\n\t\t\t\t}\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('-', '-')) {\n\t\t\t\t// MySQL requires a space or control char after --\n\t\t\t\t// http://dev.mysql.com/doc/mysql/en/ansi-diff-comments.html\n\t\t\t\t// Perhaps we should enforce that with proper property:\n\t\t\t\t//~ \t\t\t} else if (sc.Match(\"-- \")) {\n\t\t\t\tsc.SetState(SCE_SQL_COMMENTLINE);\n\t\t\t} else if (sc.ch == '#' && options.sqlNumbersignComment) {\n\t\t\t\tsc.SetState(SCE_SQL_COMMENTLINEDOC);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_SQL_CHARACTER);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_SQL_STRING);\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\tsc.SetState(SCE_SQL_OPERATOR);\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nvoid SCI_METHOD LexerSQL::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\tif (!options.fold)\n\t\treturn;\n\tLexAccessor styler(pAccess);\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\n\tif (lineCurrent > 0) {\n\t\t// Backtrack to previous line in case need to fix its fold status for folding block of single-line comments (i.e. '--').\n\t\tSci_Position lastNLPos = -1;\n\t\t// And keep going back until we find an operator ';' followed\n\t\t// by white-space and/or comments. This will improve folding.\n\t\twhile (--startPos > 0) {\n\t\t\tchar ch = styler[startPos];\n\t\t\tif (ch == '\\n' || (ch == '\\r' && styler[startPos + 1] != '\\n')) {\n\t\t\t\tlastNLPos = startPos;\n\t\t\t} else if (ch == ';' &&\n\t\t\t\t   styler.StyleAt(startPos) == SCE_SQL_OPERATOR) {\n\t\t\t\tbool isAllClear = true;\n\t\t\t\tfor (Sci_Position tempPos = startPos + 1;\n\t\t\t\t     tempPos < lastNLPos;\n\t\t\t\t     ++tempPos) {\n\t\t\t\t\tint tempStyle = styler.StyleAt(tempPos);\n\t\t\t\t\tif (!IsCommentStyle(tempStyle)\n\t\t\t\t\t    && tempStyle != SCE_SQL_DEFAULT) {\n\t\t\t\t\t\tisAllClear = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isAllClear) {\n\t\t\t\t\tstartPos = lastNLPos + 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tlineCurrent = styler.GetLine(startPos);\n\t\tif (lineCurrent > 0)\n\t\t\tlevelCurrent = styler.LevelAt(lineCurrent - 1) >> 16;\n\t}\n\t// And because folding ends at ';', keep going until we find one\n\t// Otherwise if create ... view ... as is split over multiple\n\t// lines the folding won't always update immediately.\n\tSci_PositionU docLength = styler.Length();\n\tfor (; endPos < docLength; ++endPos) {\n\t\tif (styler.SafeGetCharAt(endPos) == ';') {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tbool endFound = false;\n\tbool isUnfoldingIgnored = false;\n\t// this statementFound flag avoids to fold when the statement is on only one line by ignoring ELSE or ELSIF\n\t// eg. \"IF condition1 THEN ... ELSIF condition2 THEN ... ELSE ... END IF;\"\n\tbool statementFound = false;\n\tsql_state_t sqlStatesCurrentLine = 0;\n\tif (!options.foldOnlyBegin) {\n\t\tsqlStatesCurrentLine = sqlStates.ForLine(lineCurrent);\n\t}\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (atEOL || (!IsCommentStyle(style) && ch == ';')) {\n\t\t\tif (endFound) {\n\t\t\t\t//Maybe this is the end of \"EXCEPTION\" BLOCK (eg. \"BEGIN ... EXCEPTION ... END;\")\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoExceptionBlock(sqlStatesCurrentLine, false);\n\t\t\t}\n\t\t\t// set endFound and isUnfoldingIgnored to false if EOL is reached or ';' is found\n\t\t\tendFound = false;\n\t\t\tisUnfoldingIgnored = false;\n\t\t}\n\t\tif ((!IsCommentStyle(style) && ch == ';')) {\n\t\t\tif (sqlStates.IsIntoMergeStatement(sqlStatesCurrentLine)) {\n\t\t\t\t// This is the end of \"MERGE\" statement.\n\t\t\t\tif (!sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine))\n\t\t\t\t\tlevelNext--;\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoMergeStatement(sqlStatesCurrentLine, false);\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t\tif (sqlStates.IsIntoSelectStatementOrAssignment(sqlStatesCurrentLine))\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoSelectStatementOrAssignment(sqlStatesCurrentLine, false);\n\t\t\tif (sqlStates.IsIntoCreateStatement(sqlStatesCurrentLine)) {\n\t\t\t\tif (sqlStates.IsIntoCreateViewStatement(sqlStatesCurrentLine)) {\n\t\t\t\t\tif (sqlStates.IsIntoCreateViewAsStatement(sqlStatesCurrentLine)) {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCreateViewAsStatement(sqlStatesCurrentLine, false);\n\t\t\t\t\t}\n\t\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCreateViewStatement(sqlStatesCurrentLine, false);\n\t\t\t\t}\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCreateStatement(sqlStatesCurrentLine, false);\n\t\t\t}\n\t\t}\n\t\tif (ch == ':' && chNext == '=' && !IsCommentStyle(style))\n\t\t\tsqlStatesCurrentLine = sqlStates.IntoSelectStatementOrAssignment(sqlStatesCurrentLine, true);\n\n\t\tif (options.foldComment && IsStreamCommentStyle(style)) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (options.foldComment && (style == SCE_SQL_COMMENTLINE)) {\n\t\t\t// MySQL needs -- comments to be followed by space or control char\n\t\t\tif ((ch == '-') && (chNext == '-')) {\n\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\tchar chNext3 = styler.SafeGetCharAt(i + 3);\n\t\t\t\tif (chNext2 == '{' || chNext3 == '{') {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (chNext2 == '}' || chNext3 == '}') {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Fold block of single-line comments (i.e. '--').\n\t\tif (options.foldComment && atEOL && IsCommentLine(lineCurrent, styler)) {\n\t\t\tif (!IsCommentLine(lineCurrent - 1, styler) && IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelNext++;\n\t\t\telse if (IsCommentLine(lineCurrent - 1, styler) && !IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\tlevelNext--;\n\t\t}\n\t\tif (style == SCE_SQL_OPERATOR) {\n\t\t\tif (ch == '(') {\n\t\t\t\tif (levelCurrent > levelNext)\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == ')') {\n\t\t\t\tlevelNext--;\n\t\t\t} else if ((!options.foldOnlyBegin) && ch == ';') {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IgnoreWhen(sqlStatesCurrentLine, false);\n\t\t\t}\n\t\t}\n\t\t// If new keyword (cannot trigger on elseif or nullif, does less tests)\n\t\tif (style == SCE_SQL_WORD && stylePrev != SCE_SQL_WORD) {\n\t\t\tconst int MAX_KW_LEN = 9;\t// Maximum length of folding keywords\n\t\t\tchar s[MAX_KW_LEN + 2];\n\t\t\tunsigned int j = 0;\n\t\t\tfor (; j < MAX_KW_LEN + 1; j++) {\n\t\t\t\tif (!iswordchar(styler[i + j])) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ts[j] = static_cast<char>(tolower(styler[i + j]));\n\t\t\t}\n\t\t\tif (j == MAX_KW_LEN + 1) {\n\t\t\t\t// Keyword too long, don't test it\n\t\t\t\ts[0] = '\\0';\n\t\t\t} else {\n\t\t\t\ts[j] = '\\0';\n\t\t\t}\n\t\t\tif (!options.foldOnlyBegin &&\n\t\t\t        strcmp(s, \"select\") == 0) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoSelectStatementOrAssignment(sqlStatesCurrentLine, true);\n\t\t\t} else if (strcmp(s, \"if\") == 0) {\n\t\t\t\tif (endFound) {\n\t\t\t\t\tendFound = false;\n\t\t\t\t\tif (options.foldOnlyBegin && !isUnfoldingIgnored) {\n\t\t\t\t\t\t// this end isn't for begin block, but for if block (\"end if;\")\n\t\t\t\t\t\t// so ignore previous \"end\" by increment levelNext.\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!options.foldOnlyBegin)\n\t\t\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCondition(sqlStatesCurrentLine, true);\n\t\t\t\t\tif (levelCurrent > levelNext) {\n\t\t\t\t\t\t// doesn't include this line into the folding block\n\t\t\t\t\t\t// because doesn't hide IF (eg \"END; IF\")\n\t\t\t\t\t\tlevelCurrent = levelNext;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (!options.foldOnlyBegin &&\n\t\t\t           strcmp(s, \"then\") == 0 &&\n\t\t\t           sqlStates.IsIntoCondition(sqlStatesCurrentLine)) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCondition(sqlStatesCurrentLine, false);\n\t\t\t\tif (!options.foldOnlyBegin) {\n\t\t\t\t\tif (levelCurrent > levelNext) {\n\t\t\t\t\t\tlevelCurrent = levelNext;\n\t\t\t\t\t}\n\t\t\t\t\tif (!statementFound)\n\t\t\t\t\t\tlevelNext++;\n\n\t\t\t\t\tstatementFound = true;\n\t\t\t\t} else if (levelCurrent > levelNext) {\n\t\t\t\t\t// doesn't include this line into the folding block\n\t\t\t\t\t// because doesn't hide LOOP or CASE (eg \"END; LOOP\" or \"END; CASE\")\n\t\t\t\t\tlevelCurrent = levelNext;\n\t\t\t\t}\n\t\t\t} else if (strcmp(s, \"loop\") == 0 ||\n\t\t\t           strcmp(s, \"case\") == 0) {\n\t\t\t\tif (endFound) {\n\t\t\t\t\tendFound = false;\n\t\t\t\t\tif (options.foldOnlyBegin && !isUnfoldingIgnored) {\n\t\t\t\t\t\t// this end isn't for begin block, but for loop block (\"end loop;\") or case block (\"end case;\")\n\t\t\t\t\t\t// so ignore previous \"end\" by increment levelNext.\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t}\n\t\t\t\t\tif ((!options.foldOnlyBegin) && strcmp(s, \"case\") == 0) {\n\t\t\t\t\t\tsqlStatesCurrentLine = sqlStates.EndCaseBlock(sqlStatesCurrentLine);\n\t\t\t\t\t\tif (!sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine))\n\t\t\t\t\t\t\tlevelNext--; //again for the \"end case;\" and block when\n\t\t\t\t\t}\n\t\t\t\t} else if (!options.foldOnlyBegin) {\n\t\t\t\t\tif (strcmp(s, \"case\") == 0) {\n\t\t\t\t\t\tsqlStatesCurrentLine = sqlStates.BeginCaseBlock(sqlStatesCurrentLine);\n\t\t\t\t\t\tsqlStatesCurrentLine = sqlStates.CaseMergeWithoutWhenFound(sqlStatesCurrentLine, true);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (levelCurrent > levelNext)\n\t\t\t\t\t\tlevelCurrent = levelNext;\n\n\t\t\t\t\tif (!statementFound)\n\t\t\t\t\t\tlevelNext++;\n\n\t\t\t\t\tstatementFound = true;\n\t\t\t\t} else if (levelCurrent > levelNext) {\n\t\t\t\t\t// doesn't include this line into the folding block\n\t\t\t\t\t// because doesn't hide LOOP or CASE (eg \"END; LOOP\" or \"END; CASE\")\n\t\t\t\t\tlevelCurrent = levelNext;\n\t\t\t\t}\n\t\t\t} else if ((!options.foldOnlyBegin) && (\n\t\t\t               // folding for ELSE and ELSIF block only if foldAtElse is set\n\t\t\t               // and IF or CASE aren't on only one line with ELSE or ELSIF (with flag statementFound)\n\t\t\t               options.foldAtElse && !statementFound) && strcmp(s, \"elsif\") == 0) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCondition(sqlStatesCurrentLine, true);\n\t\t\t\tlevelCurrent--;\n\t\t\t\tlevelNext--;\n\t\t\t} else if ((!options.foldOnlyBegin) && (\n\t\t\t               // folding for ELSE and ELSIF block only if foldAtElse is set\n\t\t\t               // and IF or CASE aren't on only one line with ELSE or ELSIF (with flag statementFound)\n\t\t\t               options.foldAtElse && !statementFound) && strcmp(s, \"else\") == 0) {\n\t\t\t\t// prevent also ELSE is on the same line (eg. \"ELSE ... END IF;\")\n\t\t\t\tstatementFound = true;\n\t\t\t\tif (sqlStates.IsIntoCaseBlock(sqlStatesCurrentLine) && sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine)) {\n\t\t\t\t\tsqlStatesCurrentLine = sqlStates.CaseMergeWithoutWhenFound(sqlStatesCurrentLine, false);\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else {\n\t\t\t\t\t// we are in same case \"} ELSE {\" in C language\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t} else if (strcmp(s, \"begin\") == 0) {\n\t\t\t\tlevelNext++;\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoDeclareBlock(sqlStatesCurrentLine, false);\n\t\t\t} else if ((strcmp(s, \"end\") == 0) ||\n\t\t\t           // SQL Anywhere permits IF ... ELSE ... ENDIF\n\t\t\t           // will only be active if \"endif\" appears in the\n\t\t\t           // keyword list.\n\t\t\t           (strcmp(s, \"endif\") == 0)) {\n\t\t\t\tendFound = true;\n\t\t\t\tlevelNext--;\n\t\t\t\tif (sqlStates.IsIntoSelectStatementOrAssignment(sqlStatesCurrentLine) && !sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine))\n\t\t\t\t\tlevelNext--;\n\t\t\t\tif (levelNext < SC_FOLDLEVELBASE) {\n\t\t\t\t\tlevelNext = SC_FOLDLEVELBASE;\n\t\t\t\t\tisUnfoldingIgnored = true;\n\t\t\t\t}\n\t\t\t} else if ((!options.foldOnlyBegin) &&\n\t\t\t           strcmp(s, \"when\") == 0 &&\n\t\t\t           !sqlStates.IsIgnoreWhen(sqlStatesCurrentLine) &&\n\t\t\t           !sqlStates.IsIntoExceptionBlock(sqlStatesCurrentLine) && (\n\t\t\t               sqlStates.IsIntoCaseBlock(sqlStatesCurrentLine) ||\n\t\t\t               sqlStates.IsIntoMergeStatement(sqlStatesCurrentLine)\n\t\t\t               )\n\t\t\t           ) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCondition(sqlStatesCurrentLine, true);\n\n\t\t\t\t// Don't foldind when CASE and WHEN are on the same line (with flag statementFound) (eg. \"CASE selector WHEN expression1 THEN sequence_of_statements1;\\n\")\n\t\t\t\t// and same way for MERGE statement.\n\t\t\t\tif (!statementFound) {\n\t\t\t\t\tif (!sqlStates.IsCaseMergeWithoutWhenFound(sqlStatesCurrentLine)) {\n\t\t\t\t\t\tlevelCurrent--;\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t}\n\t\t\t\t\tsqlStatesCurrentLine = sqlStates.CaseMergeWithoutWhenFound(sqlStatesCurrentLine, false);\n\t\t\t\t}\n\t\t\t} else if ((!options.foldOnlyBegin) && strcmp(s, \"exit\") == 0) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IgnoreWhen(sqlStatesCurrentLine, true);\n\t\t\t} else if ((!options.foldOnlyBegin) && !sqlStates.IsIntoDeclareBlock(sqlStatesCurrentLine) && strcmp(s, \"exception\") == 0) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoExceptionBlock(sqlStatesCurrentLine, true);\n\t\t\t} else if ((!options.foldOnlyBegin) &&\n\t\t\t           (strcmp(s, \"declare\") == 0 ||\n\t\t\t            strcmp(s, \"function\") == 0 ||\n\t\t\t            strcmp(s, \"procedure\") == 0 ||\n\t\t\t            strcmp(s, \"package\") == 0)) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoDeclareBlock(sqlStatesCurrentLine, true);\n\t\t\t} else if ((!options.foldOnlyBegin) &&\n\t\t\t           strcmp(s, \"merge\") == 0) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoMergeStatement(sqlStatesCurrentLine, true);\n\t\t\t\tsqlStatesCurrentLine = sqlStates.CaseMergeWithoutWhenFound(sqlStatesCurrentLine, true);\n\t\t\t\tlevelNext++;\n\t\t\t\tstatementFound = true;\n\t\t\t} else if ((!options.foldOnlyBegin) &&\n\t\t\t\t   strcmp(s, \"create\") == 0) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCreateStatement(sqlStatesCurrentLine, true);\n\t\t\t} else if ((!options.foldOnlyBegin) &&\n\t\t\t\t   strcmp(s, \"view\") == 0 &&\n\t\t\t\t   sqlStates.IsIntoCreateStatement(sqlStatesCurrentLine)) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCreateViewStatement(sqlStatesCurrentLine, true);\n\t\t\t} else if ((!options.foldOnlyBegin) &&\n\t\t\t\t   strcmp(s, \"as\") == 0 &&\n\t\t\t\t   sqlStates.IsIntoCreateViewStatement(sqlStatesCurrentLine) &&\n\t\t\t\t   ! sqlStates.IsIntoCreateViewAsStatement(sqlStatesCurrentLine)) {\n\t\t\t\tsqlStatesCurrentLine = sqlStates.IntoCreateViewAsStatement(sqlStatesCurrentLine, true);\n\t\t\t\tlevelNext++;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && options.foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tvisibleChars = 0;\n\t\t\tstatementFound = false;\n\t\t\tif (!options.foldOnlyBegin)\n\t\t\t\tsqlStates.Set(lineCurrent, sqlStatesCurrentLine);\n\t\t}\n\t\tif (!isspacechar(ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n}\n\nLexerModule lmSQL(SCLEX_SQL, LexerSQL::LexerFactorySQL, \"sql\", sqlWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexSTTXT.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexSTTXT.cxx\n ** Lexer for Structured Text language.\n ** Written by Pavel Bulochkin\n **/\n// The License.txt file describes the conditions under which this software may be distributed.\n\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ClassifySTTXTWord(WordList *keywordlists[], StyleContext &sc)\n{\n\tchar s[256] = { 0 };\n\tsc.GetCurrentLowered(s, sizeof(s));\n\n \tif ((*keywordlists[0]).InList(s)) {\n \t\tsc.ChangeState(SCE_STTXT_KEYWORD);\n \t}\n\n\telse if ((*keywordlists[1]).InList(s)) {\n\t\tsc.ChangeState(SCE_STTXT_TYPE);\n\t}\n\n\telse if ((*keywordlists[2]).InList(s)) {\n\t\tsc.ChangeState(SCE_STTXT_FUNCTION);\n\t}\n\n\telse if ((*keywordlists[3]).InList(s)) {\n\t\tsc.ChangeState(SCE_STTXT_FB);\n\t}\n\n\telse if ((*keywordlists[4]).InList(s)) {\n\t\tsc.ChangeState(SCE_STTXT_VARS);\n\t}\n\n\telse if ((*keywordlists[5]).InList(s)) {\n\t\tsc.ChangeState(SCE_STTXT_PRAGMAS);\n\t}\n\n\tsc.SetState(SCE_STTXT_DEFAULT);\n}\n\nstatic void ColouriseSTTXTDoc (Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\t\t\t\t\t\t  WordList *keywordlists[], Accessor &styler)\n{\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"_\", 0x80, true);\n\tCharacterSet setWordStart(CharacterSet::setAlpha, \"_\", 0x80, true);\n\tCharacterSet setNumber(CharacterSet::setDigits, \"_.eE\");\n\tCharacterSet setHexNumber(CharacterSet::setDigits, \"_abcdefABCDEF\");\n\tCharacterSet setOperator(CharacterSet::setNone,\",.+-*/:;<=>[]()%&\");\n\tCharacterSet setDataTime(CharacterSet::setDigits,\"_.-:dmshDMSH\");\n\n \tfor ( ; sc.More() ; sc.Forward())\n \t{\n\t\tif(sc.atLineStart && sc.state != SCE_STTXT_COMMENT)\n\t\t\tsc.SetState(SCE_STTXT_DEFAULT);\n\n\t\tswitch(sc.state)\n\t\t{\n\t\t\tcase SCE_STTXT_NUMBER: {\n\t\t\t\tif(!setNumber.Contains(sc.ch))\n\t\t\t\t\tsc.SetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_HEXNUMBER: {\n\t\t\t\tif (setHexNumber.Contains(sc.ch))\n\t\t\t\t\tcontinue;\n\t\t\t\telse if(setDataTime.Contains(sc.ch))\n\t\t\t\t\tsc.ChangeState(SCE_STTXT_DATETIME);\n\t\t\t\telse if(setWord.Contains(sc.ch))\n\t\t\t\t\tsc.ChangeState(SCE_STTXT_DEFAULT);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_DATETIME: {\n\t\t\t\tif (setDataTime.Contains(sc.ch))\n\t\t\t\t\tcontinue;\n\t\t\t\telse if(setWord.Contains(sc.ch))\n\t\t\t\t\tsc.ChangeState(SCE_STTXT_DEFAULT);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_OPERATOR: {\n\t\t\t\tsc.SetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_PRAGMA: {\n\t\t\t\tif (sc.ch == '}')\n\t\t\t\t\tsc.ForwardSetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_COMMENTLINE: {\n\t\t\t\tif (sc.atLineStart)\n\t\t\t\t\tsc.SetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_COMMENT: {\n\t\t\t\tif(sc.Match('*',')'))\n\t\t\t\t{\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_STTXT_DEFAULT);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_STRING1: {\n\t\t\t\tif(sc.atLineEnd)\n\t\t\t\t\tsc.SetState(SCE_STTXT_STRINGEOL);\n\t\t\t\telse if(sc.ch == '\\'' && sc.chPrev != '$')\n\t\t\t\t\tsc.ForwardSetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_STRING2: {\n\t\t\t\tif (sc.atLineEnd)\n\t\t\t\t\tsc.SetState(SCE_STTXT_STRINGEOL);\n\t\t\t\telse if(sc.ch == '\\\"' && sc.chPrev != '$')\n\t\t\t\t\tsc.ForwardSetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_STRINGEOL: {\n\t\t\t\tif(sc.atLineStart)\n\t\t\t\t\tsc.SetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_CHARACTER: {\n\t\t\t\tif(setHexNumber.Contains(sc.ch))\n\t\t\t\t\tsc.SetState(SCE_STTXT_HEXNUMBER);\n\t\t\t\telse if(setDataTime.Contains(sc.ch))\n\t\t\t\t\tsc.SetState(SCE_STTXT_DATETIME);\n\t\t\t\telse sc.SetState(SCE_STTXT_DEFAULT);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase SCE_STTXT_IDENTIFIER: {\n\t\t\t\tif(!setWord.Contains(sc.ch))\n\t\t\t\t\tClassifySTTXTWord(keywordlists, sc);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif(sc.state == SCE_STTXT_DEFAULT)\n\t\t{\n\t\t\tif(IsADigit(sc.ch))\n\t\t\t\tsc.SetState(SCE_STTXT_NUMBER);\n\t\t\telse if (setWordStart.Contains(sc.ch))\n\t\t\t\tsc.SetState(SCE_STTXT_IDENTIFIER);\n\t\t\telse if (sc.Match('/', '/'))\n\t\t\t\tsc.SetState(SCE_STTXT_COMMENTLINE);\n\t\t\telse if(sc.Match('(', '*'))\n\t\t\t\tsc.SetState(SCE_STTXT_COMMENT);\n\t\t\telse if (sc.ch == '{')\n\t\t\t\tsc.SetState(SCE_STTXT_PRAGMA);\n\t\t\telse if (sc.ch == '\\'')\n\t\t\t\tsc.SetState(SCE_STTXT_STRING1);\n\t\t\telse if (sc.ch == '\\\"')\n\t\t\t\tsc.SetState(SCE_STTXT_STRING2);\n\t\t\telse if(sc.ch == '#')\n\t\t\t\tsc.SetState(SCE_STTXT_CHARACTER);\n\t\t\telse if (setOperator.Contains(sc.ch))\n\t\t\t\tsc.SetState(SCE_STTXT_OPERATOR);\n\t\t}\n \t}\n\n\tif (sc.state == SCE_STTXT_IDENTIFIER && setWord.Contains(sc.chPrev))\n\t\tClassifySTTXTWord(keywordlists, sc);\n\n\tsc.Complete();\n}\n\nstatic const char * const STTXTWordListDesc[] = {\n\t\"Keywords\",\n\t\"Types\",\n\t\"Functions\",\n\t\"FB\",\n\t\"Local_Var\",\n\t\"Local_Pragma\",\n\t0\n};\n\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler, bool type)\n{\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eolPos = styler.LineStart(line + 1) - 1;\n\n\tfor (Sci_Position i = pos; i < eolPos; i++)\n\t{\n\t\tchar ch = styler[i];\n\t\tchar chNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styler.StyleAt(i);\n\n\t\tif(type) {\n\t\t\t if (ch == '/' && chNext == '/' && style == SCE_STTXT_COMMENTLINE)\n\t\t\t\treturn true;\n\t\t}\n\t\telse if (ch == '(' && chNext == '*' && style == SCE_STTXT_COMMENT)\n\t\t\tbreak;\n\n\t\tif (!IsASpaceOrTab(ch))\n\t\t\treturn false;\n\t}\n\n\tfor (Sci_Position i = eolPos-2; i>pos; i--)\n\t{\n\t\tchar ch = styler[i];\n\t\tchar chPrev = styler.SafeGetCharAt(i-1);\n\t\tint style = styler.StyleAt(i);\n\n\t\tif(ch == ')' && chPrev == '*' && style == SCE_STTXT_COMMENT)\n\t\t\treturn true;\n\t\tif(!IsASpaceOrTab(ch))\n\t\t\treturn false;\n\t}\n\n\treturn false;\n}\n\nstatic bool IsPragmaLine(Sci_Position line, Accessor &styler)\n{\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eolPos = styler.LineStart(line+1) - 1;\n\n\tfor (Sci_Position i = pos ; i < eolPos ; i++)\n\t{\n\t\tchar ch = styler[i];\n\t\tint style = styler.StyleAt(i);\n\n\t\tif(ch == '{' && style == SCE_STTXT_PRAGMA)\n\t\t\treturn true;\n\t\telse if (!IsASpaceOrTab(ch))\n\t\t\treturn false;\n\t}\n\treturn false;\n}\n\nstatic void GetRangeUpper(Sci_PositionU start,Sci_PositionU end,Accessor &styler,char *s,Sci_PositionU len)\n{\n\tSci_PositionU i = 0;\n\twhile ((i < end - start + 1) && (i < len-1)) {\n\t\ts[i] = static_cast<char>(toupper(styler[start + i]));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nstatic void ClassifySTTXTWordFoldPoint(int &levelCurrent,Sci_PositionU lastStart,\n\t\t\t\t\t\t\t\t\t Sci_PositionU currentPos, Accessor &styler)\n{\n\tchar s[256];\n\tGetRangeUpper(lastStart, currentPos, styler, s, sizeof(s));\n\n\t// See Table C.2 - Keywords\n\tif (!strcmp(s, \"ACTION\") ||\n\t\t!strcmp(s, \"CASE\") ||\n\t\t!strcmp(s, \"CONFIGURATION\") ||\n\t\t!strcmp(s, \"FOR\") ||\n\t\t!strcmp(s, \"FUNCTION\") ||\n\t\t!strcmp(s, \"FUNCTION_BLOCK\") ||\n\t\t!strcmp(s, \"IF\") ||\n\t\t!strcmp(s, \"INITIAL_STEP\") ||\n\t\t!strcmp(s, \"REPEAT\") ||\n\t\t!strcmp(s, \"RESOURCE\") ||\n\t\t!strcmp(s, \"STEP\") ||\n\t\t!strcmp(s, \"STRUCT\") ||\n\t\t!strcmp(s, \"TRANSITION\") ||\n\t\t!strcmp(s, \"TYPE\") ||\n\t\t!strcmp(s, \"VAR\") ||\n\t\t!strcmp(s, \"VAR_INPUT\") ||\n\t\t!strcmp(s, \"VAR_OUTPUT\") ||\n\t\t!strcmp(s, \"VAR_IN_OUT\") ||\n\t\t!strcmp(s, \"VAR_TEMP\") ||\n\t\t!strcmp(s, \"VAR_EXTERNAL\") ||\n\t\t!strcmp(s, \"VAR_ACCESS\") ||\n\t\t!strcmp(s, \"VAR_CONFIG\") ||\n\t\t!strcmp(s, \"VAR_GLOBAL\") ||\n\t\t!strcmp(s, \"WHILE\"))\n\t{\n\t\tlevelCurrent++;\n\t}\n\telse if (!strcmp(s, \"END_ACTION\") ||\n\t\t!strcmp(s, \"END_CASE\") ||\n\t\t!strcmp(s, \"END_CONFIGURATION\") ||\n\t\t!strcmp(s, \"END_FOR\") ||\n\t\t!strcmp(s, \"END_FUNCTION\") ||\n\t\t!strcmp(s, \"END_FUNCTION_BLOCK\") ||\n\t\t!strcmp(s, \"END_IF\") ||\n\t\t!strcmp(s, \"END_REPEAT\") ||\n\t\t!strcmp(s, \"END_RESOURCE\") ||\n\t\t!strcmp(s, \"END_STEP\") ||\n\t\t!strcmp(s, \"END_STRUCT\") ||\n\t\t!strcmp(s, \"END_TRANSITION\") ||\n\t\t!strcmp(s, \"END_TYPE\") ||\n\t\t!strcmp(s, \"END_VAR\") ||\n\t\t!strcmp(s, \"END_WHILE\"))\n\t{\n\t\tlevelCurrent--;\n\t\tif (levelCurrent < SC_FOLDLEVELBASE) {\n\t\t\tlevelCurrent = SC_FOLDLEVELBASE;\n\t\t}\n\t}\n}\n\nstatic void FoldSTTXTDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[],Accessor &styler)\n{\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldPreprocessor = styler.GetPropertyInt(\"fold.preprocessor\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tSci_Position lastStart = 0;\n\n\tCharacterSet setWord(CharacterSet::setAlphaNum, \"_\", 0x80, true);\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++)\n\t{\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (foldComment && style == SCE_STTXT_COMMENT) {\n\t\t\tif(stylePrev != SCE_STTXT_COMMENT)\n\t\t\t\tlevelCurrent++;\n\t\t\telse if(styleNext != SCE_STTXT_COMMENT && !atEOL)\n\t\t\t\tlevelCurrent--;\n\t\t}\n\t\tif ( foldComment && atEOL && ( IsCommentLine(lineCurrent, styler,false)\n\t\t\t|| IsCommentLine(lineCurrent,styler,true))) {\n \t\t\tif(!IsCommentLine(lineCurrent-1, styler,true) && IsCommentLine(lineCurrent+1, styler,true))\n\t\t\t\tlevelCurrent++;\n\t\t\tif (IsCommentLine(lineCurrent-1, styler,true) && !IsCommentLine(lineCurrent+1, styler,true))\n\t\t\t\tlevelCurrent--;\n\t\t\tif (!IsCommentLine(lineCurrent-1, styler,false) && IsCommentLine(lineCurrent+1, styler,false))\n\t\t\t\tlevelCurrent++;\n\t\t\tif (IsCommentLine(lineCurrent-1, styler,false) && !IsCommentLine(lineCurrent+1, styler,false))\n\t\t\t\tlevelCurrent--;\n\t\t}\n\t\tif(foldPreprocessor && atEOL && IsPragmaLine(lineCurrent, styler)) {\n\t\t\tif(!IsPragmaLine(lineCurrent-1, styler) && IsPragmaLine(lineCurrent+1, styler ))\n\t\t\t\tlevelCurrent++;\n\t\t\telse if(IsPragmaLine(lineCurrent-1, styler) && !IsPragmaLine(lineCurrent+1, styler))\n\t\t\t\tlevelCurrent--;\n\t\t}\n\t\tif (stylePrev != SCE_STTXT_KEYWORD && style == SCE_STTXT_KEYWORD) {\n\t\t\t\tlastStart = i;\n\t\t}\n\t\tif(stylePrev == SCE_STTXT_KEYWORD) {\n\t\t\tif(setWord.Contains(ch) && !setWord.Contains(chNext))\n\t\t\t\tClassifySTTXTWordFoldPoint(levelCurrent,lastStart, i, styler);\n\t\t}\n\t\tif (!IsASpace(ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent))\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\t// If we didn't reach the EOL in previous loop, store line level and whitespace information.\n\t\t// The rest will be filled in later...\n\t\tint lev = levelPrev;\n\t\tif (visibleChars == 0 && foldCompact)\n\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\tstyler.SetLevel(lineCurrent, lev);\n\t}\n}\n\nLexerModule lmSTTXT(SCLEX_STTXT, ColouriseSTTXTDoc, \"fcST\", FoldSTTXTDoc, STTXTWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexScriptol.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexScriptol.cxx\n ** Lexer for Scriptol.\n **/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ClassifyWordSol(Sci_PositionU start, Sci_PositionU end, WordList &keywords, Accessor &styler, char *prevWord)\n{\n    char s[100] = \"\";\n    bool wordIsNumber = isdigit(styler[start]) != 0;\n    for (Sci_PositionU i = 0; i < end - start + 1 && i < 30; i++)\n     {\n           s[i] = styler[start + i];\n           s[i + 1] = '\\0';\n     }\n    char chAttr = SCE_SCRIPTOL_IDENTIFIER;\n    if (0 == strcmp(prevWord, \"class\"))       chAttr = SCE_SCRIPTOL_CLASSNAME;\n    else if (wordIsNumber)                    chAttr = SCE_SCRIPTOL_NUMBER;\n    else if (keywords.InList(s))              chAttr = SCE_SCRIPTOL_KEYWORD;\n    else for (Sci_PositionU i = 0; i < end - start + 1; i++)  // test dotted idents\n    {\n        if (styler[start + i] == '.')\n        {\n            styler.ColourTo(start + i - 1, chAttr);\n            styler.ColourTo(start + i, SCE_SCRIPTOL_OPERATOR);\n        }\n    }\n    styler.ColourTo(end, chAttr);\n    strcpy(prevWord, s);\n}\n\nstatic bool IsSolComment(Accessor &styler, Sci_Position pos, Sci_Position len)\n{\n   if(len > 0)\n   {\n     char c = styler[pos];\n     if(c == '`') return true;\n     if(len > 1)\n     {\n        if(c == '/')\n        {\n          c = styler[pos + 1];\n          if(c == '/') return true;\n          if(c == '*') return true;\n        }\n     }\n   }\n   return false;\n}\n\nstatic bool IsSolStringStart(char ch)\n{\n    if (ch == '\\'' || ch == '\"')  return true;\n    return false;\n}\n\nstatic bool IsSolWordStart(char ch)\n{\n    return (iswordchar(ch) && !IsSolStringStart(ch));\n}\n\n\nstatic int GetSolStringState(Accessor &styler, Sci_Position i, Sci_Position *nextIndex)\n{\n\tchar ch = styler.SafeGetCharAt(i);\n\tchar chNext = styler.SafeGetCharAt(i + 1);\n\n        if (ch != '\\\"' && ch != '\\'')\n        {\n            *nextIndex = i + 1;\n            return SCE_SCRIPTOL_DEFAULT;\n\t}\n        // ch is either single or double quotes in string\n        // code below seem non-sense but is here for future extensions\n\tif (ch == chNext && ch == styler.SafeGetCharAt(i + 2))\n        {\n          *nextIndex = i + 3;\n          if(ch == '\\\"') return SCE_SCRIPTOL_TRIPLE;\n          if(ch == '\\'') return SCE_SCRIPTOL_TRIPLE;\n          return SCE_SCRIPTOL_STRING;\n\t}\n        else\n        {\n          *nextIndex = i + 1;\n          if (ch == '\"') return SCE_SCRIPTOL_STRING;\n          else           return SCE_SCRIPTOL_STRING;\n\t}\n}\n\n\nstatic void ColouriseSolDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                            WordList *keywordlists[], Accessor &styler)\n {\n\n\tSci_Position lengthDoc = startPos + length;\n        char stringType = '\\\"';\n\n\tif (startPos > 0)\n        {\n            Sci_Position lineCurrent = styler.GetLine(startPos);\n            if (lineCurrent > 0)\n            {\n              startPos = styler.LineStart(lineCurrent-1);\n              if (startPos == 0) initStyle = SCE_SCRIPTOL_DEFAULT;\n              else               initStyle = styler.StyleAt(startPos-1);\n            }\n\t}\n\n\tstyler.StartAt(startPos);\n\n\tWordList &keywords = *keywordlists[0];\n\n\tchar prevWord[200];\n\tprevWord[0] = '\\0';\n        if (length == 0)  return;\n\n\tint state = initStyle & 31;\n\n\tSci_Position nextIndex = 0;\n        char chPrev  = ' ';\n        char chPrev2 = ' ';\n        char chNext  = styler[startPos];\n\tstyler.StartSegment(startPos);\n\tfor (Sci_Position i = startPos; i < lengthDoc; i++)\n        {\n\n       char ch = chNext;\n       chNext = styler.SafeGetCharAt(i + 1);\n\n       if ((ch == '\\r' && chNext != '\\n') || (ch == '\\n') || (i == lengthDoc))\n       {\n          if ((state == SCE_SCRIPTOL_DEFAULT) ||\n              (state == SCE_SCRIPTOL_TRIPLE) ||\n              (state == SCE_SCRIPTOL_COMMENTBLOCK))\n          {\n              styler.ColourTo(i, state);\n          }\n        }\n\n        if (styler.IsLeadByte(ch))\n         {\n             chNext = styler.SafeGetCharAt(i + 2);\n             chPrev  = ' ';\n             chPrev2 = ' ';\n             i += 1;\n             continue;\n         }\n\n        if (state == SCE_SCRIPTOL_STRINGEOL)\n         {\n             if (ch != '\\r' && ch != '\\n')\n             {\n                    styler.ColourTo(i - 1, state);\n                    state = SCE_SCRIPTOL_DEFAULT;\n             }\n         }\n\n        if (state == SCE_SCRIPTOL_DEFAULT)\n         {\n            if (IsSolWordStart(ch))\n            {\n                 styler.ColourTo(i - 1, state);\n                 state = SCE_SCRIPTOL_KEYWORD;\n            }\n            else if (ch == '`')\n            {\n                styler.ColourTo(i - 1, state);\n                state = SCE_SCRIPTOL_COMMENTLINE;\n            }\n            else if (ch == '/')\n            {\n                styler.ColourTo(i - 1, state);\n                if(chNext == '/') state = SCE_SCRIPTOL_CSTYLE;\n                if(chNext == '*') state = SCE_SCRIPTOL_COMMENTBLOCK;\n            }\n\n            else if (IsSolStringStart(ch))\n            {\n               styler.ColourTo(i - 1, state);\n               state = GetSolStringState(styler, i, &nextIndex);\n               if(state == SCE_SCRIPTOL_STRING)\n               {\n                 stringType = ch;\n               }\n               if (nextIndex != i + 1)\n               {\n                   i = nextIndex - 1;\n                   ch = ' ';\n                   chPrev = ' ';\n                   chNext = styler.SafeGetCharAt(i + 1);\n               }\n           }\n            else if (isoperator(ch))\n            {\n                 styler.ColourTo(i - 1, state);\n                 styler.ColourTo(i, SCE_SCRIPTOL_OPERATOR);\n            }\n          }\n          else if (state == SCE_SCRIPTOL_KEYWORD)\n          {\n              if (!iswordchar(ch))\n              {\n                 ClassifyWordSol(styler.GetStartSegment(), i - 1, keywords, styler, prevWord);\n                 state = SCE_SCRIPTOL_DEFAULT;\n                 if (ch == '`')\n                 {\n                     state = chNext == '`' ? SCE_SCRIPTOL_PERSISTENT : SCE_SCRIPTOL_COMMENTLINE;\n                 }\n                 else if (IsSolStringStart(ch))\n                 {\n                    styler.ColourTo(i - 1, state);\n                    state = GetSolStringState(styler, i, &nextIndex);\n                    if (nextIndex != i + 1)\n                    {\n                       i = nextIndex - 1;\n                       ch = ' ';\n                       chPrev = ' ';\n                       chNext = styler.SafeGetCharAt(i + 1);\n                     }\n                 }\n                 else if (isoperator(ch))\n                 {\n                     styler.ColourTo(i, SCE_SCRIPTOL_OPERATOR);\n                 }\n             }\n          }\n          else\n          {\n            if (state == SCE_SCRIPTOL_COMMENTLINE ||\n                state == SCE_SCRIPTOL_PERSISTENT ||\n                state == SCE_SCRIPTOL_CSTYLE)\n            {\n                 if (ch == '\\r' || ch == '\\n')\n                 {\n                     styler.ColourTo(i - 1, state);\n                     state = SCE_SCRIPTOL_DEFAULT;\n                 }\n            }\n            else if(state == SCE_SCRIPTOL_COMMENTBLOCK)\n            {\n              if(chPrev == '*' && ch == '/')\n              {\n                styler.ColourTo(i, state);\n                state = SCE_SCRIPTOL_DEFAULT;\n              }\n            }\n            else if ((state == SCE_SCRIPTOL_STRING) ||\n                     (state == SCE_SCRIPTOL_CHARACTER))\n            {\n               if ((ch == '\\r' || ch == '\\n') && (chPrev != '\\\\'))\n                {\n                    styler.ColourTo(i - 1, state);\n                    state = SCE_SCRIPTOL_STRINGEOL;\n                }\n                else if (ch == '\\\\')\n                {\n                   if (chNext == '\\\"' || chNext == '\\'' || chNext == '\\\\')\n                   {\n                        i++;\n                        ch = chNext;\n                        chNext = styler.SafeGetCharAt(i + 1);\n                   }\n                 }\n                else if ((ch == '\\\"') || (ch == '\\''))\n                {\n                    // must match the entered quote type\n                    if(ch == stringType)\n                    {\n                      styler.ColourTo(i, state);\n                      state = SCE_SCRIPTOL_DEFAULT;\n                    }\n                 }\n             }\n             else if (state == SCE_SCRIPTOL_TRIPLE)\n             {\n                if ((ch == '\\'' && chPrev == '\\'' && chPrev2 == '\\'') ||\n                    (ch == '\\\"' && chPrev == '\\\"' && chPrev2 == '\\\"'))\n                 {\n                    styler.ColourTo(i, state);\n                    state = SCE_SCRIPTOL_DEFAULT;\n                 }\n             }\n\n           }\n          chPrev2 = chPrev;\n          chPrev = ch;\n\t}\n        if (state == SCE_SCRIPTOL_KEYWORD)\n        {\n            ClassifyWordSol(styler.GetStartSegment(),\n                 lengthDoc-1, keywords, styler, prevWord);\n\t}\n        else\n        {\n            styler.ColourTo(lengthDoc-1, state);\n\t}\n}\n\nstatic void FoldSolDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n\t\t\t\t\t\t   WordList *[], Accessor &styler)\n {\n\tSci_Position lengthDoc = startPos + length;\n\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tif (startPos > 0)\n        {\n          if (lineCurrent > 0)\n          {\n               lineCurrent--;\n               startPos = styler.LineStart(lineCurrent);\n               if (startPos == 0)\n                    initStyle = SCE_SCRIPTOL_DEFAULT;\n               else\n                    initStyle = styler.StyleAt(startPos-1);\n           }\n\t}\n\tint state = initStyle & 31;\n\tint spaceFlags = 0;\n        int indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsSolComment);\n        if (state == SCE_SCRIPTOL_TRIPLE)\n             indentCurrent |= SC_FOLDLEVELWHITEFLAG;\n\tchar chNext = styler[startPos];\n\tfor (Sci_Position i = startPos; i < lengthDoc; i++)\n         {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styler.StyleAt(i) & 31;\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n') || (i == lengthDoc))\n                {\n                   int lev = indentCurrent;\n                   int indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags, IsSolComment);\n                   if (style == SCE_SCRIPTOL_TRIPLE)\n                        indentNext |= SC_FOLDLEVELWHITEFLAG;\n                   if (!(indentCurrent & SC_FOLDLEVELWHITEFLAG))\n                    {\n                        // Only non whitespace lines can be headers\n                        if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK))\n                        {\n                              lev |= SC_FOLDLEVELHEADERFLAG;\n                        }\n                        else if (indentNext & SC_FOLDLEVELWHITEFLAG)\n                        {\n                             // Line after is blank so check the next - maybe should continue further?\n                             int spaceFlags2 = 0;\n                             int indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2, IsSolComment);\n                             if ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK))\n                             {\n                                   lev |= SC_FOLDLEVELHEADERFLAG;\n                              }\n                        }\n                    }\n                   indentCurrent = indentNext;\n                   styler.SetLevel(lineCurrent, lev);\n                   lineCurrent++;\n\t\t}\n\t}\n}\n\nLexerModule lmScriptol(SCLEX_SCRIPTOL, ColouriseSolDoc, \"scriptol\", FoldSolDoc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexSmalltalk.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexSmalltalk.cxx\n ** Lexer for Smalltalk language.\n ** Written by Sergey Philippov, sphilippov-at-gmail-dot-com\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/*\n| lexTable classificationBlock charClasses |\ncharClasses := #(#DecDigit #Letter #Special #Upper #BinSel).\nlexTable := ByteArray new: 128.\nclassificationBlock := [ :charClass :chars |\n    | flag |\n    flag := 1 bitShift: (charClasses indexOf: charClass) - 1.\n    chars do: [ :char | lexTable at: char codePoint + 1 put: ((lexTable at: char codePoint + 1) bitOr: flag)]].\n\nclassificationBlock\n    value: #DecDigit value: '0123456789';\n    value: #Letter value: '_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\n    value: #Special value: '()[]{};.^:';\n    value: #BinSel value: '~@%&*-+=|\\/,<>?!';\n    value: #Upper value: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.\n\n((String new: 500) streamContents: [ :stream |\n    stream crLf; nextPutAll: 'static int ClassificationTable[256] = {'.\n    lexTable keysAndValuesDo: [ :index :value |\n        ((index - 1) rem: 16) == 0 ifTrue: [\n            stream crLf; tab]\n        ifFalse: [\n            stream space].\n        stream print: value.\n        index ~= 256 ifTrue: [\n            stream nextPut: $,]].\n    stream crLf; nextPutAll: '};'; crLf.\n\n    charClasses keysAndValuesDo: [ :index :name |\n        stream\n            crLf;\n            nextPutAll: (\n                ('static inline bool is<1s>(int ch) {return (ch > 0) && (ch %< 0x80) && ((ClassificationTable[ch] & <2p>) != 0);}')\n                    expandMacrosWith: name with: (1 bitShift: (index - 1)))\n    ]]) edit\n*/\n\n// autogenerated {{{{\n\nstatic int ClassificationTable[256] = {\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n    0, 16, 0, 0, 0, 16, 16, 0, 4, 4, 16, 16, 16, 16, 4, 16,\n    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 16, 16, 16, 16,\n    16, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,\n    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 4, 16, 4, 4, 2,\n    0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n    2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 16, 4, 16, 0,\n};\n\nstatic inline bool isDecDigit(int ch) {return (ch > 0) && (ch < 0x80) && ((ClassificationTable[ch] & 1) != 0);}\nstatic inline bool isLetter(int ch) {return (ch > 0) && (ch < 0x80) && ((ClassificationTable[ch] & 2) != 0);}\nstatic inline bool isSpecial(int ch) {return (ch > 0) && (ch < 0x80) && ((ClassificationTable[ch] & 4) != 0);}\nstatic inline bool isUpper(int ch) {return (ch > 0) && (ch < 0x80) && ((ClassificationTable[ch] & 8) != 0);}\nstatic inline bool isBinSel(int ch) {return (ch > 0) && (ch < 0x80) && ((ClassificationTable[ch] & 16) != 0);}\n// autogenerated }}}}\n\nstatic inline bool isAlphaNumeric(int ch) {\n    return isDecDigit(ch) || isLetter(ch);\n}\n\nstatic inline bool isDigitOfRadix(int ch, int radix)\n{\n    if (isDecDigit(ch))\n        return (ch - '0') < radix;\n    else if (!isUpper(ch))\n        return false;\n    else\n        return (ch - 'A' + 10) < radix;\n}\n\nstatic inline void skipComment(StyleContext& sc)\n{\n    while (sc.More() && sc.ch != '\\\"')\n        sc.Forward();\n}\n\nstatic inline void skipString(StyleContext& sc)\n{\n    while (sc.More()) {\n        if (sc.ch == '\\'') {\n            if (sc.chNext != '\\'')\n                return;\n            sc.Forward();\n        }\n        sc.Forward();\n    }\n}\n\nstatic void handleHash(StyleContext& sc)\n{\n    if (isSpecial(sc.chNext)) {\n        sc.SetState(SCE_ST_SPECIAL);\n        return;\n    }\n\n    sc.SetState(SCE_ST_SYMBOL);\n    sc.Forward();\n    if (sc.ch == '\\'') {\n        sc.Forward();\n        skipString(sc);\n    }\n    else {\n        if (isLetter(sc.ch)) {\n            while (isAlphaNumeric(sc.chNext) || sc.chNext == ':')\n                sc.Forward();\n        }\n        else if (isBinSel(sc.ch)) {\n            while (isBinSel(sc.chNext))\n                sc.Forward();\n        }\n    }\n}\n\nstatic inline void handleSpecial(StyleContext& sc)\n{\n    if (sc.ch == ':' && sc.chNext == '=') {\n        sc.SetState(SCE_ST_ASSIGN);\n        sc.Forward();\n    }\n    else {\n        if (sc.ch == '^')\n            sc.SetState(SCE_ST_RETURN);\n        else\n            sc.SetState(SCE_ST_SPECIAL);\n    }\n}\n\nstatic inline void skipInt(StyleContext& sc, int radix)\n{\n    while (isDigitOfRadix(sc.chNext, radix))\n        sc.Forward();\n}\n\nstatic void handleNumeric(StyleContext& sc)\n{\n    char num[256];\n    int nl;\n    int radix;\n\n    sc.SetState(SCE_ST_NUMBER);\n    num[0] = static_cast<char>(sc.ch);\n    nl = 1;\n    while (isDecDigit(sc.chNext)) {\n        num[nl++] = static_cast<char>(sc.chNext);\n        sc.Forward();\n        if (nl+1 == sizeof(num)/sizeof(num[0])) // overrun check\n            break;\n    }\n    if (sc.chNext == 'r') {\n        num[nl] = 0;\n        if (num[0] == '-')\n            radix = atoi(num + 1);\n        else\n            radix = atoi(num);\n        sc.Forward();\n        if (sc.chNext == '-')\n            sc.Forward();\n        skipInt(sc, radix);\n    }\n    else\n        radix = 10;\n    if (sc.chNext != '.' || !isDigitOfRadix(sc.GetRelative(2), radix))\n        return;\n    sc.Forward();\n    skipInt(sc, radix);\n    if (sc.chNext == 's') {\n        // ScaledDecimal\n        sc.Forward();\n        while (isDecDigit(sc.chNext))\n            sc.Forward();\n        return;\n    }\n    else if (sc.chNext != 'e' && sc.chNext != 'd' && sc.chNext != 'q')\n        return;\n    sc.Forward();\n    if (sc.chNext == '+' || sc.chNext == '-')\n        sc.Forward();\n    skipInt(sc, radix);\n}\n\nstatic inline void handleBinSel(StyleContext& sc)\n{\n    sc.SetState(SCE_ST_BINARY);\n    while (isBinSel(sc.chNext))\n        sc.Forward();\n}\n\nstatic void handleLetter(StyleContext& sc, WordList* specialSelectorList)\n{\n    char ident[256];\n    int il;\n    int state;\n    bool doubleColonPresent;\n\n    sc.SetState(SCE_ST_DEFAULT);\n\n    ident[0] = static_cast<char>(sc.ch);\n    il = 1;\n    while (isAlphaNumeric(sc.chNext)) {\n        ident[il++] = static_cast<char>(sc.chNext);\n        sc.Forward();\n        if (il+2 == sizeof(ident)/sizeof(ident[0])) // overrun check\n            break;\n    }\n\n    if (sc.chNext == ':') {\n        doubleColonPresent = true;\n        ident[il++] = ':';\n        sc.Forward();\n    }\n    else\n        doubleColonPresent = false;\n    ident[il] = 0;\n\n    if (specialSelectorList->InList(ident))\n            state = SCE_ST_SPEC_SEL;\n    else if (doubleColonPresent)\n            state = SCE_ST_KWSEND;\n    else if (isUpper(ident[0]))\n        state = SCE_ST_GLOBAL;\n    else {\n        if (!strcmp(ident, \"self\"))\n            state = SCE_ST_SELF;\n        else if (!strcmp(ident, \"super\"))\n            state = SCE_ST_SUPER;\n        else if (!strcmp(ident, \"nil\"))\n            state = SCE_ST_NIL;\n        else if (!strcmp(ident, \"true\") || !strcmp(ident, \"false\"))\n            state = SCE_ST_BOOL;\n        else\n            state = SCE_ST_DEFAULT;\n    }\n\n    sc.ChangeState(state);\n}\n\nstatic void colorizeSmalltalkDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *wordLists[], Accessor &styler)\n{\n    StyleContext sc(startPos, length, initStyle, styler);\n\n    if (initStyle == SCE_ST_COMMENT) {\n        skipComment(sc);\n        if (sc.More())\n            sc.Forward();\n    }\n    else if (initStyle == SCE_ST_STRING) {\n        skipString(sc);\n        if (sc.More())\n            sc.Forward();\n    }\n\n    for (; sc.More(); sc.Forward()) {\n        int ch;\n\n        ch = sc.ch;\n        if (ch == '\\\"') {\n            sc.SetState(SCE_ST_COMMENT);\n            sc.Forward();\n            skipComment(sc);\n        }\n        else if (ch == '\\'') {\n            sc.SetState(SCE_ST_STRING);\n            sc.Forward();\n            skipString(sc);\n        }\n        else if (ch == '#')\n            handleHash(sc);\n        else if (ch == '$') {\n            sc.SetState(SCE_ST_CHARACTER);\n            sc.Forward();\n        }\n        else if (isSpecial(ch))\n            handleSpecial(sc);\n        else if (isDecDigit(ch))\n            handleNumeric(sc);\n        else if (isLetter(ch))\n            handleLetter(sc, wordLists[0]);\n        else if (isBinSel(ch)) {\n            if (ch == '-' && isDecDigit(sc.chNext))\n                handleNumeric(sc);\n            else\n                handleBinSel(sc);\n        }\n        else\n            sc.SetState(SCE_ST_DEFAULT);\n    }\n    sc.Complete();\n}\n\nstatic const char* const smalltalkWordListDesc[] = {\n    \"Special selectors\",\n    0\n};\n\nLexerModule lmSmalltalk(SCLEX_SMALLTALK, colorizeSmalltalkDoc, \"smalltalk\", NULL, smalltalkWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexSorcus.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexSorcus.cxx\n** Lexer for SORCUS installation files\n** Written by Eugen Bitter and Christoph Baumann at SORCUS Computer, Heidelberg Germany\n** Based on the ASM Lexer by The Black Horus\n**/\n\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\n//each character a..z and A..Z + '_' can be part of a keyword\n//additionally numbers that follow 'M' can be contained in a keyword\nstatic inline bool IsSWordStart(const int ch, const int prev_ch)\n{\n    if (isalpha(ch) || (ch == '_') || ((isdigit(ch)) && (prev_ch == 'M')))\n        return true;\n\n    return false;\n}\n\n\n//only digits that are not preceded by 'M' count as a number\nstatic inline bool IsSorcusNumber(const int ch, const int prev_ch)\n{\n    if ((isdigit(ch)) && (prev_ch != 'M'))\n        return true;\n\n    return false;\n}\n\n\n//only = is a valid operator\nstatic inline bool IsSorcusOperator(const int ch)\n{\n    if (ch == '=')\n        return true;\n\n    return false;\n}\n\n\nstatic void ColouriseSorcusDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                               Accessor &styler)\n{\n\n    WordList &Command = *keywordlists[0];\n    WordList &Parameter = *keywordlists[1];\n    WordList &Constant = *keywordlists[2];\n\n    // Do not leak onto next line\n    if (initStyle == SCE_SORCUS_STRINGEOL)\n        initStyle = SCE_SORCUS_DEFAULT;\n\n    StyleContext sc(startPos, length, initStyle, styler);\n\n    for (; sc.More(); sc.Forward())\n    {\n\n        // Prevent SCE_SORCUS_STRINGEOL from leaking back to previous line\n        if (sc.atLineStart && (sc.state == SCE_SORCUS_STRING))\n        {\n            sc.SetState(SCE_SORCUS_STRING);\n        }\n\n        // Determine if the current state should terminate.\n        if (sc.state == SCE_SORCUS_OPERATOR)\n        {\n            if (!IsSorcusOperator(sc.ch))\n            {\n                sc.SetState(SCE_SORCUS_DEFAULT);\n            }\n        }\n        else if(sc.state == SCE_SORCUS_NUMBER)\n        {\n            if(!IsSorcusNumber(sc.ch, sc.chPrev))\n            {\n                sc.SetState(SCE_SORCUS_DEFAULT);\n            }\n        }\n        else if (sc.state == SCE_SORCUS_IDENTIFIER)\n        {\n            if (!IsSWordStart(sc.ch, sc.chPrev))\n            {\n                char s[100];\n\n                sc.GetCurrent(s, sizeof(s));\n\n                if (Command.InList(s))\n                {\n                    sc.ChangeState(SCE_SORCUS_COMMAND);\n                }\n                else if (Parameter.InList(s))\n                {\n                    sc.ChangeState(SCE_SORCUS_PARAMETER);\n                }\n                else if (Constant.InList(s))\n                {\n                    sc.ChangeState(SCE_SORCUS_CONSTANT);\n                }\n\n                sc.SetState(SCE_SORCUS_DEFAULT);\n            }\n        }\n        else if (sc.state == SCE_SORCUS_COMMENTLINE )\n        {\n            if (sc.atLineEnd)\n            {\n                sc.SetState(SCE_SORCUS_DEFAULT);\n            }\n        }\n        else if (sc.state == SCE_SORCUS_STRING)\n        {\n            if (sc.ch == '\\\"')\n            {\n                sc.ForwardSetState(SCE_SORCUS_DEFAULT);\n            }\n            else if (sc.atLineEnd)\n            {\n                sc.ChangeState(SCE_SORCUS_STRINGEOL);\n                sc.ForwardSetState(SCE_SORCUS_DEFAULT);\n            }\n        }\n\n        // Determine if a new state should be entered.\n        if (sc.state == SCE_SORCUS_DEFAULT)\n        {\n            if ((sc.ch == ';') || (sc.ch == '\\''))\n            {\n                sc.SetState(SCE_SORCUS_COMMENTLINE);\n            }\n            else if (IsSWordStart(sc.ch, sc.chPrev))\n            {\n                sc.SetState(SCE_SORCUS_IDENTIFIER);\n            }\n            else if (sc.ch == '\\\"')\n            {\n                sc.SetState(SCE_SORCUS_STRING);\n            }\n            else if (IsSorcusOperator(sc.ch))\n            {\n                sc.SetState(SCE_SORCUS_OPERATOR);\n            }\n            else if (IsSorcusNumber(sc.ch, sc.chPrev))\n            {\n                sc.SetState(SCE_SORCUS_NUMBER);\n            }\n        }\n\n    }\n    sc.Complete();\n}\n\n\nstatic const char* const SorcusWordListDesc[] = {\"Command\",\"Parameter\", \"Constant\", 0};\n\nLexerModule lmSorc(SCLEX_SORCUS, ColouriseSorcusDoc, \"sorcins\", 0, SorcusWordListDesc);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexSpecman.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexSpecman.cxx\n ** Lexer for Specman E language.\n ** Written by Avi Yegudin, based on C++ lexer by Neil Hodgson\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' || ch == '\\'');\n}\n\nstatic inline bool IsANumberChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '\\'');\n}\n\nstatic inline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '`');\n}\n\nstatic void ColouriseSpecmanDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                            Accessor &styler, bool caseSensitive) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_SN_STRINGEOL)\n\t\tinitStyle = SCE_SN_CODE;\n\n\tint visibleChars = 0;\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.atLineStart && (sc.state == SCE_SN_STRING)) {\n\t\t\t// Prevent SCE_SN_STRINGEOL from leaking back to previous line\n\t\t\tsc.SetState(SCE_SN_STRING);\n\t\t}\n\n\t\t// Handle line continuation generically.\n\t\tif (sc.ch == '\\\\') {\n\t\t\tif (sc.chNext == '\\n' || sc.chNext == '\\r') {\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// Determine if the current state should terminate.\n\t\tif (sc.state == SCE_SN_OPERATOR) {\n\t\t\tsc.SetState(SCE_SN_CODE);\n\t\t} else if (sc.state == SCE_SN_NUMBER) {\n\t\t\tif (!IsANumberChar(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_SN_CODE);\n\t\t\t}\n\t\t} else if (sc.state == SCE_SN_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch) || (sc.ch == '.')) {\n\t\t\t\tchar s[100];\n\t\t\t\tif (caseSensitive) {\n\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t} else {\n\t\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\t}\n\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SN_WORD);\n\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SN_WORD2);\n\t\t\t\t} else if (keywords3.InList(s)) {\n                                        sc.ChangeState(SCE_SN_WORD3);\n\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\tsc.ChangeState(SCE_SN_USER);\n\t\t\t\t}\n\t\t\t\tsc.SetState(SCE_SN_CODE);\n\t\t\t}\n\t\t} else if (sc.state == SCE_SN_PREPROCESSOR) {\n                        if (IsASpace(sc.ch)) {\n                                sc.SetState(SCE_SN_CODE);\n                        }\n\t\t} else if (sc.state == SCE_SN_DEFAULT) {\n\t\t\tif (sc.Match('<', '\\'')) {\n\t\t\t\tsc.Forward();\n\t\t\t\tsc.ForwardSetState(SCE_SN_CODE);\n\t\t\t}\n\t\t} else if (sc.state == SCE_SN_COMMENTLINE || sc.state == SCE_SN_COMMENTLINEBANG) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_SN_CODE);\n\t\t\t\tvisibleChars = 0;\n\t\t\t}\n\t\t} else if (sc.state == SCE_SN_STRING) {\n\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.ForwardSetState(SCE_SN_CODE);\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_SN_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_SN_CODE);\n\t\t\t\tvisibleChars = 0;\n\t\t\t}\n\t\t} else if (sc.state == SCE_SN_SIGNAL) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.ChangeState(SCE_SN_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_SN_CODE);\n\t\t\t\tvisibleChars = 0;\n\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.ForwardSetState(SCE_SN_CODE);\n\t\t\t}\n\t\t} else if (sc.state == SCE_SN_REGEXTAG) {\n\t\t\tif (!IsADigit(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_SN_CODE);\n\t\t\t}\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_SN_CODE) {\n\t\t\tif (sc.ch == '$' && IsADigit(sc.chNext)) {\n\t\t\t\tsc.SetState(SCE_SN_REGEXTAG);\n                                sc.Forward();\n\t\t\t} else if (IsADigit(sc.ch)) {\n                                sc.SetState(SCE_SN_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_SN_IDENTIFIER);\n\t\t\t} else if (sc.Match('\\'', '>')) {\n                                sc.SetState(SCE_SN_DEFAULT);\n\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\tif (sc.Match(\"//!\"))\t// Nice to have a different comment style\n\t\t\t\t\tsc.SetState(SCE_SN_COMMENTLINEBANG);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_SN_COMMENTLINE);\n\t\t\t} else if (sc.Match('-', '-')) {\n\t\t\t\tif (sc.Match(\"--!\"))\t// Nice to have a different comment style\n\t\t\t\t\tsc.SetState(SCE_SN_COMMENTLINEBANG);\n\t\t\t\telse\n\t\t\t\t\tsc.SetState(SCE_SN_COMMENTLINE);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_SN_STRING);\n\t\t\t} else if (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_SN_SIGNAL);\n\t\t\t} else if (sc.ch == '#' && visibleChars == 0) {\n\t\t\t\t// Preprocessor commands are alone on their line\n\t\t\t\tsc.SetState(SCE_SN_PREPROCESSOR);\n\t\t\t\t// Skip whitespace between # and preprocessor word\n\t\t\t\tdo {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More());\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_SN_CODE);\n\t\t\t\t}\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch)) || sc.ch == '@') {\n\t\t\t\tsc.SetState(SCE_SN_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\t// Reset states to begining of colourise so no surprises\n\t\t\t// if different sets of lines lexed.\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!IsASpace(sc.ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n\tsc.Complete();\n}\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\nstatic void FoldNoBoxSpecmanDoc(Sci_PositionU startPos, Sci_Position length, int,\n                            Accessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tbool foldAtElse = styler.GetPropertyInt(\"fold.at.else\", 0) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style;\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t//int stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (foldComment && (style == SCE_SN_COMMENTLINE)) {\n\t\t\tif (((ch == '/') && (chNext == '/')) ||\n                            ((ch == '-') && (chNext == '-'))) {\n\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (style == SCE_SN_OPERATOR) {\n\t\t\tif (ch == '{') {\n\t\t\t\t// Measure the minimum before a '{' to allow\n\t\t\t\t// folding on \"} else {\"\n\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (ch == '}') {\n\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif (foldAtElse) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n}\n\nstatic void FoldSpecmanDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[],\n                       Accessor &styler) {\n\tFoldNoBoxSpecmanDoc(startPos, length, initStyle, styler);\n}\n\nstatic const char * const specmanWordLists[] = {\n            \"Primary keywords and identifiers\",\n            \"Secondary keywords and identifiers\",\n            \"Sequence keywords and identifiers\",\n            \"User defined keywords and identifiers\",\n            \"Unused\",\n            0,\n        };\n\nstatic void ColouriseSpecmanDocSensitive(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n                                     Accessor &styler) {\n\tColouriseSpecmanDoc(startPos, length, initStyle, keywordlists, styler, true);\n}\n\n\nLexerModule lmSpecman(SCLEX_SPECMAN, ColouriseSpecmanDocSensitive, \"specman\", FoldSpecmanDoc, specmanWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexSpice.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexSpice.cxx\n ** Lexer for Spice\n **/\n// Copyright 2006 by Fabien Proriol\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/*\n * Interface\n */\n\nstatic void ColouriseDocument(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    int initStyle,\n    WordList *keywordlists[],\n    Accessor &styler);\n\nstatic const char * const spiceWordListDesc[] = {\n    \"Keywords\",        // SPICE command\n    \"Keywords2\",    // SPICE functions\n    \"Keywords3\",    // SPICE params\n    0\n};\n\nLexerModule lmSpice(SCLEX_SPICE, ColouriseDocument, \"spice\", NULL, spiceWordListDesc);\n\n/*\n * Implementation\n */\n\nstatic void ColouriseComment(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseWhiteSpace(StyleContext& sc, bool& apostropheStartsAttribute);\nstatic void ColouriseWord(StyleContext& sc, WordList& keywords, WordList& keywords2, WordList& keywords3, bool& apostropheStartsAttribute);\n\nstatic inline bool IsDelimiterCharacter(int ch);\nstatic inline bool IsSeparatorOrDelimiterCharacter(int ch);\n\nstatic void ColouriseComment(StyleContext& sc, bool&) {\n    sc.SetState(SCE_SPICE_COMMENTLINE);\n    while (!sc.atLineEnd) {\n        sc.Forward();\n    }\n}\n\nstatic void ColouriseDelimiter(StyleContext& sc, bool& apostropheStartsAttribute) {\n    apostropheStartsAttribute = sc.Match (')');\n    sc.SetState(SCE_SPICE_DELIMITER);\n    sc.ForwardSetState(SCE_SPICE_DEFAULT);\n}\n\nstatic void ColouriseNumber(StyleContext& sc, bool& apostropheStartsAttribute) {\n    apostropheStartsAttribute = true;\n    std::string number;\n    sc.SetState(SCE_SPICE_NUMBER);\n    // Get all characters up to a delimiter or a separator, including points, but excluding\n    // double points (ranges).\n    while (!IsSeparatorOrDelimiterCharacter(sc.ch) || (sc.ch == '.' && sc.chNext != '.')) {\n        number += static_cast<char>(sc.ch);\n        sc.Forward();\n    }\n    // Special case: exponent with sign\n    if ((sc.chPrev == 'e' || sc.chPrev == 'E') &&\n            (sc.ch == '+' || sc.ch == '-')) {\n        number += static_cast<char>(sc.ch);\n        sc.Forward ();\n        while (!IsSeparatorOrDelimiterCharacter(sc.ch)) {\n            number += static_cast<char>(sc.ch);\n            sc.Forward();\n        }\n    }\n    sc.SetState(SCE_SPICE_DEFAULT);\n}\n\nstatic void ColouriseWhiteSpace(StyleContext& sc, bool& ) {\n    sc.SetState(SCE_SPICE_DEFAULT);\n    sc.ForwardSetState(SCE_SPICE_DEFAULT);\n}\n\nstatic void ColouriseWord(StyleContext& sc, WordList& keywords, WordList& keywords2, WordList& keywords3, bool& apostropheStartsAttribute) {\n    apostropheStartsAttribute = true;\n    sc.SetState(SCE_SPICE_IDENTIFIER);\n    std::string word;\n    while (!sc.atLineEnd && !IsSeparatorOrDelimiterCharacter(sc.ch)) {\n        word += static_cast<char>(tolower(sc.ch));\n        sc.Forward();\n    }\n    if (keywords.InList(word.c_str())) {\n        sc.ChangeState(SCE_SPICE_KEYWORD);\n        if (word != \"all\") {\n            apostropheStartsAttribute = false;\n        }\n    }\n    else if (keywords2.InList(word.c_str())) {\n        sc.ChangeState(SCE_SPICE_KEYWORD2);\n        if (word != \"all\") {\n            apostropheStartsAttribute = false;\n        }\n    }\n    else if (keywords3.InList(word.c_str())) {\n        sc.ChangeState(SCE_SPICE_KEYWORD3);\n        if (word != \"all\") {\n            apostropheStartsAttribute = false;\n        }\n    }\n    sc.SetState(SCE_SPICE_DEFAULT);\n}\n\n//\n// ColouriseDocument\n//\nstatic void ColouriseDocument(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    int initStyle,\n    WordList *keywordlists[],\n    Accessor &styler) {\n    WordList &keywords = *keywordlists[0];\n    WordList &keywords2 = *keywordlists[1];\n    WordList &keywords3 = *keywordlists[2];\n    StyleContext sc(startPos, length, initStyle, styler);\n    Sci_Position lineCurrent = styler.GetLine(startPos);\n    bool apostropheStartsAttribute = (styler.GetLineState(lineCurrent) & 1) != 0;\n    while (sc.More()) {\n        if (sc.atLineEnd) {\n            // Go to the next line\n            sc.Forward();\n            lineCurrent++;\n            // Remember the line state for future incremental lexing\n            styler.SetLineState(lineCurrent, apostropheStartsAttribute);\n            // Don't continue any styles on the next line\n            sc.SetState(SCE_SPICE_DEFAULT);\n        }\n        // Comments\n        if ((sc.Match('*') && sc.atLineStart) || sc.Match('*','~')) {\n            ColouriseComment(sc, apostropheStartsAttribute);\n        // Whitespace\n        } else if (IsASpace(sc.ch)) {\n            ColouriseWhiteSpace(sc, apostropheStartsAttribute);\n        // Delimiters\n        } else if (IsDelimiterCharacter(sc.ch)) {\n            ColouriseDelimiter(sc, apostropheStartsAttribute);\n        // Numbers\n        } else if (IsADigit(sc.ch) || sc.ch == '#') {\n            ColouriseNumber(sc, apostropheStartsAttribute);\n        // Keywords or identifiers\n        } else {\n            ColouriseWord(sc, keywords, keywords2, keywords3, apostropheStartsAttribute);\n        }\n    }\n    sc.Complete();\n}\n\nstatic inline bool IsDelimiterCharacter(int ch) {\n    switch (ch) {\n    case '&':\n    case '\\'':\n    case '(':\n    case ')':\n    case '*':\n    case '+':\n    case ',':\n    case '-':\n    case '.':\n    case '/':\n    case ':':\n    case ';':\n    case '<':\n    case '=':\n    case '>':\n    case '|':\n        return true;\n    default:\n        return false;\n    }\n}\n\nstatic inline bool IsSeparatorOrDelimiterCharacter(int ch) {\n    return IsASpace(ch) || IsDelimiterCharacter(ch);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexTACL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexTAL.cxx\n ** Lexer for TAL\n ** Based on LexPascal.cxx\n ** Written by Laurent le Tynevez\n ** Updated by Simon Steele <s.steele@pnotepad.org> September 2002\n ** Updated by Mathias Rauen <scite@madshi.net> May 2003 (Delphi adjustments)\n ** Updated by Rod Falck, Aug 2006 Converted to TACL\n **/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\ninline bool isTACLoperator(char ch)\n\t{\n\treturn ch == '\\'' || isoperator(ch);\n\t}\n\ninline bool isTACLwordchar(char ch)\n\t{\n\treturn ch == '#' || ch == '^' || ch == '|' || ch == '_' || iswordchar(ch);\n\t}\n\ninline bool isTACLwordstart(char ch)\n\t{\n\treturn ch == '#' || ch == '|' || ch == '_' || iswordstart(ch);\n\t}\n\nstatic void getRange(Sci_PositionU start,\n\t\tSci_PositionU end,\n\t\tAccessor &styler,\n\t\tchar *s,\n\t\tSci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile ((i < end - start + 1) && (i < len-1)) {\n\t\ts[i] = static_cast<char>(tolower(styler[start + i]));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_C_COMMENT ||\n\t\tstyle == SCE_C_COMMENTDOC ||\n\t\tstyle == SCE_C_COMMENTDOCKEYWORD ||\n\t\tstyle == SCE_C_COMMENTDOCKEYWORDERROR;\n}\n\nstatic void ColourTo(Accessor &styler, Sci_PositionU end, unsigned int attr, bool bInAsm) {\n\tif ((bInAsm) && (attr == SCE_C_OPERATOR || attr == SCE_C_NUMBER || attr == SCE_C_DEFAULT || attr == SCE_C_WORD || attr == SCE_C_IDENTIFIER)) {\n\t\tstyler.ColourTo(end, SCE_C_REGEX);\n\t} else\n\t\tstyler.ColourTo(end, attr);\n}\n\n// returns 1 if the item starts a class definition, and -1 if the word is \"end\", and 2 if the word is \"asm\"\nstatic int classifyWordTACL(Sci_PositionU start, Sci_PositionU end, /*WordList &keywords*/WordList *keywordlists[], Accessor &styler, bool bInAsm) {\n\tint ret = 0;\n\n\tWordList& keywords = *keywordlists[0];\n\tWordList& builtins = *keywordlists[1];\n\tWordList& commands = *keywordlists[2];\n\n\tchar s[100];\n\tgetRange(start, end, styler, s, sizeof(s));\n\n\tchar chAttr = SCE_C_IDENTIFIER;\n\tif (isdigit(s[0]) || (s[0] == '.')) {\n\t\tchAttr = SCE_C_NUMBER;\n\t}\n\telse {\n\t\tif (s[0] == '#' || keywords.InList(s)) {\n\t\t\tchAttr = SCE_C_WORD;\n\n\t\t\tif (strcmp(s, \"asm\") == 0) {\n\t\t\t\tret = 2;\n\t\t\t}\n\t\t\telse if (strcmp(s, \"end\") == 0) {\n\t\t\t\tret = -1;\n\t\t\t}\n\t\t}\n\t\telse if (s[0] == '|' || builtins.InList(s)) {\n\t\t\tchAttr = SCE_C_WORD2;\n\t\t}\n\t\telse if (commands.InList(s)) {\n\t\t\tchAttr = SCE_C_UUID;\n\t\t}\n\t\telse if (strcmp(s, \"comment\") == 0) {\n\t\t\tchAttr = SCE_C_COMMENTLINE;\n\t\t\tret = 3;\n\t\t}\n\t}\n\tColourTo(styler, end, chAttr, (bInAsm && ret != -1));\n\treturn ret;\n}\n\nstatic int classifyFoldPointTACL(const char* s) {\n\tint lev = 0;\n\tif (s[0] == '[')\n\t\tlev=1;\n\telse if (s[0] == ']')\n\t\tlev=-1;\n\treturn lev;\n}\n\nstatic void ColouriseTACLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n\tAccessor &styler) {\n\n\tstyler.StartAt(startPos);\n\n\tint state = initStyle;\n\tif (state == SCE_C_CHARACTER)\t// Does not leak onto next line\n\t\tstate = SCE_C_DEFAULT;\n\tchar chPrev = ' ';\n\tchar chNext = styler[startPos];\n\tSci_PositionU lengthDoc = startPos + length;\n\n\tbool bInClassDefinition;\n\n\tSci_Position currentLine = styler.GetLine(startPos);\n\tif (currentLine > 0) {\n\t\tstyler.SetLineState(currentLine, styler.GetLineState(currentLine-1));\n\t\tbInClassDefinition = (styler.GetLineState(currentLine) == 1);\n\t} else {\n\t\tstyler.SetLineState(currentLine, 0);\n\t\tbInClassDefinition = false;\n\t}\n\n\tbool bInAsm = (state == SCE_C_REGEX);\n\tif (bInAsm)\n\t\tstate = SCE_C_DEFAULT;\n\n\tstyler.StartSegment(startPos);\n\tint visibleChars = 0;\n\tSci_PositionU i;\n\tfor (i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n')) {\n\t\t\t// Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix)\n\t\t\t// Avoid triggering two times on Dos/Win\n\t\t\t// End of line\n\t\t\tif (state == SCE_C_CHARACTER) {\n\t\t\t\tColourTo(styler, i, state, bInAsm);\n\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\t\t\tcurrentLine++;\n\t\t\tstyler.SetLineState(currentLine, (bInClassDefinition ? 1 : 0));\n\t\t}\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\tchNext = styler.SafeGetCharAt(i + 2);\n\t\t\tchPrev = ' ';\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (state == SCE_C_DEFAULT) {\n\t\t\tif (isTACLwordstart(ch)) {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_IDENTIFIER;\n\t\t\t} else if (ch == '{') {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_COMMENT;\n\t\t\t} else if (ch == '{' && chNext == '*') {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_COMMENTDOC;\n\t\t\t} else if (ch == '=' && chNext == '=') {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_COMMENTLINE;\n\t\t\t} else if (ch == '\"') {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_STRING;\n\t\t\t} else if (ch == '?' && visibleChars == 0) {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_PREPROCESSOR;\n\t\t\t} else if (isTACLoperator(ch)) {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tColourTo(styler, i, SCE_C_OPERATOR, bInAsm);\n\t\t\t}\n\t\t} else if (state == SCE_C_IDENTIFIER) {\n\t\t\tif (!isTACLwordchar(ch)) {\n\t\t\t\tint lStateChange = classifyWordTACL(styler.GetStartSegment(), i - 1, keywordlists, styler, bInAsm);\n\n\t\t\t\tif(lStateChange == 1) {\n\t\t\t\t\tstyler.SetLineState(currentLine, 1);\n\t\t\t\t\tbInClassDefinition = true;\n\t\t\t\t} else if(lStateChange == 2) {\n\t\t\t\t\tbInAsm = true;\n\t\t\t\t} else if(lStateChange == -1) {\n\t\t\t\t\tstyler.SetLineState(currentLine, 0);\n\t\t\t\t\tbInClassDefinition = false;\n\t\t\t\t\tbInAsm = false;\n\t\t\t\t}\n\n\t\t\t\tif (lStateChange == 3) {\n\t\t\t\t\t state = SCE_C_COMMENTLINE;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\t\tif (ch == '{') {\n\t\t\t\t\t\tstate = SCE_C_COMMENT;\n\t\t\t\t\t} else if (ch == '{' && chNext == '*') {\n\t\t\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\t\t\tstate = SCE_C_COMMENTDOC;\n\t\t\t\t\t} else if (ch == '=' && chNext == '=') {\n\t\t\t\t\t\tstate = SCE_C_COMMENTLINE;\n\t\t\t\t\t} else if (ch == '\"') {\n\t\t\t\t\t\tstate = SCE_C_STRING;\n\t\t\t\t\t} else if (isTACLoperator(ch)) {\n\t\t\t\t\t\tColourTo(styler, i, SCE_C_OPERATOR, bInAsm);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (state == SCE_C_PREPROCESSOR) {\n\t\t\t\tif ((ch == '\\r' || ch == '\\n') && !(chPrev == '\\\\' || chPrev == '\\r')) {\n\t\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (state == SCE_C_COMMENT) {\n\t\t\t\tif (ch == '}' || (ch == '\\r' || ch == '\\n') ) {\n\t\t\t\t\tColourTo(styler, i, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (state == SCE_C_COMMENTDOC) {\n\t\t\t\tif (ch == '}' || (ch == '\\r' || ch == '\\n')) {\n\t\t\t\t\tif (((i > styler.GetStartSegment() + 2) || (\n\t\t\t\t\t\t(initStyle == SCE_C_COMMENTDOC) &&\n\t\t\t\t\t\t(styler.GetStartSegment() == static_cast<Sci_PositionU>(startPos))))) {\n\t\t\t\t\t\t\tColourTo(styler, i, state, bInAsm);\n\t\t\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (state == SCE_C_COMMENTLINE) {\n\t\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (state == SCE_C_STRING) {\n\t\t\t\tif (ch == '\"' || ch == '\\r' || ch == '\\n') {\n\t\t\t\t\tColourTo(styler, i, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n        if (!isspacechar(ch))\n            visibleChars++;\n\t\tchPrev = ch;\n\t}\n\n\t// Process to end of document\n\tif (state == SCE_C_IDENTIFIER) {\n\t\tclassifyWordTACL(styler.GetStartSegment(), i - 1, keywordlists, styler, bInAsm);\n\t\t}\n\telse\n\t\tColourTo(styler, lengthDoc - 1, state, bInAsm);\n}\n\nstatic void FoldTACLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[],\n                            Accessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldPreprocessor = styler.GetPropertyInt(\"fold.preprocessor\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tbool section = false;\n\n\tSci_Position lastStart = 0;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (stylePrev == SCE_C_DEFAULT && (style == SCE_C_WORD || style == SCE_C_PREPROCESSOR))\n\t\t{\n\t\t\t// Store last word start point.\n\t\t\tlastStart = i;\n\t\t}\n\n\t\tif (stylePrev == SCE_C_WORD || stylePrev == SCE_C_PREPROCESSOR) {\n\t\t\tif(isTACLwordchar(ch) && !isTACLwordchar(chNext)) {\n\t\t\t\tchar s[100];\n\t\t\t\tgetRange(lastStart, i, styler, s, sizeof(s));\n\t\t\t\tif (stylePrev == SCE_C_PREPROCESSOR && strcmp(s, \"?section\") == 0)\n\t\t\t\t\t{\n\t\t\t\t\tsection = true;\n\t\t\t\t\tlevelCurrent = 1;\n\t\t\t\t\tlevelPrev = 0;\n\t\t\t\t\t}\n\t\t\t\telse if (stylePrev == SCE_C_WORD)\n\t\t\t\t\tlevelCurrent += classifyFoldPointTACL(s);\n\t\t\t}\n\t\t}\n\n\t\tif (style == SCE_C_OPERATOR) {\n\t\t\tif (ch == '[') {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (ch == ']') {\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (foldComment && (style == SCE_C_COMMENTLINE)) {\n\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (foldPreprocessor && (style == SCE_C_PREPROCESSOR)) {\n\t\t\tif (ch == '{' && chNext == '$') {\n\t\t\t\tSci_PositionU j=i+2; // skip {$\n\t\t\t\twhile ((j<endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\tif (styler.Match(j, \"region\") || styler.Match(j, \"if\")) {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t} else if (styler.Match(j, \"end\")) {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (foldComment && IsStreamCommentStyle(style)) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev | SC_FOLDLEVELBASE;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev || section) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t\tsection = false;\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const TACLWordListDesc[] = {\n\t\"Builtins\",\n\t\"Labels\",\n\t\"Commands\",\n\t0\n};\n\nLexerModule lmTACL(SCLEX_TACL, ColouriseTACLDoc, \"TACL\", FoldTACLDoc, TACLWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexTADS3.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexTADS3.cxx\n ** Lexer for TADS3.\n **/\n// Copyright 1998-2006 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n/*\n * TADS3 is a language designed by Michael J. Roberts for the writing of text\n * based games.  TADS comes from Text Adventure Development System.  It has good\n * support for the processing and outputting of formatted text and much of a\n * TADS program listing consists of strings.\n *\n * TADS has two types of strings, those enclosed in single quotes (') and those\n * enclosed in double quotes (\").  These strings have different symantics and\n * can be given different highlighting if desired.\n *\n * There can be embedded within both types of strings html tags\n * ( <tag key=value> ), library directives ( <.directive> ), and message\n * parameters ( {The doctor's/his} ).\n *\n * Double quoted strings can also contain interpolated expressions\n * ( << rug.moved ? ' and a hole in the floor. ' : nil >> ).  These expressions\n * may themselves contain single or double quoted strings, although the double\n * quoted strings may not contain interpolated expressions.\n *\n * These embedded constructs influence the output and formatting and are an\n * important part of a program and require highlighting.\n *\n * LINKS\n * http://www.tads.org/\n */\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic const int T3_SINGLE_QUOTE = 1;\nstatic const int T3_INT_EXPRESSION = 2;\nstatic const int T3_INT_EXPRESSION_IN_TAG = 4;\nstatic const int T3_HTML_SQUOTE = 8;\n\nstatic inline bool IsEOL(const int ch, const int chNext) {\n        return (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n}\n\n/*\n *   Test the current character to see if it's the START of an EOL sequence;\n *   if so, skip ahead to the last character of the sequence and return true,\n *   and if not just return false.  There are a few places where we want to\n *   check to see if a newline sequence occurs at a particular point, but\n *   where a caller expects a subroutine to stop only upon reaching the END\n *   of a newline sequence (in particular, CR-LF on Windows).  That's why\n *   IsEOL() above only returns true on CR if the CR isn't followed by an LF\n *   - it doesn't want to admit that there's a newline until reaching the END\n *   of the sequence.  We meet both needs by saying that there's a newline\n *   when we see the CR in a CR-LF, but skipping the CR before returning so\n *   that the caller's caller will see that we've stopped at the LF.\n */\nstatic inline bool IsEOLSkip(StyleContext &sc)\n{\n    /* test for CR-LF */\n    if (sc.ch == '\\r' && sc.chNext == '\\n')\n    {\n        /* got CR-LF - skip the CR and indicate that we're at a newline */\n        sc.Forward();\n        return true;\n    }\n\n    /*\n     *   in other cases, we have at most a 1-character newline, so do the\n     *   normal IsEOL test\n     */\n    return IsEOL(sc.ch, sc.chNext);\n}\n\nstatic inline bool IsATADS3Operator(const int ch) {\n        return ch == '=' || ch == '{' || ch == '}' || ch == '(' || ch == ')'\n                || ch == '[' || ch == ']' || ch == ',' || ch == ':' || ch == ';'\n                || ch == '+' || ch == '-' || ch == '*' || ch == '/' || ch == '%'\n                || ch == '?' || ch == '!' || ch == '<' || ch == '>' || ch == '|'\n                || ch == '@' || ch == '&' || ch == '~';\n}\n\nstatic inline bool IsAWordChar(const int ch) {\n        return isalnum(ch) || ch == '_';\n}\n\nstatic inline bool IsAWordStart(const int ch) {\n        return isalpha(ch) || ch == '_';\n}\n\nstatic inline bool IsAHexDigit(const int ch) {\n        int lch = tolower(ch);\n        return isdigit(lch) || lch == 'a' || lch == 'b' || lch == 'c'\n                || lch == 'd' || lch == 'e' || lch == 'f';\n}\n\nstatic inline bool IsAnHTMLChar(int ch) {\n        return isalnum(ch) || ch == '-' || ch == '_' || ch == '.';\n}\n\nstatic inline bool IsADirectiveChar(int ch) {\n        return isalnum(ch) || isspace(ch) || ch == '-' || ch == '/';\n}\n\nstatic inline bool IsANumberStart(StyleContext &sc) {\n        return isdigit(sc.ch)\n                || (!isdigit(sc.chPrev) && sc.ch == '.' && isdigit(sc.chNext));\n}\n\ninline static void ColouriseTADS3Operator(StyleContext &sc) {\n        int initState = sc.state;\n        int c = sc.ch;\n        sc.SetState(c == '{' || c == '}' ? SCE_T3_BRACE : SCE_T3_OPERATOR);\n        sc.ForwardSetState(initState);\n}\n\nstatic void ColouriseTADSHTMLString(StyleContext &sc, int &lineState) {\n        int endState = sc.state;\n        int chQuote = sc.ch;\n        int chString = (lineState & T3_SINGLE_QUOTE) ? '\\'' : '\"';\n        if (endState == SCE_T3_HTML_STRING) {\n                if (lineState&T3_SINGLE_QUOTE) {\n                        endState = SCE_T3_S_STRING;\n                        chString = '\\'';\n                } else if (lineState&T3_INT_EXPRESSION) {\n                        endState = SCE_T3_X_STRING;\n                        chString = '\"';\n                } else {\n                        endState = SCE_T3_HTML_DEFAULT;\n                        chString = '\"';\n                }\n                chQuote = (lineState & T3_HTML_SQUOTE) ? '\\'' : '\"';\n        } else {\n                sc.SetState(SCE_T3_HTML_STRING);\n                sc.Forward();\n        }\n        if (chQuote == '\"')\n                lineState &= ~T3_HTML_SQUOTE;\n        else\n                lineState |= T3_HTML_SQUOTE;\n\n        while (sc.More()) {\n                if (IsEOL(sc.ch, sc.chNext)) {\n                        return;\n                }\n                if (sc.ch == chQuote) {\n                        sc.ForwardSetState(endState);\n                        return;\n                }\n                if (sc.Match('\\\\', static_cast<char>(chQuote))) {\n                        sc.Forward(2);\n                        sc.SetState(endState);\n                        return;\n                }\n                if (sc.ch == chString) {\n                        sc.SetState(SCE_T3_DEFAULT);\n                        return;\n                }\n\n                if (sc.Match('<', '<')) {\n                        lineState |= T3_INT_EXPRESSION | T3_INT_EXPRESSION_IN_TAG;\n                        sc.SetState(SCE_T3_X_DEFAULT);\n                        sc.Forward(2);\n                        return;\n                }\n\n                if (sc.Match('\\\\', static_cast<char>(chQuote))\n                        || sc.Match('\\\\', static_cast<char>(chString))\n                        || sc.Match('\\\\', '\\\\')) {\n                        sc.Forward(2);\n                } else {\n                        sc.Forward();\n                }\n        }\n}\n\nstatic void ColouriseTADS3HTMLTagStart(StyleContext &sc) {\n        sc.SetState(SCE_T3_HTML_TAG);\n        sc.Forward();\n        if (sc.ch == '/') {\n                sc.Forward();\n        }\n        while (IsAnHTMLChar(sc.ch)) {\n                sc.Forward();\n        }\n}\n\nstatic void ColouriseTADS3HTMLTag(StyleContext &sc, int &lineState) {\n        int endState = sc.state;\n        int chQuote = '\"';\n        int chString = '\\'';\n        switch (endState) {\n                case SCE_T3_S_STRING:\n                        ColouriseTADS3HTMLTagStart(sc);\n                        sc.SetState(SCE_T3_HTML_DEFAULT);\n                        chQuote = '\\'';\n                        chString = '\"';\n                        break;\n                case SCE_T3_D_STRING:\n                case SCE_T3_X_STRING:\n                        ColouriseTADS3HTMLTagStart(sc);\n                        sc.SetState(SCE_T3_HTML_DEFAULT);\n                        break;\n                case SCE_T3_HTML_DEFAULT:\n                        if (lineState&T3_SINGLE_QUOTE) {\n                                endState = SCE_T3_S_STRING;\n                                chQuote = '\\'';\n                                chString = '\"';\n                        } else if (lineState&T3_INT_EXPRESSION) {\n                                endState = SCE_T3_X_STRING;\n                        } else {\n                                endState = SCE_T3_D_STRING;\n                        }\n                        break;\n        }\n\n        while (sc.More()) {\n                if (IsEOL(sc.ch, sc.chNext)) {\n                        return;\n                }\n                if (sc.Match('/', '>')) {\n                        sc.SetState(SCE_T3_HTML_TAG);\n                        sc.Forward(2);\n                        sc.SetState(endState);\n                        return;\n                }\n                if (sc.ch == '>') {\n                        sc.SetState(SCE_T3_HTML_TAG);\n                        sc.ForwardSetState(endState);\n                        return;\n                }\n                if (sc.ch == chQuote) {\n                        sc.SetState(endState);\n                        return;\n                }\n                if (sc.Match('\\\\', static_cast<char>(chQuote))) {\n                        sc.Forward();\n                        ColouriseTADSHTMLString(sc, lineState);\n                        if (sc.state == SCE_T3_X_DEFAULT)\n                            break;\n                } else if (sc.ch == chString) {\n                        ColouriseTADSHTMLString(sc, lineState);\n                } else if (sc.ch == '=') {\n                        ColouriseTADS3Operator(sc);\n                } else {\n                        sc.Forward();\n                }\n        }\n}\n\nstatic void ColouriseTADS3Keyword(StyleContext &sc,\n                                                        WordList *keywordlists[],       Sci_PositionU endPos) {\n        char s[250];\n        WordList &keywords = *keywordlists[0];\n        WordList &userwords1 = *keywordlists[1];\n        WordList &userwords2 = *keywordlists[2];\n        WordList &userwords3 = *keywordlists[3];\n        int initState = sc.state;\n        sc.SetState(SCE_T3_IDENTIFIER);\n        while (sc.More() && (IsAWordChar(sc.ch))) {\n                sc.Forward();\n        }\n        sc.GetCurrent(s, sizeof(s));\n        if ( strcmp(s, \"is\") == 0 || strcmp(s, \"not\") == 0) {\n                // have to find if \"in\" is next\n                Sci_Position n = 1;\n                while (n + sc.currentPos < endPos && IsASpaceOrTab(sc.GetRelative(n)))\n                        n++;\n                if (sc.GetRelative(n) == 'i' && sc.GetRelative(n+1) == 'n') {\n                        sc.Forward(n+2);\n                        sc.ChangeState(SCE_T3_KEYWORD);\n                }\n        } else if (keywords.InList(s)) {\n                sc.ChangeState(SCE_T3_KEYWORD);\n        } else if (userwords3.InList(s)) {\n                sc.ChangeState(SCE_T3_USER3);\n        } else if (userwords2.InList(s)) {\n                sc.ChangeState(SCE_T3_USER2);\n        } else if (userwords1.InList(s)) {\n                sc.ChangeState(SCE_T3_USER1);\n        }\n        sc.SetState(initState);\n}\n\nstatic void ColouriseTADS3MsgParam(StyleContext &sc, int &lineState) {\n        int endState = sc.state;\n        int chQuote = '\"';\n        switch (endState) {\n                case SCE_T3_S_STRING:\n                        sc.SetState(SCE_T3_MSG_PARAM);\n                        sc.Forward();\n                        chQuote = '\\'';\n                        break;\n                case SCE_T3_D_STRING:\n                case SCE_T3_X_STRING:\n                        sc.SetState(SCE_T3_MSG_PARAM);\n                        sc.Forward();\n                        break;\n                case SCE_T3_MSG_PARAM:\n                        if (lineState&T3_SINGLE_QUOTE) {\n                                endState = SCE_T3_S_STRING;\n                                chQuote = '\\'';\n                        } else if (lineState&T3_INT_EXPRESSION) {\n                                endState = SCE_T3_X_STRING;\n                        } else {\n                                endState = SCE_T3_D_STRING;\n                        }\n                        break;\n        }\n        while (sc.More() && sc.ch != '}' && sc.ch != chQuote) {\n                if (IsEOL(sc.ch, sc.chNext)) {\n                        return;\n                }\n                if (sc.ch == '\\\\') {\n                        sc.Forward();\n                }\n                sc.Forward();\n        }\n        if (sc.ch == chQuote) {\n                sc.SetState(endState);\n        } else {\n                sc.ForwardSetState(endState);\n        }\n}\n\nstatic void ColouriseTADS3LibDirective(StyleContext &sc, int &lineState) {\n        int initState = sc.state;\n        int chQuote = '\"';\n        switch (initState) {\n                case SCE_T3_S_STRING:\n                        sc.SetState(SCE_T3_LIB_DIRECTIVE);\n                        sc.Forward(2);\n                        chQuote = '\\'';\n                        break;\n                case SCE_T3_D_STRING:\n                        sc.SetState(SCE_T3_LIB_DIRECTIVE);\n                        sc.Forward(2);\n                        break;\n                case SCE_T3_LIB_DIRECTIVE:\n                        if (lineState&T3_SINGLE_QUOTE) {\n                                initState = SCE_T3_S_STRING;\n                                chQuote = '\\'';\n                        } else {\n                                initState = SCE_T3_D_STRING;\n                        }\n                        break;\n        }\n        while (sc.More() && IsADirectiveChar(sc.ch)) {\n                if (IsEOL(sc.ch, sc.chNext)) {\n                        return;\n                }\n                sc.Forward();\n        };\n        if (sc.ch == '>' || !sc.More()) {\n                sc.ForwardSetState(initState);\n        } else if (sc.ch == chQuote) {\n                sc.SetState(initState);\n        } else {\n                sc.ChangeState(initState);\n                sc.Forward();\n        }\n}\n\nstatic void ColouriseTADS3String(StyleContext &sc, int &lineState) {\n        int chQuote = sc.ch;\n        int endState = sc.state;\n        switch (sc.state) {\n                case SCE_T3_DEFAULT:\n                case SCE_T3_X_DEFAULT:\n                        if (chQuote == '\"') {\n                                if (sc.state == SCE_T3_DEFAULT) {\n                                        sc.SetState(SCE_T3_D_STRING);\n                                } else {\n                                        sc.SetState(SCE_T3_X_STRING);\n                                }\n                                lineState &= ~T3_SINGLE_QUOTE;\n                        } else {\n                                sc.SetState(SCE_T3_S_STRING);\n                                lineState |= T3_SINGLE_QUOTE;\n                        }\n                        sc.Forward();\n                        break;\n                case SCE_T3_S_STRING:\n                        chQuote = '\\'';\n                        endState = lineState&T3_INT_EXPRESSION ?\n                                SCE_T3_X_DEFAULT : SCE_T3_DEFAULT;\n                        break;\n                case SCE_T3_D_STRING:\n                        chQuote = '\"';\n                        endState = SCE_T3_DEFAULT;\n                        break;\n                case SCE_T3_X_STRING:\n                        chQuote = '\"';\n                        endState = SCE_T3_X_DEFAULT;\n                        break;\n        }\n        while (sc.More()) {\n                if (IsEOL(sc.ch, sc.chNext)) {\n                        return;\n                }\n                if (sc.ch == chQuote) {\n                        sc.ForwardSetState(endState);\n                        return;\n                }\n                if (sc.state == SCE_T3_D_STRING && sc.Match('<', '<')) {\n                        lineState |= T3_INT_EXPRESSION;\n                        sc.SetState(SCE_T3_X_DEFAULT);\n                        sc.Forward(2);\n                        return;\n                }\n                if (sc.Match('\\\\', static_cast<char>(chQuote))\n                    || sc.Match('\\\\', '\\\\')) {\n                        sc.Forward(2);\n                } else if (sc.ch == '{') {\n                        ColouriseTADS3MsgParam(sc, lineState);\n                } else if (sc.Match('<', '.')) {\n                        ColouriseTADS3LibDirective(sc, lineState);\n                } else if (sc.ch == '<') {\n                        ColouriseTADS3HTMLTag(sc, lineState);\n                        if (sc.state == SCE_T3_X_DEFAULT)\n                                return;\n                } else {\n                        sc.Forward();\n                }\n        }\n}\n\nstatic void ColouriseTADS3Comment(StyleContext &sc, int endState) {\n        sc.SetState(SCE_T3_BLOCK_COMMENT);\n        while (sc.More()) {\n                if (IsEOL(sc.ch, sc.chNext)) {\n                        return;\n                }\n                if (sc.Match('*', '/')) {\n                        sc.Forward(2);\n                        sc.SetState(endState);\n                        return;\n                }\n                sc.Forward();\n        }\n}\n\nstatic void ColouriseToEndOfLine(StyleContext &sc, int initState, int endState) {\n        sc.SetState(initState);\n        while (sc.More()) {\n                if (sc.ch == '\\\\') {\n                        sc.Forward();\n                        if (IsEOLSkip(sc)) {\n                                        return;\n                        }\n                }\n                if (IsEOL(sc.ch, sc.chNext)) {\n                        sc.SetState(endState);\n                        return;\n                }\n                sc.Forward();\n        }\n}\n\nstatic void ColouriseTADS3Number(StyleContext &sc) {\n        int endState = sc.state;\n        bool inHexNumber = false;\n        bool seenE = false;\n        bool seenDot = sc.ch == '.';\n        sc.SetState(SCE_T3_NUMBER);\n        if (sc.More()) {\n                sc.Forward();\n        }\n        if (sc.chPrev == '0' && tolower(sc.ch) == 'x') {\n                inHexNumber = true;\n                sc.Forward();\n        }\n        while (sc.More()) {\n                if (inHexNumber) {\n                        if (!IsAHexDigit(sc.ch)) {\n                                break;\n                        }\n                } else if (!isdigit(sc.ch)) {\n                        if (!seenE && tolower(sc.ch) == 'e') {\n                                seenE = true;\n                                seenDot = true;\n                                if (sc.chNext == '+' || sc.chNext == '-') {\n                                        sc.Forward();\n                                }\n                        } else if (!seenDot && sc.ch == '.') {\n                                seenDot = true;\n                        } else {\n                                break;\n                        }\n                }\n                sc.Forward();\n        }\n        sc.SetState(endState);\n}\n\nstatic void ColouriseTADS3Doc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                                                           WordList *keywordlists[], Accessor &styler) {\n        int visibleChars = 0;\n        int bracketLevel = 0;\n        int lineState = 0;\n        Sci_PositionU endPos = startPos + length;\n        Sci_Position lineCurrent = styler.GetLine(startPos);\n        if (lineCurrent > 0) {\n                lineState = styler.GetLineState(lineCurrent-1);\n        }\n        StyleContext sc(startPos, length, initStyle, styler);\n\n        while (sc.More()) {\n\n                if (IsEOL(sc.ch, sc.chNext)) {\n                        styler.SetLineState(lineCurrent, lineState);\n                        lineCurrent++;\n                        visibleChars = 0;\n                        sc.Forward();\n                        if (sc.ch == '\\n') {\n                                sc.Forward();\n                        }\n                }\n\n                switch(sc.state) {\n                        case SCE_T3_PREPROCESSOR:\n                        case SCE_T3_LINE_COMMENT:\n                                ColouriseToEndOfLine(sc, sc.state, lineState&T3_INT_EXPRESSION ?\n                                        SCE_T3_X_DEFAULT : SCE_T3_DEFAULT);\n                                break;\n                        case SCE_T3_S_STRING:\n                        case SCE_T3_D_STRING:\n                        case SCE_T3_X_STRING:\n                                ColouriseTADS3String(sc, lineState);\n                                visibleChars++;\n                                break;\n                        case SCE_T3_MSG_PARAM:\n                                ColouriseTADS3MsgParam(sc, lineState);\n                                break;\n                        case SCE_T3_LIB_DIRECTIVE:\n                                ColouriseTADS3LibDirective(sc, lineState);\n                                break;\n                        case SCE_T3_HTML_DEFAULT:\n                                ColouriseTADS3HTMLTag(sc, lineState);\n                                break;\n                        case SCE_T3_HTML_STRING:\n                                ColouriseTADSHTMLString(sc, lineState);\n                                break;\n                        case SCE_T3_BLOCK_COMMENT:\n                                ColouriseTADS3Comment(sc, lineState&T3_INT_EXPRESSION ?\n                                        SCE_T3_X_DEFAULT : SCE_T3_DEFAULT);\n                                break;\n                        case SCE_T3_DEFAULT:\n                        case SCE_T3_X_DEFAULT:\n                                if (IsASpaceOrTab(sc.ch)) {\n                                        sc.Forward();\n                                } else if (sc.ch == '#' && visibleChars == 0) {\n                                        ColouriseToEndOfLine(sc, SCE_T3_PREPROCESSOR, sc.state);\n                                } else if (sc.Match('/', '*')) {\n                                        ColouriseTADS3Comment(sc, sc.state);\n                                        visibleChars++;\n                                } else if (sc.Match('/', '/')) {\n                                        ColouriseToEndOfLine(sc, SCE_T3_LINE_COMMENT, sc.state);\n                                } else if (sc.ch == '\"') {\n                                        bracketLevel = 0;\n                                        ColouriseTADS3String(sc, lineState);\n                                        visibleChars++;\n                                } else if (sc.ch == '\\'') {\n                                        ColouriseTADS3String(sc, lineState);\n                                        visibleChars++;\n                                } else if (sc.state == SCE_T3_X_DEFAULT && bracketLevel == 0\n                                                   && sc.Match('>', '>')) {\n                                        sc.Forward(2);\n                                        sc.SetState(SCE_T3_D_STRING);\n                                        if (lineState & T3_INT_EXPRESSION_IN_TAG)\n                                                sc.SetState(SCE_T3_HTML_STRING);\n                                        lineState &= ~(T3_SINGLE_QUOTE|T3_INT_EXPRESSION\n                                                       |T3_INT_EXPRESSION_IN_TAG);\n                                } else if (IsATADS3Operator(sc.ch)) {\n                                        if (sc.state == SCE_T3_X_DEFAULT) {\n                                                if (sc.ch == '(') {\n                                                        bracketLevel++;\n                                                } else if (sc.ch == ')' && bracketLevel > 0) {\n                                                        bracketLevel--;\n                                                }\n                                        }\n                                        ColouriseTADS3Operator(sc);\n                                        visibleChars++;\n                                } else if (IsANumberStart(sc)) {\n                                        ColouriseTADS3Number(sc);\n                                        visibleChars++;\n                                } else if (IsAWordStart(sc.ch)) {\n                                        ColouriseTADS3Keyword(sc, keywordlists, endPos);\n                                        visibleChars++;\n                                } else if (sc.Match(\"...\")) {\n                                        sc.SetState(SCE_T3_IDENTIFIER);\n                                        sc.Forward(3);\n                                        sc.SetState(SCE_T3_DEFAULT);\n                                } else {\n                                        sc.Forward();\n                                        visibleChars++;\n                                }\n                                break;\n                        default:\n                                sc.SetState(SCE_T3_DEFAULT);\n                                sc.Forward();\n                }\n        }\n        sc.Complete();\n}\n\n/*\n TADS3 has two styles of top level block (TLB). Eg\n\n // default style\n silverKey : Key 'small silver key' 'small silver key'\n        \"A small key glints in the sunlight. \"\n ;\n\n and\n\n silverKey : Key {\n        'small silver key'\n        'small silver key'\n        \"A small key glints in the sunlight. \"\n }\n\n Some constructs mandate one or the other, but usually the author has may choose\n either.\n\n T3_SEENSTART is used to indicate that a braceless TLB has been (potentially)\n seen and is also used to match the closing ';' of the default style.\n\n T3_EXPECTINGIDENTIFIER and T3_EXPECTINGPUNCTUATION are used to keep track of\n what characters may be seen without incrementing the block level.  The general\n pattern is identifier <punc> identifier, acceptable punctuation characters\n are ':', ',', '(' and ')'.  No attempt is made to ensure that punctuation\n characters are syntactically correct, eg parentheses match. A ')' always\n signifies the start of a block.  We just need to check if it is followed by a\n '{', in which case we let the brace handling code handle the folding level.\n\n expectingIdentifier == false && expectingIdentifier == false\n Before the start of a TLB.\n\n expectingIdentifier == true && expectingIdentifier == true\n Currently in an identifier.  Will accept identifier or punctuation.\n\n expectingIdentifier == true && expectingIdentifier == false\n Just seen a punctuation character & now waiting for an identifier to start.\n\n expectingIdentifier == false && expectingIdentifier == truee\n We were in an identifier and have seen space.  Now waiting to see a punctuation\n character\n\n Space, comments & preprocessor directives are always acceptable and are\n equivalent.\n*/\n\nstatic const int T3_SEENSTART = 1 << 12;\nstatic const int T3_EXPECTINGIDENTIFIER = 1 << 13;\nstatic const int T3_EXPECTINGPUNCTUATION = 1 << 14;\n\nstatic inline bool IsStringTransition(int s1, int s2) {\n        return s1 != s2\n                && (s1 == SCE_T3_S_STRING || s1 == SCE_T3_X_STRING\n                        || (s1 == SCE_T3_D_STRING && s2 != SCE_T3_X_DEFAULT))\n                && s2 != SCE_T3_LIB_DIRECTIVE\n                && s2 != SCE_T3_MSG_PARAM\n                && s2 != SCE_T3_HTML_TAG\n                && s2 != SCE_T3_HTML_STRING;\n}\n\nstatic inline bool IsATADS3Punctuation(const int ch) {\n        return ch == ':' || ch == ',' || ch == '(' || ch == ')';\n}\n\nstatic inline bool IsAnIdentifier(const int style) {\n        return style == SCE_T3_IDENTIFIER\n                || style == SCE_T3_USER1\n                || style == SCE_T3_USER2\n                || style == SCE_T3_USER3;\n}\n\nstatic inline bool IsAnOperator(const int style) {\n    return style == SCE_T3_OPERATOR || style == SCE_T3_BRACE;\n}\n\nstatic inline bool IsSpaceEquivalent(const int ch, const int style) {\n        return isspace(ch)\n                || style == SCE_T3_BLOCK_COMMENT\n                || style == SCE_T3_LINE_COMMENT\n                || style == SCE_T3_PREPROCESSOR;\n}\n\nstatic char peekAhead(Sci_PositionU startPos, Sci_PositionU endPos,\n                                          Accessor &styler) {\n        for (Sci_PositionU i = startPos; i < endPos; i++) {\n                int style = styler.StyleAt(i);\n                char ch = styler[i];\n                if (!IsSpaceEquivalent(ch, style)) {\n                        if (IsAnIdentifier(style)) {\n                                return 'a';\n                        }\n                        if (IsATADS3Punctuation(ch)) {\n                                return ':';\n                        }\n                        if (ch == '{') {\n                                return '{';\n                        }\n                        return '*';\n                }\n        }\n        return ' ';\n}\n\nstatic void FoldTADS3Doc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                            WordList *[], Accessor &styler) {\n        Sci_PositionU endPos = startPos + length;\n        Sci_Position lineCurrent = styler.GetLine(startPos);\n        int levelCurrent = SC_FOLDLEVELBASE;\n        if (lineCurrent > 0)\n                levelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n        int seenStart = levelCurrent & T3_SEENSTART;\n        int expectingIdentifier = levelCurrent & T3_EXPECTINGIDENTIFIER;\n        int expectingPunctuation = levelCurrent & T3_EXPECTINGPUNCTUATION;\n        levelCurrent &= SC_FOLDLEVELNUMBERMASK;\n        int levelMinCurrent = levelCurrent;\n        int levelNext = levelCurrent;\n        char chNext = styler[startPos];\n        int styleNext = styler.StyleAt(startPos);\n        int style = initStyle;\n        char ch = chNext;\n        int stylePrev = style;\n        bool redo = false;\n        for (Sci_PositionU i = startPos; i < endPos; i++) {\n                if (redo) {\n                        redo = false;\n                        i--;\n                } else {\n                        ch = chNext;\n                        chNext = styler.SafeGetCharAt(i + 1);\n                        stylePrev = style;\n                        style = styleNext;\n                        styleNext = styler.StyleAt(i + 1);\n                }\n                bool atEOL = IsEOL(ch, chNext);\n\n                if (levelNext == SC_FOLDLEVELBASE) {\n                        if (IsSpaceEquivalent(ch, style)) {\n                                if (expectingPunctuation) {\n                                        expectingIdentifier = 0;\n                                }\n                                if (style == SCE_T3_BLOCK_COMMENT) {\n                                        levelNext++;\n                                }\n                        } else if (ch == '{') {\n                                levelNext++;\n                                seenStart = 0;\n                        } else if (ch == '\\'' || ch == '\"' || ch == '[') {\n                                levelNext++;\n                                if (seenStart) {\n                                        redo = true;\n                                }\n                        } else if (ch == ';') {\n                                seenStart = 0;\n                                expectingIdentifier = 0;\n                                expectingPunctuation = 0;\n                        } else if (expectingIdentifier && expectingPunctuation) {\n                                if (IsATADS3Punctuation(ch)) {\n                                        if (ch == ')' && peekAhead(i+1, endPos, styler) != '{') {\n                                                levelNext++;\n                                        } else {\n                                                expectingPunctuation = 0;\n                                        }\n                                } else if (!IsAnIdentifier(style)) {\n                                        levelNext++;\n                                }\n                        } else if (expectingIdentifier && !expectingPunctuation) {\n                                if (!IsAnIdentifier(style)) {\n                                        levelNext++;\n                                } else {\n                                        expectingPunctuation = T3_EXPECTINGPUNCTUATION;\n                                }\n                        } else if (!expectingIdentifier && expectingPunctuation) {\n                                if (!IsATADS3Punctuation(ch)) {\n                                        levelNext++;\n                                } else {\n                                        if (ch == ')' && peekAhead(i+1, endPos, styler) != '{') {\n                                                levelNext++;\n                                        } else {\n                                                expectingIdentifier = T3_EXPECTINGIDENTIFIER;\n                                                expectingPunctuation = 0;\n                                        }\n                                }\n                        } else if (!expectingIdentifier && !expectingPunctuation) {\n                                if (IsAnIdentifier(style)) {\n                                        seenStart = T3_SEENSTART;\n                                        expectingIdentifier = T3_EXPECTINGIDENTIFIER;\n                                        expectingPunctuation = T3_EXPECTINGPUNCTUATION;\n                                }\n                        }\n\n                        if (levelNext != SC_FOLDLEVELBASE && style != SCE_T3_BLOCK_COMMENT) {\n                                expectingIdentifier = 0;\n                                expectingPunctuation = 0;\n                        }\n\n                } else if (levelNext == SC_FOLDLEVELBASE+1 && seenStart\n                                   && ch == ';' && IsAnOperator(style)) {\n                        levelNext--;\n                        seenStart = 0;\n                } else if (style == SCE_T3_BLOCK_COMMENT) {\n                        if (stylePrev != SCE_T3_BLOCK_COMMENT) {\n                                levelNext++;\n                        } else if (styleNext != SCE_T3_BLOCK_COMMENT && !atEOL) {\n                                // Comments don't end at end of line and the next character may be unstyled.\n                                levelNext--;\n                        }\n                } else if (ch == '\\'' || ch == '\"') {\n                        if (IsStringTransition(style, stylePrev)) {\n                                if (levelMinCurrent > levelNext) {\n                                        levelMinCurrent = levelNext;\n                                }\n                                levelNext++;\n                        } else if (IsStringTransition(style, styleNext)) {\n                                levelNext--;\n                        }\n                } else if (IsAnOperator(style)) {\n                        if (ch == '{' || ch == '[') {\n                                // Measure the minimum before a '{' to allow\n                                // folding on \"} else {\"\n                                if (levelMinCurrent > levelNext) {\n                                        levelMinCurrent = levelNext;\n                                }\n                                levelNext++;\n                        } else if (ch == '}' || ch == ']') {\n                                levelNext--;\n                        }\n                }\n\n                if (atEOL) {\n                        if (seenStart && levelNext == SC_FOLDLEVELBASE) {\n                                switch (peekAhead(i+1, endPos, styler)) {\n                                        case ' ':\n                                        case '{':\n                                                break;\n                                        case '*':\n                                                levelNext++;\n                                                break;\n                                        case 'a':\n                                                if (expectingPunctuation) {\n                                                        levelNext++;\n                                                }\n                                                break;\n                                        case ':':\n                                                if (expectingIdentifier) {\n                                                        levelNext++;\n                                                }\n                                                break;\n                                }\n                                if (levelNext != SC_FOLDLEVELBASE) {\n                                        expectingIdentifier = 0;\n                                        expectingPunctuation = 0;\n                                }\n                        }\n                        int lev = levelMinCurrent | (levelNext | expectingIdentifier\n                                | expectingPunctuation | seenStart) << 16;\n                        if (levelMinCurrent < levelNext)\n                                lev |= SC_FOLDLEVELHEADERFLAG;\n                        if (lev != styler.LevelAt(lineCurrent)) {\n                                styler.SetLevel(lineCurrent, lev);\n                        }\n                        lineCurrent++;\n                        levelCurrent = levelNext;\n                        levelMinCurrent = levelCurrent;\n                }\n        }\n}\n\nstatic const char * const tads3WordList[] = {\n        \"TADS3 Keywords\",\n        \"User defined 1\",\n        \"User defined 2\",\n        \"User defined 3\",\n        0\n};\n\nLexerModule lmTADS3(SCLEX_TADS3, ColouriseTADS3Doc, \"tads3\", FoldTADS3Doc, tads3WordList);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexTAL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexTAL.cxx\n ** Lexer for TAL\n ** Based on LexPascal.cxx\n ** Written by Laurent le Tynevez\n ** Updated by Simon Steele <s.steele@pnotepad.org> September 2002\n ** Updated by Mathias Rauen <scite@madshi.net> May 2003 (Delphi adjustments)\n ** Updated by Rod Falck, Aug 2006 Converted to TAL\n **/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\ninline bool isTALoperator(char ch)\n\t{\n\treturn ch == '\\'' || ch == '@' || ch == '#' || isoperator(ch);\n\t}\n\ninline bool isTALwordchar(char ch)\n\t{\n\treturn ch == '$' || ch == '^' || iswordchar(ch);\n\t}\n\ninline bool isTALwordstart(char ch)\n\t{\n\treturn ch == '$' || ch == '^' || iswordstart(ch);\n\t}\n\nstatic void getRange(Sci_PositionU start,\n\t\tSci_PositionU end,\n\t\tAccessor &styler,\n\t\tchar *s,\n\t\tSci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile ((i < end - start + 1) && (i < len-1)) {\n\t\ts[i] = static_cast<char>(tolower(styler[start + i]));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_C_COMMENT ||\n\t\tstyle == SCE_C_COMMENTDOC ||\n\t\tstyle == SCE_C_COMMENTDOCKEYWORD ||\n\t\tstyle == SCE_C_COMMENTDOCKEYWORDERROR;\n}\n\nstatic void ColourTo(Accessor &styler, Sci_PositionU end, unsigned int attr, bool bInAsm) {\n\tif ((bInAsm) && (attr == SCE_C_OPERATOR || attr == SCE_C_NUMBER || attr == SCE_C_DEFAULT || attr == SCE_C_WORD || attr == SCE_C_IDENTIFIER)) {\n\t\tstyler.ColourTo(end, SCE_C_REGEX);\n\t} else\n\t\tstyler.ColourTo(end, attr);\n}\n\n// returns 1 if the item starts a class definition, and -1 if the word is \"end\", and 2 if the word is \"asm\"\nstatic int classifyWordTAL(Sci_PositionU start, Sci_PositionU end, /*WordList &keywords*/WordList *keywordlists[], Accessor &styler, bool bInAsm) {\n\tint ret = 0;\n\n\tWordList& keywords = *keywordlists[0];\n\tWordList& builtins = *keywordlists[1];\n\tWordList& nonreserved_keywords = *keywordlists[2];\n\n\tchar s[100];\n\tgetRange(start, end, styler, s, sizeof(s));\n\n\tchar chAttr = SCE_C_IDENTIFIER;\n\tif (isdigit(s[0]) || (s[0] == '.')) {\n\t\tchAttr = SCE_C_NUMBER;\n\t}\n\telse {\n\t\tif (keywords.InList(s)) {\n\t\t\tchAttr = SCE_C_WORD;\n\n\t\t\tif (strcmp(s, \"asm\") == 0) {\n\t\t\t\tret = 2;\n\t\t\t}\n\t\t\telse if (strcmp(s, \"end\") == 0) {\n\t\t\t\tret = -1;\n\t\t\t}\n\t\t}\n\t\telse if (s[0] == '$' || builtins.InList(s)) {\n\t\t\tchAttr = SCE_C_WORD2;\n\t\t}\n\t\telse if (nonreserved_keywords.InList(s)) {\n\t\t\tchAttr = SCE_C_UUID;\n\t\t}\n\t}\n\tColourTo(styler, end, chAttr, (bInAsm && ret != -1));\n\treturn ret;\n}\n\nstatic int classifyFoldPointTAL(const char* s) {\n\tint lev = 0;\n\tif (!(isdigit(s[0]) || (s[0] == '.'))) {\n\t\tif (strcmp(s, \"begin\") == 0 ||\n\t\t\tstrcmp(s, \"block\") == 0) {\n\t\t\tlev=1;\n\t\t} else if (strcmp(s, \"end\") == 0) {\n\t\t\tlev=-1;\n\t\t}\n\t}\n\treturn lev;\n}\n\nstatic void ColouriseTALDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *keywordlists[],\n\tAccessor &styler) {\n\n\tstyler.StartAt(startPos);\n\n\tint state = initStyle;\n\tif (state == SCE_C_CHARACTER)\t// Does not leak onto next line\n\t\tstate = SCE_C_DEFAULT;\n\tchar chPrev = ' ';\n\tchar chNext = styler[startPos];\n\tSci_PositionU lengthDoc = startPos + length;\n\n\tbool bInClassDefinition;\n\n\tSci_Position currentLine = styler.GetLine(startPos);\n\tif (currentLine > 0) {\n\t\tstyler.SetLineState(currentLine, styler.GetLineState(currentLine-1));\n\t\tbInClassDefinition = (styler.GetLineState(currentLine) == 1);\n\t} else {\n\t\tstyler.SetLineState(currentLine, 0);\n\t\tbInClassDefinition = false;\n\t}\n\n\tbool bInAsm = (state == SCE_C_REGEX);\n\tif (bInAsm)\n\t\tstate = SCE_C_DEFAULT;\n\n\tstyler.StartSegment(startPos);\n\tint visibleChars = 0;\n\tfor (Sci_PositionU i = startPos; i < lengthDoc; i++) {\n\t\tchar ch = chNext;\n\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n')) {\n\t\t\t// Trigger on CR only (Mac style) or either on LF from CR+LF (Dos/Win) or on LF alone (Unix)\n\t\t\t// Avoid triggering two times on Dos/Win\n\t\t\t// End of line\n\t\t\tif (state == SCE_C_CHARACTER) {\n\t\t\t\tColourTo(styler, i, state, bInAsm);\n\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t}\n\t\t\tvisibleChars = 0;\n\t\t\tcurrentLine++;\n\t\t\tstyler.SetLineState(currentLine, (bInClassDefinition ? 1 : 0));\n\t\t}\n\n\t\tif (styler.IsLeadByte(ch)) {\n\t\t\tchNext = styler.SafeGetCharAt(i + 2);\n\t\t\tchPrev = ' ';\n\t\t\ti += 1;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (state == SCE_C_DEFAULT) {\n\t\t\tif (isTALwordstart(ch)) {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_IDENTIFIER;\n\t\t\t} else if (ch == '!' && chNext != '*') {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_COMMENT;\n\t\t\t} else if (ch == '!' && chNext == '*') {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_COMMENTDOC;\n\t\t\t} else if (ch == '-' && chNext == '-') {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_COMMENTLINE;\n\t\t\t} else if (ch == '\"') {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_STRING;\n\t\t\t} else if (ch == '?' && visibleChars == 0) {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tstate = SCE_C_PREPROCESSOR;\n\t\t\t} else if (isTALoperator(ch)) {\n\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\tColourTo(styler, i, SCE_C_OPERATOR, bInAsm);\n\t\t\t}\n\t\t} else if (state == SCE_C_IDENTIFIER) {\n\t\t\tif (!isTALwordchar(ch)) {\n\t\t\t\tint lStateChange = classifyWordTAL(styler.GetStartSegment(), i - 1, keywordlists, styler, bInAsm);\n\n\t\t\t\tif(lStateChange == 1) {\n\t\t\t\t\tstyler.SetLineState(currentLine, 1);\n\t\t\t\t\tbInClassDefinition = true;\n\t\t\t\t} else if(lStateChange == 2) {\n\t\t\t\t\tbInAsm = true;\n\t\t\t\t} else if(lStateChange == -1) {\n\t\t\t\t\tstyler.SetLineState(currentLine, 0);\n\t\t\t\t\tbInClassDefinition = false;\n\t\t\t\t\tbInAsm = false;\n\t\t\t\t}\n\n\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\t\t\tif (ch == '!' && chNext != '*') {\n\t\t\t\t\tstate = SCE_C_COMMENT;\n\t\t\t\t} else if (ch == '!' && chNext == '*') {\n\t\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_COMMENTDOC;\n\t\t\t\t} else if (ch == '-' && chNext == '-') {\n\t\t\t\t\tstate = SCE_C_COMMENTLINE;\n\t\t\t\t} else if (ch == '\"') {\n\t\t\t\t\tstate = SCE_C_STRING;\n\t\t\t\t} else if (isTALoperator(ch)) {\n\t\t\t\t\tColourTo(styler, i, SCE_C_OPERATOR, bInAsm);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (state == SCE_C_PREPROCESSOR) {\n\t\t\t\tif ((ch == '\\r' || ch == '\\n') && !(chPrev == '\\\\' || chPrev == '\\r')) {\n\t\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (state == SCE_C_COMMENT) {\n\t\t\t\tif (ch == '!' || (ch == '\\r' || ch == '\\n') ) {\n\t\t\t\t\tColourTo(styler, i, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (state == SCE_C_COMMENTDOC) {\n\t\t\t\tif (ch == '!' || (ch == '\\r' || ch == '\\n')) {\n\t\t\t\t\tif (((i > styler.GetStartSegment() + 2) || (\n\t\t\t\t\t\t(initStyle == SCE_C_COMMENTDOC) &&\n\t\t\t\t\t\t(styler.GetStartSegment() == static_cast<Sci_PositionU>(startPos))))) {\n\t\t\t\t\t\t\tColourTo(styler, i, state, bInAsm);\n\t\t\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (state == SCE_C_COMMENTLINE) {\n\t\t\t\tif (ch == '\\r' || ch == '\\n') {\n\t\t\t\t\tColourTo(styler, i-1, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t\t} else if (state == SCE_C_STRING) {\n\t\t\t\tif (ch == '\"') {\n\t\t\t\t\tColourTo(styler, i, state, bInAsm);\n\t\t\t\t\tstate = SCE_C_DEFAULT;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n        if (!isspacechar(ch))\n            visibleChars++;\n\t\tchPrev = ch;\n\t}\n\tColourTo(styler, lengthDoc - 1, state, bInAsm);\n}\n\nstatic void FoldTALDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[],\n                            Accessor &styler) {\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool foldPreprocessor = styler.GetPropertyInt(\"fold.preprocessor\") != 0;\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint levelPrev = styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent = levelPrev;\n\tchar chNext = styler[startPos];\n\tint styleNext = styler.StyleAt(startPos);\n\tint style = initStyle;\n\tbool was_end = false;\n\tbool section = false;\n\n\tSci_Position lastStart = 0;\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = styler.StyleAt(i + 1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n\t\tif (stylePrev == SCE_C_DEFAULT && (style == SCE_C_WORD || style == SCE_C_UUID || style == SCE_C_PREPROCESSOR))\n\t\t{\n\t\t\t// Store last word start point.\n\t\t\tlastStart = i;\n\t\t}\n\n\t\tif (stylePrev == SCE_C_WORD || style == SCE_C_UUID || stylePrev == SCE_C_PREPROCESSOR) {\n\t\t\tif(isTALwordchar(ch) && !isTALwordchar(chNext)) {\n\t\t\t\tchar s[100];\n\t\t\t\tgetRange(lastStart, i, styler, s, sizeof(s));\n\t\t\t\tif (stylePrev == SCE_C_PREPROCESSOR && strcmp(s, \"?section\") == 0)\n\t\t\t\t\t{\n\t\t\t\t\tsection = true;\n\t\t\t\t\tlevelCurrent = 1;\n\t\t\t\t\tlevelPrev = 0;\n\t\t\t\t\t}\n\t\t\t\telse if (stylePrev == SCE_C_WORD || stylePrev == SCE_C_UUID)\n\t\t\t\t\t{\n\t\t\t\t\tif (strcmp(s, \"block\") == 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t// block keyword is ignored immediately after end keyword\n\t\t\t\t\t\tif (!was_end)\n\t\t\t\t\t\t\tlevelCurrent++;\n\t\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\tlevelCurrent += classifyFoldPointTAL(s);\n\t\t\t\t\tif (strcmp(s, \"end\") == 0)\n\t\t\t\t\t\t{\n\t\t\t\t\t\twas_end = true;\n\t\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t\t{\n\t\t\t\t\t\twas_end = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (foldComment && (style == SCE_C_COMMENTLINE)) {\n\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (foldPreprocessor && (style == SCE_C_PREPROCESSOR)) {\n\t\t\tif (ch == '{' && chNext == '$') {\n\t\t\t\tSci_PositionU j=i+2; // skip {$\n\t\t\t\twhile ((j<endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t\tif (styler.Match(j, \"region\") || styler.Match(j, \"if\")) {\n\t\t\t\t\tlevelCurrent++;\n\t\t\t\t} else if (styler.Match(j, \"end\")) {\n\t\t\t\t\tlevelCurrent--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (foldComment && IsStreamCommentStyle(style)) {\n\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\tlevelCurrent++;\n\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\tlevelCurrent--;\n\t\t\t}\n\t\t}\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev | SC_FOLDLEVELBASE;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev || section) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t\tsection = false;\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\nstatic const char * const TALWordListDesc[] = {\n\t\"Keywords\",\n\t\"Builtins\",\n\t0\n};\n\nLexerModule lmTAL(SCLEX_TAL, ColouriseTALDoc, \"TAL\", FoldTALDoc, TALWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexTCL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexTCL.cxx\n ** Lexer for TCL language.\n **/\n// Copyright 1998-2001 by Andre Arpin <arpin@kingston.net>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Extended to accept accented characters\nstatic inline bool IsAWordChar(int ch) {\n\treturn ch >= 0x80 ||\n\t       (isalnum(ch) || ch == '_' || ch ==':' || ch=='.'); // : name space separator\n}\n\nstatic inline bool IsAWordStart(int ch) {\n\treturn ch >= 0x80 || (ch ==':' || isalpha(ch) || ch == '_');\n}\n\nstatic inline bool IsANumberChar(int ch) {\n\t// Not exactly following number definition (several dots are seen as OK, etc.)\n\t// but probably enough in most cases.\n\treturn (ch < 0x80) &&\n\t       (IsADigit(ch, 0x10) || toupper(ch) == 'E' ||\n\t        ch == '.' || ch == '-' || ch == '+');\n}\n\nstatic void ColouriseTCLDoc(Sci_PositionU startPos, Sci_Position length, int , WordList *keywordlists[], Accessor &styler) {\n#define  isComment(s) (s==SCE_TCL_COMMENT || s==SCE_TCL_COMMENTLINE || s==SCE_TCL_COMMENT_BOX || s==SCE_TCL_BLOCK_COMMENT)\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\tbool commentLevel = false;\n\tbool subBrace = false; // substitution begin with a brace ${.....}\n\tenum tLineState {LS_DEFAULT, LS_OPEN_COMMENT, LS_OPEN_DOUBLE_QUOTE, LS_COMMENT_BOX, LS_MASK_STATE = 0xf,\n\t                 LS_COMMAND_EXPECTED = 16, LS_BRACE_ONLY = 32\n\t                } lineState = LS_DEFAULT;\n\tbool prevSlash = false;\n\tint currentLevel = 0;\n\tbool expected = 0;\n\tbool subParen = 0;\n\n\tSci_Position currentLine = styler.GetLine(startPos);\n\tif (currentLine > 0)\n\t\tcurrentLine--;\n\tlength += startPos - styler.LineStart(currentLine);\n\t// make sure lines overlap\n\tstartPos = styler.LineStart(currentLine);\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\tWordList &keywords5 = *keywordlists[4];\n\tWordList &keywords6 = *keywordlists[5];\n\tWordList &keywords7 = *keywordlists[6];\n\tWordList &keywords8 = *keywordlists[7];\n\tWordList &keywords9 = *keywordlists[8];\n\n\tif (currentLine > 0) {\n\t\tint ls = styler.GetLineState(currentLine - 1);\n\t\tlineState = tLineState(ls & LS_MASK_STATE);\n\t\texpected = LS_COMMAND_EXPECTED == tLineState(ls & LS_COMMAND_EXPECTED);\n\t\tsubBrace = LS_BRACE_ONLY == tLineState(ls & LS_BRACE_ONLY);\n\t\tcurrentLevel = styler.LevelAt(currentLine - 1) >> 17;\n\t\tcommentLevel = (styler.LevelAt(currentLine - 1) >> 16) & 1;\n\t} else\n\t\tstyler.SetLevel(0, SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG);\n\tbool visibleChars = false;\n\n\tint previousLevel = currentLevel;\n\tStyleContext sc(startPos, length, SCE_TCL_DEFAULT, styler);\n\tfor (; ; sc.Forward()) {\nnext:\n\t\tif (sc.ch=='\\r' && sc.chNext == '\\n') // only ignore \\r on PC process on the mac\n\t\t\tcontinue;\n\t\tbool atEnd = !sc.More();  // make sure we coloured the last word\n\t\tif (lineState != LS_DEFAULT) {\n\t\t\tsc.SetState(SCE_TCL_DEFAULT);\n\t\t\tif (lineState == LS_OPEN_COMMENT)\n\t\t\t\tsc.SetState(SCE_TCL_COMMENTLINE);\n\t\t\telse if (lineState == LS_OPEN_DOUBLE_QUOTE)\n\t\t\t\tsc.SetState(SCE_TCL_IN_QUOTE);\n\t\t\telse if (lineState == LS_COMMENT_BOX && (sc.ch == '#' || (sc.ch == ' ' && sc.chNext=='#')))\n\t\t\t\tsc.SetState(SCE_TCL_COMMENT_BOX);\n\t\t\tlineState = LS_DEFAULT;\n\t\t}\n\t\tif (subBrace) { // ${ overrides every thing even \\ except }\n\t\t\tif (sc.ch == '}') {\n\t\t\t\tsubBrace = false;\n\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\tsc.ForwardSetState(SCE_TCL_DEFAULT);\n\t\t\t\tgoto next;\n\t\t\t} else\n\t\t\t\tsc.SetState(SCE_TCL_SUB_BRACE);\n\t\t\tif (!sc.atLineEnd)\n\t\t\t\tcontinue;\n\t\t} else if (sc.state == SCE_TCL_DEFAULT || sc.state ==SCE_TCL_OPERATOR) {\n\t\t\texpected &= isspacechar(static_cast<unsigned char>(sc.ch)) || IsAWordStart(sc.ch) || sc.ch =='#';\n\t\t} else if (sc.state == SCE_TCL_SUBSTITUTION) {\n\t\t\tswitch (sc.ch) {\n\t\t\tcase '(':\n\t\t\t\tsubParen=true;\n\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\tsc.ForwardSetState(SCE_TCL_SUBSTITUTION);\n\t\t\t\tcontinue;\n\t\t\tcase ')':\n\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\tsubParen=false;\n\t\t\t\tcontinue;\n\t\t\tcase '$':\n\t\t\t\tcontinue;\n\t\t\tcase ',':\n\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\tif (subParen)\n\t\t\t\t\tsc.ForwardSetState(SCE_TCL_SUBSTITUTION);\n\t\t\t\tcontinue;\n\t\t\tdefault :\n\t\t\t\t// maybe spaces should be allowed ???\n\t\t\t\tif (!IsAWordChar(sc.ch)) { // probably the code is wrong\n\t\t\t\t\tsc.SetState(SCE_TCL_DEFAULT);\n\t\t\t\t\tsubParen = 0;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t} else if (isComment(sc.state)) {\n\t\t} else if (!IsAWordChar(sc.ch)) {\n\t\t\tif ((sc.state == SCE_TCL_IDENTIFIER && expected) ||  sc.state == SCE_TCL_MODIFIER) {\n\t\t\t\tchar w[100];\n\t\t\t\tchar *s=w;\n\t\t\t\tsc.GetCurrent(w, sizeof(w));\n\t\t\t\tif (w[strlen(w)-1]=='\\r')\n\t\t\t\t\tw[strlen(w)-1]=0;\n\t\t\t\twhile (*s == ':') // ignore leading : like in ::set a 10\n\t\t\t\t\t++s;\n\t\t\t\tbool quote = sc.state == SCE_TCL_IN_QUOTE;\n\t\t\t\tif (commentLevel  || expected) {\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(quote ? SCE_TCL_WORD_IN_QUOTE : SCE_TCL_WORD);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(quote ? SCE_TCL_WORD_IN_QUOTE : SCE_TCL_WORD2);\n\t\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(quote ? SCE_TCL_WORD_IN_QUOTE : SCE_TCL_WORD3);\n\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(quote ? SCE_TCL_WORD_IN_QUOTE : SCE_TCL_WORD4);\n\t\t\t\t\t} else if (sc.GetRelative(-static_cast<int>(strlen(s))-1) == '{' &&\n\t\t\t\t\t           keywords5.InList(s) && sc.ch == '}') { // {keyword} exactly no spaces\n\t\t\t\t\t\tsc.ChangeState(SCE_TCL_EXPAND);\n\t\t\t\t\t}\n\t\t\t\t\tif (keywords6.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_TCL_WORD5);\n\t\t\t\t\t} else if (keywords7.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_TCL_WORD6);\n\t\t\t\t\t} else if (keywords8.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_TCL_WORD7);\n\t\t\t\t\t} else if (keywords9.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_TCL_WORD8);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\texpected = false;\n\t\t\t\tsc.SetState(quote ? SCE_TCL_IN_QUOTE : SCE_TCL_DEFAULT);\n\t\t\t} else if (sc.state == SCE_TCL_MODIFIER || sc.state == SCE_TCL_IDENTIFIER) {\n\t\t\t\tsc.SetState(SCE_TCL_DEFAULT);\n\t\t\t}\n\t\t}\n\t\tif (atEnd)\n\t\t\tbreak;\n\t\tif (sc.atLineEnd) {\n\t\t\tlineState = LS_DEFAULT;\n\t\t\tcurrentLine = styler.GetLine(sc.currentPos);\n\t\t\tif (foldComment && sc.state!=SCE_TCL_COMMENT && isComment(sc.state)) {\n\t\t\t\tif (currentLevel == 0) {\n\t\t\t\t\t++currentLevel;\n\t\t\t\t\tcommentLevel = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (visibleChars && commentLevel) {\n\t\t\t\t\t--currentLevel;\n\t\t\t\t\t--previousLevel;\n\t\t\t\t\tcommentLevel = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tint flag = 0;\n\t\t\tif (!visibleChars)\n\t\t\t\tflag = SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (currentLevel > previousLevel)\n\t\t\t\tflag = SC_FOLDLEVELHEADERFLAG;\n\t\t\tstyler.SetLevel(currentLine, flag + previousLevel + SC_FOLDLEVELBASE + (currentLevel << 17) + (commentLevel << 16));\n\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tif (sc.state == SCE_TCL_IN_QUOTE) {\n\t\t\t\tlineState = LS_OPEN_DOUBLE_QUOTE;\n\t\t\t} else {\n\t\t\t\tif (prevSlash) {\n\t\t\t\t\tif (isComment(sc.state))\n\t\t\t\t\t\tlineState = LS_OPEN_COMMENT;\n\t\t\t\t} else if (sc.state == SCE_TCL_COMMENT_BOX)\n\t\t\t\t\tlineState = LS_COMMENT_BOX;\n\t\t\t}\n\t\t\tstyler.SetLineState(currentLine,\n\t\t\t                    (subBrace ? LS_BRACE_ONLY : 0) |\n\t\t\t                    (expected ? LS_COMMAND_EXPECTED : 0)  | lineState);\n\t\t\tif (lineState == LS_COMMENT_BOX)\n\t\t\t\tsc.ForwardSetState(SCE_TCL_COMMENT_BOX);\n\t\t\telse if (lineState == LS_OPEN_DOUBLE_QUOTE)\n\t\t\t\tsc.ForwardSetState(SCE_TCL_IN_QUOTE);\n\t\t\telse\n\t\t\t\tsc.ForwardSetState(SCE_TCL_DEFAULT);\n\t\t\tprevSlash = false;\n\t\t\tpreviousLevel = currentLevel;\n\t\t\tgoto next;\n\t\t}\n\n\t\tif (prevSlash) {\n\t\t\tprevSlash = false;\n\t\t\tif (sc.ch == '#' && IsANumberChar(sc.chNext))\n\t\t\t\tsc.ForwardSetState(SCE_TCL_NUMBER);\n\t\t\tcontinue;\n\t\t}\n\t\tprevSlash = sc.ch == '\\\\';\n\t\tif (isComment(sc.state))\n\t\t\tcontinue;\n\t\tif (sc.atLineStart) {\n\t\t\tvisibleChars = false;\n\t\t\tif (sc.state!=SCE_TCL_IN_QUOTE && !isComment(sc.state))\n\t\t\t{\n\t\t\t\tsc.SetState(SCE_TCL_DEFAULT);\n\t\t\t\texpected = IsAWordStart(sc.ch)|| isspacechar(static_cast<unsigned char>(sc.ch));\n\t\t\t}\n\t\t}\n\n\t\tswitch (sc.state) {\n\t\tcase SCE_TCL_NUMBER:\n\t\t\tif (!IsANumberChar(sc.ch))\n\t\t\t\tsc.SetState(SCE_TCL_DEFAULT);\n\t\t\tbreak;\n\t\tcase SCE_TCL_IN_QUOTE:\n\t\t\tif (sc.ch == '\"') {\n\t\t\t\tsc.ForwardSetState(SCE_TCL_DEFAULT);\n\t\t\t\tvisibleChars = true; // necessary if a \" is the first and only character on a line\n\t\t\t\tgoto next;\n\t\t\t} else if (sc.ch == '[' || sc.ch == ']' || sc.ch == '$') {\n\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\texpected = sc.ch == '[';\n\t\t\t\tsc.ForwardSetState(SCE_TCL_IN_QUOTE);\n\t\t\t\tgoto next;\n\t\t\t}\n\t\t\tcontinue;\n\t\tcase SCE_TCL_OPERATOR:\n\t\t\tsc.SetState(SCE_TCL_DEFAULT);\n\t\t\tbreak;\n\t\t}\n\n\t\tif (sc.ch == '#') {\n\t\t\tif (visibleChars) {\n\t\t\t\tif (sc.state != SCE_TCL_IN_QUOTE && expected)\n\t\t\t\t\tsc.SetState(SCE_TCL_COMMENT);\n\t\t\t} else {\n\t\t\t\tsc.SetState(SCE_TCL_COMMENTLINE);\n\t\t\t\tif (sc.chNext == '~')\n\t\t\t\t\tsc.SetState(SCE_TCL_BLOCK_COMMENT);\n\t\t\t\tif (sc.atLineStart && (sc.chNext == '#' || sc.chNext == '-'))\n\t\t\t\t\tsc.SetState(SCE_TCL_COMMENT_BOX);\n\t\t\t}\n\t\t}\n\n\t\tif (!isspacechar(static_cast<unsigned char>(sc.ch))) {\n\t\t\tvisibleChars = true;\n\t\t}\n\n\t\tif (sc.ch == '\\\\') {\n\t\t\tprevSlash = true;\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (sc.state == SCE_TCL_DEFAULT) {\n\t\t\tif (IsAWordStart(sc.ch)) {\n\t\t\t\tsc.SetState(SCE_TCL_IDENTIFIER);\n\t\t\t} else if (IsADigit(sc.ch) && !IsAWordChar(sc.chPrev)) {\n\t\t\t\tsc.SetState(SCE_TCL_NUMBER);\n\t\t\t} else {\n\t\t\t\tswitch (sc.ch) {\n\t\t\t\tcase '\\\"':\n\t\t\t\t\tsc.SetState(SCE_TCL_IN_QUOTE);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '{':\n\t\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\t\texpected = true;\n\t\t\t\t\t++currentLevel;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '}':\n\t\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\t\texpected = true;\n\t\t\t\t\t--currentLevel;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '[':\n\t\t\t\t\texpected = true;\n\t\t\t\tcase ']':\n\t\t\t\tcase '(':\n\t\t\t\tcase ')':\n\t\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\t\tbreak;\n\t\t\t\tcase ';':\n\t\t\t\t\texpected = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase '$':\n\t\t\t\t\tsubParen = 0;\n\t\t\t\t\tif (sc.chNext != '{') {\n\t\t\t\t\t\tsc.SetState(SCE_TCL_SUBSTITUTION);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);  // $\n\t\t\t\t\t\tsc.Forward();  // {\n\t\t\t\t\t\tsc.ForwardSetState(SCE_TCL_SUB_BRACE);\n\t\t\t\t\t\tsubBrace = true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase '#':\n\t\t\t\t\tif ((isspacechar(static_cast<unsigned char>(sc.chPrev))||\n\t\t\t\t\t        isoperator(static_cast<char>(sc.chPrev))) && IsADigit(sc.chNext,0x10))\n\t\t\t\t\t\tsc.SetState(SCE_TCL_NUMBER);\n\t\t\t\t\tbreak;\n\t\t\t\tcase '-':\n\t\t\t\t\tsc.SetState(IsADigit(sc.chNext)? SCE_TCL_NUMBER: SCE_TCL_MODIFIER);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tif (isoperator(static_cast<char>(sc.ch))) {\n\t\t\t\t\t\tsc.SetState(SCE_TCL_OPERATOR);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tsc.Complete();\n}\n\nstatic const char *const tclWordListDesc[] = {\n\t\"TCL Keywords\",\n\t\"TK Keywords\",\n\t\"iTCL Keywords\",\n\t\"tkCommands\",\n\t\"expand\",\n\t\"user1\",\n\t\"user2\",\n\t\"user3\",\n\t\"user4\",\n\t0\n};\n\n// this code supports folding in the colourizer\nLexerModule lmTCL(SCLEX_TCL, ColouriseTCLDoc, \"tcl\", 0, tclWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexTCMD.cpp",
    "content": "// Scintilla\\ source code edit control\n/** @file LexTCMD.cxx\n ** Lexer for Take Command / TCC batch scripts (.bat, .btm, .cmd).\n **/\n// Written by Rex Conn (rconn [at] jpsoft [dot] com)\n// based on the CMD lexer\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\nstatic bool IsAlphabetic(int ch) {\n\treturn IsASCII(ch) && isalpha(ch);\n}\n\nstatic inline bool AtEOL(Accessor &styler, Sci_PositionU i) {\n\treturn (styler[i] == '\\n') || ((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n'));\n}\n\n// Tests for BATCH Operators\nstatic bool IsBOperator(char ch) {\n\treturn (ch == '=') || (ch == '+') || (ch == '>') || (ch == '<') || (ch == '|') || (ch == '&') || (ch == '!') || (ch == '?') || (ch == '*') || (ch == '(') || (ch == ')');\n}\n\n// Tests for BATCH Separators\nstatic bool IsBSeparator(char ch) {\n\treturn (ch == '\\\\') || (ch == '.') || (ch == ';') || (ch == ' ') || (ch == '\\t') || (ch == '[') || (ch == ']') || (ch == '\\\"') || (ch == '\\'') || (ch == '/');\n}\n\n// Find length of CMD FOR variable with modifier (%~...) or return 0\nstatic unsigned int GetBatchVarLen( char *wordBuffer )\n{\n\tint nLength = 0;\n\tif ( wordBuffer[0] == '%' ) {\n\n\t\tif ( wordBuffer[1] == '~' )\n\t\t\tnLength = 2;\n\t\telse if (( wordBuffer[1] == '%' ) && ( wordBuffer[2] == '~' ))\n\t\t\tnLength++;\n\t\telse\n\t\t\treturn 0;\n\n\t\tfor ( ; ( wordBuffer[nLength] ); nLength++ ) {\n\n\t\t\tswitch ( toupper(wordBuffer[nLength]) ) {\n\t\t\tcase 'A':\n\t\t\t\t// file attributes\n\t\t\tcase 'D':\n\t\t\t\t// drive letter only\n\t\t\tcase 'F':\n\t\t\t\t// fully qualified path name\n\t\t\tcase 'N':\n\t\t\t\t// filename only\n\t\t\tcase 'P':\n\t\t\t\t// path only\n\t\t\tcase 'S':\n\t\t\t\t// short name\n\t\t\tcase 'T':\n\t\t\t\t// date / time of file\n\t\t\tcase 'X':\n\t\t\t\t// file extension only\n\t\t\tcase 'Z':\n\t\t\t\t// file size\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\treturn nLength;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nLength;\n}\n\n\nstatic void ColouriseTCMDLine( char *lineBuffer, Sci_PositionU lengthLine, Sci_PositionU startLine, Sci_PositionU endPos, WordList *keywordlists[], Accessor &styler)\n{\n\tSci_PositionU offset = 0;\t// Line Buffer Offset\n\tchar wordBuffer[260];\t\t// Word Buffer - large to catch long paths\n\tSci_PositionU wbl;\t\t\t// Word Buffer Length\n\tSci_PositionU wbo;\t\t\t// Word Buffer Offset - also Special Keyword Buffer Length\n\tWordList &keywords = *keywordlists[0];      // Internal Commands\n//\tWordList &keywords2 = *keywordlists[1];     // Aliases (optional)\n\tbool isDelayedExpansion = 1;\t\t\t\t// !var!\n\n\tbool continueProcessing = true;\t// Used to toggle Regular Keyword Checking\n\t// Special Keywords are those that allow certain characters without whitespace after the command\n\t// Examples are: cd. cd\\ echo: echo. path=\n\tbool inString = false; // Used for processing while \"\"\n\t// Special Keyword Buffer used to determine if the first n characters is a Keyword\n\tchar sKeywordBuffer[260] = \"\";\t// Special Keyword Buffer\n\tbool sKeywordFound;\t\t// Exit Special Keyword for-loop if found\n\n\t// Skip leading whitespace\n\twhile ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) {\n\t\toffset++;\n\t}\n\t// Colorize Default Text\n\tstyler.ColourTo(startLine + offset - 1, SCE_TCMD_DEFAULT);\n\n\tif ( offset >= lengthLine )\n\t\treturn;\n\n\t// Check for Fake Label (Comment) or Real Label - return if found\n\tif (lineBuffer[offset] == ':') {\n\t\tif (lineBuffer[offset + 1] == ':') {\n\t\t\t// Colorize Fake Label (Comment) - :: is the same as REM\n\t\t\tstyler.ColourTo(endPos, SCE_TCMD_COMMENT);\n\t\t} else {\n\t\t\t// Colorize Real Label\n\t\t\tstyler.ColourTo(endPos, SCE_TCMD_LABEL);\n\t\t}\n\t\treturn;\n\n\t// Check for Comment - return if found\n\t} else if (( CompareNCaseInsensitive(lineBuffer+offset, \"rem\", 3) == 0 ) && (( lineBuffer[offset+3] == 0 ) || ( isspace(lineBuffer[offset+3] )))) {\n\t\t\tstyler.ColourTo(endPos, SCE_TCMD_COMMENT);\n\t\t\treturn;\n\n\t// Check for Drive Change (Drive Change is internal command) - return if found\n\t} else if ((IsAlphabetic(lineBuffer[offset])) &&\n\t\t(lineBuffer[offset + 1] == ':') &&\n\t\t((isspacechar(lineBuffer[offset + 2])) ||\n\t\t(((lineBuffer[offset + 2] == '\\\\')) &&\n\t\t(isspacechar(lineBuffer[offset + 3]))))) {\n\t\t// Colorize Regular Keyword\n\t\tstyler.ColourTo(endPos, SCE_TCMD_WORD);\n\t\treturn;\n\t}\n\n\t// Check for Hide Command (@ECHO OFF/ON)\n\tif (lineBuffer[offset] == '@') {\n\t\tstyler.ColourTo(startLine + offset, SCE_TCMD_HIDE);\n\t\toffset++;\n\t}\n\t// Skip whitespace\n\twhile ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) {\n\t\toffset++;\n\t}\n\n\t// Read remainder of line word-at-a-time or remainder-of-word-at-a-time\n\twhile (offset < lengthLine) {\n\t\tif (offset > startLine) {\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_TCMD_DEFAULT);\n\t\t}\n\t\t// Copy word from Line Buffer into Word Buffer\n\t\twbl = 0;\n\t\tfor (; offset < lengthLine && ( wbl < 260 ) && !isspacechar(lineBuffer[offset]); wbl++, offset++) {\n\t\t\twordBuffer[wbl] = static_cast<char>(tolower(lineBuffer[offset]));\n\t\t}\n\t\twordBuffer[wbl] = '\\0';\n\t\twbo = 0;\n\n\t\t// Check for Separator\n\t\tif (IsBSeparator(wordBuffer[0])) {\n\n\t\t\t// Reset Offset to re-process remainder of word\n\t\t\toffset -= (wbl - 1);\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_BAT_DEFAULT);\n\n\t\t\tif (wordBuffer[0] == '\"')\n\t\t\t\tinString = !inString;\n\n\t\t// Check for Regular expression\n\t\t} else if (( wordBuffer[0] == ':' ) && ( wordBuffer[1] == ':' ) && (continueProcessing)) {\n\n\t\t\t// Colorize Regular exoressuin\n\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_TCMD_DEFAULT);\n\t\t\t// No need to Reset Offset\n\n\t\t// Check for Labels in text (... :label)\n\t\t} else if (wordBuffer[0] == ':' && isspacechar(lineBuffer[offset - wbl - 1])) {\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - wbl, SCE_TCMD_DEFAULT);\n\t\t\t// Colorize Label\n\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_TCMD_CLABEL);\n\t\t\t// No need to Reset Offset\n\t\t// Check for delayed expansion Variable (!x...!)\n\t\t} else if (isDelayedExpansion && wordBuffer[0] == '!') {\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - wbl, SCE_TCMD_DEFAULT);\n\t\t\twbo++;\n\t\t\t// Search to end of word for second !\n\t\t\twhile ((wbo < wbl) && (wordBuffer[wbo] != '!') && (!IsBOperator(wordBuffer[wbo])) && (!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\twbo++;\n\t\t\t}\n\t\t\tif (wordBuffer[wbo] == '!') {\n\t\t\t\twbo++;\n\t\t\t\t// Colorize Environment Variable\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_TCMD_EXPANSION);\n\t\t\t} else {\n\t\t\t\twbo = 1;\n\t\t\t\t// Colorize Symbol\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_TCMD_DEFAULT);\n\t\t\t}\n\n\t\t\t// Reset Offset to re-process remainder of word\n\t\t\toffset -= (wbl - wbo);\n\n\t\t// Check for Regular Keyword in list\n\t\t} else if ((keywords.InList(wordBuffer)) &&\t(!inString) && (continueProcessing)) {\n\n\t\t\t// ECHO, PATH, and PROMPT require no further Regular Keyword Checking\n\t\t\tif ((CompareCaseInsensitive(wordBuffer, \"echo\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"echos\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"echoerr\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"echoserr\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(wordBuffer, \"path\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(wordBuffer, \"prompt\") == 0)) {\n\t\t\t\tcontinueProcessing = false;\n\t\t\t}\n\n\t\t\t// Colorize Regular keyword\n\t\t\tstyler.ColourTo(startLine + offset - 1, SCE_TCMD_WORD);\n\t\t\t// No need to Reset Offset\n\n\t\t} else if ((wordBuffer[0] != '%') && (wordBuffer[0] != '!') && (!IsBOperator(wordBuffer[0])) &&\t(!inString) && (continueProcessing)) {\n\n\t\t\t// a few commands accept \"illegal\" syntax -- cd\\, echo., etc.\n\t\t\tsscanf( wordBuffer, \"%[^.<>|&=\\\\/]\", sKeywordBuffer );\n\t\t\tsKeywordFound = false;\n\n\t\t\tif ((CompareCaseInsensitive(sKeywordBuffer, \"echo\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"echos\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"echoerr\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"echoserr\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"cd\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"path\") == 0) ||\n\t\t\t  (CompareCaseInsensitive(sKeywordBuffer, \"prompt\") == 0)) {\n\n\t\t\t\t// no further Regular Keyword Checking\n\t\t\t\tcontinueProcessing = false;\n\t\t\t\tsKeywordFound = true;\n\t\t\t\twbo = (Sci_PositionU)strlen( sKeywordBuffer );\n\n\t\t\t\t// Colorize Special Keyword as Regular Keyword\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_TCMD_WORD);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - wbo);\n\t\t\t}\n\n\t\t\t// Check for Default Text\n\t\t\tif (!sKeywordFound) {\n\t\t\t\twbo = 0;\n\t\t\t\t// Read up to %, Operator or Separator\n\t\t\t\twhile ((wbo < wbl) && (wordBuffer[wbo] != '%') && (!isDelayedExpansion || wordBuffer[wbo] != '!') && (!IsBOperator(wordBuffer[wbo])) &&\t(!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\t\twbo++;\n\t\t\t\t}\n\t\t\t\t// Colorize Default Text\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_TCMD_DEFAULT);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - wbo);\n\t\t\t}\n\n\t\t// Check for Argument  (%n), Environment Variable (%x...%) or Local Variable (%%a)\n\t\t} else if (wordBuffer[0] == '%') {\n\t\t\tunsigned int varlen;\n\t\t\tunsigned int n = 1;\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - wbl, SCE_TCMD_DEFAULT);\n\t\t\twbo++;\n\n\t\t\t// check for %[nn] syntax\n\t\t\tif ( wordBuffer[1] == '[' ) {\n\t\t\t\tn++;\n\t\t\t\twhile ((n < wbl) && (wordBuffer[n] != ']')) {\n\t\t\t\t\tn++;\n\t\t\t\t}\n\t\t\t\tif ( wordBuffer[n] == ']' )\n\t\t\t\t\tn++;\n\t\t\t\tgoto ColorizeArg;\n\t\t\t}\n\n\t\t\t// Search to end of word for second % or to the first terminator (can be a long path)\n\t\t\twhile ((wbo < wbl) && (wordBuffer[wbo] != '%') && (!IsBOperator(wordBuffer[wbo])) && (!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\twbo++;\n\t\t\t}\n\n\t\t\t// Check for Argument (%n) or (%*)\n\t\t\tif (((isdigit(wordBuffer[1])) || (wordBuffer[1] == '*')) && (wordBuffer[wbo] != '%')) {\n\t\t\t\twhile (( wordBuffer[n] ) && ( strchr( \"%0123456789*#$\", wordBuffer[n] ) != NULL ))\n\t\t\t\t\tn++;\nColorizeArg:\n\t\t\t\t// Colorize Argument\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - n), SCE_TCMD_IDENTIFIER);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - n);\n\n\t\t\t// Check for Variable with modifiers (%~...)\n\t\t\t} else if ((varlen = GetBatchVarLen(wordBuffer)) != 0) {\n\n\t\t\t\t// Colorize Variable\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - varlen), SCE_TCMD_IDENTIFIER);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - varlen);\n\n\t\t\t// Check for Environment Variable (%x...%)\n\t\t\t} else if (( wordBuffer[1] ) && ( wordBuffer[1] != '%')) {\n\t\t\t\tif ( wordBuffer[wbo] == '%' )\n\t\t\t\t\twbo++;\n\n\t\t\t\t// Colorize Environment Variable\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_TCMD_ENVIRONMENT);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - wbo);\n\n\t\t\t// Check for Local Variable (%%a)\n\t\t\t} else if (\t(wbl > 2) && (wordBuffer[1] == '%') && (wordBuffer[2] != '%') && (!IsBOperator(wordBuffer[2])) && (!IsBSeparator(wordBuffer[2]))) {\n\n\t\t\t\tn = 2;\n\t\t\t\twhile (( wordBuffer[n] ) && (!IsBOperator(wordBuffer[n])) && (!IsBSeparator(wordBuffer[n])))\n\t\t\t\t\tn++;\n\n\t\t\t\t// Colorize Local Variable\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - n), SCE_TCMD_IDENTIFIER);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - n);\n\n\t\t\t// Check for %%\n\t\t\t} else if ((wbl > 1) && (wordBuffer[1] == '%')) {\n\n\t\t\t\t// Colorize Symbols\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 2), SCE_TCMD_DEFAULT);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 2);\n\t\t\t} else {\n\n\t\t\t\t// Colorize Symbol\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_TCMD_DEFAULT);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 1);\n\t\t\t}\n\n\t\t// Check for Operator\n\t\t} else if (IsBOperator(wordBuffer[0])) {\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - wbl, SCE_TCMD_DEFAULT);\n\n\t\t\t// Check for Pipe, compound, or conditional Operator\n\t\t\tif ((wordBuffer[0] == '|') || (wordBuffer[0] == '&')) {\n\n\t\t\t\t// Colorize Pipe Operator\n\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_TCMD_OPERATOR);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 1);\n\t\t\t\tcontinueProcessing = true;\n\n\t\t\t// Check for Other Operator\n\t\t\t} else {\n\t\t\t\t// Check for > Operator\n\t\t\t\tif ((wordBuffer[0] == '>') || (wordBuffer[0] == '<')) {\n\t\t\t\t\t// Turn Keyword and External Command / Program checking back on\n\t\t\t\t\tcontinueProcessing = true;\n\t\t\t\t}\n\t\t\t\t// Colorize Other Operator\n\t\t\t\tif (!inString || !(wordBuffer[0] == '(' || wordBuffer[0] == ')'))\n\t\t\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - 1), SCE_TCMD_OPERATOR);\n\t\t\t\t// Reset Offset to re-process remainder of word\n\t\t\t\toffset -= (wbl - 1);\n\t\t\t}\n\n\t\t// Check for Default Text\n\t\t} else {\n\t\t\t// Read up to %, Operator or Separator\n\t\t\twhile ((wbo < wbl) && (wordBuffer[wbo] != '%') && (!isDelayedExpansion || wordBuffer[wbo] != '!') && (!IsBOperator(wordBuffer[wbo])) &&\t(!IsBSeparator(wordBuffer[wbo]))) {\n\t\t\t\twbo++;\n\t\t\t}\n\t\t\t// Colorize Default Text\n\t\t\tstyler.ColourTo(startLine + offset - 1 - (wbl - wbo), SCE_TCMD_DEFAULT);\n\t\t\t// Reset Offset to re-process remainder of word\n\t\t\toffset -= (wbl - wbo);\n\t\t}\n\n\t\t// Skip whitespace - nothing happens if Offset was Reset\n\t\twhile ((offset < lengthLine) && (isspacechar(lineBuffer[offset]))) {\n\t\t\toffset++;\n\t\t}\n\t}\n\t// Colorize Default Text for remainder of line - currently not lexed\n\tstyler.ColourTo(endPos, SCE_TCMD_DEFAULT);\n}\n\nstatic void ColouriseTCMDDoc( Sci_PositionU startPos, Sci_Position length, int /*initStyle*/, WordList *keywordlists[], Accessor &styler )\n{\n\tchar lineBuffer[16384];\n\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tSci_PositionU linePos = 0;\n\tSci_PositionU startLine = startPos;\n\tfor (Sci_PositionU i = startPos; i < startPos + length; i++) {\n\t\tlineBuffer[linePos++] = styler[i];\n\t\tif (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {\n\t\t\t// End of line (or of line buffer) met, colourise it\n\t\t\tlineBuffer[linePos] = '\\0';\n\t\t\tColouriseTCMDLine(lineBuffer, linePos, startLine, i, keywordlists, styler);\n\t\t\tlinePos = 0;\n\t\t\tstartLine = i + 1;\n\t\t}\n\t}\n\tif (linePos > 0) {\t// Last line does not have ending characters\n\t\tlineBuffer[linePos] = '\\0';\n\t\tColouriseTCMDLine(lineBuffer, linePos, startLine, startPos + length - 1, keywordlists, styler);\n\t}\n}\n\n// Convert string to upper case\nstatic void StrUpr(char *s) {\n\twhile (*s) {\n\t\t*s = MakeUpperCase(*s);\n\t\ts++;\n\t}\n}\n\n// Folding support (for DO, IFF, SWITCH, TEXT, and command groups)\nstatic void FoldTCMDDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler)\n{\n\tSci_Position line = styler.GetLine(startPos);\n\tint level = styler.LevelAt(line);\n\tint levelIndent = 0;\n\tSci_PositionU endPos = startPos + length;\n\tchar s[16] = \"\";\n\n    char chPrev = styler.SafeGetCharAt(startPos - 1);\n\n\t// Scan for ( and )\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\n\t\tint c = styler.SafeGetCharAt(i, '\\n');\n\t\tint style = styler.StyleAt(i);\n        bool bLineStart = ((chPrev == '\\r') || (chPrev == '\\n')) || i == 0;\n\n\t\tif (style == SCE_TCMD_OPERATOR) {\n\t\t\t// CheckFoldPoint\n\t\t\tif (c == '(') {\n\t\t\t\tlevelIndent += 1;\n\t\t\t} else if (c == ')') {\n\t\t\t\tlevelIndent -= 1;\n\t\t\t}\n\t\t}\n\n        if (( bLineStart ) && ( style == SCE_TCMD_WORD )) {\n            for (Sci_PositionU j = 0; j < 10; j++) {\n                if (!iswordchar(styler[i + j])) {\n                    break;\n                }\n                s[j] = styler[i + j];\n                s[j + 1] = '\\0';\n            }\n\n\t\t\tStrUpr( s );\n            if ((strcmp(s, \"DO\") == 0) || (strcmp(s, \"IFF\") == 0) || (strcmp(s, \"SWITCH\") == 0) || (strcmp(s, \"TEXT\") == 0)) {\n                levelIndent++;\n            } else if ((strcmp(s, \"ENDDO\") == 0) || (strcmp(s, \"ENDIFF\") == 0) || (strcmp(s, \"ENDSWITCH\") == 0) || (strcmp(s, \"ENDTEXT\") == 0)) {\n                levelIndent--;\n            }\n        }\n\n\t\tif (c == '\\n') { // line end\n\t\t\t\tif (levelIndent > 0) {\n\t\t\t\t\t\tlevel |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t}\n\t\t\t\tif (level != styler.LevelAt(line))\n\t\t\t\t\t\tstyler.SetLevel(line, level);\n\t\t\t\tlevel += levelIndent;\n\t\t\t\tif ((level & SC_FOLDLEVELNUMBERMASK) < SC_FOLDLEVELBASE)\n\t\t\t\t\t\tlevel = SC_FOLDLEVELBASE;\n\t\t\t\tline++;\n\t\t\t\t// reset state\n\t\t\t\tlevelIndent = 0;\n\t\t\t\tlevel &= ~SC_FOLDLEVELHEADERFLAG;\n\t\t\t\tlevel &= ~SC_FOLDLEVELWHITEFLAG;\n\t\t}\n\n\t\tchPrev = c;\n\t}\n}\n\nstatic const char *const tcmdWordListDesc[] = {\n\t\"Internal Commands\",\n\t\"Aliases\",\n\t0\n};\n\nLexerModule lmTCMD(SCLEX_TCMD, ColouriseTCMDDoc, \"tcmd\", FoldTCMDDoc, tcmdWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexTeX.cpp",
    "content": "// Scintilla source code edit control\n\n// File: LexTeX.cxx - general context conformant tex coloring scheme\n// Author: Hans Hagen - PRAGMA ADE - Hasselt NL - www.pragma-ade.com\n// Version: September 28, 2003\n\n// Copyright: 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// This lexer is derived from the one written for the texwork environment (1999++) which in\n// turn is inspired on texedit (1991++) which finds its roots in wdt (1986).\n\n// If you run into strange boundary cases, just tell me and I'll look into it.\n\n\n// TeX Folding code added by instanton (soft_share@126.com) with borrowed code from VisualTeX source by Alex Romanenko.\n// Version: June 22, 2007\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// val SCE_TEX_DEFAULT = 0\n// val SCE_TEX_SPECIAL = 1\n// val SCE_TEX_GROUP   = 2\n// val SCE_TEX_SYMBOL  = 3\n// val SCE_TEX_COMMAND = 4\n// val SCE_TEX_TEXT    = 5\n\n// Definitions in SciTEGlobal.properties:\n//\n// TeX Highlighting\n//\n// # Default\n// style.tex.0=fore:#7F7F00\n// # Special\n// style.tex.1=fore:#007F7F\n// # Group\n// style.tex.2=fore:#880000\n// # Symbol\n// style.tex.3=fore:#7F7F00\n// # Command\n// style.tex.4=fore:#008800\n// # Text\n// style.tex.5=fore:#000000\n\n// lexer.tex.interface.default=0\n// lexer.tex.comment.process=0\n\n// todo: lexer.tex.auto.if\n\n// Auxiliary functions:\n\nstatic inline bool endOfLine(Accessor &styler, Sci_PositionU i) {\n\treturn\n      (styler[i] == '\\n') || ((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n')) ;\n}\n\nstatic inline bool isTeXzero(int ch) {\n\treturn\n      (ch == '%') ;\n}\n\nstatic inline bool isTeXone(int ch) {\n\treturn\n      (ch == '[') || (ch == ']') || (ch == '=') || (ch == '#') ||\n      (ch == '(') || (ch == ')') || (ch == '<') || (ch == '>') ||\n      (ch == '\"') ;\n}\n\nstatic inline bool isTeXtwo(int ch) {\n\treturn\n      (ch == '{') || (ch == '}') || (ch == '$') ;\n}\n\nstatic inline bool isTeXthree(int ch) {\n\treturn\n      (ch == '~') || (ch == '^') || (ch == '_') || (ch == '&') ||\n      (ch == '-') || (ch == '+') || (ch == '\\\"') || (ch == '`') ||\n      (ch == '/') || (ch == '|') || (ch == '%') ;\n}\n\nstatic inline bool isTeXfour(int ch) {\n\treturn\n      (ch == '\\\\') ;\n}\n\nstatic inline bool isTeXfive(int ch) {\n\treturn\n      ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z')) ||\n      (ch == '@') || (ch == '!') || (ch == '?') ;\n}\n\nstatic inline bool isTeXsix(int ch) {\n\treturn\n      (ch == ' ') ;\n}\n\nstatic inline bool isTeXseven(int ch) {\n\treturn\n      (ch == '^') ;\n}\n\n// Interface determination\n\nstatic int CheckTeXInterface(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    Accessor &styler,\n\tint defaultInterface) {\n\n    char lineBuffer[1024] ;\n\tSci_PositionU linePos = 0 ;\n\n    // some day we can make something lexer.tex.mapping=(all,0)(nl,1)(en,2)...\n\n    if (styler.SafeGetCharAt(0) == '%') {\n        for (Sci_PositionU i = 0; i < startPos + length; i++) {\n            lineBuffer[linePos++] = styler.SafeGetCharAt(i) ;\n            if (endOfLine(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {\n                lineBuffer[linePos] = '\\0';\n                if (strstr(lineBuffer, \"interface=all\")) {\n                    return 0 ;\n\t\t\t\t} else if (strstr(lineBuffer, \"interface=tex\")) {\n                    return 1 ;\n                } else if (strstr(lineBuffer, \"interface=nl\")) {\n                    return 2 ;\n                } else if (strstr(lineBuffer, \"interface=en\")) {\n                    return 3 ;\n                } else if (strstr(lineBuffer, \"interface=de\")) {\n                    return 4 ;\n                } else if (strstr(lineBuffer, \"interface=cz\")) {\n                    return 5 ;\n                } else if (strstr(lineBuffer, \"interface=it\")) {\n                    return 6 ;\n                } else if (strstr(lineBuffer, \"interface=ro\")) {\n                    return 7 ;\n                } else if (strstr(lineBuffer, \"interface=latex\")) {\n\t\t\t\t\t// we will move latex cum suis up to 91+ when more keyword lists are supported\n                    return 8 ;\n\t\t\t\t} else if (styler.SafeGetCharAt(1) == 'D' && strstr(lineBuffer, \"%D \\\\module\")) {\n\t\t\t\t\t// better would be to limit the search to just one line\n\t\t\t\t\treturn 3 ;\n                } else {\n                    return defaultInterface ;\n                }\n            }\n\t\t}\n    }\n\n    return defaultInterface ;\n}\n\nstatic void ColouriseTeXDoc(\n    Sci_PositionU startPos,\n    Sci_Position length,\n    int,\n    WordList *keywordlists[],\n    Accessor &styler) {\n\n\tstyler.StartAt(startPos) ;\n\tstyler.StartSegment(startPos) ;\n\n\tbool processComment   = styler.GetPropertyInt(\"lexer.tex.comment.process\",   0) == 1 ;\n\tbool useKeywords      = styler.GetPropertyInt(\"lexer.tex.use.keywords\",      1) == 1 ;\n\tbool autoIf           = styler.GetPropertyInt(\"lexer.tex.auto.if\",           1) == 1 ;\n\tint  defaultInterface = styler.GetPropertyInt(\"lexer.tex.interface.default\", 1) ;\n\n\tchar key[100] ;\n\tint  k ;\n\tbool newifDone = false ;\n\tbool inComment = false ;\n\n\tint currentInterface = CheckTeXInterface(startPos,length,styler,defaultInterface) ;\n\n    if (currentInterface == 0) {\n        useKeywords = false ;\n        currentInterface = 1 ;\n    }\n\n    WordList &keywords = *keywordlists[currentInterface-1] ;\n\n\tStyleContext sc(startPos, length, SCE_TEX_TEXT, styler);\n\n\tbool going = sc.More() ; // needed because of a fuzzy end of file state\n\n\tfor (; going; sc.Forward()) {\n\n\t\tif (! sc.More()) { going = false ; } // we need to go one behind the end of text\n\n\t\tif (inComment) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tsc.SetState(SCE_TEX_TEXT) ;\n\t\t\t\tnewifDone = false ;\n\t\t\t\tinComment = false ;\n\t\t\t}\n\t\t} else {\n\t\t\tif (! isTeXfive(sc.ch)) {\n\t\t\t\tif (sc.state == SCE_TEX_COMMAND) {\n\t\t\t\t\tif (sc.LengthCurrent() == 1) { // \\<noncstoken>\n\t\t\t\t\t\tif (isTeXseven(sc.ch) && isTeXseven(sc.chNext)) {\n\t\t\t\t\t\t\tsc.Forward(2) ; // \\^^ and \\^^<token>\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsc.ForwardSetState(SCE_TEX_TEXT) ;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsc.GetCurrent(key, sizeof(key)-1) ;\n\t\t\t\t\t\tk = static_cast<int>(strlen(key)) ;\n\t\t\t\t\t\tmemmove(key,key+1,k) ; // shift left over escape token\n\t\t\t\t\t\tkey[k] = '\\0' ;\n\t\t\t\t\t\tk-- ;\n\t\t\t\t\t\tif (! keywords || ! useKeywords) {\n\t\t\t\t\t\t\tsc.SetState(SCE_TEX_COMMAND) ;\n\t\t\t\t\t\t\tnewifDone = false ;\n\t\t\t\t\t\t} else if (k == 1) { //\\<cstoken>\n\t\t\t\t\t\t\tsc.SetState(SCE_TEX_COMMAND) ;\n\t\t\t\t\t\t\tnewifDone = false ;\n\t\t\t\t\t\t} else if (keywords.InList(key)) {\n    \t\t\t\t\t\tsc.SetState(SCE_TEX_COMMAND) ;\n\t\t\t\t\t\t\tnewifDone = autoIf && (strcmp(key,\"newif\") == 0) ;\n\t\t\t\t\t\t} else if (autoIf && ! newifDone && (key[0] == 'i') && (key[1] == 'f') && keywords.InList(\"if\")) {\n\t    \t\t\t\t\tsc.SetState(SCE_TEX_COMMAND) ;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsc.ChangeState(SCE_TEX_TEXT) ;\n\t\t\t\t\t\t\tsc.SetState(SCE_TEX_TEXT) ;\n\t\t\t\t\t\t\tnewifDone = false ;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isTeXzero(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_TEX_SYMBOL);\n\n\t\t\t\t\tif (!endOfLine(styler,sc.currentPos + 1))\n\t\t\t\t\t\tsc.ForwardSetState(SCE_TEX_DEFAULT) ;\n\n\t\t\t\t\tinComment = ! processComment ;\n\t\t\t\t\tnewifDone = false ;\n\t\t\t\t} else if (isTeXseven(sc.ch) && isTeXseven(sc.chNext)) {\n\t\t\t\t\tsc.SetState(SCE_TEX_TEXT) ;\n\t\t\t\t\tsc.ForwardSetState(SCE_TEX_TEXT) ;\n\t\t\t\t} else if (isTeXone(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_TEX_SPECIAL) ;\n\t\t\t\t\tnewifDone = false ;\n\t\t\t\t} else if (isTeXtwo(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_TEX_GROUP) ;\n\t\t\t\t\tnewifDone = false ;\n\t\t\t\t} else if (isTeXthree(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_TEX_SYMBOL) ;\n\t\t\t\t\tnewifDone = false ;\n\t\t\t\t} else if (isTeXfour(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_TEX_COMMAND) ;\n\t\t\t\t} else if (isTeXsix(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_TEX_TEXT) ;\n\t\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_TEX_TEXT) ;\n\t\t\t\t\tnewifDone = false ;\n\t\t\t\t\tinComment = false ;\n\t\t\t\t} else {\n\t\t\t\t\tsc.SetState(SCE_TEX_TEXT) ;\n\t\t\t\t}\n\t\t\t} else if (sc.state != SCE_TEX_COMMAND) {\n\t\t\t\tsc.SetState(SCE_TEX_TEXT) ;\n\t\t\t}\n\t\t}\n\t}\n\tsc.ChangeState(SCE_TEX_TEXT) ;\n\tsc.Complete();\n\n}\n\n\nstatic inline bool isNumber(int ch) {\n\treturn\n      (ch == '0') || (ch == '1') || (ch == '2') ||\n      (ch == '3') || (ch == '4') || (ch == '5') ||\n      (ch == '6') || (ch == '7') || (ch == '8') || (ch == '9');\n}\n\nstatic inline bool isWordChar(int ch) {\n\treturn ((ch >= 'a') && (ch <= 'z')) || ((ch >= 'A') && (ch <= 'Z'));\n}\n\nstatic int ParseTeXCommand(Sci_PositionU pos, Accessor &styler, char *command)\n{\n  Sci_Position length=0;\n  char ch=styler.SafeGetCharAt(pos+1);\n\n  if(ch==',' || ch==':' || ch==';' || ch=='%'){\n      command[0]=ch;\n      command[1]=0;\n\t  return 1;\n  }\n\n  // find end\n     while(isWordChar(ch) && !isNumber(ch) && ch!='_' && ch!='.' && length<100){\n          command[length]=ch;\n          length++;\n          ch=styler.SafeGetCharAt(pos+length+1);\n     }\n\n  command[length]='\\0';\n  if(!length) return 0;\n  return length+1;\n}\n\nstatic int classifyFoldPointTeXPaired(const char* s) {\n\tint lev=0;\n\tif (!(isdigit(s[0]) || (s[0] == '.'))){\n\t\tif (strcmp(s, \"begin\")==0||strcmp(s,\"FoldStart\")==0||\n\t\t\tstrcmp(s,\"abstract\")==0||strcmp(s,\"unprotect\")==0||\n\t\t\tstrcmp(s,\"title\")==0||strncmp(s,\"start\",5)==0||strncmp(s,\"Start\",5)==0||\n\t\t\tstrcmp(s,\"documentclass\")==0||strncmp(s,\"if\",2)==0\n\t\t\t)\n\t\t\tlev=1;\n\t\tif (strcmp(s, \"end\")==0||strcmp(s,\"FoldStop\")==0||\n\t\t\tstrcmp(s,\"maketitle\")==0||strcmp(s,\"protect\")==0||\n\t\t\tstrncmp(s,\"stop\",4)==0||strncmp(s,\"Stop\",4)==0||\n\t\t\tstrcmp(s,\"fi\")==0\n\t\t\t)\n\t\tlev=-1;\n\t}\n\treturn lev;\n}\n\nstatic int classifyFoldPointTeXUnpaired(const char* s) {\n\tint lev=0;\n\tif (!(isdigit(s[0]) || (s[0] == '.'))){\n\t\tif (strcmp(s,\"part\")==0||\n\t\t\tstrcmp(s,\"chapter\")==0||\n\t\t\tstrcmp(s,\"section\")==0||\n\t\t\tstrcmp(s,\"subsection\")==0||\n\t\t\tstrcmp(s,\"subsubsection\")==0||\n\t\t\tstrcmp(s,\"CJKfamily\")==0||\n\t\t\tstrcmp(s,\"appendix\")==0||\n\t\t\tstrcmp(s,\"Topic\")==0||strcmp(s,\"topic\")==0||\n\t\t\tstrcmp(s,\"subject\")==0||strcmp(s,\"subsubject\")==0||\n\t\t\tstrcmp(s,\"def\")==0||strcmp(s,\"gdef\")==0||strcmp(s,\"edef\")==0||\n\t\t\tstrcmp(s,\"xdef\")==0||strcmp(s,\"framed\")==0||\n\t\t\tstrcmp(s,\"frame\")==0||\n\t\t\tstrcmp(s,\"foilhead\")==0||strcmp(s,\"overlays\")==0||strcmp(s,\"slide\")==0\n\t\t\t){\n\t\t\t    lev=1;\n\t\t\t}\n\t}\n\treturn lev;\n}\n\nstatic bool IsTeXCommentLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\n\tSci_Position startpos = pos;\n\n\twhile (startpos<eol_pos){\n\t\tchar ch = styler[startpos];\n\t\tif (ch!='%' && ch!=' ') return false;\n\t\telse if (ch=='%') return true;\n\t\tstartpos++;\n\t}\n\n\treturn false;\n}\n\n// FoldTeXDoc: borrowed from VisualTeX with modifications\n\nstatic void FoldTexDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *[], Accessor &styler)\n{\n\tbool foldCompact = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n\tSci_PositionU endPos = startPos+length;\n\tint visibleChars=0;\n\tSci_Position lineCurrent=styler.GetLine(startPos);\n\tint levelPrev=styler.LevelAt(lineCurrent) & SC_FOLDLEVELNUMBERMASK;\n\tint levelCurrent=levelPrev;\n\tchar chNext=styler[startPos];\n\tchar buffer[100]=\"\";\n\n\tfor (Sci_PositionU i=startPos; i < endPos; i++) {\n\t\tchar ch=chNext;\n\t\tchNext=styler.SafeGetCharAt(i+1);\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n        if(ch=='\\\\') {\n            ParseTeXCommand(i, styler, buffer);\n\t\t\tlevelCurrent += classifyFoldPointTeXPaired(buffer)+classifyFoldPointTeXUnpaired(buffer);\n\t\t}\n\n\t\tif (levelCurrent > SC_FOLDLEVELBASE && ((ch == '\\r' || ch=='\\n') && (chNext == '\\\\'))) {\n            ParseTeXCommand(i+1, styler, buffer);\n\t\t\tlevelCurrent -= classifyFoldPointTeXUnpaired(buffer);\n\t\t}\n\n\tchar chNext2;\n\tchar chNext3;\n\tchar chNext4;\n\tchar chNext5;\n\tchNext2=styler.SafeGetCharAt(i+2);\n\tchNext3=styler.SafeGetCharAt(i+3);\n\tchNext4=styler.SafeGetCharAt(i+4);\n\tchNext5=styler.SafeGetCharAt(i+5);\n\n\tbool atEOfold = (ch == '%') &&\n\t\t\t(chNext == '%') && (chNext2=='}') &&\n\t\t\t\t(chNext3=='}')&& (chNext4=='-')&& (chNext5=='-');\n\n\tbool atBOfold = (ch == '%') &&\n\t\t\t(chNext == '%') && (chNext2=='-') &&\n\t\t\t\t(chNext3=='-')&& (chNext4=='{')&& (chNext5=='{');\n\n\tif(atBOfold){\n\t\tlevelCurrent+=1;\n\t}\n\n\tif(atEOfold){\n\t\tlevelCurrent-=1;\n\t}\n\n\tif(ch=='\\\\' && chNext=='['){\n\t\tlevelCurrent+=1;\n\t}\n\n\tif(ch=='\\\\' && chNext==']'){\n\t\tlevelCurrent-=1;\n\t}\n\n\tbool foldComment = styler.GetPropertyInt(\"fold.comment\") != 0;\n\n\tif (foldComment && atEOL && IsTeXCommentLine(lineCurrent, styler))\n        {\n            if (lineCurrent==0 && IsTeXCommentLine(lineCurrent + 1, styler)\n\t\t\t\t)\n                levelCurrent++;\n            else if (lineCurrent!=0 && !IsTeXCommentLine(lineCurrent - 1, styler)\n               && IsTeXCommentLine(lineCurrent + 1, styler)\n\t\t\t\t)\n                levelCurrent++;\n            else if (lineCurrent!=0 && IsTeXCommentLine(lineCurrent - 1, styler) &&\n                     !IsTeXCommentLine(lineCurrent+1, styler))\n                levelCurrent--;\n        }\n\n//---------------------------------------------------------------------------------------------\n\n\t\tif (atEOL) {\n\t\t\tint lev = levelPrev;\n\t\t\tif (visibleChars == 0 && foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif ((levelCurrent > levelPrev) && (visibleChars > 0))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelPrev = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n\n\t// Fill in the real level of the next line, keeping the current flags as they will be filled in later\n\tint flagsNext = styler.LevelAt(lineCurrent) & ~SC_FOLDLEVELNUMBERMASK;\n\tstyler.SetLevel(lineCurrent, levelPrev | flagsNext);\n}\n\n\n\n\nstatic const char * const texWordListDesc[] = {\n    \"TeX, eTeX, pdfTeX, Omega\",\n    \"ConTeXt Dutch\",\n    \"ConTeXt English\",\n    \"ConTeXt German\",\n    \"ConTeXt Czech\",\n    \"ConTeXt Italian\",\n    \"ConTeXt Romanian\",\n\t0,\n} ;\n\nLexerModule lmTeX(SCLEX_TEX,   ColouriseTeXDoc, \"tex\", FoldTexDoc, texWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexTxt2tags.cpp",
    "content": "/******************************************************************\n *  LexTxt2tags.cxx\n *\n *  A simple Txt2tags lexer for scintilla.\n *\n *\n *  Adapted by Eric Forgeot\n *  Based on the LexMarkdown.cxx by Jon Strait - jstrait@moonloop.net\n *\n *  What could be improved:\n *   - Verbatim lines could be like for raw lines : when there is no space between the ``` and the following text, the first letter should be colored so the user would understand there must be a space for a valid tag.\n *   - marks such as bold, italic, strikeout, underline should begin to be highlighted only when they are closed and valid.\n *   - verbatim and raw area should be highlighted too.\n *\n *  The License.txt file describes the conditions under which this\n *  software may be distributed.\n *\n *****************************************************************/\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n\n\nstatic inline bool IsNewline(const int ch) {\n    return (ch == '\\n' || ch == '\\r');\n}\n\n// True if can follow ch down to the end with possibly trailing whitespace\nstatic bool FollowToLineEnd(const int ch, const int state, const Sci_PositionU endPos, StyleContext &sc) {\n    Sci_PositionU i = 0;\n    while (sc.GetRelative(++i) == ch)\n        ;\n    // Skip over whitespace\n    while (IsASpaceOrTab(sc.GetRelative(i)) && sc.currentPos + i < endPos)\n        ++i;\n    if (IsNewline(sc.GetRelative(i)) || sc.currentPos + i == endPos) {\n        sc.Forward(i);\n        sc.ChangeState(state);\n        sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n        return true;\n    }\n    else return false;\n}\n\n// Does the previous line have more than spaces and tabs?\nstatic bool HasPrevLineContent(StyleContext &sc) {\n    Sci_Position i = 0;\n    // Go back to the previous newline\n    while ((--i + sc.currentPos) && !IsNewline(sc.GetRelative(i)))\n        ;\n    while (--i + sc.currentPos) {\n        if (IsNewline(sc.GetRelative(i)))\n            break;\n        if (!IsASpaceOrTab(sc.GetRelative(i)))\n            return true;\n    }\n    return false;\n}\n\n// Separator line\nstatic bool IsValidHrule(const Sci_PositionU endPos, StyleContext &sc) {\n    int count = 1;\n    Sci_PositionU i = 0;\n    for (;;) {\n        ++i;\n        int c = sc.GetRelative(i);\n        if (c == sc.ch)\n            ++count;\n        // hit a terminating character\n        else if (!IsASpaceOrTab(c) || sc.currentPos + i == endPos) {\n            // Are we a valid HRULE\n            if ((IsNewline(c) || sc.currentPos + i == endPos) &&\n                    count >= 20 && !HasPrevLineContent(sc)) {\n                sc.SetState(SCE_TXT2TAGS_HRULE);\n                sc.Forward(i);\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n                return true;\n            }\n            else {\n                sc.SetState(SCE_TXT2TAGS_DEFAULT);\n\t\treturn false;\n            }\n        }\n    }\n}\n\nstatic void ColorizeTxt2tagsDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                               WordList **, Accessor &styler) {\n    Sci_PositionU endPos = startPos + length;\n    int precharCount = 0;\n    // Don't advance on a new loop iteration and retry at the same position.\n    // Useful in the corner case of having to start at the beginning file position\n    // in the default state.\n    bool freezeCursor = false;\n\n    StyleContext sc(startPos, length, initStyle, styler);\n\n    while (sc.More()) {\n        // Skip past escaped characters\n        if (sc.ch == '\\\\') {\n            sc.Forward();\n            continue;\n        }\n\n        // A blockquotes resets the line semantics\n        if (sc.state == SCE_TXT2TAGS_BLOCKQUOTE){\n            sc.Forward(2);\n            sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n        }\n        // An option colors the whole line\n        if (sc.state == SCE_TXT2TAGS_OPTION){\n            FollowToLineEnd('%', SCE_TXT2TAGS_OPTION, endPos, sc);\n        }\n        if (sc.state == SCE_TXT2TAGS_POSTPROC){\n            FollowToLineEnd('%', SCE_TXT2TAGS_POSTPROC, endPos, sc);\n        }\n        if (sc.state == SCE_TXT2TAGS_PREPROC){\n            FollowToLineEnd('%', SCE_TXT2TAGS_PREPROC, endPos, sc);\n        }\n        // A comment colors the whole line\n        if (sc.state == SCE_TXT2TAGS_COMMENT){\n            FollowToLineEnd('%', SCE_TXT2TAGS_COMMENT, endPos, sc);\n        }\n        // Conditional state-based actions\n        if (sc.state == SCE_TXT2TAGS_CODE2) {\n        if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n            if (sc.Match(\"``\") && sc.GetRelative(-2) != ' ') {\n                sc.Forward(2);\n                sc.SetState(SCE_TXT2TAGS_DEFAULT);\n            }\n        }\n        // Table\n        else if (sc.state == SCE_TXT2TAGS_CODE) {\n        if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n            if (sc.ch == '|' && sc.chPrev != ' ')\n                sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT);\n        }\n        // Strong\n        else if (sc.state == SCE_TXT2TAGS_STRONG1) {\n        if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n            if (sc.Match(\"**\") && sc.chPrev != ' ') {\n                sc.Forward(2);\n                sc.SetState(SCE_TXT2TAGS_DEFAULT);\n            }\n        }\n        // Emphasis\n        else if (sc.state == SCE_TXT2TAGS_EM1) {\n        if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n            if (sc.Match(\"//\") && sc.chPrev != ' ') {\n                sc.Forward(2);\n                sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT);\n           }\n        }\n        // Underline\n        else if (sc.state == SCE_TXT2TAGS_EM2) {\n        if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n            if (sc.Match(\"__\") && sc.chPrev != ' ') {\n                sc.Forward(2);\n                sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT);\n           }\n        }\n        // codeblock\n        else if (sc.state == SCE_TXT2TAGS_CODEBK) {\n                if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n            if (sc.atLineStart && sc.Match(\"```\")) {\n                Sci_Position i = 1;\n                while (!IsNewline(sc.GetRelative(i)) && sc.currentPos + i < endPos)\n                    i++;\n                sc.Forward(i);\n                sc.SetState(SCE_TXT2TAGS_DEFAULT);\n            }\n        }\n        // strikeout\n        else if (sc.state == SCE_TXT2TAGS_STRIKEOUT) {\n        if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n            if (sc.Match(\"--\") && sc.chPrev != ' ') {\n                sc.Forward(2);\n                sc.SetState(SCE_TXT2TAGS_DEFAULT);\n            }\n        }\n        // Headers\n        else if (sc.state == SCE_TXT2TAGS_LINE_BEGIN) {\n            if (sc.Match(\"======\"))\n                {\n                sc.SetState(SCE_TXT2TAGS_HEADER6);\n                sc.Forward();\n                }\n            else if (sc.Match(\"=====\"))\n                {\n                sc.SetState(SCE_TXT2TAGS_HEADER5);\n                sc.Forward();\n                }\n            else if (sc.Match(\"====\"))\n                {\n                sc.SetState(SCE_TXT2TAGS_HEADER4);\n                sc.Forward();\n                }\n            else if (sc.Match(\"===\"))\n                {\n                sc.SetState(SCE_TXT2TAGS_HEADER3);\n                sc.Forward();\n                }\n                //SetStateAndZoom(SCE_TXT2TAGS_HEADER3, 3, '=', sc);\n            else if (sc.Match(\"==\")) {\n                sc.SetState(SCE_TXT2TAGS_HEADER2);\n                sc.Forward();\n                }\n                //SetStateAndZoom(SCE_TXT2TAGS_HEADER2, 2, '=', sc);\n            else if (sc.Match(\"=\")) {\n                // Catch the special case of an unordered list\n                if (sc.chNext == '.' && IsASpaceOrTab(sc.GetRelative(2))) {\n                    precharCount = 0;\n                    sc.SetState(SCE_TXT2TAGS_PRECHAR);\n                }\n                else\n                    {\n                    sc.SetState(SCE_TXT2TAGS_HEADER1);\n                    sc.Forward();\n                    }\n                    //SetStateAndZoom(SCE_TXT2TAGS_HEADER1, 1, '=', sc);\n            }\n\n            // Numbered title\n            else if (sc.Match(\"++++++\"))\n                {\n                sc.SetState(SCE_TXT2TAGS_HEADER6);\n                sc.Forward();\n                }\n            else if (sc.Match(\"+++++\"))\n                {\n                sc.SetState(SCE_TXT2TAGS_HEADER5);\n                sc.Forward();\n                }\n            else if (sc.Match(\"++++\"))\n                {\n                sc.SetState(SCE_TXT2TAGS_HEADER4);\n                sc.Forward();\n                }\n            else if (sc.Match(\"+++\"))\n                {\n                sc.SetState(SCE_TXT2TAGS_HEADER3);\n                sc.Forward();\n                }\n                //SetStateAndZoom(SCE_TXT2TAGS_HEADER3, 3, '+', sc);\n            else if (sc.Match(\"++\")) {\n                sc.SetState(SCE_TXT2TAGS_HEADER2);\n                sc.Forward();\n                }\n                //SetStateAndZoom(SCE_TXT2TAGS_HEADER2, 2, '+', sc);\n            else if (sc.Match(\"+\")) {\n                // Catch the special case of an unordered list\n                if (sc.chNext == ' ' && IsASpaceOrTab(sc.GetRelative(1))) {\n                 //    if (IsNewline(sc.ch)) {\n                     \t//precharCount = 0;\n                //\t\tsc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n                \t\t//sc.SetState(SCE_TXT2TAGS_PRECHAR);\n\t\t\t\t//\t}\n                //    else {\n                //    precharCount = 0;\n                    sc.SetState(SCE_TXT2TAGS_OLIST_ITEM);\n                    sc.Forward(2);\n                    sc.SetState(SCE_TXT2TAGS_DEFAULT);\n               //     sc.SetState(SCE_TXT2TAGS_PRECHAR);\n\t\t\t\t//\t}\n                }\n                else\n                    {\n                    sc.SetState(SCE_TXT2TAGS_HEADER1);\n                    sc.Forward();\n                    }\n            }\n\n\n            // Codeblock\n            else if (sc.Match(\"```\")) {\n                if (!HasPrevLineContent(sc))\n              //  if (!FollowToLineEnd(sc))\n                    sc.SetState(SCE_TXT2TAGS_CODEBK);\n                else\n                    sc.SetState(SCE_TXT2TAGS_DEFAULT);\n            }\n\n            // Preproc\n            else if (sc.Match(\"%!preproc\")) {\n                sc.SetState(SCE_TXT2TAGS_PREPROC);\n            }\n            // Postproc\n            else if (sc.Match(\"%!postproc\")) {\n                sc.SetState(SCE_TXT2TAGS_POSTPROC);\n            }\n            // Option\n            else if (sc.Match(\"%!\")) {\n                sc.SetState(SCE_TXT2TAGS_OPTION);\n            }\n\n             // Comment\n            else if (sc.ch == '%') {\n                sc.SetState(SCE_TXT2TAGS_COMMENT);\n            }\n            // list\n            else if (sc.ch == '-') {\n                    precharCount = 0;\n                    sc.SetState(SCE_TXT2TAGS_PRECHAR);\n            }\n            // def list\n            else if (sc.ch == ':') {\n                    precharCount = 0;\n                   sc.SetState(SCE_TXT2TAGS_OLIST_ITEM);\n                   sc.Forward(1);\n                   sc.SetState(SCE_TXT2TAGS_PRECHAR);\n            }\n            else if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n            else {\n                precharCount = 0;\n                sc.SetState(SCE_TXT2TAGS_PRECHAR);\n            }\n        }\n\n        // The header lasts until the newline\n        else if (sc.state == SCE_TXT2TAGS_HEADER1 || sc.state == SCE_TXT2TAGS_HEADER2 ||\n                sc.state == SCE_TXT2TAGS_HEADER3 || sc.state == SCE_TXT2TAGS_HEADER4 ||\n                sc.state == SCE_TXT2TAGS_HEADER5 || sc.state == SCE_TXT2TAGS_HEADER6) {\n            if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n        }\n\n        // New state only within the initial whitespace\n        if (sc.state == SCE_TXT2TAGS_PRECHAR) {\n            // Blockquote\n            if (sc.Match(\"\\\"\\\"\\\"\") && precharCount < 5){\n\n                sc.SetState(SCE_TXT2TAGS_BLOCKQUOTE);\n                sc.Forward(1);\n                }\n            /*\n            // Begin of code block\n            else if (!HasPrevLineContent(sc) && (sc.chPrev == '\\t' || precharCount >= 4))\n                sc.SetState(SCE_TXT2TAGS_CODEBK);\n            */\n            // HRule - Total of 20 or more hyphens, asterisks, or underscores\n            // on a line by themselves\n            else if ((sc.ch == '-' ) && IsValidHrule(endPos, sc))\n                ;\n            // Unordered list\n            else if ((sc.ch == '-') && IsASpaceOrTab(sc.chNext)) {\n                sc.SetState(SCE_TXT2TAGS_ULIST_ITEM);\n                sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT);\n            }\n            // Ordered list\n            else if (IsADigit(sc.ch)) {\n                Sci_Position digitCount = 0;\n                while (IsADigit(sc.GetRelative(++digitCount)))\n                    ;\n                if (sc.GetRelative(digitCount) == '.' &&\n                        IsASpaceOrTab(sc.GetRelative(digitCount + 1))) {\n                    sc.SetState(SCE_TXT2TAGS_OLIST_ITEM);\n                    sc.Forward(digitCount + 1);\n                    sc.SetState(SCE_TXT2TAGS_DEFAULT);\n                }\n            }\n            // Alternate Ordered list\n            else if (sc.ch == '+' && sc.chNext == ' ' && IsASpaceOrTab(sc.GetRelative(2))) {\n            //    sc.SetState(SCE_TXT2TAGS_OLIST_ITEM);\n            //    sc.Forward(2);\n             //   sc.SetState(SCE_TXT2TAGS_DEFAULT);\n            }\n            else if (sc.ch != ' ' || precharCount > 2)\n                sc.SetState(SCE_TXT2TAGS_DEFAULT);\n            else\n                ++precharCount;\n        }\n\n        // New state anywhere in doc\n        if (sc.state == SCE_TXT2TAGS_DEFAULT) {\n         //   if (sc.atLineStart && sc.ch == '#') {\n         //       sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n         //       freezeCursor = true;\n         //   }\n            // Links and Images\n            if (sc.Match(\"![\") || sc.ch == '[') {\n                Sci_Position i = 0, j = 0, k = 0;\n                Sci_Position len = endPos - sc.currentPos;\n                while (i < len && (sc.GetRelative(++i) != ']' || sc.GetRelative(i - 1) == '\\\\'))\n                    ;\n                if (sc.GetRelative(i) == ']') {\n                    j = i;\n                    if (sc.GetRelative(++i) == '(') {\n                        while (i < len && (sc.GetRelative(++i) != '(' || sc.GetRelative(i - 1) == '\\\\'))\n                            ;\n                        if (sc.GetRelative(i) == '(')\n                            k = i;\n                    }\n\n                    else if (sc.GetRelative(i) == '[' || sc.GetRelative(++i) == '[') {\n                        while (i < len && (sc.GetRelative(++i) != ']' || sc.GetRelative(i - 1) == '\\\\'))\n                            ;\n                        if (sc.GetRelative(i) == ']')\n                            k = i;\n                    }\n                }\n                // At least a link text\n                if (j) {\n                    sc.SetState(SCE_TXT2TAGS_LINK);\n                    sc.Forward(j);\n                    // Also has a URL or reference portion\n                    if (k)\n                        sc.Forward(k - j);\n                    sc.ForwardSetState(SCE_TXT2TAGS_DEFAULT);\n                }\n            }\n            // Code - also a special case for alternate inside spacing\n            if (sc.Match(\"``\") && sc.GetRelative(3) != ' ') {\n                sc.SetState(SCE_TXT2TAGS_CODE2);\n                sc.Forward();\n            }\n            else if (sc.ch == '|' && sc.GetRelative(3) != ' ') {\n                sc.SetState(SCE_TXT2TAGS_CODE);\n            }\n            // Strong\n            else if (sc.Match(\"**\") && sc.GetRelative(2) != ' ') {\n                sc.SetState(SCE_TXT2TAGS_STRONG1);\n                sc.Forward();\n           }\n            // Emphasis\n            else if (sc.Match(\"//\") && sc.GetRelative(2) != ' ') {\n                sc.SetState(SCE_TXT2TAGS_EM1);\n                sc.Forward();\n            }\n            else if (sc.Match(\"__\") && sc.GetRelative(2) != ' ') {\n                sc.SetState(SCE_TXT2TAGS_EM2);\n                sc.Forward();\n            }\n            // Strikeout\n            else if (sc.Match(\"--\") && sc.GetRelative(2) != ' ') {\n                sc.SetState(SCE_TXT2TAGS_STRIKEOUT);\n                sc.Forward();\n            }\n\n            // Beginning of line\n            else if (IsNewline(sc.ch))\n                sc.SetState(SCE_TXT2TAGS_LINE_BEGIN);\n        }\n        // Advance if not holding back the cursor for this iteration.\n        if (!freezeCursor)\n            sc.Forward();\n        freezeCursor = false;\n    }\n    sc.Complete();\n}\n\nLexerModule lmTxt2tags(SCLEX_TXT2TAGS, ColorizeTxt2tagsDoc, \"txt2tags\");\n\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexVB.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexVB.cxx\n ** Lexer for Visual Basic and VBScript.\n **/\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Internal state, highlighted as number\n#define SCE_B_FILENUMBER SCE_B_DEFAULT+100\n\n\nstatic bool IsVBComment(Accessor &styler, Sci_Position pos, Sci_Position len) {\n\treturn len > 0 && styler[pos] == '\\'';\n}\n\nstatic inline bool IsTypeCharacter(int ch) {\n\treturn ch == '%' || ch == '&' || ch == '@' || ch == '!' || ch == '#' || ch == '$';\n}\n\n// Extended to accept accented characters\nstatic inline bool IsAWordChar(int ch) {\n\treturn ch >= 0x80 ||\n\t       (isalnum(ch) || ch == '.' || ch == '_');\n}\n\nstatic inline bool IsAWordStart(int ch) {\n\treturn ch >= 0x80 ||\n\t       (isalpha(ch) || ch == '_');\n}\n\nstatic inline bool IsANumberChar(int ch) {\n\t// Not exactly following number definition (several dots are seen as OK, etc.)\n\t// but probably enough in most cases.\n\treturn (ch < 0x80) &&\n\t        (isdigit(ch) || toupper(ch) == 'E' ||\n             ch == '.' || ch == '-' || ch == '+');\n}\n\nstatic void ColouriseVBDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *keywordlists[], Accessor &styler, bool vbScriptSyntax) {\n\n\tWordList &keywords = *keywordlists[0];\n\tWordList &keywords2 = *keywordlists[1];\n\tWordList &keywords3 = *keywordlists[2];\n\tWordList &keywords4 = *keywordlists[3];\n\n\tstyler.StartAt(startPos);\n\n\tint visibleChars = 0;\n\tint fileNbDigits = 0;\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_B_STRINGEOL || initStyle == SCE_B_COMMENT || initStyle == SCE_B_PREPROCESSOR) {\n\t\tinitStyle = SCE_B_DEFAULT;\n\t}\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\n\tfor (; sc.More(); sc.Forward()) {\n\n\t\tif (sc.state == SCE_B_OPERATOR) {\n\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t} else if (sc.state == SCE_B_IDENTIFIER) {\n\t\t\tif (!IsAWordChar(sc.ch)) {\n\t\t\t\t// In Basic (except VBScript), a variable name or a function name\n\t\t\t\t// can end with a special character indicating the type of the value\n\t\t\t\t// held or returned.\n\t\t\t\tbool skipType = false;\n\t\t\t\tif (!vbScriptSyntax && IsTypeCharacter(sc.ch)) {\n\t\t\t\t\tsc.Forward();\t// Skip it\n\t\t\t\t\tskipType = true;\n\t\t\t\t}\n\t\t\t\tif (sc.ch == ']') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tchar s[100];\n\t\t\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\t\t\tif (skipType) {\n\t\t\t\t\ts[strlen(s) - 1] = '\\0';\n\t\t\t\t}\n\t\t\t\tif (strcmp(s, \"rem\") == 0) {\n\t\t\t\t\tsc.ChangeState(SCE_B_COMMENT);\n\t\t\t\t} else {\n\t\t\t\t\tif (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_B_KEYWORD);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_B_KEYWORD2);\n\t\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_B_KEYWORD3);\n\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_B_KEYWORD4);\n\t\t\t\t\t}\t// Else, it is really an identifier...\n\t\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_NUMBER) {\n\t\t\t// We stop the number definition on non-numerical non-dot non-eE non-sign char\n\t\t\t// Also accepts A-F for hex. numbers\n\t\t\tif (!IsANumberChar(sc.ch) && !(tolower(sc.ch) >= 'a' && tolower(sc.ch) <= 'f')) {\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_STRING) {\n\t\t\t// VB doubles quotes to preserve them, so just end this string\n\t\t\t// state now as a following quote will start again\n\t\t\tif (sc.ch == '\\\"') {\n\t\t\t\tif (sc.chNext == '\\\"') {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} else {\n\t\t\t\t\tif (tolower(sc.chNext) == 'c') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t\t}\n\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\tvisibleChars = 0;\n\t\t\t\tsc.ChangeState(SCE_B_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_COMMENT) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tvisibleChars = 0;\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_PREPROCESSOR) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tvisibleChars = 0;\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_FILENUMBER) {\n\t\t\tif (IsADigit(sc.ch)) {\n\t\t\t\tfileNbDigits++;\n\t\t\t\tif (fileNbDigits > 3) {\n\t\t\t\t\tsc.ChangeState(SCE_B_DATE);\n\t\t\t\t}\n\t\t\t} else if (sc.ch == '\\r' || sc.ch == '\\n' || sc.ch == ',') {\n\t\t\t\t// Regular uses: Close #1; Put #1, ...; Get #1, ... etc.\n\t\t\t\t// Too bad if date is format #27, Oct, 2003# or something like that...\n\t\t\t\t// Use regular number state\n\t\t\t\tsc.ChangeState(SCE_B_NUMBER);\n\t\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tsc.ChangeState(SCE_B_DATE);\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t} else {\n\t\t\t\tsc.ChangeState(SCE_B_DATE);\n\t\t\t}\n\t\t\tif (sc.state != SCE_B_FILENUMBER) {\n\t\t\t\tfileNbDigits = 0;\n\t\t\t}\n\t\t} else if (sc.state == SCE_B_DATE) {\n\t\t\tif (sc.atLineEnd) {\n\t\t\t\tvisibleChars = 0;\n\t\t\t\tsc.ChangeState(SCE_B_STRINGEOL);\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\tsc.ForwardSetState(SCE_B_DEFAULT);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.state == SCE_B_DEFAULT) {\n\t\t\tif (sc.ch == '\\'') {\n\t\t\t\tsc.SetState(SCE_B_COMMENT);\n\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\tsc.SetState(SCE_B_STRING);\n\t\t\t} else if (sc.ch == '#' && visibleChars == 0) {\n\t\t\t\t// Preprocessor commands are alone on their line\n\t\t\t\tsc.SetState(SCE_B_PREPROCESSOR);\n\t\t\t} else if (sc.ch == '#') {\n\t\t\t\t// It can be a date literal, ending with #, or a file number, from 1 to 511\n\t\t\t\t// The date literal depends on the locale, so anything can go between #'s.\n\t\t\t\t// Can be #January 1, 1993# or #1 Jan 93# or #05/11/2003#, etc.\n\t\t\t\t// So we set the FILENUMBER state, and switch to DATE if it isn't a file number\n\t\t\t\tsc.SetState(SCE_B_FILENUMBER);\n\t\t\t} else if (sc.ch == '&' && tolower(sc.chNext) == 'h') {\n\t\t\t\t// Hexadecimal number\n\t\t\t\tsc.SetState(SCE_B_NUMBER);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (sc.ch == '&' && tolower(sc.chNext) == 'o') {\n\t\t\t\t// Octal number\n\t\t\t\tsc.SetState(SCE_B_NUMBER);\n\t\t\t\tsc.Forward();\n\t\t\t} else if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\tsc.SetState(SCE_B_NUMBER);\n\t\t\t} else if (IsAWordStart(sc.ch) || (sc.ch == '[')) {\n\t\t\t\tsc.SetState(SCE_B_IDENTIFIER);\n\t\t\t} else if (isoperator(static_cast<char>(sc.ch)) || (sc.ch == '\\\\')) {\t// Integer division\n\t\t\t\tsc.SetState(SCE_B_OPERATOR);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!IsASpace(sc.ch)) {\n\t\t\tvisibleChars++;\n\t\t}\n\t}\n\n\tif (sc.state == SCE_B_IDENTIFIER && !IsAWordChar(sc.ch)) {\n\t\t// In Basic (except VBScript), a variable name or a function name\n\t\t// can end with a special character indicating the type of the value\n\t\t// held or returned.\n\t\tbool skipType = false;\n\t\tif (!vbScriptSyntax && IsTypeCharacter(sc.ch)) {\n\t\t\tsc.Forward();\t// Skip it\n\t\t\tskipType = true;\n\t\t}\n\t\tif (sc.ch == ']') {\n\t\t\tsc.Forward();\n\t\t}\n\t\tchar s[100];\n\t\tsc.GetCurrentLowered(s, sizeof(s));\n\t\tif (skipType) {\n\t\t\ts[strlen(s) - 1] = '\\0';\n\t\t}\n\t\tif (strcmp(s, \"rem\") == 0) {\n\t\t\tsc.ChangeState(SCE_B_COMMENT);\n\t\t} else {\n\t\t\tif (keywords.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_B_KEYWORD);\n\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_B_KEYWORD2);\n\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_B_KEYWORD3);\n\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_B_KEYWORD4);\n\t\t\t}\t// Else, it is really an identifier...\n\t\t\tsc.SetState(SCE_B_DEFAULT);\n\t\t}\n\t}\n\n\tsc.Complete();\n}\n\nstatic void FoldVBDoc(Sci_PositionU startPos, Sci_Position length, int,\n\t\t\t\t\t\t   WordList *[], Accessor &styler) {\n\tSci_Position endPos = startPos + length;\n\n\t// Backtrack to previous line in case need to fix its fold status\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tif (startPos > 0) {\n\t\tif (lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\tstartPos = styler.LineStart(lineCurrent);\n\t\t}\n\t}\n\tint spaceFlags = 0;\n\tint indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, IsVBComment);\n\tchar chNext = styler[startPos];\n\tfor (Sci_Position i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\n\t\tif ((ch == '\\r' && chNext != '\\n') || (ch == '\\n') || (i == endPos)) {\n\t\t\tint lev = indentCurrent;\n\t\t\tint indentNext = styler.IndentAmount(lineCurrent + 1, &spaceFlags, IsVBComment);\n\t\t\tif (!(indentCurrent & SC_FOLDLEVELWHITEFLAG)) {\n\t\t\t\t// Only non whitespace lines can be headers\n\t\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK)) {\n\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t} else if (indentNext & SC_FOLDLEVELWHITEFLAG) {\n\t\t\t\t\t// Line after is blank so check the next - maybe should continue further?\n\t\t\t\t\tint spaceFlags2 = 0;\n\t\t\t\t\tint indentNext2 = styler.IndentAmount(lineCurrent + 2, &spaceFlags2, IsVBComment);\n\t\t\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext2 & SC_FOLDLEVELNUMBERMASK)) {\n\t\t\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tindentCurrent = indentNext;\n\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\tlineCurrent++;\n\t\t}\n\t}\n}\n\nstatic void ColouriseVBNetDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *keywordlists[], Accessor &styler) {\n\tColouriseVBDoc(startPos, length, initStyle, keywordlists, styler, false);\n}\n\nstatic void ColouriseVBScriptDoc(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                           WordList *keywordlists[], Accessor &styler) {\n\tColouriseVBDoc(startPos, length, initStyle, keywordlists, styler, true);\n}\n\nstatic const char * const vbWordListDesc[] = {\n\t\"Keywords\",\n\t\"user1\",\n\t\"user2\",\n\t\"user3\",\n\t0\n};\n\nLexerModule lmVB(SCLEX_VB, ColouriseVBNetDoc, \"vb\", FoldVBDoc, vbWordListDesc);\nLexerModule lmVBScript(SCLEX_VBSCRIPT, ColouriseVBScriptDoc, \"vbscript\", FoldVBDoc, vbWordListDesc);\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexVHDL.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexVHDL.cxx\n ** Lexer for VHDL\n ** Written by Phil Reid,\n ** Based on:\n **  - The Verilog Lexer by Avi Yegudin\n **  - The Fortran Lexer by Chuan-jian Shen\n **  - The C++ lexer by Neil Hodgson\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic void ColouriseVHDLDoc(\n  Sci_PositionU startPos,\n  Sci_Position length,\n  int initStyle,\n  WordList *keywordlists[],\n  Accessor &styler);\n\n\n/***************************************/\nstatic inline bool IsAWordChar(const int ch) {\n  return (ch < 0x80) && (isalnum(ch) || ch == '.' || ch == '_' );\n}\n\n/***************************************/\nstatic inline bool IsAWordStart(const int ch) {\n  return (ch < 0x80) && (isalnum(ch) || ch == '_');\n}\n\n/***************************************/\nstatic inline bool IsABlank(unsigned int ch) {\n    return (ch == ' ') || (ch == 0x09) || (ch == 0x0b) ;\n}\n\n/***************************************/\nstatic void ColouriseVHDLDoc(\n  Sci_PositionU startPos,\n  Sci_Position length,\n  int initStyle,\n  WordList *keywordlists[],\n  Accessor &styler)\n{\n  WordList &Keywords   = *keywordlists[0];\n  WordList &Operators  = *keywordlists[1];\n  WordList &Attributes = *keywordlists[2];\n  WordList &Functions  = *keywordlists[3];\n  WordList &Packages   = *keywordlists[4];\n  WordList &Types      = *keywordlists[5];\n  WordList &User       = *keywordlists[6];\n\n  StyleContext sc(startPos, length, initStyle, styler);\n  bool isExtendedId = false;    // true when parsing an extended identifier\n\n  for (; sc.More(); sc.Forward())\n  {\n\n    // Determine if the current state should terminate.\n    if (sc.state == SCE_VHDL_OPERATOR) {\n      sc.SetState(SCE_VHDL_DEFAULT);\n    } else if (sc.state == SCE_VHDL_NUMBER) {\n      if (!IsAWordChar(sc.ch) && (sc.ch != '#')) {\n        sc.SetState(SCE_VHDL_DEFAULT);\n      }\n    } else if (sc.state == SCE_VHDL_IDENTIFIER) {\n      if (!isExtendedId && (!IsAWordChar(sc.ch) || (sc.ch == '.'))) {\n        char s[100];\n        sc.GetCurrentLowered(s, sizeof(s));\n        if (Keywords.InList(s)) {\n          sc.ChangeState(SCE_VHDL_KEYWORD);\n        } else if (Operators.InList(s)) {\n          sc.ChangeState(SCE_VHDL_STDOPERATOR);\n        } else if (Attributes.InList(s)) {\n          sc.ChangeState(SCE_VHDL_ATTRIBUTE);\n        } else if (Functions.InList(s)) {\n          sc.ChangeState(SCE_VHDL_STDFUNCTION);\n        } else if (Packages.InList(s)) {\n          sc.ChangeState(SCE_VHDL_STDPACKAGE);\n        } else if (Types.InList(s)) {\n          sc.ChangeState(SCE_VHDL_STDTYPE);\n        } else if (User.InList(s)) {\n          sc.ChangeState(SCE_VHDL_USERWORD);\n        }\n        sc.SetState(SCE_VHDL_DEFAULT);\n      } else if (isExtendedId && ((sc.ch == '\\\\') || sc.atLineEnd)) {\n        // extended identifiers are terminated by backslash, check for end of line in case we have invalid syntax\n        isExtendedId = false;\n        sc.ForwardSetState(SCE_VHDL_DEFAULT);\n      }\n    } else if (sc.state == SCE_VHDL_COMMENT || sc.state == SCE_VHDL_COMMENTLINEBANG) {\n      if (sc.atLineEnd) {\n        sc.SetState(SCE_VHDL_DEFAULT);\n      }\n    } else if (sc.state == SCE_VHDL_STRING) {\n      if (sc.ch == '\\\\') {\n        if (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n          sc.Forward();\n        }\n      } else if (sc.ch == '\\\"') {\n        sc.ForwardSetState(SCE_VHDL_DEFAULT);\n      } else if (sc.atLineEnd) {\n        sc.ChangeState(SCE_VHDL_STRINGEOL);\n        sc.ForwardSetState(SCE_VHDL_DEFAULT);\n      }\n    } else if (sc.state == SCE_VHDL_BLOCK_COMMENT){\n      if(sc.ch == '*' && sc.chNext == '/'){\n        sc.Forward();\n        sc.ForwardSetState(SCE_VHDL_DEFAULT);\n      }\n    }\n\n    // Determine if a new state should be entered.\n    if (sc.state == SCE_VHDL_DEFAULT) {\n      if (IsADigit(sc.ch) || (sc.ch == '.' && IsADigit(sc.chNext))) {\n        sc.SetState(SCE_VHDL_NUMBER);\n      } else if (IsAWordStart(sc.ch)) {\n        sc.SetState(SCE_VHDL_IDENTIFIER);\n      } else if (sc.Match('-', '-')) {\n        if (sc.Match(\"--!\"))  // Nice to have a different comment style\n          sc.SetState(SCE_VHDL_COMMENTLINEBANG);\n        else\n          sc.SetState(SCE_VHDL_COMMENT);\n      } else if (sc.Match('/', '*')){\n        sc.SetState(SCE_VHDL_BLOCK_COMMENT);\n      } else if (sc.ch == '\\\"') {\n        sc.SetState(SCE_VHDL_STRING);\n      } else if (sc.ch == '\\\\') {\n        isExtendedId = true;\n        sc.SetState(SCE_VHDL_IDENTIFIER);\n      } else if (isoperator(static_cast<char>(sc.ch))) {\n        sc.SetState(SCE_VHDL_OPERATOR);\n      }\n    }\n  }\n  sc.Complete();\n}\n//=============================================================================\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tchar chNext = styler[i+1];\n\t\tif ((ch == '-') && (chNext == '-'))\n\t\t\treturn true;\n\t\telse if (ch != ' ' && ch != '\\t')\n\t\t\treturn false;\n\t}\n\treturn false;\n}\nstatic bool IsCommentBlockStart(Sci_Position line, Accessor &styler)\n{\n    Sci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tchar chNext = styler[i+1];\n        char style = styler.StyleAt(i);\n\t\tif ((style == SCE_VHDL_BLOCK_COMMENT) && (ch == '/') && (chNext == '*'))\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\nstatic bool IsCommentBlockEnd(Sci_Position line, Accessor &styler)\n{\n    Sci_Position pos = styler.LineStart(line);\n\tSci_Position eol_pos = styler.LineStart(line + 1) - 1;\n\n\tfor (Sci_Position i = pos; i < eol_pos; i++) {\n\t\tchar ch = styler[i];\n\t\tchar chNext = styler[i+1];\n        char style = styler.StyleAt(i);\n\t\tif ((style == SCE_VHDL_BLOCK_COMMENT) && (ch == '*') && (chNext == '/'))\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\nstatic bool IsCommentStyle(char style)\n{\n    return style == SCE_VHDL_BLOCK_COMMENT || style == SCE_VHDL_COMMENT || style == SCE_VHDL_COMMENTLINEBANG;\n}\n\n//=============================================================================\n// Folding the code\nstatic void FoldNoBoxVHDLDoc(\n  Sci_PositionU startPos,\n  Sci_Position length,\n  int,\n  Accessor &styler)\n{\n  // Decided it would be smarter to have the lexer have all keywords included. Therefore I\n  // don't check if the style for the keywords that I use to adjust the levels.\n  char words[] =\n    \"architecture begin block case component else elsif end entity generate loop package process record then \"\n    \"procedure protected function when units\";\n  WordList keywords;\n  keywords.Set(words);\n\n  bool foldComment      = styler.GetPropertyInt(\"fold.comment\", 1) != 0;\n  bool foldCompact      = styler.GetPropertyInt(\"fold.compact\", 1) != 0;\n  bool foldAtElse       = styler.GetPropertyInt(\"fold.at.else\", 1) != 0;\n  bool foldAtBegin      = styler.GetPropertyInt(\"fold.at.Begin\", 1) != 0;\n  bool foldAtParenthese = styler.GetPropertyInt(\"fold.at.Parenthese\", 1) != 0;\n  //bool foldAtWhen       = styler.GetPropertyInt(\"fold.at.When\", 1) != 0;  //< fold at when in case statements\n\n  int  visibleChars     = 0;\n  Sci_PositionU endPos   = startPos + length;\n\n  Sci_Position lineCurrent       = styler.GetLine(startPos);\n  int levelCurrent      = SC_FOLDLEVELBASE;\n  if(lineCurrent > 0)\n    levelCurrent        = styler.LevelAt(lineCurrent-1) >> 16;\n  //int levelMinCurrent   = levelCurrent;\n  int levelMinCurrentElse = levelCurrent;   //< Used for folding at 'else'\n  int levelMinCurrentBegin = levelCurrent;  //< Used for folding at 'begin'\n  int levelNext         = levelCurrent;\n\n  /***************************************/\n  Sci_Position lastStart         = 0;\n  char prevWord[32]     = \"\";\n\n  /***************************************/\n  // Find prev word\n  // The logic for going up or down a level depends on a the previous keyword\n  // This code could be cleaned up.\n  Sci_Position end = 0;\n  Sci_PositionU j;\n  for(j = startPos; j>0; j--)\n  {\n    char ch       = styler.SafeGetCharAt(j);\n    char chPrev   = styler.SafeGetCharAt(j-1);\n    int style     = styler.StyleAt(j);\n    int stylePrev = styler.StyleAt(j-1);\n    if ((!IsCommentStyle(style)) && (stylePrev != SCE_VHDL_STRING))\n    {\n      if(IsAWordChar(chPrev) && !IsAWordChar(ch))\n      {\n        end = j-1;\n      }\n    }\n    if ((!IsCommentStyle(style)) && (style != SCE_VHDL_STRING))\n    {\n      if(!IsAWordChar(chPrev) && IsAWordStart(ch) && (end != 0))\n      {\n        char s[32];\n        Sci_PositionU k;\n        for(k=0; (k<31 ) && (k<end-j+1 ); k++) {\n          s[k] = static_cast<char>(tolower(styler[j+k]));\n        }\n        s[k] = '\\0';\n\n        if(keywords.InList(s)) {\n          strcpy(prevWord, s);\n          break;\n        }\n      }\n    }\n  }\n  for(j=j+static_cast<Sci_PositionU>(strlen(prevWord)); j<endPos; j++)\n  {\n    char ch       = styler.SafeGetCharAt(j);\n    int style     = styler.StyleAt(j);\n    if ((!IsCommentStyle(style)) && (style != SCE_VHDL_STRING))\n    {\n      if((ch == ';') && (strcmp(prevWord, \"end\") == 0))\n      {\n        strcpy(prevWord, \";\");\n      }\n    }\n  }\n\n  char  chNext          = styler[startPos];\n  char  chPrev          = '\\0';\n  char  chNextNonBlank;\n  int   styleNext       = styler.StyleAt(startPos);\n  //Platform::DebugPrintf(\"Line[%04d] Prev[%20s] ************************* Level[%x]\\n\", lineCurrent+1, prevWord, levelCurrent);\n\n  /***************************************/\n  for (Sci_PositionU i = startPos; i < endPos; i++)\n  {\n    char ch         = chNext;\n    chNext          = styler.SafeGetCharAt(i + 1);\n    chPrev          = styler.SafeGetCharAt(i - 1);\n    chNextNonBlank  = chNext;\n    Sci_PositionU j  = i+1;\n    while(IsABlank(chNextNonBlank) && j<endPos)\n    {\n      j ++ ;\n      chNextNonBlank = styler.SafeGetCharAt(j);\n    }\n    int style           = styleNext;\n    styleNext       = styler.StyleAt(i + 1);\n    bool atEOL      = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\n    if (foldComment && atEOL)\n    {\n      if(IsCommentLine(lineCurrent, styler))\n      {\n        if(!IsCommentLine(lineCurrent-1, styler) && IsCommentLine(lineCurrent+1, styler))\n        {\n          levelNext++;\n        }\n        else if(IsCommentLine(lineCurrent-1, styler) && !IsCommentLine(lineCurrent+1, styler))\n        {\n          levelNext--;\n        }\n      }\n      else\n      {\n        if (IsCommentBlockStart(lineCurrent, styler) && !IsCommentBlockEnd(lineCurrent, styler))\n        {\n          levelNext++;\n        }\n        else if (IsCommentBlockEnd(lineCurrent, styler) && !IsCommentBlockStart(lineCurrent, styler))\n        {\n          levelNext--;\n        }\n      }\n    }\n\n    if ((style == SCE_VHDL_OPERATOR) && foldAtParenthese)\n    {\n      if(ch == '(') {\n        levelNext++;\n      } else if (ch == ')') {\n        levelNext--;\n      }\n    }\n\n    if ((!IsCommentStyle(style)) && (style != SCE_VHDL_STRING))\n    {\n      if((ch == ';') && (strcmp(prevWord, \"end\") == 0))\n      {\n        strcpy(prevWord, \";\");\n      }\n\n      if(!IsAWordChar(chPrev) && IsAWordStart(ch))\n      {\n        lastStart = i;\n      }\n\n      if(IsAWordChar(ch) && !IsAWordChar(chNext)) {\n        char s[32];\n        Sci_PositionU k;\n        for(k=0; (k<31 ) && (k<i-lastStart+1 ); k++) {\n          s[k] = static_cast<char>(tolower(styler[lastStart+k]));\n        }\n        s[k] = '\\0';\n\n        if(keywords.InList(s))\n        {\n          if (\n            strcmp(s, \"architecture\") == 0  ||\n            strcmp(s, \"case\") == 0          ||\n            strcmp(s, \"generate\") == 0      ||\n            strcmp(s, \"block\") == 0         ||\n            strcmp(s, \"loop\") == 0          ||\n            strcmp(s, \"package\") ==0        ||\n            strcmp(s, \"process\") == 0       ||\n            strcmp(s, \"protected\") == 0     ||\n            strcmp(s, \"record\") == 0        ||\n            strcmp(s, \"then\") == 0          ||\n            strcmp(s, \"units\") == 0)\n          {\n            if (strcmp(prevWord, \"end\") != 0)\n            {\n              if (levelMinCurrentElse > levelNext) {\n                levelMinCurrentElse = levelNext;\n              }\n              levelNext++;\n            }\n          } else if (\n            strcmp(s, \"component\") == 0      ||\n            strcmp(s, \"entity\") == 0         ||\n            strcmp(s, \"configuration\") == 0 )\n          {\n            if (strcmp(prevWord, \"end\") != 0 && lastStart)\n            { // check for instantiated unit by backward searching for the colon.\n              Sci_PositionU pos = lastStart;\n              char chAtPos, styleAtPos;\n              do{// skip white spaces\n                pos--;\n                styleAtPos = styler.StyleAt(pos);\n                chAtPos = styler.SafeGetCharAt(pos);\n              }while(pos>0 &&\n                     (chAtPos == ' ' || chAtPos == '\\t' ||\n                      chAtPos == '\\n' || chAtPos == '\\r' ||\n                      IsCommentStyle(styleAtPos)));\n\n              // check for a colon (':') before the instantiated units \"entity\", \"component\" or \"configuration\". Don't fold thereafter.\n              if (chAtPos != ':')\n              {\n                if (levelMinCurrentElse > levelNext) {\n                  levelMinCurrentElse = levelNext;\n                }\n                levelNext++;\n              }\n            }\n          } else if (\n            strcmp(s, \"procedure\") == 0     ||\n            strcmp(s, \"function\") == 0)\n          {\n            if (strcmp(prevWord, \"end\") != 0) // check for \"end procedure\" etc.\n            { // This code checks to see if the procedure / function is a definition within a \"package\"\n              // rather than the actual code in the body.\n              int BracketLevel = 0;\n              for(Sci_Position pos=i+1; pos<styler.Length(); pos++)\n              {\n                int styleAtPos = styler.StyleAt(pos);\n                char chAtPos = styler.SafeGetCharAt(pos);\n                if(chAtPos == '(') BracketLevel++;\n                if(chAtPos == ')') BracketLevel--;\n                if(\n                  (BracketLevel == 0) &&\n                  (!IsCommentStyle(styleAtPos)) &&\n                  (styleAtPos != SCE_VHDL_STRING) &&\n                  !iswordchar(styler.SafeGetCharAt(pos-1)) &&\n                  (chAtPos|' ')=='i' && (styler.SafeGetCharAt(pos+1)|' ')=='s' &&\n                  !iswordchar(styler.SafeGetCharAt(pos+2)))\n                {\n                  if (levelMinCurrentElse > levelNext) {\n                    levelMinCurrentElse = levelNext;\n                  }\n                  levelNext++;\n                  break;\n                }\n                if((BracketLevel == 0) && (chAtPos == ';'))\n                {\n                  break;\n                }\n              }\n            }\n\n          } else if (strcmp(s, \"end\") == 0) {\n            levelNext--;\n          }  else if(strcmp(s, \"elsif\") == 0) { // elsif is followed by then so folding occurs correctly\n            levelNext--;\n          } else if (strcmp(s, \"else\") == 0) {\n            if(strcmp(prevWord, \"when\") != 0)  // ignore a <= x when y else z;\n            {\n              levelMinCurrentElse = levelNext - 1;  // VHDL else is all on its own so just dec. the min level\n            }\n          } else if(\n            ((strcmp(s, \"begin\") == 0) && (strcmp(prevWord, \"architecture\") == 0)) ||\n            ((strcmp(s, \"begin\") == 0) && (strcmp(prevWord, \"function\") == 0)) ||\n            ((strcmp(s, \"begin\") == 0) && (strcmp(prevWord, \"procedure\") == 0)))\n          {\n            levelMinCurrentBegin = levelNext - 1;\n          }\n          //Platform::DebugPrintf(\"Line[%04d] Prev[%20s] Cur[%20s] Level[%x]\\n\", lineCurrent+1, prevWord, s, levelCurrent);\n          strcpy(prevWord, s);\n        }\n      }\n    }\n    if (atEOL) {\n      int levelUse = levelCurrent;\n\n      if (foldAtElse && (levelMinCurrentElse < levelUse)) {\n        levelUse = levelMinCurrentElse;\n      }\n      if (foldAtBegin && (levelMinCurrentBegin < levelUse)) {\n        levelUse = levelMinCurrentBegin;\n      }\n      int lev = levelUse | levelNext << 16;\n      if (visibleChars == 0 && foldCompact)\n        lev |= SC_FOLDLEVELWHITEFLAG;\n\n      if (levelUse < levelNext)\n        lev |= SC_FOLDLEVELHEADERFLAG;\n      if (lev != styler.LevelAt(lineCurrent)) {\n        styler.SetLevel(lineCurrent, lev);\n      }\n      //Platform::DebugPrintf(\"Line[%04d] ---------------------------------------------------- Level[%x]\\n\", lineCurrent+1, levelCurrent);\n      lineCurrent++;\n      levelCurrent = levelNext;\n      //levelMinCurrent = levelCurrent;\n      levelMinCurrentElse = levelCurrent;\n      levelMinCurrentBegin = levelCurrent;\n      visibleChars = 0;\n    }\n    /***************************************/\n    if (!isspacechar(ch)) visibleChars++;\n  }\n\n  /***************************************/\n//  Platform::DebugPrintf(\"Line[%04d] ---------------------------------------------------- Level[%x]\\n\", lineCurrent+1, levelCurrent);\n}\n\n//=============================================================================\nstatic void FoldVHDLDoc(Sci_PositionU startPos, Sci_Position length, int initStyle, WordList *[],\n                       Accessor &styler) {\n  FoldNoBoxVHDLDoc(startPos, length, initStyle, styler);\n}\n\n//=============================================================================\nstatic const char * const VHDLWordLists[] = {\n            \"Keywords\",\n            \"Operators\",\n            \"Attributes\",\n            \"Standard Functions\",\n            \"Standard Packages\",\n            \"Standard Types\",\n            \"User Words\",\n            0,\n        };\n\n\nLexerModule lmVHDL(SCLEX_VHDL, ColouriseVHDLDoc, \"vhdl\", FoldVHDLDoc, VHDLWordLists);\n\n\n// Keyword:\n//    access after alias all architecture array assert attribute begin block body buffer bus case component\n//    configuration constant disconnect downto else elsif end entity exit file for function generate generic\n//    group guarded if impure in inertial inout is label library linkage literal loop map new next null of\n//    on open others out package port postponed procedure process pure range record register reject report\n//    return select severity shared signal subtype then to transport type unaffected units until use variable\n//    wait when while with\n//\n// Operators:\n//    abs and mod nand nor not or rem rol ror sla sll sra srl xnor xor\n//\n// Attributes:\n//    left right low high ascending image value pos val succ pred leftof rightof base range reverse_range\n//    length delayed stable quiet transaction event active last_event last_active last_value driving\n//    driving_value simple_name path_name instance_name\n//\n// Std Functions:\n//    now readline read writeline write endfile resolved to_bit to_bitvector to_stdulogic to_stdlogicvector\n//    to_stdulogicvector to_x01 to_x01z to_UX01 rising_edge falling_edge is_x shift_left shift_right rotate_left\n//    rotate_right resize to_integer to_unsigned to_signed std_match to_01\n//\n// Std Packages:\n//    std ieee work standard textio std_logic_1164 std_logic_arith std_logic_misc std_logic_signed\n//    std_logic_textio std_logic_unsigned numeric_bit numeric_std math_complex math_real vital_primitives\n//    vital_timing\n//\n// Std Types:\n//    boolean bit character severity_level integer real time delay_length natural positive string bit_vector\n//    file_open_kind file_open_status line text side width std_ulogic std_ulogic_vector std_logic\n//    std_logic_vector X01 X01Z UX01 UX01Z unsigned signed\n//\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexVerilog.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexVerilog.cxx\n ** Lexer for Verilog.\n ** Written by Avi Yegudin, based on C++ lexer by Neil Hodgson\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#include \"OptionSet.h\"\n#include \"SubStyles.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nnamespace {\n\t// Use an unnamed namespace to protect the functions and classes from name conflicts\n\nstruct PPDefinition {\n\tSci_Position line;\n\tstd::string key;\n\tstd::string value;\n\tbool isUndef;\n\tstd::string arguments;\n\tPPDefinition(Sci_Position line_, const std::string &key_, const std::string &value_, bool isUndef_ = false, std::string arguments_=\"\") :\n\t\tline(line_), key(key_), value(value_), isUndef(isUndef_), arguments(arguments_) {\n\t}\n};\n\nclass LinePPState {\n\tint state;\n\tint ifTaken;\n\tint level;\n\tbool ValidLevel() const {\n\t\treturn level >= 0 && level < 32;\n\t}\n\tint maskLevel() const {\n\t\treturn 1 << level;\n\t}\npublic:\n\tLinePPState() : state(0), ifTaken(0), level(-1) {\n\t}\n\tbool IsInactive() const {\n\t\treturn state != 0;\n\t}\n\tbool CurrentIfTaken() const {\n\t\treturn (ifTaken & maskLevel()) != 0;\n\t}\n\tvoid StartSection(bool on) {\n\t\tlevel++;\n\t\tif (ValidLevel()) {\n\t\t\tif (on) {\n\t\t\t\tstate &= ~maskLevel();\n\t\t\t\tifTaken |= maskLevel();\n\t\t\t} else {\n\t\t\t\tstate |= maskLevel();\n\t\t\t\tifTaken &= ~maskLevel();\n\t\t\t}\n\t\t}\n\t}\n\tvoid EndSection() {\n\t\tif (ValidLevel()) {\n\t\t\tstate &= ~maskLevel();\n\t\t\tifTaken &= ~maskLevel();\n\t\t}\n\t\tlevel--;\n\t}\n\tvoid InvertCurrentLevel() {\n\t\tif (ValidLevel()) {\n\t\t\tstate ^= maskLevel();\n\t\t\tifTaken |= maskLevel();\n\t\t}\n\t}\n};\n\n// Hold the preprocessor state for each line seen.\n// Currently one entry per line but could become sparse with just one entry per preprocessor line.\nclass PPStates {\n\tstd::vector<LinePPState> vlls;\npublic:\n\tLinePPState ForLine(Sci_Position line) const {\n\t\tif ((line > 0) && (vlls.size() > static_cast<size_t>(line))) {\n\t\t\treturn vlls[line];\n\t\t} else {\n\t\t\treturn LinePPState();\n\t\t}\n\t}\n\tvoid Add(Sci_Position line, LinePPState lls) {\n\t\tvlls.resize(line+1);\n\t\tvlls[line] = lls;\n\t}\n};\n\n// Options used for LexerVerilog\nstruct OptionsVerilog {\n\tbool foldComment;\n\tbool foldPreprocessor;\n\tbool foldPreprocessorElse;\n\tbool foldCompact;\n\tbool foldAtElse;\n\tbool foldAtModule;\n\tbool trackPreprocessor;\n\tbool updatePreprocessor;\n\tbool portStyling;\n\tbool allUppercaseDocKeyword;\n\tOptionsVerilog() {\n\t\tfoldComment = false;\n\t\tfoldPreprocessor = false;\n\t\tfoldPreprocessorElse = false;\n\t\tfoldCompact = false;\n\t\tfoldAtElse = false;\n\t\tfoldAtModule = false;\n\t\t// for backwards compatibility, preprocessor functionality is disabled by default\n\t\ttrackPreprocessor = false;\n\t\tupdatePreprocessor = false;\n\t\t// for backwards compatibility, treat input/output/inout as regular keywords\n\t\tportStyling = false;\n\t\t// for backwards compatibility, don't treat all uppercase identifiers as documentation keywords\n\t\tallUppercaseDocKeyword = false;\n\t}\n};\n\nstruct OptionSetVerilog : public OptionSet<OptionsVerilog> {\n\tOptionSetVerilog() {\n\t\tDefineProperty(\"fold.comment\", &OptionsVerilog::foldComment,\n\t\t\t\"This option enables folding multi-line comments when using the Verilog lexer.\");\n\t\tDefineProperty(\"fold.preprocessor\", &OptionsVerilog::foldPreprocessor,\n\t\t\t\"This option enables folding preprocessor directives when using the Verilog lexer.\");\n\t\tDefineProperty(\"fold.compact\", &OptionsVerilog::foldCompact);\n\t\tDefineProperty(\"fold.at.else\", &OptionsVerilog::foldAtElse,\n\t\t\t\"This option enables folding on the else line of an if statement.\");\n\t\tDefineProperty(\"fold.verilog.flags\", &OptionsVerilog::foldAtModule,\n\t\t\t\"This option enables folding module definitions. Typically source files \"\n\t\t\t\"contain only one module definition so this option is somewhat useless.\");\n\t\tDefineProperty(\"lexer.verilog.track.preprocessor\", &OptionsVerilog::trackPreprocessor,\n\t\t\t\"Set to 1 to interpret `if/`else/`endif to grey out code that is not active.\");\n\t\tDefineProperty(\"lexer.verilog.update.preprocessor\", &OptionsVerilog::updatePreprocessor,\n\t\t\t\"Set to 1 to update preprocessor definitions when `define, `undef, or `undefineall found.\");\n\t\tDefineProperty(\"lexer.verilog.portstyling\", &OptionsVerilog::portStyling,\n\t\t\t\"Set to 1 to style input, output, and inout ports differently from regular keywords.\");\n\t\tDefineProperty(\"lexer.verilog.allupperkeywords\", &OptionsVerilog::allUppercaseDocKeyword,\n\t\t\t\"Set to 1 to style identifiers that are all uppercase as documentation keyword.\");\n\t\tDefineProperty(\"lexer.verilog.fold.preprocessor.else\", &OptionsVerilog::foldPreprocessorElse,\n\t\t\t\"This option enables folding on `else and `elsif preprocessor directives.\");\n\t}\n};\n\nconst char styleSubable[] = {0};\n\n}\n\nclass LexerVerilog : public ILexerWithSubStyles {\n\tCharacterSet setWord;\n\tWordList keywords;\n\tWordList keywords2;\n\tWordList keywords3;\n\tWordList keywords4;\n\tWordList keywords5;\n\tWordList ppDefinitions;\n\tPPStates vlls;\n\tstd::vector<PPDefinition> ppDefineHistory;\n\tstruct SymbolValue {\n\t\tstd::string value;\n\t\tstd::string arguments;\n\t\tSymbolValue(const std::string &value_=\"\", const std::string &arguments_=\"\") : value(value_), arguments(arguments_) {\n\t\t}\n\t\tSymbolValue &operator = (const std::string &value_) {\n\t\t\tvalue = value_;\n\t\t\targuments.clear();\n\t\t\treturn *this;\n\t\t}\n\t\tbool IsMacro() const {\n\t\t\treturn !arguments.empty();\n\t\t}\n\t};\n\ttypedef std::map<std::string, SymbolValue> SymbolTable;\n\tSymbolTable preprocessorDefinitionsStart;\n\tOptionsVerilog options;\n\tOptionSetVerilog osVerilog;\n\tenum { activeFlag = 0x40 };\n\tSubStyles subStyles;\n\n\t// states at end of line (EOL) during fold operations:\n\t//\t\tfoldExternFlag: EOL while parsing an extern function/task declaration terminated by ';'\n\t//\t\tfoldWaitDisableFlag: EOL while parsing wait or disable statement, terminated by \"fork\" or '('\n\t//\t\ttypdefFlag: EOL while parsing typedef statement, terminated by ';'\n\tenum {foldExternFlag = 0x01, foldWaitDisableFlag = 0x02, typedefFlag = 0x04, protectedFlag = 0x08};\n\t// map using line number as key to store fold state information\n\tstd::map<Sci_Position, int> foldState;\n\npublic:\n\tLexerVerilog() :\n\t\tsetWord(CharacterSet::setAlphaNum, \"._\", 0x80, true),\n\t\tsubStyles(styleSubable, 0x80, 0x40, activeFlag) {\n\t\t}\n\tvirtual ~LexerVerilog() {}\n\tint SCI_METHOD Version() const {\n\t\treturn lvSubStyles;\n\t}\n\tvoid SCI_METHOD Release() {\n\t\tdelete this;\n\t}\n\tconst char* SCI_METHOD PropertyNames() {\n\t\treturn osVerilog.PropertyNames();\n\t}\n\tint SCI_METHOD PropertyType(const char* name) {\n\t\treturn osVerilog.PropertyType(name);\n\t}\n\tconst char* SCI_METHOD DescribeProperty(const char* name) {\n\t\treturn osVerilog.DescribeProperty(name);\n\t}\n\tSci_Position SCI_METHOD PropertySet(const char* key, const char* val) {\n\t    return osVerilog.PropertySet(&options, key, val);\n\t}\n\tconst char* SCI_METHOD DescribeWordListSets() {\n\t\treturn osVerilog.DescribeWordListSets();\n\t}\n\tSci_Position SCI_METHOD WordListSet(int n, const char* wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\tvoid* SCI_METHOD PrivateCall(int, void*) {\n\t\treturn 0;\n\t}\n\tint SCI_METHOD LineEndTypesSupported() {\n\t\treturn SC_LINE_END_TYPE_UNICODE;\n\t}\n\tint SCI_METHOD AllocateSubStyles(int styleBase, int numberStyles) {\n\t\treturn subStyles.Allocate(styleBase, numberStyles);\n\t}\n\tint SCI_METHOD SubStylesStart(int styleBase) {\n\t\treturn subStyles.Start(styleBase);\n\t}\n\tint SCI_METHOD SubStylesLength(int styleBase) {\n\t\treturn subStyles.Length(styleBase);\n\t}\n\tint SCI_METHOD StyleFromSubStyle(int subStyle) {\n\t\tint styleBase = subStyles.BaseStyle(MaskActive(subStyle));\n\t\tint active = subStyle & activeFlag;\n\t\treturn styleBase | active;\n\t}\n\tint SCI_METHOD PrimaryStyleFromStyle(int style) {\n\t\treturn MaskActive(style);\n \t}\n\tvoid SCI_METHOD FreeSubStyles() {\n\t\tsubStyles.Free();\n\t}\n\tvoid SCI_METHOD SetIdentifiers(int style, const char *identifiers) {\n\t\tsubStyles.SetIdentifiers(style, identifiers);\n\t}\n\tint SCI_METHOD DistanceToSecondaryStyles() {\n\t\treturn activeFlag;\n\t}\n\tconst char * SCI_METHOD GetSubStyleBases() {\n\t\treturn styleSubable;\n\t}\n\tstatic ILexer* LexerFactoryVerilog() {\n\t\treturn new LexerVerilog();\n\t}\n\tstatic int MaskActive(int style) {\n\t\treturn style & ~activeFlag;\n\t}\n\tstd::vector<std::string> Tokenize(const std::string &expr) const;\n};\n\nSci_Position SCI_METHOD LexerVerilog::WordListSet(int n, const char *wl) {\n\tWordList *wordListN = 0;\n\tswitch (n) {\n\tcase 0:\n\t\twordListN = &keywords;\n\t\tbreak;\n\tcase 1:\n\t\twordListN = &keywords2;\n\t\tbreak;\n\tcase 2:\n\t\twordListN = &keywords3;\n\t\tbreak;\n\tcase 3:\n\t\twordListN = &keywords4;\n\t\tbreak;\n\tcase 4:\n\t\twordListN = &keywords5;\n\t\tbreak;\n\tcase 5:\n\t\twordListN = &ppDefinitions;\n\t\tbreak;\n\t}\n\tSci_Position firstModification = -1;\n\tif (wordListN) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*wordListN != wlNew) {\n\t\t\twordListN->Set(wl);\n\t\t\tfirstModification = 0;\n\t\t\tif (n == 5) {\n\t\t\t\t// Rebuild preprocessorDefinitions\n\t\t\t\tpreprocessorDefinitionsStart.clear();\n\t\t\t\tfor (int nDefinition = 0; nDefinition < ppDefinitions.Length(); nDefinition++) {\n\t\t\t\t\tconst char *cpDefinition = ppDefinitions.WordAt(nDefinition);\n\t\t\t\t\tconst char *cpEquals = strchr(cpDefinition, '=');\n\t\t\t\t\tif (cpEquals) {\n\t\t\t\t\t\tstd::string name(cpDefinition, cpEquals - cpDefinition);\n\t\t\t\t\t\tstd::string val(cpEquals+1);\n\t\t\t\t\t\tsize_t bracket = name.find('(');\n\t\t\t\t\t\tsize_t bracketEnd = name.find(')');\n\t\t\t\t\t\tif ((bracket != std::string::npos) && (bracketEnd != std::string::npos)) {\n\t\t\t\t\t\t\t// Macro\n\t\t\t\t\t\t\tstd::string args = name.substr(bracket + 1, bracketEnd - bracket - 1);\n\t\t\t\t\t\t\tname = name.substr(0, bracket);\n\t\t\t\t\t\t\tpreprocessorDefinitionsStart[name] = SymbolValue(val, args);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpreprocessorDefinitionsStart[name] = val;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstd::string name(cpDefinition);\n\t\t\t\t\t\tstd::string val(\"1\");\n\t\t\t\t\t\tpreprocessorDefinitionsStart[name] = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn firstModification;\n}\n\nstatic inline bool IsAWordChar(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '\\''|| ch == '$');\n}\n\nstatic inline bool IsAWordStart(const int ch) {\n\treturn (ch < 0x80) && (isalnum(ch) || ch == '_' || ch == '$');\n}\n\nstatic inline bool AllUpperCase(const char *a) {\n\twhile (*a) {\n\t\tif (*a >= 'a' && *a <= 'z') return false;\n\t\ta++;\n\t}\n\treturn true;\n}\n\n// Functor used to truncate history\nstruct After {\n\tSci_Position line;\n\texplicit After(Sci_Position line_) : line(line_) {}\n\tbool operator()(PPDefinition &p) const {\n\t\treturn p.line > line;\n\t}\n};\n\nstatic std::string GetRestOfLine(LexAccessor &styler, Sci_Position start, bool allowSpace) {\n\tstd::string restOfLine;\n\tSci_Position i =0;\n\tchar ch = styler.SafeGetCharAt(start, '\\n');\n\tSci_Position endLine = styler.LineEnd(styler.GetLine(start));\n\twhile (((start+i) < endLine) && (ch != '\\r')) {\n\t\tchar chNext = styler.SafeGetCharAt(start + i + 1, '\\n');\n\t\tif (ch == '/' && (chNext == '/' || chNext == '*'))\n\t\t\tbreak;\n\t\tif (allowSpace || (ch != ' '))\n\t\t\trestOfLine += ch;\n\t\ti++;\n\t\tch = chNext;\n\t}\n\treturn restOfLine;\n}\n\nstatic bool IsSpaceOrTab(int ch) {\n\treturn ch == ' ' || ch == '\\t';\n}\n\nvoid SCI_METHOD LexerVerilog::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess)\n{\n\tLexAccessor styler(pAccess);\n\n\tconst int kwOther=0, kwDot=0x100, kwInput=0x200, kwOutput=0x300, kwInout=0x400, kwProtected=0x800;\n\tint lineState = kwOther;\n\tbool continuationLine = false;\n\n\tSci_Position curLine = styler.GetLine(startPos);\n\tif (curLine > 0) lineState = styler.GetLineState(curLine - 1);\n\n\t// Do not leak onto next line\n\tif (initStyle == SCE_V_STRINGEOL)\n\t\tinitStyle = SCE_V_DEFAULT;\n\n\tif ((MaskActive(initStyle) == SCE_V_PREPROCESSOR) ||\n\t\t\t(MaskActive(initStyle) == SCE_V_COMMENTLINE) ||\n\t\t\t(MaskActive(initStyle) == SCE_V_COMMENTLINEBANG)) {\n\t\t// Set continuationLine if last character of previous line is '\\'\n\t\tif (curLine > 0) {\n\t\t\tSci_Position endLinePrevious = styler.LineEnd(curLine - 1);\n\t\t\tif (endLinePrevious > 0) {\n\t\t\t\tcontinuationLine = styler.SafeGetCharAt(endLinePrevious-1) == '\\\\';\n\t\t\t}\n\t\t}\n\t}\n\n\tStyleContext sc(startPos, length, initStyle, styler);\n\tLinePPState preproc = vlls.ForLine(curLine);\n\n\tbool definitionsChanged = false;\n\n\t// Truncate ppDefineHistory before current line\n\n\tif (!options.updatePreprocessor)\n\t\tppDefineHistory.clear();\n\n\tstd::vector<PPDefinition>::iterator itInvalid = std::find_if(ppDefineHistory.begin(), ppDefineHistory.end(), After(curLine-1));\n\tif (itInvalid != ppDefineHistory.end()) {\n\t\tppDefineHistory.erase(itInvalid, ppDefineHistory.end());\n\t\tdefinitionsChanged = true;\n\t}\n\n\tSymbolTable preprocessorDefinitions = preprocessorDefinitionsStart;\n\tfor (std::vector<PPDefinition>::iterator itDef = ppDefineHistory.begin(); itDef != ppDefineHistory.end(); ++itDef) {\n\t\tif (itDef->isUndef)\n\t\t\tpreprocessorDefinitions.erase(itDef->key);\n\t\telse\n\t\t\tpreprocessorDefinitions[itDef->key] = SymbolValue(itDef->value, itDef->arguments);\n\t}\n\n\tint activitySet = preproc.IsInactive() ? activeFlag : 0;\n\tSci_Position lineEndNext = styler.LineEnd(curLine);\n\tbool isEscapedId = false;    // true when parsing an escaped Identifier\n\tbool isProtected = (lineState&kwProtected) != 0;\t// true when parsing a protected region\n\n\tfor (; sc.More(); sc.Forward()) {\n\t\tif (sc.atLineStart) {\n\t\t\tif (sc.state == SCE_V_STRING) {\n\t\t\t\t// Prevent SCE_V_STRINGEOL from leaking back to previous line\n\t\t\t\tsc.SetState(SCE_V_STRING);\n\t\t\t}\n\t\t\tif ((MaskActive(sc.state) == SCE_V_PREPROCESSOR) && (!continuationLine)) {\n\t\t\t\tsc.SetState(SCE_V_DEFAULT|activitySet);\n\t\t\t}\n\t\t\tif (preproc.IsInactive()) {\n\t\t\t\tactivitySet = activeFlag;\n\t\t\t\tsc.SetState(sc.state | activitySet);\n\t\t\t}\n\t\t}\n\n\t\tif (sc.atLineEnd) {\n\t\t\tcurLine++;\n\t\t\tlineEndNext = styler.LineEnd(curLine);\n\t\t\tvlls.Add(curLine, preproc);\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tstyler.SetLineState(curLine, lineState);\n\t\t\tisEscapedId = false;    // EOL terminates an escaped Identifier\n\t\t}\n\n\t\t// Handle line continuation generically.\n\t\tif (sc.ch == '\\\\') {\n\t\t\tif (static_cast<Sci_Position>((sc.currentPos+1)) >= lineEndNext) {\n\t\t\t\tcurLine++;\n\t\t\t\tlineEndNext = styler.LineEnd(curLine);\n\t\t\t\tvlls.Add(curLine, preproc);\n\t\t\t\t// Update the line state, so it can be seen by next line\n\t\t\t\tstyler.SetLineState(curLine, lineState);\n\t\t\t\tsc.Forward();\n\t\t\t\tif (sc.ch == '\\r' && sc.chNext == '\\n') {\n\t\t\t\t\t// Even in UTF-8, \\r and \\n are separate\n\t\t\t\t\tsc.Forward();\n\t\t\t\t}\n\t\t\t\tcontinuationLine = true;\n\t\t\t\tsc.Forward();\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\n\t\t// for comment keyword\n\t\tif (MaskActive(sc.state) == SCE_V_COMMENT_WORD && !IsAWordChar(sc.ch)) {\n\t\t\tchar s[100];\n\t\t\tint state = lineState & 0xff;\n\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\tif (keywords5.InList(s)) {\n\t\t\t\tsc.ChangeState(SCE_V_COMMENT_WORD|activitySet);\n\t\t\t} else {\n\t\t\t\tsc.ChangeState(state|activitySet);\n\t\t\t}\n\t\t\tsc.SetState(state|activitySet);\n\t\t}\n\n\t\tconst bool atLineEndBeforeSwitch = sc.atLineEnd;\n\n\t\t// Determine if the current state should terminate.\n\t\tswitch (MaskActive(sc.state)) {\n\t\t\tcase SCE_V_OPERATOR:\n\t\t\t\tsc.SetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\tbreak;\n\t\t\tcase SCE_V_NUMBER:\n\t\t\t\tif (!(IsAWordChar(sc.ch) || (sc.ch == '?'))) {\n\t\t\t\t\tsc.SetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_V_IDENTIFIER:\n\t\t\t\tif (!isEscapedId &&(!IsAWordChar(sc.ch) || (sc.ch == '.'))) {\n\t\t\t\t\tchar s[100];\n\t\t\t\t\tlineState &= 0xff00;\n\t\t\t\t\tsc.GetCurrent(s, sizeof(s));\n\t\t\t\t\tif (options.portStyling && (strcmp(s, \"input\") == 0)) {\n\t\t\t\t\t\tlineState = kwInput;\n\t\t\t\t\t\tsc.ChangeState(SCE_V_INPUT|activitySet);\n\t\t\t\t\t} else if (options.portStyling && (strcmp(s, \"output\") == 0)) {\n\t\t\t\t\t\tlineState = kwOutput;\n\t\t\t\t\t\tsc.ChangeState(SCE_V_OUTPUT|activitySet);\n\t\t\t\t\t} else if (options.portStyling && (strcmp(s, \"inout\") == 0)) {\n\t\t\t\t\t\tlineState = kwInout;\n\t\t\t\t\t\tsc.ChangeState(SCE_V_INOUT|activitySet);\n\t\t\t\t\t} else if (lineState == kwInput) {\n\t\t\t\t\t\tsc.ChangeState(SCE_V_INPUT|activitySet);\n\t\t\t\t\t} else if (lineState == kwOutput) {\n\t\t\t\t\t\tsc.ChangeState(SCE_V_OUTPUT|activitySet);\n\t\t\t\t\t} else if (lineState == kwInout) {\n\t\t\t\t\t\tsc.ChangeState(SCE_V_INOUT|activitySet);\n\t\t\t\t\t} else if (lineState == kwDot) {\n\t\t\t\t\t\tlineState = kwOther;\n\t\t\t\t\t\tif (options.portStyling)\n\t\t\t\t\t\t\tsc.ChangeState(SCE_V_PORT_CONNECT|activitySet);\n\t\t\t\t\t} else if (keywords.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_V_WORD|activitySet);\n\t\t\t\t\t} else if (keywords2.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_V_WORD2|activitySet);\n\t\t\t\t\t} else if (keywords3.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_V_WORD3|activitySet);\n\t\t\t\t\t} else if (keywords4.InList(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_V_USER|activitySet);\n\t\t\t\t\t} else if (options.allUppercaseDocKeyword && AllUpperCase(s)) {\n\t\t\t\t\t\tsc.ChangeState(SCE_V_USER|activitySet);\n\t\t\t\t\t}\n\t\t\t\t\tsc.SetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_V_PREPROCESSOR:\n\t\t\t\tif (!IsAWordChar(sc.ch) || sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_V_COMMENT:\n\t\t\t\tif (sc.Match('*', '/')) {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t\tsc.ForwardSetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\t\tlineState = sc.state | (lineState & 0xff00);\n\t\t\t\t\tsc.SetState(SCE_V_COMMENT_WORD|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_V_COMMENTLINE:\n\t\t\tcase SCE_V_COMMENTLINEBANG:\n\t\t\t\tif (sc.atLineStart) {\n\t\t\t\t\tsc.SetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\t\tlineState = sc.state | (lineState & 0xff00);\n\t\t\t\t\tsc.SetState(SCE_V_COMMENT_WORD|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCE_V_STRING:\n\t\t\t\tif (sc.ch == '\\\\') {\n\t\t\t\t\tif (sc.chNext == '\\\"' || sc.chNext == '\\'' || sc.chNext == '\\\\') {\n\t\t\t\t\t\tsc.Forward();\n\t\t\t\t\t}\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tsc.ForwardSetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\t} else if (sc.atLineEnd) {\n\t\t\t\t\tsc.ChangeState(SCE_V_STRINGEOL|activitySet);\n\t\t\t\t\tsc.ForwardSetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (sc.atLineEnd && !atLineEndBeforeSwitch) {\n\t\t\t// State exit processing consumed characters up to end of line.\n\t\t\tcurLine++;\n\t\t\tlineEndNext = styler.LineEnd(curLine);\n\t\t\tvlls.Add(curLine, preproc);\n\t\t\t// Update the line state, so it can be seen by next line\n\t\t\tstyler.SetLineState(curLine, lineState);\n\t\t\tisEscapedId = false;    // EOL terminates an escaped Identifier\n\t\t}\n\n\t\t// Determine if a new state should be entered.\n\t\tif (MaskActive(sc.state) == SCE_V_DEFAULT) {\n\t\t\tif (sc.ch == '`') {\n\t\t\t\tsc.SetState(SCE_V_PREPROCESSOR|activitySet);\n\t\t\t\t// Skip whitespace between ` and preprocessor word\n\t\t\t\tdo {\n\t\t\t\t\tsc.Forward();\n\t\t\t\t} while ((sc.ch == ' ' || sc.ch == '\\t') && sc.More());\n\t\t\t\tif (sc.atLineEnd) {\n\t\t\t\t\tsc.SetState(SCE_V_DEFAULT|activitySet);\n\t\t\t\t\tstyler.SetLineState(curLine, lineState);\n\t\t\t\t} else {\n\t\t\t\t\tif (sc.Match(\"protected\")) {\n\t\t\t\t\t\tisProtected = true;\n\t\t\t\t\t\tlineState |= kwProtected;\n\t\t\t\t\t\tstyler.SetLineState(curLine, lineState);\n\t\t\t\t\t} else if (sc.Match(\"endprotected\")) {\n\t\t\t\t\t\tisProtected = false;\n\t\t\t\t\t\tlineState &= ~kwProtected;\n\t\t\t\t\t\tstyler.SetLineState(curLine, lineState);\n\t\t\t\t\t} else if (!isProtected && options.trackPreprocessor) {\n\t\t\t\t\t\tif (sc.Match(\"ifdef\") || sc.Match(\"ifndef\")) {\n\t\t\t\t\t\t\tbool isIfDef = sc.Match(\"ifdef\");\n\t\t\t\t\t\t\tint i = isIfDef ? 5 : 6;\n\t\t\t\t\t\t\tstd::string restOfLine = GetRestOfLine(styler, sc.currentPos + i + 1, false);\n\t\t\t\t\t\t\tbool foundDef = preprocessorDefinitions.find(restOfLine) != preprocessorDefinitions.end();\n\t\t\t\t\t\t\tpreproc.StartSection(isIfDef == foundDef);\n\t\t\t\t\t\t} else if (sc.Match(\"else\")) {\n\t\t\t\t\t\t\tif (!preproc.CurrentIfTaken()) {\n\t\t\t\t\t\t\t\tpreproc.InvertCurrentLevel();\n\t\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\t\tif (!activitySet) {\n\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_V_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (!preproc.IsInactive()) {\n\t\t\t\t\t\t\t\tpreproc.InvertCurrentLevel();\n\t\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\t\tif (!activitySet) {\n\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_V_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (sc.Match(\"elsif\")) {\n\t\t\t\t\t\t\t// Ensure only one chosen out of `if .. `elsif .. `elsif .. `else .. `endif\n\t\t\t\t\t\t\tif (!preproc.CurrentIfTaken()) {\n\t\t\t\t\t\t\t\t// Similar to `ifdef\n\t\t\t\t\t\t\t\tstd::string restOfLine = GetRestOfLine(styler, sc.currentPos + 6, true);\n\t\t\t\t\t\t\t\tbool ifGood = preprocessorDefinitions.find(restOfLine) != preprocessorDefinitions.end();\n\t\t\t\t\t\t\t\tif (ifGood) {\n\t\t\t\t\t\t\t\t\tpreproc.InvertCurrentLevel();\n\t\t\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\t\t\tif (!activitySet)\n\t\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_V_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (!preproc.IsInactive()) {\n\t\t\t\t\t\t\t\tpreproc.InvertCurrentLevel();\n\t\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\t\tif (!activitySet)\n\t\t\t\t\t\t\t\t\tsc.ChangeState(SCE_V_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (sc.Match(\"endif\")) {\n\t\t\t\t\t\t\tpreproc.EndSection();\n\t\t\t\t\t\t\tactivitySet = preproc.IsInactive() ? activeFlag : 0;\n\t\t\t\t\t\t\tsc.ChangeState(SCE_V_PREPROCESSOR|activitySet);\n\t\t\t\t\t\t} else if (sc.Match(\"define\")) {\n\t\t\t\t\t\t\tif (options.updatePreprocessor && !preproc.IsInactive()) {\n\t\t\t\t\t\t\t\tstd::string restOfLine = GetRestOfLine(styler, sc.currentPos + 6, true);\n\t\t\t\t\t\t\t\tsize_t startName = 0;\n\t\t\t\t\t\t\t\twhile ((startName < restOfLine.length()) && IsSpaceOrTab(restOfLine[startName]))\n\t\t\t\t\t\t\t\t\tstartName++;\n\t\t\t\t\t\t\t\tsize_t endName = startName;\n\t\t\t\t\t\t\t\twhile ((endName < restOfLine.length()) && setWord.Contains(static_cast<unsigned char>(restOfLine[endName])))\n\t\t\t\t\t\t\t\t\tendName++;\n\t\t\t\t\t\t\t\tstd::string key = restOfLine.substr(startName, endName-startName);\n\t\t\t\t\t\t\t\tif ((endName < restOfLine.length()) && (restOfLine.at(endName) == '(')) {\n\t\t\t\t\t\t\t\t\t// Macro\n\t\t\t\t\t\t\t\t\tsize_t endArgs = endName;\n\t\t\t\t\t\t\t\t\twhile ((endArgs < restOfLine.length()) && (restOfLine[endArgs] != ')'))\n\t\t\t\t\t\t\t\t\t\tendArgs++;\n\t\t\t\t\t\t\t\t\tstd::string args = restOfLine.substr(endName + 1, endArgs - endName - 1);\n\t\t\t\t\t\t\t\t\tsize_t startValue = endArgs+1;\n\t\t\t\t\t\t\t\t\twhile ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue]))\n\t\t\t\t\t\t\t\t\t\tstartValue++;\n\t\t\t\t\t\t\t\t\tstd::string value;\n\t\t\t\t\t\t\t\t\tif (startValue < restOfLine.length())\n\t\t\t\t\t\t\t\t\t\tvalue = restOfLine.substr(startValue);\n\t\t\t\t\t\t\t\t\tpreprocessorDefinitions[key] = SymbolValue(value, args);\n\t\t\t\t\t\t\t\t\tppDefineHistory.push_back(PPDefinition(curLine, key, value, false, args));\n\t\t\t\t\t\t\t\t\tdefinitionsChanged = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t// Value\n\t\t\t\t\t\t\t\t\tsize_t startValue = endName;\n\t\t\t\t\t\t\t\t\twhile ((startValue < restOfLine.length()) && IsSpaceOrTab(restOfLine[startValue]))\n\t\t\t\t\t\t\t\t\t\tstartValue++;\n\t\t\t\t\t\t\t\t\tstd::string value = restOfLine.substr(startValue);\n\t\t\t\t\t\t\t\t\tpreprocessorDefinitions[key] = value;\n\t\t\t\t\t\t\t\t\tppDefineHistory.push_back(PPDefinition(curLine, key, value));\n\t\t\t\t\t\t\t\t\tdefinitionsChanged = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (sc.Match(\"undefineall\")) {\n\t\t\t\t\t\t\tif (options.updatePreprocessor && !preproc.IsInactive()) {\n\t\t\t\t\t\t\t\t// remove all preprocessor definitions\n\t\t\t\t\t\t\t\tstd::map<std::string, SymbolValue>::iterator itDef;\n\t\t\t\t\t\t\t\tfor(itDef = preprocessorDefinitions.begin(); itDef != preprocessorDefinitions.end(); ++itDef) {\n\t\t\t\t\t\t\t\t\tppDefineHistory.push_back(PPDefinition(curLine, itDef->first, \"\", true));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tpreprocessorDefinitions.clear();\n\t\t\t\t\t\t\t\tdefinitionsChanged = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (sc.Match(\"undef\")) {\n\t\t\t\t\t\t\tif (options.updatePreprocessor && !preproc.IsInactive()) {\n\t\t\t\t\t\t\t\tstd::string restOfLine = GetRestOfLine(styler, sc.currentPos + 5, true);\n\t\t\t\t\t\t\t\tstd::vector<std::string> tokens = Tokenize(restOfLine);\n\t\t\t\t\t\t\t\tstd::string key;\n\t\t\t\t\t\t\t\tif (tokens.size() >= 1) {\n\t\t\t\t\t\t\t\t\tkey = tokens[0];\n\t\t\t\t\t\t\t\t\tpreprocessorDefinitions.erase(key);\n\t\t\t\t\t\t\t\t\tppDefineHistory.push_back(PPDefinition(curLine, key, \"\", true));\n\t\t\t\t\t\t\t\t\tdefinitionsChanged = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (!isProtected) {\n\t\t\t\tif (IsADigit(sc.ch) || (sc.ch == '\\'') || (sc.ch == '.' && IsADigit(sc.chNext))) {\n\t\t\t\t\tsc.SetState(SCE_V_NUMBER|activitySet);\n\t\t\t\t} else if (IsAWordStart(sc.ch)) {\n\t\t\t\t\tsc.SetState(SCE_V_IDENTIFIER|activitySet);\n\t\t\t\t} else if (sc.Match('/', '*')) {\n\t\t\t\t\tsc.SetState(SCE_V_COMMENT|activitySet);\n\t\t\t\t\tsc.Forward();\t// Eat the * so it isn't used for the end of the comment\n\t\t\t\t} else if (sc.Match('/', '/')) {\n\t\t\t\t\tif (sc.Match(\"//!\"))\t// Nice to have a different comment style\n\t\t\t\t\t\tsc.SetState(SCE_V_COMMENTLINEBANG|activitySet);\n\t\t\t\t\telse\n\t\t\t\t\t\tsc.SetState(SCE_V_COMMENTLINE|activitySet);\n\t\t\t\t} else if (sc.ch == '\\\"') {\n\t\t\t\t\tsc.SetState(SCE_V_STRING|activitySet);\n\t\t\t\t} else if (sc.ch == '\\\\') {\n\t\t\t\t\t// escaped identifier, everything is ok up to whitespace\n\t\t\t\t\tisEscapedId = true;\n\t\t\t\t\tsc.SetState(SCE_V_IDENTIFIER|activitySet);\n\t\t\t\t} else if (isoperator(static_cast<char>(sc.ch)) || sc.ch == '@' || sc.ch == '#') {\n\t\t\t\t\tsc.SetState(SCE_V_OPERATOR|activitySet);\n\t\t\t\t\tif (sc.ch == '.') lineState = kwDot;\n\t\t\t\t\tif (sc.ch == ';') lineState = kwOther;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (isEscapedId && isspacechar(sc.ch)) {\n\t\t\tisEscapedId = false;\n\t\t}\n\t}\n\tif (definitionsChanged) {\n\t\tstyler.ChangeLexerState(startPos, startPos + length);\n\t}\n\tsc.Complete();\n}\n\nstatic bool IsStreamCommentStyle(int style) {\n\treturn style == SCE_V_COMMENT;\n}\n\nstatic bool IsCommentLine(Sci_Position line, LexAccessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tSci_Position eolPos = styler.LineStart(line + 1) - 1;\n\tfor (Sci_Position i = pos; i < eolPos; i++) {\n\t\tchar ch = styler[i];\n\t\tchar chNext = styler.SafeGetCharAt(i + 1);\n\t\tint style = styler.StyleAt(i);\n\t\tif (ch == '/' && chNext == '/' &&\n\t\t   (style == SCE_V_COMMENTLINE || style == SCE_V_COMMENTLINEBANG)) {\n\t\t\treturn true;\n\t\t} else if (!IsASpaceOrTab(ch)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n}\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\nvoid SCI_METHOD LexerVerilog::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess)\n{\n\tLexAccessor styler(pAccess);\n\tbool foldAtBrace  = 1;\n\tbool foldAtParenthese  = 1;\n\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\t// Move back one line to be compatible with LexerModule::Fold behavior, fixes problem with foldComment behavior\n\tif (lineCurrent > 0) {\n\t\tlineCurrent--;\n\t\tSci_Position newStartPos = styler.LineStart(lineCurrent);\n\t\tlength += startPos - newStartPos;\n\t\tstartPos = newStartPos;\n\t\tinitStyle = 0;\n\t\tif (startPos > 0) {\n\t\t\tinitStyle = styler.StyleAt(startPos - 1);\n\t\t}\n\t}\n\tSci_PositionU endPos = startPos + length;\n\tint visibleChars = 0;\n\tint levelCurrent = SC_FOLDLEVELBASE;\n\tif (lineCurrent > 0)\n\t\tlevelCurrent = styler.LevelAt(lineCurrent-1) >> 16;\n\tint levelMinCurrent = levelCurrent;\n\tint levelNext = levelCurrent;\n\tchar chNext = styler[startPos];\n\tint styleNext = MaskActive(styler.StyleAt(startPos));\n\tint style = MaskActive(initStyle);\n\n\t// restore fold state (if it exists) for prior line\n\tint stateCurrent = 0;\n\tstd::map<Sci_Position,int>::iterator foldStateIterator = foldState.find(lineCurrent-1);\n\tif (foldStateIterator != foldState.end()) {\n\t\tstateCurrent = foldStateIterator->second;\n\t}\n\n\t// remove all foldState entries after lineCurrent-1\n\tfoldStateIterator = foldState.upper_bound(lineCurrent-1);\n\tif (foldStateIterator != foldState.end()) {\n\t\tfoldState.erase(foldStateIterator, foldState.end());\n\t}\n\n\tfor (Sci_PositionU i = startPos; i < endPos; i++) {\n\t\tchar ch = chNext;\n\t\tchNext = styler.SafeGetCharAt(i + 1);\n\t\tint stylePrev = style;\n\t\tstyle = styleNext;\n\t\tstyleNext = MaskActive(styler.StyleAt(i + 1));\n\t\tbool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n\t\tif (!(stateCurrent & protectedFlag)) {\n\t\t\tif (options.foldComment && IsStreamCommentStyle(style)) {\n\t\t\t\tif (!IsStreamCommentStyle(stylePrev)) {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (!IsStreamCommentStyle(styleNext) && !atEOL) {\n\t\t\t\t\t// Comments don't end at end of line and the next character may be unstyled.\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (options.foldComment && atEOL && IsCommentLine(lineCurrent, styler))\n\t\t\t{\n\t\t\t\tif (!IsCommentLine(lineCurrent - 1, styler)\n\t\t\t\t\t&& IsCommentLine(lineCurrent + 1, styler))\n\t\t\t\t\tlevelNext++;\n\t\t\t\telse if (IsCommentLine(lineCurrent - 1, styler)\n\t\t\t\t\t\t && !IsCommentLine(lineCurrent+1, styler))\n\t\t\t\t\tlevelNext--;\n\t\t\t}\n\t\t\tif (options.foldComment && (style == SCE_V_COMMENTLINE)) {\n\t\t\t\tif ((ch == '/') && (chNext == '/')) {\n\t\t\t\t\tchar chNext2 = styler.SafeGetCharAt(i + 2);\n\t\t\t\t\tif (chNext2 == '{') {\n\t\t\t\t\t\tlevelNext++;\n\t\t\t\t\t} else if (chNext2 == '}') {\n\t\t\t\t\t\tlevelNext--;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (ch == '`') {\n\t\t\tSci_PositionU j = i + 1;\n\t\t\twhile ((j < endPos) && IsASpaceOrTab(styler.SafeGetCharAt(j))) {\n\t\t\t\tj++;\n\t\t\t}\n\t\t\tif (styler.Match(j, \"protected\")) {\n\t\t\t\tstateCurrent |= protectedFlag;\n\t\t\t\tlevelNext++;\n\t\t\t} else if (styler.Match(j, \"endprotected\")) {\n\t\t\t\tstateCurrent &= ~protectedFlag;\n\t\t\t\tlevelNext--;\n\t\t\t} else if (!(stateCurrent & protectedFlag) && options.foldPreprocessor && (style == SCE_V_PREPROCESSOR)) {\n\t\t\t\tif (styler.Match(j, \"if\")) {\n\t\t\t\t\tif (options.foldPreprocessorElse) {\n\t\t\t\t\t\t// Measure the minimum before a begin to allow\n\t\t\t\t\t\t// folding on \"end else begin\"\n\t\t\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (options.foldPreprocessorElse && styler.Match(j, \"else\")) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t\t}\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (options.foldPreprocessorElse && styler.Match(j, \"elsif\")) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t\t// Measure the minimum before a begin to allow\n\t\t\t\t\t// folding on \"end else begin\"\n\t\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t\t}\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (styler.Match(j, \"endif\")) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (style == SCE_V_OPERATOR) {\n\t\t\tif (foldAtParenthese) {\n\t\t\t\tif (ch == '(') {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (ch == ')') {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// semicolons terminate external declarations\n\t\t\tif (ch == ';') {\n\t\t\t\t// extern and pure virtual declarations terminated by semicolon\n\t\t\t\tif (stateCurrent & foldExternFlag) {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t\tstateCurrent &= ~foldExternFlag;\n\t\t\t\t}\n\t\t\t\t// wait and disable statements terminated by semicolon\n\t\t\t\tif (stateCurrent & foldWaitDisableFlag) {\n\t\t\t\t\tstateCurrent &= ~foldWaitDisableFlag;\n\t\t\t\t}\n\t\t\t\t// typedef statements terminated by semicolon\n\t\t\t\tif (stateCurrent & typedefFlag) {\n\t\t\t\t\tstateCurrent &= ~typedefFlag;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// wait and disable statements containing '(' will not contain \"fork\" keyword, special processing is not needed\n\t\t\tif (ch == '(') {\n\t\t\t\tif (stateCurrent & foldWaitDisableFlag) {\n\t\t\t\t\tstateCurrent &= ~foldWaitDisableFlag;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (style == SCE_V_OPERATOR) {\n\t\t\tif (foldAtBrace) {\n\t\t\t\tif (ch == '{') {\n\t\t\t\t\tlevelNext++;\n\t\t\t\t} else if (ch == '}') {\n\t\t\t\t\tlevelNext--;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (style == SCE_V_WORD && stylePrev != SCE_V_WORD) {\n\t\t\tSci_PositionU j = i;\n\t\t\tif (styler.Match(j, \"case\") ||\n\t\t\t\tstyler.Match(j, \"casex\") ||\n\t\t\t\tstyler.Match(j, \"casez\") ||\n\t\t\t\tstyler.Match(j, \"covergroup\") ||\n\t\t\t\tstyler.Match(j, \"function\") ||\n\t\t\t\tstyler.Match(j, \"generate\") ||\n\t\t\t\tstyler.Match(j, \"interface\") ||\n\t\t\t\tstyler.Match(j, \"package\") ||\n\t\t\t\tstyler.Match(j, \"primitive\") ||\n\t\t\t\tstyler.Match(j, \"program\") ||\n\t\t\t\tstyler.Match(j, \"sequence\") ||\n\t\t\t\tstyler.Match(j, \"specify\") ||\n\t\t\t\tstyler.Match(j, \"table\") ||\n\t\t\t\tstyler.Match(j, \"task\") ||\n\t\t\t\t(styler.Match(j, \"module\") && options.foldAtModule)) {\n\t\t\t\tlevelNext++;\n\t\t\t} else if (styler.Match(j, \"begin\")) {\n\t\t\t\t// Measure the minimum before a begin to allow\n\t\t\t\t// folding on \"end else begin\"\n\t\t\t\tif (levelMinCurrent > levelNext) {\n\t\t\t\t\tlevelMinCurrent = levelNext;\n\t\t\t\t}\n\t\t\t\tlevelNext++;\n\t\t\t} else if (styler.Match(j, \"class\")) {\n\t\t\t\t// class does not introduce a block when used in a typedef statement\n\t\t\t\tif (!(stateCurrent & typedefFlag))\n\t\t\t\t\tlevelNext++;\n\t\t\t} else if (styler.Match(j, \"fork\")) {\n\t\t\t\t// fork does not introduce a block when used in a wait or disable statement\n\t\t\t\tif (stateCurrent & foldWaitDisableFlag) {\n\t\t\t\t\tstateCurrent &= ~foldWaitDisableFlag;\n\t\t\t\t} else\n\t\t\t\t\tlevelNext++;\n\t\t\t} else if (styler.Match(j, \"endcase\") ||\n\t\t\t\tstyler.Match(j, \"endclass\") ||\n\t\t\t\tstyler.Match(j, \"endfunction\") ||\n\t\t\t\tstyler.Match(j, \"endgenerate\") ||\n\t\t\t\tstyler.Match(j, \"endgroup\") ||\n\t\t\t\tstyler.Match(j, \"endinterface\") ||\n\t\t\t\tstyler.Match(j, \"endpackage\") ||\n\t\t\t\tstyler.Match(j, \"endprimitive\") ||\n\t\t\t\tstyler.Match(j, \"endprogram\") ||\n\t\t\t\tstyler.Match(j, \"endsequence\") ||\n\t\t\t\tstyler.Match(j, \"endspecify\") ||\n\t\t\t\tstyler.Match(j, \"endtable\") ||\n\t\t\t\tstyler.Match(j, \"endtask\") ||\n\t\t\t\tstyler.Match(j, \"join\") ||\n\t\t\t\tstyler.Match(j, \"join_any\") ||\n\t\t\t\tstyler.Match(j, \"join_none\") ||\n\t\t\t\t(styler.Match(j, \"endmodule\") && options.foldAtModule) ||\n\t\t\t\t(styler.Match(j, \"end\") && !IsAWordChar(styler.SafeGetCharAt(j + 3)))) {\n\t\t\t\tlevelNext--;\n\t\t\t} else if (styler.Match(j, \"extern\") ||\n\t\t\t\tstyler.Match(j, \"pure\")) {\n\t\t\t\t// extern and pure virtual functions/tasks are terminated by ';' not endfunction/endtask\n\t\t\t\tstateCurrent |= foldExternFlag;\n\t\t\t} else if (styler.Match(j, \"disable\") ||\n\t\t\t\tstyler.Match(j, \"wait\")) {\n\t\t\t\t// fork does not introduce a block when used in a wait or disable statement\n\t\t\t\tstateCurrent |= foldWaitDisableFlag;\n\t\t\t} else if (styler.Match(j, \"typedef\")) {\n\t\t\t\tstateCurrent |= typedefFlag;\n\t\t\t}\n\t\t}\n\t\tif (atEOL) {\n\t\t\tint levelUse = levelCurrent;\n\t\t\tif (options.foldAtElse||options.foldPreprocessorElse) {\n\t\t\t\tlevelUse = levelMinCurrent;\n\t\t\t}\n\t\t\tint lev = levelUse | levelNext << 16;\n\t\t\tif (visibleChars == 0 && options.foldCompact)\n\t\t\t\tlev |= SC_FOLDLEVELWHITEFLAG;\n\t\t\tif (levelUse < levelNext)\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (stateCurrent) {\n\t\t\t\tfoldState[lineCurrent] = stateCurrent;\n\t\t\t}\n\t\t\tif (lev != styler.LevelAt(lineCurrent)) {\n\t\t\t\tstyler.SetLevel(lineCurrent, lev);\n\t\t\t}\n\t\t\tlineCurrent++;\n\t\t\tlevelCurrent = levelNext;\n\t\t\tlevelMinCurrent = levelCurrent;\n\t\t\tvisibleChars = 0;\n\t\t}\n\t\tif (!isspacechar(ch))\n\t\t\tvisibleChars++;\n\t}\n}\n\nstd::vector<std::string> LexerVerilog::Tokenize(const std::string &expr) const {\n\t// Break into tokens\n\tstd::vector<std::string> tokens;\n\tconst char *cp = expr.c_str();\n\twhile (*cp) {\n\t\tstd::string word;\n\t\tif (setWord.Contains(static_cast<unsigned char>(*cp))) {\n\t\t\t// Identifiers and numbers\n\t\t\twhile (setWord.Contains(static_cast<unsigned char>(*cp))) {\n\t\t\t\tword += *cp;\n\t\t\t\tcp++;\n\t\t\t}\n\t\t} else if (IsSpaceOrTab(*cp)) {\n\t\t\twhile (IsSpaceOrTab(*cp)) {\n\t\t\t\tcp++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t} else {\n\t\t\t// Should handle strings, characters, and comments here\n\t\t\tword += *cp;\n\t\t\tcp++;\n\t\t}\n\t\ttokens.push_back(word);\n\t}\n\treturn tokens;\n}\n\nstatic const char * const verilogWordLists[] = {\n            \"Primary keywords and identifiers\",\n            \"Secondary keywords and identifiers\",\n            \"System Tasks\",\n            \"User defined tasks and identifiers\",\n            \"Documentation comment keywords\",\n            \"Preprocessor definitions\",\n            0,\n        };\n\nLexerModule lmVerilog(SCLEX_VERILOG, LexerVerilog::LexerFactoryVerilog, \"verilog\", verilogWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexVisualProlog.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexVisualProlog.cxx\n** Lexer for Visual Prolog.\n**/\n// Author Thomas Linder Puls, Prolog Development Denter A/S, http://www.visual-prolog.com\n// Based on Lexer for C++, C, Java, and JavaScript.\n// Copyright 1998-2005 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// The line state contains:\n// In SCE_VISUALPROLOG_STRING_VERBATIM_EOL (i.e. multiline string literal): The closingQuote.\n// else (for SCE_VISUALPROLOG_COMMENT_BLOCK): The comment nesting level\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#ifdef _MSC_VER\n#pragma warning(disable: 4786)\n#endif\n\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"CharacterCategory.h\"\n#include \"LexerModule.h\"\n#include \"OptionSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Options used for LexerVisualProlog\nstruct OptionsVisualProlog {\n    OptionsVisualProlog() {\n    }\n};\n\nstatic const char *const visualPrologWordLists[] = {\n    \"Major keywords (class, predicates, ...)\",\n    \"Minor keywords (if, then, try, ...)\",\n    \"Directive keywords without the '#' (include, requires, ...)\",\n    \"Documentation keywords without the '@' (short, detail, ...)\",\n    0,\n};\n\nstruct OptionSetVisualProlog : public OptionSet<OptionsVisualProlog> {\n    OptionSetVisualProlog() {\n        DefineWordListSets(visualPrologWordLists);\n    }\n};\n\nclass LexerVisualProlog : public ILexer {\n    WordList majorKeywords;\n    WordList minorKeywords;\n    WordList directiveKeywords;\n    WordList docKeywords;\n    OptionsVisualProlog options;\n    OptionSetVisualProlog osVisualProlog;\npublic:\n    LexerVisualProlog() {\n    }\n    virtual ~LexerVisualProlog() {\n    }\n    void SCI_METHOD Release() {\n        delete this;\n    }\n    int SCI_METHOD Version() const {\n        return lvOriginal;\n    }\n    const char * SCI_METHOD PropertyNames() {\n        return osVisualProlog.PropertyNames();\n    }\n    int SCI_METHOD PropertyType(const char *name) {\n        return osVisualProlog.PropertyType(name);\n    }\n    const char * SCI_METHOD DescribeProperty(const char *name) {\n        return osVisualProlog.DescribeProperty(name);\n    }\n    Sci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n    const char * SCI_METHOD DescribeWordListSets() {\n        return osVisualProlog.DescribeWordListSets();\n    }\n    Sci_Position SCI_METHOD WordListSet(int n, const char *wl);\n    void SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n    void SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess);\n\n    void * SCI_METHOD PrivateCall(int, void *) {\n        return 0;\n    }\n\n    static ILexer *LexerFactoryVisualProlog() {\n        return new LexerVisualProlog();\n    }\n};\n\nSci_Position SCI_METHOD LexerVisualProlog::PropertySet(const char *key, const char *val) {\n    if (osVisualProlog.PropertySet(&options, key, val)) {\n        return 0;\n    }\n    return -1;\n}\n\nSci_Position SCI_METHOD LexerVisualProlog::WordListSet(int n, const char *wl) {\n    WordList *wordListN = 0;\n    switch (n) {\n    case 0:\n        wordListN = &majorKeywords;\n        break;\n    case 1:\n        wordListN = &minorKeywords;\n        break;\n    case 2:\n        wordListN = &directiveKeywords;\n        break;\n    case 3:\n        wordListN = &docKeywords;\n        break;\n    }\n    Sci_Position firstModification = -1;\n    if (wordListN) {\n        WordList wlNew;\n        wlNew.Set(wl);\n        if (*wordListN != wlNew) {\n            wordListN->Set(wl);\n            firstModification = 0;\n        }\n    }\n    return firstModification;\n}\n\n// Functor used to truncate history\nstruct After {\n    Sci_Position line;\n    After(Sci_Position line_) : line(line_) {}\n};\n\nstatic bool isLowerLetter(int ch){\n    return ccLl == CategoriseCharacter(ch);\n}\n\nstatic bool isUpperLetter(int ch){\n    return ccLu == CategoriseCharacter(ch);\n}\n\nstatic bool isAlphaNum(int ch){\n    CharacterCategory cc = CategoriseCharacter(ch);\n    return (ccLu == cc || ccLl == cc || ccLt == cc || ccLm == cc || ccLo == cc || ccNd == cc || ccNl == cc || ccNo == cc);\n}\n\nstatic bool isStringVerbatimOpenClose(int ch){\n    CharacterCategory cc = CategoriseCharacter(ch);\n    return (ccPc <= cc && cc <= ccSo);\n}\n\nstatic bool isIdChar(int ch){\n    return ('_') == ch || isAlphaNum(ch);\n}\n\nstatic bool isOpenStringVerbatim(int next, int &closingQuote){\n    switch (next) {\n    case L'<':\n        closingQuote = L'>';\n        return true;\n    case L'>':\n        closingQuote = L'<';\n        return true;\n    case L'(':\n        closingQuote = L')';\n        return true;\n    case L')':\n        closingQuote = L'(';\n        return true;\n    case L'[':\n        closingQuote = L']';\n        return true;\n    case L']':\n        closingQuote = L'[';\n        return true;\n    case L'{':\n        closingQuote = L'}';\n        return true;\n    case L'}':\n        closingQuote = L'{';\n        return true;\n    case L'_':\n    case L'.':\n    case L',':\n    case L';':\n        return false;\n    default:\n        if (isStringVerbatimOpenClose(next)) {\n            closingQuote = next;\n            return true;\n        } else {\n\t\t\treturn false;\n        }\n    }\n}\n\n// Look ahead to see which colour \"end\" should have (takes colour after the following keyword)\nstatic void endLookAhead(char s[], LexAccessor &styler, Sci_Position start) {\n    char ch = styler.SafeGetCharAt(start, '\\n');\n    while (' ' == ch) {\n        start++;\n        ch = styler.SafeGetCharAt(start, '\\n');\n    }\n    Sci_Position i = 0;\n    while (i < 100 && isLowerLetter(ch)){\n        s[i] = ch;\n        i++;\n        ch = styler.SafeGetCharAt(start + i, '\\n');\n    }\n    s[i] = '\\0';\n}\n\nstatic void forwardEscapeLiteral(StyleContext &sc, int EscapeState) {\n    sc.Forward();\n    if (sc.Match('\"') || sc.Match('\\'') || sc.Match('\\\\') || sc.Match('n') || sc.Match('l') || sc.Match('r') || sc.Match('t')) {\n        sc.ChangeState(EscapeState);\n    } else if (sc.Match('u')) {\n        if (IsADigit(sc.chNext, 16)) {\n            sc.Forward();\n            if (IsADigit(sc.chNext, 16)) {\n                sc.Forward();\n                if (IsADigit(sc.chNext, 16)) {\n                    sc.Forward();\n                    if (IsADigit(sc.chNext, 16)) {\n                        sc.Forward();\n                        sc.ChangeState(EscapeState);\n                    }\n                }\n            }\n        }\n    }\n}\n\nvoid SCI_METHOD LexerVisualProlog::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n    LexAccessor styler(pAccess);\n    CharacterSet setDoxygen(CharacterSet::setAlpha, \"\");\n    CharacterSet setNumber(CharacterSet::setNone, \"0123456789abcdefABCDEFxoXO\");\n\n    StyleContext sc(startPos, length, initStyle, styler, 0x7f);\n\n    int styleBeforeDocKeyword = SCE_VISUALPROLOG_DEFAULT;\n    Sci_Position currentLine = styler.GetLine(startPos);\n\n    int closingQuote = '\"';\n    int nestLevel = 0;\n    if (currentLine >= 1)\n    {\n        nestLevel = styler.GetLineState(currentLine - 1);\n        closingQuote = nestLevel;\n    }\n\n    // Truncate ppDefineHistory before current line\n\n    for (; sc.More(); sc.Forward()) {\n\n        // Determine if the current state should terminate.\n        switch (sc.state) {\n        case SCE_VISUALPROLOG_OPERATOR:\n            sc.SetState(SCE_VISUALPROLOG_DEFAULT);\n            break;\n        case SCE_VISUALPROLOG_NUMBER:\n            // We accept almost anything because of hex. and number suffixes\n            if (!(setNumber.Contains(sc.ch)) || (sc.Match('.') && IsADigit(sc.chNext))) {\n                sc.SetState(SCE_VISUALPROLOG_DEFAULT);\n            }\n            break;\n        case SCE_VISUALPROLOG_IDENTIFIER:\n            if (!isIdChar(sc.ch)) {\n                char s[1000];\n                sc.GetCurrent(s, sizeof(s));\n                if (0 == strcmp(s, \"end\")) {\n                    endLookAhead(s, styler, sc.currentPos);\n                }\n                if (majorKeywords.InList(s)) {\n                    sc.ChangeState(SCE_VISUALPROLOG_KEY_MAJOR);\n                } else if (minorKeywords.InList(s)) {\n                    sc.ChangeState(SCE_VISUALPROLOG_KEY_MINOR);\n                }\n                sc.SetState(SCE_VISUALPROLOG_DEFAULT);\n            }\n            break;\n        case SCE_VISUALPROLOG_VARIABLE:\n        case SCE_VISUALPROLOG_ANONYMOUS:\n            if (!isIdChar(sc.ch)) {\n                sc.SetState(SCE_VISUALPROLOG_DEFAULT);\n            }\n            break;\n        case SCE_VISUALPROLOG_KEY_DIRECTIVE:\n            if (!isLowerLetter(sc.ch)) {\n                char s[1000];\n                sc.GetCurrent(s, sizeof(s));\n                if (!directiveKeywords.InList(s+1)) {\n                    sc.ChangeState(SCE_VISUALPROLOG_IDENTIFIER);\n                }\n                sc.SetState(SCE_VISUALPROLOG_DEFAULT);\n            }\n            break;\n        case SCE_VISUALPROLOG_COMMENT_BLOCK:\n            if (sc.Match('*', '/')) {\n                sc.Forward();\n                nestLevel--;\n                int nextState = (nestLevel == 0) ? SCE_VISUALPROLOG_DEFAULT : SCE_VISUALPROLOG_COMMENT_BLOCK;\n                sc.ForwardSetState(nextState);\n            } else if (sc.Match('/', '*')) {\n                sc.Forward();\n                nestLevel++;\n            } else if (sc.Match('@')) {\n                styleBeforeDocKeyword = sc.state;\n                sc.SetState(SCE_VISUALPROLOG_COMMENT_KEY_ERROR);\n            }\n            break;\n        case SCE_VISUALPROLOG_COMMENT_LINE:\n            if (sc.atLineEnd) {\n                int nextState = (nestLevel == 0) ? SCE_VISUALPROLOG_DEFAULT : SCE_VISUALPROLOG_COMMENT_BLOCK;\n                sc.SetState(nextState);\n            } else if (sc.Match('@')) {\n                styleBeforeDocKeyword = sc.state;\n                sc.SetState(SCE_VISUALPROLOG_COMMENT_KEY_ERROR);\n            }\n            break;\n        case SCE_VISUALPROLOG_COMMENT_KEY_ERROR:\n            if (!setDoxygen.Contains(sc.ch) || sc.atLineEnd) {\n                char s[1000];\n                sc.GetCurrent(s, sizeof(s));\n                if (docKeywords.InList(s+1)) {\n                    sc.ChangeState(SCE_VISUALPROLOG_COMMENT_KEY);\n                }\n                if (SCE_VISUALPROLOG_COMMENT_LINE == styleBeforeDocKeyword && sc.atLineEnd) {\n                    // end line comment\n                    int nextState = (nestLevel == 0) ? SCE_VISUALPROLOG_DEFAULT : SCE_VISUALPROLOG_COMMENT_BLOCK;\n                    sc.SetState(nextState);\n                } else {\n                    sc.SetState(styleBeforeDocKeyword);\n                    if (SCE_VISUALPROLOG_COMMENT_BLOCK == styleBeforeDocKeyword && sc.Match('*', '/')) {\n                        // we have consumed the '*' if it comes immediately after the docKeyword\n                        sc.Forward();\n                        sc.Forward();\n                        nestLevel--;\n                        if (0 == nestLevel) {\n                            sc.SetState(SCE_VISUALPROLOG_DEFAULT);\n                        }\n                    }\n                }\n            }\n            break;\n        case SCE_VISUALPROLOG_STRING_ESCAPE:\n        case SCE_VISUALPROLOG_STRING_ESCAPE_ERROR:\n            // return to SCE_VISUALPROLOG_STRING and treat as such (fall-through)\n            sc.SetState(SCE_VISUALPROLOG_STRING);\n        case SCE_VISUALPROLOG_STRING:\n            if (sc.atLineEnd) {\n                sc.SetState(SCE_VISUALPROLOG_STRING_EOL_OPEN);\n            } else if (sc.Match(closingQuote)) {\n                sc.ForwardSetState(SCE_VISUALPROLOG_DEFAULT);\n            } else if (sc.Match('\\\\')) {\n                sc.SetState(SCE_VISUALPROLOG_STRING_ESCAPE_ERROR);\n                forwardEscapeLiteral(sc, SCE_VISUALPROLOG_STRING_ESCAPE);\n            }\n            break;\n        case SCE_VISUALPROLOG_STRING_EOL_OPEN:\n            if (sc.atLineStart) {\n                sc.SetState(SCE_VISUALPROLOG_DEFAULT);\n            }\n            break;\n        case SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL:\n        case SCE_VISUALPROLOG_STRING_VERBATIM_EOL:\n            // return to SCE_VISUALPROLOG_STRING_VERBATIM and treat as such (fall-through)\n            sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM);\n        case SCE_VISUALPROLOG_STRING_VERBATIM:\n            if (sc.atLineEnd) {\n                sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM_EOL);\n            } else if (sc.Match(closingQuote)) {\n                if (closingQuote == sc.chNext) {\n                    sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM_SPECIAL);\n                    sc.Forward();\n                } else {\n                    sc.ForwardSetState(SCE_VISUALPROLOG_DEFAULT);\n                }\n            }\n            break;\n        }\n\n        if (sc.atLineEnd) {\n            // Update the line state, so it can be seen by next line\n            int lineState = 0;\n            if (SCE_VISUALPROLOG_STRING_VERBATIM_EOL == sc.state) {\n                lineState = closingQuote;\n            } else if (SCE_VISUALPROLOG_COMMENT_BLOCK == sc.state) {\n                lineState = nestLevel;\n            }\n            styler.SetLineState(currentLine, lineState);\n            currentLine++;\n        }\n\n        // Determine if a new state should be entered.\n        if (sc.state == SCE_VISUALPROLOG_DEFAULT) {\n            if (sc.Match('@') && isOpenStringVerbatim(sc.chNext, closingQuote)) {\n                sc.SetState(SCE_VISUALPROLOG_STRING_VERBATIM);\n                sc.Forward();\n            } else if (IsADigit(sc.ch) || (sc.Match('.') && IsADigit(sc.chNext))) {\n                sc.SetState(SCE_VISUALPROLOG_NUMBER);\n            } else if (isLowerLetter(sc.ch)) {\n                sc.SetState(SCE_VISUALPROLOG_IDENTIFIER);\n            } else if (isUpperLetter(sc.ch)) {\n                sc.SetState(SCE_VISUALPROLOG_VARIABLE);\n            } else if (sc.Match('_')) {\n                sc.SetState(SCE_VISUALPROLOG_ANONYMOUS);\n            } else if (sc.Match('/', '*')) {\n                sc.SetState(SCE_VISUALPROLOG_COMMENT_BLOCK);\n                nestLevel = 1;\n                sc.Forward();\t// Eat the * so it isn't used for the end of the comment\n            } else if (sc.Match('%')) {\n                sc.SetState(SCE_VISUALPROLOG_COMMENT_LINE);\n            } else if (sc.Match('\\'')) {\n                closingQuote = '\\'';\n                sc.SetState(SCE_VISUALPROLOG_STRING);\n            } else if (sc.Match('\"')) {\n                closingQuote = '\"';\n                sc.SetState(SCE_VISUALPROLOG_STRING);\n            } else if (sc.Match('#')) {\n                sc.SetState(SCE_VISUALPROLOG_KEY_DIRECTIVE);\n            } else if (isoperator(static_cast<char>(sc.ch)) || sc.Match('\\\\')) {\n                sc.SetState(SCE_VISUALPROLOG_OPERATOR);\n            }\n        }\n\n    }\n    sc.Complete();\n    styler.Flush();\n}\n\n// Store both the current line's fold level and the next lines in the\n// level store to make it easy to pick up with each increment\n// and to make it possible to fiddle the current level for \"} else {\".\n\nvoid SCI_METHOD LexerVisualProlog::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\n    LexAccessor styler(pAccess);\n\n    Sci_PositionU endPos = startPos + length;\n    int visibleChars = 0;\n    Sci_Position currentLine = styler.GetLine(startPos);\n    int levelCurrent = SC_FOLDLEVELBASE;\n    if (currentLine > 0)\n        levelCurrent = styler.LevelAt(currentLine-1) >> 16;\n    int levelMinCurrent = levelCurrent;\n    int levelNext = levelCurrent;\n    char chNext = styler[startPos];\n    int styleNext = styler.StyleAt(startPos);\n    int style = initStyle;\n    for (Sci_PositionU i = startPos; i < endPos; i++) {\n        char ch = chNext;\n        chNext = styler.SafeGetCharAt(i + 1);\n        style = styleNext;\n        styleNext = styler.StyleAt(i + 1);\n        bool atEOL = (ch == '\\r' && chNext != '\\n') || (ch == '\\n');\n        if (style == SCE_VISUALPROLOG_OPERATOR) {\n            if (ch == '{') {\n                // Measure the minimum before a '{' to allow\n                // folding on \"} else {\"\n                if (levelMinCurrent > levelNext) {\n                    levelMinCurrent = levelNext;\n                }\n                levelNext++;\n            } else if (ch == '}') {\n                levelNext--;\n            }\n        }\n        if (!IsASpace(ch))\n            visibleChars++;\n        if (atEOL || (i == endPos-1)) {\n            int levelUse = levelCurrent;\n            int lev = levelUse | levelNext << 16;\n            if (levelUse < levelNext)\n                lev |= SC_FOLDLEVELHEADERFLAG;\n            if (lev != styler.LevelAt(currentLine)) {\n                styler.SetLevel(currentLine, lev);\n            }\n            currentLine++;\n            levelCurrent = levelNext;\n            levelMinCurrent = levelCurrent;\n            if (atEOL && (i == static_cast<Sci_PositionU>(styler.Length()-1))) {\n                // There is an empty line at end of file so give it same level and empty\n                styler.SetLevel(currentLine, (levelCurrent | levelCurrent << 16) | SC_FOLDLEVELWHITEFLAG);\n            }\n            visibleChars = 0;\n        }\n    }\n}\n\nLexerModule lmVisualProlog(SCLEX_VISUALPROLOG, LexerVisualProlog::LexerFactoryVisualProlog, \"visualprolog\", visualPrologWordLists);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/LexYAML.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexYAML.cxx\n ** Lexer for YAML.\n **/\n// Copyright 2003- by Sean O'Dell <sean@celsoft.com>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n#include \"LexerModule.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic const char * const yamlWordListDesc[] = {\n\t\"Keywords\",\n\t0\n};\n\nstatic inline bool AtEOL(Accessor &styler, Sci_PositionU i) {\n\treturn (styler[i] == '\\n') ||\n\t\t((styler[i] == '\\r') && (styler.SafeGetCharAt(i + 1) != '\\n'));\n}\n\nstatic unsigned int SpaceCount(char* lineBuffer) {\n\tif (lineBuffer == NULL)\n\t\treturn 0;\n\n\tchar* headBuffer = lineBuffer;\n\n\twhile (*headBuffer == ' ')\n\t\theadBuffer++;\n\n\treturn static_cast<unsigned int>(headBuffer - lineBuffer);\n}\n\nstatic bool KeywordAtChar(char* lineBuffer, char* startComment, const WordList &keywords) {\n\tif (lineBuffer == NULL || startComment <= lineBuffer)\n\t\treturn false;\n\tchar* endValue = startComment - 1;\n\twhile (endValue >= lineBuffer && *endValue == ' ')\n\t\tendValue--;\n\tSci_PositionU len = static_cast<Sci_PositionU>(endValue - lineBuffer) + 1;\n\tchar s[100];\n\tif (len > (sizeof(s) / sizeof(s[0]) - 1))\n\t\treturn false;\n\tstrncpy(s, lineBuffer, len);\n\ts[len] = '\\0';\n\treturn (keywords.InList(s));\n}\n\n#define YAML_STATE_BITSIZE\t\t16\n#define YAML_STATE_MASK\t\t\t(0xFFFF0000)\n#define YAML_STATE_DOCUMENT\t\t(1 << YAML_STATE_BITSIZE)\n#define YAML_STATE_VALUE\t\t(2 << YAML_STATE_BITSIZE)\n#define YAML_STATE_COMMENT\t\t(3 << YAML_STATE_BITSIZE)\n#define YAML_STATE_TEXT_PARENT\t(4 << YAML_STATE_BITSIZE)\n#define YAML_STATE_TEXT\t\t\t(5 << YAML_STATE_BITSIZE)\n\nstatic void ColouriseYAMLLine(\n\tchar *lineBuffer,\n\tSci_PositionU currentLine,\n\tSci_PositionU lengthLine,\n\tSci_PositionU startLine,\n\tSci_PositionU endPos,\n\tWordList &keywords,\n\tAccessor &styler) {\n\n\tSci_PositionU i = 0;\n\tbool bInQuotes = false;\n\tunsigned int indentAmount = SpaceCount(lineBuffer);\n\n\tif (currentLine > 0) {\n\t\tint parentLineState = styler.GetLineState(currentLine - 1);\n\n\t\tif ((parentLineState&YAML_STATE_MASK) == YAML_STATE_TEXT || (parentLineState&YAML_STATE_MASK) == YAML_STATE_TEXT_PARENT) {\n\t\t\tunsigned int parentIndentAmount = parentLineState&(~YAML_STATE_MASK);\n\t\t\tif (indentAmount > parentIndentAmount) {\n\t\t\t\tstyler.SetLineState(currentLine, YAML_STATE_TEXT | parentIndentAmount);\n\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_TEXT);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\tstyler.SetLineState(currentLine, 0);\n\tif (strncmp(lineBuffer, \"---\", 3) == 0) {\t// Document marker\n\t\tstyler.SetLineState(currentLine, YAML_STATE_DOCUMENT);\n\t\tstyler.ColourTo(endPos, SCE_YAML_DOCUMENT);\n\t\treturn;\n\t}\n\t// Skip initial spaces\n\twhile ((i < lengthLine) && lineBuffer[i] == ' ') { // YAML always uses space, never TABS or anything else\n\t\ti++;\n\t}\n\tif (lineBuffer[i] == '\\t') { // if we skipped all spaces, and we are NOT inside a text block, this is wrong\n\t\tstyler.ColourTo(endPos, SCE_YAML_ERROR);\n\t\treturn;\n\t}\n\tif (lineBuffer[i] == '#') {\t// Comment\n\t\tstyler.SetLineState(currentLine, YAML_STATE_COMMENT);\n\t\tstyler.ColourTo(endPos, SCE_YAML_COMMENT);\n\t\treturn;\n\t}\n\twhile (i < lengthLine) {\n\t\tif (lineBuffer[i] == '\\'' || lineBuffer[i] == '\\\"') {\n\t\t\tbInQuotes = !bInQuotes;\n\t\t} else if (lineBuffer[i] == ':' && !bInQuotes) {\n\t\t\tstyler.ColourTo(startLine + i - 1, SCE_YAML_IDENTIFIER);\n\t\t\tstyler.ColourTo(startLine + i, SCE_YAML_OPERATOR);\n\t\t\t// Non-folding scalar\n\t\t\ti++;\n\t\t\twhile ((i < lengthLine) && isspacechar(lineBuffer[i]))\n\t\t\t\ti++;\n\t\t\tSci_PositionU endValue = lengthLine - 1;\n\t\t\twhile ((endValue >= i) && isspacechar(lineBuffer[endValue]))\n\t\t\t\tendValue--;\n\t\t\tlineBuffer[endValue + 1] = '\\0';\n\t\t\tif (lineBuffer[i] == '|' || lineBuffer[i] == '>') {\n\t\t\t\ti++;\n\t\t\t\tif (lineBuffer[i] == '+' || lineBuffer[i] == '-')\n\t\t\t\t\ti++;\n\t\t\t\twhile ((i < lengthLine) && isspacechar(lineBuffer[i]))\n\t\t\t\t\ti++;\n\t\t\t\tif (lineBuffer[i] == '\\0') {\n\t\t\t\t\tstyler.SetLineState(currentLine, YAML_STATE_TEXT_PARENT | indentAmount);\n\t\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_DEFAULT);\n\t\t\t\t\treturn;\n\t\t\t\t} else if (lineBuffer[i] == '#') {\n\t\t\t\t\tstyler.SetLineState(currentLine, YAML_STATE_TEXT_PARENT | indentAmount);\n\t\t\t\t\tstyler.ColourTo(startLine + i - 1, SCE_YAML_DEFAULT);\n\t\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_COMMENT);\n\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_ERROR);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else if (lineBuffer[i] == '#') {\n\t\t\t\tstyler.ColourTo(startLine + i - 1, SCE_YAML_DEFAULT);\n\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_COMMENT);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tSci_PositionU startComment = i;\n\t\t\tbInQuotes = false;\n\t\t\twhile (startComment < lengthLine) { // Comment must be space padded\n\t\t\t\tif (lineBuffer[startComment] == '\\'' || lineBuffer[startComment] == '\\\"')\n\t\t\t\t\tbInQuotes = !bInQuotes;\n\t\t\t\tif (lineBuffer[startComment] == '#' && isspacechar(lineBuffer[startComment - 1]) && !bInQuotes)\n\t\t\t\t\tbreak;\n\t\t\t\tstartComment++;\n\t\t\t}\n\t\t\tstyler.SetLineState(currentLine, YAML_STATE_VALUE);\n\t\t\tif (lineBuffer[i] == '&' || lineBuffer[i] == '*') {\n\t\t\t\tstyler.ColourTo(startLine + startComment - 1, SCE_YAML_REFERENCE);\n\t\t\t\tif (startComment < lengthLine)\n\t\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_COMMENT);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (KeywordAtChar(&lineBuffer[i], &lineBuffer[startComment], keywords)) { // Convertible value (true/false, etc.)\n\t\t\t\tstyler.ColourTo(startLine + startComment - 1, SCE_YAML_KEYWORD);\n\t\t\t\tif (startComment < lengthLine)\n\t\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_COMMENT);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tSci_PositionU i2 = i;\n\t\t\twhile ((i < startComment) && lineBuffer[i]) {\n\t\t\t\tif (!(IsASCII(lineBuffer[i]) && isdigit(lineBuffer[i])) && lineBuffer[i] != '-'\n\t\t\t\t        && lineBuffer[i] != '.' && lineBuffer[i] != ',' && lineBuffer[i] != ' ') {\n\t\t\t\t\tstyler.ColourTo(startLine + startComment - 1, SCE_YAML_DEFAULT);\n\t\t\t\t\tif (startComment < lengthLine)\n\t\t\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_COMMENT);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tif (i > i2) {\n\t\t\t\tstyler.ColourTo(startLine + startComment - 1, SCE_YAML_NUMBER);\n\t\t\t\tif (startComment < lengthLine)\n\t\t\t\t\tstyler.ColourTo(endPos, SCE_YAML_COMMENT);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tbreak; // shouldn't get here, but just in case, the rest of the line is coloured the default\n\t\t}\n\t\ti++;\n\t}\n\tstyler.ColourTo(endPos, SCE_YAML_DEFAULT);\n}\n\nstatic void ColouriseYAMLDoc(Sci_PositionU startPos, Sci_Position length, int, WordList *keywordLists[], Accessor &styler) {\n\tchar lineBuffer[1024] = \"\";\n\tstyler.StartAt(startPos);\n\tstyler.StartSegment(startPos);\n\tSci_PositionU linePos = 0;\n\tSci_PositionU startLine = startPos;\n\tSci_PositionU endPos = startPos + length;\n\tSci_PositionU maxPos = styler.Length();\n\tSci_PositionU lineCurrent = styler.GetLine(startPos);\n\n\tfor (Sci_PositionU i = startPos; i < maxPos && i < endPos; i++) {\n\t\tlineBuffer[linePos++] = styler[i];\n\t\tif (AtEOL(styler, i) || (linePos >= sizeof(lineBuffer) - 1)) {\n\t\t\t// End of line (or of line buffer) met, colourise it\n\t\t\tlineBuffer[linePos] = '\\0';\n\t\t\tColouriseYAMLLine(lineBuffer, lineCurrent, linePos, startLine, i, *keywordLists[0], styler);\n\t\t\tlinePos = 0;\n\t\t\tstartLine = i + 1;\n\t\t\tlineCurrent++;\n\t\t}\n\t}\n\tif (linePos > 0) {\t// Last line does not have ending characters\n\t\tColouriseYAMLLine(lineBuffer, lineCurrent, linePos, startLine, startPos + length - 1, *keywordLists[0], styler);\n\t}\n}\n\nstatic bool IsCommentLine(Sci_Position line, Accessor &styler) {\n\tSci_Position pos = styler.LineStart(line);\n\tif (styler[pos] == '#')\n\t\treturn true;\n\treturn false;\n}\n\nstatic void FoldYAMLDoc(Sci_PositionU startPos, Sci_Position length, int /*initStyle - unused*/,\n                      WordList *[], Accessor &styler) {\n\tconst Sci_Position maxPos = startPos + length;\n\tconst Sci_Position maxLines = styler.GetLine(maxPos - 1);             // Requested last line\n\tconst Sci_Position docLines = styler.GetLine(styler.Length() - 1);  // Available last line\n\tconst bool foldComment = styler.GetPropertyInt(\"fold.comment.yaml\") != 0;\n\n\t// Backtrack to previous non-blank line so we can determine indent level\n\t// for any white space lines\n\t// and so we can fix any preceding fold level (which is why we go back\n\t// at least one line in all cases)\n\tint spaceFlags = 0;\n\tSci_Position lineCurrent = styler.GetLine(startPos);\n\tint indentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n\twhile (lineCurrent > 0) {\n\t\tlineCurrent--;\n\t\tindentCurrent = styler.IndentAmount(lineCurrent, &spaceFlags, NULL);\n\t\tif (!(indentCurrent & SC_FOLDLEVELWHITEFLAG) &&\n\t\t        (!IsCommentLine(lineCurrent, styler)))\n\t\t\tbreak;\n\t}\n\tint indentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\n\t// Set up initial loop state\n\tint prevComment = 0;\n\tif (lineCurrent >= 1)\n\t\tprevComment = foldComment && IsCommentLine(lineCurrent - 1, styler);\n\n\t// Process all characters to end of requested range\n\t// or comment that hangs over the end of the range.  Cap processing in all cases\n\t// to end of document (in case of unclosed comment at end).\n\twhile ((lineCurrent <= docLines) && ((lineCurrent <= maxLines) || prevComment)) {\n\n\t\t// Gather info\n\t\tint lev = indentCurrent;\n\t\tSci_Position lineNext = lineCurrent + 1;\n\t\tint indentNext = indentCurrent;\n\t\tif (lineNext <= docLines) {\n\t\t\t// Information about next line is only available if not at end of document\n\t\t\tindentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL);\n\t\t}\n\t\tconst int comment = foldComment && IsCommentLine(lineCurrent, styler);\n\t\tconst int comment_start = (comment && !prevComment && (lineNext <= docLines) &&\n\t\t                           IsCommentLine(lineNext, styler) && (lev > SC_FOLDLEVELBASE));\n\t\tconst int comment_continue = (comment && prevComment);\n\t\tif (!comment)\n\t\t\tindentCurrentLevel = indentCurrent & SC_FOLDLEVELNUMBERMASK;\n\t\tif (indentNext & SC_FOLDLEVELWHITEFLAG)\n\t\t\tindentNext = SC_FOLDLEVELWHITEFLAG | indentCurrentLevel;\n\n\t\tif (comment_start) {\n\t\t\t// Place fold point at start of a block of comments\n\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t} else if (comment_continue) {\n\t\t\t// Add level to rest of lines in the block\n\t\t\tlev = lev + 1;\n\t\t}\n\n\t\t// Skip past any blank lines for next indent level info; we skip also\n\t\t// comments (all comments, not just those starting in column 0)\n\t\t// which effectively folds them into surrounding code rather\n\t\t// than screwing up folding.\n\n\t\twhile ((lineNext < docLines) &&\n\t\t        ((indentNext & SC_FOLDLEVELWHITEFLAG) ||\n\t\t         (lineNext <= docLines && IsCommentLine(lineNext, styler)))) {\n\n\t\t\tlineNext++;\n\t\t\tindentNext = styler.IndentAmount(lineNext, &spaceFlags, NULL);\n\t\t}\n\n\t\tconst int levelAfterComments = indentNext & SC_FOLDLEVELNUMBERMASK;\n\t\tconst int levelBeforeComments = Maximum(indentCurrentLevel,levelAfterComments);\n\n\t\t// Now set all the indent levels on the lines we skipped\n\t\t// Do this from end to start.  Once we encounter one line\n\t\t// which is indented more than the line after the end of\n\t\t// the comment-block, use the level of the block before\n\n\t\tSci_Position skipLine = lineNext;\n\t\tint skipLevel = levelAfterComments;\n\n\t\twhile (--skipLine > lineCurrent) {\n\t\t\tint skipLineIndent = styler.IndentAmount(skipLine, &spaceFlags, NULL);\n\n\t\t\tif ((skipLineIndent & SC_FOLDLEVELNUMBERMASK) > levelAfterComments)\n\t\t\t\tskipLevel = levelBeforeComments;\n\n\t\t\tint whiteFlag = skipLineIndent & SC_FOLDLEVELWHITEFLAG;\n\n\t\t\tstyler.SetLevel(skipLine, skipLevel | whiteFlag);\n\t\t}\n\n\t\t// Set fold header on non-comment line\n\t\tif (!comment && !(indentCurrent & SC_FOLDLEVELWHITEFLAG) ) {\n\t\t\tif ((indentCurrent & SC_FOLDLEVELNUMBERMASK) < (indentNext & SC_FOLDLEVELNUMBERMASK))\n\t\t\t\tlev |= SC_FOLDLEVELHEADERFLAG;\n\t\t}\n\n\t\t// Keep track of block comment state of previous line\n\t\tprevComment = comment_start || comment_continue;\n\n\t\t// Set fold level for this line and move to next line\n\t\tstyler.SetLevel(lineCurrent, lev);\n\t\tindentCurrent = indentNext;\n\t\tlineCurrent = lineNext;\n\t}\n\n\t// NOTE: Cannot set level of last line here because indentCurrent doesn't have\n\t// header flag set; the loop above is crafted to take care of this case!\n\t//styler.SetLevel(lineCurrent, indentCurrent);\n}\n\nLexerModule lmYAML(SCLEX_YAML, ColouriseYAMLDoc, \"yaml\", FoldYAMLDoc, yamlWordListDesc);\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexers/License.txt",
    "content": "License for Scintilla and SciTE\n\nCopyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n\nAll Rights Reserved \n\nPermission to use, copy, modify, and distribute this software and its \ndocumentation for any purpose and without fee is hereby granted, \nprovided that the above copyright notice appear in all copies and that \nboth that copyright notice and this permission notice appear in \nsupporting documentation. \n\nNEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS \nSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY \nAND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY \nSPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES \nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, \nWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER \nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE \nOR PERFORMANCE OF THIS SOFTWARE. "
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/Accessor.cpp",
    "content": "// Scintilla source code edit control\n/** @file Accessor.cxx\n ** Interfaces between Scintilla and lexers.\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nAccessor::Accessor(IDocument *pAccess_, PropSetSimple *pprops_) : LexAccessor(pAccess_), pprops(pprops_) {\n}\n\nint Accessor::GetPropertyInt(const char *key, int defaultValue) const {\n\treturn pprops->GetInt(key, defaultValue);\n}\n\nint Accessor::IndentAmount(Sci_Position line, int *flags, PFNIsCommentLeader pfnIsCommentLeader) {\n\tSci_Position end = Length();\n\tint spaceFlags = 0;\n\n\t// Determines the indentation level of the current line and also checks for consistent\n\t// indentation compared to the previous line.\n\t// Indentation is judged consistent when the indentation whitespace of each line lines\n\t// the same or the indentation of one line is a prefix of the other.\n\n\tSci_Position pos = LineStart(line);\n\tchar ch = (*this)[pos];\n\tint indent = 0;\n\tbool inPrevPrefix = line > 0;\n\tSci_Position posPrev = inPrevPrefix ? LineStart(line-1) : 0;\n\twhile ((ch == ' ' || ch == '\\t') && (pos < end)) {\n\t\tif (inPrevPrefix) {\n\t\t\tchar chPrev = (*this)[posPrev++];\n\t\t\tif (chPrev == ' ' || chPrev == '\\t') {\n\t\t\t\tif (chPrev != ch)\n\t\t\t\t\tspaceFlags |= wsInconsistent;\n\t\t\t} else {\n\t\t\t\tinPrevPrefix = false;\n\t\t\t}\n\t\t}\n\t\tif (ch == ' ') {\n\t\t\tspaceFlags |= wsSpace;\n\t\t\tindent++;\n\t\t} else {\t// Tab\n\t\t\tspaceFlags |= wsTab;\n\t\t\tif (spaceFlags & wsSpace)\n\t\t\t\tspaceFlags |= wsSpaceTab;\n\t\t\tindent = (indent / 8 + 1) * 8;\n\t\t}\n\t\tch = (*this)[++pos];\n\t}\n\n\t*flags = spaceFlags;\n\tindent += SC_FOLDLEVELBASE;\n\t// if completely empty line or the start of a comment...\n\tif ((LineStart(line) == Length()) || (ch == ' ' || ch == '\\t' || ch == '\\n' || ch == '\\r') ||\n\t\t\t(pfnIsCommentLeader && (*pfnIsCommentLeader)(*this, pos, end-pos)))\n\t\treturn indent | SC_FOLDLEVELWHITEFLAG;\n\telse\n\t\treturn indent;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/Accessor.h",
    "content": "// Scintilla source code edit control\n/** @file Accessor.h\n ** Interfaces between Scintilla and lexers.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef ACCESSOR_H\n#define ACCESSOR_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nenum { wsSpace=1, wsTab=2, wsSpaceTab=4, wsInconsistent=8 };\n\nclass Accessor;\nclass WordList;\nclass PropSetSimple;\n\ntypedef bool (*PFNIsCommentLeader)(Accessor &styler, Sci_Position pos, Sci_Position len);\n\nclass Accessor : public LexAccessor {\npublic:\n\tPropSetSimple *pprops;\n\tAccessor(IDocument *pAccess_, PropSetSimple *pprops_);\n\tint GetPropertyInt(const char *, int defaultValue=0) const;\n\tint IndentAmount(Sci_Position line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/CharacterCategory.cpp",
    "content": "// Scintilla source code edit control\n/** @file CharacterCategory.cxx\n ** Returns the Unicode general category of a character.\n ** Table automatically regenerated by scripts/GenerateCharacterCategory.py\n ** Should only be rarely regenerated for new versions of Unicode.\n **/\n// Copyright 2013 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <algorithm>\n\n#include \"StringCopy.h\"\n#include \"CharacterCategory.h\"\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nnamespace {\n\t// Use an unnamed namespace to protect the declarations from name conflicts\n\nconst int catRanges[] = {\n//++Autogenerated -- start of section automatically generated\n// Created with Python 3.3.0,  Unicode 6.1.0\n25,\n1046,\n1073,\n1171,\n1201,\n1293,\n1326,\n1361,\n1394,\n1425,\n1452,\n1489,\n1544,\n1873,\n1938,\n2033,\n2080,\n2925,\n2961,\n2990,\n3028,\n3051,\n3092,\n3105,\n3949,\n3986,\n4014,\n4050,\n4089,\n5142,\n5169,\n5203,\n5333,\n5361,\n5396,\n5429,\n5444,\n5487,\n5522,\n5562,\n5589,\n5620,\n5653,\n5682,\n5706,\n5780,\n5793,\n5841,\n5908,\n5930,\n5956,\n6000,\n6026,\n6129,\n6144,\n6898,\n6912,\n7137,\n7922,\n7937,\n8192,\n8225,\n8256,\n8289,\n8320,\n8353,\n8384,\n8417,\n8448,\n8481,\n8512,\n8545,\n8576,\n8609,\n8640,\n8673,\n8704,\n8737,\n8768,\n8801,\n8832,\n8865,\n8896,\n8929,\n8960,\n8993,\n9024,\n9057,\n9088,\n9121,\n9152,\n9185,\n9216,\n9249,\n9280,\n9313,\n9344,\n9377,\n9408,\n9441,\n9472,\n9505,\n9536,\n9569,\n9600,\n9633,\n9664,\n9697,\n9728,\n9761,\n9792,\n9825,\n9856,\n9889,\n9920,\n9953,\n10016,\n10049,\n10080,\n10113,\n10144,\n10177,\n10208,\n10241,\n10272,\n10305,\n10336,\n10369,\n10400,\n10433,\n10464,\n10497,\n10560,\n10593,\n10624,\n10657,\n10688,\n10721,\n10752,\n10785,\n10816,\n10849,\n10880,\n10913,\n10944,\n10977,\n11008,\n11041,\n11072,\n11105,\n11136,\n11169,\n11200,\n11233,\n11264,\n11297,\n11328,\n11361,\n11392,\n11425,\n11456,\n11489,\n11520,\n11553,\n11584,\n11617,\n11648,\n11681,\n11712,\n11745,\n11776,\n11809,\n11840,\n11873,\n11904,\n11937,\n11968,\n12001,\n12032,\n12097,\n12128,\n12161,\n12192,\n12225,\n12320,\n12385,\n12416,\n12449,\n12480,\n12545,\n12576,\n12673,\n12736,\n12865,\n12896,\n12961,\n12992,\n13089,\n13184,\n13249,\n13280,\n13345,\n13376,\n13409,\n13440,\n13473,\n13504,\n13569,\n13600,\n13633,\n13696,\n13729,\n13760,\n13825,\n13856,\n13953,\n13984,\n14017,\n14048,\n14113,\n14180,\n14208,\n14241,\n14340,\n14464,\n14498,\n14529,\n14560,\n14594,\n14625,\n14656,\n14690,\n14721,\n14752,\n14785,\n14816,\n14849,\n14880,\n14913,\n14944,\n14977,\n15008,\n15041,\n15072,\n15105,\n15136,\n15169,\n15200,\n15233,\n15296,\n15329,\n15360,\n15393,\n15424,\n15457,\n15488,\n15521,\n15552,\n15585,\n15616,\n15649,\n15680,\n15713,\n15744,\n15777,\n15808,\n15841,\n15904,\n15938,\n15969,\n16000,\n16033,\n16064,\n16161,\n16192,\n16225,\n16256,\n16289,\n16320,\n16353,\n16384,\n16417,\n16448,\n16481,\n16512,\n16545,\n16576,\n16609,\n16640,\n16673,\n16704,\n16737,\n16768,\n16801,\n16832,\n16865,\n16896,\n16929,\n16960,\n16993,\n17024,\n17057,\n17088,\n17121,\n17152,\n17185,\n17216,\n17249,\n17280,\n17313,\n17344,\n17377,\n17408,\n17441,\n17472,\n17505,\n17536,\n17569,\n17600,\n17633,\n17664,\n17697,\n17728,\n17761,\n17792,\n17825,\n17856,\n17889,\n17920,\n17953,\n17984,\n18017,\n18240,\n18305,\n18336,\n18401,\n18464,\n18497,\n18528,\n18657,\n18688,\n18721,\n18752,\n18785,\n18816,\n18849,\n18880,\n18913,\n21124,\n21153,\n22019,\n22612,\n22723,\n23124,\n23555,\n23732,\n23939,\n23988,\n24003,\n24052,\n24581,\n28160,\n28193,\n28224,\n28257,\n28291,\n28340,\n28352,\n28385,\n28445,\n28483,\n28513,\n28625,\n28669,\n28820,\n28864,\n28913,\n28928,\n29053,\n29056,\n29117,\n29120,\n29185,\n29216,\n29789,\n29792,\n30081,\n31200,\n31233,\n31296,\n31393,\n31488,\n31521,\n31552,\n31585,\n31616,\n31649,\n31680,\n31713,\n31744,\n31777,\n31808,\n31841,\n31872,\n31905,\n31936,\n31969,\n32000,\n32033,\n32064,\n32097,\n32128,\n32161,\n32192,\n32225,\n32384,\n32417,\n32466,\n32480,\n32513,\n32544,\n32609,\n32672,\n34305,\n35840,\n35873,\n35904,\n35937,\n35968,\n36001,\n36032,\n36065,\n36096,\n36129,\n36160,\n36193,\n36224,\n36257,\n36288,\n36321,\n36352,\n36385,\n36416,\n36449,\n36480,\n36513,\n36544,\n36577,\n36608,\n36641,\n36672,\n36705,\n36736,\n36769,\n36800,\n36833,\n36864,\n36897,\n36949,\n36965,\n37127,\n37184,\n37217,\n37248,\n37281,\n37312,\n37345,\n37376,\n37409,\n37440,\n37473,\n37504,\n37537,\n37568,\n37601,\n37632,\n37665,\n37696,\n37729,\n37760,\n37793,\n37824,\n37857,\n37888,\n37921,\n37952,\n37985,\n38016,\n38049,\n38080,\n38113,\n38144,\n38177,\n38208,\n38241,\n38272,\n38305,\n38336,\n38369,\n38400,\n38433,\n38464,\n38497,\n38528,\n38561,\n38592,\n38625,\n38656,\n38689,\n38720,\n38753,\n38784,\n38817,\n38848,\n38881,\n38912,\n38977,\n39008,\n39041,\n39072,\n39105,\n39136,\n39169,\n39200,\n39233,\n39264,\n39297,\n39328,\n39361,\n39424,\n39457,\n39488,\n39521,\n39552,\n39585,\n39616,\n39649,\n39680,\n39713,\n39744,\n39777,\n39808,\n39841,\n39872,\n39905,\n39936,\n39969,\n40000,\n40033,\n40064,\n40097,\n40128,\n40161,\n40192,\n40225,\n40256,\n40289,\n40320,\n40353,\n40384,\n40417,\n40448,\n40481,\n40512,\n40545,\n40576,\n40609,\n40640,\n40673,\n40704,\n40737,\n40768,\n40801,\n40832,\n40865,\n40896,\n40929,\n40960,\n40993,\n41024,\n41057,\n41088,\n41121,\n41152,\n41185,\n41216,\n41249,\n41280,\n41313,\n41344,\n41377,\n41408,\n41441,\n41472,\n41505,\n41536,\n41569,\n41600,\n41633,\n41664,\n41697,\n41728,\n41761,\n41792,\n41825,\n41856,\n41889,\n41920,\n41953,\n41984,\n42017,\n42048,\n42081,\n42112,\n42145,\n42176,\n42209,\n42269,\n42528,\n43773,\n43811,\n43857,\n44061,\n44065,\n45341,\n45361,\n45388,\n45437,\n45555,\n45597,\n45605,\n47052,\n47077,\n47121,\n47141,\n47217,\n47237,\n47313,\n47333,\n47389,\n47620,\n48509,\n48644,\n48753,\n48829,\n49178,\n49341,\n49362,\n49457,\n49523,\n49553,\n49621,\n49669,\n50033,\n50077,\n50129,\n50180,\n51203,\n51236,\n51557,\n52232,\n52561,\n52676,\n52741,\n52772,\n55953,\n55972,\n56005,\n56250,\n56277,\n56293,\n56483,\n56549,\n56629,\n56645,\n56772,\n56840,\n57156,\n57269,\n57316,\n57361,\n57821,\n57850,\n57860,\n57893,\n57924,\n58885,\n59773,\n59812,\n62661,\n63012,\n63069,\n63496,\n63812,\n64869,\n65155,\n65237,\n65265,\n65347,\n65405,\n65540,\n66245,\n66371,\n66405,\n66691,\n66725,\n66819,\n66853,\n67037,\n67089,\n67581,\n67588,\n68389,\n68509,\n68561,\n68605,\n70660,\n70717,\n70724,\n71101,\n72837,\n73725,\n73733,\n73830,\n73860,\n75589,\n75622,\n75653,\n75684,\n75718,\n75813,\n76070,\n76197,\n76230,\n76292,\n76325,\n76548,\n76869,\n76945,\n77000,\n77329,\n77347,\n77380,\n77597,\n77604,\n77853,\n77861,\n77894,\n77981,\n77988,\n78269,\n78308,\n78397,\n78436,\n79165,\n79172,\n79421,\n79428,\n79485,\n79556,\n79709,\n79749,\n79780,\n79814,\n79909,\n80061,\n80102,\n80189,\n80230,\n80293,\n80324,\n80381,\n80614,\n80669,\n80772,\n80861,\n80868,\n80965,\n81053,\n81096,\n81412,\n81491,\n81546,\n81749,\n81779,\n81821,\n81957,\n82022,\n82077,\n82084,\n82301,\n82404,\n82493,\n82532,\n83261,\n83268,\n83517,\n83524,\n83613,\n83620,\n83709,\n83716,\n83805,\n83845,\n83901,\n83910,\n84005,\n84093,\n84197,\n84285,\n84325,\n84445,\n84517,\n84573,\n84772,\n84925,\n84932,\n84989,\n85192,\n85509,\n85572,\n85669,\n85725,\n86053,\n86118,\n86173,\n86180,\n86493,\n86500,\n86621,\n86628,\n87357,\n87364,\n87613,\n87620,\n87709,\n87716,\n87901,\n87941,\n87972,\n88006,\n88101,\n88285,\n88293,\n88358,\n88413,\n88422,\n88485,\n88541,\n88580,\n88637,\n89092,\n89157,\n89245,\n89288,\n89617,\n89651,\n89693,\n90149,\n90182,\n90269,\n90276,\n90557,\n90596,\n90685,\n90724,\n91453,\n91460,\n91709,\n91716,\n91805,\n91812,\n91997,\n92037,\n92068,\n92102,\n92133,\n92166,\n92197,\n92349,\n92390,\n92477,\n92518,\n92581,\n92637,\n92869,\n92902,\n92957,\n93060,\n93149,\n93156,\n93253,\n93341,\n93384,\n93717,\n93732,\n93770,\n93981,\n94277,\n94308,\n94365,\n94372,\n94589,\n94660,\n94781,\n94788,\n94941,\n95012,\n95101,\n95108,\n95165,\n95172,\n95261,\n95332,\n95421,\n95492,\n95613,\n95684,\n96093,\n96198,\n96261,\n96294,\n96381,\n96454,\n96573,\n96582,\n96677,\n96733,\n96772,\n96829,\n96998,\n97053,\n97480,\n97802,\n97909,\n98099,\n98133,\n98173,\n98342,\n98461,\n98468,\n98749,\n98756,\n98877,\n98884,\n99645,\n99652,\n99997,\n100004,\n100189,\n100260,\n100293,\n100390,\n100541,\n100549,\n100669,\n100677,\n100829,\n101029,\n101117,\n101124,\n101213,\n101380,\n101445,\n101533,\n101576,\n101917,\n102154,\n102389,\n102429,\n102470,\n102557,\n102564,\n102845,\n102852,\n102973,\n102980,\n103741,\n103748,\n104093,\n104100,\n104285,\n104325,\n104356,\n104390,\n104421,\n104454,\n104637,\n104645,\n104678,\n104765,\n104774,\n104837,\n104925,\n105126,\n105213,\n105412,\n105469,\n105476,\n105541,\n105629,\n105672,\n106013,\n106020,\n106109,\n106566,\n106653,\n106660,\n106941,\n106948,\n107069,\n107076,\n108413,\n108452,\n108486,\n108581,\n108733,\n108742,\n108861,\n108870,\n108965,\n108996,\n109053,\n109286,\n109341,\n109572,\n109637,\n109725,\n109768,\n110090,\n110301,\n110389,\n110404,\n110621,\n110662,\n110749,\n110756,\n111357,\n111428,\n112221,\n112228,\n112541,\n112548,\n112605,\n112644,\n112893,\n112965,\n113021,\n113126,\n113221,\n113341,\n113349,\n113405,\n113414,\n113693,\n114246,\n114321,\n114365,\n114724,\n116261,\n116292,\n116357,\n116605,\n116723,\n116740,\n116931,\n116965,\n117233,\n117256,\n117585,\n117661,\n118820,\n118909,\n118916,\n118973,\n119012,\n119101,\n119108,\n119165,\n119204,\n119261,\n119428,\n119581,\n119588,\n119837,\n119844,\n119965,\n119972,\n120029,\n120036,\n120093,\n120132,\n120221,\n120228,\n120357,\n120388,\n120453,\n120669,\n120677,\n120740,\n120797,\n120836,\n121021,\n121027,\n121085,\n121093,\n121309,\n121352,\n121693,\n121732,\n121885,\n122884,\n122933,\n123025,\n123509,\n123537,\n123573,\n123653,\n123733,\n123912,\n124234,\n124565,\n124581,\n124629,\n124645,\n124693,\n124709,\n124749,\n124782,\n124813,\n124846,\n124870,\n124932,\n125213,\n125220,\n126397,\n126501,\n126950,\n126981,\n127153,\n127173,\n127236,\n127397,\n127773,\n127781,\n128957,\n128981,\n129221,\n129269,\n129469,\n129493,\n129553,\n129717,\n129841,\n129917,\n131076,\n132454,\n132517,\n132646,\n132677,\n132870,\n132901,\n132966,\n133029,\n133092,\n133128,\n133457,\n133636,\n133830,\n133893,\n133956,\n134085,\n134180,\n134214,\n134308,\n134374,\n134596,\n134693,\n134820,\n135237,\n135270,\n135333,\n135398,\n135589,\n135620,\n135654,\n135688,\n136006,\n136101,\n136149,\n136192,\n137437,\n137440,\n137501,\n137632,\n137693,\n137732,\n139121,\n139139,\n139172,\n149821,\n149828,\n149981,\n150020,\n150269,\n150276,\n150333,\n150340,\n150493,\n150532,\n151869,\n151876,\n152029,\n152068,\n153149,\n153156,\n153309,\n153348,\n153597,\n153604,\n153661,\n153668,\n153821,\n153860,\n154365,\n154372,\n156221,\n156228,\n156381,\n156420,\n158589,\n158629,\n158737,\n159018,\n159677,\n159748,\n160277,\n160605,\n160772,\n163517,\n163852,\n163876,\n183729,\n183780,\n184342,\n184356,\n185197,\n185230,\n185277,\n185348,\n187761,\n187849,\n187965,\n188420,\n188861,\n188868,\n188997,\n189117,\n189444,\n190021,\n190129,\n190205,\n190468,\n191045,\n191133,\n191492,\n191933,\n191940,\n192061,\n192069,\n192157,\n192516,\n194181,\n194246,\n194277,\n194502,\n194757,\n194790,\n194853,\n195217,\n195299,\n195345,\n195443,\n195460,\n195493,\n195549,\n195592,\n195933,\n196106,\n196445,\n196625,\n196812,\n196849,\n196965,\n197078,\n197117,\n197128,\n197469,\n197636,\n198755,\n198788,\n200477,\n200708,\n202021,\n202052,\n202109,\n202244,\n204509,\n204804,\n205757,\n205829,\n205926,\n206053,\n206118,\n206237,\n206342,\n206405,\n206438,\n206629,\n206749,\n206869,\n206909,\n206993,\n207048,\n207364,\n208349,\n208388,\n208573,\n208900,\n210333,\n210438,\n210980,\n211206,\n211293,\n211464,\n211786,\n211837,\n211925,\n212996,\n213733,\n213798,\n213917,\n213969,\n214020,\n215718,\n215749,\n215782,\n215813,\n216061,\n216069,\n216102,\n216133,\n216166,\n216229,\n216486,\n216677,\n217021,\n217061,\n217096,\n217437,\n217608,\n217949,\n218129,\n218339,\n218385,\n218589,\n221189,\n221318,\n221348,\n222853,\n222886,\n222917,\n223078,\n223109,\n223142,\n223301,\n223334,\n223396,\n223645,\n223752,\n224081,\n224309,\n224613,\n224917,\n225213,\n225285,\n225350,\n225380,\n226342,\n226373,\n226502,\n226565,\n226630,\n226661,\n226694,\n226756,\n226824,\n227140,\n228549,\n228582,\n228613,\n228678,\n228773,\n228806,\n228837,\n228934,\n229021,\n229265,\n229380,\n230534,\n230789,\n231046,\n231109,\n231197,\n231281,\n231432,\n231773,\n231844,\n231944,\n232260,\n233219,\n233425,\n233501,\n235537,\n235805,\n236037,\n236145,\n236165,\n236582,\n236613,\n236836,\n236965,\n236996,\n237126,\n237189,\n237220,\n237309,\n237569,\n238979,\n240993,\n241411,\n241441,\n242531,\n243717,\n244989,\n245637,\n245760,\n245793,\n245824,\n245857,\n245888,\n245921,\n245952,\n245985,\n246016,\n246049,\n246080,\n246113,\n246144,\n246177,\n246208,\n246241,\n246272,\n246305,\n246336,\n246369,\n246400,\n246433,\n246464,\n246497,\n246528,\n246561,\n246592,\n246625,\n246656,\n246689,\n246720,\n246753,\n246784,\n246817,\n246848,\n246881,\n246912,\n246945,\n246976,\n247009,\n247040,\n247073,\n247104,\n247137,\n247168,\n247201,\n247232,\n247265,\n247296,\n247329,\n247360,\n247393,\n247424,\n247457,\n247488,\n247521,\n247552,\n247585,\n247616,\n247649,\n247680,\n247713,\n247744,\n247777,\n247808,\n247841,\n247872,\n247905,\n247936,\n247969,\n248000,\n248033,\n248064,\n248097,\n248128,\n248161,\n248192,\n248225,\n248256,\n248289,\n248320,\n248353,\n248384,\n248417,\n248448,\n248481,\n248512,\n248545,\n248576,\n248609,\n248640,\n248673,\n248704,\n248737,\n248768,\n248801,\n248832,\n248865,\n248896,\n248929,\n248960,\n248993,\n249024,\n249057,\n249088,\n249121,\n249152,\n249185,\n249216,\n249249,\n249280,\n249313,\n249344,\n249377,\n249408,\n249441,\n249472,\n249505,\n249536,\n249569,\n249600,\n249633,\n249664,\n249697,\n249728,\n249761,\n249792,\n249825,\n249856,\n249889,\n249920,\n249953,\n249984,\n250017,\n250048,\n250081,\n250112,\n250145,\n250176,\n250209,\n250240,\n250273,\n250304,\n250337,\n250368,\n250401,\n250432,\n250465,\n250496,\n250529,\n250816,\n250849,\n250880,\n250913,\n250944,\n250977,\n251008,\n251041,\n251072,\n251105,\n251136,\n251169,\n251200,\n251233,\n251264,\n251297,\n251328,\n251361,\n251392,\n251425,\n251456,\n251489,\n251520,\n251553,\n251584,\n251617,\n251648,\n251681,\n251712,\n251745,\n251776,\n251809,\n251840,\n251873,\n251904,\n251937,\n251968,\n252001,\n252032,\n252065,\n252096,\n252129,\n252160,\n252193,\n252224,\n252257,\n252288,\n252321,\n252352,\n252385,\n252416,\n252449,\n252480,\n252513,\n252544,\n252577,\n252608,\n252641,\n252672,\n252705,\n252736,\n252769,\n252800,\n252833,\n252864,\n252897,\n252928,\n252961,\n252992,\n253025,\n253056,\n253089,\n253120,\n253153,\n253184,\n253217,\n253248,\n253281,\n253312,\n253345,\n253376,\n253409,\n253440,\n253473,\n253504,\n253537,\n253568,\n253601,\n253632,\n253665,\n253696,\n253729,\n253760,\n253793,\n253824,\n253857,\n253888,\n253921,\n254208,\n254465,\n254685,\n254720,\n254941,\n254977,\n255232,\n255489,\n255744,\n256001,\n256221,\n256256,\n256477,\n256513,\n256797,\n256800,\n256861,\n256864,\n256925,\n256928,\n256989,\n256992,\n257025,\n257280,\n257537,\n258013,\n258049,\n258306,\n258561,\n258818,\n259073,\n259330,\n259585,\n259773,\n259777,\n259840,\n259970,\n260020,\n260033,\n260084,\n260161,\n260285,\n260289,\n260352,\n260482,\n260532,\n260609,\n260765,\n260801,\n260864,\n261021,\n261044,\n261121,\n261376,\n261556,\n261661,\n261697,\n261821,\n261825,\n261888,\n262018,\n262068,\n262141,\n262166,\n262522,\n262668,\n262865,\n262927,\n262960,\n262989,\n263023,\n263088,\n263117,\n263151,\n263185,\n263447,\n263480,\n263514,\n263670,\n263697,\n263983,\n264016,\n264049,\n264171,\n264241,\n264338,\n264365,\n264398,\n264433,\n264786,\n264817,\n264843,\n264881,\n265206,\n265242,\n265405,\n265562,\n265738,\n265763,\n265821,\n265866,\n266066,\n266157,\n266190,\n266211,\n266250,\n266578,\n266669,\n266702,\n266749,\n266755,\n267197,\n267283,\n268125,\n268805,\n269223,\n269349,\n269383,\n269477,\n269885,\n270357,\n270400,\n270453,\n270560,\n270613,\n270657,\n270688,\n270785,\n270848,\n270945,\n270997,\n271008,\n271061,\n271122,\n271136,\n271317,\n271488,\n271541,\n271552,\n271605,\n271616,\n271669,\n271680,\n271829,\n271841,\n271872,\n272001,\n272036,\n272161,\n272213,\n272257,\n272320,\n272402,\n272544,\n272577,\n272725,\n272754,\n272789,\n272833,\n272885,\n272906,\n273417,\n274528,\n274561,\n274601,\n274730,\n274781,\n274962,\n275125,\n275282,\n275349,\n275474,\n275509,\n275570,\n275605,\n275666,\n275701,\n275922,\n275957,\n276946,\n277013,\n277074,\n277109,\n277138,\n277173,\n278162,\n286741,\n286994,\n287125,\n287762,\n287829,\n288045,\n288078,\n288117,\n290706,\n290741,\n291698,\n292501,\n293778,\n293973,\n294557,\n294933,\n296189,\n296981,\n297341,\n297994,\n299925,\n302410,\n303125,\n308978,\n309013,\n309298,\n309333,\n311058,\n311317,\n314866,\n314901,\n319517,\n319541,\n322829,\n322862,\n322893,\n322926,\n322957,\n322990,\n323021,\n323054,\n323085,\n323118,\n323149,\n323182,\n323213,\n323246,\n323274,\n324245,\n325650,\n325805,\n325838,\n325874,\n326861,\n326894,\n326925,\n326958,\n326989,\n327022,\n327053,\n327086,\n327117,\n327150,\n327186,\n327701,\n335890,\n340077,\n340110,\n340141,\n340174,\n340205,\n340238,\n340269,\n340302,\n340333,\n340366,\n340397,\n340430,\n340461,\n340494,\n340525,\n340558,\n340589,\n340622,\n340653,\n340686,\n340717,\n340750,\n340786,\n342797,\n342830,\n342861,\n342894,\n342930,\n343949,\n343982,\n344018,\n352277,\n353810,\n354485,\n354546,\n354749,\n354837,\n355165,\n360448,\n361981,\n361985,\n363517,\n363520,\n363553,\n363584,\n363681,\n363744,\n363777,\n363808,\n363841,\n363872,\n363905,\n363936,\n364065,\n364096,\n364129,\n364192,\n364225,\n364419,\n364480,\n364577,\n364608,\n364641,\n364672,\n364705,\n364736,\n364769,\n364800,\n364833,\n364864,\n364897,\n364928,\n364961,\n364992,\n365025,\n365056,\n365089,\n365120,\n365153,\n365184,\n365217,\n365248,\n365281,\n365312,\n365345,\n365376,\n365409,\n365440,\n365473,\n365504,\n365537,\n365568,\n365601,\n365632,\n365665,\n365696,\n365729,\n365760,\n365793,\n365824,\n365857,\n365888,\n365921,\n365952,\n365985,\n366016,\n366049,\n366080,\n366113,\n366144,\n366177,\n366208,\n366241,\n366272,\n366305,\n366336,\n366369,\n366400,\n366433,\n366464,\n366497,\n366528,\n366561,\n366592,\n366625,\n366656,\n366689,\n366720,\n366753,\n366784,\n366817,\n366848,\n366881,\n366912,\n366945,\n366976,\n367009,\n367040,\n367073,\n367104,\n367137,\n367168,\n367201,\n367232,\n367265,\n367296,\n367329,\n367360,\n367393,\n367424,\n367457,\n367488,\n367521,\n367552,\n367585,\n367616,\n367649,\n367680,\n367713,\n367797,\n367968,\n368001,\n368032,\n368065,\n368101,\n368192,\n368225,\n368285,\n368433,\n368554,\n368593,\n368641,\n369885,\n369889,\n369949,\n370081,\n370141,\n370180,\n371997,\n372195,\n372241,\n372285,\n372709,\n372740,\n373501,\n373764,\n374013,\n374020,\n374269,\n374276,\n374525,\n374532,\n374781,\n374788,\n375037,\n375044,\n375293,\n375300,\n375549,\n375556,\n375805,\n375813,\n376849,\n376911,\n376944,\n376975,\n377008,\n377041,\n377135,\n377168,\n377201,\n377231,\n377264,\n377297,\n377580,\n377617,\n377676,\n377713,\n377743,\n377776,\n377809,\n377871,\n377904,\n377933,\n377966,\n377997,\n378030,\n378061,\n378094,\n378125,\n378158,\n378193,\n378339,\n378385,\n378700,\n378781,\n380949,\n381789,\n381813,\n384669,\n385045,\n391901,\n392725,\n393117,\n393238,\n393265,\n393365,\n393379,\n393412,\n393449,\n393485,\n393518,\n393549,\n393582,\n393613,\n393646,\n393677,\n393710,\n393741,\n393774,\n393813,\n393869,\n393902,\n393933,\n393966,\n393997,\n394030,\n394061,\n394094,\n394124,\n394157,\n394190,\n394261,\n394281,\n394565,\n394694,\n394764,\n394787,\n394965,\n395017,\n395107,\n395140,\n395185,\n395221,\n395293,\n395300,\n398077,\n398117,\n398196,\n398243,\n398308,\n398348,\n398372,\n401265,\n401283,\n401380,\n401437,\n401572,\n402909,\n402980,\n406013,\n406037,\n406090,\n406229,\n406532,\n407421,\n407573,\n408733,\n409092,\n409621,\n410621,\n410634,\n410965,\n411914,\n412181,\n412202,\n412693,\n413706,\n414037,\n415274,\n415765,\n417789,\n417813,\n425988,\n636637,\n636949,\n638980,\n1309117,\n1310724,\n1311395,\n1311428,\n1348029,\n1348117,\n1349885,\n1350148,\n1351427,\n1351633,\n1351684,\n1360259,\n1360305,\n1360388,\n1360904,\n1361220,\n1361309,\n1361920,\n1361953,\n1361984,\n1362017,\n1362048,\n1362081,\n1362112,\n1362145,\n1362176,\n1362209,\n1362240,\n1362273,\n1362304,\n1362337,\n1362368,\n1362401,\n1362432,\n1362465,\n1362496,\n1362529,\n1362560,\n1362593,\n1362624,\n1362657,\n1362688,\n1362721,\n1362752,\n1362785,\n1362816,\n1362849,\n1362880,\n1362913,\n1362944,\n1362977,\n1363008,\n1363041,\n1363072,\n1363105,\n1363136,\n1363169,\n1363200,\n1363233,\n1363264,\n1363297,\n1363328,\n1363361,\n1363396,\n1363429,\n1363463,\n1363569,\n1363589,\n1363921,\n1363939,\n1363968,\n1364001,\n1364032,\n1364065,\n1364096,\n1364129,\n1364160,\n1364193,\n1364224,\n1364257,\n1364288,\n1364321,\n1364352,\n1364385,\n1364416,\n1364449,\n1364480,\n1364513,\n1364544,\n1364577,\n1364608,\n1364641,\n1364672,\n1364705,\n1364765,\n1364965,\n1364996,\n1367241,\n1367557,\n1367633,\n1367837,\n1368084,\n1368803,\n1369108,\n1369152,\n1369185,\n1369216,\n1369249,\n1369280,\n1369313,\n1369344,\n1369377,\n1369408,\n1369441,\n1369472,\n1369505,\n1369536,\n1369569,\n1369664,\n1369697,\n1369728,\n1369761,\n1369792,\n1369825,\n1369856,\n1369889,\n1369920,\n1369953,\n1369984,\n1370017,\n1370048,\n1370081,\n1370112,\n1370145,\n1370176,\n1370209,\n1370240,\n1370273,\n1370304,\n1370337,\n1370368,\n1370401,\n1370432,\n1370465,\n1370496,\n1370529,\n1370560,\n1370593,\n1370624,\n1370657,\n1370688,\n1370721,\n1370752,\n1370785,\n1370816,\n1370849,\n1370880,\n1370913,\n1370944,\n1370977,\n1371008,\n1371041,\n1371072,\n1371105,\n1371136,\n1371169,\n1371200,\n1371233,\n1371264,\n1371297,\n1371328,\n1371361,\n1371392,\n1371425,\n1371456,\n1371489,\n1371520,\n1371553,\n1371584,\n1371617,\n1371651,\n1371681,\n1371936,\n1371969,\n1372000,\n1372033,\n1372064,\n1372129,\n1372160,\n1372193,\n1372224,\n1372257,\n1372288,\n1372321,\n1372352,\n1372385,\n1372419,\n1372468,\n1372512,\n1372545,\n1372576,\n1372609,\n1372669,\n1372672,\n1372705,\n1372736,\n1372769,\n1372829,\n1373184,\n1373217,\n1373248,\n1373281,\n1373312,\n1373345,\n1373376,\n1373409,\n1373440,\n1373473,\n1373504,\n1373565,\n1376003,\n1376065,\n1376100,\n1376325,\n1376356,\n1376453,\n1376484,\n1376613,\n1376644,\n1377382,\n1377445,\n1377510,\n1377557,\n1377693,\n1377802,\n1378005,\n1378067,\n1378101,\n1378141,\n1378308,\n1379985,\n1380125,\n1380358,\n1380420,\n1382022,\n1382533,\n1382589,\n1382865,\n1382920,\n1383261,\n1383429,\n1384004,\n1384209,\n1384292,\n1384349,\n1384456,\n1384772,\n1385669,\n1385937,\n1385988,\n1386725,\n1387078,\n1387165,\n1387505,\n1387524,\n1388477,\n1388549,\n1388646,\n1388676,\n1390181,\n1390214,\n1390277,\n1390406,\n1390469,\n1390502,\n1390641,\n1391069,\n1391075,\n1391112,\n1391453,\n1391569,\n1391645,\n1392644,\n1393957,\n1394150,\n1394213,\n1394278,\n1394341,\n1394429,\n1394692,\n1394789,\n1394820,\n1395077,\n1395110,\n1395165,\n1395208,\n1395549,\n1395601,\n1395716,\n1396227,\n1396260,\n1396469,\n1396548,\n1396582,\n1396637,\n1396740,\n1398277,\n1398308,\n1398341,\n1398436,\n1398501,\n1398564,\n1398725,\n1398788,\n1398821,\n1398852,\n1398909,\n1399652,\n1399715,\n1399761,\n1399812,\n1400166,\n1400197,\n1400262,\n1400337,\n1400388,\n1400419,\n1400486,\n1400517,\n1400573,\n1400868,\n1401085,\n1401124,\n1401341,\n1401380,\n1401597,\n1401860,\n1402109,\n1402116,\n1402365,\n1406980,\n1408102,\n1408165,\n1408198,\n1408261,\n1408294,\n1408369,\n1408390,\n1408421,\n1408477,\n1408520,\n1408861,\n1409028,\n1766557,\n1766916,\n1767677,\n1767780,\n1769373,\n1769499,\n1835036,\n2039812,\n2051549,\n2051588,\n2055005,\n2056193,\n2056445,\n2056801,\n2056989,\n2057124,\n2057157,\n2057188,\n2057522,\n2057540,\n2057981,\n2057988,\n2058173,\n2058180,\n2058237,\n2058244,\n2058333,\n2058340,\n2058429,\n2058436,\n2061908,\n2062429,\n2062948,\n2074573,\n2074606,\n2074653,\n2075140,\n2077213,\n2077252,\n2079005,\n2080260,\n2080659,\n2080693,\n2080733,\n2080773,\n2081297,\n2081517,\n2081550,\n2081585,\n2081629,\n2081797,\n2082045,\n2082321,\n2082348,\n2082411,\n2082477,\n2082510,\n2082541,\n2082574,\n2082605,\n2082638,\n2082669,\n2082702,\n2082733,\n2082766,\n2082797,\n2082830,\n2082861,\n2082894,\n2082925,\n2082958,\n2082993,\n2083053,\n2083086,\n2083121,\n2083243,\n2083345,\n2083453,\n2083473,\n2083596,\n2083629,\n2083662,\n2083693,\n2083726,\n2083757,\n2083790,\n2083825,\n2083922,\n2083948,\n2083986,\n2084093,\n2084113,\n2084147,\n2084177,\n2084253,\n2084356,\n2084541,\n2084548,\n2088893,\n2088954,\n2088989,\n2089009,\n2089107,\n2089137,\n2089229,\n2089262,\n2089297,\n2089330,\n2089361,\n2089388,\n2089425,\n2089480,\n2089809,\n2089874,\n2089969,\n2090016,\n2090861,\n2090897,\n2090926,\n2090964,\n2090987,\n2091028,\n2091041,\n2091885,\n2091922,\n2091950,\n2091986,\n2092013,\n2092046,\n2092081,\n2092109,\n2092142,\n2092177,\n2092228,\n2092547,\n2092580,\n2094019,\n2094084,\n2095101,\n2095172,\n2095389,\n2095428,\n2095645,\n2095684,\n2095901,\n2095940,\n2096061,\n2096147,\n2096210,\n2096244,\n2096277,\n2096307,\n2096381,\n2096405,\n2096434,\n2096565,\n2096637,\n2096954,\n2097045,\n2097117,\n2097156,\n2097565,\n2097572,\n2098429,\n2098436,\n2099069,\n2099076,\n2099165,\n2099172,\n2099677,\n2099716,\n2100189,\n2101252,\n2105213,\n2105361,\n2105469,\n2105578,\n2107037,\n2107125,\n2107401,\n2109098,\n2109237,\n2109770,\n2109821,\n2109973,\n2110365,\n2112021,\n2113445,\n2113501,\n2117636,\n2118589,\n2118660,\n2120253,\n2121732,\n2122749,\n2122762,\n2122909,\n2123268,\n2123817,\n2123844,\n2124105,\n2124157,\n2125828,\n2126813,\n2126833,\n2126852,\n2128029,\n2128132,\n2128401,\n2128425,\n2128605,\n2129920,\n2131201,\n2132484,\n2135005,\n2135048,\n2135389,\n2162692,\n2162909,\n2162948,\n2163005,\n2163012,\n2164445,\n2164452,\n2164541,\n2164612,\n2164669,\n2164708,\n2165469,\n2165489,\n2165514,\n2165789,\n2170884,\n2171594,\n2171805,\n2171889,\n2171908,\n2172765,\n2172913,\n2172957,\n2174980,\n2176797,\n2176964,\n2177053,\n2179076,\n2179109,\n2179229,\n2179237,\n2179325,\n2179461,\n2179588,\n2179741,\n2179748,\n2179869,\n2179876,\n2180765,\n2180869,\n2180989,\n2181093,\n2181130,\n2181405,\n2181649,\n2181949,\n2182148,\n2183082,\n2183153,\n2183197,\n2187268,\n2189021,\n2189105,\n2189316,\n2190045,\n2190090,\n2190340,\n2190973,\n2191114,\n2191389,\n2195460,\n2197821,\n2214922,\n2215933,\n2228230,\n2228261,\n2228294,\n2228324,\n2230021,\n2230513,\n2230749,\n2230858,\n2231496,\n2231837,\n2232325,\n2232390,\n2232420,\n2233862,\n2233957,\n2234086,\n2234149,\n2234225,\n2234298,\n2234321,\n2234461,\n2234884,\n2235709,\n2235912,\n2236253,\n2236421,\n2236516,\n2237669,\n2237830,\n2237861,\n2238141,\n2238152,\n2238481,\n2238621,\n2240517,\n2240582,\n2240612,\n2242150,\n2242245,\n2242534,\n2242596,\n2242737,\n2242877,\n2243080,\n2243421,\n2281476,\n2282853,\n2282886,\n2282917,\n2282950,\n2283013,\n2283206,\n2283237,\n2283293,\n2283528,\n2283869,\n2359300,\n2387453,\n2392073,\n2395261,\n2395665,\n2395805,\n2490372,\n2524669,\n2949124,\n2967357,\n3006468,\n3008701,\n3009028,\n3009062,\n3010557,\n3011045,\n3011171,\n3011613,\n3538948,\n3539037,\n3801109,\n3808989,\n3809301,\n3810557,\n3810613,\n3812518,\n3812581,\n3812693,\n3812774,\n3812986,\n3813221,\n3813493,\n3813541,\n3813781,\n3814725,\n3814869,\n3816413,\n3817493,\n3819589,\n3819701,\n3819741,\n3825685,\n3828477,\n3828746,\n3829341,\n3833856,\n3834689,\n3835520,\n3836353,\n3836605,\n3836609,\n3837184,\n3838017,\n3838848,\n3838909,\n3838912,\n3839005,\n3839040,\n3839101,\n3839136,\n3839229,\n3839264,\n3839421,\n3839424,\n3839681,\n3839837,\n3839841,\n3839901,\n3839905,\n3840157,\n3840161,\n3840512,\n3841345,\n3842176,\n3842269,\n3842272,\n3842429,\n3842464,\n3842749,\n3842752,\n3843005,\n3843009,\n3843840,\n3843933,\n3843936,\n3844093,\n3844096,\n3844285,\n3844288,\n3844349,\n3844416,\n3844669,\n3844673,\n3845504,\n3846337,\n3847168,\n3848001,\n3848832,\n3849665,\n3850496,\n3851329,\n3852160,\n3852993,\n3853824,\n3854657,\n3855581,\n3855616,\n3856434,\n3856449,\n3857266,\n3857281,\n3857472,\n3858290,\n3858305,\n3859122,\n3859137,\n3859328,\n3860146,\n3860161,\n3860978,\n3860993,\n3861184,\n3862002,\n3862017,\n3862834,\n3862849,\n3863040,\n3863858,\n3863873,\n3864690,\n3864705,\n3864896,\n3864929,\n3864989,\n3865032,\n3866653,\n4046852,\n4047005,\n4047012,\n4047901,\n4047908,\n4047997,\n4048004,\n4048061,\n4048100,\n4048157,\n4048164,\n4048509,\n4048516,\n4048669,\n4048676,\n4048733,\n4048740,\n4048797,\n4048964,\n4049021,\n4049124,\n4049181,\n4049188,\n4049245,\n4049252,\n4049309,\n4049316,\n4049437,\n4049444,\n4049533,\n4049540,\n4049597,\n4049636,\n4049693,\n4049700,\n4049757,\n4049764,\n4049821,\n4049828,\n4049885,\n4049892,\n4049949,\n4049956,\n4050045,\n4050052,\n4050109,\n4050148,\n4050301,\n4050308,\n4050557,\n4050564,\n4050717,\n4050724,\n4050877,\n4050884,\n4050941,\n4050948,\n4051293,\n4051300,\n4051869,\n4052004,\n4052125,\n4052132,\n4052317,\n4052324,\n4052893,\n4054546,\n4054621,\n4063253,\n4064669,\n4064789,\n4067997,\n4068373,\n4068861,\n4068917,\n4069373,\n4069429,\n4069917,\n4069941,\n4070429,\n4071434,\n4071805,\n4071957,\n4072957,\n4072981,\n4074909,\n4075029,\n4076413,\n4078805,\n4079741,\n4080149,\n4081533,\n4081685,\n4081981,\n4082197,\n4082269,\n4087829,\n4088893,\n4089365,\n4089565,\n4089589,\n4091837,\n4091925,\n4092573,\n4092949,\n4094141,\n4094165,\n4094333,\n4094997,\n4095549,\n4096021,\n4098045,\n4098069,\n4098109,\n4098133,\n4103965,\n4103989,\n4104125,\n4104213,\n4106205,\n4106261,\n4106397,\n4106773,\n4107549,\n4112245,\n4114493,\n4114613,\n4114973,\n4116501,\n4118749,\n4120597,\n4124317,\n4194308,\n5561085,\n5562372,\n5695165,\n5695492,\n5702621,\n6225924,\n6243293,\n29360186,\n29360221,\n29361178,\n29364253,\n29368325,\n29376029,\n31457308,\n33554397,\n33554460,\n35651549,\n//--Autogenerated -- end of section automatically generated\n};\n\nconst int maxUnicode = 0x10ffff;\nconst int maskCategory = 0x1F;\nconst int nRanges = ELEMENTS(catRanges);\n\n}\n\n// Each element in catRanges is the start of a range of Unicode characters in\n// one general category.\n// The value is comprised of a 21-bit character value shifted 5 bits and a 5 bit\n// category matching the CharacterCategory enumeration.\n// Initial version has 3249 entries and adds about 13K to the executable.\n// The array is in ascending order so can be searched using binary search.\n// Therefore the average call takes log2(3249) = 12 comparisons.\n// For speed, it may be useful to make a linear table for the common values,\n// possibly for 0..0xff for most Western European text or 0..0xfff for most\n// alphabetic languages.\n\nCharacterCategory CategoriseCharacter(int character) {\n\tif (character < 0 || character > maxUnicode)\n\t\treturn ccCn;\n\tconst int baseValue = character * (maskCategory+1) + maskCategory;\n\tconst int *placeAfter = std::lower_bound(catRanges, catRanges+nRanges, baseValue);\n\treturn static_cast<CharacterCategory>(*(placeAfter-1) & maskCategory);\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/CharacterCategory.h",
    "content": "// Scintilla source code edit control\n/** @file CharacterCategory.h\n ** Returns the Unicode general category of a character.\n **/\n// Copyright 2013 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CHARACTERCATEGORY_H\n#define CHARACTERCATEGORY_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nenum CharacterCategory {\n\tccLu, ccLl, ccLt, ccLm, ccLo,\n\tccMn, ccMc, ccMe,\n\tccNd, ccNl, ccNo,\n\tccPc, ccPd, ccPs, ccPe, ccPi, ccPf, ccPo,\n\tccSm, ccSc, ccSk, ccSo,\n\tccZs, ccZl, ccZp,\n\tccCc, ccCf, ccCs, ccCo, ccCn\n};\n\nCharacterCategory CategoriseCharacter(int character);\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/CharacterSet.cpp",
    "content": "// Scintilla source code edit control\n/** @file CharacterSet.cxx\n ** Simple case functions for ASCII.\n ** Lexer infrastructure.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"CharacterSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nint CompareCaseInsensitive(const char *a, const char *b) {\n\twhile (*a && *b) {\n\t\tif (*a != *b) {\n\t\t\tchar upperA = static_cast<char>(MakeUpperCase(*a));\n\t\t\tchar upperB = static_cast<char>(MakeUpperCase(*b));\n\t\t\tif (upperA != upperB)\n\t\t\t\treturn upperA - upperB;\n\t\t}\n\t\ta++;\n\t\tb++;\n\t}\n\t// Either *a or *b is nul\n\treturn *a - *b;\n}\n\nint CompareNCaseInsensitive(const char *a, const char *b, size_t len) {\n\twhile (*a && *b && len) {\n\t\tif (*a != *b) {\n\t\t\tchar upperA = static_cast<char>(MakeUpperCase(*a));\n\t\t\tchar upperB = static_cast<char>(MakeUpperCase(*b));\n\t\t\tif (upperA != upperB)\n\t\t\t\treturn upperA - upperB;\n\t\t}\n\t\ta++;\n\t\tb++;\n\t\tlen--;\n\t}\n\tif (len == 0)\n\t\treturn 0;\n\telse\n\t\t// Either *a or *b is nul\n\t\treturn *a - *b;\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/CharacterSet.h",
    "content": "// Scintilla source code edit control\n/** @file CharacterSet.h\n ** Encapsulates a set of characters. Used to test if a character is within a set.\n **/\n// Copyright 2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CHARACTERSET_H\n#define CHARACTERSET_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass CharacterSet {\n\tint size;\n\tbool valueAfter;\n\tbool *bset;\npublic:\n\tenum setBase {\n\t\tsetNone=0,\n\t\tsetLower=1,\n\t\tsetUpper=2,\n\t\tsetDigits=4,\n\t\tsetAlpha=setLower|setUpper,\n\t\tsetAlphaNum=setAlpha|setDigits\n\t};\n\tCharacterSet(setBase base=setNone, const char *initialSet=\"\", int size_=0x80, bool valueAfter_=false) {\n\t\tsize = size_;\n\t\tvalueAfter = valueAfter_;\n\t\tbset = new bool[size];\n\t\tfor (int i=0; i < size; i++) {\n\t\t\tbset[i] = false;\n\t\t}\n\t\tAddString(initialSet);\n\t\tif (base & setLower)\n\t\t\tAddString(\"abcdefghijklmnopqrstuvwxyz\");\n\t\tif (base & setUpper)\n\t\t\tAddString(\"ABCDEFGHIJKLMNOPQRSTUVWXYZ\");\n\t\tif (base & setDigits)\n\t\t\tAddString(\"0123456789\");\n\t}\n\tCharacterSet(const CharacterSet &other) {\n\t\tsize = other.size;\n\t\tvalueAfter = other.valueAfter;\n\t\tbset = new bool[size];\n\t\tfor (int i=0; i < size; i++) {\n\t\t\tbset[i] = other.bset[i];\n\t\t}\n\t}\n\t~CharacterSet() {\n\t\tdelete []bset;\n\t\tbset = 0;\n\t\tsize = 0;\n\t}\n\tCharacterSet &operator=(const CharacterSet &other) {\n\t\tif (this != &other) {\n\t\t\tbool *bsetNew = new bool[other.size];\n\t\t\tfor (int i=0; i < other.size; i++) {\n\t\t\t\tbsetNew[i] = other.bset[i];\n\t\t\t}\n\t\t\tdelete []bset;\n\t\t\tsize = other.size;\n\t\t\tvalueAfter = other.valueAfter;\n\t\t\tbset = bsetNew;\n\t\t}\n\t\treturn *this;\n\t}\n\tvoid Add(int val) {\n\t\tassert(val >= 0);\n\t\tassert(val < size);\n\t\tbset[val] = true;\n\t}\n\tvoid AddString(const char *setToAdd) {\n\t\tfor (const char *cp=setToAdd; *cp; cp++) {\n\t\t\tint val = static_cast<unsigned char>(*cp);\n\t\t\tassert(val >= 0);\n\t\t\tassert(val < size);\n\t\t\tbset[val] = true;\n\t\t}\n\t}\n\tbool Contains(int val) const {\n        // val being -ve is valid (or there is a sign extension bug elsewhere.\n\t\t//assert(val >= 0);\n\t\tif (val < 0) return false;\n\t\treturn (val < size) ? bset[val] : valueAfter;\n\t}\n};\n\n// Functions for classifying characters\n\ninline bool IsASpace(int ch) {\n    return (ch == ' ') || ((ch >= 0x09) && (ch <= 0x0d));\n}\n\ninline bool IsASpaceOrTab(int ch) {\n\treturn (ch == ' ') || (ch == '\\t');\n}\n\ninline bool IsADigit(int ch) {\n\treturn (ch >= '0') && (ch <= '9');\n}\n\ninline bool IsADigit(int ch, int base) {\n\tif (base <= 10) {\n\t\treturn (ch >= '0') && (ch < '0' + base);\n\t} else {\n\t\treturn ((ch >= '0') && (ch <= '9')) ||\n\t\t       ((ch >= 'A') && (ch < 'A' + base - 10)) ||\n\t\t       ((ch >= 'a') && (ch < 'a' + base - 10));\n\t}\n}\n\ninline bool IsASCII(int ch) {\n\treturn (ch >= 0) && (ch < 0x80);\n}\n\ninline bool IsLowerCase(int ch) {\n\treturn (ch >= 'a') && (ch <= 'z');\n}\n\ninline bool IsUpperCase(int ch) {\n\treturn (ch >= 'A') && (ch <= 'Z');\n}\n\ninline bool IsAlphaNumeric(int ch) {\n\treturn\n\t\t((ch >= '0') && (ch <= '9')) ||\n\t\t((ch >= 'a') && (ch <= 'z')) ||\n\t\t((ch >= 'A') && (ch <= 'Z'));\n}\n\n/**\n * Check if a character is a space.\n * This is ASCII specific but is safe with chars >= 0x80.\n */\ninline bool isspacechar(int ch) {\n    return (ch == ' ') || ((ch >= 0x09) && (ch <= 0x0d));\n}\n\ninline bool iswordchar(int ch) {\n\treturn IsAlphaNumeric(ch) || ch == '.' || ch == '_';\n}\n\ninline bool iswordstart(int ch) {\n\treturn IsAlphaNumeric(ch) || ch == '_';\n}\n\ninline bool isoperator(int ch) {\n\tif (IsAlphaNumeric(ch))\n\t\treturn false;\n\tif (ch == '%' || ch == '^' || ch == '&' || ch == '*' ||\n\t        ch == '(' || ch == ')' || ch == '-' || ch == '+' ||\n\t        ch == '=' || ch == '|' || ch == '{' || ch == '}' ||\n\t        ch == '[' || ch == ']' || ch == ':' || ch == ';' ||\n\t        ch == '<' || ch == '>' || ch == ',' || ch == '/' ||\n\t        ch == '?' || ch == '!' || ch == '.' || ch == '~')\n\t\treturn true;\n\treturn false;\n}\n\n// Simple case functions for ASCII.\n\ninline int MakeUpperCase(int ch) {\n\tif (ch < 'a' || ch > 'z')\n\t\treturn ch;\n\telse\n\t\treturn static_cast<char>(ch - 'a' + 'A');\n}\n\ninline int MakeLowerCase(int ch) {\n\tif (ch < 'A' || ch > 'Z')\n\t\treturn ch;\n\telse\n\t\treturn ch - 'A' + 'a';\n}\n\nint CompareCaseInsensitive(const char *a, const char *b);\nint CompareNCaseInsensitive(const char *a, const char *b, size_t len);\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexAccessor.h",
    "content": "// Scintilla source code edit control\n/** @file LexAccessor.h\n ** Interfaces between Scintilla and lexers.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef LEXACCESSOR_H\n#define LEXACCESSOR_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nenum EncodingType { enc8bit, encUnicode, encDBCS };\n\nclass LexAccessor {\nprivate:\n\tIDocument *pAccess;\n\tenum {extremePosition=0x7FFFFFFF};\n\t/** @a bufferSize is a trade off between time taken to copy the characters\n\t * and retrieval overhead.\n\t * @a slopSize positions the buffer before the desired position\n\t * in case there is some backtracking. */\n\tenum {bufferSize=4000, slopSize=bufferSize/8};\n\tchar buf[bufferSize+1];\n\tSci_Position startPos;\n\tSci_Position endPos;\n\tint codePage;\n\tenum EncodingType encodingType;\n\tSci_Position lenDoc;\n\tchar styleBuf[bufferSize];\n\tSci_Position validLen;\n\tSci_PositionU startSeg;\n\tSci_Position startPosStyling;\n\tint documentVersion;\n\n\tvoid Fill(Sci_Position position) {\n\t\tstartPos = position - slopSize;\n\t\tif (startPos + bufferSize > lenDoc)\n\t\t\tstartPos = lenDoc - bufferSize;\n\t\tif (startPos < 0)\n\t\t\tstartPos = 0;\n\t\tendPos = startPos + bufferSize;\n\t\tif (endPos > lenDoc)\n\t\t\tendPos = lenDoc;\n\n\t\tpAccess->GetCharRange(buf, startPos, endPos-startPos);\n\t\tbuf[endPos-startPos] = '\\0';\n\t}\n\npublic:\n\texplicit LexAccessor(IDocument *pAccess_) :\n\t\tpAccess(pAccess_), startPos(extremePosition), endPos(0),\n\t\tcodePage(pAccess->CodePage()),\n\t\tencodingType(enc8bit),\n\t\tlenDoc(pAccess->Length()),\n\t\tvalidLen(0),\n\t\tstartSeg(0), startPosStyling(0),\n\t\tdocumentVersion(pAccess->Version()) {\n\t\t// Prevent warnings by static analyzers about uninitialized buf and styleBuf.\n\t\tbuf[0] = 0;\n\t\tstyleBuf[0] = 0;\n\t\tswitch (codePage) {\n\t\tcase 65001:\n\t\t\tencodingType = encUnicode;\n\t\t\tbreak;\n\t\tcase 932:\n\t\tcase 936:\n\t\tcase 949:\n\t\tcase 950:\n\t\tcase 1361:\n\t\t\tencodingType = encDBCS;\n\t\t}\n\t}\n\tchar operator[](Sci_Position position) {\n\t\tif (position < startPos || position >= endPos) {\n\t\t\tFill(position);\n\t\t}\n\t\treturn buf[position - startPos];\n\t}\n\tIDocumentWithLineEnd *MultiByteAccess() const {\n\t\tif (documentVersion >= dvLineEnd) {\n\t\t\treturn static_cast<IDocumentWithLineEnd *>(pAccess);\n\t\t}\n\t\treturn 0;\n\t}\n\t/** Safe version of operator[], returning a defined value for invalid position. */\n\tchar SafeGetCharAt(Sci_Position position, char chDefault=' ') {\n\t\tif (position < startPos || position >= endPos) {\n\t\t\tFill(position);\n\t\t\tif (position < startPos || position >= endPos) {\n\t\t\t\t// Position is outside range of document\n\t\t\t\treturn chDefault;\n\t\t\t}\n\t\t}\n\t\treturn buf[position - startPos];\n\t}\n\tbool IsLeadByte(char ch) const {\n\t\treturn pAccess->IsDBCSLeadByte(ch);\n\t}\n\tEncodingType Encoding() const {\n\t\treturn encodingType;\n\t}\n\tbool Match(Sci_Position pos, const char *s) {\n\t\tfor (int i=0; *s; i++) {\n\t\t\tif (*s != SafeGetCharAt(pos+i))\n\t\t\t\treturn false;\n\t\t\ts++;\n\t\t}\n\t\treturn true;\n\t}\n\tchar StyleAt(Sci_Position position) const {\n\t\treturn static_cast<char>(pAccess->StyleAt(position));\n\t}\n\tSci_Position GetLine(Sci_Position position) const {\n\t\treturn pAccess->LineFromPosition(position);\n\t}\n\tSci_Position LineStart(Sci_Position line) const {\n\t\treturn pAccess->LineStart(line);\n\t}\n\tSci_Position LineEnd(Sci_Position line) {\n\t\tif (documentVersion >= dvLineEnd) {\n\t\t\treturn (static_cast<IDocumentWithLineEnd *>(pAccess))->LineEnd(line);\n\t\t} else {\n\t\t\t// Old interface means only '\\r', '\\n' and '\\r\\n' line ends.\n\t\t\tSci_Position startNext = pAccess->LineStart(line+1);\n\t\t\tchar chLineEnd = SafeGetCharAt(startNext-1);\n\t\t\tif (chLineEnd == '\\n' && (SafeGetCharAt(startNext-2)  == '\\r'))\n\t\t\t\treturn startNext - 2;\n\t\t\telse\n\t\t\t\treturn startNext - 1;\n\t\t}\n\t}\n\tint LevelAt(Sci_Position line) const {\n\t\treturn pAccess->GetLevel(line);\n\t}\n\tSci_Position Length() const {\n\t\treturn lenDoc;\n\t}\n\tvoid Flush() {\n\t\tif (validLen > 0) {\n\t\t\tpAccess->SetStyles(validLen, styleBuf);\n\t\t\tstartPosStyling += validLen;\n\t\t\tvalidLen = 0;\n\t\t}\n\t}\n\tint GetLineState(Sci_Position line) const {\n\t\treturn pAccess->GetLineState(line);\n\t}\n\tint SetLineState(Sci_Position line, int state) {\n\t\treturn pAccess->SetLineState(line, state);\n\t}\n\t// Style setting\n\tvoid StartAt(Sci_PositionU start) {\n\t\tpAccess->StartStyling(start, '\\377');\n\t\tstartPosStyling = start;\n\t}\n\tSci_PositionU GetStartSegment() const {\n\t\treturn startSeg;\n\t}\n\tvoid StartSegment(Sci_PositionU pos) {\n\t\tstartSeg = pos;\n\t}\n\tvoid ColourTo(Sci_PositionU pos, int chAttr) {\n\t\t// Only perform styling if non empty range\n\t\tif (pos != startSeg - 1) {\n\t\t\tassert(pos >= startSeg);\n\t\t\tif (pos < startSeg) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (validLen + (pos - startSeg + 1) >= bufferSize)\n\t\t\t\tFlush();\n\t\t\tif (validLen + (pos - startSeg + 1) >= bufferSize) {\n\t\t\t\t// Too big for buffer so send directly\n\t\t\t\tpAccess->SetStyleFor(pos - startSeg + 1, static_cast<char>(chAttr));\n\t\t\t} else {\n\t\t\t\tfor (Sci_PositionU i = startSeg; i <= pos; i++) {\n\t\t\t\t\tassert((startPosStyling + validLen) < Length());\n\t\t\t\t\tstyleBuf[validLen++] = static_cast<char>(chAttr);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tstartSeg = pos+1;\n\t}\n\tvoid SetLevel(Sci_Position line, int level) {\n\t\tpAccess->SetLevel(line, level);\n\t}\n\tvoid IndicatorFill(Sci_Position start, Sci_Position end, int indicator, int value) {\n\t\tpAccess->DecorationSetCurrentIndicator(indicator);\n\t\tpAccess->DecorationFillRange(start, value, end - start);\n\t}\n\n\tvoid ChangeLexerState(Sci_Position start, Sci_Position end) {\n\t\tpAccess->ChangeLexerState(start, end);\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexerBase.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexerBase.cxx\n ** A simple lexer with no state.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"LexerModule.h\"\n#include \"LexerBase.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nLexerBase::LexerBase() {\n\tfor (int wl = 0; wl < numWordLists; wl++)\n\t\tkeyWordLists[wl] = new WordList;\n\tkeyWordLists[numWordLists] = 0;\n}\n\nLexerBase::~LexerBase() {\n\tfor (int wl = 0; wl < numWordLists; wl++) {\n\t\tdelete keyWordLists[wl];\n\t\tkeyWordLists[wl] = 0;\n\t}\n\tkeyWordLists[numWordLists] = 0;\n}\n\nvoid SCI_METHOD LexerBase::Release() {\n\tdelete this;\n}\n\nint SCI_METHOD LexerBase::Version() const {\n\treturn lvOriginal;\n}\n\nconst char * SCI_METHOD LexerBase::PropertyNames() {\n\treturn \"\";\n}\n\nint SCI_METHOD LexerBase::PropertyType(const char *) {\n\treturn SC_TYPE_BOOLEAN;\n}\n\nconst char * SCI_METHOD LexerBase::DescribeProperty(const char *) {\n\treturn \"\";\n}\n\nSci_Position SCI_METHOD LexerBase::PropertySet(const char *key, const char *val) {\n\tconst char *valOld = props.Get(key);\n\tif (strcmp(val, valOld) != 0) {\n\t\tprops.Set(key, val);\n\t\treturn 0;\n\t} else {\n\t\treturn -1;\n\t}\n}\n\nconst char * SCI_METHOD LexerBase::DescribeWordListSets() {\n\treturn \"\";\n}\n\nSci_Position SCI_METHOD LexerBase::WordListSet(int n, const char *wl) {\n\tif (n < numWordLists) {\n\t\tWordList wlNew;\n\t\twlNew.Set(wl);\n\t\tif (*keyWordLists[n] != wlNew) {\n\t\t\tkeyWordLists[n]->Set(wl);\n\t\t\treturn 0;\n\t\t}\n\t}\n\treturn -1;\n}\n\nvoid * SCI_METHOD LexerBase::PrivateCall(int, void *) {\n\treturn 0;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexerBase.h",
    "content": "// Scintilla source code edit control\n/** @file LexerBase.h\n ** A simple lexer with no state.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef LEXERBASE_H\n#define LEXERBASE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n// A simple lexer with no state\nclass LexerBase : public ILexer {\nprotected:\n\tPropSetSimple props;\n\tenum {numWordLists=KEYWORDSET_MAX+1};\n\tWordList *keyWordLists[numWordLists+1];\npublic:\n\tLexerBase();\n\tvirtual ~LexerBase();\n\tvoid SCI_METHOD Release();\n\tint SCI_METHOD Version() const;\n\tconst char * SCI_METHOD PropertyNames();\n\tint SCI_METHOD PropertyType(const char *name);\n\tconst char * SCI_METHOD DescribeProperty(const char *name);\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tconst char * SCI_METHOD DescribeWordListSets();\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) = 0;\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) = 0;\n\tvoid * SCI_METHOD PrivateCall(int operation, void *pointer);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexerModule.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexerModule.cxx\n ** Colourise for particular languages.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"LexerModule.h\"\n#include \"LexerBase.h\"\n#include \"LexerSimple.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nLexerModule::LexerModule(int language_,\n\tLexerFunction fnLexer_,\n\tconst char *languageName_,\n\tLexerFunction fnFolder_,\n        const char *const wordListDescriptions_[]) :\n\tlanguage(language_),\n\tfnLexer(fnLexer_),\n\tfnFolder(fnFolder_),\n\tfnFactory(0),\n\twordListDescriptions(wordListDescriptions_),\n\tlanguageName(languageName_) {\n}\n\nLexerModule::LexerModule(int language_,\n\tLexerFactoryFunction fnFactory_,\n\tconst char *languageName_,\n\tconst char * const wordListDescriptions_[]) :\n\tlanguage(language_),\n\tfnLexer(0),\n\tfnFolder(0),\n\tfnFactory(fnFactory_),\n\twordListDescriptions(wordListDescriptions_),\n\tlanguageName(languageName_) {\n}\n\nint LexerModule::GetNumWordLists() const {\n\tif (wordListDescriptions == NULL) {\n\t\treturn -1;\n\t} else {\n\t\tint numWordLists = 0;\n\n\t\twhile (wordListDescriptions[numWordLists]) {\n\t\t\t++numWordLists;\n\t\t}\n\n\t\treturn numWordLists;\n\t}\n}\n\nconst char *LexerModule::GetWordListDescription(int index) const {\n\tassert(index < GetNumWordLists());\n\tif (!wordListDescriptions || (index >= GetNumWordLists())) {\n\t\treturn \"\";\n\t} else {\n\t\treturn wordListDescriptions[index];\n\t}\n}\n\nILexer *LexerModule::Create() const {\n\tif (fnFactory)\n\t\treturn fnFactory();\n\telse\n\t\treturn new LexerSimple(this);\n}\n\nvoid LexerModule::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle,\n\t  WordList *keywordlists[], Accessor &styler) const {\n\tif (fnLexer)\n\t\tfnLexer(startPos, lengthDoc, initStyle, keywordlists, styler);\n}\n\nvoid LexerModule::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle,\n\t  WordList *keywordlists[], Accessor &styler) const {\n\tif (fnFolder) {\n\t\tSci_Position lineCurrent = styler.GetLine(startPos);\n\t\t// Move back one line in case deletion wrecked current line fold state\n\t\tif (lineCurrent > 0) {\n\t\t\tlineCurrent--;\n\t\t\tSci_Position newStartPos = styler.LineStart(lineCurrent);\n\t\t\tlengthDoc += startPos - newStartPos;\n\t\t\tstartPos = newStartPos;\n\t\t\tinitStyle = 0;\n\t\t\tif (startPos > 0) {\n\t\t\t\tinitStyle = styler.StyleAt(startPos - 1);\n\t\t\t}\n\t\t}\n\t\tfnFolder(startPos, lengthDoc, initStyle, keywordlists, styler);\n\t}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexerModule.h",
    "content": "// Scintilla source code edit control\n/** @file LexerModule.h\n ** Colourise for particular languages.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef LEXERMODULE_H\n#define LEXERMODULE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass Accessor;\nclass WordList;\n\ntypedef void (*LexerFunction)(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle,\n                  WordList *keywordlists[], Accessor &styler);\ntypedef ILexer *(*LexerFactoryFunction)();\n\n/**\n * A LexerModule is responsible for lexing and folding a particular language.\n * The class maintains a list of LexerModules which can be searched to find a\n * module appropriate to a particular language.\n */\nclass LexerModule {\nprotected:\n\tint language;\n\tLexerFunction fnLexer;\n\tLexerFunction fnFolder;\n\tLexerFactoryFunction fnFactory;\n\tconst char * const * wordListDescriptions;\n\npublic:\n\tconst char *languageName;\n\tLexerModule(int language_,\n\t\tLexerFunction fnLexer_,\n\t\tconst char *languageName_=0,\n\t\tLexerFunction fnFolder_=0,\n\t\tconst char * const wordListDescriptions_[] = NULL);\n\tLexerModule(int language_,\n\t\tLexerFactoryFunction fnFactory_,\n\t\tconst char *languageName_,\n\t\tconst char * const wordListDescriptions_[] = NULL);\n\tvirtual ~LexerModule() {\n\t}\n\tint GetLanguage() const { return language; }\n\n\t// -1 is returned if no WordList information is available\n\tint GetNumWordLists() const;\n\tconst char *GetWordListDescription(int index) const;\n\n\tILexer *Create() const;\n\n\tvirtual void Lex(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                  WordList *keywordlists[], Accessor &styler) const;\n\tvirtual void Fold(Sci_PositionU startPos, Sci_Position length, int initStyle,\n                  WordList *keywordlists[], Accessor &styler) const;\n\n\tfriend class Catalogue;\n};\n\ninline int Maximum(int a, int b) {\n\treturn (a > b) ? a : b;\n}\n\n// Shut up annoying Visual C++ warnings:\n#ifdef _MSC_VER\n#pragma warning(disable: 4244 4456 4457)\n#endif\n\n// Turn off shadow warnings for lexers as may be maintained by others\n#if defined(__GNUC__)\n#pragma GCC diagnostic ignored \"-Wshadow\"\n#endif\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexerNoExceptions.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexerNoExceptions.cxx\n ** A simple lexer with no state which does not throw exceptions so can be used in an external lexer.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"LexerModule.h\"\n#include \"LexerBase.h\"\n#include \"LexerNoExceptions.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nSci_Position SCI_METHOD LexerNoExceptions::PropertySet(const char *key, const char *val) {\n\ttry {\n\t\treturn LexerBase::PropertySet(key, val);\n\t} catch (...) {\n\t\t// Should not throw into caller as may be compiled with different compiler or options\n\t}\n\treturn -1;\n}\n\nSci_Position SCI_METHOD LexerNoExceptions::WordListSet(int n, const char *wl) {\n\ttry {\n\t\treturn LexerBase::WordListSet(n, wl);\n\t} catch (...) {\n\t\t// Should not throw into caller as may be compiled with different compiler or options\n\t}\n\treturn -1;\n}\n\nvoid SCI_METHOD LexerNoExceptions::Lex(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\ttry {\n\t\tAccessor astyler(pAccess, &props);\n\t\tLexer(startPos, length, initStyle, pAccess, astyler);\n\t\tastyler.Flush();\n\t} catch (...) {\n\t\t// Should not throw into caller as may be compiled with different compiler or options\n\t\tpAccess->SetErrorStatus(SC_STATUS_FAILURE);\n\t}\n}\nvoid SCI_METHOD LexerNoExceptions::Fold(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess) {\n\ttry {\n\t\tAccessor astyler(pAccess, &props);\n\t\tFolder(startPos, length, initStyle, pAccess, astyler);\n\t\tastyler.Flush();\n\t} catch (...) {\n\t\t// Should not throw into caller as may be compiled with different compiler or options\n\t\tpAccess->SetErrorStatus(SC_STATUS_FAILURE);\n\t}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexerNoExceptions.h",
    "content": "// Scintilla source code edit control\n/** @file LexerNoExceptions.h\n ** A simple lexer with no state.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef LEXERNOEXCEPTIONS_H\n#define LEXERNOEXCEPTIONS_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n// A simple lexer with no state\nclass LexerNoExceptions : public LexerBase {\npublic:\n\t// TODO Also need to prevent exceptions in constructor and destructor\n\tSci_Position SCI_METHOD PropertySet(const char *key, const char *val);\n\tSci_Position SCI_METHOD WordListSet(int n, const char *wl);\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *);\n\n\tvirtual void Lexer(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess, Accessor &styler) = 0;\n\tvirtual void Folder(Sci_PositionU startPos, Sci_Position length, int initStyle, IDocument *pAccess, Accessor &styler) = 0;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexerSimple.cpp",
    "content": "// Scintilla source code edit control\n/** @file LexerSimple.cxx\n ** A simple lexer with no state.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <string>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"PropSetSimple.h\"\n#include \"WordList.h\"\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"LexerModule.h\"\n#include \"LexerBase.h\"\n#include \"LexerSimple.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nLexerSimple::LexerSimple(const LexerModule *module_) : module(module_) {\n\tfor (int wl = 0; wl < module->GetNumWordLists(); wl++) {\n\t\tif (!wordLists.empty())\n\t\t\twordLists += \"\\n\";\n\t\twordLists += module->GetWordListDescription(wl);\n\t}\n}\n\nconst char * SCI_METHOD LexerSimple::DescribeWordListSets() {\n\treturn wordLists.c_str();\n}\n\nvoid SCI_METHOD LexerSimple::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) {\n\tAccessor astyler(pAccess, &props);\n\tmodule->Lex(startPos, lengthDoc, initStyle, keyWordLists, astyler);\n\tastyler.Flush();\n}\n\nvoid SCI_METHOD LexerSimple::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) {\n\tif (props.GetInt(\"fold\")) {\n\t\tAccessor astyler(pAccess, &props);\n\t\tmodule->Fold(startPos, lengthDoc, initStyle, keyWordLists, astyler);\n\t\tastyler.Flush();\n\t}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/LexerSimple.h",
    "content": "// Scintilla source code edit control\n/** @file LexerSimple.h\n ** A simple lexer with no state.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef LEXERSIMPLE_H\n#define LEXERSIMPLE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n// A simple lexer with no state\nclass LexerSimple : public LexerBase {\n\tconst LexerModule *module;\n\tstd::string wordLists;\npublic:\n\texplicit LexerSimple(const LexerModule *module_);\n\tconst char * SCI_METHOD DescribeWordListSets();\n\tvoid SCI_METHOD Lex(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n\tvoid SCI_METHOD Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/License.txt",
    "content": "License for Scintilla and SciTE\n\nCopyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n\nAll Rights Reserved \n\nPermission to use, copy, modify, and distribute this software and its \ndocumentation for any purpose and without fee is hereby granted, \nprovided that the above copyright notice appear in all copies and that \nboth that copyright notice and this permission notice appear in \nsupporting documentation. \n\nNEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS \nSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY \nAND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY \nSPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES \nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, \nWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER \nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE \nOR PERFORMANCE OF THIS SOFTWARE. "
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/OptionSet.h",
    "content": "// Scintilla source code edit control\n/** @file OptionSet.h\n ** Manage descriptive information about an options struct for a lexer.\n ** Hold the names, positions, and descriptions of boolean, integer and string options and\n ** allow setting options and retrieving metadata about the options.\n **/\n// Copyright 2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef OPTIONSET_H\n#define OPTIONSET_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\ntemplate <typename T>\nclass OptionSet {\n\ttypedef T Target;\n\ttypedef bool T::*plcob;\n\ttypedef int T::*plcoi;\n\ttypedef std::string T::*plcos;\n\tstruct Option {\n\t\tint opType;\n\t\tunion {\n\t\t\tplcob pb;\n\t\t\tplcoi pi;\n\t\t\tplcos ps;\n\t\t};\n\t\tstd::string description;\n\t\tOption() :\n\t\t\topType(SC_TYPE_BOOLEAN), pb(0), description(\"\") {\n\t\t}\n\t\tOption(plcob pb_, std::string description_=\"\") :\n\t\t\topType(SC_TYPE_BOOLEAN), pb(pb_), description(description_) {\n\t\t}\n\t\tOption(plcoi pi_, std::string description_) :\n\t\t\topType(SC_TYPE_INTEGER), pi(pi_), description(description_) {\n\t\t}\n\t\tOption(plcos ps_, std::string description_) :\n\t\t\topType(SC_TYPE_STRING), ps(ps_), description(description_) {\n\t\t}\n\t\tbool Set(T *base, const char *val) const {\n\t\t\tswitch (opType) {\n\t\t\tcase SC_TYPE_BOOLEAN: {\n\t\t\t\t\tbool option = atoi(val) != 0;\n\t\t\t\t\tif ((*base).*pb != option) {\n\t\t\t\t\t\t(*base).*pb = option;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\tcase SC_TYPE_INTEGER: {\n\t\t\t\t\tint option = atoi(val);\n\t\t\t\t\tif ((*base).*pi != option) {\n\t\t\t\t\t\t(*base).*pi = option;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\tcase SC_TYPE_STRING: {\n\t\t\t\t\tif ((*base).*ps != val) {\n\t\t\t\t\t\t(*base).*ps = val;\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t};\n\ttypedef std::map<std::string, Option> OptionMap;\n\tOptionMap nameToDef;\n\tstd::string names;\n\tstd::string wordLists;\n\n\tvoid AppendName(const char *name) {\n\t\tif (!names.empty())\n\t\t\tnames += \"\\n\";\n\t\tnames += name;\n\t}\npublic:\n\tvirtual ~OptionSet() {\n\t}\n\tvoid DefineProperty(const char *name, plcob pb, std::string description=\"\") {\n\t\tnameToDef[name] = Option(pb, description);\n\t\tAppendName(name);\n\t}\n\tvoid DefineProperty(const char *name, plcoi pi, std::string description=\"\") {\n\t\tnameToDef[name] = Option(pi, description);\n\t\tAppendName(name);\n\t}\n\tvoid DefineProperty(const char *name, plcos ps, std::string description=\"\") {\n\t\tnameToDef[name] = Option(ps, description);\n\t\tAppendName(name);\n\t}\n\tconst char *PropertyNames() const {\n\t\treturn names.c_str();\n\t}\n\tint PropertyType(const char *name) {\n\t\ttypename OptionMap::iterator it = nameToDef.find(name);\n\t\tif (it != nameToDef.end()) {\n\t\t\treturn it->second.opType;\n\t\t}\n\t\treturn SC_TYPE_BOOLEAN;\n\t}\n\tconst char *DescribeProperty(const char *name) {\n\t\ttypename OptionMap::iterator it = nameToDef.find(name);\n\t\tif (it != nameToDef.end()) {\n\t\t\treturn it->second.description.c_str();\n\t\t}\n\t\treturn \"\";\n\t}\n\n\tbool PropertySet(T *base, const char *name, const char *val) {\n\t\ttypename OptionMap::iterator it = nameToDef.find(name);\n\t\tif (it != nameToDef.end()) {\n\t\t\treturn it->second.Set(base, val);\n\t\t}\n\t\treturn false;\n\t}\n\n\tvoid DefineWordListSets(const char * const wordListDescriptions[]) {\n\t\tif (wordListDescriptions) {\n\t\t\tfor (size_t wl = 0; wordListDescriptions[wl]; wl++) {\n\t\t\t\tif (!wordLists.empty())\n\t\t\t\t\twordLists += \"\\n\";\n\t\t\t\twordLists += wordListDescriptions[wl];\n\t\t\t}\n\t\t}\n\t}\n\n\tconst char *DescribeWordListSets() const {\n\t\treturn wordLists.c_str();\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/PropSetSimple.cpp",
    "content": "// SciTE - Scintilla based Text Editor\n/** @file PropSetSimple.cxx\n ** A Java style properties file module.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n// Maintain a dictionary of properties\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n\n#include <string>\n#include <map>\n\n#include \"PropSetSimple.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\ntypedef std::map<std::string, std::string> mapss;\n\nPropSetSimple::PropSetSimple() {\n\tmapss *props = new mapss;\n\timpl = static_cast<void *>(props);\n}\n\nPropSetSimple::~PropSetSimple() {\n\tmapss *props = static_cast<mapss *>(impl);\n\tdelete props;\n\timpl = 0;\n}\n\nvoid PropSetSimple::Set(const char *key, const char *val, int lenKey, int lenVal) {\n\tmapss *props = static_cast<mapss *>(impl);\n\tif (!*key)\t// Empty keys are not supported\n\t\treturn;\n\tif (lenKey == -1)\n\t\tlenKey = static_cast<int>(strlen(key));\n\tif (lenVal == -1)\n\t\tlenVal = static_cast<int>(strlen(val));\n\t(*props)[std::string(key, lenKey)] = std::string(val, lenVal);\n}\n\nstatic bool IsASpaceCharacter(unsigned int ch) {\n    return (ch == ' ') || ((ch >= 0x09) && (ch <= 0x0d));\n}\n\nvoid PropSetSimple::Set(const char *keyVal) {\n\twhile (IsASpaceCharacter(*keyVal))\n\t\tkeyVal++;\n\tconst char *endVal = keyVal;\n\twhile (*endVal && (*endVal != '\\n'))\n\t\tendVal++;\n\tconst char *eqAt = strchr(keyVal, '=');\n\tif (eqAt) {\n\t\tSet(keyVal, eqAt + 1, static_cast<int>(eqAt-keyVal),\n\t\t\tstatic_cast<int>(endVal - eqAt - 1));\n\t} else if (*keyVal) {\t// No '=' so assume '=1'\n\t\tSet(keyVal, \"1\", static_cast<int>(endVal-keyVal), 1);\n\t}\n}\n\nvoid PropSetSimple::SetMultiple(const char *s) {\n\tconst char *eol = strchr(s, '\\n');\n\twhile (eol) {\n\t\tSet(s);\n\t\ts = eol + 1;\n\t\teol = strchr(s, '\\n');\n\t}\n\tSet(s);\n}\n\nconst char *PropSetSimple::Get(const char *key) const {\n\tmapss *props = static_cast<mapss *>(impl);\n\tmapss::const_iterator keyPos = props->find(std::string(key));\n\tif (keyPos != props->end()) {\n\t\treturn keyPos->second.c_str();\n\t} else {\n\t\treturn \"\";\n\t}\n}\n\n// There is some inconsistency between GetExpanded(\"foo\") and Expand(\"$(foo)\").\n// A solution is to keep a stack of variables that have been expanded, so that\n// recursive expansions can be skipped.  For now I'll just use the C++ stack\n// for that, through a recursive function and a simple chain of pointers.\n\nstruct VarChain {\n\tVarChain(const char *var_=NULL, const VarChain *link_=NULL): var(var_), link(link_) {}\n\n\tbool contains(const char *testVar) const {\n\t\treturn (var && (0 == strcmp(var, testVar)))\n\t\t\t|| (link && link->contains(testVar));\n\t}\n\n\tconst char *var;\n\tconst VarChain *link;\n};\n\nstatic int ExpandAllInPlace(const PropSetSimple &props, std::string &withVars, int maxExpands, const VarChain &blankVars) {\n\tsize_t varStart = withVars.find(\"$(\");\n\twhile ((varStart != std::string::npos) && (maxExpands > 0)) {\n\t\tsize_t varEnd = withVars.find(\")\", varStart+2);\n\t\tif (varEnd == std::string::npos) {\n\t\t\tbreak;\n\t\t}\n\n\t\t// For consistency, when we see '$(ab$(cde))', expand the inner variable first,\n\t\t// regardless whether there is actually a degenerate variable named 'ab$(cde'.\n\t\tsize_t innerVarStart = withVars.find(\"$(\", varStart+2);\n\t\twhile ((innerVarStart != std::string::npos) && (innerVarStart > varStart) && (innerVarStart < varEnd)) {\n\t\t\tvarStart = innerVarStart;\n\t\t\tinnerVarStart = withVars.find(\"$(\", varStart+2);\n\t\t}\n\n\t\tstd::string var(withVars.c_str(), varStart + 2, varEnd - varStart - 2);\n\t\tstd::string val = props.Get(var.c_str());\n\n\t\tif (blankVars.contains(var.c_str())) {\n\t\t\tval = \"\"; // treat blankVar as an empty string (e.g. to block self-reference)\n\t\t}\n\n\t\tif (--maxExpands >= 0) {\n\t\t\tmaxExpands = ExpandAllInPlace(props, val, maxExpands, VarChain(var.c_str(), &blankVars));\n\t\t}\n\n\t\twithVars.erase(varStart, varEnd-varStart+1);\n\t\twithVars.insert(varStart, val.c_str(), val.length());\n\n\t\tvarStart = withVars.find(\"$(\");\n\t}\n\n\treturn maxExpands;\n}\n\nint PropSetSimple::GetExpanded(const char *key, char *result) const {\n\tstd::string val = Get(key);\n\tExpandAllInPlace(*this, val, 100, VarChain(key));\n\tconst int n = static_cast<int>(val.size());\n\tif (result) {\n\t\tmemcpy(result, val.c_str(), n+1);\n\t}\n\treturn n;\t// Not including NUL\n}\n\nint PropSetSimple::GetInt(const char *key, int defaultValue) const {\n\tstd::string val = Get(key);\n\tExpandAllInPlace(*this, val, 100, VarChain(key));\n\tif (!val.empty()) {\n\t\treturn atoi(val.c_str());\n\t}\n\treturn defaultValue;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/PropSetSimple.h",
    "content": "// Scintilla source code edit control\n/** @file PropSetSimple.h\n ** A basic string to string map.\n **/\n// Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef PROPSETSIMPLE_H\n#define PROPSETSIMPLE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass PropSetSimple {\n\tvoid *impl;\n\tvoid Set(const char *keyVal);\npublic:\n\tPropSetSimple();\n\tvirtual ~PropSetSimple();\n\tvoid Set(const char *key, const char *val, int lenKey=-1, int lenVal=-1);\n\tvoid SetMultiple(const char *);\n\tconst char *Get(const char *key) const;\n\tint GetExpanded(const char *key, char *result) const;\n\tint GetInt(const char *key, int defaultValue=0) const;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/SparseState.h",
    "content": "// Scintilla source code edit control\n/** @file SparseState.h\n ** Hold lexer state that may change rarely.\n ** This is often per-line state such as whether a particular type of section has been entered.\n ** A state continues until it is changed.\n **/\n// Copyright 2011 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef SPARSESTATE_H\n#define SPARSESTATE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\ntemplate <typename T>\nclass SparseState {\n\tstruct State {\n\t\tint position;\n\t\tT value;\n\t\tState(int position_, T value_) : position(position_), value(value_) {\n\t\t}\n\t\tinline bool operator<(const State &other) const {\n\t\t\treturn position < other.position;\n\t\t}\n\t\tinline bool operator==(const State &other) const {\n\t\t\treturn (position == other.position) && (value == other.value);\n\t\t}\n\t};\n\tint positionFirst;\n\ttypedef std::vector<State> stateVector;\n\tstateVector states;\n\n\ttypename stateVector::iterator Find(int position) {\n\t\tState searchValue(position, T());\n\t\treturn std::lower_bound(states.begin(), states.end(), searchValue);\n\t}\n\npublic:\n\texplicit SparseState(int positionFirst_=-1) {\n\t\tpositionFirst = positionFirst_;\n\t}\n\tvoid Set(int position, T value) {\n\t\tDelete(position);\n\t\tif (states.empty() || (value != states[states.size()-1].value)) {\n\t\t\tstates.push_back(State(position, value));\n\t\t}\n\t}\n\tT ValueAt(int position) {\n\t\tif (states.empty())\n\t\t\treturn T();\n\t\tif (position < states[0].position)\n\t\t\treturn T();\n\t\ttypename stateVector::iterator low = Find(position);\n\t\tif (low == states.end()) {\n\t\t\treturn states[states.size()-1].value;\n\t\t} else {\n\t\t\tif (low->position > position) {\n\t\t\t\t--low;\n\t\t\t}\n\t\t\treturn low->value;\n\t\t}\n\t}\n\tbool Delete(int position) {\n\t\ttypename stateVector::iterator low = Find(position);\n\t\tif (low != states.end()) {\n\t\t\tstates.erase(low, states.end());\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\tsize_t size() const {\n\t\treturn states.size();\n\t}\n\n\t// Returns true if Merge caused a significant change\n\tbool Merge(const SparseState<T> &other, int ignoreAfter) {\n\t\t// Changes caused beyond ignoreAfter are not significant\n\t\tDelete(ignoreAfter+1);\n\n\t\tbool different = true;\n\t\tbool changed = false;\n\t\ttypename stateVector::iterator low = Find(other.positionFirst);\n\t\tif (static_cast<size_t>(states.end() - low) == other.states.size()) {\n\t\t\t// Same number in other as after positionFirst in this\n\t\t\tdifferent = !std::equal(low, states.end(), other.states.begin());\n\t\t}\n\t\tif (different) {\n\t\t\tif (low != states.end()) {\n\t\t\t\tstates.erase(low, states.end());\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t\ttypename stateVector::const_iterator startOther = other.states.begin();\n\t\t\tif (!states.empty() && !other.states.empty() && states.back().value == startOther->value)\n\t\t\t\t++startOther;\n\t\t\tif (startOther != other.states.end()) {\n\t\t\t\tstates.insert(states.end(), startOther, other.states.end());\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t}\n\t\treturn changed;\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/StringCopy.h",
    "content": "// Scintilla source code edit control\n/** @file StringCopy.h\n ** Safe string copy function which always NUL terminates.\n ** ELEMENTS macro for determining array sizes.\n **/\n// Copyright 2013 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef STRINGCOPY_H\n#define STRINGCOPY_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n// Safer version of string copy functions like strcpy, wcsncpy, etc.\n// Instantiate over fixed length strings of both char and wchar_t.\n// May truncate if source doesn't fit into dest with room for NUL.\n\ntemplate <typename T, size_t count>\nvoid StringCopy(T (&dest)[count], const T* source) {\n\tfor (size_t i=0; i<count; i++) {\n\t\tdest[i] = source[i];\n\t\tif (!source[i])\n\t\t\tbreak;\n\t}\n\tdest[count-1] = 0;\n}\n\n#define ELEMENTS(a) (sizeof(a) / sizeof(a[0]))\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/StyleContext.cpp",
    "content": "// Scintilla source code edit control\n/** @file StyleContext.cxx\n ** Lexer infrastructure.\n **/\n// Copyright 1998-2004 by Neil Hodgson <neilh@scintilla.org>\n// This file is in the public domain.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include \"ILexer.h\"\n\n#include \"LexAccessor.h\"\n#include \"Accessor.h\"\n#include \"StyleContext.h\"\n#include \"CharacterSet.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nbool StyleContext::MatchIgnoreCase(const char *s) {\n\tif (MakeLowerCase(ch) != static_cast<unsigned char>(*s))\n\t\treturn false;\n\ts++;\n\tif (MakeLowerCase(chNext) != static_cast<unsigned char>(*s))\n\t\treturn false;\n\ts++;\n\tfor (int n = 2; *s; n++) {\n\t\tif (static_cast<unsigned char>(*s) !=\n\t\t\tMakeLowerCase(static_cast<unsigned char>(styler.SafeGetCharAt(currentPos + n, 0))))\n\t\t\treturn false;\n\t\ts++;\n\t}\n\treturn true;\n}\n\nstatic void getRange(Sci_PositionU start,\n\t\tSci_PositionU end,\n\t\tLexAccessor &styler,\n\t\tchar *s,\n\t\tSci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile ((i < end - start + 1) && (i < len-1)) {\n\t\ts[i] = styler[start + i];\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nvoid StyleContext::GetCurrent(char *s, Sci_PositionU len) {\n\tgetRange(styler.GetStartSegment(), currentPos - 1, styler, s, len);\n}\n\nstatic void getRangeLowered(Sci_PositionU start,\n\t\tSci_PositionU end,\n\t\tLexAccessor &styler,\n\t\tchar *s,\n\t\tSci_PositionU len) {\n\tSci_PositionU i = 0;\n\twhile ((i < end - start + 1) && (i < len-1)) {\n\t\ts[i] = static_cast<char>(tolower(styler[start + i]));\n\t\ti++;\n\t}\n\ts[i] = '\\0';\n}\n\nvoid StyleContext::GetCurrentLowered(char *s, Sci_PositionU len) {\n\tgetRangeLowered(styler.GetStartSegment(), currentPos - 1, styler, s, len);\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/StyleContext.h",
    "content": "// Scintilla source code edit control\n/** @file StyleContext.h\n ** Lexer infrastructure.\n **/\n// Copyright 1998-2004 by Neil Hodgson <neilh@scintilla.org>\n// This file is in the public domain.\n\n#ifndef STYLECONTEXT_H\n#define STYLECONTEXT_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n// All languages handled so far can treat all characters >= 0x80 as one class\n// which just continues the current token or starts an identifier if in default.\n// DBCS treated specially as the second character can be < 0x80 and hence\n// syntactically significant. UTF-8 avoids this as all trail bytes are >= 0x80\nclass StyleContext {\n\tLexAccessor &styler;\n\tIDocumentWithLineEnd *multiByteAccess;\n\tSci_PositionU endPos;\n\tSci_PositionU lengthDocument;\n\n\t// Used for optimizing GetRelativeCharacter\n\tSci_PositionU posRelative;\n\tSci_PositionU currentPosLastRelative;\n\tSci_Position offsetRelative;\n\n\tStyleContext &operator=(const StyleContext &);\n\n\tvoid GetNextChar() {\n\t\tif (multiByteAccess) {\n\t\t\tchNext = multiByteAccess->GetCharacterAndWidth(currentPos+width, &widthNext);\n\t\t} else {\n\t\t\tchNext = static_cast<unsigned char>(styler.SafeGetCharAt(currentPos+width, 0));\n\t\t\twidthNext = 1;\n\t\t}\n\t\t// End of line determined from line end position, allowing CR, LF,\n\t\t// CRLF and Unicode line ends as set by document.\n\t\tif (currentLine < lineDocEnd)\n\t\t\tatLineEnd = static_cast<Sci_Position>(currentPos) >= (lineStartNext-1);\n\t\telse // Last line\n\t\t\tatLineEnd = static_cast<Sci_Position>(currentPos) >= lineStartNext;\n\t}\n\npublic:\n\tSci_PositionU currentPos;\n\tSci_Position currentLine;\n\tSci_Position lineDocEnd;\n\tSci_Position lineStartNext;\n\tbool atLineStart;\n\tbool atLineEnd;\n\tint state;\n\tint chPrev;\n\tint ch;\n\tSci_Position width;\n\tint chNext;\n\tSci_Position widthNext;\n\n\tStyleContext(Sci_PositionU startPos, Sci_PositionU length,\n                        int initStyle, LexAccessor &styler_, char chMask='\\377') :\n\t\tstyler(styler_),\n\t\tmultiByteAccess(0),\n\t\tendPos(startPos + length),\n\t\tposRelative(0),\n\t\tcurrentPosLastRelative(0x7FFFFFFF),\n\t\toffsetRelative(0),\n\t\tcurrentPos(startPos),\n\t\tcurrentLine(-1),\n\t\tlineStartNext(-1),\n\t\tatLineEnd(false),\n\t\tstate(initStyle & chMask), // Mask off all bits which aren't in the chMask.\n\t\tchPrev(0),\n\t\tch(0),\n\t\twidth(0),\n\t\tchNext(0),\n\t\twidthNext(1) {\n\t\tif (styler.Encoding() != enc8bit) {\n\t\t\tmultiByteAccess = styler.MultiByteAccess();\n\t\t}\n\t\tstyler.StartAt(startPos /*, chMask*/);\n\t\tstyler.StartSegment(startPos);\n\t\tcurrentLine = styler.GetLine(startPos);\n\t\tlineStartNext = styler.LineStart(currentLine+1);\n\t\tlengthDocument = static_cast<Sci_PositionU>(styler.Length());\n\t\tif (endPos == lengthDocument)\n\t\t\tendPos++;\n\t\tlineDocEnd = styler.GetLine(lengthDocument);\n\t\tatLineStart = static_cast<Sci_PositionU>(styler.LineStart(currentLine)) == startPos;\n\n\t\t// Variable width is now 0 so GetNextChar gets the char at currentPos into chNext/widthNext\n\t\twidth = 0;\n\t\tGetNextChar();\n\t\tch = chNext;\n\t\twidth = widthNext;\n\n\t\tGetNextChar();\n\t}\n\tvoid Complete() {\n\t\tstyler.ColourTo(currentPos - ((currentPos > lengthDocument) ? 2 : 1), state);\n\t\tstyler.Flush();\n\t}\n\tbool More() const {\n\t\treturn currentPos < endPos;\n\t}\n\tvoid Forward() {\n\t\tif (currentPos < endPos) {\n\t\t\tatLineStart = atLineEnd;\n\t\t\tif (atLineStart) {\n\t\t\t\tcurrentLine++;\n\t\t\t\tlineStartNext = styler.LineStart(currentLine+1);\n\t\t\t}\n\t\t\tchPrev = ch;\n\t\t\tcurrentPos += width;\n\t\t\tch = chNext;\n\t\t\twidth = widthNext;\n\t\t\tGetNextChar();\n\t\t} else {\n\t\t\tatLineStart = false;\n\t\t\tchPrev = ' ';\n\t\t\tch = ' ';\n\t\t\tchNext = ' ';\n\t\t\tatLineEnd = true;\n\t\t}\n\t}\n\tvoid Forward(Sci_Position nb) {\n\t\tfor (Sci_Position i = 0; i < nb; i++) {\n\t\t\tForward();\n\t\t}\n\t}\n\tvoid ForwardBytes(Sci_Position nb) {\n\t\tSci_PositionU forwardPos = currentPos + nb;\n\t\twhile (forwardPos > currentPos) {\n\t\t\tForward();\n\t\t}\n\t}\n\tvoid ChangeState(int state_) {\n\t\tstate = state_;\n\t}\n\tvoid SetState(int state_) {\n\t\tstyler.ColourTo(currentPos - ((currentPos > lengthDocument) ? 2 : 1), state);\n\t\tstate = state_;\n\t}\n\tvoid ForwardSetState(int state_) {\n\t\tForward();\n\t\tstyler.ColourTo(currentPos - ((currentPos > lengthDocument) ? 2 : 1), state);\n\t\tstate = state_;\n\t}\n\tSci_Position LengthCurrent() const {\n\t\treturn currentPos - styler.GetStartSegment();\n\t}\n\tint GetRelative(Sci_Position n) {\n\t\treturn static_cast<unsigned char>(styler.SafeGetCharAt(currentPos+n, 0));\n\t}\n\tint GetRelativeCharacter(Sci_Position n) {\n\t\tif (n == 0)\n\t\t\treturn ch;\n\t\tif (multiByteAccess) {\n\t\t\tif ((currentPosLastRelative != currentPos) ||\n\t\t\t\t((n > 0) && ((offsetRelative < 0) || (n < offsetRelative))) ||\n\t\t\t\t((n < 0) && ((offsetRelative > 0) || (n > offsetRelative)))) {\n\t\t\t\tposRelative = currentPos;\n\t\t\t\toffsetRelative = 0;\n\t\t\t}\n\t\t\tSci_Position diffRelative = n - offsetRelative;\n\t\t\tSci_Position posNew = multiByteAccess->GetRelativePosition(posRelative, diffRelative);\n\t\t\tint chReturn = multiByteAccess->GetCharacterAndWidth(posNew, 0);\n\t\t\tposRelative = posNew;\n\t\t\tcurrentPosLastRelative = currentPos;\n\t\t\toffsetRelative = n;\n\t\t\treturn chReturn;\n\t\t} else {\n\t\t\t// fast version for single byte encodings\n\t\t\treturn static_cast<unsigned char>(styler.SafeGetCharAt(currentPos + n, 0));\n\t\t}\n\t}\n\tbool Match(char ch0) const {\n\t\treturn ch == static_cast<unsigned char>(ch0);\n\t}\n\tbool Match(char ch0, char ch1) const {\n\t\treturn (ch == static_cast<unsigned char>(ch0)) && (chNext == static_cast<unsigned char>(ch1));\n\t}\n\tbool Match(const char *s) {\n\t\tif (ch != static_cast<unsigned char>(*s))\n\t\t\treturn false;\n\t\ts++;\n\t\tif (!*s)\n\t\t\treturn true;\n\t\tif (chNext != static_cast<unsigned char>(*s))\n\t\t\treturn false;\n\t\ts++;\n\t\tfor (int n=2; *s; n++) {\n\t\t\tif (*s != styler.SafeGetCharAt(currentPos+n, 0))\n\t\t\t\treturn false;\n\t\t\ts++;\n\t\t}\n\t\treturn true;\n\t}\n\t// Non-inline\n\tbool MatchIgnoreCase(const char *s);\n\tvoid GetCurrent(char *s, Sci_PositionU len);\n\tvoid GetCurrentLowered(char *s, Sci_PositionU len);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/SubStyles.h",
    "content": "// Scintilla source code edit control\n/** @file SubStyles.h\n ** Manage substyles for a lexer.\n **/\n// Copyright 2012 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef SUBSTYLES_H\n#define SUBSTYLES_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass WordClassifier {\n\tint baseStyle;\n\tint firstStyle;\n\tint lenStyles;\n\tstd::map<std::string, int> wordToStyle;\n\npublic:\n\n\texplicit WordClassifier(int baseStyle_) : baseStyle(baseStyle_), firstStyle(0), lenStyles(0) {\n\t}\n\n\tvoid Allocate(int firstStyle_, int lenStyles_) {\n\t\tfirstStyle = firstStyle_;\n\t\tlenStyles = lenStyles_;\n\t\twordToStyle.clear();\n\t}\n\n\tint Base() const {\n\t\treturn baseStyle;\n\t}\n\n\tint Start() const {\n\t\treturn firstStyle;\n\t}\n\n\tint Length() const {\n\t\treturn lenStyles;\n\t}\n\n\tvoid Clear() {\n\t\tfirstStyle = 0;\n\t\tlenStyles = 0;\n\t\twordToStyle.clear();\n\t}\n\n\tint ValueFor(const std::string &s) const {\n\t\tstd::map<std::string, int>::const_iterator it = wordToStyle.find(s);\n\t\tif (it != wordToStyle.end())\n\t\t\treturn it->second;\n\t\telse\n\t\t\treturn -1;\n\t}\n\n\tbool IncludesStyle(int style) const {\n\t\treturn (style >= firstStyle) && (style < (firstStyle + lenStyles));\n\t}\n\n\tvoid SetIdentifiers(int style, const char *identifiers) {\n\t\twhile (*identifiers) {\n\t\t\tconst char *cpSpace = identifiers;\n\t\t\twhile (*cpSpace && !(*cpSpace == ' ' || *cpSpace == '\\t' || *cpSpace == '\\r' || *cpSpace == '\\n'))\n\t\t\t\tcpSpace++;\n\t\t\tif (cpSpace > identifiers) {\n\t\t\t\tstd::string word(identifiers, cpSpace - identifiers);\n\t\t\t\twordToStyle[word] = style;\n\t\t\t}\n\t\t\tidentifiers = cpSpace;\n\t\t\tif (*identifiers)\n\t\t\t\tidentifiers++;\n\t\t}\n\t}\n};\n\nclass SubStyles {\n\tint classifications;\n\tconst char *baseStyles;\n\tint styleFirst;\n\tint stylesAvailable;\n\tint secondaryDistance;\n\tint allocated;\n\tstd::vector<WordClassifier> classifiers;\n\n\tint BlockFromBaseStyle(int baseStyle) const {\n\t\tfor (int b=0; b < classifications; b++) {\n\t\t\tif (baseStyle == baseStyles[b])\n\t\t\t\treturn b;\n\t\t}\n\t\treturn -1;\n\t}\n\n\tint BlockFromStyle(int style) const {\n\t\tint b = 0;\n\t\tfor (std::vector<WordClassifier>::const_iterator it=classifiers.begin(); it != classifiers.end(); ++it) {\n\t\t\tif (it->IncludesStyle(style))\n\t\t\t\treturn b;\n\t\t\tb++;\n\t\t}\n\t\treturn -1;\n\t}\n\npublic:\n\n\tSubStyles(const char *baseStyles_, int styleFirst_, int stylesAvailable_, int secondaryDistance_) :\n\t\tclassifications(0),\n\t\tbaseStyles(baseStyles_),\n\t\tstyleFirst(styleFirst_),\n\t\tstylesAvailable(stylesAvailable_),\n\t\tsecondaryDistance(secondaryDistance_),\n\t\tallocated(0) {\n\t\twhile (baseStyles[classifications]) {\n\t\t\tclassifiers.push_back(WordClassifier(baseStyles[classifications]));\n\t\t\tclassifications++;\n\t\t}\n\t}\n\n\tint Allocate(int styleBase, int numberStyles) {\n\t\tint block = BlockFromBaseStyle(styleBase);\n\t\tif (block >= 0) {\n\t\t\tif ((allocated + numberStyles) > stylesAvailable)\n\t\t\t\treturn -1;\n\t\t\tint startBlock = styleFirst + allocated;\n\t\t\tallocated += numberStyles;\n\t\t\tclassifiers[block].Allocate(startBlock, numberStyles);\n\t\t\treturn startBlock;\n\t\t} else {\n\t\t\treturn -1;\n\t\t}\n\t}\n\n\tint Start(int styleBase) {\n\t\tint block = BlockFromBaseStyle(styleBase);\n\t\treturn (block >= 0) ? classifiers[block].Start() : -1;\n\t}\n\n\tint Length(int styleBase) {\n\t\tint block = BlockFromBaseStyle(styleBase);\n\t\treturn (block >= 0) ? classifiers[block].Length() : 0;\n\t}\n\n\tint BaseStyle(int subStyle) const {\n\t\tint block = BlockFromStyle(subStyle);\n\t\tif (block >= 0)\n\t\t\treturn classifiers[block].Base();\n\t\telse\n\t\t\treturn subStyle;\n\t}\n\n\tint DistanceToSecondaryStyles() const {\n\t\treturn secondaryDistance;\n\t}\n\n\tvoid SetIdentifiers(int style, const char *identifiers) {\n\t\tint block = BlockFromStyle(style);\n\t\tif (block >= 0)\n\t\t\tclassifiers[block].SetIdentifiers(style, identifiers);\n\t}\n\n\tvoid Free() {\n\t\tallocated = 0;\n\t\tfor (std::vector<WordClassifier>::iterator it=classifiers.begin(); it != classifiers.end(); ++it)\n\t\t\tit->Clear();\n\t}\n\n\tconst WordClassifier &Classifier(int baseStyle) const {\n\t\tconst int block = BlockFromBaseStyle(baseStyle);\n\t\treturn classifiers[block >= 0 ? block : 0];\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/WordList.cpp",
    "content": "// Scintilla source code edit control\n/** @file WordList.cxx\n ** Hold a list of words.\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <ctype.h>\n\n#include <algorithm>\n\n#include \"StringCopy.h\"\n#include \"WordList.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/**\n * Creates an array that points into each word in the string and puts \\0 terminators\n * after each word.\n */\nstatic char **ArrayFromWordList(char *wordlist, int *len, bool onlyLineEnds = false) {\n\tint prev = '\\n';\n\tint words = 0;\n\t// For rapid determination of whether a character is a separator, build\n\t// a look up table.\n\tbool wordSeparator[256];\n\tfor (int i=0; i<256; i++) {\n\t\twordSeparator[i] = false;\n\t}\n\twordSeparator[static_cast<unsigned int>('\\r')] = true;\n\twordSeparator[static_cast<unsigned int>('\\n')] = true;\n\tif (!onlyLineEnds) {\n\t\twordSeparator[static_cast<unsigned int>(' ')] = true;\n\t\twordSeparator[static_cast<unsigned int>('\\t')] = true;\n\t}\n\tfor (int j = 0; wordlist[j]; j++) {\n\t\tint curr = static_cast<unsigned char>(wordlist[j]);\n\t\tif (!wordSeparator[curr] && wordSeparator[prev])\n\t\t\twords++;\n\t\tprev = curr;\n\t}\n\tchar **keywords = new char *[words + 1];\n\tint wordsStore = 0;\n\tconst size_t slen = strlen(wordlist);\n\tif (words) {\n\t\tprev = '\\0';\n\t\tfor (size_t k = 0; k < slen; k++) {\n\t\t\tif (!wordSeparator[static_cast<unsigned char>(wordlist[k])]) {\n\t\t\t\tif (!prev) {\n\t\t\t\t\tkeywords[wordsStore] = &wordlist[k];\n\t\t\t\t\twordsStore++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twordlist[k] = '\\0';\n\t\t\t}\n\t\t\tprev = wordlist[k];\n\t\t}\n\t}\n\tkeywords[wordsStore] = &wordlist[slen];\n\t*len = wordsStore;\n\treturn keywords;\n}\n\nWordList::WordList(bool onlyLineEnds_) :\n\twords(0), list(0), len(0), onlyLineEnds(onlyLineEnds_) {\n\t// Prevent warnings by static analyzers about uninitialized starts.\n\tstarts[0] = -1;\n}\n\nWordList::~WordList() {\n\tClear();\n}\n\nWordList::operator bool() const {\n\treturn len ? true : false;\n}\n\nbool WordList::operator!=(const WordList &other) const {\n\tif (len != other.len)\n\t\treturn true;\n\tfor (int i=0; i<len; i++) {\n\t\tif (strcmp(words[i], other.words[i]) != 0)\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\nint WordList::Length() const {\n\treturn len;\n}\n\nvoid WordList::Clear() {\n\tif (words) {\n\t\tdelete []list;\n\t\tdelete []words;\n\t}\n\twords = 0;\n\tlist = 0;\n\tlen = 0;\n}\n\n#ifdef _MSC_VER\n\nstatic bool cmpWords(const char *a, const char *b) {\n\treturn strcmp(a, b) < 0;\n}\n\n#else\n\nstatic int cmpWords(const void *a, const void *b) {\n\treturn strcmp(*static_cast<const char * const *>(a), *static_cast<const char * const *>(b));\n}\n\nstatic void SortWordList(char **words, unsigned int len) {\n\tqsort(reinterpret_cast<void *>(words), len, sizeof(*words), cmpWords);\n}\n\n#endif\n\nvoid WordList::Set(const char *s) {\n\tClear();\n\tconst size_t lenS = strlen(s) + 1;\n\tlist = new char[lenS];\n\tmemcpy(list, s, lenS);\n\twords = ArrayFromWordList(list, &len, onlyLineEnds);\n#ifdef _MSC_VER\n\tstd::sort(words, words + len, cmpWords);\n#else\n\tSortWordList(words, len);\n#endif\n\tfor (unsigned int k = 0; k < ELEMENTS(starts); k++)\n\t\tstarts[k] = -1;\n\tfor (int l = len - 1; l >= 0; l--) {\n\t\tunsigned char indexChar = words[l][0];\n\t\tstarts[indexChar] = l;\n\t}\n}\n\n/** Check whether a string is in the list.\n * List elements are either exact matches or prefixes.\n * Prefix elements start with '^' and match all strings that start with the rest of the element\n * so '^GTK_' matches 'GTK_X', 'GTK_MAJOR_VERSION', and 'GTK_'.\n */\nbool WordList::InList(const char *s) const {\n\tif (0 == words)\n\t\treturn false;\n\tunsigned char firstChar = s[0];\n\tint j = starts[firstChar];\n\tif (j >= 0) {\n\t\twhile (static_cast<unsigned char>(words[j][0]) == firstChar) {\n\t\t\tif (s[1] == words[j][1]) {\n\t\t\t\tconst char *a = words[j] + 1;\n\t\t\t\tconst char *b = s + 1;\n\t\t\t\twhile (*a && *a == *b) {\n\t\t\t\t\ta++;\n\t\t\t\t\tb++;\n\t\t\t\t}\n\t\t\t\tif (!*a && !*b)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\tj++;\n\t\t}\n\t}\n\tj = starts[static_cast<unsigned int>('^')];\n\tif (j >= 0) {\n\t\twhile (words[j][0] == '^') {\n\t\t\tconst char *a = words[j] + 1;\n\t\t\tconst char *b = s;\n\t\t\twhile (*a && *a == *b) {\n\t\t\t\ta++;\n\t\t\t\tb++;\n\t\t\t}\n\t\t\tif (!*a)\n\t\t\t\treturn true;\n\t\t\tj++;\n\t\t}\n\t}\n\treturn false;\n}\n\n/** similar to InList, but word s can be a substring of keyword.\n * eg. the keyword define is defined as def~ine. This means the word must start\n * with def to be a keyword, but also defi, defin and define are valid.\n * The marker is ~ in this case.\n */\nbool WordList::InListAbbreviated(const char *s, const char marker) const {\n\tif (0 == words)\n\t\treturn false;\n\tunsigned char firstChar = s[0];\n\tint j = starts[firstChar];\n\tif (j >= 0) {\n\t\twhile (static_cast<unsigned char>(words[j][0]) == firstChar) {\n\t\t\tbool isSubword = false;\n\t\t\tint start = 1;\n\t\t\tif (words[j][1] == marker) {\n\t\t\t\tisSubword = true;\n\t\t\t\tstart++;\n\t\t\t}\n\t\t\tif (s[1] == words[j][start]) {\n\t\t\t\tconst char *a = words[j] + start;\n\t\t\t\tconst char *b = s + 1;\n\t\t\t\twhile (*a && *a == *b) {\n\t\t\t\t\ta++;\n\t\t\t\t\tif (*a == marker) {\n\t\t\t\t\t\tisSubword = true;\n\t\t\t\t\t\ta++;\n\t\t\t\t\t}\n\t\t\t\t\tb++;\n\t\t\t\t}\n\t\t\t\tif ((!*a || isSubword) && !*b)\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\tj++;\n\t\t}\n\t}\n\tj = starts[static_cast<unsigned int>('^')];\n\tif (j >= 0) {\n\t\twhile (words[j][0] == '^') {\n\t\t\tconst char *a = words[j] + 1;\n\t\t\tconst char *b = s;\n\t\t\twhile (*a && *a == *b) {\n\t\t\t\ta++;\n\t\t\t\tb++;\n\t\t\t}\n\t\t\tif (!*a)\n\t\t\t\treturn true;\n\t\t\tj++;\n\t\t}\n\t}\n\treturn false;\n}\n\n/** similar to InListAbbreviated, but word s can be a abridged version of a keyword.\n* eg. the keyword is defined as \"after.~:\". This means the word must have a prefix (begins with) of\n* \"after.\" and suffix (ends with) of \":\" to be a keyword, Hence \"after.field:\" , \"after.form.item:\" are valid.\n* Similarly \"~.is.valid\" keyword is suffix only... hence \"field.is.valid\" , \"form.is.valid\" are valid.\n* The marker is ~ in this case.\n* No multiple markers check is done and wont work.\n*/\nbool WordList::InListAbridged(const char *s, const char marker) const {\n\tif (0 == words)\n\t\treturn false;\n\tunsigned char firstChar = s[0];\n\tint j = starts[firstChar];\n\tif (j >= 0) {\n\t\twhile (static_cast<unsigned char>(words[j][0]) == firstChar) {\n\t\t\tconst char *a = words[j];\n\t\t\tconst char *b = s;\n\t\t\twhile (*a && *a == *b) {\n\t\t\t\ta++;\n\t\t\t\tif (*a == marker) {\n\t\t\t\t\ta++;\n\t\t\t\t\tconst size_t suffixLengthA = strlen(a);\n\t\t\t\t\tconst size_t suffixLengthB = strlen(b);\n\t\t\t\t\tif (suffixLengthA >= suffixLengthB)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tb = b + suffixLengthB - suffixLengthA - 1;\n\t\t\t\t}\n\t\t\t\tb++;\n\t\t\t}\n\t\t\tif (!*a  && !*b)\n\t\t\t\treturn true;\n\t\t\tj++;\n\t\t}\n\t}\n\n\tj = starts[static_cast<unsigned int>(marker)];\n\tif (j >= 0) {\n\t\twhile (words[j][0] == marker) {\n\t\t\tconst char *a = words[j] + 1;\n\t\t\tconst char *b = s;\n\t\t\tconst size_t suffixLengthA = strlen(a);\n\t\t\tconst size_t suffixLengthB = strlen(b);\n\t\t\tif (suffixLengthA > suffixLengthB) {\n\t\t\t\tj++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tb = b + suffixLengthB - suffixLengthA;\n\n\t\t\twhile (*a && *a == *b) {\n\t\t\t\ta++;\n\t\t\t\tb++;\n\t\t\t}\n\t\t\tif (!*a && !*b)\n\t\t\t\treturn true;\n\t\t\tj++;\n\t\t}\n\t}\n\n\treturn false;\n}\n\nconst char *WordList::WordAt(int n) const {\n\treturn words[n];\n}\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/lexlib/WordList.h",
    "content": "// Scintilla source code edit control\n/** @file WordList.h\n ** Hold a list of words.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef WORDLIST_H\n#define WORDLIST_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n */\nclass WordList {\n\t// Each word contains at least one character - a empty word acts as sentinel at the end.\n\tchar **words;\n\tchar *list;\n\tint len;\n\tbool onlyLineEnds;\t///< Delimited by any white space or only line ends\n\tint starts[256];\npublic:\n\texplicit WordList(bool onlyLineEnds_ = false);\n\t~WordList();\n\toperator bool() const;\n\tbool operator!=(const WordList &other) const;\n\tint Length() const;\n\tvoid Clear();\n\tvoid Set(const char *s);\n\tbool InList(const char *s) const;\n\tbool InListAbbreviated(const char *s, const char marker) const;\n\tbool InListAbridged(const char *s, const char marker) const;\n\tconst char *WordAt(int n) const;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/qscintilla.pri",
    "content": "# The project file for the QScintilla library.\n#\n# Copyright (c) 2017 Riverbank Computing Limited <info@riverbankcomputing.com>\n# \n# This file is part of QScintilla.\n# \n# This file may be used under the terms of the GNU General Public License\n# version 3.0 as published by the Free Software Foundation and appearing in\n# the file LICENSE included in the packaging of this file.  Please review the\n# following information to ensure the GNU General Public License version 3.0\n# requirements will be met: http://www.gnu.org/copyleft/gpl.html.\n# \n# If you do not wish to use this file under the terms of the GPL version 3.0\n# then you may purchase a commercial license.  For more information contact\n# info@riverbankcomputing.com.\n# \n# This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE\n# WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.\n\n\n# This must be kept in sync with Python/configure.py, Python/configure-old.py,\n# example-Qt4Qt5/application.pro and designer-Qt4Qt5/designer.pro.\n#!win32:VERSION = 13.0.0\n\n#TEMPLATE = lib\n#TARGET = qscintilla2_qt$${QT_MAJOR_VERSION}\nCONFIG += qt warn_off thread exceptions hide_symbols\nINCLUDEPATH += $$QSCINTILLA_SRC_DIR/Qt4Qt5 $$QSCINTILLA_SRC_DIR/include $$QSCINTILLA_SRC_DIR/lexlib $$QSCINTILLA_SRC_DIR/src\n\n!CONFIG(staticlib) {\n    DEFINES += QSCINTILLA_MAKE_DLL\n}\nDEFINES += SCINTILLA_QT SCI_LEXER\n\ngreaterThan(QT_MAJOR_VERSION, 4) {\n\tQT += widgets printsupport\n\n    greaterThan(QT_MINOR_VERSION, 1) {\n\t    macx:QT += macextras\n    }\n\n    # Work around QTBUG-39300.\n    CONFIG -= android_install\n}\n\n# Comment this in if you want the internal Scintilla classes to be placed in a\n# Scintilla namespace rather than pollute the global namespace.\n#DEFINES += SCI_NAMESPACE\n\n#target.path = $$[QT_INSTALL_LIBS]\n#INSTALLS += target\n#\n#header.path = $$[QT_INSTALL_HEADERS]\n#header.files = Qsci\n#INSTALLS += header\n\n#trans.path = $$[QT_INSTALL_TRANSLATIONS]\n#trans.files = qscintilla_*.qm\n#INSTALLS += trans\n\n#qsci.path = $$[QT_INSTALL_DATA]\n#qsci.files = ../qsci\n#INSTALLS += qsci\n\n#greaterThan(QT_MAJOR_VERSION, 4) {\n#    features.path = $$[QT_HOST_DATA]/mkspecs/features\n#} else {\n#    features.path = $$[QT_INSTALL_DATA]/mkspecs/features\n#}\n#CONFIG(staticlib) {\n#    features.files = $$PWD/features_staticlib/qscintilla2.prf\n#} else {\n#    features.files = $$PWD/features/qscintilla2.prf\n#}\n#INSTALLS += features\n\nHEADERS += \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qsciglobal.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qsciscintilla.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qsciscintillabase.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qsciabstractapis.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qsciapis.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscicommand.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscicommandset.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscidocument.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexer.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexeravs.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerbash.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerbatch.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexercmake.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexercoffeescript.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexercpp.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexercsharp.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexercss.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexercustom.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerd.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerdiff.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerfortran.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerfortran77.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerhtml.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexeridl.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerjava.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerjavascript.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerjson.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerlua.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexermakefile.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexermarkdown.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexermatlab.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexeroctave.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerpascal.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerperl.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerpostscript.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerpo.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerpov.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerproperties.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerpython.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerruby.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerspice.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexersql.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexertcl.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexertex.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerverilog.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexervhdl.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexerxml.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscilexeryaml.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscimacro.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qsciprinter.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscistyle.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/Qsci/qscistyledtext.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/ListBoxQt.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/SciClasses.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/SciNamespace.h \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/ScintillaQt.h \\\n        $$QSCINTILLA_SRC_DIR/include/ILexer.h \\\n        $$QSCINTILLA_SRC_DIR/include/Platform.h \\\n        $$QSCINTILLA_SRC_DIR/include/Sci_Position.h \\\n        $$QSCINTILLA_SRC_DIR/include/SciLexer.h \\\n        $$QSCINTILLA_SRC_DIR/include/Scintilla.h \\\n        $$QSCINTILLA_SRC_DIR/include/ScintillaWidget.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/Accessor.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/CharacterCategory.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/CharacterSet.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexAccessor.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexerBase.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexerModule.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexerNoExceptions.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexerSimple.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/OptionSet.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/PropSetSimple.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/StringCopy.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/StyleContext.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/SubStyles.h \\\n        $$QSCINTILLA_SRC_DIR/lexlib/WordList.h \\\n        $$QSCINTILLA_SRC_DIR/src/AutoComplete.h \\\n        $$QSCINTILLA_SRC_DIR/src/CallTip.h \\\n        $$QSCINTILLA_SRC_DIR/src/CaseConvert.h \\\n        $$QSCINTILLA_SRC_DIR/src/CaseFolder.h \\\n        $$QSCINTILLA_SRC_DIR/src/Catalogue.h \\\n        $$QSCINTILLA_SRC_DIR/src/CellBuffer.h \\\n        $$QSCINTILLA_SRC_DIR/src/CharClassify.h \\\n        $$QSCINTILLA_SRC_DIR/src/ContractionState.h \\\n        $$QSCINTILLA_SRC_DIR/src/Decoration.h \\\n        $$QSCINTILLA_SRC_DIR/src/Document.h \\\n        $$QSCINTILLA_SRC_DIR/src/EditModel.h \\\n        $$QSCINTILLA_SRC_DIR/src/Editor.h \\\n        $$QSCINTILLA_SRC_DIR/src/EditView.h \\\n        $$QSCINTILLA_SRC_DIR/src/ExternalLexer.h \\\n        $$QSCINTILLA_SRC_DIR/src/FontQuality.h \\\n        $$QSCINTILLA_SRC_DIR/src/Indicator.h \\\n        $$QSCINTILLA_SRC_DIR/src/KeyMap.h \\\n        $$QSCINTILLA_SRC_DIR/src/LineMarker.h \\\n        $$QSCINTILLA_SRC_DIR/src/MarginView.h \\\n        $$QSCINTILLA_SRC_DIR/src/Partitioning.h \\\n        $$QSCINTILLA_SRC_DIR/src/PerLine.h \\\n        $$QSCINTILLA_SRC_DIR/src/PositionCache.h \\\n        $$QSCINTILLA_SRC_DIR/src/RESearch.h \\\n        $$QSCINTILLA_SRC_DIR/src/RunStyles.h \\\n        $$QSCINTILLA_SRC_DIR/src/ScintillaBase.h \\\n        $$QSCINTILLA_SRC_DIR/src/Selection.h \\\n        $$QSCINTILLA_SRC_DIR/src/SplitVector.h \\\n        $$QSCINTILLA_SRC_DIR/src/Style.h \\\n        $$QSCINTILLA_SRC_DIR/src/UnicodeFromUTF8.h \\\n        $$QSCINTILLA_SRC_DIR/src/UniConversion.h \\\n        $$QSCINTILLA_SRC_DIR/src/ViewStyle.h \\\n        $$QSCINTILLA_SRC_DIR/src/XPM.h\n\nSOURCES += \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qsciscintilla.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qsciscintillabase.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qsciabstractapis.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qsciapis.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscicommand.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscicommandset.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscidocument.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexer.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexeravs.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerbash.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerbatch.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexercmake.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexercoffeescript.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexercpp.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexercsharp.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexercss.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexercustom.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerd.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerdiff.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerfortran.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerfortran77.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerhtml.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexeridl.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerjava.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerjavascript.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerjson.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerlua.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexermakefile.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexermarkdown.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexermatlab.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexeroctave.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerpascal.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerperl.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerpostscript.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerpo.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerpov.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerproperties.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerpython.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerruby.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerspice.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexersql.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexertcl.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexertex.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerverilog.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexervhdl.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexerxml.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscilexeryaml.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscimacro.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qsciprinter.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscistyle.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscistyledtext.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/MacPasteboardMime.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/InputMethod.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/SciClasses.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/ListBoxQt.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/PlatQt.cpp \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/ScintillaQt.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexA68k.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexAbaqus.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexAda.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexAPDL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexAsm.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexAsn1.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexASY.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexAU3.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexAVE.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexAVS.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexBaan.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexBash.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexBasic.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexBatch.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexBullant.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCaml.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCLW.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCmake.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCOBOL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCoffeeScript.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexConf.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCPP.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCrontab.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCsound.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexCSS.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexD.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexDiff.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexDMAP.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexDMIS.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexECL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexEDIFACT.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexEiffel.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexErlang.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexErrorList.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexEScript.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexFlagship.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexForth.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexFortran.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexGAP.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexGui4Cli.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexHaskell.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexHex.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexHTML.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexInno.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexJSON.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexKix.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexKVIrc.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexLisp.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexLout.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexLua.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMagik.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMake.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMarkdown.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMatlab.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMetapost.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMMIXAL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexModula.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMPT.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMSSQL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexMySQL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexNimrod.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexNsis.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexNull.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexOpal.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexOScript.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPascal.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPB.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPerl.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPLM.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPO.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPOV.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPowerPro.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPowerShell.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexProgress.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexProps.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPS.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexPython.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexR.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexRebol.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexRegistry.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexRuby.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexRust.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexScriptol.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexSmalltalk.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexSML.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexSorcus.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexSpecman.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexSpice.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexSQL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexSTTXT.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexTACL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexTADS3.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexTAL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexTCL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexTCMD.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexTeX.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexTxt2tags.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexVB.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexVerilog.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexVHDL.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexVisualProlog.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexers/LexYAML.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/Accessor.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/CharacterCategory.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/CharacterSet.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexerBase.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexerModule.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexerNoExceptions.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/LexerSimple.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/PropSetSimple.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/StyleContext.cpp \\\n        $$QSCINTILLA_SRC_DIR/lexlib/WordList.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/AutoComplete.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/CallTip.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/CaseConvert.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/CaseFolder.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/Catalogue.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/CellBuffer.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/CharClassify.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/ContractionState.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/Decoration.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/Document.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/EditModel.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/Editor.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/EditView.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/ExternalLexer.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/Indicator.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/KeyMap.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/LineMarker.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/MarginView.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/PerLine.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/PositionCache.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/RESearch.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/RunStyles.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/ScintillaBase.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/Selection.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/Style.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/UniConversion.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/ViewStyle.cpp \\\n        $$QSCINTILLA_SRC_DIR/src/XPM.cpp\n\nTRANSLATIONS += \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscintilla_cs.ts \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscintilla_de.ts \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscintilla_es.ts \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscintilla_fr.ts \\\n        $$QSCINTILLA_SRC_DIR/Qt4Qt5/qscintilla_pt_br.ts\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/AutoComplete.cpp",
    "content": "// Scintilla source code edit control\n/** @file AutoComplete.cxx\n ** Defines the auto completion list box.\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <assert.h>\n\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n#include \"CharacterSet.h\"\n#include \"Position.h\"\n#include \"AutoComplete.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nAutoComplete::AutoComplete() :\n\tactive(false),\n\tseparator(' '),\n\ttypesep('?'),\n\tignoreCase(false),\n\tchooseSingle(false),\n\tlb(0),\n\tposStart(0),\n\tstartLen(0),\n\tcancelAtStartPos(true),\n\tautoHide(true),\n\tdropRestOfWord(false),\n\tignoreCaseBehaviour(SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE),\n\twidthLBDefault(100),\n\theightLBDefault(100),\n\tautoSort(SC_ORDER_PRESORTED) {\n\tlb = ListBox::Allocate();\n}\n\nAutoComplete::~AutoComplete() {\n\tif (lb) {\n\t\tlb->Destroy();\n\t\tdelete lb;\n\t\tlb = 0;\n\t}\n}\n\nbool AutoComplete::Active() const {\n\treturn active;\n}\n\nvoid AutoComplete::Start(Window &parent, int ctrlID,\n\tint position, Point location, int startLen_,\n\tint lineHeight, bool unicodeMode, int technology) {\n\tif (active) {\n\t\tCancel();\n\t}\n\tlb->Create(parent, ctrlID, location, lineHeight, unicodeMode, technology);\n\tlb->Clear();\n\tactive = true;\n\tstartLen = startLen_;\n\tposStart = position;\n}\n\nvoid AutoComplete::SetStopChars(const char *stopChars_) {\n\tstopChars = stopChars_;\n}\n\nbool AutoComplete::IsStopChar(char ch) {\n\treturn ch && (stopChars.find(ch) != std::string::npos);\n}\n\nvoid AutoComplete::SetFillUpChars(const char *fillUpChars_) {\n\tfillUpChars = fillUpChars_;\n}\n\nbool AutoComplete::IsFillUpChar(char ch) {\n\treturn ch && (fillUpChars.find(ch) != std::string::npos);\n}\n\nvoid AutoComplete::SetSeparator(char separator_) {\n\tseparator = separator_;\n}\n\nchar AutoComplete::GetSeparator() const {\n\treturn separator;\n}\n\nvoid AutoComplete::SetTypesep(char separator_) {\n\ttypesep = separator_;\n}\n\nchar AutoComplete::GetTypesep() const {\n\treturn typesep;\n}\n\nstruct Sorter {\n\tAutoComplete *ac;\n\tconst char *list;\n\tstd::vector<int> indices;\n\n\tSorter(AutoComplete *ac_, const char *list_) : ac(ac_), list(list_) {\n\t\tint i = 0;\n\t\twhile (list[i]) {\n\t\t\tindices.push_back(i); // word start\n\t\t\twhile (list[i] != ac->GetTypesep() && list[i] != ac->GetSeparator() && list[i])\n\t\t\t\t++i;\n\t\t\tindices.push_back(i); // word end\n\t\t\tif (list[i] == ac->GetTypesep()) {\n\t\t\t\twhile (list[i] != ac->GetSeparator() && list[i])\n\t\t\t\t\t++i;\n\t\t\t}\n\t\t\tif (list[i] == ac->GetSeparator()) {\n\t\t\t\t++i;\n\t\t\t\t// preserve trailing separator as blank entry\n\t\t\t\tif (!list[i]) {\n\t\t\t\t\tindices.push_back(i);\n\t\t\t\t\tindices.push_back(i);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tindices.push_back(i); // index of last position\n\t}\n\n\tbool operator()(int a, int b) {\n\t\tint lenA = indices[a * 2 + 1] - indices[a * 2];\n\t\tint lenB = indices[b * 2 + 1] - indices[b * 2];\n\t\tint len  = std::min(lenA, lenB);\n\t\tint cmp;\n\t\tif (ac->ignoreCase)\n\t\t\tcmp = CompareNCaseInsensitive(list + indices[a * 2], list + indices[b * 2], len);\n\t\telse\n\t\t\tcmp = strncmp(list + indices[a * 2], list + indices[b * 2], len);\n\t\tif (cmp == 0)\n\t\t\tcmp = lenA - lenB;\n\t\treturn cmp < 0;\n\t}\n};\n\nvoid AutoComplete::SetList(const char *list) {\n\tif (autoSort == SC_ORDER_PRESORTED) {\n\t\tlb->SetList(list, separator, typesep);\n\t\tsortMatrix.clear();\n\t\tfor (int i = 0; i < lb->Length(); ++i)\n\t\t\tsortMatrix.push_back(i);\n\t\treturn;\n\t}\n\n\tSorter IndexSort(this, list);\n\tsortMatrix.clear();\n\tfor (int i = 0; i < (int)IndexSort.indices.size() / 2; ++i)\n\t\tsortMatrix.push_back(i);\n\tstd::sort(sortMatrix.begin(), sortMatrix.end(), IndexSort);\n\tif (autoSort == SC_ORDER_CUSTOM || sortMatrix.size() < 2) {\n\t\tlb->SetList(list, separator, typesep);\n\t\tPLATFORM_ASSERT(lb->Length() == static_cast<int>(sortMatrix.size()));\n\t\treturn;\n\t}\n\n\tstd::string sortedList;\n\tchar item[maxItemLen];\n\tfor (size_t i = 0; i < sortMatrix.size(); ++i) {\n\t\tint wordLen = IndexSort.indices[sortMatrix[i] * 2 + 2] - IndexSort.indices[sortMatrix[i] * 2];\n\t\tif (wordLen > maxItemLen-2)\n\t\t\twordLen = maxItemLen - 2;\n\t\tmemcpy(item, list + IndexSort.indices[sortMatrix[i] * 2], wordLen);\n\t\tif ((i+1) == sortMatrix.size()) {\n\t\t\t// Last item so remove separator if present\n\t\t\tif ((wordLen > 0) && (item[wordLen-1] == separator))\n\t\t\t\twordLen--;\n\t\t} else {\n\t\t\t// Item before last needs a separator\n\t\t\tif ((wordLen == 0) || (item[wordLen-1] != separator)) {\n\t\t\t\titem[wordLen] = separator;\n\t\t\t\twordLen++;\n\t\t\t}\n\t\t}\n\t\titem[wordLen] = '\\0';\n\t\tsortedList += item;\n\t}\n\tfor (int i = 0; i < (int)sortMatrix.size(); ++i)\n\t\tsortMatrix[i] = i;\n\tlb->SetList(sortedList.c_str(), separator, typesep);\n}\n\nint AutoComplete::GetSelection() const {\n\treturn lb->GetSelection();\n}\n\nstd::string AutoComplete::GetValue(int item) const {\n\tchar value[maxItemLen];\n\tlb->GetValue(item, value, sizeof(value));\n\treturn std::string(value);\n}\n\nvoid AutoComplete::Show(bool show) {\n\tlb->Show(show);\n\tif (show)\n\t\tlb->Select(0);\n}\n\nvoid AutoComplete::Cancel() {\n\tif (lb->Created()) {\n\t\tlb->Clear();\n\t\tlb->Destroy();\n\t\tactive = false;\n\t}\n}\n\n\nvoid AutoComplete::Move(int delta) {\n\tint count = lb->Length();\n\tint current = lb->GetSelection();\n\tcurrent += delta;\n\tif (current >= count)\n\t\tcurrent = count - 1;\n\tif (current < 0)\n\t\tcurrent = 0;\n\tlb->Select(current);\n}\n\nvoid AutoComplete::Select(const char *word) {\n\tsize_t lenWord = strlen(word);\n\tint location = -1;\n\tint start = 0; // lower bound of the api array block to search\n\tint end = lb->Length() - 1; // upper bound of the api array block to search\n\twhile ((start <= end) && (location == -1)) { // Binary searching loop\n\t\tint pivot = (start + end) / 2;\n\t\tchar item[maxItemLen];\n\t\tlb->GetValue(sortMatrix[pivot], item, maxItemLen);\n\t\tint cond;\n\t\tif (ignoreCase)\n\t\t\tcond = CompareNCaseInsensitive(word, item, lenWord);\n\t\telse\n\t\t\tcond = strncmp(word, item, lenWord);\n\t\tif (!cond) {\n\t\t\t// Find first match\n\t\t\twhile (pivot > start) {\n\t\t\t\tlb->GetValue(sortMatrix[pivot-1], item, maxItemLen);\n\t\t\t\tif (ignoreCase)\n\t\t\t\t\tcond = CompareNCaseInsensitive(word, item, lenWord);\n\t\t\t\telse\n\t\t\t\t\tcond = strncmp(word, item, lenWord);\n\t\t\t\tif (0 != cond)\n\t\t\t\t\tbreak;\n\t\t\t\t--pivot;\n\t\t\t}\n\t\t\tlocation = pivot;\n\t\t\tif (ignoreCase\n\t\t\t\t&& ignoreCaseBehaviour == SC_CASEINSENSITIVEBEHAVIOUR_RESPECTCASE) {\n\t\t\t\t// Check for exact-case match\n\t\t\t\tfor (; pivot <= end; pivot++) {\n\t\t\t\t\tlb->GetValue(sortMatrix[pivot], item, maxItemLen);\n\t\t\t\t\tif (!strncmp(word, item, lenWord)) {\n\t\t\t\t\t\tlocation = pivot;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tif (CompareNCaseInsensitive(word, item, lenWord))\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (cond < 0) {\n\t\t\tend = pivot - 1;\n\t\t} else if (cond > 0) {\n\t\t\tstart = pivot + 1;\n\t\t}\n\t}\n\tif (location == -1) {\n\t\tif (autoHide)\n\t\t\tCancel();\n\t\telse\n\t\t\tlb->Select(-1);\n\t} else {\n\t\tif (autoSort == SC_ORDER_CUSTOM) {\n\t\t\t// Check for a logically earlier match\n\t\t\tchar item[maxItemLen];\n\t\t\tfor (int i = location + 1; i <= end; ++i) {\n\t\t\t\tlb->GetValue(sortMatrix[i], item, maxItemLen);\n\t\t\t\tif (CompareNCaseInsensitive(word, item, lenWord))\n\t\t\t\t\tbreak;\n\t\t\t\tif (sortMatrix[i] < sortMatrix[location] && !strncmp(word, item, lenWord))\n\t\t\t\t\tlocation = i;\n\t\t\t}\n\t\t}\n\t\tlb->Select(sortMatrix[location]);\n\t}\n}\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/AutoComplete.h",
    "content": "// Scintilla source code edit control\n/** @file AutoComplete.h\n ** Defines the auto completion list box.\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef AUTOCOMPLETE_H\n#define AUTOCOMPLETE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n */\nclass AutoComplete {\n\tbool active;\n\tstd::string stopChars;\n\tstd::string fillUpChars;\n\tchar separator;\n\tchar typesep; // Type seperator\n\tenum { maxItemLen=1000 };\n\tstd::vector<int> sortMatrix;\n\npublic:\n\n\tbool ignoreCase;\n\tbool chooseSingle;\n\tListBox *lb;\n\tint posStart;\n\tint startLen;\n\t/// Should autocompletion be canceled if editor's currentPos <= startPos?\n\tbool cancelAtStartPos;\n\tbool autoHide;\n\tbool dropRestOfWord;\n\tunsigned int ignoreCaseBehaviour;\n\tint widthLBDefault;\n\tint heightLBDefault;\n\t/** SC_ORDER_PRESORTED:   Assume the list is presorted; selection will fail if it is not alphabetical<br />\n\t *  SC_ORDER_PERFORMSORT: Sort the list alphabetically; start up performance cost for sorting<br />\n\t *  SC_ORDER_CUSTOM:      Handle non-alphabetical entries; start up performance cost for generating a sorted lookup table\n\t */\n\tint autoSort;\n\n\tAutoComplete();\n\t~AutoComplete();\n\n\t/// Is the auto completion list displayed?\n\tbool Active() const;\n\n\t/// Display the auto completion list positioned to be near a character position\n\tvoid Start(Window &parent, int ctrlID, int position, Point location,\n\t\tint startLen_, int lineHeight, bool unicodeMode, int technology);\n\n\t/// The stop chars are characters which, when typed, cause the auto completion list to disappear\n\tvoid SetStopChars(const char *stopChars_);\n\tbool IsStopChar(char ch);\n\n\t/// The fillup chars are characters which, when typed, fill up the selected word\n\tvoid SetFillUpChars(const char *fillUpChars_);\n\tbool IsFillUpChar(char ch);\n\n\t/// The separator character is used when interpreting the list in SetList\n\tvoid SetSeparator(char separator_);\n\tchar GetSeparator() const;\n\n\t/// The typesep character is used for separating the word from the type\n\tvoid SetTypesep(char separator_);\n\tchar GetTypesep() const;\n\n\t/// The list string contains a sequence of words separated by the separator character\n\tvoid SetList(const char *list);\n\n\t/// Return the position of the currently selected list item\n\tint GetSelection() const;\n\n\t/// Return the value of an item in the list\n\tstd::string GetValue(int item) const;\n\n\tvoid Show(bool show);\n\tvoid Cancel();\n\n\t/// Move the current list element by delta, scrolling appropriately\n\tvoid Move(int delta);\n\n\t/// Select a list element that starts with word as the current element\n\tvoid Select(const char *word);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CallTip.cpp",
    "content": "// Scintilla source code edit control\n/** @file CallTip.cxx\n ** Code for displaying call tips.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n\n#include <stdexcept>\n#include <string>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n\n#include \"StringCopy.h\"\n#include \"Position.h\"\n#include \"CallTip.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nCallTip::CallTip() {\n\twCallTip = 0;\n\tinCallTipMode = false;\n\tposStartCallTip = 0;\n\trectUp = PRectangle(0,0,0,0);\n\trectDown = PRectangle(0,0,0,0);\n\tlineHeight = 1;\n\toffsetMain = 0;\n\tstartHighlight = 0;\n\tendHighlight = 0;\n\ttabSize = 0;\n\tabove = false;\n\tuseStyleCallTip = false;    // for backwards compatibility\n\n\tinsetX = 5;\n\twidthArrow = 14;\n\tborderHeight = 2; // Extra line for border and an empty line at top and bottom.\n\tverticalOffset = 1;\n\n#ifdef __APPLE__\n\t// proper apple colours for the default\n\tcolourBG = ColourDesired(0xff, 0xff, 0xc6);\n\tcolourUnSel = ColourDesired(0, 0, 0);\n#else\n\tcolourBG = ColourDesired(0xff, 0xff, 0xff);\n\tcolourUnSel = ColourDesired(0x80, 0x80, 0x80);\n#endif\n\tcolourSel = ColourDesired(0, 0, 0x80);\n\tcolourShade = ColourDesired(0, 0, 0);\n\tcolourLight = ColourDesired(0xc0, 0xc0, 0xc0);\n\tcodePage = 0;\n\tclickPlace = 0;\n}\n\nCallTip::~CallTip() {\n\tfont.Release();\n\twCallTip.Destroy();\n}\n\n// Although this test includes 0, we should never see a \\0 character.\nstatic bool IsArrowCharacter(char ch) {\n\treturn (ch == 0) || (ch == '\\001') || (ch == '\\002');\n}\n\n// We ignore tabs unless a tab width has been set.\nbool CallTip::IsTabCharacter(char ch) const {\n\treturn (tabSize > 0) && (ch == '\\t');\n}\n\nint CallTip::NextTabPos(int x) const {\n\tif (tabSize > 0) {              // paranoia... not called unless this is true\n\t\tx -= insetX;                // position relative to text\n\t\tx = (x + tabSize) / tabSize;  // tab \"number\"\n\t\treturn tabSize*x + insetX;  // position of next tab\n\t} else {\n\t\treturn x + 1;                 // arbitrary\n\t}\n}\n\n// Draw a section of the call tip that does not include \\n in one colour.\n// The text may include up to numEnds tabs or arrow characters.\nvoid CallTip::DrawChunk(Surface *surface, int &x, const char *s,\n\tint posStart, int posEnd, int ytext, PRectangle rcClient,\n\tbool highlight, bool draw) {\n\ts += posStart;\n\tint len = posEnd - posStart;\n\n\t// Divide the text into sections that are all text, or that are\n\t// single arrows or single tab characters (if tabSize > 0).\n\tint maxEnd = 0;\n\tconst int numEnds = 10;\n\tint ends[numEnds + 2];\n\tfor (int i=0; i<len; i++) {\n\t\tif ((maxEnd < numEnds) &&\n\t\t        (IsArrowCharacter(s[i]) || IsTabCharacter(s[i]))) {\n\t\t\tif (i > 0)\n\t\t\t\tends[maxEnd++] = i;\n\t\t\tends[maxEnd++] = i+1;\n\t\t}\n\t}\n\tends[maxEnd++] = len;\n\tint startSeg = 0;\n\tint xEnd;\n\tfor (int seg = 0; seg<maxEnd; seg++) {\n\t\tint endSeg = ends[seg];\n\t\tif (endSeg > startSeg) {\n\t\t\tif (IsArrowCharacter(s[startSeg])) {\n\t\t\t\txEnd = x + widthArrow;\n\t\t\t\tbool upArrow = s[startSeg] == '\\001';\n\t\t\t\trcClient.left = static_cast<XYPOSITION>(x);\n\t\t\t\trcClient.right = static_cast<XYPOSITION>(xEnd);\n\t\t\t\tif (draw) {\n\t\t\t\t\tconst int halfWidth = widthArrow / 2 - 3;\n\t\t\t\t\tconst int quarterWidth = halfWidth / 2;\n\t\t\t\t\tconst int centreX = x + widthArrow / 2 - 1;\n\t\t\t\t\tconst int centreY = static_cast<int>(rcClient.top + rcClient.bottom) / 2;\n\t\t\t\t\tsurface->FillRectangle(rcClient, colourBG);\n\t\t\t\t\tPRectangle rcClientInner(rcClient.left + 1, rcClient.top + 1,\n\t\t\t\t\t                         rcClient.right - 2, rcClient.bottom - 1);\n\t\t\t\t\tsurface->FillRectangle(rcClientInner, colourUnSel);\n\n\t\t\t\t\tif (upArrow) {      // Up arrow\n\t\t\t\t\t\tPoint pts[] = {\n    \t\t\t\t\t\tPoint::FromInts(centreX - halfWidth, centreY + quarterWidth),\n    \t\t\t\t\t\tPoint::FromInts(centreX + halfWidth, centreY + quarterWidth),\n    \t\t\t\t\t\tPoint::FromInts(centreX, centreY - halfWidth + quarterWidth),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsurface->Polygon(pts, ELEMENTS(pts), colourBG, colourBG);\n\t\t\t\t\t} else {            // Down arrow\n\t\t\t\t\t\tPoint pts[] = {\n    \t\t\t\t\t\tPoint::FromInts(centreX - halfWidth, centreY - quarterWidth),\n    \t\t\t\t\t\tPoint::FromInts(centreX + halfWidth, centreY - quarterWidth),\n    \t\t\t\t\t\tPoint::FromInts(centreX, centreY + halfWidth - quarterWidth),\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsurface->Polygon(pts, ELEMENTS(pts), colourBG, colourBG);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\toffsetMain = xEnd;\n\t\t\t\tif (upArrow) {\n\t\t\t\t\trectUp = rcClient;\n\t\t\t\t} else {\n\t\t\t\t\trectDown = rcClient;\n\t\t\t\t}\n\t\t\t} else if (IsTabCharacter(s[startSeg])) {\n\t\t\t\txEnd = NextTabPos(x);\n\t\t\t} else {\n\t\t\t\txEnd = x + RoundXYPosition(surface->WidthText(font, s + startSeg, endSeg - startSeg));\n\t\t\t\tif (draw) {\n\t\t\t\t\trcClient.left = static_cast<XYPOSITION>(x);\n\t\t\t\t\trcClient.right = static_cast<XYPOSITION>(xEnd);\n\t\t\t\t\tsurface->DrawTextTransparent(rcClient, font, static_cast<XYPOSITION>(ytext),\n\t\t\t\t\t\t\t\t\t\ts+startSeg, endSeg - startSeg,\n\t\t\t\t\t                             highlight ? colourSel : colourUnSel);\n\t\t\t\t}\n\t\t\t}\n\t\t\tx = xEnd;\n\t\t\tstartSeg = endSeg;\n\t\t}\n\t}\n}\n\nint CallTip::PaintContents(Surface *surfaceWindow, bool draw) {\n\tPRectangle rcClientPos = wCallTip.GetClientPosition();\n\tPRectangle rcClientSize(0.0f, 0.0f, rcClientPos.right - rcClientPos.left,\n\t                        rcClientPos.bottom - rcClientPos.top);\n\tPRectangle rcClient(1.0f, 1.0f, rcClientSize.right - 1, rcClientSize.bottom - 1);\n\n\t// To make a nice small call tip window, it is only sized to fit most normal characters without accents\n\tint ascent = RoundXYPosition(surfaceWindow->Ascent(font) - surfaceWindow->InternalLeading(font));\n\n\t// For each line...\n\t// Draw the definition in three parts: before highlight, highlighted, after highlight\n\tint ytext = static_cast<int>(rcClient.top) + ascent + 1;\n\trcClient.bottom = ytext + surfaceWindow->Descent(font) + 1;\n\tconst char *chunkVal = val.c_str();\n\tbool moreChunks = true;\n\tint maxWidth = 0;\n\n\twhile (moreChunks) {\n\t\tconst char *chunkEnd = strchr(chunkVal, '\\n');\n\t\tif (chunkEnd == NULL) {\n\t\t\tchunkEnd = chunkVal + strlen(chunkVal);\n\t\t\tmoreChunks = false;\n\t\t}\n\t\tint chunkOffset = static_cast<int>(chunkVal - val.c_str());\n\t\tint chunkLength = static_cast<int>(chunkEnd - chunkVal);\n\t\tint chunkEndOffset = chunkOffset + chunkLength;\n\t\tint thisStartHighlight = Platform::Maximum(startHighlight, chunkOffset);\n\t\tthisStartHighlight = Platform::Minimum(thisStartHighlight, chunkEndOffset);\n\t\tthisStartHighlight -= chunkOffset;\n\t\tint thisEndHighlight = Platform::Maximum(endHighlight, chunkOffset);\n\t\tthisEndHighlight = Platform::Minimum(thisEndHighlight, chunkEndOffset);\n\t\tthisEndHighlight -= chunkOffset;\n\t\trcClient.top = static_cast<XYPOSITION>(ytext - ascent - 1);\n\n\t\tint x = insetX;     // start each line at this inset\n\n\t\tDrawChunk(surfaceWindow, x, chunkVal, 0, thisStartHighlight,\n\t\t\tytext, rcClient, false, draw);\n\t\tDrawChunk(surfaceWindow, x, chunkVal, thisStartHighlight, thisEndHighlight,\n\t\t\tytext, rcClient, true, draw);\n\t\tDrawChunk(surfaceWindow, x, chunkVal, thisEndHighlight, chunkLength,\n\t\t\tytext, rcClient, false, draw);\n\n\t\tchunkVal = chunkEnd + 1;\n\t\tytext += lineHeight;\n\t\trcClient.bottom += lineHeight;\n\t\tmaxWidth = Platform::Maximum(maxWidth, x);\n\t}\n\treturn maxWidth;\n}\n\nvoid CallTip::PaintCT(Surface *surfaceWindow) {\n\tif (val.empty())\n\t\treturn;\n\tPRectangle rcClientPos = wCallTip.GetClientPosition();\n\tPRectangle rcClientSize(0.0f, 0.0f, rcClientPos.right - rcClientPos.left,\n\t                        rcClientPos.bottom - rcClientPos.top);\n\tPRectangle rcClient(1.0f, 1.0f, rcClientSize.right - 1, rcClientSize.bottom - 1);\n\n\tsurfaceWindow->FillRectangle(rcClient, colourBG);\n\n\toffsetMain = insetX;    // initial alignment assuming no arrows\n\tPaintContents(surfaceWindow, true);\n\n#ifndef __APPLE__\n\t// OSX doesn't put borders on \"help tags\"\n\t// Draw a raised border around the edges of the window\n\tsurfaceWindow->MoveTo(0, static_cast<int>(rcClientSize.bottom) - 1);\n\tsurfaceWindow->PenColour(colourShade);\n\tsurfaceWindow->LineTo(static_cast<int>(rcClientSize.right) - 1, static_cast<int>(rcClientSize.bottom) - 1);\n\tsurfaceWindow->LineTo(static_cast<int>(rcClientSize.right) - 1, 0);\n\tsurfaceWindow->PenColour(colourLight);\n\tsurfaceWindow->LineTo(0, 0);\n\tsurfaceWindow->LineTo(0, static_cast<int>(rcClientSize.bottom) - 1);\n#endif\n}\n\nvoid CallTip::MouseClick(Point pt) {\n\tclickPlace = 0;\n\tif (rectUp.Contains(pt))\n\t\tclickPlace = 1;\n\tif (rectDown.Contains(pt))\n\t\tclickPlace = 2;\n}\n\nPRectangle CallTip::CallTipStart(int pos, Point pt, int textHeight, const char *defn,\n                                 const char *faceName, int size,\n                                 int codePage_, int characterSet,\n\t\t\t\t\t\t\t\t int technology, Window &wParent) {\n\tclickPlace = 0;\n\tval = defn;\n\tcodePage = codePage_;\n\tSurface *surfaceMeasure = Surface::Allocate(technology);\n\tif (!surfaceMeasure)\n\t\treturn PRectangle();\n\tsurfaceMeasure->Init(wParent.GetID());\n\tsurfaceMeasure->SetUnicodeMode(SC_CP_UTF8 == codePage);\n\tsurfaceMeasure->SetDBCSMode(codePage);\n\tstartHighlight = 0;\n\tendHighlight = 0;\n\tinCallTipMode = true;\n\tposStartCallTip = pos;\n\tXYPOSITION deviceHeight = static_cast<XYPOSITION>(surfaceMeasure->DeviceHeightFont(size));\n\tFontParameters fp(faceName, deviceHeight / SC_FONT_SIZE_MULTIPLIER, SC_WEIGHT_NORMAL, false, 0, technology, characterSet);\n\tfont.Create(fp);\n\t// Look for multiple lines in the text\n\t// Only support \\n here - simply means container must avoid \\r!\n\tint numLines = 1;\n\tconst char *newline;\n\tconst char *look = val.c_str();\n\trectUp = PRectangle(0,0,0,0);\n\trectDown = PRectangle(0,0,0,0);\n\toffsetMain = insetX;            // changed to right edge of any arrows\n\tint width = PaintContents(surfaceMeasure, false) + insetX;\n\twhile ((newline = strchr(look, '\\n')) != NULL) {\n\t\tlook = newline + 1;\n\t\tnumLines++;\n\t}\n\tlineHeight = RoundXYPosition(surfaceMeasure->Height(font));\n\n\t// The returned\n\t// rectangle is aligned to the right edge of the last arrow encountered in\n\t// the tip text, else to the tip text left edge.\n\tint height = lineHeight * numLines - static_cast<int>(surfaceMeasure->InternalLeading(font)) + borderHeight * 2;\n\tdelete surfaceMeasure;\n\tif (above) {\n\t\treturn PRectangle(pt.x - offsetMain, pt.y - verticalOffset - height, pt.x + width - offsetMain, pt.y - verticalOffset);\n\t} else {\n\t\treturn PRectangle(pt.x - offsetMain, pt.y + verticalOffset + textHeight, pt.x + width - offsetMain, pt.y + verticalOffset + textHeight + height);\n\t}\n}\n\nvoid CallTip::CallTipCancel() {\n\tinCallTipMode = false;\n\tif (wCallTip.Created()) {\n\t\twCallTip.Destroy();\n\t}\n}\n\nvoid CallTip::SetHighlight(int start, int end) {\n\t// Avoid flashing by checking something has really changed\n\tif ((start != startHighlight) || (end != endHighlight)) {\n\t\tstartHighlight = start;\n\t\tendHighlight = (end > start) ? end : start;\n\t\tif (wCallTip.Created()) {\n\t\t\twCallTip.InvalidateAll();\n\t\t}\n\t}\n}\n\n// Set the tab size (sizes > 0 enable the use of tabs). This also enables the\n// use of the STYLE_CALLTIP.\nvoid CallTip::SetTabSize(int tabSz) {\n\ttabSize = tabSz;\n\tuseStyleCallTip = true;\n}\n\n// Set the calltip position, below the text by default or if above is false\n// else above the text.\nvoid CallTip::SetPosition(bool aboveText) {\n\tabove = aboveText;\n}\n\n// It might be better to have two access functions for this and to use\n// them for all settings of colours.\nvoid CallTip::SetForeBack(const ColourDesired &fore, const ColourDesired &back) {\n\tcolourBG = back;\n\tcolourUnSel = fore;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CallTip.h",
    "content": "// Scintilla source code edit control\n/** @file CallTip.h\n ** Interface to the call tip control.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CALLTIP_H\n#define CALLTIP_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n */\nclass CallTip {\n\tint startHighlight;    // character offset to start and...\n\tint endHighlight;      // ...end of highlighted text\n\tstd::string val;\n\tFont font;\n\tPRectangle rectUp;      // rectangle of last up angle in the tip\n\tPRectangle rectDown;    // rectangle of last down arrow in the tip\n\tint lineHeight;         // vertical line spacing\n\tint offsetMain;         // The alignment point of the call tip\n\tint tabSize;            // Tab size in pixels, <=0 no TAB expand\n\tbool useStyleCallTip;   // if true, STYLE_CALLTIP should be used\n\tbool above;\t\t// if true, display calltip above text\n\n\t// Private so CallTip objects can not be copied\n\tCallTip(const CallTip &);\n\tCallTip &operator=(const CallTip &);\n\tvoid DrawChunk(Surface *surface, int &x, const char *s,\n\t\tint posStart, int posEnd, int ytext, PRectangle rcClient,\n\t\tbool highlight, bool draw);\n\tint PaintContents(Surface *surfaceWindow, bool draw);\n\tbool IsTabCharacter(char c) const;\n\tint NextTabPos(int x) const;\n\npublic:\n\tWindow wCallTip;\n\tWindow wDraw;\n\tbool inCallTipMode;\n\tint posStartCallTip;\n\tColourDesired colourBG;\n\tColourDesired colourUnSel;\n\tColourDesired colourSel;\n\tColourDesired colourShade;\n\tColourDesired colourLight;\n\tint codePage;\n\tint clickPlace;\n\n\tint insetX; // text inset in x from calltip border\n\tint widthArrow;\n\tint borderHeight;\n\tint verticalOffset; // pixel offset up or down of the calltip with respect to the line\n\n\tCallTip();\n\t~CallTip();\n\n\tvoid PaintCT(Surface *surfaceWindow);\n\n\tvoid MouseClick(Point pt);\n\n\t/// Setup the calltip and return a rectangle of the area required.\n\tPRectangle CallTipStart(int pos, Point pt, int textHeight, const char *defn,\n\t\tconst char *faceName, int size, int codePage_,\n\t\tint characterSet, int technology, Window &wParent);\n\n\tvoid CallTipCancel();\n\n\t/// Set a range of characters to be displayed in a highlight style.\n\t/// Commonly used to highlight the current parameter.\n\tvoid SetHighlight(int start, int end);\n\n\t/// Set the tab size in pixels for the call tip. 0 or -ve means no tab expand.\n\tvoid SetTabSize(int tabSz);\n\n\t/// Set calltip position.\n\tvoid SetPosition(bool aboveText);\n\n\t/// Used to determine which STYLE_xxxx to use for call tip information\n\tbool UseStyleCallTip() const { return useStyleCallTip;}\n\n\t// Modify foreground and background colours\n\tvoid SetForeBack(const ColourDesired &fore, const ColourDesired &back);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CaseConvert.cpp",
    "content": "// Scintilla source code edit control\n// Encoding: UTF-8\n/** @file CaseConvert.cxx\n ** Case fold characters and convert them to upper or lower case.\n ** Tables automatically regenerated by scripts/GenerateCaseConvert.py\n ** Should only be rarely regenerated for new versions of Unicode.\n **/\n// Copyright 2013 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <cstring>\n\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <algorithm>\n\n#include \"StringCopy.h\"\n#include \"CaseConvert.h\"\n#include \"UniConversion.h\"\n#include \"UnicodeFromUTF8.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nnamespace {\n\t// Use an unnamed namespace to protect the declarations from name conflicts\n\n// Unicode code points are ordered by groups and follow patterns.\n// Most characters (pitch==1) are in ranges for a particular alphabet and their\n// upper case forms are a fixed distance away.\n// Another pattern (pitch==2) is where each lower case letter is preceded by\n// the upper case form. These are also grouped into ranges.\n\nint symmetricCaseConversionRanges[] = {\n//lower, upper, range length, range pitch\n//++Autogenerated -- start of section automatically generated\n//**\\(\\*\\n\\)\n97,65,26,1, \n224,192,23,1, \n248,216,7,1, \n257,256,24,2, \n314,313,8,2, \n331,330,23,2, \n462,461,8,2, \n479,478,9,2, \n505,504,20,2, \n547,546,9,2, \n583,582,5,2, \n945,913,17,1, \n963,931,9,1, \n985,984,12,2, \n1072,1040,32,1, \n1104,1024,16,1, \n1121,1120,17,2, \n1163,1162,27,2, \n1218,1217,7,2, \n1233,1232,44,2, \n1377,1329,38,1, \n7681,7680,75,2, \n7841,7840,48,2, \n7936,7944,8,1, \n7952,7960,6,1, \n7968,7976,8,1, \n7984,7992,8,1, \n8000,8008,6,1, \n8032,8040,8,1, \n8560,8544,16,1, \n9424,9398,26,1, \n11312,11264,47,1, \n11393,11392,50,2, \n11520,4256,38,1, \n42561,42560,23,2, \n42625,42624,12,2, \n42787,42786,7,2, \n42803,42802,31,2, \n42879,42878,5,2, \n42913,42912,5,2, \n65345,65313,26,1, \n66600,66560,40,1, \n\n//--Autogenerated -- end of section automatically generated\n};\n\n// Code points that are symmetric but don't fit into a range of similar characters\n// are listed here.\n\nint symmetricCaseConversions[] = {\n//lower, upper\n//++Autogenerated -- start of section automatically generated\n//**1 \\(\\*\\n\\)\n255,376, \n307,306, \n309,308, \n311,310, \n378,377, \n380,379, \n382,381, \n384,579, \n387,386, \n389,388, \n392,391, \n396,395, \n402,401, \n405,502, \n409,408, \n410,573, \n414,544, \n417,416, \n419,418, \n421,420, \n424,423, \n429,428, \n432,431, \n436,435, \n438,437, \n441,440, \n445,444, \n447,503, \n454,452, \n457,455, \n460,458, \n477,398, \n499,497, \n501,500, \n572,571, \n575,11390, \n576,11391, \n578,577, \n592,11375, \n593,11373, \n594,11376, \n595,385, \n596,390, \n598,393, \n599,394, \n601,399, \n603,400, \n608,403, \n611,404, \n613,42893, \n614,42922, \n616,407, \n617,406, \n619,11362, \n623,412, \n625,11374, \n626,413, \n629,415, \n637,11364, \n640,422, \n643,425, \n648,430, \n649,580, \n650,433, \n651,434, \n652,581, \n658,439, \n881,880, \n883,882, \n887,886, \n891,1021, \n892,1022, \n893,1023, \n940,902, \n941,904, \n942,905, \n943,906, \n972,908, \n973,910, \n974,911, \n983,975, \n1010,1017, \n1016,1015, \n1019,1018, \n1231,1216, \n7545,42877, \n7549,11363, \n8017,8025, \n8019,8027, \n8021,8029, \n8023,8031, \n8048,8122, \n8049,8123, \n8050,8136, \n8051,8137, \n8052,8138, \n8053,8139, \n8054,8154, \n8055,8155, \n8056,8184, \n8057,8185, \n8058,8170, \n8059,8171, \n8060,8186, \n8061,8187, \n8112,8120, \n8113,8121, \n8144,8152, \n8145,8153, \n8160,8168, \n8161,8169, \n8165,8172, \n8526,8498, \n8580,8579, \n11361,11360, \n11365,570, \n11366,574, \n11368,11367, \n11370,11369, \n11372,11371, \n11379,11378, \n11382,11381, \n11500,11499, \n11502,11501, \n11507,11506, \n11559,4295, \n11565,4301, \n42874,42873, \n42876,42875, \n42892,42891, \n42897,42896, \n42899,42898, \n\n//--Autogenerated -- end of section automatically generated\n};\n\n// Characters that have complex case conversions are listed here.\n// This includes cases where more than one character is needed for a conversion,\n// folding is different to lowering, or (as appropriate) upper(lower(x)) != x or\n// lower(upper(x)) != x.\n\nconst char *complexCaseConversions =\n// Original | Folded | Upper | Lower |\n//++Autogenerated -- start of section automatically generated\n//**2 \\(\\*\\n\\)\n\"\\xc2\\xb5|\\xce\\xbc|\\xce\\x9c||\"\n\"\\xc3\\x9f|ss|SS||\"\n\"\\xc4\\xb0|i\\xcc\\x87||i\\xcc\\x87|\"\n\"\\xc4\\xb1||I||\"\n\"\\xc5\\x89|\\xca\\xbcn|\\xca\\xbcN||\"\n\"\\xc5\\xbf|s|S||\"\n\"\\xc7\\x85|\\xc7\\x86|\\xc7\\x84|\\xc7\\x86|\"\n\"\\xc7\\x88|\\xc7\\x89|\\xc7\\x87|\\xc7\\x89|\"\n\"\\xc7\\x8b|\\xc7\\x8c|\\xc7\\x8a|\\xc7\\x8c|\"\n\"\\xc7\\xb0|j\\xcc\\x8c|J\\xcc\\x8c||\"\n\"\\xc7\\xb2|\\xc7\\xb3|\\xc7\\xb1|\\xc7\\xb3|\"\n\"\\xcd\\x85|\\xce\\xb9|\\xce\\x99||\"\n\"\\xce\\x90|\\xce\\xb9\\xcc\\x88\\xcc\\x81|\\xce\\x99\\xcc\\x88\\xcc\\x81||\"\n\"\\xce\\xb0|\\xcf\\x85\\xcc\\x88\\xcc\\x81|\\xce\\xa5\\xcc\\x88\\xcc\\x81||\"\n\"\\xcf\\x82|\\xcf\\x83|\\xce\\xa3||\"\n\"\\xcf\\x90|\\xce\\xb2|\\xce\\x92||\"\n\"\\xcf\\x91|\\xce\\xb8|\\xce\\x98||\"\n\"\\xcf\\x95|\\xcf\\x86|\\xce\\xa6||\"\n\"\\xcf\\x96|\\xcf\\x80|\\xce\\xa0||\"\n\"\\xcf\\xb0|\\xce\\xba|\\xce\\x9a||\"\n\"\\xcf\\xb1|\\xcf\\x81|\\xce\\xa1||\"\n\"\\xcf\\xb4|\\xce\\xb8||\\xce\\xb8|\"\n\"\\xcf\\xb5|\\xce\\xb5|\\xce\\x95||\"\n\"\\xd6\\x87|\\xd5\\xa5\\xd6\\x82|\\xd4\\xb5\\xd5\\x92||\"\n\"\\xe1\\xba\\x96|h\\xcc\\xb1|H\\xcc\\xb1||\"\n\"\\xe1\\xba\\x97|t\\xcc\\x88|T\\xcc\\x88||\"\n\"\\xe1\\xba\\x98|w\\xcc\\x8a|W\\xcc\\x8a||\"\n\"\\xe1\\xba\\x99|y\\xcc\\x8a|Y\\xcc\\x8a||\"\n\"\\xe1\\xba\\x9a|a\\xca\\xbe|A\\xca\\xbe||\"\n\"\\xe1\\xba\\x9b|\\xe1\\xb9\\xa1|\\xe1\\xb9\\xa0||\"\n\"\\xe1\\xba\\x9e|ss||\\xc3\\x9f|\"\n\"\\xe1\\xbd\\x90|\\xcf\\x85\\xcc\\x93|\\xce\\xa5\\xcc\\x93||\"\n\"\\xe1\\xbd\\x92|\\xcf\\x85\\xcc\\x93\\xcc\\x80|\\xce\\xa5\\xcc\\x93\\xcc\\x80||\"\n\"\\xe1\\xbd\\x94|\\xcf\\x85\\xcc\\x93\\xcc\\x81|\\xce\\xa5\\xcc\\x93\\xcc\\x81||\"\n\"\\xe1\\xbd\\x96|\\xcf\\x85\\xcc\\x93\\xcd\\x82|\\xce\\xa5\\xcc\\x93\\xcd\\x82||\"\n\"\\xe1\\xbe\\x80|\\xe1\\xbc\\x80\\xce\\xb9|\\xe1\\xbc\\x88\\xce\\x99||\"\n\"\\xe1\\xbe\\x81|\\xe1\\xbc\\x81\\xce\\xb9|\\xe1\\xbc\\x89\\xce\\x99||\"\n\"\\xe1\\xbe\\x82|\\xe1\\xbc\\x82\\xce\\xb9|\\xe1\\xbc\\x8a\\xce\\x99||\"\n\"\\xe1\\xbe\\x83|\\xe1\\xbc\\x83\\xce\\xb9|\\xe1\\xbc\\x8b\\xce\\x99||\"\n\"\\xe1\\xbe\\x84|\\xe1\\xbc\\x84\\xce\\xb9|\\xe1\\xbc\\x8c\\xce\\x99||\"\n\"\\xe1\\xbe\\x85|\\xe1\\xbc\\x85\\xce\\xb9|\\xe1\\xbc\\x8d\\xce\\x99||\"\n\"\\xe1\\xbe\\x86|\\xe1\\xbc\\x86\\xce\\xb9|\\xe1\\xbc\\x8e\\xce\\x99||\"\n\"\\xe1\\xbe\\x87|\\xe1\\xbc\\x87\\xce\\xb9|\\xe1\\xbc\\x8f\\xce\\x99||\"\n\"\\xe1\\xbe\\x88|\\xe1\\xbc\\x80\\xce\\xb9|\\xe1\\xbc\\x88\\xce\\x99|\\xe1\\xbe\\x80|\"\n\"\\xe1\\xbe\\x89|\\xe1\\xbc\\x81\\xce\\xb9|\\xe1\\xbc\\x89\\xce\\x99|\\xe1\\xbe\\x81|\"\n\"\\xe1\\xbe\\x8a|\\xe1\\xbc\\x82\\xce\\xb9|\\xe1\\xbc\\x8a\\xce\\x99|\\xe1\\xbe\\x82|\"\n\"\\xe1\\xbe\\x8b|\\xe1\\xbc\\x83\\xce\\xb9|\\xe1\\xbc\\x8b\\xce\\x99|\\xe1\\xbe\\x83|\"\n\"\\xe1\\xbe\\x8c|\\xe1\\xbc\\x84\\xce\\xb9|\\xe1\\xbc\\x8c\\xce\\x99|\\xe1\\xbe\\x84|\"\n\"\\xe1\\xbe\\x8d|\\xe1\\xbc\\x85\\xce\\xb9|\\xe1\\xbc\\x8d\\xce\\x99|\\xe1\\xbe\\x85|\"\n\"\\xe1\\xbe\\x8e|\\xe1\\xbc\\x86\\xce\\xb9|\\xe1\\xbc\\x8e\\xce\\x99|\\xe1\\xbe\\x86|\"\n\"\\xe1\\xbe\\x8f|\\xe1\\xbc\\x87\\xce\\xb9|\\xe1\\xbc\\x8f\\xce\\x99|\\xe1\\xbe\\x87|\"\n\"\\xe1\\xbe\\x90|\\xe1\\xbc\\xa0\\xce\\xb9|\\xe1\\xbc\\xa8\\xce\\x99||\"\n\"\\xe1\\xbe\\x91|\\xe1\\xbc\\xa1\\xce\\xb9|\\xe1\\xbc\\xa9\\xce\\x99||\"\n\"\\xe1\\xbe\\x92|\\xe1\\xbc\\xa2\\xce\\xb9|\\xe1\\xbc\\xaa\\xce\\x99||\"\n\"\\xe1\\xbe\\x93|\\xe1\\xbc\\xa3\\xce\\xb9|\\xe1\\xbc\\xab\\xce\\x99||\"\n\"\\xe1\\xbe\\x94|\\xe1\\xbc\\xa4\\xce\\xb9|\\xe1\\xbc\\xac\\xce\\x99||\"\n\"\\xe1\\xbe\\x95|\\xe1\\xbc\\xa5\\xce\\xb9|\\xe1\\xbc\\xad\\xce\\x99||\"\n\"\\xe1\\xbe\\x96|\\xe1\\xbc\\xa6\\xce\\xb9|\\xe1\\xbc\\xae\\xce\\x99||\"\n\"\\xe1\\xbe\\x97|\\xe1\\xbc\\xa7\\xce\\xb9|\\xe1\\xbc\\xaf\\xce\\x99||\"\n\"\\xe1\\xbe\\x98|\\xe1\\xbc\\xa0\\xce\\xb9|\\xe1\\xbc\\xa8\\xce\\x99|\\xe1\\xbe\\x90|\"\n\"\\xe1\\xbe\\x99|\\xe1\\xbc\\xa1\\xce\\xb9|\\xe1\\xbc\\xa9\\xce\\x99|\\xe1\\xbe\\x91|\"\n\"\\xe1\\xbe\\x9a|\\xe1\\xbc\\xa2\\xce\\xb9|\\xe1\\xbc\\xaa\\xce\\x99|\\xe1\\xbe\\x92|\"\n\"\\xe1\\xbe\\x9b|\\xe1\\xbc\\xa3\\xce\\xb9|\\xe1\\xbc\\xab\\xce\\x99|\\xe1\\xbe\\x93|\"\n\"\\xe1\\xbe\\x9c|\\xe1\\xbc\\xa4\\xce\\xb9|\\xe1\\xbc\\xac\\xce\\x99|\\xe1\\xbe\\x94|\"\n\"\\xe1\\xbe\\x9d|\\xe1\\xbc\\xa5\\xce\\xb9|\\xe1\\xbc\\xad\\xce\\x99|\\xe1\\xbe\\x95|\"\n\"\\xe1\\xbe\\x9e|\\xe1\\xbc\\xa6\\xce\\xb9|\\xe1\\xbc\\xae\\xce\\x99|\\xe1\\xbe\\x96|\"\n\"\\xe1\\xbe\\x9f|\\xe1\\xbc\\xa7\\xce\\xb9|\\xe1\\xbc\\xaf\\xce\\x99|\\xe1\\xbe\\x97|\"\n\"\\xe1\\xbe\\xa0|\\xe1\\xbd\\xa0\\xce\\xb9|\\xe1\\xbd\\xa8\\xce\\x99||\"\n\"\\xe1\\xbe\\xa1|\\xe1\\xbd\\xa1\\xce\\xb9|\\xe1\\xbd\\xa9\\xce\\x99||\"\n\"\\xe1\\xbe\\xa2|\\xe1\\xbd\\xa2\\xce\\xb9|\\xe1\\xbd\\xaa\\xce\\x99||\"\n\"\\xe1\\xbe\\xa3|\\xe1\\xbd\\xa3\\xce\\xb9|\\xe1\\xbd\\xab\\xce\\x99||\"\n\"\\xe1\\xbe\\xa4|\\xe1\\xbd\\xa4\\xce\\xb9|\\xe1\\xbd\\xac\\xce\\x99||\"\n\"\\xe1\\xbe\\xa5|\\xe1\\xbd\\xa5\\xce\\xb9|\\xe1\\xbd\\xad\\xce\\x99||\"\n\"\\xe1\\xbe\\xa6|\\xe1\\xbd\\xa6\\xce\\xb9|\\xe1\\xbd\\xae\\xce\\x99||\"\n\"\\xe1\\xbe\\xa7|\\xe1\\xbd\\xa7\\xce\\xb9|\\xe1\\xbd\\xaf\\xce\\x99||\"\n\"\\xe1\\xbe\\xa8|\\xe1\\xbd\\xa0\\xce\\xb9|\\xe1\\xbd\\xa8\\xce\\x99|\\xe1\\xbe\\xa0|\"\n\"\\xe1\\xbe\\xa9|\\xe1\\xbd\\xa1\\xce\\xb9|\\xe1\\xbd\\xa9\\xce\\x99|\\xe1\\xbe\\xa1|\"\n\"\\xe1\\xbe\\xaa|\\xe1\\xbd\\xa2\\xce\\xb9|\\xe1\\xbd\\xaa\\xce\\x99|\\xe1\\xbe\\xa2|\"\n\"\\xe1\\xbe\\xab|\\xe1\\xbd\\xa3\\xce\\xb9|\\xe1\\xbd\\xab\\xce\\x99|\\xe1\\xbe\\xa3|\"\n\"\\xe1\\xbe\\xac|\\xe1\\xbd\\xa4\\xce\\xb9|\\xe1\\xbd\\xac\\xce\\x99|\\xe1\\xbe\\xa4|\"\n\"\\xe1\\xbe\\xad|\\xe1\\xbd\\xa5\\xce\\xb9|\\xe1\\xbd\\xad\\xce\\x99|\\xe1\\xbe\\xa5|\"\n\"\\xe1\\xbe\\xae|\\xe1\\xbd\\xa6\\xce\\xb9|\\xe1\\xbd\\xae\\xce\\x99|\\xe1\\xbe\\xa6|\"\n\"\\xe1\\xbe\\xaf|\\xe1\\xbd\\xa7\\xce\\xb9|\\xe1\\xbd\\xaf\\xce\\x99|\\xe1\\xbe\\xa7|\"\n\"\\xe1\\xbe\\xb2|\\xe1\\xbd\\xb0\\xce\\xb9|\\xe1\\xbe\\xba\\xce\\x99||\"\n\"\\xe1\\xbe\\xb3|\\xce\\xb1\\xce\\xb9|\\xce\\x91\\xce\\x99||\"\n\"\\xe1\\xbe\\xb4|\\xce\\xac\\xce\\xb9|\\xce\\x86\\xce\\x99||\"\n\"\\xe1\\xbe\\xb6|\\xce\\xb1\\xcd\\x82|\\xce\\x91\\xcd\\x82||\"\n\"\\xe1\\xbe\\xb7|\\xce\\xb1\\xcd\\x82\\xce\\xb9|\\xce\\x91\\xcd\\x82\\xce\\x99||\"\n\"\\xe1\\xbe\\xbc|\\xce\\xb1\\xce\\xb9|\\xce\\x91\\xce\\x99|\\xe1\\xbe\\xb3|\"\n\"\\xe1\\xbe\\xbe|\\xce\\xb9|\\xce\\x99||\"\n\"\\xe1\\xbf\\x82|\\xe1\\xbd\\xb4\\xce\\xb9|\\xe1\\xbf\\x8a\\xce\\x99||\"\n\"\\xe1\\xbf\\x83|\\xce\\xb7\\xce\\xb9|\\xce\\x97\\xce\\x99||\"\n\"\\xe1\\xbf\\x84|\\xce\\xae\\xce\\xb9|\\xce\\x89\\xce\\x99||\"\n\"\\xe1\\xbf\\x86|\\xce\\xb7\\xcd\\x82|\\xce\\x97\\xcd\\x82||\"\n\"\\xe1\\xbf\\x87|\\xce\\xb7\\xcd\\x82\\xce\\xb9|\\xce\\x97\\xcd\\x82\\xce\\x99||\"\n\"\\xe1\\xbf\\x8c|\\xce\\xb7\\xce\\xb9|\\xce\\x97\\xce\\x99|\\xe1\\xbf\\x83|\"\n\"\\xe1\\xbf\\x92|\\xce\\xb9\\xcc\\x88\\xcc\\x80|\\xce\\x99\\xcc\\x88\\xcc\\x80||\"\n\"\\xe1\\xbf\\x93|\\xce\\xb9\\xcc\\x88\\xcc\\x81|\\xce\\x99\\xcc\\x88\\xcc\\x81||\"\n\"\\xe1\\xbf\\x96|\\xce\\xb9\\xcd\\x82|\\xce\\x99\\xcd\\x82||\"\n\"\\xe1\\xbf\\x97|\\xce\\xb9\\xcc\\x88\\xcd\\x82|\\xce\\x99\\xcc\\x88\\xcd\\x82||\"\n\"\\xe1\\xbf\\xa2|\\xcf\\x85\\xcc\\x88\\xcc\\x80|\\xce\\xa5\\xcc\\x88\\xcc\\x80||\"\n\"\\xe1\\xbf\\xa3|\\xcf\\x85\\xcc\\x88\\xcc\\x81|\\xce\\xa5\\xcc\\x88\\xcc\\x81||\"\n\"\\xe1\\xbf\\xa4|\\xcf\\x81\\xcc\\x93|\\xce\\xa1\\xcc\\x93||\"\n\"\\xe1\\xbf\\xa6|\\xcf\\x85\\xcd\\x82|\\xce\\xa5\\xcd\\x82||\"\n\"\\xe1\\xbf\\xa7|\\xcf\\x85\\xcc\\x88\\xcd\\x82|\\xce\\xa5\\xcc\\x88\\xcd\\x82||\"\n\"\\xe1\\xbf\\xb2|\\xe1\\xbd\\xbc\\xce\\xb9|\\xe1\\xbf\\xba\\xce\\x99||\"\n\"\\xe1\\xbf\\xb3|\\xcf\\x89\\xce\\xb9|\\xce\\xa9\\xce\\x99||\"\n\"\\xe1\\xbf\\xb4|\\xcf\\x8e\\xce\\xb9|\\xce\\x8f\\xce\\x99||\"\n\"\\xe1\\xbf\\xb6|\\xcf\\x89\\xcd\\x82|\\xce\\xa9\\xcd\\x82||\"\n\"\\xe1\\xbf\\xb7|\\xcf\\x89\\xcd\\x82\\xce\\xb9|\\xce\\xa9\\xcd\\x82\\xce\\x99||\"\n\"\\xe1\\xbf\\xbc|\\xcf\\x89\\xce\\xb9|\\xce\\xa9\\xce\\x99|\\xe1\\xbf\\xb3|\"\n\"\\xe2\\x84\\xa6|\\xcf\\x89||\\xcf\\x89|\"\n\"\\xe2\\x84\\xaa|k||k|\"\n\"\\xe2\\x84\\xab|\\xc3\\xa5||\\xc3\\xa5|\"\n\"\\xef\\xac\\x80|ff|FF||\"\n\"\\xef\\xac\\x81|fi|FI||\"\n\"\\xef\\xac\\x82|fl|FL||\"\n\"\\xef\\xac\\x83|ffi|FFI||\"\n\"\\xef\\xac\\x84|ffl|FFL||\"\n\"\\xef\\xac\\x85|st|ST||\"\n\"\\xef\\xac\\x86|st|ST||\"\n\"\\xef\\xac\\x93|\\xd5\\xb4\\xd5\\xb6|\\xd5\\x84\\xd5\\x86||\"\n\"\\xef\\xac\\x94|\\xd5\\xb4\\xd5\\xa5|\\xd5\\x84\\xd4\\xb5||\"\n\"\\xef\\xac\\x95|\\xd5\\xb4\\xd5\\xab|\\xd5\\x84\\xd4\\xbb||\"\n\"\\xef\\xac\\x96|\\xd5\\xbe\\xd5\\xb6|\\xd5\\x8e\\xd5\\x86||\"\n\"\\xef\\xac\\x97|\\xd5\\xb4\\xd5\\xad|\\xd5\\x84\\xd4\\xbd||\"\n\n//--Autogenerated -- end of section automatically generated\n;\n\nclass CaseConverter : public ICaseConverter {\n\t// Maximum length of a case conversion result is 6 bytes in UTF-8\n\tenum { maxConversionLength=6 };\n\tstruct ConversionString {\n\t\tchar conversion[maxConversionLength+1];\n\t\tConversionString() {\n\t\t\tconversion[0] = '\\0';\n\t\t}\n\t};\n\t// Conversions are initially store in a vector of structs but then decomposed into\n\t// parallel arrays as that is about 10% faster to search.\n\tstruct CharacterConversion {\n\t\tint character;\n\t\tConversionString conversion;\n\t\tCharacterConversion(int character_=0, const char *conversion_=\"\") : character(character_) {\n\t\t\tStringCopy(conversion.conversion, conversion_);\n\t\t}\n\t\tbool operator<(const CharacterConversion &other) const {\n\t\t\treturn character < other.character;\n\t\t}\n\t};\n\ttypedef std::vector<CharacterConversion> CharacterToConversion;\n\tCharacterToConversion characterToConversion;\n\t// The parallel arrays\n\tstd::vector<int> characters;\n\tstd::vector<ConversionString> conversions;\n\npublic:\n\tCaseConverter() {\n\t}\n\tbool Initialised() const {\n\t\treturn characters.size() > 0;\n\t}\n\tvoid Add(int character, const char *conversion) {\n\t\tcharacterToConversion.push_back(CharacterConversion(character, conversion));\n\t}\n\tconst char *Find(int character) {\n\t\tconst std::vector<int>::iterator it = std::lower_bound(characters.begin(), characters.end(), character);\n\t\tif (it == characters.end())\n\t\t\treturn 0;\n\t\telse if (*it == character)\n\t\t\treturn conversions[it - characters.begin()].conversion;\n\t\telse\n\t\t\treturn 0;\n\t}\n\tsize_t CaseConvertString(char *converted, size_t sizeConverted, const char *mixed, size_t lenMixed) {\n\t\tsize_t lenConverted = 0;\n\t\tsize_t mixedPos = 0;\n\t\tunsigned char bytes[UTF8MaxBytes + 1];\n\t\twhile (mixedPos < lenMixed) {\n\t\t\tconst unsigned char leadByte = static_cast<unsigned char>(mixed[mixedPos]);\n\t\t\tconst char *caseConverted = 0;\n\t\t\tsize_t lenMixedChar = 1;\n\t\t\tif (UTF8IsAscii(leadByte)) {\n\t\t\t\tcaseConverted = Find(leadByte);\n\t\t\t} else {\n\t\t\t\tbytes[0] = leadByte;\n\t\t\t\tconst int widthCharBytes = UTF8BytesOfLead[leadByte];\n\t\t\t\tfor (int b=1; b<widthCharBytes; b++) {\n\t\t\t\t\tbytes[b] = (mixedPos+b < lenMixed) ? mixed[mixedPos+b] : 0;\n\t\t\t\t}\n\t\t\t\tint classified = UTF8Classify(bytes, widthCharBytes);\n\t\t\t\tif (!(classified & UTF8MaskInvalid)) {\n\t\t\t\t\t// valid UTF-8\n\t\t\t\t\tlenMixedChar = classified & UTF8MaskWidth;\n\t\t\t\t\tint character = UnicodeFromUTF8(bytes);\n\t\t\t\t\tcaseConverted = Find(character);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (caseConverted) {\n\t\t\t\t// Character has a conversion so copy that conversion in\n\t\t\t\twhile (*caseConverted) {\n\t\t\t\t\tconverted[lenConverted++] = *caseConverted++;\n\t\t\t\t\tif (lenConverted >= sizeConverted)\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Character has no conversion so copy the input to output\n\t\t\t\tfor (size_t i=0; i<lenMixedChar; i++) {\n\t\t\t\t\tconverted[lenConverted++] = mixed[mixedPos+i];\n\t\t\t\t\tif (lenConverted >= sizeConverted)\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmixedPos += lenMixedChar;\n\t\t}\n\t\treturn lenConverted;\n\t}\n\tvoid FinishedAdding() {\n\t\tstd::sort(characterToConversion.begin(), characterToConversion.end());\n\t\tcharacters.reserve(characterToConversion.size());\n\t\tconversions.reserve(characterToConversion.size());\n\t\tfor (CharacterToConversion::iterator it = characterToConversion.begin(); it != characterToConversion.end(); ++it) {\n\t\t\tcharacters.push_back(it->character);\n\t\t\tconversions.push_back(it->conversion);\n\t\t}\n\t\t// Empty the original calculated data completely\n\t\tCharacterToConversion().swap(characterToConversion);\n\t}\n};\n\nCaseConverter caseConvFold;\nCaseConverter caseConvUp;\nCaseConverter caseConvLow;\n\nvoid UTF8FromUTF32Character(int uch, char *putf) {\n\tsize_t k = 0;\n\tif (uch < 0x80) {\n\t\tputf[k++] = static_cast<char>(uch);\n\t} else if (uch < 0x800) {\n\t\tputf[k++] = static_cast<char>(0xC0 | (uch >> 6));\n\t\tputf[k++] = static_cast<char>(0x80 | (uch & 0x3f));\n\t} else if (uch < 0x10000) {\n\t\tputf[k++] = static_cast<char>(0xE0 | (uch >> 12));\n\t\tputf[k++] = static_cast<char>(0x80 | ((uch >> 6) & 0x3f));\n\t\tputf[k++] = static_cast<char>(0x80 | (uch & 0x3f));\n\t} else {\n\t\tputf[k++] = static_cast<char>(0xF0 | (uch >> 18));\n\t\tputf[k++] = static_cast<char>(0x80 | ((uch >> 12) & 0x3f));\n\t\tputf[k++] = static_cast<char>(0x80 | ((uch >> 6) & 0x3f));\n\t\tputf[k++] = static_cast<char>(0x80 | (uch & 0x3f));\n\t}\n\tputf[k] = 0;\n}\n\nvoid AddSymmetric(enum CaseConversion conversion, int lower,int upper) {\n\tchar lowerUTF8[UTF8MaxBytes+1];\n\tUTF8FromUTF32Character(lower, lowerUTF8);\n\tchar upperUTF8[UTF8MaxBytes+1];\n\tUTF8FromUTF32Character(upper, upperUTF8);\n\n\tswitch (conversion) {\n\tcase CaseConversionFold:\n\t\tcaseConvFold.Add(upper, lowerUTF8);\n\t\tbreak;\n\tcase CaseConversionUpper:\n\t\tcaseConvUp.Add(lower, upperUTF8);\n\t\tbreak;\n\tcase CaseConversionLower:\n\t\tcaseConvLow.Add(upper, lowerUTF8);\n\t\tbreak;\n\t}\n}\n\nvoid SetupConversions(enum CaseConversion conversion) {\n\t// First initialize for the symmetric ranges\n\tfor (size_t i=0; i<ELEMENTS(symmetricCaseConversionRanges);) {\n\t\tint lower = symmetricCaseConversionRanges[i++];\n\t\tint upper = symmetricCaseConversionRanges[i++];\n\t\tint length = symmetricCaseConversionRanges[i++];\n\t\tint pitch = symmetricCaseConversionRanges[i++];\n\t\tfor (int j=0; j<length*pitch; j+=pitch) {\n\t\t\tAddSymmetric(conversion, lower+j, upper+j);\n\t\t}\n\t}\n\t// Add the symmetric singletons\n\tfor (size_t i=0; i<ELEMENTS(symmetricCaseConversions);) {\n\t\tint lower = symmetricCaseConversions[i++];\n\t\tint upper = symmetricCaseConversions[i++];\n\t\tAddSymmetric(conversion, lower, upper);\n\t}\n\t// Add the complex cases\n\tconst char *sComplex = complexCaseConversions;\n\twhile (*sComplex) {\n\t\t// Longest ligature is 3 character so 5 for safety\n\t\tconst size_t lenUTF8 = 5*UTF8MaxBytes+1;\n\t\tchar originUTF8[lenUTF8];\n\t\tchar foldedUTF8[lenUTF8];\n\t\tchar lowerUTF8[lenUTF8];\n\t\tchar upperUTF8[lenUTF8];\n\t\tsize_t i = 0;\n\t\twhile (*sComplex && *sComplex != '|') {\n\t\t\toriginUTF8[i++] = *sComplex;\n\t\t\tsComplex++;\n\t\t}\n\t\tsComplex++;\n\t\toriginUTF8[i] = 0;\n\t\ti = 0;\n\t\twhile (*sComplex && *sComplex != '|') {\n\t\t\tfoldedUTF8[i++] = *sComplex;\n\t\t\tsComplex++;\n\t\t}\n\t\tsComplex++;\n\t\tfoldedUTF8[i] = 0;\n\t\ti = 0;\n\t\twhile (*sComplex && *sComplex != '|') {\n\t\t\tupperUTF8[i++] = *sComplex;\n\t\t\tsComplex++;\n\t\t}\n\t\tsComplex++;\n\t\tupperUTF8[i] = 0;\n\t\ti = 0;\n\t\twhile (*sComplex && *sComplex != '|') {\n\t\t\tlowerUTF8[i++] = *sComplex;\n\t\t\tsComplex++;\n\t\t}\n\t\tsComplex++;\n\t\tlowerUTF8[i] = 0;\n\n\t\tint character = UnicodeFromUTF8(reinterpret_cast<unsigned char *>(originUTF8));\n\n\t\tif (conversion == CaseConversionFold && foldedUTF8[0]) {\n\t\t\tcaseConvFold.Add(character, foldedUTF8);\n\t\t}\n\n\t\tif (conversion == CaseConversionUpper && upperUTF8[0]) {\n\t\t\tcaseConvUp.Add(character, upperUTF8);\n\t\t}\n\n\t\tif (conversion == CaseConversionLower && lowerUTF8[0]) {\n\t\t\tcaseConvLow.Add(character, lowerUTF8);\n\t\t}\n\t}\n\n\tswitch (conversion) {\n\tcase CaseConversionFold:\n\t\tcaseConvFold.FinishedAdding();\n\t\tbreak;\n\tcase CaseConversionUpper:\n\t\tcaseConvUp.FinishedAdding();\n\t\tbreak;\n\tcase CaseConversionLower:\n\t\tcaseConvLow.FinishedAdding();\n\t\tbreak;\n\t}\n}\n\nCaseConverter *ConverterForConversion(enum CaseConversion conversion) {\n\tswitch (conversion) {\n\tcase CaseConversionFold:\n\t\treturn &caseConvFold;\n\tcase CaseConversionUpper:\n\t\treturn &caseConvUp;\n\tcase CaseConversionLower:\n\t\treturn &caseConvLow;\n\t}\n\treturn 0;\n}\n\n}\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nICaseConverter *ConverterFor(enum CaseConversion conversion) {\n\tCaseConverter *pCaseConv = ConverterForConversion(conversion);\n\tif (!pCaseConv->Initialised())\n\t\tSetupConversions(conversion);\n\treturn pCaseConv;\n}\n\nconst char *CaseConvert(int character, enum CaseConversion conversion) {\n\tCaseConverter *pCaseConv = ConverterForConversion(conversion);\n\tif (!pCaseConv->Initialised())\n\t\tSetupConversions(conversion);\n\treturn pCaseConv->Find(character);\n}\n\nsize_t CaseConvertString(char *converted, size_t sizeConverted, const char *mixed, size_t lenMixed, enum CaseConversion conversion) {\n\tCaseConverter *pCaseConv = ConverterForConversion(conversion);\n\tif (!pCaseConv->Initialised())\n\t\tSetupConversions(conversion);\n\treturn pCaseConv->CaseConvertString(converted, sizeConverted, mixed, lenMixed);\n}\n\nstd::string CaseConvertString(const std::string &s, enum CaseConversion conversion) {\n\tstd::string retMapped(s.length() * maxExpansionCaseConversion, 0);\n\tsize_t lenMapped = CaseConvertString(&retMapped[0], retMapped.length(), s.c_str(), s.length(),\n\t\tconversion);\n\tretMapped.resize(lenMapped);\n\treturn retMapped;\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CaseConvert.h",
    "content": "// Scintilla source code edit control\n// Encoding: UTF-8\n/** @file CaseConvert.h\n ** Performs Unicode case conversions.\n ** Does not handle locale-sensitive case conversion.\n **/\n// Copyright 2013 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CASECONVERT_H\n#define CASECONVERT_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nenum CaseConversion {\n\tCaseConversionFold,\n\tCaseConversionUpper,\n\tCaseConversionLower\n};\n\nclass ICaseConverter {\npublic:\n\tvirtual size_t CaseConvertString(char *converted, size_t sizeConverted, const char *mixed, size_t lenMixed) = 0;\n};\n\nICaseConverter *ConverterFor(enum CaseConversion conversion);\n\n// Returns a UTF-8 string. Empty when no conversion\nconst char *CaseConvert(int character, enum CaseConversion conversion);\n\n// When performing CaseConvertString, the converted value may be up to 3 times longer than the input.\n// Ligatures are often decomposed into multiple characters and long cases include:\n// ΐ \"\\xce\\x90\" folds to ΐ \"\\xce\\xb9\\xcc\\x88\\xcc\\x81\"\nconst int maxExpansionCaseConversion=3;\n\n// Converts a mixed case string using a particular conversion.\n// Result may be a different length to input and the length is the return value.\n// If there is not enough space then 0 is returned.\nsize_t CaseConvertString(char *converted, size_t sizeConverted, const char *mixed, size_t lenMixed, enum CaseConversion conversion);\n\n// Converts a mixed case string using a particular conversion.\nstd::string CaseConvertString(const std::string &s, enum CaseConversion conversion);\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CaseFolder.cpp",
    "content": "// Scintilla source code edit control\n/** @file CaseFolder.cxx\n ** Classes for case folding.\n **/\n// Copyright 1998-2013 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdexcept>\n#include <vector>\n#include <algorithm>\n\n#include \"CaseFolder.h\"\n#include \"CaseConvert.h\"\n#include \"UniConversion.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nCaseFolder::~CaseFolder() {\n}\n\nCaseFolderTable::CaseFolderTable() {\n\tfor (size_t iChar=0; iChar<sizeof(mapping); iChar++) {\n\t\tmapping[iChar] = static_cast<char>(iChar);\n\t}\n}\n\nCaseFolderTable::~CaseFolderTable() {\n}\n\nsize_t CaseFolderTable::Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) {\n\tif (lenMixed > sizeFolded) {\n\t\treturn 0;\n\t} else {\n\t\tfor (size_t i=0; i<lenMixed; i++) {\n\t\t\tfolded[i] = mapping[static_cast<unsigned char>(mixed[i])];\n\t\t}\n\t\treturn lenMixed;\n\t}\n}\n\nvoid CaseFolderTable::SetTranslation(char ch, char chTranslation) {\n\tmapping[static_cast<unsigned char>(ch)] = chTranslation;\n}\n\nvoid CaseFolderTable::StandardASCII() {\n\tfor (size_t iChar=0; iChar<sizeof(mapping); iChar++) {\n\t\tif (iChar >= 'A' && iChar <= 'Z') {\n\t\t\tmapping[iChar] = static_cast<char>(iChar - 'A' + 'a');\n\t\t} else {\n\t\t\tmapping[iChar] = static_cast<char>(iChar);\n\t\t}\n\t}\n}\n\nCaseFolderUnicode::CaseFolderUnicode() {\n\tStandardASCII();\n\tconverter = ConverterFor(CaseConversionFold);\n}\n\nsize_t CaseFolderUnicode::Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) {\n\tif ((lenMixed == 1) && (sizeFolded > 0)) {\n\t\tfolded[0] = mapping[static_cast<unsigned char>(mixed[0])];\n\t\treturn 1;\n\t} else {\n\t\treturn converter->CaseConvertString(folded, sizeFolded, mixed, lenMixed);\n\t}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CaseFolder.h",
    "content": "// Scintilla source code edit control\n/** @file CaseFolder.h\n ** Classes for case folding.\n **/\n// Copyright 1998-2013 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CASEFOLDER_H\n#define CASEFOLDER_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass CaseFolder {\npublic:\n\tvirtual ~CaseFolder();\n\tvirtual size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed) = 0;\n};\n\nclass CaseFolderTable : public CaseFolder {\nprotected:\n\tchar mapping[256];\npublic:\n\tCaseFolderTable();\n\tvirtual ~CaseFolderTable();\n\tvirtual size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed);\n\tvoid SetTranslation(char ch, char chTranslation);\n\tvoid StandardASCII();\n};\n\nclass ICaseConverter;\n\nclass CaseFolderUnicode : public CaseFolderTable {\n\tICaseConverter *converter;\npublic:\n\tCaseFolderUnicode();\n\tvirtual size_t Fold(char *folded, size_t sizeFolded, const char *mixed, size_t lenMixed);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Catalogue.cpp",
    "content": "// Scintilla source code edit control\n/** @file Catalogue.cxx\n ** Colourise for particular languages.\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <stdexcept>\n#include <vector>\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"LexerModule.h\"\n#include \"Catalogue.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic std::vector<LexerModule *> lexerCatalogue;\nstatic int nextLanguage = SCLEX_AUTOMATIC+1;\n\nconst LexerModule *Catalogue::Find(int language) {\n\tScintilla_LinkLexers();\n\tfor (std::vector<LexerModule *>::iterator it=lexerCatalogue.begin();\n\t\tit != lexerCatalogue.end(); ++it) {\n\t\tif ((*it)->GetLanguage() == language) {\n\t\t\treturn *it;\n\t\t}\n\t}\n\treturn 0;\n}\n\nconst LexerModule *Catalogue::Find(const char *languageName) {\n\tScintilla_LinkLexers();\n\tif (languageName) {\n\t\tfor (std::vector<LexerModule *>::iterator it=lexerCatalogue.begin();\n\t\t\tit != lexerCatalogue.end(); ++it) {\n\t\t\tif ((*it)->languageName && (0 == strcmp((*it)->languageName, languageName))) {\n\t\t\t\treturn *it;\n\t\t\t}\n\t\t}\n\t}\n\treturn 0;\n}\n\nvoid Catalogue::AddLexerModule(LexerModule *plm) {\n\tif (plm->GetLanguage() == SCLEX_AUTOMATIC) {\n\t\tplm->language = nextLanguage;\n\t\tnextLanguage++;\n\t}\n\tlexerCatalogue.push_back(plm);\n}\n\n// To add or remove a lexer, add or remove its file and run LexGen.py.\n\n// Force a reference to all of the Scintilla lexers so that the linker will\n// not remove the code of the lexers.\nint Scintilla_LinkLexers() {\n\n\tstatic int initialised = 0;\n\tif (initialised)\n\t\treturn 0;\n\tinitialised = 1;\n\n// Shorten the code that declares a lexer and ensures it is linked in by calling a method.\n#define LINK_LEXER(lexer) extern LexerModule lexer; Catalogue::AddLexerModule(&lexer);\n\n//++Autogenerated -- run scripts/LexGen.py to regenerate\n//**\\(\\tLINK_LEXER(\\*);\\n\\)\n\tLINK_LEXER(lmA68k);\n\tLINK_LEXER(lmAbaqus);\n\tLINK_LEXER(lmAda);\n\tLINK_LEXER(lmAPDL);\n\tLINK_LEXER(lmAs);\n\tLINK_LEXER(lmAsm);\n\tLINK_LEXER(lmAsn1);\n\tLINK_LEXER(lmASY);\n\tLINK_LEXER(lmAU3);\n\tLINK_LEXER(lmAVE);\n\tLINK_LEXER(lmAVS);\n\tLINK_LEXER(lmBaan);\n\tLINK_LEXER(lmBash);\n\tLINK_LEXER(lmBatch);\n    // LINK_LEXER(lmBibTeX);\n\tLINK_LEXER(lmBlitzBasic);\n\tLINK_LEXER(lmBullant);\n\tLINK_LEXER(lmCaml);\n\tLINK_LEXER(lmClw);\n\tLINK_LEXER(lmClwNoCase);\n\tLINK_LEXER(lmCmake);\n\tLINK_LEXER(lmCOBOL);\n\tLINK_LEXER(lmCoffeeScript);\n\tLINK_LEXER(lmConf);\n\tLINK_LEXER(lmCPP);\n\tLINK_LEXER(lmCPPNoCase);\n\tLINK_LEXER(lmCsound);\n\tLINK_LEXER(lmCss);\n\tLINK_LEXER(lmD);\n\tLINK_LEXER(lmDiff);\n\tLINK_LEXER(lmDMAP);\n\tLINK_LEXER(lmDMIS);\n\tLINK_LEXER(lmECL);\n\tLINK_LEXER(lmEDIFACT);\n\tLINK_LEXER(lmEiffel);\n\tLINK_LEXER(lmEiffelkw);\n\tLINK_LEXER(lmErlang);\n\tLINK_LEXER(lmErrorList);\n\tLINK_LEXER(lmESCRIPT);\n\tLINK_LEXER(lmF77);\n\tLINK_LEXER(lmFlagShip);\n\tLINK_LEXER(lmForth);\n\tLINK_LEXER(lmFortran);\n\tLINK_LEXER(lmFreeBasic);\n\tLINK_LEXER(lmGAP);\n\tLINK_LEXER(lmGui4Cli);\n\tLINK_LEXER(lmHaskell);\n\tLINK_LEXER(lmHTML);\n\tLINK_LEXER(lmIHex);\n\tLINK_LEXER(lmInno);\n\tLINK_LEXER(lmJSON);\n\tLINK_LEXER(lmKix);\n\tLINK_LEXER(lmKVIrc);\n    // LINK_LEXER(lmLatex);\n\tLINK_LEXER(lmLISP);\n\tLINK_LEXER(lmLiterateHaskell);\n\tLINK_LEXER(lmLot);\n\tLINK_LEXER(lmLout);\n\tLINK_LEXER(lmLua);\n\tLINK_LEXER(lmMagikSF);\n\tLINK_LEXER(lmMake);\n\tLINK_LEXER(lmMarkdown);\n\tLINK_LEXER(lmMatlab);\n\tLINK_LEXER(lmMETAPOST);\n\tLINK_LEXER(lmMMIXAL);\n\tLINK_LEXER(lmModula);\n\tLINK_LEXER(lmMSSQL);\n\tLINK_LEXER(lmMySQL);\n\tLINK_LEXER(lmNimrod);\n\tLINK_LEXER(lmNncrontab);\n\tLINK_LEXER(lmNsis);\n\tLINK_LEXER(lmNull);\n\tLINK_LEXER(lmOctave);\n\tLINK_LEXER(lmOpal);\n\tLINK_LEXER(lmOScript);\n\tLINK_LEXER(lmPascal);\n\tLINK_LEXER(lmPB);\n\tLINK_LEXER(lmPerl);\n\tLINK_LEXER(lmPHPSCRIPT);\n\tLINK_LEXER(lmPLM);\n\tLINK_LEXER(lmPO);\n\tLINK_LEXER(lmPOV);\n\tLINK_LEXER(lmPowerPro);\n\tLINK_LEXER(lmPowerShell);\n\tLINK_LEXER(lmProgress);\n\tLINK_LEXER(lmProps);\n\tLINK_LEXER(lmPS);\n\tLINK_LEXER(lmPureBasic);\n\tLINK_LEXER(lmPython);\n\tLINK_LEXER(lmR);\n\tLINK_LEXER(lmREBOL);\n\tLINK_LEXER(lmRegistry);\n\tLINK_LEXER(lmRuby);\n\tLINK_LEXER(lmRust);\n\tLINK_LEXER(lmScriptol);\n\tLINK_LEXER(lmSmalltalk);\n\tLINK_LEXER(lmSML);\n\tLINK_LEXER(lmSorc);\n\tLINK_LEXER(lmSpecman);\n\tLINK_LEXER(lmSpice);\n\tLINK_LEXER(lmSQL);\n\tLINK_LEXER(lmSrec);\n\tLINK_LEXER(lmSTTXT);\n\tLINK_LEXER(lmTACL);\n\tLINK_LEXER(lmTADS3);\n\tLINK_LEXER(lmTAL);\n\tLINK_LEXER(lmTCL);\n\tLINK_LEXER(lmTCMD);\n\tLINK_LEXER(lmTEHex);\n\tLINK_LEXER(lmTeX);\n\tLINK_LEXER(lmTxt2tags);\n\tLINK_LEXER(lmVB);\n\tLINK_LEXER(lmVBScript);\n\tLINK_LEXER(lmVerilog);\n\tLINK_LEXER(lmVHDL);\n\tLINK_LEXER(lmVisualProlog);\n\tLINK_LEXER(lmXML);\n\tLINK_LEXER(lmYAML);\n\n//--Autogenerated -- end of automatically generated section\n\n\treturn 1;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Catalogue.h",
    "content": "// Scintilla source code edit control\n/** @file Catalogue.h\n ** Lexer infrastructure.\n **/\n// Copyright 1998-2010 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CATALOGUE_H\n#define CATALOGUE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass Catalogue {\npublic:\n\tstatic const LexerModule *Find(int language);\n\tstatic const LexerModule *Find(const char *languageName);\n\tstatic void AddLexerModule(LexerModule *plm);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CellBuffer.cpp",
    "content": "// Scintilla source code edit control\n/** @file CellBuffer.cxx\n ** Manages a buffer of cells.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n\n#include <stdexcept>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"CellBuffer.h\"\n#include \"UniConversion.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nLineVector::LineVector() : starts(256), perLine(0) {\n\tInit();\n}\n\nLineVector::~LineVector() {\n\tstarts.DeleteAll();\n}\n\nvoid LineVector::Init() {\n\tstarts.DeleteAll();\n\tif (perLine) {\n\t\tperLine->Init();\n\t}\n}\n\nvoid LineVector::SetPerLine(PerLine *pl) {\n\tperLine = pl;\n}\n\nvoid LineVector::InsertText(int line, int delta) {\n\tstarts.InsertText(line, delta);\n}\n\nvoid LineVector::InsertLine(int line, int position, bool lineStart) {\n\tstarts.InsertPartition(line, position);\n\tif (perLine) {\n\t\tif ((line > 0) && lineStart)\n\t\t\tline--;\n\t\tperLine->InsertLine(line);\n\t}\n}\n\nvoid LineVector::SetLineStart(int line, int position) {\n\tstarts.SetPartitionStartPosition(line, position);\n}\n\nvoid LineVector::RemoveLine(int line) {\n\tstarts.RemovePartition(line);\n\tif (perLine) {\n\t\tperLine->RemoveLine(line);\n\t}\n}\n\nint LineVector::LineFromPosition(int pos) const {\n\treturn starts.PartitionFromPosition(pos);\n}\n\nAction::Action() {\n\tat = startAction;\n\tposition = 0;\n\tdata = 0;\n\tlenData = 0;\n\tmayCoalesce = false;\n}\n\nAction::~Action() {\n\tDestroy();\n}\n\nvoid Action::Create(actionType at_, int position_, const char *data_, int lenData_, bool mayCoalesce_) {\n\tdelete []data;\n\tdata = NULL;\n\tposition = position_;\n\tat = at_;\n\tif (lenData_) {\n\t\tdata = new char[lenData_];\n\t\tmemcpy(data, data_, lenData_);\n\t}\n\tlenData = lenData_;\n\tmayCoalesce = mayCoalesce_;\n}\n\nvoid Action::Destroy() {\n\tdelete []data;\n\tdata = 0;\n}\n\nvoid Action::Grab(Action *source) {\n\tdelete []data;\n\n\tposition = source->position;\n\tat = source->at;\n\tdata = source->data;\n\tlenData = source->lenData;\n\tmayCoalesce = source->mayCoalesce;\n\n\t// Ownership of source data transferred to this\n\tsource->position = 0;\n\tsource->at = startAction;\n\tsource->data = 0;\n\tsource->lenData = 0;\n\tsource->mayCoalesce = true;\n}\n\n// The undo history stores a sequence of user operations that represent the user's view of the\n// commands executed on the text.\n// Each user operation contains a sequence of text insertion and text deletion actions.\n// All the user operations are stored in a list of individual actions with 'start' actions used\n// as delimiters between user operations.\n// Initially there is one start action in the history.\n// As each action is performed, it is recorded in the history. The action may either become\n// part of the current user operation or may start a new user operation. If it is to be part of the\n// current operation, then it overwrites the current last action. If it is to be part of a new\n// operation, it is appended after the current last action.\n// After writing the new action, a new start action is appended at the end of the history.\n// The decision of whether to start a new user operation is based upon two factors. If a\n// compound operation has been explicitly started by calling BeginUndoAction and no matching\n// EndUndoAction (these calls nest) has been called, then the action is coalesced into the current\n// operation. If there is no outstanding BeginUndoAction call then a new operation is started\n// unless it looks as if the new action is caused by the user typing or deleting a stream of text.\n// Sequences that look like typing or deletion are coalesced into a single user operation.\n\nUndoHistory::UndoHistory() {\n\n\tlenActions = 100;\n\tactions = new Action[lenActions];\n\tmaxAction = 0;\n\tcurrentAction = 0;\n\tundoSequenceDepth = 0;\n\tsavePoint = 0;\n\ttentativePoint = -1;\n\n\tactions[currentAction].Create(startAction);\n}\n\nUndoHistory::~UndoHistory() {\n\tdelete []actions;\n\tactions = 0;\n}\n\nvoid UndoHistory::EnsureUndoRoom() {\n\t// Have to test that there is room for 2 more actions in the array\n\t// as two actions may be created by the calling function\n\tif (currentAction >= (lenActions - 2)) {\n\t\t// Run out of undo nodes so extend the array\n\t\tint lenActionsNew = lenActions * 2;\n\t\tAction *actionsNew = new Action[lenActionsNew];\n\t\tfor (int act = 0; act <= currentAction; act++)\n\t\t\tactionsNew[act].Grab(&actions[act]);\n\t\tdelete []actions;\n\t\tlenActions = lenActionsNew;\n\t\tactions = actionsNew;\n\t}\n}\n\nconst char *UndoHistory::AppendAction(actionType at, int position, const char *data, int lengthData,\n\tbool &startSequence, bool mayCoalesce) {\n\tEnsureUndoRoom();\n\t//Platform::DebugPrintf(\"%% %d action %d %d %d\\n\", at, position, lengthData, currentAction);\n\t//Platform::DebugPrintf(\"^ %d action %d %d\\n\", actions[currentAction - 1].at,\n\t//\tactions[currentAction - 1].position, actions[currentAction - 1].lenData);\n\tif (currentAction < savePoint) {\n\t\tsavePoint = -1;\n\t}\n\tint oldCurrentAction = currentAction;\n\tif (currentAction >= 1) {\n\t\tif (0 == undoSequenceDepth) {\n\t\t\t// Top level actions may not always be coalesced\n\t\t\tint targetAct = -1;\n\t\t\tconst Action *actPrevious = &(actions[currentAction + targetAct]);\n\t\t\t// Container actions may forward the coalesce state of Scintilla Actions.\n\t\t\twhile ((actPrevious->at == containerAction) && actPrevious->mayCoalesce) {\n\t\t\t\ttargetAct--;\n\t\t\t\tactPrevious = &(actions[currentAction + targetAct]);\n\t\t\t}\n\t\t\t// See if current action can be coalesced into previous action\n\t\t\t// Will work if both are inserts or deletes and position is same\n#if defined(_MSC_VER) && defined(_PREFAST_)\n\t\t\t// Visual Studio 2013 Code Analysis wrongly believes actions can be NULL at its next reference\n\t\t\t__analysis_assume(actions);\n#endif\n\t\t\tif ((currentAction == savePoint) || (currentAction == tentativePoint)) {\n\t\t\t\tcurrentAction++;\n\t\t\t} else if (!actions[currentAction].mayCoalesce) {\n\t\t\t\t// Not allowed to coalesce if this set\n\t\t\t\tcurrentAction++;\n\t\t\t} else if (!mayCoalesce || !actPrevious->mayCoalesce) {\n\t\t\t\tcurrentAction++;\n\t\t\t} else if (at == containerAction || actions[currentAction].at == containerAction) {\n\t\t\t\t;\t// A coalescible containerAction\n\t\t\t} else if ((at != actPrevious->at) && (actPrevious->at != startAction)) {\n\t\t\t\tcurrentAction++;\n\t\t\t} else if ((at == insertAction) &&\n\t\t\t           (position != (actPrevious->position + actPrevious->lenData))) {\n\t\t\t\t// Insertions must be immediately after to coalesce\n\t\t\t\tcurrentAction++;\n\t\t\t} else if (at == removeAction) {\n\t\t\t\tif ((lengthData == 1) || (lengthData == 2)) {\n\t\t\t\t\tif ((position + lengthData) == actPrevious->position) {\n\t\t\t\t\t\t; // Backspace -> OK\n\t\t\t\t\t} else if (position == actPrevious->position) {\n\t\t\t\t\t\t; // Delete -> OK\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Removals must be at same position to coalesce\n\t\t\t\t\t\tcurrentAction++;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Removals must be of one character to coalesce\n\t\t\t\t\tcurrentAction++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Action coalesced.\n\t\t\t}\n\n\t\t} else {\n\t\t\t// Actions not at top level are always coalesced unless this is after return to top level\n\t\t\tif (!actions[currentAction].mayCoalesce)\n\t\t\t\tcurrentAction++;\n\t\t}\n\t} else {\n\t\tcurrentAction++;\n\t}\n\tstartSequence = oldCurrentAction != currentAction;\n\tint actionWithData = currentAction;\n\tactions[currentAction].Create(at, position, data, lengthData, mayCoalesce);\n\tcurrentAction++;\n\tactions[currentAction].Create(startAction);\n\tmaxAction = currentAction;\n\treturn actions[actionWithData].data;\n}\n\nvoid UndoHistory::BeginUndoAction() {\n\tEnsureUndoRoom();\n\tif (undoSequenceDepth == 0) {\n\t\tif (actions[currentAction].at != startAction) {\n\t\t\tcurrentAction++;\n\t\t\tactions[currentAction].Create(startAction);\n\t\t\tmaxAction = currentAction;\n\t\t}\n\t\tactions[currentAction].mayCoalesce = false;\n\t}\n\tundoSequenceDepth++;\n}\n\nvoid UndoHistory::EndUndoAction() {\n\tPLATFORM_ASSERT(undoSequenceDepth > 0);\n\tEnsureUndoRoom();\n\tundoSequenceDepth--;\n\tif (0 == undoSequenceDepth) {\n\t\tif (actions[currentAction].at != startAction) {\n\t\t\tcurrentAction++;\n\t\t\tactions[currentAction].Create(startAction);\n\t\t\tmaxAction = currentAction;\n\t\t}\n\t\tactions[currentAction].mayCoalesce = false;\n\t}\n}\n\nvoid UndoHistory::DropUndoSequence() {\n\tundoSequenceDepth = 0;\n}\n\nvoid UndoHistory::DeleteUndoHistory() {\n\tfor (int i = 1; i < maxAction; i++)\n\t\tactions[i].Destroy();\n\tmaxAction = 0;\n\tcurrentAction = 0;\n\tactions[currentAction].Create(startAction);\n\tsavePoint = 0;\n\ttentativePoint = -1;\n}\n\nvoid UndoHistory::SetSavePoint() {\n\tsavePoint = currentAction;\n}\n\nbool UndoHistory::IsSavePoint() const {\n\treturn savePoint == currentAction;\n}\n\nvoid UndoHistory::TentativeStart() {\n\ttentativePoint = currentAction;\n}\n\nvoid UndoHistory::TentativeCommit() {\n\ttentativePoint = -1;\n\t// Truncate undo history\n\tmaxAction = currentAction;\n}\n\nint UndoHistory::TentativeSteps() {\n\t// Drop any trailing startAction\n\tif (actions[currentAction].at == startAction && currentAction > 0)\n\t\tcurrentAction--;\n\tif (tentativePoint >= 0)\n\t\treturn currentAction - tentativePoint;\n\telse\n\t\treturn -1;\n}\n\nbool UndoHistory::CanUndo() const {\n\treturn (currentAction > 0) && (maxAction > 0);\n}\n\nint UndoHistory::StartUndo() {\n\t// Drop any trailing startAction\n\tif (actions[currentAction].at == startAction && currentAction > 0)\n\t\tcurrentAction--;\n\n\t// Count the steps in this action\n\tint act = currentAction;\n\twhile (actions[act].at != startAction && act > 0) {\n\t\tact--;\n\t}\n\treturn currentAction - act;\n}\n\nconst Action &UndoHistory::GetUndoStep() const {\n\treturn actions[currentAction];\n}\n\nvoid UndoHistory::CompletedUndoStep() {\n\tcurrentAction--;\n}\n\nbool UndoHistory::CanRedo() const {\n\treturn maxAction > currentAction;\n}\n\nint UndoHistory::StartRedo() {\n\t// Drop any leading startAction\n\tif (actions[currentAction].at == startAction && currentAction < maxAction)\n\t\tcurrentAction++;\n\n\t// Count the steps in this action\n\tint act = currentAction;\n\twhile (actions[act].at != startAction && act < maxAction) {\n\t\tact++;\n\t}\n\treturn act - currentAction;\n}\n\nconst Action &UndoHistory::GetRedoStep() const {\n\treturn actions[currentAction];\n}\n\nvoid UndoHistory::CompletedRedoStep() {\n\tcurrentAction++;\n}\n\nCellBuffer::CellBuffer() {\n\treadOnly = false;\n\tutf8LineEnds = 0;\n\tcollectingUndo = true;\n}\n\nCellBuffer::~CellBuffer() {\n}\n\nchar CellBuffer::CharAt(int position) const {\n\treturn substance.ValueAt(position);\n}\n\nvoid CellBuffer::GetCharRange(char *buffer, int position, int lengthRetrieve) const {\n\tif (lengthRetrieve <= 0)\n\t\treturn;\n\tif (position < 0)\n\t\treturn;\n\tif ((position + lengthRetrieve) > substance.Length()) {\n\t\tPlatform::DebugPrintf(\"Bad GetCharRange %d for %d of %d\\n\", position,\n\t\t                      lengthRetrieve, substance.Length());\n\t\treturn;\n\t}\n\tsubstance.GetRange(buffer, position, lengthRetrieve);\n}\n\nchar CellBuffer::StyleAt(int position) const {\n\treturn style.ValueAt(position);\n}\n\nvoid CellBuffer::GetStyleRange(unsigned char *buffer, int position, int lengthRetrieve) const {\n\tif (lengthRetrieve < 0)\n\t\treturn;\n\tif (position < 0)\n\t\treturn;\n\tif ((position + lengthRetrieve) > style.Length()) {\n\t\tPlatform::DebugPrintf(\"Bad GetStyleRange %d for %d of %d\\n\", position,\n\t\t                      lengthRetrieve, style.Length());\n\t\treturn;\n\t}\n\tstyle.GetRange(reinterpret_cast<char *>(buffer), position, lengthRetrieve);\n}\n\nconst char *CellBuffer::BufferPointer() {\n\treturn substance.BufferPointer();\n}\n\nconst char *CellBuffer::RangePointer(int position, int rangeLength) {\n\treturn substance.RangePointer(position, rangeLength);\n}\n\nint CellBuffer::GapPosition() const {\n\treturn substance.GapPosition();\n}\n\n// The char* returned is to an allocation owned by the undo history\nconst char *CellBuffer::InsertString(int position, const char *s, int insertLength, bool &startSequence) {\n\t// InsertString and DeleteChars are the bottleneck though which all changes occur\n\tconst char *data = s;\n\tif (!readOnly) {\n\t\tif (collectingUndo) {\n\t\t\t// Save into the undo/redo stack, but only the characters - not the formatting\n\t\t\t// This takes up about half load time\n\t\t\tdata = uh.AppendAction(insertAction, position, s, insertLength, startSequence);\n\t\t}\n\n\t\tBasicInsertString(position, s, insertLength);\n\t}\n\treturn data;\n}\n\nbool CellBuffer::SetStyleAt(int position, char styleValue) {\n\tchar curVal = style.ValueAt(position);\n\tif (curVal != styleValue) {\n\t\tstyle.SetValueAt(position, styleValue);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nbool CellBuffer::SetStyleFor(int position, int lengthStyle, char styleValue) {\n\tbool changed = false;\n\tPLATFORM_ASSERT(lengthStyle == 0 ||\n\t\t(lengthStyle > 0 && lengthStyle + position <= style.Length()));\n\twhile (lengthStyle--) {\n\t\tchar curVal = style.ValueAt(position);\n\t\tif (curVal != styleValue) {\n\t\t\tstyle.SetValueAt(position, styleValue);\n\t\t\tchanged = true;\n\t\t}\n\t\tposition++;\n\t}\n\treturn changed;\n}\n\n// The char* returned is to an allocation owned by the undo history\nconst char *CellBuffer::DeleteChars(int position, int deleteLength, bool &startSequence) {\n\t// InsertString and DeleteChars are the bottleneck though which all changes occur\n\tPLATFORM_ASSERT(deleteLength > 0);\n\tconst char *data = 0;\n\tif (!readOnly) {\n\t\tif (collectingUndo) {\n\t\t\t// Save into the undo/redo stack, but only the characters - not the formatting\n\t\t\t// The gap would be moved to position anyway for the deletion so this doesn't cost extra\n\t\t\tdata = substance.RangePointer(position, deleteLength);\n\t\t\tdata = uh.AppendAction(removeAction, position, data, deleteLength, startSequence);\n\t\t}\n\n\t\tBasicDeleteChars(position, deleteLength);\n\t}\n\treturn data;\n}\n\nint CellBuffer::Length() const {\n\treturn substance.Length();\n}\n\nvoid CellBuffer::Allocate(int newSize) {\n\tsubstance.ReAllocate(newSize);\n\tstyle.ReAllocate(newSize);\n}\n\nvoid CellBuffer::SetLineEndTypes(int utf8LineEnds_) {\n\tif (utf8LineEnds != utf8LineEnds_) {\n\t\tutf8LineEnds = utf8LineEnds_;\n\t\tResetLineEnds();\n\t}\n}\n\nbool CellBuffer::ContainsLineEnd(const char *s, int length) const {\n\tunsigned char chBeforePrev = 0;\n\tunsigned char chPrev = 0;\n\tfor (int i = 0; i < length; i++) {\n\t\tconst unsigned char ch = s[i];\n\t\tif ((ch == '\\r') || (ch == '\\n')) {\n\t\t\treturn true;\n\t\t} else if (utf8LineEnds) {\n\t\t\tunsigned char back3[3] = { chBeforePrev, chPrev, ch };\n\t\t\tif (UTF8IsSeparator(back3) || UTF8IsNEL(back3 + 1)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\tchBeforePrev = chPrev;\n\t\tchPrev = ch;\n\t}\n\treturn false;\n}\n\nvoid CellBuffer::SetPerLine(PerLine *pl) {\n\tlv.SetPerLine(pl);\n}\n\nint CellBuffer::Lines() const {\n\treturn lv.Lines();\n}\n\nint CellBuffer::LineStart(int line) const {\n\tif (line < 0)\n\t\treturn 0;\n\telse if (line >= Lines())\n\t\treturn Length();\n\telse\n\t\treturn lv.LineStart(line);\n}\n\nbool CellBuffer::IsReadOnly() const {\n\treturn readOnly;\n}\n\nvoid CellBuffer::SetReadOnly(bool set) {\n\treadOnly = set;\n}\n\nvoid CellBuffer::SetSavePoint() {\n\tuh.SetSavePoint();\n}\n\nbool CellBuffer::IsSavePoint() const {\n\treturn uh.IsSavePoint();\n}\n\nvoid CellBuffer::TentativeStart() {\n\tuh.TentativeStart();\n}\n\nvoid CellBuffer::TentativeCommit() {\n\tuh.TentativeCommit();\n}\n\nint CellBuffer::TentativeSteps() {\n\treturn uh.TentativeSteps();\n}\n\nbool CellBuffer::TentativeActive() const {\n\treturn uh.TentativeActive();\n}\n\n// Without undo\n\nvoid CellBuffer::InsertLine(int line, int position, bool lineStart) {\n\tlv.InsertLine(line, position, lineStart);\n}\n\nvoid CellBuffer::RemoveLine(int line) {\n\tlv.RemoveLine(line);\n}\n\nbool CellBuffer::UTF8LineEndOverlaps(int position) const {\n\tunsigned char bytes[] = {\n\t\tstatic_cast<unsigned char>(substance.ValueAt(position-2)),\n\t\tstatic_cast<unsigned char>(substance.ValueAt(position-1)),\n\t\tstatic_cast<unsigned char>(substance.ValueAt(position)),\n\t\tstatic_cast<unsigned char>(substance.ValueAt(position+1)),\n\t};\n\treturn UTF8IsSeparator(bytes) || UTF8IsSeparator(bytes+1) || UTF8IsNEL(bytes+1);\n}\n\nvoid CellBuffer::ResetLineEnds() {\n\t// Reinitialize line data -- too much work to preserve\n\tlv.Init();\n\n\tint position = 0;\n\tint length = Length();\n\tint lineInsert = 1;\n\tbool atLineStart = true;\n\tlv.InsertText(lineInsert-1, length);\n\tunsigned char chBeforePrev = 0;\n\tunsigned char chPrev = 0;\n\tfor (int i = 0; i < length; i++) {\n\t\tunsigned char ch = substance.ValueAt(position + i);\n\t\tif (ch == '\\r') {\n\t\t\tInsertLine(lineInsert, (position + i) + 1, atLineStart);\n\t\t\tlineInsert++;\n\t\t} else if (ch == '\\n') {\n\t\t\tif (chPrev == '\\r') {\n\t\t\t\t// Patch up what was end of line\n\t\t\t\tlv.SetLineStart(lineInsert - 1, (position + i) + 1);\n\t\t\t} else {\n\t\t\t\tInsertLine(lineInsert, (position + i) + 1, atLineStart);\n\t\t\t\tlineInsert++;\n\t\t\t}\n\t\t} else if (utf8LineEnds) {\n\t\t\tunsigned char back3[3] = {chBeforePrev, chPrev, ch};\n\t\t\tif (UTF8IsSeparator(back3) || UTF8IsNEL(back3+1)) {\n\t\t\t\tInsertLine(lineInsert, (position + i) + 1, atLineStart);\n\t\t\t\tlineInsert++;\n\t\t\t}\n\t\t}\n\t\tchBeforePrev = chPrev;\n\t\tchPrev = ch;\n\t}\n}\n\nvoid CellBuffer::BasicInsertString(int position, const char *s, int insertLength) {\n\tif (insertLength == 0)\n\t\treturn;\n\tPLATFORM_ASSERT(insertLength > 0);\n\n\tunsigned char chAfter = substance.ValueAt(position);\n\tbool breakingUTF8LineEnd = false;\n\tif (utf8LineEnds && UTF8IsTrailByte(chAfter)) {\n\t\tbreakingUTF8LineEnd = UTF8LineEndOverlaps(position);\n\t}\n\n\tsubstance.InsertFromArray(position, s, 0, insertLength);\n\tstyle.InsertValue(position, insertLength, 0);\n\n\tint lineInsert = lv.LineFromPosition(position) + 1;\n\tbool atLineStart = lv.LineStart(lineInsert-1) == position;\n\t// Point all the lines after the insertion point further along in the buffer\n\tlv.InsertText(lineInsert-1, insertLength);\n\tunsigned char chBeforePrev = substance.ValueAt(position - 2);\n\tunsigned char chPrev = substance.ValueAt(position - 1);\n\tif (chPrev == '\\r' && chAfter == '\\n') {\n\t\t// Splitting up a crlf pair at position\n\t\tInsertLine(lineInsert, position, false);\n\t\tlineInsert++;\n\t}\n\tif (breakingUTF8LineEnd) {\n\t\tRemoveLine(lineInsert);\n\t}\n\tunsigned char ch = ' ';\n\tfor (int i = 0; i < insertLength; i++) {\n\t\tch = s[i];\n\t\tif (ch == '\\r') {\n\t\t\tInsertLine(lineInsert, (position + i) + 1, atLineStart);\n\t\t\tlineInsert++;\n\t\t} else if (ch == '\\n') {\n\t\t\tif (chPrev == '\\r') {\n\t\t\t\t// Patch up what was end of line\n\t\t\t\tlv.SetLineStart(lineInsert - 1, (position + i) + 1);\n\t\t\t} else {\n\t\t\t\tInsertLine(lineInsert, (position + i) + 1, atLineStart);\n\t\t\t\tlineInsert++;\n\t\t\t}\n\t\t} else if (utf8LineEnds) {\n\t\t\tunsigned char back3[3] = {chBeforePrev, chPrev, ch};\n\t\t\tif (UTF8IsSeparator(back3) || UTF8IsNEL(back3+1)) {\n\t\t\t\tInsertLine(lineInsert, (position + i) + 1, atLineStart);\n\t\t\t\tlineInsert++;\n\t\t\t}\n\t\t}\n\t\tchBeforePrev = chPrev;\n\t\tchPrev = ch;\n\t}\n\t// Joining two lines where last insertion is cr and following substance starts with lf\n\tif (chAfter == '\\n') {\n\t\tif (ch == '\\r') {\n\t\t\t// End of line already in buffer so drop the newly created one\n\t\t\tRemoveLine(lineInsert - 1);\n\t\t}\n\t} else if (utf8LineEnds && !UTF8IsAscii(chAfter)) {\n\t\t// May have end of UTF-8 line end in buffer and start in insertion\n\t\tfor (int j = 0; j < UTF8SeparatorLength-1; j++) {\n\t\t\tunsigned char chAt = substance.ValueAt(position + insertLength + j);\n\t\t\tunsigned char back3[3] = {chBeforePrev, chPrev, chAt};\n\t\t\tif (UTF8IsSeparator(back3)) {\n\t\t\t\tInsertLine(lineInsert, (position + insertLength + j) + 1, atLineStart);\n\t\t\t\tlineInsert++;\n\t\t\t}\n\t\t\tif ((j == 0) && UTF8IsNEL(back3+1)) {\n\t\t\t\tInsertLine(lineInsert, (position + insertLength + j) + 1, atLineStart);\n\t\t\t\tlineInsert++;\n\t\t\t}\n\t\t\tchBeforePrev = chPrev;\n\t\t\tchPrev = chAt;\n\t\t}\n\t}\n}\n\nvoid CellBuffer::BasicDeleteChars(int position, int deleteLength) {\n\tif (deleteLength == 0)\n\t\treturn;\n\n\tif ((position == 0) && (deleteLength == substance.Length())) {\n\t\t// If whole buffer is being deleted, faster to reinitialise lines data\n\t\t// than to delete each line.\n\t\tlv.Init();\n\t} else {\n\t\t// Have to fix up line positions before doing deletion as looking at text in buffer\n\t\t// to work out which lines have been removed\n\n\t\tint lineRemove = lv.LineFromPosition(position) + 1;\n\t\tlv.InsertText(lineRemove-1, - (deleteLength));\n\t\tunsigned char chPrev = substance.ValueAt(position - 1);\n\t\tunsigned char chBefore = chPrev;\n\t\tunsigned char chNext = substance.ValueAt(position);\n\t\tbool ignoreNL = false;\n\t\tif (chPrev == '\\r' && chNext == '\\n') {\n\t\t\t// Move back one\n\t\t\tlv.SetLineStart(lineRemove, position);\n\t\t\tlineRemove++;\n\t\t\tignoreNL = true; \t// First \\n is not real deletion\n\t\t}\n\t\tif (utf8LineEnds && UTF8IsTrailByte(chNext)) {\n\t\t\tif (UTF8LineEndOverlaps(position)) {\n\t\t\t\tRemoveLine(lineRemove);\n\t\t\t}\n\t\t}\n\n\t\tunsigned char ch = chNext;\n\t\tfor (int i = 0; i < deleteLength; i++) {\n\t\t\tchNext = substance.ValueAt(position + i + 1);\n\t\t\tif (ch == '\\r') {\n\t\t\t\tif (chNext != '\\n') {\n\t\t\t\t\tRemoveLine(lineRemove);\n\t\t\t\t}\n\t\t\t} else if (ch == '\\n') {\n\t\t\t\tif (ignoreNL) {\n\t\t\t\t\tignoreNL = false; \t// Further \\n are real deletions\n\t\t\t\t} else {\n\t\t\t\t\tRemoveLine(lineRemove);\n\t\t\t\t}\n\t\t\t} else if (utf8LineEnds) {\n\t\t\t\tif (!UTF8IsAscii(ch)) {\n\t\t\t\t\tunsigned char next3[3] = {ch, chNext,\n\t\t\t\t\t\tstatic_cast<unsigned char>(substance.ValueAt(position + i + 2))};\n\t\t\t\t\tif (UTF8IsSeparator(next3) || UTF8IsNEL(next3)) {\n\t\t\t\t\t\tRemoveLine(lineRemove);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tch = chNext;\n\t\t}\n\t\t// May have to fix up end if last deletion causes cr to be next to lf\n\t\t// or removes one of a crlf pair\n\t\tchar chAfter = substance.ValueAt(position + deleteLength);\n\t\tif (chBefore == '\\r' && chAfter == '\\n') {\n\t\t\t// Using lineRemove-1 as cr ended line before start of deletion\n\t\t\tRemoveLine(lineRemove - 1);\n\t\t\tlv.SetLineStart(lineRemove - 1, position + 1);\n\t\t}\n\t}\n\tsubstance.DeleteRange(position, deleteLength);\n\tstyle.DeleteRange(position, deleteLength);\n}\n\nbool CellBuffer::SetUndoCollection(bool collectUndo) {\n\tcollectingUndo = collectUndo;\n\tuh.DropUndoSequence();\n\treturn collectingUndo;\n}\n\nbool CellBuffer::IsCollectingUndo() const {\n\treturn collectingUndo;\n}\n\nvoid CellBuffer::BeginUndoAction() {\n\tuh.BeginUndoAction();\n}\n\nvoid CellBuffer::EndUndoAction() {\n\tuh.EndUndoAction();\n}\n\nvoid CellBuffer::AddUndoAction(int token, bool mayCoalesce) {\n\tbool startSequence;\n\tuh.AppendAction(containerAction, token, 0, 0, startSequence, mayCoalesce);\n}\n\nvoid CellBuffer::DeleteUndoHistory() {\n\tuh.DeleteUndoHistory();\n}\n\nbool CellBuffer::CanUndo() const {\n\treturn uh.CanUndo();\n}\n\nint CellBuffer::StartUndo() {\n\treturn uh.StartUndo();\n}\n\nconst Action &CellBuffer::GetUndoStep() const {\n\treturn uh.GetUndoStep();\n}\n\nvoid CellBuffer::PerformUndoStep() {\n\tconst Action &actionStep = uh.GetUndoStep();\n\tif (actionStep.at == insertAction) {\n\t\tif (substance.Length() < actionStep.lenData) {\n\t\t\tthrow std::runtime_error(\n\t\t\t\t\"CellBuffer::PerformUndoStep: deletion must be less than document length.\");\n\t\t}\n\t\tBasicDeleteChars(actionStep.position, actionStep.lenData);\n\t} else if (actionStep.at == removeAction) {\n\t\tBasicInsertString(actionStep.position, actionStep.data, actionStep.lenData);\n\t}\n\tuh.CompletedUndoStep();\n}\n\nbool CellBuffer::CanRedo() const {\n\treturn uh.CanRedo();\n}\n\nint CellBuffer::StartRedo() {\n\treturn uh.StartRedo();\n}\n\nconst Action &CellBuffer::GetRedoStep() const {\n\treturn uh.GetRedoStep();\n}\n\nvoid CellBuffer::PerformRedoStep() {\n\tconst Action &actionStep = uh.GetRedoStep();\n\tif (actionStep.at == insertAction) {\n\t\tBasicInsertString(actionStep.position, actionStep.data, actionStep.lenData);\n\t} else if (actionStep.at == removeAction) {\n\t\tBasicDeleteChars(actionStep.position, actionStep.lenData);\n\t}\n\tuh.CompletedRedoStep();\n}\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CellBuffer.h",
    "content": "// Scintilla source code edit control\n/** @file CellBuffer.h\n ** Manages the text of the document.\n **/\n// Copyright 1998-2004 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CELLBUFFER_H\n#define CELLBUFFER_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n// Interface to per-line data that wants to see each line insertion and deletion\nclass PerLine {\npublic:\n\tvirtual ~PerLine() {}\n\tvirtual void Init()=0;\n\tvirtual void InsertLine(int line)=0;\n\tvirtual void RemoveLine(int line)=0;\n};\n\n/**\n * The line vector contains information about each of the lines in a cell buffer.\n */\nclass LineVector {\n\n\tPartitioning starts;\n\tPerLine *perLine;\n\npublic:\n\n\tLineVector();\n\t~LineVector();\n\tvoid Init();\n\tvoid SetPerLine(PerLine *pl);\n\n\tvoid InsertText(int line, int delta);\n\tvoid InsertLine(int line, int position, bool lineStart);\n\tvoid SetLineStart(int line, int position);\n\tvoid RemoveLine(int line);\n\tint Lines() const {\n\t\treturn starts.Partitions();\n\t}\n\tint LineFromPosition(int pos) const;\n\tint LineStart(int line) const {\n\t\treturn starts.PositionFromPartition(line);\n\t}\n};\n\nenum actionType { insertAction, removeAction, startAction, containerAction };\n\n/**\n * Actions are used to store all the information required to perform one undo/redo step.\n */\nclass Action {\npublic:\n\tactionType at;\n\tint position;\n\tchar *data;\n\tint lenData;\n\tbool mayCoalesce;\n\n\tAction();\n\t~Action();\n\tvoid Create(actionType at_, int position_=0, const char *data_=0, int lenData_=0, bool mayCoalesce_=true);\n\tvoid Destroy();\n\tvoid Grab(Action *source);\n};\n\n/**\n *\n */\nclass UndoHistory {\n\tAction *actions;\n\tint lenActions;\n\tint maxAction;\n\tint currentAction;\n\tint undoSequenceDepth;\n\tint savePoint;\n\tint tentativePoint;\n\n\tvoid EnsureUndoRoom();\n\n\t// Private so UndoHistory objects can not be copied\n\tUndoHistory(const UndoHistory &);\n\npublic:\n\tUndoHistory();\n\t~UndoHistory();\n\n\tconst char *AppendAction(actionType at, int position, const char *data, int length, bool &startSequence, bool mayCoalesce=true);\n\n\tvoid BeginUndoAction();\n\tvoid EndUndoAction();\n\tvoid DropUndoSequence();\n\tvoid DeleteUndoHistory();\n\n\t/// The save point is a marker in the undo stack where the container has stated that\n\t/// the buffer was saved. Undo and redo can move over the save point.\n\tvoid SetSavePoint();\n\tbool IsSavePoint() const;\n\n\t// Tentative actions are used for input composition so that it can be undone cleanly\n\tvoid TentativeStart();\n\tvoid TentativeCommit();\n\tbool TentativeActive() const { return tentativePoint >= 0; }\n\tint TentativeSteps();\n\n\t/// To perform an undo, StartUndo is called to retrieve the number of steps, then UndoStep is\n\t/// called that many times. Similarly for redo.\n\tbool CanUndo() const;\n\tint StartUndo();\n\tconst Action &GetUndoStep() const;\n\tvoid CompletedUndoStep();\n\tbool CanRedo() const;\n\tint StartRedo();\n\tconst Action &GetRedoStep() const;\n\tvoid CompletedRedoStep();\n};\n\n/**\n * Holder for an expandable array of characters that supports undo and line markers.\n * Based on article \"Data Structures in a Bit-Mapped Text Editor\"\n * by Wilfred J. Hansen, Byte January 1987, page 183.\n */\nclass CellBuffer {\nprivate:\n\tSplitVector<char> substance;\n\tSplitVector<char> style;\n\tbool readOnly;\n\tint utf8LineEnds;\n\n\tbool collectingUndo;\n\tUndoHistory uh;\n\n\tLineVector lv;\n\n\tbool UTF8LineEndOverlaps(int position) const;\n\tvoid ResetLineEnds();\n\t/// Actions without undo\n\tvoid BasicInsertString(int position, const char *s, int insertLength);\n\tvoid BasicDeleteChars(int position, int deleteLength);\n\npublic:\n\n\tCellBuffer();\n\t~CellBuffer();\n\n\t/// Retrieving positions outside the range of the buffer works and returns 0\n\tchar CharAt(int position) const;\n\tvoid GetCharRange(char *buffer, int position, int lengthRetrieve) const;\n\tchar StyleAt(int position) const;\n\tvoid GetStyleRange(unsigned char *buffer, int position, int lengthRetrieve) const;\n\tconst char *BufferPointer();\n\tconst char *RangePointer(int position, int rangeLength);\n\tint GapPosition() const;\n\n\tint Length() const;\n\tvoid Allocate(int newSize);\n\tint GetLineEndTypes() const { return utf8LineEnds; }\n\tvoid SetLineEndTypes(int utf8LineEnds_);\n\tbool ContainsLineEnd(const char *s, int length) const;\n\tvoid SetPerLine(PerLine *pl);\n\tint Lines() const;\n\tint LineStart(int line) const;\n\tint LineFromPosition(int pos) const { return lv.LineFromPosition(pos); }\n\tvoid InsertLine(int line, int position, bool lineStart);\n\tvoid RemoveLine(int line);\n\tconst char *InsertString(int position, const char *s, int insertLength, bool &startSequence);\n\n\t/// Setting styles for positions outside the range of the buffer is safe and has no effect.\n\t/// @return true if the style of a character is changed.\n\tbool SetStyleAt(int position, char styleValue);\n\tbool SetStyleFor(int position, int length, char styleValue);\n\n\tconst char *DeleteChars(int position, int deleteLength, bool &startSequence);\n\n\tbool IsReadOnly() const;\n\tvoid SetReadOnly(bool set);\n\n\t/// The save point is a marker in the undo stack where the container has stated that\n\t/// the buffer was saved. Undo and redo can move over the save point.\n\tvoid SetSavePoint();\n\tbool IsSavePoint() const;\n\n\tvoid TentativeStart();\n\tvoid TentativeCommit();\n\tbool TentativeActive() const;\n\tint TentativeSteps();\n\n\tbool SetUndoCollection(bool collectUndo);\n\tbool IsCollectingUndo() const;\n\tvoid BeginUndoAction();\n\tvoid EndUndoAction();\n\tvoid AddUndoAction(int token, bool mayCoalesce);\n\tvoid DeleteUndoHistory();\n\n\t/// To perform an undo, StartUndo is called to retrieve the number of steps, then UndoStep is\n\t/// called that many times. Similarly for redo.\n\tbool CanUndo() const;\n\tint StartUndo();\n\tconst Action &GetUndoStep() const;\n\tvoid PerformUndoStep();\n\tbool CanRedo() const;\n\tint StartRedo();\n\tconst Action &GetRedoStep() const;\n\tvoid PerformRedoStep();\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CharClassify.cpp",
    "content": "// Scintilla source code edit control\n/** @file CharClassify.cxx\n ** Character classifications used by Document and RESearch.\n **/\n// Copyright 2006 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <ctype.h>\n\n#include <stdexcept>\n\n#include \"CharClassify.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nCharClassify::CharClassify() {\n\tSetDefaultCharClasses(true);\n}\n\nvoid CharClassify::SetDefaultCharClasses(bool includeWordClass) {\n\t// Initialize all char classes to default values\n\tfor (int ch = 0; ch < 256; ch++) {\n\t\tif (ch == '\\r' || ch == '\\n')\n\t\t\tcharClass[ch] = ccNewLine;\n\t\telse if (ch < 0x20 || ch == ' ')\n\t\t\tcharClass[ch] = ccSpace;\n\t\telse if (includeWordClass && (ch >= 0x80 || isalnum(ch) || ch == '_'))\n\t\t\tcharClass[ch] = ccWord;\n\t\telse\n\t\t\tcharClass[ch] = ccPunctuation;\n\t}\n}\n\nvoid CharClassify::SetCharClasses(const unsigned char *chars, cc newCharClass) {\n\t// Apply the newCharClass to the specifed chars\n\tif (chars) {\n\t\twhile (*chars) {\n\t\t\tcharClass[*chars] = static_cast<unsigned char>(newCharClass);\n\t\t\tchars++;\n\t\t}\n\t}\n}\n\nint CharClassify::GetCharsOfClass(cc characterClass, unsigned char *buffer) const {\n\t// Get characters belonging to the given char class; return the number\n\t// of characters (if the buffer is NULL, don't write to it).\n\tint count = 0;\n\tfor (int ch = maxChar - 1; ch >= 0; --ch) {\n\t\tif (charClass[ch] == characterClass) {\n\t\t\t++count;\n\t\t\tif (buffer) {\n\t\t\t\t*buffer = static_cast<unsigned char>(ch);\n\t\t\t\tbuffer++;\n\t\t\t}\n\t\t}\n\t}\n\treturn count;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/CharClassify.h",
    "content": "// Scintilla source code edit control\n/** @file CharClassify.h\n ** Character classifications used by Document and RESearch.\n **/\n// Copyright 2006-2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CHARCLASSIFY_H\n#define CHARCLASSIFY_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass CharClassify {\npublic:\n\tCharClassify();\n\n\tenum cc { ccSpace, ccNewLine, ccWord, ccPunctuation };\n\tvoid SetDefaultCharClasses(bool includeWordClass);\n\tvoid SetCharClasses(const unsigned char *chars, cc newCharClass);\n\tint GetCharsOfClass(cc charClass, unsigned char *buffer) const;\n\tcc GetClass(unsigned char ch) const { return static_cast<cc>(charClass[ch]);}\n\tbool IsWord(unsigned char ch) const { return static_cast<cc>(charClass[ch]) == ccWord;}\n\nprivate:\n\tenum { maxChar=256 };\n\tunsigned char charClass[maxChar];    // not type cc to save space\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/ContractionState.cpp",
    "content": "// Scintilla source code edit control\n/** @file ContractionState.cxx\n ** Manages visibility of lines for folding and wrapping.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <string.h>\n#include <assert.h>\n\n#include <stdexcept>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"SparseVector.h\"\n#include \"ContractionState.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nContractionState::ContractionState() : visible(0), expanded(0), heights(0), foldDisplayTexts(0), displayLines(0), linesInDocument(1) {\n\t//InsertLine(0);\n}\n\nContractionState::~ContractionState() {\n\tClear();\n}\n\nvoid ContractionState::EnsureData() {\n\tif (OneToOne()) {\n\t\tvisible = new RunStyles();\n\t\texpanded = new RunStyles();\n\t\theights = new RunStyles();\n\t\tfoldDisplayTexts = new SparseVector<const char *>();\n\t\tdisplayLines = new Partitioning(4);\n\t\tInsertLines(0, linesInDocument);\n\t}\n}\n\nvoid ContractionState::Clear() {\n\tdelete visible;\n\tvisible = 0;\n\tdelete expanded;\n\texpanded = 0;\n\tdelete heights;\n\theights = 0;\n\tdelete foldDisplayTexts;\n\tfoldDisplayTexts = 0;\n\tdelete displayLines;\n\tdisplayLines = 0;\n\tlinesInDocument = 1;\n}\n\nint ContractionState::LinesInDoc() const {\n\tif (OneToOne()) {\n\t\treturn linesInDocument;\n\t} else {\n\t\treturn displayLines->Partitions() - 1;\n\t}\n}\n\nint ContractionState::LinesDisplayed() const {\n\tif (OneToOne()) {\n\t\treturn linesInDocument;\n\t} else {\n\t\treturn displayLines->PositionFromPartition(LinesInDoc());\n\t}\n}\n\nint ContractionState::DisplayFromDoc(int lineDoc) const {\n\tif (OneToOne()) {\n\t\treturn (lineDoc <= linesInDocument) ? lineDoc : linesInDocument;\n\t} else {\n\t\tif (lineDoc > displayLines->Partitions())\n\t\t\tlineDoc = displayLines->Partitions();\n\t\treturn displayLines->PositionFromPartition(lineDoc);\n\t}\n}\n\nint ContractionState::DisplayLastFromDoc(int lineDoc) const {\n\treturn DisplayFromDoc(lineDoc) + GetHeight(lineDoc) - 1;\n}\n\nint ContractionState::DocFromDisplay(int lineDisplay) const {\n\tif (OneToOne()) {\n\t\treturn lineDisplay;\n\t} else {\n\t\tif (lineDisplay <= 0) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (lineDisplay > LinesDisplayed()) {\n\t\t\treturn displayLines->PartitionFromPosition(LinesDisplayed());\n\t\t}\n\t\tint lineDoc = displayLines->PartitionFromPosition(lineDisplay);\n\t\tPLATFORM_ASSERT(GetVisible(lineDoc));\n\t\treturn lineDoc;\n\t}\n}\n\nvoid ContractionState::InsertLine(int lineDoc) {\n\tif (OneToOne()) {\n\t\tlinesInDocument++;\n\t} else {\n\t\tvisible->InsertSpace(lineDoc, 1);\n\t\tvisible->SetValueAt(lineDoc, 1);\n\t\texpanded->InsertSpace(lineDoc, 1);\n\t\texpanded->SetValueAt(lineDoc, 1);\n\t\theights->InsertSpace(lineDoc, 1);\n\t\theights->SetValueAt(lineDoc, 1);\n\t\tfoldDisplayTexts->InsertSpace(lineDoc, 1);\n\t\tfoldDisplayTexts->SetValueAt(lineDoc, NULL);\n\t\tint lineDisplay = DisplayFromDoc(lineDoc);\n\t\tdisplayLines->InsertPartition(lineDoc, lineDisplay);\n\t\tdisplayLines->InsertText(lineDoc, 1);\n\t}\n}\n\nvoid ContractionState::InsertLines(int lineDoc, int lineCount) {\n\tfor (int l = 0; l < lineCount; l++) {\n\t\tInsertLine(lineDoc + l);\n\t}\n\tCheck();\n}\n\nvoid ContractionState::DeleteLine(int lineDoc) {\n\tif (OneToOne()) {\n\t\tlinesInDocument--;\n\t} else {\n\t\tif (GetVisible(lineDoc)) {\n\t\t\tdisplayLines->InsertText(lineDoc, -heights->ValueAt(lineDoc));\n\t\t}\n\t\tdisplayLines->RemovePartition(lineDoc);\n\t\tvisible->DeleteRange(lineDoc, 1);\n\t\texpanded->DeleteRange(lineDoc, 1);\n\t\theights->DeleteRange(lineDoc, 1);\n\t\tfoldDisplayTexts->DeletePosition(lineDoc);\n\t}\n}\n\nvoid ContractionState::DeleteLines(int lineDoc, int lineCount) {\n\tfor (int l = 0; l < lineCount; l++) {\n\t\tDeleteLine(lineDoc);\n\t}\n\tCheck();\n}\n\nbool ContractionState::GetVisible(int lineDoc) const {\n\tif (OneToOne()) {\n\t\treturn true;\n\t} else {\n\t\tif (lineDoc >= visible->Length())\n\t\t\treturn true;\n\t\treturn visible->ValueAt(lineDoc) == 1;\n\t}\n}\n\nbool ContractionState::SetVisible(int lineDocStart, int lineDocEnd, bool isVisible) {\n\tif (OneToOne() && isVisible) {\n\t\treturn false;\n\t} else {\n\t\tEnsureData();\n\t\tint delta = 0;\n\t\tCheck();\n\t\tif ((lineDocStart <= lineDocEnd) && (lineDocStart >= 0) && (lineDocEnd < LinesInDoc())) {\n\t\t\tfor (int line = lineDocStart; line <= lineDocEnd; line++) {\n\t\t\t\tif (GetVisible(line) != isVisible) {\n\t\t\t\t\tint difference = isVisible ? heights->ValueAt(line) : -heights->ValueAt(line);\n\t\t\t\t\tvisible->SetValueAt(line, isVisible ? 1 : 0);\n\t\t\t\t\tdisplayLines->InsertText(line, difference);\n\t\t\t\t\tdelta += difference;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t\tCheck();\n\t\treturn delta != 0;\n\t}\n}\n\nbool ContractionState::HiddenLines() const {\n\tif (OneToOne()) {\n\t\treturn false;\n\t} else {\n\t\treturn !visible->AllSameAs(1);\n\t}\n}\n\nconst char *ContractionState::GetFoldDisplayText(int lineDoc) const {\n\tCheck();\n\treturn foldDisplayTexts->ValueAt(lineDoc);\n}\n\nbool ContractionState::SetFoldDisplayText(int lineDoc, const char *text) {\n\tEnsureData();\n\tconst char *foldText = foldDisplayTexts->ValueAt(lineDoc);\n\tif (!foldText || 0 != strcmp(text, foldText)) {\n\t\tfoldDisplayTexts->SetValueAt(lineDoc, text);\n\t\tCheck();\n\t\treturn true;\n\t} else {\n\t\tCheck();\n\t\treturn false;\n\t}\n}\n\nbool ContractionState::GetExpanded(int lineDoc) const {\n\tif (OneToOne()) {\n\t\treturn true;\n\t} else {\n\t\tCheck();\n\t\treturn expanded->ValueAt(lineDoc) == 1;\n\t}\n}\n\nbool ContractionState::SetExpanded(int lineDoc, bool isExpanded) {\n\tif (OneToOne() && isExpanded) {\n\t\treturn false;\n\t} else {\n\t\tEnsureData();\n\t\tif (isExpanded != (expanded->ValueAt(lineDoc) == 1)) {\n\t\t\texpanded->SetValueAt(lineDoc, isExpanded ? 1 : 0);\n\t\t\tCheck();\n\t\t\treturn true;\n\t\t} else {\n\t\t\tCheck();\n\t\t\treturn false;\n\t\t}\n\t}\n}\n\nbool ContractionState::GetFoldDisplayTextShown(int lineDoc) const {\n\treturn !GetExpanded(lineDoc) && GetFoldDisplayText(lineDoc);\n}\n\nint ContractionState::ContractedNext(int lineDocStart) const {\n\tif (OneToOne()) {\n\t\treturn -1;\n\t} else {\n\t\tCheck();\n\t\tif (!expanded->ValueAt(lineDocStart)) {\n\t\t\treturn lineDocStart;\n\t\t} else {\n\t\t\tint lineDocNextChange = expanded->EndRun(lineDocStart);\n\t\t\tif (lineDocNextChange < LinesInDoc())\n\t\t\t\treturn lineDocNextChange;\n\t\t\telse\n\t\t\t\treturn -1;\n\t\t}\n\t}\n}\n\nint ContractionState::GetHeight(int lineDoc) const {\n\tif (OneToOne()) {\n\t\treturn 1;\n\t} else {\n\t\treturn heights->ValueAt(lineDoc);\n\t}\n}\n\n// Set the number of display lines needed for this line.\n// Return true if this is a change.\nbool ContractionState::SetHeight(int lineDoc, int height) {\n\tif (OneToOne() && (height == 1)) {\n\t\treturn false;\n\t} else if (lineDoc < LinesInDoc()) {\n\t\tEnsureData();\n\t\tif (GetHeight(lineDoc) != height) {\n\t\t\tif (GetVisible(lineDoc)) {\n\t\t\t\tdisplayLines->InsertText(lineDoc, height - GetHeight(lineDoc));\n\t\t\t}\n\t\t\theights->SetValueAt(lineDoc, height);\n\t\t\tCheck();\n\t\t\treturn true;\n\t\t} else {\n\t\t\tCheck();\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n}\n\nvoid ContractionState::ShowAll() {\n\tint lines = LinesInDoc();\n\tClear();\n\tlinesInDocument = lines;\n}\n\n// Debugging checks\n\nvoid ContractionState::Check() const {\n#ifdef CHECK_CORRECTNESS\n\tfor (int vline = 0; vline < LinesDisplayed(); vline++) {\n\t\tconst int lineDoc = DocFromDisplay(vline);\n\t\tPLATFORM_ASSERT(GetVisible(lineDoc));\n\t}\n\tfor (int lineDoc = 0; lineDoc < LinesInDoc(); lineDoc++) {\n\t\tconst int displayThis = DisplayFromDoc(lineDoc);\n\t\tconst int displayNext = DisplayFromDoc(lineDoc + 1);\n\t\tconst int height = displayNext - displayThis;\n\t\tPLATFORM_ASSERT(height >= 0);\n\t\tif (GetVisible(lineDoc)) {\n\t\t\tPLATFORM_ASSERT(GetHeight(lineDoc) == height);\n\t\t} else {\n\t\t\tPLATFORM_ASSERT(0 == height);\n\t\t}\n\t}\n#endif\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/ContractionState.h",
    "content": "// Scintilla source code edit control\n/** @file ContractionState.h\n ** Manages visibility of lines for folding and wrapping.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef CONTRACTIONSTATE_H\n#define CONTRACTIONSTATE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\ntemplate<class T>\nclass SparseVector;\n\n/**\n */\nclass ContractionState {\n\t// These contain 1 element for every document line.\n\tRunStyles *visible;\n\tRunStyles *expanded;\n\tRunStyles *heights;\n\tSparseVector<const char *> *foldDisplayTexts;\n\tPartitioning *displayLines;\n\tint linesInDocument;\n\n\tvoid EnsureData();\n\n\tbool OneToOne() const {\n\t\t// True when each document line is exactly one display line so need for\n\t\t// complex data structures.\n\t\treturn visible == 0;\n\t}\n\npublic:\n\tContractionState();\n\tvirtual ~ContractionState();\n\n\tvoid Clear();\n\n\tint LinesInDoc() const;\n\tint LinesDisplayed() const;\n\tint DisplayFromDoc(int lineDoc) const;\n\tint DisplayLastFromDoc(int lineDoc) const;\n\tint DocFromDisplay(int lineDisplay) const;\n\n\tvoid InsertLine(int lineDoc);\n\tvoid InsertLines(int lineDoc, int lineCount);\n\tvoid DeleteLine(int lineDoc);\n\tvoid DeleteLines(int lineDoc, int lineCount);\n\n\tbool GetVisible(int lineDoc) const;\n\tbool SetVisible(int lineDocStart, int lineDocEnd, bool isVisible);\n\tbool HiddenLines() const;\n\n\tconst char *GetFoldDisplayText(int lineDoc) const;\n\tbool SetFoldDisplayText(int lineDoc, const char *text);\n\n\tbool GetExpanded(int lineDoc) const;\n\tbool SetExpanded(int lineDoc, bool isExpanded);\n\tbool GetFoldDisplayTextShown(int lineDoc) const;\n\tint ContractedNext(int lineDocStart) const;\n\n\tint GetHeight(int lineDoc) const;\n\tbool SetHeight(int lineDoc, int height);\n\n\tvoid ShowAll();\n\tvoid Check() const;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Decoration.cpp",
    "content": "/** @file Decoration.cxx\n ** Visual elements added over text.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n\n#include <stdexcept>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"Decoration.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nDecoration::Decoration(int indicator_) : next(0), indicator(indicator_) {\n}\n\nDecoration::~Decoration() {\n}\n\nbool Decoration::Empty() const {\n\treturn (rs.Runs() == 1) && (rs.AllSameAs(0));\n}\n\nDecorationList::DecorationList() : currentIndicator(0), currentValue(1), current(0),\n\tlengthDocument(0), root(0), clickNotified(false) {\n}\n\nDecorationList::~DecorationList() {\n\tDecoration *deco = root;\n\twhile (deco) {\n\t\tDecoration *decoNext = deco->next;\n\t\tdelete deco;\n\t\tdeco = decoNext;\n\t}\n\troot = 0;\n\tcurrent = 0;\n}\n\nDecoration *DecorationList::DecorationFromIndicator(int indicator) {\n\tfor (Decoration *deco=root; deco; deco = deco->next) {\n\t\tif (deco->indicator == indicator) {\n\t\t\treturn deco;\n\t\t}\n\t}\n\treturn 0;\n}\n\nDecoration *DecorationList::Create(int indicator, int length) {\n\tcurrentIndicator = indicator;\n\tDecoration *decoNew = new Decoration(indicator);\n\tdecoNew->rs.InsertSpace(0, length);\n\n\tDecoration *decoPrev = 0;\n\tDecoration *deco = root;\n\n\twhile (deco && (deco->indicator < indicator)) {\n\t\tdecoPrev = deco;\n\t\tdeco = deco->next;\n\t}\n\tif (decoPrev == 0) {\n\t\tdecoNew->next = root;\n\t\troot = decoNew;\n\t} else {\n\t\tdecoNew->next = deco;\n\t\tdecoPrev->next = decoNew;\n\t}\n\treturn decoNew;\n}\n\nvoid DecorationList::Delete(int indicator) {\n\tDecoration *decoToDelete = 0;\n\tif (root) {\n\t\tif (root->indicator == indicator) {\n\t\t\tdecoToDelete = root;\n\t\t\troot = root->next;\n\t\t} else {\n\t\t\tDecoration *deco=root;\n\t\t\twhile (deco->next && !decoToDelete) {\n\t\t\t\tif (deco->next && deco->next->indicator == indicator) {\n\t\t\t\t\tdecoToDelete = deco->next;\n\t\t\t\t\tdeco->next = decoToDelete->next;\n\t\t\t\t} else {\n\t\t\t\t\tdeco = deco->next;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (decoToDelete) {\n\t\tdelete decoToDelete;\n\t\tcurrent = 0;\n\t}\n}\n\nvoid DecorationList::SetCurrentIndicator(int indicator) {\n\tcurrentIndicator = indicator;\n\tcurrent = DecorationFromIndicator(indicator);\n\tcurrentValue = 1;\n}\n\nvoid DecorationList::SetCurrentValue(int value) {\n\tcurrentValue = value ? value : 1;\n}\n\nbool DecorationList::FillRange(int &position, int value, int &fillLength) {\n\tif (!current) {\n\t\tcurrent = DecorationFromIndicator(currentIndicator);\n\t\tif (!current) {\n\t\t\tcurrent = Create(currentIndicator, lengthDocument);\n\t\t}\n\t}\n\tbool changed = current->rs.FillRange(position, value, fillLength);\n\tif (current->Empty()) {\n\t\tDelete(currentIndicator);\n\t}\n\treturn changed;\n}\n\nvoid DecorationList::InsertSpace(int position, int insertLength) {\n\tconst bool atEnd = position == lengthDocument;\n\tlengthDocument += insertLength;\n\tfor (Decoration *deco=root; deco; deco = deco->next) {\n\t\tdeco->rs.InsertSpace(position, insertLength);\n\t\tif (atEnd) {\n\t\t\tdeco->rs.FillRange(position, 0, insertLength);\n\t\t}\n\t}\n}\n\nvoid DecorationList::DeleteRange(int position, int deleteLength) {\n\tlengthDocument -= deleteLength;\n\tDecoration *deco;\n\tfor (deco=root; deco; deco = deco->next) {\n\t\tdeco->rs.DeleteRange(position, deleteLength);\n\t}\n\tDeleteAnyEmpty();\n}\n\nvoid DecorationList::DeleteAnyEmpty() {\n\tDecoration *deco = root;\n\twhile (deco) {\n\t\tif ((lengthDocument == 0) || deco->Empty()) {\n\t\t\tDelete(deco->indicator);\n\t\t\tdeco = root;\n\t\t} else {\n\t\t\tdeco = deco->next;\n\t\t}\n\t}\n}\n\nint DecorationList::AllOnFor(int position) const {\n\tint mask = 0;\n\tfor (Decoration *deco=root; deco; deco = deco->next) {\n\t\tif (deco->rs.ValueAt(position)) {\n\t\t\tif (deco->indicator < INDIC_IME) {\n\t\t\t\tmask |= 1 << deco->indicator;\n\t\t\t}\n\t\t}\n\t}\n\treturn mask;\n}\n\nint DecorationList::ValueAt(int indicator, int position) {\n\tDecoration *deco = DecorationFromIndicator(indicator);\n\tif (deco) {\n\t\treturn deco->rs.ValueAt(position);\n\t}\n\treturn 0;\n}\n\nint DecorationList::Start(int indicator, int position) {\n\tDecoration *deco = DecorationFromIndicator(indicator);\n\tif (deco) {\n\t\treturn deco->rs.StartRun(position);\n\t}\n\treturn 0;\n}\n\nint DecorationList::End(int indicator, int position) {\n\tDecoration *deco = DecorationFromIndicator(indicator);\n\tif (deco) {\n\t\treturn deco->rs.EndRun(position);\n\t}\n\treturn 0;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Decoration.h",
    "content": "/** @file Decoration.h\n ** Visual elements added over text.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef DECORATION_H\n#define DECORATION_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass Decoration {\npublic:\n\tDecoration *next;\n\tRunStyles rs;\n\tint indicator;\n\n\texplicit Decoration(int indicator_);\n\t~Decoration();\n\n\tbool Empty() const;\n};\n\nclass DecorationList {\n\tint currentIndicator;\n\tint currentValue;\n\tDecoration *current;\n\tint lengthDocument;\n\tDecoration *DecorationFromIndicator(int indicator);\n\tDecoration *Create(int indicator, int length);\n\tvoid Delete(int indicator);\n\tvoid DeleteAnyEmpty();\npublic:\n\tDecoration *root;\n\tbool clickNotified;\n\n\tDecorationList();\n\t~DecorationList();\n\n\tvoid SetCurrentIndicator(int indicator);\n\tint GetCurrentIndicator() const { return currentIndicator; }\n\n\tvoid SetCurrentValue(int value);\n\tint GetCurrentValue() const { return currentValue; }\n\n\t// Returns true if some values may have changed\n\tbool FillRange(int &position, int value, int &fillLength);\n\n\tvoid InsertSpace(int position, int insertLength);\n\tvoid DeleteRange(int position, int deleteLength);\n\n\tint AllOnFor(int position) const;\n\tint ValueAt(int indicator, int position);\n\tint Start(int indicator, int position);\n\tint End(int indicator, int position);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Document.cpp",
    "content": "// Scintilla source code edit control\n/** @file Document.cxx\n ** Text document that handles notifications, DBCS, styling, words and end of line.\n **/\n// Copyright 1998-2011 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <algorithm>\n\n#define NOEXCEPT\n\n#ifndef NO_CXX11_REGEX\n#include <regex>\n#if defined(__GLIBCXX__)\n// If using the GNU implementation of <regex> then have 'noexcept' so can use\n// when defining regex iterators to keep Clang analyze happy.\n#undef NOEXCEPT\n#define NOEXCEPT noexcept\n#endif\n#endif\n\n#include \"Platform.h\"\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n\n#include \"CharacterSet.h\"\n#include \"CharacterCategory.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"CellBuffer.h\"\n#include \"PerLine.h\"\n#include \"CharClassify.h\"\n#include \"Decoration.h\"\n#include \"CaseFolder.h\"\n#include \"Document.h\"\n#include \"RESearch.h\"\n#include \"UniConversion.h\"\n#include \"UnicodeFromUTF8.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nvoid LexInterface::Colourise(int start, int end) {\n\tif (pdoc && instance && !performingStyle) {\n\t\t// Protect against reentrance, which may occur, for example, when\n\t\t// fold points are discovered while performing styling and the folding\n\t\t// code looks for child lines which may trigger styling.\n\t\tperformingStyle = true;\n\n\t\tint lengthDoc = pdoc->Length();\n\t\tif (end == -1)\n\t\t\tend = lengthDoc;\n\t\tint len = end - start;\n\n\t\tPLATFORM_ASSERT(len >= 0);\n\t\tPLATFORM_ASSERT(start + len <= lengthDoc);\n\n\t\tint styleStart = 0;\n\t\tif (start > 0)\n\t\t\tstyleStart = pdoc->StyleAt(start - 1);\n\n\t\tif (len > 0) {\n\t\t\tinstance->Lex(start, len, styleStart, pdoc);\n\t\t\tinstance->Fold(start, len, styleStart, pdoc);\n\t\t}\n\n\t\tperformingStyle = false;\n\t}\n}\n\nint LexInterface::LineEndTypesSupported() {\n\tif (instance) {\n\t\tint interfaceVersion = instance->Version();\n\t\tif (interfaceVersion >= lvSubStyles) {\n\t\t\tILexerWithSubStyles *ssinstance = static_cast<ILexerWithSubStyles *>(instance);\n\t\t\treturn ssinstance->LineEndTypesSupported();\n\t\t}\n\t}\n\treturn 0;\n}\n\nDocument::Document() {\n\trefCount = 0;\n\tpcf = NULL;\n#ifdef _WIN32\n\teolMode = SC_EOL_CRLF;\n#else\n\teolMode = SC_EOL_LF;\n#endif\n\tdbcsCodePage = 0;\n\tlineEndBitSet = SC_LINE_END_TYPE_DEFAULT;\n\tendStyled = 0;\n\tstyleClock = 0;\n\tenteredModification = 0;\n\tenteredStyling = 0;\n\tenteredReadOnlyCount = 0;\n\tinsertionSet = false;\n\ttabInChars = 8;\n\tindentInChars = 0;\n\tactualIndentInChars = 8;\n\tuseTabs = true;\n\ttabIndents = true;\n\tbackspaceUnindents = false;\n\tdurationStyleOneLine = 0.00001;\n\n\tmatchesValid = false;\n\tregex = 0;\n\n\tUTF8BytesOfLeadInitialise();\n\n\tperLineData[ldMarkers] = new LineMarkers();\n\tperLineData[ldLevels] = new LineLevels();\n\tperLineData[ldState] = new LineState();\n\tperLineData[ldMargin] = new LineAnnotation();\n\tperLineData[ldAnnotation] = new LineAnnotation();\n\n\tcb.SetPerLine(this);\n\n\tpli = 0;\n}\n\nDocument::~Document() {\n\tfor (std::vector<WatcherWithUserData>::iterator it = watchers.begin(); it != watchers.end(); ++it) {\n\t\tit->watcher->NotifyDeleted(this, it->userData);\n\t}\n\tfor (int j=0; j<ldSize; j++) {\n\t\tdelete perLineData[j];\n\t\tperLineData[j] = 0;\n\t}\n\tdelete regex;\n\tregex = 0;\n\tdelete pli;\n\tpli = 0;\n\tdelete pcf;\n\tpcf = 0;\n}\n\nvoid Document::Init() {\n\tfor (int j=0; j<ldSize; j++) {\n\t\tif (perLineData[j])\n\t\t\tperLineData[j]->Init();\n\t}\n}\n\nint Document::LineEndTypesSupported() const {\n\tif ((SC_CP_UTF8 == dbcsCodePage) && pli)\n\t\treturn pli->LineEndTypesSupported();\n\telse\n\t\treturn 0;\n}\n\nbool Document::SetDBCSCodePage(int dbcsCodePage_) {\n\tif (dbcsCodePage != dbcsCodePage_) {\n\t\tdbcsCodePage = dbcsCodePage_;\n\t\tSetCaseFolder(NULL);\n\t\tcb.SetLineEndTypes(lineEndBitSet & LineEndTypesSupported());\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nbool Document::SetLineEndTypesAllowed(int lineEndBitSet_) {\n\tif (lineEndBitSet != lineEndBitSet_) {\n\t\tlineEndBitSet = lineEndBitSet_;\n\t\tint lineEndBitSetActive = lineEndBitSet & LineEndTypesSupported();\n\t\tif (lineEndBitSetActive != cb.GetLineEndTypes()) {\n\t\t\tModifiedAt(0);\n\t\t\tcb.SetLineEndTypes(lineEndBitSetActive);\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t} else {\n\t\treturn false;\n\t}\n}\n\nvoid Document::InsertLine(int line) {\n\tfor (int j=0; j<ldSize; j++) {\n\t\tif (perLineData[j])\n\t\t\tperLineData[j]->InsertLine(line);\n\t}\n}\n\nvoid Document::RemoveLine(int line) {\n\tfor (int j=0; j<ldSize; j++) {\n\t\tif (perLineData[j])\n\t\t\tperLineData[j]->RemoveLine(line);\n\t}\n}\n\n// Increase reference count and return its previous value.\nint Document::AddRef() {\n\treturn refCount++;\n}\n\n// Decrease reference count and return its previous value.\n// Delete the document if reference count reaches zero.\nint SCI_METHOD Document::Release() {\n\tint curRefCount = --refCount;\n\tif (curRefCount == 0)\n\t\tdelete this;\n\treturn curRefCount;\n}\n\nvoid Document::SetSavePoint() {\n\tcb.SetSavePoint();\n\tNotifySavePoint(true);\n}\n\nvoid Document::TentativeUndo() {\n\tif (!TentativeActive())\n\t\treturn;\n\tCheckReadOnly();\n\tif (enteredModification == 0) {\n\t\tenteredModification++;\n\t\tif (!cb.IsReadOnly()) {\n\t\t\tbool startSavePoint = cb.IsSavePoint();\n\t\t\tbool multiLine = false;\n\t\t\tint steps = cb.TentativeSteps();\n\t\t\t//Platform::DebugPrintf(\"Steps=%d\\n\", steps);\n\t\t\tfor (int step = 0; step < steps; step++) {\n\t\t\t\tconst int prevLinesTotal = LinesTotal();\n\t\t\t\tconst Action &action = cb.GetUndoStep();\n\t\t\t\tif (action.at == removeAction) {\n\t\t\t\t\tNotifyModified(DocModification(\n\t\t\t\t\t\t\t\t\tSC_MOD_BEFOREINSERT | SC_PERFORMED_UNDO, action));\n\t\t\t\t} else if (action.at == containerAction) {\n\t\t\t\t\tDocModification dm(SC_MOD_CONTAINER | SC_PERFORMED_UNDO);\n\t\t\t\t\tdm.token = action.position;\n\t\t\t\t\tNotifyModified(dm);\n\t\t\t\t} else {\n\t\t\t\t\tNotifyModified(DocModification(\n\t\t\t\t\t\t\t\t\tSC_MOD_BEFOREDELETE | SC_PERFORMED_UNDO, action));\n\t\t\t\t}\n\t\t\t\tcb.PerformUndoStep();\n\t\t\t\tif (action.at != containerAction) {\n\t\t\t\t\tModifiedAt(action.position);\n\t\t\t\t}\n\n\t\t\t\tint modFlags = SC_PERFORMED_UNDO;\n\t\t\t\t// With undo, an insertion action becomes a deletion notification\n\t\t\t\tif (action.at == removeAction) {\n\t\t\t\t\tmodFlags |= SC_MOD_INSERTTEXT;\n\t\t\t\t} else if (action.at == insertAction) {\n\t\t\t\t\tmodFlags |= SC_MOD_DELETETEXT;\n\t\t\t\t}\n\t\t\t\tif (steps > 1)\n\t\t\t\t\tmodFlags |= SC_MULTISTEPUNDOREDO;\n\t\t\t\tconst int linesAdded = LinesTotal() - prevLinesTotal;\n\t\t\t\tif (linesAdded != 0)\n\t\t\t\t\tmultiLine = true;\n\t\t\t\tif (step == steps - 1) {\n\t\t\t\t\tmodFlags |= SC_LASTSTEPINUNDOREDO;\n\t\t\t\t\tif (multiLine)\n\t\t\t\t\t\tmodFlags |= SC_MULTILINEUNDOREDO;\n\t\t\t\t}\n\t\t\t\tNotifyModified(DocModification(modFlags, action.position, action.lenData,\n\t\t\t\t\t\t\t\t\t\t\t   linesAdded, action.data));\n\t\t\t}\n\n\t\t\tbool endSavePoint = cb.IsSavePoint();\n\t\t\tif (startSavePoint != endSavePoint)\n\t\t\t\tNotifySavePoint(endSavePoint);\n\n\t\t\tcb.TentativeCommit();\n\t\t}\n\t\tenteredModification--;\n\t}\n}\n\nint Document::GetMark(int line) {\n\treturn static_cast<LineMarkers *>(perLineData[ldMarkers])->MarkValue(line);\n}\n\nint Document::MarkerNext(int lineStart, int mask) const {\n\treturn static_cast<LineMarkers *>(perLineData[ldMarkers])->MarkerNext(lineStart, mask);\n}\n\nint Document::AddMark(int line, int markerNum) {\n\tif (line >= 0 && line <= LinesTotal()) {\n\t\tint prev = static_cast<LineMarkers *>(perLineData[ldMarkers])->\n\t\t\tAddMark(line, markerNum, LinesTotal());\n\t\tDocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);\n\t\tNotifyModified(mh);\n\t\treturn prev;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nvoid Document::AddMarkSet(int line, int valueSet) {\n\tif (line < 0 || line > LinesTotal()) {\n\t\treturn;\n\t}\n\tunsigned int m = valueSet;\n\tfor (int i = 0; m; i++, m >>= 1)\n\t\tif (m & 1)\n\t\t\tstatic_cast<LineMarkers *>(perLineData[ldMarkers])->\n\t\t\t\tAddMark(line, i, LinesTotal());\n\tDocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);\n\tNotifyModified(mh);\n}\n\nvoid Document::DeleteMark(int line, int markerNum) {\n\tstatic_cast<LineMarkers *>(perLineData[ldMarkers])->DeleteMark(line, markerNum, false);\n\tDocModification mh(SC_MOD_CHANGEMARKER, LineStart(line), 0, 0, 0, line);\n\tNotifyModified(mh);\n}\n\nvoid Document::DeleteMarkFromHandle(int markerHandle) {\n\tstatic_cast<LineMarkers *>(perLineData[ldMarkers])->DeleteMarkFromHandle(markerHandle);\n\tDocModification mh(SC_MOD_CHANGEMARKER, 0, 0, 0, 0);\n\tmh.line = -1;\n\tNotifyModified(mh);\n}\n\nvoid Document::DeleteAllMarks(int markerNum) {\n\tbool someChanges = false;\n\tfor (int line = 0; line < LinesTotal(); line++) {\n\t\tif (static_cast<LineMarkers *>(perLineData[ldMarkers])->DeleteMark(line, markerNum, true))\n\t\t\tsomeChanges = true;\n\t}\n\tif (someChanges) {\n\t\tDocModification mh(SC_MOD_CHANGEMARKER, 0, 0, 0, 0);\n\t\tmh.line = -1;\n\t\tNotifyModified(mh);\n\t}\n}\n\nint Document::LineFromHandle(int markerHandle) {\n\treturn static_cast<LineMarkers *>(perLineData[ldMarkers])->LineFromHandle(markerHandle);\n}\n\nSci_Position SCI_METHOD Document::LineStart(Sci_Position line) const {\n\treturn cb.LineStart(line);\n}\n\nbool Document::IsLineStartPosition(int position) const {\n\treturn LineStart(LineFromPosition(position)) == position;\n}\n\nSci_Position SCI_METHOD Document::LineEnd(Sci_Position line) const {\n\tif (line >= LinesTotal() - 1) {\n\t\treturn LineStart(line + 1);\n\t} else {\n\t\tint position = LineStart(line + 1);\n\t\tif (SC_CP_UTF8 == dbcsCodePage) {\n\t\t\tunsigned char bytes[] = {\n\t\t\t\tstatic_cast<unsigned char>(cb.CharAt(position-3)),\n\t\t\t\tstatic_cast<unsigned char>(cb.CharAt(position-2)),\n\t\t\t\tstatic_cast<unsigned char>(cb.CharAt(position-1)),\n\t\t\t};\n\t\t\tif (UTF8IsSeparator(bytes)) {\n\t\t\t\treturn position - UTF8SeparatorLength;\n\t\t\t}\n\t\t\tif (UTF8IsNEL(bytes+1)) {\n\t\t\t\treturn position - UTF8NELLength;\n\t\t\t}\n\t\t}\n\t\tposition--; // Back over CR or LF\n\t\t// When line terminator is CR+LF, may need to go back one more\n\t\tif ((position > LineStart(line)) && (cb.CharAt(position - 1) == '\\r')) {\n\t\t\tposition--;\n\t\t}\n\t\treturn position;\n\t}\n}\n\nvoid SCI_METHOD Document::SetErrorStatus(int status) {\n\t// Tell the watchers an error has occurred.\n\tfor (std::vector<WatcherWithUserData>::iterator it = watchers.begin(); it != watchers.end(); ++it) {\n\t\tit->watcher->NotifyErrorOccurred(this, it->userData, status);\n\t}\n}\n\nSci_Position SCI_METHOD Document::LineFromPosition(Sci_Position pos) const {\n\treturn cb.LineFromPosition(pos);\n}\n\nint Document::LineEndPosition(int position) const {\n\treturn LineEnd(LineFromPosition(position));\n}\n\nbool Document::IsLineEndPosition(int position) const {\n\treturn LineEnd(LineFromPosition(position)) == position;\n}\n\nbool Document::IsPositionInLineEnd(int position) const {\n\treturn position >= LineEnd(LineFromPosition(position));\n}\n\nint Document::VCHomePosition(int position) const {\n\tint line = LineFromPosition(position);\n\tint startPosition = LineStart(line);\n\tint endLine = LineEnd(line);\n\tint startText = startPosition;\n\twhile (startText < endLine && (cb.CharAt(startText) == ' ' || cb.CharAt(startText) == '\\t'))\n\t\tstartText++;\n\tif (position == startText)\n\t\treturn startPosition;\n\telse\n\t\treturn startText;\n}\n\nint SCI_METHOD Document::SetLevel(Sci_Position line, int level) {\n\tint prev = static_cast<LineLevels *>(perLineData[ldLevels])->SetLevel(line, level, LinesTotal());\n\tif (prev != level) {\n\t\tDocModification mh(SC_MOD_CHANGEFOLD | SC_MOD_CHANGEMARKER,\n\t\t                   LineStart(line), 0, 0, 0, line);\n\t\tmh.foldLevelNow = level;\n\t\tmh.foldLevelPrev = prev;\n\t\tNotifyModified(mh);\n\t}\n\treturn prev;\n}\n\nint SCI_METHOD Document::GetLevel(Sci_Position line) const {\n\treturn static_cast<LineLevels *>(perLineData[ldLevels])->GetLevel(line);\n}\n\nvoid Document::ClearLevels() {\n\tstatic_cast<LineLevels *>(perLineData[ldLevels])->ClearLevels();\n}\n\nstatic bool IsSubordinate(int levelStart, int levelTry) {\n\tif (levelTry & SC_FOLDLEVELWHITEFLAG)\n\t\treturn true;\n\telse\n\t\treturn LevelNumber(levelStart) < LevelNumber(levelTry);\n}\n\nint Document::GetLastChild(int lineParent, int level, int lastLine) {\n\tif (level == -1)\n\t\tlevel = LevelNumber(GetLevel(lineParent));\n\tint maxLine = LinesTotal();\n\tint lookLastLine = (lastLine != -1) ? Platform::Minimum(LinesTotal() - 1, lastLine) : -1;\n\tint lineMaxSubord = lineParent;\n\twhile (lineMaxSubord < maxLine - 1) {\n\t\tEnsureStyledTo(LineStart(lineMaxSubord + 2));\n\t\tif (!IsSubordinate(level, GetLevel(lineMaxSubord + 1)))\n\t\t\tbreak;\n\t\tif ((lookLastLine != -1) && (lineMaxSubord >= lookLastLine) && !(GetLevel(lineMaxSubord) & SC_FOLDLEVELWHITEFLAG))\n\t\t\tbreak;\n\t\tlineMaxSubord++;\n\t}\n\tif (lineMaxSubord > lineParent) {\n\t\tif (level > LevelNumber(GetLevel(lineMaxSubord + 1))) {\n\t\t\t// Have chewed up some whitespace that belongs to a parent so seek back\n\t\t\tif (GetLevel(lineMaxSubord) & SC_FOLDLEVELWHITEFLAG) {\n\t\t\t\tlineMaxSubord--;\n\t\t\t}\n\t\t}\n\t}\n\treturn lineMaxSubord;\n}\n\nint Document::GetFoldParent(int line) const {\n\tint level = LevelNumber(GetLevel(line));\n\tint lineLook = line - 1;\n\twhile ((lineLook > 0) && (\n\t            (!(GetLevel(lineLook) & SC_FOLDLEVELHEADERFLAG)) ||\n\t            (LevelNumber(GetLevel(lineLook)) >= level))\n\t      ) {\n\t\tlineLook--;\n\t}\n\tif ((GetLevel(lineLook) & SC_FOLDLEVELHEADERFLAG) &&\n\t        (LevelNumber(GetLevel(lineLook)) < level)) {\n\t\treturn lineLook;\n\t} else {\n\t\treturn -1;\n\t}\n}\n\nvoid Document::GetHighlightDelimiters(HighlightDelimiter &highlightDelimiter, int line, int lastLine) {\n\tint level = GetLevel(line);\n\tint lookLastLine = Platform::Maximum(line, lastLine) + 1;\n\n\tint lookLine = line;\n\tint lookLineLevel = level;\n\tint lookLineLevelNum = LevelNumber(lookLineLevel);\n\twhile ((lookLine > 0) && ((lookLineLevel & SC_FOLDLEVELWHITEFLAG) ||\n\t\t((lookLineLevel & SC_FOLDLEVELHEADERFLAG) && (lookLineLevelNum >= LevelNumber(GetLevel(lookLine + 1)))))) {\n\t\tlookLineLevel = GetLevel(--lookLine);\n\t\tlookLineLevelNum = LevelNumber(lookLineLevel);\n\t}\n\n\tint beginFoldBlock = (lookLineLevel & SC_FOLDLEVELHEADERFLAG) ? lookLine : GetFoldParent(lookLine);\n\tif (beginFoldBlock == -1) {\n\t\thighlightDelimiter.Clear();\n\t\treturn;\n\t}\n\n\tint endFoldBlock = GetLastChild(beginFoldBlock, -1, lookLastLine);\n\tint firstChangeableLineBefore = -1;\n\tif (endFoldBlock < line) {\n\t\tlookLine = beginFoldBlock - 1;\n\t\tlookLineLevel = GetLevel(lookLine);\n\t\tlookLineLevelNum = LevelNumber(lookLineLevel);\n\t\twhile ((lookLine >= 0) && (lookLineLevelNum >= SC_FOLDLEVELBASE)) {\n\t\t\tif (lookLineLevel & SC_FOLDLEVELHEADERFLAG) {\n\t\t\t\tif (GetLastChild(lookLine, -1, lookLastLine) == line) {\n\t\t\t\t\tbeginFoldBlock = lookLine;\n\t\t\t\t\tendFoldBlock = line;\n\t\t\t\t\tfirstChangeableLineBefore = line - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ((lookLine > 0) && (lookLineLevelNum == SC_FOLDLEVELBASE) && (LevelNumber(GetLevel(lookLine - 1)) > lookLineLevelNum))\n\t\t\t\tbreak;\n\t\t\tlookLineLevel = GetLevel(--lookLine);\n\t\t\tlookLineLevelNum = LevelNumber(lookLineLevel);\n\t\t}\n\t}\n\tif (firstChangeableLineBefore == -1) {\n\t\tfor (lookLine = line - 1, lookLineLevel = GetLevel(lookLine), lookLineLevelNum = LevelNumber(lookLineLevel);\n\t\t\tlookLine >= beginFoldBlock;\n\t\t\tlookLineLevel = GetLevel(--lookLine), lookLineLevelNum = LevelNumber(lookLineLevel)) {\n\t\t\tif ((lookLineLevel & SC_FOLDLEVELWHITEFLAG) || (lookLineLevelNum > LevelNumber(level))) {\n\t\t\t\tfirstChangeableLineBefore = lookLine;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (firstChangeableLineBefore == -1)\n\t\tfirstChangeableLineBefore = beginFoldBlock - 1;\n\n\tint firstChangeableLineAfter = -1;\n\tfor (lookLine = line + 1, lookLineLevel = GetLevel(lookLine), lookLineLevelNum = LevelNumber(lookLineLevel);\n\t\tlookLine <= endFoldBlock;\n\t\tlookLineLevel = GetLevel(++lookLine), lookLineLevelNum = LevelNumber(lookLineLevel)) {\n\t\tif ((lookLineLevel & SC_FOLDLEVELHEADERFLAG) && (lookLineLevelNum < LevelNumber(GetLevel(lookLine + 1)))) {\n\t\t\tfirstChangeableLineAfter = lookLine;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (firstChangeableLineAfter == -1)\n\t\tfirstChangeableLineAfter = endFoldBlock + 1;\n\n\thighlightDelimiter.beginFoldBlock = beginFoldBlock;\n\thighlightDelimiter.endFoldBlock = endFoldBlock;\n\thighlightDelimiter.firstChangeableLineBefore = firstChangeableLineBefore;\n\thighlightDelimiter.firstChangeableLineAfter = firstChangeableLineAfter;\n}\n\nint Document::ClampPositionIntoDocument(int pos) const {\n\treturn Platform::Clamp(pos, 0, Length());\n}\n\nbool Document::IsCrLf(int pos) const {\n\tif (pos < 0)\n\t\treturn false;\n\tif (pos >= (Length() - 1))\n\t\treturn false;\n\treturn (cb.CharAt(pos) == '\\r') && (cb.CharAt(pos + 1) == '\\n');\n}\n\nint Document::LenChar(int pos) {\n\tif (pos < 0) {\n\t\treturn 1;\n\t} else if (IsCrLf(pos)) {\n\t\treturn 2;\n\t} else if (SC_CP_UTF8 == dbcsCodePage) {\n\t\tconst unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(pos));\n\t\tconst int widthCharBytes = UTF8BytesOfLead[leadByte];\n\t\tint lengthDoc = Length();\n\t\tif ((pos + widthCharBytes) > lengthDoc)\n\t\t\treturn lengthDoc - pos;\n\t\telse\n\t\t\treturn widthCharBytes;\n\t} else if (dbcsCodePage) {\n\t\treturn IsDBCSLeadByte(cb.CharAt(pos)) ? 2 : 1;\n\t} else {\n\t\treturn 1;\n\t}\n}\n\nbool Document::InGoodUTF8(int pos, int &start, int &end) const {\n\tint trail = pos;\n\twhile ((trail>0) && (pos-trail < UTF8MaxBytes) && UTF8IsTrailByte(static_cast<unsigned char>(cb.CharAt(trail-1))))\n\t\ttrail--;\n\tstart = (trail > 0) ? trail-1 : trail;\n\n\tconst unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(start));\n\tconst int widthCharBytes = UTF8BytesOfLead[leadByte];\n\tif (widthCharBytes == 1) {\n\t\treturn false;\n\t} else {\n\t\tint trailBytes = widthCharBytes - 1;\n\t\tint len = pos - start;\n\t\tif (len > trailBytes)\n\t\t\t// pos too far from lead\n\t\t\treturn false;\n\t\tchar charBytes[UTF8MaxBytes] = {static_cast<char>(leadByte),0,0,0};\n\t\tfor (int b=1; b<widthCharBytes && ((start+b) < Length()); b++)\n\t\t\tcharBytes[b] = cb.CharAt(static_cast<int>(start+b));\n\t\tint utf8status = UTF8Classify(reinterpret_cast<const unsigned char *>(charBytes), widthCharBytes);\n\t\tif (utf8status & UTF8MaskInvalid)\n\t\t\treturn false;\n\t\tend = start + widthCharBytes;\n\t\treturn true;\n\t}\n}\n\n// Normalise a position so that it is not halfway through a two byte character.\n// This can occur in two situations -\n// When lines are terminated with \\r\\n pairs which should be treated as one character.\n// When displaying DBCS text such as Japanese.\n// If moving, move the position in the indicated direction.\nint Document::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) const {\n\t//Platform::DebugPrintf(\"NoCRLF %d %d\\n\", pos, moveDir);\n\t// If out of range, just return minimum/maximum value.\n\tif (pos <= 0)\n\t\treturn 0;\n\tif (pos >= Length())\n\t\treturn Length();\n\n\t// PLATFORM_ASSERT(pos > 0 && pos < Length());\n\tif (checkLineEnd && IsCrLf(pos - 1)) {\n\t\tif (moveDir > 0)\n\t\t\treturn pos + 1;\n\t\telse\n\t\t\treturn pos - 1;\n\t}\n\n\tif (dbcsCodePage) {\n\t\tif (SC_CP_UTF8 == dbcsCodePage) {\n\t\t\tunsigned char ch = static_cast<unsigned char>(cb.CharAt(pos));\n\t\t\t// If ch is not a trail byte then pos is valid intercharacter position\n\t\t\tif (UTF8IsTrailByte(ch)) {\n\t\t\t\tint startUTF = pos;\n\t\t\t\tint endUTF = pos;\n\t\t\t\tif (InGoodUTF8(pos, startUTF, endUTF)) {\n\t\t\t\t\t// ch is a trail byte within a UTF-8 character\n\t\t\t\t\tif (moveDir > 0)\n\t\t\t\t\t\tpos = endUTF;\n\t\t\t\t\telse\n\t\t\t\t\t\tpos = startUTF;\n\t\t\t\t}\n\t\t\t\t// Else invalid UTF-8 so return position of isolated trail byte\n\t\t\t}\n\t\t} else {\n\t\t\t// Anchor DBCS calculations at start of line because start of line can\n\t\t\t// not be a DBCS trail byte.\n\t\t\tint posStartLine = LineStart(LineFromPosition(pos));\n\t\t\tif (pos == posStartLine)\n\t\t\t\treturn pos;\n\n\t\t\t// Step back until a non-lead-byte is found.\n\t\t\tint posCheck = pos;\n\t\t\twhile ((posCheck > posStartLine) && IsDBCSLeadByte(cb.CharAt(posCheck-1)))\n\t\t\t\tposCheck--;\n\n\t\t\t// Check from known start of character.\n\t\t\twhile (posCheck < pos) {\n\t\t\t\tint mbsize = IsDBCSLeadByte(cb.CharAt(posCheck)) ? 2 : 1;\n\t\t\t\tif (posCheck + mbsize == pos) {\n\t\t\t\t\treturn pos;\n\t\t\t\t} else if (posCheck + mbsize > pos) {\n\t\t\t\t\tif (moveDir > 0) {\n\t\t\t\t\t\treturn posCheck + mbsize;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn posCheck;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tposCheck += mbsize;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn pos;\n}\n\n// NextPosition moves between valid positions - it can not handle a position in the middle of a\n// multi-byte character. It is used to iterate through text more efficiently than MovePositionOutsideChar.\n// A \\r\\n pair is treated as two characters.\nint Document::NextPosition(int pos, int moveDir) const {\n\t// If out of range, just return minimum/maximum value.\n\tint increment = (moveDir > 0) ? 1 : -1;\n\tif (pos + increment <= 0)\n\t\treturn 0;\n\tif (pos + increment >= Length())\n\t\treturn Length();\n\n\tif (dbcsCodePage) {\n\t\tif (SC_CP_UTF8 == dbcsCodePage) {\n\t\t\tif (increment == 1) {\n\t\t\t\t// Simple forward movement case so can avoid some checks\n\t\t\t\tconst unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(pos));\n\t\t\t\tif (UTF8IsAscii(leadByte)) {\n\t\t\t\t\t// Single byte character or invalid\n\t\t\t\t\tpos++;\n\t\t\t\t} else {\n\t\t\t\t\tconst int widthCharBytes = UTF8BytesOfLead[leadByte];\n\t\t\t\t\tchar charBytes[UTF8MaxBytes] = {static_cast<char>(leadByte),0,0,0};\n\t\t\t\t\tfor (int b=1; b<widthCharBytes; b++)\n\t\t\t\t\t\tcharBytes[b] = cb.CharAt(static_cast<int>(pos+b));\n\t\t\t\t\tint utf8status = UTF8Classify(reinterpret_cast<const unsigned char *>(charBytes), widthCharBytes);\n\t\t\t\t\tif (utf8status & UTF8MaskInvalid)\n\t\t\t\t\t\tpos++;\n\t\t\t\t\telse\n\t\t\t\t\t\tpos += utf8status & UTF8MaskWidth;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Examine byte before position\n\t\t\t\tpos--;\n\t\t\t\tunsigned char ch = static_cast<unsigned char>(cb.CharAt(pos));\n\t\t\t\t// If ch is not a trail byte then pos is valid intercharacter position\n\t\t\t\tif (UTF8IsTrailByte(ch)) {\n\t\t\t\t\t// If ch is a trail byte in a valid UTF-8 character then return start of character\n\t\t\t\t\tint startUTF = pos;\n\t\t\t\t\tint endUTF = pos;\n\t\t\t\t\tif (InGoodUTF8(pos, startUTF, endUTF)) {\n\t\t\t\t\t\tpos = startUTF;\n\t\t\t\t\t}\n\t\t\t\t\t// Else invalid UTF-8 so return position of isolated trail byte\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (moveDir > 0) {\n\t\t\t\tint mbsize = IsDBCSLeadByte(cb.CharAt(pos)) ? 2 : 1;\n\t\t\t\tpos += mbsize;\n\t\t\t\tif (pos > Length())\n\t\t\t\t\tpos = Length();\n\t\t\t} else {\n\t\t\t\t// Anchor DBCS calculations at start of line because start of line can\n\t\t\t\t// not be a DBCS trail byte.\n\t\t\t\tint posStartLine = LineStart(LineFromPosition(pos));\n\t\t\t\t// See http://msdn.microsoft.com/en-us/library/cc194792%28v=MSDN.10%29.aspx\n\t\t\t\t// http://msdn.microsoft.com/en-us/library/cc194790.aspx\n\t\t\t\tif ((pos - 1) <= posStartLine) {\n\t\t\t\t\treturn pos - 1;\n\t\t\t\t} else if (IsDBCSLeadByte(cb.CharAt(pos - 1))) {\n\t\t\t\t\t// Must actually be trail byte\n\t\t\t\t\treturn pos - 2;\n\t\t\t\t} else {\n\t\t\t\t\t// Otherwise, step back until a non-lead-byte is found.\n\t\t\t\t\tint posTemp = pos - 1;\n\t\t\t\t\twhile (posStartLine <= --posTemp && IsDBCSLeadByte(cb.CharAt(posTemp)))\n\t\t\t\t\t\t;\n\t\t\t\t\t// Now posTemp+1 must point to the beginning of a character,\n\t\t\t\t\t// so figure out whether we went back an even or an odd\n\t\t\t\t\t// number of bytes and go back 1 or 2 bytes, respectively.\n\t\t\t\t\treturn (pos - 1 - ((pos - posTemp) & 1));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tpos += increment;\n\t}\n\n\treturn pos;\n}\n\nbool Document::NextCharacter(int &pos, int moveDir) const {\n\t// Returns true if pos changed\n\tint posNext = NextPosition(pos, moveDir);\n\tif (posNext == pos) {\n\t\treturn false;\n\t} else {\n\t\tpos = posNext;\n\t\treturn true;\n\t}\n}\n\nDocument::CharacterExtracted Document::CharacterAfter(int position) const {\n\tif (position >= Length()) {\n\t\treturn CharacterExtracted(unicodeReplacementChar, 0);\n\t}\n\tconst unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(position));\n\tif (!dbcsCodePage || UTF8IsAscii(leadByte)) {\n\t\t// Common case: ASCII character\n\t\treturn CharacterExtracted(leadByte, 1);\n\t}\n\tif (SC_CP_UTF8 == dbcsCodePage) {\n\t\tconst int widthCharBytes = UTF8BytesOfLead[leadByte];\n\t\tunsigned char charBytes[UTF8MaxBytes] = { leadByte, 0, 0, 0 };\n\t\tfor (int b = 1; b<widthCharBytes; b++)\n\t\t\tcharBytes[b] = static_cast<unsigned char>(cb.CharAt(position + b));\n\t\tint utf8status = UTF8Classify(charBytes, widthCharBytes);\n\t\tif (utf8status & UTF8MaskInvalid) {\n\t\t\t// Treat as invalid and use up just one byte\n\t\t\treturn CharacterExtracted(unicodeReplacementChar, 1);\n\t\t} else {\n\t\t\treturn CharacterExtracted(UnicodeFromUTF8(charBytes), utf8status & UTF8MaskWidth);\n\t\t}\n\t} else {\n\t\tif (IsDBCSLeadByte(leadByte) && ((position + 1) < Length())) {\n\t\t\treturn CharacterExtracted::DBCS(leadByte, static_cast<unsigned char>(cb.CharAt(position + 1)));\n\t\t} else {\n\t\t\treturn CharacterExtracted(leadByte, 1);\n\t\t}\n\t}\n}\n\nDocument::CharacterExtracted Document::CharacterBefore(int position) const {\n\tif (position <= 0) {\n\t\treturn CharacterExtracted(unicodeReplacementChar, 0);\n\t}\n\tconst unsigned char previousByte = static_cast<unsigned char>(cb.CharAt(position - 1));\n\tif (0 == dbcsCodePage) {\n\t\treturn CharacterExtracted(previousByte, 1);\n\t}\n\tif (SC_CP_UTF8 == dbcsCodePage) {\n\t\tif (UTF8IsAscii(previousByte)) {\n\t\t\treturn CharacterExtracted(previousByte, 1);\n\t\t}\n\t\tposition--;\n\t\t// If previousByte is not a trail byte then its invalid\n\t\tif (UTF8IsTrailByte(previousByte)) {\n\t\t\t// If previousByte is a trail byte in a valid UTF-8 character then find start of character\n\t\t\tint startUTF = position;\n\t\t\tint endUTF = position;\n\t\t\tif (InGoodUTF8(position, startUTF, endUTF)) {\n\t\t\t\tconst int widthCharBytes = endUTF - startUTF;\n\t\t\t\tunsigned char charBytes[UTF8MaxBytes] = { 0, 0, 0, 0 };\n\t\t\t\tfor (int b = 0; b<widthCharBytes; b++)\n\t\t\t\t\tcharBytes[b] = static_cast<unsigned char>(cb.CharAt(startUTF + b));\n\t\t\t\tint utf8status = UTF8Classify(charBytes, widthCharBytes);\n\t\t\t\tif (utf8status & UTF8MaskInvalid) {\n\t\t\t\t\t// Treat as invalid and use up just one byte\n\t\t\t\t\treturn CharacterExtracted(unicodeReplacementChar, 1);\n\t\t\t\t} else {\n\t\t\t\t\treturn CharacterExtracted(UnicodeFromUTF8(charBytes), utf8status & UTF8MaskWidth);\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Else invalid UTF-8 so return position of isolated trail byte\n\t\t}\n\t\treturn CharacterExtracted(unicodeReplacementChar, 1);\n\t} else {\n\t\t// Moving backwards in DBCS is complex so use NextPosition\n\t\tconst int posStartCharacter = NextPosition(position, -1);\n\t\treturn CharacterAfter(posStartCharacter);\n\t}\n}\n\n// Return -1  on out-of-bounds\nSci_Position SCI_METHOD Document::GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const {\n\tint pos = positionStart;\n\tif (dbcsCodePage) {\n\t\tconst int increment = (characterOffset > 0) ? 1 : -1;\n\t\twhile (characterOffset != 0) {\n\t\t\tconst int posNext = NextPosition(pos, increment);\n\t\t\tif (posNext == pos)\n\t\t\t\treturn INVALID_POSITION;\n\t\t\tpos = posNext;\n\t\t\tcharacterOffset -= increment;\n\t\t}\n\t} else {\n\t\tpos = positionStart + characterOffset;\n\t\tif ((pos < 0) || (pos > Length()))\n\t\t\treturn INVALID_POSITION;\n\t}\n\treturn pos;\n}\n\nint Document::GetRelativePositionUTF16(int positionStart, int characterOffset) const {\n\tint pos = positionStart;\n\tif (dbcsCodePage) {\n\t\tconst int increment = (characterOffset > 0) ? 1 : -1;\n\t\twhile (characterOffset != 0) {\n\t\t\tconst int posNext = NextPosition(pos, increment);\n\t\t\tif (posNext == pos)\n\t\t\t\treturn INVALID_POSITION;\n\t\t\tif (abs(pos-posNext) > 3)\t// 4 byte character = 2*UTF16.\n\t\t\t\tcharacterOffset -= increment;\n\t\t\tpos = posNext;\n\t\t\tcharacterOffset -= increment;\n\t\t}\n\t} else {\n\t\tpos = positionStart + characterOffset;\n\t\tif ((pos < 0) || (pos > Length()))\n\t\t\treturn INVALID_POSITION;\n\t}\n\treturn pos;\n}\n\nint SCI_METHOD Document::GetCharacterAndWidth(Sci_Position position, Sci_Position *pWidth) const {\n\tint character;\n\tint bytesInCharacter = 1;\n\tif (dbcsCodePage) {\n\t\tconst unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(position));\n\t\tif (SC_CP_UTF8 == dbcsCodePage) {\n\t\t\tif (UTF8IsAscii(leadByte)) {\n\t\t\t\t// Single byte character or invalid\n\t\t\t\tcharacter =  leadByte;\n\t\t\t} else {\n\t\t\t\tconst int widthCharBytes = UTF8BytesOfLead[leadByte];\n\t\t\t\tunsigned char charBytes[UTF8MaxBytes] = {leadByte,0,0,0};\n\t\t\t\tfor (int b=1; b<widthCharBytes; b++)\n\t\t\t\t\tcharBytes[b] = static_cast<unsigned char>(cb.CharAt(position+b));\n\t\t\t\tint utf8status = UTF8Classify(charBytes, widthCharBytes);\n\t\t\t\tif (utf8status & UTF8MaskInvalid) {\n\t\t\t\t\t// Report as singleton surrogate values which are invalid Unicode\n\t\t\t\t\tcharacter =  0xDC80 + leadByte;\n\t\t\t\t} else {\n\t\t\t\t\tbytesInCharacter = utf8status & UTF8MaskWidth;\n\t\t\t\t\tcharacter = UnicodeFromUTF8(charBytes);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (IsDBCSLeadByte(leadByte)) {\n\t\t\t\tbytesInCharacter = 2;\n\t\t\t\tcharacter = (leadByte << 8) | static_cast<unsigned char>(cb.CharAt(position+1));\n\t\t\t} else {\n\t\t\t\tcharacter = leadByte;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tcharacter = cb.CharAt(position);\n\t}\n\tif (pWidth) {\n\t\t*pWidth = bytesInCharacter;\n\t}\n\treturn character;\n}\n\nint SCI_METHOD Document::CodePage() const {\n\treturn dbcsCodePage;\n}\n\nbool SCI_METHOD Document::IsDBCSLeadByte(char ch) const {\n\t// Byte ranges found in Wikipedia articles with relevant search strings in each case\n\tunsigned char uch = static_cast<unsigned char>(ch);\n\tswitch (dbcsCodePage) {\n\t\tcase 932:\n\t\t\t// Shift_jis\n\t\t\treturn ((uch >= 0x81) && (uch <= 0x9F)) ||\n\t\t\t\t((uch >= 0xE0) && (uch <= 0xFC));\n\t\t\t\t// Lead bytes F0 to FC may be a Microsoft addition.\n\t\tcase 936:\n\t\t\t// GBK\n\t\t\treturn (uch >= 0x81) && (uch <= 0xFE);\n\t\tcase 949:\n\t\t\t// Korean Wansung KS C-5601-1987\n\t\t\treturn (uch >= 0x81) && (uch <= 0xFE);\n\t\tcase 950:\n\t\t\t// Big5\n\t\t\treturn (uch >= 0x81) && (uch <= 0xFE);\n\t\tcase 1361:\n\t\t\t// Korean Johab KS C-5601-1992\n\t\t\treturn\n\t\t\t\t((uch >= 0x84) && (uch <= 0xD3)) ||\n\t\t\t\t((uch >= 0xD8) && (uch <= 0xDE)) ||\n\t\t\t\t((uch >= 0xE0) && (uch <= 0xF9));\n\t}\n\treturn false;\n}\n\nstatic inline bool IsSpaceOrTab(int ch) {\n\treturn ch == ' ' || ch == '\\t';\n}\n\n// Need to break text into segments near lengthSegment but taking into\n// account the encoding to not break inside a UTF-8 or DBCS character\n// and also trying to avoid breaking inside a pair of combining characters.\n// The segment length must always be long enough (more than 4 bytes)\n// so that there will be at least one whole character to make a segment.\n// For UTF-8, text must consist only of valid whole characters.\n// In preference order from best to worst:\n//   1) Break after space\n//   2) Break before punctuation\n//   3) Break after whole character\n\nint Document::SafeSegment(const char *text, int length, int lengthSegment) const {\n\tif (length <= lengthSegment)\n\t\treturn length;\n\tint lastSpaceBreak = -1;\n\tint lastPunctuationBreak = -1;\n\tint lastEncodingAllowedBreak = 0;\n\tfor (int j=0; j < lengthSegment;) {\n\t\tunsigned char ch = static_cast<unsigned char>(text[j]);\n\t\tif (j > 0) {\n\t\t\tif (IsSpaceOrTab(text[j - 1]) && !IsSpaceOrTab(text[j])) {\n\t\t\t\tlastSpaceBreak = j;\n\t\t\t}\n\t\t\tif (ch < 'A') {\n\t\t\t\tlastPunctuationBreak = j;\n\t\t\t}\n\t\t}\n\t\tlastEncodingAllowedBreak = j;\n\n\t\tif (dbcsCodePage == SC_CP_UTF8) {\n\t\t\tj += UTF8BytesOfLead[ch];\n\t\t} else if (dbcsCodePage) {\n\t\t\tj += IsDBCSLeadByte(ch) ? 2 : 1;\n\t\t} else {\n\t\t\tj++;\n\t\t}\n\t}\n\tif (lastSpaceBreak >= 0) {\n\t\treturn lastSpaceBreak;\n\t} else if (lastPunctuationBreak >= 0) {\n\t\treturn lastPunctuationBreak;\n\t}\n\treturn lastEncodingAllowedBreak;\n}\n\nEncodingFamily Document::CodePageFamily() const {\n\tif (SC_CP_UTF8 == dbcsCodePage)\n\t\treturn efUnicode;\n\telse if (dbcsCodePage)\n\t\treturn efDBCS;\n\telse\n\t\treturn efEightBit;\n}\n\nvoid Document::ModifiedAt(int pos) {\n\tif (endStyled > pos)\n\t\tendStyled = pos;\n}\n\nvoid Document::CheckReadOnly() {\n\tif (cb.IsReadOnly() && enteredReadOnlyCount == 0) {\n\t\tenteredReadOnlyCount++;\n\t\tNotifyModifyAttempt();\n\t\tenteredReadOnlyCount--;\n\t}\n}\n\n// Document only modified by gateways DeleteChars, InsertString, Undo, Redo, and SetStyleAt.\n// SetStyleAt does not change the persistent state of a document\n\nbool Document::DeleteChars(int pos, int len) {\n\tif (pos < 0)\n\t\treturn false;\n\tif (len <= 0)\n\t\treturn false;\n\tif ((pos + len) > Length())\n\t\treturn false;\n\tCheckReadOnly();\n\tif (enteredModification != 0) {\n\t\treturn false;\n\t} else {\n\t\tenteredModification++;\n\t\tif (!cb.IsReadOnly()) {\n\t\t\tNotifyModified(\n\t\t\t    DocModification(\n\t\t\t        SC_MOD_BEFOREDELETE | SC_PERFORMED_USER,\n\t\t\t        pos, len,\n\t\t\t        0, 0));\n\t\t\tint prevLinesTotal = LinesTotal();\n\t\t\tbool startSavePoint = cb.IsSavePoint();\n\t\t\tbool startSequence = false;\n\t\t\tconst char *text = cb.DeleteChars(pos, len, startSequence);\n\t\t\tif (startSavePoint && cb.IsCollectingUndo())\n\t\t\t\tNotifySavePoint(!startSavePoint);\n\t\t\tif ((pos < Length()) || (pos == 0))\n\t\t\t\tModifiedAt(pos);\n\t\t\telse\n\t\t\t\tModifiedAt(pos-1);\n\t\t\tNotifyModified(\n\t\t\t    DocModification(\n\t\t\t        SC_MOD_DELETETEXT | SC_PERFORMED_USER | (startSequence?SC_STARTACTION:0),\n\t\t\t        pos, len,\n\t\t\t        LinesTotal() - prevLinesTotal, text));\n\t\t}\n\t\tenteredModification--;\n\t}\n\treturn !cb.IsReadOnly();\n}\n\n/**\n * Insert a string with a length.\n */\nint Document::InsertString(int position, const char *s, int insertLength) {\n\tif (insertLength <= 0) {\n\t\treturn 0;\n\t}\n\tCheckReadOnly();\t// Application may change read only state here\n\tif (cb.IsReadOnly()) {\n\t\treturn 0;\n\t}\n\tif (enteredModification != 0) {\n\t\treturn 0;\n\t}\n\tenteredModification++;\n\tinsertionSet = false;\n\tinsertion.clear();\n\tNotifyModified(\n\t\tDocModification(\n\t\t\tSC_MOD_INSERTCHECK,\n\t\t\tposition, insertLength,\n\t\t\t0, s));\n\tif (insertionSet) {\n\t\ts = insertion.c_str();\n\t\tinsertLength = static_cast<int>(insertion.length());\n\t}\n\tNotifyModified(\n\t\tDocModification(\n\t\t\tSC_MOD_BEFOREINSERT | SC_PERFORMED_USER,\n\t\t\tposition, insertLength,\n\t\t\t0, s));\n\tint prevLinesTotal = LinesTotal();\n\tbool startSavePoint = cb.IsSavePoint();\n\tbool startSequence = false;\n\tconst char *text = cb.InsertString(position, s, insertLength, startSequence);\n\tif (startSavePoint && cb.IsCollectingUndo())\n\t\tNotifySavePoint(!startSavePoint);\n\tModifiedAt(position);\n\tNotifyModified(\n\t\tDocModification(\n\t\t\tSC_MOD_INSERTTEXT | SC_PERFORMED_USER | (startSequence?SC_STARTACTION:0),\n\t\t\tposition, insertLength,\n\t\t\tLinesTotal() - prevLinesTotal, text));\n\tif (insertionSet) {\t// Free memory as could be large\n\t\tstd::string().swap(insertion);\n\t}\n\tenteredModification--;\n\treturn insertLength;\n}\n\nvoid Document::ChangeInsertion(const char *s, int length) {\n\tinsertionSet = true;\n\tinsertion.assign(s, length);\n}\n\nint SCI_METHOD Document::AddData(char *data, Sci_Position length) {\n\ttry {\n\t\tint position = Length();\n\t\tInsertString(position, data, length);\n\t} catch (std::bad_alloc &) {\n\t\treturn SC_STATUS_BADALLOC;\n\t} catch (...) {\n\t\treturn SC_STATUS_FAILURE;\n\t}\n\treturn 0;\n}\n\nvoid * SCI_METHOD Document::ConvertToDocument() {\n\treturn this;\n}\n\nint Document::Undo() {\n\tint newPos = -1;\n\tCheckReadOnly();\n\tif ((enteredModification == 0) && (cb.IsCollectingUndo())) {\n\t\tenteredModification++;\n\t\tif (!cb.IsReadOnly()) {\n\t\t\tbool startSavePoint = cb.IsSavePoint();\n\t\t\tbool multiLine = false;\n\t\t\tint steps = cb.StartUndo();\n\t\t\t//Platform::DebugPrintf(\"Steps=%d\\n\", steps);\n\t\t\tint coalescedRemovePos = -1;\n\t\t\tint coalescedRemoveLen = 0;\n\t\t\tint prevRemoveActionPos = -1;\n\t\t\tint prevRemoveActionLen = 0;\n\t\t\tfor (int step = 0; step < steps; step++) {\n\t\t\t\tconst int prevLinesTotal = LinesTotal();\n\t\t\t\tconst Action &action = cb.GetUndoStep();\n\t\t\t\tif (action.at == removeAction) {\n\t\t\t\t\tNotifyModified(DocModification(\n\t\t\t\t\t\t\t\t\tSC_MOD_BEFOREINSERT | SC_PERFORMED_UNDO, action));\n\t\t\t\t} else if (action.at == containerAction) {\n\t\t\t\t\tDocModification dm(SC_MOD_CONTAINER | SC_PERFORMED_UNDO);\n\t\t\t\t\tdm.token = action.position;\n\t\t\t\t\tNotifyModified(dm);\n\t\t\t\t\tif (!action.mayCoalesce) {\n\t\t\t\t\t\tcoalescedRemovePos = -1;\n\t\t\t\t\t\tcoalescedRemoveLen = 0;\n\t\t\t\t\t\tprevRemoveActionPos = -1;\n\t\t\t\t\t\tprevRemoveActionLen = 0;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tNotifyModified(DocModification(\n\t\t\t\t\t\t\t\t\tSC_MOD_BEFOREDELETE | SC_PERFORMED_UNDO, action));\n\t\t\t\t}\n\t\t\t\tcb.PerformUndoStep();\n\t\t\t\tif (action.at != containerAction) {\n\t\t\t\t\tModifiedAt(action.position);\n\t\t\t\t\tnewPos = action.position;\n\t\t\t\t}\n\n\t\t\t\tint modFlags = SC_PERFORMED_UNDO;\n\t\t\t\t// With undo, an insertion action becomes a deletion notification\n\t\t\t\tif (action.at == removeAction) {\n\t\t\t\t\tnewPos += action.lenData;\n\t\t\t\t\tmodFlags |= SC_MOD_INSERTTEXT;\n\t\t\t\t\tif ((coalescedRemoveLen > 0) &&\n\t\t\t\t\t\t(action.position == prevRemoveActionPos || action.position == (prevRemoveActionPos + prevRemoveActionLen))) {\n\t\t\t\t\t\tcoalescedRemoveLen += action.lenData;\n\t\t\t\t\t\tnewPos = coalescedRemovePos + coalescedRemoveLen;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcoalescedRemovePos = action.position;\n\t\t\t\t\t\tcoalescedRemoveLen = action.lenData;\n\t\t\t\t\t}\n\t\t\t\t\tprevRemoveActionPos = action.position;\n\t\t\t\t\tprevRemoveActionLen = action.lenData;\n\t\t\t\t} else if (action.at == insertAction) {\n\t\t\t\t\tmodFlags |= SC_MOD_DELETETEXT;\n\t\t\t\t\tcoalescedRemovePos = -1;\n\t\t\t\t\tcoalescedRemoveLen = 0;\n\t\t\t\t\tprevRemoveActionPos = -1;\n\t\t\t\t\tprevRemoveActionLen = 0;\n\t\t\t\t}\n\t\t\t\tif (steps > 1)\n\t\t\t\t\tmodFlags |= SC_MULTISTEPUNDOREDO;\n\t\t\t\tconst int linesAdded = LinesTotal() - prevLinesTotal;\n\t\t\t\tif (linesAdded != 0)\n\t\t\t\t\tmultiLine = true;\n\t\t\t\tif (step == steps - 1) {\n\t\t\t\t\tmodFlags |= SC_LASTSTEPINUNDOREDO;\n\t\t\t\t\tif (multiLine)\n\t\t\t\t\t\tmodFlags |= SC_MULTILINEUNDOREDO;\n\t\t\t\t}\n\t\t\t\tNotifyModified(DocModification(modFlags, action.position, action.lenData,\n\t\t\t\t\t\t\t\t\t\t\t   linesAdded, action.data));\n\t\t\t}\n\n\t\t\tbool endSavePoint = cb.IsSavePoint();\n\t\t\tif (startSavePoint != endSavePoint)\n\t\t\t\tNotifySavePoint(endSavePoint);\n\t\t}\n\t\tenteredModification--;\n\t}\n\treturn newPos;\n}\n\nint Document::Redo() {\n\tint newPos = -1;\n\tCheckReadOnly();\n\tif ((enteredModification == 0) && (cb.IsCollectingUndo())) {\n\t\tenteredModification++;\n\t\tif (!cb.IsReadOnly()) {\n\t\t\tbool startSavePoint = cb.IsSavePoint();\n\t\t\tbool multiLine = false;\n\t\t\tint steps = cb.StartRedo();\n\t\t\tfor (int step = 0; step < steps; step++) {\n\t\t\t\tconst int prevLinesTotal = LinesTotal();\n\t\t\t\tconst Action &action = cb.GetRedoStep();\n\t\t\t\tif (action.at == insertAction) {\n\t\t\t\t\tNotifyModified(DocModification(\n\t\t\t\t\t\t\t\t\tSC_MOD_BEFOREINSERT | SC_PERFORMED_REDO, action));\n\t\t\t\t} else if (action.at == containerAction) {\n\t\t\t\t\tDocModification dm(SC_MOD_CONTAINER | SC_PERFORMED_REDO);\n\t\t\t\t\tdm.token = action.position;\n\t\t\t\t\tNotifyModified(dm);\n\t\t\t\t} else {\n\t\t\t\t\tNotifyModified(DocModification(\n\t\t\t\t\t\t\t\t\tSC_MOD_BEFOREDELETE | SC_PERFORMED_REDO, action));\n\t\t\t\t}\n\t\t\t\tcb.PerformRedoStep();\n\t\t\t\tif (action.at != containerAction) {\n\t\t\t\t\tModifiedAt(action.position);\n\t\t\t\t\tnewPos = action.position;\n\t\t\t\t}\n\n\t\t\t\tint modFlags = SC_PERFORMED_REDO;\n\t\t\t\tif (action.at == insertAction) {\n\t\t\t\t\tnewPos += action.lenData;\n\t\t\t\t\tmodFlags |= SC_MOD_INSERTTEXT;\n\t\t\t\t} else if (action.at == removeAction) {\n\t\t\t\t\tmodFlags |= SC_MOD_DELETETEXT;\n\t\t\t\t}\n\t\t\t\tif (steps > 1)\n\t\t\t\t\tmodFlags |= SC_MULTISTEPUNDOREDO;\n\t\t\t\tconst int linesAdded = LinesTotal() - prevLinesTotal;\n\t\t\t\tif (linesAdded != 0)\n\t\t\t\t\tmultiLine = true;\n\t\t\t\tif (step == steps - 1) {\n\t\t\t\t\tmodFlags |= SC_LASTSTEPINUNDOREDO;\n\t\t\t\t\tif (multiLine)\n\t\t\t\t\t\tmodFlags |= SC_MULTILINEUNDOREDO;\n\t\t\t\t}\n\t\t\t\tNotifyModified(\n\t\t\t\t\tDocModification(modFlags, action.position, action.lenData,\n\t\t\t\t\t\t\t\t\tlinesAdded, action.data));\n\t\t\t}\n\n\t\t\tbool endSavePoint = cb.IsSavePoint();\n\t\t\tif (startSavePoint != endSavePoint)\n\t\t\t\tNotifySavePoint(endSavePoint);\n\t\t}\n\t\tenteredModification--;\n\t}\n\treturn newPos;\n}\n\nvoid Document::DelChar(int pos) {\n\tDeleteChars(pos, LenChar(pos));\n}\n\nvoid Document::DelCharBack(int pos) {\n\tif (pos <= 0) {\n\t\treturn;\n\t} else if (IsCrLf(pos - 2)) {\n\t\tDeleteChars(pos - 2, 2);\n\t} else if (dbcsCodePage) {\n\t\tint startChar = NextPosition(pos, -1);\n\t\tDeleteChars(startChar, pos - startChar);\n\t} else {\n\t\tDeleteChars(pos - 1, 1);\n\t}\n}\n\nstatic int NextTab(int pos, int tabSize) {\n\treturn ((pos / tabSize) + 1) * tabSize;\n}\n\nstatic std::string CreateIndentation(int indent, int tabSize, bool insertSpaces) {\n\tstd::string indentation;\n\tif (!insertSpaces) {\n\t\twhile (indent >= tabSize) {\n\t\t\tindentation += '\\t';\n\t\t\tindent -= tabSize;\n\t\t}\n\t}\n\twhile (indent > 0) {\n\t\tindentation += ' ';\n\t\tindent--;\n\t}\n\treturn indentation;\n}\n\nint SCI_METHOD Document::GetLineIndentation(Sci_Position line) {\n\tint indent = 0;\n\tif ((line >= 0) && (line < LinesTotal())) {\n\t\tint lineStart = LineStart(line);\n\t\tint length = Length();\n\t\tfor (int i = lineStart; i < length; i++) {\n\t\t\tchar ch = cb.CharAt(i);\n\t\t\tif (ch == ' ')\n\t\t\t\tindent++;\n\t\t\telse if (ch == '\\t')\n\t\t\t\tindent = NextTab(indent, tabInChars);\n\t\t\telse\n\t\t\t\treturn indent;\n\t\t}\n\t}\n\treturn indent;\n}\n\nint Document::SetLineIndentation(int line, int indent) {\n\tint indentOfLine = GetLineIndentation(line);\n\tif (indent < 0)\n\t\tindent = 0;\n\tif (indent != indentOfLine) {\n\t\tstd::string linebuf = CreateIndentation(indent, tabInChars, !useTabs);\n\t\tint thisLineStart = LineStart(line);\n\t\tint indentPos = GetLineIndentPosition(line);\n\t\tUndoGroup ug(this);\n\t\tDeleteChars(thisLineStart, indentPos - thisLineStart);\n\t\treturn thisLineStart + InsertString(thisLineStart, linebuf.c_str(),\n\t\t\tstatic_cast<int>(linebuf.length()));\n\t} else {\n\t\treturn GetLineIndentPosition(line);\n\t}\n}\n\nint Document::GetLineIndentPosition(int line) const {\n\tif (line < 0)\n\t\treturn 0;\n\tint pos = LineStart(line);\n\tint length = Length();\n\twhile ((pos < length) && IsSpaceOrTab(cb.CharAt(pos))) {\n\t\tpos++;\n\t}\n\treturn pos;\n}\n\nint Document::GetColumn(int pos) {\n\tint column = 0;\n\tint line = LineFromPosition(pos);\n\tif ((line >= 0) && (line < LinesTotal())) {\n\t\tfor (int i = LineStart(line); i < pos;) {\n\t\t\tchar ch = cb.CharAt(i);\n\t\t\tif (ch == '\\t') {\n\t\t\t\tcolumn = NextTab(column, tabInChars);\n\t\t\t\ti++;\n\t\t\t} else if (ch == '\\r') {\n\t\t\t\treturn column;\n\t\t\t} else if (ch == '\\n') {\n\t\t\t\treturn column;\n\t\t\t} else if (i >= Length()) {\n\t\t\t\treturn column;\n\t\t\t} else {\n\t\t\t\tcolumn++;\n\t\t\t\ti = NextPosition(i, 1);\n\t\t\t}\n\t\t}\n\t}\n\treturn column;\n}\n\nint Document::CountCharacters(int startPos, int endPos) const {\n\tstartPos = MovePositionOutsideChar(startPos, 1, false);\n\tendPos = MovePositionOutsideChar(endPos, -1, false);\n\tint count = 0;\n\tint i = startPos;\n\twhile (i < endPos) {\n\t\tcount++;\n\t\ti = NextPosition(i, 1);\n\t}\n\treturn count;\n}\n\nint Document::CountUTF16(int startPos, int endPos) const {\n\tstartPos = MovePositionOutsideChar(startPos, 1, false);\n\tendPos = MovePositionOutsideChar(endPos, -1, false);\n\tint count = 0;\n\tint i = startPos;\n\twhile (i < endPos) {\n\t\tcount++;\n\t\tconst int next = NextPosition(i, 1);\n\t\tif ((next - i) > 3)\n\t\t\tcount++;\n\t\ti = next;\n\t}\n\treturn count;\n}\n\nint Document::FindColumn(int line, int column) {\n\tint position = LineStart(line);\n\tif ((line >= 0) && (line < LinesTotal())) {\n\t\tint columnCurrent = 0;\n\t\twhile ((columnCurrent < column) && (position < Length())) {\n\t\t\tchar ch = cb.CharAt(position);\n\t\t\tif (ch == '\\t') {\n\t\t\t\tcolumnCurrent = NextTab(columnCurrent, tabInChars);\n\t\t\t\tif (columnCurrent > column)\n\t\t\t\t\treturn position;\n\t\t\t\tposition++;\n\t\t\t} else if (ch == '\\r') {\n\t\t\t\treturn position;\n\t\t\t} else if (ch == '\\n') {\n\t\t\t\treturn position;\n\t\t\t} else {\n\t\t\t\tcolumnCurrent++;\n\t\t\t\tposition = NextPosition(position, 1);\n\t\t\t}\n\t\t}\n\t}\n\treturn position;\n}\n\nvoid Document::Indent(bool forwards, int lineBottom, int lineTop) {\n\t// Dedent - suck white space off the front of the line to dedent by equivalent of a tab\n\tfor (int line = lineBottom; line >= lineTop; line--) {\n\t\tint indentOfLine = GetLineIndentation(line);\n\t\tif (forwards) {\n\t\t\tif (LineStart(line) < LineEnd(line)) {\n\t\t\t\tSetLineIndentation(line, indentOfLine + IndentSize());\n\t\t\t}\n\t\t} else {\n\t\t\tSetLineIndentation(line, indentOfLine - IndentSize());\n\t\t}\n\t}\n}\n\n// Convert line endings for a piece of text to a particular mode.\n// Stop at len or when a NUL is found.\nstd::string Document::TransformLineEnds(const char *s, size_t len, int eolModeWanted) {\n\tstd::string dest;\n\tfor (size_t i = 0; (i < len) && (s[i]); i++) {\n\t\tif (s[i] == '\\n' || s[i] == '\\r') {\n\t\t\tif (eolModeWanted == SC_EOL_CR) {\n\t\t\t\tdest.push_back('\\r');\n\t\t\t} else if (eolModeWanted == SC_EOL_LF) {\n\t\t\t\tdest.push_back('\\n');\n\t\t\t} else { // eolModeWanted == SC_EOL_CRLF\n\t\t\t\tdest.push_back('\\r');\n\t\t\t\tdest.push_back('\\n');\n\t\t\t}\n\t\t\tif ((s[i] == '\\r') && (i+1 < len) && (s[i+1] == '\\n')) {\n\t\t\t\ti++;\n\t\t\t}\n\t\t} else {\n\t\t\tdest.push_back(s[i]);\n\t\t}\n\t}\n\treturn dest;\n}\n\nvoid Document::ConvertLineEnds(int eolModeSet) {\n\tUndoGroup ug(this);\n\n\tfor (int pos = 0; pos < Length(); pos++) {\n\t\tif (cb.CharAt(pos) == '\\r') {\n\t\t\tif (cb.CharAt(pos + 1) == '\\n') {\n\t\t\t\t// CRLF\n\t\t\t\tif (eolModeSet == SC_EOL_CR) {\n\t\t\t\t\tDeleteChars(pos + 1, 1); // Delete the LF\n\t\t\t\t} else if (eolModeSet == SC_EOL_LF) {\n\t\t\t\t\tDeleteChars(pos, 1); // Delete the CR\n\t\t\t\t} else {\n\t\t\t\t\tpos++;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// CR\n\t\t\t\tif (eolModeSet == SC_EOL_CRLF) {\n\t\t\t\t\tpos += InsertString(pos + 1, \"\\n\", 1); // Insert LF\n\t\t\t\t} else if (eolModeSet == SC_EOL_LF) {\n\t\t\t\t\tpos += InsertString(pos, \"\\n\", 1); // Insert LF\n\t\t\t\t\tDeleteChars(pos, 1); // Delete CR\n\t\t\t\t\tpos--;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (cb.CharAt(pos) == '\\n') {\n\t\t\t// LF\n\t\t\tif (eolModeSet == SC_EOL_CRLF) {\n\t\t\t\tpos += InsertString(pos, \"\\r\", 1); // Insert CR\n\t\t\t} else if (eolModeSet == SC_EOL_CR) {\n\t\t\t\tpos += InsertString(pos, \"\\r\", 1); // Insert CR\n\t\t\t\tDeleteChars(pos, 1); // Delete LF\n\t\t\t\tpos--;\n\t\t\t}\n\t\t}\n\t}\n\n}\n\nbool Document::IsWhiteLine(int line) const {\n\tint currentChar = LineStart(line);\n\tint endLine = LineEnd(line);\n\twhile (currentChar < endLine) {\n\t\tif (cb.CharAt(currentChar) != ' ' && cb.CharAt(currentChar) != '\\t') {\n\t\t\treturn false;\n\t\t}\n\t\t++currentChar;\n\t}\n\treturn true;\n}\n\nint Document::ParaUp(int pos) const {\n\tint line = LineFromPosition(pos);\n\tline--;\n\twhile (line >= 0 && IsWhiteLine(line)) { // skip empty lines\n\t\tline--;\n\t}\n\twhile (line >= 0 && !IsWhiteLine(line)) { // skip non-empty lines\n\t\tline--;\n\t}\n\tline++;\n\treturn LineStart(line);\n}\n\nint Document::ParaDown(int pos) const {\n\tint line = LineFromPosition(pos);\n\twhile (line < LinesTotal() && !IsWhiteLine(line)) { // skip non-empty lines\n\t\tline++;\n\t}\n\twhile (line < LinesTotal() && IsWhiteLine(line)) { // skip empty lines\n\t\tline++;\n\t}\n\tif (line < LinesTotal())\n\t\treturn LineStart(line);\n\telse // end of a document\n\t\treturn LineEnd(line-1);\n}\n\nbool Document::IsASCIIWordByte(unsigned char ch) const {\n\tif (IsASCII(ch)) {\n\t\treturn charClass.GetClass(ch) == CharClassify::ccWord;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nCharClassify::cc Document::WordCharacterClass(unsigned int ch) const {\n\tif (dbcsCodePage && (!UTF8IsAscii(ch))) {\n\t\tif (SC_CP_UTF8 == dbcsCodePage) {\n\t\t\t// Use hard coded Unicode class\n\t\t\tconst CharacterCategory cc = CategoriseCharacter(ch);\n\t\t\tswitch (cc) {\n\n\t\t\t\t// Separator, Line/Paragraph\n\t\t\tcase ccZl:\n\t\t\tcase ccZp:\n\t\t\t\treturn CharClassify::ccNewLine;\n\n\t\t\t\t// Separator, Space\n\t\t\tcase ccZs:\n\t\t\t\t// Other\n\t\t\tcase ccCc:\n\t\t\tcase ccCf:\n\t\t\tcase ccCs:\n\t\t\tcase ccCo:\n\t\t\tcase ccCn:\n\t\t\t\treturn CharClassify::ccSpace;\n\n\t\t\t\t// Letter\n\t\t\tcase ccLu:\n\t\t\tcase ccLl:\n\t\t\tcase ccLt:\n\t\t\tcase ccLm:\n\t\t\tcase ccLo:\n\t\t\t\t// Number\n\t\t\tcase ccNd:\n\t\t\tcase ccNl:\n\t\t\tcase ccNo:\n\t\t\t\t// Mark - includes combining diacritics\n\t\t\tcase ccMn:\n\t\t\tcase ccMc:\n\t\t\tcase ccMe:\n\t\t\t\treturn CharClassify::ccWord;\n\n\t\t\t\t// Punctuation\n\t\t\tcase ccPc:\n\t\t\tcase ccPd:\n\t\t\tcase ccPs:\n\t\t\tcase ccPe:\n\t\t\tcase ccPi:\n\t\t\tcase ccPf:\n\t\t\tcase ccPo:\n\t\t\t\t// Symbol\n\t\t\tcase ccSm:\n\t\t\tcase ccSc:\n\t\t\tcase ccSk:\n\t\t\tcase ccSo:\n\t\t\t\treturn CharClassify::ccPunctuation;\n\n\t\t\t}\n\t\t} else {\n\t\t\t// Asian DBCS\n\t\t\treturn CharClassify::ccWord;\n\t\t}\n\t}\n\treturn charClass.GetClass(static_cast<unsigned char>(ch));\n}\n\n/**\n * Used by commmands that want to select whole words.\n * Finds the start of word at pos when delta < 0 or the end of the word when delta >= 0.\n */\nint Document::ExtendWordSelect(int pos, int delta, bool onlyWordCharacters) const {\n\tCharClassify::cc ccStart = CharClassify::ccWord;\n\tif (delta < 0) {\n\t\tif (!onlyWordCharacters) {\n\t\t\tconst CharacterExtracted ce = CharacterBefore(pos);\n\t\t\tccStart = WordCharacterClass(ce.character);\n\t\t}\n\t\twhile (pos > 0) {\n\t\t\tconst CharacterExtracted ce = CharacterBefore(pos);\n\t\t\tif (WordCharacterClass(ce.character) != ccStart)\n\t\t\t\tbreak;\n\t\t\tpos -= ce.widthBytes;\n\t\t}\n\t} else {\n\t\tif (!onlyWordCharacters && pos < Length()) {\n\t\t\tconst CharacterExtracted ce = CharacterAfter(pos);\n\t\t\tccStart = WordCharacterClass(ce.character);\n\t\t}\n\t\twhile (pos < Length()) {\n\t\t\tconst CharacterExtracted ce = CharacterAfter(pos);\n\t\t\tif (WordCharacterClass(ce.character) != ccStart)\n\t\t\t\tbreak;\n\t\t\tpos += ce.widthBytes;\n\t\t}\n\t}\n\treturn MovePositionOutsideChar(pos, delta, true);\n}\n\n/**\n * Find the start of the next word in either a forward (delta >= 0) or backwards direction\n * (delta < 0).\n * This is looking for a transition between character classes although there is also some\n * additional movement to transit white space.\n * Used by cursor movement by word commands.\n */\nint Document::NextWordStart(int pos, int delta) const {\n\tif (delta < 0) {\n\t\twhile (pos > 0) {\n\t\t\tconst CharacterExtracted ce = CharacterBefore(pos);\n\t\t\tif (WordCharacterClass(ce.character) != CharClassify::ccSpace)\n\t\t\t\tbreak;\n\t\t\tpos -= ce.widthBytes;\n\t\t}\n\t\tif (pos > 0) {\n\t\t\tCharacterExtracted ce = CharacterBefore(pos);\n\t\t\tconst CharClassify::cc ccStart = WordCharacterClass(ce.character);\n\t\t\twhile (pos > 0) {\n\t\t\t\tce = CharacterBefore(pos);\n\t\t\t\tif (WordCharacterClass(ce.character) != ccStart)\n\t\t\t\t\tbreak;\n\t\t\t\tpos -= ce.widthBytes;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tCharacterExtracted ce = CharacterAfter(pos);\n\t\tconst CharClassify::cc ccStart = WordCharacterClass(ce.character);\n\t\twhile (pos < Length()) {\n\t\t\tce = CharacterAfter(pos);\n\t\t\tif (WordCharacterClass(ce.character) != ccStart)\n\t\t\t\tbreak;\n\t\t\tpos += ce.widthBytes;\n\t\t}\n\t\twhile (pos < Length()) {\n\t\t\tce = CharacterAfter(pos);\n\t\t\tif (WordCharacterClass(ce.character) != CharClassify::ccSpace)\n\t\t\t\tbreak;\n\t\t\tpos += ce.widthBytes;\n\t\t}\n\t}\n\treturn pos;\n}\n\n/**\n * Find the end of the next word in either a forward (delta >= 0) or backwards direction\n * (delta < 0).\n * This is looking for a transition between character classes although there is also some\n * additional movement to transit white space.\n * Used by cursor movement by word commands.\n */\nint Document::NextWordEnd(int pos, int delta) const {\n\tif (delta < 0) {\n\t\tif (pos > 0) {\n\t\t\tCharacterExtracted ce = CharacterBefore(pos);\n\t\t\tCharClassify::cc ccStart = WordCharacterClass(ce.character);\n\t\t\tif (ccStart != CharClassify::ccSpace) {\n\t\t\t\twhile (pos > 0) {\n\t\t\t\t\tce = CharacterBefore(pos);\n\t\t\t\t\tif (WordCharacterClass(ce.character) != ccStart)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tpos -= ce.widthBytes;\n\t\t\t\t}\n\t\t\t}\n\t\t\twhile (pos > 0) {\n\t\t\t\tce = CharacterBefore(pos);\n\t\t\t\tif (WordCharacterClass(ce.character) != CharClassify::ccSpace)\n\t\t\t\t\tbreak;\n\t\t\t\tpos -= ce.widthBytes;\n\t\t\t}\n\t\t}\n\t} else {\n\t\twhile (pos < Length()) {\n\t\t\tCharacterExtracted ce = CharacterAfter(pos);\n\t\t\tif (WordCharacterClass(ce.character) != CharClassify::ccSpace)\n\t\t\t\tbreak;\n\t\t\tpos += ce.widthBytes;\n\t\t}\n\t\tif (pos < Length()) {\n\t\t\tCharacterExtracted ce = CharacterAfter(pos);\n\t\t\tCharClassify::cc ccStart = WordCharacterClass(ce.character);\n\t\t\twhile (pos < Length()) {\n\t\t\t\tce = CharacterAfter(pos);\n\t\t\t\tif (WordCharacterClass(ce.character) != ccStart)\n\t\t\t\t\tbreak;\n\t\t\t\tpos += ce.widthBytes;\n\t\t\t}\n\t\t}\n\t}\n\treturn pos;\n}\n\n/**\n * Check that the character at the given position is a word or punctuation character and that\n * the previous character is of a different character class.\n */\nbool Document::IsWordStartAt(int pos) const {\n\tif (pos >= Length())\n\t\treturn false;\n\tif (pos > 0) {\n\t\tconst CharacterExtracted cePos = CharacterAfter(pos);\n\t\tconst CharClassify::cc ccPos = WordCharacterClass(cePos.character);\n\t\tconst CharacterExtracted cePrev = CharacterBefore(pos);\n\t\tconst CharClassify::cc ccPrev = WordCharacterClass(cePrev.character);\n\t\treturn (ccPos == CharClassify::ccWord || ccPos == CharClassify::ccPunctuation) &&\n\t\t\t(ccPos != ccPrev);\n\t}\n\treturn true;\n}\n\n/**\n * Check that the character at the given position is a word or punctuation character and that\n * the next character is of a different character class.\n */\nbool Document::IsWordEndAt(int pos) const {\n\tif (pos <= 0)\n\t\treturn false;\n\tif (pos < Length()) {\n\t\tconst CharacterExtracted cePos = CharacterAfter(pos);\n\t\tconst CharClassify::cc ccPos = WordCharacterClass(cePos.character);\n\t\tconst CharacterExtracted cePrev = CharacterBefore(pos);\n\t\tconst CharClassify::cc ccPrev = WordCharacterClass(cePrev.character);\n\t\treturn (ccPrev == CharClassify::ccWord || ccPrev == CharClassify::ccPunctuation) &&\n\t\t\t(ccPrev != ccPos);\n\t}\n\treturn true;\n}\n\n/**\n * Check that the given range is has transitions between character classes at both\n * ends and where the characters on the inside are word or punctuation characters.\n */\nbool Document::IsWordAt(int start, int end) const {\n\treturn (start < end) && IsWordStartAt(start) && IsWordEndAt(end);\n}\n\nbool Document::MatchesWordOptions(bool word, bool wordStart, int pos, int length) const {\n\treturn (!word && !wordStart) ||\n\t\t\t(word && IsWordAt(pos, pos + length)) ||\n\t\t\t(wordStart && IsWordStartAt(pos));\n}\n\nbool Document::HasCaseFolder(void) const {\n\treturn pcf != 0;\n}\n\nvoid Document::SetCaseFolder(CaseFolder *pcf_) {\n\tdelete pcf;\n\tpcf = pcf_;\n}\n\nDocument::CharacterExtracted Document::ExtractCharacter(int position) const {\n\tconst unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(position));\n\tif (UTF8IsAscii(leadByte)) {\n\t\t// Common case: ASCII character\n\t\treturn CharacterExtracted(leadByte, 1);\n\t}\n\tconst int widthCharBytes = UTF8BytesOfLead[leadByte];\n\tunsigned char charBytes[UTF8MaxBytes] = { leadByte, 0, 0, 0 };\n\tfor (int b=1; b<widthCharBytes; b++)\n\t\tcharBytes[b] = static_cast<unsigned char>(cb.CharAt(position + b));\n\tint utf8status = UTF8Classify(charBytes, widthCharBytes);\n\tif (utf8status & UTF8MaskInvalid) {\n\t\t// Treat as invalid and use up just one byte\n\t\treturn CharacterExtracted(unicodeReplacementChar, 1);\n\t} else {\n\t\treturn CharacterExtracted(UnicodeFromUTF8(charBytes), utf8status & UTF8MaskWidth);\n\t}\n}\n\n/**\n * Find text in document, supporting both forward and backward\n * searches (just pass minPos > maxPos to do a backward search)\n * Has not been tested with backwards DBCS searches yet.\n */\nlong Document::FindText(int minPos, int maxPos, const char *search,\n                        int flags, int *length) {\n\tif (*length <= 0)\n\t\treturn minPos;\n\tconst bool caseSensitive = (flags & SCFIND_MATCHCASE) != 0;\n\tconst bool word = (flags & SCFIND_WHOLEWORD) != 0;\n\tconst bool wordStart = (flags & SCFIND_WORDSTART) != 0;\n\tconst bool regExp = (flags & SCFIND_REGEXP) != 0;\n\tif (regExp) {\n\t\tif (!regex)\n\t\t\tregex = CreateRegexSearch(&charClass);\n\t\treturn regex->FindText(this, minPos, maxPos, search, caseSensitive, word, wordStart, flags, length);\n\t} else {\n\n\t\tconst bool forward = minPos <= maxPos;\n\t\tconst int increment = forward ? 1 : -1;\n\n\t\t// Range endpoints should not be inside DBCS characters, but just in case, move them.\n\t\tconst int startPos = MovePositionOutsideChar(minPos, increment, false);\n\t\tconst int endPos = MovePositionOutsideChar(maxPos, increment, false);\n\n\t\t// Compute actual search ranges needed\n\t\tconst int lengthFind = *length;\n\n\t\t//Platform::DebugPrintf(\"Find %d %d %s %d\\n\", startPos, endPos, ft->lpstrText, lengthFind);\n\t\tconst int limitPos = Platform::Maximum(startPos, endPos);\n\t\tint pos = startPos;\n\t\tif (!forward) {\n\t\t\t// Back all of a character\n\t\t\tpos = NextPosition(pos, increment);\n\t\t}\n\t\tif (caseSensitive) {\n\t\t\tconst int endSearch = (startPos <= endPos) ? endPos - lengthFind + 1 : endPos;\n\t\t\tconst char charStartSearch =  search[0];\n\t\t\twhile (forward ? (pos < endSearch) : (pos >= endSearch)) {\n\t\t\t\tif (CharAt(pos) == charStartSearch) {\n\t\t\t\t\tbool found = (pos + lengthFind) <= limitPos;\n\t\t\t\t\tfor (int indexSearch = 1; (indexSearch < lengthFind) && found; indexSearch++) {\n\t\t\t\t\t\tfound = CharAt(pos + indexSearch) == search[indexSearch];\n\t\t\t\t\t}\n\t\t\t\t\tif (found && MatchesWordOptions(word, wordStart, pos, lengthFind)) {\n\t\t\t\t\t\treturn pos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!NextCharacter(pos, increment))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else if (SC_CP_UTF8 == dbcsCodePage) {\n\t\t\tconst size_t maxFoldingExpansion = 4;\n\t\t\tstd::vector<char> searchThing(lengthFind * UTF8MaxBytes * maxFoldingExpansion + 1);\n\t\t\tconst int lenSearch = static_cast<int>(\n\t\t\t\tpcf->Fold(&searchThing[0], searchThing.size(), search, lengthFind));\n\t\t\tchar bytes[UTF8MaxBytes + 1];\n\t\t\tchar folded[UTF8MaxBytes * maxFoldingExpansion + 1];\n\t\t\twhile (forward ? (pos < endPos) : (pos >= endPos)) {\n\t\t\t\tint widthFirstCharacter = 0;\n\t\t\t\tint posIndexDocument = pos;\n\t\t\t\tint indexSearch = 0;\n\t\t\t\tbool characterMatches = true;\n\t\t\t\tfor (;;) {\n\t\t\t\t\tconst unsigned char leadByte = static_cast<unsigned char>(cb.CharAt(posIndexDocument));\n\t\t\t\t\tbytes[0] = leadByte;\n\t\t\t\t\tint widthChar = 1;\n\t\t\t\t\tif (!UTF8IsAscii(leadByte)) {\n\t\t\t\t\t\tconst int widthCharBytes = UTF8BytesOfLead[leadByte];\n\t\t\t\t\t\tfor (int b=1; b<widthCharBytes; b++) {\n\t\t\t\t\t\t\tbytes[b] = cb.CharAt(posIndexDocument+b);\n\t\t\t\t\t\t}\n\t\t\t\t\t\twidthChar = UTF8Classify(reinterpret_cast<const unsigned char *>(bytes), widthCharBytes) & UTF8MaskWidth;\n\t\t\t\t\t}\n\t\t\t\t\tif (!widthFirstCharacter)\n\t\t\t\t\t\twidthFirstCharacter = widthChar;\n\t\t\t\t\tif ((posIndexDocument + widthChar) > limitPos)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tconst int lenFlat = static_cast<int>(pcf->Fold(folded, sizeof(folded), bytes, widthChar));\n\t\t\t\t\tfolded[lenFlat] = 0;\n\t\t\t\t\t// Does folded match the buffer\n\t\t\t\t\tcharacterMatches = 0 == memcmp(folded, &searchThing[0] + indexSearch, lenFlat);\n\t\t\t\t\tif (!characterMatches)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tposIndexDocument += widthChar;\n\t\t\t\t\tindexSearch += lenFlat;\n\t\t\t\t\tif (indexSearch >= lenSearch)\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (characterMatches && (indexSearch == static_cast<int>(lenSearch))) {\n\t\t\t\t\tif (MatchesWordOptions(word, wordStart, pos, posIndexDocument - pos)) {\n\t\t\t\t\t\t*length = posIndexDocument - pos;\n\t\t\t\t\t\treturn pos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (forward) {\n\t\t\t\t\tpos += widthFirstCharacter;\n\t\t\t\t} else {\n\t\t\t\t\tif (!NextCharacter(pos, increment))\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (dbcsCodePage) {\n\t\t\tconst size_t maxBytesCharacter = 2;\n\t\t\tconst size_t maxFoldingExpansion = 4;\n\t\t\tstd::vector<char> searchThing(lengthFind * maxBytesCharacter * maxFoldingExpansion + 1);\n\t\t\tconst int lenSearch = static_cast<int>(\n\t\t\t\tpcf->Fold(&searchThing[0], searchThing.size(), search, lengthFind));\n\t\t\twhile (forward ? (pos < endPos) : (pos >= endPos)) {\n\t\t\t\tint indexDocument = 0;\n\t\t\t\tint indexSearch = 0;\n\t\t\t\tbool characterMatches = true;\n\t\t\t\twhile (characterMatches &&\n\t\t\t\t\t((pos + indexDocument) < limitPos) &&\n\t\t\t\t\t(indexSearch < lenSearch)) {\n\t\t\t\t\tchar bytes[maxBytesCharacter + 1];\n\t\t\t\t\tbytes[0] = cb.CharAt(pos + indexDocument);\n\t\t\t\t\tconst int widthChar = IsDBCSLeadByte(bytes[0]) ? 2 : 1;\n\t\t\t\t\tif (widthChar == 2)\n\t\t\t\t\t\tbytes[1] = cb.CharAt(pos + indexDocument + 1);\n\t\t\t\t\tif ((pos + indexDocument + widthChar) > limitPos)\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tchar folded[maxBytesCharacter * maxFoldingExpansion + 1];\n\t\t\t\t\tconst int lenFlat = static_cast<int>(pcf->Fold(folded, sizeof(folded), bytes, widthChar));\n\t\t\t\t\tfolded[lenFlat] = 0;\n\t\t\t\t\t// Does folded match the buffer\n\t\t\t\t\tcharacterMatches = 0 == memcmp(folded, &searchThing[0] + indexSearch, lenFlat);\n\t\t\t\t\tindexDocument += widthChar;\n\t\t\t\t\tindexSearch += lenFlat;\n\t\t\t\t}\n\t\t\t\tif (characterMatches && (indexSearch == static_cast<int>(lenSearch))) {\n\t\t\t\t\tif (MatchesWordOptions(word, wordStart, pos, indexDocument)) {\n\t\t\t\t\t\t*length = indexDocument;\n\t\t\t\t\t\treturn pos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!NextCharacter(pos, increment))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tconst int endSearch = (startPos <= endPos) ? endPos - lengthFind + 1 : endPos;\n\t\t\tstd::vector<char> searchThing(lengthFind + 1);\n\t\t\tpcf->Fold(&searchThing[0], searchThing.size(), search, lengthFind);\n\t\t\twhile (forward ? (pos < endSearch) : (pos >= endSearch)) {\n\t\t\t\tbool found = (pos + lengthFind) <= limitPos;\n\t\t\t\tfor (int indexSearch = 0; (indexSearch < lengthFind) && found; indexSearch++) {\n\t\t\t\t\tchar ch = CharAt(pos + indexSearch);\n\t\t\t\t\tchar folded[2];\n\t\t\t\t\tpcf->Fold(folded, sizeof(folded), &ch, 1);\n\t\t\t\t\tfound = folded[0] == searchThing[indexSearch];\n\t\t\t\t}\n\t\t\t\tif (found && MatchesWordOptions(word, wordStart, pos, lengthFind)) {\n\t\t\t\t\treturn pos;\n\t\t\t\t}\n\t\t\t\tif (!NextCharacter(pos, increment))\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t//Platform::DebugPrintf(\"Not found\\n\");\n\treturn -1;\n}\n\nconst char *Document::SubstituteByPosition(const char *text, int *length) {\n\tif (regex)\n\t\treturn regex->SubstituteByPosition(this, text, length);\n\telse\n\t\treturn 0;\n}\n\nint Document::LinesTotal() const {\n\treturn cb.Lines();\n}\n\nvoid Document::SetDefaultCharClasses(bool includeWordClass) {\n    charClass.SetDefaultCharClasses(includeWordClass);\n}\n\nvoid Document::SetCharClasses(const unsigned char *chars, CharClassify::cc newCharClass) {\n    charClass.SetCharClasses(chars, newCharClass);\n}\n\nint Document::GetCharsOfClass(CharClassify::cc characterClass, unsigned char *buffer) const {\n    return charClass.GetCharsOfClass(characterClass, buffer);\n}\n\nvoid SCI_METHOD Document::StartStyling(Sci_Position position, char) {\n\tendStyled = position;\n}\n\nbool SCI_METHOD Document::SetStyleFor(Sci_Position length, char style) {\n\tif (enteredStyling != 0) {\n\t\treturn false;\n\t} else {\n\t\tenteredStyling++;\n\t\tint prevEndStyled = endStyled;\n\t\tif (cb.SetStyleFor(endStyled, length, style)) {\n\t\t\tDocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER,\n\t\t\t                   prevEndStyled, length);\n\t\t\tNotifyModified(mh);\n\t\t}\n\t\tendStyled += length;\n\t\tenteredStyling--;\n\t\treturn true;\n\t}\n}\n\nbool SCI_METHOD Document::SetStyles(Sci_Position length, const char *styles) {\n\tif (enteredStyling != 0) {\n\t\treturn false;\n\t} else {\n\t\tenteredStyling++;\n\t\tbool didChange = false;\n\t\tint startMod = 0;\n\t\tint endMod = 0;\n\t\tfor (int iPos = 0; iPos < length; iPos++, endStyled++) {\n\t\t\tPLATFORM_ASSERT(endStyled < Length());\n\t\t\tif (cb.SetStyleAt(endStyled, styles[iPos])) {\n\t\t\t\tif (!didChange) {\n\t\t\t\t\tstartMod = endStyled;\n\t\t\t\t}\n\t\t\t\tdidChange = true;\n\t\t\t\tendMod = endStyled;\n\t\t\t}\n\t\t}\n\t\tif (didChange) {\n\t\t\tDocModification mh(SC_MOD_CHANGESTYLE | SC_PERFORMED_USER,\n\t\t\t                   startMod, endMod - startMod + 1);\n\t\t\tNotifyModified(mh);\n\t\t}\n\t\tenteredStyling--;\n\t\treturn true;\n\t}\n}\n\nvoid Document::EnsureStyledTo(int pos) {\n\tif ((enteredStyling == 0) && (pos > GetEndStyled())) {\n\t\tIncrementStyleClock();\n\t\tif (pli && !pli->UseContainerLexing()) {\n\t\t\tint lineEndStyled = LineFromPosition(GetEndStyled());\n\t\t\tint endStyledTo = LineStart(lineEndStyled);\n\t\t\tpli->Colourise(endStyledTo, pos);\n\t\t} else {\n\t\t\t// Ask the watchers to style, and stop as soon as one responds.\n\t\t\tfor (std::vector<WatcherWithUserData>::iterator it = watchers.begin();\n\t\t\t\t(pos > GetEndStyled()) && (it != watchers.end()); ++it) {\n\t\t\t\tit->watcher->NotifyStyleNeeded(this, it->userData, pos);\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid Document::StyleToAdjustingLineDuration(int pos) {\n\t// Place bounds on the duration used to avoid glitches spiking it\n\t// and so causing slow styling or non-responsive scrolling\n\tconst double minDurationOneLine = 0.000001;\n\tconst double maxDurationOneLine = 0.0001;\n\n\t// Alpha value for exponential smoothing.\n\t// Most recent value contributes 25% to smoothed value.\n\tconst double alpha = 0.25;\n\n\tconst Sci_Position lineFirst = LineFromPosition(GetEndStyled());\n\tElapsedTime etStyling;\n\tEnsureStyledTo(pos);\n\tconst double durationStyling = etStyling.Duration();\n\tconst Sci_Position lineLast = LineFromPosition(GetEndStyled());\n\tif (lineLast >= lineFirst + 8) {\n\t\t// Only adjust for styling multiple lines to avoid instability\n\t\tconst double durationOneLine = durationStyling / (lineLast - lineFirst);\n\t\tdurationStyleOneLine = alpha * durationOneLine + (1.0 - alpha) * durationStyleOneLine;\n\t\tif (durationStyleOneLine < minDurationOneLine) {\n\t\t\tdurationStyleOneLine = minDurationOneLine;\n\t\t} else if (durationStyleOneLine > maxDurationOneLine) {\n\t\t\tdurationStyleOneLine = maxDurationOneLine;\n\t\t}\n\t}\n}\n\nvoid Document::LexerChanged() {\n\t// Tell the watchers the lexer has changed.\n\tfor (std::vector<WatcherWithUserData>::iterator it = watchers.begin(); it != watchers.end(); ++it) {\n\t\tit->watcher->NotifyLexerChanged(this, it->userData);\n\t}\n}\n\nint SCI_METHOD Document::SetLineState(Sci_Position line, int state) {\n\tint statePrevious = static_cast<LineState *>(perLineData[ldState])->SetLineState(line, state);\n\tif (state != statePrevious) {\n\t\tDocModification mh(SC_MOD_CHANGELINESTATE, LineStart(line), 0, 0, 0, line);\n\t\tNotifyModified(mh);\n\t}\n\treturn statePrevious;\n}\n\nint SCI_METHOD Document::GetLineState(Sci_Position line) const {\n\treturn static_cast<LineState *>(perLineData[ldState])->GetLineState(line);\n}\n\nint Document::GetMaxLineState() {\n\treturn static_cast<LineState *>(perLineData[ldState])->GetMaxLineState();\n}\n\nvoid SCI_METHOD Document::ChangeLexerState(Sci_Position start, Sci_Position end) {\n\tDocModification mh(SC_MOD_LEXERSTATE, start, end-start, 0, 0, 0);\n\tNotifyModified(mh);\n}\n\nStyledText Document::MarginStyledText(int line) const {\n\tLineAnnotation *pla = static_cast<LineAnnotation *>(perLineData[ldMargin]);\n\treturn StyledText(pla->Length(line), pla->Text(line),\n\t\tpla->MultipleStyles(line), pla->Style(line), pla->Styles(line));\n}\n\nvoid Document::MarginSetText(int line, const char *text) {\n\tstatic_cast<LineAnnotation *>(perLineData[ldMargin])->SetText(line, text);\n\tDocModification mh(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line);\n\tNotifyModified(mh);\n}\n\nvoid Document::MarginSetStyle(int line, int style) {\n\tstatic_cast<LineAnnotation *>(perLineData[ldMargin])->SetStyle(line, style);\n\tNotifyModified(DocModification(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line));\n}\n\nvoid Document::MarginSetStyles(int line, const unsigned char *styles) {\n\tstatic_cast<LineAnnotation *>(perLineData[ldMargin])->SetStyles(line, styles);\n\tNotifyModified(DocModification(SC_MOD_CHANGEMARGIN, LineStart(line), 0, 0, 0, line));\n}\n\nvoid Document::MarginClearAll() {\n\tint maxEditorLine = LinesTotal();\n\tfor (int l=0; l<maxEditorLine; l++)\n\t\tMarginSetText(l, 0);\n\t// Free remaining data\n\tstatic_cast<LineAnnotation *>(perLineData[ldMargin])->ClearAll();\n}\n\nStyledText Document::AnnotationStyledText(int line) const {\n\tLineAnnotation *pla = static_cast<LineAnnotation *>(perLineData[ldAnnotation]);\n\treturn StyledText(pla->Length(line), pla->Text(line),\n\t\tpla->MultipleStyles(line), pla->Style(line), pla->Styles(line));\n}\n\nvoid Document::AnnotationSetText(int line, const char *text) {\n\tif (line >= 0 && line < LinesTotal()) {\n\t\tconst int linesBefore = AnnotationLines(line);\n\t\tstatic_cast<LineAnnotation *>(perLineData[ldAnnotation])->SetText(line, text);\n\t\tconst int linesAfter = AnnotationLines(line);\n\t\tDocModification mh(SC_MOD_CHANGEANNOTATION, LineStart(line), 0, 0, 0, line);\n\t\tmh.annotationLinesAdded = linesAfter - linesBefore;\n\t\tNotifyModified(mh);\n\t}\n}\n\nvoid Document::AnnotationSetStyle(int line, int style) {\n\tstatic_cast<LineAnnotation *>(perLineData[ldAnnotation])->SetStyle(line, style);\n\tDocModification mh(SC_MOD_CHANGEANNOTATION, LineStart(line), 0, 0, 0, line);\n\tNotifyModified(mh);\n}\n\nvoid Document::AnnotationSetStyles(int line, const unsigned char *styles) {\n\tif (line >= 0 && line < LinesTotal()) {\n\t\tstatic_cast<LineAnnotation *>(perLineData[ldAnnotation])->SetStyles(line, styles);\n\t}\n}\n\nint Document::AnnotationLines(int line) const {\n\treturn static_cast<LineAnnotation *>(perLineData[ldAnnotation])->Lines(line);\n}\n\nvoid Document::AnnotationClearAll() {\n\tint maxEditorLine = LinesTotal();\n\tfor (int l=0; l<maxEditorLine; l++)\n\t\tAnnotationSetText(l, 0);\n\t// Free remaining data\n\tstatic_cast<LineAnnotation *>(perLineData[ldAnnotation])->ClearAll();\n}\n\nvoid Document::IncrementStyleClock() {\n\tstyleClock = (styleClock + 1) % 0x100000;\n}\n\nvoid SCI_METHOD Document::DecorationFillRange(Sci_Position position, int value, Sci_Position fillLength) {\n\tif (decorations.FillRange(position, value, fillLength)) {\n\t\tDocModification mh(SC_MOD_CHANGEINDICATOR | SC_PERFORMED_USER,\n\t\t\t\t\t\t\tposition, fillLength);\n\t\tNotifyModified(mh);\n\t}\n}\n\nbool Document::AddWatcher(DocWatcher *watcher, void *userData) {\n\tWatcherWithUserData wwud(watcher, userData);\n\tstd::vector<WatcherWithUserData>::iterator it =\n\t\tstd::find(watchers.begin(), watchers.end(), wwud);\n\tif (it != watchers.end())\n\t\treturn false;\n\twatchers.push_back(wwud);\n\treturn true;\n}\n\nbool Document::RemoveWatcher(DocWatcher *watcher, void *userData) {\n\tstd::vector<WatcherWithUserData>::iterator it =\n\t\tstd::find(watchers.begin(), watchers.end(), WatcherWithUserData(watcher, userData));\n\tif (it != watchers.end()) {\n\t\twatchers.erase(it);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nvoid Document::NotifyModifyAttempt() {\n\tfor (std::vector<WatcherWithUserData>::iterator it = watchers.begin(); it != watchers.end(); ++it) {\n\t\tit->watcher->NotifyModifyAttempt(this, it->userData);\n\t}\n}\n\nvoid Document::NotifySavePoint(bool atSavePoint) {\n\tfor (std::vector<WatcherWithUserData>::iterator it = watchers.begin(); it != watchers.end(); ++it) {\n\t\tit->watcher->NotifySavePoint(this, it->userData, atSavePoint);\n\t}\n}\n\nvoid Document::NotifyModified(DocModification mh) {\n\tif (mh.modificationType & SC_MOD_INSERTTEXT) {\n\t\tdecorations.InsertSpace(mh.position, mh.length);\n\t} else if (mh.modificationType & SC_MOD_DELETETEXT) {\n\t\tdecorations.DeleteRange(mh.position, mh.length);\n\t}\n\tfor (std::vector<WatcherWithUserData>::iterator it = watchers.begin(); it != watchers.end(); ++it) {\n\t\tit->watcher->NotifyModified(this, mh, it->userData);\n\t}\n}\n\n// Used for word part navigation.\nstatic bool IsASCIIPunctuationCharacter(unsigned int ch) {\n\tswitch (ch) {\n\tcase '!':\n\tcase '\"':\n\tcase '#':\n\tcase '$':\n\tcase '%':\n\tcase '&':\n\tcase '\\'':\n\tcase '(':\n\tcase ')':\n\tcase '*':\n\tcase '+':\n\tcase ',':\n\tcase '-':\n\tcase '.':\n\tcase '/':\n\tcase ':':\n\tcase ';':\n\tcase '<':\n\tcase '=':\n\tcase '>':\n\tcase '?':\n\tcase '@':\n\tcase '[':\n\tcase '\\\\':\n\tcase ']':\n\tcase '^':\n\tcase '_':\n\tcase '`':\n\tcase '{':\n\tcase '|':\n\tcase '}':\n\tcase '~':\n\t\treturn true;\n\tdefault:\n\t\treturn false;\n\t}\n}\n\nbool Document::IsWordPartSeparator(unsigned int ch) const {\n\treturn (WordCharacterClass(ch) == CharClassify::ccWord) && IsASCIIPunctuationCharacter(ch);\n}\n\nint Document::WordPartLeft(int pos) const {\n\tif (pos > 0) {\n\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\tCharacterExtracted ceStart = CharacterAfter(pos);\n\t\tif (IsWordPartSeparator(ceStart.character)) {\n\t\t\twhile (pos > 0 && IsWordPartSeparator(CharacterAfter(pos).character)) {\n\t\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\t\t}\n\t\t}\n\t\tif (pos > 0) {\n\t\t\tceStart = CharacterAfter(pos);\n\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\t\tif (IsLowerCase(ceStart.character)) {\n\t\t\t\twhile (pos > 0 && IsLowerCase(CharacterAfter(pos).character))\n\t\t\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\t\t\tif (!IsUpperCase(CharacterAfter(pos).character) && !IsLowerCase(CharacterAfter(pos).character))\n\t\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t\t} else if (IsUpperCase(ceStart.character)) {\n\t\t\t\twhile (pos > 0 && IsUpperCase(CharacterAfter(pos).character))\n\t\t\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\t\t\tif (!IsUpperCase(CharacterAfter(pos).character))\n\t\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t\t} else if (IsADigit(ceStart.character)) {\n\t\t\t\twhile (pos > 0 && IsADigit(CharacterAfter(pos).character))\n\t\t\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\t\t\tif (!IsADigit(CharacterAfter(pos).character))\n\t\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t\t} else if (IsASCIIPunctuationCharacter(ceStart.character)) {\n\t\t\t\twhile (pos > 0 && IsASCIIPunctuationCharacter(CharacterAfter(pos).character))\n\t\t\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\t\t\tif (!IsASCIIPunctuationCharacter(CharacterAfter(pos).character))\n\t\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t\t} else if (isspacechar(ceStart.character)) {\n\t\t\t\twhile (pos > 0 && isspacechar(CharacterAfter(pos).character))\n\t\t\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\t\t\tif (!isspacechar(CharacterAfter(pos).character))\n\t\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t\t} else if (!IsASCII(ceStart.character)) {\n\t\t\t\twhile (pos > 0 && !IsASCII(CharacterAfter(pos).character))\n\t\t\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t\t\t\tif (IsASCII(CharacterAfter(pos).character))\n\t\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t\t} else {\n\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t\t}\n\t\t}\n\t}\n\treturn pos;\n}\n\nint Document::WordPartRight(int pos) const {\n\tCharacterExtracted ceStart = CharacterAfter(pos);\n\tconst int length = Length();\n\tif (IsWordPartSeparator(ceStart.character)) {\n\t\twhile (pos < length && IsWordPartSeparator(CharacterAfter(pos).character))\n\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\tceStart = CharacterAfter(pos);\n\t}\n\tif (!IsASCII(ceStart.character)) {\n\t\twhile (pos < length && !IsASCII(CharacterAfter(pos).character))\n\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t} else if (IsLowerCase(ceStart.character)) {\n\t\twhile (pos < length && IsLowerCase(CharacterAfter(pos).character))\n\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t} else if (IsUpperCase(ceStart.character)) {\n\t\tif (IsLowerCase(CharacterAfter(pos + ceStart.widthBytes).character)) {\n\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t\twhile (pos < length && IsLowerCase(CharacterAfter(pos).character))\n\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t} else {\n\t\t\twhile (pos < length && IsUpperCase(CharacterAfter(pos).character))\n\t\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t\t}\n\t\tif (IsLowerCase(CharacterAfter(pos).character) && IsUpperCase(CharacterBefore(pos).character))\n\t\t\tpos -= CharacterBefore(pos).widthBytes;\n\t} else if (IsADigit(ceStart.character)) {\n\t\twhile (pos < length && IsADigit(CharacterAfter(pos).character))\n\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t} else if (IsASCIIPunctuationCharacter(ceStart.character)) {\n\t\twhile (pos < length && IsASCIIPunctuationCharacter(CharacterAfter(pos).character))\n\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t} else if (isspacechar(ceStart.character)) {\n\t\twhile (pos < length && isspacechar(CharacterAfter(pos).character))\n\t\t\tpos += CharacterAfter(pos).widthBytes;\n\t} else {\n\t\tpos += CharacterAfter(pos).widthBytes;\n\t}\n\treturn pos;\n}\n\nstatic bool IsLineEndChar(char c) {\n\treturn (c == '\\n' || c == '\\r');\n}\n\nint Document::ExtendStyleRange(int pos, int delta, bool singleLine) {\n\tint sStart = cb.StyleAt(pos);\n\tif (delta < 0) {\n\t\twhile (pos > 0 && (cb.StyleAt(pos) == sStart) && (!singleLine || !IsLineEndChar(cb.CharAt(pos))))\n\t\t\tpos--;\n\t\tpos++;\n\t} else {\n\t\twhile (pos < (Length()) && (cb.StyleAt(pos) == sStart) && (!singleLine || !IsLineEndChar(cb.CharAt(pos))))\n\t\t\tpos++;\n\t}\n\treturn pos;\n}\n\nstatic char BraceOpposite(char ch) {\n\tswitch (ch) {\n\tcase '(':\n\t\treturn ')';\n\tcase ')':\n\t\treturn '(';\n\tcase '[':\n\t\treturn ']';\n\tcase ']':\n\t\treturn '[';\n\tcase '{':\n\t\treturn '}';\n\tcase '}':\n\t\treturn '{';\n\tcase '<':\n\t\treturn '>';\n\tcase '>':\n\t\treturn '<';\n\tdefault:\n\t\treturn '\\0';\n\t}\n}\n\n// TODO: should be able to extend styled region to find matching brace\nint Document::BraceMatch(int position, int /*maxReStyle*/) {\n\tchar chBrace = CharAt(position);\n\tchar chSeek = BraceOpposite(chBrace);\n\tif (chSeek == '\\0')\n\t\treturn - 1;\n\tconst int styBrace = StyleIndexAt(position);\n\tint direction = -1;\n\tif (chBrace == '(' || chBrace == '[' || chBrace == '{' || chBrace == '<')\n\t\tdirection = 1;\n\tint depth = 1;\n\tposition = NextPosition(position, direction);\n\twhile ((position >= 0) && (position < Length())) {\n\t\tchar chAtPos = CharAt(position);\n\t\tconst int styAtPos = StyleIndexAt(position);\n\t\tif ((position > GetEndStyled()) || (styAtPos == styBrace)) {\n\t\t\tif (chAtPos == chBrace)\n\t\t\t\tdepth++;\n\t\t\tif (chAtPos == chSeek)\n\t\t\t\tdepth--;\n\t\t\tif (depth == 0)\n\t\t\t\treturn position;\n\t\t}\n\t\tint positionBeforeMove = position;\n\t\tposition = NextPosition(position, direction);\n\t\tif (position == positionBeforeMove)\n\t\t\tbreak;\n\t}\n\treturn - 1;\n}\n\n/**\n * Implementation of RegexSearchBase for the default built-in regular expression engine\n */\nclass BuiltinRegex : public RegexSearchBase {\npublic:\n\texplicit BuiltinRegex(CharClassify *charClassTable) : search(charClassTable) {}\n\n\tvirtual ~BuiltinRegex() {\n\t}\n\n\tvirtual long FindText(Document *doc, int minPos, int maxPos, const char *s,\n                        bool caseSensitive, bool word, bool wordStart, int flags,\n                        int *length);\n\n\tvirtual const char *SubstituteByPosition(Document *doc, const char *text, int *length);\n\nprivate:\n\tRESearch search;\n\tstd::string substituted;\n};\n\nnamespace {\n\n/**\n* RESearchRange keeps track of search range.\n*/\nclass RESearchRange {\npublic:\n\tconst Document *doc;\n\tint increment;\n\tint startPos;\n\tint endPos;\n\tint lineRangeStart;\n\tint lineRangeEnd;\n\tint lineRangeBreak;\n\tRESearchRange(const Document *doc_, int minPos, int maxPos) : doc(doc_) {\n\t\tincrement = (minPos <= maxPos) ? 1 : -1;\n\n\t\t// Range endpoints should not be inside DBCS characters, but just in case, move them.\n\t\tstartPos = doc->MovePositionOutsideChar(minPos, 1, false);\n\t\tendPos = doc->MovePositionOutsideChar(maxPos, 1, false);\n\n\t\tlineRangeStart = doc->LineFromPosition(startPos);\n\t\tlineRangeEnd = doc->LineFromPosition(endPos);\n\t\tif ((increment == 1) &&\n\t\t\t(startPos >= doc->LineEnd(lineRangeStart)) &&\n\t\t\t(lineRangeStart < lineRangeEnd)) {\n\t\t\t// the start position is at end of line or between line end characters.\n\t\t\tlineRangeStart++;\n\t\t\tstartPos = doc->LineStart(lineRangeStart);\n\t\t} else if ((increment == -1) &&\n\t\t\t(startPos <= doc->LineStart(lineRangeStart)) &&\n\t\t\t(lineRangeStart > lineRangeEnd)) {\n\t\t\t// the start position is at beginning of line.\n\t\t\tlineRangeStart--;\n\t\t\tstartPos = doc->LineEnd(lineRangeStart);\n\t\t}\n\t\tlineRangeBreak = lineRangeEnd + increment;\n\t}\n\tRange LineRange(int line) const {\n\t\tRange range(doc->LineStart(line), doc->LineEnd(line));\n\t\tif (increment == 1) {\n\t\t\tif (line == lineRangeStart)\n\t\t\t\trange.start = startPos;\n\t\t\tif (line == lineRangeEnd)\n\t\t\t\trange.end = endPos;\n\t\t} else {\n\t\t\tif (line == lineRangeEnd)\n\t\t\t\trange.start = endPos;\n\t\t\tif (line == lineRangeStart)\n\t\t\t\trange.end = startPos;\n\t\t}\n\t\treturn range;\n\t}\n};\n\n// Define a way for the Regular Expression code to access the document\nclass DocumentIndexer : public CharacterIndexer {\n\tDocument *pdoc;\n\tint end;\npublic:\n\tDocumentIndexer(Document *pdoc_, int end_) :\n\t\tpdoc(pdoc_), end(end_) {\n\t}\n\n\tvirtual ~DocumentIndexer() {\n\t}\n\n\tvirtual char CharAt(int index) {\n\t\tif (index < 0 || index >= end)\n\t\t\treturn 0;\n\t\telse\n\t\t\treturn pdoc->CharAt(index);\n\t}\n};\n\n#ifndef NO_CXX11_REGEX\n\nclass ByteIterator : public std::iterator<std::bidirectional_iterator_tag, char> {\npublic:\n\tconst Document *doc;\n\tPosition position;\n\tByteIterator(const Document *doc_ = 0, Position position_ = 0) : doc(doc_), position(position_) {\n\t}\n\tByteIterator(const ByteIterator &other) NOEXCEPT {\n\t\tdoc = other.doc;\n\t\tposition = other.position;\n\t}\n\tByteIterator &operator=(const ByteIterator &other) {\n\t\tif (this != &other) {\n\t\t\tdoc = other.doc;\n\t\t\tposition = other.position;\n\t\t}\n\t\treturn *this;\n\t}\n\tchar operator*() const {\n\t\treturn doc->CharAt(position);\n\t}\n\tByteIterator &operator++() {\n\t\tposition++;\n\t\treturn *this;\n\t}\n\tByteIterator operator++(int) {\n\t\tByteIterator retVal(*this);\n\t\tposition++;\n\t\treturn retVal;\n\t}\n\tByteIterator &operator--() {\n\t\tposition--;\n\t\treturn *this;\n\t}\n\tbool operator==(const ByteIterator &other) const {\n\t\treturn doc == other.doc && position == other.position;\n\t}\n\tbool operator!=(const ByteIterator &other) const {\n\t\treturn doc != other.doc || position != other.position;\n\t}\n\tint Pos() const {\n\t\treturn position;\n\t}\n\tint PosRoundUp() const {\n\t\treturn position;\n\t}\n};\n\n// On Windows, wchar_t is 16 bits wide and on Unix it is 32 bits wide.\n// Would be better to use sizeof(wchar_t) or similar to differentiate\n// but easier for now to hard-code platforms.\n// C++11 has char16_t and char32_t but neither Clang nor Visual C++\n// appear to allow specializing basic_regex over these.\n\n#ifdef _WIN32\n#define WCHAR_T_IS_16 1\n#else\n#define WCHAR_T_IS_16 0\n#endif\n\n#if WCHAR_T_IS_16\n\n// On Windows, report non-BMP characters as 2 separate surrogates as that\n// matches wregex since it is based on wchar_t.\nclass UTF8Iterator : public std::iterator<std::bidirectional_iterator_tag, wchar_t> {\n\t// These 3 fields determine the iterator position and are used for comparisons\n\tconst Document *doc;\n\tPosition position;\n\tsize_t characterIndex;\n\t// Remaining fields are derived from the determining fields so are excluded in comparisons\n\tunsigned int lenBytes;\n\tsize_t lenCharacters;\n\twchar_t buffered[2];\npublic:\n\tUTF8Iterator(const Document *doc_ = 0, Position position_ = 0) :\n\t\tdoc(doc_), position(position_), characterIndex(0), lenBytes(0), lenCharacters(0) {\n\t\tbuffered[0] = 0;\n\t\tbuffered[1] = 0;\n\t\tif (doc) {\n\t\t\tReadCharacter();\n\t\t}\n\t}\n\tUTF8Iterator(const UTF8Iterator &other) {\n\t\tdoc = other.doc;\n\t\tposition = other.position;\n\t\tcharacterIndex = other.characterIndex;\n\t\tlenBytes = other.lenBytes;\n\t\tlenCharacters = other.lenCharacters;\n\t\tbuffered[0] = other.buffered[0];\n\t\tbuffered[1] = other.buffered[1];\n\t}\n\tUTF8Iterator &operator=(const UTF8Iterator &other) {\n\t\tif (this != &other) {\n\t\t\tdoc = other.doc;\n\t\t\tposition = other.position;\n\t\t\tcharacterIndex = other.characterIndex;\n\t\t\tlenBytes = other.lenBytes;\n\t\t\tlenCharacters = other.lenCharacters;\n\t\t\tbuffered[0] = other.buffered[0];\n\t\t\tbuffered[1] = other.buffered[1];\n\t\t}\n\t\treturn *this;\n\t}\n\twchar_t operator*() const {\n\t\tassert(lenCharacters != 0);\n\t\treturn buffered[characterIndex];\n\t}\n\tUTF8Iterator &operator++() {\n\t\tif ((characterIndex + 1) < (lenCharacters)) {\n\t\t\tcharacterIndex++;\n\t\t} else {\n\t\t\tposition += lenBytes;\n\t\t\tReadCharacter();\n\t\t\tcharacterIndex = 0;\n\t\t}\n\t\treturn *this;\n\t}\n\tUTF8Iterator operator++(int) {\n\t\tUTF8Iterator retVal(*this);\n\t\tif ((characterIndex + 1) < (lenCharacters)) {\n\t\t\tcharacterIndex++;\n\t\t} else {\n\t\t\tposition += lenBytes;\n\t\t\tReadCharacter();\n\t\t\tcharacterIndex = 0;\n\t\t}\n\t\treturn retVal;\n\t}\n\tUTF8Iterator &operator--() {\n\t\tif (characterIndex) {\n\t\t\tcharacterIndex--;\n\t\t} else {\n\t\t\tposition = doc->NextPosition(position, -1);\n\t\t\tReadCharacter();\n\t\t\tcharacterIndex = lenCharacters - 1;\n\t\t}\n\t\treturn *this;\n\t}\n\tbool operator==(const UTF8Iterator &other) const {\n\t\t// Only test the determining fields, not the character widths and values derived from this\n\t\treturn doc == other.doc &&\n\t\t\tposition == other.position &&\n\t\t\tcharacterIndex == other.characterIndex;\n\t}\n\tbool operator!=(const UTF8Iterator &other) const {\n\t\t// Only test the determining fields, not the character widths and values derived from this\n\t\treturn doc != other.doc ||\n\t\t\tposition != other.position ||\n\t\t\tcharacterIndex != other.characterIndex;\n\t}\n\tint Pos() const {\n\t\treturn position;\n\t}\n\tint PosRoundUp() const {\n\t\tif (characterIndex)\n\t\t\treturn position + lenBytes;\t// Force to end of character\n\t\telse\n\t\t\treturn position;\n\t}\nprivate:\n\tvoid ReadCharacter() {\n\t\tDocument::CharacterExtracted charExtracted = doc->ExtractCharacter(position);\n\t\tlenBytes = charExtracted.widthBytes;\n\t\tif (charExtracted.character == unicodeReplacementChar) {\n\t\t\tlenCharacters = 1;\n\t\t\tbuffered[0] = static_cast<wchar_t>(charExtracted.character);\n\t\t} else {\n\t\t\tlenCharacters = UTF16FromUTF32Character(charExtracted.character, buffered);\n\t\t}\n\t}\n};\n\n#else\n\n// On Unix, report non-BMP characters as single characters\n\nclass UTF8Iterator : public std::iterator<std::bidirectional_iterator_tag, wchar_t> {\n\tconst Document *doc;\n\tPosition position;\npublic:\n\tUTF8Iterator(const Document *doc_=0, Position position_=0) : doc(doc_), position(position_) {\n\t}\n\tUTF8Iterator(const UTF8Iterator &other) NOEXCEPT {\n\t\tdoc = other.doc;\n\t\tposition = other.position;\n\t}\n\tUTF8Iterator &operator=(const UTF8Iterator &other) {\n\t\tif (this != &other) {\n\t\t\tdoc = other.doc;\n\t\t\tposition = other.position;\n\t\t}\n\t\treturn *this;\n\t}\n\twchar_t operator*() const {\n\t\tDocument::CharacterExtracted charExtracted = doc->ExtractCharacter(position);\n\t\treturn charExtracted.character;\n\t}\n\tUTF8Iterator &operator++() {\n\t\tposition = doc->NextPosition(position, 1);\n\t\treturn *this;\n\t}\n\tUTF8Iterator operator++(int) {\n\t\tUTF8Iterator retVal(*this);\n\t\tposition = doc->NextPosition(position, 1);\n\t\treturn retVal;\n\t}\n\tUTF8Iterator &operator--() {\n\t\tposition = doc->NextPosition(position, -1);\n\t\treturn *this;\n\t}\n\tbool operator==(const UTF8Iterator &other) const {\n\t\treturn doc == other.doc && position == other.position;\n\t}\n\tbool operator!=(const UTF8Iterator &other) const {\n\t\treturn doc != other.doc || position != other.position;\n\t}\n\tint Pos() const {\n\t\treturn position;\n\t}\n\tint PosRoundUp() const {\n\t\treturn position;\n\t}\n};\n\n#endif\n\nstd::regex_constants::match_flag_type MatchFlags(const Document *doc, int startPos, int endPos) {\n\tstd::regex_constants::match_flag_type flagsMatch = std::regex_constants::match_default;\n\tif (!doc->IsLineStartPosition(startPos))\n\t\tflagsMatch |= std::regex_constants::match_not_bol;\n\tif (!doc->IsLineEndPosition(endPos))\n\t\tflagsMatch |= std::regex_constants::match_not_eol;\n\treturn flagsMatch;\n}\n\ntemplate<typename Iterator, typename Regex>\nbool MatchOnLines(const Document *doc, const Regex &regexp, const RESearchRange &resr, RESearch &search) {\n\tbool matched = false;\n\tstd::match_results<Iterator> match;\n\n\t// MSVC and libc++ have problems with ^ and $ matching line ends inside a range\n\t// If they didn't then the line by line iteration could be removed for the forwards\n\t// case and replaced with the following 4 lines:\n\t//\tIterator uiStart(doc, startPos);\n\t//\tIterator uiEnd(doc, endPos);\n\t//\tflagsMatch = MatchFlags(doc, startPos, endPos);\n\t//\tmatched = std::regex_search(uiStart, uiEnd, match, regexp, flagsMatch);\n\n\t// Line by line.\n\tfor (int line = resr.lineRangeStart; line != resr.lineRangeBreak; line += resr.increment) {\n\t\tconst Range lineRange = resr.LineRange(line);\n\t\tIterator itStart(doc, lineRange.start);\n\t\tIterator itEnd(doc, lineRange.end);\n\t\tstd::regex_constants::match_flag_type flagsMatch = MatchFlags(doc, lineRange.start, lineRange.end);\n\t\tmatched = std::regex_search(itStart, itEnd, match, regexp, flagsMatch);\n\t\t// Check for the last match on this line.\n\t\tif (matched) {\n\t\t\tif (resr.increment == -1) {\n\t\t\t\twhile (matched) {\n\t\t\t\t\tIterator itNext(doc, match[0].second.PosRoundUp());\n\t\t\t\t\tflagsMatch = MatchFlags(doc, itNext.Pos(), lineRange.end);\n\t\t\t\t\tstd::match_results<Iterator> matchNext;\n\t\t\t\t\tmatched = std::regex_search(itNext, itEnd, matchNext, regexp, flagsMatch);\n\t\t\t\t\tif (matched) {\n\t\t\t\t\t\tif (match[0].first == match[0].second) {\n\t\t\t\t\t\t\t// Empty match means failure so exit\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = matchNext;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmatched = true;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (matched) {\n\t\tfor (size_t co = 0; co < match.size(); co++) {\n\t\t\tsearch.bopat[co] = match[co].first.Pos();\n\t\t\tsearch.eopat[co] = match[co].second.PosRoundUp();\n\t\t\tSci::Position lenMatch = search.eopat[co] - search.bopat[co];\n\t\t\tsearch.pat[co].resize(lenMatch);\n\t\t\tfor (Sci::Position iPos = 0; iPos < lenMatch; iPos++) {\n\t\t\t\tsearch.pat[co][iPos] = doc->CharAt(iPos + search.bopat[co]);\n\t\t\t}\n\t\t}\n\t}\n\treturn matched;\n}\n\nlong Cxx11RegexFindText(Document *doc, int minPos, int maxPos, const char *s,\n\tbool caseSensitive, int *length, RESearch &search) {\n\tconst RESearchRange resr(doc, minPos, maxPos);\n\ttry {\n\t\t//ElapsedTime et;\n\t\tstd::regex::flag_type flagsRe = std::regex::ECMAScript;\n\t\t// Flags that apper to have no effect:\n\t\t// | std::regex::collate | std::regex::extended;\n\t\tif (!caseSensitive)\n\t\t\tflagsRe = flagsRe | std::regex::icase;\n\n\t\t// Clear the RESearch so can fill in matches\n\t\tsearch.Clear();\n\n\t\tbool matched = false;\n\t\tif (SC_CP_UTF8 == doc->dbcsCodePage) {\n\t\t\tunsigned int lenS = static_cast<unsigned int>(strlen(s));\n\t\t\tstd::vector<wchar_t> ws(lenS + 1);\n#if WCHAR_T_IS_16\n\t\t\tsize_t outLen = UTF16FromUTF8(s, lenS, &ws[0], lenS);\n#else\n\t\t\tsize_t outLen = UTF32FromUTF8(s, lenS, reinterpret_cast<unsigned int *>(&ws[0]), lenS);\n#endif\n\t\t\tws[outLen] = 0;\n\t\t\tstd::wregex regexp;\n#if defined(__APPLE__)\n\t\t\t// Using a UTF-8 locale doesn't change to Unicode over a byte buffer so '.'\n\t\t\t// is one byte not one character.\n\t\t\t// However, on OS X this makes wregex act as Unicode\n\t\t\tstd::locale localeU(\"en_US.UTF-8\");\n\t\t\tregexp.imbue(localeU);\n#endif\n\t\t\tregexp.assign(&ws[0], flagsRe);\n\t\t\tmatched = MatchOnLines<UTF8Iterator>(doc, regexp, resr, search);\n\n\t\t} else {\n\t\t\tstd::regex regexp;\n\t\t\tregexp.assign(s, flagsRe);\n\t\t\tmatched = MatchOnLines<ByteIterator>(doc, regexp, resr, search);\n\t\t}\n\n\t\tint posMatch = -1;\n\t\tif (matched) {\n\t\t\tposMatch = search.bopat[0];\n\t\t\t*length = search.eopat[0] - search.bopat[0];\n\t\t}\n\t\t// Example - search in doc/ScintillaHistory.html for\n\t\t// [[:upper:]]eta[[:space:]]\n\t\t// On MacBook, normally around 1 second but with locale imbued -> 14 seconds.\n\t\t//double durSearch = et.Duration(true);\n\t\t//Platform::DebugPrintf(\"Search:%9.6g \\n\", durSearch);\n\t\treturn posMatch;\n\t} catch (std::regex_error &) {\n\t\t// Failed to create regular expression\n\t\tthrow RegexError();\n\t} catch (...) {\n\t\t// Failed in some other way\n\t\treturn -1;\n\t}\n}\n\n#endif\n\n}\n\nlong BuiltinRegex::FindText(Document *doc, int minPos, int maxPos, const char *s,\n                        bool caseSensitive, bool, bool, int flags,\n                        int *length) {\n\n#ifndef NO_CXX11_REGEX\n\tif (flags & SCFIND_CXX11REGEX) {\n\t\t\treturn Cxx11RegexFindText(doc, minPos, maxPos, s,\n\t\t\tcaseSensitive, length, search);\n\t}\n#endif\n\n\tconst RESearchRange resr(doc, minPos, maxPos);\n\n\tconst bool posix = (flags & SCFIND_POSIX) != 0;\n\n\tconst char *errmsg = search.Compile(s, *length, caseSensitive, posix);\n\tif (errmsg) {\n\t\treturn -1;\n\t}\n\t// Find a variable in a property file: \\$(\\([A-Za-z0-9_.]+\\))\n\t// Replace first '.' with '-' in each property file variable reference:\n\t//     Search: \\$(\\([A-Za-z0-9_-]+\\)\\.\\([A-Za-z0-9_.]+\\))\n\t//     Replace: $(\\1-\\2)\n\tint pos = -1;\n\tint lenRet = 0;\n\tconst char searchEnd = s[*length - 1];\n\tconst char searchEndPrev = (*length > 1) ? s[*length - 2] : '\\0';\n\tfor (int line = resr.lineRangeStart; line != resr.lineRangeBreak; line += resr.increment) {\n\t\tint startOfLine = doc->LineStart(line);\n\t\tint endOfLine = doc->LineEnd(line);\n\t\tif (resr.increment == 1) {\n\t\t\tif (line == resr.lineRangeStart) {\n\t\t\t\tif ((resr.startPos != startOfLine) && (s[0] == '^'))\n\t\t\t\t\tcontinue;\t// Can't match start of line if start position after start of line\n\t\t\t\tstartOfLine = resr.startPos;\n\t\t\t}\n\t\t\tif (line == resr.lineRangeEnd) {\n\t\t\t\tif ((resr.endPos != endOfLine) && (searchEnd == '$') && (searchEndPrev != '\\\\'))\n\t\t\t\t\tcontinue;\t// Can't match end of line if end position before end of line\n\t\t\t\tendOfLine = resr.endPos;\n\t\t\t}\n\t\t} else {\n\t\t\tif (line == resr.lineRangeEnd) {\n\t\t\t\tif ((resr.endPos != startOfLine) && (s[0] == '^'))\n\t\t\t\t\tcontinue;\t// Can't match start of line if end position after start of line\n\t\t\t\tstartOfLine = resr.endPos;\n\t\t\t}\n\t\t\tif (line == resr.lineRangeStart) {\n\t\t\t\tif ((resr.startPos != endOfLine) && (searchEnd == '$') && (searchEndPrev != '\\\\'))\n\t\t\t\t\tcontinue;\t// Can't match end of line if start position before end of line\n\t\t\t\tendOfLine = resr.startPos;\n\t\t\t}\n\t\t}\n\n\t\tDocumentIndexer di(doc, endOfLine);\n\t\tint success = search.Execute(di, startOfLine, endOfLine);\n\t\tif (success) {\n\t\t\tpos = search.bopat[0];\n\t\t\t// Ensure only whole characters selected\n\t\t\tsearch.eopat[0] = doc->MovePositionOutsideChar(search.eopat[0], 1, false);\n\t\t\tlenRet = search.eopat[0] - search.bopat[0];\n\t\t\t// There can be only one start of a line, so no need to look for last match in line\n\t\t\tif ((resr.increment == -1) && (s[0] != '^')) {\n\t\t\t\t// Check for the last match on this line.\n\t\t\t\tint repetitions = 1000;\t// Break out of infinite loop\n\t\t\t\twhile (success && (search.eopat[0] <= endOfLine) && (repetitions--)) {\n\t\t\t\t\tsuccess = search.Execute(di, pos+1, endOfLine);\n\t\t\t\t\tif (success) {\n\t\t\t\t\t\tif (search.eopat[0] <= minPos) {\n\t\t\t\t\t\t\tpos = search.bopat[0];\n\t\t\t\t\t\t\tlenRet = search.eopat[0] - search.bopat[0];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsuccess = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t}\n\t*length = lenRet;\n\treturn pos;\n}\n\nconst char *BuiltinRegex::SubstituteByPosition(Document *doc, const char *text, int *length) {\n\tsubstituted.clear();\n\tDocumentIndexer di(doc, doc->Length());\n\tsearch.GrabMatches(di);\n\tfor (int j = 0; j < *length; j++) {\n\t\tif (text[j] == '\\\\') {\n\t\t\tif (text[j + 1] >= '0' && text[j + 1] <= '9') {\n\t\t\t\tunsigned int patNum = text[j + 1] - '0';\n\t\t\t\tunsigned int len = search.eopat[patNum] - search.bopat[patNum];\n\t\t\t\tif (!search.pat[patNum].empty())\t// Will be null if try for a match that did not occur\n\t\t\t\t\tsubstituted.append(search.pat[patNum].c_str(), len);\n\t\t\t\tj++;\n\t\t\t} else {\n\t\t\t\tj++;\n\t\t\t\tswitch (text[j]) {\n\t\t\t\tcase 'a':\n\t\t\t\t\tsubstituted.push_back('\\a');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'b':\n\t\t\t\t\tsubstituted.push_back('\\b');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'f':\n\t\t\t\t\tsubstituted.push_back('\\f');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'n':\n\t\t\t\t\tsubstituted.push_back('\\n');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'r':\n\t\t\t\t\tsubstituted.push_back('\\r');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 't':\n\t\t\t\t\tsubstituted.push_back('\\t');\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'v':\n\t\t\t\t\tsubstituted.push_back('\\v');\n\t\t\t\t\tbreak;\n\t\t\t\tcase '\\\\':\n\t\t\t\t\tsubstituted.push_back('\\\\');\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsubstituted.push_back('\\\\');\n\t\t\t\t\tj--;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tsubstituted.push_back(text[j]);\n\t\t}\n\t}\n\t*length = static_cast<int>(substituted.length());\n\treturn substituted.c_str();\n}\n\n#ifndef SCI_OWNREGEX\n\n#ifdef SCI_NAMESPACE\n\nRegexSearchBase *Scintilla::CreateRegexSearch(CharClassify *charClassTable) {\n\treturn new BuiltinRegex(charClassTable);\n}\n\n#else\n\nRegexSearchBase *CreateRegexSearch(CharClassify *charClassTable) {\n\treturn new BuiltinRegex(charClassTable);\n}\n\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Document.h",
    "content": "// Scintilla source code edit control\n/** @file Document.h\n ** Text document that handles notifications, DBCS, styling, words and end of line.\n **/\n// Copyright 1998-2011 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef DOCUMENT_H\n#define DOCUMENT_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n * A Position is a position within a document between two characters or at the beginning or end.\n * Sometimes used as a character index where it identifies the character after the position.\n */\ntypedef int Position;\nconst Position invalidPosition = -1;\n\nenum EncodingFamily { efEightBit, efUnicode, efDBCS };\n\n/**\n * The range class represents a range of text in a document.\n * The two values are not sorted as one end may be more significant than the other\n * as is the case for the selection where the end position is the position of the caret.\n * If either position is invalidPosition then the range is invalid and most operations will fail.\n */\nclass Range {\npublic:\n\tPosition start;\n\tPosition end;\n\n\texplicit Range(Position pos=0) :\n\t\tstart(pos), end(pos) {\n\t}\n\tRange(Position start_, Position end_) :\n\t\tstart(start_), end(end_) {\n\t}\n\n\tbool operator==(const Range &other) const {\n\t\treturn (start == other.start) && (end == other.end);\n\t}\n\n\tbool Valid() const {\n\t\treturn (start != invalidPosition) && (end != invalidPosition);\n\t}\n\n\tPosition First() const {\n\t\treturn (start <= end) ? start : end;\n\t}\n\n\tPosition Last() const {\n\t\treturn (start > end) ? start : end;\n\t}\n\n\t// Is the position within the range?\n\tbool Contains(Position pos) const {\n\t\tif (start < end) {\n\t\t\treturn (pos >= start && pos <= end);\n\t\t} else {\n\t\t\treturn (pos <= start && pos >= end);\n\t\t}\n\t}\n\n\t// Is the character after pos within the range?\n\tbool ContainsCharacter(Position pos) const {\n\t\tif (start < end) {\n\t\t\treturn (pos >= start && pos < end);\n\t\t} else {\n\t\t\treturn (pos < start && pos >= end);\n\t\t}\n\t}\n\n\tbool Contains(Range other) const {\n\t\treturn Contains(other.start) && Contains(other.end);\n\t}\n\n\tbool Overlaps(Range other) const {\n\t\treturn\n\t\tContains(other.start) ||\n\t\tContains(other.end) ||\n\t\tother.Contains(start) ||\n\t\tother.Contains(end);\n\t}\n};\n\nclass DocWatcher;\nclass DocModification;\nclass Document;\n\n/**\n * Interface class for regular expression searching\n */\nclass RegexSearchBase {\npublic:\n\tvirtual ~RegexSearchBase() {}\n\n\tvirtual long FindText(Document *doc, int minPos, int maxPos, const char *s,\n                        bool caseSensitive, bool word, bool wordStart, int flags, int *length) = 0;\n\n\t///@return String with the substitutions, must remain valid until the next call or destruction\n\tvirtual const char *SubstituteByPosition(Document *doc, const char *text, int *length) = 0;\n};\n\n/// Factory function for RegexSearchBase\nextern RegexSearchBase *CreateRegexSearch(CharClassify *charClassTable);\n\nstruct StyledText {\n\tsize_t length;\n\tconst char *text;\n\tbool multipleStyles;\n\tsize_t style;\n\tconst unsigned char *styles;\n\tStyledText(size_t length_, const char *text_, bool multipleStyles_, int style_, const unsigned char *styles_) :\n\t\tlength(length_), text(text_), multipleStyles(multipleStyles_), style(style_), styles(styles_) {\n\t}\n\t// Return number of bytes from start to before '\\n' or end of text.\n\t// Return 1 when start is outside text\n\tsize_t LineLength(size_t start) const {\n\t\tsize_t cur = start;\n\t\twhile ((cur < length) && (text[cur] != '\\n'))\n\t\t\tcur++;\n\t\treturn cur-start;\n\t}\n\tsize_t StyleAt(size_t i) const {\n\t\treturn multipleStyles ? styles[i] : style;\n\t}\n};\n\nclass HighlightDelimiter {\npublic:\n\tHighlightDelimiter() : isEnabled(false) {\n\t\tClear();\n\t}\n\n\tvoid Clear() {\n\t\tbeginFoldBlock = -1;\n\t\tendFoldBlock = -1;\n\t\tfirstChangeableLineBefore = -1;\n\t\tfirstChangeableLineAfter = -1;\n\t}\n\n\tbool NeedsDrawing(int line) const {\n\t\treturn isEnabled && (line <= firstChangeableLineBefore || line >= firstChangeableLineAfter);\n\t}\n\n\tbool IsFoldBlockHighlighted(int line) const {\n\t\treturn isEnabled && beginFoldBlock != -1 && beginFoldBlock <= line && line <= endFoldBlock;\n\t}\n\n\tbool IsHeadOfFoldBlock(int line) const {\n\t\treturn beginFoldBlock == line && line < endFoldBlock;\n\t}\n\n\tbool IsBodyOfFoldBlock(int line) const {\n\t\treturn beginFoldBlock != -1 && beginFoldBlock < line && line < endFoldBlock;\n\t}\n\n\tbool IsTailOfFoldBlock(int line) const {\n\t\treturn beginFoldBlock != -1 && beginFoldBlock < line && line == endFoldBlock;\n\t}\n\n\tint beginFoldBlock;\t// Begin of current fold block\n\tint endFoldBlock;\t// End of current fold block\n\tint firstChangeableLineBefore;\t// First line that triggers repaint before starting line that determined current fold block\n\tint firstChangeableLineAfter;\t// First line that triggers repaint after starting line that determined current fold block\n\tbool isEnabled;\n};\n\nclass Document;\n\ninline int LevelNumber(int level) {\n\treturn level & SC_FOLDLEVELNUMBERMASK;\n}\n\nclass LexInterface {\nprotected:\n\tDocument *pdoc;\n\tILexer *instance;\n\tbool performingStyle;\t///< Prevent reentrance\npublic:\n\texplicit LexInterface(Document *pdoc_) : pdoc(pdoc_), instance(0), performingStyle(false) {\n\t}\n\tvirtual ~LexInterface() {\n\t}\n\tvoid Colourise(int start, int end);\n\tint LineEndTypesSupported();\n\tbool UseContainerLexing() const {\n\t\treturn instance == 0;\n\t}\n};\n\nstruct RegexError : public std::runtime_error {\n\tRegexError() : std::runtime_error(\"regex failure\") {}\n};\n\n/**\n */\nclass Document : PerLine, public IDocumentWithLineEnd, public ILoader {\n\npublic:\n\t/** Used to pair watcher pointer with user data. */\n\tstruct WatcherWithUserData {\n\t\tDocWatcher *watcher;\n\t\tvoid *userData;\n\t\tWatcherWithUserData(DocWatcher *watcher_=0, void *userData_=0) :\n\t\t\twatcher(watcher_), userData(userData_) {\n\t\t}\n\t\tbool operator==(const WatcherWithUserData &other) const {\n\t\t\treturn (watcher == other.watcher) && (userData == other.userData);\n\t\t}\n\t};\n\nprivate:\n\tint refCount;\n\tCellBuffer cb;\n\tCharClassify charClass;\n\tCaseFolder *pcf;\n\tint endStyled;\n\tint styleClock;\n\tint enteredModification;\n\tint enteredStyling;\n\tint enteredReadOnlyCount;\n\n\tbool insertionSet;\n\tstd::string insertion;\n\n\tstd::vector<WatcherWithUserData> watchers;\n\n\t// ldSize is not real data - it is for dimensions and loops\n\tenum lineData { ldMarkers, ldLevels, ldState, ldMargin, ldAnnotation, ldSize };\n\tPerLine *perLineData[ldSize];\n\n\tbool matchesValid;\n\tRegexSearchBase *regex;\n\npublic:\n\n\tstruct CharacterExtracted {\n\t\tunsigned int character;\n\t\tunsigned int widthBytes;\n\t\tCharacterExtracted(unsigned int character_, unsigned int widthBytes_) :\n\t\t\tcharacter(character_), widthBytes(widthBytes_) {\n\t\t}\n\t\t// For DBCS characters turn 2 bytes into an int\n\t\tstatic CharacterExtracted DBCS(unsigned char lead, unsigned char trail) {\n\t\t\treturn CharacterExtracted((lead << 8) | trail, 2);\n\t\t}\n\t};\n\n\tLexInterface *pli;\n\n\tint eolMode;\n\t/// Can also be SC_CP_UTF8 to enable UTF-8 mode\n\tint dbcsCodePage;\n\tint lineEndBitSet;\n\tint tabInChars;\n\tint indentInChars;\n\tint actualIndentInChars;\n\tbool useTabs;\n\tbool tabIndents;\n\tbool backspaceUnindents;\n\tdouble durationStyleOneLine;\n\n\tDecorationList decorations;\n\n\tDocument();\n\tvirtual ~Document();\n\n\tint AddRef();\n\tint SCI_METHOD Release();\n\n\tvirtual void Init();\n\tint LineEndTypesSupported() const;\n\tbool SetDBCSCodePage(int dbcsCodePage_);\n\tint GetLineEndTypesAllowed() const { return cb.GetLineEndTypes(); }\n\tbool SetLineEndTypesAllowed(int lineEndBitSet_);\n\tint GetLineEndTypesActive() const { return cb.GetLineEndTypes(); }\n\tvirtual void InsertLine(int line);\n\tvirtual void RemoveLine(int line);\n\n\tint SCI_METHOD Version() const {\n\t\treturn dvLineEnd;\n\t}\n\n\tvoid SCI_METHOD SetErrorStatus(int status);\n\n\tSci_Position SCI_METHOD LineFromPosition(Sci_Position pos) const;\n\tint ClampPositionIntoDocument(int pos) const;\n\tbool ContainsLineEnd(const char *s, int length) const { return cb.ContainsLineEnd(s, length); }\n\tbool IsCrLf(int pos) const;\n\tint LenChar(int pos);\n\tbool InGoodUTF8(int pos, int &start, int &end) const;\n\tint MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true) const;\n\tint NextPosition(int pos, int moveDir) const;\n\tbool NextCharacter(int &pos, int moveDir) const;\t// Returns true if pos changed\n\tDocument::CharacterExtracted CharacterAfter(int position) const;\n\tDocument::CharacterExtracted CharacterBefore(int position) const;\n\tSci_Position SCI_METHOD GetRelativePosition(Sci_Position positionStart, Sci_Position characterOffset) const;\n\tint GetRelativePositionUTF16(int positionStart, int characterOffset) const;\n\tint SCI_METHOD GetCharacterAndWidth(Sci_Position position, Sci_Position *pWidth) const;\n\tint SCI_METHOD CodePage() const;\n\tbool SCI_METHOD IsDBCSLeadByte(char ch) const;\n\tint SafeSegment(const char *text, int length, int lengthSegment) const;\n\tEncodingFamily CodePageFamily() const;\n\n\t// Gateways to modifying document\n\tvoid ModifiedAt(int pos);\n\tvoid CheckReadOnly();\n\tbool DeleteChars(int pos, int len);\n\tint InsertString(int position, const char *s, int insertLength);\n\tvoid ChangeInsertion(const char *s, int length);\n\tint SCI_METHOD AddData(char *data, Sci_Position length);\n\tvoid * SCI_METHOD ConvertToDocument();\n\tint Undo();\n\tint Redo();\n\tbool CanUndo() const { return cb.CanUndo(); }\n\tbool CanRedo() const { return cb.CanRedo(); }\n\tvoid DeleteUndoHistory() { cb.DeleteUndoHistory(); }\n\tbool SetUndoCollection(bool collectUndo) {\n\t\treturn cb.SetUndoCollection(collectUndo);\n\t}\n\tbool IsCollectingUndo() const { return cb.IsCollectingUndo(); }\n\tvoid BeginUndoAction() { cb.BeginUndoAction(); }\n\tvoid EndUndoAction() { cb.EndUndoAction(); }\n\tvoid AddUndoAction(int token, bool mayCoalesce) { cb.AddUndoAction(token, mayCoalesce); }\n\tvoid SetSavePoint();\n\tbool IsSavePoint() const { return cb.IsSavePoint(); }\n\n\tvoid TentativeStart() { cb.TentativeStart(); }\n\tvoid TentativeCommit() { cb.TentativeCommit(); }\n\tvoid TentativeUndo();\n\tbool TentativeActive() const { return cb.TentativeActive(); }\n\n\tconst char * SCI_METHOD BufferPointer() { return cb.BufferPointer(); }\n\tconst char *RangePointer(int position, int rangeLength) { return cb.RangePointer(position, rangeLength); }\n\tint GapPosition() const { return cb.GapPosition(); }\n\n\tint SCI_METHOD GetLineIndentation(Sci_Position line);\n\tint SetLineIndentation(int line, int indent);\n\tint GetLineIndentPosition(int line) const;\n\tint GetColumn(int position);\n\tint CountCharacters(int startPos, int endPos) const;\n\tint CountUTF16(int startPos, int endPos) const;\n\tint FindColumn(int line, int column);\n\tvoid Indent(bool forwards, int lineBottom, int lineTop);\n\tstatic std::string TransformLineEnds(const char *s, size_t len, int eolModeWanted);\n\tvoid ConvertLineEnds(int eolModeSet);\n\tvoid SetReadOnly(bool set) { cb.SetReadOnly(set); }\n\tbool IsReadOnly() const { return cb.IsReadOnly(); }\n\n\tvoid DelChar(int pos);\n\tvoid DelCharBack(int pos);\n\n\tchar CharAt(int position) const { return cb.CharAt(position); }\n\tvoid SCI_METHOD GetCharRange(char *buffer, Sci_Position position, Sci_Position lengthRetrieve) const {\n\t\tcb.GetCharRange(buffer, position, lengthRetrieve);\n\t}\n\tchar SCI_METHOD StyleAt(Sci_Position position) const { return cb.StyleAt(position); }\n\tint StyleIndexAt(Sci_Position position) const { return static_cast<unsigned char>(cb.StyleAt(position)); }\n\tvoid GetStyleRange(unsigned char *buffer, int position, int lengthRetrieve) const {\n\t\tcb.GetStyleRange(buffer, position, lengthRetrieve);\n\t}\n\tint GetMark(int line);\n\tint MarkerNext(int lineStart, int mask) const;\n\tint AddMark(int line, int markerNum);\n\tvoid AddMarkSet(int line, int valueSet);\n\tvoid DeleteMark(int line, int markerNum);\n\tvoid DeleteMarkFromHandle(int markerHandle);\n\tvoid DeleteAllMarks(int markerNum);\n\tint LineFromHandle(int markerHandle);\n\tSci_Position SCI_METHOD LineStart(Sci_Position line) const;\n\tbool IsLineStartPosition(int position) const;\n\tSci_Position SCI_METHOD LineEnd(Sci_Position line) const;\n\tint LineEndPosition(int position) const;\n\tbool IsLineEndPosition(int position) const;\n\tbool IsPositionInLineEnd(int position) const;\n\tint VCHomePosition(int position) const;\n\n\tint SCI_METHOD SetLevel(Sci_Position line, int level);\n\tint SCI_METHOD GetLevel(Sci_Position line) const;\n\tvoid ClearLevels();\n\tint GetLastChild(int lineParent, int level=-1, int lastLine=-1);\n\tint GetFoldParent(int line) const;\n\tvoid GetHighlightDelimiters(HighlightDelimiter &hDelimiter, int line, int lastLine);\n\n\tvoid Indent(bool forwards);\n\tint ExtendWordSelect(int pos, int delta, bool onlyWordCharacters=false) const;\n\tint NextWordStart(int pos, int delta) const;\n\tint NextWordEnd(int pos, int delta) const;\n\tSci_Position SCI_METHOD Length() const { return cb.Length(); }\n\tvoid Allocate(int newSize) { cb.Allocate(newSize); }\n\n\tCharacterExtracted ExtractCharacter(int position) const;\n\n\tbool IsWordStartAt(int pos) const;\n\tbool IsWordEndAt(int pos) const;\n\tbool IsWordAt(int start, int end) const;\n\n\tbool MatchesWordOptions(bool word, bool wordStart, int pos, int length) const;\n\tbool HasCaseFolder(void) const;\n\tvoid SetCaseFolder(CaseFolder *pcf_);\n\tlong FindText(int minPos, int maxPos, const char *search, int flags, int *length);\n\tconst char *SubstituteByPosition(const char *text, int *length);\n\tint LinesTotal() const;\n\n\tvoid SetDefaultCharClasses(bool includeWordClass);\n\tvoid SetCharClasses(const unsigned char *chars, CharClassify::cc newCharClass);\n\tint GetCharsOfClass(CharClassify::cc characterClass, unsigned char *buffer) const;\n\tvoid SCI_METHOD StartStyling(Sci_Position position, char mask);\n\tbool SCI_METHOD SetStyleFor(Sci_Position length, char style);\n\tbool SCI_METHOD SetStyles(Sci_Position length, const char *styles);\n\tint GetEndStyled() const { return endStyled; }\n\tvoid EnsureStyledTo(int pos);\n\tvoid StyleToAdjustingLineDuration(int pos);\n\tvoid LexerChanged();\n\tint GetStyleClock() const { return styleClock; }\n\tvoid IncrementStyleClock();\n\tvoid SCI_METHOD DecorationSetCurrentIndicator(int indicator) {\n\t\tdecorations.SetCurrentIndicator(indicator);\n\t}\n\tvoid SCI_METHOD DecorationFillRange(Sci_Position position, int value, Sci_Position fillLength);\n\n\tint SCI_METHOD SetLineState(Sci_Position line, int state);\n\tint SCI_METHOD GetLineState(Sci_Position line) const;\n\tint GetMaxLineState();\n\tvoid SCI_METHOD ChangeLexerState(Sci_Position start, Sci_Position end);\n\n\tStyledText MarginStyledText(int line) const;\n\tvoid MarginSetStyle(int line, int style);\n\tvoid MarginSetStyles(int line, const unsigned char *styles);\n\tvoid MarginSetText(int line, const char *text);\n\tvoid MarginClearAll();\n\n\tStyledText AnnotationStyledText(int line) const;\n\tvoid AnnotationSetText(int line, const char *text);\n\tvoid AnnotationSetStyle(int line, int style);\n\tvoid AnnotationSetStyles(int line, const unsigned char *styles);\n\tint AnnotationLines(int line) const;\n\tvoid AnnotationClearAll();\n\n\tbool AddWatcher(DocWatcher *watcher, void *userData);\n\tbool RemoveWatcher(DocWatcher *watcher, void *userData);\n\n\tbool IsASCIIWordByte(unsigned char ch) const;\n\tCharClassify::cc WordCharacterClass(unsigned int ch) const;\n\tbool IsWordPartSeparator(unsigned int ch) const;\n\tint WordPartLeft(int pos) const;\n\tint WordPartRight(int pos) const;\n\tint ExtendStyleRange(int pos, int delta, bool singleLine = false);\n\tbool IsWhiteLine(int line) const;\n\tint ParaUp(int pos) const;\n\tint ParaDown(int pos) const;\n\tint IndentSize() const { return actualIndentInChars; }\n\tint BraceMatch(int position, int maxReStyle);\n\nprivate:\n\tvoid NotifyModifyAttempt();\n\tvoid NotifySavePoint(bool atSavePoint);\n\tvoid NotifyModified(DocModification mh);\n};\n\nclass UndoGroup {\n\tDocument *pdoc;\n\tbool groupNeeded;\npublic:\n\tUndoGroup(Document *pdoc_, bool groupNeeded_=true) :\n\t\tpdoc(pdoc_), groupNeeded(groupNeeded_) {\n\t\tif (groupNeeded) {\n\t\t\tpdoc->BeginUndoAction();\n\t\t}\n\t}\n\t~UndoGroup() {\n\t\tif (groupNeeded) {\n\t\t\tpdoc->EndUndoAction();\n\t\t}\n\t}\n\tbool Needed() const {\n\t\treturn groupNeeded;\n\t}\n};\n\n\n/**\n * To optimise processing of document modifications by DocWatchers, a hint is passed indicating the\n * scope of the change.\n * If the DocWatcher is a document view then this can be used to optimise screen updating.\n */\nclass DocModification {\npublic:\n\tint modificationType;\n\tint position;\n\tint length;\n\tint linesAdded;\t/**< Negative if lines deleted. */\n\tconst char *text;\t/**< Only valid for changes to text, not for changes to style. */\n\tint line;\n\tint foldLevelNow;\n\tint foldLevelPrev;\n\tint annotationLinesAdded;\n\tint token;\n\n\tDocModification(int modificationType_, int position_=0, int length_=0,\n\t\tint linesAdded_=0, const char *text_=0, int line_=0) :\n\t\tmodificationType(modificationType_),\n\t\tposition(position_),\n\t\tlength(length_),\n\t\tlinesAdded(linesAdded_),\n\t\ttext(text_),\n\t\tline(line_),\n\t\tfoldLevelNow(0),\n\t\tfoldLevelPrev(0),\n\t\tannotationLinesAdded(0),\n\t\ttoken(0) {}\n\n\tDocModification(int modificationType_, const Action &act, int linesAdded_=0) :\n\t\tmodificationType(modificationType_),\n\t\tposition(act.position),\n\t\tlength(act.lenData),\n\t\tlinesAdded(linesAdded_),\n\t\ttext(act.data),\n\t\tline(0),\n\t\tfoldLevelNow(0),\n\t\tfoldLevelPrev(0),\n\t\tannotationLinesAdded(0),\n\t\ttoken(0) {}\n};\n\n/**\n * A class that wants to receive notifications from a Document must be derived from DocWatcher\n * and implement the notification methods. It can then be added to the watcher list with AddWatcher.\n */\nclass DocWatcher {\npublic:\n\tvirtual ~DocWatcher() {}\n\n\tvirtual void NotifyModifyAttempt(Document *doc, void *userData) = 0;\n\tvirtual void NotifySavePoint(Document *doc, void *userData, bool atSavePoint) = 0;\n\tvirtual void NotifyModified(Document *doc, DocModification mh, void *userData) = 0;\n\tvirtual void NotifyDeleted(Document *doc, void *userData) = 0;\n\tvirtual void NotifyStyleNeeded(Document *doc, void *userData, int endPos) = 0;\n\tvirtual void NotifyLexerChanged(Document *doc, void *userData) = 0;\n\tvirtual void NotifyErrorOccurred(Document *doc, void *userData, int status) = 0;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/EditModel.cpp",
    "content": "// Scintilla source code edit control\n/** @file EditModel.cxx\n ** Defines the editor state that must be visible to EditorView.\n **/\n// Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <math.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n#include <memory>\n\n#include \"Platform.h\"\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n\n#include \"StringCopy.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"ContractionState.h\"\n#include \"CellBuffer.h\"\n#include \"KeyMap.h\"\n#include \"Indicator.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n#include \"Style.h\"\n#include \"ViewStyle.h\"\n#include \"CharClassify.h\"\n#include \"Decoration.h\"\n#include \"CaseFolder.h\"\n#include \"Document.h\"\n#include \"UniConversion.h\"\n#include \"Selection.h\"\n#include \"PositionCache.h\"\n#include \"EditModel.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nCaret::Caret() :\n\tactive(false), on(false), period(500) {}\n\nEditModel::EditModel() {\n\tinOverstrike = false;\n\txOffset = 0;\n\ttrackLineWidth = false;\n\tposDrag = SelectionPosition(invalidPosition);\n\tbraces[0] = invalidPosition;\n\tbraces[1] = invalidPosition;\n\tbracesMatchStyle = STYLE_BRACEBAD;\n\thighlightGuideColumn = 0;\n\tprimarySelection = true;\n\timeInteraction = imeWindowed;\n\tfoldFlags = 0;\n\tfoldDisplayTextStyle = SC_FOLDDISPLAYTEXT_HIDDEN;\n\thotspot = Range(invalidPosition);\n\thoverIndicatorPos = invalidPosition;\n\twrapWidth = LineLayout::wrapWidthInfinite;\n\tpdoc = new Document();\n\tpdoc->AddRef();\n}\n\nEditModel::~EditModel() {\n\tpdoc->Release();\n\tpdoc = 0;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/EditModel.h",
    "content": "// Scintilla source code edit control\n/** @file EditModel.h\n ** Defines the editor state that must be visible to EditorView.\n **/\n// Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef EDITMODEL_H\n#define EDITMODEL_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n*/\nclass Caret {\npublic:\n\tbool active;\n\tbool on;\n\tint period;\n\n\tCaret();\n};\n\nclass EditModel {\n\t// Private so EditModel objects can not be copied\n\texplicit EditModel(const EditModel &);\n\tEditModel &operator=(const EditModel &);\n\npublic:\n\tbool inOverstrike;\n\tint xOffset;\t\t///< Horizontal scrolled amount in pixels\n\tbool trackLineWidth;\n\n\tSpecialRepresentations reprs;\n\tCaret caret;\n\tSelectionPosition posDrag;\n\tPosition braces[2];\n\tint bracesMatchStyle;\n\tint highlightGuideColumn;\n\tSelection sel;\n\tbool primarySelection;\n\n\tenum IMEInteraction { imeWindowed, imeInline } imeInteraction;\n\n\tint foldFlags;\n\tint foldDisplayTextStyle;\n\tContractionState cs;\n\t// Hotspot support\n\tRange hotspot;\n\tint hoverIndicatorPos;\n\n\t// Wrapping support\n\tint wrapWidth;\n\n\tDocument *pdoc;\n\n\tEditModel();\n\tvirtual ~EditModel();\n\tvirtual int TopLineOfMain() const = 0;\n\tvirtual Point GetVisibleOriginInMain() const = 0;\n\tvirtual int LinesOnScreen() const = 0;\n\tvirtual Range GetHotSpotRange() const = 0;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/EditView.cpp",
    "content": "// Scintilla source code edit control\n/** @file EditView.cxx\n ** Defines the appearance of the main text area of the editor window.\n **/\n// Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <math.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n#include <memory>\n\n#include \"Platform.h\"\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n\n#include \"StringCopy.h\"\n#include \"CharacterSet.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"ContractionState.h\"\n#include \"CellBuffer.h\"\n#include \"PerLine.h\"\n#include \"KeyMap.h\"\n#include \"Indicator.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n#include \"Style.h\"\n#include \"ViewStyle.h\"\n#include \"CharClassify.h\"\n#include \"Decoration.h\"\n#include \"CaseFolder.h\"\n#include \"Document.h\"\n#include \"UniConversion.h\"\n#include \"Selection.h\"\n#include \"PositionCache.h\"\n#include \"EditModel.h\"\n#include \"MarginView.h\"\n#include \"EditView.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic inline bool IsControlCharacter(int ch) {\n\t// iscntrl returns true for lots of chars > 127 which are displayable\n\treturn ch >= 0 && ch < ' ';\n}\n\nPrintParameters::PrintParameters() {\n\tmagnification = 0;\n\tcolourMode = SC_PRINT_NORMAL;\n\twrapState = eWrapWord;\n}\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nbool ValidStyledText(const ViewStyle &vs, size_t styleOffset, const StyledText &st) {\n\tif (st.multipleStyles) {\n\t\tfor (size_t iStyle = 0; iStyle<st.length; iStyle++) {\n\t\t\tif (!vs.ValidStyle(styleOffset + st.styles[iStyle]))\n\t\t\t\treturn false;\n\t\t}\n\t} else {\n\t\tif (!vs.ValidStyle(styleOffset + st.style))\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\nstatic int WidthStyledText(Surface *surface, const ViewStyle &vs, int styleOffset,\n\tconst char *text, const unsigned char *styles, size_t len) {\n\tint width = 0;\n\tsize_t start = 0;\n\twhile (start < len) {\n\t\tsize_t style = styles[start];\n\t\tsize_t endSegment = start;\n\t\twhile ((endSegment + 1 < len) && (static_cast<size_t>(styles[endSegment + 1]) == style))\n\t\t\tendSegment++;\n\t\tFontAlias fontText = vs.styles[style + styleOffset].font;\n\t\twidth += static_cast<int>(surface->WidthText(fontText, text + start,\n\t\t\tstatic_cast<int>(endSegment - start + 1)));\n\t\tstart = endSegment + 1;\n\t}\n\treturn width;\n}\n\nint WidestLineWidth(Surface *surface, const ViewStyle &vs, int styleOffset, const StyledText &st) {\n\tint widthMax = 0;\n\tsize_t start = 0;\n\twhile (start < st.length) {\n\t\tsize_t lenLine = st.LineLength(start);\n\t\tint widthSubLine;\n\t\tif (st.multipleStyles) {\n\t\t\twidthSubLine = WidthStyledText(surface, vs, styleOffset, st.text + start, st.styles + start, lenLine);\n\t\t} else {\n\t\t\tFontAlias fontText = vs.styles[styleOffset + st.style].font;\n\t\t\twidthSubLine = static_cast<int>(surface->WidthText(fontText,\n\t\t\t\tst.text + start, static_cast<int>(lenLine)));\n\t\t}\n\t\tif (widthSubLine > widthMax)\n\t\t\twidthMax = widthSubLine;\n\t\tstart += lenLine + 1;\n\t}\n\treturn widthMax;\n}\n\nvoid DrawTextNoClipPhase(Surface *surface, PRectangle rc, const Style &style, XYPOSITION ybase,\n\tconst char *s, int len, DrawPhase phase) {\n\tFontAlias fontText = style.font;\n\tif (phase & drawBack) {\n\t\tif (phase & drawText) {\n\t\t\t// Drawing both\n\t\t\tsurface->DrawTextNoClip(rc, fontText, ybase, s, len,\n\t\t\t\tstyle.fore, style.back);\n\t\t} else {\n\t\t\tsurface->FillRectangle(rc, style.back);\n\t\t}\n\t} else if (phase & drawText) {\n\t\tsurface->DrawTextTransparent(rc, fontText, ybase, s, len, style.fore);\n\t}\n}\n\nvoid DrawStyledText(Surface *surface, const ViewStyle &vs, int styleOffset, PRectangle rcText,\n\tconst StyledText &st, size_t start, size_t length, DrawPhase phase) {\n\n\tif (st.multipleStyles) {\n\t\tint x = static_cast<int>(rcText.left);\n\t\tsize_t i = 0;\n\t\twhile (i < length) {\n\t\t\tsize_t end = i;\n\t\t\tsize_t style = st.styles[i + start];\n\t\t\twhile (end < length - 1 && st.styles[start + end + 1] == style)\n\t\t\t\tend++;\n\t\t\tstyle += styleOffset;\n\t\t\tFontAlias fontText = vs.styles[style].font;\n\t\t\tconst int width = static_cast<int>(surface->WidthText(fontText,\n\t\t\t\tst.text + start + i, static_cast<int>(end - i + 1)));\n\t\t\tPRectangle rcSegment = rcText;\n\t\t\trcSegment.left = static_cast<XYPOSITION>(x);\n\t\t\trcSegment.right = static_cast<XYPOSITION>(x + width + 1);\n\t\t\tDrawTextNoClipPhase(surface, rcSegment, vs.styles[style],\n\t\t\t\trcText.top + vs.maxAscent, st.text + start + i,\n\t\t\t\tstatic_cast<int>(end - i + 1), phase);\n\t\t\tx += width;\n\t\t\ti = end + 1;\n\t\t}\n\t} else {\n\t\tconst size_t style = st.style + styleOffset;\n\t\tDrawTextNoClipPhase(surface, rcText, vs.styles[style],\n\t\t\trcText.top + vs.maxAscent, st.text + start,\n\t\t\tstatic_cast<int>(length), phase);\n\t}\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\nconst XYPOSITION epsilon = 0.0001f;\t// A small nudge to avoid floating point precision issues\n\nEditView::EditView() {\n\tldTabstops = NULL;\n\ttabWidthMinimumPixels = 2; // needed for calculating tab stops for fractional proportional fonts\n\thideSelection = false;\n\tdrawOverstrikeCaret = true;\n\tbufferedDraw = true;\n\tphasesDraw = phasesTwo;\n\tlineWidthMaxSeen = 0;\n\tadditionalCaretsBlink = true;\n\tadditionalCaretsVisible = true;\n\timeCaretBlockOverride = false;\n\tpixmapLine = 0;\n\tpixmapIndentGuide = 0;\n\tpixmapIndentGuideHighlight = 0;\n\tllc.SetLevel(LineLayoutCache::llcCaret);\n\tposCache.SetSize(0x400);\n\ttabArrowHeight = 4;\n\tcustomDrawTabArrow = NULL;\n\tcustomDrawWrapMarker = NULL;\n}\n\nEditView::~EditView() {\n\tdelete ldTabstops;\n\tldTabstops = NULL;\n}\n\nbool EditView::SetTwoPhaseDraw(bool twoPhaseDraw) {\n\tconst PhasesDraw phasesDrawNew = twoPhaseDraw ? phasesTwo : phasesOne;\n\tconst bool redraw = phasesDraw != phasesDrawNew;\n\tphasesDraw = phasesDrawNew;\n\treturn redraw;\n}\n\nbool EditView::SetPhasesDraw(int phases) {\n\tconst PhasesDraw phasesDrawNew = static_cast<PhasesDraw>(phases);\n\tconst bool redraw = phasesDraw != phasesDrawNew;\n\tphasesDraw = phasesDrawNew;\n\treturn redraw;\n}\n\nbool EditView::LinesOverlap() const {\n\treturn phasesDraw == phasesMultiple;\n}\n\nvoid EditView::ClearAllTabstops() {\n\tdelete ldTabstops;\n\tldTabstops = 0;\n}\n\nXYPOSITION EditView::NextTabstopPos(int line, XYPOSITION x, XYPOSITION tabWidth) const {\n\tint next = GetNextTabstop(line, static_cast<int>(x + tabWidthMinimumPixels));\n\tif (next > 0)\n\t\treturn static_cast<XYPOSITION>(next);\n\treturn (static_cast<int>((x + tabWidthMinimumPixels) / tabWidth) + 1) * tabWidth;\n}\n\nbool EditView::ClearTabstops(int line) {\n\tLineTabstops *lt = static_cast<LineTabstops *>(ldTabstops);\n\treturn lt && lt->ClearTabstops(line);\n}\n\nbool EditView::AddTabstop(int line, int x) {\n\tif (!ldTabstops) {\n\t\tldTabstops = new LineTabstops();\n\t}\n\tLineTabstops *lt = static_cast<LineTabstops *>(ldTabstops);\n\treturn lt && lt->AddTabstop(line, x);\n}\n\nint EditView::GetNextTabstop(int line, int x) const {\n\tLineTabstops *lt = static_cast<LineTabstops *>(ldTabstops);\n\tif (lt) {\n\t\treturn lt->GetNextTabstop(line, x);\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nvoid EditView::LinesAddedOrRemoved(int lineOfPos, int linesAdded) {\n\tif (ldTabstops) {\n\t\tif (linesAdded > 0) {\n\t\t\tfor (int line = lineOfPos; line < lineOfPos + linesAdded; line++) {\n\t\t\t\tldTabstops->InsertLine(line);\n\t\t\t}\n\t\t} else {\n\t\t\tfor (int line = (lineOfPos + -linesAdded) - 1; line >= lineOfPos; line--) {\n\t\t\t\tldTabstops->RemoveLine(line);\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid EditView::DropGraphics(bool freeObjects) {\n\tif (freeObjects) {\n\t\tdelete pixmapLine;\n\t\tpixmapLine = 0;\n\t\tdelete pixmapIndentGuide;\n\t\tpixmapIndentGuide = 0;\n\t\tdelete pixmapIndentGuideHighlight;\n\t\tpixmapIndentGuideHighlight = 0;\n\t} else {\n\t\tif (pixmapLine)\n\t\t\tpixmapLine->Release();\n\t\tif (pixmapIndentGuide)\n\t\t\tpixmapIndentGuide->Release();\n\t\tif (pixmapIndentGuideHighlight)\n\t\t\tpixmapIndentGuideHighlight->Release();\n\t}\n}\n\nvoid EditView::AllocateGraphics(const ViewStyle &vsDraw) {\n\tif (!pixmapLine)\n\t\tpixmapLine = Surface::Allocate(vsDraw.technology);\n\tif (!pixmapIndentGuide)\n\t\tpixmapIndentGuide = Surface::Allocate(vsDraw.technology);\n\tif (!pixmapIndentGuideHighlight)\n\t\tpixmapIndentGuideHighlight = Surface::Allocate(vsDraw.technology);\n}\n\nstatic const char *ControlCharacterString(unsigned char ch) {\n\tconst char *reps[] = {\n\t\t\"NUL\", \"SOH\", \"STX\", \"ETX\", \"EOT\", \"ENQ\", \"ACK\", \"BEL\",\n\t\t\"BS\", \"HT\", \"LF\", \"VT\", \"FF\", \"CR\", \"SO\", \"SI\",\n\t\t\"DLE\", \"DC1\", \"DC2\", \"DC3\", \"DC4\", \"NAK\", \"SYN\", \"ETB\",\n\t\t\"CAN\", \"EM\", \"SUB\", \"ESC\", \"FS\", \"GS\", \"RS\", \"US\"\n\t};\n\tif (ch < ELEMENTS(reps)) {\n\t\treturn reps[ch];\n\t} else {\n\t\treturn \"BAD\";\n\t}\n}\n\nstatic void DrawTabArrow(Surface *surface, PRectangle rcTab, int ymid, const ViewStyle &vsDraw) {\n\tif ((rcTab.left + 2) < (rcTab.right - 1))\n\t\tsurface->MoveTo(static_cast<int>(rcTab.left) + 2, ymid);\n\telse\n\t\tsurface->MoveTo(static_cast<int>(rcTab.right) - 1, ymid);\n\tsurface->LineTo(static_cast<int>(rcTab.right) - 1, ymid);\n\n\t// Draw the arrow head if needed\n\tif (vsDraw.tabDrawMode == tdLongArrow) {\n\t\tint ydiff = static_cast<int>(rcTab.bottom - rcTab.top) / 2;\n\t\tint xhead = static_cast<int>(rcTab.right) - 1 - ydiff;\n\t\tif (xhead <= rcTab.left) {\n\t\t\tydiff -= static_cast<int>(rcTab.left) - xhead - 1;\n\t\t\txhead = static_cast<int>(rcTab.left) - 1;\n\t\t}\n\t\tsurface->LineTo(xhead, ymid - ydiff);\n\t\tsurface->MoveTo(static_cast<int>(rcTab.right) - 1, ymid);\n\t\tsurface->LineTo(xhead, ymid + ydiff);\n\t}\n}\n\nvoid EditView::RefreshPixMaps(Surface *surfaceWindow, WindowID wid, const ViewStyle &vsDraw) {\n\tif (!pixmapIndentGuide->Initialised()) {\n\t\t// 1 extra pixel in height so can handle odd/even positions and so produce a continuous line\n\t\tpixmapIndentGuide->InitPixMap(1, vsDraw.lineHeight + 1, surfaceWindow, wid);\n\t\tpixmapIndentGuideHighlight->InitPixMap(1, vsDraw.lineHeight + 1, surfaceWindow, wid);\n\t\tPRectangle rcIG = PRectangle::FromInts(0, 0, 1, vsDraw.lineHeight);\n\t\tpixmapIndentGuide->FillRectangle(rcIG, vsDraw.styles[STYLE_INDENTGUIDE].back);\n\t\tpixmapIndentGuide->PenColour(vsDraw.styles[STYLE_INDENTGUIDE].fore);\n\t\tpixmapIndentGuideHighlight->FillRectangle(rcIG, vsDraw.styles[STYLE_BRACELIGHT].back);\n\t\tpixmapIndentGuideHighlight->PenColour(vsDraw.styles[STYLE_BRACELIGHT].fore);\n\t\tfor (int stripe = 1; stripe < vsDraw.lineHeight + 1; stripe += 2) {\n\t\t\tPRectangle rcPixel = PRectangle::FromInts(0, stripe, 1, stripe + 1);\n\t\t\tpixmapIndentGuide->FillRectangle(rcPixel, vsDraw.styles[STYLE_INDENTGUIDE].fore);\n\t\t\tpixmapIndentGuideHighlight->FillRectangle(rcPixel, vsDraw.styles[STYLE_BRACELIGHT].fore);\n\t\t}\n\t}\n}\n\nLineLayout *EditView::RetrieveLineLayout(int lineNumber, const EditModel &model) {\n\tint posLineStart = model.pdoc->LineStart(lineNumber);\n\tint posLineEnd = model.pdoc->LineStart(lineNumber + 1);\n\tPLATFORM_ASSERT(posLineEnd >= posLineStart);\n\tint lineCaret = model.pdoc->LineFromPosition(model.sel.MainCaret());\n\treturn llc.Retrieve(lineNumber, lineCaret,\n\t\tposLineEnd - posLineStart, model.pdoc->GetStyleClock(),\n\t\tmodel.LinesOnScreen() + 1, model.pdoc->LinesTotal());\n}\n\n/**\n* Fill in the LineLayout data for the given line.\n* Copy the given @a line and its styles from the document into local arrays.\n* Also determine the x position at which each character starts.\n*/\nvoid EditView::LayoutLine(const EditModel &model, int line, Surface *surface, const ViewStyle &vstyle, LineLayout *ll, int width) {\n\tif (!ll)\n\t\treturn;\n\n\tPLATFORM_ASSERT(line < model.pdoc->LinesTotal());\n\tPLATFORM_ASSERT(ll->chars != NULL);\n\tint posLineStart = model.pdoc->LineStart(line);\n\tint posLineEnd = model.pdoc->LineStart(line + 1);\n\t// If the line is very long, limit the treatment to a length that should fit in the viewport\n\tif (posLineEnd >(posLineStart + ll->maxLineLength)) {\n\t\tposLineEnd = posLineStart + ll->maxLineLength;\n\t}\n\tif (ll->validity == LineLayout::llCheckTextAndStyle) {\n\t\tint lineLength = posLineEnd - posLineStart;\n\t\tif (!vstyle.viewEOL) {\n\t\t\tlineLength = model.pdoc->LineEnd(line) - posLineStart;\n\t\t}\n\t\tif (lineLength == ll->numCharsInLine) {\n\t\t\t// See if chars, styles, indicators, are all the same\n\t\t\tbool allSame = true;\n\t\t\t// Check base line layout\n\t\t\tint styleByte = 0;\n\t\t\tint numCharsInLine = 0;\n\t\t\twhile (numCharsInLine < lineLength) {\n\t\t\t\tint charInDoc = numCharsInLine + posLineStart;\n\t\t\t\tchar chDoc = model.pdoc->CharAt(charInDoc);\n\t\t\t\tstyleByte = model.pdoc->StyleIndexAt(charInDoc);\n\t\t\t\tallSame = allSame &&\n\t\t\t\t\t(ll->styles[numCharsInLine] == styleByte);\n\t\t\t\tif (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseMixed)\n\t\t\t\t\tallSame = allSame &&\n\t\t\t\t\t(ll->chars[numCharsInLine] == chDoc);\n\t\t\t\telse if (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseLower)\n\t\t\t\t\tallSame = allSame &&\n\t\t\t\t\t(ll->chars[numCharsInLine] == MakeLowerCase(chDoc));\n\t\t\t\telse if (vstyle.styles[ll->styles[numCharsInLine]].caseForce == Style::caseUpper)\n\t\t\t\t\tallSame = allSame &&\n\t\t\t\t\t(ll->chars[numCharsInLine] == MakeUpperCase(chDoc));\n\t\t\t\telse\t{ // Style::caseCamel\n\t\t\t\t\tif ((model.pdoc->IsASCIIWordByte(ll->chars[numCharsInLine])) &&\n\t\t\t\t\t  ((numCharsInLine == 0) || (!model.pdoc->IsASCIIWordByte(ll->chars[numCharsInLine - 1])))) {\n\t\t\t\t\t\tallSame = allSame && (ll->chars[numCharsInLine] == MakeUpperCase(chDoc));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tallSame = allSame && (ll->chars[numCharsInLine] == MakeLowerCase(chDoc));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnumCharsInLine++;\n\t\t\t}\n\t\t\tallSame = allSame && (ll->styles[numCharsInLine] == styleByte);\t// For eolFilled\n\t\t\tif (allSame) {\n\t\t\t\tll->validity = LineLayout::llPositions;\n\t\t\t} else {\n\t\t\t\tll->validity = LineLayout::llInvalid;\n\t\t\t}\n\t\t} else {\n\t\t\tll->validity = LineLayout::llInvalid;\n\t\t}\n\t}\n\tif (ll->validity == LineLayout::llInvalid) {\n\t\tll->widthLine = LineLayout::wrapWidthInfinite;\n\t\tll->lines = 1;\n\t\tif (vstyle.edgeState == EDGE_BACKGROUND) {\n\t\t\tll->edgeColumn = model.pdoc->FindColumn(line, vstyle.theEdge.column);\n\t\t\tif (ll->edgeColumn >= posLineStart) {\n\t\t\t\tll->edgeColumn -= posLineStart;\n\t\t\t}\n\t\t} else {\n\t\t\tll->edgeColumn = -1;\n\t\t}\n\n\t\t// Fill base line layout\n\t\tconst int lineLength = posLineEnd - posLineStart;\n\t\tmodel.pdoc->GetCharRange(ll->chars, posLineStart, lineLength);\n\t\tmodel.pdoc->GetStyleRange(ll->styles, posLineStart, lineLength);\n\t\tint numCharsBeforeEOL = model.pdoc->LineEnd(line) - posLineStart;\n\t\tconst int numCharsInLine = (vstyle.viewEOL) ? lineLength : numCharsBeforeEOL;\n\t\tfor (int styleInLine = 0; styleInLine < numCharsInLine; styleInLine++) {\n\t\t\tconst unsigned char styleByte = ll->styles[styleInLine];\n\t\t\tll->styles[styleInLine] = styleByte;\n\t\t}\n\t\tconst unsigned char styleByteLast = (lineLength > 0) ? ll->styles[lineLength - 1] : 0;\n\t\tif (vstyle.someStylesForceCase) {\n\t\t\tfor (int charInLine = 0; charInLine<lineLength; charInLine++) {\n\t\t\t\tchar chDoc = ll->chars[charInLine];\n\t\t\t\tif (vstyle.styles[ll->styles[charInLine]].caseForce == Style::caseUpper)\n\t\t\t\t\tll->chars[charInLine] = static_cast<char>(MakeUpperCase(chDoc));\n\t\t\t\telse if (vstyle.styles[ll->styles[charInLine]].caseForce == Style::caseLower)\n\t\t\t\t\tll->chars[charInLine] = static_cast<char>(MakeLowerCase(chDoc));\n\t\t\t\telse if (vstyle.styles[ll->styles[charInLine]].caseForce == Style::caseCamel) {\n\t\t\t\t\tif ((model.pdoc->IsASCIIWordByte(ll->chars[charInLine])) &&\n\t\t\t\t\t  ((charInLine == 0) || (!model.pdoc->IsASCIIWordByte(ll->chars[charInLine - 1])))) {\n\t\t\t\t\t\tll->chars[charInLine] = static_cast<char>(MakeUpperCase(chDoc));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tll->chars[charInLine] = static_cast<char>(MakeLowerCase(chDoc));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tll->xHighlightGuide = 0;\n\t\t// Extra element at the end of the line to hold end x position and act as\n\t\tll->chars[numCharsInLine] = 0;   // Also triggers processing in the loops as this is a control character\n\t\tll->styles[numCharsInLine] = styleByteLast;\t// For eolFilled\n\n\t\t// Layout the line, determining the position of each character,\n\t\t// with an extra element at the end for the end of the line.\n\t\tll->positions[0] = 0;\n\t\tbool lastSegItalics = false;\n\n\t\tBreakFinder bfLayout(ll, NULL, Range(0, numCharsInLine), posLineStart, 0, false, model.pdoc, &model.reprs, NULL);\n\t\twhile (bfLayout.More()) {\n\n\t\t\tconst TextSegment ts = bfLayout.Next();\n\n\t\t\tstd::fill(&ll->positions[ts.start + 1], &ll->positions[ts.end() + 1], 0.0f);\n\t\t\tif (vstyle.styles[ll->styles[ts.start]].visible) {\n\t\t\t\tif (ts.representation) {\n\t\t\t\t\tXYPOSITION representationWidth = vstyle.controlCharWidth;\n\t\t\t\t\tif (ll->chars[ts.start] == '\\t') {\n\t\t\t\t\t\t// Tab is a special case of representation, taking a variable amount of space\n\t\t\t\t\t\tconst XYPOSITION x = ll->positions[ts.start];\n\t\t\t\t\t\trepresentationWidth = NextTabstopPos(line, x, vstyle.tabWidth) - ll->positions[ts.start];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (representationWidth <= 0.0) {\n\t\t\t\t\t\t\tXYPOSITION positionsRepr[256];\t// Should expand when needed\n\t\t\t\t\t\t\tposCache.MeasureWidths(surface, vstyle, STYLE_CONTROLCHAR, ts.representation->stringRep.c_str(),\n\t\t\t\t\t\t\t\tstatic_cast<unsigned int>(ts.representation->stringRep.length()), positionsRepr, model.pdoc);\n\t\t\t\t\t\t\trepresentationWidth = positionsRepr[ts.representation->stringRep.length() - 1] + vstyle.ctrlCharPadding;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfor (int ii = 0; ii < ts.length; ii++)\n\t\t\t\t\t\tll->positions[ts.start + 1 + ii] = representationWidth;\n\t\t\t\t} else {\n\t\t\t\t\tif ((ts.length == 1) && (' ' == ll->chars[ts.start])) {\n\t\t\t\t\t\t// Over half the segments are single characters and of these about half are space characters.\n\t\t\t\t\t\tll->positions[ts.start + 1] = vstyle.styles[ll->styles[ts.start]].spaceWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposCache.MeasureWidths(surface, vstyle, ll->styles[ts.start], ll->chars + ts.start,\n\t\t\t\t\t\t\tts.length, ll->positions + ts.start + 1, model.pdoc);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlastSegItalics = (!ts.representation) && ((ll->chars[ts.end() - 1] != ' ') && vstyle.styles[ll->styles[ts.start]].italic);\n\t\t\t}\n\n\t\t\tfor (int posToIncrease = ts.start + 1; posToIncrease <= ts.end(); posToIncrease++) {\n\t\t\t\tll->positions[posToIncrease] += ll->positions[ts.start];\n\t\t\t}\n\t\t}\n\n\t\t// Small hack to make lines that end with italics not cut off the edge of the last character\n\t\tif (lastSegItalics) {\n\t\t\tll->positions[numCharsInLine] += vstyle.lastSegItalicsOffset;\n\t\t}\n\t\tll->numCharsInLine = numCharsInLine;\n\t\tll->numCharsBeforeEOL = numCharsBeforeEOL;\n\t\tll->validity = LineLayout::llPositions;\n\t}\n\t// Hard to cope when too narrow, so just assume there is space\n\tif (width < 20) {\n\t\twidth = 20;\n\t}\n\tif ((ll->validity == LineLayout::llPositions) || (ll->widthLine != width)) {\n\t\tll->widthLine = width;\n\t\tif (width == LineLayout::wrapWidthInfinite) {\n\t\t\tll->lines = 1;\n\t\t} else if (width > ll->positions[ll->numCharsInLine]) {\n\t\t\t// Simple common case where line does not need wrapping.\n\t\t\tll->lines = 1;\n\t\t} else {\n\t\t\tif (vstyle.wrapVisualFlags & SC_WRAPVISUALFLAG_END) {\n\t\t\t\twidth -= static_cast<int>(vstyle.aveCharWidth); // take into account the space for end wrap mark\n\t\t\t}\n\t\t\tXYPOSITION wrapAddIndent = 0; // This will be added to initial indent of line\n\t\t\tif (vstyle.wrapIndentMode == SC_WRAPINDENT_INDENT) {\n\t\t\t\twrapAddIndent = model.pdoc->IndentSize() * vstyle.spaceWidth;\n\t\t\t} else if (vstyle.wrapIndentMode == SC_WRAPINDENT_FIXED) {\n\t\t\t\twrapAddIndent = vstyle.wrapVisualStartIndent * vstyle.aveCharWidth;\n\t\t\t}\n\t\t\tll->wrapIndent = wrapAddIndent;\n\t\t\tif (vstyle.wrapIndentMode != SC_WRAPINDENT_FIXED)\n\t\t\tfor (int i = 0; i < ll->numCharsInLine; i++) {\n\t\t\t\tif (!IsSpaceOrTab(ll->chars[i])) {\n\t\t\t\t\tll->wrapIndent += ll->positions[i]; // Add line indent\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check for text width minimum\n\t\t\tif (ll->wrapIndent > width - static_cast<int>(vstyle.aveCharWidth) * 15)\n\t\t\t\tll->wrapIndent = wrapAddIndent;\n\t\t\t// Check for wrapIndent minimum\n\t\t\tif ((vstyle.wrapVisualFlags & SC_WRAPVISUALFLAG_START) && (ll->wrapIndent < vstyle.aveCharWidth))\n\t\t\t\tll->wrapIndent = vstyle.aveCharWidth; // Indent to show start visual\n\t\t\tll->lines = 0;\n\t\t\t// Calculate line start positions based upon width.\n\t\t\tint lastGoodBreak = 0;\n\t\t\tint lastLineStart = 0;\n\t\t\tXYACCUMULATOR startOffset = 0;\n\t\t\tint p = 0;\n\t\t\twhile (p < ll->numCharsInLine) {\n\t\t\t\tif ((ll->positions[p + 1] - startOffset) >= width) {\n\t\t\t\t\tif (lastGoodBreak == lastLineStart) {\n\t\t\t\t\t\t// Try moving to start of last character\n\t\t\t\t\t\tif (p > 0) {\n\t\t\t\t\t\t\tlastGoodBreak = model.pdoc->MovePositionOutsideChar(p + posLineStart, -1)\n\t\t\t\t\t\t\t\t- posLineStart;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lastGoodBreak == lastLineStart) {\n\t\t\t\t\t\t\t// Ensure at least one character on line.\n\t\t\t\t\t\t\tlastGoodBreak = model.pdoc->MovePositionOutsideChar(lastGoodBreak + posLineStart + 1, 1)\n\t\t\t\t\t\t\t\t- posLineStart;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlastLineStart = lastGoodBreak;\n\t\t\t\t\tll->lines++;\n\t\t\t\t\tll->SetLineStart(ll->lines, lastGoodBreak);\n\t\t\t\t\tstartOffset = ll->positions[lastGoodBreak];\n\t\t\t\t\t// take into account the space for start wrap mark and indent\n\t\t\t\t\tstartOffset -= ll->wrapIndent;\n\t\t\t\t\tp = lastGoodBreak + 1;\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (p > 0) {\n\t\t\t\t\tif (vstyle.wrapState == eWrapChar) {\n\t\t\t\t\t\tlastGoodBreak = model.pdoc->MovePositionOutsideChar(p + posLineStart, -1)\n\t\t\t\t\t\t\t- posLineStart;\n\t\t\t\t\t\tp = model.pdoc->MovePositionOutsideChar(p + 1 + posLineStart, 1) - posLineStart;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t} else if ((vstyle.wrapState == eWrapWord) && (ll->styles[p] != ll->styles[p - 1])) {\n\t\t\t\t\t\tlastGoodBreak = p;\n\t\t\t\t\t} else if (IsSpaceOrTab(ll->chars[p - 1]) && !IsSpaceOrTab(ll->chars[p])) {\n\t\t\t\t\t\tlastGoodBreak = p;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tll->lines++;\n\t\t}\n\t\tll->validity = LineLayout::llLines;\n\t}\n}\n\nPoint EditView::LocationFromPosition(Surface *surface, const EditModel &model, SelectionPosition pos, int topLine,\n\t\t\t\t     const ViewStyle &vs, PointEnd pe) {\n\tPoint pt;\n\tif (pos.Position() == INVALID_POSITION)\n\t\treturn pt;\n\tint lineDoc = model.pdoc->LineFromPosition(pos.Position());\n\tint posLineStart = model.pdoc->LineStart(lineDoc);\n\tif ((pe & peLineEnd) && (lineDoc > 0) && (pos.Position() == posLineStart)) {\n\t\t// Want point at end of first line\n\t\tlineDoc--;\n\t\tposLineStart = model.pdoc->LineStart(lineDoc);\n\t}\n\tconst int lineVisible = model.cs.DisplayFromDoc(lineDoc);\n\tAutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));\n\tif (surface && ll) {\n\t\tLayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);\n\t\tconst int posInLine = pos.Position() - posLineStart;\n\t\tpt = ll->PointFromPosition(posInLine, vs.lineHeight, pe);\n\t\tpt.y += (lineVisible - topLine) * vs.lineHeight;\n\t\tpt.x += vs.textStart - model.xOffset;\n\t}\n\tpt.x += pos.VirtualSpace() * vs.styles[ll->EndLineStyle()].spaceWidth;\n\treturn pt;\n}\n\nRange EditView::RangeDisplayLine(Surface *surface, const EditModel &model, int lineVisible, const ViewStyle &vs) {\n\tRange rangeSubLine = Range(0,0);\n\tif (lineVisible < 0) {\n\t\treturn rangeSubLine;\n\t}\n\tconst int lineDoc = model.cs.DocFromDisplay(lineVisible);\n\tconst int positionLineStart = model.pdoc->LineStart(lineDoc);\n\tAutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));\n\tif (surface && ll) {\n\t\tLayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);\n\t\tconst int lineStartSet = model.cs.DisplayFromDoc(lineDoc);\n\t\tconst int subLine = lineVisible - lineStartSet;\n\t\tif (subLine < ll->lines) {\n\t\t\trangeSubLine = ll->SubLineRange(subLine);\n\t\t\tif (subLine == ll->lines-1) {\n\t\t\t\trangeSubLine.end = model.pdoc->LineStart(lineDoc + 1) -\n\t\t\t\t\tpositionLineStart;\n\t\t\t}\n\t\t}\n\t}\n\trangeSubLine.start += positionLineStart;\n\trangeSubLine.end += positionLineStart;\n\treturn rangeSubLine;\n}\n\nSelectionPosition EditView::SPositionFromLocation(Surface *surface, const EditModel &model, PointDocument pt, bool canReturnInvalid, bool charPosition, bool virtualSpace, const ViewStyle &vs) {\n\tpt.x = pt.x - vs.textStart;\n\tint visibleLine = static_cast<int>(floor(pt.y / vs.lineHeight));\n\tif (!canReturnInvalid && (visibleLine < 0))\n\t\tvisibleLine = 0;\n\tconst int lineDoc = model.cs.DocFromDisplay(visibleLine);\n\tif (canReturnInvalid && (lineDoc < 0))\n\t\treturn SelectionPosition(INVALID_POSITION);\n\tif (lineDoc >= model.pdoc->LinesTotal())\n\t\treturn SelectionPosition(canReturnInvalid ? INVALID_POSITION : model.pdoc->Length());\n\tconst int posLineStart = model.pdoc->LineStart(lineDoc);\n\tAutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));\n\tif (surface && ll) {\n\t\tLayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);\n\t\tconst int lineStartSet = model.cs.DisplayFromDoc(lineDoc);\n\t\tconst int subLine = visibleLine - lineStartSet;\n\t\tif (subLine < ll->lines) {\n\t\t\tconst Range rangeSubLine = ll->SubLineRange(subLine);\n\t\t\tconst XYPOSITION subLineStart = ll->positions[rangeSubLine.start];\n\t\t\tif (subLine > 0)\t// Wrapped\n\t\t\t\tpt.x -= ll->wrapIndent;\n\t\t\tconst int positionInLine = ll->FindPositionFromX(static_cast<XYPOSITION>(pt.x + subLineStart),\n\t\t\t\trangeSubLine, charPosition);\n\t\t\tif (positionInLine < rangeSubLine.end) {\n\t\t\t\treturn SelectionPosition(model.pdoc->MovePositionOutsideChar(positionInLine + posLineStart, 1));\n\t\t\t}\n\t\t\tif (virtualSpace) {\n\t\t\t\tconst XYPOSITION spaceWidth = vs.styles[ll->EndLineStyle()].spaceWidth;\n\t\t\t\tconst int spaceOffset = static_cast<int>(\n\t\t\t\t\t(pt.x + subLineStart - ll->positions[rangeSubLine.end] + spaceWidth / 2) / spaceWidth);\n\t\t\t\treturn SelectionPosition(rangeSubLine.end + posLineStart, spaceOffset);\n\t\t\t} else if (canReturnInvalid) {\n\t\t\t\tif (pt.x < (ll->positions[rangeSubLine.end] - subLineStart)) {\n\t\t\t\t\treturn SelectionPosition(model.pdoc->MovePositionOutsideChar(rangeSubLine.end + posLineStart, 1));\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn SelectionPosition(rangeSubLine.end + posLineStart);\n\t\t\t}\n\t\t}\n\t\tif (!canReturnInvalid)\n\t\t\treturn SelectionPosition(ll->numCharsInLine + posLineStart);\n\t}\n\treturn SelectionPosition(canReturnInvalid ? INVALID_POSITION : posLineStart);\n}\n\n/**\n* Find the document position corresponding to an x coordinate on a particular document line.\n* Ensure is between whole characters when document is in multi-byte or UTF-8 mode.\n* This method is used for rectangular selections and does not work on wrapped lines.\n*/\nSelectionPosition EditView::SPositionFromLineX(Surface *surface, const EditModel &model, int lineDoc, int x, const ViewStyle &vs) {\n\tAutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));\n\tif (surface && ll) {\n\t\tconst int posLineStart = model.pdoc->LineStart(lineDoc);\n\t\tLayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);\n\t\tconst Range rangeSubLine = ll->SubLineRange(0);\n\t\tconst XYPOSITION subLineStart = ll->positions[rangeSubLine.start];\n\t\tconst int positionInLine = ll->FindPositionFromX(x + subLineStart, rangeSubLine, false);\n\t\tif (positionInLine < rangeSubLine.end) {\n\t\t\treturn SelectionPosition(model.pdoc->MovePositionOutsideChar(positionInLine + posLineStart, 1));\n\t\t}\n\t\tconst XYPOSITION spaceWidth = vs.styles[ll->EndLineStyle()].spaceWidth;\n\t\tconst int spaceOffset = static_cast<int>(\n\t\t\t(x + subLineStart - ll->positions[rangeSubLine.end] + spaceWidth / 2) / spaceWidth);\n\t\treturn SelectionPosition(rangeSubLine.end + posLineStart, spaceOffset);\n\t}\n\treturn SelectionPosition(0);\n}\n\nint EditView::DisplayFromPosition(Surface *surface, const EditModel &model, int pos, const ViewStyle &vs) {\n\tint lineDoc = model.pdoc->LineFromPosition(pos);\n\tint lineDisplay = model.cs.DisplayFromDoc(lineDoc);\n\tAutoLineLayout ll(llc, RetrieveLineLayout(lineDoc, model));\n\tif (surface && ll) {\n\t\tLayoutLine(model, lineDoc, surface, vs, ll, model.wrapWidth);\n\t\tunsigned int posLineStart = model.pdoc->LineStart(lineDoc);\n\t\tint posInLine = pos - posLineStart;\n\t\tlineDisplay--; // To make up for first increment ahead.\n\t\tfor (int subLine = 0; subLine < ll->lines; subLine++) {\n\t\t\tif (posInLine >= ll->LineStart(subLine)) {\n\t\t\t\tlineDisplay++;\n\t\t\t}\n\t\t}\n\t}\n\treturn lineDisplay;\n}\n\nint EditView::StartEndDisplayLine(Surface *surface, const EditModel &model, int pos, bool start, const ViewStyle &vs) {\n\tint line = model.pdoc->LineFromPosition(pos);\n\tAutoLineLayout ll(llc, RetrieveLineLayout(line, model));\n\tint posRet = INVALID_POSITION;\n\tif (surface && ll) {\n\t\tunsigned int posLineStart = model.pdoc->LineStart(line);\n\t\tLayoutLine(model, line, surface, vs, ll, model.wrapWidth);\n\t\tint posInLine = pos - posLineStart;\n\t\tif (posInLine <= ll->maxLineLength) {\n\t\t\tfor (int subLine = 0; subLine < ll->lines; subLine++) {\n\t\t\t\tif ((posInLine >= ll->LineStart(subLine)) &&\n\t\t\t\t    (posInLine <= ll->LineStart(subLine + 1)) &&\n\t\t\t\t    (posInLine <= ll->numCharsBeforeEOL)) {\n\t\t\t\t\tif (start) {\n\t\t\t\t\t\tposRet = ll->LineStart(subLine) + posLineStart;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (subLine == ll->lines - 1)\n\t\t\t\t\t\t\tposRet = ll->numCharsBeforeEOL + posLineStart;\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tposRet = ll->LineStart(subLine + 1) + posLineStart - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn posRet;\n}\n\nstatic ColourDesired SelectionBackground(const ViewStyle &vsDraw, bool main, bool primarySelection) {\n\treturn main ?\n\t\t(primarySelection ? vsDraw.selColours.back : vsDraw.selBackground2) :\n\t\tvsDraw.selAdditionalBackground;\n}\n\nstatic ColourDesired TextBackground(const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tColourOptional background, int inSelection, bool inHotspot, int styleMain, int i) {\n\tif (inSelection == 1) {\n\t\tif (vsDraw.selColours.back.isSet && (vsDraw.selAlpha == SC_ALPHA_NOALPHA)) {\n\t\t\treturn SelectionBackground(vsDraw, true, model.primarySelection);\n\t\t}\n\t} else if (inSelection == 2) {\n\t\tif (vsDraw.selColours.back.isSet && (vsDraw.selAdditionalAlpha == SC_ALPHA_NOALPHA)) {\n\t\t\treturn SelectionBackground(vsDraw, false, model.primarySelection);\n\t\t}\n\t} else {\n\t\tif ((vsDraw.edgeState == EDGE_BACKGROUND) &&\n\t\t\t(i >= ll->edgeColumn) &&\n\t\t\t(i < ll->numCharsBeforeEOL))\n\t\t\treturn vsDraw.theEdge.colour;\n\t\tif (inHotspot && vsDraw.hotspotColours.back.isSet)\n\t\t\treturn vsDraw.hotspotColours.back;\n\t}\n\tif (background.isSet && (styleMain != STYLE_BRACELIGHT) && (styleMain != STYLE_BRACEBAD)) {\n\t\treturn background;\n\t} else {\n\t\treturn vsDraw.styles[styleMain].back;\n\t}\n}\n\nvoid EditView::DrawIndentGuide(Surface *surface, int lineVisible, int lineHeight, int start, PRectangle rcSegment, bool highlight) {\n\tPoint from = Point::FromInts(0, ((lineVisible & 1) && (lineHeight & 1)) ? 1 : 0);\n\tPRectangle rcCopyArea = PRectangle::FromInts(start + 1, static_cast<int>(rcSegment.top), start + 2, static_cast<int>(rcSegment.bottom));\n\tsurface->Copy(rcCopyArea, from,\n\t\thighlight ? *pixmapIndentGuideHighlight : *pixmapIndentGuide);\n}\n\nstatic void SimpleAlphaRectangle(Surface *surface, PRectangle rc, ColourDesired fill, int alpha) {\n\tif (alpha != SC_ALPHA_NOALPHA) {\n\t\tsurface->AlphaRectangle(rc, 0, fill, alpha, fill, alpha, 0);\n\t}\n}\n\nstatic void DrawTextBlob(Surface *surface, const ViewStyle &vsDraw, PRectangle rcSegment,\n\tconst char *s, ColourDesired textBack, ColourDesired textFore, bool fillBackground) {\n\tif (rcSegment.Empty())\n\t\treturn;\n\tif (fillBackground) {\n\t\tsurface->FillRectangle(rcSegment, textBack);\n\t}\n\tFontAlias ctrlCharsFont = vsDraw.styles[STYLE_CONTROLCHAR].font;\n\tint normalCharHeight = static_cast<int>(surface->Ascent(ctrlCharsFont) -\n\t\tsurface->InternalLeading(ctrlCharsFont));\n\tPRectangle rcCChar = rcSegment;\n\trcCChar.left = rcCChar.left + 1;\n\trcCChar.top = rcSegment.top + vsDraw.maxAscent - normalCharHeight;\n\trcCChar.bottom = rcSegment.top + vsDraw.maxAscent + 1;\n\tPRectangle rcCentral = rcCChar;\n\trcCentral.top++;\n\trcCentral.bottom--;\n\tsurface->FillRectangle(rcCentral, textFore);\n\tPRectangle rcChar = rcCChar;\n\trcChar.left++;\n\trcChar.right--;\n\tsurface->DrawTextClipped(rcChar, ctrlCharsFont,\n\t\trcSegment.top + vsDraw.maxAscent, s, static_cast<int>(s ? strlen(s) : 0),\n\t\ttextBack, textFore);\n}\n\nvoid EditView::DrawEOL(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tPRectangle rcLine, int line, int lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart,\n\tColourOptional background) {\n\n\tconst int posLineStart = model.pdoc->LineStart(line);\n\tPRectangle rcSegment = rcLine;\n\n\tconst bool lastSubLine = subLine == (ll->lines - 1);\n\tXYPOSITION virtualSpace = 0;\n\tif (lastSubLine) {\n\t\tconst XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;\n\t\tvirtualSpace = model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line)) * spaceWidth;\n\t}\n\tXYPOSITION xEol = static_cast<XYPOSITION>(ll->positions[lineEnd] - subLineStart);\n\n\t// Fill the virtual space and show selections within it\n\tif (virtualSpace > 0.0f) {\n\t\trcSegment.left = xEol + xStart;\n\t\trcSegment.right = xEol + xStart + virtualSpace;\n\t\tsurface->FillRectangle(rcSegment, background.isSet ? background : vsDraw.styles[ll->styles[ll->numCharsInLine]].back);\n\t\tif (!hideSelection && ((vsDraw.selAlpha == SC_ALPHA_NOALPHA) || (vsDraw.selAdditionalAlpha == SC_ALPHA_NOALPHA))) {\n\t\t\tSelectionSegment virtualSpaceRange(SelectionPosition(model.pdoc->LineEnd(line)), SelectionPosition(model.pdoc->LineEnd(line), model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line))));\n\t\t\tfor (size_t r = 0; r<model.sel.Count(); r++) {\n\t\t\t\tint alpha = (r == model.sel.Main()) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;\n\t\t\t\tif (alpha == SC_ALPHA_NOALPHA) {\n\t\t\t\t\tSelectionSegment portion = model.sel.Range(r).Intersect(virtualSpaceRange);\n\t\t\t\t\tif (!portion.Empty()) {\n\t\t\t\t\t\tconst XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;\n\t\t\t\t\t\trcSegment.left = xStart + ll->positions[portion.start.Position() - posLineStart] -\n\t\t\t\t\t\t\tstatic_cast<XYPOSITION>(subLineStart)+portion.start.VirtualSpace() * spaceWidth;\n\t\t\t\t\t\trcSegment.right = xStart + ll->positions[portion.end.Position() - posLineStart] -\n\t\t\t\t\t\t\tstatic_cast<XYPOSITION>(subLineStart)+portion.end.VirtualSpace() * spaceWidth;\n\t\t\t\t\t\trcSegment.left = (rcSegment.left > rcLine.left) ? rcSegment.left : rcLine.left;\n\t\t\t\t\t\trcSegment.right = (rcSegment.right < rcLine.right) ? rcSegment.right : rcLine.right;\n\t\t\t\t\t\tsurface->FillRectangle(rcSegment, SelectionBackground(vsDraw, r == model.sel.Main(), model.primarySelection));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tint eolInSelection = 0;\n\tint alpha = SC_ALPHA_NOALPHA;\n\tif (!hideSelection) {\n\t\tint posAfterLineEnd = model.pdoc->LineStart(line + 1);\n\t\teolInSelection = (lastSubLine == true) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0;\n\t\talpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;\n\t}\n\n\t// Draw the [CR], [LF], or [CR][LF] blobs if visible line ends are on\n\tXYPOSITION blobsWidth = 0;\n\tif (lastSubLine) {\n\t\tfor (int eolPos = ll->numCharsBeforeEOL; eolPos<ll->numCharsInLine; eolPos++) {\n\t\t\trcSegment.left = xStart + ll->positions[eolPos] - static_cast<XYPOSITION>(subLineStart)+virtualSpace;\n\t\t\trcSegment.right = xStart + ll->positions[eolPos + 1] - static_cast<XYPOSITION>(subLineStart)+virtualSpace;\n\t\t\tblobsWidth += rcSegment.Width();\n\t\t\tchar hexits[4];\n\t\t\tconst char *ctrlChar;\n\t\t\tunsigned char chEOL = ll->chars[eolPos];\n\t\t\tint styleMain = ll->styles[eolPos];\n\t\t\tColourDesired textBack = TextBackground(model, vsDraw, ll, background, eolInSelection, false, styleMain, eolPos);\n\t\t\tif (UTF8IsAscii(chEOL)) {\n\t\t\t\tctrlChar = ControlCharacterString(chEOL);\n\t\t\t} else {\n\t\t\t\tconst Representation *repr = model.reprs.RepresentationFromCharacter(ll->chars + eolPos, ll->numCharsInLine - eolPos);\n\t\t\t\tif (repr) {\n\t\t\t\t\tctrlChar = repr->stringRep.c_str();\n\t\t\t\t\teolPos = ll->numCharsInLine;\n\t\t\t\t} else {\n\t\t\t\t\tsprintf(hexits, \"x%2X\", chEOL);\n\t\t\t\t\tctrlChar = hexits;\n\t\t\t\t}\n\t\t\t}\n\t\t\tColourDesired textFore = vsDraw.styles[styleMain].fore;\n\t\t\tif (eolInSelection && vsDraw.selColours.fore.isSet) {\n\t\t\t\ttextFore = (eolInSelection == 1) ? vsDraw.selColours.fore : vsDraw.selAdditionalForeground;\n\t\t\t}\n\t\t\tif (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1)) {\n\t\t\t\tif (alpha == SC_ALPHA_NOALPHA) {\n\t\t\t\t\tsurface->FillRectangle(rcSegment, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection));\n\t\t\t\t} else {\n\t\t\t\t\tsurface->FillRectangle(rcSegment, textBack);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsurface->FillRectangle(rcSegment, textBack);\n\t\t\t}\n\t\t\tDrawTextBlob(surface, vsDraw, rcSegment, ctrlChar, textBack, textFore, phasesDraw == phasesOne);\n\t\t\tif (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {\n\t\t\t\tSimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection), alpha);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Draw the eol-is-selected rectangle\n\trcSegment.left = xEol + xStart + virtualSpace + blobsWidth;\n\trcSegment.right = rcSegment.left + vsDraw.aveCharWidth;\n\n\tif (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha == SC_ALPHA_NOALPHA)) {\n\t\tsurface->FillRectangle(rcSegment, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection));\n\t} else {\n\t\tif (background.isSet) {\n\t\t\tsurface->FillRectangle(rcSegment, background);\n\t\t} else if (line < model.pdoc->LinesTotal() - 1) {\n\t\t\tsurface->FillRectangle(rcSegment, vsDraw.styles[ll->styles[ll->numCharsInLine]].back);\n\t\t} else if (vsDraw.styles[ll->styles[ll->numCharsInLine]].eolFilled) {\n\t\t\tsurface->FillRectangle(rcSegment, vsDraw.styles[ll->styles[ll->numCharsInLine]].back);\n\t\t} else {\n\t\t\tsurface->FillRectangle(rcSegment, vsDraw.styles[STYLE_DEFAULT].back);\n\t\t}\n\t\tif (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {\n\t\t\tSimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection), alpha);\n\t\t}\n\t}\n\n\trcSegment.left = rcSegment.right;\n\tif (rcSegment.left < rcLine.left)\n\t\trcSegment.left = rcLine.left;\n\trcSegment.right = rcLine.right;\n\n\tbool fillRemainder = !lastSubLine || model.foldDisplayTextStyle == SC_FOLDDISPLAYTEXT_HIDDEN || !model.cs.GetFoldDisplayTextShown(line);\n\tif (fillRemainder) {\n\t\t// Fill the remainder of the line\n\t\tFillLineRemainder(surface, model, vsDraw, ll, line, rcSegment, subLine);\n\t}\n\n\tbool drawWrapMarkEnd = false;\n\n\tif (vsDraw.wrapVisualFlags & SC_WRAPVISUALFLAG_END) {\n\t\tif (subLine + 1 < ll->lines) {\n\t\t\tdrawWrapMarkEnd = ll->LineStart(subLine + 1) != 0;\n\t\t}\n\t}\n\n\tif (drawWrapMarkEnd) {\n\t\tPRectangle rcPlace = rcSegment;\n\n\t\tif (vsDraw.wrapVisualFlagsLocation & SC_WRAPVISUALFLAGLOC_END_BY_TEXT) {\n\t\t\trcPlace.left = xEol + xStart + virtualSpace;\n\t\t\trcPlace.right = rcPlace.left + vsDraw.aveCharWidth;\n\t\t} else {\n\t\t\t// rcLine is clipped to text area\n\t\t\trcPlace.right = rcLine.right;\n\t\t\trcPlace.left = rcPlace.right - vsDraw.aveCharWidth;\n\t\t}\n\t\tif (customDrawWrapMarker == NULL) {\n\t\t\tDrawWrapMarker(surface, rcPlace, true, vsDraw.WrapColour());\n\t\t} else {\n\t\t\tcustomDrawWrapMarker(surface, rcPlace, true, vsDraw.WrapColour());\n\t\t}\n\t}\n}\n\nstatic void DrawIndicator(int indicNum, int startPos, int endPos, Surface *surface, const ViewStyle &vsDraw,\n\tconst LineLayout *ll, int xStart, PRectangle rcLine, int secondCharacter, int subLine, Indicator::DrawState drawState, int value) {\n\tconst XYPOSITION subLineStart = ll->positions[ll->LineStart(subLine)];\n\tPRectangle rcIndic(\n\t\tll->positions[startPos] + xStart - subLineStart,\n\t\trcLine.top + vsDraw.maxAscent,\n\t\tll->positions[endPos] + xStart - subLineStart,\n\t\trcLine.top + vsDraw.maxAscent + 3);\n\tPRectangle rcFirstCharacter = rcIndic;\n\t// Allow full descent space for character indicators\n\trcFirstCharacter.bottom = rcLine.top + vsDraw.maxAscent + vsDraw.maxDescent;\n\tif (secondCharacter >= 0) {\n\t\trcFirstCharacter.right = ll->positions[secondCharacter] + xStart - subLineStart;\n\t} else {\n\t\t// Indicator continued from earlier line so make an empty box and don't draw\n\t\trcFirstCharacter.right = rcFirstCharacter.left;\n\t}\n\tvsDraw.indicators[indicNum].Draw(surface, rcIndic, rcLine, rcFirstCharacter, drawState, value);\n}\n\nstatic void DrawIndicators(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint line, int xStart, PRectangle rcLine, int subLine, int lineEnd, bool under, int hoverIndicatorPos) {\n\t// Draw decorators\n\tconst int posLineStart = model.pdoc->LineStart(line);\n\tconst int lineStart = ll->LineStart(subLine);\n\tconst int posLineEnd = posLineStart + lineEnd;\n\n\tfor (Decoration *deco = model.pdoc->decorations.root; deco; deco = deco->next) {\n\t\tif (under == vsDraw.indicators[deco->indicator].under) {\n\t\t\tint startPos = posLineStart + lineStart;\n\t\t\tif (!deco->rs.ValueAt(startPos)) {\n\t\t\t\tstartPos = deco->rs.EndRun(startPos);\n\t\t\t}\n\t\t\twhile ((startPos < posLineEnd) && (deco->rs.ValueAt(startPos))) {\n\t\t\t\tconst Range rangeRun(deco->rs.StartRun(startPos), deco->rs.EndRun(startPos));\n\t\t\t\tconst int endPos = std::min(rangeRun.end, posLineEnd);\n\t\t\t\tconst bool hover = vsDraw.indicators[deco->indicator].IsDynamic() &&\n\t\t\t\t\trangeRun.ContainsCharacter(hoverIndicatorPos);\n\t\t\t\tconst int value = deco->rs.ValueAt(startPos);\n\t\t\t\tIndicator::DrawState drawState = hover ? Indicator::drawHover : Indicator::drawNormal;\n\t\t\t\tconst int posSecond = model.pdoc->MovePositionOutsideChar(rangeRun.First() + 1, 1);\n\t\t\t\tDrawIndicator(deco->indicator, startPos - posLineStart, endPos - posLineStart,\n\t\t\t\t\tsurface, vsDraw, ll, xStart, rcLine, posSecond - posLineStart, subLine, drawState, value);\n\t\t\t\tstartPos = endPos;\n\t\t\t\tif (!deco->rs.ValueAt(startPos)) {\n\t\t\t\t\tstartPos = deco->rs.EndRun(startPos);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Use indicators to highlight matching braces\n\tif ((vsDraw.braceHighlightIndicatorSet && (model.bracesMatchStyle == STYLE_BRACELIGHT)) ||\n\t\t(vsDraw.braceBadLightIndicatorSet && (model.bracesMatchStyle == STYLE_BRACEBAD))) {\n\t\tint braceIndicator = (model.bracesMatchStyle == STYLE_BRACELIGHT) ? vsDraw.braceHighlightIndicator : vsDraw.braceBadLightIndicator;\n\t\tif (under == vsDraw.indicators[braceIndicator].under) {\n\t\t\tRange rangeLine(posLineStart + lineStart, posLineEnd);\n\t\t\tif (rangeLine.ContainsCharacter(model.braces[0])) {\n\t\t\t\tint braceOffset = model.braces[0] - posLineStart;\n\t\t\t\tif (braceOffset < ll->numCharsInLine) {\n\t\t\t\t\tconst int secondOffset = model.pdoc->MovePositionOutsideChar(model.braces[0] + 1, 1) - posLineStart;\n\t\t\t\t\tDrawIndicator(braceIndicator, braceOffset, braceOffset + 1, surface, vsDraw, ll, xStart, rcLine, secondOffset, subLine, Indicator::drawNormal, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (rangeLine.ContainsCharacter(model.braces[1])) {\n\t\t\t\tint braceOffset = model.braces[1] - posLineStart;\n\t\t\t\tif (braceOffset < ll->numCharsInLine) {\n\t\t\t\t\tconst int secondOffset = model.pdoc->MovePositionOutsideChar(model.braces[1] + 1, 1) - posLineStart;\n\t\t\t\t\tDrawIndicator(braceIndicator, braceOffset, braceOffset + 1, surface, vsDraw, ll, xStart, rcLine, secondOffset, subLine, Indicator::drawNormal, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid EditView::DrawFoldDisplayText(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\t\t\t\t\t\t\t  int line, int xStart, PRectangle rcLine, int subLine, XYACCUMULATOR subLineStart, DrawPhase phase) {\n\tconst bool lastSubLine = subLine == (ll->lines - 1);\n\tif (!lastSubLine)\n\t\treturn;\n\n\tif ((model.foldDisplayTextStyle == SC_FOLDDISPLAYTEXT_HIDDEN) || !model.cs.GetFoldDisplayTextShown(line))\n\t\treturn;\n\n\tPRectangle rcSegment = rcLine;\n\tconst char *foldDisplayText = model.cs.GetFoldDisplayText(line);\n\tconst int lengthFoldDisplayText = static_cast<int>(strlen(foldDisplayText));\n\tFontAlias fontText = vsDraw.styles[STYLE_FOLDDISPLAYTEXT].font;\n\tconst int widthFoldDisplayText = static_cast<int>(surface->WidthText(fontText, foldDisplayText, lengthFoldDisplayText));\n\n\tint eolInSelection = 0;\n\tint alpha = SC_ALPHA_NOALPHA;\n\tif (!hideSelection) {\n\t\tint posAfterLineEnd = model.pdoc->LineStart(line + 1);\n\t\teolInSelection = (subLine == (ll->lines - 1)) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0;\n\t\talpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;\n\t}\n\n\tconst XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;\n\tXYPOSITION virtualSpace = model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line)) * spaceWidth;\n\trcSegment.left = xStart + static_cast<XYPOSITION>(ll->positions[ll->numCharsInLine] - subLineStart) + spaceWidth + virtualSpace;\n\trcSegment.right = rcSegment.left + static_cast<XYPOSITION>(widthFoldDisplayText);\n\n\tColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);\n\tFontAlias textFont = vsDraw.styles[STYLE_FOLDDISPLAYTEXT].font;\n\tColourDesired textFore = vsDraw.styles[STYLE_FOLDDISPLAYTEXT].fore;\n\tif (eolInSelection && (vsDraw.selColours.fore.isSet)) {\n\t\ttextFore = (eolInSelection == 1) ? vsDraw.selColours.fore : vsDraw.selAdditionalForeground;\n\t}\n\tColourDesired textBack = TextBackground(model, vsDraw, ll, background, eolInSelection,\n\t\t\t\t\t\t\t\t\t\t\tfalse, STYLE_FOLDDISPLAYTEXT, -1);\n\n\tif (model.trackLineWidth) {\n\t\tif (rcSegment.right + 1> lineWidthMaxSeen) {\n\t\t\t// Fold display text border drawn on rcSegment.right with width 1 is the last visble object of the line\n\t\t\tlineWidthMaxSeen = static_cast<int>(rcSegment.right + 1);\n\t\t}\n\t}\n\n\tif ((phasesDraw != phasesOne) && (phase & drawBack)) {\n\t\tsurface->FillRectangle(rcSegment, textBack);\n\n\t\t// Fill Remainder of the line\n\t\tPRectangle rcRemainder = rcSegment;\n\t\trcRemainder.left = rcRemainder.right + 1;\n\t\tif (rcRemainder.left < rcLine.left)\n\t\t\trcRemainder.left = rcLine.left;\n\t\trcRemainder.right = rcLine.right;\n\t\tFillLineRemainder(surface, model, vsDraw, ll, line, rcRemainder, subLine);\n\t}\n\n\tif (phase & drawText) {\n\t\tif (phasesDraw != phasesOne) {\n\t\t\tsurface->DrawTextTransparent(rcSegment, textFont,\n\t\t\t\trcSegment.top + vsDraw.maxAscent, foldDisplayText,\n\t\t\t\tlengthFoldDisplayText, textFore);\n\t\t} else {\n\t\t\tsurface->DrawTextNoClip(rcSegment, textFont,\n\t\t\t\trcSegment.top + vsDraw.maxAscent, foldDisplayText,\n\t\t\t\tlengthFoldDisplayText, textFore, textBack);\n\t\t}\n\t}\n\n\tif (phase & drawIndicatorsFore) {\n\t\tif (model.foldDisplayTextStyle == SC_FOLDDISPLAYTEXT_BOXED) {\n\t\t\tsurface->PenColour(textFore);\n\t\t\tsurface->MoveTo(static_cast<int>(rcSegment.left), static_cast<int>(rcSegment.top));\n\t\t\tsurface->LineTo(static_cast<int>(rcSegment.left), static_cast<int>(rcSegment.bottom));\n\t\t\tsurface->MoveTo(static_cast<int>(rcSegment.right), static_cast<int>(rcSegment.top));\n\t\t\tsurface->LineTo(static_cast<int>(rcSegment.right), static_cast<int>(rcSegment.bottom));\n\t\t\tsurface->MoveTo(static_cast<int>(rcSegment.left), static_cast<int>(rcSegment.top));\n\t\t\tsurface->LineTo(static_cast<int>(rcSegment.right), static_cast<int>(rcSegment.top));\n\t\t\tsurface->MoveTo(static_cast<int>(rcSegment.left), static_cast<int>(rcSegment.bottom - 1));\n\t\t\tsurface->LineTo(static_cast<int>(rcSegment.right), static_cast<int>(rcSegment.bottom - 1));\n\t\t}\n\t}\n\n\tif (phase & drawSelectionTranslucent) {\n\t\tif (eolInSelection && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && alpha != SC_ALPHA_NOALPHA) {\n\t\t\tSimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection), alpha);\n\t\t}\n\t}\n}\n\nstatic bool AnnotationBoxedOrIndented(int annotationVisible) {\n\treturn annotationVisible == ANNOTATION_BOXED || annotationVisible == ANNOTATION_INDENTED;\n}\n\nvoid EditView::DrawAnnotation(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint line, int xStart, PRectangle rcLine, int subLine, DrawPhase phase) {\n\tint indent = static_cast<int>(model.pdoc->GetLineIndentation(line) * vsDraw.spaceWidth);\n\tPRectangle rcSegment = rcLine;\n\tint annotationLine = subLine - ll->lines;\n\tconst StyledText stAnnotation = model.pdoc->AnnotationStyledText(line);\n\tif (stAnnotation.text && ValidStyledText(vsDraw, vsDraw.annotationStyleOffset, stAnnotation)) {\n\t\tif (phase & drawBack) {\n\t\t\tsurface->FillRectangle(rcSegment, vsDraw.styles[0].back);\n\t\t}\n\t\trcSegment.left = static_cast<XYPOSITION>(xStart);\n\t\tif (model.trackLineWidth || AnnotationBoxedOrIndented(vsDraw.annotationVisible)) {\n\t\t\t// Only care about calculating width if tracking or need to draw indented box\n\t\t\tint widthAnnotation = WidestLineWidth(surface, vsDraw, vsDraw.annotationStyleOffset, stAnnotation);\n\t\t\tif (AnnotationBoxedOrIndented(vsDraw.annotationVisible)) {\n\t\t\t\twidthAnnotation += static_cast<int>(vsDraw.spaceWidth * 2); // Margins\n\t\t\t\trcSegment.left = static_cast<XYPOSITION>(xStart + indent);\n\t\t\t\trcSegment.right = rcSegment.left + widthAnnotation;\n\t\t\t}\n\t\t\tif (widthAnnotation > lineWidthMaxSeen)\n\t\t\t\tlineWidthMaxSeen = widthAnnotation;\n\t\t}\n\t\tconst int annotationLines = model.pdoc->AnnotationLines(line);\n\t\tsize_t start = 0;\n\t\tsize_t lengthAnnotation = stAnnotation.LineLength(start);\n\t\tint lineInAnnotation = 0;\n\t\twhile ((lineInAnnotation < annotationLine) && (start < stAnnotation.length)) {\n\t\t\tstart += lengthAnnotation + 1;\n\t\t\tlengthAnnotation = stAnnotation.LineLength(start);\n\t\t\tlineInAnnotation++;\n\t\t}\n\t\tPRectangle rcText = rcSegment;\n\t\tif ((phase & drawBack) && AnnotationBoxedOrIndented(vsDraw.annotationVisible)) {\n\t\t\tsurface->FillRectangle(rcText,\n\t\t\t\tvsDraw.styles[stAnnotation.StyleAt(start) + vsDraw.annotationStyleOffset].back);\n\t\t\trcText.left += vsDraw.spaceWidth;\n\t\t}\n\t\tDrawStyledText(surface, vsDraw, vsDraw.annotationStyleOffset, rcText,\n\t\t\tstAnnotation, start, lengthAnnotation, phase);\n\t\tif ((phase & drawBack) && (vsDraw.annotationVisible == ANNOTATION_BOXED)) {\n\t\t\tsurface->PenColour(vsDraw.styles[vsDraw.annotationStyleOffset].fore);\n\t\t\tsurface->MoveTo(static_cast<int>(rcSegment.left), static_cast<int>(rcSegment.top));\n\t\t\tsurface->LineTo(static_cast<int>(rcSegment.left), static_cast<int>(rcSegment.bottom));\n\t\t\tsurface->MoveTo(static_cast<int>(rcSegment.right), static_cast<int>(rcSegment.top));\n\t\t\tsurface->LineTo(static_cast<int>(rcSegment.right), static_cast<int>(rcSegment.bottom));\n\t\t\tif (subLine == ll->lines) {\n\t\t\t\tsurface->MoveTo(static_cast<int>(rcSegment.left), static_cast<int>(rcSegment.top));\n\t\t\t\tsurface->LineTo(static_cast<int>(rcSegment.right), static_cast<int>(rcSegment.top));\n\t\t\t}\n\t\t\tif (subLine == ll->lines + annotationLines - 1) {\n\t\t\t\tsurface->MoveTo(static_cast<int>(rcSegment.left), static_cast<int>(rcSegment.bottom - 1));\n\t\t\t\tsurface->LineTo(static_cast<int>(rcSegment.right), static_cast<int>(rcSegment.bottom - 1));\n\t\t\t}\n\t\t}\n\t}\n}\n\nstatic void DrawBlockCaret(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint subLine, int xStart, int offset, int posCaret, PRectangle rcCaret, ColourDesired caretColour) {\n\n\tint lineStart = ll->LineStart(subLine);\n\tint posBefore = posCaret;\n\tint posAfter = model.pdoc->MovePositionOutsideChar(posCaret + 1, 1);\n\tint numCharsToDraw = posAfter - posCaret;\n\n\t// Work out where the starting and ending offsets are. We need to\n\t// see if the previous character shares horizontal space, such as a\n\t// glyph / combining character. If so we'll need to draw that too.\n\tint offsetFirstChar = offset;\n\tint offsetLastChar = offset + (posAfter - posCaret);\n\twhile ((posBefore > 0) && ((offsetLastChar - numCharsToDraw) >= lineStart)) {\n\t\tif ((ll->positions[offsetLastChar] - ll->positions[offsetLastChar - numCharsToDraw]) > 0) {\n\t\t\t// The char does not share horizontal space\n\t\t\tbreak;\n\t\t}\n\t\t// Char shares horizontal space, update the numChars to draw\n\t\t// Update posBefore to point to the prev char\n\t\tposBefore = model.pdoc->MovePositionOutsideChar(posBefore - 1, -1);\n\t\tnumCharsToDraw = posAfter - posBefore;\n\t\toffsetFirstChar = offset - (posCaret - posBefore);\n\t}\n\n\t// See if the next character shares horizontal space, if so we'll\n\t// need to draw that too.\n\tif (offsetFirstChar < 0)\n\t\toffsetFirstChar = 0;\n\tnumCharsToDraw = offsetLastChar - offsetFirstChar;\n\twhile ((offsetLastChar < ll->LineStart(subLine + 1)) && (offsetLastChar <= ll->numCharsInLine)) {\n\t\t// Update posAfter to point to the 2nd next char, this is where\n\t\t// the next character ends, and 2nd next begins. We'll need\n\t\t// to compare these two\n\t\tposBefore = posAfter;\n\t\tposAfter = model.pdoc->MovePositionOutsideChar(posAfter + 1, 1);\n\t\toffsetLastChar = offset + (posAfter - posCaret);\n\t\tif ((ll->positions[offsetLastChar] - ll->positions[offsetLastChar - (posAfter - posBefore)]) > 0) {\n\t\t\t// The char does not share horizontal space\n\t\t\tbreak;\n\t\t}\n\t\t// Char shares horizontal space, update the numChars to draw\n\t\tnumCharsToDraw = offsetLastChar - offsetFirstChar;\n\t}\n\n\t// We now know what to draw, update the caret drawing rectangle\n\trcCaret.left = ll->positions[offsetFirstChar] - ll->positions[lineStart] + xStart;\n\trcCaret.right = ll->positions[offsetFirstChar + numCharsToDraw] - ll->positions[lineStart] + xStart;\n\n\t// Adjust caret position to take into account any word wrapping symbols.\n\tif ((ll->wrapIndent != 0) && (lineStart != 0)) {\n\t\tXYPOSITION wordWrapCharWidth = ll->wrapIndent;\n\t\trcCaret.left += wordWrapCharWidth;\n\t\trcCaret.right += wordWrapCharWidth;\n\t}\n\n\t// This character is where the caret block is, we override the colours\n\t// (inversed) for drawing the caret here.\n\tint styleMain = ll->styles[offsetFirstChar];\n\tFontAlias fontText = vsDraw.styles[styleMain].font;\n\tsurface->DrawTextClipped(rcCaret, fontText,\n\t\trcCaret.top + vsDraw.maxAscent, ll->chars + offsetFirstChar,\n\t\tnumCharsToDraw, vsDraw.styles[styleMain].back,\n\t\tcaretColour);\n}\n\nvoid EditView::DrawCarets(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint lineDoc, int xStart, PRectangle rcLine, int subLine) const {\n\t// When drag is active it is the only caret drawn\n\tbool drawDrag = model.posDrag.IsValid();\n\tif (hideSelection && !drawDrag)\n\t\treturn;\n\tconst int posLineStart = model.pdoc->LineStart(lineDoc);\n\t// For each selection draw\n\tfor (size_t r = 0; (r<model.sel.Count()) || drawDrag; r++) {\n\t\tconst bool mainCaret = r == model.sel.Main();\n\t\tconst SelectionPosition posCaret = (drawDrag ? model.posDrag : model.sel.Range(r).caret);\n\t\tconst int offset = posCaret.Position() - posLineStart;\n\t\tconst XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;\n\t\tconst XYPOSITION virtualOffset = posCaret.VirtualSpace() * spaceWidth;\n\t\tif (ll->InLine(offset, subLine) && offset <= ll->numCharsBeforeEOL) {\n\t\t\tXYPOSITION xposCaret = ll->positions[offset] + virtualOffset - ll->positions[ll->LineStart(subLine)];\n\t\t\tif (ll->wrapIndent != 0) {\n\t\t\t\tint lineStart = ll->LineStart(subLine);\n\t\t\t\tif (lineStart != 0)\t// Wrapped\n\t\t\t\t\txposCaret += ll->wrapIndent;\n\t\t\t}\n\t\t\tbool caretBlinkState = (model.caret.active && model.caret.on) || (!additionalCaretsBlink && !mainCaret);\n\t\t\tbool caretVisibleState = additionalCaretsVisible || mainCaret;\n\t\t\tif ((xposCaret >= 0) && (vsDraw.caretWidth > 0) && (vsDraw.caretStyle != CARETSTYLE_INVISIBLE) &&\n\t\t\t\t((model.posDrag.IsValid()) || (caretBlinkState && caretVisibleState))) {\n\t\t\t\tbool caretAtEOF = false;\n\t\t\t\tbool caretAtEOL = false;\n\t\t\t\tbool drawBlockCaret = false;\n\t\t\t\tXYPOSITION widthOverstrikeCaret;\n\t\t\t\tXYPOSITION caretWidthOffset = 0;\n\t\t\t\tPRectangle rcCaret = rcLine;\n\n\t\t\t\tif (posCaret.Position() == model.pdoc->Length()) {   // At end of document\n\t\t\t\t\tcaretAtEOF = true;\n\t\t\t\t\twidthOverstrikeCaret = vsDraw.aveCharWidth;\n\t\t\t\t} else if ((posCaret.Position() - posLineStart) >= ll->numCharsInLine) {\t// At end of line\n\t\t\t\t\tcaretAtEOL = true;\n\t\t\t\t\twidthOverstrikeCaret = vsDraw.aveCharWidth;\n\t\t\t\t} else {\n\t\t\t\t\tconst int widthChar = model.pdoc->LenChar(posCaret.Position());\n\t\t\t\t\twidthOverstrikeCaret = ll->positions[offset + widthChar] - ll->positions[offset];\n\t\t\t\t}\n\t\t\t\tif (widthOverstrikeCaret < 3)\t// Make sure its visible\n\t\t\t\t\twidthOverstrikeCaret = 3;\n\n\t\t\t\tif (xposCaret > 0)\n\t\t\t\t\tcaretWidthOffset = 0.51f;\t// Move back so overlaps both character cells.\n\t\t\t\txposCaret += xStart;\n\t\t\t\tif (model.posDrag.IsValid()) {\n\t\t\t\t\t/* Dragging text, use a line caret */\n\t\t\t\t\trcCaret.left = static_cast<XYPOSITION>(RoundXYPosition(xposCaret - caretWidthOffset));\n\t\t\t\t\trcCaret.right = rcCaret.left + vsDraw.caretWidth;\n\t\t\t\t} else if (model.inOverstrike && drawOverstrikeCaret) {\n\t\t\t\t\t/* Overstrike (insert mode), use a modified bar caret */\n\t\t\t\t\trcCaret.top = rcCaret.bottom - 2;\n\t\t\t\t\trcCaret.left = xposCaret + 1;\n\t\t\t\t\trcCaret.right = rcCaret.left + widthOverstrikeCaret - 1;\n\t\t\t\t} else if ((vsDraw.caretStyle == CARETSTYLE_BLOCK) || imeCaretBlockOverride) {\n\t\t\t\t\t/* Block caret */\n\t\t\t\t\trcCaret.left = xposCaret;\n\t\t\t\t\tif (!caretAtEOL && !caretAtEOF && (ll->chars[offset] != '\\t') && !(IsControlCharacter(ll->chars[offset]))) {\n\t\t\t\t\t\tdrawBlockCaret = true;\n\t\t\t\t\t\trcCaret.right = xposCaret + widthOverstrikeCaret;\n\t\t\t\t\t} else {\n\t\t\t\t\t\trcCaret.right = xposCaret + vsDraw.aveCharWidth;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t/* Line caret */\n\t\t\t\t\trcCaret.left = static_cast<XYPOSITION>(RoundXYPosition(xposCaret - caretWidthOffset));\n\t\t\t\t\trcCaret.right = rcCaret.left + vsDraw.caretWidth;\n\t\t\t\t}\n\t\t\t\tColourDesired caretColour = mainCaret ? vsDraw.caretcolour : vsDraw.additionalCaretColour;\n\t\t\t\tif (drawBlockCaret) {\n\t\t\t\t\tDrawBlockCaret(surface, model, vsDraw, ll, subLine, xStart, offset, posCaret.Position(), rcCaret, caretColour);\n\t\t\t\t} else {\n\t\t\t\t\tsurface->FillRectangle(rcCaret, caretColour);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (drawDrag)\n\t\t\tbreak;\n\t}\n}\n\nstatic void DrawWrapIndentAndMarker(Surface *surface, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint xStart, PRectangle rcLine, ColourOptional background, DrawWrapMarkerFn customDrawWrapMarker) {\n\t// default bgnd here..\n\tsurface->FillRectangle(rcLine, background.isSet ? background :\n\t\tvsDraw.styles[STYLE_DEFAULT].back);\n\n\tif (vsDraw.wrapVisualFlags & SC_WRAPVISUALFLAG_START) {\n\n\t\t// draw continuation rect\n\t\tPRectangle rcPlace = rcLine;\n\n\t\trcPlace.left = static_cast<XYPOSITION>(xStart);\n\t\trcPlace.right = rcPlace.left + ll->wrapIndent;\n\n\t\tif (vsDraw.wrapVisualFlagsLocation & SC_WRAPVISUALFLAGLOC_START_BY_TEXT)\n\t\t\trcPlace.left = rcPlace.right - vsDraw.aveCharWidth;\n\t\telse\n\t\t\trcPlace.right = rcPlace.left + vsDraw.aveCharWidth;\n\n\t\tif (customDrawWrapMarker == NULL) {\n\t\t\tDrawWrapMarker(surface, rcPlace, false, vsDraw.WrapColour());\n\t\t} else {\n\t\t\tcustomDrawWrapMarker(surface, rcPlace, false, vsDraw.WrapColour());\n\t\t}\n\t}\n}\n\nvoid EditView::DrawBackground(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tPRectangle rcLine, Range lineRange, int posLineStart, int xStart,\n\tint subLine, ColourOptional background) const {\n\n\tconst bool selBackDrawn = vsDraw.SelectionBackgroundDrawn();\n\tbool inIndentation = subLine == 0;\t// Do not handle indentation except on first subline.\n\tconst XYACCUMULATOR subLineStart = ll->positions[lineRange.start];\n\t// Does not take margin into account but not significant\n\tconst int xStartVisible = static_cast<int>(subLineStart)-xStart;\n\n\tBreakFinder bfBack(ll, &model.sel, lineRange, posLineStart, xStartVisible, selBackDrawn, model.pdoc, &model.reprs, NULL);\n\n\tconst bool drawWhitespaceBackground = vsDraw.WhitespaceBackgroundDrawn() && !background.isSet;\n\n\t// Background drawing loop\n\twhile (bfBack.More()) {\n\n\t\tconst TextSegment ts = bfBack.Next();\n\t\tconst int i = ts.end() - 1;\n\t\tconst int iDoc = i + posLineStart;\n\n\t\tPRectangle rcSegment = rcLine;\n\t\trcSegment.left = ll->positions[ts.start] + xStart - static_cast<XYPOSITION>(subLineStart);\n\t\trcSegment.right = ll->positions[ts.end()] + xStart - static_cast<XYPOSITION>(subLineStart);\n\t\t// Only try to draw if really visible - enhances performance by not calling environment to\n\t\t// draw strings that are completely past the right side of the window.\n\t\tif (!rcSegment.Empty() && rcSegment.Intersects(rcLine)) {\n\t\t\t// Clip to line rectangle, since may have a huge position which will not work with some platforms\n\t\t\tif (rcSegment.left < rcLine.left)\n\t\t\t\trcSegment.left = rcLine.left;\n\t\t\tif (rcSegment.right > rcLine.right)\n\t\t\t\trcSegment.right = rcLine.right;\n\n\t\t\tconst int inSelection = hideSelection ? 0 : model.sel.CharacterInSelection(iDoc);\n\t\t\tconst bool inHotspot = (ll->hotspot.Valid()) && ll->hotspot.ContainsCharacter(iDoc);\n\t\t\tColourDesired textBack = TextBackground(model, vsDraw, ll, background, inSelection,\n\t\t\t\tinHotspot, ll->styles[i], i);\n\t\t\tif (ts.representation) {\n\t\t\t\tif (ll->chars[i] == '\\t') {\n\t\t\t\t\t// Tab display\n\t\t\t\t\tif (drawWhitespaceBackground && vsDraw.WhiteSpaceVisible(inIndentation))\n\t\t\t\t\t\ttextBack = vsDraw.whitespaceColours.back;\n\t\t\t\t} else {\n\t\t\t\t\t// Blob display\n\t\t\t\t\tinIndentation = false;\n\t\t\t\t}\n\t\t\t\tsurface->FillRectangle(rcSegment, textBack);\n\t\t\t} else {\n\t\t\t\t// Normal text display\n\t\t\t\tsurface->FillRectangle(rcSegment, textBack);\n\t\t\t\tif (vsDraw.viewWhitespace != wsInvisible) {\n\t\t\t\t\tfor (int cpos = 0; cpos <= i - ts.start; cpos++) {\n\t\t\t\t\t\tif (ll->chars[cpos + ts.start] == ' ') {\n\t\t\t\t\t\t\tif (drawWhitespaceBackground && vsDraw.WhiteSpaceVisible(inIndentation)) {\n\t\t\t\t\t\t\t\tPRectangle rcSpace(\n\t\t\t\t\t\t\t\t\tll->positions[cpos + ts.start] + xStart - static_cast<XYPOSITION>(subLineStart),\n\t\t\t\t\t\t\t\t\trcSegment.top,\n\t\t\t\t\t\t\t\t\tll->positions[cpos + ts.start + 1] + xStart - static_cast<XYPOSITION>(subLineStart),\n\t\t\t\t\t\t\t\t\trcSegment.bottom);\n\t\t\t\t\t\t\t\tsurface->FillRectangle(rcSpace, vsDraw.whitespaceColours.back);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tinIndentation = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (rcSegment.left > rcLine.right) {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nstatic void DrawEdgeLine(Surface *surface, const ViewStyle &vsDraw, const LineLayout *ll, PRectangle rcLine,\n\tRange lineRange, int xStart) {\n\tif (vsDraw.edgeState == EDGE_LINE) {\n\t\tPRectangle rcSegment = rcLine;\n\t\tint edgeX = static_cast<int>(vsDraw.theEdge.column * vsDraw.spaceWidth);\n\t\trcSegment.left = static_cast<XYPOSITION>(edgeX + xStart);\n\t\tif ((ll->wrapIndent != 0) && (lineRange.start != 0))\n\t\t\trcSegment.left -= ll->wrapIndent;\n\t\trcSegment.right = rcSegment.left + 1;\n\t\tsurface->FillRectangle(rcSegment, vsDraw.theEdge.colour);\n\t} else if (vsDraw.edgeState == EDGE_MULTILINE) {\n\t\tfor (size_t edge = 0; edge < vsDraw.theMultiEdge.size(); edge++) {\n\t\t\tif (vsDraw.theMultiEdge[edge].column >= 0) {\n\t\t\t\tPRectangle rcSegment = rcLine;\n\t\t\t\tint edgeX = static_cast<int>(vsDraw.theMultiEdge[edge].column * vsDraw.spaceWidth);\n\t\t\t\trcSegment.left = static_cast<XYPOSITION>(edgeX + xStart);\n\t\t\t\tif ((ll->wrapIndent != 0) && (lineRange.start != 0))\n\t\t\t\t\trcSegment.left -= ll->wrapIndent;\n\t\t\t\trcSegment.right = rcSegment.left + 1;\n\t\t\t\tsurface->FillRectangle(rcSegment, vsDraw.theMultiEdge[edge].colour);\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Draw underline mark as part of background if not transparent\nstatic void DrawMarkUnderline(Surface *surface, const EditModel &model, const ViewStyle &vsDraw,\n\tint line, PRectangle rcLine) {\n\tint marks = model.pdoc->GetMark(line);\n\tfor (int markBit = 0; (markBit < 32) && marks; markBit++) {\n\t\tif ((marks & 1) && (vsDraw.markers[markBit].markType == SC_MARK_UNDERLINE) &&\n\t\t\t(vsDraw.markers[markBit].alpha == SC_ALPHA_NOALPHA)) {\n\t\t\tPRectangle rcUnderline = rcLine;\n\t\t\trcUnderline.top = rcUnderline.bottom - 2;\n\t\t\tsurface->FillRectangle(rcUnderline, vsDraw.markers[markBit].back);\n\t\t}\n\t\tmarks >>= 1;\n\t}\n}\nstatic void DrawTranslucentSelection(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint line, PRectangle rcLine, int subLine, Range lineRange, int xStart) {\n\tif ((vsDraw.selAlpha != SC_ALPHA_NOALPHA) || (vsDraw.selAdditionalAlpha != SC_ALPHA_NOALPHA)) {\n\t\tconst int posLineStart = model.pdoc->LineStart(line);\n\t\tconst XYACCUMULATOR subLineStart = ll->positions[lineRange.start];\n\t\t// For each selection draw\n\t\tint virtualSpaces = 0;\n\t\tif (subLine == (ll->lines - 1)) {\n\t\t\tvirtualSpaces = model.sel.VirtualSpaceFor(model.pdoc->LineEnd(line));\n\t\t}\n\t\tSelectionPosition posStart(posLineStart + lineRange.start);\n\t\tSelectionPosition posEnd(posLineStart + lineRange.end, virtualSpaces);\n\t\tSelectionSegment virtualSpaceRange(posStart, posEnd);\n\t\tfor (size_t r = 0; r < model.sel.Count(); r++) {\n\t\t\tint alpha = (r == model.sel.Main()) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;\n\t\t\tif (alpha != SC_ALPHA_NOALPHA) {\n\t\t\t\tSelectionSegment portion = model.sel.Range(r).Intersect(virtualSpaceRange);\n\t\t\t\tif (!portion.Empty()) {\n\t\t\t\t\tconst XYPOSITION spaceWidth = vsDraw.styles[ll->EndLineStyle()].spaceWidth;\n\t\t\t\t\tPRectangle rcSegment = rcLine;\n\t\t\t\t\trcSegment.left = xStart + ll->positions[portion.start.Position() - posLineStart] -\n\t\t\t\t\t\tstatic_cast<XYPOSITION>(subLineStart)+portion.start.VirtualSpace() * spaceWidth;\n\t\t\t\t\trcSegment.right = xStart + ll->positions[portion.end.Position() - posLineStart] -\n\t\t\t\t\t\tstatic_cast<XYPOSITION>(subLineStart)+portion.end.VirtualSpace() * spaceWidth;\n\t\t\t\t\tif ((ll->wrapIndent != 0) && (lineRange.start != 0)) {\n\t\t\t\t\t\tif ((portion.start.Position() - posLineStart) == lineRange.start && model.sel.Range(r).ContainsCharacter(portion.start.Position() - 1))\n\t\t\t\t\t\t\trcSegment.left -= static_cast<int>(ll->wrapIndent); // indentation added to xStart was truncated to int, so we do the same here\n\t\t\t\t\t}\n\t\t\t\t\trcSegment.left = (rcSegment.left > rcLine.left) ? rcSegment.left : rcLine.left;\n\t\t\t\t\trcSegment.right = (rcSegment.right < rcLine.right) ? rcSegment.right : rcLine.right;\n\t\t\t\t\tif (rcSegment.right > rcLine.left)\n\t\t\t\t\t\tSimpleAlphaRectangle(surface, rcSegment, SelectionBackground(vsDraw, r == model.sel.Main(), model.primarySelection), alpha);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// Draw any translucent whole line states\nstatic void DrawTranslucentLineState(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint line, PRectangle rcLine) {\n\tif ((model.caret.active || vsDraw.alwaysShowCaretLineBackground) && vsDraw.showCaretLineBackground && ll->containsCaret) {\n\t\tSimpleAlphaRectangle(surface, rcLine, vsDraw.caretLineBackground, vsDraw.caretLineAlpha);\n\t}\n\tconst int marksOfLine = model.pdoc->GetMark(line);\n\tint marksDrawnInText = marksOfLine & vsDraw.maskDrawInText;\n\tfor (int markBit = 0; (markBit < 32) && marksDrawnInText; markBit++) {\n\t\tif (marksDrawnInText & 1) {\n\t\t\tif (vsDraw.markers[markBit].markType == SC_MARK_BACKGROUND) {\n\t\t\t\tSimpleAlphaRectangle(surface, rcLine, vsDraw.markers[markBit].back, vsDraw.markers[markBit].alpha);\n\t\t\t} else if (vsDraw.markers[markBit].markType == SC_MARK_UNDERLINE) {\n\t\t\t\tPRectangle rcUnderline = rcLine;\n\t\t\t\trcUnderline.top = rcUnderline.bottom - 2;\n\t\t\t\tSimpleAlphaRectangle(surface, rcUnderline, vsDraw.markers[markBit].back, vsDraw.markers[markBit].alpha);\n\t\t\t}\n\t\t}\n\t\tmarksDrawnInText >>= 1;\n\t}\n\tint marksDrawnInLine = marksOfLine & vsDraw.maskInLine;\n\tfor (int markBit = 0; (markBit < 32) && marksDrawnInLine; markBit++) {\n\t\tif (marksDrawnInLine & 1) {\n\t\t\tSimpleAlphaRectangle(surface, rcLine, vsDraw.markers[markBit].back, vsDraw.markers[markBit].alpha);\n\t\t}\n\t\tmarksDrawnInLine >>= 1;\n\t}\n}\n\nvoid EditView::DrawForeground(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint lineVisible, PRectangle rcLine, Range lineRange, int posLineStart, int xStart,\n\tint subLine, ColourOptional background) {\n\n\tconst bool selBackDrawn = vsDraw.SelectionBackgroundDrawn();\n\tconst bool drawWhitespaceBackground = vsDraw.WhitespaceBackgroundDrawn() && !background.isSet;\n\tbool inIndentation = subLine == 0;\t// Do not handle indentation except on first subline.\n\n\tconst XYACCUMULATOR subLineStart = ll->positions[lineRange.start];\n\tconst XYPOSITION indentWidth = model.pdoc->IndentSize() * vsDraw.spaceWidth;\n\n\t// Does not take margin into account but not significant\n\tconst int xStartVisible = static_cast<int>(subLineStart)-xStart;\n\n\t// Foreground drawing loop\n\tBreakFinder bfFore(ll, &model.sel, lineRange, posLineStart, xStartVisible,\n\t\t(((phasesDraw == phasesOne) && selBackDrawn) || vsDraw.selColours.fore.isSet), model.pdoc, &model.reprs, &vsDraw);\n\n\twhile (bfFore.More()) {\n\n\t\tconst TextSegment ts = bfFore.Next();\n\t\tconst int i = ts.end() - 1;\n\t\tconst int iDoc = i + posLineStart;\n\n\t\tPRectangle rcSegment = rcLine;\n\t\trcSegment.left = ll->positions[ts.start] + xStart - static_cast<XYPOSITION>(subLineStart);\n\t\trcSegment.right = ll->positions[ts.end()] + xStart - static_cast<XYPOSITION>(subLineStart);\n\t\t// Only try to draw if really visible - enhances performance by not calling environment to\n\t\t// draw strings that are completely past the right side of the window.\n\t\tif (rcSegment.Intersects(rcLine)) {\n\t\t\tint styleMain = ll->styles[i];\n\t\t\tColourDesired textFore = vsDraw.styles[styleMain].fore;\n\t\t\tFontAlias textFont = vsDraw.styles[styleMain].font;\n\t\t\t//hotspot foreground\n\t\t\tconst bool inHotspot = (ll->hotspot.Valid()) && ll->hotspot.ContainsCharacter(iDoc);\n\t\t\tif (inHotspot) {\n\t\t\t\tif (vsDraw.hotspotColours.fore.isSet)\n\t\t\t\t\ttextFore = vsDraw.hotspotColours.fore;\n\t\t\t}\n\t\t\tif (vsDraw.indicatorsSetFore > 0) {\n\t\t\t\t// At least one indicator sets the text colour so see if it applies to this segment\n\t\t\t\tfor (Decoration *deco = model.pdoc->decorations.root; deco; deco = deco->next) {\n\t\t\t\t\tconst int indicatorValue = deco->rs.ValueAt(ts.start + posLineStart);\n\t\t\t\t\tif (indicatorValue) {\n\t\t\t\t\t\tconst Indicator &indicator = vsDraw.indicators[deco->indicator];\n\t\t\t\t\t\tconst bool hover = indicator.IsDynamic() &&\n\t\t\t\t\t\t\t((model.hoverIndicatorPos >= ts.start + posLineStart) &&\n\t\t\t\t\t\t\t(model.hoverIndicatorPos <= ts.end() + posLineStart));\n\t\t\t\t\t\tif (hover) {\n\t\t\t\t\t\t\tif (indicator.sacHover.style == INDIC_TEXTFORE) {\n\t\t\t\t\t\t\t\ttextFore = indicator.sacHover.fore;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (indicator.sacNormal.style == INDIC_TEXTFORE) {\n\t\t\t\t\t\t\t\tif (indicator.Flags() & SC_INDICFLAG_VALUEFORE)\n\t\t\t\t\t\t\t\t\ttextFore = indicatorValue & SC_INDICVALUEMASK;\n\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\ttextFore = indicator.sacNormal.fore;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst int inSelection = hideSelection ? 0 : model.sel.CharacterInSelection(iDoc);\n\t\t\tif (inSelection && (vsDraw.selColours.fore.isSet)) {\n\t\t\t\ttextFore = (inSelection == 1) ? vsDraw.selColours.fore : vsDraw.selAdditionalForeground;\n\t\t\t}\n\t\t\tColourDesired textBack = TextBackground(model, vsDraw, ll, background, inSelection, inHotspot, styleMain, i);\n\t\t\tif (ts.representation) {\n\t\t\t\tif (ll->chars[i] == '\\t') {\n\t\t\t\t\t// Tab display\n\t\t\t\t\tif (phasesDraw == phasesOne) {\n\t\t\t\t\t\tif (drawWhitespaceBackground && vsDraw.WhiteSpaceVisible(inIndentation))\n\t\t\t\t\t\t\ttextBack = vsDraw.whitespaceColours.back;\n\t\t\t\t\t\tsurface->FillRectangle(rcSegment, textBack);\n\t\t\t\t\t}\n\t\t\t\t\tif (inIndentation && vsDraw.viewIndentationGuides == ivReal) {\n\t\t\t\t\t\tfor (int indentCount = static_cast<int>((ll->positions[i] + epsilon) / indentWidth);\n\t\t\t\t\t\t\tindentCount <= (ll->positions[i + 1] - epsilon) / indentWidth;\n\t\t\t\t\t\t\tindentCount++) {\n\t\t\t\t\t\t\tif (indentCount > 0) {\n\t\t\t\t\t\t\t\tint xIndent = static_cast<int>(indentCount * indentWidth);\n\t\t\t\t\t\t\t\tDrawIndentGuide(surface, lineVisible, vsDraw.lineHeight, xIndent + xStart, rcSegment,\n\t\t\t\t\t\t\t\t\t(ll->xHighlightGuide == xIndent));\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (vsDraw.viewWhitespace != wsInvisible) {\n\t\t\t\t\t\tif (vsDraw.WhiteSpaceVisible(inIndentation)) {\n\t\t\t\t\t\t\tif (vsDraw.whitespaceColours.fore.isSet)\n\t\t\t\t\t\t\t\ttextFore = vsDraw.whitespaceColours.fore;\n\t\t\t\t\t\t\tsurface->PenColour(textFore);\n\t\t\t\t\t\t\tPRectangle rcTab(rcSegment.left + 1, rcSegment.top + tabArrowHeight,\n\t\t\t\t\t\t\t\trcSegment.right - 1, rcSegment.bottom - vsDraw.maxDescent);\n\t\t\t\t\t\t\tif (customDrawTabArrow == NULL)\n\t\t\t\t\t\t\t\tDrawTabArrow(surface, rcTab, static_cast<int>(rcSegment.top + vsDraw.lineHeight / 2), vsDraw);\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tcustomDrawTabArrow(surface, rcTab, static_cast<int>(rcSegment.top + vsDraw.lineHeight / 2));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tinIndentation = false;\n\t\t\t\t\tif (vsDraw.controlCharSymbol >= 32) {\n\t\t\t\t\t\t// Using one font for all control characters so it can be controlled independently to ensure\n\t\t\t\t\t\t// the box goes around the characters tightly. Seems to be no way to work out what height\n\t\t\t\t\t\t// is taken by an individual character - internal leading gives varying results.\n\t\t\t\t\t\tFontAlias ctrlCharsFont = vsDraw.styles[STYLE_CONTROLCHAR].font;\n\t\t\t\t\t\tchar cc[2] = { static_cast<char>(vsDraw.controlCharSymbol), '\\0' };\n\t\t\t\t\t\tsurface->DrawTextNoClip(rcSegment, ctrlCharsFont,\n\t\t\t\t\t\t\trcSegment.top + vsDraw.maxAscent,\n\t\t\t\t\t\t\tcc, 1, textBack, textFore);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tDrawTextBlob(surface, vsDraw, rcSegment, ts.representation->stringRep.c_str(),\n\t\t\t\t\t\t\ttextBack, textFore, phasesDraw == phasesOne);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Normal text display\n\t\t\t\tif (vsDraw.styles[styleMain].visible) {\n\t\t\t\t\tif (phasesDraw != phasesOne) {\n\t\t\t\t\t\tsurface->DrawTextTransparent(rcSegment, textFont,\n\t\t\t\t\t\t\trcSegment.top + vsDraw.maxAscent, ll->chars + ts.start,\n\t\t\t\t\t\t\ti - ts.start + 1, textFore);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsurface->DrawTextNoClip(rcSegment, textFont,\n\t\t\t\t\t\t\trcSegment.top + vsDraw.maxAscent, ll->chars + ts.start,\n\t\t\t\t\t\t\ti - ts.start + 1, textFore, textBack);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (vsDraw.viewWhitespace != wsInvisible ||\n\t\t\t\t\t(inIndentation && vsDraw.viewIndentationGuides != ivNone)) {\n\t\t\t\t\tfor (int cpos = 0; cpos <= i - ts.start; cpos++) {\n\t\t\t\t\t\tif (ll->chars[cpos + ts.start] == ' ') {\n\t\t\t\t\t\t\tif (vsDraw.viewWhitespace != wsInvisible) {\n\t\t\t\t\t\t\t\tif (vsDraw.whitespaceColours.fore.isSet)\n\t\t\t\t\t\t\t\t\ttextFore = vsDraw.whitespaceColours.fore;\n\t\t\t\t\t\t\t\tif (vsDraw.WhiteSpaceVisible(inIndentation)) {\n\t\t\t\t\t\t\t\t\tXYPOSITION xmid = (ll->positions[cpos + ts.start] + ll->positions[cpos + ts.start + 1]) / 2;\n\t\t\t\t\t\t\t\t\tif ((phasesDraw == phasesOne) && drawWhitespaceBackground) {\n\t\t\t\t\t\t\t\t\t\ttextBack = vsDraw.whitespaceColours.back;\n\t\t\t\t\t\t\t\t\t\tPRectangle rcSpace(\n\t\t\t\t\t\t\t\t\t\t\tll->positions[cpos + ts.start] + xStart - static_cast<XYPOSITION>(subLineStart),\n\t\t\t\t\t\t\t\t\t\t\trcSegment.top,\n\t\t\t\t\t\t\t\t\t\t\tll->positions[cpos + ts.start + 1] + xStart - static_cast<XYPOSITION>(subLineStart),\n\t\t\t\t\t\t\t\t\t\t\trcSegment.bottom);\n\t\t\t\t\t\t\t\t\t\tsurface->FillRectangle(rcSpace, textBack);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tconst int halfDotWidth = vsDraw.whitespaceSize / 2;\n\t\t\t\t\t\t\t\t\tPRectangle rcDot(xmid + xStart - halfDotWidth - static_cast<XYPOSITION>(subLineStart),\n\t\t\t\t\t\t\t\t\t\trcSegment.top + vsDraw.lineHeight / 2, 0.0f, 0.0f);\n\t\t\t\t\t\t\t\t\trcDot.right = rcDot.left + vsDraw.whitespaceSize;\n\t\t\t\t\t\t\t\t\trcDot.bottom = rcDot.top + vsDraw.whitespaceSize;\n\t\t\t\t\t\t\t\t\tsurface->FillRectangle(rcDot, textFore);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (inIndentation && vsDraw.viewIndentationGuides == ivReal) {\n\t\t\t\t\t\t\t\tfor (int indentCount = static_cast<int>((ll->positions[cpos + ts.start] + epsilon) / indentWidth);\n\t\t\t\t\t\t\t\t\tindentCount <= (ll->positions[cpos + ts.start + 1] - epsilon) / indentWidth;\n\t\t\t\t\t\t\t\t\tindentCount++) {\n\t\t\t\t\t\t\t\t\tif (indentCount > 0) {\n\t\t\t\t\t\t\t\t\t\tint xIndent = static_cast<int>(indentCount * indentWidth);\n\t\t\t\t\t\t\t\t\t\tDrawIndentGuide(surface, lineVisible, vsDraw.lineHeight, xIndent + xStart, rcSegment,\n\t\t\t\t\t\t\t\t\t\t\t(ll->xHighlightGuide == xIndent));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tinIndentation = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (ll->hotspot.Valid() && vsDraw.hotspotUnderline && ll->hotspot.ContainsCharacter(iDoc)) {\n\t\t\t\tPRectangle rcUL = rcSegment;\n\t\t\t\trcUL.top = rcUL.top + vsDraw.maxAscent + 1;\n\t\t\t\trcUL.bottom = rcUL.top + 1;\n\t\t\t\tif (vsDraw.hotspotColours.fore.isSet)\n\t\t\t\t\tsurface->FillRectangle(rcUL, vsDraw.hotspotColours.fore);\n\t\t\t\telse\n\t\t\t\t\tsurface->FillRectangle(rcUL, textFore);\n\t\t\t} else if (vsDraw.styles[styleMain].underline) {\n\t\t\t\tPRectangle rcUL = rcSegment;\n\t\t\t\trcUL.top = rcUL.top + vsDraw.maxAscent + 1;\n\t\t\t\trcUL.bottom = rcUL.top + 1;\n\t\t\t\tsurface->FillRectangle(rcUL, textFore);\n\t\t\t}\n\t\t} else if (rcSegment.left > rcLine.right) {\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nvoid EditView::DrawIndentGuidesOverEmpty(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint line, int lineVisible, PRectangle rcLine, int xStart, int subLine) {\n\tif ((vsDraw.viewIndentationGuides == ivLookForward || vsDraw.viewIndentationGuides == ivLookBoth)\n\t\t&& (subLine == 0)) {\n\t\tconst int posLineStart = model.pdoc->LineStart(line);\n\t\tint indentSpace = model.pdoc->GetLineIndentation(line);\n\t\tint xStartText = static_cast<int>(ll->positions[model.pdoc->GetLineIndentPosition(line) - posLineStart]);\n\n\t\t// Find the most recent line with some text\n\n\t\tint lineLastWithText = line;\n\t\twhile (lineLastWithText > Platform::Maximum(line - 20, 0) && model.pdoc->IsWhiteLine(lineLastWithText)) {\n\t\t\tlineLastWithText--;\n\t\t}\n\t\tif (lineLastWithText < line) {\n\t\t\txStartText = 100000;\t// Don't limit to visible indentation on empty line\n\t\t\t// This line is empty, so use indentation of last line with text\n\t\t\tint indentLastWithText = model.pdoc->GetLineIndentation(lineLastWithText);\n\t\t\tint isFoldHeader = model.pdoc->GetLevel(lineLastWithText) & SC_FOLDLEVELHEADERFLAG;\n\t\t\tif (isFoldHeader) {\n\t\t\t\t// Level is one more level than parent\n\t\t\t\tindentLastWithText += model.pdoc->IndentSize();\n\t\t\t}\n\t\t\tif (vsDraw.viewIndentationGuides == ivLookForward) {\n\t\t\t\t// In viLookForward mode, previous line only used if it is a fold header\n\t\t\t\tif (isFoldHeader) {\n\t\t\t\t\tindentSpace = Platform::Maximum(indentSpace, indentLastWithText);\n\t\t\t\t}\n\t\t\t} else {\t// viLookBoth\n\t\t\t\tindentSpace = Platform::Maximum(indentSpace, indentLastWithText);\n\t\t\t}\n\t\t}\n\n\t\tint lineNextWithText = line;\n\t\twhile (lineNextWithText < Platform::Minimum(line + 20, model.pdoc->LinesTotal()) && model.pdoc->IsWhiteLine(lineNextWithText)) {\n\t\t\tlineNextWithText++;\n\t\t}\n\t\tif (lineNextWithText > line) {\n\t\t\txStartText = 100000;\t// Don't limit to visible indentation on empty line\n\t\t\t// This line is empty, so use indentation of first next line with text\n\t\t\tindentSpace = Platform::Maximum(indentSpace,\n\t\t\t\tmodel.pdoc->GetLineIndentation(lineNextWithText));\n\t\t}\n\n\t\tfor (int indentPos = model.pdoc->IndentSize(); indentPos < indentSpace; indentPos += model.pdoc->IndentSize()) {\n\t\t\tint xIndent = static_cast<int>(indentPos * vsDraw.spaceWidth);\n\t\t\tif (xIndent < xStartText) {\n\t\t\t\tDrawIndentGuide(surface, lineVisible, vsDraw.lineHeight, xIndent + xStart, rcLine,\n\t\t\t\t\t(ll->xHighlightGuide == xIndent));\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid EditView::DrawLine(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint line, int lineVisible, int xStart, PRectangle rcLine, int subLine, DrawPhase phase) {\n\n\tif (subLine >= ll->lines) {\n\t\tDrawAnnotation(surface, model, vsDraw, ll, line, xStart, rcLine, subLine, phase);\n\t\treturn; // No further drawing\n\t}\n\n\t// See if something overrides the line background color.\n\tconst ColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);\n\n\tconst int posLineStart = model.pdoc->LineStart(line);\n\n\tconst Range lineRange = ll->SubLineRange(subLine);\n\tconst XYACCUMULATOR subLineStart = ll->positions[lineRange.start];\n\n\tif ((ll->wrapIndent != 0) && (subLine > 0)) {\n\t\tif (phase & drawBack) {\n\t\t\tDrawWrapIndentAndMarker(surface, vsDraw, ll, xStart, rcLine, background, customDrawWrapMarker);\n\t\t}\n\t\txStart += static_cast<int>(ll->wrapIndent);\n\t}\n\n\tif ((phasesDraw != phasesOne) && (phase & drawBack)) {\n\t\tDrawBackground(surface, model, vsDraw, ll, rcLine, lineRange, posLineStart, xStart,\n\t\t\tsubLine, background);\n\t\tDrawEOL(surface, model, vsDraw, ll, rcLine, line, lineRange.end,\n\t\t\txStart, subLine, subLineStart, background);\n\t}\n\n\tif (phase & drawIndicatorsBack) {\n\t\tDrawIndicators(surface, model, vsDraw, ll, line, xStart, rcLine, subLine, lineRange.end, true, model.hoverIndicatorPos);\n\t\tDrawEdgeLine(surface, vsDraw, ll, rcLine, lineRange, xStart);\n\t\tDrawMarkUnderline(surface, model, vsDraw, line, rcLine);\n\t}\n\n\tif (phase & drawText) {\n\t\tDrawForeground(surface, model, vsDraw, ll, lineVisible, rcLine, lineRange, posLineStart, xStart,\n\t\t\tsubLine, background);\n\t}\n\n\tif (phase & drawIndentationGuides) {\n\t\tDrawIndentGuidesOverEmpty(surface, model, vsDraw, ll, line, lineVisible, rcLine, xStart, subLine);\n\t}\n\n\tif (phase & drawIndicatorsFore) {\n\t\tDrawIndicators(surface, model, vsDraw, ll, line, xStart, rcLine, subLine, lineRange.end, false, model.hoverIndicatorPos);\n\t}\n\n\t// End of the drawing of the current line\n\tif (phasesDraw == phasesOne) {\n\t\tDrawEOL(surface, model, vsDraw, ll, rcLine, line, lineRange.end,\n\t\t\txStart, subLine, subLineStart, background);\n\t}\n\n\tDrawFoldDisplayText(surface, model, vsDraw, ll, line, xStart, rcLine, subLine, subLineStart, phase);\n\n\tif (!hideSelection && (phase & drawSelectionTranslucent)) {\n\t\tDrawTranslucentSelection(surface, model, vsDraw, ll, line, rcLine, subLine, lineRange, xStart);\n\t}\n\n\tif (phase & drawLineTranslucent) {\n\t\tDrawTranslucentLineState(surface, model, vsDraw, ll, line, rcLine);\n\t}\n}\n\nstatic void DrawFoldLines(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, int line, PRectangle rcLine) {\n\tbool expanded = model.cs.GetExpanded(line);\n\tconst int level = model.pdoc->GetLevel(line);\n\tconst int levelNext = model.pdoc->GetLevel(line + 1);\n\tif ((level & SC_FOLDLEVELHEADERFLAG) &&\n\t\t(LevelNumber(level) < LevelNumber(levelNext))) {\n\t\t// Paint the line above the fold\n\t\tif ((expanded && (model.foldFlags & SC_FOLDFLAG_LINEBEFORE_EXPANDED))\n\t\t\t||\n\t\t\t(!expanded && (model.foldFlags & SC_FOLDFLAG_LINEBEFORE_CONTRACTED))) {\n\t\t\tPRectangle rcFoldLine = rcLine;\n\t\t\trcFoldLine.bottom = rcFoldLine.top + 1;\n\t\t\tsurface->FillRectangle(rcFoldLine, vsDraw.styles[STYLE_DEFAULT].fore);\n\t\t}\n\t\t// Paint the line below the fold\n\t\tif ((expanded && (model.foldFlags & SC_FOLDFLAG_LINEAFTER_EXPANDED))\n\t\t\t||\n\t\t\t(!expanded && (model.foldFlags & SC_FOLDFLAG_LINEAFTER_CONTRACTED))) {\n\t\t\tPRectangle rcFoldLine = rcLine;\n\t\t\trcFoldLine.top = rcFoldLine.bottom - 1;\n\t\t\tsurface->FillRectangle(rcFoldLine, vsDraw.styles[STYLE_DEFAULT].fore);\n\t\t}\n\t}\n}\n\nvoid EditView::PaintText(Surface *surfaceWindow, const EditModel &model, PRectangle rcArea,\n\tPRectangle rcClient, const ViewStyle &vsDraw) {\n\t// Allow text at start of line to overlap 1 pixel into the margin as this displays\n\t// serifs and italic stems for aliased text.\n\tconst int leftTextOverlap = ((model.xOffset == 0) && (vsDraw.leftMarginWidth > 0)) ? 1 : 0;\n\n\t// Do the painting\n\tif (rcArea.right > vsDraw.textStart - leftTextOverlap) {\n\n\t\tSurface *surface = surfaceWindow;\n\t\tif (bufferedDraw) {\n\t\t\tsurface = pixmapLine;\n\t\t\tPLATFORM_ASSERT(pixmapLine->Initialised());\n\t\t}\n\t\tsurface->SetUnicodeMode(SC_CP_UTF8 == model.pdoc->dbcsCodePage);\n\t\tsurface->SetDBCSMode(model.pdoc->dbcsCodePage);\n\n\t\tconst Point ptOrigin = model.GetVisibleOriginInMain();\n\n\t\tconst int screenLinePaintFirst = static_cast<int>(rcArea.top) / vsDraw.lineHeight;\n\t\tconst int xStart = vsDraw.textStart - model.xOffset + static_cast<int>(ptOrigin.x);\n\n\t\tSelectionPosition posCaret = model.sel.RangeMain().caret;\n\t\tif (model.posDrag.IsValid())\n\t\t\tposCaret = model.posDrag;\n\t\tconst int lineCaret = model.pdoc->LineFromPosition(posCaret.Position());\n\n\t\tPRectangle rcTextArea = rcClient;\n\t\tif (vsDraw.marginInside) {\n\t\t\trcTextArea.left += vsDraw.textStart;\n\t\t\trcTextArea.right -= vsDraw.rightMarginWidth;\n\t\t} else {\n\t\t\trcTextArea = rcArea;\n\t\t}\n\n\t\t// Remove selection margin from drawing area so text will not be drawn\n\t\t// on it in unbuffered mode.\n\t\tif (!bufferedDraw && vsDraw.marginInside) {\n\t\t\tPRectangle rcClipText = rcTextArea;\n\t\t\trcClipText.left -= leftTextOverlap;\n\t\t\tsurfaceWindow->SetClip(rcClipText);\n\t\t}\n\n\t\t// Loop on visible lines\n\t\t//double durLayout = 0.0;\n\t\t//double durPaint = 0.0;\n\t\t//double durCopy = 0.0;\n\t\t//ElapsedTime etWhole;\n\n\t\tconst bool bracesIgnoreStyle = ((vsDraw.braceHighlightIndicatorSet && (model.bracesMatchStyle == STYLE_BRACELIGHT)) ||\n\t\t\t(vsDraw.braceBadLightIndicatorSet && (model.bracesMatchStyle == STYLE_BRACEBAD)));\n\n\t\tint lineDocPrevious = -1;\t// Used to avoid laying out one document line multiple times\n\t\tAutoLineLayout ll(llc, 0);\n\t\tstd::vector<DrawPhase> phases;\n\t\tif ((phasesDraw == phasesMultiple) && !bufferedDraw) {\n\t\t\tfor (DrawPhase phase = drawBack; phase <= drawCarets; phase = static_cast<DrawPhase>(phase * 2)) {\n\t\t\t\tphases.push_back(phase);\n\t\t\t}\n\t\t} else {\n\t\t\tphases.push_back(drawAll);\n\t\t}\n\t\tfor (std::vector<DrawPhase>::iterator it = phases.begin(); it != phases.end(); ++it) {\n\t\t\tint ypos = 0;\n\t\t\tif (!bufferedDraw)\n\t\t\t\typos += screenLinePaintFirst * vsDraw.lineHeight;\n\t\t\tint yposScreen = screenLinePaintFirst * vsDraw.lineHeight;\n\t\t\tint visibleLine = model.TopLineOfMain() + screenLinePaintFirst;\n\t\t\twhile (visibleLine < model.cs.LinesDisplayed() && yposScreen < rcArea.bottom) {\n\n\t\t\t\tconst int lineDoc = model.cs.DocFromDisplay(visibleLine);\n\t\t\t\t// Only visible lines should be handled by the code within the loop\n\t\t\t\tPLATFORM_ASSERT(model.cs.GetVisible(lineDoc));\n\t\t\t\tconst int lineStartSet = model.cs.DisplayFromDoc(lineDoc);\n\t\t\t\tconst int subLine = visibleLine - lineStartSet;\n\n\t\t\t\t// Copy this line and its styles from the document into local arrays\n\t\t\t\t// and determine the x position at which each character starts.\n\t\t\t\t//ElapsedTime et;\n\t\t\t\tif (lineDoc != lineDocPrevious) {\n\t\t\t\t\tll.Set(0);\n\t\t\t\t\tll.Set(RetrieveLineLayout(lineDoc, model));\n\t\t\t\t\tLayoutLine(model, lineDoc, surface, vsDraw, ll, model.wrapWidth);\n\t\t\t\t\tlineDocPrevious = lineDoc;\n\t\t\t\t}\n\t\t\t\t//durLayout += et.Duration(true);\n\n\t\t\t\tif (ll) {\n\t\t\t\t\tll->containsCaret = !hideSelection && (lineDoc == lineCaret);\n\t\t\t\t\tll->hotspot = model.GetHotSpotRange();\n\n\t\t\t\t\tPRectangle rcLine = rcTextArea;\n\t\t\t\t\trcLine.top = static_cast<XYPOSITION>(ypos);\n\t\t\t\t\trcLine.bottom = static_cast<XYPOSITION>(ypos + vsDraw.lineHeight);\n\n\t\t\t\t\tRange rangeLine(model.pdoc->LineStart(lineDoc), model.pdoc->LineStart(lineDoc + 1));\n\n\t\t\t\t\t// Highlight the current braces if any\n\t\t\t\t\tll->SetBracesHighlight(rangeLine, model.braces, static_cast<char>(model.bracesMatchStyle),\n\t\t\t\t\t\tstatic_cast<int>(model.highlightGuideColumn * vsDraw.spaceWidth), bracesIgnoreStyle);\n\n\t\t\t\t\tif (leftTextOverlap && (bufferedDraw || ((phasesDraw < phasesMultiple) && (*it & drawBack)))) {\n\t\t\t\t\t\t// Clear the left margin\n\t\t\t\t\t\tPRectangle rcSpacer = rcLine;\n\t\t\t\t\t\trcSpacer.right = rcSpacer.left;\n\t\t\t\t\t\trcSpacer.left -= 1;\n\t\t\t\t\t\tsurface->FillRectangle(rcSpacer, vsDraw.styles[STYLE_DEFAULT].back);\n\t\t\t\t\t}\n\n\t\t\t\t\tDrawLine(surface, model, vsDraw, ll, lineDoc, visibleLine, xStart, rcLine, subLine, *it);\n\t\t\t\t\t//durPaint += et.Duration(true);\n\n\t\t\t\t\t// Restore the previous styles for the brace highlights in case layout is in cache.\n\t\t\t\t\tll->RestoreBracesHighlight(rangeLine, model.braces, bracesIgnoreStyle);\n\n\t\t\t\t\tif (*it & drawFoldLines) {\n\t\t\t\t\t\tDrawFoldLines(surface, model, vsDraw, lineDoc, rcLine);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (*it & drawCarets) {\n\t\t\t\t\t\tDrawCarets(surface, model, vsDraw, ll, lineDoc, xStart, rcLine, subLine);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (bufferedDraw) {\n\t\t\t\t\t\tPoint from = Point::FromInts(vsDraw.textStart - leftTextOverlap, 0);\n\t\t\t\t\t\tPRectangle rcCopyArea = PRectangle::FromInts(vsDraw.textStart - leftTextOverlap, yposScreen,\n\t\t\t\t\t\t\tstatic_cast<int>(rcClient.right - vsDraw.rightMarginWidth),\n\t\t\t\t\t\t\typosScreen + vsDraw.lineHeight);\n\t\t\t\t\t\tsurfaceWindow->Copy(rcCopyArea, from, *pixmapLine);\n\t\t\t\t\t}\n\n\t\t\t\t\tlineWidthMaxSeen = Platform::Maximum(\n\t\t\t\t\t\tlineWidthMaxSeen, static_cast<int>(ll->positions[ll->numCharsInLine]));\n\t\t\t\t\t//durCopy += et.Duration(true);\n\t\t\t\t}\n\n\t\t\t\tif (!bufferedDraw) {\n\t\t\t\t\typos += vsDraw.lineHeight;\n\t\t\t\t}\n\n\t\t\t\typosScreen += vsDraw.lineHeight;\n\t\t\t\tvisibleLine++;\n\t\t\t}\n\t\t}\n\t\tll.Set(0);\n\t\t//if (durPaint < 0.00000001)\n\t\t//\tdurPaint = 0.00000001;\n\n\t\t// Right column limit indicator\n\t\tPRectangle rcBeyondEOF = (vsDraw.marginInside) ? rcClient : rcArea;\n\t\trcBeyondEOF.left = static_cast<XYPOSITION>(vsDraw.textStart);\n\t\trcBeyondEOF.right = rcBeyondEOF.right - ((vsDraw.marginInside) ? vsDraw.rightMarginWidth : 0);\n\t\trcBeyondEOF.top = static_cast<XYPOSITION>((model.cs.LinesDisplayed() - model.TopLineOfMain()) * vsDraw.lineHeight);\n\t\tif (rcBeyondEOF.top < rcBeyondEOF.bottom) {\n\t\t\tsurfaceWindow->FillRectangle(rcBeyondEOF, vsDraw.styles[STYLE_DEFAULT].back);\n\t\t\tif (vsDraw.edgeState == EDGE_LINE) {\n\t\t\t\tint edgeX = static_cast<int>(vsDraw.theEdge.column * vsDraw.spaceWidth);\n\t\t\t\trcBeyondEOF.left = static_cast<XYPOSITION>(edgeX + xStart);\n\t\t\t\trcBeyondEOF.right = rcBeyondEOF.left + 1;\n\t\t\t\tsurfaceWindow->FillRectangle(rcBeyondEOF, vsDraw.theEdge.colour);\n\t\t\t} else if (vsDraw.edgeState == EDGE_MULTILINE) {\n\t\t\t\tfor (size_t edge = 0; edge < vsDraw.theMultiEdge.size(); edge++) {\n\t\t\t\t\tif (vsDraw.theMultiEdge[edge].column >= 0) {\n\t\t\t\t\t\tint edgeX = static_cast<int>(vsDraw.theMultiEdge[edge].column * vsDraw.spaceWidth);\n\t\t\t\t\t\trcBeyondEOF.left = static_cast<XYPOSITION>(edgeX + xStart);\n\t\t\t\t\t\trcBeyondEOF.right = rcBeyondEOF.left + 1;\n\t\t\t\t\t\tsurfaceWindow->FillRectangle(rcBeyondEOF, vsDraw.theMultiEdge[edge].colour);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//Platform::DebugPrintf(\"start display %d, offset = %d\\n\", pdoc->Length(), xOffset);\n\n\t\t//Platform::DebugPrintf(\n\t\t//\"Layout:%9.6g    Paint:%9.6g    Ratio:%9.6g   Copy:%9.6g   Total:%9.6g\\n\",\n\t\t//durLayout, durPaint, durLayout / durPaint, durCopy, etWhole.Duration());\n\t}\n}\n\nvoid EditView::FillLineRemainder(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\tint line, PRectangle rcArea, int subLine) {\n\t\tint eolInSelection = 0;\n\t\tint alpha = SC_ALPHA_NOALPHA;\n\t\tif (!hideSelection) {\n\t\t\tint posAfterLineEnd = model.pdoc->LineStart(line + 1);\n\t\t\teolInSelection = (subLine == (ll->lines - 1)) ? model.sel.InSelectionForEOL(posAfterLineEnd) : 0;\n\t\t\talpha = (eolInSelection == 1) ? vsDraw.selAlpha : vsDraw.selAdditionalAlpha;\n\t\t}\n\n\t\tColourOptional background = vsDraw.Background(model.pdoc->GetMark(line), model.caret.active, ll->containsCaret);\n\n\t\tif (eolInSelection && vsDraw.selEOLFilled && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha == SC_ALPHA_NOALPHA)) {\n\t\t\tsurface->FillRectangle(rcArea, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection));\n\t\t} else {\n\t\t\tif (background.isSet) {\n\t\t\t\tsurface->FillRectangle(rcArea, background);\n\t\t\t} else if (vsDraw.styles[ll->styles[ll->numCharsInLine]].eolFilled) {\n\t\t\t\tsurface->FillRectangle(rcArea, vsDraw.styles[ll->styles[ll->numCharsInLine]].back);\n\t\t\t} else {\n\t\t\t\tsurface->FillRectangle(rcArea, vsDraw.styles[STYLE_DEFAULT].back);\n\t\t\t}\n\t\t\tif (eolInSelection && vsDraw.selEOLFilled && vsDraw.selColours.back.isSet && (line < model.pdoc->LinesTotal() - 1) && (alpha != SC_ALPHA_NOALPHA)) {\n\t\t\t\tSimpleAlphaRectangle(surface, rcArea, SelectionBackground(vsDraw, eolInSelection == 1, model.primarySelection), alpha);\n\t\t\t}\n\t\t}\n}\n\n// Space (3 space characters) between line numbers and text when printing.\n#define lineNumberPrintSpace \"   \"\n\nstatic ColourDesired InvertedLight(ColourDesired orig) {\n\tunsigned int r = orig.GetRed();\n\tunsigned int g = orig.GetGreen();\n\tunsigned int b = orig.GetBlue();\n\tunsigned int l = (r + g + b) / 3; \t// There is a better calculation for this that matches human eye\n\tunsigned int il = 0xff - l;\n\tif (l == 0)\n\t\treturn ColourDesired(0xff, 0xff, 0xff);\n\tr = r * il / l;\n\tg = g * il / l;\n\tb = b * il / l;\n\treturn ColourDesired(Platform::Minimum(r, 0xff), Platform::Minimum(g, 0xff), Platform::Minimum(b, 0xff));\n}\n\nlong EditView::FormatRange(bool draw, Sci_RangeToFormat *pfr, Surface *surface, Surface *surfaceMeasure,\n\tconst EditModel &model, const ViewStyle &vs) {\n\t// Can't use measurements cached for screen\n\tposCache.Clear();\n\n\tViewStyle vsPrint(vs);\n\tvsPrint.technology = SC_TECHNOLOGY_DEFAULT;\n\n\t// Modify the view style for printing as do not normally want any of the transient features to be printed\n\t// Printing supports only the line number margin.\n\tint lineNumberIndex = -1;\n\tfor (size_t margin = 0; margin < vs.ms.size(); margin++) {\n\t\tif ((vsPrint.ms[margin].style == SC_MARGIN_NUMBER) && (vsPrint.ms[margin].width > 0)) {\n\t\t\tlineNumberIndex = static_cast<int>(margin);\n\t\t} else {\n\t\t\tvsPrint.ms[margin].width = 0;\n\t\t}\n\t}\n\tvsPrint.fixedColumnWidth = 0;\n\tvsPrint.zoomLevel = printParameters.magnification;\n\t// Don't show indentation guides\n\t// If this ever gets changed, cached pixmap would need to be recreated if technology != SC_TECHNOLOGY_DEFAULT\n\tvsPrint.viewIndentationGuides = ivNone;\n\t// Don't show the selection when printing\n\tvsPrint.selColours.back.isSet = false;\n\tvsPrint.selColours.fore.isSet = false;\n\tvsPrint.selAlpha = SC_ALPHA_NOALPHA;\n\tvsPrint.selAdditionalAlpha = SC_ALPHA_NOALPHA;\n\tvsPrint.whitespaceColours.back.isSet = false;\n\tvsPrint.whitespaceColours.fore.isSet = false;\n\tvsPrint.showCaretLineBackground = false;\n\tvsPrint.alwaysShowCaretLineBackground = false;\n\t// Don't highlight matching braces using indicators\n\tvsPrint.braceHighlightIndicatorSet = false;\n\tvsPrint.braceBadLightIndicatorSet = false;\n\n\t// Set colours for printing according to users settings\n\tfor (size_t sty = 0; sty < vsPrint.styles.size(); sty++) {\n\t\tif (printParameters.colourMode == SC_PRINT_INVERTLIGHT) {\n\t\t\tvsPrint.styles[sty].fore = InvertedLight(vsPrint.styles[sty].fore);\n\t\t\tvsPrint.styles[sty].back = InvertedLight(vsPrint.styles[sty].back);\n\t\t} else if (printParameters.colourMode == SC_PRINT_BLACKONWHITE) {\n\t\t\tvsPrint.styles[sty].fore = ColourDesired(0, 0, 0);\n\t\t\tvsPrint.styles[sty].back = ColourDesired(0xff, 0xff, 0xff);\n\t\t} else if (printParameters.colourMode == SC_PRINT_COLOURONWHITE) {\n\t\t\tvsPrint.styles[sty].back = ColourDesired(0xff, 0xff, 0xff);\n\t\t} else if (printParameters.colourMode == SC_PRINT_COLOURONWHITEDEFAULTBG) {\n\t\t\tif (sty <= STYLE_DEFAULT) {\n\t\t\t\tvsPrint.styles[sty].back = ColourDesired(0xff, 0xff, 0xff);\n\t\t\t}\n\t\t}\n\t}\n\t// White background for the line numbers\n\tvsPrint.styles[STYLE_LINENUMBER].back = ColourDesired(0xff, 0xff, 0xff);\n\n\t// Printing uses different margins, so reset screen margins\n\tvsPrint.leftMarginWidth = 0;\n\tvsPrint.rightMarginWidth = 0;\n\n\tvsPrint.Refresh(*surfaceMeasure, model.pdoc->tabInChars);\n\t// Determining width must happen after fonts have been realised in Refresh\n\tint lineNumberWidth = 0;\n\tif (lineNumberIndex >= 0) {\n\t\tlineNumberWidth = static_cast<int>(surfaceMeasure->WidthText(vsPrint.styles[STYLE_LINENUMBER].font,\n\t\t\t\"99999\" lineNumberPrintSpace, 5 + static_cast<int>(strlen(lineNumberPrintSpace))));\n\t\tvsPrint.ms[lineNumberIndex].width = lineNumberWidth;\n\t\tvsPrint.Refresh(*surfaceMeasure, model.pdoc->tabInChars);\t// Recalculate fixedColumnWidth\n\t}\n\n\tint linePrintStart = model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMin));\n\tint linePrintLast = linePrintStart + (pfr->rc.bottom - pfr->rc.top) / vsPrint.lineHeight - 1;\n\tif (linePrintLast < linePrintStart)\n\t\tlinePrintLast = linePrintStart;\n\tint linePrintMax = model.pdoc->LineFromPosition(static_cast<int>(pfr->chrg.cpMax));\n\tif (linePrintLast > linePrintMax)\n\t\tlinePrintLast = linePrintMax;\n\t//Platform::DebugPrintf(\"Formatting lines=[%0d,%0d,%0d] top=%0d bottom=%0d line=%0d %0d\\n\",\n\t//      linePrintStart, linePrintLast, linePrintMax, pfr->rc.top, pfr->rc.bottom, vsPrint.lineHeight,\n\t//      surfaceMeasure->Height(vsPrint.styles[STYLE_LINENUMBER].font));\n\tint endPosPrint = model.pdoc->Length();\n\tif (linePrintLast < model.pdoc->LinesTotal())\n\t\tendPosPrint = model.pdoc->LineStart(linePrintLast + 1);\n\n\t// Ensure we are styled to where we are formatting.\n\tmodel.pdoc->EnsureStyledTo(endPosPrint);\n\n\tint xStart = vsPrint.fixedColumnWidth + pfr->rc.left;\n\tint ypos = pfr->rc.top;\n\n\tint lineDoc = linePrintStart;\n\n\tint nPrintPos = static_cast<int>(pfr->chrg.cpMin);\n\tint visibleLine = 0;\n\tint widthPrint = pfr->rc.right - pfr->rc.left - vsPrint.fixedColumnWidth;\n\tif (printParameters.wrapState == eWrapNone)\n\t\twidthPrint = LineLayout::wrapWidthInfinite;\n\n\twhile (lineDoc <= linePrintLast && ypos < pfr->rc.bottom) {\n\n\t\t// When printing, the hdc and hdcTarget may be the same, so\n\t\t// changing the state of surfaceMeasure may change the underlying\n\t\t// state of surface. Therefore, any cached state is discarded before\n\t\t// using each surface.\n\t\tsurfaceMeasure->FlushCachedState();\n\n\t\t// Copy this line and its styles from the document into local arrays\n\t\t// and determine the x position at which each character starts.\n\t\tLineLayout ll(model.pdoc->LineStart(lineDoc + 1) - model.pdoc->LineStart(lineDoc) + 1);\n\t\tLayoutLine(model, lineDoc, surfaceMeasure, vsPrint, &ll, widthPrint);\n\n\t\tll.containsCaret = false;\n\n\t\tPRectangle rcLine = PRectangle::FromInts(\n\t\t\tpfr->rc.left,\n\t\t\typos,\n\t\t\tpfr->rc.right - 1,\n\t\t\typos + vsPrint.lineHeight);\n\n\t\t// When document line is wrapped over multiple display lines, find where\n\t\t// to start printing from to ensure a particular position is on the first\n\t\t// line of the page.\n\t\tif (visibleLine == 0) {\n\t\t\tint startWithinLine = nPrintPos - model.pdoc->LineStart(lineDoc);\n\t\t\tfor (int iwl = 0; iwl < ll.lines - 1; iwl++) {\n\t\t\t\tif (ll.LineStart(iwl) <= startWithinLine && ll.LineStart(iwl + 1) >= startWithinLine) {\n\t\t\t\t\tvisibleLine = -iwl;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ll.lines > 1 && startWithinLine >= ll.LineStart(ll.lines - 1)) {\n\t\t\t\tvisibleLine = -(ll.lines - 1);\n\t\t\t}\n\t\t}\n\n\t\tif (draw && lineNumberWidth &&\n\t\t\t(ypos + vsPrint.lineHeight <= pfr->rc.bottom) &&\n\t\t\t(visibleLine >= 0)) {\n\t\t\tchar number[100];\n\t\t\tsprintf(number, \"%d\" lineNumberPrintSpace, lineDoc + 1);\n\t\t\tPRectangle rcNumber = rcLine;\n\t\t\trcNumber.right = rcNumber.left + lineNumberWidth;\n\t\t\t// Right justify\n\t\t\trcNumber.left = rcNumber.right - surfaceMeasure->WidthText(\n\t\t\t\tvsPrint.styles[STYLE_LINENUMBER].font, number, static_cast<int>(strlen(number)));\n\t\t\tsurface->FlushCachedState();\n\t\t\tsurface->DrawTextNoClip(rcNumber, vsPrint.styles[STYLE_LINENUMBER].font,\n\t\t\t\tstatic_cast<XYPOSITION>(ypos + vsPrint.maxAscent), number, static_cast<int>(strlen(number)),\n\t\t\t\tvsPrint.styles[STYLE_LINENUMBER].fore,\n\t\t\t\tvsPrint.styles[STYLE_LINENUMBER].back);\n\t\t}\n\n\t\t// Draw the line\n\t\tsurface->FlushCachedState();\n\n\t\tfor (int iwl = 0; iwl < ll.lines; iwl++) {\n\t\t\tif (ypos + vsPrint.lineHeight <= pfr->rc.bottom) {\n\t\t\t\tif (visibleLine >= 0) {\n\t\t\t\t\tif (draw) {\n\t\t\t\t\t\trcLine.top = static_cast<XYPOSITION>(ypos);\n\t\t\t\t\t\trcLine.bottom = static_cast<XYPOSITION>(ypos + vsPrint.lineHeight);\n\t\t\t\t\t\tDrawLine(surface, model, vsPrint, &ll, lineDoc, visibleLine, xStart, rcLine, iwl, drawAll);\n\t\t\t\t\t}\n\t\t\t\t\typos += vsPrint.lineHeight;\n\t\t\t\t}\n\t\t\t\tvisibleLine++;\n\t\t\t\tif (iwl == ll.lines - 1)\n\t\t\t\t\tnPrintPos = model.pdoc->LineStart(lineDoc + 1);\n\t\t\t\telse\n\t\t\t\t\tnPrintPos += ll.LineStart(iwl + 1) - ll.LineStart(iwl);\n\t\t\t}\n\t\t}\n\n\t\t++lineDoc;\n\t}\n\n\t// Clear cache so measurements are not used for screen\n\tposCache.Clear();\n\n\treturn nPrintPos;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/EditView.h",
    "content": "// Scintilla source code edit control\n/** @file EditView.h\n ** Defines the appearance of the main text area of the editor window.\n **/\n// Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef EDITVIEW_H\n#define EDITVIEW_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nstruct PrintParameters {\n\tint magnification;\n\tint colourMode;\n\tWrapMode wrapState;\n\tPrintParameters();\n};\n\n/**\n* The view may be drawn in separate phases.\n*/\nenum DrawPhase {\n\tdrawBack = 0x1,\n\tdrawIndicatorsBack = 0x2,\n\tdrawText = 0x4,\n\tdrawIndentationGuides = 0x8,\n\tdrawIndicatorsFore = 0x10,\n\tdrawSelectionTranslucent = 0x20,\n\tdrawLineTranslucent = 0x40,\n\tdrawFoldLines = 0x80,\n\tdrawCarets = 0x100,\n\tdrawAll = 0x1FF\n};\n\nbool ValidStyledText(const ViewStyle &vs, size_t styleOffset, const StyledText &st);\nint WidestLineWidth(Surface *surface, const ViewStyle &vs, int styleOffset, const StyledText &st);\nvoid DrawTextNoClipPhase(Surface *surface, PRectangle rc, const Style &style, XYPOSITION ybase,\n\tconst char *s, int len, DrawPhase phase);\nvoid DrawStyledText(Surface *surface, const ViewStyle &vs, int styleOffset, PRectangle rcText,\n\tconst StyledText &st, size_t start, size_t length, DrawPhase phase);\n\ntypedef void (*DrawTabArrowFn)(Surface *surface, PRectangle rcTab, int ymid);\n\n/**\n* EditView draws the main text area.\n*/\nclass EditView {\npublic:\n\tPrintParameters printParameters;\n\tPerLine *ldTabstops;\n\tint tabWidthMinimumPixels;\n\n\tbool hideSelection;\n\tbool drawOverstrikeCaret;\n\n\t/** In bufferedDraw mode, graphics operations are drawn to a pixmap and then copied to\n\t* the screen. This avoids flashing but is about 30% slower. */\n\tbool bufferedDraw;\n\t/** In phasesTwo mode, drawing is performed in two phases, first the background\n\t* and then the foreground. This avoids chopping off characters that overlap the next run.\n\t* In multiPhaseDraw mode, drawing is performed in multiple phases with each phase drawing\n\t* one feature over the whole drawing area, instead of within one line. This allows text to\n\t* overlap from one line to the next. */\n\tenum PhasesDraw { phasesOne, phasesTwo, phasesMultiple };\n\tPhasesDraw phasesDraw;\n\n\tint lineWidthMaxSeen;\n\n\tbool additionalCaretsBlink;\n\tbool additionalCaretsVisible;\n\n\tbool imeCaretBlockOverride;\n\n\tSurface *pixmapLine;\n\tSurface *pixmapIndentGuide;\n\tSurface *pixmapIndentGuideHighlight;\n\n\tLineLayoutCache llc;\n\tPositionCache posCache;\n\n\tint tabArrowHeight; // draw arrow heads this many pixels above/below line midpoint\n\t/** Some platforms, notably PLAT_CURSES, do not support Scintilla's native\n\t * DrawTabArrow function for drawing tab characters. Allow those platforms to\n\t * override it instead of creating a new method in the Surface class that\n\t * existing platforms must implement as empty. */\n\tDrawTabArrowFn customDrawTabArrow;\n\tDrawWrapMarkerFn customDrawWrapMarker;\n\n\tEditView();\n\tvirtual ~EditView();\n\n\tbool SetTwoPhaseDraw(bool twoPhaseDraw);\n\tbool SetPhasesDraw(int phases);\n\tbool LinesOverlap() const;\n\n\tvoid ClearAllTabstops();\n\tXYPOSITION NextTabstopPos(int line, XYPOSITION x, XYPOSITION tabWidth) const;\n\tbool ClearTabstops(int line);\n\tbool AddTabstop(int line, int x);\n\tint GetNextTabstop(int line, int x) const;\n\tvoid LinesAddedOrRemoved(int lineOfPos, int linesAdded);\n\n\tvoid DropGraphics(bool freeObjects);\n\tvoid AllocateGraphics(const ViewStyle &vsDraw);\n\tvoid RefreshPixMaps(Surface *surfaceWindow, WindowID wid, const ViewStyle &vsDraw);\n\n\tLineLayout *RetrieveLineLayout(int lineNumber, const EditModel &model);\n\tvoid LayoutLine(const EditModel &model, int line, Surface *surface, const ViewStyle &vstyle,\n\t\tLineLayout *ll, int width = LineLayout::wrapWidthInfinite);\n\n\tPoint LocationFromPosition(Surface *surface, const EditModel &model, SelectionPosition pos, int topLine,\n\t\t\t\t   const ViewStyle &vs, PointEnd pe);\n\tRange RangeDisplayLine(Surface *surface, const EditModel &model, int lineVisible, const ViewStyle &vs);\n\tSelectionPosition SPositionFromLocation(Surface *surface, const EditModel &model, PointDocument pt, bool canReturnInvalid,\n\t\tbool charPosition, bool virtualSpace, const ViewStyle &vs);\n\tSelectionPosition SPositionFromLineX(Surface *surface, const EditModel &model, int lineDoc, int x, const ViewStyle &vs);\n\tint DisplayFromPosition(Surface *surface, const EditModel &model, int pos, const ViewStyle &vs);\n\tint StartEndDisplayLine(Surface *surface, const EditModel &model, int pos, bool start, const ViewStyle &vs);\n\n\tvoid DrawIndentGuide(Surface *surface, int lineVisible, int lineHeight, int start, PRectangle rcSegment, bool highlight);\n\tvoid DrawEOL(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, PRectangle rcLine,\n\t\tint line, int lineEnd, int xStart, int subLine, XYACCUMULATOR subLineStart,\n\t\tColourOptional background);\n\tvoid DrawFoldDisplayText(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\t\tint line, int xStart, PRectangle rcLine, int subLine, XYACCUMULATOR subLineStart, DrawPhase phase);\n\tvoid DrawAnnotation(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\t\tint line, int xStart, PRectangle rcLine, int subLine, DrawPhase phase);\n\tvoid DrawCarets(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, int line,\n\t\tint xStart, PRectangle rcLine, int subLine) const;\n\tvoid DrawBackground(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, PRectangle rcLine,\n\t\tRange lineRange, int posLineStart, int xStart,\n\t\tint subLine, ColourOptional background) const;\n\tvoid DrawForeground(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, int lineVisible,\n\t\tPRectangle rcLine, Range lineRange, int posLineStart, int xStart,\n\t\tint subLine, ColourOptional background);\n\tvoid DrawIndentGuidesOverEmpty(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\t\tint line, int lineVisible, PRectangle rcLine, int xStart, int subLine);\n\tvoid DrawLine(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll, int line,\n\t\tint lineVisible, int xStart, PRectangle rcLine, int subLine, DrawPhase phase);\n\tvoid PaintText(Surface *surfaceWindow, const EditModel &model, PRectangle rcArea, PRectangle rcClient,\n\t\tconst ViewStyle &vsDraw);\n\tvoid FillLineRemainder(Surface *surface, const EditModel &model, const ViewStyle &vsDraw, const LineLayout *ll,\n\t\tint line, PRectangle rcArea, int subLine);\n\tlong FormatRange(bool draw, Sci_RangeToFormat *pfr, Surface *surface, Surface *surfaceMeasure,\n\t\tconst EditModel &model, const ViewStyle &vs);\n};\n\n/**\n* Convenience class to ensure LineLayout objects are always disposed.\n*/\nclass AutoLineLayout {\n\tLineLayoutCache &llc;\n\tLineLayout *ll;\n\tAutoLineLayout &operator=(const AutoLineLayout &);\npublic:\n\tAutoLineLayout(LineLayoutCache &llc_, LineLayout *ll_) : llc(llc_), ll(ll_) {}\n\t~AutoLineLayout() {\n\t\tllc.Dispose(ll);\n\t\tll = 0;\n\t}\n\tLineLayout *operator->() const {\n\t\treturn ll;\n\t}\n\toperator LineLayout *() const {\n\t\treturn ll;\n\t}\n\tvoid Set(LineLayout *ll_) {\n\t\tllc.Dispose(ll);\n\t\tll = ll_;\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Editor.cpp",
    "content": "// Scintilla source code edit control\n/** @file Editor.cxx\n ** Main code for the edit control.\n **/\n// Copyright 1998-2011 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <cmath>\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n#include <memory>\n\n#include \"Platform.h\"\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n\n#include \"StringCopy.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"ContractionState.h\"\n#include \"CellBuffer.h\"\n#include \"PerLine.h\"\n#include \"KeyMap.h\"\n#include \"Indicator.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n#include \"Style.h\"\n#include \"ViewStyle.h\"\n#include \"CharClassify.h\"\n#include \"Decoration.h\"\n#include \"CaseFolder.h\"\n#include \"Document.h\"\n#include \"UniConversion.h\"\n#include \"Selection.h\"\n#include \"PositionCache.h\"\n#include \"EditModel.h\"\n#include \"MarginView.h\"\n#include \"EditView.h\"\n#include \"Editor.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n/*\n\treturn whether this modification represents an operation that\n\tmay reasonably be deferred (not done now OR [possibly] at all)\n*/\nstatic bool CanDeferToLastStep(const DocModification &mh) {\n\tif (mh.modificationType & (SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE))\n\t\treturn true;\t// CAN skip\n\tif (!(mh.modificationType & (SC_PERFORMED_UNDO | SC_PERFORMED_REDO)))\n\t\treturn false;\t// MUST do\n\tif (mh.modificationType & SC_MULTISTEPUNDOREDO)\n\t\treturn true;\t// CAN skip\n\treturn false;\t\t// PRESUMABLY must do\n}\n\nstatic bool CanEliminate(const DocModification &mh) {\n\treturn\n\t    (mh.modificationType & (SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE)) != 0;\n}\n\n/*\n\treturn whether this modification represents the FINAL step\n\tin a [possibly lengthy] multi-step Undo/Redo sequence\n*/\nstatic bool IsLastStep(const DocModification &mh) {\n\treturn\n\t    (mh.modificationType & (SC_PERFORMED_UNDO | SC_PERFORMED_REDO)) != 0\n\t    && (mh.modificationType & SC_MULTISTEPUNDOREDO) != 0\n\t    && (mh.modificationType & SC_LASTSTEPINUNDOREDO) != 0\n\t    && (mh.modificationType & SC_MULTILINEUNDOREDO) != 0;\n}\n\nTimer::Timer() :\n\t\tticking(false), ticksToWait(0), tickerID(0) {}\n\nIdler::Idler() :\n\t\tstate(false), idlerID(0) {}\n\nstatic inline bool IsAllSpacesOrTabs(const char *s, unsigned int len) {\n\tfor (unsigned int i = 0; i < len; i++) {\n\t\t// This is safe because IsSpaceOrTab() will return false for null terminators\n\t\tif (!IsSpaceOrTab(s[i]))\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\nEditor::Editor() {\n\tctrlID = 0;\n\n\tstylesValid = false;\n\ttechnology = SC_TECHNOLOGY_DEFAULT;\n\tscaleRGBAImage = 100.0f;\n\n\tcursorMode = SC_CURSORNORMAL;\n\n\thasFocus = false;\n\terrorStatus = 0;\n\tmouseDownCaptures = true;\n\tmouseWheelCaptures = true;\n\n\tlastClickTime = 0;\n\tdoubleClickCloseThreshold = Point(3, 3);\n\tdwellDelay = SC_TIME_FOREVER;\n\tticksToDwell = SC_TIME_FOREVER;\n\tdwelling = false;\n\tptMouseLast.x = 0;\n\tptMouseLast.y = 0;\n\tinDragDrop = ddNone;\n\tdropWentOutside = false;\n\tposDrop = SelectionPosition(invalidPosition);\n\thotSpotClickPos = INVALID_POSITION;\n\tselectionType = selChar;\n\n\tlastXChosen = 0;\n\tlineAnchorPos = 0;\n\toriginalAnchorPos = 0;\n\twordSelectAnchorStartPos = 0;\n\twordSelectAnchorEndPos = 0;\n\twordSelectInitialCaretPos = -1;\n\n\tcaretXPolicy = CARET_SLOP | CARET_EVEN;\n\tcaretXSlop = 50;\n\n\tcaretYPolicy = CARET_EVEN;\n\tcaretYSlop = 0;\n\n\tvisiblePolicy = 0;\n\tvisibleSlop = 0;\n\n\tsearchAnchor = 0;\n\n\txCaretMargin = 50;\n\thorizontalScrollBarVisible = true;\n\tscrollWidth = 2000;\n\tverticalScrollBarVisible = true;\n\tendAtLastLine = true;\n\tcaretSticky = SC_CARETSTICKY_OFF;\n\tmarginOptions = SC_MARGINOPTION_NONE;\n\tmouseSelectionRectangularSwitch = false;\n\tmultipleSelection = false;\n\tadditionalSelectionTyping = false;\n\tmultiPasteMode = SC_MULTIPASTE_ONCE;\n\tvirtualSpaceOptions = SCVS_NONE;\n\n\ttargetStart = 0;\n\ttargetEnd = 0;\n\tsearchFlags = 0;\n\n\ttopLine = 0;\n\tposTopLine = 0;\n\n\tlengthForEncode = -1;\n\n\tneedUpdateUI = 0;\n\tContainerNeedsUpdate(SC_UPDATE_CONTENT);\n\n\tpaintState = notPainting;\n\tpaintAbandonedByStyling = false;\n\tpaintingAllText = false;\n\twillRedrawAll = false;\n\tidleStyling = SC_IDLESTYLING_NONE;\n\tneedIdleStyling = false;\n\n\tmodEventMask = SC_MODEVENTMASKALL;\n\n\tpdoc->AddWatcher(this, 0);\n\n\trecordingMacro = false;\n\tfoldAutomatic = 0;\n\n\tconvertPastes = true;\n\n\tSetRepresentations();\n}\n\nEditor::~Editor() {\n\tpdoc->RemoveWatcher(this, 0);\n\tDropGraphics(true);\n}\n\nvoid Editor::Finalise() {\n\tSetIdle(false);\n\tCancelModes();\n}\n\nvoid Editor::SetRepresentations() {\n\treprs.Clear();\n\n\t// C0 control set\n\tconst char *reps[] = {\n\t\t\"NUL\", \"SOH\", \"STX\", \"ETX\", \"EOT\", \"ENQ\", \"ACK\", \"BEL\",\n\t\t\"BS\", \"HT\", \"LF\", \"VT\", \"FF\", \"CR\", \"SO\", \"SI\",\n\t\t\"DLE\", \"DC1\", \"DC2\", \"DC3\", \"DC4\", \"NAK\", \"SYN\", \"ETB\",\n\t\t\"CAN\", \"EM\", \"SUB\", \"ESC\", \"FS\", \"GS\", \"RS\", \"US\"\n\t};\n\tfor (size_t j=0; j < ELEMENTS(reps); j++) {\n\t\tchar c[2] = { static_cast<char>(j), 0 };\n\t\treprs.SetRepresentation(c, reps[j]);\n\t}\n\n\t// C1 control set\n\t// As well as Unicode mode, ISO-8859-1 should use these\n\tif (IsUnicodeMode()) {\n\t\tconst char *repsC1[] = {\n\t\t\t\"PAD\", \"HOP\", \"BPH\", \"NBH\", \"IND\", \"NEL\", \"SSA\", \"ESA\",\n\t\t\t\"HTS\", \"HTJ\", \"VTS\", \"PLD\", \"PLU\", \"RI\", \"SS2\", \"SS3\",\n\t\t\t\"DCS\", \"PU1\", \"PU2\", \"STS\", \"CCH\", \"MW\", \"SPA\", \"EPA\",\n\t\t\t\"SOS\", \"SGCI\", \"SCI\", \"CSI\", \"ST\", \"OSC\", \"PM\", \"APC\"\n\t\t};\n\t\tfor (size_t j=0; j < ELEMENTS(repsC1); j++) {\n\t\t\tchar c1[3] = { '\\xc2',  static_cast<char>(0x80+j), 0 };\n\t\t\treprs.SetRepresentation(c1, repsC1[j]);\n\t\t}\n\t\treprs.SetRepresentation(\"\\xe2\\x80\\xa8\", \"LS\");\n\t\treprs.SetRepresentation(\"\\xe2\\x80\\xa9\", \"PS\");\n\t}\n\n\t// UTF-8 invalid bytes\n\tif (IsUnicodeMode()) {\n\t\tfor (int k=0x80; k < 0x100; k++) {\n\t\t\tchar hiByte[2] = {  static_cast<char>(k), 0 };\n\t\t\tchar hexits[4];\n\t\t\tsprintf(hexits, \"x%2X\", k);\n\t\t\treprs.SetRepresentation(hiByte, hexits);\n\t\t}\n\t}\n}\n\nvoid Editor::DropGraphics(bool freeObjects) {\n\tmarginView.DropGraphics(freeObjects);\n\tview.DropGraphics(freeObjects);\n}\n\nvoid Editor::AllocateGraphics() {\n\tmarginView.AllocateGraphics(vs);\n\tview.AllocateGraphics(vs);\n}\n\nvoid Editor::InvalidateStyleData() {\n\tstylesValid = false;\n\tvs.technology = technology;\n\tDropGraphics(false);\n\tAllocateGraphics();\n\tview.llc.Invalidate(LineLayout::llInvalid);\n\tview.posCache.Clear();\n}\n\nvoid Editor::InvalidateStyleRedraw() {\n\tNeedWrapping();\n\tInvalidateStyleData();\n\tRedraw();\n}\n\nvoid Editor::RefreshStyleData() {\n\tif (!stylesValid) {\n\t\tstylesValid = true;\n\t\tAutoSurface surface(this);\n\t\tif (surface) {\n\t\t\tvs.Refresh(*surface, pdoc->tabInChars);\n\t\t}\n\t\tSetScrollBars();\n\t\tSetRectangularRange();\n\t}\n}\n\nPoint Editor::GetVisibleOriginInMain() const {\n\treturn Point(0,0);\n}\n\nPointDocument Editor::DocumentPointFromView(Point ptView) const {\n\tPointDocument ptDocument(ptView);\n\tif (wMargin.GetID()) {\n\t\tPoint ptOrigin = GetVisibleOriginInMain();\n\t\tptDocument.x += ptOrigin.x;\n\t\tptDocument.y += ptOrigin.y;\n\t} else {\n\t\tptDocument.x += xOffset;\n\t\tptDocument.y += topLine * vs.lineHeight;\n\t}\n\treturn ptDocument;\n}\n\nint Editor::TopLineOfMain() const {\n\tif (wMargin.GetID())\n\t\treturn 0;\n\telse\n\t\treturn topLine;\n}\n\nPRectangle Editor::GetClientRectangle() const {\n\tWindow win = wMain;\n\treturn win.GetClientPosition();\n}\n\nPRectangle Editor::GetClientDrawingRectangle() {\n\treturn GetClientRectangle();\n}\n\nPRectangle Editor::GetTextRectangle() const {\n\tPRectangle rc = GetClientRectangle();\n\trc.left += vs.textStart;\n\trc.right -= vs.rightMarginWidth;\n\treturn rc;\n}\n\nint Editor::LinesOnScreen() const {\n\tPRectangle rcClient = GetClientRectangle();\n\tint htClient = static_cast<int>(rcClient.bottom - rcClient.top);\n\t//Platform::DebugPrintf(\"lines on screen = %d\\n\", htClient / lineHeight + 1);\n\treturn htClient / vs.lineHeight;\n}\n\nint Editor::LinesToScroll() const {\n\tint retVal = LinesOnScreen() - 1;\n\tif (retVal < 1)\n\t\treturn 1;\n\telse\n\t\treturn retVal;\n}\n\nint Editor::MaxScrollPos() const {\n\t//Platform::DebugPrintf(\"Lines %d screen = %d maxScroll = %d\\n\",\n\t//LinesTotal(), LinesOnScreen(), LinesTotal() - LinesOnScreen() + 1);\n\tint retVal = cs.LinesDisplayed();\n\tif (endAtLastLine) {\n\t\tretVal -= LinesOnScreen();\n\t} else {\n\t\tretVal--;\n\t}\n\tif (retVal < 0) {\n\t\treturn 0;\n\t} else {\n\t\treturn retVal;\n\t}\n}\n\nSelectionPosition Editor::ClampPositionIntoDocument(SelectionPosition sp) const {\n\tif (sp.Position() < 0) {\n\t\treturn SelectionPosition(0);\n\t} else if (sp.Position() > pdoc->Length()) {\n\t\treturn SelectionPosition(pdoc->Length());\n\t} else {\n\t\t// If not at end of line then set offset to 0\n\t\tif (!pdoc->IsLineEndPosition(sp.Position()))\n\t\t\tsp.SetVirtualSpace(0);\n\t\treturn sp;\n\t}\n}\n\nPoint Editor::LocationFromPosition(SelectionPosition pos, PointEnd pe) {\n\tRefreshStyleData();\n\tAutoSurface surface(this);\n\treturn view.LocationFromPosition(surface, *this, pos, topLine, vs, pe);\n}\n\nPoint Editor::LocationFromPosition(int pos, PointEnd pe) {\n\treturn LocationFromPosition(SelectionPosition(pos), pe);\n}\n\nint Editor::XFromPosition(int pos) {\n\tPoint pt = LocationFromPosition(pos);\n\treturn static_cast<int>(pt.x) - vs.textStart + xOffset;\n}\n\nint Editor::XFromPosition(SelectionPosition sp) {\n\tPoint pt = LocationFromPosition(sp);\n\treturn static_cast<int>(pt.x) - vs.textStart + xOffset;\n}\n\nSelectionPosition Editor::SPositionFromLocation(Point pt, bool canReturnInvalid, bool charPosition, bool virtualSpace) {\n\tRefreshStyleData();\n\tAutoSurface surface(this);\n\n\tif (canReturnInvalid) {\n\t\tPRectangle rcClient = GetTextRectangle();\n\t\t// May be in scroll view coordinates so translate back to main view\n\t\tPoint ptOrigin = GetVisibleOriginInMain();\n\t\trcClient.Move(-ptOrigin.x, -ptOrigin.y);\n\t\tif (!rcClient.Contains(pt))\n\t\t\treturn SelectionPosition(INVALID_POSITION);\n\t\tif (pt.x < vs.textStart)\n\t\t\treturn SelectionPosition(INVALID_POSITION);\n\t\tif (pt.y < 0)\n\t\t\treturn SelectionPosition(INVALID_POSITION);\n\t}\n\tPointDocument ptdoc = DocumentPointFromView(pt);\n\treturn view.SPositionFromLocation(surface, *this, ptdoc, canReturnInvalid, charPosition, virtualSpace, vs);\n}\n\nint Editor::PositionFromLocation(Point pt, bool canReturnInvalid, bool charPosition) {\n\treturn SPositionFromLocation(pt, canReturnInvalid, charPosition, false).Position();\n}\n\n/**\n* Find the document position corresponding to an x coordinate on a particular document line.\n* Ensure is between whole characters when document is in multi-byte or UTF-8 mode.\n* This method is used for rectangular selections and does not work on wrapped lines.\n*/\nSelectionPosition Editor::SPositionFromLineX(int lineDoc, int x) {\n\tRefreshStyleData();\n\tif (lineDoc >= pdoc->LinesTotal())\n\t\treturn SelectionPosition(pdoc->Length());\n\t//Platform::DebugPrintf(\"Position of (%d,%d) line = %d top=%d\\n\", pt.x, pt.y, line, topLine);\n\tAutoSurface surface(this);\n\treturn view.SPositionFromLineX(surface, *this, lineDoc, x, vs);\n}\n\nint Editor::PositionFromLineX(int lineDoc, int x) {\n\treturn SPositionFromLineX(lineDoc, x).Position();\n}\n\nint Editor::LineFromLocation(Point pt) const {\n\treturn cs.DocFromDisplay(static_cast<int>(pt.y) / vs.lineHeight + topLine);\n}\n\nvoid Editor::SetTopLine(int topLineNew) {\n\tif ((topLine != topLineNew) && (topLineNew >= 0)) {\n\t\ttopLine = topLineNew;\n\t\tContainerNeedsUpdate(SC_UPDATE_V_SCROLL);\n\t}\n\tposTopLine = pdoc->LineStart(cs.DocFromDisplay(topLine));\n}\n\n/**\n * If painting then abandon the painting because a wider redraw is needed.\n * @return true if calling code should stop drawing.\n */\nbool Editor::AbandonPaint() {\n\tif ((paintState == painting) && !paintingAllText) {\n\t\tpaintState = paintAbandoned;\n\t}\n\treturn paintState == paintAbandoned;\n}\n\nvoid Editor::RedrawRect(PRectangle rc) {\n\t//Platform::DebugPrintf(\"Redraw %0d,%0d - %0d,%0d\\n\", rc.left, rc.top, rc.right, rc.bottom);\n\n\t// Clip the redraw rectangle into the client area\n\tPRectangle rcClient = GetClientRectangle();\n\tif (rc.top < rcClient.top)\n\t\trc.top = rcClient.top;\n\tif (rc.bottom > rcClient.bottom)\n\t\trc.bottom = rcClient.bottom;\n\tif (rc.left < rcClient.left)\n\t\trc.left = rcClient.left;\n\tif (rc.right > rcClient.right)\n\t\trc.right = rcClient.right;\n\n\tif ((rc.bottom > rc.top) && (rc.right > rc.left)) {\n\t\twMain.InvalidateRectangle(rc);\n\t}\n}\n\nvoid Editor::DiscardOverdraw() {\n\t// Overridden on platforms that may draw outside visible area.\n}\n\nvoid Editor::Redraw() {\n\t//Platform::DebugPrintf(\"Redraw all\\n\");\n\tPRectangle rcClient = GetClientRectangle();\n\twMain.InvalidateRectangle(rcClient);\n\tif (wMargin.GetID())\n\t\twMargin.InvalidateAll();\n\t//wMain.InvalidateAll();\n}\n\nvoid Editor::RedrawSelMargin(int line, bool allAfter) {\n\tconst bool markersInText = vs.maskInLine || vs.maskDrawInText;\n\tif (!wMargin.GetID() || markersInText) {\t// May affect text area so may need to abandon and retry\n\t\tif (AbandonPaint()) {\n\t\t\treturn;\n\t\t}\n\t}\n\tif (wMargin.GetID() && markersInText) {\n\t\tRedraw();\n\t\treturn;\n\t}\n\tPRectangle rcMarkers = GetClientRectangle();\n\tif (!markersInText) {\n\t\t// Normal case: just draw the margin\n\t\trcMarkers.right = rcMarkers.left + vs.fixedColumnWidth;\n\t}\n\tif (line != -1) {\n\t\tPRectangle rcLine = RectangleFromRange(Range(pdoc->LineStart(line)), 0);\n\n\t\t// Inflate line rectangle if there are image markers with height larger than line height\n\t\tif (vs.largestMarkerHeight > vs.lineHeight) {\n\t\t\tint delta = (vs.largestMarkerHeight - vs.lineHeight + 1) / 2;\n\t\t\trcLine.top -= delta;\n\t\t\trcLine.bottom += delta;\n\t\t\tif (rcLine.top < rcMarkers.top)\n\t\t\t\trcLine.top = rcMarkers.top;\n\t\t\tif (rcLine.bottom > rcMarkers.bottom)\n\t\t\t\trcLine.bottom = rcMarkers.bottom;\n\t\t}\n\n\t\trcMarkers.top = rcLine.top;\n\t\tif (!allAfter)\n\t\t\trcMarkers.bottom = rcLine.bottom;\n\t\tif (rcMarkers.Empty())\n\t\t\treturn;\n\t}\n\tif (wMargin.GetID()) {\n\t\tPoint ptOrigin = GetVisibleOriginInMain();\n\t\trcMarkers.Move(-ptOrigin.x, -ptOrigin.y);\n\t\twMargin.InvalidateRectangle(rcMarkers);\n\t} else {\n\t\twMain.InvalidateRectangle(rcMarkers);\n\t}\n}\n\nPRectangle Editor::RectangleFromRange(Range r, int overlap) {\n\tconst int minLine = cs.DisplayFromDoc(pdoc->LineFromPosition(r.First()));\n\tconst int maxLine = cs.DisplayLastFromDoc(pdoc->LineFromPosition(r.Last()));\n\tconst PRectangle rcClientDrawing = GetClientDrawingRectangle();\n\tPRectangle rc;\n\tconst int leftTextOverlap = ((xOffset == 0) && (vs.leftMarginWidth > 0)) ? 1 : 0;\n\trc.left = static_cast<XYPOSITION>(vs.textStart - leftTextOverlap);\n\trc.top = static_cast<XYPOSITION>((minLine - TopLineOfMain()) * vs.lineHeight - overlap);\n\tif (rc.top < rcClientDrawing.top)\n\t\trc.top = rcClientDrawing.top;\n\t// Extend to right of prepared area if any to prevent artifacts from caret line highlight\n\trc.right = rcClientDrawing.right;\n\trc.bottom = static_cast<XYPOSITION>((maxLine - TopLineOfMain() + 1) * vs.lineHeight + overlap);\n\n\treturn rc;\n}\n\nvoid Editor::InvalidateRange(int start, int end) {\n\tRedrawRect(RectangleFromRange(Range(start, end), view.LinesOverlap() ? vs.lineOverlap : 0));\n}\n\nint Editor::CurrentPosition() const {\n\treturn sel.MainCaret();\n}\n\nbool Editor::SelectionEmpty() const {\n\treturn sel.Empty();\n}\n\nSelectionPosition Editor::SelectionStart() {\n\treturn sel.RangeMain().Start();\n}\n\nSelectionPosition Editor::SelectionEnd() {\n\treturn sel.RangeMain().End();\n}\n\nvoid Editor::SetRectangularRange() {\n\tif (sel.IsRectangular()) {\n\t\tint xAnchor = XFromPosition(sel.Rectangular().anchor);\n\t\tint xCaret = XFromPosition(sel.Rectangular().caret);\n\t\tif (sel.selType == Selection::selThin) {\n\t\t\txCaret = xAnchor;\n\t\t}\n\t\tint lineAnchorRect = pdoc->LineFromPosition(sel.Rectangular().anchor.Position());\n\t\tint lineCaret = pdoc->LineFromPosition(sel.Rectangular().caret.Position());\n\t\tint increment = (lineCaret > lineAnchorRect) ? 1 : -1;\n\t\tfor (int line=lineAnchorRect; line != lineCaret+increment; line += increment) {\n\t\t\tSelectionRange range(SPositionFromLineX(line, xCaret), SPositionFromLineX(line, xAnchor));\n\t\t\tif ((virtualSpaceOptions & SCVS_RECTANGULARSELECTION) == 0)\n\t\t\t\trange.ClearVirtualSpace();\n\t\t\tif (line == lineAnchorRect)\n\t\t\t\tsel.SetSelection(range);\n\t\t\telse\n\t\t\t\tsel.AddSelectionWithoutTrim(range);\n\t\t}\n\t}\n}\n\nvoid Editor::ThinRectangularRange() {\n\tif (sel.IsRectangular()) {\n\t\tsel.selType = Selection::selThin;\n\t\tif (sel.Rectangular().caret < sel.Rectangular().anchor) {\n\t\t\tsel.Rectangular() = SelectionRange(sel.Range(sel.Count()-1).caret, sel.Range(0).anchor);\n\t\t} else {\n\t\t\tsel.Rectangular() = SelectionRange(sel.Range(sel.Count()-1).anchor, sel.Range(0).caret);\n\t\t}\n\t\tSetRectangularRange();\n\t}\n}\n\nvoid Editor::InvalidateSelection(SelectionRange newMain, bool invalidateWholeSelection) {\n\tif (sel.Count() > 1 || !(sel.RangeMain().anchor == newMain.anchor) || sel.IsRectangular()) {\n\t\tinvalidateWholeSelection = true;\n\t}\n\tint firstAffected = Platform::Minimum(sel.RangeMain().Start().Position(), newMain.Start().Position());\n\t// +1 for lastAffected ensures caret repainted\n\tint lastAffected = Platform::Maximum(newMain.caret.Position()+1, newMain.anchor.Position());\n\tlastAffected = Platform::Maximum(lastAffected, sel.RangeMain().End().Position());\n\tif (invalidateWholeSelection) {\n\t\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\t\tfirstAffected = Platform::Minimum(firstAffected, sel.Range(r).caret.Position());\n\t\t\tfirstAffected = Platform::Minimum(firstAffected, sel.Range(r).anchor.Position());\n\t\t\tlastAffected = Platform::Maximum(lastAffected, sel.Range(r).caret.Position()+1);\n\t\t\tlastAffected = Platform::Maximum(lastAffected, sel.Range(r).anchor.Position());\n\t\t}\n\t}\n\tContainerNeedsUpdate(SC_UPDATE_SELECTION);\n\tInvalidateRange(firstAffected, lastAffected);\n}\n\nvoid Editor::InvalidateWholeSelection() {\n\tInvalidateSelection(sel.RangeMain(), true);\n}\n\nvoid Editor::SetSelection(SelectionPosition currentPos_, SelectionPosition anchor_) {\n\tcurrentPos_ = ClampPositionIntoDocument(currentPos_);\n\tanchor_ = ClampPositionIntoDocument(anchor_);\n\tint currentLine = pdoc->LineFromPosition(currentPos_.Position());\n\t/* For Line selection - ensure the anchor and caret are always\n\t   at the beginning and end of the region lines. */\n\tif (sel.selType == Selection::selLines) {\n\t\tif (currentPos_ > anchor_) {\n\t\t\tanchor_ = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(anchor_.Position())));\n\t\t\tcurrentPos_ = SelectionPosition(pdoc->LineEnd(pdoc->LineFromPosition(currentPos_.Position())));\n\t\t} else {\n\t\t\tcurrentPos_ = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(currentPos_.Position())));\n\t\t\tanchor_ = SelectionPosition(pdoc->LineEnd(pdoc->LineFromPosition(anchor_.Position())));\n\t\t}\n\t}\n\tSelectionRange rangeNew(currentPos_, anchor_);\n\tif (sel.Count() > 1 || !(sel.RangeMain() == rangeNew)) {\n\t\tInvalidateSelection(rangeNew);\n\t}\n\tsel.RangeMain() = rangeNew;\n\tSetRectangularRange();\n\tClaimSelection();\n\tSetHoverIndicatorPosition(sel.MainCaret());\n\n\tif (marginView.highlightDelimiter.NeedsDrawing(currentLine)) {\n\t\tRedrawSelMargin();\n\t}\n\tQueueIdleWork(WorkNeeded::workUpdateUI);\n}\n\nvoid Editor::SetSelection(int currentPos_, int anchor_) {\n\tSetSelection(SelectionPosition(currentPos_), SelectionPosition(anchor_));\n}\n\n// Just move the caret on the main selection\nvoid Editor::SetSelection(SelectionPosition currentPos_) {\n\tcurrentPos_ = ClampPositionIntoDocument(currentPos_);\n\tint currentLine = pdoc->LineFromPosition(currentPos_.Position());\n\tif (sel.Count() > 1 || !(sel.RangeMain().caret == currentPos_)) {\n\t\tInvalidateSelection(SelectionRange(currentPos_));\n\t}\n\tif (sel.IsRectangular()) {\n\t\tsel.Rectangular() =\n\t\t\tSelectionRange(SelectionPosition(currentPos_), sel.Rectangular().anchor);\n\t\tSetRectangularRange();\n\t} else {\n\t\tsel.RangeMain() =\n\t\t\tSelectionRange(SelectionPosition(currentPos_), sel.RangeMain().anchor);\n\t}\n\tClaimSelection();\n\tSetHoverIndicatorPosition(sel.MainCaret());\n\n\tif (marginView.highlightDelimiter.NeedsDrawing(currentLine)) {\n\t\tRedrawSelMargin();\n\t}\n\tQueueIdleWork(WorkNeeded::workUpdateUI);\n}\n\nvoid Editor::SetSelection(int currentPos_) {\n\tSetSelection(SelectionPosition(currentPos_));\n}\n\nvoid Editor::SetEmptySelection(SelectionPosition currentPos_) {\n\tint currentLine = pdoc->LineFromPosition(currentPos_.Position());\n\tSelectionRange rangeNew(ClampPositionIntoDocument(currentPos_));\n\tif (sel.Count() > 1 || !(sel.RangeMain() == rangeNew)) {\n\t\tInvalidateSelection(rangeNew);\n\t}\n\tsel.Clear();\n\tsel.RangeMain() = rangeNew;\n\tSetRectangularRange();\n\tClaimSelection();\n\tSetHoverIndicatorPosition(sel.MainCaret());\n\n\tif (marginView.highlightDelimiter.NeedsDrawing(currentLine)) {\n\t\tRedrawSelMargin();\n\t}\n\tQueueIdleWork(WorkNeeded::workUpdateUI);\n}\n\nvoid Editor::SetEmptySelection(int currentPos_) {\n\tSetEmptySelection(SelectionPosition(currentPos_));\n}\n\nvoid Editor::MultipleSelectAdd(AddNumber addNumber) {\n\tif (SelectionEmpty() || !multipleSelection) {\n\t\t// Select word at caret\n\t\tconst int startWord = pdoc->ExtendWordSelect(sel.MainCaret(), -1, true);\n\t\tconst int endWord = pdoc->ExtendWordSelect(startWord, 1, true);\n\t\tTrimAndSetSelection(endWord, startWord);\n\n\t} else {\n\n\t\tif (!pdoc->HasCaseFolder())\n\t\t\tpdoc->SetCaseFolder(CaseFolderForEncoding());\n\n\t\tconst Range rangeMainSelection(sel.RangeMain().Start().Position(), sel.RangeMain().End().Position());\n\t\tconst std::string selectedText = RangeText(rangeMainSelection.start, rangeMainSelection.end);\n\n\t\tconst Range rangeTarget(targetStart, targetEnd);\n\t\tstd::vector<Range> searchRanges;\n\t\t// Search should be over the target range excluding the current selection so\n\t\t// may need to search 2 ranges, after the selection then before the selection.\n\t\tif (rangeTarget.Overlaps(rangeMainSelection)) {\n\t\t\t// Common case is that the selection is completely within the target but\n\t\t\t// may also have overlap at start or end.\n\t\t\tif (rangeMainSelection.end < rangeTarget.end)\n\t\t\t\tsearchRanges.push_back(Range(rangeMainSelection.end, rangeTarget.end));\n\t\t\tif (rangeTarget.start < rangeMainSelection.start)\n\t\t\t\tsearchRanges.push_back(Range(rangeTarget.start, rangeMainSelection.start));\n\t\t} else {\n\t\t\t// No overlap\n\t\t\tsearchRanges.push_back(rangeTarget);\n\t\t}\n\n\t\tfor (std::vector<Range>::const_iterator it = searchRanges.begin(); it != searchRanges.end(); ++it) {\n\t\t\tint searchStart = it->start;\n\t\t\tconst int searchEnd = it->end;\n\t\t\tfor (;;) {\n\t\t\t\tint lengthFound = static_cast<int>(selectedText.length());\n\t\t\t\tint pos = static_cast<int>(pdoc->FindText(searchStart, searchEnd,\n\t\t\t\t\tselectedText.c_str(), searchFlags, &lengthFound));\n\t\t\t\tif (pos >= 0) {\n\t\t\t\t\tsel.AddSelection(SelectionRange(pos + lengthFound, pos));\n\t\t\t\t\tScrollRange(sel.RangeMain());\n\t\t\t\t\tRedraw();\n\t\t\t\t\tif (addNumber == addOne)\n\t\t\t\t\t\treturn;\n\t\t\t\t\tsearchStart = pos + lengthFound;\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nbool Editor::RangeContainsProtected(int start, int end) const {\n\tif (vs.ProtectionActive()) {\n\t\tif (start > end) {\n\t\t\tint t = start;\n\t\t\tstart = end;\n\t\t\tend = t;\n\t\t}\n\t\tfor (int pos = start; pos < end; pos++) {\n\t\t\tif (vs.styles[pdoc->StyleIndexAt(pos)].IsProtected())\n\t\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nbool Editor::SelectionContainsProtected() {\n\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\tif (RangeContainsProtected(sel.Range(r).Start().Position(),\n\t\t\tsel.Range(r).End().Position())) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Asks document to find a good position and then moves out of any invisible positions.\n */\nint Editor::MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd) const {\n\treturn MovePositionOutsideChar(SelectionPosition(pos), moveDir, checkLineEnd).Position();\n}\n\nSelectionPosition Editor::MovePositionOutsideChar(SelectionPosition pos, int moveDir, bool checkLineEnd) const {\n\tint posMoved = pdoc->MovePositionOutsideChar(pos.Position(), moveDir, checkLineEnd);\n\tif (posMoved != pos.Position())\n\t\tpos.SetPosition(posMoved);\n\tif (vs.ProtectionActive()) {\n\t\tif (moveDir > 0) {\n\t\t\tif ((pos.Position() > 0) && vs.styles[pdoc->StyleIndexAt(pos.Position() - 1)].IsProtected()) {\n\t\t\t\twhile ((pos.Position() < pdoc->Length()) &&\n\t\t\t\t        (vs.styles[pdoc->StyleIndexAt(pos.Position())].IsProtected()))\n\t\t\t\t\tpos.Add(1);\n\t\t\t}\n\t\t} else if (moveDir < 0) {\n\t\t\tif (vs.styles[pdoc->StyleIndexAt(pos.Position())].IsProtected()) {\n\t\t\t\twhile ((pos.Position() > 0) &&\n\t\t\t\t        (vs.styles[pdoc->StyleIndexAt(pos.Position() - 1)].IsProtected()))\n\t\t\t\t\tpos.Add(-1);\n\t\t\t}\n\t\t}\n\t}\n\treturn pos;\n}\n\nvoid Editor::MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, bool ensureVisible) {\n\tconst int currentLine = pdoc->LineFromPosition(newPos.Position());\n\tif (ensureVisible) {\n\t\t// In case in need of wrapping to ensure DisplayFromDoc works.\n\t\tif (currentLine >= wrapPending.start)\n\t\t\tWrapLines(wsAll);\n\t\tXYScrollPosition newXY = XYScrollToMakeVisible(\n\t\t\tSelectionRange(posDrag.IsValid() ? posDrag : newPos), xysDefault);\n\t\tif (previousPos.IsValid() && (newXY.xOffset == xOffset)) {\n\t\t\t// simple vertical scroll then invalidate\n\t\t\tScrollTo(newXY.topLine);\n\t\t\tInvalidateSelection(SelectionRange(previousPos), true);\n\t\t} else {\n\t\t\tSetXYScroll(newXY);\n\t\t}\n\t}\n\n\tShowCaretAtCurrentPosition();\n\tNotifyCaretMove();\n\n\tClaimSelection();\n\tSetHoverIndicatorPosition(sel.MainCaret());\n\tQueueIdleWork(WorkNeeded::workUpdateUI);\n\n\tif (marginView.highlightDelimiter.NeedsDrawing(currentLine)) {\n\t\tRedrawSelMargin();\n\t}\n}\n\nvoid Editor::MovePositionTo(SelectionPosition newPos, Selection::selTypes selt, bool ensureVisible) {\n\tconst SelectionPosition spCaret = ((sel.Count() == 1) && sel.Empty()) ?\n\t\tsel.Last() : SelectionPosition(INVALID_POSITION);\n\n\tint delta = newPos.Position() - sel.MainCaret();\n\tnewPos = ClampPositionIntoDocument(newPos);\n\tnewPos = MovePositionOutsideChar(newPos, delta);\n\tif (!multipleSelection && sel.IsRectangular() && (selt == Selection::selStream)) {\n\t\t// Can't turn into multiple selection so clear additional selections\n\t\tInvalidateSelection(SelectionRange(newPos), true);\n\t\tsel.DropAdditionalRanges();\n\t}\n\tif (!sel.IsRectangular() && (selt == Selection::selRectangle)) {\n\t\t// Switching to rectangular\n\t\tInvalidateSelection(sel.RangeMain(), false);\n\t\tSelectionRange rangeMain = sel.RangeMain();\n\t\tsel.Clear();\n\t\tsel.Rectangular() = rangeMain;\n\t}\n\tif (selt != Selection::noSel) {\n\t\tsel.selType = selt;\n\t}\n\tif (selt != Selection::noSel || sel.MoveExtends()) {\n\t\tSetSelection(newPos);\n\t} else {\n\t\tSetEmptySelection(newPos);\n\t}\n\n\tMovedCaret(newPos, spCaret, ensureVisible);\n}\n\nvoid Editor::MovePositionTo(int newPos, Selection::selTypes selt, bool ensureVisible) {\n\tMovePositionTo(SelectionPosition(newPos), selt, ensureVisible);\n}\n\nSelectionPosition Editor::MovePositionSoVisible(SelectionPosition pos, int moveDir) {\n\tpos = ClampPositionIntoDocument(pos);\n\tpos = MovePositionOutsideChar(pos, moveDir);\n\tint lineDoc = pdoc->LineFromPosition(pos.Position());\n\tif (cs.GetVisible(lineDoc)) {\n\t\treturn pos;\n\t} else {\n\t\tint lineDisplay = cs.DisplayFromDoc(lineDoc);\n\t\tif (moveDir > 0) {\n\t\t\t// lineDisplay is already line before fold as lines in fold use display line of line after fold\n\t\t\tlineDisplay = Platform::Clamp(lineDisplay, 0, cs.LinesDisplayed());\n\t\t\treturn SelectionPosition(pdoc->LineStart(cs.DocFromDisplay(lineDisplay)));\n\t\t} else {\n\t\t\tlineDisplay = Platform::Clamp(lineDisplay - 1, 0, cs.LinesDisplayed());\n\t\t\treturn SelectionPosition(pdoc->LineEnd(cs.DocFromDisplay(lineDisplay)));\n\t\t}\n\t}\n}\n\nSelectionPosition Editor::MovePositionSoVisible(int pos, int moveDir) {\n\treturn MovePositionSoVisible(SelectionPosition(pos), moveDir);\n}\n\nPoint Editor::PointMainCaret() {\n\treturn LocationFromPosition(sel.Range(sel.Main()).caret);\n}\n\n/**\n * Choose the x position that the caret will try to stick to\n * as it moves up and down.\n */\nvoid Editor::SetLastXChosen() {\n\tPoint pt = PointMainCaret();\n\tlastXChosen = static_cast<int>(pt.x) + xOffset;\n}\n\nvoid Editor::ScrollTo(int line, bool moveThumb) {\n\tint topLineNew = Platform::Clamp(line, 0, MaxScrollPos());\n\tif (topLineNew != topLine) {\n\t\t// Try to optimise small scrolls\n#ifndef UNDER_CE\n\t\tint linesToMove = topLine - topLineNew;\n\t\tbool performBlit = (abs(linesToMove) <= 10) && (paintState == notPainting);\n\t\twillRedrawAll = !performBlit;\n#endif\n\t\tSetTopLine(topLineNew);\n\t\t// Optimize by styling the view as this will invalidate any needed area\n\t\t// which could abort the initial paint if discovered later.\n\t\tStyleAreaBounded(GetClientRectangle(), true);\n#ifndef UNDER_CE\n\t\t// Perform redraw rather than scroll if many lines would be redrawn anyway.\n\t\tif (performBlit) {\n\t\t\tScrollText(linesToMove);\n\t\t} else {\n\t\t\tRedraw();\n\t\t}\n\t\twillRedrawAll = false;\n#else\n\t\tRedraw();\n#endif\n\t\tif (moveThumb) {\n\t\t\tSetVerticalScrollPos();\n\t\t}\n\t}\n}\n\nvoid Editor::ScrollText(int /* linesToMove */) {\n\t//Platform::DebugPrintf(\"Editor::ScrollText %d\\n\", linesToMove);\n\tRedraw();\n}\n\nvoid Editor::HorizontalScrollTo(int xPos) {\n\t//Platform::DebugPrintf(\"HorizontalScroll %d\\n\", xPos);\n\tif (xPos < 0)\n\t\txPos = 0;\n\tif (!Wrapping() && (xOffset != xPos)) {\n\t\txOffset = xPos;\n\t\tContainerNeedsUpdate(SC_UPDATE_H_SCROLL);\n\t\tSetHorizontalScrollPos();\n\t\tRedrawRect(GetClientRectangle());\n\t}\n}\n\nvoid Editor::VerticalCentreCaret() {\n\tint lineDoc = pdoc->LineFromPosition(sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret());\n\tint lineDisplay = cs.DisplayFromDoc(lineDoc);\n\tint newTop = lineDisplay - (LinesOnScreen() / 2);\n\tif (topLine != newTop) {\n\t\tSetTopLine(newTop > 0 ? newTop : 0);\n\t\tRedrawRect(GetClientRectangle());\n\t}\n}\n\n// Avoid 64 bit compiler warnings.\n// Scintilla does not support text buffers larger than 2**31\nstatic int istrlen(const char *s) {\n\treturn static_cast<int>(s ? strlen(s) : 0);\n}\n\nvoid Editor::MoveSelectedLines(int lineDelta) {\n\n\t// if selection doesn't start at the beginning of the line, set the new start\n\tint selectionStart = SelectionStart().Position();\n\tint startLine = pdoc->LineFromPosition(selectionStart);\n\tint beginningOfStartLine = pdoc->LineStart(startLine);\n\tselectionStart = beginningOfStartLine;\n\n\t// if selection doesn't end at the beginning of a line greater than that of the start,\n\t// then set it at the beginning of the next one\n\tint selectionEnd = SelectionEnd().Position();\n\tint endLine = pdoc->LineFromPosition(selectionEnd);\n\tint beginningOfEndLine = pdoc->LineStart(endLine);\n\tbool appendEol = false;\n\tif (selectionEnd > beginningOfEndLine\n\t\t|| selectionStart == selectionEnd) {\n\t\tselectionEnd = pdoc->LineStart(endLine + 1);\n\t\tappendEol = (selectionEnd == pdoc->Length() && pdoc->LineFromPosition(selectionEnd) == endLine);\n\t}\n\n\t// if there's nowhere for the selection to move\n\t// (i.e. at the beginning going up or at the end going down),\n\t// stop it right there!\n\tif ((selectionStart == 0 && lineDelta < 0)\n\t\t|| (selectionEnd == pdoc->Length() && lineDelta > 0)\n\t        || selectionStart == selectionEnd) {\n\t\treturn;\n\t}\n\n\tUndoGroup ug(pdoc);\n\n\tif (lineDelta > 0 && selectionEnd == pdoc->LineStart(pdoc->LinesTotal() - 1)) {\n\t\tSetSelection(pdoc->MovePositionOutsideChar(selectionEnd - 1, -1), selectionEnd);\n\t\tClearSelection();\n\t\tselectionEnd = CurrentPosition();\n\t}\n\tSetSelection(selectionStart, selectionEnd);\n\n\tSelectionText selectedText;\n\tCopySelectionRange(&selectedText);\n\n\tint selectionLength = SelectionRange(selectionStart, selectionEnd).Length();\n\tPoint currentLocation = LocationFromPosition(CurrentPosition());\n\tint currentLine = LineFromLocation(currentLocation);\n\n\tif (appendEol)\n\t\tSetSelection(pdoc->MovePositionOutsideChar(selectionStart - 1, -1), selectionEnd);\n\tClearSelection();\n\n\tconst char *eol = StringFromEOLMode(pdoc->eolMode);\n\tif (currentLine + lineDelta >= pdoc->LinesTotal())\n\t\tpdoc->InsertString(pdoc->Length(), eol, istrlen(eol));\n\tGoToLine(currentLine + lineDelta);\n\n\tselectionLength = pdoc->InsertString(CurrentPosition(), selectedText.Data(), selectionLength);\n\tif (appendEol) {\n\t\tconst int lengthInserted = pdoc->InsertString(CurrentPosition() + selectionLength, eol, istrlen(eol));\n\t\tselectionLength += lengthInserted;\n\t}\n\tSetSelection(CurrentPosition(), CurrentPosition() + selectionLength);\n}\n\nvoid Editor::MoveSelectedLinesUp() {\n\tMoveSelectedLines(-1);\n}\n\nvoid Editor::MoveSelectedLinesDown() {\n\tMoveSelectedLines(1);\n}\n\nvoid Editor::MoveCaretInsideView(bool ensureVisible) {\n\tPRectangle rcClient = GetTextRectangle();\n\tPoint pt = PointMainCaret();\n\tif (pt.y < rcClient.top) {\n\t\tMovePositionTo(SPositionFromLocation(\n\t\t            Point::FromInts(lastXChosen - xOffset, static_cast<int>(rcClient.top)),\n\t\t\t\t\tfalse, false, UserVirtualSpace()),\n\t\t\t\t\tSelection::noSel, ensureVisible);\n\t} else if ((pt.y + vs.lineHeight - 1) > rcClient.bottom) {\n\t\tint yOfLastLineFullyDisplayed = static_cast<int>(rcClient.top) + (LinesOnScreen() - 1) * vs.lineHeight;\n\t\tMovePositionTo(SPositionFromLocation(\n\t\t            Point::FromInts(lastXChosen - xOffset, static_cast<int>(rcClient.top) + yOfLastLineFullyDisplayed),\n\t\t\t\t\tfalse, false, UserVirtualSpace()),\n\t\t        Selection::noSel, ensureVisible);\n\t}\n}\n\nint Editor::DisplayFromPosition(int pos) {\n\tAutoSurface surface(this);\n\treturn view.DisplayFromPosition(surface, *this, pos, vs);\n}\n\n/**\n * Ensure the caret is reasonably visible in context.\n *\nCaret policy in SciTE\n\nIf slop is set, we can define a slop value.\nThis value defines an unwanted zone (UZ) where the caret is... unwanted.\nThis zone is defined as a number of pixels near the vertical margins,\nand as a number of lines near the horizontal margins.\nBy keeping the caret away from the edges, it is seen within its context,\nso it is likely that the identifier that the caret is on can be completely seen,\nand that the current line is seen with some of the lines following it which are\noften dependent on that line.\n\nIf strict is set, the policy is enforced... strictly.\nThe caret is centred on the display if slop is not set,\nand cannot go in the UZ if slop is set.\n\nIf jumps is set, the display is moved more energetically\nso the caret can move in the same direction longer before the policy is applied again.\n'3UZ' notation is used to indicate three time the size of the UZ as a distance to the margin.\n\nIf even is not set, instead of having symmetrical UZs,\nthe left and bottom UZs are extended up to right and top UZs respectively.\nThis way, we favour the displaying of useful information: the beginning of lines,\nwhere most code reside, and the lines after the caret, eg. the body of a function.\n\n     |        |       |      |                                            |\nslop | strict | jumps | even | Caret can go to the margin                 | When reaching limit (caret going out of\n     |        |       |      |                                            | visibility or going into the UZ) display is...\n-----+--------+-------+------+--------------------------------------------+--------------------------------------------------------------\n  0  |   0    |   0   |   0  | Yes                                        | moved to put caret on top/on right\n  0  |   0    |   0   |   1  | Yes                                        | moved by one position\n  0  |   0    |   1   |   0  | Yes                                        | moved to put caret on top/on right\n  0  |   0    |   1   |   1  | Yes                                        | centred on the caret\n  0  |   1    |   -   |   0  | Caret is always on top/on right of display | -\n  0  |   1    |   -   |   1  | No, caret is always centred                | -\n  1  |   0    |   0   |   0  | Yes                                        | moved to put caret out of the asymmetrical UZ\n  1  |   0    |   0   |   1  | Yes                                        | moved to put caret out of the UZ\n  1  |   0    |   1   |   0  | Yes                                        | moved to put caret at 3UZ of the top or right margin\n  1  |   0    |   1   |   1  | Yes                                        | moved to put caret at 3UZ of the margin\n  1  |   1    |   -   |   0  | Caret is always at UZ of top/right margin  | -\n  1  |   1    |   0   |   1  | No, kept out of UZ                         | moved by one position\n  1  |   1    |   1   |   1  | No, kept out of UZ                         | moved to put caret at 3UZ of the margin\n*/\n\nEditor::XYScrollPosition Editor::XYScrollToMakeVisible(const SelectionRange &range, const XYScrollOptions options) {\n\tPRectangle rcClient = GetTextRectangle();\n\tPoint pt = LocationFromPosition(range.caret);\n\tPoint ptAnchor = LocationFromPosition(range.anchor);\n\tconst Point ptOrigin = GetVisibleOriginInMain();\n\tpt.x += ptOrigin.x;\n\tpt.y += ptOrigin.y;\n\tptAnchor.x += ptOrigin.x;\n\tptAnchor.y += ptOrigin.y;\n\tconst Point ptBottomCaret(pt.x, pt.y + vs.lineHeight - 1);\n\n\tXYScrollPosition newXY(xOffset, topLine);\n\tif (rcClient.Empty()) {\n\t\treturn newXY;\n\t}\n\n\t// Vertical positioning\n\tif ((options & xysVertical) && (pt.y < rcClient.top || ptBottomCaret.y >= rcClient.bottom || (caretYPolicy & CARET_STRICT) != 0)) {\n\t\tconst int lineCaret = DisplayFromPosition(range.caret.Position());\n\t\tconst int linesOnScreen = LinesOnScreen();\n\t\tconst int halfScreen = Platform::Maximum(linesOnScreen - 1, 2) / 2;\n\t\tconst bool bSlop = (caretYPolicy & CARET_SLOP) != 0;\n\t\tconst bool bStrict = (caretYPolicy & CARET_STRICT) != 0;\n\t\tconst bool bJump = (caretYPolicy & CARET_JUMPS) != 0;\n\t\tconst bool bEven = (caretYPolicy & CARET_EVEN) != 0;\n\n\t\t// It should be possible to scroll the window to show the caret,\n\t\t// but this fails to remove the caret on GTK+\n\t\tif (bSlop) {\t// A margin is defined\n\t\t\tint yMoveT, yMoveB;\n\t\t\tif (bStrict) {\n\t\t\t\tint yMarginT, yMarginB;\n\t\t\t\tif (!(options & xysUseMargin)) {\n\t\t\t\t\t// In drag mode, avoid moves\n\t\t\t\t\t// otherwise, a double click will select several lines.\n\t\t\t\t\tyMarginT = yMarginB = 0;\n\t\t\t\t} else {\n\t\t\t\t\t// yMarginT must equal to caretYSlop, with a minimum of 1 and\n\t\t\t\t\t// a maximum of slightly less than half the heigth of the text area.\n\t\t\t\t\tyMarginT = Platform::Clamp(caretYSlop, 1, halfScreen);\n\t\t\t\t\tif (bEven) {\n\t\t\t\t\t\tyMarginB = yMarginT;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tyMarginB = linesOnScreen - yMarginT - 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tyMoveT = yMarginT;\n\t\t\t\tif (bEven) {\n\t\t\t\t\tif (bJump) {\n\t\t\t\t\t\tyMoveT = Platform::Clamp(caretYSlop * 3, 1, halfScreen);\n\t\t\t\t\t}\n\t\t\t\t\tyMoveB = yMoveT;\n\t\t\t\t} else {\n\t\t\t\t\tyMoveB = linesOnScreen - yMoveT - 1;\n\t\t\t\t}\n\t\t\t\tif (lineCaret < topLine + yMarginT) {\n\t\t\t\t\t// Caret goes too high\n\t\t\t\t\tnewXY.topLine = lineCaret - yMoveT;\n\t\t\t\t} else if (lineCaret > topLine + linesOnScreen - 1 - yMarginB) {\n\t\t\t\t\t// Caret goes too low\n\t\t\t\t\tnewXY.topLine = lineCaret - linesOnScreen + 1 + yMoveB;\n\t\t\t\t}\n\t\t\t} else {\t// Not strict\n\t\t\t\tyMoveT = bJump ? caretYSlop * 3 : caretYSlop;\n\t\t\t\tyMoveT = Platform::Clamp(yMoveT, 1, halfScreen);\n\t\t\t\tif (bEven) {\n\t\t\t\t\tyMoveB = yMoveT;\n\t\t\t\t} else {\n\t\t\t\t\tyMoveB = linesOnScreen - yMoveT - 1;\n\t\t\t\t}\n\t\t\t\tif (lineCaret < topLine) {\n\t\t\t\t\t// Caret goes too high\n\t\t\t\t\tnewXY.topLine = lineCaret - yMoveT;\n\t\t\t\t} else if (lineCaret > topLine + linesOnScreen - 1) {\n\t\t\t\t\t// Caret goes too low\n\t\t\t\t\tnewXY.topLine = lineCaret - linesOnScreen + 1 + yMoveB;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\t// No slop\n\t\t\tif (!bStrict && !bJump) {\n\t\t\t\t// Minimal move\n\t\t\t\tif (lineCaret < topLine) {\n\t\t\t\t\t// Caret goes too high\n\t\t\t\t\tnewXY.topLine = lineCaret;\n\t\t\t\t} else if (lineCaret > topLine + linesOnScreen - 1) {\n\t\t\t\t\t// Caret goes too low\n\t\t\t\t\tif (bEven) {\n\t\t\t\t\t\tnewXY.topLine = lineCaret - linesOnScreen + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewXY.topLine = lineCaret;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\t// Strict or going out of display\n\t\t\t\tif (bEven) {\n\t\t\t\t\t// Always center caret\n\t\t\t\t\tnewXY.topLine = lineCaret - halfScreen;\n\t\t\t\t} else {\n\t\t\t\t\t// Always put caret on top of display\n\t\t\t\t\tnewXY.topLine = lineCaret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (!(range.caret == range.anchor)) {\n\t\t\tconst int lineAnchor = DisplayFromPosition(range.anchor.Position());\n\t\t\tif (lineAnchor < lineCaret) {\n\t\t\t\t// Shift up to show anchor or as much of range as possible\n\t\t\t\tnewXY.topLine = std::min(newXY.topLine, lineAnchor);\n\t\t\t\tnewXY.topLine = std::max(newXY.topLine, lineCaret - LinesOnScreen());\n\t\t\t} else {\n\t\t\t\t// Shift down to show anchor or as much of range as possible\n\t\t\t\tnewXY.topLine = std::max(newXY.topLine, lineAnchor - LinesOnScreen());\n\t\t\t\tnewXY.topLine = std::min(newXY.topLine, lineCaret);\n\t\t\t}\n\t\t}\n\t\tnewXY.topLine = Platform::Clamp(newXY.topLine, 0, MaxScrollPos());\n\t}\n\n\t// Horizontal positioning\n\tif ((options & xysHorizontal) && !Wrapping()) {\n\t\tconst int halfScreen = Platform::Maximum(static_cast<int>(rcClient.Width()) - 4, 4) / 2;\n\t\tconst bool bSlop = (caretXPolicy & CARET_SLOP) != 0;\n\t\tconst bool bStrict = (caretXPolicy & CARET_STRICT) != 0;\n\t\tconst bool bJump = (caretXPolicy & CARET_JUMPS) != 0;\n\t\tconst bool bEven = (caretXPolicy & CARET_EVEN) != 0;\n\n\t\tif (bSlop) {\t// A margin is defined\n\t\t\tint xMoveL, xMoveR;\n\t\t\tif (bStrict) {\n\t\t\t\tint xMarginL, xMarginR;\n\t\t\t\tif (!(options & xysUseMargin)) {\n\t\t\t\t\t// In drag mode, avoid moves unless very near of the margin\n\t\t\t\t\t// otherwise, a simple click will select text.\n\t\t\t\t\txMarginL = xMarginR = 2;\n\t\t\t\t} else {\n\t\t\t\t\t// xMargin must equal to caretXSlop, with a minimum of 2 and\n\t\t\t\t\t// a maximum of slightly less than half the width of the text area.\n\t\t\t\t\txMarginR = Platform::Clamp(caretXSlop, 2, halfScreen);\n\t\t\t\t\tif (bEven) {\n\t\t\t\t\t\txMarginL = xMarginR;\n\t\t\t\t\t} else {\n\t\t\t\t\t\txMarginL = static_cast<int>(rcClient.Width()) - xMarginR - 4;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (bJump && bEven) {\n\t\t\t\t\t// Jump is used only in even mode\n\t\t\t\t\txMoveL = xMoveR = Platform::Clamp(caretXSlop * 3, 1, halfScreen);\n\t\t\t\t} else {\n\t\t\t\t\txMoveL = xMoveR = 0;\t// Not used, avoid a warning\n\t\t\t\t}\n\t\t\t\tif (pt.x < rcClient.left + xMarginL) {\n\t\t\t\t\t// Caret is on the left of the display\n\t\t\t\t\tif (bJump && bEven) {\n\t\t\t\t\t\tnewXY.xOffset -= xMoveL;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Move just enough to allow to display the caret\n\t\t\t\t\t\tnewXY.xOffset -= static_cast<int>((rcClient.left + xMarginL) - pt.x);\n\t\t\t\t\t}\n\t\t\t\t} else if (pt.x >= rcClient.right - xMarginR) {\n\t\t\t\t\t// Caret is on the right of the display\n\t\t\t\t\tif (bJump && bEven) {\n\t\t\t\t\t\tnewXY.xOffset += xMoveR;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Move just enough to allow to display the caret\n\t\t\t\t\t\tnewXY.xOffset += static_cast<int>(pt.x - (rcClient.right - xMarginR) + 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\t// Not strict\n\t\t\t\txMoveR = bJump ? caretXSlop * 3 : caretXSlop;\n\t\t\t\txMoveR = Platform::Clamp(xMoveR, 1, halfScreen);\n\t\t\t\tif (bEven) {\n\t\t\t\t\txMoveL = xMoveR;\n\t\t\t\t} else {\n\t\t\t\t\txMoveL = static_cast<int>(rcClient.Width()) - xMoveR - 4;\n\t\t\t\t}\n\t\t\t\tif (pt.x < rcClient.left) {\n\t\t\t\t\t// Caret is on the left of the display\n\t\t\t\t\tnewXY.xOffset -= xMoveL;\n\t\t\t\t} else if (pt.x >= rcClient.right) {\n\t\t\t\t\t// Caret is on the right of the display\n\t\t\t\t\tnewXY.xOffset += xMoveR;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\t// No slop\n\t\t\tif (bStrict ||\n\t\t\t        (bJump && (pt.x < rcClient.left || pt.x >= rcClient.right))) {\n\t\t\t\t// Strict or going out of display\n\t\t\t\tif (bEven) {\n\t\t\t\t\t// Center caret\n\t\t\t\t\tnewXY.xOffset += static_cast<int>(pt.x - rcClient.left - halfScreen);\n\t\t\t\t} else {\n\t\t\t\t\t// Put caret on right\n\t\t\t\t\tnewXY.xOffset += static_cast<int>(pt.x - rcClient.right + 1);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Move just enough to allow to display the caret\n\t\t\t\tif (pt.x < rcClient.left) {\n\t\t\t\t\t// Caret is on the left of the display\n\t\t\t\t\tif (bEven) {\n\t\t\t\t\t\tnewXY.xOffset -= static_cast<int>(rcClient.left - pt.x);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnewXY.xOffset += static_cast<int>(pt.x - rcClient.right) + 1;\n\t\t\t\t\t}\n\t\t\t\t} else if (pt.x >= rcClient.right) {\n\t\t\t\t\t// Caret is on the right of the display\n\t\t\t\t\tnewXY.xOffset += static_cast<int>(pt.x - rcClient.right) + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// In case of a jump (find result) largely out of display, adjust the offset to display the caret\n\t\tif (pt.x + xOffset < rcClient.left + newXY.xOffset) {\n\t\t\tnewXY.xOffset = static_cast<int>(pt.x + xOffset - rcClient.left) - 2;\n\t\t} else if (pt.x + xOffset >= rcClient.right + newXY.xOffset) {\n\t\t\tnewXY.xOffset = static_cast<int>(pt.x + xOffset - rcClient.right) + 2;\n\t\t\tif ((vs.caretStyle == CARETSTYLE_BLOCK) || view.imeCaretBlockOverride) {\n\t\t\t\t// Ensure we can see a good portion of the block caret\n\t\t\t\tnewXY.xOffset += static_cast<int>(vs.aveCharWidth);\n\t\t\t}\n\t\t}\n\t\tif (!(range.caret == range.anchor)) {\n\t\t\tif (ptAnchor.x < pt.x) {\n\t\t\t\t// Shift to left to show anchor or as much of range as possible\n\t\t\t\tint maxOffset = static_cast<int>(ptAnchor.x + xOffset - rcClient.left) - 1;\n\t\t\t\tint minOffset = static_cast<int>(pt.x + xOffset - rcClient.right) + 1;\n\t\t\t\tnewXY.xOffset = std::min(newXY.xOffset, maxOffset);\n\t\t\t\tnewXY.xOffset = std::max(newXY.xOffset, minOffset);\n\t\t\t} else {\n\t\t\t\t// Shift to right to show anchor or as much of range as possible\n\t\t\t\tint minOffset = static_cast<int>(ptAnchor.x + xOffset - rcClient.right) + 1;\n\t\t\t\tint maxOffset = static_cast<int>(pt.x + xOffset - rcClient.left) - 1;\n\t\t\t\tnewXY.xOffset = std::max(newXY.xOffset, minOffset);\n\t\t\t\tnewXY.xOffset = std::min(newXY.xOffset, maxOffset);\n\t\t\t}\n\t\t}\n\t\tif (newXY.xOffset < 0) {\n\t\t\tnewXY.xOffset = 0;\n\t\t}\n\t}\n\n\treturn newXY;\n}\n\nvoid Editor::SetXYScroll(XYScrollPosition newXY) {\n\tif ((newXY.topLine != topLine) || (newXY.xOffset != xOffset)) {\n\t\tif (newXY.topLine != topLine) {\n\t\t\tSetTopLine(newXY.topLine);\n\t\t\tSetVerticalScrollPos();\n\t\t}\n\t\tif (newXY.xOffset != xOffset) {\n\t\t\txOffset = newXY.xOffset;\n\t\t\tContainerNeedsUpdate(SC_UPDATE_H_SCROLL);\n\t\t\tif (newXY.xOffset > 0) {\n\t\t\t\tPRectangle rcText = GetTextRectangle();\n\t\t\t\tif (horizontalScrollBarVisible &&\n\t\t\t\t\trcText.Width() + xOffset > scrollWidth) {\n\t\t\t\t\tscrollWidth = xOffset + static_cast<int>(rcText.Width());\n\t\t\t\t\tSetScrollBars();\n\t\t\t\t}\n\t\t\t}\n\t\t\tSetHorizontalScrollPos();\n\t\t}\n\t\tRedraw();\n\t\tUpdateSystemCaret();\n\t}\n}\n\nvoid Editor::ScrollRange(SelectionRange range) {\n\tSetXYScroll(XYScrollToMakeVisible(range, xysDefault));\n}\n\nvoid Editor::EnsureCaretVisible(bool useMargin, bool vert, bool horiz) {\n\tSetXYScroll(XYScrollToMakeVisible(SelectionRange(posDrag.IsValid() ? posDrag : sel.RangeMain().caret),\n\t\tstatic_cast<XYScrollOptions>((useMargin?xysUseMargin:0)|(vert?xysVertical:0)|(horiz?xysHorizontal:0))));\n}\n\nvoid Editor::ShowCaretAtCurrentPosition() {\n\tif (hasFocus) {\n\t\tcaret.active = true;\n\t\tcaret.on = true;\n\t\tif (FineTickerAvailable()) {\n\t\t\tFineTickerCancel(tickCaret);\n\t\t\tif (caret.period > 0)\n\t\t\t\tFineTickerStart(tickCaret, caret.period, caret.period/10);\n\t\t} else {\n\t\t\tSetTicking(true);\n\t\t}\n\t} else {\n\t\tcaret.active = false;\n\t\tcaret.on = false;\n\t\tif (FineTickerAvailable()) {\n\t\t\tFineTickerCancel(tickCaret);\n\t\t}\n\t}\n\tInvalidateCaret();\n}\n\nvoid Editor::DropCaret() {\n\tcaret.active = false;\n\tif (FineTickerAvailable()) {\n\t\tFineTickerCancel(tickCaret);\n\t}\n\tInvalidateCaret();\n}\n\nvoid Editor::CaretSetPeriod(int period) {\n\tif (caret.period != period) {\n\t\tcaret.period = period;\n\t\tcaret.on = true;\n\t\tif (FineTickerAvailable()) {\n\t\t\tFineTickerCancel(tickCaret);\n\t\t\tif ((caret.active) && (caret.period > 0))\n\t\t\t\tFineTickerStart(tickCaret, caret.period, caret.period/10);\n\t\t}\n\t\tInvalidateCaret();\n\t}\n}\n\nvoid Editor::InvalidateCaret() {\n\tif (posDrag.IsValid()) {\n\t\tInvalidateRange(posDrag.Position(), posDrag.Position() + 1);\n\t} else {\n\t\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\t\tInvalidateRange(sel.Range(r).caret.Position(), sel.Range(r).caret.Position() + 1);\n\t\t}\n\t}\n\tUpdateSystemCaret();\n}\n\nvoid Editor::NotifyCaretMove() {\n}\n\nvoid Editor::UpdateSystemCaret() {\n}\n\nbool Editor::Wrapping() const {\n\treturn vs.wrapState != eWrapNone;\n}\n\nvoid Editor::NeedWrapping(int docLineStart, int docLineEnd) {\n//Platform::DebugPrintf(\"\\nNeedWrapping: %0d..%0d\\n\", docLineStart, docLineEnd);\n\tif (wrapPending.AddRange(docLineStart, docLineEnd)) {\n\t\tview.llc.Invalidate(LineLayout::llPositions);\n\t}\n\t// Wrap lines during idle.\n\tif (Wrapping() && wrapPending.NeedsWrap()) {\n\t\tSetIdle(true);\n\t}\n}\n\nbool Editor::WrapOneLine(Surface *surface, int lineToWrap) {\n\tAutoLineLayout ll(view.llc, view.RetrieveLineLayout(lineToWrap, *this));\n\tint linesWrapped = 1;\n\tif (ll) {\n\t\tview.LayoutLine(*this, lineToWrap, surface, vs, ll, wrapWidth);\n\t\tlinesWrapped = ll->lines;\n\t}\n\treturn cs.SetHeight(lineToWrap, linesWrapped +\n\t\t(vs.annotationVisible ? pdoc->AnnotationLines(lineToWrap) : 0));\n}\n\n// Perform  wrapping for a subset of the lines needing wrapping.\n// wsAll: wrap all lines which need wrapping in this single call\n// wsVisible: wrap currently visible lines\n// wsIdle: wrap one page + 100 lines\n// Return true if wrapping occurred.\nbool Editor::WrapLines(enum wrapScope ws) {\n\tint goodTopLine = topLine;\n\tbool wrapOccurred = false;\n\tif (!Wrapping()) {\n\t\tif (wrapWidth != LineLayout::wrapWidthInfinite) {\n\t\t\twrapWidth = LineLayout::wrapWidthInfinite;\n\t\t\tfor (int lineDoc = 0; lineDoc < pdoc->LinesTotal(); lineDoc++) {\n\t\t\t\tcs.SetHeight(lineDoc, 1 +\n\t\t\t\t\t(vs.annotationVisible ? pdoc->AnnotationLines(lineDoc) : 0));\n\t\t\t}\n\t\t\twrapOccurred = true;\n\t\t}\n\t\twrapPending.Reset();\n\n\t} else if (wrapPending.NeedsWrap()) {\n\t\twrapPending.start = std::min(wrapPending.start, pdoc->LinesTotal());\n\t\tif (!SetIdle(true)) {\n\t\t\t// Idle processing not supported so full wrap required.\n\t\t\tws = wsAll;\n\t\t}\n\t\t// Decide where to start wrapping\n\t\tint lineToWrap = wrapPending.start;\n\t\tint lineToWrapEnd = std::min(wrapPending.end, pdoc->LinesTotal());\n\t\tconst int lineDocTop = cs.DocFromDisplay(topLine);\n\t\tconst int subLineTop = topLine - cs.DisplayFromDoc(lineDocTop);\n\t\tif (ws == wsVisible) {\n\t\t\tlineToWrap = Platform::Clamp(lineDocTop-5, wrapPending.start, pdoc->LinesTotal());\n\t\t\t// Priority wrap to just after visible area.\n\t\t\t// Since wrapping could reduce display lines, treat each\n\t\t\t// as taking only one display line.\n\t\t\tlineToWrapEnd = lineDocTop;\n\t\t\tint lines = LinesOnScreen() + 1;\n\t\t\twhile ((lineToWrapEnd < cs.LinesInDoc()) && (lines>0)) {\n\t\t\t\tif (cs.GetVisible(lineToWrapEnd))\n\t\t\t\t\tlines--;\n\t\t\t\tlineToWrapEnd++;\n\t\t\t}\n\t\t\t// .. and if the paint window is outside pending wraps\n\t\t\tif ((lineToWrap > wrapPending.end) || (lineToWrapEnd < wrapPending.start)) {\n\t\t\t\t// Currently visible text does not need wrapping\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else if (ws == wsIdle) {\n\t\t\tlineToWrapEnd = lineToWrap + LinesOnScreen() + 100;\n\t\t}\n\t\tconst int lineEndNeedWrap = std::min(wrapPending.end, pdoc->LinesTotal());\n\t\tlineToWrapEnd = std::min(lineToWrapEnd, lineEndNeedWrap);\n\n\t\t// Ensure all lines being wrapped are styled.\n\t\tpdoc->EnsureStyledTo(pdoc->LineStart(lineToWrapEnd));\n\n\t\tif (lineToWrap < lineToWrapEnd) {\n\n\t\t\tPRectangle rcTextArea = GetClientRectangle();\n\t\t\trcTextArea.left = static_cast<XYPOSITION>(vs.textStart);\n\t\t\trcTextArea.right -= vs.rightMarginWidth;\n\t\t\twrapWidth = static_cast<int>(rcTextArea.Width());\n\t\t\tRefreshStyleData();\n\t\t\tAutoSurface surface(this);\n\t\t\tif (surface) {\n//Platform::DebugPrintf(\"Wraplines: scope=%0d need=%0d..%0d perform=%0d..%0d\\n\", ws, wrapPending.start, wrapPending.end, lineToWrap, lineToWrapEnd);\n\n\t\t\t\twhile (lineToWrap < lineToWrapEnd) {\n\t\t\t\t\tif (WrapOneLine(surface, lineToWrap)) {\n\t\t\t\t\t\twrapOccurred = true;\n\t\t\t\t\t}\n\t\t\t\t\twrapPending.Wrapped(lineToWrap);\n\t\t\t\t\tlineToWrap++;\n\t\t\t\t}\n\n\t\t\t\tgoodTopLine = cs.DisplayFromDoc(lineDocTop) + std::min(subLineTop, cs.GetHeight(lineDocTop)-1);\n\t\t\t}\n\t\t}\n\n\t\t// If wrapping is done, bring it to resting position\n\t\tif (wrapPending.start >= lineEndNeedWrap) {\n\t\t\twrapPending.Reset();\n\t\t}\n\t}\n\n\tif (wrapOccurred) {\n\t\tSetScrollBars();\n\t\tSetTopLine(Platform::Clamp(goodTopLine, 0, MaxScrollPos()));\n\t\tSetVerticalScrollPos();\n\t}\n\n\treturn wrapOccurred;\n}\n\nvoid Editor::LinesJoin() {\n\tif (!RangeContainsProtected(targetStart, targetEnd)) {\n\t\tUndoGroup ug(pdoc);\n\t\tbool prevNonWS = true;\n\t\tfor (int pos = targetStart; pos < targetEnd; pos++) {\n\t\t\tif (pdoc->IsPositionInLineEnd(pos)) {\n\t\t\t\ttargetEnd -= pdoc->LenChar(pos);\n\t\t\t\tpdoc->DelChar(pos);\n\t\t\t\tif (prevNonWS) {\n\t\t\t\t\t// Ensure at least one space separating previous lines\n\t\t\t\t\tconst int lengthInserted = pdoc->InsertString(pos, \" \", 1);\n\t\t\t\t\ttargetEnd += lengthInserted;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tprevNonWS = pdoc->CharAt(pos) != ' ';\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst char *Editor::StringFromEOLMode(int eolMode) {\n\tif (eolMode == SC_EOL_CRLF) {\n\t\treturn \"\\r\\n\";\n\t} else if (eolMode == SC_EOL_CR) {\n\t\treturn \"\\r\";\n\t} else {\n\t\treturn \"\\n\";\n\t}\n}\n\nvoid Editor::LinesSplit(int pixelWidth) {\n\tif (!RangeContainsProtected(targetStart, targetEnd)) {\n\t\tif (pixelWidth == 0) {\n\t\t\tPRectangle rcText = GetTextRectangle();\n\t\t\tpixelWidth = static_cast<int>(rcText.Width());\n\t\t}\n\t\tint lineStart = pdoc->LineFromPosition(targetStart);\n\t\tint lineEnd = pdoc->LineFromPosition(targetEnd);\n\t\tconst char *eol = StringFromEOLMode(pdoc->eolMode);\n\t\tUndoGroup ug(pdoc);\n\t\tfor (int line = lineStart; line <= lineEnd; line++) {\n\t\t\tAutoSurface surface(this);\n\t\t\tAutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this));\n\t\t\tif (surface && ll) {\n\t\t\t\tunsigned int posLineStart = pdoc->LineStart(line);\n\t\t\t\tview.LayoutLine(*this, line, surface, vs, ll, pixelWidth);\n\t\t\t\tint lengthInsertedTotal = 0;\n\t\t\t\tfor (int subLine = 1; subLine < ll->lines; subLine++) {\n\t\t\t\t\tconst int lengthInserted = pdoc->InsertString(\n\t\t\t\t\t\tstatic_cast<int>(posLineStart + lengthInsertedTotal +\n\t\t\t\t\t\t\tll->LineStart(subLine)),\n\t\t\t\t\t\t\teol, istrlen(eol));\n\t\t\t\t\ttargetEnd += lengthInserted;\n\t\t\t\t\tlengthInsertedTotal += lengthInserted;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlineEnd = pdoc->LineFromPosition(targetEnd);\n\t\t}\n\t}\n}\n\nvoid Editor::PaintSelMargin(Surface *surfWindow, PRectangle &rc) {\n\tif (vs.fixedColumnWidth == 0)\n\t\treturn;\n\n\tAllocateGraphics();\n\tRefreshStyleData();\n\tRefreshPixMaps(surfWindow);\n\n\t// On GTK+ with Ubuntu overlay scroll bars, the surface may have been finished\n\t// at this point. The Initialised call checks for this case and sets the status\n\t// to be bad which avoids crashes in following calls.\n\tif (!surfWindow->Initialised()) {\n\t\treturn;\n\t}\n\n\tPRectangle rcMargin = GetClientRectangle();\n\tPoint ptOrigin = GetVisibleOriginInMain();\n\trcMargin.Move(0, -ptOrigin.y);\n\trcMargin.left = 0;\n\trcMargin.right = static_cast<XYPOSITION>(vs.fixedColumnWidth);\n\n\tif (!rc.Intersects(rcMargin))\n\t\treturn;\n\n\tSurface *surface;\n\tif (view.bufferedDraw) {\n\t\tsurface = marginView.pixmapSelMargin;\n\t} else {\n\t\tsurface = surfWindow;\n\t}\n\n\t// Clip vertically to paint area to avoid drawing line numbers\n\tif (rcMargin.bottom > rc.bottom)\n\t\trcMargin.bottom = rc.bottom;\n\tif (rcMargin.top < rc.top)\n\t\trcMargin.top = rc.top;\n\n\tmarginView.PaintMargin(surface, topLine, rc, rcMargin, *this, vs);\n\n\tif (view.bufferedDraw) {\n\t\tsurfWindow->Copy(rcMargin, Point(rcMargin.left, rcMargin.top), *marginView.pixmapSelMargin);\n\t}\n}\n\nvoid Editor::RefreshPixMaps(Surface *surfaceWindow) {\n\tview.RefreshPixMaps(surfaceWindow, wMain.GetID(), vs);\n\tmarginView.RefreshPixMaps(surfaceWindow, wMain.GetID(), vs);\n\tif (view.bufferedDraw) {\n\t\tPRectangle rcClient = GetClientRectangle();\n\t\tif (!view.pixmapLine->Initialised()) {\n\n\t\t\tview.pixmapLine->InitPixMap(static_cast<int>(rcClient.Width()), vs.lineHeight,\n\t\t\t        surfaceWindow, wMain.GetID());\n\t\t}\n\t\tif (!marginView.pixmapSelMargin->Initialised()) {\n\t\t\tmarginView.pixmapSelMargin->InitPixMap(vs.fixedColumnWidth,\n\t\t\t\tstatic_cast<int>(rcClient.Height()), surfaceWindow, wMain.GetID());\n\t\t}\n\t}\n}\n\nvoid Editor::Paint(Surface *surfaceWindow, PRectangle rcArea) {\n\t//Platform::DebugPrintf(\"Paint:%1d (%3d,%3d) ... (%3d,%3d)\\n\",\n\t//\tpaintingAllText, rcArea.left, rcArea.top, rcArea.right, rcArea.bottom);\n\tAllocateGraphics();\n\n\tRefreshStyleData();\n\tif (paintState == paintAbandoned)\n\t\treturn;\t// Scroll bars may have changed so need redraw\n\tRefreshPixMaps(surfaceWindow);\n\n\tpaintAbandonedByStyling = false;\n\n\tStyleAreaBounded(rcArea, false);\n\n\tPRectangle rcClient = GetClientRectangle();\n\t//Platform::DebugPrintf(\"Client: (%3d,%3d) ... (%3d,%3d)   %d\\n\",\n\t//\trcClient.left, rcClient.top, rcClient.right, rcClient.bottom);\n\n\tif (NotifyUpdateUI()) {\n\t\tRefreshStyleData();\n\t\tRefreshPixMaps(surfaceWindow);\n\t}\n\n\t// Wrap the visible lines if needed.\n\tif (WrapLines(wsVisible)) {\n\t\t// The wrapping process has changed the height of some lines so\n\t\t// abandon this paint for a complete repaint.\n\t\tif (AbandonPaint()) {\n\t\t\treturn;\n\t\t}\n\t\tRefreshPixMaps(surfaceWindow);\t// In case pixmaps invalidated by scrollbar change\n\t}\n\tPLATFORM_ASSERT(marginView.pixmapSelPattern->Initialised());\n\n\tif (!view.bufferedDraw)\n\t\tsurfaceWindow->SetClip(rcArea);\n\n\tif (paintState != paintAbandoned) {\n\t\tif (vs.marginInside) {\n\t\t\tPaintSelMargin(surfaceWindow, rcArea);\n\t\t\tPRectangle rcRightMargin = rcClient;\n\t\t\trcRightMargin.left = rcRightMargin.right - vs.rightMarginWidth;\n\t\t\tif (rcArea.Intersects(rcRightMargin)) {\n\t\t\t\tsurfaceWindow->FillRectangle(rcRightMargin, vs.styles[STYLE_DEFAULT].back);\n\t\t\t}\n\t\t} else { // Else separate view so separate paint event but leftMargin included to allow overlap\n\t\t\tPRectangle rcLeftMargin = rcArea;\n\t\t\trcLeftMargin.left = 0;\n\t\t\trcLeftMargin.right = rcLeftMargin.left + vs.leftMarginWidth;\n\t\t\tif (rcArea.Intersects(rcLeftMargin)) {\n\t\t\t\tsurfaceWindow->FillRectangle(rcLeftMargin, vs.styles[STYLE_DEFAULT].back);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (paintState == paintAbandoned) {\n\t\t// Either styling or NotifyUpdateUI noticed that painting is needed\n\t\t// outside the current painting rectangle\n\t\t//Platform::DebugPrintf(\"Abandoning paint\\n\");\n\t\tif (Wrapping()) {\n\t\t\tif (paintAbandonedByStyling) {\n\t\t\t\t// Styling has spilled over a line end, such as occurs by starting a multiline\n\t\t\t\t// comment. The width of subsequent text may have changed, so rewrap.\n\t\t\t\tNeedWrapping(cs.DocFromDisplay(topLine));\n\t\t\t}\n\t\t}\n\t\treturn;\n\t}\n\n\tview.PaintText(surfaceWindow, *this, rcArea, rcClient, vs);\n\n\tif (horizontalScrollBarVisible && trackLineWidth && (view.lineWidthMaxSeen > scrollWidth)) {\n\t\tif (FineTickerAvailable()) {\n\t\t\tscrollWidth = view.lineWidthMaxSeen;\n\t\t\tif (!FineTickerRunning(tickWiden)) {\n\t\t\t\tFineTickerStart(tickWiden, 50, 5);\n\t\t\t}\n\t\t}\n\t}\n\n\tNotifyPainted();\n}\n\n// This is mostly copied from the Paint method but with some things omitted\n// such as the margin markers, line numbers, selection and caret\n// Should be merged back into a combined Draw method.\nlong Editor::FormatRange(bool draw, Sci_RangeToFormat *pfr) {\n\tif (!pfr)\n\t\treturn 0;\n\n\tAutoSurface surface(pfr->hdc, this, SC_TECHNOLOGY_DEFAULT);\n\tif (!surface)\n\t\treturn 0;\n\tAutoSurface surfaceMeasure(pfr->hdcTarget, this, SC_TECHNOLOGY_DEFAULT);\n\tif (!surfaceMeasure) {\n\t\treturn 0;\n\t}\n\treturn view.FormatRange(draw, pfr, surface, surfaceMeasure, *this, vs);\n}\n\nint Editor::TextWidth(int style, const char *text) {\n\tRefreshStyleData();\n\tAutoSurface surface(this);\n\tif (surface) {\n\t\treturn static_cast<int>(surface->WidthText(vs.styles[style].font, text, istrlen(text)));\n\t} else {\n\t\treturn 1;\n\t}\n}\n\n// Empty method is overridden on GTK+ to show / hide scrollbars\nvoid Editor::ReconfigureScrollBars() {}\n\nvoid Editor::SetScrollBars() {\n\tRefreshStyleData();\n\n\tint nMax = MaxScrollPos();\n\tint nPage = LinesOnScreen();\n\tbool modified = ModifyScrollBars(nMax + nPage - 1, nPage);\n\tif (modified) {\n\t\tDwellEnd(true);\n\t}\n\n\t// TODO: ensure always showing as many lines as possible\n\t// May not be, if, for example, window made larger\n\tif (topLine > MaxScrollPos()) {\n\t\tSetTopLine(Platform::Clamp(topLine, 0, MaxScrollPos()));\n\t\tSetVerticalScrollPos();\n\t\tRedraw();\n\t}\n\tif (modified) {\n\t\tif (!AbandonPaint())\n\t\t\tRedraw();\n\t}\n\t//Platform::DebugPrintf(\"end max = %d page = %d\\n\", nMax, nPage);\n}\n\nvoid Editor::ChangeSize() {\n\tDropGraphics(false);\n\tSetScrollBars();\n\tif (Wrapping()) {\n\t\tPRectangle rcTextArea = GetClientRectangle();\n\t\trcTextArea.left = static_cast<XYPOSITION>(vs.textStart);\n\t\trcTextArea.right -= vs.rightMarginWidth;\n\t\tif (wrapWidth != rcTextArea.Width()) {\n\t\t\tNeedWrapping();\n\t\t\tRedraw();\n\t\t}\n\t}\n}\n\nint Editor::RealizeVirtualSpace(int position, unsigned int virtualSpace) {\n\tif (virtualSpace > 0) {\n\t\tconst int line = pdoc->LineFromPosition(position);\n\t\tconst int indent = pdoc->GetLineIndentPosition(line);\n\t\tif (indent == position) {\n\t\t\treturn pdoc->SetLineIndentation(line, pdoc->GetLineIndentation(line) + virtualSpace);\n\t\t} else {\n\t\t\tstd::string spaceText(virtualSpace, ' ');\n\t\t\tconst int lengthInserted = pdoc->InsertString(position, spaceText.c_str(), virtualSpace);\n\t\t\tposition += lengthInserted;\n\t\t}\n\t}\n\treturn position;\n}\n\nSelectionPosition Editor::RealizeVirtualSpace(const SelectionPosition &position) {\n\t// Return the new position with no virtual space\n\treturn SelectionPosition(RealizeVirtualSpace(position.Position(), position.VirtualSpace()));\n}\n\nvoid Editor::AddChar(char ch) {\n\tchar s[2];\n\ts[0] = ch;\n\ts[1] = '\\0';\n\tAddCharUTF(s, 1);\n}\n\nvoid Editor::FilterSelections() {\n\tif (!additionalSelectionTyping && (sel.Count() > 1)) {\n\t\tInvalidateWholeSelection();\n\t\tsel.DropAdditionalRanges();\n\t}\n}\n\nstatic bool cmpSelPtrs(const SelectionRange *a, const SelectionRange *b) {\n\treturn *a < *b;\n}\n\n// AddCharUTF inserts an array of bytes which may or may not be in UTF-8.\nvoid Editor::AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS) {\n\tFilterSelections();\n\t{\n\t\tUndoGroup ug(pdoc, (sel.Count() > 1) || !sel.Empty() || inOverstrike);\n\n\t\t// Vector elements point into selection in order to change selection.\n\t\tstd::vector<SelectionRange *> selPtrs;\n\t\tfor (size_t r = 0; r < sel.Count(); r++) {\n\t\t\tselPtrs.push_back(&sel.Range(r));\n\t\t}\n\t\t// Order selections by position in document.\n\t\tstd::sort(selPtrs.begin(), selPtrs.end(), cmpSelPtrs);\n\n\t\t// Loop in reverse to avoid disturbing positions of selections yet to be processed.\n\t\tfor (std::vector<SelectionRange *>::reverse_iterator rit = selPtrs.rbegin();\n\t\t\trit != selPtrs.rend(); ++rit) {\n\t\t\tSelectionRange *currentSel = *rit;\n\t\t\tif (!RangeContainsProtected(currentSel->Start().Position(),\n\t\t\t\tcurrentSel->End().Position())) {\n\t\t\t\tint positionInsert = currentSel->Start().Position();\n\t\t\t\tif (!currentSel->Empty()) {\n\t\t\t\t\tif (currentSel->Length()) {\n\t\t\t\t\t\tpdoc->DeleteChars(positionInsert, currentSel->Length());\n\t\t\t\t\t\tcurrentSel->ClearVirtualSpace();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Range is all virtual so collapse to start of virtual space\n\t\t\t\t\t\tcurrentSel->MinimizeVirtualSpace();\n\t\t\t\t\t}\n\t\t\t\t} else if (inOverstrike) {\n\t\t\t\t\tif (positionInsert < pdoc->Length()) {\n\t\t\t\t\t\tif (!pdoc->IsPositionInLineEnd(positionInsert)) {\n\t\t\t\t\t\t\tpdoc->DelChar(positionInsert);\n\t\t\t\t\t\t\tcurrentSel->ClearVirtualSpace();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpositionInsert = RealizeVirtualSpace(positionInsert, currentSel->caret.VirtualSpace());\n\t\t\t\tconst int lengthInserted = pdoc->InsertString(positionInsert, s, len);\n\t\t\t\tif (lengthInserted > 0) {\n\t\t\t\t\tcurrentSel->caret.SetPosition(positionInsert + lengthInserted);\n\t\t\t\t\tcurrentSel->anchor.SetPosition(positionInsert + lengthInserted);\n\t\t\t\t}\n\t\t\t\tcurrentSel->ClearVirtualSpace();\n\t\t\t\t// If in wrap mode rewrap current line so EnsureCaretVisible has accurate information\n\t\t\t\tif (Wrapping()) {\n\t\t\t\t\tAutoSurface surface(this);\n\t\t\t\t\tif (surface) {\n\t\t\t\t\t\tif (WrapOneLine(surface, pdoc->LineFromPosition(positionInsert))) {\n\t\t\t\t\t\t\tSetScrollBars();\n\t\t\t\t\t\t\tSetVerticalScrollPos();\n\t\t\t\t\t\t\tRedraw();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (Wrapping()) {\n\t\tSetScrollBars();\n\t}\n\tThinRectangularRange();\n\t// If in wrap mode rewrap current line so EnsureCaretVisible has accurate information\n\tEnsureCaretVisible();\n\t// Avoid blinking during rapid typing:\n\tShowCaretAtCurrentPosition();\n\tif ((caretSticky == SC_CARETSTICKY_OFF) ||\n\t\t((caretSticky == SC_CARETSTICKY_WHITESPACE) && !IsAllSpacesOrTabs(s, len))) {\n\t\tSetLastXChosen();\n\t}\n\n\tif (treatAsDBCS) {\n\t\tNotifyChar((static_cast<unsigned char>(s[0]) << 8) |\n\t\t        static_cast<unsigned char>(s[1]));\n\t} else if (len > 0) {\n\t\tint byte = static_cast<unsigned char>(s[0]);\n\t\tif ((byte < 0xC0) || (1 == len)) {\n\t\t\t// Handles UTF-8 characters between 0x01 and 0x7F and single byte\n\t\t\t// characters when not in UTF-8 mode.\n\t\t\t// Also treats \\0 and naked trail bytes 0x80 to 0xBF as valid\n\t\t\t// characters representing themselves.\n\t\t} else {\n\t\t\tunsigned int utf32[1] = { 0 };\n\t\t\tUTF32FromUTF8(s, len, utf32, ELEMENTS(utf32));\n\t\t\tbyte = utf32[0];\n\t\t}\n\t\tNotifyChar(byte);\n\t}\n\n\tif (recordingMacro) {\n\t\tNotifyMacroRecord(SCI_REPLACESEL, 0, reinterpret_cast<sptr_t>(s));\n\t}\n}\n\nvoid Editor::ClearBeforeTentativeStart() {\n\t// Make positions for the first composition string.\n\tFilterSelections();\n\tUndoGroup ug(pdoc, (sel.Count() > 1) || !sel.Empty() || inOverstrike);\n\tfor (size_t r = 0; r<sel.Count(); r++) {\n\t\tif (!RangeContainsProtected(sel.Range(r).Start().Position(),\n\t\t\tsel.Range(r).End().Position())) {\n\t\t\tint positionInsert = sel.Range(r).Start().Position();\n\t\t\tif (!sel.Range(r).Empty()) {\n\t\t\t\tif (sel.Range(r).Length()) {\n\t\t\t\t\tpdoc->DeleteChars(positionInsert, sel.Range(r).Length());\n\t\t\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t\t\t} else {\n\t\t\t\t\t// Range is all virtual so collapse to start of virtual space\n\t\t\t\t\tsel.Range(r).MinimizeVirtualSpace();\n\t\t\t\t}\n\t\t\t}\n\t\t\tRealizeVirtualSpace(positionInsert, sel.Range(r).caret.VirtualSpace());\n\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t}\n\t}\n}\n\nvoid Editor::InsertPaste(const char *text, int len) {\n\tif (multiPasteMode == SC_MULTIPASTE_ONCE) {\n\t\tSelectionPosition selStart = sel.Start();\n\t\tselStart = RealizeVirtualSpace(selStart);\n\t\tconst int lengthInserted = pdoc->InsertString(selStart.Position(), text, len);\n\t\tif (lengthInserted > 0) {\n\t\t\tSetEmptySelection(selStart.Position() + lengthInserted);\n\t\t}\n\t} else {\n\t\t// SC_MULTIPASTE_EACH\n\t\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\t\tif (!RangeContainsProtected(sel.Range(r).Start().Position(),\n\t\t\t\tsel.Range(r).End().Position())) {\n\t\t\t\tint positionInsert = sel.Range(r).Start().Position();\n\t\t\t\tif (!sel.Range(r).Empty()) {\n\t\t\t\t\tif (sel.Range(r).Length()) {\n\t\t\t\t\t\tpdoc->DeleteChars(positionInsert, sel.Range(r).Length());\n\t\t\t\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Range is all virtual so collapse to start of virtual space\n\t\t\t\t\t\tsel.Range(r).MinimizeVirtualSpace();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpositionInsert = RealizeVirtualSpace(positionInsert, sel.Range(r).caret.VirtualSpace());\n\t\t\t\tconst int lengthInserted = pdoc->InsertString(positionInsert, text, len);\n\t\t\t\tif (lengthInserted > 0) {\n\t\t\t\t\tsel.Range(r).caret.SetPosition(positionInsert + lengthInserted);\n\t\t\t\t\tsel.Range(r).anchor.SetPosition(positionInsert + lengthInserted);\n\t\t\t\t}\n\t\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid Editor::InsertPasteShape(const char *text, int len, PasteShape shape) {\n\tstd::string convertedText;\n\tif (convertPastes) {\n\t\t// Convert line endings of the paste into our local line-endings mode\n\t\tconvertedText = Document::TransformLineEnds(text, len, pdoc->eolMode);\n\t\tlen = static_cast<int>(convertedText.length());\n\t\ttext = convertedText.c_str();\n\t}\n\tif (shape == pasteRectangular) {\n\t\tPasteRectangular(sel.Start(), text, len);\n\t} else {\n\t\tif (shape == pasteLine) {\n\t\t\tint insertPos = pdoc->LineStart(pdoc->LineFromPosition(sel.MainCaret()));\n\t\t\tint lengthInserted = pdoc->InsertString(insertPos, text, len);\n\t\t\t// add the newline if necessary\n\t\t\tif ((len > 0) && (text[len - 1] != '\\n' && text[len - 1] != '\\r')) {\n\t\t\t\tconst char *endline = StringFromEOLMode(pdoc->eolMode);\n\t\t\t\tint length = static_cast<int>(strlen(endline));\n\t\t\t\tlengthInserted += pdoc->InsertString(insertPos + lengthInserted, endline, length);\n\t\t\t}\n\t\t\tif (sel.MainCaret() == insertPos) {\n\t\t\t\tSetEmptySelection(sel.MainCaret() + lengthInserted);\n\t\t\t}\n\t\t} else {\n\t\t\tInsertPaste(text, len);\n\t\t}\n\t}\n}\n\nvoid Editor::ClearSelection(bool retainMultipleSelections) {\n\tif (!sel.IsRectangular() && !retainMultipleSelections)\n\t\tFilterSelections();\n\tUndoGroup ug(pdoc);\n\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\tif (!sel.Range(r).Empty()) {\n\t\t\tif (!RangeContainsProtected(sel.Range(r).Start().Position(),\n\t\t\t\tsel.Range(r).End().Position())) {\n\t\t\t\tpdoc->DeleteChars(sel.Range(r).Start().Position(),\n\t\t\t\t\tsel.Range(r).Length());\n\t\t\t\tsel.Range(r) = SelectionRange(sel.Range(r).Start());\n\t\t\t}\n\t\t}\n\t}\n\tThinRectangularRange();\n\tsel.RemoveDuplicates();\n\tClaimSelection();\n\tSetHoverIndicatorPosition(sel.MainCaret());\n}\n\nvoid Editor::ClearAll() {\n\t{\n\t\tUndoGroup ug(pdoc);\n\t\tif (0 != pdoc->Length()) {\n\t\t\tpdoc->DeleteChars(0, pdoc->Length());\n\t\t}\n\t\tif (!pdoc->IsReadOnly()) {\n\t\t\tcs.Clear();\n\t\t\tpdoc->AnnotationClearAll();\n\t\t\tpdoc->MarginClearAll();\n\t\t}\n\t}\n\n\tview.ClearAllTabstops();\n\n\tsel.Clear();\n\tSetTopLine(0);\n\tSetVerticalScrollPos();\n\tInvalidateStyleRedraw();\n}\n\nvoid Editor::ClearDocumentStyle() {\n\tDecoration *deco = pdoc->decorations.root;\n\twhile (deco) {\n\t\t// Save next in case deco deleted\n\t\tDecoration *decoNext = deco->next;\n\t\tif (deco->indicator < INDIC_CONTAINER) {\n\t\t\tpdoc->decorations.SetCurrentIndicator(deco->indicator);\n\t\t\tpdoc->DecorationFillRange(0, 0, pdoc->Length());\n\t\t}\n\t\tdeco = decoNext;\n\t}\n\tpdoc->StartStyling(0, '\\377');\n\tpdoc->SetStyleFor(pdoc->Length(), 0);\n\tcs.ShowAll();\n\tSetAnnotationHeights(0, pdoc->LinesTotal());\n\tpdoc->ClearLevels();\n}\n\nvoid Editor::CopyAllowLine() {\n\tSelectionText selectedText;\n\tCopySelectionRange(&selectedText, true);\n\tCopyToClipboard(selectedText);\n}\n\nvoid Editor::Cut() {\n\tpdoc->CheckReadOnly();\n\tif (!pdoc->IsReadOnly() && !SelectionContainsProtected()) {\n\t\tCopy();\n\t\tClearSelection();\n\t}\n}\n\nvoid Editor::PasteRectangular(SelectionPosition pos, const char *ptr, int len) {\n\tif (pdoc->IsReadOnly() || SelectionContainsProtected()) {\n\t\treturn;\n\t}\n\tsel.Clear();\n\tsel.RangeMain() = SelectionRange(pos);\n\tint line = pdoc->LineFromPosition(sel.MainCaret());\n\tUndoGroup ug(pdoc);\n\tsel.RangeMain().caret = RealizeVirtualSpace(sel.RangeMain().caret);\n\tint xInsert = XFromPosition(sel.RangeMain().caret);\n\tbool prevCr = false;\n\twhile ((len > 0) && IsEOLChar(ptr[len-1]))\n\t\tlen--;\n\tfor (int i = 0; i < len; i++) {\n\t\tif (IsEOLChar(ptr[i])) {\n\t\t\tif ((ptr[i] == '\\r') || (!prevCr))\n\t\t\t\tline++;\n\t\t\tif (line >= pdoc->LinesTotal()) {\n\t\t\t\tif (pdoc->eolMode != SC_EOL_LF)\n\t\t\t\t\tpdoc->InsertString(pdoc->Length(), \"\\r\", 1);\n\t\t\t\tif (pdoc->eolMode != SC_EOL_CR)\n\t\t\t\t\tpdoc->InsertString(pdoc->Length(), \"\\n\", 1);\n\t\t\t}\n\t\t\t// Pad the end of lines with spaces if required\n\t\t\tsel.RangeMain().caret.SetPosition(PositionFromLineX(line, xInsert));\n\t\t\tif ((XFromPosition(sel.MainCaret()) < xInsert) && (i + 1 < len)) {\n\t\t\t\twhile (XFromPosition(sel.MainCaret()) < xInsert) {\n\t\t\t\t\tassert(pdoc);\n\t\t\t\t\tconst int lengthInserted = pdoc->InsertString(sel.MainCaret(), \" \", 1);\n\t\t\t\t\tsel.RangeMain().caret.Add(lengthInserted);\n\t\t\t\t}\n\t\t\t}\n\t\t\tprevCr = ptr[i] == '\\r';\n\t\t} else {\n\t\t\tconst int lengthInserted = pdoc->InsertString(sel.MainCaret(), ptr + i, 1);\n\t\t\tsel.RangeMain().caret.Add(lengthInserted);\n\t\t\tprevCr = false;\n\t\t}\n\t}\n\tSetEmptySelection(pos);\n}\n\nbool Editor::CanPaste() {\n\treturn !pdoc->IsReadOnly() && !SelectionContainsProtected();\n}\n\nvoid Editor::Clear() {\n\t// If multiple selections, don't delete EOLS\n\tif (sel.Empty()) {\n\t\tbool singleVirtual = false;\n\t\tif ((sel.Count() == 1) &&\n\t\t\t!RangeContainsProtected(sel.MainCaret(), sel.MainCaret() + 1) &&\n\t\t\tsel.RangeMain().Start().VirtualSpace()) {\n\t\t\tsingleVirtual = true;\n\t\t}\n\t\tUndoGroup ug(pdoc, (sel.Count() > 1) || singleVirtual);\n\t\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\t\tif (!RangeContainsProtected(sel.Range(r).caret.Position(), sel.Range(r).caret.Position() + 1)) {\n\t\t\t\tif (sel.Range(r).Start().VirtualSpace()) {\n\t\t\t\t\tif (sel.Range(r).anchor < sel.Range(r).caret)\n\t\t\t\t\t\tsel.Range(r) = SelectionRange(RealizeVirtualSpace(sel.Range(r).anchor.Position(), sel.Range(r).anchor.VirtualSpace()));\n\t\t\t\t\telse\n\t\t\t\t\t\tsel.Range(r) = SelectionRange(RealizeVirtualSpace(sel.Range(r).caret.Position(), sel.Range(r).caret.VirtualSpace()));\n\t\t\t\t}\n\t\t\t\tif ((sel.Count() == 1) || !pdoc->IsPositionInLineEnd(sel.Range(r).caret.Position())) {\n\t\t\t\t\tpdoc->DelChar(sel.Range(r).caret.Position());\n\t\t\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t\t\t}  // else multiple selection so don't eat line ends\n\t\t\t} else {\n\t\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t\t}\n\t\t}\n\t} else {\n\t\tClearSelection();\n\t}\n\tsel.RemoveDuplicates();\n\tShowCaretAtCurrentPosition();\t\t// Avoid blinking\n}\n\nvoid Editor::SelectAll() {\n\tsel.Clear();\n\tSetSelection(0, pdoc->Length());\n\tRedraw();\n}\n\nvoid Editor::Undo() {\n\tif (pdoc->CanUndo()) {\n\t\tInvalidateCaret();\n\t\tint newPos = pdoc->Undo();\n\t\tif (newPos >= 0)\n\t\t\tSetEmptySelection(newPos);\n\t\tEnsureCaretVisible();\n\t}\n}\n\nvoid Editor::Redo() {\n\tif (pdoc->CanRedo()) {\n\t\tint newPos = pdoc->Redo();\n\t\tif (newPos >= 0)\n\t\t\tSetEmptySelection(newPos);\n\t\tEnsureCaretVisible();\n\t}\n}\n\nvoid Editor::DelCharBack(bool allowLineStartDeletion) {\n\tRefreshStyleData();\n\tif (!sel.IsRectangular())\n\t\tFilterSelections();\n\tif (sel.IsRectangular())\n\t\tallowLineStartDeletion = false;\n\tUndoGroup ug(pdoc, (sel.Count() > 1) || !sel.Empty());\n\tif (sel.Empty()) {\n\t\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\t\tif (!RangeContainsProtected(sel.Range(r).caret.Position() - 1, sel.Range(r).caret.Position())) {\n\t\t\t\tif (sel.Range(r).caret.VirtualSpace()) {\n\t\t\t\t\tsel.Range(r).caret.SetVirtualSpace(sel.Range(r).caret.VirtualSpace() - 1);\n\t\t\t\t\tsel.Range(r).anchor.SetVirtualSpace(sel.Range(r).caret.VirtualSpace());\n\t\t\t\t} else {\n\t\t\t\t\tint lineCurrentPos = pdoc->LineFromPosition(sel.Range(r).caret.Position());\n\t\t\t\t\tif (allowLineStartDeletion || (pdoc->LineStart(lineCurrentPos) != sel.Range(r).caret.Position())) {\n\t\t\t\t\t\tif (pdoc->GetColumn(sel.Range(r).caret.Position()) <= pdoc->GetLineIndentation(lineCurrentPos) &&\n\t\t\t\t\t\t\t\tpdoc->GetColumn(sel.Range(r).caret.Position()) > 0 && pdoc->backspaceUnindents) {\n\t\t\t\t\t\t\tUndoGroup ugInner(pdoc, !ug.Needed());\n\t\t\t\t\t\t\tint indentation = pdoc->GetLineIndentation(lineCurrentPos);\n\t\t\t\t\t\t\tint indentationStep = pdoc->IndentSize();\n\t\t\t\t\t\t\tint indentationChange = indentation % indentationStep;\n\t\t\t\t\t\t\tif (indentationChange == 0)\n\t\t\t\t\t\t\t\tindentationChange = indentationStep;\n\t\t\t\t\t\t\tconst int posSelect = pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationChange);\n\t\t\t\t\t\t\t// SetEmptySelection\n\t\t\t\t\t\t\tsel.Range(r) = SelectionRange(posSelect);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpdoc->DelCharBack(sel.Range(r).caret.Position());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t\t}\n\t\t}\n\t\tThinRectangularRange();\n\t} else {\n\t\tClearSelection();\n\t}\n\tsel.RemoveDuplicates();\n\tContainerNeedsUpdate(SC_UPDATE_SELECTION);\n\t// Avoid blinking during rapid typing:\n\tShowCaretAtCurrentPosition();\n}\n\nint Editor::ModifierFlags(bool shift, bool ctrl, bool alt, bool meta, bool super) {\n\treturn\n\t\t(shift ? SCI_SHIFT : 0) |\n\t\t(ctrl ? SCI_CTRL : 0) |\n\t\t(alt ? SCI_ALT : 0) |\n\t\t(meta ? SCI_META : 0) |\n\t\t(super ? SCI_SUPER : 0);\n}\n\nvoid Editor::NotifyFocus(bool focus) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = focus ? SCN_FOCUSIN : SCN_FOCUSOUT;\n\tNotifyParent(scn);\n}\n\nvoid Editor::SetCtrlID(int identifier) {\n\tctrlID = identifier;\n}\n\nvoid Editor::NotifyStyleToNeeded(int endStyleNeeded) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_STYLENEEDED;\n\tscn.position = endStyleNeeded;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyStyleNeeded(Document *, void *, int endStyleNeeded) {\n\tNotifyStyleToNeeded(endStyleNeeded);\n}\n\nvoid Editor::NotifyLexerChanged(Document *, void *) {\n}\n\nvoid Editor::NotifyErrorOccurred(Document *, void *, int status) {\n\terrorStatus = status;\n}\n\nvoid Editor::NotifyChar(int ch) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_CHARADDED;\n\tscn.ch = ch;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifySavePoint(bool isSavePoint) {\n\tSCNotification scn = {};\n\tif (isSavePoint) {\n\t\tscn.nmhdr.code = SCN_SAVEPOINTREACHED;\n\t} else {\n\t\tscn.nmhdr.code = SCN_SAVEPOINTLEFT;\n\t}\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyModifyAttempt() {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_MODIFYATTEMPTRO;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyDoubleClick(Point pt, int modifiers) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_DOUBLECLICK;\n\tscn.line = LineFromLocation(pt);\n\tscn.position = PositionFromLocation(pt, true);\n\tscn.modifiers = modifiers;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyDoubleClick(Point pt, bool shift, bool ctrl, bool alt) {\n\tNotifyDoubleClick(pt, ModifierFlags(shift, ctrl, alt));\n}\n\nvoid Editor::NotifyHotSpotDoubleClicked(int position, int modifiers) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_HOTSPOTDOUBLECLICK;\n\tscn.position = position;\n\tscn.modifiers = modifiers;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyHotSpotDoubleClicked(int position, bool shift, bool ctrl, bool alt) {\n\tNotifyHotSpotDoubleClicked(position, ModifierFlags(shift, ctrl, alt));\n}\n\nvoid Editor::NotifyHotSpotClicked(int position, int modifiers) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_HOTSPOTCLICK;\n\tscn.position = position;\n\tscn.modifiers = modifiers;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyHotSpotClicked(int position, bool shift, bool ctrl, bool alt) {\n\tNotifyHotSpotClicked(position, ModifierFlags(shift, ctrl, alt));\n}\n\nvoid Editor::NotifyHotSpotReleaseClick(int position, int modifiers) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_HOTSPOTRELEASECLICK;\n\tscn.position = position;\n\tscn.modifiers = modifiers;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyHotSpotReleaseClick(int position, bool shift, bool ctrl, bool alt) {\n\tNotifyHotSpotReleaseClick(position, ModifierFlags(shift, ctrl, alt));\n}\n\nbool Editor::NotifyUpdateUI() {\n\tif (needUpdateUI) {\n\t\tSCNotification scn = {};\n\t\tscn.nmhdr.code = SCN_UPDATEUI;\n\t\tscn.updated = needUpdateUI;\n\t\tNotifyParent(scn);\n\t\tneedUpdateUI = 0;\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nvoid Editor::NotifyPainted() {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_PAINTED;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyIndicatorClick(bool click, int position, int modifiers) {\n\tint mask = pdoc->decorations.AllOnFor(position);\n\tif ((click && mask) || pdoc->decorations.clickNotified) {\n\t\tSCNotification scn = {};\n\t\tpdoc->decorations.clickNotified = click;\n\t\tscn.nmhdr.code = click ? SCN_INDICATORCLICK : SCN_INDICATORRELEASE;\n\t\tscn.modifiers = modifiers;\n\t\tscn.position = position;\n\t\tNotifyParent(scn);\n\t}\n}\n\nvoid Editor::NotifyIndicatorClick(bool click, int position, bool shift, bool ctrl, bool alt) {\n\tNotifyIndicatorClick(click, position, ModifierFlags(shift, ctrl, alt));\n}\n\nbool Editor::NotifyMarginClick(Point pt, int modifiers) {\n\tconst int marginClicked = vs.MarginFromLocation(pt);\n\tif ((marginClicked >= 0) && vs.ms[marginClicked].sensitive) {\n\t\tint position = pdoc->LineStart(LineFromLocation(pt));\n\t\tif ((vs.ms[marginClicked].mask & SC_MASK_FOLDERS) && (foldAutomatic & SC_AUTOMATICFOLD_CLICK)) {\n\t\t\tconst bool ctrl = (modifiers & SCI_CTRL) != 0;\n\t\t\tconst bool shift = (modifiers & SCI_SHIFT) != 0;\n\t\t\tint lineClick = pdoc->LineFromPosition(position);\n\t\t\tif (shift && ctrl) {\n\t\t\t\tFoldAll(SC_FOLDACTION_TOGGLE);\n\t\t\t} else {\n\t\t\t\tint levelClick = pdoc->GetLevel(lineClick);\n\t\t\t\tif (levelClick & SC_FOLDLEVELHEADERFLAG) {\n\t\t\t\t\tif (shift) {\n\t\t\t\t\t\t// Ensure all children visible\n\t\t\t\t\t\tFoldExpand(lineClick, SC_FOLDACTION_EXPAND, levelClick);\n\t\t\t\t\t} else if (ctrl) {\n\t\t\t\t\t\tFoldExpand(lineClick, SC_FOLDACTION_TOGGLE, levelClick);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Toggle this line\n\t\t\t\t\t\tFoldLine(lineClick, SC_FOLDACTION_TOGGLE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\tSCNotification scn = {};\n\t\tscn.nmhdr.code = SCN_MARGINCLICK;\n\t\tscn.modifiers = modifiers;\n\t\tscn.position = position;\n\t\tscn.margin = marginClicked;\n\t\tNotifyParent(scn);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nbool Editor::NotifyMarginClick(Point pt, bool shift, bool ctrl, bool alt) {\n\treturn NotifyMarginClick(pt, ModifierFlags(shift, ctrl, alt));\n}\n\nbool Editor::NotifyMarginRightClick(Point pt, int modifiers) {\n\tint marginRightClicked = vs.MarginFromLocation(pt);\n\tif ((marginRightClicked >= 0) && vs.ms[marginRightClicked].sensitive) {\n\t\tint position = pdoc->LineStart(LineFromLocation(pt));\n\t\tSCNotification scn = {};\n\t\tscn.nmhdr.code = SCN_MARGINRIGHTCLICK;\n\t\tscn.modifiers = modifiers;\n\t\tscn.position = position;\n\t\tscn.margin = marginRightClicked;\n\t\tNotifyParent(scn);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nvoid Editor::NotifyNeedShown(int pos, int len) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_NEEDSHOWN;\n\tscn.position = pos;\n\tscn.length = len;\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyDwelling(Point pt, bool state) {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = state ? SCN_DWELLSTART : SCN_DWELLEND;\n\tscn.position = PositionFromLocation(pt, true);\n\tscn.x = static_cast<int>(pt.x + vs.ExternalMarginWidth());\n\tscn.y = static_cast<int>(pt.y);\n\tNotifyParent(scn);\n}\n\nvoid Editor::NotifyZoom() {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_ZOOM;\n\tNotifyParent(scn);\n}\n\n// Notifications from document\nvoid Editor::NotifyModifyAttempt(Document *, void *) {\n\t//Platform::DebugPrintf(\"** Modify Attempt\\n\");\n\tNotifyModifyAttempt();\n}\n\nvoid Editor::NotifySavePoint(Document *, void *, bool atSavePoint) {\n\t//Platform::DebugPrintf(\"** Save Point %s\\n\", atSavePoint ? \"On\" : \"Off\");\n\tNotifySavePoint(atSavePoint);\n}\n\nvoid Editor::CheckModificationForWrap(DocModification mh) {\n\tif (mh.modificationType & (SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT)) {\n\t\tview.llc.Invalidate(LineLayout::llCheckTextAndStyle);\n\t\tint lineDoc = pdoc->LineFromPosition(mh.position);\n\t\tint lines = Platform::Maximum(0, mh.linesAdded);\n\t\tif (Wrapping()) {\n\t\t\tNeedWrapping(lineDoc, lineDoc + lines + 1);\n\t\t}\n\t\tRefreshStyleData();\n\t\t// Fix up annotation heights\n\t\tSetAnnotationHeights(lineDoc, lineDoc + lines + 2);\n\t}\n}\n\n// Move a position so it is still after the same character as before the insertion.\nstatic inline int MovePositionForInsertion(int position, int startInsertion, int length) {\n\tif (position > startInsertion) {\n\t\treturn position + length;\n\t}\n\treturn position;\n}\n\n// Move a position so it is still after the same character as before the deletion if that\n// character is still present else after the previous surviving character.\nstatic inline int MovePositionForDeletion(int position, int startDeletion, int length) {\n\tif (position > startDeletion) {\n\t\tint endDeletion = startDeletion + length;\n\t\tif (position > endDeletion) {\n\t\t\treturn position - length;\n\t\t} else {\n\t\t\treturn startDeletion;\n\t\t}\n\t} else {\n\t\treturn position;\n\t}\n}\n\nvoid Editor::NotifyModified(Document *, DocModification mh, void *) {\n\tContainerNeedsUpdate(SC_UPDATE_CONTENT);\n\tif (paintState == painting) {\n\t\tCheckForChangeOutsidePaint(Range(mh.position, mh.position + mh.length));\n\t}\n\tif (mh.modificationType & SC_MOD_CHANGELINESTATE) {\n\t\tif (paintState == painting) {\n\t\t\tCheckForChangeOutsidePaint(\n\t\t\t    Range(pdoc->LineStart(mh.line), pdoc->LineStart(mh.line + 1)));\n\t\t} else {\n\t\t\t// Could check that change is before last visible line.\n\t\t\tRedraw();\n\t\t}\n\t}\n\tif (mh.modificationType & SC_MOD_CHANGETABSTOPS) {\n\t\tRedraw();\n\t}\n\tif (mh.modificationType & SC_MOD_LEXERSTATE) {\n\t\tif (paintState == painting) {\n\t\t\tCheckForChangeOutsidePaint(\n\t\t\t    Range(mh.position, mh.position + mh.length));\n\t\t} else {\n\t\t\tRedraw();\n\t\t}\n\t}\n\tif (mh.modificationType & (SC_MOD_CHANGESTYLE | SC_MOD_CHANGEINDICATOR)) {\n\t\tif (mh.modificationType & SC_MOD_CHANGESTYLE) {\n\t\t\tpdoc->IncrementStyleClock();\n\t\t}\n\t\tif (paintState == notPainting) {\n\t\t\tif (mh.position < pdoc->LineStart(topLine)) {\n\t\t\t\t// Styling performed before this view\n\t\t\t\tRedraw();\n\t\t\t} else {\n\t\t\t\tInvalidateRange(mh.position, mh.position + mh.length);\n\t\t\t}\n\t\t}\n\t\tif (mh.modificationType & SC_MOD_CHANGESTYLE) {\n\t\t\tview.llc.Invalidate(LineLayout::llCheckTextAndStyle);\n\t\t}\n\t} else {\n\t\t// Move selection and brace highlights\n\t\tif (mh.modificationType & SC_MOD_INSERTTEXT) {\n\t\t\tsel.MovePositions(true, mh.position, mh.length);\n\t\t\tbraces[0] = MovePositionForInsertion(braces[0], mh.position, mh.length);\n\t\t\tbraces[1] = MovePositionForInsertion(braces[1], mh.position, mh.length);\n\t\t} else if (mh.modificationType & SC_MOD_DELETETEXT) {\n\t\t\tsel.MovePositions(false, mh.position, mh.length);\n\t\t\tbraces[0] = MovePositionForDeletion(braces[0], mh.position, mh.length);\n\t\t\tbraces[1] = MovePositionForDeletion(braces[1], mh.position, mh.length);\n\t\t}\n\t\tif ((mh.modificationType & (SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE)) && cs.HiddenLines()) {\n\t\t\t// Some lines are hidden so may need shown.\n\t\t\tconst int lineOfPos = pdoc->LineFromPosition(mh.position);\n\t\t\tint endNeedShown = mh.position;\n\t\t\tif (mh.modificationType & SC_MOD_BEFOREINSERT) {\n\t\t\t\tif (pdoc->ContainsLineEnd(mh.text, mh.length) && (mh.position != pdoc->LineStart(lineOfPos)))\n\t\t\t\t\tendNeedShown = pdoc->LineStart(lineOfPos+1);\n\t\t\t} else if (mh.modificationType & SC_MOD_BEFOREDELETE) {\n\t\t\t\t// Extend the need shown area over any folded lines\n\t\t\t\tendNeedShown = mh.position + mh.length;\n\t\t\t\tint lineLast = pdoc->LineFromPosition(mh.position+mh.length);\n\t\t\t\tfor (int line = lineOfPos; line <= lineLast; line++) {\n\t\t\t\t\tconst int lineMaxSubord = pdoc->GetLastChild(line, -1, -1);\n\t\t\t\t\tif (lineLast < lineMaxSubord) {\n\t\t\t\t\t\tlineLast = lineMaxSubord;\n\t\t\t\t\t\tendNeedShown = pdoc->LineEnd(lineLast);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tNeedShown(mh.position, endNeedShown - mh.position);\n\t\t}\n\t\tif (mh.linesAdded != 0) {\n\t\t\t// Update contraction state for inserted and removed lines\n\t\t\t// lineOfPos should be calculated in context of state before modification, shouldn't it\n\t\t\tint lineOfPos = pdoc->LineFromPosition(mh.position);\n\t\t\tif (mh.position > pdoc->LineStart(lineOfPos))\n\t\t\t\tlineOfPos++;\t// Affecting subsequent lines\n\t\t\tif (mh.linesAdded > 0) {\n\t\t\t\tcs.InsertLines(lineOfPos, mh.linesAdded);\n\t\t\t} else {\n\t\t\t\tcs.DeleteLines(lineOfPos, -mh.linesAdded);\n\t\t\t}\n\t\t\tview.LinesAddedOrRemoved(lineOfPos, mh.linesAdded);\n\t\t}\n\t\tif (mh.modificationType & SC_MOD_CHANGEANNOTATION) {\n\t\t\tint lineDoc = pdoc->LineFromPosition(mh.position);\n\t\t\tif (vs.annotationVisible) {\n\t\t\t\tcs.SetHeight(lineDoc, cs.GetHeight(lineDoc) + mh.annotationLinesAdded);\n\t\t\t\tRedraw();\n\t\t\t}\n\t\t}\n\t\tCheckModificationForWrap(mh);\n\t\tif (mh.linesAdded != 0) {\n\t\t\t// Avoid scrolling of display if change before current display\n\t\t\tif (mh.position < posTopLine && !CanDeferToLastStep(mh)) {\n\t\t\t\tint newTop = Platform::Clamp(topLine + mh.linesAdded, 0, MaxScrollPos());\n\t\t\t\tif (newTop != topLine) {\n\t\t\t\t\tSetTopLine(newTop);\n\t\t\t\t\tSetVerticalScrollPos();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (paintState == notPainting && !CanDeferToLastStep(mh)) {\n\t\t\t\tQueueIdleWork(WorkNeeded::workStyle, pdoc->Length());\n\t\t\t\tRedraw();\n\t\t\t}\n\t\t} else {\n\t\t\tif (paintState == notPainting && mh.length && !CanEliminate(mh)) {\n\t\t\t\tQueueIdleWork(WorkNeeded::workStyle, mh.position + mh.length);\n\t\t\t\tInvalidateRange(mh.position, mh.position + mh.length);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (mh.linesAdded != 0 && !CanDeferToLastStep(mh)) {\n\t\tSetScrollBars();\n\t}\n\n\tif ((mh.modificationType & SC_MOD_CHANGEMARKER) || (mh.modificationType & SC_MOD_CHANGEMARGIN)) {\n\t\tif ((!willRedrawAll) && ((paintState == notPainting) || !PaintContainsMargin())) {\n\t\t\tif (mh.modificationType & SC_MOD_CHANGEFOLD) {\n\t\t\t\t// Fold changes can affect the drawing of following lines so redraw whole margin\n\t\t\t\tRedrawSelMargin(marginView.highlightDelimiter.isEnabled ? -1 : mh.line - 1, true);\n\t\t\t} else {\n\t\t\t\tRedrawSelMargin(mh.line);\n\t\t\t}\n\t\t}\n\t}\n\tif ((mh.modificationType & SC_MOD_CHANGEFOLD) && (foldAutomatic & SC_AUTOMATICFOLD_CHANGE)) {\n\t\tFoldChanged(mh.line, mh.foldLevelNow, mh.foldLevelPrev);\n\t}\n\n\t// NOW pay the piper WRT \"deferred\" visual updates\n\tif (IsLastStep(mh)) {\n\t\tSetScrollBars();\n\t\tRedraw();\n\t}\n\n\t// If client wants to see this modification\n\tif (mh.modificationType & modEventMask) {\n\t\tif ((mh.modificationType & (SC_MOD_CHANGESTYLE | SC_MOD_CHANGEINDICATOR)) == 0) {\n\t\t\t// Real modification made to text of document.\n\t\t\tNotifyChange();\t// Send EN_CHANGE\n\t\t}\n\n\t\tSCNotification scn = {};\n\t\tscn.nmhdr.code = SCN_MODIFIED;\n\t\tscn.position = mh.position;\n\t\tscn.modificationType = mh.modificationType;\n\t\tscn.text = mh.text;\n\t\tscn.length = mh.length;\n\t\tscn.linesAdded = mh.linesAdded;\n\t\tscn.line = mh.line;\n\t\tscn.foldLevelNow = mh.foldLevelNow;\n\t\tscn.foldLevelPrev = mh.foldLevelPrev;\n\t\tscn.token = mh.token;\n\t\tscn.annotationLinesAdded = mh.annotationLinesAdded;\n\t\tNotifyParent(scn);\n\t}\n}\n\nvoid Editor::NotifyDeleted(Document *, void *) {\n\t/* Do nothing */\n}\n\nvoid Editor::NotifyMacroRecord(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {\n\n\t// Enumerates all macroable messages\n\tswitch (iMessage) {\n\tcase SCI_CUT:\n\tcase SCI_COPY:\n\tcase SCI_PASTE:\n\tcase SCI_CLEAR:\n\tcase SCI_REPLACESEL:\n\tcase SCI_ADDTEXT:\n\tcase SCI_INSERTTEXT:\n\tcase SCI_APPENDTEXT:\n\tcase SCI_CLEARALL:\n\tcase SCI_SELECTALL:\n\tcase SCI_GOTOLINE:\n\tcase SCI_GOTOPOS:\n\tcase SCI_SEARCHANCHOR:\n\tcase SCI_SEARCHNEXT:\n\tcase SCI_SEARCHPREV:\n\tcase SCI_LINEDOWN:\n\tcase SCI_LINEDOWNEXTEND:\n\tcase SCI_PARADOWN:\n\tcase SCI_PARADOWNEXTEND:\n\tcase SCI_LINEUP:\n\tcase SCI_LINEUPEXTEND:\n\tcase SCI_PARAUP:\n\tcase SCI_PARAUPEXTEND:\n\tcase SCI_CHARLEFT:\n\tcase SCI_CHARLEFTEXTEND:\n\tcase SCI_CHARRIGHT:\n\tcase SCI_CHARRIGHTEXTEND:\n\tcase SCI_WORDLEFT:\n\tcase SCI_WORDLEFTEXTEND:\n\tcase SCI_WORDRIGHT:\n\tcase SCI_WORDRIGHTEXTEND:\n\tcase SCI_WORDPARTLEFT:\n\tcase SCI_WORDPARTLEFTEXTEND:\n\tcase SCI_WORDPARTRIGHT:\n\tcase SCI_WORDPARTRIGHTEXTEND:\n\tcase SCI_WORDLEFTEND:\n\tcase SCI_WORDLEFTENDEXTEND:\n\tcase SCI_WORDRIGHTEND:\n\tcase SCI_WORDRIGHTENDEXTEND:\n\tcase SCI_HOME:\n\tcase SCI_HOMEEXTEND:\n\tcase SCI_LINEEND:\n\tcase SCI_LINEENDEXTEND:\n\tcase SCI_HOMEWRAP:\n\tcase SCI_HOMEWRAPEXTEND:\n\tcase SCI_LINEENDWRAP:\n\tcase SCI_LINEENDWRAPEXTEND:\n\tcase SCI_DOCUMENTSTART:\n\tcase SCI_DOCUMENTSTARTEXTEND:\n\tcase SCI_DOCUMENTEND:\n\tcase SCI_DOCUMENTENDEXTEND:\n\tcase SCI_STUTTEREDPAGEUP:\n\tcase SCI_STUTTEREDPAGEUPEXTEND:\n\tcase SCI_STUTTEREDPAGEDOWN:\n\tcase SCI_STUTTEREDPAGEDOWNEXTEND:\n\tcase SCI_PAGEUP:\n\tcase SCI_PAGEUPEXTEND:\n\tcase SCI_PAGEDOWN:\n\tcase SCI_PAGEDOWNEXTEND:\n\tcase SCI_EDITTOGGLEOVERTYPE:\n\tcase SCI_CANCEL:\n\tcase SCI_DELETEBACK:\n\tcase SCI_TAB:\n\tcase SCI_BACKTAB:\n\tcase SCI_FORMFEED:\n\tcase SCI_VCHOME:\n\tcase SCI_VCHOMEEXTEND:\n\tcase SCI_VCHOMEWRAP:\n\tcase SCI_VCHOMEWRAPEXTEND:\n\tcase SCI_VCHOMEDISPLAY:\n\tcase SCI_VCHOMEDISPLAYEXTEND:\n\tcase SCI_DELWORDLEFT:\n\tcase SCI_DELWORDRIGHT:\n\tcase SCI_DELWORDRIGHTEND:\n\tcase SCI_DELLINELEFT:\n\tcase SCI_DELLINERIGHT:\n\tcase SCI_LINECOPY:\n\tcase SCI_LINECUT:\n\tcase SCI_LINEDELETE:\n\tcase SCI_LINETRANSPOSE:\n\tcase SCI_LINEDUPLICATE:\n\tcase SCI_LOWERCASE:\n\tcase SCI_UPPERCASE:\n\tcase SCI_LINESCROLLDOWN:\n\tcase SCI_LINESCROLLUP:\n\tcase SCI_DELETEBACKNOTLINE:\n\tcase SCI_HOMEDISPLAY:\n\tcase SCI_HOMEDISPLAYEXTEND:\n\tcase SCI_LINEENDDISPLAY:\n\tcase SCI_LINEENDDISPLAYEXTEND:\n\tcase SCI_SETSELECTIONMODE:\n\tcase SCI_LINEDOWNRECTEXTEND:\n\tcase SCI_LINEUPRECTEXTEND:\n\tcase SCI_CHARLEFTRECTEXTEND:\n\tcase SCI_CHARRIGHTRECTEXTEND:\n\tcase SCI_HOMERECTEXTEND:\n\tcase SCI_VCHOMERECTEXTEND:\n\tcase SCI_LINEENDRECTEXTEND:\n\tcase SCI_PAGEUPRECTEXTEND:\n\tcase SCI_PAGEDOWNRECTEXTEND:\n\tcase SCI_SELECTIONDUPLICATE:\n\tcase SCI_COPYALLOWLINE:\n\tcase SCI_VERTICALCENTRECARET:\n\tcase SCI_MOVESELECTEDLINESUP:\n\tcase SCI_MOVESELECTEDLINESDOWN:\n\tcase SCI_SCROLLTOSTART:\n\tcase SCI_SCROLLTOEND:\n\t\tbreak;\n\n\t\t// Filter out all others like display changes. Also, newlines are redundant\n\t\t// with char insert messages.\n\tcase SCI_NEWLINE:\n\tdefault:\n\t\t//\t\tprintf(\"Filtered out %ld of macro recording\\n\", iMessage);\n\t\treturn;\n\t}\n\n\t// Send notification\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_MACRORECORD;\n\tscn.message = iMessage;\n\tscn.wParam = wParam;\n\tscn.lParam = lParam;\n\tNotifyParent(scn);\n}\n\n// Something has changed that the container should know about\nvoid Editor::ContainerNeedsUpdate(int flags) {\n\tneedUpdateUI |= flags;\n}\n\n/**\n * Force scroll and keep position relative to top of window.\n *\n * If stuttered = true and not already at first/last row, move to first/last row of window.\n * If stuttered = true and already at first/last row, scroll as normal.\n */\nvoid Editor::PageMove(int direction, Selection::selTypes selt, bool stuttered) {\n\tint topLineNew;\n\tSelectionPosition newPos;\n\n\tint currentLine = pdoc->LineFromPosition(sel.MainCaret());\n\tint topStutterLine = topLine + caretYSlop;\n\tint bottomStutterLine =\n\t    pdoc->LineFromPosition(PositionFromLocation(\n\t                Point::FromInts(lastXChosen - xOffset, direction * vs.lineHeight * LinesToScroll())))\n\t    - caretYSlop - 1;\n\n\tif (stuttered && (direction < 0 && currentLine > topStutterLine)) {\n\t\ttopLineNew = topLine;\n\t\tnewPos = SPositionFromLocation(Point::FromInts(lastXChosen - xOffset, vs.lineHeight * caretYSlop),\n\t\t\tfalse, false, UserVirtualSpace());\n\n\t} else if (stuttered && (direction > 0 && currentLine < bottomStutterLine)) {\n\t\ttopLineNew = topLine;\n\t\tnewPos = SPositionFromLocation(Point::FromInts(lastXChosen - xOffset, vs.lineHeight * (LinesToScroll() - caretYSlop)),\n\t\t\tfalse, false, UserVirtualSpace());\n\n\t} else {\n\t\tPoint pt = LocationFromPosition(sel.MainCaret());\n\n\t\ttopLineNew = Platform::Clamp(\n\t\t            topLine + direction * LinesToScroll(), 0, MaxScrollPos());\n\t\tnewPos = SPositionFromLocation(\n\t\t\tPoint::FromInts(lastXChosen - xOffset, static_cast<int>(pt.y) + direction * (vs.lineHeight * LinesToScroll())),\n\t\t\tfalse, false, UserVirtualSpace());\n\t}\n\n\tif (topLineNew != topLine) {\n\t\tSetTopLine(topLineNew);\n\t\tMovePositionTo(newPos, selt);\n\t\tRedraw();\n\t\tSetVerticalScrollPos();\n\t} else {\n\t\tMovePositionTo(newPos, selt);\n\t}\n}\n\nvoid Editor::ChangeCaseOfSelection(int caseMapping) {\n\tUndoGroup ug(pdoc);\n\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\tSelectionRange current = sel.Range(r);\n\t\tSelectionRange currentNoVS = current;\n\t\tcurrentNoVS.ClearVirtualSpace();\n\t\tsize_t rangeBytes = currentNoVS.Length();\n\t\tif (rangeBytes > 0) {\n\t\t\tstd::string sText = RangeText(currentNoVS.Start().Position(), currentNoVS.End().Position());\n\n\t\t\tstd::string sMapped = CaseMapString(sText, caseMapping);\n\n\t\t\tif (sMapped != sText) {\n\t\t\t\tsize_t firstDifference = 0;\n\t\t\t\twhile (sMapped[firstDifference] == sText[firstDifference])\n\t\t\t\t\tfirstDifference++;\n\t\t\t\tsize_t lastDifferenceText = sText.size() - 1;\n\t\t\t\tsize_t lastDifferenceMapped = sMapped.size() - 1;\n\t\t\t\twhile (sMapped[lastDifferenceMapped] == sText[lastDifferenceText]) {\n\t\t\t\t\tlastDifferenceText--;\n\t\t\t\t\tlastDifferenceMapped--;\n\t\t\t\t}\n\t\t\t\tsize_t endDifferenceText = sText.size() - 1 - lastDifferenceText;\n\t\t\t\tpdoc->DeleteChars(\n\t\t\t\t\tstatic_cast<int>(currentNoVS.Start().Position() + firstDifference),\n\t\t\t\t\tstatic_cast<int>(rangeBytes - firstDifference - endDifferenceText));\n\t\t\t\tconst int lengthChange = static_cast<int>(lastDifferenceMapped - firstDifference + 1);\n\t\t\t\tconst int lengthInserted = pdoc->InsertString(\n\t\t\t\t\tstatic_cast<int>(currentNoVS.Start().Position() + firstDifference),\n\t\t\t\t\tsMapped.c_str() + firstDifference,\n\t\t\t\t\tlengthChange);\n\t\t\t\t// Automatic movement changes selection so reset to exactly the same as it was.\n\t\t\t\tint diffSizes = static_cast<int>(sMapped.size() - sText.size()) + lengthInserted - lengthChange;\n\t\t\t\tif (diffSizes != 0) {\n\t\t\t\t\tif (current.anchor > current.caret)\n\t\t\t\t\t\tcurrent.anchor.Add(diffSizes);\n\t\t\t\t\telse\n\t\t\t\t\t\tcurrent.caret.Add(diffSizes);\n\t\t\t\t}\n\t\t\t\tsel.Range(r) = current;\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid Editor::LineTranspose() {\n\tint line = pdoc->LineFromPosition(sel.MainCaret());\n\tif (line > 0) {\n\t\tUndoGroup ug(pdoc);\n\n\t\tconst int startPrevious = pdoc->LineStart(line - 1);\n\t\tconst std::string linePrevious = RangeText(startPrevious, pdoc->LineEnd(line - 1));\n\n\t\tint startCurrent = pdoc->LineStart(line);\n\t\tconst std::string lineCurrent = RangeText(startCurrent, pdoc->LineEnd(line));\n\n\t\tpdoc->DeleteChars(startCurrent, static_cast<int>(lineCurrent.length()));\n\t\tpdoc->DeleteChars(startPrevious, static_cast<int>(linePrevious.length()));\n\t\tstartCurrent -= static_cast<int>(linePrevious.length());\n\n\t\tstartCurrent += pdoc->InsertString(startPrevious, lineCurrent.c_str(),\n\t\t\tstatic_cast<int>(lineCurrent.length()));\n\t\tpdoc->InsertString(startCurrent, linePrevious.c_str(),\n\t\t\tstatic_cast<int>(linePrevious.length()));\n\t\t// Move caret to start of current line\n\t\tMovePositionTo(SelectionPosition(startCurrent));\n\t}\n}\n\nvoid Editor::Duplicate(bool forLine) {\n\tif (sel.Empty()) {\n\t\tforLine = true;\n\t}\n\tUndoGroup ug(pdoc);\n\tconst char *eol = \"\";\n\tint eolLen = 0;\n\tif (forLine) {\n\t\teol = StringFromEOLMode(pdoc->eolMode);\n\t\teolLen = istrlen(eol);\n\t}\n\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\tSelectionPosition start = sel.Range(r).Start();\n\t\tSelectionPosition end = sel.Range(r).End();\n\t\tif (forLine) {\n\t\t\tint line = pdoc->LineFromPosition(sel.Range(r).caret.Position());\n\t\t\tstart = SelectionPosition(pdoc->LineStart(line));\n\t\t\tend = SelectionPosition(pdoc->LineEnd(line));\n\t\t}\n\t\tstd::string text = RangeText(start.Position(), end.Position());\n\t\tint lengthInserted = eolLen;\n\t\tif (forLine)\n\t\t\tlengthInserted = pdoc->InsertString(end.Position(), eol, eolLen);\n\t\tpdoc->InsertString(end.Position() + lengthInserted, text.c_str(), static_cast<int>(text.length()));\n\t}\n\tif (sel.Count() && sel.IsRectangular()) {\n\t\tSelectionPosition last = sel.Last();\n\t\tif (forLine) {\n\t\t\tint line = pdoc->LineFromPosition(last.Position());\n\t\t\tlast = SelectionPosition(last.Position() + pdoc->LineStart(line+1) - pdoc->LineStart(line));\n\t\t}\n\t\tif (sel.Rectangular().anchor > sel.Rectangular().caret)\n\t\t\tsel.Rectangular().anchor = last;\n\t\telse\n\t\t\tsel.Rectangular().caret = last;\n\t\tSetRectangularRange();\n\t}\n}\n\nvoid Editor::CancelModes() {\n\tsel.SetMoveExtends(false);\n}\n\nvoid Editor::NewLine() {\n\tInvalidateWholeSelection();\n\tif (sel.IsRectangular() || !additionalSelectionTyping) {\n\t\t// Remove non-main ranges\n\t\tsel.DropAdditionalRanges();\n\t}\n\n\tUndoGroup ug(pdoc, !sel.Empty() || (sel.Count() > 1));\n\n\t// Clear each range\n\tif (!sel.Empty()) {\n\t\tClearSelection();\n\t}\n\n\t// Insert each line end\n\tsize_t countInsertions = 0;\n\tfor (size_t r = 0; r < sel.Count(); r++) {\n\t\tsel.Range(r).ClearVirtualSpace();\n\t\tconst char *eol = StringFromEOLMode(pdoc->eolMode);\n\t\tconst int positionInsert = sel.Range(r).caret.Position();\n\t\tconst int insertLength = pdoc->InsertString(positionInsert, eol, istrlen(eol));\n\t\tif (insertLength > 0) {\n\t\t\tsel.Range(r) = SelectionRange(positionInsert + insertLength);\n\t\t\tcountInsertions++;\n\t\t}\n\t}\n\n\t// Perform notifications after all the changes as the application may change the\n\t// selections in response to the characters.\n\tfor (size_t i = 0; i < countInsertions; i++) {\n\t\tconst char *eol = StringFromEOLMode(pdoc->eolMode);\n\t\twhile (*eol) {\n\t\t\tNotifyChar(*eol);\n\t\t\tif (recordingMacro) {\n\t\t\t\tchar txt[2];\n\t\t\t\ttxt[0] = *eol;\n\t\t\t\ttxt[1] = '\\0';\n\t\t\t\tNotifyMacroRecord(SCI_REPLACESEL, 0, reinterpret_cast<sptr_t>(txt));\n\t\t\t}\n\t\t\teol++;\n\t\t}\n\t}\n\n\tSetLastXChosen();\n\tSetScrollBars();\n\tEnsureCaretVisible();\n\t// Avoid blinking during rapid typing:\n\tShowCaretAtCurrentPosition();\n}\n\nSelectionPosition Editor::PositionUpOrDown(SelectionPosition spStart, int direction, int lastX) {\n\tconst Point pt = LocationFromPosition(spStart);\n\tint skipLines = 0;\n\n\tif (vs.annotationVisible) {\n\t\tconst int lineDoc = pdoc->LineFromPosition(spStart.Position());\n\t\tconst Point ptStartLine = LocationFromPosition(pdoc->LineStart(lineDoc));\n\t\tconst int subLine = static_cast<int>(pt.y - ptStartLine.y) / vs.lineHeight;\n\n\t\tif (direction < 0 && subLine == 0) {\n\t\t\tconst int lineDisplay = cs.DisplayFromDoc(lineDoc);\n\t\t\tif (lineDisplay > 0) {\n\t\t\t\tskipLines = pdoc->AnnotationLines(cs.DocFromDisplay(lineDisplay - 1));\n\t\t\t}\n\t\t} else if (direction > 0 && subLine >= (cs.GetHeight(lineDoc) - 1 - pdoc->AnnotationLines(lineDoc))) {\n\t\t\tskipLines = pdoc->AnnotationLines(lineDoc);\n\t\t}\n\t}\n\n\tconst int newY = static_cast<int>(pt.y) + (1 + skipLines) * direction * vs.lineHeight;\n\tif (lastX < 0) {\n\t\tlastX = static_cast<int>(pt.x) + xOffset;\n\t}\n\tSelectionPosition posNew = SPositionFromLocation(\n\t\tPoint::FromInts(lastX - xOffset, newY), false, false, UserVirtualSpace());\n\n\tif (direction < 0) {\n\t\t// Line wrapping may lead to a location on the same line, so\n\t\t// seek back if that is the case.\n\t\tPoint ptNew = LocationFromPosition(posNew.Position());\n\t\twhile ((posNew.Position() > 0) && (pt.y == ptNew.y)) {\n\t\t\tposNew.Add(-1);\n\t\t\tposNew.SetVirtualSpace(0);\n\t\t\tptNew = LocationFromPosition(posNew.Position());\n\t\t}\n\t} else if (direction > 0 && posNew.Position() != pdoc->Length()) {\n\t\t// There is an equivalent case when moving down which skips\n\t\t// over a line.\n\t\tPoint ptNew = LocationFromPosition(posNew.Position());\n\t\twhile ((posNew.Position() > spStart.Position()) && (ptNew.y > newY)) {\n\t\t\tposNew.Add(-1);\n\t\t\tposNew.SetVirtualSpace(0);\n\t\t\tptNew = LocationFromPosition(posNew.Position());\n\t\t}\n\t}\n\treturn posNew;\n}\n\nvoid Editor::CursorUpOrDown(int direction, Selection::selTypes selt) {\n\tSelectionPosition caretToUse = sel.Range(sel.Main()).caret;\n\tif (sel.IsRectangular()) {\n\t\tif (selt ==  Selection::noSel) {\n\t\t\tcaretToUse = (direction > 0) ? sel.Limits().end : sel.Limits().start;\n\t\t} else {\n\t\t\tcaretToUse = sel.Rectangular().caret;\n\t\t}\n\t}\n\tif (selt == Selection::selRectangle) {\n\t\tconst SelectionRange rangeBase = sel.IsRectangular() ? sel.Rectangular() : sel.RangeMain();\n\t\tif (!sel.IsRectangular()) {\n\t\t\tInvalidateWholeSelection();\n\t\t\tsel.DropAdditionalRanges();\n\t\t}\n\t\tconst SelectionPosition posNew = MovePositionSoVisible(\n\t\t\tPositionUpOrDown(caretToUse, direction, lastXChosen), direction);\n\t\tsel.selType = Selection::selRectangle;\n\t\tsel.Rectangular() = SelectionRange(posNew, rangeBase.anchor);\n\t\tSetRectangularRange();\n\t\tMovedCaret(posNew, caretToUse, true);\n\t} else {\n\t\tInvalidateWholeSelection();\n\t\tif (!additionalSelectionTyping || (sel.IsRectangular())) {\n\t\t\tsel.DropAdditionalRanges();\n\t\t}\n\t\tsel.selType = Selection::selStream;\n\t\tfor (size_t r = 0; r < sel.Count(); r++) {\n\t\t\tconst int lastX = (r == sel.Main()) ? lastXChosen : -1;\n\t\t\tconst SelectionPosition spCaretNow = sel.Range(r).caret;\n\t\t\tconst SelectionPosition posNew = MovePositionSoVisible(\n\t\t\t\tPositionUpOrDown(spCaretNow, direction, lastX), direction);\n\t\t\tsel.Range(r) = selt == Selection::selStream ?\n\t\t\t\tSelectionRange(posNew, sel.Range(r).anchor) : SelectionRange(posNew);\n\t\t}\n\t\tsel.RemoveDuplicates();\n\t\tMovedCaret(sel.RangeMain().caret, caretToUse, true);\n\t}\n}\n\nvoid Editor::ParaUpOrDown(int direction, Selection::selTypes selt) {\n\tint lineDoc, savedPos = sel.MainCaret();\n\tdo {\n\t\tMovePositionTo(SelectionPosition(direction > 0 ? pdoc->ParaDown(sel.MainCaret()) : pdoc->ParaUp(sel.MainCaret())), selt);\n\t\tlineDoc = pdoc->LineFromPosition(sel.MainCaret());\n\t\tif (direction > 0) {\n\t\t\tif (sel.MainCaret() >= pdoc->Length() && !cs.GetVisible(lineDoc)) {\n\t\t\t\tif (selt == Selection::noSel) {\n\t\t\t\t\tMovePositionTo(SelectionPosition(pdoc->LineEndPosition(savedPos)));\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} while (!cs.GetVisible(lineDoc));\n}\n\nRange Editor::RangeDisplayLine(int lineVisible) {\n\tRefreshStyleData();\n\tAutoSurface surface(this);\n\treturn view.RangeDisplayLine(surface, *this, lineVisible, vs);\n}\n\nint Editor::StartEndDisplayLine(int pos, bool start) {\n\tRefreshStyleData();\n\tAutoSurface surface(this);\n\tint posRet = view.StartEndDisplayLine(surface, *this, pos, start, vs);\n\tif (posRet == INVALID_POSITION) {\n\t\treturn pos;\n\t} else {\n\t\treturn posRet;\n\t}\n}\n\nnamespace {\n\nunsigned int WithExtends(unsigned int iMessage) {\n\tswitch (iMessage) {\n\tcase SCI_CHARLEFT: return SCI_CHARLEFTEXTEND;\n\tcase SCI_CHARRIGHT: return SCI_CHARRIGHTEXTEND;\n\n\tcase SCI_WORDLEFT: return SCI_WORDLEFTEXTEND;\n\tcase SCI_WORDRIGHT: return SCI_WORDRIGHTEXTEND;\n\tcase SCI_WORDLEFTEND: return SCI_WORDLEFTENDEXTEND;\n\tcase SCI_WORDRIGHTEND: return SCI_WORDRIGHTENDEXTEND;\n\tcase SCI_WORDPARTLEFT: return SCI_WORDPARTLEFTEXTEND;\n\tcase SCI_WORDPARTRIGHT: return SCI_WORDPARTRIGHTEXTEND;\n\n\tcase SCI_HOME: return SCI_HOMEEXTEND;\n\tcase SCI_HOMEDISPLAY: return SCI_HOMEDISPLAYEXTEND;\n\tcase SCI_HOMEWRAP: return SCI_HOMEWRAPEXTEND;\n\tcase SCI_VCHOME: return SCI_VCHOMEEXTEND;\n\tcase SCI_VCHOMEDISPLAY: return SCI_VCHOMEDISPLAYEXTEND;\n\tcase SCI_VCHOMEWRAP: return SCI_VCHOMEWRAPEXTEND;\n\n\tcase SCI_LINEEND: return SCI_LINEENDEXTEND;\n\tcase SCI_LINEENDDISPLAY: return SCI_LINEENDDISPLAYEXTEND;\n\tcase SCI_LINEENDWRAP: return SCI_LINEENDWRAPEXTEND;\n\n\tdefault:\treturn iMessage;\n\t}\n}\n\nint NaturalDirection(unsigned int iMessage) {\n\tswitch (iMessage) {\n\tcase SCI_CHARLEFT:\n\tcase SCI_CHARLEFTEXTEND:\n\tcase SCI_CHARLEFTRECTEXTEND:\n\tcase SCI_WORDLEFT:\n\tcase SCI_WORDLEFTEXTEND:\n\tcase SCI_WORDLEFTEND:\n\tcase SCI_WORDLEFTENDEXTEND:\n\tcase SCI_WORDPARTLEFT:\n\tcase SCI_WORDPARTLEFTEXTEND:\n\tcase SCI_HOME:\n\tcase SCI_HOMEEXTEND:\n\tcase SCI_HOMEDISPLAY:\n\tcase SCI_HOMEDISPLAYEXTEND:\n\tcase SCI_HOMEWRAP:\n\tcase SCI_HOMEWRAPEXTEND:\n\t\t// VC_HOME* mostly goes back\n\tcase SCI_VCHOME:\n\tcase SCI_VCHOMEEXTEND:\n\tcase SCI_VCHOMEDISPLAY:\n\tcase SCI_VCHOMEDISPLAYEXTEND:\n\tcase SCI_VCHOMEWRAP:\n\tcase SCI_VCHOMEWRAPEXTEND:\n\t\treturn -1;\n\n\tdefault:\n\t\treturn 1;\n\t}\n}\n\nbool IsRectExtend(unsigned int iMessage) {\n\tswitch (iMessage) {\n\tcase SCI_CHARLEFTRECTEXTEND:\n\tcase SCI_CHARRIGHTRECTEXTEND:\n\tcase SCI_HOMERECTEXTEND:\n\tcase SCI_VCHOMERECTEXTEND:\n\tcase SCI_LINEENDRECTEXTEND:\n\t\treturn true;\n\tdefault:\n\t\treturn false;\n\t}\n}\n\n}\n\nint Editor::VCHomeDisplayPosition(int position) {\n\tconst int homePos = pdoc->VCHomePosition(position);\n\tconst int viewLineStart = StartEndDisplayLine(position, true);\n\tif (viewLineStart > homePos)\n\t\treturn viewLineStart;\n\telse\n\t\treturn homePos;\n}\n\nint Editor::VCHomeWrapPosition(int position) {\n\tconst int homePos = pdoc->VCHomePosition(position);\n\tconst int viewLineStart = StartEndDisplayLine(position, true);\n\tif ((viewLineStart < position) && (viewLineStart > homePos))\n\t\treturn viewLineStart;\n\telse\n\t\treturn homePos;\n}\n\nint Editor::LineEndWrapPosition(int position) {\n\tconst int endPos = StartEndDisplayLine(position, false);\n\tconst int realEndPos = pdoc->LineEndPosition(position);\n\tif (endPos > realEndPos      // if moved past visible EOLs\n\t\t|| position >= endPos) // if at end of display line already\n\t\treturn realEndPos;\n\telse\n\t\treturn endPos;\n}\n\nint Editor::HorizontalMove(unsigned int iMessage) {\n\tif (sel.MoveExtends()) {\n\t\tiMessage = WithExtends(iMessage);\n\t}\n\n\tif (!multipleSelection && !sel.IsRectangular()) {\n\t\t// Simplify selection down to 1\n\t\tsel.SetSelection(sel.RangeMain());\n\t}\n\n\t// Invalidate each of the current selections\n\tInvalidateWholeSelection();\n\n\tif (IsRectExtend(iMessage)) {\n\t\tconst SelectionRange rangeBase = sel.IsRectangular() ? sel.Rectangular() : sel.RangeMain();\n\t\tif (!sel.IsRectangular()) {\n\t\t\tsel.DropAdditionalRanges();\n\t\t}\n\t\t// Will change to rectangular if not currently rectangular\n\t\tSelectionPosition spCaret = rangeBase.caret;\n\t\tswitch (iMessage) {\n\t\tcase SCI_CHARLEFTRECTEXTEND:\n\t\t\tif (pdoc->IsLineEndPosition(spCaret.Position()) && spCaret.VirtualSpace()) {\n\t\t\t\tspCaret.SetVirtualSpace(spCaret.VirtualSpace() - 1);\n\t\t\t} else if ((virtualSpaceOptions & SCVS_NOWRAPLINESTART) == 0 || pdoc->GetColumn(spCaret.Position()) > 0) {\n\t\t\t\tspCaret = SelectionPosition(spCaret.Position() - 1);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCI_CHARRIGHTRECTEXTEND:\n\t\t\tif ((virtualSpaceOptions & SCVS_RECTANGULARSELECTION) && pdoc->IsLineEndPosition(sel.MainCaret())) {\n\t\t\t\tspCaret.SetVirtualSpace(spCaret.VirtualSpace() + 1);\n\t\t\t} else {\n\t\t\t\tspCaret = SelectionPosition(spCaret.Position() + 1);\n\t\t\t}\n\t\t\tbreak;\n\t\tcase SCI_HOMERECTEXTEND:\n\t\t\tspCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));\n\t\t\tbreak;\n\t\tcase SCI_VCHOMERECTEXTEND:\n\t\t\tspCaret = SelectionPosition(pdoc->VCHomePosition(spCaret.Position()));\n\t\t\tbreak;\n\t\tcase SCI_LINEENDRECTEXTEND:\n\t\t\tspCaret = SelectionPosition(pdoc->LineEndPosition(spCaret.Position()));\n\t\t\tbreak;\n\t\t}\n\t\tconst int directionMove = (spCaret < rangeBase.caret) ? -1 : 1;\n\t\tspCaret = MovePositionSoVisible(spCaret, directionMove);\n\t\tsel.selType = Selection::selRectangle;\n\t\tsel.Rectangular() = SelectionRange(spCaret, rangeBase.anchor);\n\t\tSetRectangularRange();\n\t} else if (sel.IsRectangular()) {\n\t\t// Not a rectangular extension so switch to stream.\n\t\tconst SelectionPosition selAtLimit = \n\t\t\t(NaturalDirection(iMessage) > 0) ? sel.Limits().end : sel.Limits().start;\n\t\tsel.selType = Selection::selStream;\n\t\tsel.SetSelection(SelectionRange(selAtLimit));\n\t} else {\n\t\tif (!additionalSelectionTyping) {\n\t\t\tInvalidateWholeSelection();\n\t\t\tsel.DropAdditionalRanges();\n\t\t}\n\t\tfor (size_t r = 0; r < sel.Count(); r++) {\n\t\t\tconst SelectionPosition spCaretNow = sel.Range(r).caret;\n\t\t\tSelectionPosition spCaret = spCaretNow;\n\t\t\tswitch (iMessage) {\n\t\t\tcase SCI_CHARLEFT:\n\t\t\tcase SCI_CHARLEFTEXTEND:\n\t\t\t\tif (spCaret.VirtualSpace()) {\n\t\t\t\t\tspCaret.SetVirtualSpace(spCaret.VirtualSpace() - 1);\n\t\t\t\t} else if ((virtualSpaceOptions & SCVS_NOWRAPLINESTART) == 0 || pdoc->GetColumn(spCaret.Position()) > 0) {\n\t\t\t\t\tspCaret = SelectionPosition(spCaret.Position() - 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCI_CHARRIGHT:\n\t\t\tcase SCI_CHARRIGHTEXTEND:\n\t\t\t\tif ((virtualSpaceOptions & SCVS_USERACCESSIBLE) && pdoc->IsLineEndPosition(spCaret.Position())) {\n\t\t\t\t\tspCaret.SetVirtualSpace(spCaret.VirtualSpace() + 1);\n\t\t\t\t} else {\n\t\t\t\t\tspCaret = SelectionPosition(spCaret.Position() + 1);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase SCI_WORDLEFT:\n\t\t\tcase SCI_WORDLEFTEXTEND:\n\t\t\t\tspCaret = SelectionPosition(pdoc->NextWordStart(spCaret.Position(), -1));\n\t\t\t\tbreak;\n\t\t\tcase SCI_WORDRIGHT:\n\t\t\tcase SCI_WORDRIGHTEXTEND:\n\t\t\t\tspCaret = SelectionPosition(pdoc->NextWordStart(spCaret.Position(), 1));\n\t\t\t\tbreak;\n\t\t\tcase SCI_WORDLEFTEND:\n\t\t\tcase SCI_WORDLEFTENDEXTEND:\n\t\t\t\tspCaret = SelectionPosition(pdoc->NextWordEnd(spCaret.Position(), -1));\n\t\t\t\tbreak;\n\t\t\tcase SCI_WORDRIGHTEND:\n\t\t\tcase SCI_WORDRIGHTENDEXTEND:\n\t\t\t\tspCaret = SelectionPosition(pdoc->NextWordEnd(spCaret.Position(), 1));\n\t\t\t\tbreak;\n\t\t\tcase SCI_WORDPARTLEFT:\n\t\t\tcase SCI_WORDPARTLEFTEXTEND:\n\t\t\t\tspCaret = SelectionPosition(pdoc->WordPartLeft(spCaret.Position()));\n\t\t\t\tbreak;\n\t\t\tcase SCI_WORDPARTRIGHT:\n\t\t\tcase SCI_WORDPARTRIGHTEXTEND:\n\t\t\t\tspCaret = SelectionPosition(pdoc->WordPartRight(spCaret.Position()));\n\t\t\t\tbreak;\n\t\t\tcase SCI_HOME:\n\t\t\tcase SCI_HOMEEXTEND:\n\t\t\t\tspCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));\n\t\t\t\tbreak;\n\t\t\tcase SCI_HOMEDISPLAY:\n\t\t\tcase SCI_HOMEDISPLAYEXTEND:\n\t\t\t\tspCaret = SelectionPosition(StartEndDisplayLine(spCaret.Position(), true));\n\t\t\t\tbreak;\n\t\t\tcase SCI_HOMEWRAP:\n\t\t\tcase SCI_HOMEWRAPEXTEND:\n\t\t\t\tspCaret = MovePositionSoVisible(StartEndDisplayLine(spCaret.Position(), true), -1);\n\t\t\t\tif (spCaretNow <= spCaret)\n\t\t\t\t\tspCaret = SelectionPosition(pdoc->LineStart(pdoc->LineFromPosition(spCaret.Position())));\n\t\t\t\tbreak;\n\t\t\tcase SCI_VCHOME:\n\t\t\tcase SCI_VCHOMEEXTEND:\n\t\t\t\t// VCHome alternates between beginning of line and beginning of text so may move back or forwards\n\t\t\t\tspCaret = SelectionPosition(pdoc->VCHomePosition(spCaret.Position()));\n\t\t\t\tbreak;\n\t\t\tcase SCI_VCHOMEDISPLAY:\n\t\t\tcase SCI_VCHOMEDISPLAYEXTEND:\n\t\t\t\tspCaret = SelectionPosition(VCHomeDisplayPosition(spCaret.Position()));\n\t\t\t\tbreak;\n\t\t\tcase SCI_VCHOMEWRAP:\n\t\t\tcase SCI_VCHOMEWRAPEXTEND:\n\t\t\t\tspCaret = SelectionPosition(VCHomeWrapPosition(spCaret.Position()));\n\t\t\t\tbreak;\n\t\t\tcase SCI_LINEEND:\n\t\t\tcase SCI_LINEENDEXTEND:\n\t\t\t\tspCaret = SelectionPosition(pdoc->LineEndPosition(spCaret.Position()));\n\t\t\t\tbreak;\n\t\t\tcase SCI_LINEENDDISPLAY:\n\t\t\tcase SCI_LINEENDDISPLAYEXTEND:\n\t\t\t\tspCaret = SelectionPosition(StartEndDisplayLine(spCaret.Position(), false));\n\t\t\t\tbreak;\n\t\t\tcase SCI_LINEENDWRAP:\n\t\t\tcase SCI_LINEENDWRAPEXTEND:\n\t\t\t\tspCaret = SelectionPosition(LineEndWrapPosition(spCaret.Position()));\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tPLATFORM_ASSERT(false);\n\t\t\t}\n\n\t\t\tconst int directionMove = (spCaret < spCaretNow) ? -1 : 1;\n\t\t\tspCaret = MovePositionSoVisible(spCaret, directionMove);\n\n\t\t\t// Handle move versus extend, and special behaviour for non-empty left/right\n\t\t\tswitch (iMessage) {\n\t\t\tcase SCI_CHARLEFT:\n\t\t\tcase SCI_CHARRIGHT:\n\t\t\t\tif (sel.Range(r).Empty()) {\n\t\t\t\t\tsel.Range(r) = SelectionRange(spCaret);\n\t\t\t\t} else {\n\t\t\t\t\tsel.Range(r) = SelectionRange(\n\t\t\t\t\t\t(iMessage == SCI_CHARLEFT) ? sel.Range(r).Start() : sel.Range(r).End());\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase SCI_WORDLEFT:\n\t\t\tcase SCI_WORDRIGHT:\n\t\t\tcase SCI_WORDLEFTEND:\n\t\t\tcase SCI_WORDRIGHTEND:\n\t\t\tcase SCI_WORDPARTLEFT:\n\t\t\tcase SCI_WORDPARTRIGHT:\n\t\t\tcase SCI_HOME:\n\t\t\tcase SCI_HOMEDISPLAY:\n\t\t\tcase SCI_HOMEWRAP:\n\t\t\tcase SCI_VCHOME:\n\t\t\tcase SCI_VCHOMEDISPLAY:\n\t\t\tcase SCI_VCHOMEWRAP:\n\t\t\tcase SCI_LINEEND:\n\t\t\tcase SCI_LINEENDDISPLAY:\n\t\t\tcase SCI_LINEENDWRAP:\n\t\t\t\tsel.Range(r) = SelectionRange(spCaret);\n\t\t\t\tbreak;\n\n\t\t\tcase SCI_CHARLEFTEXTEND:\n\t\t\tcase SCI_CHARRIGHTEXTEND:\n\t\t\tcase SCI_WORDLEFTEXTEND:\n\t\t\tcase SCI_WORDRIGHTEXTEND:\n\t\t\tcase SCI_WORDLEFTENDEXTEND:\n\t\t\tcase SCI_WORDRIGHTENDEXTEND:\n\t\t\tcase SCI_WORDPARTLEFTEXTEND:\n\t\t\tcase SCI_WORDPARTRIGHTEXTEND:\n\t\t\tcase SCI_HOMEEXTEND:\n\t\t\tcase SCI_HOMEDISPLAYEXTEND:\n\t\t\tcase SCI_HOMEWRAPEXTEND:\n\t\t\tcase SCI_VCHOMEEXTEND:\n\t\t\tcase SCI_VCHOMEDISPLAYEXTEND:\n\t\t\tcase SCI_VCHOMEWRAPEXTEND:\n\t\t\tcase SCI_LINEENDEXTEND:\n\t\t\tcase SCI_LINEENDDISPLAYEXTEND:\n\t\t\tcase SCI_LINEENDWRAPEXTEND: {\n\t\t\t\tSelectionRange rangeNew = SelectionRange(spCaret, sel.Range(r).anchor);\n\t\t\t\tsel.TrimOtherSelections(r, SelectionRange(rangeNew));\n\t\t\t\tsel.Range(r) = rangeNew;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tPLATFORM_ASSERT(false);\n\t\t\t}\n\t\t}\n\t}\n\n\tsel.RemoveDuplicates();\n\n\tMovedCaret(sel.RangeMain().caret, SelectionPosition(INVALID_POSITION), true);\n\n\t// Invalidate the new state of the selection\n\tInvalidateWholeSelection();\n\n\tSetLastXChosen();\n\t// Need the line moving and so forth from MovePositionTo\n\treturn 0;\n}\n\nint Editor::DelWordOrLine(unsigned int iMessage) {\n\t// Virtual space may be realised for SCI_DELWORDRIGHT or SCI_DELWORDRIGHTEND\n\t// which means 2 actions so wrap in an undo group.\n\n\t// Rightwards and leftwards deletions differ in treatment of virtual space.\n\t// Clear virtual space for leftwards, realise for rightwards.\n\tconst bool leftwards = (iMessage == SCI_DELWORDLEFT) || (iMessage == SCI_DELLINELEFT);\n\n\tif (!additionalSelectionTyping) {\n\t\tInvalidateWholeSelection();\n\t\tsel.DropAdditionalRanges();\n\t}\n\n\tUndoGroup ug0(pdoc, (sel.Count() > 1) || !leftwards);\n\n\tfor (size_t r = 0; r < sel.Count(); r++) {\n\t\tif (leftwards) {\n\t\t\t// Delete to the left so first clear the virtual space.\n\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t} else {\n\t\t\t// Delete to the right so first realise the virtual space.\n\t\t\tsel.Range(r) = SelectionRange(\n\t\t\t\tRealizeVirtualSpace(sel.Range(r).caret));\n\t\t}\n\n\t\tRange rangeDelete;\n\t\tswitch (iMessage) {\n\t\tcase SCI_DELWORDLEFT:\n\t\t\trangeDelete = Range(\n\t\t\t\tpdoc->NextWordStart(sel.Range(r).caret.Position(), -1),\n\t\t\t\tsel.Range(r).caret.Position());\n\t\t\tbreak;\n\t\tcase SCI_DELWORDRIGHT:\n\t\t\trangeDelete = Range(\n\t\t\t\tsel.Range(r).caret.Position(),\n\t\t\t\tpdoc->NextWordStart(sel.Range(r).caret.Position(), 1));\n\t\t\tbreak;\n\t\tcase SCI_DELWORDRIGHTEND:\n\t\t\trangeDelete = Range(\n\t\t\t\tsel.Range(r).caret.Position(),\n\t\t\t\tpdoc->NextWordEnd(sel.Range(r).caret.Position(), 1));\n\t\t\tbreak;\n\t\tcase SCI_DELLINELEFT:\n\t\t\trangeDelete = Range(\n\t\t\t\tpdoc->LineStart(pdoc->LineFromPosition(sel.Range(r).caret.Position())),\n\t\t\t\tsel.Range(r).caret.Position());\n\t\t\tbreak;\n\t\tcase SCI_DELLINERIGHT:\n\t\t\trangeDelete = Range(\n\t\t\t\tsel.Range(r).caret.Position(),\n\t\t\t\tpdoc->LineEnd(pdoc->LineFromPosition(sel.Range(r).caret.Position())));\n\t\t\tbreak;\n\t\t}\n\t\tif (!RangeContainsProtected(rangeDelete.start, rangeDelete.end)) {\n\t\t\tpdoc->DeleteChars(rangeDelete.start, rangeDelete.end - rangeDelete.start);\n\t\t}\n\t}\n\n\t// May need something stronger here: can selections overlap at this point?\n\tsel.RemoveDuplicates();\n\n\tMovedCaret(sel.RangeMain().caret, SelectionPosition(INVALID_POSITION), true);\n\n\t// Invalidate the new state of the selection\n\tInvalidateWholeSelection();\n\n\tSetLastXChosen();\n\treturn 0;\n}\n\nint Editor::KeyCommand(unsigned int iMessage) {\n\tswitch (iMessage) {\n\tcase SCI_LINEDOWN:\n\t\tCursorUpOrDown(1, Selection::noSel);\n\t\tbreak;\n\tcase SCI_LINEDOWNEXTEND:\n\t\tCursorUpOrDown(1, Selection::selStream);\n\t\tbreak;\n\tcase SCI_LINEDOWNRECTEXTEND:\n\t\tCursorUpOrDown(1, Selection::selRectangle);\n\t\tbreak;\n\tcase SCI_PARADOWN:\n\t\tParaUpOrDown(1, Selection::noSel);\n\t\tbreak;\n\tcase SCI_PARADOWNEXTEND:\n\t\tParaUpOrDown(1, Selection::selStream);\n\t\tbreak;\n\tcase SCI_LINESCROLLDOWN:\n\t\tScrollTo(topLine + 1);\n\t\tMoveCaretInsideView(false);\n\t\tbreak;\n\tcase SCI_LINEUP:\n\t\tCursorUpOrDown(-1, Selection::noSel);\n\t\tbreak;\n\tcase SCI_LINEUPEXTEND:\n\t\tCursorUpOrDown(-1, Selection::selStream);\n\t\tbreak;\n\tcase SCI_LINEUPRECTEXTEND:\n\t\tCursorUpOrDown(-1, Selection::selRectangle);\n\t\tbreak;\n\tcase SCI_PARAUP:\n\t\tParaUpOrDown(-1, Selection::noSel);\n\t\tbreak;\n\tcase SCI_PARAUPEXTEND:\n\t\tParaUpOrDown(-1, Selection::selStream);\n\t\tbreak;\n\tcase SCI_LINESCROLLUP:\n\t\tScrollTo(topLine - 1);\n\t\tMoveCaretInsideView(false);\n\t\tbreak;\n\n\tcase SCI_CHARLEFT:\n\tcase SCI_CHARLEFTEXTEND:\n\tcase SCI_CHARLEFTRECTEXTEND:\n\tcase SCI_CHARRIGHT:\n\tcase SCI_CHARRIGHTEXTEND:\n\tcase SCI_CHARRIGHTRECTEXTEND:\n\tcase SCI_WORDLEFT:\n\tcase SCI_WORDLEFTEXTEND:\n\tcase SCI_WORDRIGHT:\n\tcase SCI_WORDRIGHTEXTEND:\n\tcase SCI_WORDLEFTEND:\n\tcase SCI_WORDLEFTENDEXTEND:\n\tcase SCI_WORDRIGHTEND:\n\tcase SCI_WORDRIGHTENDEXTEND:\n\tcase SCI_WORDPARTLEFT:\n\tcase SCI_WORDPARTLEFTEXTEND:\n\tcase SCI_WORDPARTRIGHT:\n\tcase SCI_WORDPARTRIGHTEXTEND:\n\tcase SCI_HOME:\n\tcase SCI_HOMEEXTEND:\n\tcase SCI_HOMERECTEXTEND:\n\tcase SCI_HOMEDISPLAY:\n\tcase SCI_HOMEDISPLAYEXTEND:\n\tcase SCI_HOMEWRAP:\n\tcase SCI_HOMEWRAPEXTEND:\n\tcase SCI_VCHOME:\n\tcase SCI_VCHOMEEXTEND:\n\tcase SCI_VCHOMERECTEXTEND:\n\tcase SCI_VCHOMEDISPLAY:\n\tcase SCI_VCHOMEDISPLAYEXTEND:\n\tcase SCI_VCHOMEWRAP:\n\tcase SCI_VCHOMEWRAPEXTEND:\n\tcase SCI_LINEEND:\n\tcase SCI_LINEENDEXTEND:\n\tcase SCI_LINEENDRECTEXTEND:\n\tcase SCI_LINEENDDISPLAY:\n\tcase SCI_LINEENDDISPLAYEXTEND:\n\tcase SCI_LINEENDWRAP:\n\tcase SCI_LINEENDWRAPEXTEND:\n\t\treturn HorizontalMove(iMessage);\n\n\tcase SCI_DOCUMENTSTART:\n\t\tMovePositionTo(0);\n\t\tSetLastXChosen();\n\t\tbreak;\n\tcase SCI_DOCUMENTSTARTEXTEND:\n\t\tMovePositionTo(0, Selection::selStream);\n\t\tSetLastXChosen();\n\t\tbreak;\n\tcase SCI_DOCUMENTEND:\n\t\tMovePositionTo(pdoc->Length());\n\t\tSetLastXChosen();\n\t\tbreak;\n\tcase SCI_DOCUMENTENDEXTEND:\n\t\tMovePositionTo(pdoc->Length(), Selection::selStream);\n\t\tSetLastXChosen();\n\t\tbreak;\n\tcase SCI_STUTTEREDPAGEUP:\n\t\tPageMove(-1, Selection::noSel, true);\n\t\tbreak;\n\tcase SCI_STUTTEREDPAGEUPEXTEND:\n\t\tPageMove(-1, Selection::selStream, true);\n\t\tbreak;\n\tcase SCI_STUTTEREDPAGEDOWN:\n\t\tPageMove(1, Selection::noSel, true);\n\t\tbreak;\n\tcase SCI_STUTTEREDPAGEDOWNEXTEND:\n\t\tPageMove(1, Selection::selStream, true);\n\t\tbreak;\n\tcase SCI_PAGEUP:\n\t\tPageMove(-1);\n\t\tbreak;\n\tcase SCI_PAGEUPEXTEND:\n\t\tPageMove(-1, Selection::selStream);\n\t\tbreak;\n\tcase SCI_PAGEUPRECTEXTEND:\n\t\tPageMove(-1, Selection::selRectangle);\n\t\tbreak;\n\tcase SCI_PAGEDOWN:\n\t\tPageMove(1);\n\t\tbreak;\n\tcase SCI_PAGEDOWNEXTEND:\n\t\tPageMove(1, Selection::selStream);\n\t\tbreak;\n\tcase SCI_PAGEDOWNRECTEXTEND:\n\t\tPageMove(1, Selection::selRectangle);\n\t\tbreak;\n\tcase SCI_EDITTOGGLEOVERTYPE:\n\t\tinOverstrike = !inOverstrike;\n\t\tShowCaretAtCurrentPosition();\n\t\tContainerNeedsUpdate(SC_UPDATE_CONTENT);\n\t\tNotifyUpdateUI();\n\t\tbreak;\n\tcase SCI_CANCEL:            \t// Cancel any modes - handled in subclass\n\t\t// Also unselect text\n\t\tCancelModes();\n\t\tif (sel.Count() > 1) {\n\t\t\t// Drop additional selections\n\t\t\tInvalidateWholeSelection();\n\t\t\tsel.DropAdditionalRanges();\n\t\t}\n\t\tbreak;\n\tcase SCI_DELETEBACK:\n\t\tDelCharBack(true);\n\t\tif ((caretSticky == SC_CARETSTICKY_OFF) || (caretSticky == SC_CARETSTICKY_WHITESPACE)) {\n\t\t\tSetLastXChosen();\n\t\t}\n\t\tEnsureCaretVisible();\n\t\tbreak;\n\tcase SCI_DELETEBACKNOTLINE:\n\t\tDelCharBack(false);\n\t\tif ((caretSticky == SC_CARETSTICKY_OFF) || (caretSticky == SC_CARETSTICKY_WHITESPACE)) {\n\t\t\tSetLastXChosen();\n\t\t}\n\t\tEnsureCaretVisible();\n\t\tbreak;\n\tcase SCI_TAB:\n\t\tIndent(true);\n\t\tif (caretSticky == SC_CARETSTICKY_OFF) {\n\t\t\tSetLastXChosen();\n\t\t}\n\t\tEnsureCaretVisible();\n\t\tShowCaretAtCurrentPosition();\t\t// Avoid blinking\n\t\tbreak;\n\tcase SCI_BACKTAB:\n\t\tIndent(false);\n\t\tif ((caretSticky == SC_CARETSTICKY_OFF) || (caretSticky == SC_CARETSTICKY_WHITESPACE)) {\n\t\t\tSetLastXChosen();\n\t\t}\n\t\tEnsureCaretVisible();\n\t\tShowCaretAtCurrentPosition();\t\t// Avoid blinking\n\t\tbreak;\n\tcase SCI_NEWLINE:\n\t\tNewLine();\n\t\tbreak;\n\tcase SCI_FORMFEED:\n\t\tAddChar('\\f');\n\t\tbreak;\n\tcase SCI_ZOOMIN:\n\t\tif (vs.zoomLevel < 20) {\n\t\t\tvs.zoomLevel++;\n\t\t\tInvalidateStyleRedraw();\n\t\t\tNotifyZoom();\n\t\t}\n\t\tbreak;\n\tcase SCI_ZOOMOUT:\n\t\tif (vs.zoomLevel > -10) {\n\t\t\tvs.zoomLevel--;\n\t\t\tInvalidateStyleRedraw();\n\t\t\tNotifyZoom();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_DELWORDLEFT:\n\tcase SCI_DELWORDRIGHT:\n\tcase SCI_DELWORDRIGHTEND:\n\tcase SCI_DELLINELEFT:\n\tcase SCI_DELLINERIGHT:\n\t\treturn DelWordOrLine(iMessage);\n\n\tcase SCI_LINECOPY: {\n\t\t\tint lineStart = pdoc->LineFromPosition(SelectionStart().Position());\n\t\t\tint lineEnd = pdoc->LineFromPosition(SelectionEnd().Position());\n\t\t\tCopyRangeToClipboard(pdoc->LineStart(lineStart),\n\t\t\t        pdoc->LineStart(lineEnd + 1));\n\t\t}\n\t\tbreak;\n\tcase SCI_LINECUT: {\n\t\t\tint lineStart = pdoc->LineFromPosition(SelectionStart().Position());\n\t\t\tint lineEnd = pdoc->LineFromPosition(SelectionEnd().Position());\n\t\t\tint start = pdoc->LineStart(lineStart);\n\t\t\tint end = pdoc->LineStart(lineEnd + 1);\n\t\t\tSetSelection(start, end);\n\t\t\tCut();\n\t\t\tSetLastXChosen();\n\t\t}\n\t\tbreak;\n\tcase SCI_LINEDELETE: {\n\t\t\tint line = pdoc->LineFromPosition(sel.MainCaret());\n\t\t\tint start = pdoc->LineStart(line);\n\t\t\tint end = pdoc->LineStart(line + 1);\n\t\t\tpdoc->DeleteChars(start, end - start);\n\t\t}\n\t\tbreak;\n\tcase SCI_LINETRANSPOSE:\n\t\tLineTranspose();\n\t\tbreak;\n\tcase SCI_LINEDUPLICATE:\n\t\tDuplicate(true);\n\t\tbreak;\n\tcase SCI_SELECTIONDUPLICATE:\n\t\tDuplicate(false);\n\t\tbreak;\n\tcase SCI_LOWERCASE:\n\t\tChangeCaseOfSelection(cmLower);\n\t\tbreak;\n\tcase SCI_UPPERCASE:\n\t\tChangeCaseOfSelection(cmUpper);\n\t\tbreak;\n\tcase SCI_SCROLLTOSTART:\n\t\tScrollTo(0);\n\t\tbreak;\n\tcase SCI_SCROLLTOEND:\n\t\tScrollTo(MaxScrollPos());\n\t\tbreak;\n\t}\n\treturn 0;\n}\n\nint Editor::KeyDefault(int, int) {\n\treturn 0;\n}\n\nint Editor::KeyDownWithModifiers(int key, int modifiers, bool *consumed) {\n\tDwellEnd(false);\n\tint msg = kmap.Find(key, modifiers);\n\tif (msg) {\n\t\tif (consumed)\n\t\t\t*consumed = true;\n\t\treturn static_cast<int>(WndProc(msg, 0, 0));\n\t} else {\n\t\tif (consumed)\n\t\t\t*consumed = false;\n\t\treturn KeyDefault(key, modifiers);\n\t}\n}\n\nint Editor::KeyDown(int key, bool shift, bool ctrl, bool alt, bool *consumed) {\n\treturn KeyDownWithModifiers(key, ModifierFlags(shift, ctrl, alt), consumed);\n}\n\nvoid Editor::Indent(bool forwards) {\n\tUndoGroup ug(pdoc);\n\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\tint lineOfAnchor = pdoc->LineFromPosition(sel.Range(r).anchor.Position());\n\t\tint caretPosition = sel.Range(r).caret.Position();\n\t\tint lineCurrentPos = pdoc->LineFromPosition(caretPosition);\n\t\tif (lineOfAnchor == lineCurrentPos) {\n\t\t\tif (forwards) {\n\t\t\t\tpdoc->DeleteChars(sel.Range(r).Start().Position(), sel.Range(r).Length());\n\t\t\t\tcaretPosition = sel.Range(r).caret.Position();\n\t\t\t\tif (pdoc->GetColumn(caretPosition) <= pdoc->GetColumn(pdoc->GetLineIndentPosition(lineCurrentPos)) &&\n\t\t\t\t\t\tpdoc->tabIndents) {\n\t\t\t\t\tint indentation = pdoc->GetLineIndentation(lineCurrentPos);\n\t\t\t\t\tint indentationStep = pdoc->IndentSize();\n\t\t\t\t\tconst int posSelect = pdoc->SetLineIndentation(\n\t\t\t\t\t\tlineCurrentPos, indentation + indentationStep - indentation % indentationStep);\n\t\t\t\t\tsel.Range(r) = SelectionRange(posSelect);\n\t\t\t\t} else {\n\t\t\t\t\tif (pdoc->useTabs) {\n\t\t\t\t\t\tconst int lengthInserted = pdoc->InsertString(caretPosition, \"\\t\", 1);\n\t\t\t\t\t\tsel.Range(r) = SelectionRange(caretPosition + lengthInserted);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tint numSpaces = (pdoc->tabInChars) -\n\t\t\t\t\t\t\t\t(pdoc->GetColumn(caretPosition) % (pdoc->tabInChars));\n\t\t\t\t\t\tif (numSpaces < 1)\n\t\t\t\t\t\t\tnumSpaces = pdoc->tabInChars;\n\t\t\t\t\t\tconst std::string spaceText(numSpaces, ' ');\n\t\t\t\t\t\tconst int lengthInserted = pdoc->InsertString(caretPosition, spaceText.c_str(),\n\t\t\t\t\t\t\tstatic_cast<int>(spaceText.length()));\n\t\t\t\t\t\tsel.Range(r) = SelectionRange(caretPosition + lengthInserted);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (pdoc->GetColumn(caretPosition) <= pdoc->GetLineIndentation(lineCurrentPos) &&\n\t\t\t\t\t\tpdoc->tabIndents) {\n\t\t\t\t\tint indentation = pdoc->GetLineIndentation(lineCurrentPos);\n\t\t\t\t\tint indentationStep = pdoc->IndentSize();\n\t\t\t\t\tconst int posSelect = pdoc->SetLineIndentation(lineCurrentPos, indentation - indentationStep);\n\t\t\t\t\tsel.Range(r) = SelectionRange(posSelect);\n\t\t\t\t} else {\n\t\t\t\t\tint newColumn = ((pdoc->GetColumn(caretPosition) - 1) / pdoc->tabInChars) *\n\t\t\t\t\t\t\tpdoc->tabInChars;\n\t\t\t\t\tif (newColumn < 0)\n\t\t\t\t\t\tnewColumn = 0;\n\t\t\t\t\tint newPos = caretPosition;\n\t\t\t\t\twhile (pdoc->GetColumn(newPos) > newColumn)\n\t\t\t\t\t\tnewPos--;\n\t\t\t\t\tsel.Range(r) = SelectionRange(newPos);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\t// Multiline\n\t\t\tint anchorPosOnLine = sel.Range(r).anchor.Position() - pdoc->LineStart(lineOfAnchor);\n\t\t\tint currentPosPosOnLine = caretPosition - pdoc->LineStart(lineCurrentPos);\n\t\t\t// Multiple lines selected so indent / dedent\n\t\t\tint lineTopSel = Platform::Minimum(lineOfAnchor, lineCurrentPos);\n\t\t\tint lineBottomSel = Platform::Maximum(lineOfAnchor, lineCurrentPos);\n\t\t\tif (pdoc->LineStart(lineBottomSel) == sel.Range(r).anchor.Position() || pdoc->LineStart(lineBottomSel) == caretPosition)\n\t\t\t\tlineBottomSel--;  \t// If not selecting any characters on a line, do not indent\n\t\t\tpdoc->Indent(forwards, lineBottomSel, lineTopSel);\n\t\t\tif (lineOfAnchor < lineCurrentPos) {\n\t\t\t\tif (currentPosPosOnLine == 0)\n\t\t\t\t\tsel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor));\n\t\t\t\telse\n\t\t\t\t\tsel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos + 1), pdoc->LineStart(lineOfAnchor));\n\t\t\t} else {\n\t\t\t\tif (anchorPosOnLine == 0)\n\t\t\t\t\tsel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor));\n\t\t\t\telse\n\t\t\t\t\tsel.Range(r) = SelectionRange(pdoc->LineStart(lineCurrentPos), pdoc->LineStart(lineOfAnchor + 1));\n\t\t\t}\n\t\t}\n\t}\n\tContainerNeedsUpdate(SC_UPDATE_SELECTION);\n}\n\nclass CaseFolderASCII : public CaseFolderTable {\npublic:\n\tCaseFolderASCII() {\n\t\tStandardASCII();\n\t}\n\t~CaseFolderASCII() {\n\t}\n};\n\n\nCaseFolder *Editor::CaseFolderForEncoding() {\n\t// Simple default that only maps ASCII upper case to lower case.\n\treturn new CaseFolderASCII();\n}\n\n/**\n * Search of a text in the document, in the given range.\n * @return The position of the found text, -1 if not found.\n */\nlong Editor::FindText(\n    uptr_t wParam,\t\t///< Search modes : @c SCFIND_MATCHCASE, @c SCFIND_WHOLEWORD,\n    ///< @c SCFIND_WORDSTART, @c SCFIND_REGEXP or @c SCFIND_POSIX.\n    sptr_t lParam) {\t///< @c Sci_TextToFind structure: The text to search for in the given range.\n\n\tSci_TextToFind *ft = reinterpret_cast<Sci_TextToFind *>(lParam);\n\tint lengthFound = istrlen(ft->lpstrText);\n\tif (!pdoc->HasCaseFolder())\n\t\tpdoc->SetCaseFolder(CaseFolderForEncoding());\n\ttry {\n\t\tlong pos = pdoc->FindText(\n\t\t\tstatic_cast<int>(ft->chrg.cpMin),\n\t\t\tstatic_cast<int>(ft->chrg.cpMax),\n\t\t\tft->lpstrText,\n\t\t\tstatic_cast<int>(wParam),\n\t\t\t&lengthFound);\n\t\tif (pos != -1) {\n\t\t\tft->chrgText.cpMin = pos;\n\t\t\tft->chrgText.cpMax = pos + lengthFound;\n\t\t}\n\t\treturn static_cast<int>(pos);\n\t} catch (RegexError &) {\n\t\terrorStatus = SC_STATUS_WARN_REGEX;\n\t\treturn -1;\n\t}\n}\n\n/**\n * Relocatable search support : Searches relative to current selection\n * point and sets the selection to the found text range with\n * each search.\n */\n/**\n * Anchor following searches at current selection start: This allows\n * multiple incremental interactive searches to be macro recorded\n * while still setting the selection to found text so the find/select\n * operation is self-contained.\n */\nvoid Editor::SearchAnchor() {\n\tsearchAnchor = SelectionStart().Position();\n}\n\n/**\n * Find text from current search anchor: Must call @c SearchAnchor first.\n * Used for next text and previous text requests.\n * @return The position of the found text, -1 if not found.\n */\nlong Editor::SearchText(\n    unsigned int iMessage,\t\t///< Accepts both @c SCI_SEARCHNEXT and @c SCI_SEARCHPREV.\n    uptr_t wParam,\t\t\t\t///< Search modes : @c SCFIND_MATCHCASE, @c SCFIND_WHOLEWORD,\n    ///< @c SCFIND_WORDSTART, @c SCFIND_REGEXP or @c SCFIND_POSIX.\n    sptr_t lParam) {\t\t\t///< The text to search for.\n\n\tconst char *txt = reinterpret_cast<char *>(lParam);\n\tlong pos;\n\tint lengthFound = istrlen(txt);\n\tif (!pdoc->HasCaseFolder())\n\t\tpdoc->SetCaseFolder(CaseFolderForEncoding());\n\ttry {\n\t\tif (iMessage == SCI_SEARCHNEXT) {\n\t\t\tpos = pdoc->FindText(searchAnchor, pdoc->Length(), txt,\n\t\t\t\t\tstatic_cast<int>(wParam),\n\t\t\t\t\t&lengthFound);\n\t\t} else {\n\t\t\tpos = pdoc->FindText(searchAnchor, 0, txt,\n\t\t\t\t\tstatic_cast<int>(wParam),\n\t\t\t\t\t&lengthFound);\n\t\t}\n\t} catch (RegexError &) {\n\t\terrorStatus = SC_STATUS_WARN_REGEX;\n\t\treturn -1;\n\t}\n\tif (pos != -1) {\n\t\tSetSelection(static_cast<int>(pos), static_cast<int>(pos + lengthFound));\n\t}\n\n\treturn pos;\n}\n\nstd::string Editor::CaseMapString(const std::string &s, int caseMapping) {\n\tstd::string ret(s);\n\tfor (size_t i=0; i<ret.size(); i++) {\n\t\tswitch (caseMapping) {\n\t\t\tcase cmUpper:\n\t\t\t\tif (ret[i] >= 'a' && ret[i] <= 'z')\n\t\t\t\t\tret[i] = static_cast<char>(ret[i] - 'a' + 'A');\n\t\t\t\tbreak;\n\t\t\tcase cmLower:\n\t\t\t\tif (ret[i] >= 'A' && ret[i] <= 'Z')\n\t\t\t\t\tret[i] = static_cast<char>(ret[i] - 'A' + 'a');\n\t\t\t\tbreak;\n\t\t}\n\t}\n\treturn ret;\n}\n\n/**\n * Search for text in the target range of the document.\n * @return The position of the found text, -1 if not found.\n */\nlong Editor::SearchInTarget(const char *text, int length) {\n\tint lengthFound = length;\n\n\tif (!pdoc->HasCaseFolder())\n\t\tpdoc->SetCaseFolder(CaseFolderForEncoding());\n\ttry {\n\t\tlong pos = pdoc->FindText(targetStart, targetEnd, text,\n\t\t\t\tsearchFlags,\n\t\t\t\t&lengthFound);\n\t\tif (pos != -1) {\n\t\t\ttargetStart = static_cast<int>(pos);\n\t\t\ttargetEnd = static_cast<int>(pos + lengthFound);\n\t\t}\n\t\treturn pos;\n\t} catch (RegexError &) {\n\t\terrorStatus = SC_STATUS_WARN_REGEX;\n\t\treturn -1;\n\t}\n}\n\nvoid Editor::GoToLine(int lineNo) {\n\tif (lineNo > pdoc->LinesTotal())\n\t\tlineNo = pdoc->LinesTotal();\n\tif (lineNo < 0)\n\t\tlineNo = 0;\n\tSetEmptySelection(pdoc->LineStart(lineNo));\n\tShowCaretAtCurrentPosition();\n\tEnsureCaretVisible();\n}\n\nstatic bool Close(Point pt1, Point pt2, Point threshold) {\n\tif (std::abs(pt1.x - pt2.x) > threshold.x)\n\t\treturn false;\n\tif (std::abs(pt1.y - pt2.y) > threshold.y)\n\t\treturn false;\n\treturn true;\n}\n\nstd::string Editor::RangeText(int start, int end) const {\n\tif (start < end) {\n\t\tint len = end - start;\n\t\tstd::string ret(len, '\\0');\n\t\tfor (int i = 0; i < len; i++) {\n\t\t\tret[i] = pdoc->CharAt(start + i);\n\t\t}\n\t\treturn ret;\n\t}\n\treturn std::string();\n}\n\nvoid Editor::CopySelectionRange(SelectionText *ss, bool allowLineCopy) {\n\tif (sel.Empty()) {\n\t\tif (allowLineCopy) {\n\t\t\tint currentLine = pdoc->LineFromPosition(sel.MainCaret());\n\t\t\tint start = pdoc->LineStart(currentLine);\n\t\t\tint end = pdoc->LineEnd(currentLine);\n\n\t\t\tstd::string text = RangeText(start, end);\n\t\t\tif (pdoc->eolMode != SC_EOL_LF)\n\t\t\t\ttext.push_back('\\r');\n\t\t\tif (pdoc->eolMode != SC_EOL_CR)\n\t\t\t\ttext.push_back('\\n');\n\t\t\tss->Copy(text, pdoc->dbcsCodePage,\n\t\t\t\tvs.styles[STYLE_DEFAULT].characterSet, false, true);\n\t\t}\n\t} else {\n\t\tstd::string text;\n\t\tstd::vector<SelectionRange> rangesInOrder = sel.RangesCopy();\n\t\tif (sel.selType == Selection::selRectangle)\n\t\t\tstd::sort(rangesInOrder.begin(), rangesInOrder.end());\n\t\tfor (size_t r=0; r<rangesInOrder.size(); r++) {\n\t\t\tSelectionRange current = rangesInOrder[r];\n\t\t\ttext.append(RangeText(current.Start().Position(), current.End().Position()));\n\t\t\tif (sel.selType == Selection::selRectangle) {\n\t\t\t\tif (pdoc->eolMode != SC_EOL_LF)\n\t\t\t\t\ttext.push_back('\\r');\n\t\t\t\tif (pdoc->eolMode != SC_EOL_CR)\n\t\t\t\t\ttext.push_back('\\n');\n\t\t\t}\n\t\t}\n\t\tss->Copy(text, pdoc->dbcsCodePage,\n\t\t\tvs.styles[STYLE_DEFAULT].characterSet, sel.IsRectangular(), sel.selType == Selection::selLines);\n\t}\n}\n\nvoid Editor::CopyRangeToClipboard(int start, int end) {\n\tstart = pdoc->ClampPositionIntoDocument(start);\n\tend = pdoc->ClampPositionIntoDocument(end);\n\tSelectionText selectedText;\n\tstd::string text = RangeText(start, end);\n\tselectedText.Copy(text,\n\t\tpdoc->dbcsCodePage, vs.styles[STYLE_DEFAULT].characterSet, false, false);\n\tCopyToClipboard(selectedText);\n}\n\nvoid Editor::CopyText(int length, const char *text) {\n\tSelectionText selectedText;\n\tselectedText.Copy(std::string(text, length),\n\t\tpdoc->dbcsCodePage, vs.styles[STYLE_DEFAULT].characterSet, false, false);\n\tCopyToClipboard(selectedText);\n}\n\nvoid Editor::SetDragPosition(SelectionPosition newPos) {\n\tif (newPos.Position() >= 0) {\n\t\tnewPos = MovePositionOutsideChar(newPos, 1);\n\t\tposDrop = newPos;\n\t}\n\tif (!(posDrag == newPos)) {\n\t\tcaret.on = true;\n\t\tif (FineTickerAvailable()) {\n\t\t\tFineTickerCancel(tickCaret);\n\t\t\tif ((caret.active) && (caret.period > 0) && (newPos.Position() < 0))\n\t\t\t\tFineTickerStart(tickCaret, caret.period, caret.period/10);\n\t\t} else {\n\t\t\tSetTicking(true);\n\t\t}\n\t\tInvalidateCaret();\n\t\tposDrag = newPos;\n\t\tInvalidateCaret();\n\t}\n}\n\nvoid Editor::DisplayCursor(Window::Cursor c) {\n\tif (cursorMode == SC_CURSORNORMAL)\n\t\twMain.SetCursor(c);\n\telse\n\t\twMain.SetCursor(static_cast<Window::Cursor>(cursorMode));\n}\n\nbool Editor::DragThreshold(Point ptStart, Point ptNow) {\n\tint xMove = static_cast<int>(ptStart.x - ptNow.x);\n\tint yMove = static_cast<int>(ptStart.y - ptNow.y);\n\tint distanceSquared = xMove * xMove + yMove * yMove;\n\treturn distanceSquared > 16;\n}\n\nvoid Editor::StartDrag() {\n\t// Always handled by subclasses\n\t//SetMouseCapture(true);\n\t//DisplayCursor(Window::cursorArrow);\n}\n\nvoid Editor::DropAt(SelectionPosition position, const char *value, size_t lengthValue, bool moving, bool rectangular) {\n\t//Platform::DebugPrintf(\"DropAt %d %d\\n\", inDragDrop, position);\n\tif (inDragDrop == ddDragging)\n\t\tdropWentOutside = false;\n\n\tbool positionWasInSelection = PositionInSelection(position.Position());\n\n\tbool positionOnEdgeOfSelection =\n\t    (position == SelectionStart()) || (position == SelectionEnd());\n\n\tif ((inDragDrop != ddDragging) || !(positionWasInSelection) ||\n\t        (positionOnEdgeOfSelection && !moving)) {\n\n\t\tSelectionPosition selStart = SelectionStart();\n\t\tSelectionPosition selEnd = SelectionEnd();\n\n\t\tUndoGroup ug(pdoc);\n\n\t\tSelectionPosition positionAfterDeletion = position;\n\t\tif ((inDragDrop == ddDragging) && moving) {\n\t\t\t// Remove dragged out text\n\t\t\tif (rectangular || sel.selType == Selection::selLines) {\n\t\t\t\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\t\t\t\tif (position >= sel.Range(r).Start()) {\n\t\t\t\t\t\tif (position > sel.Range(r).End()) {\n\t\t\t\t\t\t\tpositionAfterDeletion.Add(-sel.Range(r).Length());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tpositionAfterDeletion.Add(-SelectionRange(position, sel.Range(r).Start()).Length());\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (position > selStart) {\n\t\t\t\t\tpositionAfterDeletion.Add(-SelectionRange(selEnd, selStart).Length());\n\t\t\t\t}\n\t\t\t}\n\t\t\tClearSelection();\n\t\t}\n\t\tposition = positionAfterDeletion;\n\n\t\tstd::string convertedText = Document::TransformLineEnds(value, lengthValue, pdoc->eolMode);\n\n\t\tif (rectangular) {\n\t\t\tPasteRectangular(position, convertedText.c_str(), static_cast<int>(convertedText.length()));\n\t\t\t// Should try to select new rectangle but it may not be a rectangle now so just select the drop position\n\t\t\tSetEmptySelection(position);\n\t\t} else {\n\t\t\tposition = MovePositionOutsideChar(position, sel.MainCaret() - position.Position());\n\t\t\tposition = RealizeVirtualSpace(position);\n\t\t\tconst int lengthInserted = pdoc->InsertString(\n\t\t\t\tposition.Position(), convertedText.c_str(), static_cast<int>(convertedText.length()));\n\t\t\tif (lengthInserted > 0) {\n\t\t\t\tSelectionPosition posAfterInsertion = position;\n\t\t\t\tposAfterInsertion.Add(lengthInserted);\n\t\t\t\tSetSelection(posAfterInsertion, position);\n\t\t\t}\n\t\t}\n\t} else if (inDragDrop == ddDragging) {\n\t\tSetEmptySelection(position);\n\t}\n}\n\nvoid Editor::DropAt(SelectionPosition position, const char *value, bool moving, bool rectangular) {\n\tDropAt(position, value, strlen(value), moving, rectangular);\n}\n\n/**\n * @return true if given position is inside the selection,\n */\nbool Editor::PositionInSelection(int pos) {\n\tpos = MovePositionOutsideChar(pos, sel.MainCaret() - pos);\n\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\tif (sel.Range(r).Contains(pos))\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n\nbool Editor::PointInSelection(Point pt) {\n\tSelectionPosition pos = SPositionFromLocation(pt, false, true);\n\tPoint ptPos = LocationFromPosition(pos);\n\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\tSelectionRange range = sel.Range(r);\n\t\tif (range.Contains(pos)) {\n\t\t\tbool hit = true;\n\t\t\tif (pos == range.Start()) {\n\t\t\t\t// see if just before selection\n\t\t\t\tif (pt.x < ptPos.x) {\n\t\t\t\t\thit = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pos == range.End()) {\n\t\t\t\t// see if just after selection\n\t\t\t\tif (pt.x > ptPos.x) {\n\t\t\t\t\thit = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (hit)\n\t\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nbool Editor::PointInSelMargin(Point pt) const {\n\t// Really means: \"Point in a margin\"\n\tif (vs.fixedColumnWidth > 0) {\t// There is a margin\n\t\tPRectangle rcSelMargin = GetClientRectangle();\n\t\trcSelMargin.right = static_cast<XYPOSITION>(vs.textStart - vs.leftMarginWidth);\n\t\trcSelMargin.left = static_cast<XYPOSITION>(vs.textStart - vs.fixedColumnWidth);\n\t\treturn rcSelMargin.ContainsWholePixel(pt);\n\t} else {\n\t\treturn false;\n\t}\n}\n\nWindow::Cursor Editor::GetMarginCursor(Point pt) const {\n\tint x = 0;\n\tfor (size_t margin = 0; margin < vs.ms.size(); margin++) {\n\t\tif ((pt.x >= x) && (pt.x < x + vs.ms[margin].width))\n\t\t\treturn static_cast<Window::Cursor>(vs.ms[margin].cursor);\n\t\tx += vs.ms[margin].width;\n\t}\n\treturn Window::cursorReverseArrow;\n}\n\nvoid Editor::TrimAndSetSelection(int currentPos_, int anchor_) {\n\tsel.TrimSelection(SelectionRange(currentPos_, anchor_));\n\tSetSelection(currentPos_, anchor_);\n}\n\nvoid Editor::LineSelection(int lineCurrentPos_, int lineAnchorPos_, bool wholeLine) {\n\tint selCurrentPos, selAnchorPos;\n\tif (wholeLine) {\n\t\tint lineCurrent_ = pdoc->LineFromPosition(lineCurrentPos_);\n\t\tint lineAnchor_ = pdoc->LineFromPosition(lineAnchorPos_);\n\t\tif (lineAnchorPos_ < lineCurrentPos_) {\n\t\t\tselCurrentPos = pdoc->LineStart(lineCurrent_ + 1);\n\t\t\tselAnchorPos = pdoc->LineStart(lineAnchor_);\n\t\t} else if (lineAnchorPos_ > lineCurrentPos_) {\n\t\t\tselCurrentPos = pdoc->LineStart(lineCurrent_);\n\t\t\tselAnchorPos = pdoc->LineStart(lineAnchor_ + 1);\n\t\t} else { // Same line, select it\n\t\t\tselCurrentPos = pdoc->LineStart(lineAnchor_ + 1);\n\t\t\tselAnchorPos = pdoc->LineStart(lineAnchor_);\n\t\t}\n\t} else {\n\t\tif (lineAnchorPos_ < lineCurrentPos_) {\n\t\t\tselCurrentPos = StartEndDisplayLine(lineCurrentPos_, false) + 1;\n\t\t\tselCurrentPos = pdoc->MovePositionOutsideChar(selCurrentPos, 1);\n\t\t\tselAnchorPos = StartEndDisplayLine(lineAnchorPos_, true);\n\t\t} else if (lineAnchorPos_ > lineCurrentPos_) {\n\t\t\tselCurrentPos = StartEndDisplayLine(lineCurrentPos_, true);\n\t\t\tselAnchorPos = StartEndDisplayLine(lineAnchorPos_, false) + 1;\n\t\t\tselAnchorPos = pdoc->MovePositionOutsideChar(selAnchorPos, 1);\n\t\t} else { // Same line, select it\n\t\t\tselCurrentPos = StartEndDisplayLine(lineAnchorPos_, false) + 1;\n\t\t\tselCurrentPos = pdoc->MovePositionOutsideChar(selCurrentPos, 1);\n\t\t\tselAnchorPos = StartEndDisplayLine(lineAnchorPos_, true);\n\t\t}\n\t}\n\tTrimAndSetSelection(selCurrentPos, selAnchorPos);\n}\n\nvoid Editor::WordSelection(int pos) {\n\tif (pos < wordSelectAnchorStartPos) {\n\t\t// Extend backward to the word containing pos.\n\t\t// Skip ExtendWordSelect if the line is empty or if pos is after the last character.\n\t\t// This ensures that a series of empty lines isn't counted as a single \"word\".\n\t\tif (!pdoc->IsLineEndPosition(pos))\n\t\t\tpos = pdoc->ExtendWordSelect(pdoc->MovePositionOutsideChar(pos + 1, 1), -1);\n\t\tTrimAndSetSelection(pos, wordSelectAnchorEndPos);\n\t} else if (pos > wordSelectAnchorEndPos) {\n\t\t// Extend forward to the word containing the character to the left of pos.\n\t\t// Skip ExtendWordSelect if the line is empty or if pos is the first position on the line.\n\t\t// This ensures that a series of empty lines isn't counted as a single \"word\".\n\t\tif (pos > pdoc->LineStart(pdoc->LineFromPosition(pos)))\n\t\t\tpos = pdoc->ExtendWordSelect(pdoc->MovePositionOutsideChar(pos - 1, -1), 1);\n\t\tTrimAndSetSelection(pos, wordSelectAnchorStartPos);\n\t} else {\n\t\t// Select only the anchored word\n\t\tif (pos >= originalAnchorPos)\n\t\t\tTrimAndSetSelection(wordSelectAnchorEndPos, wordSelectAnchorStartPos);\n\t\telse\n\t\t\tTrimAndSetSelection(wordSelectAnchorStartPos, wordSelectAnchorEndPos);\n\t}\n}\n\nvoid Editor::DwellEnd(bool mouseMoved) {\n\tif (mouseMoved)\n\t\tticksToDwell = dwellDelay;\n\telse\n\t\tticksToDwell = SC_TIME_FOREVER;\n\tif (dwelling && (dwellDelay < SC_TIME_FOREVER)) {\n\t\tdwelling = false;\n\t\tNotifyDwelling(ptMouseLast, dwelling);\n\t}\n\tif (FineTickerAvailable()) {\n\t\tFineTickerCancel(tickDwell);\n\t\tif (mouseMoved && (dwellDelay < SC_TIME_FOREVER)) {\n\t\t\t//FineTickerStart(tickDwell, dwellDelay, dwellDelay/10);\n\t\t}\n\t}\n}\n\nvoid Editor::MouseLeave() {\n\tSetHotSpotRange(NULL);\n\tif (!HaveMouseCapture()) {\n\t\tptMouseLast = Point(-1,-1);\n\t\tDwellEnd(true);\n\t}\n}\n\nstatic bool AllowVirtualSpace(int virtualSpaceOptions, bool rectangular) {\n\treturn (!rectangular && ((virtualSpaceOptions & SCVS_USERACCESSIBLE) != 0))\n\t\t|| (rectangular && ((virtualSpaceOptions & SCVS_RECTANGULARSELECTION) != 0));\n}\n\nvoid Editor::ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) {\n\tSetHoverIndicatorPoint(pt);\n\t//Platform::DebugPrintf(\"ButtonDown %d %d = %d alt=%d %d\\n\", curTime, lastClickTime, curTime - lastClickTime, alt, inDragDrop);\n\tptMouseLast = pt;\n\tconst bool ctrl = (modifiers & SCI_CTRL) != 0;\n\tconst bool shift = (modifiers & SCI_SHIFT) != 0;\n\tconst bool alt = (modifiers & SCI_ALT) != 0;\n\tSelectionPosition newPos = SPositionFromLocation(pt, false, false, AllowVirtualSpace(virtualSpaceOptions, alt));\n\tnewPos = MovePositionOutsideChar(newPos, sel.MainCaret() - newPos.Position());\n\tSelectionPosition newCharPos = SPositionFromLocation(pt, false, true, false);\n\tnewCharPos = MovePositionOutsideChar(newCharPos, -1);\n\tinDragDrop = ddNone;\n\tsel.SetMoveExtends(false);\n\n\tif (NotifyMarginClick(pt, modifiers))\n\t\treturn;\n\n\tNotifyIndicatorClick(true, newPos.Position(), modifiers);\n\n\tbool inSelMargin = PointInSelMargin(pt);\n\t// In margin ctrl+(double)click should always select everything\n\tif (ctrl && inSelMargin) {\n\t\tSelectAll();\n\t\tlastClickTime = curTime;\n\t\tlastClick = pt;\n\t\treturn;\n\t}\n\tif (shift && !inSelMargin) {\n\t\tSetSelection(newPos);\n\t}\n\tif (((curTime - lastClickTime) < Platform::DoubleClickTime()) && Close(pt, lastClick, doubleClickCloseThreshold)) {\n\t\t//Platform::DebugPrintf(\"Double click %d %d = %d\\n\", curTime, lastClickTime, curTime - lastClickTime);\n\t\tSetMouseCapture(true);\n\t\tif (FineTickerAvailable()) {\n\t\t\tFineTickerStart(tickScroll, 100, 10);\n\t\t}\n\t\tif (!ctrl || !multipleSelection || (selectionType != selChar && selectionType != selWord))\n\t\t\tSetEmptySelection(newPos.Position());\n\t\tbool doubleClick = false;\n\t\t// Stop mouse button bounce changing selection type\n\t\tif (!Platform::MouseButtonBounce() || curTime != lastClickTime) {\n\t\t\tif (inSelMargin) {\n\t\t\t\t// Inside margin selection type should be either selSubLine or selWholeLine.\n\t\t\t\tif (selectionType == selSubLine) {\n\t\t\t\t\t// If it is selSubLine, we're inside a *double* click and word wrap is enabled,\n\t\t\t\t\t// so we switch to selWholeLine in order to select whole line.\n\t\t\t\t\tselectionType = selWholeLine;\n\t\t\t\t} else if (selectionType != selSubLine && selectionType != selWholeLine) {\n\t\t\t\t\t// If it is neither, reset selection type to line selection.\n\t\t\t\t\tselectionType = (Wrapping() && (marginOptions & SC_MARGINOPTION_SUBLINESELECT)) ? selSubLine : selWholeLine;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (selectionType == selChar) {\n\t\t\t\t\tselectionType = selWord;\n\t\t\t\t\tdoubleClick = true;\n\t\t\t\t} else if (selectionType == selWord) {\n\t\t\t\t\t// Since we ended up here, we're inside a *triple* click, which should always select\n\t\t\t\t\t// whole line regardless of word wrap being enabled or not.\n\t\t\t\t\tselectionType = selWholeLine;\n\t\t\t\t} else {\n\t\t\t\t\tselectionType = selChar;\n\t\t\t\t\toriginalAnchorPos = sel.MainCaret();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (selectionType == selWord) {\n\t\t\tint charPos = originalAnchorPos;\n\t\t\tif (sel.MainCaret() == originalAnchorPos) {\n\t\t\t\tcharPos = PositionFromLocation(pt, false, true);\n\t\t\t\tcharPos = MovePositionOutsideChar(charPos, -1);\n\t\t\t}\n\n\t\t\tint startWord, endWord;\n\t\t\tif ((sel.MainCaret() >= originalAnchorPos) && !pdoc->IsLineEndPosition(charPos)) {\n\t\t\t\tstartWord = pdoc->ExtendWordSelect(pdoc->MovePositionOutsideChar(charPos + 1, 1), -1);\n\t\t\t\tendWord = pdoc->ExtendWordSelect(charPos, 1);\n\t\t\t} else {\n\t\t\t\t// Selecting backwards, or anchor beyond last character on line. In these cases,\n\t\t\t\t// we select the word containing the character to the *left* of the anchor.\n\t\t\t\tif (charPos > pdoc->LineStart(pdoc->LineFromPosition(charPos))) {\n\t\t\t\t\tstartWord = pdoc->ExtendWordSelect(charPos, -1);\n\t\t\t\t\tendWord = pdoc->ExtendWordSelect(startWord, 1);\n\t\t\t\t} else {\n\t\t\t\t\t// Anchor at start of line; select nothing to begin with.\n\t\t\t\t\tstartWord = charPos;\n\t\t\t\t\tendWord = charPos;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twordSelectAnchorStartPos = startWord;\n\t\t\twordSelectAnchorEndPos = endWord;\n\t\t\twordSelectInitialCaretPos = sel.MainCaret();\n\t\t\tWordSelection(wordSelectInitialCaretPos);\n\t\t} else if (selectionType == selSubLine || selectionType == selWholeLine) {\n\t\t\tlineAnchorPos = newPos.Position();\n\t\t\tLineSelection(lineAnchorPos, lineAnchorPos, selectionType == selWholeLine);\n\t\t\t//Platform::DebugPrintf(\"Triple click: %d - %d\\n\", anchor, currentPos);\n\t\t} else {\n\t\t\tSetEmptySelection(sel.MainCaret());\n\t\t}\n\t\t//Platform::DebugPrintf(\"Double click: %d - %d\\n\", anchor, currentPos);\n\t\tif (doubleClick) {\n\t\t\tNotifyDoubleClick(pt, modifiers);\n\t\t\tif (PositionIsHotspot(newCharPos.Position()))\n\t\t\t\tNotifyHotSpotDoubleClicked(newCharPos.Position(), modifiers);\n\t\t}\n\t} else {\t// Single click\n\t\tif (inSelMargin) {\n\t\t\tif (sel.IsRectangular() || (sel.Count() > 1)) {\n\t\t\t\tInvalidateWholeSelection();\n\t\t\t\tsel.Clear();\n\t\t\t}\n\t\t\tsel.selType = Selection::selStream;\n\t\t\tif (!shift) {\n\t\t\t\t// Single click in margin: select whole line or only subline if word wrap is enabled\n\t\t\t\tlineAnchorPos = newPos.Position();\n\t\t\t\tselectionType = (Wrapping() && (marginOptions & SC_MARGINOPTION_SUBLINESELECT)) ? selSubLine : selWholeLine;\n\t\t\t\tLineSelection(lineAnchorPos, lineAnchorPos, selectionType == selWholeLine);\n\t\t\t} else {\n\t\t\t\t// Single shift+click in margin: select from line anchor to clicked line\n\t\t\t\tif (sel.MainAnchor() > sel.MainCaret())\n\t\t\t\t\tlineAnchorPos = sel.MainAnchor() - 1;\n\t\t\t\telse\n\t\t\t\t\tlineAnchorPos = sel.MainAnchor();\n\t\t\t\t// Reset selection type if there is an empty selection.\n\t\t\t\t// This ensures that we don't end up stuck in previous selection mode, which is no longer valid.\n\t\t\t\t// Otherwise, if there's a non empty selection, reset selection type only if it differs from selSubLine and selWholeLine.\n\t\t\t\t// This ensures that we continue selecting in the same selection mode.\n\t\t\t\tif (sel.Empty() || (selectionType != selSubLine && selectionType != selWholeLine))\n\t\t\t\t\tselectionType = (Wrapping() && (marginOptions & SC_MARGINOPTION_SUBLINESELECT)) ? selSubLine : selWholeLine;\n\t\t\t\tLineSelection(newPos.Position(), lineAnchorPos, selectionType == selWholeLine);\n\t\t\t}\n\n\t\t\tSetDragPosition(SelectionPosition(invalidPosition));\n\t\t\tSetMouseCapture(true);\n\t\t\tif (FineTickerAvailable()) {\n\t\t\t\tFineTickerStart(tickScroll, 100, 10);\n\t\t\t}\n\t\t} else {\n\t\t\tif (PointIsHotspot(pt)) {\n\t\t\t\tNotifyHotSpotClicked(newCharPos.Position(), modifiers);\n\t\t\t\thotSpotClickPos = newCharPos.Position();\n\t\t\t}\n\t\t\tif (!shift) {\n\t\t\t\tif (PointInSelection(pt) && !SelectionEmpty())\n\t\t\t\t\tinDragDrop = ddInitial;\n\t\t\t\telse\n\t\t\t\t\tinDragDrop = ddNone;\n\t\t\t}\n\t\t\tSetMouseCapture(true);\n\t\t\tif (FineTickerAvailable()) {\n\t\t\t\tFineTickerStart(tickScroll, 100, 10);\n\t\t\t}\n\t\t\tif (inDragDrop != ddInitial) {\n\t\t\t\tSetDragPosition(SelectionPosition(invalidPosition));\n\t\t\t\tif (!shift) {\n\t\t\t\t\tif (ctrl && multipleSelection) {\n\t\t\t\t\t\tSelectionRange range(newPos);\n\t\t\t\t\t\tsel.TentativeSelection(range);\n\t\t\t\t\t\tInvalidateSelection(range, true);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tInvalidateSelection(SelectionRange(newPos), true);\n\t\t\t\t\t\tif (sel.Count() > 1)\n\t\t\t\t\t\t\tRedraw();\n\t\t\t\t\t\tif ((sel.Count() > 1) || (sel.selType != Selection::selStream))\n\t\t\t\t\t\t\tsel.Clear();\n\t\t\t\t\t\tsel.selType = alt ? Selection::selRectangle : Selection::selStream;\n\t\t\t\t\t\tSetSelection(newPos, newPos);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tSelectionPosition anchorCurrent = newPos;\n\t\t\t\tif (shift)\n\t\t\t\t\tanchorCurrent = sel.IsRectangular() ?\n\t\t\t\t\t\tsel.Rectangular().anchor : sel.RangeMain().anchor;\n\t\t\t\tsel.selType = alt ? Selection::selRectangle : Selection::selStream;\n\t\t\t\tselectionType = selChar;\n\t\t\t\toriginalAnchorPos = sel.MainCaret();\n\t\t\t\tsel.Rectangular() = SelectionRange(newPos, anchorCurrent);\n\t\t\t\tSetRectangularRange();\n\t\t\t}\n\t\t}\n\t}\n\tlastClickTime = curTime;\n\tlastClick = pt;\n\tlastXChosen = static_cast<int>(pt.x) + xOffset;\n\tShowCaretAtCurrentPosition();\n}\n\nvoid Editor::RightButtonDownWithModifiers(Point pt, unsigned int, int modifiers) {\n\tif (NotifyMarginRightClick(pt, modifiers))\n\t\treturn;\n}\n\nvoid Editor::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {\n\treturn ButtonDownWithModifiers(pt, curTime, ModifierFlags(shift, ctrl, alt));\n}\n\nbool Editor::PositionIsHotspot(int position) const {\n\treturn vs.styles[pdoc->StyleIndexAt(position)].hotspot;\n}\n\nbool Editor::PointIsHotspot(Point pt) {\n\tint pos = PositionFromLocation(pt, true, true);\n\tif (pos == INVALID_POSITION)\n\t\treturn false;\n\treturn PositionIsHotspot(pos);\n}\n\nvoid Editor::SetHoverIndicatorPosition(int position) {\n\tint hoverIndicatorPosPrev = hoverIndicatorPos;\n\thoverIndicatorPos = INVALID_POSITION;\n\tif (vs.indicatorsDynamic == 0)\n\t\treturn;\n\tif (position != INVALID_POSITION) {\n\t\tfor (Decoration *deco = pdoc->decorations.root; deco; deco = deco->next) {\n\t\t\tif (vs.indicators[deco->indicator].IsDynamic()) {\n\t\t\t\tif (pdoc->decorations.ValueAt(deco->indicator, position)) {\n\t\t\t\t\thoverIndicatorPos = position;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif (hoverIndicatorPosPrev != hoverIndicatorPos) {\n\t\tRedraw();\n\t}\n}\n\nvoid Editor::SetHoverIndicatorPoint(Point pt) {\n\tif (vs.indicatorsDynamic == 0) {\n\t\tSetHoverIndicatorPosition(INVALID_POSITION);\n\t} else {\n\t\tSetHoverIndicatorPosition(PositionFromLocation(pt, true, true));\n\t}\n}\n\nvoid Editor::SetHotSpotRange(Point *pt) {\n\tif (pt) {\n\t\tint pos = PositionFromLocation(*pt, false, true);\n\n\t\t// If we don't limit this to word characters then the\n\t\t// range can encompass more than the run range and then\n\t\t// the underline will not be drawn properly.\n\t\tRange hsNew;\n\t\thsNew.start = pdoc->ExtendStyleRange(pos, -1, vs.hotspotSingleLine);\n\t\thsNew.end = pdoc->ExtendStyleRange(pos, 1, vs.hotspotSingleLine);\n\n\t\t// Only invalidate the range if the hotspot range has changed...\n\t\tif (!(hsNew == hotspot)) {\n\t\t\tif (hotspot.Valid()) {\n\t\t\t\tInvalidateRange(hotspot.start, hotspot.end);\n\t\t\t}\n\t\t\thotspot = hsNew;\n\t\t\tInvalidateRange(hotspot.start, hotspot.end);\n\t\t}\n\t} else {\n\t\tif (hotspot.Valid()) {\n\t\t\tInvalidateRange(hotspot.start, hotspot.end);\n\t\t}\n\t\thotspot = Range(invalidPosition);\n\t}\n}\n\nRange Editor::GetHotSpotRange() const {\n\treturn hotspot;\n}\n\nvoid Editor::ButtonMoveWithModifiers(Point pt, int modifiers) {\n\tif ((ptMouseLast.x != pt.x) || (ptMouseLast.y != pt.y)) {\n\t\tDwellEnd(true);\n\t}\n\n\tSelectionPosition movePos = SPositionFromLocation(pt, false, false,\n\t\tAllowVirtualSpace(virtualSpaceOptions, sel.IsRectangular()));\n\tmovePos = MovePositionOutsideChar(movePos, sel.MainCaret() - movePos.Position());\n\n\tif (inDragDrop == ddInitial) {\n\t\tif (DragThreshold(ptMouseLast, pt)) {\n\t\t\tSetMouseCapture(false);\n\t\t\tif (FineTickerAvailable()) {\n\t\t\t\tFineTickerCancel(tickScroll);\n\t\t\t}\n\t\t\tSetDragPosition(movePos);\n\t\t\tCopySelectionRange(&drag);\n\t\t\tStartDrag();\n\t\t}\n\t\treturn;\n\t}\n\n\tptMouseLast = pt;\n\tPRectangle rcClient = GetClientRectangle();\n\tPoint ptOrigin = GetVisibleOriginInMain();\n\trcClient.Move(0, -ptOrigin.y);\n\tif (FineTickerAvailable() && (dwellDelay < SC_TIME_FOREVER) && rcClient.Contains(pt)) {\n\t\tFineTickerStart(tickDwell, dwellDelay, dwellDelay/10);\n\t}\n\t//Platform::DebugPrintf(\"Move %d %d\\n\", pt.x, pt.y);\n\tif (HaveMouseCapture()) {\n\n\t\t// Slow down autoscrolling/selection\n\t\tautoScrollTimer.ticksToWait -= timer.tickSize;\n\t\tif (autoScrollTimer.ticksToWait > 0)\n\t\t\treturn;\n\t\tautoScrollTimer.ticksToWait = autoScrollDelay;\n\n\t\t// Adjust selection\n\t\tif (posDrag.IsValid()) {\n\t\t\tSetDragPosition(movePos);\n\t\t} else {\n\t\t\tif (selectionType == selChar) {\n\t\t\t\tif (sel.selType == Selection::selStream && (modifiers & SCI_ALT) && mouseSelectionRectangularSwitch) {\n\t\t\t\t\tsel.selType = Selection::selRectangle;\n\t\t\t\t}\n\t\t\t\tif (sel.IsRectangular()) {\n\t\t\t\t\tsel.Rectangular() = SelectionRange(movePos, sel.Rectangular().anchor);\n\t\t\t\t\tSetSelection(movePos, sel.RangeMain().anchor);\n\t\t\t\t} else if (sel.Count() > 1) {\n\t\t\t\t\tInvalidateSelection(sel.RangeMain(), false);\n\t\t\t\t\tSelectionRange range(movePos, sel.RangeMain().anchor);\n\t\t\t\t\tsel.TentativeSelection(range);\n\t\t\t\t\tInvalidateSelection(range, true);\n\t\t\t\t} else {\n\t\t\t\t\tSetSelection(movePos, sel.RangeMain().anchor);\n\t\t\t\t}\n\t\t\t} else if (selectionType == selWord) {\n\t\t\t\t// Continue selecting by word\n\t\t\t\tif (movePos.Position() == wordSelectInitialCaretPos) {  // Didn't move\n\t\t\t\t\t// No need to do anything. Previously this case was lumped\n\t\t\t\t\t// in with \"Moved forward\", but that can be harmful in this\n\t\t\t\t\t// case: a handler for the NotifyDoubleClick re-adjusts\n\t\t\t\t\t// the selection for a fancier definition of \"word\" (for\n\t\t\t\t\t// example, in Perl it is useful to include the leading\n\t\t\t\t\t// '$', '%' or '@' on variables for word selection). In this\n\t\t\t\t\t// the ButtonMove() called via Tick() for auto-scrolling\n\t\t\t\t\t// could result in the fancier word selection adjustment\n\t\t\t\t\t// being unmade.\n\t\t\t\t} else {\n\t\t\t\t\twordSelectInitialCaretPos = -1;\n\t\t\t\t\tWordSelection(movePos.Position());\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Continue selecting by line\n\t\t\t\tLineSelection(movePos.Position(), lineAnchorPos, selectionType == selWholeLine);\n\t\t\t}\n\t\t}\n\n\t\t// Autoscroll\n\t\tint lineMove = DisplayFromPosition(movePos.Position());\n\t\tif (pt.y > rcClient.bottom) {\n\t\t\tScrollTo(lineMove - LinesOnScreen() + 1);\n\t\t\tRedraw();\n\t\t} else if (pt.y < rcClient.top) {\n\t\t\tScrollTo(lineMove);\n\t\t\tRedraw();\n\t\t}\n\t\tEnsureCaretVisible(false, false, true);\n\n\t\tif (hotspot.Valid() && !PointIsHotspot(pt))\n\t\t\tSetHotSpotRange(NULL);\n\n\t\tif (hotSpotClickPos != INVALID_POSITION && PositionFromLocation(pt,true,true) != hotSpotClickPos) {\n\t\t\tif (inDragDrop == ddNone) {\n\t\t\t\tDisplayCursor(Window::cursorText);\n\t\t\t}\n\t\t\thotSpotClickPos = INVALID_POSITION;\n\t\t}\n\n\t} else {\n\t\tif (vs.fixedColumnWidth > 0) {\t// There is a margin\n\t\t\tif (PointInSelMargin(pt)) {\n\t\t\t\tDisplayCursor(GetMarginCursor(pt));\n\t\t\t\tSetHotSpotRange(NULL);\n\t\t\t\treturn; \t// No need to test for selection\n\t\t\t}\n\t\t}\n\t\t// Display regular (drag) cursor over selection\n\t\tif (PointInSelection(pt) && !SelectionEmpty()) {\n\t\t\tDisplayCursor(Window::cursorArrow);\n\t\t} else {\n\t\t\tSetHoverIndicatorPoint(pt);\n\t\t\tif (PointIsHotspot(pt)) {\n\t\t\t\tDisplayCursor(Window::cursorHand);\n\t\t\t\tSetHotSpotRange(&pt);\n\t\t\t} else {\n\t\t\t\tif (hoverIndicatorPos != invalidPosition)\n\t\t\t\t\tDisplayCursor(Window::cursorHand);\n\t\t\t\telse\n\t\t\t\t\tDisplayCursor(Window::cursorText);\n\t\t\t\tSetHotSpotRange(NULL);\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid Editor::ButtonMove(Point pt) {\n\tButtonMoveWithModifiers(pt, 0);\n}\n\nvoid Editor::ButtonUp(Point pt, unsigned int curTime, bool ctrl) {\n\t//Platform::DebugPrintf(\"ButtonUp %d %d\\n\", HaveMouseCapture(), inDragDrop);\n\tSelectionPosition newPos = SPositionFromLocation(pt, false, false,\n\t\tAllowVirtualSpace(virtualSpaceOptions, sel.IsRectangular()));\n\tif (hoverIndicatorPos != INVALID_POSITION)\n\t\tInvalidateRange(newPos.Position(), newPos.Position() + 1);\n\tnewPos = MovePositionOutsideChar(newPos, sel.MainCaret() - newPos.Position());\n\tif (inDragDrop == ddInitial) {\n\t\tinDragDrop = ddNone;\n\t\tSetEmptySelection(newPos);\n\t\tselectionType = selChar;\n\t\toriginalAnchorPos = sel.MainCaret();\n\t}\n\tif (hotSpotClickPos != INVALID_POSITION && PointIsHotspot(pt)) {\n\t\thotSpotClickPos = INVALID_POSITION;\n\t\tSelectionPosition newCharPos = SPositionFromLocation(pt, false, true, false);\n\t\tnewCharPos = MovePositionOutsideChar(newCharPos, -1);\n\t\tNotifyHotSpotReleaseClick(newCharPos.Position(), ctrl ? SCI_CTRL : 0);\n\t}\n\tif (HaveMouseCapture()) {\n\t\tif (PointInSelMargin(pt)) {\n\t\t\tDisplayCursor(GetMarginCursor(pt));\n\t\t} else {\n\t\t\tDisplayCursor(Window::cursorText);\n\t\t\tSetHotSpotRange(NULL);\n\t\t}\n\t\tptMouseLast = pt;\n\t\tSetMouseCapture(false);\n\t\tif (FineTickerAvailable()) {\n\t\t\tFineTickerCancel(tickScroll);\n\t\t}\n\t\tNotifyIndicatorClick(false, newPos.Position(), 0);\n\t\tif (inDragDrop == ddDragging) {\n\t\t\tSelectionPosition selStart = SelectionStart();\n\t\t\tSelectionPosition selEnd = SelectionEnd();\n\t\t\tif (selStart < selEnd) {\n\t\t\t\tif (drag.Length()) {\n\t\t\t\t\tconst int length = static_cast<int>(drag.Length());\n\t\t\t\t\tif (ctrl) {\n\t\t\t\t\t\tconst int lengthInserted = pdoc->InsertString(\n\t\t\t\t\t\t\tnewPos.Position(), drag.Data(), length);\n\t\t\t\t\t\tif (lengthInserted > 0) {\n\t\t\t\t\t\t\tSetSelection(newPos.Position(), newPos.Position() + lengthInserted);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (newPos < selStart) {\n\t\t\t\t\t\tpdoc->DeleteChars(selStart.Position(), static_cast<int>(drag.Length()));\n\t\t\t\t\t\tconst int lengthInserted = pdoc->InsertString(\n\t\t\t\t\t\t\tnewPos.Position(), drag.Data(), length);\n\t\t\t\t\t\tif (lengthInserted > 0) {\n\t\t\t\t\t\t\tSetSelection(newPos.Position(), newPos.Position() + lengthInserted);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (newPos > selEnd) {\n\t\t\t\t\t\tpdoc->DeleteChars(selStart.Position(), static_cast<int>(drag.Length()));\n\t\t\t\t\t\tnewPos.Add(-static_cast<int>(drag.Length()));\n\t\t\t\t\t\tconst int lengthInserted = pdoc->InsertString(\n\t\t\t\t\t\t\tnewPos.Position(), drag.Data(), length);\n\t\t\t\t\t\tif (lengthInserted > 0) {\n\t\t\t\t\t\t\tSetSelection(newPos.Position(), newPos.Position() + lengthInserted);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tSetEmptySelection(newPos.Position());\n\t\t\t\t\t}\n\t\t\t\t\tdrag.Clear();\n\t\t\t\t}\n\t\t\t\tselectionType = selChar;\n\t\t\t}\n\t\t} else {\n\t\t\tif (selectionType == selChar) {\n\t\t\t\tif (sel.Count() > 1) {\n\t\t\t\t\tsel.RangeMain() =\n\t\t\t\t\t\tSelectionRange(newPos, sel.Range(sel.Count() - 1).anchor);\n\t\t\t\t\tInvalidateWholeSelection();\n\t\t\t\t} else {\n\t\t\t\t\tSetSelection(newPos, sel.RangeMain().anchor);\n\t\t\t\t}\n\t\t\t}\n\t\t\tsel.CommitTentative();\n\t\t}\n\t\tSetRectangularRange();\n\t\tlastClickTime = curTime;\n\t\tlastClick = pt;\n\t\tlastXChosen = static_cast<int>(pt.x) + xOffset;\n\t\tif (sel.selType == Selection::selStream) {\n\t\t\tSetLastXChosen();\n\t\t}\n\t\tinDragDrop = ddNone;\n\t\tEnsureCaretVisible(false);\n\t}\n}\n\n// Called frequently to perform background UI including\n// caret blinking and automatic scrolling.\nvoid Editor::Tick() {\n\tif (HaveMouseCapture()) {\n\t\t// Auto scroll\n\t\tButtonMove(ptMouseLast);\n\t}\n\tif (caret.period > 0) {\n\t\ttimer.ticksToWait -= timer.tickSize;\n\t\tif (timer.ticksToWait <= 0) {\n\t\t\tcaret.on = !caret.on;\n\t\t\ttimer.ticksToWait = caret.period;\n\t\t\tif (caret.active) {\n\t\t\t\tInvalidateCaret();\n\t\t\t}\n\t\t}\n\t}\n\tif (horizontalScrollBarVisible && trackLineWidth && (view.lineWidthMaxSeen > scrollWidth)) {\n\t\tscrollWidth = view.lineWidthMaxSeen;\n\t\tSetScrollBars();\n\t}\n\tif ((dwellDelay < SC_TIME_FOREVER) &&\n\t        (ticksToDwell > 0) &&\n\t        (!HaveMouseCapture()) &&\n\t        (ptMouseLast.y >= 0)) {\n\t\tticksToDwell -= timer.tickSize;\n\t\tif (ticksToDwell <= 0) {\n\t\t\tdwelling = true;\n\t\t\tNotifyDwelling(ptMouseLast, dwelling);\n\t\t}\n\t}\n}\n\nbool Editor::Idle() {\n\tbool needWrap = Wrapping() && wrapPending.NeedsWrap();\n\n\tif (needWrap) {\n\t\t// Wrap lines during idle.\n\t\tWrapLines(wsIdle);\n\t\t// No more wrapping\n\t\tneedWrap = wrapPending.NeedsWrap();\n\t} else if (needIdleStyling) {\n\t\tIdleStyling();\n\t}\n\n\t// Add more idle things to do here, but make sure idleDone is\n\t// set correctly before the function returns. returning\n\t// false will stop calling this idle function until SetIdle() is\n\t// called again.\n\n\tconst bool idleDone = !needWrap && !needIdleStyling; // && thatDone && theOtherThingDone...\n\n\treturn !idleDone;\n}\n\nvoid Editor::SetTicking(bool) {\n\t// SetTicking is deprecated. In the past it was pure virtual and was overridden in each\n\t// derived platform class but fine grained timers should now be implemented.\n\t// Either way, execution should not arrive here so assert failure.\n\tassert(false);\n}\n\nvoid Editor::TickFor(TickReason reason) {\n\tswitch (reason) {\n\t\tcase tickCaret:\n\t\t\tcaret.on = !caret.on;\n\t\t\tif (caret.active) {\n\t\t\t\tInvalidateCaret();\n\t\t\t}\n\t\t\tbreak;\n\t\tcase tickScroll:\n\t\t\t// Auto scroll\n\t\t\tButtonMove(ptMouseLast);\n\t\t\tbreak;\n\t\tcase tickWiden:\n\t\t\tSetScrollBars();\n\t\t\tFineTickerCancel(tickWiden);\n\t\t\tbreak;\n\t\tcase tickDwell:\n\t\t\tif ((!HaveMouseCapture()) &&\n\t\t\t\t(ptMouseLast.y >= 0)) {\n\t\t\t\tdwelling = true;\n\t\t\t\tNotifyDwelling(ptMouseLast, dwelling);\n\t\t\t}\n\t\t\tFineTickerCancel(tickDwell);\n\t\t\tbreak;\n\t\tdefault:\n\t\t\t// tickPlatform handled by subclass\n\t\t\tbreak;\n\t}\n}\n\nbool Editor::FineTickerAvailable() {\n\treturn false;\n}\n\n// FineTickerStart is be overridden by subclasses that support fine ticking so\n// this method should never be called.\nbool Editor::FineTickerRunning(TickReason) {\n\tassert(false);\n\treturn false;\n}\n\n// FineTickerStart is be overridden by subclasses that support fine ticking so\n// this method should never be called.\nvoid Editor::FineTickerStart(TickReason, int, int) {\n\tassert(false);\n}\n\n// FineTickerCancel is be overridden by subclasses that support fine ticking so\n// this method should never be called.\nvoid Editor::FineTickerCancel(TickReason) {\n\tassert(false);\n}\n\nvoid Editor::SetFocusState(bool focusState) {\n\thasFocus = focusState;\n\tNotifyFocus(hasFocus);\n\tif (!hasFocus) {\n\t\tCancelModes();\n\t}\n\tShowCaretAtCurrentPosition();\n}\n\nint Editor::PositionAfterArea(PRectangle rcArea) const {\n\t// The start of the document line after the display line after the area\n\t// This often means that the line after a modification is restyled which helps\n\t// detect multiline comment additions and heals single line comments\n\tint lineAfter = TopLineOfMain() + static_cast<int>(rcArea.bottom - 1) / vs.lineHeight + 1;\n\tif (lineAfter < cs.LinesDisplayed())\n\t\treturn pdoc->LineStart(cs.DocFromDisplay(lineAfter) + 1);\n\telse\n\t\treturn pdoc->Length();\n}\n\n// Style to a position within the view. If this causes a change at end of last line then\n// affects later lines so style all the viewed text.\nvoid Editor::StyleToPositionInView(Position pos) {\n\tint endWindow = PositionAfterArea(GetClientDrawingRectangle());\n\tif (pos > endWindow)\n\t\tpos = endWindow;\n\tconst int styleAtEnd = pdoc->StyleIndexAt(pos-1);\n\tpdoc->EnsureStyledTo(pos);\n\tif ((endWindow > pos) && (styleAtEnd != pdoc->StyleIndexAt(pos-1))) {\n\t\t// Style at end of line changed so is multi-line change like starting a comment\n\t\t// so require rest of window to be styled.\n\t\tDiscardOverdraw();\t// Prepared bitmaps may be invalid\n\t\t// DiscardOverdraw may have truncated client drawing area so recalculate endWindow\n\t\tendWindow = PositionAfterArea(GetClientDrawingRectangle());\n\t\tpdoc->EnsureStyledTo(endWindow);\n\t}\n}\n\nint Editor::PositionAfterMaxStyling(int posMax, bool scrolling) const {\n\tif ((idleStyling == SC_IDLESTYLING_NONE) || (idleStyling == SC_IDLESTYLING_AFTERVISIBLE)) {\n\t\t// Both states do not limit styling\n\t\treturn posMax;\n\t}\n\n\t// Try to keep time taken by styling reasonable so interaction remains smooth.\n\t// When scrolling, allow less time to ensure responsive\n\tconst double secondsAllowed = scrolling ? 0.005 : 0.02;\n\n\tconst int linesToStyle = Platform::Clamp(static_cast<int>(secondsAllowed / pdoc->durationStyleOneLine),\n\t\t10, 0x10000);\n\tconst int stylingMaxLine = std::min(\n\t\tstatic_cast<int>(pdoc->LineFromPosition(pdoc->GetEndStyled()) + linesToStyle),\n\t\tpdoc->LinesTotal());\n\treturn std::min(static_cast<int>(pdoc->LineStart(stylingMaxLine)), posMax);\n}\n\nvoid Editor::StartIdleStyling(bool truncatedLastStyling) {\n\tif ((idleStyling == SC_IDLESTYLING_ALL) || (idleStyling == SC_IDLESTYLING_AFTERVISIBLE)) {\n\t\tif (pdoc->GetEndStyled() < pdoc->Length()) {\n\t\t\t// Style remainder of document in idle time\n\t\t\tneedIdleStyling = true;\n\t\t}\n\t} else if (truncatedLastStyling) {\n\t\tneedIdleStyling = true;\n\t}\n\n\tif (needIdleStyling) {\n\t\tSetIdle(true);\n\t}\n}\n\n// Style for an area but bound the amount of styling to remain responsive\nvoid Editor::StyleAreaBounded(PRectangle rcArea, bool scrolling) {\n\tconst int posAfterArea = PositionAfterArea(rcArea);\n\tconst int posAfterMax = PositionAfterMaxStyling(posAfterArea, scrolling);\n\tif (posAfterMax < posAfterArea) {\n\t\t// Idle styling may be performed before current visible area\n\t\t// Style a bit now then style further in idle time\n\t\tpdoc->StyleToAdjustingLineDuration(posAfterMax);\n\t} else {\n\t\t// Can style all wanted now.\n\t\tStyleToPositionInView(posAfterArea);\n\t}\n\tStartIdleStyling(posAfterMax < posAfterArea);\n}\n\nvoid Editor::IdleStyling() {\n\tconst int posAfterArea = PositionAfterArea(GetClientRectangle());\n\tconst int endGoal = (idleStyling >= SC_IDLESTYLING_AFTERVISIBLE) ?\n\t\tpdoc->Length() : posAfterArea;\n\tconst int posAfterMax = PositionAfterMaxStyling(endGoal, false);\n\tpdoc->StyleToAdjustingLineDuration(posAfterMax);\n\tif (pdoc->GetEndStyled() >= endGoal) {\n\t\tneedIdleStyling = false;\n\t}\n}\n\nvoid Editor::IdleWork() {\n\t// Style the line after the modification as this allows modifications that change just the\n\t// line of the modification to heal instead of propagating to the rest of the window.\n\tif (workNeeded.items & WorkNeeded::workStyle) {\n\t\tStyleToPositionInView(pdoc->LineStart(pdoc->LineFromPosition(workNeeded.upTo) + 2));\n\t}\n\tNotifyUpdateUI();\n\tworkNeeded.Reset();\n}\n\nvoid Editor::QueueIdleWork(WorkNeeded::workItems items, int upTo) {\n\tworkNeeded.Need(items, upTo);\n}\n\nbool Editor::PaintContains(PRectangle rc) {\n\tif (rc.Empty()) {\n\t\treturn true;\n\t} else {\n\t\treturn rcPaint.Contains(rc);\n\t}\n}\n\nbool Editor::PaintContainsMargin() {\n\tif (wMargin.GetID()) {\n\t\t// With separate margin view, paint of text view\n\t\t// never contains margin.\n\t\treturn false;\n\t}\n\tPRectangle rcSelMargin = GetClientRectangle();\n\trcSelMargin.right = static_cast<XYPOSITION>(vs.textStart);\n\treturn PaintContains(rcSelMargin);\n}\n\nvoid Editor::CheckForChangeOutsidePaint(Range r) {\n\tif (paintState == painting && !paintingAllText) {\n\t\t//Platform::DebugPrintf(\"Checking range in paint %d-%d\\n\", r.start, r.end);\n\t\tif (!r.Valid())\n\t\t\treturn;\n\n\t\tPRectangle rcRange = RectangleFromRange(r, 0);\n\t\tPRectangle rcText = GetTextRectangle();\n\t\tif (rcRange.top < rcText.top) {\n\t\t\trcRange.top = rcText.top;\n\t\t}\n\t\tif (rcRange.bottom > rcText.bottom) {\n\t\t\trcRange.bottom = rcText.bottom;\n\t\t}\n\n\t\tif (!PaintContains(rcRange)) {\n\t\t\tAbandonPaint();\n\t\t\tpaintAbandonedByStyling = true;\n\t\t}\n\t}\n}\n\nvoid Editor::SetBraceHighlight(Position pos0, Position pos1, int matchStyle) {\n\tif ((pos0 != braces[0]) || (pos1 != braces[1]) || (matchStyle != bracesMatchStyle)) {\n\t\tif ((braces[0] != pos0) || (matchStyle != bracesMatchStyle)) {\n\t\t\tCheckForChangeOutsidePaint(Range(braces[0]));\n\t\t\tCheckForChangeOutsidePaint(Range(pos0));\n\t\t\tbraces[0] = pos0;\n\t\t}\n\t\tif ((braces[1] != pos1) || (matchStyle != bracesMatchStyle)) {\n\t\t\tCheckForChangeOutsidePaint(Range(braces[1]));\n\t\t\tCheckForChangeOutsidePaint(Range(pos1));\n\t\t\tbraces[1] = pos1;\n\t\t}\n\t\tbracesMatchStyle = matchStyle;\n\t\tif (paintState == notPainting) {\n\t\t\tRedraw();\n\t\t}\n\t}\n}\n\nvoid Editor::SetAnnotationHeights(int start, int end) {\n\tif (vs.annotationVisible) {\n\t\tRefreshStyleData();\n\t\tbool changedHeight = false;\n\t\tfor (int line=start; line<end && line<pdoc->LinesTotal(); line++) {\n\t\t\tint linesWrapped = 1;\n\t\t\tif (Wrapping()) {\n\t\t\t\tAutoSurface surface(this);\n\t\t\t\tAutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this));\n\t\t\t\tif (surface && ll) {\n\t\t\t\t\tview.LayoutLine(*this, line, surface, vs, ll, wrapWidth);\n\t\t\t\t\tlinesWrapped = ll->lines;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (cs.SetHeight(line, pdoc->AnnotationLines(line) + linesWrapped))\n\t\t\t\tchangedHeight = true;\n\t\t}\n\t\tif (changedHeight) {\n\t\t\tRedraw();\n\t\t}\n\t}\n}\n\nvoid Editor::SetDocPointer(Document *document) {\n\t//Platform::DebugPrintf(\"** %x setdoc to %x\\n\", pdoc, document);\n\tpdoc->RemoveWatcher(this, 0);\n\tpdoc->Release();\n\tif (document == NULL) {\n\t\tpdoc = new Document();\n\t} else {\n\t\tpdoc = document;\n\t}\n\tpdoc->AddRef();\n\n\t// Ensure all positions within document\n\tsel.Clear();\n\ttargetStart = 0;\n\ttargetEnd = 0;\n\n\tbraces[0] = invalidPosition;\n\tbraces[1] = invalidPosition;\n\n\tvs.ReleaseAllExtendedStyles();\n\n\tSetRepresentations();\n\n\t// Reset the contraction state to fully shown.\n\tcs.Clear();\n\tcs.InsertLines(0, pdoc->LinesTotal() - 1);\n\tSetAnnotationHeights(0, pdoc->LinesTotal());\n\tview.llc.Deallocate();\n\tNeedWrapping();\n\n\thotspot = Range(invalidPosition);\n\thoverIndicatorPos = invalidPosition;\n\n\tview.ClearAllTabstops();\n\n\tpdoc->AddWatcher(this, 0);\n\tSetScrollBars();\n\tRedraw();\n}\n\nvoid Editor::SetAnnotationVisible(int visible) {\n\tif (vs.annotationVisible != visible) {\n\t\tbool changedFromOrToHidden = ((vs.annotationVisible != 0) != (visible != 0));\n\t\tvs.annotationVisible = visible;\n\t\tif (changedFromOrToHidden) {\n\t\t\tint dir = vs.annotationVisible ? 1 : -1;\n\t\t\tfor (int line=0; line<pdoc->LinesTotal(); line++) {\n\t\t\t\tint annotationLines = pdoc->AnnotationLines(line);\n\t\t\t\tif (annotationLines > 0) {\n\t\t\t\t\tcs.SetHeight(line, cs.GetHeight(line) + annotationLines * dir);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tRedraw();\n\t}\n}\n\n/**\n * Recursively expand a fold, making lines visible except where they have an unexpanded parent.\n */\nint Editor::ExpandLine(int line) {\n\tint lineMaxSubord = pdoc->GetLastChild(line);\n\tline++;\n\twhile (line <= lineMaxSubord) {\n\t\tcs.SetVisible(line, line, true);\n\t\tint level = pdoc->GetLevel(line);\n\t\tif (level & SC_FOLDLEVELHEADERFLAG) {\n\t\t\tif (cs.GetExpanded(line)) {\n\t\t\t\tline = ExpandLine(line);\n\t\t\t} else {\n\t\t\t\tline = pdoc->GetLastChild(line);\n\t\t\t}\n\t\t}\n\t\tline++;\n\t}\n\treturn lineMaxSubord;\n}\n\nvoid Editor::SetFoldExpanded(int lineDoc, bool expanded) {\n\tif (cs.SetExpanded(lineDoc, expanded)) {\n\t\tRedrawSelMargin();\n\t}\n}\n\nvoid Editor::FoldLine(int line, int action) {\n\tif (line >= 0) {\n\t\tif (action == SC_FOLDACTION_TOGGLE) {\n\t\t\tif ((pdoc->GetLevel(line) & SC_FOLDLEVELHEADERFLAG) == 0) {\n\t\t\t\tline = pdoc->GetFoldParent(line);\n\t\t\t\tif (line < 0)\n\t\t\t\t\treturn;\n\t\t\t}\n\t\t\taction = (cs.GetExpanded(line)) ? SC_FOLDACTION_CONTRACT : SC_FOLDACTION_EXPAND;\n\t\t}\n\n\t\tif (action == SC_FOLDACTION_CONTRACT) {\n\t\t\tint lineMaxSubord = pdoc->GetLastChild(line);\n\t\t\tif (lineMaxSubord > line) {\n\t\t\t\tcs.SetExpanded(line, 0);\n\t\t\t\tcs.SetVisible(line + 1, lineMaxSubord, false);\n\n\t\t\t\tint lineCurrent = pdoc->LineFromPosition(sel.MainCaret());\n\t\t\t\tif (lineCurrent > line && lineCurrent <= lineMaxSubord) {\n\t\t\t\t\t// This does not re-expand the fold\n\t\t\t\t\tEnsureCaretVisible();\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tif (!(cs.GetVisible(line))) {\n\t\t\t\tEnsureLineVisible(line, false);\n\t\t\t\tGoToLine(line);\n\t\t\t}\n\t\t\tcs.SetExpanded(line, 1);\n\t\t\tExpandLine(line);\n\t\t}\n\n\t\tSetScrollBars();\n\t\tRedraw();\n\t}\n}\n\nvoid Editor::FoldExpand(int line, int action, int level) {\n\tbool expanding = action == SC_FOLDACTION_EXPAND;\n\tif (action == SC_FOLDACTION_TOGGLE) {\n\t\texpanding = !cs.GetExpanded(line);\n\t}\n\t// Ensure child lines lexed and fold information extracted before\n\t// flipping the state.\n\tpdoc->GetLastChild(line, LevelNumber(level));\n\tSetFoldExpanded(line, expanding);\n\tif (expanding && (cs.HiddenLines() == 0))\n\t\t// Nothing to do\n\t\treturn;\n\tint lineMaxSubord = pdoc->GetLastChild(line, LevelNumber(level));\n\tline++;\n\tcs.SetVisible(line, lineMaxSubord, expanding);\n\twhile (line <= lineMaxSubord) {\n\t\tint levelLine = pdoc->GetLevel(line);\n\t\tif (levelLine & SC_FOLDLEVELHEADERFLAG) {\n\t\t\tSetFoldExpanded(line, expanding);\n\t\t}\n\t\tline++;\n\t}\n\tSetScrollBars();\n\tRedraw();\n}\n\nint Editor::ContractedFoldNext(int lineStart) const {\n\tfor (int line = lineStart; line<pdoc->LinesTotal();) {\n\t\tif (!cs.GetExpanded(line) && (pdoc->GetLevel(line) & SC_FOLDLEVELHEADERFLAG))\n\t\t\treturn line;\n\t\tline = cs.ContractedNext(line+1);\n\t\tif (line < 0)\n\t\t\treturn -1;\n\t}\n\n\treturn -1;\n}\n\n/**\n * Recurse up from this line to find any folds that prevent this line from being visible\n * and unfold them all.\n */\nvoid Editor::EnsureLineVisible(int lineDoc, bool enforcePolicy) {\n\n\t// In case in need of wrapping to ensure DisplayFromDoc works.\n\tif (lineDoc >= wrapPending.start)\n\t\tWrapLines(wsAll);\n\n\tif (!cs.GetVisible(lineDoc)) {\n\t\t// Back up to find a non-blank line\n\t\tint lookLine = lineDoc;\n\t\tint lookLineLevel = pdoc->GetLevel(lookLine);\n\t\twhile ((lookLine > 0) && (lookLineLevel & SC_FOLDLEVELWHITEFLAG)) {\n\t\t\tlookLineLevel = pdoc->GetLevel(--lookLine);\n\t\t}\n\t\tint lineParent = pdoc->GetFoldParent(lookLine);\n\t\tif (lineParent < 0) {\n\t\t\t// Backed up to a top level line, so try to find parent of initial line\n\t\t\tlineParent = pdoc->GetFoldParent(lineDoc);\n\t\t}\n\t\tif (lineParent >= 0) {\n\t\t\tif (lineDoc != lineParent)\n\t\t\t\tEnsureLineVisible(lineParent, enforcePolicy);\n\t\t\tif (!cs.GetExpanded(lineParent)) {\n\t\t\t\tcs.SetExpanded(lineParent, 1);\n\t\t\t\tExpandLine(lineParent);\n\t\t\t}\n\t\t}\n\t\tSetScrollBars();\n\t\tRedraw();\n\t}\n\tif (enforcePolicy) {\n\t\tint lineDisplay = cs.DisplayFromDoc(lineDoc);\n\t\tif (visiblePolicy & VISIBLE_SLOP) {\n\t\t\tif ((topLine > lineDisplay) || ((visiblePolicy & VISIBLE_STRICT) && (topLine + visibleSlop > lineDisplay))) {\n\t\t\t\tSetTopLine(Platform::Clamp(lineDisplay - visibleSlop, 0, MaxScrollPos()));\n\t\t\t\tSetVerticalScrollPos();\n\t\t\t\tRedraw();\n\t\t\t} else if ((lineDisplay > topLine + LinesOnScreen() - 1) ||\n\t\t\t        ((visiblePolicy & VISIBLE_STRICT) && (lineDisplay > topLine + LinesOnScreen() - 1 - visibleSlop))) {\n\t\t\t\tSetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() + 1 + visibleSlop, 0, MaxScrollPos()));\n\t\t\t\tSetVerticalScrollPos();\n\t\t\t\tRedraw();\n\t\t\t}\n\t\t} else {\n\t\t\tif ((topLine > lineDisplay) || (lineDisplay > topLine + LinesOnScreen() - 1) || (visiblePolicy & VISIBLE_STRICT)) {\n\t\t\t\tSetTopLine(Platform::Clamp(lineDisplay - LinesOnScreen() / 2 + 1, 0, MaxScrollPos()));\n\t\t\t\tSetVerticalScrollPos();\n\t\t\t\tRedraw();\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid Editor::FoldAll(int action) {\n\tpdoc->EnsureStyledTo(pdoc->Length());\n\tint maxLine = pdoc->LinesTotal();\n\tbool expanding = action == SC_FOLDACTION_EXPAND;\n\tif (action == SC_FOLDACTION_TOGGLE) {\n\t\t// Discover current state\n\t\tfor (int lineSeek = 0; lineSeek < maxLine; lineSeek++) {\n\t\t\tif (pdoc->GetLevel(lineSeek) & SC_FOLDLEVELHEADERFLAG) {\n\t\t\t\texpanding = !cs.GetExpanded(lineSeek);\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif (expanding) {\n\t\tcs.SetVisible(0, maxLine-1, true);\n\t\tfor (int line = 0; line < maxLine; line++) {\n\t\t\tint levelLine = pdoc->GetLevel(line);\n\t\t\tif (levelLine & SC_FOLDLEVELHEADERFLAG) {\n\t\t\t\tSetFoldExpanded(line, true);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (int line = 0; line < maxLine; line++) {\n\t\t\tint level = pdoc->GetLevel(line);\n\t\t\tif ((level & SC_FOLDLEVELHEADERFLAG) &&\n\t\t\t\t\t(SC_FOLDLEVELBASE == LevelNumber(level))) {\n\t\t\t\tSetFoldExpanded(line, false);\n\t\t\t\tint lineMaxSubord = pdoc->GetLastChild(line, -1);\n\t\t\t\tif (lineMaxSubord > line) {\n\t\t\t\t\tcs.SetVisible(line + 1, lineMaxSubord, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tSetScrollBars();\n\tRedraw();\n}\n\nvoid Editor::FoldChanged(int line, int levelNow, int levelPrev) {\n\tif (levelNow & SC_FOLDLEVELHEADERFLAG) {\n\t\tif (!(levelPrev & SC_FOLDLEVELHEADERFLAG)) {\n\t\t\t// Adding a fold point.\n\t\t\tif (cs.SetExpanded(line, true)) {\n\t\t\t\tRedrawSelMargin();\n\t\t\t}\n\t\t\tFoldExpand(line, SC_FOLDACTION_EXPAND, levelPrev);\n\t\t}\n\t} else if (levelPrev & SC_FOLDLEVELHEADERFLAG) {\n\t\tconst int prevLine = line - 1;\n\t\tconst int prevLineLevel = pdoc->GetLevel(prevLine);\n\n\t\t// Combining two blocks where the first block is collapsed (e.g. by deleting the line(s) which separate(s) the two blocks)\n\t\tif ((LevelNumber(prevLineLevel) == LevelNumber(levelNow)) && !cs.GetVisible(prevLine))\n\t\t\tFoldLine(pdoc->GetFoldParent(prevLine), SC_FOLDACTION_EXPAND);\n\n\t\tif (!cs.GetExpanded(line)) {\n\t\t\t// Removing the fold from one that has been contracted so should expand\n\t\t\t// otherwise lines are left invisible with no way to make them visible\n\t\t\tif (cs.SetExpanded(line, true)) {\n\t\t\t\tRedrawSelMargin();\n\t\t\t}\n\t\t\t// Combining two blocks where the second one is collapsed (e.g. by adding characters in the line which separates the two blocks)\n\t\t\tFoldExpand(line, SC_FOLDACTION_EXPAND, levelPrev);\n\t\t}\n\t}\n\tif (!(levelNow & SC_FOLDLEVELWHITEFLAG) &&\n\t        (LevelNumber(levelPrev) > LevelNumber(levelNow))) {\n\t\tif (cs.HiddenLines()) {\n\t\t\t// See if should still be hidden\n\t\t\tint parentLine = pdoc->GetFoldParent(line);\n\t\t\tif ((parentLine < 0) || (cs.GetExpanded(parentLine) && cs.GetVisible(parentLine))) {\n\t\t\t\tcs.SetVisible(line, line, true);\n\t\t\t\tSetScrollBars();\n\t\t\t\tRedraw();\n\t\t\t}\n\t\t}\n\t}\n\n\t// Combining two blocks where the first one is collapsed (e.g. by adding characters in the line which separates the two blocks)\n\tif (!(levelNow & SC_FOLDLEVELWHITEFLAG) && (LevelNumber(levelPrev) < LevelNumber(levelNow))) {\n\t\tif (cs.HiddenLines()) {\n\t\t\tconst int parentLine = pdoc->GetFoldParent(line);\n\t\t\tif (!cs.GetExpanded(parentLine) && cs.GetExpanded(line))\n\t\t\t\tFoldLine(parentLine, SC_FOLDACTION_EXPAND);\n\t\t}\n\t}\n}\n\nvoid Editor::NeedShown(int pos, int len) {\n\tif (foldAutomatic & SC_AUTOMATICFOLD_SHOW) {\n\t\tint lineStart = pdoc->LineFromPosition(pos);\n\t\tint lineEnd = pdoc->LineFromPosition(pos+len);\n\t\tfor (int line = lineStart; line <= lineEnd; line++) {\n\t\t\tEnsureLineVisible(line, false);\n\t\t}\n\t} else {\n\t\tNotifyNeedShown(pos, len);\n\t}\n}\n\nint Editor::GetTag(char *tagValue, int tagNumber) {\n\tconst char *text = 0;\n\tint length = 0;\n\tif ((tagNumber >= 1) && (tagNumber <= 9)) {\n\t\tchar name[3] = \"\\\\?\";\n\t\tname[1] = static_cast<char>(tagNumber + '0');\n\t\tlength = 2;\n\t\ttext = pdoc->SubstituteByPosition(name, &length);\n\t}\n\tif (tagValue) {\n\t\tif (text)\n\t\t\tmemcpy(tagValue, text, length + 1);\n\t\telse\n\t\t\t*tagValue = '\\0';\n\t}\n\treturn length;\n}\n\nint Editor::ReplaceTarget(bool replacePatterns, const char *text, int length) {\n\tUndoGroup ug(pdoc);\n\tif (length == -1)\n\t\tlength = istrlen(text);\n\tif (replacePatterns) {\n\t\ttext = pdoc->SubstituteByPosition(text, &length);\n\t\tif (!text) {\n\t\t\treturn 0;\n\t\t}\n\t}\n\tif (targetStart != targetEnd)\n\t\tpdoc->DeleteChars(targetStart, targetEnd - targetStart);\n\ttargetEnd = targetStart;\n\tconst int lengthInserted = pdoc->InsertString(targetStart, text, length);\n\ttargetEnd = targetStart + lengthInserted;\n\treturn length;\n}\n\nbool Editor::IsUnicodeMode() const {\n\treturn pdoc && (SC_CP_UTF8 == pdoc->dbcsCodePage);\n}\n\nint Editor::CodePage() const {\n\tif (pdoc)\n\t\treturn pdoc->dbcsCodePage;\n\telse\n\t\treturn 0;\n}\n\nint Editor::WrapCount(int line) {\n\tAutoSurface surface(this);\n\tAutoLineLayout ll(view.llc, view.RetrieveLineLayout(line, *this));\n\n\tif (surface && ll) {\n\t\tview.LayoutLine(*this, line, surface, vs, ll, wrapWidth);\n\t\treturn ll->lines;\n\t} else {\n\t\treturn 1;\n\t}\n}\n\nvoid Editor::AddStyledText(char *buffer, int appendLength) {\n\t// The buffer consists of alternating character bytes and style bytes\n\tint textLength = appendLength / 2;\n\tstd::string text(textLength, '\\0');\n\tint i;\n\tfor (i = 0; i < textLength; i++) {\n\t\ttext[i] = buffer[i*2];\n\t}\n\tconst int lengthInserted = pdoc->InsertString(CurrentPosition(), text.c_str(), textLength);\n\tfor (i = 0; i < textLength; i++) {\n\t\ttext[i] = buffer[i*2+1];\n\t}\n\tpdoc->StartStyling(CurrentPosition(), static_cast<unsigned char>(0xff));\n\tpdoc->SetStyles(textLength, text.c_str());\n\tSetEmptySelection(sel.MainCaret() + lengthInserted);\n}\n\nbool Editor::ValidMargin(uptr_t wParam) const {\n\treturn wParam < vs.ms.size();\n}\n\nstatic char *CharPtrFromSPtr(sptr_t lParam) {\n\treturn reinterpret_cast<char *>(lParam);\n}\n\nvoid Editor::StyleSetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {\n\tvs.EnsureStyle(wParam);\n\tswitch (iMessage) {\n\tcase SCI_STYLESETFORE:\n\t\tvs.styles[wParam].fore = ColourDesired(static_cast<long>(lParam));\n\t\tbreak;\n\tcase SCI_STYLESETBACK:\n\t\tvs.styles[wParam].back = ColourDesired(static_cast<long>(lParam));\n\t\tbreak;\n\tcase SCI_STYLESETBOLD:\n\t\tvs.styles[wParam].weight = lParam != 0 ? SC_WEIGHT_BOLD : SC_WEIGHT_NORMAL;\n\t\tbreak;\n\tcase SCI_STYLESETWEIGHT:\n\t\tvs.styles[wParam].weight = static_cast<int>(lParam);\n\t\tbreak;\n\tcase SCI_STYLESETITALIC:\n\t\tvs.styles[wParam].italic = lParam != 0;\n\t\tbreak;\n\tcase SCI_STYLESETEOLFILLED:\n\t\tvs.styles[wParam].eolFilled = lParam != 0;\n\t\tbreak;\n\tcase SCI_STYLESETSIZE:\n\t\tvs.styles[wParam].size = static_cast<int>(lParam * SC_FONT_SIZE_MULTIPLIER);\n\t\tbreak;\n\tcase SCI_STYLESETSIZEFRACTIONAL:\n\t\tvs.styles[wParam].size = static_cast<int>(lParam);\n\t\tbreak;\n\tcase SCI_STYLESETFONT:\n\t\tif (lParam != 0) {\n\t\t\tvs.SetStyleFontName(static_cast<int>(wParam), CharPtrFromSPtr(lParam));\n\t\t}\n\t\tbreak;\n\tcase SCI_STYLESETUNDERLINE:\n\t\tvs.styles[wParam].underline = lParam != 0;\n\t\tbreak;\n\tcase SCI_STYLESETCASE:\n\t\tvs.styles[wParam].caseForce = static_cast<Style::ecaseForced>(lParam);\n\t\tbreak;\n\tcase SCI_STYLESETCHARACTERSET:\n\t\tvs.styles[wParam].characterSet = static_cast<int>(lParam);\n\t\tpdoc->SetCaseFolder(NULL);\n\t\tbreak;\n\tcase SCI_STYLESETVISIBLE:\n\t\tvs.styles[wParam].visible = lParam != 0;\n\t\tbreak;\n\tcase SCI_STYLESETCHANGEABLE:\n\t\tvs.styles[wParam].changeable = lParam != 0;\n\t\tbreak;\n\tcase SCI_STYLESETHOTSPOT:\n\t\tvs.styles[wParam].hotspot = lParam != 0;\n\t\tbreak;\n\t}\n\tInvalidateStyleRedraw();\n}\n\nsptr_t Editor::StyleGetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {\n\tvs.EnsureStyle(wParam);\n\tswitch (iMessage) {\n\tcase SCI_STYLEGETFORE:\n\t\treturn vs.styles[wParam].fore.AsLong();\n\tcase SCI_STYLEGETBACK:\n\t\treturn vs.styles[wParam].back.AsLong();\n\tcase SCI_STYLEGETBOLD:\n\t\treturn vs.styles[wParam].weight > SC_WEIGHT_NORMAL;\n\tcase SCI_STYLEGETWEIGHT:\n\t\treturn vs.styles[wParam].weight;\n\tcase SCI_STYLEGETITALIC:\n\t\treturn vs.styles[wParam].italic ? 1 : 0;\n\tcase SCI_STYLEGETEOLFILLED:\n\t\treturn vs.styles[wParam].eolFilled ? 1 : 0;\n\tcase SCI_STYLEGETSIZE:\n\t\treturn vs.styles[wParam].size / SC_FONT_SIZE_MULTIPLIER;\n\tcase SCI_STYLEGETSIZEFRACTIONAL:\n\t\treturn vs.styles[wParam].size;\n\tcase SCI_STYLEGETFONT:\n\t\treturn StringResult(lParam, vs.styles[wParam].fontName);\n\tcase SCI_STYLEGETUNDERLINE:\n\t\treturn vs.styles[wParam].underline ? 1 : 0;\n\tcase SCI_STYLEGETCASE:\n\t\treturn static_cast<int>(vs.styles[wParam].caseForce);\n\tcase SCI_STYLEGETCHARACTERSET:\n\t\treturn vs.styles[wParam].characterSet;\n\tcase SCI_STYLEGETVISIBLE:\n\t\treturn vs.styles[wParam].visible ? 1 : 0;\n\tcase SCI_STYLEGETCHANGEABLE:\n\t\treturn vs.styles[wParam].changeable ? 1 : 0;\n\tcase SCI_STYLEGETHOTSPOT:\n\t\treturn vs.styles[wParam].hotspot ? 1 : 0;\n\t}\n\treturn 0;\n}\n\nvoid Editor::SetSelectionNMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {\n\tInvalidateRange(sel.Range(wParam).Start().Position(), sel.Range(wParam).End().Position());\n\n\tswitch (iMessage) {\n\tcase SCI_SETSELECTIONNCARET:\n\t\tsel.Range(wParam).caret.SetPosition(static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETSELECTIONNANCHOR:\n\t\tsel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETSELECTIONNCARETVIRTUALSPACE:\n\t\tsel.Range(wParam).caret.SetVirtualSpace(static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETSELECTIONNANCHORVIRTUALSPACE:\n\t\tsel.Range(wParam).anchor.SetVirtualSpace(static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETSELECTIONNSTART:\n\t\tsel.Range(wParam).anchor.SetPosition(static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETSELECTIONNEND:\n\t\tsel.Range(wParam).caret.SetPosition(static_cast<int>(lParam));\n\t\tbreak;\n\t}\n\n\tInvalidateRange(sel.Range(wParam).Start().Position(), sel.Range(wParam).End().Position());\n\tContainerNeedsUpdate(SC_UPDATE_SELECTION);\n}\n\nsptr_t Editor::StringResult(sptr_t lParam, const char *val) {\n\tconst size_t len = val ? strlen(val) : 0;\n\tif (lParam) {\n\t\tchar *ptr = CharPtrFromSPtr(lParam);\n\t\tif (val)\n\t\t\tmemcpy(ptr, val, len+1);\n\t\telse\n\t\t\t*ptr = 0;\n\t}\n\treturn len;\t// Not including NUL\n}\n\nsptr_t Editor::BytesResult(sptr_t lParam, const unsigned char *val, size_t len) {\n\t// No NUL termination: len is number of valid/displayed bytes\n\tif ((lParam) && (len > 0)) {\n\t\tchar *ptr = CharPtrFromSPtr(lParam);\n\t\tif (val)\n\t\t\tmemcpy(ptr, val, len);\n\t\telse\n\t\t\t*ptr = 0;\n\t}\n\treturn val ? len : 0;\n}\n\nsptr_t Editor::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {\n\t//Platform::DebugPrintf(\"S start wnd proc %d %d %d\\n\",iMessage, wParam, lParam);\n\n\t// Optional macro recording hook\n\tif (recordingMacro)\n\t\tNotifyMacroRecord(iMessage, wParam, lParam);\n\n\tswitch (iMessage) {\n\n\tcase SCI_GETTEXT: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn pdoc->Length() + 1;\n\t\t\tif (wParam == 0)\n\t\t\t\treturn 0;\n\t\t\tchar *ptr = CharPtrFromSPtr(lParam);\n\t\t\tunsigned int iChar = 0;\n\t\t\tfor (; iChar < wParam - 1; iChar++)\n\t\t\t\tptr[iChar] = pdoc->CharAt(iChar);\n\t\t\tptr[iChar] = '\\0';\n\t\t\treturn iChar;\n\t\t}\n\n\tcase SCI_SETTEXT: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tUndoGroup ug(pdoc);\n\t\t\tpdoc->DeleteChars(0, pdoc->Length());\n\t\t\tSetEmptySelection(0);\n\t\t\tconst char *text = CharPtrFromSPtr(lParam);\n\t\t\tpdoc->InsertString(0, text, istrlen(text));\n\t\t\treturn 1;\n\t\t}\n\n\tcase SCI_GETTEXTLENGTH:\n\t\treturn pdoc->Length();\n\n\tcase SCI_CUT:\n\t\tCut();\n\t\tSetLastXChosen();\n\t\tbreak;\n\n\tcase SCI_COPY:\n\t\tCopy();\n\t\tbreak;\n\n\tcase SCI_COPYALLOWLINE:\n\t\tCopyAllowLine();\n\t\tbreak;\n\n\tcase SCI_VERTICALCENTRECARET:\n\t\tVerticalCentreCaret();\n\t\tbreak;\n\n\tcase SCI_MOVESELECTEDLINESUP:\n\t\tMoveSelectedLinesUp();\n\t\tbreak;\n\n\tcase SCI_MOVESELECTEDLINESDOWN:\n\t\tMoveSelectedLinesDown();\n\t\tbreak;\n\n\tcase SCI_COPYRANGE:\n\t\tCopyRangeToClipboard(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_COPYTEXT:\n\t\tCopyText(static_cast<int>(wParam), CharPtrFromSPtr(lParam));\n\t\tbreak;\n\n\tcase SCI_PASTE:\n\t\tPaste();\n\t\tif ((caretSticky == SC_CARETSTICKY_OFF) || (caretSticky == SC_CARETSTICKY_WHITESPACE)) {\n\t\t\tSetLastXChosen();\n\t\t}\n\t\tEnsureCaretVisible();\n\t\tbreak;\n\n\tcase SCI_CLEAR:\n\t\tClear();\n\t\tSetLastXChosen();\n\t\tEnsureCaretVisible();\n\t\tbreak;\n\n\tcase SCI_UNDO:\n\t\tUndo();\n\t\tSetLastXChosen();\n\t\tbreak;\n\n\tcase SCI_CANUNDO:\n\t\treturn (pdoc->CanUndo() && !pdoc->IsReadOnly()) ? 1 : 0;\n\n\tcase SCI_EMPTYUNDOBUFFER:\n\t\tpdoc->DeleteUndoHistory();\n\t\treturn 0;\n\n\tcase SCI_GETFIRSTVISIBLELINE:\n\t\treturn topLine;\n\n\tcase SCI_SETFIRSTVISIBLELINE:\n\t\tScrollTo(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GETLINE: {\t// Risk of overwriting the end of the buffer\n\t\t\tint lineStart = pdoc->LineStart(static_cast<int>(wParam));\n\t\t\tint lineEnd = pdoc->LineStart(static_cast<int>(wParam + 1));\n\t\t\tif (lParam == 0) {\n\t\t\t\treturn lineEnd - lineStart;\n\t\t\t}\n\t\t\tchar *ptr = CharPtrFromSPtr(lParam);\n\t\t\tint iPlace = 0;\n\t\t\tfor (int iChar = lineStart; iChar < lineEnd; iChar++) {\n\t\t\t\tptr[iPlace++] = pdoc->CharAt(iChar);\n\t\t\t}\n\t\t\treturn iPlace;\n\t\t}\n\n\tcase SCI_GETLINECOUNT:\n\t\tif (pdoc->LinesTotal() == 0)\n\t\t\treturn 1;\n\t\telse\n\t\t\treturn pdoc->LinesTotal();\n\n\tcase SCI_GETMODIFY:\n\t\treturn !pdoc->IsSavePoint();\n\n\tcase SCI_SETSEL: {\n\t\t\tint nStart = static_cast<int>(wParam);\n\t\t\tint nEnd = static_cast<int>(lParam);\n\t\t\tif (nEnd < 0)\n\t\t\t\tnEnd = pdoc->Length();\n\t\t\tif (nStart < 0)\n\t\t\t\tnStart = nEnd; \t// Remove selection\n\t\t\tInvalidateSelection(SelectionRange(nStart, nEnd));\n\t\t\tsel.Clear();\n\t\t\tsel.selType = Selection::selStream;\n\t\t\tSetSelection(nEnd, nStart);\n\t\t\tEnsureCaretVisible();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETSELTEXT: {\n\t\t\tSelectionText selectedText;\n\t\t\tCopySelectionRange(&selectedText);\n\t\t\tif (lParam == 0) {\n\t\t\t\treturn selectedText.LengthWithTerminator();\n\t\t\t} else {\n\t\t\t\tchar *ptr = CharPtrFromSPtr(lParam);\n\t\t\t\tunsigned int iChar = 0;\n\t\t\t\tif (selectedText.Length()) {\n\t\t\t\t\tfor (; iChar < selectedText.LengthWithTerminator(); iChar++)\n\t\t\t\t\t\tptr[iChar] = selectedText.Data()[iChar];\n\t\t\t\t} else {\n\t\t\t\t\tptr[0] = '\\0';\n\t\t\t\t}\n\t\t\t\treturn iChar;\n\t\t\t}\n\t\t}\n\n\tcase SCI_LINEFROMPOSITION:\n\t\tif (static_cast<int>(wParam) < 0)\n\t\t\treturn 0;\n\t\treturn pdoc->LineFromPosition(static_cast<int>(wParam));\n\n\tcase SCI_POSITIONFROMLINE:\n\t\tif (static_cast<int>(wParam) < 0)\n\t\t\twParam = pdoc->LineFromPosition(SelectionStart().Position());\n\t\tif (wParam == 0)\n\t\t\treturn 0; \t// Even if there is no text, there is a first line that starts at 0\n\t\tif (static_cast<int>(wParam) > pdoc->LinesTotal())\n\t\t\treturn -1;\n\t\t//if (wParam > pdoc->LineFromPosition(pdoc->Length()))\t// Useful test, anyway...\n\t\t//\treturn -1;\n\t\treturn pdoc->LineStart(static_cast<int>(wParam));\n\n\t\t// Replacement of the old Scintilla interpretation of EM_LINELENGTH\n\tcase SCI_LINELENGTH:\n\t\tif ((static_cast<int>(wParam) < 0) ||\n\t\t        (static_cast<int>(wParam) > pdoc->LineFromPosition(pdoc->Length())))\n\t\t\treturn 0;\n\t\treturn pdoc->LineStart(static_cast<int>(wParam) + 1) - pdoc->LineStart(static_cast<int>(wParam));\n\n\tcase SCI_REPLACESEL: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tUndoGroup ug(pdoc);\n\t\t\tClearSelection();\n\t\t\tchar *replacement = CharPtrFromSPtr(lParam);\n\t\t\tconst int lengthInserted = pdoc->InsertString(\n\t\t\t\tsel.MainCaret(), replacement, istrlen(replacement));\n\t\t\tSetEmptySelection(sel.MainCaret() + lengthInserted);\n\t\t\tEnsureCaretVisible();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_SETTARGETSTART:\n\t\ttargetStart = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETTARGETSTART:\n\t\treturn targetStart;\n\n\tcase SCI_SETTARGETEND:\n\t\ttargetEnd = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETTARGETEND:\n\t\treturn targetEnd;\n\n\tcase SCI_SETTARGETRANGE:\n\t\ttargetStart = static_cast<int>(wParam);\n\t\ttargetEnd = static_cast<int>(lParam);\n\t\tbreak;\n\n\tcase SCI_TARGETWHOLEDOCUMENT:\n\t\ttargetStart = 0;\n\t\ttargetEnd = pdoc->Length();\n\t\tbreak;\n\n\tcase SCI_TARGETFROMSELECTION:\n\t\tif (sel.MainCaret() < sel.MainAnchor()) {\n\t\t\ttargetStart = sel.MainCaret();\n\t\t\ttargetEnd = sel.MainAnchor();\n\t\t} else {\n\t\t\ttargetStart = sel.MainAnchor();\n\t\t\ttargetEnd = sel.MainCaret();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETTARGETTEXT: {\n\t\t\tstd::string text = RangeText(targetStart, targetEnd);\n\t\t\treturn BytesResult(lParam, reinterpret_cast<const unsigned char *>(text.c_str()), text.length());\n\t\t}\n\n\tcase SCI_REPLACETARGET:\n\t\tPLATFORM_ASSERT(lParam);\n\t\treturn ReplaceTarget(false, CharPtrFromSPtr(lParam), static_cast<int>(wParam));\n\n\tcase SCI_REPLACETARGETRE:\n\t\tPLATFORM_ASSERT(lParam);\n\t\treturn ReplaceTarget(true, CharPtrFromSPtr(lParam), static_cast<int>(wParam));\n\n\tcase SCI_SEARCHINTARGET:\n\t\tPLATFORM_ASSERT(lParam);\n\t\treturn SearchInTarget(CharPtrFromSPtr(lParam), static_cast<int>(wParam));\n\n\tcase SCI_SETSEARCHFLAGS:\n\t\tsearchFlags = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETSEARCHFLAGS:\n\t\treturn searchFlags;\n\n\tcase SCI_GETTAG:\n\t\treturn GetTag(CharPtrFromSPtr(lParam), static_cast<int>(wParam));\n\n\tcase SCI_POSITIONBEFORE:\n\t\treturn pdoc->MovePositionOutsideChar(static_cast<int>(wParam) - 1, -1, true);\n\n\tcase SCI_POSITIONAFTER:\n\t\treturn pdoc->MovePositionOutsideChar(static_cast<int>(wParam) + 1, 1, true);\n\n\tcase SCI_POSITIONRELATIVE:\n\t\treturn Platform::Clamp(pdoc->GetRelativePosition(static_cast<int>(wParam), static_cast<int>(lParam)), 0, pdoc->Length());\n\n\tcase SCI_LINESCROLL:\n\t\tScrollTo(topLine + static_cast<int>(lParam));\n\t\tHorizontalScrollTo(xOffset + static_cast<int>(wParam)* static_cast<int>(vs.spaceWidth));\n\t\treturn 1;\n\n\tcase SCI_SETXOFFSET:\n\t\txOffset = static_cast<int>(wParam);\n\t\tContainerNeedsUpdate(SC_UPDATE_H_SCROLL);\n\t\tSetHorizontalScrollPos();\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETXOFFSET:\n\t\treturn xOffset;\n\n\tcase SCI_CHOOSECARETX:\n\t\tSetLastXChosen();\n\t\tbreak;\n\n\tcase SCI_SCROLLCARET:\n\t\tEnsureCaretVisible();\n\t\tbreak;\n\n\tcase SCI_SETREADONLY:\n\t\tpdoc->SetReadOnly(wParam != 0);\n\t\treturn 1;\n\n\tcase SCI_GETREADONLY:\n\t\treturn pdoc->IsReadOnly();\n\n\tcase SCI_CANPASTE:\n\t\treturn CanPaste();\n\n\tcase SCI_POINTXFROMPOSITION:\n\t\tif (lParam < 0) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tPoint pt = LocationFromPosition(static_cast<int>(lParam));\n\t\t\t// Convert to view-relative\n\t\t\treturn static_cast<int>(pt.x) - vs.textStart + vs.fixedColumnWidth;\n\t\t}\n\n\tcase SCI_POINTYFROMPOSITION:\n\t\tif (lParam < 0) {\n\t\t\treturn 0;\n\t\t} else {\n\t\t\tPoint pt = LocationFromPosition(static_cast<int>(lParam));\n\t\t\treturn static_cast<int>(pt.y);\n\t\t}\n\n\tcase SCI_FINDTEXT:\n\t\treturn FindText(wParam, lParam);\n\n\tcase SCI_GETTEXTRANGE: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tSci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam);\n\t\t\tint cpMax = static_cast<int>(tr->chrg.cpMax);\n\t\t\tif (cpMax == -1)\n\t\t\t\tcpMax = pdoc->Length();\n\t\t\tPLATFORM_ASSERT(cpMax <= pdoc->Length());\n\t\t\tint len = static_cast<int>(cpMax - tr->chrg.cpMin); \t// No -1 as cpMin and cpMax are referring to inter character positions\n\t\t\tpdoc->GetCharRange(tr->lpstrText, static_cast<int>(tr->chrg.cpMin), len);\n\t\t\t// Spec says copied text is terminated with a NUL\n\t\t\ttr->lpstrText[len] = '\\0';\n\t\t\treturn len; \t// Not including NUL\n\t\t}\n\n\tcase SCI_HIDESELECTION:\n\t\tview.hideSelection = wParam != 0;\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_FORMATRANGE:\n\t\treturn FormatRange(wParam != 0, reinterpret_cast<Sci_RangeToFormat *>(lParam));\n\n\tcase SCI_GETMARGINLEFT:\n\t\treturn vs.leftMarginWidth;\n\n\tcase SCI_GETMARGINRIGHT:\n\t\treturn vs.rightMarginWidth;\n\n\tcase SCI_SETMARGINLEFT:\n\t\tlastXChosen += static_cast<int>(lParam) - vs.leftMarginWidth;\n\t\tvs.leftMarginWidth = static_cast<int>(lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETMARGINRIGHT:\n\t\tvs.rightMarginWidth = static_cast<int>(lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\t\t// Control specific mesages\n\n\tcase SCI_ADDTEXT: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tconst int lengthInserted = pdoc->InsertString(\n\t\t\t\tCurrentPosition(), CharPtrFromSPtr(lParam), static_cast<int>(wParam));\n\t\t\tSetEmptySelection(sel.MainCaret() + lengthInserted);\n\t\t\treturn 0;\n\t\t}\n\n\tcase SCI_ADDSTYLEDTEXT:\n\t\tif (lParam)\n\t\t\tAddStyledText(CharPtrFromSPtr(lParam), static_cast<int>(wParam));\n\t\treturn 0;\n\n\tcase SCI_INSERTTEXT: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tint insertPos = static_cast<int>(wParam);\n\t\t\tif (static_cast<int>(wParam) == -1)\n\t\t\t\tinsertPos = CurrentPosition();\n\t\t\tint newCurrent = CurrentPosition();\n\t\t\tchar *sz = CharPtrFromSPtr(lParam);\n\t\t\tconst int lengthInserted = pdoc->InsertString(insertPos, sz, istrlen(sz));\n\t\t\tif (newCurrent > insertPos)\n\t\t\t\tnewCurrent += lengthInserted;\n\t\t\tSetEmptySelection(newCurrent);\n\t\t\treturn 0;\n\t\t}\n\n\tcase SCI_CHANGEINSERTION:\n\t\tPLATFORM_ASSERT(lParam);\n\t\tpdoc->ChangeInsertion(CharPtrFromSPtr(lParam), static_cast<int>(wParam));\n\t\treturn 0;\n\n\tcase SCI_APPENDTEXT:\n\t\tpdoc->InsertString(pdoc->Length(), CharPtrFromSPtr(lParam), static_cast<int>(wParam));\n\t\treturn 0;\n\n\tcase SCI_CLEARALL:\n\t\tClearAll();\n\t\treturn 0;\n\n\tcase SCI_DELETERANGE:\n\t\tpdoc->DeleteChars(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\treturn 0;\n\n\tcase SCI_CLEARDOCUMENTSTYLE:\n\t\tClearDocumentStyle();\n\t\treturn 0;\n\n\tcase SCI_SETUNDOCOLLECTION:\n\t\tpdoc->SetUndoCollection(wParam != 0);\n\t\treturn 0;\n\n\tcase SCI_GETUNDOCOLLECTION:\n\t\treturn pdoc->IsCollectingUndo();\n\n\tcase SCI_BEGINUNDOACTION:\n\t\tpdoc->BeginUndoAction();\n\t\treturn 0;\n\n\tcase SCI_ENDUNDOACTION:\n\t\tpdoc->EndUndoAction();\n\t\treturn 0;\n\n\tcase SCI_GETCARETPERIOD:\n\t\treturn caret.period;\n\n\tcase SCI_SETCARETPERIOD:\n\t\tCaretSetPeriod(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GETWORDCHARS:\n\t\treturn pdoc->GetCharsOfClass(CharClassify::ccWord, reinterpret_cast<unsigned char *>(lParam));\n\n\tcase SCI_SETWORDCHARS: {\n\t\t\tpdoc->SetDefaultCharClasses(false);\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tpdoc->SetCharClasses(reinterpret_cast<unsigned char *>(lParam), CharClassify::ccWord);\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETWHITESPACECHARS:\n\t\treturn pdoc->GetCharsOfClass(CharClassify::ccSpace, reinterpret_cast<unsigned char *>(lParam));\n\n\tcase SCI_SETWHITESPACECHARS: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tpdoc->SetCharClasses(reinterpret_cast<unsigned char *>(lParam), CharClassify::ccSpace);\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETPUNCTUATIONCHARS:\n\t\treturn pdoc->GetCharsOfClass(CharClassify::ccPunctuation, reinterpret_cast<unsigned char *>(lParam));\n\n\tcase SCI_SETPUNCTUATIONCHARS: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tpdoc->SetCharClasses(reinterpret_cast<unsigned char *>(lParam), CharClassify::ccPunctuation);\n\t\t}\n\t\tbreak;\n\n\tcase SCI_SETCHARSDEFAULT:\n\t\tpdoc->SetDefaultCharClasses(true);\n\t\tbreak;\n\n\tcase SCI_GETLENGTH:\n\t\treturn pdoc->Length();\n\n\tcase SCI_ALLOCATE:\n\t\tpdoc->Allocate(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GETCHARAT:\n\t\treturn pdoc->CharAt(static_cast<int>(wParam));\n\n\tcase SCI_SETCURRENTPOS:\n\t\tif (sel.IsRectangular()) {\n\t\t\tsel.Rectangular().caret.SetPosition(static_cast<int>(wParam));\n\t\t\tSetRectangularRange();\n\t\t\tRedraw();\n\t\t} else {\n\t\t\tSetSelection(static_cast<int>(wParam), sel.MainAnchor());\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETCURRENTPOS:\n\t\treturn sel.IsRectangular() ? sel.Rectangular().caret.Position() : sel.MainCaret();\n\n\tcase SCI_SETANCHOR:\n\t\tif (sel.IsRectangular()) {\n\t\t\tsel.Rectangular().anchor.SetPosition(static_cast<int>(wParam));\n\t\t\tSetRectangularRange();\n\t\t\tRedraw();\n\t\t} else {\n\t\t\tSetSelection(sel.MainCaret(), static_cast<int>(wParam));\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETANCHOR:\n\t\treturn sel.IsRectangular() ? sel.Rectangular().anchor.Position() : sel.MainAnchor();\n\n\tcase SCI_SETSELECTIONSTART:\n\t\tSetSelection(Platform::Maximum(sel.MainCaret(), static_cast<int>(wParam)), static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GETSELECTIONSTART:\n\t\treturn sel.LimitsForRectangularElseMain().start.Position();\n\n\tcase SCI_SETSELECTIONEND:\n\t\tSetSelection(static_cast<int>(wParam), Platform::Minimum(sel.MainAnchor(), static_cast<int>(wParam)));\n\t\tbreak;\n\n\tcase SCI_GETSELECTIONEND:\n\t\treturn sel.LimitsForRectangularElseMain().end.Position();\n\n\tcase SCI_SETEMPTYSELECTION:\n\t\tSetEmptySelection(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_SETPRINTMAGNIFICATION:\n\t\tview.printParameters.magnification = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETPRINTMAGNIFICATION:\n\t\treturn view.printParameters.magnification;\n\n\tcase SCI_SETPRINTCOLOURMODE:\n\t\tview.printParameters.colourMode = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETPRINTCOLOURMODE:\n\t\treturn view.printParameters.colourMode;\n\n\tcase SCI_SETPRINTWRAPMODE:\n\t\tview.printParameters.wrapState = (wParam == SC_WRAP_WORD) ? eWrapWord : eWrapNone;\n\t\tbreak;\n\n\tcase SCI_GETPRINTWRAPMODE:\n\t\treturn view.printParameters.wrapState;\n\n\tcase SCI_GETSTYLEAT:\n\t\tif (static_cast<int>(wParam) >= pdoc->Length())\n\t\t\treturn 0;\n\t\telse\n\t\t\treturn pdoc->StyleAt(static_cast<int>(wParam));\n\n\tcase SCI_REDO:\n\t\tRedo();\n\t\tbreak;\n\n\tcase SCI_SELECTALL:\n\t\tSelectAll();\n\t\tbreak;\n\n\tcase SCI_SETSAVEPOINT:\n\t\tpdoc->SetSavePoint();\n\t\tbreak;\n\n\tcase SCI_GETSTYLEDTEXT: {\n\t\t\tif (lParam == 0)\n\t\t\t\treturn 0;\n\t\t\tSci_TextRange *tr = reinterpret_cast<Sci_TextRange *>(lParam);\n\t\t\tint iPlace = 0;\n\t\t\tfor (long iChar = tr->chrg.cpMin; iChar < tr->chrg.cpMax; iChar++) {\n\t\t\t\ttr->lpstrText[iPlace++] = pdoc->CharAt(static_cast<int>(iChar));\n\t\t\t\ttr->lpstrText[iPlace++] = pdoc->StyleAt(static_cast<int>(iChar));\n\t\t\t}\n\t\t\ttr->lpstrText[iPlace] = '\\0';\n\t\t\ttr->lpstrText[iPlace + 1] = '\\0';\n\t\t\treturn iPlace;\n\t\t}\n\n\tcase SCI_CANREDO:\n\t\treturn (pdoc->CanRedo() && !pdoc->IsReadOnly()) ? 1 : 0;\n\n\tcase SCI_MARKERLINEFROMHANDLE:\n\t\treturn pdoc->LineFromHandle(static_cast<int>(wParam));\n\n\tcase SCI_MARKERDELETEHANDLE:\n\t\tpdoc->DeleteMarkFromHandle(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GETVIEWWS:\n\t\treturn vs.viewWhitespace;\n\n\tcase SCI_SETVIEWWS:\n\t\tvs.viewWhitespace = static_cast<WhiteSpaceVisibility>(wParam);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETTABDRAWMODE:\n\t\treturn vs.tabDrawMode;\n\n\tcase SCI_SETTABDRAWMODE:\n\t\tvs.tabDrawMode = static_cast<TabDrawMode>(wParam);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETWHITESPACESIZE:\n\t\treturn vs.whitespaceSize;\n\n\tcase SCI_SETWHITESPACESIZE:\n\t\tvs.whitespaceSize = static_cast<int>(wParam);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_POSITIONFROMPOINT:\n\t\treturn PositionFromLocation(Point::FromInts(static_cast<int>(wParam) - vs.ExternalMarginWidth(), static_cast<int>(lParam)),\n\t\t\t\t\t    false, false);\n\n\tcase SCI_POSITIONFROMPOINTCLOSE:\n\t\treturn PositionFromLocation(Point::FromInts(static_cast<int>(wParam) - vs.ExternalMarginWidth(), static_cast<int>(lParam)),\n\t\t\t\t\t    true, false);\n\n\tcase SCI_CHARPOSITIONFROMPOINT:\n\t\treturn PositionFromLocation(Point::FromInts(static_cast<int>(wParam) - vs.ExternalMarginWidth(), static_cast<int>(lParam)),\n\t\t\t\t\t    false, true);\n\n\tcase SCI_CHARPOSITIONFROMPOINTCLOSE:\n\t\treturn PositionFromLocation(Point::FromInts(static_cast<int>(wParam) - vs.ExternalMarginWidth(), static_cast<int>(lParam)),\n\t\t\t\t\t    true, true);\n\n\tcase SCI_GOTOLINE:\n\t\tGoToLine(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GOTOPOS:\n\t\tSetEmptySelection(static_cast<int>(wParam));\n\t\tEnsureCaretVisible();\n\t\tbreak;\n\n\tcase SCI_GETCURLINE: {\n\t\t\tint lineCurrentPos = pdoc->LineFromPosition(sel.MainCaret());\n\t\t\tint lineStart = pdoc->LineStart(lineCurrentPos);\n\t\t\tunsigned int lineEnd = pdoc->LineStart(lineCurrentPos + 1);\n\t\t\tif (lParam == 0) {\n\t\t\t\treturn 1 + lineEnd - lineStart;\n\t\t\t}\n\t\t\tPLATFORM_ASSERT(wParam > 0);\n\t\t\tchar *ptr = CharPtrFromSPtr(lParam);\n\t\t\tunsigned int iPlace = 0;\n\t\t\tfor (unsigned int iChar = lineStart; iChar < lineEnd && iPlace < wParam - 1; iChar++) {\n\t\t\t\tptr[iPlace++] = pdoc->CharAt(iChar);\n\t\t\t}\n\t\t\tptr[iPlace] = '\\0';\n\t\t\treturn sel.MainCaret() - lineStart;\n\t\t}\n\n\tcase SCI_GETENDSTYLED:\n\t\treturn pdoc->GetEndStyled();\n\n\tcase SCI_GETEOLMODE:\n\t\treturn pdoc->eolMode;\n\n\tcase SCI_SETEOLMODE:\n\t\tpdoc->eolMode = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_SETLINEENDTYPESALLOWED:\n\t\tif (pdoc->SetLineEndTypesAllowed(static_cast<int>(wParam))) {\n\t\t\tcs.Clear();\n\t\t\tcs.InsertLines(0, pdoc->LinesTotal() - 1);\n\t\t\tSetAnnotationHeights(0, pdoc->LinesTotal());\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETLINEENDTYPESALLOWED:\n\t\treturn pdoc->GetLineEndTypesAllowed();\n\n\tcase SCI_GETLINEENDTYPESACTIVE:\n\t\treturn pdoc->GetLineEndTypesActive();\n\n\tcase SCI_STARTSTYLING:\n\t\tpdoc->StartStyling(static_cast<int>(wParam), static_cast<char>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETSTYLING:\n\t\tif (static_cast<int>(wParam) < 0)\n\t\t\terrorStatus = SC_STATUS_FAILURE;\n\t\telse\n\t\t\tpdoc->SetStyleFor(static_cast<int>(wParam), static_cast<char>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETSTYLINGEX:             // Specify a complete styling buffer\n\t\tif (lParam == 0)\n\t\t\treturn 0;\n\t\tpdoc->SetStyles(static_cast<int>(wParam), CharPtrFromSPtr(lParam));\n\t\tbreak;\n\n\tcase SCI_SETBUFFEREDDRAW:\n\t\tview.bufferedDraw = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETBUFFEREDDRAW:\n\t\treturn view.bufferedDraw;\n\n\tcase SCI_GETTWOPHASEDRAW:\n\t\treturn view.phasesDraw == EditView::phasesTwo;\n\n\tcase SCI_SETTWOPHASEDRAW:\n\t\tif (view.SetTwoPhaseDraw(wParam != 0))\n\t\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETPHASESDRAW:\n\t\treturn view.phasesDraw;\n\n\tcase SCI_SETPHASESDRAW:\n\t\tif (view.SetPhasesDraw(static_cast<int>(wParam)))\n\t\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETFONTQUALITY:\n\t\tvs.extraFontFlag &= ~SC_EFF_QUALITY_MASK;\n\t\tvs.extraFontFlag |= (wParam & SC_EFF_QUALITY_MASK);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETFONTQUALITY:\n\t\treturn (vs.extraFontFlag & SC_EFF_QUALITY_MASK);\n\n\tcase SCI_SETTABWIDTH:\n\t\tif (wParam > 0) {\n\t\t\tpdoc->tabInChars = static_cast<int>(wParam);\n\t\t\tif (pdoc->indentInChars == 0)\n\t\t\t\tpdoc->actualIndentInChars = pdoc->tabInChars;\n\t\t}\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETTABWIDTH:\n\t\treturn pdoc->tabInChars;\n\n\tcase SCI_CLEARTABSTOPS:\n\t\tif (view.ClearTabstops(static_cast<int>(wParam))) {\n\t\t\tDocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<int>(wParam));\n\t\t\tNotifyModified(pdoc, mh, NULL);\n\t\t}\n\t\tbreak;\n\n\tcase SCI_ADDTABSTOP:\n\t\tif (view.AddTabstop(static_cast<int>(wParam), static_cast<int>(lParam))) {\n\t\t\tDocModification mh(SC_MOD_CHANGETABSTOPS, 0, 0, 0, 0, static_cast<int>(wParam));\n\t\t\tNotifyModified(pdoc, mh, NULL);\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETNEXTTABSTOP:\n\t\treturn view.GetNextTabstop(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_SETINDENT:\n\t\tpdoc->indentInChars = static_cast<int>(wParam);\n\t\tif (pdoc->indentInChars != 0)\n\t\t\tpdoc->actualIndentInChars = pdoc->indentInChars;\n\t\telse\n\t\t\tpdoc->actualIndentInChars = pdoc->tabInChars;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETINDENT:\n\t\treturn pdoc->indentInChars;\n\n\tcase SCI_SETUSETABS:\n\t\tpdoc->useTabs = wParam != 0;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETUSETABS:\n\t\treturn pdoc->useTabs;\n\n\tcase SCI_SETLINEINDENTATION:\n\t\tpdoc->SetLineIndentation(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_GETLINEINDENTATION:\n\t\treturn pdoc->GetLineIndentation(static_cast<int>(wParam));\n\n\tcase SCI_GETLINEINDENTPOSITION:\n\t\treturn pdoc->GetLineIndentPosition(static_cast<int>(wParam));\n\n\tcase SCI_SETTABINDENTS:\n\t\tpdoc->tabIndents = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETTABINDENTS:\n\t\treturn pdoc->tabIndents;\n\n\tcase SCI_SETBACKSPACEUNINDENTS:\n\t\tpdoc->backspaceUnindents = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETBACKSPACEUNINDENTS:\n\t\treturn pdoc->backspaceUnindents;\n\n\tcase SCI_SETMOUSEDWELLTIME:\n\t\tdwellDelay = static_cast<int>(wParam);\n\t\tticksToDwell = dwellDelay;\n\t\tbreak;\n\n\tcase SCI_GETMOUSEDWELLTIME:\n\t\treturn dwellDelay;\n\n\tcase SCI_WORDSTARTPOSITION:\n\t\treturn pdoc->ExtendWordSelect(static_cast<int>(wParam), -1, lParam != 0);\n\n\tcase SCI_WORDENDPOSITION:\n\t\treturn pdoc->ExtendWordSelect(static_cast<int>(wParam), 1, lParam != 0);\n\n\tcase SCI_ISRANGEWORD:\n\t\treturn pdoc->IsWordAt(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_SETIDLESTYLING:\n\t\tidleStyling = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETIDLESTYLING:\n\t\treturn idleStyling;\n\n\tcase SCI_SETWRAPMODE:\n\t\tif (vs.SetWrapState(static_cast<int>(wParam))) {\n\t\t\txOffset = 0;\n\t\t\tContainerNeedsUpdate(SC_UPDATE_H_SCROLL);\n\t\t\tInvalidateStyleRedraw();\n\t\t\tReconfigureScrollBars();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETWRAPMODE:\n\t\treturn vs.wrapState;\n\n\tcase SCI_SETWRAPVISUALFLAGS:\n\t\tif (vs.SetWrapVisualFlags(static_cast<int>(wParam))) {\n\t\t\tInvalidateStyleRedraw();\n\t\t\tReconfigureScrollBars();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETWRAPVISUALFLAGS:\n\t\treturn vs.wrapVisualFlags;\n\n\tcase SCI_SETWRAPVISUALFLAGSLOCATION:\n\t\tif (vs.SetWrapVisualFlagsLocation(static_cast<int>(wParam))) {\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETWRAPVISUALFLAGSLOCATION:\n\t\treturn vs.wrapVisualFlagsLocation;\n\n\tcase SCI_SETWRAPSTARTINDENT:\n\t\tif (vs.SetWrapVisualStartIndent(static_cast<int>(wParam))) {\n\t\t\tInvalidateStyleRedraw();\n\t\t\tReconfigureScrollBars();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETWRAPSTARTINDENT:\n\t\treturn vs.wrapVisualStartIndent;\n\n\tcase SCI_SETWRAPINDENTMODE:\n\t\tif (vs.SetWrapIndentMode(static_cast<int>(wParam))) {\n\t\t\tInvalidateStyleRedraw();\n\t\t\tReconfigureScrollBars();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETWRAPINDENTMODE:\n\t\treturn vs.wrapIndentMode;\n\n\tcase SCI_SETLAYOUTCACHE:\n\t\tview.llc.SetLevel(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GETLAYOUTCACHE:\n\t\treturn view.llc.GetLevel();\n\n\tcase SCI_SETPOSITIONCACHE:\n\t\tview.posCache.SetSize(wParam);\n\t\tbreak;\n\n\tcase SCI_GETPOSITIONCACHE:\n\t\treturn view.posCache.GetSize();\n\n\tcase SCI_SETSCROLLWIDTH:\n\t\tPLATFORM_ASSERT(wParam > 0);\n\t\tif ((wParam > 0) && (wParam != static_cast<unsigned int >(scrollWidth))) {\n\t\t\tview.lineWidthMaxSeen = 0;\n\t\t\tscrollWidth = static_cast<int>(wParam);\n\t\t\tSetScrollBars();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETSCROLLWIDTH:\n\t\treturn scrollWidth;\n\n\tcase SCI_SETSCROLLWIDTHTRACKING:\n\t\ttrackLineWidth = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETSCROLLWIDTHTRACKING:\n\t\treturn trackLineWidth;\n\n\tcase SCI_LINESJOIN:\n\t\tLinesJoin();\n\t\tbreak;\n\n\tcase SCI_LINESSPLIT:\n\t\tLinesSplit(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_TEXTWIDTH:\n\t\tPLATFORM_ASSERT(wParam < vs.styles.size());\n\t\tPLATFORM_ASSERT(lParam);\n\t\treturn TextWidth(static_cast<int>(wParam), CharPtrFromSPtr(lParam));\n\n\tcase SCI_TEXTHEIGHT:\n\t\tRefreshStyleData();\n\t\treturn vs.lineHeight;\n\n\tcase SCI_SETENDATLASTLINE:\n\t\tPLATFORM_ASSERT((wParam == 0) || (wParam == 1));\n\t\tif (endAtLastLine != (wParam != 0)) {\n\t\t\tendAtLastLine = wParam != 0;\n\t\t\tSetScrollBars();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETENDATLASTLINE:\n\t\treturn endAtLastLine;\n\n\tcase SCI_SETCARETSTICKY:\n\t\tPLATFORM_ASSERT(wParam <= SC_CARETSTICKY_WHITESPACE);\n\t\tif (wParam <= SC_CARETSTICKY_WHITESPACE) {\n\t\t\tcaretSticky = static_cast<int>(wParam);\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETCARETSTICKY:\n\t\treturn caretSticky;\n\n\tcase SCI_TOGGLECARETSTICKY:\n\t\tcaretSticky = !caretSticky;\n\t\tbreak;\n\n\tcase SCI_GETCOLUMN:\n\t\treturn pdoc->GetColumn(static_cast<int>(wParam));\n\n\tcase SCI_FINDCOLUMN:\n\t\treturn pdoc->FindColumn(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_SETHSCROLLBAR :\n\t\tif (horizontalScrollBarVisible != (wParam != 0)) {\n\t\t\thorizontalScrollBarVisible = wParam != 0;\n\t\t\tSetScrollBars();\n\t\t\tReconfigureScrollBars();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETHSCROLLBAR:\n\t\treturn horizontalScrollBarVisible;\n\n\tcase SCI_SETVSCROLLBAR:\n\t\tif (verticalScrollBarVisible != (wParam != 0)) {\n\t\t\tverticalScrollBarVisible = wParam != 0;\n\t\t\tSetScrollBars();\n\t\t\tReconfigureScrollBars();\n\t\t\tif (verticalScrollBarVisible)\n\t\t\t\tSetVerticalScrollPos();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETVSCROLLBAR:\n\t\treturn verticalScrollBarVisible;\n\n\tcase SCI_SETINDENTATIONGUIDES:\n\t\tvs.viewIndentationGuides = IndentView(wParam);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETINDENTATIONGUIDES:\n\t\treturn vs.viewIndentationGuides;\n\n\tcase SCI_SETHIGHLIGHTGUIDE:\n\t\tif ((highlightGuideColumn != static_cast<int>(wParam)) || (wParam > 0)) {\n\t\t\thighlightGuideColumn = static_cast<int>(wParam);\n\t\t\tRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETHIGHLIGHTGUIDE:\n\t\treturn highlightGuideColumn;\n\n\tcase SCI_GETLINEENDPOSITION:\n\t\treturn pdoc->LineEnd(static_cast<int>(wParam));\n\n\tcase SCI_SETCODEPAGE:\n\t\tif (ValidCodePage(static_cast<int>(wParam))) {\n\t\t\tif (pdoc->SetDBCSCodePage(static_cast<int>(wParam))) {\n\t\t\t\tcs.Clear();\n\t\t\t\tcs.InsertLines(0, pdoc->LinesTotal() - 1);\n\t\t\t\tSetAnnotationHeights(0, pdoc->LinesTotal());\n\t\t\t\tInvalidateStyleRedraw();\n\t\t\t\tSetRepresentations();\n\t\t\t}\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETCODEPAGE:\n\t\treturn pdoc->dbcsCodePage;\n\n\tcase SCI_SETIMEINTERACTION:\n\t\timeInteraction = static_cast<EditModel::IMEInteraction>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETIMEINTERACTION:\n\t\treturn imeInteraction;\n\n\t\t// Marker definition and setting\n\tcase SCI_MARKERDEFINE:\n\t\tif (wParam <= MARKER_MAX) {\n\t\t\tvs.markers[wParam].markType = static_cast<int>(lParam);\n\t\t\tvs.CalcLargestMarkerHeight();\n\t\t}\n\t\tInvalidateStyleData();\n\t\tRedrawSelMargin();\n\t\tbreak;\n\n\tcase SCI_MARKERSYMBOLDEFINED:\n\t\tif (wParam <= MARKER_MAX)\n\t\t\treturn vs.markers[wParam].markType;\n\t\telse\n\t\t\treturn 0;\n\n\tcase SCI_MARKERSETFORE:\n\t\tif (wParam <= MARKER_MAX)\n\t\t\tvs.markers[wParam].fore = ColourDesired(static_cast<long>(lParam));\n\t\tInvalidateStyleData();\n\t\tRedrawSelMargin();\n\t\tbreak;\n\tcase SCI_MARKERSETBACKSELECTED:\n\t\tif (wParam <= MARKER_MAX)\n\t\t\tvs.markers[wParam].backSelected = ColourDesired(static_cast<long>(lParam));\n\t\tInvalidateStyleData();\n\t\tRedrawSelMargin();\n\t\tbreak;\n\tcase SCI_MARKERENABLEHIGHLIGHT:\n\t\tmarginView.highlightDelimiter.isEnabled = wParam == 1;\n\t\tRedrawSelMargin();\n\t\tbreak;\n\tcase SCI_MARKERSETBACK:\n\t\tif (wParam <= MARKER_MAX)\n\t\t\tvs.markers[wParam].back = ColourDesired(static_cast<long>(lParam));\n\t\tInvalidateStyleData();\n\t\tRedrawSelMargin();\n\t\tbreak;\n\tcase SCI_MARKERSETALPHA:\n\t\tif (wParam <= MARKER_MAX)\n\t\t\tvs.markers[wParam].alpha = static_cast<int>(lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\tcase SCI_MARKERADD: {\n\t\t\tint markerID = pdoc->AddMark(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\t\treturn markerID;\n\t\t}\n\tcase SCI_MARKERADDSET:\n\t\tif (lParam != 0)\n\t\t\tpdoc->AddMarkSet(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_MARKERDELETE:\n\t\tpdoc->DeleteMark(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_MARKERDELETEALL:\n\t\tpdoc->DeleteAllMarks(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_MARKERGET:\n\t\treturn pdoc->GetMark(static_cast<int>(wParam));\n\n\tcase SCI_MARKERNEXT:\n\t\treturn pdoc->MarkerNext(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_MARKERPREVIOUS: {\n\t\t\tfor (int iLine = static_cast<int>(wParam); iLine >= 0; iLine--) {\n\t\t\t\tif ((pdoc->GetMark(iLine) & lParam) != 0)\n\t\t\t\t\treturn iLine;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\n\tcase SCI_MARKERDEFINEPIXMAP:\n\t\tif (wParam <= MARKER_MAX) {\n\t\t\tvs.markers[wParam].SetXPM(CharPtrFromSPtr(lParam));\n\t\t\tvs.CalcLargestMarkerHeight();\n\t\t}\n\t\tInvalidateStyleData();\n\t\tRedrawSelMargin();\n\t\tbreak;\n\n\tcase SCI_RGBAIMAGESETWIDTH:\n\t\tsizeRGBAImage.x = static_cast<XYPOSITION>(wParam);\n\t\tbreak;\n\n\tcase SCI_RGBAIMAGESETHEIGHT:\n\t\tsizeRGBAImage.y = static_cast<XYPOSITION>(wParam);\n\t\tbreak;\n\n\tcase SCI_RGBAIMAGESETSCALE:\n\t\tscaleRGBAImage = static_cast<float>(wParam);\n\t\tbreak;\n\n\tcase SCI_MARKERDEFINERGBAIMAGE:\n\t\tif (wParam <= MARKER_MAX) {\n\t\t\tvs.markers[wParam].SetRGBAImage(sizeRGBAImage, scaleRGBAImage / 100.0f, reinterpret_cast<unsigned char *>(lParam));\n\t\t\tvs.CalcLargestMarkerHeight();\n\t\t}\n\t\tInvalidateStyleData();\n\t\tRedrawSelMargin();\n\t\tbreak;\n\n\tcase SCI_SETMARGINTYPEN:\n\t\tif (ValidMargin(wParam)) {\n\t\t\tvs.ms[wParam].style = static_cast<int>(lParam);\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETMARGINTYPEN:\n\t\tif (ValidMargin(wParam))\n\t\t\treturn vs.ms[wParam].style;\n\t\telse\n\t\t\treturn 0;\n\n\tcase SCI_SETMARGINWIDTHN:\n\t\tif (ValidMargin(wParam)) {\n\t\t\t// Short-circuit if the width is unchanged, to avoid unnecessary redraw.\n\t\t\tif (vs.ms[wParam].width != lParam) {\n\t\t\t\tlastXChosen += static_cast<int>(lParam) - vs.ms[wParam].width;\n\t\t\t\tvs.ms[wParam].width = static_cast<int>(lParam);\n\t\t\t\tInvalidateStyleRedraw();\n\t\t\t}\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETMARGINWIDTHN:\n\t\tif (ValidMargin(wParam))\n\t\t\treturn vs.ms[wParam].width;\n\t\telse\n\t\t\treturn 0;\n\n\tcase SCI_SETMARGINMASKN:\n\t\tif (ValidMargin(wParam)) {\n\t\t\tvs.ms[wParam].mask = static_cast<int>(lParam);\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETMARGINMASKN:\n\t\tif (ValidMargin(wParam))\n\t\t\treturn vs.ms[wParam].mask;\n\t\telse\n\t\t\treturn 0;\n\n\tcase SCI_SETMARGINSENSITIVEN:\n\t\tif (ValidMargin(wParam)) {\n\t\t\tvs.ms[wParam].sensitive = lParam != 0;\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETMARGINSENSITIVEN:\n\t\tif (ValidMargin(wParam))\n\t\t\treturn vs.ms[wParam].sensitive ? 1 : 0;\n\t\telse\n\t\t\treturn 0;\n\n\tcase SCI_SETMARGINCURSORN:\n\t\tif (ValidMargin(wParam))\n\t\t\tvs.ms[wParam].cursor = static_cast<int>(lParam);\n\t\tbreak;\n\n\tcase SCI_GETMARGINCURSORN:\n\t\tif (ValidMargin(wParam))\n\t\t\treturn vs.ms[wParam].cursor;\n\t\telse\n\t\t\treturn 0;\n\n\tcase SCI_SETMARGINBACKN:\n\t\tif (ValidMargin(wParam)) {\n\t\t\tvs.ms[wParam].back = ColourDesired(static_cast<long>(lParam));\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_GETMARGINBACKN:\n\t\tif (ValidMargin(wParam))\n\t\t\treturn vs.ms[wParam].back.AsLong();\n\t\telse\n\t\t\treturn 0;\n\n\tcase SCI_SETMARGINS:\n\t\tif (wParam < 1000)\n\t\t\tvs.ms.resize(wParam);\n\t\tbreak;\n\n\tcase SCI_GETMARGINS:\n\t\treturn vs.ms.size();\n\n\tcase SCI_STYLECLEARALL:\n\t\tvs.ClearStyles();\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_STYLESETFORE:\n\tcase SCI_STYLESETBACK:\n\tcase SCI_STYLESETBOLD:\n\tcase SCI_STYLESETWEIGHT:\n\tcase SCI_STYLESETITALIC:\n\tcase SCI_STYLESETEOLFILLED:\n\tcase SCI_STYLESETSIZE:\n\tcase SCI_STYLESETSIZEFRACTIONAL:\n\tcase SCI_STYLESETFONT:\n\tcase SCI_STYLESETUNDERLINE:\n\tcase SCI_STYLESETCASE:\n\tcase SCI_STYLESETCHARACTERSET:\n\tcase SCI_STYLESETVISIBLE:\n\tcase SCI_STYLESETCHANGEABLE:\n\tcase SCI_STYLESETHOTSPOT:\n\t\tStyleSetMessage(iMessage, wParam, lParam);\n\t\tbreak;\n\n\tcase SCI_STYLEGETFORE:\n\tcase SCI_STYLEGETBACK:\n\tcase SCI_STYLEGETBOLD:\n\tcase SCI_STYLEGETWEIGHT:\n\tcase SCI_STYLEGETITALIC:\n\tcase SCI_STYLEGETEOLFILLED:\n\tcase SCI_STYLEGETSIZE:\n\tcase SCI_STYLEGETSIZEFRACTIONAL:\n\tcase SCI_STYLEGETFONT:\n\tcase SCI_STYLEGETUNDERLINE:\n\tcase SCI_STYLEGETCASE:\n\tcase SCI_STYLEGETCHARACTERSET:\n\tcase SCI_STYLEGETVISIBLE:\n\tcase SCI_STYLEGETCHANGEABLE:\n\tcase SCI_STYLEGETHOTSPOT:\n\t\treturn StyleGetMessage(iMessage, wParam, lParam);\n\n\tcase SCI_STYLERESETDEFAULT:\n\t\tvs.ResetDefaultStyle();\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\tcase SCI_SETSTYLEBITS:\n\t\tvs.EnsureStyle(0xff);\n\t\tbreak;\n\n\tcase SCI_GETSTYLEBITS:\n\t\treturn 8;\n\n\tcase SCI_SETLINESTATE:\n\t\treturn pdoc->SetLineState(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_GETLINESTATE:\n\t\treturn pdoc->GetLineState(static_cast<int>(wParam));\n\n\tcase SCI_GETMAXLINESTATE:\n\t\treturn pdoc->GetMaxLineState();\n\n\tcase SCI_GETCARETLINEVISIBLE:\n\t\treturn vs.showCaretLineBackground;\n\tcase SCI_SETCARETLINEVISIBLE:\n\t\tvs.showCaretLineBackground = wParam != 0;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\tcase SCI_GETCARETLINEVISIBLEALWAYS:\n\t\treturn vs.alwaysShowCaretLineBackground;\n\tcase SCI_SETCARETLINEVISIBLEALWAYS:\n\t\tvs.alwaysShowCaretLineBackground = wParam != 0;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETCARETLINEBACK:\n\t\treturn vs.caretLineBackground.AsLong();\n\tcase SCI_SETCARETLINEBACK:\n\t\tvs.caretLineBackground = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\tcase SCI_GETCARETLINEBACKALPHA:\n\t\treturn vs.caretLineAlpha;\n\tcase SCI_SETCARETLINEBACKALPHA:\n\t\tvs.caretLineAlpha = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\t\t// Folding messages\n\n\tcase SCI_VISIBLEFROMDOCLINE:\n\t\treturn cs.DisplayFromDoc(static_cast<int>(wParam));\n\n\tcase SCI_DOCLINEFROMVISIBLE:\n\t\treturn cs.DocFromDisplay(static_cast<int>(wParam));\n\n\tcase SCI_WRAPCOUNT:\n\t\treturn WrapCount(static_cast<int>(wParam));\n\n\tcase SCI_SETFOLDLEVEL: {\n\t\t\tint prev = pdoc->SetLevel(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\t\tif (prev != static_cast<int>(lParam))\n\t\t\t\tRedrawSelMargin();\n\t\t\treturn prev;\n\t\t}\n\n\tcase SCI_GETFOLDLEVEL:\n\t\treturn pdoc->GetLevel(static_cast<int>(wParam));\n\n\tcase SCI_GETLASTCHILD:\n\t\treturn pdoc->GetLastChild(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_GETFOLDPARENT:\n\t\treturn pdoc->GetFoldParent(static_cast<int>(wParam));\n\n\tcase SCI_SHOWLINES:\n\t\tcs.SetVisible(static_cast<int>(wParam), static_cast<int>(lParam), true);\n\t\tSetScrollBars();\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_HIDELINES:\n\t\tif (wParam > 0)\n\t\t\tcs.SetVisible(static_cast<int>(wParam), static_cast<int>(lParam), false);\n\t\tSetScrollBars();\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETLINEVISIBLE:\n\t\treturn cs.GetVisible(static_cast<int>(wParam));\n\n\tcase SCI_GETALLLINESVISIBLE:\n\t\treturn cs.HiddenLines() ? 0 : 1;\n\n\tcase SCI_SETFOLDEXPANDED:\n\t\tSetFoldExpanded(static_cast<int>(wParam), lParam != 0);\n\t\tbreak;\n\n\tcase SCI_GETFOLDEXPANDED:\n\t\treturn cs.GetExpanded(static_cast<int>(wParam));\n\n\tcase SCI_SETAUTOMATICFOLD:\n\t\tfoldAutomatic = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETAUTOMATICFOLD:\n\t\treturn foldAutomatic;\n\n\tcase SCI_SETFOLDFLAGS:\n\t\tfoldFlags = static_cast<int>(wParam);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_TOGGLEFOLDSHOWTEXT:\n\t\tcs.SetFoldDisplayText(static_cast<int>(wParam), CharPtrFromSPtr(lParam));\n\t\tFoldLine(static_cast<int>(wParam), SC_FOLDACTION_TOGGLE);\n\t\tbreak;\n\n\tcase SCI_FOLDDISPLAYTEXTSETSTYLE:\n\t\tfoldDisplayTextStyle = static_cast<int>(wParam);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_TOGGLEFOLD:\n\t\tFoldLine(static_cast<int>(wParam), SC_FOLDACTION_TOGGLE);\n\t\tbreak;\n\n\tcase SCI_FOLDLINE:\n\t\tFoldLine(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_FOLDCHILDREN:\n\t\tFoldExpand(static_cast<int>(wParam), static_cast<int>(lParam), pdoc->GetLevel(static_cast<int>(wParam)));\n\t\tbreak;\n\n\tcase SCI_FOLDALL:\n\t\tFoldAll(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_EXPANDCHILDREN:\n\t\tFoldExpand(static_cast<int>(wParam), SC_FOLDACTION_EXPAND, static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_CONTRACTEDFOLDNEXT:\n\t\treturn ContractedFoldNext(static_cast<int>(wParam));\n\n\tcase SCI_ENSUREVISIBLE:\n\t\tEnsureLineVisible(static_cast<int>(wParam), false);\n\t\tbreak;\n\n\tcase SCI_ENSUREVISIBLEENFORCEPOLICY:\n\t\tEnsureLineVisible(static_cast<int>(wParam), true);\n\t\tbreak;\n\n\tcase SCI_SCROLLRANGE:\n\t\tScrollRange(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam)));\n\t\tbreak;\n\n\tcase SCI_SEARCHANCHOR:\n\t\tSearchAnchor();\n\t\tbreak;\n\n\tcase SCI_SEARCHNEXT:\n\tcase SCI_SEARCHPREV:\n\t\treturn SearchText(iMessage, wParam, lParam);\n\n\tcase SCI_SETXCARETPOLICY:\n\t\tcaretXPolicy = static_cast<int>(wParam);\n\t\tcaretXSlop = static_cast<int>(lParam);\n\t\tbreak;\n\n\tcase SCI_SETYCARETPOLICY:\n\t\tcaretYPolicy = static_cast<int>(wParam);\n\t\tcaretYSlop = static_cast<int>(lParam);\n\t\tbreak;\n\n\tcase SCI_SETVISIBLEPOLICY:\n\t\tvisiblePolicy = static_cast<int>(wParam);\n\t\tvisibleSlop = static_cast<int>(lParam);\n\t\tbreak;\n\n\tcase SCI_LINESONSCREEN:\n\t\treturn LinesOnScreen();\n\n\tcase SCI_SETSELFORE:\n\t\tvs.selColours.fore = ColourOptional(wParam, lParam);\n\t\tvs.selAdditionalForeground = ColourDesired(static_cast<long>(lParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETSELBACK:\n\t\tvs.selColours.back = ColourOptional(wParam, lParam);\n\t\tvs.selAdditionalBackground = ColourDesired(static_cast<long>(lParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETSELALPHA:\n\t\tvs.selAlpha = static_cast<int>(wParam);\n\t\tvs.selAdditionalAlpha = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETSELALPHA:\n\t\treturn vs.selAlpha;\n\n\tcase SCI_GETSELEOLFILLED:\n\t\treturn vs.selEOLFilled;\n\n\tcase SCI_SETSELEOLFILLED:\n\t\tvs.selEOLFilled = wParam != 0;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETWHITESPACEFORE:\n\t\tvs.whitespaceColours.fore = ColourOptional(wParam, lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETWHITESPACEBACK:\n\t\tvs.whitespaceColours.back = ColourOptional(wParam, lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETCARETFORE:\n\t\tvs.caretcolour = ColourDesired(static_cast<long>(wParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETCARETFORE:\n\t\treturn vs.caretcolour.AsLong();\n\n\tcase SCI_SETCARETSTYLE:\n\t\tif (wParam <= CARETSTYLE_BLOCK)\n\t\t\tvs.caretStyle = static_cast<int>(wParam);\n\t\telse\n\t\t\t/* Default to the line caret */\n\t\t\tvs.caretStyle = CARETSTYLE_LINE;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETCARETSTYLE:\n\t\treturn vs.caretStyle;\n\n\tcase SCI_SETCARETWIDTH:\n\t\tif (static_cast<int>(wParam) <= 0)\n\t\t\tvs.caretWidth = 0;\n\t\telse if (wParam >= 3)\n\t\t\tvs.caretWidth = 3;\n\t\telse\n\t\t\tvs.caretWidth = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETCARETWIDTH:\n\t\treturn vs.caretWidth;\n\n\tcase SCI_ASSIGNCMDKEY:\n\t\tkmap.AssignCmdKey(Platform::LowShortFromLong(static_cast<long>(wParam)),\n\t\t\tPlatform::HighShortFromLong(static_cast<long>(wParam)), static_cast<unsigned int>(lParam));\n\t\tbreak;\n\n\tcase SCI_CLEARCMDKEY:\n\t\tkmap.AssignCmdKey(Platform::LowShortFromLong(static_cast<long>(wParam)),\n\t\t\tPlatform::HighShortFromLong(static_cast<long>(wParam)), SCI_NULL);\n\t\tbreak;\n\n\tcase SCI_CLEARALLCMDKEYS:\n\t\tkmap.Clear();\n\t\tbreak;\n\n\tcase SCI_INDICSETSTYLE:\n\t\tif (wParam <= INDIC_MAX) {\n\t\t\tvs.indicators[wParam].sacNormal.style = static_cast<int>(lParam);\n\t\t\tvs.indicators[wParam].sacHover.style = static_cast<int>(lParam);\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_INDICGETSTYLE:\n\t\treturn (wParam <= INDIC_MAX) ? vs.indicators[wParam].sacNormal.style : 0;\n\n\tcase SCI_INDICSETFORE:\n\t\tif (wParam <= INDIC_MAX) {\n\t\t\tvs.indicators[wParam].sacNormal.fore = ColourDesired(static_cast<long>(lParam));\n\t\t\tvs.indicators[wParam].sacHover.fore = ColourDesired(static_cast<long>(lParam));\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_INDICGETFORE:\n\t\treturn (wParam <= INDIC_MAX) ? vs.indicators[wParam].sacNormal.fore.AsLong() : 0;\n\n\tcase SCI_INDICSETHOVERSTYLE:\n\t\tif (wParam <= INDIC_MAX) {\n\t\t\tvs.indicators[wParam].sacHover.style = static_cast<int>(lParam);\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_INDICGETHOVERSTYLE:\n\t\treturn (wParam <= INDIC_MAX) ? vs.indicators[wParam].sacHover.style : 0;\n\n\tcase SCI_INDICSETHOVERFORE:\n\t\tif (wParam <= INDIC_MAX) {\n\t\t\tvs.indicators[wParam].sacHover.fore = ColourDesired(static_cast<long>(lParam));\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_INDICGETHOVERFORE:\n\t\treturn (wParam <= INDIC_MAX) ? vs.indicators[wParam].sacHover.fore.AsLong() : 0;\n\n\tcase SCI_INDICSETFLAGS:\n\t\tif (wParam <= INDIC_MAX) {\n\t\t\tvs.indicators[wParam].SetFlags(static_cast<int>(lParam));\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_INDICGETFLAGS:\n\t\treturn (wParam <= INDIC_MAX) ? vs.indicators[wParam].Flags() : 0;\n\n\tcase SCI_INDICSETUNDER:\n\t\tif (wParam <= INDIC_MAX) {\n\t\t\tvs.indicators[wParam].under = lParam != 0;\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_INDICGETUNDER:\n\t\treturn (wParam <= INDIC_MAX) ? vs.indicators[wParam].under : 0;\n\n\tcase SCI_INDICSETALPHA:\n\t\tif (wParam <= INDIC_MAX && lParam >=0 && lParam <= 255) {\n\t\t\tvs.indicators[wParam].fillAlpha = static_cast<int>(lParam);\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_INDICGETALPHA:\n\t\treturn (wParam <= INDIC_MAX) ? vs.indicators[wParam].fillAlpha : 0;\n\n\tcase SCI_INDICSETOUTLINEALPHA:\n\t\tif (wParam <= INDIC_MAX && lParam >=0 && lParam <= 255) {\n\t\t\tvs.indicators[wParam].outlineAlpha = static_cast<int>(lParam);\n\t\t\tInvalidateStyleRedraw();\n\t\t}\n\t\tbreak;\n\n\tcase SCI_INDICGETOUTLINEALPHA:\n\t\treturn (wParam <= INDIC_MAX) ? vs.indicators[wParam].outlineAlpha : 0;\n\n\tcase SCI_SETINDICATORCURRENT:\n\t\tpdoc->decorations.SetCurrentIndicator(static_cast<int>(wParam));\n\t\tbreak;\n\tcase SCI_GETINDICATORCURRENT:\n\t\treturn pdoc->decorations.GetCurrentIndicator();\n\tcase SCI_SETINDICATORVALUE:\n\t\tpdoc->decorations.SetCurrentValue(static_cast<int>(wParam));\n\t\tbreak;\n\tcase SCI_GETINDICATORVALUE:\n\t\treturn pdoc->decorations.GetCurrentValue();\n\n\tcase SCI_INDICATORFILLRANGE:\n\t\tpdoc->DecorationFillRange(static_cast<int>(wParam), pdoc->decorations.GetCurrentValue(), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_INDICATORCLEARRANGE:\n\t\tpdoc->DecorationFillRange(static_cast<int>(wParam), 0, static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_INDICATORALLONFOR:\n\t\treturn pdoc->decorations.AllOnFor(static_cast<int>(wParam));\n\n\tcase SCI_INDICATORVALUEAT:\n\t\treturn pdoc->decorations.ValueAt(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_INDICATORSTART:\n\t\treturn pdoc->decorations.Start(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_INDICATOREND:\n\t\treturn pdoc->decorations.End(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_LINEDOWN:\n\tcase SCI_LINEDOWNEXTEND:\n\tcase SCI_PARADOWN:\n\tcase SCI_PARADOWNEXTEND:\n\tcase SCI_LINEUP:\n\tcase SCI_LINEUPEXTEND:\n\tcase SCI_PARAUP:\n\tcase SCI_PARAUPEXTEND:\n\tcase SCI_CHARLEFT:\n\tcase SCI_CHARLEFTEXTEND:\n\tcase SCI_CHARRIGHT:\n\tcase SCI_CHARRIGHTEXTEND:\n\tcase SCI_WORDLEFT:\n\tcase SCI_WORDLEFTEXTEND:\n\tcase SCI_WORDRIGHT:\n\tcase SCI_WORDRIGHTEXTEND:\n\tcase SCI_WORDLEFTEND:\n\tcase SCI_WORDLEFTENDEXTEND:\n\tcase SCI_WORDRIGHTEND:\n\tcase SCI_WORDRIGHTENDEXTEND:\n\tcase SCI_HOME:\n\tcase SCI_HOMEEXTEND:\n\tcase SCI_LINEEND:\n\tcase SCI_LINEENDEXTEND:\n\tcase SCI_HOMEWRAP:\n\tcase SCI_HOMEWRAPEXTEND:\n\tcase SCI_LINEENDWRAP:\n\tcase SCI_LINEENDWRAPEXTEND:\n\tcase SCI_DOCUMENTSTART:\n\tcase SCI_DOCUMENTSTARTEXTEND:\n\tcase SCI_DOCUMENTEND:\n\tcase SCI_DOCUMENTENDEXTEND:\n\tcase SCI_SCROLLTOSTART:\n\tcase SCI_SCROLLTOEND:\n\n\tcase SCI_STUTTEREDPAGEUP:\n\tcase SCI_STUTTEREDPAGEUPEXTEND:\n\tcase SCI_STUTTEREDPAGEDOWN:\n\tcase SCI_STUTTEREDPAGEDOWNEXTEND:\n\n\tcase SCI_PAGEUP:\n\tcase SCI_PAGEUPEXTEND:\n\tcase SCI_PAGEDOWN:\n\tcase SCI_PAGEDOWNEXTEND:\n\tcase SCI_EDITTOGGLEOVERTYPE:\n\tcase SCI_CANCEL:\n\tcase SCI_DELETEBACK:\n\tcase SCI_TAB:\n\tcase SCI_BACKTAB:\n\tcase SCI_NEWLINE:\n\tcase SCI_FORMFEED:\n\tcase SCI_VCHOME:\n\tcase SCI_VCHOMEEXTEND:\n\tcase SCI_VCHOMEWRAP:\n\tcase SCI_VCHOMEWRAPEXTEND:\n\tcase SCI_VCHOMEDISPLAY:\n\tcase SCI_VCHOMEDISPLAYEXTEND:\n\tcase SCI_ZOOMIN:\n\tcase SCI_ZOOMOUT:\n\tcase SCI_DELWORDLEFT:\n\tcase SCI_DELWORDRIGHT:\n\tcase SCI_DELWORDRIGHTEND:\n\tcase SCI_DELLINELEFT:\n\tcase SCI_DELLINERIGHT:\n\tcase SCI_LINECOPY:\n\tcase SCI_LINECUT:\n\tcase SCI_LINEDELETE:\n\tcase SCI_LINETRANSPOSE:\n\tcase SCI_LINEDUPLICATE:\n\tcase SCI_LOWERCASE:\n\tcase SCI_UPPERCASE:\n\tcase SCI_LINESCROLLDOWN:\n\tcase SCI_LINESCROLLUP:\n\tcase SCI_WORDPARTLEFT:\n\tcase SCI_WORDPARTLEFTEXTEND:\n\tcase SCI_WORDPARTRIGHT:\n\tcase SCI_WORDPARTRIGHTEXTEND:\n\tcase SCI_DELETEBACKNOTLINE:\n\tcase SCI_HOMEDISPLAY:\n\tcase SCI_HOMEDISPLAYEXTEND:\n\tcase SCI_LINEENDDISPLAY:\n\tcase SCI_LINEENDDISPLAYEXTEND:\n\tcase SCI_LINEDOWNRECTEXTEND:\n\tcase SCI_LINEUPRECTEXTEND:\n\tcase SCI_CHARLEFTRECTEXTEND:\n\tcase SCI_CHARRIGHTRECTEXTEND:\n\tcase SCI_HOMERECTEXTEND:\n\tcase SCI_VCHOMERECTEXTEND:\n\tcase SCI_LINEENDRECTEXTEND:\n\tcase SCI_PAGEUPRECTEXTEND:\n\tcase SCI_PAGEDOWNRECTEXTEND:\n\tcase SCI_SELECTIONDUPLICATE:\n\t\treturn KeyCommand(iMessage);\n\n\tcase SCI_BRACEHIGHLIGHT:\n\t\tSetBraceHighlight(static_cast<int>(wParam), static_cast<int>(lParam), STYLE_BRACELIGHT);\n\t\tbreak;\n\n\tcase SCI_BRACEHIGHLIGHTINDICATOR:\n\t\tif (lParam >= 0 && lParam <= INDIC_MAX) {\n\t\t\tvs.braceHighlightIndicatorSet = wParam != 0;\n\t\t\tvs.braceHighlightIndicator = static_cast<int>(lParam);\n\t\t}\n\t\tbreak;\n\n\tcase SCI_BRACEBADLIGHT:\n\t\tSetBraceHighlight(static_cast<int>(wParam), -1, STYLE_BRACEBAD);\n\t\tbreak;\n\n\tcase SCI_BRACEBADLIGHTINDICATOR:\n\t\tif (lParam >= 0 && lParam <= INDIC_MAX) {\n\t\t\tvs.braceBadLightIndicatorSet = wParam != 0;\n\t\t\tvs.braceBadLightIndicator = static_cast<int>(lParam);\n\t\t}\n\t\tbreak;\n\n\tcase SCI_BRACEMATCH:\n\t\t// wParam is position of char to find brace for,\n\t\t// lParam is maximum amount of text to restyle to find it\n\t\treturn pdoc->BraceMatch(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_GETVIEWEOL:\n\t\treturn vs.viewEOL;\n\n\tcase SCI_SETVIEWEOL:\n\t\tvs.viewEOL = wParam != 0;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETZOOM:\n\t\tvs.zoomLevel = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tNotifyZoom();\n\t\tbreak;\n\n\tcase SCI_GETZOOM:\n\t\treturn vs.zoomLevel;\n\n\tcase SCI_GETEDGECOLUMN:\n\t\treturn vs.theEdge.column;\n\n\tcase SCI_SETEDGECOLUMN:\n\t\tvs.theEdge.column = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETEDGEMODE:\n\t\treturn vs.edgeState;\n\n\tcase SCI_SETEDGEMODE:\n\t\tvs.edgeState = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETEDGECOLOUR:\n\t\treturn vs.theEdge.colour.AsLong();\n\n\tcase SCI_SETEDGECOLOUR:\n\t\tvs.theEdge.colour = ColourDesired(static_cast<long>(wParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_MULTIEDGEADDLINE:\n\t\tvs.theMultiEdge.push_back(EdgeProperties(wParam, lParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_MULTIEDGECLEARALL:\n\t\tstd::vector<EdgeProperties>().swap(vs.theMultiEdge); // Free vector and memory, C++03 compatible\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETDOCPOINTER:\n\t\treturn reinterpret_cast<sptr_t>(pdoc);\n\n\tcase SCI_SETDOCPOINTER:\n\t\tCancelModes();\n\t\tSetDocPointer(reinterpret_cast<Document *>(lParam));\n\t\treturn 0;\n\n\tcase SCI_CREATEDOCUMENT: {\n\t\t\tDocument *doc = new Document();\n\t\t\tdoc->AddRef();\n\t\t\treturn reinterpret_cast<sptr_t>(doc);\n\t\t}\n\n\tcase SCI_ADDREFDOCUMENT:\n\t\t(reinterpret_cast<Document *>(lParam))->AddRef();\n\t\tbreak;\n\n\tcase SCI_RELEASEDOCUMENT:\n\t\t(reinterpret_cast<Document *>(lParam))->Release();\n\t\tbreak;\n\n\tcase SCI_CREATELOADER: {\n\t\t\tDocument *doc = new Document();\n\t\t\tdoc->AddRef();\n\t\t\tdoc->Allocate(static_cast<int>(wParam));\n\t\t\tdoc->SetUndoCollection(false);\n\t\t\treturn reinterpret_cast<sptr_t>(static_cast<ILoader *>(doc));\n\t\t}\n\n\tcase SCI_SETMODEVENTMASK:\n\t\tmodEventMask = static_cast<int>(wParam);\n\t\treturn 0;\n\n\tcase SCI_GETMODEVENTMASK:\n\t\treturn modEventMask;\n\n\tcase SCI_CONVERTEOLS:\n\t\tpdoc->ConvertLineEnds(static_cast<int>(wParam));\n\t\tSetSelection(sel.MainCaret(), sel.MainAnchor());\t// Ensure selection inside document\n\t\treturn 0;\n\n\tcase SCI_SETLENGTHFORENCODE:\n\t\tlengthForEncode = static_cast<int>(wParam);\n\t\treturn 0;\n\n\tcase SCI_SELECTIONISRECTANGLE:\n\t\treturn sel.selType == Selection::selRectangle ? 1 : 0;\n\n\tcase SCI_SETSELECTIONMODE: {\n\t\t\tswitch (wParam) {\n\t\t\tcase SC_SEL_STREAM:\n\t\t\t\tsel.SetMoveExtends(!sel.MoveExtends() || (sel.selType != Selection::selStream));\n\t\t\t\tsel.selType = Selection::selStream;\n\t\t\t\tbreak;\n\t\t\tcase SC_SEL_RECTANGLE:\n\t\t\t\tsel.SetMoveExtends(!sel.MoveExtends() || (sel.selType != Selection::selRectangle));\n\t\t\t\tsel.selType = Selection::selRectangle;\n\t\t\t\tbreak;\n\t\t\tcase SC_SEL_LINES:\n\t\t\t\tsel.SetMoveExtends(!sel.MoveExtends() || (sel.selType != Selection::selLines));\n\t\t\t\tsel.selType = Selection::selLines;\n\t\t\t\tbreak;\n\t\t\tcase SC_SEL_THIN:\n\t\t\t\tsel.SetMoveExtends(!sel.MoveExtends() || (sel.selType != Selection::selThin));\n\t\t\t\tsel.selType = Selection::selThin;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tsel.SetMoveExtends(!sel.MoveExtends() || (sel.selType != Selection::selStream));\n\t\t\t\tsel.selType = Selection::selStream;\n\t\t\t}\n\t\t\tInvalidateWholeSelection();\n\t\t\tbreak;\n\t\t}\n\tcase SCI_GETSELECTIONMODE:\n\t\tswitch (sel.selType) {\n\t\tcase Selection::selStream:\n\t\t\treturn SC_SEL_STREAM;\n\t\tcase Selection::selRectangle:\n\t\t\treturn SC_SEL_RECTANGLE;\n\t\tcase Selection::selLines:\n\t\t\treturn SC_SEL_LINES;\n\t\tcase Selection::selThin:\n\t\t\treturn SC_SEL_THIN;\n\t\tdefault:\t// ?!\n\t\t\treturn SC_SEL_STREAM;\n\t\t}\n\tcase SCI_GETLINESELSTARTPOSITION:\n\tcase SCI_GETLINESELENDPOSITION: {\n\t\t\tSelectionSegment segmentLine(SelectionPosition(pdoc->LineStart(static_cast<int>(wParam))),\n\t\t\t\tSelectionPosition(pdoc->LineEnd(static_cast<int>(wParam))));\n\t\t\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\t\t\tSelectionSegment portion = sel.Range(r).Intersect(segmentLine);\n\t\t\t\tif (portion.start.IsValid()) {\n\t\t\t\t\treturn (iMessage == SCI_GETLINESELSTARTPOSITION) ? portion.start.Position() : portion.end.Position();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn INVALID_POSITION;\n\t\t}\n\n\tcase SCI_SETOVERTYPE:\n\t\tinOverstrike = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETOVERTYPE:\n\t\treturn inOverstrike ? 1 : 0;\n\n\tcase SCI_SETFOCUS:\n\t\tSetFocusState(wParam != 0);\n\t\tbreak;\n\n\tcase SCI_GETFOCUS:\n\t\treturn hasFocus;\n\n\tcase SCI_SETSTATUS:\n\t\terrorStatus = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETSTATUS:\n\t\treturn errorStatus;\n\n\tcase SCI_SETMOUSEDOWNCAPTURES:\n\t\tmouseDownCaptures = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETMOUSEDOWNCAPTURES:\n\t\treturn mouseDownCaptures;\n\n\tcase SCI_SETMOUSEWHEELCAPTURES:\n\t\tmouseWheelCaptures = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETMOUSEWHEELCAPTURES:\n\t\treturn mouseWheelCaptures;\n\n\tcase SCI_SETCURSOR:\n\t\tcursorMode = static_cast<int>(wParam);\n\t\tDisplayCursor(Window::cursorText);\n\t\tbreak;\n\n\tcase SCI_GETCURSOR:\n\t\treturn cursorMode;\n\n\tcase SCI_SETCONTROLCHARSYMBOL:\n\t\tvs.controlCharSymbol = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETCONTROLCHARSYMBOL:\n\t\treturn vs.controlCharSymbol;\n\n\tcase SCI_SETREPRESENTATION:\n\t\treprs.SetRepresentation(reinterpret_cast<const char *>(wParam), CharPtrFromSPtr(lParam));\n\t\tbreak;\n\n\tcase SCI_GETREPRESENTATION: {\n\t\t\tconst Representation *repr = reprs.RepresentationFromCharacter(\n\t\t\t\treinterpret_cast<const char *>(wParam), UTF8MaxBytes);\n\t\t\tif (repr) {\n\t\t\t\treturn StringResult(lParam, repr->stringRep.c_str());\n\t\t\t}\n\t\t\treturn 0;\n\t\t}\n\n\tcase SCI_CLEARREPRESENTATION:\n\t\treprs.ClearRepresentation(reinterpret_cast<const char *>(wParam));\n\t\tbreak;\n\n\tcase SCI_STARTRECORD:\n\t\trecordingMacro = true;\n\t\treturn 0;\n\n\tcase SCI_STOPRECORD:\n\t\trecordingMacro = false;\n\t\treturn 0;\n\n\tcase SCI_MOVECARETINSIDEVIEW:\n\t\tMoveCaretInsideView();\n\t\tbreak;\n\n\tcase SCI_SETFOLDMARGINCOLOUR:\n\t\tvs.foldmarginColour = ColourOptional(wParam, lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETFOLDMARGINHICOLOUR:\n\t\tvs.foldmarginHighlightColour = ColourOptional(wParam, lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETHOTSPOTACTIVEFORE:\n\t\tvs.hotspotColours.fore = ColourOptional(wParam, lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETHOTSPOTACTIVEFORE:\n\t\treturn vs.hotspotColours.fore.AsLong();\n\n\tcase SCI_SETHOTSPOTACTIVEBACK:\n\t\tvs.hotspotColours.back = ColourOptional(wParam, lParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETHOTSPOTACTIVEBACK:\n\t\treturn vs.hotspotColours.back.AsLong();\n\n\tcase SCI_SETHOTSPOTACTIVEUNDERLINE:\n\t\tvs.hotspotUnderline = wParam != 0;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETHOTSPOTACTIVEUNDERLINE:\n\t\treturn vs.hotspotUnderline ? 1 : 0;\n\n\tcase SCI_SETHOTSPOTSINGLELINE:\n\t\tvs.hotspotSingleLine = wParam != 0;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETHOTSPOTSINGLELINE:\n\t\treturn vs.hotspotSingleLine ? 1 : 0;\n\n\tcase SCI_SETPASTECONVERTENDINGS:\n\t\tconvertPastes = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETPASTECONVERTENDINGS:\n\t\treturn convertPastes ? 1 : 0;\n\n\tcase SCI_GETCHARACTERPOINTER:\n\t\treturn reinterpret_cast<sptr_t>(pdoc->BufferPointer());\n\n\tcase SCI_GETRANGEPOINTER:\n\t\treturn reinterpret_cast<sptr_t>(pdoc->RangePointer(static_cast<int>(wParam), static_cast<int>(lParam)));\n\n\tcase SCI_GETGAPPOSITION:\n\t\treturn pdoc->GapPosition();\n\n\tcase SCI_SETEXTRAASCENT:\n\t\tvs.extraAscent = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETEXTRAASCENT:\n\t\treturn vs.extraAscent;\n\n\tcase SCI_SETEXTRADESCENT:\n\t\tvs.extraDescent = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETEXTRADESCENT:\n\t\treturn vs.extraDescent;\n\n\tcase SCI_MARGINSETSTYLEOFFSET:\n\t\tvs.marginStyleOffset = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_MARGINGETSTYLEOFFSET:\n\t\treturn vs.marginStyleOffset;\n\n\tcase SCI_SETMARGINOPTIONS:\n\t\tmarginOptions = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETMARGINOPTIONS:\n\t\treturn marginOptions;\n\n\tcase SCI_MARGINSETTEXT:\n\t\tpdoc->MarginSetText(static_cast<int>(wParam), CharPtrFromSPtr(lParam));\n\t\tbreak;\n\n\tcase SCI_MARGINGETTEXT: {\n\t\t\tconst StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam));\n\t\t\treturn BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length);\n\t\t}\n\n\tcase SCI_MARGINSETSTYLE:\n\t\tpdoc->MarginSetStyle(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_MARGINGETSTYLE: {\n\t\t\tconst StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam));\n\t\t\treturn st.style;\n\t\t}\n\n\tcase SCI_MARGINSETSTYLES:\n\t\tpdoc->MarginSetStyles(static_cast<int>(wParam), reinterpret_cast<const unsigned char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_MARGINGETSTYLES: {\n\t\t\tconst StyledText st = pdoc->MarginStyledText(static_cast<int>(wParam));\n\t\t\treturn BytesResult(lParam, st.styles, st.length);\n\t\t}\n\n\tcase SCI_MARGINTEXTCLEARALL:\n\t\tpdoc->MarginClearAll();\n\t\tbreak;\n\n\tcase SCI_ANNOTATIONSETTEXT:\n\t\tpdoc->AnnotationSetText(static_cast<int>(wParam), CharPtrFromSPtr(lParam));\n\t\tbreak;\n\n\tcase SCI_ANNOTATIONGETTEXT: {\n\t\t\tconst StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam));\n\t\t\treturn BytesResult(lParam, reinterpret_cast<const unsigned char *>(st.text), st.length);\n\t\t}\n\n\tcase SCI_ANNOTATIONGETSTYLE: {\n\t\t\tconst StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam));\n\t\t\treturn st.style;\n\t\t}\n\n\tcase SCI_ANNOTATIONSETSTYLE:\n\t\tpdoc->AnnotationSetStyle(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_ANNOTATIONSETSTYLES:\n\t\tpdoc->AnnotationSetStyles(static_cast<int>(wParam), reinterpret_cast<const unsigned char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_ANNOTATIONGETSTYLES: {\n\t\t\tconst StyledText st = pdoc->AnnotationStyledText(static_cast<int>(wParam));\n\t\t\treturn BytesResult(lParam, st.styles, st.length);\n\t\t}\n\n\tcase SCI_ANNOTATIONGETLINES:\n\t\treturn pdoc->AnnotationLines(static_cast<int>(wParam));\n\n\tcase SCI_ANNOTATIONCLEARALL:\n\t\tpdoc->AnnotationClearAll();\n\t\tbreak;\n\n\tcase SCI_ANNOTATIONSETVISIBLE:\n\t\tSetAnnotationVisible(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_ANNOTATIONGETVISIBLE:\n\t\treturn vs.annotationVisible;\n\n\tcase SCI_ANNOTATIONSETSTYLEOFFSET:\n\t\tvs.annotationStyleOffset = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_ANNOTATIONGETSTYLEOFFSET:\n\t\treturn vs.annotationStyleOffset;\n\n\tcase SCI_RELEASEALLEXTENDEDSTYLES:\n\t\tvs.ReleaseAllExtendedStyles();\n\t\tbreak;\n\n\tcase SCI_ALLOCATEEXTENDEDSTYLES:\n\t\treturn vs.AllocateExtendedStyles(static_cast<int>(wParam));\n\n\tcase SCI_ADDUNDOACTION:\n\t\tpdoc->AddUndoAction(static_cast<int>(wParam), lParam & UNDO_MAY_COALESCE);\n\t\tbreak;\n\n\tcase SCI_SETMOUSESELECTIONRECTANGULARSWITCH:\n\t\tmouseSelectionRectangularSwitch = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_GETMOUSESELECTIONRECTANGULARSWITCH:\n\t\treturn mouseSelectionRectangularSwitch;\n\n\tcase SCI_SETMULTIPLESELECTION:\n\t\tmultipleSelection = wParam != 0;\n\t\tInvalidateCaret();\n\t\tbreak;\n\n\tcase SCI_GETMULTIPLESELECTION:\n\t\treturn multipleSelection;\n\n\tcase SCI_SETADDITIONALSELECTIONTYPING:\n\t\tadditionalSelectionTyping = wParam != 0;\n\t\tInvalidateCaret();\n\t\tbreak;\n\n\tcase SCI_GETADDITIONALSELECTIONTYPING:\n\t\treturn additionalSelectionTyping;\n\n\tcase SCI_SETMULTIPASTE:\n\t\tmultiPasteMode = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETMULTIPASTE:\n\t\treturn multiPasteMode;\n\n\tcase SCI_SETADDITIONALCARETSBLINK:\n\t\tview.additionalCaretsBlink = wParam != 0;\n\t\tInvalidateCaret();\n\t\tbreak;\n\n\tcase SCI_GETADDITIONALCARETSBLINK:\n\t\treturn view.additionalCaretsBlink;\n\n\tcase SCI_SETADDITIONALCARETSVISIBLE:\n\t\tview.additionalCaretsVisible = wParam != 0;\n\t\tInvalidateCaret();\n\t\tbreak;\n\n\tcase SCI_GETADDITIONALCARETSVISIBLE:\n\t\treturn view.additionalCaretsVisible;\n\n\tcase SCI_GETSELECTIONS:\n\t\treturn sel.Count();\n\n\tcase SCI_GETSELECTIONEMPTY:\n\t\treturn sel.Empty();\n\n\tcase SCI_CLEARSELECTIONS:\n\t\tsel.Clear();\n\t\tContainerNeedsUpdate(SC_UPDATE_SELECTION);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_SETSELECTION:\n\t\tsel.SetSelection(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam)));\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_ADDSELECTION:\n\t\tsel.AddSelection(SelectionRange(static_cast<int>(wParam), static_cast<int>(lParam)));\n\t\tContainerNeedsUpdate(SC_UPDATE_SELECTION);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_DROPSELECTIONN:\n\t\tsel.DropSelection(static_cast<int>(wParam));\n\t\tContainerNeedsUpdate(SC_UPDATE_SELECTION);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_SETMAINSELECTION:\n\t\tsel.SetMain(static_cast<int>(wParam));\n\t\tContainerNeedsUpdate(SC_UPDATE_SELECTION);\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETMAINSELECTION:\n\t\treturn sel.Main();\n\n\tcase SCI_SETSELECTIONNCARET:\n\tcase SCI_SETSELECTIONNANCHOR:\n\tcase SCI_SETSELECTIONNCARETVIRTUALSPACE:\n\tcase SCI_SETSELECTIONNANCHORVIRTUALSPACE:\n\tcase SCI_SETSELECTIONNSTART:\n\tcase SCI_SETSELECTIONNEND:\n\t\tSetSelectionNMessage(iMessage, wParam, lParam);\n\t\tbreak;\n\n\tcase SCI_GETSELECTIONNCARET:\n\t\treturn sel.Range(wParam).caret.Position();\n\n\tcase SCI_GETSELECTIONNANCHOR:\n\t\treturn sel.Range(wParam).anchor.Position();\n\n\tcase SCI_GETSELECTIONNCARETVIRTUALSPACE:\n\t\treturn sel.Range(wParam).caret.VirtualSpace();\n\n\tcase SCI_GETSELECTIONNANCHORVIRTUALSPACE:\n\t\treturn sel.Range(wParam).anchor.VirtualSpace();\n\n\tcase SCI_GETSELECTIONNSTART:\n\t\treturn sel.Range(wParam).Start().Position();\n\n\tcase SCI_GETSELECTIONNEND:\n\t\treturn sel.Range(wParam).End().Position();\n\n\tcase SCI_SETRECTANGULARSELECTIONCARET:\n\t\tif (!sel.IsRectangular())\n\t\t\tsel.Clear();\n\t\tsel.selType = Selection::selRectangle;\n\t\tsel.Rectangular().caret.SetPosition(static_cast<int>(wParam));\n\t\tSetRectangularRange();\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETRECTANGULARSELECTIONCARET:\n\t\treturn sel.Rectangular().caret.Position();\n\n\tcase SCI_SETRECTANGULARSELECTIONANCHOR:\n\t\tif (!sel.IsRectangular())\n\t\t\tsel.Clear();\n\t\tsel.selType = Selection::selRectangle;\n\t\tsel.Rectangular().anchor.SetPosition(static_cast<int>(wParam));\n\t\tSetRectangularRange();\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETRECTANGULARSELECTIONANCHOR:\n\t\treturn sel.Rectangular().anchor.Position();\n\n\tcase SCI_SETRECTANGULARSELECTIONCARETVIRTUALSPACE:\n\t\tif (!sel.IsRectangular())\n\t\t\tsel.Clear();\n\t\tsel.selType = Selection::selRectangle;\n\t\tsel.Rectangular().caret.SetVirtualSpace(static_cast<int>(wParam));\n\t\tSetRectangularRange();\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETRECTANGULARSELECTIONCARETVIRTUALSPACE:\n\t\treturn sel.Rectangular().caret.VirtualSpace();\n\n\tcase SCI_SETRECTANGULARSELECTIONANCHORVIRTUALSPACE:\n\t\tif (!sel.IsRectangular())\n\t\t\tsel.Clear();\n\t\tsel.selType = Selection::selRectangle;\n\t\tsel.Rectangular().anchor.SetVirtualSpace(static_cast<int>(wParam));\n\t\tSetRectangularRange();\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_GETRECTANGULARSELECTIONANCHORVIRTUALSPACE:\n\t\treturn sel.Rectangular().anchor.VirtualSpace();\n\n\tcase SCI_SETVIRTUALSPACEOPTIONS:\n\t\tvirtualSpaceOptions = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_GETVIRTUALSPACEOPTIONS:\n\t\treturn virtualSpaceOptions;\n\n\tcase SCI_SETADDITIONALSELFORE:\n\t\tvs.selAdditionalForeground = ColourDesired(static_cast<long>(wParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETADDITIONALSELBACK:\n\t\tvs.selAdditionalBackground = ColourDesired(static_cast<long>(wParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_SETADDITIONALSELALPHA:\n\t\tvs.selAdditionalAlpha = static_cast<int>(wParam);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETADDITIONALSELALPHA:\n\t\treturn vs.selAdditionalAlpha;\n\n\tcase SCI_SETADDITIONALCARETFORE:\n\t\tvs.additionalCaretColour = ColourDesired(static_cast<long>(wParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_GETADDITIONALCARETFORE:\n\t\treturn vs.additionalCaretColour.AsLong();\n\n\tcase SCI_ROTATESELECTION:\n\t\tsel.RotateMain();\n\t\tInvalidateWholeSelection();\n\t\tbreak;\n\n\tcase SCI_SWAPMAINANCHORCARET:\n\t\tInvalidateSelection(sel.RangeMain());\n\t\tsel.RangeMain().Swap();\n\t\tbreak;\n\n\tcase SCI_MULTIPLESELECTADDNEXT:\n\t\tMultipleSelectAdd(addOne);\n\t\tbreak;\n\n\tcase SCI_MULTIPLESELECTADDEACH:\n\t\tMultipleSelectAdd(addEach);\n\t\tbreak;\n\n\tcase SCI_CHANGELEXERSTATE:\n\t\tpdoc->ChangeLexerState(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETIDENTIFIER:\n\t\tSetCtrlID(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GETIDENTIFIER:\n\t\treturn GetCtrlID();\n\n\tcase SCI_SETTECHNOLOGY:\n\t\t// No action by default\n\t\tbreak;\n\n\tcase SCI_GETTECHNOLOGY:\n\t\treturn technology;\n\n\tcase SCI_COUNTCHARACTERS:\n\t\treturn pdoc->CountCharacters(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tdefault:\n\t\treturn DefWndProc(iMessage, wParam, lParam);\n\t}\n\t//Platform::DebugPrintf(\"end wnd proc\\n\");\n\treturn 0l;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Editor.h",
    "content": "// Scintilla source code edit control\n/** @file Editor.h\n ** Defines the main editor class.\n **/\n// Copyright 1998-2011 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef EDITOR_H\n#define EDITOR_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n */\nclass Timer {\npublic:\n\tbool ticking;\n\tint ticksToWait;\n\tenum {tickSize = 100};\n\tTickerID tickerID;\n\n\tTimer();\n};\n\n/**\n */\nclass Idler {\npublic:\n\tbool state;\n\tIdlerID idlerID;\n\n\tIdler();\n};\n\n/**\n * When platform has a way to generate an event before painting,\n * accumulate needed styling range and other work items in\n * WorkNeeded to avoid unnecessary work inside paint handler\n */\nclass WorkNeeded {\npublic:\n\tenum workItems {\n\t\tworkNone=0,\n\t\tworkStyle=1,\n\t\tworkUpdateUI=2\n\t};\n\tenum workItems items;\n\tPosition upTo;\n\n\tWorkNeeded() : items(workNone), upTo(0) {}\n\tvoid Reset() {\n\t\titems = workNone;\n\t\tupTo = 0;\n\t}\n\tvoid Need(workItems items_, Position pos) {\n\t\tif ((items_ & workStyle) && (upTo < pos))\n\t\t\tupTo = pos;\n\t\titems = static_cast<workItems>(items | items_);\n\t}\n};\n\n/**\n * Hold a piece of text selected for copying or dragging, along with encoding and selection format information.\n */\nclass SelectionText {\n\tstd::string s;\npublic:\n\tbool rectangular;\n\tbool lineCopy;\n\tint codePage;\n\tint characterSet;\n\tSelectionText() : rectangular(false), lineCopy(false), codePage(0), characterSet(0) {}\n\t~SelectionText() {\n\t}\n\tvoid Clear() {\n\t\ts.clear();\n\t\trectangular = false;\n\t\tlineCopy = false;\n\t\tcodePage = 0;\n\t\tcharacterSet = 0;\n\t}\n\tvoid Copy(const std::string &s_, int codePage_, int characterSet_, bool rectangular_, bool lineCopy_) {\n\t\ts = s_;\n\t\tcodePage = codePage_;\n\t\tcharacterSet = characterSet_;\n\t\trectangular = rectangular_;\n\t\tlineCopy = lineCopy_;\n\t\tFixSelectionForClipboard();\n\t}\n\tvoid Copy(const SelectionText &other) {\n\t\tCopy(other.s, other.codePage, other.characterSet, other.rectangular, other.lineCopy);\n\t}\n\tconst char *Data() const {\n\t\treturn s.c_str();\n\t}\n\tsize_t Length() const {\n\t\treturn s.length();\n\t}\n\tsize_t LengthWithTerminator() const {\n\t\treturn s.length() + 1;\n\t}\n\tbool Empty() const {\n\t\treturn s.empty();\n\t}\nprivate:\n\tvoid FixSelectionForClipboard() {\n\t\t// To avoid truncating the contents of the clipboard when pasted where the\n\t\t// clipboard contains NUL characters, replace NUL characters by spaces.\n\t\tstd::replace(s.begin(), s.end(), '\\0', ' ');\n\t}\n};\n\nstruct WrapPending {\n\t// The range of lines that need to be wrapped\n\tenum { lineLarge = 0x7ffffff };\n\tint start;\t// When there are wraps pending, will be in document range\n\tint end;\t// May be lineLarge to indicate all of document after start\n\tWrapPending() {\n\t\tstart = lineLarge;\n\t\tend = lineLarge;\n\t}\n\tvoid Reset() {\n\t\tstart = lineLarge;\n\t\tend = lineLarge;\n\t}\n\tvoid Wrapped(int line) {\n\t\tif (start == line)\n\t\t\tstart++;\n\t}\n\tbool NeedsWrap() const {\n\t\treturn start < end;\n\t}\n\tbool AddRange(int lineStart, int lineEnd) {\n\t\tconst bool neededWrap = NeedsWrap();\n\t\tbool changed = false;\n\t\tif (start > lineStart) {\n\t\t\tstart = lineStart;\n\t\t\tchanged = true;\n\t\t}\n\t\tif ((end < lineEnd) || !neededWrap) {\n\t\t\tend = lineEnd;\n\t\t\tchanged = true;\n\t\t}\n\t\treturn changed;\n\t}\n};\n\n/**\n */\nclass Editor : public EditModel, public DocWatcher {\n\t// Private so Editor objects can not be copied\n\texplicit Editor(const Editor &);\n\tEditor &operator=(const Editor &);\n\nprotected:\t// ScintillaBase subclass needs access to much of Editor\n\n\t/** On GTK+, Scintilla is a container widget holding two scroll bars\n\t * whereas on Windows there is just one window with both scroll bars turned on. */\n\tWindow wMain;\t///< The Scintilla parent window\n\tWindow wMargin;\t///< May be separate when using a scroll view for wMain\n\n\t/** Style resources may be expensive to allocate so are cached between uses.\n\t * When a style attribute is changed, this cache is flushed. */\n\tbool stylesValid;\n\tViewStyle vs;\n\tint technology;\n\tPoint sizeRGBAImage;\n\tfloat scaleRGBAImage;\n\n\tMarginView marginView;\n\tEditView view;\n\n\tint cursorMode;\n\n\tbool hasFocus;\n\tbool mouseDownCaptures;\n\tbool mouseWheelCaptures;\n\n\tint xCaretMargin;\t///< Ensure this many pixels visible on both sides of caret\n\tbool horizontalScrollBarVisible;\n\tint scrollWidth;\n\tbool verticalScrollBarVisible;\n\tbool endAtLastLine;\n\tint caretSticky;\n\tint marginOptions;\n\tbool mouseSelectionRectangularSwitch;\n\tbool multipleSelection;\n\tbool additionalSelectionTyping;\n\tint multiPasteMode;\n\n\tint virtualSpaceOptions;\n\n\tKeyMap kmap;\n\n\tTimer timer;\n\tTimer autoScrollTimer;\n\tenum { autoScrollDelay = 200 };\n\n\tIdler idler;\n\n\tPoint lastClick;\n\tunsigned int lastClickTime;\n\tPoint doubleClickCloseThreshold;\n\tint dwellDelay;\n\tint ticksToDwell;\n\tbool dwelling;\n\tenum { selChar, selWord, selSubLine, selWholeLine } selectionType;\n\tPoint ptMouseLast;\n\tenum { ddNone, ddInitial, ddDragging } inDragDrop;\n\tbool dropWentOutside;\n\tSelectionPosition posDrop;\n\tint hotSpotClickPos;\n\tint lastXChosen;\n\tint lineAnchorPos;\n\tint originalAnchorPos;\n\tint wordSelectAnchorStartPos;\n\tint wordSelectAnchorEndPos;\n\tint wordSelectInitialCaretPos;\n\tint targetStart;\n\tint targetEnd;\n\tint searchFlags;\n\tint topLine;\n\tint posTopLine;\n\tint lengthForEncode;\n\n\tint needUpdateUI;\n\n\tenum { notPainting, painting, paintAbandoned } paintState;\n\tbool paintAbandonedByStyling;\n\tPRectangle rcPaint;\n\tbool paintingAllText;\n\tbool willRedrawAll;\n\tWorkNeeded workNeeded;\n\tint idleStyling;\n\tbool needIdleStyling;\n\n\tint modEventMask;\n\n\tSelectionText drag;\n\n\tint caretXPolicy;\n\tint caretXSlop;\t///< Ensure this many pixels visible on both sides of caret\n\n\tint caretYPolicy;\n\tint caretYSlop;\t///< Ensure this many lines visible on both sides of caret\n\n\tint visiblePolicy;\n\tint visibleSlop;\n\n\tint searchAnchor;\n\n\tbool recordingMacro;\n\n\tint foldAutomatic;\n\n\t// Wrapping support\n\tWrapPending wrapPending;\n\n\tbool convertPastes;\n\n\tEditor();\n\tvirtual ~Editor();\n\tvirtual void Initialise() = 0;\n\tvirtual void Finalise();\n\n\tvoid InvalidateStyleData();\n\tvoid InvalidateStyleRedraw();\n\tvoid RefreshStyleData();\n\tvoid SetRepresentations();\n\tvoid DropGraphics(bool freeObjects);\n\tvoid AllocateGraphics();\n\n\t// The top left visible point in main window coordinates. Will be 0,0 except for\n\t// scroll views where it will be equivalent to the current scroll position.\n\tvirtual Point GetVisibleOriginInMain() const;\n\tPointDocument DocumentPointFromView(Point ptView) const;  // Convert a point from view space to document\n\tint TopLineOfMain() const;   // Return the line at Main's y coordinate 0\n\tvirtual PRectangle GetClientRectangle() const;\n\tvirtual PRectangle GetClientDrawingRectangle();\n\tPRectangle GetTextRectangle() const;\n\n\tvirtual int LinesOnScreen() const;\n\tint LinesToScroll() const;\n\tint MaxScrollPos() const;\n\tSelectionPosition ClampPositionIntoDocument(SelectionPosition sp) const;\n\tPoint LocationFromPosition(SelectionPosition pos, PointEnd pe=peDefault);\n\tPoint LocationFromPosition(int pos, PointEnd pe=peDefault);\n\tint XFromPosition(int pos);\n\tint XFromPosition(SelectionPosition sp);\n\tSelectionPosition SPositionFromLocation(Point pt, bool canReturnInvalid=false, bool charPosition=false, bool virtualSpace=true);\n\tint PositionFromLocation(Point pt, bool canReturnInvalid = false, bool charPosition = false);\n\tSelectionPosition SPositionFromLineX(int lineDoc, int x);\n\tint PositionFromLineX(int line, int x);\n\tint LineFromLocation(Point pt) const;\n\tvoid SetTopLine(int topLineNew);\n\n\tvirtual bool AbandonPaint();\n\tvirtual void RedrawRect(PRectangle rc);\n\tvirtual void DiscardOverdraw();\n\tvirtual void Redraw();\n\tvoid RedrawSelMargin(int line=-1, bool allAfter=false);\n\tPRectangle RectangleFromRange(Range r, int overlap);\n\tvoid InvalidateRange(int start, int end);\n\n\tbool UserVirtualSpace() const {\n\t\treturn ((virtualSpaceOptions & SCVS_USERACCESSIBLE) != 0);\n\t}\n\tint CurrentPosition() const;\n\tbool SelectionEmpty() const;\n\tSelectionPosition SelectionStart();\n\tSelectionPosition SelectionEnd();\n\tvoid SetRectangularRange();\n\tvoid ThinRectangularRange();\n\tvoid InvalidateSelection(SelectionRange newMain, bool invalidateWholeSelection=false);\n\tvoid InvalidateWholeSelection();\n\tvoid SetSelection(SelectionPosition currentPos_, SelectionPosition anchor_);\n\tvoid SetSelection(int currentPos_, int anchor_);\n\tvoid SetSelection(SelectionPosition currentPos_);\n\tvoid SetSelection(int currentPos_);\n\tvoid SetEmptySelection(SelectionPosition currentPos_);\n\tvoid SetEmptySelection(int currentPos_);\n\tenum AddNumber { addOne, addEach };\n\tvoid MultipleSelectAdd(AddNumber addNumber);\n\tbool RangeContainsProtected(int start, int end) const;\n\tbool SelectionContainsProtected();\n\tint MovePositionOutsideChar(int pos, int moveDir, bool checkLineEnd=true) const;\n\tSelectionPosition MovePositionOutsideChar(SelectionPosition pos, int moveDir, bool checkLineEnd=true) const;\n\tvoid MovedCaret(SelectionPosition newPos, SelectionPosition previousPos, bool ensureVisible);\n\tvoid MovePositionTo(SelectionPosition newPos, Selection::selTypes selt=Selection::noSel, bool ensureVisible=true);\n\tvoid MovePositionTo(int newPos, Selection::selTypes selt=Selection::noSel, bool ensureVisible=true);\n\tSelectionPosition MovePositionSoVisible(SelectionPosition pos, int moveDir);\n\tSelectionPosition MovePositionSoVisible(int pos, int moveDir);\n\tPoint PointMainCaret();\n\tvoid SetLastXChosen();\n\n\tvoid ScrollTo(int line, bool moveThumb=true);\n\tvirtual void ScrollText(int linesToMove);\n\tvoid HorizontalScrollTo(int xPos);\n\tvoid VerticalCentreCaret();\n\tvoid MoveSelectedLines(int lineDelta);\n\tvoid MoveSelectedLinesUp();\n\tvoid MoveSelectedLinesDown();\n\tvoid MoveCaretInsideView(bool ensureVisible=true);\n\tint DisplayFromPosition(int pos);\n\n\tstruct XYScrollPosition {\n\t\tint xOffset;\n\t\tint topLine;\n\t\tXYScrollPosition(int xOffset_, int topLine_) : xOffset(xOffset_), topLine(topLine_) {}\n\t\tbool operator==(const XYScrollPosition &other) const {\n\t\t\treturn (xOffset == other.xOffset) && (topLine == other.topLine);\n\t\t}\n\t};\n\tenum XYScrollOptions {\n\t\txysUseMargin=0x1,\n\t\txysVertical=0x2,\n\t\txysHorizontal=0x4,\n\t\txysDefault=xysUseMargin|xysVertical|xysHorizontal};\n\tXYScrollPosition XYScrollToMakeVisible(const SelectionRange &range, const XYScrollOptions options);\n\tvoid SetXYScroll(XYScrollPosition newXY);\n\tvoid EnsureCaretVisible(bool useMargin=true, bool vert=true, bool horiz=true);\n\tvoid ScrollRange(SelectionRange range);\n\tvoid ShowCaretAtCurrentPosition();\n\tvoid DropCaret();\n\tvoid CaretSetPeriod(int period);\n\tvoid InvalidateCaret();\n\tvirtual void NotifyCaretMove();\n\tvirtual void UpdateSystemCaret();\n\n\tbool Wrapping() const;\n\tvoid NeedWrapping(int docLineStart=0, int docLineEnd=WrapPending::lineLarge);\n\tbool WrapOneLine(Surface *surface, int lineToWrap);\n\tenum wrapScope {wsAll, wsVisible, wsIdle};\n\tbool WrapLines(enum wrapScope ws);\n\tvoid LinesJoin();\n\tvoid LinesSplit(int pixelWidth);\n\n\tvoid PaintSelMargin(Surface *surface, PRectangle &rc);\n\tvoid RefreshPixMaps(Surface *surfaceWindow);\n\tvoid Paint(Surface *surfaceWindow, PRectangle rcArea);\n\tlong FormatRange(bool draw, Sci_RangeToFormat *pfr);\n\tint TextWidth(int style, const char *text);\n\n\tvirtual void SetVerticalScrollPos() = 0;\n\tvirtual void SetHorizontalScrollPos() = 0;\n\tvirtual bool ModifyScrollBars(int nMax, int nPage) = 0;\n\tvirtual void ReconfigureScrollBars();\n\tvoid SetScrollBars();\n\tvoid ChangeSize();\n\n\tvoid FilterSelections();\n\tint RealizeVirtualSpace(int position, unsigned int virtualSpace);\n\tSelectionPosition RealizeVirtualSpace(const SelectionPosition &position);\n\tvoid AddChar(char ch);\n\tvirtual void AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS=false);\n\tvoid ClearBeforeTentativeStart();\n\tvoid InsertPaste(const char *text, int len);\n\tenum PasteShape { pasteStream=0, pasteRectangular = 1, pasteLine = 2 };\n\tvoid InsertPasteShape(const char *text, int len, PasteShape shape);\n\tvoid ClearSelection(bool retainMultipleSelections = false);\n\tvoid ClearAll();\n\tvoid ClearDocumentStyle();\n\tvoid Cut();\n\tvoid PasteRectangular(SelectionPosition pos, const char *ptr, int len);\n\tvirtual void Copy() = 0;\n\tvirtual void CopyAllowLine();\n\tvirtual bool CanPaste();\n\tvirtual void Paste() = 0;\n\tvoid Clear();\n\tvoid SelectAll();\n\tvoid Undo();\n\tvoid Redo();\n\tvoid DelCharBack(bool allowLineStartDeletion);\n\tvirtual void ClaimSelection() = 0;\n\n\tstatic int ModifierFlags(bool shift, bool ctrl, bool alt, bool meta=false, bool super=false);\n\tvirtual void NotifyChange() = 0;\n\tvirtual void NotifyFocus(bool focus);\n\tvirtual void SetCtrlID(int identifier);\n\tvirtual int GetCtrlID() { return ctrlID; }\n\tvirtual void NotifyParent(SCNotification scn) = 0;\n\tvirtual void NotifyStyleToNeeded(int endStyleNeeded);\n\tvoid NotifyChar(int ch);\n\tvoid NotifySavePoint(bool isSavePoint);\n\tvoid NotifyModifyAttempt();\n\tvirtual void NotifyDoubleClick(Point pt, int modifiers);\n\tvirtual void NotifyDoubleClick(Point pt, bool shift, bool ctrl, bool alt);\n\tvoid NotifyHotSpotClicked(int position, int modifiers);\n\tvoid NotifyHotSpotClicked(int position, bool shift, bool ctrl, bool alt);\n\tvoid NotifyHotSpotDoubleClicked(int position, int modifiers);\n\tvoid NotifyHotSpotDoubleClicked(int position, bool shift, bool ctrl, bool alt);\n\tvoid NotifyHotSpotReleaseClick(int position, int modifiers);\n\tvoid NotifyHotSpotReleaseClick(int position, bool shift, bool ctrl, bool alt);\n\tbool NotifyUpdateUI();\n\tvoid NotifyPainted();\n\tvoid NotifyIndicatorClick(bool click, int position, int modifiers);\n\tvoid NotifyIndicatorClick(bool click, int position, bool shift, bool ctrl, bool alt);\n\tbool NotifyMarginClick(Point pt, int modifiers);\n\tbool NotifyMarginClick(Point pt, bool shift, bool ctrl, bool alt);\n\tbool NotifyMarginRightClick(Point pt, int modifiers);\n\tvoid NotifyNeedShown(int pos, int len);\n\tvoid NotifyDwelling(Point pt, bool state);\n\tvoid NotifyZoom();\n\n\tvoid NotifyModifyAttempt(Document *document, void *userData);\n\tvoid NotifySavePoint(Document *document, void *userData, bool atSavePoint);\n\tvoid CheckModificationForWrap(DocModification mh);\n\tvoid NotifyModified(Document *document, DocModification mh, void *userData);\n\tvoid NotifyDeleted(Document *document, void *userData);\n\tvoid NotifyStyleNeeded(Document *doc, void *userData, int endPos);\n\tvoid NotifyLexerChanged(Document *doc, void *userData);\n\tvoid NotifyErrorOccurred(Document *doc, void *userData, int status);\n\tvoid NotifyMacroRecord(unsigned int iMessage, uptr_t wParam, sptr_t lParam);\n\n\tvoid ContainerNeedsUpdate(int flags);\n\tvoid PageMove(int direction, Selection::selTypes selt=Selection::noSel, bool stuttered = false);\n\tenum { cmSame, cmUpper, cmLower };\n\tvirtual std::string CaseMapString(const std::string &s, int caseMapping);\n\tvoid ChangeCaseOfSelection(int caseMapping);\n\tvoid LineTranspose();\n\tvoid Duplicate(bool forLine);\n\tvirtual void CancelModes();\n\tvoid NewLine();\n\tSelectionPosition PositionUpOrDown(SelectionPosition spStart, int direction, int lastX);\n\tvoid CursorUpOrDown(int direction, Selection::selTypes selt);\n\tvoid ParaUpOrDown(int direction, Selection::selTypes selt);\n\tRange RangeDisplayLine(int lineVisible);\n\tint StartEndDisplayLine(int pos, bool start);\n\tint VCHomeDisplayPosition(int position);\n\tint VCHomeWrapPosition(int position);\n\tint LineEndWrapPosition(int position);\n\tint HorizontalMove(unsigned int iMessage);\n\tint DelWordOrLine(unsigned int iMessage);\n\tvirtual int KeyCommand(unsigned int iMessage);\n\tvirtual int KeyDefault(int /* key */, int /*modifiers*/);\n\tint KeyDownWithModifiers(int key, int modifiers, bool *consumed);\n\tint KeyDown(int key, bool shift, bool ctrl, bool alt, bool *consumed=0);\n\n\tvoid Indent(bool forwards);\n\n\tvirtual CaseFolder *CaseFolderForEncoding();\n\tlong FindText(uptr_t wParam, sptr_t lParam);\n\tvoid SearchAnchor();\n\tlong SearchText(unsigned int iMessage, uptr_t wParam, sptr_t lParam);\n\tlong SearchInTarget(const char *text, int length);\n\tvoid GoToLine(int lineNo);\n\n\tvirtual void CopyToClipboard(const SelectionText &selectedText) = 0;\n\tstd::string RangeText(int start, int end) const;\n\tvoid CopySelectionRange(SelectionText *ss, bool allowLineCopy=false);\n\tvoid CopyRangeToClipboard(int start, int end);\n\tvoid CopyText(int length, const char *text);\n\tvoid SetDragPosition(SelectionPosition newPos);\n\tvirtual void DisplayCursor(Window::Cursor c);\n\tvirtual bool DragThreshold(Point ptStart, Point ptNow);\n\tvirtual void StartDrag();\n\tvoid DropAt(SelectionPosition position, const char *value, size_t lengthValue, bool moving, bool rectangular);\n\tvoid DropAt(SelectionPosition position, const char *value, bool moving, bool rectangular);\n\t/** PositionInSelection returns true if position in selection. */\n\tbool PositionInSelection(int pos);\n\tbool PointInSelection(Point pt);\n\tbool PointInSelMargin(Point pt) const;\n\tWindow::Cursor GetMarginCursor(Point pt) const;\n\tvoid TrimAndSetSelection(int currentPos_, int anchor_);\n\tvoid LineSelection(int lineCurrentPos_, int lineAnchorPos_, bool wholeLine);\n\tvoid WordSelection(int pos);\n\tvoid DwellEnd(bool mouseMoved);\n\tvoid MouseLeave();\n\tvirtual void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers);\n\tvirtual void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers);\n\tvirtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);\n\tvoid ButtonMoveWithModifiers(Point pt, int modifiers);\n\tvoid ButtonMove(Point pt);\n\tvoid ButtonUp(Point pt, unsigned int curTime, bool ctrl);\n\n\tvoid Tick();\n\tbool Idle();\n\tvirtual void SetTicking(bool on);\n\tenum TickReason { tickCaret, tickScroll, tickWiden, tickDwell, tickPlatform };\n\tvirtual void TickFor(TickReason reason);\n\tvirtual bool FineTickerAvailable();\n\tvirtual bool FineTickerRunning(TickReason reason);\n\tvirtual void FineTickerStart(TickReason reason, int millis, int tolerance);\n\tvirtual void FineTickerCancel(TickReason reason);\n\tvirtual bool SetIdle(bool) { return false; }\n\tvirtual void SetMouseCapture(bool on) = 0;\n\tvirtual bool HaveMouseCapture() = 0;\n\tvoid SetFocusState(bool focusState);\n\n\tint PositionAfterArea(PRectangle rcArea) const;\n\tvoid StyleToPositionInView(Position pos);\n\tint PositionAfterMaxStyling(int posMax, bool scrolling) const;\n\tvoid StartIdleStyling(bool truncatedLastStyling);\n\tvoid StyleAreaBounded(PRectangle rcArea, bool scrolling);\n\tvoid IdleStyling();\n\tvirtual void IdleWork();\n\tvirtual void QueueIdleWork(WorkNeeded::workItems items, int upTo=0);\n\n\tvirtual bool PaintContains(PRectangle rc);\n\tbool PaintContainsMargin();\n\tvoid CheckForChangeOutsidePaint(Range r);\n\tvoid SetBraceHighlight(Position pos0, Position pos1, int matchStyle);\n\n\tvoid SetAnnotationHeights(int start, int end);\n\tvirtual void SetDocPointer(Document *document);\n\n\tvoid SetAnnotationVisible(int visible);\n\n\tint ExpandLine(int line);\n\tvoid SetFoldExpanded(int lineDoc, bool expanded);\n\tvoid FoldLine(int line, int action);\n\tvoid FoldExpand(int line, int action, int level);\n\tint ContractedFoldNext(int lineStart) const;\n\tvoid EnsureLineVisible(int lineDoc, bool enforcePolicy);\n\tvoid FoldChanged(int line, int levelNow, int levelPrev);\n\tvoid NeedShown(int pos, int len);\n\tvoid FoldAll(int action);\n\n\tint GetTag(char *tagValue, int tagNumber);\n\tint ReplaceTarget(bool replacePatterns, const char *text, int length=-1);\n\n\tbool PositionIsHotspot(int position) const;\n\tbool PointIsHotspot(Point pt);\n\tvoid SetHotSpotRange(Point *pt);\n\tRange GetHotSpotRange() const;\n\tvoid SetHoverIndicatorPosition(int position);\n\tvoid SetHoverIndicatorPoint(Point pt);\n\n\tint CodePage() const;\n\tvirtual bool ValidCodePage(int /* codePage */) const { return true; }\n\tint WrapCount(int line);\n\tvoid AddStyledText(char *buffer, int appendLength);\n\n\tvirtual sptr_t DefWndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) = 0;\n\tbool ValidMargin(uptr_t wParam) const;\n\tvoid StyleSetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam);\n\tsptr_t StyleGetMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam);\n\tvoid SetSelectionNMessage(unsigned int iMessage, uptr_t wParam, sptr_t lParam);\n\n\tstatic const char *StringFromEOLMode(int eolMode);\n\n\tstatic sptr_t StringResult(sptr_t lParam, const char *val);\n\tstatic sptr_t BytesResult(sptr_t lParam, const unsigned char *val, size_t len);\n\npublic:\n\t// Public so the COM thunks can access it.\n\tbool IsUnicodeMode() const;\n\t// Public so scintilla_send_message can use it.\n\tvirtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);\n\t// Public so scintilla_set_id can use it.\n\tint ctrlID;\n\t// Public so COM methods for drag and drop can set it.\n\tint errorStatus;\n\tfriend class AutoSurface;\n\tfriend class SelectionLineIterator;\n};\n\n/**\n * A smart pointer class to ensure Surfaces are set up and deleted correctly.\n */\nclass AutoSurface {\nprivate:\n\tSurface *surf;\npublic:\n\tAutoSurface(Editor *ed, int technology = -1) : surf(0) {\n\t\tif (ed->wMain.GetID()) {\n\t\t\tsurf = Surface::Allocate(technology != -1 ? technology : ed->technology);\n\t\t\tif (surf) {\n\t\t\t\tsurf->Init(ed->wMain.GetID());\n\t\t\t\tsurf->SetUnicodeMode(SC_CP_UTF8 == ed->CodePage());\n\t\t\t\tsurf->SetDBCSMode(ed->CodePage());\n\t\t\t}\n\t\t}\n\t}\n\tAutoSurface(SurfaceID sid, Editor *ed, int technology = -1) : surf(0) {\n\t\tif (ed->wMain.GetID()) {\n\t\t\tsurf = Surface::Allocate(technology != -1 ? technology : ed->technology);\n\t\t\tif (surf) {\n\t\t\t\tsurf->Init(sid, ed->wMain.GetID());\n\t\t\t\tsurf->SetUnicodeMode(SC_CP_UTF8 == ed->CodePage());\n\t\t\t\tsurf->SetDBCSMode(ed->CodePage());\n\t\t\t}\n\t\t}\n\t}\n\t~AutoSurface() {\n\t\tdelete surf;\n\t}\n\tSurface *operator->() const {\n\t\treturn surf;\n\t}\n\toperator Surface *() const {\n\t\treturn surf;\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/ExternalLexer.cpp",
    "content": "// Scintilla source code edit control\n/** @file ExternalLexer.cxx\n ** Support external lexers in DLLs.\n **/\n// Copyright 2001 Simon Steele <ss@pnotepad.org>, portions copyright Neil Hodgson.\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <stdexcept>\n#include <string>\n\n#include \"Platform.h\"\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n#include \"SciLexer.h\"\n\n#include \"LexerModule.h\"\n#include \"Catalogue.h\"\n#include \"ExternalLexer.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nLexerManager *LexerManager::theInstance = NULL;\n\n//------------------------------------------\n//\n// ExternalLexerModule\n//\n//------------------------------------------\n\nvoid ExternalLexerModule::SetExternal(GetLexerFactoryFunction fFactory, int index) {\n\tfneFactory = fFactory;\n\tfnFactory = fFactory(index);\n}\n\n//------------------------------------------\n//\n// LexerLibrary\n//\n//------------------------------------------\n\nLexerLibrary::LexerLibrary(const char *ModuleName) {\n\t// Initialise some members...\n\tfirst = NULL;\n\tlast = NULL;\n\n\t// Load the DLL\n\tlib = DynamicLibrary::Load(ModuleName);\n\tif (lib->IsValid()) {\n\t\tm_sModuleName = ModuleName;\n\t\t//Cannot use reinterpret_cast because: ANSI C++ forbids casting between pointers to functions and objects\n\t\tGetLexerCountFn GetLexerCount = (GetLexerCountFn)(sptr_t)lib->FindFunction(\"GetLexerCount\");\n\n\t\tif (GetLexerCount) {\n\t\t\tExternalLexerModule *lex;\n\t\t\tLexerMinder *lm;\n\n\t\t\t// Find functions in the DLL\n\t\t\tGetLexerNameFn GetLexerName = (GetLexerNameFn)(sptr_t)lib->FindFunction(\"GetLexerName\");\n\t\t\tGetLexerFactoryFunction fnFactory = (GetLexerFactoryFunction)(sptr_t)lib->FindFunction(\"GetLexerFactory\");\n\n\t\t\tint nl = GetLexerCount();\n\n\t\t\tfor (int i = 0; i < nl; i++) {\n\t\t\t\t// Assign a buffer for the lexer name.\n\t\t\t\tchar lexname[100] = \"\";\n\t\t\t\tGetLexerName(i, lexname, sizeof(lexname));\n\t\t\t\tlex = new ExternalLexerModule(SCLEX_AUTOMATIC, NULL, lexname, NULL);\n\t\t\t\tCatalogue::AddLexerModule(lex);\n\n\t\t\t\t// Create a LexerMinder so we don't leak the ExternalLexerModule...\n\t\t\t\tlm = new LexerMinder;\n\t\t\t\tlm->self = lex;\n\t\t\t\tlm->next = NULL;\n\t\t\t\tif (first != NULL) {\n\t\t\t\t\tlast->next = lm;\n\t\t\t\t\tlast = lm;\n\t\t\t\t} else {\n\t\t\t\t\tfirst = lm;\n\t\t\t\t\tlast = lm;\n\t\t\t\t}\n\n\t\t\t\t// The external lexer needs to know how to call into its DLL to\n\t\t\t\t// do its lexing and folding, we tell it here.\n\t\t\t\tlex->SetExternal(fnFactory, i);\n\t\t\t}\n\t\t}\n\t}\n\tnext = NULL;\n}\n\nLexerLibrary::~LexerLibrary() {\n\tRelease();\n\tdelete lib;\n}\n\nvoid LexerLibrary::Release() {\n\tLexerMinder *lm;\n\tLexerMinder *lmNext;\n\tlm = first;\n\twhile (NULL != lm) {\n\t\tlmNext = lm->next;\n\t\tdelete lm->self;\n\t\tdelete lm;\n\t\tlm = lmNext;\n\t}\n\n\tfirst = NULL;\n\tlast = NULL;\n}\n\n//------------------------------------------\n//\n// LexerManager\n//\n//------------------------------------------\n\n/// Return the single LexerManager instance...\nLexerManager *LexerManager::GetInstance() {\n\tif (!theInstance)\n\t\ttheInstance = new LexerManager;\n\treturn theInstance;\n}\n\n/// Delete any LexerManager instance...\nvoid LexerManager::DeleteInstance() {\n\tdelete theInstance;\n\ttheInstance = NULL;\n}\n\n/// protected constructor - this is a singleton...\nLexerManager::LexerManager() {\n\tfirst = NULL;\n\tlast = NULL;\n}\n\nLexerManager::~LexerManager() {\n\tClear();\n}\n\nvoid LexerManager::Load(const char *path) {\n\tLoadLexerLibrary(path);\n}\n\nvoid LexerManager::LoadLexerLibrary(const char *module) {\n\tfor (LexerLibrary *ll = first; ll; ll= ll->next) {\n\t\tif (strcmp(ll->m_sModuleName.c_str(), module) == 0)\n\t\t\treturn;\n\t}\n\tLexerLibrary *lib = new LexerLibrary(module);\n\tif (NULL != first) {\n\t\tlast->next = lib;\n\t\tlast = lib;\n\t} else {\n\t\tfirst = lib;\n\t\tlast = lib;\n\t}\n}\n\nvoid LexerManager::Clear() {\n\tif (NULL != first) {\n\t\tLexerLibrary *cur = first;\n\t\tLexerLibrary *next;\n\t\twhile (cur) {\n\t\t\tnext = cur->next;\n\t\t\tdelete cur;\n\t\t\tcur = next;\n\t\t}\n\t\tfirst = NULL;\n\t\tlast = NULL;\n\t}\n}\n\n//------------------------------------------\n//\n// LexerManager\n//\n//------------------------------------------\n\nLMMinder::~LMMinder() {\n\tLexerManager::DeleteInstance();\n}\n\nLMMinder minder;\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/ExternalLexer.h",
    "content": "// Scintilla source code edit control\n/** @file ExternalLexer.h\n ** Support external lexers in DLLs.\n **/\n// Copyright 2001 Simon Steele <ss@pnotepad.org>, portions copyright Neil Hodgson.\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef EXTERNALLEXER_H\n#define EXTERNALLEXER_H\n\n#if PLAT_WIN\n#define EXT_LEXER_DECL __stdcall\n#elif PLAT_QT\n#include <qglobal.h>\n#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64)\n#define EXT_LEXER_DECL __stdcall\n#else\n#define EXT_LEXER_DECL\n#endif\n#else\n#define EXT_LEXER_DECL\n#endif\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\ntypedef void*(EXT_LEXER_DECL *GetLexerFunction)(unsigned int Index);\ntypedef int (EXT_LEXER_DECL *GetLexerCountFn)();\ntypedef void (EXT_LEXER_DECL *GetLexerNameFn)(unsigned int Index, char *name, int buflength);\ntypedef LexerFactoryFunction(EXT_LEXER_DECL *GetLexerFactoryFunction)(unsigned int Index);\n\n/// Sub-class of LexerModule to use an external lexer.\nclass ExternalLexerModule : public LexerModule {\nprotected:\n\tGetLexerFactoryFunction fneFactory;\n\tstd::string name;\npublic:\n\tExternalLexerModule(int language_, LexerFunction fnLexer_,\n\t\tconst char *languageName_=0, LexerFunction fnFolder_=0) :\n\t\tLexerModule(language_, fnLexer_, 0, fnFolder_),\n\t\tfneFactory(0), name(languageName_){\n\t\tlanguageName = name.c_str();\n\t}\n\tvirtual void SetExternal(GetLexerFactoryFunction fFactory, int index);\n};\n\n/// LexerMinder points to an ExternalLexerModule - so we don't leak them.\nclass LexerMinder {\npublic:\n\tExternalLexerModule *self;\n\tLexerMinder *next;\n};\n\n/// LexerLibrary exists for every External Lexer DLL, contains LexerMinders.\nclass LexerLibrary {\n\tDynamicLibrary\t*lib;\n\tLexerMinder\t\t*first;\n\tLexerMinder\t\t*last;\n\npublic:\n\texplicit LexerLibrary(const char *ModuleName);\n\t~LexerLibrary();\n\tvoid Release();\n\n\tLexerLibrary\t*next;\n\tstd::string\t\t\tm_sModuleName;\n};\n\n/// LexerManager manages external lexers, contains LexerLibrarys.\nclass LexerManager {\npublic:\n\t~LexerManager();\n\n\tstatic LexerManager *GetInstance();\n\tstatic void DeleteInstance();\n\n\tvoid Load(const char *path);\n\tvoid Clear();\n\nprivate:\n\tLexerManager();\n\tstatic LexerManager *theInstance;\n\n\tvoid LoadLexerLibrary(const char *module);\n\tLexerLibrary *first;\n\tLexerLibrary *last;\n};\n\nclass LMMinder {\npublic:\n\t~LMMinder();\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/FontQuality.h",
    "content": "// Scintilla source code edit control\n/** @file FontQuality.h\n ** Definitions to control font anti-aliasing.\n ** Redefine constants from Scintilla.h to avoid including Scintilla.h in PlatWin.cxx.\n **/\n// Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef FONTQUALITY_H\n#define FONTQUALITY_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n// These definitions match Scintilla.h\n#define SC_EFF_QUALITY_MASK            0xF\n#define SC_EFF_QUALITY_DEFAULT           0\n#define SC_EFF_QUALITY_NON_ANTIALIASED   1\n#define SC_EFF_QUALITY_ANTIALIASED       2\n#define SC_EFF_QUALITY_LCD_OPTIMIZED     3\n\n// These definitions must match SC_TECHNOLOGY_* in Scintilla.h\n#define SCWIN_TECH_GDI 0\n#define SCWIN_TECH_DIRECTWRITE 1\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Indicator.cpp",
    "content": "// Scintilla source code edit control\n/** @file Indicator.cxx\n ** Defines the style of indicators which are text decorations such as underlining.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdexcept>\n#include <vector>\n#include <map>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n#include \"Indicator.h\"\n#include \"XPM.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nstatic PRectangle PixelGridAlign(const PRectangle &rc) {\n\t// Move left and right side to nearest pixel to avoid blurry visuals\n\treturn PRectangle::FromInts(int(rc.left + 0.5), int(rc.top), int(rc.right + 0.5), int(rc.bottom));\n}\n\nvoid Indicator::Draw(Surface *surface, const PRectangle &rc, const PRectangle &rcLine, const PRectangle &rcCharacter, DrawState drawState, int value) const {\n\tStyleAndColour sacDraw = sacNormal;\n\tif (Flags() & SC_INDICFLAG_VALUEFORE) {\n\t\tsacDraw.fore = value & SC_INDICVALUEMASK;\n\t}\n\tif (drawState == drawHover) {\n\t\tsacDraw = sacHover;\n\t}\n\tsurface->PenColour(sacDraw.fore);\n\tint ymid = static_cast<int>(rc.bottom + rc.top) / 2;\n\tif (sacDraw.style == INDIC_SQUIGGLE) {\n\t\tint x = int(rc.left+0.5);\n\t\tint xLast = int(rc.right+0.5);\n\t\tint y = 0;\n\t\tsurface->MoveTo(x, static_cast<int>(rc.top) + y);\n\t\twhile (x < xLast) {\n\t\t\tif ((x + 2) > xLast) {\n\t\t\t\tif (xLast > x)\n\t\t\t\t\ty = 1;\n\t\t\t\tx = xLast;\n\t\t\t} else {\n\t\t\t\tx += 2;\n\t\t\t\ty = 2 - y;\n\t\t\t}\n\t\t\tsurface->LineTo(x, static_cast<int>(rc.top) + y);\n\t\t}\n\t} else if (sacDraw.style == INDIC_SQUIGGLEPIXMAP) {\n\t\tPRectangle rcSquiggle = PixelGridAlign(rc);\n\n\t\tint width = Platform::Minimum(4000, static_cast<int>(rcSquiggle.Width()));\n\t\tRGBAImage image(width, 3, 1.0, 0);\n\t\tenum { alphaFull = 0xff, alphaSide = 0x2f, alphaSide2=0x5f };\n\t\tfor (int x = 0; x < width; x++) {\n\t\t\tif (x%2) {\n\t\t\t\t// Two halfway columns have a full pixel in middle flanked by light pixels\n\t\t\t\timage.SetPixel(x, 0, sacDraw.fore, alphaSide);\n\t\t\t\timage.SetPixel(x, 1, sacDraw.fore, alphaFull);\n\t\t\t\timage.SetPixel(x, 2, sacDraw.fore, alphaSide);\n\t\t\t} else {\n\t\t\t\t// Extreme columns have a full pixel at bottom or top and a mid-tone pixel in centre\n\t\t\t\timage.SetPixel(x, (x % 4) ? 0 : 2, sacDraw.fore, alphaFull);\n\t\t\t\timage.SetPixel(x, 1, sacDraw.fore, alphaSide2);\n\t\t\t}\n\t\t}\n\t\tsurface->DrawRGBAImage(rcSquiggle, image.GetWidth(), image.GetHeight(), image.Pixels());\n\t} else if (sacDraw.style == INDIC_SQUIGGLELOW) {\n\t\tsurface->MoveTo(static_cast<int>(rc.left), static_cast<int>(rc.top));\n\t\tint x = static_cast<int>(rc.left) + 3;\n\t\tint y = 0;\n\t\twhile (x < rc.right) {\n\t\t\tsurface->LineTo(x - 1, static_cast<int>(rc.top) + y);\n\t\t\ty = 1 - y;\n\t\t\tsurface->LineTo(x, static_cast<int>(rc.top) + y);\n\t\t\tx += 3;\n\t\t}\n\t\tsurface->LineTo(static_cast<int>(rc.right), static_cast<int>(rc.top) + y);\t// Finish the line\n\t} else if (sacDraw.style == INDIC_TT) {\n\t\tsurface->MoveTo(static_cast<int>(rc.left), ymid);\n\t\tint x = static_cast<int>(rc.left) + 5;\n\t\twhile (x < rc.right) {\n\t\t\tsurface->LineTo(x, ymid);\n\t\t\tsurface->MoveTo(x-3, ymid);\n\t\t\tsurface->LineTo(x-3, ymid+2);\n\t\t\tx++;\n\t\t\tsurface->MoveTo(x, ymid);\n\t\t\tx += 5;\n\t\t}\n\t\tsurface->LineTo(static_cast<int>(rc.right), ymid);\t// Finish the line\n\t\tif (x - 3 <= rc.right) {\n\t\t\tsurface->MoveTo(x-3, ymid);\n\t\t\tsurface->LineTo(x-3, ymid+2);\n\t\t}\n\t} else if (sacDraw.style == INDIC_DIAGONAL) {\n\t\tint x = static_cast<int>(rc.left);\n\t\twhile (x < rc.right) {\n\t\t\tsurface->MoveTo(x, static_cast<int>(rc.top) + 2);\n\t\t\tint endX = x+3;\n\t\t\tint endY = static_cast<int>(rc.top) - 1;\n\t\t\tif (endX > rc.right) {\n\t\t\t\tendY += endX - static_cast<int>(rc.right);\n\t\t\t\tendX = static_cast<int>(rc.right);\n\t\t\t}\n\t\t\tsurface->LineTo(endX, endY);\n\t\t\tx += 4;\n\t\t}\n\t} else if (sacDraw.style == INDIC_STRIKE) {\n\t\tsurface->MoveTo(static_cast<int>(rc.left), static_cast<int>(rc.top) - 4);\n\t\tsurface->LineTo(static_cast<int>(rc.right), static_cast<int>(rc.top) - 4);\n\t} else if ((sacDraw.style == INDIC_HIDDEN) || (sacDraw.style == INDIC_TEXTFORE)) {\n\t\t// Draw nothing\n\t} else if (sacDraw.style == INDIC_BOX) {\n\t\tsurface->MoveTo(static_cast<int>(rc.left), ymid + 1);\n\t\tsurface->LineTo(static_cast<int>(rc.right), ymid + 1);\n\t\tsurface->LineTo(static_cast<int>(rc.right), static_cast<int>(rcLine.top) + 1);\n\t\tsurface->LineTo(static_cast<int>(rc.left), static_cast<int>(rcLine.top) + 1);\n\t\tsurface->LineTo(static_cast<int>(rc.left), ymid + 1);\n\t} else if (sacDraw.style == INDIC_ROUNDBOX ||\n\t\tsacDraw.style == INDIC_STRAIGHTBOX ||\n\t\tsacDraw.style == INDIC_FULLBOX) {\n\t\tPRectangle rcBox = rcLine;\n\t\tif (sacDraw.style != INDIC_FULLBOX)\n\t\t\trcBox.top = rcLine.top + 1;\n\t\trcBox.left = rc.left;\n\t\trcBox.right = rc.right;\n\t\tsurface->AlphaRectangle(rcBox, (sacDraw.style == INDIC_ROUNDBOX) ? 1 : 0,\n\t\t\tsacDraw.fore, fillAlpha, sacDraw.fore, outlineAlpha, 0);\n\t} else if (sacDraw.style == INDIC_DOTBOX) {\n\t\tPRectangle rcBox = PixelGridAlign(rc);\n\t\trcBox.top = rcLine.top + 1;\n\t\trcBox.bottom = rcLine.bottom;\n\t\t// Cap width at 4000 to avoid large allocations when mistakes made\n\t\tint width = Platform::Minimum(static_cast<int>(rcBox.Width()), 4000);\n\t\tRGBAImage image(width, static_cast<int>(rcBox.Height()), 1.0, 0);\n\t\t// Draw horizontal lines top and bottom\n\t\tfor (int x=0; x<width; x++) {\n\t\t\tfor (int y = 0; y<static_cast<int>(rcBox.Height()); y += static_cast<int>(rcBox.Height()) - 1) {\n\t\t\t\timage.SetPixel(x, y, sacDraw.fore, ((x + y) % 2) ? outlineAlpha : fillAlpha);\n\t\t\t}\n\t\t}\n\t\t// Draw vertical lines left and right\n\t\tfor (int y = 1; y<static_cast<int>(rcBox.Height()); y++) {\n\t\t\tfor (int x=0; x<width; x += width-1) {\n\t\t\t\timage.SetPixel(x, y, sacDraw.fore, ((x + y) % 2) ? outlineAlpha : fillAlpha);\n\t\t\t}\n\t\t}\n\t\tsurface->DrawRGBAImage(rcBox, image.GetWidth(), image.GetHeight(), image.Pixels());\n\t} else if (sacDraw.style == INDIC_DASH) {\n\t\tint x = static_cast<int>(rc.left);\n\t\twhile (x < rc.right) {\n\t\t\tsurface->MoveTo(x, ymid);\n\t\t\tsurface->LineTo(Platform::Minimum(x + 4, static_cast<int>(rc.right)), ymid);\n\t\t\tx += 7;\n\t\t}\n\t} else if (sacDraw.style == INDIC_DOTS) {\n\t\tint x = static_cast<int>(rc.left);\n\t\twhile (x < static_cast<int>(rc.right)) {\n\t\t\tPRectangle rcDot = PRectangle::FromInts(x, ymid, x + 1, ymid + 1);\n\t\t\tsurface->FillRectangle(rcDot, sacDraw.fore);\n\t\t\tx += 2;\n\t\t}\n\t} else if (sacDraw.style == INDIC_COMPOSITIONTHICK) {\n\t\tPRectangle rcComposition(rc.left+1, rcLine.bottom-2, rc.right-1, rcLine.bottom);\n\t\tsurface->FillRectangle(rcComposition, sacDraw.fore);\n\t} else if (sacDraw.style == INDIC_COMPOSITIONTHIN) {\n\t\tPRectangle rcComposition(rc.left+1, rcLine.bottom-2, rc.right-1, rcLine.bottom-1);\n\t\tsurface->FillRectangle(rcComposition, sacDraw.fore);\n\t} else if (sacDraw.style == INDIC_POINT || sacDraw.style == INDIC_POINTCHARACTER) {\n\t\tif (rcCharacter.Width() >= 0.1) {\n\t\t\tconst int pixelHeight = static_cast<int>(rc.Height() - 1.0f);\t// 1 pixel onto next line if multiphase\n\t\t\tconst XYPOSITION x = (sacDraw.style == INDIC_POINT) ? (rcCharacter.left) : ((rcCharacter.right + rcCharacter.left) / 2);\n\t\t\tconst int ix = static_cast<int>(x + 0.5f);\n\t\t\tconst int iy = static_cast<int>(rc.top + 1.0f);\n\t\t\tPoint pts[] = {\n\t\t\t\tPoint::FromInts(ix - pixelHeight, iy + pixelHeight),\t// Left\n\t\t\t\tPoint::FromInts(ix + pixelHeight, iy + pixelHeight),\t// Right\n\t\t\t\tPoint::FromInts(ix, iy)\t\t\t\t\t\t\t\t\t// Top\n\t\t\t};\n\t\t\tsurface->Polygon(pts, 3, sacDraw.fore, sacDraw.fore);\n\t\t}\n\t} else {\t// Either INDIC_PLAIN or unknown\n\t\tsurface->MoveTo(static_cast<int>(rc.left), ymid);\n\t\tsurface->LineTo(static_cast<int>(rc.right), ymid);\n\t}\n}\n\nvoid Indicator::SetFlags(int attributes_) {\n\tattributes = attributes_;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Indicator.h",
    "content": "// Scintilla source code edit control\n/** @file Indicator.h\n ** Defines the style of indicators which are text decorations such as underlining.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef INDICATOR_H\n#define INDICATOR_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nstruct StyleAndColour {\n\tint style;\n\tColourDesired fore;\n\tStyleAndColour() : style(INDIC_PLAIN), fore(0, 0, 0) {\n\t}\n\tStyleAndColour(int style_, ColourDesired fore_ = ColourDesired(0, 0, 0)) : style(style_), fore(fore_) {\n\t}\n\tbool operator==(const StyleAndColour &other) const {\n\t\treturn (style == other.style) && (fore == other.fore);\n\t}\n};\n\n/**\n */\nclass Indicator {\npublic:\n\tenum DrawState { drawNormal, drawHover };\n\tStyleAndColour sacNormal;\n\tStyleAndColour sacHover;\n\tbool under;\n\tint fillAlpha;\n\tint outlineAlpha;\n\tint attributes;\n\tIndicator() : under(false), fillAlpha(30), outlineAlpha(50), attributes(0) {\n\t}\n\tIndicator(int style_, ColourDesired fore_=ColourDesired(0,0,0), bool under_=false, int fillAlpha_=30, int outlineAlpha_=50) :\n\t\tsacNormal(style_, fore_), sacHover(style_, fore_), under(under_), fillAlpha(fillAlpha_), outlineAlpha(outlineAlpha_), attributes(0) {\n\t}\n\tvoid Draw(Surface *surface, const PRectangle &rc, const PRectangle &rcLine, const PRectangle &rcCharacter, DrawState drawState, int value) const;\n\tbool IsDynamic() const {\n\t\treturn !(sacNormal == sacHover);\n\t}\n\tbool OverridesTextFore() const {\n\t\treturn sacNormal.style == INDIC_TEXTFORE || sacHover.style == INDIC_TEXTFORE;\n\t}\n\tint Flags() const {\n\t\treturn attributes;\n\t}\n\tvoid SetFlags(int attributes_);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/KeyMap.cpp",
    "content": "// Scintilla source code edit control\n/** @file KeyMap.cxx\n ** Defines a mapping between keystrokes and commands.\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n\n#include <stdexcept>\n#include <vector>\n#include <map>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n\n#include \"KeyMap.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nKeyMap::KeyMap() {\n\tfor (int i = 0; MapDefault[i].key; i++) {\n\t\tAssignCmdKey(MapDefault[i].key,\n\t\t\tMapDefault[i].modifiers,\n\t\t\tMapDefault[i].msg);\n\t}\n}\n\nKeyMap::~KeyMap() {\n\tClear();\n}\n\nvoid KeyMap::Clear() {\n\tkmap.clear();\n}\n\nvoid KeyMap::AssignCmdKey(int key, int modifiers, unsigned int msg) {\n\tkmap[KeyModifiers(key, modifiers)] = msg;\n}\n\nunsigned int KeyMap::Find(int key, int modifiers) const {\n\tstd::map<KeyModifiers, unsigned int>::const_iterator it = kmap.find(KeyModifiers(key, modifiers));\n\treturn (it == kmap.end()) ? 0 : it->second;\n}\n\n#if PLAT_GTK_MACOSX\n#define OS_X_KEYS 1\n#else\n#define OS_X_KEYS 0\n#endif\n\n// Define a modifier that is exactly Ctrl key on all platforms\n// Most uses of Ctrl map to Cmd on OS X but some can't so use SCI_[S]CTRL_META\n#if OS_X_KEYS\n#define SCI_CTRL_META SCI_META\n#define SCI_SCTRL_META (SCI_META | SCI_SHIFT)\n#else\n#define SCI_CTRL_META SCI_CTRL\n#define SCI_SCTRL_META (SCI_CTRL | SCI_SHIFT)\n#endif\n\nconst KeyToCommand KeyMap::MapDefault[] = {\n\n#if OS_X_KEYS\n    {SCK_DOWN,\t\tSCI_CTRL,\tSCI_DOCUMENTEND},\n    {SCK_DOWN,\t\tSCI_CSHIFT,\tSCI_DOCUMENTENDEXTEND},\n    {SCK_UP,\t\tSCI_CTRL,\tSCI_DOCUMENTSTART},\n    {SCK_UP,\t\tSCI_CSHIFT,\tSCI_DOCUMENTSTARTEXTEND},\n    {SCK_LEFT,\t\tSCI_CTRL,\tSCI_VCHOME},\n    {SCK_LEFT,\t\tSCI_CSHIFT,\tSCI_VCHOMEEXTEND},\n    {SCK_RIGHT,\t\tSCI_CTRL,\tSCI_LINEEND},\n    {SCK_RIGHT,\t\tSCI_CSHIFT,\tSCI_LINEENDEXTEND},\n#endif\n\n    {SCK_DOWN,\t\tSCI_NORM,\tSCI_LINEDOWN},\n    {SCK_DOWN,\t\tSCI_SHIFT,\tSCI_LINEDOWNEXTEND},\n    {SCK_DOWN,\t\tSCI_CTRL_META,\tSCI_LINESCROLLDOWN},\n    {SCK_DOWN,\t\tSCI_ASHIFT,\tSCI_LINEDOWNRECTEXTEND},\n    {SCK_UP,\t\tSCI_NORM,\tSCI_LINEUP},\n    {SCK_UP,\t\t\tSCI_SHIFT,\tSCI_LINEUPEXTEND},\n    {SCK_UP,\t\t\tSCI_CTRL_META,\tSCI_LINESCROLLUP},\n    {SCK_UP,\t\tSCI_ASHIFT,\tSCI_LINEUPRECTEXTEND},\n    {'[',\t\t\tSCI_CTRL,\t\tSCI_PARAUP},\n    {'[',\t\t\tSCI_CSHIFT,\tSCI_PARAUPEXTEND},\n    {']',\t\t\tSCI_CTRL,\t\tSCI_PARADOWN},\n    {']',\t\t\tSCI_CSHIFT,\tSCI_PARADOWNEXTEND},\n    {SCK_LEFT,\t\tSCI_NORM,\tSCI_CHARLEFT},\n    {SCK_LEFT,\t\tSCI_SHIFT,\tSCI_CHARLEFTEXTEND},\n    {SCK_LEFT,\t\tSCI_CTRL_META,\tSCI_WORDLEFT},\n    {SCK_LEFT,\t\tSCI_SCTRL_META,\tSCI_WORDLEFTEXTEND},\n    {SCK_LEFT,\t\tSCI_ASHIFT,\tSCI_CHARLEFTRECTEXTEND},\n    {SCK_RIGHT,\t\tSCI_NORM,\tSCI_CHARRIGHT},\n    {SCK_RIGHT,\t\tSCI_SHIFT,\tSCI_CHARRIGHTEXTEND},\n    {SCK_RIGHT,\t\tSCI_CTRL_META,\tSCI_WORDRIGHT},\n    {SCK_RIGHT,\t\tSCI_SCTRL_META,\tSCI_WORDRIGHTEXTEND},\n    {SCK_RIGHT,\t\tSCI_ASHIFT,\tSCI_CHARRIGHTRECTEXTEND},\n    {'/',\t\tSCI_CTRL,\t\tSCI_WORDPARTLEFT},\n    {'/',\t\tSCI_CSHIFT,\tSCI_WORDPARTLEFTEXTEND},\n    {'\\\\',\t\tSCI_CTRL,\t\tSCI_WORDPARTRIGHT},\n    {'\\\\',\t\tSCI_CSHIFT,\tSCI_WORDPARTRIGHTEXTEND},\n    {SCK_HOME,\t\tSCI_NORM,\tSCI_VCHOME},\n    {SCK_HOME, \t\tSCI_SHIFT, \tSCI_VCHOMEEXTEND},\n    {SCK_HOME, \t\tSCI_CTRL, \tSCI_DOCUMENTSTART},\n    {SCK_HOME, \t\tSCI_CSHIFT, \tSCI_DOCUMENTSTARTEXTEND},\n    {SCK_HOME, \t\tSCI_ALT, \tSCI_HOMEDISPLAY},\n    {SCK_HOME,\t\tSCI_ASHIFT,\tSCI_VCHOMERECTEXTEND},\n    {SCK_END,\t \tSCI_NORM,\tSCI_LINEEND},\n    {SCK_END,\t \tSCI_SHIFT, \tSCI_LINEENDEXTEND},\n    {SCK_END, \t\tSCI_CTRL, \tSCI_DOCUMENTEND},\n    {SCK_END, \t\tSCI_CSHIFT, \tSCI_DOCUMENTENDEXTEND},\n    {SCK_END, \t\tSCI_ALT, \tSCI_LINEENDDISPLAY},\n    {SCK_END,\t\tSCI_ASHIFT,\tSCI_LINEENDRECTEXTEND},\n    {SCK_PRIOR,\t\tSCI_NORM,\tSCI_PAGEUP},\n    {SCK_PRIOR,\t\tSCI_SHIFT, \tSCI_PAGEUPEXTEND},\n    {SCK_PRIOR,\t\tSCI_ASHIFT,\tSCI_PAGEUPRECTEXTEND},\n    {SCK_NEXT, \t\tSCI_NORM, \tSCI_PAGEDOWN},\n    {SCK_NEXT, \t\tSCI_SHIFT, \tSCI_PAGEDOWNEXTEND},\n    {SCK_NEXT,\t\tSCI_ASHIFT,\tSCI_PAGEDOWNRECTEXTEND},\n    {SCK_DELETE, \tSCI_NORM,\tSCI_CLEAR},\n    {SCK_DELETE, \tSCI_SHIFT,\tSCI_CUT},\n    {SCK_DELETE, \tSCI_CTRL,\tSCI_DELWORDRIGHT},\n    {SCK_DELETE,\tSCI_CSHIFT,\tSCI_DELLINERIGHT},\n    {SCK_INSERT, \t\tSCI_NORM,\tSCI_EDITTOGGLEOVERTYPE},\n    {SCK_INSERT, \t\tSCI_SHIFT,\tSCI_PASTE},\n    {SCK_INSERT, \t\tSCI_CTRL,\tSCI_COPY},\n    {SCK_ESCAPE,  \tSCI_NORM,\tSCI_CANCEL},\n    {SCK_BACK,\t\tSCI_NORM, \tSCI_DELETEBACK},\n    {SCK_BACK,\t\tSCI_SHIFT, \tSCI_DELETEBACK},\n    {SCK_BACK,\t\tSCI_CTRL, \tSCI_DELWORDLEFT},\n    {SCK_BACK, \t\tSCI_ALT,\tSCI_UNDO},\n    {SCK_BACK,\t\tSCI_CSHIFT,\tSCI_DELLINELEFT},\n    {'Z', \t\t\tSCI_CTRL,\tSCI_UNDO},\n#if OS_X_KEYS\n    {'Z', \t\t\tSCI_CSHIFT,\tSCI_REDO},\n#else\n    {'Y', \t\t\tSCI_CTRL,\tSCI_REDO},\n#endif\n    {'X', \t\t\tSCI_CTRL,\tSCI_CUT},\n    {'C', \t\t\tSCI_CTRL,\tSCI_COPY},\n    {'V', \t\t\tSCI_CTRL,\tSCI_PASTE},\n    {'A', \t\t\tSCI_CTRL,\tSCI_SELECTALL},\n    {SCK_TAB,\t\tSCI_NORM,\tSCI_TAB},\n    {SCK_TAB,\t\tSCI_SHIFT,\tSCI_BACKTAB},\n    {SCK_RETURN, \tSCI_NORM,\tSCI_NEWLINE},\n    {SCK_RETURN, \tSCI_SHIFT,\tSCI_NEWLINE},\n    {SCK_ADD, \t\tSCI_CTRL,\tSCI_ZOOMIN},\n    {SCK_SUBTRACT,\tSCI_CTRL,\tSCI_ZOOMOUT},\n    {SCK_DIVIDE,\tSCI_CTRL,\tSCI_SETZOOM},\n    {'L', \t\t\tSCI_CTRL,\tSCI_LINECUT},\n    {'L', \t\t\tSCI_CSHIFT,\tSCI_LINEDELETE},\n    {'T', \t\t\tSCI_CSHIFT,\tSCI_LINECOPY},\n    {'T', \t\t\tSCI_CTRL,\tSCI_LINETRANSPOSE},\n    {'D', \t\t\tSCI_CTRL,\tSCI_SELECTIONDUPLICATE},\n    {'U', \t\t\tSCI_CTRL,\tSCI_LOWERCASE},\n    {'U', \t\t\tSCI_CSHIFT,\tSCI_UPPERCASE},\n    {0,0,0},\n};\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/KeyMap.h",
    "content": "// Scintilla source code edit control\n/** @file KeyMap.h\n ** Defines a mapping between keystrokes and commands.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef KEYMAP_H\n#define KEYMAP_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n#define SCI_NORM 0\n#define SCI_SHIFT SCMOD_SHIFT\n#define SCI_CTRL SCMOD_CTRL\n#define SCI_ALT SCMOD_ALT\n#define SCI_META SCMOD_META\n#define SCI_SUPER SCMOD_SUPER\n#define SCI_CSHIFT (SCI_CTRL | SCI_SHIFT)\n#define SCI_ASHIFT (SCI_ALT | SCI_SHIFT)\n\n/**\n */\nclass KeyModifiers {\npublic:\n\tint key;\n\tint modifiers;\n\tKeyModifiers(int key_, int modifiers_) : key(key_), modifiers(modifiers_) {\n\t}\n\tbool operator<(const KeyModifiers &other) const {\n\t\tif (key == other.key)\n\t\t\treturn modifiers < other.modifiers;\n\t\telse\n\t\t\treturn key < other.key;\n\t}\n};\n\n/**\n */\nclass KeyToCommand {\npublic:\n\tint key;\n\tint modifiers;\n\tunsigned int msg;\n};\n\n/**\n */\nclass KeyMap {\n\tstd::map<KeyModifiers, unsigned int> kmap;\n\tstatic const KeyToCommand MapDefault[];\n\npublic:\n\tKeyMap();\n\t~KeyMap();\n\tvoid Clear();\n\tvoid AssignCmdKey(int key, int modifiers, unsigned int msg);\n\tunsigned int Find(int key, int modifiers) const;\t// 0 returned on failure\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/License.txt",
    "content": "License for Scintilla and SciTE\n\nCopyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n\nAll Rights Reserved \n\nPermission to use, copy, modify, and distribute this software and its \ndocumentation for any purpose and without fee is hereby granted, \nprovided that the above copyright notice appear in all copies and that \nboth that copyright notice and this permission notice appear in \nsupporting documentation. \n\nNEIL HODGSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS \nSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY \nAND FITNESS, IN NO EVENT SHALL NEIL HODGSON BE LIABLE FOR ANY \nSPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES \nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, \nWHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER \nTORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE \nOR PERFORMANCE OF THIS SOFTWARE. "
  },
  {
    "path": "old/3rdpart/qscintilla/src/LineMarker.cpp",
    "content": "// Scintilla source code edit control\n/** @file LineMarker.cxx\n ** Defines the look of a line marker in the margin.\n **/\n// Copyright 1998-2011 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <string.h>\n#include <math.h>\n\n#include <stdexcept>\n#include <vector>\n#include <map>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n\n#include \"StringCopy.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nvoid LineMarker::SetXPM(const char *textForm) {\n\tdelete pxpm;\n\tpxpm = new XPM(textForm);\n\tmarkType = SC_MARK_PIXMAP;\n}\n\nvoid LineMarker::SetXPM(const char *const *linesForm) {\n\tdelete pxpm;\n\tpxpm = new XPM(linesForm);\n\tmarkType = SC_MARK_PIXMAP;\n}\n\nvoid LineMarker::SetRGBAImage(Point sizeRGBAImage, float scale, const unsigned char *pixelsRGBAImage) {\n\tdelete image;\n\timage = new RGBAImage(static_cast<int>(sizeRGBAImage.x), static_cast<int>(sizeRGBAImage.y), scale, pixelsRGBAImage);\n\tmarkType = SC_MARK_RGBAIMAGE;\n}\n\nstatic void DrawBox(Surface *surface, int centreX, int centreY, int armSize, ColourDesired fore, ColourDesired back) {\n\tPRectangle rc = PRectangle::FromInts(\n\t\tcentreX - armSize,\n\t\tcentreY - armSize,\n\t\tcentreX + armSize + 1,\n\t\tcentreY + armSize + 1);\n\tsurface->RectangleDraw(rc, back, fore);\n}\n\nstatic void DrawCircle(Surface *surface, int centreX, int centreY, int armSize, ColourDesired fore, ColourDesired back) {\n\tPRectangle rcCircle = PRectangle::FromInts(\n\t\tcentreX - armSize,\n\t\tcentreY - armSize,\n\t\tcentreX + armSize + 1,\n\t\tcentreY + armSize + 1);\n\tsurface->Ellipse(rcCircle, back, fore);\n}\n\nstatic void DrawPlus(Surface *surface, int centreX, int centreY, int armSize, ColourDesired fore) {\n\tPRectangle rcV = PRectangle::FromInts(centreX, centreY - armSize + 2, centreX + 1, centreY + armSize - 2 + 1);\n\tsurface->FillRectangle(rcV, fore);\n\tPRectangle rcH = PRectangle::FromInts(centreX - armSize + 2, centreY, centreX + armSize - 2 + 1, centreY + 1);\n\tsurface->FillRectangle(rcH, fore);\n}\n\nstatic void DrawMinus(Surface *surface, int centreX, int centreY, int armSize, ColourDesired fore) {\n\tPRectangle rcH = PRectangle::FromInts(centreX - armSize + 2, centreY, centreX + armSize - 2 + 1, centreY + 1);\n\tsurface->FillRectangle(rcH, fore);\n}\n\nvoid LineMarker::Draw(Surface *surface, PRectangle &rcWhole, Font &fontForCharacter, typeOfFold tFold, int marginStyle) const {\n\tif (customDraw != NULL) {\n\t\tcustomDraw(surface, rcWhole, fontForCharacter, tFold, marginStyle, this);\n\t\treturn;\n\t}\n\n\tColourDesired colourHead = back;\n\tColourDesired colourBody = back;\n\tColourDesired colourTail = back;\n\n\tswitch (tFold) {\n\tcase LineMarker::head :\n\tcase LineMarker::headWithTail :\n\t\tcolourHead = backSelected;\n\t\tcolourTail = backSelected;\n\t\tbreak;\n\tcase LineMarker::body :\n\t\tcolourHead = backSelected;\n\t\tcolourBody = backSelected;\n\t\tbreak;\n\tcase LineMarker::tail :\n\t\tcolourBody = backSelected;\n\t\tcolourTail = backSelected;\n\t\tbreak;\n\tdefault :\n\t\t// LineMarker::undefined\n\t\tbreak;\n\t}\n\n\tif ((markType == SC_MARK_PIXMAP) && (pxpm)) {\n\t\tpxpm->Draw(surface, rcWhole);\n\t\treturn;\n\t}\n\tif ((markType == SC_MARK_RGBAIMAGE) && (image)) {\n\t\t// Make rectangle just large enough to fit image centred on centre of rcWhole\n\t\tPRectangle rcImage;\n\t\trcImage.top = ((rcWhole.top + rcWhole.bottom) - image->GetScaledHeight()) / 2;\n\t\trcImage.bottom = rcImage.top + image->GetScaledHeight();\n\t\trcImage.left = ((rcWhole.left + rcWhole.right) - image->GetScaledWidth()) / 2;\n\t\trcImage.right = rcImage.left + image->GetScaledWidth();\n\t\tsurface->DrawRGBAImage(rcImage, image->GetWidth(), image->GetHeight(), image->Pixels());\n\t\treturn;\n\t}\n\t// Restrict most shapes a bit\n\tPRectangle rc = rcWhole;\n\trc.top++;\n\trc.bottom--;\n\tint minDim = Platform::Minimum(static_cast<int>(rc.Width()), static_cast<int>(rc.Height()));\n\tminDim--;\t// Ensure does not go beyond edge\n\tint centreX = static_cast<int>(floor((rc.right + rc.left) / 2.0));\n\tint centreY = static_cast<int>(floor((rc.bottom + rc.top) / 2.0));\n\tint dimOn2 = minDim / 2;\n\tint dimOn4 = minDim / 4;\n\tint blobSize = dimOn2-1;\n\tint armSize = dimOn2-2;\n\tif (marginStyle == SC_MARGIN_NUMBER || marginStyle == SC_MARGIN_TEXT || marginStyle == SC_MARGIN_RTEXT) {\n\t\t// On textual margins move marker to the left to try to avoid overlapping the text\n\t\tcentreX = static_cast<int>(rc.left) + dimOn2 + 1;\n\t}\n\tif (markType == SC_MARK_ROUNDRECT) {\n\t\tPRectangle rcRounded = rc;\n\t\trcRounded.left = rc.left + 1;\n\t\trcRounded.right = rc.right - 1;\n\t\tsurface->RoundedRectangle(rcRounded, fore, back);\n\t} else if (markType == SC_MARK_CIRCLE) {\n\t\tPRectangle rcCircle = PRectangle::FromInts(\n\t\t\tcentreX - dimOn2,\n\t\t\tcentreY - dimOn2,\n\t\t\tcentreX + dimOn2,\n\t\t\tcentreY + dimOn2);\n\t\tsurface->Ellipse(rcCircle, fore, back);\n\t} else if (markType == SC_MARK_ARROW) {\n\t\tPoint pts[] = {\n    \t\tPoint::FromInts(centreX - dimOn4, centreY - dimOn2),\n    \t\tPoint::FromInts(centreX - dimOn4, centreY + dimOn2),\n    \t\tPoint::FromInts(centreX + dimOn2 - dimOn4, centreY),\n\t\t};\n\t\tsurface->Polygon(pts, ELEMENTS(pts), fore, back);\n\n\t} else if (markType == SC_MARK_ARROWDOWN) {\n\t\tPoint pts[] = {\n    \t\tPoint::FromInts(centreX - dimOn2, centreY - dimOn4),\n    \t\tPoint::FromInts(centreX + dimOn2, centreY - dimOn4),\n    \t\tPoint::FromInts(centreX, centreY + dimOn2 - dimOn4),\n\t\t};\n\t\tsurface->Polygon(pts, ELEMENTS(pts), fore, back);\n\n\t} else if (markType == SC_MARK_PLUS) {\n\t\tPoint pts[] = {\n    \t\tPoint::FromInts(centreX - armSize, centreY - 1),\n    \t\tPoint::FromInts(centreX - 1, centreY - 1),\n    \t\tPoint::FromInts(centreX - 1, centreY - armSize),\n    \t\tPoint::FromInts(centreX + 1, centreY - armSize),\n    \t\tPoint::FromInts(centreX + 1, centreY - 1),\n    \t\tPoint::FromInts(centreX + armSize, centreY -1),\n    \t\tPoint::FromInts(centreX + armSize, centreY +1),\n    \t\tPoint::FromInts(centreX + 1, centreY + 1),\n    \t\tPoint::FromInts(centreX + 1, centreY + armSize),\n    \t\tPoint::FromInts(centreX - 1, centreY + armSize),\n    \t\tPoint::FromInts(centreX - 1, centreY + 1),\n    \t\tPoint::FromInts(centreX - armSize, centreY + 1),\n\t\t};\n\t\tsurface->Polygon(pts, ELEMENTS(pts), fore, back);\n\n\t} else if (markType == SC_MARK_MINUS) {\n\t\tPoint pts[] = {\n    \t\tPoint::FromInts(centreX - armSize, centreY - 1),\n    \t\tPoint::FromInts(centreX + armSize, centreY -1),\n    \t\tPoint::FromInts(centreX + armSize, centreY +1),\n    \t\tPoint::FromInts(centreX - armSize, centreY + 1),\n\t\t};\n\t\tsurface->Polygon(pts, ELEMENTS(pts), fore, back);\n\n\t} else if (markType == SC_MARK_SMALLRECT) {\n\t\tPRectangle rcSmall;\n\t\trcSmall.left = rc.left + 1;\n\t\trcSmall.top = rc.top + 2;\n\t\trcSmall.right = rc.right - 1;\n\t\trcSmall.bottom = rc.bottom - 2;\n\t\tsurface->RectangleDraw(rcSmall, fore, back);\n\n\t} else if (markType == SC_MARK_EMPTY || markType == SC_MARK_BACKGROUND ||\n\t\tmarkType == SC_MARK_UNDERLINE || markType == SC_MARK_AVAILABLE) {\n\t\t// An invisible marker so don't draw anything\n\n\t} else if (markType == SC_MARK_VLINE) {\n\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t} else if (markType == SC_MARK_LCORNER) {\n\t\tsurface->PenColour(colourTail);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, centreY);\n\t\tsurface->LineTo(static_cast<int>(rc.right) - 1, centreY);\n\n\t} else if (markType == SC_MARK_TCORNER) {\n\t\tsurface->PenColour(colourTail);\n\t\tsurface->MoveTo(centreX, centreY);\n\t\tsurface->LineTo(static_cast<int>(rc.right) - 1, centreY);\n\n\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, centreY + 1);\n\n\t\tsurface->PenColour(colourHead);\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t} else if (markType == SC_MARK_LCORNERCURVE) {\n\t\tsurface->PenColour(colourTail);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, centreY-3);\n\t\tsurface->LineTo(centreX+3, centreY);\n\t\tsurface->LineTo(static_cast<int>(rc.right) - 1, centreY);\n\n\t} else if (markType == SC_MARK_TCORNERCURVE) {\n\t\tsurface->PenColour(colourTail);\n\t\tsurface->MoveTo(centreX, centreY-3);\n\t\tsurface->LineTo(centreX+3, centreY);\n\t\tsurface->LineTo(static_cast<int>(rc.right) - 1, centreY);\n\n\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, centreY-2);\n\n\t\tsurface->PenColour(colourHead);\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t} else if (markType == SC_MARK_BOXPLUS) {\n\t\tDrawBox(surface, centreX, centreY, blobSize, fore, colourHead);\n\t\tDrawPlus(surface, centreX, centreY, blobSize, colourTail);\n\n\t} else if (markType == SC_MARK_BOXPLUSCONNECTED) {\n\t\tif (tFold == LineMarker::headWithTail)\n\t\t\tsurface->PenColour(colourTail);\n\t\telse\n\t\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, centreY + blobSize);\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, centreY - blobSize);\n\n\t\tDrawBox(surface, centreX, centreY, blobSize, fore, colourHead);\n\t\tDrawPlus(surface, centreX, centreY, blobSize, colourTail);\n\n\t\tif (tFold == LineMarker::body) {\n\t\t\tsurface->PenColour(colourTail);\n\t\t\tsurface->MoveTo(centreX + 1, centreY + blobSize);\n\t\t\tsurface->LineTo(centreX + blobSize + 1, centreY + blobSize);\n\n\t\t\tsurface->MoveTo(centreX + blobSize, centreY + blobSize);\n\t\t\tsurface->LineTo(centreX + blobSize, centreY - blobSize);\n\n\t\t\tsurface->MoveTo(centreX + 1, centreY - blobSize);\n\t\t\tsurface->LineTo(centreX + blobSize + 1, centreY - blobSize);\n\t\t}\n\t} else if (markType == SC_MARK_BOXMINUS) {\n\t\tDrawBox(surface, centreX, centreY, blobSize, fore, colourHead);\n\t\tDrawMinus(surface, centreX, centreY, blobSize, colourTail);\n\n\t\tsurface->PenColour(colourHead);\n\t\tsurface->MoveTo(centreX, centreY + blobSize);\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t} else if (markType == SC_MARK_BOXMINUSCONNECTED) {\n\t\tDrawBox(surface, centreX, centreY, blobSize, fore, colourHead);\n\t\tDrawMinus(surface, centreX, centreY, blobSize, colourTail);\n\n\t\tsurface->PenColour(colourHead);\n\t\tsurface->MoveTo(centreX, centreY + blobSize);\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, centreY - blobSize);\n\n\t\tif (tFold == LineMarker::body) {\n\t\t\tsurface->PenColour(colourTail);\n\t\t\tsurface->MoveTo(centreX + 1, centreY + blobSize);\n\t\t\tsurface->LineTo(centreX + blobSize + 1, centreY + blobSize);\n\n\t\t\tsurface->MoveTo(centreX + blobSize, centreY + blobSize);\n\t\t\tsurface->LineTo(centreX + blobSize, centreY - blobSize);\n\n\t\t\tsurface->MoveTo(centreX + 1, centreY - blobSize);\n\t\t\tsurface->LineTo(centreX + blobSize + 1, centreY - blobSize);\n\t\t}\n\t} else if (markType == SC_MARK_CIRCLEPLUS) {\n\t\tDrawCircle(surface, centreX, centreY, blobSize, fore, colourHead);\n\t\tDrawPlus(surface, centreX, centreY, blobSize, colourTail);\n\n\t} else if (markType == SC_MARK_CIRCLEPLUSCONNECTED) {\n\t\tif (tFold == LineMarker::headWithTail)\n\t\t\tsurface->PenColour(colourTail);\n\t\telse\n\t\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, centreY + blobSize);\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, centreY - blobSize);\n\n\t\tDrawCircle(surface, centreX, centreY, blobSize, fore, colourHead);\n\t\tDrawPlus(surface, centreX, centreY, blobSize, colourTail);\n\n\t} else if (markType == SC_MARK_CIRCLEMINUS) {\n\t\tsurface->PenColour(colourHead);\n\t\tsurface->MoveTo(centreX, centreY + blobSize);\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t\tDrawCircle(surface, centreX, centreY, blobSize, fore, colourHead);\n\t\tDrawMinus(surface, centreX, centreY, blobSize, colourTail);\n\n\t} else if (markType == SC_MARK_CIRCLEMINUSCONNECTED) {\n\t\tsurface->PenColour(colourHead);\n\t\tsurface->MoveTo(centreX, centreY + blobSize);\n\t\tsurface->LineTo(centreX, static_cast<int>(rcWhole.bottom));\n\n\t\tsurface->PenColour(colourBody);\n\t\tsurface->MoveTo(centreX, static_cast<int>(rcWhole.top));\n\t\tsurface->LineTo(centreX, centreY - blobSize);\n\n\t\tDrawCircle(surface, centreX, centreY, blobSize, fore, colourHead);\n\t\tDrawMinus(surface, centreX, centreY, blobSize, colourTail);\n\n\t} else if (markType >= SC_MARK_CHARACTER) {\n\t\tchar character[1];\n\t\tcharacter[0] = static_cast<char>(markType - SC_MARK_CHARACTER);\n\t\tXYPOSITION width = surface->WidthText(fontForCharacter, character, 1);\n\t\trc.left += (rc.Width() - width) / 2;\n\t\trc.right = rc.left + width;\n\t\tsurface->DrawTextClipped(rc, fontForCharacter, rc.bottom - 2,\n\t\t\tcharacter, 1, fore, back);\n\n\t} else if (markType == SC_MARK_DOTDOTDOT) {\n\t\tXYPOSITION right = static_cast<XYPOSITION>(centreX - 6);\n\t\tfor (int b=0; b<3; b++) {\n\t\t\tPRectangle rcBlob(right, rc.bottom - 4, right + 2, rc.bottom-2);\n\t\t\tsurface->FillRectangle(rcBlob, fore);\n\t\t\tright += 5.0f;\n\t\t}\n\t} else if (markType == SC_MARK_ARROWS) {\n\t\tsurface->PenColour(fore);\n\t\tint right = centreX - 2;\n\t\tconst int armLength = dimOn2 - 1;\n\t\tfor (int b = 0; b<3; b++) {\n\t\t\tsurface->MoveTo(right, centreY);\n\t\t\tsurface->LineTo(right - armLength, centreY - armLength);\n\t\t\tsurface->MoveTo(right, centreY);\n\t\t\tsurface->LineTo(right - armLength, centreY + armLength);\n\t\t\tright += 4;\n\t\t}\n\t} else if (markType == SC_MARK_SHORTARROW) {\n\t\tPoint pts[] = {\n\t\t\tPoint::FromInts(centreX, centreY + dimOn2),\n\t\t\tPoint::FromInts(centreX + dimOn2, centreY),\n\t\t\tPoint::FromInts(centreX, centreY - dimOn2),\n\t\t\tPoint::FromInts(centreX, centreY - dimOn4),\n\t\t\tPoint::FromInts(centreX - dimOn4, centreY - dimOn4),\n\t\t\tPoint::FromInts(centreX - dimOn4, centreY + dimOn4),\n\t\t\tPoint::FromInts(centreX, centreY + dimOn4),\n\t\t\tPoint::FromInts(centreX, centreY + dimOn2),\n\t\t};\n\t\tsurface->Polygon(pts, ELEMENTS(pts), fore, back);\n\t} else if (markType == SC_MARK_LEFTRECT) {\n\t\tPRectangle rcLeft = rcWhole;\n\t\trcLeft.right = rcLeft.left + 4;\n\t\tsurface->FillRectangle(rcLeft, back);\n\t} else if (markType == SC_MARK_BOOKMARK) {\n\t\tint halfHeight = minDim / 3;\n\t\tPoint pts[] = {\n\t\t\tPoint::FromInts(static_cast<int>(rc.left), centreY-halfHeight),\n\t\t\tPoint::FromInts(static_cast<int>(rc.right) - 3, centreY - halfHeight),\n\t\t\tPoint::FromInts(static_cast<int>(rc.right) - 3 - halfHeight, centreY),\n\t\t\tPoint::FromInts(static_cast<int>(rc.right) - 3, centreY + halfHeight),\n\t\t\tPoint::FromInts(static_cast<int>(rc.left), centreY + halfHeight),\n\t\t};\n\t\tsurface->Polygon(pts, ELEMENTS(pts), fore, back);\n\t} else { // SC_MARK_FULLRECT\n\t\tsurface->FillRectangle(rcWhole, back);\n\t}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/LineMarker.h",
    "content": "// Scintilla source code edit control\n/** @file LineMarker.h\n ** Defines the look of a line marker in the margin .\n **/\n// Copyright 1998-2011 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef LINEMARKER_H\n#define LINEMARKER_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\ntypedef void (*DrawLineMarkerFn)(Surface *surface, PRectangle &rcWhole, Font &fontForCharacter, int tFold, int marginStyle, const void *lineMarker);\n\n/**\n */\nclass LineMarker {\npublic:\n\tenum typeOfFold { undefined, head, body, tail, headWithTail };\n\n\tint markType;\n\tColourDesired fore;\n\tColourDesired back;\n\tColourDesired backSelected;\n\tint alpha;\n\tXPM *pxpm;\n\tRGBAImage *image;\n\t/** Some platforms, notably PLAT_CURSES, do not support Scintilla's native\n\t * Draw function for drawing line markers. Allow those platforms to override\n\t * it instead of creating a new method(s) in the Surface class that existing\n\t * platforms must implement as empty. */\n\tDrawLineMarkerFn customDraw;\n\tLineMarker() {\n\t\tmarkType = SC_MARK_CIRCLE;\n\t\tfore = ColourDesired(0,0,0);\n\t\tback = ColourDesired(0xff,0xff,0xff);\n\t\tbackSelected = ColourDesired(0xff,0x00,0x00);\n\t\talpha = SC_ALPHA_NOALPHA;\n\t\tpxpm = NULL;\n\t\timage = NULL;\n\t\tcustomDraw = NULL;\n\t}\n\tLineMarker(const LineMarker &) {\n\t\t// Defined to avoid pxpm being blindly copied, not as a complete copy constructor\n\t\tmarkType = SC_MARK_CIRCLE;\n\t\tfore = ColourDesired(0,0,0);\n\t\tback = ColourDesired(0xff,0xff,0xff);\n\t\tbackSelected = ColourDesired(0xff,0x00,0x00);\n\t\talpha = SC_ALPHA_NOALPHA;\n\t\tpxpm = NULL;\n\t\timage = NULL;\n\t\tcustomDraw = NULL;\n\t}\n\t~LineMarker() {\n\t\tdelete pxpm;\n\t\tdelete image;\n\t}\n\tLineMarker &operator=(const LineMarker &other) {\n\t\t// Defined to avoid pxpm being blindly copied, not as a complete assignment operator\n\t\tif (this != &other) {\n\t\t\tmarkType = SC_MARK_CIRCLE;\n\t\t\tfore = ColourDesired(0,0,0);\n\t\t\tback = ColourDesired(0xff,0xff,0xff);\n\t\t\tbackSelected = ColourDesired(0xff,0x00,0x00);\n\t\t\talpha = SC_ALPHA_NOALPHA;\n\t\t\tdelete pxpm;\n\t\t\tpxpm = NULL;\n\t\t\tdelete image;\n\t\t\timage = NULL;\n\t\t\tcustomDraw = NULL;\n\t\t}\n\t\treturn *this;\n\t}\n\tvoid SetXPM(const char *textForm);\n\tvoid SetXPM(const char *const *linesForm);\n\tvoid SetRGBAImage(Point sizeRGBAImage, float scale, const unsigned char *pixelsRGBAImage);\n\tvoid Draw(Surface *surface, PRectangle &rc, Font &fontForCharacter, typeOfFold tFold, int marginStyle) const;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/MarginView.cpp",
    "content": "// Scintilla source code edit control\n/** @file MarginView.cxx\n ** Defines the appearance of the editor margin.\n **/\n// Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <math.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n#include <memory>\n\n#include \"Platform.h\"\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n\n#include \"StringCopy.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"ContractionState.h\"\n#include \"CellBuffer.h\"\n#include \"KeyMap.h\"\n#include \"Indicator.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n#include \"Style.h\"\n#include \"ViewStyle.h\"\n#include \"CharClassify.h\"\n#include \"Decoration.h\"\n#include \"CaseFolder.h\"\n#include \"Document.h\"\n#include \"UniConversion.h\"\n#include \"Selection.h\"\n#include \"PositionCache.h\"\n#include \"EditModel.h\"\n#include \"MarginView.h\"\n#include \"EditView.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nvoid DrawWrapMarker(Surface *surface, PRectangle rcPlace,\n\tbool isEndMarker, ColourDesired wrapColour) {\n\tsurface->PenColour(wrapColour);\n\n\tenum { xa = 1 }; // gap before start\n\tint w = static_cast<int>(rcPlace.right - rcPlace.left) - xa - 1;\n\n\tbool xStraight = isEndMarker;  // x-mirrored symbol for start marker\n\n\tint x0 = static_cast<int>(xStraight ? rcPlace.left : rcPlace.right - 1);\n\tint y0 = static_cast<int>(rcPlace.top);\n\n\tint dy = static_cast<int>(rcPlace.bottom - rcPlace.top) / 5;\n\tint y = static_cast<int>(rcPlace.bottom - rcPlace.top) / 2 + dy;\n\n\tstruct Relative {\n\t\tSurface *surface;\n\t\tint xBase;\n\t\tint xDir;\n\t\tint yBase;\n\t\tint yDir;\n\t\tvoid MoveTo(int xRelative, int yRelative) {\n\t\t\tsurface->MoveTo(xBase + xDir * xRelative, yBase + yDir * yRelative);\n\t\t}\n\t\tvoid LineTo(int xRelative, int yRelative) {\n\t\t\tsurface->LineTo(xBase + xDir * xRelative, yBase + yDir * yRelative);\n\t\t}\n\t};\n\tRelative rel = { surface, x0, xStraight ? 1 : -1, y0, 1 };\n\n\t// arrow head\n\trel.MoveTo(xa, y);\n\trel.LineTo(xa + 2 * w / 3, y - dy);\n\trel.MoveTo(xa, y);\n\trel.LineTo(xa + 2 * w / 3, y + dy);\n\n\t// arrow body\n\trel.MoveTo(xa, y);\n\trel.LineTo(xa + w, y);\n\trel.LineTo(xa + w, y - 2 * dy);\n\trel.LineTo(xa - 1,   // on windows lineto is exclusive endpoint, perhaps GTK not...\n\t\ty - 2 * dy);\n}\n\nMarginView::MarginView() {\n\tpixmapSelMargin = 0;\n\tpixmapSelPattern = 0;\n\tpixmapSelPatternOffset1 = 0;\n\twrapMarkerPaddingRight = 3;\n\tcustomDrawWrapMarker = NULL;\n}\n\nvoid MarginView::DropGraphics(bool freeObjects) {\n\tif (freeObjects) {\n\t\tdelete pixmapSelMargin;\n\t\tpixmapSelMargin = 0;\n\t\tdelete pixmapSelPattern;\n\t\tpixmapSelPattern = 0;\n\t\tdelete pixmapSelPatternOffset1;\n\t\tpixmapSelPatternOffset1 = 0;\n\t} else {\n\t\tif (pixmapSelMargin)\n\t\t\tpixmapSelMargin->Release();\n\t\tif (pixmapSelPattern)\n\t\t\tpixmapSelPattern->Release();\n\t\tif (pixmapSelPatternOffset1)\n\t\t\tpixmapSelPatternOffset1->Release();\n\t}\n}\n\nvoid MarginView::AllocateGraphics(const ViewStyle &vsDraw) {\n\tif (!pixmapSelMargin)\n\t\tpixmapSelMargin = Surface::Allocate(vsDraw.technology);\n\tif (!pixmapSelPattern)\n\t\tpixmapSelPattern = Surface::Allocate(vsDraw.technology);\n\tif (!pixmapSelPatternOffset1)\n\t\tpixmapSelPatternOffset1 = Surface::Allocate(vsDraw.technology);\n}\n\nvoid MarginView::RefreshPixMaps(Surface *surfaceWindow, WindowID wid, const ViewStyle &vsDraw) {\n\tif (!pixmapSelPattern->Initialised()) {\n\t\tconst int patternSize = 8;\n\t\tpixmapSelPattern->InitPixMap(patternSize, patternSize, surfaceWindow, wid);\n\t\tpixmapSelPatternOffset1->InitPixMap(patternSize, patternSize, surfaceWindow, wid);\n\t\t// This complex procedure is to reproduce the checkerboard dithered pattern used by windows\n\t\t// for scroll bars and Visual Studio for its selection margin. The colour of this pattern is half\n\t\t// way between the chrome colour and the chrome highlight colour making a nice transition\n\t\t// between the window chrome and the content area. And it works in low colour depths.\n\t\tPRectangle rcPattern = PRectangle::FromInts(0, 0, patternSize, patternSize);\n\n\t\t// Initialize default colours based on the chrome colour scheme.  Typically the highlight is white.\n\t\tColourDesired colourFMFill = vsDraw.selbar;\n\t\tColourDesired colourFMStripes = vsDraw.selbarlight;\n\n\t\tif (!(vsDraw.selbarlight == ColourDesired(0xff, 0xff, 0xff))) {\n\t\t\t// User has chosen an unusual chrome colour scheme so just use the highlight edge colour.\n\t\t\t// (Typically, the highlight colour is white.)\n\t\t\tcolourFMFill = vsDraw.selbarlight;\n\t\t}\n\n\t\tif (vsDraw.foldmarginColour.isSet) {\n\t\t\t// override default fold margin colour\n\t\t\tcolourFMFill = vsDraw.foldmarginColour;\n\t\t}\n\t\tif (vsDraw.foldmarginHighlightColour.isSet) {\n\t\t\t// override default fold margin highlight colour\n\t\t\tcolourFMStripes = vsDraw.foldmarginHighlightColour;\n\t\t}\n\n\t\tpixmapSelPattern->FillRectangle(rcPattern, colourFMFill);\n\t\tpixmapSelPatternOffset1->FillRectangle(rcPattern, colourFMStripes);\n\t\tfor (int y = 0; y < patternSize; y++) {\n\t\t\tfor (int x = y % 2; x < patternSize; x += 2) {\n\t\t\t\tPRectangle rcPixel = PRectangle::FromInts(x, y, x + 1, y + 1);\n\t\t\t\tpixmapSelPattern->FillRectangle(rcPixel, colourFMStripes);\n\t\t\t\tpixmapSelPatternOffset1->FillRectangle(rcPixel, colourFMFill);\n\t\t\t}\n\t\t}\n\t}\n}\n\nstatic int SubstituteMarkerIfEmpty(int markerCheck, int markerDefault, const ViewStyle &vs) {\n\tif (vs.markers[markerCheck].markType == SC_MARK_EMPTY)\n\t\treturn markerDefault;\n\treturn markerCheck;\n}\n\nvoid MarginView::PaintMargin(Surface *surface, int topLine, PRectangle rc, PRectangle rcMargin,\n\tconst EditModel &model, const ViewStyle &vs) {\n\n\tPRectangle rcSelMargin = rcMargin;\n\trcSelMargin.right = rcMargin.left;\n\tif (rcSelMargin.bottom < rc.bottom)\n\t\trcSelMargin.bottom = rc.bottom;\n\n\tPoint ptOrigin = model.GetVisibleOriginInMain();\n\tFontAlias fontLineNumber = vs.styles[STYLE_LINENUMBER].font;\n\tfor (size_t margin = 0; margin < vs.ms.size(); margin++) {\n\t\tif (vs.ms[margin].width > 0) {\n\n\t\t\trcSelMargin.left = rcSelMargin.right;\n\t\t\trcSelMargin.right = rcSelMargin.left + vs.ms[margin].width;\n\n\t\t\tif (vs.ms[margin].style != SC_MARGIN_NUMBER) {\n\t\t\t\tif (vs.ms[margin].mask & SC_MASK_FOLDERS) {\n\t\t\t\t\t// Required because of special way brush is created for selection margin\n\t\t\t\t\t// Ensure patterns line up when scrolling with separate margin view\n\t\t\t\t\t// by choosing correctly aligned variant.\n\t\t\t\t\tbool invertPhase = static_cast<int>(ptOrigin.y) & 1;\n\t\t\t\t\tsurface->FillRectangle(rcSelMargin,\n\t\t\t\t\t\tinvertPhase ? *pixmapSelPattern : *pixmapSelPatternOffset1);\n\t\t\t\t} else {\n\t\t\t\t\tColourDesired colour;\n\t\t\t\t\tswitch (vs.ms[margin].style) {\n\t\t\t\t\tcase SC_MARGIN_BACK:\n\t\t\t\t\t\tcolour = vs.styles[STYLE_DEFAULT].back;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SC_MARGIN_FORE:\n\t\t\t\t\t\tcolour = vs.styles[STYLE_DEFAULT].fore;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase SC_MARGIN_COLOUR:\n\t\t\t\t\t\tcolour = vs.ms[margin].back;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcolour = vs.styles[STYLE_LINENUMBER].back;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tsurface->FillRectangle(rcSelMargin, colour);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsurface->FillRectangle(rcSelMargin, vs.styles[STYLE_LINENUMBER].back);\n\t\t\t}\n\n\t\t\tconst int lineStartPaint = static_cast<int>(rcMargin.top + ptOrigin.y) / vs.lineHeight;\n\t\t\tint visibleLine = model.TopLineOfMain() + lineStartPaint;\n\t\t\tint yposScreen = lineStartPaint * vs.lineHeight - static_cast<int>(ptOrigin.y);\n\t\t\t// Work out whether the top line is whitespace located after a\n\t\t\t// lessening of fold level which implies a 'fold tail' but which should not\n\t\t\t// be displayed until the last of a sequence of whitespace.\n\t\t\tbool needWhiteClosure = false;\n\t\t\tif (vs.ms[margin].mask & SC_MASK_FOLDERS) {\n\t\t\t\tint level = model.pdoc->GetLevel(model.cs.DocFromDisplay(visibleLine));\n\t\t\t\tif (level & SC_FOLDLEVELWHITEFLAG) {\n\t\t\t\t\tint lineBack = model.cs.DocFromDisplay(visibleLine);\n\t\t\t\t\tint levelPrev = level;\n\t\t\t\t\twhile ((lineBack > 0) && (levelPrev & SC_FOLDLEVELWHITEFLAG)) {\n\t\t\t\t\t\tlineBack--;\n\t\t\t\t\t\tlevelPrev = model.pdoc->GetLevel(lineBack);\n\t\t\t\t\t}\n\t\t\t\t\tif (!(levelPrev & SC_FOLDLEVELHEADERFLAG)) {\n\t\t\t\t\t\tif (LevelNumber(level) < LevelNumber(levelPrev))\n\t\t\t\t\t\t\tneedWhiteClosure = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (highlightDelimiter.isEnabled) {\n\t\t\t\t\tint lastLine = model.cs.DocFromDisplay(topLine + model.LinesOnScreen()) + 1;\n\t\t\t\t\tmodel.pdoc->GetHighlightDelimiters(highlightDelimiter, model.pdoc->LineFromPosition(model.sel.MainCaret()), lastLine);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Old code does not know about new markers needed to distinguish all cases\n\t\t\tconst int folderOpenMid = SubstituteMarkerIfEmpty(SC_MARKNUM_FOLDEROPENMID,\n\t\t\t\tSC_MARKNUM_FOLDEROPEN, vs);\n\t\t\tconst int folderEnd = SubstituteMarkerIfEmpty(SC_MARKNUM_FOLDEREND,\n\t\t\t\tSC_MARKNUM_FOLDER, vs);\n\n\t\t\twhile ((visibleLine < model.cs.LinesDisplayed()) && yposScreen < rc.bottom) {\n\n\t\t\t\tPLATFORM_ASSERT(visibleLine < model.cs.LinesDisplayed());\n\t\t\t\tconst int lineDoc = model.cs.DocFromDisplay(visibleLine);\n\t\t\t\tPLATFORM_ASSERT(model.cs.GetVisible(lineDoc));\n\t\t\t\tconst int firstVisibleLine = model.cs.DisplayFromDoc(lineDoc);\n\t\t\t\tconst int lastVisibleLine = model.cs.DisplayLastFromDoc(lineDoc);\n\t\t\t\tconst bool firstSubLine = visibleLine == firstVisibleLine;\n\t\t\t\tconst bool lastSubLine = visibleLine == lastVisibleLine;\n\n\t\t\t\tint marks = model.pdoc->GetMark(lineDoc);\n\t\t\t\tif (!firstSubLine)\n\t\t\t\t\tmarks = 0;\n\n\t\t\t\tbool headWithTail = false;\n\n\t\t\t\tif (vs.ms[margin].mask & SC_MASK_FOLDERS) {\n\t\t\t\t\t// Decide which fold indicator should be displayed\n\t\t\t\t\tconst int level = model.pdoc->GetLevel(lineDoc);\n\t\t\t\t\tconst int levelNext = model.pdoc->GetLevel(lineDoc + 1);\n\t\t\t\t\tconst int levelNum = LevelNumber(level);\n\t\t\t\t\tconst int levelNextNum = LevelNumber(levelNext);\n\t\t\t\t\tif (level & SC_FOLDLEVELHEADERFLAG) {\n\t\t\t\t\t\tif (firstSubLine) {\n\t\t\t\t\t\t\tif (levelNum < levelNextNum) {\n\t\t\t\t\t\t\t\tif (model.cs.GetExpanded(lineDoc)) {\n\t\t\t\t\t\t\t\t\tif (levelNum == SC_FOLDLEVELBASE)\n\t\t\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDEROPEN;\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\tmarks |= 1 << folderOpenMid;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif (levelNum == SC_FOLDLEVELBASE)\n\t\t\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDER;\n\t\t\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\t\t\tmarks |= 1 << folderEnd;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (levelNum > SC_FOLDLEVELBASE) {\n\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif (levelNum < levelNextNum) {\n\t\t\t\t\t\t\t\tif (model.cs.GetExpanded(lineDoc)) {\n\t\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t\t\t} else if (levelNum > SC_FOLDLEVELBASE) {\n\t\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (levelNum > SC_FOLDLEVELBASE) {\n\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tneedWhiteClosure = false;\n\t\t\t\t\t\tconst int firstFollowupLine = model.cs.DocFromDisplay(model.cs.DisplayFromDoc(lineDoc + 1));\n\t\t\t\t\t\tconst int firstFollowupLineLevel = model.pdoc->GetLevel(firstFollowupLine);\n\t\t\t\t\t\tconst int secondFollowupLineLevelNum = LevelNumber(model.pdoc->GetLevel(firstFollowupLine + 1));\n\t\t\t\t\t\tif (!model.cs.GetExpanded(lineDoc)) {\n\t\t\t\t\t\t\tif ((firstFollowupLineLevel & SC_FOLDLEVELWHITEFLAG) &&\n\t\t\t\t\t\t\t\t(levelNum > secondFollowupLineLevelNum))\n\t\t\t\t\t\t\t\tneedWhiteClosure = true;\n\n\t\t\t\t\t\t\tif (highlightDelimiter.IsFoldBlockHighlighted(firstFollowupLine))\n\t\t\t\t\t\t\t\theadWithTail = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (level & SC_FOLDLEVELWHITEFLAG) {\n\t\t\t\t\t\tif (needWhiteClosure) {\n\t\t\t\t\t\t\tif (levelNext & SC_FOLDLEVELWHITEFLAG) {\n\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t\t} else if (levelNextNum > SC_FOLDLEVELBASE) {\n\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERMIDTAIL;\n\t\t\t\t\t\t\t\tneedWhiteClosure = false;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERTAIL;\n\t\t\t\t\t\t\t\tneedWhiteClosure = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (levelNum > SC_FOLDLEVELBASE) {\n\t\t\t\t\t\t\tif (levelNextNum < levelNum) {\n\t\t\t\t\t\t\t\tif (levelNextNum > SC_FOLDLEVELBASE) {\n\t\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERMIDTAIL;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERTAIL;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (levelNum > SC_FOLDLEVELBASE) {\n\t\t\t\t\t\tif (levelNextNum < levelNum) {\n\t\t\t\t\t\t\tneedWhiteClosure = false;\n\t\t\t\t\t\t\tif (levelNext & SC_FOLDLEVELWHITEFLAG) {\n\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t\t\tneedWhiteClosure = true;\n\t\t\t\t\t\t\t} else if (lastSubLine) {\n\t\t\t\t\t\t\t\tif (levelNextNum > SC_FOLDLEVELBASE) {\n\t\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERMIDTAIL;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERTAIL;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmarks |= 1 << SC_MARKNUM_FOLDERSUB;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tmarks &= vs.ms[margin].mask;\n\n\t\t\t\tPRectangle rcMarker = rcSelMargin;\n\t\t\t\trcMarker.top = static_cast<XYPOSITION>(yposScreen);\n\t\t\t\trcMarker.bottom = static_cast<XYPOSITION>(yposScreen + vs.lineHeight);\n\t\t\t\tif (vs.ms[margin].style == SC_MARGIN_NUMBER) {\n\t\t\t\t\tif (firstSubLine) {\n\t\t\t\t\t\tchar number[100] = \"\";\n\t\t\t\t\t\tif (lineDoc >= 0)\n\t\t\t\t\t\t\tsprintf(number, \"%d\", lineDoc + 1);\n\t\t\t\t\t\tif (model.foldFlags & (SC_FOLDFLAG_LEVELNUMBERS | SC_FOLDFLAG_LINESTATE)) {\n\t\t\t\t\t\t\tif (model.foldFlags & SC_FOLDFLAG_LEVELNUMBERS) {\n\t\t\t\t\t\t\t\tint lev = model.pdoc->GetLevel(lineDoc);\n\t\t\t\t\t\t\t\tsprintf(number, \"%c%c %03X %03X\",\n\t\t\t\t\t\t\t\t\t(lev & SC_FOLDLEVELHEADERFLAG) ? 'H' : '_',\n\t\t\t\t\t\t\t\t\t(lev & SC_FOLDLEVELWHITEFLAG) ? 'W' : '_',\n\t\t\t\t\t\t\t\t\tLevelNumber(lev),\n\t\t\t\t\t\t\t\t\tlev >> 16\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tint state = model.pdoc->GetLineState(lineDoc);\n\t\t\t\t\t\t\t\tsprintf(number, \"%0X\", state);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tPRectangle rcNumber = rcMarker;\n\t\t\t\t\t\t// Right justify\n\t\t\t\t\t\tXYPOSITION width = surface->WidthText(fontLineNumber, number, static_cast<int>(strlen(number)));\n\t\t\t\t\t\tXYPOSITION xpos = rcNumber.right - width - vs.marginNumberPadding;\n\t\t\t\t\t\trcNumber.left = xpos;\n\t\t\t\t\t\tDrawTextNoClipPhase(surface, rcNumber, vs.styles[STYLE_LINENUMBER],\n\t\t\t\t\t\t\trcNumber.top + vs.maxAscent, number, static_cast<int>(strlen(number)), drawAll);\n\t\t\t\t\t} else if (vs.wrapVisualFlags & SC_WRAPVISUALFLAG_MARGIN) {\n\t\t\t\t\t\tPRectangle rcWrapMarker = rcMarker;\n\t\t\t\t\t\trcWrapMarker.right -= wrapMarkerPaddingRight;\n\t\t\t\t\t\trcWrapMarker.left = rcWrapMarker.right - vs.styles[STYLE_LINENUMBER].aveCharWidth;\n\t\t\t\t\t\tif (customDrawWrapMarker == NULL) {\n\t\t\t\t\t\t\tDrawWrapMarker(surface, rcWrapMarker, false, vs.styles[STYLE_LINENUMBER].fore);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcustomDrawWrapMarker(surface, rcWrapMarker, false, vs.styles[STYLE_LINENUMBER].fore);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (vs.ms[margin].style == SC_MARGIN_TEXT || vs.ms[margin].style == SC_MARGIN_RTEXT) {\n\t\t\t\t\tconst StyledText stMargin = model.pdoc->MarginStyledText(lineDoc);\n\t\t\t\t\tif (stMargin.text && ValidStyledText(vs, vs.marginStyleOffset, stMargin)) {\n\t\t\t\t\t\tif (firstSubLine) {\n\t\t\t\t\t\t\tsurface->FillRectangle(rcMarker,\n\t\t\t\t\t\t\t\tvs.styles[stMargin.StyleAt(0) + vs.marginStyleOffset].back);\n\t\t\t\t\t\t\tif (vs.ms[margin].style == SC_MARGIN_RTEXT) {\n\t\t\t\t\t\t\t\tint width = WidestLineWidth(surface, vs, vs.marginStyleOffset, stMargin);\n\t\t\t\t\t\t\t\trcMarker.left = rcMarker.right - width - 3;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tDrawStyledText(surface, vs, vs.marginStyleOffset, rcMarker,\n\t\t\t\t\t\t\t\tstMargin, 0, stMargin.length, drawAll);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// if we're displaying annotation lines, color the margin to match the associated document line\n\t\t\t\t\t\t\tconst int annotationLines = model.pdoc->AnnotationLines(lineDoc);\n\t\t\t\t\t\t\tif (annotationLines && (visibleLine > lastVisibleLine - annotationLines)) {\n\t\t\t\t\t\t\t\tsurface->FillRectangle(rcMarker, vs.styles[stMargin.StyleAt(0) + vs.marginStyleOffset].back);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (marks) {\n\t\t\t\t\tfor (int markBit = 0; (markBit < 32) && marks; markBit++) {\n\t\t\t\t\t\tif (marks & 1) {\n\t\t\t\t\t\t\tLineMarker::typeOfFold tFold = LineMarker::undefined;\n\t\t\t\t\t\t\tif ((vs.ms[margin].mask & SC_MASK_FOLDERS) && highlightDelimiter.IsFoldBlockHighlighted(lineDoc)) {\n\t\t\t\t\t\t\t\tif (highlightDelimiter.IsBodyOfFoldBlock(lineDoc)) {\n\t\t\t\t\t\t\t\t\ttFold = LineMarker::body;\n\t\t\t\t\t\t\t\t} else if (highlightDelimiter.IsHeadOfFoldBlock(lineDoc)) {\n\t\t\t\t\t\t\t\t\tif (firstSubLine) {\n\t\t\t\t\t\t\t\t\t\ttFold = headWithTail ? LineMarker::headWithTail : LineMarker::head;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (model.cs.GetExpanded(lineDoc) || headWithTail) {\n\t\t\t\t\t\t\t\t\t\t\ttFold = LineMarker::body;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\ttFold = LineMarker::undefined;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (highlightDelimiter.IsTailOfFoldBlock(lineDoc)) {\n\t\t\t\t\t\t\t\t\ttFold = LineMarker::tail;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvs.markers[markBit].Draw(surface, rcMarker, fontLineNumber, tFold, vs.ms[margin].style);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmarks >>= 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvisibleLine++;\n\t\t\t\typosScreen += vs.lineHeight;\n\t\t\t}\n\t\t}\n\t}\n\n\tPRectangle rcBlankMargin = rcMargin;\n\trcBlankMargin.left = rcSelMargin.right;\n\tsurface->FillRectangle(rcBlankMargin, vs.styles[STYLE_DEFAULT].back);\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/MarginView.h",
    "content": "// Scintilla source code edit control\n/** @file MarginView.h\n ** Defines the appearance of the editor margin.\n **/\n// Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef MARGINVIEW_H\n#define MARGINVIEW_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nvoid DrawWrapMarker(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourDesired wrapColour);\n\ntypedef void (*DrawWrapMarkerFn)(Surface *surface, PRectangle rcPlace, bool isEndMarker, ColourDesired wrapColour);\n\n/**\n* MarginView draws the margins.\n*/\nclass MarginView {\npublic:\n\tSurface *pixmapSelMargin;\n\tSurface *pixmapSelPattern;\n\tSurface *pixmapSelPatternOffset1;\n\t// Highlight current folding block\n\tHighlightDelimiter highlightDelimiter;\n\n\tint wrapMarkerPaddingRight; // right-most pixel padding of wrap markers\n\t/** Some platforms, notably PLAT_CURSES, do not support Scintilla's native\n\t * DrawWrapMarker function for drawing wrap markers. Allow those platforms to\n\t * override it instead of creating a new method in the Surface class that\n\t * existing platforms must implement as empty. */\n\tDrawWrapMarkerFn customDrawWrapMarker;\n\n\tMarginView();\n\n\tvoid DropGraphics(bool freeObjects);\n\tvoid AllocateGraphics(const ViewStyle &vsDraw);\n\tvoid RefreshPixMaps(Surface *surfaceWindow, WindowID wid, const ViewStyle &vsDraw);\n\tvoid PaintMargin(Surface *surface, int topLine, PRectangle rc, PRectangle rcMargin,\n\t\tconst EditModel &model, const ViewStyle &vs);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Partitioning.h",
    "content": "// Scintilla source code edit control\n/** @file Partitioning.h\n ** Data structure used to partition an interval. Used for holding line start/end positions.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef PARTITIONING_H\n#define PARTITIONING_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/// A split vector of integers with a method for adding a value to all elements\n/// in a range.\n/// Used by the Partitioning class.\n\nclass SplitVectorWithRangeAdd : public SplitVector<int> {\npublic:\n\texplicit SplitVectorWithRangeAdd(int growSize_) {\n\t\tSetGrowSize(growSize_);\n\t\tReAllocate(growSize_);\n\t}\n\t~SplitVectorWithRangeAdd() {\n\t}\n\tvoid RangeAddDelta(int start, int end, int delta) {\n\t\t// end is 1 past end, so end-start is number of elements to change\n\t\tint i = 0;\n\t\tint rangeLength = end - start;\n\t\tint range1Length = rangeLength;\n\t\tint part1Left = part1Length - start;\n\t\tif (range1Length > part1Left)\n\t\t\trange1Length = part1Left;\n\t\twhile (i < range1Length) {\n\t\t\tbody[start++] += delta;\n\t\t\ti++;\n\t\t}\n\t\tstart += gapLength;\n\t\twhile (i < rangeLength) {\n\t\t\tbody[start++] += delta;\n\t\t\ti++;\n\t\t}\n\t}\n};\n\n/// Divide an interval into multiple partitions.\n/// Useful for breaking a document down into sections such as lines.\n/// A 0 length interval has a single 0 length partition, numbered 0\n/// If interval not 0 length then each partition non-zero length\n/// When needed, positions after the interval are considered part of the last partition\n/// but the end of the last partition can be found with PositionFromPartition(last+1).\n\nclass Partitioning {\nprivate:\n\t// To avoid calculating all the partition positions whenever any text is inserted\n\t// there may be a step somewhere in the list.\n\tint stepPartition;\n\tint stepLength;\n\tSplitVectorWithRangeAdd *body;\n\n\t// Move step forward\n\tvoid ApplyStep(int partitionUpTo) {\n\t\tif (stepLength != 0) {\n\t\t\tbody->RangeAddDelta(stepPartition+1, partitionUpTo + 1, stepLength);\n\t\t}\n\t\tstepPartition = partitionUpTo;\n\t\tif (stepPartition >= body->Length()-1) {\n\t\t\tstepPartition = body->Length()-1;\n\t\t\tstepLength = 0;\n\t\t}\n\t}\n\n\t// Move step backward\n\tvoid BackStep(int partitionDownTo) {\n\t\tif (stepLength != 0) {\n\t\t\tbody->RangeAddDelta(partitionDownTo+1, stepPartition+1, -stepLength);\n\t\t}\n\t\tstepPartition = partitionDownTo;\n\t}\n\n\tvoid Allocate(int growSize) {\n\t\tbody = new SplitVectorWithRangeAdd(growSize);\n\t\tstepPartition = 0;\n\t\tstepLength = 0;\n\t\tbody->Insert(0, 0);\t// This value stays 0 for ever\n\t\tbody->Insert(1, 0);\t// This is the end of the first partition and will be the start of the second\n\t}\n\npublic:\n\texplicit Partitioning(int growSize) {\n\t\tAllocate(growSize);\n\t}\n\n\t~Partitioning() {\n\t\tdelete body;\n\t\tbody = 0;\n\t}\n\n\tint Partitions() const {\n\t\treturn body->Length()-1;\n\t}\n\n\tvoid InsertPartition(int partition, int pos) {\n\t\tif (stepPartition < partition) {\n\t\t\tApplyStep(partition);\n\t\t}\n\t\tbody->Insert(partition, pos);\n\t\tstepPartition++;\n\t}\n\n\tvoid SetPartitionStartPosition(int partition, int pos) {\n\t\tApplyStep(partition+1);\n\t\tif ((partition < 0) || (partition > body->Length())) {\n\t\t\treturn;\n\t\t}\n\t\tbody->SetValueAt(partition, pos);\n\t}\n\n\tvoid InsertText(int partitionInsert, int delta) {\n\t\t// Point all the partitions after the insertion point further along in the buffer\n\t\tif (stepLength != 0) {\n\t\t\tif (partitionInsert >= stepPartition) {\n\t\t\t\t// Fill in up to the new insertion point\n\t\t\t\tApplyStep(partitionInsert);\n\t\t\t\tstepLength += delta;\n\t\t\t} else if (partitionInsert >= (stepPartition - body->Length() / 10)) {\n\t\t\t\t// Close to step but before so move step back\n\t\t\t\tBackStep(partitionInsert);\n\t\t\t\tstepLength += delta;\n\t\t\t} else {\n\t\t\t\tApplyStep(body->Length()-1);\n\t\t\t\tstepPartition = partitionInsert;\n\t\t\t\tstepLength = delta;\n\t\t\t}\n\t\t} else {\n\t\t\tstepPartition = partitionInsert;\n\t\t\tstepLength = delta;\n\t\t}\n\t}\n\n\tvoid RemovePartition(int partition) {\n\t\tif (partition > stepPartition) {\n\t\t\tApplyStep(partition);\n\t\t\tstepPartition--;\n\t\t} else {\n\t\t\tstepPartition--;\n\t\t}\n\t\tbody->Delete(partition);\n\t}\n\n\tint PositionFromPartition(int partition) const {\n\t\tPLATFORM_ASSERT(partition >= 0);\n\t\tPLATFORM_ASSERT(partition < body->Length());\n\t\tif ((partition < 0) || (partition >= body->Length())) {\n\t\t\treturn 0;\n\t\t}\n\t\tint pos = body->ValueAt(partition);\n\t\tif (partition > stepPartition)\n\t\t\tpos += stepLength;\n\t\treturn pos;\n\t}\n\n\t/// Return value in range [0 .. Partitions() - 1] even for arguments outside interval\n\tint PartitionFromPosition(int pos) const {\n\t\tif (body->Length() <= 1)\n\t\t\treturn 0;\n\t\tif (pos >= (PositionFromPartition(body->Length()-1)))\n\t\t\treturn body->Length() - 1 - 1;\n\t\tint lower = 0;\n\t\tint upper = body->Length()-1;\n\t\tdo {\n\t\t\tint middle = (upper + lower + 1) / 2; \t// Round high\n\t\t\tint posMiddle = body->ValueAt(middle);\n\t\t\tif (middle > stepPartition)\n\t\t\t\tposMiddle += stepLength;\n\t\t\tif (pos < posMiddle) {\n\t\t\t\tupper = middle - 1;\n\t\t\t} else {\n\t\t\t\tlower = middle;\n\t\t\t}\n\t\t} while (lower < upper);\n\t\treturn lower;\n\t}\n\n\tvoid DeleteAll() {\n\t\tint growSize = body->GetGrowSize();\n\t\tdelete body;\n\t\tAllocate(growSize);\n\t}\n};\n\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/PerLine.cpp",
    "content": "// Scintilla source code edit control\n/** @file PerLine.cxx\n ** Manages data associated with each line of the document\n **/\n// Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <string.h>\n\n#include <stdexcept>\n#include <vector>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"CellBuffer.h\"\n#include \"PerLine.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nMarkerHandleSet::MarkerHandleSet() {\n\troot = 0;\n}\n\nMarkerHandleSet::~MarkerHandleSet() {\n\tMarkerHandleNumber *mhn = root;\n\twhile (mhn) {\n\t\tMarkerHandleNumber *mhnToFree = mhn;\n\t\tmhn = mhn->next;\n\t\tdelete mhnToFree;\n\t}\n\troot = 0;\n}\n\nint MarkerHandleSet::Length() const {\n\tint c = 0;\n\tMarkerHandleNumber *mhn = root;\n\twhile (mhn) {\n\t\tc++;\n\t\tmhn = mhn->next;\n\t}\n\treturn c;\n}\n\nint MarkerHandleSet::MarkValue() const {\n\tunsigned int m = 0;\n\tMarkerHandleNumber *mhn = root;\n\twhile (mhn) {\n\t\tm |= (1 << mhn->number);\n\t\tmhn = mhn->next;\n\t}\n\treturn m;\n}\n\nbool MarkerHandleSet::Contains(int handle) const {\n\tMarkerHandleNumber *mhn = root;\n\twhile (mhn) {\n\t\tif (mhn->handle == handle) {\n\t\t\treturn true;\n\t\t}\n\t\tmhn = mhn->next;\n\t}\n\treturn false;\n}\n\nbool MarkerHandleSet::InsertHandle(int handle, int markerNum) {\n\tMarkerHandleNumber *mhn = new MarkerHandleNumber;\n\tmhn->handle = handle;\n\tmhn->number = markerNum;\n\tmhn->next = root;\n\troot = mhn;\n\treturn true;\n}\n\nvoid MarkerHandleSet::RemoveHandle(int handle) {\n\tMarkerHandleNumber **pmhn = &root;\n\twhile (*pmhn) {\n\t\tMarkerHandleNumber *mhn = *pmhn;\n\t\tif (mhn->handle == handle) {\n\t\t\t*pmhn = mhn->next;\n\t\t\tdelete mhn;\n\t\t\treturn;\n\t\t}\n\t\tpmhn = &((*pmhn)->next);\n\t}\n}\n\nbool MarkerHandleSet::RemoveNumber(int markerNum, bool all) {\n\tbool performedDeletion = false;\n\tMarkerHandleNumber **pmhn = &root;\n\twhile (*pmhn) {\n\t\tMarkerHandleNumber *mhn = *pmhn;\n\t\tif (mhn->number == markerNum) {\n\t\t\t*pmhn = mhn->next;\n\t\t\tdelete mhn;\n\t\t\tperformedDeletion = true;\n\t\t\tif (!all)\n\t\t\t\tbreak;\n\t\t} else {\n\t\t\tpmhn = &((*pmhn)->next);\n\t\t}\n\t}\n\treturn performedDeletion;\n}\n\nvoid MarkerHandleSet::CombineWith(MarkerHandleSet *other) {\n\tMarkerHandleNumber **pmhn = &other->root;\n\twhile (*pmhn) {\n\t\tpmhn = &((*pmhn)->next);\n\t}\n\t*pmhn = root;\n\troot = other->root;\n\tother->root = 0;\n}\n\nLineMarkers::~LineMarkers() {\n\tInit();\n}\n\nvoid LineMarkers::Init() {\n\tfor (int line = 0; line < markers.Length(); line++) {\n\t\tdelete markers[line];\n\t\tmarkers[line] = 0;\n\t}\n\tmarkers.DeleteAll();\n}\n\nvoid LineMarkers::InsertLine(int line) {\n\tif (markers.Length()) {\n\t\tmarkers.Insert(line, 0);\n\t}\n}\n\nvoid LineMarkers::RemoveLine(int line) {\n\t// Retain the markers from the deleted line by oring them into the previous line\n\tif (markers.Length()) {\n\t\tif (line > 0) {\n\t\t\tMergeMarkers(line - 1);\n\t\t}\n\t\tmarkers.Delete(line);\n\t}\n}\n\nint LineMarkers::LineFromHandle(int markerHandle) {\n\tif (markers.Length()) {\n\t\tfor (int line = 0; line < markers.Length(); line++) {\n\t\t\tif (markers[line]) {\n\t\t\t\tif (markers[line]->Contains(markerHandle)) {\n\t\t\t\t\treturn line;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n}\n\nvoid LineMarkers::MergeMarkers(int pos) {\n\tif (markers[pos + 1] != NULL) {\n\t\tif (markers[pos] == NULL)\n\t\t\tmarkers[pos] = new MarkerHandleSet;\n\t\tmarkers[pos]->CombineWith(markers[pos + 1]);\n\t\tdelete markers[pos + 1];\n\t\tmarkers[pos + 1] = NULL;\n\t}\n}\n\nint LineMarkers::MarkValue(int line) {\n\tif (markers.Length() && (line >= 0) && (line < markers.Length()) && markers[line])\n\t\treturn markers[line]->MarkValue();\n\telse\n\t\treturn 0;\n}\n\nint LineMarkers::MarkerNext(int lineStart, int mask) const {\n\tif (lineStart < 0)\n\t\tlineStart = 0;\n\tint length = markers.Length();\n\tfor (int iLine = lineStart; iLine < length; iLine++) {\n\t\tMarkerHandleSet *onLine = markers[iLine];\n\t\tif (onLine && ((onLine->MarkValue() & mask) != 0))\n\t\t//if ((pdoc->GetMark(iLine) & lParam) != 0)\n\t\t\treturn iLine;\n\t}\n\treturn -1;\n}\n\nint LineMarkers::AddMark(int line, int markerNum, int lines) {\n\thandleCurrent++;\n\tif (!markers.Length()) {\n\t\t// No existing markers so allocate one element per line\n\t\tmarkers.InsertValue(0, lines, 0);\n\t}\n\tif (line >= markers.Length()) {\n\t\treturn -1;\n\t}\n\tif (!markers[line]) {\n\t\t// Need new structure to hold marker handle\n\t\tmarkers[line] = new MarkerHandleSet();\n\t}\n\tmarkers[line]->InsertHandle(handleCurrent, markerNum);\n\n\treturn handleCurrent;\n}\n\nbool LineMarkers::DeleteMark(int line, int markerNum, bool all) {\n\tbool someChanges = false;\n\tif (markers.Length() && (line >= 0) && (line < markers.Length()) && markers[line]) {\n\t\tif (markerNum == -1) {\n\t\t\tsomeChanges = true;\n\t\t\tdelete markers[line];\n\t\t\tmarkers[line] = NULL;\n\t\t} else {\n\t\t\tsomeChanges = markers[line]->RemoveNumber(markerNum, all);\n\t\t\tif (markers[line]->Length() == 0) {\n\t\t\t\tdelete markers[line];\n\t\t\t\tmarkers[line] = NULL;\n\t\t\t}\n\t\t}\n\t}\n\treturn someChanges;\n}\n\nvoid LineMarkers::DeleteMarkFromHandle(int markerHandle) {\n\tint line = LineFromHandle(markerHandle);\n\tif (line >= 0) {\n\t\tmarkers[line]->RemoveHandle(markerHandle);\n\t\tif (markers[line]->Length() == 0) {\n\t\t\tdelete markers[line];\n\t\t\tmarkers[line] = NULL;\n\t\t}\n\t}\n}\n\nLineLevels::~LineLevels() {\n}\n\nvoid LineLevels::Init() {\n\tlevels.DeleteAll();\n}\n\nvoid LineLevels::InsertLine(int line) {\n\tif (levels.Length()) {\n\t\tint level = (line < levels.Length()) ? levels[line] : SC_FOLDLEVELBASE;\n\t\tlevels.InsertValue(line, 1, level);\n\t}\n}\n\nvoid LineLevels::RemoveLine(int line) {\n\tif (levels.Length()) {\n\t\t// Move up following lines but merge header flag from this line\n\t\t// to line before to avoid a temporary disappearence causing expansion.\n\t\tint firstHeader = levels[line] & SC_FOLDLEVELHEADERFLAG;\n\t\tlevels.Delete(line);\n\t\tif (line == levels.Length()-1) // Last line loses the header flag\n\t\t\tlevels[line-1] &= ~SC_FOLDLEVELHEADERFLAG;\n\t\telse if (line > 0)\n\t\t\tlevels[line-1] |= firstHeader;\n\t}\n}\n\nvoid LineLevels::ExpandLevels(int sizeNew) {\n\tlevels.InsertValue(levels.Length(), sizeNew - levels.Length(), SC_FOLDLEVELBASE);\n}\n\nvoid LineLevels::ClearLevels() {\n\tlevels.DeleteAll();\n}\n\nint LineLevels::SetLevel(int line, int level, int lines) {\n\tint prev = 0;\n\tif ((line >= 0) && (line < lines)) {\n\t\tif (!levels.Length()) {\n\t\t\tExpandLevels(lines + 1);\n\t\t}\n\t\tprev = levels[line];\n\t\tif (prev != level) {\n\t\t\tlevels[line] = level;\n\t\t}\n\t}\n\treturn prev;\n}\n\nint LineLevels::GetLevel(int line) const {\n\tif (levels.Length() && (line >= 0) && (line < levels.Length())) {\n\t\treturn levels[line];\n\t} else {\n\t\treturn SC_FOLDLEVELBASE;\n\t}\n}\n\nLineState::~LineState() {\n}\n\nvoid LineState::Init() {\n\tlineStates.DeleteAll();\n}\n\nvoid LineState::InsertLine(int line) {\n\tif (lineStates.Length()) {\n\t\tlineStates.EnsureLength(line);\n\t\tint val = (line < lineStates.Length()) ? lineStates[line] : 0;\n\t\tlineStates.Insert(line, val);\n\t}\n}\n\nvoid LineState::RemoveLine(int line) {\n\tif (lineStates.Length() > line) {\n\t\tlineStates.Delete(line);\n\t}\n}\n\nint LineState::SetLineState(int line, int state) {\n\tlineStates.EnsureLength(line + 1);\n\tint stateOld = lineStates[line];\n\tlineStates[line] = state;\n\treturn stateOld;\n}\n\nint LineState::GetLineState(int line) {\n\tif (line < 0)\n\t\treturn 0;\n\tlineStates.EnsureLength(line + 1);\n\treturn lineStates[line];\n}\n\nint LineState::GetMaxLineState() const {\n\treturn lineStates.Length();\n}\n\nstatic int NumberLines(const char *text) {\n\tif (text) {\n\t\tint newLines = 0;\n\t\twhile (*text) {\n\t\t\tif (*text == '\\n')\n\t\t\t\tnewLines++;\n\t\t\ttext++;\n\t\t}\n\t\treturn newLines+1;\n\t} else {\n\t\treturn 0;\n\t}\n}\n\n// Each allocated LineAnnotation is a char array which starts with an AnnotationHeader\n// and then has text and optional styles.\n\nstatic const int IndividualStyles = 0x100;\n\nstruct AnnotationHeader {\n\tshort style;\t// Style IndividualStyles implies array of styles\n\tshort lines;\n\tint length;\n};\n\nLineAnnotation::~LineAnnotation() {\n\tClearAll();\n}\n\nvoid LineAnnotation::Init() {\n\tClearAll();\n}\n\nvoid LineAnnotation::InsertLine(int line) {\n\tif (annotations.Length()) {\n\t\tannotations.EnsureLength(line);\n\t\tannotations.Insert(line, 0);\n\t}\n}\n\nvoid LineAnnotation::RemoveLine(int line) {\n\tif (annotations.Length() && (line > 0) && (line <= annotations.Length())) {\n\t\tdelete []annotations[line-1];\n\t\tannotations.Delete(line-1);\n\t}\n}\n\nbool LineAnnotation::MultipleStyles(int line) const {\n\tif (annotations.Length() && (line >= 0) && (line < annotations.Length()) && annotations[line])\n\t\treturn reinterpret_cast<AnnotationHeader *>(annotations[line])->style == IndividualStyles;\n\telse\n\t\treturn 0;\n}\n\nint LineAnnotation::Style(int line) const {\n\tif (annotations.Length() && (line >= 0) && (line < annotations.Length()) && annotations[line])\n\t\treturn reinterpret_cast<AnnotationHeader *>(annotations[line])->style;\n\telse\n\t\treturn 0;\n}\n\nconst char *LineAnnotation::Text(int line) const {\n\tif (annotations.Length() && (line >= 0) && (line < annotations.Length()) && annotations[line])\n\t\treturn annotations[line]+sizeof(AnnotationHeader);\n\telse\n\t\treturn 0;\n}\n\nconst unsigned char *LineAnnotation::Styles(int line) const {\n\tif (annotations.Length() && (line >= 0) && (line < annotations.Length()) && annotations[line] && MultipleStyles(line))\n\t\treturn reinterpret_cast<unsigned char *>(annotations[line] + sizeof(AnnotationHeader) + Length(line));\n\telse\n\t\treturn 0;\n}\n\nstatic char *AllocateAnnotation(int length, int style) {\n\tsize_t len = sizeof(AnnotationHeader) + length + ((style == IndividualStyles) ? length : 0);\n\tchar *ret = new char[len]();\n\treturn ret;\n}\n\nvoid LineAnnotation::SetText(int line, const char *text) {\n\tif (text && (line >= 0)) {\n\t\tannotations.EnsureLength(line+1);\n\t\tint style = Style(line);\n\t\tif (annotations[line]) {\n\t\t\tdelete []annotations[line];\n\t\t}\n\t\tannotations[line] = AllocateAnnotation(static_cast<int>(strlen(text)), style);\n\t\tAnnotationHeader *pah = reinterpret_cast<AnnotationHeader *>(annotations[line]);\n\t\tpah->style = static_cast<short>(style);\n\t\tpah->length = static_cast<int>(strlen(text));\n\t\tpah->lines = static_cast<short>(NumberLines(text));\n\t\tmemcpy(annotations[line]+sizeof(AnnotationHeader), text, pah->length);\n\t} else {\n\t\tif (annotations.Length() && (line >= 0) && (line < annotations.Length()) && annotations[line]) {\n\t\t\tdelete []annotations[line];\n\t\t\tannotations[line] = 0;\n\t\t}\n\t}\n}\n\nvoid LineAnnotation::ClearAll() {\n\tfor (int line = 0; line < annotations.Length(); line++) {\n\t\tdelete []annotations[line];\n\t\tannotations[line] = 0;\n\t}\n\tannotations.DeleteAll();\n}\n\nvoid LineAnnotation::SetStyle(int line, int style) {\n\tannotations.EnsureLength(line+1);\n\tif (!annotations[line]) {\n\t\tannotations[line] = AllocateAnnotation(0, style);\n\t}\n\treinterpret_cast<AnnotationHeader *>(annotations[line])->style = static_cast<short>(style);\n}\n\nvoid LineAnnotation::SetStyles(int line, const unsigned char *styles) {\n\tif (line >= 0) {\n\t\tannotations.EnsureLength(line+1);\n\t\tif (!annotations[line]) {\n\t\t\tannotations[line] = AllocateAnnotation(0, IndividualStyles);\n\t\t} else {\n\t\t\tAnnotationHeader *pahSource = reinterpret_cast<AnnotationHeader *>(annotations[line]);\n\t\t\tif (pahSource->style != IndividualStyles) {\n\t\t\t\tchar *allocation = AllocateAnnotation(pahSource->length, IndividualStyles);\n\t\t\t\tAnnotationHeader *pahAlloc = reinterpret_cast<AnnotationHeader *>(allocation);\n\t\t\t\tpahAlloc->length = pahSource->length;\n\t\t\t\tpahAlloc->lines = pahSource->lines;\n\t\t\t\tmemcpy(allocation + sizeof(AnnotationHeader), annotations[line] + sizeof(AnnotationHeader), pahSource->length);\n\t\t\t\tdelete []annotations[line];\n\t\t\t\tannotations[line] = allocation;\n\t\t\t}\n\t\t}\n\t\tAnnotationHeader *pah = reinterpret_cast<AnnotationHeader *>(annotations[line]);\n\t\tpah->style = IndividualStyles;\n\t\tmemcpy(annotations[line] + sizeof(AnnotationHeader) + pah->length, styles, pah->length);\n\t}\n}\n\nint LineAnnotation::Length(int line) const {\n\tif (annotations.Length() && (line >= 0) && (line < annotations.Length()) && annotations[line])\n\t\treturn reinterpret_cast<AnnotationHeader *>(annotations[line])->length;\n\telse\n\t\treturn 0;\n}\n\nint LineAnnotation::Lines(int line) const {\n\tif (annotations.Length() && (line >= 0) && (line < annotations.Length()) && annotations[line])\n\t\treturn reinterpret_cast<AnnotationHeader *>(annotations[line])->lines;\n\telse\n\t\treturn 0;\n}\n\nLineTabstops::~LineTabstops() {\n\tInit();\n}\n\nvoid LineTabstops::Init() {\n\tfor (int line = 0; line < tabstops.Length(); line++) {\n\t\tdelete tabstops[line];\n\t}\n\ttabstops.DeleteAll();\n}\n\nvoid LineTabstops::InsertLine(int line) {\n\tif (tabstops.Length()) {\n\t\ttabstops.EnsureLength(line);\n\t\ttabstops.Insert(line, 0);\n\t}\n}\n\nvoid LineTabstops::RemoveLine(int line) {\n\tif (tabstops.Length() > line) {\n\t\tdelete tabstops[line];\n\t\ttabstops.Delete(line);\n\t}\n}\n\nbool LineTabstops::ClearTabstops(int line) {\n\tif (line < tabstops.Length()) {\n\t\tTabstopList *tl = tabstops[line];\n\t\tif (tl) {\n\t\t\ttl->clear();\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nbool LineTabstops::AddTabstop(int line, int x) {\n\ttabstops.EnsureLength(line + 1);\n\tif (!tabstops[line]) {\n\t\ttabstops[line] = new TabstopList();\n\t}\n\n\tTabstopList *tl = tabstops[line];\n\tif (tl) {\n\t\t// tabstop positions are kept in order - insert in the right place\n\t\tstd::vector<int>::iterator it = std::lower_bound(tl->begin(), tl->end(), x);\n\t\t// don't insert duplicates\n\t\tif (it == tl->end() || *it != x) {\n\t\t\ttl->insert(it, x);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nint LineTabstops::GetNextTabstop(int line, int x) const {\n\tif (line < tabstops.Length()) {\n\t\tTabstopList *tl = tabstops[line];\n\t\tif (tl) {\n\t\t\tfor (size_t i = 0; i < tl->size(); i++) {\n\t\t\t\tif ((*tl)[i] > x) {\n\t\t\t\t\treturn (*tl)[i];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn 0;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/PerLine.h",
    "content": "// Scintilla source code edit control\n/** @file PerLine.h\n ** Manages data associated with each line of the document\n **/\n// Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef PERLINE_H\n#define PERLINE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n * This holds the marker identifier and the marker type to display.\n * MarkerHandleNumbers are members of lists.\n */\nstruct MarkerHandleNumber {\n\tint handle;\n\tint number;\n\tMarkerHandleNumber *next;\n};\n\n/**\n * A marker handle set contains any number of MarkerHandleNumbers.\n */\nclass MarkerHandleSet {\n\tMarkerHandleNumber *root;\n\npublic:\n\tMarkerHandleSet();\n\t~MarkerHandleSet();\n\tint Length() const;\n\tint MarkValue() const;\t///< Bit set of marker numbers.\n\tbool Contains(int handle) const;\n\tbool InsertHandle(int handle, int markerNum);\n\tvoid RemoveHandle(int handle);\n\tbool RemoveNumber(int markerNum, bool all);\n\tvoid CombineWith(MarkerHandleSet *other);\n};\n\nclass LineMarkers : public PerLine {\n\tSplitVector<MarkerHandleSet *> markers;\n\t/// Handles are allocated sequentially and should never have to be reused as 32 bit ints are very big.\n\tint handleCurrent;\npublic:\n\tLineMarkers() : handleCurrent(0) {\n\t}\n\tvirtual ~LineMarkers();\n\tvirtual void Init();\n\tvirtual void InsertLine(int line);\n\tvirtual void RemoveLine(int line);\n\n\tint MarkValue(int line);\n\tint MarkerNext(int lineStart, int mask) const;\n\tint AddMark(int line, int marker, int lines);\n\tvoid MergeMarkers(int pos);\n\tbool DeleteMark(int line, int markerNum, bool all);\n\tvoid DeleteMarkFromHandle(int markerHandle);\n\tint LineFromHandle(int markerHandle);\n};\n\nclass LineLevels : public PerLine {\n\tSplitVector<int> levels;\npublic:\n\tvirtual ~LineLevels();\n\tvirtual void Init();\n\tvirtual void InsertLine(int line);\n\tvirtual void RemoveLine(int line);\n\n\tvoid ExpandLevels(int sizeNew=-1);\n\tvoid ClearLevels();\n\tint SetLevel(int line, int level, int lines);\n\tint GetLevel(int line) const;\n};\n\nclass LineState : public PerLine {\n\tSplitVector<int> lineStates;\npublic:\n\tLineState() {\n\t}\n\tvirtual ~LineState();\n\tvirtual void Init();\n\tvirtual void InsertLine(int line);\n\tvirtual void RemoveLine(int line);\n\n\tint SetLineState(int line, int state);\n\tint GetLineState(int line);\n\tint GetMaxLineState() const;\n};\n\nclass LineAnnotation : public PerLine {\n\tSplitVector<char *> annotations;\npublic:\n\tLineAnnotation() {\n\t}\n\tvirtual ~LineAnnotation();\n\tvirtual void Init();\n\tvirtual void InsertLine(int line);\n\tvirtual void RemoveLine(int line);\n\n\tbool MultipleStyles(int line) const;\n\tint Style(int line) const;\n\tconst char *Text(int line) const;\n\tconst unsigned char *Styles(int line) const;\n\tvoid SetText(int line, const char *text);\n\tvoid ClearAll();\n\tvoid SetStyle(int line, int style);\n\tvoid SetStyles(int line, const unsigned char *styles);\n\tint Length(int line) const;\n\tint Lines(int line) const;\n};\n\ntypedef std::vector<int> TabstopList;\n\nclass LineTabstops : public PerLine {\n\tSplitVector<TabstopList *> tabstops;\npublic:\n\tLineTabstops() {\n\t}\n\tvirtual ~LineTabstops();\n\tvirtual void Init();\n\tvirtual void InsertLine(int line);\n\tvirtual void RemoveLine(int line);\n\n\tbool ClearTabstops(int line);\n\tbool AddTabstop(int line, int x);\n\tint GetNextTabstop(int line, int x) const;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Position.h",
    "content": "// Scintilla source code edit control\n/** @file Position.h\n ** Defines global type name Position in the Sci internal namespace.\n **/\n// Copyright 2015 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef POSITION_H\n#define POSITION_H\n\n/**\n * A Position is a position within a document between two characters or at the beginning or end.\n * Sometimes used as a character index where it identifies the character after the position.\n */\n\nnamespace Sci {\n\ntypedef int Position;\n\n// A later version (4.x) of this file may:\n//#if defined(SCI_LARGE_FILE_SUPPORT)\n//typedef std::ptrdiff_t Position;\n// or may allow runtime choice between different position sizes.\n\nconst Position invalidPosition = -1;\n\n}\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/PositionCache.cpp",
    "content": "// Scintilla source code edit control\n/** @file PositionCache.cxx\n ** Classes for caching layout information.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <ctype.h>\n\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"ContractionState.h\"\n#include \"CellBuffer.h\"\n#include \"KeyMap.h\"\n#include \"Indicator.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n#include \"Style.h\"\n#include \"ViewStyle.h\"\n#include \"CharClassify.h\"\n#include \"Decoration.h\"\n#include \"CaseFolder.h\"\n#include \"Document.h\"\n#include \"UniConversion.h\"\n#include \"Selection.h\"\n#include \"PositionCache.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nLineLayout::LineLayout(int maxLineLength_) :\n\tlineStarts(0),\n\tlenLineStarts(0),\n\tlineNumber(-1),\n\tinCache(false),\n\tmaxLineLength(-1),\n\tnumCharsInLine(0),\n\tnumCharsBeforeEOL(0),\n\tvalidity(llInvalid),\n\txHighlightGuide(0),\n\thighlightColumn(0),\n\tcontainsCaret(false),\n\tedgeColumn(0),\n\tchars(0),\n\tstyles(0),\n\tpositions(0),\n\thotspot(0,0),\n\twidthLine(wrapWidthInfinite),\n\tlines(1),\n\twrapIndent(0) {\n\tbracePreviousStyles[0] = 0;\n\tbracePreviousStyles[1] = 0;\n\tResize(maxLineLength_);\n}\n\nLineLayout::~LineLayout() {\n\tFree();\n}\n\nvoid LineLayout::Resize(int maxLineLength_) {\n\tif (maxLineLength_ > maxLineLength) {\n\t\tFree();\n\t\tchars = new char[maxLineLength_ + 1];\n\t\tstyles = new unsigned char[maxLineLength_ + 1];\n\t\t// Extra position allocated as sometimes the Windows\n\t\t// GetTextExtentExPoint API writes an extra element.\n\t\tpositions = new XYPOSITION[maxLineLength_ + 1 + 1];\n\t\tmaxLineLength = maxLineLength_;\n\t}\n}\n\nvoid LineLayout::Free() {\n\tdelete []chars;\n\tchars = 0;\n\tdelete []styles;\n\tstyles = 0;\n\tdelete []positions;\n\tpositions = 0;\n\tdelete []lineStarts;\n\tlineStarts = 0;\n}\n\nvoid LineLayout::Invalidate(validLevel validity_) {\n\tif (validity > validity_)\n\t\tvalidity = validity_;\n}\n\nint LineLayout::LineStart(int line) const {\n\tif (line <= 0) {\n\t\treturn 0;\n\t} else if ((line >= lines) || !lineStarts) {\n\t\treturn numCharsInLine;\n\t} else {\n\t\treturn lineStarts[line];\n\t}\n}\n\nint LineLayout::LineLastVisible(int line) const {\n\tif (line < 0) {\n\t\treturn 0;\n\t} else if ((line >= lines-1) || !lineStarts) {\n\t\treturn numCharsBeforeEOL;\n\t} else {\n\t\treturn lineStarts[line+1];\n\t}\n}\n\nRange LineLayout::SubLineRange(int subLine) const {\n\treturn Range(LineStart(subLine), LineLastVisible(subLine));\n}\n\nbool LineLayout::InLine(int offset, int line) const {\n\treturn ((offset >= LineStart(line)) && (offset < LineStart(line + 1))) ||\n\t\t((offset == numCharsInLine) && (line == (lines-1)));\n}\n\nvoid LineLayout::SetLineStart(int line, int start) {\n\tif ((line >= lenLineStarts) && (line != 0)) {\n\t\tint newMaxLines = line + 20;\n\t\tint *newLineStarts = new int[newMaxLines];\n\t\tfor (int i = 0; i < newMaxLines; i++) {\n\t\t\tif (i < lenLineStarts)\n\t\t\t\tnewLineStarts[i] = lineStarts[i];\n\t\t\telse\n\t\t\t\tnewLineStarts[i] = 0;\n\t\t}\n\t\tdelete []lineStarts;\n\t\tlineStarts = newLineStarts;\n\t\tlenLineStarts = newMaxLines;\n\t}\n\tlineStarts[line] = start;\n}\n\nvoid LineLayout::SetBracesHighlight(Range rangeLine, const Position braces[],\n                                    char bracesMatchStyle, int xHighlight, bool ignoreStyle) {\n\tif (!ignoreStyle && rangeLine.ContainsCharacter(braces[0])) {\n\t\tint braceOffset = braces[0] - rangeLine.start;\n\t\tif (braceOffset < numCharsInLine) {\n\t\t\tbracePreviousStyles[0] = styles[braceOffset];\n\t\t\tstyles[braceOffset] = bracesMatchStyle;\n\t\t}\n\t}\n\tif (!ignoreStyle && rangeLine.ContainsCharacter(braces[1])) {\n\t\tint braceOffset = braces[1] - rangeLine.start;\n\t\tif (braceOffset < numCharsInLine) {\n\t\t\tbracePreviousStyles[1] = styles[braceOffset];\n\t\t\tstyles[braceOffset] = bracesMatchStyle;\n\t\t}\n\t}\n\tif ((braces[0] >= rangeLine.start && braces[1] <= rangeLine.end) ||\n\t        (braces[1] >= rangeLine.start && braces[0] <= rangeLine.end)) {\n\t\txHighlightGuide = xHighlight;\n\t}\n}\n\nvoid LineLayout::RestoreBracesHighlight(Range rangeLine, const Position braces[], bool ignoreStyle) {\n\tif (!ignoreStyle && rangeLine.ContainsCharacter(braces[0])) {\n\t\tint braceOffset = braces[0] - rangeLine.start;\n\t\tif (braceOffset < numCharsInLine) {\n\t\t\tstyles[braceOffset] = bracePreviousStyles[0];\n\t\t}\n\t}\n\tif (!ignoreStyle && rangeLine.ContainsCharacter(braces[1])) {\n\t\tint braceOffset = braces[1] - rangeLine.start;\n\t\tif (braceOffset < numCharsInLine) {\n\t\t\tstyles[braceOffset] = bracePreviousStyles[1];\n\t\t}\n\t}\n\txHighlightGuide = 0;\n}\n\nint LineLayout::FindBefore(XYPOSITION x, int lower, int upper) const {\n\tdo {\n\t\tint middle = (upper + lower + 1) / 2; \t// Round high\n\t\tXYPOSITION posMiddle = positions[middle];\n\t\tif (x < posMiddle) {\n\t\t\tupper = middle - 1;\n\t\t} else {\n\t\t\tlower = middle;\n\t\t}\n\t} while (lower < upper);\n\treturn lower;\n}\n\n\nint LineLayout::FindPositionFromX(XYPOSITION x, Range range, bool charPosition) const {\n\tint pos = FindBefore(x, range.start, range.end);\n\twhile (pos < range.end) {\n\t\tif (charPosition) {\n\t\t\tif (x < (positions[pos + 1])) {\n\t\t\t\treturn pos;\n\t\t\t}\n\t\t} else {\n\t\t\tif (x < ((positions[pos] + positions[pos + 1]) / 2)) {\n\t\t\t\treturn pos;\n\t\t\t}\n\t\t}\n\t\tpos++;\n\t}\n\treturn range.end;\n}\n\nPoint LineLayout::PointFromPosition(int posInLine, int lineHeight, PointEnd pe) const {\n\tPoint pt;\n\t// In case of very long line put x at arbitrary large position\n\tif (posInLine > maxLineLength) {\n\t\tpt.x = positions[maxLineLength] - positions[LineStart(lines)];\n\t}\n\n\tfor (int subLine = 0; subLine < lines; subLine++) {\n\t\tconst Range rangeSubLine = SubLineRange(subLine);\n\t\tif (posInLine >= rangeSubLine.start) {\n\t\t\tpt.y = static_cast<XYPOSITION>(subLine*lineHeight);\n\t\t\tif (posInLine <= rangeSubLine.end) {\n\t\t\t\tpt.x = positions[posInLine] - positions[rangeSubLine.start];\n\t\t\t\tif (rangeSubLine.start != 0)\t// Wrapped lines may be indented\n\t\t\t\t\tpt.x += wrapIndent;\n\t\t\t\tif (pe & peSubLineEnd)\t// Return end of first subline not start of next\n\t\t\t\t\tbreak;\n\t\t\t} else if ((pe & peLineEnd) && (subLine == (lines-1))) {\n\t\t\t\tpt.x = positions[numCharsInLine] - positions[rangeSubLine.start];\n\t\t\t\tif (rangeSubLine.start != 0)\t// Wrapped lines may be indented\n\t\t\t\t\tpt.x += wrapIndent;\n\t\t\t}\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\treturn pt;\n}\n\nint LineLayout::EndLineStyle() const {\n\treturn styles[numCharsBeforeEOL > 0 ? numCharsBeforeEOL-1 : 0];\n}\n\nLineLayoutCache::LineLayoutCache() :\n\tlevel(0),\n\tallInvalidated(false), styleClock(-1), useCount(0) {\n\tAllocate(0);\n}\n\nLineLayoutCache::~LineLayoutCache() {\n\tDeallocate();\n}\n\nvoid LineLayoutCache::Allocate(size_t length_) {\n\tPLATFORM_ASSERT(cache.empty());\n\tallInvalidated = false;\n\tcache.resize(length_);\n}\n\nvoid LineLayoutCache::AllocateForLevel(int linesOnScreen, int linesInDoc) {\n\tPLATFORM_ASSERT(useCount == 0);\n\tsize_t lengthForLevel = 0;\n\tif (level == llcCaret) {\n\t\tlengthForLevel = 1;\n\t} else if (level == llcPage) {\n\t\tlengthForLevel = linesOnScreen + 1;\n\t} else if (level == llcDocument) {\n\t\tlengthForLevel = linesInDoc;\n\t}\n\tif (lengthForLevel > cache.size()) {\n\t\tDeallocate();\n\t\tAllocate(lengthForLevel);\n\t} else {\n\t\tif (lengthForLevel < cache.size()) {\n\t\t\tfor (size_t i = lengthForLevel; i < cache.size(); i++) {\n\t\t\t\tdelete cache[i];\n\t\t\t\tcache[i] = 0;\n\t\t\t}\n\t\t}\n\t\tcache.resize(lengthForLevel);\n\t}\n\tPLATFORM_ASSERT(cache.size() == lengthForLevel);\n}\n\nvoid LineLayoutCache::Deallocate() {\n\tPLATFORM_ASSERT(useCount == 0);\n\tfor (size_t i = 0; i < cache.size(); i++)\n\t\tdelete cache[i];\n\tcache.clear();\n}\n\nvoid LineLayoutCache::Invalidate(LineLayout::validLevel validity_) {\n\tif (!cache.empty() && !allInvalidated) {\n\t\tfor (size_t i = 0; i < cache.size(); i++) {\n\t\t\tif (cache[i]) {\n\t\t\t\tcache[i]->Invalidate(validity_);\n\t\t\t}\n\t\t}\n\t\tif (validity_ == LineLayout::llInvalid) {\n\t\t\tallInvalidated = true;\n\t\t}\n\t}\n}\n\nvoid LineLayoutCache::SetLevel(int level_) {\n\tallInvalidated = false;\n\tif ((level_ != -1) && (level != level_)) {\n\t\tlevel = level_;\n\t\tDeallocate();\n\t}\n}\n\nLineLayout *LineLayoutCache::Retrieve(int lineNumber, int lineCaret, int maxChars, int styleClock_,\n                                      int linesOnScreen, int linesInDoc) {\n\tAllocateForLevel(linesOnScreen, linesInDoc);\n\tif (styleClock != styleClock_) {\n\t\tInvalidate(LineLayout::llCheckTextAndStyle);\n\t\tstyleClock = styleClock_;\n\t}\n\tallInvalidated = false;\n\tint pos = -1;\n\tLineLayout *ret = 0;\n\tif (level == llcCaret) {\n\t\tpos = 0;\n\t} else if (level == llcPage) {\n\t\tif (lineNumber == lineCaret) {\n\t\t\tpos = 0;\n\t\t} else if (cache.size() > 1) {\n\t\t\tpos = 1 + (lineNumber % (cache.size() - 1));\n\t\t}\n\t} else if (level == llcDocument) {\n\t\tpos = lineNumber;\n\t}\n\tif (pos >= 0) {\n\t\tPLATFORM_ASSERT(useCount == 0);\n\t\tif (!cache.empty() && (pos < static_cast<int>(cache.size()))) {\n\t\t\tif (cache[pos]) {\n\t\t\t\tif ((cache[pos]->lineNumber != lineNumber) ||\n\t\t\t\t        (cache[pos]->maxLineLength < maxChars)) {\n\t\t\t\t\tdelete cache[pos];\n\t\t\t\t\tcache[pos] = 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!cache[pos]) {\n\t\t\t\tcache[pos] = new LineLayout(maxChars);\n\t\t\t}\n\t\t\tcache[pos]->lineNumber = lineNumber;\n\t\t\tcache[pos]->inCache = true;\n\t\t\tret = cache[pos];\n\t\t\tuseCount++;\n\t\t}\n\t}\n\n\tif (!ret) {\n\t\tret = new LineLayout(maxChars);\n\t\tret->lineNumber = lineNumber;\n\t}\n\n\treturn ret;\n}\n\nvoid LineLayoutCache::Dispose(LineLayout *ll) {\n\tallInvalidated = false;\n\tif (ll) {\n\t\tif (!ll->inCache) {\n\t\t\tdelete ll;\n\t\t} else {\n\t\t\tuseCount--;\n\t\t}\n\t}\n}\n\n// Simply pack the (maximum 4) character bytes into an int\nstatic inline int KeyFromString(const char *charBytes, size_t len) {\n\tPLATFORM_ASSERT(len <= 4);\n\tint k=0;\n\tfor (size_t i=0; i<len && charBytes[i]; i++) {\n\t\tk = k * 0x100;\n\t\tk += static_cast<unsigned char>(charBytes[i]);\n\t}\n\treturn k;\n}\n\nSpecialRepresentations::SpecialRepresentations() {\n\tstd::fill(startByteHasReprs, startByteHasReprs+0x100, 0);\n}\n\nvoid SpecialRepresentations::SetRepresentation(const char *charBytes, const char *value) {\n\tMapRepresentation::iterator it = mapReprs.find(KeyFromString(charBytes, UTF8MaxBytes));\n\tif (it == mapReprs.end()) {\n\t\t// New entry so increment for first byte\n\t\tstartByteHasReprs[static_cast<unsigned char>(charBytes[0])]++;\n\t}\n\tmapReprs[KeyFromString(charBytes, UTF8MaxBytes)] = Representation(value);\n}\n\nvoid SpecialRepresentations::ClearRepresentation(const char *charBytes) {\n\tMapRepresentation::iterator it = mapReprs.find(KeyFromString(charBytes, UTF8MaxBytes));\n\tif (it != mapReprs.end()) {\n\t\tmapReprs.erase(it);\n\t\tstartByteHasReprs[static_cast<unsigned char>(charBytes[0])]--;\n\t}\n}\n\nconst Representation *SpecialRepresentations::RepresentationFromCharacter(const char *charBytes, size_t len) const {\n\tPLATFORM_ASSERT(len <= 4);\n\tif (!startByteHasReprs[static_cast<unsigned char>(charBytes[0])])\n\t\treturn 0;\n\tMapRepresentation::const_iterator it = mapReprs.find(KeyFromString(charBytes, len));\n\tif (it != mapReprs.end()) {\n\t\treturn &(it->second);\n\t}\n\treturn 0;\n}\n\nbool SpecialRepresentations::Contains(const char *charBytes, size_t len) const {\n\tPLATFORM_ASSERT(len <= 4);\n\tif (!startByteHasReprs[static_cast<unsigned char>(charBytes[0])])\n\t\treturn false;\n\tMapRepresentation::const_iterator it = mapReprs.find(KeyFromString(charBytes, len));\n\treturn it != mapReprs.end();\n}\n\nvoid SpecialRepresentations::Clear() {\n\tmapReprs.clear();\n\tstd::fill(startByteHasReprs, startByteHasReprs+0x100, 0);\n}\n\nvoid BreakFinder::Insert(int val) {\n\tif (val > nextBreak) {\n\t\tconst std::vector<int>::iterator it = std::lower_bound(selAndEdge.begin(), selAndEdge.end(), val);\n\t\tif (it == selAndEdge.end()) {\n\t\t\tselAndEdge.push_back(val);\n\t\t} else if (*it != val) {\n\t\t\tselAndEdge.insert(it, 1, val);\n\t\t}\n\t}\n}\n\nBreakFinder::BreakFinder(const LineLayout *ll_, const Selection *psel, Range lineRange_, int posLineStart_,\n\tint xStart, bool breakForSelection, const Document *pdoc_, const SpecialRepresentations *preprs_, const ViewStyle *pvsDraw) :\n\tll(ll_),\n\tlineRange(lineRange_),\n\tposLineStart(posLineStart_),\n\tnextBreak(lineRange_.start),\n\tsaeCurrentPos(0),\n\tsaeNext(0),\n\tsubBreak(-1),\n\tpdoc(pdoc_),\n\tencodingFamily(pdoc_->CodePageFamily()),\n\tpreprs(preprs_) {\n\n\t// Search for first visible break\n\t// First find the first visible character\n\tif (xStart > 0.0f)\n\t\tnextBreak = ll->FindBefore(static_cast<XYPOSITION>(xStart), lineRange.start, lineRange.end);\n\t// Now back to a style break\n\twhile ((nextBreak > lineRange.start) && (ll->styles[nextBreak] == ll->styles[nextBreak - 1])) {\n\t\tnextBreak--;\n\t}\n\n\tif (breakForSelection) {\n\t\tSelectionPosition posStart(posLineStart);\n\t\tSelectionPosition posEnd(posLineStart + lineRange.end);\n\t\tSelectionSegment segmentLine(posStart, posEnd);\n\t\tfor (size_t r=0; r<psel->Count(); r++) {\n\t\t\tSelectionSegment portion = psel->Range(r).Intersect(segmentLine);\n\t\t\tif (!(portion.start == portion.end)) {\n\t\t\t\tif (portion.start.IsValid())\n\t\t\t\t\tInsert(portion.start.Position() - posLineStart);\n\t\t\t\tif (portion.end.IsValid())\n\t\t\t\t\tInsert(portion.end.Position() - posLineStart);\n\t\t\t}\n\t\t}\n\t}\n\tif (pvsDraw && pvsDraw->indicatorsSetFore > 0) {\n\t\tfor (Decoration *deco = pdoc->decorations.root; deco; deco = deco->next) {\n\t\t\tif (pvsDraw->indicators[deco->indicator].OverridesTextFore()) {\n\t\t\t\tint startPos = deco->rs.EndRun(posLineStart);\n\t\t\t\twhile (startPos < (posLineStart + lineRange.end)) {\n\t\t\t\t\tInsert(startPos - posLineStart);\n\t\t\t\t\tstartPos = deco->rs.EndRun(startPos);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tInsert(ll->edgeColumn);\n\tInsert(lineRange.end);\n\tsaeNext = (!selAndEdge.empty()) ? selAndEdge[0] : -1;\n}\n\nBreakFinder::~BreakFinder() {\n}\n\nTextSegment BreakFinder::Next() {\n\tif (subBreak == -1) {\n\t\tint prev = nextBreak;\n\t\twhile (nextBreak < lineRange.end) {\n\t\t\tint charWidth = 1;\n\t\t\tif (encodingFamily == efUnicode)\n\t\t\t\tcharWidth = UTF8DrawBytes(reinterpret_cast<unsigned char *>(ll->chars) + nextBreak, lineRange.end - nextBreak);\n\t\t\telse if (encodingFamily == efDBCS)\n\t\t\t\tcharWidth = pdoc->IsDBCSLeadByte(ll->chars[nextBreak]) ? 2 : 1;\n\t\t\tconst Representation *repr = preprs->RepresentationFromCharacter(ll->chars + nextBreak, charWidth);\n\t\t\tif (((nextBreak > 0) && (ll->styles[nextBreak] != ll->styles[nextBreak - 1])) ||\n\t\t\t\t\trepr ||\n\t\t\t\t\t(nextBreak == saeNext)) {\n\t\t\t\twhile ((nextBreak >= saeNext) && (saeNext < lineRange.end)) {\n\t\t\t\t\tsaeCurrentPos++;\n\t\t\t\t\tsaeNext = (saeCurrentPos < selAndEdge.size()) ? selAndEdge[saeCurrentPos] : lineRange.end;\n\t\t\t\t}\n\t\t\t\tif ((nextBreak > prev) || repr) {\n\t\t\t\t\t// Have a segment to report\n\t\t\t\t\tif (nextBreak == prev) {\n\t\t\t\t\t\tnextBreak += charWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\trepr = 0;\t// Optimize -> should remember repr\n\t\t\t\t\t}\n\t\t\t\t\tif ((nextBreak - prev) < lengthStartSubdivision) {\n\t\t\t\t\t\treturn TextSegment(prev, nextBreak - prev, repr);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tnextBreak += charWidth;\n\t\t}\n\t\tif ((nextBreak - prev) < lengthStartSubdivision) {\n\t\t\treturn TextSegment(prev, nextBreak - prev);\n\t\t}\n\t\tsubBreak = prev;\n\t}\n\t// Splitting up a long run from prev to nextBreak in lots of approximately lengthEachSubdivision.\n\t// For very long runs add extra breaks after spaces or if no spaces before low punctuation.\n\tint startSegment = subBreak;\n\tif ((nextBreak - subBreak) <= lengthEachSubdivision) {\n\t\tsubBreak = -1;\n\t\treturn TextSegment(startSegment, nextBreak - startSegment);\n\t} else {\n\t\tsubBreak += pdoc->SafeSegment(ll->chars + subBreak, nextBreak-subBreak, lengthEachSubdivision);\n\t\tif (subBreak >= nextBreak) {\n\t\t\tsubBreak = -1;\n\t\t\treturn TextSegment(startSegment, nextBreak - startSegment);\n\t\t} else {\n\t\t\treturn TextSegment(startSegment, subBreak - startSegment);\n\t\t}\n\t}\n}\n\nbool BreakFinder::More() const {\n\treturn (subBreak >= 0) || (nextBreak < lineRange.end);\n}\n\nPositionCacheEntry::PositionCacheEntry() :\n\tstyleNumber(0), len(0), clock(0), positions(0) {\n}\n\nvoid PositionCacheEntry::Set(unsigned int styleNumber_, const char *s_,\n\tunsigned int len_, XYPOSITION *positions_, unsigned int clock_) {\n\tClear();\n\tstyleNumber = styleNumber_;\n\tlen = len_;\n\tclock = clock_;\n\tif (s_ && positions_) {\n\t\tpositions = new XYPOSITION[len + (len / 4) + 1];\n\t\tfor (unsigned int i=0; i<len; i++) {\n\t\t\tpositions[i] = positions_[i];\n\t\t}\n\t\tmemcpy(reinterpret_cast<char *>(reinterpret_cast<void *>(positions + len)), s_, len);\n\t}\n}\n\nPositionCacheEntry::~PositionCacheEntry() {\n\tClear();\n}\n\nvoid PositionCacheEntry::Clear() {\n\tdelete []positions;\n\tpositions = 0;\n\tstyleNumber = 0;\n\tlen = 0;\n\tclock = 0;\n}\n\nbool PositionCacheEntry::Retrieve(unsigned int styleNumber_, const char *s_,\n\tunsigned int len_, XYPOSITION *positions_) const {\n\tif ((styleNumber == styleNumber_) && (len == len_) &&\n\t\t(memcmp(reinterpret_cast<char *>(reinterpret_cast<void *>(positions + len)), s_, len)== 0)) {\n\t\tfor (unsigned int i=0; i<len; i++) {\n\t\t\tpositions_[i] = positions[i];\n\t\t}\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nunsigned int PositionCacheEntry::Hash(unsigned int styleNumber_, const char *s, unsigned int len_) {\n\tunsigned int ret = s[0] << 7;\n\tfor (unsigned int i=0; i<len_; i++) {\n\t\tret *= 1000003;\n\t\tret ^= s[i];\n\t}\n\tret *= 1000003;\n\tret ^= len_;\n\tret *= 1000003;\n\tret ^= styleNumber_;\n\treturn ret;\n}\n\nbool PositionCacheEntry::NewerThan(const PositionCacheEntry &other) const {\n\treturn clock > other.clock;\n}\n\nvoid PositionCacheEntry::ResetClock() {\n\tif (clock > 0) {\n\t\tclock = 1;\n\t}\n}\n\nPositionCache::PositionCache() {\n\tclock = 1;\n\tpces.resize(0x400);\n\tallClear = true;\n}\n\nPositionCache::~PositionCache() {\n\tClear();\n}\n\nvoid PositionCache::Clear() {\n\tif (!allClear) {\n\t\tfor (size_t i=0; i<pces.size(); i++) {\n\t\t\tpces[i].Clear();\n\t\t}\n\t}\n\tclock = 1;\n\tallClear = true;\n}\n\nvoid PositionCache::SetSize(size_t size_) {\n\tClear();\n\tpces.resize(size_);\n}\n\nvoid PositionCache::MeasureWidths(Surface *surface, const ViewStyle &vstyle, unsigned int styleNumber,\n\tconst char *s, unsigned int len, XYPOSITION *positions, Document *pdoc) {\n\n\tallClear = false;\n\tsize_t probe = pces.size();\t// Out of bounds\n\tif ((!pces.empty()) && (len < 30)) {\n\t\t// Only store short strings in the cache so it doesn't churn with\n\t\t// long comments with only a single comment.\n\n\t\t// Two way associative: try two probe positions.\n\t\tunsigned int hashValue = PositionCacheEntry::Hash(styleNumber, s, len);\n\t\tprobe = hashValue % pces.size();\n\t\tif (pces[probe].Retrieve(styleNumber, s, len, positions)) {\n\t\t\treturn;\n\t\t}\n\t\tunsigned int probe2 = (hashValue * 37) % pces.size();\n\t\tif (pces[probe2].Retrieve(styleNumber, s, len, positions)) {\n\t\t\treturn;\n\t\t}\n\t\t// Not found. Choose the oldest of the two slots to replace\n\t\tif (pces[probe].NewerThan(pces[probe2])) {\n\t\t\tprobe = probe2;\n\t\t}\n\t}\n\tif (len > BreakFinder::lengthStartSubdivision) {\n\t\t// Break up into segments\n\t\tunsigned int startSegment = 0;\n\t\tXYPOSITION xStartSegment = 0;\n\t\twhile (startSegment < len) {\n\t\t\tunsigned int lenSegment = pdoc->SafeSegment(s + startSegment, len - startSegment, BreakFinder::lengthEachSubdivision);\n\t\t\tFontAlias fontStyle = vstyle.styles[styleNumber].font;\n\t\t\tsurface->MeasureWidths(fontStyle, s + startSegment, lenSegment, positions + startSegment);\n\t\t\tfor (unsigned int inSeg = 0; inSeg < lenSegment; inSeg++) {\n\t\t\t\tpositions[startSegment + inSeg] += xStartSegment;\n\t\t\t}\n\t\t\txStartSegment = positions[startSegment + lenSegment - 1];\n\t\t\tstartSegment += lenSegment;\n\t\t}\n\t} else {\n\t\tFontAlias fontStyle = vstyle.styles[styleNumber].font;\n\t\tsurface->MeasureWidths(fontStyle, s, len, positions);\n\t}\n\tif (probe < pces.size()) {\n\t\t// Store into cache\n\t\tclock++;\n\t\tif (clock > 60000) {\n\t\t\t// Since there are only 16 bits for the clock, wrap it round and\n\t\t\t// reset all cache entries so none get stuck with a high clock.\n\t\t\tfor (size_t i=0; i<pces.size(); i++) {\n\t\t\t\tpces[i].ResetClock();\n\t\t\t}\n\t\t\tclock = 2;\n\t\t}\n\t\tpces[probe].Set(styleNumber, s, len, positions, clock);\n\t}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/PositionCache.h",
    "content": "// Scintilla source code edit control\n/** @file PositionCache.h\n ** Classes for caching layout information.\n **/\n// Copyright 1998-2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef POSITIONCACHE_H\n#define POSITIONCACHE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nstatic inline bool IsEOLChar(char ch) {\n\treturn (ch == '\\r') || (ch == '\\n');\n}\n\n/**\n* A point in document space.\n* Uses double for sufficient resolution in large (>20,000,000 line) documents.\n*/\nclass PointDocument {\npublic:\n\tdouble x;\n\tdouble y;\n\n\texplicit PointDocument(double x_ = 0, double y_ = 0) : x(x_), y(y_) {\n\t}\n\n\t// Conversion from Point.\n\texplicit PointDocument(Point pt) : x(pt.x), y(pt.y) {\n\t}\n};\n\n// There are two points for some positions and this enumeration\n// can choose between the end of the first line or subline\n// and the start of the next line or subline.\nenum PointEnd {\n\tpeDefault = 0x0,\n\tpeLineEnd = 0x1,\n\tpeSubLineEnd = 0x2\n};\n\n/**\n */\nclass LineLayout {\nprivate:\n\tfriend class LineLayoutCache;\n\tint *lineStarts;\n\tint lenLineStarts;\n\t/// Drawing is only performed for @a maxLineLength characters on each line.\n\tint lineNumber;\n\tbool inCache;\npublic:\n\tenum { wrapWidthInfinite = 0x7ffffff };\n\n\tint maxLineLength;\n\tint numCharsInLine;\n\tint numCharsBeforeEOL;\n\tenum validLevel { llInvalid, llCheckTextAndStyle, llPositions, llLines } validity;\n\tint xHighlightGuide;\n\tbool highlightColumn;\n\tbool containsCaret;\n\tint edgeColumn;\n\tchar *chars;\n\tunsigned char *styles;\n\tXYPOSITION *positions;\n\tchar bracePreviousStyles[2];\n\n\t// Hotspot support\n\tRange hotspot;\n\n\t// Wrapped line support\n\tint widthLine;\n\tint lines;\n\tXYPOSITION wrapIndent; // In pixels\n\n\texplicit LineLayout(int maxLineLength_);\n\tvirtual ~LineLayout();\n\tvoid Resize(int maxLineLength_);\n\tvoid Free();\n\tvoid Invalidate(validLevel validity_);\n\tint LineStart(int line) const;\n\tint LineLastVisible(int line) const;\n\tRange SubLineRange(int line) const;\n\tbool InLine(int offset, int line) const;\n\tvoid SetLineStart(int line, int start);\n\tvoid SetBracesHighlight(Range rangeLine, const Position braces[],\n\t\tchar bracesMatchStyle, int xHighlight, bool ignoreStyle);\n\tvoid RestoreBracesHighlight(Range rangeLine, const Position braces[], bool ignoreStyle);\n\tint FindBefore(XYPOSITION x, int lower, int upper) const;\n\tint FindPositionFromX(XYPOSITION x, Range range, bool charPosition) const;\n\tPoint PointFromPosition(int posInLine, int lineHeight, PointEnd pe) const;\n\tint EndLineStyle() const;\n};\n\n/**\n */\nclass LineLayoutCache {\n\tint level;\n\tstd::vector<LineLayout *>cache;\n\tbool allInvalidated;\n\tint styleClock;\n\tint useCount;\n\tvoid Allocate(size_t length_);\n\tvoid AllocateForLevel(int linesOnScreen, int linesInDoc);\npublic:\n\tLineLayoutCache();\n\tvirtual ~LineLayoutCache();\n\tvoid Deallocate();\n\tenum {\n\t\tllcNone=SC_CACHE_NONE,\n\t\tllcCaret=SC_CACHE_CARET,\n\t\tllcPage=SC_CACHE_PAGE,\n\t\tllcDocument=SC_CACHE_DOCUMENT\n\t};\n\tvoid Invalidate(LineLayout::validLevel validity_);\n\tvoid SetLevel(int level_);\n\tint GetLevel() const { return level; }\n\tLineLayout *Retrieve(int lineNumber, int lineCaret, int maxChars, int styleClock_,\n\t\tint linesOnScreen, int linesInDoc);\n\tvoid Dispose(LineLayout *ll);\n};\n\nclass PositionCacheEntry {\n\tunsigned int styleNumber:8;\n\tunsigned int len:8;\n\tunsigned int clock:16;\n\tXYPOSITION *positions;\npublic:\n\tPositionCacheEntry();\n\t~PositionCacheEntry();\n\tvoid Set(unsigned int styleNumber_, const char *s_, unsigned int len_, XYPOSITION *positions_, unsigned int clock_);\n\tvoid Clear();\n\tbool Retrieve(unsigned int styleNumber_, const char *s_, unsigned int len_, XYPOSITION *positions_) const;\n\tstatic unsigned int Hash(unsigned int styleNumber_, const char *s, unsigned int len);\n\tbool NewerThan(const PositionCacheEntry &other) const;\n\tvoid ResetClock();\n};\n\nclass Representation {\npublic:\n\tstd::string stringRep;\n\texplicit Representation(const char *value=\"\") : stringRep(value) {\n\t}\n};\n\ntypedef std::map<int, Representation> MapRepresentation;\n\nclass SpecialRepresentations {\n\tMapRepresentation mapReprs;\n\tshort startByteHasReprs[0x100];\npublic:\n\tSpecialRepresentations();\n\tvoid SetRepresentation(const char *charBytes, const char *value);\n\tvoid ClearRepresentation(const char *charBytes);\n\tconst Representation *RepresentationFromCharacter(const char *charBytes, size_t len) const;\n\tbool Contains(const char *charBytes, size_t len) const;\n\tvoid Clear();\n};\n\nstruct TextSegment {\n\tint start;\n\tint length;\n\tconst Representation *representation;\n\tTextSegment(int start_=0, int length_=0, const Representation *representation_=0) :\n\t\tstart(start_), length(length_), representation(representation_) {\n\t}\n\tint end() const {\n\t\treturn start + length;\n\t}\n};\n\n// Class to break a line of text into shorter runs at sensible places.\nclass BreakFinder {\n\tconst LineLayout *ll;\n\tRange lineRange;\n\tint posLineStart;\n\tint nextBreak;\n\tstd::vector<int> selAndEdge;\n\tunsigned int saeCurrentPos;\n\tint saeNext;\n\tint subBreak;\n\tconst Document *pdoc;\n\tEncodingFamily encodingFamily;\n\tconst SpecialRepresentations *preprs;\n\tvoid Insert(int val);\n\t// Private so BreakFinder objects can not be copied\n\tBreakFinder(const BreakFinder &);\npublic:\n\t// If a whole run is longer than lengthStartSubdivision then subdivide\n\t// into smaller runs at spaces or punctuation.\n\tenum { lengthStartSubdivision = 300 };\n\t// Try to make each subdivided run lengthEachSubdivision or shorter.\n\tenum { lengthEachSubdivision = 100 };\n\tBreakFinder(const LineLayout *ll_, const Selection *psel, Range rangeLine_, int posLineStart_,\n\t\tint xStart, bool breakForSelection, const Document *pdoc_, const SpecialRepresentations *preprs_, const ViewStyle *pvsDraw);\n\t~BreakFinder();\n\tTextSegment Next();\n\tbool More() const;\n};\n\nclass PositionCache {\n\tstd::vector<PositionCacheEntry> pces;\n\tunsigned int clock;\n\tbool allClear;\n\t// Private so PositionCache objects can not be copied\n\tPositionCache(const PositionCache &);\npublic:\n\tPositionCache();\n\t~PositionCache();\n\tvoid Clear();\n\tvoid SetSize(size_t size_);\n\tsize_t GetSize() const { return pces.size(); }\n\tvoid MeasureWidths(Surface *surface, const ViewStyle &vstyle, unsigned int styleNumber,\n\t\tconst char *s, unsigned int len, XYPOSITION *positions, Document *pdoc);\n};\n\ninline bool IsSpaceOrTab(int ch) {\n\treturn ch == ' ' || ch == '\\t';\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/RESearch.cpp",
    "content": "// Scintilla source code edit control\n/** @file RESearch.cxx\n ** Regular expression search library.\n **/\n\n/*\n * regex - Regular expression pattern matching and replacement\n *\n * By:  Ozan S. Yigit (oz)\n *      Dept. of Computer Science\n *      York University\n *\n * Original code available from http://www.cs.yorku.ca/~oz/\n * Translation to C++ by Neil Hodgson neilh@scintilla.org\n * Removed all use of register.\n * Converted to modern function prototypes.\n * Put all global/static variables into an object so this code can be\n * used from multiple threads, etc.\n * Some extensions by Philippe Lhoste PhiLho(a)GMX.net\n * '?' extensions by Michael Mullin masmullin@gmail.com\n *\n * These routines are the PUBLIC DOMAIN equivalents of regex\n * routines as found in 4.nBSD UN*X, with minor extensions.\n *\n * These routines are derived from various implementations found\n * in software tools books, and Conroy's grep. They are NOT derived\n * from licensed/restricted software.\n * For more interesting/academic/complicated implementations,\n * see Henry Spencer's regexp routines, or GNU Emacs pattern\n * matching module.\n *\n * Modification history removed.\n *\n * Interfaces:\n *  RESearch::Compile:      compile a regular expression into a NFA.\n *\n *          const char *RESearch::Compile(const char *pattern, int length,\n *                                        bool caseSensitive, bool posix)\n *\n * Returns a short error string if they fail.\n *\n *  RESearch::Execute:      execute the NFA to match a pattern.\n *\n *          int RESearch::Execute(characterIndexer &ci, int lp, int endp)\n *\n *  re_fail:                failure routine for RESearch::Execute. (no longer used)\n *\n *          void re_fail(char *msg, char op)\n *\n * Regular Expressions:\n *\n *      [1]     char    matches itself, unless it is a special\n *                      character (metachar): . \\ [ ] * + ? ^ $\n *                      and ( ) if posix option.\n *\n *      [2]     .       matches any character.\n *\n *      [3]     \\       matches the character following it, except:\n *                      - \\a, \\b, \\f, \\n, \\r, \\t, \\v match the corresponding C\n *                      escape char, respectively BEL, BS, FF, LF, CR, TAB and VT;\n *                      Note that \\r and \\n are never matched because Scintilla\n *                      regex searches are made line per line\n *                      (stripped of end-of-line chars).\n *                      - if not in posix mode, when followed by a\n *                      left or right round bracket (see [8]);\n *                      - when followed by a digit 1 to 9 (see [9]);\n *                      - when followed by a left or right angle bracket\n *                      (see [10]);\n *                      - when followed by d, D, s, S, w or W (see [11]);\n *                      - when followed by x and two hexa digits (see [12].\n *                      Backslash is used as an escape character for all\n *                      other meta-characters, and itself.\n *\n *      [4]     [set]   matches one of the characters in the set.\n *                      If the first character in the set is \"^\",\n *                      it matches the characters NOT in the set, i.e.\n *                      complements the set. A shorthand S-E (start dash end)\n *                      is used to specify a set of characters S up to\n *                      E, inclusive. S and E must be characters, otherwise\n *                      the dash is taken literally (eg. in expression [\\d-a]).\n *                      The special characters \"]\" and \"-\" have no special\n *                      meaning if they appear as the first chars in the set.\n *                      To include both, put - first: [-]A-Z]\n *                      (or just backslash them).\n *                      examples:        match:\n *\n *                              [-]|]    matches these 3 chars,\n *\n *                              []-|]    matches from ] to | chars\n *\n *                              [a-z]    any lowercase alpha\n *\n *                              [^-]]    any char except - and ]\n *\n *                              [^A-Z]   any char except uppercase\n *                                       alpha\n *\n *                              [a-zA-Z] any alpha\n *\n *      [5]     *       any regular expression form [1] to [4]\n *                      (except [8], [9] and [10] forms of [3]),\n *                      followed by closure char (*)\n *                      matches zero or more matches of that form.\n *\n *      [6]     +       same as [5], except it matches one or more.\n *\n *      [5-6]           Both [5] and [6] are greedy (they match as much as possible).\n *                      Unless they are followed by the 'lazy' quantifier (?)\n *                      In which case both [5] and [6] try to match as little as possible\n *\n *      [7]     ?       same as [5] except it matches zero or one.\n *\n *      [8]             a regular expression in the form [1] to [13], enclosed\n *                      as \\(form\\) (or (form) with posix flag) matches what\n *                      form matches. The enclosure creates a set of tags,\n *                      used for [9] and for pattern substitution.\n *                      The tagged forms are numbered starting from 1.\n *\n *      [9]             a \\ followed by a digit 1 to 9 matches whatever a\n *                      previously tagged regular expression ([8]) matched.\n *\n *      [10]    \\<      a regular expression starting with a \\< construct\n *              \\>      and/or ending with a \\> construct, restricts the\n *                      pattern matching to the beginning of a word, and/or\n *                      the end of a word. A word is defined to be a character\n *                      string beginning and/or ending with the characters\n *                      A-Z a-z 0-9 and _. Scintilla extends this definition\n *                      by user setting. The word must also be preceded and/or\n *                      followed by any character outside those mentioned.\n *\n *      [11]    \\l      a backslash followed by d, D, s, S, w or W,\n *                      becomes a character class (both inside and\n *                      outside sets []).\n *                        d: decimal digits\n *                        D: any char except decimal digits\n *                        s: whitespace (space, \\t \\n \\r \\f \\v)\n *                        S: any char except whitespace (see above)\n *                        w: alphanumeric & underscore (changed by user setting)\n *                        W: any char except alphanumeric & underscore (see above)\n *\n *      [12]    \\xHH    a backslash followed by x and two hexa digits,\n *                      becomes the character whose Ascii code is equal\n *                      to these digits. If not followed by two digits,\n *                      it is 'x' char itself.\n *\n *      [13]            a composite regular expression xy where x and y\n *                      are in the form [1] to [12] matches the longest\n *                      match of x followed by a match for y.\n *\n *      [14]    ^       a regular expression starting with a ^ character\n *              $       and/or ending with a $ character, restricts the\n *                      pattern matching to the beginning of the line,\n *                      or the end of line. [anchors] Elsewhere in the\n *                      pattern, ^ and $ are treated as ordinary characters.\n *\n *\n * Acknowledgements:\n *\n *  HCR's Hugh Redelmeier has been most helpful in various\n *  stages of development. He convinced me to include BOW\n *  and EOW constructs, originally invented by Rob Pike at\n *  the University of Toronto.\n *\n * References:\n *              Software tools                  Kernighan & Plauger\n *              Software tools in Pascal        Kernighan & Plauger\n *              Grep [rsx-11 C dist]            David Conroy\n *              ed - text editor                Un*x Programmer's Manual\n *              Advanced editing on Un*x        B. W. Kernighan\n *              RegExp routines                 Henry Spencer\n *\n * Notes:\n *\n *  This implementation uses a bit-set representation for character\n *  classes for speed and compactness. Each character is represented\n *  by one bit in a 256-bit block. Thus, CCL always takes a\n *\tconstant 32 bytes in the internal nfa, and RESearch::Execute does a single\n *  bit comparison to locate the character in the set.\n *\n * Examples:\n *\n *  pattern:    foo*.*\n *  compile:    CHR f CHR o CLO CHR o END CLO ANY END END\n *  matches:    fo foo fooo foobar fobar foxx ...\n *\n *  pattern:    fo[ob]a[rz]\n *  compile:    CHR f CHR o CCL bitset CHR a CCL bitset END\n *  matches:    fobar fooar fobaz fooaz\n *\n *  pattern:    foo\\\\+\n *  compile:    CHR f CHR o CHR o CHR \\ CLO CHR \\ END END\n *  matches:    foo\\ foo\\\\ foo\\\\\\  ...\n *\n *  pattern:    \\(foo\\)[1-3]\\1  (same as foo[1-3]foo)\n *  compile:    BOT 1 CHR f CHR o CHR o EOT 1 CCL bitset REF 1 END\n *  matches:    foo1foo foo2foo foo3foo\n *\n *  pattern:    \\(fo.*\\)-\\1\n *  compile:    BOT 1 CHR f CHR o CLO ANY END EOT 1 CHR - REF 1 END\n *  matches:    foo-foo fo-fo fob-fob foobar-foobar ...\n */\n\n#include <stdlib.h>\n\n#include <stdexcept>\n#include <string>\n#include <algorithm>\n\n#include \"Position.h\"\n#include \"CharClassify.h\"\n#include \"RESearch.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#define OKP     1\n#define NOP     0\n\n#define CHR     1\n#define ANY     2\n#define CCL     3\n#define BOL     4\n#define EOL     5\n#define BOT     6\n#define EOT     7\n#define BOW     8\n#define EOW     9\n#define REF     10\n#define CLO     11\n#define CLQ     12 /* 0 to 1 closure */\n#define LCLO    13 /* lazy closure */\n\n#define END     0\n\n/*\n * The following defines are not meant to be changeable.\n * They are for readability only.\n */\n#define BLKIND  0370\n#define BITIND  07\n\nconst char bitarr[] = { 1, 2, 4, 8, 16, 32, 64, '\\200' };\n\n#define badpat(x)\t(*nfa = END, x)\n\n/*\n * Character classification table for word boundary operators BOW\n * and EOW is passed in by the creator of this object (Scintilla\n * Document). The Document default state is that word chars are:\n * 0-9, a-z, A-Z and _\n */\n\nRESearch::RESearch(CharClassify *charClassTable) {\n\tfailure = 0;\n\tcharClass = charClassTable;\n\tsta = NOP;                  /* status of lastpat */\n\tbol = 0;\n\tstd::fill(bittab, bittab + BITBLK, 0);\n\tstd::fill(tagstk, tagstk + MAXTAG, 0);\n\tstd::fill(nfa, nfa + MAXNFA, 0);\n\tClear();\n}\n\nRESearch::~RESearch() {\n\tClear();\n}\n\nvoid RESearch::Clear() {\n\tfor (int i = 0; i < MAXTAG; i++) {\n\t\tpat[i].clear();\n\t\tbopat[i] = NOTFOUND;\n\t\teopat[i] = NOTFOUND;\n\t}\n}\n\nvoid RESearch::GrabMatches(CharacterIndexer &ci) {\n\tfor (unsigned int i = 0; i < MAXTAG; i++) {\n\t\tif ((bopat[i] != NOTFOUND) && (eopat[i] != NOTFOUND)) {\n\t\t\tunsigned int len = eopat[i] - bopat[i];\n\t\t\tpat[i].resize(len);\n\t\t\tfor (unsigned int j = 0; j < len; j++)\n\t\t\t\tpat[i][j] = ci.CharAt(bopat[i] + j);\n\t\t}\n\t}\n}\n\nvoid RESearch::ChSet(unsigned char c) {\n\tbittab[((c) & BLKIND) >> 3] |= bitarr[(c) & BITIND];\n}\n\nvoid RESearch::ChSetWithCase(unsigned char c, bool caseSensitive) {\n\tif (caseSensitive) {\n\t\tChSet(c);\n\t} else {\n\t\tif ((c >= 'a') && (c <= 'z')) {\n\t\t\tChSet(c);\n\t\t\tChSet(static_cast<unsigned char>(c - 'a' + 'A'));\n\t\t} else if ((c >= 'A') && (c <= 'Z')) {\n\t\t\tChSet(c);\n\t\t\tChSet(static_cast<unsigned char>(c - 'A' + 'a'));\n\t\t} else {\n\t\t\tChSet(c);\n\t\t}\n\t}\n}\n\nstatic unsigned char escapeValue(unsigned char ch) {\n\tswitch (ch) {\n\tcase 'a':\treturn '\\a';\n\tcase 'b':\treturn '\\b';\n\tcase 'f':\treturn '\\f';\n\tcase 'n':\treturn '\\n';\n\tcase 'r':\treturn '\\r';\n\tcase 't':\treturn '\\t';\n\tcase 'v':\treturn '\\v';\n\t}\n\treturn 0;\n}\n\nstatic int GetHexaChar(unsigned char hd1, unsigned char hd2) {\n\tint hexValue = 0;\n\tif (hd1 >= '0' && hd1 <= '9') {\n\t\thexValue += 16 * (hd1 - '0');\n\t} else if (hd1 >= 'A' && hd1 <= 'F') {\n\t\thexValue += 16 * (hd1 - 'A' + 10);\n\t} else if (hd1 >= 'a' && hd1 <= 'f') {\n\t\thexValue += 16 * (hd1 - 'a' + 10);\n\t} else {\n\t\treturn -1;\n\t}\n\tif (hd2 >= '0' && hd2 <= '9') {\n\t\thexValue += hd2 - '0';\n\t} else if (hd2 >= 'A' && hd2 <= 'F') {\n\t\thexValue += hd2 - 'A' + 10;\n\t} else if (hd2 >= 'a' && hd2 <= 'f') {\n\t\thexValue += hd2 - 'a' + 10;\n\t} else {\n\t\treturn -1;\n\t}\n\treturn hexValue;\n}\n\n/**\n * Called when the parser finds a backslash not followed\n * by a valid expression (like \\( in non-Posix mode).\n * @param pattern : pointer on the char after the backslash.\n * @param incr : (out) number of chars to skip after expression evaluation.\n * @return the char if it resolves to a simple char,\n * or -1 for a char class. In this case, bittab is changed.\n */\nint RESearch::GetBackslashExpression(\n    const char *pattern,\n    int &incr) {\n\t// Since error reporting is primitive and messages are not used anyway,\n\t// I choose to interpret unexpected syntax in a logical way instead\n\t// of reporting errors. Otherwise, we can stick on, eg., PCRE behavior.\n\tincr = 0;\t// Most of the time, will skip the char \"naturally\".\n\tint c;\n\tint result = -1;\n\tunsigned char bsc = *pattern;\n\tif (!bsc) {\n\t\t// Avoid overrun\n\t\tresult = '\\\\';\t// \\ at end of pattern, take it literally\n\t\treturn result;\n\t}\n\n\tswitch (bsc) {\n\tcase 'a':\n\tcase 'b':\n\tcase 'n':\n\tcase 'f':\n\tcase 'r':\n\tcase 't':\n\tcase 'v':\n\t\tresult = escapeValue(bsc);\n\t\tbreak;\n\tcase 'x': {\n\t\t\tunsigned char hd1 = *(pattern + 1);\n\t\t\tunsigned char hd2 = *(pattern + 2);\n\t\t\tint hexValue = GetHexaChar(hd1, hd2);\n\t\t\tif (hexValue >= 0) {\n\t\t\t\tresult = hexValue;\n\t\t\t\tincr = 2;\t// Must skip the digits\n\t\t\t} else {\n\t\t\t\tresult = 'x';\t// \\x without 2 digits: see it as 'x'\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase 'd':\n\t\tfor (c = '0'; c <= '9'; c++) {\n\t\t\tChSet(static_cast<unsigned char>(c));\n\t\t}\n\t\tbreak;\n\tcase 'D':\n\t\tfor (c = 0; c < MAXCHR; c++) {\n\t\t\tif (c < '0' || c > '9') {\n\t\t\t\tChSet(static_cast<unsigned char>(c));\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase 's':\n\t\tChSet(' ');\n\t\tChSet('\\t');\n\t\tChSet('\\n');\n\t\tChSet('\\r');\n\t\tChSet('\\f');\n\t\tChSet('\\v');\n\t\tbreak;\n\tcase 'S':\n\t\tfor (c = 0; c < MAXCHR; c++) {\n\t\t\tif (c != ' ' && !(c >= 0x09 && c <= 0x0D)) {\n\t\t\t\tChSet(static_cast<unsigned char>(c));\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase 'w':\n\t\tfor (c = 0; c < MAXCHR; c++) {\n\t\t\tif (iswordc(static_cast<unsigned char>(c))) {\n\t\t\t\tChSet(static_cast<unsigned char>(c));\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tcase 'W':\n\t\tfor (c = 0; c < MAXCHR; c++) {\n\t\t\tif (!iswordc(static_cast<unsigned char>(c))) {\n\t\t\t\tChSet(static_cast<unsigned char>(c));\n\t\t\t}\n\t\t}\n\t\tbreak;\n\tdefault:\n\t\tresult = bsc;\n\t}\n\treturn result;\n}\n\nconst char *RESearch::Compile(const char *pattern, int length, bool caseSensitive, bool posix) {\n\tchar *mp=nfa;          /* nfa pointer       */\n\tchar *lp;              /* saved pointer     */\n\tchar *sp=nfa;          /* another one       */\n\tchar *mpMax = mp + MAXNFA - BITBLK - 10;\n\n\tint tagi = 0;          /* tag stack index   */\n\tint tagc = 1;          /* actual tag count  */\n\n\tint n;\n\tchar mask;             /* xor mask -CCL/NCL */\n\tint c1, c2, prevChar;\n\n\tif (!pattern || !length) {\n\t\tif (sta)\n\t\t\treturn 0;\n\t\telse\n\t\t\treturn badpat(\"No previous regular expression\");\n\t}\n\tsta = NOP;\n\n\tconst char *p=pattern;     /* pattern pointer   */\n\tfor (int i=0; i<length; i++, p++) {\n\t\tif (mp > mpMax)\n\t\t\treturn badpat(\"Pattern too long\");\n\t\tlp = mp;\n\t\tswitch (*p) {\n\n\t\tcase '.':               /* match any char  */\n\t\t\t*mp++ = ANY;\n\t\t\tbreak;\n\n\t\tcase '^':               /* match beginning */\n\t\t\tif (p == pattern) {\n\t\t\t\t*mp++ = BOL;\n\t\t\t} else {\n\t\t\t\t*mp++ = CHR;\n\t\t\t\t*mp++ = *p;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase '$':               /* match endofline */\n\t\t\tif (!*(p+1)) {\n\t\t\t\t*mp++ = EOL;\n\t\t\t} else {\n\t\t\t\t*mp++ = CHR;\n\t\t\t\t*mp++ = *p;\n\t\t\t}\n\t\t\tbreak;\n\n\t\tcase '[':               /* match char class */\n\t\t\t*mp++ = CCL;\n\t\t\tprevChar = 0;\n\n\t\t\ti++;\n\t\t\tif (*++p == '^') {\n\t\t\t\tmask = '\\377';\n\t\t\t\ti++;\n\t\t\t\tp++;\n\t\t\t} else {\n\t\t\t\tmask = 0;\n\t\t\t}\n\n\t\t\tif (*p == '-') {\t/* real dash */\n\t\t\t\ti++;\n\t\t\t\tprevChar = *p;\n\t\t\t\tChSet(*p++);\n\t\t\t}\n\t\t\tif (*p == ']') {\t/* real brace */\n\t\t\t\ti++;\n\t\t\t\tprevChar = *p;\n\t\t\t\tChSet(*p++);\n\t\t\t}\n\t\t\twhile (*p && *p != ']') {\n\t\t\t\tif (*p == '-') {\n\t\t\t\t\tif (prevChar < 0) {\n\t\t\t\t\t\t// Previous def. was a char class like \\d, take dash literally\n\t\t\t\t\t\tprevChar = *p;\n\t\t\t\t\t\tChSet(*p);\n\t\t\t\t\t} else if (*(p+1)) {\n\t\t\t\t\t\tif (*(p+1) != ']') {\n\t\t\t\t\t\t\tc1 = prevChar + 1;\n\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\tc2 = static_cast<unsigned char>(*++p);\n\t\t\t\t\t\t\tif (c2 == '\\\\') {\n\t\t\t\t\t\t\t\tif (!*(p+1)) {\t// End of RE\n\t\t\t\t\t\t\t\t\treturn badpat(\"Missing ]\");\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\ti++;\n\t\t\t\t\t\t\t\t\tp++;\n\t\t\t\t\t\t\t\t\tint incr;\n\t\t\t\t\t\t\t\t\tc2 = GetBackslashExpression(p, incr);\n\t\t\t\t\t\t\t\t\ti += incr;\n\t\t\t\t\t\t\t\t\tp += incr;\n\t\t\t\t\t\t\t\t\tif (c2 >= 0) {\n\t\t\t\t\t\t\t\t\t\t// Convention: \\c (c is any char) is case sensitive, whatever the option\n\t\t\t\t\t\t\t\t\t\tChSet(static_cast<unsigned char>(c2));\n\t\t\t\t\t\t\t\t\t\tprevChar = c2;\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t// bittab is already changed\n\t\t\t\t\t\t\t\t\t\tprevChar = -1;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (prevChar < 0) {\n\t\t\t\t\t\t\t\t// Char after dash is char class like \\d, take dash literally\n\t\t\t\t\t\t\t\tprevChar = '-';\n\t\t\t\t\t\t\t\tChSet('-');\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t// Put all chars between c1 and c2 included in the char set\n\t\t\t\t\t\t\t\twhile (c1 <= c2) {\n\t\t\t\t\t\t\t\t\tChSetWithCase(static_cast<unsigned char>(c1++), caseSensitive);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Dash before the ], take it literally\n\t\t\t\t\t\t\tprevChar = *p;\n\t\t\t\t\t\t\tChSet(*p);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn badpat(\"Missing ]\");\n\t\t\t\t\t}\n\t\t\t\t} else if (*p == '\\\\' && *(p+1)) {\n\t\t\t\t\ti++;\n\t\t\t\t\tp++;\n\t\t\t\t\tint incr;\n\t\t\t\t\tint c = GetBackslashExpression(p, incr);\n\t\t\t\t\ti += incr;\n\t\t\t\t\tp += incr;\n\t\t\t\t\tif (c >= 0) {\n\t\t\t\t\t\t// Convention: \\c (c is any char) is case sensitive, whatever the option\n\t\t\t\t\t\tChSet(static_cast<unsigned char>(c));\n\t\t\t\t\t\tprevChar = c;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// bittab is already changed\n\t\t\t\t\t\tprevChar = -1;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tprevChar = static_cast<unsigned char>(*p);\n\t\t\t\t\tChSetWithCase(*p, caseSensitive);\n\t\t\t\t}\n\t\t\t\ti++;\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif (!*p)\n\t\t\t\treturn badpat(\"Missing ]\");\n\n\t\t\tfor (n = 0; n < BITBLK; bittab[n++] = 0)\n\t\t\t\t*mp++ = static_cast<char>(mask ^ bittab[n]);\n\n\t\t\tbreak;\n\n\t\tcase '*':               /* match 0 or more... */\n\t\tcase '+':               /* match 1 or more... */\n\t\tcase '?':\n\t\t\tif (p == pattern)\n\t\t\t\treturn badpat(\"Empty closure\");\n\t\t\tlp = sp;\t\t/* previous opcode */\n\t\t\tif (*lp == CLO || *lp == LCLO)\t\t/* equivalence... */\n\t\t\t\tbreak;\n\t\t\tswitch (*lp) {\n\n\t\t\tcase BOL:\n\t\t\tcase BOT:\n\t\t\tcase EOT:\n\t\t\tcase BOW:\n\t\t\tcase EOW:\n\t\t\tcase REF:\n\t\t\t\treturn badpat(\"Illegal closure\");\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (*p == '+')\n\t\t\t\tfor (sp = mp; lp < sp; lp++)\n\t\t\t\t\t*mp++ = *lp;\n\n\t\t\t*mp++ = END;\n\t\t\t*mp++ = END;\n\t\t\tsp = mp;\n\n\t\t\twhile (--mp > lp)\n\t\t\t\t*mp = mp[-1];\n\t\t\tif (*p == '?')          *mp = CLQ;\n\t\t\telse if (*(p+1) == '?') *mp = LCLO;\n\t\t\telse                    *mp = CLO;\n\n\t\t\tmp = sp;\n\t\t\tbreak;\n\n\t\tcase '\\\\':              /* tags, backrefs... */\n\t\t\ti++;\n\t\t\tswitch (*++p) {\n\t\t\tcase '<':\n\t\t\t\t*mp++ = BOW;\n\t\t\t\tbreak;\n\t\t\tcase '>':\n\t\t\t\tif (*sp == BOW)\n\t\t\t\t\treturn badpat(\"Null pattern inside \\\\<\\\\>\");\n\t\t\t\t*mp++ = EOW;\n\t\t\t\tbreak;\n\t\t\tcase '1':\n\t\t\tcase '2':\n\t\t\tcase '3':\n\t\t\tcase '4':\n\t\t\tcase '5':\n\t\t\tcase '6':\n\t\t\tcase '7':\n\t\t\tcase '8':\n\t\t\tcase '9':\n\t\t\t\tn = *p-'0';\n\t\t\t\tif (tagi > 0 && tagstk[tagi] == n)\n\t\t\t\t\treturn badpat(\"Cyclical reference\");\n\t\t\t\tif (tagc > n) {\n\t\t\t\t\t*mp++ = static_cast<char>(REF);\n\t\t\t\t\t*mp++ = static_cast<char>(n);\n\t\t\t\t} else {\n\t\t\t\t\treturn badpat(\"Undetermined reference\");\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tif (!posix && *p == '(') {\n\t\t\t\t\tif (tagc < MAXTAG) {\n\t\t\t\t\t\ttagstk[++tagi] = tagc;\n\t\t\t\t\t\t*mp++ = BOT;\n\t\t\t\t\t\t*mp++ = static_cast<char>(tagc++);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn badpat(\"Too many \\\\(\\\\) pairs\");\n\t\t\t\t\t}\n\t\t\t\t} else if (!posix && *p == ')') {\n\t\t\t\t\tif (*sp == BOT)\n\t\t\t\t\t\treturn badpat(\"Null pattern inside \\\\(\\\\)\");\n\t\t\t\t\tif (tagi > 0) {\n\t\t\t\t\t\t*mp++ = static_cast<char>(EOT);\n\t\t\t\t\t\t*mp++ = static_cast<char>(tagstk[tagi--]);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn badpat(\"Unmatched \\\\)\");\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tint incr;\n\t\t\t\t\tint c = GetBackslashExpression(p, incr);\n\t\t\t\t\ti += incr;\n\t\t\t\t\tp += incr;\n\t\t\t\t\tif (c >= 0) {\n\t\t\t\t\t\t*mp++ = CHR;\n\t\t\t\t\t\t*mp++ = static_cast<unsigned char>(c);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t*mp++ = CCL;\n\t\t\t\t\t\tmask = 0;\n\t\t\t\t\t\tfor (n = 0; n < BITBLK; bittab[n++] = 0)\n\t\t\t\t\t\t\t*mp++ = static_cast<char>(mask ^ bittab[n]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\n\t\tdefault :               /* an ordinary char */\n\t\t\tif (posix && *p == '(') {\n\t\t\t\tif (tagc < MAXTAG) {\n\t\t\t\t\ttagstk[++tagi] = tagc;\n\t\t\t\t\t*mp++ = BOT;\n\t\t\t\t\t*mp++ = static_cast<char>(tagc++);\n\t\t\t\t} else {\n\t\t\t\t\treturn badpat(\"Too many () pairs\");\n\t\t\t\t}\n\t\t\t} else if (posix && *p == ')') {\n\t\t\t\tif (*sp == BOT)\n\t\t\t\t\treturn badpat(\"Null pattern inside ()\");\n\t\t\t\tif (tagi > 0) {\n\t\t\t\t\t*mp++ = static_cast<char>(EOT);\n\t\t\t\t\t*mp++ = static_cast<char>(tagstk[tagi--]);\n\t\t\t\t} else {\n\t\t\t\t\treturn badpat(\"Unmatched )\");\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tunsigned char c = *p;\n\t\t\t\tif (!c)\t// End of RE\n\t\t\t\t\tc = '\\\\';\t// We take it as raw backslash\n\t\t\t\tif (caseSensitive || !iswordc(c)) {\n\t\t\t\t\t*mp++ = CHR;\n\t\t\t\t\t*mp++ = c;\n\t\t\t\t} else {\n\t\t\t\t\t*mp++ = CCL;\n\t\t\t\t\tmask = 0;\n\t\t\t\t\tChSetWithCase(c, false);\n\t\t\t\t\tfor (n = 0; n < BITBLK; bittab[n++] = 0)\n\t\t\t\t\t\t*mp++ = static_cast<char>(mask ^ bittab[n]);\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tsp = lp;\n\t}\n\tif (tagi > 0)\n\t\treturn badpat((posix ? \"Unmatched (\" : \"Unmatched \\\\(\"));\n\t*mp = END;\n\tsta = OKP;\n\treturn 0;\n}\n\n/*\n * RESearch::Execute:\n *   execute nfa to find a match.\n *\n *  special cases: (nfa[0])\n *      BOL\n *          Match only once, starting from the\n *          beginning.\n *      CHR\n *          First locate the character without\n *          calling PMatch, and if found, call\n *          PMatch for the remaining string.\n *      END\n *          RESearch::Compile failed, poor luser did not\n *          check for it. Fail fast.\n *\n *  If a match is found, bopat[0] and eopat[0] are set\n *  to the beginning and the end of the matched fragment,\n *  respectively.\n *\n */\nint RESearch::Execute(CharacterIndexer &ci, int lp, int endp) {\n\tunsigned char c;\n\tint ep = NOTFOUND;\n\tchar *ap = nfa;\n\n\tbol = lp;\n\tfailure = 0;\n\n\tClear();\n\n\tswitch (*ap) {\n\n\tcase BOL:\t\t\t/* anchored: match from BOL only */\n\t\tep = PMatch(ci, lp, endp, ap);\n\t\tbreak;\n\tcase EOL:\t\t\t/* just searching for end of line normal path doesn't work */\n\t\tif (*(ap+1) == END) {\n\t\t\tlp = endp;\n\t\t\tep = lp;\n\t\t\tbreak;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\tcase CHR:\t\t\t/* ordinary char: locate it fast */\n\t\tc = *(ap+1);\n\t\twhile ((lp < endp) && (static_cast<unsigned char>(ci.CharAt(lp)) != c))\n\t\t\tlp++;\n\t\tif (lp >= endp)\t/* if EOS, fail, else fall through. */\n\t\t\treturn 0;\n\tdefault:\t\t\t/* regular matching all the way. */\n\t\twhile (lp < endp) {\n\t\t\tep = PMatch(ci, lp, endp, ap);\n\t\t\tif (ep != NOTFOUND)\n\t\t\t\tbreak;\n\t\t\tlp++;\n\t\t}\n\t\tbreak;\n\tcase END:\t\t\t/* munged automaton. fail always */\n\t\treturn 0;\n\t}\n\tif (ep == NOTFOUND)\n\t\treturn 0;\n\n\tbopat[0] = lp;\n\teopat[0] = ep;\n\treturn 1;\n}\n\n/*\n * PMatch: internal routine for the hard part\n *\n *  This code is partly snarfed from an early grep written by\n *  David Conroy. The backref and tag stuff, and various other\n *  innovations are by oz.\n *\n *  special case optimizations: (nfa[n], nfa[n+1])\n *      CLO ANY\n *          We KNOW .* will match everything up to the\n *          end of line. Thus, directly go to the end of\n *          line, without recursive PMatch calls. As in\n *          the other closure cases, the remaining pattern\n *          must be matched by moving backwards on the\n *          string recursively, to find a match for xy\n *          (x is \".*\" and y is the remaining pattern)\n *          where the match satisfies the LONGEST match for\n *          x followed by a match for y.\n *      CLO CHR\n *          We can again scan the string forward for the\n *          single char and at the point of failure, we\n *          execute the remaining nfa recursively, same as\n *          above.\n *\n *  At the end of a successful match, bopat[n] and eopat[n]\n *  are set to the beginning and end of subpatterns matched\n *  by tagged expressions (n = 1 to 9).\n */\n\nextern void re_fail(char *,char);\n\n#define isinset(x,y)\t((x)[((y)&BLKIND)>>3] & bitarr[(y)&BITIND])\n\n/*\n * skip values for CLO XXX to skip past the closure\n */\n\n#define ANYSKIP 2 \t/* [CLO] ANY END          */\n#define CHRSKIP 3\t/* [CLO] CHR chr END      */\n#define CCLSKIP 34\t/* [CLO] CCL 32 bytes END */\n\nint RESearch::PMatch(CharacterIndexer &ci, int lp, int endp, char *ap) {\n\tint op, c, n;\n\tint e;\t\t/* extra pointer for CLO  */\n\tint bp;\t\t/* beginning of subpat... */\n\tint ep;\t\t/* ending of subpat...    */\n\tint are;\t/* to save the line ptr.  */\n\tint llp;\t/* lazy lp for LCLO       */\n\n\twhile ((op = *ap++) != END)\n\t\tswitch (op) {\n\n\t\tcase CHR:\n\t\t\tif (ci.CharAt(lp++) != *ap++)\n\t\t\t\treturn NOTFOUND;\n\t\t\tbreak;\n\t\tcase ANY:\n\t\t\tif (lp++ >= endp)\n\t\t\t\treturn NOTFOUND;\n\t\t\tbreak;\n\t\tcase CCL:\n\t\t\tif (lp >= endp)\n\t\t\t\treturn NOTFOUND;\n\t\t\tc = ci.CharAt(lp++);\n\t\t\tif (!isinset(ap,c))\n\t\t\t\treturn NOTFOUND;\n\t\t\tap += BITBLK;\n\t\t\tbreak;\n\t\tcase BOL:\n\t\t\tif (lp != bol)\n\t\t\t\treturn NOTFOUND;\n\t\t\tbreak;\n\t\tcase EOL:\n\t\t\tif (lp < endp)\n\t\t\t\treturn NOTFOUND;\n\t\t\tbreak;\n\t\tcase BOT:\n\t\t\tbopat[static_cast<int>(*ap++)] = lp;\n\t\t\tbreak;\n\t\tcase EOT:\n\t\t\teopat[static_cast<int>(*ap++)] = lp;\n\t\t\tbreak;\n\t\tcase BOW:\n\t\t\tif ((lp!=bol && iswordc(ci.CharAt(lp-1))) || !iswordc(ci.CharAt(lp)))\n\t\t\t\treturn NOTFOUND;\n\t\t\tbreak;\n\t\tcase EOW:\n\t\t\tif (lp==bol || !iswordc(ci.CharAt(lp-1)) || iswordc(ci.CharAt(lp)))\n\t\t\t\treturn NOTFOUND;\n\t\t\tbreak;\n\t\tcase REF:\n\t\t\tn = *ap++;\n\t\t\tbp = bopat[n];\n\t\t\tep = eopat[n];\n\t\t\twhile (bp < ep)\n\t\t\t\tif (ci.CharAt(bp++) != ci.CharAt(lp++))\n\t\t\t\t\treturn NOTFOUND;\n\t\t\tbreak;\n\t\tcase LCLO:\n\t\tcase CLQ:\n\t\tcase CLO:\n\t\t\tare = lp;\n\t\t\tswitch (*ap) {\n\n\t\t\tcase ANY:\n\t\t\t\tif (op == CLO || op == LCLO)\n\t\t\t\t\twhile (lp < endp)\n\t\t\t\t\t\tlp++;\n\t\t\t\telse if (lp < endp)\n\t\t\t\t\tlp++;\n\n\t\t\t\tn = ANYSKIP;\n\t\t\t\tbreak;\n\t\t\tcase CHR:\n\t\t\t\tc = *(ap+1);\n\t\t\t\tif (op == CLO || op == LCLO)\n\t\t\t\t\twhile ((lp < endp) && (c == ci.CharAt(lp)))\n\t\t\t\t\t\tlp++;\n\t\t\t\telse if ((lp < endp) && (c == ci.CharAt(lp)))\n\t\t\t\t\tlp++;\n\t\t\t\tn = CHRSKIP;\n\t\t\t\tbreak;\n\t\t\tcase CCL:\n\t\t\t\twhile ((lp < endp) && isinset(ap+1,ci.CharAt(lp)))\n\t\t\t\t\tlp++;\n\t\t\t\tn = CCLSKIP;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tfailure = true;\n\t\t\t\t//re_fail(\"closure: bad nfa.\", *ap);\n\t\t\t\treturn NOTFOUND;\n\t\t\t}\n\t\t\tap += n;\n\n\t\t\tllp = lp;\n\t\t\te = NOTFOUND;\n\t\t\twhile (llp >= are) {\n\t\t\t\tint q;\n\t\t\t\tif ((q = PMatch(ci, llp, endp, ap)) != NOTFOUND) {\n\t\t\t\t\te = q;\n\t\t\t\t\tlp = llp;\n\t\t\t\t\tif (op != LCLO) return e;\n\t\t\t\t}\n\t\t\t\tif (*ap == END) return e;\n\t\t\t\t--llp;\n\t\t\t}\n\t\t\tif (*ap == EOT)\n\t\t\t\tPMatch(ci, lp, endp, ap);\n\t\t\treturn e;\n\t\tdefault:\n\t\t\t//re_fail(\"RESearch::Execute: bad nfa.\", static_cast<char>(op));\n\t\t\treturn NOTFOUND;\n\t\t}\n\treturn lp;\n}\n\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/RESearch.h",
    "content": "// Scintilla source code edit control\n/** @file RESearch.h\n ** Interface to the regular expression search library.\n **/\n// Written by Neil Hodgson <neilh@scintilla.org>\n// Based on the work of Ozan S. Yigit.\n// This file is in the public domain.\n\n#ifndef RESEARCH_H\n#define RESEARCH_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/*\n * The following defines are not meant to be changeable.\n * They are for readability only.\n */\n#define MAXCHR\t256\n#define CHRBIT\t8\n#define BITBLK\tMAXCHR/CHRBIT\n\nclass CharacterIndexer {\npublic:\n\tvirtual char CharAt(int index)=0;\n\tvirtual ~CharacterIndexer() {\n\t}\n};\n\nclass RESearch {\n\npublic:\n\texplicit RESearch(CharClassify *charClassTable);\n\t~RESearch();\n\tvoid Clear();\n\tvoid GrabMatches(CharacterIndexer &ci);\n\tconst char *Compile(const char *pattern, int length, bool caseSensitive, bool posix);\n\tint Execute(CharacterIndexer &ci, int lp, int endp);\n\n\tenum { MAXTAG=10 };\n\tenum { MAXNFA=4096 };\n\tenum { NOTFOUND=-1 };\n\n\tint bopat[MAXTAG];\n\tint eopat[MAXTAG];\n\tstd::string pat[MAXTAG];\n\nprivate:\n\tvoid ChSet(unsigned char c);\n\tvoid ChSetWithCase(unsigned char c, bool caseSensitive);\n\tint GetBackslashExpression(const char *pattern, int &incr);\n\n\tint PMatch(CharacterIndexer &ci, int lp, int endp, char *ap);\n\n\tint bol;\n\tint tagstk[MAXTAG];  /* subpat tag stack */\n\tchar nfa[MAXNFA];    /* automaton */\n\tint sta;\n\tunsigned char bittab[BITBLK]; /* bit table for CCL pre-set bits */\n\tint failure;\n\tCharClassify *charClass;\n\tbool iswordc(unsigned char x) const {\n\t\treturn charClass->IsWord(x);\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/RunStyles.cpp",
    "content": "/** @file RunStyles.cxx\n ** Data structure used to store sparse styles.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <stdarg.h>\n\n#include <stdexcept>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n// Find the first run at a position\nint RunStyles::RunFromPosition(int position) const {\n\tint run = starts->PartitionFromPosition(position);\n\t// Go to first element with this position\n\twhile ((run > 0) && (position == starts->PositionFromPartition(run-1))) {\n\t\trun--;\n\t}\n\treturn run;\n}\n\n// If there is no run boundary at position, insert one continuing style.\nint RunStyles::SplitRun(int position) {\n\tint run = RunFromPosition(position);\n\tint posRun = starts->PositionFromPartition(run);\n\tif (posRun < position) {\n\t\tint runStyle = ValueAt(position);\n\t\trun++;\n\t\tstarts->InsertPartition(run, position);\n\t\tstyles->InsertValue(run, 1, runStyle);\n\t}\n\treturn run;\n}\n\nvoid RunStyles::RemoveRun(int run) {\n\tstarts->RemovePartition(run);\n\tstyles->DeleteRange(run, 1);\n}\n\nvoid RunStyles::RemoveRunIfEmpty(int run) {\n\tif ((run < starts->Partitions()) && (starts->Partitions() > 1)) {\n\t\tif (starts->PositionFromPartition(run) == starts->PositionFromPartition(run+1)) {\n\t\t\tRemoveRun(run);\n\t\t}\n\t}\n}\n\nvoid RunStyles::RemoveRunIfSameAsPrevious(int run) {\n\tif ((run > 0) && (run < starts->Partitions())) {\n\t\tif (styles->ValueAt(run-1) == styles->ValueAt(run)) {\n\t\t\tRemoveRun(run);\n\t\t}\n\t}\n}\n\nRunStyles::RunStyles() {\n\tstarts = new Partitioning(8);\n\tstyles = new SplitVector<int>();\n\tstyles->InsertValue(0, 2, 0);\n}\n\nRunStyles::~RunStyles() {\n\tdelete starts;\n\tstarts = NULL;\n\tdelete styles;\n\tstyles = NULL;\n}\n\nint RunStyles::Length() const {\n\treturn starts->PositionFromPartition(starts->Partitions());\n}\n\nint RunStyles::ValueAt(int position) const {\n\treturn styles->ValueAt(starts->PartitionFromPosition(position));\n}\n\nint RunStyles::FindNextChange(int position, int end) const {\n\tint run = starts->PartitionFromPosition(position);\n\tif (run < starts->Partitions()) {\n\t\tint runChange = starts->PositionFromPartition(run);\n\t\tif (runChange > position)\n\t\t\treturn runChange;\n\t\tint nextChange = starts->PositionFromPartition(run + 1);\n\t\tif (nextChange > position) {\n\t\t\treturn nextChange;\n\t\t} else if (position < end) {\n\t\t\treturn end;\n\t\t} else {\n\t\t\treturn end + 1;\n\t\t}\n\t} else {\n\t\treturn end + 1;\n\t}\n}\n\nint RunStyles::StartRun(int position) const {\n\treturn starts->PositionFromPartition(starts->PartitionFromPosition(position));\n}\n\nint RunStyles::EndRun(int position) const {\n\treturn starts->PositionFromPartition(starts->PartitionFromPosition(position) + 1);\n}\n\nbool RunStyles::FillRange(int &position, int value, int &fillLength) {\n\tif (fillLength <= 0) {\n\t\treturn false;\n\t}\n\tint end = position + fillLength;\n\tif (end > Length()) {\n\t\treturn false;\n\t}\n\tint runEnd = RunFromPosition(end);\n\tif (styles->ValueAt(runEnd) == value) {\n\t\t// End already has value so trim range.\n\t\tend = starts->PositionFromPartition(runEnd);\n\t\tif (position >= end) {\n\t\t\t// Whole range is already same as value so no action\n\t\t\treturn false;\n\t\t}\n\t\tfillLength = end - position;\n\t} else {\n\t\trunEnd = SplitRun(end);\n\t}\n\tint runStart = RunFromPosition(position);\n\tif (styles->ValueAt(runStart) == value) {\n\t\t// Start is in expected value so trim range.\n\t\trunStart++;\n\t\tposition = starts->PositionFromPartition(runStart);\n\t\tfillLength = end - position;\n\t} else {\n\t\tif (starts->PositionFromPartition(runStart) < position) {\n\t\t\trunStart = SplitRun(position);\n\t\t\trunEnd++;\n\t\t}\n\t}\n\tif (runStart < runEnd) {\n\t\tstyles->SetValueAt(runStart, value);\n\t\t// Remove each old run over the range\n\t\tfor (int run=runStart+1; run<runEnd; run++) {\n\t\t\tRemoveRun(runStart+1);\n\t\t}\n\t\trunEnd = RunFromPosition(end);\n\t\tRemoveRunIfSameAsPrevious(runEnd);\n\t\tRemoveRunIfSameAsPrevious(runStart);\n\t\trunEnd = RunFromPosition(end);\n\t\tRemoveRunIfEmpty(runEnd);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}\n\nvoid RunStyles::SetValueAt(int position, int value) {\n\tint len = 1;\n\tFillRange(position, value, len);\n}\n\nvoid RunStyles::InsertSpace(int position, int insertLength) {\n\tint runStart = RunFromPosition(position);\n\tif (starts->PositionFromPartition(runStart) == position) {\n\t\tint runStyle = ValueAt(position);\n\t\t// Inserting at start of run so make previous longer\n\t\tif (runStart == 0) {\n\t\t\t// Inserting at start of document so ensure 0\n\t\t\tif (runStyle) {\n\t\t\t\tstyles->SetValueAt(0, 0);\n\t\t\t\tstarts->InsertPartition(1, 0);\n\t\t\t\tstyles->InsertValue(1, 1, runStyle);\n\t\t\t\tstarts->InsertText(0, insertLength);\n\t\t\t} else {\n\t\t\t\tstarts->InsertText(runStart, insertLength);\n\t\t\t}\n\t\t} else {\n\t\t\tif (runStyle) {\n\t\t\t\tstarts->InsertText(runStart-1, insertLength);\n\t\t\t} else {\n\t\t\t\t// Insert at end of run so do not extend style\n\t\t\t\tstarts->InsertText(runStart, insertLength);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tstarts->InsertText(runStart, insertLength);\n\t}\n}\n\nvoid RunStyles::DeleteAll() {\n\tdelete starts;\n\tstarts = NULL;\n\tdelete styles;\n\tstyles = NULL;\n\tstarts = new Partitioning(8);\n\tstyles = new SplitVector<int>();\n\tstyles->InsertValue(0, 2, 0);\n}\n\nvoid RunStyles::DeleteRange(int position, int deleteLength) {\n\tint end = position + deleteLength;\n\tint runStart = RunFromPosition(position);\n\tint runEnd = RunFromPosition(end);\n\tif (runStart == runEnd) {\n\t\t// Deleting from inside one run\n\t\tstarts->InsertText(runStart, -deleteLength);\n\t\tRemoveRunIfEmpty(runStart);\n\t} else {\n\t\trunStart = SplitRun(position);\n\t\trunEnd = SplitRun(end);\n\t\tstarts->InsertText(runStart, -deleteLength);\n\t\t// Remove each old run over the range\n\t\tfor (int run=runStart; run<runEnd; run++) {\n\t\t\tRemoveRun(runStart);\n\t\t}\n\t\tRemoveRunIfEmpty(runStart);\n\t\tRemoveRunIfSameAsPrevious(runStart);\n\t}\n}\n\nint RunStyles::Runs() const {\n\treturn starts->Partitions();\n}\n\nbool RunStyles::AllSame() const {\n\tfor (int run = 1; run < starts->Partitions(); run++) {\n\t\tif (styles->ValueAt(run) != styles->ValueAt(run - 1))\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\nbool RunStyles::AllSameAs(int value) const {\n\treturn AllSame() && (styles->ValueAt(0) == value);\n}\n\nint RunStyles::Find(int value, int start) const {\n\tif (start < Length()) {\n\t\tint run = start ? RunFromPosition(start) : 0;\n\t\tif (styles->ValueAt(run) == value)\n\t\t\treturn start;\n\t\trun++;\n\t\twhile (run < starts->Partitions()) {\n\t\t\tif (styles->ValueAt(run) == value)\n\t\t\t\treturn starts->PositionFromPartition(run);\n\t\t\trun++;\n\t\t}\n\t}\n\treturn -1;\n}\n\nvoid RunStyles::Check() const {\n\tif (Length() < 0) {\n\t\tthrow std::runtime_error(\"RunStyles: Length can not be negative.\");\n\t}\n\tif (starts->Partitions() < 1) {\n\t\tthrow std::runtime_error(\"RunStyles: Must always have 1 or more partitions.\");\n\t}\n\tif (starts->Partitions() != styles->Length()-1) {\n\t\tthrow std::runtime_error(\"RunStyles: Partitions and styles different lengths.\");\n\t}\n\tint start=0;\n\twhile (start < Length()) {\n\t\tint end = EndRun(start);\n\t\tif (start >= end) {\n\t\t\tthrow std::runtime_error(\"RunStyles: Partition is 0 length.\");\n\t\t}\n\t\tstart = end;\n\t}\n\tif (styles->ValueAt(styles->Length()-1) != 0) {\n\t\tthrow std::runtime_error(\"RunStyles: Unused style at end changed.\");\n\t}\n\tfor (int j=1; j<styles->Length()-1; j++) {\n\t\tif (styles->ValueAt(j) == styles->ValueAt(j-1)) {\n\t\t\tthrow std::runtime_error(\"RunStyles: Style of a partition same as previous.\");\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/RunStyles.h",
    "content": "/** @file RunStyles.h\n ** Data structure used to store sparse styles.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n/// Styling buffer using one element for each run rather than using\n/// a filled buffer.\n\n#ifndef RUNSTYLES_H\n#define RUNSTYLES_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass RunStyles {\nprivate:\n\tPartitioning *starts;\n\tSplitVector<int> *styles;\n\tint RunFromPosition(int position) const;\n\tint SplitRun(int position);\n\tvoid RemoveRun(int run);\n\tvoid RemoveRunIfEmpty(int run);\n\tvoid RemoveRunIfSameAsPrevious(int run);\n\t// Private so RunStyles objects can not be copied\n\tRunStyles(const RunStyles &);\npublic:\n\tRunStyles();\n\t~RunStyles();\n\tint Length() const;\n\tint ValueAt(int position) const;\n\tint FindNextChange(int position, int end) const;\n\tint StartRun(int position) const;\n\tint EndRun(int position) const;\n\t// Returns true if some values may have changed\n\tbool FillRange(int &position, int value, int &fillLength);\n\tvoid SetValueAt(int position, int value);\n\tvoid InsertSpace(int position, int insertLength);\n\tvoid DeleteAll();\n\tvoid DeleteRange(int position, int deleteLength);\n\tint Runs() const;\n\tbool AllSame() const;\n\tbool AllSameAs(int value) const;\n\tint Find(int value, int start) const;\n\n\tvoid Check() const;\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/SciTE.properties",
    "content": "# SciTE.properties is the per directory local options file and can be used to override\n# settings made in SciTEGlobal.properties\ncommand.build.directory.*.cxx=..\\win32\ncommand.build.directory.*.h=..\\win32\ncommand.build.*.cxx=nmake -f scintilla.mak QUIET=1\ncommand.build.*.h=nmake -f scintilla.mak QUIET=1\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/ScintillaBase.cpp",
    "content": "// Scintilla source code edit control\n/** @file ScintillaBase.cxx\n ** An enhanced subclass of Editor with calltips, autocomplete and context menu.\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n#include <stdio.h>\n#include <assert.h>\n#include <ctype.h>\n\n#include <stdexcept>\n#include <string>\n#include <vector>\n#include <map>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"ILexer.h\"\n#include \"Scintilla.h\"\n\n#ifdef SCI_LEXER\n#include \"SciLexer.h\"\n#endif\n\n#include \"PropSetSimple.h\"\n\n#ifdef SCI_LEXER\n#include \"LexerModule.h\"\n#include \"Catalogue.h\"\n#endif\n\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"ContractionState.h\"\n#include \"CellBuffer.h\"\n#include \"CallTip.h\"\n#include \"KeyMap.h\"\n#include \"Indicator.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n#include \"Style.h\"\n#include \"ViewStyle.h\"\n#include \"CharClassify.h\"\n#include \"Decoration.h\"\n#include \"CaseFolder.h\"\n#include \"Document.h\"\n#include \"Selection.h\"\n#include \"PositionCache.h\"\n#include \"EditModel.h\"\n#include \"MarginView.h\"\n#include \"EditView.h\"\n#include \"Editor.h\"\n#include \"AutoComplete.h\"\n#include \"ScintillaBase.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nScintillaBase::ScintillaBase() {\n\tdisplayPopupMenu = SC_POPUP_ALL;\n\tlistType = 0;\n\tmaxListWidth = 0;\n\tmultiAutoCMode = SC_MULTIAUTOC_ONCE;\n}\n\nScintillaBase::~ScintillaBase() {\n}\n\nvoid ScintillaBase::Finalise() {\n\tEditor::Finalise();\n\tpopup.Destroy();\n}\n\nvoid ScintillaBase::AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS) {\n\tbool isFillUp = ac.Active() && ac.IsFillUpChar(*s);\n\tif (!isFillUp) {\n\t\tEditor::AddCharUTF(s, len, treatAsDBCS);\n\t}\n\tif (ac.Active()) {\n\t\tAutoCompleteCharacterAdded(s[0]);\n\t\t// For fill ups add the character after the autocompletion has\n\t\t// triggered so containers see the key so can display a calltip.\n\t\tif (isFillUp) {\n\t\t\tEditor::AddCharUTF(s, len, treatAsDBCS);\n\t\t}\n\t}\n}\n\nvoid ScintillaBase::Command(int cmdId) {\n\n\tswitch (cmdId) {\n\n\tcase idAutoComplete:  \t// Nothing to do\n\n\t\tbreak;\n\n\tcase idCallTip:  \t// Nothing to do\n\n\t\tbreak;\n\n\tcase idcmdUndo:\n\t\tWndProc(SCI_UNDO, 0, 0);\n\t\tbreak;\n\n\tcase idcmdRedo:\n\t\tWndProc(SCI_REDO, 0, 0);\n\t\tbreak;\n\n\tcase idcmdCut:\n\t\tWndProc(SCI_CUT, 0, 0);\n\t\tbreak;\n\n\tcase idcmdCopy:\n\t\tWndProc(SCI_COPY, 0, 0);\n\t\tbreak;\n\n\tcase idcmdPaste:\n\t\tWndProc(SCI_PASTE, 0, 0);\n\t\tbreak;\n\n\tcase idcmdDelete:\n\t\tWndProc(SCI_CLEAR, 0, 0);\n\t\tbreak;\n\n\tcase idcmdSelectAll:\n\t\tWndProc(SCI_SELECTALL, 0, 0);\n\t\tbreak;\n\t}\n}\n\nint ScintillaBase::KeyCommand(unsigned int iMessage) {\n\t// Most key commands cancel autocompletion mode\n\tif (ac.Active()) {\n\t\tswitch (iMessage) {\n\t\t\t// Except for these\n\t\tcase SCI_LINEDOWN:\n\t\t\tAutoCompleteMove(1);\n\t\t\treturn 0;\n\t\tcase SCI_LINEUP:\n\t\t\tAutoCompleteMove(-1);\n\t\t\treturn 0;\n\t\tcase SCI_PAGEDOWN:\n\t\t\tAutoCompleteMove(ac.lb->GetVisibleRows());\n\t\t\treturn 0;\n\t\tcase SCI_PAGEUP:\n\t\t\tAutoCompleteMove(-ac.lb->GetVisibleRows());\n\t\t\treturn 0;\n\t\tcase SCI_VCHOME:\n\t\t\tAutoCompleteMove(-5000);\n\t\t\treturn 0;\n\t\tcase SCI_LINEEND:\n\t\t\tAutoCompleteMove(5000);\n\t\t\treturn 0;\n\t\tcase SCI_DELETEBACK:\n\t\t\tDelCharBack(true);\n\t\t\tAutoCompleteCharacterDeleted();\n\t\t\tEnsureCaretVisible();\n\t\t\treturn 0;\n\t\tcase SCI_DELETEBACKNOTLINE:\n\t\t\tDelCharBack(false);\n\t\t\tAutoCompleteCharacterDeleted();\n\t\t\tEnsureCaretVisible();\n\t\t\treturn 0;\n\t\tcase SCI_TAB:\n\t\t\tAutoCompleteCompleted(0, SC_AC_TAB);\n\t\t\treturn 0;\n\t\tcase SCI_NEWLINE:\n\t\t\tAutoCompleteCompleted(0, SC_AC_NEWLINE);\n\t\t\treturn 0;\n\n\t\tdefault:\n\t\t\tAutoCompleteCancel();\n\t\t}\n\t}\n\n\tif (ct.inCallTipMode) {\n\t\tif (\n\t\t    (iMessage != SCI_CHARLEFT) &&\n\t\t    (iMessage != SCI_CHARLEFTEXTEND) &&\n\t\t    (iMessage != SCI_CHARRIGHT) &&\n\t\t    (iMessage != SCI_CHARRIGHTEXTEND) &&\n\t\t    (iMessage != SCI_EDITTOGGLEOVERTYPE) &&\n\t\t    (iMessage != SCI_DELETEBACK) &&\n\t\t    (iMessage != SCI_DELETEBACKNOTLINE)\n\t\t) {\n\t\t\tct.CallTipCancel();\n\t\t}\n\t\tif ((iMessage == SCI_DELETEBACK) || (iMessage == SCI_DELETEBACKNOTLINE)) {\n\t\t\tif (sel.MainCaret() <= ct.posStartCallTip) {\n\t\t\t\tct.CallTipCancel();\n\t\t\t}\n\t\t}\n\t}\n\treturn Editor::KeyCommand(iMessage);\n}\n\nvoid ScintillaBase::AutoCompleteDoubleClick(void *p) {\n\tScintillaBase *sci = reinterpret_cast<ScintillaBase *>(p);\n\tsci->AutoCompleteCompleted(0, SC_AC_DOUBLECLICK);\n}\n\nvoid ScintillaBase::AutoCompleteInsert(Position startPos, int removeLen, const char *text, int textLen) {\n\tUndoGroup ug(pdoc);\n\tif (multiAutoCMode == SC_MULTIAUTOC_ONCE) {\n\t\tpdoc->DeleteChars(startPos, removeLen);\n\t\tconst int lengthInserted = pdoc->InsertString(startPos, text, textLen);\n\t\tSetEmptySelection(startPos + lengthInserted);\n\t} else {\n\t\t// SC_MULTIAUTOC_EACH\n\t\tfor (size_t r=0; r<sel.Count(); r++) {\n\t\t\tif (!RangeContainsProtected(sel.Range(r).Start().Position(),\n\t\t\t\tsel.Range(r).End().Position())) {\n\t\t\t\tint positionInsert = sel.Range(r).Start().Position();\n\t\t\t\tpositionInsert = RealizeVirtualSpace(positionInsert, sel.Range(r).caret.VirtualSpace());\n\t\t\t\tif (positionInsert - removeLen >= 0) {\n\t\t\t\t\tpositionInsert -= removeLen;\n\t\t\t\t\tpdoc->DeleteChars(positionInsert, removeLen);\n\t\t\t\t}\n\t\t\t\tconst int lengthInserted = pdoc->InsertString(positionInsert, text, textLen);\n\t\t\t\tif (lengthInserted > 0) {\n\t\t\t\t\tsel.Range(r).caret.SetPosition(positionInsert + lengthInserted);\n\t\t\t\t\tsel.Range(r).anchor.SetPosition(positionInsert + lengthInserted);\n\t\t\t\t}\n\t\t\t\tsel.Range(r).ClearVirtualSpace();\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid ScintillaBase::AutoCompleteStart(int lenEntered, const char *list) {\n\t//Platform::DebugPrintf(\"AutoComplete %s\\n\", list);\n\tct.CallTipCancel();\n\n\tif (ac.chooseSingle && (listType == 0)) {\n\t\tif (list && !strchr(list, ac.GetSeparator())) {\n\t\t\tconst char *typeSep = strchr(list, ac.GetTypesep());\n\t\t\tint lenInsert = typeSep ?\n\t\t\t\tstatic_cast<int>(typeSep-list) : static_cast<int>(strlen(list));\n\t\t\tif (ac.ignoreCase) {\n\t\t\t\t// May need to convert the case before invocation, so remove lenEntered characters\n\t\t\t\tAutoCompleteInsert(sel.MainCaret() - lenEntered, lenEntered, list, lenInsert);\n\t\t\t} else {\n\t\t\t\tAutoCompleteInsert(sel.MainCaret(), 0, list + lenEntered, lenInsert - lenEntered);\n\t\t\t}\n\t\t\tac.Cancel();\n\t\t\treturn;\n\t\t}\n\t}\n\tac.Start(wMain, idAutoComplete, sel.MainCaret(), PointMainCaret(),\n\t\t\t\tlenEntered, vs.lineHeight, IsUnicodeMode(), technology);\n\n\tPRectangle rcClient = GetClientRectangle();\n\tPoint pt = LocationFromPosition(sel.MainCaret() - lenEntered);\n\tPRectangle rcPopupBounds = wMain.GetMonitorRect(pt);\n\tif (rcPopupBounds.Height() == 0)\n\t\trcPopupBounds = rcClient;\n\n\tint heightLB = ac.heightLBDefault;\n\tint widthLB = ac.widthLBDefault;\n\tif (pt.x >= rcClient.right - widthLB) {\n\t\tHorizontalScrollTo(static_cast<int>(xOffset + pt.x - rcClient.right + widthLB));\n\t\tRedraw();\n\t\tpt = PointMainCaret();\n\t}\n\tif (wMargin.GetID()) {\n\t\tPoint ptOrigin = GetVisibleOriginInMain();\n\t\tpt.x += ptOrigin.x;\n\t\tpt.y += ptOrigin.y;\n\t}\n\tPRectangle rcac;\n\trcac.left = pt.x - ac.lb->CaretFromEdge();\n\tif (pt.y >= rcPopupBounds.bottom - heightLB &&  // Won't fit below.\n\t        pt.y >= (rcPopupBounds.bottom + rcPopupBounds.top) / 2) { // and there is more room above.\n\t\trcac.top = pt.y - heightLB;\n\t\tif (rcac.top < rcPopupBounds.top) {\n\t\t\theightLB -= static_cast<int>(rcPopupBounds.top - rcac.top);\n\t\t\trcac.top = rcPopupBounds.top;\n\t\t}\n\t} else {\n\t\trcac.top = pt.y + vs.lineHeight;\n\t}\n\trcac.right = rcac.left + widthLB;\n\trcac.bottom = static_cast<XYPOSITION>(Platform::Minimum(static_cast<int>(rcac.top) + heightLB, static_cast<int>(rcPopupBounds.bottom)));\n\tac.lb->SetPositionRelative(rcac, wMain);\n\tac.lb->SetFont(vs.styles[STYLE_DEFAULT].font);\n\tunsigned int aveCharWidth = static_cast<unsigned int>(vs.styles[STYLE_DEFAULT].aveCharWidth);\n\tac.lb->SetAverageCharWidth(aveCharWidth);\n\tac.lb->SetDoubleClickAction(AutoCompleteDoubleClick, this);\n\n\tac.SetList(list ? list : \"\");\n\n\t// Fiddle the position of the list so it is right next to the target and wide enough for all its strings\n\tPRectangle rcList = ac.lb->GetDesiredRect();\n\tint heightAlloced = static_cast<int>(rcList.bottom - rcList.top);\n\twidthLB = Platform::Maximum(widthLB, static_cast<int>(rcList.right - rcList.left));\n\tif (maxListWidth != 0)\n\t\twidthLB = Platform::Minimum(widthLB, aveCharWidth*maxListWidth);\n\t// Make an allowance for large strings in list\n\trcList.left = pt.x - ac.lb->CaretFromEdge();\n\trcList.right = rcList.left + widthLB;\n\tif (((pt.y + vs.lineHeight) >= (rcPopupBounds.bottom - heightAlloced)) &&  // Won't fit below.\n\t        ((pt.y + vs.lineHeight / 2) >= (rcPopupBounds.bottom + rcPopupBounds.top) / 2)) { // and there is more room above.\n\t\trcList.top = pt.y - heightAlloced;\n\t} else {\n\t\trcList.top = pt.y + vs.lineHeight;\n\t}\n\trcList.bottom = rcList.top + heightAlloced;\n\tac.lb->SetPositionRelative(rcList, wMain);\n\tac.Show(true);\n\tif (lenEntered != 0) {\n\t\tAutoCompleteMoveToCurrentWord();\n\t}\n}\n\nvoid ScintillaBase::AutoCompleteCancel() {\n\tif (ac.Active()) {\n\t\tSCNotification scn = {};\n\t\tscn.nmhdr.code = SCN_AUTOCCANCELLED;\n\t\tscn.wParam = 0;\n\t\tscn.listType = 0;\n\t\tNotifyParent(scn);\n\t}\n\tac.Cancel();\n}\n\nvoid ScintillaBase::AutoCompleteMove(int delta) {\n\tac.Move(delta);\n}\n\nvoid ScintillaBase::AutoCompleteMoveToCurrentWord() {\n\tstd::string wordCurrent = RangeText(ac.posStart - ac.startLen, sel.MainCaret());\n\tac.Select(wordCurrent.c_str());\n}\n\nvoid ScintillaBase::AutoCompleteCharacterAdded(char ch) {\n\tif (ac.IsFillUpChar(ch)) {\n\t\tAutoCompleteCompleted(ch, SC_AC_FILLUP);\n\t} else if (ac.IsStopChar(ch)) {\n\t\tAutoCompleteCancel();\n\t} else {\n\t\tAutoCompleteMoveToCurrentWord();\n\t}\n}\n\nvoid ScintillaBase::AutoCompleteCharacterDeleted() {\n\tif (sel.MainCaret() < ac.posStart - ac.startLen) {\n\t\tAutoCompleteCancel();\n\t} else if (ac.cancelAtStartPos && (sel.MainCaret() <= ac.posStart)) {\n\t\tAutoCompleteCancel();\n\t} else {\n\t\tAutoCompleteMoveToCurrentWord();\n\t}\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_AUTOCCHARDELETED;\n\tscn.wParam = 0;\n\tscn.listType = 0;\n\tNotifyParent(scn);\n}\n\nvoid ScintillaBase::AutoCompleteCompleted(char ch, unsigned int completionMethod) {\n\tint item = ac.GetSelection();\n\tif (item == -1) {\n\t\tAutoCompleteCancel();\n\t\treturn;\n\t}\n\tconst std::string selected = ac.GetValue(item);\n\n\tac.Show(false);\n\n\tSCNotification scn = {};\n\tscn.nmhdr.code = listType > 0 ? SCN_USERLISTSELECTION : SCN_AUTOCSELECTION;\n\tscn.message = 0;\n\tscn.ch = ch;\n\tscn.listCompletionMethod = completionMethod;\n\tscn.wParam = listType;\n\tscn.listType = listType;\n\tPosition firstPos = ac.posStart - ac.startLen;\n\tscn.position = firstPos;\n\tscn.lParam = firstPos;\n\tscn.text = selected.c_str();\n\tNotifyParent(scn);\n\n\tif (!ac.Active())\n\t\treturn;\n\tac.Cancel();\n\n\tif (listType > 0)\n\t\treturn;\n\n\tPosition endPos = sel.MainCaret();\n\tif (ac.dropRestOfWord)\n\t\tendPos = pdoc->ExtendWordSelect(endPos, 1, true);\n\tif (endPos < firstPos)\n\t\treturn;\n\tAutoCompleteInsert(firstPos, endPos - firstPos, selected.c_str(), static_cast<int>(selected.length()));\n\tSetLastXChosen();\n\n\tscn.nmhdr.code = SCN_AUTOCCOMPLETED;\n\tNotifyParent(scn);\n\n}\n\nint ScintillaBase::AutoCompleteGetCurrent() const {\n\tif (!ac.Active())\n\t\treturn -1;\n\treturn ac.GetSelection();\n}\n\nint ScintillaBase::AutoCompleteGetCurrentText(char *buffer) const {\n\tif (ac.Active()) {\n\t\tint item = ac.GetSelection();\n\t\tif (item != -1) {\n\t\t\tconst std::string selected = ac.GetValue(item);\n\t\t\tif (buffer != NULL)\n\t\t\t\tmemcpy(buffer, selected.c_str(), selected.length()+1);\n\t\t\treturn static_cast<int>(selected.length());\n\t\t}\n\t}\n\tif (buffer != NULL)\n\t\t*buffer = '\\0';\n\treturn 0;\n}\n\nvoid ScintillaBase::CallTipShow(Point pt, const char *defn) {\n\tac.Cancel();\n\t// If container knows about STYLE_CALLTIP then use it in place of the\n\t// STYLE_DEFAULT for the face name, size and character set. Also use it\n\t// for the foreground and background colour.\n\tint ctStyle = ct.UseStyleCallTip() ? STYLE_CALLTIP : STYLE_DEFAULT;\n\tif (ct.UseStyleCallTip()) {\n\t\tct.SetForeBack(vs.styles[STYLE_CALLTIP].fore, vs.styles[STYLE_CALLTIP].back);\n\t}\n\tif (wMargin.GetID()) {\n\t\tPoint ptOrigin = GetVisibleOriginInMain();\n\t\tpt.x += ptOrigin.x;\n\t\tpt.y += ptOrigin.y;\n\t}\n\tPRectangle rc = ct.CallTipStart(sel.MainCaret(), pt,\n\t\tvs.lineHeight,\n\t\tdefn,\n\t\tvs.styles[ctStyle].fontName,\n\t\tvs.styles[ctStyle].sizeZoomed,\n\t\tCodePage(),\n\t\tvs.styles[ctStyle].characterSet,\n\t\tvs.technology,\n\t\twMain);\n\t// If the call-tip window would be out of the client\n\t// space\n\tPRectangle rcClient = GetClientRectangle();\n\tint offset = vs.lineHeight + static_cast<int>(rc.Height());\n\t// adjust so it displays above the text.\n\tif (rc.bottom > rcClient.bottom && rc.Height() < rcClient.Height()) {\n\t\trc.top -= offset;\n\t\trc.bottom -= offset;\n\t}\n\t// adjust so it displays below the text.\n\tif (rc.top < rcClient.top && rc.Height() < rcClient.Height()) {\n\t\trc.top += offset;\n\t\trc.bottom += offset;\n\t}\n\t// Now display the window.\n\tCreateCallTipWindow(rc);\n\tct.wCallTip.SetPositionRelative(rc, wMain);\n\tct.wCallTip.Show();\n}\n\nvoid ScintillaBase::CallTipClick() {\n\tSCNotification scn = {};\n\tscn.nmhdr.code = SCN_CALLTIPCLICK;\n\tscn.position = ct.clickPlace;\n\tNotifyParent(scn);\n}\n\nbool ScintillaBase::ShouldDisplayPopup(Point ptInWindowCoordinates) const {\n\treturn (displayPopupMenu == SC_POPUP_ALL ||\n\t\t(displayPopupMenu == SC_POPUP_TEXT && !PointInSelMargin(ptInWindowCoordinates)));\n}\n\nvoid ScintillaBase::ContextMenu(Point pt) {\n\tif (displayPopupMenu) {\n\t\tbool writable = !WndProc(SCI_GETREADONLY, 0, 0);\n\t\tpopup.CreatePopUp();\n\t\tAddToPopUp(\"Undo\", idcmdUndo, writable && pdoc->CanUndo());\n\t\tAddToPopUp(\"Redo\", idcmdRedo, writable && pdoc->CanRedo());\n\t\tAddToPopUp(\"\");\n\t\tAddToPopUp(\"Cut\", idcmdCut, writable && !sel.Empty());\n\t\tAddToPopUp(\"Copy\", idcmdCopy, !sel.Empty());\n\t\tAddToPopUp(\"Paste\", idcmdPaste, writable && WndProc(SCI_CANPASTE, 0, 0));\n\t\tAddToPopUp(\"Delete\", idcmdDelete, writable && !sel.Empty());\n\t\tAddToPopUp(\"\");\n\t\tAddToPopUp(\"Select All\", idcmdSelectAll);\n\t\tpopup.Show(pt, wMain);\n\t}\n}\n\nvoid ScintillaBase::CancelModes() {\n\tAutoCompleteCancel();\n\tct.CallTipCancel();\n\tEditor::CancelModes();\n}\n\nvoid ScintillaBase::ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) {\n\tCancelModes();\n\tEditor::ButtonDownWithModifiers(pt, curTime, modifiers);\n}\n\nvoid ScintillaBase::ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt) {\n\tButtonDownWithModifiers(pt, curTime, ModifierFlags(shift, ctrl, alt));\n}\n\nvoid ScintillaBase::RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers) {\n\tCancelModes();\n\tEditor::RightButtonDownWithModifiers(pt, curTime, modifiers);\n}\n\n#ifdef SCI_LEXER\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass LexState : public LexInterface {\n\tconst LexerModule *lexCurrent;\n\tvoid SetLexerModule(const LexerModule *lex);\n\tPropSetSimple props;\n\tint interfaceVersion;\npublic:\n\tint lexLanguage;\n\n\texplicit LexState(Document *pdoc_);\n\tvirtual ~LexState();\n\tvoid SetLexer(uptr_t wParam);\n\tvoid SetLexerLanguage(const char *languageName);\n\tconst char *DescribeWordListSets();\n\tvoid SetWordList(int n, const char *wl);\n\tconst char *GetName() const;\n\tvoid *PrivateCall(int operation, void *pointer);\n\tconst char *PropertyNames();\n\tint PropertyType(const char *name);\n\tconst char *DescribeProperty(const char *name);\n\tvoid PropSet(const char *key, const char *val);\n\tconst char *PropGet(const char *key) const;\n\tint PropGetInt(const char *key, int defaultValue=0) const;\n\tint PropGetExpanded(const char *key, char *result) const;\n\n\tint LineEndTypesSupported();\n\tint AllocateSubStyles(int styleBase, int numberStyles);\n\tint SubStylesStart(int styleBase);\n\tint SubStylesLength(int styleBase);\n\tint StyleFromSubStyle(int subStyle);\n\tint PrimaryStyleFromStyle(int style);\n\tvoid FreeSubStyles();\n\tvoid SetIdentifiers(int style, const char *identifiers);\n\tint DistanceToSecondaryStyles();\n\tconst char *GetSubStyleBases();\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\nLexState::LexState(Document *pdoc_) : LexInterface(pdoc_) {\n\tlexCurrent = 0;\n\tperformingStyle = false;\n\tinterfaceVersion = lvOriginal;\n\tlexLanguage = SCLEX_CONTAINER;\n}\n\nLexState::~LexState() {\n\tif (instance) {\n\t\tinstance->Release();\n\t\tinstance = 0;\n\t}\n}\n\nLexState *ScintillaBase::DocumentLexState() {\n\tif (!pdoc->pli) {\n\t\tpdoc->pli = new LexState(pdoc);\n\t}\n\treturn static_cast<LexState *>(pdoc->pli);\n}\n\nvoid LexState::SetLexerModule(const LexerModule *lex) {\n\tif (lex != lexCurrent) {\n\t\tif (instance) {\n\t\t\tinstance->Release();\n\t\t\tinstance = 0;\n\t\t}\n\t\tinterfaceVersion = lvOriginal;\n\t\tlexCurrent = lex;\n\t\tif (lexCurrent) {\n\t\t\tinstance = lexCurrent->Create();\n\t\t\tinterfaceVersion = instance->Version();\n\t\t}\n\t\tpdoc->LexerChanged();\n\t}\n}\n\nvoid LexState::SetLexer(uptr_t wParam) {\n\tlexLanguage = static_cast<int>(wParam);\n\tif (lexLanguage == SCLEX_CONTAINER) {\n\t\tSetLexerModule(0);\n\t} else {\n\t\tconst LexerModule *lex = Catalogue::Find(lexLanguage);\n\t\tif (!lex)\n\t\t\tlex = Catalogue::Find(SCLEX_NULL);\n\t\tSetLexerModule(lex);\n\t}\n}\n\nvoid LexState::SetLexerLanguage(const char *languageName) {\n\tconst LexerModule *lex = Catalogue::Find(languageName);\n\tif (!lex)\n\t\tlex = Catalogue::Find(SCLEX_NULL);\n\tif (lex)\n\t\tlexLanguage = lex->GetLanguage();\n\tSetLexerModule(lex);\n}\n\nconst char *LexState::DescribeWordListSets() {\n\tif (instance) {\n\t\treturn instance->DescribeWordListSets();\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nvoid LexState::SetWordList(int n, const char *wl) {\n\tif (instance) {\n\t\tint firstModification = instance->WordListSet(n, wl);\n\t\tif (firstModification >= 0) {\n\t\t\tpdoc->ModifiedAt(firstModification);\n\t\t}\n\t}\n}\n\nconst char *LexState::GetName() const {\n\treturn lexCurrent ? lexCurrent->languageName : \"\";\n}\n\nvoid *LexState::PrivateCall(int operation, void *pointer) {\n\tif (pdoc && instance) {\n\t\treturn instance->PrivateCall(operation, pointer);\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nconst char *LexState::PropertyNames() {\n\tif (instance) {\n\t\treturn instance->PropertyNames();\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nint LexState::PropertyType(const char *name) {\n\tif (instance) {\n\t\treturn instance->PropertyType(name);\n\t} else {\n\t\treturn SC_TYPE_BOOLEAN;\n\t}\n}\n\nconst char *LexState::DescribeProperty(const char *name) {\n\tif (instance) {\n\t\treturn instance->DescribeProperty(name);\n\t} else {\n\t\treturn 0;\n\t}\n}\n\nvoid LexState::PropSet(const char *key, const char *val) {\n\tprops.Set(key, val);\n\tif (instance) {\n\t\tint firstModification = instance->PropertySet(key, val);\n\t\tif (firstModification >= 0) {\n\t\t\tpdoc->ModifiedAt(firstModification);\n\t\t}\n\t}\n}\n\nconst char *LexState::PropGet(const char *key) const {\n\treturn props.Get(key);\n}\n\nint LexState::PropGetInt(const char *key, int defaultValue) const {\n\treturn props.GetInt(key, defaultValue);\n}\n\nint LexState::PropGetExpanded(const char *key, char *result) const {\n\treturn props.GetExpanded(key, result);\n}\n\nint LexState::LineEndTypesSupported() {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\treturn static_cast<ILexerWithSubStyles *>(instance)->LineEndTypesSupported();\n\t}\n\treturn 0;\n}\n\nint LexState::AllocateSubStyles(int styleBase, int numberStyles) {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\treturn static_cast<ILexerWithSubStyles *>(instance)->AllocateSubStyles(styleBase, numberStyles);\n\t}\n\treturn -1;\n}\n\nint LexState::SubStylesStart(int styleBase) {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\treturn static_cast<ILexerWithSubStyles *>(instance)->SubStylesStart(styleBase);\n\t}\n\treturn -1;\n}\n\nint LexState::SubStylesLength(int styleBase) {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\treturn static_cast<ILexerWithSubStyles *>(instance)->SubStylesLength(styleBase);\n\t}\n\treturn 0;\n}\n\nint LexState::StyleFromSubStyle(int subStyle) {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\treturn static_cast<ILexerWithSubStyles *>(instance)->StyleFromSubStyle(subStyle);\n\t}\n\treturn 0;\n}\n\nint LexState::PrimaryStyleFromStyle(int style) {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\treturn static_cast<ILexerWithSubStyles *>(instance)->PrimaryStyleFromStyle(style);\n\t}\n\treturn 0;\n}\n\nvoid LexState::FreeSubStyles() {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\tstatic_cast<ILexerWithSubStyles *>(instance)->FreeSubStyles();\n\t}\n}\n\nvoid LexState::SetIdentifiers(int style, const char *identifiers) {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\tstatic_cast<ILexerWithSubStyles *>(instance)->SetIdentifiers(style, identifiers);\n\t\tpdoc->ModifiedAt(0);\n\t}\n}\n\nint LexState::DistanceToSecondaryStyles() {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\treturn static_cast<ILexerWithSubStyles *>(instance)->DistanceToSecondaryStyles();\n\t}\n\treturn 0;\n}\n\nconst char *LexState::GetSubStyleBases() {\n\tif (instance && (interfaceVersion >= lvSubStyles)) {\n\t\treturn static_cast<ILexerWithSubStyles *>(instance)->GetSubStyleBases();\n\t}\n\treturn \"\";\n}\n\n#endif\n\nvoid ScintillaBase::NotifyStyleToNeeded(int endStyleNeeded) {\n#ifdef SCI_LEXER\n\tif (DocumentLexState()->lexLanguage != SCLEX_CONTAINER) {\n\t\tint lineEndStyled = pdoc->LineFromPosition(pdoc->GetEndStyled());\n\t\tint endStyled = pdoc->LineStart(lineEndStyled);\n\t\tDocumentLexState()->Colourise(endStyled, endStyleNeeded);\n\t\treturn;\n\t}\n#endif\n\tEditor::NotifyStyleToNeeded(endStyleNeeded);\n}\n\nvoid ScintillaBase::NotifyLexerChanged(Document *, void *) {\n#ifdef SCI_LEXER\n\tvs.EnsureStyle(0xff);\n#endif\n}\n\nsptr_t ScintillaBase::WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam) {\n\tswitch (iMessage) {\n\tcase SCI_AUTOCSHOW:\n\t\tlistType = 0;\n\t\tAutoCompleteStart(static_cast<int>(wParam), reinterpret_cast<const char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_AUTOCCANCEL:\n\t\tac.Cancel();\n\t\tbreak;\n\n\tcase SCI_AUTOCACTIVE:\n\t\treturn ac.Active();\n\n\tcase SCI_AUTOCPOSSTART:\n\t\treturn ac.posStart;\n\n\tcase SCI_AUTOCCOMPLETE:\n\t\tAutoCompleteCompleted(0, SC_AC_COMMAND);\n\t\tbreak;\n\n\tcase SCI_AUTOCSETSEPARATOR:\n\t\tac.SetSeparator(static_cast<char>(wParam));\n\t\tbreak;\n\n\tcase SCI_AUTOCGETSEPARATOR:\n\t\treturn ac.GetSeparator();\n\n\tcase SCI_AUTOCSTOPS:\n\t\tac.SetStopChars(reinterpret_cast<char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_AUTOCSELECT:\n\t\tac.Select(reinterpret_cast<char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_AUTOCGETCURRENT:\n\t\treturn AutoCompleteGetCurrent();\n\n\tcase SCI_AUTOCGETCURRENTTEXT:\n\t\treturn AutoCompleteGetCurrentText(reinterpret_cast<char *>(lParam));\n\n\tcase SCI_AUTOCSETCANCELATSTART:\n\t\tac.cancelAtStartPos = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_AUTOCGETCANCELATSTART:\n\t\treturn ac.cancelAtStartPos;\n\n\tcase SCI_AUTOCSETFILLUPS:\n\t\tac.SetFillUpChars(reinterpret_cast<char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_AUTOCSETCHOOSESINGLE:\n\t\tac.chooseSingle = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_AUTOCGETCHOOSESINGLE:\n\t\treturn ac.chooseSingle;\n\n\tcase SCI_AUTOCSETIGNORECASE:\n\t\tac.ignoreCase = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_AUTOCGETIGNORECASE:\n\t\treturn ac.ignoreCase;\n\n\tcase SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR:\n\t\tac.ignoreCaseBehaviour = static_cast<unsigned int>(wParam);\n\t\tbreak;\n\n\tcase SCI_AUTOCGETCASEINSENSITIVEBEHAVIOUR:\n\t\treturn ac.ignoreCaseBehaviour;\n\n\tcase SCI_AUTOCSETMULTI:\n\t\tmultiAutoCMode = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_AUTOCGETMULTI:\n\t\treturn multiAutoCMode;\n\n\tcase SCI_AUTOCSETORDER:\n\t\tac.autoSort = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_AUTOCGETORDER:\n\t\treturn ac.autoSort;\n\n\tcase SCI_USERLISTSHOW:\n\t\tlistType = static_cast<int>(wParam);\n\t\tAutoCompleteStart(0, reinterpret_cast<const char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_AUTOCSETAUTOHIDE:\n\t\tac.autoHide = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_AUTOCGETAUTOHIDE:\n\t\treturn ac.autoHide;\n\n\tcase SCI_AUTOCSETDROPRESTOFWORD:\n\t\tac.dropRestOfWord = wParam != 0;\n\t\tbreak;\n\n\tcase SCI_AUTOCGETDROPRESTOFWORD:\n\t\treturn ac.dropRestOfWord;\n\n\tcase SCI_AUTOCSETMAXHEIGHT:\n\t\tac.lb->SetVisibleRows(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_AUTOCGETMAXHEIGHT:\n\t\treturn ac.lb->GetVisibleRows();\n\n\tcase SCI_AUTOCSETMAXWIDTH:\n\t\tmaxListWidth = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_AUTOCGETMAXWIDTH:\n\t\treturn maxListWidth;\n\n\tcase SCI_REGISTERIMAGE:\n\t\tac.lb->RegisterImage(static_cast<int>(wParam), reinterpret_cast<const char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_REGISTERRGBAIMAGE:\n\t\tac.lb->RegisterRGBAImage(static_cast<int>(wParam), static_cast<int>(sizeRGBAImage.x), static_cast<int>(sizeRGBAImage.y),\n\t\t\treinterpret_cast<unsigned char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_CLEARREGISTEREDIMAGES:\n\t\tac.lb->ClearRegisteredImages();\n\t\tbreak;\n\n\tcase SCI_AUTOCSETTYPESEPARATOR:\n\t\tac.SetTypesep(static_cast<char>(wParam));\n\t\tbreak;\n\n\tcase SCI_AUTOCGETTYPESEPARATOR:\n\t\treturn ac.GetTypesep();\n\n\tcase SCI_CALLTIPSHOW:\n\t\tCallTipShow(LocationFromPosition(static_cast<int>(wParam)),\n\t\t\treinterpret_cast<const char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_CALLTIPCANCEL:\n\t\tct.CallTipCancel();\n\t\tbreak;\n\n\tcase SCI_CALLTIPACTIVE:\n\t\treturn ct.inCallTipMode;\n\n\tcase SCI_CALLTIPPOSSTART:\n\t\treturn ct.posStartCallTip;\n\n\tcase SCI_CALLTIPSETPOSSTART:\n\t\tct.posStartCallTip = static_cast<int>(wParam);\n\t\tbreak;\n\n\tcase SCI_CALLTIPSETHLT:\n\t\tct.SetHighlight(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\tbreak;\n\n\tcase SCI_CALLTIPSETBACK:\n\t\tct.colourBG = ColourDesired(static_cast<long>(wParam));\n\t\tvs.styles[STYLE_CALLTIP].back = ct.colourBG;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_CALLTIPSETFORE:\n\t\tct.colourUnSel = ColourDesired(static_cast<long>(wParam));\n\t\tvs.styles[STYLE_CALLTIP].fore = ct.colourUnSel;\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_CALLTIPSETFOREHLT:\n\t\tct.colourSel = ColourDesired(static_cast<long>(wParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_CALLTIPUSESTYLE:\n\t\tct.SetTabSize(static_cast<int>(wParam));\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_CALLTIPSETPOSITION:\n\t\tct.SetPosition(wParam != 0);\n\t\tInvalidateStyleRedraw();\n\t\tbreak;\n\n\tcase SCI_USEPOPUP:\n\t\tdisplayPopupMenu = static_cast<int>(wParam);\n\t\tbreak;\n\n#ifdef SCI_LEXER\n\tcase SCI_SETLEXER:\n\t\tDocumentLexState()->SetLexer(static_cast<int>(wParam));\n\t\tbreak;\n\n\tcase SCI_GETLEXER:\n\t\treturn DocumentLexState()->lexLanguage;\n\n\tcase SCI_COLOURISE:\n\t\tif (DocumentLexState()->lexLanguage == SCLEX_CONTAINER) {\n\t\t\tpdoc->ModifiedAt(static_cast<int>(wParam));\n\t\t\tNotifyStyleToNeeded((lParam == -1) ? pdoc->Length() : static_cast<int>(lParam));\n\t\t} else {\n\t\t\tDocumentLexState()->Colourise(static_cast<int>(wParam), static_cast<int>(lParam));\n\t\t}\n\t\tRedraw();\n\t\tbreak;\n\n\tcase SCI_SETPROPERTY:\n\t\tDocumentLexState()->PropSet(reinterpret_cast<const char *>(wParam),\n\t\t          reinterpret_cast<const char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_GETPROPERTY:\n\t\treturn StringResult(lParam, DocumentLexState()->PropGet(reinterpret_cast<const char *>(wParam)));\n\n\tcase SCI_GETPROPERTYEXPANDED:\n\t\treturn DocumentLexState()->PropGetExpanded(reinterpret_cast<const char *>(wParam),\n\t\t\treinterpret_cast<char *>(lParam));\n\n\tcase SCI_GETPROPERTYINT:\n\t\treturn DocumentLexState()->PropGetInt(reinterpret_cast<const char *>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_SETKEYWORDS:\n\t\tDocumentLexState()->SetWordList(static_cast<int>(wParam), reinterpret_cast<const char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_SETLEXERLANGUAGE:\n\t\tDocumentLexState()->SetLexerLanguage(reinterpret_cast<const char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_GETLEXERLANGUAGE:\n\t\treturn StringResult(lParam, DocumentLexState()->GetName());\n\n\tcase SCI_PRIVATELEXERCALL:\n\t\treturn reinterpret_cast<sptr_t>(\n\t\t\tDocumentLexState()->PrivateCall(static_cast<int>(wParam), reinterpret_cast<void *>(lParam)));\n\n\tcase SCI_GETSTYLEBITSNEEDED:\n\t\treturn 8;\n\n\tcase SCI_PROPERTYNAMES:\n\t\treturn StringResult(lParam, DocumentLexState()->PropertyNames());\n\n\tcase SCI_PROPERTYTYPE:\n\t\treturn DocumentLexState()->PropertyType(reinterpret_cast<const char *>(wParam));\n\n\tcase SCI_DESCRIBEPROPERTY:\n\t\treturn StringResult(lParam,\n\t\t\t\t    DocumentLexState()->DescribeProperty(reinterpret_cast<const char *>(wParam)));\n\n\tcase SCI_DESCRIBEKEYWORDSETS:\n\t\treturn StringResult(lParam, DocumentLexState()->DescribeWordListSets());\n\n\tcase SCI_GETLINEENDTYPESSUPPORTED:\n\t\treturn DocumentLexState()->LineEndTypesSupported();\n\n\tcase SCI_ALLOCATESUBSTYLES:\n\t\treturn DocumentLexState()->AllocateSubStyles(static_cast<int>(wParam), static_cast<int>(lParam));\n\n\tcase SCI_GETSUBSTYLESSTART:\n\t\treturn DocumentLexState()->SubStylesStart(static_cast<int>(wParam));\n\n\tcase SCI_GETSUBSTYLESLENGTH:\n\t\treturn DocumentLexState()->SubStylesLength(static_cast<int>(wParam));\n\n\tcase SCI_GETSTYLEFROMSUBSTYLE:\n\t\treturn DocumentLexState()->StyleFromSubStyle(static_cast<int>(wParam));\n\n\tcase SCI_GETPRIMARYSTYLEFROMSTYLE:\n\t\treturn DocumentLexState()->PrimaryStyleFromStyle(static_cast<int>(wParam));\n\n\tcase SCI_FREESUBSTYLES:\n\t\tDocumentLexState()->FreeSubStyles();\n\t\tbreak;\n\n\tcase SCI_SETIDENTIFIERS:\n\t\tDocumentLexState()->SetIdentifiers(static_cast<int>(wParam),\n\t\t\t\t\t\t   reinterpret_cast<const char *>(lParam));\n\t\tbreak;\n\n\tcase SCI_DISTANCETOSECONDARYSTYLES:\n\t\treturn DocumentLexState()->DistanceToSecondaryStyles();\n\n\tcase SCI_GETSUBSTYLEBASES:\n\t\treturn StringResult(lParam, DocumentLexState()->GetSubStyleBases());\n#endif\n\n\tdefault:\n\t\treturn Editor::WndProc(iMessage, wParam, lParam);\n\t}\n\treturn 0l;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/ScintillaBase.h",
    "content": "// Scintilla source code edit control\n/** @file ScintillaBase.h\n ** Defines an enhanced subclass of Editor with calltips, autocomplete and context menu.\n **/\n// Copyright 1998-2002 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef SCINTILLABASE_H\n#define SCINTILLABASE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n#ifdef SCI_LEXER\nclass LexState;\n#endif\n\n/**\n */\nclass ScintillaBase : public Editor {\n\t// Private so ScintillaBase objects can not be copied\n\texplicit ScintillaBase(const ScintillaBase &);\n\tScintillaBase &operator=(const ScintillaBase &);\n\nprotected:\n\t/** Enumeration of commands and child windows. */\n\tenum {\n\t\tidCallTip=1,\n\t\tidAutoComplete=2,\n\n\t\tidcmdUndo=10,\n\t\tidcmdRedo=11,\n\t\tidcmdCut=12,\n\t\tidcmdCopy=13,\n\t\tidcmdPaste=14,\n\t\tidcmdDelete=15,\n\t\tidcmdSelectAll=16\n\t};\n\n\tenum { maxLenInputIME = 200 };\n\n\tint displayPopupMenu;\n\tMenu popup;\n\tAutoComplete ac;\n\n\tCallTip ct;\n\n\tint listType;\t\t\t///< 0 is an autocomplete list\n\tint maxListWidth;\t\t/// Maximum width of list, in average character widths\n\tint multiAutoCMode; /// Mode for autocompleting when multiple selections are present\n\n#ifdef SCI_LEXER\n\tLexState *DocumentLexState();\n\tvoid SetLexer(uptr_t wParam);\n\tvoid SetLexerLanguage(const char *languageName);\n\tvoid Colourise(int start, int end);\n#endif\n\n\tScintillaBase();\n\tvirtual ~ScintillaBase();\n\tvirtual void Initialise() = 0;\n\tvirtual void Finalise();\n\n\tvirtual void AddCharUTF(const char *s, unsigned int len, bool treatAsDBCS=false);\n\tvoid Command(int cmdId);\n\tvirtual void CancelModes();\n\tvirtual int KeyCommand(unsigned int iMessage);\n\n\tvoid AutoCompleteInsert(Position startPos, int removeLen, const char *text, int textLen);\n\tvoid AutoCompleteStart(int lenEntered, const char *list);\n\tvoid AutoCompleteCancel();\n\tvoid AutoCompleteMove(int delta);\n\tint AutoCompleteGetCurrent() const;\n\tint AutoCompleteGetCurrentText(char *buffer) const;\n\tvoid AutoCompleteCharacterAdded(char ch);\n\tvoid AutoCompleteCharacterDeleted();\n\tvoid AutoCompleteCompleted(char ch, unsigned int completionMethod);\n\tvoid AutoCompleteMoveToCurrentWord();\n\tstatic void AutoCompleteDoubleClick(void *p);\n\n\tvoid CallTipClick();\n\tvoid CallTipShow(Point pt, const char *defn);\n\tvirtual void CreateCallTipWindow(PRectangle rc) = 0;\n\n\tvirtual void AddToPopUp(const char *label, int cmd=0, bool enabled=true) = 0;\n\tbool ShouldDisplayPopup(Point ptInWindowCoordinates) const;\n\tvoid ContextMenu(Point pt);\n\n\tvirtual void ButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers);\n\tvirtual void ButtonDown(Point pt, unsigned int curTime, bool shift, bool ctrl, bool alt);\n\tvirtual void RightButtonDownWithModifiers(Point pt, unsigned int curTime, int modifiers);\n\n\tvoid NotifyStyleToNeeded(int endStyleNeeded);\n\tvoid NotifyLexerChanged(Document *doc, void *userData);\n\npublic:\n\t// Public so scintilla_send_message can use it\n\tvirtual sptr_t WndProc(unsigned int iMessage, uptr_t wParam, sptr_t lParam);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Selection.cpp",
    "content": "// Scintilla source code edit control\n/** @file Selection.cxx\n ** Classes maintaining the selection.\n **/\n// Copyright 2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n\n#include <stdexcept>\n#include <vector>\n#include <algorithm>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n\n#include \"Position.h\"\n#include \"Selection.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nvoid SelectionPosition::MoveForInsertDelete(bool insertion, int startChange, int length) {\n\tif (insertion) {\n\t\tif (position == startChange) {\n\t\t\tint virtualLengthRemove = std::min(length, virtualSpace);\n\t\t\tvirtualSpace -= virtualLengthRemove;\n\t\t\tposition += virtualLengthRemove;\n\t\t} else if (position > startChange) {\n\t\t\tposition += length;\n\t\t}\n\t} else {\n\t\tif (position == startChange) {\n\t\t\tvirtualSpace = 0;\n\t\t}\n\t\tif (position > startChange) {\n\t\t\tint endDeletion = startChange + length;\n\t\t\tif (position > endDeletion) {\n\t\t\t\tposition -= length;\n\t\t\t} else {\n\t\t\t\tposition = startChange;\n\t\t\t\tvirtualSpace = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nbool SelectionPosition::operator <(const SelectionPosition &other) const {\n\tif (position == other.position)\n\t\treturn virtualSpace < other.virtualSpace;\n\telse\n\t\treturn position < other.position;\n}\n\nbool SelectionPosition::operator >(const SelectionPosition &other) const {\n\tif (position == other.position)\n\t\treturn virtualSpace > other.virtualSpace;\n\telse\n\t\treturn position > other.position;\n}\n\nbool SelectionPosition::operator <=(const SelectionPosition &other) const {\n\tif (position == other.position && virtualSpace == other.virtualSpace)\n\t\treturn true;\n\telse\n\t\treturn other > *this;\n}\n\nbool SelectionPosition::operator >=(const SelectionPosition &other) const {\n\tif (position == other.position && virtualSpace == other.virtualSpace)\n\t\treturn true;\n\telse\n\t\treturn *this > other;\n}\n\nint SelectionRange::Length() const {\n\tif (anchor > caret) {\n\t\treturn anchor.Position() - caret.Position();\n\t} else {\n\t\treturn caret.Position() - anchor.Position();\n\t}\n}\n\nvoid SelectionRange::MoveForInsertDelete(bool insertion, int startChange, int length) {\n\tcaret.MoveForInsertDelete(insertion, startChange, length);\n\tanchor.MoveForInsertDelete(insertion, startChange, length);\n}\n\nbool SelectionRange::Contains(int pos) const {\n\tif (anchor > caret)\n\t\treturn (pos >= caret.Position()) && (pos <= anchor.Position());\n\telse\n\t\treturn (pos >= anchor.Position()) && (pos <= caret.Position());\n}\n\nbool SelectionRange::Contains(SelectionPosition sp) const {\n\tif (anchor > caret)\n\t\treturn (sp >= caret) && (sp <= anchor);\n\telse\n\t\treturn (sp >= anchor) && (sp <= caret);\n}\n\nbool SelectionRange::ContainsCharacter(int posCharacter) const {\n\tif (anchor > caret)\n\t\treturn (posCharacter >= caret.Position()) && (posCharacter < anchor.Position());\n\telse\n\t\treturn (posCharacter >= anchor.Position()) && (posCharacter < caret.Position());\n}\n\nSelectionSegment SelectionRange::Intersect(SelectionSegment check) const {\n\tSelectionSegment inOrder(caret, anchor);\n\tif ((inOrder.start <= check.end) || (inOrder.end >= check.start)) {\n\t\tSelectionSegment portion = check;\n\t\tif (portion.start < inOrder.start)\n\t\t\tportion.start = inOrder.start;\n\t\tif (portion.end > inOrder.end)\n\t\t\tportion.end = inOrder.end;\n\t\tif (portion.start > portion.end)\n\t\t\treturn SelectionSegment();\n\t\telse\n\t\t\treturn portion;\n\t} else {\n\t\treturn SelectionSegment();\n\t}\n}\n\nvoid SelectionRange::Swap() {\n\tstd::swap(caret, anchor);\n}\n\nbool SelectionRange::Trim(SelectionRange range) {\n\tSelectionPosition startRange = range.Start();\n\tSelectionPosition endRange = range.End();\n\tSelectionPosition start = Start();\n\tSelectionPosition end = End();\n\tPLATFORM_ASSERT(start <= end);\n\tPLATFORM_ASSERT(startRange <= endRange);\n\tif ((startRange <= end) && (endRange >= start)) {\n\t\tif ((start > startRange) && (end < endRange)) {\n\t\t\t// Completely covered by range -> empty at start\n\t\t\tend = start;\n\t\t} else if ((start < startRange) && (end > endRange)) {\n\t\t\t// Completely covers range -> empty at start\n\t\t\tend = start;\n\t\t} else if (start <= startRange) {\n\t\t\t// Trim end\n\t\t\tend = startRange;\n\t\t} else { //\n\t\t\tPLATFORM_ASSERT(end >= endRange);\n\t\t\t// Trim start\n\t\t\tstart = endRange;\n\t\t}\n\t\tif (anchor > caret) {\n\t\t\tcaret = start;\n\t\t\tanchor = end;\n\t\t} else {\n\t\t\tanchor = start;\n\t\t\tcaret = end;\n\t\t}\n\t\treturn Empty();\n\t} else {\n\t\treturn false;\n\t}\n}\n\n// If range is all virtual collapse to start of virtual space\nvoid SelectionRange::MinimizeVirtualSpace() {\n\tif (caret.Position() == anchor.Position()) {\n\t\tint virtualSpace = caret.VirtualSpace();\n\t\tif (virtualSpace > anchor.VirtualSpace())\n\t\t\tvirtualSpace = anchor.VirtualSpace();\n\t\tcaret.SetVirtualSpace(virtualSpace);\n\t\tanchor.SetVirtualSpace(virtualSpace);\n\t}\n}\n\nSelection::Selection() : mainRange(0), moveExtends(false), tentativeMain(false), selType(selStream) {\n\tAddSelection(SelectionRange(SelectionPosition(0)));\n}\n\nSelection::~Selection() {\n}\n\nbool Selection::IsRectangular() const {\n\treturn (selType == selRectangle) || (selType == selThin);\n}\n\nint Selection::MainCaret() const {\n\treturn ranges[mainRange].caret.Position();\n}\n\nint Selection::MainAnchor() const {\n\treturn ranges[mainRange].anchor.Position();\n}\n\nSelectionRange &Selection::Rectangular() {\n\treturn rangeRectangular;\n}\n\nSelectionSegment Selection::Limits() const {\n\tif (ranges.empty()) {\n\t\treturn SelectionSegment();\n\t} else {\n\t\tSelectionSegment sr(ranges[0].anchor, ranges[0].caret);\n\t\tfor (size_t i=1; i<ranges.size(); i++) {\n\t\t\tsr.Extend(ranges[i].anchor);\n\t\t\tsr.Extend(ranges[i].caret);\n\t\t}\n\t\treturn sr;\n\t}\n}\n\nSelectionSegment Selection::LimitsForRectangularElseMain() const {\n\tif (IsRectangular()) {\n\t\treturn Limits();\n\t} else {\n\t\treturn SelectionSegment(ranges[mainRange].caret, ranges[mainRange].anchor);\n\t}\n}\n\nsize_t Selection::Count() const {\n\treturn ranges.size();\n}\n\nsize_t Selection::Main() const {\n\treturn mainRange;\n}\n\nvoid Selection::SetMain(size_t r) {\n\tPLATFORM_ASSERT(r < ranges.size());\n\tmainRange = r;\n}\n\nSelectionRange &Selection::Range(size_t r) {\n\treturn ranges[r];\n}\n\nconst SelectionRange &Selection::Range(size_t r) const {\n\treturn ranges[r];\n}\n\nSelectionRange &Selection::RangeMain() {\n\treturn ranges[mainRange];\n}\n\nconst SelectionRange &Selection::RangeMain() const {\n\treturn ranges[mainRange];\n}\n\nSelectionPosition Selection::Start() const {\n\tif (IsRectangular()) {\n\t\treturn rangeRectangular.Start();\n\t} else {\n\t\treturn ranges[mainRange].Start();\n\t}\n}\n\nbool Selection::MoveExtends() const {\n\treturn moveExtends;\n}\n\nvoid Selection::SetMoveExtends(bool moveExtends_) {\n\tmoveExtends = moveExtends_;\n}\n\nbool Selection::Empty() const {\n\tfor (size_t i=0; i<ranges.size(); i++) {\n\t\tif (!ranges[i].Empty())\n\t\t\treturn false;\n\t}\n\treturn true;\n}\n\nSelectionPosition Selection::Last() const {\n\tSelectionPosition lastPosition;\n\tfor (size_t i=0; i<ranges.size(); i++) {\n\t\tif (lastPosition < ranges[i].caret)\n\t\t\tlastPosition = ranges[i].caret;\n\t\tif (lastPosition < ranges[i].anchor)\n\t\t\tlastPosition = ranges[i].anchor;\n\t}\n\treturn lastPosition;\n}\n\nint Selection::Length() const {\n\tint len = 0;\n\tfor (size_t i=0; i<ranges.size(); i++) {\n\t\tlen += ranges[i].Length();\n\t}\n\treturn len;\n}\n\nvoid Selection::MovePositions(bool insertion, int startChange, int length) {\n\tfor (size_t i=0; i<ranges.size(); i++) {\n\t\tranges[i].MoveForInsertDelete(insertion, startChange, length);\n\t}\n\tif (selType == selRectangle) {\n\t\trangeRectangular.MoveForInsertDelete(insertion, startChange, length);\n\t} \n}\n\nvoid Selection::TrimSelection(SelectionRange range) {\n\tfor (size_t i=0; i<ranges.size();) {\n\t\tif ((i != mainRange) && (ranges[i].Trim(range))) {\n\t\t\t// Trimmed to empty so remove\n\t\t\tfor (size_t j=i; j<ranges.size()-1; j++) {\n\t\t\t\tranges[j] = ranges[j+1];\n\t\t\t\tif (j == mainRange-1)\n\t\t\t\t\tmainRange--;\n\t\t\t}\n\t\t\tranges.pop_back();\n\t\t} else {\n\t\t\ti++;\n\t\t}\n\t}\n}\n\nvoid Selection::TrimOtherSelections(size_t r, SelectionRange range) {\n\tfor (size_t i = 0; i<ranges.size(); ++i) {\n\t\tif (i != r) {\n\t\t\tranges[i].Trim(range);\n\t\t}\n\t}\n}\n\nvoid Selection::SetSelection(SelectionRange range) {\n\tranges.clear();\n\tranges.push_back(range);\n\tmainRange = ranges.size() - 1;\n}\n\nvoid Selection::AddSelection(SelectionRange range) {\n\tTrimSelection(range);\n\tranges.push_back(range);\n\tmainRange = ranges.size() - 1;\n}\n\nvoid Selection::AddSelectionWithoutTrim(SelectionRange range) {\n\tranges.push_back(range);\n\tmainRange = ranges.size() - 1;\n}\n\nvoid Selection::DropSelection(size_t r) {\n\tif ((ranges.size() > 1) && (r < ranges.size())) {\n\t\tsize_t mainNew = mainRange;\n\t\tif (mainNew >= r) {\n\t\t\tif (mainNew == 0) {\n\t\t\t\tmainNew = ranges.size() - 2;\n\t\t\t} else {\n\t\t\t\tmainNew--;\n\t\t\t}\n\t\t}\n\t\tranges.erase(ranges.begin() + r);\n\t\tmainRange = mainNew;\n\t}\n}\n\nvoid Selection::DropAdditionalRanges() {\n\tSetSelection(RangeMain());\n}\n\nvoid Selection::TentativeSelection(SelectionRange range) {\n\tif (!tentativeMain) {\n\t\trangesSaved = ranges;\n\t}\n\tranges = rangesSaved;\n\tAddSelection(range);\n\tTrimSelection(ranges[mainRange]);\n\ttentativeMain = true;\n}\n\nvoid Selection::CommitTentative() {\n\trangesSaved.clear();\n\ttentativeMain = false;\n}\n\nint Selection::CharacterInSelection(int posCharacter) const {\n\tfor (size_t i=0; i<ranges.size(); i++) {\n\t\tif (ranges[i].ContainsCharacter(posCharacter))\n\t\t\treturn i == mainRange ? 1 : 2;\n\t}\n\treturn 0;\n}\n\nint Selection::InSelectionForEOL(int pos) const {\n\tfor (size_t i=0; i<ranges.size(); i++) {\n\t\tif (!ranges[i].Empty() && (pos > ranges[i].Start().Position()) && (pos <= ranges[i].End().Position()))\n\t\t\treturn i == mainRange ? 1 : 2;\n\t}\n\treturn 0;\n}\n\nint Selection::VirtualSpaceFor(int pos) const {\n\tint virtualSpace = 0;\n\tfor (size_t i=0; i<ranges.size(); i++) {\n\t\tif ((ranges[i].caret.Position() == pos) && (virtualSpace < ranges[i].caret.VirtualSpace()))\n\t\t\tvirtualSpace = ranges[i].caret.VirtualSpace();\n\t\tif ((ranges[i].anchor.Position() == pos) && (virtualSpace < ranges[i].anchor.VirtualSpace()))\n\t\t\tvirtualSpace = ranges[i].anchor.VirtualSpace();\n\t}\n\treturn virtualSpace;\n}\n\nvoid Selection::Clear() {\n\tranges.clear();\n\tranges.push_back(SelectionRange());\n\tmainRange = ranges.size() - 1;\n\tselType = selStream;\n\tmoveExtends = false;\n\tranges[mainRange].Reset();\n\trangeRectangular.Reset();\n}\n\nvoid Selection::RemoveDuplicates() {\n\tfor (size_t i=0; i<ranges.size()-1; i++) {\n\t\tif (ranges[i].Empty()) {\n\t\t\tsize_t j=i+1;\n\t\t\twhile (j<ranges.size()) {\n\t\t\t\tif (ranges[i] == ranges[j]) {\n\t\t\t\t\tranges.erase(ranges.begin() + j);\n\t\t\t\t\tif (mainRange >= j)\n\t\t\t\t\t\tmainRange--;\n\t\t\t\t} else {\n\t\t\t\t\tj++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid Selection::RotateMain() {\n\tmainRange = (mainRange + 1) % ranges.size();\n}\n\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Selection.h",
    "content": "// Scintilla source code edit control\n/** @file Selection.h\n ** Classes maintaining the selection.\n **/\n// Copyright 2009 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef SELECTION_H\n#define SELECTION_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nclass SelectionPosition {\n\tint position;\n\tint virtualSpace;\npublic:\n\texplicit SelectionPosition(int position_=INVALID_POSITION, int virtualSpace_=0) : position(position_), virtualSpace(virtualSpace_) {\n\t\tPLATFORM_ASSERT(virtualSpace < 800000);\n\t\tif (virtualSpace < 0)\n\t\t\tvirtualSpace = 0;\n\t}\n\tvoid Reset() {\n\t\tposition = 0;\n\t\tvirtualSpace = 0;\n\t}\n\tvoid MoveForInsertDelete(bool insertion, int startChange, int length);\n\tbool operator ==(const SelectionPosition &other) const {\n\t\treturn position == other.position && virtualSpace == other.virtualSpace;\n\t}\n\tbool operator <(const SelectionPosition &other) const;\n\tbool operator >(const SelectionPosition &other) const;\n\tbool operator <=(const SelectionPosition &other) const;\n\tbool operator >=(const SelectionPosition &other) const;\n\tint Position() const {\n\t\treturn position;\n\t}\n\tvoid SetPosition(int position_) {\n\t\tposition = position_;\n\t\tvirtualSpace = 0;\n\t}\n\tint VirtualSpace() const {\n\t\treturn virtualSpace;\n\t}\n\tvoid SetVirtualSpace(int virtualSpace_) {\n\t\tPLATFORM_ASSERT(virtualSpace_ < 800000);\n\t\tif (virtualSpace_ >= 0)\n\t\t\tvirtualSpace = virtualSpace_;\n\t}\n\tvoid Add(int increment) {\n\t\tposition = position + increment;\n\t}\n\tbool IsValid() const {\n\t\treturn position >= 0;\n\t}\n};\n\n// Ordered range to make drawing simpler\nstruct SelectionSegment {\n\tSelectionPosition start;\n\tSelectionPosition end;\n\tSelectionSegment() : start(), end() {\n\t}\n\tSelectionSegment(SelectionPosition a, SelectionPosition b) {\n\t\tif (a < b) {\n\t\t\tstart = a;\n\t\t\tend = b;\n\t\t} else {\n\t\t\tstart = b;\n\t\t\tend = a;\n\t\t}\n\t}\n\tbool Empty() const {\n\t\treturn start == end;\n\t}\n\tvoid Extend(SelectionPosition p) {\n\t\tif (start > p)\n\t\t\tstart = p;\n\t\tif (end < p)\n\t\t\tend = p;\n\t}\n};\n\nstruct SelectionRange {\n\tSelectionPosition caret;\n\tSelectionPosition anchor;\n\n\tSelectionRange() : caret(), anchor() {\n\t}\n\texplicit SelectionRange(SelectionPosition single) : caret(single), anchor(single) {\n\t}\n\texplicit SelectionRange(int single) : caret(single), anchor(single) {\n\t}\n\tSelectionRange(SelectionPosition caret_, SelectionPosition anchor_) : caret(caret_), anchor(anchor_) {\n\t}\n\tSelectionRange(int caret_, int anchor_) : caret(caret_), anchor(anchor_) {\n\t}\n\tbool Empty() const {\n\t\treturn anchor == caret;\n\t}\n\tint Length() const;\n\t// int Width() const;\t// Like Length but takes virtual space into account\n\tbool operator ==(const SelectionRange &other) const {\n\t\treturn caret == other.caret && anchor == other.anchor;\n\t}\n\tbool operator <(const SelectionRange &other) const {\n\t\treturn caret < other.caret || ((caret == other.caret) && (anchor < other.anchor));\n\t}\n\tvoid Reset() {\n\t\tanchor.Reset();\n\t\tcaret.Reset();\n\t}\n\tvoid ClearVirtualSpace() {\n\t\tanchor.SetVirtualSpace(0);\n\t\tcaret.SetVirtualSpace(0);\n\t}\n\tvoid MoveForInsertDelete(bool insertion, int startChange, int length);\n\tbool Contains(int pos) const;\n\tbool Contains(SelectionPosition sp) const;\n\tbool ContainsCharacter(int posCharacter) const;\n\tSelectionSegment Intersect(SelectionSegment check) const;\n\tSelectionPosition Start() const {\n\t\treturn (anchor < caret) ? anchor : caret;\n\t}\n\tSelectionPosition End() const {\n\t\treturn (anchor < caret) ? caret : anchor;\n\t}\n\tvoid Swap();\n\tbool Trim(SelectionRange range);\n\t// If range is all virtual collapse to start of virtual space\n\tvoid MinimizeVirtualSpace();\n};\n\nclass Selection {\n\tstd::vector<SelectionRange> ranges;\n\tstd::vector<SelectionRange> rangesSaved;\n\tSelectionRange rangeRectangular;\n\tsize_t mainRange;\n\tbool moveExtends;\n\tbool tentativeMain;\npublic:\n\tenum selTypes { noSel, selStream, selRectangle, selLines, selThin };\n\tselTypes selType;\n\n\tSelection();\n\t~Selection();\n\tbool IsRectangular() const;\n\tint MainCaret() const;\n\tint MainAnchor() const;\n\tSelectionRange &Rectangular();\n\tSelectionSegment Limits() const;\n\t// This is for when you want to move the caret in response to a\n\t// user direction command - for rectangular selections, use the range\n\t// that covers all selected text otherwise return the main selection.\n\tSelectionSegment LimitsForRectangularElseMain() const;\n\tsize_t Count() const;\n\tsize_t Main() const;\n\tvoid SetMain(size_t r);\n\tSelectionRange &Range(size_t r);\n\tconst SelectionRange &Range(size_t r) const;\n\tSelectionRange &RangeMain();\n\tconst SelectionRange &RangeMain() const;\n\tSelectionPosition Start() const;\n\tbool MoveExtends() const;\n\tvoid SetMoveExtends(bool moveExtends_);\n\tbool Empty() const;\n\tSelectionPosition Last() const;\n\tint Length() const;\n\tvoid MovePositions(bool insertion, int startChange, int length);\n\tvoid TrimSelection(SelectionRange range);\n\tvoid TrimOtherSelections(size_t r, SelectionRange range);\n\tvoid SetSelection(SelectionRange range);\n\tvoid AddSelection(SelectionRange range);\n\tvoid AddSelectionWithoutTrim(SelectionRange range);\n\tvoid DropSelection(size_t r);\n\tvoid DropAdditionalRanges();\n\tvoid TentativeSelection(SelectionRange range);\n\tvoid CommitTentative();\n\tint CharacterInSelection(int posCharacter) const;\n\tint InSelectionForEOL(int pos) const;\n\tint VirtualSpaceFor(int pos) const;\n\tvoid Clear();\n\tvoid RemoveDuplicates();\n\tvoid RotateMain();\n\tbool Tentative() const { return tentativeMain; }\n\tstd::vector<SelectionRange> RangesCopy() const {\n\t\treturn ranges;\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/SparseVector.h",
    "content": "// Scintilla source code edit control\n/** @file SparseVector.h\n ** Hold data sparsely associated with elements in a range.\n **/\n// Copyright 2016 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef SPARSEVECTOR_H\n#define SPARSEVECTOR_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n// SparseVector is similar to RunStyles but is more efficient for cases where values occur\n// for one position instead of over a range of positions.\ntemplate <typename T>\nclass SparseVector {\nprivate:\n\tPartitioning *starts;\n\tSplitVector<T> *values;\n\t// Private so SparseVector objects can not be copied\n\tSparseVector(const SparseVector &);\n\tvoid ClearValue(int partition) {\n\t\tvalues->SetValueAt(partition, T());\n\t}\n\tvoid CommonSetValueAt(int position, T value) {\n\t\t// Do the work of setting the value to allow for specialization of SetValueAt.\n\t\tassert(position < Length());\n\t\tconst int partition = starts->PartitionFromPosition(position);\n\t\tconst int startPartition = starts->PositionFromPartition(partition);\n\t\tif (value == T()) {\n\t\t\t// Setting the empty value is equivalent to deleting the position\n\t\t\tif (position == 0) {\n\t\t\t\tClearValue(partition);\n\t\t\t} else if (position == startPartition) {\n\t\t\t\t// Currently an element at this position, so remove\n\t\t\t\tClearValue(partition);\n\t\t\t\tstarts->RemovePartition(partition);\n\t\t\t\tvalues->Delete(partition);\n\t\t\t}\n\t\t\t// Else element remains empty\n\t\t} else {\n\t\t\tif (position == startPartition) {\n\t\t\t\t// Already a value at this position, so replace\n\t\t\t\tClearValue(partition);\n\t\t\t\tvalues->SetValueAt(partition, value);\n\t\t\t} else {\n\t\t\t\t// Insert a new element\n\t\t\t\tstarts->InsertPartition(partition + 1, position);\n\t\t\t\tvalues->InsertValue(partition + 1, 1, value);\n\t\t\t}\n\t\t}\n\t}\npublic:\n\tSparseVector() {\n\t\tstarts = new Partitioning(8);\n\t\tvalues = new SplitVector<T>();\n\t\tvalues->InsertValue(0, 2, T());\n\t}\n\t~SparseVector() {\n\t\tdelete starts;\n\t\tstarts = NULL;\n\t\t// starts dead here but not used by ClearValue.\n\t\tfor (int part = 0; part < values->Length(); part++) {\n\t\t\tClearValue(part);\n\t\t}\n\t\tdelete values;\n\t\tvalues = NULL;\n\t}\n\tint Length() const {\n\t\treturn starts->PositionFromPartition(starts->Partitions());\n\t}\n\tint Elements() const {\n\t\treturn starts->Partitions();\n\t}\n\tint PositionOfElement(int element) const {\n\t\treturn starts->PositionFromPartition(element);\n\t}\n\tT ValueAt(int position) const {\n\t\tassert(position < Length());\n\t\tconst int partition = starts->PartitionFromPosition(position);\n\t\tconst int startPartition = starts->PositionFromPartition(partition);\n\t\tif (startPartition == position) {\n\t\t\treturn values->ValueAt(partition);\n\t\t} else {\n\t\t\treturn T();\n\t\t}\n\t}\n\tvoid SetValueAt(int position, T value) {\n\t\tCommonSetValueAt(position, value);\n\t}\n\tvoid InsertSpace(int position, int insertLength) {\n\t\tassert(position <= Length());\t// Only operation that works at end.\n\t\tconst int partition = starts->PartitionFromPosition(position);\n\t\tconst int startPartition = starts->PositionFromPartition(partition);\n\t\tif (startPartition == position) {\n\t\t\tT valueCurrent = values->ValueAt(partition);\n\t\t\t// Inserting at start of run so make previous longer\n\t\t\tif (partition == 0) {\n\t\t\t\t// Inserting at start of document so ensure 0\n\t\t\t\tif (valueCurrent != T()) {\n\t\t\t\t\tClearValue(0);\n\t\t\t\t\tstarts->InsertPartition(1, 0);\n\t\t\t\t\tvalues->InsertValue(1, 1, valueCurrent);\n\t\t\t\t\tstarts->InsertText(0, insertLength);\n\t\t\t\t} else {\n\t\t\t\t\tstarts->InsertText(partition, insertLength);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (valueCurrent != T()) {\n\t\t\t\t\tstarts->InsertText(partition - 1, insertLength);\n\t\t\t\t} else {\n\t\t\t\t\t// Insert at end of run so do not extend style\n\t\t\t\t\tstarts->InsertText(partition, insertLength);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tstarts->InsertText(partition, insertLength);\n\t\t}\n\t}\n\tvoid DeletePosition(int position) {\n\t\tassert(position < Length());\n\t\tint partition = starts->PartitionFromPosition(position);\n\t\tconst int startPartition = starts->PositionFromPartition(partition);\n\t\tif (startPartition == position) {\n\t\t\tif (partition == 0) {\n\t\t\t\tClearValue(0);\n\t\t\t} else if (partition == starts->Partitions()) {\n\t\t\t\t// This should not be possible\n\t\t\t\tClearValue(partition);\n\t\t\t\tthrow std::runtime_error(\"SparseVector: deleting end partition.\");\n\t\t\t} else {\n\t\t\t\tClearValue(partition);\n\t\t\t\tstarts->RemovePartition(partition);\n\t\t\t\tvalues->Delete(partition);\n\t\t\t\t// Its the previous partition now that gets smaller \n\t\t\t\tpartition--;\n\t\t\t}\n\t\t}\n\t\tstarts->InsertText(partition, -1);\n\t}\n\tvoid Check() const {\n\t\tif (Length() < 0) {\n\t\t\tthrow std::runtime_error(\"SparseVector: Length can not be negative.\");\n\t\t}\n\t\tif (starts->Partitions() < 1) {\n\t\t\tthrow std::runtime_error(\"SparseVector: Must always have 1 or more partitions.\");\n\t\t}\n\t\tif (starts->Partitions() != values->Length() - 1) {\n\t\t\tthrow std::runtime_error(\"SparseVector: Partitions and values different lengths.\");\n\t\t}\n\t\t// The final element can not be set\n\t\tif (values->ValueAt(values->Length() - 1) != T()) {\n\t\t\tthrow std::runtime_error(\"SparseVector: Unused style at end changed.\");\n\t\t}\n\t}\n};\n\n// The specialization for const char * makes copies and deletes them as needed.\n\ntemplate<>\ninline void SparseVector<const char *>::ClearValue(int partition) {\n\tconst char *value = values->ValueAt(partition);\n\tdelete []value;\n\tvalues->SetValueAt(partition, NULL);\n}\n\ntemplate<>\ninline void SparseVector<const char *>::SetValueAt(int position, const char *value) {\n\t// Make a copy of the string\n\tif (value) {\n\t\tconst size_t len = strlen(value);\n\t\tchar *valueCopy = new char[len + 1]();\n\t\tstd::copy(value, value + len, valueCopy);\n\t\tCommonSetValueAt(position, valueCopy);\n\t} else {\n\t\tCommonSetValueAt(position, NULL);\n\t}\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/SplitVector.h",
    "content": "// Scintilla source code edit control\n/** @file SplitVector.h\n ** Main data structure for holding arrays that handle insertions\n ** and deletions efficiently.\n **/\n// Copyright 1998-2007 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef SPLITVECTOR_H\n#define SPLITVECTOR_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\ntemplate <typename T>\nclass SplitVector {\nprotected:\n\tT *body;\n\tint size;\n\tint lengthBody;\n\tint part1Length;\n\tint gapLength;\t/// invariant: gapLength == size - lengthBody\n\tint growSize;\n\n\t/// Move the gap to a particular position so that insertion and\n\t/// deletion at that point will not require much copying and\n\t/// hence be fast.\n\tvoid GapTo(int position) {\n\t\tif (position != part1Length) {\n\t\t\tif (position < part1Length) {\n\t\t\t\t// Moving the gap towards start so moving elements towards end\n\t\t\t\tstd::copy_backward(\n\t\t\t\t\tbody + position,\n\t\t\t\t\tbody + part1Length,\n\t\t\t\t\tbody + gapLength + part1Length);\n\t\t\t} else {\t// position > part1Length\n\t\t\t\t// Moving the gap towards end so moving elements towards start\n\t\t\t\tstd::copy(\n\t\t\t\t\tbody + part1Length + gapLength,\n\t\t\t\t\tbody + gapLength + position,\n\t\t\t\t\tbody + part1Length);\n\t\t\t}\n\t\t\tpart1Length = position;\n\t\t}\n\t}\n\n\t/// Check that there is room in the buffer for an insertion,\n\t/// reallocating if more space needed.\n\tvoid RoomFor(int insertionLength) {\n\t\tif (gapLength <= insertionLength) {\n\t\t\twhile (growSize < size / 6)\n\t\t\t\tgrowSize *= 2;\n\t\t\tReAllocate(size + insertionLength + growSize);\n\t\t}\n\t}\n\n\tvoid Init() {\n\t\tbody = NULL;\n\t\tgrowSize = 8;\n\t\tsize = 0;\n\t\tlengthBody = 0;\n\t\tpart1Length = 0;\n\t\tgapLength = 0;\n\t}\n\npublic:\n\t/// Construct a split buffer.\n\tSplitVector() {\n\t\tInit();\n\t}\n\n\t~SplitVector() {\n\t\tdelete []body;\n\t\tbody = 0;\n\t}\n\n\tint GetGrowSize() const {\n\t\treturn growSize;\n\t}\n\n\tvoid SetGrowSize(int growSize_) {\n\t\tgrowSize = growSize_;\n\t}\n\n\t/// Reallocate the storage for the buffer to be newSize and\n\t/// copy exisiting contents to the new buffer.\n\t/// Must not be used to decrease the size of the buffer.\n\tvoid ReAllocate(int newSize) {\n\t\tif (newSize < 0)\n\t\t\tthrow std::runtime_error(\"SplitVector::ReAllocate: negative size.\");\n\n\t\tif (newSize > size) {\n\t\t\t// Move the gap to the end\n\t\t\tGapTo(lengthBody);\n\t\t\tT *newBody = new T[newSize];\n\t\t\tif ((size != 0) && (body != 0)) {\n\t\t\t\tstd::copy(body, body + lengthBody, newBody);\n\t\t\t\tdelete []body;\n\t\t\t}\n\t\t\tbody = newBody;\n\t\t\tgapLength += newSize - size;\n\t\t\tsize = newSize;\n\t\t}\n\t}\n\n\t/// Retrieve the character at a particular position.\n\t/// Retrieving positions outside the range of the buffer returns 0.\n\t/// The assertions here are disabled since calling code can be\n\t/// simpler if out of range access works and returns 0.\n\tT ValueAt(int position) const {\n\t\tif (position < part1Length) {\n\t\t\t//PLATFORM_ASSERT(position >= 0);\n\t\t\tif (position < 0) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn body[position];\n\t\t\t}\n\t\t} else {\n\t\t\t//PLATFORM_ASSERT(position < lengthBody);\n\t\t\tif (position >= lengthBody) {\n\t\t\t\treturn 0;\n\t\t\t} else {\n\t\t\t\treturn body[gapLength + position];\n\t\t\t}\n\t\t}\n\t}\n\n\tvoid SetValueAt(int position, T v) {\n\t\tif (position < part1Length) {\n\t\t\tPLATFORM_ASSERT(position >= 0);\n\t\t\tif (position < 0) {\n\t\t\t\t;\n\t\t\t} else {\n\t\t\t\tbody[position] = v;\n\t\t\t}\n\t\t} else {\n\t\t\tPLATFORM_ASSERT(position < lengthBody);\n\t\t\tif (position >= lengthBody) {\n\t\t\t\t;\n\t\t\t} else {\n\t\t\t\tbody[gapLength + position] = v;\n\t\t\t}\n\t\t}\n\t}\n\n\tT &operator[](int position) const {\n\t\tPLATFORM_ASSERT(position >= 0 && position < lengthBody);\n\t\tif (position < part1Length) {\n\t\t\treturn body[position];\n\t\t} else {\n\t\t\treturn body[gapLength + position];\n\t\t}\n\t}\n\n\t/// Retrieve the length of the buffer.\n\tint Length() const {\n\t\treturn lengthBody;\n\t}\n\n\t/// Insert a single value into the buffer.\n\t/// Inserting at positions outside the current range fails.\n\tvoid Insert(int position, T v) {\n\t\tPLATFORM_ASSERT((position >= 0) && (position <= lengthBody));\n\t\tif ((position < 0) || (position > lengthBody)) {\n\t\t\treturn;\n\t\t}\n\t\tRoomFor(1);\n\t\tGapTo(position);\n\t\tbody[part1Length] = v;\n\t\tlengthBody++;\n\t\tpart1Length++;\n\t\tgapLength--;\n\t}\n\n\t/// Insert a number of elements into the buffer setting their value.\n\t/// Inserting at positions outside the current range fails.\n\tvoid InsertValue(int position, int insertLength, T v) {\n\t\tPLATFORM_ASSERT((position >= 0) && (position <= lengthBody));\n\t\tif (insertLength > 0) {\n\t\t\tif ((position < 0) || (position > lengthBody)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tRoomFor(insertLength);\n\t\t\tGapTo(position);\n\t\t\tstd::fill(&body[part1Length], &body[part1Length + insertLength], v);\n\t\t\tlengthBody += insertLength;\n\t\t\tpart1Length += insertLength;\n\t\t\tgapLength -= insertLength;\n\t\t}\n\t}\n\n\t/// Ensure at least length elements allocated,\n\t/// appending zero valued elements if needed.\n\tvoid EnsureLength(int wantedLength) {\n\t\tif (Length() < wantedLength) {\n\t\t\tInsertValue(Length(), wantedLength - Length(), 0);\n\t\t}\n\t}\n\n\t/// Insert text into the buffer from an array.\n\tvoid InsertFromArray(int positionToInsert, const T s[], int positionFrom, int insertLength) {\n\t\tPLATFORM_ASSERT((positionToInsert >= 0) && (positionToInsert <= lengthBody));\n\t\tif (insertLength > 0) {\n\t\t\tif ((positionToInsert < 0) || (positionToInsert > lengthBody)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tRoomFor(insertLength);\n\t\t\tGapTo(positionToInsert);\n\t\t\tstd::copy(s + positionFrom, s + positionFrom + insertLength, body + part1Length);\n\t\t\tlengthBody += insertLength;\n\t\t\tpart1Length += insertLength;\n\t\t\tgapLength -= insertLength;\n\t\t}\n\t}\n\n\t/// Delete one element from the buffer.\n\tvoid Delete(int position) {\n\t\tPLATFORM_ASSERT((position >= 0) && (position < lengthBody));\n\t\tif ((position < 0) || (position >= lengthBody)) {\n\t\t\treturn;\n\t\t}\n\t\tDeleteRange(position, 1);\n\t}\n\n\t/// Delete a range from the buffer.\n\t/// Deleting positions outside the current range fails.\n\tvoid DeleteRange(int position, int deleteLength) {\n\t\tPLATFORM_ASSERT((position >= 0) && (position + deleteLength <= lengthBody));\n\t\tif ((position < 0) || ((position + deleteLength) > lengthBody)) {\n\t\t\treturn;\n\t\t}\n\t\tif ((position == 0) && (deleteLength == lengthBody)) {\n\t\t\t// Full deallocation returns storage and is faster\n\t\t\tdelete []body;\n\t\t\tInit();\n\t\t} else if (deleteLength > 0) {\n\t\t\tGapTo(position);\n\t\t\tlengthBody -= deleteLength;\n\t\t\tgapLength += deleteLength;\n\t\t}\n\t}\n\n\t/// Delete all the buffer contents.\n\tvoid DeleteAll() {\n\t\tDeleteRange(0, lengthBody);\n\t}\n\n\t// Retrieve a range of elements into an array\n\tvoid GetRange(T *buffer, int position, int retrieveLength) const {\n\t\t// Split into up to 2 ranges, before and after the split then use memcpy on each.\n\t\tint range1Length = 0;\n\t\tif (position < part1Length) {\n\t\t\tint part1AfterPosition = part1Length - position;\n\t\t\trange1Length = retrieveLength;\n\t\t\tif (range1Length > part1AfterPosition)\n\t\t\t\trange1Length = part1AfterPosition;\n\t\t}\n\t\tstd::copy(body + position, body + position + range1Length, buffer);\n\t\tbuffer += range1Length;\n\t\tposition = position + range1Length + gapLength;\n\t\tint range2Length = retrieveLength - range1Length;\n\t\tstd::copy(body + position, body + position + range2Length, buffer);\n\t}\n\n\tT *BufferPointer() {\n\t\tRoomFor(1);\n\t\tGapTo(lengthBody);\n\t\tbody[lengthBody] = 0;\n\t\treturn body;\n\t}\n\n\tT *RangePointer(int position, int rangeLength) {\n\t\tif (position < part1Length) {\n\t\t\tif ((position + rangeLength) > part1Length) {\n\t\t\t\t// Range overlaps gap, so move gap to start of range.\n\t\t\t\tGapTo(position);\n\t\t\t\treturn body + position + gapLength;\n\t\t\t} else {\n\t\t\t\treturn body + position;\n\t\t\t}\n\t\t} else {\n\t\t\treturn body + position + gapLength;\n\t\t}\n\t}\n\n\tint GapPosition() const {\n\t\treturn part1Length;\n\t}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Style.cpp",
    "content": "// Scintilla source code edit control\n/** @file Style.cxx\n ** Defines the font and colour style for a class of text.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <string.h>\n\n#include <stdexcept>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n#include \"Style.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nFontAlias::FontAlias() {\n}\n\nFontAlias::FontAlias(const FontAlias &other) : Font() {\n\tSetID(other.fid);\n}\n\nFontAlias::~FontAlias() {\n\tSetID(0);\n\t// ~Font will not release the actual font resource since it is now 0\n}\n\nvoid FontAlias::MakeAlias(Font &fontOrigin) {\n\tSetID(fontOrigin.GetID());\n}\n\nvoid FontAlias::ClearFont() {\n\tSetID(0);\n}\n\nbool FontSpecification::operator==(const FontSpecification &other) const {\n\treturn fontName == other.fontName &&\n\t       weight == other.weight &&\n\t       italic == other.italic &&\n\t       size == other.size &&\n\t       characterSet == other.characterSet &&\n\t       extraFontFlag == other.extraFontFlag;\n}\n\nbool FontSpecification::operator<(const FontSpecification &other) const {\n\tif (fontName != other.fontName)\n\t\treturn fontName < other.fontName;\n\tif (weight != other.weight)\n\t\treturn weight < other.weight;\n\tif (italic != other.italic)\n\t\treturn italic == false;\n\tif (size != other.size)\n\t\treturn size < other.size;\n\tif (characterSet != other.characterSet)\n\t\treturn characterSet < other.characterSet;\n\tif (extraFontFlag != other.extraFontFlag)\n\t\treturn extraFontFlag < other.extraFontFlag;\n\treturn false;\n}\n\nFontMeasurements::FontMeasurements() {\n\tClear();\n}\n\nvoid FontMeasurements::Clear() {\n\tascent = 1;\n\tdescent = 1;\n\taveCharWidth = 1;\n\tspaceWidth = 1;\n\tsizeZoomed = 2;\n}\n\nStyle::Style() : FontSpecification() {\n\tClear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),\n\t      Platform::DefaultFontSize() * SC_FONT_SIZE_MULTIPLIER, 0, SC_CHARSET_DEFAULT,\n\t      SC_WEIGHT_NORMAL, false, false, false, caseMixed, true, true, false);\n}\n\nStyle::Style(const Style &source) : FontSpecification(), FontMeasurements() {\n\tClear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),\n\t      0, 0, 0,\n\t      SC_WEIGHT_NORMAL, false, false, false, caseMixed, true, true, false);\n\tfore = source.fore;\n\tback = source.back;\n\tcharacterSet = source.characterSet;\n\tweight = source.weight;\n\titalic = source.italic;\n\tsize = source.size;\n\tfontName = source.fontName;\n\teolFilled = source.eolFilled;\n\tunderline = source.underline;\n\tcaseForce = source.caseForce;\n\tvisible = source.visible;\n\tchangeable = source.changeable;\n\thotspot = source.hotspot;\n}\n\nStyle::~Style() {\n}\n\nStyle &Style::operator=(const Style &source) {\n\tif (this == &source)\n\t\treturn * this;\n\tClear(ColourDesired(0, 0, 0), ColourDesired(0xff, 0xff, 0xff),\n\t      0, 0, SC_CHARSET_DEFAULT,\n\t      SC_WEIGHT_NORMAL, false, false, false, caseMixed, true, true, false);\n\tfore = source.fore;\n\tback = source.back;\n\tcharacterSet = source.characterSet;\n\tweight = source.weight;\n\titalic = source.italic;\n\tsize = source.size;\n\tfontName = source.fontName;\n\teolFilled = source.eolFilled;\n\tunderline = source.underline;\n\tcaseForce = source.caseForce;\n\tvisible = source.visible;\n\tchangeable = source.changeable;\n\treturn *this;\n}\n\nvoid Style::Clear(ColourDesired fore_, ColourDesired back_, int size_,\n        const char *fontName_, int characterSet_,\n        int weight_, bool italic_, bool eolFilled_,\n        bool underline_, ecaseForced caseForce_,\n        bool visible_, bool changeable_, bool hotspot_) {\n\tfore = fore_;\n\tback = back_;\n\tcharacterSet = characterSet_;\n\tweight = weight_;\n\titalic = italic_;\n\tsize = size_;\n\tfontName = fontName_;\n\teolFilled = eolFilled_;\n\tunderline = underline_;\n\tcaseForce = caseForce_;\n\tvisible = visible_;\n\tchangeable = changeable_;\n\thotspot = hotspot_;\n\tfont.ClearFont();\n\tFontMeasurements::Clear();\n}\n\nvoid Style::ClearTo(const Style &source) {\n\tClear(\n\t    source.fore,\n\t    source.back,\n\t    source.size,\n\t    source.fontName,\n\t    source.characterSet,\n\t    source.weight,\n\t    source.italic,\n\t    source.eolFilled,\n\t    source.underline,\n\t    source.caseForce,\n\t    source.visible,\n\t    source.changeable,\n\t    source.hotspot);\n}\n\nvoid Style::Copy(Font &font_, const FontMeasurements &fm_) {\n\tfont.MakeAlias(font_);\n\t(FontMeasurements &)(*this) = fm_;\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/Style.h",
    "content": "// Scintilla source code edit control\n/** @file Style.h\n ** Defines the font and colour style for a class of text.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef STYLE_H\n#define STYLE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nstruct FontSpecification {\n\tconst char *fontName;\n\tint weight;\n\tbool italic;\n\tint size;\n\tint characterSet;\n\tint extraFontFlag;\n\tFontSpecification() :\n\t\tfontName(0),\n\t\tweight(SC_WEIGHT_NORMAL),\n\t\titalic(false),\n\t\tsize(10 * SC_FONT_SIZE_MULTIPLIER),\n\t\tcharacterSet(0),\n\t\textraFontFlag(0) {\n\t}\n\tbool operator==(const FontSpecification &other) const;\n\tbool operator<(const FontSpecification &other) const;\n};\n\n// Just like Font but only has a copy of the FontID so should not delete it\nclass FontAlias : public Font {\n\t// Private so FontAlias objects can not be assigned except for intiialization\n\tFontAlias &operator=(const FontAlias &);\npublic:\n\tFontAlias();\n\tFontAlias(const FontAlias &);\n\tvirtual ~FontAlias();\n\tvoid MakeAlias(Font &fontOrigin);\n\tvoid ClearFont();\n};\n\nstruct FontMeasurements {\n\tunsigned int ascent;\n\tunsigned int descent;\n\tXYPOSITION aveCharWidth;\n\tXYPOSITION spaceWidth;\n\tint sizeZoomed;\n\tFontMeasurements();\n\tvoid Clear();\n};\n\n/**\n */\nclass Style : public FontSpecification, public FontMeasurements {\npublic:\n\tColourDesired fore;\n\tColourDesired back;\n\tbool eolFilled;\n\tbool underline;\n\tenum ecaseForced {caseMixed, caseUpper, caseLower, caseCamel};\n\tecaseForced caseForce;\n\tbool visible;\n\tbool changeable;\n\tbool hotspot;\n\n\tFontAlias font;\n\n\tStyle();\n\tStyle(const Style &source);\n\t~Style();\n\tStyle &operator=(const Style &source);\n\tvoid Clear(ColourDesired fore_, ColourDesired back_,\n\t           int size_,\n\t           const char *fontName_, int characterSet_,\n\t           int weight_, bool italic_, bool eolFilled_,\n\t           bool underline_, ecaseForced caseForce_,\n\t           bool visible_, bool changeable_, bool hotspot_);\n\tvoid ClearTo(const Style &source);\n\tvoid Copy(Font &font_, const FontMeasurements &fm_);\n\tbool IsProtected() const { return !(changeable && visible);}\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/UniConversion.cpp",
    "content": "// Scintilla source code edit control\n/** @file UniConversion.cxx\n ** Functions to handle UTF-8 and UTF-16 strings.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n\n#include <stdexcept>\n\n#include \"UniConversion.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nunsigned int UTF8Length(const wchar_t *uptr, unsigned int tlen) {\n\tunsigned int len = 0;\n\tfor (unsigned int i = 0; i < tlen && uptr[i];) {\n\t\tunsigned int uch = uptr[i];\n\t\tif (uch < 0x80) {\n\t\t\tlen++;\n\t\t} else if (uch < 0x800) {\n\t\t\tlen += 2;\n\t\t} else if ((uch >= SURROGATE_LEAD_FIRST) &&\n\t\t\t(uch <= SURROGATE_TRAIL_LAST)) {\n\t\t\tlen += 4;\n\t\t\ti++;\n\t\t} else {\n\t\t\tlen += 3;\n\t\t}\n\t\ti++;\n\t}\n\treturn len;\n}\n\nvoid UTF8FromUTF16(const wchar_t *uptr, unsigned int tlen, char *putf, unsigned int len) {\n\tunsigned int k = 0;\n\tfor (unsigned int i = 0; i < tlen && uptr[i];) {\n\t\tunsigned int uch = uptr[i];\n\t\tif (uch < 0x80) {\n\t\t\tputf[k++] = static_cast<char>(uch);\n\t\t} else if (uch < 0x800) {\n\t\t\tputf[k++] = static_cast<char>(0xC0 | (uch >> 6));\n\t\t\tputf[k++] = static_cast<char>(0x80 | (uch & 0x3f));\n\t\t} else if ((uch >= SURROGATE_LEAD_FIRST) &&\n\t\t\t(uch <= SURROGATE_TRAIL_LAST)) {\n\t\t\t// Half a surrogate pair\n\t\t\ti++;\n\t\t\tunsigned int xch = 0x10000 + ((uch & 0x3ff) << 10) + (uptr[i] & 0x3ff);\n\t\t\tputf[k++] = static_cast<char>(0xF0 | (xch >> 18));\n\t\t\tputf[k++] = static_cast<char>(0x80 | ((xch >> 12) & 0x3f));\n\t\t\tputf[k++] = static_cast<char>(0x80 | ((xch >> 6) & 0x3f));\n\t\t\tputf[k++] = static_cast<char>(0x80 | (xch & 0x3f));\n\t\t} else {\n\t\t\tputf[k++] = static_cast<char>(0xE0 | (uch >> 12));\n\t\t\tputf[k++] = static_cast<char>(0x80 | ((uch >> 6) & 0x3f));\n\t\t\tputf[k++] = static_cast<char>(0x80 | (uch & 0x3f));\n\t\t}\n\t\ti++;\n\t}\n\tif (k < len)\n\t\tputf[k] = '\\0';\n}\n\nunsigned int UTF8CharLength(unsigned char ch) {\n\tif (ch < 0x80) {\n\t\treturn 1;\n\t} else if (ch < 0x80 + 0x40 + 0x20) {\n\t\treturn 2;\n\t} else if (ch < 0x80 + 0x40 + 0x20 + 0x10) {\n\t\treturn 3;\n\t} else {\n\t\treturn 4;\n\t}\n}\n\nsize_t UTF16Length(const char *s, size_t len) {\n\tsize_t ulen = 0;\n\tsize_t charLen;\n\tfor (size_t i = 0; i<len;) {\n\t\tunsigned char ch = static_cast<unsigned char>(s[i]);\n\t\tif (ch < 0x80) {\n\t\t\tcharLen = 1;\n\t\t} else if (ch < 0x80 + 0x40 + 0x20) {\n\t\t\tcharLen = 2;\n\t\t} else if (ch < 0x80 + 0x40 + 0x20 + 0x10) {\n\t\t\tcharLen = 3;\n\t\t} else {\n\t\t\tcharLen = 4;\n\t\t\tulen++;\n\t\t}\n\t\ti += charLen;\n\t\tulen++;\n\t}\n\treturn ulen;\n}\n\nsize_t UTF16FromUTF8(const char *s, size_t len, wchar_t *tbuf, size_t tlen) {\n\tsize_t ui = 0;\n\tconst unsigned char *us = reinterpret_cast<const unsigned char *>(s);\n\tsize_t i = 0;\n\twhile ((i<len) && (ui<tlen)) {\n\t\tunsigned char ch = us[i++];\n\t\tif (ch < 0x80) {\n\t\t\ttbuf[ui] = ch;\n\t\t} else if (ch < 0x80 + 0x40 + 0x20) {\n\t\t\ttbuf[ui] = static_cast<wchar_t>((ch & 0x1F) << 6);\n\t\t\tch = us[i++];\n\t\t\ttbuf[ui] = static_cast<wchar_t>(tbuf[ui] + (ch & 0x7F));\n\t\t} else if (ch < 0x80 + 0x40 + 0x20 + 0x10) {\n\t\t\ttbuf[ui] = static_cast<wchar_t>((ch & 0xF) << 12);\n\t\t\tch = us[i++];\n\t\t\ttbuf[ui] = static_cast<wchar_t>(tbuf[ui] + ((ch & 0x7F) << 6));\n\t\t\tch = us[i++];\n\t\t\ttbuf[ui] = static_cast<wchar_t>(tbuf[ui] + (ch & 0x7F));\n\t\t} else {\n\t\t\t// Outside the BMP so need two surrogates\n\t\t\tint val = (ch & 0x7) << 18;\n\t\t\tch = us[i++];\n\t\t\tval += (ch & 0x3F) << 12;\n\t\t\tch = us[i++];\n\t\t\tval += (ch & 0x3F) << 6;\n\t\t\tch = us[i++];\n\t\t\tval += (ch & 0x3F);\n\t\t\ttbuf[ui] = static_cast<wchar_t>(((val - 0x10000) >> 10) + SURROGATE_LEAD_FIRST);\n\t\t\tui++;\n\t\t\ttbuf[ui] = static_cast<wchar_t>((val & 0x3ff) + SURROGATE_TRAIL_FIRST);\n\t\t}\n\t\tui++;\n\t}\n\treturn ui;\n}\n\nunsigned int UTF32FromUTF8(const char *s, unsigned int len, unsigned int *tbuf, unsigned int tlen) {\n\tunsigned int ui=0;\n\tconst unsigned char *us = reinterpret_cast<const unsigned char *>(s);\n\tunsigned int i=0;\n\twhile ((i<len) && (ui<tlen)) {\n\t\tunsigned char ch = us[i++];\n\t\tunsigned int value = 0;\n\t\tif (ch < 0x80) {\n\t\t\tvalue = ch;\n\t\t} else if (((len-i) >= 1) && (ch < 0x80 + 0x40 + 0x20)) {\n\t\t\tvalue = (ch & 0x1F) << 6;\n\t\t\tch = us[i++];\n\t\t\tvalue += ch & 0x7F;\n\t\t} else if (((len-i) >= 2) && (ch < 0x80 + 0x40 + 0x20 + 0x10)) {\n\t\t\tvalue = (ch & 0xF) << 12;\n\t\t\tch = us[i++];\n\t\t\tvalue += (ch & 0x7F) << 6;\n\t\t\tch = us[i++];\n\t\t\tvalue += ch & 0x7F;\n\t\t} else if ((len-i) >= 3) {\n\t\t\tvalue = (ch & 0x7) << 18;\n\t\t\tch = us[i++];\n\t\t\tvalue += (ch & 0x3F) << 12;\n\t\t\tch = us[i++];\n\t\t\tvalue += (ch & 0x3F) << 6;\n\t\t\tch = us[i++];\n\t\t\tvalue += ch & 0x3F;\n\t\t}\n\t\ttbuf[ui] = value;\n\t\tui++;\n\t}\n\treturn ui;\n}\n\nunsigned int UTF16FromUTF32Character(unsigned int val, wchar_t *tbuf) {\n\tif (val < SUPPLEMENTAL_PLANE_FIRST) {\n\t\ttbuf[0] = static_cast<wchar_t>(val);\n\t\treturn 1;\n\t} else {\n\t\ttbuf[0] = static_cast<wchar_t>(((val - SUPPLEMENTAL_PLANE_FIRST) >> 10) + SURROGATE_LEAD_FIRST);\n\t\ttbuf[1] = static_cast<wchar_t>((val & 0x3ff) + SURROGATE_TRAIL_FIRST);\n\t\treturn 2;\n\t}\n}\n\nint UTF8BytesOfLead[256];\nstatic bool initialisedBytesOfLead = false;\n\nstatic int BytesFromLead(int leadByte) {\n\tif (leadByte < 0xC2) {\n\t\t// Single byte or invalid\n\t\treturn 1;\n\t} else if (leadByte < 0xE0) {\n\t\treturn 2;\n\t} else if (leadByte < 0xF0) {\n\t\treturn 3;\n\t} else if (leadByte < 0xF5) {\n\t\treturn 4;\n\t} else {\n\t\t// Characters longer than 4 bytes not possible in current UTF-8\n\t\treturn 1;\n\t}\n}\n\nvoid UTF8BytesOfLeadInitialise() {\n\tif (!initialisedBytesOfLead) {\n\t\tfor (int i=0; i<256; i++) {\n\t\t\tUTF8BytesOfLead[i] = BytesFromLead(i);\n\t\t}\n\t\tinitialisedBytesOfLead = true;\n\t}\n}\n\n// Return both the width of the first character in the string and a status\n// saying whether it is valid or invalid.\n// Most invalid sequences return a width of 1 so are treated as isolated bytes but\n// the non-characters *FFFE, *FFFF and FDD0 .. FDEF return 3 or 4 as they can be\n// reasonably treated as code points in some circumstances. They will, however,\n// not have associated glyphs.\nint UTF8Classify(const unsigned char *us, int len) {\n\t// For the rules: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8\n\tif (*us < 0x80) {\n\t\t// Single bytes easy\n\t\treturn 1;\n\t} else if (*us > 0xf4) {\n\t\t// Characters longer than 4 bytes not possible in current UTF-8\n\t\treturn UTF8MaskInvalid | 1;\n\t} else if (*us >= 0xf0) {\n\t\t// 4 bytes\n\t\tif (len < 4)\n\t\t\treturn UTF8MaskInvalid | 1;\n\t\tif (UTF8IsTrailByte(us[1]) && UTF8IsTrailByte(us[2]) && UTF8IsTrailByte(us[3])) {\n\t\t\tif (((us[1] & 0xf) == 0xf) && (us[2] == 0xbf) && ((us[3] == 0xbe) || (us[3] == 0xbf))) {\n\t\t\t\t// *FFFE or *FFFF non-character\n\t\t\t\treturn UTF8MaskInvalid | 4;\n\t\t\t}\n\t\t\tif (*us == 0xf4) {\n\t\t\t\t// Check if encoding a value beyond the last Unicode character 10FFFF\n\t\t\t\tif (us[1] > 0x8f) {\n\t\t\t\t\treturn UTF8MaskInvalid | 1;\n\t\t\t\t} else if (us[1] == 0x8f) {\n\t\t\t\t\tif (us[2] > 0xbf) {\n\t\t\t\t\t\treturn UTF8MaskInvalid | 1;\n\t\t\t\t\t} else if (us[2] == 0xbf) {\n\t\t\t\t\t\tif (us[3] > 0xbf) {\n\t\t\t\t\t\t\treturn UTF8MaskInvalid | 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ((*us == 0xf0) && ((us[1] & 0xf0) == 0x80)) {\n\t\t\t\t// Overlong\n\t\t\t\treturn UTF8MaskInvalid | 1;\n\t\t\t}\n\t\t\treturn 4;\n\t\t} else {\n\t\t\treturn UTF8MaskInvalid | 1;\n\t\t}\n\t} else if (*us >= 0xe0) {\n\t\t// 3 bytes\n\t\tif (len < 3)\n\t\t\treturn UTF8MaskInvalid | 1;\n\t\tif (UTF8IsTrailByte(us[1]) && UTF8IsTrailByte(us[2])) {\n\t\t\tif ((*us == 0xe0) && ((us[1] & 0xe0) == 0x80)) {\n\t\t\t\t// Overlong\n\t\t\t\treturn UTF8MaskInvalid | 1;\n\t\t\t}\n\t\t\tif ((*us == 0xed) && ((us[1] & 0xe0) == 0xa0)) {\n\t\t\t\t// Surrogate\n\t\t\t\treturn UTF8MaskInvalid | 1;\n\t\t\t}\n\t\t\tif ((*us == 0xef) && (us[1] == 0xbf) && (us[2] == 0xbe)) {\n\t\t\t\t// U+FFFE non-character - 3 bytes long\n\t\t\t\treturn UTF8MaskInvalid | 3;\n\t\t\t}\n\t\t\tif ((*us == 0xef) && (us[1] == 0xbf) && (us[2] == 0xbf)) {\n\t\t\t\t// U+FFFF non-character - 3 bytes long\n\t\t\t\treturn UTF8MaskInvalid | 3;\n\t\t\t}\n\t\t\tif ((*us == 0xef) && (us[1] == 0xb7) && (((us[2] & 0xf0) == 0x90) || ((us[2] & 0xf0) == 0xa0))) {\n\t\t\t\t// U+FDD0 .. U+FDEF\n\t\t\t\treturn UTF8MaskInvalid | 3;\n\t\t\t}\n\t\t\treturn 3;\n\t\t} else {\n\t\t\treturn UTF8MaskInvalid | 1;\n\t\t}\n\t} else if (*us >= 0xc2) {\n\t\t// 2 bytes\n\t\tif (len < 2)\n\t\t\treturn UTF8MaskInvalid | 1;\n\t\tif (UTF8IsTrailByte(us[1])) {\n\t\t\treturn 2;\n\t\t} else {\n\t\t\treturn UTF8MaskInvalid | 1;\n\t\t}\n\t} else {\n\t\t// 0xc0 .. 0xc1 is overlong encoding\n\t\t// 0x80 .. 0xbf is trail byte\n\t\treturn UTF8MaskInvalid | 1;\n\t}\n}\n\nint UTF8DrawBytes(const unsigned char *us, int len) {\n\tint utf8StatusNext = UTF8Classify(us, len);\n\treturn (utf8StatusNext & UTF8MaskInvalid) ? 1 : (utf8StatusNext & UTF8MaskWidth);\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/UniConversion.h",
    "content": "// Scintilla source code edit control\n/** @file UniConversion.h\n ** Functions to handle UTF-8 and UTF-16 strings.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef UNICONVERSION_H\n#define UNICONVERSION_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\nconst int UTF8MaxBytes = 4;\n\nconst int unicodeReplacementChar = 0xFFFD;\n\nunsigned int UTF8Length(const wchar_t *uptr, unsigned int tlen);\nvoid UTF8FromUTF16(const wchar_t *uptr, unsigned int tlen, char *putf, unsigned int len);\nunsigned int UTF8CharLength(unsigned char ch);\nsize_t UTF16Length(const char *s, size_t len);\nsize_t UTF16FromUTF8(const char *s, size_t len, wchar_t *tbuf, size_t tlen);\nunsigned int UTF32FromUTF8(const char *s, unsigned int len, unsigned int *tbuf, unsigned int tlen);\nunsigned int UTF16FromUTF32Character(unsigned int val, wchar_t *tbuf);\n\nextern int UTF8BytesOfLead[256];\nvoid UTF8BytesOfLeadInitialise();\n\ninline bool UTF8IsTrailByte(int ch) {\n\treturn (ch >= 0x80) && (ch < 0xc0);\n}\n\ninline bool UTF8IsAscii(int ch) {\n\treturn ch < 0x80;\n}\n\nenum { UTF8MaskWidth=0x7, UTF8MaskInvalid=0x8 };\nint UTF8Classify(const unsigned char *us, int len);\n\n// Similar to UTF8Classify but returns a length of 1 for invalid bytes\n// instead of setting the invalid flag\nint UTF8DrawBytes(const unsigned char *us, int len);\n\n// Line separator is U+2028 \\xe2\\x80\\xa8\n// Paragraph separator is U+2029 \\xe2\\x80\\xa9\nconst int UTF8SeparatorLength = 3;\ninline bool UTF8IsSeparator(const unsigned char *us) {\n\treturn (us[0] == 0xe2) && (us[1] == 0x80) && ((us[2] == 0xa8) || (us[2] == 0xa9));\n}\n\n// NEL is U+0085 \\xc2\\x85\nconst int UTF8NELLength = 2;\ninline bool UTF8IsNEL(const unsigned char *us) {\n\treturn (us[0] == 0xc2) && (us[1] == 0x85);\n}\n\nenum { SURROGATE_LEAD_FIRST = 0xD800 };\nenum { SURROGATE_LEAD_LAST = 0xDBFF };\nenum { SURROGATE_TRAIL_FIRST = 0xDC00 };\nenum { SURROGATE_TRAIL_LAST = 0xDFFF };\nenum { SUPPLEMENTAL_PLANE_FIRST = 0x10000 };\n\ninline unsigned int UTF16CharLength(wchar_t uch) {\n\treturn ((uch >= SURROGATE_LEAD_FIRST) && (uch <= SURROGATE_LEAD_LAST)) ? 2 : 1;\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/UnicodeFromUTF8.h",
    "content": "// Scintilla source code edit control\n/** @file UnicodeFromUTF8.h\n ** Lexer infrastructure.\n **/\n// Copyright 2013 by Neil Hodgson <neilh@scintilla.org>\n// This file is in the public domain.\n\n#ifndef UNICODEFROMUTF8_H\n#define UNICODEFROMUTF8_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\ninline int UnicodeFromUTF8(const unsigned char *us) {\n\tif (us[0] < 0xC2) {\n\t\treturn us[0];\n\t} else if (us[0] < 0xE0) {\n\t\treturn ((us[0] & 0x1F) << 6) + (us[1] & 0x3F);\n\t} else if (us[0] < 0xF0) {\n\t\treturn ((us[0] & 0xF) << 12) + ((us[1] & 0x3F) << 6) + (us[2] & 0x3F);\n\t} else if (us[0] < 0xF5) {\n\t\treturn ((us[0] & 0x7) << 18) + ((us[1] & 0x3F) << 12) + ((us[2] & 0x3F) << 6) + (us[3] & 0x3F);\n\t}\n\treturn us[0];\n}\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/ViewStyle.cpp",
    "content": "// Scintilla source code edit control\n/** @file ViewStyle.cxx\n ** Store information on how the document is to be viewed.\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <string.h>\n#include <assert.h>\n\n#include <stdexcept>\n#include <vector>\n#include <map>\n\n#include \"Platform.h\"\n\n#include \"Scintilla.h\"\n#include \"Position.h\"\n#include \"SplitVector.h\"\n#include \"Partitioning.h\"\n#include \"RunStyles.h\"\n#include \"Indicator.h\"\n#include \"XPM.h\"\n#include \"LineMarker.h\"\n#include \"Style.h\"\n#include \"ViewStyle.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\nMarginStyle::MarginStyle() :\n\tstyle(SC_MARGIN_SYMBOL), width(0), mask(0), sensitive(false), cursor(SC_CURSORREVERSEARROW) {\n}\n\n// A list of the fontnames - avoids wasting space in each style\nFontNames::FontNames() {\n}\n\nFontNames::~FontNames() {\n\tClear();\n}\n\nvoid FontNames::Clear() {\n\tfor (std::vector<char *>::const_iterator it=names.begin(); it != names.end(); ++it) {\n\t\tdelete []*it;\n\t}\n\tnames.clear();\n}\n\nconst char *FontNames::Save(const char *name) {\n\tif (!name)\n\t\treturn 0;\n\n\tfor (std::vector<char *>::const_iterator it=names.begin(); it != names.end(); ++it) {\n\t\tif (strcmp(*it, name) == 0) {\n\t\t\treturn *it;\n\t\t}\n\t}\n\tconst size_t lenName = strlen(name) + 1;\n\tchar *nameSave = new char[lenName];\n\tmemcpy(nameSave, name, lenName);\n\tnames.push_back(nameSave);\n\treturn nameSave;\n}\n\nFontRealised::FontRealised() {\n}\n\nFontRealised::~FontRealised() {\n\tfont.Release();\n}\n\nvoid FontRealised::Realise(Surface &surface, int zoomLevel, int technology, const FontSpecification &fs) {\n\tPLATFORM_ASSERT(fs.fontName);\n\tsizeZoomed = fs.size + zoomLevel * SC_FONT_SIZE_MULTIPLIER;\n\tif (sizeZoomed <= 2 * SC_FONT_SIZE_MULTIPLIER)\t// Hangs if sizeZoomed <= 1\n\t\tsizeZoomed = 2 * SC_FONT_SIZE_MULTIPLIER;\n\n\tfloat deviceHeight = static_cast<float>(surface.DeviceHeightFont(sizeZoomed));\n\tFontParameters fp(fs.fontName, deviceHeight / SC_FONT_SIZE_MULTIPLIER, fs.weight, fs.italic, fs.extraFontFlag, technology, fs.characterSet);\n\tfont.Create(fp);\n\n\tascent = static_cast<unsigned int>(surface.Ascent(font));\n\tdescent = static_cast<unsigned int>(surface.Descent(font));\n\taveCharWidth = surface.AverageCharWidth(font);\n\tspaceWidth = surface.WidthChar(font, ' ');\n}\n\nViewStyle::ViewStyle() {\n\tInit();\n}\n\nViewStyle::ViewStyle(const ViewStyle &source) {\n\tInit(source.styles.size());\n\tfor (unsigned int sty=0; sty<source.styles.size(); sty++) {\n\t\tstyles[sty] = source.styles[sty];\n\t\t// Can't just copy fontname as its lifetime is relative to its owning ViewStyle\n\t\tstyles[sty].fontName = fontNames.Save(source.styles[sty].fontName);\n\t}\n\tnextExtendedStyle = source.nextExtendedStyle;\n\tfor (int mrk=0; mrk<=MARKER_MAX; mrk++) {\n\t\tmarkers[mrk] = source.markers[mrk];\n\t}\n\tCalcLargestMarkerHeight();\n\tindicatorsDynamic = 0;\n\tindicatorsSetFore = 0;\n\tfor (int ind=0; ind<=INDIC_MAX; ind++) {\n\t\tindicators[ind] = source.indicators[ind];\n\t\tif (indicators[ind].IsDynamic())\n\t\t\tindicatorsDynamic++;\n\t\tif (indicators[ind].OverridesTextFore())\n\t\t\tindicatorsSetFore++;\n\t}\n\n\tselColours = source.selColours;\n\tselAdditionalForeground = source.selAdditionalForeground;\n\tselAdditionalBackground = source.selAdditionalBackground;\n\tselBackground2 = source.selBackground2;\n\tselAlpha = source.selAlpha;\n\tselAdditionalAlpha = source.selAdditionalAlpha;\n\tselEOLFilled = source.selEOLFilled;\n\n\tfoldmarginColour = source.foldmarginColour;\n\tfoldmarginHighlightColour = source.foldmarginHighlightColour;\n\n\thotspotColours = source.hotspotColours;\n\thotspotUnderline = source.hotspotUnderline;\n\thotspotSingleLine = source.hotspotSingleLine;\n\n\twhitespaceColours = source.whitespaceColours;\n\tcontrolCharSymbol = source.controlCharSymbol;\n\tcontrolCharWidth = source.controlCharWidth;\n\tselbar = source.selbar;\n\tselbarlight = source.selbarlight;\n\tcaretcolour = source.caretcolour;\n\tadditionalCaretColour = source.additionalCaretColour;\n\tshowCaretLineBackground = source.showCaretLineBackground;\n\talwaysShowCaretLineBackground = source.alwaysShowCaretLineBackground;\n\tcaretLineBackground = source.caretLineBackground;\n\tcaretLineAlpha = source.caretLineAlpha;\n\tcaretStyle = source.caretStyle;\n\tcaretWidth = source.caretWidth;\n\tsomeStylesProtected = false;\n\tsomeStylesForceCase = false;\n\tleftMarginWidth = source.leftMarginWidth;\n\trightMarginWidth = source.rightMarginWidth;\n\tms = source.ms;\n\tmaskInLine = source.maskInLine;\n\tmaskDrawInText = source.maskDrawInText;\n\tfixedColumnWidth = source.fixedColumnWidth;\n\tmarginInside = source.marginInside;\n\ttextStart = source.textStart;\n\tzoomLevel = source.zoomLevel;\n\tviewWhitespace = source.viewWhitespace;\n\ttabDrawMode = source.tabDrawMode;\n\twhitespaceSize = source.whitespaceSize;\n\tviewIndentationGuides = source.viewIndentationGuides;\n\tviewEOL = source.viewEOL;\n\textraFontFlag = source.extraFontFlag;\n\textraAscent = source.extraAscent;\n\textraDescent = source.extraDescent;\n\tmarginStyleOffset = source.marginStyleOffset;\n\tannotationVisible = source.annotationVisible;\n\tannotationStyleOffset = source.annotationStyleOffset;\n\tbraceHighlightIndicatorSet = source.braceHighlightIndicatorSet;\n\tbraceHighlightIndicator = source.braceHighlightIndicator;\n\tbraceBadLightIndicatorSet = source.braceBadLightIndicatorSet;\n\tbraceBadLightIndicator = source.braceBadLightIndicator;\n\n\tedgeState = source.edgeState;\n\ttheEdge = source.theEdge;\n\ttheMultiEdge = source.theMultiEdge;\n\n\tmarginNumberPadding = source.marginNumberPadding;\n\tctrlCharPadding = source.ctrlCharPadding;\n\tlastSegItalicsOffset = source.lastSegItalicsOffset;\n\n\twrapState = source.wrapState;\n\twrapVisualFlags = source.wrapVisualFlags;\n\twrapVisualFlagsLocation = source.wrapVisualFlagsLocation;\n\twrapVisualStartIndent = source.wrapVisualStartIndent;\n\twrapIndentMode = source.wrapIndentMode;\n}\n\nViewStyle::~ViewStyle() {\n\tstyles.clear();\n\tfor (FontMap::iterator it = fonts.begin(); it != fonts.end(); ++it) {\n\t\tdelete it->second;\n\t}\n\tfonts.clear();\n}\n\nvoid ViewStyle::CalculateMarginWidthAndMask() {\n\tfixedColumnWidth = marginInside ? leftMarginWidth : 0;\n\tmaskInLine = 0xffffffff;\n\tint maskDefinedMarkers = 0;\n\tfor (size_t margin = 0; margin < ms.size(); margin++) {\n\t\tfixedColumnWidth += ms[margin].width;\n\t\tif (ms[margin].width > 0)\n\t\t\tmaskInLine &= ~ms[margin].mask;\n\t\tmaskDefinedMarkers |= ms[margin].mask;\n\t}\n\tmaskDrawInText = 0;\n\tfor (int markBit = 0; markBit < 32; markBit++) {\n\t\tconst int maskBit = 1 << markBit;\n\t\tswitch (markers[markBit].markType) {\n\t\tcase SC_MARK_EMPTY:\n\t\t\tmaskInLine &= ~maskBit;\n\t\t\tbreak;\n\t\tcase SC_MARK_BACKGROUND:\n\t\tcase SC_MARK_UNDERLINE:\n\t\t\tmaskInLine &= ~maskBit;\n\t\t\tmaskDrawInText |= maskDefinedMarkers & maskBit;\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nvoid ViewStyle::Init(size_t stylesSize_) {\n\tAllocStyles(stylesSize_);\n\tnextExtendedStyle = 256;\n\tfontNames.Clear();\n\tResetDefaultStyle();\n\n\t// There are no image markers by default, so no need for calling CalcLargestMarkerHeight()\n\tlargestMarkerHeight = 0;\n\n\tindicators[0] = Indicator(INDIC_SQUIGGLE, ColourDesired(0, 0x7f, 0));\n\tindicators[1] = Indicator(INDIC_TT, ColourDesired(0, 0, 0xff));\n\tindicators[2] = Indicator(INDIC_PLAIN, ColourDesired(0xff, 0, 0));\n\n\ttechnology = SC_TECHNOLOGY_DEFAULT;\n\tindicatorsDynamic = 0;\n\tindicatorsSetFore = 0;\n\tlineHeight = 1;\n\tlineOverlap = 0;\n\tmaxAscent = 1;\n\tmaxDescent = 1;\n\taveCharWidth = 8;\n\tspaceWidth = 8;\n\ttabWidth = spaceWidth * 8;\n\n\tselColours.fore = ColourOptional(ColourDesired(0xff, 0, 0));\n\tselColours.back = ColourOptional(ColourDesired(0xc0, 0xc0, 0xc0), true);\n\tselAdditionalForeground = ColourDesired(0xff, 0, 0);\n\tselAdditionalBackground = ColourDesired(0xd7, 0xd7, 0xd7);\n\tselBackground2 = ColourDesired(0xb0, 0xb0, 0xb0);\n\tselAlpha = SC_ALPHA_NOALPHA;\n\tselAdditionalAlpha = SC_ALPHA_NOALPHA;\n\tselEOLFilled = false;\n\n\tfoldmarginColour = ColourOptional(ColourDesired(0xff, 0, 0));\n\tfoldmarginHighlightColour = ColourOptional(ColourDesired(0xc0, 0xc0, 0xc0));\n\n\twhitespaceColours.fore = ColourOptional();\n\twhitespaceColours.back = ColourOptional(ColourDesired(0xff, 0xff, 0xff));\n\tcontrolCharSymbol = 0;\t/* Draw the control characters */\n\tcontrolCharWidth = 0;\n\tselbar = Platform::Chrome();\n\tselbarlight = Platform::ChromeHighlight();\n\tstyles[STYLE_LINENUMBER].fore = ColourDesired(0, 0, 0);\n\tstyles[STYLE_LINENUMBER].back = Platform::Chrome();\n\tcaretcolour = ColourDesired(0, 0, 0);\n\tadditionalCaretColour = ColourDesired(0x7f, 0x7f, 0x7f);\n\tshowCaretLineBackground = false;\n\talwaysShowCaretLineBackground = false;\n\tcaretLineBackground = ColourDesired(0xff, 0xff, 0);\n\tcaretLineAlpha = SC_ALPHA_NOALPHA;\n\tcaretStyle = CARETSTYLE_LINE;\n\tcaretWidth = 1;\n\tsomeStylesProtected = false;\n\tsomeStylesForceCase = false;\n\n\thotspotColours.fore = ColourOptional(ColourDesired(0, 0, 0xff));\n\thotspotColours.back = ColourOptional(ColourDesired(0xff, 0xff, 0xff));\n\thotspotUnderline = true;\n\thotspotSingleLine = true;\n\n\tleftMarginWidth = 1;\n\trightMarginWidth = 1;\n\tms.resize(SC_MAX_MARGIN + 1);\n\tms[0].style = SC_MARGIN_NUMBER;\n\tms[0].width = 0;\n\tms[0].mask = 0;\n\tms[1].style = SC_MARGIN_SYMBOL;\n\tms[1].width = 16;\n\tms[1].mask = ~SC_MASK_FOLDERS;\n\tms[2].style = SC_MARGIN_SYMBOL;\n\tms[2].width = 0;\n\tms[2].mask = 0;\n\tmarginInside = true;\n\tCalculateMarginWidthAndMask();\n\ttextStart = marginInside ? fixedColumnWidth : leftMarginWidth;\n\tzoomLevel = 0;\n\tviewWhitespace = wsInvisible;\n\ttabDrawMode = tdLongArrow;\n\twhitespaceSize = 1;\n\tviewIndentationGuides = ivNone;\n\tviewEOL = false;\n\textraFontFlag = 0;\n\textraAscent = 0;\n\textraDescent = 0;\n\tmarginStyleOffset = 0;\n\tannotationVisible = ANNOTATION_HIDDEN;\n\tannotationStyleOffset = 0;\n\tbraceHighlightIndicatorSet = false;\n\tbraceHighlightIndicator = 0;\n\tbraceBadLightIndicatorSet = false;\n\tbraceBadLightIndicator = 0;\n\n\tedgeState = EDGE_NONE;\n\ttheEdge = EdgeProperties(0, ColourDesired(0xc0, 0xc0, 0xc0));\n\n\tmarginNumberPadding = 3;\n\tctrlCharPadding = 3; // +3 For a blank on front and rounded edge each side\n\tlastSegItalicsOffset = 2;\n\n\twrapState = eWrapNone;\n\twrapVisualFlags = 0;\n\twrapVisualFlagsLocation = 0;\n\twrapVisualStartIndent = 0;\n\twrapIndentMode = SC_WRAPINDENT_FIXED;\n}\n\nvoid ViewStyle::Refresh(Surface &surface, int tabInChars) {\n\tfor (FontMap::iterator it = fonts.begin(); it != fonts.end(); ++it) {\n\t\tdelete it->second;\n\t}\n\tfonts.clear();\n\n\tselbar = Platform::Chrome();\n\tselbarlight = Platform::ChromeHighlight();\n\n\tfor (unsigned int i=0; i<styles.size(); i++) {\n\t\tstyles[i].extraFontFlag = extraFontFlag;\n\t}\n\n\tCreateAndAddFont(styles[STYLE_DEFAULT]);\n\tfor (unsigned int j=0; j<styles.size(); j++) {\n\t\tCreateAndAddFont(styles[j]);\n\t}\n\n\tfor (FontMap::iterator it = fonts.begin(); it != fonts.end(); ++it) {\n\t\tit->second->Realise(surface, zoomLevel, technology, it->first);\n\t}\n\n\tfor (unsigned int k=0; k<styles.size(); k++) {\n\t\tFontRealised *fr = Find(styles[k]);\n\t\tstyles[k].Copy(fr->font, *fr);\n\t}\n\tindicatorsDynamic = 0;\n\tindicatorsSetFore = 0;\n\tfor (int ind = 0; ind <= INDIC_MAX; ind++) {\n\t\tif (indicators[ind].IsDynamic())\n\t\t\tindicatorsDynamic++;\n\t\tif (indicators[ind].OverridesTextFore())\n\t\t\tindicatorsSetFore++;\n\t}\n\tmaxAscent = 1;\n\tmaxDescent = 1;\n\tFindMaxAscentDescent();\n\tmaxAscent += extraAscent;\n\tmaxDescent += extraDescent;\n\tlineHeight = maxAscent + maxDescent;\n\tlineOverlap = lineHeight / 10;\n\tif (lineOverlap < 2)\n\t\tlineOverlap = 2;\n\tif (lineOverlap > lineHeight)\n\t\tlineOverlap = lineHeight;\n\n\tsomeStylesProtected = false;\n\tsomeStylesForceCase = false;\n\tfor (unsigned int l=0; l<styles.size(); l++) {\n\t\tif (styles[l].IsProtected()) {\n\t\t\tsomeStylesProtected = true;\n\t\t}\n\t\tif (styles[l].caseForce != Style::caseMixed) {\n\t\t\tsomeStylesForceCase = true;\n\t\t}\n\t}\n\n\taveCharWidth = styles[STYLE_DEFAULT].aveCharWidth;\n\tspaceWidth = styles[STYLE_DEFAULT].spaceWidth;\n\ttabWidth = spaceWidth * tabInChars;\n\n\tcontrolCharWidth = 0.0;\n\tif (controlCharSymbol >= 32) {\n\t\tcontrolCharWidth = surface.WidthChar(styles[STYLE_CONTROLCHAR].font, static_cast<char>(controlCharSymbol));\n\t}\n\n\tCalculateMarginWidthAndMask();\n\ttextStart = marginInside ? fixedColumnWidth : leftMarginWidth;\n}\n\nvoid ViewStyle::ReleaseAllExtendedStyles() {\n\tnextExtendedStyle = 256;\n}\n\nint ViewStyle::AllocateExtendedStyles(int numberStyles) {\n\tint startRange = static_cast<int>(nextExtendedStyle);\n\tnextExtendedStyle += numberStyles;\n\tEnsureStyle(nextExtendedStyle);\n\tfor (size_t i=startRange; i<nextExtendedStyle; i++) {\n\t\tstyles[i].ClearTo(styles[STYLE_DEFAULT]);\n\t}\n\treturn startRange;\n}\n\nvoid ViewStyle::EnsureStyle(size_t index) {\n\tif (index >= styles.size()) {\n\t\tAllocStyles(index+1);\n\t}\n}\n\nvoid ViewStyle::ResetDefaultStyle() {\n\tstyles[STYLE_DEFAULT].Clear(ColourDesired(0,0,0),\n\t        ColourDesired(0xff,0xff,0xff),\n\t        Platform::DefaultFontSize() * SC_FONT_SIZE_MULTIPLIER, fontNames.Save(Platform::DefaultFont()),\n\t        SC_CHARSET_DEFAULT,\n\t        SC_WEIGHT_NORMAL, false, false, false, Style::caseMixed, true, true, false);\n}\n\nvoid ViewStyle::ClearStyles() {\n\t// Reset all styles to be like the default style\n\tfor (unsigned int i=0; i<styles.size(); i++) {\n\t\tif (i != STYLE_DEFAULT) {\n\t\t\tstyles[i].ClearTo(styles[STYLE_DEFAULT]);\n\t\t}\n\t}\n\tstyles[STYLE_LINENUMBER].back = Platform::Chrome();\n\n\t// Set call tip fore/back to match the values previously set for call tips\n\tstyles[STYLE_CALLTIP].back = ColourDesired(0xff, 0xff, 0xff);\n\tstyles[STYLE_CALLTIP].fore = ColourDesired(0x80, 0x80, 0x80);\n}\n\nvoid ViewStyle::SetStyleFontName(int styleIndex, const char *name) {\n\tstyles[styleIndex].fontName = fontNames.Save(name);\n}\n\nbool ViewStyle::ProtectionActive() const {\n\treturn someStylesProtected;\n}\n\nint ViewStyle::ExternalMarginWidth() const {\n\treturn marginInside ? 0 : fixedColumnWidth;\n}\n\nint ViewStyle::MarginFromLocation(Point pt) const {\n\tint margin = -1;\n\tint x = textStart - fixedColumnWidth;\n\tfor (size_t i = 0; i < ms.size(); i++) {\n\t\tif ((pt.x >= x) && (pt.x < x + ms[i].width))\n\t\t\tmargin = static_cast<int>(i);\n\t\tx += ms[i].width;\n\t}\n\treturn margin;\n}\n\nbool ViewStyle::ValidStyle(size_t styleIndex) const {\n\treturn styleIndex < styles.size();\n}\n\nvoid ViewStyle::CalcLargestMarkerHeight() {\n\tlargestMarkerHeight = 0;\n\tfor (int m = 0; m <= MARKER_MAX; ++m) {\n\t\tswitch (markers[m].markType) {\n\t\tcase SC_MARK_PIXMAP:\n\t\t\tif (markers[m].pxpm && markers[m].pxpm->GetHeight() > largestMarkerHeight)\n\t\t\t\tlargestMarkerHeight = markers[m].pxpm->GetHeight();\n\t\t\tbreak;\n\t\tcase SC_MARK_RGBAIMAGE:\n\t\t\tif (markers[m].image && markers[m].image->GetHeight() > largestMarkerHeight)\n\t\t\t\tlargestMarkerHeight = markers[m].image->GetHeight();\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\n// See if something overrides the line background color:  Either if caret is on the line\n// and background color is set for that, or if a marker is defined that forces its background\n// color onto the line, or if a marker is defined but has no selection margin in which to\n// display itself (as long as it's not an SC_MARK_EMPTY marker).  These are checked in order\n// with the earlier taking precedence.  When multiple markers cause background override,\n// the color for the highest numbered one is used.\nColourOptional ViewStyle::Background(int marksOfLine, bool caretActive, bool lineContainsCaret) const {\n\tColourOptional background;\n\tif ((caretActive || alwaysShowCaretLineBackground) && showCaretLineBackground && (caretLineAlpha == SC_ALPHA_NOALPHA) && lineContainsCaret) {\n\t\tbackground = ColourOptional(caretLineBackground, true);\n\t}\n\tif (!background.isSet && marksOfLine) {\n\t\tint marks = marksOfLine;\n\t\tfor (int markBit = 0; (markBit < 32) && marks; markBit++) {\n\t\t\tif ((marks & 1) && (markers[markBit].markType == SC_MARK_BACKGROUND) &&\n\t\t\t\t(markers[markBit].alpha == SC_ALPHA_NOALPHA)) {\n\t\t\t\tbackground = ColourOptional(markers[markBit].back, true);\n\t\t\t}\n\t\t\tmarks >>= 1;\n\t\t}\n\t}\n\tif (!background.isSet && maskInLine) {\n\t\tint marksMasked = marksOfLine & maskInLine;\n\t\tif (marksMasked) {\n\t\t\tfor (int markBit = 0; (markBit < 32) && marksMasked; markBit++) {\n\t\t\t\tif ((marksMasked & 1) &&\n\t\t\t\t\t(markers[markBit].alpha == SC_ALPHA_NOALPHA)) {\n\t\t\t\t\tbackground = ColourOptional(markers[markBit].back, true);\n\t\t\t\t}\n\t\t\t\tmarksMasked >>= 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn background;\n}\n\nbool ViewStyle::SelectionBackgroundDrawn() const {\n\treturn selColours.back.isSet &&\n\t\t((selAlpha == SC_ALPHA_NOALPHA) || (selAdditionalAlpha == SC_ALPHA_NOALPHA));\n}\n\nbool ViewStyle::WhitespaceBackgroundDrawn() const {\n\treturn (viewWhitespace != wsInvisible) && (whitespaceColours.back.isSet);\n}\n\nbool ViewStyle::WhiteSpaceVisible(bool inIndent) const {\n\treturn (!inIndent && viewWhitespace == wsVisibleAfterIndent) ||\n\t\t(inIndent && viewWhitespace == wsVisibleOnlyInIndent) ||\n\t\tviewWhitespace == wsVisibleAlways;\n}\n\nColourDesired ViewStyle::WrapColour() const {\n\tif (whitespaceColours.fore.isSet)\n\t\treturn whitespaceColours.fore;\n\telse\n\t\treturn styles[STYLE_DEFAULT].fore;\n}\n\nbool ViewStyle::SetWrapState(int wrapState_) {\n\tWrapMode wrapStateWanted;\n\tswitch (wrapState_) {\n\tcase SC_WRAP_WORD:\n\t\twrapStateWanted = eWrapWord;\n\t\tbreak;\n\tcase SC_WRAP_CHAR:\n\t\twrapStateWanted = eWrapChar;\n\t\tbreak;\n\tcase SC_WRAP_WHITESPACE:\n\t\twrapStateWanted = eWrapWhitespace;\n\t\tbreak;\n\tdefault:\n\t\twrapStateWanted = eWrapNone;\n\t\tbreak;\n\t}\n\tbool changed = wrapState != wrapStateWanted;\n\twrapState = wrapStateWanted;\n\treturn changed;\n}\n\nbool ViewStyle::SetWrapVisualFlags(int wrapVisualFlags_) {\n\tbool changed = wrapVisualFlags != wrapVisualFlags_;\n\twrapVisualFlags = wrapVisualFlags_;\n\treturn changed;\n}\n\nbool ViewStyle::SetWrapVisualFlagsLocation(int wrapVisualFlagsLocation_) {\n\tbool changed = wrapVisualFlagsLocation != wrapVisualFlagsLocation_;\n\twrapVisualFlagsLocation = wrapVisualFlagsLocation_;\n\treturn changed;\n}\n\nbool ViewStyle::SetWrapVisualStartIndent(int wrapVisualStartIndent_) {\n\tbool changed = wrapVisualStartIndent != wrapVisualStartIndent_;\n\twrapVisualStartIndent = wrapVisualStartIndent_;\n\treturn changed;\n}\n\nbool ViewStyle::SetWrapIndentMode(int wrapIndentMode_) {\n\tbool changed = wrapIndentMode != wrapIndentMode_;\n\twrapIndentMode = wrapIndentMode_;\n\treturn changed;\n}\n\nvoid ViewStyle::AllocStyles(size_t sizeNew) {\n\tsize_t i=styles.size();\n\tstyles.resize(sizeNew);\n\tif (styles.size() > STYLE_DEFAULT) {\n\t\tfor (; i<sizeNew; i++) {\n\t\t\tif (i != STYLE_DEFAULT) {\n\t\t\t\tstyles[i].ClearTo(styles[STYLE_DEFAULT]);\n\t\t\t}\n\t\t}\n\t}\n}\n\nvoid ViewStyle::CreateAndAddFont(const FontSpecification &fs) {\n\tif (fs.fontName) {\n\t\tFontMap::iterator it = fonts.find(fs);\n\t\tif (it == fonts.end()) {\n\t\t\tfonts[fs] = new FontRealised();\n\t\t}\n\t}\n}\n\nFontRealised *ViewStyle::Find(const FontSpecification &fs) {\n\tif (!fs.fontName)\t// Invalid specification so return arbitrary object\n\t\treturn fonts.begin()->second;\n\tFontMap::iterator it = fonts.find(fs);\n\tif (it != fonts.end()) {\n\t\t// Should always reach here since map was just set for all styles\n\t\treturn it->second;\n\t}\n\treturn 0;\n}\n\nvoid ViewStyle::FindMaxAscentDescent() {\n\tfor (FontMap::const_iterator it = fonts.begin(); it != fonts.end(); ++it) {\n\t\tif (maxAscent < it->second->ascent)\n\t\t\tmaxAscent = it->second->ascent;\n\t\tif (maxDescent < it->second->descent)\n\t\t\tmaxDescent = it->second->descent;\n\t}\n}\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/ViewStyle.h",
    "content": "// Scintilla source code edit control\n/** @file ViewStyle.h\n ** Store information on how the document is to be viewed.\n **/\n// Copyright 1998-2001 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef VIEWSTYLE_H\n#define VIEWSTYLE_H\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n */\nclass MarginStyle {\npublic:\n\tint style;\n\tColourDesired back;\n\tint width;\n\tint mask;\n\tbool sensitive;\n\tint cursor;\n\tMarginStyle();\n};\n\n/**\n */\nclass FontNames {\nprivate:\n\tstd::vector<char *> names;\n\n\t// Private so FontNames objects can not be copied\n\tFontNames(const FontNames &);\npublic:\n\tFontNames();\n\t~FontNames();\n\tvoid Clear();\n\tconst char *Save(const char *name);\n};\n\nclass FontRealised : public FontMeasurements {\n\t// Private so FontRealised objects can not be copied\n\tFontRealised(const FontRealised &);\n\tFontRealised &operator=(const FontRealised &);\npublic:\n\tFont font;\n\tFontRealised();\n\tvirtual ~FontRealised();\n\tvoid Realise(Surface &surface, int zoomLevel, int technology, const FontSpecification &fs);\n};\n\nenum IndentView {ivNone, ivReal, ivLookForward, ivLookBoth};\n\nenum WhiteSpaceVisibility {wsInvisible=0, wsVisibleAlways=1, wsVisibleAfterIndent=2, wsVisibleOnlyInIndent=3};\n\nenum TabDrawMode {tdLongArrow=0, tdStrikeOut=1};\n\ntypedef std::map<FontSpecification, FontRealised *> FontMap;\n\nenum WrapMode { eWrapNone, eWrapWord, eWrapChar, eWrapWhitespace };\n\nclass ColourOptional : public ColourDesired {\npublic:\n\tbool isSet;\n\tColourOptional(ColourDesired colour_=ColourDesired(0,0,0), bool isSet_=false) : ColourDesired(colour_), isSet(isSet_) {\n\t}\n\tColourOptional(uptr_t wParam, sptr_t lParam) : ColourDesired(static_cast<long>(lParam)), isSet(wParam != 0) {\n\t}\n};\n\nstruct ForeBackColours {\n\tColourOptional fore;\n\tColourOptional back;\n};\n\nstruct EdgeProperties {\n\tint column;\n\tColourDesired colour;\n\tEdgeProperties(int column_ = 0, ColourDesired colour_ = ColourDesired(0)) :\n\t\tcolumn(column_), colour(colour_) {\n\t}\n\tEdgeProperties(uptr_t wParam, sptr_t lParam) :\n\t\tcolumn(static_cast<int>(wParam)), colour(static_cast<long>(lParam)) {\n\t}\n};\n\n/**\n */\nclass ViewStyle {\n\tFontNames fontNames;\n\tFontMap fonts;\npublic:\n\tstd::vector<Style> styles;\n\tsize_t nextExtendedStyle;\n\tLineMarker markers[MARKER_MAX + 1];\n\tint largestMarkerHeight;\n\tIndicator indicators[INDIC_MAX + 1];\n\tunsigned int indicatorsDynamic;\n\tunsigned int indicatorsSetFore;\n\tint technology;\n\tint lineHeight;\n\tint lineOverlap;\n\tunsigned int maxAscent;\n\tunsigned int maxDescent;\n\tXYPOSITION aveCharWidth;\n\tXYPOSITION spaceWidth;\n\tXYPOSITION tabWidth;\n\tForeBackColours selColours;\n\tColourDesired selAdditionalForeground;\n\tColourDesired selAdditionalBackground;\n\tColourDesired selBackground2;\n\tint selAlpha;\n\tint selAdditionalAlpha;\n\tbool selEOLFilled;\n\tForeBackColours whitespaceColours;\n\tint controlCharSymbol;\n\tXYPOSITION controlCharWidth;\n\tColourDesired selbar;\n\tColourDesired selbarlight;\n\tColourOptional foldmarginColour;\n\tColourOptional foldmarginHighlightColour;\n\tForeBackColours hotspotColours;\n\tbool hotspotUnderline;\n\tbool hotspotSingleLine;\n\t/// Margins are ordered: Line Numbers, Selection Margin, Spacing Margin\n\tint leftMarginWidth;\t///< Spacing margin on left of text\n\tint rightMarginWidth;\t///< Spacing margin on right of text\n\tint maskInLine;\t///< Mask for markers to be put into text because there is nowhere for them to go in margin\n\tint maskDrawInText;\t///< Mask for markers that always draw in text\n\tstd::vector<MarginStyle> ms;\n\tint fixedColumnWidth;\t///< Total width of margins\n\tbool marginInside;\t///< true: margin included in text view, false: separate views\n\tint textStart;\t///< Starting x position of text within the view\n\tint zoomLevel;\n\tWhiteSpaceVisibility viewWhitespace;\n\tTabDrawMode tabDrawMode;\n\tint whitespaceSize;\n\tIndentView viewIndentationGuides;\n\tbool viewEOL;\n\tColourDesired caretcolour;\n\tColourDesired additionalCaretColour;\n\tbool showCaretLineBackground;\n\tbool alwaysShowCaretLineBackground;\n\tColourDesired caretLineBackground;\n\tint caretLineAlpha;\n\tint caretStyle;\n\tint caretWidth;\n\tbool someStylesProtected;\n\tbool someStylesForceCase;\n\tint extraFontFlag;\n\tint extraAscent;\n\tint extraDescent;\n\tint marginStyleOffset;\n\tint annotationVisible;\n\tint annotationStyleOffset;\n\tbool braceHighlightIndicatorSet;\n\tint braceHighlightIndicator;\n\tbool braceBadLightIndicatorSet;\n\tint braceBadLightIndicator;\n\tint edgeState;\n\tEdgeProperties theEdge;\n\tstd::vector<EdgeProperties> theMultiEdge;\n\tint marginNumberPadding; // the right-side padding of the number margin\n\tint ctrlCharPadding; // the padding around control character text blobs\n\tint lastSegItalicsOffset; // the offset so as not to clip italic characters at EOLs\n\n\t// Wrapping support\n\tWrapMode wrapState;\n\tint wrapVisualFlags;\n\tint wrapVisualFlagsLocation;\n\tint wrapVisualStartIndent;\n\tint wrapIndentMode; // SC_WRAPINDENT_FIXED, _SAME, _INDENT\n\n\tViewStyle();\n\tViewStyle(const ViewStyle &source);\n\t~ViewStyle();\n\tvoid CalculateMarginWidthAndMask();\n\tvoid Init(size_t stylesSize_=256);\n\tvoid Refresh(Surface &surface, int tabInChars);\n\tvoid ReleaseAllExtendedStyles();\n\tint AllocateExtendedStyles(int numberStyles);\n\tvoid EnsureStyle(size_t index);\n\tvoid ResetDefaultStyle();\n\tvoid ClearStyles();\n\tvoid SetStyleFontName(int styleIndex, const char *name);\n\tbool ProtectionActive() const;\n\tint ExternalMarginWidth() const;\n\tint MarginFromLocation(Point pt) const;\n\tbool ValidStyle(size_t styleIndex) const;\n\tvoid CalcLargestMarkerHeight();\n\tColourOptional Background(int marksOfLine, bool caretActive, bool lineContainsCaret) const;\n\tbool SelectionBackgroundDrawn() const;\n\tbool WhitespaceBackgroundDrawn() const;\n\tColourDesired WrapColour() const;\n\n\tbool SetWrapState(int wrapState_);\n\tbool SetWrapVisualFlags(int wrapVisualFlags_);\n\tbool SetWrapVisualFlagsLocation(int wrapVisualFlagsLocation_);\n\tbool SetWrapVisualStartIndent(int wrapVisualStartIndent_);\n\tbool SetWrapIndentMode(int wrapIndentMode_);\n\n\tbool WhiteSpaceVisible(bool inIndent) const;\n\nprivate:\n\tvoid AllocStyles(size_t sizeNew);\n\tvoid CreateAndAddFont(const FontSpecification &fs);\n\tFontRealised *Find(const FontSpecification &fs);\n\tvoid FindMaxAscentDescent();\n\t// Private so can only be copied through copy constructor which ensures font names initialised correctly\n\tViewStyle &operator=(const ViewStyle &);\n};\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/XPM.cpp",
    "content": "// Scintilla source code edit control\n/** @file XPM.cxx\n ** Define a class that holds data in the X Pixmap (XPM) format.\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#include <stdlib.h>\n#include <string.h>\n\n#include <stdexcept>\n#include <vector>\n#include <map>\n\n#include \"Platform.h\"\n\n#include \"XPM.h\"\n\n#ifdef SCI_NAMESPACE\nusing namespace Scintilla;\n#endif\n\n#if defined(PLAT_QT)\n\nXPM::XPM(const char *textForm)\n{\n    qpm = *reinterpret_cast<const QPixmap *>(textForm);\n}\n\nXPM::XPM(const char *const *linesForm)\n{\n    qpm = *reinterpret_cast<const QPixmap *>(linesForm);\n}\n\nvoid XPM::Draw(Surface *surface, PRectangle &rc)\n{\n    surface->DrawXPM(rc, this);\n}\n\nRGBAImage::RGBAImage(int width_, int height_, float scale_,\n        const unsigned char *pixels_)\n    : height(height_), width(width_), scale(scale_)\n{\n    if (pixels_)\n    {\n        qim = new QImage(*reinterpret_cast<const QImage *>(pixels_));\n    }\n    else\n    {\n#if QT_VERSION >= 0x040000\n        qim = new QImage(width_, height_, QImage::Format_ARGB32);\n#else\n        qim = new QImage(width_, height_, 32);\n        qim->setAlphaBuffer(true);\n#endif\n        qim->fill(0);\n    }\n}\n\nRGBAImage::RGBAImage(const XPM &xpm)\n{\n#if QT_VERSION >= 0x040000\n    qim = new QImage(xpm.Pixmap().toImage());\n#else\n    qim = new QImage(xpm.Pixmap().convertToImage());\n#endif\n\n    width = qim->width();\n    height = qim->height();\n}\n\nRGBAImage::~RGBAImage()\n{\n    delete qim;\n}\n\nconst unsigned char *RGBAImage::Pixels() const\n{\n    return reinterpret_cast<const unsigned char *>(qim);\n}\n\nvoid RGBAImage::SetPixel(int x, int y, ColourDesired colour, int alpha)\n{\n    QRgb rgba = qRgba(colour.GetRed(), colour.GetGreen(), colour.GetBlue(),\n            alpha);\n\n    uint index_or_rgb;\n\n#if QT_VERSION >= 0x040000\n    switch (qim->format())\n    {\n    case QImage::Format_RGB32:\n    case QImage::Format_ARGB32:\n        index_or_rgb = rgba;\n        break;\n\n    case QImage::Format_ARGB32_Premultiplied:\n        {\n            uint a = alpha;\n#if QT_POINTER_SIZE == 8\n            quint64 t = (((quint64(rgba)) | ((quint64(rgba)) << 24)) & 0x00ff00ff00ff00ff) * a;\n            t = (t + ((t >> 8) & 0xff00ff00ff00ff) + 0x80008000800080) >> 8;\n            t &= 0x000000ff00ff00ff;\n            index_or_rgb = (uint(t)) | (uint(t >> 24)) | (a << 24);\n#else\n            uint t = (rgba & 0xff00ff) * a;\n            t = (t + ((t >> 8) & 0xff00ff) + 0x800080) >> 8;\n            t &= 0xff00ff;\n\n            rgba = ((rgba >> 8) & 0xff) * a;\n            rgba = (rgba + ((rgba >> 8) & 0xff) + 0x80);\n            rgba &= 0xff00;\n            index_or_rgb = rgba | t | (a << 24);\n#endif\n            break;\n        }\n\n    default:\n#if QT_VERSION >= 0x040600\n        index_or_rgb = qim->colorCount();\n#else\n        index_or_rgb = qim->colorTable().count();\n#endif\n\n        qim->setColor(index_or_rgb, rgba);\n    }\n#else\n    if (qim->depth() == 32)\n    {\n        index_or_rgb = rgba;\n    }\n    else\n    {\n        index_or_rgb = qim->numColors();\n        qim->setNumColors(index_or_rgb + 1);\n\n        qim->setColor(index_or_rgb, rgba);\n    }\n#endif\n\n    qim->setPixel(x, y, index_or_rgb);\n}\n\n#else\n\nstatic const char *NextField(const char *s) {\n\t// In case there are leading spaces in the string\n\twhile (*s == ' ') {\n\t\ts++;\n\t}\n\twhile (*s && *s != ' ') {\n\t\ts++;\n\t}\n\twhile (*s == ' ') {\n\t\ts++;\n\t}\n\treturn s;\n}\n\n// Data lines in XPM can be terminated either with NUL or \"\nstatic size_t MeasureLength(const char *s) {\n\tsize_t i = 0;\n\twhile (s[i] && (s[i] != '\\\"'))\n\t\ti++;\n\treturn i;\n}\n\nColourDesired XPM::ColourFromCode(int ch) const {\n\treturn colourCodeTable[ch];\n}\n\nvoid XPM::FillRun(Surface *surface, int code, int startX, int y, int x) {\n\tif ((code != codeTransparent) && (startX != x)) {\n\t\tPRectangle rc = PRectangle::FromInts(startX, y, x, y + 1);\n\t\tsurface->FillRectangle(rc, ColourFromCode(code));\n\t}\n}\n\nXPM::XPM(const char *textForm) {\n\tInit(textForm);\n}\n\nXPM::XPM(const char *const *linesForm) {\n\tInit(linesForm);\n}\n\nXPM::~XPM() {\n}\n\nvoid XPM::Init(const char *textForm) {\n\t// Test done is two parts to avoid possibility of overstepping the memory\n\t// if memcmp implemented strangely. Must be 4 bytes at least at destination.\n\tif ((0 == memcmp(textForm, \"/* X\", 4)) && (0 == memcmp(textForm, \"/* XPM */\", 9))) {\n\t\t// Build the lines form out of the text form\n\t\tstd::vector<const char *> linesForm = LinesFormFromTextForm(textForm);\n\t\tif (!linesForm.empty()) {\n\t\t\tInit(&linesForm[0]);\n\t\t}\n\t} else {\n\t\t// It is really in line form\n\t\tInit(reinterpret_cast<const char * const *>(textForm));\n\t}\n}\n\nvoid XPM::Init(const char *const *linesForm) {\n\theight = 1;\n\twidth = 1;\n\tnColours = 1;\n\tpixels.clear();\n\tcodeTransparent = ' ';\n\tif (!linesForm)\n\t\treturn;\n\n\tstd::fill(colourCodeTable, colourCodeTable+256, 0);\n\tconst char *line0 = linesForm[0];\n\twidth = atoi(line0);\n\tline0 = NextField(line0);\n\theight = atoi(line0);\n\tpixels.resize(width*height);\n\tline0 = NextField(line0);\n\tnColours = atoi(line0);\n\tline0 = NextField(line0);\n\tif (atoi(line0) != 1) {\n\t\t// Only one char per pixel is supported\n\t\treturn;\n\t}\n\n\tfor (int c=0; c<nColours; c++) {\n\t\tconst char *colourDef = linesForm[c+1];\n\t\tint code = static_cast<unsigned char>(colourDef[0]);\n\t\tcolourDef += 4;\n\t\tColourDesired colour(0xff, 0xff, 0xff);\n\t\tif (*colourDef == '#') {\n\t\t\tcolour.Set(colourDef);\n\t\t} else {\n\t\t\tcodeTransparent = static_cast<char>(code);\n\t\t}\n\t\tcolourCodeTable[code] = colour;\n\t}\n\n\tfor (int y=0; y<height; y++) {\n\t\tconst char *lform = linesForm[y+nColours+1];\n\t\tsize_t len = MeasureLength(lform);\n\t\tfor (size_t x = 0; x<len; x++)\n\t\t\tpixels[y * width + x] = static_cast<unsigned char>(lform[x]);\n\t}\n}\n\nvoid XPM::Draw(Surface *surface, PRectangle &rc) {\n\tif (pixels.empty()) {\n\t\treturn;\n\t}\n\t// Centre the pixmap\n\tint startY = static_cast<int>(rc.top + (rc.Height() - height) / 2);\n\tint startX = static_cast<int>(rc.left + (rc.Width() - width) / 2);\n\tfor (int y=0; y<height; y++) {\n\t\tint prevCode = 0;\n\t\tint xStartRun = 0;\n\t\tfor (int x=0; x<width; x++) {\n\t\t\tint code = pixels[y * width + x];\n\t\t\tif (code != prevCode) {\n\t\t\t\tFillRun(surface, prevCode, startX + xStartRun, startY + y, startX + x);\n\t\t\t\txStartRun = x;\n\t\t\t\tprevCode = code;\n\t\t\t}\n\t\t}\n\t\tFillRun(surface, prevCode, startX + xStartRun, startY + y, startX + width);\n\t}\n}\n\nvoid XPM::PixelAt(int x, int y, ColourDesired &colour, bool &transparent) const {\n\tif (pixels.empty() || (x<0) || (x >= width) || (y<0) || (y >= height)) {\n\t\tcolour = 0;\n\t\ttransparent = true;\n\t\treturn;\n\t}\n\tint code = pixels[y * width + x];\n\ttransparent = code == codeTransparent;\n\tif (transparent) {\n\t\tcolour = 0;\n\t} else {\n\t\tcolour = ColourFromCode(code).AsLong();\n\t}\n}\n\nstd::vector<const char *> XPM::LinesFormFromTextForm(const char *textForm) {\n\t// Build the lines form out of the text form\n\tstd::vector<const char *> linesForm;\n\tint countQuotes = 0;\n\tint strings=1;\n\tint j=0;\n\tfor (; countQuotes < (2*strings) && textForm[j] != '\\0'; j++) {\n\t\tif (textForm[j] == '\\\"') {\n\t\t\tif (countQuotes == 0) {\n\t\t\t\t// First field: width, height, number of colors, chars per pixel\n\t\t\t\tconst char *line0 = textForm + j + 1;\n\t\t\t\t// Skip width\n\t\t\t\tline0 = NextField(line0);\n\t\t\t\t// Add 1 line for each pixel of height\n\t\t\t\tstrings += atoi(line0);\n\t\t\t\tline0 = NextField(line0);\n\t\t\t\t// Add 1 line for each colour\n\t\t\t\tstrings += atoi(line0);\n\t\t\t}\n\t\t\tif (countQuotes / 2 >= strings) {\n\t\t\t\tbreak;\t// Bad height or number of colors!\n\t\t\t}\n\t\t\tif ((countQuotes & 1) == 0) {\n\t\t\t\tlinesForm.push_back(textForm + j + 1);\n\t\t\t}\n\t\t\tcountQuotes++;\n\t\t}\n\t}\n\tif (textForm[j] == '\\0' || countQuotes / 2 > strings) {\n\t\t// Malformed XPM! Height + number of colors too high or too low\n\t\tlinesForm.clear();\n\t}\n\treturn linesForm;\n}\n\nRGBAImage::RGBAImage(int width_, int height_, float scale_, const unsigned char *pixels_) :\n\theight(height_), width(width_), scale(scale_) {\n\tif (pixels_) {\n\t\tpixelBytes.assign(pixels_, pixels_ + CountBytes());\n\t} else {\n\t\tpixelBytes.resize(CountBytes());\n\t}\n}\n\nRGBAImage::RGBAImage(const XPM &xpm) {\n\theight = xpm.GetHeight();\n\twidth = xpm.GetWidth();\n\tscale = 1;\n\tpixelBytes.resize(CountBytes());\n\tfor (int y=0; y<height; y++) {\n\t\tfor (int x=0; x<width; x++) {\n\t\t\tColourDesired colour;\n\t\t\tbool transparent = false;\n\t\t\txpm.PixelAt(x, y, colour, transparent);\n\t\t\tSetPixel(x, y, colour, transparent ? 0 : 255);\n\t\t}\n\t}\n}\n\nRGBAImage::~RGBAImage() {\n}\n\nint RGBAImage::CountBytes() const {\n\treturn width * height * 4;\n}\n\nconst unsigned char *RGBAImage::Pixels() const {\n\treturn &pixelBytes[0];\n}\n\nvoid RGBAImage::SetPixel(int x, int y, ColourDesired colour, int alpha) {\n\tunsigned char *pixel = &pixelBytes[0] + (y*width+x) * 4;\n\t// RGBA\n\tpixel[0] = static_cast<unsigned char>(colour.GetRed());\n\tpixel[1] = static_cast<unsigned char>(colour.GetGreen());\n\tpixel[2] = static_cast<unsigned char>(colour.GetBlue());\n\tpixel[3] = static_cast<unsigned char>(alpha);\n}\n\nRGBAImageSet::RGBAImageSet() : height(-1), width(-1) {\n}\n\nRGBAImageSet::~RGBAImageSet() {\n\tClear();\n}\n\n/// Remove all images.\nvoid RGBAImageSet::Clear() {\n\tfor (ImageMap::iterator it=images.begin(); it != images.end(); ++it) {\n\t\tdelete it->second;\n\t\tit->second = 0;\n\t}\n\timages.clear();\n\theight = -1;\n\twidth = -1;\n}\n\n/// Add an image.\nvoid RGBAImageSet::Add(int ident, RGBAImage *image) {\n\tImageMap::iterator it=images.find(ident);\n\tif (it == images.end()) {\n\t\timages[ident] = image;\n\t} else {\n\t\tdelete it->second;\n\t\tit->second = image;\n\t}\n\theight = -1;\n\twidth = -1;\n}\n\n/// Get image by id.\nRGBAImage *RGBAImageSet::Get(int ident) {\n\tImageMap::iterator it = images.find(ident);\n\tif (it != images.end()) {\n\t\treturn it->second;\n\t}\n\treturn NULL;\n}\n\n/// Give the largest height of the set.\nint RGBAImageSet::GetHeight() const {\n\tif (height < 0) {\n\t\tfor (ImageMap::const_iterator it=images.begin(); it != images.end(); ++it) {\n\t\t\tif (height < it->second->GetHeight()) {\n\t\t\t\theight = it->second->GetHeight();\n\t\t\t}\n\t\t}\n\t}\n\treturn (height > 0) ? height : 0;\n}\n\n/// Give the largest width of the set.\nint RGBAImageSet::GetWidth() const {\n\tif (width < 0) {\n\t\tfor (ImageMap::const_iterator it=images.begin(); it != images.end(); ++it) {\n\t\t\tif (width < it->second->GetWidth()) {\n\t\t\t\twidth = it->second->GetWidth();\n\t\t\t}\n\t\t}\n\t}\n\treturn (width > 0) ? width : 0;\n}\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qscintilla/src/XPM.h",
    "content": "// Scintilla source code edit control\n/** @file XPM.h\n ** Define a classes to hold image data in the X Pixmap (XPM) and RGBA formats.\n **/\n// Copyright 1998-2003 by Neil Hodgson <neilh@scintilla.org>\n// The License.txt file describes the conditions under which this software may be distributed.\n\n#ifndef XPM_H\n#define XPM_H\n\n#if defined(PLAT_QT)\n#include <qimage.h>\n#include <qpixmap.h>\n#endif\n\n#ifdef SCI_NAMESPACE\nnamespace Scintilla {\n#endif\n\n/**\n * Hold a pixmap in XPM format.\n */\nclass XPM {\n#if defined(PLAT_QT)\n    QPixmap qpm;\n\npublic:\n    XPM(const char *textForm);\n    XPM(const char *const *linesForm);\n    ~XPM() {}\n\n    void Draw(Surface *surface, PRectangle &rc);\n    int GetHeight() const {return qpm.height();}\n\n    const QPixmap &Pixmap() const {return qpm;}\n#else\n\tint height;\n\tint width;\n\tint nColours;\n\tstd::vector<unsigned char> pixels;\n\tColourDesired colourCodeTable[256];\n\tchar codeTransparent;\n\tColourDesired ColourFromCode(int ch) const;\n\tvoid FillRun(Surface *surface, int code, int startX, int y, int x);\npublic:\n\texplicit XPM(const char *textForm);\n\texplicit XPM(const char *const *linesForm);\n\t~XPM();\n\tvoid Init(const char *textForm);\n\tvoid Init(const char *const *linesForm);\n\t/// Decompose image into runs and use FillRectangle for each run\n\tvoid Draw(Surface *surface, PRectangle &rc);\n\tint GetHeight() const { return height; }\n\tint GetWidth() const { return width; }\n\tvoid PixelAt(int x, int y, ColourDesired &colour, bool &transparent) const;\nprivate:\n\tstatic std::vector<const char *>LinesFormFromTextForm(const char *textForm);\n#endif\n};\n\n/**\n * A translucent image stored as a sequence of RGBA bytes.\n */\nclass RGBAImage {\n\t// Private so RGBAImage objects can not be copied\n\tRGBAImage(const RGBAImage &);\n\tRGBAImage &operator=(const RGBAImage &);\n\tint height;\n\tint width;\n\tfloat scale;\n#if defined(PLAT_QT)\n    QImage *qim;\n#else\n\tstd::vector<unsigned char> pixelBytes;\n#endif\npublic:\n\tRGBAImage(int width_, int height_, float scale_, const unsigned char *pixels_);\n\texplicit RGBAImage(const XPM &xpm);\n\tvirtual ~RGBAImage();\n\tint GetHeight() const { return height; }\n\tint GetWidth() const { return width; }\n\tfloat GetScale() const { return scale; }\n\tfloat GetScaledHeight() const { return height / scale; }\n\tfloat GetScaledWidth() const { return width / scale; }\n#if !defined(PLAT_QT)\n\tint CountBytes() const;\n#endif\n\tconst unsigned char *Pixels() const;\n\tvoid SetPixel(int x, int y, ColourDesired colour, int alpha=0xff);\n};\n\n#if !defined(PLAT_QT)\n\n/**\n * A collection of RGBAImage pixmaps indexed by integer id.\n */\nclass RGBAImageSet {\n\ttypedef std::map<int, RGBAImage*> ImageMap;\n\tImageMap images;\n\tmutable int height;\t///< Memorize largest height of the set.\n\tmutable int width;\t///< Memorize largest width of the set.\npublic:\n\tRGBAImageSet();\n\t~RGBAImageSet();\n\t/// Remove all images.\n\tvoid Clear();\n\t/// Add an image.\n\tvoid Add(int ident, RGBAImage *image);\n\t/// Get image by id.\n\tRGBAImage *Get(int ident);\n\t/// Give the largest height of the set.\n\tint GetHeight() const;\n\t/// Give the largest width of the set.\n\tint GetWidth() const;\n};\n\n#endif\n\n#ifdef SCI_NAMESPACE\n}\n#endif\n\n#endif\n"
  },
  {
    "path": "old/3rdpart/qtc_gdbmi/gdbmi.cpp",
    "content": "/**************************************************************************\r\n**\r\n** This file is part of Qt Creator\r\n**\r\n** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).\r\n**\r\n** Contact: Nokia Corporation (info@qt.nokia.com)\r\n**\r\n**\r\n** GNU Lesser General Public License Usage\r\n**\r\n** This file may be used under the terms of the GNU Lesser General Public\r\n** License version 2.1 as published by the Free Software Foundation and\r\n** appearing in the file LICENSE.LGPL included in the packaging of this file.\r\n** Please review the following information to ensure the GNU Lesser General\r\n** Public License version 2.1 requirements will be met:\r\n** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\r\n**\r\n** In addition, as a special exception, Nokia gives you certain additional\r\n** rights. These rights are described in the Nokia Qt LGPL Exception\r\n** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.\r\n**\r\n** Other Usage\r\n**\r\n** Alternatively, this file may be used in accordance with the terms and\r\n** conditions contained in a signed written agreement between you and Nokia.\r\n**\r\n** If you have questions regarding the use of this file, please contact\r\n** Nokia at info@qt.nokia.com.\r\n**\r\n**************************************************************************/\r\n\r\n\r\n#include \"gdbmi.h\"\r\n\r\n#include <QTextStream>\r\n#include <QDebug>\r\n//lite_memory_check_begin\r\n#if defined(WIN32) && defined(_MSC_VER) &&  defined(_DEBUG)\r\n     #define _CRTDBG_MAP_ALLOC\r\n     #include <stdlib.h>\r\n     #include <crtdbg.h>\r\n     #define DEBUG_NEW new( _NORMAL_BLOCK, __FILE__, __LINE__ )\r\n     #define new DEBUG_NEW\r\n#endif\r\n//lite_memory_check_end\r\n\r\n\r\nvoid skipCommas(const char *&from, const char *to)\r\n{\r\n    while (*from == ',' && from != to)\r\n        ++from;\r\n}\r\n\r\nQTextStream &operator<<(QTextStream &os, const GdbMiValue &mi)\r\n{\r\n    return os << mi.toString();\r\n}\r\n\r\nvoid GdbMiValue::parseResultOrValue(const char *&from, const char *to)\r\n{\r\n    while (from != to && isspace(*from))\r\n        ++from;\r\n\r\n    //qDebug() << \"parseResultOrValue: \" << QByteArray(from, to - from);\r\n    parseValue(from, to);\r\n    if (isValid()) {\r\n        //qDebug() << \"no valid result in \" << QByteArray(from, to - from);\r\n        return;\r\n    }\r\n    if (from == to || *from == '(')\r\n        return;\r\n    const char *ptr = from;\r\n    while (ptr < to && *ptr != '=') {\r\n        //qDebug() << \"adding\" << QChar(*ptr) << \"to name\";\r\n        ++ptr;\r\n    }\r\n    m_name = QByteArray(from, ptr - from);\r\n    from = ptr;\r\n    if (from < to && *from == '=') {\r\n        ++from;\r\n        parseValue(from, to);\r\n    }\r\n}\r\n\r\nQByteArray GdbMiValue::parseCString(const char *&from, const char *to)\r\n{\r\n    QByteArray result;\r\n    //qDebug() << \"parseCString: \" << QByteArray(from, to - from);\r\n    if (*from != '\"') {\r\n        qDebug() << \"MI Parse Error, double quote expected\";\r\n        ++from; // So we don't hang\r\n        return QByteArray();\r\n    }\r\n    const char *ptr = from;\r\n    ++ptr;\r\n    while (ptr < to) {\r\n        if (*ptr == '\"') {\r\n            ++ptr;\r\n            result = QByteArray(from + 1, ptr - from - 2);\r\n            break;\r\n        }\r\n        if (*ptr == '\\\\') {\r\n            ++ptr;\r\n            if (ptr == to) {\r\n                qDebug() << \"MI Parse Error, unterminated backslash escape\";\r\n                from = ptr; // So we don't hang\r\n                return QByteArray();\r\n            }\r\n        }\r\n        ++ptr;\r\n    }\r\n    from = ptr;\r\n\r\n    int idx = result.indexOf('\\\\');\r\n    if (idx >= 0) {\r\n        char *dst = result.data() + idx;\r\n        const char *src = dst + 1, *end = result.data() + result.length();\r\n        do {\r\n            char c = *src++;\r\n            switch (c) {\r\n                case 'a': *dst++ = '\\a'; break;\r\n                case 'b': *dst++ = '\\b'; break;\r\n                case 'f': *dst++ = '\\f'; break;\r\n                case 'n': *dst++ = '\\n'; break;\r\n                case 'r': *dst++ = '\\r'; break;\r\n                case 't': *dst++ = '\\t'; break;\r\n                case 'v': *dst++ = '\\v'; break;\r\n                case '\"': *dst++ = '\"'; break;\r\n                case '\\\\': *dst++ = '\\\\'; break;\r\n                default:\r\n                    {\r\n                        int chars = 0;\r\n                        uchar prod = 0;\r\n                        forever {\r\n                            if (c < '0' || c > '7') {\r\n                                --src;\r\n                                break;\r\n                            }\r\n                            prod = prod * 8 + c - '0';\r\n                            if (++chars == 3 || src == end)\r\n                                break;\r\n                            c = *src++;\r\n                        }\r\n                        if (!chars) {\r\n                            qDebug() << \"MI Parse Error, unrecognized backslash escape\";\r\n                            return QByteArray();\r\n                        }\r\n                        *dst++ = prod;\r\n                    }\r\n            }\r\n            while (src != end) {\r\n                char c = *src++;\r\n                if (c == '\\\\')\r\n                    break;\r\n                *dst++ = c;\r\n            }\r\n        } while (src != end);\r\n        *dst = 0;\r\n        result.truncate(dst - result.data());\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\nvoid GdbMiValue::parseValue(const char *&from, const char *to)\r\n{\r\n    //qDebug() << \"parseValue: \" << QByteArray(from, to - from);\r\n    switch (*from) {\r\n        case '{':\r\n            parseTuple(from, to);\r\n            break;\r\n        case '[':\r\n            parseList(from, to);\r\n            break;\r\n        case '\"':\r\n            m_type = Const;\r\n            m_data = parseCString(from, to);\r\n            break;\r\n        default:\r\n            break;\r\n    }\r\n}\r\n\r\n\r\nvoid GdbMiValue::parseTuple(const char *&from, const char *to)\r\n{\r\n    //qDebug() << \"parseTuple: \" << QByteArray(from, to - from);\r\n    if (*from != '{') {\r\n        return;\r\n    }\r\n    ++from;\r\n    parseTuple_helper(from, to);\r\n}\r\n\r\nvoid GdbMiValue::parseTuple_helper(const char *&from, const char *to)\r\n{\r\n    skipCommas(from, to);\r\n    //qDebug() << \"parseTuple_helper: \" << QByteArray(from, to - from);\r\n    m_type = Tuple;\r\n    while (from < to) {\r\n        if (*from == '}') {\r\n            ++from;\r\n            break;\r\n        }\r\n        GdbMiValue child;\r\n        child.parseResultOrValue(from, to);\r\n        //qDebug() << \"\\n=======\\n\" << qPrintable(child.toString()) << \"\\n========\\n\";\r\n        if (!child.isValid())\r\n            return;\r\n        m_children += child;\r\n        skipCommas(from, to);\r\n    }\r\n}\r\n\r\nvoid GdbMiValue::parseList(const char *&from, const char *to)\r\n{\r\n    //qDebug() << \"parseList: \" << QByteArray(from, to - from);\r\n    if (*from != '[') {\r\n        return;\r\n    }\r\n    ++from;\r\n    m_type = List;\r\n    skipCommas(from, to);\r\n    while (from < to) {\r\n        if (*from == ']') {\r\n            ++from;\r\n            break;\r\n        }\r\n        GdbMiValue child;\r\n        child.parseResultOrValue(from, to);\r\n        if (child.isValid())\r\n            m_children += child;\r\n        skipCommas(from, to);\r\n    }\r\n}\r\n\r\nstatic QByteArray ind(int indent)\r\n{\r\n    return QByteArray(2 * indent, ' ');\r\n}\r\n\r\nvoid GdbMiValue::dumpChildren(QByteArray * str, bool multiline, int indent) const\r\n{\r\n    for (int i = 0; i < m_children.size(); ++i) {\r\n        if (i != 0) {\r\n            *str += ',';\r\n            if (multiline)\r\n                *str += '\\n';\r\n        }\r\n        if (multiline)\r\n            *str += ind(indent);\r\n        *str += m_children.at(i).toString(multiline, indent);\r\n    }\r\n}\r\n\r\nclass MyString : public QString {\r\npublic:\r\n    ushort at(int i) const { return constData()[i].unicode(); }\r\n};\r\n\r\ntemplate<class ST, typename CT>\r\ninline ST escapeCStringTpl(const ST &ba)\r\n{\r\n    ST ret;\r\n    ret.reserve(ba.length() * 2);\r\n    for (int i = 0; i < ba.length(); ++i) {\r\n        CT c = ba.at(i);\r\n        switch (c) {\r\n            case '\\\\': ret += \"\\\\\\\\\"; break;\r\n            case '\\a': ret += \"\\\\a\"; break;\r\n            case '\\b': ret += \"\\\\b\"; break;\r\n            case '\\f': ret += \"\\\\f\"; break;\r\n            case '\\n': ret += \"\\\\n\"; break;\r\n            case '\\r': ret += \"\\\\r\"; break;\r\n            case '\\t': ret += \"\\\\t\"; break;\r\n            case '\\v': ret += \"\\\\v\"; break;\r\n            case '\"': ret += \"\\\\\\\"\"; break;\r\n            default:\r\n                if (c < 32 || c == 127) {\r\n                    ret += '\\\\';\r\n                    ret += '0' + (c >> 6);\r\n                    ret += '0' + ((c >> 3) & 7);\r\n                    ret += '0' + (c & 7);\r\n                } else {\r\n                    ret += c;\r\n                }\r\n        }\r\n    }\r\n    return ret;\r\n}\r\n\r\nQString GdbMiValue::escapeCString(const QString &ba)\r\n{\r\n    return escapeCStringTpl<MyString, ushort>(static_cast<const MyString &>(ba));\r\n}\r\n\r\nQByteArray GdbMiValue::escapeCString(const QByteArray &ba)\r\n{\r\n    return escapeCStringTpl<QByteArray, uchar>(ba);\r\n}\r\n\r\nQByteArray GdbMiValue::toString(bool multiline, int indent) const\r\n{\r\n    QByteArray result;\r\n    switch (m_type) {\r\n        case Invalid:\r\n            if (multiline)\r\n                result += ind(indent) + \"Invalid\\n\";\r\n            else\r\n                result += \"Invalid\";\r\n            break;\r\n        case Const:\r\n            if (!m_name.isEmpty())\r\n                result += m_name + '=';\r\n            result += '\"' + escapeCString(m_data) + '\"';\r\n            break;\r\n        case Tuple:\r\n            if (!m_name.isEmpty())\r\n                result += m_name + '=';\r\n            if (multiline) {\r\n                result += \"{\\n\";\r\n                dumpChildren(&result, multiline, indent + 1);\r\n                result += '\\n' + ind(indent) + '}';\r\n            } else {\r\n                result += '{';\r\n                dumpChildren(&result, multiline, indent + 1);\r\n                result += '}';\r\n            }\r\n            break;\r\n        case List:\r\n            if (!m_name.isEmpty())\r\n                result += m_name + '=';\r\n            if (multiline) {\r\n                result += \"[\\n\";\r\n                dumpChildren(&result, multiline, indent + 1);\r\n                result += '\\n' + ind(indent) + ']';\r\n            } else {\r\n                result += '[';\r\n                dumpChildren(&result, multiline, indent + 1);\r\n                result += ']';\r\n            }\r\n            break;\r\n    }\r\n    return result;\r\n}\r\n\r\nvoid GdbMiValue::fromString(const QByteArray &ba)\r\n{\r\n    const char *from = ba.constBegin();\r\n    const char *to = ba.constEnd();\r\n    parseResultOrValue(from, to);\r\n}\r\n\r\nvoid GdbMiValue::fromStringMultiple(const QByteArray &ba)\r\n{\r\n    const char *from = ba.constBegin();\r\n    const char *to = ba.constEnd();\r\n    parseTuple_helper(from, to);\r\n}\r\n\r\nGdbMiValue GdbMiValue::findChild(const char *name) const\r\n{\r\n    for (int i = 0; i < m_children.size(); ++i)\r\n        if (m_children.at(i).m_name == name)\r\n            return m_children.at(i);\r\n    return GdbMiValue();\r\n}\r\n\r\nqulonglong GdbMiValue::toAddress() const\r\n{\r\n    QByteArray ba = m_data;\r\n    if (ba.endsWith('L'))\r\n        ba.chop(1);\r\n    if (ba.startsWith('*') || ba.startsWith('@'))\r\n        ba = ba.mid(1);\r\n    return ba.toULongLong(0, 0);\r\n}\r\n\r\nQByteArray GdbResponse::stringFromResultClass(GdbResultClass resultClass)\r\n{\r\n    switch (resultClass) {\r\n        case GdbResultDone: return \"done\";\r\n        case GdbResultRunning: return \"running\";\r\n        case GdbResultConnected: return \"connected\";\r\n        case GdbResultError: return \"error\";\r\n        case GdbResultExit: return \"exit\";\r\n        default: return \"unknown\";\r\n    }\r\n}\r\n\r\nQByteArray GdbResponse::toString() const\r\n{\r\n    QByteArray result;\r\n    if (token != -1)\r\n        result = QByteArray::number(token);\r\n    result += '^';\r\n    result += stringFromResultClass(resultClass);\r\n    if (data.isValid())\r\n        result += ',' + data.toString();\r\n    result += '\\n';\r\n    return result;\r\n}\r\n"
  },
  {
    "path": "old/3rdpart/qtc_gdbmi/gdbmi.h",
    "content": "/**************************************************************************\r\n**\r\n** This file is part of Qt Creator\r\n**\r\n** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).\r\n**\r\n** Contact: Nokia Corporation (info@qt.nokia.com)\r\n**\r\n**\r\n** GNU Lesser General Public License Usage\r\n**\r\n** This file may be used under the terms of the GNU Lesser General Public\r\n** License version 2.1 as published by the Free Software Foundation and\r\n** appearing in the file LICENSE.LGPL included in the packaging of this file.\r\n** Please review the following information to ensure the GNU Lesser General\r\n** Public License version 2.1 requirements will be met:\r\n** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.\r\n**\r\n** In addition, as a special exception, Nokia gives you certain additional\r\n** rights. These rights are described in the Nokia Qt LGPL Exception\r\n** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.\r\n**\r\n** Other Usage\r\n**\r\n** Alternatively, this file may be used in accordance with the terms and\r\n** conditions contained in a signed written agreement between you and Nokia.\r\n**\r\n** If you have questions regarding the use of this file, please contact\r\n** Nokia at info@qt.nokia.com.\r\n**\r\n**************************************************************************/\r\n\r\n#ifndef GDBMI_H\r\n#define GDBMI_H\r\n\r\n#include <QByteArray>\r\n#include <QList>\r\n#include <QVariant>\r\n\r\nclass GdbMiValue\r\n{\r\npublic:\r\n    GdbMiValue() : m_type(Invalid) {}\r\n\r\n    QByteArray m_name;\r\n    QByteArray m_data;\r\n    QList<GdbMiValue> m_children;\r\n\r\n    enum Type {\r\n        Invalid,\r\n        Const,\r\n        Tuple,\r\n        List\r\n    };\r\n\r\n    Type m_type;\r\n\r\n    inline Type type() const { return m_type; }\r\n    inline QByteArray name() const { return m_name; }\r\n    inline bool hasName(const char *name) const { return m_name == name; }\r\n\r\n    inline bool isValid() const { return m_type != Invalid; }\r\n    inline bool isConst() const { return m_type == Const; }\r\n    inline bool isTuple() const { return m_type == Tuple; }\r\n    inline bool isList() const { return m_type == List; }\r\n\r\n\r\n    inline QByteArray data() const { return m_data; }\r\n    inline const QList<GdbMiValue> &children() const { return m_children; }\r\n    inline int childCount() const { return m_children.size(); }\r\n\r\n    const GdbMiValue &childAt(int index) const { return m_children[index]; }\r\n    GdbMiValue &childAt(int index) { return m_children[index]; }\r\n    GdbMiValue findChild(const char *name) const;\r\n\r\n    QByteArray toString(bool multiline = false, int indent = 0) const;\r\n    qulonglong toAddress() const;\r\n    void fromString(const QByteArray &str);\r\n    void fromStringMultiple(const QByteArray &str);\r\n\r\npublic:\r\n    static QByteArray parseCString(const char *&from, const char *to);\r\n    static QByteArray escapeCString(const QByteArray &ba);\r\n    static QString escapeCString(const QString &ba);\r\n    void parseResultOrValue(const char *&from, const char *to);\r\n    void parseValue(const char *&from, const char *to);\r\n    void parseTuple(const char *&from, const char *to);\r\n    void parseTuple_helper(const char *&from, const char *to);\r\n    void parseList(const char *&from, const char *to);\r\n\r\n    void dumpChildren(QByteArray *str, bool multiline, int indent) const;\r\n};\r\n\r\nenum GdbResultClass\r\n{\r\n    // \"done\" | \"running\" | \"connected\" | \"error\" | \"exit\"\r\n    GdbResultUnknown,\r\n    GdbResultDone,\r\n    GdbResultRunning,\r\n    GdbResultConnected,\r\n    GdbResultError,\r\n    GdbResultExit\r\n};\r\n\r\nclass GdbResponse\r\n{\r\npublic:\r\n    GdbResponse() : token(-1), resultClass(GdbResultUnknown) {}\r\n    QByteArray toString() const;\r\n    static QByteArray stringFromResultClass(GdbResultClass resultClass);\r\n\r\n    int            token;\r\n    GdbResultClass resultClass;\r\n    GdbMiValue     data;\r\n    QVariant       cookie;\r\n    QByteArray     logStreamOutput;\r\n    QByteArray     consoleStreamOutput;\r\n};\r\n\r\n\r\n#endif // GDBMI_H\r\n"
  },
  {
    "path": "old/3rdpart/qtc_gdbmi/qtc_gdbmi.pri",
    "content": "INCLUDEPATH += $$PWD\nSOURCES += $$PWD/gdbmi.cpp\nHEADERS += $$PWD/gdbmi.h\n"
  },
  {
    "path": "old/aboutdialog.cpp",
    "content": "#include \"aboutdialog.h\"\n#include \"ui_aboutdialog.h\"\n\n#include \"version.h\"\n\nAboutDialog::AboutDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::AboutDialog)\n{\n    ui->setupUi(this);\n    ui->label_VerBuildDate->setText(tr(\"Version %1<br>build date:<br>%2\")\n                                    .arg(VERSION)\n                                    .arg(BUILD_DATE));\n    setWindowTitle(QCoreApplication::applicationName());\n    setFixedSize(sizeHint());\n}\n\nAboutDialog::~AboutDialog()\n{\n    delete ui;\n}\n"
  },
  {
    "path": "old/aboutdialog.h",
    "content": "#ifndef ABOUTDIALOG_H\n#define ABOUTDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass AboutDialog;\n}\n\nclass AboutDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit AboutDialog(QWidget *parent = 0);\n    ~AboutDialog();\n\nprivate:\n    Ui::AboutDialog *ui;\n};\n\n#endif // ABOUTDIALOG_H\n"
  },
  {
    "path": "old/aboutdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>AboutDialog</class>\n <widget class=\"QDialog\" name=\"AboutDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>592</width>\n    <height>274</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>About</string>\n  </property>\n  <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n   <item>\n    <widget class=\"QLabel\" name=\"label_2\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Minimum\" vsizetype=\"Minimum\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"minimumSize\">\n      <size>\n       <width>256</width>\n       <height>256</height>\n      </size>\n     </property>\n     <property name=\"maximumSize\">\n      <size>\n       <width>256</width>\n       <height>256</height>\n      </size>\n     </property>\n     <property name=\"text\">\n      <string/>\n     </property>\n     <property name=\"pixmap\">\n      <pixmap resource=\"resources/resources.qrc\">:/images/embedded-ide.png</pixmap>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n     <item>\n      <widget class=\"QLabel\" name=\"label\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Expanding\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n       <property name=\"text\">\n        <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;Embedded IDE&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;for C/C++&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Copyright © 2015-2017&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;by Martin Ribelotta &lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;martinribelotta@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;martinribelotta@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QLabel\" name=\"label_VerBuildDate\">\n       <property name=\"text\">\n        <string>TextLabel</string>\n       </property>\n       <property name=\"alignment\">\n        <set>Qt::AlignCenter</set>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"standardButtons\">\n        <set>QDialogButtonBox::Ok</set>\n       </property>\n       <property name=\"centerButtons\">\n        <bool>false</bool>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"resources/resources.qrc\"/>\n </resources>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>AboutDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>AboutDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/appconfig.cpp",
    "content": "#include \"appconfig.h\"\n\n#include \"passwordpromtdialog.h\"\n\n#include <QSettings>\n#include <QFontDatabase>\n#include <QDir>\n\n#define DEFAULT_PROJECT_PATH_ON_WS \"projects\"\n#define DEFAULT_TEMPLATE_PATH_ON_WS \"templates\"\n\n#define EDITOR_STYLE \"editor/style\"\n#define EDITOR_FONT_SIZE \"editor/font/size\"\n#define EDITOR_FONT_STYLE \"editor/font/style\"\n#define EDITOR_SAVE_ON_ACTION \"editor/saveOnAction\"\n#define EDITOR_TABS_TO_SPACES \"editor/tabsToSpaces\"\n#define EDITOR_TAB_WIDTH \"editor/tabWidth\"\n#define EDITOR_FORMATTER_NAME \"editor/formatter\"\n#define BUILD_DEFAULT_PROJECT_PATH \"build/defaultprojectpath\"\n#define BUILD_TEMPLATE_PATH \"build/templatepath\"\n#define BUILD_TEMPLATE_URL \"build/templateurl\"\n#define BUILD_ADDITIONAL_PATHS \"build/additional_path\"\n#define NETWORK_PROXY_TYPE \"/network/proxy/type\"\n#define NETWORK_PROXY_HOST \"/network/proxy/host\"\n#define NETWORK_PROXY_PORT \"/network/proxy/port\"\n#define NETWORK_PROXY_CREDENTIALS \"/network/proxy/credentials\"\n#define NETWORK_PROXY_USERNAME \"/network/proxy/username\"\n#define PROJECTTMPLATES_AUTOUPDATE \"behavior/projecttmplates/autoupdate\"\n#define LOGGER_FONT_STYLE \"behavior/logger/font/face\"\n#define LOGGER_FONT_SIZE \"behavior/logger/font/size\"\n#define USE_DEVELOP_MODE \"behavior/use_develop\"\n\n#if defined(Q_OS_WIN)\n# define PREFERRED_FIXED_FONT \"Consolas\"\n#elif defined(Q_OS_LINUX)\n# define PREFERRED_FIXED_FONT \"Monospace\"\n#elif defined(Q_OS_MAC)\n# define PREFERRED_FIXED_FONT \"Monaco\"\n#else\n# define PREFERRED_FIXED_FONT \"Courier New\"\n#endif\n\nstatic bool isFixedPitch(const QFont & font) {\n    const QFontInfo fi(font);\n    // qDebug() << fi.family() << fi.fixedPitch();\n    return fi.fixedPitch();\n}\n\nconst QFont AppConfig::systemMonoFont() {\n    QFont font(PREFERRED_FIXED_FONT);\n    if (isFixedPitch(font))\n        return font;\n    font.setStyleHint(QFont::Monospace);\n    if (isFixedPitch(font))\n        return font;\n    font.setStyleHint(QFont::TypeWriter);\n    if (isFixedPitch(font))\n        return font;\n    font.setFamily(\"courier\");\n    if (isFixedPitch(font))\n        return font;\n    // qDebug() << font << \"fallback\";\n    return font;\n}\n\nstruct AppConfigData {\n    struct NetworkProxy {\n        AppConfig::NetworkProxyType type;\n        bool useCredentials;\n        QString host;\n        QString port;\n        QString username;\n        QString password;\n    } networkProxy;\n\n    QStringList buildAdditionalPaths;\n    QString editorStyle;\n    QString editorFontStyle;\n    QString editorFormatterStyle;\n    QString loggerFontStyle;\n    QString builDefaultProjectPath;\n    QString builTemplatePath;\n    QString builTemplateUrl;\n    int loggerFontSize;\n    int editorFontSize;\n    int editorTabWidth;\n    bool editorSaveOnAction;\n    bool editorTabsToSpaces;\n    bool autoUpdateProjectTmplates;\n    bool useDevelopMode;\n};\n\nAppConfigData* appData()\n{\n    static AppConfigData appData;\n    return &appData;\n}\n\nAppConfig& AppConfig::mutableInstance()\n{\n    static AppConfig appConfig;\n    return appConfig;\n}\n\nconst QString AppConfig::filterTextWithVariables(const QString &text) const\n{\n    QString result(text);\n    for(auto k: filterTextMap.keys())\n        result.replace(QString(\"{{%1}}\").arg(k), filterTextMap.value(k)());\n    return result;\n}\n\nconst QHash<QString, QString> AppConfig::getVariableMap() const\n{\n    QHash<QString, QString> h;\n    for(auto k: filterTextMap.keys())\n        h.insert(k, filterTextMap[k]());\n    return h;\n}\n\nconst QStringList &AppConfig::buildAdditionalPaths() const\n{\n    return appData()->buildAdditionalPaths;\n}\n\nconst QString& AppConfig::editorStyle() const\n{\n    return appData()->editorStyle;\n}\n\nint AppConfig::editorFontSize() const\n{\n    return appData()->editorFontSize;\n}\n\nconst QString& AppConfig::editorFontStyle() const\n{\n    return appData()->editorFontStyle;\n}\n\nint AppConfig::loggerFontSize() const\n{\n    return appData()->loggerFontSize;\n}\n\nconst QString &AppConfig::loggerFontStyle() const\n{\n    return appData()->loggerFontStyle;\n}\n\nbool AppConfig::editorSaveOnAction() const\n{\n    return appData()->editorSaveOnAction;\n}\n\nbool AppConfig::editorTabsToSpaces() const\n{\n    return appData()->editorTabsToSpaces;\n}\n\nint AppConfig::editorTabWidth() const\n{\n    return appData()->editorTabWidth;\n}\n\nQString AppConfig::editorFormatterStyle() const\n{\n    return appData()->editorFormatterStyle;\n}\n\nconst QString& AppConfig::buildDefaultProjectPath() const\n{\n    return appData()->builDefaultProjectPath;\n}\n\nconst QString &AppConfig::buildTemplatePath() const\n{\n    return appData()->builTemplatePath;\n}\n\nconst QString &AppConfig::buildTemplateUrl() const\n{\n    return appData()->builTemplateUrl;\n}\n\nQString AppConfig::defaultApplicationResources() const\n{\n    return QDir::home().absoluteFilePath(\"embedded-ide-workspace\");\n}\n\nQString AppConfig::defaultProjectPath()\n{\n    return QDir(defaultApplicationResources()).absoluteFilePath(DEFAULT_PROJECT_PATH_ON_WS);\n}\n\nQString AppConfig::defaultTemplatePath()\n{\n    return QDir(defaultApplicationResources()).absoluteFilePath(DEFAULT_TEMPLATE_PATH_ON_WS);\n}\n\nQString AppConfig::defaultTemplateUrl()\n{\n    return \"https://api.github.com/repos/ciaa/EmbeddedIDE-templates/contents\";\n}\n\nconst QString& AppConfig::networkProxyHost() const\n{\n    return appData()->networkProxy.host;\n}\n\nQString AppConfig::networkProxyPort() const\n{\n    return appData()->networkProxy.port;\n}\n\nbool AppConfig::networkProxyUseCredentials() const\n{\n    return appData()->networkProxy.useCredentials;\n}\n\nAppConfig::NetworkProxyType AppConfig::networkProxyType() const\n{\n    return appData()->networkProxy.type;\n}\n\nconst QString& AppConfig::networkProxyUsername() const\n{\n    return appData()->networkProxy.username;\n}\n\nconst QString& AppConfig::networkProxyPassword() const\n{\n    return appData()->networkProxy.password;\n}\n\nbool AppConfig::projectTmplatesAutoUpdate() const\n{\n    return appData()->autoUpdateProjectTmplates;\n}\n\nbool AppConfig::useDevelopMode() const\n{\n    return appData()->useDevelopMode;\n}\n\nAppConfig::AppConfig()\n{\n    load();\n}\n\nvoid AppConfig::load()\n{\n    QSettings s;\n    this->setLoggerFontStyle(\n                s.value(LOGGER_FONT_STYLE, systemMonoFont()).toString());\n    this->setLoggerFontSize(\n                s.value(LOGGER_FONT_SIZE, 10).toInt());\n    this->setEditorStyle(\n                s.value(EDITOR_STYLE, \"Default\").toString());\n    this->setEditorFontSize(\n                s.value(EDITOR_FONT_SIZE, 10).toInt());\n    this->setEditorFontStyle(\n                s.value(EDITOR_FONT_STYLE, systemMonoFont()).toString());\n    this->setEditorSaveOnAction(\n                s.value(EDITOR_SAVE_ON_ACTION, true).toBool());\n    this->setEditorTabsToSpaces(\n                s.value(EDITOR_TABS_TO_SPACES, true).toBool());\n    this->setEditorTabWidth(\n                s.value(EDITOR_TAB_WIDTH, 4).toInt());\n    this->setEditorFormatterStyle(\n                s.value(EDITOR_FORMATTER_NAME, \"linux\").toString());\n    this->setBuildDefaultProjectPath(\n                s.value(BUILD_DEFAULT_PROJECT_PATH, defaultProjectPath()).toString());\n    this->setBuildTemplatePath(\n                s.value(BUILD_TEMPLATE_PATH, defaultTemplatePath()).toString());\n    this->setBuildTemplateUrl(\n                s.value(BUILD_TEMPLATE_URL, defaultTemplateUrl()).toString());\n    this->setBuildAdditionalPaths(\n                s.value(BUILD_ADDITIONAL_PATHS).toStringList());\n    this->setNetworkProxyType(\n                static_cast<NetworkProxyType>(\n                    s.value(NETWORK_PROXY_TYPE, false).toInt()));\n    this->setNetworkProxyHost(\n                s.value(NETWORK_PROXY_HOST).toString());\n    this->setNetworkProxyPort(\n                s.value(NETWORK_PROXY_PORT).toString());\n    this->setNetworkProxyUseCredentials(\n                s.value(NETWORK_PROXY_CREDENTIALS).toBool());\n    this->setNetworkProxyUsername(\n                s.value(NETWORK_PROXY_USERNAME).toString());\n    if (this->networkProxyType() == NetworkProxyType::Custom\n            && this->networkProxyUseCredentials()) {\n        PasswordPromtDialog paswd(\n                    PasswordPromtDialog::tr(\"Proxy require password\"));\n        if (paswd.exec() == QDialog::Accepted) {\n            this->setNetworkProxyPassword(paswd.password());\n        }\n    }\n    this->setProjectTmplatesAutoUpdate(\n                s.value(PROJECTTMPLATES_AUTOUPDATE, true).toBool());\n    this->setUseDevelopMode(s.value(USE_DEVELOP_MODE, false).toBool());\n    emit configChanged(this);\n}\n\nvoid AppConfig::save()\n{\n    QSettings s;\n    s.setValue(LOGGER_FONT_SIZE, appData()->loggerFontSize);\n    s.setValue(LOGGER_FONT_STYLE, appData()->loggerFontStyle);\n    s.setValue(EDITOR_STYLE, appData()->editorStyle);\n    s.setValue(EDITOR_FONT_SIZE, appData()->editorFontSize);\n    s.setValue(EDITOR_FONT_STYLE, appData()->editorFontStyle);\n    s.setValue(EDITOR_SAVE_ON_ACTION, appData()->editorSaveOnAction);\n    s.setValue(EDITOR_TABS_TO_SPACES, appData()->editorTabsToSpaces);\n    s.setValue(EDITOR_TAB_WIDTH, appData()->editorTabWidth);\n    s.setValue(EDITOR_FORMATTER_NAME, appData()->editorFormatterStyle);\n    s.setValue(BUILD_DEFAULT_PROJECT_PATH, appData()->builDefaultProjectPath);\n    s.setValue(BUILD_TEMPLATE_PATH, appData()->builTemplatePath);\n    s.setValue(BUILD_TEMPLATE_URL, appData()->builTemplateUrl);\n    s.setValue(BUILD_ADDITIONAL_PATHS, appData()->buildAdditionalPaths);\n    s.setValue(NETWORK_PROXY_TYPE, static_cast<int>(this->networkProxyType()));\n    s.setValue(NETWORK_PROXY_HOST, this->networkProxyHost());\n    s.setValue(NETWORK_PROXY_PORT, this->networkProxyPort());\n    s.setValue(NETWORK_PROXY_CREDENTIALS, this->networkProxyUseCredentials());\n    s.setValue(NETWORK_PROXY_USERNAME, this->networkProxyUsername());\n    s.setValue(PROJECTTMPLATES_AUTOUPDATE,\n               this->projectTmplatesAutoUpdate());\n    s.setValue(USE_DEVELOP_MODE, this->useDevelopMode());\n    this->adjustPath();\n    emit configChanged(this);\n}\n\nvoid AppConfig::addFilterTextVariable(const QString &key, std::function<QString ()> func)\n{\n    filterTextMap[key] = func;\n}\n\nvoid AppConfig::setBuildAdditionalPaths(\n        const QStringList& buildAdditionalPaths) const\n{\n    appData()->buildAdditionalPaths = buildAdditionalPaths;\n}\n\nvoid AppConfig::setEditorStyle(const QString &editorStyle)\n{\n    appData()->editorStyle = editorStyle;\n}\n\nvoid AppConfig::setLoggerFontSize(int loggerFontSize)\n{\n    appData()->loggerFontSize = loggerFontSize;\n}\n\nvoid AppConfig::setLoggerFontStyle(const QString &loggerFontStyle)\n{\n    appData()->loggerFontStyle = loggerFontStyle;\n}\n\nvoid AppConfig::setEditorFontSize(int editorFontSize)\n{\n    appData()->editorFontSize = editorFontSize;\n}\n\nvoid AppConfig::setEditorFontStyle(const QString &editorFontStyle)\n{\n    appData()->editorFontStyle = editorFontStyle;\n}\n\nvoid AppConfig::setEditorSaveOnAction(bool editorSaveOnAction)\n{\n    appData()->editorSaveOnAction = editorSaveOnAction;\n}\n\nvoid AppConfig::setEditorTabsToSpaces(bool editorTabsToSpaces)\n{\n    appData()->editorTabsToSpaces = editorTabsToSpaces;\n}\n\nvoid AppConfig::setEditorTabWidth(int editorTabWidth)\n{\n    appData()->editorTabWidth = editorTabWidth;\n}\n\nvoid AppConfig::setEditorFormatterStyle(const QString &style)\n{\n    appData()->editorFormatterStyle = style;\n}\n\nvoid AppConfig::setWorkspacePath(const QString &workspacePath)\n{\n    QDir wSpace(workspacePath);\n    setBuildDefaultProjectPath(wSpace.absoluteFilePath(DEFAULT_PROJECT_PATH_ON_WS));\n    setBuildTemplatePath(wSpace.absoluteFilePath(DEFAULT_TEMPLATE_PATH_ON_WS));\n}\n\nvoid AppConfig::setBuildDefaultProjectPath(const QString &builDefaultProjectPath)\n{\n    appData()->builDefaultProjectPath = builDefaultProjectPath;\n    addFilterTextVariable(\"projectPath\", [this]{ return buildDefaultProjectPath(); });\n}\n\nvoid AppConfig::setBuildTemplatePath(const QString &builTemplatePath)\n{\n    appData()->builTemplatePath = builTemplatePath;\n    addFilterTextVariable(\"templatePath\", [this]{ return buildTemplatePath(); });\n}\n\nvoid AppConfig::setBuildTemplateUrl(const QString &builTemplateUrl)\n{\n    appData()->builTemplateUrl = builTemplateUrl;\n}\n\nvoid AppConfig::setNetworkProxyHost(const QString& host)\n{\n    appData()->networkProxy.host = host;\n}\n\nvoid AppConfig::setNetworkProxyPort(QString port)\n{\n    appData()->networkProxy.port = port;\n}\n\nvoid AppConfig::setNetworkProxyUseCredentials(bool useCredentials)\n{\n    appData()->networkProxy.useCredentials = useCredentials;\n}\n\nvoid AppConfig::setNetworkProxyType(NetworkProxyType type)\n{\n    appData()->networkProxy.type = type;\n}\n\nvoid AppConfig::setNetworkProxyUsername(const QString& username)\n{\n    appData()->networkProxy.username = username;\n}\n\nvoid AppConfig::setNetworkProxyPassword(const QString& password)\n{\n    appData()->networkProxy.password = password;\n}\n\nvoid AppConfig::setProjectTmplatesAutoUpdate(bool automatic)\n{\n    appData()->autoUpdateProjectTmplates = automatic;\n}\n\nvoid AppConfig::setUseDevelopMode(bool use)\n{\n    appData()->useDevelopMode = use;\n}\n\nvoid AppConfig::adjustPath()\n{\n    adjustPath(mutableInstance().buildAdditionalPaths());\n}\n\nvoid AppConfig::adjustPath(const QStringList& paths)\n{\n    const QChar path_separator\n        #ifdef Q_OS_WIN\n            (';')\n        #else\n            (':')\n        #endif\n            ;\n    QString path = qgetenv(\"PATH\");\n    QStringList pathList = path.split(path_separator);\n#ifdef Q_OS_WIN\n    QStringList additional = QStringList(paths).replaceInStrings(\"/\", R\"(\\)\");\n#else\n    QStringList additional = QStringList(paths);\n#endif\n    pathList = additional << pathList << QCoreApplication::applicationDirPath();\n    path = pathList.join(path_separator);\n    qputenv(\"PATH\", path.toLocal8Bit());\n}\n"
  },
  {
    "path": "old/appconfig.h",
    "content": "#ifndef APPCONFIG_H\n#define APPCONFIG_H\n\n#include <QObject>\n#include <functional>\n\n#include \"configdialog.h\"\n#include \"dialogconfigworkspace.h\"\n\nint main(int argc, char** argv);\n\nclass AppConfig : public QObject\n{\n    Q_OBJECT\n    // WARNING(denisacostaq@gmail.com):\n    // These classes can access to the private constructor, but do not create\n    // an instance through this, use mutableInstance instead.\n    friend class ConfigDialog;\n    friend class DialogConfigWorkspace;\n    friend int ::main(int argc, char** argv);\npublic:\n    enum class NetworkProxyType {\n        None, System, Custom\n    };\n\n    const QString filterTextWithVariables(const QString& text) const;\n    const QHash<QString, QString> getVariableMap() const;\n\n    const QStringList& buildAdditionalPaths() const;\n    const QString& editorStyle() const;\n    int editorFontSize() const;\n    const QString& editorFontStyle() const;\n    int loggerFontSize() const;\n    const QString &loggerFontStyle() const;\n    QFont loggerFont() const {\n        QFont font;\n        font.setPixelSize(loggerFontSize());\n        font.setFamily(loggerFontStyle());\n        return font;\n    }\n    bool editorSaveOnAction() const;\n    bool editorTabsToSpaces() const;\n    int editorTabWidth() const;\n    QString editorFormatterStyle() const;\n    const QString& buildDefaultProjectPath() const;\n    const QString& buildTemplatePath() const;\n    const QString& buildTemplateUrl() const;\n    QString defaultApplicationResources() const;\n    QString defaultProjectPath();\n    QString defaultTemplatePath();\n    QString defaultTemplateUrl();\n    const QString& networkProxyHost() const;\n    QString networkProxyPort() const;\n    bool networkProxyUseCredentials() const;\n    NetworkProxyType networkProxyType() const;\n    const QString& networkProxyUsername() const;\n    const QString& networkProxyPassword() const;\n    bool projectTmplatesAutoUpdate() const;\n    bool useDevelopMode() const;\n\n    void adjustPath();\n    void adjustPath(const QStringList& paths);\n\n    static AppConfig& mutableInstance();\n    static const QFont systemMonoFont();\n\nsignals:\n    void configChanged(AppConfig*);\n\nprivate:\n    AppConfig();\n    void load();\n    void save();\n\n    void addFilterTextVariable(const QString& key, std::function<QString ()> func);\n    void setBuildAdditionalPaths(const QStringList& buildAdditionalPaths) const;\n    void setEditorStyle(const QString& editorStyle);\n    void setLoggerFontSize(int loggerFontSize);\n    void setLoggerFontStyle(const QString& loggerFontStyle);\n    void setEditorFontSize(int editorFontSize);\n    void setEditorFontStyle(const QString& editorFontStyle);\n    void setEditorSaveOnAction(bool editorSaveOnAction);\n    void setEditorTabsToSpaces(bool editorTabsToSpaces);\n    void setEditorTabWidth(int editorTabWidth);\n    void setEditorFormatterStyle(const QString& style);\n    void setWorkspacePath(const QString& workspacePath);\n    void setBuildDefaultProjectPath(const QString& buildDefaultProjectPath);\n    void setBuildTemplatePath(const QString& buildTemplatePath);\n    void setBuildTemplateUrl(const QString& buildTemplateUrl);\n    void setNetworkProxyHost(const QString& host);\n    void setNetworkProxyPort(QString host);\n    void setNetworkProxyUseCredentials(bool useCredentials);\n    void setNetworkProxyType(NetworkProxyType type);\n    void setNetworkProxyUsername(const QString& username);\n    void setNetworkProxyPassword(const QString& password);\n    void setProjectTmplatesAutoUpdate(bool automatic);\n    void setUseDevelopMode(bool use);\n\n    QHash<QString, std::function<QString ()> > filterTextMap;\n};\n\n#endif // APPCONFIG_H\n"
  },
  {
    "path": "old/bannerwidget.cpp",
    "content": "#include \"bannerwidget.h\"\n#include \"ui_bannerwidget.h\"\n\nBannerWidget::BannerWidget(QWidget *parent) :\n    QWidget(parent),\n    ui(new Ui::BannerWidget)\n{\n    ui->setupUi(this);\n}\n\nBannerWidget::~BannerWidget()\n{\n    delete ui;\n}\n"
  },
  {
    "path": "old/bannerwidget.h",
    "content": "#ifndef BANNERWIDGET_H\n#define BANNERWIDGET_H\n\n#include <QWidget>\n\nnamespace Ui {\nclass BannerWidget;\n}\n\nclass BannerWidget : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit BannerWidget(QWidget *parent = 0);\n    ~BannerWidget();\n\nprivate:\n    Ui::BannerWidget *ui;\n};\n\n#endif // BANNERWIDGET_H\n"
  },
  {
    "path": "old/bannerwidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>BannerWidget</class>\n <widget class=\"QWidget\" name=\"BannerWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>617</width>\n    <height>380</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QGridLayout\" name=\"gridLayout\">\n   <item row=\"1\" column=\"1\">\n    <widget class=\"QLabel\" name=\"label\">\n     <property name=\"text\">\n      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/ide_design/EmbeddedIDE_00.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"1\">\n    <spacer name=\"verticalSpacer_2\">\n     <property name=\"orientation\">\n      <enum>Qt::Vertical</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>0</width>\n       <height>0</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n   <item row=\"2\" column=\"1\">\n    <spacer name=\"verticalSpacer\">\n     <property name=\"orientation\">\n      <enum>Qt::Vertical</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>0</width>\n       <height>0</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n   <item row=\"1\" column=\"2\">\n    <spacer name=\"horizontalSpacer_2\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>0</width>\n       <height>0</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n   <item row=\"1\" column=\"0\">\n    <spacer name=\"horizontalSpacer\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>0</width>\n       <height>0</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "old/clangcodecontext.cpp",
    "content": "#include \"clangcodecontext.h\"\n\n#include \"codeeditor.h\"\n\n#include <QProcess>\n#include <QTextBlock>\n#include <QRegularExpression>\n#include <QRegularExpressionMatchIterator>\n#include <QProcessEnvironment>\n#include <QDir>\n#include <QTemporaryFile>\n\n#include <QtDebug>\n\nconst QStringList CLangCodeContext::HANDLE_TYPE = QStringList{ \"C\", \"C++\" };\n\nCLangCodeContext::CLangCodeContext(CodeEditor *parent) : QObject(parent), ed(parent)\n{\n    clangProc = new QProcess(this);\n    connect(clangProc, SIGNAL(started()), this, SLOT(clangStarted()));\n    connect(clangProc, SIGNAL(finished(int)), this, SLOT(clangTerminated()));\n    connect(ed, SIGNAL(updateCodeContext()), this, SLOT(startContextUpdate()));\n    connect(this, SIGNAL(completionListUpdate(QStringList)), ed, SLOT(codeContextUpdate(QStringList)));\n    // connect(this, SIGNAL(discoverCompleted(QStringList,QStringList)), ed, SLOT(discoverCompletion(QStringList,QStringList)));\n}\n\nvoid CLangCodeContext::setWorkingDir(const QString &path)\n{\n    clangProc->setWorkingDirectory(path);\n}\n\nstatic const QStringList prepend(const QString& s, const QStringList& l) {\n    QStringList r;\n    for(const auto& x: l) r.append(s + x);\n    return r;\n}\n\nvoid CLangCodeContext::startContextUpdate()\n{\n    clangProc->setProgram(\"clang\");\n    int row, col;\n    ed->getCursorPosition(&row, &col);\n    QStringList argv;\n    argv << \"-x\"\n         << \"c\"\n         << \"-fcolor-diagnostics\"\n         << \"-fsyntax-only\"\n         << \"-Xclang\"\n         << \"-code-completion-macros\"\n         << \"-Xclang\"\n         << \"-code-completion-patterns\"\n         << \"-Xclang\"\n         << \"-code-completion-brief-comments\"\n         << \"-Xclang\"\n         << QString(\"-code-completion-at=-:%1:%2\").arg(row + 1).arg(col + 1)\n         << \"-\";\n    argv << prepend(\"-D\", defines);\n    argv << prepend(\"-I\", includes);\n    qDebug() << \"workdir:\" << clangProc->workingDirectory();\n    qDebug() << \"argv:\" << argv;\n    clangProc->start(\"clang\", argv);\n}\n\nstatic QString findDependency(const QString dep, const MakefileInfo *mk)\n{\n    auto it = mk->allTargets.cbegin();\n    while (it != mk->allTargets.cend()) {\n        QString val = it.value();\n        if (val.contains(dep))\n            return it.key();\n        ++it;\n    }\n    return QString();\n}\n\nstatic const QString TOKEN_SEPARATORS(\" \\t\");\nstatic const QString TOKEN_CUOTATIONS(\"\\\"'\");\nstatic const QChar ESCAPE_CHAR = '\\\\';\n\nstatic QString getToken(QTextStream *s)\n{\n    bool escaped = false;\n    QChar cuoting = QChar();\n    QString token;\n    while(!s->atEnd()) {\n        QChar c;\n        *s >> c;\n        if (TOKEN_SEPARATORS.contains(c)) {\n            if (!cuoting.isNull()) {\n                token += c;\n                continue;\n            }\n            if (token.isEmpty()) {\n                if (cuoting == QChar())\n                    continue;\n            } else\n                break;\n        }\n        if (TOKEN_CUOTATIONS.contains(c)) {\n            if (!escaped) {\n                if (cuoting == c)\n                    cuoting = QChar();\n                else if (cuoting.isNull())\n                    cuoting = c;\n            } else\n                escaped = false;\n            token += c;\n            continue;\n        }\n        escaped = !cuoting.isNull() && (c == ESCAPE_CHAR);\n        token += c;\n    }\n    return token;\n}\n\nstatic QStringList cmdLineTokenizer(const QString& line)\n{\n    QStringList tokens;\n    QString token;\n    QTextStream stream(line.toLocal8Bit(), QIODevice::ReadOnly);\n    while(!(token = getToken(&stream)).isNull()) {\n        tokens.append(token);\n    }\n    return tokens;\n}\n\nstatic const QRegularExpression EOL(R\"([\\r\\n])\");\n\nstatic void parseCompilerInfo(const QString& text, QStringList *incs, QStringList *defs)\n{\n#if 0\n    QRegularExpression definesRe(R\"(^\\#define (\\S+) (.*?)$)\", QRegularExpression::MultilineOption);\n    auto it = definesRe.globalMatch(text);\n    while (it.hasNext()) {\n        QRegularExpressionMatch m = it.next();\n#if 1\n        QString define = m.captured(0);\n        defs->append(define);\n#else\n        QString symbol = m.captured(1).remove(EOL);\n        QString value = m.captured(2).remove(EOL);\n        if (value.contains(QRegularExpression(\"[ \\\\t]\")))\n            value = value.prepend('\"').append('\"');\n        defs->append(QString(\"%1=%2\").arg(symbol).arg(value));\n#endif\n    }\n#else\n    Q_UNUSED(defs);\n#endif\n    bool onIncludes = false;\n    for(const auto& line: text.split('\\n')) {\n        if (!onIncludes) {\n            if (line.startsWith(\"#include <\")) {\n                onIncludes = true;\n            }\n        } else {\n            if (line.startsWith(\"End of search list\"))\n                onIncludes = false;\n            else {\n                QString ipath = line.trimmed();\n                if (!incs->contains(ipath))\n                    incs->append(ipath);\n            }\n        }\n    }\n}\n\nvoid CLangCodeContext::discoverFor(const QString &path)\n{\n    QString workDir = clangProc->workingDirectory();\n    QString findElement = QString(path).remove(workDir);\n    if (findElement.startsWith('\\\\') || findElement.startsWith('/'))\n        findElement.remove(0, 1);\n    const MakefileInfo *mk = ed->makefileInfo();\n    if (mk) {\n        QString key = findDependency(findElement, mk);\n        if (!key.isEmpty()) {\n            qDebug() << \"Parsing construction for \" << key;\n            auto make = new QProcess(this);\n            make->setWorkingDirectory(workDir);\n            connect( make, static_cast<void (QProcess::*)(QProcess::ProcessError)>(&QProcess::error),\n                    [make](QProcess::ProcessError err) {\n                qDebug() << err << make->errorString();\n                make->deleteLater();\n            });\n            connect(make, static_cast<void (QProcess::*)(int)>(&QProcess::finished), [this, make](int ) {\n                QString out = make->readAllStandardOutput();\n                QRegularExpression re(R\"((\\S+[g]*(cc|\\+\\+))\\S*\\s+(.*?$))\", QRegularExpression::MultilineOption);\n                QRegularExpressionMatch m = re.match(out);\n                make->deleteLater();\n                if (m.hasMatch()) {\n                    QString compiler = m.captured(1);\n                    QString compiler_type = m.captured(2);\n                    QString parameters = m.captured(3);\n                    qDebug() << \"CC:\" << compiler << \", type \" << compiler_type;\n                    QStringList parameterList = cmdLineTokenizer(parameters);\n                    QList<int> toRemove;\n                    int idx = 0;\n                    for(const auto& arg: parameterList) {\n                        if (arg.startsWith(\"-I\"))\n                            includes.append(QString(arg).remove(0, 2));\n                        else if (arg.startsWith(\"-D\"))\n                            defines.append(QString(arg).remove(0, 2));\n                        else if (QRegularExpression(R\"(^-(?:MMD|MM|MG|MP|MD|M)$)\").match(arg).hasMatch())\n                            toRemove << idx;\n                        else if (QRegularExpression(R\"(^-(?:MQ|MT|MF)$)\").match(arg).hasMatch())\n                            toRemove << idx << (idx + 1);\n                        else if (arg == \"-c\")\n                            toRemove.append(idx);\n                        else if (arg == \"-o\")\n                            toRemove << idx << (idx + 1);\n                        idx++;\n                    }\n                    qSort(toRemove.begin(), toRemove.end(),\n                          [](int a, int b) -> bool { return a > b; });\n                    for(const auto& i: toRemove)\n                        parameterList.removeAt(i);\n                    parameterList.append(\"-dM\");\n                    parameterList.append(\"-E\");\n                    parameterList.append(\"-v\");\n                    qDebug() << parameterList;\n                    auto cc = new QProcess(this);\n                    cc->setWorkingDirectory(make->workingDirectory());\n                    cc->setReadChannelMode(QProcess::MergedChannels);\n                    connect(cc, static_cast<void (QProcess::*)(int)>(&QProcess::finished), [this, cc](int ) {\n                        QString out = cc->readAll();\n                        parseCompilerInfo(out, &includes, &defines);\n#if 0\n                        QTemporaryFile *temporaryDefines = new QTemporaryFile(this);\n                        temporaryDefines->setObjectName(\"temporaryDefines\");\n                        if (temporaryDefines->open()) {\n                            QTextStream stream(temporaryDefines);\n                            for(const auto& line: defines) {\n                                stream << QString(\"%1\\n\").arg(line);\n                            }\n                            temporaryDefines->close();\n                        } else {\n                            qDebug() << \"error opening tmp defs: \" << temporaryDefines->errorString();\n                            temporaryDefines->deleteLater();\n                        }\n#endif\n                        cc->deleteLater();\n                        qDebug() << \"Includes:\" << includes;\n                        qDebug() << \"Defines:\" << defines;\n                        emit discoverCompleted(includes, defines);\n                    });\n                    connect(cc, static_cast<void (QProcess::*)(QProcess::ProcessError)>(&QProcess::error), [this, cc](QProcess::ProcessError err) {\n                        Q_UNUSED(err);\n                        qDebug() << \"CC ERROR: \" << cc->program() << cc->arguments() << \"\\n\"\n                                 << \"\\t\" << cc->errorString();\n                        cc->deleteLater();\n                    });\n                    cc->start(compiler, parameterList);\n                }\n            });\n            make->start(QString(\"make -Bn %1\").arg(key));\n        } else\n            qDebug() << \"not make target for \" << findElement;\n    } else\n        qDebug() << \"invalid makefileInfo for \" << findElement;\n}\n\nvoid CLangCodeContext::clangStarted()\n{\n    clangProc->write(ed->text().toLocal8Bit()); // ed->toPlainText().toLocal8Bit());\n    clangProc->waitForBytesWritten();\n    clangProc->closeWriteChannel();\n}\n\nvoid CLangCodeContext::clangTerminated()\n{\n    QStringList list;\n    QString out = clangProc->readAll();\n    // qDebug() << \"clang out:\\n\" << out;\n    QRegularExpression re(R\"(^COMPLETION: (.*?)$)\", QRegularExpression::MultilineOption);\n    QRegularExpressionMatchIterator it = re.globalMatch(out);\n    while(it.hasNext()) {\n        QRegularExpressionMatch m = it.next();\n        list.append(m.captured(1));\n    }\n    emit completionListUpdate(list);\n}\n"
  },
  {
    "path": "old/clangcodecontext.h",
    "content": "#ifndef CLANGCODECONTEXT_H\n#define CLANGCODECONTEXT_H\n\n#include <QObject>\n#include <QStringList>\n\nclass CodeEditor;\nclass QProcess;\n\nclass CLangCodeContext : public QObject\n{\n    Q_OBJECT\npublic:\n    static const QStringList HANDLE_TYPE;\n\n    explicit CLangCodeContext(CodeEditor *parent = 0);\n    ~CLangCodeContext() = default;\n\n    void setWorkingDir(const QString& path);\n\nsignals:\n    void completionListUpdate(const QStringList& list);\n    void discoverCompleted(const QStringList& incl, const QStringList& defs);\n\npublic slots:\n    void startContextUpdate();\n    void discoverFor(const QString &path);\n\nprivate slots:\n    void clangStarted();\n    void clangTerminated();\n\nprivate:\n    QProcess *clangProc;\n    CodeEditor *ed;\n    QStringList includes;\n    QStringList defines;\n};\n\n#endif // CLANGCODECONTEXT_H\n"
  },
  {
    "path": "old/codeeditor.cpp",
    "content": "#include \"codeeditor.h\"\n\n#include <QAction>\n#include <QDir>\n#include <QPainter>\n#include <QTextBlock>\n#include <QCompleter>\n#include <QAbstractItemView>\n#include <QScrollBar>\n#include <QShortcut>\n#include <QKeyEvent>\n#include <QFileInfo>\n#include <QSettings>\n#include <QTemporaryFile>\n#include <QApplication>\n\n#include <astyle.h>\n#include <astyle_main.h>\n\n#include <QHBoxLayout>\n#include <QListView>\n#include <QStringListModel>\n#include <QSortFilterProxyModel>\n#include <QMimeDatabase>\n#include <QMenu>\n#include <QListWidget>\n#include <QDialog>\n#include <QMessageBox>\n\n#include <QtDebug>\n\n#include \"clangcodecontext.h\"\n#include \"documentarea.h\"\n#include \"taglist.h\"\n#include \"formfindreplace.h\"\n#include \"appconfig.h\"\n\n#include <Qsci/qscilexeravs.h>\n#include <Qsci/qscilexerbash.h>\n#include <Qsci/qscilexerbatch.h>\n#include <Qsci/qscilexercmake.h>\n#include <Qsci/qscilexercoffeescript.h>\n#include <Qsci/qscilexercpp.h>\n#include <Qsci/qscilexercsharp.h>\n#include <Qsci/qscilexercss.h>\n#include <Qsci/qscilexercustom.h>\n#include <Qsci/qscilexerd.h>\n#include <Qsci/qscilexerdiff.h>\n#include <Qsci/qscilexerfortran.h>\n#include <Qsci/qscilexerhtml.h>\n#include <Qsci/qscilexeridl.h>\n#include <Qsci/qscilexerjava.h>\n#include <Qsci/qscilexerjavascript.h>\n#include <Qsci/qscilexerjson.h>\n#include <Qsci/qscilexerlua.h>\n#include <Qsci/qscilexermakefile.h>\n#include <Qsci/qscilexermarkdown.h>\n#include <Qsci/qscilexeroctave.h>\n#include <Qsci/qscilexerpascal.h>\n#include <Qsci/qscilexerperl.h>\n#include <Qsci/qscilexerpo.h>\n#include <Qsci/qscilexerpostscript.h>\n#include <Qsci/qscilexerpov.h>\n#include <Qsci/qscilexerproperties.h>\n#include <Qsci/qscilexerpython.h>\n#include <Qsci/qscilexerruby.h>\n#include <Qsci/qscilexerspice.h>\n#include <Qsci/qscilexersql.h>\n#include <Qsci/qscilexertcl.h>\n#include <Qsci/qscilexertex.h>\n#include <Qsci/qscilexerverilog.h>\n#include <Qsci/qscilexervhdl.h>\n#include <Qsci/qscilexerxml.h>\n#include <Qsci/qscilexeryaml.h>\n#include <Qsci/qscistyle.h>\n\n#include <QtXml/qdom.h>\n\n#include <gdbdebugger.h>\n\n#undef CLANG_DEBUG\n\nCodeEditor::CodeEditor(QWidget *parent) :\n    QsciScintilla(parent),\n    mk(nullptr),\n    ip(-1)\n{\n    m_completer = new QCompleter(this);\n    m_completer->setObjectName(\"completer\");\n    m_completer->setCompletionMode(QCompleter::PopupCompletion);\n    m_completer->setWidget(this);\n\n    auto pModel = new QSortFilterProxyModel(m_completer);\n    pModel->setFilterCaseSensitivity(Qt::CaseSensitive);\n    pModel->setSourceModel(new QStringListModel(m_completer));\n    m_completer->setModel(pModel);\n    connect(m_completer, SIGNAL(activated(QString)), this, SLOT(insertCompletion(QString)));\n\n    replaceDialog = new FormFindReplace(this);\n    replaceDialog->hide();\n\n#define SHCUT(keycode, ptr, method) do { \\\n        auto acc = new QAction(this); \\\n        acc->setShortcut(QKeySequence(keycode)); \\\n        connect(acc, &QAction::triggered, ptr, method); \\\n        addAction(acc); \\\n    } while(0)\n    SHCUT(\"ctrl+return\", this, &CodeEditor::findTagUnderCursor);\n    SHCUT(\"ctrl+f\", replaceDialog, &FormFindReplace::show);\n    SHCUT(\"ctrl+i\", this, &CodeEditor::formatSelection);\n    SHCUT(\"ctrl+s\", this, &CodeEditor::save);\n    SHCUT(\"ctrl+r\", this, &CodeEditor::reload);\n#undef SHCUT\n\n    connect(this, &QsciScintilla::marginClicked,\n            [this](int margin, int line, Qt::KeyboardModifiers state){\n        Q_UNUSED(margin);\n        Q_UNUSED(state);\n        if (markersAtLine(line) != 0) {\n            if (GdbDebugger::instance()->isRunning()) {\n                qDebug() << \"del mark in\" << margin << line;\n                GdbDebugger::instance()->removeBreakPoint(m_documentFile, line);\n            }\n        } else {\n            if (GdbDebugger::instance()->isRunning()) {\n                qDebug() << \"add mark in\" << margin << line;\n                GdbDebugger::instance()->insertBreakPoint(m_documentFile, line);\n            }\n        }\n    });\n    connect(GdbDebugger::instance(), &GdbDebugger::breakInserted, [this](int id, const QString& file, int line){\n        if (mk) {\n            const QFileInfo otherFile(QDir(mk->workingDir).absoluteFilePath(file));\n            const QFileInfo thisFile(QDir(mk->workingDir).absoluteFilePath(m_documentFile));\n            qDebug() << otherFile.absoluteFilePath() << thisFile.absoluteFilePath();\n            if (thisFile == otherFile) {\n                line--;\n                breakPointMarkToLine.insert(id, line);\n                markerAdd(line, SC_MARK_CIRCLE);\n            }\n        }\n    });\n    connect(GdbDebugger::instance(), &GdbDebugger::breakDeleted, [this](int id){\n        if (breakPointMarkToLine.contains(id)) {\n            int line = breakPointMarkToLine.value(id);\n            markerDelete(line);\n        }\n    });\n    connect(GdbDebugger::instance(), &GdbDebugger::debugStoped, [this]{\n        clearDebugPointer();\n        for(auto line: breakPointMarkToLine.values())\n            markerDelete(line);\n        breakPointMarkToLine.clear();\n    });\n\n    connect(this, &QsciScintilla::linesChanged, this, &CodeEditor::adjustLineNumberMargin);\n    connect(this, &CodeEditor::selectionChanged, this, &CodeEditor::textSelected);\n\n    loadConfig();\n    connect(&AppConfig::mutableInstance(), &AppConfig::configChanged, this, &CodeEditor::loadConfig);\n}\n\nvoid CodeEditor::insertCompletion(const QString &completion)\n{\n    QString s = completion;\n    if (s.startsWith(\"Pattern : \")) {\n        s = s.remove(\"Pattern : \").remove(QRegExp(R\"([\\\\<|\\[]\\#[^\\#]*\\#[\\>|\\]])\"));\n    } else if (s.contains(':')) {\n        s = s.split(':').at(0).trimmed();\n    }\n\n    int line, index;\n    getCursorPosition(&line, &index);\n    unsigned long position = static_cast<unsigned long>(positionFromLineIndex(line, index));\n    long start_pos = SendScintilla(SCI_WORDSTARTPOSITION, position, true);\n    long end_pos = SendScintilla(SCI_WORDENDPOSITION, position, true);\n    // Delete word under cursor\n    SendScintilla(SCI_DELETERANGE, static_cast<unsigned long>(start_pos), end_pos - start_pos);\n\n    // Set start position to insert new completion\n    SendScintilla(SCI_GOTOPOS, start_pos);\n    insert(s);\n    // Set position at end of inserted word\n    SendScintilla(SCI_GOTOPOS, start_pos + s.length());\n    m_completer->popup()->hide();\n}\n\nvoid CodeEditor::codeContextUpdate(const QStringList& list)\n{\n    // qDebug() << \"completion:\\n\" << list;\n    QSortFilterProxyModel *pModel = qobject_cast<QSortFilterProxyModel*>(m_completer->model());\n    QStringListModel *m = qobject_cast<QStringListModel*>(pModel->sourceModel());\n    m->setStringList(list);\n    completionShow();\n}\n\nvoid CodeEditor::moveTextCursor(int row, int col)\n{\n    setCursorPosition(row, col);\n}\n\nQRect CodeEditor::cursorRect() const\n{\n    int pos = static_cast<int>(SendScintilla(SCI_GETCURRENTPOS));\n    int pos_line = static_cast<int>(SendScintilla(SCI_LINEFROMPOSITION, static_cast<unsigned long>(pos), 0l));\n    int x = static_cast<int>(SendScintilla(SCI_POINTXFROMPOSITION, 0, pos));\n    int y = static_cast<int>(SendScintilla(SCI_POINTYFROMPOSITION, 0, pos));\n    int xp1 = static_cast<int>(SendScintilla(SCI_POINTXFROMPOSITION, 0, pos+1));\n    int sizex = qMax(1, xp1-x);\n    int sizey = static_cast<int>(SendScintilla(SCI_TEXTHEIGHT, static_cast<unsigned long>(pos_line), 0l));\n    QRect r(x, y, sizex, sizey);\n    return r;\n}\n\nint CodeEditor::findText(const QString &text, int flags, int start, int *targend)\n{\n    ScintillaBytes s = textAsBytes(text);\n    int endpos = SendScintilla(SCI_GETLENGTH);\n    SendScintilla(SCI_SETSEARCHFLAGS, flags);\n    SendScintilla(SCI_SETTARGETSTART, start);\n    SendScintilla(SCI_SETTARGETEND, endpos);\n\n    int pos = SendScintilla(SCI_SEARCHINTARGET, s.length(), ScintillaBytesConstData(s));\n    if (pos == -1)\n        return -1;\n    long targstart = SendScintilla(SCI_GETTARGETSTART);\n    *targend = SendScintilla(SCI_GETTARGETEND);\n    return targstart;\n}\n\nvoid CodeEditor::completionShow()\n{\n    QString underCursor = wordUnderCursor();\n    QSortFilterProxyModel *pModel = qobject_cast<QSortFilterProxyModel*>(m_completer->model());\n    pModel->setFilterFixedString(underCursor);\n    int w = m_completer->popup()->sizeHintForColumn(0) +\n            m_completer->popup()->verticalScrollBar()->sizeHint().width();\n    QRect cr = cursorRect();\n    QRect rr = QRect(viewport()->mapTo(this, cr.topLeft()), cr.size());\n    rr.setWidth(std::min(w, size().width() - rr.left()));\n    m_completer->complete(rr);\n}\n\nstatic QAction *setActionEnable(bool en, QAction *a) {\n    a->setEnabled(en);\n    return a;\n}\n\nQMenu *CodeEditor::createContextMenu()\n{\n    auto m = new QMenu(this);\n    bool isSelected = !selectedText().isEmpty(); // textCursor().hasSelection();\n    bool canPaste = static_cast<bool>(SendScintilla(SCI_CANPASTE));\n    setActionEnable(isUndoAvailable(), m->addAction(QIcon(\":/images/edit-undo.svg\"), tr(\"&Undo\"), this, SLOT(undo())))->setShortcut(QKeySequence(\"Ctrl+Z\"));\n    setActionEnable(isRedoAvailable(), m->addAction(QIcon(\":/images/edit-redo.svg\"), tr(\"&Redo\"), this, SLOT(redo())))->setShortcut(QKeySequence(\"Ctrl+Shift+Z\"));\n    m->addSeparator();\n    setActionEnable(isSelected, m->addAction(QIcon(\":/images/edit-cut.svg\"), tr(\"Cu&t\"), this, SLOT(cut())))->setShortcut(QKeySequence(\"Ctrl+X\"));\n    setActionEnable(isSelected, m->addAction(QIcon(\":/images/edit-copy.svg\"), tr(\"&Copy\"), this, SLOT(copy())))->setShortcut(QKeySequence(\"Ctrl+C\"));\n    setActionEnable(canPaste, m->addAction(QIcon(\":/images/edit-paste.svg\"), tr(\"&Paste\"), this, SLOT(paste())))->setShortcut(QKeySequence(\"Ctrl+V\"));\n    setActionEnable(isSelected, m->addAction(QIcon(\":/images/edit-delete.svg\"), tr(\"Delete\"), this, SLOT(clearSelection())));\n    m->addSeparator();\n    m->addAction(tr(\"&Select All\"), this, SLOT(selectAll()))->setShortcut(QKeySequence(\"CTRL+A\"));\n    return m;\n}\n\nclass MyQsciLexerCPP: public QsciLexerCPP {\n    mutable QLatin1String keywordList;\npublic:\n    MyQsciLexerCPP(QObject *parent = 0, bool caseInsensitiveKeywords = false) :\n        QsciLexerCPP(parent, caseInsensitiveKeywords)\n    {\n        setFoldCompact(false);\n    }\n\n    virtual const char *keywords(int set) const\n    {\n        if (set == 5) {\n            updateKeywordList();\n            return keywordList.data();\n        } else {\n            return QsciLexerCPP::keywords(set);\n        }\n    }\n\nprivate:\n    void updateKeywordList() const {\n        auto c = qobject_cast<CodeEditor*>(editor());\n        if (c) {\n            // keywordList = c->keywordList();\n        }\n    }\n};\n\ntemplate<typename T>\nT *helperCreator() {\n    return new T();\n}\n\ntemplate<typename T>\nstruct QHashVal { QString k; T v; };\n\ntemplate<typename K, typename V>\nstatic QHash<K, V> operator+(QHash<K, V> h, const QHashVal<V>& e) {\n    h[e.k] = e.v;\n    return h;\n}\n\ntypedef QsciLexer* (*creator_t)();\n\n#define _(mime, type) { QString(mime), reinterpret_cast<creator_t>(&helperCreator<type>) }\n\nstatic QHash<QString, creator_t> creatorMap = {\n    _(\"application/json\", QsciLexerJSON),\n    _(\"text/x-octave\", QsciLexerOctave),\n    _(\"text/x-fortran\", QsciLexerFortran),\n    _(\"text/x-yaml\", QsciLexerYAML),\n    _(\"text/x-css\", QsciLexerCSS),\n    _(\"text/x-ps\", QsciLexerPostScript),\n    _(\"text/x-diff\", QsciLexerDiff),\n    _(\"text/x-avs\", QsciLexerAVS),\n    _(\"text/x-markdown\", QsciLexerMarkdown),\n    _(\"text/markdown\", QsciLexerMarkdown),\n    _(\"text/x-makefile\", QsciLexerMakefile),\n    _(\"text/x-pov\", QsciLexerPOV),\n    _(\"text/x-sql\", QsciLexerSQL),\n    _(\"text/x-html\", QsciLexerHTML),\n    _(\"text/x-po\", QsciLexerPO),\n    _(\"text/x-python\", QsciLexerPython),\n    _(\"text/x-lua\", QsciLexerLua),\n    _(\"text/x-xml\", QsciLexerXML),\n    _(\"text/x-idl\", QsciLexerIDL),\n    _(\"text/x-fortran\", QsciLexerFortran),\n    _(\"text/x-ruby\", QsciLexerRuby),\n    _(\"text/x-tex\", QsciLexerTeX),\n    _(\"text/x-bat\", QsciLexerBatch),\n    _(\"application/x-shellscript\", QsciLexerBash),\n    _(\"text/x-perl\", QsciLexerPerl),\n    _(\"text/x-cmake\", QsciLexerCMake),\n    _(\"text/x-java\", QsciLexerJava),\n    _(\"text/x-csharp\", QsciLexerCSharp),\n    _(\"text/x-properties\", QsciLexerProperties),\n    _(\"text/x-vhdl\", QsciLexerVHDL),\n    _(\"text/x-csrc\", MyQsciLexerCPP),\n    _(\"text/x-pascal\", QsciLexerPascal),\n    _(\"text/x-spice\", QsciLexerSpice),\n    _(\"text/x-matlab\", QsciLexerMatlab),\n    _(\"text/x-tcl\", QsciLexerTCL),\n    _(\"text/x-verilog\", QsciLexerVerilog),\n    _(\"text/x-javascript\", QsciLexerJavaScript),\n    _(\"text/x-dlang\", QsciLexerD),\n    _(\"text/x-coffe\", QsciLexerCoffeeScript)\n};\n\nstatic QHash<QString, creator_t> creatorFromExtMap = {\n    _(\"c\", MyQsciLexerCPP),\n    _(\"cc\", MyQsciLexerCPP),\n    _(\"cxx\", MyQsciLexerCPP),\n    _(\"cpp\", MyQsciLexerCPP),\n    _(\"c++\", MyQsciLexerCPP),\n    _(\"h\", MyQsciLexerCPP),\n    _(\"hh\", MyQsciLexerCPP),\n    _(\"hxx\", MyQsciLexerCPP),\n    _(\"hpp\", MyQsciLexerCPP),\n    _(\"h++\", MyQsciLexerCPP),\n#if 0\n    _(\"s\", SciLexerASM),\n    _(\"S\", SciLexerASM),\n#endif\n};\n#undef _\n\nstatic QsciLexer *lexerFromFile(const QString& name) {\n    // qDebug() << \"creatorMap\" << creatorMap;\n    QFile f(name);\n    QMimeType type;\n    if (f.open(QFile::ReadOnly))\n        type = QMimeDatabase().mimeTypeForFileNameAndData(name, &f);\n    else {\n        qDebug() << \"Open file error\" << f.errorString();\n        type = QMimeDatabase().mimeTypeForFile(name);\n    }\n    QString mimename = type.name();\n    // qDebug() << \"mime\" << mimename;\n    if (creatorMap.contains(mimename)) {\n        qDebug() << \"for\" << name << \"mime found as\" << mimename;\n        return creatorMap.value(mimename)();\n    }\n    for(const auto& mname: type.parentMimeTypes()) {\n        if (creatorMap.contains(mname)) {\n            qDebug() << \"for\" << name << \"parent mime found as\" << mname;\n            return creatorMap.value(mname)();\n        }\n    }\n    auto suffix = QFileInfo(name).suffix();\n    for(const auto& ext: creatorFromExtMap.keys())\n        if (suffix == ext) {\n            qDebug() << \"Lexer found for suffix\" << suffix;\n            return creatorFromExtMap.value(ext)();\n        }\n    qDebug() << \"No lexer found\";\n    return nullptr;\n}\n\nbool CodeEditor::load(const QString &fileName)\n{\n    QFile f(fileName);\n    if (f.open(QFile::ReadOnly)) {\n        read(&f);\n        setModified(false);\n        if (f.error() == QFile::NoError) {\n           m_documentFile = f.fileName();\n           QFileInfo info(f);\n           setWindowFilePath(info.absoluteFilePath());\n           setWindowTitle(info.fileName());\n           QsciLexer *l=lexerFromFile(info.absoluteFilePath());\n           if (l) {\n               setLexer(l);\n               lexer()->setFont(font());\n           }\n           auto mime = QMimeDatabase().mimeTypeForFile(fileName);\n           qDebug() << mime.name() << mime.allAncestors();\n           if (mime.inherits(\"text/x-csrc\")) {\n               if (makefileInfo()) {\n                   auto lang = new CLangCodeContext(this);\n                   lang->setWorkingDir(makefileInfo()->workingDir);\n                   lang->discoverFor(fileName);\n               } else\n                   qDebug() << \"no makefile info\";\n           }\n           loadConfig();\n           if (mime.inherits(\"text/x-makefile\"))\n               setIndentationsUseTabs(true); // Force tabs if makefile\n           return true;\n        }\n    }\n    emit fileError(f.errorString());\n    return false;\n}\n\nbool CodeEditor::save()\n{\n    if (m_documentFile.isEmpty())\n        return true;\n    QFile f(m_documentFile);\n    if (f.open(QFile::WriteOnly)) {\n        bool r = write(&f);\n        if (r)\n            setModified(false);\n        return r;\n    } else\n        emit fileError(f.errorString());\n    return false;\n}\n\nvoid CodeEditor::reload()\n{\n    if (!m_documentFile.isEmpty()) {\n        int l, i;\n        getCursorPosition(&l, &i);\n        QFile f(m_documentFile);\n        bool mod = isModified();\n        if (f.open(QFile::ReadOnly)) {\n            read(&f);\n            loadConfig();\n            setCursorPosition(l, i);\n            setModified(mod);\n        }\n    }\n}\n\nvoid CodeEditor::clearSelection()\n{\n    removeSelectedText();\n}\n\nvoid CodeEditor::findTagUnderCursor()\n{\n    QString tag = wordUnderCursor();\n    ETags tagList = makefileInfo()->tags;\n    QList<ETags::Tag> tagFor = tagList.find(tag);\n\n    QDialog dialog(this);\n    auto layout = new QHBoxLayout(&dialog);\n    auto view = new TagList(&dialog);\n    view->setTagList(tagFor);\n    layout->addWidget(view);\n    layout->setMargin(0);\n    connect(view, SIGNAL(itemActivated(QListWidgetItem *)), &dialog, SLOT(accept()));\n    dialog.resize(dialog.sizeHint());\n    if (dialog.exec() == QDialog::Accepted) {\n        ETags::Tag sel = view->selectedTag();\n        if (sel.isEmpty()) {\n            qDebug() << \"No selection found\";\n        } else {\n            QString url = makefileInfo()->workingDir + QDir::separator() + sel.file;\n            qDebug() << \"opening \" << url;\n            emit requireOpen(url, sel.line, 0);\n        }\n    }\n}\n\nvoid CodeEditor::setDebugPointer(int line)\n{\n    qDebug() << \"set debug pointer \" << line;\n    if (ip != -1)\n       markerDelete(ip, SC_MARK_ARROW);\n    ip = line;\n    if (ip != -1) {\n       markerAdd(ip, SC_MARK_ARROW);\n    }\n}\n\nvoid CodeEditor::adjustLineNumberMargin()\n{\n    QFontMetrics m(font());\n    setMarginWidth(0, m.width(QString().fill('0', 2 + static_cast<int>(std::log10(lines())))));\n}\n\nvoid CodeEditor::textSelected()\n{\n    int editorLength = SendScintilla(SCI_GETLENGTH);\n    SendScintilla(SCI_SETINDICATORCURRENT, 0);\n    SendScintilla(SCI_INDICATORCLEARRANGE, 0, editorLength);\n\n    QString word = selectedText();\n    if (word.isEmpty())\n        return;\n\n    int endpos = 0;\n    int startpos = 0;\n    startpos = findText(word, SCFIND_WHOLEWORD, startpos, &endpos);\n    while(startpos != -1) {\n        SendScintilla(SCI_INDICATORFILLRANGE, startpos, endpos - startpos);\n        startpos = findText(word, SCFIND_WHOLEWORD, endpos + 1, &endpos);\n    }\n}\n\nQString CodeEditor::wordUnderCursor() const {\n    int line, col;\n    getCursorPosition(&line, &col);\n    return wordAtLineIndex(line, col);\n#if 0\n    QString str = text(line);\n    int startPos = str.left(col).lastIndexOf(QRegExp(\"\\\\b\"));\n    int endPos = str.indexOf(QRegExp(\"\\\\b\"), col);\n    if ( startPos >= 0 && endPos >= 0 && endPos > startPos )\n        return str.mid(startPos, endPos - startPos);\n    else\n        return \"\";\n#endif\n}\n\nQString CodeEditor::lineUnderCursor() const\n{\n    int line, col;\n    getCursorPosition(&line, &col);\n    QString str = text(line);\n    return str;\n}\n\nvoid CodeEditor::resizeEvent(QResizeEvent *e)\n{\n    QsciScintilla::resizeEvent(e);\n\n    QWidget *v = viewport();\n    QRect r = v->rect();\n    replaceDialog->adjustSize();\n    r.setHeight(replaceDialog->height());\n    r.moveBottom(v->rect().height());\n    r.setLeft(v->pos().x());\n    replaceDialog->setGeometry(r);\n}\n\nvoid CodeEditor::keyPressEvent(QKeyEvent *event)\n{\n    if (replaceDialog->isVisible()) {\n        event->ignore();\n        return;\n    }\n    if (m_completer->popup()->isVisible()) {\n        switch(event->key()) {\n        case Qt::Key_Return:\n        case Qt::Key_Enter:\n        case Qt::Key_Escape:\n        case Qt::Key_Tab:\n        case Qt::Key_Backtab:\n            event->ignore();\n            return;\n        }\n        QsciScintilla::keyPressEvent(event);\n        completionShow();\n    } else {\n        switch(event->key()) {\n        case Qt::Key_Space:\n            if (event->modifiers() == Qt::CTRL) {\n                emit updateCodeContext();\n                event->accept();\n                return;\n            }\n            break;\n        }\n        QsciScintilla::keyPressEvent(event);\n    }\n}\n\nvoid CodeEditor::contextMenuEvent(QContextMenuEvent *event)\n{\n    QString word = wordUnderCursor();\n    bool isTextUnderCursor = !word.isEmpty();\n    QMenu *menu = createContextMenu();\n    menu->addSeparator();\n    QAction *findSimbol = menu->addAction(QIcon(\":/images/edit-find.svg\"),\n                                          tr(\"Find symbol under cursor\"),\n                                          this, SLOT(findTagUnderCursor()));\n    findSimbol->setEnabled(isTextUnderCursor && makefileInfo() != nullptr);\n    menu->exec(event->globalPos());\n    event->accept();\n}\n\nvoid CodeEditor::closeEvent(QCloseEvent *event)\n{\n    if (isModified()) {\n        QMessageBox messageBox(QMessageBox::Question,\n                               tr(\"Document Modified\"),\n                               tr(\"The document is not save. Save it?\"),\n                               QMessageBox::Yes | QMessageBox::No | QMessageBox::Abort,\n                               this);\n        messageBox.setButtonText(QMessageBox::Yes, tr(\"Yes\"));\n        messageBox.setButtonText(QMessageBox::No, tr(\"No\"));\n        messageBox.setButtonText(QMessageBox::Abort, tr(\"Abort\"));\n        int r = messageBox.exec();\n        switch (r) {\n        case QMessageBox::Yes:\n            save();\n            break;\n        case QMessageBox::Abort:\n            event->ignore();\n            break;\n        case QMessageBox::No:\n            break;\n        }\n    }\n}\n\nstatic STDCALL char* tempMemoryAllocation(unsigned long memoryNeeded)\n{\n    char* buffer = new char[memoryNeeded];\n    return buffer;\n}\n\nstatic STDCALL void tempError(int errorNumber, const char* errorMessage)\n{\n    qDebug() << errorNumber << errorMessage;\n}\n\nvoid CodeEditor::formatSelection()\n{\n    auto mime = QMimeDatabase().mimeTypeForFile(windowFilePath());\n    if (mime.inherits(\"text/x-csrc\")) {\n        int l, i;\n        getCursorPosition(&l, &i);\n        QString inText = selectedText();\n        if (inText.isEmpty()) {\n            selectAll();\n            inText = selectedText();\n        }\n        QByteArray rawText = inText.toUtf8();\n        char* utf8In = rawText.data();\n        auto& cfg = AppConfig::mutableInstance();\n        const QString style = cfg.editorFormatterStyle();\n        const QString indentType = cfg.editorTabsToSpaces()? \"spaces\" : \"tab\";\n        int indentCount = cfg.editorTabWidth();\n        char* utf8Out = AStyleMain(utf8In,\n                                   (QString(\"--style=%1 \"\n                                           \"--indent=%2=%3\")\n                                    .arg(style)\n                                    .arg(indentType)\n                                    .arg(indentCount)).toLatin1().data(),\n                                   tempError,\n                                   tempMemoryAllocation);\n        replaceSelectedText(QString::fromUtf8(utf8Out));\n        setCursorPosition(l, i);\n        ensureLineVisible(l);\n    }\n}\n\nvoid CodeEditor::loadConfig()\n{\n    AppConfig& config = AppConfig::mutableInstance();\n    QFont fonts(config.editorFontStyle());\n    fonts.setPointSize(config.editorFontSize());\n    setFont(fonts);\n\n    loadStyle(stylePath(config.editorStyle()));\n\n    setIndentationsUseTabs(!config.editorTabsToSpaces());\n    setTabWidth(config.editorTabWidth());\n    setAutoIndent(true);\n    setBraceMatching(StrictBraceMatch);\n    resetMatchedBraceIndicator();\n    setBackspaceUnindents(true);\n    setFolding(CircledTreeFoldStyle);\n    setIndentationGuides(true);\n\n    setCaretLineVisible(true);\n    setMarginsFont(fonts);\n    setMarginLineNumbers(0, true);\n    // setMarginsBackgroundColor(QColor(\"#cccccc\"));\n\n    SendScintilla(SCI_SETMULTIPLESELECTION, 1l, 0l);\n    SendScintilla(SCI_SETADDITIONALSELECTIONTYPING, 1l, 0l);\n\n    setMarginSensitivity(1, true);\n    markerDefine(QsciScintilla::Circle, SC_MARK_CIRCLE);\n    markerDefine(QsciScintilla::RightArrow, SC_MARK_ARROW);\n    setMargins(3);\n    setMarkerBackgroundColor(QColor(\"#1111ee\"), SC_MARK_CIRCLE);\n    setMarkerBackgroundColor(QColor(\"#ee1111\"), SC_MARK_ARROW);\n    setAnnotationDisplay(AnnotationIndented);\n    adjustLineNumberMargin();\n\n    SendScintilla(SCI_INDICSETSTYLE, 0, INDIC_ROUNDBOX);\n    SendScintilla(SCI_INDICSETFORE, 0, 255);\n\n}\n\nbool CodeEditor::loadStyle(const QString &xmlStyleFile)\n{\n    QFile file(xmlStyleFile);\n    if (!file.open(QFile::ReadOnly)) {\n        qDebug() << \"cannot load\" << xmlStyleFile << \"style:\" << file.errorString();\n        return false;\n    }\n    QDomDocument doc;\n    QString errorMsg;\n    if (!doc.setContent(&file, &errorMsg)) {\n        qDebug() << \"cannot load\" << xmlStyleFile << \"style:\" << errorMsg;\n        return false;\n    }\n    QDomElement root = doc.firstChildElement(\"NotepadPlus\");\n    if (root.isNull()) {\n        qDebug() << \"cannot load\" << xmlStyleFile << \"not contain NotepadPlus tag\";\n        return false;\n    }\n    if (1) {\n        QDomElement globalStyles = root.firstChildElement(\"GlobalStyles\");\n        if (globalStyles.isNull()) {\n            qDebug() << \"cannot load\" << xmlStyleFile << \"not GlobalStyles\";\n            return false;\n        }\n        QDomElement wStyle = globalStyles.firstChildElement(\"WidgetStyle\");\n        while (!wStyle.isNull()) {\n            QString name = wStyle.attribute(\"name\");\n            int styleID = wStyle.attribute(\"styleID\", \"-1\").toInt();\n            QColor fgColor = QColor(QString(\"#%1\").arg(wStyle.attribute(\"fgColor\")));\n            QColor bgColor = QColor(QString(\"#%1\").arg(wStyle.attribute(\"bgColor\")));\n            //QString fontName = wStyle.attribute(\"fontName\");\n            int fontStyle = wStyle.attribute(\"fontStyle\", \"0\").toInt();\n            //int fontSize = wStyle.attribute(\"fontSize\", QString(\"%1\").arg(font().pixelSize())).toInt();\n            if (styleID == 0) {\n                if (name == \"Global override\") {\n                    setColor(fgColor);\n                    setPaper(bgColor);\n                    goto set_global;\n                } else if (name == \"Current line background colour\") {\n                    setCaretLineBackgroundColor(bgColor);\n                } else if (name == \"Selected text colour\") {\n                    setSelectionBackgroundColor(bgColor);\n                } else if (name == \"Edge colour\") {\n                    setEdgeColor(fgColor);\n                } else if (name == \"Fold\") {\n                    // setFoldMarginColors(fgColor, bgColor);\n                } else if (name == \"Fold active\") {\n                } else if (name == \"Fold margin\") {\n                    setFoldMarginColors(fgColor, bgColor);\n                } else if (name == \"White space symbol\") {\n                    setWhitespaceForegroundColor(fgColor);\n                    setWhitespaceBackgroundColor(paper());\n                } else if (name == \"Active tab focused indicator\") {\n                } else if (name == \"Active tab unfocused indicator\") {\n                } else if (name == \"Active tab text\") {\n                } else if (name == \"Inactive tabs\") {\n                }\n            } else {\nset_global:\n                QsciStyle style(styleID);\n                if (fgColor.isValid())\n                    style.setColor(fgColor);\n                if (bgColor.isValid())\n                    style.setPaper(bgColor);\n                QFont f(font());\n                //if (!fontName.isEmpty() && QFont(fontName).family() == fontName)\n                //    f.setFamily(fontName);\n                //if (fontSize > 0)\n                //    f.setPixelSize(fontSize);\n                if (fontStyle&1)\n                    f.setBold(true);\n                if (fontStyle&2)\n                    f.setItalic(true);\n                if (fontStyle&4)\n                    f.setUnderline(true);\n                style.setFont(f);\n\n                style.apply(this);\n            }\n            wStyle = wStyle.nextSiblingElement(\"WidgetStyle\");\n        }\n    }\n    if (lexer()) {\n        QString currentLexerName = lexer()->lexer();\n        QString currentLexerDesc = lexer()->language();\n        QDomElement lexerStyles = root.firstChildElement(\"LexerStyles\");\n        if (!lexerStyles.isNull()) {\n            QDomElement lType = lexerStyles.firstChildElement(\"LexerType\");\n            while (!lType.isNull()) {\n                QString lexerName = lType.attribute(\"name\");\n                QString lexerDesc = lType.attribute(\"desc\");\n                if (lexerName == currentLexerName || lexerDesc == currentLexerDesc) {\n                    QDomElement wStyle = lType.firstChildElement(\"WordsStyle\");\n                    while (!wStyle.isNull()) {\n                        QString name = wStyle.attribute(\"name\");\n                        int styleID = wStyle.attribute(\"styleID\", \"-1\").toInt();\n                        if (!name.isEmpty() && styleID != -1) {\n                            QColor fgColor = QColor(QString(\"#%1\").arg(wStyle.attribute(\"fgColor\")));\n                            QColor bgColor = QColor(QString(\"#%1\").arg(wStyle.attribute(\"bgColor\")));\n                            //QString fontName = wStyle.attribute(\"fontName\");\n                            int fontStyle = wStyle.attribute(\"fontStyle\", \"0\").toInt();\n                            //int fontSize = wStyle.attribute(\"fontSize\", QString(\"%1\").arg(font().pixelSize())).toInt();\n                            QsciStyle style(styleID);\n                            if (fgColor.isValid())\n                                style.setColor(fgColor);\n                            if (bgColor.isValid())\n                                style.setPaper(bgColor);\n                            QFont f(font());\n                            //if (!fontName.isEmpty() && QFont(fontName).family() == fontName)\n                            //    f.setFamily(fontName);\n                            //if (fontSize > 0)\n                            //    f.setPixelSize(fontSize);\n                            if (fontStyle&1)\n                                f.setBold(true);\n                            if (fontStyle&2)\n                                f.setItalic(true);\n                            if (fontStyle&4)\n                                f.setUnderline(true);\n                            style.setFont(f);\n\n                            style.apply(this);\n                        }\n                        wStyle = wStyle.nextSiblingElement(\"WordsStyle\");\n                    }\n                    break;\n                }\n                lType = lType.nextSiblingElement(\"LexerType\");\n            }\n        } else\n            qDebug() << \"No styles element\";\n    }\n    return true;\n}\n"
  },
  {
    "path": "old/codeeditor.h",
    "content": "#ifndef CODEEDITOR_H\n#define CODEEDITOR_H\n\n// #include <QPlainTextEdit>\n#include <Qsci/qsciscintilla.h>\n#include <QFile>\n\n#include \"makefileinfo.h\"\n\nclass QPaintEvent;\nclass QResizeEvent;\nclass QSize;\nclass QWidget;\nclass QCompleter;\n\nclass FormFindReplace;\n\nclass QsvColorDefFactory;\nclass QsvLangDef;\nclass QsvSyntaxHighlighter;\nclass QsvTextOperationsWidget;\n\nclass CodeEditor : public QsciScintilla //QPlainTextEdit\n{\n    Q_OBJECT\n\npublic:\n    explicit CodeEditor(QWidget *parent = 0);\n\n    const MakefileInfo *makefileInfo() const { return mk; }\n\nprotected:\n    void resizeEvent(QResizeEvent *event);\n    void keyPressEvent(QKeyEvent *event);\n    void contextMenuEvent(QContextMenuEvent *event);\n    void closeEvent(QCloseEvent *event);\n\npublic slots:\n    void formatSelection();\n\n    void insertCompletion(const QString &completion);\n\n    void codeContextUpdate(const QStringList& list);\n\n    void setMakefileInfo(const MakefileInfo *mk) { this->mk = mk; }\n\n    void moveTextCursor(int row, int col);\n\n    void loadConfig();\n    bool loadStyle(const QString& xmlStyleFile);\n    bool load(const QString &fileName);\n    bool save();\n    void reload();\n\n    void clearSelection();\n    void findTagUnderCursor();\n\n    int getDebugPointer() const { return ip; }\n    void clearDebugPointer() { setDebugPointer(-1); }\n    void setDebugPointer(int line);\n\nprivate slots:\n    void adjustLineNumberMargin();\n    void textSelected();\n\nsignals:\n    void fileError(const QString& errorText);\n    void updateCodeContext();\n    void requireOpen(const QString& file, int row, int col);\n    void requestForSave(CodeEditor *sender);\n\nprivate:\n    QString wordUnderCursor() const;\n    QString lineUnderCursor() const;\n    void completionShow();\n    QMenu *createContextMenu();\n    QRect cursorRect() const;\n    int findText(const QString& text, int flags, int start, int *targend);\n\n    FormFindReplace *replaceDialog;\n    QCompleter *m_completer;\n    QString m_documentFile;\n    QHash<int, int> breakPointMarkToLine;\n    const MakefileInfo *mk;\n    int ip;\n};\n\nQString stylePath(const QString& styleName);\n\n#endif // CODEEDITOR_H\n"
  },
  {
    "path": "old/codetemplate.cpp",
    "content": "#include \"codetemplate.h\"\n\n#include <QNetworkAccessManager>\n#include <QTextStream>\n\nQString CodeTemplate::templateText() const\n{\n    if (!isLocal())\n        return QString();\n    QFile f(m_path.absoluteFilePath());\n    if (!f.open(QFile::ReadOnly))\n        return QString();\n    return QTextStream(&f).readAll();\n}\n\nuint qHash(const CodeTemplate &self)\n{\n    return self.url().isValid()?\n                qHash(QFileInfo(self.url().fileName()).baseName()) :\n                qHash(self.path().baseName());\n}\n"
  },
  {
    "path": "old/codetemplate.h",
    "content": "#ifndef CODETEMPLATE_H\n#define CODETEMPLATE_H\n\n#include <QFileInfo>\n#include <QUrl>\n\nclass CodeTemplate\n{\npublic:\n    CodeTemplate() {}\n    CodeTemplate(const QFileInfo& _path) : m_path(_path) {}\n    CodeTemplate(const QUrl& _url, const QFileInfo& _path=QFileInfo()) : m_url(_url), m_path(_path) {}\n\n    bool isNull() const { return m_path.absoluteFilePath().isEmpty() && m_url.isEmpty(); }\n    bool isLocal() const { return m_path.exists(); }\n    QFileInfo path() const { return m_path; }\n    QUrl url() const { return m_url; }\n    QString templateText() const;\n\n    void setUrl(const QUrl& url) { m_url = url; }\n    void setFilePath(const QFileInfo& path) { m_path = path; }\n\n    bool operator ==(const CodeTemplate& o) const { return o.m_path == m_path || o.m_url == m_url; }\n\nprivate:\n    QFileInfo m_path;\n    QUrl m_url;\n};\n\nuint qHash(const CodeTemplate&);\n\nQ_DECLARE_METATYPE(CodeTemplate)\n\n#endif // CODETEMPLATE_H\n"
  },
  {
    "path": "old/combodocumentview.cpp",
    "content": "#include \"combodocumentview.h\"\n\n#include <QComboBox>\n#include <QEvent>\n#include <QHBoxLayout>\n#include <QStackedWidget>\n#include <QToolButton>\n#include <QtDebug>\n\n#if 0\n#define LOG(...) do { qDebug() << __func__ << __LINE__ << \": \" << __VA_ARGS__; } while(0)\n#else\n#define LOG(...) ((void)0)\n#endif\n\nstruct ComboDocumentView::Priv_t {\n    QHBoxLayout *horizontalLayout;\n    QStackedWidget *stackedWidget;\n    QComboBox *comboDocuments;\n};\n\nComboDocumentView::ComboDocumentView(QWidget *parent) :\n    QWidget(parent),\n    priv(new ComboDocumentView::Priv_t)\n{\n    QVBoxLayout *verticalLayout;\n    verticalLayout = new QVBoxLayout(this);\n    verticalLayout->setSpacing(0);\n    verticalLayout->setObjectName(QStringLiteral(\"verticalLayout\"));\n    verticalLayout->setContentsMargins(0, 0, 0, 0);\n    priv->horizontalLayout = new QHBoxLayout();\n    priv->horizontalLayout->setSpacing(0);\n    priv->horizontalLayout->setObjectName(QStringLiteral(\"horizontalLayout\"));\n    priv->comboDocuments = new QComboBox(this);\n    priv->comboDocuments->setObjectName(QStringLiteral(\"comboDocuments\"));\n\n    priv->horizontalLayout->addWidget(priv->comboDocuments);\n    verticalLayout->addLayout(priv->horizontalLayout);\n\n    priv->stackedWidget = new QStackedWidget(this);\n    priv->stackedWidget->setObjectName(QStringLiteral(\"stackedWidget\"));\n\n    verticalLayout->addWidget(priv->stackedWidget);\n\n    priv->comboDocuments->setEnabled(false);\n\n    QMetaObject::connectSlotsByName(this);\n}\n\nComboDocumentView::~ComboDocumentView()\n{\n    delete priv;\n}\n\nvoid ComboDocumentView::addWidgetToLeftCorner(QWidget *w)\n{\n    priv->horizontalLayout->insertWidget(0, w);\n    w->setParent(this);\n}\n\nvoid ComboDocumentView::addWidgetToRigthCorner(QWidget *w)\n{\n    priv->horizontalLayout->addWidget(w);\n    w->setParent(this);\n}\n\nvoid ComboDocumentView::addActionToLeftCorner(QAction *a)\n{\n    QToolButton *b = new QToolButton(this);\n    b->setDefaultAction(a);\n    b->setAutoRaise(true);\n    addWidgetToLeftCorner(b);\n}\n\nvoid ComboDocumentView::addActionToRightCorner(QAction *a)\n{\n    QToolButton *b = new QToolButton(this);\n    b->setDefaultAction(a);\n    b->setAutoRaise(true);\n    addWidgetToRigthCorner(b);\n}\n\nint ComboDocumentView::addWidget(QWidget *w, const QString &title)\n{\n    int idx = priv->stackedWidget->addWidget(w);\n    priv->comboDocuments->addItem(title, QVariant::fromValue(w));\n    priv->comboDocuments->setEnabled(true);\n    emit widgetAdded(idx, w);\n    LOG(idx);\n    return idx;\n}\n\nvoid ComboDocumentView::removeWidget(QWidget *w)\n{\n    int idx = priv->stackedWidget->indexOf(w);\n    LOG(idx);\n    priv->stackedWidget->removeWidget(w);\n    priv->comboDocuments->setEnabled(widgetCount() > 0);\n    emit widgetRemoved(idx, w);\n}\n\nvoid ComboDocumentView::removeWidget(int idx)\n{\n    QWidget *w = priv->stackedWidget->widget(idx);\n    if (w) {\n        LOG(idx);\n        bool s;\n        s = priv->stackedWidget->blockSignals(true);\n        priv->stackedWidget->removeWidget(w);\n        priv->stackedWidget->blockSignals(s);\n        s = priv->comboDocuments->blockSignals(true);\n        int comboIdx = comboIndexFromStackWidget(w);\n        if (comboIdx != -1)\n            priv->comboDocuments->removeItem(comboIdx);\n        else\n            LOG(\"comboIdx -1\");\n        priv->comboDocuments->blockSignals(s);\n        priv->comboDocuments->setEnabled(widgetCount() > 0);\n        emit widgetRemoved(idx, w);\n    }\n}\n\nQWidget *ComboDocumentView::currentWidget() const\n{\n    return priv->stackedWidget->currentWidget();\n}\n\nint ComboDocumentView::currentIndex() const\n{\n    return priv->stackedWidget->currentIndex();\n}\n\nint ComboDocumentView::widgetCount() const\n{\n    return priv->stackedWidget->count();\n}\n\nQWidget *ComboDocumentView::widget(int idx) const\n{\n    return priv->stackedWidget->widget(idx);\n}\n\nint ComboDocumentView::index(QWidget *w) const\n{\n    return priv->stackedWidget->indexOf(w);\n}\n\nQString ComboDocumentView::widgetTitle(int idx) const\n{\n    int comboIndex = comboIndexFromStackIndex(idx);\n    return priv->comboDocuments->itemText(comboIndex);\n}\n\nQString ComboDocumentView::widgetTitle(QWidget *w) const\n{\n    int comboIndex = comboIndexFromStackWidget(w);\n    return priv->comboDocuments->itemText(comboIndex);\n}\n\nvoid ComboDocumentView::setCurrentIndex(int idx)\n{\n    priv->stackedWidget->setCurrentIndex(idx);\n}\n\nvoid ComboDocumentView::setCurrentWidget(QWidget *w)\n{\n    priv->stackedWidget->setCurrentWidget(w);\n}\n\nvoid ComboDocumentView::setWidgetTitle(int idx, const QString &title)\n{\n    setWidgetTitle(widget(idx), title);\n}\n\nvoid ComboDocumentView::setWidgetTitle(QWidget *w, const QString &title)\n{\n    int comboIndex = comboIndexFromStackWidget(w);\n    if (comboIndex != -1) {\n        priv->comboDocuments->setItemText(comboIndex, title);\n    } else\n        LOG(\"comboIndex == -1\");\n}\n\nbool ComboDocumentView::event(QEvent *event)\n{\n    switch (event->type()) {\n    case QEvent::WindowActivate:\n        if (currentWidget())\n            currentWidget()->setFocus();\n        break;\n    }\n    return QWidget::event(event);\n}\n\nvoid ComboDocumentView::on_stackedWidget_currentChanged(int index)\n{\n    int comboIndex = comboIndexFromStackIndex(index);\n    LOG(QString(\"index: %1 comboIndex: %2\").arg(index).arg(comboIndex));\n    if (comboIndex == -1)\n        return;\n    priv->comboDocuments->setCurrentIndex(comboIndex);\n    emit widgetCurrentChanged(index, priv->stackedWidget->widget(index));\n}\n\nvoid ComboDocumentView::on_stackedWidget_widgetRemoved(int index)\n{\n    int comboIndex = comboIndexFromStackIndex(index);\n    QWidget *w = stackWidgetFromComboIndex(comboIndex);\n    LOG(QString(\"index: %1 comboIndex: %2\").arg(index).arg(comboIndex));\n    if (comboIndex == -1)\n        return;\n    priv->comboDocuments->removeItem(comboIndex);\n    emit widgetRemoved(index, w);\n}\n\nvoid ComboDocumentView::on_comboDocuments_currentIndexChanged(int index)\n{\n    int comboIndex = comboIndexFromStackIndex(index);\n    LOG(QString(\"index: %1 comboIndex: %2\").arg(index).arg(comboIndex));\n}\n\nvoid ComboDocumentView::on_comboDocuments_activated(int index)\n{\n    int didx = stackIndexFromComboIndex(index);\n    LOG(QString(\"comboIndex: %1 stackIndex: %2\").arg(index).arg(didx));\n    if (didx == -1)\n        return;\n    priv->stackedWidget->setCurrentIndex(didx);\n}\n\nint ComboDocumentView::comboIndexFromStackIndex(int idx) const\n{\n    return comboIndexFromStackWidget(priv->stackedWidget->widget(idx));\n}\n\nint ComboDocumentView::comboIndexFromStackWidget(QWidget *w) const\n{\n    auto vidx = QVariant::fromValue(w);\n    return priv->comboDocuments->findData(vidx);\n}\n\nint ComboDocumentView::stackIndexFromComboIndex(int idx) const\n{\n    return priv->stackedWidget->indexOf(stackWidgetFromComboIndex(idx));\n}\n\nQWidget *ComboDocumentView::stackWidgetFromComboIndex(int idx) const\n{\n    return priv->comboDocuments->itemData(idx).value<QWidget*>();\n}\n"
  },
  {
    "path": "old/combodocumentview.h",
    "content": "#ifndef COMBODOCUMENTVIEW_H\n#define COMBODOCUMENTVIEW_H\n\n#include <QAction>\n#include <QWidget>\n\nclass ComboDocumentView : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit ComboDocumentView(QWidget *parent = 0);\n    ~ComboDocumentView();\n\n    void addWidgetToLeftCorner(QWidget *w);\n    void addWidgetToRigthCorner(QWidget *w);\n\n    void addActionToLeftCorner(QAction *a);\n    QAction *addActionToLeftCorner(const QIcon& icon, const QString& text, QObject *recv, const char *slot_name) {\n        auto a = new QAction(icon, text, this);\n        addActionToLeftCorner(a);\n        connect(a, SIGNAL(triggered()), recv, slot_name);\n        return a;\n    }\n\n    void addActionToRightCorner(QAction *a);\n    QAction *addActionToRightCorner(const QIcon& icon, const QString& text, QObject *recv, const char *slot_name) {\n        auto a = new QAction(icon, text, this);\n        addActionToRightCorner(a);\n        connect(a, SIGNAL(triggered()), recv, slot_name);\n        return a;\n    }\n\n    int addWidget(QWidget *w, const QString& title);\n    void removeWidget(QWidget *w);\n    void removeWidget(int idx);\n\n    QWidget *currentWidget() const;\n    int currentIndex() const;\n    int widgetCount() const;\n    QWidget *widget(int idx) const;\n    int index(QWidget *w) const;\n    QString widgetTitle(int idx) const;\n    QString widgetTitle(QWidget *w) const;\n\n    void setCurrentIndex(int idx);\n    void setCurrentWidget(QWidget *w);\n\n    void setWidgetTitle(int idx, const QString& title);\n    void setWidgetTitle(QWidget *w, const QString& title);\n\nprotected:\n    bool event(QEvent *event);\n\nsignals:\n    void widgetAdded(int idx, QWidget *w);\n    void widgetRemoved(int idx, QWidget *w);\n    void widgetCurrentChanged(int idx, QWidget *w);\n\nprivate slots:\n    void on_stackedWidget_currentChanged(int index);\n\n    void on_stackedWidget_widgetRemoved(int index);\n\n    void on_comboDocuments_currentIndexChanged(int index);\n\n    void on_comboDocuments_activated(int index);\n\nprivate:\n    struct Priv_t;\n    Priv_t *priv;\n\n    int comboIndexFromStackIndex(int idx) const;\n    int comboIndexFromStackWidget(QWidget *w) const;\n    int stackIndexFromComboIndex(int idx) const;\n    QWidget *stackWidgetFromComboIndex(int idx) const;\n};\n\n#endif // COMBODOCUMENTVIEW_H\n"
  },
  {
    "path": "old/componentitemwidget.cpp",
    "content": "#include \"componentitemwidget.h\"\n#include \"ui_componentitemwidget.h\"\n\nComponentItemWidget::ComponentItemWidget(const CodeTemplate &ct, QWidget *parent) :\n    QWidget(parent),\n    m_codeTemplate(ct),\n    ui(new Ui::ComponentItemWidget)\n{\n    ui->setupUi(this);\n    connect(ui->buttonDownloadNew, &QToolButton::clicked, [this]() { emit downloadItem(m_codeTemplate); });\n    connect(ui->buttonRemoveFromFile, &QToolButton::clicked, [this]() { emit removeItem(m_codeTemplate); });\n    setPath(ct.path());\n    setUrl(ct.url());\n}\n\nComponentItemWidget::~ComponentItemWidget()\n{\n    delete ui;\n}\n\nvoid ComponentItemWidget::setPath(const QFileInfo &path)\n{\n    auto& ct = m_codeTemplate;\n    ct.setFilePath(path);\n    auto name = ct.path().baseName();\n    if (name.isEmpty())\n        name = QFileInfo(ct.url().fileName()).baseName();\n    ui->labelComponentName->setText(name);\n}\n\nvoid ComponentItemWidget::setUrl(const QUrl &url)\n{\n    auto& ct = m_codeTemplate;\n    ct.setUrl(url);\n    if (url.isValid()) {\n        ui->labelComponentUrl->setText(tr(R\"(<a href=\"%1\">%2: %3</a>)\")\n                                       .arg(ct.url().toString())\n                                       .arg(ct.url().host())\n                                       .arg(ct.url().fileName()));\n        setDownloadable(true);\n    } else\n        ui->labelComponentUrl->clear();\n    ui->checkCanDownload->setEnabled(url.isValid());\n    ui->buttonDownloadNew->setEnabled(url.isValid());\n}\n\nvoid ComponentItemWidget::setDownloadable(bool dl)\n{\n    ui->checkCanDownload->setChecked(dl);\n}\n\nbool ComponentItemWidget::isDownloadable() const\n{\n    return ui->checkCanDownload->isChecked();\n}\n"
  },
  {
    "path": "old/componentitemwidget.h",
    "content": "#ifndef COMPONENTITEMWIDGET_H\n#define COMPONENTITEMWIDGET_H\n\n#include <QWidget>\n#include \"codetemplate.h\"\n\nnamespace Ui {\nclass ComponentItemWidget;\n}\n\nclass ComponentItemWidget : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit ComponentItemWidget(const CodeTemplate& ct, QWidget *parent = 0);\n    ~ComponentItemWidget();\n\n    void setPath(const QFileInfo& path);\n    void setUrl(const QUrl& url);\n    void setDownloadable(bool dl);\n    bool isDownloadable() const;\n\nsignals:\n    void downloadItem(const CodeTemplate& item);\n    void removeItem(const CodeTemplate& item);\n\nprivate:\n    Ui::ComponentItemWidget *ui;\n    CodeTemplate m_codeTemplate;\n};\n\n#endif // COMPONENTITEMWIDGET_H\n"
  },
  {
    "path": "old/componentitemwidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ComponentItemWidget</class>\n <widget class=\"QWidget\" name=\"ComponentItemWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>581</width>\n    <height>61</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QGridLayout\" name=\"gridLayout\">\n   <item row=\"0\" column=\"1\">\n    <widget class=\"QToolButton\" name=\"buttonDownloadNew\">\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/edit-download.svg</normaloff>:/images/edit-download.svg</iconset>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"0\">\n    <widget class=\"QCheckBox\" name=\"checkCanDownload\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"text\">\n      <string>Download</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"2\">\n    <widget class=\"QLabel\" name=\"labelComponentName\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Preferred\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"text\">\n      <string>Component Name</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"3\">\n    <widget class=\"QToolButton\" name=\"buttonRemoveFromFile\">\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/edit-delete.svg</normaloff>:/images/edit-delete.svg</iconset>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"0\" colspan=\"4\">\n    <widget class=\"QLabel\" name=\"labelComponentUrl\">\n     <property name=\"text\">\n      <string>Component URL</string>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"../resources/resources.qrc\"/>\n </resources>\n <connections/>\n</ui>\n"
  },
  {
    "path": "old/componentsdialog.cpp",
    "content": "#include \"appconfig.h\"\n#include \"codetemplate.h\"\n#include \"componentitemwidget.h\"\n#include \"componentsdialog.h\"\n#include \"filedownloader.h\"\n#include \"ui_componentsdialog.h\"\n\n#include <QDir>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <QJsonArray>\n#include <QStringListModel>\n#include <QInputDialog>\n\n#include <QtDebug>\n\nstatic const QStringList TEMPLATES_FILTER{ \"*.template\" };\n\nstruct ComponentsDialog::Priv_t\n{\n    Ui_ComponentsDialog *ui;\n    ComponentsDialog *self;\n    QHash<QFileInfo, QListWidgetItem*> localFileList;\n\n    Priv_t(ComponentsDialog *_self, Ui_ComponentsDialog *_ui) : self(_self), ui(_ui) {}\n\n    void loadTemplates(const QJsonDocument& contents = QJsonDocument())\n    {\n        localFileList.clear();\n        ui->templateList->clear();\n        auto path = AppConfig::mutableInstance().buildTemplatePath();\n        auto list = QDir(path).entryInfoList(TEMPLATES_FILTER, QDir::Files);\n        for(const auto& e: list) {\n            CodeTemplate t{e};\n            localFileList.insert(t.path(), addItemToList(t));\n        }\n        if (!contents.isNull() && contents.isArray()) {\n            auto templatePath = QDir(AppConfig::mutableInstance().buildTemplatePath());\n            for(const auto& entry: contents.array()) {\n                auto oEntry = entry.toObject();\n                auto name = oEntry.value(\"name\").toString();\n                auto download_url = QUrl(oEntry.value(\"download_url\").toString());\n                auto localPath = QFileInfo(templatePath.absoluteFilePath(name));\n                if (TEMPLATES_FILTER.contains(QString(\"*.%1\").arg(localPath.suffix()))) {\n                    CodeTemplate t(download_url, localPath);\n                    auto item = localFileList.value(t.path(), nullptr);\n                    if (!item)\n                        item = addItemToList(t);\n                    auto widget = qobject_cast<ComponentItemWidget*>(ui->templateList->itemWidget(item));\n                    if (t.url().isValid())\n                        widget->setUrl(t.url());\n                }\n            }\n        }\n    }\n\nprivate:\n    QListWidgetItem *addItemToList(const CodeTemplate& t)\n    {\n        auto item = new QListWidgetItem();\n        auto widget = new ComponentItemWidget(t, self);\n        item->setSizeHint(widget->sizeHint());\n        ui->templateList->addItem(item);\n        ui->templateList->setItemWidget(item, widget);\n        return item;\n    }\n};\n\nComponentsDialog::ComponentsDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::ComponentsDialog),\n    d_ptr(new Priv_t(this, ui))\n{\n    ui->setupUi(this);\n    QStringList urlList{AppConfig::mutableInstance().buildTemplateUrl()};\n    ui->urlList->setModel(new QStringListModel(urlList));\n    // on_buttonUpdateRepos_clicked();\n}\n\nComponentsDialog::~ComponentsDialog()\n{\n    delete d_ptr;\n    delete ui;\n}\n\nvoid ComponentsDialog::on_buttonAddUrl_clicked()\n{\n    QUrl url(QInputDialog::getText(this, tr(\"URL Input\"), tr(\"Enter url to add\")));\n    if (!url.isEmpty() && url.isValid()) {\n        auto m = qobject_cast<QStringListModel*>(ui->urlList->model());\n        if (m) {\n            QStringList list = m->stringList();\n            list.append(url.toString());\n            m->setStringList(list);\n        }\n    }\n}\n\nvoid ComponentsDialog::on_buttonDelUrl_clicked()\n{\n    auto m = qobject_cast<QStringListModel*>(ui->urlList->model());\n    if (m) {\n        auto idx = ui->urlList->currentIndex();\n        if (idx.isValid()) {\n            auto strList = m->stringList();\n            strList.removeAt(idx.row());\n            m->setStringList(strList);\n        }\n    }\n}\n\nvoid ComponentsDialog::on_buttonDownloadAll_clicked()\n{\n}\n\nvoid ComponentsDialog::on_buttonUpdateRepos_clicked()\n{\n    auto downloader = new FileDownloader(this);\n    for(const auto& templateUrl: qobject_cast<QStringListModel*>(ui->urlList->model())->stringList())\n        downloader->enqueueDownload(templateUrl);\n    downloader->setProgressBar(ui->progressTotal, ui->progressItem);\n    connect(downloader, &FileDownloader::downloadDataFinished, [this](const QUrl&, const QByteArray& data) {\n        d_ptr->loadTemplates(QJsonDocument::fromJson(data));\n    });\n    connect(downloader, &FileDownloader::downloadError, [this]() { d_ptr->loadTemplates(); });\n    auto finalizeDownload = [this, downloader]() {\n        downloader->deleteLater();\n        ui->buttonDownloadAll->setEnabled(true);\n        ui->buttonUpdateRepos->setEnabled(true);\n    };\n    connect(downloader, &FileDownloader::downloadError, finalizeDownload);\n    connect(downloader, &FileDownloader::allDownloadsFinished, finalizeDownload);\n    ui->buttonDownloadAll->setEnabled(false);\n    ui->buttonUpdateRepos->setEnabled(false);\n    downloader->startDownload();\n}\n"
  },
  {
    "path": "old/componentsdialog.h",
    "content": "#ifndef COMPONENTSDIALOG_H\n#define COMPONENTSDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass ComponentsDialog;\n}\n\nclass ComponentsDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit ComponentsDialog(QWidget *parent = 0);\n    virtual ~ComponentsDialog();\n\nprivate slots:\n    void on_buttonAddUrl_clicked();\n\n    void on_buttonDelUrl_clicked();\n\n    void on_buttonDownloadAll_clicked();\n\n    void on_buttonUpdateRepos_clicked();\n\nprivate:\n    Ui::ComponentsDialog *ui;\n\n    struct Priv_t;\n    Priv_t *d_ptr;\n};\n\n#endif // COMPONENTSDIALOG_H\n"
  },
  {
    "path": "old/componentsdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ComponentsDialog</class>\n <widget class=\"QDialog\" name=\"ComponentsDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>703</width>\n    <height>468</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Dialog</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QListView\" name=\"urlList\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Preferred\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonAddUrl\">\n         <property name=\"icon\">\n          <iconset resource=\"../resources/resources.qrc\">\n           <normaloff>:/images/actions/list-add.svg</normaloff>:/images/actions/list-add.svg</iconset>\n         </property>\n         <property name=\"iconSize\">\n          <size>\n           <width>32</width>\n           <height>32</height>\n          </size>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonDelUrl\">\n         <property name=\"icon\">\n          <iconset resource=\"../resources/resources.qrc\">\n           <normaloff>:/images/actions/list-remove.svg</normaloff>:/images/actions/list-remove.svg</iconset>\n         </property>\n         <property name=\"iconSize\">\n          <size>\n           <width>32</width>\n           <height>32</height>\n          </size>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <spacer name=\"verticalSpacer\">\n         <property name=\"orientation\">\n          <enum>Qt::Vertical</enum>\n         </property>\n         <property name=\"sizeType\">\n          <enum>QSizePolicy::Preferred</enum>\n         </property>\n         <property name=\"sizeHint\" stdset=\"0\">\n          <size>\n           <width>20</width>\n           <height>0</height>\n          </size>\n         </property>\n        </spacer>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonUpdateRepos\">\n         <property name=\"icon\">\n          <iconset resource=\"../resources/resources.qrc\">\n           <normaloff>:/images/actions/view-refresh.svg</normaloff>:/images/actions/view-refresh.svg</iconset>\n         </property>\n         <property name=\"iconSize\">\n          <size>\n           <width>32</width>\n           <height>32</height>\n          </size>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonDownloadAll\">\n         <property name=\"icon\">\n          <iconset resource=\"../resources/resources.qrc\">\n           <normaloff>:/images/edit-download.svg</normaloff>:/images/edit-download.svg</iconset>\n         </property>\n         <property name=\"iconSize\">\n          <size>\n           <width>32</width>\n           <height>32</height>\n          </size>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <layout class=\"QGridLayout\" name=\"gridLayout\">\n     <item row=\"1\" column=\"0\" colspan=\"2\">\n      <widget class=\"QLabel\" name=\"label_2\">\n       <property name=\"text\">\n        <string>Current</string>\n       </property>\n      </widget>\n     </item>\n     <item row=\"1\" column=\"2\">\n      <widget class=\"QProgressBar\" name=\"progressItem\">\n       <property name=\"value\">\n        <number>0</number>\n       </property>\n      </widget>\n     </item>\n     <item row=\"0\" column=\"2\">\n      <widget class=\"QProgressBar\" name=\"progressTotal\">\n       <property name=\"value\">\n        <number>0</number>\n       </property>\n      </widget>\n     </item>\n     <item row=\"0\" column=\"0\" colspan=\"2\">\n      <widget class=\"QLabel\" name=\"label\">\n       <property name=\"text\">\n        <string>total</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QListWidget\" name=\"templateList\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"MinimumExpanding\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"../resources/resources.qrc\"/>\n </resources>\n <connections/>\n</ui>\n"
  },
  {
    "path": "old/configdialog.cpp",
    "content": "#include \"configdialog.h\"\n#include \"ui_configdialog.h\"\n\n#include <QDir>\n#include <QFile>\n#include <QFileDialog>\n#include <QInputDialog>\n#include <QStringListModel>\n#include <QProcess>\n#include <QProcessEnvironment>\n#include <QProgressDialog>\n#include <QNetworkRequest>\n#include <QMessageBox>\n#include <QNetworkAccessManager>\n#include <QNetworkReply>\n#include <QJsonDocument>\n#include <QJsonArray>\n#include <QJsonObject>\n\n#include <QDebug>\n\n#include \"filedownloader.h\"\n\n#include \"appconfig.h\"\n#include \"componentsdialog.h\"\n\n#include <Qsci/qscilexer.h>\n\nconst QStringList FORMAT_STYLE = {\n    \"allman\",\n    \"java\",\n    \"k\",\n    \"stroustrup\",\n    \"whitesmith\",\n    \"vtk\",\n    \"banner\",\n    \"gnu\",\n    \"linux\",\n    \"horstmann\",\n    \"otbs\",\n    \"google\",\n    \"pico\",\n    \"lisp\"\n};\n\nQString stylePath(const QString& styleName)\n{\n    return QString(\":/styles/%1.xml\").arg(styleName);\n}\n\nstatic QString styleName(const QString& stylePath)\n{\n    return QFileInfo(stylePath).completeBaseName();\n}\n\nConfigDialog::ConfigDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::ConfigDialog)\n{\n    ui->setupUi(this);\n    auto bg = new QButtonGroup(this);\n    bg->addButton(ui->noProxy);\n    bg->addButton(ui->systemProxy);\n    bg->addButton(ui->userProxy);\n    ui->additionalPathList->setModel(new QStringListModel(this));\n    ui->formatterStyles->setModel(new QStringListModel(FORMAT_STYLE, this));\n\n    load();\n\n    connect(ui->fontComboBox, SIGNAL(activated(int)), this, SLOT(refreshEditor()));\n    connect(ui->fontSpinBox, SIGNAL(valueChanged(int)), this, SLOT(refreshEditor()));\n    connect(ui->colorStyleComboBox, SIGNAL(activated(int)), this, SLOT(refreshEditor()));\n\n    refreshEditor();\n\n    ui->proxyPort->setValidator(new QIntValidator(0, 65535, this));\n}\n\nConfigDialog::~ConfigDialog()\n{\n    delete ui;\n}\n\nvoid ConfigDialog::setEditorSaveOnAction(bool val)\n{\n  AppConfig::mutableInstance().setEditorSaveOnAction(val);\n}\n\nvoid ConfigDialog::load()\n{\n    ui->codeEditor->load(\":/help/reference-code.c\");\n    ui->codeEditor->setReadOnly(true);\n    QDir d(\":/styles/\");\n    for(const auto& path: d.entryList(QStringList(\"*.xml\"))) {\n        ui->colorStyleComboBox->addItem(styleName(path));\n    }\n\n    AppConfig& config = AppConfig::mutableInstance();\n\n    ui->colorStyleComboBox->setCurrentIndex(\n          ui->colorStyleComboBox->findText(styleName(config.editorStyle())));\n\n    ui->logFontSpinBox->setValue(config.loggerFontSize());\n    ui->logFontComboBox->setCurrentFont(config.loggerFontStyle());\n\n    ui->fontSpinBox->setValue(config.editorFontSize());\n    ui->fontComboBox->setCurrentFont(config.editorFontStyle());\n\n    ui->checkBox_saveOnAction->setChecked(config.editorSaveOnAction());\n    ui->checkBox_replaceTabsWithSpaces->setChecked(config.editorTabsToSpaces());\n    ui->spinTabWidth->setValue(config.editorTabWidth());\n\n    ui->formatterStyles->setCurrentText(config.editorFormatterStyle());\n\n    ui->projectPath->setText(config.buildDefaultProjectPath());\n    ui->projectTemplatesPath->setText(config.buildTemplatePath());\n    ui->templateUrl->setText(config.buildTemplateUrl());\n\n    QStringListModel *model =\n        qobject_cast<QStringListModel*>(ui->additionalPathList->model());\n    model->setStringList(config.buildAdditionalPaths());\n\n    [this](const AppConfig& c){\n      switch (static_cast<AppConfig::NetworkProxyType>(c.networkProxyType())) {\n        case AppConfig::NetworkProxyType::None:\n          ui->noProxy->setChecked(true);\n        break;\n        case AppConfig::NetworkProxyType::System:\n          ui->systemProxy->setChecked(true);\n        break;\n        case AppConfig::NetworkProxyType::Custom:\n          ui->userProxy->setChecked(true);\n        break;\n        default:\n          ui->noProxy->setChecked(true);\n          qDebug() << tr(\"Uknow proxy setting\");\n        break;\n      }\n    }(config);\n    ui->proxyHost->setText(config.networkProxyHost());\n    ui->proxyPort->setText(config.networkProxyPort());\n    ui->useAutentication->setChecked(config.networkProxyUseCredentials());\n    ui->username->setText(config.networkProxyUsername());\n    ui->autoUpdateProjectTmplates->setChecked(\n          config.projectTmplatesAutoUpdate());\n    ui->useDevelopment->setChecked(config.useDevelopMode());\n}\n\nvoid ConfigDialog::save()\n{\n  AppConfig& config = AppConfig::mutableInstance();\n  config.setLoggerFontStyle(ui->logFontComboBox->currentText());\n  config.setLoggerFontSize(ui->logFontSpinBox->value());\n  config.setEditorStyle(ui->colorStyleComboBox->currentText());\n  config.setEditorFontSize(ui->fontSpinBox->value());\n  config.setEditorFontStyle(ui->fontComboBox->currentFont().family());\n  config.setEditorSaveOnAction(ui->checkBox_saveOnAction->isChecked());\n  config.setEditorTabsToSpaces(ui->checkBox_replaceTabsWithSpaces->isChecked());\n  config.setEditorTabWidth(ui->spinTabWidth->value());\n  config.setEditorFormatterStyle(ui->formatterStyles->currentText());\n  config.setBuildDefaultProjectPath(ui->projectPath->text());\n  config.setBuildTemplatePath(ui->projectTemplatesPath->text());\n  config.setBuildTemplateUrl(ui->templateUrl->text());\n  QStringListModel *model = qobject_cast<QStringListModel*>(ui->additionalPathList->model());\n  config.setBuildAdditionalPaths(model->stringList());\n  auto proxyType = [this](){\n    if(ui->systemProxy->isChecked()) {\n      return AppConfig::NetworkProxyType::System;\n    } else if(ui->userProxy->isChecked()) {\n      return AppConfig::NetworkProxyType::Custom;\n    } else {\n      return AppConfig::NetworkProxyType::None;\n    }\n  };\n  config.setNetworkProxyType(proxyType());\n  config.setNetworkProxyHost(ui->proxyHost->text());\n  config.setNetworkProxyPort(ui->proxyPort->text());\n  config.setNetworkProxyUseCredentials(ui->useAutentication->isChecked());\n  config.setNetworkProxyUsername(ui->username->text());\n  config.setNetworkProxyPassword(ui->password->text());\n  config.setProjectTmplatesAutoUpdate(\n        ui->autoUpdateProjectTmplates->isChecked());\n  config.setUseDevelopMode(ui->useDevelopment->isChecked());\n  config.save();\n}\n\nvoid ConfigDialog::on_buttonBox_accepted()\n{\n    save();\n}\n\nvoid ConfigDialog::refreshEditor()\n{\n    QString currentStyle = ui->colorStyleComboBox->currentText();\n    ui->codeEditor->loadStyle(stylePath(currentStyle));\n    QFont fonts(ui->fontComboBox->currentFont());\n    fonts.setPointSize(ui->fontSpinBox->value());\n    ui->codeEditor->setFont(fonts);\n    ui->codeEditor->setMarginsFont(fonts);\n    if (ui->codeEditor->lexer()) {\n        ui->codeEditor->lexer()->setDefaultFont(fonts);\n        ui->codeEditor->lexer()->setFont(fonts);\n    }\n}\n\nvoid ConfigDialog::on_projectPathSetButton_clicked()\n{\n    QString path = QFileDialog::getExistingDirectory(this, tr(\"Select directory\"), QDir::homePath());\n    if (!path.isEmpty()) {\n        ui->projectPath->setText(path);\n    }\n}\n\nvoid ConfigDialog::on_tbPathAdd_clicked()\n{\n    QString path = QDir::homePath();\n    QString dir = QFileDialog::getExistingDirectory(this, tr(\"Select file\"), path);\n    if (!dir.isEmpty()) {\n        QStringListModel *model = qobject_cast<QStringListModel*>(ui->additionalPathList->model());\n        QStringList list = model->stringList();\n        list.append(dir);\n        model->setStringList(list);\n    }\n}\n\nvoid ConfigDialog::on_tbPathRm_clicked()\n{\n    for(const auto& idx: ui->additionalPathList->selectionModel()->selectedIndexes()) {\n        ui->additionalPathList->model()->removeRow(idx.row());\n    }\n}\n\nvoid ConfigDialog::on_projectTemplatesPathChange_clicked()\n{\n    QString path = QFileDialog::getExistingDirectory(this, tr(\"Select directory\"), QDir::homePath());\n    if (!path.isEmpty()) {\n        ui->projectTemplatesPath->setText(path);\n    }\n}\n\nvoid ConfigDialog::on_projectTemplatesDownload_clicked()\n{\n#if 0\n    ComponentsDialog d(this);\n    d.exec();\n#else\n  AppConfig& config = AppConfig::mutableInstance();\n    QUrl templateUrl(ui->templateUrl->text());\n    if (!templateUrl.isValid())\n        templateUrl = QUrl(config.buildTemplateUrl());\n    if (!templateUrl.isValid()) {\n        QMessageBox::critical(this, tr(\"Error\"), tr(\"No valid URL: %1\").arg(templateUrl.toString()));\n        return;\n    }\n    QDir templatePath(config.buildTemplatePath());\n    if (!templatePath.exists()) {\n        if (!QDir::root().mkpath(templatePath.absolutePath())) {\n            QMessageBox::critical(this, tr(\"Error\"), tr(\"Error creating %1\")\n                                  .arg(templatePath.absolutePath()));\n            return;\n        }\n    }\n\n    auto dialog = new QProgressDialog(this);\n    dialog->setWindowModality(Qt::WindowModal);\n    dialog->setLabelText(tr(\"Downloading template list...\"));\n    dialog->setAutoClose(false);\n    dialog->setAutoReset(false);\n    dialog->setProperty(\"ignoreFirst\", true);\n    dialog->show();\n\n    auto downloader = new FileDownloader(this);\n    connect(dialog, &QProgressDialog::canceled, [this, dialog, downloader](){\n      dialog->deleteLater();\n      downloader->deleteLater();\n    });\n    connect(downloader, &FileDownloader::allDownloadsFinished, [this, dialog, downloader] ()\n    {\n        if (!dialog->property(\"ignoreFirst\").toBool()) {\n            dialog->close();\n            dialog->deleteLater();\n            downloader->deleteLater();\n        } else {\n            dialog->setProperty(\"ignoreFirst\", false);\n        }\n    });\n    connect(downloader, &FileDownloader::downloadError, [downloader, dialog, this] (const QString& msg) {\n        QMessageBox::critical(this, tr(\"Network error\"), msg);\n        downloader->deleteLater();\n        dialog->close();\n        dialog->deleteLater();\n    });\n    connect(downloader, &FileDownloader::downloadProgress, [this, dialog](const QUrl& url, int percent)\n    {\n        QString msg = tr(\"Downloading %1\").arg(url.fileName());\n        dialog->setLabelText(msg);\n        dialog->setValue(percent);\n    });\n    connect(downloader, &FileDownloader::downloadDataFinished,\n            [downloader, templatePath] (const QUrl& url, const QByteArray& data)\n    {\n        Q_UNUSED(url);\n        QJsonDocument contents = QJsonDocument::fromJson(data);\n        if (!contents.isNull() && contents.isArray()) {\n            for(const auto& entry: contents.array()) {\n                QJsonObject oEntry = entry.toObject();\n                QString name = oEntry.value(\"name\").toString();\n                QString download_url = oEntry.value(\"download_url\").toString();\n                if ((QStringList{\"template\", \"jtemplate\"}).contains(QFileInfo(name).suffix())) {\n                    QString localPath = templatePath.absoluteFilePath(name);\n                    downloader->enqueueDownload(QUrl(download_url), localPath);\n                }\n            }\n            downloader->processEnqueued();\n        }\n    });\n    downloader->startDownload(templateUrl);\n#endif\n}\n"
  },
  {
    "path": "old/configdialog.h",
    "content": "#ifndef CONFIGDIALOG_H\n#define CONFIGDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass ConfigDialog;\n}\n\nclass QProcess;\nclass QsvColorDefFactory;\nclass QsvLangDef;\nclass QsvSyntaxHighlighter;\n\nclass ConfigDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit ConfigDialog(QWidget *parent = 0);\n    ~ConfigDialog();\n    static void setEditorSaveOnAction(bool val);\n\nprivate slots:\n    void load();\n\n    void save();\n\n    void refreshEditor();\n\n    void on_buttonBox_accepted();\n\n    void on_projectPathSetButton_clicked();\n\n    void on_tbPathAdd_clicked();\n\n    void on_tbPathRm_clicked();\n\n    void on_projectTemplatesPathChange_clicked();\n\n    void on_projectTemplatesDownload_clicked();\n\nprivate:\n    Ui::ConfigDialog *ui;\n    // QsvColorDefFactory *defColors;\n    // QsvLangDef *langCpp;\n    // QsvSyntaxHighlighter *syntax;\n};\n\nextern QString stylePath(const QString& styleName);\n\n#endif // CONFIGDIALOG_H\n"
  },
  {
    "path": "old/configdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ConfigDialog</class>\n <widget class=\"QDialog\" name=\"ConfigDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>537</width>\n    <height>437</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Configuration</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <widget class=\"QTabWidget\" name=\"tabWidget\">\n     <property name=\"currentIndex\">\n      <number>0</number>\n     </property>\n     <widget class=\"QWidget\" name=\"tab\">\n      <attribute name=\"title\">\n       <string>Editor</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout\">\n       <item row=\"5\" column=\"0\" colspan=\"3\">\n        <widget class=\"QSpinBox\" name=\"spinTabWidth\">\n         <property name=\"suffix\">\n          <string> spaces</string>\n         </property>\n         <property name=\"prefix\">\n          <string>Tab width is </string>\n         </property>\n         <property name=\"minimum\">\n          <number>1</number>\n         </property>\n         <property name=\"maximum\">\n          <number>80</number>\n         </property>\n         <property name=\"value\">\n          <number>4</number>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"1\">\n        <widget class=\"QFontComboBox\" name=\"fontComboBox\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item row=\"4\" column=\"0\" colspan=\"3\">\n        <widget class=\"QCheckBox\" name=\"checkBox_replaceTabsWithSpaces\">\n         <property name=\"text\">\n          <string>Replace tabs with spaces</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_4\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"text\">\n          <string>Editor Font</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"1\" colspan=\"2\">\n        <widget class=\"QComboBox\" name=\"colorStyleComboBox\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"2\">\n        <widget class=\"QSpinBox\" name=\"fontSpinBox\">\n         <property name=\"minimum\">\n          <number>6</number>\n         </property>\n         <property name=\"maximum\">\n          <number>72</number>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_2\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"text\">\n          <string>Color style</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"3\" column=\"0\" colspan=\"3\">\n        <widget class=\"QCheckBox\" name=\"checkBox_saveOnAction\">\n         <property name=\"text\">\n          <string>Save editor contents on target action</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\" colspan=\"3\">\n        <widget class=\"CodeEditor\" name=\"codeEditor\" native=\"true\"/>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"tab_2\">\n      <attribute name=\"title\">\n       <string>Tools</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout_3\">\n       <item row=\"0\" column=\"3\">\n        <widget class=\"QToolButton\" name=\"projectPathSetButton\">\n         <property name=\"icon\">\n          <iconset resource=\"resources/resources.qrc\">\n           <normaloff>:/images/document-open.svg</normaloff>:/images/document-open.svg</iconset>\n         </property>\n        </widget>\n       </item>\n       <item row=\"0\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label\">\n         <property name=\"text\">\n          <string>Default project path</string>\n         </property>\n         <property name=\"alignment\">\n          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_3\">\n         <property name=\"text\">\n          <string>Project templates path</string>\n         </property>\n         <property name=\"alignment\">\n          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n         </property>\n        </widget>\n       </item>\n       <item row=\"4\" column=\"0\" colspan=\"4\">\n        <widget class=\"QGroupBox\" name=\"groupBox_2\">\n         <property name=\"title\">\n          <string>Additional PATHs</string>\n         </property>\n         <layout class=\"QGridLayout\" name=\"gridLayout_2\">\n          <item row=\"0\" column=\"0\" rowspan=\"3\">\n           <widget class=\"QListView\" name=\"additionalPathList\"/>\n          </item>\n          <item row=\"0\" column=\"1\">\n           <widget class=\"QToolButton\" name=\"tbPathAdd\">\n            <property name=\"text\">\n             <string>...</string>\n            </property>\n            <property name=\"icon\">\n             <iconset resource=\"resources/resources.qrc\">\n              <normaloff>:/images/actions/list-add.svg</normaloff>:/images/actions/list-add.svg</iconset>\n            </property>\n            <property name=\"iconSize\">\n             <size>\n              <width>32</width>\n              <height>32</height>\n             </size>\n            </property>\n           </widget>\n          </item>\n          <item row=\"1\" column=\"1\">\n           <widget class=\"QToolButton\" name=\"tbPathRm\">\n            <property name=\"text\">\n             <string>...</string>\n            </property>\n            <property name=\"icon\">\n             <iconset resource=\"resources/resources.qrc\">\n              <normaloff>:/images/actions/list-remove.svg</normaloff>:/images/actions/list-remove.svg</iconset>\n            </property>\n            <property name=\"iconSize\">\n             <size>\n              <width>32</width>\n              <height>32</height>\n             </size>\n            </property>\n           </widget>\n          </item>\n          <item row=\"2\" column=\"1\">\n           <spacer name=\"verticalSpacer\">\n            <property name=\"orientation\">\n             <enum>Qt::Vertical</enum>\n            </property>\n            <property name=\"sizeHint\" stdset=\"0\">\n             <size>\n              <width>20</width>\n              <height>177</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n         </layout>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"1\" colspan=\"2\">\n        <widget class=\"QLineEdit\" name=\"projectTemplatesPath\"/>\n       </item>\n       <item row=\"0\" column=\"1\" colspan=\"2\">\n        <widget class=\"QLineEdit\" name=\"projectPath\"/>\n       </item>\n       <item row=\"1\" column=\"3\">\n        <widget class=\"QToolButton\" name=\"projectTemplatesPathChange\">\n         <property name=\"icon\">\n          <iconset resource=\"resources/resources.qrc\">\n           <normaloff>:/images/document-open.svg</normaloff>:/images/document-open.svg</iconset>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"1\" colspan=\"2\">\n        <widget class=\"QLineEdit\" name=\"templateUrl\"/>\n       </item>\n       <item row=\"2\" column=\"3\">\n        <widget class=\"QToolButton\" name=\"projectTemplatesDownload\">\n         <property name=\"icon\">\n          <iconset resource=\"resources/resources.qrc\">\n           <normaloff>:/images/edit-download.svg</normaloff>:/images/edit-download.svg</iconset>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_5\">\n         <property name=\"text\">\n          <string>Remote template URL</string>\n         </property>\n         <property name=\"alignment\">\n          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"proxySettings\">\n      <attribute name=\"title\">\n       <string>Proxy</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout_5\">\n       <item row=\"0\" column=\"0\">\n        <widget class=\"QGroupBox\" name=\"groupBox_3\">\n         <property name=\"title\">\n          <string>HTTP proxy for network access</string>\n         </property>\n         <layout class=\"QFormLayout\" name=\"formLayout\">\n          <item row=\"0\" column=\"0\">\n           <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n            <item>\n             <widget class=\"QRadioButton\" name=\"noProxy\">\n              <property name=\"text\">\n               <string>None</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QRadioButton\" name=\"systemProxy\">\n              <property name=\"text\">\n               <string>System proxy</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QRadioButton\" name=\"userProxy\">\n              <property name=\"text\">\n               <string>Custom proxy</string>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </item>\n          <item row=\"3\" column=\"0\">\n           <widget class=\"QGroupBox\" name=\"groupBox\">\n            <property name=\"title\">\n             <string>Proxy authentication</string>\n            </property>\n            <layout class=\"QGridLayout\" name=\"gridLayout_4\">\n             <item row=\"0\" column=\"0\">\n              <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\">\n               <item>\n                <widget class=\"QCheckBox\" name=\"useAutentication\">\n                 <property name=\"enabled\">\n                  <bool>false</bool>\n                 </property>\n                 <property name=\"text\">\n                  <string>With credentials</string>\n                 </property>\n                </widget>\n               </item>\n               <item>\n                <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n                 <item>\n                  <widget class=\"QLabel\" name=\"labelUsername\">\n                   <property name=\"text\">\n                    <string>Username</string>\n                   </property>\n                  </widget>\n                 </item>\n                 <item>\n                  <spacer name=\"horizontalSpacer\">\n                   <property name=\"orientation\">\n                    <enum>Qt::Horizontal</enum>\n                   </property>\n                   <property name=\"sizeHint\" stdset=\"0\">\n                    <size>\n                     <width>40</width>\n                     <height>20</height>\n                    </size>\n                   </property>\n                  </spacer>\n                 </item>\n                 <item>\n                  <widget class=\"QLineEdit\" name=\"username\">\n                   <property name=\"enabled\">\n                    <bool>false</bool>\n                   </property>\n                   <property name=\"echoMode\">\n                    <enum>QLineEdit::Normal</enum>\n                   </property>\n                  </widget>\n                 </item>\n                </layout>\n               </item>\n               <item>\n                <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n                 <item>\n                  <widget class=\"QLabel\" name=\"labelPassword\">\n                   <property name=\"text\">\n                    <string>Password</string>\n                   </property>\n                  </widget>\n                 </item>\n                 <item>\n                  <spacer name=\"horizontalSpacer_2\">\n                   <property name=\"orientation\">\n                    <enum>Qt::Horizontal</enum>\n                   </property>\n                   <property name=\"sizeHint\" stdset=\"0\">\n                    <size>\n                     <width>40</width>\n                     <height>20</height>\n                    </size>\n                   </property>\n                  </spacer>\n                 </item>\n                 <item>\n                  <widget class=\"QLineEdit\" name=\"password\">\n                   <property name=\"enabled\">\n                    <bool>false</bool>\n                   </property>\n                   <property name=\"echoMode\">\n                    <enum>QLineEdit::Password</enum>\n                   </property>\n                  </widget>\n                 </item>\n                </layout>\n               </item>\n              </layout>\n             </item>\n            </layout>\n           </widget>\n          </item>\n          <item row=\"1\" column=\"0\">\n           <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n            <item>\n             <widget class=\"QLabel\" name=\"labelHost\">\n              <property name=\"text\">\n               <string>Host</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QLineEdit\" name=\"proxyHost\">\n              <property name=\"enabled\">\n               <bool>false</bool>\n              </property>\n              <property name=\"text\">\n               <string>localhost</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QLabel\" name=\"labelPort\">\n              <property name=\"text\">\n               <string>Port</string>\n              </property>\n             </widget>\n            </item>\n            <item>\n             <widget class=\"QLineEdit\" name=\"proxyPort\">\n              <property name=\"enabled\">\n               <bool>false</bool>\n              </property>\n              <property name=\"text\">\n               <string>3128</string>\n              </property>\n             </widget>\n            </item>\n           </layout>\n          </item>\n          <item row=\"2\" column=\"0\">\n           <spacer name=\"verticalSpacer_2\">\n            <property name=\"orientation\">\n             <enum>Qt::Vertical</enum>\n            </property>\n            <property name=\"sizeHint\" stdset=\"0\">\n             <size>\n              <width>20</width>\n              <height>40</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n         </layout>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"behavior\">\n      <attribute name=\"title\">\n       <string>Behavior</string>\n      </attribute>\n      <layout class=\"QGridLayout\" name=\"gridLayout_6\">\n       <item row=\"4\" column=\"0\" colspan=\"3\">\n        <spacer name=\"verticalSpacer_3\">\n         <property name=\"orientation\">\n          <enum>Qt::Vertical</enum>\n         </property>\n         <property name=\"sizeHint\" stdset=\"0\">\n          <size>\n           <width>20</width>\n           <height>40</height>\n          </size>\n         </property>\n        </spacer>\n       </item>\n       <item row=\"0\" column=\"0\" colspan=\"3\">\n        <widget class=\"QCheckBox\" name=\"autoUpdateProjectTmplates\">\n         <property name=\"text\">\n          <string>Check for project templates updates at start up</string>\n         </property>\n         <property name=\"checked\">\n          <bool>true</bool>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"1\" colspan=\"2\">\n        <widget class=\"QComboBox\" name=\"formatterStyles\"/>\n       </item>\n       <item row=\"1\" column=\"2\">\n        <widget class=\"QSpinBox\" name=\"logFontSpinBox\">\n         <property name=\"minimum\">\n          <number>6</number>\n         </property>\n         <property name=\"maximum\">\n          <number>72</number>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_6\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Maximum\" vsizetype=\"Preferred\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"text\">\n          <string>Log View Font</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"2\" column=\"0\">\n        <widget class=\"QLabel\" name=\"label_7\">\n         <property name=\"text\">\n          <string>Format Style</string>\n         </property>\n        </widget>\n       </item>\n       <item row=\"1\" column=\"1\">\n        <widget class=\"QFontComboBox\" name=\"logFontComboBox\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n         <property name=\"fontFilters\">\n          <set>QFontComboBox::MonospacedFonts</set>\n         </property>\n        </widget>\n       </item>\n       <item row=\"3\" column=\"0\" colspan=\"3\">\n        <widget class=\"QCheckBox\" name=\"useDevelopment\">\n         <property name=\"text\">\n          <string>Use in-progress/development characteristics</string>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"standardButtons\">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>CodeEditor</class>\n   <extends>QWidget</extends>\n   <header>codeeditor.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources>\n  <include location=\"resources/resources.qrc\"/>\n </resources>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>ConfigDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>236</x>\n     <y>427</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>ConfigDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>304</x>\n     <y>427</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>useAutentication</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>username</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>268</x>\n     <y>214</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>303</x>\n     <y>267</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>useAutentication</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>password</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>268</x>\n     <y>214</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>301</x>\n     <y>349</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>proxyHost</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>268</x>\n     <y>106</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>161</x>\n     <y>160</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>proxyPort</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>268</x>\n     <y>106</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>409</x>\n     <y>160</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>useAutentication</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>268</x>\n     <y>106</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>268</x>\n     <y>214</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>groupBox</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>75</x>\n     <y>126</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>168</x>\n     <y>232</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>useAutentication</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>labelUsername</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>97</x>\n     <y>212</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>66</x>\n     <y>239</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>useAutentication</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>labelPassword</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>97</x>\n     <y>212</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>64</x>\n     <y>267</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>labelHost</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>168</x>\n     <y>126</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>38</x>\n     <y>155</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>userProxy</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>labelPort</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>168</x>\n     <y>126</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>185</x>\n     <y>155</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n <slots>\n  <signal>refreshEditor()</signal>\n </slots>\n</ui>\n"
  },
  {
    "path": "old/debugui.cpp",
    "content": "#include \"debugui.h\"\n#include \"ui_debugui.h\"\n\n#include \"gdbstartdialog.h\"\n#include \"loggerwidget.h\"\n#include \"documentarea.h\"\n#include \"projectview.h\"\n\n#include <gdbdebugger.h>\n\n#include <QTimer>\n#include <QtDebug>\n\nDebugUI::DebugUI(QWidget *parent) :\n    QWidget(parent),\n    ui(new Ui::DebugUI)\n{\n    ui->setupUi(this);\n\n    QList<QAbstractButton*> rungroup{ ui->debugNext, ui->debugNextInto, ui->debugNextToEnd };\n    auto enableRunGroup = [rungroup]() { for(auto b: rungroup) b->setEnabled(true);  };\n    auto disableRunGroup = [rungroup]() { for(auto b: rungroup) b->setEnabled(false);  };\n\n    disableRunGroup();\n    setEnabled(false);\n    setProperty(\"isRunning\", false);\n\n    connect(GdbDebugger::instance(), &GdbDebugger::debugStarted, [this]() { setEnabled(true);  });\n    connect(GdbDebugger::instance(), &GdbDebugger::debugStarted, enableRunGroup);\n    connect(GdbDebugger::instance(), &GdbDebugger::debugStoped, [this]() { setEnabled(false); });\n    connect(GdbDebugger::instance(), &GdbDebugger::debugStoped, disableRunGroup);\n    connect(GdbDebugger::instance(), &GdbDebugger::execStop, enableRunGroup);\n    connect(GdbDebugger::instance(), &GdbDebugger::execStop, [this](const QString& r) {\n        qDebug() << \"stoped by\" << r;\n        setProperty(\"isRunning\", false);\n        ui->debugRun->setIcon(QIcon(\":/images/actions/media-playback-start.svg\"));\n    });\n    connect(GdbDebugger::instance(), &GdbDebugger::execRunning, disableRunGroup);\n    connect(GdbDebugger::instance(), &GdbDebugger::execRunning, [this]() {\n        qDebug() << \"exec run\";\n        setProperty(\"isRunning\", true);\n        ui->debugRun->setIcon(QIcon(\":/images/actions/media-playback-pause.svg\"));\n    });\n\n    ui->viewVars->setModel(GdbDebugger::instance()->debugModel(VARS_MODEL));\n    ui->viewWatch->setModel(GdbDebugger::instance()->debugModel(WATCHES_MODEL));\n    ui->viewStack->setModel(GdbDebugger::instance()->debugModel(CALLSTACK_MODEL));\n\n    connect(GdbDebugger::instance(), &GdbDebugger::setCurrentLine, [this](const QString& file, int line) {\n        docs->fileOpenAndSetIP(file, line);\n    });\n\n    connect(GdbDebugger::instance(), &GdbDebugger::debugLog, [this](DEBUG_LOG_TYPE type, const QString &log){\n        qDebug() << log;\n        switch(type) {\n        case DebugConsoleLog:\n            gdbLog->addText(log + '\\n', Qt::blue);\n            break;\n        case DebugApplationLog:\n            appLog->addText(log + '\\n', Qt::blue);\n            break;\n        case DebugRuntimeLog:\n            gdbLog->addText(log + '\\n', Qt::red);\n            break;\n        case DebugErrorLog:\n            gdbLog->addText(log + '\\n', Qt::green);\n            break;\n        }\n    });\n}\n\nDebugUI::~DebugUI()\n{\n    delete ui;\n}\n\nvoid DebugUI::startDebug()\n{\n    GDBStartDialog d(view->makeInfo(), window());\n    if (d.exec() == QDialog::Accepted) {\n        auto cfg = d.config();\n        QStringList argv;\n        for(auto a: cfg.initCommands)\n            if (!a.isEmpty())\n               argv << \"-ex\" << a;\n        auto executor = [cfg, argv, this]() {\n            GdbDebugger::instance()->setWorkingDirectory(view->projectPath().absolutePath());\n            GdbDebugger::instance()->start(cfg.gdbProgram, argv, cfg.dbgProgram);\n        };\n        view->doTarget(cfg.premakeTarget);\n        executor();\n    }\n}\n\nvoid DebugUI::setLoggers(LoggerWidget *gdbLog, LoggerWidget *appLog)\n{\n    this->gdbLog=gdbLog;\n    this->appLog=appLog;\n}\n\nvoid DebugUI::stopDebug()\n{\n    GdbDebugger::instance()->stop();\n}\n\nvoid DebugUI::on_debugRun_clicked()\n{\n    bool isRunning = property(\"isRunning\").toBool();\n    qDebug() << __PRETTY_FUNCTION__ << \"isRunning\" << isRunning;\n    if (isRunning) {\n        GdbDebugger::instance()->interruptRun();\n    } else {\n        GdbDebugger::instance()->continueRun();\n    }\n}\n\nvoid DebugUI::on_debugNext_clicked()\n{\n    GdbDebugger::instance()->stepOver();\n}\n\nvoid DebugUI::on_debugNextInto_clicked()\n{\n    GdbDebugger::instance()->stepInto();\n}\n\nvoid DebugUI::on_debugNextToEnd_clicked()\n{\n    GdbDebugger::instance()->stepOut();\n}\n"
  },
  {
    "path": "old/debugui.h",
    "content": "#ifndef DEBUGUI_H\n#define DEBUGUI_H\n\n#include <QWidget>\n\nnamespace Ui {\nclass DebugUI;\n}\n\nclass DocumentArea;\nclass ProjectView;\nclass LoggerWidget;\n\nclass DebugUI : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit DebugUI(QWidget *parent = 0);\n    virtual ~DebugUI();\n\n    void setDocumentArea(DocumentArea *docs) { this->docs = docs; }\n    void setProjectView(ProjectView *view) { this->view = view; }\n    void setLoggers(LoggerWidget *gdbLog, LoggerWidget *appLog);\n\n    void startDebug();\n    void stopDebug();\n\nprivate slots:\n    void on_debugRun_clicked();\n\n    void on_debugNext_clicked();\n\n    void on_debugNextInto_clicked();\n\n    void on_debugNextToEnd_clicked();\n\nprivate:\n    Ui::DebugUI *ui;\n    DocumentArea *docs;\n    ProjectView *view;\n    LoggerWidget *gdbLog;\n    LoggerWidget *appLog;\n};\n\n#endif // DEBUGUI_H\n"
  },
  {
    "path": "old/debugui.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>DebugUI</class>\n <widget class=\"QWidget\" name=\"DebugUI\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>256</width>\n    <height>340</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <property name=\"spacing\">\n      <number>0</number>\n     </property>\n     <property name=\"topMargin\">\n      <number>2</number>\n     </property>\n     <item>\n      <widget class=\"QToolButton\" name=\"debugRun\">\n       <property name=\"toolTip\">\n        <string>Run/Continue</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"../resources/resources.qrc\">\n         <normaloff>:/images/actions/media-playback-start.svg</normaloff>:/images/actions/media-playback-start.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n       <property name=\"autoRaise\">\n        <bool>true</bool>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"debugNext\">\n       <property name=\"toolTip\">\n        <string>Next</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"../resources/resources.qrc\">\n         <normaloff>:/images/actions/debug-step-over.svg</normaloff>:/images/actions/debug-step-over.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n       <property name=\"autoRaise\">\n        <bool>true</bool>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"debugNextInto\">\n       <property name=\"toolTip\">\n        <string>Next Into</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"../resources/resources.qrc\">\n         <normaloff>:/images/actions/debug-step-into.svg</normaloff>:/images/actions/debug-step-into.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n       <property name=\"autoRaise\">\n        <bool>true</bool>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"debugNextToEnd\">\n       <property name=\"toolTip\">\n        <string>Run to End</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"../resources/resources.qrc\">\n         <normaloff>:/images/actions/debug-step-out.svg</normaloff>:/images/actions/debug-step-out.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n       <property name=\"autoRaise\">\n        <bool>true</bool>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QToolBox\" name=\"toolBox\">\n     <widget class=\"QWidget\" name=\"toolBoxPage1\">\n      <property name=\"geometry\">\n       <rect>\n        <x>0</x>\n        <y>0</y>\n        <width>256</width>\n        <height>191</height>\n       </rect>\n      </property>\n      <attribute name=\"label\">\n       <string>Variables</string>\n      </attribute>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n       <property name=\"leftMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"topMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"rightMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"bottomMargin\">\n        <number>0</number>\n       </property>\n       <item>\n        <widget class=\"QTreeView\" name=\"viewVars\">\n         <property name=\"editTriggers\">\n          <set>QAbstractItemView::NoEditTriggers</set>\n         </property>\n         <property name=\"alternatingRowColors\">\n          <bool>true</bool>\n         </property>\n         <property name=\"uniformRowHeights\">\n          <bool>true</bool>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"toolBoxPage2\">\n      <property name=\"geometry\">\n       <rect>\n        <x>0</x>\n        <y>0</y>\n        <width>256</width>\n        <height>191</height>\n       </rect>\n      </property>\n      <attribute name=\"label\">\n       <string>Watchpoints</string>\n      </attribute>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\">\n       <property name=\"spacing\">\n        <number>0</number>\n       </property>\n       <property name=\"leftMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"topMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"rightMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"bottomMargin\">\n        <number>0</number>\n       </property>\n       <item>\n        <widget class=\"QTreeView\" name=\"viewWatch\">\n         <property name=\"editTriggers\">\n          <set>QAbstractItemView::NoEditTriggers</set>\n         </property>\n         <property name=\"alternatingRowColors\">\n          <bool>true</bool>\n         </property>\n         <property name=\"uniformRowHeights\">\n          <bool>true</bool>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"page\">\n      <property name=\"geometry\">\n       <rect>\n        <x>0</x>\n        <y>0</y>\n        <width>256</width>\n        <height>191</height>\n       </rect>\n      </property>\n      <attribute name=\"label\">\n       <string>Stack</string>\n      </attribute>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout_4\">\n       <property name=\"spacing\">\n        <number>0</number>\n       </property>\n       <property name=\"leftMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"topMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"rightMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"bottomMargin\">\n        <number>0</number>\n       </property>\n       <item>\n        <widget class=\"QTreeView\" name=\"viewStack\">\n         <property name=\"editTriggers\">\n          <set>QAbstractItemView::NoEditTriggers</set>\n         </property>\n         <property name=\"alternatingRowColors\">\n          <bool>true</bool>\n         </property>\n         <property name=\"uniformRowHeights\">\n          <bool>true</bool>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"../resources/resources.qrc\"/>\n </resources>\n <connections/>\n</ui>\n"
  },
  {
    "path": "old/dialogconfigworkspace.cpp",
    "content": "#include \"dialogconfigworkspace.h\"\n#include \"ui_dialogconfigworkspace.h\"\n\n#include \"configdialog.h\"\n#include \"appconfig.h\"\n\n#include <QFileDialog>\n\nDialogConfigWorkspace::DialogConfigWorkspace(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::DialogConfigWorkspace)\n{\n    ui->setupUi(this);\n    ui->workspaceEditor->setText(\n          AppConfig::mutableInstance().defaultApplicationResources());\n}\n\nDialogConfigWorkspace::~DialogConfigWorkspace()\n{\n    delete ui;\n}\n\nQString DialogConfigWorkspace::path() const\n{\n    return ui->workspaceEditor->text();\n}\n\nvoid DialogConfigWorkspace::on_toolSelectPath_clicked()\n{\n    QFileDialog d(this);\n    d.setWindowTitle(tr(\"Select workspace PATH\"));\n    d.setAcceptMode(QFileDialog::AcceptSave);\n    d.setConfirmOverwrite(true);\n    d.setDefaultSuffix(\"\");\n    d.setDirectory(QDir::home());\n    d.setFileMode(QFileDialog::AnyFile);\n    d.setOption(QFileDialog::ShowDirsOnly);\n    d.setNameFilters(QStringList{ tr(\"All directories (*)\") });\n    d.setViewMode(QFileDialog::Detail);\n    d.setLabelText(QFileDialog::LookIn, tr(\"Look in\"));\n    d.setLabelText(QFileDialog::FileName, tr(\"Directory\"));\n    d.setLabelText(QFileDialog::FileType, tr(\"File Type\"));\n    d.setLabelText(QFileDialog::Accept, tr(\"Select file\"));\n    d.setLabelText(QFileDialog::Reject, tr(\"Cancel\"));\n    if (d.exec() == QDialog::Accepted) {\n        QStringList sel = d.selectedFiles();\n        if (sel.count() > 0) {\n            ui->workspaceEditor->setText(sel.first());\n        }\n    }\n}\n\nvoid DialogConfigWorkspace::on_buttonBox_accepted()\n{\n  QDir wSpace;\n  wSpace.setPath(this->path());\n  AppConfig::mutableInstance().setWorkspacePath(wSpace.absolutePath());\n  AppConfig::mutableInstance().save();\n}\n"
  },
  {
    "path": "old/dialogconfigworkspace.h",
    "content": "#ifndef DIALOGCONFIGWORKSPACE_H\n#define DIALOGCONFIGWORKSPACE_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass DialogConfigWorkspace;\n}\n\nclass DialogConfigWorkspace : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit DialogConfigWorkspace(QWidget *parent = 0);\n    ~DialogConfigWorkspace();\n\n    QString path() const;\n\nprivate slots:\n    void on_toolSelectPath_clicked();\n\n    void on_buttonBox_accepted();\n\n  private:\n    Ui::DialogConfigWorkspace *ui;\n};\n\n#endif // DIALOGCONFIGWORKSPACE_H\n"
  },
  {
    "path": "old/dialogconfigworkspace.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>DialogConfigWorkspace</class>\n <widget class=\"QDialog\" name=\"DialogConfigWorkspace\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>431</width>\n    <height>109</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Workspace Configuration</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupBox\">\n     <property name=\"title\">\n      <string>Select workspace path</string>\n     </property>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n      <item>\n       <widget class=\"QLineEdit\" name=\"workspaceEditor\"/>\n      </item>\n      <item>\n       <widget class=\"QToolButton\" name=\"toolSelectPath\">\n        <property name=\"text\">\n         <string>...</string>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"standardButtons\">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>DialogConfigWorkspace</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>227</x>\n     <y>92</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>108</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>DialogConfigWorkspace</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>295</x>\n     <y>98</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>108</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/documentarea.cpp",
    "content": "#include \"documentarea.h\"\n\n#include \"codeeditor.h\"\n#include \"qhexedit.h\"\n#include \"mapviewer.h\"\n#include \"bannerwidget.h\"\n#include \"projectview.h\"\n\n#include <QHBoxLayout>\n#include <QToolButton>\n#include <QTabWidget>\n#include <QTabBar>\n#include <QtDebug>\n#include <QSvgRenderer>\n\nDocumentArea::DocumentArea(QWidget *parent) :\n    ComboDocumentView(parent),\n    lastIpEditor(nullptr)\n{\n    banner = new BannerWidget(this);\n\n    QList<QAction*> actions\n            ({\n#if 0\n                 addActionToLeftCorner(QIcon(\":/images/actions/go-next.svg\"), tr(\"Next Position\"), this, SLOT(goNext())),\n                 addActionToLeftCorner(QIcon(\":/images/actions/go-previous.svg\"), tr(\"Prev Position\"), this, SLOT(goPrev())),\n#endif\n                 addActionToRightCorner(QIcon(\":/images/actions/view-refresh.svg\"), tr(\"Reload File\"), this, SLOT(reloadCurrent())),\n                 addActionToRightCorner(QIcon(\":/images/document-save.svg\"), tr(\"Save File\"), this, SLOT(saveCurrent())),\n                 addActionToRightCorner(QIcon(\":/images/document-save-all.svg\"), tr(\"Save All\"), this, SLOT(saveAll())),\n                 addActionToRightCorner(QIcon(\":/images/document-close.svg\"), tr(\"Close Document\"), this, SLOT(closeCurrent())),\n                 addActionToRightCorner(QIcon(\":/images/document-close-all.svg\"), tr(\"Close All\"), this, SLOT(closeAll()))\n             });\n    auto actionsEnable = [actions](bool en) { for(auto a: actions) a->setEnabled(en); };\n\n    auto s = new QShortcut(QKeySequence(\"CTRL+Q\"), this);\n    s->setContext(Qt::ApplicationShortcut);\n    connect(s, &QShortcut::activated, this, &DocumentArea::closeCurrent);\n\n    connect(this, &ComboDocumentView::widgetCurrentChanged,\n            [this](int idx, QWidget *w) {\n        Q_UNUSED(idx);\n        w->setFocus();\n    });\n\n    connect(this, &ComboDocumentView::widgetAdded,\n            [this, actionsEnable](int idx, QWidget *w) {\n        Q_UNUSED(idx);\n        actionsEnable(true);\n        banner->setVisible(false);\n        w->setFocus();\n    });\n    connect(this, &ComboDocumentView::widgetRemoved,\n            [this, actionsEnable](int idx, QWidget *w) {\n        Q_UNUSED(idx);\n        Q_UNUSED(w);\n        bool noDocs = widgetCount() == 0;\n        actionsEnable(!noDocs);\n        banner->setVisible(noDocs);\n    });\n    actionsEnable(false);\n    banner->setVisible(true);\n}\n\nDocumentArea::~DocumentArea()\n{\n}\n\nQList<CodeEditor *> DocumentArea::documentsDirty() const\n{\n    QList<CodeEditor*> list;\n\n    for(int i=0; i<widgetCount(); i++) {\n        CodeEditor *e = qobject_cast<CodeEditor*>(widget(i));\n        if (e) {\n            if (e->isModified())\n                list.append(e);\n        }\n    }\n\n    return list;\n}\n\nbool DocumentArea::hasUnsavedChanges() {\n    return !documentsDirty().isEmpty();\n}\n\nint DocumentArea::fileOpen(const QString &file, int row, int col)\n{\n    int idx = documentFind(file);\n    CodeEditor *editor;\n    if (idx == -1) {\n        editor = new CodeEditor(this);\n        connect(editor, &CodeEditor::requireOpen, this, &DocumentArea::fileOpen);\n        editor->setMakefileInfo(&pView->makeInfo());\n        if (!editor->load(file))\n            return -1;\n        idx = addWidget(editor, editor->windowTitle());\n        connect(editor, SIGNAL(modificationChanged(bool)), this, SLOT(modifyTab(bool)));\n        connect(editor, &CodeEditor::destroyed, this, &DocumentArea::tabDestroy);\n    } else\n        editor = qobject_cast<CodeEditor*>(widget(idx));\n    setCurrentIndex(idx);\n    widget(idx)->setFocus();\n    if (row != -1 && col != -1 && editor)\n       editor->moveTextCursor(row, col);\n    return idx;\n}\n\nvoid DocumentArea::clearIp()\n{\n    if (lastIpEditor)\n        lastIpEditor->clearDebugPointer();\n}\n\nint DocumentArea::fileOpenAndSetIP(const QString &file, int line)\n{\n    int idx = fileOpen(file, line, 0);\n    if (idx == -1)\n        return -1;\n    CodeEditor *w = qobject_cast<CodeEditor*>(widget(idx));\n    if (w) {\n        if (lastIpEditor)\n            lastIpEditor->clearDebugPointer();\n        lastIpEditor = w;\n        lastIpEditor->setDebugPointer(line);\n    }\n    return idx;\n}\n\nint DocumentArea::binOpen(const QString &filePath)\n{\n    int idx = documentFind(filePath);\n    if (idx == -1) {\n        auto file = new QFile(filePath);\n        if (file)\n            file->open(QFile::ReadOnly);\n        QHexEditData *data = QHexEditData::fromDevice(file);\n        if (!data) {\n            delete file;\n            return -1;\n        }\n        auto editor = new QHexEdit(this);\n        file->setParent(editor);\n        editor->setData(data);\n        editor->setReadOnly(true);\n        editor->setWindowTitle(QFileInfo(filePath).fileName());\n        editor->setWindowFilePath(QFileInfo(filePath).absoluteFilePath());\n        idx = addWidget(editor, editor->windowTitle());\n        connect(editor, &CodeEditor::destroyed, this, &DocumentArea::tabDestroy);\n    }\n    setCurrentIndex(idx);\n    return idx;\n}\n\nint DocumentArea::mapOpen(const QString &file)\n{\n    int idx = documentFind(file);\n    if (idx == -1) {\n        auto  editor = new MapViewer(this);\n        editor->load(file);\n        editor->setWindowTitle(QFileInfo(file).fileName());\n        editor->setWindowFilePath(QFileInfo(file).absoluteFilePath());\n        idx = addWidget(editor, editor->windowTitle());\n        connect(editor, &CodeEditor::destroyed, this, &DocumentArea::tabDestroy);\n    }\n    setCurrentIndex(idx);\n    return idx;\n}\n\nvoid DocumentArea::saveAll()\n{\n    for(int i=0; i<widgetCount(); i++) {\n        CodeEditor *e = qobject_cast<CodeEditor*>(widget(i));\n        if (e)\n            e->save();\n    }\n}\n\nbool DocumentArea::documentToClose(int idx)\n{\n    QWidget *w = widget(idx);\n    if (w) {\n        if (w->close()) {\n            if (w == lastIpEditor)\n                lastIpEditor = nullptr;\n            w->deleteLater();\n            removeWidget(idx);\n            return true;\n        }\n    }\n    return false;\n}\n\nvoid DocumentArea::closeAll()\n{\n    while(widgetCount() > 0)\n        if (!documentToClose(0))\n            break;\n}\n\nvoid DocumentArea::saveCurrent()\n{\n    CodeEditor *w = qobject_cast<CodeEditor*>(currentWidget());\n    if (w)\n        w->save();\n}\n\nvoid DocumentArea::reloadCurrent()\n{\n    CodeEditor *w = qobject_cast<CodeEditor*>(currentWidget());\n    if (w)\n        w->reload();\n}\n\nvoid DocumentArea::closeCurrent()\n{\n    documentToClose(currentIndex());\n}\n\nvoid DocumentArea::setTopBarHeight(int h)\n{\n    QSize z(h, h);\n    for(auto b: findChildren<QToolButton*>()) {\n        b->setIconSize(z);\n    }\n    // z.scale(h*1.25, h*1.25, Qt::IgnoreAspectRatio);\n    for(auto c: findChildren<QComboBox*>()) {\n        c->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);\n        c->setMaximumHeight(z.height());\n    }\n}\n\nvoid DocumentArea::resizeEvent(QResizeEvent *e)\n{\n    ComboDocumentView::resizeEvent(e);\n    QWidget *stack = findChild<QStackedWidget*>();\n    banner->setGeometry(stack->geometry());\n    banner->setVisible(widgetCount() == 0);\n}\n\nvoid DocumentArea::modifyTab(bool isModify)\n{\n    QWidget *w = qobject_cast<QWidget*>(sender());\n    if (w) {\n        QString title = w->windowTitle();\n        if (isModify)\n            title += tr(\" [*]\");\n        setWidgetTitle(w, title);\n    } else\n        qWarning(\"sender of modifyTab is not a CodeEditor\");\n}\n\nvoid DocumentArea::tabDestroy(QObject *obj)\n{\n    Q_UNUSED(obj);\n}\n\nint DocumentArea::documentFind(const QString &file, QWidget **ww)\n{\n    QFileInfo fileInfo(file);\n    for(int i=0; i<widgetCount(); i++) {\n        QWidget *w = widget(i);\n        if (w) {\n            if (QFileInfo(w->windowFilePath()) == fileInfo) {\n                if (ww)\n                    *ww = w;\n                return i;\n            }\n        }\n    }\n    return -1;\n}\n"
  },
  {
    "path": "old/documentarea.h",
    "content": "#ifndef DOCUMENTAREA_H\n#define DOCUMENTAREA_H\n\n#include \"combodocumentview.h\"\n\n#include <QMutableLinkedListIterator>\n\nclass MakefileInfo;\nclass CodeEditor;\nclass ProjectView;\n\nclass QLabel;\nclass QUndoStack;\n\nclass DocumentArea : public ComboDocumentView\n{\n    Q_OBJECT\npublic:\n    explicit DocumentArea(QWidget *parent = 0);\n    virtual ~DocumentArea();\n\n    QList<CodeEditor*> documentsDirty() const;\n    bool hasUnsavedChanges();\n    void setProjectView(ProjectView *pView) { this->pView = pView; }\n\nsignals:\n\npublic slots:\n    int fileOpen(const QString& file, int row=-1, int col=-1);\n    void clearIp();\n    int fileOpenAndSetIP(const QString& file, int line);\n    int binOpen(const QString& file);\n    int mapOpen(const QString& file);\n    void saveAll();\n    void closeAll();\n    void saveCurrent();\n    void reloadCurrent();\n    void closeCurrent();\n    void setTopBarHeight(int h);\n\nprotected:\n    virtual void resizeEvent(QResizeEvent *e) override;\n\nprivate slots:\n    bool documentToClose(int idx);\n    void modifyTab(bool isModify);\n    void tabDestroy(QObject *obj);\n\nprivate:\n    int documentFind(const QString& file, QWidget **ww = nullptr);\n    CodeEditor *lastIpEditor;\n    QWidget *banner;\n    ProjectView *pView;\n};\n\n#endif // DOCUMENTAREA_H\n"
  },
  {
    "path": "old/editorwidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>EditorWidget</class>\n <widget class=\"QWidget\" name=\"EditorWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>356</width>\n    <height>300</height>\n   </rect>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <property name=\"spacing\">\n    <number>0</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"CodeEditor\" name=\"editor\"/>\n   </item>\n   <item>\n    <widget class=\"FindReplaceWidget\" name=\"widget\" native=\"true\"/>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>CodeEditor</class>\n   <extends>QPlainTextEdit</extends>\n   <header>codeeditor.h</header>\n  </customwidget>\n  <customwidget>\n   <class>FindReplaceWidget</class>\n   <extends>QWidget</extends>\n   <header>findreplacewidget.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections/>\n <slots>\n  <slot>save()</slot>\n </slots>\n</ui>\n"
  },
  {
    "path": "old/embedded-ide.desktop",
    "content": "[Desktop Entry]\nType=Application\nName=Embedded IDE\nName[es]=Embedded IDE\nComment=Makefile based IDE for embedded systems\nComment[es]=IDE basado en Makefile para sistemas embebidos\nExec=embedded-ide\nIcon=embedded-ide\nTerminal=false\nCategories=Development;\n"
  },
  {
    "path": "old/etags.cpp",
    "content": "#include \"etags.h\"\n\n#include <QFile>\n#include <QRegularExpression>\n#include <QRegularExpressionMatchIterator>\n\n#include <QtDebug>\n\nstatic bool findNextEntry(QIODevice *f)\n{\n    bool founded = false;\n    while(!f->atEnd() && !founded) {\n        char c;\n        qint64 r = f->read(&c, 1);\n        if (r == -1)\n            break;\n        if (r == 1 && c == 0x0C) {\n            r = f->read(&c, 1);\n            if (c == '\\r')\n                r = f->read(&c, 1);\n            founded = (r == 1) && (c == '\\n');\n        }\n        if (r == 0)\n            break;\n    }\n    return founded;\n}\n\n#define PARSE_ERROR qDebug() << __FILE__ << __LINE__;\n\nstatic QString processFileName(const QString& line, int *len)\n{\n    QStringList parts = line.split(',');\n    if (parts.count() == 2) {\n        QString file = parts.at(0);\n        bool ok;\n        *len = parts.at(1).toInt(&ok, 10);\n        if (ok) {\n            return file;\n        } else\n            PARSE_ERROR\n    } else\n        PARSE_ERROR\n    *len = -1;\n    return QString();\n}\n\nstatic void parseDefs(const QString& in, const QString& file, ETags::TagMap *map)\n{\n    QRegularExpression re(R\"(([^\\x7f]+)\\x7f([^\\x01]+)\\x01(\\d+),(\\d+)\\r?\\n)\");\n    QRegularExpressionMatchIterator it = re.globalMatch(in);\n    while(it.hasNext()) {\n        QRegularExpressionMatch m = it.next();\n        ETags::Tag ctx;\n        QString tag = m.captured(2);\n        ctx.decl = m.captured(1);\n        ctx.file = file;\n        ctx.line = m.captured(3).toInt() - 1;\n        ctx.offset = m.captured(4).toInt();\n        map->insert(tag, ctx);\n    }\n}\n\nbool ETags::parse(QIODevice *in)\n{\n    map.clear();\n    while (findNextEntry(in)) {\n        QByteArray line = in->readLine();\n        int len = 0;\n        QString file = processFileName(line, &len);\n        if (!file.isEmpty() && len != -1) {\n            QString defs = in->read(len);\n            parseDefs(defs, file, &map);\n        }\n    }\n    qDebug() << \"tag entries found\" << map.count();\n    return true;\n}\n"
  },
  {
    "path": "old/etags.h",
    "content": "#ifndef ETAGS_H\n#define ETAGS_H\n\n#include <QMultiHash>\n#include <QMetaType>\n#include <QString>\n#include <QStringList>\n\nclass QIODevice;\n\nclass ETags\n{\npublic:\n    struct Tag {\n        QString file;\n        QString decl;\n        int line;\n        int offset;\n\n        Tag() {}\n\n        bool isEmpty() {\n            return file.isEmpty();\n        }\n    };\n    typedef QMultiHash<QString, Tag> TagMap;\n\n    ETags() {}\n\n    bool isValid() { return !tagList().isEmpty(); }\n\n    bool parse(QIODevice *in);\n\n    QStringList tagList() const {\n        return map.keys();\n    }\n\n    QList<Tag> all() const {\n        return map.values();\n    }\n\n    QList<Tag> find(const QString& ident) const {\n        return map.contains(ident)? map.values(ident) : QList<Tag>();\n    }\n\n    const QString& tagFile() const { return m_path; }\n\nprivate:\n    TagMap map;\n    QString m_path;\n};\n\nQ_DECLARE_METATYPE(ETags::Tag)\n\n#endif // ETAGS_H\n"
  },
  {
    "path": "old/filedownloader.cpp",
    "content": "#include \"filedownloader.h\"\n\n#include <QNetworkAccessManager>\n#include <QNetworkRequest>\n#include <QNetworkReply>\n#include <QHash>\n#include <QFile>\n#include <QProgressBar>\n\n#include <QtDebug>\n\nstruct DownloadEntry {\n    QUrl url;\n    QString localPath;\n\n    DownloadEntry(QUrl  _url, QString  _localPath) :\n        url(std::move(_url)), localPath(std::move(_localPath)) {}\n};\n\nclass FileDownloaderPrivate {\npublic:\n    FileDownloaderPrivate(FileDownloader * parent) :\n        q_ptr(parent)\n    {\n        Q_Q(FileDownloader);\n        net = new QNetworkAccessManager(q);\n    }\n\n    bool startDownload(const DownloadEntry& entry)\n    {\n        QNetworkReply *reply = net->get(QNetworkRequest(entry.url));\n        if (!reply) {\n            qDebug() << \"FATAL not reply\";\n            return false;\n        }\n        QObject::connect(reply, &QNetworkReply::downloadProgress,\n                         [entry, this] (quint64 received, quint64 bytesTotal)\n        {\n            Q_Q(FileDownloader);\n            int percent = bytesTotal? static_cast<int>(received*100/bytesTotal) : 0;\n            emit q->downloadProgress(entry.url, percent);\n        });\n        QObject::connect(reply, &QNetworkReply::finished,\n                         [entry, reply, this] ()\n        {\n            Q_Q(FileDownloader);\n            if (entry.localPath.isEmpty()) {\n                emit q->downloadDataFinished(entry.url, reply->readAll());\n            } else {\n                QFile localFile(entry.localPath);\n                if (!localFile.open(QFile::WriteOnly)) {\n                    emit q->downloadError(QObject::tr(\"Error downloading %1 to %2: %3\")\n                                          .arg(entry.url.toString())\n                                          .arg(entry.localPath)\n                                          .arg(localFile.errorString()));\n                } else {\n                    localFile.write(reply->readAll());\n                    localFile.close();\n                    qDebug() << \"File \" << localFile.fileName() << \" writed\";\n                    emit q->downloadFinished(entry.url, entry.localPath);\n                }\n            }\n            reply->deleteLater();\n            processNext();\n        });\n        QObject::connect(reply, static_cast<void (QNetworkReply::*)(QNetworkReply::NetworkError)>(&QNetworkReply::error),\n                [this, entry, reply] (QNetworkReply::NetworkError)\n        {\n            Q_Q(FileDownloader);\n            emit q->downloadError(QObject::tr(\"Network error downloading %1: %2\")\n                                  .arg(reply->errorString())\n                                  .arg(entry.url.toString()));\n            reply->deleteLater();\n        });\n\n        return true;\n    }\n\n    bool startDownload()\n    {\n        return downloadQueue.isEmpty()? false : startDownload(downloadQueue.takeFirst());\n    }\n\n    bool processNext()\n    {\n        Q_Q(FileDownloader);\n        if (downloadQueue.isEmpty()) {\n            emit q->allDownloadsFinished();\n            return false;\n        }\n        startDownload();\n        return true;\n    }\n\n    FileDownloader * const q_ptr;\n    Q_DECLARE_PUBLIC(FileDownloader)\n\n    QNetworkAccessManager *net;\n    QList<DownloadEntry> downloadQueue;\n    QProgressBar *progressBarGlobal = nullptr;\n    QProgressBar *progressBarItem = nullptr;\n};\n\nFileDownloader::FileDownloader(QObject *parent) :\n    QObject(parent), d_ptr(new FileDownloaderPrivate(this))\n{\n}\n\nFileDownloader::~FileDownloader()\n{\n    delete d_ptr;\n}\n\nvoid FileDownloader::setProgressBar(QProgressBar *globalbar, QProgressBar *itembar)\n{\n    Q_D(FileDownloader);\n    d->progressBarGlobal = globalbar;\n    d->progressBarItem = itembar;\n    globalbar->setRange(0, d->downloadQueue.count());\n    itembar->setRange(0, 100);\n    connect(this, &FileDownloader::downloadProgress, [this](const QUrl& url, int percent){\n        Q_D(FileDownloader);\n        Q_UNUSED(url);\n        d->progressBarItem->setValue(percent);\n    });\n    connect(this, &FileDownloader::downloadFinished, [this](const QUrl& url, const QString& path) {\n        Q_D(FileDownloader);\n        Q_UNUSED(url);\n        Q_UNUSED(path);\n        d->progressBarGlobal->setValue(d_ptr->progressBarGlobal->value() + 1);\n    });\n}\n\nvoid FileDownloader::startDownload(const QUrl &url, const QString &path)\n{\n    Q_D(FileDownloader);\n    enqueueDownload(url, path);\n    d->startDownload();\n}\n\nvoid FileDownloader::enqueueDownload(const QUrl &url, const QString &path)\n{\n    if (url.isEmpty())\n        return;\n    Q_D(FileDownloader);\n    DownloadEntry entry(url, path);\n    d->downloadQueue.append(entry);\n}\n\nvoid FileDownloader::processEnqueued()\n{\n    Q_D(FileDownloader);\n    d->processNext();\n}\n"
  },
  {
    "path": "old/filedownloader.h",
    "content": "#ifndef FILEDOWNLOADER_H\n#define FILEDOWNLOADER_H\n\n#include <QObject>\n#include <QUrl>\n\nclass FileDownloaderPrivate;\nclass QProgressBar;\n\nclass FileDownloader : public QObject\n{\n    Q_OBJECT\n\npublic:\n    explicit FileDownloader(QObject *parent = 0);\n    virtual ~FileDownloader();\n\n    void setProgressBar(QProgressBar *globalbar, QProgressBar *itembar);\n\nsignals:\n    void downloadProgress(const QUrl& url, int percent);\n    void downloadFinished(const QUrl& url, const QString& path);\n    void downloadDataFinished(const QUrl& url, const QByteArray& data);\n    void downloadError(const QString& error);\n    void allDownloadsFinished();\n\npublic slots:\n    void startDownload(const QUrl& url=QUrl(), const QString& path = QString());\n    void enqueueDownload(const QUrl& url, const QString& path = QString());\n    void processEnqueued();\n\nprotected:\n    FileDownloaderPrivate * const d_ptr;\n\nprivate:\n    Q_DECLARE_PRIVATE(FileDownloader)\n};\n\n#endif // FILEDOWNLOADER_H\n"
  },
  {
    "path": "old/filepropertiesdialog.cpp",
    "content": "#include \"filepropertiesdialog.h\"\n#include \"ui_filepropertiesdialog.h\"\n\n#include <QtDebug>\n\n#ifndef Q_OS_WIN\n#include <unistd.h>\n#include <sys/types.h>\n#include <grp.h>\n#include <pwd.h>\n\nstatic uint getCurrentUID() {\n    return static_cast<uint>(::getuid());\n}\n\n#else\n\nstatic uint getCurrentUID() {\n    return static_cast<uint>(-2);\n}\n\n#endif\n\nFilePropertiesDialog::FilePropertiesDialog(const QFileInfo &info, QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::FilePropertiesDialog),\n    thisFile(info)\n{\n    ui->setupUi(this);\n    ui->fileName->setText(thisFile.fileName());\n    ui->fileOwner->setText(thisFile.group());\n    ui->fileGroup->setText(thisFile.group());\n    bool canModify = thisFile.permission(QFile::WriteUser) || thisFile.ownerId() == getCurrentUID();\n    ui->fileName->setReadOnly(!canModify);\n    // FIX: cannot modify owner:group\n    ui->fileOwner->setReadOnly(true);\n    ui->fileGroup->setReadOnly(true);\n    ui->ownerPerms->setEnabled(canModify);\n    ui->groupPerms->setEnabled(canModify);\n    ui->otherPerms->setEnabled(canModify);\n\n#define _(a, b) \\\n    ui->a##b->setChecked(thisFile.permission(QFile::b##a))\n    _(Owner, Read);\n    _(Owner, Write);\n    _(Owner, Exe);\n    _(Group, Read);\n    _(Group, Write);\n    _(Group, Exe);\n    _(Other, Read);\n    _(Other, Write);\n    _(Other, Exe);\n#undef _\n\n#ifdef Q_OS_WIN\n    ui->labelOwner->hide();\n    ui->labelGroup->hide();\n    ui->fileOwner->hide();\n    ui->fileGroup->hide();\n    ui->groupPerms->hide();\n    ui->otherPerms->hide();\n    ui->ownerPerms->setTitle(tr(\"Permissions\"));\n    ui->OwnerExe->hide();\n#endif\n\n    adjustSize();\n}\n\nFilePropertiesDialog::~FilePropertiesDialog()\n{\n    delete ui;\n}\n\nvoid FilePropertiesDialog::on_FilePropertiesDialog_accepted()\n{\n    QFlags<QFile::Permission> perms;\n#define _(a, b) do { \\\n        if (ui->a##b->isChecked()) perms |= (QFile::b##a); else perms &= ~(QFile::b##a); \\\n    } while(0)\n    _(Owner, Read);\n    _(Owner, Write);\n    _(Owner, Exe);\n    _(Group, Read);\n    _(Group, Write);\n    _(Group, Exe);\n    _(Other, Read);\n    _(Other, Write);\n    _(Other, Exe);\n#undef _\n    QFile f(thisFile.absoluteFilePath());\n    if (perms != f.permissions())\n        f.setPermissions(perms);\n    if (ui->fileName->text() != thisFile.fileName())\n        f.rename(ui->fileName->text());\n#if 0\n    QString userNameText = ui->fileOwner->text();\n    QString groupNameText = ui->fileGroup->text();\n    if ((userNameText != thisFile.owner()) || (groupNameText != thisFile.group())) {\n        char *fileName = f.fileName().toLocal8Bit().data();\n        char *ownerName = userNameText.toLocal8Bit().data();\n        char *groupName = groupNameText.toLocal8Bit().data();\n        struct passwd *o = getpwnam(ownerName);\n        struct group *g = getgrnam(groupName);\n        if (g && o) {\n            ::chown(fileName, o->pw_uid, g->gr_gid);\n        } else\n            qDebug() << \"g\" << ownerName << ((void*)g) << \"o\" << groupName << ((void*)o);\n    }\n#endif\n}\n"
  },
  {
    "path": "old/filepropertiesdialog.h",
    "content": "#ifndef FILEPROPERTIESDIALOG_H\n#define FILEPROPERTIESDIALOG_H\n\n#include <QDialog>\n#include <QFileInfo>\n\nnamespace Ui {\nclass FilePropertiesDialog;\n}\n\nclass FilePropertiesDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit FilePropertiesDialog(const QFileInfo& info, QWidget *parent = 0);\n    ~FilePropertiesDialog();\n\nprivate slots:\n    void on_FilePropertiesDialog_accepted();\n\nprivate:\n    Ui::FilePropertiesDialog *ui;\n    QFileInfo thisFile;\n};\n\n#endif // FILEPROPERTIESDIALOG_H\n"
  },
  {
    "path": "old/filepropertiesdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FilePropertiesDialog</class>\n <widget class=\"QDialog\" name=\"FilePropertiesDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>242</width>\n    <height>383</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>File Property</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <layout class=\"QFormLayout\" name=\"formLayout\">\n     <item row=\"0\" column=\"0\">\n      <widget class=\"QLabel\" name=\"label\">\n       <property name=\"text\">\n        <string>Name</string>\n       </property>\n      </widget>\n     </item>\n     <item row=\"0\" column=\"1\">\n      <widget class=\"QLineEdit\" name=\"fileName\"/>\n     </item>\n     <item row=\"1\" column=\"0\">\n      <widget class=\"QLabel\" name=\"labelOwner\">\n       <property name=\"text\">\n        <string>Owner</string>\n       </property>\n      </widget>\n     </item>\n     <item row=\"1\" column=\"1\">\n      <widget class=\"QLineEdit\" name=\"fileOwner\"/>\n     </item>\n     <item row=\"2\" column=\"0\">\n      <widget class=\"QLabel\" name=\"labelGroup\">\n       <property name=\"text\">\n        <string>Group</string>\n       </property>\n      </widget>\n     </item>\n     <item row=\"2\" column=\"1\">\n      <widget class=\"QLineEdit\" name=\"fileGroup\"/>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QGroupBox\" name=\"ownerPerms\">\n     <property name=\"title\">\n      <string>Owner</string>\n     </property>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n      <item>\n       <widget class=\"QCheckBox\" name=\"OwnerRead\">\n        <property name=\"text\">\n         <string>Read</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"OwnerWrite\">\n        <property name=\"text\">\n         <string>Write</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"OwnerExe\">\n        <property name=\"text\">\n         <string>Execute</string>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupPerms\">\n     <property name=\"title\">\n      <string>Group</string>\n     </property>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n      <item>\n       <widget class=\"QCheckBox\" name=\"GroupRead\">\n        <property name=\"text\">\n         <string>Read</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"GroupWrite\">\n        <property name=\"text\">\n         <string>Write</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"GroupExe\">\n        <property name=\"text\">\n         <string>Execute</string>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QGroupBox\" name=\"otherPerms\">\n     <property name=\"title\">\n      <string>Others</string>\n     </property>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n      <item>\n       <widget class=\"QCheckBox\" name=\"OtherRead\">\n        <property name=\"text\">\n         <string>Read</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"OtherWrite\">\n        <property name=\"text\">\n         <string>Write</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"OtherExe\">\n        <property name=\"text\">\n         <string>Execute</string>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <spacer name=\"verticalSpacer\">\n     <property name=\"orientation\">\n      <enum>Qt::Vertical</enum>\n     </property>\n     <property name=\"sizeHint\" stdset=\"0\">\n      <size>\n       <width>20</width>\n       <height>40</height>\n      </size>\n     </property>\n    </spacer>\n   </item>\n   <item>\n    <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"standardButtons\">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>FilePropertiesDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>FilePropertiesDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/findinfilesdialog.cpp",
    "content": "#include \"appconfig.h\"\n#include \"documentarea.h\"\n#include \"findinfilesdialog.h\"\n#include \"projectview.h\"\n#include \"ui_findinfilesdialog.h\"\n\n#include <QFileDialog>\n#include <QListView>\n#include <QMenu>\n#include <QStandardItemModel>\n#include <QWidgetAction>\n#include <QtConcurrent>\n\n#include <Qsci/qsciscintilla.h>\n\nstruct FilePos {\n    int line;\n    int column;\n    QString path;\n};\n\nQ_DECLARE_METATYPE(FilePos)\n\nconst QStringList STANDARD_FILTERS =\n        { \"*.*\", \"*.c\", \"*.cpp\", \"*.h\", \"*.hpp\", \"*.txt\" };\n\n\nFindInFilesDialog::FindInFilesDialog(DocumentArea *docView, ProjectView *projView, QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::FindInFilesDialog)\n{\n    ui->setupUi(this);\n    auto model = new QStandardItemModel(this);\n    ui->treeView->setModel(model);\n    auto protoItem = new QStandardItem();\n    protoItem->setFont(AppConfig::mutableInstance().loggerFont());\n    model->setItemPrototype(protoItem);\n    ui->textToFind->addMenuActions(QHash<QString, QString>{\n                                      { tr(\"Regular Expression\"), \"regex\" },\n                                      { tr(\"Case Sensitive\"), \"case\" },\n                                      { tr(\"Wole Words\"), \"wword\" },\n                                  });\n    ui->labelStatus->setText(tr(\"Ready\"));\n    ui->textDirectory->setText(projView->projectPath().absolutePath());\n\n    auto filterMenu = new QMenu(this);\n    auto listViewAction = new QWidgetAction(filterMenu);\n    auto filterListView = new QListView(this);\n    filterListView->setEditTriggers(QListView::NoEditTriggers);\n    auto filterModel = new QStandardItemModel(filterListView);\n    for(const auto& e: STANDARD_FILTERS) {\n        auto i = new QStandardItem(e);\n        i->setCheckable(true);\n        filterModel->appendRow(i);\n    }\n    connect(filterModel, &QStandardItemModel::itemChanged, [this](QStandardItem *item) {\n        QString filter = ui->textFilePattern->text();\n        if (item->checkState() == Qt::Checked) {\n            if (!filter.isEmpty())\n                filter.append(\", \");\n            filter.append(item->text());\n        } else {\n            filter.remove(QRegularExpression(QString(R\"(\\,?\\s?%1,?)\")\n                                             .arg(QRegularExpression::escape(item->text()))));\n        }\n        ui->textFilePattern->setText(filter.trimmed());\n    });\n    filterModel->item(0, 0)->setCheckState(Qt::Checked);\n    filterListView->setModel(filterModel);\n    listViewAction->setDefaultWidget(filterListView);\n    filterMenu->addAction(listViewAction);\n    ui->buttonSelectfilePattern->setMenu(filterMenu);\n    ui->buttonSelectfilePattern->setPopupMode(QToolButton::InstantPopup);\n\n    connect(ui->treeView, &QTreeView::activated,\n            [this, docView, projView, model](const QModelIndex& index) {\n        auto item = model->itemFromIndex(index);\n        if (item) {\n            auto pos = item->data().value<FilePos>();\n            docView->fileOpen(pos.path, pos.line, pos.column);\n            docView->window()->activateWindow();\n        }\n    });\n\n    auto doc = new QsciScintilla(this);\n    doc->hide();\n    connect(ui->buttonFind, &QToolButton::clicked, [this, model, doc]() {\n        model->clear();\n        ui->buttonStop->setEnabled(true);\n        ui->buttonFind->setDisabled(true);\n        QStringList filters = ui->textFilePattern->text().split(\",\")\n                .replaceInStrings(QRegularExpression(R\"(^\\s+)\"), QString())\n                .replaceInStrings(QRegularExpression(R\"(\\s+$)\"), QString());\n        QString textToFind = ui->textToFind->text();\n        bool isRegex = ui->textToFind->isPropertyChecked(\"regex\");\n        bool isCS = ui->textToFind->isPropertyChecked(\"case\");\n        bool isWWord = ui->textToFind->isPropertyChecked(\"wword\");\n        QDirIterator it(ui->textDirectory->text(), filters,\n                        QDir::NoFilter, QDirIterator::Subdirectories);\n        while (it.hasNext()) {\n            QCoreApplication::processEvents();\n            ui->labelStatus->setText(tr(\"Scanning %1 file\").arg(it.next()));\n            auto info = it.fileInfo();\n            if (!info.isFile())\n                continue;\n            QFile file(info.absoluteFilePath());\n            if (!file.open(QFile::ReadOnly))\n                continue;\n            if (!doc->read(&file))\n                continue;\n            if (!doc->findFirst(textToFind, isRegex, isCS, isWWord, false, true, -1, -1, false, false))\n                continue;\n            auto fileItem = model->itemPrototype()->clone();\n            fileItem->setText(info.absoluteFilePath());\n            model->appendRow(fileItem);\n            do {\n                int line, column;\n                doc->getCursorPosition(&line, &column);\n                QString textInFile = doc->text(line);\n                auto posItem = model->itemPrototype()->clone();\n                posItem->setText(tr(\"Line %1 Char %2: %3\")\n                                 .arg(QString(\"%1\").arg(line).leftJustified(8, ' '))\n                                 .arg(QString(\"%1\").arg(column).leftJustified(8, ' '))\n                                 .arg(textInFile));\n                posItem->setData(QVariant::fromValue(FilePos{ line, column, info.absoluteFilePath() }));\n                fileItem->appendRow(posItem);\n                QCoreApplication::processEvents();\n            } while (doc->findNext());\n        }\n        ui->buttonStop->setDisabled(true);\n        ui->buttonFind->setEnabled(true);\n        ui->treeView->expandAll();\n        ui->labelStatus->setText(tr(\"Done\"));\n    });\n\n    connect(ui->buttonChoseDirectory, &QToolButton::clicked, [this]() {\n        QString path = QFileDialog::getExistingDirectory(this,\n                                                         tr(\"Select directory\"),\n                                                         ui->textDirectory->text());\n        if (!path.isEmpty())\n            ui->textDirectory->setText(path);\n    });\n}\n\nFindInFilesDialog::~FindInFilesDialog()\n{\n    delete ui;\n}\n"
  },
  {
    "path": "old/findinfilesdialog.h",
    "content": "#ifndef FINDINFILESDIALOG_H\n#define FINDINFILESDIALOG_H\n\n#include <QDialog>\n#include <QFuture>\n#include <QEvent>\n\nclass ProjectView;\nclass DocumentArea;\n\nnamespace Ui {\nclass FindInFilesDialog;\n}\n\nclass QStandardItemModel;\nclass QStandardItem;\n\nclass FindInFilesDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit FindInFilesDialog(DocumentArea *docView, ProjectView *projView, QWidget *parent = 0);\n    ~FindInFilesDialog();\n\nprotected:\n    bool event(QEvent *event) override\n    {\n        switch (event->type()) {\n        case QEvent::WindowActivate:\n            setWindowOpacity(1.0);\n            break;\n        case QEvent::WindowDeactivate:\n            setWindowOpacity(0.5);\n            break;\n        }\n        return QDialog::event(event);\n    }\nprivate:\n    Ui::FindInFilesDialog *ui;\n};\n\n#endif // FINDINFILESDIALOG_H\n"
  },
  {
    "path": "old/findinfilesdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FindInFilesDialog</class>\n <widget class=\"QDialog\" name=\"FindInFilesDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>446</width>\n    <height>372</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Find in files</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <layout class=\"QFormLayout\" name=\"formLayout\">\n     <item row=\"0\" column=\"0\">\n      <widget class=\"QLabel\" name=\"label_1\">\n       <property name=\"text\">\n        <string>Directory</string>\n       </property>\n       <property name=\"alignment\">\n        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n       </property>\n      </widget>\n     </item>\n     <item row=\"0\" column=\"1\">\n      <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n       <item>\n        <widget class=\"QLineEdit\" name=\"textDirectory\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonChoseDirectory\">\n         <property name=\"icon\">\n          <iconset resource=\"../resources/resources.qrc\">\n           <normaloff>:/images/document-open.svg</normaloff>:/images/document-open.svg</iconset>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </item>\n     <item row=\"1\" column=\"0\">\n      <widget class=\"QLabel\" name=\"label_2\">\n       <property name=\"text\">\n        <string>File pattern</string>\n       </property>\n       <property name=\"alignment\">\n        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n       </property>\n      </widget>\n     </item>\n     <item row=\"1\" column=\"1\">\n      <layout class=\"QHBoxLayout\" name=\"horizontalLayout_4\">\n       <item>\n        <widget class=\"QLineEdit\" name=\"textFilePattern\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonSelectfilePattern\">\n         <property name=\"icon\">\n          <iconset resource=\"../resources/resources.qrc\">\n           <normaloff>:/images/application-menu.svg</normaloff>:/images/application-menu.svg</iconset>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </item>\n     <item row=\"2\" column=\"0\">\n      <widget class=\"QLabel\" name=\"label_3\">\n       <property name=\"text\">\n        <string>Text to find</string>\n       </property>\n       <property name=\"alignment\">\n        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n       </property>\n      </widget>\n     </item>\n     <item row=\"2\" column=\"1\">\n      <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n       <item>\n        <widget class=\"FindLineEdit\" name=\"textToFind\">\n         <property name=\"sizePolicy\">\n          <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n           <horstretch>0</horstretch>\n           <verstretch>0</verstretch>\n          </sizepolicy>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <widget class=\"QToolButton\" name=\"buttonFind\">\n         <property name=\"icon\">\n          <iconset resource=\"../resources/resources.qrc\">\n           <normaloff>:/images/edit-find.svg</normaloff>:/images/edit-find.svg</iconset>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QTreeView\" name=\"treeView\">\n     <property name=\"editTriggers\">\n      <set>QAbstractItemView::NoEditTriggers</set>\n     </property>\n     <property name=\"alternatingRowColors\">\n      <bool>true</bool>\n     </property>\n     <property name=\"uniformRowHeights\">\n      <bool>true</bool>\n     </property>\n     <property name=\"animated\">\n      <bool>true</bool>\n     </property>\n     <property name=\"headerHidden\">\n      <bool>true</bool>\n     </property>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n     <item>\n      <widget class=\"QLabel\" name=\"labelStatus\"/>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"buttonStop\">\n       <property name=\"enabled\">\n        <bool>false</bool>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"../resources/resources.qrc\">\n         <normaloff>:/images/actions/dialog-cancel.svg</normaloff>:/images/actions/dialog-cancel.svg</iconset>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>FindLineEdit</class>\n   <extends>QLineEdit</extends>\n   <header>findlineedit.h</header>\n  </customwidget>\n </customwidgets>\n <tabstops>\n  <tabstop>textToFind</tabstop>\n  <tabstop>buttonFind</tabstop>\n  <tabstop>textFilePattern</tabstop>\n  <tabstop>buttonSelectfilePattern</tabstop>\n  <tabstop>textDirectory</tabstop>\n  <tabstop>buttonChoseDirectory</tabstop>\n  <tabstop>treeView</tabstop>\n  <tabstop>buttonStop</tabstop>\n </tabstops>\n <resources>\n  <include location=\"../resources/resources.qrc\"/>\n </resources>\n <connections>\n  <connection>\n   <sender>textToFind</sender>\n   <signal>returnPressed()</signal>\n   <receiver>buttonFind</receiver>\n   <slot>click()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>321</x>\n     <y>79</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>427</x>\n     <y>87</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/findlineedit.cpp",
    "content": "#include \"findlineedit.h\"\n\n#include <QHBoxLayout>\n#include <QMenu>\n#include <QToolButton>\n#include <QStyle>\n#include <QEvent>\n\nstatic const QString INNER_BUTTON_STYLE = \"background: transparent; border: none;\";\n\nFindLineEdit::FindLineEdit(QWidget *parent) : QLineEdit(parent)\n{\n    auto layout = new QHBoxLayout(this);\n    auto clearButton = new QToolButton(this);\n    optionsButton = new QToolButton(this);\n    optionsButton->setIcon(QIcon(\":/images/application-menu.svg\"));\n    clearButton->setIcon(QIcon(\":/images/actions/edit-clear.svg\"));\n    optionsButton->setFocusPolicy(Qt::NoFocus);\n    optionsButton->setPopupMode(QToolButton::InstantPopup);\n    optionsButton->setCursor(Qt::ArrowCursor);\n    clearButton->setFocusPolicy(Qt::NoFocus);\n    clearButton->setCursor(Qt::ArrowCursor);\n    optionsButton->setStyleSheet(INNER_BUTTON_STYLE);\n    clearButton->setStyleSheet(INNER_BUTTON_STYLE);\n    int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);\n    setStyleSheet(QString(\"QLineEdit { padding-right: %1px; padding-left: %2px }\\n\"\n                          \"QToolButton::menu-indicator { image: none; }\")\n                  .arg(clearButton->sizeHint().width() + frameWidth + 1)\n                  .arg(optionsButton->sizeHint().width() + frameWidth + 1));\n    layout->addWidget(optionsButton, 0, Qt::AlignLeft);\n    layout->addWidget(clearButton, 0, Qt::AlignRight);\n    layout->setMargin(0);\n    layout->setSpacing(0);\n    connect(clearButton, SIGNAL(clicked()), this, SLOT(clear()));\n    QSize msz = minimumSizeHint();\n    setMinimumSize(qMax(msz.width(), clearButton->sizeHint().height() + frameWidth * 2 + 2),\n                   qMax(msz.height(), clearButton->sizeHint().height() + frameWidth * 2 + 2));\n}\n\nvoid FindLineEdit::addMenuActions(const QHash<QString, QString> &actionList)\n{\n    auto menu = new QMenu(this);\n    QHash<QString, QString>::const_iterator it;\n    for (it = actionList.constBegin(); it != actionList.constEnd(); ++it) {\n        auto actionName = it.key();\n        auto propertyName = it.value();\n        auto action = menu->addAction(actionName);\n        action->setCheckable(true);\n        setProperty(propertyName.toLatin1().constData(), false);\n        actionMap.insert(propertyName, action);\n        connect(action, &QAction::triggered, [this, propertyName](bool ck) {\n            setProperty(propertyName.toLatin1().constData(), QVariant(ck));\n            emit menuActionClicked(propertyName, ck);\n        });\n    }\n    optionsButton->setMenu(menu);\n}\n\nvoid FindLineEdit::setPropertyChecked(const QString& propertyName, bool state)\n{\n    setProperty(propertyName.toLatin1().constData(), state);\n    if (actionMap.contains(propertyName))\n        actionMap.value(propertyName)->setChecked(state);\n}\n"
  },
  {
    "path": "old/findlineedit.h",
    "content": "#ifndef FINDLINEEDIT_H\n#define FINDLINEEDIT_H\n\n#include <QLineEdit>\n\nclass QToolButton;\n\nclass FindLineEdit : public QLineEdit\n{\n    Q_OBJECT\n\npublic:\n    FindLineEdit(QWidget *parent = 0l);\n\n    void addMenuActions(const QHash<QString, QString>& actionList);\n\n    void setPropertyChecked(const QString &propertyName, bool state);\n    bool isPropertyChecked(const char *name) const { return property(name).toBool(); }\n\nsignals:\n    void menuActionClicked(const QString& prop, bool status);\n\nprivate:\n    QToolButton *optionsButton;\n    QHash<QString, QAction*> actionMap;\n};\n\n#endif // FINDLINEEDIT_H\n"
  },
  {
    "path": "old/formfindreplace.cpp",
    "content": "#include \"codeeditor.h\"\n#include \"formfindreplace.h\"\n#include \"Qsci/qsciscintilla.h\"\n#include \"ui_formfindreplace.h\"\n\n#include <QKeyEvent>\n#include <QMessageBox>\n\nFormFindReplace::FormFindReplace(QsciScintilla *editor) :\n    QWidget(editor),\n    ui(new Ui::FormFindReplace)\n{\n    this->editor = editor;\n    ui->setupUi(this);\n    setAutoFillBackground(true);\n    ui->textToFind->addMenuActions(QHash<QString, QString>{\n        { tr(\"Regular Expression\"), \"regex\" },\n        { tr(\"Case Sensitive\"), \"case\" },\n        { tr(\"Wole Words\"), \"wword\" },\n        { tr(\"Selection Only\"), \"selonly\" },\n        { tr(\"Wrap search\"), \"wrap\" },\n        { tr(\"Backward search\"), \"backward\" },\n    });\n    ui->textToReplace->addMenuActions(QHash<QString, QString>{\n        { tr(\"Replace All\"), \"replaceAll\" }\n    });\n    connect(ui->textToFind, &FindLineEdit::menuActionClicked,\n            [this]() { setProperty(\"isFirst\", true); });\n}\n\nFormFindReplace::~FormFindReplace()\n{\n    delete ui;\n}\n\nvoid FormFindReplace::showEvent(QShowEvent *event)\n{\n    QWidget::showEvent(event);\n    ui->textToFind->setFocus();\n    setProperty(\"isFirst\", true);\n}\n\nvoid FormFindReplace::keyPressEvent(QKeyEvent *event)\n{\n    if (event->key() == Qt::Key_Escape) {\n        hide();\n        event->accept();\n    } else\n        QWidget::keyPressEvent(event);\n}\n\nbool FormFindReplace::on_buttonFind_clicked()\n{\n    bool found = false;\n    QString expr = ui->textToFind->text();\n    if (property(\"isFirst\").toBool()) {\n        bool re = ui->textToFind->isPropertyChecked(\"regex\");\n        bool cs = ui->textToFind->isPropertyChecked(\"case\");\n        bool wo = ui->textToFind->isPropertyChecked(\"wword\");\n        bool wrap = ui->textToFind->isPropertyChecked(\"wrap\");\n        bool forward = !ui->textToFind->isPropertyChecked(\"backward\");\n        int line = -1;\n        int index = -1;\n        bool show = true;\n        bool posix = false;\n        bool selonly = ui->textToFind->isPropertyChecked(\"selonly\");\n        if (selonly)\n            found = editor->findFirstInSelection(expr, re, cs, wo, forward, show, posix);\n        else\n            found = editor->findFirst(expr, re, cs, wo, wrap, forward, line, index, show, posix);\n        setProperty(\"isFirst\", false);\n    } else\n        found = editor->findNext();\n    QPalette pal = ui->textToFind->palette();\n    pal.setBrush(QPalette::Base, found? palette().base() : QBrush(QColor(Qt::red).lighter()));\n    ui->textToFind->setPalette(pal);\n    return found;\n}\n\nvoid FormFindReplace::on_buttonReplace_clicked()\n{\n    while (on_buttonFind_clicked()) {\n        QString replaceText = ui->textToReplace->text();\n        editor->replace(replaceText);\n        if (!ui->textToReplace->isPropertyChecked(\"replaceAll\"))\n            break;\n    }\n}\n\nvoid FormFindReplace::on_textToFind_textChanged(const QString &text)\n{\n    Q_UNUSED(text);\n    int line, pos;\n    QPoint p = property(\"currentPos\").toPoint();\n    if (!p.isNull()) {\n        line = p.x();\n        pos = p.y();\n        editor->setCursorPosition(line, pos);\n    }\n    editor->getCursorPosition(&line, &pos);\n    setProperty(\"currentPos\", QPoint(line, pos));\n    setProperty(\"isFirst\", true);\n    on_buttonFind_clicked();\n}\n\nvoid FormFindReplace::on_textToFind_returnPressed()\n{\n    setProperty(\"currentPos\", QPoint());\n    setProperty(\"isFirst\", false);\n    on_buttonFind_clicked();\n}\n"
  },
  {
    "path": "old/formfindreplace.h",
    "content": "#ifndef FORMFINDREPLACE_H\n#define FORMFINDREPLACE_H\n\n#include <QWidget>\n\nnamespace Ui {\nclass FormFindReplace;\n}\n\nclass QsciScintilla;\n\nclass FormFindReplace : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit FormFindReplace(QsciScintilla *editor);\n    ~FormFindReplace();\n\nprotected:\n    void showEvent(QShowEvent *event);\n    void keyPressEvent(QKeyEvent *event);\n\nprivate slots:\n    bool on_buttonFind_clicked();\n\n    void on_buttonReplace_clicked();\n\n    void on_textToFind_textChanged(const QString &text);\n\n    void on_textToFind_returnPressed();\n\nprivate:\n    Ui::FormFindReplace *ui;\n    QsciScintilla *editor;\n};\n\n#endif // FORMFINDREPLACE_H\n"
  },
  {
    "path": "old/formfindreplace.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>FormFindReplace</class>\n <widget class=\"QWidget\" name=\"FormFindReplace\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>227</width>\n    <height>52</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <layout class=\"QGridLayout\" name=\"gridLayout\">\n   <property name=\"leftMargin\">\n    <number>2</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>2</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>2</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>2</number>\n   </property>\n   <property name=\"spacing\">\n    <number>2</number>\n   </property>\n   <item row=\"0\" column=\"0\">\n    <widget class=\"QLabel\" name=\"labelFind\">\n     <property name=\"text\">\n      <string>Find</string>\n     </property>\n     <property name=\"alignment\">\n      <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"1\">\n    <widget class=\"FindLineEdit\" name=\"textToFind\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"2\">\n    <widget class=\"QToolButton\" name=\"buttonFind\">\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/edit-find.svg</normaloff>:/images/edit-find.svg</iconset>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"3\">\n    <widget class=\"QToolButton\" name=\"buttonFindPrev_2\">\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/actions/dialog-close.svg</normaloff>:/images/actions/dialog-close.svg</iconset>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"0\">\n    <widget class=\"QLabel\" name=\"labelReplace\">\n     <property name=\"text\">\n      <string>Replace</string>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"1\">\n    <widget class=\"FindLineEdit\" name=\"textToReplace\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"2\">\n    <widget class=\"QToolButton\" name=\"buttonReplace\">\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/edit-find-replace.svg</normaloff>:/images/edit-find-replace.svg</iconset>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>FindLineEdit</class>\n   <extends>QLineEdit</extends>\n   <header>findlineedit.h</header>\n  </customwidget>\n </customwidgets>\n <resources>\n  <include location=\"../resources/resources.qrc\"/>\n </resources>\n <connections>\n  <connection>\n   <sender>buttonFindPrev_2</sender>\n   <signal>clicked()</signal>\n   <receiver>FormFindReplace</receiver>\n   <slot>hide()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>498</x>\n     <y>22</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>466</x>\n     <y>9</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/gdbstartdialog.cpp",
    "content": "#include \"gdbstartdialog.h\"\n#include \"ui_gdbstartdialog.h\"\n\n#include <QFileDialog>\n#include <QListView>\n#include <QMimeDatabase>\n#include <QMimeType>\n#include <QStandardItemModel>\n#include <QStringListModel>\n\n#include \"appconfig.h\"\n\nstatic const QStringList EXEC_MIMETYPE_LIST = {\n    \"application/x-executable\",\n#ifdef Q_OS_WIN\n    \"application/x-msdownload\",\n#endif\n};\n\nstatic QMimeDatabase mimeDb;\n\nstatic bool isExecMimetype(const QMimeType& type) {\n    for(auto a: EXEC_MIMETYPE_LIST)\n        if (type.inherits(a))\n            return true;\n    return false;\n}\n\nstatic QStringList findExecutables(const QDir& path) {\n    QStringList list;\n    auto entries = path.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries);\n    for(const auto& info: entries) {\n        if (info.isDir()) {\n            list += findExecutables(QDir(info.absoluteFilePath()));\n        } else {\n            QFile f(info.absoluteFilePath());\n            QMimeType type = mimeDb.mimeTypeForFileNameAndData(info.absoluteFilePath(), &f);\n            if (isExecMimetype(type)) {\n                list << info.absoluteFilePath();\n            }\n        }\n    }\n    return list;\n}\n\nstatic QStringList buildPosibleGdbNames(const QStringList& prefixsList)\n{\n    QStringList gdbPrefixed;\n    for(const auto& e: prefixsList)\n        gdbPrefixed << QString(\"%1gdb\").arg(e);\n    gdbPrefixed << \"gdb\";\n    return gdbPrefixed;\n}\n\nstatic const QStringList POSIBLE_PRETARGET_MAKE = {\n    R\"(.*debug\\w*.*)\",\n    R\"(.*openocd.*)\",\n};\n\nstatic int findPosiblePreTargetMake(const QComboBox *c)\n{\n    for(int i=0; i<c->count(); i++)\n        for(const auto& rt: POSIBLE_PRETARGET_MAKE)\n            if (QRegularExpression(rt).match(c->itemText(i)).hasMatch())\n                return i;\n    return 0;\n}\n\nGDBStartDialog::GDBStartDialog(const MakefileInfo &info, QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::GDBStartDialog),\n    m_info(info)\n{\n    ui->setupUi(this);\n    ui->textEditCommands->setFont(AppConfig::systemMonoFont());\n\n    ui->comboProgramExecutable->addItems(findExecutables(QDir(m_info.workingDir)));\n    ui->comboProgramExecutable->setCurrentIndex(0);\n\n    ui->comboGdbExecutable->addItems(buildPosibleGdbNames(m_info.prefixs));\n    ui->comboGdbExecutable->setCurrentIndex(0);\n\n    ui->comboPreTargetMake->addItems(m_info.targets);\n    ui->comboPreTargetMake->setCurrentIndex(findPosiblePreTargetMake(ui->comboPreTargetMake));\n}\n\nGDBStartDialog::~GDBStartDialog()\n{\n    delete ui;\n}\n\nGDBStartDialog::GdbConfig GDBStartDialog::config() const\n{\n    return GdbConfig{\n        ui->comboGdbExecutable->currentText(),\n        ui->comboProgramExecutable->currentText(),\n        ui->groupPreTarget->isChecked()? ui->comboPreTargetMake->currentText() : QString(),\n        ui->textEditCommands->toPlainText().split(QRegularExpression(R\"(\\r?\\n)\")),\n    };\n}\n\nvoid GDBStartDialog::on_buttonLoadGDBExecutable_clicked()\n{\n    QString name = QFileDialog::getOpenFileName(window(), tr(\"Open GDB executable\"),\n                                                QDir::homePath(),\n                                                tr(\"GDB executable (*gdb*);;\"\n                                                   \"All files (*)\"));\n    if (!name.isEmpty())\n        ui->comboGdbExecutable->setCurrentText(name);\n}\n\nvoid GDBStartDialog::on_buttonLoadProgramExecutable_clicked()\n{\n    QString name = QFileDialog::getOpenFileName(window(), tr(\"Open executable to debug\"),\n                                                m_info.workingDir,\n                                            #ifdef Q_OS_WIN\n                                                tr(\"Executables (*.exe);;All files (*)\")\n                                            #else\n                                                tr(\"All files (*)\")\n                                            #endif\n                                                );\n    if (!name.isEmpty()) {\n        ui->comboProgramExecutable->setCurrentText(name);\n    }\n}\n"
  },
  {
    "path": "old/gdbstartdialog.h",
    "content": "#ifndef GDBSTARTDIALOG_H\n#define GDBSTARTDIALOG_H\n\n#include <QDialog>\n#include <makefileinfo.h>\n\nnamespace Ui {\nclass GDBStartDialog;\n}\n\nclass GDBStartDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    struct GdbConfig {\n        QString gdbProgram;\n        QString dbgProgram;\n        QString premakeTarget;\n        QStringList initCommands;\n    };\n\n    explicit GDBStartDialog(const MakefileInfo& info, QWidget *parent = 0);\n    ~GDBStartDialog();\n\n    GdbConfig config() const;\n\nprivate slots:\n    void on_buttonLoadGDBExecutable_clicked();\n\n    void on_buttonLoadProgramExecutable_clicked();\n\nprivate:\n    Ui::GDBStartDialog *ui;\n    const MakefileInfo &m_info;\n};\n\n#endif // GDBSTARTDIALOG_H\n"
  },
  {
    "path": "old/gdbstartdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>GDBStartDialog</class>\n <widget class=\"QDialog\" name=\"GDBStartDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>611</width>\n    <height>472</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Debugger Parameters</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\">\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupBox_2\">\n     <property name=\"title\">\n      <string>GDB Configuration</string>\n     </property>\n     <property name=\"alignment\">\n      <set>Qt::AlignCenter</set>\n     </property>\n     <layout class=\"QFormLayout\" name=\"formLayout\">\n      <item row=\"0\" column=\"0\">\n       <widget class=\"QLabel\" name=\"label_2\">\n        <property name=\"text\">\n         <string>GDB executable</string>\n        </property>\n       </widget>\n      </item>\n      <item row=\"0\" column=\"1\">\n       <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n        <item>\n         <widget class=\"QComboBox\" name=\"comboGdbExecutable\">\n          <property name=\"sizePolicy\">\n           <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n            <horstretch>0</horstretch>\n            <verstretch>0</verstretch>\n           </sizepolicy>\n          </property>\n          <property name=\"editable\">\n           <bool>true</bool>\n          </property>\n         </widget>\n        </item>\n        <item>\n         <widget class=\"QToolButton\" name=\"buttonLoadGDBExecutable\">\n          <property name=\"text\">\n           <string>...</string>\n          </property>\n          <property name=\"icon\">\n           <iconset resource=\"../resources/resources.qrc\">\n            <normaloff>:/images/document-open.svg</normaloff>:/images/document-open.svg</iconset>\n          </property>\n         </widget>\n        </item>\n       </layout>\n      </item>\n      <item row=\"1\" column=\"0\">\n       <widget class=\"QLabel\" name=\"label_3\">\n        <property name=\"text\">\n         <string>Program to debug</string>\n        </property>\n       </widget>\n      </item>\n      <item row=\"1\" column=\"1\">\n       <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n        <item>\n         <widget class=\"QComboBox\" name=\"comboProgramExecutable\">\n          <property name=\"sizePolicy\">\n           <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n            <horstretch>0</horstretch>\n            <verstretch>0</verstretch>\n           </sizepolicy>\n          </property>\n          <property name=\"editable\">\n           <bool>true</bool>\n          </property>\n         </widget>\n        </item>\n        <item>\n         <widget class=\"QToolButton\" name=\"buttonLoadProgramExecutable\">\n          <property name=\"text\">\n           <string>...</string>\n          </property>\n          <property name=\"icon\">\n           <iconset resource=\"../resources/resources.qrc\">\n            <normaloff>:/images/document-open.svg</normaloff>:/images/document-open.svg</iconset>\n          </property>\n         </widget>\n        </item>\n       </layout>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupPreTarget\">\n     <property name=\"title\">\n      <string>Execute &amp;make target before gdb startup</string>\n     </property>\n     <property name=\"alignment\">\n      <set>Qt::AlignCenter</set>\n     </property>\n     <property name=\"checkable\">\n      <bool>true</bool>\n     </property>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n      <item>\n       <widget class=\"QComboBox\" name=\"comboPreTargetMake\">\n        <property name=\"sizePolicy\">\n         <sizepolicy hsizetype=\"Expanding\" vsizetype=\"Fixed\">\n          <horstretch>0</horstretch>\n          <verstretch>0</verstretch>\n         </sizepolicy>\n        </property>\n        <property name=\"editable\">\n         <bool>true</bool>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupBox\">\n     <property name=\"title\">\n      <string>GDB Startup commands</string>\n     </property>\n     <property name=\"alignment\">\n      <set>Qt::AlignCenter</set>\n     </property>\n     <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n      <item>\n       <widget class=\"QPlainTextEdit\" name=\"textEditCommands\"/>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"standardButtons\">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"../resources/resources.qrc\"/>\n </resources>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>GDBStartDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>GDBStartDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/i18n/es.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"es\">\n<context>\n    <name>AboutDialog</name>\n    <message>\n        <location filename=\"../aboutdialog.ui\" line=\"14\"/>\n        <source>About</source>\n        <translation>Acerca de,,,</translation>\n    </message>\n    <message>\n        <location filename=\"../aboutdialog.ui\" line=\"56\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;Embedded IDE&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;for C/C++&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Copyright © 2015-2017&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;by Martin Ribelotta &lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;martinribelotta@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;martinribelotta@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;Embedded IDE&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;for C/C++&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Copyright © 2015-2017&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;por Martin Ribelotta &lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;martinribelotta@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;martinribelotta@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;Embedded IDE&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;for C/C++&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Copyright © 2015-2017&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;by Martin Ribelotta &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;Embedded IDE&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;para C y C++&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Copyright © 2015-2017&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;por Martin Ribelotta &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../aboutdialog.ui\" line=\"63\"/>\n        <source>TextLabel</source>\n        <translation>TextLabel</translation>\n    </message>\n    <message>\n        <source>Version %1,&lt;br&gt;build date %2</source>\n        <translation type=\"vanished\">Version %1,&lt;br&gt;Fecha de construcción %2</translation>\n    </message>\n    <message>\n        <location filename=\"../aboutdialog.cpp\" line=\"11\"/>\n        <source>Version %1&lt;br&gt;build date:&lt;br&gt;%2</source>\n        <translation>Version %1&lt;br&gt;Fecha de construcción:&lt;br&gt;%2</translation>\n    </message>\n</context>\n<context>\n    <name>BannerWidget</name>\n    <message>\n        <location filename=\"../bannerwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n    <message>\n        <location filename=\"../bannerwidget.ui\" line=\"20\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/ide_design/EmbeddedIDE_00.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/ide_design/EmbeddedIDE_00_es.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n</context>\n<context>\n    <name>CodeEditor</name>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"254\"/>\n        <source>&amp;Undo</source>\n        <translation>&amp;Deshacer</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"255\"/>\n        <source>&amp;Redo</source>\n        <translation>&amp;Reacer</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"257\"/>\n        <source>Cu&amp;t</source>\n        <translation>&amp;Cortar</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"258\"/>\n        <source>&amp;Copy</source>\n        <translation>C&amp;opiar</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"259\"/>\n        <source>&amp;Paste</source>\n        <translation>&amp;Pegar</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"260\"/>\n        <source>Delete</source>\n        <translation>Borrar</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"262\"/>\n        <source>&amp;Select All</source>\n        <translation>&amp;Seleccionar Todo</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"613\"/>\n        <source>Find symbol under cursor</source>\n        <translation>Buscar simbolo bajo el cursor</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"624\"/>\n        <source>Document Modified</source>\n        <translation>Documento Modificado</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"625\"/>\n        <source>The document is not save. Save it?</source>\n        <translation>El documentio no esta guardado. ¿Desea guardarlo?</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"628\"/>\n        <source>Yes</source>\n        <translation>Si</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"629\"/>\n        <source>No</source>\n        <translation>No</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"630\"/>\n        <source>Abort</source>\n        <translation>Abortar</translation>\n    </message>\n</context>\n<context>\n    <name>ComponentItemWidget</name>\n    <message>\n        <location filename=\"../componentitemwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n    <message>\n        <location filename=\"../componentitemwidget.ui\" line=\"34\"/>\n        <source>Download</source>\n        <translation>Descargar</translation>\n    </message>\n    <message>\n        <location filename=\"../componentitemwidget.ui\" line=\"47\"/>\n        <source>Component Name</source>\n        <translation>Nombre del Componente</translation>\n    </message>\n    <message>\n        <location filename=\"../componentitemwidget.ui\" line=\"62\"/>\n        <source>Component URL</source>\n        <translation>URL del componente</translation>\n    </message>\n</context>\n<context>\n    <name>ComponentsDialog</name>\n    <message>\n        <location filename=\"../componentsdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation>Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../componentsdialog.ui\" line=\"112\"/>\n        <source>Current</source>\n        <translation>Actual</translation>\n    </message>\n    <message>\n        <location filename=\"../componentsdialog.ui\" line=\"133\"/>\n        <source>total</source>\n        <translation>Total</translation>\n    </message>\n    <message>\n        <location filename=\"../componentsdialog.cpp\" line=\"88\"/>\n        <source>URL Input</source>\n        <translation>Entrada de URL</translation>\n    </message>\n    <message>\n        <location filename=\"../componentsdialog.cpp\" line=\"88\"/>\n        <source>Enter url to add</source>\n        <translation>Ingrese la URL a agregar</translation>\n    </message>\n</context>\n<context>\n    <name>ConfigDialog</name>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"14\"/>\n        <source>Configuration</source>\n        <translation>Configuración</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"24\"/>\n        <source>Editor</source>\n        <translation>Editor</translation>\n    </message>\n    <message>\n        <source>Font</source>\n        <translation type=\"vanished\">Fuentes</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"105\"/>\n        <source>Color style</source>\n        <translation>Estilo de color</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"59\"/>\n        <source>Replace tabs with spaces</source>\n        <translation>Reemplazar tabs con espacios</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"30\"/>\n        <source> spaces</source>\n        <translation> espacios</translation>\n    </message>\n    <message>\n        <source>Replace tabs with </source>\n        <translation type=\"vanished\">Reemplazar tabs con </translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"33\"/>\n        <source>Tab width is </source>\n        <translation>Ancho del tab is </translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"72\"/>\n        <source>Editor Font</source>\n        <translation>Fuentes del Editor</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"112\"/>\n        <source>Save editor contents on target action</source>\n        <translation>Guardar contenido del editor en acciones del objetivo</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"123\"/>\n        <source>Tools</source>\n        <translation>Herramientas</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"137\"/>\n        <source>Default project path</source>\n        <translation>Directorio de proyectos</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"147\"/>\n        <source>Project templates path</source>\n        <translation>Directorio de plantillas</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"157\"/>\n        <source>Additional PATHs</source>\n        <translation>Directorios de busqueda adicionales</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"166\"/>\n        <location filename=\"../configdialog.ui\" line=\"183\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"241\"/>\n        <source>Remote template URL</source>\n        <translation>URL remota de plantillas</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"252\"/>\n        <source>Proxy</source>\n        <translation>Proxy</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"258\"/>\n        <source>HTTP proxy for network access</source>\n        <translation>Proxy http para aceso a la red</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"266\"/>\n        <source>None</source>\n        <translation>Ninguno</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"273\"/>\n        <source>System proxy</source>\n        <translation>Proxy del sistema</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"280\"/>\n        <source>Custom proxy</source>\n        <translation>Proxy personalizado</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"289\"/>\n        <source>Proxy authentication</source>\n        <translation>Autenticación del proxy</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"300\"/>\n        <source>With credentials</source>\n        <translation>Con uso de credenciales</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"309\"/>\n        <source>Username</source>\n        <translation>Usuario</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"343\"/>\n        <source>Password</source>\n        <translation>Contraseña</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"382\"/>\n        <source>Host</source>\n        <translation>Servidor</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"392\"/>\n        <source>localhost</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"399\"/>\n        <source>Port</source>\n        <translation>Puerto</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"409\"/>\n        <source>3128</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"435\"/>\n        <source>Behavior</source>\n        <translation>Comportamiento</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"483\"/>\n        <source>Log View Font</source>\n        <translation>Fuentes de la consola de log</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"510\"/>\n        <source>Use in-progress/development characteristics</source>\n        <translation>Usar caracteristicas en progreso o incompletas</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"454\"/>\n        <source>Check for project templates updates at start up</source>\n        <translation>Chequear por plantillas de proyectos al iniciar</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"490\"/>\n        <source>Format Style</source>\n        <translation>Estilo de Formato</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"136\"/>\n        <source>Uknow proxy setting</source>\n        <translation>Configuracion de proxy desconocida</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"208\"/>\n        <location filename=\"../configdialog.cpp\" line=\"235\"/>\n        <source>Select directory</source>\n        <translation>Seleccionar directorio</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"217\"/>\n        <source>Select file</source>\n        <translation>Seleccionar archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"252\"/>\n        <location filename=\"../configdialog.cpp\" line=\"258\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"252\"/>\n        <source>No valid URL: %1</source>\n        <translation>URL no valida: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"258\"/>\n        <source>Error creating %1</source>\n        <translation>Error creando %1</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"266\"/>\n        <source>Downloading template list...</source>\n        <translation>Descargando lista de plantillas...</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"288\"/>\n        <source>Network error</source>\n        <translation>Error de red</translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"295\"/>\n        <source>Downloading %1</source>\n        <translation>Descargando %1</translation>\n    </message>\n</context>\n<context>\n    <name>DebugInterface</name>\n    <message>\n        <source>Start Debugger</source>\n        <translation type=\"vanished\">Iniciar depurador</translation>\n    </message>\n    <message>\n        <source>...</source>\n        <translation type=\"vanished\">...</translation>\n    </message>\n    <message>\n        <source>Stop Debugger</source>\n        <translation type=\"vanished\">Parar depurador</translation>\n    </message>\n    <message>\n        <source>Run</source>\n        <translation type=\"vanished\">Correr</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Continue&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Continuar&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <source>Step Over</source>\n        <translation type=\"vanished\">Paso</translation>\n    </message>\n    <message>\n        <source>Step Into</source>\n        <translation type=\"vanished\">Entrar en función</translation>\n    </message>\n    <message>\n        <source>Run to context end</source>\n        <translation type=\"vanished\">Ejecutar hasta el fin del contexto</translation>\n    </message>\n    <message>\n        <source>Threads</source>\n        <translation type=\"vanished\">Tareas</translation>\n    </message>\n    <message>\n        <source>Breakpoints</source>\n        <translation type=\"vanished\">Puntos de ruptura</translation>\n    </message>\n    <message>\n        <source>Stack</source>\n        <translation type=\"vanished\">Pila de llamadas</translation>\n    </message>\n    <message>\n        <source>Stop</source>\n        <translation type=\"vanished\">Parar</translation>\n    </message>\n    <message>\n        <source>Next</source>\n        <translation type=\"vanished\">Siguiente</translation>\n    </message>\n    <message>\n        <source>Step In</source>\n        <translation type=\"vanished\">Siguiente dentro de función</translation>\n    </message>\n    <message>\n        <source>Step Out</source>\n        <translation type=\"vanished\">Ejecutar hasta el final del contexto</translation>\n    </message>\n    <message>\n        <source>Continue</source>\n        <translation type=\"vanished\">Continuar</translation>\n    </message>\n    <message>\n        <source>Program received signal %1.</source>\n        <translation type=\"vanished\">El programa recivió la señal %1.</translation>\n    </message>\n    <message>\n        <source>Signal received</source>\n        <translation type=\"vanished\">Señal recibida</translation>\n    </message>\n    <message>\n        <source>Signal recevied</source>\n        <translation type=\"vanished\">Señal recibida</translation>\n    </message>\n    <message>\n        <source>Signal &lt;&lt;%1&gt;&gt;</source>\n        <translation type=\"vanished\">Señal &lt;&lt;%1&gt;&gt;</translation>\n    </message>\n    <message>\n        <source>[%3] %1: %2</source>\n        <translation type=\"vanished\">[%3] %1: %2</translation>\n    </message>\n</context>\n<context>\n    <name>DebugUI</name>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"40\"/>\n        <source>Run/Continue</source>\n        <translation>Ejecutar/Continuar</translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"73\"/>\n        <source>Next</source>\n        <translation>Siguiente</translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"93\"/>\n        <source>Next Into</source>\n        <translation>Entrar a función</translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"113\"/>\n        <source>Run to End</source>\n        <translation>Ejecutar hasta el final de función</translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"144\"/>\n        <source>Variables</source>\n        <translation>Variables</translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"184\"/>\n        <source>Watchpoints</source>\n        <translation>Puntos de Vigilancia</translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"227\"/>\n        <source>Stack</source>\n        <translation>Pila de llamadas</translation>\n    </message>\n</context>\n<context>\n    <name>DialogConfigWorkspace</name>\n    <message>\n        <location filename=\"../dialogconfigworkspace.ui\" line=\"14\"/>\n        <source>Workspace Configuration</source>\n        <translation>Configuración del Espacio de Trabajo</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.ui\" line=\"20\"/>\n        <source>Select workspace path</source>\n        <translation>Seleccionar Directorio del Area de Trabajo</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.ui\" line=\"29\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"31\"/>\n        <source>Select workspace PATH</source>\n        <translation>Seleccionar Directorio de Trabajo</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"38\"/>\n        <source>All directories (*)</source>\n        <translation>Todos los directorios (*)</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"40\"/>\n        <source>Look in</source>\n        <translation>Mirar en</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"41\"/>\n        <source>Directory</source>\n        <translation>Directorio</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"42\"/>\n        <source>File Type</source>\n        <translation>Tipo de Archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"43\"/>\n        <source>Select file</source>\n        <translation>Seleccionar archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"44\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n</context>\n<context>\n    <name>DocumentArea</name>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"28\"/>\n        <source>Reload File</source>\n        <translation>Recargar Archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"32\"/>\n        <source>Close All</source>\n        <translation>Cerrar Todo</translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"31\"/>\n        <source>Close Document</source>\n        <translation>Cerrar Documento</translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"25\"/>\n        <source>Next Position</source>\n        <translation>Siguiente posición</translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"26\"/>\n        <source>Prev Position</source>\n        <translation>Posición previa</translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"30\"/>\n        <source>Save All</source>\n        <translation>Guardar Todo</translation>\n    </message>\n    <message>\n        <source>Window List</source>\n        <translation type=\"vanished\">Lista de Ventanas</translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"29\"/>\n        <source>Save File</source>\n        <translation>Guardar Archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"248\"/>\n        <source> [*]</source>\n        <translation> [*]</translation>\n    </message>\n</context>\n<context>\n    <name>DocumentView</name>\n    <message>\n        <source>Project</source>\n        <translation type=\"vanished\">Proyecto</translation>\n    </message>\n    <message>\n        <source>Filter:</source>\n        <translation type=\"vanished\">Filtros:</translation>\n    </message>\n    <message>\n        <source>...</source>\n        <translation type=\"vanished\">...</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Document New&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Nuevo Documento&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <source>Main Menu</source>\n        <translation type=\"vanished\">Menu Principal</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Folder New&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Nueva Carpeta&lt;/p&gt;&lt;/body&gt;&lt;/html</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Remove File/Folder&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Borrar Archivo/Directorio&lt;/p&gt;&lt;/body&gt;&lt;/html</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Show symbols&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Mostrar Símbolos&lt;/p&gt;&lt;/body&gt;&lt;/html</translation>\n    </message>\n    <message>\n        <source>Project export</source>\n        <translation type=\"vanished\">Exportar Proyecto</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tools&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Herramientas&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <source>Targets:</source>\n        <translation type=\"vanished\">Objetivos:</translation>\n    </message>\n    <message>\n        <source>Debug</source>\n        <translation type=\"vanished\">Depuración</translation>\n    </message>\n</context>\n<context>\n    <name>FilePropertiesDialog</name>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"14\"/>\n        <source>File Property</source>\n        <translation>Propiedades de archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"22\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"32\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"54\"/>\n        <source>Owner</source>\n        <translation>Dueño</translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"42\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"84\"/>\n        <source>Group</source>\n        <translation>Grupo</translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"60\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"90\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"120\"/>\n        <source>Read</source>\n        <translation>Lectura</translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"67\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"97\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"127\"/>\n        <source>Write</source>\n        <translation>Escritura</translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"74\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"104\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"134\"/>\n        <source>Execute</source>\n        <translation>Ejecución</translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"114\"/>\n        <source>Others</source>\n        <translation>Otros</translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.cpp\" line=\"62\"/>\n        <source>Permissions</source>\n        <translation>Permisos</translation>\n    </message>\n</context>\n<context>\n    <name>FindInFilesDialog</name>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"14\"/>\n        <source>Find in files</source>\n        <translation>Buscar en Archivos</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"22\"/>\n        <source>Directory</source>\n        <translation>Directorio</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"54\"/>\n        <source>File pattern</source>\n        <translation>Patron de archivos</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"86\"/>\n        <source>Text to find</source>\n        <translation>Texto a buscar</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"39\"/>\n        <source>Regular Expression</source>\n        <translation>Exprecion regular</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"40\"/>\n        <source>Case Sensitive</source>\n        <translation>Sensible a mayusculas</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"41\"/>\n        <source>Wole Words</source>\n        <translation>Palabras Completas</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"43\"/>\n        <source>Ready</source>\n        <translation>Listo</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"102\"/>\n        <source>Scanning %1 file</source>\n        <translation>Escaneando archivo %1</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"121\"/>\n        <source>Line %1 Char %2: %3</source>\n        <translation>Linea %1 Caracter %2: %3</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"133\"/>\n        <source>Done</source>\n        <translation>Listo</translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"138\"/>\n        <source>Select directory</source>\n        <translation>Seleccionar directorio</translation>\n    </message>\n</context>\n<context>\n    <name>FormFindReplace</name>\n    <message>\n        <location filename=\"../formfindreplace.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation>Form</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.ui\" line=\"35\"/>\n        <source>Find</source>\n        <translation>Buscar</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.ui\" line=\"71\"/>\n        <source>Replace</source>\n        <translation>Reeplazar</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"17\"/>\n        <source>Regular Expression</source>\n        <translation>Exprecion regular</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"18\"/>\n        <source>Case Sensitive</source>\n        <translation>Sensible a mayusculas</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"19\"/>\n        <source>Wole Words</source>\n        <translation>Palabras Completas</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"20\"/>\n        <source>Selection Only</source>\n        <translation>Solo en Selección</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"21\"/>\n        <source>Wrap search</source>\n        <translation>Busqueda en bucle</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"22\"/>\n        <source>Backward search</source>\n        <translation>Busqueda hacia atras</translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"25\"/>\n        <source>Replace All</source>\n        <translation>Reemplazar Todo</translation>\n    </message>\n</context>\n<context>\n    <name>GDBStartDialog</name>\n    <message>\n        <source>Dialog</source>\n        <translation type=\"obsolete\">Dialog</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"14\"/>\n        <source>Debugger Parameters</source>\n        <translation>Parametros del Depurador</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"20\"/>\n        <source>GDB Configuration</source>\n        <translation>Configuración de GDB</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"29\"/>\n        <source>GDB executable</source>\n        <translation>Ejecutable de GDB</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"51\"/>\n        <location filename=\"../gdbstartdialog.ui\" line=\"86\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"64\"/>\n        <source>Program to debug</source>\n        <translation>Programa a depurar</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"102\"/>\n        <source>Execute &amp;make target before gdb startup</source>\n        <translation>Regla de &amp;make a ejecutar antes del inicio de GDB</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"130\"/>\n        <source>GDB Startup commands</source>\n        <translation>Comandos de inicio para GDB</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"104\"/>\n        <source>Open GDB executable</source>\n        <translation>Abrir ejecutable de GDB</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"106\"/>\n        <source>GDB executable (*gdb*);;All files (*)</source>\n        <translation>Ejecutable GDB (*gdb*);;Todos los archivos (*)</translation>\n    </message>\n    <message>\n        <source>Executables (*.exe);;</source>\n        <translation type=\"obsolete\">Eject</translation>\n    </message>\n    <message>\n        <source>GDB Configuration files (*gdb*);;All files (*)</source>\n        <translation type=\"obsolete\">Archivos de configuración gdb (*gdb*);;Todos los archivos (*)</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"114\"/>\n        <source>Open executable to debug</source>\n        <translation>Abrir ejecutable a depurar</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"117\"/>\n        <source>Executables (*.exe);;All files (*)</source>\n        <translation>Ejecutables (*.exe);;Todos los archivos (*)</translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"119\"/>\n        <source>All files (*)</source>\n        <translation>Todos los archivos (*)</translation>\n    </message>\n</context>\n<context>\n    <name>LoggerWidget</name>\n    <message>\n        <location filename=\"../loggerwidget.cpp\" line=\"238\"/>\n        <source>Process ERROR: %1</source>\n        <translation>ERROR en proceso: %1</translation>\n    </message>\n</context>\n<context>\n    <name>MainMenuWidget</name>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"71\"/>\n        <source>Open Project</source>\n        <translation>Abrir Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"88\"/>\n        <source>Close current project</source>\n        <translation>Cerrar proyecto actual</translation>\n    </message>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"105\"/>\n        <source>Configure</source>\n        <translation>Configuración</translation>\n    </message>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"35\"/>\n        <source>New Project</source>\n        <translation>Nuevo Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"122\"/>\n        <source>Help</source>\n        <translation>Ayuda</translation>\n    </message>\n    <message>\n        <source>Exit</source>\n        <translation type=\"vanished\">Salir</translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"14\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"347\"/>\n        <source>Embedded IDE</source>\n        <translation>Embedded IDE</translation>\n    </message>\n    <message>\n        <source>toolBar</source>\n        <translation type=\"vanished\">toolBar</translation>\n    </message>\n    <message>\n        <source>Loggin</source>\n        <translation type=\"vanished\">Loggin</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"28\"/>\n        <source>&amp;Loggin</source>\n        <translation>&amp;Loggin</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"66\"/>\n        <source>Compiler Output</source>\n        <translation>Salida del compilador</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"71\"/>\n        <source>GDB Output</source>\n        <translation>Salida de GDB</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"76\"/>\n        <source>Application Output</source>\n        <translation>Salida de la aplicación</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"89\"/>\n        <source>Pro&amp;ject</source>\n        <translation>&amp;Proyecto</translation>\n    </message>\n    <message>\n        <source>Project</source>\n        <translation type=\"vanished\">Proyecto</translation>\n    </message>\n    <message>\n        <source>ProjectNew</source>\n        <translation type=\"vanished\">Proyecto Nuevo</translation>\n    </message>\n    <message>\n        <source>New Project</source>\n        <translation type=\"vanished\">Nuevo Proyecto</translation>\n    </message>\n    <message>\n        <source>ProjectOpen</source>\n        <translation type=\"vanished\">Abrir Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"184\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"307\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"326\"/>\n        <source>Open Project</source>\n        <translation>Abrir Proyecto</translation>\n    </message>\n    <message>\n        <source>Help</source>\n        <translation type=\"vanished\">Ayuda</translation>\n    </message>\n    <message>\n        <source>Exit</source>\n        <translation type=\"vanished\">Salir</translation>\n    </message>\n    <message>\n        <source>ProjectExport</source>\n        <translation type=\"vanished\">Exportar Proyectos</translation>\n    </message>\n    <message>\n        <source>Export Project</source>\n        <translation type=\"vanished\">Exportar Proyectos</translation>\n    </message>\n    <message>\n        <source>ProjectClose</source>\n        <translation type=\"vanished\">Cerrar Proyecto</translation>\n    </message>\n    <message>\n        <source>Close current project</source>\n        <translation type=\"vanished\">Cerrar proyecto actual</translation>\n    </message>\n    <message>\n        <source>Save All</source>\n        <translation type=\"vanished\">Guardar todo</translation>\n    </message>\n    <message>\n        <source>Save all files</source>\n        <translation type=\"vanished\">Guardar todos los archivos</translation>\n    </message>\n    <message>\n        <source>Configure</source>\n        <translation type=\"vanished\">Configuración</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"230\"/>\n        <source>Application ready...</source>\n        <translation>Aplicación Lista...</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"264\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"269\"/>\n        <source>Export</source>\n        <translation>Exportar</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"271\"/>\n        <source>Success</source>\n        <translation>Éxito</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"309\"/>\n        <source>Makefile (Makefile);;Make (*.mk);;All Files (*)</source>\n        <translation>Makefile (Makefile);;Make (*.mk);;Todos los archivos (*)</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"352\"/>\n        <source>Embedded IDE %1</source>\n        <translation>Embedded IDE %1</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"109\"/>\n        <source>Updates available</source>\n        <translation>Actualizaciones disponibles</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"103\"/>\n        <source>Update</source>\n        <translation>Actualizar</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"110\"/>\n        <source>New project templates available, click here for details</source>\n        <translation>Nuevas plantillas de proyectos disponibles, click aquí para ver detalles</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"408\"/>\n        <source>Save files</source>\n        <translation>Guardar archivos</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"409\"/>\n        <source>Save all files before build?</source>\n        <translation>Guardar todos los archivos antes de construir?</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"411\"/>\n        <source>Do not show again</source>\n        <translation>No mostrar nuevamente</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"419\"/>\n        <source>This dialog not will show again</source>\n        <translation>Este dialogo no se mostrara nuevamente</translation>\n    </message>\n    <message>\n        <source>Downloading template list...</source>\n        <translation type=\"obsolete\">Descargando lista de plantillas...</translation>\n    </message>\n    <message>\n        <source>Network error</source>\n        <translation type=\"obsolete\">Error de red</translation>\n    </message>\n    <message>\n        <source>Downloading %1</source>\n        <translation type=\"obsolete\">Descargando %1</translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"184\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"326\"/>\n        <source>Cannot open %1</source>\n        <translation>No se puede abrir %1</translation>\n    </message>\n    <message>\n        <source>Export file</source>\n        <translation type=\"vanished\">Exportar archivo</translation>\n    </message>\n    <message>\n        <source>Unknown.template</source>\n        <translation type=\"vanished\">Unknown.template</translation>\n    </message>\n    <message>\n        <source>Tempalte files (*.template);;Diff files (*.diff);;All files (*)</source>\n        <translation type=\"vanished\">Archivos de plantillas (*.template);;Archivos diff (*.diff);;Todos los archivos (*)</translation>\n    </message>\n</context>\n<context>\n    <name>MapViewer</name>\n    <message>\n        <location filename=\"../mapviewer.ui\" line=\"42\"/>\n        <source>Memory Usage</source>\n        <translation>Uso de memoria</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.ui\" line=\"95\"/>\n        <source>Symbol Tree</source>\n        <translation>Tabla de simbolos</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.ui\" line=\"120\"/>\n        <source>Plain Text</source>\n        <translation>Texto plano</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"368\"/>\n        <source>Memory</source>\n        <translation>Memoria</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"369\"/>\n        <source>Base address</source>\n        <translation>Dirección base</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"370\"/>\n        <location filename=\"../mapviewer.cpp\" line=\"393\"/>\n        <source>Size</source>\n        <translation>Tamaño</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"371\"/>\n        <source>Used</source>\n        <translation>Usado</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"372\"/>\n        <source>Percent</source>\n        <translation>Porcentaje</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"373\"/>\n        <source>Attributes</source>\n        <translation>Atributos</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"390\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"391\"/>\n        <source>Store address</source>\n        <translation>Dirección en memoria</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"392\"/>\n        <source>Load address</source>\n        <translation>Dirección de ejecución</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"402\"/>\n        <source>Symbols without section</source>\n        <translation>Simbolos sin sección</translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"414\"/>\n        <source>No unit</source>\n        <translation>Sin unidad</translation>\n    </message>\n</context>\n<context>\n    <name>MyFileSystemModel</name>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"46\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"47\"/>\n        <source>Size</source>\n        <translation>Tamaño</translation>\n    </message>\n</context>\n<context>\n    <name>OpenDialog</name>\n    <message>\n        <source>Settings</source>\n        <translation type=\"vanished\">Configuraciones</translation>\n    </message>\n    <message>\n        <source>General</source>\n        <translation type=\"vanished\">General</translation>\n    </message>\n    <message>\n        <source>GDB</source>\n        <translation type=\"vanished\">GDB</translation>\n    </message>\n    <message>\n        <source>Launch program</source>\n        <translation type=\"vanished\">Lanzar programa</translation>\n    </message>\n    <message>\n        <source>Program</source>\n        <translation type=\"vanished\">Programa</translation>\n    </message>\n    <message>\n        <source>...</source>\n        <translation type=\"vanished\">...</translation>\n    </message>\n    <message>\n        <source>Arguments</source>\n        <translation type=\"vanished\">Argumentos</translation>\n    </message>\n    <message>\n        <source>Connect to GDB server through TCP</source>\n        <translation type=\"vanished\">Conectar con servidor GDB via TCP</translation>\n    </message>\n    <message>\n        <source>Remotehost</source>\n        <translation type=\"vanished\">HOST remoto</translation>\n    </message>\n    <message>\n        <source>Port</source>\n        <translation type=\"vanished\">Puerto </translation>\n    </message>\n    <message>\n        <source>Knowns executables</source>\n        <translation type=\"vanished\">Ejecutables conocidos</translation>\n    </message>\n    <message>\n        <source>Use breakpoints from last run</source>\n        <translation type=\"vanished\">Usar puntos de ruptura de la ultima ejecución</translation>\n    </message>\n    <message>\n        <source>Commands</source>\n        <translation type=\"vanished\">Comandos</translation>\n    </message>\n    <message>\n        <source>Initialization commands</source>\n        <translation type=\"vanished\">Comandos de inicialización</translation>\n    </message>\n    <message>\n        <source>Select Program</source>\n        <translation type=\"vanished\">Seleccionar Programa</translation>\n    </message>\n    <message>\n        <source>All Files (*)</source>\n        <translation type=\"vanished\">Todos los Archivos (*)</translation>\n    </message>\n</context>\n<context>\n    <name>PasswordPromtDialog</name>\n    <message>\n        <location filename=\"../passwordpromtdialog.ui\" line=\"14\"/>\n        <source>Password requiered</source>\n        <translation>Contraseña requierida</translation>\n    </message>\n    <message>\n        <location filename=\"../passwordpromtdialog.ui\" line=\"45\"/>\n        <source>Password</source>\n        <translation>Contraseña</translation>\n    </message>\n    <message>\n        <location filename=\"../appconfig.cpp\" line=\"294\"/>\n        <source>Proxy require password</source>\n        <translation>El proxy solicita contraseña</translation>\n    </message>\n</context>\n<context>\n    <name>ProjectExporter</name>\n    <message>\n        <location filename=\"../projectexporter.cpp\" line=\"45\"/>\n        <source>Can not create empty tmp directory %1</source>\n        <translation>No se puede crear directorio temporal %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectexporter.cpp\" line=\"52\"/>\n        <source>Abnormal termination %1</source>\n        <translation>%1 terminó de forma anormal</translation>\n    </message>\n    <message>\n        <location filename=\"../projectexporter.cpp\" line=\"56\"/>\n        <source>End with error code %1</source>\n        <translation>El programa termino con error %1</translation>\n    </message>\n</context>\n<context>\n    <name>ProjectNewDialog</name>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"20\"/>\n        <source>New Project</source>\n        <translation>Nuevo Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"28\"/>\n        <source>Project Name</source>\n        <translation>Nombre del Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"40\"/>\n        <source>Project PATH</source>\n        <translation>Directorio del proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"49\"/>\n        <location filename=\"../projectnewdialog.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"61\"/>\n        <source>Project file path</source>\n        <translation>Nombre completo del archivo de proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"77\"/>\n        <source>Template</source>\n        <translation>Plantillas</translation>\n    </message>\n    <message>\n        <source>Template Parameters</source>\n        <translation type=\"vanished\">Parametros de plantilla</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"122\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"127\"/>\n        <source>Value</source>\n        <translation>Valor</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.cpp\" line=\"331\"/>\n        <source>Project location</source>\n        <translation>Ubicación del proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.cpp\" line=\"339\"/>\n        <source>Open template</source>\n        <translation>Abrir plantilla</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.cpp\" line=\"341\"/>\n        <source>Template files (*.template *.jtemplate);;Diff files (*.diff);;All files (*)</source>\n        <translation>Archivos de template (*.template *.jtemplate);;Archivos Diff (*.diff);; Todos los archivos (*)</translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.cpp\" line=\"368\"/>\n        <source>&lt;html&gt;&lt;body&gt;&lt;center&gt;&lt;h1&gt;%1&lt;/h1&gt;&lt;/center&gt;&lt;h3&gt;&lt;font color=&quot;blue&quot;&gt;%2&lt;/font&gt;&lt;/h3&gt;&lt;tt&gt;%3&lt;/tt&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;body&gt;&lt;center&gt;&lt;h1&gt;%1&lt;/h1&gt;&lt;/center&gt;&lt;h3&gt;&lt;font color=&quot;blue&quot;&gt;%2&lt;/font&gt;&lt;/h3&gt;&lt;tt&gt;%3&lt;/tt&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <source>Template files (*.template);;Diff files (*.diff);;All files (*)</source>\n        <translation type=\"vanished\">Archivos de plantilla (*.template);;Archivos DIFF (*.diff);;Todos los archivos (*)</translation>\n    </message>\n</context>\n<context>\n    <name>ProjectView</name>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"157\"/>\n        <source>Loading...</source>\n        <translation>Cargando...</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"250\"/>\n        <source>Done with errors</source>\n        <translation>Terminado con errores</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"263\"/>\n        <source>Done</source>\n        <translation>Listo</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"271\"/>\n        <source>Indexing...</source>\n        <translation>Indexando...</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"296\"/>\n        <source>File name</source>\n        <translation>Nombre del archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"297\"/>\n        <source>Create file on %1</source>\n        <translation>Crear archovo en %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"302\"/>\n        <source>Error creating file</source>\n        <translation>Error creando archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"327\"/>\n        <source>Folder name</source>\n        <translation>Nombre del directorio</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"328\"/>\n        <source>Create folder on %1</source>\n        <translation>Crear directorio en %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"355\"/>\n        <source>Link target</source>\n        <translation>Objetivo del Link</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"365\"/>\n        <source>Link creation fail</source>\n        <translation>Falló creación del link</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"365\"/>\n        <source>ERROR: %1</source>\n        <translation>ERROR: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"380\"/>\n        <source>Delete files</source>\n        <translation>Borrar archivos</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"385\"/>\n        <source>Do this operation for all items</source>\n        <translation>Hacer esta operación para todos los elementos</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"398\"/>\n        <source>Realy remove %1</source>\n        <translation>Realmente borrar %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"423\"/>\n        <source>Export file</source>\n        <translation>Exportar archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"424\"/>\n        <source>Unknown.template</source>\n        <translation>Unknown.template</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"425\"/>\n        <source>Tempalte files (*.template *.jtemplate);;Diff files (*.diff);;All files (*)</source>\n        <translation>Archivos de template (*.template *.jtemplate);;Archivos Diff (*.diff);; Todos los archivos (*)</translation>\n    </message>\n    <message>\n        <source>Tempalte files (*.template);;Diff files (*.diff);;All files (*)</source>\n        <translation type=\"vanished\">Archivos de plantillas (*.template);;Archivos diff (*.diff);;Todos los archivos (*)</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"453\"/>\n        <source>Input text</source>\n        <translation>Entrada de texto</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"467\"/>\n        <source>Input items</source>\n        <translation>Selección de items</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"538\"/>\n        <source>No entries</source>\n        <translation>Sin entradas</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"541\"/>\n        <source>Manage tools</source>\n        <translation>Manejador de herramientas</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"566\"/>\n        <source>File New</source>\n        <translation>Nuevo Archivo</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"567\"/>\n        <source>Folder New</source>\n        <translation>Nueva Carpeta</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"571\"/>\n        <source>New Link</source>\n        <translation>Nuevo Link</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"574\"/>\n        <source>Properties</source>\n        <translation>Propiedades</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"577\"/>\n        <source>Execute</source>\n        <translation>Ejecutar</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"580\"/>\n        <source>Open External</source>\n        <translation>Abrir con herramienta externa</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"585\"/>\n        <source>Rename</source>\n        <translation>Renombrar</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"587\"/>\n        <source>Delete</source>\n        <translation>Borrar</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"40\"/>\n        <source>Project</source>\n        <translation>Proyecto</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Document New&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Nuevo Documento&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Folder New&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Nueva Carpeta&lt;/p&gt;&lt;/body&gt;&lt;/html</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"79\"/>\n        <location filename=\"../projectview.ui\" line=\"122\"/>\n        <location filename=\"../projectview.ui\" line=\"145\"/>\n        <location filename=\"../projectview.ui\" line=\"165\"/>\n        <source>...</source>\n        <translation>...</translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Remove File/Folder&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Borrar Archivo/Directorio&lt;/p&gt;&lt;/body&gt;&lt;/html</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"142\"/>\n        <source>Find</source>\n        <translation>Buscar</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"119\"/>\n        <source>Project export</source>\n        <translation>Exportar Proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"99\"/>\n        <source>Reload Project</source>\n        <translation>Recargar proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"162\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tools&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Herramientas&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <source>Targets:</source>\n        <translation type=\"vanished\">Objetivos:</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"76\"/>\n        <source>Debug</source>\n        <translation>Depuración</translation>\n    </message>\n</context>\n<context>\n    <name>ProjetFromTemplate</name>\n    <message>\n        <location filename=\"../projetfromtemplate.cpp\" line=\"32\"/>\n        <source>Cant create path %1</source>\n        <translation>No se puede crear el directorio %1</translation>\n    </message>\n    <message>\n        <location filename=\"../projetfromtemplate.cpp\" line=\"55\"/>\n        <source>Diff return %1</source>\n        <translation>Diff retornó %1</translation>\n    </message>\n</context>\n<context>\n    <name>QMainWindow</name>\n    <message>\n        <location filename=\"../templatedownloader.cpp\" line=\"43\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../templatedownloader.cpp\" line=\"44\"/>\n        <source>No valid URL: %1</source>\n        <translation>URL no valida: %1</translation>\n    </message>\n    <message>\n        <location filename=\"../templatedownloader.cpp\" line=\"53\"/>\n        <source>Network error</source>\n        <translation>Error de red</translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../filedownloader.cpp\" line=\"52\"/>\n        <source>Error downloading %1 to %2: %3</source>\n        <translation>Error descargando %1 de %2: %3</translation>\n    </message>\n    <message>\n        <location filename=\"../filedownloader.cpp\" line=\"70\"/>\n        <source>Network error downloading %1: %2</source>\n        <translation>Error de red descargando %1: %2</translation>\n    </message>\n    <message>\n        <location filename=\"../main.cpp\" line=\"136\"/>\n        <source>Desktop support</source>\n        <translation>Soporte de escritorio</translation>\n    </message>\n    <message>\n        <location filename=\"../main.cpp\" line=\"138\"/>\n        <source> can not detect any system tray on this desktop, notify this to developers.</source>\n        <translation> no puede detectar ninguna bandeja de sistema en este escritorio, notifique a los desarrolladores.</translation>\n    </message>\n    <message>\n        <source>Can not detect any system tray on this desktop, notify this to developers.</source>\n        <translation type=\"vanished\">No se puede detectar ninguna bandeja de sistema en este escritorio, notifique a los desarrolladores.</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"137\"/>\n        <source>Network error</source>\n        <translation>Error de red</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"277\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"278\"/>\n        <source>Error creating %1</source>\n        <translation>Error creando %1</translation>\n    </message>\n</context>\n<context>\n    <name>QsciCommand</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"59\"/>\n        <source>Move down one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"69\"/>\n        <source>Extend selection down one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"79\"/>\n        <source>Extend rectangular selection down one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"86\"/>\n        <source>Scroll view down one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"96\"/>\n        <source>Move up one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"106\"/>\n        <source>Extend selection up one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"116\"/>\n        <source>Extend rectangular selection up one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"123\"/>\n        <source>Scroll view up one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"133\"/>\n        <source>Scroll to start of document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"143\"/>\n        <source>Scroll to end of document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"153\"/>\n        <source>Scroll vertically to centre current line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"160\"/>\n        <source>Move down one paragraph</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"166\"/>\n        <source>Extend selection down one paragraph</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"173\"/>\n        <source>Move up one paragraph</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"179\"/>\n        <source>Extend selection up one paragraph</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"190\"/>\n        <source>Move left one character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"200\"/>\n        <source>Extend selection left one character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"211\"/>\n        <source>Extend rectangular selection left one character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"222\"/>\n        <source>Move right one character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"232\"/>\n        <source>Extend selection right one character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"243\"/>\n        <source>Extend rectangular selection right one character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"254\"/>\n        <source>Move left one word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"264\"/>\n        <source>Extend selection left one word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"274\"/>\n        <source>Move right one word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"280\"/>\n        <source>Extend selection right one word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"286\"/>\n        <source>Move to end of previous word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"292\"/>\n        <source>Extend selection to end of previous word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"303\"/>\n        <source>Move to end of next word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"313\"/>\n        <source>Extend selection to end of next word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"320\"/>\n        <source>Move left one word part</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"326\"/>\n        <source>Extend selection left one word part</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"333\"/>\n        <source>Move right one word part</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"339\"/>\n        <source>Extend selection right one word part</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"350\"/>\n        <source>Move to start of document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"360\"/>\n        <source>Extend selection to start of document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"371\"/>\n        <source>Extend rectangular selection to start of document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"382\"/>\n        <source>Move to start of display line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"392\"/>\n        <source>Extend selection to start of display line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"399\"/>\n        <source>Move to start of display or document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"406\"/>\n        <source>Extend selection to start of display or document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"417\"/>\n        <source>Move to first visible character in document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"428\"/>\n        <source>Extend selection to first visible character in document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"439\"/>\n        <source>Extend rectangular selection to first visible character in document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"446\"/>\n        <source>Move to first visible character of display in document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"453\"/>\n        <source>Extend selection to first visible character in display or document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"464\"/>\n        <source>Move to end of document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"474\"/>\n        <source>Extend selection to end of document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"485\"/>\n        <source>Extend rectangular selection to end of document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"496\"/>\n        <source>Move to end of display line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"506\"/>\n        <source>Extend selection to end of display line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"513\"/>\n        <source>Move to end of display or document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"520\"/>\n        <source>Extend selection to end of display or document line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"531\"/>\n        <source>Move to start of document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"541\"/>\n        <source>Extend selection to start of document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"552\"/>\n        <source>Move to end of document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"562\"/>\n        <source>Extend selection to end of document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"569\"/>\n        <source>Move up one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"575\"/>\n        <source>Extend selection up one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"581\"/>\n        <source>Extend rectangular selection up one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"592\"/>\n        <source>Move down one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"602\"/>\n        <source>Extend selection down one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"612\"/>\n        <source>Extend rectangular selection down one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"619\"/>\n        <source>Stuttered move up one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"625\"/>\n        <source>Stuttered extend selection up one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"632\"/>\n        <source>Stuttered move down one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"638\"/>\n        <source>Stuttered extend selection down one page</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"649\"/>\n        <source>Delete current character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"659\"/>\n        <source>Delete previous character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"665\"/>\n        <source>Delete previous character if not at start of line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"672\"/>\n        <source>Delete word to left</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"678\"/>\n        <source>Delete word to right</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"688\"/>\n        <source>Delete right to end of next word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"695\"/>\n        <source>Delete line to left</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"705\"/>\n        <source>Delete line to right</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"711\"/>\n        <source>Delete current line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"717\"/>\n        <source>Cut current line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"723\"/>\n        <source>Copy current line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"729\"/>\n        <source>Transpose current and previous lines</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"736\"/>\n        <source>Duplicate the current line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"742\"/>\n        <source>Select all</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"748\"/>\n        <source>Move selected lines up one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"754\"/>\n        <source>Move selected lines down one line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"761\"/>\n        <source>Duplicate selection</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"767\"/>\n        <source>Convert selection to lower case</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"773\"/>\n        <source>Convert selection to upper case</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"779\"/>\n        <source>Cut selection</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"785\"/>\n        <source>Copy selection</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"791\"/>\n        <source>Paste</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"797\"/>\n        <source>Toggle insert/overtype</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"803\"/>\n        <source>Insert newline</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"809\"/>\n        <source>Formfeed</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"815\"/>\n        <source>Indent one level</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"821\"/>\n        <source>De-indent one level</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"827\"/>\n        <source>Cancel</source>\n        <translation>Cancelar</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"833\"/>\n        <source>Undo last command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"843\"/>\n        <source>Redo last command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"849\"/>\n        <source>Zoom in</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"855\"/>\n        <source>Zoom out</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerAVS</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"290\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"293\"/>\n        <source>Block comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"296\"/>\n        <source>Nested block comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"299\"/>\n        <source>Line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"302\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"305\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"308\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"311\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"314\"/>\n        <source>Triple double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"317\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"320\"/>\n        <source>Filter</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"323\"/>\n        <source>Plugin</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"326\"/>\n        <source>Function</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"329\"/>\n        <source>Clip property</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"332\"/>\n        <source>User defined</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBash</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"203\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"206\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"209\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"212\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"215\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"218\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"221\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"224\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"227\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"230\"/>\n        <source>Scalar</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"233\"/>\n        <source>Parameter expansion</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"236\"/>\n        <source>Backticks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"239\"/>\n        <source>Here document delimiter</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"242\"/>\n        <source>Single-quoted here document</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBatch</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"174\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"177\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"180\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"183\"/>\n        <source>Label</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"186\"/>\n        <source>Hide command character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"189\"/>\n        <source>External command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"192\"/>\n        <source>Variable</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"195\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCMake</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"190\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"193\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"196\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"199\"/>\n        <source>Left quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"202\"/>\n        <source>Right quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"205\"/>\n        <source>Function</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"208\"/>\n        <source>Variable</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"211\"/>\n        <source>Label</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"214\"/>\n        <source>User defined</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"217\"/>\n        <source>WHILE block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"220\"/>\n        <source>FOREACH block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"223\"/>\n        <source>IF block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"226\"/>\n        <source>MACRO block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"229\"/>\n        <source>Variable within a string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"232\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCPP</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"364\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"367\"/>\n        <source>Inactive default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"370\"/>\n        <source>C comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"373\"/>\n        <source>Inactive C comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"376\"/>\n        <source>C++ comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"379\"/>\n        <source>Inactive C++ comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"382\"/>\n        <source>JavaDoc style C comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"385\"/>\n        <source>Inactive JavaDoc style C comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"388\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"391\"/>\n        <source>Inactive number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"394\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"397\"/>\n        <source>Inactive keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"400\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"403\"/>\n        <source>Inactive double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"406\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"409\"/>\n        <source>Inactive single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"412\"/>\n        <source>IDL UUID</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"415\"/>\n        <source>Inactive IDL UUID</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"418\"/>\n        <source>Pre-processor block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"421\"/>\n        <source>Inactive pre-processor block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"424\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"427\"/>\n        <source>Inactive operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"430\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"433\"/>\n        <source>Inactive identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"436\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"439\"/>\n        <source>Inactive unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"442\"/>\n        <source>C# verbatim string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"445\"/>\n        <source>Inactive C# verbatim string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"448\"/>\n        <source>JavaScript regular expression</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"451\"/>\n        <source>Inactive JavaScript regular expression</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"454\"/>\n        <source>JavaDoc style C++ comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"457\"/>\n        <source>Inactive JavaDoc style C++ comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"460\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"463\"/>\n        <source>Inactive secondary keywords and identifiers</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"466\"/>\n        <source>JavaDoc keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"469\"/>\n        <source>Inactive JavaDoc keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"472\"/>\n        <source>JavaDoc keyword error</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"475\"/>\n        <source>Inactive JavaDoc keyword error</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"478\"/>\n        <source>Global classes and typedefs</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"481\"/>\n        <source>Inactive global classes and typedefs</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"484\"/>\n        <source>C++ raw string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"487\"/>\n        <source>Inactive C++ raw string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"490\"/>\n        <source>Vala triple-quoted verbatim string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"493\"/>\n        <source>Inactive Vala triple-quoted verbatim string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"496\"/>\n        <source>Pike hash-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"499\"/>\n        <source>Inactive Pike hash-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"502\"/>\n        <source>Pre-processor C comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"505\"/>\n        <source>Inactive pre-processor C comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"508\"/>\n        <source>JavaDoc style pre-processor comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"511\"/>\n        <source>Inactive JavaDoc style pre-processor comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"514\"/>\n        <source>User-defined literal</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"517\"/>\n        <source>Inactive user-defined literal</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"520\"/>\n        <source>Task marker</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"523\"/>\n        <source>Inactive task marker</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"526\"/>\n        <source>Escape sequence</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"529\"/>\n        <source>Inactive escape sequence</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSS</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"232\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"235\"/>\n        <source>Tag</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"238\"/>\n        <source>Class selector</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"241\"/>\n        <source>Pseudo-class</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"244\"/>\n        <source>Unknown pseudo-class</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"247\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"250\"/>\n        <source>CSS1 property</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"253\"/>\n        <source>Unknown property</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"256\"/>\n        <source>Value</source>\n        <translation>Valor</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"259\"/>\n        <source>ID selector</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"262\"/>\n        <source>Important</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"265\"/>\n        <source>@-rule</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"268\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"271\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"274\"/>\n        <source>CSS2 property</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"277\"/>\n        <source>Attribute</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"280\"/>\n        <source>CSS3 property</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"283\"/>\n        <source>Pseudo-element</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"286\"/>\n        <source>Extended CSS property</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"289\"/>\n        <source>Extended pseudo-class</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"292\"/>\n        <source>Extended pseudo-element</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"295\"/>\n        <source>Media rule</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"298\"/>\n        <source>Variable</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSharp</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercsharp.cpp\" line=\"105\"/>\n        <source>Verbatim string</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCoffeeScript</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"258\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"261\"/>\n        <source>C-style comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"264\"/>\n        <source>C++-style comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"267\"/>\n        <source>JavaDoc C-style comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"270\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"273\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"276\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"279\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"282\"/>\n        <source>IDL UUID</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"285\"/>\n        <source>Pre-processor block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"288\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"291\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"294\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"297\"/>\n        <source>C# verbatim string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"300\"/>\n        <source>Regular expression</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"303\"/>\n        <source>JavaDoc C++-style comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"306\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"309\"/>\n        <source>JavaDoc keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"312\"/>\n        <source>JavaDoc keyword error</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"315\"/>\n        <source>Global classes</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"318\"/>\n        <source>Block comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"321\"/>\n        <source>Block regular expression</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"324\"/>\n        <source>Block regular expression comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"327\"/>\n        <source>Instance property</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerD</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"266\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"269\"/>\n        <source>Block comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"272\"/>\n        <source>Line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"275\"/>\n        <source>DDoc style block comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"278\"/>\n        <source>Nesting comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"281\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"284\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"287\"/>\n        <source>Secondary keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"290\"/>\n        <source>Documentation keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"293\"/>\n        <source>Type definition</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"296\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"299\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"302\"/>\n        <source>Character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"305\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"308\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"311\"/>\n        <source>DDoc style line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"314\"/>\n        <source>DDoc keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"317\"/>\n        <source>DDoc keyword error</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"320\"/>\n        <source>Backquoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"323\"/>\n        <source>Raw string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"326\"/>\n        <source>User defined 1</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"329\"/>\n        <source>User defined 2</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"332\"/>\n        <source>User defined 3</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerDiff</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"102\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"105\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"108\"/>\n        <source>Command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"111\"/>\n        <source>Header</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"114\"/>\n        <source>Position</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"117\"/>\n        <source>Removed line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"120\"/>\n        <source>Added line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"123\"/>\n        <source>Changed line</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerFortran77</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"185\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"188\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"191\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"194\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"197\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"200\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"203\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"206\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"209\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"212\"/>\n        <source>Intrinsic function</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"215\"/>\n        <source>Extended function</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"218\"/>\n        <source>Pre-processor block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"221\"/>\n        <source>Dotted operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"224\"/>\n        <source>Label</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"227\"/>\n        <source>Continuation</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerHTML</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"563\"/>\n        <source>HTML default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"566\"/>\n        <source>Tag</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"569\"/>\n        <source>Unknown tag</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"572\"/>\n        <source>Attribute</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"575\"/>\n        <source>Unknown attribute</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"578\"/>\n        <source>HTML number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"581\"/>\n        <source>HTML double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"584\"/>\n        <source>HTML single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"587\"/>\n        <source>Other text in a tag</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"590\"/>\n        <source>HTML comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"593\"/>\n        <source>Entity</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"596\"/>\n        <source>End of a tag</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"599\"/>\n        <source>Start of an XML fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"602\"/>\n        <source>End of an XML fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"605\"/>\n        <source>Script tag</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"608\"/>\n        <source>Start of an ASP fragment with @</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"611\"/>\n        <source>Start of an ASP fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"614\"/>\n        <source>CDATA</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"617\"/>\n        <source>Start of a PHP fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"620\"/>\n        <source>Unquoted HTML value</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"623\"/>\n        <source>ASP X-Code comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"626\"/>\n        <source>SGML default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"629\"/>\n        <source>SGML command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"632\"/>\n        <source>First parameter of an SGML command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"635\"/>\n        <source>SGML double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"638\"/>\n        <source>SGML single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"641\"/>\n        <source>SGML error</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"644\"/>\n        <source>SGML special entity</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"647\"/>\n        <source>SGML comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"650\"/>\n        <source>First parameter comment of an SGML command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"653\"/>\n        <source>SGML block default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"656\"/>\n        <source>Start of a JavaScript fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"659\"/>\n        <source>JavaScript default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"662\"/>\n        <source>JavaScript comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"665\"/>\n        <source>JavaScript line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"668\"/>\n        <source>JavaDoc style JavaScript comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"671\"/>\n        <source>JavaScript number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"674\"/>\n        <source>JavaScript word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"677\"/>\n        <source>JavaScript keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"680\"/>\n        <source>JavaScript double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"683\"/>\n        <source>JavaScript single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"686\"/>\n        <source>JavaScript symbol</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"689\"/>\n        <source>JavaScript unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"692\"/>\n        <source>JavaScript regular expression</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"695\"/>\n        <source>Start of an ASP JavaScript fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"698\"/>\n        <source>ASP JavaScript default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"701\"/>\n        <source>ASP JavaScript comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"704\"/>\n        <source>ASP JavaScript line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"707\"/>\n        <source>JavaDoc style ASP JavaScript comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"710\"/>\n        <source>ASP JavaScript number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"713\"/>\n        <source>ASP JavaScript word</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"716\"/>\n        <source>ASP JavaScript keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"719\"/>\n        <source>ASP JavaScript double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"722\"/>\n        <source>ASP JavaScript single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"725\"/>\n        <source>ASP JavaScript symbol</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"728\"/>\n        <source>ASP JavaScript unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"731\"/>\n        <source>ASP JavaScript regular expression</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"734\"/>\n        <source>Start of a VBScript fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"737\"/>\n        <source>VBScript default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"740\"/>\n        <source>VBScript comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"743\"/>\n        <source>VBScript number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"746\"/>\n        <source>VBScript keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"749\"/>\n        <source>VBScript string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"752\"/>\n        <source>VBScript identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"755\"/>\n        <source>VBScript unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"758\"/>\n        <source>Start of an ASP VBScript fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"761\"/>\n        <source>ASP VBScript default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"764\"/>\n        <source>ASP VBScript comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"767\"/>\n        <source>ASP VBScript number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"770\"/>\n        <source>ASP VBScript keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"773\"/>\n        <source>ASP VBScript string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"776\"/>\n        <source>ASP VBScript identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"779\"/>\n        <source>ASP VBScript unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"782\"/>\n        <source>Start of a Python fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"785\"/>\n        <source>Python default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"788\"/>\n        <source>Python comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"791\"/>\n        <source>Python number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"794\"/>\n        <source>Python double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"797\"/>\n        <source>Python single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"800\"/>\n        <source>Python keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"803\"/>\n        <source>Python triple double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"806\"/>\n        <source>Python triple single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"809\"/>\n        <source>Python class name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"812\"/>\n        <source>Python function or method name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"815\"/>\n        <source>Python operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"818\"/>\n        <source>Python identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"821\"/>\n        <source>Start of an ASP Python fragment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"824\"/>\n        <source>ASP Python default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"827\"/>\n        <source>ASP Python comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"830\"/>\n        <source>ASP Python number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"833\"/>\n        <source>ASP Python double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"836\"/>\n        <source>ASP Python single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"839\"/>\n        <source>ASP Python keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"842\"/>\n        <source>ASP Python triple double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"845\"/>\n        <source>ASP Python triple single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"848\"/>\n        <source>ASP Python class name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"851\"/>\n        <source>ASP Python function or method name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"854\"/>\n        <source>ASP Python operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"857\"/>\n        <source>ASP Python identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"860\"/>\n        <source>PHP default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"863\"/>\n        <source>PHP double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"866\"/>\n        <source>PHP single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"869\"/>\n        <source>PHP keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"872\"/>\n        <source>PHP number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"875\"/>\n        <source>PHP variable</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"878\"/>\n        <source>PHP comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"881\"/>\n        <source>PHP line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"884\"/>\n        <source>PHP double-quoted variable</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"887\"/>\n        <source>PHP operator</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerIDL</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeridl.cpp\" line=\"97\"/>\n        <source>UUID</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJSON</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"160\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"163\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"166\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"169\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"172\"/>\n        <source>Property</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"175\"/>\n        <source>Escape sequence</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"178\"/>\n        <source>Line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"181\"/>\n        <source>Block comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"184\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"187\"/>\n        <source>IRI</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"190\"/>\n        <source>JSON-LD compact IRI</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"193\"/>\n        <source>JSON keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"196\"/>\n        <source>JSON-LD keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"199\"/>\n        <source>Parsing error</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJavaScript</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjavascript.cpp\" line=\"107\"/>\n        <source>Regular expression</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerLua</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"227\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"230\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"233\"/>\n        <source>Line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"236\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"239\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"242\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"245\"/>\n        <source>Character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"248\"/>\n        <source>Literal string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"251\"/>\n        <source>Preprocessor</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"254\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"257\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"260\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"263\"/>\n        <source>Basic functions</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"266\"/>\n        <source>String, table and maths functions</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"269\"/>\n        <source>Coroutines, i/o and system facilities</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"272\"/>\n        <source>User defined 1</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"275\"/>\n        <source>User defined 2</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"278\"/>\n        <source>User defined 3</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"281\"/>\n        <source>User defined 4</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"284\"/>\n        <source>Label</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMakefile</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"126\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"129\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"132\"/>\n        <source>Preprocessor</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"135\"/>\n        <source>Variable</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"138\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"141\"/>\n        <source>Target</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"144\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMarkdown</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"225\"/>\n        <source>Special</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"228\"/>\n        <source>Strong emphasis using double asterisks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"231\"/>\n        <source>Strong emphasis using double underscores</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"234\"/>\n        <source>Emphasis using single asterisks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"237\"/>\n        <source>Emphasis using single underscores</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"240\"/>\n        <source>Level 1 header</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"243\"/>\n        <source>Level 2 header</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"246\"/>\n        <source>Level 3 header</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"249\"/>\n        <source>Level 4 header</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"252\"/>\n        <source>Level 5 header</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"255\"/>\n        <source>Level 6 header</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"258\"/>\n        <source>Pre-char</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"261\"/>\n        <source>Unordered list item</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"264\"/>\n        <source>Ordered list item</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"267\"/>\n        <source>Block quote</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"270\"/>\n        <source>Strike out</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"273\"/>\n        <source>Horizontal rule</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"276\"/>\n        <source>Link</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"279\"/>\n        <source>Code between backticks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"282\"/>\n        <source>Code between double backticks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"285\"/>\n        <source>Code block</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMatlab</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"133\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"136\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"139\"/>\n        <source>Command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"142\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"145\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"148\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"151\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"154\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"157\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPO</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"99\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"102\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"105\"/>\n        <source>Message identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"108\"/>\n        <source>Message identifier text</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"111\"/>\n        <source>Message string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"114\"/>\n        <source>Message string text</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"117\"/>\n        <source>Message context</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"120\"/>\n        <source>Message context text</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"123\"/>\n        <source>Fuzzy flag</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"126\"/>\n        <source>Programmer comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"129\"/>\n        <source>Reference</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"132\"/>\n        <source>Flags</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"135\"/>\n        <source>Message identifier text end-of-line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"138\"/>\n        <source>Message string text end-of-line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"141\"/>\n        <source>Message context text end-of-line</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPOV</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"277\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"280\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"283\"/>\n        <source>Comment line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"286\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"289\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"292\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"295\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"298\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"301\"/>\n        <source>Directive</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"304\"/>\n        <source>Bad directive</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"307\"/>\n        <source>Objects, CSG and appearance</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"310\"/>\n        <source>Types, modifiers and items</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"313\"/>\n        <source>Predefined identifiers</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"316\"/>\n        <source>Predefined functions</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"319\"/>\n        <source>User defined 1</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"322\"/>\n        <source>User defined 2</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"325\"/>\n        <source>User defined 3</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPascal</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"259\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"262\"/>\n        <source>&apos;{ ... }&apos; style comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"265\"/>\n        <source>&apos;(* ... *)&apos; style comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"268\"/>\n        <source>Line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"271\"/>\n        <source>&apos;{$ ... }&apos; style pre-processor block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"274\"/>\n        <source>&apos;(*$ ... *)&apos; style pre-processor block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"277\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"280\"/>\n        <source>Hexadecimal number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"283\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"286\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"289\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"292\"/>\n        <source>Character</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"298\"/>\n        <source>Inline asm</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPerl</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"328\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"331\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"334\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"337\"/>\n        <source>POD</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"340\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"343\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"346\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"349\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"352\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"355\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"358\"/>\n        <source>Scalar</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"361\"/>\n        <source>Array</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"364\"/>\n        <source>Hash</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"367\"/>\n        <source>Symbol table</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"370\"/>\n        <source>Regular expression</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"373\"/>\n        <source>Substitution</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"376\"/>\n        <source>Backticks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"379\"/>\n        <source>Data section</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"382\"/>\n        <source>Here document delimiter</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"385\"/>\n        <source>Single-quoted here document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"388\"/>\n        <source>Double-quoted here document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"391\"/>\n        <source>Backtick here document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"394\"/>\n        <source>Quoted string (q)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"397\"/>\n        <source>Quoted string (qq)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"400\"/>\n        <source>Quoted string (qx)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"403\"/>\n        <source>Quoted string (qr)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"406\"/>\n        <source>Quoted string (qw)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"409\"/>\n        <source>POD verbatim</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"412\"/>\n        <source>Subroutine prototype</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"415\"/>\n        <source>Format identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"418\"/>\n        <source>Format body</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"421\"/>\n        <source>Double-quoted string (interpolated variable)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"424\"/>\n        <source>Translation</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"427\"/>\n        <source>Regular expression (interpolated variable)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"430\"/>\n        <source>Substitution (interpolated variable)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"433\"/>\n        <source>Backticks (interpolated variable)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"436\"/>\n        <source>Double-quoted here document (interpolated variable)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"439\"/>\n        <source>Backtick here document (interpolated variable)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"442\"/>\n        <source>Quoted string (qq, interpolated variable)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"445\"/>\n        <source>Quoted string (qx, interpolated variable)</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"448\"/>\n        <source>Quoted string (qr, interpolated variable)</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPostScript</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"259\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"262\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"265\"/>\n        <source>DSC comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"268\"/>\n        <source>DSC comment value</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"271\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"274\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"277\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"280\"/>\n        <source>Literal</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"283\"/>\n        <source>Immediately evaluated literal</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"286\"/>\n        <source>Array parenthesis</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"289\"/>\n        <source>Dictionary parenthesis</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"292\"/>\n        <source>Procedure parenthesis</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"295\"/>\n        <source>Text</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"298\"/>\n        <source>Hexadecimal string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"301\"/>\n        <source>Base85 string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"304\"/>\n        <source>Bad string character</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerProperties</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"120\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"123\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"126\"/>\n        <source>Section</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"129\"/>\n        <source>Assignment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"132\"/>\n        <source>Default value</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"135\"/>\n        <source>Key</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPython</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"232\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"235\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"238\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"241\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"244\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"247\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"250\"/>\n        <source>Triple single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"253\"/>\n        <source>Triple double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"256\"/>\n        <source>Class name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"259\"/>\n        <source>Function or method name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"262\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"265\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"268\"/>\n        <source>Comment block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"271\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"274\"/>\n        <source>Highlighted identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"277\"/>\n        <source>Decorator</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerRuby</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"248\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"251\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"254\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"257\"/>\n        <source>POD</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"260\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"263\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"266\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"269\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"272\"/>\n        <source>Class name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"275\"/>\n        <source>Function or method name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"278\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"281\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"284\"/>\n        <source>Regular expression</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"287\"/>\n        <source>Global</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"290\"/>\n        <source>Symbol</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"293\"/>\n        <source>Module name</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"296\"/>\n        <source>Instance variable</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"299\"/>\n        <source>Class variable</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"302\"/>\n        <source>Backticks</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"305\"/>\n        <source>Data section</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"308\"/>\n        <source>Here document delimiter</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"311\"/>\n        <source>Here document</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"314\"/>\n        <source>%q string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"317\"/>\n        <source>%Q string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"320\"/>\n        <source>%x string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"323\"/>\n        <source>%r string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"326\"/>\n        <source>%w string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"329\"/>\n        <source>Demoted keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"332\"/>\n        <source>stdin</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"335\"/>\n        <source>stdout</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"338\"/>\n        <source>stderr</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSQL</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"266\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"269\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"272\"/>\n        <source>Comment line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"275\"/>\n        <source>JavaDoc style comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"278\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"281\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"284\"/>\n        <source>Double-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"287\"/>\n        <source>Single-quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"290\"/>\n        <source>SQL*Plus keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"293\"/>\n        <source>SQL*Plus prompt</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"296\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"299\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"302\"/>\n        <source>SQL*Plus comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"305\"/>\n        <source># comment line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"308\"/>\n        <source>JavaDoc keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"311\"/>\n        <source>JavaDoc keyword error</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"314\"/>\n        <source>User defined 1</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"317\"/>\n        <source>User defined 2</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"320\"/>\n        <source>User defined 3</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"323\"/>\n        <source>User defined 4</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"326\"/>\n        <source>Quoted identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"329\"/>\n        <source>Quoted operator</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSpice</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"166\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"169\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"172\"/>\n        <source>Command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"175\"/>\n        <source>Function</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"178\"/>\n        <source>Parameter</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"181\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"184\"/>\n        <source>Delimiter</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"187\"/>\n        <source>Value</source>\n        <translation>Valor</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"190\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTCL</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"292\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"295\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"298\"/>\n        <source>Comment line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"301\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"304\"/>\n        <source>Quoted keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"307\"/>\n        <source>Quoted string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"310\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"313\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"316\"/>\n        <source>Substitution</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"319\"/>\n        <source>Brace substitution</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"322\"/>\n        <source>Modifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"325\"/>\n        <source>Expand keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"328\"/>\n        <source>TCL keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"331\"/>\n        <source>Tk keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"334\"/>\n        <source>iTCL keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"337\"/>\n        <source>Tk command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"340\"/>\n        <source>User defined 1</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"343\"/>\n        <source>User defined 2</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"346\"/>\n        <source>User defined 3</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"349\"/>\n        <source>User defined 4</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"352\"/>\n        <source>Comment box</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"355\"/>\n        <source>Comment block</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTeX</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"187\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"190\"/>\n        <source>Special</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"193\"/>\n        <source>Group</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"196\"/>\n        <source>Symbol</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"199\"/>\n        <source>Command</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"202\"/>\n        <source>Text</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVHDL</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"207\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"210\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"213\"/>\n        <source>Comment line</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"216\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"219\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"222\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"225\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"228\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"231\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"234\"/>\n        <source>Standard operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"237\"/>\n        <source>Attribute</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"240\"/>\n        <source>Standard function</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"243\"/>\n        <source>Standard package</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"246\"/>\n        <source>Standard type</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"249\"/>\n        <source>User defined</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"252\"/>\n        <source>Comment block</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVerilog</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"296\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"299\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"302\"/>\n        <source>Line comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"305\"/>\n        <source>Bang comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"308\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"311\"/>\n        <source>Primary keywords and identifiers</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"314\"/>\n        <source>String</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"317\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"320\"/>\n        <source>System task</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"323\"/>\n        <source>Preprocessor block</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"326\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"329\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"332\"/>\n        <source>Unclosed string</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"335\"/>\n        <source>User defined tasks and identifiers</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"338\"/>\n        <source>Keyword comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"341\"/>\n        <source>Inactive keyword comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"344\"/>\n        <source>Input port declaration</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"347\"/>\n        <source>Inactive input port declaration</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"350\"/>\n        <source>Output port declaration</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"353\"/>\n        <source>Inactive output port declaration</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"356\"/>\n        <source>Input/output port declaration</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"359\"/>\n        <source>Inactive input/output port declaration</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"362\"/>\n        <source>Port connection</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"365\"/>\n        <source>Inactive port connection</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerYAML</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"170\"/>\n        <source>Default</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"173\"/>\n        <source>Comment</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"176\"/>\n        <source>Identifier</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"179\"/>\n        <source>Keyword</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"182\"/>\n        <source>Number</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"185\"/>\n        <source>Reference</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"188\"/>\n        <source>Document delimiter</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"191\"/>\n        <source>Text block marker</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"194\"/>\n        <source>Syntax error marker</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"197\"/>\n        <source>Operator</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsciScintilla</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4414\"/>\n        <source>&amp;Undo</source>\n        <translation>&amp;Deshacer</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4418\"/>\n        <source>&amp;Redo</source>\n        <translation>&amp;Reacer</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4424\"/>\n        <source>Cu&amp;t</source>\n        <translation>&amp;Cortar</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4429\"/>\n        <source>&amp;Copy</source>\n        <translation>C&amp;opiar</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4435\"/>\n        <source>&amp;Paste</source>\n        <translation>&amp;Pegar</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4439\"/>\n        <source>Delete</source>\n        <translation>Borrar</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4446\"/>\n        <source>Select All</source>\n        <translation></translation>\n    </message>\n</context>\n<context>\n    <name>QsvTextOperationsWidget</name>\n    <message>\n        <source>Replace all</source>\n        <translation type=\"vanished\">Reemplazar todo</translation>\n    </message>\n    <message>\n        <source>Replace this text?</source>\n        <translation type=\"vanished\">¿Reemplazar este texto?</translation>\n    </message>\n    <message>\n        <source>%1 replacement(s) made</source>\n        <translation type=\"vanished\">%1 remplaso(s) hecho(s)</translation>\n    </message>\n</context>\n<context>\n    <name>TemplatesDownloadSelector</name>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"14\"/>\n        <source>Update project templates</source>\n        <translation>Actualizar plantillas de proyecto</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"22\"/>\n        <source>All</source>\n        <translation>Todo</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"47\"/>\n        <source>Available updates:</source>\n        <translation>Actualizaciones disponibles:</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"59\"/>\n        <source>xx new</source>\n        <translation>xx nueva</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"82\"/>\n        <source>xx updated</source>\n        <translation>xx actualizada</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"109\"/>\n        <source>Download selected</source>\n        <translation>Descargar selecccionadas</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"229\"/>\n        <source>%1 new</source>\n        <translation>%1 nueva</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"234\"/>\n        <source>%1 updated</source>\n        <translation>%1 actualizada</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"361\"/>\n        <source>Error</source>\n        <translation>Error</translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"361\"/>\n        <source>Error creating %1</source>\n        <translation>Error creando %1</translation>\n    </message>\n</context>\n<context>\n    <name>ToolManager</name>\n    <message>\n        <location filename=\"../toolmanager.ui\" line=\"14\"/>\n        <source>Tool Manager</source>\n        <translation>Manegador de Herramientas</translation>\n    </message>\n    <message>\n        <location filename=\"../toolmanager.cpp\" line=\"37\"/>\n        <source>Name</source>\n        <translation>Nombre</translation>\n    </message>\n    <message>\n        <location filename=\"../toolmanager.cpp\" line=\"37\"/>\n        <source>Command</source>\n        <translation>Comando</translation>\n    </message>\n    <message>\n        <location filename=\"../toolmanager.cpp\" line=\"117\"/>\n        <source>&lt;tr&gt;&lt;td&gt;%1&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;</source>\n        <translation>&lt;tr&gt;&lt;td&gt;%1&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../toolmanager.cpp\" line=\"118\"/>\n        <source>&lt;html&gt;&lt;body&gt;&lt;h2&gt;&lt;/h2&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;Variable&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;&lt;/tr&gt;%1&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation>&lt;html&gt;&lt;body&gt;&lt;h2&gt;&lt;/h2&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;Variable&lt;/th&gt;&lt;th&gt;Valor&lt;/th&gt;&lt;/tr&gt;%1&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n</context>\n<context>\n    <name>replaceForm</name>\n    <message>\n        <source>Form</source>\n        <translation type=\"vanished\">For</translation>\n    </message>\n    <message>\n        <source>&amp;Find</source>\n        <translation type=\"vanished\">&amp;Buscar</translation>\n    </message>\n    <message>\n        <source>Replace &amp;with</source>\n        <translation type=\"vanished\">Reemplazar &amp;Con</translation>\n    </message>\n    <message>\n        <source>&amp;Replace</source>\n        <translation type=\"vanished\">&amp;Reemplazar</translation>\n    </message>\n    <message>\n        <source>&amp;More</source>\n        <translation type=\"vanished\">&amp;Mas</translation>\n    </message>\n    <message>\n        <source>x</source>\n        <translation type=\"vanished\">x</translation>\n    </message>\n    <message>\n        <source>Options</source>\n        <translation type=\"vanished\">Opciones</translation>\n    </message>\n    <message>\n        <source>Case sensitive</source>\n        <translation type=\"vanished\">Sensible a mayusculas/minusculas</translation>\n    </message>\n    <message>\n        <source>Backwards</source>\n        <translation type=\"vanished\">Hacia atras</translation>\n    </message>\n    <message>\n        <source>Selected text only</source>\n        <translation type=\"vanished\">Solo en la selección</translation>\n    </message>\n    <message>\n        <source>Whole words</source>\n        <translation type=\"vanished\">Solo palabras completas</translation>\n    </message>\n    <message>\n        <source>Prompt on repalce</source>\n        <translation type=\"vanished\">Preguntar al reemplazar</translation>\n    </message>\n</context>\n<context>\n    <name>searchForm</name>\n    <message>\n        <source>&amp;Find</source>\n        <translation type=\"vanished\">&amp;Buscar</translation>\n    </message>\n    <message>\n        <source>Search previous apperence of the text, upwards</source>\n        <translation type=\"vanished\">Buscar ocurrencia anterior del texto, hacia arriba</translation>\n    </message>\n    <message>\n        <source>Previous</source>\n        <translation type=\"vanished\">Previo</translation>\n    </message>\n    <message>\n        <source>Search next apperence of the text, downwards</source>\n        <translation type=\"vanished\">Buscar ocurrencia posteriores del texto, hacia abajo</translation>\n    </message>\n    <message>\n        <source>Next</source>\n        <translation type=\"vanished\">Siguiente</translation>\n    </message>\n    <message>\n        <source>&amp;Case sensitive</source>\n        <translation type=\"vanished\">Sensible a &amp;mayusculas/minusculas</translation>\n    </message>\n    <message>\n        <source>Whole &amp;words</source>\n        <translation type=\"vanished\">Solo &amp;palabras completas</translation>\n    </message>\n    <message>\n        <source>Hide the search bar</source>\n        <translation type=\"vanished\">Esconder la barra de busqueda</translation>\n    </message>\n    <message>\n        <source>x</source>\n        <translation type=\"vanished\">x</translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "old/i18n/zh.ts",
    "content": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!DOCTYPE TS>\n<TS version=\"2.1\" language=\"zh\">\n<context>\n    <name>AboutDialog</name>\n    <message>\n        <location filename=\"../aboutdialog.ui\" line=\"14\"/>\n        <source>About</source>\n        <translation>关于我</translation>\n    </message>\n    <message>\n        <location filename=\"../aboutdialog.ui\" line=\"56\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;Embedded IDE&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;for C/C++&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Copyright © 2015-2017&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;by Martin Ribelotta &lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;a href=&quot;martinribelotta@gmail.com&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#2980b9;&quot;&gt;martinribelotta@gmail.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;Embedded IDE&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;for C/C++&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Copyright © 2015-2017&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;by Martin Ribelotta &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"vanished\">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;嵌入式系统 集成开发环境&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:xx-large; font-weight:600;&quot;&gt;用于 C / C ++&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;版权 © 2015-2017&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;由马丁Ribelotta &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>\n    </message>\n    <message>\n        <location filename=\"../aboutdialog.ui\" line=\"63\"/>\n        <source>TextLabel</source>\n        <translation></translation>\n    </message>\n    <message>\n        <location filename=\"../aboutdialog.cpp\" line=\"11\"/>\n        <source>Version %1&lt;br&gt;build date:&lt;br&gt;%2</source>\n        <translation>版本 %1&lt;br&gt;生成日期:&lt;br&gt;%2</translation>\n    </message>\n</context>\n<context>\n    <name>BannerWidget</name>\n    <message>\n        <location filename=\"../bannerwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../bannerwidget.ui\" line=\"20\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/ide_design/EmbeddedIDE_00.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>CodeEditor</name>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"254\"/>\n        <source>&amp;Undo</source>\n        <translation>&amp;撤消</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"255\"/>\n        <source>&amp;Redo</source>\n        <translation>&amp;重做</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"257\"/>\n        <source>Cu&amp;t</source>\n        <translation>&amp;切</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"258\"/>\n        <source>&amp;Copy</source>\n        <translation>&amp;复制</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"259\"/>\n        <source>&amp;Paste</source>\n        <translation>&amp;糊</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"260\"/>\n        <source>Delete</source>\n        <translation>删除</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"262\"/>\n        <source>&amp;Select All</source>\n        <translation>&amp;全选</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"613\"/>\n        <source>Find symbol under cursor</source>\n        <translation>光标下查找符号</translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"624\"/>\n        <source>Document Modified</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"625\"/>\n        <source>The document is not save. Save it?</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"628\"/>\n        <source>Yes</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"629\"/>\n        <source>No</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../codeeditor.cpp\" line=\"630\"/>\n        <source>Abort</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ComponentItemWidget</name>\n    <message>\n        <location filename=\"../componentitemwidget.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../componentitemwidget.ui\" line=\"34\"/>\n        <source>Download</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../componentitemwidget.ui\" line=\"47\"/>\n        <source>Component Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../componentitemwidget.ui\" line=\"62\"/>\n        <source>Component URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ComponentsDialog</name>\n    <message>\n        <location filename=\"../componentsdialog.ui\" line=\"14\"/>\n        <source>Dialog</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../componentsdialog.ui\" line=\"112\"/>\n        <source>Current</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../componentsdialog.ui\" line=\"133\"/>\n        <source>total</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../componentsdialog.cpp\" line=\"88\"/>\n        <source>URL Input</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../componentsdialog.cpp\" line=\"88\"/>\n        <source>Enter url to add</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ConfigDialog</name>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"14\"/>\n        <source>Configuration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"24\"/>\n        <source>Editor</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"105\"/>\n        <source>Color style</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"59\"/>\n        <source>Replace tabs with spaces</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"30\"/>\n        <source> spaces</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"33\"/>\n        <source>Tab width is </source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"72\"/>\n        <source>Editor Font</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"112\"/>\n        <source>Save editor contents on target action</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"123\"/>\n        <source>Tools</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"137\"/>\n        <source>Default project path</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"147\"/>\n        <source>Project templates path</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"157\"/>\n        <source>Additional PATHs</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"166\"/>\n        <location filename=\"../configdialog.ui\" line=\"183\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"241\"/>\n        <source>Remote template URL</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"252\"/>\n        <source>Proxy</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"258\"/>\n        <source>HTTP proxy for network access</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"266\"/>\n        <source>None</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"273\"/>\n        <source>System proxy</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"280\"/>\n        <source>Custom proxy</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"289\"/>\n        <source>Proxy authentication</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"300\"/>\n        <source>With credentials</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"309\"/>\n        <source>Username</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"343\"/>\n        <source>Password</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"382\"/>\n        <source>Host</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"392\"/>\n        <source>localhost</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"399\"/>\n        <source>Port</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"409\"/>\n        <source>3128</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"435\"/>\n        <source>Behavior</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"483\"/>\n        <source>Log View Font</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"510\"/>\n        <source>Use in-progress/development characteristics</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"454\"/>\n        <source>Check for project templates updates at start up</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.ui\" line=\"490\"/>\n        <source>Format Style</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"136\"/>\n        <source>Uknow proxy setting</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"208\"/>\n        <location filename=\"../configdialog.cpp\" line=\"235\"/>\n        <source>Select directory</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"217\"/>\n        <source>Select file</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"252\"/>\n        <location filename=\"../configdialog.cpp\" line=\"258\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"252\"/>\n        <source>No valid URL: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"258\"/>\n        <source>Error creating %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"266\"/>\n        <source>Downloading template list...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"288\"/>\n        <source>Network error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../configdialog.cpp\" line=\"295\"/>\n        <source>Downloading %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>DebugUI</name>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"40\"/>\n        <source>Run/Continue</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"73\"/>\n        <source>Next</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"93\"/>\n        <source>Next Into</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"113\"/>\n        <source>Run to End</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"144\"/>\n        <source>Variables</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"184\"/>\n        <source>Watchpoints</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../debugui.ui\" line=\"227\"/>\n        <source>Stack</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>DialogConfigWorkspace</name>\n    <message>\n        <location filename=\"../dialogconfigworkspace.ui\" line=\"14\"/>\n        <source>Workspace Configuration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.ui\" line=\"20\"/>\n        <source>Select workspace path</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.ui\" line=\"29\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"31\"/>\n        <source>Select workspace PATH</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"38\"/>\n        <source>All directories (*)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"40\"/>\n        <source>Look in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"41\"/>\n        <source>Directory</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"42\"/>\n        <source>File Type</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"43\"/>\n        <source>Select file</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../dialogconfigworkspace.cpp\" line=\"44\"/>\n        <source>Cancel</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>DocumentArea</name>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"28\"/>\n        <source>Reload File</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"32\"/>\n        <source>Close All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"31\"/>\n        <source>Close Document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"25\"/>\n        <source>Next Position</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"26\"/>\n        <source>Prev Position</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"30\"/>\n        <source>Save All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"29\"/>\n        <source>Save File</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../documentarea.cpp\" line=\"248\"/>\n        <source> [*]</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>FilePropertiesDialog</name>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"14\"/>\n        <source>File Property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"22\"/>\n        <source>Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"32\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"54\"/>\n        <source>Owner</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"42\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"84\"/>\n        <source>Group</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"60\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"90\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"120\"/>\n        <source>Read</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"67\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"97\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"127\"/>\n        <source>Write</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"74\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"104\"/>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"134\"/>\n        <source>Execute</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.ui\" line=\"114\"/>\n        <source>Others</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filepropertiesdialog.cpp\" line=\"62\"/>\n        <source>Permissions</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>FindInFilesDialog</name>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"14\"/>\n        <source>Find in files</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"22\"/>\n        <source>Directory</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"54\"/>\n        <source>File pattern</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.ui\" line=\"86\"/>\n        <source>Text to find</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"39\"/>\n        <source>Regular Expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"40\"/>\n        <source>Case Sensitive</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"41\"/>\n        <source>Wole Words</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"43\"/>\n        <source>Ready</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"102\"/>\n        <source>Scanning %1 file</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"121\"/>\n        <source>Line %1 Char %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"133\"/>\n        <source>Done</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../findinfilesdialog.cpp\" line=\"138\"/>\n        <source>Select directory</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>FormFindReplace</name>\n    <message>\n        <location filename=\"../formfindreplace.ui\" line=\"14\"/>\n        <source>Form</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.ui\" line=\"35\"/>\n        <source>Find</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.ui\" line=\"71\"/>\n        <source>Replace</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"17\"/>\n        <source>Regular Expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"18\"/>\n        <source>Case Sensitive</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"19\"/>\n        <source>Wole Words</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"20\"/>\n        <source>Selection Only</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"21\"/>\n        <source>Wrap search</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"22\"/>\n        <source>Backward search</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../formfindreplace.cpp\" line=\"25\"/>\n        <source>Replace All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>GDBStartDialog</name>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"14\"/>\n        <source>Debugger Parameters</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"20\"/>\n        <source>GDB Configuration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"29\"/>\n        <source>GDB executable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"51\"/>\n        <location filename=\"../gdbstartdialog.ui\" line=\"86\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"64\"/>\n        <source>Program to debug</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"102\"/>\n        <source>Execute &amp;make target before gdb startup</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.ui\" line=\"130\"/>\n        <source>GDB Startup commands</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"104\"/>\n        <source>Open GDB executable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"106\"/>\n        <source>GDB executable (*gdb*);;All files (*)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"114\"/>\n        <source>Open executable to debug</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"117\"/>\n        <source>Executables (*.exe);;All files (*)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../gdbstartdialog.cpp\" line=\"119\"/>\n        <source>All files (*)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>LoggerWidget</name>\n    <message>\n        <location filename=\"../loggerwidget.cpp\" line=\"238\"/>\n        <source>Process ERROR: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainMenuWidget</name>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"35\"/>\n        <source>New Project</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"71\"/>\n        <source>Open Project</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"88\"/>\n        <source>Close current project</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"105\"/>\n        <source>Configure</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainmenuwidget.ui\" line=\"122\"/>\n        <source>Help</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MainWindow</name>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"14\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"347\"/>\n        <source>Embedded IDE</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"28\"/>\n        <source>&amp;Loggin</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"66\"/>\n        <source>Compiler Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"71\"/>\n        <source>GDB Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"76\"/>\n        <source>Application Output</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.ui\" line=\"89\"/>\n        <source>Pro&amp;ject</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"184\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"307\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"326\"/>\n        <source>Open Project</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"184\"/>\n        <location filename=\"../mainwindow.cpp\" line=\"326\"/>\n        <source>Cannot open %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"230\"/>\n        <source>Application ready...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"264\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"269\"/>\n        <source>Export</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"271\"/>\n        <source>Success</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"309\"/>\n        <source>Makefile (Makefile);;Make (*.mk);;All Files (*)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"352\"/>\n        <source>Embedded IDE %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"109\"/>\n        <source>Updates available</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"103\"/>\n        <source>Update</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"110\"/>\n        <source>New project templates available, click here for details</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"408\"/>\n        <source>Save files</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"409\"/>\n        <source>Save all files before build?</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"411\"/>\n        <source>Do not show again</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mainwindow.cpp\" line=\"419\"/>\n        <source>This dialog not will show again</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MapViewer</name>\n    <message>\n        <location filename=\"../mapviewer.ui\" line=\"42\"/>\n        <source>Memory Usage</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.ui\" line=\"95\"/>\n        <source>Symbol Tree</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.ui\" line=\"120\"/>\n        <source>Plain Text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"368\"/>\n        <source>Memory</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"369\"/>\n        <source>Base address</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"370\"/>\n        <location filename=\"../mapviewer.cpp\" line=\"393\"/>\n        <source>Size</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"371\"/>\n        <source>Used</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"372\"/>\n        <source>Percent</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"373\"/>\n        <source>Attributes</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"390\"/>\n        <source>Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"391\"/>\n        <source>Store address</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"392\"/>\n        <source>Load address</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"402\"/>\n        <source>Symbols without section</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../mapviewer.cpp\" line=\"414\"/>\n        <source>No unit</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>MyFileSystemModel</name>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"46\"/>\n        <source>Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"47\"/>\n        <source>Size</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>PasswordPromtDialog</name>\n    <message>\n        <location filename=\"../passwordpromtdialog.ui\" line=\"14\"/>\n        <source>Password requiered</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../passwordpromtdialog.ui\" line=\"45\"/>\n        <source>Password</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../appconfig.cpp\" line=\"294\"/>\n        <source>Proxy require password</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ProjectExporter</name>\n    <message>\n        <location filename=\"../projectexporter.cpp\" line=\"45\"/>\n        <source>Can not create empty tmp directory %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectexporter.cpp\" line=\"52\"/>\n        <source>Abnormal termination %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectexporter.cpp\" line=\"56\"/>\n        <source>End with error code %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ProjectNewDialog</name>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"20\"/>\n        <source>New Project</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"28\"/>\n        <source>Project Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"40\"/>\n        <source>Project PATH</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"49\"/>\n        <location filename=\"../projectnewdialog.ui\" line=\"92\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"61\"/>\n        <source>Project file path</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"77\"/>\n        <source>Template</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"122\"/>\n        <source>Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.ui\" line=\"127\"/>\n        <source>Value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.cpp\" line=\"331\"/>\n        <source>Project location</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.cpp\" line=\"339\"/>\n        <source>Open template</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.cpp\" line=\"341\"/>\n        <source>Template files (*.template *.jtemplate);;Diff files (*.diff);;All files (*)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectnewdialog.cpp\" line=\"368\"/>\n        <source>&lt;html&gt;&lt;body&gt;&lt;center&gt;&lt;h1&gt;%1&lt;/h1&gt;&lt;/center&gt;&lt;h3&gt;&lt;font color=&quot;blue&quot;&gt;%2&lt;/font&gt;&lt;/h3&gt;&lt;tt&gt;%3&lt;/tt&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ProjectView</name>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"157\"/>\n        <source>Loading...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"250\"/>\n        <source>Done with errors</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"263\"/>\n        <source>Done</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"271\"/>\n        <source>Indexing...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"296\"/>\n        <source>File name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"297\"/>\n        <source>Create file on %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"302\"/>\n        <source>Error creating file</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"327\"/>\n        <source>Folder name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"328\"/>\n        <source>Create folder on %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"355\"/>\n        <source>Link target</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"365\"/>\n        <source>Link creation fail</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"365\"/>\n        <source>ERROR: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"380\"/>\n        <source>Delete files</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"385\"/>\n        <source>Do this operation for all items</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"398\"/>\n        <source>Realy remove %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"423\"/>\n        <source>Export file</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"424\"/>\n        <source>Unknown.template</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"425\"/>\n        <source>Tempalte files (*.template *.jtemplate);;Diff files (*.diff);;All files (*)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"453\"/>\n        <source>Input text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"467\"/>\n        <source>Input items</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"538\"/>\n        <source>No entries</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"541\"/>\n        <source>Manage tools</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"566\"/>\n        <source>File New</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"567\"/>\n        <source>Folder New</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"571\"/>\n        <source>New Link</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"574\"/>\n        <source>Properties</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"577\"/>\n        <source>Execute</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"580\"/>\n        <source>Open External</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"585\"/>\n        <source>Rename</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.cpp\" line=\"587\"/>\n        <source>Delete</source>\n        <translation type=\"unfinished\">删除</translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"40\"/>\n        <source>Project</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"79\"/>\n        <location filename=\"../projectview.ui\" line=\"122\"/>\n        <location filename=\"../projectview.ui\" line=\"145\"/>\n        <location filename=\"../projectview.ui\" line=\"165\"/>\n        <source>...</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"99\"/>\n        <source>Reload Project</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"142\"/>\n        <source>Find</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"119\"/>\n        <source>Project export</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"162\"/>\n        <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tools&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projectview.ui\" line=\"76\"/>\n        <source>Debug</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ProjetFromTemplate</name>\n    <message>\n        <location filename=\"../projetfromtemplate.cpp\" line=\"32\"/>\n        <source>Cant create path %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../projetfromtemplate.cpp\" line=\"55\"/>\n        <source>Diff return %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QMainWindow</name>\n    <message>\n        <location filename=\"../templatedownloader.cpp\" line=\"43\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatedownloader.cpp\" line=\"44\"/>\n        <source>No valid URL: %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatedownloader.cpp\" line=\"53\"/>\n        <source>Network error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QObject</name>\n    <message>\n        <location filename=\"../filedownloader.cpp\" line=\"52\"/>\n        <source>Error downloading %1 to %2: %3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../filedownloader.cpp\" line=\"70\"/>\n        <source>Network error downloading %1: %2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../main.cpp\" line=\"136\"/>\n        <source>Desktop support</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../main.cpp\" line=\"138\"/>\n        <source> can not detect any system tray on this desktop, notify this to developers.</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"137\"/>\n        <source>Network error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"277\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"278\"/>\n        <source>Error creating %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciCommand</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"59\"/>\n        <source>Move down one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"69\"/>\n        <source>Extend selection down one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"79\"/>\n        <source>Extend rectangular selection down one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"86\"/>\n        <source>Scroll view down one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"96\"/>\n        <source>Move up one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"106\"/>\n        <source>Extend selection up one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"116\"/>\n        <source>Extend rectangular selection up one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"123\"/>\n        <source>Scroll view up one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"133\"/>\n        <source>Scroll to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"143\"/>\n        <source>Scroll to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"153\"/>\n        <source>Scroll vertically to centre current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"160\"/>\n        <source>Move down one paragraph</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"166\"/>\n        <source>Extend selection down one paragraph</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"173\"/>\n        <source>Move up one paragraph</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"179\"/>\n        <source>Extend selection up one paragraph</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"190\"/>\n        <source>Move left one character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"200\"/>\n        <source>Extend selection left one character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"211\"/>\n        <source>Extend rectangular selection left one character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"222\"/>\n        <source>Move right one character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"232\"/>\n        <source>Extend selection right one character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"243\"/>\n        <source>Extend rectangular selection right one character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"254\"/>\n        <source>Move left one word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"264\"/>\n        <source>Extend selection left one word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"274\"/>\n        <source>Move right one word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"280\"/>\n        <source>Extend selection right one word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"286\"/>\n        <source>Move to end of previous word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"292\"/>\n        <source>Extend selection to end of previous word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"303\"/>\n        <source>Move to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"313\"/>\n        <source>Extend selection to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"320\"/>\n        <source>Move left one word part</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"326\"/>\n        <source>Extend selection left one word part</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"333\"/>\n        <source>Move right one word part</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"339\"/>\n        <source>Extend selection right one word part</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"350\"/>\n        <source>Move to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"360\"/>\n        <source>Extend selection to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"371\"/>\n        <source>Extend rectangular selection to start of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"382\"/>\n        <source>Move to start of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"392\"/>\n        <source>Extend selection to start of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"399\"/>\n        <source>Move to start of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"406\"/>\n        <source>Extend selection to start of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"417\"/>\n        <source>Move to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"428\"/>\n        <source>Extend selection to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"439\"/>\n        <source>Extend rectangular selection to first visible character in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"446\"/>\n        <source>Move to first visible character of display in document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"453\"/>\n        <source>Extend selection to first visible character in display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"464\"/>\n        <source>Move to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"474\"/>\n        <source>Extend selection to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"485\"/>\n        <source>Extend rectangular selection to end of document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"496\"/>\n        <source>Move to end of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"506\"/>\n        <source>Extend selection to end of display line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"513\"/>\n        <source>Move to end of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"520\"/>\n        <source>Extend selection to end of display or document line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"531\"/>\n        <source>Move to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"541\"/>\n        <source>Extend selection to start of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"552\"/>\n        <source>Move to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"562\"/>\n        <source>Extend selection to end of document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"569\"/>\n        <source>Move up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"575\"/>\n        <source>Extend selection up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"581\"/>\n        <source>Extend rectangular selection up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"592\"/>\n        <source>Move down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"602\"/>\n        <source>Extend selection down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"612\"/>\n        <source>Extend rectangular selection down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"619\"/>\n        <source>Stuttered move up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"625\"/>\n        <source>Stuttered extend selection up one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"632\"/>\n        <source>Stuttered move down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"638\"/>\n        <source>Stuttered extend selection down one page</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"649\"/>\n        <source>Delete current character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"659\"/>\n        <source>Delete previous character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"665\"/>\n        <source>Delete previous character if not at start of line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"672\"/>\n        <source>Delete word to left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"678\"/>\n        <source>Delete word to right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"688\"/>\n        <source>Delete right to end of next word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"695\"/>\n        <source>Delete line to left</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"705\"/>\n        <source>Delete line to right</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"711\"/>\n        <source>Delete current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"717\"/>\n        <source>Cut current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"723\"/>\n        <source>Copy current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"729\"/>\n        <source>Transpose current and previous lines</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"736\"/>\n        <source>Duplicate the current line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"742\"/>\n        <source>Select all</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"748\"/>\n        <source>Move selected lines up one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"754\"/>\n        <source>Move selected lines down one line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"761\"/>\n        <source>Duplicate selection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"767\"/>\n        <source>Convert selection to lower case</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"773\"/>\n        <source>Convert selection to upper case</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"779\"/>\n        <source>Cut selection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"785\"/>\n        <source>Copy selection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"791\"/>\n        <source>Paste</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"797\"/>\n        <source>Toggle insert/overtype</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"803\"/>\n        <source>Insert newline</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"809\"/>\n        <source>Formfeed</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"815\"/>\n        <source>Indent one level</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"821\"/>\n        <source>De-indent one level</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"827\"/>\n        <source>Cancel</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"833\"/>\n        <source>Undo last command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"843\"/>\n        <source>Redo last command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"849\"/>\n        <source>Zoom in</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscicommandset.cpp\" line=\"855\"/>\n        <source>Zoom out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerAVS</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"290\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"293\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"296\"/>\n        <source>Nested block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"299\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"302\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"305\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"308\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"311\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"314\"/>\n        <source>Triple double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"317\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"320\"/>\n        <source>Filter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"323\"/>\n        <source>Plugin</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"326\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"329\"/>\n        <source>Clip property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeravs.cpp\" line=\"332\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBash</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"203\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"206\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"209\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"212\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"215\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"218\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"221\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"224\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"227\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"230\"/>\n        <source>Scalar</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"233\"/>\n        <source>Parameter expansion</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"236\"/>\n        <source>Backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"239\"/>\n        <source>Here document delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbash.cpp\" line=\"242\"/>\n        <source>Single-quoted here document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerBatch</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"174\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"177\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"180\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"183\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"186\"/>\n        <source>Hide command character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"189\"/>\n        <source>External command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"192\"/>\n        <source>Variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerbatch.cpp\" line=\"195\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCMake</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"190\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"193\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"196\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"199\"/>\n        <source>Left quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"202\"/>\n        <source>Right quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"205\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"208\"/>\n        <source>Variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"211\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"214\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"217\"/>\n        <source>WHILE block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"220\"/>\n        <source>FOREACH block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"223\"/>\n        <source>IF block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"226\"/>\n        <source>MACRO block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"229\"/>\n        <source>Variable within a string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercmake.cpp\" line=\"232\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCPP</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"364\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"367\"/>\n        <source>Inactive default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"370\"/>\n        <source>C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"373\"/>\n        <source>Inactive C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"376\"/>\n        <source>C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"379\"/>\n        <source>Inactive C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"382\"/>\n        <source>JavaDoc style C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"385\"/>\n        <source>Inactive JavaDoc style C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"388\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"391\"/>\n        <source>Inactive number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"394\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"397\"/>\n        <source>Inactive keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"400\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"403\"/>\n        <source>Inactive double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"406\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"409\"/>\n        <source>Inactive single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"412\"/>\n        <source>IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"415\"/>\n        <source>Inactive IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"418\"/>\n        <source>Pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"421\"/>\n        <source>Inactive pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"424\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"427\"/>\n        <source>Inactive operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"430\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"433\"/>\n        <source>Inactive identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"436\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"439\"/>\n        <source>Inactive unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"442\"/>\n        <source>C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"445\"/>\n        <source>Inactive C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"448\"/>\n        <source>JavaScript regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"451\"/>\n        <source>Inactive JavaScript regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"454\"/>\n        <source>JavaDoc style C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"457\"/>\n        <source>Inactive JavaDoc style C++ comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"460\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"463\"/>\n        <source>Inactive secondary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"466\"/>\n        <source>JavaDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"469\"/>\n        <source>Inactive JavaDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"472\"/>\n        <source>JavaDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"475\"/>\n        <source>Inactive JavaDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"478\"/>\n        <source>Global classes and typedefs</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"481\"/>\n        <source>Inactive global classes and typedefs</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"484\"/>\n        <source>C++ raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"487\"/>\n        <source>Inactive C++ raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"490\"/>\n        <source>Vala triple-quoted verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"493\"/>\n        <source>Inactive Vala triple-quoted verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"496\"/>\n        <source>Pike hash-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"499\"/>\n        <source>Inactive Pike hash-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"502\"/>\n        <source>Pre-processor C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"505\"/>\n        <source>Inactive pre-processor C comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"508\"/>\n        <source>JavaDoc style pre-processor comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"511\"/>\n        <source>Inactive JavaDoc style pre-processor comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"514\"/>\n        <source>User-defined literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"517\"/>\n        <source>Inactive user-defined literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"520\"/>\n        <source>Task marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"523\"/>\n        <source>Inactive task marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"526\"/>\n        <source>Escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercpp.cpp\" line=\"529\"/>\n        <source>Inactive escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSS</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"232\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"235\"/>\n        <source>Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"238\"/>\n        <source>Class selector</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"241\"/>\n        <source>Pseudo-class</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"244\"/>\n        <source>Unknown pseudo-class</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"247\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"250\"/>\n        <source>CSS1 property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"253\"/>\n        <source>Unknown property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"256\"/>\n        <source>Value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"259\"/>\n        <source>ID selector</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"262\"/>\n        <source>Important</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"265\"/>\n        <source>@-rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"268\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"271\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"274\"/>\n        <source>CSS2 property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"277\"/>\n        <source>Attribute</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"280\"/>\n        <source>CSS3 property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"283\"/>\n        <source>Pseudo-element</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"286\"/>\n        <source>Extended CSS property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"289\"/>\n        <source>Extended pseudo-class</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"292\"/>\n        <source>Extended pseudo-element</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"295\"/>\n        <source>Media rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercss.cpp\" line=\"298\"/>\n        <source>Variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCSharp</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercsharp.cpp\" line=\"105\"/>\n        <source>Verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerCoffeeScript</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"258\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"261\"/>\n        <source>C-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"264\"/>\n        <source>C++-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"267\"/>\n        <source>JavaDoc C-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"270\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"273\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"276\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"279\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"282\"/>\n        <source>IDL UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"285\"/>\n        <source>Pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"288\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"291\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"294\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"297\"/>\n        <source>C# verbatim string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"300\"/>\n        <source>Regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"303\"/>\n        <source>JavaDoc C++-style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"306\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"309\"/>\n        <source>JavaDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"312\"/>\n        <source>JavaDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"315\"/>\n        <source>Global classes</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"318\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"321\"/>\n        <source>Block regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"324\"/>\n        <source>Block regular expression comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexercoffeescript.cpp\" line=\"327\"/>\n        <source>Instance property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerD</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"266\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"269\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"272\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"275\"/>\n        <source>DDoc style block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"278\"/>\n        <source>Nesting comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"281\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"284\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"287\"/>\n        <source>Secondary keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"290\"/>\n        <source>Documentation keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"293\"/>\n        <source>Type definition</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"296\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"299\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"302\"/>\n        <source>Character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"305\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"308\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"311\"/>\n        <source>DDoc style line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"314\"/>\n        <source>DDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"317\"/>\n        <source>DDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"320\"/>\n        <source>Backquoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"323\"/>\n        <source>Raw string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"326\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"329\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerd.cpp\" line=\"332\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerDiff</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"102\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"105\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"108\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"111\"/>\n        <source>Header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"114\"/>\n        <source>Position</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"117\"/>\n        <source>Removed line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"120\"/>\n        <source>Added line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerdiff.cpp\" line=\"123\"/>\n        <source>Changed line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerFortran77</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"185\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"188\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"191\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"194\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"197\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"200\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"203\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"206\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"209\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"212\"/>\n        <source>Intrinsic function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"215\"/>\n        <source>Extended function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"218\"/>\n        <source>Pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"221\"/>\n        <source>Dotted operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"224\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerfortran77.cpp\" line=\"227\"/>\n        <source>Continuation</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerHTML</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"563\"/>\n        <source>HTML default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"566\"/>\n        <source>Tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"569\"/>\n        <source>Unknown tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"572\"/>\n        <source>Attribute</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"575\"/>\n        <source>Unknown attribute</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"578\"/>\n        <source>HTML number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"581\"/>\n        <source>HTML double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"584\"/>\n        <source>HTML single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"587\"/>\n        <source>Other text in a tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"590\"/>\n        <source>HTML comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"593\"/>\n        <source>Entity</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"596\"/>\n        <source>End of a tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"599\"/>\n        <source>Start of an XML fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"602\"/>\n        <source>End of an XML fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"605\"/>\n        <source>Script tag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"608\"/>\n        <source>Start of an ASP fragment with @</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"611\"/>\n        <source>Start of an ASP fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"614\"/>\n        <source>CDATA</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"617\"/>\n        <source>Start of a PHP fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"620\"/>\n        <source>Unquoted HTML value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"623\"/>\n        <source>ASP X-Code comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"626\"/>\n        <source>SGML default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"629\"/>\n        <source>SGML command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"632\"/>\n        <source>First parameter of an SGML command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"635\"/>\n        <source>SGML double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"638\"/>\n        <source>SGML single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"641\"/>\n        <source>SGML error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"644\"/>\n        <source>SGML special entity</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"647\"/>\n        <source>SGML comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"650\"/>\n        <source>First parameter comment of an SGML command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"653\"/>\n        <source>SGML block default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"656\"/>\n        <source>Start of a JavaScript fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"659\"/>\n        <source>JavaScript default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"662\"/>\n        <source>JavaScript comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"665\"/>\n        <source>JavaScript line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"668\"/>\n        <source>JavaDoc style JavaScript comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"671\"/>\n        <source>JavaScript number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"674\"/>\n        <source>JavaScript word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"677\"/>\n        <source>JavaScript keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"680\"/>\n        <source>JavaScript double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"683\"/>\n        <source>JavaScript single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"686\"/>\n        <source>JavaScript symbol</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"689\"/>\n        <source>JavaScript unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"692\"/>\n        <source>JavaScript regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"695\"/>\n        <source>Start of an ASP JavaScript fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"698\"/>\n        <source>ASP JavaScript default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"701\"/>\n        <source>ASP JavaScript comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"704\"/>\n        <source>ASP JavaScript line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"707\"/>\n        <source>JavaDoc style ASP JavaScript comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"710\"/>\n        <source>ASP JavaScript number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"713\"/>\n        <source>ASP JavaScript word</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"716\"/>\n        <source>ASP JavaScript keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"719\"/>\n        <source>ASP JavaScript double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"722\"/>\n        <source>ASP JavaScript single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"725\"/>\n        <source>ASP JavaScript symbol</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"728\"/>\n        <source>ASP JavaScript unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"731\"/>\n        <source>ASP JavaScript regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"734\"/>\n        <source>Start of a VBScript fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"737\"/>\n        <source>VBScript default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"740\"/>\n        <source>VBScript comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"743\"/>\n        <source>VBScript number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"746\"/>\n        <source>VBScript keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"749\"/>\n        <source>VBScript string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"752\"/>\n        <source>VBScript identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"755\"/>\n        <source>VBScript unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"758\"/>\n        <source>Start of an ASP VBScript fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"761\"/>\n        <source>ASP VBScript default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"764\"/>\n        <source>ASP VBScript comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"767\"/>\n        <source>ASP VBScript number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"770\"/>\n        <source>ASP VBScript keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"773\"/>\n        <source>ASP VBScript string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"776\"/>\n        <source>ASP VBScript identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"779\"/>\n        <source>ASP VBScript unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"782\"/>\n        <source>Start of a Python fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"785\"/>\n        <source>Python default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"788\"/>\n        <source>Python comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"791\"/>\n        <source>Python number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"794\"/>\n        <source>Python double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"797\"/>\n        <source>Python single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"800\"/>\n        <source>Python keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"803\"/>\n        <source>Python triple double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"806\"/>\n        <source>Python triple single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"809\"/>\n        <source>Python class name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"812\"/>\n        <source>Python function or method name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"815\"/>\n        <source>Python operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"818\"/>\n        <source>Python identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"821\"/>\n        <source>Start of an ASP Python fragment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"824\"/>\n        <source>ASP Python default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"827\"/>\n        <source>ASP Python comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"830\"/>\n        <source>ASP Python number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"833\"/>\n        <source>ASP Python double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"836\"/>\n        <source>ASP Python single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"839\"/>\n        <source>ASP Python keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"842\"/>\n        <source>ASP Python triple double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"845\"/>\n        <source>ASP Python triple single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"848\"/>\n        <source>ASP Python class name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"851\"/>\n        <source>ASP Python function or method name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"854\"/>\n        <source>ASP Python operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"857\"/>\n        <source>ASP Python identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"860\"/>\n        <source>PHP default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"863\"/>\n        <source>PHP double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"866\"/>\n        <source>PHP single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"869\"/>\n        <source>PHP keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"872\"/>\n        <source>PHP number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"875\"/>\n        <source>PHP variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"878\"/>\n        <source>PHP comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"881\"/>\n        <source>PHP line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"884\"/>\n        <source>PHP double-quoted variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerhtml.cpp\" line=\"887\"/>\n        <source>PHP operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerIDL</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeridl.cpp\" line=\"97\"/>\n        <source>UUID</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJSON</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"160\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"163\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"166\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"169\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"172\"/>\n        <source>Property</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"175\"/>\n        <source>Escape sequence</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"178\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"181\"/>\n        <source>Block comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"184\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"187\"/>\n        <source>IRI</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"190\"/>\n        <source>JSON-LD compact IRI</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"193\"/>\n        <source>JSON keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"196\"/>\n        <source>JSON-LD keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjson.cpp\" line=\"199\"/>\n        <source>Parsing error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerJavaScript</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerjavascript.cpp\" line=\"107\"/>\n        <source>Regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerLua</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"227\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"230\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"233\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"236\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"239\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"242\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"245\"/>\n        <source>Character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"248\"/>\n        <source>Literal string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"251\"/>\n        <source>Preprocessor</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"254\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"257\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"260\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"263\"/>\n        <source>Basic functions</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"266\"/>\n        <source>String, table and maths functions</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"269\"/>\n        <source>Coroutines, i/o and system facilities</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"272\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"275\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"278\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"281\"/>\n        <source>User defined 4</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerlua.cpp\" line=\"284\"/>\n        <source>Label</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMakefile</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"126\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"129\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"132\"/>\n        <source>Preprocessor</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"135\"/>\n        <source>Variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"138\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"141\"/>\n        <source>Target</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermakefile.cpp\" line=\"144\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMarkdown</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"222\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"225\"/>\n        <source>Special</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"228\"/>\n        <source>Strong emphasis using double asterisks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"231\"/>\n        <source>Strong emphasis using double underscores</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"234\"/>\n        <source>Emphasis using single asterisks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"237\"/>\n        <source>Emphasis using single underscores</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"240\"/>\n        <source>Level 1 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"243\"/>\n        <source>Level 2 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"246\"/>\n        <source>Level 3 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"249\"/>\n        <source>Level 4 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"252\"/>\n        <source>Level 5 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"255\"/>\n        <source>Level 6 header</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"258\"/>\n        <source>Pre-char</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"261\"/>\n        <source>Unordered list item</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"264\"/>\n        <source>Ordered list item</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"267\"/>\n        <source>Block quote</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"270\"/>\n        <source>Strike out</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"273\"/>\n        <source>Horizontal rule</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"276\"/>\n        <source>Link</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"279\"/>\n        <source>Code between backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"282\"/>\n        <source>Code between double backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermarkdown.cpp\" line=\"285\"/>\n        <source>Code block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerMatlab</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"133\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"136\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"139\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"142\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"145\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"148\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"151\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"154\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexermatlab.cpp\" line=\"157\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPO</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"99\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"102\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"105\"/>\n        <source>Message identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"108\"/>\n        <source>Message identifier text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"111\"/>\n        <source>Message string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"114\"/>\n        <source>Message string text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"117\"/>\n        <source>Message context</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"120\"/>\n        <source>Message context text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"123\"/>\n        <source>Fuzzy flag</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"126\"/>\n        <source>Programmer comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"129\"/>\n        <source>Reference</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"132\"/>\n        <source>Flags</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"135\"/>\n        <source>Message identifier text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"138\"/>\n        <source>Message string text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpo.cpp\" line=\"141\"/>\n        <source>Message context text end-of-line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPOV</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"277\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"280\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"283\"/>\n        <source>Comment line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"286\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"289\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"292\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"295\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"298\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"301\"/>\n        <source>Directive</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"304\"/>\n        <source>Bad directive</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"307\"/>\n        <source>Objects, CSG and appearance</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"310\"/>\n        <source>Types, modifiers and items</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"313\"/>\n        <source>Predefined identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"316\"/>\n        <source>Predefined functions</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"319\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"322\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpov.cpp\" line=\"325\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPascal</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"256\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"259\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"262\"/>\n        <source>&apos;{ ... }&apos; style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"265\"/>\n        <source>&apos;(* ... *)&apos; style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"268\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"271\"/>\n        <source>&apos;{$ ... }&apos; style pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"274\"/>\n        <source>&apos;(*$ ... *)&apos; style pre-processor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"277\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"280\"/>\n        <source>Hexadecimal number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"283\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"286\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"289\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"292\"/>\n        <source>Character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"295\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpascal.cpp\" line=\"298\"/>\n        <source>Inline asm</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPerl</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"328\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"331\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"334\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"337\"/>\n        <source>POD</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"340\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"343\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"346\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"349\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"352\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"355\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"358\"/>\n        <source>Scalar</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"361\"/>\n        <source>Array</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"364\"/>\n        <source>Hash</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"367\"/>\n        <source>Symbol table</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"370\"/>\n        <source>Regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"373\"/>\n        <source>Substitution</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"376\"/>\n        <source>Backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"379\"/>\n        <source>Data section</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"382\"/>\n        <source>Here document delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"385\"/>\n        <source>Single-quoted here document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"388\"/>\n        <source>Double-quoted here document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"391\"/>\n        <source>Backtick here document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"394\"/>\n        <source>Quoted string (q)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"397\"/>\n        <source>Quoted string (qq)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"400\"/>\n        <source>Quoted string (qx)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"403\"/>\n        <source>Quoted string (qr)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"406\"/>\n        <source>Quoted string (qw)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"409\"/>\n        <source>POD verbatim</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"412\"/>\n        <source>Subroutine prototype</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"415\"/>\n        <source>Format identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"418\"/>\n        <source>Format body</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"421\"/>\n        <source>Double-quoted string (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"424\"/>\n        <source>Translation</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"427\"/>\n        <source>Regular expression (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"430\"/>\n        <source>Substitution (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"433\"/>\n        <source>Backticks (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"436\"/>\n        <source>Double-quoted here document (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"439\"/>\n        <source>Backtick here document (interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"442\"/>\n        <source>Quoted string (qq, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"445\"/>\n        <source>Quoted string (qx, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerperl.cpp\" line=\"448\"/>\n        <source>Quoted string (qr, interpolated variable)</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPostScript</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"259\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"262\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"265\"/>\n        <source>DSC comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"268\"/>\n        <source>DSC comment value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"271\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"274\"/>\n        <source>Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"277\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"280\"/>\n        <source>Literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"283\"/>\n        <source>Immediately evaluated literal</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"286\"/>\n        <source>Array parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"289\"/>\n        <source>Dictionary parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"292\"/>\n        <source>Procedure parenthesis</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"295\"/>\n        <source>Text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"298\"/>\n        <source>Hexadecimal string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"301\"/>\n        <source>Base85 string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpostscript.cpp\" line=\"304\"/>\n        <source>Bad string character</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerProperties</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"120\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"123\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"126\"/>\n        <source>Section</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"129\"/>\n        <source>Assignment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"132\"/>\n        <source>Default value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerproperties.cpp\" line=\"135\"/>\n        <source>Key</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerPython</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"232\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"235\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"238\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"241\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"244\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"247\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"250\"/>\n        <source>Triple single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"253\"/>\n        <source>Triple double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"256\"/>\n        <source>Class name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"259\"/>\n        <source>Function or method name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"262\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"265\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"268\"/>\n        <source>Comment block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"271\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"274\"/>\n        <source>Highlighted identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerpython.cpp\" line=\"277\"/>\n        <source>Decorator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerRuby</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"248\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"251\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"254\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"257\"/>\n        <source>POD</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"260\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"263\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"266\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"269\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"272\"/>\n        <source>Class name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"275\"/>\n        <source>Function or method name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"278\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"281\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"284\"/>\n        <source>Regular expression</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"287\"/>\n        <source>Global</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"290\"/>\n        <source>Symbol</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"293\"/>\n        <source>Module name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"296\"/>\n        <source>Instance variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"299\"/>\n        <source>Class variable</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"302\"/>\n        <source>Backticks</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"305\"/>\n        <source>Data section</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"308\"/>\n        <source>Here document delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"311\"/>\n        <source>Here document</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"314\"/>\n        <source>%q string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"317\"/>\n        <source>%Q string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"320\"/>\n        <source>%x string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"323\"/>\n        <source>%r string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"326\"/>\n        <source>%w string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"329\"/>\n        <source>Demoted keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"332\"/>\n        <source>stdin</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"335\"/>\n        <source>stdout</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerruby.cpp\" line=\"338\"/>\n        <source>stderr</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSQL</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"266\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"269\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"272\"/>\n        <source>Comment line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"275\"/>\n        <source>JavaDoc style comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"278\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"281\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"284\"/>\n        <source>Double-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"287\"/>\n        <source>Single-quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"290\"/>\n        <source>SQL*Plus keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"293\"/>\n        <source>SQL*Plus prompt</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"296\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"299\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"302\"/>\n        <source>SQL*Plus comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"305\"/>\n        <source># comment line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"308\"/>\n        <source>JavaDoc keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"311\"/>\n        <source>JavaDoc keyword error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"314\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"317\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"320\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"323\"/>\n        <source>User defined 4</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"326\"/>\n        <source>Quoted identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexersql.cpp\" line=\"329\"/>\n        <source>Quoted operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerSpice</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"166\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"169\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"172\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"175\"/>\n        <source>Function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"178\"/>\n        <source>Parameter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"181\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"184\"/>\n        <source>Delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"187\"/>\n        <source>Value</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerspice.cpp\" line=\"190\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTCL</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"292\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"295\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"298\"/>\n        <source>Comment line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"301\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"304\"/>\n        <source>Quoted keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"307\"/>\n        <source>Quoted string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"310\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"313\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"316\"/>\n        <source>Substitution</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"319\"/>\n        <source>Brace substitution</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"322\"/>\n        <source>Modifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"325\"/>\n        <source>Expand keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"328\"/>\n        <source>TCL keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"331\"/>\n        <source>Tk keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"334\"/>\n        <source>iTCL keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"337\"/>\n        <source>Tk command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"340\"/>\n        <source>User defined 1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"343\"/>\n        <source>User defined 2</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"346\"/>\n        <source>User defined 3</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"349\"/>\n        <source>User defined 4</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"352\"/>\n        <source>Comment box</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertcl.cpp\" line=\"355\"/>\n        <source>Comment block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerTeX</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"187\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"190\"/>\n        <source>Special</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"193\"/>\n        <source>Group</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"196\"/>\n        <source>Symbol</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"199\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexertex.cpp\" line=\"202\"/>\n        <source>Text</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVHDL</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"207\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"210\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"213\"/>\n        <source>Comment line</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"216\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"219\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"222\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"225\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"228\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"231\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"234\"/>\n        <source>Standard operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"237\"/>\n        <source>Attribute</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"240\"/>\n        <source>Standard function</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"243\"/>\n        <source>Standard package</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"246\"/>\n        <source>Standard type</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"249\"/>\n        <source>User defined</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexervhdl.cpp\" line=\"252\"/>\n        <source>Comment block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerVerilog</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"296\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"299\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"302\"/>\n        <source>Line comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"305\"/>\n        <source>Bang comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"308\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"311\"/>\n        <source>Primary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"314\"/>\n        <source>String</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"317\"/>\n        <source>Secondary keywords and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"320\"/>\n        <source>System task</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"323\"/>\n        <source>Preprocessor block</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"326\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"329\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"332\"/>\n        <source>Unclosed string</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"335\"/>\n        <source>User defined tasks and identifiers</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"338\"/>\n        <source>Keyword comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"341\"/>\n        <source>Inactive keyword comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"344\"/>\n        <source>Input port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"347\"/>\n        <source>Inactive input port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"350\"/>\n        <source>Output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"353\"/>\n        <source>Inactive output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"356\"/>\n        <source>Input/output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"359\"/>\n        <source>Inactive input/output port declaration</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"362\"/>\n        <source>Port connection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexerverilog.cpp\" line=\"365\"/>\n        <source>Inactive port connection</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciLexerYAML</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"170\"/>\n        <source>Default</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"173\"/>\n        <source>Comment</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"176\"/>\n        <source>Identifier</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"179\"/>\n        <source>Keyword</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"182\"/>\n        <source>Number</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"185\"/>\n        <source>Reference</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"188\"/>\n        <source>Document delimiter</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"191\"/>\n        <source>Text block marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"194\"/>\n        <source>Syntax error marker</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qscilexeryaml.cpp\" line=\"197\"/>\n        <source>Operator</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>QsciScintilla</name>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4414\"/>\n        <source>&amp;Undo</source>\n        <translation type=\"unfinished\">&amp;撤消</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4418\"/>\n        <source>&amp;Redo</source>\n        <translation type=\"unfinished\">&amp;重做</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4424\"/>\n        <source>Cu&amp;t</source>\n        <translation type=\"unfinished\">&amp;切</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4429\"/>\n        <source>&amp;Copy</source>\n        <translation type=\"unfinished\">&amp;复制</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4435\"/>\n        <source>&amp;Paste</source>\n        <translation type=\"unfinished\">&amp;糊</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4439\"/>\n        <source>Delete</source>\n        <translation type=\"unfinished\">删除</translation>\n    </message>\n    <message>\n        <location filename=\"../3rdpart/qscintilla/Qt4Qt5/qsciscintilla.cpp\" line=\"4446\"/>\n        <source>Select All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>TemplatesDownloadSelector</name>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"14\"/>\n        <source>Update project templates</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"22\"/>\n        <source>All</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"47\"/>\n        <source>Available updates:</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"59\"/>\n        <source>xx new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"82\"/>\n        <source>xx updated</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.ui\" line=\"109\"/>\n        <source>Download selected</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"229\"/>\n        <source>%1 new</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"234\"/>\n        <source>%1 updated</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"361\"/>\n        <source>Error</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../templatesdownloadselector.cpp\" line=\"361\"/>\n        <source>Error creating %1</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n<context>\n    <name>ToolManager</name>\n    <message>\n        <location filename=\"../toolmanager.ui\" line=\"14\"/>\n        <source>Tool Manager</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../toolmanager.cpp\" line=\"37\"/>\n        <source>Name</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../toolmanager.cpp\" line=\"37\"/>\n        <source>Command</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../toolmanager.cpp\" line=\"117\"/>\n        <source>&lt;tr&gt;&lt;td&gt;%1&lt;/td&gt;&lt;td&gt;%2&lt;/td&gt;&lt;/tr&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n    <message>\n        <location filename=\"../toolmanager.cpp\" line=\"118\"/>\n        <source>&lt;html&gt;&lt;body&gt;&lt;h2&gt;&lt;/h2&gt;&lt;p&gt;&lt;table&gt;&lt;tr&gt;&lt;th&gt;Variable&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;&lt;/tr&gt;%1&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;</source>\n        <translation type=\"unfinished\"></translation>\n    </message>\n</context>\n</TS>\n"
  },
  {
    "path": "old/ide.pro",
    "content": "#-------------------------------------------------\n#\n# Project created by QtCreator 2014-06-29T17:36:01\n#\n#-------------------------------------------------\n\nQT       += core gui widgets concurrent network svg xml\n\nCONFIG += c++11\n\nDESTDIR = ../build\n\nTARGET = embedded-ide\nTEMPLATE = app\n\nQSCINTILLA_SRC_DIR=3rdpart/qscintilla/\ninclude(3rdpart/qscintilla/qscintilla.pri)\ninclude(3rdpart/astyle/astyle.pri)\ninclude(3rdpart/gdbdebugger/gdbdebugger.pri)\ninclude(3rdpart/qtc_gdbmi/qtc_gdbmi.pri)\ninclude(3rdpart/QHexEdit/qhexedit.pri)\n\nSOURCES += \\\n    main.cpp \\\n    mainwindow.cpp \\\n    documentarea.cpp \\\n    codeeditor.cpp \\\n    projectnewdialog.cpp \\\n    targetupdatediscover.cpp \\\n    projetfromtemplate.cpp \\\n    projectexporter.cpp \\\n    configdialog.cpp \\\n    aboutdialog.cpp \\\n    projecticonprovider.cpp \\\n    makefileinfo.cpp \\\n    clangcodecontext.cpp \\\n    etags.cpp \\\n    projectview.cpp \\\n    filedownloader.cpp \\\n    version.cpp \\\n    loggerwidget.cpp \\\n    taglist.cpp \\\n    mapviewer.cpp \\\n    dialogconfigworkspace.cpp \\\n    mainmenuwidget.cpp \\\n    formfindreplace.cpp \\\n    findlineedit.cpp \\\n    toolmanager.cpp \\\n    appconfig.cpp \\\n    passwordpromtdialog.cpp \\\n    templatedownloader.cpp \\\n    templatesdownloadselector.cpp \\\n    filepropertiesdialog.cpp \\\n    findinfilesdialog.cpp \\\n    debugui.cpp \\\n    gdbstartdialog.cpp \\\n    codetemplate.cpp \\\n    componentsdialog.cpp \\\n    componentitemwidget.cpp \\\n    combodocumentview.cpp \\\n    bannerwidget.cpp\n\nINCLUDEPATH += inc\n\nHEADERS  += \\\n    mainwindow.h \\\n    documentarea.h \\\n    codeeditor.h \\\n    projectnewdialog.h \\\n    projetfromtemplate.h \\\n    projectexporter.h \\\n    configdialog.h \\\n    aboutdialog.h \\\n    projecticonprovider.h \\\n    makefileinfo.h \\\n    clangcodecontext.h \\\n    etags.h \\\n    projectview.h \\\n    filedownloader.h \\\n    version.h \\\n    targetupdatediscover.h \\\n    loggerwidget.h \\\n    taglist.h \\\n    mapviewer.h \\\n    dialogconfigworkspace.h \\\n    mainmenuwidget.h \\\n    formfindreplace.h \\\n    findlineedit.h \\\n    toolmanager.h \\\n    appconfig.h \\\n    passwordpromtdialog.h \\\n    templatedownloader.h \\\n    templatesdownloadselector.h \\\n    filepropertiesdialog.h \\\n    findinfilesdialog.h \\\n    debugui.h \\\n    gdbstartdialog.h \\\n    codetemplate.h \\\n    componentsdialog.h \\\n    componentitemwidget.h \\\n    combodocumentview.h \\\n    bannerwidget.h\n\nFORMS += \\\n    mainwindow.ui \\\n    projectnewdialog.ui \\\n    configdialog.ui \\\n    aboutdialog.ui \\\n    projectview.ui \\\n    mapviewer.ui \\\n    dialogconfigworkspace.ui \\\n    mainmenuwidget.ui \\\n    formfindreplace.ui \\\n    toolmanager.ui \\\n    passwordpromtdialog.ui \\\n    templatesdownloadselector.ui \\\n    filepropertiesdialog.ui \\\n    findinfilesdialog.ui \\\n    debugui.ui \\\n    gdbstartdialog.ui \\\n    componentsdialog.ui \\\n    componentitemwidget.ui \\\n    bannerwidget.ui\n\nRESOURCES += resources/resources.qrc\n\nwin32: RC_ICONS = resources/images/embedded-ide.ico\n\n#######################################\n#i18n\n#######################################\nqtPrepareTool(LUPDATE, lupdate)\nqtPrepareTool(LRELEASE, lrelease)\n\n### FIXIT:\nLANGUAGES = es zh\ndefineReplace(prependAll) {\n    for(a,$$1):result = $$result $$2$${a}$$3\n    return($$result)\n}\nTRANSLATIONS = $$prependAll(LANGUAGES, $$PWD/i18n/, .ts)\n\n## FIXME(denisacostaq@gmail.com): this invoke the build always becuase the qm\n## files are included as resouces, make it depend on \"all\" target\n## ts-all.deppends = all not work\n#ts-all.commands = cd $$PWD && $$LUPDATE $$PWD/ide.pro && $$LRELEASE $$PWD/ide.pro\n#QMAKE_EXTRA_TARGETS ''= ts-all\n#PRE_TARGETDEPS += ts-all\n\n#TRANSLATIONS = i18n/es.ts \\\n#               i18n/zh.ts\n\nTRANSLATIONS_FILES =\nqtPrepareTool(LRELEASE, lrelease)\nfor(tsfile, TRANSLATIONS) {\n    qmfile = $$shadowed($$tsfile)\n    qmfile ~= s,.ts$,.qm,\n    qmdir = $$dirname(qmfile)\n    !exists($$qmdir) {\n        mkpath($$qmdir)|error(\"Aborting.\")\n    }\n    command = $$LRELEASE -removeidentical $$tsfile -qm $$qmfile\n    system($$command)|error(\"Failed to run: $$command\")\n    TRANSLATIONS_FILES''= $$qmfile\n}\n\nunix {\n    QMAKE_LFLAGS_RELEASE += -static-libstdc++ -static-libgcc\n    QMAKE_LFLAGS_DEBUG += -static-libstdc++ -static-libgcc\n    isEmpty(PREFIX) {\n        PREFIX = /usr\n    }\n\n    target.path = $$PREFIX/bin\n\n    desktopfile.files = embedded-ide.desktop\n    desktopfile.path = $$PREFIX/share/applications\n\n    iconfiles.files = resources/images/embedded-ide.svg resources/images/embedded-ide.png\n    iconfiles.path = $$PREFIX/share/icons/default/256x256/apps/\n\n    scripts.path = $$PREFIX/bin\n    scripts.files = skeleton/desktop-integration.sh skeleton/ftdi-tools.sh\n\n    hardconf.path = $$PREFIX/share/embedded-ide\n    hardconf.files = skeleton/embedded-ide.hardconf\n\n    INSTALLS += desktopfile\n    INSTALLS += iconfiles\n    INSTALLS += scripts\n    INSTALLS += hardconf\n    INSTALLS += target\n}\n"
  },
  {
    "path": "old/loggerwidget.cpp",
    "content": "#include \"appconfig.h\"\n#include \"loggerwidget.h\"\n\n#include <QProcess>\n#include <QTextBrowser>\n#include <QHBoxLayout>\n#include <QVBoxLayout>\n#include <QToolButton>\n#include <QRegularExpression>\n#include <QUrlQuery>\n#include <QTimer>\n\n#include <QtDebug>\n\n#ifdef Q_OS_WIN\n#include <windows.h>\n\n#include <tlhelp32.h>\n\nstruct ProcessInfo_t {\n    long pid;\n    long ppid;\n    QString comm;\n};\n\nQList<ProcessInfo_t> GetRawProcessList() {\n    QList<ProcessInfo_t> process_info;\n    // Fetch the PID and PPIDs\n    PROCESSENTRY32 process_entry;\n    HANDLE snapshot_handle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);\n    if (snapshot_handle == NULL) {\n        qDebug() << \"CreateToolhelp32Snapshot fail\";\n        return process_info;\n    }\n    process_entry.dwSize = sizeof(PROCESSENTRY32);\n    if (Process32First(snapshot_handle, &process_entry)) {\n        do {\n            if (process_entry.th32ProcessID != 0) {\n                ProcessInfo_t pi;\n                pi.pid = static_cast<long>(process_entry.th32ProcessID);\n                pi.ppid = static_cast<long>(process_entry.th32ParentProcessID);\n                pi.comm = QString::fromWCharArray(process_entry.szExeFile);\n                process_info.append(pi);\n            }\n        } while (Process32Next(snapshot_handle, &process_entry));\n    } else\n        qDebug() << \"Process32First fail\";\n    CloseHandle(snapshot_handle);\n    return process_info;\n}\n\n#elif defined(Q_OS_UNIX)\n#include <signal.h>\n#endif\n\nstruct LoggerWidget::priv_t {\n    QProcess *proc;\n    QTextBrowser *view;\n\n    void decode(const QString &text, QColor color);\n\n    void addText(const QString &text, QColor color) {\n        QTextCursor c = view->textCursor();\n        c.movePosition(QTextCursor::End);\n        c.insertHtml(QString(\"<span style=\\\"color: %2\\\">%1</span>\")\n                     .arg(text)\n                     .arg(color.name()));\n        view->setTextCursor(c);\n    }\n};\n\nstatic QString mkUrl(const QString& p, const QString& x, const QString& y) {\n    return QString(\"file:%1?x=%2&y=%3\").arg(p).arg(x).arg(y.toInt() - 1);\n}\n\nstatic QString consoleMarkError(const QString& s) {\n    QString str(s);\n    QRegularExpression re(R\"(^(.+?):(\\d+):(\\d+):(.+?):(.+?)$)\");\n    re.setPatternOptions(QRegularExpression::MultilineOption);\n    QRegularExpressionMatchIterator it = re.globalMatch(s);\n    while(it.hasNext()) {\n        QRegularExpressionMatch m = it.next();\n        QString text = m.captured(0);\n        QString path = m.captured(1);\n        QString line = m.captured(2);\n        QString col = m.captured(3);\n        QString url = mkUrl(path, line, col);\n        str.replace(text, QString(\"<a href=\\\"%1\\\">%2</a>\").arg(url).arg(text));\n    }\n    return str;\n}\n\nstatic QString consoleToHtml(const QString& s) {\n    return consoleMarkError(QString(s)\n            .replace(\"\\t\", \"&nbsp;\")\n            .replace(\" \", \"&nbsp;\"))\n            .replace(\"\\r\\n\", \"<br>\")\n            .replace(\"\\n\", \"<br>\");\n}\n\nLoggerWidget::LoggerWidget(QWidget *parent) :\n    QWidget(parent), d_ptr(new LoggerWidget::priv_t)\n{\n    auto hlayout = new QHBoxLayout();\n    auto vlayout = new QVBoxLayout();\n    auto clearConsole = new QToolButton(this);\n    auto killProc = new QToolButton(this);\n    auto view = new QTextBrowser(this);\n    auto proc = new QProcess(this);\n    QSize iconSize(32, 32);\n\n    clearConsole->setIcon(QIcon(\"://images/actions/edit-clear.svg\"));\n    killProc->setIcon(QIcon(\"://images/actions/media-playback-stop.svg\"));\n    clearConsole->setIconSize(iconSize);\n    killProc->setIconSize(iconSize);\n    killProc->setEnabled(false);\n    view->setWordWrapMode(QTextOption::NoWrap);\n\n    connect(clearConsole, &QToolButton::clicked, [this]() {\n        clearText();\n    });\n    connect(killProc, &QToolButton::clicked, [this]() {\n#ifdef Q_OS_UNIX\n        QProcess *psProc = new QProcess(this);\n        connect(psProc, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),\n                [this, psProc](int){\n            QList<int> childPid;\n            QString out = psProc->readAllStandardOutput();\n            QRegularExpression re(R\"((\\d+)\\s+(\\d+)\\s+(.*))\");\n            auto mi = re.globalMatch(out);\n            while(mi.hasNext()) {\n                auto m = mi.next();\n                int pid = m.captured(1).toInt();\n                int ppid = m.captured(2).toInt();\n                QString comm = m.captured(3);\n                // qDebug() << \"pid\" << pid << \"ppid\" << ppid << comm;\n                if (ppid == d_ptr->proc->processId()) {\n                    qDebug() << comm << \"parent for\" << d_ptr->proc->processId();\n                    childPid.append(pid);\n                } else if (childPid.contains(ppid)) {\n                    qDebug() << comm << \"child of child\";\n                    childPid.append(pid);\n                }\n            }\n            qDebug() << \"child proc\" << childPid;\n            d_ptr->proc->terminate();\n            for(auto a: childPid)\n                kill(a, SIGQUIT);\n            QTimer::singleShot(1500, [this, childPid](){\n                if (d_ptr->proc->state() == QProcess::Running) {\n                    qDebug() << \"killing owner\";\n                    d_ptr->proc->kill();\n                    qDebug() << \"killing child\";\n                    for(auto a: childPid)\n                        kill(a, SIGKILL);\n                }\n            });\n            psProc->deleteLater();\n        });\n        psProc->start(\"ps -axo pid,ppid,comm\");\n#elif defined(Q_OS_WIN)\n        auto list = GetRawProcessList();\n        QList<int> childPid;\n        for(const auto& pinfo: list) {\n            if (pinfo.ppid == d_ptr->proc->processId()) {\n                qDebug() << pinfo.comm << \"parent for\" << d_ptr->proc->processId();\n                childPid.append(pinfo.pid);\n            } else if (childPid.contains(pinfo.ppid)) {\n                qDebug() << pinfo.comm << \"child of child\";\n                childPid.append(pinfo.pid);\n            }\n        }\n        qDebug() << \"child proc\" << childPid;\n        d_ptr->proc->terminate();\n        for(auto pid: childPid) {\n            auto h = OpenProcess(PROCESS_ALL_ACCESS, false, static_cast<DWORD>(pid));\n            TerminateProcess(h, 1);\n            CloseHandle(h);\n        }\n        QTimer::singleShot(1500, [this, childPid](){\n            if (d_ptr->proc->state() == QProcess::Running) {\n                qDebug() << \"killing owner\";\n                d_ptr->proc->kill();\n            }\n        });\n#else\n        d_ptr->proc->terminate();\n#endif\n#if 0\n        QTimer::singleShot(1500, [this](){\n            if (d_ptr->proc->state() != QProcess::NotRunning) {\n                d_ptr->addText(\"Killing process...\", Qt::red);\n                d_ptr->proc->kill();\n            }\n        });\n#endif\n    });\n\n    view->setOpenExternalLinks(false);\n    view->setOpenLinks(false);\n    connect(view, &QTextBrowser::anchorClicked, [this](const QUrl& url) {\n        QUrlQuery q(url.query());\n        int row = q.queryItemValue(\"x\").toInt();\n        int col = q.queryItemValue(\"y\").toInt();\n        emit openEditorIn(url.toLocalFile(), col, row);\n    });\n\n    hlayout->setContentsMargins(1, 1, 1, 1);\n    hlayout->setSpacing(1);\n    hlayout->addWidget(view);\n    vlayout->addWidget(clearConsole);\n    vlayout->addWidget(killProc);\n    vlayout->addStretch(100);\n    hlayout->addLayout(vlayout);\n    setLayout(hlayout);\n\n    LoggerWidget::priv_t *d = d_ptr;\n    connect(proc, &QProcess::readyReadStandardOutput, [this] () {\n        QByteArray data = d_ptr->proc->readAllStandardOutput();\n        d_ptr->decode(QString::fromLocal8Bit(data), Qt::blue);\n    });\n    connect(proc, &QProcess::readyReadStandardError, [this] () {\n        QByteArray data = d_ptr->proc->readAllStandardError();\n        d_ptr->decode(QString::fromLocal8Bit(data), Qt::red);\n    });\n    connect(proc, static_cast<void (QProcess::*)(int, QProcess::ExitStatus)>(&QProcess::finished),\n            [this](int exitCode, QProcess::ExitStatus exitStatus) {\n        emit processFinished(exitCode, exitStatus);\n    });\n    connect(proc,\n #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))\n        &QProcess::errorOccurred,\n#else\n        static_cast<void (QProcess::*)(QProcess::ProcessError)>(&QProcess::error),\n#endif\n                [this](QProcess::ProcessError error) {\n        Q_UNUSED(error);\n        d_ptr->addText(tr(\"Process ERROR: %1\").arg(d_ptr->proc->errorString()), Qt::darkRed);\n    });\n    connect(proc, &QProcess::stateChanged, [this, killProc](QProcess::ProcessState state) {\n        killProc->setEnabled(state != QProcess::NotRunning);\n    });\n    auto doConf = [view]() {\n        QFont loggerFont(AppConfig::mutableInstance().loggerFontStyle());\n        loggerFont.setPixelSize(AppConfig::mutableInstance().loggerFontSize());\n        view->document()->setDefaultFont(loggerFont);\n    };\n    connect(&AppConfig::mutableInstance(), &AppConfig::configChanged, doConf);\n    doConf();\n    d->proc = proc;\n    d->view = view;\n}\n\nLoggerWidget::~LoggerWidget()\n{\n    // FIXME: Prevent non terminated process to emit signals in destructor\n    d_ptr->proc->disconnect();\n    delete d_ptr;\n}\n\nLoggerWidget &LoggerWidget::setWorkingDir(const QString& dir)\n{\n    d_ptr->proc->setWorkingDirectory(dir);\n    return *this;\n}\n\nLoggerWidget &LoggerWidget::addEnv(const QStringList &extraEnv)\n{\n    return setEnv(d_ptr->proc->environment() + extraEnv);\n}\n\nLoggerWidget &LoggerWidget::setEnv(const QStringList &env)\n{\n    d_ptr->proc->setEnvironment(env);\n    return *this;\n}\n\nvoid LoggerWidget::clearText()\n{\n    d_ptr->view->clear();\n}\n\nvoid LoggerWidget::addText(const QString &text, const QColor& color)\n{\n    d_ptr->addText(consoleToHtml(text), color);\n}\n\nbool LoggerWidget::startProcess(const QString &cmd, const QStringList &args)\n{\n    LoggerWidget::priv_t *d = d_ptr;\n    if (d->proc->state() != QProcess::NotRunning)\n        return false;\n    d->view->clear();\n    d->proc->start(cmd, args);\n    return true;\n}\n\nbool LoggerWidget::startProcess(const QString &command)\n{\n    LoggerWidget::priv_t *d = d_ptr;\n    if (d->proc->state() != QProcess::NotRunning)\n        return false;\n    d->view->clear();\n    d->proc->start(command);\n    return true;\n}\n\nvoid LoggerWidget::priv_t::decode(const QString &text, QColor color)\n{\n    addText(consoleToHtml(text.toHtmlEscaped()), color);\n}\n"
  },
  {
    "path": "old/loggerwidget.h",
    "content": "#ifndef LOGGERWIDGET_H\n#define LOGGERWIDGET_H\n\n#include <QWidget>\n#include <QProcess>\n\nclass LoggerWidget : public QWidget\n{\n    Q_OBJECT\npublic:\n    explicit LoggerWidget(QWidget *parent = 0);\n    virtual ~LoggerWidget();\n\nsignals:\n    void openEditorIn(const QString& path, int line, int column);\n    void processFinished(int exitCode, QProcess::ExitStatus exitStatus);\n\npublic slots:\n    bool startProcess(const QString& cmd, const QStringList& args);\n    bool startProcess(const QString& command);\n    LoggerWidget& setWorkingDir(const QString &dir);\n    LoggerWidget& addEnv(const QStringList &extraEnv);\n    LoggerWidget& setEnv(const QStringList &env);\n    void clearText();\n    void addText(const QString& text, const QColor &color);\n\nprivate:\n    struct priv_t;\n    priv_t *d_ptr;\n};\n\n#endif // LOGGERWIDGET_H\n"
  },
  {
    "path": "old/main.cpp",
    "content": "#include \"dialogconfigworkspace.h\"\n#include \"mainwindow.h\"\n#include \"appconfig.h\"\n\n#include <QApplication>\n#include <QtDebug>\n#include <QSslSocket>\n#include <QFile>\n#include <QTranslator>\n#include <QSystemTrayIcon>\n\n#include <QDir>\n#include <QFileDialog>\n#include <QFileInfo>\n#include <QInputDialog>\n#include <QMessageBox>\n#include <configdialog.h>\n\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <QJsonArray>\n#include <QCommandLineParser>\n#include <QTimer>\n#include <QProcess>\n\n#ifdef Q_OS_LINUX\n#include <stdlib.h>\n#include <unistd.h>\n#define HARD_CONF_PATH \"../share/embedded-ide/embedded-ide.hardconf\"\n#endif\n\n#ifdef Q_OS_WIN\n#define HARD_CONF_PATH \"./embedded-ide.hardconf\"\n#endif\n\n#ifdef Q_OS_MAC\n#define HARD_CONF_PATH \"../share/embedded-ide/embedded-ide.hardconf\"\n#endif\n\nint main(int argc, char *argv[])\n{\n#ifdef Q_OS_LINUX\n    // FIXME If QT_STYLE_OVERRIDE is set, Qt plugin platform cannot work correctly\n    ::unsetenv(\"QT_STYLE_OVERRIDE\");\n#endif\n\n    QApplication a(argc, argv);\n    QCoreApplication::setOrganizationName(\"none\");\n    QCoreApplication::setOrganizationDomain(\"none.unknown.com\");\n    QCoreApplication::setApplicationName(\"embedded IDE\");\n    a.setWindowIcon(QIcon(\":/images/embedded-ide.png\"));\n\n    QCommandLineParser opt;\n    opt.addHelpOption();\n    opt.addVersionOption();\n    opt.addPositionalArgument(\"filename\", \"Makefile filename\");\n#define _(str) QCoreApplication::translate(str, \"main\")\n    opt.addOptions({\n                       { { \"e\", \"exec\" }, \"Execute stript or file\", \"execname\" }\n                   });\n#undef _\n    opt.process(a);\n\n    if (opt.isSet(\"exec\")) {\n        QString execname = opt.value(\"exec\");\n        qDebug() << \"executing\" << execname;\n        QProcess::startDetached(execname);\n        return 0;\n    }\n\n    AppConfig::mutableInstance().addFilterTextVariable(\n                \"appExecPath\", QCoreApplication::applicationDirPath);\n    AppConfig::mutableInstance().addFilterTextVariable(\n                \"appExecName\", QCoreApplication::applicationFilePath);\n\n    qDebug() << \"Support ssl \" << QSslSocket::supportsSsl() << \"\\n\"\n             << \"SSL Version: \" << QSslSocket::sslLibraryVersionString() << \"\\n\"\n             << \"SSL Build: \" << QSslSocket::sslLibraryBuildVersionString();\n\n    QTranslator tr;\n    qDebug() << \"load translations\"\n             << QLocale::system().name()\n             << tr.load(QLocale::system().name(), \":/i18n\");\n    a.installTranslator(&tr);\n\n    AppConfig::mutableInstance().load();\n    AppConfig::mutableInstance().adjustPath();\n    QFile hardConfFile(QDir(QApplication::applicationDirPath()).absoluteFilePath(HARD_CONF_PATH));\n    if (hardConfFile.open(QFile::ReadOnly)) {\n        AppConfig::mutableInstance().load();\n        auto hardConf = QJsonDocument::fromJson(hardConfFile.readAll()).object();\n        QStringList additionalPaths;\n        for (auto p: hardConf.value(\"additionalPaths\").toArray())\n            additionalPaths.append(QDir::cleanPath(AppConfig::mutableInstance()\n                                        .filterTextWithVariables(p.toString())));\n        AppConfig::mutableInstance().adjustPath(additionalPaths);\n        auto extraUrl = hardConf.value(\"templateUrl\").toString();\n        if (!extraUrl.isEmpty())\n            AppConfig::mutableInstance().setBuildTemplateUrl(extraUrl);\n        AppConfig::mutableInstance().save();\n        a.setProperty(\"hardConf\", QVariant(hardConf));\n    }\n\n    AppConfig::mutableInstance().load();\n\n    QDir projectDir = AppConfig::mutableInstance().buildDefaultProjectPath();\n    QDir wSpace(QDir::cleanPath(projectDir.absoluteFilePath(\"..\")));\n    if (!wSpace.exists()) {\n        DialogConfigWorkspace d;\n        if (d.exec() != QDialog::Accepted) {\n            return 0;\n        }\n        wSpace.setPath(d.path());\n    }\n    if (!wSpace.exists()) {\n        auto root = QDir::root();\n        if (!root.mkpath(wSpace.absolutePath())) {\n            QMessageBox::critical(nullptr,\n                                  a.tr(\"Error\"),\n                                  a.tr(\"Error creating directory %1\")\n                                  .arg(wSpace.absolutePath()));\n            return 0;\n        }\n    }\n\n    MainWindow w;\n    w.show();\n\n    a.setStyleSheet([]() -> QString {\n                        QFile f(\":/style.css\");\n                        return f.open(QFile::ReadOnly)? f.readAll() : QString();\n                    }());\n\n    if (!QSystemTrayIcon::isSystemTrayAvailable()) {\n      QMessageBox::critical(\n          nullptr, QObject::tr(\"Desktop support\"),\n          QCoreApplication::applicationName() +\n              QObject::tr(\" can not detect any system tray on this \"\n                          \"desktop, notify this to developers.\"));\n    }\n\n    if (!opt.positionalArguments().isEmpty()) {\n        QString path = opt.positionalArguments().first();\n        QTimer::singleShot(0, [path, &w]() { w.openProject(path); });\n    }\n\n    return a.exec();\n}\n"
  },
  {
    "path": "old/mainmenuwidget.cpp",
    "content": "#include \"mainmenuwidget.h\"\n#include \"ui_mainmenuwidget.h\"\n\n#include <QStandardItemModel>\n#include <QDir>\n\nMainMenuWidget::MainMenuWidget(QWidget *parent) :\n    QWidget(parent),\n    ui(new Ui::MainMenuWidget)\n{\n    ui->setupUi(this);\n    ui->listView->setModel(model = new QStandardItemModel(this));\n    connect(ui->toolButton_newProject, SIGNAL(clicked()), this, SIGNAL(projectNew()));\n    connect(ui->toolButton_openProject, SIGNAL(clicked()), this, SIGNAL(projectOpen()));\n    connect(ui->toolButton_closeProject, SIGNAL(clicked()), this, SIGNAL(projectClose()));\n    connect(ui->toolButton_configure, SIGNAL(clicked()), this, SIGNAL(configure()));\n    connect(ui->toolButton_help, SIGNAL(clicked()), this, SIGNAL(help()));\n    // connect(ui->toolButton_exit, SIGNAL(clicked()), this, SIGNAL(exit()));\n}\n\nMainMenuWidget::~MainMenuWidget()\n{\n    delete ui;\n}\n\nvoid MainMenuWidget::setProjectList(const QFileInfoList &list)\n{\n    model->clear();\n    m_projectList = list;\n    for(const auto& info: m_projectList) {\n        if (info.exists()) {\n            QString name = QFileInfo(QDir(info.path()).path()).fileName();\n            //QString path = info.path();\n            //QStringList pathPart = path.split(QDir::separator());\n            //QString name = pathPart.last();\n            auto item = new QStandardItem(name);\n            item->setToolTip(info.absolutePath());\n            item->setData(QVariant::fromValue(info), Qt::UserRole);\n            item->setIcon(QIcon(\"://images/mimetypes/text-x-makefile.svg\"));\n            model->appendRow(item);\n        }\n    }\n}\n\nvoid MainMenuWidget::on_listView_clicked(const QModelIndex &index)\n{\n    QStandardItem *item = model->itemFromIndex(index);\n    QFileInfo info = item->data(Qt::UserRole).value<QFileInfo>();\n    emit projectOpenAs(info);\n}\n"
  },
  {
    "path": "old/mainmenuwidget.h",
    "content": "#ifndef MAINMENUWIDGET_H\n#define MAINMENUWIDGET_H\n\n#include <QWidget>\n#include <QFileInfo>\n#include <QList>\n\nclass QStandardItemModel;\n\nnamespace Ui {\nclass MainMenuWidget;\n}\n\nclass MainMenuWidget : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    explicit MainMenuWidget(QWidget *parent = 0);\n    ~MainMenuWidget();\n\n    void setProjectList(const QFileInfoList& list);\n    QFileInfoList projectList() const { return m_projectList; }\n\nsignals:\n    void projectNew();\n    void projectOpen();\n    void projectOpenAs(const QFileInfo& path);\n    void projectClose();\n    void configure();\n    void help();\n    void exit();\n\nprivate slots:\n    void on_listView_clicked(const QModelIndex &index);\n\nprivate:\n    Ui::MainMenuWidget *ui;\n    QStandardItemModel *model;\n    QFileInfoList m_projectList;\n};\n\n#endif // MAINMENUWIDGET_H\n"
  },
  {
    "path": "old/mainmenuwidget.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MainMenuWidget</class>\n <widget class=\"QWidget\" name=\"MainMenuWidget\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>324</width>\n    <height>283</height>\n   </rect>\n  </property>\n  <layout class=\"QGridLayout\" name=\"gridLayout\">\n   <property name=\"leftMargin\">\n    <number>4</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>4</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>4</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>4</number>\n   </property>\n   <property name=\"horizontalSpacing\">\n    <number>4</number>\n   </property>\n   <property name=\"verticalSpacing\">\n    <number>0</number>\n   </property>\n   <item row=\"0\" column=\"0\">\n    <widget class=\"QToolButton\" name=\"toolButton_newProject\">\n     <property name=\"toolTip\">\n      <string>New Project</string>\n     </property>\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/document-new.svg</normaloff>:/images/document-new.svg</iconset>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>48</width>\n       <height>48</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n   <item row=\"0\" column=\"1\" rowspan=\"5\">\n    <widget class=\"QListView\" name=\"listView\">\n     <property name=\"editTriggers\">\n      <set>QAbstractItemView::NoEditTriggers</set>\n     </property>\n     <property name=\"alternatingRowColors\">\n      <bool>true</bool>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>22</width>\n       <height>22</height>\n      </size>\n     </property>\n     <property name=\"textElideMode\">\n      <enum>Qt::ElideMiddle</enum>\n     </property>\n    </widget>\n   </item>\n   <item row=\"1\" column=\"0\">\n    <widget class=\"QToolButton\" name=\"toolButton_openProject\">\n     <property name=\"toolTip\">\n      <string>Open Project</string>\n     </property>\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/document-open.svg</normaloff>:/images/document-open.svg</iconset>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>48</width>\n       <height>48</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n   <item row=\"2\" column=\"0\">\n    <widget class=\"QToolButton\" name=\"toolButton_closeProject\">\n     <property name=\"toolTip\">\n      <string>Close current project</string>\n     </property>\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/document-close.svg</normaloff>:/images/document-close.svg</iconset>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>48</width>\n       <height>48</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n   <item row=\"3\" column=\"0\">\n    <widget class=\"QToolButton\" name=\"toolButton_configure\">\n     <property name=\"toolTip\">\n      <string>Configure</string>\n     </property>\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/configure.svg</normaloff>:/images/configure.svg</iconset>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>48</width>\n       <height>48</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n   <item row=\"4\" column=\"0\">\n    <widget class=\"QToolButton\" name=\"toolButton_help\">\n     <property name=\"toolTip\">\n      <string>Help</string>\n     </property>\n     <property name=\"icon\">\n      <iconset resource=\"../resources/resources.qrc\">\n       <normaloff>:/images/help-about.svg</normaloff>:/images/help-about.svg</iconset>\n     </property>\n     <property name=\"iconSize\">\n      <size>\n       <width>48</width>\n       <height>48</height>\n      </size>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"../resources/resources.qrc\"/>\n </resources>\n <connections/>\n <slots>\n  <signal>projectNew()</signal>\n  <signal>projectOpen()</signal>\n  <signal>projectClose()</signal>\n  <signal>configure()</signal>\n  <signal>help()</signal>\n  <signal>exit()</signal>\n </slots>\n</ui>\n"
  },
  {
    "path": "old/mainwindow.cpp",
    "content": "#include \"mainwindow.h\"\n#include \"ui_mainwindow.h\"\n\n#include \"projectexporter.h\"\n#include \"projectnewdialog.h\"\n#include \"projetfromtemplate.h\"\n#include \"configdialog.h\"\n#include \"aboutdialog.h\"\n#include \"mainmenuwidget.h\"\n#include \"appconfig.h\"\n#include \"filedownloader.h\"\n#include \"templatedownloader.h\"\n#include \"findinfilesdialog.h\"\n\n#include <QRegularExpression>\n#include <QCloseEvent>\n#include <QFileDialog>\n#include <QMessageBox>\n#include <QStatusBar>\n#include <QCheckBox>\n#include <QMenu>\n#include <QUrl>\n#include <QNetworkProxy>\n#include <QNetworkProxyFactory>\n\n\n#include <QUrlQuery>\n#include <QSettings>\n#include <QFont>\n#include <QFontInfo>\n#include <QFontDatabase>\n#include <QMimeDatabase>\n#include <QDesktopServices>\n#include <QToolButton>\n#include <QTimer>\n#include <QWidgetAction>\n#include <QSystemTrayIcon>\n#include <QFileSystemWatcher>\n#include <QShortcut>\n\n#include <functional>\n\n#include <QtDebug>\n\n#include <gdbdebugger.h>\n\nstatic QFileInfoList lastProjectsList(bool includeAllInWorkspace = true) {\n    QFileInfoList list;\n    if (includeAllInWorkspace) {\n        QDir prjDir(AppConfig::mutableInstance().buildDefaultProjectPath());\n        for(const auto& dirInfo: prjDir.entryInfoList(QDir::AllDirs|QDir::NoDotAndDotDot)) {\n            QDir dir(dirInfo.absoluteFilePath());\n            QFileInfo make(dir.absoluteFilePath(\"Makefile\"));\n            if (make.exists()) {\n                if (!list.contains(make))\n                    list.append(make);\n            }\n        }\n    }\n    QSettings sets;\n    sets.beginGroup(\"last_projects\");\n    for(const auto& k: sets.allKeys()) {\n        QFileInfo make(sets.value(k).toString());\n        if (!make.exists()) {\n            sets.remove(k);\n        }\n        if (!list.contains(make))\n            list.append(make);\n    }\n\n    return list;\n}\n\nstatic void removeFromLastProject(const QString& path) {\n    QSettings sets;\n    sets.beginGroup(\"last_projects\");\n    for(const auto& key: sets.allKeys()) {\n        if (sets.value(key) == path) {\n            sets.remove(key);\n            break;\n        }\n    }\n}\n\nMainWindow::MainWindow(QWidget *parent) :\n    QMainWindow(parent),\n    ui(new Ui::MainWindow),\n    trayIcon(new QSystemTrayIcon(this)),\n    templateDownloader(new TemplateDownloader{})\n{\n    ui->setupUi(this);\n\n    ui->centralWidget->setProjectView(ui->projectView);\n\n    trayIcon->setIcon(QIcon(\":/images/embedded-ide.svg\"));\n    {\n        auto m = new QMenu();\n        trayIcon->setContextMenu(m);\n        auto f = [this]() {\n            templateDownloader->download();\n            trayIcon->hide();\n        };\n        auto *refreshAction = m->addAction(QIcon(\":/images/actions/view-refresh.svg\"), tr(\"Update\"));\n        connect(refreshAction, &QAction::triggered, f);\n        connect(trayIcon, &QSystemTrayIcon::messageClicked, f);\n        connect(templateDownloader, &TemplateDownloader::newUpdatesAvailables, [this]() {\n            trayIcon->show();\n            trayIcon->showMessage(\n                        tr(\"Updates available\"),\n                        tr(\"New project templates available, click here for details\"),\n                        QSystemTrayIcon::MessageIcon(QSystemTrayIcon::Information), 15000);\n        });\n    }\n    connect(templateDownloader, &TemplateDownloader::finished, [this]() {\n        templateDownloader->setSilent(false);\n    });\n\n    setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);\n    ui->dockWidget->setTitleBarWidget(new QWidget(this));\n    ui->projectDock->setTitleBarWidget(new QWidget(this));\n    ui->debugDocker->setTitleBarWidget(new QWidget(this));\n    connect(ui->loggerCompiler, &LoggerWidget::openEditorIn, this, &MainWindow::loggerOpenPath);\n    connect(ui->loggerCompiler, &LoggerWidget::processFinished, [this](int exitCode, QProcess::ExitStatus exitStatus){\n        Q_UNUSED(exitCode);\n        Q_UNUSED(exitStatus);\n        ui->projectView->setTargetsViewOn(true);\n    });\n    connect(ui->projectView, &ProjectView::startBuild,\n            [this](const QString &target) {\n              if (this->goToBuildStage()) {\n                QString projectPath =\n                    ui->projectView->projectPath().absolutePath();\n                QStringList args;\n                args << \"-f\" << ui->projectView->project() << target;\n                ui->projectView->setTargetsViewOn(false);\n                ui->loggerCompiler->setWorkingDir(projectPath)\n                    .startProcess(\"make\", args);\n              }\n            });\n    connect(ui->projectView, &ProjectView::execTool, [this](const QString& command) {\n        QString projectPath = ui->projectView->projectPath().absolutePath();\n        ui->loggerCompiler->setWorkingDir(projectPath).startProcess(command);\n    });\n\n    ui->debugUI->setDocumentArea(ui->centralWidget);\n    ui->debugUI->setProjectView(ui->projectView);\n    ui->debugUI->setLoggers(ui->loggerDebugger, ui->loggerApplication);\n    connect(ui->projectView, &ProjectView::debugChange, [this](bool enabled){\n        if (enabled)\n            ui->debugUI->startDebug();\n        else\n            ui->debugUI->stopDebug();\n    });\n\n    connect(GdbDebugger::instance(), &GdbDebugger::debugStarted, [this](){\n        ui->debugDocker->setVisible(true);\n        ui->projectView->debugStarted();\n    });\n    connect(GdbDebugger::instance(), &GdbDebugger::debugStoped, [this](){\n        ui->projectView->debugStoped();\n        ui->debugDocker->setVisible(false);\n    });\n\n    auto mainMenu = new QMenu(this);\n    auto wa = new QWidgetAction(mainMenu);\n    auto menuWidget = new MainMenuWidget(mainMenu);\n    menuWidget->setProjectList(lastProjectsList());\n    wa->setDefaultWidget(menuWidget);\n    mainMenu->addAction(wa);\n    connect(menuWidget, SIGNAL(projectNew()), this, SLOT(projectNew()));\n    connect(menuWidget, SIGNAL(projectOpen()), this, SLOT(projectOpen()));\n    connect(menuWidget, &MainMenuWidget::projectOpenAs, [this, mainMenu, menuWidget] (const QFileInfo& info) {\n        mainMenu->hide();\n        QString name = info.absoluteFilePath();\n        if (QFileInfo(name).exists()) {\n            ui->projectView->openProject(name);\n            QString name = ui->projectView->projectPath().dirName();\n            QString path = ui->projectView->project();\n            QSettings sets;\n            sets.beginGroup(\"last_projects\");\n            sets.setValue(name, path);\n            sets.sync();\n        } else {\n            QMessageBox::critical(this, tr(\"Open Project\"), tr(\"Cannot open %1\").arg(name));\n            removeFromLastProject(name);\n            menuWidget->setProjectList(lastProjectsList());\n        }\n    });\n\n    auto projectDirWatch = new QFileSystemWatcher(this);\n    projectDirWatch->addPath(AppConfig::mutableInstance().buildDefaultProjectPath());\n    connect(projectDirWatch, &QFileSystemWatcher::directoryChanged, [menuWidget](){\n        menuWidget->setProjectList(lastProjectsList());\n    });\n    connect(ui->projectView, &ProjectView::projectOpened, [menuWidget]() {\n        menuWidget->setProjectList(lastProjectsList());\n    });\n    connect(menuWidget, SIGNAL(projectClose()), this, SLOT(projectClose()));\n    connect(menuWidget, SIGNAL(configure()), this, SLOT(configureShow()));\n    connect(&(AppConfig::mutableInstance()), SIGNAL(configChanged(AppConfig*)),\n            this, SLOT(configChanged(AppConfig*)));\n    connect(menuWidget, SIGNAL(help()), this, SLOT(helpShow()));\n    connect(menuWidget, SIGNAL(exit()), this, SLOT(close()));\n\n    connect(menuWidget, SIGNAL(projectNew()), mainMenu, SLOT(hide()));\n    connect(menuWidget, SIGNAL(projectOpen()), mainMenu, SLOT(hide()));\n    connect(menuWidget, SIGNAL(projectClose()), mainMenu, SLOT(hide()));\n    connect(menuWidget, SIGNAL(configure()), mainMenu, SLOT(hide()));\n    connect(menuWidget, SIGNAL(help()), mainMenu, SLOT(hide()));\n    connect(menuWidget, SIGNAL(exit()), mainMenu, SLOT(hide()));\n    ui->projectView->setMainMenu(mainMenu);\n\n    ui->debugDocker->hide();\n\n#define SHCUT(shortcut, method) do { \\\n        auto tmp = new QShortcut(QKeySequence(shortcut), this); \\\n        tmp->setContext(Qt::ApplicationShortcut); \\\n        connect(tmp, &QShortcut::activated, this, method); \\\n    } while(0)\n    SHCUT(\"CTRL+N\", &MainWindow::projectNew);\n    SHCUT(\"CTRL+O\", &MainWindow::projectOpen);\n    SHCUT(\"CTRL+SHIFT+Q\", &MainWindow::projectClose);\n    SHCUT(\"CTRL+SHIFT+F\", &MainWindow::on_projectView_openFindDialog);\n    SHCUT(\"CTRL+E\", &MainWindow::projectExport);\n    SHCUT(\"CTRL+SHIFT+P\", &MainWindow::configureShow);\n    SHCUT(\"CTRL+H\", &MainWindow::helpShow);\n#undef SHCUT\n\n    configChanged(&AppConfig::mutableInstance());\n    statusBar()->showMessage(tr(\"Application ready...\"), 1500);\n    statusBar()->hide();\n    for(auto *b: findChildren<QToolButton*>())\n        b->setAutoRaise(true);\n\n}\n\nMainWindow::~MainWindow()\n{\n    delete ui;\n}\n\nvoid MainWindow::openProject(const QString &makefilePath)\n{\n    ui->projectView->openProject(makefilePath);\n}\n\nvoid MainWindow::closeEvent(QCloseEvent *e)\n{\n    if (ui->centralWidget->hasUnsavedChanges()) {\n        ui->centralWidget->closeAll();\n        if (!ui->centralWidget->hasUnsavedChanges())\n            e->accept();\n        else\n            e->ignore();\n    } else\n        e->accept();\n}\n\nvoid MainWindow::actionNewFromTemplateEnd(const QString &project, const QString &error)\n{\n    if (error.isEmpty()) {\n        ui->projectView->openProject(project + QDir::separator() + \"Makefile\");\n    } else\n        QMessageBox::critical(this, tr(\"Error\"), error);\n}\n\nvoid MainWindow::actionExportFinish(const QString &s)\n{\n    QString dialogTitle(tr(\"Export\"));\n    if (s.isEmpty())\n        QMessageBox::information(this, dialogTitle, tr(\"Success\"));\n    else\n        QMessageBox::warning(this, dialogTitle, s);\n}\n\nvoid MainWindow::on_projectView_fileOpen(const QString &file)\n{\n    qDebug() << file;\n    QFileInfo inf(file);\n    QMimeType m = QMimeDatabase().mimeTypeForFile(file, QMimeDatabase::MatchDefault);\n    if (inf.suffix().toLower() == \"map\") {\n        ui->centralWidget->mapOpen(file);\n    } else if (m.inherits(\"text/plain\") || (inf.size() == 0)) {\n        ui->centralWidget->fileOpen(file);\n    } else {\n        ui->centralWidget->binOpen(file);\n    }\n}\n\nvoid MainWindow::projectNew()\n{\n    ProjectNewDialog w(this);\n    switch(w.exec()) {\n    case QDialog::Accepted:\n        (new ProjetFromTemplate(w.projectPath(), w.templateText(),\n                                this, SLOT(actionNewFromTemplateEnd(QString,QString))))->start();\n        break;\n    default:\n        break;\n    }\n}\n\nvoid MainWindow::projectOpen()\n{\n    QString name = QFileDialog::\n            getOpenFileName(this,\n                            tr(\"Open Project\"),\n                            \"Makefile\",\n                            tr(\"Makefile (Makefile);;\"\n                               \"Make (*.mk);;\"\n                               \"All Files (*)\")\n                            );\n    if (!name.isEmpty()) {\n            ui->projectView->openProject(name);\n    }\n}\n\nvoid MainWindow::openProject()\n{\n    QAction *a = qobject_cast<QAction*>(sender());\n    if (a) {\n        QString name = a->data().toString();\n        if (QFileInfo(name).exists()) {\n            ui->projectView->openProject(name);\n        } else {\n            QMessageBox::critical(this, tr(\"Open Project\"), tr(\"Cannot open %1\").arg(a->text()));\n            removeFromLastProject(name);\n        }\n    }\n}\n\nvoid MainWindow::projectExport()\n{\n    ui->projectView->doExport();\n}\n\nvoid MainWindow::helpShow()\n{\n    AboutDialog(this).exec();\n}\n\nvoid MainWindow::projectClose()\n{\n    ui->projectView->closeProject();\n    ui->centralWidget->closeAll();\n    ui->loggerCompiler->clearText();\n    setWindowTitle(tr(\"Embedded IDE\"));\n}\n\nvoid MainWindow::on_projectView_projectOpened()\n{\n    setWindowTitle(tr(\"Embedded IDE %1\").arg(ui->projectView->project()));\n    QString name = ui->projectView->projectPath().dirName();\n    QString path = ui->projectView->project();\n    QSettings sets;\n    sets.beginGroup(\"last_projects\");\n    sets.setValue(name, path);\n    sets.sync();\n}\n\nvoid MainWindow::configureShow()\n{\n    ConfigDialog(this).exec();\n}\n\nvoid MainWindow::configChanged(AppConfig* config)\n{\n    ui->tabWidget->tabBar()->setVisible(config->useDevelopMode());\n    ui->tabWidget->setCurrentIndex(0);\n    QToolButton *debugButton = ui->projectView->findChild<QToolButton*>(\"toolButton_startDebug\");\n    if (debugButton)\n        debugButton->setVisible(config->useDevelopMode());\n    this->setUpProxy();\n    if (config && config->projectTmplatesAutoUpdate()) {\n        this->checkForUpdates();\n    }\n}\n\nvoid MainWindow::loggerOpenPath(const QString& path, int col, int row)\n{\n    QString file = ui->projectView->projectPath().absoluteFilePath(path);\n    qDebug() << \"Opening\" << file << row << col;\n    ui->centralWidget->fileOpen(file, row - 1, col);\n}\n\nvoid MainWindow::checkForUpdates() {\n    templateDownloader->setSilent(true);\n    templateDownloader->requestPendantDownloads();\n}\n\nbool MainWindow::event(QEvent *event)\n{\n    switch (event->type()) {\n    case QEvent::WindowActivate:\n        ui->centralWidget->setFocus();\n        break;\n    }\n    return QMainWindow::event(event);\n}\n\nbool MainWindow::goToBuildStage() {\n  static const QString saveBeforeBuildPrompt = \"behavior/savebeforebuildprompt\";\n  if (ui->centralWidget->hasUnsavedChanges()) {\n    bool promptEnabled =\n        QSettings().value(saveBeforeBuildPrompt, true).toBool();\n    if (promptEnabled) {\n      QMessageBox msgbox(\n          QMessageBox::Icon::Question, tr(\"Save files\"),\n          tr(\"Save all files before build?\"),\n          QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel);\n      QCheckBox cb(tr(\"Do not show again\"));\n      msgbox.setCheckBox(&cb);\n      msgbox.exec();\n      if (msgbox.result() == QMessageBox::StandardButton::Yes ||\n          msgbox.result() == QMessageBox::StandardButton::No) {\n        QSettings().setValue(saveBeforeBuildPrompt,\n                             !msgbox.checkBox()->isChecked());\n        if (msgbox.checkBox()->isChecked()) {\n          this->statusBar()->showMessage(tr(\"This dialog not will show again\"),\n                                         2000);\n          ConfigDialog::setEditorSaveOnAction(\n                msgbox.result() == QMessageBox::StandardButton::Yes);\n        }\n        if (msgbox.result() == QMessageBox::StandardButton::Yes) {\n          ui->centralWidget->saveAll();\n        }\n      } else {\n        return false;\n      }\n    } else {\n      if (AppConfig::mutableInstance().editorSaveOnAction()) {\n        ui->centralWidget->saveAll();\n      }\n    }\n  }\n  return true;\n}\n\nvoid MainWindow::setUpProxy() {\n  AppConfig &config = AppConfig::mutableInstance();\n  switch (config.networkProxyType()) {\n    case AppConfig::NetworkProxyType::None:\n      QNetworkProxy::setApplicationProxy(QNetworkProxy::NoProxy);\n      break;\n    case AppConfig::NetworkProxyType::System:\n      QNetworkProxyFactory::setUseSystemConfiguration(true);\n      break;\n    case AppConfig::NetworkProxyType::Custom:\n      QNetworkProxy proxy(\n          QNetworkProxy::HttpProxy, config.networkProxyHost(),\n          static_cast<quint16>(config.networkProxyPort().toInt()));\n      if (config.networkProxyUseCredentials()) {\n        proxy.setUser(config.networkProxyUsername());\n        proxy.setPassword(config.networkProxyPassword());\n      }\n      QNetworkProxy::setApplicationProxy(proxy);\n      break;\n  }\n}\n\nvoid MainWindow::on_projectView_openFindDialog()\n{\n    if (ui->projectView->project().isEmpty())\n        return;\n    auto d = new FindInFilesDialog(ui->centralWidget, ui->projectView, this);\n    d->show();\n    connect(d, &QDialog::finished, d, &QObject::deleteLater);\n}\n"
  },
  {
    "path": "old/mainwindow.h",
    "content": "#ifndef MAINWINDOW_H\n#define MAINWINDOW_H\n\n#include <QMainWindow>\n\nnamespace Ui {\nclass MainWindow;\n}\nclass AppConfig;\nclass TemplateDownloader;\nclass QSystemTrayIcon;\n\nclass MainWindow : public QMainWindow\n{\n    Q_OBJECT\n\npublic:\n    explicit MainWindow(QWidget *parent = 0);\n    ~MainWindow();\n\npublic slots:\n    void openProject(const QString& makefilePath);\n\nprotected:\n    virtual void closeEvent(QCloseEvent *e);\n\nprivate slots:\n    void actionNewFromTemplateEnd(const QString& project, const QString& error);\n\n    void actionExportFinish(const QString& s);\n\n    void on_projectView_fileOpen(const QString &);\n\n    void on_projectView_openFindDialog();\n\n    void projectNew();\n\n    void projectOpen();\n\n    void openProject();\n\n    void projectExport();\n\n    void helpShow();\n\n    void projectClose();\n\n    void on_projectView_projectOpened();\n\n    void configureShow();\n\n    void configChanged(AppConfig* config);\n\n    void loggerOpenPath(const QString &path, int col, int row);\n\n    void checkForUpdates();\n\n    bool event(QEvent *event);\n\nprivate:\n    Ui::MainWindow *ui;\n    QSystemTrayIcon *trayIcon;\n    TemplateDownloader *templateDownloader;\n\n    bool goToBuildStage();\n    void setUpProxy();\n};\n\n#endif // MAINWINDOW_H\n"
  },
  {
    "path": "old/mainwindow.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MainWindow</class>\n <widget class=\"QMainWindow\" name=\"MainWindow\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>1000</width>\n    <height>626</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Embedded IDE</string>\n  </property>\n  <property name=\"dockNestingEnabled\">\n   <bool>true</bool>\n  </property>\n  <property name=\"unifiedTitleAndToolBarOnMac\">\n   <bool>true</bool>\n  </property>\n  <widget class=\"DocumentArea\" name=\"centralWidget\"/>\n  <widget class=\"QDockWidget\" name=\"dockWidget\">\n   <property name=\"features\">\n    <set>QDockWidget::NoDockWidgetFeatures</set>\n   </property>\n   <property name=\"windowTitle\">\n    <string>&amp;Loggin</string>\n   </property>\n   <attribute name=\"dockWidgetArea\">\n    <number>8</number>\n   </attribute>\n   <widget class=\"QWidget\" name=\"loggerWidgetContainer\">\n    <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n     <property name=\"spacing\">\n      <number>0</number>\n     </property>\n     <property name=\"leftMargin\">\n      <number>0</number>\n     </property>\n     <property name=\"topMargin\">\n      <number>0</number>\n     </property>\n     <property name=\"rightMargin\">\n      <number>0</number>\n     </property>\n     <property name=\"bottomMargin\">\n      <number>2</number>\n     </property>\n     <item>\n      <widget class=\"QTabWidget\" name=\"tabWidget\">\n       <property name=\"tabPosition\">\n        <enum>QTabWidget::South</enum>\n       </property>\n       <property name=\"currentIndex\">\n        <number>0</number>\n       </property>\n       <property name=\"documentMode\">\n        <bool>true</bool>\n       </property>\n       <property name=\"tabBarAutoHide\">\n        <bool>true</bool>\n       </property>\n       <widget class=\"LoggerWidget\" name=\"loggerCompiler\">\n        <attribute name=\"title\">\n         <string>Compiler Output</string>\n        </attribute>\n       </widget>\n       <widget class=\"LoggerWidget\" name=\"loggerDebugger\">\n        <attribute name=\"title\">\n         <string>GDB Output</string>\n        </attribute>\n       </widget>\n       <widget class=\"LoggerWidget\" name=\"loggerApplication\">\n        <attribute name=\"title\">\n         <string>Application Output</string>\n        </attribute>\n       </widget>\n      </widget>\n     </item>\n    </layout>\n   </widget>\n  </widget>\n  <widget class=\"QDockWidget\" name=\"projectDock\">\n   <property name=\"features\">\n    <set>QDockWidget::NoDockWidgetFeatures</set>\n   </property>\n   <property name=\"windowTitle\">\n    <string>Pro&amp;ject</string>\n   </property>\n   <attribute name=\"dockWidgetArea\">\n    <number>1</number>\n   </attribute>\n   <widget class=\"ProjectView\" name=\"projectView\"/>\n  </widget>\n  <widget class=\"QDockWidget\" name=\"debugDocker\">\n   <property name=\"features\">\n    <set>QDockWidget::NoDockWidgetFeatures</set>\n   </property>\n   <property name=\"allowedAreas\">\n    <set>Qt::RightDockWidgetArea</set>\n   </property>\n   <attribute name=\"dockWidgetArea\">\n    <number>2</number>\n   </attribute>\n   <widget class=\"DebugUI\" name=\"debugUI\"/>\n  </widget>\n </widget>\n <layoutdefault spacing=\"6\" margin=\"11\"/>\n <customwidgets>\n  <customwidget>\n   <class>DocumentArea</class>\n   <extends>QWidget</extends>\n   <header>documentarea.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>ProjectView</class>\n   <extends>QWidget</extends>\n   <header>projectview.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>LoggerWidget</class>\n   <extends>QWidget</extends>\n   <header>loggerwidget.h</header>\n   <container>1</container>\n  </customwidget>\n  <customwidget>\n   <class>DebugUI</class>\n   <extends>QWidget</extends>\n   <header location=\"global\">debugui.h</header>\n   <container>1</container>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "old/make2compilationdb.sh",
    "content": "#!/bin/sh\nO=compile_commands.json\nLANG=C\nIFS_BK=${IFS}\nIFS=\"\n\"\nC=($(make -Bprn | grep -E '^g++.*?\\.cpp'))\nIFS=${IFS_BK}\necho \"[\" > ${O}\nfor e in \"${C[@]}\"\ndo\n\tf=$(echo $e|grep -o -E '\\S+\\.cpp')\n\techo -en \"{\\n  \\\"directory\\\": \\\"${PWD}\\\",\\n  \\\"file\\\": \\\"${f}\\\",\\n  \\\"command\\\": \\\"${e}\\\"\\n},\\n\" >> ${O}\ndone\necho \"]\" >> ${O}\n"
  },
  {
    "path": "old/makefileinfo.cpp",
    "content": "#include \"makefileinfo.h\"\n\nclass MakefileInfo_metatypeHelper_t {\npublic:\n    MakefileInfo_metatypeHelper_t() {\n        qRegisterMetaType<MakefileInfo>();\n    }\n};\n\nstatic MakefileInfo_metatypeHelper_t MakefileInfo_metatypeHelper;\n"
  },
  {
    "path": "old/makefileinfo.h",
    "content": "#ifndef MAKEFILEINFO_H\n#define MAKEFILEINFO_H\n\n#include <QMetaType>\n#include <QStringList>\n#include <QHash>\n\n#include \"etags.h\"\n\nstruct MakefileInfo {\n    ETags tags;\n    QString workingDir;\n    QStringList prefixs;\n    QHash<QString, QString> allTargets;\n    QStringList targets;\n};\n\nQ_DECLARE_METATYPE(MakefileInfo)\n\n#endif // MAKEFILEINFO_H\n\n"
  },
  {
    "path": "old/mapviewer.cpp",
    "content": "#include \"codeeditor.h\"\n#include \"mapviewer.h\"\n#include \"ui_mapviewer.h\"\n\n#ifdef __ANDROID__\n#define UINT32_MAX __UINT32_MAX__\n#else\n#include <limits>\n#endif\n\n#include <QApplication>\n#include <QFile>\n#include <QHeaderView>\n#include <QProgressBar>\n#include <QRegularExpression>\n#include <QRegularExpressionValidator>\n#include <QSortFilterProxyModel>\n#include <QStandardItemModel>\n#include <QStyledItemDelegate>\n\n#include <QtDebug>\n\nstatic const QLatin1String MEMORY_MAP_HEADER(\"Memory Configuration\");\nstatic const QLatin1String REGEX_SYM(R\"(^\\s+0x([\\da-f]+)\\s+(.+?)$)\");\nstatic const QLatin1String REGEX_MEM(R\"(^(?P<name>\\S+)\\s+)\"\n                                     R\"((?P<origin>0x[0-9a-fA-F]+)\\s+)\"\n                                     R\"((?P<length>0x[0-9a-fA-F]+)\\s+)\"\n                                     R\"((?P<attr>[xrw]+)$)\");\nstatic const QLatin1String REGEX_SEC(R\"(^(?!\\.debug|\\.comment|.*?attributes)(?P<name>\\.\\S+)\\s+)\"\n                                     R\"((?P<vma>0x[a-f0-9]+)\\s+)\"\n                                     R\"((?!0x0)(?P<size>0x[a-f0-9]+))\"\n                                     R\"((?:\\s+load address (?P<lma>0x[a-z0-9]+))?)\");\nstatic const QLatin1String REGEX_TRU(R\"(^ (\\.[a-z0-9_]+)[ \\t])\"\n                                     R\"(+0x([0-9a-f]+)[ \\t])\"\n                                     R\"(+0x([0-9a-f]+)[ \\t])\"\n                                     R\"(+(\\S+)$)\");\n\nstruct MemoryChunk {\n    QString name;\n    uint32_t vma;\n    uint32_t lma;\n    uint32_t size;\n    uint32_t pad;\n\n    bool isRelocatable() const {\n        return vma == lma;\n    }\n\n    uint32_t hi_vma() const {\n        return vma + size;\n    }\n    uint32_t hi_lma() const {\n        return lma + size;\n    }\n};\n\ninline QDebug operator<<(QDebug dbg, const MemoryChunk& chunk) {\n    dbg << chunk.name\n        << \":{ vma:\" << chunk.vma\n        << \"size:\" << chunk.size\n        << \"size:\" << chunk.lma\n        << \" }\";\n    return dbg;\n}\n\nstruct MemoryRegion {\n    QString name;\n    uint32_t base;\n    uint32_t size;\n    QString attr;\n    uint32_t used;\n    uint32_t pad;\n\n    uint32_t upper() const {\n        return base + size;\n    }\n\n    bool inRegion(const MemoryChunk& chunk) const {\n        return ((chunk.vma >= base) && (chunk.hi_vma() <= upper())) ||\n               ((chunk.lma >= base) && (chunk.hi_lma() <= upper()));\n    }\n};\n\ninline QDebug operator<<(QDebug dbg, const MemoryRegion& m) {\n    dbg << m.name\n        << \":{ base:\" << m.base\n        << \"size:\" << m.size\n        << \"attr:\" << m.attr\n        << \" }\";\n    return dbg;\n}\n\nstruct LinkerSymbol {\n    uint32_t value;\n    uint8_t pad[4];\n    QString expr;\n    LinkerSymbol(uint32_t v, QString  e) : value(v), expr(std::move(e)) { }\n};\n\nstruct TranslationUnit {\n    QString section;\n    uint32_t addr;\n    uint32_t size;\n    QString path;\n    QList<LinkerSymbol> symbols;\n\n    TranslationUnit() : addr(UINT32_MAX), size(0) { }\n\n    TranslationUnit(QString  s, uint32_t a, uint32_t z, QString  p):\n        section(std::move(s)), addr(a), size(z), path(std::move(p)) {}\n\n    bool isEmpty() const {\n        return size == 0 && symbols.isEmpty();\n    }\n\n    bool isNull() const {\n        return section.isNull() && addr == UINT32_MAX && size == 0 && path.isNull();\n    }\n};\n\nstruct Section {\n    uint32_t base;\n    uint32_t load;\n    uint32_t size;\n    uint8_t pad[4];\n    QList<TranslationUnit> translationUnits;\n\n    Section() : base(0), load(0), size(0) { translationUnits.append(TranslationUnit()); }\n\n    Section(uint32_t vma, uint32_t lma, uint32_t z) : base(vma), load(lma), size(z) {\n        translationUnits.append(TranslationUnit());\n    }\n\n    bool isRelocatable() const {\n        return base == load;\n    }\n\n    uint32_t hi_addr() const {\n        return base + size;\n    }\n\n    uint32_t hi_load() const {\n        return load + size;\n    }\n\n    bool inRegion(const MemoryRegion& r) const {\n        return (base >= r.base && base <= r.upper()) ||\n               (load >= r.base && load <= r.upper());\n    }\n};\n\nstruct MapData {\n    QList<MemoryRegion> memoryRegions;\n    QHash<QString, Section> memoryMap;\n};\n\nstatic QHash<QString, Section> parseMemoryMap(QTextStream& stream, QList<MemoryRegion> &mr) {\n    QHash<QString, Section> sectionList;\n    QRegularExpression symbolRe(REGEX_SYM, QRegularExpression::CaseInsensitiveOption);\n    QRegularExpression sectionRe(REGEX_SEC, QRegularExpression::CaseInsensitiveOption);\n    QRegularExpression truRe(REGEX_TRU, QRegularExpression::CaseInsensitiveOption);\n    auto currentSection = sectionList.insert(\"\", Section());\n    while(!stream.atEnd()) {\n        QString line = stream.readLine();\n        if (line.startsWith(\"LOAD \")) {\n            continue;\n        }\n        QRegularExpressionMatch m;\n        m = sectionRe.match(line);\n        if (m.hasMatch()) {\n            auto secName = m.captured(\"name\");\n            auto secVma = m.captured(\"vma\").remove(0, 2).toUInt(nullptr, 16);\n            auto secSize = m.captured(\"size\").remove(0, 2).toUInt(nullptr, 16);\n            auto secLma = m.lastCapturedIndex() == 4? m.captured(\"lma\").remove(0, 2).toUInt(nullptr, 16) : secVma;\n            currentSection = sectionList.insert(secName, Section{ secVma, secLma, secSize });\n            for (auto & i : mr) {\n                if (currentSection.value().inRegion(i))\n                    i.used += currentSection.value().size;\n            }\n            continue;\n        }\n        m = truRe.match(line);\n        if (m.hasMatch()) {\n            auto section = m.captured(1);\n            auto addr = m.captured(2).toUInt(nullptr, 16);\n            auto size = m.captured(3).toUInt(nullptr, 16);\n            auto path = m.captured(4);\n            currentSection.value().translationUnits.append(TranslationUnit(section, addr, size, path));\n            continue;\n        }\n        m = symbolRe.match(line);\n        if (m.hasMatch()) {\n            uint32_t val = m.captured(1).toUInt(nullptr, 16);\n            QString expr = m.captured(2);\n            if (!expr.trimmed().startsWith(\".\"))\n                currentSection.value().translationUnits.back().symbols.append(LinkerSymbol(val, expr));\n            continue;\n        }\n    }\n    return sectionList;\n}\n\nstatic MapData parseMemoryConfiguration(QTextStream& stream) {\n    MapData data;\n    QRegularExpression re(REGEX_MEM, QRegularExpression::CaseInsensitiveOption);\n    while(!stream.atEnd()) {\n        QString line = stream.readLine();\n        if (line.startsWith(\"Linker script and memory map\")) {\n            data.memoryMap = parseMemoryMap(stream, data.memoryRegions);\n        } else {\n            auto m = re.match(line);\n            if (m.hasMatch()) {\n                data.memoryRegions.append(MemoryRegion{\n                                              m.captured(\"name\"),\n                                              m.captured(\"origin\").toUInt(nullptr, 16),\n                                              m.captured(\"length\").toUInt(nullptr, 16),\n                                              m.captured(\"attr\"),\n                                              0, 0 });\n            }\n        }\n    }\n    return data;\n}\n\nstatic MapData parseMap(QFile &f) {\n    QTextStream stream(&f);\n    while (!stream.atEnd()) {\n        QString line = stream.readLine();\n        if (line.startsWith(MEMORY_MAP_HEADER)) {\n            return parseMemoryConfiguration(stream);\n        }\n    }\n    return MapData{};\n}\n\nstatic const uint HUMAN_Kb = 1024;\nstatic const uint HUMAN_Mb = 1024 * HUMAN_Kb;\nstatic const uint HUMAN_Gb = 1024 * HUMAN_Mb;\n\nstatic QString unscaledPrefix(uint32_t count, const QString& pluralPrefix, const QString& singularPrefix)\n{\n    return QString(\"%1 %2\").arg(count).arg(count != 1? pluralPrefix : singularPrefix);\n}\n\nstatic QString _toHumanReadable(uint32_t count, uint32_t *used, const QString& pluralPrefix, const QString& singularPrefix)\n{\n    Q_UNUSED(used);\n#define IF_HUMAN(c, f) \\\n    if (c > HUMAN_##f##b) \\\n        return QString(\"%1 \" #f \"%2\").arg(*used = c / HUMAN_##f##b).arg(pluralPrefix);\n    IF_HUMAN(count, G);\n    IF_HUMAN(count, M);\n    IF_HUMAN(count, K);\n    return unscaledPrefix(count, pluralPrefix, singularPrefix);\n}\n\nstatic QString toHumanReadable(uint32_t count, const QString& pluralPrefix, const QString& singularPrefix)\n{\n    uint32_t scaledCount = count;\n    QString human = _toHumanReadable(count, &scaledCount, pluralPrefix, singularPrefix);\n    if (scaledCount == count)\n        return human;\n    else\n        return QString(\"%1 (%2)\").arg(human, unscaledPrefix(count, pluralPrefix, singularPrefix));\n}\n\nstatic QString toHumanReadableSize(uint32_t count)\n{\n    return toHumanReadable(count, \"bytes\", \"byte\");\n}\n\nstatic QString toHex(uint32_t value) {\n    return QString(\"0x%1\").arg(value, 8, 16, QChar('0'));\n}\n\nclass BarItemDelegate: public QStyledItemDelegate {\npublic:\n    BarItemDelegate(QObject *parent = Q_NULLPTR) : QStyledItemDelegate(parent) {}\n    ~BarItemDelegate() override;\n\n    inline QStyleOptionProgressBar options(const QStyleOptionViewItem& option,\n                                           const QModelIndex& index) const {\n        double percent = index.data(Qt::UserRole).toDouble();\n        QStyleOptionProgressBar progressBarOption;\n        progressBarOption.rect = option.rect;\n        progressBarOption.minimum = 0;\n        progressBarOption.maximum = 100;\n        progressBarOption.progress = int(percent);\n        progressBarOption.text = QString(\"%1%\").arg(percent, 3, 'f', 2, QChar('0'));\n        progressBarOption.textVisible = true;\n        return progressBarOption;\n    }\n\n    void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const override\n    {\n        auto progressBarOption = options(option, index);\n        QApplication::style()->drawControl(QStyle::CE_ProgressBar, &progressBarOption, painter);\n    }\n\n    QSize sizeHint(const QStyleOptionViewItem &option,\n                   const QModelIndex &index) const override\n    {\n        auto progressBarOption = options(option, index);\n        auto textSize = option.fontMetrics.boundingRect(progressBarOption.text).size();\n        auto widgetSize = QApplication::style()->sizeFromContents(QStyle::CT_ProgressBar, &progressBarOption, textSize) * 1;\n        return widgetSize;\n    }\n};\n\nBarItemDelegate::~BarItemDelegate() { }\n\nclass SymbolSortFilter: public QSortFilterProxyModel\n{\npublic:\n    SymbolSortFilter(QObject *parent = nullptr) : QSortFilterProxyModel(parent)\n    {\n        setSourceModel(new QStandardItemModel(this));\n    }\n    QStandardItemModel *itemModel() { return static_cast<QStandardItemModel*>(sourceModel()); }\n    bool lessThan(const QModelIndex &left, const QModelIndex &right) const override;\n};\n\nbool SymbolSortFilter::lessThan(const QModelIndex &left, const QModelIndex &right) const\n{\n    QVariant leftData = sourceModel()->data(left, Qt::UserRole);\n    QVariant rightData = sourceModel()->data(right, Qt::UserRole);\n    bool ok1 = false, ok2 = false;\n    uint32_t l = leftData.toUInt(&ok1);\n    uint32_t r = rightData.toUInt(&ok2);\n    return (ok1 && ok2)? (l < r) : false;\n}\n\nMapViewer::MapViewer(QWidget *parent) :\n    QWidget (parent),\n    ui(new Ui::MapViewer)\n{\n    ui->setupUi(this);\n    ui->memoryTable->setModel(new QStandardItemModel(this));\n    ui->memoryTable->setEditTriggers(QTableView::NoEditTriggers);\n    ui->memoryTable->setAlternatingRowColors(true);\n    ui->memoryTable->verticalHeader()->hide();\n    ui->memoryTable->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);\n    ui->memoryTable->horizontalHeader()->setStretchLastSection(true);\n    ui->memoryTable->setSelectionBehavior(QAbstractItemView::SelectRows);\n    ui->memoryTable->setItemDelegateForColumn(4, new BarItemDelegate(this));\n\n    ui->symbolsTable->setModel(new SymbolSortFilter(this));\n    ui->symbolsTable->setEditTriggers(QTableView::NoEditTriggers);\n    ui->symbolsTable->setAlternatingRowColors(true);\n    ui->symbolsTable->header()->setStretchLastSection(true);\n    ui->symbolsTable->setSelectionBehavior(QAbstractItemView::SelectRows);\n    ui->symbolsTable->setSortingEnabled(true);\n}\n\nMapViewer::~MapViewer()\n{\n    delete ui;\n}\n\nbool MapViewer::load(const QString &path)\n{\n    QFile f(path);\n    ui->rawText->load(path);\n    if (f.open(QFile::ReadOnly)) {\n        auto data = parseMap(f);\n        auto memoryModel = qobject_cast<QStandardItemModel*>(ui->memoryTable->model());\n        memoryModel->clear();\n        memoryModel->setHorizontalHeaderLabels(QStringList({tr(\"Memory\"),\n                                                            tr(\"Base address\"),\n                                                            tr(\"Size\"),\n                                                            tr(\"Used\"),\n                                                            tr(\"Percent\"),\n                                                            tr(\"Attributes\"),\n                                                           }));\n        qSort(data.memoryRegions.begin(), data.memoryRegions.end(),\n              [](const MemoryRegion& a, const MemoryRegion& b) -> bool { return a.used > b.used; });\n        for(const auto& r: data.memoryRegions) {\n            QList<QStandardItem*> items;\n            items += new QStandardItem(r.name);\n            items += new QStandardItem(toHex(r.base));\n            items += new QStandardItem(toHumanReadableSize(r.size));\n            items += new QStandardItem(toHumanReadableSize(r.used));\n            items += new QStandardItem();\n            items += new QStandardItem(r.attr);\n            items[4]->setData((r.used * 100.0) / r.size, Qt::UserRole);\n            memoryModel->appendRow(items);\n        }\n        auto symbolsTree = static_cast<SymbolSortFilter*>(ui->symbolsTable->model())->itemModel();\n        symbolsTree->clear();\n        symbolsTree->setHorizontalHeaderLabels(QStringList({tr(\"Name\"),\n                                                            tr(\"Store address\"),\n                                                            tr(\"Load address\"),\n                                                            tr(\"Size\"),\n                                                           }));\n        ui->symbolsTable->header()->setSectionResizeMode(0, QHeaderView::Interactive);\n        ui->symbolsTable->header()->setSectionResizeMode(1, QHeaderView::ResizeToContents);\n        ui->symbolsTable->header()->setSectionResizeMode(2, QHeaderView::ResizeToContents);\n        ui->symbolsTable->header()->setSectionResizeMode(3, QHeaderView::ResizeToContents);\n        for(const auto& name: data.memoryMap.keys()) {\n            Section section = data.memoryMap.value(name);\n            QList<QStandardItem*> items;\n            items += new QStandardItem(name.isEmpty()? tr(\"Symbols without section\") : name);\n            items += new QStandardItem(toHex(section.base));\n            items.last()->setData(section.base, Qt::UserRole);\n            items += new QStandardItem(toHex(section.load));\n            items.last()->setData(section.load, Qt::UserRole);\n            items += new QStandardItem(toHumanReadableSize(section.size));\n            items.last()->setData(section.size, Qt::UserRole);\n            symbolsTree->appendRow(items);\n            for(const auto& tru: section.translationUnits) {\n                if (tru.symbols.isEmpty())\n                    continue;\n                QList<QStandardItem*> childItems;\n                childItems += new QStandardItem(tru.isNull()? tr(\"No unit\") : tru.path);\n                childItems += new QStandardItem(tru.isNull()? QString() : toHex(tru.addr));\n                childItems.last()->setData(tru.addr, Qt::UserRole);\n                childItems += new QStandardItem();\n                childItems += new QStandardItem(toHumanReadableSize(tru.size));\n                childItems.last()->setData(tru.size, Qt::UserRole);\n                items.first()->appendRow(childItems);\n                for(const auto& symbol: tru.symbols) {\n                    QList<QStandardItem*> symbolItems;\n                    symbolItems += new QStandardItem(symbol.expr);\n                    symbolItems += new QStandardItem(toHex(symbol.value));\n                    symbolItems += new QStandardItem();\n                    symbolItems += new QStandardItem();\n                    childItems.first()->appendRow(symbolItems);\n                }\n            }\n        }\n\n        ui->memoryTable->resizeColumnsToContents();\n        ui->memoryTable->resizeRowsToContents();\n        return true;\n    }\n    return false;\n}\n"
  },
  {
    "path": "old/mapviewer.h",
    "content": "#ifndef MAPVIEWER_H\n#define MAPVIEWER_H\n\n#include <QWidget>\n\nnamespace Ui {\nclass MapViewer;\n}\n\nclass MapViewer : public QWidget\n{\n    Q_OBJECT\npublic:\n    explicit MapViewer(QWidget *parent = 0);\n    virtual ~MapViewer();\n\nsignals:\n\npublic slots:\n    bool load(const QString& path);\n\nprivate:\n    Ui::MapViewer *ui;\n};\n\n#endif // MAPVIEWER_H\n"
  },
  {
    "path": "old/mapviewer.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>MapViewer</class>\n <widget class=\"QWidget\" name=\"MapViewer\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>601</width>\n    <height>429</height>\n   </rect>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_4\">\n   <property name=\"spacing\">\n    <number>0</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"QTabWidget\" name=\"tabWidget\">\n     <property name=\"tabPosition\">\n      <enum>QTabWidget::South</enum>\n     </property>\n     <property name=\"currentIndex\">\n      <number>0</number>\n     </property>\n     <property name=\"documentMode\">\n      <bool>true</bool>\n     </property>\n     <widget class=\"QWidget\" name=\"tab\">\n      <attribute name=\"title\">\n       <string>Memory Usage</string>\n      </attribute>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\">\n       <property name=\"spacing\">\n        <number>0</number>\n       </property>\n       <property name=\"leftMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"topMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"rightMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"bottomMargin\">\n        <number>0</number>\n       </property>\n       <item>\n        <widget class=\"QTableView\" name=\"memoryTable\">\n         <property name=\"editTriggers\">\n          <set>QAbstractItemView::NoEditTriggers</set>\n         </property>\n         <property name=\"alternatingRowColors\">\n          <bool>true</bool>\n         </property>\n         <property name=\"selectionMode\">\n          <enum>QAbstractItemView::ExtendedSelection</enum>\n         </property>\n         <property name=\"selectionBehavior\">\n          <enum>QAbstractItemView::SelectRows</enum>\n         </property>\n         <property name=\"wordWrap\">\n          <bool>false</bool>\n         </property>\n         <property name=\"cornerButtonEnabled\">\n          <bool>false</bool>\n         </property>\n         <attribute name=\"horizontalHeaderCascadingSectionResizes\">\n          <bool>true</bool>\n         </attribute>\n         <attribute name=\"horizontalHeaderStretchLastSection\">\n          <bool>true</bool>\n         </attribute>\n         <attribute name=\"verticalHeaderVisible\">\n          <bool>false</bool>\n         </attribute>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"tab_2\">\n      <attribute name=\"title\">\n       <string>Symbol Tree</string>\n      </attribute>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n       <property name=\"spacing\">\n        <number>0</number>\n       </property>\n       <property name=\"leftMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"topMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"rightMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"bottomMargin\">\n        <number>0</number>\n       </property>\n       <item>\n        <widget class=\"QTreeView\" name=\"symbolsTable\"/>\n       </item>\n      </layout>\n     </widget>\n     <widget class=\"QWidget\" name=\"tab_3\">\n      <attribute name=\"title\">\n       <string>Plain Text</string>\n      </attribute>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n       <property name=\"spacing\">\n        <number>0</number>\n       </property>\n       <property name=\"leftMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"topMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"rightMargin\">\n        <number>0</number>\n       </property>\n       <property name=\"bottomMargin\">\n        <number>0</number>\n       </property>\n       <item>\n        <widget class=\"CodeEditor\" name=\"rawText\">\n         <property name=\"readOnly\">\n          <bool>true</bool>\n         </property>\n        </widget>\n       </item>\n      </layout>\n     </widget>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <customwidgets>\n  <customwidget>\n   <class>CodeEditor</class>\n   <extends>QPlainTextEdit</extends>\n   <header>codeeditor.h</header>\n  </customwidget>\n </customwidgets>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "old/passwordpromtdialog.cpp",
    "content": "#include \"passwordpromtdialog.h\"\n\nPasswordPromtDialog::PasswordPromtDialog(QString title, QWidget *parent) :\n  QDialog(parent),\n  ui(new Ui::PasswordPromtDialog)\n{\n  ui->setupUi(this);\n  if (!title.isEmpty()) {\n    this->setWindowTitle(title);\n  }\n}\n\nQString PasswordPromtDialog::password()\n{\n    return ui->lineEdit->text();\n}\n"
  },
  {
    "path": "old/passwordpromtdialog.h",
    "content": "#ifndef PASSWORDPROMTDIALOG_H\n#define PASSWORDPROMTDIALOG_H\n\n#include \"ui_passwordpromtdialog.h\"\n#include <QString>\n\nclass PasswordPromtDialog : public QDialog\n{\n    Q_OBJECT\n\n  public:\n    explicit PasswordPromtDialog(QString title = \"\", QWidget *parent = 0);\n    QString password();\n\n  private:\n    Ui::PasswordPromtDialog *ui;\n};\n\n#endif // PASSWORDPROMTDIALOG_H\n"
  },
  {
    "path": "old/passwordpromtdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>PasswordPromtDialog</class>\n <widget class=\"QDialog\" name=\"PasswordPromtDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>327</width>\n    <height>107</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Password requiered</string>\n  </property>\n  <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n   <property name=\"geometry\">\n    <rect>\n     <x>20</x>\n     <y>70</y>\n     <width>301</width>\n     <height>32</height>\n    </rect>\n   </property>\n   <property name=\"orientation\">\n    <enum>Qt::Horizontal</enum>\n   </property>\n   <property name=\"standardButtons\">\n    <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n   </property>\n  </widget>\n  <widget class=\"QWidget\" name=\"layoutWidget\">\n   <property name=\"geometry\">\n    <rect>\n     <x>20</x>\n     <y>30</y>\n     <width>221</width>\n     <height>24</height>\n    </rect>\n   </property>\n   <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n    <item>\n     <widget class=\"QLabel\" name=\"label\">\n      <property name=\"text\">\n       <string>Password</string>\n      </property>\n     </widget>\n    </item>\n    <item>\n     <widget class=\"QLineEdit\" name=\"lineEdit\">\n      <property name=\"echoMode\">\n       <enum>QLineEdit::Password</enum>\n      </property>\n     </widget>\n    </item>\n   </layout>\n  </widget>\n </widget>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>PasswordPromtDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>PasswordPromtDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/projectexporter.cpp",
    "content": "#include \"projectexporter.h\"\n\n#include <QTemporaryDir>\n#include <QtDebug>\n\nstatic const QString EXCLUDE_LIST = QString(\n        \"-x .git* \"\n        \"-x *.o \"\n        \"-x *.d \"\n        \"-x *.elf \"\n        \"-x *.lst \"\n        \"-x *.map \"\n        \"-x .config* \"\n        \"-x *.conf \"\n        \"-x autoconf.h\");\n\nProjectExporter::ProjectExporter(const QString& exportFile,\n                                 QString projectPath,\n                                 QObject *parent,\n                                 const char *slotFinish) :\n    QObject(parent),\n    m_exportFile(exportFile),\n    m_projectPath(std::move(projectPath)),\n    proc(new QProcess(this)),\n    tmpDir(\"a_XXXXXX\")\n{\n    tmpDir.setAutoRemove(true);\n    proc->setObjectName(\"proc\");\n    QMetaObject::connectSlotsByName(this);\n    connect(this, SIGNAL(end(QString)), parent, slotFinish);\n    connect(this, SIGNAL(end(QString)), this, SLOT(deleteLater()));\n    proc->setStandardOutputFile(exportFile);\n}\n\nvoid ProjectExporter::start()\n{\n    if (tmpDir.isValid()) {\n        proc->setWorkingDirectory(m_projectPath);\n        QString cmd = QString(\"diff -u -r --unidirectional-new-file %2 %1 .\")\n                .arg(tmpDir.path())\n                .arg(EXCLUDE_LIST);\n        //qDebug() << cmd;\n        proc->start(cmd);\n    } else {\n        emit end(tr(\"Can not create empty tmp directory %1\").arg(tmpDir.path()));\n    }\n}\n\nvoid ProjectExporter::on_proc_finished(int exitCode, QProcess::ExitStatus exitStatus)\n{\n    if (exitStatus != QProcess::NormalExit) {\n        emit end(tr(\"Abnormal termination %1\").arg(proc->errorString()));\n        return;\n    }\n    if (exitCode > 1) {\n        emit end(tr(\"End with error code %1\").arg(exitCode));\n        return;\n    }\n    emit end(QString());\n}\n\nvoid ProjectExporter::on_proc_error(QProcess::ProcessError error)\n{\n    Q_UNUSED(error);\n    emit end(proc->errorString());\n}\n"
  },
  {
    "path": "old/projectexporter.h",
    "content": "#ifndef PROJECTEXPORTER_H\n#define PROJECTEXPORTER_H\n\n#include <QObject>\n#include <QProcess>\n#include <QDir>\n#include <QTemporaryDir>\n\nclass QTemporaryDir;\n\nclass ProjectExporter : public QObject\n{\n    Q_OBJECT\npublic:\n    explicit ProjectExporter(const QString& exportFile,\n                             QString  projectPath,\n                             QObject *parent,\n                             const char *slotFinish);\n\nsignals:\n    void end(const QString& error);\n\npublic slots:\n    void start();\n\nprivate slots:\n    void on_proc_finished(int exitCode, QProcess::ExitStatus exitStatus);\n    void on_proc_error(QProcess::ProcessError error);\n\nprivate:\n    QString m_exportFile;\n    QString m_projectPath;\n    QProcess *proc;\n    QTemporaryDir tmpDir;\n};\n\n#endif // PROJECTEXPORTER_H\n"
  },
  {
    "path": "old/projecticonprovider.cpp",
    "content": "#include \"projecticonprovider.h\"\n\n#include <QMimeDatabase>\n\n#include <QtDebug>\n\nProjectIconProvider::ProjectIconProvider(QObject *parent) : QObject(parent)\n{\n    db = new QMimeDatabase();\n}\n\nProjectIconProvider::~ProjectIconProvider()\n{\n    delete db;\n}\n\nclass StaticMimeHelper {\npublic:\n    QIcon icon(const QMimeType& m) const {\n        QString resName = QString(\":/images/mimetypes/%1.svg\").arg(m.iconName());\n        if (QFile(resName).exists()) {\n            return QIcon(resName);\n        }\n        resName = QString(\":/images/mimetypes/%1.svg\").arg(m.genericIconName());\n        if (QFile(resName).exists()) {\n            return QIcon(resName);\n        }\n        // qDebug() << \"no icon for\" << m.iconName() << \"or\" << m.genericIconName();\n        return QIcon();\n    }\n};\n\nstatic StaticMimeHelper staticIconDb;\n\nQIcon ProjectIconProvider::icon(const QFileInfo &info) const\n{\n    QMimeType t = db->mimeTypeForFile(info);\n    if (t.isValid()) {\n        // qDebug() << \"Required mime for\" << info.fileName() << t << t.iconName();\n        QIcon c = staticIconDb.icon(t); // QIcon::fromTheme(t.iconName(), staticIconDb.icon(t));\n        if (!c.isNull())\n            return c;\n    }\n    return QFileIconProvider::icon(info);\n}\n"
  },
  {
    "path": "old/projecticonprovider.h",
    "content": "#ifndef PROJECTICONPROVIDER_H\n#define PROJECTICONPROVIDER_H\n\n#include <QObject>\n#include <QFileIconProvider>\n\nclass QMimeDatabase;\n\nclass ProjectIconProvider : public QObject, public QFileIconProvider\n{\npublic:\n    ProjectIconProvider(QObject *parent = 0l);\n    virtual ~ProjectIconProvider();\n\n    virtual QIcon icon(const QFileInfo &info) const;\n\nprivate:\n    QMimeDatabase *db;\n};\n\n#endif // PROJECTICONPROVIDER_H\n"
  },
  {
    "path": "old/projectnewdialog.cpp",
    "content": "#include \"projectnewdialog.h\"\n#include \"ui_projectnewdialog.h\"\n#include \"appconfig.h\"\n\n#include <QDir>\n#include <QFileInfo>\n#include <QFile>\n#include <QPushButton>\n#include <QFileDialog>\n#include <QItemDelegate>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <QJsonArray>\n#include <QCheckBox>\n#include <QStyledItemDelegate>\n\n#include <QtDebug>\n\nstruct Parameter_t {\n    QString name;\n    QString type;\n    QString value;\n};\n\nclass EditableItemDelegate : public QStyledItemDelegate {\npublic:\n    EditableItemDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {\n    }\n\n    virtual QVariant getDefault() = 0;\n};\n\nclass ListEditorDelegate : public EditableItemDelegate {\npublic:\n    const QStringList items;\n\n    ListEditorDelegate(const QString& data, QObject *parent = nullptr) :\n        EditableItemDelegate(parent), items(data.split('|'))\n    {\n    }\n\n    QVariant getDefault() override {\n        return items.first();\n    }\n\n    QWidget *createEditor(QWidget *parent,\n                          const QStyleOptionViewItem &option,\n                          const QModelIndex &index) const override\n    {\n        Q_UNUSED(option);\n        Q_UNUSED(index);\n        auto cb = new QComboBox(parent);\n        cb->addItems(items);\n        return cb;\n    }\n};\n\n\nclass StringEditorDelegate : public EditableItemDelegate {\npublic:\n    QString data;\n    StringEditorDelegate(QString  d, QObject *parent = nullptr) :\n        EditableItemDelegate(parent), data(std::move(d))\n    {\n    }\n\n    QVariant getDefault() override {\n        return data;\n    }\n\n    QWidget *createEditor(QWidget *parent,\n                          const QStyleOptionViewItem &option,\n                          const QModelIndex &index) const override\n    {\n        Q_UNUSED(option);\n        Q_UNUSED(index);\n        auto ed = new QLineEdit(parent);\n        ed->setText(data);\n        return ed;\n    }\n};\n\n#if 0\nclass CheckEditorDelegate : public EditableItemDelegate {\npublic:\n    bool data;\n    CheckEditorDelegate(QString  d, QObject *parent = nullptr) :\n        EditableItemDelegate(parent), data(d.compare(\"true\"))\n    {\n    }\n\n    QVariant getDefault() override {\n        return data;\n    }\n\n    QWidget *createEditor(QWidget *parent,\n                          const QStyleOptionViewItem &option,\n                          const QModelIndex &index) const override\n    {\n        Q_UNUSED(option);\n        Q_UNUSED(index);\n        auto ed = new QCheckBox(parent);\n        ed->setStyleSheet(\"QCheckBox {margin-left: 43%; margin-right: 57%;}\");\n        ed->setChecked(data);\n        return ed;\n    }\n};\n#else\nclass BooleanCheckBoxDelegate : public EditableItemDelegate\n{\npublic:\n    bool data;\n\n    BooleanCheckBoxDelegate(QString d, QObject *parent = 0):\n        EditableItemDelegate(parent), data(d.compare(\"true\")){}\n\n    QVariant getDefault() override {\n        return data;\n    }\n\n    QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override\n    {\n        //create the checkbox editor\n        QCheckBox *editor = new QCheckBox(parent);\n        return editor;\n    }\n\n    void setEditorData(QWidget *editor, const QModelIndex &index) const override\n    {\n        //set if checked or not\n        QCheckBox *cb = qobject_cast<QCheckBox *>(editor);\n        cb->setChecked(index.data().toBool());\n    }\n\n    void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override\n    {\n        QCheckBox *cb = static_cast<QCheckBox *>(editor);\n        int value = (cb->checkState()==Qt::Checked)?1:0;\n        model->setData(index, value, Qt::EditRole);\n    }\n\n    void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override\n    {\n        if (index.column() == 0) {\n            EditableItemDelegate::paint(painter, option, index);\n            return;\n        }\n        //retrieve data\n        bool data = index.model()->data(index, Qt::DisplayRole).toBool();\n\n        //create CheckBox style\n        QStyleOptionButton checkboxstyle;\n        QRect checkbox_rect = QApplication::style()->subElementRect(QStyle::SE_CheckBoxIndicator, &checkboxstyle);\n\n        //center\n        checkboxstyle.rect = option.rect;\n        checkboxstyle.rect.setLeft(option.rect.x() +\n                                   option.rect.width()/2 - checkbox_rect.width()/2);\n        //checked or not checked\n        if(data)\n            checkboxstyle.state = QStyle::State_On|QStyle::State_Enabled;\n        else\n            checkboxstyle.state = QStyle::State_Off|QStyle::State_Enabled;\n\n        //done! we can draw!\n        QApplication::style()->drawControl(QStyle::CE_CheckBox, &checkboxstyle, painter);\n\n    }\n\n    void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override\n    {\n        Q_UNUSED(index);\n        QStyleOptionButton checkboxstyle;\n        QRect checkbox_rect = QApplication::style()->subElementRect(QStyle::SE_CheckBoxIndicator, &checkboxstyle);\n\n        //center\n        checkboxstyle.rect = option.rect;\n        checkboxstyle.rect.setLeft(option.rect.x() +\n                                   option.rect.width()/2 - checkbox_rect.width()/2);\n\n        editor->setGeometry(checkboxstyle.rect);\n    }\n\n};\n#endif\n\nclass DelegateFactory {\npublic:\n    static EditableItemDelegate *create(const Parameter_t& p, QWidget *parent = nullptr)\n    {\n        Constructor constructor = constructors().value( p.type );\n        if ( constructor == nullptr )\n            return nullptr;\n        return (*constructor)( p.value, parent );\n    }\n\n    template<typename T>\n    static void registerClass(const QString& key)\n    {\n        constructors().insert( key, &constructorHelper<T> );\n    }\nprivate:\n    typedef EditableItemDelegate* (*Constructor)( const QString& data, QWidget* parent );\n\n    template<typename T>\n    static EditableItemDelegate* constructorHelper( const QString& data, QWidget* parent )\n    {\n        return new T( data, parent );\n    }\n\n    static QHash<QString, Constructor>& constructors()\n    {\n        static QHash<QString, Constructor> instance;\n        return instance;\n    }\n};\n\nQString projectPath(const QString& path)\n{\n    QDir projecPath(path.isEmpty()? AppConfig::mutableInstance().defaultProjectPath() : path);\n    if (!projecPath.exists())\n        projecPath.mkpath(\".\");\n    return projecPath.absolutePath();\n}\n\nstatic QString readAll(const QString& fileName) {\n    QFile f(fileName);\n    return f.open(QFile::ReadOnly)? QTextStream(&f).readAll() : QString();\n}\n\nstatic QJsonObject loadJSONMetadata(const QString& text)\n{\n    int endOfJson = text.indexOf(QRegularExpression(\"^diff \", QRegularExpression::MultilineOption));\n    if (endOfJson == -1)\n        return QJsonObject();\n    auto str = text.leftRef(endOfJson).toLatin1();\n    return QJsonDocument::fromJson(str).object();\n}\n\nstatic QJsonObject loadJSONMetadata(QFile& f)\n{\n    return loadJSONMetadata(readAll(f.fileName()));\n}\n\nProjectNewDialog::ProjectNewDialog(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::ProjectNewDialog)\n{\n    DelegateFactory::registerClass<ListEditorDelegate>(\"items\");\n    DelegateFactory::registerClass<StringEditorDelegate>(\"string\");\n    DelegateFactory::registerClass<BooleanCheckBoxDelegate>(\"bool\");\n    QDir defTemplates(\":/build/templates/\");\n    QDir localTemplates(\n          AppConfig::mutableInstance().buildTemplatePath());\n    ui->setupUi(this);\n    ui->parameterTable->horizontalHeader()->setStretchLastSection(true);\n    QStringList prjList;\n    int defaultIdx = 0;\n    for(const auto& info: localTemplates.entryInfoList(QStringList{\"*.template\", \"*.jtemplate\"})) {\n        if (info.suffix() == \"jtemplate\") {\n            QFile f(info.absoluteFilePath());\n            auto root = loadJSONMetadata(f);\n            if (!root.isEmpty()) {\n                auto name = root.value(\"name\").toString();\n                if (!prjList.contains(name))\n                    ui->templateFile->addItem(name, info.absoluteFilePath());\n            }\n        } else {\n            if (!prjList.contains(info.baseName()))\n                ui->templateFile->addItem(info.baseName(), info.absoluteFilePath());\n        }\n    }\n    // Prefer downloaded template name over bundled template\n    for(const auto& info: defTemplates.entryInfoList(QStringList{\"*.template\", \"*.jtemplate\"})) {\n        if (info.suffix() == \"jtemplate\") {\n            QFile f(info.absoluteFilePath());\n            auto root = loadJSONMetadata(f);\n            if (!root.isEmpty()) {\n                auto name = root.value(\"name\").toString();\n                if (!prjList.contains(name))\n                    ui->templateFile->addItem(name, info.absoluteFilePath());\n            }\n        } else {\n            if (!prjList.contains(info.baseName()))\n                ui->templateFile->addItem(info.baseName(), info.absoluteFilePath());\n            if (info.baseName() == \"empty\")\n                defaultIdx = ui->templateFile->count() - 1;\n        }\n    }\n    ui->templateFile->setCurrentIndex(defaultIdx);\n    ui->projectPath->setText(::projectPath(AppConfig::mutableInstance().buildDefaultProjectPath()));\n    refreshProjectName();\n}\n\nProjectNewDialog::~ProjectNewDialog()\n{\n    delete ui;\n}\n\nQString ProjectNewDialog::projectPath() const\n{\n    return ui->projectFileText->text();\n}\n\nstatic QString readAllText(QFile &f) {\n    QTextStream s(&f);\n    return s.readAll();\n}\n\nQString ProjectNewDialog::templateText() const\n{\n    QFile f(ui->templateFile->currentData(Qt::UserRole).toString());\n    return f.open(QFile::ReadOnly)? replaceTemplates(readAllText(f)) : QString();\n}\n\nvoid ProjectNewDialog::refreshProjectName()\n{\n    ui->projectFileText->setText(QString(\"%1%2%3\")\n                                 .arg(ui->projectPath->text())\n                                 .arg(ui->projectPath->text().isEmpty()? \"\" : QString(QDir::separator()))\n                                 .arg(ui->projectName->text()));\n    QString tamplate_path = ui->templateFile->currentData(Qt::UserRole).toString();\n    bool en = QFileInfo(tamplate_path).exists() &&\n            QFileInfo(ui->projectPath->text()).exists() &&\n            !ui->projectName->text().isEmpty();\n    ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(en);\n}\n\nvoid ProjectNewDialog::on_toolFindProjectPath_clicked()\n{\n    QString path = QFileDialog::getExistingDirectory(this, tr(\"Project location\"));\n    if (!path.isEmpty())\n        ui->projectPath->setText(path);\n}\n\nvoid ProjectNewDialog::on_toolLoadTemplate_clicked()\n{\n    QString templateName = QFileDialog::getOpenFileName(this,\n                                                        tr(\"Open template\"),\n                                                        QString(),\n                                                        tr(\"Template files (*.template *.jtemplate);;\"\n                                                           \"Diff files (*.diff);;\"\n                                                           \"All files (*)\"));\n    if (!templateName.isEmpty()) {\n        QFileInfo info(templateName);\n        int idx = ui->templateFile->findText(info.baseName());\n        if (idx == -1)\n            ui->templateFile->insertItem(idx = 0, info.baseName(), info.absoluteFilePath());\n        ui->templateFile->setCurrentIndex(idx);\n    }\n}\n\nvoid ProjectNewDialog::on_templateFile_editTextChanged(const QString &fileName)\n{\n    Q_UNUSED(fileName);\n    QString name = ui->templateFile->currentData(Qt::UserRole).toString();\n    QString text = readAll(name);\n    ui->parameterTable->setRowCount(0);\n    if (!text.isEmpty()) {\n        QFileInfo inf(name);\n        if (inf.suffix() == \"jtemplate\") {\n            setProperty(\"isJTemplate\", true);\n            auto metadata = loadJSONMetadata(text);\n            auto name = metadata.value(\"name\").toString();\n            auto author = metadata.value(\"author\").toString();\n            auto comment = metadata.value(\"comment\").toString();\n            ui->infoView->setText(\n                        tr(\"<html><body>\"\n                           \"<center><h1>%1</h1></center>\"\n                           \"<h3><font color=\\\"blue\\\">%2</font></h3>\"\n                           \"<tt>%3</tt>\"\n                           \"</body></html>\")\n                        .arg(name.toHtmlEscaped())\n                        .arg(author.toHtmlEscaped())\n                        .arg(comment.toHtmlEscaped())\n                        );\n            QJsonObject params = metadata.value(\"params\").toObject();\n            for(auto key: params.keys()) {\n                auto oval = params.value(key).toObject();\n                auto text = oval.value(\"text\").toString();\n                auto val = oval.value(\"value\");\n                Parameter_t p = { text, \"\", val.toString() };\n                if (val.isArray()) {\n                    p.type = \"items\";\n                    auto d = val.toArray();\n                    QStringList d2;\n                    for(auto n: d)\n                        d2.append(n.toString());\n                    p.value = d2.join('|');\n                } else if (val.isBool()) {\n                    // FIXME: Bool not work properly\n                    p.type = \"bool\";\n                    p.value = val.toBool()? \"true\" : \"false\";\n                } else {\n                    p.type = \"string\";\n                    p.value = val.toString();\n                }\n                auto name = new QTableWidgetItem(p.name);\n                name->setData(Qt::UserRole, key);\n                name->setFlags(name->flags()&~Qt::ItemIsEditable);\n                QTableWidgetItem *value = new QTableWidgetItem(QString());\n                value->setFlags(value->flags()|Qt::ItemIsEditable);\n                int rows = ui->parameterTable->rowCount();\n                ui->parameterTable->setRowCount(rows+1);\n                ui->parameterTable->setItem(rows, 0, name);\n                ui->parameterTable->setItem(rows, 1, value);\n                EditableItemDelegate *ed = DelegateFactory::create(p, this);\n                value->setData(Qt::EditRole, ed->getDefault());\n                ui->parameterTable->setItemDelegateForRow(rows, ed);\n            }\n        } else {\n            ui->infoView->clear();\n            setProperty(\"isJTemplate\", false);\n            QRegularExpressionMatch matchComments = QRegularExpression(R\"((^[\\s\\S]*?)^diff )\", QRegularExpression::MultilineOption).match(text);\n            if (matchComments.hasMatch()) {\n                auto text = matchComments.captured(1);\n                ui->infoView->setText(text);\n            }\n            QRegExp re(R\"(\\$\\{\\{([a-zA-Z0-9_]+)\\s*([a-zA-Z0-9_]+)*\\s*\\:*(.*)\\}\\})\");\n            re.setMinimal(true);\n            re.setPatternSyntax(QRegExp::RegExp2);\n            int idx = 0;\n            while ((idx = re.indexIn(text, idx)) != -1) {\n                Parameter_t p = { re.cap(1).replace('_', ' '), re.cap(2), re.cap(3) };\n                auto name = new QTableWidgetItem(p.name);\n                name->setFlags(name->flags()&~Qt::ItemIsEditable);\n                QTableWidgetItem *value = new QTableWidgetItem(QString());\n                value->setFlags(value->flags()|Qt::ItemIsEditable);\n                int rows = ui->parameterTable->rowCount();\n                ui->parameterTable->setRowCount(rows+1);\n                ui->parameterTable->setItem(rows, 0, name);\n                ui->parameterTable->setItem(rows, 1, value);\n                EditableItemDelegate *ed = DelegateFactory::create(p, this);\n                value->setData(Qt::EditRole, ed->getDefault());\n                ui->parameterTable->setItemDelegateForRow(rows, ed);\n                idx += re.matchedLength();\n            }\n        }\n        ui->parameterTable->resizeColumnToContents(0);\n    }\n}\n\nQString ProjectNewDialog::replaceTemplates(QString text) const\n{\n    for(int row=0; row<ui->parameterTable->rowCount(); row++) {\n        if (property(\"isJTemplate\").toBool()) {\n            QString key = ui->parameterTable->item(row, 0)->data(Qt::UserRole).toString();\n            QString val = ui->parameterTable->item(row, 1)->text();\n            QRegExp re(QString(R\"(\\$\\{\\{%1\\}\\})\").arg(key));\n            re.setMinimal(true);\n            re.setPatternSyntax(QRegExp::RegExp2);\n            text.replace(re, val);\n        } else {\n            QString key = ui->parameterTable->item(row, 0)->text().replace(' ', '_');\n            QString val = ui->parameterTable->item(row, 1)->text();\n            QRegExp re(QString(R\"(\\$\\{\\{%1\\s*([a-zA-Z0-9_]+)*\\s*\\:*(.*)\\}\\})\").arg(key));\n            re.setMinimal(true);\n            re.setPatternSyntax(QRegExp::RegExp2);\n            text.replace(re, val);\n        }\n    }\n    return text;\n}\n"
  },
  {
    "path": "old/projectnewdialog.h",
    "content": "#ifndef PROJECTNEWDIALOG_H\n#define PROJECTNEWDIALOG_H\n\n#include <QDialog>\n\nnamespace Ui {\nclass ProjectNewDialog;\n}\n\nclass ProjectNewDialog : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit ProjectNewDialog(QWidget *parent = 0);\n    ~ProjectNewDialog();\n\n    QString projectPath() const;\n    QString templateText() const;\nprivate slots:\n    void refreshProjectName();\n\n    void on_toolFindProjectPath_clicked();\n\n    void on_toolLoadTemplate_clicked();\n\n    void on_templateFile_editTextChanged(const QString &fileName);\n\nprivate:\n    Ui::ProjectNewDialog *ui;\n\n    QString replaceTemplates(QString text) const;\n};\n\n#endif // PROJECTNEWDIALOG_H\n"
  },
  {
    "path": "old/projectnewdialog.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ProjectNewDialog</class>\n <widget class=\"QDialog\" name=\"ProjectNewDialog\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>573</width>\n    <height>605</height>\n   </rect>\n  </property>\n  <property name=\"sizePolicy\">\n   <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Preferred\">\n    <horstretch>0</horstretch>\n    <verstretch>0</verstretch>\n   </sizepolicy>\n  </property>\n  <property name=\"windowTitle\">\n   <string>New Project</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_4\">\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n     <item>\n      <widget class=\"QGroupBox\" name=\"groupBox\">\n       <property name=\"title\">\n        <string>Project Name</string>\n       </property>\n       <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n        <item>\n         <widget class=\"QLineEdit\" name=\"projectName\"/>\n        </item>\n       </layout>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QGroupBox\" name=\"groupBox_2\">\n       <property name=\"title\">\n        <string>Project PATH</string>\n       </property>\n       <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n        <item>\n         <widget class=\"QLineEdit\" name=\"projectPath\"/>\n        </item>\n        <item>\n         <widget class=\"QToolButton\" name=\"toolFindProjectPath\">\n          <property name=\"text\">\n           <string>...</string>\n          </property>\n         </widget>\n        </item>\n       </layout>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupBox_3\">\n     <property name=\"title\">\n      <string>Project file path</string>\n     </property>\n     <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n      <item>\n       <widget class=\"QLabel\" name=\"projectFileText\">\n        <property name=\"text\">\n         <string/>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QGroupBox\" name=\"groupBox_4\">\n     <property name=\"title\">\n      <string>Template</string>\n     </property>\n     <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\">\n      <item>\n       <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n        <item>\n         <widget class=\"QComboBox\" name=\"templateFile\">\n          <property name=\"editable\">\n           <bool>true</bool>\n          </property>\n         </widget>\n        </item>\n        <item>\n         <widget class=\"QToolButton\" name=\"toolLoadTemplate\">\n          <property name=\"text\">\n           <string>...</string>\n          </property>\n         </widget>\n        </item>\n       </layout>\n      </item>\n      <item>\n       <widget class=\"QSplitter\" name=\"splitter\">\n        <property name=\"orientation\">\n         <enum>Qt::Vertical</enum>\n        </property>\n        <widget class=\"QTextBrowser\" name=\"infoView\"/>\n        <widget class=\"QTableWidget\" name=\"parameterTable\">\n         <property name=\"alternatingRowColors\">\n          <bool>true</bool>\n         </property>\n         <property name=\"selectionBehavior\">\n          <enum>QAbstractItemView::SelectRows</enum>\n         </property>\n         <attribute name=\"horizontalHeaderCascadingSectionResizes\">\n          <bool>true</bool>\n         </attribute>\n         <attribute name=\"horizontalHeaderStretchLastSection\">\n          <bool>true</bool>\n         </attribute>\n         <attribute name=\"verticalHeaderVisible\">\n          <bool>false</bool>\n         </attribute>\n         <column>\n          <property name=\"text\">\n           <string>Name</string>\n          </property>\n         </column>\n         <column>\n          <property name=\"text\">\n           <string>Value</string>\n          </property>\n         </column>\n        </widget>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n   <item>\n    <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n     <property name=\"orientation\">\n      <enum>Qt::Horizontal</enum>\n     </property>\n     <property name=\"standardButtons\">\n      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n     </property>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>ProjectNewDialog</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>ProjectNewDialog</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>projectName</sender>\n   <signal>textChanged(QString)</signal>\n   <receiver>ProjectNewDialog</receiver>\n   <slot>refreshProjectName()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>214</x>\n     <y>22</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>79</x>\n     <y>166</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>projectPath</sender>\n   <signal>textChanged(QString)</signal>\n   <receiver>ProjectNewDialog</receiver>\n   <slot>refreshProjectName()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>299</x>\n     <y>57</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>287</x>\n     <y>156</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>templateFile</sender>\n   <signal>editTextChanged(QString)</signal>\n   <receiver>ProjectNewDialog</receiver>\n   <slot>refreshProjectName()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>366</x>\n     <y>99</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>362</x>\n     <y>165</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n <slots>\n  <slot>refreshProjectName()</slot>\n </slots>\n</ui>\n"
  },
  {
    "path": "old/projectview.cpp",
    "content": "#include \"projectview.h\"\n#include \"ui_projectview.h\"\n\n#include <QFileDialog>\n#include <QFileSystemModel>\n#include <QStringListModel>\n#include <QRegularExpression>\n#include <QTemporaryFile>\n#include <QProcess>\n#include <QMessageBox>\n#include <QDir>\n#include <QFuture>\n\n#include <QLabel>\n#include <QCheckBox>\n#include <QInputDialog>\n#include <QMenu>\n#include <QProgressBar>\n#include <QWidgetAction>\n#include <QDesktopServices>\n#include <QtConcurrent>\n#include <QtDebug>\n#include <QPushButton>\n#include <QStylePainter>\n#include <QShortcut>\n\n#include \"projecticonprovider.h\"\n#include \"targetupdatediscover.h\"\n#include \"etags.h\"\n#include \"taglist.h\"\n#include \"projectexporter.h\"\n#include \"toolmanager.h\"\n#include \"filepropertiesdialog.h\"\n#include \"appconfig.h\"\n#include \"findinfilesdialog.h\"\n\nstatic const int LAST_MESSAGE_TIMEOUT=1500;\n\nstatic QString toHumanReadable(const QString& text) {\n    return QString(text).replace('_', ' ');\n}\n\nMyFileSystemModel::MyFileSystemModel(QObject *parent) :\n    QFileSystemModel(parent)\n{\n    sectionName.append(tr(\"Name\"));\n    sectionName.append(tr(\"Size\"));\n}\n\nQVariant MyFileSystemModel::headerData(int section, Qt::Orientation orientation, int role) const\n{\n    if ((role == Qt::DisplayRole) && (section < sectionName.size())) {\n        return sectionName[section];\n    }\n    return QFileSystemModel::headerData(section,orientation,role);\n}\n\nclass MyButton : public QToolButton {\npublic:\n  explicit MyButton(QWidget* parent = nullptr) : QToolButton(parent) {}\n  virtual ~MyButton() {}\n\n  void setPixmap(const QPixmap& pixmap) { m_pixmap = pixmap; }\n\n  virtual QSize sizeHint() const override {\n    const auto parentHint = QToolButton::sizeHint();\n    // add margins here if needed\n    return QSize(parentHint.width() + m_pixmap.width(), std::max(parentHint.height(), m_pixmap.height()));\n  }\n\nprotected:\n  virtual void paintEvent(QPaintEvent* e) override {\n    QToolButton::paintEvent(e);\n\n    if (!m_pixmap.isNull()) {\n      const int y = (height() - m_pixmap.height()) / 2; // add margin if needed\n      QPainter painter(this);\n      painter.drawPixmap(5, y, m_pixmap); // hardcoded horizontal margin\n    }\n  }\n\nprivate:\n  QPixmap m_pixmap;\n};\n\nProjectView::ProjectView(QWidget *parent) :\n    QWidget(parent),\n    ui(new Ui::ProjectView)\n{\n    ui->setupUi(this);\n    ui->treeView->setAcceptDrops(true);\n    ui->treeView->setContextMenuPolicy(Qt::CustomContextMenu);\n\n    connect(new QShortcut(QKeySequence(Qt::Key_Delete), ui->treeView), &QShortcut::activated,\n            this, &ProjectView::onElementDel);\n\n    labelStatus = new QLabel(ui->targetList);\n    QHBoxLayout *lsLayout = new QHBoxLayout(ui->targetList);\n    labelStatus->setAttribute( Qt::WA_TransparentForMouseEvents );\n    labelStatus->setAlignment(Qt::AlignRight | Qt::AlignBottom);\n    lsLayout->addWidget(labelStatus);\n\n    projectButtons += ui->toolButton_export;\n    projectButtons += ui->toolButton_find;\n    projectButtons += ui->toolButton_refreshProject;\n    projectButtons += ui->toolButton_startDebug;\n\n    ui->toolButton_tools->setMenu(createExternalToolsMenu());\n}\n\nProjectView::~ProjectView()\n{\n    delete ui;\n}\n\nQString ProjectView::project() const\n{\n    QFileSystemModel *m = qobject_cast<QFileSystemModel*>(ui->treeView->model());\n    if (!m)\n        return QString();\n    return m->rootDirectory().absoluteFilePath(\"Makefile\");\n}\n\nQString ProjectView::projectName() const\n{\n    return QFileInfo(projectPath().path()).fileName();\n}\n\nQDir ProjectView::projectPath() const\n{\n    QFileSystemModel *m = qobject_cast<QFileSystemModel*>(ui->treeView->model());\n    if (!m)\n        return QDir();\n    return m->rootDirectory();\n}\n\nvoid ProjectView::setMainMenu(QMenu *m)\n{\n    ui->toolButton_menu->setMenu(m);\n}\n\nvoid ProjectView::closeProject()\n{\n    if (ui->treeView->model()) {\n        ui->treeView->model()->deleteLater();\n        ui->treeView->setModel(nullptr);\n    }\n    ui->targetList->clear();\n    for(auto b: projectButtons) b->setEnabled(false);\n}\n\nvoid ProjectView::openProject(const QString &projectFile)\n{\n    if (!project().isEmpty())\n        closeProject();\n    if (!projectFile.isEmpty()) {\n        labelStatus->setText(tr(\"Loading...\"));\n        QFileInfo mk(projectFile);\n        QFileSystemModel *model = new MyFileSystemModel(this);\n        model->setFilter(QDir::AllDirs|QDir::NoDotAndDotDot|QDir::Files|QDir::Hidden|QDir::System);\n        model->setNameFilterDisables(false);\n        model->setNameFilters(QStringList(\"*\"));\n        model->setIconProvider(new ProjectIconProvider(this));\n        model->setReadOnly(false);\n\n        ui->treeView->model()->deleteLater();\n        ui->treeView->setModel(model);\n        ui->treeView->setRootIndex(model->setRootPath(mk.path()));\n        for(int i=1; i<model->columnCount(); i++)\n            ui->treeView->hideColumn(i);\n        ui->treeView->header()->setSectionResizeMode(QHeaderView::ResizeToContents);\n        ui->treeView->header()->hide();\n        auto discover = new TargetUpdateDiscover(this);\n        connect(discover, SIGNAL(updateFinish(MakefileInfo)), this, SLOT(updateMakefileInfo(MakefileInfo)));\n        connect(discover, SIGNAL(updateFinish(MakefileInfo)), discover, SLOT(deleteLater()));\n        discover->start(project());\n        for(auto b: projectButtons) b->setEnabled(true);\n    }\n}\n\nvoid ProjectView::setTargetsViewOn(bool on)\n{\n    ui->targetList->setEnabled(on);\n}\n\nvoid ProjectView::debugStarted()\n{\n    ui->toolButton_startDebug->setIcon(QIcon(\":/images/actions/media-playback-stop.svg\"));\n    setProperty(\"onDebug\", true);\n}\n\nvoid ProjectView::debugStoped()\n{\n    setProperty(\"onDebug\", false);\n    ui->toolButton_startDebug->setIcon(QIcon(\":/images/actions/debug.svg\"));\n}\n\nvoid ProjectView::on_treeView_activated(const QModelIndex &index)\n{\n    QFileSystemModel *m = qobject_cast<QFileSystemModel*>(ui->treeView->model());\n    if (m) {\n        QFileInfo f = m->fileInfo(index);\n        if (f.isFile())\n            emit fileOpen(f.filePath());\n    }\n}\n\nstatic QHash<QString, QString> mapNameToMkIcon(\n{\n            // TODO: Add more Makefile targets to icon relations\n            { \"all\", \"run-build\" },\n            { \"clean\", \"run-build-clean\" },\n            { \"clean_all\", \"run-build-clean\" },\n            { \"erase\", \"run-build-clean\" },\n            { \"install\", \"run-build-install-root\" },\n            { \"download\", \"run-build-install-root\" },\n            { \"program\", \"run-build-install-root\" },\n            { \"flash\", \"run-build-install-root\" }\n});\n\nvoid ProjectView::updateMakefileInfo(const MakefileInfo &info)\n{\n    mk_info = info;\n    // QIcon icon = QIcon::fromTheme(\"run-build-configure\", QIcon(\"://images/actions/run-build-configure.svg\"));\n    ui->targetList->clear();\n    QStringList orderedTargets = mk_info.targets;\n    orderedTargets.sort();\n    for(const auto& text: orderedTargets) {\n        QString iconName = mapNameToMkIcon.contains(text)? mapNameToMkIcon.value(text) : \"run-build\";\n        QIcon icon = QIcon(QString(\"://images/actions/%1.svg\").arg(iconName));\n        QListWidgetItem *item = new QListWidgetItem;\n        ui->targetList->addItem(item);\n        auto *button = new QPushButton;\n        button->setIcon(icon);\n        button->setIconSize(QSize(32, 32));\n        button->setText(toHumanReadable(text));\n        button->setStyleSheet (\"text-align: left; padding: 4px;\");\n        ui->targetList->setItemWidget(item, button);\n        item->setSizeHint(button->sizeHint());\n        connect(button, &QPushButton::clicked, [text, this](){ emit startBuild(text); });\n    }\n    // sender()->deleteLater();\n    auto ctagProc = new QProcess(this);\n    ctagProc->setWorkingDirectory(mk_info.workingDir);\n    connect(ctagProc, static_cast<void (QProcess::*)(QProcess::ProcessError)>(&QProcess::error),\n            [ctagProc, this] () {\n        // Defer execution due to prevent crash in windows while ctagProg is running\n        // If this is called during destructor. The single shot is never executed\n        QTimer::singleShot(0, [this]() {\n            labelStatus->setText(tr(\"Done with errors\"));\n            QTimer::singleShot(LAST_MESSAGE_TIMEOUT, labelStatus, &QLabel::clear);\n        });\n        ctagProc->deleteLater();\n    });\n    connect(ctagProc, static_cast<void (QProcess::*)(int, QProcess::ExitStatus exitStatus)>(&QProcess::finished),\n            [ctagProc, this] (int exitCode, QProcess::ExitStatus exitStatus) {\n        qDebug() << \"ctags exit code\" << exitCode\n                 << \"ctags exit status\" << exitStatus << \"\\n\"\n                 << mk_info.tags.parse(ctagProc);\n        // Defer execution due to prevent crash in windows while ctagProg is running\n        // If this is called during destructor. The single shot is never executed\n        QTimer::singleShot(0, [this]() {\n            labelStatus->setText(tr(\"Done\"));\n            QTimer::singleShot(LAST_MESSAGE_TIMEOUT, labelStatus, &QLabel::clear);\n        });\n        ctagProc->deleteLater();\n    });\n    connect(ctagProc, &QProcess::stateChanged, [this](QProcess::ProcessState state) {\n        qDebug () << \"ctag state \" << state;\n    });\n    labelStatus->setText(tr(\"Indexing...\"));\n    ctagProc->start(\"ctags -R -e --c-kinds=+cdefglmnpstuvx --c++-kinds=+cdefglmnpstuvx -f -\");\n    emit projectOpened();\n}\n\nvoid ProjectView::on_targetList_clicked(const QModelIndex &index)\n{\n    QListWidgetItem *item = ui->targetList->item(index.row());\n    doTarget(item->text());\n}\n\nvoid ProjectView::onDocumentNew()\n{\n    if (!ui->treeView->selectionModel())\n        return;\n    QFileSystemModel *m = qobject_cast<QFileSystemModel*>(ui->treeView->model());\n    if (!m)\n        return;\n    QModelIndex idx = ui->treeView->selectionModel()->selectedIndexes().isEmpty()?\n                ui->treeView->rootIndex() :\n                ui->treeView->selectionModel()->selectedIndexes().first();\n    QFileInfo info = m->fileInfo(idx);\n    if (!info.isDir()) {\n        info = QFileInfo(info.absoluteDir().absolutePath());\n    }\n    QString fileName = QInputDialog::getText(this->parentWidget(), tr(\"File name\"),\n                                             tr(\"Create file on %1\")\n                                                .arg(m->fileInfo(idx).absoluteFilePath()));\n    if (!fileName.isEmpty()) {\n        QFile f(QDir(info.absoluteFilePath()).absoluteFilePath(fileName));\n        if (!f.open(QFile::WriteOnly)) {\n            QMessageBox::critical(this, tr(\"Error creating file\"), f.errorString());\n        } else {\n            f.close();\n            emit fileOpen(fileName);\n        }\n    }\n}\n\nvoid ProjectView::onFolderNew()\n{\n    if (!ui->treeView->selectionModel())\n        return;\n    QFileSystemModel *m = qobject_cast<QFileSystemModel*>(ui->treeView->model());\n    if (!m)\n        return;\n    QModelIndex idx = ui->treeView->selectionModel()->selectedIndexes().isEmpty()?\n                ui->treeView->rootIndex():\n                ui->treeView->selectionModel()->selectedIndexes().first();\n    if (!QFileInfo(m->fileInfo(idx)).isDir()) {\n        idx = idx.parent();\n        if (!m->fileInfo(idx).isDir()) {\n            qDebug() << \"ERROR parent not a dir\";\n            return;\n        }\n    }\n    QString name = QInputDialog::getText(this->parentWidget(), tr(\"Folder name\"),\n                                         tr(\"Create folder on %1\")\n                                            .arg(m->fileInfo(idx).absoluteFilePath()));\n    if (!name.isEmpty()) {\n        qDebug() << \"creating\" << name << \" on \" << m->fileName(idx);\n        m->mkdir(idx, name);\n    }\n}\n\nvoid ProjectView::onLinkNew()\n{\n    if (!ui->treeView->selectionModel())\n        return;\n    QFileSystemModel *m = qobject_cast<QFileSystemModel*>(ui->treeView->model());\n    if (!m)\n        return;\n    QModelIndex idx = ui->treeView->selectionModel()->selectedIndexes().isEmpty()?\n                ui->treeView->rootIndex():\n                ui->treeView->selectionModel()->selectedIndexes().first();\n    if (!QFileInfo(m->fileInfo(idx)).isDir()) {\n        idx = idx.parent();\n        if (!m->fileInfo(idx).isDir()) {\n            qDebug() << \"ERROR parent not a dir\";\n            return;\n        }\n    }\n    QDir targetDir(m->fileInfo(idx).absoluteFilePath());\n    QFileDialog dialog(window());\n    dialog.setWindowTitle(tr(\"Link target\"));\n    dialog.setAcceptMode(QFileDialog::AcceptOpen);\n    dialog.setDirectory(targetDir.absolutePath());\n    dialog.setFileMode(QFileDialog::Directory);\n    if (dialog.exec() != QDialog::Accepted || dialog.selectedFiles().isEmpty())\n        return;\n    QFile target(dialog.selectedFiles().first());\n    QString linkName(targetDir.absoluteFilePath(QFileInfo(target.fileName()).fileName()));\n#ifdef Q_OS_UNIX\n    if (!target.link(linkName))\n        QMessageBox::critical(window(), tr(\"Link creation fail\"), tr(\"ERROR: %1\").arg(target.errorString()));\n#else\n    qDebug() << \"windows symlink TODO\";\n#endif\n}\n\nvoid ProjectView::onElementDel()\n{\n    if (!ui->treeView->selectionModel())\n        return;\n    QFileSystemModel *m = qobject_cast<QFileSystemModel*>(ui->treeView->model());\n    if (!m)\n        return;\n    QModelIndexList items = ui->treeView->selectionModel()->selectedRows(0);\n    QMessageBox msg(window());\n    msg.setWindowTitle(tr(\"Delete files\"));\n    msg.setIcon(QMessageBox::Warning);\n    msg.addButton(QMessageBox::Yes);\n    msg.addButton(QMessageBox::No);\n    if (items.count() > 1) {\n        QCheckBox *forAll = new QCheckBox(tr(\"Do this operation for all items\"), &msg);\n        forAll->setCheckState(Qt::Unchecked);\n        msg.setCheckBox(forAll);\n        msg.addButton(QMessageBox::Cancel);\n    }\n    int last = -1;\n    for(const auto& idx: items) {\n        QModelIndex parent = idx.parent();\n        QString name = m->filePath(idx);\n        bool doForAll = false;\n        if (msg.checkBox())\n            doForAll = (msg.checkBox()->checkState() == Qt::Checked);\n        if (!doForAll) {\n            msg.setText(tr(\"Realy remove %1\").arg(name));\n            last = msg.exec();\n        }\n        switch(last) {\n        case QMessageBox::Yes:\n            if (m->fileInfo(idx).isDir()) {\n                QDir(m->fileInfo(idx).absoluteFilePath()).removeRecursively();\n            } else {\n                m->remove(idx);\n            }\n            ui->treeView->update(parent);\n            break;\n        case QMessageBox::No:\n            break;\n        case QMessageBox::Cancel:\n            return;\n        }\n    }\n}\n\nvoid ProjectView::on_toolButton_export_clicked()\n{\n    if (!project().isEmpty()) {\n        auto fileName = QFileDialog::\n                getSaveFileName(this,\n                                tr(\"Export file\"),\n                                tr(\"Unknown.template\"),\n                                tr(\"Tempalte files (*.template *.jtemplate);;\"\n                                   \"Diff files (*.diff);;\"\n                                   \"All files (*)\")\n                                );\n        if (!fileName.isEmpty())\n            (new ProjectExporter(\n                    fileName,\n                    QFileInfo(project()).absolutePath(),\n                    parentWidget()->window(),\n                    SLOT(actionExportFinish(QString)))\n                )->start();\n    }\n}\n\nstatic void messageCancelOp(QWidget *w) {\n    QMessageBox::information(w->window(), w->tr(\"Information\"), w->tr(\"Operation canceled\"));\n}\n\nvoid ProjectView::toolAction()\n{\n    QAction *a = qobject_cast<QAction*>(sender());\n    if (a) {\n        QString text = AppConfig::mutableInstance().filterTextWithVariables(a->data().toString());\n        QRegularExpressionMatch m;\n        m = QRegularExpression(R\"(\\${{text: (.+?)}})\").match(text);\n        if (m.hasMatch()) {\n            QString label = m.captured(1);\n            bool ok = false;\n            QString replacedText = QInputDialog::getText(window(), tr(\"Input text\"), label,\n                                                         QLineEdit::Normal, QString(), &ok);\n            if (!ok) {\n                messageCancelOp(this);\n                return;\n            }\n            text.remove(m.capturedStart(), m.capturedLength());\n            text.insert(m.capturedStart(), replacedText);\n        }\n        m = QRegularExpression(R\"(\\${{items: (.*?)#(.+?)}})\").match(text);\n        if (m.hasMatch()) {\n            QString label = m.captured(1);\n            QStringList items = m.captured(2).split('|');\n            bool ok = false;\n            QString replacedText = QInputDialog::getItem(window(), tr(\"Input items\"), label,\n                                                         items, 0, false, &ok);\n            if (!ok) {\n                messageCancelOp(this);\n                return;\n            }\n            text.remove(m.capturedStart(), m.capturedLength());\n            text.insert(m.capturedStart(), replacedText);\n        }\n        QString command = text;\n        qDebug() << \"EXEC\" << command;\n        emit execTool(command);\n    }\n}\n\nvoid ProjectView::fileProperties(const QFileInfo& info)\n{\n    FilePropertiesDialog d(info, window());\n    d.exec();\n}\n\nstatic ProjectView::EntryList_t loadEntries()\n{\n    ProjectView::EntryList_t list;\n\n    // Settings first, env second\n    QSettings sets;\n    sets.beginGroup(\"tools\");\n    int n = sets.beginReadArray(\"external\");\n    for(int i=0; i<n; i++) {\n        sets.setArrayIndex(i);\n        QString k = sets.value(\"name\").toString();\n        QString v = sets.value(\"command\").toString();\n        ProjectView::Entry_t e{ k, v };\n        if (!k.isEmpty() && !v.isEmpty()) {\n            if (!list.contains(e))\n                list.append(e);\n        }\n    }\n\n    for(auto e: QJsonDocument::fromJson(::getenv(\"EMBEDDED_IDE_TOOLS\")).array()) {\n        QJsonObject o = e.toObject();\n        ProjectView::Entry_t en{ o.value(\"name\").toString(), o.value(\"command\").toString() };\n        if (!en.first.isEmpty() && !en.second.isNull() && !list.contains(en))\n            list.append(en);\n    }\n\n    auto obj = QCoreApplication::instance()->property(\"hardConf\").toJsonObject();\n    auto tools = obj.value(\"tools\").toArray();\n    for(const QJsonValue& e: tools) {\n        auto le = e.toObject();\n        ProjectView::Entry_t en{ le.value(\"name\").toString(), le.value(\"command\").toString() };\n        if (!en.first.isEmpty() && !en.second.isNull() && !list.contains(en))\n            list.append(en);\n    }\n\n    return list;\n}\n\nQMenu *ProjectView::createExternalToolsMenu()\n{\n    auto menu = new QMenu(this);\n    EntryList_t entries = loadEntries();\n    if (!entries.isEmpty()) {\n        for(auto e: entries) {\n            QString key = e.first;\n            QString val = e.second.toString();\n            menu->addAction(QIcon(\":/images/actions/run-build.svg\"), key,\n                            this, SLOT(toolAction()))->setData(val);\n        }\n    } else\n        menu->addAction(tr(\"No entries\"))->setDisabled(true);\n    menu->setProperty(\"entries\", QVariant::fromValue(entries));\n    menu->addSeparator();\n    auto *configAction = menu->addAction(QIcon(\":/images/configure.svg\"), tr(\"Manage tools\"));\n    connect(configAction, &QAction::triggered, [this, menu]() {\n        ToolManager d(window());\n        d.setTools(menu->property(\"entries\").value<EntryList_t>());\n        if (d.exec() == QDialog::Accepted)\n            ui->toolButton_tools->setMenu(createExternalToolsMenu());\n    });\n    return menu;\n}\n\n#ifdef Q_OS_WIN\n#define RUN(fInfo) QDesktopServices::openUrl(QUrl::fromLocalFile(fInfo.absoluteFilePath()))\n#else\n#define RUN(fInfo) QProcess::execute(fInfo.absoluteFilePath())\n#endif\n\nvoid ProjectView::on_treeView_pressed(const QModelIndex &index)\n{\n    if (!QApplication::mouseButtons().testFlag(Qt::RightButton))\n        return;\n    QFileSystemModel *model = qobject_cast<QFileSystemModel*>(ui->treeView->model());\n    if (!model)\n        return;\n    QFileInfo fInfo = model->fileInfo(index);\n    auto menu = new QMenu(this);\n    auto fileNew = menu->addAction(QIcon(\":/images/document-new.svg\"), tr(\"File New\"));\n    auto folderNew = menu->addAction(QIcon(\":/images/folder-new.svg\"), tr(\"Folder New\"));\n    connect(fileNew, &QAction::triggered, this, &ProjectView::onDocumentNew);\n    connect(folderNew, &QAction::triggered, this, &ProjectView::onFolderNew);\n#ifdef Q_OS_UNIX\n    auto linkNew = menu->addAction(QIcon(\":/images/actions/insert-link-symbolic.svg\"), tr(\"New Link\"));\n    connect(linkNew, &QAction::triggered, this, &ProjectView::onLinkNew);\n#endif\n    auto editFindAction = menu->addAction(QIcon(\":/images/edit-find.svg\"), tr(\"Properties\"));\n    connect(editFindAction, &QAction::triggered, [this, fInfo]() { fileProperties(fInfo); });\n    if (fInfo.isExecutable() && !fInfo.isDir()) {\n        auto runAction = menu->addAction(QIcon(\":/images/actions/run-build.svg\"), tr(\"Execute\"));\n        connect(runAction, &QAction::triggered, [fInfo] { RUN(fInfo); });\n    }\n    auto externalOpenAction = menu->addAction(QIcon(\":/images/document-open.svg\"), tr(\"Open External\"));\n    connect(externalOpenAction, &QAction::triggered, [fInfo] { QDesktopServices::openUrl(QUrl::fromLocalFile(fInfo.absoluteFilePath())); });\n\n    if (ui->treeView->rootIndex() != index) {\n        menu->addSeparator();\n        auto refreshAction = menu->addAction(QIcon(\":/images/actions/view-refresh.svg\"), tr(\"Rename\"));\n        connect(refreshAction, &QAction::triggered, [this, index]() { ui->treeView->edit(index); });\n        auto editDelAction = menu->addAction(QIcon(\":/images/edit-delete.svg\"), tr(\"Delete\"));\n        connect(editDelAction, &QAction::triggered, this, &ProjectView::onElementDel);\n    }\n    menu->exec(QCursor::pos());\n}\n\nvoid ProjectView::on_toolButton_find_clicked()\n{\n    emit openFindDialog();\n}\n\nvoid ProjectView::on_toolButton_startDebug_clicked()\n{\n    emit debugChange(!property(\"onDebug\").toBool());\n}\n\nvoid ProjectView::on_treeView_customContextMenuRequested(const QPoint &pos)\n{\n    auto idx = ui->treeView->indexAt(pos);\n    if (!idx.isValid())\n        idx = ui->treeView->rootIndex();\n    on_treeView_pressed(idx);\n}\n\nvoid ProjectView::on_toolButton_refreshProject_clicked()\n{\n    auto saved = project();\n    closeProject();\n    openProject(saved);\n}\n"
  },
  {
    "path": "old/projectview.h",
    "content": "#ifndef DOCUMENTVIEW_H\n#define DOCUMENTVIEW_H\n\n#include <QWidget>\n#include <QModelIndex>\n#include <QDir>\n#include <QFileInfo>\n#include <QFileSystemModel>\n\n#include \"makefileinfo.h\"\n#include \"etags.h\"\n\nnamespace Ui {\n    class ProjectView;\n}\n\nclass QLabel;\nclass QToolButton;\nclass QMenu;\nclass QProcess;\nclass TagList;\n\nclass MyFileSystemModel: public QFileSystemModel\n{\n    Q_OBJECT\npublic:\n    MyFileSystemModel(QObject *parent = 0l);\n    virtual QVariant headerData(int section, Qt::Orientation orientation, int role) const;\n\nprivate:\n    QStringList sectionName;\n};\n\nclass ProjectView : public QWidget\n{\n    Q_OBJECT\n\npublic:\n    typedef QPair<QString, QVariant> Entry_t;\n    typedef QList<Entry_t> EntryList_t;\n\n    explicit ProjectView(QWidget *parent = 0);\n    ~ProjectView();\n\n    QString project() const;\n    QString projectName() const;\n    QDir projectPath() const;\n    const MakefileInfo &makeInfo() const { return mk_info; }\n    const ETags &tags() const { return mk_info.tags; }\n    void setMainMenu(QMenu *m);\n\npublic slots:\n    void closeProject();\n    void openProject(const QString& projectFile);\n    void setTargetsViewOn(bool on);\n    void debugStarted();\n    void debugStoped();\n    void doTarget(const QString& target) {\n        emit startBuild(target);\n    }\n    void doExport() { on_toolButton_export_clicked(); }\n\nprivate slots:\n    void on_treeView_activated(const QModelIndex &index);\n\n    void updateMakefileInfo(const MakefileInfo &info);\n\n    void on_targetList_clicked(const QModelIndex &index);\n\n    void onDocumentNew();\n\n    void onFolderNew();\n\n    void onLinkNew();\n\n    void onElementDel();\n\n    void on_toolButton_export_clicked();\n\n    void toolAction();\n\n    void fileProperties(const QFileInfo& info);\n\n    void on_treeView_pressed(const QModelIndex &index);\n\n    void on_toolButton_find_clicked();\n\n    void on_toolButton_startDebug_clicked();\n\n    void on_treeView_customContextMenuRequested(const QPoint &pos);\n\n    void on_toolButton_refreshProject_clicked();\n\nsignals:\n    void projectOpened();\n    void fileOpen(const QString& file);\n    void startBuild(const QString& target);\n    void execTool(const QString& command);\n    void openFindDialog();\n    void debugChange(bool enable);\n\nprivate:\n    Ui::ProjectView *ui;\n    MakefileInfo mk_info;\n    TagList *tagList;\n    QList<QToolButton*> projectButtons;\n    QLabel *labelStatus;\n\n    QMenu *createExternalToolsMenu();\n};\n\n#endif // DOCUMENTVIEW_H\n"
  },
  {
    "path": "old/projectview.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ProjectView</class>\n <widget class=\"QWidget\" name=\"ProjectView\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>282</width>\n    <height>440</height>\n   </rect>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <property name=\"spacing\">\n    <number>0</number>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout_3\">\n     <property name=\"spacing\">\n      <number>0</number>\n     </property>\n     <property name=\"topMargin\">\n      <number>2</number>\n     </property>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_menu\">\n       <property name=\"toolTip\">\n        <string>Project</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"resources/resources.qrc\">\n         <normaloff>:/images/application-menu.svg</normaloff>:/images/application-menu.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n       <property name=\"popupMode\">\n        <enum>QToolButton::InstantPopup</enum>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>0</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_startDebug\">\n       <property name=\"enabled\">\n        <bool>false</bool>\n       </property>\n       <property name=\"toolTip\">\n        <string>Debug</string>\n       </property>\n       <property name=\"text\">\n        <string>...</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"resources/resources.qrc\">\n         <normaloff>:/images/actions/debug.svg</normaloff>:/images/actions/debug.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_refreshProject\">\n       <property name=\"enabled\">\n        <bool>false</bool>\n       </property>\n       <property name=\"toolTip\">\n        <string>Reload Project</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"resources/resources.qrc\">\n         <normaloff>:/images/actions/view-refresh.svg</normaloff>:/images/actions/view-refresh.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_export\">\n       <property name=\"enabled\">\n        <bool>false</bool>\n       </property>\n       <property name=\"toolTip\">\n        <string>Project export</string>\n       </property>\n       <property name=\"text\">\n        <string>...</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"resources/resources.qrc\">\n         <normaloff>:/images/document-export.svg</normaloff>:/images/document-export.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_find\">\n       <property name=\"enabled\">\n        <bool>false</bool>\n       </property>\n       <property name=\"toolTip\">\n        <string>Find</string>\n       </property>\n       <property name=\"text\">\n        <string>...</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"resources/resources.qrc\">\n         <normaloff>:/images/edit-find.svg</normaloff>:/images/edit-find.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_tools\">\n       <property name=\"toolTip\">\n        <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tools&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>\n       </property>\n       <property name=\"text\">\n        <string>...</string>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"resources/resources.qrc\">\n         <normaloff>:/images/actions/run-build-configure.svg</normaloff>:/images/actions/run-build-configure.svg</iconset>\n       </property>\n       <property name=\"iconSize\">\n        <size>\n         <width>32</width>\n         <height>32</height>\n        </size>\n       </property>\n       <property name=\"popupMode\">\n        <enum>QToolButton::InstantPopup</enum>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QSplitter\" name=\"splitter\">\n     <property name=\"orientation\">\n      <enum>Qt::Vertical</enum>\n     </property>\n     <widget class=\"QTreeView\" name=\"treeView\">\n      <property name=\"contextMenuPolicy\">\n       <enum>Qt::CustomContextMenu</enum>\n      </property>\n      <property name=\"editTriggers\">\n       <set>QAbstractItemView::EditKeyPressed</set>\n      </property>\n      <property name=\"dragEnabled\">\n       <bool>true</bool>\n      </property>\n      <property name=\"dragDropOverwriteMode\">\n       <bool>true</bool>\n      </property>\n      <property name=\"dragDropMode\">\n       <enum>QAbstractItemView::DragDrop</enum>\n      </property>\n      <property name=\"defaultDropAction\">\n       <enum>Qt::MoveAction</enum>\n      </property>\n      <property name=\"alternatingRowColors\">\n       <bool>true</bool>\n      </property>\n      <property name=\"selectionMode\">\n       <enum>QAbstractItemView::ExtendedSelection</enum>\n      </property>\n      <property name=\"iconSize\">\n       <size>\n        <width>22</width>\n        <height>22</height>\n       </size>\n      </property>\n      <property name=\"animated\">\n       <bool>true</bool>\n      </property>\n      <attribute name=\"headerCascadingSectionResizes\">\n       <bool>true</bool>\n      </attribute>\n     </widget>\n     <widget class=\"QListWidget\" name=\"targetList\">\n      <property name=\"editTriggers\">\n       <set>QAbstractItemView::NoEditTriggers</set>\n      </property>\n      <property name=\"selectionMode\">\n       <enum>QAbstractItemView::NoSelection</enum>\n      </property>\n      <property name=\"iconSize\">\n       <size>\n        <width>22</width>\n        <height>22</height>\n       </size>\n      </property>\n     </widget>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"resources/resources.qrc\"/>\n </resources>\n <connections/>\n <slots>\n  <signal>buildProject()</signal>\n </slots>\n</ui>\n"
  },
  {
    "path": "old/projetfromtemplate.cpp",
    "content": "#include \"projetfromtemplate.h\"\n\n#include <QProcess>\n#include <QFileInfo>\n#include <QDir>\n\n#include <QtConcurrent>\n\n#include <QtDebug>\n\nProjetFromTemplate::ProjetFromTemplate(QString projectName,\n                                       QString templateText,\n                                       QObject *parent,\n                                       const char *slotName) :\n    QObject(parent), proc(new QProcess(this)), m_project(std::move(projectName)), m_templateText(std::move(templateText))\n{\n    connect(proc, SIGNAL(started()), this, SLOT(onStarted()));\n    connect(proc, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(onFinish(int, QProcess::ExitStatus)));\n    connect(proc, SIGNAL(error(QProcess::ProcessError)), this, SLOT(onError(QProcess::ProcessError)));\n    connect(this, SIGNAL(endOfCreation(QString,QString)), parent, slotName);\n    connect(proc, &QProcess::readyReadStandardOutput, [this]() {\n        qDebug() << \"DIFF: \" << proc->readAllStandardOutput();\n    });\n}\n\nvoid ProjetFromTemplate::start()\n{\n    if (QDir::root().mkpath(m_project)) {\n        proc->setWorkingDirectory(m_project);\n        proc->start(QString(\"patch -p1\"));\n    } else {\n        emit endOfCreation(QString(), tr(\"Cant create path %1\").arg(m_project));\n        deleteLater();\n    }\n}\n\nvoid ProjetFromTemplate::onStarted()\n{\n    qDebug() << \"writing\" << proc->write(m_templateText.toLocal8Bit());\n    while (proc->bytesToWrite() > 0) {\n        qDebug() << \"...\" << proc->bytesToWrite();\n        if (proc->waitForBytesWritten())\n            break;\n    }\n    proc->closeWriteChannel();\n}\n\nvoid ProjetFromTemplate::onFinish(int ret, QProcess::ExitStatus status)\n{\n    QString errorString;\n    if (status != QProcess::NormalExit) {\n        QDir::root().rmdir(m_project);\n        errorString = proc->errorString();\n    } else if (ret != 0)\n        errorString = tr(\"Diff return %1\").arg(ret);\n    emit endOfCreation(m_project, errorString);\n    deleteLater();\n}\n\nvoid ProjetFromTemplate::onError(QProcess::ProcessError err)\n{\n    Q_UNUSED(err);\n    emit endOfCreation(QString(), QString(\"DIFF: %1\").arg(proc->errorString()));\n    deleteLater();\n}\n"
  },
  {
    "path": "old/projetfromtemplate.h",
    "content": "#ifndef PROJETFROMTEMPLATE_H\n#define PROJETFROMTEMPLATE_H\n\n#include <QObject>\n#include <QProcess>\n\nclass ProjetFromTemplate : public QObject\n{\n    Q_OBJECT\npublic:\n    explicit ProjetFromTemplate(QString  projectName, QString  templateText,\n                                QObject *parent, const char *slotName);\n\nsignals:\n    void endOfCreation(const QString& project, const QString& error);\n\npublic slots:\n    void start();\n\nprivate slots:\n    void onStarted();\n    void onFinish(int ret, QProcess::ExitStatus status);\n    void onError(QProcess::ProcessError err);\n\nprivate:\n    QProcess *proc;\n    QString m_project;\n    QString m_templateText;\n};\n\n#endif // PROJETFROMTEMPLATE_H\n"
  },
  {
    "path": "old/qsvtextoperationswidget.cpp",
    "content": "#include \"qsvtextoperationswidget.h\"\n#include \"ui_searchform.h\"\n#include \"ui_replaceform.h\"\n\n#include <QLayout>\n#include <QHBoxLayout>\n#include <QTextEdit>\n#include <QLabel>\n#include <QLineEdit>\n#include <QPushButton>\n#include <QPlainTextEdit>\n#include <QTextDocument>\n#include <QMessageBox>\n\n#include <QDebug>\n\nQsvTextOperationsWidget::QsvTextOperationsWidget( QWidget *parent )\n\t: QObject(parent)\n{\n\tsetObjectName(\"QsvTextOperationWidget\");\n\tm_gotoLine    = NULL;\n\tm_search      = NULL;\n\tm_replace     = NULL;\n\tm_document    = NULL;\n\tsearchFormUi  = NULL;\n\treplaceFormUi = NULL;\n\tsearchFoundColor\t= QColor( \"#DDDDFF\" ); //QColor::fromRgb( 220, 220, 255)\n\tsearchNotFoundColor\t= QColor( \"#FFAAAA\" ); //QColor::fromRgb( 255, 102, 102) \"#FF6666\"\n\t\n\tm_replaceTimer.setInterval(100);\n\tm_replaceTimer.setSingleShot(true);\n\tconnect(&m_replaceTimer,SIGNAL(timeout()),this,SLOT(updateReplaceInput()));\n\n\t// this one is slower, to let the user think about his action\n\t// this is a modifying command, unlike a passive search\n\tm_searchTimer.setInterval(250);\n\tm_searchTimer.setSingleShot(true);\n\tconnect(&m_searchTimer,SIGNAL(timeout()),this,SLOT(updateSearchInput()));\n\t\n\t// TODO clean this up, this is too ugly to be in a constructor\n\tQTextEdit *t = qobject_cast<QTextEdit*>(parent);\n\tif (t) {\n\t\tm_document = t->document();\n\t}\n\telse {\n\t\tQPlainTextEdit *pt = qobject_cast<QPlainTextEdit*>(parent);\n\t\tif (pt) {\n\t\t\tm_document = pt->document();\n\t\t}\n\t}\n\tconnect(parent,SIGNAL(widgetResized()),this,SLOT(adjustBottomWidget()));\n\tparent->installEventFilter(this);\n}\n\nvoid QsvTextOperationsWidget::initSearchWidget()\n{\n\tm_search = new QWidget( (QWidget*) parent() );\n\tm_search->setObjectName(\"m_search\");\n\tsearchFormUi = new Ui::searchForm();\n\tsearchFormUi->setupUi(m_search);\n\tsearchFormUi->searchText->setFont( m_search->parentWidget()->font() );\n        if (searchFormUi->frame->style()->inherits(\"QWindowsStyle\"))\n\t\tsearchFormUi->frame->setFrameStyle(QFrame::StyledPanel);\n\t// otherwise it inherits the default font from the editor - fixed\n\tm_search->setFont(QApplication::font());\n\tm_search->adjustSize();\n\tm_search->hide();\n\n\tconnect(searchFormUi->searchText,SIGNAL(textChanged(QString)),this,SLOT(on_searchText_modified(QString)));\n\tconnect(searchFormUi->nextButton,SIGNAL(clicked()),this,SLOT(searchNext()));\n\tconnect(searchFormUi->previousButton,SIGNAL(clicked()),this,SLOT(searchPrev()));\n\tconnect(searchFormUi->closeButton,SIGNAL(clicked()),this, SLOT(showSearch()));\n}\n\nvoid QsvTextOperationsWidget::initReplaceWidget()\n{\n\tm_replace = new QWidget( (QWidget*) parent() );\n\tm_replace->setObjectName(\"m_replace\");\n\treplaceFormUi = new Ui::replaceForm();\n\treplaceFormUi->setupUi(m_replace);\n\treplaceFormUi->optionsGroupBox->hide();\n\treplaceFormUi->findText->setFont( m_replace->parentWidget()->font() );\n\treplaceFormUi->replaceText->setFont( m_replace->parentWidget()->font() );\n        if (replaceFormUi->frame->style()->inherits(\"QWindowsStyle\"))\n\t\treplaceFormUi->frame->setFrameStyle(QFrame::StyledPanel);\n\t// otherwise it inherits the default font from the editor - fixed\n\tm_replace->setFont(QApplication::font());\n\tm_replace->adjustSize();\n\tm_replace->hide();\n\n\tconnect(replaceFormUi->moreButton,SIGNAL(clicked()),this,SLOT(adjustBottomWidget()));\n\tconnect(replaceFormUi->findText,SIGNAL(textChanged(QString)),this,SLOT(on_replaceText_modified(QString)));\n\tconnect(replaceFormUi->replaceButton,SIGNAL(clicked()),this,SLOT(on_replaceOldText_returnPressed()));\n\tconnect(replaceFormUi->closeButton,SIGNAL(clicked()),this, SLOT(showReplace()));\n}\n\nvoid QsvTextOperationsWidget::initGotoLineWidget()\n{\n\tm_gotoLine = new QWidget( (QWidget*) parent() );\n\tm_gotoLine->setObjectName(\"m_gotoLine\");\n\tm_gotoLine->adjustSize();\n\tm_gotoLine->hide();\n}\n\nvoid\tQsvTextOperationsWidget::searchNext()\n{\n\tif (!searchFormUi)\n\t\treturn;\n\tissue_search( searchFormUi->searchText->text(), \n\t\tgetTextCursor(), \n\t\tgetSearchFlags() & ~QTextDocument::FindBackward,\n\t\tsearchFormUi->searchText,\n\t\ttrue\n\t);\n}\n\nvoid\tQsvTextOperationsWidget::searchPrevious()\n{\n\tif (!searchFormUi)\n\treturn;\n\tissue_search( searchFormUi->searchText->text(),\n\t\tgetTextCursor(), \n\t\tgetSearchFlags() | QTextDocument::FindBackward, \n\t\tsearchFormUi->searchText,\n\t\ttrue\n\t);\n}\n\nvoid\tQsvTextOperationsWidget::adjustBottomWidget()\n{\n\tshowBottomWidget(NULL);\n}\n\nvoid\t QsvTextOperationsWidget::updateSearchInput()\n{\n\tif (!searchFormUi)\n\t\treturn;\n\tissue_search(searchFormUi->searchText->text(),\n\t\tm_searchCursor,\n\t\tgetSearchFlags(),\n\t\tsearchFormUi->searchText,\n\t\ttrue\n\t);\n}\n\nvoid\t QsvTextOperationsWidget::updateReplaceInput()\n{\n\tif (!replaceFormUi)\n\t\treturn;\n\tissue_search(replaceFormUi->findText->text(),\n\t\tm_searchCursor,\n\t\tgetReplaceFlags(),\n\t\treplaceFormUi->findText,\n\t\ttrue\n\t);\n}\n\nbool\t QsvTextOperationsWidget::eventFilter(QObject *obj, QEvent *event)\n{\n\tif (obj != parent())\n\t\treturn false;\n\tif (event->type() != QEvent::KeyPress)\n\t\treturn false;\n\n\tQKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);\n\tswitch (keyEvent->key()){\n\t\tcase Qt::Key_Escape:\n\t\t\tif (m_search && m_search->isVisible()){\n\t\t\t\tshowSearch();\n\t\t\t\treturn true;\n\t\t\t} else if (m_replace && m_replace->isVisible()){\n\t\t\t\tshowReplace();\n\t\t\t\treturn true;\n\t\t\t}/* else if (m_gotoLine && m_gotoLine->isVisible()) {\n\t\t\t\tshowGotoLine();\n\t\t\t\treturn true;\n\t\t\t}*/\n\t\t\tbreak;\n\t\t\t\n\t\tcase Qt::Key_Enter:\n\t\tcase Qt::Key_Return:\n\t\t\tif (m_search && m_search->isVisible()){\n\t\t\t\tif (keyEvent->modifiers().testFlag(Qt::ControlModifier) ||\n\t\t\t\t    keyEvent->modifiers().testFlag(Qt::AltModifier) ||\n\t\t\t\t    keyEvent->modifiers().testFlag(Qt::ShiftModifier) )\n\t\t\t\t\tsearchPrev();\n\t\t\t\telse\n\t\t\t\t\tsearchNext();\n\t\t\t\treturn true;\n\t\t\t} else if (m_replace && m_replace->isVisible()){\n\t\t\t\tif (keyEvent->modifiers().testFlag(Qt::ControlModifier) ||\n\t\t\t\t    keyEvent->modifiers().testFlag(Qt::AltModifier) ||\n\t\t\t\t    keyEvent->modifiers().testFlag(Qt::ShiftModifier) )\n\t\t\t\t\ton_replaceAll_clicked();\n\t\t\t\telse\n\t\t\t\t\ton_replaceOldText_returnPressed();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\t// TODO replace, goto line\n\t\t\tbreak;\n\n\t\tcase Qt::Key_Tab:\n\t\tcase Qt::Key_Backtab:\n\t\t\tif (m_replace && m_replace->isVisible()){\n\t\t\t\t/*\n\t\t\t\t// TODO - no cycle yet.\n\t\t\t\tif (Qt::Key_Tab == keyEvent->key())\n\t\t\t\t\tm_replace->focusWidget()->nextInFocusChain()->setFocus();\n\t\t\t\telse\n\t\t\t\t\tm_replace->focusWidget()->previousInFocusChain()->setFocus();\n\t\t\t\t*/\n\t\t\t\t// Instead - cycle between those two input lines. IMHO good enough\n\t\t\t\tif (replaceFormUi->replaceText->hasFocus()){\n\t\t\t\t\treplaceFormUi->findText->setFocus();\n\t\t\t\t\treplaceFormUi->findText->selectAll();\n\t\t\t\t}\n\t\t\t\telse{\n\t\t\t\t\treplaceFormUi->replaceText->setFocus();\n\t\t\t\t\treplaceFormUi->replaceText->selectAll();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tbreak;\n\t}\n\n\treturn false;\n}\n\nQFlags<QTextDocument::FindFlag> QsvTextOperationsWidget::getSearchFlags()\n{\n\tQFlags<QTextDocument::FindFlag> f;\n\n\t// one can never be too safe\n\tif (!searchFormUi){\n\t\tqDebug(\"%s:%d - searchFormUi not available, memory problems?\", __FILE__, __LINE__ );\n\t\treturn f;\n\t}\n\n\tif (searchFormUi->caseSensitiveCheckBox->isChecked())\n\t\tf = f | QTextDocument::FindCaseSensitively;\n\tif (searchFormUi->wholeWorldsCheckbox->isChecked())\n\t\tf = f | QTextDocument::FindWholeWords;\n\treturn f;\n}\n\nQFlags<QTextDocument::FindFlag> QsvTextOperationsWidget::getReplaceFlags()\n{\n\tQFlags<QTextDocument::FindFlag> f;\n\tif (!replaceFormUi){\n\t\tqDebug(\"%s:%d - replaceFormUi not available, memory problems?\", __FILE__, __LINE__ );\n\t\treturn f;\n\t}\n\tif (replaceFormUi->caseCheckBox->isChecked())\n\t\tf = f | QTextDocument::FindCaseSensitively;\n\tif (replaceFormUi->wholeWordsCheckBox->isChecked())\n\t\tf = f | QTextDocument::FindWholeWords;\n\treturn f;\n}\n\nQTextCursor\tQsvTextOperationsWidget::getTextCursor()\n{\n\tQTextCursor searchCursor;\n\tQTextEdit *t = qobject_cast<QTextEdit*>(parent());\n\tif (t) {\n\t\tsearchCursor = t->textCursor();\n\t} else {\n\t\tQPlainTextEdit *pt = qobject_cast<QPlainTextEdit*>(parent());\n\t\tif (pt) {\n\t\t\tsearchCursor = pt->textCursor();\n\t\t}\n\t}\n\treturn searchCursor;\n}\n\nvoid\tQsvTextOperationsWidget::setTextCursor(QTextCursor c)\n{\n\tQTextEdit *t = qobject_cast<QTextEdit*>(parent());\n\tif (t) {\n\t\tt->setTextCursor(c);\n\t} else {\n\t\tQPlainTextEdit *pt = qobject_cast<QPlainTextEdit*>(parent());\n\t\tif (pt) {\n\t\t\tpt->setTextCursor(c);\n\t\t}\n\t}\n}\n\nQTextDocument* QsvTextOperationsWidget::getTextDocument()\n{\n\tQTextEdit *t = qobject_cast<QTextEdit*>(parent());\n\tif (t) {\n\t\treturn t->document();\n\t} else {\n\t\tQPlainTextEdit *pt = qobject_cast<QPlainTextEdit*>(parent());\n\t\tif (pt) {\n\t\t\treturn pt->document();\n\t\t}\n\t}\n\treturn NULL;\n}\n\nvoid QsvTextOperationsWidget::showSearch()\n{\n\tif (!m_search)\n\t\tinitSearchWidget();\n\tif (m_replace && m_replace->isVisible())\n\t\tm_replace->hide();\n\n\tQWidget *parent = qobject_cast<QWidget*>(this->parent());\n\tif (m_search->isVisible()) {\n\t\tm_search->hide();\n\t\tif (parent)\n\t\t\tparent->setFocus();\n\t\treturn;\n\t}\n\n\tm_searchCursor = getTextCursor();\n\tsearchFormUi->searchText->setFocus();\n\tsearchFormUi->searchText->selectAll();\n\tshowBottomWidget(m_search);\n}\n\nvoid\tQsvTextOperationsWidget::on_replaceOldText_returnPressed()\n{\n\tif (QApplication::keyboardModifiers().testFlag(Qt::ControlModifier) ||\n\t    QApplication::keyboardModifiers().testFlag(Qt::AltModifier) ||\n\t    QApplication::keyboardModifiers().testFlag(Qt::ShiftModifier) ) {\n\t\ton_replaceAll_clicked();\n\t\tshowReplace();\n\t\treturn;\n\t}\n\n\tQTextCursor c = m_searchCursor;\n\tQTextDocument *doc = getTextDocument();\n\tif (!doc){\n\t\tqDebug(\"%s:%d - no document found, using a wrong class? wrong parent?\", __FILE__,__LINE__);\n\t\treturn;\n\t}\n\tc = doc->find( replaceFormUi->findText->text(), c, getReplaceFlags() );\n\tif (c.isNull())\n\t\treturn;\n\n\tint start = c.selectionStart();\n\tint end   = c.selectionEnd();\n\tc.beginEditBlock();\n\tc.deleteChar();\n\tc.insertText( replaceFormUi->replaceText->text() );\n\tc.setPosition(start,QTextCursor::KeepAnchor);\n\tc.setPosition(end  ,QTextCursor::MoveAnchor);\n\tc.endEditBlock();\n\tsetTextCursor( c );\n\n\t// is there any other apperance of this text?\n\tm_searchCursor = c;\n\tupdateReplaceInput();\n}\n\nvoid\tQsvTextOperationsWidget::on_replaceAll_clicked()\n{\n\t// WHY NOT HIDING THE WIDGET?\n\t// it seems that if you hide the widget, when the replace all action\n\t// is triggered by pressing control+enter on the replace widget\n\t// eventually an \"enter event\" is sent to the text eidtor.\n\t// the work around is to update the transparency of the widget, to let the user\n\t// see the text bellow the widget\n\n\t//showReplaceWidget();\n\tm_replace->hide();\n\n\tint replaceCount = 0;\n\t//        replaceWidget->setWidgetTransparency( 0.2 );\n\tQTextCursor c = getTextCursor();\n\tc = getTextDocument()->find( replaceFormUi->replaceText->text(), c, getReplaceFlags() );\n\n\twhile (!c.isNull())\n\t{\n\t\tsetTextCursor( c );\n\t\tQMessageBox::StandardButton button = QMessageBox::question( qobject_cast<QWidget*>(parent()), tr(\"Replace all\"), tr(\"Replace this text?\"),\n\t\t\tQMessageBox::Yes | QMessageBox::Ignore | QMessageBox::Cancel );\n\n\t\tif (button == QMessageBox::Cancel)\n\t\t{\n\t\t\tbreak;\n\n\t\t}\n\t\telse if (button == QMessageBox::Yes)\n\t\t{\n\t\t\tc.beginEditBlock();\n\t\t\tc.deleteChar();\n\t\t\tc.insertText( replaceFormUi->replaceText->text() );\n\t\t\tc.endEditBlock();\n\t\t\tsetTextCursor( c );\n\t\t\treplaceCount++;\n\t\t}\n\n\t\tc = getTextDocument()->find( replaceFormUi->replaceText->text(), c, getReplaceFlags() );\n\t}\n\t// replaceWidget->setWidgetTransparency( 0.8 );\n\tm_replace->show();\n\n\tQMessageBox::information( 0, tr(\"Replace all\"), tr(\"%1 replacement(s) made\").arg(replaceCount) );\n}\n\nvoid\tQsvTextOperationsWidget::showReplace()\n{\n\tif (!m_replace)\n\t\tinitReplaceWidget();\n\tif (m_search && m_search->isVisible())\n\t\tm_search->hide();\n\n\tQWidget *parent = qobject_cast<QWidget*>(this->parent());\n\tif (m_replace->isVisible()) {\n\t\tm_replace->hide();\n\t\tif (parent)\n\t\t\tparent->setFocus();\n\t\treturn;\n\t}\n\n\tif (m_searchCursor.isNull())\n\t\tm_searchCursor = getTextCursor();\n\treplaceFormUi->findText->setFocus();\n\treplaceFormUi->findText->selectAll();\n\tshowBottomWidget(m_replace);\n}\n\nvoid QsvTextOperationsWidget::showGotoLine()\n{\n\tif (!m_gotoLine)\n\tinitGotoLineWidget();\n\n\tQWidget *parent = qobject_cast<QWidget*>(this->parent());\n\tif (m_gotoLine->isVisible()) {\n\t\tm_gotoLine->hide();\n\t\tif (parent)\n\t\t\tparent->setFocus();\n\t\treturn;\n\t}\n\n\tshowBottomWidget(m_gotoLine);\n}\n\nvoid\tQsvTextOperationsWidget::showBottomWidget(QWidget* w)\n{\n\tif (w == NULL) {\n\t\tif (m_replace && m_replace->isVisible())\n\t\t\tw = m_replace;\n\t\telse if (m_search && m_search->isVisible())\n\t\t\tw = m_search;\n\t\telse if (m_gotoLine && m_gotoLine->isVisible())\n\t\t\tw = m_gotoLine;\n\t}\n\tif (!w)\n\t\treturn;\n\n\tQRect r;\n\tQWidget *parent = qobject_cast<QWidget*>(this->parent());\n\n\t// I must admit this line looks ugly, but I am open to suggestions\n\tif (parent->inherits(\"QAbstractScrollArea\"))\n\t\tparent = ((QAbstractScrollArea*) (parent))->viewport();\n\n\tr = parent->rect();\n\tw->adjustSize();\n\tr.adjust(10, 0, -10, 0);\n\tr.setHeight(w->height());\n\tr.moveBottom(parent->rect().height()-10);\n\n\tr.moveLeft(parent->pos().x() + 10);\n\tw->setGeometry(r);\n\tw->show();\n}\n\nvoid QsvTextOperationsWidget::on_searchText_modified(QString s)\n{\n\tif (m_searchTimer.isActive())\n\t\tm_searchTimer.stop();\n\tm_searchTimer.start();\n\tQ_UNUSED(s);\n\n\t//this will triggered by the timer\n\t//updateSearchInput();\n}\n\nvoid\tQsvTextOperationsWidget::on_replaceText_modified(QString s)\n{\n\tif (m_replaceTimer.isActive())\n\t\tm_replaceTimer.stop();\n\tm_replaceTimer.start();\n\tQ_UNUSED(s);\n\n\t//this will be triggered by the timer\n\t//updateReplaceInput();\n}\n\nbool\tQsvTextOperationsWidget::issue_search( const QString &text, QTextCursor newCursor, QFlags<QTextDocument::FindFlag> findOptions, QLineEdit *l, bool moveCursor )\n{\n\tQTextCursor c = m_document->find( text, newCursor, findOptions );\n\tbool found = ! c.isNull();\n\n\t//lets try again, from the start\n\tif (!found) {\n\t\tc.movePosition(findOptions.testFlag(QTextDocument::FindBackward)? QTextCursor::End : QTextCursor::Start);\n\t\tc = m_document->find(text, c, findOptions);\n\t\tfound = ! c.isNull();\n\t}\n\n\tQPalette p = l->palette();\n\tif (found) {\n\t\tp.setColor(QPalette::Base, searchFoundColor);\n\t} else {\n\t\tif (!text.isEmpty())\n\t\t\tp.setColor(QPalette::Base, searchNotFoundColor);\n\t\telse\n\t\t\tp.setColor(QPalette::Base,\n\t\t\t\tl->style()->standardPalette().base().color()\n\t\t\t);\n\t\tc =  m_searchCursor;\n\t}\n\tl->setPalette(p);\n\n\tif (moveCursor){\n\t\tint start = c.selectionStart();\n\t\tint end   = c.selectionEnd();\n\t\tc.setPosition(end  ,QTextCursor::MoveAnchor);\n\t\tc.setPosition(start,QTextCursor::KeepAnchor);\n\t\tsetTextCursor(c);\n\t}\n\treturn found;\n}\n"
  },
  {
    "path": "old/qsvtextoperationswidget.h",
    "content": "#ifndef QSVTEXTOPERATIONSWIDGET_H\n#define QSVTEXTOPERATIONSWIDGET_H\n\n// this is done to shut up warnings inside Qt Creator\n// if you remove it, the whole project gets marked with warnings\n// as it thinks QObject is not defined. WTF.\nclass QObject;\nclass QString;\nclass QTextCursor;\n\n#include <QObject>\n#include <QString>\n#include <QTextCursor>\n#include <QTextDocument>\n#include <QColor>\n#include <QTimer>\n\nclass QWidget;\nclass QLineEdit;\n\nnamespace Ui{\n\tclass searchForm;\n\tclass replaceForm;\n}\n\nclass QsvTextEdit;\n\nclass QsvTextOperationsWidget : public QObject\n{\n\tQ_OBJECT\n\n\tfriend class QsvTextEdit;\n\npublic:\n\tQsvTextOperationsWidget( QWidget *parent );\n\tvoid initSearchWidget();\n\tvoid initReplaceWidget();\n\tvoid initGotoLineWidget();\n\n\tQFlags<QTextDocument::FindFlag> getSearchFlags();\n\tQFlags<QTextDocument::FindFlag> getReplaceFlags();\n\n\tvirtual QTextCursor getTextCursor();\n\tvirtual void setTextCursor(QTextCursor c);\n\tvirtual QTextDocument* getTextDocument();\n\npublic slots:\n\tvoid showSearch();\n\tvoid showReplace();\n\tvoid showGotoLine();\n\tvoid showBottomWidget(QWidget* w=NULL);\n\tvoid on_searchText_modified(QString s);\n\tvoid on_replaceText_modified(QString s);\n\tvoid on_replaceOldText_returnPressed();\n\tvoid on_replaceAll_clicked();\n\tvoid searchNext();\n\tvoid searchPrevious();\n\tvoid searchPrev(){ searchPrevious(); }\n\tvoid adjustBottomWidget();\n\t\n\tvoid updateSearchInput();\n\tvoid updateReplaceInput();\n\t\n\nprotected:\n\tbool eventFilter(QObject *obj, QEvent *event);\n\tbool issue_search( const QString &text, QTextCursor newCursor, QFlags<QTextDocument::FindFlag> findOptions, QLineEdit *l, bool moveCursor );\n\n\tQTextCursor m_searchCursor;\n\tQTextDocument *m_document;\n\tQTimer m_replaceTimer;\n\tQTimer m_searchTimer;\n\t\npublic:\n\tQWidget *m_search;\n\tQWidget *m_replace;\n\tQWidget *m_gotoLine;\n\tQColor searchFoundColor;\n\tQColor searchNotFoundColor;\n\t\n\tUi::searchForm *searchFormUi;\n\tUi::replaceForm *replaceFormUi;\n};\n\n#endif // QSVTEXTOPERATIONSWIDGET_H\n"
  },
  {
    "path": "old/qtdialog/main.cpp",
    "content": "#include <QGuiApplication>\n#include <QCommandLineParser>\n#include <QtWidgets>\n\nint main(int argc, char *argv[])\n{\n    QApplication a(argc, argv);\n    a.connect(&a, &QApplication::lastWindowClosed, &a, &QApplication::quit);\n    QCommandLineParser opt;\n    opt.addHelpOption();\n    opt.addVersionOption();\n    opt.addOptions({\n                       { \"msgbox\", \"Show message box\", \"text\" },\n                       { \"error\", \"Show error text\", \"text\" },\n                       { \"input\", \"Read input text\", \"text\" },\n                       { \"yesno\", \"Show [yes] [no] msbox\", \"text\" }\n                       // TODO add more commands like kdialog/zenity/xdialog/dialog\n                   });\n    opt.process(a);\n    if (opt.isSet(\"msgbox\")) {\n        QTimer::singleShot(0, [&opt]() {\n            QMessageBox::information(nullptr, qAppName(), opt.value(\"msgbox\"), QMessageBox::Close);\n            QApplication::instance()->exit(0);\n        });\n    } else if (opt.isSet(\"error\")) {\n        QTimer::singleShot(0, [&opt]() {\n            QMessageBox::critical(nullptr, qAppName(), opt.value(\"msgbox\"), QMessageBox::Close);\n            QApplication::instance()->exit(0);\n        });\n    } else if (opt.isSet(\"input\")) {\n        QTimer::singleShot(0, [&opt]() {\n            bool ok = false;\n            auto text = QInputDialog::getText(nullptr, qAppName(), opt.value(\"input\"), QLineEdit::Normal, \"\", &ok);\n            if (ok) {\n                QTextStream out( stdout );\n                out << text << \"\\n\";\n            }\n            QApplication::instance()->exit(ok? 0 : 1);\n        });\n    } else if (opt.isSet(\"yesno\")) {\n        QTimer::singleShot(0, [&opt]() {\n            auto a = QApplication::instance();\n            switch(QMessageBox::question(nullptr, qAppName(), opt.value(\"yesno\"), QMessageBox::Yes | QMessageBox::No)) {\n            case QMessageBox::Yes: a->exit(1); break;\n            case QMessageBox::No: a->exit(0); break;\n            default: a->exit(-1); break;\n            }\n        });\n    } else {\n        opt.showHelp(0);\n    }\n    return a.exec();\n}\n"
  },
  {
    "path": "old/qtdialog/qtdialog.pro",
    "content": "#-------------------------------------------------\n#\n# Project created by QtCreator 2018-01-24T21:04:40\n#\n#-------------------------------------------------\nDESTDIR  = ../build\nQT       += core gui widgets\nTARGET   = qtdialog\nTEMPLATE = app\nINSTALLS += target\nDEFINES  += QT_DEPRECATED_WARNINGS\nSOURCES  += main.cpp\n\nunix {\n    isEmpty(PREFIX): PREFIX = /usr\n    target.path = $$PREFIX/bin\n}\n"
  },
  {
    "path": "old/replaceform.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>replaceForm</class>\n <widget class=\"QWidget\" name=\"replaceForm\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>610</width>\n    <height>187</height>\n   </rect>\n  </property>\n  <property name=\"sizePolicy\">\n   <sizepolicy hsizetype=\"Preferred\" vsizetype=\"MinimumExpanding\">\n    <horstretch>0</horstretch>\n    <verstretch>0</verstretch>\n   </sizepolicy>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Form</string>\n  </property>\n  <property name=\"autoFillBackground\">\n   <bool>true</bool>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_5\">\n   <property name=\"spacing\">\n    <number>6</number>\n   </property>\n   <property name=\"sizeConstraint\">\n    <enum>QLayout::SetMaximumSize</enum>\n   </property>\n   <property name=\"leftMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"topMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"rightMargin\">\n    <number>0</number>\n   </property>\n   <property name=\"bottomMargin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"QFrame\" name=\"frame\">\n     <property name=\"sizePolicy\">\n      <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Maximum\">\n       <horstretch>0</horstretch>\n       <verstretch>0</verstretch>\n      </sizepolicy>\n     </property>\n     <property name=\"autoFillBackground\">\n      <bool>true</bool>\n     </property>\n     <property name=\"frameShape\">\n      <enum>QFrame::StyledPanel</enum>\n     </property>\n     <property name=\"frameShadow\">\n      <enum>QFrame::Raised</enum>\n     </property>\n     <layout class=\"QVBoxLayout\" name=\"verticalLayout_6\">\n      <item>\n       <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n        <item>\n         <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n          <item>\n           <widget class=\"QLabel\" name=\"findLabel\">\n            <property name=\"text\">\n             <string>&amp;Find</string>\n            </property>\n            <property name=\"buddy\">\n             <cstring>findText</cstring>\n            </property>\n           </widget>\n          </item>\n          <item>\n           <widget class=\"QLabel\" name=\"replaceLabel\">\n            <property name=\"text\">\n             <string>Replace &amp;with</string>\n            </property>\n            <property name=\"buddy\">\n             <cstring>replaceText</cstring>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </item>\n        <item>\n         <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n          <item>\n           <widget class=\"QLineEdit\" name=\"findText\"/>\n          </item>\n          <item>\n           <widget class=\"QLineEdit\" name=\"replaceText\"/>\n          </item>\n         </layout>\n        </item>\n        <item>\n         <layout class=\"QVBoxLayout\" name=\"verticalLayout_3\">\n          <item>\n           <widget class=\"QPushButton\" name=\"replaceButton\">\n            <property name=\"text\">\n             <string>&amp;Replace</string>\n            </property>\n            <property name=\"autoRepeat\">\n             <bool>true</bool>\n            </property>\n           </widget>\n          </item>\n          <item>\n           <widget class=\"QToolButton\" name=\"moreButton\">\n            <property name=\"sizePolicy\">\n             <sizepolicy hsizetype=\"Minimum\" vsizetype=\"Fixed\">\n              <horstretch>0</horstretch>\n              <verstretch>0</verstretch>\n             </sizepolicy>\n            </property>\n            <property name=\"cursor\">\n             <cursorShape>PointingHandCursor</cursorShape>\n            </property>\n            <property name=\"text\">\n             <string>&amp;More</string>\n            </property>\n            <property name=\"checkable\">\n             <bool>true</bool>\n            </property>\n            <property name=\"autoRaise\">\n             <bool>true</bool>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </item>\n        <item>\n         <layout class=\"QVBoxLayout\" name=\"verticalLayout_4\">\n          <item>\n           <spacer name=\"verticalSpacer\">\n            <property name=\"orientation\">\n             <enum>Qt::Vertical</enum>\n            </property>\n            <property name=\"sizeType\">\n             <enum>QSizePolicy::Maximum</enum>\n            </property>\n            <property name=\"sizeHint\" stdset=\"0\">\n             <size>\n              <width>20</width>\n              <height>40</height>\n             </size>\n            </property>\n           </spacer>\n          </item>\n          <item>\n           <widget class=\"QToolButton\" name=\"closeButton\">\n            <property name=\"cursor\">\n             <cursorShape>PointingHandCursor</cursorShape>\n            </property>\n            <property name=\"text\">\n             <string>x</string>\n            </property>\n            <property name=\"autoRaise\">\n             <bool>true</bool>\n            </property>\n           </widget>\n          </item>\n         </layout>\n        </item>\n       </layout>\n      </item>\n      <item>\n       <widget class=\"QGroupBox\" name=\"optionsGroupBox\">\n        <property name=\"enabled\">\n         <bool>false</bool>\n        </property>\n        <property name=\"title\">\n         <string>Options</string>\n        </property>\n        <layout class=\"QGridLayout\" name=\"gridLayout\">\n         <item row=\"0\" column=\"0\">\n          <widget class=\"QCheckBox\" name=\"caseCheckBox\">\n           <property name=\"text\">\n            <string>Case sensitive</string>\n           </property>\n          </widget>\n         </item>\n         <item row=\"0\" column=\"1\">\n          <widget class=\"QCheckBox\" name=\"backwardsCheckBox\">\n           <property name=\"text\">\n            <string>Backwards</string>\n           </property>\n          </widget>\n         </item>\n         <item row=\"0\" column=\"2\">\n          <widget class=\"QCheckBox\" name=\"selectedCheckBox\">\n           <property name=\"text\">\n            <string>Selected text only</string>\n           </property>\n          </widget>\n         </item>\n         <item row=\"1\" column=\"0\">\n          <widget class=\"QCheckBox\" name=\"wholeWordsCheckBox\">\n           <property name=\"text\">\n            <string>Whole words</string>\n           </property>\n          </widget>\n         </item>\n         <item row=\"1\" column=\"1\">\n          <widget class=\"QCheckBox\" name=\"promptCheckBox\">\n           <property name=\"text\">\n            <string>Prompt on repalce</string>\n           </property>\n          </widget>\n         </item>\n        </layout>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <tabstops>\n  <tabstop>findText</tabstop>\n  <tabstop>replaceText</tabstop>\n  <tabstop>replaceButton</tabstop>\n  <tabstop>moreButton</tabstop>\n  <tabstop>closeButton</tabstop>\n  <tabstop>caseCheckBox</tabstop>\n  <tabstop>wholeWordsCheckBox</tabstop>\n  <tabstop>backwardsCheckBox</tabstop>\n  <tabstop>promptCheckBox</tabstop>\n  <tabstop>selectedCheckBox</tabstop>\n </tabstops>\n <resources/>\n <connections>\n  <connection>\n   <sender>moreButton</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>optionsGroupBox</receiver>\n   <slot>setVisible(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>530</x>\n     <y>77</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>532</x>\n     <y>146</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>moreButton</sender>\n   <signal>toggled(bool)</signal>\n   <receiver>optionsGroupBox</receiver>\n   <slot>setEnabled(bool)</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>508</x>\n     <y>86</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>501</x>\n     <y>120</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/resources/project-filters.txt",
    "content": "All files\n*\nC/C++ Project\n*.c *.cpp *.h *.hpp *.cc *.hh Makefile *.ld *.dox *.mk *.a *.elf *.exe\n"
  },
  {
    "path": "old/resources/reference-code.c",
    "content": "#include <stdio.h>\n#include \"sys/sct.h\"\n\ntypedef int (*callback_t)(void *ptr, float h);\n\nenum type_t {\n    type1, type2, type3=3\n};\n\nstruct mystruct {\n    enum type_t type;\n    union {\n        int v_int;\n        char v_char;\n        long v_long:\n        short v_short;\n        void *v_ptr;\n        float v_float;\n        double v_double;\n    } value;\n};\n\nint main(int argc, char *argv[]) {\n    if (argc > 0) {\n        int i;\n        for (i=0; i<argc; i++) {\n            switch(argv[i][0]) {\n            case 'a': return -1; break;\n            case 'c': return -1; break;\n            default: return -1; break;\n            }\n        }\n    }\n    return 0;\n}\n"
  },
  {
    "path": "old/resources/resources.qrc",
    "content": "<RCC>\n    <qresource prefix=\"/help\">\n        <file>reference-code.c</file>\n    </qresource>\n    <qresource prefix=\"/build\">\n        <file>project-filters.txt</file>\n        <file>templates/gcc-exec.template</file>\n        <file>templates/lpcopen-picociaa.template</file>\n        <file>templates/lpcopen.template</file>\n        <file>templates/sAPI-Project.template</file>\n        <file>templates/empty.template</file>\n    </qresource>\n    <qresource prefix=\"/\">\n        <file>style.css</file>\n        <file>images/about-splash.svg</file>\n        <file>images/configure.svg</file>\n        <file>images/document-export.svg</file>\n        <file>images/document-import.svg</file>\n        <file>images/document-new.svg</file>\n        <file>images/document-open.svg</file>\n        <file>images/document-save-all.svg</file>\n        <file>images/document-save-as.svg</file>\n        <file>images/document-save.svg</file>\n        <file>images/edit-copy.svg</file>\n        <file>images/edit-cut.svg</file>\n        <file>images/edit-delete.svg</file>\n        <file>images/edit-download.svg</file>\n        <file>images/edit-find-replace.svg</file>\n        <file>images/edit-find.svg</file>\n        <file>images/edit-paste.svg</file>\n        <file>images/edit-redo.svg</file>\n        <file>images/edit-undo.svg</file>\n        <file>images/embedded-ide.ico</file>\n        <file>images/embedded-ide.png</file>\n        <file>images/embedded-ide.svg</file>\n        <file>images/folder-new.svg</file>\n        <file>images/mimetypes/application-exit.svg</file>\n        <file>images/mimetypes/application-x-desktop.svg</file>\n        <file>images/mimetypes/application-x-executable-script.svg</file>\n        <file>images/mimetypes/application-x-m4.svg</file>\n        <file>images/mimetypes/image-x-generic.svg</file>\n        <file>images/mimetypes/text-x-c++hdr.svg</file>\n        <file>images/mimetypes/text-x-c++src.svg</file>\n        <file>images/mimetypes/text-x-csrc.svg</file>\n        <file>images/mimetypes/text-x-generic.svg</file>\n        <file>images/mimetypes/text-x-makefile.svg</file>\n        <file>images/mimetypes/text-x-markdown.svg</file>\n        <file>images/mimetypes/text-x-patch.svg</file>\n        <file>images/mimetypes/text-x-script.svg</file>\n        <file>images/help-about.svg</file>\n        <file>images/application-exit.svg</file>\n        <file>images/document-close.svg</file>\n        <file>images/actions/code-block.svg</file>\n        <file>images/actions/code-class.svg</file>\n        <file>images/actions/code-context.svg</file>\n        <file>images/actions/code-function.svg</file>\n        <file>images/actions/code-typedef.svg</file>\n        <file>images/actions/code-variable.svg</file>\n        <file>images/actions/debug-execute-from-cursor.svg</file>\n        <file>images/actions/debug-execute-to-cursor.svg</file>\n        <file>images/actions/debug-run-cursor.svg</file>\n        <file>images/actions/debug-run.svg</file>\n        <file>images/actions/debug-step-instruction.svg</file>\n        <file>images/actions/debug-step-into-instruction.svg</file>\n        <file>images/actions/debug-step-into.svg</file>\n        <file>images/actions/debug-step-out.svg</file>\n        <file>images/actions/debug-step-over.svg</file>\n        <file>images/actions/dialog-cancel.svg</file>\n        <file>images/actions/dialog-close.svg</file>\n        <file>images/actions/dialog-ok-apply.svg</file>\n        <file>images/actions/go-next.svg</file>\n        <file>images/actions/go-previous.svg</file>\n        <file>images/actions/list-add.svg</file>\n        <file>images/actions/list-remove.svg</file>\n        <file>images/actions/run-build-clean.svg</file>\n        <file>images/actions/run-build-configure.svg</file>\n        <file>images/actions/run-build-file.svg</file>\n        <file>images/actions/run-build-install-root.svg</file>\n        <file>images/actions/run-build-install.svg</file>\n        <file>images/actions/run-build-prune.svg</file>\n        <file>images/actions/run-build.svg</file>\n        <file>images/actions/window-close.svg</file>\n        <file>images/actions/window-new.svg</file>\n        <file>images/actions/view-refresh.svg</file>\n        <file>images/actions/edit-clear.svg</file>\n        <file>images/actions/media-playback-stop.svg</file>\n        <file>images/application-menu.svg</file>\n        <file>images/archive-remove.svg</file>\n        <file>images/mimetypes/inode-directory.svg</file>\n        <file>images/actions/media-playback-start.svg</file>\n        <file>images/mimetypes/application-octet-stream.svg</file>\n        <file>images/mimetypes/application-x-java.svg</file>\n        <file>images/mimetypes/application-x-javascript.svg</file>\n        <file>images/mimetypes/application-x-python-bytecode.svg</file>\n        <file>images/mimetypes/application-x-zerosize.svg</file>\n        <file>images/mimetypes/folder.svg</file>\n        <file>images/mimetypes/text-html.svg</file>\n        <file>images/mimetypes/text-markdown.svg</file>\n        <file>images/mimetypes/text-plain.svg</file>\n        <file>images/mimetypes/text-x-chdr.svg</file>\n        <file>images/mimetypes/text-x-hex.svg</file>\n        <file>images/mimetypes/text-x-java.svg</file>\n        <file>images/mimetypes/text-x-javascript.svg</file>\n        <file>images/mimetypes/text-x-plain.svg</file>\n        <file>images/mimetypes/text-x-python.svg</file>\n        <file>images/mimetypes/text-x-readme.svg</file>\n        <file>images/mimetypes/text-x-texinfo.svg</file>\n        <file>images/mimetypes/text-xml.svg</file>\n        <file>images/mimetypes/unknown.svg</file>\n        <file>styles/Bespin.xml</file>\n        <file>styles/Black board.xml</file>\n        <file>styles/Choco.xml</file>\n        <file>styles/Deep Black.xml</file>\n        <file>styles/Hello Kitty.xml</file>\n        <file>styles/HotFudgeSundae.xml</file>\n        <file>styles/khaki.xml</file>\n        <file>styles/Mono Industrial.xml</file>\n        <file>styles/Monokai.xml</file>\n        <file>styles/MossyLawn.xml</file>\n        <file>styles/Navajo.xml</file>\n        <file>styles/Obsidian.xml</file>\n        <file>styles/Plastic Code Wrap.xml</file>\n        <file>styles/Ruby Blue.xml</file>\n        <file>styles/Solarized.xml</file>\n        <file>styles/Solarized-light.xml</file>\n        <file>styles/Default.xml</file>\n        <file>styles/Twilight.xml</file>\n        <file>styles/Vibrant Ink.xml</file>\n        <file>styles/vim Dark Blue.xml</file>\n        <file>styles/Zenburn.xml</file>\n        <file>../i18n/es.qm</file>\n        <file>../i18n/zh.qm</file>\n        <file>styles/Material-Dark.xml</file>\n        <file>images/document-close-all.svg</file>\n        <file>images/actions/media-playback-pause.svg</file>\n        <file>images/actions/debug.svg</file>\n        <file>images/actions/insert-link-symbolic.svg</file>\n        <file>ide_design/EmbeddedIDE_00.png</file>\n        <file>ide_design/EmbeddedIDE_00_es.png</file>\n    </qresource>\n</RCC>\n"
  },
  {
    "path": "old/resources/style.css",
    "content": "ComboDocumentView QComboBox {\n    border: 1px solid #cccccc;\n    border-radius: 8px;\n    padding: 1px 18px 1px 13px;\n    min-width: 6em;\n}\n\nComboDocumentView QComboBox::drop-down {\n    subcontrol-origin: padding;\n    subcontrol-position: top right;\n    width: 15px;\n\n    border-left-width: 0px;\n    border-left-color: darkgray;\n    border-left-style: solid;\n    border-top-right-radius: 3px;\n    border-bottom-right-radius: 3px;\n}\n\nComboDocumentView QComboBox QAbstractItemView {\n    padding-left: 13px;\n}\n"
  },
  {
    "path": "old/resources/styles/Bespin.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nBespin\r\nCopyright (c) 2009 Oren Farhi, Orizen Designs - http://www.orizens.com\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"80FF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"37A8ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"37A8ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF82B0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER-DEFINED\" styleID=\"16\" fgColor=\"FF5555\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">the_ID the_post have_posts wp_link_pages the_content</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"37A3ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\">$_POST $_GET $_SESSION</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"BDAF9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"BDAF9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"37A3ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\">alert appendChild arguments array blur checked childNodes className confirm dialogArguments event focus getElementById getElementsByTagName innerHTML keyCode length location null number parentNode push RegExp replace selectNodes selectSingleNode setAttribute split src srcElement test undefined value window</WordsStyle>\r\n            <WordsStyle name=\"USER-DEFINED\" styleID=\"16\" fgColor=\"FF5555\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">XmlUtil loadXmlString TopologyXmlTree NotificationArea loadXmlFile debug</WordsStyle>\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"00FF40\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"00FF40\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"80FF00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"FFFF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\">import</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">import</WordsStyle>\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666666\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"80FF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"80FF00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"37A8ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"37A8ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"8080FF\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"FF8080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"00FF00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"9DF39F\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"BDAF9D\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"37A3ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\">ContentScroller</WordsStyle>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"37A3ED\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">onMotionChanged onMotionFinished Tween ImagesStrip ContentScroller mx transitions easing Sprite Point MouseEvent Event BitmapData Timer TimerEvent addEventListener event x y height width</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"80FF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"7E7E7E\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFF00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7E7E7E\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7E7E7E\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFF80\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FF0080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF0000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"FFB454\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F6F080\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FB9A4B\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF3A83\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"2A211C\" bgColor=\"E5C138\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"37A3ED\" bgColor=\"4F3E35\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"4F3E35\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"BDAE9D\" bgColor=\"2A211C\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"E5C138\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"2A211C\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"4B3C34\" fgColor=\"CCFF33\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"83675A\" fgColor=\"C00000\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"37A8ED\" bgColor=\"80FF00\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" bgColor=\"2A211C\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"E5C138\" bgColor=\"4C4A41\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"6A5448\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" bgColor=\"00FF40\" fontSize=\"\" fontStyle=\"1\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"FF0080\" fgColor=\"555753\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"EDD400\" fgColor=\"CC0000\" fontName=\"\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" fgColor=\"FFFF80\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" fgColor=\"000000\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" fgColor=\"808080\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"808000\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"808080\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Black board.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nBlackboard\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"7F90AA\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"7F90AA\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"FF6400\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"FBDE2D\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"AEAEAE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"8DA6CE\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"61CE3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"D8FA3C\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"0C1021\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"0C1021\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"121830\" fgColor=\"0080C0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"253B76\" fgColor=\"8000FF\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" bgColor=\"F3F3F3\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Choco.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nchoco\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">ooooo</WordsStyle>\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"494949\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"494949\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"A8799C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"C29863\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"C29863\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"E9C062\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"C29863\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"C29863\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F1E694\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"6D4C2F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"B3935C\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"679D47\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"D77261\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"7989A6\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"7CA563\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"DA5659\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"C3BE98\" bgColor=\"1A0F0B\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"1A0F0B\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"281711\" fgColor=\"0080C0\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"372017\" fgColor=\"8000FF\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"A7A7A7\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" bgColor=\"F3F3F3\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" bgColor=\"FF0000\" fontSize=\"\" fontStyle=\"1\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"EDD400\" fgColor=\"CC0000\" fontName=\"\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" fgColor=\"80D4B2\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" fgColor=\"3FBA89\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" fgColor=\"101010\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" fgColor=\"808080\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"972FFF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Deep Black.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nStyle Name:         Deep Black\r\nDescription:        Based on the theme Port VibrantInk by tyler\r\nFile name:          Deep Black.xml\r\nCreated by:         Mariusz Kasperkiewicz\r\nFeatured language:  SQL, C, C++, Pascal, Php, Css, JavaScript, Html, XML, others?\r\nNote:               Feel free to modify this style and re-release it. This style is available under the terms of the GNU Free License.\r\n\r\nKeep Notepad++ development active, donate!:\r\nhttp://sourceforge.net/donate/index.php?group_id=95717\r\n\r\n2009.05.28\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"707070\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"CCCCCC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"772CB7\" bgColor=\"070707\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"9933CC\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"99CC99\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFCC00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"FFFFFF\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"FFC000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"00FF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"80FF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"008000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"070707\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"808080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FF8040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"F8FEDE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"999966\" bgColor=\"FFEEEC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FCFFF0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"00FFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"BCFF80\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n\t\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FF8040\" bgColor=\"FFFFD9\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"9933CC\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"804040\" bgColor=\"E1FFF3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FF6600\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"99CC99\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"C0FFC0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"A08080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"FFF0D8\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"339999\" bgColor=\"ECFFEA\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"800080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CA6500\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"CA6500\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"804040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"SELECTED LINE\" styleID=\"6\" fgColor=\"FFFF80\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEARDER\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIT WORD\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"5\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"Comic Sans MS\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"9\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"9\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FF0000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"333333\" fgColor=\"0080C0\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"6699CC\" fgColor=\"CC0000\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" bgColor=\"253B76\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"C0C0C0\" bgColor=\"333333\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"6A6A6A\" bgColor=\"333333\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"1A1A1A\" bgColor=\"1A1A1A\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FF8080\" bgColor=\"EEEEEC\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"80FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"FF8000\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"0080FF\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"808080\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" bgColor=\"8000FF\" fontSize=\"10\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Default.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"8000FF\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"008000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FF0000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"000080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"808080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"000000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFC000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"8080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"baanc\" desc=\"BaanC\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"4\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTIONS\" styleID=\"10\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"808040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"2\" fgColor=\"004000\" bgColor=\"FCFDDB\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FF0080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"6\" fgColor=\"0000A0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"800040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL NC\" styleID=\"9\" fgColor=\"000000\" bgColor=\"E0C0E0\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FF8040\" bgColor=\"FFFFD9\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"008080\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"804040\" bgColor=\"E1FFF3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"0000FF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"FF0000\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FCFFF0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"804040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"8080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEWORD1\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEWORD2\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEWORD3\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEWORD4\" styleID=\"20\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEWORD5\" styleID=\"21\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEWORD6\" styleID=\"22\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"808040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"2E2E2E\" bgColor=\"FFFFFF\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran (free form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"800080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CA6500\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"CA6500\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"A6CAF0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ihex\" desc=\"Intel HEX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECSTART\" styleID=\"1\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE\" styleID=\"2\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE_UNKNOWN\" styleID=\"3\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT\" styleID=\"4\" fgColor=\"7F7F00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT_WRONG\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NOADDRESS\" styleID=\"6\" fgColor=\"7F00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATAADDRESS\" styleID=\"7\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!-- RECCOUNT 8 N/A -->\r\n            <WordsStyle name=\"STARTADDRESS\" styleID=\"9\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDRESSFIELD_UNKNOWN\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXTENDEDADDRESS\" styleID=\"11\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_ODD\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EVEN\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_UNKNOWN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EMPTY\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM\" styleID=\"16\" fgColor=\"00BF00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM_WRONG\" styleID=\"17\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GARBAGE\" styleID=\"18\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript (embedded)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF0000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"000080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"008000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"008000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"008080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript.js\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WINDOW INSTRUCTION\" styleID=\"19\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t    <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"000080\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"json\" desc=\"JSON\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"6\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE QUOTE\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN NULL\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"95004A\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"20\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"000080\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"808080\" bgColor=\"EEEEEE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"000080\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FDFFEC\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FF8000\" bgColor=\"EFEFEF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"F8FEDE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"8080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"8080C0\" bgColor=\"FFEEEC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"808080\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FF0000\" bgColor=\"FDF8E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"000000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"0000FF\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF8000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"000080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"008000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"008000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"8000FF\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"COMMENT STREAM\" styleID=\"13\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE STRING\" styleID=\"14\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE CHARACTER\" styleID=\"15\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECORATOR\" styleID=\"15\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT\" styleID=\"23\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR COMMENT DOC\" styleID=\"24\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"C0FFC0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"A08080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"FFF0D8\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"ECFFEA\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"8080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"srec\" desc=\"S-Record\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECSTART\" styleID=\"1\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE\" styleID=\"2\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE_UNKNOWN\" styleID=\"3\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT\" styleID=\"4\" fgColor=\"7F7F00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT_WRONG\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NOADDRESS\" styleID=\"6\" fgColor=\"7F00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATAADDRESS\" styleID=\"7\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECCOUNT\" styleID=\"8\" fgColor=\"7F00FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STARTADDRESS\" styleID=\"9\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDRESSFIELD_UNKNOWN\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <!-- EXTENDEDADDRESS 11 N/A -->\r\n            <WordsStyle name=\"DATA_ODD\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EVEN\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_UNKNOWN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EMPTY\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM\" styleID=\"16\" fgColor=\"00BF00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM_WRONG\" styleID=\"17\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GARBAGE\" styleID=\"18\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tehex\" desc=\"Tektronix extended HEX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECSTART\" styleID=\"1\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE\" styleID=\"2\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RECTYPE_UNKNOWN\" styleID=\"3\" fgColor=\"7F0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT\" styleID=\"4\" fgColor=\"7F7F00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BYTECOUNT_WRONG\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!-- NOADDRESS 6 N/A -->\r\n            <WordsStyle name=\"DATAADDRESS\" styleID=\"7\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!-- RECCOUNT 8 N/A -->\r\n            <WordsStyle name=\"STARTADDRESS\" styleID=\"9\" fgColor=\"007FFF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDRESSFIELD_UNKNOWN\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <!-- EXTENDEDADDRESS 11 N/A -->\r\n            <WordsStyle name=\"DATA_ODD\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA_EVEN\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!-- DATA_UNKNOWN 14 N/A -->\r\n            <!-- DATA_EMPTY 15 N/A -->\r\n            <WordsStyle name=\"CHECKSUM\" styleID=\"16\" fgColor=\"00BF00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHECKSUM_WRONG\" styleID=\"17\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GARBAGE\" styleID=\"18\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"00FF00\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"0080C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"0080FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FF0000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"A6CAF0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8040\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"C0C0C0\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FF0000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"800000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"E8E8FF\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"C0C0C0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"808080\" bgColor=\"E4E4E4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"808080\" bgColor=\"F3F3F3\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"E9E9E9\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FFB56A\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n        <WidgetStyle name=\"URL hovered\" styleID=\"0\" fgColor=\"0000FF\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Hello Kitty.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nTheme name : Hello Kitty\r\nThis theme is not complete. If you enhance it, please send it back to me :\r\n<don.h@free.fr>\r\nso your enhanced file can be included in Notepad++ future release.\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"8000FF\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"008000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FF0000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"000080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"808080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"808080\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"000000\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"000000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFC000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"8080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FF8040\" bgColor=\"FFFFD9\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"008080\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"804040\" bgColor=\"E1FFF3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"0000FF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"FF0000\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FCFFF0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"804040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"8080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"808040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontSize=\"10\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"800080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CA6500\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"CA6500\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"A6CAF0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF0000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"000080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"000000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"008000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"008000\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"008080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"95004A\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"808080\" bgColor=\"EEEEEE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FDFFEC\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FF8000\" bgColor=\"EFEFEF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"F8FEDE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"8080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"8080C0\" bgColor=\"FFEEEC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"808080\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FF0000\" bgColor=\"FDF8E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"000000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"808080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"0000FF\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF8000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"000080\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"008000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"008000\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"8000FF\" bgColor=\"FEFCF5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">True False</WordsStyle>\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFF00\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"C0FFC0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"A08080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"FFF0D8\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"ECFFEA\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"8080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"00FF00\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"008080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"808080\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"0080C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"0080FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FF0000\" bgColor=\"FFFF00\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"A6CAF0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"000000\" bgColor=\"FEFDE0\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"008000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8040\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"804000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"808080\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFF80\" bgColor=\"FFB0FF\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"000000\" bgColor=\"FFB0FF\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"C0C0C0\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FF0000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"800000\" bgColor=\"FFB0FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"FF80C0\" fgColor=\"0080C0\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"FFD5FF\" fgColor=\"CC0000\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" bgColor=\"372017\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"FF80C0\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"FF80C0\" bgColor=\"FF80C0\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FFB56A\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/HotFudgeSundae.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           HotFudgeSundae.xml\r\nStyle Name:          HotFudgeSundae\r\nDescription:         HotFudgeSundae theme for Notepad++.\r\n                     Hues from photographs of hot fudge sundaes.\r\n                     Hot fudge, some ice cream peeking out, drizzled with\r\n                     caramel, nuts, and sprinkles with a cherry on top. \r\nSupported languages: All the languages supported by release 6.7.4 \r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nReleased:            4/17/2012\r\nLast Modified:       2/20/2015\r\n                     Improved contrast in comments.\r\n                     Added support for CoffeeScript.\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"B7975D\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"208008\" bgColor=\"352319\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"AFA7D6\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"4AD231\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"BCBB80\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"CFBA28\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"C11418\" bgColor=\"9A7E13\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"D92B10\" bgColor=\"352319\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">ooooo</WordsStyle>\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">the_ID the_post have_posts wp_link_pages the_content</WordsStyle>\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">$_POST $_GET $_SESSION</WordsStyle>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\">alert appendChild arguments array blur checked childNodes className confirm dialogArguments event focus getElementById getElementsByTagName innerHTML keyCode length location null number parentNode push RegExp replace selectNodes selectSingleNode setAttribute split src srcElement test undefined value window</WordsStyle>\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">XmlUtil loadXmlString TopologyXmlTree NotificationArea loadXmlFile debug</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\">import</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">import</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"2B0F01\" bgColor=\"77610F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"BCBB80\" bgColor=\"2b0f01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\">ContentScroller</WordsStyle>\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">onMotionChanged onMotionFinished Tween ImagesStrip ContentScroller mx transitions easing Sprite Point MouseEvent Event BitmapData Timer TimerEvent addEventListener event x y height width</WordsStyle>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">raise</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">True False</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"BE211A\" bgColor=\"77610F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"BCBB80\" bgColor=\"2b0f01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"BCBB80\" bgColor=\"2b0f01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"BCBB80\" bgColor=\"2b0f01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">True False</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"98AE66\" bgColor=\"602F1A\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"CFBA28\" bgColor=\"7578DB\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"B7975D\" bgColor=\"FAF1C6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"432C13\" fgColor=\"2AA198\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"D6C479\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"C11418\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"C11418\" bgColor=\"9A7E13\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"C11418\" bgColor=\"9A7E13\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"BE211A\" bgColor=\"77610F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"7578DB\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"CFBA28\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"208008\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"4AD231\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AFA7D6\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"0088CE\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"BCBB80\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"B7975D\" bgColor=\"2B0F01\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"8B642B\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"2B0F01\" bgColor=\"EC6221\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FF00FF\" bgColor=\"2B0F01\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"432C13\" fontStyle=\"0\" fgColor=\"0080C0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"585858\" fontStyle=\"0\" fgColor=\"CC0000\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FAF1C6\" fontStyle=\"0\" bgColor=\"253B76\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"8B642B\" fontStyle=\"0\" bgColor=\"112435\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"8B642B\" bgColor=\"43250B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"8B642B\" bgColor=\"43250B\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"CFBA28\" fontStyle=\"0\" bgColor=\"1A1A1A\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"8B642B\" bgColor=\"43250B\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"CFBA28\" fontStyle=\"0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"008947\" fontStyle=\"0\" fgColor=\"FFFF00\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"7578DB\" fontStyle=\"0\" fgColor=\"555753\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"C11418\" fontStyle=\"0\" fgColor=\"FCAF3E\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"0088CE\" fontStyle=\"0\" fgColor=\"80D4B2\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"BCBB80\" fontStyle=\"0\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"4AD231\" fontStyle=\"0\" fgColor=\"FFCAB0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"CFBA28\" fontStyle=\"0\" fgColor=\"000000\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"2B0F01\" fontStyle=\"0\" fgColor=\"808080\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"990000\" fontStyle=\"0\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"3D0B0C\" fontStyle=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"D92B10\" fontStyle=\"0\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"2B0F01\" fontStyle=\"0\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" fontStyle=\"0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"43250B\" bgColor=\"D5BC93\" fontStyle=\"0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Material-Dark.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nMaterial Theme Dark\r\nCopyright (c) 2016 Ali Naderi\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on Consolas font.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to \"%APPDATA%\\Notepad++\\themes\" and in a portable installation to \"%INSTALL FOLDER%\\themes\"\r\n\r\nAbout:\r\n    This styler has been built by Ali Naderi\r\n\r\nCredits:\r\n    Thanks for the original Sublime Text theme author.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"B2CCD6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">ooooo</WordsStyle>\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">the_ID the_post have_posts wp_link_pages the_content</WordsStyle>\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">$_POST $_GET $_SESSION</WordsStyle>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"808080\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"808080\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">alert appendChild arguments array blur checked childNodes className confirm dialogArguments event focus getElementById getElementsByTagName innerHTML keyCode length location null number parentNode push RegExp replace selectNodes selectSingleNode setAttribute split src srcElement test undefined value window</WordsStyle>\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">XmlUtil loadXmlString TopologyXmlTree NotificationArea loadXmlFile debug</WordsStyle>\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">import</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">import</WordsStyle>\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"wpl\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"494949\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"494949\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"808080\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"E8DD8E\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"CD6749\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"8FC6E8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"E8DD8E\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"E8DD8E\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"9B859D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"F07178\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"89DDFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"89DDFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"DAD085\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"8A97A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"8A97A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"\" fontSize=\"12\" keywordClass=\"instre2\"/>\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"DAD085\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\">ContentScroller</WordsStyle>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"po\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF6464\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">ContentScroller</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">onMotionChanged onMotionFinished Tween ImagesStrip ContentScroller mx transitions easing Sprite Point MouseEvent Event BitmapData Timer TimerEvent addEventListener event x y height width</WordsStyle>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"808080\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">raise</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"E9C062\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">True False</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">True False</WordsStyle>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">True False</WordsStyle>\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"212121\" fontName=\"\" fontStyle=\"\" fontSize=\"12\"/>\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"DAD085\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"DAD085\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F9EE98\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"212121\" fontName=\"\" fontStyle=\"2\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"instre1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"7587A6\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"C3E88D\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"CF6A4C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"Monaco\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"EEFFFF\" bgColor=\"212121\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"F78C6C\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontName=\"\" fontStyle=\"1\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"1B1B1B\" fontStyle=\"0\" fgColor=\"EEFFFF\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"FF5370\" bgColor=\"212121\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"4D4D4D\" fgColor=\"C0C0C0\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"A7A7A7\" fontStyle=\"0\" bgColor=\"212121\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FF5370\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" bgColor=\"212121\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"212121\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"4D4D4D\" bgColor=\"212121\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"212121\" bgColor=\"212121\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"F07178\" fontStyle=\"0\" bgColor=\"00FF00\" fontSize=\"\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"4D4D4D\" bgColor=\"212121\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"212121\" fgColor=\"555753\" fontStyle=\"0\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"212121\" fgColor=\"FF5370\" fontName=\"\" fontSize=\"12\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"E0E2E4\" fontSize=\"14\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"FFCB6B\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"C3E88D\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"212121\" fontStyle=\"0\" fgColor=\"AB7967\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"212121\" fgColor=\"B2CCD6\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"212121\" fgColor=\"FF5370\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"212121\" fgColor=\"B2CCD6\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FFCB6B\" bgColor=\"212121\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"C792EA\" bgColor=\"212121\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" bgColor=\"C0C0C0\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" fontStyle=\"0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Mono Industrial.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nmonoindustrial\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"222C28\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"588E60\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"588E60\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"A65EFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"588E60\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"588E60\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"C23B00\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"909993\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A39E64\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"A8B3AB\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"666C68\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"C87500\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"648BD2\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"E98800\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"222C28\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"222C28\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"2C3833\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"919994\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Monokai.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nMonokai\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F2\" bgColor=\"272822\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"Batang\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"A6E22E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"F92672\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"75715E\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"66D9EF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"E6DB74\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"AE81FF\" bgColor=\"272822\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"F8F8F2\" bgColor=\"272822\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"272822\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"272822\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"272822\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"3E3D32\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"49483E\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"F8F8F0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/MossyLawn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           MossyLawn.xml\r\nStyle Name:          MossyLawn\r\nDescription:         MossyLawn theme for Notepad++.\r\n                     A \"natural\" theme for NP++\r\n                     The hues are taken from photographs of mosses and grasses, with a few \r\n                     hues from tree trunks, autumn leaves and flowers added for contrast.\r\n                     The name is a tip of the hat to Terry Pratchett.\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\\\r\n\t\t\t\t\t Improved contrast for readbility.\r\nReleased:            4/17/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"ccc457\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"f2c476\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"2a390e\" bgColor=\"627353\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"ffdc87\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"cbe248\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"ffdc87\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"efc53d\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"3e2c04\" bgColor=\"ccc457\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"ccc457\" bgColor=\"627353\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FFBBAA\" bgColor=\"7C7411\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"3e2c04\" bgColor=\"ccc457\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"ffdc87\" bgColor=\"6c7d51\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"bfb8c4\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"f2c476\" bgColor=\"58693D\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"FFAABE\" bgColor=\"7C7411\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"bfb8c4\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"bfb8c4\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"efc53d\" bgColor=\"561e0f\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"858e4d\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"bfb8c4\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"ffee88\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFBBAA\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"3e2c04\" bgColor=\"ccc457\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"3e2c04\" bgColor=\"ccc457\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"d3d09d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"162504\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"561e0f\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"efc53d\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"2a390e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"cbe248\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"afcf90\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"ffdc87\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"981f0e\" bgColor=\"fdd64a\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"f2c476\" bgColor=\"58693D\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"003709\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"561e0f\" bgColor=\"9ece3c\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"981f0e\" bgColor=\"58693D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"717A39\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"8B6733\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"ffc973\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"003709\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"603d13\" bgColor=\"7e8a28\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"603d13\" bgColor=\"7e8a28\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"7e8a28\" bgColor=\"7e8a28\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"ffc973\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"bf8830\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"6a1a01\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"fdd64a\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"afcf90\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"ffdc87\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"cbe248\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"8abbe4\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"6a1a01\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"92983e\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"dab57e\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"58693D\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"58693D\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"012001\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"162504\" bgColor=\"BBCF60\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "old/resources/styles/Navajo.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Navajo.xml\r\nStyle Name:          Navajo\r\nDescription:         Navajo theme for Notepad++.\r\n                     Based on navajo.vim by R. Edward Ralston\r\n                     Official Navajo home page: http://www.vim.org/scripts/script.php?script_id=190\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\r\nReleased:            4/17/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"000000\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"181880\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"804040\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"000000\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"870087\" bgColor=\"afaf87\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"D92B10\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"5F0000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"5F0000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"AFAF87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"000000\" bgColor=\"BA9C80\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"C00058\" bgColor=\"CDB38B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"3B4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"D92B10\" bgColor=\"AFAF87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000000\" bgColor=\"BCBCBC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"B39674\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"010101\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"D92B10\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"870087\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"1E8B47\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"000000\" bgColor=\"AFAF87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"3b4092\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"106060\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"804040\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"C00058\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"000000\" bgColor=\"BA9C80\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"181880\" bgColor=\"BA9C80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"000000\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"BCBCBC\" bgColor=\"5F0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"B39674\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"BCBCBC\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"181880\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"000000\" bgColor=\"808080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"000000\" bgColor=\"808080\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"808080\" bgColor=\"808080\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"106060\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"BCBCBC\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"3b4092\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"870087\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"C00058\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"181880\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"804040\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"106060\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"BA9C80\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"D92B10\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"D92B10\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"D92B10\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"BA9C80\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"181880\" bgColor=\"BA9C80\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "old/resources/styles/Obsidian.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nNotepad++ Custom Style\r\n\r\n  Style name:    Obsidian v2\r\n      Author:    Joni Eskelinen\r\n        Date:    2009-04-06 (last changed 2013-04-23)\r\n   Languages:    php, html, css, xml, javascript, python, sql, c, c++, \r\n                   assembly, bash, batch, lua at least for detail. Everything else more or less...\r\n        Info:    Inspired by Oblivion theme for gedit.\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"D955C1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"D955C1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"D2C5E0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFC6C6\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"B7C8D9\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"C29F56\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"D3DA50\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"9CB4AA\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"F0F0F0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"D5AB55\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"F3DB2E\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"0080C0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"FF8080\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"00FF40\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"9FAC95\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"9FAC95\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"E1E2CF\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"E1E2CF\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"8CBBAD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"8CBBAD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"8CBBAD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"D0D2B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"BBBBBB\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"818E96\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"818E96\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"C29F56\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"D955C1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"ABBFD3\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"9473B5\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"11\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"5899C0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"5AB9BE\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"D955C1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7D8C93\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">True False</WordsStyle>\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"B6C8DA\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Schime\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FF8409\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"6C788C\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"EC7600\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"E8E2B7\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"ABBFD3\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"ABBFD3\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"E1E2CF\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"E1E2CF\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"B3B689\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"D39745\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"D5E6F0\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"BBBBBB\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"66747B\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"93C763\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"A082BD\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"A6ABB3\" bgColor=\"3A4649\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"78838B\" bgColor=\"2F383C\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"FFCD22\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"678CB1\" bgColor=\"293134\" fontName=\"\" fontStyle=\"5\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"FF8409\" bgColor=\"2F393C\" fontName=\"\" fontStyle=\"1\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"2F393C\" fgColor=\"E0E2E4\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"E0E2E4\" bgColor=\"293134\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"394448\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"F3DB2E\" bgColor=\"293134\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FB0000\" bgColor=\"293134\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"2F393C\" fgColor=\"0080C0\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"404E51\" fgColor=\"C00000\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"C1CBD2\" bgColor=\"6699CC\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"445257\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"81969A\" bgColor=\"3F4B4E\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"6A8088\" bgColor=\"2F383C\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"343F41\" bgColor=\"343F41\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"343F43\" bgColor=\"3476A3\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"56676D\" fgColor=\"222222\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"6B8189\" fgColor=\"E0E2E4\" fontSize=\"\" fontStyle=\"1\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00659B\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"00880B\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"A6AA00\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8A0B0B\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"44116F\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFFF80\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"4D5C62\" fgColor=\"E0E2E4\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"93975E\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" bgColor=\"0080FF\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Plastic Code Wrap.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nPlasticCodeWrap\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"9EFFFF\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"9EFFFF\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"9DF39F\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <!--WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle-->\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">bool long int char</WordsStyle>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" />\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"FFB454\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F6F080\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"EFE900\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"FFAA00\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"1E9AE0\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EB939A\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FB9A4B\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"000000\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"55E439\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FF3A83\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"0B161D\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"0B161D\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"11222D\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"162E3D\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"8BA7A7\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Ruby Blue.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!-- \r\nNotepad++ Custom stylers\r\nStyle name: \t\tPort Ruby Blue\r\nFile name: \t\t\tstylers.xml\r\nCreated by:\t\t\ttomsolo (aka tonoslo on sourceforge.net)\r\n\t\t\t\thttp://www.3276.hu\r\nFeatured language:\tPhp, Css, Sql, JavaScript, Html, XML. \r\nNote: \t\t\tIf u create other languages with this style please send me the modified styler.xml : tonoslo at users.sourceforge.net (ty!)\r\nOther info:\t\t\tthis style is based on and inspired by Textmate (a Mac source editor, http:/www.textmate.org) user submitted theme:\r\n\t\t\t\tRuby Blue theme created by John W. Long, http://wiseheartdesign.com/articles/2006/03/11/ruby-blue-textmate-theme)\r\n\t\t\t\tThanks John!\r\n\t\t\t\tThis style available under the terms of the GNU Free License.\r\n\r\n\r\nRequirements: \r\n\t1. The style is based on DejaVu fonts, go to \r\n\thttp://dejavu.sourceforge.net/wiki/index.php/Main_Page\r\n\tand grab this font pack and install (use DejaVu Mono).\r\n\t2. Use Cleartype, for nice smooth font on screen (optional).\r\n\t3. Notepad 3.5 install :)\r\n\r\nInstall: copy your installed Notepad++ directory root, overwrite old stylers.xml (backup old file first), \r\nor copy c:\\Documents and Settings\\**USERNAME**\\Application Data\\Notepad++\\\r\noverwrite old stylers.xml (backup old file first)\r\n\r\n\r\nENJOY!\r\n\r\n\r\nIf u like, please donate Notepad++:\r\nhttp://sourceforge.net/donate/index.php?group_id=95717\r\n\r\n \r\n\r\n2006.03.27.\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"7BC22F\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"F4DD0B\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFFF00\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"F0804F\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFF00\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"8080C0\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"800080\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"F4DD0B\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"E6A82D\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"F0804F\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"730080\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"7BC22F\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"800080\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"7BD827\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"F4DD0B\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"8DB0D3\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"3A8BDA\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"F08047\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FF00FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"730080\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"\" bgColor=\"\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n\t\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFF80\" bgColor=\"FF8000\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"DejaVu Sans Mono\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"0080FF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"273A4B\" fgColor=\"CCFF33\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"0080C0\" bgColor=\"B0D926\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"0000FF\" fgColor=\"C00000\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" fontStyle=\"0\" bgColor=\"6699CC\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontSize=\"\" fontStyle=\"1\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"FFFFFF\" bgColor=\"1F4661\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"F0804F\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"4096BF\" bgColor=\"3476A3\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FF8080\" bgColor=\"112435\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Solarized-light.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Solarized-light.xml\r\nStyle Name:          Solarized-light\r\nDescription:         Solarized theme for Notepad++.\r\n                     Based on Solarized by Ethan Schoonover\r\n                     Official Solarized home page: http://ethanschoonover.com/solarized\r\nCommpliance:         Nearly complete (see README.txt for exceptions).\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\r\nReleased:            3/7/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nRequirements:\r\n    * This theme is based on the Inconsolata-dz font http://media.nodnod.net/Inconsolata-dz.otf.zip\r\n      However, that font may be replaced in the \"GlobalStyles\" section of this \r\n      file, where it is found in only the \"Global override\" and \"Default Style\" lines.\r\n      Fonts are not separately specified anywhere else in this version of the style file.\r\n      Note 3/29/2012: I have replaced Inconsola-dz with Consolas, since Consolas is\r\n      installed by default in recent versions of Windows.\r\n      \r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"657B83\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"93A1A1\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"2AA198\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"859900\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"2AA198\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"B58900\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"DC322F\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"CB4B16\" bgColor=\"E8DFC6\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"073642\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"073642\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"073642\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"073642\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"657B83\" bgColor=\"073642\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"EEE8D5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"586E75\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"DC322F\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"657B83\" bgColor=\"FDF6E3\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"93A1A1\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"DC322F\" bgColor=\"859900\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"D33682\" bgColor=\"FDF6E3\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"073642\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"073642\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"93A1A1\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"93A1A1\" bgColor=\"EEE8D5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"93A1A1\" bgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"DC322F\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"93A1A1\" bgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"B58900\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"002B36\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"6C71C4\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"DC322F\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"268BD2\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"2AA198\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"859900\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"B58900\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"FDF6E3\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FDF6E3\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"073642\" bgColor=\"93A1A1\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "old/resources/styles/Solarized.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           Solarized.xml\r\nStyle Name:          Solarized\r\nDescription:         Solarized theme for Notepad++.\r\n                     Based on Solarized by Ethan Schoonover\r\n                     Official Solarized home page: http://ethanschoonover.com/solarized\r\nCommpliance:         Nearly complete (see README.txt for exceptions).\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\r\nReleased:            3/7/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nRequirements:\r\n    * This theme is based on the Inconsolata-dz font http://media.nodnod.net/Inconsolata-dz.otf.zip\r\n      However, that font may be replaced in the \"GlobalStyles\" section of this \r\n      file, where it is found in only the \"Global override\" and \"Default Style\" lines.\r\n      Fonts are not separately specified anywhere else in this version of the style file.\r\n      Note 3/29/2012: I have replaced Inconsola-dz with Consolas, since Consolas is\r\n      installed by default in recent versions of Windows.\r\n      \r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"839496\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"586E75\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"2AA198\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"859900\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"2AA198\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"B58900\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"DC322F\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"CB4B16\" bgColor=\"083C4B\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"839496\" bgColor=\"002B36\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"EEE8D5\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"EEE8D5\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"EEE8D5\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"EEE8D5\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"6C71C4\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"839496\" bgColor=\"EEE8D5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"073642\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"93A1A1\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"CB4B16\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"DC322F\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"6C71C4\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"B58900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"859900\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"268BD2\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"2AA198\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"839496\" bgColor=\"002B36\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"586E75\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"DC322F\" bgColor=\"859900\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"D33682\" bgColor=\"002B36\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"073642\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"EEE8D5\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"586E75\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"586E75\" bgColor=\"073642\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"586E75\" bgColor=\"073642\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"DC322F\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"586E75\" bgColor=\"073642\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"B58900\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"FDF6E3\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"6C71C4\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"DC322F\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"268BD2\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"2AA198\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"859900\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"B58900\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"002B36\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"CB4B16\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"002B36\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"EEE8D5\" bgColor=\"586E75\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "old/resources/styles/Twilight.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\n\r\nTwilight\r\nCopyright (c) 2008 Fabio Zendhi Nagao <http://zend.lojcomm.com.br/>\r\n              2011-2014 Renato Silva <br.renatosilva@gmail.com>\r\n\r\nPermission is hereby granted, free of charge, to any person\r\nobtaining a copy of this software and associated documentation\r\nfiles (the \"Software\"), to deal in the Software without\r\nrestriction, including without limitation the rights to use,\r\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the\r\nSoftware is furnished to do so, subject to the following\r\nconditions:\r\n\r\nThe above copyright notice and this permission notice shall be\r\nincluded in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\r\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\r\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\r\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\r\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\r\nOTHER DEALINGS IN THE SOFTWARE.\r\n\r\nRequirements:\r\n    * This style is based on DejaVu fonts <http://dejavu.sourceforge.net/wiki/index.php/Main_Page>.\r\n    * Notepad++, of course.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\\r\n\r\nAbout:\r\n    This styler has been built by Textmate theme to Notepad++ styler <http://framework.lojcomm.com.br/tmTheme2nppStyler/>\r\n\r\nCredits:\r\n    Thanks for the original Textmate theme author.\r\n    Thanks for Fabio Zendhi Nagao for the tmTheme2nppStyler.\r\n    Thanks for the user for the tmTheme source.\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"wpl\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"494949\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"494949\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"CCCCCC\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"CCCCCC\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"CCCCCC\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"2\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"2\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"E8DD8E\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"2\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"CD6749\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"8FC6E8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"141414\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"E8DD8E\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"E8DD8E\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"9B859D\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"DAD085\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"8A97A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"8A97A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"DAD085\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"po\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF6464\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\"/>\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\">raise</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"E9C062\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\"/>\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"\" bgColor=\"141414\" fontName=\"\" fontStyle=\"\" fontSize=\"10\"/>\r\n        -->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"DAD085\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"DAD085\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"F9EE98\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"9B703F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"8996A8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"CDA869\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"5F5A60\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"instre1\"/>\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"7587A6\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"8F9D6A\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"CF6A4C\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\"/>\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"5A5A5A\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"F8F8F8\" bgColor=\"141414\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"888A85\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"FCE94F\" bgColor=\"141414\" fontName=\"\" fontStyle=\"1\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"EF2929\" bgColor=\"141414\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"292929\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"CC0000\" bgColor=\"EDD400\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"3E3E3E\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"A7A7A7\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"CC0000\" bgColor=\"EDD400\" fontName=\"\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"EEEEEC\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"EEEEEC\" bgColor=\"2E3436\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"2E3436\" bgColor=\"EEEEEC\"/>\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"555753\" bgColor=\"2E3436\"/>\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FCAF3E\"/>\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"8000FF\" fgColor=\"555753\"/>\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\"/>\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\"/>\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\"/>\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\"/>\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\"/>\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\"/>\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"663a04\" fgColor=\"b5834a\"/>\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\"/>\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\"/>\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\"/>\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Vibrant Ink.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!-- \r\nStyle Name: Port VibrantInk\r\nDescription: Based on the Textmate theme VibrantInk (http://alternateidea.com/blog/articles/2006/01/03/textmate-vibrant-ink-theme-and-prototype-bundle) by Justin Palmer\r\nFile name: \t\t\tstylers.xml\r\nCreated by:\t\t\ttyler (tyler at impoverishedgourmet.com)\r\nFeatured language:\tPhp, Css, JavaScript, Html, XML, others? \r\nNote:\t\t\t\tFeel free to modify this style and re-release it.  Any additions to languages or syntax to bring it closer to VibrantInk would be appreciated.\r\n\t\t\t\t\tThis style available under the terms of the GNU Free License.\r\n\r\nInstall: copy your installed Notepad++ directory root, overwrite old stylers.xml (backup old file first), \r\nor copy %APPDATA%\\Notepad++\\\r\noverwrite old stylers.xml (backup old file first)\r\n\r\nKeep Notepad++ development active, donate!:\r\nhttp://sourceforge.net/donate/index.php?group_id=95717\r\n\r\n2007.11.16\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"707070\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"CCCCCC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"772CB7\" bgColor=\"070707\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"9933CC\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"99CC99\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"FFCC00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"66FF00\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"FFFFFF\" bgColor=\"C4F9FD\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"FFC000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"707070\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"070707\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"00FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"707070\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"F8FEDE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"999966\" bgColor=\"FFEEEC\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"FFFF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"FCFFF0\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"EEEEEE\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"C0C0C0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"99CC99\" bgColor=\"FFFF80\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FDFFEC\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FF8000\" bgColor=\"EFEFEF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n\t\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FF8040\" bgColor=\"FFFFD9\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"9933CC\" bgColor=\"00FFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"804040\" bgColor=\"E1FFF3\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FF6600\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"99CC99\" bgColor=\"0000FF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"808040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"FF80FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembler\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"C0FFC0\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"A08080\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"FFF0D8\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"339999\" bgColor=\"ECFFEA\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"66FF00\" bgColor=\"F2F4FF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"999966\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"EDF8F9\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"800080\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CA6500\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"CA6500\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"800000\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"FFFFCC\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"8\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FF6600\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FFCC00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"339999\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"9933CC\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"66FF00\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"804040\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000080\" bgColor=\"BBBBFF\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"008000\" bgColor=\"D5FFD5\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"000000\" bgColor=\"FFFFFF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"FFFFBF\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"000080\" bgColor=\"FFFF4F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"E8E8FF\" fgColor=\"0080FF\" fontSize=\"\" fontStyle=\"0\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFF80\" bgColor=\"FF8000\" fontName=\"Courier New\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"000000\" fontName=\"Monaco\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"C0C0C0\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"99CC99\" bgColor=\"000000\" fontName=\"\" fontStyle=\"1\" fontSize=\"12\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"CCFF33\" bgColor=\"000000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"333333\" fgColor=\"0080C0\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"C00000\" bgColor=\"000000\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"6699CC\" fgColor=\"8000FF\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFFFF\" bgColor=\"112435\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FFFF00\" bgColor=\"FF0000\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" bgColor=\"F3F3F3\" fontSize=\"8\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"E4E4E4\" bgColor=\"333333\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"999999\" bgColor=\"333333\" fontSize=\"\" fontStyle=\"0\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"222222\" bgColor=\"111111\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"FF8080\" bgColor=\"000000\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"00FF00\" fgColor=\"555753\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0000\" fgColor=\"FCAF3E\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"00FFFF\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"FF8000\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"8000FF\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"0080FF\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"8000FF\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"FFFF00\" fgColor=\"8080C0\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" bgColor=\"80FF00\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/Zenburn.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--\r\nFile name:           Zenburn.xml\r\nStyle Name:          Zenburn\r\nDescription:         Zenburn-like style for Notepad++.\r\n                     Inspired by the original Zenburn colorscheme for Vim by Jani Nurminen.\r\n                     Official Vim Zenburn home page: http://slinky.imukuppi.org/zenburnpage/\r\nSupported languages: All the languages supported by release 6.6.6\r\nCreated by:          Jani Kesnen (jani dot kesanen gmail com)\r\nReleased:            18.06.2014\r\nLicense:             Feel free to modify this style and re-release it. This style is available under the terms of the GNU Free License.\r\n-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"EBD6EB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EDD6ED\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"C2BE9E\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C2BE9E\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"BFCAA9\" bgColor=\"274E27\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"DBDBBC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"DEDEBE\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FDCEAE\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"CFBFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"EDD6ED\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CFBFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"json\" desc=\"JSON\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE QUOTE\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN NULL\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"EDD6ED\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EBD6EB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"ECA9A9\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"EBD6EB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"DFE4CF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n\t\t\t<WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"DCA3A3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"9F9D6D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"EFEF8F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"FFEBDD\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"EDD6ED\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"BEC89E\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"DFDFDF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"C89191\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"CFBFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"FFCFAF\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"7F9F7F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"DFC47D\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"CEDF99\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"CC9393\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"EBD6EB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"101010\" bgColor=\"8FAF9F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"E3CEAB\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"8CD0D3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"CCE08C\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"AFE7B3\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"585858\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"DCDCCC\" bgColor=\"3F3F3F\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"4F5F5F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"F0F9F9\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"F09F9F\" bgColor=\"3F3F3F\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"101010\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"585858\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"8FAF9F\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"4F5F5F\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"8A8A8A\" bgColor=\"0C0C0C\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"707070\" bgColor=\"101010\" />\r\n\t\t<WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"7F9F7F\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"181818\" bgColor=\"101010\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"5F5F5F\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"358A35\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"FF0080\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"88B090\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"F8F893\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"F18C96\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"408040\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"968CF1\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"C3BF9F\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"C6C600\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"78926F\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"80D4B2\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"3FBA89\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"101010\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"808080\" bgColor=\"C0C0C0\" />\r\n        <WidgetStyle name=\"URL hovered\" styleID=\"0\" fgColor=\"A3DCA3\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n"
  },
  {
    "path": "old/resources/styles/khaki.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<!--//\r\nFile Name:           khaki.xml\r\nStyle Name:          khaki\r\nDescription:         khaki theme for Notepad++.\r\n                     Based (moderately closely) on khaki.vim by Frank Baruch\r\n                     http://www.vim.org/scripts/script.php?script_id=1987\r\nSupported languages: All the languages supported by release 6.7.4\r\nCreated by:          Paul Neubauer (PaulRNeubauer at gmail dot com)\r\nLast Modified:       1/14/2015\r\n                     Added support for CoffeeScript.\r\nReleased:            4/17/2012\r\nLicense:             Feel free to modify this theme. \r\n                     This theme is available under the terms of the Creative Commons\r\n                     Attribution 3.0 Unported License. You are free to to copy,\r\n                     distribute and transmit the work, to adapt the work, or to make\r\n                     commercial use of the work under the condition that you must\r\n                     attribute the work in the manner specified by the author or\r\n                     licensor (but not in any way that suggests that they endorse you\r\n                     or your use of the work). See\r\n                     http://creativecommons.org/licenses/by/3.0/ \r\n                     for a legal description of the license terms. Briefly, this\r\n                     means: please note in derivatives of this theme, that they are\r\n                     based on my work. Of course, if you are using this file as no\r\n                     more than a framework for an entirely different color scheme, you\r\n                     may, and should, omit such attribution.\r\n\r\nInstallation:\r\n    Copy this file to C:\\Program Files (x86)\\Notepad++\\themes  OR\r\n    For WindowsXP:\r\n    Copy this file to C:\\Documents and Settings\\%%USERNAME%%\\Application Data\\Notepad++\\themes\r\n    For Windows Vista or 7:\r\n    Copy this file to C:\\Users\\%%USERNAME%%\\AppData\\Roaming\\Notepad++\\themes\r\n\r\n//-->\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"5f5f00\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"87875f\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"005f5f\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"87005f\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"005f5f\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"000087\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"005f00\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"005f00\" bgColor=\"bfbf97\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPEWORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cobol\" desc=\"COBOL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DECLARATION\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"16\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"coffeescript\" desc=\"CoffeeScript\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREDEFINED CONSTANT\" styleID=\"19\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"22\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX\" styleID=\"23\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBOSE REGEX COMMENT\" styleID=\"24\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"d\" desc=\"D\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"14\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"6\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"7\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\"/>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\"/>\r\n            <WordsStyle name=\"KEYWORD3\" styleID=\"9\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\"/>\r\n            <WordsStyle name=\"KEYWORD4\" styleID=\"20\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\"/>\r\n            <WordsStyle name=\"KEYWORD5\" styleID=\"21\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\"/>\r\n            <WordsStyle name=\"KEYWORD6\" styleID=\"22\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\"/>\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT NESTED\" styleID=\"4\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"16\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"17\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING B\" styleID=\"18\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"19\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n         </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"gui4cli\" desc=\"GUI4CLI\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"5\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"EVENT\" styleID=\"5\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"16\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"CONTROL\" styleID=\"16\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"16\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\">param @projectDescription projectDescription @param</WordsStyle>\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n\t\t<LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontSize=\"\" fontStyle=\"0\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"4\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR2\" styleID=\"6\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX NUMBER\" styleID=\"8\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"10\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD VERB\" styleID=\"31\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"22\" fgColor=\"870000\" bgColor=\"afaf87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"23\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QQ\" styleID=\"24\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE QX\" styleID=\"25\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"26\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QQ\" styleID=\"27\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QX\" styleID=\"28\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QR\" styleID=\"29\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING QW\" styleID=\"30\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT IDENT\" styleID=\"41\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FORMAT\" styleID=\"42\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n       </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"powershell\" desc=\"PowerShell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"CMDLET\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ALIAS\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"r\" desc=\"R\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"2\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BASE WORD\" styleID=\"3\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"4\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INFIX\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0087af\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOLEAN\" styleID=\"25\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n        </LexerType>\r\n        <LexerType name=\"scheme\" desc=\"Scheme\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION WORD2\" styleID=\"4\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"Default\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Search Header\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"File Header\" styleID=\"2\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Line Number\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Hit Word\" styleID=\"4\" fgColor=\"000087\" bgColor=\"870000\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Selected Line\" styleID=\"5\" fgColor=\"5f5f00\" bgColor=\"EEE8D5\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Current line background colour\" styleID=\"6\" bgColor=\"073642\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n\t\t</LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODIFIER\" styleID=\"10\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"12\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"13\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUB BRACE\" styleID=\"9\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSTITUTION\" styleID=\"8\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD IN QUOTE\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IN QUOTE\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT BOX\" styleID=\"17\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BLOCK COMMENT\" styleID=\"18\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"af0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"5f0000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"00005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"5f005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"af5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"870000\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"000087\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"87875f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"87005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"005f00\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"005f5f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"d700d7\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"afaf87\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"d7d7af\" bgColor=\"005f00\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"ff005f\" bgColor=\"d7d7af\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"5f5f00\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"5f5f00\" bgColor=\"afaf87\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"Fold active\" styleID=\"0\" fgColor=\"af0000\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"afaf87\" bgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"005f00\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Mark Style 1\" styleID=\"25\" bgColor=\"af5f00\" />\r\n        <WidgetStyle name=\"Mark Style 2\" styleID=\"24\" bgColor=\"005f5f\" />\r\n        <WidgetStyle name=\"Mark Style 3\" styleID=\"23\" bgColor=\"afaf87\" />\r\n        <WidgetStyle name=\"Mark Style 4\" styleID=\"22\" bgColor=\"87005f\" />\r\n        <WidgetStyle name=\"Mark Style 5\" styleID=\"21\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"d7ff87\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"afff87\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"5faf5f\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"5f0000\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"d7d7af\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"5f5f00\" bgColor=\"d7d7af\" />\r\n<!--        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"ffffd7\" bgColor=\"5f5f00\" /> -->\r\n    </GlobalStyles>\r\n</NotepadPlus>"
  },
  {
    "path": "old/resources/styles/vim Dark Blue.xml",
    "content": "<?xml version=\"1.0\" encoding=\"Windows-1252\" ?>\r\n<NotepadPlus>\r\n    <LexerStyles>\r\n        <LexerType name=\"actionscript\" desc=\"ActionScript\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n\t\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ada\" desc=\"ADA\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELIMITER\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER EOL\" styleID=\"6\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"8\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"10\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ILLEGAL\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asp\" desc=\"asp\" ext=\"asp\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"81\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"82\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"83\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"84\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"85\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"87\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"86\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASPSYBOL\" styleID=\"15\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCRIPTTYPE\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"asm\" desc=\"Assembly\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"5\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CPU INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MATH INSTRUCTION\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"REGISTER\" styleID=\"8\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"COMMENT BLOCK\" styleID=\"11\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"13\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"EXT INSTRUCTION\" styleID=\"14\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n        </LexerType>\r\n        <LexerType name=\"autoit\" desc=\"autoIt\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"9\" fgColor=\"FF0080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"SENT\" styleID=\"10\" fgColor=\"8080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"EXPAND\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n            <WordsStyle name=\"COMOBJ\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"bash\" desc=\"bash\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"8\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PARAM\" styleID=\"10\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"11\" fgColor=\"00FF40\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE DELIM\" styleID=\"12\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HERE Q\" styleID=\"13\" fgColor=\"80FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"batch\" desc=\"Batch\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"3\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIDE SYBOL\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"FF80FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"c\" desc=\"C\" ext=\"pmc\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cpp\" desc=\"C++\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"00FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"00FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cs\" desc=\"C#\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FF80FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"caml\" desc=\"Caml\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"BUILIN FUNC &amp; TYPE\" styleID=\"4\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"TYPE\" styleID=\"5\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"LINENUM\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"9\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"11\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"13\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"14\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"cmake\" desc=\"CMakeFile\" ext=\"cmake\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING D\" styleID=\"2\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING L\" styleID=\"3\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING R\" styleID=\"4\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"7\" fgColor=\"FF8040\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"WHILEDEF\" styleID=\"9\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FOREACHDEF\" styleID=\"10\" fgColor=\"008080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IFDEF\" styleID=\"11\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRODEF\" styleID=\"12\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"13\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"css\" desc=\"CSS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"Batang\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"2\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PSEUDOCLASS\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"UNKNOWN_PSEUDOCLASS\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"UNKNOWN_IDENTIFIER\" styleID=\"7\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ID\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORTANT\" styleID=\"11\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"diff\" desc=\"DIFF\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEADER\" styleID=\"3\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POSITION\" styleID=\"4\" fgColor=\"FF80FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DELETED\" styleID=\"5\" fgColor=\"FF8080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ADDED\" styleID=\"6\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nfo\" desc=\"Dos Style\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"32\" fgColor=\"FFFFFF\" bgColor=\"000040\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran\" desc=\"Fortran\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"fortran77\" desc=\"Fortran (fixed form)\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION1\" styleID=\"9\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNCTION2\" styleID=\"10\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR2\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"CONTINUATION\" styleID=\"14\" fgColor=\"008000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"haskell\" desc=\"Haskell\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CAPITAL\" styleID=\"8\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMPORT\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE\" styleID=\"12\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"13\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"14\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK2\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK3\" styleID=\"16\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"html\" desc=\"HTML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VALUE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ini\" desc=\"ini file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF8080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"inno\" desc=\"InnoSetup\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"PARAMETER\" styleID=\"3\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"4\" fgColor=\"00FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"80FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR INLINE\" styleID=\"6\" fgColor=\"00FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT PASCAL\" styleID=\"7\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD PASCAL\" styleID=\"8\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"KEYWORD USER\" styleID=\"9\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"STRING DOUBLE\" styleID=\"10\" fgColor=\"FF80C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING SINGLE\" styleID=\"11\" fgColor=\"FF80C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"12\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"java\" desc=\"Java\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"javascript\" desc=\"JavaScript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"41\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"45\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"46\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"47\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRINGRAW\" styleID=\"20\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"48\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"49\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOLS\" styleID=\"50\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"51\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"52\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"42\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"43\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTDOC\" styleID=\"44\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"kix\" desc=\"KiXtart\" ext=\"\">\r\n            <!--\r\n            <WordsStyle name=\"\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n\t\t-->\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"31\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"2\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VAR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"7\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"8\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lisp\" desc=\"LISP\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"5\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"8\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"9\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"11\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"12\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"lua\" desc=\"Lua\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LITERALSTRING\" styleID=\"8\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNC1\" styleID=\"13\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"FUNC2\" styleID=\"14\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"FUNC3\" styleID=\"15\" fgColor=\"0000A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"3\" fontSize=\"\" keywordClass=\"type2\" />\r\n        </LexerType>\r\n        <LexerType name=\"makefile\" desc=\"Makefile\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"3\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TARGET\" styleID=\"5\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDEOL\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"matlab\" desc=\"Matlab\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"2\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"4\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">endfunction endif</WordsStyle>\r\n            <WordsStyle name=\"STRING\" styleID=\"5\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"7\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLE QUOTE STRING\" styleID=\"8\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"nsis\" desc=\"NSIS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING DOUBLE QUOTE\" styleID=\"2\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING LEFT QUOTE\" styleID=\"3\" fgColor=\"FFFF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING RIGHT QUOTE\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"LABEL\" styleID=\"7\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"USER DEFINED\" styleID=\"8\" fgColor=\"FDFFEC\" bgColor=\"000040\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"SECTION\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUBSECTION\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IF DEFINE\" styleID=\"11\" fgColor=\"808040\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MACRO\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VAR\" styleID=\"13\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SECTION GROUP\" styleID=\"15\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAGE EX\" styleID=\"16\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"FUNCTION DEFINITIONS\" styleID=\"17\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"objc\" desc=\"Objective-C\" ext=\"\">\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"19\" fgColor=\"A001D6\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"QUALIFIER\" styleID=\"20\" fgColor=\"95004A\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"pascal\" desc=\"Pascal\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"1\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"9\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"12\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASM\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"4\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"perl\" desc=\"Perl\" ext=\"cgi\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"17\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SCALAR\" styleID=\"12\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ARRAY\" styleID=\"13\" fgColor=\"CF34CF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HASH\" styleID=\"14\" fgColor=\"8080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL TABLE\" styleID=\"15\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PUNCTUATION\" styleID=\"8\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"00FF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FF80C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"LONGQUOTE\" styleID=\"19\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATASECTION\" styleID=\"21\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGSUBST\" styleID=\"18\" fgColor=\"8080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"20\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"php\" desc=\"php\" ext=\"\">\r\n            <WordsStyle name=\"QUESTION MARK\" styleID=\"18\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"118\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"119\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING VARIABLE\" styleID=\"126\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SIMPLESTRING\" styleID=\"120\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"121\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"122\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"VARIABLE\" styleID=\"123\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"124\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"125\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"127\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"postscript\" desc=\"Postscript\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC COMMENT\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DSC VALUE\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"Name\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"LITERAL\" styleID=\"7\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IMMEVAL\" styleID=\"8\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN ARRAY\" styleID=\"9\" fgColor=\"FF00FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN DICT\" styleID=\"10\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"PAREN PROC\" styleID=\"11\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEX STRING\" styleID=\"13\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BASE85 STRING\" styleID=\"14\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BAD STRING CHAR\" styleID=\"15\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"props\" desc=\"Properties file\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGNMENT\" styleID=\"3\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFVAL\" styleID=\"4\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"python\" desc=\"Python\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"3\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORDS\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\">True False</WordsStyle>\r\n            <WordsStyle name=\"TRIPLE\" styleID=\"6\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TRIPLEDOUBLE\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASSNAME\" styleID=\"8\" fgColor=\"40FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFNAME\" styleID=\"9\" fgColor=\"40FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTBLOCK\" styleID=\"12\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRINGEOL\" styleID=\"12\" fgColor=\"008080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"rc\" desc=\"RC\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"ruby\" desc=\"Ruby\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"1\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENTLINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"POD\" styleID=\"3\" fgColor=\"004000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS NAME\" styleID=\"8\" fgColor=\"0080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEF NAME\" styleID=\"9\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"12\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"MODULE NAME\" styleID=\"15\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTANCE VAR\" styleID=\"16\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CLASS VAR\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BACKTICKS\" styleID=\"18\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATA SECTION\" styleID=\"19\" fgColor=\"600000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING Q\" styleID=\"24\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"smalltalk\" desc=\"Smalltalk\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"1\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"4\" fgColor=\"408080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"BINARY\" styleID=\"5\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"BOOL\" styleID=\"6\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SELF\" styleID=\"7\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SUPER\" styleID=\"8\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NIL\" styleID=\"9\" fgColor=\"8080C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"GLOBAL\" styleID=\"10\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"RETURN\" styleID=\"11\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"12\" fgColor=\"808000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"KWS END\" styleID=\"13\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ASSIGN\" styleID=\"14\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"15\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL SELECTOR\" styleID=\"16\" fgColor=\"FF80C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"sql\" desc=\"SQL\" ext=\"pck\">\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"5\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING2\" styleID=\"7\" fgColor=\"FF80FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tcl\" desc=\"TCL\" ext=\"\">\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"11\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"TYPE WORD\" styleID=\"16\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CHARACTER\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"VERBATIM\" styleID=\"13\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REGEX\" styleID=\"14\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE DOC\" styleID=\"15\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD\" styleID=\"17\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT DOC KEYWORD ERROR\" styleID=\"18\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"tex\" desc=\"TeX\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SPECIAL\" styleID=\"1\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"GROUP\" styleID=\"2\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"SYMBOL\" styleID=\"3\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMAND\" styleID=\"4\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vb\" desc=\"VB / VBS\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"7\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"WORD\" styleID=\"3\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"5\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"6\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"DATE\" styleID=\"8\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"verilog\" desc=\"Verilog\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"11\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGNAME\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"5\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"KEYWORD\" styleID=\"7\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"PREPROCESSOR\" styleID=\"9\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LINE BANG\" styleID=\"3\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"12\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"USER\" styleID=\"19\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"vhdl\" desc=\"VHDL\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT LIne\" styleID=\"2\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"3\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING\" styleID=\"4\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"OPERATOR\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"6\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"STRING EOL\" styleID=\"7\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION\" styleID=\"8\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"STD OPERATOR\" styleID=\"9\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"10\" fgColor=\"8080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type1\" />\r\n            <WordsStyle name=\"DIRECTIVE\" styleID=\"9\" fgColor=\"808000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DIRECTIVE OPERAND\" styleID=\"10\" fgColor=\"000080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"STD FUNCTION\" styleID=\"11\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"type2\" />\r\n            <WordsStyle name=\"STD PACKAGE\" styleID=\"12\" fgColor=\"800000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type3\" />\r\n            <WordsStyle name=\"STD TYPE\" styleID=\"13\" fgColor=\"8000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type4\" />\r\n            <WordsStyle name=\"USER DEFINE\" styleID=\"14\" fgColor=\"B5E71F\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type5\" />\r\n        </LexerType>\r\n        <LexerType name=\"xml\" desc=\"XML\" ext=\"csproj\">\r\n            <WordsStyle name=\"XMLSTART\" styleID=\"12\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"XMLEND\" styleID=\"13\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"9\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"5\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOUBLESTRING\" styleID=\"6\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SINGLESTRING\" styleID=\"7\" fgColor=\"FFA0A0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAG\" styleID=\"1\" fgColor=\"00FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGEND\" styleID=\"11\" fgColor=\"80FFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TAGUNKNOWN\" styleID=\"2\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTE\" styleID=\"3\" fgColor=\"00FF40\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ATTRIBUTEUNKNOWN\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"SGMLDEFAULT\" styleID=\"21\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"CDATA\" styleID=\"17\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"ENTITY\" styleID=\"10\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"2\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"yaml\" desc=\"YAML\" ext=\"\">\r\n            <WordsStyle name=\"DEFAULT\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"IDENTIFIER\" styleID=\"2\" fgColor=\"C0C0C0\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"COMMENT\" styleID=\"1\" fgColor=\"80A0FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"INSTRUCTION WORD\" styleID=\"3\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre1\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"4\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"REFERENCE\" styleID=\"5\" fgColor=\"804000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"DOCUMENT\" styleID=\"6\" fgColor=\"0000FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"TEXT\" styleID=\"7\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"ERROR\" styleID=\"8\" fgColor=\"FF0000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        </LexerType>\r\n        <LexerType name=\"searchResult\" desc=\"Search result\" ext=\"\">\r\n            <WordsStyle name=\"SELECTED LINE\" styleID=\"6\" fgColor=\"FFFF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"HEARDER\" styleID=\"1\" fgColor=\"008000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n            <WordsStyle name=\"NUMBER\" styleID=\"2\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n            <WordsStyle name=\"HIT WORD\" styleID=\"3\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"4\" fontSize=\"\" />\r\n            <WordsStyle name=\"KEYWORD1\" styleID=\"4\" fgColor=\"00FF40\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" keywordClass=\"instre2\">if else for while</WordsStyle>\r\n            <WordsStyle name=\"KEYWORD2\" styleID=\"5\" fgColor=\"0080FF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" keywordClass=\"type1\">bool long int char</WordsStyle>\r\n        </LexerType>\r\n    </LexerStyles>\r\n    <GlobalStyles>\r\n        <!-- Attention : Don't modify the name of styleID=\"0\" -->\r\n        <WidgetStyle name=\"Global override\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Default Style\" styleID=\"32\" fgColor=\"FFFFBF\" bgColor=\"000040\" fontName=\"Consolas\" fontStyle=\"0\" fontSize=\"10\" />\r\n        <WidgetStyle name=\"Indent guideline style\" styleID=\"37\" fgColor=\"808080\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Brace highlight style\" styleID=\"34\" fgColor=\"80FF80\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Bad brace colour\" styleID=\"35\" fgColor=\"FF8000\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Current line background colour\" styleID=\"0\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Mark colour\" styleID=\"0\" fgColor=\"C00000\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Selected text colour\" styleID=\"0\" bgColor=\"2050D0\" />\r\n        <WidgetStyle name=\"Caret colour\" styleID=\"2069\" fgColor=\"FFFF00\" />\r\n        <WidgetStyle name=\"Find Mark Style\" styleID=\"31\" fgColor=\"FFFF00\" bgColor=\"000040\" fontName=\"\" fontStyle=\"1\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Edge colour\" styleID=\"0\" fgColor=\"80FFFF\" />\r\n        <WidgetStyle name=\"Line number margin\" styleID=\"33\" fgColor=\"FFFFFF\" bgColor=\"000040\" fontName=\"\" fontStyle=\"0\" fontSize=\"\" />\r\n        <WidgetStyle name=\"Fold\" styleID=\"0\" fgColor=\"FFFFFF\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Fold margin\" styleID=\"0\" fgColor=\"000040\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"White space symbol\" styleID=\"0\" fgColor=\"004040\" />\r\n        <WidgetStyle name=\"Smart HighLighting\" styleID=\"29\" bgColor=\"2050D0\" />\r\n        <WidgetStyle name=\"Incremental highlight all\" styleID=\"28\" bgColor=\"008000\" />\r\n        <WidgetStyle name=\"Tags match highlighting\" styleID=\"27\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Tags attribute\" styleID=\"26\" bgColor=\"000040\" />\r\n        <WidgetStyle name=\"Active tab focused indicator\" styleID=\"0\" fgColor=\"FAAA3C\" />\r\n        <WidgetStyle name=\"Active tab unfocused indicator\" styleID=\"0\" fgColor=\"FFCAB0\" />\r\n        <WidgetStyle name=\"Active tab text\" styleID=\"0\" fgColor=\"000000\" />\r\n        <WidgetStyle name=\"Inactive tabs\" styleID=\"0\" fgColor=\"8080C0\" bgColor=\"CECECE\" />\r\n        <WidgetStyle name=\"Unsaved change marker\" styleID=\"0\" bgColor=\"FF0000\" />\r\n        <WidgetStyle name=\"Saved change marker\" styleID=\"0\" bgColor=\"80FF00\" />\r\n    </GlobalStyles>\r\n</NotepadPlus>\r\n\n \t  \t \n"
  },
  {
    "path": "old/resources/templates/empty.template",
    "content": "<html><body>\n<center><h1>Empty start project</h1></center>\n<h3><font color=blue>by Martin Ribelotta</font></h3>\n<tt>Start an empty project with blank Makefile</tt>\n</body></html>\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_vIdFYl/Makefile ./Makefile\n--- a_vIdFYl/Makefile\t1969-12-31 21:00:00.000000000 -0300\n+++ ./Makefile\t2017-11-05 12:35:59.325561673 -0300\n@@ -0,0 +1 @@\n+\n"
  },
  {
    "path": "old/resources/templates/gcc-exec.template",
    "content": "diff -Naur -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_16VwRS/inc/main.h ./inc/main.h\n--- a_16VwRS/inc/main.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./inc/main.h\t2016-06-13 21:59:46.233953335 -0300\n@@ -0,0 +1,8 @@\n+#ifndef __MAIN_H__\n+#define __MAIN_H__\n+\n+/*\n+ * Add definitions here\n+ */\n+\n+#endif\ndiff -Naur -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_16VwRS/Makefile ./Makefile\n--- a_16VwRS/Makefile\t1969-12-31 21:00:00.000000000 -0300\n+++ ./Makefile\t2016-06-13 22:07:40.137966026 -0300\n@@ -0,0 +1,39 @@\n+EXEC=${{ExecName string:program-name}}\n+CSRC=$(wildcard src/*.c)\n+CCSRC=$(wildcard src/*.cpp)\n+\n+OBJS=$(CSRC:.c=.o) $(CCSRC:.cpp=.o)\n+\n+DEPS=$(OBJS:.o=.d)\n+\n+CROSS=\n+CC=$(CROSS)gcc\n+CXX=$(CROSS)g++\n+\n+ifeq ($(strip $(CCSRC)),)\n+LD=$(CROSS)gcc\n+else\n+LD=$(CROSS)g++\n+endif\n+\n+all: $(EXEC)\n+\n+.PHONY: all clean\n+\n+-include $(DEPS)\n+\n+%.o: %.c\n+\t@echo \"CC $^\"\n+\t@$(CC) -MMD -c $(CFLAGS) -o $@ $^\n+\n+%.o: %.cpp\n+\t@echo \"CXX $^\"\n+\t@$(CXX) -MMD -c $(CFLAGS) $(CXXFLAGS) -o $@ $^\n+\n+$(EXEC): $(OBJS)\n+\t@echo \"LD $@\"\n+\t@$(LD) -o $@ $(LDFLAGS) $<\n+\n+clean:\n+\t@echo \"CLEAN\"\n+\t@rm -fR $(OBJS) $(DEPS) $(EXEC)\ndiff -Naur -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_16VwRS/src/main.c ./src/main.c\n--- a_16VwRS/src/main.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./src/main.c\t2016-06-13 21:59:00.661952114 -0300\n@@ -0,0 +1,5 @@\n+\n+int main(int argc, char **argv)\n+{\n+\treturn 0;\n+}\n"
  },
  {
    "path": "old/resources/templates/lpcopen-picociaa.template",
    "content": "diff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/app/src/blinky.c ./app/src/blinky.c\n--- a_tnusFF/app/src/blinky.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./app/src/blinky.c\t2016-10-22 23:17:43.468840275 -0300\n@@ -0,0 +1,75 @@\n+/*\n+ * @brief Blinky example using SysTick and interrupt\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"board.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define TICKRATE_HZ (10)\t/* 10 ticks per second */\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Systick handler ISR */\n+void SysTick_Handler(void)\n+{\n+\tBoard_LED_Toggle(0);\n+}\n+\n+/* main function (C entry point) */\n+int main(void)\n+{\n+\tint loop = 1;\t/* Used to fix the unreachable statement warning */\n+\tSystemCoreClockUpdate();\n+\tBoard_Init();\n+\n+\tBoard_LED_Set(0, false);\n+\n+\t/* Enable SysTick Timer */\n+\tSysTick_Config(SystemCoreClock / TICKRATE_HZ);\n+\n+\twhile (loop) {\n+\t\t__WFI();\n+\t}\n+\n+\treturn 0;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/base/inc/crp.h ./base/inc/crp.h\n--- a_tnusFF/base/inc/crp.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./base/inc/crp.h\t2016-10-22 23:17:43.472840275 -0300\n@@ -0,0 +1,85 @@\n+/****************************************************************************\n+ *   Description:\n+ *     Code Read Protection macros\n+ ****************************************************************************\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * products. This software is supplied \"AS IS\" without any warranties.\n+ * NXP Semiconductors assumes no responsibility or liability for the\n+ * use of the software, conveys no license or title under any patent,\n+ * copyright, or mask work right to the product. NXP Semiconductors\n+ * reserves the right to make changes in the software without\n+ * notification. NXP Semiconductors also make no representation or\n+ * warranty that such application will be suitable for the specified\n+ * use without further testing or modification.\n+****************************************************************************/\n+#ifndef _CRP_H_INCLUDED_\n+#define _CRP_H_INCLUDED_\n+\n+// A macro for placing data into the Code Read Protect (CRP) section,\n+// which is then located at the correct address for the selected MCU\n+// by the automatically generated linker script. The CRP section should\n+// contain a single 32-bit value which is the CRP value. See appropriate\n+// documentation for the MCU to determine CRP values.\n+//\n+// This feature is only available for NXP MCU targets with the Code Read\n+// Protect Feature\n+//\n+// Example:\n+//        __CRP const uint32_t CRP_WORD = CRP_NO_CRP ;\n+//\n+#define __CRP __attribute__ ((used,section(\".crp\")))\n+\n+#define CRP_NO_CRP          0xFFFFFFFF\n+\n+// Disables UART and USB In System Programming (reads and writes)\n+// Leaves SWD debugging, with reads and writes, enabled\n+#define CRP_NO_ISP    0x4E697370\n+\n+// Disables SWD debugging & JTAG, leaves ISP with with reads and writes enabled\n+// You will need UART connectivity and FlashMagic (flashmagictool.com) to reverse\n+// this. Don't even try this without these tools; most likely the SWD flash\n+// programming will not even complete.\n+// Allows reads and writes only to RAM above 0x10000300 and flash other than\n+// sector 0 (the first 4 kB). Full erase also allowed- again only through UART\n+// and FlashMagic (NO JTAG/SWD)\n+#define CRP_CRP1      0x12345678\n+\n+// Disables SWD debugging & JTAG, leaves UART ISP with with only full erase\n+// enabled. You must have UART access and FlashMagic before setting this\n+// option.\n+// Don't even try this without these tools; most likely the SWD flash\n+// programming will not even complete.\n+#define CRP_CRP2      0x87654321\n+\n+/************************************************************/\n+/**** DANGER CRP3 WILL LOCK PART TO ALL READS and WRITES ****/\n+#define CRP_CRP3_CONSUME_PART 0x43218765\n+/************************************************************/\n+\n+#if CONFIG_CRP_SETTING_NO_CRP == 1\n+#define CURRENT_CRP_SETTING CRP_NO_CRP\n+#endif\n+\n+#if CONFIG_CRP_SETTING_NOISP == 1\n+#define CURRENT_CRP_SETTING CRP_NO_ISP\n+#endif\n+\n+#if CONFIG_CRP_SETTING_CRP1 == 1\n+#define CURRENT_CRP_SETTING CRP_CRP1\n+#endif\n+\n+#if CONFIG_CRP_SETTING_CRP2 == 1\n+#define CURRENT_CRP_SETTING CRP_CRP2\n+#endif\n+\n+#if CONFIG_CRP_SETTING_CRP3_CONSUME_PART == 1\n+#define CURRENT_CRP_SETTING CRP_CRP3_CONSUME_PART\n+#endif\n+\n+#ifndef CURRENT_CRP_SETTING\n+#define CURRENT_CRP_SETTING CRP_NO_CRP\n+#endif\n+\n+\n+#endif /* _CRP_H_INCLUDED_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/base/Makefile ./base/Makefile\n--- a_tnusFF/base/Makefile\t1969-12-31 21:00:00.000000000 -0300\n+++ ./base/Makefile\t2016-10-22 23:17:43.472840275 -0300\n@@ -0,0 +1,39 @@\n+# Copyright 2016, Pablo Ridolfi\n+# All rights reserved.\n+#\n+# This file is part of Workspace.\n+#\n+# Redistribution and use in source and binary forms, with or without\n+# modification, are permitted provided that the following conditions are met:\n+#\n+# 1. Redistributions of source code must retain the above copyright notice,\n+#    this list of conditions and the following disclaimer.\n+#\n+# 2. Redistributions in binary form must reproduce the above copyright notice,\n+#    this list of conditions and the following disclaimer in the documentation\n+#    and/or other materials provided with the distribution.\n+#\n+# 3. Neither the name of the copyright holder nor the names of its\n+#    contributors may be used to endorse or promote products derived from this\n+#    software without specific prior written permission.\n+#\n+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+# POSSIBILITY OF SUCH DAMAGE.\n+\n+base_PATH := modules/lpc54102_m4/base\n+\n+base_SRC_FILES := $(wildcard $(base_PATH)/src/*.c) \\\n+                  $(wildcard $(base_PATH)/src/*.S)\n+\n+base_INC_FOLDERS := $(base_PATH)/inc\n+\n+base_SRC_FOLDERS := $(base_PATH)/src\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/base/src/cr_startup_lpc5410x.c ./base/src/cr_startup_lpc5410x.c\n--- a_tnusFF/base/src/cr_startup_lpc5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./base/src/cr_startup_lpc5410x.c\t2016-10-22 23:17:43.472840275 -0300\n@@ -0,0 +1,532 @@\n+//*****************************************************************************\n+// LPC5410x Microcontroller Startup code for use with LPCXpresso IDE\n+//\n+// Version : 150723\n+//*****************************************************************************\n+//\n+// Copyright(C) NXP Semiconductors, 2014-15\n+// All rights reserved.\n+//\n+// Software that is described herein is for illustrative purposes only\n+// which provides customers with programming information regarding the\n+// LPC products.  This software is supplied \"AS IS\" without any warranties of\n+// any kind, and NXP Semiconductors and its licensor disclaim any and\n+// all warranties, express or implied, including all implied warranties of\n+// merchantability, fitness for a particular purpose and non-infringement of\n+// intellectual property rights.  NXP Semiconductors assumes no responsibility\n+// or liability for the use of the software, conveys no license or rights under any\n+// patent, copyright, mask work right, or any other intellectual property rights in\n+// or to any products. NXP Semiconductors reserves the right to make changes\n+// in the software without notification. NXP Semiconductors also makes no\n+// representation or warranty that such application will be suitable for the\n+// specified use without further testing or modification.\n+//\n+// Permission to use, copy, modify, and distribute this software and its\n+// documentation is hereby granted, under NXP Semiconductors' and its\n+// licensor's relevant copyrights in the software, without fee, provided that it\n+// is used in conjunction with NXP Semiconductors microcontrollers.  This\n+// copyright, permission, and disclaimer notice must appear in all copies of\n+// this code.\n+//*****************************************************************************\n+\n+#if defined (__cplusplus)\n+#ifdef __REDLIB__\n+#error Redlib does not support C++\n+#else\n+//*****************************************************************************\n+//\n+// The entry point for the C++ library startup\n+//\n+//*****************************************************************************\n+extern \"C\" {\n+    extern void __libc_init_array(void);\n+}\n+#endif\n+#endif\n+\n+#define WEAK __attribute__ ((weak))\n+#define ALIAS(f) __attribute__ ((weak, alias (#f)))\n+\n+//*****************************************************************************\n+#if defined (__cplusplus)\n+extern \"C\" {\n+#endif\n+\n+//*****************************************************************************\n+#if defined (__USE_CMSIS) || defined (__USE_LPCOPEN)\n+// Declaration of external SystemInit function\n+extern void SystemInit(void);\n+#endif\n+\n+//*****************************************************************************\n+#if !defined (DONT_ENABLE_SWVTRACECLK) && !defined (CORE_M0PLUS)\n+// Allow confirmation that SWV trace has been enabled\n+unsigned int __SWVtrace_Enabled;\n+#endif\n+\n+//*****************************************************************************\n+//\n+// Forward declaration of the default handlers. These are aliased.\n+// When the application defines a handler (with the same name), this will\n+// automatically take precedence over these weak definitions\n+//\n+//*****************************************************************************\n+void ResetISR(void);\n+#if defined (__MULTICORE_MASTER)\n+void ResetISR2(void);\n+#endif\n+WEAK void NMI_Handler(void);\n+WEAK void HardFault_Handler(void);\n+WEAK void MemManage_Handler(void);\n+WEAK void BusFault_Handler(void);\n+WEAK void UsageFault_Handler(void);\n+WEAK void SVC_Handler(void);\n+WEAK void DebugMon_Handler(void);\n+WEAK void PendSV_Handler(void);\n+WEAK void SysTick_Handler(void);\n+WEAK void IntDefaultHandler(void);\n+\n+//*****************************************************************************\n+//\n+// Forward declaration of the specific IRQ handlers. These are aliased\n+// to the IntDefaultHandler, which is a 'forever' loop. When the application\n+// defines a handler (with the same name), this will automatically take\n+// precedence over these weak definitions\n+//\n+//*****************************************************************************\n+// External Interrupts - Available on M0/M4\n+void WDT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void BOD_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void Reserved_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void DMA_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GINT0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void PIN_INT0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void PIN_INT1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void PIN_INT2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void PIN_INT3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UTICK_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void MRT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CT32B0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CT32B1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CT32B2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CT32B3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CT32B4_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SCT0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2C0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2C1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2C2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SPI0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SPI1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ADC_SEQA_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ADC_SEQB_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ADC_THCMP_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void RTC_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void IOH_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void MAILBOX_IRQHandler(void) ALIAS(IntDefaultHandler);\n+// External Interrupts - For M4 only\n+void GINT1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void PIN_INT4_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void PIN_INT5_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void PIN_INT6_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void PIN_INT7_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SPI2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SPI3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void RIT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void Reserved41_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void Reserved42_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void Reserved43_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void Reserved44_IRQHandler(void) ALIAS(IntDefaultHandler);\n+\n+//*****************************************************************************\n+//\n+// The entry point for the application.\n+// __main() is the entry point for Redlib based applications\n+// main() is the entry point for Newlib based applications\n+//\n+//*****************************************************************************\n+#if defined (__REDLIB__)\n+extern void __main(void);\n+#endif\n+extern int main(void);\n+//*****************************************************************************\n+//\n+// External declaration for the pointer to the stack top from the Linker Script\n+//\n+//*****************************************************************************\n+extern void _vStackTop(void);\n+\n+//*****************************************************************************\n+//\n+// External declaration for LPC MCU vector table checksum from  Linker Script\n+//\n+//*****************************************************************************\n+WEAK extern void __valid_user_code_checksum();\n+\n+// Variable to store CRP value in. Will be placed automatically\n+// by the linker when \"Enable Code Read Protect\" selected.\n+// See crp.h header for more information\n+#include \"crp.h\"\n+\n+__CRP const unsigned int CRP_WORD = CRP_NO_CRP;\n+\n+//*****************************************************************************\n+#if defined (__cplusplus)\n+} // extern \"C\"\n+#endif\n+//*****************************************************************************\n+//\n+// The vector table.\n+// This relies on the linker script to place at correct location in memory.\n+//\n+//*****************************************************************************\n+extern void (* const g_pfnVectors[])(void);\n+__attribute__ ((used, section(\".isr_vector\")))\n+void (* const g_pfnVectors[])(void) = {\n+    // Core Level - CM4\n+        &_vStackTop,            // The initial stack pointer\n+        ResetISR,               // The reset handler\n+        NMI_Handler,            // The NMI handler\n+        HardFault_Handler,      // The hard fault handler\n+        MemManage_Handler,      // The MPU fault handler\n+        BusFault_Handler,       // The bus fault handler\n+        UsageFault_Handler,     // The usage fault handler\n+        __valid_user_code_checksum, // LPC MCU Checksum\n+        0,                      // Reserved\n+        0,                      // Reserved\n+        0,                      // Reserved\n+        SVC_Handler,            // SVCall handler\n+        DebugMon_Handler,       // Debug monitor handler\n+        0,                      // Reserved\n+        PendSV_Handler,         // The PendSV handler\n+        SysTick_Handler,        // The SysTick handler\n+\n+        // External Interrupts - Available on M0/M4\n+        WDT_IRQHandler,         // Watchdog\n+        BOD_IRQHandler,         // Brown Out Detect\n+        Reserved_IRQHandler,    // Reserved\n+        DMA_IRQHandler,         // DMA Controller\n+        GINT0_IRQHandler,       // GPIO Group0 Interrupt\n+        PIN_INT0_IRQHandler,    // PIO INT0\n+        PIN_INT1_IRQHandler,    // PIO INT1\n+        PIN_INT2_IRQHandler,    // PIO INT2\n+        PIN_INT3_IRQHandler,    // PIO INT3\n+        UTICK_IRQHandler,       // UTICK timer\n+        MRT_IRQHandler,         // Multi-Rate Timer\n+        CT32B0_IRQHandler,      // Counter Timer 0\n+        CT32B1_IRQHandler,      // Counter Timer 1\n+        CT32B2_IRQHandler,      // Counter Timer 2\n+        CT32B3_IRQHandler,      // Counter Timer 3\n+        CT32B4_IRQHandler,      // Counter Timer 4\n+        SCT0_IRQHandler,        // Smart Counter Timer\n+        UART0_IRQHandler,       // UART0\n+        UART1_IRQHandler,       // UART1\n+        UART2_IRQHandler,       // UART2\n+        UART3_IRQHandler,       // UART3\n+        I2C0_IRQHandler,        // I2C0 controller\n+        I2C1_IRQHandler,        // I2C1 controller\n+        I2C2_IRQHandler,        // I2C2 controller\n+        SPI0_IRQHandler,        // SPI0 controller\n+        SPI1_IRQHandler,        // SPI1 controller\n+        ADC_SEQA_IRQHandler,    // ADC SEQA\n+        ADC_SEQB_IRQHandler,    // ADC SEQB\n+        ADC_THCMP_IRQHandler,   // ADC THCMP and OVERRUN ORed\n+        RTC_IRQHandler,         // RTC Timer\n+        IOH_IRQHandler,         // IOH Handler\n+        MAILBOX_IRQHandler,     // Mailbox\n+\n+        // External Interrupts - For M4 only\n+        GINT1_IRQHandler,       // GPIO Group1 Interrupt\n+        PIN_INT4_IRQHandler,    // PIO INT4\n+        PIN_INT5_IRQHandler,    // PIO INT5\n+        PIN_INT6_IRQHandler,    // PIO INT6\n+        PIN_INT7_IRQHandler,    // PIO INT7\n+        SPI2_IRQHandler,        // SPI2 controller\n+        SPI3_IRQHandler,        // SPI3 controller\n+        0,                      // Reserved\n+        RIT_IRQHandler,         // RIT Timer\n+        Reserved41_IRQHandler,  // Reserved\n+        Reserved42_IRQHandler,  // Reserved\n+        Reserved43_IRQHandler,  // Reserved\n+        Reserved44_IRQHandler,  // Reserved\n+\n+}; /* End of g_pfnVectors */\n+\n+//*****************************************************************************\n+// Functions to carry out the initialization of RW and BSS data sections. These\n+// are written as separate functions rather than being inlined within the\n+// ResetISR() function in order to cope with MCUs with multiple banks of\n+// memory.\n+//*****************************************************************************\n+__attribute__ ((section(\".after_vectors\")))\n+void data_init(unsigned int romstart, unsigned int start, unsigned int len) {\n+    unsigned int *pulDest = (unsigned int*) start;\n+    unsigned int *pulSrc = (unsigned int*) romstart;\n+    unsigned int loop;\n+    for (loop = 0; loop < len; loop = loop + 4)\n+        *pulDest++ = *pulSrc++;\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void bss_init(unsigned int start, unsigned int len) {\n+    unsigned int *pulDest = (unsigned int*) start;\n+    unsigned int loop;\n+    for (loop = 0; loop < len; loop = loop + 4)\n+        *pulDest++ = 0;\n+}\n+\n+//*****************************************************************************\n+// The following symbols are constructs generated by the linker, indicating\n+// the location of various points in the \"Global Section Table\". This table is\n+// created by the linker via the Code Red managed linker script mechanism. It\n+// contains the load address, execution address and length of each RW data\n+// section and the execution and length of each BSS (zero initialized) section.\n+//*****************************************************************************\n+extern unsigned int __data_section_table;\n+extern unsigned int __data_section_table_end;\n+extern unsigned int __bss_section_table;\n+extern unsigned int __bss_section_table_end;\n+\n+//*****************************************************************************\n+// Reset entry point for your code.\n+// Sets up a simple runtime environment and initializes the C/C++\n+// library.\n+//*****************************************************************************\n+\n+#if defined (__MULTICORE_MASTER)\n+//#define  cpu_ctrl 0x40000300\n+//#define coproc_boot\t0x40000304\n+//#define set coproc_stack\t0x40000308\n+__attribute__ ((naked, section(\".after_vectors.reset\")))\n+void ResetISR(void) {\n+    asm volatile(\n+        \".set   cpu_ctrl,       0x40000300\\t\\n\"\n+        \".set   coproc_boot,    0x40000304\\t\\n\"\n+        \".set   coproc_stack,   0x40000308\\t\\n\"\n+        \"MOVS   R5, #1\\t\\n\"\n+        \"LDR    R0, =0xE000ED00\\t\\n\"\n+        \"LDR    R1, [R0]\\t\\n\"           // READ CPUID register\n+        \"LDR    R2,=0x410CC601\\t\\n\"     // CM0 R0p1 identifier\n+        \"EORS   R1,R1,R2\\t\\n\"           // XOR to see if we are C0\n+        \"LDR    R3, =cpu_ctrl\\t\\n\"      // get address of CPU_CTRL\n+        \"LDR    R1,[R3]\\t\\n\"            // read cpu_ctrl reg into R1\n+        \"BEQ.N  cm0_boot\\t\\n\"\n+    \"cm4_boot:\\t\\n\"\n+        \"LDR    R0,=coproc_boot\\t\\n\"    // coproc boot address\n+        \"LDR    R0,[R0]\\t\\n\"            // get address to branch to\n+        \"MOVS   R0,R0\\t\\n\"              // Check if 0\n+        \"BEQ.N  check_master_m4\\t\\n\"    // if zero in boot reg, we just branch to  real reset\n+        \"BX     R0\\t\\n\"                 // otherwise, we branch to boot address\n+    \"commonboot:\\t\\n\"\n+        \"LDR    R0, =ResetISR2\\t\\n\"     // Jump to 'real' reset handler\n+        \"BX     R0\\t\\n\"\n+    \"cm0_boot:\\t\\n\"\n+        \"LDR    R0,=coproc_boot\\t\\n\"    // coproc boot address\n+        \"LDR    R0,[R0]\\t\\n\"            // get address to branch to\n+        \"MOVS   R0,R0\\t\\n\"              // Check if 0\n+        \"BEQ.N  check_master_m0\\t\\n\"    // if zero in boot reg, we just branch to  real reset\n+        \"LDR    R1,=coproc_stack\\t\\n\"   // pickup coprocesor stackpointer (from syscon CPSTACK)\n+        \"LDR    R1,[R1]\\t\\n\"\n+        \"MOV    SP,R1\\t\\n\"\n+        \"BX     R0\\t\\n\"                 // goto boot address\n+    \"check_master_m0:\\t\\n\"\n+        \"ANDS   R1,R1,R5\\t\\n\"           // bit test bit0\n+        \"BEQ.N  commonboot\\t\\n\"         // if we get 0, that means we are masters\n+        \"B.N    goto_sleep_pending_reset\\t\\n\"   // Otherwise, there is no startup vector for slave, so we go to sleep\n+    \"check_master_m4:\\t\\n\"\n+        \"ANDS   R1,R1,R5\\t\\n\"           // bit test bit0\n+        \"BNE.N  commonboot\\t\\n\"         // if we get 1, that means we are masters\n+    \"goto_sleep_pending_reset:\\t\\n\"\n+        \"MOV     SP,R5\\t\\n\"             // load 0x1 into SP so that any stacking (eg on NMI) will not cause us to wakeup\n+            // and write to uninitialised Stack area (instead it will LOCK us up before we cause damage)\n+            // this code should only be reached if debugger bypassed ROM or we changed master without giving\n+            // correct start address, the only way out of this is through a debugger change of SP and PC\n+    \"sleepo:\\t\\n\"\n+        \"WFI\\t\\n\"                       // go to sleep\n+        \"B.N    sleepo\\t\\n\"\n+    );\n+}\n+\n+void ResetISR2(void) {\n+\n+#else\n+__attribute__ ((section(\".after_vectors.reset\")))\n+void ResetISR(void) {\n+#endif\n+\n+    // If this is not the CM0+ core...\n+#if !defined (CORE_M0PLUS)\n+    // If this is not a slave project...\n+#if !defined (__MULTICORE_M0SLAVE) && \\\n+    !defined (__MULTICORE_M4SLAVE)\n+    // Optionally enable RAM banks that may be off by default at reset\n+#if !defined (DONT_ENABLE_DISABLED_RAMBANKS)\n+    volatile unsigned int *SYSCON_SYSAHBCLKCTRL0 = (unsigned int *) 0x400000c0;\n+    // Ensure that SRAM2(4) bit in SYSAHBCLKCTRL0 are set\n+    *SYSCON_SYSAHBCLKCTRL0 |= (1 << 4);\n+#endif\n+#endif\n+#endif\n+\n+    //\n+    // Copy the data sections from flash to SRAM.\n+    //\n+    unsigned int LoadAddr, ExeAddr, SectionLen;\n+    unsigned int *SectionTableAddr;\n+\n+    // Load base address of Global Section Table\n+    SectionTableAddr = &__data_section_table;\n+\n+    // Copy the data sections from flash to SRAM.\n+    while (SectionTableAddr < &__data_section_table_end) {\n+        LoadAddr = *SectionTableAddr++;\n+        ExeAddr = *SectionTableAddr++;\n+        SectionLen = *SectionTableAddr++;\n+        data_init(LoadAddr, ExeAddr, SectionLen);\n+    }\n+    // At this point, SectionTableAddr = &__bss_section_table;\n+    // Zero fill the bss segment\n+    while (SectionTableAddr < &__bss_section_table_end) {\n+        ExeAddr = *SectionTableAddr++;\n+        SectionLen = *SectionTableAddr++;\n+        bss_init(ExeAddr, SectionLen);\n+    }\n+\n+\t// Optionally enable Cortex-M4 SWV trace (off by default at reset)\n+    // Note - your board support must also set up pinmuxing such that\n+    // SWO is output on GPIO PIO0-15 (FUNC2) or PIO1_1 (FUNC2).\n+#if !defined (DONT_ENABLE_SWVTRACECLK) && !defined (CORE_M0PLUS)\n+\tvolatile unsigned int *TRACECLKDIV = (unsigned int *) 0x400000E4;\n+\tvolatile unsigned int *SYSAHBCLKCTRLSET = (unsigned int *) 0x400000C8;\n+\tvolatile unsigned int *SYSAHBCLKCTRL = (unsigned int *) 0x400000C0;\n+\t// Write 0x00000001 to TRACECLKDIV (0x400000E4) – Trace divider\n+\t*TRACECLKDIV = 1;\n+\t// Enable IOCON peripheral clock (for SWO on PIO0-15 or PIO1_1)\n+\t// by setting bit13 via SYSAHBCLKCTRLSET[0] (0x400000C8)\n+\t*SYSAHBCLKCTRLSET = 1 << 13; // 0x2000\n+\t// Read  SYSAHBCLKCTRL[0] (0x400000C0) and check bit 13\n+\t__SWVtrace_Enabled = ((*SYSAHBCLKCTRL & 1 << 13) == 1 << 13);\n+#endif\n+\n+#if !defined (__USE_LPCOPEN)\n+// LPCOpen init code deals with FP and VTOR initialisation\n+#if defined (__VFP_FP__) && !defined (__SOFTFP__)\n+    /*\n+     * Code to enable the Cortex-M4 FPU only included\n+     * if appropriate build options have been selected.\n+     * Code taken from Section 7.1, Cortex-M4 TRM (DDI0439C)\n+     */\n+    // CPACR is located at address 0xE000ED88\n+    asm(\"LDR.W R0, =0xE000ED88\");\n+    // Read CPACR\n+    asm(\"LDR R1, [R0]\");\n+    // Set bits 20-23 to enable CP10 and CP11 coprocessors\n+    asm(\" ORR R1, R1, #(0xF << 20)\");\n+    // Write back the modified value to the CPACR\n+    asm(\"STR R1, [R0]\");\n+#endif // (__VFP_FP__) && !(__SOFTFP__)\n+    // ******************************\n+    // Check to see if we are running the code from a non-zero\n+    // address (eg RAM, external flash), in which case we need\n+    // to modify the VTOR register to tell the CPU that the\n+    // vector table is located at a non-0x0 address.\n+\n+    // Note that we do not use the CMSIS register access mechanism,\n+    // as there is no guarantee that the project has been configured\n+    // to use CMSIS.\n+    unsigned int * pSCB_VTOR = (unsigned int *) 0xE000ED08;\n+    if ((unsigned int *) g_pfnVectors != (unsigned int *) 0x00000000) {\n+        // CMSIS : SCB->VTOR = <address of vector table>\n+        *pSCB_VTOR = (unsigned int) g_pfnVectors;\n+    }\n+#endif\n+\n+#if defined (__USE_CMSIS) || defined (__USE_LPCOPEN)\n+    SystemInit();\n+#endif\n+\n+#if defined (__cplusplus)\n+    //\n+    // Call C++ library initialisation\n+    //\n+    __libc_init_array();\n+#endif\n+\n+#if defined (__REDLIB__)\n+    // Call the Redlib library, which in turn calls main()\n+    __main();\n+#else\n+    main();\n+#endif\n+\n+    //\n+    // main() shouldn't return, but if it does, we'll just enter an infinite loop\n+    //\n+    while (1) {\n+        ;\n+    }\n+}\n+\n+//*****************************************************************************\n+// Default exception handlers. Override the ones here by defining your own\n+// handler routines in your application code.\n+//*****************************************************************************\n+__attribute__ ((section(\".after_vectors\")))\n+void NMI_Handler(void)\n+{ while(1) {}\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void HardFault_Handler(void)\n+{ while(1) {}\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void MemManage_Handler(void)\n+{ while(1) {}\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void BusFault_Handler(void)\n+{ while(1) {}\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void UsageFault_Handler(void)\n+{ while(1) {}\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void SVC_Handler(void)\n+{ while(1) {}\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void DebugMon_Handler(void)\n+{ while(1) {}\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void PendSV_Handler(void)\n+{ while(1) {}\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void SysTick_Handler(void)\n+{ while(1) {}\n+}\n+\n+//*****************************************************************************\n+//\n+// Processor ends up here if an unexpected interrupt occurs or a specific\n+// handler is not present in the application code.\n+//\n+//*****************************************************************************\n+__attribute__ ((section(\".after_vectors\")))\n+void IntDefaultHandler(void) {\n+    while (1) {}\n+}\n+\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/base/src/sysinit.c ./base/src/sysinit.c\n--- a_tnusFF/base/src/sysinit.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./base/src/sysinit.c\t2016-10-22 23:17:43.472840275 -0300\n@@ -0,0 +1,84 @@\n+/*\n+ * @brief Common SystemInit function for LPC54xxx chips\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+ #if defined(NO_BOARD_LIB)\n+ #include \"chip.h\"\n+ #else\n+ #include \"board.h\"\n+ #endif\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+#if defined(NO_BOARD_LIB)\n+const uint32_t ExtClockIn = 0;\n+#endif\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set up and initialize hardware prior to call to main */\n+void SystemInit(void)\n+{\n+#if defined(__CODE_RED)\n+\textern void(*const g_pfnVectors[]) (void);\n+\tSCB->VTOR = (uint32_t) &g_pfnVectors;\n+#else\n+\textern void *__Vectors;\n+\tSCB->VTOR = (uint32_t) &__Vectors;\n+#endif\n+\n+#if defined(CORE_M4)\n+#if defined(__FPU_PRESENT) && __FPU_PRESENT == 1\n+\tfpuInit();\n+#endif\n+#endif\n+\n+#if !defined(__MULTICORE_M0SLAVE) && !defined(__MULTICORE_M4SLAVE)\n+#if defined(NO_BOARD_LIB)\n+\t/* Chip specific SystemInit */\n+\tChip_SystemInit();\n+#else\n+\t/* Board specific SystemInit */\n+\tBoard_SystemInit();\n+#endif\n+#endif\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/board/inc/board_api.h ./board/inc/board_api.h\n--- a_tnusFF/board/inc/board_api.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./board/inc/board_api.h\t2016-10-22 23:17:43.472840275 -0300\n@@ -0,0 +1,187 @@\n+/*\n+ * @brief Common board API functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __BOARD_API_H_\n+#define __BOARD_API_H_\n+\n+#include \"lpc_types.h\"\n+#include <stdio.h>\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup BOARD_COMMON_API BOARD: Common board functions\n+ * @ingroup BOARD_Common\n+ * This file contains common board definitions that are shared across\n+ * boards and devices. All of these functions do not need to be\n+ * implemented for a specific board, but if they are implemented, they\n+ * should use this API standard.\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tSetup and initialize hardware prior to call to main()\n+ * @return\tNone\n+ * @note\tBoard_SystemInit() is called prior to the application and sets up system\n+ * clocking, memory, and any resources needed prior to the application\n+ * starting.\n+ */\n+void Board_SystemInit(void);\n+\n+/**\n+ * @brief\tSetup pin multiplexer per board schematics\n+ * @return\tNone\n+ * @note\tBoard_SetupMuxing() should be called from SystemInit() prior to application\n+ * main() is called. So that the PINs are set in proper state.\n+ */\n+void Board_SetupMuxing(void);\n+\n+/**\n+ * @brief\tSetup system clocking\n+ * @return\tNone\n+ * @note\tThis sets up board clocking.\n+ */\n+void Board_SetupClocking(void);\n+\n+/**\n+ * @brief\tSetup external system memory\n+ * @return\tNone\n+ * @note\tThis function is typically called after pin mux setup and clock setup and\n+ * sets up any external memory needed by the system (DRAM, SRAM, etc.). Not all\n+ * boards need this function.\n+ */\n+void Board_SetupExtMemory(void);\n+\n+/**\n+ * @brief\tSet up and initialize all required blocks and functions related to the board hardware.\n+ * @return\tNone\n+ */\n+void Board_Init(void);\n+\n+/**\n+ * @brief\tInitializes board UART for output, required for printf redirection\n+ * @return\tNone\n+ */\n+void Board_Debug_Init(void);\n+\n+/**\n+ * @brief\tSends a single character on the UART, required for printf redirection\n+ * @param\tch\t: character to send\n+ * @return\tNone\n+ */\n+void Board_UARTPutChar(char ch);\n+\n+/**\n+ * @brief\tGet a single character from the UART, required for scanf input\n+ * @return\tEOF if not character was received, or character value\n+ */\n+int Board_UARTGetChar(void);\n+\n+/**\n+ * @brief\tPrints a string to the UART\n+ * @param\tstr\t: Terminated string to output\n+ * @return\tNone\n+ */\n+void Board_UARTPutSTR(char *str);\n+\n+/**\n+ * @brief\tSets the state of a board LED to on or off\n+ * @param\tLEDNumber\t: LED number to set state for\n+ * @param\tState\t\t: true for on, false for off\n+ * @return\tNone\n+ */\n+void Board_LED_Set(uint8_t LEDNumber, bool State);\n+\n+/**\n+ * @brief\tReturns the current state of a board LED\n+ * @param\tLEDNumber\t: LED number to set state for\n+ * @return\ttrue if the LED is on, otherwise false\n+ */\n+bool Board_LED_Test(uint8_t LEDNumber);\n+\n+/**\n+ * @brief\tToggles the current state of a board LED\n+ * @param\tLEDNumber\t: LED number to change state for\n+ * @return\tNone\n+ */\n+void Board_LED_Toggle(uint8_t LEDNumber);\n+\n+/**\n+ * @brief\tTurn on Board LCD Backlight\n+ * @param\tIntensity\t: Backlight intensity (0 = off, >=1 = on)\n+ * @return\tNone\n+ * @note\tOn boards where a GPIO is used to control backlight on/off state, a '0' or '1'\n+ * value will turn off or on the backlight. On some boards, a non-0 value will\n+ * control backlight intensity via a PWN. For PWM systems, the intensity value\n+ * is a percentage value between 0 and 100%.\n+ */\n+void Board_SetLCDBacklight(uint8_t Intensity);\n+\n+/**\n+ * @brief Function prototype for a MS delay function. Board layers or example code may\n+ *        define this function as needed.\n+ */\n+typedef void (*p_msDelay_func_t)(uint32_t);\n+\n+/* The DEBUG* functions are selected based on system configuration.\n+   Code that uses the DEBUG* functions will have their I/O routed to\n+   the UART, semihosting, or nowhere. */\n+#if defined(DEBUG_ENABLE)\n+#if defined(DEBUG_SEMIHOSTING)\n+#define DEBUGINIT()\n+#define DEBUGOUT(...) printf(__VA_ARGS__)\n+#define DEBUGSTR(str) printf(str)\n+#define DEBUGIN() (int) EOF\n+\n+#else\n+#define DEBUGINIT() Board_Debug_Init()\n+#define DEBUGOUT(...) printf(__VA_ARGS__)\n+#define DEBUGSTR(str) Board_UARTPutSTR(str)\n+#define DEBUGIN() Board_UARTGetChar()\n+#endif /* defined(DEBUG_SEMIHOSTING) */\n+\n+#else\n+#define DEBUGINIT()\n+#define DEBUGOUT(...)\n+#define DEBUGSTR(str)\n+#define DEBUGIN() (int) EOF\n+#endif /* defined(DEBUG_ENABLE) */\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __BOARD_API_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/board/inc/board.h ./board/inc/board.h\n--- a_tnusFF/board/inc/board.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./board/inc/board.h\t2016-10-22 23:17:43.472840275 -0300\n@@ -0,0 +1,113 @@\n+/*\n+ * @brief NXP LPCXpresso LPC54102 board file\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __BOARD_H_\n+#define __BOARD_H_\n+\n+#include \"chip.h\"\n+/* board_api.h is included at the bottom of this file after DEBUG setup */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup BOARD_LPCXPRESSO_54102 LPC54102 LPCXpresso LQFP board support software API functions\n+ * @ingroup LPCOPEN_5410X_BOARD_LPCXPRESSO_54102\n+ * The board support software API functions provide some simple abstracted\n+ * functions used across multiple LPCOpen board examples. See @ref BOARD_COMMON_API\n+ * for the functions defined by this board support layer.<br>\n+ * @{\n+ */\n+\n+/** @defgroup BOARD_LPCXPRESSO_54102_OPTIONS BOARD: LPC54102 LPCXpresso LQFP board build options\n+ * This board has options that configure its operation at build-time.<br>\n+ * @{\n+ */\n+\n+/** Define DEBUG_ENABLE to enable IO via the DEBUGSTR, DEBUGOUT, and\n+    DEBUGIN macros. If not defined, DEBUG* functions will be optimized\n+    out of the code at build time.\n+ */\n+#define DEBUG_ENABLE\n+\n+/** Define DEBUG_SEMIHOSTING along with DEBUG_ENABLE to enable IO support\n+    via semihosting. You may need to use a C library that supports\n+    semihosting with this option.\n+ */\n+// #define DEBUG_SEMIHOSTING\n+\n+/** Board UART used for debug output and input using the DEBUG* macros. This\n+    is also the port used for Board_UARTPutChar, Board_UARTGetChar, and\n+    Board_UARTPutSTR functions. Although you can setup multiple UARTs here,\n+    the board code only supports UART0 in the Board_UART_Init() function,\n+    so be sure to change it there too if not using UART0.\n+ */\n+#define DEBUG_UART                      LPC_USART0\n+\n+/** Bit rate for the debug UART in Hz */\n+#define DEBUGBAUDRATE       (115200)\n+\n+/** Main system clock rate in Hz for this board. Select a clock rate between\n+    1500000Hz and 150000000Hz for the main system (CPU) clock for this board. */\n+#define BOARD_MAINCLOCKRATE     (96000000)\n+\n+/** External clock rate on the CLKIN pin in Hz for this board. If not used,\n+    set this to 0. Otherwise, set it to the exact rate in Hz this pin is\n+    being driven at. */\n+#define BOARD_EXTCLKINRATE      (0)\n+\n+/** Set the BOARD_USECLKINSRC definition to (1) to use the external clock\n+    input pin as the PLL source. The BOARD_ECTCLKINRATE definition must\n+    be setup with the correct rate in the CLKIN pin. Set this to (0) to\n+    use the IRC for the PLL source. */\n+#define BOARD_USECLKINSRC       (0)\n+\n+/**\n+ * @}\n+ */\n+\n+/* Board name */\n+#define BOARD_NXP_LPCXPRESSO_54102\n+\n+/** Board version definition, supports LQFP version of the board */\n+#define BOARD_REV1_LQFP\n+\n+/**\n+ * @}\n+ */\n+\n+#include \"board_api.h\"\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __BOARD_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/board/inc/retarget.h ./board/inc/retarget.h\n--- a_tnusFF/board/inc/retarget.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./board/inc/retarget.h\t2016-10-22 23:17:43.472840275 -0300\n@@ -0,0 +1,251 @@\n+/*\n+ * @brief\tIO redirection support\n+ *\n+ * This file adds re-direction support to the library for various\n+ * projects. It can be configured in one of 3 ways - no redirection,\n+ * redirection via a UART, or redirection via semihosting. If DEBUG\n+ * is not defined, all printf statements will do nothing with the\n+ * output being throw away. If DEBUG is defined, then the choice of\n+ * output is selected by the DEBUG_SEMIHOSTING define. If the\n+ * DEBUG_SEMIHOSTING is not defined, then output is redirected via\n+ * the UART. If DEBUG_SEMIHOSTING is defined, then output will be\n+ * attempted to be redirected via semihosting. If the UART method\n+ * is used, then the Board_UARTPutChar and Board_UARTGetChar\n+ * functions must be defined to be used by this driver and the UART\n+ * must already be initialized to the correct settings.\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"board.h\"\n+\n+/* Keil (Realview) support */\n+#if defined(__CC_ARM)\n+\n+#include <stdio.h>\n+#include <rt_misc.h>\n+\n+#if defined(DEBUG_ENABLE)\n+#if defined(DEBUG_SEMIHOSTING)\n+#define ITM_Port8(n)    (*((volatile unsigned char *) (0xE0000000 + 4 * n)))\n+#define ITM_Port16(n)   (*((volatile unsigned short *) (0xE0000000 + 4 * n)))\n+#define ITM_Port32(n)   (*((volatile unsigned long *) (0xE0000000 + 4 * n)))\n+\n+#define DEMCR           (*((volatile unsigned long *) (0xE000EDFC)))\n+#define TRCENA          0x01000000\n+\n+/* Write to SWO */\n+void _ttywrch(int ch)\n+{\n+\tif (DEMCR & TRCENA) {\n+\t\twhile (ITM_Port32(0) == 0) {}\n+\t\tITM_Port8(0) = ch;\n+\t}\n+}\n+\n+#else\n+static INLINE void BoardOutChar(char ch)\n+{\n+\tBoard_UARTPutChar(ch);\n+}\n+\n+#endif /* defined(DEBUG_SEMIHOSTING) */\n+#endif /* defined(DEBUG_ENABLE) */\n+\n+struct __FILE {\n+\tint handle;\n+};\n+\n+FILE __stdout;\n+FILE __stdin;\n+FILE __stderr;\n+\n+void *_sys_open(const char *name, int openmode)\n+{\n+\treturn 0;\n+}\n+\n+int fputc(int c, FILE *f)\n+{\n+#if defined(DEBUG_ENABLE)\n+#if defined(DEBUG_SEMIHOSTING)\n+\t_ttywrch(c);\n+#else\n+\tBoardOutChar((char) c);\n+#endif\n+#endif\n+\treturn 0;\n+}\n+\n+int fgetc(FILE *f)\n+{\n+#if defined(DEBUG_ENABLE) && !defined(DEBUG_SEMIHOSTING)\n+\treturn Board_UARTGetChar();\n+#else\n+\treturn 0;\n+#endif\n+}\n+\n+int ferror(FILE *f)\n+{\n+\treturn EOF;\n+}\n+\n+void _sys_exit(int return_code)\n+{\n+label:\n+\t__WFI();\n+\tgoto label;\t/* endless loop */\n+}\n+\n+#endif /* defined (__CC_ARM) */\n+\n+/* IAR support */\n+#if defined(__ICCARM__)\n+/*******************\n+ *\n+ * Copyright 1998-2003 IAR Systems.  All rights reserved.\n+ *\n+ * $Revision: 30870 $\n+ *\n+ * This is a template implementation of the \"__write\" function used by\n+ * the standard library.  Replace it with a system-specific\n+ * implementation.\n+ *\n+ * The \"__write\" function should output \"size\" number of bytes from\n+ * \"buffer\" in some application-specific way.  It should return the\n+ * number of characters written, or _LLIO_ERROR on failure.\n+ *\n+ * If \"buffer\" is zero then __write should perform flushing of\n+ * internal buffers, if any.  In this case \"handle\" can be -1 to\n+ * indicate that all handles should be flushed.\n+ *\n+ * The template implementation below assumes that the application\n+ * provides the function \"MyLowLevelPutchar\".  It should return the\n+ * character written, or -1 on failure.\n+ *\n+ ********************/\n+\n+#include <yfuns.h>\n+\n+#if defined(DEBUG_ENABLE) && !defined(DEBUG_SEMIHOSTING)\n+\n+_STD_BEGIN\n+\n+#pragma module_name = \"?__write\"\n+\n+/*\n+   If the __write implementation uses internal buffering, uncomment\n+   the following line to ensure that we are called with \"buffer\" as 0\n+   (i.e. flush) when the application terminates. */\n+size_t __write(int handle, const unsigned char *buffer, size_t size)\n+{\n+#if defined(DEBUG_ENABLE)\n+\tsize_t nChars = 0;\n+\n+\tif (buffer == 0) {\n+\t\t/*\n+\t\t   This means that we should flush internal buffers.  Since we\n+\t\t   don't we just return.  (Remember, \"handle\" == -1 means that all\n+\t\t   handles should be flushed.)\n+\t\t */\n+\t\treturn 0;\n+\t}\n+\n+\t/* This template only writes to \"standard out\" and \"standard err\",\n+\t   for all other file handles it returns failure. */\n+\tif (( handle != _LLIO_STDOUT) && ( handle != _LLIO_STDERR) ) {\n+\t\treturn _LLIO_ERROR;\n+\t}\n+\n+\tfor ( /* Empty */; size != 0; --size) {\n+\t\tBoard_UARTPutChar(*buffer++);\n+\t\t++nChars;\n+\t}\n+\n+\treturn nChars;\n+#else\n+\treturn size;\n+#endif /* defined(DEBUG_ENABLE) */\n+}\n+\n+_STD_END\n+#endif\n+\n+#endif /* defined (__ICCARM__) */\n+\n+#if defined( __GNUC__ )\n+/* Include stdio.h to pull in __REDLIB_INTERFACE_VERSION__ */\n+#include <stdio.h>\n+\n+#if (__REDLIB_INTERFACE_VERSION__ >= 20000)\n+/* We are using new Redlib_v2 semihosting interface */\n+\t#define WRITEFUNC __sys_write\n+\t#define READFUNC __sys_readc\n+#else\n+/* We are using original Redlib semihosting interface */\n+\t#define WRITEFUNC __write\n+\t#define READFUNC __readc\n+#endif\n+\n+#if defined(DEBUG_ENABLE)\n+#if defined(DEBUG_SEMIHOSTING)\n+/* Do nothing, semihosting is enabled by default in LPCXpresso */\n+#endif /* defined(DEBUG_SEMIHOSTING) */\n+#endif /* defined(DEBUG_ENABLE) */\n+\n+#if !defined(DEBUG_SEMIHOSTING)\n+int WRITEFUNC(int iFileHandle, char *pcBuffer, int iLength)\n+{\n+#if defined(DEBUG_ENABLE)\n+\tunsigned int i;\n+\tfor (i = 0; i < iLength; i++) {\n+\t\tBoard_UARTPutChar(pcBuffer[i]);\n+\t}\n+#endif\n+\n+\treturn iLength;\n+}\n+\n+/* Called by bottom level of scanf routine within RedLib C library to read\n+   a character. With the default semihosting stub, this would read the character\n+   from the debugger console window (which acts as stdin). But this version reads\n+   the character from the LPC1768/RDB1768 UART. */\n+int READFUNC(void)\n+{\n+#if defined(DEBUG_ENABLE)\n+\tint c = Board_UARTGetChar();\n+\treturn c;\n+\n+#else\n+\treturn (int) -1;\n+#endif\n+}\n+\n+#endif /* !defined(DEBUG_SEMIHOSTING) */\n+#endif /* defined ( __GNUC__ ) */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/board/Makefile ./board/Makefile\n--- a_tnusFF/board/Makefile\t1969-12-31 21:00:00.000000000 -0300\n+++ ./board/Makefile\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,39 @@\n+# Copyright 2016, Pablo Ridolfi\n+# All rights reserved.\n+#\n+# This file is part of Workspace.\n+#\n+# Redistribution and use in source and binary forms, with or without\n+# modification, are permitted provided that the following conditions are met:\n+#\n+# 1. Redistributions of source code must retain the above copyright notice,\n+#    this list of conditions and the following disclaimer.\n+#\n+# 2. Redistributions in binary form must reproduce the above copyright notice,\n+#    this list of conditions and the following disclaimer in the documentation\n+#    and/or other materials provided with the distribution.\n+#\n+# 3. Neither the name of the copyright holder nor the names of its\n+#    contributors may be used to endorse or promote products derived from this\n+#    software without specific prior written permission.\n+#\n+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+# POSSIBILITY OF SUCH DAMAGE.\n+\n+board_PATH := modules/lpc54102_m4/board\n+\n+board_SRC_FILES := $(wildcard $(board_PATH)/src/*.c) \\\n+                   $(wildcard $(board_PATH)/src/*.S)\n+\n+board_INC_FOLDERS := $(board_PATH)/inc\n+\n+board_SRC_FOLDERS := $(board_PATH)/src\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/board/src/board.c ./board/src/board.c\n--- a_tnusFF/board/src/board.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./board/src/board.c\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,163 @@\n+/*\n+ * @brief LPCXpresso LPC54102 board file\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include <string.h>\n+#include \"board.h\"\n+#include \"retarget.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Be careful that these pins are set to output now once Board_LED_Init() is\n+   called. */\n+static const uint8_t ledBits[] = {29, 30, 31};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Clock rate on the CLKIN pin */\n+const uint32_t ExtClockIn = BOARD_EXTCLKINRATE;\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+#define ABS(x) ((int) (x) < 0 ? -(x) : (x))\n+\n+/* Initialize the LEDs on the NXP LPC54000 LPCXpresso Board */\n+static void Board_LED_Init(void)\n+{\n+\tint i;\n+\n+\t/* Pin muxing setup as part of board_sysinit */\n+\tfor (i = 0; i < sizeof(ledBits); i++) {\n+\t\tChip_GPIO_SetPinDIROutput(LPC_GPIO, 0, ledBits[i]);\n+\t\tChip_GPIO_SetPinState(LPC_GPIO, 0, ledBits[i], true);\n+\t}\n+}\n+\n+/* Board Debug UART Initialisation function */\n+static void Board_UART_Init(void)\n+{\n+#if defined(DEBUG_UART)\n+\tChip_UART_Init(DEBUG_UART);\n+\tChip_UART_ConfigData(DEBUG_UART, UART_CFG_DATALEN_8 | UART_CFG_STOPLEN_1 | UART_CFG_PARITY_NONE);\n+\tChip_UART_Enable(DEBUG_UART);\n+\tChip_UART_TXEnable(DEBUG_UART);\n+\tChip_UART_SetBaud(DEBUG_UART, DEBUGBAUDRATE);\n+#endif\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set the LED to the state of \"On\" */\n+void Board_LED_Set(uint8_t LEDNumber, bool On)\n+{\n+\tif (LEDNumber < sizeof(ledBits)) {\n+\t\tChip_GPIO_SetPinState(LPC_GPIO, 0, ledBits[LEDNumber], (bool) !On);\n+\t}\n+}\n+\n+/* Return the state of LEDNumber */\n+bool Board_LED_Test(uint8_t LEDNumber)\n+{\n+\tif (LEDNumber < sizeof(ledBits)) {\n+\t\treturn (bool) !Chip_GPIO_GetPinState(LPC_GPIO, 0, ledBits[LEDNumber]);\n+\t}\n+\n+\treturn false;\n+}\n+\n+/* Toggles the current state of a board LED */\n+void Board_LED_Toggle(uint8_t LEDNumber)\n+{\n+\tif (LEDNumber < sizeof(ledBits)) {\n+\t\tChip_GPIO_SetPinToggle(LPC_GPIO, 0, ledBits[LEDNumber]);\n+\t}\n+}\n+\n+/* Sends a character on the UART */\n+void Board_UARTPutChar(char ch)\n+{\n+#if defined(DEBUG_UART)\n+\tChip_UART_SendBlocking(DEBUG_UART, &ch, 1);\n+#endif\n+}\n+\n+/* Gets a character from the UART, returns EOF if no character is ready */\n+int Board_UARTGetChar(void)\n+{\n+#if defined(DEBUG_UART)\n+\tuint8_t ch;\n+\tif (Chip_UART_Read(DEBUG_UART, &ch, 1) == 1) {\n+\t\treturn (int) ch;\n+\t}\n+#endif\n+\treturn EOF;\n+}\n+\n+/* Outputs a string on the debug UART */\n+void Board_UARTPutSTR(char *str)\n+{\n+#if defined(DEBUG_UART)\n+\tChip_UART_SendBlocking(DEBUG_UART, str, strlen(str));\n+#endif\n+}\n+\n+/* Initialize debug output via UART for board */\n+void Board_Debug_Init(void)\n+{\n+#if defined(DEBUG_UART)\n+\tBoard_UART_Init();\n+#endif\n+}\n+\n+/* Set up and initialize all required blocks and functions related to the\n+   board hardware */\n+void Board_Init(void)\n+{\n+\t/* INMUX and IOCON are used by many apps, enable both INMUX and IOCON clock bits here. */\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_INPUTMUX);\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_IOCON);\n+\n+\t/* Sets up DEBUG UART */\n+\tDEBUGINIT();\n+\n+\t/* Initialize GPIO */\n+\tChip_GPIO_Init(LPC_GPIO);\n+\n+\t/* Initialize the LEDs. Be careful with below routine, once it's called some of the I/O will be set to output. */\n+\tBoard_LED_Init();\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/board/src/board_sysinit.c ./board/src/board_sysinit.c\n--- a_tnusFF/board/src/board_sysinit.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./board/src/board_sysinit.c\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,216 @@\n+/*\n+ * @brief NXP LPCXpresso 54102 Sysinit file\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+ #include \"board.h\"\n+\n+/* The System initialization code is called prior to the application and\n+   initializes the board for run-time operation. Board initialization\n+   for the NXP LPC54102 board includes default pin muxing and clock setup\n+   configuration. */\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Pin muxing table, only items that need changing from their default pin\n+   state are in this table. Not every pin is mapped. */\n+STATIC const PINMUX_GRP_T pinmuxing[] = {\n+\t/* UART0 */\n+\t{0, 0,  (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* UART0 RX */\n+\t{0, 1,  (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* UART0 TX */\n+\n+\t/* UART1 */\n+\t{0, 5,  (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* UART1 RX */\n+\t{0, 25, (IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* UART1 CTS */\n+\t{1, 10, (IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* UART1 TX */\n+\t{1, 11, (IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* UART1 RTS */\n+\n+\t/* UART3 */\n+\t{1, 12, (IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* UART3 TX */\n+\t{1, 13, (IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* UART3 RX */\n+\n+\t/* SPI0 (bridge) */\n+\t{0, 12, (IOCON_FUNC1 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* BRIDGE_MOSI (SPI MOSI) */\n+\t{0, 13, (IOCON_FUNC1 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* BRIDGE_MISO (MISO) */\n+\t/* 0, 14 BRIDGE_SSEL is configured in ConfigureBridgeSSEL() */\n+\t{1, 3,  (IOCON_FUNC5 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* BRIDGE_SCK (SCK) */\n+\t{0, 19, (IOCON_FUNC0 | IOCON_MODE_PULLUP | IOCON_DIGITAL_EN)},\t/* BRIDGE_INTR (GPIO) */\n+\t{0, 20, (IOCON_FUNC0 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* BRIDGE_GPIO (GPIO) */\n+\n+\t/* SPI1 (master) */\n+\t{1, 6,  (IOCON_FUNC2 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* SPI1_SCK */\n+\t{1, 7,  (IOCON_FUNC2 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* SPI1_MOSI */\n+\t{1, 14, (IOCON_FUNC4 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* SPI1_MISO */\n+\t{1, 15, (IOCON_FUNC4 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* SPI1_SSEL0 */\n+\n+\t/* I2C0 standard/fast (master) */\n+\t{0, 23, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_STDI2C_EN)},\t/* I2C0_SCL (SCL) */\n+\t{0, 24, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_STDI2C_EN)},\t/* I2C0_SDA-WAKEUP (SDA) */\n+\n+\t/* I2C1 standard/fast (bridge) */\n+\t{0, 27, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_STDI2C_EN)},\t/* BRIDGE_SCL (SCL) */\n+\t{0, 28, (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN | IOCON_STDI2C_EN)},\t/* BRIDGE_SDA (SDA) */\n+\n+\t/* ADC inputs */\n+\t{1, 0,  (IOCON_FUNC0 | IOCON_MODE_INACT)},\t/* ADC3 */\n+\t{1, 1,  (IOCON_FUNC0 | IOCON_MODE_INACT)},\t/* ADC4 */\n+\t{1, 2,  (IOCON_FUNC0 | IOCON_MODE_INACT)},\t/* ADC5 */\n+\t{1, 4,  (IOCON_FUNC0 | IOCON_MODE_INACT)},\t/* ADC7 */\n+\t{1, 5,  (IOCON_FUNC0 | IOCON_MODE_INACT)},\t/* ADC8 */\n+\t{1, 8,  (IOCON_FUNC0 | IOCON_MODE_INACT)},\t/* ADC11 */\n+\n+\t/* Misc */\n+\t{0, 2,  (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* ARDUINO_INT */\n+\t{0, 3,  (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* CT32B1_MAT3 */\n+\t{0, 6,  (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* CT32B0_MAT1 */\n+\t{0, 7,  (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* CT32B0_MAT2 */\n+\t{0, 8,  (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* CT32B0_MAT3 */\n+\t{0, 9,  (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* DMIC_DATA */\n+\t{0, 10, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* BTLE_CONN */\n+\t{0, 11, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* DMIC_CLKIN */\n+\t{0, 21, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* CLKOUT-CT32B3_MAT0 */\n+\t{0, 26, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* I2C1_SDA-CT32B0_CAP3 */\n+\t{1, 9,  (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* BTLE_CMD_DAT */\n+\t{1, 16, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* CT32B0_MAT0 */\n+\t{1, 17, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* IR_LEARN_EN */\n+\n+\t/* Debugger signals */\n+\t{0, 15, (IOCON_FUNC2 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* SWO */\n+#if 0\n+\t/* Not setup by SystemInit(), since default state after reset is already correct */\n+\t{0, 16, (IOCON_FUNC5 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* SWCLK_TCK */\n+\t{0, 17, (IOCON_FUNC5 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* SWDIO */\n+#endif\n+\n+\t/* Sensor related */\n+\t{0, 4,  (IOCON_FUNC0 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* GYR_INT1 (GPIO input) */\n+\t{0, 18, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)},\t/* CT32B0_MAT0-ACCL_INT1 */\n+\t{0, 22, (IOCON_FUNC0 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN)},/* MAG_DRDY_INT (GPIO input) */\n+\n+\t/* LEDs on P0.29, P0.30, and P0.31 are set as part of Board_LED_Init(), left in GPIO state */\n+};\n+\n+#ifndef BOARD_USECLKINSRC\n+#define BOARD_USECLKINSRC   (0)\n+#endif\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+#define BRIDGE_SSEL_PORT 0\n+#define BRIDGE_SSEL_PIN 14\n+static void ConfigureBridgeSSEL(void)\n+{\n+\tPINMUX_GRP_T pinMuxBridgeSSEL[] = {\n+\t\t{BRIDGE_SSEL_PORT, BRIDGE_SSEL_PIN, (IOCON_FUNC0 | IOCON_MODE_INACT | IOCON_DIGITAL_EN)}\n+\t};\n+\t/* Default bits to Link processor powered down. */\n+\tuint32_t functionBits = (IOCON_FUNC1 | IOCON_MODE_PULLDOWN | IOCON_DIGITAL_EN);\n+\n+\t/* Set the bridge SSEL pin to GPIO pull down so we can read the state */\n+\tChip_IOCON_SetPinMuxing(LPC_IOCON, pinMuxBridgeSSEL, sizeof(pinMuxBridgeSSEL) / sizeof(PINMUX_GRP_T));\n+\n+\t/* Drive the bridge SSEL pin low and then read it back */\n+\tChip_GPIO_SetPinDIROutput(LPC_GPIO, BRIDGE_SSEL_PORT, BRIDGE_SSEL_PIN);\n+\tChip_GPIO_SetPinState(LPC_GPIO, BRIDGE_SSEL_PORT, BRIDGE_SSEL_PIN, false);\n+\n+\t/* Set direction back to input and if the pin reads high, we know the link processor is powered */\n+\tChip_GPIO_SetPinDIRInput(LPC_GPIO, BRIDGE_SSEL_PORT, BRIDGE_SSEL_PIN);\n+\tif (Chip_GPIO_GetPinState(LPC_GPIO, BRIDGE_SSEL_PORT, BRIDGE_SSEL_PIN)) {\n+\n+\t\t/* Set function bits when Link processor present */\n+\t\tfunctionBits = (IOCON_FUNC1 | IOCON_MODE_INACT | IOCON_DIGITAL_EN);\n+\t}\n+\n+\tpinMuxBridgeSSEL[0].modefunc = functionBits;\n+\tChip_IOCON_SetPinMuxing(LPC_IOCON, pinMuxBridgeSSEL, sizeof(pinMuxBridgeSSEL) / sizeof(PINMUX_GRP_T));\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Sets up system pin muxing */\n+void Board_SetupMuxing(void)\n+{\n+\t/* Enable IOCON clock */\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_IOCON);\n+\n+\tChip_IOCON_SetPinMuxing(LPC_IOCON, pinmuxing, sizeof(pinmuxing) / sizeof(PINMUX_GRP_T));\n+\n+\t/* Bridge SSEL requires detection to set state correctly */\n+\tConfigureBridgeSSEL();\n+\n+\t/* IOCON clock left on, this is needed if CLKIN is used. */\n+}\n+\n+/* Set up and initialize clocking prior to call to main */\n+void Board_SetupClocking(void)\n+{\n+\tuint32_t freq = BOARD_MAINCLOCKRATE;\n+\n+\t/* The IRC is always the first clock source even if CLK_IN is used later.\n+\t   Once CLK_IN is selected as the clock source. We can turned off the IRC later.\n+\t   Turn on the IRC by clearing the power down bit */\n+\tChip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_IRC_OSC | SYSCON_PDRUNCFG_PD_IRC);\n+\n+#if BOARD_USECLKINSRC == (0)\n+\n+\t/* Check if the Chip can support higher frequency */\n+#if (BOARD_MAINCLOCKRATE > 96000000)\n+\tif (LPC_SYSCON->DEVICE_ID1 < V4_UID) {\n+\t\t/* Older version of chips does not support > 96MHz (see errata) */\n+\t\tfreq = 96000000;\n+\t}\n+#endif\n+\t/* Setup PLL based on (internal) IRC clocking */\n+\tChip_SetupIrcClocking(freq);\n+\n+#else\n+\t/* Setup PLL based on (external) CLKIN clocking */\n+\tChip_SetupExtInClocking(freq);\n+#endif\n+\n+\t/* Select the CLKOUT clocking source */\n+\tChip_Clock_SetCLKOUTSource(SYSCON_CLKOUTSRC_MAINCLK, 1);\n+}\n+\n+/* Set up and initialize hardware prior to call to main */\n+void Board_SystemInit(void)\n+{\n+\t/* Setup system clocking and muxing */\n+\tBoard_SetupMuxing();\n+\tBoard_SetupClocking();\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/adc_5410x.h ./chip/inc/adc_5410x.h\n--- a_tnusFF/chip/inc/adc_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/adc_5410x.h\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,637 @@\n+/*\n+ * @brief LPC5410X ADC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ADC_5410X_H_\n+#define __ADC_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ADC_5410X CHIP:  LPC5410X A/D conversion driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/** Sequence index enumerations, used in various parts of the code for\n+    register indexing and sequencer selection */\n+typedef enum {\n+\tADC_SEQA_IDX = 0,\n+\tADC_SEQB_IDX\n+} ADC_SEQ_IDX_T;\n+\n+/**\n+ * @brief ADC register block structure\n+ */\n+typedef struct {\t/*!< ADCn Structure */\n+\t__IO uint32_t CTRL;\n+\t__O uint32_t RESERVED0;\n+\t__IO uint32_t SEQ_CTRL[2];\n+\t__IO uint32_t SEQ_GDAT[2];\n+\t__IO uint32_t RESERVED1[2];\n+\t__IO uint32_t DAT[12];\n+\t__IO uint32_t THR_LOW[2];\n+\t__IO uint32_t THR_HIGH[2];\n+\t__IO uint32_t CHAN_THRSEL;\n+\t__IO uint32_t INTEN;\n+\t__IO uint32_t FLAGS;\n+\t__IO uint32_t STARTUP;\n+\t__IO uint32_t CALIBR;\n+} LPC_ADC_T;\n+\n+/** Maximum sample rate in Hz (12-bit conversions) */\n+#define ADC_MAX_SAMPLE_RATE 48000000\n+#define ADC_MAX_CHANNEL_NUM 12\n+\n+/**\n+ * @brief ADC register support bitfields and mask\n+ */\n+/** ADC Control register bit fields */\n+#define ADC_CR_CLKDIV_MASK      (0xFF << 0)\t\t\t\t/*!< Mask for Clock divider value */\n+#define ADC_CR_CLKDIV_BITPOS    (0)\t\t\t\t\t\t/*!< Bit position for Clock divider value */\n+#define ADC_CR_ASYNC_MODE       (1 << 8)\t\t\t\t/*!< Asynchronous mode enable bit */\n+#define ADC_CR_RESOL(n)         ((n) << 9)\t\t\t\t/*!< 2-bits, 6(0x0),8(0x1),10(0x2),12(0x3)-bit mode enable bit */\n+#define ADC_CR_LPWRMODEBIT      (1 << 10)\t\t\t\t/*!< Low power mode enable bit */\n+#define ADC_CR_BYPASS           (1 << 11)\t\t\t\t/*!< Bypass mode */\n+#define ADC_CR_TSAMP(n)         ((n) << 12)\t\t\t\t/*!< 3-bits, 2.5(0x0),3.5(0x1),4.5(0x2),5.5(0x3),6.5(0x4),7.5(0x5),8.5(0x6),9.5(0x7) ADC clocks sampling time */\n+#define ADC_CR_CALMODEBIT       (1 << 30)\t\t\t\t/*!< Self calibration cycle enable bit */\n+#define ADC_CR_BITACC(n)        ((((n) & 0x1) << 9))\t/*!< 12-bit or 10-bit ADC accuracy */\n+#define ADC_CR_CLKDIV(n)        ((((n) & 0xFF) << 0))\t/*!< The APB clock (PCLK) is divided by (this value plus one) to produce the clock for the A/D */\n+#define ADC_SAMPLE_RATE_CONFIG_MASK (ADC_CR_CLKDIV(0xFF) | ADC_CR_BITACC(0x01))\n+\n+/** ADC Sequence Control register bit fields */\n+#define ADC_SEQ_CTRL_CHANSEL(n)             (1 << (n))\t\t/*!< Channel select macro */\n+#define ADC_SEQ_CTRL_CHANSEL_BITPOS(n)      ((n) << 0)\t\t\t\t/*!< Channel select macro */\n+#define ADC_SEQ_CTRL_CHANSEL_MASK           (0xFFF)\t\t\t\t/*!< Channel select mask */\n+\n+/**\n+ * @brief ADC sampling time bits 12, 13 and 14\n+ */\n+typedef enum _ADC_TSAMP_T {\n+\tADC_TSAMP_2CLK5 = 0,\n+\tADC_TSAMP_3CLK5,\n+\tADC_TSAMP_4CLK5,\n+\tADC_TSAMP_5CLK5,\n+\tADC_TSAMP_6CLK5,\n+\tADC_TSAMP_7CLK5,\n+\tADC_TSAMP_8CLK5,\n+\tADC_TSAMP_9CLK5,\n+} ADC_TSAMP_T;\n+\n+/** SEQ_CTRL register bit fields */\n+// #define ADC_SEQ_CTRL_TRIGGER(n)          ((n)<<12)\n+#define ADC_SEQ_CTRL_HWTRIG_POLPOS       (1 << 18)\t\t/*!< HW trigger polarity - positive edge */\n+#define ADC_SEQ_CTRL_HWTRIG_SYNCBYPASS   (1 << 19)\t\t/*!< HW trigger bypass synchronisation */\n+#define ADC_SEQ_CTRL_START               (1 << 26)\t\t/*!< Start conversion enable bit */\n+#define ADC_SEQ_CTRL_BURST               (1 << 27)\t\t/*!< Repeated conversion enable bit */\n+#define ADC_SEQ_CTRL_SINGLESTEP          (1 << 28)\t\t/*!< Single step enable bit */\n+#define ADC_SEQ_CTRL_LOWPRIO             (1 << 29)\t\t/*!< High priority enable bit (regardless of name) */\n+#define ADC_SEQ_CTRL_MODE_EOS            (1 << 30)\t\t/*!< Mode End of sequence enable bit */\n+#define ADC_SEQ_CTRL_SEQ_ENA             (1UL << 31)\t/*!< Sequence enable bit */\n+\n+/** ADC global data register bit fields */\n+#define ADC_SEQ_GDAT_RESULT_MASK         (0xFFF << 4)\t/*!< Result value mask */\n+#define ADC_SEQ_GDAT_RESULT_BITPOS       (4)\t\t\t/*!< Result start bit position */\n+#define ADC_SEQ_GDAT_THCMPRANGE_MASK     (0x3 << 16)\t/*!< Comparion range mask */\n+#define ADC_SEQ_GDAT_THCMPRANGE_BITPOS   (16)\t\t\t/*!< Comparison range bit position */\n+#define ADC_SEQ_GDAT_THCMPCROSS_MASK     (0x3 << 18)\t/*!< Comparion cross mask */\n+#define ADC_SEQ_GDAT_THCMPCROSS_BITPOS   (18)\t\t\t/*!< Comparison cross bit position */\n+#define ADC_SEQ_GDAT_CHAN_MASK           (0xF << 26)\t/*!< Channel number mask */\n+#define ADC_SEQ_GDAT_CHAN_BITPOS         (26)\t\t\t/*!< Channel number bit position */\n+#define ADC_SEQ_GDAT_OVERRUN             (1 << 30)\t\t/*!< Overrun bit */\n+#define ADC_SEQ_GDAT_DATAVALID           (1UL << 31)\t/*!< Data valid bit */\n+\n+/** ADC Data register bit fields */\n+#define ADC_DR_RESULT_BITPOS       (4)\t\t\t/*!< Result start bit position */\n+#define ADC_DR_RESULT(n)           ((((n) >> 4) & 0xFFF))\t/*!< Macro for getting the ADC data value */\n+#define ADC_DR_THCMPRANGE_MASK     (0x3 << 16)\t\t\t/*!< Comparion range mask */\n+#define ADC_DR_THCMPRANGE_BITPOS   (16)\t\t\t\t\t/*!< Comparison range bit position */\n+#define ADC_DR_THCMPRANGE(n)       (((n) >> ADC_DR_THCMPRANGE_BITPOS) & 0x3)\n+#define ADC_DR_THCMPCROSS_MASK     (0x3 << 18)\t\t\t/*!< Comparion cross mask */\n+#define ADC_DR_THCMPCROSS_BITPOS   (18)\t\t\t\t\t/*!< Comparison cross bit position */\n+#define ADC_DR_THCMPCROSS(n)       (((n) >> ADC_DR_THCMPCROSS_BITPOS) & 0x3)\n+#define ADC_DR_CHAN_MASK           (0xF << 26)\t\t\t/*!< Channel number mask */\n+#define ADC_DR_CHAN_BITPOS         (26)\t\t\t\t\t/*!< Channel number bit position */\n+#define ADC_DR_CHANNEL(n)          (((n) >> ADC_DR_CHAN_BITPOS) & 0xF)\t/*!< Channel number bit position */\n+#define ADC_DR_OVERRUN             (1 << 30)\t\t\t/*!< Overrun bit */\n+#define ADC_DR_DATAVALID           (1UL << 31)\t\t\t/*!< Data valid bit */\n+#define ADC_DR_DONE(n)             (((n) >> 31))\n+\n+/** ADC low/high Threshold register bit fields */\n+#define ADC_THR_VAL_MASK            (0xFFF << 4)\t\t/*!< Threshold value bit mask */\n+#define ADC_THR_VAL_POS             (4)\t\t\t\t\t/*!< Threshold value bit position */\n+\n+/** ADC Threshold select register bit fields */\n+#define ADC_THRSEL_CHAN_SEL_THR1(n) (1 << (n))\t\t\t/*!< Select THR1 register for channel n */\n+\n+/** ADC Interrupt Enable register bit fields */\n+#define ADC_INTEN_SEQA_ENABLE       (1 << 0)\t\t\t/*!< Sequence A Interrupt enable bit */\n+#define ADC_INTEN_SEQB_ENABLE       (1 << 1)\t\t\t/*!< Sequence B Interrupt enable bit */\n+#define ADC_INTEN_SEQN_ENABLE(seq)  (1 << (seq))\t\t/*!< Sequence A/B Interrupt enable bit */\n+#define ADC_INTEN_OVRRUN_ENABLE     (1 << 2)\t\t\t/*!< Overrun Interrupt enable bit */\n+#define ADC_INTEN_CMP_DISBALE       (0)\t\t\t\t\t/*!< Disable comparison interrupt value */\n+#define ADC_INTEN_CMP_OUTSIDETH     (1)\t\t\t\t\t/*!< Outside threshold interrupt value */\n+#define ADC_INTEN_CMP_CROSSTH       (2)\t\t\t\t\t/*!< Crossing threshold interrupt value */\n+#define ADC_INTEN_CMP_MASK          (3)\t\t\t\t\t/*!< Comparison interrupt value mask */\n+#define ADC_INTEN_CMP_ENABLE(isel, ch) (((isel) & ADC_INTEN_CMP_MASK) << ((2 * (ch)) + 3))\t/*!< Interrupt selection for channel */\n+\n+/** ADC Flags register bit fields */\n+#define ADC_FLAGS_THCMP_MASK(ch)    (1 << (ch))\t\t/*!< Threshold comparison status for channel */\n+#define ADC_FLAGS_OVRRUN_MASK(ch)   (1 << (12 + (ch)))\t/*!< Overrun status for channel */\n+#define ADC_FLAGS_SEQA_OVRRUN_MASK  (1 << 24)\t\t\t/*!< Seq A Overrun status */\n+#define ADC_FLAGS_SEQB_OVRRUN_MASK  (1 << 25)\t\t\t/*!< Seq B Overrun status */\n+#define ADC_FLAGS_SEQN_OVRRUN_MASK(seq) (1 << (24 + (seq)))\t/*!< Seq A/B Overrun status */\n+#define ADC_FLAGS_SEQA_INT_MASK     (1 << 28)\t\t\t/*!< Seq A Interrupt status */\n+#define ADC_FLAGS_SEQB_INT_MASK     (1 << 29)\t\t\t/*!< Seq B Interrupt status */\n+#define ADC_FLAGS_SEQN_INT_MASK(seq) (1 << (28 + (seq)))/*!< Seq A/B Interrupt status */\n+#define ADC_FLAGS_THCMP_INT_MASK    (1 << 30)\t\t\t/*!< Threshold comparison Interrupt status */\n+#define ADC_FLAGS_OVRRUN_INT_MASK   (1UL << 31)\t\t\t/*!< Overrun Interrupt status */\n+\n+/** ADC Startup register bit fields */\n+#define ADC_STARTUP_ENABLE       (0x1 << 0)\n+#define ADC_STARTUP_INIT         (0x1 << 1)\n+\n+/* ADC Calibration register definition */\n+#define ADC_CALIB                       (0x1 << 0)\n+#define ADC_CALREQD                     (0x1 << 1)\n+\n+/**\n+ * @brief\tSet Interrupt bits (safe)\n+ * @param\tpADC\t: Pointer to ADC peripheral\n+ * @param\tintMask\t: Mask of bits to be set\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_ADC_SetIntBits(LPC_ADC_T *pADC, uint32_t intMask)\n+{\n+\t/* Read and write values may not be the same, write 0 to undefined bits */\n+\tpADC->INTEN = (pADC->INTEN | intMask) & 0x07FFFFFF;\n+}\n+\n+/**\n+ * @brief\tClear Interrupt bits (safe)\n+ * @param\tpADC\t: Pointer to ADC peripheral\n+ * @param\tintMask\t: Mask of bits to be cleared\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_ADC_ClearIntBits(LPC_ADC_T *pADC, uint32_t intMask)\n+{\n+\t/* Read and write values may not be the same, write 0 to undefined bits */\n+\tpADC->INTEN = pADC->INTEN & (0x07FFFFFF & ~intMask);\n+}\n+\n+/**\n+ * @brief\tSet Threshold select bits (safe)\n+ * @param\tpADC\t: Pointer to ADC peripheral\n+ * @param\tmask\t: Mask of bits to be set\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_ADC_SetTHRSELBits(LPC_ADC_T *pADC, uint32_t mask)\n+{\n+\t/* Read and write values may not be the same, write 0 to undefined bits */\n+\tpADC->CHAN_THRSEL = (pADC->CHAN_THRSEL | mask) & 0x00000FFF;\n+}\n+\n+/**\n+ * @brief\tClear Threshold select bits (safe)\n+ * @param\tpADC\t: Pointer to ADC peripheral\n+ * @param\tmask\t: Mask of bits to be cleared\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_ADC_ClearTHRSELBits(LPC_ADC_T *pADC, uint32_t mask)\n+{\n+\t/* Read and write values may not be the same, write 0 to undefined bits */\n+\tpADC->CHAN_THRSEL = pADC->CHAN_THRSEL & (0x00000FFF & ~mask);\n+}\n+\n+/**\n+ * @brief\tInitialize the ADC peripheral\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param\tflags\t: ADC flags for init (ADC_CR_MODE10BIT and/or ADC_CR_LPWRMODEBIT)\n+ * @return\tNothing\n+ * @note\tTo select low-power ADC mode, enable the ADC_CR_LPWRMODEBIT flag.\n+ * To select 10-bit conversion mode, enable the ADC_CR_MODE10BIT flag.<br>\n+ * Example: Chip_ADC_Init(LPC_ADC, (ADC_CR_MODE10BIT | ADC_CR_LPWRMODEBIT));\n+ */\n+void Chip_ADC_Init(LPC_ADC_T *pADC, uint32_t flags);\n+\n+/**\n+ * @brief\tShutdown ADC\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @return\tNothing\n+ * @note\tDisables the ADC clocks and ADC power\n+ */\n+void Chip_ADC_DeInit(LPC_ADC_T *pADC);\n+\n+/**\n+ * @brief\tSet ADC divider\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param\tdiv\t\t: ADC divider value to set minus 1\n+ * @return\tNothing\n+ * @note\tThe value is used as a divider to generate the ADC\n+ * clock rate from the ADC input clock. The ADC input clock is based\n+ * on the system clock. Valid values for this function are from 0 to 255\n+ * with 0=divide by 1, 1=divide by 2, 2=divide by 3, etc.<br>\n+ * Do not decrement this value by 1.<br>\n+ * To set the ADC clock rate to 1MHz, use the following function:<br>\n+ * Chip_ADC_SetDivider(LPC_ADC, (Chip_Clock_GetSystemClockRate() / 1000000) - 1);\n+ */\n+__STATIC_INLINE void Chip_ADC_SetDivider(LPC_ADC_T *pADC, uint8_t div)\n+{\n+\tuint32_t temp;\n+\n+\ttemp = pADC->CTRL & ~(ADC_CR_CLKDIV_MASK);\n+\tpADC->CTRL = temp | (uint32_t) div;\n+}\n+\n+/**\n+ * @brief\tSet ADC clock rate\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param\trate\t: rate in Hz to set ADC clock to (maximum ADC_MAX_SAMPLE_RATE)\n+ * @return\tNothing\n+ */\n+void Chip_ADC_SetClockRate(LPC_ADC_T *pADC, uint32_t rate);\n+\n+/**\n+ * @brief\tGet ADC divider\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @return\tthe current ADC divider\n+ * @note\tThis function returns the divider that is used to generate the\n+ * ADC frequency. The returned value must be incremented by 1. The\n+ * frequency can be determined with the following function:<br>\n+ * adc_freq = Chip_Clock_GetSystemClockRate() / (Chip_ADC_GetDivider(LPC_ADC) + 1);\n+ */\n+__STATIC_INLINE uint8_t Chip_ADC_GetDivider(LPC_ADC_T *pADC)\n+{\n+\treturn pADC->CTRL & ADC_CR_CLKDIV_MASK;\n+}\n+\n+/**\n+ * @brief\tCalibrate ADC upon startup or wakeup after powerdown\n+ * @pre\t\tADC must be Initialized and Configured\n+ * @param\tpADC\t\t: Pointer to ADC peripheral\n+ * @return\tResult of calibrarion operation\n+ * @retval\tLPC_OK\t\t\t\tCalibration is successful\n+ * @retval\tERR_ADC_NO_POWER\tUnable to powerup ADC\n+ * @retval\tERR_TIME_OUT\t\tCalibration operation timed-out\n+ */\n+uint32_t Chip_ADC_Calibration(LPC_ADC_T *pADC);\n+\n+/**\n+ * @brief\tHelper function for safely setting ADC sequencer register bits\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to set bits for\n+ * @param\tbits\t\t: Or'ed bits of a sequencer register to set\n+ * @return\tNothing\n+ * @note\tThis function will safely set the ADC sequencer register bits\n+ * while maintaining bits 20..25 as 0, regardless of the read state of those bits.\n+ */\n+__STATIC_INLINE void Chip_ADC_SetSequencerBits(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex, uint32_t bits)\n+{\n+\t/* OR in passed bits */\n+\tpADC->SEQ_CTRL[seqIndex] = (pADC->SEQ_CTRL[seqIndex] & ~(0x3F << 20)) | bits;\n+}\n+\n+/**\n+ * @brief\tHelper function for safely clearing ADC sequencer register bits\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to clear bits for\n+ * @param\tbits\t\t: Or'ed bits of a sequencer register to clear\n+ * @return\tNothing\n+ * @note\tThis function will safely clear the ADC sequencer register bits\n+ * while maintaining bits 20..25 as 0, regardless of the read state of those bits.\n+ */\n+__STATIC_INLINE void Chip_ADC_ClearSequencerBits(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex, uint32_t bits)\n+{\n+\t/* Read sequencer register and mask off bits 20..25 */\n+\tpADC->SEQ_CTRL[seqIndex] = pADC->SEQ_CTRL[seqIndex] & ~((0x3F << 20) | bits);\n+}\n+\n+/**\n+ * @brief\tSets up ADC conversion sequencer A or B\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to setup\n+ * @param\toptions\t\t: OR'ed Sequencer options to setup (see notes)\n+ * @return\tNothing\n+ * @note\tSets up sequencer options for a conversion sequence. This function\n+ * should be used to setup the selected channels for the sequence, the sequencer\n+ * trigger, the trigger polarity, synchronization bypass, priority, and mode. All\n+ * options are passed to the functions as a OR'ed list of values. This function will\n+ * disable/clear the sequencer start/burst/single step/enable if they are enabled.<br>\n+ * Select the channels by OR'ing in one or more ADC_SEQ_CTRL_CHANSEL(ch) values.<br>\n+ * Select the hardware trigger by OR'ing in one ADC_SEQ_CTRL_HWTRIG_* value.<br>\n+ * Select a positive edge hardware trigger by OR'ing in ADC_SEQ_CTRL_HWTRIG_POLPOS.<br>\n+ * Select trigger bypass synchronisation by OR'ing in ADC_SEQ_CTRL_HWTRIG_SYNCBYPASS.<br>\n+ * Select ADC single step on trigger/start by OR'ing in ADC_SEQ_CTRL_SINGLESTEP.<br>\n+ * Select higher priority conversion on the other sequencer by OR'ing in ADC_SEQ_CTRL_LOWPRIO.<br>\n+ * Select end of seqeuence instead of end of conversion interrupt by OR'ing in ADC_SEQ_CTRL_MODE_EOS.<br>\n+ * Example for setting up sequencer A (channels 0-2, trigger on high edge of PIO0_2, interrupt on end of sequence):<br>\n+ * Chip_ADC_SetupSequencer(LPC_ADC, ADC_SEQA_IDX, (\n+ *     ADC_SEQ_CTRL_CHANSEL(0) | ADC_SEQ_CTRL_CHANSEL(1) | ADC_SEQ_CTRL_CHANSEL(2) |\n+ *     ADC_SEQ_CTRL_HWTRIG_PIO0_2 | ADC_SEQ_CTRL_HWTRIG_POLPOS | ADC_SEQ_CTRL_MODE_EOS));\n+ */\n+__STATIC_INLINE void Chip_ADC_SetupSequencer(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex, uint32_t options)\n+{\n+\tpADC->SEQ_CTRL[seqIndex] = options;\n+}\n+\n+/**\n+ * @brief\tGet sequenceX control register value\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to setup\n+ * @return\tSequencer control register value\n+ */\n+__STATIC_INLINE uint32_t Chip_ADC_GetSequencerCtrl(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex)\n+{\n+\treturn pADC->SEQ_CTRL[seqIndex];\n+}\n+\n+/**\n+ * @brief\tEnables a sequencer\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to enable\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_ADC_EnableSequencer(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex)\n+{\n+\tChip_ADC_SetSequencerBits(pADC, seqIndex, ADC_SEQ_CTRL_SEQ_ENA);\n+}\n+\n+/**\n+ * @brief\tDisables a sequencer\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to disable\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_ADC_DisableSequencer(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex)\n+{\n+\tChip_ADC_ClearSequencerBits(pADC, seqIndex, ADC_SEQ_CTRL_SEQ_ENA);\n+}\n+\n+/**\n+ * @brief\tForces a sequencer trigger event (software trigger of ADC)\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to start\n+ * @return\tNothing\n+ * @note\tThis function sets the START bit for the sequencer to force a\n+ * single conversion sequence or a single step conversion. START and BURST bits can not\n+ * be set at the same time, thus, BURST bit will be cleared.\n+ */\n+__STATIC_INLINE void Chip_ADC_StartSequencer(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex)\n+{\n+\tChip_ADC_ClearSequencerBits(pADC, seqIndex, ADC_SEQ_CTRL_BURST);\n+\tChip_ADC_SetSequencerBits(pADC, seqIndex, ADC_SEQ_CTRL_START);\n+}\n+\n+/**\n+ * @brief\tStarts sequencer burst mode\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to start burst on\n+ * @return\tNothing\n+ * @note\tThis function sets the BURST bit for the sequencer to force\n+ * continuous conversion. Use Chip_ADC_StopBurstSequencer() to stop the\n+ * ADC burst sequence. START and BURST bits can not be set at the same time, thus,\n+ * START bit will be cleared.\n+ */\n+__STATIC_INLINE void Chip_ADC_StartBurstSequencer(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex)\n+{\n+\t/* START and BURST bits can not be set at the same time. */\n+\tChip_ADC_ClearSequencerBits(pADC, seqIndex, ADC_SEQ_CTRL_START);\n+\tChip_ADC_SetSequencerBits(pADC, seqIndex, ADC_SEQ_CTRL_BURST);\n+}\n+\n+/**\n+ * @brief\tStops sequencer burst mode\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to stop burst on\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_ADC_StopBurstSequencer(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex)\n+{\n+\tChip_ADC_ClearSequencerBits(pADC, seqIndex, ADC_SEQ_CTRL_BURST);\n+}\n+\n+/** ADC sequence global data register threshold comparison range enumerations */\n+typedef enum {\n+\tADC_DR_THCMPRANGE_INRANGE,\n+\tADC_DR_THCMPRANGE_RESERVED,\n+\tADC_DR_THCMPRANGE_BELOW,\n+\tADC_DR_THCMPRANGE_ABOVE\n+} ADC_DR_THCMPRANGE_T;\n+\n+/** ADC sequence global data register threshold comparison cross enumerations */\n+typedef enum {\n+\tADC_DR_THCMPCROSS_NOCROSS,\n+\tADC_DR_THCMPCROSS_RESERVED,\n+\tADC_DR_THCMPCROSS_DOWNWARD,\n+\tADC_DR_THCMPCROSS_UPWARD\n+} ADC_DR_THCMPCROSS_T;\n+\n+/**\n+ * @brief\tRead a ADC sequence global data register\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param\tseqIndex\t: Sequencer to read\n+ * @return\tCurrent raw value of the ADC sequence A or B global data register\n+ * @note\tThis function returns the raw value of the data register and clears\n+ * the overrun and datavalid status for the register. Once this register is read,\n+ * the following functions can be used to parse the raw value:<br>\n+ * uint32_t adcDataRawValue = Chip_ADC_GetGlobalDataReg(LPC_ADC, ADC_SEQA_IDX); // Get raw value\n+ * uint32_t adcDataValue = ADC_DR_RESULT(adcDataRawValue); // Aligned and masked ADC data value\n+ * ADC_DR_THCMPRANGE_T adcRange = (ADC_DR_THCMPRANGE_T) ADC_DR_THCMPRANGE(adcDataRawValue); // Sample range compared to threshold low/high\n+ * ADC_DR_THCMPCROSS_T adcRange = (ADC_DR_THCMPCROSS_T) ADC_DR_THCMPCROSS(adcDataRawValue); // Sample cross compared to threshold low\n+ * uint32_t channel = ADC_DR_CHANNEL(adcDataRawValue); // ADC channel for this sample/data\n+ * bool adcDataOverrun = (bool) ((adcDataRawValue & ADC_DR_OVERRUN) != 0); // Data overrun flag\n+ * bool adcDataValid = (bool) ((adcDataRawValue & ADC_SEQ_GDAT_DATAVALID) != 0); // Data valid flag\n+ */\n+__STATIC_INLINE uint32_t Chip_ADC_GetGlobalDataReg(LPC_ADC_T *pADC, ADC_SEQ_IDX_T seqIndex)\n+{\n+\treturn pADC->SEQ_GDAT[seqIndex];\n+}\n+\n+/**\n+ * @brief\tRead a ADC data register\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param\tindex\t: Data register to read, 0-11\n+ * @return\tCurrent raw value of the ADC data register\n+ * @note\tThis function returns the raw value of the data register and clears\n+ * the overrun and datavalid status for the register. Once this register is read,\n+ * the following functions can be used to parse the raw value:<br>\n+ * uint32_t adcDataRawValue = Chip_ADC_GetDataReg(LPC_ADC, ADC_MAX_CHANNEL_NUM); // Get raw value\n+ * uint32_t adcDataValue = ADC_DR_RESULT(adcDataRawValue); // Aligned and masked ADC data value\n+ * ADC_DR_THCMPRANGE_T adcRange = (ADC_DR_THCMPRANGE_T) ADC_DR_THCMPRANGE(adcDataRawValue); // Sample range compared to threshold low/high\n+ * ADC_DR_THCMPCROSS_T adcRange = (ADC_DR_THCMPCROSS_T) ADC_DR_THCMPCROSS(adcDataRawValue); // Sample cross compared to threshold low\n+ * uint32_t channel = ADC_DR_CHANNEL(adcDataRawValue); // ADC channel for this sample/data\n+ * bool adcDataOverrun = (bool) ((adcDataRawValue & ADC_DR_OVERRUN) != 0); // Data overrun flag\n+ * bool adcDataValid = (bool) ((adcDataRawValue & ADC_SEQ_GDAT_DATAVALID) != 0); // Data valid flag\n+ */\n+__STATIC_INLINE uint32_t Chip_ADC_GetDataReg(LPC_ADC_T *pADC, uint8_t index)\n+{\n+\treturn pADC->DAT[index];\n+}\n+\n+/**\n+ * @brief\tSet Threshold low value in ADC\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param   thrnum      : Threshold register value (1 for threshold register 1, 0 for threshold register 0)\n+ * @param   value       : Threshold low data value (should be 12-bit value)\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_ADC_SetThrLowValue(LPC_ADC_T *pADC, uint8_t thrnum, uint16_t value)\n+{\n+\tpADC->THR_LOW[thrnum] = (((uint32_t) value) << ADC_THR_VAL_POS);\n+}\n+\n+/**\n+ * @brief\tSet Threshold high value in ADC\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param   thrnum\t: Threshold register value (1 for threshold register 1, 0 for threshold register 0)\n+ * @param   value\t: Threshold high data value (should be 12-bit value)\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_ADC_SetThrHighValue(LPC_ADC_T *pADC, uint8_t thrnum, uint16_t value)\n+{\n+\tpADC->THR_HIGH[thrnum] = (((uint32_t) value) << ADC_THR_VAL_POS);\n+}\n+\n+/**\n+ * @brief\tSelect threshold 0 values for comparison for selected channels\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param   channels\t: An OR'ed value of one or more ADC_THRSEL_CHAN_SEL_THR1(ch) values\n+ * @return\tNone\n+ * @note\tSelect multiple channels to use the threshold 0 comparison.<br>\n+ * Example:<br>\n+ * Chip_ADC_SelectTH0Channels(LPC_ADC, (ADC_THRSEL_CHAN_SEL_THR1(1) | ADC_THRSEL_CHAN_SEL_THR1(2))); // Selects channels 1 and 2 for threshold 0\n+ */\n+__STATIC_INLINE void Chip_ADC_SelectTH0Channels(LPC_ADC_T *pADC, uint32_t channels)\n+{\n+\tChip_ADC_ClearTHRSELBits(pADC, channels);\n+}\n+\n+/**\n+ * @brief\tSelect threshold 1 value for comparison for selected channels\n+ * @param\tpADC\t\t: The base of ADC peripheral on the chip\n+ * @param   channels\t: An OR'ed value of one or more ADC_THRSEL_CHAN_SEL_THR1(ch) values\n+ * @return\tNone\n+ * @note\tSelect multiple channels to use the 1 threshold comparison.<br>\n+ * Example:<br>\n+ * Chip_ADC_SelectTH1Channels(LPC_ADC, (ADC_THRSEL_CHAN_SEL_THR1(4) | ADC_THRSEL_CHAN_SEL_THR1(5))); // Selects channels 4 and 5 for 1 threshold\n+ */\n+__STATIC_INLINE void Chip_ADC_SelectTH1Channels(LPC_ADC_T *pADC, uint32_t channels)\n+{\n+\tChip_ADC_SetTHRSELBits(pADC, channels);\n+}\n+\n+/**\n+ * @brief\tEnable interrupts in ADC (sequencers A/B and overrun)\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param\tintMask\t: Interrupt values to be enabled (see notes)\n+ * @return\tNone\n+ * @note\tSelect one or more OR'ed values of ADC_INTEN_SEQA_ENABLE,\n+ * ADC_INTEN_SEQB_ENABLE, and ADC_INTEN_OVRRUN_ENABLE to enable the\n+ * specific ADC interrupts.\n+ */\n+__STATIC_INLINE void Chip_ADC_EnableInt(LPC_ADC_T *pADC, uint32_t intMask)\n+{\n+\tChip_ADC_SetIntBits(pADC, intMask);\n+}\n+\n+/**\n+ * @brief\tDisable interrupts in ADC (sequencers A/B and overrun)\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param\tintMask\t: Interrupt values to be disabled (see notes)\n+ * @return\tNone\n+ * @note\tSelect one or more OR'ed values of ADC_INTEN_SEQA_ENABLE,\n+ * ADC_INTEN_SEQB_ENABLE, and ADC_INTEN_OVRRUN_ENABLE to disable the\n+ * specific ADC interrupts.\n+ */\n+__STATIC_INLINE void Chip_ADC_DisableInt(LPC_ADC_T *pADC, uint32_t intMask)\n+{\n+\tChip_ADC_ClearIntBits(pADC, intMask);\n+}\n+\n+/** Threshold interrupt event options */\n+typedef enum {\n+\tADC_INTEN_THCMP_DISABLE,\n+\tADC_INTEN_THCMP_OUTSIDE,\n+\tADC_INTEN_THCMP_CROSSING,\n+} ADC_INTEN_THCMP_T;\n+\n+/**\n+ * @brief\tEnable a threshold event interrupt in ADC\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param\tch\t\t: ADC channel to set threshold inetrrupt for, 1-8\n+ * @param\tthInt\t: Selected threshold interrupt type\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_ADC_SetThresholdInt(LPC_ADC_T *pADC, uint8_t ch, ADC_INTEN_THCMP_T thInt)\n+{\n+\tint shiftIndex = 3 + (ch * 2);\n+\n+\t/* Clear current bits first */\n+\tChip_ADC_ClearIntBits(pADC, (ADC_INTEN_CMP_MASK << shiftIndex));\n+\n+\t/* Set new threshold interrupt type */\n+\tChip_ADC_SetIntBits(pADC, ((uint32_t) thInt << shiftIndex));\n+}\n+\n+/**\n+ * @brief\tGet flags register in ADC\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @return  Flags register value (ORed ADC_FLAG* values)\n+ * @note\tMask the return value of this function with the ADC_FLAGS_*\n+ * definitions to determine the overall ADC interrupt events.<br>\n+ * Example:<br>\n+ * if (Chip_ADC_GetFlags(LPC_ADC) & ADC_FLAGS_THCMP_MASK(3) // Check of threshold comp status for ADC channel 3\n+ */\n+__STATIC_INLINE uint32_t Chip_ADC_GetFlags(LPC_ADC_T *pADC)\n+{\n+\treturn pADC->FLAGS;\n+}\n+\n+/**\n+ * @brief\tClear flags register in ADC\n+ * @param\tpADC\t: The base of ADC peripheral on the chip\n+ * @param\tflags\t: An Or'ed values of ADC_FLAGS_* values to clear\n+ * @return  Flags register value (ORed ADC_FLAG* values)\n+ */\n+__STATIC_INLINE void Chip_ADC_ClearFlags(LPC_ADC_T *pADC, uint32_t flags)\n+{\n+\tpADC->FLAGS = flags;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ADC_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/chip.h ./chip/inc/chip.h\n--- a_tnusFF/chip/inc/chip.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/chip.h\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,251 @@\n+/*\n+ * @brief LPC5410x basic chip inclusion file\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_H_\n+#define __CHIP_H_\n+\n+#include \"lpc_types.h\"\n+#include \"cmsis.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/* LPCXpresso macro LPCOpen macro defines */\n+#ifdef __LPC5410X__\n+#define CHIP_LPC5410X\n+#endif\n+\n+#ifndef CORE_M4\n+#ifndef CORE_M0PLUS\n+#error \"CORE_M4 or CORE_M0PLUS is not defined for the LPC5410x architecture\"\n+#error \"CORE_M4 or CORE_M0PLUS should be defined as part of your compiler define list\"\n+#endif\n+#endif\n+\n+#ifndef CHIP_LPC5410X\n+#error \"The LPC5410X Chip include path is used for this build, but\"\n+#error \"CHIP_LPC5410X is not defined!\"\n+#endif\n+\n+/** @defgroup PERIPH_5410X_BASE CHIP: LPC5410X Peripheral addresses and register set declarations\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/* Main memory addresses */\n+#define LPC_FLASHMEM_BASE          0x00000000UL\n+#define LPC_SRAM0_BASE             0x02000000UL\n+#define LPC_SRAM1_BASE             0x02010000UL\n+#define LPC_ROM_BASE               0x03000000UL\n+#define LPC_SRAM2_BASE             0x03400000UL\n+#define LPC_GPIO_PORT_BASE         0x1C000000UL\n+#define LPC_DMA_BASE               0x1C004000UL\n+#define LPC_CRC_BASE               0x1C010000UL\n+#define LPC_SCT_BASE               0x1C018000UL\n+#define LPC_MBOX_BASE              0x1C02C000UL\n+#define LPC_ADC_BASE               0x1C034000UL\n+#define LPC_FIFO_BASE              0x1C038000UL\n+\n+/* APB0 peripheral group addresses */\n+#define LPC_SYSCON_BASE            0x40000000UL\n+#define LPC_TIMER2_BASE            0x40004000UL\n+#define LPC_TIMER3_BASE            0x40008000UL\n+#define LPC_TIMER4_BASE            0x4000C000UL\n+#define LPC_GPIO_GROUPINT0_BASE    0x40010000UL\n+#define LPC_GPIO_GROUPINT1_BASE    0x40014000UL\n+#define LPC_PIN_INT_BASE           0x40018000UL\n+#define LPC_IOCON_BASE             0x4001C000UL\n+#define LPC_UTICK_BASE             0x40020000UL\n+#define LPC_FMC_BASE               0x40024000UL\n+#define LPC_PMU_BASE               0x4002C000UL\n+#define LPC_WWDT_BASE              0x40038000UL\n+#define LPC_RTC_BASE               0x4003C000UL\n+\n+/* APB1 peripheral group addresses */\n+#define LPC_ASYNC_SYSCON_BASE      0x40080000UL\n+#define LPC_USART0_BASE            0x40084000UL\n+#define LPC_USART1_BASE            0x40088000UL\n+#define LPC_USART2_BASE            0x4008C000UL\n+#define LPC_USART3_BASE            0x40090000UL\n+#define LPC_I2C0_BASE              0x40094000UL\n+#define LPC_I2C1_BASE              0x40098000UL\n+#define LPC_I2C2_BASE              0x4009C000UL\n+#define LPC_SPI0_BASE              0x400A4000UL\n+#define LPC_SPI1_BASE              0x400A8000UL\n+#define LPC_TIMER0_BASE            0x400B4000UL\n+#define LPC_TIMER1_BASE            0x400B8000UL\n+#define LPC_INMUX_BASE             0x40050000UL\n+#define LPC_RITIMER_BASE           0x40070000UL\n+#define LPC_MRT_BASE               0x40074000UL\n+\n+/* Main memory register access */\n+#define LPC_GPIO           ((LPC_GPIO_T            *) LPC_GPIO_PORT_BASE)\n+#define LPC_DMA            ((LPC_DMA_T             *) LPC_DMA_BASE)\n+#define LPC_CRC            ((LPC_CRC_T             *) LPC_CRC_BASE)\n+#define LPC_SCT            ((LPC_SCT_T             *) LPC_SCT_BASE)\n+#define LPC_MBOX           ((LPC_MBOX_T            *) LPC_MBOX_BASE)\n+#define LPC_ADC            ((LPC_ADC_T             *) LPC_ADC_BASE)\n+#define LPC_FIFO           ((LPC_FIFO_T            *) LPC_FIFO_BASE)\n+\n+/* APB0 peripheral group register access */\n+#define LPC_SYSCON         ((LPC_SYSCON_T          *) LPC_SYSCON_BASE)\n+#define LPC_TIMER2         ((LPC_TIMER_T           *) LPC_TIMER2_BASE)\n+#define LPC_TIMER3         ((LPC_TIMER_T           *) LPC_TIMER3_BASE)\n+#define LPC_TIMER4         ((LPC_TIMER_T           *) LPC_TIMER4_BASE)\n+#define LPC_GINT           ((LPC_GPIOGROUPINT_T    *) LPC_GPIO_GROUPINT0_BASE)\n+#define LPC_PININT         ((LPC_PIN_INT_T         *) LPC_PIN_INT_BASE)\n+#define LPC_IOCON          ((LPC_IOCON_T           *) LPC_IOCON_BASE)\n+#define LPC_UTICK          ((LPC_UTICK_T           *) LPC_UTICK_BASE)\n+#define LPC_WWDT           ((LPC_WWDT_T            *) LPC_WWDT_BASE)\n+#define LPC_RTC            ((LPC_RTC_T             *) LPC_RTC_BASE)\n+\n+/* APB1 peripheral group register access */\n+#define LPC_ASYNC_SYSCON   ((LPC_ASYNC_SYSCON_T    *) LPC_ASYNC_SYSCON_BASE)\n+#define LPC_USART0         ((LPC_USART_T           *) LPC_USART0_BASE)\n+#define LPC_USART1         ((LPC_USART_T           *) LPC_USART1_BASE)\n+#define LPC_USART2         ((LPC_USART_T           *) LPC_USART2_BASE)\n+#define LPC_USART3         ((LPC_USART_T           *) LPC_USART3_BASE)\n+#define LPC_I2C0           ((LPC_I2C_T             *) LPC_I2C0_BASE)\n+#define LPC_I2C1           ((LPC_I2C_T             *) LPC_I2C1_BASE)\n+#define LPC_I2C2           ((LPC_I2C_T             *) LPC_I2C2_BASE)\n+#define LPC_SCT0           LPC_SCT\n+#define LPC_SPI0           ((LPC_SPI_T             *) LPC_SPI0_BASE)\n+#define LPC_SPI1           ((LPC_SPI_T             *) LPC_SPI1_BASE)\n+#define LPC_TIMER0         ((LPC_TIMER_T           *) LPC_TIMER0_BASE)\n+#define LPC_TIMER1         ((LPC_TIMER_T           *) LPC_TIMER1_BASE)\n+#define LPC_INMUX          ((LPC_INMUX_T           *) LPC_INMUX_BASE)\n+#define LPC_RITIMER        ((LPC_RITIMER_T         *) LPC_RITIMER_BASE)\n+#define LPC_MRT            ((LPC_MRT_T             *) LPC_MRT_BASE)\n+#define LPC_PMU            ((LPC_PMU_T             *) LPC_PMU_BASE)\n+\n+/**\n+ * @}\n+ */\n+\n+/** @ingroup CHIP_5410X_DRIVER_OPTIONS\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tClock rate on the CLKIN pin\n+ * This value is defined externally to the chip layer and contains\n+ * the value in Hz for the CLKIN pin for the board. If this pin isn't used,\n+ * this rate can be 0.\n+ */\n+extern const uint32_t ExtClockIn;\n+\n+/**\n+ * @}\n+ */\n+\n+/* Include order is important! */\n+#include \"romapi_5410x.h\"\n+#include \"syscon_5410x.h\"\n+#include \"cpuctrl_5410x.h\"\n+#include \"clock_5410x.h\"\n+#include \"pmu_5410x.h\"\n+#include \"iocon_5410x.h\"\n+#include \"pinint_5410x.h\"\n+#include \"inmux_5410x.h\"\n+#include \"crc_5410x.h\"\n+#include \"gpio_5410x.h\"\n+#include \"fifo_5410x.h\"\n+#include \"mrt_5410x.h\"\n+#include \"wwdt_5410x.h\"\n+#include \"sct_5410x.h\"\n+#include \"sct_pwm_5410x.h\"\n+#include \"rtc_5410x.h\"\n+#include \"timer_5410x.h\"\n+#include \"ritimer_5410x.h\"\n+#include \"utick_5410x.h\"\n+#include \"gpiogroup_5410x.h\"\n+#include \"mailbox_5410x.h\"\n+#include \"fpu_init.h\"\n+#include \"power_lib_5410x.h\"\n+#include \"adc_5410x.h\"\n+#include \"dma_5410x.h\"\n+#include \"uart_5410x.h\"\n+#include \"spi_common_5410x.h\"\n+#include \"spim_5410x.h\"\n+#include \"spis_5410x.h\"\n+#include \"i2c_common_5410x.h\"\n+#include \"i2cm_5410x.h\"\n+#include \"i2cs_5410x.h\"\n+\n+/** @defgroup SUPPORT_5410X_FUNC CHIP: LPC5410X support functions\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tCurrent system clock rate, mainly used for peripherals in SYSCON\n+ */\n+extern uint32_t SystemCoreClock;\n+\n+/**\n+ * @brief\tUpdate system core and ASYNC syscon clock rate, should be called if the\n+ *\t\t\tsystem has a clock rate change\n+ * @return\tNone\n+ */\n+void SystemCoreClockUpdate(void);\n+\n+/**\n+ * @brief\tSet up and initialize hardware prior to call to main()\n+ * @return\tNone\n+ * @note\tChip_SystemInit() is called prior to the application and sets up\n+ * system clocking prior to the application starting.\n+ */\n+void Chip_SystemInit(void);\n+\n+/**\n+ * @brief\tClock and PLL initialization based on the internal oscillator\n+ * @param\tiFreq\t: Rate (in Hz) to set the main system clock to\n+ * @return\tNone\n+ */\n+void Chip_SetupIrcClocking(uint32_t iFreq);\n+\n+/**\n+ * @brief\tClock and PLL initialization based on the external clock input\n+ * @param\tiFreq\t: Rate (in Hz) to set the main system clock to\n+ * @return\tNone\n+ */\n+void Chip_SetupExtInClocking(uint32_t iFreq);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/clock_5410x.h ./chip/inc/clock_5410x.h\n--- a_tnusFF/chip/inc/clock_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/clock_5410x.h\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,473 @@\n+/*\n+ * @brief LPC5410X clock driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CLOCK_5410X_H_\n+#define __CLOCK_5410X_H_\n+\n+#include \"pll_5410x.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CLOCK_5410X CHIP: LPC5410X Clock Driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/* Internal oscillator frequency */\n+#define SYSCON_IRC_FREQ     (12000000)\n+#define SYSCON_WDTOSC_FREQ  (500000)\n+#define SYSCON_RTC_FREQ     (32768)\n+\n+/**\n+ * @brief\tReturns the internal oscillator (IRC) clock rate\n+ * @return\tinternal oscillator (IRC) clock rate\n+ */\n+__STATIC_INLINE uint32_t Chip_Clock_GetIntOscRate(void)\n+{\n+\treturn SYSCON_IRC_FREQ;\n+}\n+\n+/**\n+ * @brief\tReturns the external clock input rate\n+ * @return\tExternal clock input rate\n+ */\n+__STATIC_INLINE uint32_t Chip_Clock_GetExtClockInRate(void)\n+{\n+\treturn ExtClockIn;\n+}\n+\n+/**\n+ * @brief\tReturns the RTC clock rate\n+ * @return\tRTC oscillator clock rate in Hz\n+ */\n+__STATIC_INLINE uint32_t Chip_Clock_GetRTCOscRate(void)\n+{\n+\treturn SYSCON_RTC_FREQ;\n+}\n+\n+/**\n+ * @brief\tReturn estimated watchdog oscillator rate\n+ * @return\tEstimated watchdog oscillator rate\n+ * @note\tThis rate is accurate to plus or minus 40%.\n+ */\n+__STATIC_INLINE uint32_t Chip_Clock_GetWDTOSCRate(void)\n+{\n+\treturn SYSCON_WDTOSC_FREQ;\n+}\n+\n+/**\n+ * Clock source selections for only the main A system clock. The main A system\n+ * clock is used as an input into the main B system clock selector. Main clock A\n+ * only needs to be setup if the main clock A input is used in the main clock\n+ * system selector.\n+ */\n+typedef enum {\n+\tSYSCON_MAIN_A_CLKSRC_IRC = 0,\t\t/*!< Internal oscillator */\n+\tSYSCON_MAIN_A_CLKSRCA_CLKIN,\t\t/*!< Crystal (main) oscillator in */\n+\tSYSCON_MAIN_A_CLKSRCA_WDTOSC,\t\t/*!< Watchdog oscillator rate */\n+} CHIP_SYSCON_MAIN_A_CLKSRC_T;\n+\n+/**\n+ * @brief\tSet main A system clock source\n+ * @param\tsrc\t: Clock source for main A\n+ * @return\tNothing\n+ * @note\tThis function only needs to be setup if main clock A will be\n+ * selected in the Chip_Clock_GetMain_B_ClockRate() function.\n+ */\n+__STATIC_INLINE void Chip_Clock_SetMain_A_ClockSource(CHIP_SYSCON_MAIN_A_CLKSRC_T src)\n+{\n+\tLPC_SYSCON->MAINCLKSELA = (uint32_t) src;\n+}\n+\n+/**\n+ * @brief   Returns the main A clock source\n+ * @return\tReturns which clock is used for the main A\n+ */\n+__STATIC_INLINE CHIP_SYSCON_MAIN_A_CLKSRC_T Chip_Clock_GetMain_A_ClockSource(void)\n+{\n+\treturn (CHIP_SYSCON_MAIN_A_CLKSRC_T) (LPC_SYSCON->MAINCLKSELA);\n+}\n+\n+/**\n+ * @brief\tReturn main A clock rate\n+ * @return\tmain A clock rate in Hz\n+ */\n+uint32_t Chip_Clock_GetMain_A_ClockRate(void);\n+\n+/**\n+ * Clock sources for only main B system clock\n+ */\n+typedef enum {\n+\tSYSCON_MAIN_B_CLKSRC_MAINCLKSELA = 0,\t/*!< main clock A */\n+\tSYSCON_MAIN_B_CLKSRC_SYSPLLIN,\t\t\t/*!< System PLL input */\n+\tSYSCON_MAIN_B_CLKSRC_SYSPLLOUT,\t\t\t/*!< System PLL output */\n+\tSYSCON_MAIN_B_CLKSRC_RTC,\t\t\t\t/*!< RTC oscillator 32KHz output */\n+} CHIP_SYSCON_MAIN_B_CLKSRC_T;\n+\n+/**\n+ * @brief\tSet main B system clock source\n+ * @param\tsrc\t: Clock source for main B\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_Clock_SetMain_B_ClockSource(CHIP_SYSCON_MAIN_B_CLKSRC_T src)\n+{\n+\tLPC_SYSCON->MAINCLKSELB = (uint32_t) src;\n+}\n+\n+/**\n+ * @brief   Returns the main B clock source\n+ * @return\tReturns which clock is used for the main B\n+ */\n+__STATIC_INLINE CHIP_SYSCON_MAIN_B_CLKSRC_T Chip_Clock_GetMain_B_ClockSource(void)\n+{\n+\treturn (CHIP_SYSCON_MAIN_B_CLKSRC_T) (LPC_SYSCON->MAINCLKSELB);\n+}\n+\n+/**\n+ * @brief\tReturn main B clock rate\n+ * @return\tmain B clock rate\n+ */\n+uint32_t Chip_Clock_GetMain_B_ClockRate(void);\n+\n+/**\n+ * Clock sources for CLKOUT\n+ */\n+typedef enum {\n+\tSYSCON_CLKOUTSRC_MAINCLK = 0,\t\t/*!< Main system clock for CLKOUT */\n+\tSYSCON_CLKOUTSRC_CLKIN,\t\t\t\t/*!< CLKIN for CLKOUT */\n+\tSYSCON_CLKOUTSRC_WDTOSC,\t\t\t/*!< Watchdog oscillator for CLKOUT */\n+\tSYSCON_CLKOUTSRC_IRC,\t\t\t\t/*!< Internal oscillator for CLKOUT */\n+\tSYSCON_CLKOUTSRCA_OUTPUT,\t\t\t/*!< clkoutA output route to input of clkoutB */\n+\tSYSCON_CLKOUTSRC_RTC = 7\t\t\t/*!< RTC oscillator 32KHz for CLKOUT */\n+} CHIP_SYSCON_CLKOUTSRC_T;\n+\n+/**\n+ * @brief\tSet CLKOUT clock source and divider\n+ * @param\tsrc\t: Clock source for CLKOUT\n+ * @param\tdiv\t: divider for CLKOUT clock\n+ * @return\tNothing\n+ * @note\tUse 0 to disable, or a divider value of 1 to 255. The CLKOUT clock\n+ * rate is the clock source divided by the divider. This function will\n+ * also toggle the clock source update register to update the clock\n+ * source.\n+ */\n+void Chip_Clock_SetCLKOUTSource(CHIP_SYSCON_CLKOUTSRC_T src, uint32_t div);\n+\n+/**\n+ * System and peripheral clocks enum\n+ */\n+typedef enum CHIP_SYSCON_CLOCK {\n+\t/* Peripheral clock enables for SYSAHBCLKCTRL0 */\n+\tSYSCON_CLOCK_ROM = 1,\t\t\t\t/*!< ROM clock */\n+\tSYSCON_CLOCK_SRAM1 = 3,\t\t\t\t/*!< SRAM1 clock */\n+\tSYSCON_CLOCK_SRAM2,\t\t\t\t\t/*!< SRAM2 clock */\n+\tSYSCON_CLOCK_FLASH = 7,\t\t\t\t/*!< FLASH controller clock */\n+\tSYSCON_CLOCK_FMC,\t\t\t\t\t/*!< FMC clock */\n+\tSYSCON_CLOCK_INPUTMUX = 11,\t\t\t/*!< Input mux clock */\n+\tSYSCON_CLOCK_IOCON = 13,\t\t\t/*!< IOCON clock */\n+\tSYSCON_CLOCK_GPIO0,\t\t\t\t\t/*!< GPIO0 clock */\n+\tSYSCON_CLOCK_GPIO1,\t\t\t\t\t/*!< GPIO1 clock */\n+\tSYSCON_CLOCK_PINT = 18,\t\t\t\t/*!< PININT clock */\n+\tSYSCON_CLOCK_GINT,\t\t\t\t\t/*!< grouped pin interrupt block clock */\n+\tSYSCON_CLOCK_DMA,\t\t\t\t\t/*!< DMA clock */\n+\tSYSCON_CLOCK_CRC,\t\t\t\t\t/*!< CRC clock */\n+\tSYSCON_CLOCK_WWDT,\t\t\t\t\t/*!< WDT clock */\n+\tSYSCON_CLOCK_RTC,\t\t\t\t\t/*!< RTC clock */\n+\tSYSCON_CLOCK_MAILBOX = 26,\t\t\t/*!< Mailbox clock */\n+\tSYSCON_CLOCK_ADC0,\t\t\t\t\t/*!< ADC0 clock */\n+\n+\t/* Peripheral clock enables for SYSAHBCLKCTRL1 */\n+\tSYSCON_CLOCK_MRT = 32,\t\t\t\t/*!< multi-rate timer clock */\n+\tSYSCON_CLOCK_RIT,\t\t\t\t\t/*!< Repetitive interval timer clock */\n+\tSYSCON_CLOCK_SCT0,\t\t\t\t\t/*!< SCT0 clock */\n+\tSYSCON_CLOCK_FIFO = 32 + 9,\t\t\t/*!< System FIFO clock */\n+\tSYSCON_CLOCK_UTICK,\t\t\t\t\t/*!< UTICK clock */\n+\tSYSCON_CLOCK_TIMER2 = 32 + 22,\t\t/*!< TIMER2 clock */\n+\tSYSCON_CLOCK_TIMER3 = 32 + 26,\t\t/*!< TIMER3 clock */\n+\tSYSCON_CLOCK_TIMER4,\t\t\t\t/*!< TIMER4 clock */\n+\n+\t/* Peripheral clock enables for ASYNCAPBCLKCTRLCLR */\n+\tSYSCON_CLOCK_USART0 = 128 + 1,\t\t/*!< USART0 clock */\n+\tSYSCON_CLOCK_USART1,\t\t\t\t/*!< USART1 clock */\n+\tSYSCON_CLOCK_USART2,\t\t\t\t/*!< USART2 clock */\n+\tSYSCON_CLOCK_USART3,\t\t\t\t/*!< USART3 clock */\n+\tSYSCON_CLOCK_I2C0,\t\t\t\t\t/*!< I2C0  clock */\n+\tSYSCON_CLOCK_I2C1,\t\t\t\t\t/*!< I2C1  clock */\n+\tSYSCON_CLOCK_I2C2,\t\t\t\t\t/*!< I2C2  clock */\n+\tSYSCON_CLOCK_SPI0 = 128 + 9,\t\t/*!< SPI0  clock */\n+\tSYSCON_CLOCK_SPI1,\t\t\t\t\t/*!< SPI1  clock */\n+\tSYSCON_CLOCK_TIMER0 = 128 + 13,\t\t/*!< TIMER0 clock */\n+\tSYSCON_CLOCK_TIMER1,\t\t\t\t/*!< TIMER1 clock */\n+\tSYSCON_CLOCK_FRG\t\t\t\t\t/*!< FRG clock */\n+} CHIP_SYSCON_CLOCK_T;\n+\n+/**\n+ * @brief\tEnable a system or peripheral clock\n+ * @param\tclk\t: Clock to enable\n+ * @return\tNothing\n+ */\n+void Chip_Clock_EnablePeriphClock(CHIP_SYSCON_CLOCK_T clk);\n+\n+/**\n+ * @brief\tDisable a system or peripheral clock\n+ * @param\tclk\t: Clock to disable\n+ * @return\tNothing\n+ */\n+void Chip_Clock_DisablePeriphClock(CHIP_SYSCON_CLOCK_T clk);\n+\n+/**\n+ * @brief\tSet system tick clock divider (external CLKIN as SYSTICK reference only)\n+ * @param\tdiv\t: divider for system clock\n+ * @return\tNothing\n+ * @note\tUse 0 to disable, or a divider value of 1 to 255. The system tick\n+ * rate is the external CLKIN rate divided by this value. The extern CLKIN pin\n+ * signal, divided by the SYSTICKCLKDIV divider, is selected by clearing\n+ * CLKSOURCE bit 2 in the System Tick CSR register. The core clock must be at least\n+ * 2.5 times faster than the reference system tick clock otherwise the count\n+ * values are unpredictable.\n+ */\n+__STATIC_INLINE void Chip_Clock_SetSysTickClockDiv(uint32_t div)\n+{\n+\tLPC_SYSCON->SYSTICKCLKDIV = div;\n+}\n+\n+/**\n+ * @brief\tReturns system tick clock divider\n+ * @return\tsystem tick clock divider\n+ */\n+__STATIC_INLINE uint32_t Chip_Clock_GetSysTickClockDiv(void)\n+{\n+\treturn LPC_SYSCON->SYSTICKCLKDIV;\n+}\n+\n+/**\n+ * @brief\tReturns the system tick rate as used with the system tick divider\n+ * @return\tthe system tick rate\n+ */\n+uint32_t Chip_Clock_GetSysTickClockRate(void);\n+\n+/**\n+ * @brief\tSet system clock divider\n+ * @param\tdiv\t: divider for system clock\n+ * @return\tNothing\n+ * @note\tUse 0 to disable, or a divider value of 1 to 255. The system clock\n+ * rate is the main system clock divided by this value.\n+ */\n+__STATIC_INLINE void Chip_Clock_SetSysClockDiv(uint32_t div)\n+{\n+\tLPC_SYSCON->AHBCLKDIV = div;\n+}\n+\n+/**\n+ * @brief\tSet system tick clock divider\n+ * @param\tdiv\t: divider for system clock\n+ * @return\tNothing\n+ * @note\tUse 0 to disable, or a divider value of 1 to 255. The system tick\n+ * rate is the main system clock divided by this value. Use caution when using\n+ * the CMSIS SysTick_Config() functions as they typically use SystemCoreClock\n+ * for setup.\n+ */\n+__STATIC_INLINE void Chip_Clock_SetADCClockDiv(uint32_t div)\n+{\n+\tLPC_SYSCON->ADCCLKDIV = div;\n+}\n+\n+/**\n+ * @brief\tReturns ADC clock divider\n+ * @return\tADC clock divider, 0 = disabled\n+ */\n+__STATIC_INLINE uint32_t Chip_Clock_GetADCClockDiv(void)\n+{\n+\treturn LPC_SYSCON->ADCCLKDIV;\n+}\n+\n+/**\n+ * Clock sources for ADC clock source select\n+ */\n+typedef enum {\n+\tSYSCON_ADCCLKSELSRC_MAINCLK = 0,\t\t/*!< Main clock */\n+\tSYSCON_ADCCLKSELSRC_SYSPLLOUT,\t\t\t/*!< PLL output */\n+\tSYSCON_ADCCLKSELSRC_IRC\t\t\t\t\t/*!< Internal oscillator */\n+} CHIP_SYSCON_ADCCLKSELSRC_T;\n+\n+/**\n+ * @brief\tSet the ADC clock source\n+ * @param\tsrc\t: ADC clock source\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_Clock_SetADCClockSource(CHIP_SYSCON_ADCCLKSELSRC_T src)\n+{\n+\tLPC_SYSCON->ADCCLKSEL = (uint32_t) src;\n+}\n+\n+/**\n+ * @brief   Returns the ADC clock source\n+ * @return\tReturns which clock is used for the ADC clock source\n+ */\n+__STATIC_INLINE CHIP_SYSCON_ADCCLKSELSRC_T Chip_Clock_GetADCClockSource(void)\n+{\n+\treturn (CHIP_SYSCON_ADCCLKSELSRC_T) (LPC_SYSCON->ADCCLKSEL);\n+}\n+\n+/**\n+ * @brief\tReturn ADC clock rate\n+ * @return\tADC clock rate\n+ */\n+uint32_t Chip_Clock_GetADCClockRate(void);\n+\n+/**\n+ * @brief\tEnable the RTC 32KHz output\n+ * @return\tNothing\n+ * @note\tThis clock can be used for the main clock directly, but\n+ *\t\t\tdo not use this clock with the system PLL.\n+ */\n+__STATIC_INLINE void Chip_Clock_EnableRTCOsc(void)\n+{\n+\tLPC_SYSCON->RTCOSCCTRL  = 1;\n+}\n+\n+/**\n+ * @brief\tDisable the RTC 32KHz output\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_Clock_DisableRTCOsc(void)\n+{\n+\tLPC_SYSCON->RTCOSCCTRL  = 0;\n+}\n+\n+/**\n+ * Clock source selections for the asynchronous APB clock\n+ */\n+typedef enum {\n+\tSYSCON_ASYNC_IRC = 0,\t\t\t/*!< IRC input */\n+\tSYSCON_ASYNC_WDTOSC,\t\t\t/*!< Watchdog oscillator */\n+\tSYSCON_ASYNC_MAINCLK = 4,\t\t/*!< Main clock */\n+\tSYSCON_ASYNC_CLKIN,\t\t\t\t/*!< external CLK input */\n+\tSYSCON_ASYNC_SYSPLLOUT\t\t\t/*!< System PLL output */\n+} CHIP_ASYNC_SYSCON_SRC_T;\n+\n+/**\n+ * @brief\tSet asynchronous APB clock source\n+ * @param\tsrc\t: Clock source for asynchronous APB clock\n+ * @return\tNothing\n+ */\n+void Chip_Clock_SetAsyncSysconClockSource(CHIP_ASYNC_SYSCON_SRC_T src);\n+\n+/**\n+ * @brief\tGet asynchronous APB clock source\n+ * @return\tClock source for asynchronous APB clock\n+ */\n+CHIP_ASYNC_SYSCON_SRC_T Chip_Clock_GetAsyncSysconClockSource(void);\n+\n+/**\n+ * @brief\tReturn asynchronous APB clock rate\n+ * @return\tAsynchronous APB clock rate\n+ * @note\tIncludes adjustments by Async clock divider (ASYNCCLKDIV).\n+ */\n+uint32_t Chip_Clock_GetAsyncSyscon_ClockRate(void);\n+\n+/**\n+ * @brief\tSet UART divider clock\n+ * @param\tdiv\t: divider for UART clock\n+ * @return\tNothing\n+ * @note\tUse 0 to disable, or a divider value of 1 to 255. The UART clock\n+ * rate is the main system clock divided by this value.\n+ */\n+__STATIC_INLINE void Chip_Clock_SetAsyncSysconClockDiv(uint32_t div)\n+{\n+\tLPC_ASYNC_SYSCON->ASYNCCLKDIV = div;\n+}\n+\n+/**\n+ * Clock sources for main system clock. This is a mix of both main clock A\n+ * and B selections.\n+ */\n+typedef enum {\n+\tSYSCON_MAINCLKSRC_IRC = 0,\t\t\t\t/*!< Internal oscillator */\n+\tSYSCON_MAINCLKSRC_CLKIN,\t\t\t\t/*!< Crystal (main) oscillator in */\n+\tSYSCON_MAINCLKSRC_WDTOSC,\t\t\t\t/*!< Watchdog oscillator rate */\n+\tSYSCON_MAINCLKSRC_PLLIN = 5,\t\t\t/*!< System PLL input */\n+\tSYSCON_MAINCLKSRC_PLLOUT,\t\t\t\t/*!< System PLL output */\n+\tSYSCON_MAINCLKSRC_RTC\t\t\t\t\t/*!< RTC oscillator 32KHz output */\n+} CHIP_SYSCON_MAINCLKSRC_T;\n+\n+/**\n+ * @brief\tSet main system clock source\n+ * @param\tsrc\t: Clock source for main system\n+ * @return\tNothing\n+ */\n+void Chip_Clock_SetMainClockSource(CHIP_SYSCON_MAINCLKSRC_T src);\n+\n+/**\n+ * @brief\tGet main system clock source\n+ * @return\tClock source for main system\n+ * @note\n+ */\n+CHIP_SYSCON_MAINCLKSRC_T Chip_Clock_GetMainClockSource(void);\n+\n+/**\n+ * @brief\tReturn main clock rate\n+ * @return\tmain clock rate\n+ */\n+uint32_t Chip_Clock_GetMainClockRate(void);\n+\n+/**\n+ * @brief\tReturn system clock rate\n+ * @return\tsystem clock rate\n+ * @note\tThis is the main clock rate divided by AHBCLKDIV.\n+ */\n+uint32_t Chip_Clock_GetSystemClockRate(void);\n+\n+/**\n+ * @brief\tGet UART base clock rate\n+ * @return\tUART base clock rate\n+ */\n+uint32_t Chip_Clock_GetUARTBaseClockRate(void);\n+\n+/**\n+ * @brief\tGet UART base clock rate using FRG\n+ * @return\tActual UART base clock rate\n+ * @note\tIt's recommended to set a base rate at least 16x the\n+ * expected maximum UART transfer bit rate.\n+ */\n+uint32_t Chip_Clock_SetUARTBaseClockRate(uint32_t rate);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CLOCK_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/cmsis_5410x.h ./chip/inc/cmsis_5410x.h\n--- a_tnusFF/chip/inc/cmsis_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/cmsis_5410x.h\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,171 @@\n+/*\n+ * @brief Basic CMSIS include file for LPC5410x M4 core\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CMSIS_5410X_H_\n+#define __CMSIS_5410X_H_\n+\n+#include \"lpc_types.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CMSIS_5410X_M4 CHIP: LPC5410X M4 core CMSIS include file\n+ * @ingroup CHIP_5410X_CMSIS_DRIVERS\n+ * @{\n+ */\n+\n+#if defined(__ARMCC_VERSION)\n+// Kill warning \"#pragma push with no matching #pragma pop\"\n+  #pragma diag_suppress 2525\n+  #pragma push\n+  #pragma anon_unions\n+#elif defined(__CWCC__)\n+  #pragma push\n+  #pragma cpp_extensions on\n+#elif defined(__GNUC__)\n+/* anonymous unions are enabled by default */\n+#elif defined(__IAR_SYSTEMS_ICC__)\n+//  #pragma push // FIXME not usable for IAR\n+  #pragma language=extended\n+#else\n+  #error Not supported compiler type\n+#endif\n+\n+/*\n+ * ==========================================================================\n+ * ---------- Interrupt Number Definition -----------------------------------\n+ * ==========================================================================\n+ */\n+\n+#if !defined(CORE_M4)\n+#error \"CORE_M4 is not defined\"\n+#endif\n+\n+/** @defgroup CMSIS_5410X_M4_IRQ CHIP_5410X: LPC5410X M4 core peripheral interrupt numbers\n+ * @{\n+ */\n+\n+typedef enum {\n+\t/******  Cortex-M4 Processor Exceptions Numbers ***************************************************/\n+\tReset_IRQn                    = -15,\t/*!< 1  Reset Vector, invoked on Power up and warm reset */\n+\tNonMaskableInt_IRQn           = -14,\t/*!< 2  Non maskable Interrupt, cannot be stopped or preempted */\n+\tHardFault_IRQn                = -13,\t/*!< 3  Hard Fault, all classes of Fault */\n+\tMemoryManagement_IRQn         = -12,\t/*!< 4  Memory Management, MPU mismatch, including Access Violation and No Match */\n+\tBusFault_IRQn                 = -11,\t/*!< 5  Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */\n+\tUsageFault_IRQn               = -10,\t/*!< 6  Usage Fault, i.e. Undef Instruction, Illegal State Transition */\n+\tSVCall_IRQn                   =  -5,\t/*!< 11  System Service Call via SVC instruction */\n+\tDebugMonitor_IRQn             =  -4,\t/*!< 12  Debug Monitor                    */\n+\tPendSV_IRQn                   =  -2,\t/*!< 14  Pendable request for system service */\n+\tSysTick_IRQn                  =  -1,\t/*!< 15  System Tick Timer                */\n+\n+\t/******  LPC5410X Specific Interrupt Numbers ********************************************************/\n+\tWDT_IRQn                      = 0,\t\t/*!< WWDT                                             */\n+\tBOD_IRQn                      = 1,\t\t/*!< BOD                                              */\n+\tReserved2_IRQn                = 2,\t\t/*!< Reserved Interrupt                               */\n+\tDMA_IRQn                      = 3,\t\t/*!< DMA                                              */\n+\tGINT0_IRQn                    = 4,\t\t/*!< GINT0                                            */\n+\tPIN_INT0_IRQn                 = 5,\t\t/*!< PININT0                                          */\n+\tPIN_INT1_IRQn                 = 6,\t\t/*!< PININT1                                          */\n+\tPIN_INT2_IRQn                 = 7,\t\t/*!< PININT2                                          */\n+\tPIN_INT3_IRQn                 = 8,\t\t/*!< PININT3                                          */\n+\tUTICK_IRQn                    = 9,\t\t/*!< Micro-tick Timer interrupt                       */\n+\tMRT_IRQn                      = 10,\t\t/*!< Multi-rate timer interrupt                       */\n+\tCT32B0_IRQn                   = 11,\t\t/*!< CTMR0                                            */\n+\tCT32B1_IRQn                   = 12,\t\t/*!< CTMR1                                            */\n+\tCT32B2_IRQn                   = 13,\t\t/*!< CTMR2                                            */\n+\tCT32B3_IRQn                   = 14,\t\t/*!< CTMR3                                            */\n+\tCT32B4_IRQn                   = 15,\t\t/*!< CTMR4                                            */\n+\tSCT0_IRQn                     = 16,\t\t/*!< SCT                                              */\n+\tUART0_IRQn                    = 17,\t\t/*!< UART0                                            */\n+\tUART1_IRQn                    = 18,\t\t/*!< UART1                                            */\n+\tUART2_IRQn                    = 19,\t\t/*!< UART2                                            */\n+\tUART3_IRQn                    = 20,\t\t/*!< UART3                                            */\n+\tI2C0_IRQn                     = 21,\t\t/*!< I2C0                                             */\n+\tI2C1_IRQn                     = 22,\t\t/*!< I2C1                                             */\n+\tI2C2_IRQn                     = 23,\t\t/*!< I2C2                                             */\n+\tSPI0_IRQn                     = 24,\t\t/*!< SPI0                                             */\n+\tSPI1_IRQn                     = 25,\t\t/*!< SPI1                                             */\n+\tADC_SEQA_IRQn                 = 26,\t\t/*!< ADC0 sequence A completion                       */\n+\tADC_SEQB_IRQn                 = 27,\t\t/*!< ADC0 sequence B completion                       */\n+\tADC_THCMP_IRQn                = 28,\t\t/*!< ADC0 threshold compare and error                 */\n+\tRTC_IRQn                      = 29,\t\t/*!< RTC alarm and wake-up interrupts                 */\n+\tReserved30_IRQn               = 30,\t\t/*!< Reserved Interrupt                               */\n+\tMAILBOX_IRQn                  = 31,\t\t/*!< Mailbox                                          */\n+\tGINT1_IRQn                    = 32,\t\t/*!< GINT1                                            */\n+\tPIN_INT4_IRQn                 = 33,\t\t/*!< External Interrupt 4                             */\n+\tPIN_INT5_IRQn                 = 34,\t\t/*!< External Interrupt 5                             */\n+\tPIN_INT6_IRQn                 = 35,\t\t/*!< External Interrupt 6                             */\n+\tPIN_INT7_IRQn                 = 36,\t\t/*!< External Interrupt 7                             */\n+\tReserved37_IRQn               = 37,\t\t/*!< Reserved Interrupt                               */\n+\tReserved38_IRQn               = 38,\t\t/*!< Reserved Interrupt                               */\n+\tReserved39_IRQn               = 39,\t\t/*!< Reserved Interrupt                               */\n+\tRIT_IRQn                      = 40,\t\t/*!< Repetitive Interrupt Timer                       */\n+\tReserved41_IRQn               = 41,\t\t/*!< Reserved Interrupt                               */\n+\tReserved42_IRQn               = 42,\t\t/*!< Reserved Interrupt                               */\n+\tReserved43_IRQn               = 43,\t\t/*!< Reserved Interrupt                               */\n+\tReserved44_IRQn               = 44,\t\t/*!< Reserved Interrupt                               */\n+} LPC5410X_IRQn_Type;\n+\n+/**\n+ * @}\n+ */\n+\n+/*\n+ * ==========================================================================\n+ * ----------- Processor and Core Peripheral Section ------------------------\n+ * ==========================================================================\n+ */\n+\n+/** @defgroup CMSIS_5410X_M4_COMMON CHIP: LPC5410X M4 core Cortex CMSIS definitions\n+ * @{\n+ */\n+\n+/* Configuration of the Cortex-M4 Processor and Core Peripherals */\n+#define __CM4_REV                 0x0001\t/*!< Cortex-M4 Core Revision                          */\n+#define __MPU_PRESENT             1\t\t\t/*!< MPU present or not                               */\n+#define __NVIC_PRIO_BITS          3\t\t\t/*!< Number of Bits used for Priority Levels          */\n+#define __Vendor_SysTickConfig    0\t\t\t/*!< Set to 1 if different SysTick Config is used     */\n+#define __FPU_PRESENT             1\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CMSIS_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/cmsis_5410x_m0.h ./chip/inc/cmsis_5410x_m0.h\n--- a_tnusFF/chip/inc/cmsis_5410x_m0.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/cmsis_5410x_m0.h\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,154 @@\n+/*\n+ * @brief Basic CMSIS include file for LPC5410x M0+ core\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CMSIS_5410X_M0_H_\n+#define __CMSIS_5410X_M0_H_\n+\n+#include \"lpc_types.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CMSIS_5410X_M0 CHIP: LPC5410X M0 core CMSIS include file\n+ * @ingroup CHIP_5410X_CMSIS_DRIVERS\n+ * @{\n+ */\n+\n+#if defined(__ARMCC_VERSION)\n+// Kill warning \"#pragma push with no matching #pragma pop\"\n+  #pragma diag_suppress 2525\n+  #pragma push\n+  #pragma anon_unions\n+#elif defined(__CWCC__)\n+  #pragma push\n+  #pragma cpp_extensions on\n+#elif defined(__GNUC__)\n+/* anonymous unions are enabled by default */\n+#elif defined(__IAR_SYSTEMS_ICC__)\n+//  #pragma push // FIXME not usable for IAR\n+  #pragma language=extended\n+#else\n+  #error Not supported compiler type\n+#endif\n+\n+/*\n+ * ==========================================================================\n+ * ---------- Interrupt Number Definition -----------------------------------\n+ * ==========================================================================\n+ */\n+\n+#if !defined(CORE_M0PLUS)\n+#error \"CORE_M0PLUS is not defined\"\n+#endif\n+\n+/** @defgroup CMSIS_5410X_M0_IRQ CHIP_5410X: LPC5410X M0 core peripheral interrupt numbers\n+ * @{\n+ */\n+\n+typedef enum {\n+\t/******  Cortex-M0 Processor Exceptions Numbers ***************************************************/\n+\tReset_IRQn                    = -15,\t/*!< 1 Reset Vector, invoked on Power up and warm reset */\n+\tNonMaskableInt_IRQn           = -14,\t/*!< 2 Non Maskable Interrupt                           */\n+\tHardFault_IRQn                = -13,\t/*!< 3 Cortex-M0 Hard Fault Interrupt                   */\n+\tSVCall_IRQn                   = -5,\t\t/*!< 11 Cortex-M0 SV Call Interrupt                     */\n+\tPendSV_IRQn                   = -2,\t\t/*!< 14 Cortex-M0 Pend SV Interrupt                     */\n+\tSysTick_IRQn                  = -1,\t\t/*!< 15 Cortex-M0 System Tick Interrupt                 */\n+\n+\t/******  LPC5410X Specific Interrupt Numbers ********************************************************/\n+\tWDT_IRQn                      = 0,\t\t/*!< WWDT                                             */\n+\tBOD_IRQn                      = 1,\t\t/*!< BOD                                              */\n+\tReserved2_IRQn                = 2,\t\t/*!< Reserved Interrupt                               */\n+\tDMA_IRQn                      = 3,\t\t/*!< DMA                                              */\n+\tGINT0_IRQn                    = 4,\t\t/*!< GINT0                                            */\n+\tPIN_INT0_IRQn                 = 5,\t\t/*!< PININT0                                          */\n+\tPIN_INT1_IRQn                 = 6,\t\t/*!< PININT1                                          */\n+\tPIN_INT2_IRQn                 = 7,\t\t/*!< PININT2                                          */\n+\tPIN_INT3_IRQn                 = 8,\t\t/*!< PININT3                                          */\n+\tUTICK_IRQn                    = 9,\t\t/*!< Micro-tick Timer interrupt                       */\n+\tMRT_IRQn                      = 10,\t\t/*!< Multi-rate timer interrupt                       */\n+\tCT32B0_IRQn                   = 11,\t\t/*!< CTMR0                                            */\n+\tCT32B1_IRQn                   = 12,\t\t/*!< CTMR1                                            */\n+\tCT32B2_IRQn                   = 13,\t\t/*!< CTMR2                                            */\n+\tCT32B3_IRQn                   = 14,\t\t/*!< CTMR3                                            */\n+\tCT32B4_IRQn                   = 15,\t\t/*!< CTMR4                                            */\n+\tSCT0_IRQn                     = 16,\t\t/*!< SCT                                              */\n+\tUART0_IRQn                    = 17,\t\t/*!< UART0                                            */\n+\tUART1_IRQn                    = 18,\t\t/*!< UART1                                            */\n+\tUART2_IRQn                    = 19,\t\t/*!< UART2                                            */\n+\tUART3_IRQn                    = 20,\t\t/*!< UART3                                            */\n+\tI2C0_IRQn                     = 21,\t\t/*!< I2C0                                             */\n+\tI2C1_IRQn                     = 22,\t\t/*!< I2C1                                             */\n+\tI2C2_IRQn                     = 23,\t\t/*!< I2C2                                             */\n+\tSPI0_IRQn                     = 24,\t\t/*!< SPI0                                             */\n+\tSPI1_IRQn                     = 25,\t\t/*!< SPI1                                             */\n+\tADC_SEQA_IRQn                 = 26,\t\t/*!< ADC0 sequence A completion                       */\n+\tADC_SEQB_IRQn                 = 27,\t\t/*!< ADC0 sequence B completion                       */\n+\tADC_THCMP_IRQn                = 28,\t\t/*!< ADC0 threshold compare and error                 */\n+\tRTC_IRQn                      = 29,\t\t/*!< RTC alarm and wake-up interrupts                 */\n+\tReserved30_IRQn               = 30,\t\t/*!< Reserved Interrupt                               */\n+\tMAILBOX_IRQn                  = 31,\t\t/*!< Mailbox                                          */\n+} LPC5410X_M0_IRQn_Type;\n+\n+/**\n+ * @}\n+ */\n+\n+/*\n+ * ==========================================================================\n+ * ----------- Processor and Core Peripheral Section ------------------------\n+ * ==========================================================================\n+ */\n+\n+/** @defgroup CMSIS_5410X_M0_COMMON CHIP: LPC5410X M0 core Cortex CMSIS definitions\n+ * @{\n+ */\n+\n+/* Configuration of the Cortex-M0+ Processor and Core Peripherals */\n+#define __CM0PLUS_REV             0x0001\t/*!< Cortex-M0PLUS Core Revision                      */\n+#define __MPU_PRESENT             0\t\t\t/*!< MPU present or not                               */\n+#define __NVIC_PRIO_BITS          2\t\t\t/*!< Number of Bits used for Priority Levels          */\n+#define __Vendor_SysTickConfig    0\t\t\t/*!< Set to 1 if different SysTick Config is used     */\n+#define __VTOR_PRESENT            1\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CMSIS_5410X_M0_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/cmsis.h ./chip/inc/cmsis.h\n--- a_tnusFF/chip/inc/cmsis.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/cmsis.h\t2016-10-22 23:17:43.536840277 -0300\n@@ -0,0 +1,55 @@\n+/*\n+ * @brief LPC5410x selective CMSIS inclusion file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CMSIS_H_\n+#define __CMSIS_H_\n+\n+#include \"lpc_types.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/* Select correct CMSIS include file based on CORE_* definition */\n+#if defined(CORE_M4)\n+#include \"cmsis_5410x.h\"\n+typedef LPC5410X_IRQn_Type IRQn_Type;\n+#include \"core_cm4.h\"\t\t\t\t\t/*!< Cortex-M4 processor and core peripherals      */\n+#elif defined(CORE_M0PLUS)\n+#include \"cmsis_5410x_m0.h\"\n+typedef LPC5410X_M0_IRQn_Type IRQn_Type;\n+#include \"core_cm0plus.h\"\t\t\t\t/*!< Cortex-M0 Plus processor and core peripherals  */\n+#else\n+#error \"No CORE_* definition is defined\"\n+#endif\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CMSIS_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/core_cm0plus.h ./chip/inc/core_cm0plus.h\n--- a_tnusFF/chip/inc/core_cm0plus.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/core_cm0plus.h\t2016-10-22 23:17:43.540840277 -0300\n@@ -0,0 +1,793 @@\n+/**************************************************************************//**\n+ * @file     core_cm0plus.h\n+ * @brief    CMSIS Cortex-M0+ Core Peripheral Access Layer Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#if defined ( __ICCARM__ )\n+ #pragma system_include  /* treat file as system include file for MISRA check */\n+#endif\n+\n+#ifdef __cplusplus\n+ extern \"C\" {\n+#endif\n+\n+#ifndef __CORE_CM0PLUS_H_GENERIC\n+#define __CORE_CM0PLUS_H_GENERIC\n+\n+/** \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n+  CMSIS violates the following MISRA-C:2004 rules:\n+\n+   \\li Required Rule 8.5, object/function definition in header file.<br>\n+     Function definitions in header files are used to allow 'inlining'.\n+\n+   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n+     Unions are used for effective representation of core registers.\n+\n+   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n+     Function-like macros are used to allow more efficient code.\n+ */\n+\n+\n+/*******************************************************************************\n+ *                 CMSIS definitions\n+ ******************************************************************************/\n+/** \\ingroup Cortex-M0+\n+  @{\n+ */\n+\n+/*  CMSIS CM0P definitions */\n+#define __CM0PLUS_CMSIS_VERSION_MAIN (0x03)                                /*!< [31:16] CMSIS HAL main version   */\n+#define __CM0PLUS_CMSIS_VERSION_SUB  (0x20)                                /*!< [15:0]  CMSIS HAL sub version    */\n+#define __CM0PLUS_CMSIS_VERSION      ((__CM0PLUS_CMSIS_VERSION_MAIN << 16) | \\\n+                                       __CM0PLUS_CMSIS_VERSION_SUB)        /*!< CMSIS HAL version number         */\n+\n+#define __CORTEX_M                (0x00)                                   /*!< Cortex-M Core                    */\n+\n+\n+#if   defined ( __CC_ARM )\n+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */\n+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */\n+  #define __STATIC_INLINE  static __inline\n+\n+#elif defined ( __ICCARM__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler          */\n+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __GNUC__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */\n+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __TASKING__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */\n+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */\n+  #define __STATIC_INLINE  static inline\n+\n+#endif\n+\n+/** __FPU_USED indicates whether an FPU is used or not. This core does not support an FPU at all\n+*/\n+#define __FPU_USED       0\n+\n+#if defined ( __CC_ARM )\n+  #if defined __TARGET_FPU_VFP\n+    #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+  #endif\n+\n+#elif defined ( __ICCARM__ )\n+  #if defined __ARMVFP__\n+    #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+  #endif\n+\n+#elif defined ( __GNUC__ )\n+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n+    #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+  #endif\n+\n+#elif defined ( __TASKING__ )\n+  #if defined __FPU_VFP__\n+    #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+  #endif\n+#endif\n+\n+#include <stdint.h>                      /* standard types definitions                      */\n+#include <core_cmInstr.h>                /* Core Instruction Access                         */\n+#include <core_cmFunc.h>                 /* Core Function Access                            */\n+\n+#endif /* __CORE_CM0PLUS_H_GENERIC */\n+\n+#ifndef __CMSIS_GENERIC\n+\n+#ifndef __CORE_CM0PLUS_H_DEPENDANT\n+#define __CORE_CM0PLUS_H_DEPENDANT\n+\n+/* check device defines and use defaults */\n+#if defined __CHECK_DEVICE_DEFINES\n+  #ifndef __CM0PLUS_REV\n+    #define __CM0PLUS_REV             0x0000\n+    #warning \"__CM0PLUS_REV not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __MPU_PRESENT\n+    #define __MPU_PRESENT             0\n+    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __VTOR_PRESENT\n+    #define __VTOR_PRESENT            0\n+    #warning \"__VTOR_PRESENT not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __NVIC_PRIO_BITS\n+    #define __NVIC_PRIO_BITS          2\n+    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __Vendor_SysTickConfig\n+    #define __Vendor_SysTickConfig    0\n+    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n+  #endif\n+#endif\n+\n+/* IO definitions (access restrictions to peripheral registers) */\n+/**\n+    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n+\n+    <strong>IO Type Qualifiers</strong> are used\n+    \\li to specify the access to peripheral variables.\n+    \\li for automatic generation of peripheral register debug information.\n+*/\n+#ifdef __cplusplus\n+  #define   __I     volatile             /*!< Defines 'read only' permissions                 */\n+#else\n+  #define   __I     volatile const       /*!< Defines 'read only' permissions                 */\n+#endif\n+#define     __O     volatile             /*!< Defines 'write only' permissions                */\n+#define     __IO    volatile             /*!< Defines 'read / write' permissions              */\n+\n+/*@} end of group Cortex-M0+ */\n+\n+\n+\n+/*******************************************************************************\n+ *                 Register Abstraction\n+  Core Register contain:\n+  - Core Register\n+  - Core NVIC Register\n+  - Core SCB Register\n+  - Core SysTick Register\n+  - Core MPU Register\n+ ******************************************************************************/\n+/** \\defgroup CMSIS_core_register Defines and Type Definitions\n+    \\brief Type definitions and defines for Cortex-M processor based devices.\n+*/\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_CORE  Status and Control Registers\n+    \\brief  Core Register type definitions.\n+  @{\n+ */\n+\n+/** \\brief  Union type to access the Application Program Status Register (APSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+#if (__CORTEX_M != 0x04)\n+    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved                           */\n+#else\n+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved                           */\n+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\n+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved                           */\n+#endif\n+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\n+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\n+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\n+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\n+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} APSR_Type;\n+\n+\n+/** \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\n+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved                           */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} IPSR_Type;\n+\n+\n+/** \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\n+#if (__CORTEX_M != 0x04)\n+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved                           */\n+#else\n+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved                           */\n+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\n+    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved                           */\n+#endif\n+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0)          */\n+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0)          */\n+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\n+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\n+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\n+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\n+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} xPSR_Type;\n+\n+\n+/** \\brief  Union type to access the Control Registers (CONTROL).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used                   */\n+    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag           */\n+    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved                           */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} CONTROL_Type;\n+\n+/*@} end of group CMSIS_CORE */\n+\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n+    \\brief      Type definitions for the NVIC Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t ISER[1];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */\n+       uint32_t RESERVED0[31];\n+  __IO uint32_t ICER[1];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register          */\n+       uint32_t RSERVED1[31];\n+  __IO uint32_t ISPR[1];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register           */\n+       uint32_t RESERVED2[31];\n+  __IO uint32_t ICPR[1];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register         */\n+       uint32_t RESERVED3[31];\n+       uint32_t RESERVED4[64];\n+  __IO uint32_t IP[8];                   /*!< Offset: 0x300 (R/W)  Interrupt Priority Register              */\n+}  NVIC_Type;\n+\n+/*@} end of group CMSIS_NVIC */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SCB     System Control Block (SCB)\n+    \\brief      Type definitions for the System Control Block Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Control Block (SCB).\n+ */\n+typedef struct\n+{\n+  __I  uint32_t CPUID;                   /*!< Offset: 0x000 (R/ )  CPUID Base Register                                   */\n+  __IO uint32_t ICSR;                    /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register                  */\n+#if (__VTOR_PRESENT == 1)\n+  __IO uint32_t VTOR;                    /*!< Offset: 0x008 (R/W)  Vector Table Offset Register                          */\n+#else\n+       uint32_t RESERVED0;\n+#endif\n+  __IO uint32_t AIRCR;                   /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register      */\n+  __IO uint32_t SCR;                     /*!< Offset: 0x010 (R/W)  System Control Register                               */\n+  __IO uint32_t CCR;                     /*!< Offset: 0x014 (R/W)  Configuration Control Register                        */\n+       uint32_t RESERVED1;\n+  __IO uint32_t SHP[2];                  /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED   */\n+  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State Register             */\n+} SCB_Type;\n+\n+/* SCB CPUID Register Definitions */\n+#define SCB_CPUID_IMPLEMENTER_Pos          24                                             /*!< SCB CPUID: IMPLEMENTER Position */\n+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n+\n+#define SCB_CPUID_VARIANT_Pos              20                                             /*!< SCB CPUID: VARIANT Position */\n+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n+\n+#define SCB_CPUID_ARCHITECTURE_Pos         16                                             /*!< SCB CPUID: ARCHITECTURE Position */\n+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n+\n+#define SCB_CPUID_PARTNO_Pos                4                                             /*!< SCB CPUID: PARTNO Position */\n+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n+\n+#define SCB_CPUID_REVISION_Pos              0                                             /*!< SCB CPUID: REVISION Position */\n+#define SCB_CPUID_REVISION_Msk             (0xFUL << SCB_CPUID_REVISION_Pos)              /*!< SCB CPUID: REVISION Mask */\n+\n+/* SCB Interrupt Control State Register Definitions */\n+#define SCB_ICSR_NMIPENDSET_Pos            31                                             /*!< SCB ICSR: NMIPENDSET Position */\n+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n+\n+#define SCB_ICSR_PENDSVSET_Pos             28                                             /*!< SCB ICSR: PENDSVSET Position */\n+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n+\n+#define SCB_ICSR_PENDSVCLR_Pos             27                                             /*!< SCB ICSR: PENDSVCLR Position */\n+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n+\n+#define SCB_ICSR_PENDSTSET_Pos             26                                             /*!< SCB ICSR: PENDSTSET Position */\n+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n+\n+#define SCB_ICSR_PENDSTCLR_Pos             25                                             /*!< SCB ICSR: PENDSTCLR Position */\n+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n+\n+#define SCB_ICSR_ISRPREEMPT_Pos            23                                             /*!< SCB ICSR: ISRPREEMPT Position */\n+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n+\n+#define SCB_ICSR_ISRPENDING_Pos            22                                             /*!< SCB ICSR: ISRPENDING Position */\n+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n+\n+#define SCB_ICSR_VECTPENDING_Pos           12                                             /*!< SCB ICSR: VECTPENDING Position */\n+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n+\n+#define SCB_ICSR_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */\n+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE Mask */\n+\n+#if (__VTOR_PRESENT == 1)\n+/* SCB Interrupt Control State Register Definitions */\n+#define SCB_VTOR_TBLOFF_Pos                 8                                             /*!< SCB VTOR: TBLOFF Position */\n+#define SCB_VTOR_TBLOFF_Msk                (0xFFFFFFUL << SCB_VTOR_TBLOFF_Pos)            /*!< SCB VTOR: TBLOFF Mask */\n+#endif\n+\n+/* SCB Application Interrupt and Reset Control Register Definitions */\n+#define SCB_AIRCR_VECTKEY_Pos              16                                             /*!< SCB AIRCR: VECTKEY Position */\n+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n+\n+#define SCB_AIRCR_VECTKEYSTAT_Pos          16                                             /*!< SCB AIRCR: VECTKEYSTAT Position */\n+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n+\n+#define SCB_AIRCR_ENDIANESS_Pos            15                                             /*!< SCB AIRCR: ENDIANESS Position */\n+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n+\n+#define SCB_AIRCR_SYSRESETREQ_Pos           2                                             /*!< SCB AIRCR: SYSRESETREQ Position */\n+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n+\n+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1                                             /*!< SCB AIRCR: VECTCLRACTIVE Position */\n+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n+\n+/* SCB System Control Register Definitions */\n+#define SCB_SCR_SEVONPEND_Pos               4                                             /*!< SCB SCR: SEVONPEND Position */\n+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n+\n+#define SCB_SCR_SLEEPDEEP_Pos               2                                             /*!< SCB SCR: SLEEPDEEP Position */\n+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n+\n+#define SCB_SCR_SLEEPONEXIT_Pos             1                                             /*!< SCB SCR: SLEEPONEXIT Position */\n+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n+\n+/* SCB Configuration Control Register Definitions */\n+#define SCB_CCR_STKALIGN_Pos                9                                             /*!< SCB CCR: STKALIGN Position */\n+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n+\n+#define SCB_CCR_UNALIGN_TRP_Pos             3                                             /*!< SCB CCR: UNALIGN_TRP Position */\n+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n+\n+/* SCB System Handler Control and State Register Definitions */\n+#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */\n+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n+\n+/*@} end of group CMSIS_SCB */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n+    \\brief      Type definitions for the System Timer Registers.\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Timer (SysTick).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n+  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */\n+  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */\n+  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */\n+} SysTick_Type;\n+\n+/* SysTick Control / Status Register Definitions */\n+#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */\n+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n+\n+#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */\n+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n+\n+#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */\n+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n+\n+#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */\n+#define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */\n+\n+/* SysTick Reload Register Definitions */\n+#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */\n+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */\n+\n+/* SysTick Current Register Definitions */\n+#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */\n+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */\n+\n+/* SysTick Calibration Register Definitions */\n+#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */\n+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n+\n+#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */\n+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n+\n+#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */\n+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */\n+\n+/*@} end of group CMSIS_SysTick */\n+\n+#if (__MPU_PRESENT == 1)\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n+    \\brief      Type definitions for the Memory Protection Unit (MPU)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Memory Protection Unit (MPU).\n+ */\n+typedef struct\n+{\n+  __I  uint32_t TYPE;                    /*!< Offset: 0x000 (R/ )  MPU Type Register                              */\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x004 (R/W)  MPU Control Register                           */\n+  __IO uint32_t RNR;                     /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register                     */\n+  __IO uint32_t RBAR;                    /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register               */\n+  __IO uint32_t RASR;                    /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register         */\n+} MPU_Type;\n+\n+/* MPU Type Register */\n+#define MPU_TYPE_IREGION_Pos               16                                             /*!< MPU TYPE: IREGION Position */\n+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n+\n+#define MPU_TYPE_DREGION_Pos                8                                             /*!< MPU TYPE: DREGION Position */\n+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n+\n+#define MPU_TYPE_SEPARATE_Pos               0                                             /*!< MPU TYPE: SEPARATE Position */\n+#define MPU_TYPE_SEPARATE_Msk              (1UL << MPU_TYPE_SEPARATE_Pos)                 /*!< MPU TYPE: SEPARATE Mask */\n+\n+/* MPU Control Register */\n+#define MPU_CTRL_PRIVDEFENA_Pos             2                                             /*!< MPU CTRL: PRIVDEFENA Position */\n+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n+\n+#define MPU_CTRL_HFNMIENA_Pos               1                                             /*!< MPU CTRL: HFNMIENA Position */\n+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n+\n+#define MPU_CTRL_ENABLE_Pos                 0                                             /*!< MPU CTRL: ENABLE Position */\n+#define MPU_CTRL_ENABLE_Msk                (1UL << MPU_CTRL_ENABLE_Pos)                   /*!< MPU CTRL: ENABLE Mask */\n+\n+/* MPU Region Number Register */\n+#define MPU_RNR_REGION_Pos                  0                                             /*!< MPU RNR: REGION Position */\n+#define MPU_RNR_REGION_Msk                 (0xFFUL << MPU_RNR_REGION_Pos)                 /*!< MPU RNR: REGION Mask */\n+\n+/* MPU Region Base Address Register */\n+#define MPU_RBAR_ADDR_Pos                   8                                             /*!< MPU RBAR: ADDR Position */\n+#define MPU_RBAR_ADDR_Msk                  (0xFFFFFFUL << MPU_RBAR_ADDR_Pos)              /*!< MPU RBAR: ADDR Mask */\n+\n+#define MPU_RBAR_VALID_Pos                  4                                             /*!< MPU RBAR: VALID Position */\n+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n+\n+#define MPU_RBAR_REGION_Pos                 0                                             /*!< MPU RBAR: REGION Position */\n+#define MPU_RBAR_REGION_Msk                (0xFUL << MPU_RBAR_REGION_Pos)                 /*!< MPU RBAR: REGION Mask */\n+\n+/* MPU Region Attribute and Size Register */\n+#define MPU_RASR_ATTRS_Pos                 16                                             /*!< MPU RASR: MPU Region Attribute field Position */\n+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n+\n+#define MPU_RASR_XN_Pos                    28                                             /*!< MPU RASR: ATTRS.XN Position */\n+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n+\n+#define MPU_RASR_AP_Pos                    24                                             /*!< MPU RASR: ATTRS.AP Position */\n+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n+\n+#define MPU_RASR_TEX_Pos                   19                                             /*!< MPU RASR: ATTRS.TEX Position */\n+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n+\n+#define MPU_RASR_S_Pos                     18                                             /*!< MPU RASR: ATTRS.S Position */\n+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n+\n+#define MPU_RASR_C_Pos                     17                                             /*!< MPU RASR: ATTRS.C Position */\n+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n+\n+#define MPU_RASR_B_Pos                     16                                             /*!< MPU RASR: ATTRS.B Position */\n+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n+\n+#define MPU_RASR_SRD_Pos                    8                                             /*!< MPU RASR: Sub-Region Disable Position */\n+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n+\n+#define MPU_RASR_SIZE_Pos                   1                                             /*!< MPU RASR: Region Size Field Position */\n+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n+\n+#define MPU_RASR_ENABLE_Pos                 0                                             /*!< MPU RASR: Region enable bit Position */\n+#define MPU_RASR_ENABLE_Msk                (1UL << MPU_RASR_ENABLE_Pos)                   /*!< MPU RASR: Region enable bit Disable Mask */\n+\n+/*@} end of group CMSIS_MPU */\n+#endif\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n+    \\brief      Cortex-M0+ Core Debug Registers (DCB registers, SHCSR, and DFSR)\n+                are only accessible over DAP and not via processor. Therefore\n+                they are not covered by the Cortex-M0 header file.\n+  @{\n+ */\n+/*@} end of group CMSIS_CoreDebug */\n+\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_core_base     Core Definitions\n+    \\brief      Definitions for base addresses, unions, and structures.\n+  @{\n+ */\n+\n+/* Memory mapping of Cortex-M0+ Hardware */\n+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */\n+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address              */\n+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address                 */\n+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */\n+\n+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct           */\n+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct       */\n+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct          */\n+\n+#if (__MPU_PRESENT == 1)\n+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit             */\n+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit             */\n+#endif\n+\n+/*@} */\n+\n+\n+\n+/*******************************************************************************\n+ *                Hardware Abstraction Layer\n+  Core Function Interface contains:\n+  - Core NVIC Functions\n+  - Core SysTick Functions\n+  - Core Register Access Functions\n+ ******************************************************************************/\n+/** \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n+*/\n+\n+\n+\n+/* ##########################   NVIC functions  #################################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n+    \\brief      Functions that manage interrupts and exceptions via the NVIC.\n+    @{\n+ */\n+\n+/* Interrupt Priorities are WORD accessible only under ARMv6M                   */\n+/* The following MACROS handle generation of the register offset and byte masks */\n+#define _BIT_SHIFT(IRQn)         (  (((uint32_t)(IRQn)       )    &  0x03) * 8 )\n+#define _SHP_IDX(IRQn)           ( ((((uint32_t)(IRQn) & 0x0F)-8) >>    2)     )\n+#define _IP_IDX(IRQn)            (   ((uint32_t)(IRQn)            >>    2)     )\n+\n+\n+/** \\brief  Enable External Interrupt\n+\n+    The function enables a device-specific interrupt in the NVIC interrupt controller.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F));\n+}\n+\n+\n+/** \\brief  Disable External Interrupt\n+\n+    The function disables a device-specific interrupt in the NVIC interrupt controller.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F));\n+}\n+\n+\n+/** \\brief  Get Pending Interrupt\n+\n+    The function reads the pending register in the NVIC and returns the pending bit\n+    for the specified interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+\n+    \\return             0  Interrupt status is not pending.\n+    \\return             1  Interrupt status is pending.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)\n+{\n+  return((uint32_t) ((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0));\n+}\n+\n+\n+/** \\brief  Set Pending Interrupt\n+\n+    The function sets the pending bit of an external interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F));\n+}\n+\n+\n+/** \\brief  Clear Pending Interrupt\n+\n+    The function clears the pending bit of an external interrupt.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */\n+}\n+\n+\n+/** \\brief  Set Interrupt Priority\n+\n+    The function sets the priority of an interrupt.\n+\n+    \\note The priority cannot be set for every core interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+    \\param [in]  priority  Priority to set.\n+ */\n+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n+{\n+  if(IRQn < 0) {\n+    SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |\n+        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }\n+  else {\n+    NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |\n+        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }\n+}\n+\n+\n+/** \\brief  Get Interrupt Priority\n+\n+    The function reads the priority of an interrupt. The interrupt\n+    number can be positive to specify an external (device specific)\n+    interrupt, or negative to specify an internal (core) interrupt.\n+\n+\n+    \\param [in]   IRQn  Interrupt number.\n+    \\return             Interrupt Priority. Value is aligned automatically to the implemented\n+                        priority bits of the microcontroller.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)\n+{\n+\n+  if(IRQn < 0) {\n+    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M0 system interrupts */\n+  else {\n+    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */\n+}\n+\n+\n+/** \\brief  System Reset\n+\n+    The function initiates a system reset request to reset the MCU.\n+ */\n+__STATIC_INLINE void NVIC_SystemReset(void)\n+{\n+  __DSB();                                                     /* Ensure all outstanding memory accesses included\n+                                                                  buffered write are completed before reset */\n+  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |\n+                 SCB_AIRCR_SYSRESETREQ_Msk);\n+  __DSB();                                                     /* Ensure completion of memory access */\n+  while(1);                                                    /* wait until reset */\n+}\n+\n+/*@} end of CMSIS_Core_NVICFunctions */\n+\n+\n+\n+/* ##################################    SysTick function  ############################################ */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n+    \\brief      Functions that configure the System.\n+  @{\n+ */\n+\n+#if (__Vendor_SysTickConfig == 0)\n+\n+/** \\brief  System Tick Configuration\n+\n+    The function initializes the System Timer and its interrupt, and starts the System Tick Timer.\n+    Counter is in free running mode to generate periodic interrupts.\n+\n+    \\param [in]  ticks  Number of ticks between two interrupts.\n+\n+    \\return          0  Function succeeded.\n+    \\return          1  Function failed.\n+\n+    \\note     When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n+    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n+    must contain a vendor-specific implementation of this function.\n+\n+ */\n+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n+{\n+  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */\n+\n+  SysTick->LOAD  = ticks - 1;                                  /* set reload register */\n+  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */\n+  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */\n+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n+                   SysTick_CTRL_TICKINT_Msk   |\n+                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */\n+  return (0);                                                  /* Function successful */\n+}\n+\n+#endif\n+\n+/*@} end of CMSIS_Core_SysTickFunctions */\n+\n+\n+\n+\n+#endif /* __CORE_CM0PLUS_H_DEPENDANT */\n+\n+#endif /* __CMSIS_GENERIC */\n+\n+#ifdef __cplusplus\n+}\n+#endif\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/core_cm4.h ./chip/inc/core_cm4.h\n--- a_tnusFF/chip/inc/core_cm4.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/core_cm4.h\t2016-10-22 23:17:43.544840277 -0300\n@@ -0,0 +1,1772 @@\n+/**************************************************************************//**\n+ * @file     core_cm4.h\n+ * @brief    CMSIS Cortex-M4 Core Peripheral Access Layer Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#if defined ( __ICCARM__ )\n+ #pragma system_include  /* treat file as system include file for MISRA check */\n+#endif\n+\n+#ifdef __cplusplus\n+ extern \"C\" {\n+#endif\n+\n+#ifndef __CORE_CM4_H_GENERIC\n+#define __CORE_CM4_H_GENERIC\n+\n+/** \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n+  CMSIS violates the following MISRA-C:2004 rules:\n+\n+   \\li Required Rule 8.5, object/function definition in header file.<br>\n+     Function definitions in header files are used to allow 'inlining'.\n+\n+   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n+     Unions are used for effective representation of core registers.\n+\n+   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n+     Function-like macros are used to allow more efficient code.\n+ */\n+\n+\n+/*******************************************************************************\n+ *                 CMSIS definitions\n+ ******************************************************************************/\n+/** \\ingroup Cortex_M4\n+  @{\n+ */\n+\n+/*  CMSIS CM4 definitions */\n+#define __CM4_CMSIS_VERSION_MAIN  (0x03)                                   /*!< [31:16] CMSIS HAL main version   */\n+#define __CM4_CMSIS_VERSION_SUB   (0x20)                                   /*!< [15:0]  CMSIS HAL sub version    */\n+#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16) | \\\n+                                    __CM4_CMSIS_VERSION_SUB          )     /*!< CMSIS HAL version number         */\n+\n+#define __CORTEX_M                (0x04)                                   /*!< Cortex-M Core                    */\n+\n+\n+#if   defined ( __CC_ARM )\n+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */\n+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */\n+  #define __STATIC_INLINE  static __inline\n+\n+#elif defined ( __ICCARM__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler          */\n+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __TMS470__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler       */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __GNUC__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */\n+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __TASKING__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */\n+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */\n+  #define __STATIC_INLINE  static inline\n+\n+#endif\n+\n+/** __FPU_USED indicates whether an FPU is used or not. For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n+*/\n+#if defined ( __CC_ARM )\n+  #if defined __TARGET_FPU_VFP\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __ICCARM__ )\n+  #if defined __ARMVFP__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __TMS470__ )\n+  #if defined __TI_VFP_SUPPORT__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __GNUC__ )\n+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __TASKING__ )\n+  #if defined __FPU_VFP__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+#endif\n+\n+#include <stdint.h>                      /* standard types definitions                      */\n+#include <core_cmInstr.h>                /* Core Instruction Access                         */\n+#include <core_cmFunc.h>                 /* Core Function Access                            */\n+#include <core_cm4_simd.h>               /* Compiler specific SIMD Intrinsics               */\n+\n+#endif /* __CORE_CM4_H_GENERIC */\n+\n+#ifndef __CMSIS_GENERIC\n+\n+#ifndef __CORE_CM4_H_DEPENDANT\n+#define __CORE_CM4_H_DEPENDANT\n+\n+/* check device defines and use defaults */\n+#if defined __CHECK_DEVICE_DEFINES\n+  #ifndef __CM4_REV\n+    #define __CM4_REV               0x0000\n+    #warning \"__CM4_REV not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __FPU_PRESENT\n+    #define __FPU_PRESENT             0\n+    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __MPU_PRESENT\n+    #define __MPU_PRESENT             0\n+    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __NVIC_PRIO_BITS\n+    #define __NVIC_PRIO_BITS          4\n+    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __Vendor_SysTickConfig\n+    #define __Vendor_SysTickConfig    0\n+    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n+  #endif\n+#endif\n+\n+/* IO definitions (access restrictions to peripheral registers) */\n+/**\n+    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n+\n+    <strong>IO Type Qualifiers</strong> are used\n+    \\li to specify the access to peripheral variables.\n+    \\li for automatic generation of peripheral register debug information.\n+*/\n+#ifdef __cplusplus\n+  #define   __I     volatile             /*!< Defines 'read only' permissions                 */\n+#else\n+  #define   __I     volatile const       /*!< Defines 'read only' permissions                 */\n+#endif\n+#define     __O     volatile             /*!< Defines 'write only' permissions                */\n+#define     __IO    volatile             /*!< Defines 'read / write' permissions              */\n+\n+/*@} end of group Cortex_M4 */\n+\n+\n+\n+/*******************************************************************************\n+ *                 Register Abstraction\n+  Core Register contain:\n+  - Core Register\n+  - Core NVIC Register\n+  - Core SCB Register\n+  - Core SysTick Register\n+  - Core Debug Register\n+  - Core MPU Register\n+  - Core FPU Register\n+ ******************************************************************************/\n+/** \\defgroup CMSIS_core_register Defines and Type Definitions\n+    \\brief Type definitions and defines for Cortex-M processor based devices.\n+*/\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_CORE  Status and Control Registers\n+    \\brief  Core Register type definitions.\n+  @{\n+ */\n+\n+/** \\brief  Union type to access the Application Program Status Register (APSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+#if (__CORTEX_M != 0x04)\n+    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved                           */\n+#else\n+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved                           */\n+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\n+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved                           */\n+#endif\n+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\n+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\n+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\n+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\n+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} APSR_Type;\n+\n+\n+/** \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\n+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved                           */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} IPSR_Type;\n+\n+\n+/** \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\n+#if (__CORTEX_M != 0x04)\n+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved                           */\n+#else\n+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved                           */\n+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\n+    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved                           */\n+#endif\n+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0)          */\n+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0)          */\n+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\n+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\n+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\n+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\n+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} xPSR_Type;\n+\n+\n+/** \\brief  Union type to access the Control Registers (CONTROL).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used                   */\n+    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag           */\n+    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved                           */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} CONTROL_Type;\n+\n+/*@} end of group CMSIS_CORE */\n+\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n+    \\brief      Type definitions for the NVIC Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t ISER[8];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */\n+       uint32_t RESERVED0[24];\n+  __IO uint32_t ICER[8];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register         */\n+       uint32_t RSERVED1[24];\n+  __IO uint32_t ISPR[8];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register          */\n+       uint32_t RESERVED2[24];\n+  __IO uint32_t ICPR[8];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register        */\n+       uint32_t RESERVED3[24];\n+  __IO uint32_t IABR[8];                 /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register           */\n+       uint32_t RESERVED4[56];\n+  __IO uint8_t  IP[240];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n+       uint32_t RESERVED5[644];\n+  __O  uint32_t STIR;                    /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register     */\n+}  NVIC_Type;\n+\n+/* Software Triggered Interrupt Register Definitions */\n+#define NVIC_STIR_INTID_Pos                 0                                          /*!< STIR: INTLINESNUM Position */\n+#define NVIC_STIR_INTID_Msk                (0x1FFUL << NVIC_STIR_INTID_Pos)            /*!< STIR: INTLINESNUM Mask */\n+\n+/*@} end of group CMSIS_NVIC */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SCB     System Control Block (SCB)\n+    \\brief      Type definitions for the System Control Block Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Control Block (SCB).\n+ */\n+typedef struct\n+{\n+  __I  uint32_t CPUID;                   /*!< Offset: 0x000 (R/ )  CPUID Base Register                                   */\n+  __IO uint32_t ICSR;                    /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register                  */\n+  __IO uint32_t VTOR;                    /*!< Offset: 0x008 (R/W)  Vector Table Offset Register                          */\n+  __IO uint32_t AIRCR;                   /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register      */\n+  __IO uint32_t SCR;                     /*!< Offset: 0x010 (R/W)  System Control Register                               */\n+  __IO uint32_t CCR;                     /*!< Offset: 0x014 (R/W)  Configuration Control Register                        */\n+  __IO uint8_t  SHP[12];                 /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n+  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State Register             */\n+  __IO uint32_t CFSR;                    /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register                    */\n+  __IO uint32_t HFSR;                    /*!< Offset: 0x02C (R/W)  HardFault Status Register                             */\n+  __IO uint32_t DFSR;                    /*!< Offset: 0x030 (R/W)  Debug Fault Status Register                           */\n+  __IO uint32_t MMFAR;                   /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register                      */\n+  __IO uint32_t BFAR;                    /*!< Offset: 0x038 (R/W)  BusFault Address Register                             */\n+  __IO uint32_t AFSR;                    /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register                       */\n+  __I  uint32_t PFR[2];                  /*!< Offset: 0x040 (R/ )  Processor Feature Register                            */\n+  __I  uint32_t DFR;                     /*!< Offset: 0x048 (R/ )  Debug Feature Register                                */\n+  __I  uint32_t ADR;                     /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register                            */\n+  __I  uint32_t MMFR[4];                 /*!< Offset: 0x050 (R/ )  Memory Model Feature Register                         */\n+  __I  uint32_t ISAR[5];                 /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register                   */\n+       uint32_t RESERVED0[5];\n+  __IO uint32_t CPACR;                   /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register                   */\n+} SCB_Type;\n+\n+/* SCB CPUID Register Definitions */\n+#define SCB_CPUID_IMPLEMENTER_Pos          24                                             /*!< SCB CPUID: IMPLEMENTER Position */\n+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n+\n+#define SCB_CPUID_VARIANT_Pos              20                                             /*!< SCB CPUID: VARIANT Position */\n+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n+\n+#define SCB_CPUID_ARCHITECTURE_Pos         16                                             /*!< SCB CPUID: ARCHITECTURE Position */\n+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n+\n+#define SCB_CPUID_PARTNO_Pos                4                                             /*!< SCB CPUID: PARTNO Position */\n+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n+\n+#define SCB_CPUID_REVISION_Pos              0                                             /*!< SCB CPUID: REVISION Position */\n+#define SCB_CPUID_REVISION_Msk             (0xFUL << SCB_CPUID_REVISION_Pos)              /*!< SCB CPUID: REVISION Mask */\n+\n+/* SCB Interrupt Control State Register Definitions */\n+#define SCB_ICSR_NMIPENDSET_Pos            31                                             /*!< SCB ICSR: NMIPENDSET Position */\n+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n+\n+#define SCB_ICSR_PENDSVSET_Pos             28                                             /*!< SCB ICSR: PENDSVSET Position */\n+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n+\n+#define SCB_ICSR_PENDSVCLR_Pos             27                                             /*!< SCB ICSR: PENDSVCLR Position */\n+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n+\n+#define SCB_ICSR_PENDSTSET_Pos             26                                             /*!< SCB ICSR: PENDSTSET Position */\n+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n+\n+#define SCB_ICSR_PENDSTCLR_Pos             25                                             /*!< SCB ICSR: PENDSTCLR Position */\n+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n+\n+#define SCB_ICSR_ISRPREEMPT_Pos            23                                             /*!< SCB ICSR: ISRPREEMPT Position */\n+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n+\n+#define SCB_ICSR_ISRPENDING_Pos            22                                             /*!< SCB ICSR: ISRPENDING Position */\n+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n+\n+#define SCB_ICSR_VECTPENDING_Pos           12                                             /*!< SCB ICSR: VECTPENDING Position */\n+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n+\n+#define SCB_ICSR_RETTOBASE_Pos             11                                             /*!< SCB ICSR: RETTOBASE Position */\n+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n+\n+#define SCB_ICSR_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */\n+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE Mask */\n+\n+/* SCB Vector Table Offset Register Definitions */\n+#define SCB_VTOR_TBLOFF_Pos                 7                                             /*!< SCB VTOR: TBLOFF Position */\n+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n+\n+/* SCB Application Interrupt and Reset Control Register Definitions */\n+#define SCB_AIRCR_VECTKEY_Pos              16                                             /*!< SCB AIRCR: VECTKEY Position */\n+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n+\n+#define SCB_AIRCR_VECTKEYSTAT_Pos          16                                             /*!< SCB AIRCR: VECTKEYSTAT Position */\n+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n+\n+#define SCB_AIRCR_ENDIANESS_Pos            15                                             /*!< SCB AIRCR: ENDIANESS Position */\n+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n+\n+#define SCB_AIRCR_PRIGROUP_Pos              8                                             /*!< SCB AIRCR: PRIGROUP Position */\n+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n+\n+#define SCB_AIRCR_SYSRESETREQ_Pos           2                                             /*!< SCB AIRCR: SYSRESETREQ Position */\n+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n+\n+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1                                             /*!< SCB AIRCR: VECTCLRACTIVE Position */\n+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n+\n+#define SCB_AIRCR_VECTRESET_Pos             0                                             /*!< SCB AIRCR: VECTRESET Position */\n+#define SCB_AIRCR_VECTRESET_Msk            (1UL << SCB_AIRCR_VECTRESET_Pos)               /*!< SCB AIRCR: VECTRESET Mask */\n+\n+/* SCB System Control Register Definitions */\n+#define SCB_SCR_SEVONPEND_Pos               4                                             /*!< SCB SCR: SEVONPEND Position */\n+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n+\n+#define SCB_SCR_SLEEPDEEP_Pos               2                                             /*!< SCB SCR: SLEEPDEEP Position */\n+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n+\n+#define SCB_SCR_SLEEPONEXIT_Pos             1                                             /*!< SCB SCR: SLEEPONEXIT Position */\n+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n+\n+/* SCB Configuration Control Register Definitions */\n+#define SCB_CCR_STKALIGN_Pos                9                                             /*!< SCB CCR: STKALIGN Position */\n+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n+\n+#define SCB_CCR_BFHFNMIGN_Pos               8                                             /*!< SCB CCR: BFHFNMIGN Position */\n+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n+\n+#define SCB_CCR_DIV_0_TRP_Pos               4                                             /*!< SCB CCR: DIV_0_TRP Position */\n+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n+\n+#define SCB_CCR_UNALIGN_TRP_Pos             3                                             /*!< SCB CCR: UNALIGN_TRP Position */\n+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n+\n+#define SCB_CCR_USERSETMPEND_Pos            1                                             /*!< SCB CCR: USERSETMPEND Position */\n+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n+\n+#define SCB_CCR_NONBASETHRDENA_Pos          0                                             /*!< SCB CCR: NONBASETHRDENA Position */\n+#define SCB_CCR_NONBASETHRDENA_Msk         (1UL << SCB_CCR_NONBASETHRDENA_Pos)            /*!< SCB CCR: NONBASETHRDENA Mask */\n+\n+/* SCB System Handler Control and State Register Definitions */\n+#define SCB_SHCSR_USGFAULTENA_Pos          18                                             /*!< SCB SHCSR: USGFAULTENA Position */\n+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n+\n+#define SCB_SHCSR_BUSFAULTENA_Pos          17                                             /*!< SCB SHCSR: BUSFAULTENA Position */\n+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n+\n+#define SCB_SHCSR_MEMFAULTENA_Pos          16                                             /*!< SCB SHCSR: MEMFAULTENA Position */\n+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n+\n+#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */\n+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n+\n+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14                                             /*!< SCB SHCSR: BUSFAULTPENDED Position */\n+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13                                             /*!< SCB SHCSR: MEMFAULTPENDED Position */\n+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_USGFAULTPENDED_Pos       12                                             /*!< SCB SHCSR: USGFAULTPENDED Position */\n+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_SYSTICKACT_Pos           11                                             /*!< SCB SHCSR: SYSTICKACT Position */\n+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n+\n+#define SCB_SHCSR_PENDSVACT_Pos            10                                             /*!< SCB SHCSR: PENDSVACT Position */\n+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n+\n+#define SCB_SHCSR_MONITORACT_Pos            8                                             /*!< SCB SHCSR: MONITORACT Position */\n+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n+\n+#define SCB_SHCSR_SVCALLACT_Pos             7                                             /*!< SCB SHCSR: SVCALLACT Position */\n+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n+\n+#define SCB_SHCSR_USGFAULTACT_Pos           3                                             /*!< SCB SHCSR: USGFAULTACT Position */\n+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n+\n+#define SCB_SHCSR_BUSFAULTACT_Pos           1                                             /*!< SCB SHCSR: BUSFAULTACT Position */\n+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n+\n+#define SCB_SHCSR_MEMFAULTACT_Pos           0                                             /*!< SCB SHCSR: MEMFAULTACT Position */\n+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL << SCB_SHCSR_MEMFAULTACT_Pos)             /*!< SCB SHCSR: MEMFAULTACT Mask */\n+\n+/* SCB Configurable Fault Status Registers Definitions */\n+#define SCB_CFSR_USGFAULTSR_Pos            16                                             /*!< SCB CFSR: Usage Fault Status Register Position */\n+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n+\n+#define SCB_CFSR_BUSFAULTSR_Pos             8                                             /*!< SCB CFSR: Bus Fault Status Register Position */\n+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n+\n+#define SCB_CFSR_MEMFAULTSR_Pos             0                                             /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos)            /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n+\n+/* SCB Hard Fault Status Registers Definitions */\n+#define SCB_HFSR_DEBUGEVT_Pos              31                                             /*!< SCB HFSR: DEBUGEVT Position */\n+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n+\n+#define SCB_HFSR_FORCED_Pos                30                                             /*!< SCB HFSR: FORCED Position */\n+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n+\n+#define SCB_HFSR_VECTTBL_Pos                1                                             /*!< SCB HFSR: VECTTBL Position */\n+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n+\n+/* SCB Debug Fault Status Register Definitions */\n+#define SCB_DFSR_EXTERNAL_Pos               4                                             /*!< SCB DFSR: EXTERNAL Position */\n+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n+\n+#define SCB_DFSR_VCATCH_Pos                 3                                             /*!< SCB DFSR: VCATCH Position */\n+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n+\n+#define SCB_DFSR_DWTTRAP_Pos                2                                             /*!< SCB DFSR: DWTTRAP Position */\n+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n+\n+#define SCB_DFSR_BKPT_Pos                   1                                             /*!< SCB DFSR: BKPT Position */\n+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n+\n+#define SCB_DFSR_HALTED_Pos                 0                                             /*!< SCB DFSR: HALTED Position */\n+#define SCB_DFSR_HALTED_Msk                (1UL << SCB_DFSR_HALTED_Pos)                   /*!< SCB DFSR: HALTED Mask */\n+\n+/*@} end of group CMSIS_SCB */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n+    \\brief      Type definitions for the System Control and ID Register not in the SCB\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Control and ID Register not in the SCB.\n+ */\n+typedef struct\n+{\n+       uint32_t RESERVED0[1];\n+  __I  uint32_t ICTR;                    /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register      */\n+  __IO uint32_t ACTLR;                   /*!< Offset: 0x008 (R/W)  Auxiliary Control Register              */\n+} SCnSCB_Type;\n+\n+/* Interrupt Controller Type Register Definitions */\n+#define SCnSCB_ICTR_INTLINESNUM_Pos         0                                          /*!< ICTR: INTLINESNUM Position */\n+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos)      /*!< ICTR: INTLINESNUM Mask */\n+\n+/* Auxiliary Control Register Definitions */\n+#define SCnSCB_ACTLR_DISOOFP_Pos            9                                          /*!< ACTLR: DISOOFP Position */\n+#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */\n+\n+#define SCnSCB_ACTLR_DISFPCA_Pos            8                                          /*!< ACTLR: DISFPCA Position */\n+#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */\n+\n+#define SCnSCB_ACTLR_DISFOLD_Pos            2                                          /*!< ACTLR: DISFOLD Position */\n+#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n+\n+#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1                                          /*!< ACTLR: DISDEFWBUF Position */\n+#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n+\n+#define SCnSCB_ACTLR_DISMCYCINT_Pos         0                                          /*!< ACTLR: DISMCYCINT Position */\n+#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos)        /*!< ACTLR: DISMCYCINT Mask */\n+\n+/*@} end of group CMSIS_SCnotSCB */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n+    \\brief      Type definitions for the System Timer Registers.\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Timer (SysTick).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n+  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */\n+  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */\n+  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */\n+} SysTick_Type;\n+\n+/* SysTick Control / Status Register Definitions */\n+#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */\n+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n+\n+#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */\n+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n+\n+#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */\n+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n+\n+#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */\n+#define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */\n+\n+/* SysTick Reload Register Definitions */\n+#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */\n+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */\n+\n+/* SysTick Current Register Definitions */\n+#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */\n+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */\n+\n+/* SysTick Calibration Register Definitions */\n+#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */\n+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n+\n+#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */\n+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n+\n+#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */\n+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */\n+\n+/*@} end of group CMSIS_SysTick */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n+    \\brief      Type definitions for the Instrumentation Trace Macrocell (ITM)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n+ */\n+typedef struct\n+{\n+  __O  union\n+  {\n+    __O  uint8_t    u8;                  /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit                   */\n+    __O  uint16_t   u16;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit                  */\n+    __O  uint32_t   u32;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit                  */\n+  }  PORT [32];                          /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers               */\n+       uint32_t RESERVED0[864];\n+  __IO uint32_t TER;                     /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register                 */\n+       uint32_t RESERVED1[15];\n+  __IO uint32_t TPR;                     /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register              */\n+       uint32_t RESERVED2[15];\n+  __IO uint32_t TCR;                     /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register                */\n+       uint32_t RESERVED3[29];\n+  __O  uint32_t IWR;                     /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register            */\n+  __I  uint32_t IRR;                     /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register             */\n+  __IO uint32_t IMCR;                    /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register     */\n+       uint32_t RESERVED4[43];\n+  __O  uint32_t LAR;                     /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register                  */\n+  __I  uint32_t LSR;                     /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register                  */\n+       uint32_t RESERVED5[6];\n+  __I  uint32_t PID4;                    /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n+  __I  uint32_t PID5;                    /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n+  __I  uint32_t PID6;                    /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n+  __I  uint32_t PID7;                    /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n+  __I  uint32_t PID0;                    /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n+  __I  uint32_t PID1;                    /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n+  __I  uint32_t PID2;                    /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n+  __I  uint32_t PID3;                    /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n+  __I  uint32_t CID0;                    /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n+  __I  uint32_t CID1;                    /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n+  __I  uint32_t CID2;                    /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n+  __I  uint32_t CID3;                    /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n+} ITM_Type;\n+\n+/* ITM Trace Privilege Register Definitions */\n+#define ITM_TPR_PRIVMASK_Pos                0                                             /*!< ITM TPR: PRIVMASK Position */\n+#define ITM_TPR_PRIVMASK_Msk               (0xFUL << ITM_TPR_PRIVMASK_Pos)                /*!< ITM TPR: PRIVMASK Mask */\n+\n+/* ITM Trace Control Register Definitions */\n+#define ITM_TCR_BUSY_Pos                   23                                             /*!< ITM TCR: BUSY Position */\n+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n+\n+#define ITM_TCR_TraceBusID_Pos             16                                             /*!< ITM TCR: ATBID Position */\n+#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n+\n+#define ITM_TCR_GTSFREQ_Pos                10                                             /*!< ITM TCR: Global timestamp frequency Position */\n+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n+\n+#define ITM_TCR_TSPrescale_Pos              8                                             /*!< ITM TCR: TSPrescale Position */\n+#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n+\n+#define ITM_TCR_SWOENA_Pos                  4                                             /*!< ITM TCR: SWOENA Position */\n+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n+\n+#define ITM_TCR_DWTENA_Pos                  3                                             /*!< ITM TCR: DWTENA Position */\n+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n+\n+#define ITM_TCR_SYNCENA_Pos                 2                                             /*!< ITM TCR: SYNCENA Position */\n+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n+\n+#define ITM_TCR_TSENA_Pos                   1                                             /*!< ITM TCR: TSENA Position */\n+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n+\n+#define ITM_TCR_ITMENA_Pos                  0                                             /*!< ITM TCR: ITM Enable bit Position */\n+#define ITM_TCR_ITMENA_Msk                 (1UL << ITM_TCR_ITMENA_Pos)                    /*!< ITM TCR: ITM Enable bit Mask */\n+\n+/* ITM Integration Write Register Definitions */\n+#define ITM_IWR_ATVALIDM_Pos                0                                             /*!< ITM IWR: ATVALIDM Position */\n+#define ITM_IWR_ATVALIDM_Msk               (1UL << ITM_IWR_ATVALIDM_Pos)                  /*!< ITM IWR: ATVALIDM Mask */\n+\n+/* ITM Integration Read Register Definitions */\n+#define ITM_IRR_ATREADYM_Pos                0                                             /*!< ITM IRR: ATREADYM Position */\n+#define ITM_IRR_ATREADYM_Msk               (1UL << ITM_IRR_ATREADYM_Pos)                  /*!< ITM IRR: ATREADYM Mask */\n+\n+/* ITM Integration Mode Control Register Definitions */\n+#define ITM_IMCR_INTEGRATION_Pos            0                                             /*!< ITM IMCR: INTEGRATION Position */\n+#define ITM_IMCR_INTEGRATION_Msk           (1UL << ITM_IMCR_INTEGRATION_Pos)              /*!< ITM IMCR: INTEGRATION Mask */\n+\n+/* ITM Lock Status Register Definitions */\n+#define ITM_LSR_ByteAcc_Pos                 2                                             /*!< ITM LSR: ByteAcc Position */\n+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n+\n+#define ITM_LSR_Access_Pos                  1                                             /*!< ITM LSR: Access Position */\n+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n+\n+#define ITM_LSR_Present_Pos                 0                                             /*!< ITM LSR: Present Position */\n+#define ITM_LSR_Present_Msk                (1UL << ITM_LSR_Present_Pos)                   /*!< ITM LSR: Present Mask */\n+\n+/*@}*/ /* end of group CMSIS_ITM */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n+    \\brief      Type definitions for the Data Watchpoint and Trace (DWT)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  Control Register                          */\n+  __IO uint32_t CYCCNT;                  /*!< Offset: 0x004 (R/W)  Cycle Count Register                      */\n+  __IO uint32_t CPICNT;                  /*!< Offset: 0x008 (R/W)  CPI Count Register                        */\n+  __IO uint32_t EXCCNT;                  /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register         */\n+  __IO uint32_t SLEEPCNT;                /*!< Offset: 0x010 (R/W)  Sleep Count Register                      */\n+  __IO uint32_t LSUCNT;                  /*!< Offset: 0x014 (R/W)  LSU Count Register                        */\n+  __IO uint32_t FOLDCNT;                 /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register         */\n+  __I  uint32_t PCSR;                    /*!< Offset: 0x01C (R/ )  Program Counter Sample Register           */\n+  __IO uint32_t COMP0;                   /*!< Offset: 0x020 (R/W)  Comparator Register 0                     */\n+  __IO uint32_t MASK0;                   /*!< Offset: 0x024 (R/W)  Mask Register 0                           */\n+  __IO uint32_t FUNCTION0;               /*!< Offset: 0x028 (R/W)  Function Register 0                       */\n+       uint32_t RESERVED0[1];\n+  __IO uint32_t COMP1;                   /*!< Offset: 0x030 (R/W)  Comparator Register 1                     */\n+  __IO uint32_t MASK1;                   /*!< Offset: 0x034 (R/W)  Mask Register 1                           */\n+  __IO uint32_t FUNCTION1;               /*!< Offset: 0x038 (R/W)  Function Register 1                       */\n+       uint32_t RESERVED1[1];\n+  __IO uint32_t COMP2;                   /*!< Offset: 0x040 (R/W)  Comparator Register 2                     */\n+  __IO uint32_t MASK2;                   /*!< Offset: 0x044 (R/W)  Mask Register 2                           */\n+  __IO uint32_t FUNCTION2;               /*!< Offset: 0x048 (R/W)  Function Register 2                       */\n+       uint32_t RESERVED2[1];\n+  __IO uint32_t COMP3;                   /*!< Offset: 0x050 (R/W)  Comparator Register 3                     */\n+  __IO uint32_t MASK3;                   /*!< Offset: 0x054 (R/W)  Mask Register 3                           */\n+  __IO uint32_t FUNCTION3;               /*!< Offset: 0x058 (R/W)  Function Register 3                       */\n+} DWT_Type;\n+\n+/* DWT Control Register Definitions */\n+#define DWT_CTRL_NUMCOMP_Pos               28                                          /*!< DWT CTRL: NUMCOMP Position */\n+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n+\n+#define DWT_CTRL_NOTRCPKT_Pos              27                                          /*!< DWT CTRL: NOTRCPKT Position */\n+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n+\n+#define DWT_CTRL_NOEXTTRIG_Pos             26                                          /*!< DWT CTRL: NOEXTTRIG Position */\n+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n+\n+#define DWT_CTRL_NOCYCCNT_Pos              25                                          /*!< DWT CTRL: NOCYCCNT Position */\n+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n+\n+#define DWT_CTRL_NOPRFCNT_Pos              24                                          /*!< DWT CTRL: NOPRFCNT Position */\n+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n+\n+#define DWT_CTRL_CYCEVTENA_Pos             22                                          /*!< DWT CTRL: CYCEVTENA Position */\n+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n+\n+#define DWT_CTRL_FOLDEVTENA_Pos            21                                          /*!< DWT CTRL: FOLDEVTENA Position */\n+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n+\n+#define DWT_CTRL_LSUEVTENA_Pos             20                                          /*!< DWT CTRL: LSUEVTENA Position */\n+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n+\n+#define DWT_CTRL_SLEEPEVTENA_Pos           19                                          /*!< DWT CTRL: SLEEPEVTENA Position */\n+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n+\n+#define DWT_CTRL_EXCEVTENA_Pos             18                                          /*!< DWT CTRL: EXCEVTENA Position */\n+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n+\n+#define DWT_CTRL_CPIEVTENA_Pos             17                                          /*!< DWT CTRL: CPIEVTENA Position */\n+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n+\n+#define DWT_CTRL_EXCTRCENA_Pos             16                                          /*!< DWT CTRL: EXCTRCENA Position */\n+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n+\n+#define DWT_CTRL_PCSAMPLENA_Pos            12                                          /*!< DWT CTRL: PCSAMPLENA Position */\n+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n+\n+#define DWT_CTRL_SYNCTAP_Pos               10                                          /*!< DWT CTRL: SYNCTAP Position */\n+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n+\n+#define DWT_CTRL_CYCTAP_Pos                 9                                          /*!< DWT CTRL: CYCTAP Position */\n+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n+\n+#define DWT_CTRL_POSTINIT_Pos               5                                          /*!< DWT CTRL: POSTINIT Position */\n+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n+\n+#define DWT_CTRL_POSTPRESET_Pos             1                                          /*!< DWT CTRL: POSTPRESET Position */\n+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n+\n+#define DWT_CTRL_CYCCNTENA_Pos              0                                          /*!< DWT CTRL: CYCCNTENA Position */\n+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL << DWT_CTRL_CYCCNTENA_Pos)           /*!< DWT CTRL: CYCCNTENA Mask */\n+\n+/* DWT CPI Count Register Definitions */\n+#define DWT_CPICNT_CPICNT_Pos               0                                          /*!< DWT CPICNT: CPICNT Position */\n+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL << DWT_CPICNT_CPICNT_Pos)           /*!< DWT CPICNT: CPICNT Mask */\n+\n+/* DWT Exception Overhead Count Register Definitions */\n+#define DWT_EXCCNT_EXCCNT_Pos               0                                          /*!< DWT EXCCNT: EXCCNT Position */\n+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL << DWT_EXCCNT_EXCCNT_Pos)           /*!< DWT EXCCNT: EXCCNT Mask */\n+\n+/* DWT Sleep Count Register Definitions */\n+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0                                          /*!< DWT SLEEPCNT: SLEEPCNT Position */\n+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos)       /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n+\n+/* DWT LSU Count Register Definitions */\n+#define DWT_LSUCNT_LSUCNT_Pos               0                                          /*!< DWT LSUCNT: LSUCNT Position */\n+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL << DWT_LSUCNT_LSUCNT_Pos)           /*!< DWT LSUCNT: LSUCNT Mask */\n+\n+/* DWT Folded-instruction Count Register Definitions */\n+#define DWT_FOLDCNT_FOLDCNT_Pos             0                                          /*!< DWT FOLDCNT: FOLDCNT Position */\n+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos)         /*!< DWT FOLDCNT: FOLDCNT Mask */\n+\n+/* DWT Comparator Mask Register Definitions */\n+#define DWT_MASK_MASK_Pos                   0                                          /*!< DWT MASK: MASK Position */\n+#define DWT_MASK_MASK_Msk                  (0x1FUL << DWT_MASK_MASK_Pos)               /*!< DWT MASK: MASK Mask */\n+\n+/* DWT Comparator Function Register Definitions */\n+#define DWT_FUNCTION_MATCHED_Pos           24                                          /*!< DWT FUNCTION: MATCHED Position */\n+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n+\n+#define DWT_FUNCTION_DATAVADDR1_Pos        16                                          /*!< DWT FUNCTION: DATAVADDR1 Position */\n+#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n+\n+#define DWT_FUNCTION_DATAVADDR0_Pos        12                                          /*!< DWT FUNCTION: DATAVADDR0 Position */\n+#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n+\n+#define DWT_FUNCTION_DATAVSIZE_Pos         10                                          /*!< DWT FUNCTION: DATAVSIZE Position */\n+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n+\n+#define DWT_FUNCTION_LNK1ENA_Pos            9                                          /*!< DWT FUNCTION: LNK1ENA Position */\n+#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n+\n+#define DWT_FUNCTION_DATAVMATCH_Pos         8                                          /*!< DWT FUNCTION: DATAVMATCH Position */\n+#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n+\n+#define DWT_FUNCTION_CYCMATCH_Pos           7                                          /*!< DWT FUNCTION: CYCMATCH Position */\n+#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n+\n+#define DWT_FUNCTION_EMITRANGE_Pos          5                                          /*!< DWT FUNCTION: EMITRANGE Position */\n+#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n+\n+#define DWT_FUNCTION_FUNCTION_Pos           0                                          /*!< DWT FUNCTION: FUNCTION Position */\n+#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL << DWT_FUNCTION_FUNCTION_Pos)        /*!< DWT FUNCTION: FUNCTION Mask */\n+\n+/*@}*/ /* end of group CMSIS_DWT */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n+    \\brief      Type definitions for the Trace Port Interface (TPI)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Trace Port Interface Register (TPI).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t SSPSR;                   /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register     */\n+  __IO uint32_t CSPSR;                   /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n+       uint32_t RESERVED0[2];\n+  __IO uint32_t ACPR;                    /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n+       uint32_t RESERVED1[55];\n+  __IO uint32_t SPPR;                    /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n+       uint32_t RESERVED2[131];\n+  __I  uint32_t FFSR;                    /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n+  __IO uint32_t FFCR;                    /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n+  __I  uint32_t FSCR;                    /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n+       uint32_t RESERVED3[759];\n+  __I  uint32_t TRIGGER;                 /*!< Offset: 0xEE8 (R/ )  TRIGGER */\n+  __I  uint32_t FIFO0;                   /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n+  __I  uint32_t ITATBCTR2;               /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n+       uint32_t RESERVED4[1];\n+  __I  uint32_t ITATBCTR0;               /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n+  __I  uint32_t FIFO1;                   /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n+  __IO uint32_t ITCTRL;                  /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n+       uint32_t RESERVED5[39];\n+  __IO uint32_t CLAIMSET;                /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n+  __IO uint32_t CLAIMCLR;                /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n+       uint32_t RESERVED7[8];\n+  __I  uint32_t DEVID;                   /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n+  __I  uint32_t DEVTYPE;                 /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n+} TPI_Type;\n+\n+/* TPI Asynchronous Clock Prescaler Register Definitions */\n+#define TPI_ACPR_PRESCALER_Pos              0                                          /*!< TPI ACPR: PRESCALER Position */\n+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL << TPI_ACPR_PRESCALER_Pos)        /*!< TPI ACPR: PRESCALER Mask */\n+\n+/* TPI Selected Pin Protocol Register Definitions */\n+#define TPI_SPPR_TXMODE_Pos                 0                                          /*!< TPI SPPR: TXMODE Position */\n+#define TPI_SPPR_TXMODE_Msk                (0x3UL << TPI_SPPR_TXMODE_Pos)              /*!< TPI SPPR: TXMODE Mask */\n+\n+/* TPI Formatter and Flush Status Register Definitions */\n+#define TPI_FFSR_FtNonStop_Pos              3                                          /*!< TPI FFSR: FtNonStop Position */\n+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n+\n+#define TPI_FFSR_TCPresent_Pos              2                                          /*!< TPI FFSR: TCPresent Position */\n+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n+\n+#define TPI_FFSR_FtStopped_Pos              1                                          /*!< TPI FFSR: FtStopped Position */\n+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n+\n+#define TPI_FFSR_FlInProg_Pos               0                                          /*!< TPI FFSR: FlInProg Position */\n+#define TPI_FFSR_FlInProg_Msk              (0x1UL << TPI_FFSR_FlInProg_Pos)            /*!< TPI FFSR: FlInProg Mask */\n+\n+/* TPI Formatter and Flush Control Register Definitions */\n+#define TPI_FFCR_TrigIn_Pos                 8                                          /*!< TPI FFCR: TrigIn Position */\n+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n+\n+#define TPI_FFCR_EnFCont_Pos                1                                          /*!< TPI FFCR: EnFCont Position */\n+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n+\n+/* TPI TRIGGER Register Definitions */\n+#define TPI_TRIGGER_TRIGGER_Pos             0                                          /*!< TPI TRIGGER: TRIGGER Position */\n+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL << TPI_TRIGGER_TRIGGER_Pos)          /*!< TPI TRIGGER: TRIGGER Mask */\n+\n+/* TPI Integration ETM Data Register Definitions (FIFO0) */\n+#define TPI_FIFO0_ITM_ATVALID_Pos          29                                          /*!< TPI FIFO0: ITM_ATVALID Position */\n+#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n+\n+#define TPI_FIFO0_ITM_bytecount_Pos        27                                          /*!< TPI FIFO0: ITM_bytecount Position */\n+#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n+\n+#define TPI_FIFO0_ETM_ATVALID_Pos          26                                          /*!< TPI FIFO0: ETM_ATVALID Position */\n+#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n+\n+#define TPI_FIFO0_ETM_bytecount_Pos        24                                          /*!< TPI FIFO0: ETM_bytecount Position */\n+#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n+\n+#define TPI_FIFO0_ETM2_Pos                 16                                          /*!< TPI FIFO0: ETM2 Position */\n+#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n+\n+#define TPI_FIFO0_ETM1_Pos                  8                                          /*!< TPI FIFO0: ETM1 Position */\n+#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n+\n+#define TPI_FIFO0_ETM0_Pos                  0                                          /*!< TPI FIFO0: ETM0 Position */\n+#define TPI_FIFO0_ETM0_Msk                 (0xFFUL << TPI_FIFO0_ETM0_Pos)              /*!< TPI FIFO0: ETM0 Mask */\n+\n+/* TPI ITATBCTR2 Register Definitions */\n+#define TPI_ITATBCTR2_ATREADY_Pos           0                                          /*!< TPI ITATBCTR2: ATREADY Position */\n+#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL << TPI_ITATBCTR2_ATREADY_Pos)        /*!< TPI ITATBCTR2: ATREADY Mask */\n+\n+/* TPI Integration ITM Data Register Definitions (FIFO1) */\n+#define TPI_FIFO1_ITM_ATVALID_Pos          29                                          /*!< TPI FIFO1: ITM_ATVALID Position */\n+#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n+\n+#define TPI_FIFO1_ITM_bytecount_Pos        27                                          /*!< TPI FIFO1: ITM_bytecount Position */\n+#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n+\n+#define TPI_FIFO1_ETM_ATVALID_Pos          26                                          /*!< TPI FIFO1: ETM_ATVALID Position */\n+#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n+\n+#define TPI_FIFO1_ETM_bytecount_Pos        24                                          /*!< TPI FIFO1: ETM_bytecount Position */\n+#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n+\n+#define TPI_FIFO1_ITM2_Pos                 16                                          /*!< TPI FIFO1: ITM2 Position */\n+#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n+\n+#define TPI_FIFO1_ITM1_Pos                  8                                          /*!< TPI FIFO1: ITM1 Position */\n+#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n+\n+#define TPI_FIFO1_ITM0_Pos                  0                                          /*!< TPI FIFO1: ITM0 Position */\n+#define TPI_FIFO1_ITM0_Msk                 (0xFFUL << TPI_FIFO1_ITM0_Pos)              /*!< TPI FIFO1: ITM0 Mask */\n+\n+/* TPI ITATBCTR0 Register Definitions */\n+#define TPI_ITATBCTR0_ATREADY_Pos           0                                          /*!< TPI ITATBCTR0: ATREADY Position */\n+#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL << TPI_ITATBCTR0_ATREADY_Pos)        /*!< TPI ITATBCTR0: ATREADY Mask */\n+\n+/* TPI Integration Mode Control Register Definitions */\n+#define TPI_ITCTRL_Mode_Pos                 0                                          /*!< TPI ITCTRL: Mode Position */\n+#define TPI_ITCTRL_Mode_Msk                (0x1UL << TPI_ITCTRL_Mode_Pos)              /*!< TPI ITCTRL: Mode Mask */\n+\n+/* TPI DEVID Register Definitions */\n+#define TPI_DEVID_NRZVALID_Pos             11                                          /*!< TPI DEVID: NRZVALID Position */\n+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n+\n+#define TPI_DEVID_MANCVALID_Pos            10                                          /*!< TPI DEVID: MANCVALID Position */\n+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n+\n+#define TPI_DEVID_PTINVALID_Pos             9                                          /*!< TPI DEVID: PTINVALID Position */\n+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n+\n+#define TPI_DEVID_MinBufSz_Pos              6                                          /*!< TPI DEVID: MinBufSz Position */\n+#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n+\n+#define TPI_DEVID_AsynClkIn_Pos             5                                          /*!< TPI DEVID: AsynClkIn Position */\n+#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n+\n+#define TPI_DEVID_NrTraceInput_Pos          0                                          /*!< TPI DEVID: NrTraceInput Position */\n+#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL << TPI_DEVID_NrTraceInput_Pos)      /*!< TPI DEVID: NrTraceInput Mask */\n+\n+/* TPI DEVTYPE Register Definitions */\n+#define TPI_DEVTYPE_SubType_Pos             0                                          /*!< TPI DEVTYPE: SubType Position */\n+#define TPI_DEVTYPE_SubType_Msk            (0xFUL << TPI_DEVTYPE_SubType_Pos)          /*!< TPI DEVTYPE: SubType Mask */\n+\n+#define TPI_DEVTYPE_MajorType_Pos           4                                          /*!< TPI DEVTYPE: MajorType Position */\n+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n+\n+/*@}*/ /* end of group CMSIS_TPI */\n+\n+\n+#if (__MPU_PRESENT == 1)\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n+    \\brief      Type definitions for the Memory Protection Unit (MPU)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Memory Protection Unit (MPU).\n+ */\n+typedef struct\n+{\n+  __I  uint32_t TYPE;                    /*!< Offset: 0x000 (R/ )  MPU Type Register                              */\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x004 (R/W)  MPU Control Register                           */\n+  __IO uint32_t RNR;                     /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register                     */\n+  __IO uint32_t RBAR;                    /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register               */\n+  __IO uint32_t RASR;                    /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register         */\n+  __IO uint32_t RBAR_A1;                 /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register       */\n+  __IO uint32_t RASR_A1;                 /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n+  __IO uint32_t RBAR_A2;                 /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register       */\n+  __IO uint32_t RASR_A2;                 /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n+  __IO uint32_t RBAR_A3;                 /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register       */\n+  __IO uint32_t RASR_A3;                 /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n+} MPU_Type;\n+\n+/* MPU Type Register */\n+#define MPU_TYPE_IREGION_Pos               16                                             /*!< MPU TYPE: IREGION Position */\n+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n+\n+#define MPU_TYPE_DREGION_Pos                8                                             /*!< MPU TYPE: DREGION Position */\n+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n+\n+#define MPU_TYPE_SEPARATE_Pos               0                                             /*!< MPU TYPE: SEPARATE Position */\n+#define MPU_TYPE_SEPARATE_Msk              (1UL << MPU_TYPE_SEPARATE_Pos)                 /*!< MPU TYPE: SEPARATE Mask */\n+\n+/* MPU Control Register */\n+#define MPU_CTRL_PRIVDEFENA_Pos             2                                             /*!< MPU CTRL: PRIVDEFENA Position */\n+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n+\n+#define MPU_CTRL_HFNMIENA_Pos               1                                             /*!< MPU CTRL: HFNMIENA Position */\n+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n+\n+#define MPU_CTRL_ENABLE_Pos                 0                                             /*!< MPU CTRL: ENABLE Position */\n+#define MPU_CTRL_ENABLE_Msk                (1UL << MPU_CTRL_ENABLE_Pos)                   /*!< MPU CTRL: ENABLE Mask */\n+\n+/* MPU Region Number Register */\n+#define MPU_RNR_REGION_Pos                  0                                             /*!< MPU RNR: REGION Position */\n+#define MPU_RNR_REGION_Msk                 (0xFFUL << MPU_RNR_REGION_Pos)                 /*!< MPU RNR: REGION Mask */\n+\n+/* MPU Region Base Address Register */\n+#define MPU_RBAR_ADDR_Pos                   5                                             /*!< MPU RBAR: ADDR Position */\n+#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n+\n+#define MPU_RBAR_VALID_Pos                  4                                             /*!< MPU RBAR: VALID Position */\n+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n+\n+#define MPU_RBAR_REGION_Pos                 0                                             /*!< MPU RBAR: REGION Position */\n+#define MPU_RBAR_REGION_Msk                (0xFUL << MPU_RBAR_REGION_Pos)                 /*!< MPU RBAR: REGION Mask */\n+\n+/* MPU Region Attribute and Size Register */\n+#define MPU_RASR_ATTRS_Pos                 16                                             /*!< MPU RASR: MPU Region Attribute field Position */\n+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n+\n+#define MPU_RASR_XN_Pos                    28                                             /*!< MPU RASR: ATTRS.XN Position */\n+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n+\n+#define MPU_RASR_AP_Pos                    24                                             /*!< MPU RASR: ATTRS.AP Position */\n+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n+\n+#define MPU_RASR_TEX_Pos                   19                                             /*!< MPU RASR: ATTRS.TEX Position */\n+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n+\n+#define MPU_RASR_S_Pos                     18                                             /*!< MPU RASR: ATTRS.S Position */\n+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n+\n+#define MPU_RASR_C_Pos                     17                                             /*!< MPU RASR: ATTRS.C Position */\n+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n+\n+#define MPU_RASR_B_Pos                     16                                             /*!< MPU RASR: ATTRS.B Position */\n+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n+\n+#define MPU_RASR_SRD_Pos                    8                                             /*!< MPU RASR: Sub-Region Disable Position */\n+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n+\n+#define MPU_RASR_SIZE_Pos                   1                                             /*!< MPU RASR: Region Size Field Position */\n+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n+\n+#define MPU_RASR_ENABLE_Pos                 0                                             /*!< MPU RASR: Region enable bit Position */\n+#define MPU_RASR_ENABLE_Msk                (1UL << MPU_RASR_ENABLE_Pos)                   /*!< MPU RASR: Region enable bit Disable Mask */\n+\n+/*@} end of group CMSIS_MPU */\n+#endif\n+\n+\n+#if (__FPU_PRESENT == 1)\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n+    \\brief      Type definitions for the Floating Point Unit (FPU)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Floating Point Unit (FPU).\n+ */\n+typedef struct\n+{\n+       uint32_t RESERVED0[1];\n+  __IO uint32_t FPCCR;                   /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register               */\n+  __IO uint32_t FPCAR;                   /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register               */\n+  __IO uint32_t FPDSCR;                  /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register        */\n+  __I  uint32_t MVFR0;                   /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0                       */\n+  __I  uint32_t MVFR1;                   /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1                       */\n+} FPU_Type;\n+\n+/* Floating-Point Context Control Register */\n+#define FPU_FPCCR_ASPEN_Pos                31                                             /*!< FPCCR: ASPEN bit Position */\n+#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n+\n+#define FPU_FPCCR_LSPEN_Pos                30                                             /*!< FPCCR: LSPEN Position */\n+#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n+\n+#define FPU_FPCCR_MONRDY_Pos                8                                             /*!< FPCCR: MONRDY Position */\n+#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n+\n+#define FPU_FPCCR_BFRDY_Pos                 6                                             /*!< FPCCR: BFRDY Position */\n+#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n+\n+#define FPU_FPCCR_MMRDY_Pos                 5                                             /*!< FPCCR: MMRDY Position */\n+#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n+\n+#define FPU_FPCCR_HFRDY_Pos                 4                                             /*!< FPCCR: HFRDY Position */\n+#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n+\n+#define FPU_FPCCR_THREAD_Pos                3                                             /*!< FPCCR: processor mode bit Position */\n+#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n+\n+#define FPU_FPCCR_USER_Pos                  1                                             /*!< FPCCR: privilege level bit Position */\n+#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n+\n+#define FPU_FPCCR_LSPACT_Pos                0                                             /*!< FPCCR: Lazy state preservation active bit Position */\n+#define FPU_FPCCR_LSPACT_Msk               (1UL << FPU_FPCCR_LSPACT_Pos)                  /*!< FPCCR: Lazy state preservation active bit Mask */\n+\n+/* Floating-Point Context Address Register */\n+#define FPU_FPCAR_ADDRESS_Pos               3                                             /*!< FPCAR: ADDRESS bit Position */\n+#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n+\n+/* Floating-Point Default Status Control Register */\n+#define FPU_FPDSCR_AHP_Pos                 26                                             /*!< FPDSCR: AHP bit Position */\n+#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n+\n+#define FPU_FPDSCR_DN_Pos                  25                                             /*!< FPDSCR: DN bit Position */\n+#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n+\n+#define FPU_FPDSCR_FZ_Pos                  24                                             /*!< FPDSCR: FZ bit Position */\n+#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n+\n+#define FPU_FPDSCR_RMode_Pos               22                                             /*!< FPDSCR: RMode bit Position */\n+#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n+\n+/* Media and FP Feature Register 0 */\n+#define FPU_MVFR0_FP_rounding_modes_Pos    28                                             /*!< MVFR0: FP rounding modes bits Position */\n+#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n+\n+#define FPU_MVFR0_Short_vectors_Pos        24                                             /*!< MVFR0: Short vectors bits Position */\n+#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n+\n+#define FPU_MVFR0_Square_root_Pos          20                                             /*!< MVFR0: Square root bits Position */\n+#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n+\n+#define FPU_MVFR0_Divide_Pos               16                                             /*!< MVFR0: Divide bits Position */\n+#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n+\n+#define FPU_MVFR0_FP_excep_trapping_Pos    12                                             /*!< MVFR0: FP exception trapping bits Position */\n+#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n+\n+#define FPU_MVFR0_Double_precision_Pos      8                                             /*!< MVFR0: Double-precision bits Position */\n+#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n+\n+#define FPU_MVFR0_Single_precision_Pos      4                                             /*!< MVFR0: Single-precision bits Position */\n+#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n+\n+#define FPU_MVFR0_A_SIMD_registers_Pos      0                                             /*!< MVFR0: A_SIMD registers bits Position */\n+#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos)      /*!< MVFR0: A_SIMD registers bits Mask */\n+\n+/* Media and FP Feature Register 1 */\n+#define FPU_MVFR1_FP_fused_MAC_Pos         28                                             /*!< MVFR1: FP fused MAC bits Position */\n+#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n+\n+#define FPU_MVFR1_FP_HPFP_Pos              24                                             /*!< MVFR1: FP HPFP bits Position */\n+#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n+\n+#define FPU_MVFR1_D_NaN_mode_Pos            4                                             /*!< MVFR1: D_NaN mode bits Position */\n+#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n+\n+#define FPU_MVFR1_FtZ_mode_Pos              0                                             /*!< MVFR1: FtZ mode bits Position */\n+#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL << FPU_MVFR1_FtZ_mode_Pos)              /*!< MVFR1: FtZ mode bits Mask */\n+\n+/*@} end of group CMSIS_FPU */\n+#endif\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n+    \\brief      Type definitions for the Core Debug Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Core Debug Register (CoreDebug).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t DHCSR;                   /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register    */\n+  __O  uint32_t DCRSR;                   /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register        */\n+  __IO uint32_t DCRDR;                   /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register            */\n+  __IO uint32_t DEMCR;                   /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n+} CoreDebug_Type;\n+\n+/* Debug Halting Control and Status Register */\n+#define CoreDebug_DHCSR_DBGKEY_Pos         16                                             /*!< CoreDebug DHCSR: DBGKEY Position */\n+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n+\n+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25                                             /*!< CoreDebug DHCSR: S_RESET_ST Position */\n+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n+\n+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24                                             /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n+\n+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19                                             /*!< CoreDebug DHCSR: S_LOCKUP Position */\n+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n+\n+#define CoreDebug_DHCSR_S_SLEEP_Pos        18                                             /*!< CoreDebug DHCSR: S_SLEEP Position */\n+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n+\n+#define CoreDebug_DHCSR_S_HALT_Pos         17                                             /*!< CoreDebug DHCSR: S_HALT Position */\n+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n+\n+#define CoreDebug_DHCSR_S_REGRDY_Pos       16                                             /*!< CoreDebug DHCSR: S_REGRDY Position */\n+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n+\n+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5                                             /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n+\n+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3                                             /*!< CoreDebug DHCSR: C_MASKINTS Position */\n+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n+\n+#define CoreDebug_DHCSR_C_STEP_Pos          2                                             /*!< CoreDebug DHCSR: C_STEP Position */\n+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n+\n+#define CoreDebug_DHCSR_C_HALT_Pos          1                                             /*!< CoreDebug DHCSR: C_HALT Position */\n+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n+\n+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0                                             /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos)         /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n+\n+/* Debug Core Register Selector Register */\n+#define CoreDebug_DCRSR_REGWnR_Pos         16                                             /*!< CoreDebug DCRSR: REGWnR Position */\n+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n+\n+#define CoreDebug_DCRSR_REGSEL_Pos          0                                             /*!< CoreDebug DCRSR: REGSEL Position */\n+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos)         /*!< CoreDebug DCRSR: REGSEL Mask */\n+\n+/* Debug Exception and Monitor Control Register */\n+#define CoreDebug_DEMCR_TRCENA_Pos         24                                             /*!< CoreDebug DEMCR: TRCENA Position */\n+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n+\n+#define CoreDebug_DEMCR_MON_REQ_Pos        19                                             /*!< CoreDebug DEMCR: MON_REQ Position */\n+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n+\n+#define CoreDebug_DEMCR_MON_STEP_Pos       18                                             /*!< CoreDebug DEMCR: MON_STEP Position */\n+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n+\n+#define CoreDebug_DEMCR_MON_PEND_Pos       17                                             /*!< CoreDebug DEMCR: MON_PEND Position */\n+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n+\n+#define CoreDebug_DEMCR_MON_EN_Pos         16                                             /*!< CoreDebug DEMCR: MON_EN Position */\n+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n+\n+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10                                             /*!< CoreDebug DEMCR: VC_HARDERR Position */\n+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_INTERR_Pos       9                                             /*!< CoreDebug DEMCR: VC_INTERR Position */\n+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8                                             /*!< CoreDebug DEMCR: VC_BUSERR Position */\n+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_STATERR_Pos      7                                             /*!< CoreDebug DEMCR: VC_STATERR Position */\n+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6                                             /*!< CoreDebug DEMCR: VC_CHKERR Position */\n+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5                                             /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_MMERR_Pos        4                                             /*!< CoreDebug DEMCR: VC_MMERR Position */\n+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0                                             /*!< CoreDebug DEMCR: VC_CORERESET Position */\n+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos)      /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n+\n+/*@} end of group CMSIS_CoreDebug */\n+\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_core_base     Core Definitions\n+    \\brief      Definitions for base addresses, unions, and structures.\n+  @{\n+ */\n+\n+/* Memory mapping of Cortex-M4 Hardware */\n+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address  */\n+#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address                   */\n+#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address                   */\n+#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address                   */\n+#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address            */\n+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address               */\n+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address                  */\n+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address  */\n+\n+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct           */\n+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct       */\n+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct          */\n+#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct           */\n+#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct           */\n+#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct           */\n+#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct    */\n+\n+#if (__MPU_PRESENT == 1)\n+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit             */\n+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit             */\n+#endif\n+\n+#if (__FPU_PRESENT == 1)\n+  #define FPU_BASE          (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit                */\n+  #define FPU               ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit                */\n+#endif\n+\n+/*@} */\n+\n+\n+\n+/*******************************************************************************\n+ *                Hardware Abstraction Layer\n+  Core Function Interface contains:\n+  - Core NVIC Functions\n+  - Core SysTick Functions\n+  - Core Debug Functions\n+  - Core Register Access Functions\n+ ******************************************************************************/\n+/** \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n+*/\n+\n+\n+\n+/* ##########################   NVIC functions  #################################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n+    \\brief      Functions that manage interrupts and exceptions via the NVIC.\n+    @{\n+ */\n+\n+/** \\brief  Set Priority Grouping\n+\n+  The function sets the priority grouping field using the required unlock sequence.\n+  The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n+  Only values from 0..7 are used.\n+  In case of a conflict between priority grouping and available\n+  priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n+\n+    \\param [in]      PriorityGroup  Priority grouping field.\n+ */\n+__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n+{\n+  uint32_t reg_value;\n+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07);               /* only values 0..7 are used          */\n+\n+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n+  reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk);             /* clear bits to change               */\n+  reg_value  =  (reg_value                                 |\n+                ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) |\n+                (PriorityGroupTmp << 8));                                     /* Insert write key and priorty group */\n+  SCB->AIRCR =  reg_value;\n+}\n+\n+\n+/** \\brief  Get Priority Grouping\n+\n+  The function reads the priority grouping field from the NVIC Interrupt Controller.\n+\n+    \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)\n+{\n+  return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos);   /* read priority grouping field */\n+}\n+\n+\n+/** \\brief  Enable External Interrupt\n+\n+    The function enables a device-specific interrupt in the NVIC interrupt controller.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)\n+{\n+/*  NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));  enable interrupt */\n+  NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */\n+}\n+\n+\n+/** \\brief  Disable External Interrupt\n+\n+    The function disables a device-specific interrupt in the NVIC interrupt controller.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */\n+}\n+\n+\n+/** \\brief  Get Pending Interrupt\n+\n+    The function reads the pending register in the NVIC and returns the pending bit\n+    for the specified interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+\n+    \\return             0  Interrupt status is not pending.\n+    \\return             1  Interrupt status is pending.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)\n+{\n+  return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */\n+}\n+\n+\n+/** \\brief  Set Pending Interrupt\n+\n+    The function sets the pending bit of an external interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */\n+}\n+\n+\n+/** \\brief  Clear Pending Interrupt\n+\n+    The function clears the pending bit of an external interrupt.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */\n+}\n+\n+\n+/** \\brief  Get Active Interrupt\n+\n+    The function reads the active register in NVIC and returns the active bit.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+\n+    \\return             0  Interrupt status is not active.\n+    \\return             1  Interrupt status is active.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)\n+{\n+  return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */\n+}\n+\n+\n+/** \\brief  Set Interrupt Priority\n+\n+    The function sets the priority of an interrupt.\n+\n+    \\note The priority cannot be set for every core interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+    \\param [in]  priority  Priority to set.\n+ */\n+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n+{\n+  if(IRQn < 0) {\n+    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M  System Interrupts */\n+  else {\n+    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */\n+}\n+\n+\n+/** \\brief  Get Interrupt Priority\n+\n+    The function reads the priority of an interrupt. The interrupt\n+    number can be positive to specify an external (device specific)\n+    interrupt, or negative to specify an internal (core) interrupt.\n+\n+\n+    \\param [in]   IRQn  Interrupt number.\n+    \\return             Interrupt Priority. Value is aligned automatically to the implemented\n+                        priority bits of the microcontroller.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)\n+{\n+\n+  if(IRQn < 0) {\n+    return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M  system interrupts */\n+  else {\n+    return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)]           >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */\n+}\n+\n+\n+/** \\brief  Encode Priority\n+\n+    The function encodes the priority for an interrupt with the given priority group,\n+    preemptive priority value, and subpriority value.\n+    In case of a conflict between priority grouping and available\n+    priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set.\n+\n+    \\param [in]     PriorityGroup  Used priority group.\n+    \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n+    \\param [in]       SubPriority  Subpriority value (starting from 0).\n+    \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n+ */\n+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n+{\n+  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */\n+  uint32_t PreemptPriorityBits;\n+  uint32_t SubPriorityBits;\n+\n+  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;\n+  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;\n+\n+  return (\n+           ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) |\n+           ((SubPriority     & ((1 << (SubPriorityBits    )) - 1)))\n+         );\n+}\n+\n+\n+/** \\brief  Decode Priority\n+\n+    The function decodes an interrupt priority value with a given priority group to\n+    preemptive priority value and subpriority value.\n+    In case of a conflict between priority grouping and available\n+    priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set.\n+\n+    \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n+    \\param [in]     PriorityGroup  Used priority group.\n+    \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n+    \\param [out]     pSubPriority  Subpriority value (starting from 0).\n+ */\n+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)\n+{\n+  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */\n+  uint32_t PreemptPriorityBits;\n+  uint32_t SubPriorityBits;\n+\n+  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;\n+  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;\n+\n+  *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1);\n+  *pSubPriority     = (Priority                   ) & ((1 << (SubPriorityBits    )) - 1);\n+}\n+\n+\n+/** \\brief  System Reset\n+\n+    The function initiates a system reset request to reset the MCU.\n+ */\n+__STATIC_INLINE void NVIC_SystemReset(void)\n+{\n+  __DSB();                                                     /* Ensure all outstanding memory accesses included\n+                                                                  buffered write are completed before reset */\n+  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |\n+                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n+                 SCB_AIRCR_SYSRESETREQ_Msk);                   /* Keep priority group unchanged */\n+  __DSB();                                                     /* Ensure completion of memory access */\n+  while(1);                                                    /* wait until reset */\n+}\n+\n+/*@} end of CMSIS_Core_NVICFunctions */\n+\n+\n+\n+/* ##################################    SysTick function  ############################################ */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n+    \\brief      Functions that configure the System.\n+  @{\n+ */\n+\n+#if (__Vendor_SysTickConfig == 0)\n+\n+/** \\brief  System Tick Configuration\n+\n+    The function initializes the System Timer and its interrupt, and starts the System Tick Timer.\n+    Counter is in free running mode to generate periodic interrupts.\n+\n+    \\param [in]  ticks  Number of ticks between two interrupts.\n+\n+    \\return          0  Function succeeded.\n+    \\return          1  Function failed.\n+\n+    \\note     When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n+    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n+    must contain a vendor-specific implementation of this function.\n+\n+ */\n+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n+{\n+  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */\n+\n+  SysTick->LOAD  = ticks - 1;                                  /* set reload register */\n+  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */\n+  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */\n+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n+                   SysTick_CTRL_TICKINT_Msk   |\n+                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */\n+  return (0);                                                  /* Function successful */\n+}\n+\n+#endif\n+\n+/*@} end of CMSIS_Core_SysTickFunctions */\n+\n+\n+\n+/* ##################################### Debug In/Output function ########################################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_core_DebugFunctions ITM Functions\n+    \\brief   Functions that access the ITM debug interface.\n+  @{\n+ */\n+\n+extern volatile int32_t ITM_RxBuffer;                    /*!< External variable to receive characters.                         */\n+#define                 ITM_RXBUFFER_EMPTY    0x5AA55AA5 /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n+\n+\n+/** \\brief  ITM Send Character\n+\n+    The function transmits a character via the ITM channel 0, and\n+    \\li Just returns when no debugger is connected that has booked the output.\n+    \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n+\n+    \\param [in]     ch  Character to transmit.\n+\n+    \\returns            Character to transmit.\n+ */\n+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n+{\n+  if ((ITM->TCR & ITM_TCR_ITMENA_Msk)                  &&      /* ITM enabled */\n+      (ITM->TER & (1UL << 0)        )                    )     /* ITM Port #0 enabled */\n+  {\n+    while (ITM->PORT[0].u32 == 0);\n+    ITM->PORT[0].u8 = (uint8_t) ch;\n+  }\n+  return (ch);\n+}\n+\n+\n+/** \\brief  ITM Receive Character\n+\n+    The function inputs a character via the external variable \\ref ITM_RxBuffer.\n+\n+    \\return             Received character.\n+    \\return         -1  No character pending.\n+ */\n+__STATIC_INLINE int32_t ITM_ReceiveChar (void) {\n+  int32_t ch = -1;                           /* no character available */\n+\n+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {\n+    ch = ITM_RxBuffer;\n+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n+  }\n+\n+  return (ch);\n+}\n+\n+\n+/** \\brief  ITM Check Character\n+\n+    The function checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n+\n+    \\return          0  No character available.\n+    \\return          1  Character available.\n+ */\n+__STATIC_INLINE int32_t ITM_CheckChar (void) {\n+\n+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {\n+    return (0);                                 /* no character available */\n+  } else {\n+    return (1);                                 /*    character available */\n+  }\n+}\n+\n+/*@} end of CMSIS_core_DebugFunctions */\n+\n+#endif /* __CORE_CM4_H_DEPENDANT */\n+\n+#endif /* __CMSIS_GENERIC */\n+\n+#ifdef __cplusplus\n+}\n+#endif\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/core_cm4_simd.h ./chip/inc/core_cm4_simd.h\n--- a_tnusFF/chip/inc/core_cm4_simd.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/core_cm4_simd.h\t2016-10-22 23:17:43.548840278 -0300\n@@ -0,0 +1,673 @@\n+/**************************************************************************//**\n+ * @file     core_cm4_simd.h\n+ * @brief    CMSIS Cortex-M4 SIMD Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifdef __cplusplus\n+ extern \"C\" {\n+#endif\n+\n+#ifndef __CORE_CM4_SIMD_H\n+#define __CORE_CM4_SIMD_H\n+\n+\n+/*******************************************************************************\n+ *                Hardware Abstraction Layer\n+ ******************************************************************************/\n+\n+\n+/* ###################  Compiler specific Intrinsics  ########################### */\n+/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n+  Access to dedicated SIMD instructions\n+  @{\n+*/\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#define __SADD8                           __sadd8\n+#define __QADD8                           __qadd8\n+#define __SHADD8                          __shadd8\n+#define __UADD8                           __uadd8\n+#define __UQADD8                          __uqadd8\n+#define __UHADD8                          __uhadd8\n+#define __SSUB8                           __ssub8\n+#define __QSUB8                           __qsub8\n+#define __SHSUB8                          __shsub8\n+#define __USUB8                           __usub8\n+#define __UQSUB8                          __uqsub8\n+#define __UHSUB8                          __uhsub8\n+#define __SADD16                          __sadd16\n+#define __QADD16                          __qadd16\n+#define __SHADD16                         __shadd16\n+#define __UADD16                          __uadd16\n+#define __UQADD16                         __uqadd16\n+#define __UHADD16                         __uhadd16\n+#define __SSUB16                          __ssub16\n+#define __QSUB16                          __qsub16\n+#define __SHSUB16                         __shsub16\n+#define __USUB16                          __usub16\n+#define __UQSUB16                         __uqsub16\n+#define __UHSUB16                         __uhsub16\n+#define __SASX                            __sasx\n+#define __QASX                            __qasx\n+#define __SHASX                           __shasx\n+#define __UASX                            __uasx\n+#define __UQASX                           __uqasx\n+#define __UHASX                           __uhasx\n+#define __SSAX                            __ssax\n+#define __QSAX                            __qsax\n+#define __SHSAX                           __shsax\n+#define __USAX                            __usax\n+#define __UQSAX                           __uqsax\n+#define __UHSAX                           __uhsax\n+#define __USAD8                           __usad8\n+#define __USADA8                          __usada8\n+#define __SSAT16                          __ssat16\n+#define __USAT16                          __usat16\n+#define __UXTB16                          __uxtb16\n+#define __UXTAB16                         __uxtab16\n+#define __SXTB16                          __sxtb16\n+#define __SXTAB16                         __sxtab16\n+#define __SMUAD                           __smuad\n+#define __SMUADX                          __smuadx\n+#define __SMLAD                           __smlad\n+#define __SMLADX                          __smladx\n+#define __SMLALD                          __smlald\n+#define __SMLALDX                         __smlaldx\n+#define __SMUSD                           __smusd\n+#define __SMUSDX                          __smusdx\n+#define __SMLSD                           __smlsd\n+#define __SMLSDX                          __smlsdx\n+#define __SMLSLD                          __smlsld\n+#define __SMLSLDX                         __smlsldx\n+#define __SEL                             __sel\n+#define __QADD                            __qadd\n+#define __QSUB                            __qsub\n+\n+#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n+                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n+\n+#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n+                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n+\n+#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \\\n+                                                      ((int64_t)(ARG3) << 32)      ) >> 32))\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#include <cmsis_iar.h>\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#include <cmsis_ccs.h>\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usad8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usada8 %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SSAT16(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"ssat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+#define __USAT16(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"usat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smuad %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smuadx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlad %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smladx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SMLALD(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+#define __SMLALDX(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smusd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smusdx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlsd %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlsdx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SMLSLD(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+#define __SMLSLDX(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sel %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+#define __PKHBT(ARG1,ARG2,ARG3) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n+  __ASM (\"pkhbt %0, %1, %2, lsl %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n+  __RES; \\\n+ })\n+\n+#define __PKHTB(ARG1,ARG2,ARG3) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n+  if (ARG3 == 0) \\\n+    __ASM (\"pkhtb %0, %1, %2\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2)  ); \\\n+  else \\\n+    __ASM (\"pkhtb %0, %1, %2, asr %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n+  __RES; \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n+{\n+ int32_t result;\n+\n+ __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n+ return(result);\n+}\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+/* not yet supported */\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+#endif\n+\n+/*@} end of group CMSIS_SIMD_intrinsics */\n+\n+\n+#endif /* __CORE_CM4_SIMD_H */\n+\n+#ifdef __cplusplus\n+}\n+#endif\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/core_cmFunc.h ./chip/inc/core_cmFunc.h\n--- a_tnusFF/chip/inc/core_cmFunc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/core_cmFunc.h\t2016-10-22 23:17:43.548840278 -0300\n@@ -0,0 +1,636 @@\n+/**************************************************************************//**\n+ * @file     core_cmFunc.h\n+ * @brief    CMSIS Cortex-M Core Function Access Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifndef __CORE_CMFUNC_H\n+#define __CORE_CMFUNC_H\n+\n+\n+/* ###########################  Core Function Access  ########################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n+  @{\n+ */\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+#if (__ARMCC_VERSION < 400677)\n+  #error \"Please use ARM Compiler Toolchain V4.0.677 or later!\"\n+#endif\n+\n+/* intrinsic void __enable_irq();     */\n+/* intrinsic void __disable_irq();    */\n+\n+/** \\brief  Get Control Register\n+\n+    This function returns the content of the Control Register.\n+\n+    \\return               Control Register value\n+ */\n+__STATIC_INLINE uint32_t __get_CONTROL(void)\n+{\n+  register uint32_t __regControl         __ASM(\"control\");\n+  return(__regControl);\n+}\n+\n+\n+/** \\brief  Set Control Register\n+\n+    This function writes the given value to the Control Register.\n+\n+    \\param [in]    control  Control Register value to set\n+ */\n+__STATIC_INLINE void __set_CONTROL(uint32_t control)\n+{\n+  register uint32_t __regControl         __ASM(\"control\");\n+  __regControl = control;\n+}\n+\n+\n+/** \\brief  Get IPSR Register\n+\n+    This function returns the content of the IPSR Register.\n+\n+    \\return               IPSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_IPSR(void)\n+{\n+  register uint32_t __regIPSR          __ASM(\"ipsr\");\n+  return(__regIPSR);\n+}\n+\n+\n+/** \\brief  Get APSR Register\n+\n+    This function returns the content of the APSR Register.\n+\n+    \\return               APSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_APSR(void)\n+{\n+  register uint32_t __regAPSR          __ASM(\"apsr\");\n+  return(__regAPSR);\n+}\n+\n+\n+/** \\brief  Get xPSR Register\n+\n+    This function returns the content of the xPSR Register.\n+\n+    \\return               xPSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_xPSR(void)\n+{\n+  register uint32_t __regXPSR          __ASM(\"xpsr\");\n+  return(__regXPSR);\n+}\n+\n+\n+/** \\brief  Get Process Stack Pointer\n+\n+    This function returns the current value of the Process Stack Pointer (PSP).\n+\n+    \\return               PSP Register value\n+ */\n+__STATIC_INLINE uint32_t __get_PSP(void)\n+{\n+  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n+  return(__regProcessStackPointer);\n+}\n+\n+\n+/** \\brief  Set Process Stack Pointer\n+\n+    This function assigns the given value to the Process Stack Pointer (PSP).\n+\n+    \\param [in]    topOfProcStack  Process Stack Pointer value to set\n+ */\n+__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\n+{\n+  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n+  __regProcessStackPointer = topOfProcStack;\n+}\n+\n+\n+/** \\brief  Get Main Stack Pointer\n+\n+    This function returns the current value of the Main Stack Pointer (MSP).\n+\n+    \\return               MSP Register value\n+ */\n+__STATIC_INLINE uint32_t __get_MSP(void)\n+{\n+  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n+  return(__regMainStackPointer);\n+}\n+\n+\n+/** \\brief  Set Main Stack Pointer\n+\n+    This function assigns the given value to the Main Stack Pointer (MSP).\n+\n+    \\param [in]    topOfMainStack  Main Stack Pointer value to set\n+ */\n+__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\n+{\n+  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n+  __regMainStackPointer = topOfMainStack;\n+}\n+\n+\n+/** \\brief  Get Priority Mask\n+\n+    This function returns the current state of the priority mask bit from the Priority Mask Register.\n+\n+    \\return               Priority Mask value\n+ */\n+__STATIC_INLINE uint32_t __get_PRIMASK(void)\n+{\n+  register uint32_t __regPriMask         __ASM(\"primask\");\n+  return(__regPriMask);\n+}\n+\n+\n+/** \\brief  Set Priority Mask\n+\n+    This function assigns the given value to the Priority Mask Register.\n+\n+    \\param [in]    priMask  Priority Mask\n+ */\n+__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\n+{\n+  register uint32_t __regPriMask         __ASM(\"primask\");\n+  __regPriMask = (priMask);\n+}\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Enable FIQ\n+\n+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+#define __enable_fault_irq                __enable_fiq\n+\n+\n+/** \\brief  Disable FIQ\n+\n+    This function disables FIQ interrupts by setting the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+#define __disable_fault_irq               __disable_fiq\n+\n+\n+/** \\brief  Get Base Priority\n+\n+    This function returns the current value of the Base Priority register.\n+\n+    \\return               Base Priority register value\n+ */\n+__STATIC_INLINE uint32_t  __get_BASEPRI(void)\n+{\n+  register uint32_t __regBasePri         __ASM(\"basepri\");\n+  return(__regBasePri);\n+}\n+\n+\n+/** \\brief  Set Base Priority\n+\n+    This function assigns the given value to the Base Priority register.\n+\n+    \\param [in]    basePri  Base Priority value to set\n+ */\n+__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)\n+{\n+  register uint32_t __regBasePri         __ASM(\"basepri\");\n+  __regBasePri = (basePri & 0xff);\n+}\n+\n+\n+/** \\brief  Get Fault Mask\n+\n+    This function returns the current value of the Fault Mask register.\n+\n+    \\return               Fault Mask register value\n+ */\n+__STATIC_INLINE uint32_t __get_FAULTMASK(void)\n+{\n+  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n+  return(__regFaultMask);\n+}\n+\n+\n+/** \\brief  Set Fault Mask\n+\n+    This function assigns the given value to the Fault Mask register.\n+\n+    \\param [in]    faultMask  Fault Mask value to set\n+ */\n+__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\n+{\n+  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n+  __regFaultMask = (faultMask & (uint32_t)1);\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+#if       (__CORTEX_M == 0x04)\n+\n+/** \\brief  Get FPSCR\n+\n+    This function returns the current value of the Floating Point Status/Control register.\n+\n+    \\return               Floating Point Status/Control register value\n+ */\n+__STATIC_INLINE uint32_t __get_FPSCR(void)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  register uint32_t __regfpscr         __ASM(\"fpscr\");\n+  return(__regfpscr);\n+#else\n+   return(0);\n+#endif\n+}\n+\n+\n+/** \\brief  Set FPSCR\n+\n+    This function assigns the given value to the Floating Point Status/Control register.\n+\n+    \\param [in]    fpscr  Floating Point Status/Control value to set\n+ */\n+__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  register uint32_t __regfpscr         __ASM(\"fpscr\");\n+  __regfpscr = (fpscr);\n+#endif\n+}\n+\n+#endif /* (__CORTEX_M == 0x04) */\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+#include <cmsis_iar.h>\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+#include <cmsis_ccs.h>\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/** \\brief  Enable IRQ Interrupts\n+\n+  This function enables IRQ interrupts by clearing the I-bit in the CPSR.\n+  Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)\n+{\n+  __ASM volatile (\"cpsie i\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Disable IRQ Interrupts\n+\n+  This function disables IRQ interrupts by setting the I-bit in the CPSR.\n+  Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)\n+{\n+  __ASM volatile (\"cpsid i\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Control Register\n+\n+    This function returns the content of the Control Register.\n+\n+    \\return               Control Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Control Register\n+\n+    This function writes the given value to the Control Register.\n+\n+    \\param [in]    control  Control Register value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)\n+{\n+  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n+}\n+\n+\n+/** \\brief  Get IPSR Register\n+\n+    This function returns the content of the IPSR Register.\n+\n+    \\return               IPSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get APSR Register\n+\n+    This function returns the content of the APSR Register.\n+\n+    \\return               APSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get xPSR Register\n+\n+    This function returns the content of the xPSR Register.\n+\n+    \\return               xPSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get Process Stack Pointer\n+\n+    This function returns the current value of the Process Stack Pointer (PSP).\n+\n+    \\return               PSP Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)\n+{\n+  register uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, psp\\n\"  : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Process Stack Pointer\n+\n+    This function assigns the given value to the Process Stack Pointer (PSP).\n+\n+    \\param [in]    topOfProcStack  Process Stack Pointer value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\n+{\n+  __ASM volatile (\"MSR psp, %0\\n\" : : \"r\" (topOfProcStack) : \"sp\");\n+}\n+\n+\n+/** \\brief  Get Main Stack Pointer\n+\n+    This function returns the current value of the Main Stack Pointer (MSP).\n+\n+    \\return               MSP Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)\n+{\n+  register uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, msp\\n\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Main Stack Pointer\n+\n+    This function assigns the given value to the Main Stack Pointer (MSP).\n+\n+    \\param [in]    topOfMainStack  Main Stack Pointer value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\n+{\n+  __ASM volatile (\"MSR msp, %0\\n\" : : \"r\" (topOfMainStack) : \"sp\");\n+}\n+\n+\n+/** \\brief  Get Priority Mask\n+\n+    This function returns the current state of the priority mask bit from the Priority Mask Register.\n+\n+    \\return               Priority Mask value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Priority Mask\n+\n+    This function assigns the given value to the Priority Mask Register.\n+\n+    \\param [in]    priMask  Priority Mask\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\n+{\n+  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n+}\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Enable FIQ\n+\n+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)\n+{\n+  __ASM volatile (\"cpsie f\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Disable FIQ\n+\n+    This function disables FIQ interrupts by setting the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)\n+{\n+  __ASM volatile (\"cpsid f\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Base Priority\n+\n+    This function returns the current value of the Base Priority register.\n+\n+    \\return               Base Priority register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, basepri_max\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Base Priority\n+\n+    This function assigns the given value to the Base Priority register.\n+\n+    \\param [in]    basePri  Base Priority value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)\n+{\n+  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (value) : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Fault Mask\n+\n+    This function returns the current value of the Fault Mask register.\n+\n+    \\return               Fault Mask register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Fault Mask\n+\n+    This function assigns the given value to the Fault Mask register.\n+\n+    \\param [in]    faultMask  Fault Mask value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\n+{\n+  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+#if       (__CORTEX_M == 0x04)\n+\n+/** \\brief  Get FPSCR\n+\n+    This function returns the current value of the Floating Point Status/Control register.\n+\n+    \\return               Floating Point Status/Control register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  uint32_t result;\n+\n+  /* Empty asm statement works as a scheduling barrier */\n+  __ASM volatile (\"\");\n+  __ASM volatile (\"VMRS %0, fpscr\" : \"=r\" (result) );\n+  __ASM volatile (\"\");\n+  return(result);\n+#else\n+   return(0);\n+#endif\n+}\n+\n+\n+/** \\brief  Set FPSCR\n+\n+    This function assigns the given value to the Floating Point Status/Control register.\n+\n+    \\param [in]    fpscr  Floating Point Status/Control value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  /* Empty asm statement works as a scheduling barrier */\n+  __ASM volatile (\"\");\n+  __ASM volatile (\"VMSR fpscr, %0\" : : \"r\" (fpscr) : \"vfpcc\");\n+  __ASM volatile (\"\");\n+#endif\n+}\n+\n+#endif /* (__CORTEX_M == 0x04) */\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+/*\n+ * The CMSIS functions have been implemented as intrinsics in the compiler.\n+ * Please use \"carm -?i\" to get an up to date list of all instrinsics,\n+ * Including the CMSIS ones.\n+ */\n+\n+#endif\n+\n+/*@} end of CMSIS_Core_RegAccFunctions */\n+\n+\n+#endif /* __CORE_CMFUNC_H */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/core_cmInstr.h ./chip/inc/core_cmInstr.h\n--- a_tnusFF/chip/inc/core_cmInstr.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/core_cmInstr.h\t2016-10-22 23:17:43.548840278 -0300\n@@ -0,0 +1,688 @@\n+/**************************************************************************//**\n+ * @file     core_cmInstr.h\n+ * @brief    CMSIS Cortex-M Core Instruction Access Header File\n+ * @version  V3.20\n+ * @date     05. March 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifndef __CORE_CMINSTR_H\n+#define __CORE_CMINSTR_H\n+\n+\n+/* ##########################  Core Instruction Access  ######################### */\n+/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n+  Access to dedicated instructions\n+  @{\n+*/\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+#if (__ARMCC_VERSION < 400677)\n+  #error \"Please use ARM Compiler Toolchain V4.0.677 or later!\"\n+#endif\n+\n+\n+/** \\brief  No Operation\n+\n+    No Operation does nothing. This instruction can be used for code alignment purposes.\n+ */\n+#define __NOP                             __nop\n+\n+\n+/** \\brief  Wait For Interrupt\n+\n+    Wait For Interrupt is a hint instruction that suspends execution\n+    until one of a number of events occurs.\n+ */\n+#define __WFI                             __wfi\n+\n+\n+/** \\brief  Wait For Event\n+\n+    Wait For Event is a hint instruction that permits the processor to enter\n+    a low-power state until one of a number of events occurs.\n+ */\n+#define __WFE                             __wfe\n+\n+\n+/** \\brief  Send Event\n+\n+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n+ */\n+#define __SEV                             __sev\n+\n+\n+/** \\brief  Instruction Synchronization Barrier\n+\n+    Instruction Synchronization Barrier flushes the pipeline in the processor,\n+    so that all instructions following the ISB are fetched from cache or\n+    memory, after the instruction has been completed.\n+ */\n+#define __ISB()                           __isb(0xF)\n+\n+\n+/** \\brief  Data Synchronization Barrier\n+\n+    This function acts as a special kind of Data Memory Barrier.\n+    It completes when all explicit memory accesses before this instruction complete.\n+ */\n+#define __DSB()                           __dsb(0xF)\n+\n+\n+/** \\brief  Data Memory Barrier\n+\n+    This function ensures the apparent order of the explicit memory operations before\n+    and after the instruction, without ensuring their completion.\n+ */\n+#define __DMB()                           __dmb(0xF)\n+\n+\n+/** \\brief  Reverse byte order (32 bit)\n+\n+    This function reverses the byte order in integer value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#define __REV                             __rev\n+\n+\n+/** \\brief  Reverse byte order (16 bit)\n+\n+    This function reverses the byte order in two unsigned short values.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#ifndef __NO_EMBEDDED_ASM\n+__attribute__((section(\".rev16_text\"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)\n+{\n+  rev16 r0, r0\n+  bx lr\n+}\n+#endif\n+\n+/** \\brief  Reverse byte order in signed short value\n+\n+    This function reverses the byte order in a signed short value with sign extension to integer.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#ifndef __NO_EMBEDDED_ASM\n+__attribute__((section(\".revsh_text\"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)\n+{\n+  revsh r0, r0\n+  bx lr\n+}\n+#endif\n+\n+\n+/** \\brief  Rotate Right in unsigned value (32 bit)\n+\n+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n+\n+    \\param [in]    value  Value to rotate\n+    \\param [in]    value  Number of Bits to rotate\n+    \\return               Rotated value\n+ */\n+#define __ROR                             __ror\n+\n+\n+/** \\brief  Breakpoint\n+\n+    This function causes the processor to enter Debug state.\n+    Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n+\n+    \\param [in]    value  is ignored by the processor.\n+                   If required, a debugger can use it to store additional information about the breakpoint.\n+ */\n+#define __BKPT(value)                       __breakpoint(value)\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Reverse bit order of value\n+\n+    This function reverses the bit order of the given value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#define __RBIT                            __rbit\n+\n+\n+/** \\brief  LDR Exclusive (8 bit)\n+\n+    This function performs a exclusive LDR command for 8 bit value.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return             value of type uint8_t at (*ptr)\n+ */\n+#define __LDREXB(ptr)                     ((uint8_t ) __ldrex(ptr))\n+\n+\n+/** \\brief  LDR Exclusive (16 bit)\n+\n+    This function performs a exclusive LDR command for 16 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint16_t at (*ptr)\n+ */\n+#define __LDREXH(ptr)                     ((uint16_t) __ldrex(ptr))\n+\n+\n+/** \\brief  LDR Exclusive (32 bit)\n+\n+    This function performs a exclusive LDR command for 32 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint32_t at (*ptr)\n+ */\n+#define __LDREXW(ptr)                     ((uint32_t ) __ldrex(ptr))\n+\n+\n+/** \\brief  STR Exclusive (8 bit)\n+\n+    This function performs a exclusive STR command for 8 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXB(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  STR Exclusive (16 bit)\n+\n+    This function performs a exclusive STR command for 16 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXH(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  STR Exclusive (32 bit)\n+\n+    This function performs a exclusive STR command for 32 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXW(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  Remove the exclusive lock\n+\n+    This function removes the exclusive lock which is created by LDREX.\n+\n+ */\n+#define __CLREX                           __clrex\n+\n+\n+/** \\brief  Signed Saturate\n+\n+    This function saturates a signed value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (1..32)\n+    \\return             Saturated value\n+ */\n+#define __SSAT                            __ssat\n+\n+\n+/** \\brief  Unsigned Saturate\n+\n+    This function saturates an unsigned value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (0..31)\n+    \\return             Saturated value\n+ */\n+#define __USAT                            __usat\n+\n+\n+/** \\brief  Count leading zeros\n+\n+    This function counts the number of leading zeros of a data value.\n+\n+    \\param [in]  value  Value to count the leading zeros\n+    \\return             number of leading zeros in value\n+ */\n+#define __CLZ                             __clz\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+#include <cmsis_iar.h>\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+#include <cmsis_ccs.h>\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/* Define macros for porting to both thumb1 and thumb2.\n+ * For thumb1, use low register (r0-r7), specified by constrant \"l\"\n+ * Otherwise, use general registers, specified by constrant \"r\" */\n+#if defined (__thumb__) && !defined (__thumb2__)\n+#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n+#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n+#else\n+#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n+#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n+#endif\n+\n+/** \\brief  No Operation\n+\n+    No Operation does nothing. This instruction can be used for code alignment purposes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void)\n+{\n+  __ASM volatile (\"nop\");\n+}\n+\n+\n+/** \\brief  Wait For Interrupt\n+\n+    Wait For Interrupt is a hint instruction that suspends execution\n+    until one of a number of events occurs.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void)\n+{\n+  __ASM volatile (\"wfi\");\n+}\n+\n+\n+/** \\brief  Wait For Event\n+\n+    Wait For Event is a hint instruction that permits the processor to enter\n+    a low-power state until one of a number of events occurs.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void)\n+{\n+  __ASM volatile (\"wfe\");\n+}\n+\n+\n+/** \\brief  Send Event\n+\n+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void)\n+{\n+  __ASM volatile (\"sev\");\n+}\n+\n+\n+/** \\brief  Instruction Synchronization Barrier\n+\n+    Instruction Synchronization Barrier flushes the pipeline in the processor,\n+    so that all instructions following the ISB are fetched from cache or\n+    memory, after the instruction has been completed.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void)\n+{\n+  __ASM volatile (\"isb\");\n+}\n+\n+\n+/** \\brief  Data Synchronization Barrier\n+\n+    This function acts as a special kind of Data Memory Barrier.\n+    It completes when all explicit memory accesses before this instruction complete.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void)\n+{\n+  __ASM volatile (\"dsb\");\n+}\n+\n+\n+/** \\brief  Data Memory Barrier\n+\n+    This function ensures the apparent order of the explicit memory operations before\n+    and after the instruction, without ensuring their completion.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void)\n+{\n+  __ASM volatile (\"dmb\");\n+}\n+\n+\n+/** \\brief  Reverse byte order (32 bit)\n+\n+    This function reverses the byte order in integer value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value)\n+{\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)\n+  return __builtin_bswap32(value);\n+#else\n+  uint32_t result;\n+\n+  __ASM volatile (\"rev %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+#endif\n+}\n+\n+\n+/** \\brief  Reverse byte order (16 bit)\n+\n+    This function reverses the byte order in two unsigned short values.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"rev16 %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Reverse byte order in signed short value\n+\n+    This function reverses the byte order in a signed short value with sign extension to integer.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value)\n+{\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+  return (short)__builtin_bswap16(value);\n+#else\n+  uint32_t result;\n+\n+  __ASM volatile (\"revsh %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+#endif\n+}\n+\n+\n+/** \\brief  Rotate Right in unsigned value (32 bit)\n+\n+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n+\n+    \\param [in]    value  Value to rotate\n+    \\param [in]    value  Number of Bits to rotate\n+    \\return               Rotated value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n+{\n+  return (op1 >> op2) | (op1 << (32 - op2));\n+}\n+\n+\n+/** \\brief  Breakpoint\n+\n+    This function causes the processor to enter Debug state.\n+    Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n+\n+    \\param [in]    value  is ignored by the processor.\n+                   If required, a debugger can use it to store additional information about the breakpoint.\n+ */\n+#define __BKPT(value)                       __ASM volatile (\"bkpt \"#value)\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Reverse bit order of value\n+\n+    This function reverses the bit order of the given value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value)\n+{\n+  uint32_t result;\n+\n+   __ASM volatile (\"rbit %0, %1\" : \"=r\" (result) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (8 bit)\n+\n+    This function performs a exclusive LDR command for 8 bit value.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return             value of type uint8_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)\n+{\n+    uint32_t result;\n+\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+   __ASM volatile (\"ldrexb %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+#else\n+    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n+       accepted by assembler. So has to use following less efficient pattern.\n+    */\n+   __ASM volatile (\"ldrexb %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n+#endif\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (16 bit)\n+\n+    This function performs a exclusive LDR command for 16 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint16_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)\n+{\n+    uint32_t result;\n+\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+   __ASM volatile (\"ldrexh %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+#else\n+    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n+       accepted by assembler. So has to use following less efficient pattern.\n+    */\n+   __ASM volatile (\"ldrexh %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n+#endif\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (32 bit)\n+\n+    This function performs a exclusive LDR command for 32 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint32_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)\n+{\n+    uint32_t result;\n+\n+   __ASM volatile (\"ldrex %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (8 bit)\n+\n+    This function performs a exclusive STR command for 8 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strexb %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (16 bit)\n+\n+    This function performs a exclusive STR command for 16 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strexh %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (32 bit)\n+\n+    This function performs a exclusive STR command for 32 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strex %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  Remove the exclusive lock\n+\n+    This function removes the exclusive lock which is created by LDREX.\n+\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)\n+{\n+  __ASM volatile (\"clrex\" ::: \"memory\");\n+}\n+\n+\n+/** \\brief  Signed Saturate\n+\n+    This function saturates a signed value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (1..32)\n+    \\return             Saturated value\n+ */\n+#define __SSAT(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"ssat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+\n+/** \\brief  Unsigned Saturate\n+\n+    This function saturates an unsigned value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (0..31)\n+    \\return             Saturated value\n+ */\n+#define __USAT(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"usat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+\n+/** \\brief  Count leading zeros\n+\n+    This function counts the number of leading zeros of a data value.\n+\n+    \\param [in]  value  Value to count the leading zeros\n+    \\return             number of leading zeros in value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value)\n+{\n+   uint32_t result;\n+\n+  __ASM volatile (\"clz %0, %1\" : \"=r\" (result) : \"r\" (value) );\n+  return(result);\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+/*\n+ * The CMSIS functions have been implemented as intrinsics in the compiler.\n+ * Please use \"carm -?i\" to get an up to date list of all intrinsics,\n+ * Including the CMSIS ones.\n+ */\n+\n+#endif\n+\n+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n+\n+#endif /* __CORE_CMINSTR_H */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/cpuctrl_5410x.h ./chip/inc/cpuctrl_5410x.h\n--- a_tnusFF/chip/inc/cpuctrl_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/cpuctrl_5410x.h\t2016-10-22 23:17:43.548840278 -0300\n@@ -0,0 +1,117 @@\n+/*\n+ * @brief LPC5410X CPU multi-core support driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CPUCTRL_5410X_H_\n+#define __CPUCTRL_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CPUCTRL_5410X CHIP: LPC5410X CPU multi-core support driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * This driver helps with determine which MCU core the software is running,\n+ * whether the MCU core is in master or slave mode, and provides functions\n+ * for master and slave core control.<br>\n+ *\n+ * The functions for the driver are provided as part of the\n+ * @ref POWER_LIBRARY_5410X library. For more information on using the\n+ * LPC5410x LPCopen package with multi-core, see @ref CHIP_5410X_MULTICORE<br>.\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tDetermine which MCU this code is running on\n+ * @return  true if executing on the CM4, or false if executing on the CM0+\n+ */\n+__STATIC_INLINE bool Chip_CPU_IsM4Core(void) {\n+\t/* M4 core is designated by values 0xC24 on bits 15..4 */\n+\tif (((SCB->CPUID >> 4) & 0xFFF) == 0xC24) {\n+\t\treturn true;\n+\t}\n+\n+\treturn false;\n+}\n+\n+/* Core selection */\n+typedef enum {\n+\tCORESELECT_M0PLUS = 0,\n+\tCORESELECT_M4\n+} CORESELECT_T;\n+\n+/**\n+ * @brief\tSelect master core and system power control ownership\n+ * @return\tNothing\n+ * @note\tThis function can be used to select the master core and which\n+ * core can powerdown the system. The master core can be re-selected on\n+ * either the current master or slave core. Power control ownership is used\n+ * to select which core can place the system in DEEP SLEEP, POWERDOWN, and\n+ * DEEP POWERDOWN modes. (See @ref Chip_POWER_EnterPowerMode). Note both\n+ * the master and slave cores can used SLEEP mode, but only the master core\n+ * can use the other modes.\n+ */\n+void Chip_CPU_SelectMasterCore(CORESELECT_T master, CORESELECT_T ownerPower);\n+\n+/**\n+ * @brief\tDetermine if this core is a slave or master\n+ * @return  true if this MCU is operating as the master, or false if operating as a slave\n+ */\n+bool Chip_CPU_IsMasterCore(void);\n+\n+/**\n+ * @brief\tSetup M0+ boot and reset M0+ core\n+ * @param\tcoentry\t\t: Pointer to boot entry point for M0+ core\n+ * @param\tcostackptr\t: Pointer to where stack should be located for M0+ core\n+ * @return  Nothing\n+ * @note\tWill setup boot stack and entry point, enable M0+ clock and then\n+ * reset M0+ core.\n+ */\n+void Chip_CPU_CM0Boot(uint32_t *coentry, uint32_t *costackptr);\n+\n+/**\n+ * @brief\tSetup M4 boot and reset M4 core\n+ * @param\tcoentry\t\t: Pointer to boot entry point for M4 core\n+ * @param\tcostackptr\t: Pointer to where stack should be located for M4 core\n+ * @return  Nothing\n+ * @note\tWill setup boot stack and entry point, enable M4 clock and then\n+ * reset M0+ core.\n+ */\n+void Chip_CPU_CM4Boot(uint32_t *coentry, uint32_t *costackptr);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CPUCTRL_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/crc_5410x.h ./chip/inc/crc_5410x.h\n--- a_tnusFF/chip/inc/crc_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/crc_5410x.h\t2016-10-22 23:17:43.552840278 -0300\n@@ -0,0 +1,262 @@\n+/*\n+ * @brief LPC5410X Cyclic Redundancy Check (CRC) Engine driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CRC_5410X_H_\n+#define __CRC_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CRC_5410X CHIP: LPC5410X Cyclic Redundancy Check Engine driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief CRC register block structure\n+ */\n+typedef struct {\t\t\t\t\t/*!< CRC Structure */\n+\t__IO    uint32_t    MODE;\t\t/*!< CRC Mode Register */\n+\t__IO    uint32_t    SEED;\t\t/*!< CRC SEED Register */\n+\tunion {\n+\t\t__I     uint32_t    SUM;\t/*!< CRC Checksum Register. */\n+\t\t__O     uint32_t    WRDATA32;\t/*!< CRC Data Register: write size 32-bit*/\n+\t\t__O     uint16_t    WRDATA16;\t/*!< CRC Data Register: write size 16-bit*/\n+\t\t__O     uint8_t     WRDATA8;\t/*!< CRC Data Register: write size 8-bit*/\n+\t};\n+\n+} LPC_CRC_T;\n+\n+/*\n+ * @brief CRC MODE register description\n+ */\n+#define CRC_MODE_POLY_BITMASK   ((0x03))\t/** CRC polynomial Bit mask */\n+#define CRC_MODE_POLY_CCITT     (0x00)\t\t/** Select CRC-CCITT polynomial */\n+#define CRC_MODE_POLY_CRC16     (0x01)\t\t/** Select CRC-16 polynomial */\n+#define CRC_MODE_POLY_CRC32     (0x02)\t\t/** Select CRC-32 polynomial */\n+#define CRC_MODE_WRDATA_BITMASK (0x03 << 2)\t/** CRC WR_Data Config Bit mask */\n+#define CRC_MODE_WRDATA_BIT_RVS (1 << 2)\t/** Select Bit order reverse for WR_DATA (per byte) */\n+#define CRC_MODE_WRDATA_CMPL    (1 << 3)\t/** Select One's complement for WR_DATA */\n+#define CRC_MODE_SUM_BITMASK    (0x03 << 4)\t/** CRC Sum Config Bit mask */\n+#define CRC_MODE_SUM_BIT_RVS    (1 << 4)\t/** Select Bit order reverse for CRC_SUM */\n+#define CRC_MODE_SUM_CMPL       (1 << 5)\t/** Select One's complement for CRC_SUM */\n+\n+#define MODE_CFG_CCITT          (0x00)\t/** Pre-defined mode word for default CCITT setup */\n+#define MODE_CFG_CRC16          (0x15)\t/** Pre-defined mode word for default CRC16 setup */\n+#define MODE_CFG_CRC32          (0x36)\t/** Pre-defined mode word for default CRC32 setup */\n+\n+#define CRC_SEED_CCITT          (0x0000FFFF)/** Initial seed value for CCITT mode */\n+#define CRC_SEED_CRC16          (0x00000000)/** Initial seed value for CRC16 mode */\n+#define CRC_SEED_CRC32          (0xFFFFFFFF)/** Initial seed value for CRC32 mode */\n+\n+/**\n+ * @brief CRC polynomial\n+ */\n+typedef enum IP_CRC_001_POLY {\n+\tCRC_POLY_CCITT = CRC_MODE_POLY_CCITT,\t/**< CRC-CCIT polynomial */\n+\tCRC_POLY_CRC16 = CRC_MODE_POLY_CRC16,\t/**< CRC-16 polynomial */\n+\tCRC_POLY_CRC32 = CRC_MODE_POLY_CRC32,\t/**< CRC-32 polynomial */\n+\tCRC_POLY_LAST,\n+} CRC_POLY_T;\n+\n+/**\n+ * @brief\tInitializes the CRC Engine\n+ * @return\tNothing\n+ */\n+void Chip_CRC_Init(void);\n+\n+/**\n+ * @brief\tDeinitializes the CRC Engine\n+ * @return\tNothing\n+ */\n+void Chip_CRC_Deinit(void);\n+\n+/**\n+ * @brief\tSet the polynomial used for the CRC calculation\n+ * @param\tpoly\t: The enumerated polynomial to be used\n+ * @param\tflags\t: An Or'ed value of flags that setup the mode\n+ * @return\tNothing\n+ * @note\tFlags for setting up the mode word include CRC_MODE_WRDATA_BIT_RVS,\n+ * CRC_MODE_WRDATA_CMPL, CRC_MODE_SUM_BIT_RVS, and CRC_MODE_SUM_CMPL.\n+ */\n+__STATIC_INLINE void Chip_CRC_SetPoly(CRC_POLY_T poly, uint32_t flags)\n+{\n+\tLPC_CRC->MODE = (uint32_t) poly | flags;\n+}\n+\n+/**\n+ * @brief\tSets up the CRC engine for CRC16 mode\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_CRC_UseCRC16(void)\n+{\n+\tLPC_CRC->MODE = MODE_CFG_CRC16;\n+\tLPC_CRC->SEED = CRC_SEED_CRC16;\n+}\n+\n+/**\n+ * @brief\tSets up the CRC engine for CRC32 mode\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_CRC_UseCRC32(void)\n+{\n+\tLPC_CRC->MODE = MODE_CFG_CRC32;\n+\tLPC_CRC->SEED = CRC_SEED_CRC32;\n+}\n+\n+/**\n+ * @brief\tSets up the CRC engine for CCITT mode\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_CRC_UseCCITT(void)\n+{\n+\tLPC_CRC->MODE = MODE_CFG_CCITT;\n+\tLPC_CRC->SEED = CRC_SEED_CCITT;\n+}\n+\n+/**\n+ * @brief\tEngage the CRC engine with defaults based on the polynomial to be used\n+ * @param\tpoly\t: The enumerated polynomial to be used\n+ * @return\tNothing\n+ */\n+void Chip_CRC_UseDefaultConfig(CRC_POLY_T poly);\n+\n+/**\n+ * @brief\tSet the CRC Mode bits\n+ * @param\tmode\t: Mode value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_CRC_SetMode(uint32_t mode)\n+{\n+\tLPC_CRC->MODE = mode;\n+}\n+\n+/**\n+ * @brief\tGet the CRC Mode bits\n+ * @return\tThe current value of the CRC Mode bits\n+ */\n+__STATIC_INLINE uint32_t Chip_CRC_GetMode(void)\n+{\n+\treturn LPC_CRC->MODE;\n+}\n+\n+/**\n+ * @brief\tSet the seed bits used by the CRC_SUM register\n+ * @param\tseed\t: Seed value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_CRC_SetSeed(uint32_t seed)\n+{\n+\tLPC_CRC->SEED = seed;\n+}\n+\n+/**\n+ * @brief\tGet the CRC seed value\n+ * @return\tSeed value\n+ */\n+__STATIC_INLINE uint32_t Chip_CRC_GetSeed(void)\n+{\n+\treturn LPC_CRC->SEED;\n+}\n+\n+/**\n+ * @brief\tConvenience function for writing 8-bit data to the CRC engine\n+ * @param\tdata\t: 8-bit data to write\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_CRC_Write8(uint8_t data)\n+{\n+\tLPC_CRC->WRDATA8 = data;\n+}\n+\n+/**\n+ * @brief\tConvenience function for writing 16-bit data to the CRC engine\n+ * @param\tdata\t: 16-bit data to write\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_CRC_Write16(uint16_t data)\n+{\n+\tLPC_CRC->WRDATA16 = data;\n+}\n+\n+/**\n+ * @brief\tConvenience function for writing 32-bit data to the CRC engine\n+ * @param\tdata\t: 32-bit data to write\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_CRC_Write32(uint32_t data)\n+{\n+\tLPC_CRC->WRDATA32 = data;\n+}\n+\n+/**\n+ * @brief\tGets the CRC Sum based on the Mode and Seed as previously configured\n+ * @return\tCRC Checksum value\n+ */\n+__STATIC_INLINE uint32_t Chip_CRC_Sum(void)\n+{\n+\treturn LPC_CRC->SUM;\n+}\n+\n+/**\n+ * @brief\tConvenience function for computing a standard CCITT checksum from an 8-bit data block\n+ * @param\tdata\t: Pointer to the block of 8-bit data\n+ * @param   bytes\t: The number of bytes pointed to by data\n+ * @return\tCheck sum value\n+ */\n+uint32_t Chip_CRC_CRC8(const uint8_t *data, uint32_t bytes);\n+\n+/**\n+ * @brief\tConvenience function for computing a standard CRC16 checksum from 16-bit data block\n+ * @param\tdata\t: Pointer to the block of 16-bit data\n+ * @param   hwords\t: The number of 16 byte entries pointed to by data\n+ * @return\tCheck sum value\n+ */\n+uint32_t Chip_CRC_CRC16(const uint16_t *data, uint32_t hwords);\n+\n+/**\n+ * @brief\tConvenience function for computing a standard CRC32 checksum from 32-bit data block\n+ * @param\tdata\t: Pointer to the block of 32-bit data\n+ * @param   words\t: The number of 32-bit entries pointed to by data\n+ * @return\tCheck sum value\n+ */\n+uint32_t Chip_CRC_CRC32(const uint32_t *data, uint32_t words);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CRC_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/dma_5410x.h ./chip/inc/dma_5410x.h\n--- a_tnusFF/chip/inc/dma_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/dma_5410x.h\t2016-10-22 23:17:43.552840278 -0300\n@@ -0,0 +1,714 @@\n+/*\n+ * @brief LPC5410X DMA driver declarations and functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __DMA_5410X_H\n+#define __DMA_5410X_H\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup DMALEG_5410X CHIP: LPC5410X DMA Engine driver (legacy)\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+/**\n+ * @brief DMA Controller shared registers structure\n+ */\n+typedef struct {\t\t\t\t\t/*!< DMA shared registers structure */\n+\t__IO uint32_t  ENABLESET;\t\t/*!< DMA Channel Enable read and Set for all DMA channels */\n+\t__I  uint32_t  RESERVED0;\n+\t__O  uint32_t  ENABLECLR;\t\t/*!< DMA Channel Enable Clear for all DMA channels */\n+\t__I  uint32_t  RESERVED1;\n+\t__I  uint32_t  ACTIVE;\t\t\t/*!< DMA Channel Active status for all DMA channels */\n+\t__I  uint32_t  RESERVED2;\n+\t__I  uint32_t  BUSY;\t\t\t/*!< DMA Channel Busy status for all DMA channels */\n+\t__I  uint32_t  RESERVED3;\n+\t__IO uint32_t  ERRINT;\t\t\t/*!< DMA Error Interrupt status for all DMA channels */\n+\t__I  uint32_t  RESERVED4;\n+\t__IO uint32_t  INTENSET;\t\t/*!< DMA Interrupt Enable read and Set for all DMA channels */\n+\t__I  uint32_t  RESERVED5;\n+\t__O  uint32_t  INTENCLR;\t\t/*!< DMA Interrupt Enable Clear for all DMA channels */\n+\t__I  uint32_t  RESERVED6;\n+\t__IO  uint32_t  INTA;\t\t\t/*!< DMA Interrupt A status for all DMA channels */\n+\t__I  uint32_t  RESERVED7;\n+\t__IO  uint32_t  INTB;\t\t\t/*!< DMA Interrupt B status for all DMA channels */\n+\t__I  uint32_t  RESERVED8;\n+\t__O  uint32_t  SETVALID;\t\t/*!< DMA Set ValidPending control bits for all DMA channels */\n+\t__I  uint32_t  RESERVED9;\n+\t__O  uint32_t  SETTRIG;\t\t\t/*!< DMA Set Trigger control bits for all DMA channels */\n+\t__I  uint32_t  RESERVED10;\n+\t__O  uint32_t  ABORT;\t\t\t/*!< DMA Channel Abort control for all DMA channels */\n+} LPC_DMA_COMMON_T;\n+\n+/**\n+ * @brief DMA Controller shared registers structure\n+ */\n+typedef struct {\t\t\t\t\t/*!< DMA channel register structure */\n+\t__IO  uint32_t  CFG;\t\t\t\t/*!< DMA Configuration register */\n+\t__I   uint32_t  CTLSTAT;\t\t\t/*!< DMA Control and status register */\n+\t__IO  uint32_t  XFERCFG;\t\t\t/*!< DMA Transfer configuration register */\n+\t__I   uint32_t  RESERVED;\n+} LPC_DMA_CHANNEL_T;\n+\n+/* On LPC540XX, Max DMA channel is 22 */\n+#define MAX_DMA_CHANNEL         (22)\n+\n+/**\n+ * @brief DMA Controller register block structure\n+ */\n+typedef struct {\t\t\t\t\t/*!< DMA Structure */\n+\t__IO uint32_t  CTRL;\t\t\t/*!< DMA control register */\n+\t__I  uint32_t  INTSTAT;\t\t\t/*!< DMA Interrupt status register */\n+\t__IO uint32_t  SRAMBASE;\t\t/*!< DMA SRAM address of the channel configuration table */\n+\t__I  uint32_t  RESERVED2[5];\n+\tLPC_DMA_COMMON_T DMACOMMON[1];\t/*!< DMA shared channel (common) registers */\n+\t__I  uint32_t  RESERVED0[225];\n+\tLPC_DMA_CHANNEL_T DMACH[MAX_DMA_CHANNEL];\t/*!< DMA channel registers */\n+} LPC_DMA_T;\n+\n+/* DMA interrupt status bits (common) */\n+#define DMA_INTSTAT_ACTIVEINT       0x2\t\t/*!< Summarizes whether any enabled interrupts are pending */\n+#define DMA_INTSTAT_ACTIVEERRINT    0x4\t\t/*!< Summarizes whether any error interrupts are pending */\n+\n+/* Support macro for DMA_CHDESC_T */\n+#define DMA_ADDR(addr)      ((uint32_t) (addr))\n+\n+/* Support definitions for setting the configuration of a DMA channel. You\n+   will need to get more information on these options from the User manual. */\n+#define DMA_CFG_PERIPHREQEN     (1 << 0)\t/*!< Enables Peripheral DMA requests */\n+#define DMA_CFG_HWTRIGEN        (1 << 1)\t/*!< Use hardware triggering via imput mux */\n+#define DMA_CFG_TRIGPOL_LOW     (0 << 4)\t/*!< Hardware trigger is active low or falling edge */\n+#define DMA_CFG_TRIGPOL_HIGH    (1 << 4)\t/*!< Hardware trigger is active high or rising edge */\n+#define DMA_CFG_TRIGTYPE_EDGE   (0 << 5)\t/*!< Hardware trigger is edge triggered */\n+#define DMA_CFG_TRIGTYPE_LEVEL  (1 << 5)\t/*!< Hardware trigger is level triggered */\n+#define DMA_CFG_TRIGBURST_SNGL  (0 << 6)\t/*!< Single transfer. Hardware trigger causes a single transfer */\n+#define DMA_CFG_TRIGBURST_BURST (1 << 6)\t/*!< Burst transfer (see UM) */\n+#define DMA_CFG_BURSTPOWER_1    (0 << 8)\t/*!< Set DMA burst size to 1 transfer */\n+#define DMA_CFG_BURSTPOWER_2    (1 << 8)\t/*!< Set DMA burst size to 2 transfers */\n+#define DMA_CFG_BURSTPOWER_4    (2 << 8)\t/*!< Set DMA burst size to 4 transfers */\n+#define DMA_CFG_BURSTPOWER_8    (3 << 8)\t/*!< Set DMA burst size to 8 transfers */\n+#define DMA_CFG_BURSTPOWER_16   (4 << 8)\t/*!< Set DMA burst size to 16 transfers */\n+#define DMA_CFG_BURSTPOWER_32   (5 << 8)\t/*!< Set DMA burst size to 32 transfers */\n+#define DMA_CFG_BURSTPOWER_64   (6 << 8)\t/*!< Set DMA burst size to 64 transfers */\n+#define DMA_CFG_BURSTPOWER_128  (7 << 8)\t/*!< Set DMA burst size to 128 transfers */\n+#define DMA_CFG_BURSTPOWER_256  (8 << 8)\t/*!< Set DMA burst size to 256 transfers */\n+#define DMA_CFG_BURSTPOWER_512  (9 << 8)\t/*!< Set DMA burst size to 512 transfers */\n+#define DMA_CFG_BURSTPOWER_1024 (10 << 8)\t/*!< Set DMA burst size to 1024 transfers */\n+#define DMA_CFG_BURSTPOWER(n)   ((n) << 8)\t/*!< Set DMA burst size to 2^n transfers, max n=10 */\n+#define DMA_CFG_SRCBURSTWRAP    (1 << 14)\t/*!< Source burst wrapping is enabled for this DMA channel */\n+#define DMA_CFG_DSTBURSTWRAP    (1 << 15)\t/*!< Destination burst wrapping is enabled for this DMA channel */\n+#define DMA_CFG_CHPRIORITY(p)   ((p) << 16)\t/*!< Sets DMA channel priority, min 0 (highest), max 3 (lowest) */\n+\n+/* DMA channel control and status register definitions */\n+#define DMA_CTLSTAT_VALIDPENDING    (1 << 0)\t/*!< Valid pending flag for this channel */\n+#define DMA_CTLSTAT_TRIG            (1 << 2)\t/*!< Trigger flag. Indicates that the trigger for this channel is currently set */\n+\n+/* DMA channel transfer configuration registers definitions */\n+#define DMA_XFERCFG_CFGVALID        (1 << 0)\t/*!< Configuration Valid flag */\n+#define DMA_XFERCFG_RELOAD          (1 << 1)\t/*!< Indicates whether the channels control structure will be reloaded when the current descriptor is exhausted */\n+#define DMA_XFERCFG_SWTRIG          (1 << 2)\t/*!< Software Trigger */\n+#define DMA_XFERCFG_CLRTRIG         (1 << 3)\t/*!< Clear Trigger */\n+#define DMA_XFERCFG_SETINTA         (1 << 4)\t/*!< Set Interrupt flag A for this channel to fire when descriptor is complete */\n+#define DMA_XFERCFG_SETINTB         (1 << 5)\t/*!< Set Interrupt flag B for this channel to fire when descriptor is complete */\n+#define DMA_XFERCFG_WIDTH_8         (0 << 8)\t/*!< 8-bit transfers are performed */\n+#define DMA_XFERCFG_WIDTH_16        (1 << 8)\t/*!< 16-bit transfers are performed */\n+#define DMA_XFERCFG_WIDTH_32        (2 << 8)\t/*!< 32-bit transfers are performed */\n+#define DMA_XFERCFG_SRCINC_0        (0 << 12)\t/*!< DMA source address is not incremented after a transfer */\n+#define DMA_XFERCFG_SRCINC_1        (1 << 12)\t/*!< DMA source address is incremented by 1 (width) after a transfer */\n+#define DMA_XFERCFG_SRCINC_2        (2 << 12)\t/*!< DMA source address is incremented by 2 (width) after a transfer */\n+#define DMA_XFERCFG_SRCINC_4        (3 << 12)\t/*!< DMA source address is incremented by 4 (width) after a transfer */\n+#define DMA_XFERCFG_DSTINC_0        (0 << 14)\t/*!< DMA destination address is not incremented after a transfer */\n+#define DMA_XFERCFG_DSTINC_1        (1 << 14)\t/*!< DMA destination address is incremented by 1 (width) after a transfer */\n+#define DMA_XFERCFG_DSTINC_2        (2 << 14)\t/*!< DMA destination address is incremented by 2 (width) after a transfer */\n+#define DMA_XFERCFG_DSTINC_4        (3 << 14)\t/*!< DMA destination address is incremented by 4 (width) after a transfer */\n+#define DMA_XFERCFG_XFERCOUNT(n)    ((n - 1) << 16)\t/*!< DMA transfer count in 'transfers', between (0)1 and (1023)1024 */\n+\n+/* DMA channel mapping - each channel is mapped to an individual peripheral\n+   and direction or a DMA imput mux trigger */\n+typedef enum {\n+\tDMAREQ_UART0_RX = 0,\t\t\t\t/*!< UART00 receive DMA channel */\n+\tDMA_CH0 = DMAREQ_UART0_RX,\n+\tDMAREQ_UART0_TX,\t\t\t\t\t/*!< UART0 transmit DMA channel */\n+\tDMA_CH1 = DMAREQ_UART0_TX,\n+\tDMAREQ_UART1_RX,\t\t\t\t\t/*!< UART1 receive DMA channel */\n+\tDMA_CH2 = DMAREQ_UART1_RX,\n+\tDMAREQ_UART1_TX,\t\t\t\t\t/*!< UART1 transmit DMA channel */\n+\tDMA_CH3 = DMAREQ_UART1_TX,\n+\tDMAREQ_UART2_RX,\t\t\t\t\t/*!< UART2 receive DMA channel */\n+\tDMA_CH4 = DMAREQ_UART2_RX,\n+\tDMAREQ_UART2_TX,\t\t\t\t\t/*!< UART2 transmit DMA channel */\n+\tDMA_CH5 = DMAREQ_UART2_TX,\n+\tDMAREQ_UART3_RX,\t\t\t\t\t/*!< UART3 receive DMA channel */\n+\tDMA_CH6 = DMAREQ_UART3_RX,\n+\tDMAREQ_UART3_TX,\t\t\t\t\t/*!< UART3 transmit DMA channel */\n+\tDMA_CH7 = DMAREQ_UART3_TX,\n+\tDMAREQ_SPI0_RX,\t\t\t\t\t/*!< SPI0 receive DMA channel */\n+\tDMA_CH8 = DMAREQ_SPI0_RX,\n+\tDMAREQ_SPI0_TX,\t\t\t\t\t/*!< SPI0 transmit DMA channel */\n+\tDMA_CH9 = DMAREQ_SPI0_TX,\n+\tDMAREQ_SPI1_RX,\t\t\t\t\t/*!< SPI1 receive DMA channel */\n+\tDMA_CH10 = DMAREQ_SPI1_RX,\n+\tDMAREQ_SPI1_TX,\t\t\t\t\t/*!< SPI1 transmit DMA channel */\n+\tDMA_CH11 = DMAREQ_SPI1_TX,\n+\tDMAREQ_I2C0_SLAVE,\t\t\t\t\t/*!< I2C0 Slave DMA channel */\n+\tDMA_CH12 = DMAREQ_I2C0_SLAVE,\n+\tDMAREQ_I2C0_MASTER,\t\t\t\t\t/*!< I2C0 Master DMA channel */\n+\tDMA_CH13 = DMAREQ_I2C0_MASTER,\n+\tDMAREQ_I2C1_SLAVE,\t\t\t\t\t/*!< I2C1 Slave DMA channel */\n+\tDMA_CH14 = DMAREQ_I2C1_SLAVE,\n+\tDMAREQ_I2C1_MASTER,\t\t\t\t\t/*!< I2C1 Master DMA channel */\n+\tDMA_CH15 = DMAREQ_I2C1_MASTER,\n+\tDMAREQ_I2C2_SLAVE,\t\t\t\t\t/*!< I2C2 Slave DMA channel */\n+\tDMA_CH16 = DMAREQ_I2C2_SLAVE,\n+\tDMAREQ_I2C2_MASTER,\t\t\t\t\t/*!< I2C2 Master DMA channel */\n+\tDMA_CH17 = DMAREQ_I2C2_MASTER,\n+\tDMAREQ_I2C0_MONITOR,\t\t\t\t\t/*!< I2C0 Monitor DMA channel */\n+\tDMA_CH18 = DMAREQ_I2C0_MONITOR,\n+\tDMAREQ_I2C1_MONITOR,\t\t\t\t\t/*!< I2C1 Monitor DMA channel */\n+\tDMA_CH19 = DMAREQ_I2C1_MONITOR,\n+\tDMAREQ_I2C2_MONITOR,\t\t\t\t\t/*!< I2C2 Monitor DMA channel */\n+\tDMA_CH20 = DMAREQ_I2C2_MONITOR,\n+\tRESERVED_SPARE_DMA,\n+\tDMA_CH21 = RESERVED_SPARE_DMA\n+} DMA_CHID_T;\n+\n+/** @defgroup DMALEG_COMMON_5410X CHIP: LPC5410X DMA Controller driver common functions (legacy)\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tInitialize DMA controller\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_Init(LPC_DMA_T *pDMA)\n+{\n+\t(void) pDMA;\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_DMA);\n+}\n+\n+/**\n+ * @brief\tDe-Initialize DMA controller\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_DeInit(LPC_DMA_T *pDMA)\n+{\n+\t(void) pDMA;\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_DMA);\n+}\n+\n+/**\n+ * @brief\tEnable DMA controller\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_Enable(LPC_DMA_T *pDMA)\n+{\n+\tpDMA->CTRL = 1;\n+}\n+\n+/**\n+ * @brief\tDisable DMA controller\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_Disable(LPC_DMA_T *pDMA)\n+{\n+\tpDMA->CTRL = 0;\n+}\n+\n+/**\n+ * @brief\tGet pending interrupt or error interrupts\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tAn Or'ed value of DMA_INTSTAT_* types\n+ * @note\tIf any DMA channels have an active interrupt or error interrupt\n+ *\t\t\tpending, this functional will a common status that applies to all\n+ *\t\t\tchannels.\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetIntStatus(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->INTSTAT;\n+}\n+\n+/**\n+ * @brief\tSet DMA controller SRAM base address\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tbase\t: The base address where the DMA descriptors will be stored\n+ * @return\tNothing\n+ * @note\tA 256 byte block of memory aligned on a 256 byte boundary must be\n+ *\t\t\tprovided for this function. It sets the base address used for\n+ *\t\t\tDMA descriptor table (16 descriptors total that use 16 bytes each).<br>\n+ *\n+ *\t\t\tA pre-defined table with correct alignment can be used for this\n+ *\t\t\tfunction by calling Chip_DMA_SetSRAMBase(LPC_DMA, DMA_ADDR(Chip_DMA_Table));\n+ */\n+__STATIC_INLINE void Chip_DMA_SetSRAMBase(LPC_DMA_T *pDMA, uint32_t base)\n+{\n+\tpDMA->SRAMBASE = base;\n+}\n+\n+/**\n+ * @brief\tReturns DMA controller SRAM base address\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tThe base address where the DMA descriptors are stored\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetSRAMBase(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->SRAMBASE;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup DMALEG_COMMONCHAN_5410X CHIP: LPC5410X DMA Controller driver common channel functions (legacy)\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tEnables a single DMA channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_EnableChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].ENABLESET = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tDisables a single DMA channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_DisableChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].ENABLECLR = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tReturns all enabled DMA channels\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tAn Or'ed value of all enabled DMA channels (0 - 15)\n+ * @note\tA high values in bits 0 .. 15 in the return values indicates\n+ *\t\t\tthat the channel for that bit (bit 0 = channel 0, bit 1 -\n+ *\t\t\tchannel 1, etc.) is enabled. A low state is disabled.\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetEnabledChannels(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->DMACOMMON[0].ENABLESET;\n+}\n+\n+/**\n+ * @brief\tReturns all active DMA channels\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tAn Or'ed value of all active DMA channels (0 - 15)\n+ * @note\tA high values in bits 0 .. 15 in the return values indicates\n+ *\t\t\tthat the channel for that bit (bit 0 = channel 0, bit 1 -\n+ *\t\t\tchannel 1, etc.) is active. A low state is inactive. A active\n+ *\t\t\tchannel indicates that a DMA operation has been started but\n+ *\t\t\tnot yet fully completed.\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetActiveChannels(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->DMACOMMON[0].ACTIVE;\n+}\n+\n+/**\n+ * @brief\tReturns all busy DMA channels\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tAn Or'ed value of all busy DMA channels (0 - 15)\n+ * @note\tA high values in bits 0 .. 15 in the return values indicates\n+ *\t\t\tthat the channel for that bit (bit 0 = channel 0, bit 1 -\n+ *\t\t\tchannel 1, etc.) is busy. A low state is not busy. A DMA\n+ *\t\t\tchannel is considered busy when there is any operation\n+ *\t\t\trelated to that channel in the DMA controller�s internal\n+ *\t\t\tpipeline.\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetBusyChannels(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->DMACOMMON[0].BUSY;\n+}\n+\n+/**\n+ * @brief\tReturns pending error interrupt status for all DMA channels\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tAn Or'ed value of all channels (0 - 15) error interrupt status\n+ * @note\tA high values in bits 0 .. 15 in the return values indicates\n+ *\t\t\tthat the channel for that bit (bit 0 = channel 0, bit 1 -\n+ *\t\t\tchannel 1, etc.) has a pending error interrupt. A low state\n+ *\t\t\tindicates no error interrupt.\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetErrorIntChannels(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->DMACOMMON[0].ERRINT;\n+}\n+\n+/**\n+ * @brief\tClears a pending error interrupt status for a single DMA channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_ClearErrorIntChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].ERRINT = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tEnables a single DMA channel's interrupt used in common DMA interrupt\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_EnableIntChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].INTENSET = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tDisables a single DMA channel's interrupt used in common DMA interrupt\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_DisableIntChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].INTENCLR = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tReturns all enabled interrupt channels\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tNothing\n+ * @note\tA high values in bits 0 .. 15 in the return values indicates\n+ *\t\t\tthat the channel for that bit (bit 0 = channel 0, bit 1 -\n+ *\t\t\tchannel 1, etc.) has an enabled interrupt for the channel.\n+ *\t\t\tA low state indicates that the DMA channel will not contribute\n+ *\t\t\tto the common DMA interrupt status.\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetEnableIntChannels(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->DMACOMMON[0].INTENSET;\n+}\n+\n+/**\n+ * @brief\tReturns active A interrupt status for all channels\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tNothing\n+ * @note\tA high values in bits 0 .. 15 in the return values indicates\n+ *\t\t\tthat the channel for that bit (bit 0 = channel 0, bit 1 -\n+ *\t\t\tchannel 1, etc.) has an active A interrupt for the channel.\n+ *\t\t\tA low state indicates that the A interrupt is not active.\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetActiveIntAChannels(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->DMACOMMON[0].INTA;\n+}\n+\n+/**\n+ * @brief\tClears active A interrupt status for a single channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_ClearActiveIntAChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].INTA = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tReturns active B interrupt status for all channels\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @return\tNothing\n+ * @note\tA high values in bits 0 .. 15 in the return values indicates\n+ *\t\t\tthat the channel for that bit (bit 0 = channel 0, bit 1 -\n+ *\t\t\tchannel 1, etc.) has an active B interrupt for the channel.\n+ *\t\t\tA low state indicates that the B interrupt is not active.\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetActiveIntBChannels(LPC_DMA_T *pDMA)\n+{\n+\treturn pDMA->DMACOMMON[0].INTB;\n+}\n+\n+/**\n+ * @brief\tClears active B interrupt status for a single channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_ClearActiveIntBChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].INTB = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tSets the VALIDPENDING control bit for a single channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ * @note\tSee the User Manual for more information for what this bit does.\n+ *\n+ */\n+__STATIC_INLINE void Chip_DMA_SetValidChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].SETVALID = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tSets the TRIG bit for a single channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ * @note\tSee the User Manual for more information for what this bit does.\n+ */\n+__STATIC_INLINE void Chip_DMA_SetTrigChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].SETTRIG = (1 << ch);\n+}\n+\n+/**\n+ * @brief\tAborts a DMA operation for a single channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ * @note\tTo abort a channel, the channel should first be disabled. Then wait\n+ *\t\t\tuntil the channel is no longer busy by checking the corresponding\n+ *\t\t\tbit in BUSY. Finally, abort the channel operation. This prevents the\n+ *\t\t\tchannel from restarting an incomplete operation when it is enabled\n+ *\t\t\tagain.\n+ */\n+__STATIC_INLINE void Chip_DMA_AbortChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tpDMA->DMACOMMON[0].ABORT = (1 << ch);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup DMALEG_CHANNEL_5410X CHIP: LPC5410X DMA Controller driver channel specific functions (legacy)\n+ * @{\n+ */\n+\n+/* DMA channel source/address/next descriptor */\n+typedef struct {\n+\tuint32_t  xfercfg;\t/*!< Transfer configuration (only used in linked lists and ping-pong configs) */\n+\tuint32_t  source;\t\t/*!< DMA transfer source end address */\n+\tuint32_t  dest;\t\t\t/*!< DMA transfer desintation end address */\n+\tuint32_t  next;\t\t\t/*!< Link to next DMA descriptor, must be 16 byte aligned */\n+} DMA_CHDESC_T;\n+\n+/* DMA SRAM table - this can be optionally used with the Chip_DMA_SetSRAMBase()\n+   function if a DMA SRAM table is needed. */\n+extern DMA_CHDESC_T Chip_DMA_Table[MAX_DMA_CHANNEL];\n+\n+/**\n+ * @brief\tSetup a DMA channel configuration\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @param\tcfg\t\t: An Or'ed value of DMA_CFG_* values that define the channel's configuration\n+ * @return\tNothing\n+ * @note\tThis function sets up all configurable options for the DMA channel.\n+ *\t\t\tThese options are usually set once for a channel and then unchanged.<br>\n+ *\n+ *\t\t\tThe following example show how to configure the channel for peripheral\n+ *\t\t\tDMA requests, burst transfer size of 1 (in 'transfers', not bytes),\n+ *\t\t\tcontinuous reading of the same source address, incrementing destination\n+ *\t\t\taddress, and highest channel priority.<br>\n+ *\t\t\tExample: Chip_DMA_SetupChannelConfig(pDMA, SSP0_RX_DMA,\n+ *\t\t\t\t(DMA_CFG_PERIPHREQEN | DMA_CFG_TRIGBURST_BURST | DMA_CFG_BURSTPOWER_1 |\n+ *\t\t\t\tDMA_CFG_SRCBURSTWRAP | DMA_CFG_CHPRIORITY(0)));<br>\n+ *\n+ *\t\t\tThe following example show how to configure the channel for an external\n+ *\t\t\ttrigger from the imput mux with low edge polarity, a burst transfer size of 8,\n+ *\t\t\tincrementing source and destination addresses, and lowest channel\n+ *\t\t\tpriority.<br>\n+ *\t\t\tExample: Chip_DMA_SetupChannelConfig(pDMA, DMA_CH14,\n+ *\t\t\t\t(DMA_CFG_HWTRIGEN | DMA_CFG_TRIGPOL_LOW | DMA_CFG_TRIGTYPE_EDGE |\n+ *\t\t\t\tDMA_CFG_TRIGBURST_BURST | DMA_CFG_BURSTPOWER_8 |\n+ *\t\t\t\tDMA_CFG_CHPRIORITY(3)));<br>\n+ *\n+ *\t\t\tFor non-peripheral DMA triggering (DMA_CFG_HWTRIGEN definition), use the\n+ *\t\t\tDMA input mux functions to configure the DMA trigger source for a DMA channel.\n+ */\n+__STATIC_INLINE void Chip_DMA_SetupChannelConfig(LPC_DMA_T *pDMA, DMA_CHID_T ch, uint32_t cfg)\n+{\n+\tpDMA->DMACH[ch].CFG = cfg;\n+}\n+\n+/**\n+ * @brief\tReturns channel specific status flags\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tAN Or'ed value of DMA_CTLSTAT_VALIDPENDING and DMA_CTLSTAT_TRIG\n+ */\n+__STATIC_INLINE uint32_t Chip_DMA_GetChannelStatus(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\treturn pDMA->DMACH[ch].XFERCFG;\n+}\n+\n+/**\n+ * @brief\tSetup a DMA channel transfer configuration\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @param\tcfg\t\t: An Or'ed value of DMA_XFERCFG_* values that define the channel's transfer configuration\n+ * @return\tNothing\n+ * @note\tThis function sets up the transfer configuration for the DMA channel.<br>\n+ *\n+ *\t\t\tThe following example show how to configure the channel's transfer for\n+ *\t\t\tmultiple transfer descriptors (ie, ping-pong), interrupt 'A' trigger on\n+ *\t\t\ttransfer descriptor completion, 128 byte size transfers, and source and\n+ *\t\t\tdestination address increment.<br>\n+ *\t\t\tExample: Chip_DMA_SetupChannelTransfer(pDMA, SSP0_RX_DMA,\n+ *\t\t\t\t(DMA_XFERCFG_CFGVALID | DMA_XFERCFG_RELOAD | DMA_XFERCFG_SETINTA |\n+ *\t\t\t\tDMA_XFERCFG_WIDTH_8 | DMA_XFERCFG_SRCINC_1 | DMA_XFERCFG_DSTINC_1 |\n+ *\t\t\t\tDMA_XFERCFG_XFERCOUNT(128)));<br>\n+ */\n+__STATIC_INLINE void Chip_DMA_SetupChannelTransfer(LPC_DMA_T *pDMA, DMA_CHID_T ch, uint32_t cfg)\n+{\n+\tpDMA->DMACH[ch].XFERCFG = cfg;\n+}\n+\n+/**\n+ * @brief\tSet DMA transfer register interrupt bits (safe)\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @param\tmask\t: Bits to set\n+ * @return\tNothing\n+ * @note\tThis function safely sets bits in the DMA channel specific XFERCFG\n+ *\t\t\tregister.\n+ */\n+__STATIC_INLINE void Chip_DMA_SetTranBits(LPC_DMA_T *pDMA, DMA_CHID_T ch, uint32_t mask)\n+{\n+\t/* Read and write values may not be the same, write 0 to\n+\t   undefined bits */\n+\tpDMA->DMACH[ch].XFERCFG = (pDMA->DMACH[ch].XFERCFG | mask) & ~0xFC000CC0;\n+\n+}\n+\n+/**\n+ * @brief\tClear DMA transfer register interrupt bits (safe)\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @param\tmask\t: Bits to clear\n+ * @return\tNothing\n+ * @note\tThis function safely clears bits in the DMA channel specific XFERCFG\n+ *\t\t\tregister.\n+ */\n+__STATIC_INLINE void Chip_DMA_ClearTranBits(LPC_DMA_T *pDMA, DMA_CHID_T ch, uint32_t mask)\n+{\n+\t/* Read and write values may not be the same, write 0 to\n+\t   undefined bits */\n+\tpDMA->DMACH[ch].XFERCFG = pDMA->DMACH[ch].XFERCFG & ~(0xFC000CC0 | mask);\n+\n+}\n+\n+/**\n+ * @brief\tUpdate the transfer size in an existing DMA channel transfer configuration\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @param\ttrans\t: Number of transfers to update the transfer configuration to (1 - 1023)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_SetupChannelTransferSize(LPC_DMA_T *pDMA, DMA_CHID_T ch, uint32_t trans)\n+{\n+\tChip_DMA_ClearTranBits(pDMA, ch, (0x3FF << 16));\n+\tChip_DMA_SetTranBits(pDMA, ch, DMA_XFERCFG_XFERCOUNT(trans));\n+}\n+\n+/**\n+ * @brief\tSets a DMA channel configuration as valid\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_SetChannelValid(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tChip_DMA_SetTranBits(pDMA, ch, DMA_XFERCFG_CFGVALID);\n+}\n+\n+/**\n+ * @brief\tSets a DMA channel configuration as invalid\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_SetChannelInValid(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tChip_DMA_ClearTranBits(pDMA, ch, DMA_XFERCFG_CFGVALID);\n+}\n+\n+/**\n+ * @brief\tPerforms a software trigger of the DMA channel\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_DMA_SWTriggerChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch)\n+{\n+\tChip_DMA_SetTranBits(pDMA, ch, DMA_XFERCFG_SWTRIG);\n+}\n+\n+/**\n+ * @brief\tSets up a DMA channel with the passed DMA transfer descriptor\n+ * @param\tpDMA\t: The base of DMA controller on the chip\n+ * @param\tch\t\t: DMA channel ID\n+ * @param\tdesc\t: Pointer to DMA transfer descriptor\n+ * @return\tfalse if the DMA channel was active, otherwise true\n+ * @note\tThis function will set the DMA descriptor in the SRAM table to the\n+ *\t\t\tthe passed descriptor. This function is only meant to be used when\n+ *\t\t\tthe DMA channel is not active and can be used to setup the\n+ *\t\t\tinitial transfer for a linked list or ping-pong buffer or just a\n+ *\t\t\tsingle transfer without a next descriptor.<br>\n+ *\n+ *\t\t\tIf using this function to write the initial transfer descriptor in\n+ *\t\t\ta linked list or ping-pong buffer configuration, it should contain a\n+ *\t\t\tnon-NULL 'next' field pointer.\n+ */\n+bool Chip_DMA_SetupTranChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch, DMA_CHDESC_T *desc);\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __DMA_5410X_H */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/error.h ./chip/inc/error.h\n--- a_tnusFF/chip/inc/error.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/error.h\t2016-10-22 23:17:43.552840278 -0300\n@@ -0,0 +1,272 @@\n+/*\n+ * @brief Error code returned by Boot ROM drivers/library functions\n+ *\n+ *  This file contains unified error codes to be used across driver,\n+ *  middleware, applications, hal and demo software.\n+ *\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __LPC_ERROR_H__\n+#define __LPC_ERROR_H__\n+\n+/** Error code returned by Boot ROM drivers/library functions\n+ *\n+ *  Error codes are a 32-bit value with :\n+ *      - The 16 MSB contains the peripheral code number\n+ *      - The 16 LSB contains an error code number associated to that peripheral\n+ *\n+ */\n+typedef enum {\n+\t/**\\b 0x00000000*/ LPC_OK = 0,\t/**< enum value returned on Success */\n+\t/**\\b 0xFFFFFFFF*/ ERR_FAILED = -1,\t/**< enum value returned on general failure */\n+\t/**\\b 0xFFFFFFFE*/ ERR_TIME_OUT = -2,\t/**< enum value returned on general timeout */\n+\t/**\\b 0xFFFFFFFD*/ ERR_BUSY = -3,\t/**< enum value returned when resource is busy */\n+\n+\t/* ISP related errors */\n+\tERR_ISP_BASE = 0x00000000,\n+\t/*0x00000001*/ ERR_ISP_INVALID_COMMAND = ERR_ISP_BASE + 1,\n+\t/*0x00000002*/ ERR_ISP_SRC_ADDR_ERROR,\t/* Source address not on word boundary */\n+\t/*0x00000003*/ ERR_ISP_DST_ADDR_ERROR,\t/* Destination address not on word or 256 byte boundary */\n+\t/*0x00000004*/ ERR_ISP_SRC_ADDR_NOT_MAPPED,\n+\t/*0x00000005*/ ERR_ISP_DST_ADDR_NOT_MAPPED,\n+\t/*0x00000006*/ ERR_ISP_COUNT_ERROR,\t/* Byte count is not multiple of 4 or is not a permitted value */\n+\t/*0x00000007*/ ERR_ISP_INVALID_SECTOR,\n+\t/*0x00000008*/ ERR_ISP_SECTOR_NOT_BLANK,\n+\t/*0x00000009*/ ERR_ISP_SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION,\n+\t/*0x0000000A*/ ERR_ISP_COMPARE_ERROR,\n+\t/*0x0000000B*/ ERR_ISP_BUSY,/* Flash programming hardware interface is busy */\n+\t/*0x0000000C*/ ERR_ISP_PARAM_ERROR,\t/* Insufficient number of parameters */\n+\t/*0x0000000D*/ ERR_ISP_ADDR_ERROR,\t/* Address not on word boundary */\n+\t/*0x0000000E*/ ERR_ISP_ADDR_NOT_MAPPED,\n+\t/*0x0000000F*/ ERR_ISP_CMD_LOCKED,\t/* Command is locked */\n+\t/*0x00000010*/ ERR_ISP_INVALID_CODE,/* Unlock code is invalid */\n+\t/*0x00000011*/ ERR_ISP_INVALID_BAUD_RATE,\n+\t/*0x00000012*/ ERR_ISP_INVALID_STOP_BIT,\n+\t/*0x00000013*/ ERR_ISP_CODE_READ_PROTECTION_ENABLED,\n+\t/*0x00000014*/ ERR_ISP_INVALID_FLASH_UNIT,\n+\t/*0x00000015*/ ERR_ISP_USER_CODE_CHECKSUM,\n+\t/*0x00000016*/ ERR_ISP_SETTING_ACTIVE_PARTITION,\n+\t/*0x00000017*/ ERR_ISP_IRC_NO_POWER,\n+\t/*0x00000018*/ ERR_ISP_FLASH_NO_POWER,\n+\t/*0x00000019*/ ERR_ISP_EEPROM_NO_POWER,\n+\t/*0x0000001A*/ ERR_ISP_EEPROM_NO_CLOCK,\n+\t/*0x0000001B*/ ERR_ISP_FLASH_NO_CLOCK,\n+\t/*0x0000001C*/ ERR_ISP_REINVOKE_ISP_CONFIG,\n+\n+\t/* ROM API related errors */\n+\tERR_API_BASE = 0x00010000,\n+\t/**\\b 0x00010001*/ ERR_API_INVALID_PARAMS = ERR_API_BASE + 1,\t/**< Invalid parameters*/\n+\t/**\\b 0x00010002*/ ERR_API_INVALID_PARAM1,\t/**< PARAM1 is invalid */\n+\t/**\\b 0x00010003*/ ERR_API_INVALID_PARAM2,\t/**< PARAM2 is invalid */\n+\t/**\\b 0x00010004*/ ERR_API_INVALID_PARAM3,\t/**< PARAM3 is invalid */\n+\t/**\\b 0x00010005*/ ERR_API_MOD_INIT,/**< API is called before module init */\n+\n+\t/* SPIFI API related errors */\n+\tERR_SPIFI_BASE = 0x00020000,\n+\t/*0x00020001*/ ERR_SPIFI_DEVICE_ERROR = ERR_SPIFI_BASE + 1,\n+\t/*0x00020002*/ ERR_SPIFI_INTERNAL_ERROR,\n+\t/*0x00020003*/ ERR_SPIFI_TIMEOUT,\n+\t/*0x00020004*/ ERR_SPIFI_OPERAND_ERROR,\n+\t/*0x00020005*/ ERR_SPIFI_STATUS_PROBLEM,\n+\t/*0x00020006*/ ERR_SPIFI_UNKNOWN_EXT,\n+\t/*0x00020007*/ ERR_SPIFI_UNKNOWN_ID,\n+\t/*0x00020008*/ ERR_SPIFI_UNKNOWN_TYPE,\n+\t/*0x00020009*/ ERR_SPIFI_UNKNOWN_MFG,\n+\t/*0x0002000A*/ ERR_SPIFI_NO_DEVICE,\n+\t/*0x0002000B*/ ERR_SPIFI_ERASE_NEEDED,\n+\n+\tSEC_AES_NO_ERROR = 0,\n+\t/* Security API related errors */\n+\tERR_SEC_AES_BASE = 0x00030000,\n+\t/*0x00030001*/ ERR_SEC_AES_WRONG_CMD = ERR_SEC_AES_BASE + 1,\n+\t/*0x00030002*/ ERR_SEC_AES_NOT_SUPPORTED,\n+\t/*0x00030003*/ ERR_SEC_AES_KEY_ALREADY_PROGRAMMED,\n+\t/*0x00030004*/ ERR_SEC_AES_DMA_CHANNEL_CFG,\n+\t/*0x00030005*/ ERR_SEC_AES_DMA_MUX_CFG,\n+\t/*0x00030006*/ SEC_AES_DMA_BUSY,\n+\n+\t/* USB device stack related errors */\n+\tERR_USBD_BASE = 0x00040000,\n+\t/**\\b 0x00040001*/ ERR_USBD_INVALID_REQ = ERR_USBD_BASE + 1,/**< invalid request */\n+\t/**\\b 0x00040002*/ ERR_USBD_UNHANDLED,\t/**< Callback did not process the event */\n+\t/**\\b 0x00040003*/ ERR_USBD_STALL,\t/**< Stall the endpoint on which the call back is called */\n+\t/**\\b 0x00040004*/ ERR_USBD_SEND_ZLP,\t/**< Send ZLP packet on the endpoint on which the call back is called */\n+\t/**\\b 0x00040005*/ ERR_USBD_SEND_DATA,\t/**< Send data packet on the endpoint on which the call back is called */\n+\t/**\\b 0x00040006*/ ERR_USBD_BAD_DESC,\t/**< Bad descriptor*/\n+\t/**\\b 0x00040007*/ ERR_USBD_BAD_CFG_DESC,\t/**< Bad config descriptor*/\n+\t/**\\b 0x00040008*/ ERR_USBD_BAD_INTF_DESC,\t/**< Bad interface descriptor*/\n+\t/**\\b 0x00040009*/ ERR_USBD_BAD_EP_DESC,/**< Bad endpoint descriptor*/\n+\t/**\\b 0x0004000a*/ ERR_USBD_BAD_MEM_BUF,/**< Bad alignment of buffer passed. */\n+\t/**\\b 0x0004000b*/ ERR_USBD_TOO_MANY_CLASS_HDLR,/**< Too many class handlers. */\n+\n+\t/* CGU  related errors */\n+\tERR_CGU_BASE = 0x00050000,\n+\t/*0x00050001*/ ERR_CGU_NOT_IMPL = ERR_CGU_BASE + 1,\n+\t/*0x00050002*/ ERR_CGU_INVALID_PARAM,\n+\t/*0x00050003*/ ERR_CGU_INVALID_SLICE,\n+\t/*0x00050004*/ ERR_CGU_OUTPUT_GEN,\n+\t/*0x00050005*/ ERR_CGU_DIV_SRC,\n+\t/*0x00050006*/ ERR_CGU_DIV_VAL,\n+\t/*0x00050007*/ ERR_CGU_SRC,\n+\n+\t/*  I2C related errors   */\n+\tERR_I2C_BASE = 0x00060000,\n+\t/*0x00060000*/ ERR_I2C_BUSY = ERR_I2C_BASE,\n+\t/*0x00060001*/ ERR_I2C_NAK,\n+\t/*0x00060002*/ ERR_I2C_BUFFER_OVERFLOW,\n+\t/*0x00060003*/ ERR_I2C_BYTE_COUNT_ERR,\n+\t/*0x00060004*/ ERR_I2C_LOSS_OF_ARBRITRATION,\n+\t/*0x00060005*/ ERR_I2C_SLAVE_NOT_ADDRESSED,\n+\t/*0x00060006*/ ERR_I2C_LOSS_OF_ARBRITRATION_NAK_BIT,\n+\t/*0x00060007*/ ERR_I2C_GENERAL_FAILURE,\n+\t/*0x00060008*/ ERR_I2C_REGS_SET_TO_DEFAULT,\n+\t/*0x00060009*/ ERR_I2C_TIMEOUT,\n+\t/*0x0006000A*/ ERR_I2C_BUFFER_UNDERFLOW,\n+\t/*0x0006000B*/ ERR_I2C_PARAM,\n+\n+\t/* OTP  related errors */\n+\tERR_OTP_BASE = 0x00070000,\n+\t/*0x00070001*/ ERR_OTP_WR_ENABLE_INVALID = ERR_OTP_BASE + 1,\n+\t/*0x00070002*/ ERR_OTP_SOME_BITS_ALREADY_PROGRAMMED,\n+\t/*0x00070003*/ ERR_OTP_ALL_DATA_OR_MASK_ZERO,\n+\t/*0x00070004*/ ERR_OTP_WRITE_ACCESS_LOCKED,\n+\t/*0x00070005*/ ERR_OTP_READ_DATA_MISMATCH,\n+\t/*0x00070006*/ ERR_OTP_USB_ID_ENABLED,\n+\t/*0x00070007*/ ERR_OTP_ETH_MAC_ENABLED,\n+\t/*0x00070008*/ ERR_OTP_AES_KEYS_ENABLED,\n+\t/*0x00070009*/ ERR_OTP_ILLEGAL_BANK,\n+\n+\t/*  UART related errors   */\n+\tERR_UART_BASE = 0x00080000,\n+\t/*0x00080001*/ ERR_UART_RXD_BUSY = ERR_UART_BASE + 1,\t// UART rxd is busy\n+\t/*0x00080002*/ ERR_UART_TXD_BUSY,\t// UART txd is busy\n+\t/*0x00080003*/ ERR_UART_OVERRUN_FRAME_PARITY_NOISE,\t// overrun err, frame err, parity err, RxNoise err\n+\t/*0x00080004*/ ERR_UART_UNDERRUN,\t// underrun err\n+\t/*0x00080005*/ ERR_UART_PARAM,\t\t// parameter is error\n+\t/*0x00080006*/ ERR_UART_BAUDRATE,\t// baudrate setting is error\n+\n+\t/*  CAN related errors   */\n+\tERR_CAN_BASE = 0x00090000,\n+\t/*0x00090001*/ ERR_CAN_BAD_MEM_BUF = ERR_CAN_BASE + 1,\n+\t/*0x00090002*/ ERR_CAN_INIT_FAIL,\n+\t/*0x00090003*/ ERR_CANOPEN_INIT_FAIL,\n+\n+\t/* SPIFI Lite API related errors */\n+\tERR_SPIFI_LITE_BASE = 0x000A0000,\n+\t/*0x000A0001*/ ERR_SPIFI_LITE_INVALID_ARGUMENTS = ERR_SPIFI_LITE_BASE + 1,\n+\t/*0x000A0002*/ ERR_SPIFI_LITE_BUSY,\n+\t/*0x000A0003*/ ERR_SPIFI_LITE_MEMORY_MODE_ON,\n+\t/*0x000A0004*/ ERR_SPIFI_LITE_MEMORY_MODE_OFF,\n+\t/*0x000A0005*/ ERR_SPIFI_LITE_IN_DMA,\n+\t/*0x000A0006*/ ERR_SPIFI_LITE_NOT_IN_DMA,\n+\t/*0x000A0100*/ PENDING_SPIFI_LITE,\n+\n+\t/* CLK related errors */\n+\tERR_CLK_BASE = 0x000B0000,\n+\t/*0x000B0001*/ ERR_CLK_NOT_IMPL = ERR_CLK_BASE + 1,\n+\t/*0x000B0002*/ ERR_CLK_INVALID_PARAM,\n+\t/*0x000B0003*/ ERR_CLK_INVALID_SLICE,\n+\t/*0x000B0004*/ ERR_CLK_OUTPUT_GEN,\n+\t/*0x000B0005*/ ERR_CLK_DIV_SRC,\n+\t/*0x000B0006*/ ERR_CLK_DIV_VAL,\n+\t/*0x000B0007*/ ERR_CLK_SRC,\n+\t/*0x000B0008*/ ERR_CLK_PLL_FIN_TOO_SMALL,\n+\t/*0x000B0009*/ ERR_CLK_PLL_FIN_TOO_LARGE,\n+\t/*0x000B000A*/ ERR_CLK_PLL_FOUT_TOO_SMALL,\n+\t/*0x000B000B*/ ERR_CLK_PLL_FOUT_TOO_LARGE,\n+\t/*0x000B000C*/ ERR_CLK_PLL_NO_SOLUTION,\n+\t/*0x000B000D*/ ERR_CLK_PLL_MIN_PCT,\n+\t/*0x000B000E*/ ERR_CLK_PLL_MAX_PCT,\n+\t/*0x000B000F*/ ERR_CLK_OSC_FREQ,\n+\t/*0x000B0010*/ ERR_CLK_CFG,\n+\t/*0x000B0011*/ ERR_CLK_TIMEOUT,\n+\t/*0x000B0012*/ ERR_CLK_BASE_OFF,\n+\t/*0x000B0013*/ ERR_CLK_OFF_DEADLOCK,\n+\n+\t/*Power API*/\n+\tERR_PWR_BASE = 0x000C0000,\n+\t/*0x000C0001*/ PWR_ERROR_ILLEGAL_MODE = ERR_PWR_BASE + 1,\n+\t/*0x000C0002*/ PWR_ERROR_CLOCK_FREQ_TOO_HIGH,\n+\t/*0x000C0003*/ PWR_ERROR_INVALID_STATE,\n+\t/*0x000C0004*/ PWR_ERROR_INVALID_CFG,\n+\t/*0x000C0005*/ PWR_ERROR_PVT_DETECT,\n+\t/*0x000C0006*/ PWR_ERROR_INVALID_VOLTAGE,\n+\n+\t/* DMA related errors */\n+\tERR_DMA_BASE = 0x000D0000,\n+\t/*0x000D0001*/ ERR_DMA_ERROR_INT = ERR_DMA_BASE + 1,\n+\t/*0x000D0002*/ ERR_DMA_CHANNEL_NUMBER,\n+\t/*0x000D0003*/ ERR_DMA_CHANNEL_DISABLED,\n+\t/*0x000D0004*/ ERR_DMA_BUSY,\n+\t/*0x000D0005*/ ERR_DMA_NOT_ALIGNMENT,\n+\t/*0x000D0006*/ ERR_DMA_PING_PONG_EN,\n+\t/*0x000D0007*/ ERR_DMA_CHANNEL_VALID_PENDING,\n+\t/*0x000D0008*/ ERR_DMA_PARAM,\n+\t/*0x000D0009*/ ERR_DMA_QUEUE_EMPTY,\n+\t/*0x000D000A*/ ERR_DMA_GENERAL,\n+\n+\t/* SPI related errors */\n+\tERR_SPI_BASE = 0x000E0000,\n+\t/*0x000E0000*/ ERR_SPI_BUSY = ERR_SPI_BASE,\n+\t/*0x000E0001*/ ERR_SPI_RXOVERRUN,\n+\t/*0x000E0002*/ ERR_SPI_TXUNDERRUN,\n+\t/*0x000E0003*/ ERR_SPI_SELNASSERT,\n+\t/*0x000E0004*/ ERR_SPI_SELNDEASSERT,\n+\t/*0x000E0005*/ ERR_SPI_CLKSTALL,\n+\t/*0x000E0006*/ ERR_SPI_PARAM,\n+\t/*0x000E0007*/ ERR_SPI_INVALID_LENGTH,\n+\n+\t/* ADC related errors */\n+\tERR_ADC_BASE = 0x000F0000,\n+\t/*0x000F0001*/ ERR_ADC_OVERRUN = ERR_ADC_BASE + 1,\n+\t/*0x000F0002*/ ERR_ADC_INVALID_CHANNEL,\n+\t/*0x000F0003*/ ERR_ADC_INVALID_SEQUENCE,\n+\t/*0x000F0004*/ ERR_ADC_INVALID_SETUP,\n+\t/*0x000F0005*/ ERR_ADC_PARAM,\n+\t/*0x000F0006*/ ERR_ADC_INVALID_LENGTH,\n+\t/*0x000F0007*/ ERR_ADC_NO_POWER,\n+\n+\t/* Debugger Mailbox related errors */\n+\tERR_DM_BASE = 0x00100000,\n+\t/*0x00100001*/ ERR_DM_NOT_ENTERED = ERR_DM_BASE + 1,\n+\t/*0x00100002*/ ERR_DM_UNKNOWN_CMD,\n+\t/*0x00100003*/ ERR_DM_COMM_FAIL\n+\n+} ErrorCode_t;\n+\n+#ifndef offsetof\n+#define offsetof(s, m)   (int) &(((s *) 0)->m)\n+#endif\n+\n+#define COMPILE_TIME_ASSERT(pred)    switch (0) { \\\n+\tcase 0:\t\\\n+\tcase pred:; }\n+\n+#endif /* __LPC_ERROR_H__ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/fifo_5410x.h ./chip/inc/fifo_5410x.h\n--- a_tnusFF/chip/inc/fifo_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/fifo_5410x.h\t2016-10-22 23:17:43.552840278 -0300\n@@ -0,0 +1,559 @@\n+/*\n+ * @brief LPC5410X System FIFO chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __FIFO_5410X_H_\n+#define __FIFO_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup FIFO_5410X CHIP: LPC5410X System FIFO chip driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * This driver provides basic functionality for the system FIFO\n+ * and can be used to increase the amount of FIFO space available\n+ * to the UART and SPI peripherals. If using the system FIFO with the\n+ * UART or SPI drivers, the standard UART and SPI transfer handlers\n+ * cannot be used and buffer/stream management and status checking\n+ * must occur in the user application.\n+ * @{\n+ */\n+\n+/** Maximum USART peripherals */\n+#define LPC_FIFO_USART_MAX      (4)\n+\n+/** Maximum SPI peripherals */\n+#define LPC_FIFO_SPI_MAX        (2)\n+\n+/**\n+ * @brief LPC5410X System FIFO USART register block structure\n+ */\n+typedef struct {\n+\t__IO uint32_t CFG;\t\t\t/*!< USART configuration Register */\n+\t__IO uint32_t STAT;\t\t\t/*!< USART status Register */\n+\t__IO uint32_t INTSTAT;\t\t/*!< USART interrupt status Register */\n+\t__IO uint32_t CTLSET;\t\t/*!< USART control read and set Register */\n+\t__IO uint32_t CTLCLR;\t\t/*!< USART control clear Register */\n+\t__IO uint32_t RXDAT;\t\t/*!< USART received data Register */\n+\t__IO uint32_t RXDATSTAT;\t/*!< USART received data with status Register */\n+\t__IO uint32_t TXDAT;\t\t/*!< USART transmit data Register */\n+\t__I uint32_t  RESERVED[0x38];\n+} LPC_FIFO_USART_T;\n+\n+/**\n+ * @brief LPC5410X System FIFO SPI register block structure\n+ */\n+typedef struct {\n+\t__IO uint32_t CFG;\t\t\t/*!< SPI configuration Register */\n+\t__IO uint32_t STAT;\t\t\t/*!< SPI status Register */\n+\t__IO uint32_t INTSTAT;\t\t/*!< SPI interrupt status Register */\n+\t__IO uint32_t CTLSET;\t\t/*!< SPI control read and set Register */\n+\t__IO uint32_t CTLCLR;\t\t/*!< SPI control clear Register */\n+\t__I  uint32_t RXDAT;\t\t/*!< SPI received data Register */\n+\tunion {\n+\t\t__O uint32_t TXDATSPI;\t/*!< SPI transmit data and control Register */\n+\t\tstruct {\n+\t\t\t__O uint16_t TXDATSPI_DATA;\t/*!< SPI transmit data Register */\n+\t\t\t__O uint16_t TXDATSPI_CTRL;\t/*!< SPI transmit control Register */\n+\t\t};\n+\n+\t};\n+\n+\t__I  uint32_t RESERVED[0x39];\n+} LPC_FIFO_SPI_T;\n+\n+/**\n+ * @brief LPC5410X System FIFO common register block structure\n+ */\n+typedef struct {\n+\t__I  uint32_t reserved0[0x40];\n+\t__IO uint32_t FIFOCTLUSART;\t\t\t/*!< USART FIFO global control Register */\n+\t__O  uint32_t FIFOUPDATEUSART;\t\t/*!< USART FIFO global update Register */\n+\t__I  uint32_t reserved1[0x2];\n+\t__IO uint32_t FIFOCFGUSART[LPC_FIFO_USART_MAX];\t/*!< USART FIFO configuration Registers */\n+\t__I  uint32_t reserved2[0x38];\n+\t__IO uint32_t FIFOCTLSPI;\t\t\t/*!< SPI FIFO global control Register */\n+\t__O  uint32_t FIFOUPDATESPI;\t\t/*!< SPI FIFO global update Register */\n+\t__I  uint32_t reserved3[0x2];\n+\t__IO uint32_t FIFOCFGSPI[LPC_FIFO_SPI_MAX];\t\t/*!< SPI FIFO configuration Registers */\n+\t__I  uint32_t reserved4[0x3A];\n+\t__I  uint32_t reserved5[((0x1000 - 0x300) / sizeof(uint32_t))];\n+} LPC_FIFO_CMN_T;\n+\n+/**\n+ * @brief LPC5410X Complete system FIFO register block structure\n+ */\n+typedef struct {\n+\tLPC_FIFO_CMN_T      common;\n+\tLPC_FIFO_USART_T    usart[LPC_FIFO_USART_MAX];\n+\t__I uint32_t        reserved0[((0x2000 - 0x1400) / sizeof(uint32_t))];\n+\tLPC_FIFO_SPI_T      spi[LPC_FIFO_SPI_MAX];\n+} LPC_FIFO_T;\n+\n+/** @defgroup FIFO_CMN_5410X CHIP: Common FIFO functions\n+ * These functions are for both the USART and SPI configuration and\n+ * status.\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tInitializes the system FIFO\n+ * @brief\tpFIFO\t: Pointer to system FIFO registers\n+ * @return\tNothing\n+ */\n+void Chip_FIFO_Init(LPC_FIFO_T *pFIFO);\n+\n+/**\n+ * @brief\tDeinitializes the system FIFO\n+ * @brief\tpFIFO\t: Pointer to system FIFO registers\n+ * @return\tNothing\n+ */\n+void Chip_FIFO_Deinit(LPC_FIFO_T *pFIFO);\n+\n+/** USART/SPI peripheral identifier */\n+typedef enum {FIFO_USART, FIFO_SPI} LPC_FIFO_PERIPHID_T;\n+\n+/** USART/SPI FIFO direction identifier */\n+typedef enum {FIFO_RX, FIFO_TX} LPC_FIFO_DIR_T;\n+\n+/**\n+ * @brief\tGet the FIFO space available for the USART/SPI direction\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tperiphId\t: Peripheral identifer\n+ * @brief\tdir\t\t\t: FIFO direction\n+ * @return\tAmount of FIFO space available for the peripheral\n+ */\n+uint32_t Chip_FIFO_GetFifoSpace(LPC_FIFO_T *pFIFO, LPC_FIFO_PERIPHID_T periphId, LPC_FIFO_DIR_T dir);\n+\n+/** USART and SPI FIFO common statuses */\n+#define LPC_FIFO_STAT_RXPAUSED      (1 << 1)\t\t/*!< Receive FIFOs paused status */\n+#define LPC_FIFO_STAT_RXEMPTY       (1 << 2)\t\t/*!< Receive FIFOs empty status */\n+#define LPC_FIFO_STAT_TXPAUSED      (1 << 9)\t\t/*!< Transmit FIFOs paused status */\n+#define LPC_FIFO_STAT_TXEMPTY       (1 << 10)\t\t/*!< Transmit FIFOs empty status */\n+\n+/**\n+ * @brief\tGet periperhal FIFO status\n+ * @brief\tpFIFO\t: Pointer to system FIFO registers\n+ * @return\tA bitfield of status values, mask with LPC_FIFO_STAT_* values\n+ * @note\tMask with one or more LPC_FIFO_STAT_* definitions to get the\n+ * status of the peripherals.\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFO_GetFifoStatus(LPC_FIFO_T *pFIFO)\n+{\n+\treturn pFIFO->common.FIFOCTLUSART;\n+}\n+\n+/**\n+ * @brief\tPause a peripheral FIFO\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tperiphId\t: Peripheral identifer\n+ * @brief\tdir\t\t\t: FIFO direction\n+ * @return\tNothing\n+ */\n+void Chip_FIFO_PauseFifo(LPC_FIFO_T *pFIFO, LPC_FIFO_PERIPHID_T periphId, LPC_FIFO_DIR_T dir);\n+\n+/**\n+ * @brief\tUnpause a peripheral FIFO\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tperiphId\t: Peripheral identifer\n+ * @brief\tdir\t\t\t: FIFO direction\n+ * @return\tNothing\n+ */\n+void Chip_FIFO_UnpauseFifo(LPC_FIFO_T *pFIFO, LPC_FIFO_PERIPHID_T periphId, LPC_FIFO_DIR_T dir);\n+\n+/** Stucture for setting USART or SPI FIFO sizes */\n+typedef struct {\n+\tuint16_t    fifoRXSize[4];\t/*!< FIFO RX size, 0-3 for USARTS 0-3, or 0-1 for SPIS 0-1 */\n+\tuint16_t    fifoTXSize[4];\t/*!< FIFO TX size, 0-3 for USARTS 0-3, or 0-1 for SPIS 0-1 */\n+} LPC_FIFO_CFGSIZE_T;\n+\n+/**\n+ * @brief\tConfigure a peripheral's FIFO sizes\n+ * @brief\tpFIFO\t: Pointer to system FIFO registers\n+ * @brief\tperiphId\t: Peripheral identifer\n+ * @brief\tpSizes\t: Pointer to s structure filled out with the peripherla FIFO sizes\n+ * @return\tNothing\n+ * @note\tThis function configures all the FIFOs for a supported peripheral\n+ * in a single call. Use 0 to disable the FIFO. This function will pause the FIFO\n+ * and leave it paused after configuration, call Chip_FIFO_UnpauseFifo() after\n+ * calling this function.\n+ */\n+void Chip_FIFO_ConfigFifoSize(LPC_FIFO_T *pFIFO, LPC_FIFO_PERIPHID_T periphId, LPC_FIFO_CFGSIZE_T *pSizes);\n+\n+/** Stucture for setting USART and SPI FIFO configuration */\n+typedef struct {\n+\tuint32_t    noTimeoutContWrite  : 1;\t/*!< Timeout Continue On Write, set to 0 to reset timeout on each TX FIFO data, or 1 for accumulated timeout */\n+\tuint32_t    noTimeoutContEmpty  : 1;\t/*!< Timeout Continue On Empty., set to 0 to reset timeout on each RX FIFO data, or 1 for accumulated timeout */\n+\tuint32_t    timeoutBase         : 4;\t/*!< Specifies the least significant timer bit to compare to TimeoutValue. See User Manual */\n+\tuint32_t    timeoutValue        : 4;\t/*!< Specifies the maximum time value for timeout at the timer position identified by TimeoutBase. See User Manual */\n+\tuint32_t    rxThreshold         : 8;\t/*!< Receive FIFO Threshold, number of data to receive prior to interrupt */\n+\tuint32_t    txThreshold         : 8;\t/*!< Transmit FIFO Threshold, number of free TX data entries available prior to interrupt */\n+} LPC_FIFO_CFG_T;\n+\n+/** USART and SPI FIFO statuses */\n+#define LPC_PERIPFIFO_STAT_RXTH         (1 << 0)\t\t/*!< When 1, the receive FIFO threshold has been reached */\n+#define LPC_PERIPFIFO_STAT_TXTH         (1 << 1)\t\t/*!< When 1, the transmit FIFO threshold has been reached */\n+#define LPC_PERIPFIFO_STATCLR_RXTIMEOUT (1 << 4)\t\t/*!< When 1, the receive FIFO has timed out, based on the timeout configuration in the CFG register */\n+#define LPC_PERIPFIFO_STATCLR_BUSERR    (1 << 7)\t\t/*!< Bus Error. When 1, a bus error has occurred while processing data for the peripheral. The bus error flag can be cleared by writing a 1 to this bit. */\n+#define LPC_PERIPFIFO_STAT_RXEMPTY      (1 << 8)\t\t/*!< Receive FIFO Empty. When 1, the receive FIFO is currently empty. */\n+#define LPC_PERIPFIFO_STAT_TXEMPTY      (1 << 9)\t\t/*!< Transmit FIFO Empty. When 1, the transmit FIFO is currently empty. */\n+\n+/** USART interrupt enable/disable bits */\n+#define LPC_PERIPFIFO_INT_RXTH          (1 << 0)\t\t/*!< Receive FIFO Threshold Interrupt Enable */\n+#define LPC_PERIPFIFO_INT_TXTH          (1 << 1)\t\t/*!< Transmit FIFO Threshold Interrupt Enable */\n+#define LPC_PERIPFIFO_INT_RXTIMEOUT     (1 << 4)\t\t/*!< Receive FIFO Timeout Interrupt Enable */\n+#define LPC_PERIPFIFO_INT_RXFLUSH       (1 << 8)\t\t/*!< Receive FIFO flush */\n+#define LPC_PERIPFIFO_INT_TXFLUSH       (1 << 9)\t\t/*!< Transmit FIFO flush */\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup FIFO_USART_5410X CHIP: USART FIFO functions\n+ * These functions are for both the USART configuration, control, and status.\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tConfigure the USART system FIFO\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @brief\tpUSARTCfg\t: Pointer to USART configuration\n+ * @return\tNothing\n+ */\n+void Chip_FIFOUSART_Configure(LPC_FIFO_T *pFIFO, int usartIndex, LPC_FIFO_CFG_T *pUSARTCfg);\n+\n+/**\n+ * @brief\tGet USART FIFO statuses\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @return\tUSART system FIFO statuses (mask with LPC_PERIPFIFO_STAT* values)\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFOUSART_GetStatus(LPC_FIFO_T *pFIFO, int usartIndex)\n+{\n+\treturn pFIFO->usart[usartIndex].STAT;\n+}\n+\n+/**\n+ * @brief\tGet USART RX FIFO count\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @return\tReturns how many entries may be read from the receive FIFO. 0 = FIFO empty.\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFOUSART_GetRxCount(LPC_FIFO_T *pFIFO, int usartIndex)\n+{\n+\treturn (pFIFO->usart[usartIndex].STAT >> 16) & 0xFF;\n+}\n+\n+/**\n+ * @brief\tGet USART TC FIFO count\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @return\tReturns how many entries may be written to the transmit FIFO. 0 = FIFO full.\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFOUSART_GetTxCount(LPC_FIFO_T *pFIFO, int usartIndex)\n+{\n+\treturn (pFIFO->usart[usartIndex].STAT >> 24) & 0xFF;\n+}\n+\n+/**\n+ * @brief\tClear USART FIFO statuses\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @brief\tclearMask\t: Mask of latched bits to cleared, Or'ed values of LPC_PERIPFIFO_STATCLR*\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_FIFOUSART_ClearStatus(LPC_FIFO_T *pFIFO, int usartIndex, uint32_t clearMask)\n+{\n+\tpFIFO->usart[usartIndex].STAT = clearMask;\n+}\n+\n+/**\n+ * @brief\tGet USART FIFO pending interrupt statuses\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @return\tUSART system FIFO pending interrupt statuses (mask with LPC_PERIPFIFO_STAT* values)\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFOUSART_GetIntStatus(LPC_FIFO_T *pFIFO, int usartIndex)\n+{\n+\treturn pFIFO->usart[usartIndex].INTSTAT;\n+}\n+\n+/**\n+ * @brief\tEnable USART system FIFO interrupts\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @brief\tintMask\t\t: Interrupts to enable (LPC_PERIPFIFO_INT_RXTH, LPC_PERIPFIFO_INT_TXTH, or LPC_PERIPFIFO_INT_RXTIMEOUT)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_FIFOUSART_EnableInts(LPC_FIFO_T *pFIFO, int usartIndex, uint32_t intMask)\n+{\n+\tpFIFO->usart[usartIndex].CTLSET = intMask;\n+}\n+\n+/**\n+ * @brief\tDisable USART system FIFO interrupts\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @brief\tintMask\t\t: Interrupts to disable (LPC_PERIPFIFO_INT_RXTH, LPC_PERIPFIFO_INT_TXTH, or LPC_PERIPFIFO_INT_RXTIMEOUT)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_FIFOUSART_DisableInts(LPC_FIFO_T *pFIFO, int usartIndex, uint32_t intMask)\n+{\n+\tpFIFO->usart[usartIndex].CTLCLR = intMask;\n+}\n+\n+/**\n+ * @brief\tFlush TX and/or RX USART system FIFOs\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @brief\tflushMask\t: FIFOS to flush (Or'ed LPC_PERIPFIFO_INT_RXFLUSH and/or LPC_PERIPFIFO_INT_TXFLUSH)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_FIFOUSART_FlushFIFO(LPC_FIFO_T *pFIFO, int usartIndex, uint32_t flushMask)\n+{\n+\tflushMask = flushMask & (LPC_PERIPFIFO_INT_RXFLUSH | LPC_PERIPFIFO_INT_TXFLUSH);\n+\n+\tpFIFO->usart[usartIndex].CTLSET = flushMask;\n+\tpFIFO->usart[usartIndex].CTLCLR = flushMask;\n+}\n+\n+/**\n+ * @brief\tWrite data to a USART system FIFO (non-blocking)\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @brief\tsz8\t\t\t: Set to true for 8-bit or less data, or false for >8-bit\n+ * @brief\tbuff\t\t: Pointer to data in buffer to write\n+ * @brief\tnumData\t\t: Maximum number of data values to write\n+ * @return\tThe number of data values written to the USART system FIFO\n+ */\n+int Chip_FIFOUSART_WriteTX(LPC_FIFO_T *pFIFO, int usartIndex, bool sz8, void *buff, int numData);\n+\n+/**\n+ * @brief\tRead data from a USART system FIFO (non-blocking)\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @brief\tsz8\t\t\t: Set to true for 8-bit or less data, or false for >8-bit\n+ * @brief\tbuff\t\t: Pointer to data buffer to read into\n+ * @brief\tnumData\t\t: Maximum number of data values to read\n+ * @return\tThe number of data values read from the USART system FIFO\n+ */\n+int Chip_FIFOUSART_ReadRX(LPC_FIFO_T *pFIFO, int usartIndex, bool sz8, void *buff, int numData);\n+\n+/** USART FIFO read FIFO statuses */\n+#define LPC_USARTRXFIFO_STAT_FRAMERR    (1 << 13)\t\t/*!< Framing Error status flag */\n+#define LPC_USARTRXFIFO_STAT_PARITYERR  (1 << 14)\t\t/*!< Parity Error status flag */\n+#define LPC_USARTRXFIFO_STAT_RXNOISE    (1 << 15)\t\t/*!< Received Noise flag */\n+\n+/**\n+ * @brief\tRead data from a USART system FIFO with status (non-blocking)\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tusartIndex\t: USART system FIFO index, 0 - 3\n+ * @brief\tbuff\t\t: Pointer to data buffer to read into\n+ * @brief\tnumData\t\t: Maximum number of data values to read\n+ * @return\tThe number of data values with status read from the USART system FIFO. Mask\n+ * the upper bits of each word in the buffer with the LPC_USARTRXFIFO_STAT_* flags to\n+ * determine individual data status.\n+ */\n+int Chip_FIFOUSART_ReadRXStatus(LPC_FIFO_T *pFIFO, int usartIndex, uint16_t *buff, int numData);\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup FIFO_SPI_5410X CHIP: SPI FIFO functions\n+ * These functions are for both the SPI configuration, control, and status.\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tConfigure the SPI system FIFO\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @brief\tpUSARTCfg\t: Pointer to SPI configuration\n+ * @return\tNothing\n+ */\n+void Chip_FIFOSPI_Configure(LPC_FIFO_T *pFIFO, int spiIndex, LPC_FIFO_CFG_T *pSPICfg);\n+\n+/**\n+ * @brief\tGet SPI FIFO statuses\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @return\tSPI system FIFO statuses (mask with LPC_PERIPFIFO_STAT* values)\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFOSPI_GetStatus(LPC_FIFO_T *pFIFO, int spiIndex)\n+{\n+\treturn pFIFO->spi[spiIndex].STAT;\n+}\n+\n+/**\n+ * @brief\tGet SPI RX FIFO count\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @return\tReturns how many entries may be read from the receive FIFO. 0 = FIFO empty.\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFOSPI_GetRxCount(LPC_FIFO_T *pFIFO, int spiIndex)\n+{\n+\treturn (pFIFO->spi[spiIndex].STAT >> 16) & 0xFF;\n+}\n+\n+/**\n+ * @brief\tGet SPI TX FIFO count\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @return\tReturns how many entries may be written to the transmit FIFO. 0 = FIFO full.\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFOSPI_GetTxCount(LPC_FIFO_T *pFIFO, int spiIndex)\n+{\n+\treturn (pFIFO->spi[spiIndex].STAT >> 24) & 0xFF;\n+}\n+\n+/**\n+ * @brief\tClear SPI FIFO statuses\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @brief\tclearMask\t: Mask of latched bits to cleared, Or'ed values of LPC_PERIPFIFO_STATCLR*\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_FIFOSPI_ClearStatus(LPC_FIFO_T *pFIFO, int spiIndex, uint32_t clearMask)\n+{\n+\tpFIFO->spi[spiIndex].STAT = clearMask;\n+}\n+\n+/**\n+ * @brief\tGet SPI FIFO pending interrupt statuses\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @return\tSPI system FIFO pending interrupt statuses (mask with LPC_PERIPFIFO_STAT* values)\n+ */\n+__STATIC_INLINE uint32_t Chip_FIFOSPI_GetIntStatus(LPC_FIFO_T *pFIFO, int spiIndex)\n+{\n+\treturn pFIFO->spi[spiIndex].INTSTAT;\n+}\n+\n+/**\n+ * @brief\tEnable SPI system FIFO interrupts\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @brief\tintMask\t\t: Interrupts to enable (LPC_PERIPFIFO_INT_RXTH, LPC_PERIPFIFO_INT_TXTH, or LPC_PERIPFIFO_INT_RXTIMEOUT)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_FIFOSPI_EnableInts(LPC_FIFO_T *pFIFO, int spiIndex, uint32_t intMask)\n+{\n+\tpFIFO->spi[spiIndex].CTLSET = intMask;\n+}\n+\n+/**\n+ * @brief\tDisable SPI system FIFO interrupts\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @brief\tintMask\t\t: Interrupts to disable (LPC_PERIPFIFO_INT_RXTH, LPC_PERIPFIFO_INT_TXTH, or LPC_PERIPFIFO_INT_RXTIMEOUT)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_FIFOSPI_DisableInts(LPC_FIFO_T *pFIFO, int spiIndex, uint32_t intMask)\n+{\n+\tpFIFO->spi[spiIndex].CTLCLR = intMask;\n+}\n+\n+/**\n+ * @brief\tFlush TX and/or RX SPI system FIFOs\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tspiIndex\t: SPI system FIFO index, 0 - 1\n+ * @brief\tflushMask\t: FIFOS to flush (Or'ed LPC_PERIPFIFO_INT_RXFLUSH and/or LPC_PERIPFIFO_INT_TXFLUSH)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_FIFOSPI_FlushFIFO(LPC_FIFO_T *pFIFO, int spiIndex, uint32_t flushMask)\n+{\n+\tflushMask = flushMask & (LPC_PERIPFIFO_INT_RXFLUSH | LPC_PERIPFIFO_INT_TXFLUSH);\n+\n+\tpFIFO->spi[spiIndex].CTLSET = flushMask;\n+\tpFIFO->spi[spiIndex].CTLCLR = flushMask;\n+}\n+\n+/** SPI transfer flags */\n+#define LPC_SPIFIFO_FLAG_EOF            (1 << 21)\t\t/*!< Add a delay between frames */\n+#define LPC_SPIFIFO_FLAG_RXIGNORE       (1 << 22)\t\t/*!< Ignore RX data */\n+\n+/** SPI transfer error statuses */\n+#define LPC_SPIFIFO_STAT_BUSY           (0x0)\t\t/*!< SPI transfer busy/in progress */\n+#define LPC_SPIFIFO_STAT_BADPARAM       (0x1)\t\t/*!< SPI paramaters for transfer are invalid */\n+#define LPC_SPIFIFO_STAT_TXUNDERRUN     (0x2)\t\t/*!< Slave mode only, transmit FIFO underrun */\n+#define LPC_SPIFIFO_STAT_RXOVERRUN      (0x3)\t\t/*!< Slave mode only, receive FIFO overrun */\n+#define LPC_SPIFIFO_STAT_COMPLETE       (0xF)\t\t/*!< SPI transfer completed successfully */\n+\n+#if 0\t/* Sorry, not yet support */\n+/** Stucture for SPI control */\n+typedef struct {\n+\tuint32_t    start   : 1;\t\t/*!< Indicates transfer start, 0 = transfer resume, 1 = transfer start (automatically set by Chip_FIFOSPI_StartTransfer()) */\n+\tuint32_t    end     : 1;\t\t/*!< Transfer wil end once buffers are empty */\n+\tuint32_t    sz8     : 1;\t\t/*!< Specifies the in and out buffer sizes, 0 = 16-bit, 1 = 8-bit */\n+\tuint32_t    sselNum : 2;\t\t/*!< SPI chip select number, 0 - 3 */\n+\tvoid        *inBuff;\t\t\t/*!< SPI transfer in data buffer pointer */\n+\tuint32_t    inIndex;\t\t\t/*!< SPI transfer in buffer index */\n+\tvoid        *outBuff;\t\t\t/*!< SPI transfer out data buffer pointer */\n+\tuint32_t    outIndex;\t\t\t/*!< SPI transfer out buffer index */\n+\tuint32_t    numData;\t\t\t/*!< Size of data both the receive and transfer buffers */\n+\tint         spiIndex;\t\t\t/*!< SPI system FIFO index, 0 - 1 */\n+} LPC_FIFO_SPICTL_T;\n+\n+/**\n+ * @brief\tStart a SPI data transfer (non-blocking)\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tpSetupData\t: Pointer to SPI transfer setup structure\n+ * @return\tNothing\n+ * @note\tSimply calls Chip_FIFOSPI_Transfer() with pSetupData->start = 1.\n+ */\n+void Chip_FIFOSPI_StartTransfer(LPC_FIFO_T *pFIFO, LPC_FIFO_SPICTL_T *pSetupData);\n+\n+/**\n+ * @brief\tFeed a SPI data transfer (non-blocking)\n+ * @brief\tpFIFO\t\t: Pointer to system FIFO registers\n+ * @brief\tpSetupData\t: Pointer to SPI transfer setup structure\n+ * @return\tNothing\n+ * @note\tContinues SPI transfer usng the system FIFO.\n+ */\n+void Chip_FIFOSPI_Transfer(LPC_FIFO_T *pFIFO, LPC_FIFO_SPICTL_T *pSetupData);\n+\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __FIFO_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/fpu_init.h ./chip/inc/fpu_init.h\n--- a_tnusFF/chip/inc/fpu_init.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/fpu_init.h\t2016-10-22 23:17:43.552840278 -0300\n@@ -0,0 +1,52 @@\n+/*\n+ * @brief FPU init code\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __FPU_INIT_H_\n+#define __FPU_INIT_H_\n+\n+/**\n+ * @defgroup CHIP_FPU_CMX CHIP: FPU initialization\n+ * @ingroup CHIP_Common\n+ * Cortex FPU initialization\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tEarly initialization of the FPU\n+ * @return\tNothing\n+ */\n+void fpuInit(void);\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __FPU_INIT_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/gpio_5410x.h ./chip/inc/gpio_5410x.h\n--- a_tnusFF/chip/inc/gpio_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/gpio_5410x.h\t2016-10-22 23:17:43.552840278 -0300\n@@ -0,0 +1,471 @@\n+/*\n+ * @brief LPC5410X GPIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GPIO_5410X_H_\n+#define __GPIO_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GPIO_5410X CHIP: LPC5410X GPIO driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief  GPIO port register block structure\n+ */\n+typedef struct {\t\t\t\t/*!< GPIO_PORT Structure */\n+\t__IO uint8_t B[128][32];\t/*!< Offset 0x0000: Byte pin registers ports 0 to n; pins PIOn_0 to PIOn_31 */\n+\t__IO uint32_t W[32][32];\t/*!< Offset 0x1000: Word pin registers port 0 to n */\n+\t__IO uint32_t DIR[32];\t\t/*!< Offset 0x2000: Direction registers port n */\n+\t__IO uint32_t MASK[32];\t\t/*!< Offset 0x2080: Mask register port n */\n+\t__IO uint32_t PIN[32];\t\t/*!< Offset 0x2100: Portpin register port n */\n+\t__IO uint32_t MPIN[32];\t\t/*!< Offset 0x2180: Masked port register port n */\n+\t__IO uint32_t SET[32];\t\t/*!< Offset 0x2200: Write: Set register for port n Read: output bits for port n */\n+\t__O  uint32_t CLR[32];\t\t/*!< Offset 0x2280: Clear port n */\n+\t__O  uint32_t NOT[32];\t\t/*!< Offset 0x2300: Toggle port n */\n+} LPC_GPIO_T;\n+\n+/**\n+ * @brief\tInitialize GPIO block\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @return\tNothing\n+ */\n+void Chip_GPIO_Init(LPC_GPIO_T *pGPIO);\n+\n+/**\n+ * @brief\tDe-Initialize GPIO block\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @return\tNothing\n+ */\n+void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO);\n+\n+/**\n+ * @brief\tSet a GPIO port/pin state\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to set\n+ * @param\tpin\t\t: GPIO pin to set\n+ * @param\tsetting\t: true for high, false for low\n+ * @return\tNothing\n+ * @note\tIt is recommended to use the Chip_GPIO_SetPinState() function instead.\n+ */\n+__STATIC_INLINE void Chip_GPIO_WritePortBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t pin, bool setting)\n+{\n+\tpGPIO->B[port][pin] = setting;\n+}\n+\n+/**\n+ * @brief\tSet a GPIO pin state via the GPIO byte register\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to set\n+ * @param\tpin\t\t: GPIO pin to set\n+ * @param\tsetting\t: true for high, false for low\n+ * @return\tNothing\n+ * @note\tThis function replaces Chip_GPIO_WritePortBit()\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPinState(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool setting)\n+{\n+\tpGPIO->B[port][pin] = setting;\n+}\n+\n+/**\n+ * @brief\tRead a GPIO pin state via the GPIO byte register\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to read\n+ * @param\tpin\t\t: GPIO pin to read\n+ * @return\ttrue if the GPIO pin is high, false if low\n+ * @note\tIt is recommended to use the Chip_GPIO_GetPinState() function instead.\n+ */\n+__STATIC_INLINE bool Chip_GPIO_ReadPortBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t pin)\n+{\n+\treturn (bool) pGPIO->B[port][pin];\n+}\n+\n+/**\n+ * @brief\tGet a GPIO pin state via the GPIO byte register\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to read\n+ * @param\tpin\t\t: GPIO pin to get state for\n+ * @return\ttrue if the GPIO is high, false if low\n+ * @note\tThis function replaces Chip_GPIO_ReadPortBit()\n+ */\n+__STATIC_INLINE bool Chip_GPIO_GetPinState(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+\treturn (bool) pGPIO->B[port][pin];\n+}\n+\n+/**\n+ * @brief\tSet GPIO direction for a single GPIO pin\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to set\n+ * @param\tpin\t\t: GPIO pin to set\n+ * @param\tsetting\t: true for output, false for input\n+ * @return\tNothing\n+ * @note\tIt is recommended to use the Chip_GPIO_SetPinDIROutput(),\n+ * Chip_GPIO_SetPinDIRInput() or Chip_GPIO_SetPinDIR() functions instead\n+ * of this function.\n+ */\n+void Chip_GPIO_WriteDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t pin, bool setting);\n+\n+/**\n+ * @brief\tSet GPIO direction for a single GPIO pin to an output\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to set\n+ * @param\tpin\t\t: GPIO pin to set direction on as output\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPinDIROutput(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+\tpGPIO->DIR[port] |= 1UL << pin;\n+}\n+\n+/**\n+ * @brief\tSet GPIO direction for a single GPIO pin to an input\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to set\n+ * @param\tpin\t\t: GPIO pin to set direction on as input\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPinDIRInput(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+\tpGPIO->DIR[port] &= ~(1UL << pin);\n+}\n+\n+/**\n+ * @brief\tSet GPIO direction for a single GPIO pin\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to set\n+ * @param\tpin\t\t: GPIO pin to set direction for\n+ * @param\toutput\t: true for output, false for input\n+ * @return\tNothing\n+ */\n+void Chip_GPIO_SetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool output);\n+\n+/**\n+ * @brief\tRead a GPIO direction (out or in)\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to read\n+ * @param\tbit\t\t: GPIO bit direction to read\n+ * @return\ttrue if the GPIO is an output, false if input\n+ * @note\tIt is recommended to use the Chip_GPIO_GetPinDIR() function instead.\n+ */\n+__STATIC_INLINE bool Chip_GPIO_ReadDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t bit)\n+{\n+\treturn (bool) (((pGPIO->DIR[port]) >> bit) & 1);\n+}\n+\n+/**\n+ * @brief\tGet GPIO direction for a single GPIO pin\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: GPIO port to read (supports port 0 only)\n+ * @param\tpin\t\t: GPIO pin to get direction for\n+ * @return\ttrue if the GPIO is an output, false if input\n+ */\n+__STATIC_INLINE bool Chip_GPIO_GetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+\treturn Chip_GPIO_ReadDirBit(pGPIO, port, pin);\n+}\n+\n+/**\n+ * @brief\tSet Direction for a GPIO port\n+ * @param\tpGPIO\t\t: The base of GPIO peripheral on the chip\n+ * @param\tportNum\t\t: port Number\n+ * @param\tbitValue\t: GPIO bit to set\n+ * @param\tout\t\t\t: Direction value, 0 = input, !0 = output\n+ * @return\tNone\n+ * @note\tBits set to '0' are not altered. It is recommended to use the\n+ * Chip_GPIO_SetPortDIR() function instead.\n+ */\n+void Chip_GPIO_SetDir(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue, uint8_t out);\n+\n+/**\n+ * @brief\tSet GPIO direction for a all selected GPIO pins to an output\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number\n+ * @param\tpinMask\t: GPIO pin mask to set direction on as output (bits 0..b for pins 0..n)\n+ * @return\tNothing\n+ * @note\tSets multiple GPIO pins to the output direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an output.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPortDIROutput(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)\n+{\n+\tpGPIO->DIR[port] |= pinMask;\n+}\n+\n+/**\n+ * @brief\tSet GPIO direction for a all selected GPIO pins to an input\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number\n+ * @param\tpinMask\t: GPIO pin mask to set direction on as input (bits 0..b for pins 0..n)\n+ * @return\tNothing\n+ * @note\tSets multiple GPIO pins to the input direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an input.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPortDIRInput(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)\n+{\n+\tpGPIO->DIR[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief\tSet GPIO direction for a all selected GPIO pins to an input or output\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number\n+ * @param\tpinMask\t: GPIO pin mask to set direction on (bits 0..b for pins 0..n)\n+ * @param\toutSet\t: Direction value, false = set as inputs, true = set as outputs\n+ * @return\tNothing\n+ * @note\tSets multiple GPIO pins to the input direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an input.\n+ */\n+void Chip_GPIO_SetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask, bool outSet);\n+\n+/**\n+ * @brief\tGet GPIO direction for a all GPIO pins\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number\n+ * @return\ta bitfield containing the input and output states for each pin\n+ * @note\tFor pins 0..n, a high state in a bit corresponds to an output state for the\n+ * same pin, while a low  state corresponds to an input state.\n+ */\n+__STATIC_INLINE uint32_t Chip_GPIO_GetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+\treturn pGPIO->DIR[port];\n+}\n+\n+/**\n+ * @brief\tSet GPIO port mask value for GPIO masked read and write\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tmask\t: Mask value for read and write\n+ * @return\tNothing\n+ * @note\tControls which bits corresponding to PIO0_n are active in the P0MPORT\n+ * register (bit 0 = PIO0_0, bit 1 = PIO0_1, ..., bit 17 = PIO0_17).\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPortMask(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t mask)\n+{\n+\tpGPIO->MASK[port] = mask;\n+}\n+\n+/**\n+ * @brief\tGet GPIO port mask value used for GPIO masked read and write\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @return\tReturns value set with the Chip_GPIO_SetPortMask() function.\n+ */\n+__STATIC_INLINE uint32_t Chip_GPIO_GetPortMask(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+\treturn pGPIO->MASK[port];\n+}\n+\n+/**\n+ * @brief\tSet all GPIO raw pin states (regardless of masking)\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tvalue\t: Value to set all GPIO pin states (0..n) to\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPortValue(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t value)\n+{\n+\tpGPIO->PIN[port] = value;\n+}\n+\n+/**\n+ * @brief\tGet all GPIO raw pin states (regardless of masking)\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @return\tCurrent (raw) state of all GPIO pins\n+ */\n+__STATIC_INLINE uint32_t Chip_GPIO_GetPortValue(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+\treturn pGPIO->PIN[port];\n+}\n+\n+/**\n+ * @brief\tSet all GPIO pin states, but mask via the MASKP0 register\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tvalue\t: Value to set all GPIO pin states (0..n) to\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetMaskedPortValue(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t value)\n+{\n+\tpGPIO->MPIN[port] = value;\n+}\n+\n+/**\n+ * @brief\tGet all GPIO pin statesm but mask via the MASKP0 register\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @return\tCurrent (masked) state of all GPIO pins\n+ */\n+__STATIC_INLINE uint32_t Chip_GPIO_GetMaskedPortValue(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+\treturn pGPIO->MPIN[port];\n+}\n+\n+/**\n+ * @brief\tSet a GPIO port/bit to the high state\n+ * @param\tpGPIO\t\t: The base of GPIO peripheral on the chip\n+ * @param\tportNum\t\t: port number (supports port 0 only)\n+ * @param\tbitValue\t: bit(s) in the port to set high\n+ * @return\tNone\n+ * @note\tAny bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output. It is recommended to use the\n+ * Chip_GPIO_SetPortOutHigh() function instead.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetValue(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue)\n+{\n+\tpGPIO->SET[portNum] = bitValue;\n+}\n+\n+/**\n+ * @brief\tSet selected GPIO output pins to the high state\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tpins\t: pins (0..n) to set high\n+ * @return\tNone\n+ * @note\tAny bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPortOutHigh(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+\tpGPIO->SET[port] = pins;\n+}\n+\n+/**\n+ * @brief\tSet an individual GPIO output pin to the high state\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tpin\t\t: pin number (0..n) to set high\n+ * @return\tNone\n+ * @note\tAny bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPinOutHigh(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+\tpGPIO->SET[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief\tSet a GPIO port/bit to the low state\n+ * @param\tpGPIO\t\t: The base of GPIO peripheral on the chip\n+ * @param\tportNum\t\t: port number (support port 0 only)\n+ * @param\tbitValue\t: bit(s) in the port to set low\n+ * @return\tNone\n+ * @note\tAny bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output. It is recommended to use the\n+ * Chip_GPIO_SetPortOutLow() function instead.\n+ */\n+__STATIC_INLINE void Chip_GPIO_ClearValue(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue)\n+{\n+\tpGPIO->CLR[portNum] = bitValue;\n+}\n+\n+/**\n+ * @brief\tSet selected GPIO output pins to the low state\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tpins\t: pins (0..n) to set low\n+ * @return\tNone\n+ * @note\tAny bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPortOutLow(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+\tpGPIO->CLR[port] = pins;\n+}\n+\n+/**\n+ * @brief\tSet an individual GPIO output pin to the low state\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tpin\t\t: pin number (0..n) to set low\n+ * @return\tNone\n+ * @note\tAny bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPinOutLow(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+\tpGPIO->CLR[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief\tToggle selected GPIO output pins to the opposite state\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tpins\t: pins (0..n) to toggle\n+ * @return\tNone\n+ * @note\tAny bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPortToggle(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+\tpGPIO->NOT[port] = pins;\n+}\n+\n+/**\n+ * @brief\tToggle an individual GPIO output pin to the opposite state\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tport\t: port Number (supports port 0 only)\n+ * @param\tpin\t\t: pin number (0..n) to toggle\n+ * @return\tNone\n+ * @note\tAny bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+__STATIC_INLINE void Chip_GPIO_SetPinToggle(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+\tpGPIO->NOT[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief\tRead current bit states for the selected port\n+ * @param\tpGPIO\t: The base of GPIO peripheral on the chip\n+ * @param\tportNum\t: port number to read (supports port 0 only)\n+ * @return\tCurrent value of GPIO port\n+ * @note\tThe current states of the bits for the port are read, regardless of\n+ * whether the GPIO port bits are input or output. It is recommended to use the\n+ * Chip_GPIO_GetPortValue() function instead.\n+ */\n+__STATIC_INLINE uint32_t Chip_GPIO_ReadValue(LPC_GPIO_T *pGPIO, uint8_t portNum)\n+{\n+\treturn pGPIO->PIN[portNum];\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GPIO_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/gpiogroup_5410x.h ./chip/inc/gpiogroup_5410x.h\n--- a_tnusFF/chip/inc/gpiogroup_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/gpiogroup_5410x.h\t2016-10-22 23:17:43.556840278 -0300\n@@ -0,0 +1,223 @@\n+/*\n+ * @brief LPC5410x GPIO group driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GPIOGROUP_5410X_H_\n+#define __GPIOGROUP_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GPIOGP_5410X CHIP: LPC5410X GPIO group driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief GPIO grouped interrupt register block structure\n+ */\n+typedef struct {\t\t\t\t\t/*!< GPIO_GROUP_INTn Structure */\n+\t__IO uint32_t  CTRL;\t\t\t/*!< GPIO grouped interrupt control register */\n+\t__I  uint32_t  RESERVED0[7];\n+\t__IO uint32_t  PORT_POL[8];\t\t/*!< GPIO grouped interrupt port polarity register */\n+\t__IO uint32_t  PORT_ENA[8];\t\t/*!< GPIO grouped interrupt port m enable register */\n+\tuint32_t       RESERVED1[4072];\n+} LPC_GPIOGROUPINT_T;\n+\n+/**\n+ * LPC5410x GPIO group bit definitions\n+ */\n+#define GPIOGR_INT       (1 << 0)\t/*!< GPIO interrupt pending/clear bit */\n+#define GPIOGR_COMB      (1 << 1)\t/*!< GPIO interrupt OR(0)/AND(1) mode bit */\n+#define GPIOGR_TRIG      (1 << 2)\t/*!< GPIO interrupt edge(0)/level(1) mode bit */\n+\n+/**\n+ * @brief\tInitialize GPIO group interrupt block\n+ * @param\tpGPIOGPINT\t: The base of GPIO group peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_Init(LPC_GPIOGROUPINT_T *pGPIOGPINT)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_GINT);\n+\tChip_SYSCON_PeriphReset(RESET_GINT);\n+}\n+\n+/**\n+ * @brief\tDe-Initialize GPIO group interrupt block\n+ * @param\tpGPIOGPINT\t: The base of GPIO group peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_DeInit(LPC_GPIOGROUPINT_T *pGPIOGPINT)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_GINT);\n+}\n+\n+/**\n+ * @brief\tClear interrupt pending status for the selected group\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_ClearIntStatus(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+\tpGPIOGPINT[group].CTRL |= GPIOGR_INT;\n+}\n+\n+/**\n+ * @brief\tReturns current GPIO group inetrrupt pending status\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @return\ttrue if the group interrupt is pending, otherwise false.\n+ */\n+__STATIC_INLINE bool Chip_GPIOGP_GetIntStatus(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+\treturn (bool) ((pGPIOGPINT[group].CTRL & GPIOGR_INT) != 0);\n+}\n+\n+/**\n+ * @brief\tSelected GPIO group functionality for trigger on any pin in group (OR mode)\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_SelectOrMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+\tpGPIOGPINT[group].CTRL &= ~(GPIOGR_COMB | GPIOGR_INT);\n+}\n+\n+/**\n+ * @brief\tSelected GPIO group functionality for trigger on all matching pins in group (AND mode)\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_SelectAndMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+\tpGPIOGPINT[group].CTRL = (pGPIOGPINT[group].CTRL & ~GPIOGR_INT) | GPIOGR_COMB;\n+}\n+\n+/**\n+ * @brief\tSelected GPIO group functionality edge trigger mode\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_SelectEdgeMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+\tpGPIOGPINT[group].CTRL &= ~(GPIOGR_TRIG | GPIOGR_INT);\n+}\n+\n+/**\n+ * @brief\tSelected GPIO group functionality level trigger mode\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_SelectLevelMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+\tpGPIOGPINT[group].CTRL = (pGPIOGPINT[group].CTRL & ~GPIOGR_INT) | GPIOGR_TRIG;\n+}\n+\n+/**\n+ * @brief\tSet selected pins for the group and port to low level trigger\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @param\tport\t\t: GPIO port number\n+ * @param\tpinMask\t\t: Or'ed value of pins to select for low level (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_SelectLowLevel(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+\t\t\t\t\t\t\t\t\t\t\t\tuint8_t group,\n+\t\t\t\t\t\t\t\t\t\t\t\tuint8_t port,\n+\t\t\t\t\t\t\t\t\t\t\t\tuint32_t pinMask)\n+{\n+\tpGPIOGPINT[group].PORT_POL[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief\tSet selected pins for the group and port to high level trigger\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @param\tport\t\t: GPIO port number\n+ * @param\tpinMask\t\t: Or'ed value of pins to select for high level (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_SelectHighLevel(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+\t\t\t\t\t\t\t\t\t\t\t\t uint8_t group,\n+\t\t\t\t\t\t\t\t\t\t\t\t uint8_t port,\n+\t\t\t\t\t\t\t\t\t\t\t\t uint32_t pinMask)\n+{\n+\tpGPIOGPINT[group].PORT_POL[port] |= pinMask;\n+}\n+\n+/**\n+ * @brief\tDisabled selected pins for the group interrupt\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @param\tport\t\t: GPIO port number\n+ * @param\tpinMask\t\t: Or'ed value of pins to disable interrupt for (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return\tNone\n+ * @note\tDisabled pins do not contribute to the group interrupt.\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_DisableGroupPins(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+\t\t\t\t\t\t\t\t\t\t\t\t  uint8_t group,\n+\t\t\t\t\t\t\t\t\t\t\t\t  uint8_t port,\n+\t\t\t\t\t\t\t\t\t\t\t\t  uint32_t pinMask)\n+{\n+\tpGPIOGPINT[group].PORT_ENA[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief\tEnable selected pins for the group interrupt\n+ * @param\tpGPIOGPINT\t: Pointer to GPIO group register block\n+ * @param\tgroup\t\t: GPIO group number\n+ * @param\tport\t\t: GPIO port number\n+ * @param\tpinMask\t\t: Or'ed value of pins to enable interrupt for (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return\tNone\n+ * @note\tEnabled pins contribute to the group interrupt.\n+ */\n+__STATIC_INLINE void Chip_GPIOGP_EnableGroupPins(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+\t\t\t\t\t\t\t\t\t\t\t\t uint8_t group,\n+\t\t\t\t\t\t\t\t\t\t\t\t uint8_t port,\n+\t\t\t\t\t\t\t\t\t\t\t\t uint32_t pinMask)\n+{\n+\tpGPIOGPINT[group].PORT_ENA[port] |= pinMask;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GPIOGROUP_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/i2c_common_5410x.h ./chip/inc/i2c_common_5410x.h\n--- a_tnusFF/chip/inc/i2c_common_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/i2c_common_5410x.h\t2016-10-22 23:17:43.556840278 -0300\n@@ -0,0 +1,526 @@\n+/*\n+ * @brief LPC5410x I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2C_COMMON_5410X_H_\n+#define __I2C_COMMON_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2C_5410X CHIP: LPC5410x I2C driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief I2C register block structure\n+ */\n+typedef struct {\t\t\t\t\t/* I2C0 Structure         */\n+\t__IO uint32_t CFG;\t\t\t\t/*!< I2C Configuration Register common for Master, Slave and Monitor */\n+\t__IO uint32_t STAT;\t\t\t\t/*!< I2C Status Register common for Master, Slave and Monitor */\n+\t__IO uint32_t INTENSET;\t\t\t/*!< I2C Interrupt Enable Set Register common for Master, Slave and Monitor */\n+\t__O  uint32_t INTENCLR;\t\t\t/*!< I2C Interrupt Enable Clear Register common for Master, Slave and Monitor */\n+\t__IO uint32_t TIMEOUT;\t\t\t/*!< I2C Timeout value Register */\n+\t__IO uint32_t CLKDIV;\t\t\t/*!< I2C Clock Divider Register */\n+\t__IO uint32_t INTSTAT;\t\t\t/*!< I2C Interrupt Status Register */\n+\t__I  uint32_t RESERVED0;\n+\t__IO uint32_t MSTCTL;\t\t\t/*!< I2C Master Control Register */\n+\t__IO uint32_t MSTTIME;\t\t\t/*!< I2C Master Time Register for SCL */\n+\t__IO uint32_t MSTDAT;\t\t\t/*!< I2C Master Data Register */\n+\t__I  uint32_t RESERVED1[5];\n+\t__IO uint32_t SLVCTL;\t\t\t/*!< I2C Slave Control Register */\n+\t__IO uint32_t SLVDAT;\t\t\t/*!< I2C Slave Data Register */\n+\t__IO uint32_t SLVADR[4];\t\t/*!< I2C Slave Address Registers */\n+\t__IO uint32_t SLVQUAL0;\t\t\t/*!< I2C Slave Address Qualifier 0 Register */\n+\t__I  uint32_t RESERVED2[9];\n+\t__IO uint32_t MONRXDAT;\t\t\t/*!< I2C Monitor Data Register */\n+} LPC_I2C_T;\n+\n+/*\n+ * @brief I2C Configuration register Bit definition\n+ */\n+#define I2C_CFG_MSTEN             (1 << 0)\t\t\t/*!< Master Enable/Disable Bit */\n+#define I2C_CFG_SLVEN             (1 << 1)\t\t\t/*!< Slave Enable/Disable Bit */\n+#define I2C_CFG_MONEN             (1 << 2)\t\t\t/*!< Monitor Enable/Disable Bit */\n+#define I2C_CFG_TIMEOUTEN         (1 << 3)\t\t\t/*!< Timeout Enable/Disable Bit */\n+#define I2C_CFG_MONCLKSTR         (1 << 4)\t\t\t/*!< Monitor Clock Stretching Bit */\n+#define I2C_CFG_MASK              ((uint32_t) 0x1F)\t/*!< Configuration Register Mask */\n+\n+/*\n+ * @brief I2C Status register Bit definition\n+ */\n+#define I2C_STAT_MSTPENDING       (1 << 0)\t\t/*!< Master Pending Status Bit */\n+#define I2C_STAT_MSTSTATE         (0x7 << 1)\t/*!< Master State Code */\n+#define I2C_STAT_MSTRARBLOSS      (1 << 4)\t\t/*!< Master Arbitration Loss Bit */\n+#define I2C_STAT_MSTSTSTPERR      (1 << 6)\t\t/*!< Master Start Stop Error Bit */\n+#define I2C_STAT_SLVPENDING       (1 << 8)\t\t/*!< Slave Pending Status Bit */\n+#define I2C_STAT_SLVSTATE         (0x3 << 9)\t/*!< Slave State Code */\n+#define I2C_STAT_SLVNOTSTR        (1 << 11)\t\t/*!< Slave not stretching Clock Bit */\n+#define I2C_STAT_SLVIDX           (0x3 << 12)\t/*!< Slave Address Index */\n+#define I2C_STAT_SLVSEL           (1 << 14)\t\t/*!< Slave Selected Bit */\n+#define I2C_STAT_SLVDESEL         (1 << 15)\t\t/*!< Slave Deselect Bit */\n+#define I2C_STAT_MONRDY           (1 << 16)\t\t/*!< Monitor Ready Bit */\n+#define I2C_STAT_MONOV            (1 << 17)\t\t/*!< Monitor Overflow Flag */\n+#define I2C_STAT_MONACTIVE        (1 << 18)\t\t/*!< Monitor Active Flag */\n+#define I2C_STAT_MONIDLE          (1 << 19)\t\t/*!< Monitor Idle Flag */\n+#define I2C_STAT_EVENTTIMEOUT     (1 << 24)\t\t/*!< Event Timeout Interrupt Flag */\n+#define I2C_STAT_SCLTIMEOUT       (1 << 25)\t\t/*!< SCL Timeout Interrupt Flag */\n+\n+#define I2C_STAT_MSTCODE_IDLE       (0)\t\t\t/*!< Master Idle State Code */\n+#define I2C_STAT_MSTCODE_RXREADY    (1)\t\t\t/*!< Master Receive Ready State Code */\n+#define I2C_STAT_MSTCODE_TXREADY    (2)\t\t\t/*!< Master Transmit Ready State Code */\n+#define I2C_STAT_MSTCODE_NACKADR    (3)\t\t\t/*!< Master NACK by slave on address State Code */\n+#define I2C_STAT_MSTCODE_NACKDAT    (4)\t\t\t/*!< Master NACK by slave on data State Code */\n+\n+#define I2C_STAT_SLVCODE_ADDR         (0)\t\t/*!< Master Idle State Code */\n+#define I2C_STAT_SLVCODE_RX           (1)\t\t/*!< Received data is available Code */\n+#define I2C_STAT_SLVCODE_TX           (2)\t\t/*!< Data can be transmitted Code */\n+\n+/*\n+ * @brief I2C Interrupt Enable Set register Bit definition\n+ */\n+#define I2C_INTENSET_MSTPENDING       (1 << 0)\t\t/*!< Master Pending Interrupt Enable Bit */\n+#define I2C_INTENSET_MSTRARBLOSS      (1 << 4)\t\t/*!< Master Arbitration Loss Interrupt Enable Bit */\n+#define I2C_INTENSET_MSTSTSTPERR      (1 << 6)\t\t/*!< Master Start Stop Error Interrupt Enable Bit */\n+#define I2C_INTENSET_SLVPENDING       (1 << 8)\t\t/*!< Slave Pending Interrupt Enable Bit */\n+#define I2C_INTENSET_SLVNOTSTR        (1 << 11)\t\t/*!< Slave not stretching Clock Interrupt Enable Bit */\n+#define I2C_INTENSET_SLVDESEL         (1 << 15)\t\t/*!< Slave Deselect Interrupt Enable Bit */\n+#define I2C_INTENSET_MONRDY           (1 << 16)\t\t/*!< Monitor Ready Interrupt Enable Bit */\n+#define I2C_INTENSET_MONOV            (1 << 17)\t\t/*!< Monitor Overflow Interrupt Enable Bit */\n+#define I2C_INTENSET_MONIDLE          (1 << 19)\t\t/*!< Monitor Idle Interrupt Enable Bit */\n+#define I2C_INTENSET_EVENTTIMEOUT     (1 << 24)\t\t/*!< Event Timeout Interrupt Enable Bit */\n+#define I2C_INTENSET_SCLTIMEOUT       (1 << 25)\t\t/*!< SCL Timeout Interrupt Enable Bit */\n+\n+/*\n+ * @brief I2C Interrupt Enable Clear register Bit definition\n+ */\n+#define I2C_INTENCLR_MSTPENDING       (1 << 0)\t\t/*!< Master Pending Interrupt Clear Bit */\n+#define I2C_INTENCLR_MSTRARBLOSS      (1 << 4)\t\t/*!< Master Arbitration Loss Interrupt Clear Bit */\n+#define I2C_INTENCLR_MSTSTSTPERR      (1 << 6)\t\t/*!< Master Start Stop Error Interrupt Clear Bit */\n+#define I2C_INTENCLR_SLVPENDING       (1 << 8)\t\t/*!< Slave Pending Interrupt Clear Bit */\n+#define I2C_INTENCLR_SLVNOTSTR        (1 << 11)\t\t/*!< Slave not stretching Clock Interrupt Clear Bit */\n+#define I2C_INTENCLR_SLVDESEL         (1 << 15)\t\t/*!< Slave Deselect Interrupt Clear Bit */\n+#define I2C_INTENCLR_MONRDY           (1 << 16)\t\t/*!< Monitor Ready Interrupt Clear Bit */\n+#define I2C_INTENCLR_MONOV            (1 << 17)\t\t/*!< Monitor Overflow Interrupt Clear Bit */\n+#define I2C_INTENCLR_MONIDLE          (1 << 19)\t\t/*!< Monitor Idle Interrupt Clear Bit */\n+#define I2C_INTENCLR_EVENTTIMEOUT     (1 << 24)\t\t/*!< Event Timeout Interrupt Clear Bit */\n+#define I2C_INTENCLR_SCLTIMEOUT       (1 << 25)\t\t/*!< SCL Timeout Interrupt Clear Bit */\n+\n+/*\n+ * @brief I2C TimeOut Value Macro\n+ */\n+#define I2C_TIMEOUT_VAL(n)              (((uint32_t) ((n) - 1) & 0xFFF0) | 0x000F)\t\t/*!< Macro for Timeout value register */\n+\n+/*\n+ * @brief I2C Interrupt Status register Bit definition\n+ */\n+#define I2C_INTSTAT_MSTPENDING      (1 << 0)\t\t/*!< Master Pending Interrupt Status Bit */\n+#define I2C_INTSTAT_MSTRARBLOSS     (1 << 4)\t\t/*!< Master Arbitration Loss Interrupt Status Bit */\n+#define I2C_INTSTAT_MSTSTSTPERR     (1 << 6)\t\t/*!< Master Start Stop Error Interrupt Status Bit */\n+#define I2C_INTSTAT_SLVPENDING      (1 << 8)\t\t/*!< Slave Pending Interrupt Status Bit */\n+#define I2C_INTSTAT_SLVNOTSTR       (1 << 11)\t\t/*!< Slave not stretching Clock Interrupt Status Bit */\n+#define I2C_INTSTAT_SLVDESEL        (1 << 15)\t\t/*!< Slave Deselect Interrupt Status Bit */\n+#define I2C_INTSTAT_MONRDY          (1 << 16)\t\t/*!< Monitor Ready Interrupt Status Bit */\n+#define I2C_INTSTAT_MONOV           (1 << 17)\t\t/*!< Monitor Overflow Interrupt Status Bit */\n+#define I2C_INTSTAT_MONIDLE         (1 << 19)\t\t/*!< Monitor Idle Interrupt Status Bit */\n+#define I2C_INTSTAT_EVENTTIMEOUT    (1 << 24)\t\t/*!< Event Timeout Interrupt Status Bit */\n+#define I2C_INTSTAT_SCLTIMEOUT      (1 << 25)\t\t/*!< SCL Timeout Interrupt Status Bit */\n+\n+/*\n+ * @brief I2C Master Control register Bit definition\n+ */\n+#define I2C_MSTCTL_MSTCONTINUE  (1 << 0)\t\t/*!< Master Continue Bit */\n+#define I2C_MSTCTL_MSTSTART     (1 << 1)\t\t/*!< Master Start Control Bit */\n+#define I2C_MSTCTL_MSTSTOP      (1 << 2)\t\t/*!< Master Stop Control Bit */\n+#define I2C_MSTCTL_MSTDMA       (1 << 3)\t\t/*!< Master DMA Enable Bit */\n+\n+/*\n+ * @brief I2C Master Time Register Field definition\n+ */\n+#define I2C_MSTTIME_MSTSCLLOW   (0x07 << 0)\t\t/*!< Master SCL Low Time field */\n+#define I2C_MSTTIME_MSTSCLHIGH  (0x07 << 4)\t\t/*!< Master SCL High Time field */\n+\n+/*\n+ * @brief I2C Master Data Mask\n+ */\n+#define I2C_MSTDAT_DATAMASK         ((uint32_t) 0x00FF << 0)\t/*!< Master data mask */\n+\n+/*\n+ * @brief I2C Slave Control register Bit definition\n+ */\n+#define I2C_SLVCTL_SLVCONTINUE    (1 << 0)\t\t/*!< Slave Continue Bit */\n+#define I2C_SLVCTL_SLVNACK        (1 << 1)\t\t/*!< Slave NACK Bit */\n+#define I2C_SLVCTL_SLVDMA         (1 << 3)\t\t/*!< Slave DMA Enable Bit */\n+\n+/*\n+ * @brief I2C Slave Data Mask\n+ */\n+#define I2C_SLVDAT_DATAMASK         ((uint32_t) 0x00FF << 0)\t/*!< Slave data mask */\n+\n+/*\n+ * @brief I2C Slave Address register Bit definition\n+ */\n+#define I2C_SLVADR_SADISABLE      (1 << 0)\t\t/*!< Slave Address n Disable Bit */\n+#define I2C_SLVADR_SLVADR         (0x7F << 1)\t/*!< Slave Address field */\n+#define I2C_SLVADR_MASK           ((uint32_t) 0x00FF)\t/*!< Slave Address Mask */\n+\n+/*\n+ * @brief I2C Slave Address Qualifier 0 Register Bit definition\n+ */\n+#define I2C_SLVQUAL_QUALMODE0     (1 << 0)\t\t/*!< Slave Qualifier Mode Enable Bit */\n+#define I2C_SLVQUAL_SLVQUAL0      (0x7F << 1)\t/*!< Slave Qualifier Address for Address 0 */\n+\n+/*\n+ * @brief I2C Monitor Data Register Bit definition\n+ */\n+#define I2C_MONRXDAT_DATA         (0xFF << 0)\t\t/*!< Monitor Function Receive Data Field */\n+#define I2C_MONRXDAT_MONSTART     (1 << 8)\t\t\t/*!< Monitor Received Start Bit */\n+#define I2C_MONRXDAT_MONRESTART   (1 << 9)\t\t\t/*!< Monitor Received Repeated Start Bit */\n+#define I2C_MONRXDAT_MONNACK      (1 << 10)\t\t\t/*!< Monitor Received Nack Bit */\n+\n+/*\n+ * @brief I2C Configuration register Bit definition\n+ */\n+#define I2C_CFG_MSTEN             (1 << 0)\t/*!< Master Enable/Disable Bit */\n+#define I2C_CFG_SLVEN             (1 << 1)\t/*!< Slave Enable/Disable Bit */\n+#define I2C_CFG_MONEN             (1 << 2)\t/*!< Monitor Enable/Disable Bit */\n+#define I2C_CFG_TIMEOUTEN         (1 << 3)\t/*!< Timeout Enable/Disable Bit */\n+#define I2C_CFG_MONCLKSTR         (1 << 4)\t/*!< Monitor Clock Stretching Bit */\n+#define I2C_CFG_MASK              ((uint32_t) 0x1F)\t/*!< Configuration Register Mask */\n+\n+/*\n+ * @brief I2C Status register Bit definition\n+ */\n+#define I2C_STAT_MSTPENDING       (1 << 0)\t\t/*!< Master Pending Status Bit */\n+#define I2C_STAT_MSTSTATE         (0x7 << 1)\t/*!< Master State Code */\n+#define I2C_STAT_MSTRARBLOSS      (1 << 4)\t\t/*!< Master Arbitration Loss Bit */\n+#define I2C_STAT_MSTSTSTPERR      (1 << 6)\t\t/*!< Master Start Stop Error Bit */\n+#define I2C_STAT_SLVPENDING       (1 << 8)\t\t/*!< Slave Pending Status Bit */\n+#define I2C_STAT_SLVSTATE         (0x3 << 9)\t/*!< Slave State Code */\n+#define I2C_STAT_SLVNOTSTR        (1 << 11)\t\t/*!< Slave not stretching Clock Bit */\n+#define I2C_STAT_SLVIDX           (0x3 << 12)\t/*!< Slave Address Index */\n+#define I2C_STAT_SLVSEL           (1 << 14)\t\t/*!< Slave Selected Bit */\n+#define I2C_STAT_SLVDESEL         (1 << 15)\t\t/*!< Slave Deselect Bit */\n+#define I2C_STAT_MONRDY           (1 << 16)\t\t/*!< Monitor Ready Bit */\n+#define I2C_STAT_MONOV            (1 << 17)\t\t/*!< Monitor Overflow Flag */\n+#define I2C_STAT_MONACTIVE        (1 << 18)\t\t/*!< Monitor Active Flag */\n+#define I2C_STAT_MONIDLE          (1 << 19)\t\t/*!< Monitor Idle Flag */\n+#define I2C_STAT_EVENTTIMEOUT     (1 << 24)\t\t/*!< Event Timeout Interrupt Flag */\n+#define I2C_STAT_SCLTIMEOUT       (1 << 25)\t\t/*!< SCL Timeout Interrupt Flag */\n+\n+#define I2C_STAT_MSTCODE_IDLE       (0)\t\t\t/*!< Master Idle State Code */\n+#define I2C_STAT_MSTCODE_RXREADY    (1)\t\t\t/*!< Master Receive Ready State Code */\n+#define I2C_STAT_MSTCODE_TXREADY    (2)\t\t\t/*!< Master Transmit Ready State Code */\n+#define I2C_STAT_MSTCODE_NACKADR    (3)\t\t\t/*!< Master NACK by slave on address State Code */\n+#define I2C_STAT_MSTCODE_NACKDAT    (4)\t\t\t/*!< Master NACK by slave on data State Code */\n+\n+#define I2C_STAT_SLVCODE_ADDR         (0)\t\t/*!< Master Idle State Code */\n+#define I2C_STAT_SLVCODE_RX           (1)\t\t/*!< Received data is available Code */\n+#define I2C_STAT_SLVCODE_TX           (2)\t\t/*!< Data can be transmitted Code */\n+\n+/*\n+ * @brief I2C Interrupt Enable Set register Bit definition\n+ */\n+#define I2C_INTENSET_MSTPENDING       (1 << 0)\t\t/*!< Master Pending Interrupt Enable Bit */\n+#define I2C_INTENSET_MSTRARBLOSS      (1 << 4)\t\t/*!< Master Arbitration Loss Interrupt Enable Bit */\n+#define I2C_INTENSET_MSTSTSTPERR      (1 << 6)\t\t/*!< Master Start Stop Error Interrupt Enable Bit */\n+#define I2C_INTENSET_SLVPENDING       (1 << 8)\t\t/*!< Slave Pending Interrupt Enable Bit */\n+#define I2C_INTENSET_SLVNOTSTR        (1 << 11)\t\t/*!< Slave not stretching Clock Interrupt Enable Bit */\n+#define I2C_INTENSET_SLVDESEL         (1 << 15)\t\t/*!< Slave Deselect Interrupt Enable Bit */\n+#define I2C_INTENSET_MONRDY           (1 << 16)\t\t/*!< Monitor Ready Interrupt Enable Bit */\n+#define I2C_INTENSET_MONOV            (1 << 17)\t\t/*!< Monitor Overflow Interrupt Enable Bit */\n+#define I2C_INTENSET_MONIDLE          (1 << 19)\t\t/*!< Monitor Idle Interrupt Enable Bit */\n+#define I2C_INTENSET_EVENTTIMEOUT     (1 << 24)\t\t/*!< Event Timeout Interrupt Enable Bit */\n+#define I2C_INTENSET_SCLTIMEOUT       (1 << 25)\t\t/*!< SCL Timeout Interrupt Enable Bit */\n+\n+/*\n+ * @brief I2C Interrupt Enable Clear register Bit definition\n+ */\n+#define I2C_INTENCLR_MSTPENDING       (1 << 0)\t\t/*!< Master Pending Interrupt Clear Bit */\n+#define I2C_INTENCLR_MSTRARBLOSS      (1 << 4)\t\t/*!< Master Arbitration Loss Interrupt Clear Bit */\n+#define I2C_INTENCLR_MSTSTSTPERR      (1 << 6)\t\t/*!< Master Start Stop Error Interrupt Clear Bit */\n+#define I2C_INTENCLR_SLVPENDING       (1 << 8)\t\t/*!< Slave Pending Interrupt Clear Bit */\n+#define I2C_INTENCLR_SLVNOTSTR        (1 << 11)\t\t/*!< Slave not stretching Clock Interrupt Clear Bit */\n+#define I2C_INTENCLR_SLVDESEL         (1 << 15)\t\t/*!< Slave Deselect Interrupt Clear Bit */\n+#define I2C_INTENCLR_MONRDY           (1 << 16)\t\t/*!< Monitor Ready Interrupt Clear Bit */\n+#define I2C_INTENCLR_MONOV            (1 << 17)\t\t/*!< Monitor Overflow Interrupt Clear Bit */\n+#define I2C_INTENCLR_MONIDLE          (1 << 19)\t\t/*!< Monitor Idle Interrupt Clear Bit */\n+#define I2C_INTENCLR_EVENTTIMEOUT     (1 << 24)\t\t/*!< Event Timeout Interrupt Clear Bit */\n+#define I2C_INTENCLR_SCLTIMEOUT       (1 << 25)\t\t/*!< SCL Timeout Interrupt Clear Bit */\n+\n+/*\n+ * @brief I2C TimeOut Value Macro\n+ */\n+#define I2C_TIMEOUT_VAL(n)              (((uint32_t) ((n) - 1) & 0xFFF0) | 0x000F)\t\t/*!< Macro for Timeout value register */\n+\n+/*\n+ * @brief I2C Interrupt Status register Bit definition\n+ */\n+#define I2C_INTSTAT_MSTPENDING      (1 << 0)\t\t/*!< Master Pending Interrupt Status Bit */\n+#define I2C_INTSTAT_MSTRARBLOSS     (1 << 4)\t\t/*!< Master Arbitration Loss Interrupt Status Bit */\n+#define I2C_INTSTAT_MSTSTSTPERR     (1 << 6)\t\t/*!< Master Start Stop Error Interrupt Status Bit */\n+#define I2C_INTSTAT_SLVPENDING      (1 << 8)\t\t/*!< Slave Pending Interrupt Status Bit */\n+#define I2C_INTSTAT_SLVNOTSTR       (1 << 11)\t\t/*!< Slave not stretching Clock Interrupt Status Bit */\n+#define I2C_INTSTAT_SLVDESEL        (1 << 15)\t\t/*!< Slave Deselect Interrupt Status Bit */\n+#define I2C_INTSTAT_MONRDY          (1 << 16)\t\t/*!< Monitor Ready Interrupt Status Bit */\n+#define I2C_INTSTAT_MONOV           (1 << 17)\t\t/*!< Monitor Overflow Interrupt Status Bit */\n+#define I2C_INTSTAT_MONIDLE         (1 << 19)\t\t/*!< Monitor Idle Interrupt Status Bit */\n+#define I2C_INTSTAT_EVENTTIMEOUT    (1 << 24)\t\t/*!< Event Timeout Interrupt Status Bit */\n+#define I2C_INTSTAT_SCLTIMEOUT      (1 << 25)\t\t/*!< SCL Timeout Interrupt Status Bit */\n+\n+/*\n+ * @brief I2C Master Control register Bit definition\n+ */\n+#define I2C_MSTCTL_MSTCONTINUE  (1 << 0)\t\t/*!< Master Continue Bit */\n+#define I2C_MSTCTL_MSTSTART     (1 << 1)\t\t/*!< Master Start Control Bit */\n+#define I2C_MSTCTL_MSTSTOP      (1 << 2)\t\t/*!< Master Stop Control Bit */\n+#define I2C_MSTCTL_MSTDMA       (1 << 3)\t\t/*!< Master DMA Enable Bit */\n+\n+/*\n+ * @brief I2C Master Time Register Field definition\n+ */\n+#define I2C_MSTTIME_MSTSCLLOW   (0x07 << 0)\t\t/*!< Master SCL Low Time field */\n+#define I2C_MSTTIME_MSTSCLHIGH  (0x07 << 4)\t\t/*!< Master SCL High Time field */\n+\n+/*\n+ * @brief I2C Master Data Mask\n+ */\n+#define I2C_MSTDAT_DATAMASK         ((uint32_t) 0x00FF << 0)\t/*!< Master data mask */\n+\n+/*\n+ * @brief I2C Slave Control register Bit definition\n+ */\n+#define I2C_SLVCTL_SLVCONTINUE    (1 << 0)\t\t/*!< Slave Continue Bit */\n+#define I2C_SLVCTL_SLVNACK        (1 << 1)\t\t/*!< Slave NACK Bit */\n+#define I2C_SLVCTL_SLVDMA         (1 << 3)\t\t/*!< Slave DMA Enable Bit */\n+\n+/*\n+ * @brief I2C Slave Data Mask\n+ */\n+#define I2C_SLVDAT_DATAMASK         ((uint32_t) 0x00FF << 0)\t/*!< Slave data mask */\n+\n+/*\n+ * @brief I2C Slave Address register Bit definition\n+ */\n+#define I2C_SLVADR_SADISABLE      (1 << 0)\t\t/*!< Slave Address n Disable Bit */\n+#define I2C_SLVADR_SLVADR         (0x7F << 1)\t/*!< Slave Address field */\n+#define I2C_SLVADR_MASK           ((uint32_t) 0x00FF)\t/*!< Slave Address Mask */\n+\n+/*\n+ * @brief I2C Slave Address Qualifier 0 Register Bit definition\n+ */\n+#define I2C_SLVQUAL_QUALMODE0     (1 << 0)\t\t/*!< Slave Qualifier Mode Enable Bit */\n+#define I2C_SLVQUAL_SLVQUAL0      (0x7F << 1)\t/*!< Slave Qualifier Address for Address 0 */\n+\n+/*\n+ * @brief I2C Monitor Data Register Bit definition\n+ */\n+#define I2C_MONRXDAT_DATA         (0xFF << 0)\t\t/*!< Monitor Function Receive Data Field */\n+#define I2C_MONRXDAT_MONSTART     (1 << 8)\t\t\t/*!< Monitor Received Start Bit */\n+#define I2C_MONRXDAT_MONRESTART   (1 << 9)\t\t\t/*!< Monitor Received Repeated Start Bit */\n+#define I2C_MONRXDAT_MONNACK      (1 << 10)\t\t\t/*!< Monitor Received Nack Bit */\n+\n+/**\n+ * @brief\tInitialize I2C Interface\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function enables the I2C clock for both the master and\n+ * slave interfaces if the I2C channel.\n+\n+ */\n+__STATIC_INLINE void Chip_I2C_Init(LPC_I2C_T *pI2C)\n+{\n+\t/* Compiler must be able to optimize out non applicable cases */\n+\tswitch ((uint32_t) pI2C) {\n+\tcase LPC_I2C2_BASE:\n+\t\t/* Enable clock to I2C peripheral and reset */\n+\t\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_I2C2);\n+\t\tChip_SYSCON_PeriphReset(RESET_I2C2);\n+\t\treturn;\n+\n+\tcase LPC_I2C1_BASE:\n+\t\t/* Enable clock to I2C peripheral and reset */\n+\t\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_I2C1);\n+\t\tChip_SYSCON_PeriphReset(RESET_I2C1);\n+\t\treturn;\n+\n+\tdefault:\n+\t\t/* Enable clock to I2C peripheral and reset */\n+\t\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_I2C0);\n+\t\tChip_SYSCON_PeriphReset(RESET_I2C0);\n+\t\treturn;\n+\t}\n+}\n+\n+/**\n+ * @brief\tShutdown I2C Interface\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function disables the I2C clock for both the master and\n+ * slave interfaces if the I2C channel.\n+ */\n+__STATIC_INLINE void Chip_I2C_DeInit(LPC_I2C_T *pI2C)\n+{\n+\t/* Compiler must be able to optimize out non applicable cases */\n+\tswitch ((uint32_t) pI2C) {\n+\tcase LPC_I2C2_BASE:\n+\t\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_I2C2);\n+\t\treturn;\n+\n+\tcase LPC_I2C1_BASE:\n+\t\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_I2C1);\n+\t\treturn;\n+\n+\tdefault:\n+\t\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_I2C0);\n+\t\treturn;\n+\t}\n+}\n+\n+/**\n+ * @brief\tSets register bit values with mask\n+ * @param\tpReg32\t: Pointer to 32-bit register to set bits for\n+ * @param\tmask\t: Zero write mask, will mask these bits are write back as 0\n+ * @param\tbits\t: Bits to set\n+ * @return\tNothing\n+ * @note\tThis function is needed for read-modify-write operations where the register\n+ * being changed has read bits that are undefined, but must be written back as 0.\n+ */\n+static INLINE void Chip_I2C_SetRegMask(volatile uint32_t *pReg32, uint32_t mask, uint32_t bits)\n+{\n+\t*pReg32 = (*pReg32 & mask) | bits;\n+}\n+\n+/**\n+ * @brief\tClears register bit values with mask\n+ * @param\tpReg32\t: Pointer to 32-bit register to clear bits for\n+ * @param\tmask\t: Zero write mask, will mask these bits are write back as 0\n+ * @param\tbits\t: Bits to clear\n+ * @return\tNothing\n+ * @note\tThis function is needed for read-modify-write operations where the register\n+ * being changed has read bits that are undefined, but must be written back as 0.\n+ */\n+static INLINE void Chip_I2C_ClearRegMask(volatile uint32_t *pReg32, uint32_t mask, uint32_t bits)\n+{\n+\t*pReg32 = (*pReg32 & mask) & ~bits;\n+}\n+\n+/**\n+ * @brief\tSets I2C Clock Divider registers\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tclkdiv\t: Clock Divider value for I2C, value is between (1 - 65536)\n+ * @return\tNothing\n+ * @note\tThe clock to I2C block is determined by the following formula (I2C_PCLK\n+ *          is the frequency of the system clock): <br>\n+ *              I2C Clock Frequency = (I2C_PCLK)/clkdiv;<br>\n+ * This divider must be setup for both the master and slave modes of the\n+ * controller. When used in master mode, this divider is used with the MSTTIME\n+ * register to generate the master I2C clock. Since the MSTTIME register has a\n+ * limited range of divide values, this value should be selected to give an I2C\n+ * clock rate that is about 2x to 18x greater than the desired master clock rate.\n+ */\n+__STATIC_INLINE void Chip_I2C_SetClockDiv(LPC_I2C_T *pI2C, uint32_t clkdiv)\n+{\n+\tif ((clkdiv >= 1) && (clkdiv <= 65536)) {\n+\t\tpI2C->CLKDIV = clkdiv - 1;\n+\t}\n+\telse {\n+\t\tpI2C->CLKDIV = 0;\n+\t}\n+}\n+\n+/**\n+ * @brief\tGet I2C Clock Divider registers\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tClock Divider value\n+ * @note\tReturn the divider value for the I2C block\n+ *          It is the CLKDIV register value + 1\n+ */\n+static INLINE uint32_t Chip_I2C_GetClockDiv(LPC_I2C_T *pI2C)\n+{\n+\treturn (pI2C->CLKDIV & 0xFFFF) + 1;\n+}\n+\n+/**\n+ * @brief\tEnable I2C Interrupts\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tintEn\t: ORed Value of I2C_INTENSET_* values to enable\n+ * @return\tNothing\n+ */\n+static INLINE void Chip_I2C_EnableInt(LPC_I2C_T *pI2C, uint32_t intEn)\n+{\n+\tpI2C->INTENSET = intEn;\n+}\n+\n+/**\n+ * @brief\tDisable I2C Interrupts\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tintClr\t: ORed Value of I2C_INTENSET_* values to disable\n+ * @return\tNothing\n+ */\n+static INLINE void Chip_I2C_DisableInt(LPC_I2C_T *pI2C, uint32_t intClr)\n+{\n+\tpI2C->INTENCLR = intClr;\n+}\n+\n+/**\n+ * @brief\tDisable I2C Interrupts\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tintClr\t: ORed Value of I2C_INTENSET_* values to disable\n+ * @return\tNothing\n+ * @note\tIt is recommended to use the Chip_I2C_DisableInt() function\n+ * instead of this function.\n+ */\n+static INLINE void Chip_I2C_ClearInt(LPC_I2C_T *pI2C, uint32_t intClr)\n+{\n+\tChip_I2C_DisableInt(pI2C, intClr);\n+}\n+\n+/**\n+ * @brief\tReturns pending I2C Interrupts\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tAll pending interrupts, mask with I2C_INTENSET_* to determine specific interrupts\n+ */\n+static INLINE uint32_t Chip_I2C_GetPendingInt(LPC_I2C_T *pI2C)\n+{\n+\treturn pI2C->INTSTAT;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+ #ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2C_COMMON_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/i2cm_5410x.h ./chip/inc/i2cm_5410x.h\n--- a_tnusFF/chip/inc/i2cm_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/i2cm_5410x.h\t2016-10-22 23:17:43.556840278 -0300\n@@ -0,0 +1,318 @@\n+/*\n+ * @brief LPC5410x I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2CM_5410X_H_\n+#define __I2CM_5410X_H_\n+\n+#include \"i2c_common_5410x.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2CM_5410X CHIP: LPC5410X I2C master-only driver\n+ * @ingroup I2C_5410X\n+ * This driver only works in master mode. To describe the I2C transactions\n+ * following symbols are used in driver documentation.\n+ *\n+ * Key to symbols\n+ * ==============\n+ * S     (1 bit) : Start bit\n+ * P     (1 bit) : Stop bit\n+ * Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.\n+ * A, NA (1 bit) : Acknowledge and Not-Acknowledge bit.\n+ * Addr  (7 bits): I2C 7 bit address. Note that this can be expanded as usual to\n+ *                 get a 10 bit I2C address.\n+ * Data  (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh\n+ *                 for 16 bit data.\n+ * [..]: Data sent by I2C device, as opposed to data sent by the host adapter.\n+ * @{\n+ */\n+\n+/** I2CM_5410X_STATUS_TYPES I2C master transfer status types\n+ */\n+\n+#define I2CM_STATUS_OK              0x00\t\t/*!< Requested Request was executed successfully. */\n+#define I2CM_STATUS_ERROR           0x01\t\t/*!< Unknown error condition. */\n+#define I2CM_STATUS_NAK_ADR         0x02\t\t/*!< No acknowledgement received from slave during address phase. */\n+#define I2CM_STATUS_BUS_ERROR       0x03\t\t/*!< I2C bus error */\n+#define I2CM_STATUS_NAK_DAT           0x04\t\t/*!< No acknowledgement received from slave during address phase. */\n+#define I2CM_STATUS_ARBLOST         0x05\t\t/*!< Arbitration lost. */\n+#define I2CM_STATUS_BUSY            0xFF\t\t/*!< I2C transmistter is busy. */\n+\n+/**\n+ * @brief Master transfer data structure definitions\n+ */\n+typedef struct {\n+\tconst uint8_t *txBuff;\t\t/*!< Pointer to array of bytes to be transmitted */\n+\tuint8_t *rxBuff;\t\t\t/*!< Pointer memory where bytes received from I2C be stored */\n+\tvolatile uint16_t txSz;\t\t/*!< Number of bytes in transmit array,\n+\t\t\t\t\t\t\t\t         if 0 only receive transfer will be carried on */\n+\tvolatile uint16_t rxSz;\t\t/*!< Number of bytes to received,\n+\t\t\t\t\t\t\t\t         if 0 only transmission we be carried on */\n+\tvolatile uint16_t status;\t/*!< Status of the current I2C transfer */\n+\tuint8_t slaveAddr;\t\t\t/*!< 7-bit I2C Slave address */\n+} I2CM_XFER_T;\n+\n+/**\n+ * @brief\tSets HIGH and LOW duty cycle registers\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tsclH\t: Number of I2C_PCLK cycles for the SCL HIGH time value between (2 - 9).\n+ * @param\tsclL\t: Number of I2C_PCLK cycles for the SCL LOW time value between (2 - 9).\n+ * @return\tNothing\n+ * @note\tThe I2C clock divider should be set to the appropriate value before calling this function\n+ *\t\t\t\tThe I2C baud is determined by the following formula: <br>\n+ *        I2C_bitFrequency = (I2C_PCLK)/(I2C_CLKDIV * (sclH + sclL)) <br>\n+ *\t\t\t\twhere I2C_PCLK is the frequency of the System clock and I2C_CLKDIV is I2C clock divider\n+ */\n+void Chip_I2CM_SetDutyCycle(LPC_I2C_T *pI2C, uint16_t sclH, uint16_t sclL);\n+\n+/**\n+ * @brief\tSet up bus speed for LPC_I2C controller\n+ * @param\tpI2C\t\t: Pointer to selected I2C peripheral\n+ * @param\tbusSpeed\t: I2C bus clock rate\n+ * @return\tNothing\n+ * @note\tPer I2C specification the busSpeed should be\n+ *          @li 100000 for Standard mode\n+ *          @li 400000 for Fast mode\n+ *          @li 1000000 for Fast mode plus\n+ *          IOCON registers corresponding to I2C pads should be updated\n+ *          according to the bus mode.\n+ */\n+void Chip_I2CM_SetBusSpeed(LPC_I2C_T *pI2C, uint32_t busSpeed);\n+\n+/**\n+ * @brief\tEnable I2C Master interface\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\n+ */\n+static INLINE void Chip_I2CM_Enable(LPC_I2C_T *pI2C)\n+{\n+\tChip_I2C_SetRegMask(&pI2C->CFG, I2C_CFG_MASK, I2C_CFG_MSTEN);\n+}\n+\n+/**\n+ * @brief\tDisable I2C Master interface\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\n+ */\n+static INLINE void Chip_I2CM_Disable(LPC_I2C_T *pI2C)\n+{\n+\tChip_I2C_ClearRegMask(&pI2C->CFG, I2C_CFG_MASK, I2C_CFG_MSTEN);\n+}\n+\n+/**\n+ * @brief\tGet I2C Status\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tI2C Status register value\n+ * @note\tThis function returns the value of the status register.\n+ */\n+static INLINE uint32_t Chip_I2CM_GetStatus(LPC_I2C_T *pI2C)\n+{\n+\treturn pI2C->STAT;\n+}\n+\n+/**\n+ * @brief\tClear I2C status bits (master)\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param clrStatus : Status bit to clear, ORed Value of I2C_STAT_MSTRARBLOSS and I2C_STAT_MSTSTSTPERR\n+ * @return\tNothing\n+ * @note\tThis function clears selected status flags.\n+ */\n+static INLINE void Chip_I2CM_ClearStatus(LPC_I2C_T *pI2C, uint32_t clrStatus)\n+{\n+\t/* Clear Master Arbitration Loss and Start, Stop Error */\n+\tpI2C->STAT = clrStatus & (I2C_STAT_MSTRARBLOSS | I2C_STAT_MSTSTSTPERR);\n+}\n+\n+/**\n+ * @brief\tCheck if I2C Master is pending\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tReturns TRUE if the Master is pending else returns FALSE\n+ * @note\n+ */\n+static INLINE bool Chip_I2CM_IsMasterPending(LPC_I2C_T *pI2C)\n+{\n+\treturn (pI2C->STAT & I2C_STAT_MSTPENDING) != 0;\n+}\n+\n+/**\n+ * @brief\tGet current state of the I2C Master\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tMaster State Code, a value in the range of 0 - 4\n+ * @note\tAfter the Master is pending this state code tells the reason\n+ *        for Master pending.\n+ */\n+static INLINE uint32_t Chip_I2CM_GetMasterState(LPC_I2C_T *pI2C)\n+{\n+\treturn (pI2C->STAT & I2C_STAT_MSTSTATE) >> 1;\n+}\n+\n+/**\n+ * @brief\tTransmit START or Repeat-START signal on I2C bus\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function sets the controller to transmit START condition when\n+ *        the bus becomes free. This should be called only when master is pending.\n+ *\t\t\t\tThe function writes a complete value to Master Control register, ORing is not advised.\n+ */\n+static INLINE void Chip_I2CM_SendStart(LPC_I2C_T *pI2C)\n+{\n+\tpI2C->MSTCTL = I2C_MSTCTL_MSTSTART;\n+}\n+\n+/**\n+ * @brief\tTransmit STOP signal on I2C bus\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function sets the controller to transmit STOP condition.\n+ *\t\t\t\tThis should be called only when master is pending. The function writes a\n+ *\t\t\t\tcomplete value to Master Control register, ORing is not advised.\n+ */\n+static INLINE void Chip_I2CM_SendStop(LPC_I2C_T *pI2C)\n+{\n+\tpI2C->MSTCTL = I2C_MSTCTL_MSTSTOP;\n+}\n+\n+/**\n+ * @brief\tMaster Continue transfer operation\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function sets the master controller to continue transmission.\n+ *\t\t\t\tThis should be called only when master is pending. The function writes a\n+ *\t\t\t\tcomplete value to Master Control register, ORing is not advised.\n+ */\n+static INLINE void Chip_I2CM_MasterContinue(LPC_I2C_T *pI2C)\n+{\n+\tpI2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE;\n+}\n+\n+/**\n+ * @brief\tTransmit a single data byte through the I2C peripheral (master)\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tdata\t: Byte to transmit\n+ * @return\tNothing\n+ * @note\tThis function attempts to place a byte into the I2C Master\n+ *\t\t\tData Register\n+ *\n+ */\n+static INLINE void Chip_I2CM_WriteByte(LPC_I2C_T *pI2C, uint8_t data)\n+{\n+\tpI2C->MSTDAT = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief\tRead a single byte data from the I2C peripheral (master)\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tA single byte of data read\n+ * @note\tThis function reads a byte from the I2C receive hold register\n+ *\t\t\tregardless of I2C state.\n+ */\n+static INLINE uint8_t Chip_I2CM_ReadByte(LPC_I2C_T *pI2C)\n+{\n+\treturn (uint8_t) (pI2C->MSTDAT & I2C_MSTDAT_DATAMASK);\n+}\n+\n+/**\n+ * @brief\tTransfer state change handler\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\txfer\t: Pointer to a I2CM_XFER_T structure see notes below\n+ * @return Returns non-zero value on completion of transfer. The @a status\n+ *         member of @a xfer structure contains the current status of the\n+ *         transfer at the end of the call.\n+ * @note\n+ * The parameter @a xfer should be same as the one passed to Chip_I2CM_Xfer()\n+ * routine. This function should be called from the I2C interrupt handler\n+ * only when a master interrupt occurs.\n+ */\n+uint32_t Chip_I2CM_XferHandler(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @brief\tTransmit and Receive data in master mode\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\txfer\t: Pointer to a I2CM_XFER_T structure see notes below\n+ * @return\tNothing\n+ * @note\n+ * The parameter @a xfer should have its member @a slaveAddr initialized\n+ * to the 7-Bit slave address to which the master will do the xfer, Bit0\n+ * to bit6 should have the address and Bit8 is ignored. During the transfer\n+ * no code (like event handler) must change the content of the memory\n+ * pointed to by @a xfer. The member of @a xfer, @a txBuff and @a txSz be\n+ * initialized to the memory from which the I2C must pick the data to be\n+ * transfered to slave and the number of bytes to send respectively, similarly\n+ * @a rxBuff and @a rxSz must have pointer to memroy where data received\n+ * from slave be stored and the number of data to get from slave respectilvely.\n+ * Following types of transfers are possible:\n+ * - Write-only transfer: When @a rxSz member of @a xfer is set to 0.\n+ *\n+ *          S Addr Wr [A] txBuff0 [A] txBuff1 [A] ... txBuffN [A] P\n+ *\n+ *      - If I2CM_XFER_OPTION_IGNORE_NACK is set in @a options memeber\n+ *\n+ *          S Addr Wr [A] txBuff0 [A or NA] ... txBuffN [A or NA] P\n+ *\n+ * - Read-only transfer: When @a txSz member of @a xfer is set to 0.\n+ *\n+ *          S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] NA P\n+ *\n+ *      - If I2CM_XFER_OPTION_LAST_RX_ACK is set in @a options memeber\n+ *\n+ *          S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] A P\n+ *\n+ * - Read-Write transfer: When @a rxSz and @ txSz members of @a xfer are non-zero.\n+ *\n+ *          S Addr Wr [A] txBuff0 [A] txBuff1 [A] ... txBuffN [A]\n+ *              S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] NA P\n+ *\n+ */\n+void Chip_I2CM_Xfer(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @brief\tTransmit and Receive data in master mode\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\txfer\t: Pointer to a I2CM_XFER_T structure see notes below\n+ * @return Returns non-zero value on successful completion of transfer.\n+ * @note\n+ * This function operates same as Chip_I2CM_Xfer(), but is a blocking call.\n+ */\n+uint32_t Chip_I2CM_XferBlocking(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @}\n+ */\n+\n+ #ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2CM_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/i2cs_5410x.h ./chip/inc/i2cs_5410x.h\n--- a_tnusFF/chip/inc/i2cs_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/i2cs_5410x.h\t2016-10-22 23:17:43.556840278 -0300\n@@ -0,0 +1,369 @@\n+/*\n+ * @brief LPC5410X I2C slave driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2CS_5410X_H_\n+#define __I2CS_5410X_H_\n+\n+#include \"i2c_common_5410x.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2CS_5410X CHIP: LPC5410X I2C slave-only driver\n+ * @ingroup I2C_5410X\n+ * This driver only works in slave mode.\n+ * @{\n+ */\n+\n+/** @brief I2C slave service start callback\n+ * This callback is called from the I2C slave handler when an I2C slave address is\n+ * received and needs servicing. It's used to indicate the start of a slave transfer\n+ * that will happen on the slave bus.\n+ */\n+typedef void (*I2CSlaveXferStart)(uint8_t addr);\n+\n+/** @brief I2C slave send data callback\n+ * This callback is called from the I2C slave handler when an I2C slave address needs\n+ * data to send.<br>\n+ * If you want to NAK the master, return I2C_SLVCTL_SLVNACK to the caller.\n+ * Return I2C_SLVCTL_SLVCONTINUE or 0 to the caller for normal non-DMA data transfer.\n+ * If you've setup a DMA descriptor for the transfer, return I2C_SLVCTL_SLVDMA to the caller.<br>\n+ */\n+typedef uint8_t (*I2CSlaveXferSend)(uint8_t *data);\n+\n+/** @brief I2C slave receive data callback\n+ * This callback is called from the I2C slave handler when an I2C slave address has\n+ * receive data.<br>\n+ * If you want to NAK the master, return I2C_SLVCTL_SLVNACK to the caller.\n+ * Return I2C_SLVCTL_SLVCONTINUE or 0 to the caller for normal non-DMA data transfer.\n+ * If you've setup a DMA descriptor for the transfer, return I2C_SLVCTL_SLVDMA to the caller.<br>\n+ */\n+typedef uint8_t (*I2CSlaveXferRecv)(uint8_t data);\n+\n+/** @brief I2C slave service done callback\n+ * This callback is called from the I2C slave handler when an I2C slave transfer is\n+ * completed. It's used to indicate the end of a slave transfer.\n+ */\n+typedef void (*I2CSlaveXferDone)(void);\n+\n+/**\n+ * Slave transfer are performed using 4 callbacks. These 3 callbacks handle most I2C\n+ * slave transfer cases. When the slave is setup and a slave interrupt is receive\n+ * and processed with the Chip_I2CS_XferHandler() function in the I2C interrupt handler,\n+ * one of these 4 callbacks is called. The callbacks can be used for unsized transfers\n+ * from the master.\n+ *\n+ * When an address is received, the SlaveXferAddr() callback is called with the\n+ * received address. Only addresses enabled in the slave controller will be handled.\n+ * The slave controller can support up to 4 slave addresses.\n+ *\n+ * If the master is going to perform a read operation, the SlaveXferSend() callback\n+ * is called. Place the data byte to send in *data and return a value of 0 or\n+ * I2C_SLVCTL_SLVCONTINUE to the caller, or return a value o I2C_SLVCTL_SLVNACK to\n+ * NACK the master. If you are using DMA and have setup a DMA descriptor in the\n+ * callback, return I2C_SLVCTL_SLVDMA.<br>\n+ *\n+ * If the master performs a write operation, the SlaveXferRecv() callback is called\n+ * with the received data. Return a value of 0 or I2C_SLVCTL_SLVCONTINUE to the caller\n+ * to continue data transfer. Return I2C_SLVCTL_SLVNACK to NACk the master. If you\n+ * are using DMA and have setup a DMA descriptor in the callback, return\n+ * I2C_SLVCTL_SLVDMA.<br>\n+ *\n+ * Once the transfer completes, the SlaveXferDone() callback will be called.<br>\n+ */\n+typedef struct {\n+\tI2CSlaveXferStart slaveStart;\t/*!< Called when an matching I2C slave address is received */\n+\tI2CSlaveXferSend slaveSend;\t\t/*!< Called when a byte is needed to send to master */\n+\tI2CSlaveXferRecv slaveRecv;\t\t/*!< Called when a byte is received from master */\n+\tI2CSlaveXferDone slaveDone;\t\t/*!< Called when a slave transfer is complete */\n+} I2CS_XFER_T;\n+\n+/**\n+ * @brief\tEnable I2C slave interface\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tDo not call this function until the slave interface is fully configured.\n+ */\n+__STATIC_INLINE void Chip_I2CS_Enable(LPC_I2C_T *pI2C)\n+{\n+\tChip_I2C_SetRegMask(&pI2C->CFG, I2C_CFG_MASK, I2C_CFG_SLVEN);\n+}\n+\n+/**\n+ * @brief\tDisable I2C slave interface\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_I2CS_Disable(LPC_I2C_T *pI2C)\n+{\n+\tChip_I2C_ClearRegMask(&pI2C->CFG, I2C_CFG_MASK, I2C_CFG_SLVEN);\n+}\n+\n+/**\n+ * @brief\tGet I2C Status\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tI2C Status register value\n+ * @note\tThis function returns the value of the status register.\n+ */\n+__STATIC_INLINE uint32_t Chip_I2CS_GetStatus(LPC_I2C_T *pI2C)\n+{\n+\treturn pI2C->STAT;\n+}\n+\n+/**\n+ * @brief\tClear I2C status bits (slave)\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param clrStatus : Status bit to clear, must be I2C_STAT_SLVDESEL\n+ * @return\tNothing\n+ * @note\tThis function clears selected status flags.\n+ */\n+__STATIC_INLINE void Chip_I2CS_ClearStatus(LPC_I2C_T *pI2C, uint32_t clrStatus)\n+{\n+\tpI2C->STAT = clrStatus & I2C_STAT_SLVDESEL;\n+}\n+\n+/**\n+ * @brief\tCheck if I2C slave is pending\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tReturns TRUE if the slave is pending else returns FALSE\n+ * @note\n+ */\n+__STATIC_INLINE bool Chip_I2CS_IsSlavePending(LPC_I2C_T *pI2C)\n+{\n+\treturn (pI2C->STAT & I2C_STAT_SLVPENDING) != 0;\n+}\n+\n+/**\n+ * @brief\tCheck if I2C slave is selected\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tReturns TRUE if the slave is is selected, otherwise FALSE\n+ * @note\n+ */\n+__STATIC_INLINE bool Chip_I2CS_IsSlaveSelected(LPC_I2C_T *pI2C)\n+{\n+\treturn (pI2C->STAT & I2C_STAT_SLVSEL) != 0;\n+}\n+\n+/**\n+ * @brief\tCheck if I2C slave is deselected\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tReturns TRUE if the slave is is deselected, otherwise FALSE\n+ * @note\n+ */\n+__STATIC_INLINE bool Chip_I2CS_IsSlaveDeSelected(LPC_I2C_T *pI2C)\n+{\n+\treturn (pI2C->STAT & I2C_STAT_SLVDESEL) != 0;\n+}\n+\n+/**\n+ * @brief\tGet current state of the I2C slave\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tslave State Code, a value of type I2C_STAT_SLVCODE_*\n+ * @note\tAfter the slave is pending this state code tells the reason\n+ *        for slave pending.\n+ */\n+__STATIC_INLINE uint32_t Chip_I2CS_GetSlaveState(LPC_I2C_T *pI2C)\n+{\n+\treturn (pI2C->STAT & I2C_STAT_SLVSTATE) >> 9;\n+}\n+\n+/**\n+ * @brief\tReturns the current slave address match index\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tslave match index, 0 - 3\n+ */\n+__STATIC_INLINE uint32_t Chip_I2CS_GetSlaveMatchIndex(LPC_I2C_T *pI2C)\n+{\n+\treturn (pI2C->STAT & I2C_STAT_SLVIDX) >> 12;\n+}\n+\n+/**\n+ * @brief\tSlave Continue transfer operation (ACK)\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function sets the slave controller to continue transmission.\n+ *\t\t\t\tThis should be called only when slave is pending. The function writes a\n+ *\t\t\t\tcomplete value to slave Control register, ORing is not advised.\n+ */\n+__STATIC_INLINE void Chip_I2CS_SlaveContinue(LPC_I2C_T *pI2C)\n+{\n+\tpI2C->SLVCTL = I2C_SLVCTL_SLVCONTINUE;\n+}\n+\n+/**\n+ * @brief\tSlave NACK operation\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function sets the slave controller to NAK the master.\n+ */\n+__STATIC_INLINE void Chip_I2CS_SlaveNACK(LPC_I2C_T *pI2C)\n+{\n+\tpI2C->SLVCTL = I2C_SLVCTL_SLVNACK;\n+}\n+\n+/**\n+ * @brief\tEnable slave DMA operation\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function enables DMA mode for the slave controller. In DMA\n+ * mode, the 'continue' and 'NACK' operations aren't used and the I2C slave\n+ * controller will automatically NACK any bytes beyond the available DMA\n+ * buffer size.\n+ */\n+__STATIC_INLINE void Chip_I2CS_SlaveEnableDMA(LPC_I2C_T *pI2C)\n+{\n+\tpI2C->SLVCTL = I2C_SLVCTL_SLVDMA;\n+}\n+\n+/**\n+ * @brief\tDisable slave DMA operation\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tNothing\n+ * @note\tThis function disables DMA mode for the slave controller.\n+ */\n+__STATIC_INLINE void Chip_I2CS_SlaveDisableDMA(LPC_I2C_T *pI2C)\n+{\n+\tpI2C->SLVCTL = 0;\n+}\n+\n+/**\n+ * @brief\tTransmit a single data byte through the I2C peripheral (slave)\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tdata\t: Byte to transmit\n+ * @return\tNothing\n+ * @note\tThis function attempts to place a byte into the I2C slave\n+ *\t\t\tData Register\n+ *\n+ */\n+__STATIC_INLINE void Chip_I2CS_WriteByte(LPC_I2C_T *pI2C, uint8_t data)\n+{\n+\tpI2C->SLVDAT = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief\tRead a single byte data from the I2C peripheral (slave)\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @return\tA single byte of data read\n+ * @note\tThis function reads a byte from the I2C receive hold register\n+ *\t\t\tregardless of I2C state.\n+ */\n+__STATIC_INLINE uint8_t Chip_I2CS_ReadByte(LPC_I2C_T *pI2C)\n+{\n+\treturn (uint8_t) (pI2C->SLVDAT & I2C_SLVDAT_DATAMASK);\n+}\n+\n+/**\n+ * @brief\tSet a I2C slave address for slave operation\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tslvNum\t: Possible slave address number, between 0 - 3\n+ * @param\tslvAddr\t: Slave Address for the index (7-bits, bit 7 = 0)\n+ * @return\tNothing\n+ * @note\tSetting a slave address also enables the slave address. Do\n+ * not 'pre-shift' the slave address.\n+ */\n+__STATIC_INLINE void Chip_I2CS_SetSlaveAddr(LPC_I2C_T *pI2C, uint8_t slvNum, uint8_t slvAddr)\n+{\n+\tpI2C->SLVADR[slvNum] = (uint32_t) (slvAddr << 1);\n+}\n+\n+/**\n+ * @brief\tReturn a I2C programmed slave address\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tslvNum\t: Possible slave address number, between 0 - 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE uint8_t Chip_I2CS_GetSlaveAddr(LPC_I2C_T *pI2C, uint8_t slvNum)\n+{\n+\treturn (pI2C->SLVADR[slvNum] >> 1) & 0x7F;\n+}\n+\n+/**\n+ * @brief\tEnable a I2C address\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tslvNum\t: Possible slave address number, between 0 - 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_I2CS_EnableSlaveAddr(LPC_I2C_T *pI2C, uint8_t slvNum)\n+{\n+\tpI2C->SLVADR[slvNum] = (pI2C->SLVADR[slvNum] & I2C_SLVADR_MASK) & ~I2C_SLVADR_SADISABLE;\n+}\n+\n+/**\n+ * @brief\tDisable a I2C address\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\tslvNum\t: Possible slave address number, between 0 - 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_I2CS_DisableSlaveAddr(LPC_I2C_T *pI2C, uint8_t slvNum)\n+{\n+\tpI2C->SLVADR[slvNum] = (pI2C->SLVADR[slvNum] & I2C_SLVADR_MASK) | I2C_SLVADR_SADISABLE;\n+}\n+\n+/**\n+ * @brief\tSetup slave qialifier address\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\textend\t: true to extend I2C slave detect address 0 range, or false to match to corresponding bits\n+ * @param\tslvAddr\t: Slave address qualifier, see SLVQUAL0 register in User Manual\n+ * @return\tNothing\n+ * @note\tDo not 'pre-shift' the slave address.\n+ */\n+__STATIC_INLINE void Chip_I2CS_SetSlaveQual0(LPC_I2C_T *pI2C, bool extend, uint8_t slvAddr)\n+{\n+\tslvAddr = slvAddr << 1;\n+\tif (extend) {\n+\t\tslvAddr |= I2C_SLVQUAL_QUALMODE0;\n+\t}\n+\n+\tpI2C->SLVQUAL0 = slvAddr;\n+}\n+\n+/**\n+ * @brief\tSlave transfer state change handler\n+ * @param\tpI2C\t: Pointer to selected I2C peripheral\n+ * @param\txfers\t: Pointer to a I2CS_MULTI_XFER_T structure see notes below\n+ * @return\tReturns non-zero value on completion of transfer or NAK\n+ * @note\tSee @ref I2CS_XFER_T for more information on this function. When using\n+ * this function, the I2C_INTENSET_SLVPENDING and I2C_INTENSET_SLVDESEL interrupts\n+ * should be enabled and setup in the I2C interrupt handler to call this function\n+ * when they fire.\n+ */\n+uint32_t Chip_I2CS_XferHandler(LPC_I2C_T *pI2C, const I2CS_XFER_T *xfers);\n+\n+/**\n+ * @}\n+ */\n+\n+ #ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2CS_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/iap.h ./chip/inc/iap.h\n--- a_tnusFF/chip/inc/iap.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/iap.h\t2016-10-22 23:17:43.556840278 -0300\n@@ -0,0 +1,184 @@\n+/*\n+ * @brief Common IAP support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __IAP_H_\n+#define __IAP_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup COMMON_IAP CHIP: Common Chip ISP/IAP commands and return codes\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/* IAP command definitions */\n+#define IAP_PREWRRITE_CMD           50\t/*!< Prepare sector for write operation command */\n+#define IAP_WRISECTOR_CMD           51\t/*!< Write Sector command */\n+#define IAP_ERSSECTOR_CMD           52\t/*!< Erase Sector command */\n+#define IAP_BLANK_CHECK_SECTOR_CMD  53\t/*!< Blank check sector */\n+#define IAP_REPID_CMD               54\t/*!< Read PartID command */\n+#define IAP_READ_BOOT_CODE_CMD      55\t/*!< Read Boot code version */\n+#define IAP_COMPARE_CMD             56\t/*!< Compare two RAM address locations */\n+#define IAP_REINVOKE_ISP_CMD        57\t/*!< Reinvoke ISP */\n+#define IAP_READ_UID_CMD            58\t/*!< Read UID */\n+#define IAP_ERASE_PAGE_CMD          59\t/*!< Erase page */\n+#define IAP_EEPROM_WRITE            61\t/*!< EEPROM Write command */\n+#define IAP_EEPROM_READ             62\t/*!< EEPROM READ command */\n+\n+/* IAP response definitions */\n+#define IAP_CMD_SUCCESS             0\t/*!< Command is executed successfully */\n+#define IAP_INVALID_COMMAND         1\t/*!< Invalid command */\n+#define IAP_SRC_ADDR_ERROR          2\t/*!< Source address is not on word boundary */\n+#define IAP_DST_ADDR_ERROR          3\t/*!< Destination address is not on a correct boundary */\n+#define IAP_SRC_ADDR_NOT_MAPPED     4\t/*!< Source address is not mapped in the memory map */\n+#define IAP_DST_ADDR_NOT_MAPPED     5\t/*!< Destination address is not mapped in the memory map */\n+#define IAP_COUNT_ERROR             6\t/*!< Byte count is not multiple of 4 or is not a permitted value */\n+#define IAP_INVALID_SECTOR          7\t/*!< Sector number is invalid or end sector number is greater than start sector number */\n+#define IAP_SECTOR_NOT_BLANK        8\t/*!< Sector is not blank */\n+#define IAP_SECTOR_NOT_PREPARED     9\t/*!< Command to prepare sector for write operation was not executed */\n+#define IAP_COMPARE_ERROR           10\t/*!< Source and destination data not equal */\n+#define IAP_BUSY                    11\t/*!< Flash programming hardware interface is busy */\n+#define IAP_PARAM_ERROR             12\t/*!< nsufficient number of parameters or invalid parameter */\n+#define IAP_ADDR_ERROR              13\t/*!< Address is not on word boundary */\n+#define IAP_ADDR_NOT_MAPPED         14\t/*!< Address is not mapped in the memory map */\n+#define IAP_CMD_LOCKED              15\t/*!< Command is locked */\n+#define IAP_INVALID_CODE            16\t/*!< Unlock code is invalid */\n+#define IAP_INVALID_BAUD_RATE       17\t/*!< Invalid baud rate setting */\n+#define IAP_INVALID_STOP_BIT        18\t/*!< Invalid stop bit setting */\n+#define IAP_CRP_ENABLED             19\t/*!< Code read protection enabled */\n+\n+/* IAP_ENTRY API function type */\n+typedef void (*IAP_ENTRY_T)(unsigned int[5], unsigned int[4]);\n+\n+/**\n+ * @brief\tPrepare sector for write operation\n+ * @param\tstrSector\t: Start sector number\n+ * @param\tendSector\t: End sector number\n+ * @return\tStatus code to indicate the command is executed successfully or not\n+ * @note\tThis command must be executed before executing \"Copy RAM to flash\"\n+ *\t\t\tor \"Erase Sector\" command.\n+ *\t\t\tThe end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_PreSectorForReadWrite(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief\tCopy RAM to flash\n+ * @param\tdstAdd\t\t: Destination flash address where data bytes are to be written\n+ * @param\tsrcAdd\t\t: Source flash address where data bytes are to be read\n+ * @param\tbyteswrt\t: Number of bytes to be written\n+ * @return\tStatus code to indicate the command is executed successfully or not\n+ * @note\tThe addresses should be a 256 byte boundary and the number of bytes\n+ *\t\t\tshould be 256 | 512 | 1024 | 4096\n+ */\n+uint8_t Chip_IAP_CopyRamToFlash(uint32_t dstAdd, uint32_t *srcAdd, uint32_t byteswrt);\n+\n+/**\n+ * @brief\tErase sector\n+ * @param\tstrSector\t: Start sector number\n+ * @param\tendSector\t: End sector number\n+ * @return\tStatus code to indicate the command is executed successfully or not\n+ * @note\tThe end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_EraseSector(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief Blank check a sector or multiples sector of on-chip flash memory\n+ * @param\tstrSector\t: Start sector number\n+ * @param\tendSector\t: End sector number\n+ * @return\tOffset of the first non blank word location if the status code is SECTOR_NOT_BLANK\n+ * @note\tThe end sector must be greater than or equal to start sector number\n+ */\n+// FIXME - There are two return value (result[0] & result[1]\n+// Result0:Offset of the first non blank word location if the Status Code is\n+// SECTOR_NOT_BLANK.\n+// Result1:Contents of non blank word location.\n+uint8_t Chip_IAP_BlankCheckSector(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief\tRead part identification number\n+ * @return\tPart identification number\n+ */\n+uint32_t Chip_IAP_ReadPID(void);\n+\n+/**\n+ * @brief\tRead boot code version number\n+ * @return\tBoot code version number\n+ */\n+uint8_t Chip_IAP_ReadBootCode(void);\n+\n+/**\n+ * @brief\tCompare the memory contents at two locations\n+ * @param\tdstAdd\t\t: Destination of the RAM address of data bytes to be compared\n+ * @param\tsrcAdd\t\t: Source of the RAM address of data bytes to be compared\n+ * @param\tbytescmp\t: Number of bytes to be compared\n+ * @return\tOffset of the first mismatch of the status code is COMPARE_ERROR\n+ * @note\tThe addresses should be a word boundary and number of bytes should be\n+ *\t\t\ta multiply of 4\n+ */\n+uint8_t Chip_IAP_Compare(uint32_t dstAdd, uint32_t srcAdd, uint32_t bytescmp);\n+\n+/**\n+ * @brief\tIAP reinvoke ISP to invoke the bootloader in ISP mode\n+ * @return\tnone\n+ */\n+uint8_t Chip_IAP_ReinvokeISP(void);\n+\n+/**\n+ * @brief\tRead the unique ID\n+ * @return\tStatus code to indicate the command is executed successfully or not\n+ */\n+uint32_t Chip_IAP_ReadUID(void);\n+\n+/**\n+ * @brief\tErase a page or multiple papers of on-chip flash memory\n+ * @param\tstrPage\t: Start page number\n+ * @param\tendPage\t: End page number\n+ * @return\tStatus code to indicate the command is executed successfully or not\n+ * @note\tThe page number must be greater than or equal to start page number\n+ */\n+// FIXME - There are four return value\n+// Result0:The first 32-bit word (at the lowest address)\n+// Result1:The second 32-bit word.\n+// Result2:The third 32-bit word.\n+// Result3:The fourth 32-bit word.\n+uint8_t Chip_IAP_ErasePage(uint32_t strPage, uint32_t endPage);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __IAP_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/inmux_5410x.h ./chip/inc/inmux_5410x.h\n--- a_tnusFF/chip/inc/inmux_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/inmux_5410x.h\t2016-10-22 23:17:43.556840278 -0300\n@@ -0,0 +1,162 @@\n+/*\n+ * @brief LPC5410X Input Mux Registers and Driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __INMUX_5410X_H_\n+#define __INMUX_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup INMUX_5410X CHIP: LPC5410X Input Mux Registers and Driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC5410X Input Mux Register Block Structure\n+ */\n+typedef struct {\t\t\t\t\t\t/*!< INMUX Structure */\n+\t__IO uint32_t RESERVED0[6];\n+\t__I  uint32_t RESERVED1[42];\n+\t__IO uint32_t PINTSEL[8];\t\t\t/*!< Pin interrupt select registers */\n+\t__IO uint32_t DMA_ITRIG_INMUX[22];\t/*!< Input mux register for DMA trigger inputs */\n+\t__I  uint32_t RESERVED2[2];\n+\t__IO uint32_t DMA_OTRIG_INMUX[4];\t/*!< Input mux register for DMA trigger inputs */\n+\t__I  uint32_t RESERVED3[4];\n+\t__IO uint32_t FREQMEAS_REF;\t\t\t/*!< Clock selection for frequency measurement ref clock */\n+\t__IO uint32_t FREQMEAS_TARGET;\t\t/*!< Clock selection for frequency measurement target clock */\n+} LPC_INMUX_T;\n+\n+/**\n+ * @brief\tGPIO Pin Interrupt Pin Select (sets PINTSEL register)\n+ * @param\tpintSel\t: GPIO PINTSEL interrupt, should be: 0 to 7\n+ * @param\tportNum\t: GPIO port number interrupt, should be: 0 to 1\n+ * @param\tpinNum\t: GPIO pin number Interrupt, should be: 0 to 31\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_INMUX_PinIntSel(uint8_t pintSel, uint8_t portNum, uint8_t pinNum)\n+{\n+\tLPC_INMUX->PINTSEL[pintSel] = (portNum * 32) + pinNum;\n+}\n+\n+/* DMA triggers that can mapped to DMA channels */\n+typedef enum {\n+\tDMATRIG_ADC0_SEQA_IRQ = 0,\t\t\t/*!< ADC0 sequencer A interrupt as trigger */\n+\tDMATRIG_ADC0_SEQB_IRQ,\t\t\t\t/*!< ADC0 sequencer B interrupt as trigger */\n+\tDMATRIG_SCT0_DMA0,\t\t\t\t\t/*!< SCT 0, DMA 0 as trigger */\n+\tDMATRIG_SCT0_DMA1,\t\t\t\t\t/*!< SCT 1, DMA 1 as trigger */\n+\tDMATRIG_TIMER0_MATCH0,\t\t\t\t/*!< Timer 0, match 0 trigger */\n+\tDMATRIG_TIMER0_MATCH1,\t\t\t\t/*!< Timer 0, match 1 trigger */\n+\tDMATRIG_TIMER1_MATCH0,\t\t\t\t/*!< Timer 1, match 0 trigger */\n+\tDMATRIG_TIMER1_MATCH1,\t\t\t\t/*!< Timer 1, match 1 trigger */\n+\tDMATRIG_TIMER2_MATCH0,\t\t\t\t/*!< Timer 2, match 0 trigger */\n+\tDMATRIG_TIMER2_MATCH1,\t\t\t\t/*!< Timer 2, match 1 trigger */\n+\tDMATRIG_TIMER3_MATCH0,\t\t\t\t/*!< Timer 3, match 0 trigger */\n+\tDMATRIG_TIMER3_MATCH1,\t\t\t\t/*!< Timer 3, match 1 trigger */\n+\tDMATRIG_TIMER4_MATCH0,\t\t\t\t/*!< Timer 4, match 0 trigger */\n+\tDMATRIG_TIMER4_MATCH1,\t\t\t\t/*!< Timer 4, match 1 trigger */\n+\tDMATRIG_PININT0,\t\t\t\t\t/*!< Pin interrupt 0 trigger */\n+\tDMATRIG_PININT1,\t\t\t\t\t/*!< Pin interrupt 1 trigger */\n+\tDMATRIG_PININT2,\t\t\t\t\t/*!< Pin interrupt 2 trigger */\n+\tDMATRIG_PININT3,\t\t\t\t\t/*!< Pin interrupt 3 trigger */\n+\tDMATRIG_OUTMUX0,\t\t\t\t\t/*!< DMA trigger tied to this source, Select with Chip_INMUX_SetDMAOutMux */\n+\tDMATRIG_OUTMUX1,\t\t\t\t\t/*!< DMA trigger tied to this source, Select with Chip_INMUX_SetDMAOutMux */\n+\tDMATRIG_OUTMUX2,\t\t\t\t\t/*!< DMA trigger tied to this source, Select with Chip_INMUX_SetDMAOutMux */\n+\tDMATRIG_OUTMUX3\t\t\t\t\t\t/*!< DMA trigger tied to this source, Select with Chip_INMUX_SetDMAOutMux */\n+} DMA_TRIGSRC_T;\n+\n+/**\n+ * @brief\tSelect a trigger source for a DMA channel\n+ * @param\tch\t\t: DMA channel number\n+ * @param\ttrig\t: Trigger source for the DMA channel\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_INMUX_SetDMATrigger(uint8_t ch, DMA_TRIGSRC_T trig)\n+{\n+\tLPC_INMUX->DMA_ITRIG_INMUX[ch] = (uint32_t) trig;\n+}\n+\n+/**\n+ * @brief\tSelects a DMA trigger source for the DMATRIG_OUTMUXn IDs\n+ * @param\tindex\t: Select 0 to 3 to sets the source for DMATRIG_OUTMUX0 to DMATRIG_OUTMUX3\n+ * @param\tdmaCh\t: DMA channel to select for DMATRIG_OUTMUXn source\n+ * @return\tNothing\n+ * @note\tThis function sets the DMA trigger (out) source used with the DMATRIG_OUTMUXn\n+ *\t\t\ttrigger source.\n+ */\n+__STATIC_INLINE void Chip_INMUX_SetDMAOutMux(uint8_t index, uint8_t dmaCh)\n+{\n+\tLPC_INMUX->DMA_OTRIG_INMUX[index] = (uint32_t) dmaCh;\n+}\n+\n+/* Freqeuency measure reference and target clock sources */\n+typedef enum {\n+\tFREQMSR_CLKIN = 0,\t\t\t\t/*!< CLKIN pin */\n+\tFREQMSR_IRC,\t\t\t\t\t/*!< Internal RC (IRC) oscillator */\n+\tFREQMSR_WDOSC,\t\t\t\t\t/*!< Watchdog oscillator */\n+\tFREQMSR_32KHZOSC,\t\t\t\t/*!< 32KHz (RTC) oscillator rate */\n+\tFREQ_MEAS_MAIN_CLK,\t\t\t\t/*!< main system clock */\n+\tFREQMSR_PIO0_4,\t\t\t\t\t/*!< External pin PIO0_4 as input rate */\n+\tFREQMSR_PIO0_20,\t\t\t\t/*!< External pin PIO0_20 as input rate */\n+\tFREQMSR_PIO0_24,\t\t\t\t/*!< External pin PIO0_24 as input rate */\n+\tFREQMSR_PIO1_4\t\t\t\t\t/*!< External pin PIO1_4 as input rate */\n+} FREQMSR_SRC_T;\n+\n+/**\n+ * @brief\tSelects a reference clock used with the frequency measure function\n+ * @param\tref\t: Frequency measure function reference clock\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_INMUX_SetFreqMeasRefClock(FREQMSR_SRC_T ref)\n+{\n+\tLPC_INMUX->FREQMEAS_REF = (uint32_t) ref;\n+}\n+\n+/**\n+ * @brief\tSelects a target clock used with the frequency measure function\n+ * @param\ttarg\t: Frequency measure function reference clock\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_INMUX_SetFreqMeasTargClock(FREQMSR_SRC_T targ)\n+{\n+\tLPC_INMUX->FREQMEAS_TARGET = (uint32_t) targ;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __INMUX_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/iocon_5410x.h ./chip/inc/iocon_5410x.h\n--- a_tnusFF/chip/inc/iocon_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/iocon_5410x.h\t2016-10-22 23:17:43.556840278 -0300\n@@ -0,0 +1,139 @@\n+/*\n+ * @brief LPC5410X IOCON register block and driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __IOCON_5410X_H_\n+#define __IOCON_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup IOCON_5410X CHIP: LPC5410X IOCON register block and driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC5410X IO Configuration Unit register block structure\n+ */\n+typedef struct {\t\t\t/*!< LPC5410X IOCON Structure */\n+\t__IO uint32_t  PIO[2][32];\n+} LPC_IOCON_T;\n+\n+/**\n+ * @brief Array of IOCON pin definitions passed to Chip_IOCON_SetPinMuxing() must be in this format\n+ */\n+typedef struct {\n+\tuint32_t port : 8;\t\t\t/* Pin port */\n+\tuint32_t pin : 8;\t\t\t/* Pin number */\n+\tuint32_t modefunc : 16;\t\t/* Function and mode */\n+} PINMUX_GRP_T;\n+\n+/**\n+ * IOCON function and mode selection definitions\n+ * See the User Manual for specific modes and functions supported by the\n+ * various LPC15XX pins.\n+ */\n+#define IOCON_FUNC0             0x0\t\t\t\t/*!< Selects pin function 0 */\n+#define IOCON_FUNC1             0x1\t\t\t\t/*!< Selects pin function 1 */\n+#define IOCON_FUNC2             0x2\t\t\t\t/*!< Selects pin function 2 */\n+#define IOCON_FUNC3             0x3\t\t\t\t/*!< Selects pin function 3 */\n+#define IOCON_FUNC4             0x4\t\t\t\t/*!< Selects pin function 4 */\n+#define IOCON_FUNC5             0x5\t\t\t\t/*!< Selects pin function 5 */\n+#define IOCON_FUNC6             0x6\t\t\t\t/*!< Selects pin function 6 */\n+#define IOCON_FUNC7             0x7\t\t\t\t/*!< Selects pin function 7 */\n+#define IOCON_MODE_INACT        (0x0 << 3)\t\t/*!< No addition pin function */\n+#define IOCON_MODE_PULLDOWN     (0x1 << 3)\t\t/*!< Selects pull-down function */\n+#define IOCON_MODE_PULLUP       (0x2 << 3)\t\t/*!< Selects pull-up function */\n+#define IOCON_MODE_REPEATER     (0x3 << 3)\t\t/*!< Selects pin repeater function */\n+#define IOCON_HYS_EN            (0x1 << 5)\t\t/*!< Enables hysteresis */\n+#define IOCON_GPIO_MODE         (0x1 << 5)\t\t/*!< GPIO Mode */\n+#define IOCON_I2C_SLEW          (0x1 << 5)\t\t/*!< I2C Slew Rate Control */\n+#define IOCON_INV_EN            (0x1 << 6)\t\t/*!< Enables invert function on input */\n+#define IOCON_ANALOG_EN         (0x0 << 7)\t\t/*!< Enables analog function by setting 0 to bit 7 */\n+#define IOCON_DIGITAL_EN        (0x1 << 7)\t\t/*!< Enables digital function by setting 1 to bit 7(default) */\n+#define IOCON_STDI2C_EN         (0x1 << 8)\t\t/*!< I2C standard mode/fast-mode */\n+#define IOCON_FASTI2C_EN        (0x3 << 8)\t\t/*!< I2C Fast-mode Plus and high-speed slave */\n+#define IOCON_INPFILT_OFF       (0x1 << 8)\t\t/*!< Input filter Off for GPIO pins */\n+#define IOCON_INPFILT_ON        (0x0 << 8)\t\t/*!< Input filter On for GPIO pins */\n+#define IOCON_OPENDRAIN_EN      (0x1 << 10)\t\t/*!< Enables open-drain function */\n+#define IOCON_S_MODE_0CLK       (0x0 << 11)\t\t/*!< Bypass input filter */\n+#define IOCON_S_MODE_1CLK       (0x1 << 11)\t\t/*!< Input pulses shorter than 1 filter clock are rejected */\n+#define IOCON_S_MODE_2CLK       (0x2 << 11)\t\t/*!< Input pulses shorter than 2 filter clock2 are rejected */\n+#define IOCON_S_MODE_3CLK       (0x3 << 11)\t\t/*!< Input pulses shorter than 3 filter clock2 are rejected */\n+#define IOCON_S_MODE(clks)      ((clks) << 11)\t/*!< Select clocks for digital input filter mode */\n+#define IOCON_CLKDIV(div)       ((div) << 13)\t/*!< Select peripheral clock divider for input filter sampling clock, 2^n, n=0-6 */\n+\n+/**\n+ * @brief\tSets I/O Control pin mux\n+ * @param\tpIOCON\t\t: The base of IOCON peripheral on the chip\n+ * @param\tport\t\t: GPIO port to mux\n+ * @param\tpin\t\t\t: GPIO pin to mux\n+ * @param\tmodefunc\t: OR'ed values or type IOCON_*\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_IOCON_PinMuxSet(LPC_IOCON_T *pIOCON, uint8_t port, uint8_t pin, uint32_t modefunc)\n+{\n+\tpIOCON->PIO[port][pin] = modefunc;\n+}\n+\n+/**\n+ * @brief\tI/O Control pin mux\n+ * @param\tpIOCON\t: The base of IOCON peripheral on the chip\n+ * @param\tport\t: GPIO port to mux\n+ * @param\tpin\t\t: GPIO pin to mux\n+ * @param\tmode\t: OR'ed values or type IOCON_*\n+ * @param\tfunc\t: Pin function, value of type IOCON_FUNC?\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_IOCON_PinMux(LPC_IOCON_T *pIOCON, uint8_t port, uint8_t pin, uint16_t mode, uint8_t func)\n+{\n+\tChip_IOCON_PinMuxSet(pIOCON, port, pin, (uint32_t) (mode | func));\n+}\n+\n+/**\n+ * @brief\tSet all I/O Control pin muxing\n+ * @param\tpIOCON\t    : The base of IOCON peripheral on the chip\n+ * @param\tpinArray    : Pointer to array of pin mux selections\n+ * @param\tarrayLength : Number of entries in pinArray\n+ * @return\tNothing\n+ */\n+void Chip_IOCON_SetPinMuxing(LPC_IOCON_T *pIOCON, const PINMUX_GRP_T *pinArray, uint32_t arrayLength);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __IOCON_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/lpc_types.h ./chip/inc/lpc_types.h\n--- a_tnusFF/chip/inc/lpc_types.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/lpc_types.h\t2016-10-22 23:17:43.560840278 -0300\n@@ -0,0 +1,223 @@\n+/*\n+ * @brief Common types used in LPC functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __LPC_TYPES_H_\n+#define __LPC_TYPES_H_\n+\n+#include <stdint.h>\n+#include <stdbool.h>\n+\n+/** @defgroup LPC_Types CHIP: LPC Common Types\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/** @defgroup LPC_Types_Public_Types LPC Public Types\n+ * @{\n+ */\n+\n+/**\n+ * @brief Boolean Type definition\n+ */\n+typedef enum {FALSE = 0, TRUE = !FALSE} Bool;\n+\n+/**\n+ * @brief Boolean Type definition\n+ */\n+#if !defined(__cplusplus)\n+// typedef enum {false = 0, true = !false} bool;\n+#endif\n+\n+/**\n+ * @brief Flag Status and Interrupt Flag Status type definition\n+ */\n+typedef enum {RESET = 0, SET = !RESET} FlagStatus, IntStatus, SetState;\n+#define PARAM_SETSTATE(State) ((State == RESET) || (State == SET))\n+\n+/**\n+ * @brief Functional State Definition\n+ */\n+typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;\n+#define PARAM_FUNCTIONALSTATE(State) ((State == DISABLE) || (State == ENABLE))\n+\n+/**\n+ * @ Status type definition\n+ */\n+typedef enum {ERROR = 0, SUCCESS = !ERROR} Status;\n+\n+/**\n+ * Read/Write transfer type mode (Block or non-block)\n+ */\n+typedef enum {\n+\tNONE_BLOCKING = 0,\t\t/**< None Blocking type */\n+\tBLOCKING,\t\t\t\t/**< Blocking type */\n+} TRANSFER_BLOCK_T;\n+\n+/** Pointer to Function returning Void (any number of parameters) */\n+typedef void (*PFV)();\n+\n+/** Pointer to Function returning int32_t (any number of parameters) */\n+typedef int32_t (*PFI)();\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup LPC_Types_Public_Macros  LPC Public Macros\n+ * @{\n+ */\n+\n+/* _BIT(n) sets the bit at position \"n\"\n+ * _BIT(n) is intended to be used in \"OR\" and \"AND\" expressions:\n+ * e.g., \"(_BIT(3) | _BIT(7))\".\n+ */\n+#undef _BIT\n+/* Set bit macro */\n+#define _BIT(n) (1 << (n))\n+\n+/* _SBF(f,v) sets the bit field starting at position \"f\" to value \"v\".\n+ * _SBF(f,v) is intended to be used in \"OR\" and \"AND\" expressions:\n+ * e.g., \"((_SBF(5,7) | _SBF(12,0xF)) & 0xFFFF)\"\n+ */\n+#undef _SBF\n+/* Set bit field macro */\n+#define _SBF(f, v) ((v) << (f))\n+\n+/* _BITMASK constructs a symbol with 'field_width' least significant\n+ * bits set.\n+ * e.g., _BITMASK(5) constructs '0x1F', _BITMASK(16) == 0xFFFF\n+ * The symbol is intended to be used to limit the bit field width\n+ * thusly:\n+ * <a_register> = (any_expression) & _BITMASK(x), where 0 < x <= 32.\n+ * If \"any_expression\" results in a value that is larger than can be\n+ * contained in 'x' bits, the bits above 'x - 1' are masked off.  When\n+ * used with the _SBF example above, the example would be written:\n+ * a_reg = ((_SBF(5,7) | _SBF(12,0xF)) & _BITMASK(16))\n+ * This ensures that the value written to a_reg is no wider than\n+ * 16 bits, and makes the code easier to read and understand.\n+ */\n+#undef _BITMASK\n+/* Bitmask creation macro */\n+#define _BITMASK(field_width) ( _BIT(field_width) - 1)\n+\n+/* NULL pointer */\n+#ifndef NULL\n+#define NULL ((void *) 0)\n+#endif\n+\n+/* Number of elements in an array */\n+#define NELEMENTS(array)  (sizeof(array) / sizeof(array[0]))\n+\n+/* Static data/function define */\n+#define STATIC static\n+/* External data/function define */\n+#define EXTERN extern\n+\n+#if !defined(MAX)\n+#define MAX(a, b) (((a) > (b)) ? (a) : (b))\n+#endif\n+#if !defined(MIN)\n+#define MIN(a, b) (((a) < (b)) ? (a) : (b))\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+/* Old Type Definition compatibility */\n+/** @addtogroup LPC_Types_Public_Types\n+ * @{\n+ */\n+\n+/** LPC type for character type */\n+typedef char CHAR;\n+\n+/** LPC type for 8 bit unsigned value */\n+typedef uint8_t UNS_8;\n+\n+/** LPC type for 8 bit signed value */\n+typedef int8_t INT_8;\n+\n+/** LPC type for 16 bit unsigned value */\n+typedef uint16_t UNS_16;\n+\n+/** LPC type for 16 bit signed value */\n+typedef int16_t INT_16;\n+\n+/** LPC type for 32 bit unsigned value */\n+typedef uint32_t UNS_32;\n+\n+/** LPC type for 32 bit signed value */\n+typedef int32_t INT_32;\n+\n+/** LPC type for 64 bit signed value */\n+typedef int64_t INT_64;\n+\n+/** LPC type for 64 bit unsigned value */\n+typedef uint64_t UNS_64;\n+\n+#ifdef __CODE_RED\n+#define BOOL_32 bool\n+#define BOOL_16 bool\n+#define BOOL_8  bool\n+#else\n+/** 32 bit boolean type */\n+typedef bool BOOL_32;\n+\n+/** 16 bit boolean type */\n+typedef bool BOOL_16;\n+\n+/** 8 bit boolean type */\n+typedef bool BOOL_8;\n+#endif\n+\n+#ifdef __CC_ARM\n+#define INLINE  __inline\n+#else\n+#define INLINE inline\n+#endif\n+\n+#ifdef __ICCARM__\n+#define ALIGNSTR(x) # x\n+#define ALIGN(x) _Pragma(ALIGNSTR(data_alignment = x))\n+#else /* __CC_ARM || __GNUC__ */\n+#define ALIGN(x) __attribute__ ((aligned(x)))\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __LPC_TYPES_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/mailbox_5410x.h ./chip/inc/mailbox_5410x.h\n--- a_tnusFF/chip/inc/mailbox_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/mailbox_5410x.h\t2016-10-22 23:17:43.560840278 -0300\n@@ -0,0 +1,173 @@\n+/*\n+ * @brief LPC5410X Mailbox M4/M0+ driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __MAILBOX_5410X_H_\n+#define __MAILBOX_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup MAILBOX_5410X CHIP: LPC5410X Mailbox M4/M0+ driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/* Mailbox indexes */\n+typedef enum {\n+\tMAILBOX_CM0PLUS = 0,\n+\tMAILBOX_CM4\n+} MBOX_IDX_T;\n+#define MAILBOX_AVAIL       (MAILBOX_CM4 + 1)\t/* Number of available mailboxes */\n+\n+/** Individual mailbox IRQ structure */\n+typedef struct {\n+\t__IO    uint32_t        IRQ;\t\t/*!< Mailbox data */\n+\t__O     uint32_t        IRQSET;\t\t/*!< Mailbox data set bits only */\n+\t__O     uint32_t        IRQCLR;\t\t/*!< Mailbox dataclearset bits only */\n+\t__I     uint32_t        RESERVED;\n+} LPC_MBOXIRQ_T;\n+\n+/** Mailbox register structure */\n+typedef struct {\t\t\t\t\t\t/*!< Mailbox register structure */\n+\tLPC_MBOXIRQ_T           BOX[MAILBOX_AVAIL];\t/*!< Mailbox, offset 0 = M0+, offset 1 = M4 */\n+\tLPC_MBOXIRQ_T           RESERVED1[15 - MAILBOX_AVAIL];\n+\t__I     uint32_t        RESERVED2[2];\n+\t__IO    uint32_t        MUTEX;\t\t/*!< Mutex */\n+} LPC_MBOX_T;\n+\n+/**\n+ * @brief\tInitialize mailbox\n+ * @param\tpMBOX\t: Pointer to the mailbox register structure\n+ * @return\tNothing\n+ * @note\tEven if both cores use the amilbox, only 1 core should initialize it.\n+ */\n+__STATIC_INLINE void Chip_MBOX_Init(LPC_MBOX_T *pMBOX)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_MAILBOX);\n+\tChip_SYSCON_PeriphReset(RESET_MAILBOX);\n+}\n+\n+/**\n+ * @brief\tShutdown mailbox\n+ * @param\tpMBOX\t: Pointer to the mailbox register structure\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_MBOX_DeInit(LPC_MBOX_T *pMBOX)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_MAILBOX);\n+}\n+\n+/**\n+ * @brief\tSet data value in the mailbox based on the CPU ID\n+ * @param\tpMBOX\t\t: Pointer to the mailbox register structure\n+ * @param\tcpu_id\t\t: MAILBOX_CM0PLUS is M0+ or MAILBOX_CM4 is M4\n+ * @param\tmboxData\t: data to send in the mailbox\n+ * @return\tNothing\n+ * @note\tSets a data value to send via the MBOX to the other core.\n+ */\n+__STATIC_INLINE void Chip_MBOX_SetValue(LPC_MBOX_T *pMBOX, uint32_t cpu_id, uint32_t mboxData)\n+{\n+\tpMBOX->BOX[cpu_id].IRQ = mboxData;\n+}\n+\n+/**\n+ * @brief\tSet data bits in the mailbox based on the CPU ID\n+ * @param\tpMBOX\t\t: Pointer to the mailbox register structure\n+ * @param\tcpu_id\t\t: MAILBOX_CM0PLUS is M0+ or MAILBOX_CM4 is M4\n+ * @param\tmboxSetBits\t: data bits to set in the mailbox\n+ * @return\tNothing\n+ * @note\tSets data bits to send via the MBOX to the other core, A value of 0 will\n+ * do nothing.  Only sets bits selected with a 1 in it's bit position.\n+ */\n+__STATIC_INLINE void Chip_MBOX_SetValueBits(LPC_MBOX_T *pMBOX, uint32_t cpu_id, uint32_t mboxSetBits)\n+{\n+\tpMBOX->BOX[cpu_id].IRQSET = mboxSetBits;\n+}\n+\n+/**\n+ * @brief\tClear data bits in the mailbox based on the CPU ID\n+ * @param\tpMBOX\t\t: Pointer to the mailbox register structure\n+ * @param\tcpu_id\t\t: MAILBOX_CM0PLUS is M0+ or MAILBOX_CM4 is M4\n+ * @param\tmboxClrBits\t: data bits to clear in the mailbox\n+ * @return\tNothing\n+ * @note\tClear data bits to send via the MBOX to the other core. A value of 0 will\n+ * do nothing. Only clears bits selected with a 1 in it's bit position.\n+ */\n+__STATIC_INLINE void Chip_MBOX_ClearValueBits(LPC_MBOX_T *pMBOX, uint32_t cpu_id, uint32_t mboxClrBits)\n+{\n+\tpMBOX->BOX[cpu_id].IRQCLR = mboxClrBits;\n+}\n+\n+/**\n+ * @brief\tGet data in the mailbox based on the cpu_id\n+ * @param\tpMBOX\t: Pointer to the mailbox register structure\n+ * @param\tcpu_id\t: MAILBOX_CM0PLUS is M0+ or MAILBOX_CM4 is M4\n+ * @return\tCurrent mailbox data\n+ */\n+__STATIC_INLINE uint32_t Chip_MBOX_GetValue(LPC_MBOX_T *pMBOX, uint32_t cpu_id)\n+{\n+\treturn pMBOX->BOX[cpu_id].IRQ;\n+}\n+\n+/**\n+ * @brief\tGet MUTEX state and lock mutex\n+ * @param\tpMBOX\t: Pointer to the mailbox register structure\n+ * @return\tSee note\n+ * @note\tReturns '1' if the mutex was taken or '0' if another resources has the\n+ * mutex locked. Once a mutex is taken, it can be returned with the Chip_MBOX_SetMutex()\n+ * function.\n+ */\n+__STATIC_INLINE uint32_t Chip_MBOX_GetMutex(LPC_MBOX_T *pMBOX)\n+{\n+\treturn pMBOX->MUTEX;\n+}\n+\n+/**\n+ * @brief\tSet MUTEX state\n+ * @param\tpMBOX\t: Pointer to the mailbox register structure\n+ * @return\tNothing\n+ * @note\tSets mutex state to '1' and allows other resources to get the mutex\n+ */\n+__STATIC_INLINE void Chip_MBOX_SetMutex(LPC_MBOX_T *pMBOX)\n+{\n+\tpMBOX->MUTEX = 1;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __MAILBOX_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/mrt_5410x.h ./chip/inc/mrt_5410x.h\n--- a_tnusFF/chip/inc/mrt_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/mrt_5410x.h\t2016-10-22 23:17:43.560840278 -0300\n@@ -0,0 +1,340 @@\n+/*\n+ * @brief LPC5410X Multi-Rate Timer (MRT) registers and driver functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __MRT_5410X_H_\n+#define __MRT_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup MRT_5410X CHIP: LPC5410X Multi-Rate Timer driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC5410X MRT chip configuration\n+ */\n+#define MRT_CHANNELS_NUM      (4)\n+#define MRT_NO_IDLE_CHANNEL   (0x40)\n+\n+/**\n+ * @brief MRT register block structure\n+ */\n+typedef struct {\n+\t__IO uint32_t INTVAL;\t/*!< Timer interval register */\n+\t__O  uint32_t TIMER;\t/*!< Timer register */\n+\t__IO uint32_t CTRL;\t\t/*!< Timer control register */\n+\t__IO uint32_t STAT;\t\t/*!< Timer status register */\n+} LPC_MRT_CH_T;\n+\n+/**\n+ * @brief MRT register block structure\n+ */\n+typedef struct {\n+\tLPC_MRT_CH_T CHANNEL[MRT_CHANNELS_NUM];\n+\tuint32_t unused[44];\n+\t__IO uint32_t MODCFG;\n+\t__O  uint32_t IDLE_CH;\n+\t__IO uint32_t IRQ_FLAG;\n+} LPC_MRT_T;\n+\n+/**\n+ * @brief MRT Interrupt Modes enum\n+ */\n+typedef enum MRT_MODE {\n+\tMRT_MODE_REPEAT =  (0 << 1),\t/*!< MRT Repeat interrupt mode */\n+\tMRT_MODE_ONESHOT = (1 << 1)\t\t/*!< MRT One-shot interrupt mode */\n+} MRT_MODE_T;\n+\n+/**\n+ * @brief MRT register bit fields & masks\n+ */\n+/* MRT Time interval register bit fields */\n+#define MRT_INTVAL_IVALUE        (0x7FFFFFFF)\t/* Maximum interval load value and mask */\n+#define MRT_INTVAL_LOAD          (0x80000000UL)\t/* Force immediate load of timer interval register bit */\n+\n+/* MRT Control register bit fields & masks */\n+#define MRT_CTRL_INTEN_MASK      (0x01)\n+#define MRT_CTRL_MODE_MASK       (0x06)\n+\n+/* MRT Status register bit fields & masks */\n+#define MRT_STAT_INTFLAG         (0x01)\n+#define MRT_STAT_RUNNING         (0x02)\n+\n+/* Pointer to individual MR register blocks */\n+#define LPC_MRT_CH0         ((LPC_MRT_CH_T *) &LPC_MRT->CHANNEL[0])\n+#define LPC_MRT_CH1         ((LPC_MRT_CH_T *) &LPC_MRT->CHANNEL[1])\n+#define LPC_MRT_CH2         ((LPC_MRT_CH_T *) &LPC_MRT->CHANNEL[2])\n+#define LPC_MRT_CH3         ((LPC_MRT_CH_T *) &LPC_MRT->CHANNEL[3])\n+#define LPC_MRT_CH(ch)      ((LPC_MRT_CH_T *) &LPC_MRT->CHANNEL[(ch)])\n+\n+/* Global interrupt flag register interrupt mask/clear values */\n+#define MRT0_INTFLAG        (1)\n+#define MRT1_INTFLAG        (2)\n+#define MRT2_INTFLAG        (4)\n+#define MRT3_INTFLAG        (8)\n+#define MRTn_INTFLAG(ch)    (1 << (ch))\n+\n+/**\n+ * @brief\tInitializes the MRT\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_MRT_Init(void)\n+{\n+\t/* Enable the clock to the register interface */\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_MRT);\n+\n+\t/* Reset MRT */\n+\tChip_SYSCON_PeriphReset(RESET_MRT);\n+}\n+\n+/**\n+ * @brief\tDe-initializes the MRT Channel\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_MRT_DeInit(void)\n+{\n+\t/* Disable the clock to the MRT */\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_MRT);\n+}\n+\n+/**\n+ * @brief\tReturns a pointer to the register block for a MRT channel\n+ * @param\tch\t: MRT channel tog et register block for (0..3)\n+ * @return\tPointer to the MRT register block for the channel\n+ */\n+__STATIC_INLINE LPC_MRT_CH_T *Chip_MRT_GetRegPtr(uint8_t ch)\n+{\n+\treturn LPC_MRT_CH(ch);\n+}\n+\n+/**\n+ * @brief\tReturns the timer time interval value\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tTimer time interval value (IVALUE)\n+ */\n+__STATIC_INLINE uint32_t Chip_MRT_GetInterval(LPC_MRT_CH_T *pMRT)\n+{\n+\treturn pMRT->INTVAL;\n+}\n+\n+/**\n+ * @brief\tSets the timer time interval value\n+ * @param\tpMRT\t : Pointer to selected MRT Channel\n+ * @param   interval : The interval timeout (31-bits)\n+ * @return\tNothing\n+ * @note\tSetting bit 31 in timer time interval register causes the time interval value\n+ * to load immediately, otherwise the time interval value will be loaded in\n+ * next timer cycle.<br>\n+ * Example: Chip_MRT_SetInterval(pMRT, 0x500 | MRT_INTVAL_LOAD); // Will load timer interval immediately<br>\n+ * Example: Chip_MRT_SetInterval(pMRT, 0x500); // Will load timer interval after internal expires\n+ */\n+__STATIC_INLINE void Chip_MRT_SetInterval(LPC_MRT_CH_T *pMRT, uint32_t interval)\n+{\n+\tpMRT->INTVAL = interval;\n+}\n+\n+/**\n+ * @brief\tReturns the current timer value\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tThe current timer value\n+ */\n+__STATIC_INLINE uint32_t Chip_MRT_GetTimer(LPC_MRT_CH_T *pMRT)\n+{\n+\treturn pMRT->TIMER;\n+}\n+\n+/**\n+ * @brief\tReturns true if the timer is enabled\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tTrue if enabled, Flase if not enabled\n+ */\n+__STATIC_INLINE bool Chip_MRT_GetEnabled(LPC_MRT_CH_T *pMRT)\n+{\n+\treturn (bool) ((pMRT->CTRL & MRT_CTRL_INTEN_MASK) != 0);\n+}\n+\n+/**\n+ * @brief\tEnables the timer\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_MRT_SetEnabled(LPC_MRT_CH_T *pMRT)\n+{\n+\tpMRT->CTRL |= MRT_CTRL_INTEN_MASK;\n+}\n+\n+/**\n+ * @brief\tDisables the timer\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_MRT_SetDisabled(LPC_MRT_CH_T *pMRT)\n+{\n+\tpMRT->CTRL &= ~MRT_CTRL_INTEN_MASK;\n+}\n+\n+/**\n+ * @brief\tReturns the timer mode (repeat or one-shot)\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tThe current timer mode\n+ */\n+__STATIC_INLINE MRT_MODE_T Chip_MRT_GetMode(LPC_MRT_CH_T *pMRT)\n+{\n+\treturn (MRT_MODE_T) (pMRT->CTRL & MRT_CTRL_MODE_MASK);\n+}\n+\n+/**\n+ * @brief\tSets the timer mode (repeat or one-shot)\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @param   mode    : Timer mode\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_MRT_SetMode(LPC_MRT_CH_T *pMRT, MRT_MODE_T mode)\n+{\n+\tuint32_t reg;\n+\n+\treg = pMRT->CTRL & ~MRT_CTRL_MODE_MASK;\n+\tpMRT->CTRL = reg | (uint32_t) mode;\n+}\n+\n+/**\n+ * @brief\tCheck if the timer is configured in repeat mode\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tTrue if in repeat mode, False if in one-shot mode\n+ */\n+__STATIC_INLINE bool Chip_MRT_IsRepeatMode(LPC_MRT_CH_T *pMRT)\n+{\n+\treturn ((pMRT->CTRL & MRT_CTRL_MODE_MASK) != 0) ? false : true;\n+}\n+\n+/**\n+ * @brief\tCheck if the timer is configured in one-shot mode\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tTrue if in one-shot mode, False if in repeat mode\n+ */\n+__STATIC_INLINE bool Chip_MRT_IsOneShotMode(LPC_MRT_CH_T *pMRT)\n+{\n+\treturn ((pMRT->CTRL & MRT_CTRL_MODE_MASK) != 0) ? true : false;\n+}\n+\n+/**\n+ * @brief\tCheck if the timer has an interrupt pending\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tTrue if interrupt is pending, False if no interrupt is pending\n+ */\n+__STATIC_INLINE bool Chip_MRT_IntPending(LPC_MRT_CH_T *pMRT)\n+{\n+\treturn (bool) ((pMRT->STAT & MRT_STAT_INTFLAG) != 0);\n+}\n+\n+/**\n+ * @brief\tClears the pending interrupt (if any)\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_MRT_IntClear(LPC_MRT_CH_T *pMRT)\n+{\n+\tpMRT->STAT |= MRT_STAT_INTFLAG;\n+}\n+\n+/**\n+ * @brief\tCheck if the timer is running\n+ * @param\tpMRT\t: Pointer to selected MRT Channel\n+ * @return\tTrue if running, False if stopped\n+ */\n+__STATIC_INLINE bool Chip_MRT_Running(LPC_MRT_CH_T *pMRT)\n+{\n+\treturn (bool) ((pMRT->STAT & MRT_STAT_RUNNING) != 0);\n+}\n+\n+/**\n+ * @brief\tReturns the IDLE channel value\n+ * @return\tIDLE channel value (unshifted in bits 7..4)\n+ */\n+__STATIC_INLINE uint8_t Chip_MRT_GetIdleChannel(void)\n+{\n+\treturn (uint8_t) (LPC_MRT->IDLE_CH);\n+}\n+\n+/**\n+ * @brief\tReturns the IDLE channel value\n+ * @return\tIDLE channel value (shifted in bits 3..0)\n+ */\n+__STATIC_INLINE uint8_t Chip_MRT_GetIdleChannelShifted(void)\n+{\n+\treturn (uint8_t) (Chip_MRT_GetIdleChannel() >> 4);\n+}\n+\n+/**\n+ * @brief\tReturns the interrupt pending status for all MRT channels\n+ * @return\tIRQ pending channel bitfield(bit 0 = MRT0, bit 1 = MRT1, etc.)\n+ */\n+__STATIC_INLINE uint32_t Chip_MRT_GetIntPending(void)\n+{\n+\treturn LPC_MRT->IRQ_FLAG;\n+}\n+\n+/**\n+ * @brief\tReturns the interrupt pending status for a singel MRT channel\n+ * @param\tch\t: Channel to check pending interrupt status for\n+ * @return\tIRQ pending channel number\n+ */\n+__STATIC_INLINE bool Chip_MRT_GetIntPendingByChannel(uint8_t ch)\n+{\n+\treturn (bool) (((LPC_MRT->IRQ_FLAG >> ch) & 1) != 0);\n+}\n+\n+/**\n+ * @brief\tClears the interrupt pending status for one or more MRT channels\n+ * @param\tmask\t: Channels to clear (bit 0 = MRT0, bit 1 = MRT1, etc.)\n+ * @return\tNothing\n+ * @note\tUse this function to clear multiple interrupt pending states in\n+ * a single call via the IRQ_FLAG register. Performs the same function for\n+ * all MRT channels in a single call as the Chip_MRT_IntClear() does for a\n+ * single channel.\n+ */\n+__STATIC_INLINE void Chip_MRT_ClearIntPending(uint32_t mask)\n+{\n+\tLPC_MRT->IRQ_FLAG = mask;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __MRT_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/pdm_api.h ./chip/inc/pdm_api.h\n--- a_tnusFF/chip/inc/pdm_api.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/pdm_api.h\t2016-10-22 23:17:43.560840278 -0300\n@@ -0,0 +1,119 @@\n+/*\n+ * @brief PDM mic interface module\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PDM_API_H_\n+#define __PDM_API_H_\n+\n+#include <stdint.h>\n+#include <string.h>\n+#include <stdbool.h>\n+#include \"lpc_types.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SH_PDM PDMLIB: PDM interface API\n+ * @ingroup SENSOR_HUB\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tInitialize PDM module\n+ * @return\tNothing\n+ * @note PDM Clock (Clk out or Timer1) should be configured by the application.\n+ */\n+extern void PDM_Init(void);\n+\n+/**\n+ * @brief\tReset PDM interface\n+ * @return\tNothing\n+ * @note\tThis function resets the PDM (SI interface) state variables for a fresh start.\n+ */\n+extern void PDM_Reset(void);\n+\n+/**\n+ * @brief\tStart capturing PDM data\n+ * @return\tNothing\n+ */\n+extern void PDM_Start(void);\n+\n+/**\n+ * @brief\tStop capturing PDM data\n+ * @return\tNothing\n+ */\n+extern void PDM_Stop(void);\n+\n+/******************************************************************************\n+ *          Callback routines\n+ *****************************************************************************/\n+/**\n+ * @brief\tPDM data ready callback\n+ * @return\tNothing\n+ * @note\tThis function is called by PDM block when data is ready. Partially\n+ *\tdecimated data is available through @ref pdm_audio buffer and audio envelope_buffer\n+ *  data for voice activity detection is available through @ref envelope_buffer.\n+ */\n+extern void PDM_DataReady(void);\n+\n+/** @brief Audio envelop data.\n+    Envelope information:\n+     - envelope_buffer[0] Fast detector\n+     - envelope_buffer[1] Slow detector\n+     - envelope_buffer[2] Reserved for internal use\n+     - envelope_buffer[3] Reserved for internal use\n+     - envelope_buffer[4] Latest biggest difference between fast and slow detector\n+     - envelope_buffer[5] latest output of pre envelope lowpass filter\n+     - envelope_buffer[6] latest output of pre envelope highpass filter\n+\n+ */\n+extern volatile int32_t envelope_buffer[];\n+\n+/** @brief Decimated PDM data.\n+    A DC cut filter should be applied on this data to get 16bit PCM samples @ 16KHz\n+ */\n+extern volatile int32_t pdm_audio[];\n+\n+#define PDM_AUDIO_BUF_SIZE 32\n+\n+#define PDM_PONG (*((volatile unsigned *) 0x4004C044)) & (1 << 6)\n+\n+#define PDM_IRQn (IRQn_Type) 30\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PDM_API_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/pinint_5410x.h ./chip/inc/pinint_5410x.h\n--- a_tnusFF/chip/inc/pinint_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/pinint_5410x.h\t2016-10-22 23:17:43.560840278 -0300\n@@ -0,0 +1,413 @@\n+/*\n+ * @brief LPC5410X Pin Interrupt and Pattern Match Registers and driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PININT_5410X_H_\n+#define __PININT_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup PININT_5410X CHIP: LPC5410X Pin Interrupt and Pattern Match driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC5410X Pin Interrupt and Pattern Match register block structure\n+ */\n+typedef struct {\t\t\t/*!< PIN_INT Structure */\n+\t__IO uint32_t ISEL;\t\t/*!< Pin Interrupt Mode register */\n+\t__IO uint32_t IENR;\t\t/*!< Pin Interrupt Enable (Rising) register */\n+\t__IO uint32_t SIENR;\t/*!< Set Pin Interrupt Enable (Rising) register */\n+\t__IO uint32_t CIENR;\t/*!< Clear Pin Interrupt Enable (Rising) register */\n+\t__IO uint32_t IENF;\t\t/*!< Pin Interrupt Enable Falling Edge / Active Level register */\n+\t__IO uint32_t SIENF;\t/*!< Set Pin Interrupt Enable Falling Edge / Active Level register */\n+\t__IO uint32_t CIENF;\t/*!< Clear Pin Interrupt Enable Falling Edge / Active Level address */\n+\t__IO uint32_t RISE;\t\t/*!< Pin Interrupt Rising Edge register */\n+\t__IO uint32_t FALL;\t\t/*!< Pin Interrupt Falling Edge register */\n+\t__IO uint32_t IST;\t\t/*!< Pin Interrupt Status register */\n+\t__IO uint32_t PMCTRL;\t/*!< GPIO pattern match interrupt control register          */\n+\t__IO uint32_t PMSRC;\t/*!< GPIO pattern match interrupt bit-slice source register */\n+\t__IO uint32_t PMCFG;\t/*!< GPIO pattern match interrupt bit slice configuration register */\n+} LPC_PIN_INT_T;\n+\n+/**\n+ * LPC5410X Pin Interrupt and Pattern match engine register\n+ * bit fields and macros\n+ */\n+\n+/* PININT Interrupt Mode Mask */\n+#define PININT_ISEL_PMODE_MASK   ((uint32_t) 0x00FF)\n+\n+/* PININT Pattern Match Control Register Mask */\n+#define PININT_PMCTRL_MASK       ((uint32_t) 0xFF000003)\n+\n+/* PININT interrupt control register */\n+#define PININT_PMCTRL_PMATCH_SEL (1 << 0)\n+#define PININT_PMCTRL_RXEV_ENA   (1 << 1)\n+\n+/* PININT Bit slice source register bits */\n+#define PININT_SRC_BITSOURCE_START  8\n+#define PININT_SRC_BITSOURCE_MASK   7\n+\n+/* PININT Bit slice configuration register bits */\n+#define PININT_SRC_BITCFG_START  8\n+#define PININT_SRC_BITCFG_MASK   7\n+\n+/**\n+ * LPC5410X Pin Interrupt channel values\n+ */\n+#define PININTCH0         (1 << 0)\n+#define PININTCH1         (1 << 1)\n+#define PININTCH2         (1 << 2)\n+#define PININTCH3         (1 << 3)\n+#define PININTCH4         (1 << 4)\n+#define PININTCH5         (1 << 5)\n+#define PININTCH6         (1 << 6)\n+#define PININTCH7         (1 << 7)\n+#define PININTCH(ch)      (1 << (ch))\n+\n+/**\n+ * LPC5410X Pin Interrupt select enum values\n+ */\n+typedef enum Chip_PININT_SELECT {\n+\tPININTSELECT0 = 0,\n+\tPININTSELECT1 = 1,\n+\tPININTSELECT2 = 2,\n+\tPININTSELECT3 = 3,\n+\tPININTSELECT4 = 4,\n+\tPININTSELECT5 = 5,\n+\tPININTSELECT6 = 6,\n+\tPININTSELECT7 = 7\n+} Chip_PININT_SELECT_T;\n+\n+/**\n+ * LPC5410X Pin Matching Interrupt bit slice enum values\n+ */\n+typedef enum Chip_PININT_BITSLICE {\n+\tPININTBITSLICE0 = 0,\t/*!< PININT Bit slice 0 */\n+\tPININTBITSLICE1 = 1,\t/*!< PININT Bit slice 1 */\n+\tPININTBITSLICE2 = 2,\t/*!< PININT Bit slice 2 */\n+\tPININTBITSLICE3 = 3,\t/*!< PININT Bit slice 3 */\n+\tPININTBITSLICE4 = 4,\t/*!< PININT Bit slice 4 */\n+\tPININTBITSLICE5 = 5,\t/*!< PININT Bit slice 5 */\n+\tPININTBITSLICE6 = 6,\t/*!< PININT Bit slice 6 */\n+\tPININTBITSLICE7 = 7\t\t/*!< PININT Bit slice 7 */\n+} Chip_PININT_BITSLICE_T;\n+\n+/**\n+ * LPC5410X Pin Matching Interrupt bit slice configuration enum values\n+ */\n+typedef enum Chip_PININT_BITSLICE_CFG {\n+\tPININT_PATTERNCONST1           = 0x0,\t/*!< Contributes to product term match */\n+\tPININT_PATTERNRISING           = 0x1,\t/*!< Rising edge */\n+\tPININT_PATTERNFALLING          = 0x2,\t/*!< Falling edge */\n+\tPININT_PATTERNRISINGORFALLING  = 0x3,\t/*!< Rising or Falling edge */\n+\tPININT_PATTERNHIGH             = 0x4,\t/*!< High level */\n+\tPININT_PATTERNLOW              = 0x5,\t/*!< Low level */\n+\tPININT_PATTERNCONST0           = 0x6,\t/*!< Never contributes for match */\n+\tPININT_PATTERNEVENT            = 0x7\t/*!< Match occurs on event */\n+} Chip_PININT_BITSLICE_CFG_T;\n+\n+/**\n+ * @brief\tInitialize Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tNothing\n+ * @note\tThis function should be used after the Chip_GPIO_Init() function.\n+ */\n+__STATIC_INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_PINT);\n+\tChip_SYSCON_PeriphReset(RESET_PINT);\n+}\n+\n+/**\n+ * @brief\tDe-Initialize Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_PINT);\n+}\n+\n+/**\n+ * @brief\tConfigure the pins as edge sensitive in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pins (ORed value of PININTCH*)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_SetPinModeEdge(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->ISEL = (pPININT->ISEL & PININT_ISEL_PMODE_MASK) & ~pins;\n+}\n+\n+/**\n+ * @brief\tConfigure the pins as level sensitive in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pins (ORed value of PININTCH*)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_SetPinModeLevel(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->ISEL = (pPININT->ISEL & PININT_ISEL_PMODE_MASK) | pins;\n+}\n+\n+/**\n+ * @brief\tReturn current PININT edge or level sensitive interrupt selection state\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tA bifield containing the edge/level sensitive selection for each\n+ * interrupt. Bit 0 = PININT0, 1 = PININT1, etc.\n+ * For each bit, a 0 means the edge sensitive interrupt is selected, while a 1\n+ * means the level sensitive interrupt is selected.\n+ */\n+__STATIC_INLINE uint32_t Chip_PININT_GetPinMode(LPC_PIN_INT_T *pPININT)\n+{\n+\treturn pPININT->ISEL & PININT_ISEL_PMODE_MASK;\n+}\n+\n+/**\n+ * @brief\tReturn current PININT rising edge or level interrupt enable state\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tA bifield containing the rising edge/level enable for each\n+ * interrupt. Bit 0 = PININT0, 1 = PININT1, etc.\n+ * For each bit, a 0 means the rising edge/level interrupt is disabled, while a 1\n+ * means it's enabled.\n+ */\n+__STATIC_INLINE uint32_t Chip_PININT_GetHighEnabled(LPC_PIN_INT_T *pPININT)\n+{\n+\treturn pPININT->IENR;\n+}\n+\n+/**\n+ * @brief\tEnable rising edge/level PININT interrupts for pins\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pins to enable (ORed value of PININTCH*)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_EnableIntHigh(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->SIENR = pins;\n+}\n+\n+/**\n+ * @brief\tDisable rising edge/level PININT interrupts for pins\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pins to disable (ORed value of PININTCH*)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_DisableIntHigh(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->CIENR = pins;\n+}\n+\n+/**\n+ * @brief\tReturn current PININT falling edge or level interrupt active level enable state\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tA bifield containing the falling edge/level interrupt active level enable for each\n+ * interrupt. Bit 0 = PININT0, 1 = PININT1, etc.\n+ * For each bit, a 0 means the falling edge is disabled/level interrupt active low is enabled, while a 1\n+ * means the falling edge is enabled/level interrupt active high is enabled.\n+ */\n+__STATIC_INLINE uint32_t Chip_PININT_GetLowEnabled(LPC_PIN_INT_T *pPININT)\n+{\n+\treturn pPININT->IENF;\n+}\n+\n+/**\n+ * @brief\tEnable falling edge/level active level PININT interrupts for pins\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pins to enable (ORed value of PININTCH*)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_EnableIntLow(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->SIENF = pins;\n+}\n+\n+/**\n+ * @brief\tDisable low edge/level active level PININT interrupts for pins\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pins to disable (ORed value of PININTCH*)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_DisableIntLow(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->CIENF = pins;\n+}\n+\n+/**\n+ * @brief\tReturn pin states that have a detected latched rising edge (RISE) state\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tPININT states (bit n = high) with a latched rise state detected\n+ */\n+__STATIC_INLINE uint32_t Chip_PININT_GetRiseStates(LPC_PIN_INT_T *pPININT)\n+{\n+\treturn pPININT->RISE;\n+}\n+\n+/**\n+ * @brief\tClears pin states that had a latched rising edge (RISE) state\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pins with latched states to clear\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_ClearRiseStates(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->RISE = pins;\n+}\n+\n+/**\n+ * @brief\tReturn pin states that have a detected latched falling edge (FALL) state\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tPININT states (bit n = high) with a latched rise state detected\n+ */\n+__STATIC_INLINE uint32_t Chip_PININT_GetFallStates(LPC_PIN_INT_T *pPININT)\n+{\n+\treturn pPININT->FALL;\n+}\n+\n+/**\n+ * @brief\tClears pin states that had a latched falling edge (FALL) state\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pins with latched states to clear\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_ClearFallStates(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->FALL = pins;\n+}\n+\n+/**\n+ * @brief\tGet interrupt status from Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tInterrupt status (bit n for PININTn = high means interrupt ie pending)\n+ */\n+__STATIC_INLINE uint32_t Chip_PININT_GetIntStatus(LPC_PIN_INT_T *pPININT)\n+{\n+\treturn pPININT->IST;\n+}\n+\n+/**\n+ * @brief\tClear interrupt status in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tpins\t: Pin interrupts to clear (ORed value of PININTCH*)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_ClearIntStatus(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+\tpPININT->IST = pins;\n+}\n+\n+/**\n+ * @brief\tSet source for pattern match in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tchannelNum : PININT channel number (From 0 to 7)\n+ * @param\tsliceNum\t: PININT slice number\n+ * @return\tNothing\n+ */\n+void Chip_PININT_SetPatternMatchSrc(LPC_PIN_INT_T *pPININT,\n+\t\t\t\t\t\t\t\t\tChip_PININT_SELECT_T channelNum,\n+\t\t\t\t\t\t\t\t\tChip_PININT_BITSLICE_T sliceNum);\n+\n+/**\n+ * @brief\tConfigure the pattern matcch in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @param\tsliceNum : PININT slice number\n+ * @param\tslice_cfg\t: PININT slice configuration value (enum Chip_PININT_BITSLICE_CFG_T)\n+ * @param\tend_point\t: If true, current slice is final component\n+ * @return\tNothing\n+ */\n+void Chip_PININT_SetPatternMatchConfig(LPC_PIN_INT_T *pPININT, Chip_PININT_BITSLICE_T sliceNum,\n+\t\t\t\t\t\t\t\t\t   Chip_PININT_BITSLICE_CFG_T slice_cfg, bool end_point);\n+\n+/**\n+ * @brief\tEnable pattern match interrupts in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_EnablePatternMatch(LPC_PIN_INT_T *pPININT)\n+{\n+\tpPININT->PMCTRL = (pPININT->PMCTRL & PININT_PMCTRL_MASK) | PININT_PMCTRL_PMATCH_SEL;\n+}\n+\n+/**\n+ * @brief\tDisable pattern match interrupts in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_DisablePatternMatch(LPC_PIN_INT_T *pPININT)\n+{\n+\tpPININT->PMCTRL = (pPININT->PMCTRL & PININT_PMCTRL_MASK) & ~PININT_PMCTRL_PMATCH_SEL;\n+}\n+\n+/**\n+ * @brief\tEnable RXEV output in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_EnablePatternMatchRxEv(LPC_PIN_INT_T *pPININT)\n+{\n+\tpPININT->PMCTRL = (pPININT->PMCTRL & PININT_PMCTRL_MASK) | PININT_PMCTRL_RXEV_ENA;\n+}\n+\n+/**\n+ * @brief\tDisable RXEV output in Pin interrupt block\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PININT_DisablePatternMatchRxEv(LPC_PIN_INT_T *pPININT)\n+{\n+\tpPININT->PMCTRL = (pPININT->PMCTRL & PININT_PMCTRL_MASK) & ~PININT_PMCTRL_RXEV_ENA;\n+}\n+\n+/**\n+ * @brief\tReturn pattern match state\n+ * @param\tpPININT\t: The base address of Pin interrupt block\n+ * @return\t8 bit pattern match state, where a 1 in any bit indicates that\n+ *\t\t\t\t\tthe corresponding product term has matched by the current state\n+ *\t\t\t\t\tof its inputs.\n+ */\n+__STATIC_INLINE uint32_t Chip_PININT_GetPatternMatchState(LPC_PIN_INT_T *pPININT)\n+{\n+\treturn pPININT->PMCTRL >> 24;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PININT_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/pintable_5410x.h ./chip/inc/pintable_5410x.h\n--- a_tnusFF/chip/inc/pintable_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/pintable_5410x.h\t2016-10-22 23:17:43.560840278 -0300\n@@ -0,0 +1,124 @@\n+/*\n+ * @brief LPC5410x enhanced boot block\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PINTABLE_5410X_H_\n+#define __PINTABLE_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup PINTAB_5410X CHIP: LPC5410X Enhanced boot block support\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/* Enhanced image signature offset */\n+#define IMAGE_ENH_MARKER_OFF        0x24\n+\n+/* Enhanced single image signature */\n+#define IMAGE_SINGLE_ENH_SIG        0xEDDC9494\n+\n+/* Enhanced dual image signature */\n+#define IMAGE_DUAL_ENH_SIG          0x0FFEB6B6\n+\n+/* Boot block offset */\n+#define IMAGE_BOOT_BLOCK_OFF        0x28\n+\n+/* Enhanced image block marker */\n+#define IMAGE_ENH_BLOCK_MARKER  0xFEEDA5A5\n+\n+/* Macro for assigning a pin to a PINTABLE pin entry */\n+#define SETPORTPIN(port, pin) (((port) & 0x7) << 5) | ((pin) & 0x1F)\n+\n+/** Image type (img_type) for the pin table structure */\n+typedef enum {\n+\tIMG_NORMAL = 0,\t\t\t\t/*!< Normal image check, assert dynamic ISP to halt boot */\n+\tIMG_ISP_WAIT,\t\t\t\t\t/*!< Wait for host system to send SH_CMD_BOOT command */\n+\tIMG_NO_WAIT,\t\t\t\t\t/*!< Boot image without checking dynamic ISP, CRC is still done */\n+\tIMG_NO_CRC,\t\t\t\t\t\t/*!< No CRC check made. Used during development. Dynamic ISP still works */\n+\tIMG_JUST_BOOT   = 0xFF\t/*!< Disables XOR and CRC checks, will always boot */\n+} IMAGE_T;\n+\n+/** Host interface sources (ifSel) for the pin table structure */\n+typedef enum {\n+\tSL_AUTO = 0,\t\t/*!< Auto-detect used for host interface */\n+\tSL_I2C0,\t\t\t\t/*!< I2C0 used for host interface */\n+\tSL_I2C1,\t\t\t\t/*!< I2C1 used for host interface */\n+\tSL_I2C2,\t\t\t\t/*!< I2C2 used for host interface */\n+\tSL_SPI0,\t\t\t\t/*!< SPI0 used for host interface */\n+\tSL_SPI1,\t\t\t\t/*!< SPI1 used for host interface */\n+} IFSEL_T;\n+\n+/**\n+ * @brief LPC5410X Pin table structure used for enhanced boot block support\n+ */\n+typedef struct PINTABLE {\n+\t/* pin table marker: Should be 0xFEEDA5A5 */\n+\tuint32_t marker;\n+\t/* img_type: Image type (IMAGE_T)\n+\t    0    = Normal image check, assert dynamic ISP to halt boot\n+\t    1    = Wait for host system to send SH_CMD_BOOT command\n+\t    2    = Boot image without checking dynamic ISP, CRC is still done\n+\t    3    = No CRC check made. Used during development. Dynamic ISP still works.\n+\t    0xFF = Disables XOR and CRC checks, will always boot */\n+\tuint8_t img_type;\n+\t/* ifSel: Interface selection for host (IFSEL_T)\n+\t    (0,=AUTODETECT, 1=I2C0, 2=I2C1, 3=I2C2, 4=SPI0, 5=SPI1) */\n+\tuint8_t ifSel;\n+\t/* hostIrqPortPin:\tHost IRQ port (bits 7:5) and pins (bits 4:0) */\n+\tuint8_t hostIrqPortPin;\n+\t/* hostMisoPortPin:\tSPI MISO port (bits 7:5) and pins (bits 4:0) */\n+\tuint8_t hostMisoPortPin;\n+\t/* hostMosiPortPin:\tSPI MOSI port (bits 7:5) and pins (bits 4:0) */\n+\tuint8_t hostMosiPortPin;\n+\t/* hostSselPortPin:\tSPI SEL port (bits 7:5) and pins (bits 4:0) */\n+\tuint8_t hostSselPortPin;\n+\t/* hostSckPortPin:\tSPI SCK port (bits 7:5) and pins (bits 4:0) */\n+\tuint8_t hostSckPortPin;\n+\t/* xorVal: XOR value of the 7 bytes above */\n+\tuint8_t xorVal;\n+\t/* CRC32 length and value fields */\n+\tuint32_t crc32_len;\n+\tuint32_t crc32_val;\n+\t/* Application image version number */\n+\tuint32_t version;\n+} PINTABLE_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PINTAB_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/pll_5410x.h ./chip/inc/pll_5410x.h\n--- a_tnusFF/chip/inc/pll_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/pll_5410x.h\t2016-10-22 23:17:43.560840278 -0300\n@@ -0,0 +1,305 @@\n+/*\n+ * @brief LPC5410X PLL driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PLL_5410X_H_\n+#define __PLL_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup PLL_5410X CHIP: LPC5410X PLL Driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * The PLL in the LPC5410x is flexible, but can be complex to use. This driver\n+ * provides functions to help setup and use the PLL in it's various supported\n+ * modes.<br>\n+ *\n+ * This driver does not alter PLL clock source or system clocks outside the\n+ * PLL (like the main clock source) that may be referenced from the PLL. It\n+ * may optionally setup system voltages, wait for PLL lock, and power cycle\n+ * the PLL during setup based on setup flags.\n+ *\n+ * The driver works by first generating a PLL setup structure from a desired\n+ * PLL configuration structure. The PLL setup structure is then passed to the\n+ * PLL setup function to setup the PLL. In a user spplication, the PLL setup\n+ * structure can be pre-populated with PLL setup data to avoid using the PLL\n+ * configuration structure (or multiple PLL setup structures can be used to\n+ * more dynamically control PLL output rate).\n+ *\n+ * <b>How to use this driver</b><br>\n+   @verbatim\n+   // Setup PLL configuration\n+   PLL_CONFIG_T pllConfig = {\n+    75000000,\t\t// desiredRate = 75MHz\n+    0,\t\t\t\t// InputRate = 0Hz (not used)\n+    0\t\t\t\t// No flags, function will determine best setup to get closest rate\n+   };\n+\n+   // Get closest PLL setup to get the desired configuration\n+   PLL_SETUP_T pllSetup;\n+   uint32_t actualPllRate;\n+   PLL_ERROR_T pllError;\n+   pllError = Chip_Clock_SetupPLLData(&pllConfig, &pllSetup, &actualPllRate);\n+   if (pllError != PLL_ERROR_SUCCESS) {\n+    printf(\"PLL setup error #%x\\r\\n\", (uint32_t) pllError);\n+    while (1);\n+   }\n+   else {\n+    printf(\"PLL config successful, actual config rate = %uHz\\r\\n\", actualPllRate);\n+   }\n+\n+   // Make sure main system clock is not using PLL, as the PLL setup\n+   // function will power off and optionally power on the PLL\n+   Chip_Clock_SetMainClockSource(SYSCON_MAINCLKSRC_IRC);\n+\n+   // Setup PLL source\n+   Chip_Clock_SetSystemPLLSource(SYSCON_PLLCLKSRC_IRC);\n+\n+   // Now to apply the configuration to the PLL\n+   pllSetup.flags = PLL_SETUPFLAG_WAITLOCK;\n+   Chip_Clock_SetupSystemPLLPrec(&pllSetup);\n+\n+   // Switch main system clock to PLL\n+   Chip_Clock_SetMainClockSource(SYSCON_MAINCLKSRC_PLLOUT);\n+   @endverbatim\n+ *\n+ * @{\n+ */\n+\n+/**\n+ * Clock sources for system PLLs\n+ */\n+typedef enum CHIP_SYSCON_PLLCLKSRC {\n+\tSYSCON_PLLCLKSRC_IRC = 0,\t\t/*!< Internal oscillator */\n+\tSYSCON_PLLCLKSRC_CLKIN,\t\t\t/*!< External clock input pin */\n+\tSYSCON_PLLCLKSRC_WDTOSC,\t\t/*!< WDT oscillator */\n+\tSYSCON_PLLCLKSRC_RTC,\t\t\t/*!< RTC 32KHz oscillator */\n+} CHIP_SYSCON_PLLCLKSRC_T;\n+\n+/**\n+ * @brief\tSet System PLL clock source\n+ * @param\tsrc\t: Clock source for system PLL\n+ * @return\tNothing\n+ * @note\tThe PLL should be pwoered down prior to changing the source.\n+ */\n+__STATIC_INLINE void Chip_Clock_SetSystemPLLSource(CHIP_SYSCON_PLLCLKSRC_T src)\n+{\n+\tLPC_SYSCON->SYSPLLCLKSEL = (uint32_t) src;\n+}\n+\n+/**\n+ * @brief\tReturn System PLL input clock rate\n+ * @return\tSystem PLL input clock rate\n+ */\n+uint32_t Chip_Clock_GetSystemPLLInClockRate(void);\n+\n+/**\n+ * @brief\tReturn System PLL output clock rate\n+ * @param\trecompute\t: Forces a PLL rate recomputation if true\n+ * @return\tSystem PLL output clock rate\n+ * @note\tThe PLL rate is cached in the driver in a variable as\n+ * the rate computation function can take some time to perform. It\n+ * is recommended to use 'false' with the 'recompute' parameter.\n+ */\n+uint32_t Chip_Clock_GetSystemPLLOutClockRate(bool recompute);\n+\n+/**\n+ * @brief\tEnables and disables PLL bypass mode\n+ * @brief\tbypass\t: true to bypass PLL (PLL output = PLL input, false to disable bypass\n+ * @return\tSystem PLL output clock rate\n+ */\n+void Chip_Clock_SetBypassPLL(bool bypass);\n+\n+/**\n+ * @brief\tCheck if PLL is locked or not\n+ * @return\ttrue if the PLL is locked, false if not locked\n+ */\n+__STATIC_INLINE bool Chip_Clock_IsSystemPLLLocked(void)\n+{\n+\treturn (bool) ((LPC_SYSCON->SYSPLLSTAT & 1) != 0);\n+}\n+\n+/** @brief PLL configuration structure flags for 'flags' field\n+ * These flags control how the PLL configuration function sets up the PLL setup structure.<br>\n+ *\n+ * When the PLL_CONFIGFLAG_USEINRATE flag is selected, the 'InputRate' field in the\n+ * configuration structure must be assigned with the expected PLL frequency. If the\n+ * PLL_CONFIGFLAG_USEINRATE is not used, 'InputRate' is ignored in the configuration\n+ * function and the driver will determine the PLL rate from the currently selected\n+ * PLL source. This flag might be used to configure the PLL input clock more accurately\n+ * when using the WDT oscillator or a more dyanmic CLKIN source.<br>\n+ *\n+ * When the PLL_CONFIGFLAG_FORCENOFRACT flag is selected, the PLL hardware for the\n+ * automatic bandwidth selection, Spread Spectrum (SS) support, and fractional M-divider\n+ * are not used.<br>\n+ */\n+#define PLL_CONFIGFLAG_USEINRATE    (1 << 0)\t/*!< Flag to use InputRate in PLL configuration structure for setup */\n+#define PLL_CONFIGFLAG_FORCENOFRACT (1 << 2)\t/*!< Force non-fractional output mode, PLL output will not use the fractional, automatic bandwidth, or SS hardware */\n+\n+/** @brief PLL Spread Spectrum (SS) Programmable modulation frequency\n+ * See (MF) field in the SYSPLLSSCTRL1 register in the UM.\n+ */\n+typedef enum {\n+\tSS_MF_512 = (0 << 20),\t\t/*!< Nss = 512 (fm  3.9 - 7.8 kHz) */\n+\tSS_MF_384 = (1 << 20),\t\t/*!< Nss = 384 (fm  5.2 - 10.4 kHz) */\n+\tSS_MF_256 = (2 << 20),\t\t/*!< Nss = 256 (fm  7.8 - 15.6 kHz) */\n+\tSS_MF_128 = (3 << 20),\t\t/*!< Nss = 128 (fm  15.6 - 31.3 kHz) */\n+\tSS_MF_64  = (4 << 20),\t\t/*!< Nss = 64 (fm  32.3 - 64.5 kHz) */\n+\tSS_MF_32  = (5 << 20),\t\t/*!< Nss = 32 (fm  62.5- 125 kHz) */\n+\tSS_MF_24  = (6 << 20),\t\t/*!< Nss = 24 (fm  83.3- 166.6 kHz) */\n+\tSS_MF_16  = (7 << 20)\t\t/*!< Nss = 16 (fm  125- 250 kHz) */\n+} SS_PROGMODFM_T;\n+\n+/** @brief PLL Spread Spectrum (SS) Programmable frequency modulation depth\n+ * See (MR) field in the SYSPLLSSCTRL1 register in the UM.\n+ */\n+typedef enum {\n+\tSS_MR_K0   = (0 << 23),\t\t/*!< k = 0 (no spread spectrum) */\n+\tSS_MR_K1   = (1 << 23),\t\t/*!< k = 1 */\n+\tSS_MR_K1_5 = (2 << 23),\t\t/*!< k = 1.5 */\n+\tSS_MR_K2   = (3 << 23),\t\t/*!< k = 2 */\n+\tSS_MR_K3   = (4 << 23),\t\t/*!< k = 3 */\n+\tSS_MR_K4   = (5 << 23),\t\t/*!< k = 4 */\n+\tSS_MR_K6   = (6 << 23),\t\t/*!< k = 6 */\n+\tSS_MR_K8   = (7 << 23)\t\t/*!< k = 8 */\n+} SS_PROGMODDP_T;\n+\n+/** @brief PLL Spread Spectrum (SS) Modulation waveform control\n+ * See (MC) field in the SYSPLLSSCTRL1 register in the UM.<br>\n+ * Compensation for low pass filtering of the PLL to get a triangular\n+ * modulation at the output of the PLL, giving a flat frequency spectrum.\n+ */\n+typedef enum {\n+\tSS_MC_NOC  = (0 << 26),\t\t/*!< no compensation */\n+\tSS_MC_RECC = (2 << 26),\t\t/*!< recommended setting */\n+\tSS_MC_MAXC = (3 << 26),\t\t/*!< max. compensation */\n+} SS_MODWVCTRL_T;\n+\n+/** @brief PLL configuration structure\n+ * This structure can be used to configure the settings for a PLL\n+ * setup structure. Fill in the desired configuration for the PLL\n+ * and call the PLL setup function to fill in a PLL setup structure.\n+ */\n+typedef struct {\n+\tuint32_t        desiredRate;\t/*!< Desired PLL rate in Hz */\n+\tuint32_t        InputRate;\t\t/*!< PLL input clock in Hz, only used if PLL_CONFIGFLAG_USEINRATE flag is set */\n+\tuint32_t        flags;\t\t\t/*!< PLL configuration flags, Or'ed value of PLL_CONFIGFLAG_* definitions */\n+\tSS_PROGMODFM_T  ss_mf;\t\t\t/*!< SS Programmable modulation frequency, only applicable when not using PLL_CONFIGFLAG_FORCENOFRACT flag */\n+\tSS_PROGMODDP_T  ss_mr;\t\t\t/*!< SS Programmable frequency modulation depth, only applicable when not using PLL_CONFIGFLAG_FORCENOFRACT flag */\n+\tSS_MODWVCTRL_T  ss_mc;\t\t\t/*!< SS Modulation waveform control, only applicable when not using PLL_CONFIGFLAG_FORCENOFRACT flag */\n+\tbool            mfDither;\t\t/*!< false for fixed modulation frequency or true for dithering, only applicable when not using PLL_CONFIGFLAG_FORCENOFRACT flag */\n+} PLL_CONFIG_T;\n+\n+/** @brief PLL setup structure flags for 'flags' field\n+ * These flags control how the PLL setup function sets up the PLL\n+ */\n+#define PLL_SETUPFLAG_POWERUP       (1 << 0)\t/*!< Setup will power on the PLL after setup */\n+#define PLL_SETUPFLAG_WAITLOCK      (1 << 1)\t/*!< Setup will wait for PLL lock, implies the PLL will be pwoered on */\n+#define PLL_SETUPFLAG_ADGVOLT       (1 << 2)\t/*!< Optimize system voltage for the new PLL rate */\n+\n+/** @brief PLL setup structure\n+ * This structure can be used to pre-build a PLL setup configuration\n+ * at run-time and quickly set the PLL to the configuration. It can be\n+ * populated with the PLL setup function. If powering up or waiting\n+ * for PLL lock, the PLL input clock source should be configured prior\n+ * to PLL setup.\n+ */\n+typedef struct {\n+\tuint32_t    flags;\t\t\t\t/*!< PLL setup flags, Or'ed value of PLL_SETUPFLAG_* definitions */\n+\tuint32_t    SYSPLLCTRL;\t\t\t/*!< PLL control register */\n+\tuint32_t    SYSPLLNDEC;\t\t\t/*!< PLL NDEC register */\n+\tuint32_t    SYSPLLPDEC;\t\t\t/*!< PLL PDEC register */\n+\tuint32_t    SYSPLLSSCTRL[2];\t/*!< PLL SSCTL registers */\n+} PLL_SETUP_T;\n+\n+/** @brief PLL status definitions\n+ */\n+typedef enum {\n+\tPLL_ERROR_SUCCESS = 0,\t\t\t/*!< PLL operation was successful */\n+\tPLL_ERROR_OUTPUT_TOO_LOW,\t\t/*!< PLL output rate request was too low */\n+\tPLL_ERROR_OUTPUT_TOO_HIGH,\t\t/*!< PLL output rate request was too high */\n+\tPLL_ERROR_INPUT_TOO_LOW,\t\t/*!< PLL input rate is too low */\n+\tPLL_ERROR_INPUT_TOO_HIGH,\t\t/*!< PLL input rate is too high */\n+\tPLL_ERROR_OUTSIDE_INTLIMIT\t\t/*!< Requested output rate isn't possible */\n+} PLL_ERROR_T;\n+\n+/**\n+ * @brief\tReturn System PLL output clock rate from setup structure\n+ * @param\tpSetup\t: Pointer to a PLL setup structure\n+ * @return\tSystem PLL output clock rate the setup structure will generate\n+ */\n+uint32_t Chip_Clock_GetSystemPLLOutFromSetup(PLL_SETUP_T *pSetup);\n+\n+/**\n+ * @brief\tSet PLL output based on the passed PLL setup data\n+ * @param\tpControl\t: Pointer to populated PLL control structure to generate setup with\n+ * @param\tpSetup\t\t: Pointer to PLL setup structure to be filled\n+ * @return\tPLL_ERROR_SUCCESS on success, or PLL setup error code\n+ * @note\tActual frequency for setup may vary from the desired frequency based on the\n+ * accuracy of input clocks, rounding, non-fractional PLL mode, etc.\n+ */\n+PLL_ERROR_T Chip_Clock_SetupPLLData(PLL_CONFIG_T *pControl, PLL_SETUP_T *pSetup);\n+\n+/**\n+ * @brief\tSet PLL output from PLL setup structure (precise frequency)\n+ * @param\tpSetup\t: Pointer to populated PLL setup structure\n+ * @return\tPLL_ERROR_SUCCESS on success, or PLL setup error code\n+ * @note\tThis function will power off the PLL, setup the PLL with the\n+ * new setup data, and then optionally powerup the PLL, wait for PLL lock,\n+ * and adjust system voltages to the new PLL rate. The function will not\n+ * alter any source clocks (ie, main systen clock) that may use the PLL,\n+ * so these should be setup prior to and after exiting the function.\n+ */\n+PLL_ERROR_T Chip_Clock_SetupSystemPLLPrec(PLL_SETUP_T *pSetup);\n+\n+/**\n+ * @brief\tSet PLL output based on the multiplier and input frequency\n+ * @param\tmultiply_by\t: multiplier\n+ * @param\tinput_freq\t: Clock input frequency of the PLL\n+ * @return\tNothing\n+ * @note\tUnlike the Chip_Clock_SetupSystemPLLPrec() function, this\n+ * function does not disable or enable PLL power, wait for PLL lock,\n+ * or adjust system voltages. These must be done in the application.\n+ * The function will not alter any source clocks (ie, main systen clock)\n+ * that may use the PLL, so these should be setup prior to and after\n+ * exiting the function.\n+ */\n+void Chip_Clock_SetupSystemPLL(uint32_t multiply_by, uint32_t input_freq);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PLL_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/pmu_5410x.h ./chip/inc/pmu_5410x.h\n--- a_tnusFF/chip/inc/pmu_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/pmu_5410x.h\t2016-10-22 23:17:43.560840278 -0300\n@@ -0,0 +1,184 @@\n+/*\n+ * @brief LPC5410X Power Management declarations and functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PMU_5410X_H_\n+#define __PMU_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup PMU_5410X CHIP: LPC5410X Power Management declarations and functions\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief PMU register block structure\n+ * @note Most of the PMU support is handled by the PMU library.\n+ */\n+typedef struct {\n+\t__I  uint32_t RESERVED0[4];\n+\t__I  uint32_t RESERVED1[4];\n+\t__I  uint32_t RESERVED2[4];\n+\t__I  uint32_t RESERVED3[4];\n+\t__I  uint32_t RESERVED4;\n+\t__IO uint32_t BODCTRL;\n+\t__I  uint32_t RESERVED5;\n+\t__I  uint32_t RESERVED6;\n+\t__IO uint32_t DPDWAKESRC;\n+} LPC_PMU_T;\n+\n+/**\n+ * Brown-out detector reset level\n+ */\n+typedef enum {\n+\tPMU_BODRSTLVL_0,\t/*!< Brown-out reset at ~1.5v */\n+\tPMU_BODRSTLVL_1_50V = PMU_BODRSTLVL_0,\n+\tPMU_BODRSTLVL_1,\t/*!< Brown-out reset at ~1.85v */\n+\tPMU_BODRSTLVL_1_85V = PMU_BODRSTLVL_1,\n+\tPMU_BODRSTLVL_2,\t/*!< Brown-out reset at ~2.0v */\n+\tPMU_BODRSTLVL_2_00V = PMU_BODRSTLVL_2,\n+\tPMU_BODRSTLVL_3,\t/*!< Brown-out reset at ~2.3v */\n+\tPMU_BODRSTLVL_2_30V = PMU_BODRSTLVL_3\n+} CHIP_PMU_BODRSTLVL_T;\n+\n+/**\n+ * Brown-out detector interrupt level\n+ */\n+typedef enum CHIP_PMU_BODRINTVAL {\n+\tPMU_BODINTVAL_LVL0,\t/*!< Brown-out interrupt at ~2.05v */\n+\tPMU_BODINTVAL_2_05v = PMU_BODINTVAL_LVL0,\n+\tPMU_BODINTVAL_LVL1,\t/*!< Brown-out interrupt at ~2.45v */\n+\tPMU_BODINTVAL_2_45v = PMU_BODINTVAL_LVL1,\n+\tPMU_BODINTVAL_LVL2,\t/*!< Brown-out interrupt at ~2.75v */\n+\tPMU_BODINTVAL_2_75v = PMU_BODINTVAL_LVL2,\n+\tPMU_BODINTVAL_LVL3,\t/*!< Brown-out interrupt at ~3.05v */\n+\tPMU_BODINTVAL_3_05v = PMU_BODINTVAL_LVL3\n+} CHIP_PMU_BODRINTVAL_T;\n+\n+/**\n+ * brown-out detection reset status (in BODCTRL register)\n+ */\n+#define PMU_BOD_RST     (1 << 6)\n+/**\n+ * brown-out detection interrupt status (in BODCTRL register)\n+ */\n+#define PMU_BOD_INT     (1 << 7)\n+\n+/**\n+ * @brief\tSet brown-out detection interrupt and reset levels\n+ * @param\trstlvl\t: Brown-out detector reset level\n+ * @param\tintlvl\t: Brown-out interrupt level\n+ * @return\tNothing\n+ * @note\tBrown-out detection reset will be disabled upon exiting this function.\n+ * Use Chip_PMU_EnableBODReset() to re-enable.\n+ */\n+__STATIC_INLINE void Chip_PMU_SetBODLevels(CHIP_PMU_BODRSTLVL_T rstlvl,\n+\t\t\t\t\t\t\t\t\t\t   CHIP_PMU_BODRINTVAL_T intlvl)\n+{\n+\tLPC_PMU->BODCTRL = ((uint32_t) rstlvl) | (((uint32_t) intlvl) << 2);\n+}\n+\n+/**\n+ * @brief\tEnable brown-out detection reset\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PMU_EnableBODReset(void)\n+{\n+\tLPC_PMU->BODCTRL |= (1 << 4);\n+}\n+\n+/**\n+ * @brief\tDisable brown-out detection reset\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PMU_DisableBODReset(void)\n+{\n+\tLPC_PMU->BODCTRL &= ~(1 << 4);\n+}\n+\n+/**\n+ * @brief\tEnable brown-out detection interrupt\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PMU_EnableBODInt(void)\n+{\n+\tLPC_PMU->BODCTRL |= (1 << 5);\n+}\n+\n+/**\n+ * @brief\tDisable brown-out detection interrupt\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PMU_DisableBODInt(void)\n+{\n+\tLPC_PMU->BODCTRL &= ~(1 << 5);\n+}\n+\n+/**\n+ * Deep power down reset sources\n+ */\n+#define PMU_DPDWU_RESET     (1 << 0)\t/*!< Deep powerdown wakeup by reset pin */\n+#define PMU_DPDWU_RTC       (1 << 1)\t/*!< Deep powerdown wakeup by RTC */\n+#define PMU_DPDWU_BODRESET  (1 << 2)\t/*!< Deep powerdown wakeup by brown out reset*/\n+#define PMU_DPDWU_BODINTR   (1 << 3)\t/*!< Deep powerdown wakeup by brown out interrupt */\n+\n+/**\n+ * @brief\tReturn wakeup sources from deep power down mode\n+ * @return\tDeep power down mode wakeup sources\n+ * @note\tMask the return value with a PMU_DPDWU_* value to determine\n+ * the wakeup source from deep power down.\n+ */\n+__STATIC_INLINE uint32_t Chip_PMU_GetDPDWUSource(void)\n+{\n+\treturn LPC_PMU->DPDWAKESRC;\n+}\n+\n+/**\n+ * @brief\tClear a deep power down mode wakeup source\n+ * @param\tmask\t: Or'ed PMU_DPDWU_* values to clear\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_PMU_ClearDPDWUSource(uint32_t mask)\n+{\n+\tLPC_PMU->DPDWAKESRC = mask;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PMU_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/power_lib_5410x.h ./chip/inc/power_lib_5410x.h\n--- a_tnusFF/chip/inc/power_lib_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/power_lib_5410x.h\t2016-10-22 23:17:43.564840278 -0300\n@@ -0,0 +1,281 @@\n+/*\n+ * @brief LPC5410x Power library functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __POWER_LIB_5410X_H_\n+#define __POWER_LIB_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup POWER_LIBRARY_5410X CHIP: LPC5410X Power LIBRARY functions\n+ * The power library provides functions to control system power usage and\n+ * place the device into low power modes.<br>\n+ *\n+ * <b>Clock shutdown in sleep and power down modes</b><br>\n+ * When using the Chip_POWER_EnterPowerMode() function, system clocks are\n+ * shutdown based on the selected sleep or power down mode and the device\n+ * version being used. The following list details which clocks are shut down\n+ * in which modes for which device versions. You can keep a clock enabled\n+ * for a sleep or power down mode by enabling it in the 'peripheral_ctrl'\n+ * field in the Chip_POWER_EnterPowerMode() function.<br>\n+ *\n+ * Mode: Sleep<br>\n+ * No clocks are disabled for any chip version.<br>\n+ *\n+ * Mode: Deep sleep<br>\n+ * SYSCON_PDRUNCFG_PD_IRC_OSC<br>\n+ * SYSCON_PDRUNCFG_PD_IRC<br>\n+ * SYSCON_PDRUNCFG_PD_FLASH (v17.1 and later only)<br>\n+ * SYSCON_PDRUNCFG_PD_BOD_INTR<br>\n+ * SYSCON_PDRUNCFG_PD_ADC0<br>\n+ * SYSCON_PDRUNCFG_PD_ROM<br>\n+ * SYSCON_PDRUNCFG_PD_VDDA_ENA<br>\n+ * SYSCON_PDRUNCFG_PD_SYS_PLL<br>\n+ * SYSCON_PDRUNCFG_PD_VREFP<br>\n+ *\n+ * Mode: Power down<br>\n+ * SYSCON_PDRUNCFG_PD_IRC_OSC<br>\n+ * SYSCON_PDRUNCFG_PD_IRC<br>\n+ * SYSCON_PDRUNCFG_PD_FLASH (v17.1 and later only)<br>\n+ * SYSCON_PDRUNCFG_PD_BOD_RST<br>\n+ * SYSCON_PDRUNCFG_PD_BOD_INTR<br>\n+ * SYSCON_PDRUNCFG_PD_ADC0<br>\n+ * SYSCON_PDRUNCFG_PD_SRAM0B<br>\n+ * SYSCON_PDRUNCFG_PD_SRAM1<br>\n+ * SYSCON_PDRUNCFG_PD_SRAM2<br>\n+ * SYSCON_PDRUNCFG_PD_ROM<br>\n+ * SYSCON_PDRUNCFG_PD_VDDA_ENA<br>\n+ * SYSCON_PDRUNCFG_PD_WDT_OSC<br>\n+ * SYSCON_PDRUNCFG_PD_SYS_PLL<br>\n+ * SYSCON_PDRUNCFG_PD_VREFP<br>\n+ * SYSCON_PDRUNCFG_PD_32K_OSC<br>\n+ *\n+ * Mode: Deep power down<br>\n+ * All clocks are disabled for all chip versions.<br>\n+ *\n+ * If you are using a peripheral was a wakeup source for a power down mode,\n+ * it needs to be kept active with the call to Chip_POWER_EnterPowerMode(). For\n+ * example, if you are using the RTC to wake the system up from power down mode,\n+ * the 32KHz RTC oscillator needs to remain active, so the power down call would\n+ * look like this:<br>\n+ * Chip_POWER_EnterPowerMode(POWER_POWER_DOWN, SYSCON_PDRUNCFG_PD_32K_OSC);<br>\n+ * If your application uses internal RAM beyond the first 8K, you will also need\n+ * to prevent power down of the IRAM like this:<br>\n+ * Chip_POWER_EnterPowerMode(POWER_POWER_DOWN, (SYSCON_PDRUNCFG_PD_32K_OSC | SYSCON_PDRUNCFG_PD_SRAM0A));<br>\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+// Saved in case they need to be re-installed publicly later\n+/* Power domains */\n+typedef enum  {\n+\tPOWER_VD1 = 0x0,\n+\tPOWER_VD2 = 0x1,\n+\tPOWER_VD3 = 0x2,\n+\tPOWER_VD8 = 0x3\n+} POWER_DOMAIN_T;\n+\n+/* Power coarse voltage levels */\n+typedef enum {\n+\tPOWER_V0650 = 0x0,\n+\tPOWER_V0700 = 0x1,\n+\tPOWER_V0750 = 0x2,\n+\tPOWER_V0800 = 0x3,\n+\tPOWER_V0850 = 0x4,\n+\tPOWER_V0900 = 0x5,\n+\tPOWER_V0950 = 0x6,\n+\tPOWER_V1000 = 0x7,\n+\tPOWER_V1050 = 0x8,\n+\tPOWER_V1100 = 0x9,\n+\tPOWER_V1150 = 0xA,\n+\tPOWER_V1200 = 0xB,\n+\tPOWER_V1250 = 0xC,\n+\tPOWER_V1300 = 0xD,\n+\tPOWER_V1350 = 0xE,\n+\tPOWER_V1400 = 0xF\n+}  POWER_VOLTAGELEVEL_T;\n+\n+/* Power fine voltage levels */\n+typedef enum {\n+\tPOWER_FINE_V_NONE = 0x0,\n+\tPOWER_FINE_V_M025 = 0x1,\n+\tPOWER_FINE_V_P025 = 0x3\n+} POWER_FINEVOLTAGELEVEL_T;\n+\n+/* Low power voltage selection */\n+typedef enum {\n+\tPOWER_LP_V0700 = 0x0,\n+\tPOWER_LP_V1200 = 0x1\n+}  POWER_LPVOLTAGELEVEL_T;\n+\n+/* Low power fine voltage selection */\n+typedef enum {\n+\tPOWER_FINE_LP_V_M050  = 0x0,\n+\tPOWER_FINE_LP_V_NONE  = 0x1,\n+\tPOWER_FINE_LP_V_P050  = 0x2,\n+\tPOWER_FINE_LP_V_P100  = 0x3\n+} POWER_LPFINEVOLTAGELEVEL_T;\n+\n+/* 'mode' input values to set_voltage ROM function */\n+typedef enum {\n+\tPOWER_LOW_POWER_MODE = 0,\n+\tPOWER_BALANCED_MODE,\n+\tPOWER_HIGH_PERFORMANCE\n+} PERF_MODE_T;\n+\n+/* 'mode' input values to power_mode_configure ROM function */\n+typedef enum {\n+\tPOWER_SLEEP = 0,\n+\tPOWER_DEEP_SLEEP,\n+\tPOWER_POWER_DOWN,\n+\tPOWER_DEEP_POWER_DOWN\n+} POWER_MODE_T;\n+\n+/**\n+ * @brief\tSets up the System PLL given the PLL input frequency and feedback multiplier\n+ * @param\tmultiply_by\t: PLL multiplier, minimum of 1, maximum of 16\n+ * @param\tinput_freq\t: Input frequency into the PLL\n+ * @return\tLPC_OK on success, or an error code (see error.h)\n+ */\n+uint32_t Chip_POWER_SetPLL(uint32_t multiply_by, uint32_t input_freq);\n+\n+/**\n+ * @brief\tTurn flash power on / off\n+ * @param\tnew_power_mode\t: 0 = power off, != 0 = power on\n+ * @return\tnothing\n+ */\n+void Chip_POWER_SetFLASHPower(uint32_t new_power_mode);\n+\n+/**\n+ * @brief\tSet optimal system voltage based on passed system frequency\n+ * @param\tmode\t\t\t: Power mode\n+ * @param\tdesired_freq\t: System (CPU) frequency\n+ * @return\tLPC_OK on success, or an error code (see error.h)\n+ * @note\tThis function will adjust the system voltages to the lowest\n+ * levels that will support the passed mode and CPU frequency.\n+ */\n+uint32_t Chip_POWER_SetVoltage(PERF_MODE_T mode, uint32_t desired_freq);\n+\n+/**\n+ * @brief\tSet voltage levels on individual voltage domains\n+ * @param\tdomain\t: Power domain\n+ * @param\tlevel\t: Coarse voltage level\n+ * @param\tflevel\t: Fine voltage level\n+ * @return\tNothing\n+ */\n+uint32_t Chip_POWER_SetVDLevel(POWER_DOMAIN_T domain, POWER_VOLTAGELEVEL_T level, POWER_FINEVOLTAGELEVEL_T flevel);\n+\n+/**\n+ * @brief\tSet low-power voltage levels for LP mode\n+ * @return\tNothing\n+ */\n+void Chip_POWER_SetLPVDLevel(void);\n+\n+/**\n+ * @brief\tEnters the selected power state\n+ * @param\tmode\t\t\t: Power mode\n+ * @param\tperipheral_ctrl\t: Peripherals that will remain powered up in the power state\n+ * @return\tNothing\n+ * @note\tThe 'peripheral_ctrl' field is a bitmask of bits from the\n+ * PDRUNCFG register (SYSCON_PDRUNCFG_PD_*) that describe which\n+ * peripherals can wake up the chip from the power state. These\n+ * peripherals are not powered down during the power state.<br>\n+ */\n+void Chip_POWER_EnterPowerMode(POWER_MODE_T mode, uint32_t peripheral_ctrl);\n+\n+/**\n+ * @brief\tEnters the selected power state (Relocated)\n+ * @param\tmode\t\t\t: Power mode\n+ * @param\tperipheral_ctrl\t: Peripherals that will remain powered up in the power state\n+ * @param\trelMem\t\t\t: Address of the memory where relocated power function is [see Chip_POWER_RelocAPI()]\n+ * @return\tNothing\n+ * @note\tThis API is to be used when the powerdown mode [ @a mode is #POWER_POWER_DOWN ] is to be entered from flash.\n+ * Since powerdown mode turns off the flash memory the powerdown API, if executed from flash, can be relocated to RAM\n+ * using Chip_POWER_RelocAPI(), and powerdown mode can be entered using this API. @a relMem should be the pointer to the\n+ * memory used when calling Chip_POWER_RelocAPI(). For all power modes other than\n+ * #POWER_POWER_DOWN this API works exactly same as Chip_POWER_EnterPowerMode() API and @a relMem can be 0.<br>\n+ */\n+void Chip_POWER_EnterPowerModeReloc(POWER_MODE_T mode, uint32_t peripheral_ctrl, uint32_t relMem);\n+\n+/**\n+ * @brief\tRelocate the PowerDown code to given memory\n+ *\n+ * When executing from flash, entering PowerDown mode is not possible as the PowerDown mode turns\n+ * off the flash. This function will relocate the powerdown code to memory allocated in RAM and this\n+ * relocated function can be invoked using Chip_POWER_EnterPowerModeReloc() hence entering powerdown\n+ * mode from RAM and let the flash power be turned off.\n+ *\n+ * @param\trelMem\t: Memory where the function to be relocated [Needs to be word aligned]\n+ * @param\tsize\t: Size of the memory in Bytes\n+ * @return\tNothing\n+ */\n+void Chip_POWER_RelocAPI(uint32_t *relMem, uint32_t size);\n+\n+/* ROM versions */\n+#define LPC5410X_ROMVER_0   (0x1100)\n+#define LPC5410X_ROMVER_1   (0x1101)\n+#define LPC5410X_ROMVER_2   (0x1102)\n+\n+/**\n+ * @brief\tFast powerdown for IRAM based applications\n+ * @param\tperipheral_ctrl\t: Peripherals that will remain powered up in the power down state\n+ * @return\tNothing\n+ * @note\tThe 'peripheral_ctrl' field is a bitmask of bits from the\n+ * PDRUNCFG register (SYSCON_PDRUNCFG_PD_*) that describe which\n+ * peripherals can wake up the chip from the power state. These\n+ * peripherals are not powered down during the power state.<br>\n+ * This function should only be used when not executing code in FLASH.\n+ * It will power down FLASH and leave it powered down on exit, so all\n+ * code should be placed in IRAM prior to calling. It provides a quicker\n+ * wakeup response than the default powerdown function\n+ * (Chip_POWER_EnterPowerMode(POWER_POWER_DOWN, ...)).\n+ */\n+void Chip_POWER_EnterPowerModeIramOnly(uint32_t peripheral_ctrl);\n+\n+/**\n+ * @brief\tReturn ROM version\n+ * @return\tROM version\n+ * @note\tWill return one of the following version numbers:<br>\n+ * (0x1100) for v17.0 ROMs.<br>\n+ * (0x1101) for v17.1 ROMs.<br>\n+ * (0x1102) for v17.2 ROMs.<br>\n+ */\n+uint32_t Chip_POWER_GetROMVersion(void);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __POWER_LIB_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/ring_buffer.h ./chip/inc/ring_buffer.h\n--- a_tnusFF/chip/inc/ring_buffer.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/ring_buffer.h\t2016-10-22 23:17:43.564840278 -0300\n@@ -0,0 +1,194 @@\n+/*\n+ * @brief Common ring buffer support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RING_BUFFER_H_\n+#define __RING_BUFFER_H_\n+\n+#include \"lpc_types.h\"\n+#include \"cmsis.h\"\n+\n+/** @defgroup Ring_Buffer CHIP: Simple ring buffer implementation\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/**\n+ * @brief Ring buffer structure\n+ */\n+typedef struct {\n+\tvoid *data;\n+\tint count;\n+\tint itemSz;\n+\tuint32_t head;\n+\tuint32_t tail;\n+\tvoid *(*copy)(void *dst, const void *src, uint32_t len);\n+} RINGBUFF_T;\n+\n+/**\n+ * @def\t\tRB_VHEAD(rb)\n+ * volatile typecasted head index\n+ */\n+#define RB_VHEAD(rb)              (*(volatile uint32_t *) &(rb)->head)\n+\n+/**\n+ * @def\t\tRB_VTAIL(rb)\n+ * volatile typecasted tail index\n+ */\n+#define RB_VTAIL(rb)              (*(volatile uint32_t *) &(rb)->tail)\n+\n+/**\n+ * @brief\tInitialize ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer to initialize\n+ * @param\tbuffer\t\t: Pointer to buffer to associate with RingBuff\n+ * @param\titemSize\t: Size of each buffer item size\n+ * @param\tcount\t\t: Size of ring buffer\n+ * @param\tcpyFunc\t\t: Call-back function that copies data (if NULL library @a memcpy will be used)\n+ * @note\tMemory pointed by @a buffer must have correct alignment of\n+ *          @a itemSize, and @a count must be a power of 2 and must at\n+ *          least be 2 or greater. @a len of the @a cpyFunc is in bytes.\n+ * @return\tNothing\n+ */\n+int RingBuffer_Init(RINGBUFF_T *RingBuff,\n+\t\t\t\t\tvoid *buffer,\n+\t\t\t\t\tint itemSize,\n+\t\t\t\t\tint count,\n+\t\t\t\t\tvoid *(*cpyFunc)(void *dst, const void *src, uint32_t len));\n+\n+/**\n+ * @brief\tResets the ring buffer to empty\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void RingBuffer_Flush(RINGBUFF_T *RingBuff)\n+{\n+\tRingBuff->head = RingBuff->tail = 0;\n+}\n+\n+/**\n+ * @brief\tReturn size the ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @return\tSize of the ring buffer in bytes\n+ */\n+__STATIC_INLINE int RingBuffer_GetSize(RINGBUFF_T *RingBuff)\n+{\n+\treturn RingBuff->count;\n+}\n+\n+/**\n+ * @brief\tReturn number of items in the ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @return\tNumber of items in the ring buffer\n+ */\n+__STATIC_INLINE int RingBuffer_GetCount(RINGBUFF_T *RingBuff)\n+{\n+\treturn RB_VHEAD(RingBuff) - RB_VTAIL(RingBuff);\n+}\n+\n+/**\n+ * @brief\tReturn number of free items in the ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @return\tNumber of free items in the ring buffer\n+ */\n+__STATIC_INLINE int RingBuffer_GetFree(RINGBUFF_T *RingBuff)\n+{\n+\treturn RingBuff->count - RingBuffer_GetCount(RingBuff);\n+}\n+\n+/**\n+ * @brief\tReturn number of items in the ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @return\t1 if the ring buffer is full, otherwise 0\n+ */\n+__STATIC_INLINE int RingBuffer_IsFull(RINGBUFF_T *RingBuff)\n+{\n+\treturn RingBuffer_GetCount(RingBuff) >= RingBuff->count;\n+}\n+\n+/**\n+ * @brief\tReturn empty status of ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @return\t1 if the ring buffer is empty, otherwise 0\n+ */\n+__STATIC_INLINE int RingBuffer_IsEmpty(RINGBUFF_T *RingBuff)\n+{\n+\treturn RB_VHEAD(RingBuff) == RB_VTAIL(RingBuff);\n+}\n+\n+/**\n+ * @brief\tInsert a single item into ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @param\tdata\t\t: pointer to item\n+ * @return\t1 when successfully inserted,\n+ *\t\t\t0 on error (Buffer not initialized using\n+ *\t\t\tRingBuffer_Init() or attempted to insert\n+ *\t\t\twhen buffer is full)\n+ */\n+int RingBuffer_Insert(RINGBUFF_T *RingBuff, const void *data);\n+\n+/**\n+ * @brief\tInsert an array of items into ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @param\tdata\t\t: Pointer to first element of the item array\n+ * @param\tnum\t\t\t: Number of items in the array\n+ * @return\tnumber of items successfully inserted,\n+ *\t\t\t0 on error (Buffer not initialized using\n+ *\t\t\tRingBuffer_Init() or attempted to insert\n+ *\t\t\twhen buffer is full)\n+ */\n+int RingBuffer_InsertMult(RINGBUFF_T *RingBuff, const void *data, int num);\n+\n+/**\n+ * @brief\tPop an item from the ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @param\tdata\t\t: Pointer to memory where popped item be stored\n+ * @return\t1 when item popped successfuly onto @a data,\n+ *          0 When error (Buffer not initialized using\n+ *          RingBuffer_Init() or attempted to pop item when\n+ *          the buffer is empty)\n+ */\n+int RingBuffer_Pop(RINGBUFF_T *RingBuff, void *data);\n+\n+/**\n+ * @brief\tPop an array of items from the ring buffer\n+ * @param\tRingBuff\t: Pointer to ring buffer\n+ * @param\tdata\t\t: Pointer to memory where popped items be stored\n+ * @param\tnum\t\t\t: Max number of items array @a data can hold\n+ * @return\tNumber of items popped onto @a data,\n+ *          0 on error (Buffer not initialized using RingBuffer_Init()\n+ *          or attempted to pop when the buffer is empty)\n+ */\n+int RingBuffer_PopMult(RINGBUFF_T *RingBuff, void *data, int num);\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __RING_BUFFER_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/ritimer_5410x.h ./chip/inc/ritimer_5410x.h\n--- a_tnusFF/chip/inc/ritimer_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/ritimer_5410x.h\t2016-10-22 23:17:43.564840278 -0300\n@@ -0,0 +1,249 @@\n+/*\n+ * @brief LPC5410x RITimer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RITIMER_5410X_H_\n+#define __RITIMER_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RITIMER_5410X CHIP: LPC5410X Repetitive Interrupt Timer driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief Repetitive Interrupt Timer register block structure\n+ */\n+typedef struct {\t\t\t\t/*!< RITIMER Structure */\n+\t__IO uint32_t  COMPVAL;\t\t/*!< Compare register */\n+\t__IO uint32_t  MASK;\t\t/*!< Mask register */\n+\t__IO uint32_t  CTRL;\t\t/*!< Control register */\n+\t__IO uint32_t  COUNTER;\t\t/*!< 32-bit counter */\n+\t__IO uint32_t  COMPVAL_H;\t/*!< Compare register, upper 16-bits */\n+\t__IO uint32_t  MASK_H;\t\t/*!< Compare register, upper 16-bits */\n+\t__I  uint32_t  reserved;\n+\t__IO uint32_t  COUNTER_H;\t/*!< Counter register, upper 16-bits */\n+} LPC_RITIMER_T;\n+\n+/*\n+ * @brief RITIMER register support bitfields and mask\n+ */\n+\n+/*\n+ * RIT control register\n+ */\n+/**\tSet by H/W when the counter value equals the masked compare value */\n+#define RIT_CTRL_INT    ((uint32_t) (1))\n+/** Set timer enable clear to 0 when the counter value equals the masked compare value  */\n+#define RIT_CTRL_ENCLR  ((uint32_t) _BIT(1))\n+/** Set timer enable on debug */\n+#define RIT_CTRL_ENBR   ((uint32_t) _BIT(2))\n+/** Set timer enable */\n+#define RIT_CTRL_TEN    ((uint32_t) _BIT(3))\n+\n+/**\n+ * @brief\tInitialize the RIT\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+void Chip_RIT_Init(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief\tShutdown the RIT\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+void Chip_RIT_DeInit(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief\tEnable Timer\n+ * @param\tpRITimer\t\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_Enable(LPC_RITIMER_T *pRITimer)\n+{\n+\tpRITimer->CTRL |= RIT_CTRL_TEN;\n+}\n+\n+/**\n+ * @brief\tDisable Timer\n+ * @param\tpRITimer\t\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_Disable(LPC_RITIMER_T *pRITimer)\n+{\n+\tpRITimer->CTRL &= ~RIT_CTRL_TEN;\n+}\n+\n+/**\n+ * @brief\tEnable timer debug\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_DebugEnable(LPC_RITIMER_T *pRITimer)\n+{\n+\tpRITimer->CTRL |= RIT_CTRL_ENBR;\n+}\n+\n+/**\n+ * @brief\tDisable timer debug\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_DebugDisable(LPC_RITIMER_T *pRITimer)\n+{\n+\tpRITimer->CTRL &= ~RIT_CTRL_ENBR;\n+}\n+\n+/**\n+ * @brief\tEnable clear on compare match\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_CompClearEnable(LPC_RITIMER_T *pRITimer)\n+{\n+\tpRITimer->CTRL |= RIT_CTRL_ENCLR;\n+}\n+\n+/**\n+ * @brief\tDisable clear on compare match\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_CompClearDisable(LPC_RITIMER_T *pRITimer)\n+{\n+\tpRITimer->CTRL &= ~RIT_CTRL_ENCLR;\n+}\n+\n+/**\n+ * @brief\tCheck whether interrupt flag is set or not\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tCurrent interrupt status, either ET or UNSET\n+ */\n+IntStatus Chip_RIT_GetIntStatus(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief\tSet a tick value for the interrupt to time out\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @param\tval\t\t\t: value (in ticks) of the interrupt to be set\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_SetCOMPVAL(LPC_RITIMER_T *pRITimer, uint32_t val)\n+{\n+\tpRITimer->COMPVAL = val;\n+\tpRITimer->COMPVAL_H = 0;\n+}\n+\n+/**\n+ * @brief\tSet a tick value for the interrupt to time out (48-bits)\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @param\tval\t\t\t: value (in ticks) of the interrupt to be set, 48-bits max\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_SetCOMPVAL64(LPC_RITIMER_T *pRITimer, uint64_t val)\n+{\n+\tpRITimer->COMPVAL = (uint32_t) (val & 0xFFFFFFFF);\n+\tpRITimer->COMPVAL_H = (uint32_t) ((val >> 32) & 0xFFFF);\n+}\n+\n+/**\n+ * @brief\tEnables or clears the RIT or interrupt\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @param\tval\t\t\t: RIT to be set, one or more RIT_CTRL_* values\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_EnableCTRL(LPC_RITIMER_T *pRITimer, uint32_t val)\n+{\n+\tpRITimer->CTRL |= val;\n+}\n+\n+/**\n+ * @brief\tClears the RIT interrupt\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RIT_ClearInt(LPC_RITIMER_T *pRITimer)\n+{\n+\tpRITimer->CTRL |= RIT_CTRL_INT;\n+}\n+\n+/**\n+ * @brief\tReturns the current RIT Counter value\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tthe current timer counter value\n+ */\n+__STATIC_INLINE uint32_t Chip_RIT_GetCounter(LPC_RITIMER_T *pRITimer)\n+{\n+\treturn pRITimer->COUNTER;\n+}\n+\n+/**\n+ * @brief\tReturns the current RIT Counter value (48-bit)\n+ * @param\tpRITimer\t: RITimer peripheral selected\n+ * @return\tthe current timer counter value\n+ */\n+__STATIC_INLINE uint64_t Chip_RIT_GetCounter64(LPC_RITIMER_T *pRITimer)\n+{\n+\tuint64_t retVal;\n+\n+\tretVal = (uint64_t) pRITimer->COUNTER;\n+\tretVal = retVal | (((uint64_t) pRITimer->COUNTER_H) << 32);\n+\n+\treturn retVal;\n+}\n+\n+/**\n+ * @brief\tSet timer interval value\n+ * @param\tpRITimer\t\t: RITimer peripheral selected\n+ * @param\ttime_interval\t: timer interval value (ms)\n+ * @return\tNone\n+ */\n+void Chip_RIT_SetTimerInterval(LPC_RITIMER_T *pRITimer, uint32_t time_interval);\n+\n+/**\n+ * @brief\tSet timer interval value (48-bit)\n+ * @param\tpRITimer\t\t: RITimer peripheral selected\n+ * @param\ttime_interval\t: timer interval value (ms)\n+ * @return\tNone\n+ */\n+void Chip_RIT_SetTimerInterval64(LPC_RITIMER_T *pRITimer, uint64_t time_interval);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RITIMER_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/romapi_5410x.h ./chip/inc/romapi_5410x.h\n--- a_tnusFF/chip/inc/romapi_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/romapi_5410x.h\t2016-10-22 23:23:38.052849771 -0300\n@@ -0,0 +1,90 @@\n+/*\n+ * @brief LPC5410X ROM API declarations and functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ROMAPI_5410X_H_\n+#define __ROMAPI_5410X_H_\n+\n+#include <stdint.h>\n+#include \"iap.h\"\n+#include \"error.h\"\n+#include \"cmsis.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ROMAPI_5410X CHIP: LPC5410X ROM API declarations and functions\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief High level ROM API structure\n+ */\n+typedef struct {\n+\tconst uint32_t reserved_usb;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_clib;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_can;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_pwrd;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_div;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_i2cd;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_dmad;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_spid;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_adcd;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_uartd;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_vfifo;\t\t\t\t/*!< Reserved */\n+\tconst uint32_t reserved_usart;\t\t\t\t/*!< Reserved */\n+} LPC_ROM_API_T;\n+\n+/* Pointer to ROM API function address */\n+#define LPC_ROM_API_BASE_LOC    0x03000200UL\n+#define LPC_ROM_API     (*(LPC_ROM_API_T * *) LPC_ROM_API_BASE_LOC)\n+\n+/* Pointer to ROM IAP entry functions */\n+#define IAP_ENTRY_LOCATION        0x03000205\n+\n+/**\n+ * @brief LPC5410x IAP_ENTRY API function type\n+ */\n+static INLINE void iap_entry(unsigned int cmd_param[5], unsigned int status_result[4])\n+{\n+\t((IAP_ENTRY_T) IAP_ENTRY_LOCATION)(cmd_param, status_result);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ROMAPI_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/rtc_5410x.h ./chip/inc/rtc_5410x.h\n--- a_tnusFF/chip/inc/rtc_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/rtc_5410x.h\t2016-10-22 23:17:43.568840278 -0300\n@@ -0,0 +1,310 @@\n+/*\n+ * @brief LPC5410X RTC chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RTC_5410X_H_\n+#define __RTC_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RTC_5410X CHIP: LPC5410X Real Time clock\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC5410X Real Time clock register block structure\n+ */\n+typedef struct {\t\t\t/*!< RTC */\n+\t__IO uint32_t CTRL;\t\t/*!< RTC control register */\n+\t__IO uint32_t MATCH;\t/*!< PRTC match (alarm) register */\n+\t__IO uint32_t COUNT;\t/*!< RTC counter register */\n+\t__IO uint32_t WAKE;\t\t/*!< RTC high-resolution/wake-up timer control register */\n+} LPC_RTC_T;\n+\n+/* CTRL register defniitions */\n+#define RTC_CTRL_SWRESET        (1 << 0)\t/*!< Apply reset to RTC */\n+#define RTC_CTRL_OFD            (1 << 1)\t/*!< Oscillator fail detect status (failed bit) */\n+#define RTC_CTRL_ALARM1HZ       (1 << 2)\t/*!< RTC 1 Hz timer alarm flag status (match) bit */\n+#define RTC_CTRL_WAKE1KHZ       (1 << 3)\t/*!< RTC 1 kHz timer wake-up flag status (timeout) bit */\n+#define RTC_CTRL_ALARMDPD_EN    (1 << 4)\t/*!< RTC 1 Hz timer alarm for Deep power-down enable bit */\n+#define RTC_CTRL_WAKEDPD_EN     (1 << 5)\t/*!< RTC 1 kHz timer wake-up for Deep power-down enable bit */\n+#define RTC_CTRL_RTC1KHZ_EN     (1 << 6)\t/*!< RTC 1 kHz clock enable bit */\n+#define RTC_CTRL_RTC_EN         (1 << 7)\t/*!< RTC enable bit */\n+#define RTC_CTRL_MASK           ((uint32_t) 0xF1)\t/*!< RTC Control register Mask for reserved and status bits */\n+\n+/**\n+ * @brief\tInitialize the RTC peripheral\n+ * @param\tpRTC\t: RTC peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RTC_Init(LPC_RTC_T *pRTC)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_RTC);\n+\tChip_SYSCON_PeriphReset(RESET_RTC);\n+}\n+\n+/**\n+ * @brief\tDe-initialize the RTC peripheral\n+ * @param\tpRTC\t: RTC peripheral selected\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_RTC_DeInit(LPC_RTC_T *pRTC)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_RTC);\n+}\n+\n+/**\n+ * @brief\tEnable RTC options\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @param\tflags\t: And OR'ed value of RTC_CTRL_* definitions to enable\n+ * @return\tNothing\n+ * @note\tYou can enable multiple RTC options at once using this function\n+ *\t\t\tby OR'ing them together. It is recommended to only use the\n+ *\t\t\tRTC_CTRL_ALARMDPD_EN, RTC_CTRL_WAKEDPD_EN, RTC_CTRL_RTC1KHZ_EN, and\n+ *\t\t\tRTC_CTRL_RTC_EN flags with this function.\n+ */\n+__STATIC_INLINE void Chip_RTC_EnableOptions(LPC_RTC_T *pRTC, uint32_t flags)\n+{\n+\tpRTC->CTRL = (pRTC->CTRL & RTC_CTRL_MASK) | flags;\n+}\n+\n+/**\n+ * @brief\tDisable RTC options\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @param\tflags\t: And OR'ed value of RTC_CTRL_* definitions to disable\n+ * @return\tNothing\n+ * @note\tYou can enable multiple RTC options at once using this function\n+ *\t\t\tby OR'ing them together. It is recommended to only use the\n+ *\t\t\tRTC_CTRL_ALARMDPD_EN, RTC_CTRL_WAKEDPD_EN, RTC_CTRL_RTC1KHZ_EN, and\n+ *\t\t\tRTC_CTRL_RTC_EN flags with this function.\n+ */\n+__STATIC_INLINE void Chip_RTC_DisableOptions(LPC_RTC_T *pRTC, uint32_t flags)\n+{\n+\tpRTC->CTRL = (pRTC->CTRL & RTC_CTRL_MASK) & ~flags;\n+}\n+\n+/**\n+ * @brief\tReset RTC\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tNothing\n+ * @note\tThe RTC state will be returned to it's default.\n+ */\n+__STATIC_INLINE void Chip_RTC_Reset(LPC_RTC_T *pRTC)\n+{\n+\tChip_RTC_EnableOptions(pRTC, RTC_CTRL_SWRESET);\n+\tChip_RTC_DisableOptions(pRTC, RTC_CTRL_SWRESET);\n+}\n+\n+/**\n+ * @brief\tEnables the RTC\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tNothing\n+ * @note\tYou can also use Chip_RTC_EnableOptions() with the\n+ *\t\t\tRTC_CTRL_RTC_EN flag to enable the RTC.\n+ */\n+__STATIC_INLINE void Chip_RTC_Enable(LPC_RTC_T *pRTC)\n+{\n+\tChip_RTC_EnableOptions(pRTC, RTC_CTRL_RTC_EN);\n+}\n+\n+/**\n+ * @brief\tDisables the RTC\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tNothing\n+ * @note\tYou can also use Chip_RTC_DisableOptions() with the\n+ *\t\t\tRTC_CTRL_RTC_EN flag to enable the RTC.\n+ */\n+__STATIC_INLINE void Chip_RTC_Disable(LPC_RTC_T *pRTC)\n+{\n+\tChip_RTC_DisableOptions(pRTC, RTC_CTRL_RTC_EN);\n+}\n+\n+/**\n+ * @brief\tEnables the RTC 1KHz high resolution timer\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tNothing\n+ * @note\tYou can also use Chip_RTC_EnableOptions() with the\n+ *\t\t\tRTC_CTRL_RTC1KHZ_EN flag to enable the high resolution\n+ *\t\t\ttimer.\n+ */\n+__STATIC_INLINE void Chip_RTC_Enable1KHZ(LPC_RTC_T *pRTC)\n+{\n+\tChip_RTC_EnableOptions(pRTC, RTC_CTRL_RTC1KHZ_EN);\n+}\n+\n+/**\n+ * @brief\tDisables the RTC 1KHz high resolution timer\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tNothing\n+ * @note\tYou can also use Chip_RTC_DisableOptions() with the\n+ *\t\t\tRTC_CTRL_RTC1KHZ_EN flag to disable the high resolution\n+ *\t\t\ttimer.\n+ */\n+__STATIC_INLINE void Chip_RTC_Disable1KHZ(LPC_RTC_T *pRTC)\n+{\n+\tChip_RTC_DisableOptions(pRTC, RTC_CTRL_RTC1KHZ_EN);\n+}\n+\n+/**\n+ * @brief\tEnables selected RTC wakeup events\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @param\tints\t: Wakeup events to enable\n+ * @return\tNothing\n+ * @note\tSelect either one or both (OR'ed) RTC_CTRL_ALARMDPD_EN\n+ *\t\t\tand RTC_CTRL_WAKEDPD_EN values to enabled. You can also\n+ *\t\t\tuse Chip_RTC_EnableOptions() with the flags to enable\n+ *\t\t\tthe events.\n+ */\n+__STATIC_INLINE void Chip_RTC_EnableWakeup(LPC_RTC_T *pRTC, uint32_t ints)\n+{\n+\tChip_RTC_EnableOptions(pRTC, ints);\n+}\n+\n+/**\n+ * @brief\tDisables selected RTC wakeup events\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @param\tints\t: Wakeup events to disable\n+ * @return\tNothing\n+ * @note\tSelect either one or both (OR'ed) RTC_CTRL_ALARMDPD_EN\n+ *\t\t\tand RTC_CTRL_WAKEDPD_EN values to disabled. You can also\n+ *\t\t\tuse Chip_RTC_DisableOptions() with the flags to disable\n+ *\t\t\tthe events.\n+ */\n+__STATIC_INLINE void Chip_RTC_DisableWakeup(LPC_RTC_T *pRTC, uint32_t ints)\n+{\n+\tChip_RTC_DisableOptions(pRTC, ints);\n+}\n+\n+/**\n+ * @brief\tClears latched RTC statuses\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @param\tstsMask\t: OR'ed status bits to clear\n+ * @return\tNothing\n+ * @note\tUse and OR'ed stsMask value of RTC_CTRL_OFD, RTC_CTRL_ALARM1HZ,\n+ *\t\t\tand RTC_CTRL_WAKE1KHZ to clear specific RTC states.\n+ */\n+__STATIC_INLINE void Chip_RTC_ClearStatus(LPC_RTC_T *pRTC, uint32_t stsMask)\n+{\n+\tpRTC->CTRL = (pRTC->CTRL & RTC_CTRL_MASK) | stsMask;\n+}\n+\n+/**\n+ * @brief\tReturn RTC control/status register\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tThe current RTC control/status register\n+ * @note\tMask the return value with a RTC_CTRL_* definitions to determine\n+ *\t\t\twhich bits are set. For example, mask the return value with\n+ *\t\t\tRTC_CTRL_ALARM1HZ to determine if the alarm interrupt is pending.\n+ */\n+__STATIC_INLINE uint32_t Chip_RTC_GetStatus(LPC_RTC_T *pRTC)\n+{\n+\treturn pRTC->CTRL;\n+}\n+\n+/**\n+ * @brief\tSet RTC match value for alarm status/interrupt\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @param\tcount\t: Alarm event time\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_RTC_SetAlarm(LPC_RTC_T *pRTC, uint32_t count)\n+{\n+\tpRTC->MATCH = count;\n+}\n+\n+/**\n+ * @brief\tReturn the RTC match value used for alarm status/interrupt\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tAlarm event time\n+ */\n+__STATIC_INLINE uint32_t Chip_RTC_GetAlarm(LPC_RTC_T *pRTC)\n+{\n+\treturn pRTC->MATCH;\n+}\n+\n+/**\n+ * @brief\tSet RTC match count for 1 second timer count\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @param\tcount\t: Initial count to set\n+ * @return\tNothing\n+ * @note\tOnly write to this register when the RTC_CTRL_RTC_EN bit in\n+ *\t\t\tthe CTRL Register is 0. The counter increments one second\n+ *\t\t\tafter the RTC_CTRL_RTC_EN bit is set.\n+ */\n+__STATIC_INLINE void Chip_RTC_SetCount(LPC_RTC_T *pRTC, uint32_t count)\n+{\n+\tpRTC->COUNT = count;\n+}\n+\n+/**\n+ * @brief\tGet current RTC 1 second timer count\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tcurrent RTC 1 second timer count\n+ */\n+__STATIC_INLINE uint32_t Chip_RTC_GetCount(LPC_RTC_T *pRTC)\n+{\n+\treturn pRTC->COUNT;\n+}\n+\n+/**\n+ * @brief\tSet RTC wake count countdown value (in mS ticks)\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @param\tcount\t: wakeup time in milliSeconds\n+ * @return\tNothing\n+ * @note\tA write pre-loads a start count value into the wake-up\n+ *\t\t\ttimer and initializes a count-down sequence.\n+ */\n+__STATIC_INLINE void Chip_RTC_SetWake(LPC_RTC_T *pRTC, uint16_t count)\n+{\n+\tpRTC->WAKE = count;\n+}\n+\n+/**\n+ * @brief\tGet RTC wake count countdown value\n+ * @param\tpRTC\t: The base address of RTC block\n+ * @return\tcurrent RTC wake count countdown value (in mS)\n+ */\n+__STATIC_INLINE uint16_t Chip_RTC_GetWake(LPC_RTC_T *pRTC)\n+{\n+\treturn pRTC->WAKE;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RTC_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/rtc_ut.h ./chip/inc/rtc_ut.h\n--- a_tnusFF/chip/inc/rtc_ut.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/rtc_ut.h\t2016-10-22 23:17:43.568840278 -0300\n@@ -0,0 +1,84 @@\n+/*\n+ * @brief RTC tick to (a more) Universal Time\n+ * Adds conversion functions to use an RTC that only provides a\n+ * seconds capability to provide \"struct tm\" support.\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RTC_UT_H_\n+#define __RTC_UT_H_\n+\n+#include \"chip.h\"\n+#include <stdlib.h>\n+#include <time.h>\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RTC_UT CHIP: RTC tick to (a more) Universal Time conversion functions\n+ * @ingroup CHIP_Common\n+ * This driver converts between a RTC 1-second tick value and\n+ * a Universal time format in a structure of type 'struct tm'.\n+ * @{\n+ */\n+\n+/* Starting year and starting day of week for the driver */\n+#define TM_YEAR_BASE    (1900)\n+#define TM_DAYOFWEEK    (1)\n+\n+/**\n+ * @brief\tConverts a RTC tick time to Universal time\n+ * @param\trtcTick\t: Current RTC time value\n+ * @param\tpTime\t: Pointer to time structure to fill\n+ * @return\tNothing\n+ * @note\tWhen setting time, the 'tm_wday', 'tm_yday', and 'tm_isdst'\n+ * fields are not used.\n+ */\n+void ConvertRtcTime(uint32_t rtcTick, struct tm *pTime);\n+\n+/**\n+ * @brief\tConverts a Universal time to RTC tick time\n+ * @param\tpTime\t: Pointer to time structure to use\n+ * @param\trtcTick\t: Pointer to RTC time value to fill\n+ * @return\tNothing\n+ * @note\tWhen converting time, the 'tm_isdst' field is not\n+ * populated by the conversion function.\n+ */\n+void ConvertTimeRtc(struct tm *pTime, uint32_t *rtcTick);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RTC_UT_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/sct_5410x.h ./chip/inc/sct_5410x.h\n--- a_tnusFF/chip/inc/sct_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/sct_5410x.h\t2016-10-22 23:17:43.572840278 -0300\n@@ -0,0 +1,543 @@\n+/*\n+ * @brief LPC5410X State Configurable Timer (SCT) Chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SCT_5410X_H_\n+#define __SCT_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SCT_5410X CHIP: LPC5410X State Configurable Timer driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/*                         match/cap registers,     events,           states,         inputs,         outputs\n+ *\n+ * @brief SCT Module configuration\n+ */\n+#define CONFIG_SCT_nEV   (13)\t\t\t/*!< Number of events */\n+#define CONFIG_SCT_nRG   (13)\t\t\t/*!< Number of match/compare registers */\n+#define CONFIG_SCT_nOU   (8)\t\t\t/*!< Number of outputs */\n+#define CONFIG_SCT_nIN   (8)\t\t\t/*!< Number of outputs */\n+\n+/**\n+ * @brief State Configurable Timer register block structure\n+ */\n+typedef struct {\n+\t__IO  uint32_t CONFIG;\t\t\t\t/*!< configuration Register (offset (0x000) */\n+\tunion {\n+\t\t__IO uint32_t CTRL_U;\t\t\t/*!< control Register */\n+\t\tstruct {\n+\t\t\t__IO uint16_t CTRL_L;\t\t/*!< low control register */\n+\t\t\t__IO uint16_t CTRL_H;\t\t/*!< high control register */\n+\t\t};\n+\n+\t};\n+\n+\tunion {\n+\t\t__IO uint32_t LIMIT_U;\t\t\t/*!< limit Register */\n+\t\tstruct {\n+\t\t\t__IO uint16_t LIMIT_L;\t\t/*!< limit register for counter L */\n+\t\t\t__IO uint16_t LIMIT_H;\t\t/*!< limit register for counter H */\n+\t\t};\n+\n+\t};\n+\n+\tunion {\n+\t\t__IO uint32_t HALT_U;\t\t\t/*!< halt Register */\n+\t\tstruct {\n+\t\t\t__IO uint16_t HALT_L;\t\t/*!< halt register for counter L */\n+\t\t\t__IO uint16_t HALT_H;\t\t/*!< halt register for counter H */\n+\t\t};\n+\n+\t};\n+\n+\tunion {\n+\t\t__IO uint32_t STOP_U;\t\t\t/*!< stop Register */\n+\t\tstruct {\n+\t\t\t__IO uint16_t STOP_L;\t\t/*!< stop register for counter L */\n+\t\t\t__IO uint16_t STOP_H;\t\t/*!< stop register for counter H */\n+\t\t};\n+\n+\t};\n+\n+\tunion {\n+\t\t__IO uint32_t START_U;\t\t\t/*!< start Register */\n+\t\tstruct {\n+\t\t\t__IO uint16_t START_L;\t\t/*!< start register for counter L */\n+\t\t\t__IO uint16_t START_H;\t\t/*!< start register for counter H */\n+\t\t};\n+\n+\t};\n+\n+\tuint32_t RESERVED1[10];\t\t\t\t/*!< 0x018 - 0x03C reserved */\n+\n+\tunion {\n+\t\t__IO uint32_t COUNT_U;\t\t\t/*!< counter register (offset 0x040)*/\n+\t\tstruct {\n+\t\t\t__IO uint16_t COUNT_L;\t\t/*!< counter register for counter L */\n+\t\t\t__IO uint16_t COUNT_H;\t\t/*!< counter register for counter H */\n+\t\t};\n+\n+\t};\n+\n+\tunion {\n+\t\t__IO uint32_t STATE_U;\t\t\t/*!< State register */\n+\t\tstruct {\n+\t\t\t__IO uint16_t STATE_L;\t\t/*!< state register for counter L */\n+\t\t\t__IO uint16_t STATE_H;\t\t/*!< state register for counter H */\n+\t\t};\n+\n+\t};\n+\n+\t__I  uint32_t INPUT;\t\t\t\t/*!< input register */\n+\tunion {\n+\t\t__IO uint32_t REGMODE_U;\t\t/*!< RegMode register */\n+\t\tstruct {\n+\t\t\t__IO uint16_t REGMODE_L;\t/*!< match - capture registers mode register L */\n+\t\t\t__IO uint16_t REGMODE_H;\t/*!< match - capture registers mode register H */\n+\t\t};\n+\n+\t};\n+\n+\t__IO uint32_t OUTPUT;\t\t\t\t/*!< output register */\n+\t__IO uint32_t OUTPUTDIRCTRL;\t\t/*!< output counter direction Control Register */\n+\t__IO uint32_t RES;\t\t\t\t\t/*!< conflict resolution register */\n+\t__IO uint32_t DMAREQ0;\t\t\t\t/*!< DMA0 Request Register */\n+\t__IO uint32_t DMAREQ1;\t\t\t\t/*!< DMA1 Request Register */\n+\tuint32_t RESERVED2[35];\n+\t__IO uint32_t EVEN;\t\t/*!< event enable register */\n+\t__IO uint32_t EVFLAG;\t\t/*!< event flag register */\n+\t__IO uint32_t CONEN;\t/*!< conflict enable register */\n+\t__IO uint32_t CONFLAG;\t\t/*!< conflict flag register */\n+\n+\tunion {\n+\n+\t\t__IO union {\t/*!< ... Match / Capture value */\n+\t\t\tuint32_t U;\t\t/*!<       SCTMATCH[i].U  Unified 32-bit register */\n+\n+\t\t\tstruct {\n+\t\t\t\tuint16_t L;\t\t/*!<       SCTMATCH[i].L  Access to L value */\n+\t\t\t\tuint16_t H;\t\t/*!<       SCTMATCH[i].H  Access to H value */\n+\t\t\t};\n+\n+\t\t} MATCH[CONFIG_SCT_nRG];\n+\n+\t\t__I union {\n+\t\t\tuint32_t U;\t\t/*!<       SCTCAP[i].U  Unified 32-bit register */\n+\n+\t\t\tstruct {\n+\t\t\t\tuint16_t L;\t\t/*!<       SCTCAP[i].L  Access to L value */\n+\t\t\t\tuint16_t H;\t\t/*!<       SCTCAP[i].H  Access to H value */\n+\t\t\t};\n+\n+\t\t} CAP[CONFIG_SCT_nRG];\n+\n+\t};\n+\n+\tuint32_t RESERVED3[48 + (16 - CONFIG_SCT_nRG)];\n+\n+\tunion {\n+\n+\t\t__IO union {\t/* 0x200-... Match Reload / Capture Control value */\n+\t\t\tuint32_t U;\t\t/*       SCTMATCHREL[i].U  Unified 32-bit register */\n+\n+\t\t\tstruct {\n+\t\t\t\tuint16_t L;\t\t/*       SCTMATCHREL[i].L  Access to L value */\n+\t\t\t\tuint16_t H;\t\t/*       SCTMATCHREL[i].H  Access to H value */\n+\t\t\t};\n+\n+\t\t} MATCHREL[CONFIG_SCT_nRG];\n+\n+\t\t__IO union {\n+\t\t\tuint32_t U;\t\t/*       SCTCAPCTRL[i].U  Unified 32-bit register */\n+\n+\t\t\tstruct {\n+\t\t\t\tuint16_t L;\t\t/*       SCTCAPCTRL[i].L  Access to H value */\n+\t\t\t\tuint16_t H;\t\t/*       SCTCAPCTRL[i].H  Access to H value */\n+\t\t\t};\n+\n+\t\t} CAPCTRL[CONFIG_SCT_nRG];\n+\n+\t};\n+\n+\tuint32_t RESERVED6[48 + (16 - CONFIG_SCT_nRG)];\n+\n+\t__IO struct {\t\t/* 0x300-0x3FC  SCTEVENT[i].STATE / SCTEVENT[i].CTRL*/\n+\t\tuint32_t STATE;\t\t/* Event State Register */\n+\t\tuint32_t CTRL;\t\t/* Event Control Register */\n+\t} EVENT[CONFIG_SCT_nEV];\n+\n+\tuint32_t RESERVED9[128 - 2 * CONFIG_SCT_nEV];\t\t/*!< ...-0x4FC reserved */\n+\n+\t__IO struct {\t\t/*!< 0x500-0x57C  SCTOUT[i].SET / SCTOUT[i].CLR */\n+\t\tuint32_t SET;\t\t/*!< Output n Set Register */\n+\t\tuint32_t CLR;\t\t/*!< Output n Clear Register */\n+\t} OUT[CONFIG_SCT_nOU];\n+\n+\tuint32_t RESERVED10[191 - 2 * CONFIG_SCT_nOU];\t\t/*!< ...-0x7F8 reserved */\n+\t__I uint32_t MODULECONTENT;\t\t/*!< 0x7FC Module Content */\n+} LPC_SCT_T;\n+\n+/**\n+ * @brief Macro defines for SCT configuration register\n+ */\n+#define SCT_CONFIG_16BIT_COUNTER        0x00000000\t/*!< Operate as 2 16-bit counters */\n+#define SCT_CONFIG_32BIT_COUNTER        0x00000001\t/*!< Operate as 1 32-bit counter */\n+\n+#define SCT_CONFIG_CLKMODE_BUSCLK       (0x0 << 1)\t/*!< Bus clock */\n+#define SCT_CONFIG_CLKMODE_SCTCLK       (0x1 << 1)\t/*!< SCT clock */\n+#define SCT_CONFIG_CLKMODE_INCLK        (0x2 << 1)\t/*!< Input clock selected in CLKSEL field */\n+#define SCT_CONFIG_CLKMODE_INEDGECLK    (0x3 << 1)\t/*!< Input clock edge selected in CLKSEL field */\n+\n+#define SCT_CONFIG_CLKMODE_SYSCLK               (0x0 << 1)\t/*!< System clock */\n+#define SCT_CONFIG_CLKMODE_PRESCALED_SYSCLK     (0x1 << 1)\t/*!< Prescaled system clock */\n+#define SCT_CONFIG_CLKMODE_SCT_INPUT            (0x2 << 1)\t/*!< Input clock/edge selected in CKSEL field */\n+#define SCT_CONFIG_CLKMODE_PRESCALED_SCT_INPUT  (0x3 << 1)\t/*!< Prescaled input clock/edge selected in CKSEL field */\n+\n+#define SCT_CONFIG_CKSEL_RISING_IN_0    (0x0UL << 3)\n+#define SCT_CONFIG_CKSEL_FALLING_IN_0   (0x1UL << 3)\n+#define SCT_CONFIG_CKSEL_RISING_IN_1    (0x2UL << 3)\n+#define SCT_CONFIG_CKSEL_FALLING_IN_1   (0x3UL << 3)\n+#define SCT_CONFIG_CKSEL_RISING_IN_2    (0x4UL << 3)\n+#define SCT_CONFIG_CKSEL_FALLING_IN_2   (0x5UL << 3)\n+#define SCT_CONFIG_CKSEL_RISING_IN_3    (0x6UL << 3)\n+#define SCT_CONFIG_CKSEL_FALLING_IN_3   (0x7UL << 3)\n+#define SCT_CONFIG_CKSEL_RISING_IN_4    (0x8UL << 3)\n+#define SCT_CONFIG_CKSEL_FALLING_IN_4   (0x9UL << 3)\n+#define SCT_CONFIG_CKSEL_RISING_IN_5    (0xAUL << 3)\n+#define SCT_CONFIG_CKSEL_FALLING_IN_5   (0xBUL << 3)\n+#define SCT_CONFIG_CKSEL_RISING_IN_6    (0xCUL << 3)\n+#define SCT_CONFIG_CKSEL_FALLING_IN_6   (0xDUL << 3)\n+#define SCT_CONFIG_CKSEL_RISING_IN_7    (0xEUL << 3)\n+#define SCT_CONFIG_CKSEL_FALLING_IN_7   (0xFUL << 3)\n+#define SCT_CONFIG_NORELOADL_U          (0x1 << 7)\t/*!< Operate as 1 32-bit counter */\n+#define SCT_CONFIG_NORELOADH            (0x1 << 8)\t/*!< Operate as 1 32-bit counter */\n+#define SCT_CONFIG_AUTOLIMIT_U          (0x1UL << 17)\n+#define SCT_CONFIG_AUTOLIMIT_L          (0x1UL << 17)\n+#define SCT_CONFIG_AUTOLIMIT_H          (0x1UL << 18)\n+\n+/**\n+ * @brief Macro defines for SCT control register\n+ */\n+#define COUNTUP_TO_LIMIT_THEN_CLEAR_TO_ZERO     0\t\t\t/*!< Direction for low or unified counter */\n+#define COUNTUP_TO LIMIT_THEN_COUNTDOWN_TO_ZERO 1\n+\n+#define SCT_CTRL_STOP_L                 (1 << 1)\t\t\t\t/*!< Stop low counter */\n+#define SCT_CTRL_HALT_L                 (1 << 2)\t\t\t\t/*!< Halt low counter */\n+#define SCT_CTRL_CLRCTR_L               (1 << 3)\t\t\t\t/*!< Clear low or unified counter */\n+#define SCT_CTRL_BIDIR_L(x)             (((x) & 0x01) << 4)\t\t/*!< Bidirectional bit */\n+#define SCT_CTRL_PRE_L(x)               (((x) & 0xFF) << 5)\t\t/*!< Prescale clock for low or unified counter */\n+\n+#define COUNTUP_TO_LIMIT_THEN_CLEAR_TO_ZERO     0\t\t\t/*!< Direction for high counter */\n+#define COUNTUP_TO LIMIT_THEN_COUNTDOWN_TO_ZERO 1\n+#define SCT_CTRL_STOP_H                 (1 << 17)\t\t\t\t/*!< Stop high counter */\n+#define SCT_CTRL_HALT_H                 (1 << 18)\t\t\t\t/*!< Halt high counter */\n+#define SCT_CTRL_CLRCTR_H               (1 << 19)\t\t\t\t/*!< Clear high counter */\n+#define SCT_CTRL_BIDIR_H(x)             (((x) & 0x01) << 20)\n+#define SCT_CTRL_PRE_H(x)               (((x) & 0xFF) << 21)\t/*!< Prescale clock for high counter */\n+\n+#define SCT_EV_CTRL_MATCHSEL(reg)               (reg << 0)\n+#define SCT_EV_CTRL_HEVENT_L                    (0UL << 4)\n+#define SCT_EV_CTRL_HEVENT_H                    (1UL << 4)\n+#define SCT_EV_CTRL_OUTSEL_INPUT                (0UL << 5)\n+#define SCT_EV_CTRL_OUTSEL_OUTPUT               (0UL << 5)\n+#define SCT_EV_CTRL_IOSEL(signal)               (signal << 6)\n+\n+#define SCT_EV_CTRL_IOCOND_LOW                  (0UL << 10)\n+#define SCT_EV_CTRL_IOCOND_RISE                 (0x1UL << 10)\n+#define SCT_EV_CTRL_IOCOND_FALL                 (0x2UL << 10)\n+#define SCT_EV_CTRL_IOCOND_HIGH                 (0x3UL << 10)\n+#define SCT_EV_CTRL_COMBMODE_OR                 (0x0UL << 12)\n+#define SCT_EV_CTRL_COMBMODE_MATCH              (0x1UL << 12)\n+#define SCT_EV_CTRL_COMBMODE_IO                 (0x2UL << 12)\n+#define SCT_EV_CTRL_COMBMODE_AND                (0x3UL << 12)\n+#define SCT_EV_CTRL_STATELD                     (0x1UL << 14)\n+#define SCT_EV_CTRL_STATEV(x)                   (x << 15)\n+#define SCT_EV_CTRL_MATCHMEM                    (0x1UL << 20)\n+#define SCT_EV_CTRL_DIRECTION_INDEPENDENT       (0x0UL << 21)\n+#define SCT_EV_CTRL_DIRECTION_UP                (0x1UL << 21)\n+#define SCT_EV_CTRL_DIRECTION_DOWN              (0x2UL << 21)\n+\n+/**\n+ * @brief Macro defines for SCT Conflict resolution register\n+ */\n+#define SCT_RES_NOCHANGE                (0)\n+#define SCT_RES_SET_OUTPUT              (1)\n+#define SCT_RES_CLEAR_OUTPUT            (2)\n+#define SCT_RES_TOGGLE_OUTPUT           (3)\n+\n+/**\n+ * SCT Match register values enum\n+ */\n+typedef enum CHIP_SCT_MATCH_REG {\n+\tSCT_MATCH_0 = 0,\t/*!< SCT Match register 0 */\n+\tSCT_MATCH_1,\n+\tSCT_MATCH_2,\n+\tSCT_MATCH_3,\n+\tSCT_MATCH_4,\n+\tSCT_MATCH_5,\n+\tSCT_MATCH_6,\n+\tSCT_MATCH_7,\n+\tSCT_MATCH_8,\n+\tSCT_MATCH_9,\n+\tSCT_MATCH_10,\n+\tSCT_MATCH_11,\n+\tSCT_MATCH_12,\n+\tSCT_MATCH_13,\n+\tSCT_MATCH_14,\n+\tSCT_MATCH_15\n+} CHIP_SCT_MATCH_REG_T;\n+\n+/**\n+ * SCT Event values enum\n+ */\n+typedef enum CHIP_SCT_EVENT {\n+\tSCT_EVT_0 = (1 << 0),\t\t/*!< Event 0 */\n+\tSCT_EVT_1 = (1 << 1),\t\t/*!< Event 1 */\n+\tSCT_EVT_2 = (1 << 2),\t\t/*!< Event 2 */\n+\tSCT_EVT_3 = (1 << 3),\t\t/*!< Event 3 */\n+\tSCT_EVT_4 = (1 << 4),\t\t/*!< Event 4 */\n+\tSCT_EVT_5 = (1 << 5),\t\t/*!< Event 5 */\n+\tSCT_EVT_6 = (1 << 6),\t\t/*!< Event 6 */\n+\tSCT_EVT_7 = (1 << 7),\t\t/*!< Event 7 */\n+\tSCT_EVT_8 = (1 << 8),\t\t/*!< Event 8 */\n+\tSCT_EVT_9 = (1 << 9),\t\t/*!< Event 9 */\n+\tSCT_EVT_10 = (1 << 10),\t\t/*!< Event 10 */\n+\tSCT_EVT_11 = (1 << 11),\t\t/*!< Event 11 */\n+\tSCT_EVT_12 = (1 << 12),\t\t/*!< Event 12 */\n+\tSCT_EVT_13 = (1 << 13),\t\t/*!< Event 13 */\n+\tSCT_EVT_14 = (1 << 14),\t\t/*!< Event 14 */\n+\tSCT_EVT_15 = (1 << 15)\t\t/*!< Event 15 */\n+} CHIP_SCT_EVENT_T;\n+\n+/**\n+ * @brief\tSet event control register\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tevent_number\n+ * @param\tvalue\t: The 32-bit event control setting\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_EventControl(LPC_SCT_T *pSCT, uint32_t event_number,\n+\t\t\t\t\t\t\t\t\t\t   uint32_t value) {\n+\tpSCT->EVENT[event_number].CTRL = value;\n+}\n+\n+/**\n+ * @brief\tSet event state mask register\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tevent_number\n+ * @param\tevent_state_mask      : The 32-bit event state mask setting\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_EventStateMask(LPC_SCT_T *pSCT, uint32_t event_number,\n+\t\t\t\t\t\t\t\t\t\t\t uint32_t event_state_mask) {\n+\tpSCT->EVENT[event_number].STATE = event_state_mask;\n+}\n+\n+/**\n+ * @brief\tSet configuration register\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tcfg      : The 32-bit configuration setting\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_Config(LPC_SCT_T *pSCT, uint32_t cfg) {\n+\tpSCT->CONFIG = cfg;\n+}\n+\n+/**\n+ * @brief\tConfigures the Limit register\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tvalue\t: The 32-bit Limit register value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_Limit(LPC_SCT_T *pSCT, uint32_t value) {\n+\tpSCT->LIMIT_L = value;\n+}\n+\n+/**\n+ * @brief\tSet or Clear the Control register\n+ * @param\tpSCT\t\t\t: Pointer to SCT register block\n+ * @param\tvalue\t\t\t: SCT Control register value\n+ * @param\tena             : ENABLE - To set the fields specified by value\n+ *                          : DISABLE - To clear the field specified by value\n+ * @return\tNothing\n+ * Set or clear the control register bits as specified by the \\a value\n+ * parameter. If \\a ena is set to ENABLE, the mentioned register fields\n+ * will be set. If \\a ena is set to DISABLE, the mentioned register\n+ * fields will be cleared\n+ */\n+void Chip_SCT_SetClrControl(LPC_SCT_T *pSCT, uint32_t value, FunctionalState ena);\n+\n+/**\n+ * @brief\tSet the conflict resolution\n+ * @param\tpSCT\t\t\t: Pointer to SCT register block\n+ * @param\toutnum\t\t\t: Output number\n+ * @param\tvalue           : Output value\n+ *                          - SCT_RES_NOCHANGE\t\t:No change\n+ *\t\t\t\t\t        - SCT_RES_SET_OUTPUT\t:Set output\n+ *\t\t\t\t\t        - SCT_RES_CLEAR_OUTPUT\t:Clear output\n+ *\t\t\t\t\t        - SCT_RES_TOGGLE_OUTPUT :Toggle output\n+ *                          : SCT_RES_NOCHANGE\n+ *                          : DISABLE - To clear the field specified by value\n+ * @return\tNothing\n+ * Set conflict resolution for the output \\a outnum\n+ */\n+void Chip_SCT_SetConflictResolution(LPC_SCT_T *pSCT, uint8_t outnum, uint8_t value);\n+\n+/**\n+ * @brief\tSet unified count value in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tcount\t: The 32-bit count value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_SetCount(LPC_SCT_T *pSCT, uint32_t count) {\n+\tpSCT->COUNT_U = count;\n+}\n+\n+/**\n+ * @brief\tSet lower count value in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tcount\t: The 16-bit count value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_SetCountL(LPC_SCT_T *pSCT, uint16_t count) {\n+\tpSCT->COUNT_L = count;\n+}\n+\n+/**\n+ * @brief\tSet higher count value in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tcount\t: The 16-bit count value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_SetCountH(LPC_SCT_T *pSCT, uint16_t count) {\n+\tpSCT->COUNT_H = count;\n+}\n+\n+/**\n+ * @brief\tSet unified match count value in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tn\t\t: Match register value\n+ * @param\tvalue\t: The 32-bit match count value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_SetMatchCount(LPC_SCT_T *pSCT, CHIP_SCT_MATCH_REG_T n, uint32_t value) {\n+\tpSCT->MATCH[n].U = value;\n+}\n+\n+/**\n+ * @brief\tSet unified match reload count value in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tn\t\t: Match register value\n+ * @param\tvalue\t: The 32-bit match count reload value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_SetMatchReload(LPC_SCT_T *pSCT, CHIP_SCT_MATCH_REG_T n, uint32_t value) {\n+\tpSCT->MATCHREL[n].U = value;\n+}\n+\n+/**\n+ * @brief\tEnable the interrupt for the specified event in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tevt\t\t: Event value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_EnableEventInt(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt) {\n+\tpSCT->EVEN |= evt;\n+}\n+\n+/**\n+ * @brief\tDisable the interrupt for the specified event in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tevt\t\t: Event value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_DisableEventInt(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt) {\n+\tpSCT->EVEN &= ~(evt);\n+}\n+\n+/**\n+ * @brief\tClear the specified event flag in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tevt\t\t: Event value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_ClearEventFlag(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt) {\n+\tpSCT->EVFLAG |= evt;\n+}\n+\n+/**\n+ * @brief\tSet control register in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tvalue\t: Value (ORed value of SCT_CTRL_* bits)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_SetControl(LPC_SCT_T *pSCT, uint32_t value) {\n+\tpSCT->CTRL_U |= value;\n+}\n+\n+/**\n+ * @brief\tClear control register in State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tvalue\t: Value (ORed value of SCT_CTRL_* bits)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SCT_ClearControl(LPC_SCT_T *pSCT, uint32_t value) {\n+\tpSCT->CTRL_U &= ~(value);\n+}\n+\n+/**\n+ * @brief\tInitializes the State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @return\tNothing\n+ */\n+void Chip_SCT_Init(LPC_SCT_T *pSCT);\n+\n+/**\n+ * @brief\tDeinitializes the State Configurable Timer\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @return\tNothing\n+ */\n+void Chip_SCT_DeInit(LPC_SCT_T *pSCT);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+\n+#endif\n+\n+#endif /* __SCT_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/sct_pwm_5410x.h ./chip/inc/sct_pwm_5410x.h\n--- a_tnusFF/chip/inc/sct_pwm_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/sct_pwm_5410x.h\t2016-10-22 23:17:43.572840278 -0300\n@@ -0,0 +1,178 @@\n+/*\n+ * @brief LPC5410x State Configurable Timer (SCT/PWM) Chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SCT_PWM_5410X_H_\n+#define __SCT_PWM_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SCT_PWM_5410X CHIP: LPC5410X State Configurable Timer PWM driver\n+ *\n+ * For more information on how to use the driver please visit the FAQ page at\n+ * <a href=\"http://www.lpcware.com/content/faq/how-use-sct-standard-pwm-using-lpcopen\">\n+ * www.lpcware.com</a>\n+ *\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tGet number of ticks per PWM cycle\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @return\tNumber ot ticks that will be counted per cycle\n+ * @note\tReturn value of this function will be vaild only\n+ *          after calling Chip_SCTPWM_SetRate()\n+ */\n+__STATIC_INLINE uint32_t Chip_SCTPWM_GetTicksPerCycle(LPC_SCT_T *pSCT)\n+{\n+\treturn pSCT->MATCHREL[0].U;\n+}\n+\n+/**\n+ * @brief\tConverts a percentage to ticks\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tpercent\t: Percentage to convert (0 - 100)\n+ * @return\tNumber ot ticks corresponding to given percentage\n+ * @note\tDo not use this function when using very low\n+ *          pwm rate (like 100Hz or less), on a chip that has\n+ *          very high frequency as the calculation might\n+ *          cause integer overflow\n+ */\n+__STATIC_INLINE uint32_t Chip_SCTPWM_PercentageToTicks(LPC_SCT_T *pSCT, uint8_t percent)\n+{\n+\treturn (Chip_SCTPWM_GetTicksPerCycle(pSCT) * percent) / 100;\n+}\n+\n+/**\n+ * @brief\tGet number of ticks on per PWM cycle\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tindex\t: Index of the PWM 1 to N (see notes)\n+ * @return\tNumber ot ticks for which the output will be ON per cycle\n+ * @note\t@a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum.\n+ */\n+__STATIC_INLINE uint32_t Chip_SCTPWM_GetDutyCycle(LPC_SCT_T *pSCT, uint8_t index)\n+{\n+\treturn pSCT->MATCHREL[index].U;\n+}\n+\n+/**\n+ * @brief\tGet number of ticks on per PWM cycle\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tindex\t: Index of the PWM 1 to N (see notes)\n+ * @param\tticks\t: Number of ticks the output should say ON\n+ * @return\tNone\n+ * @note\t@a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum. The new duty cycle will be effective only\n+ *          after completion of current PWM cycle.\n+ */\n+__STATIC_INLINE void Chip_SCTPWM_SetDutyCycle(LPC_SCT_T *pSCT, uint8_t index, uint32_t ticks)\n+{\n+\tChip_SCT_SetMatchReload(pSCT, (CHIP_SCT_MATCH_REG_T) index, ticks);\n+}\n+\n+/**\n+ * @brief\tInitialize the SCT/PWM clock and reset\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_SCTPWM_Init(LPC_SCT_T *pSCT)\n+{\n+\tChip_SCT_Init(pSCT);\n+}\n+\n+/**\n+ * @brief\tStart the SCT PWM\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @return\tNone\n+ * @note\tThis function must be called after all the\n+ *          configuration is completed. Do not call Chip_SCTPWM_SetRate()\n+ *          or Chip_SCTPWM_SetOutPin() after the SCT/PWM is started. Use\n+ *          Chip_SCTPWM_Stop() to stop the SCT/PWM before reconfiguring,\n+ *          Chip_SCTPWM_SetDutyCycle() can be called when the SCT/PWM is\n+ *          running to change the DutyCycle.\n+ */\n+__STATIC_INLINE void Chip_SCTPWM_Start(LPC_SCT_T *pSCT)\n+{\n+\tChip_SCT_ClearControl(pSCT, SCT_CTRL_HALT_L | SCT_CTRL_HALT_H);\n+}\n+\n+/**\n+ * @brief\tStop the SCT PWM\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_SCTPWM_Stop(LPC_SCT_T *pSCT)\n+{\n+\t/* Stop SCT */\n+\tChip_SCT_SetControl(pSCT, SCT_CTRL_HALT_L | SCT_CTRL_HALT_H);\n+\n+\t/* Clear the counter */\n+\tChip_SCT_SetControl(pSCT, SCT_CTRL_CLRCTR_L | SCT_CTRL_CLRCTR_H);\n+}\n+\n+/**\n+ * @brief\tSets the frequency of the generated PWM wave\n+ * @param\tpSCT\t: The base of SCT peripheral on the chip\n+ * @param\tfreq\t: Frequency in Hz\n+ * @return\tNone\n+ */\n+void Chip_SCTPWM_SetRate(LPC_SCT_T *pSCT, uint32_t freq);\n+\n+/**\n+ * @brief\tSetup the OUTPUT pin and associate it with an index\n+ * @param\tpSCT\t: The base of the SCT peripheral on the chip\n+ * @param\tindex\t: Index of PWM 1 to N (see notes)\n+ * @param\tpin\t\t: COUT pin to be associated with the index\n+ * @return\tNone\n+ * @note\t@a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum.\n+ */\n+void Chip_SCTPWM_SetOutPin(LPC_SCT_T *pSCT, uint8_t index, uint8_t pin);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+\n+#endif\n+\n+#endif /* __SCT_PWM_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/spi_common_5410x.h ./chip/inc/spi_common_5410x.h\n--- a_tnusFF/chip/inc/spi_common_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/spi_common_5410x.h\t2016-10-22 23:17:43.572840278 -0300\n@@ -0,0 +1,701 @@\n+/*\n+ * @brief LPC5410X SPI common functions and definitions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SPI_COMMON_5410X_H_\n+#define __SPI_COMMON_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SPI_COMMON_5410X CHIP: LPC5410X SPI driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief SPI register block structure\n+ */\n+typedef struct {\t\t\t\t\t/*!< SPI Structure */\n+\t__IO uint32_t  CFG;\t\t\t\t/*!< SPI Configuration register */\n+\t__IO uint32_t  DLY;\t\t\t\t/*!< SPI Delay register */\n+\t__IO uint32_t  STAT;\t\t\t/*!< SPI Status register */\n+\t__IO uint32_t  INTENSET;\t\t/*!< SPI Interrupt Enable Set register */\n+\t__O uint32_t  INTENCLR;\t\t/*!< SPI Interrupt Enable Clear register */\n+\t__I  uint32_t  RXDAT;\t\t\t/*!< SPI Receive Data register */\n+\t__IO uint32_t  TXDATCTL;\t\t/*!< SPI Transmit Data with Control register */\n+\t__O  uint32_t  TXDAT;\t\t\t/*!< SPI Transmit Data register */\n+\t__IO uint32_t  TXCTRL;\t\t\t/*!< SPI Transmit Control register */\n+\t__IO uint32_t  DIV;\t\t\t\t/*!< SPI clock Divider register */\n+\t__I  uint32_t  INTSTAT;\t\t\t/*!< SPI Interrupt Status register */\n+} LPC_SPI_T;\n+\n+/**\n+ * Macro defines for SPI Configuration register\n+ */\n+#define SPI_CFG_BITMASK         (0xFBD)\t\t\t\t\t\t/** SPI register bit mask */\n+#define SPI_CFG_SPI_EN          (1 << 0)\t\t\t\t\t/** SPI Slave Mode Select */\n+#define SPI_CFG_SLAVE_EN        (0 << 0)\t\t\t\t\t/** SPI Master Mode Select */\n+#define SPI_CFG_MASTER_EN       (1 << 2)\t\t\t\t\t/** SPI MSB First mode enable */\n+#define SPI_CFG_MSB_FIRST_EN    (0 << 3)\t\t\t\t\t/** SPI LSB First mode enable */\n+#define SPI_CFG_LSB_FIRST_EN    (1 << 3)\t\t\t\t\t/** SPI Clock Phase Select */\n+#define SPI_CFG_CPHA_FIRST      (0 << 4)\t\t\t\t\t/** Capture data on the first edge, Change data on the following edge */\n+#define SPI_CFG_CPHA_SECOND     (1 << 4)\t\t\t\t\t/** SPI Clock Polarity Select */\n+#define SPI_CFG_CPOL_LO         (0 << 5)\t\t\t\t\t/** The rest state of the clock (between frames) is low. */\n+#define SPI_CFG_CPOL_HI         (1 << 5)\t\t\t\t\t/** The rest state of the clock (between frames) is high. */\n+#define SPI_CFG_LBM_EN          (1 << 7)\t\t\t\t\t/** SPI control 1 loopback mode enable */\n+#define SPI_CFG_SPOL_LO         (0 << 8)\t\t\t\t\t/** SPI SSEL0 Polarity Select */\n+#define SPI_CFG_SPOL_HI         (1 << 8)\t\t\t\t\t/** SSEL0 is active High */\n+#define SPI_CFG_SPOLNUM_HI(n)   (1 << ((n) + 8))\t\t\t/** SSELN is active High, selects 0 - 3 */\n+\n+/**\n+ * Macro defines for SPI Delay register\n+ */\n+#define  SPI_DLY_BITMASK            (0xFFFF)\t\t\t\t/** SPI DLY Register Mask */\n+#define  SPI_DLY_PRE_DELAY(n)       (((n) & 0x0F) << 0)\t\t/** Time in SPI clocks between SSEL assertion and the beginning of a data frame */\n+#define  SPI_DLY_POST_DELAY(n)      (((n) & 0x0F) << 4)\t\t/** Time in SPI clocks between the end of a data frame and SSEL deassertion. */\n+#define  SPI_DLY_FRAME_DELAY(n)     (((n) & 0x0F) << 8)\t\t/** Minimum time in SPI clocks between adjacent data frames. */\n+#define  SPI_DLY_TRANSFER_DELAY(n)  (((n) & 0x0F) << 12)\t/** Minimum time in SPI clocks that the SSEL is deasserted between transfers. */\n+\n+/**\n+ * Macro defines for SPI Status register\n+ */\n+#define SPI_STAT_BITMASK            (0x1FF)\t\t\t\t\t/** SPI STAT Register BitMask */\n+#define SPI_STAT_RXRDY              (1 << 0)\t\t\t\t/** Receiver Ready Flag */\n+#define SPI_STAT_TXRDY              (1 << 1)\t\t\t\t/** Transmitter Ready Flag */\n+#define SPI_STAT_RXOV               (1 << 2)\t\t\t\t/** Receiver Overrun interrupt flag */\n+#define SPI_STAT_TXUR               (1 << 3)\t\t\t\t/** Transmitter Underrun interrupt flag (In Slave Mode only) */\n+#define SPI_STAT_SSA                (1 << 4)\t\t\t\t/** Slave Select Assert */\n+#define SPI_STAT_SSD                (1 << 5)\t\t\t\t/** Slave Select Deassert */\n+#define SPI_STAT_STALLED            (1 << 6)\t\t\t\t/** Stalled status flag */\n+#define SPI_STAT_EOT                (1 << 7)\t\t\t\t/** End Transfer flag */\n+#define SPI_STAT_MSTIDLE            (1 << 8)\t\t\t\t/** Idle status flag */\n+\n+/**\n+ * Macro defines for SPI Interrupt Enable read and Set register\n+ */\n+#define SPI_INTENSET_BITMASK        (0x3F)\t\t\t\t\t/** SPI INTENSET Register BitMask */\n+#define SPI_INTENSET_RXDYEN         (1 << 0)\t\t\t\t/** Enable Interrupt when receiver data is available */\n+#define SPI_INTENSET_TXDYEN         (1 << 1)\t\t\t\t/** Enable Interrupt when the transmitter holding register is available. */\n+#define SPI_INTENSET_RXOVEN         (1 << 2)\t\t\t\t/**  Enable Interrupt when a receiver overrun occurs */\n+#define SPI_INTENSET_TXUREN         (1 << 3)\t\t\t\t/**  Enable Interrupt when a transmitter underrun occurs (In Slave Mode Only)*/\n+#define SPI_INTENSET_SSAEN          (1 << 4)\t\t\t\t/**  Enable Interrupt when the Slave Select is asserted.*/\n+#define SPI_INTENSET_SSDEN          (1 << 5)\t\t\t\t/**  Enable Interrupt when the Slave Select is deasserted..*/\n+\n+/**\n+ * Macro defines for SPI Interrupt Enable Clear register\n+ */\n+#define SPI_INTENCLR_BITMASK        (0x3F)\t\t\t\t\t/** SPI INTENCLR Register BitMask */\n+#define SPI_INTENCLR_RXDYEN         (1 << 0)\t\t\t\t/** Disable Interrupt when receiver data is available */\n+#define SPI_INTENCLR_TXDYEN         (1 << 1)\t\t\t\t/** Disable Interrupt when the transmitter holding register is available. */\n+#define SPI_INTENCLR_RXOVEN         (1 << 2)\t\t\t\t/** Disable Interrupt when a receiver overrun occurs */\n+#define SPI_INTENCLR_TXUREN         (1 << 3)\t\t\t\t/** Disable Interrupt when a transmitter underrun occurs (In Slave Mode Only) */\n+#define SPI_INTENCLR_SSAEN          (1 << 4)\t\t\t\t/** Disable Interrupt when the Slave Select is asserted. */\n+#define SPI_INTENCLR_SSDEN          (1 << 5)\t\t\t\t/** Disable Interrupt when the Slave Select is deasserted.. */\n+\n+/**\n+ * Macro defines for SPI Receiver Data register\n+ */\n+#define SPI_RXDAT_BITMASK           (0x1FFFFF)\t\t\t\t/** SPI RXDAT Register BitMask */\n+#define SPI_RXDAT_DATA(n)           ((n) & 0xFFFF)\t\t\t/** Receiver Data  */\n+#define SPI_RXDAT_RXSSELN_ACTIVE    (0 << 16)\t\t\t\t/** The state of SSEL pin is active */\n+#define SPI_RXDAT_RXSSELN_INACTIVE  ((1 << 16)\t\t\t\t/** The state of SSEL pin is inactive */\n+#define SPI_RXDAT_RXSSELNUM_INACTIVE(n) (1 << ((n) + 16))\t/** The state of SSELN pin is inactive */\n+#define SPI_RXDAT_SOT               (1 << 20)\t\t\t\t/** Start of Transfer flag  */\n+\n+/**\n+ * Macro defines for SPI Transmitter Data and Control register\n+ */\n+#define SPI_TXDATCTL_BITMASK        (0xF7FFFFF)\t\t\t\t/** SPI TXDATCTL Register BitMask */\n+#define SPI_TXDATCTL_DATA(n)        ((n) & 0xFFFF)\t\t\t/** SPI Transmit Data */\n+#define SPI_TXDATCTL_CTRLMASK       (0xF7F0000)\t\t\t\t/** SPI TXDATCTL Register BitMask for control bits only */\n+#define SPI_TXDATCTL_ASSERT_SSEL    (0 << 16)\t\t\t\t/** Assert SSEL0 pin */\n+#define SPI_TXDATCTL_DEASSERT_SSEL  (1 << 16)\t\t\t\t/** Deassert SSEL0 pin */\n+#define SPI_TXDATCTL_DEASSERTNUM_SSEL(n)    (1 << ((n) + 16))\t/** Deassert SSELN pin */\n+#define SPI_TXDATCTL_DEASSERT_ALL   (0xF << 16)\t\t\t\t/** Deassert all SSEL pins */\n+#define SPI_TXDATCTL_EOT            (1 << 20)\t\t\t\t/** End of Transfer flag (TRANSFER_DELAY is applied after sending the current frame) */\n+#define SPI_TXDATCTL_EOF            (1 << 21)\t\t\t\t/** End of Frame flag (FRAME_DELAY is applied after sending the current part) */\n+#define SPI_TXDATCTL_RXIGNORE       (1 << 22)\t\t\t\t/** Receive Ignore Flag */\n+#define SPI_TXDATCTL_FLEN(n)        (((n) & 0x0F) << 24)\t/** Frame length - 1 */\n+\n+/**\n+ * Macro defines for SPI Transmitter Data Register\n+ */\n+#define SPI_TXDAT_DATA(n)           ((n) & 0xFFFF)\t\t\t/** SPI Transmit Data */\n+\n+/**\n+ * Macro defines for SPI Transmitter Control register\n+ */\n+#define SPI_TXCTL_BITMASK           (0xF7F0000)\t\t\t\t/** SPI TXDATCTL Register BitMask */\n+#define SPI_TXCTL_ASSERT_SSEL       (0 << 16)\t\t\t\t/** Assert SSEL0 pin */\n+#define SPI_TXCTL_DEASSERT_SSEL     (1 << 16)\t\t\t\t/** Deassert SSEL0 pin */\n+#define SPI_TXCTL_DEASSERTNUM_SSEL(n)   (1 << ((n) + 16))\t/** Deassert SSELN pin */\n+#define SPI_TXDATCTL_DEASSERT_ALL   (0xF << 16)\t\t\t\t/** Deassert all SSEL pins */\n+#define SPI_TXCTL_EOT               (1 << 20)\t\t\t\t/** End of Transfer flag (TRANSFER_DELAY is applied after sending the current frame) */\n+#define SPI_TXCTL_EOF               (1 << 21)\t\t\t\t/** End of Frame flag (FRAME_DELAY is applied after sending the current part) */\n+#define SPI_TXCTL_RXIGNORE          (1 << 22)\t\t\t\t/** Receive Ignore Flag */\n+#define SPI_TXCTL_FLEN(n)           ((((n) - 1) & 0x0F) << 24)\t/** Frame length, 0 - 16 */\n+#define SPI_TXCTL_FLENMASK          (0xF << 24)\t\t\t\t/** Frame length mask */\n+\n+/**\n+ * Macro defines for SPI Divider register\n+ */\n+#define SPI_DIV_VAL(n)          ((n) & 0xFFFF)\t\t\t\t/** Rate divider value mask (In Master Mode only)*/\n+\n+/**\n+ * Macro defines for SPI Interrupt Status register\n+ */\n+#define SPI_INTSTAT_BITMASK         (0x3F)\t\t\t\t\t/** SPI INTSTAT Register Bitmask */\n+#define SPI_INTSTAT_RXRDY           (1 << 0)\t\t\t\t/** Receiver Ready Flag */\n+#define SPI_INTSTAT_TXRDY           (1 << 1)\t\t\t\t/** Transmitter Ready Flag */\n+#define SPI_INTSTAT_RXOV            (1 << 2)\t\t\t\t/** Receiver Overrun interrupt flag */\n+#define SPI_INTSTAT_TXUR            (1 << 3)\t\t\t\t/** Transmitter Underrun interrupt flag (In Slave Mode only) */\n+#define SPI_INTSTAT_SSA             (1 << 4)\t\t\t\t/** Slave Select Assert */\n+#define SPI_INTSTAT_SSD             (1 << 5)\t\t\t\t/** Slave Select Deassert */\n+\n+/** @brief SPI Clock Mode*/\n+typedef enum {\n+\tROM_SPI_CLOCK_CPHA0_CPOL0 = 0,\t\t\t\t\t\t/**< CPHA = 0, CPOL = 0 */\n+\tROM_SPI_CLOCK_MODE0 = ROM_SPI_CLOCK_CPHA0_CPOL0,\t/**< Alias for CPHA = 0, CPOL = 0 */\n+\tROM_SPI_CLOCK_CPHA1_CPOL0 = 1,\t\t\t\t\t\t/**< CPHA = 0, CPOL = 1 */\n+\tROM_SPI_CLOCK_MODE1 = ROM_SPI_CLOCK_CPHA1_CPOL0,\t/**< Alias for CPHA = 0, CPOL = 1 */\n+\tROM_SPI_CLOCK_CPHA0_CPOL1 = 2,\t\t\t\t\t\t/**< CPHA = 1, CPOL = 0 */\n+\tROM_SPI_CLOCK_MODE2 = ROM_SPI_CLOCK_CPHA0_CPOL1,\t/**< Alias for CPHA = 1, CPOL = 0 */\n+\tROM_SPI_CLOCK_CPHA1_CPOL1 = 3,\t\t\t\t\t\t/**< CPHA = 1, CPOL = 1 */\n+\tROM_SPI_CLOCK_MODE3 = ROM_SPI_CLOCK_CPHA1_CPOL1,\t/**< Alias for CPHA = 1, CPOL = 1 */\n+} ROM_SPI_CLOCK_MODE_T;\n+\n+/**\n+ * Macro defines for SPI Configuration register\n+ */\n+#define SPI_CFG_BITMASK         (0xFBD)\t\t\t\t\t\t/** SPI register bit mask */\n+#define SPI_CFG_SPI_EN          (1 << 0)\t\t\t\t\t/** SPI Slave Mode Select */\n+#define SPI_CFG_SLAVE_EN        (0 << 0)\t\t\t\t\t/** SPI Master Mode Select */\n+#define SPI_CFG_MASTER_EN       (1 << 2)\t\t\t\t\t/** SPI MSB First mode enable */\n+#define SPI_CFG_MSB_FIRST_EN    (0 << 3)\t\t\t\t\t/** SPI LSB First mode enable */\n+#define SPI_CFG_LSB_FIRST_EN    (1 << 3)\t\t\t\t\t/** SPI Clock Phase Select */\n+#define SPI_CFG_CPHA_FIRST      (0 << 4)\t\t\t\t\t/** Capture data on the first edge, Change data on the following edge */\n+#define SPI_CFG_CPHA_SECOND     (1 << 4)\t\t\t\t\t/** SPI Clock Polarity Select */\n+#define SPI_CFG_CPOL_LO         (0 << 5)\t\t\t\t\t/** The rest state of the clock (between frames) is low. */\n+#define SPI_CFG_CPOL_HI         (1 << 5)\t\t\t\t\t/** The rest state of the clock (between frames) is high. */\n+#define SPI_CFG_LBM_EN          (1 << 7)\t\t\t\t\t/** SPI control 1 loopback mode enable */\n+#define SPI_CFG_SPOL_LO         (0 << 8)\t\t\t\t\t/** SPI SSEL0 Polarity Select */\n+#define SPI_CFG_SPOL_HI         (1 << 8)\t\t\t\t\t/** SSEL0 is active High */\n+#define SPI_CFG_SPOLNUM_HI(n)   (1 << ((n) + 8))\t\t\t/** SSELN is active High, selects 0 - 3 */\n+\n+/**\n+ * Macro defines for SPI Delay register\n+ */\n+#define  SPI_DLY_BITMASK            (0xFFFF)\t\t\t\t/** SPI DLY Register Mask */\n+#define  SPI_DLY_PRE_DELAY(n)       (((n) & 0x0F) << 0)\t\t/** Time in SPI clocks between SSEL assertion and the beginning of a data frame */\n+#define  SPI_DLY_POST_DELAY(n)      (((n) & 0x0F) << 4)\t\t/** Time in SPI clocks between the end of a data frame and SSEL deassertion. */\n+#define  SPI_DLY_FRAME_DELAY(n)     (((n) & 0x0F) << 8)\t\t/** Minimum time in SPI clocks between adjacent data frames. */\n+#define  SPI_DLY_TRANSFER_DELAY(n)  (((n) & 0x0F) << 12)\t/** Minimum time in SPI clocks that the SSEL is deasserted between transfers. */\n+\n+/**\n+ * Macro defines for SPI Status register\n+ */\n+#define SPI_STAT_BITMASK            (0x1FF)\t\t\t\t\t/** SPI STAT Register BitMask */\n+#define SPI_STAT_RXRDY              (1 << 0)\t\t\t\t/** Receiver Ready Flag */\n+#define SPI_STAT_TXRDY              (1 << 1)\t\t\t\t/** Transmitter Ready Flag */\n+#define SPI_STAT_RXOV               (1 << 2)\t\t\t\t/** Receiver Overrun interrupt flag */\n+#define SPI_STAT_TXUR               (1 << 3)\t\t\t\t/** Transmitter Underrun interrupt flag (In Slave Mode only) */\n+#define SPI_STAT_SSA                (1 << 4)\t\t\t\t/** Slave Select Assert */\n+#define SPI_STAT_SSD                (1 << 5)\t\t\t\t/** Slave Select Deassert */\n+#define SPI_STAT_STALLED            (1 << 6)\t\t\t\t/** Stalled status flag */\n+#define SPI_STAT_EOT                (1 << 7)\t\t\t\t/** End Transfer flag */\n+#define SPI_STAT_MSTIDLE            (1 << 8)\t\t\t\t/** Idle status flag */\n+\n+/**\n+ * Macro defines for SPI Interrupt Enable read and Set register\n+ */\n+#define SPI_INTENSET_BITMASK        (0x3F)\t\t\t\t\t/** SPI INTENSET Register BitMask */\n+#define SPI_INTENSET_RXDYEN         (1 << 0)\t\t\t\t/** Enable Interrupt when receiver data is available */\n+#define SPI_INTENSET_TXDYEN         (1 << 1)\t\t\t\t/** Enable Interrupt when the transmitter holding register is available. */\n+#define SPI_INTENSET_RXOVEN         (1 << 2)\t\t\t\t/**  Enable Interrupt when a receiver overrun occurs */\n+#define SPI_INTENSET_TXUREN         (1 << 3)\t\t\t\t/**  Enable Interrupt when a transmitter underrun occurs (In Slave Mode Only)*/\n+#define SPI_INTENSET_SSAEN          (1 << 4)\t\t\t\t/**  Enable Interrupt when the Slave Select is asserted.*/\n+#define SPI_INTENSET_SSDEN          (1 << 5)\t\t\t\t/**  Enable Interrupt when the Slave Select is deasserted..*/\n+\n+/**\n+ * Macro defines for SPI Interrupt Enable Clear register\n+ */\n+#define SPI_INTENCLR_BITMASK        (0x3F)\t\t\t\t\t/** SPI INTENCLR Register BitMask */\n+#define SPI_INTENCLR_RXDYEN         (1 << 0)\t\t\t\t/** Disable Interrupt when receiver data is available */\n+#define SPI_INTENCLR_TXDYEN         (1 << 1)\t\t\t\t/** Disable Interrupt when the transmitter holding register is available. */\n+#define SPI_INTENCLR_RXOVEN         (1 << 2)\t\t\t\t/** Disable Interrupt when a receiver overrun occurs */\n+#define SPI_INTENCLR_TXUREN         (1 << 3)\t\t\t\t/** Disable Interrupt when a transmitter underrun occurs (In Slave Mode Only) */\n+#define SPI_INTENCLR_SSAEN          (1 << 4)\t\t\t\t/** Disable Interrupt when the Slave Select is asserted. */\n+#define SPI_INTENCLR_SSDEN          (1 << 5)\t\t\t\t/** Disable Interrupt when the Slave Select is deasserted.. */\n+\n+/**\n+ * Macro defines for SPI Receiver Data register\n+ */\n+#define SPI_RXDAT_BITMASK           (0x1FFFFF)\t\t\t\t/** SPI RXDAT Register BitMask */\n+#define SPI_RXDAT_DATA(n)           ((n) & 0xFFFF)\t\t\t/** Receiver Data  */\n+#define SPI_RXDAT_RXSSELN_ACTIVE    (0 << 16)\t\t\t\t/** The state of SSEL pin is active */\n+#define SPI_RXDAT_RXSSELN_INACTIVE  ((1 << 16)\t\t\t\t/** The state of SSEL pin is inactive */\n+#define SPI_RXDAT_RXSSELNUM_INACTIVE(n) (1 << ((n) + 16))\t/** The state of SSELN pin is inactive */\n+#define SPI_RXDAT_SOT               (1 << 20)\t\t\t\t/** Start of Transfer flag  */\n+\n+/**\n+ * Macro defines for SPI Transmitter Data and Control register\n+ */\n+#define SPI_TXDATCTL_BITMASK        (0xF7FFFFF)\t\t\t\t/** SPI TXDATCTL Register BitMask */\n+#define SPI_TXDATCTL_DATA(n)        ((n) & 0xFFFF)\t\t\t/** SPI Transmit Data */\n+#define SPI_TXDATCTL_CTRLMASK       (0xF7F0000)\t\t\t\t/** SPI TXDATCTL Register BitMask for control bits only */\n+#define SPI_TXDATCTL_ASSERT_SSEL    (0 << 16)\t\t\t\t/** Assert SSEL0 pin */\n+#define SPI_TXDATCTL_DEASSERT_SSEL  (1 << 16)\t\t\t\t/** Deassert SSEL0 pin */\n+#define SPI_TXDATCTL_DEASSERTNUM_SSEL(n)    (1 << ((n) + 16))\t/** Deassert SSELN pin */\n+#define SPI_TXDATCTL_DEASSERT_ALL   (0xF << 16)\t\t\t\t/** Deassert all SSEL pins */\n+#define SPI_TXDATCTL_EOT            (1 << 20)\t\t\t\t/** End of Transfer flag (TRANSFER_DELAY is applied after sending the current frame) */\n+#define SPI_TXDATCTL_EOF            (1 << 21)\t\t\t\t/** End of Frame flag (FRAME_DELAY is applied after sending the current part) */\n+#define SPI_TXDATCTL_RXIGNORE       (1 << 22)\t\t\t\t/** Receive Ignore Flag */\n+#define SPI_TXDATCTL_FLEN(n)        (((n) & 0x0F) << 24)\t/** Frame length - 1 */\n+\n+/**\n+ * Macro defines for SPI Transmitter Data Register\n+ */\n+#define SPI_TXDAT_DATA(n)           ((n) & 0xFFFF)\t\t\t/** SPI Transmit Data */\n+\n+/**\n+ * Macro defines for SPI Transmitter Control register\n+ */\n+#define SPI_TXCTL_BITMASK           (0xF7F0000)\t\t\t\t/** SPI TXDATCTL Register BitMask */\n+#define SPI_TXCTL_ASSERT_SSEL       (0 << 16)\t\t\t\t/** Assert SSEL0 pin */\n+#define SPI_TXCTL_DEASSERT_SSEL     (1 << 16)\t\t\t\t/** Deassert SSEL0 pin */\n+#define SPI_TXCTL_DEASSERTNUM_SSEL(n)   (1 << ((n) + 16))\t/** Deassert SSELN pin */\n+#define SPI_TXDATCTL_DEASSERT_ALL   (0xF << 16)\t\t\t\t/** Deassert all SSEL pins */\n+#define SPI_TXCTL_EOT               (1 << 20)\t\t\t\t/** End of Transfer flag (TRANSFER_DELAY is applied after sending the current frame) */\n+#define SPI_TXCTL_EOF               (1 << 21)\t\t\t\t/** End of Frame flag (FRAME_DELAY is applied after sending the current part) */\n+#define SPI_TXCTL_RXIGNORE          (1 << 22)\t\t\t\t/** Receive Ignore Flag */\n+#define SPI_TXCTL_FLEN(n)           ((((n) - 1) & 0x0F) << 24)\t/** Frame length, 0 - 16 */\n+#define SPI_TXCTL_FLENMASK          (0xF << 24)\t\t\t\t/** Frame length mask */\n+\n+/**\n+ * Macro defines for SPI Divider register\n+ */\n+#define SPI_DIV_VAL(n)          ((n) & 0xFFFF)\t\t\t\t/** Rate divider value mask (In Master Mode only)*/\n+\n+/**\n+ * Macro defines for SPI Interrupt Status register\n+ */\n+#define SPI_INTSTAT_BITMASK         (0x3F)\t\t\t\t\t/** SPI INTSTAT Register Bitmask */\n+#define SPI_INTSTAT_RXRDY           (1 << 0)\t\t\t\t/** Receiver Ready Flag */\n+#define SPI_INTSTAT_TXRDY           (1 << 1)\t\t\t\t/** Transmitter Ready Flag */\n+#define SPI_INTSTAT_RXOV            (1 << 2)\t\t\t\t/** Receiver Overrun interrupt flag */\n+#define SPI_INTSTAT_TXUR            (1 << 3)\t\t\t\t/** Transmitter Underrun interrupt flag (In Slave Mode only) */\n+#define SPI_INTSTAT_SSA             (1 << 4)\t\t\t\t/** Slave Select Assert */\n+#define SPI_INTSTAT_SSD             (1 << 5)\t\t\t\t/** Slave Select Deassert */\n+\n+/**\n+ * @brief\tSet SPI CFG register values\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tbits\t: CFG register bits to set, amd OR'ed value of SPI_CFG_* definitions\n+ * @return\tNothing\n+ * @note\tThis function safely sets only the selected bits in the SPI CFG register.\n+ * It can be used to enable multiple bits at once.\n+ */\n+__STATIC_INLINE void Chip_SPI_SetCFGRegBits(LPC_SPI_T *pSPI, uint32_t bits)\n+{\n+\t/* Mask off bits that are write as 0, read as undefined */\n+\tpSPI->CFG = (pSPI->CFG | bits) & SPI_CFG_BITMASK;\n+}\n+\n+/**\n+ * @brief\tClear SPI CFG register values\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tbits\t: CFG register bits to clear, amd OR'ed value of SPI_CFG_* definitions\n+ * @return\tNothing\n+ * @note\tThis function safely clears only the selected bits in the SPI CFG register.\n+ * It can be used to disable multiple bits at once.\n+ */\n+__STATIC_INLINE void Chip_SPI_ClearCFGRegBits(LPC_SPI_T *pSPI, uint32_t bits)\n+{\n+\t/* Mask off bits that are write as 0, read as undefined */\n+\tpSPI->CFG = pSPI->CFG & (SPI_CFG_BITMASK & ~bits);\n+}\n+\n+/**\n+ * @brief\tEnable SPI peripheral\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_Enable(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_SetCFGRegBits(pSPI, SPI_CFG_SPI_EN);\n+}\n+\n+/**\n+ * @brief\tDisable SPI peripheral\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_Disable(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_ClearCFGRegBits(pSPI, SPI_CFG_SPI_EN);\n+}\n+\n+/**\n+ * @brief   Initialize the SPI\n+ * @param\tpSPI\t: The base SPI peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_Init(LPC_SPI_T *pSPI)\n+{\n+\tif (pSPI == LPC_SPI1) {\n+\t\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_SPI1);\n+\t\tChip_SYSCON_PeriphReset(RESET_SPI1);\n+\t}\n+\telse {\n+\t\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_SPI0);\n+\t\tChip_SYSCON_PeriphReset(RESET_SPI0);\n+\t}\n+}\n+\n+/**\n+ * @brief\tDisable SPI operation\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ * @note\tThe SPI controller is disabled.\n+ */\n+__STATIC_INLINE void Chip_SPI_DeInit(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_Disable(pSPI);\n+\tif (pSPI == LPC_SPI1) {\n+\t\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_SPI1);\n+\t}\n+\telse {\n+\t\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_SPI0);\n+\t}\n+}\n+\n+/**\n+ * @brief\tEnable SPI master mode\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ * @note SPI slave mode will be disabled with this call. All SPI SSEL\n+ * lines will also be deasserted.\n+ */\n+__STATIC_INLINE void Chip_SPI_EnableMasterMode(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_SetCFGRegBits(pSPI, SPI_CFG_MASTER_EN);\n+\n+\t/* Deassert all chip selects, only in master mode */\n+\tpSPI->TXCTRL = SPI_TXDATCTL_DEASSERT_ALL;\n+}\n+\n+/**\n+ * @brief\tEnable SPI slave mode\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ * @note SPI master mode will be disabled with this call.\n+ */\n+__STATIC_INLINE void Chip_SPI_EnableSlaveMode(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_ClearCFGRegBits(pSPI, SPI_CFG_MASTER_EN);\n+}\n+\n+/**\n+ * @brief\tEnable LSB First transfers\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_EnableLSBFirst(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_SetCFGRegBits(pSPI, SPI_CFG_LSB_FIRST_EN);\n+}\n+\n+/**\n+ * @brief\tEnable MSB First transfers\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_EnableMSBFirst(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_ClearCFGRegBits(pSPI, SPI_CFG_LSB_FIRST_EN);\n+}\n+\n+/** @brief SPI Clock Mode*/\n+typedef enum IP_SPI_CLOCK_MODE {\n+\tSPI_CLOCK_CPHA0_CPOL0 = SPI_CFG_CPOL_LO | SPI_CFG_CPHA_FIRST,\t\t/**< CPHA = 0, CPOL = 0 */\n+\tSPI_CLOCK_MODE0 = SPI_CLOCK_CPHA0_CPOL0,\t\t\t\t\t\t\t/**< Alias for CPHA = 0, CPOL = 0 */\n+\tSPI_CLOCK_CPHA1_CPOL0 = SPI_CFG_CPOL_LO | SPI_CFG_CPHA_SECOND,\t\t/**< CPHA = 0, CPOL = 1 */\n+\tSPI_CLOCK_MODE1 = SPI_CLOCK_CPHA1_CPOL0,\t\t\t\t\t\t\t/**< Alias for CPHA = 0, CPOL = 1 */\n+\tSPI_CLOCK_CPHA0_CPOL1 = SPI_CFG_CPOL_HI | SPI_CFG_CPHA_FIRST,\t\t/**< CPHA = 1, CPOL = 0 */\n+\tSPI_CLOCK_MODE2 = SPI_CLOCK_CPHA0_CPOL1,\t\t\t\t\t\t\t/**< Alias for CPHA = 1, CPOL = 0 */\n+\tSPI_CLOCK_CPHA1_CPOL1 = SPI_CFG_CPOL_HI | SPI_CFG_CPHA_SECOND,\t\t/**< CPHA = 1, CPOL = 1 */\n+\tSPI_CLOCK_MODE3 = SPI_CLOCK_CPHA1_CPOL1,\t\t\t\t\t\t\t/**< Alias for CPHA = 1, CPOL = 1 */\n+} SPI_CLOCK_MODE_T;\n+\n+/**\n+ * @brief\tSet SPI mode\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tmode\t: SPI mode to set the SPI interface to\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_SetSPIMode(LPC_SPI_T *pSPI, SPI_CLOCK_MODE_T mode)\n+{\n+\tChip_SPI_ClearCFGRegBits(pSPI, (SPI_CFG_CPOL_HI | SPI_CFG_CPHA_SECOND));\n+\tChip_SPI_SetCFGRegBits(pSPI, (uint32_t) mode);\n+}\n+\n+/**\n+ * @brief\tSet polarity on the SPI chip select high\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tcsNum\t: Chip select number, 0 - 3\n+ * @return\tNothing\n+ * @note\tSPI chip select polarity is active high.\n+ */\n+__STATIC_INLINE void Chip_SPI_SetCSPolHigh(LPC_SPI_T *pSPI, uint8_t csNum)\n+{\n+\tChip_SPI_SetCFGRegBits(pSPI, SPI_CFG_SPOLNUM_HI(csNum));\n+}\n+\n+/**\n+ * @brief\tSet polarity on the SPI chip select low\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tcsNum\t: Chip select number, 0 - 3\n+ * @return\tNothing\n+ * @note\tSPI chip select polarity is active low.\n+ */\n+__STATIC_INLINE void Chip_SPI_SetCSPolLow(LPC_SPI_T *pSPI, uint8_t csNum)\n+{\n+\tChip_SPI_ClearCFGRegBits(pSPI, SPI_CFG_SPOLNUM_HI(csNum));\n+}\n+\n+/** SPI configuration structure used for setting up master/slave mode, LSB or\n+ * MSB first, and SPI mode in a single function call. */\n+typedef struct {\n+\tuint32_t master             : 8;\t/* Set to non-0 value to use master mode, 0 for slave */\n+\tuint32_t lsbFirst           : 8;\t/* Set to non-0 value to send LSB first, 0 for MSB first */\n+\tSPI_CLOCK_MODE_T mode       : 8;\t/* Mode selection */\n+\tuint32_t reserved           : 8;\t/* Reserved, for alignment only */\n+} SPI_CFGSETUP_T;\n+\n+/**\n+ * @brief\tSetup SPI configuration\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tpCFG\t: Pointer to SPI configuration structure\n+ * @return\tNothing\n+ */\n+void Chip_SPI_ConfigureSPI(LPC_SPI_T *pSPI, SPI_CFGSETUP_T *pCFG);\n+\n+/**\n+ * @brief\tGet the current status of SPI controller\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tSPI Status (Or-ed bit value of SPI_STAT_*)\n+ * @note\tMask the return value with a value of type SPI_STAT_* to determine\n+ * if that status is active.\n+ */\n+__STATIC_INLINE uint32_t Chip_SPI_GetStatus(LPC_SPI_T *pSPI)\n+{\n+\treturn pSPI->STAT;\n+}\n+\n+/**\n+ * @brief\tClear SPI status\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tFlag\t: Clear Flag (Or-ed bit value of SPI_STAT_*)\n+ * @return\tNothing\n+ * @note\tOnly SPI_STAT_RXOV, SPI_STAT_TXUR, SPI_STAT_SSA, and\n+ * SPI_STAT_SSD statuses can be cleared.\n+ */\n+__STATIC_INLINE void Chip_SPI_ClearStatus(LPC_SPI_T *pSPI, uint32_t Flag)\n+{\n+\tpSPI->STAT = Flag;\n+}\n+\n+/**\n+ * @brief\tEnable a SPI interrupt\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tintMask\t: Or'ed value of SPI_INTENSET_* values to enable\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_EnableInts(LPC_SPI_T *pSPI, uint32_t intMask)\n+{\n+\tpSPI->INTENSET = intMask;\n+}\n+\n+/**\n+ * @brief\tDisable a SPI interrupt\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tintMask\t: Or'ed value of SPI_INTENCLR_* values to disable\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_DisableInts(LPC_SPI_T *pSPI, uint32_t intMask)\n+{\n+\tpSPI->INTENCLR = intMask;\n+}\n+\n+/**\n+ * @brief\tReturn enabled SPI interrupts\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tAn Or'ed value of SPI_INTENSET_* values\n+ * @note\tMask the return value with a SPI_INTENSET_* value to determine\n+ * if the interrupt is enabled.\n+ */\n+__STATIC_INLINE uint32_t Chip_SPI_GetEnabledInts(LPC_SPI_T *pSPI)\n+{\n+\treturn pSPI->INTENSET;\n+}\n+\n+/**\n+ * @brief\tReturn pending SPI interrupts\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tAn Or'ed value of SPI_INTSTAT_* values\n+ * @note\tMask the return value with a SPI_INTSTAT_* value to determine\n+ * if the interrupt is pending.\n+ */\n+__STATIC_INLINE uint32_t Chip_SPI_GetPendingInts(LPC_SPI_T *pSPI)\n+{\n+\treturn pSPI->INTSTAT;\n+}\n+\n+/**\n+ * @brief\tFlush FIFOs\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_FlushFifos(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_Disable(pSPI);\n+\tChip_SPI_Enable(pSPI);\n+}\n+\n+/**\n+ * @brief\tRead raw data from receive FIFO with status bits\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tCurrent value in receive data FIFO plus status bits\n+ */\n+__STATIC_INLINE uint32_t Chip_SPI_ReadRawRXFifo(LPC_SPI_T *pSPI)\n+{\n+\treturn pSPI->RXDAT;\n+}\n+\n+/**\n+ * @brief\tRead data from receive FIFO masking off status bits\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tCurrent value in receive data FIFO\n+ * @note\tThe return value is masked with 0xFFFF to not exceed 16-bits. All\n+ * other status bits are thrown away. This register should only be read if it\n+ * has data in it. This function is useful for systems that don't need SPI\n+ * select (SSEL) monitoring.\n+ */\n+__STATIC_INLINE uint32_t Chip_SPI_ReadRXData(LPC_SPI_T *pSPI)\n+{\n+\treturn pSPI->RXDAT & 0xFFFF;\n+}\n+\n+/**\n+ * @brief\tWrite data to transmit FIFO\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tdata\t: Data to write\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_WriteTXData(LPC_SPI_T *pSPI, uint16_t data)\n+{\n+\tpSPI->TXDAT = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief\tSet SPI TXCTRL register control options\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tbits\t: TXCTRL register bits to set, amd OR'ed value of SPI_TXDATCTL_* definitions\n+ * @return\tNothing\n+ * @note\tThis function safely sets only the selected bits in the SPI TXCTRL register.\n+ * It can be used to enable multiple bits at once.\n+ */\n+__STATIC_INLINE void Chip_SPI_SetTXCTRLRegBits(LPC_SPI_T *pSPI, uint32_t bits)\n+{\n+\tpSPI->TXCTRL = (pSPI->TXCTRL | bits) & SPI_TXDATCTL_CTRLMASK;\n+}\n+\n+/**\n+ * @brief\tClear SPI TXCTRL register control options\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tbits\t: TXCTRL register bits to clear, amd OR'ed value of SPI_TXDATCTL_* definitions\n+ * @return\tNothing\n+ * @note\tThis function safely clears only the selected bits in the SPI TXCTRL register.\n+ * It can be used to disable multiple bits at once.\n+ */\n+__STATIC_INLINE void Chip_SPI_ClearTXCTRLRegBits(LPC_SPI_T *pSPI, uint32_t bits)\n+{\n+\tpSPI->TXCTRL = pSPI->TXCTRL & (SPI_TXDATCTL_CTRLMASK & ~bits);\n+}\n+\n+/**\n+ * @brief\tSet TX control options (safe)\n+ * @param\tpSPI\t\t: The base of SPI peripheral on the chip\n+ * @param\tctrlBits\t: Or'ed control bits to set\n+ * @return\tNothing\n+ * @note\tSelectable control states include SPI_TXCTL_DEASSERTNUM_SSEL(0/1/2/3),\n+ * SPI_TXCTL_EOT, SPI_TXCTL_EOF, SPI_TXCTL_RXIGNORE, and SPI_TXCTL_FLEN(bits).\n+ */\n+__STATIC_INLINE void Chip_SPI_SetTXCtl(LPC_SPI_T *pSPI, uint32_t ctrlBits)\n+{\n+\tChip_SPI_SetTXCTRLRegBits(pSPI, ctrlBits);\n+}\n+\n+/**\n+ * @brief\tClear TX control options (safe)\n+ * @param\tpSPI\t\t: The base of SPI peripheral on the chip\n+ * @param\tctrlBits\t: Or'ed control bits to clear\n+ * @return\tNothing\n+ * @note\tSelectable control states include SPI_TXCTL_DEASSERTNUM_SSEL(0/1/2/3),\n+ * SPI_TXCTL_EOT, SPI_TXCTL_EOF, SPI_TXCTL_RXIGNORE, and SPI_TXCTL_FLEN(bits).\n+ */\n+__STATIC_INLINE void Chip_SPI_ClearTXCtl(LPC_SPI_T *pSPI, uint32_t ctrlBits)\n+{\n+\tChip_SPI_ClearTXCTRLRegBits(pSPI, ctrlBits);\n+}\n+\n+/**\n+ * @brief\tSet TX data transfer size in bits\n+ * @param\tpSPI\t\t: The base of SPI peripheral on the chip\n+ * @param\tctrlBits\t: Number of bits to transmit and receive, must be 1 to 16\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPI_SetXferSize(LPC_SPI_T *pSPI, uint32_t ctrlBits)\n+{\n+\tChip_SPI_ClearTXCTRLRegBits(pSPI, SPI_TXCTL_FLENMASK);\n+\tChip_SPI_SetTXCTRLRegBits(pSPI, SPI_TXCTL_FLEN(ctrlBits));\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SPI_COMMON_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/spim_5410x.h ./chip/inc/spim_5410x.h\n--- a_tnusFF/chip/inc/spim_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/spim_5410x.h\t2016-10-22 23:17:43.572840278 -0300\n@@ -0,0 +1,250 @@\n+/*\n+ * @brief LPC5410X SPI master driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SPIM_5410X_H_\n+#define __SPIM_5410X_H_\n+\n+#include \"spi_common_5410x.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SPI_MASTER_5410X CHIP: LPC5410X SPI master driver\n+ * @ingroup SPI_COMMON_5410X\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tGet SPI master bit rate\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tThe actual SPI clock bit rate\n+ */\n+uint32_t Chip_SPIM_GetClockRate(LPC_SPI_T *pSPI);\n+\n+/**\n+ * @brief\tSet SPI master bit rate\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\trate\t: Desired clock bit rate for the SPI interface\n+ * @return\tThe actual SPI clock bit rate\n+ * @note\tThis function will set the SPI clock divider to get closest\n+ * to the desired rate as possible.\n+ */\n+uint32_t Chip_SPIM_SetClockRate(LPC_SPI_T *pSPI, uint32_t rate);\n+\n+/**\n+ * @brief SPI Delay Configure Struct\n+ */\n+typedef struct {\n+\tuint8_t PreDelay;\t\t\t\t\t/** Pre-delay value in SPI clocks, 0 - 15 */\n+\tuint8_t PostDelay;\t\t\t\t\t/** Post-delay value in SPI clocks, 0 - 15 */\n+\tuint8_t FrameDelay;\t\t\t\t\t/** Delay value between frames of a transfer in SPI clocks, 0 - 15 */\n+\tuint8_t TransferDelay;\t\t\t\t/** Delay value between transfers in SPI clocks, 1 - 16 */\n+} SPIM_DELAY_CONFIG_T;\n+\n+/**\n+ * @brief\tConfig SPI Delay parameters\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tpConfig\t: SPI Delay Configure Struct\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPIM_DelayConfig(LPC_SPI_T *pSPI, SPIM_DELAY_CONFIG_T *pConfig)\n+{\n+\tpSPI->DLY = (SPI_DLY_PRE_DELAY(pConfig->PreDelay) |\n+\t\t\t\t SPI_DLY_POST_DELAY(pConfig->PostDelay) |\n+\t\t\t\t SPI_DLY_FRAME_DELAY(pConfig->FrameDelay) |\n+\t\t\t\t SPI_DLY_TRANSFER_DELAY(pConfig->TransferDelay - 1));\n+}\n+\n+/**\n+ * @brief\tForces an end of transfer for the current master transfer\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ * @note\tUse this function to perform an immediate end of trasnfer for the\n+ * current master operation. If the master is currently transferring data started\n+ * with the Chip_SPIM_Xfer function, this terminates the transfer after the\n+ * current byte completes and completes the transfer.\n+ */\n+__STATIC_INLINE void Chip_SPIM_ForceEndOfTransfer(LPC_SPI_T *pSPI)\n+{\n+\tpSPI->STAT = SPI_STAT_EOT;\n+}\n+\n+/**\n+ * @brief\tAssert a SPI select\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tsselNum\t: SPI select to assert, 0 - 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPIM_AssertSSEL(LPC_SPI_T *pSPI, uint8_t sselNum)\n+{\n+\tpSPI->TXCTRL = pSPI->TXCTRL & (SPI_TXDATCTL_CTRLMASK & ~SPI_TXDATCTL_DEASSERTNUM_SSEL(sselNum));\n+}\n+\n+/**\n+ * @brief\tDeassert a SPI select\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\tsselNum\t: SPI select to deassert, 0 - 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPIM_DeAssertSSEL(LPC_SPI_T *pSPI, uint8_t sselNum)\n+{\n+\tpSPI->TXCTRL = (pSPI->TXCTRL | SPI_TXDATCTL_DEASSERTNUM_SSEL(sselNum)) & SPI_TXDATCTL_CTRLMASK;\n+}\n+\n+/**\n+ * @brief\tEnable loopback mode\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ * @note\tSerial input is taken from the serial output (MOSI or MISO) rather\n+ * than the serial input pin.\n+ */\n+__STATIC_INLINE void Chip_SPIM_EnableLoopBack(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_SetCFGRegBits(pSPI, SPI_CFG_LBM_EN);\n+}\n+\n+/**\n+ * @brief\tDisable loopback mode\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SPIM_DisableLoopBack(LPC_SPI_T *pSPI)\n+{\n+\tChip_SPI_ClearCFGRegBits(pSPI, SPI_CFG_LBM_EN);\n+}\n+\n+/**\n+ * @brief\tEvent handler ID passed during a call-back event\n+ */\n+typedef enum {\n+\tSPIM_EVT_SSELASSERT,\t\t\t/**< Event identifier for Slave Assert */\n+\tSPIM_EVT_SSELDEASSERT,\t\t\t/**< Event identifier for Slave deassert */\n+\tSPIM_EVT_TXDONE,\t\t\t\t/**< Event identifier for TX complete */\n+\tSPIM_EVT_RXDONE,\t\t\t\t/**< Event identifier for RX complete */\n+} SPIM_EVENT_T;\n+\n+/** @brief SPI Master XFER states */\n+#define SPIM_XFER_STATE_IDLE         0\t/**< SPI XFER is IDLE */\n+#define SPIM_XFER_STATE_BUSY         1\t/**< SPI XFER is busy transfering data */\n+#define SPIM_XFER_STATE_DONE         2\t/**< SPI XFER is complete */\n+\n+/** @brief\tSPI master xfer options */\n+#define SPIM_XFER_OPTION_EOT         (1 << 4)\t\t\t/**< SPI SLAVE Select will be deasserted when xfer is done */\n+#define SPIM_XFER_OPTION_EOF         (1 << 5)\t\t\t/**< Insert a frame delay */\n+#define SPIM_XFER_OPTION_SIZE(x)     ((((x) - 1) & 0xF) << 8)\t/**< Number of bits in transfer data */\n+\n+/** Slave transfer data context */\n+typedef struct SPIM_XFER {\n+\tint (*cbFunc)(SPIM_EVENT_T event, struct SPIM_XFER *xfer);\t/**< Callback function for event handling; NULL when no call-back required\n+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   @a event will be one of #SPIS_EVENT_T and @a xfer is pointer to xfer structure */\n+\n+\tvoid *txBuff;\t\t\t\t\t/**< TX buffer pointer; Must be a uint16_t pointer when transfer\n+\t\t\t\t\t\t\t\t\t    size is 16 bits and uint8_t pointer when transfer size is 8 bits (can be NULL only when *txCount is 0) */\n+\tvoid *rxBuff;\t\t\t\t\t/**< RX buffer pointer; Must be uint16_t pointer when transfer size is 16 bits or\n+\t\t\t\t\t\t\t\t\t    must be uint8_t pointer when transfer is 8-bits (can be NULL only when *txCount is 0) */\n+\tint32_t txCount;\t\t\t\t/**< Pointer to an int32_t memory (never initialize to NULL) that has the Size of the txBuff in items (not bytes), not modified by driver */\n+\tint32_t rxCount;\t\t\t\t/**< Number of items (not bytes) to send in rxBuff buffer (Never initialize to NULL), not modified by driver */\n+\tint32_t txDoneCount;\t\t\t/**< Total items (not bytes) transmitted (initialize to 0), modified by driver [In case of underflow txDoneCount will be greater than *txCount] */\n+\tint32_t rxDoneCount;\t\t\t/**< Total items (not bytes) received (initialize to 0), modified by driver [In case of over flow rxDoneCount will be greater than *rxCount] */\n+\tuint8_t sselNum;\t\t\t\t/**< Slave number assigned to this transfer, 0 - 3, modified by driver */\n+\tuint8_t state;\t\t\t\t\t/**< Initialize to #SPIS_XFER_STATE_IDLE; driver sets to #SPIS_XFER_STATE_BUSY or #SPIS_XFER_STATE_DONE */\n+\tuint16_t options;\t\t\t\t/**< SPI Transfer options (or'd values of #SPIM_XFER_OPTION_EOT, #SPIM_XFER_OPTION_EOF, #SPIM_XFER_OPTION_SIZE) */\n+} SPIM_XFER_T;\n+\n+/**\n+ * @brief\tSPI master transfer state change handler\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\txfer\t: Pointer to a SPIM_XFER_T structure see notes below\n+ * @return\tNothing\n+ * @note\tSee @ref SPIM_XFER_T for more information on this function. When using\n+ * this function, the SPI master interrupts should be enabled and setup in the SPI\n+ * interrupt handler to call this function when they fire. This function is meant\n+ * to be called from the interrupt handler.\n+ */\n+void Chip_SPIM_XferHandler(LPC_SPI_T *pSPI, SPIM_XFER_T *xfer);\n+\n+/**\n+ * @brief\tStart non-blocking SPI master transfer\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\txfer\t: Pointer to a SPIM_XFER_T structure see notes below\n+ * @return\tNothing\n+ * @note\tThis function starts a non-blocking SPI master transfer with the\n+ * parameters setup in the passed @ref SPIM_XFER_T structure. Once the transfer is\n+ * started, the interrupt handler must call Chip_SPIM_XferHandler to keep the\n+ * transfer going and fed with data. This function should only be called when\n+ * the master is idle.<br>\n+ *\n+ * This function must be called with the options and sselNum fields correctly\n+ * setup. Initial data buffers and the callback pointer must also be setup. No\n+ * sanity checks are performed on the passed data.<br>\n+ *\n+ * Example call:<br>\n+ * SPIM_XFER_T mxfer;\n+ * mxfer.pCB = (&)masterCallbacks;\n+ * mxfer.sselNum = 2; // Use chip select 2\n+ * mxfer.options = SPI_TXCTL_FLEN(8); // 8 data bits, supports 1 - 16 bits\n+ * mxfer.options |= SPI_TXCTL_EOT | SPI_TXCTL_EOF; // Apply frame and transfer delays to master transfer\n+ * mxfer.options |= SPI_TXCTL_RXIGNORE; // Ignore RX data, will toss receive data regardless of pRXData8 or pRXData16 buffer\n+ * mxfer.pTXData8 = SendBuffer;\n+ * mxfer.txCount = 16; // Number of bytes to send before SPIMasterXferSend callback is called\n+ * mxfer.pRXData8 = RecvBuffer; // Will not receive data if pRXData8/pRXData16 is NULL or SPI_TXCTL_RXIGNORE option is set\n+ * mxfer.rxCount = 16; // Number of bytes to receive before SPIMasterXferRecv callback is called\n+ * Chip_SPIM_Xfer(LPC_SPI0, &mxfer); // Start transfer\n+ *\n+ * Note that the transfer, once started, needs to be constantly fed by the callbacks.\n+ * The txCount and rxCount field only indicate the buffer size before the callbacks are called.\n+ * To terminate the transfer, the SPIMasterXferSend callback must set the terminate field.\n+ */\n+void Chip_SPIM_Xfer(LPC_SPI_T *pSPI, SPIM_XFER_T *xfer);\n+\n+/**\n+ * @brief\tPerform blocking SPI master transfer\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\txfer\t: Pointer to a SPIM_XFER_T structure see notes below\n+ * @return\tNothing\n+ * @note\tThis function starts a blocking SPI master transfer with the\n+ * parameters setup in the passed @ref SPIM_XFER_T structure. Once the transfer is\n+ * started, the callbacks in Chip_SPIM_XferHandler may be called to keep the\n+ * transfer going and fed with data. SPI interrupts must be disabled prior to\n+ * calling this function. It is not recommended to use this function.<br>\n+ */\n+void Chip_SPIM_XferBlocking(LPC_SPI_T *pSPI, SPIM_XFER_T *xfer);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SPIM_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/spis_5410x.h ./chip/inc/spis_5410x.h\n--- a_tnusFF/chip/inc/spis_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/spis_5410x.h\t2016-10-22 23:17:43.572840278 -0300\n@@ -0,0 +1,133 @@\n+/*\n+ * @brief LPC5410X SPI slave driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SPIS_5410X_H_\n+#define __SPIS_5410X_H_\n+\n+#include \"spi_common_5410x.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SPI_SLAVE_5410X CHIP: LPC5410X SPI slave driver\n+ * @ingroup SPI_COMMON_5410X\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tEvent handler ID passed during a call-back event\n+ */\n+typedef enum {\n+\tSPIS_EVT_SSELASSERT,\t\t\t/**< Event identifier for Slave Assert */\n+\tSPIS_EVT_SSELDEASSERT,\t\t\t/**< Event identifier for Slave deassert */\n+\tSPIS_EVT_TXDONE,\t\t\t\t/**< Event identifier for TX complete */\n+\tSPIS_EVT_RXDONE,\t\t\t\t/**< Event identifier for RX complete */\n+} SPIS_EVENT_T;\n+\n+/** @brief SPI XFER states */\n+#define SPIS_XFER_STATE_IDLE         0\t/**< SPI XFER is IDLE */\n+#define SPIS_XFER_STATE_BUSY         1\t/**< SPI XFER is busy transfering data */\n+#define SPIS_XFER_STATE_DONE         2\t/**< SPI XFER is complete */\n+\n+/** Slave transfer data context */\n+typedef struct SPIS_XFER {\n+\tint (*cbFunc)(SPIS_EVENT_T event, struct SPIS_XFER *xfer);\t/**< Callback function for event handling; NULL when no call-back required\n+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t   @a event will be one of #SPIS_EVENT_T and @a xfer is pointer to xfer structure [Return value ignored] */\n+\n+\tvoid *txBuff;\t\t\t\t\t/**< TX buffer pointer; Must be a uint16_t pointer when transfer\n+\t\t\t\t\t\t\t\t\t    size is 16 bits and uint8_t pointer when transfer size is 8 bits */\n+\tvoid *rxBuff;\t\t\t\t\t/**< RX buffer pointer; Must be uint16_t pointer when transfer size is 16 bits or\n+\t\t\t\t\t\t\t\t\t    must be uint8_t pointer when transfer is 8-bits */\n+\tint32_t txCount;\t\t\t\t/**< Pointer to an int32_t memory (never initialize to NULL) that has the Size of the txBuff in items (not bytes), not modified by driver */\n+\tint32_t rxCount;\t\t\t\t/**< Number of items (not bytes) to send in rxBuff buffer (Never initialize to NULL), not modified by driver */\n+\tint32_t txDoneCount;\t\t\t/**< Total items (not bytes) transmitted (initialize to 0), modified by driver [In case of underflow txDoneCount will be greater than *txCount] */\n+\tint32_t rxDoneCount;\t\t\t/**< Total items (not bytes) received (initialize to 0), modified by driver [In case of over flow rxDoneCount will be greater than *rxCount] */\n+\tuint8_t sselNum;\t\t\t\t/**< Slave number assigned to this transfer, 0 - 3, modified by driver */\n+\tuint8_t state;\t\t\t\t\t/**< Initialize to #SPIS_XFER_STATE_IDLE; driver sets to #SPIS_XFER_STATE_BUSY or #SPIS_XFER_STATE_DONE */\n+\tuint16_t reserved0;\t\t\t\t/**< Reserved field */\n+} SPIS_XFER_T;\n+\n+/**\n+ * @brief\tSPI slave transfer state change handler\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\txfer\t: Pointer to a SPIS_XFER_T structure see notes below\n+ * @return\treturns 0 on success, or SPI_STAT_RXOV and/or SPI_STAT_TXUR on an error\n+ * @note\tSee @ref SPIS_XFER_T for more information on this function. When using\n+ * this function, the SPI slave interrupts should be enabled and setup in the SPI\n+ * interrupt handler to call this function when they fire. This function is meant\n+ * to be called from the interrupt handler. The @ref SPIS_XFER_T data does not need\n+ * to be setup prior to the call and should be setup by the callbacks instead.<br>\n+ *\n+ * The callbacks are handled in the interrupt handler. If you are getting overflow\n+ * or underflow errors, you might need to lower the speed of the master clock or\n+ * extend the master's select assetion time.<br>\n+ */\n+uint32_t Chip_SPIS_XferHandler(LPC_SPI_T *pSPI, SPIS_XFER_T *xfer);\n+\n+/**\n+ * @brief\tPre-buffers slave transmit data\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\txfer\t: Pointer to a SPIS_XFER_T structure see notes below\n+ * @return\tNothing\n+ * @note Pre-buffering allows the slave to prime the transmit FIFO with data prior to\n+ * the master starting a transfer. If data is not pre-buffered, the initial slave\n+ * transmit data will always be 0x0 with a slave transmit underflow status.\n+ * Pre-buffering is best used when only a single slave select is used by an\n+ * application.\n+ */\n+__STATIC_INLINE void Chip_SPIS_PreBuffSlave(LPC_SPI_T *pSPI, SPIS_XFER_T *xfer)\n+{\n+\tChip_SPIS_XferHandler(pSPI, xfer);\n+}\n+\n+/**\n+ * @brief\tSPI slave transfer blocking function\n+ * @param\tpSPI\t: The base of SPI peripheral on the chip\n+ * @param\txfer\t: Pointer to a SPIS_XFER_T structure\n+ * @return\treturns 0 on success, or SPI_STAT_RXOV and/or SPI_STAT_TXUR on an error\n+ * @note\tThis function performs a blocking transfer on the SPI slave interface.\n+ * It is not recommended to use this function. Once this function is called, it\n+ * will block forever until a slave transfer consisting of a slave SSEL assertion,\n+ * and de-assertion occur. The callbacks are still used for slave data buffer\n+ * management. SPI interrupts must be disabled prior to calling this function.\n+ */\n+uint32_t Chip_SPIS_XferBlocking(LPC_SPI_T *pSPI, SPIS_XFER_T *xfer);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SPIS_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/stopwatch.h ./chip/inc/stopwatch.h\n--- a_tnusFF/chip/inc/stopwatch.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/stopwatch.h\t2016-10-22 23:17:43.572840278 -0300\n@@ -0,0 +1,137 @@\n+/*\n+ * @brief Common stopwatch support\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __STOPWATCH_H_\n+#define __STOPWATCH_H_\n+\n+#include \"cmsis.h\"\n+\n+/** @defgroup Stop_Watch CHIP: Stopwatch primitives.\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/**\n+ * @brief\tInitialize stopwatch\n+ * @return\tNothing\n+ */\n+void StopWatch_Init(void);\n+\n+/**\n+ * @brief\tStart a stopwatch\n+ * @return\tCurrent cycle count\n+ */\n+uint32_t StopWatch_Start(void);\n+\n+/**\n+ * @brief      Returns number of ticks elapsed since stopwatch was started\n+ * @param      startTime\t: Time returned by StopWatch_Start().\n+ * @return     Number of ticks elapsed since stopwatch was started\n+ */\n+__STATIC_INLINE uint32_t StopWatch_Elapsed(uint32_t startTime)\n+{\n+\treturn StopWatch_Start() - startTime;\n+}\n+\n+/**\n+ * @brief\tReturns number of ticks per second of the stopwatch timer\n+ * @return\tNumber of ticks per second of the stopwatch timer\n+ */\n+uint32_t StopWatch_TicksPerSecond(void);\n+\n+/**\n+ * @brief\tConverts from stopwatch ticks to mS.\n+ * @param\tticks\t: Duration in ticks to convert to mS.\n+ * @return\tNumber of mS in given number of ticks\n+ */\n+uint32_t StopWatch_TicksToMs(uint32_t ticks);\n+\n+/**\n+ * @brief\tConverts from stopwatch ticks to uS.\n+ * @param\tticks\t: Duration in ticks to convert to uS.\n+ * @return\tNumber of uS in given number of ticks\n+ */\n+uint32_t StopWatch_TicksToUs(uint32_t ticks);\n+\n+/**\n+ * @brief\tConverts from mS to stopwatch ticks.\n+ * @param\tmS\t: Duration in mS to convert to ticks.\n+ * @return\tNumber of ticks in given number of mS\n+ */\n+uint32_t StopWatch_MsToTicks(uint32_t mS);\n+\n+/**\n+ * @brief\tConverts from uS to stopwatch ticks.\n+ * @param\tuS\t: Duration in uS to convert to ticks.\n+ * @return\tNumber of ticks in given number of uS\n+ */\n+uint32_t StopWatch_UsToTicks(uint32_t uS);\n+\n+/**\n+ * @brief\tDelays the given number of ticks using stopwatch primitives\n+ * @param\tticks\t: Number of ticks to delay\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void StopWatch_DelayTicks(uint32_t ticks)\n+{\n+\tuint32_t startTime = StopWatch_Start();\n+\twhile (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @brief\tDelays the given number of mS using stopwatch primitives\n+ * @param\tmS\t: Number of mS to delay\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void StopWatch_DelayMs(uint32_t mS)\n+{\n+\tuint32_t ticks = StopWatch_MsToTicks(mS);\n+\tuint32_t startTime = StopWatch_Start();\n+\twhile (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @brief\tDelays the given number of uS using stopwatch primitives\n+ * @param\tuS\t: Number of uS to delay\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void StopWatch_DelayUs(uint32_t uS)\n+{\n+\tuint32_t ticks = StopWatch_UsToTicks(uS);\n+\tuint32_t startTime = StopWatch_Start();\n+\twhile (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __STOPWATCH_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/syscon_5410x.h ./chip/inc/syscon_5410x.h\n--- a_tnusFF/chip/inc/syscon_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/syscon_5410x.h\t2016-10-22 23:17:43.572840278 -0300\n@@ -0,0 +1,575 @@\n+/*\n+ * @brief LPC5410X System & Control driver inclusion file\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SYSCON_5410X_H_\n+#define __SYSCON_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SYSCON_5410X CHIP: LPC5410X System and Control Driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC5410X Main system configuration register block structure\n+ */\n+typedef struct {\n+\t__IO uint32_t SYSMEMREMAP;\t\t\t/*!< System Remap register */\n+\t__I  uint32_t RESERVED0[4];\n+\t__IO uint32_t SYSTCKCAL;\t\t\t/*!< System Tick Calibration register */\n+\t__I  uint32_t RESERVED1[1];\n+\t__IO uint32_t NMISRC;\t\t\t\t/*!< NMI Source select register */\n+\t__IO uint32_t ASYNCAPBCTRL;\t\t\t/*!< Asynch APB chiplet control register */\n+\t__I  uint32_t RESERVED2[7];\n+\t__IO uint32_t SYSRSTSTAT;\t\t\t/*!< System Reset Stat register */\n+\t__IO uint32_t PRESETCTRL[2];\t\t/*!< Peripheral Reset Ctrl register */\n+\t__IO uint32_t PRESETCTRLSET[2];\t\t/*!< Peripheral Reset Ctrl Set register */\n+\t__IO uint32_t PRESETCTRLCLR[2];\t\t/*!< Peripheral Reset Ctrl Clr register */\n+\t__IO uint32_t PIOPORCAP[2];\t\t\t/*!< PIO Power-On Reset Capture register */\n+\t__I  uint32_t RESERVED3[1];\n+\t__IO uint32_t PIORESCAP[2];\t\t\t/*!< PIO Pad Reset Capture register */\n+\t__I  uint32_t RESERVED4[4];\n+\t__IO uint32_t MAINCLKSELA;\t\t\t/*!< Main Clk sel Source Sel A register */\n+\t__IO uint32_t MAINCLKSELB;\t\t\t/*!< Main Clk sel Source Sel B register */\n+\t__I  uint32_t RESERVED5;\n+\t__IO uint32_t ADCCLKSEL;\t\t\t/*!< ADC Async Clk Sel register */\n+\t__I  uint32_t RESERVED6;\n+\t__IO uint32_t CLKOUTSELA;\t\t\t/*!< Clk Out Sel Source A register */\n+\t__IO uint32_t CLKOUTSELB;\t\t\t/*!< Clk Out Sel Source B register */\n+\t__I  uint32_t RESERVED7;\n+\t__IO uint32_t SYSPLLCLKSEL;\t\t\t/*!< System PLL Clk Selregister */\n+\t__I  uint32_t RESERVED8[7];\n+\t__IO uint32_t AHBCLKCTRL[2];\t\t/*!< AHB Peripheral Clk Enable register */\n+\t__IO uint32_t AHBCLKCTRLSET[2];\t\t/*!< AHB Peripheral Clk Enable Set register */\n+\t__IO uint32_t AHBCLKCTRLCLR[2];\t\t/*!< AHB Peripheral Clk Enable Clr register */\n+\t__I  uint32_t RESERVED9[2];\n+\t__IO uint32_t SYSTICKCLKDIV;\t\t/*!< Systick Clock divider register */\n+\t__I  uint32_t RESERVED10[7];\n+\t__IO uint32_t AHBCLKDIV;\t\t\t/*!< Main Clk Divider register */\n+\t__IO uint32_t RESERVED11;\n+\t__IO uint32_t ADCCLKDIV;\t\t\t/*!< ADC Async Clk Divider register */\n+\t__IO uint32_t CLKOUTDIV;\t\t\t/*!< Clk Out Divider register */\n+\t__I  uint32_t RESERVED12[4];\n+\t__IO uint32_t FREQMECTRL;\t\t\t/*!< Frequency Measure Control register */\n+\t__IO uint32_t FLASHCFG;\t\t\t\t/*!< Flash Config register */\n+\t__I  uint32_t RESERVED13[8];\n+\t__IO uint32_t FIFOCTRL;\t\t\t\t/*!< VFIFO control register */\n+\t__I  uint32_t RESERVED14[14];\n+\t__I  uint32_t RESERVED15[1];\n+\t__I  uint32_t RESERVED16[2];\n+\t__IO uint32_t RTCOSCCTRL;\t\t\t/*!< RTC Oscillator Control register */\n+\t__I  uint32_t RESERVED17[7];\n+\t__IO uint32_t SYSPLLCTRL;\t\t\t/*!< System PLL control register */\n+\t__IO uint32_t SYSPLLSTAT;\t\t\t/*!< PLL status register */\n+\t__IO uint32_t SYSPLLNDEC;\t\t\t/*!< PLL N decoder register */\n+\t__IO uint32_t SYSPLLPDEC;\t\t\t/*!< PLL P decoder register */\n+\t__IO uint32_t SYSPLLSSCTRL[2];\t/*!< Spread Spectrum control registers */\n+\t__I  uint32_t RESERVED18[18];\n+\t__IO uint32_t PDRUNCFG;\t\t\t\t/*!< Power Down Run Config register */\n+\t__IO uint32_t PDRUNCFGSET;\t\t\t/*!< Power Down Run Config Set register */\n+\t__IO uint32_t PDRUNCFGCLR;\t\t\t/*!< Power Down Run Config Clr register */\n+\t__I  uint32_t RESERVED19[9];\n+\t__IO uint32_t STARTERP[2];\t\t\t/*!< Start Signal Enable Register */\n+\t__IO uint32_t STARTERSET[2];\t\t/*!< Start Signal Enable Set Register */\n+\t__IO uint32_t STARTERCLR[2];\t\t/*!< Start Signal Enable Clr Register */\n+\t__I  uint32_t RESERVED20[42];\n+\t__I  uint32_t RESERVED20A[4];\n+\t__I  uint32_t RESERVED21[57];\n+\t__IO uint32_t JTAG_IDCODE;\n+\t__IO uint32_t DEVICE_ID0;\t\t\t/*!< Boot ROM and die revision register */\n+\t__IO uint32_t DEVICE_ID1;\t\t\t/*!< Boot ROM and die revision register */\n+} LPC_SYSCON_T;\n+\n+/**\n+ * @brief LPC5410X Asynchronous system configuration register block structure\n+ */\n+typedef struct {\n+\t__IO uint32_t AYSNCPRESETCTRL;\t\t/*!< peripheral reset register */\n+\t__IO uint32_t ASYNCPRESETCTRLSET;\t/*!< peripheral reset Set register */\n+\t__IO uint32_t ASYNCPRESETCTRLCLR;\t/*!< peripheral reset Clr register */\n+\t__I  uint32_t RESERVED0;\n+\t__IO uint32_t ASYNCAPBCLKCTRL;\t\t/*!< clk enable register */\n+\t__IO uint32_t ASYNCAPBCLKCTRLSET;\t/*!< clk enable Set register */\n+\t__IO uint32_t ASYNCAPBCLKCTRLCLR;\t/*!< clk enable Clr register */\n+\t__I  uint32_t RESERVED1;\n+\t__IO uint32_t ASYNCAPBCLKSELA;\t\t/*!< clk source mux A register */\n+\t__IO uint32_t ASYNCAPBCLKSELB;\t\t/*!< clk source mux B register */\n+\t__IO uint32_t ASYNCCLKDIV;\t\t\t/*!< clk div register */\n+\t__I  uint32_t RESERVED2;\n+\t__IO uint32_t FRGCTRL;\t\t\t\t/*!< Fraction Rate Generator Ctrl register */\n+} LPC_ASYNC_SYSCON_T;\n+\n+/**\n+ * System memory remap modes used to remap interrupt vectors\n+ */\n+typedef enum CHIP_SYSCON_BOOT_MODE_REMAP {\n+\tREMAP_BOOT_LOADER_MODE,\t/*!< Interrupt vectors are re-mapped to Boot ROM */\n+\tREMAP_USER_RAM_MODE,\t/*!< Interrupt vectors are re-mapped to user Static RAM */\n+\tREMAP_USER_FLASH_MODE\t/*!< Interrupt vectors are not re-mapped and reside in Flash */\n+} CHIP_SYSCON_BOOT_MODE_REMAP_T;\n+\n+/** @brief V4 CHIP PART ID */\n+#define V4_UID              (0x08C1FECE)\n+\n+/**\n+ * @brief\tRe-map interrupt vectors\n+ * @param\tremap\t: system memory map value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_Map(CHIP_SYSCON_BOOT_MODE_REMAP_T remap)\n+{\n+\tLPC_SYSCON->SYSMEMREMAP = (uint32_t) remap;\n+}\n+\n+/**\n+ * @brief\tGet system remap setting\n+ * @return\tSystem remap setting\n+ */\n+__STATIC_INLINE CHIP_SYSCON_BOOT_MODE_REMAP_T Chip_SYSCON_GetMemoryMap(void)\n+{\n+\treturn (CHIP_SYSCON_BOOT_MODE_REMAP_T) LPC_SYSCON->SYSMEMREMAP;\n+}\n+\n+/**\n+ * @brief\tSet System tick timer calibration value\n+ * @param\tsysCalVal\t: System tick timer calibration value\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_SetSYSTCKCAL(uint32_t sysCalVal)\n+{\n+\tLPC_SYSCON->SYSTCKCAL = sysCalVal;\n+}\n+\n+/**\n+ * Non-Maskable Interrupt Enable/Disable value\n+ */\n+#define SYSCON_NMISRC_M0_ENABLE   ((uint32_t) 1 << 30)\t/*!< Enable the Non-Maskable Interrupt M0 (NMI) source */\n+#define SYSCON_NMISRC_M4_ENABLE   ((uint32_t) 1 << 31)\t/*!< Enable the Non-Maskable Interrupt M4 (NMI) source */\n+\n+/**\n+ * @brief\tSet source for non-maskable interrupt (NMI)\n+ * @param\tintsrc\t: IRQ number to assign to the NMI\n+ * @return\tNothing\n+ * @note\tThe NMI source will be disabled upon exiting this function. Use the\n+ * Chip_SYSCON_EnableNMISource() function to enable the NMI source.\n+ */\n+void Chip_SYSCON_SetNMISource(uint32_t intsrc);\n+\n+/**\n+ * @brief\tEnable interrupt used for NMI source\n+ * @return\tNothing\n+ */\n+void Chip_SYSCON_EnableNMISource(void);\n+\n+/**\n+ * @brief\tDisable interrupt used for NMI source\n+ * @return\tNothing\n+ */\n+void Chip_SYSCON_DisableNMISource(void);\n+\n+/**\n+ * @brief\tEnable or disable asynchronous APB bridge and subsystem\n+ * @param\tenable\t: true to enable, false to disable\n+ * @return\tNothing\n+ * @note\tThis bridge must be enabled to access peripherals on the\n+ * associated bridge.\n+ */\n+void Chip_SYSCON_Enable_ASYNC_Syscon(bool enable);\n+\n+/**\n+ * @brief\tSet UART Fractional divider value\n+ * @param\tfmul\t: Fractional multiplier value\n+ * @param\tfdiv\t: Fractional divider value (Must always be 0xFF)\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_SetUSARTFRGCtrl(uint8_t fmul, uint8_t fdiv)\n+{\n+\tLPC_ASYNC_SYSCON->FRGCTRL = ((uint32_t) fmul << 8) | fdiv;\n+}\n+\n+/**\n+ * System reset status values\n+ */\n+#define SYSCON_RST_POR    (1 << 0)\t/*!< POR reset status */\n+#define SYSCON_RST_EXTRST (1 << 1)\t/*!< External reset status */\n+#define SYSCON_RST_WDT    (1 << 2)\t/*!< Watchdog reset status */\n+#define SYSCON_RST_BOD    (1 << 3)\t/*!< Brown-out detect reset status */\n+#define SYSCON_RST_SYSRST (1 << 4)\t/*!< software system reset status */\n+\n+/**\n+ * @brief\tGet system reset status\n+ * @return\tAn Or'ed value of SYSCON_RST_*\n+ * @note\tThis function returns the detected reset source(s).\n+ */\n+__STATIC_INLINE uint32_t Chip_SYSCON_GetSystemRSTStatus(void)\n+{\n+\treturn LPC_SYSCON->SYSRSTSTAT;\n+}\n+\n+/**\n+ * @brief\tClear system reset status\n+ * @param\treset\t: An Or'ed value of SYSCON_RST_* status to clear\n+ * @return\tNothing\n+ * @note\tThis function clears the specified reset source(s).\n+ */\n+__STATIC_INLINE void Chip_SYSCON_ClearSystemRSTStatus(uint32_t reset)\n+{\n+\tLPC_SYSCON->SYSRSTSTAT = reset;\n+}\n+\n+/**\n+ * Peripheral reset identifiers\n+ */\n+typedef enum {\n+\t/* Peripheral reset enables for PRESETCTRL0 */\n+\tRESET_FLASH = 7,\t\t\t\t/*!< Flash controller */\n+\tRESET_FMC,\t\t\t\t\t\t/*!< Flash accelerator */\n+\tRESET_INMUX = 11,\t\t\t\t/*!< Input mux */\n+\tRESET_IOCON = 13,\t\t\t\t/*!< IOCON */\n+\tRESET_GPIO0,\t\t\t\t\t/*!< GPIO Port 0 */\n+\tRESET_GPIO1,\t\t\t\t\t/*!< GPIO Port 1 */\n+\tRESET_PINT = 18,\t\t\t\t/*!< Pin interrupt */\n+\tRESET_GINT,\t\t\t\t\t\t/*!< Grouped interrupt (GINT) */\n+\tRESET_DMA,\t\t\t\t\t\t/*!< DMA */\n+\tRESET_CRC,\t\t\t\t\t\t/*!< CRC */\n+\tRESET_WWDT,\t\t\t\t\t\t/*!< Watchdog timer */\n+\tRESET_RTC,\t\t\t\t\t\t/*!< RTC */\n+\tRESET_MAILBOX = 26,\t\t\t\t/*!< Mailbox */\n+\tRESET_ADC0,\t\t\t\t\t\t/*!< ADC0 */\n+\n+\t/* Peripheral reset enables for PRESETCTRL1 */\n+\tRESET_MRT = 32 + 0,\t\t\t\t/*!< multi-rate timer */\n+\tRESET_RIT,\t\t\t\t\t\t/*!< Repetitive interrupt timer */\n+\tRESET_SCT0,\t\t\t\t\t\t/*!< SCT0 */\n+\tRESET_FIFO = 32 + 9,\t\t\t/*!< System FIFO */\n+\tRESET_UTICK,\t\t\t\t\t/*!< Micro-tick Timer */\n+\tRESET_TIMER2 = 32 + 22,\t\t\t/*!< TIMER2 */\n+\tRESET_TIMER3 = 32 + 26,\t\t\t/*!< TIMER3 */\n+\tRESET_TIMER4,\t\t\t\t\t/*!< TIMER4 */\n+\n+\t/* Async peripheral reset enables for ASYNCPRESETCTRL */\n+\tRESET_USART0 = 128 + 1,\t\t\t/*!< UART0 */\n+\tRESET_USART1,\t\t\t\t\t/*!< UART1 */\n+\tRESET_USART2,\t\t\t\t\t/*!< UART2 */\n+\tRESET_USART3,\t\t\t\t\t/*!< UART3 */\n+\tRESET_I2C0,\t\t\t\t\t\t/*!< I2C0 */\n+\tRESET_I2C1,\t\t\t\t\t\t/*!< I2C1 */\n+\tRESET_I2C2,\t\t\t\t\t\t/*!< I2C2 */\n+\tRESET_SPI0 = 128 + 9,\t\t\t/*!< SPI0 */\n+\tRESET_SPI1,\t\t\t\t\t\t/*!< SPI1 */\n+\tRESET_TIMER0 = 128 + 13,\t\t/*!< TIMER0 */\n+\tRESET_TIMER1,\t\t\t\t\t/*!< TIMER1 */\n+\tRESET_FRG0\t\t\t\t\t\t/*!< FRG */\n+} CHIP_SYSCON_PERIPH_RESET_T;\n+\n+/**\n+ * @brief\tResets a peripheral\n+ * @param\tperiph\t:\tPeripheral to reset\n+ * @return\tNothing\n+ * Will assert and de-assert reset for a peripheral.\n+ */\n+void Chip_SYSCON_PeriphReset(CHIP_SYSCON_PERIPH_RESET_T periph);\n+\n+/**\n+ * @brief\tRead POR captured PIO status\n+ * @param\tport\t: 0 for port 0 pins, 1 for port 1 pins, 2 for port 2 pins, etc.\n+ * @return\tcaptured Power-On-Reset (POR) PIO status\n+ */\n+__STATIC_INLINE uint32_t Chip_SYSCON_GetPORPIOStatus(uint8_t port)\n+{\n+\treturn LPC_SYSCON->PIOPORCAP[port];\n+}\n+\n+/**\n+ * @brief\tRead reset captured PIO status\n+ * @param\tport\t: 0 for port 0 pins, 1 for port 1 pins, 2 for port 2 pins, etc.\n+ * @return\tcaptured reset PIO status\n+ * @note\tUsed when reset other than a Power-On-Reset (POR) occurs.\n+ */\n+__STATIC_INLINE uint32_t Chip_SYSCON_GetResetPIOStatus(uint8_t port)\n+{\n+\treturn LPC_SYSCON->PIORESCAP[port];\n+}\n+\n+/**\n+ * @brief\tStarts a frequency measurement cycle\n+ * @return\tNothing\n+ * @note\tThis function is meant to be used with the Chip_INMUX_SetFreqMeasRefClock()\n+ * and Chip_INMUX_SetFreqMeasTargClock() functions.\n+ */\n+__STATIC_INLINE void Chip_SYSCON_StartFreqMeas(void)\n+{\n+\tLPC_SYSCON->FREQMECTRL = 0;\n+\tLPC_SYSCON->FREQMECTRL = (1UL << 31);\n+}\n+\n+/**\n+ * @brief\tIndicates when a frequency measurement cycle is complete\n+ * @return\ttrue if a measurement cycle is active, otherwise false\n+ */\n+__STATIC_INLINE bool Chip_SYSCON_IsFreqMeasComplete(void)\n+{\n+\treturn (bool) ((LPC_SYSCON->FREQMECTRL & (1UL << 31)) == 0);\n+}\n+\n+/**\n+ * @brief\tReturns the raw capture value for a frequency measurement cycle\n+ * @return\traw cpature value (this is not a frequency)\n+ */\n+__STATIC_INLINE uint32_t Chip_SYSCON_GetRawFreqMeasCapval(void)\n+{\n+\treturn LPC_SYSCON->FREQMECTRL & 0x3FFF;\n+}\n+\n+/**\n+ * @brief\tReturns the computed value for a frequency measurement cycle\n+ * @param\trefClockRate\t: Reference clock rate used during the frequency measurement cycle\n+ * @return\tComputed cpature value\n+ */\n+uint32_t Chip_SYSCON_GetCompFreqMeas(uint32_t refClockRate);\n+\n+/**\n+ * @brief FLASH Access time definitions\n+ */\n+typedef enum {\n+\tSYSCON_FLASH_1CYCLE = 0,\t/*!< Flash accesses use 1 CPU clock */\n+\tFLASHTIM_20MHZ_CPU = SYSCON_FLASH_1CYCLE,\n+\tSYSCON_FLASH_2CYCLE,\t\t/*!< Flash accesses use 2 CPU clocks */\n+\tSYSCON_FLASH_3CYCLE,\t\t/*!< Flash accesses use 3 CPU clocks */\n+\tSYSCON_FLASH_4CYCLE,\t\t/*!< Flash accesses use 4 CPU clocks */\n+\tSYSCON_FLASH_5CYCLE,\t\t/*!< Flash accesses use 5 CPU clocks */\n+\tSYSCON_FLASH_6CYCLE,\t\t/*!< Flash accesses use 6 CPU clocks */\n+\tSYSCON_FLASH_7CYCLE,\t\t/*!< Flash accesses use 7 CPU clocks */\n+\tSYSCON_FLASH_8CYCLE\t\t\t/*!< Flash accesses use 8 CPU clocks */\n+} SYSCON_FLASHTIM_T;\n+\n+/**\n+ * @brief\tSet FLASH memory access time in clocks\n+ * @param\tclks\t: Clock cycles for FLASH access\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_SetFLASHAccess(SYSCON_FLASHTIM_T clks)\n+{\n+\tuint32_t tmp;\n+\n+\ttmp = LPC_SYSCON->FLASHCFG & ~(0xF << 12);\n+\n+\t/* Don't alter lower bits */\n+\tLPC_SYSCON->FLASHCFG = tmp | ((uint32_t) clks << 12);\n+}\n+\n+/**\n+ * @brief System FIFO bit definitions\n+ */\n+#define SYSCON_FIFO_U0TXFIFOEN      (1 << 0)\t/*!< USART0 transmitter FIFO enable bit */\n+#define SYSCON_FIFO_U1TXFIFOEN      (1 << 1)\t/*!< USART1 transmitter FIFO enable bit */\n+#define SYSCON_FIFO_U2TXFIFOEN      (1 << 2)\t/*!< USART2 transmitter FIFO enable bit */\n+#define SYSCON_FIFO_U3TXFIFOEN      (1 << 3)\t/*!< USART3 transmitter FIFO enable bit */\n+#define SYSCON_FIFO_SPI0TXFIFOEN    (1 << 4)\t/*!< SPI0 transmitter FIFO enable bit */\n+#define SYSCON_FIFO_SPI1TXFIFOEN    (1 << 5)\t/*!< SPI1 transmitter FIFO enable bit */\n+#define SYSCON_FIFO_U0RXFIFOEN      (1 << 8)\t/*!< USART0 receiver FIFO enable bit */\n+#define SYSCON_FIFO_U1RXFIFOEN      (1 << 9)\t/*!< USART1 receiver FIFO enable bit */\n+#define SYSCON_FIFO_U2RXFIFOEN      (1 << 10)\t/*!< USART2 receiver FIFO enable bit */\n+#define SYSCON_FIFO_U3RXFIFOEN      (1 << 11)\t/*!< USART3 receiver FIFO enable bit */\n+#define SYSCON_FIFO_SPI0RXFIFOEN    (1 << 12)\t/*!< SPI0 receiver FIFO enable bit */\n+#define SYSCON_FIFO_SPI1RXFIFOEN    (1 << 13)\t/*!< SPI1 receiver FIFO enable bit */\n+\n+/**\n+ * @brief\tEnable System FIFO(s) for a peripheral\n+ * @param\tenMask\t: Or'ed bits or type SYSCON_FIFO_* for enabling system FIFOs\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_EnableSysFIFO(uint32_t enMask)\n+{\n+\tLPC_SYSCON->FIFOCTRL |= enMask;\n+}\n+\n+/**\n+ * @brief\tDisable System FIFO(s) for a peripheral\n+ * @param\tdisMask\t: Or'ed bits or type SYSCON_FIFO_* for disabling system FIFOs\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_DisableSysFIFO(uint32_t disMask)\n+{\n+\tLPC_SYSCON->FIFOCTRL &= ~disMask;\n+}\n+\n+/**\n+ * Power control definition bits (0 = powered, 1 = powered down)\n+ */\n+#define SYSCON_PDRUNCFG_LP_VD1           (1 << 2)\n+#define SYSCON_PDRUNCFG_PD_IRC_OSC       (1 << 3)\t\t/*!< IRC oscillator output */\n+#define SYSCON_PDRUNCFG_PD_IRC           (1 << 4)\t\t/*!< IRC oscillator */\n+#define SYSCON_PDRUNCFG_PD_FLASH         (1 << 5)\t\t/*!< Flash memory */\n+#define SYSCON_PDRUNCFG_PD_BOD_RST       (1 << 7)\t\t/*!< Brown-out Detect reset */\n+#define SYSCON_PDRUNCFG_PD_BOD_INTR      (1 << 8)\t\t/*!< Brown-out Detect interrupt */\n+#define SYSCON_PDRUNCFG_PD_VD2_ANA       (1 << 9)\t\t/*!< Analog power */\n+#define SYSCON_PDRUNCFG_PD_ADC0          (1 << 10)\t\t/*!< ADC0 */\n+#define SYSCON_PDRUNCFG_PD_SRAM0A        (1 << 13)\t\t/*!< First 8 kB of SRAM0 */\n+#define SYSCON_PDRUNCFG_PD_SRAM0B        (1 << 14)\t\t/*!< Remaining portion of SRAM0 */\n+#define SYSCON_PDRUNCFG_PD_SRAM1         (1 << 15)\t\t/*!< SRAM1 */\n+#define SYSCON_PDRUNCFG_PD_SRAM2         (1 << 16)\t\t/*!< SRAM2 */\n+#define SYSCON_PDRUNCFG_PD_ROM           (1 << 17)\t\t/*!< ROM */\n+#define SYSCON_PDRUNCFG_PD_VDDA_ENA      (1 << 19)\t\t/*!< Vdda to the ADC, must be enabled for the ADC to work */\n+#define SYSCON_PDRUNCFG_PD_WDT_OSC       (1 << 20)\t\t/*!< Watchdog oscillator */\n+#define SYSCON_PDRUNCFG_PD_SYS_PLL       (1 << 22)\t\t/*!< PLL0 */\n+#define SYSCON_PDRUNCFG_PD_VREFP         (1 << 23)\t\t/*!< Vrefp to the ADC, must be enabled for the ADC to work */\n+#define SYSCON_PDRUNCFG_PD_32K_OSC       (1 << 24)\t\t/*!< 32 kHz RTC oscillator */\n+#define SYSCON_PDRUNCFG_LP_VD2           (1 << 27)\n+#define SYSCON_PDRUNCFG_LP_VD3           (1 << 28)\n+#define SYSCON_PDRUNCFG_LP_VD8           (1UL << 29)\n+\n+/**\n+ * @brief\tPower up one or more blocks or peripherals\n+ * @return\tOR'ed values of SYSCON_PDRUNCFG_* values\n+ * @note\tA high state indicates the peripheral is powered down.\n+ */\n+__STATIC_INLINE uint32_t Chip_SYSCON_GetPowerStates(void)\n+{\n+\treturn LPC_SYSCON->PDRUNCFG;\n+}\n+\n+/**\n+ * @brief\tPower down one or more blocks or peripherals\n+ * @param\tpowerdownmask\t: OR'ed values of SYSCON_PDRUNCFG_* values\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_PowerDown(uint32_t powerdownmask)\n+{\n+\t/* Disable peripheral states by setting high */\n+\tLPC_SYSCON->PDRUNCFGSET = powerdownmask;\n+}\n+\n+/**\n+ * @brief\tPower up one or more blocks or peripherals\n+ * @param\tpowerupmask\t: OR'ed values of SYSCON_PDRUNCFG_* values\n+ * @return\tNothing\n+ */\n+void Chip_SYSCON_PowerUp(uint32_t powerupmask);\n+\n+/**\n+ * Start enable enumerations - for enabling and disabling peripheral wakeup\n+ */\n+typedef enum {\n+\tSYSCON_STARTER_WWDT = 0,\n+\tSYSCON_STARTER_BOD,\n+\tSYSCON_STARTER_DMA = 3,\n+\tSYSCON_STARTER_GINT0,\n+\tSYSCON_STARTER_PINT0,\n+\tSYSCON_STARTER_PINT1,\n+\tSYSCON_STARTER_PINT2,\n+\tSYSCON_STARTER_PINT3,\n+\tSYSCON_STARTER_UTICK,\n+\tSYSCON_STARTER_MRT,\n+\tSYSCON_STARTER_TIMER0,\n+\tSYSCON_STARTER_TIMER1,\n+\tSYSCON_STARTER_TIMER2,\n+\tSYSCON_STARTER_TIMER3,\n+\tSYSCON_STARTER_TIMER4,\n+\tSYSCON_STARTER_SCT0,\n+\tSYSCON_STARTER_USART0,\n+\tSYSCON_STARTER_USART1,\n+\tSYSCON_STARTER_USART2,\n+\tSYSCON_STARTER_USART3,\n+\tSYSCON_STARTER_I2C0,\n+\tSYSCON_STARTER_I2C1,\n+\tSYSCON_STARTER_I2C2,\n+\tSYSCON_STARTER_SPI0,\n+\tSYSCON_STARTER_SPI1,\n+\tSYSCON_STARTER_ADC0_SEQA,\n+\tSYSCON_STARTER_ADC0_SEQB,\n+\tSYSCON_STARTER_ADC0_THCMP,\n+\tSYSCON_STARTER_RTC,\n+\tSYSCON_STARTER_MAILBOX = 31,\n+\t/* For M4 only */\n+\tSYSCON_STARTER_GINT1 = 32 + 0,\n+\tSYSCON_STARTER_PINT4,\n+\tSYSCON_STARTER_PINT5,\n+\tSYSCON_STARTER_PINT6,\n+\tSYSCON_STARTER_PINT7,\n+\tSYSCON_STARTER_RIT = 32 + 8,\n+} CHIP_SYSCON_WAKEUP_T;\n+\n+/**\n+ * @brief\tEnables a pin's (PINT) wakeup logic\n+ * @param\tperiphId\t: Peripheral identifier\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_EnableWakeup(CHIP_SYSCON_WAKEUP_T periphId)\n+{\n+\tuint32_t pid = (uint32_t) periphId;\n+\n+\tif (pid < 32) {\n+\t\tLPC_SYSCON->STARTERSET[0] = (1 << pid);\n+\t}\n+\telse {\n+\t\tLPC_SYSCON->STARTERSET[1] = (1 << (pid - 32));\n+\t}\n+}\n+\n+/**\n+ * @brief\tDisables peripheral's wakeup logic\n+ * @param\tperiphId\t: Peripheral identifier\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_SYSCON_DisableWakeup(CHIP_SYSCON_WAKEUP_T periphId)\n+{\n+\tuint32_t pid = (uint32_t) periphId;\n+\n+\tif (pid < 32) {\n+\t\tLPC_SYSCON->STARTERCLR[0] = (1 << pid);\n+\t}\n+\telse {\n+\t\tLPC_SYSCON->STARTERCLR[1] = (1 << (pid - 32));\n+\t}\n+}\n+\n+/**\n+ * @brief\tReturn the device ID\n+ * @return\tDevice ID\n+ */\n+__STATIC_INLINE uint32_t Chip_SYSCON_GetDeviceID(void)\n+{\n+\treturn LPC_SYSCON->DEVICE_ID0;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SYSCON_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/timer_5410x.h ./chip/inc/timer_5410x.h\n--- a_tnusFF/chip/inc/timer_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/timer_5410x.h\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,456 @@\n+/*\n+ * @brief LPC5410X 32-bit Timer/PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __TIMER_5410X_H_\n+#define __TIMER_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup TIMER_5410X CHIP: LPC5410X 32-bit Timer driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief 32-bit Standard timer register block structure\n+ */\n+typedef struct {\t\t\t\t\t/*!< TIMERn Structure       */\n+\t__IO uint32_t IR;\t\t\t\t/*!< Interrupt Register. The IR can be written to clear interrupts. The IR can be read to identify which of eight possible interrupt sources are pending. */\n+\t__IO uint32_t TCR;\t\t\t\t/*!< Timer Control Register. The TCR is used to control the Timer Counter functions. The Timer Counter can be disabled or reset through the TCR. */\n+\t__IO uint32_t TC;\t\t\t\t/*!< Timer Counter. The 32 bit TC is incremented every PR+1 cycles of PCLK. The TC is controlled through the TCR. */\n+\t__IO uint32_t PR;\t\t\t\t/*!< Prescale Register. The Prescale Counter (below) is equal to this value, the next clock increments the TC and clears the PC. */\n+\t__IO uint32_t PC;\t\t\t\t/*!< Prescale Counter. The 32 bit PC is a counter which is incremented to the value stored in PR. When the value in PR is reached, the TC is incremented and the PC is cleared. The PC is observable and controllable through the bus interface. */\n+\t__IO uint32_t MCR;\t\t\t\t/*!< Match Control Register. The MCR is used to control if an interrupt is generated and if the TC is reset when a Match occurs. */\n+\t__IO uint32_t MR[4];\t\t\t/*!< Match Register. MR can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR matches the TC. */\n+\t__IO uint32_t CCR;\t\t\t\t/*!< Capture Control Register. The CCR controls which edges of the capture inputs are used to load the Capture Registers and whether or not an interrupt is generated when a capture takes place. */\n+\t__IO uint32_t CR[4];\t\t\t/*!< Capture Register. CR is loaded with the value of TC when there is an event on the CAPn.0 input. */\n+\t__IO uint32_t EMR;\t\t\t\t/*!< External Match Register. The EMR controls the external match pins MATn.0-3 (MAT0.0-3 and MAT1.0-3 respectively). */\n+\t__I  uint32_t RESERVED0[12];\n+\t__IO uint32_t CTCR;\t\t\t\t/*!< Count Control Register. The CTCR selects between Timer and Counter mode, and in Counter mode selects the signal and edge(s) for counting. */\n+\t__IO uint32_t PWMC;\n+} LPC_TIMER_T;\n+\n+/** Macro to clear interrupt pending */\n+#define TIMER_IR_CLR(n)         _BIT(n)\n+\n+/** Macro for getting a timer match interrupt bit */\n+#define TIMER_MATCH_INT(n)      (_BIT((n) & 0x0F))\n+/** Macro for getting a capture event interrupt bit */\n+#define TIMER_CAP_INT(n)        (_BIT((((n) & 0x0F) + 4)))\n+\n+/** Timer/counter enable bit */\n+#define TIMER_ENABLE            ((uint32_t) (1 << 0))\n+/** Timer/counter reset bit */\n+#define TIMER_RESET             ((uint32_t) (1 << 1))\n+/** Timer Control register Mask */\n+#define TIMER_CTRL_MASK         ((uint32_t) 0x03)\n+\n+/** Bit location for interrupt on MRx match, n = 0 to 3 */\n+#define TIMER_INT_ON_MATCH(n)   (_BIT(((n) * 3)))\n+/** Bit location for reset on MRx match, n = 0 to 3 */\n+#define TIMER_RESET_ON_MATCH(n) (_BIT((((n) * 3) + 1)))\n+/** Bit location for stop on MRx match, n = 0 to 3 */\n+#define TIMER_STOP_ON_MATCH(n)  (_BIT((((n) * 3) + 2)))\n+/** Match Control register Mask */\n+#define TIMER_MCR_MASK          ((uint32_t) 0x0FFF)\n+\n+/** Bit location for CAP.n on CRx rising edge, n = 0 to 3 */\n+#define TIMER_CAP_RISING(n)     (_BIT(((n) * 3)))\n+/** Bit location for CAP.n on CRx falling edge, n = 0 to 3 */\n+#define TIMER_CAP_FALLING(n)    (_BIT((((n) * 3) + 1)))\n+/** Bit location for CAP.n on CRx interrupt enable, n = 0 to 3 */\n+#define TIMER_INT_ON_CAP(n)     (_BIT((((n) * 3) + 2)))\n+/** Capture Control register Mask */\n+#define TIMER_CCR_MASK          ((uint32_t) 0x0FFF)\n+/** External Match register Mask */\n+#define TIMER_EMR_MASK          ((uint32_t) 0x0FFF)\n+/** Counter Control register Mask */\n+#define TIMER_CTCR_MASK          ((uint32_t) 0x0F)\n+\n+/**\n+ * @brief\tInitialize a timer\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @return\tNothing\n+ */\n+void Chip_TIMER_Init(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief\tShutdown a timer\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @return\tNothing\n+ */\n+void Chip_TIMER_DeInit(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief\tDetermine if a match interrupt is pending\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match interrupt number to check\n+ * @return\tfalse if the interrupt is not pending, otherwise true\n+ * @note\tDetermine if the match interrupt for the passed timer and match\n+ * counter is pending.\n+ */\n+__STATIC_INLINE bool Chip_TIMER_MatchPending(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+\treturn (bool) ((pTMR->IR & TIMER_MATCH_INT(matchnum)) != 0);\n+}\n+\n+/**\n+ * @brief\tDetermine if a capture interrupt is pending\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture interrupt number to check\n+ * @return\tfalse if the interrupt is not pending, otherwise true\n+ * @note\tDetermine if the capture interrupt for the passed capture pin is\n+ * pending.\n+ */\n+__STATIC_INLINE bool Chip_TIMER_CapturePending(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\treturn (bool) ((pTMR->IR & TIMER_CAP_INT(capnum)) != 0);\n+}\n+\n+/**\n+ * @brief\tClears a (pending) match interrupt\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match interrupt number to clear\n+ * @return\tNothing\n+ * @note\tClears a pending timer match interrupt.\n+ */\n+__STATIC_INLINE void Chip_TIMER_ClearMatch(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+\tpTMR->IR = TIMER_IR_CLR(matchnum);\n+}\n+\n+/**\n+ * @brief\tClears a (pending) capture interrupt\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture interrupt number to clear\n+ * @return\tNothing\n+ * @note\tClears a pending timer capture interrupt.\n+ */\n+__STATIC_INLINE void Chip_TIMER_ClearCapture(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\tpTMR->IR = (0x10 << capnum);\n+}\n+\n+/**\n+ * @brief\tEnables the timer (starts count)\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @return\tNothing\n+ * @note\tEnables the timer to start counting.\n+ */\n+__STATIC_INLINE void Chip_TIMER_Enable(LPC_TIMER_T *pTMR)\n+{\n+\tpTMR->TCR = (pTMR->TCR & TIMER_CTRL_MASK) | TIMER_ENABLE;\n+}\n+\n+/**\n+ * @brief\tDisables the timer (stops count)\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @return\tNothing\n+ * @note\tDisables the timer to stop counting.\n+ */\n+__STATIC_INLINE void Chip_TIMER_Disable(LPC_TIMER_T *pTMR)\n+{\n+\tpTMR->TCR = (pTMR->TCR & TIMER_CTRL_MASK) & ~TIMER_ENABLE;\n+}\n+\n+/**\n+ * @brief\tReturns the current timer count\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @return\tCurrent timer terminal count value\n+ * @note\tReturns the current timer terminal count.\n+ */\n+__STATIC_INLINE uint32_t Chip_TIMER_ReadCount(LPC_TIMER_T *pTMR)\n+{\n+\treturn pTMR->TC;\n+}\n+\n+/**\n+ * @brief\tReturns the current prescale count\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @return\tCurrent timer prescale count value\n+ * @note\tReturns the current prescale count.\n+ */\n+__STATIC_INLINE uint32_t Chip_TIMER_ReadPrescale(LPC_TIMER_T *pTMR)\n+{\n+\treturn pTMR->PC;\n+}\n+\n+/**\n+ * @brief\tSets the prescaler value\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tprescale\t: Prescale value to set the prescale register to\n+ * @return\tNothing\n+ * @note\tSets the prescale count value.\n+ */\n+__STATIC_INLINE void Chip_TIMER_PrescaleSet(LPC_TIMER_T *pTMR, uint32_t prescale)\n+{\n+\tpTMR->PR = prescale;\n+}\n+\n+/**\n+ * @brief\tSets a timer match value\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match timer to set match count for\n+ * @param\tmatchval\t: Match value for the selected match count\n+ * @return\tNothing\n+ * @note\tSets one of the timer match values.\n+ */\n+__STATIC_INLINE void Chip_TIMER_SetMatch(LPC_TIMER_T *pTMR, int8_t matchnum, uint32_t matchval)\n+{\n+\tpTMR->MR[matchnum] = matchval;\n+}\n+\n+/**\n+ * @brief\tReads a capture register\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture register to read\n+ * @return\tThe selected capture register value\n+ * @note\tReturns the selected capture register value.\n+ */\n+__STATIC_INLINE uint32_t Chip_TIMER_ReadCapture(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\treturn pTMR->CR[capnum];\n+}\n+\n+/**\n+ * @brief\tResets the timer terminal and prescale counts to 0\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @return\tNothing\n+ */\n+void Chip_TIMER_Reset(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief\tEnables a match interrupt that fires when the terminal count\n+ *\t\t\tmatches the match counter value.\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match timer, 0 to 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_MatchEnableInt(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+\tpTMR->MCR = (pTMR->MCR & TIMER_MCR_MASK) | TIMER_INT_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief\tDisables a match interrupt for a match counter.\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match timer, 0 to 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_MatchDisableInt(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+\tpTMR->MCR = (pTMR->MCR & TIMER_MCR_MASK) & ~TIMER_INT_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief\tFor the specific match counter, enables reset of the terminal count register when a match occurs\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match timer, 0 to 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_ResetOnMatchEnable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+\tpTMR->MCR = (pTMR->MCR & TIMER_MCR_MASK) | TIMER_RESET_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief\tFor the specific match counter, disables reset of the terminal count register when a match occurs\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match timer, 0 to 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_ResetOnMatchDisable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+\tpTMR->MCR = (pTMR->MCR & TIMER_MCR_MASK) & ~TIMER_RESET_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief\tEnable a match timer to stop the terminal count when a\n+ *\t\t\tmatch count equals the terminal count.\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match timer, 0 to 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_StopOnMatchEnable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+\tpTMR->MCR = (pTMR->MCR & TIMER_MCR_MASK) | TIMER_STOP_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief\tDisable stop on match for a match timer. Disables a match timer\n+ *\t\t\tto stop the terminal count when a match count equals the terminal count.\n+ * @param\tpTMR\t\t: Pointer to timer IP register address\n+ * @param\tmatchnum\t: Match timer, 0 to 3\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_StopOnMatchDisable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+\tpTMR->MCR = (pTMR->MCR & TIMER_MCR_MASK) & ~TIMER_STOP_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief\tEnables capture on on rising edge of selected CAP signal for the\n+ *\t\t\tselected capture register, enables the selected CAPn.capnum signal to load\n+ *\t\t\tthe capture register with the terminal coount on a rising edge.\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture signal/register to use\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_CaptureRisingEdgeEnable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\tpTMR->CCR = (pTMR->CCR & TIMER_CCR_MASK) | TIMER_CAP_RISING(capnum);\n+}\n+\n+/**\n+ * @brief\tDisables capture on on rising edge of selected CAP signal. For the\n+ *\t\t\tselected capture register, disables the selected CAPn.capnum signal to load\n+ *\t\t\tthe capture register with the terminal coount on a rising edge.\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture signal/register to use\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_CaptureRisingEdgeDisable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\tpTMR->CCR = (pTMR->CCR & TIMER_CCR_MASK) & ~TIMER_CAP_RISING(capnum);\n+}\n+\n+/**\n+ * @brief\tEnables capture on on falling edge of selected CAP signal. For the\n+ *\t\t\tselected capture register, enables the selected CAPn.capnum signal to load\n+ *\t\t\tthe capture register with the terminal coount on a falling edge.\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture signal/register to use\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_CaptureFallingEdgeEnable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\tpTMR->CCR = (pTMR->CCR & TIMER_CCR_MASK) | TIMER_CAP_FALLING(capnum);\n+}\n+\n+/**\n+ * @brief\tDisables capture on on falling edge of selected CAP signal. For the\n+ *\t\t\tselected capture register, disables the selected CAPn.capnum signal to load\n+ *\t\t\tthe capture register with the terminal coount on a falling edge.\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture signal/register to use\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_CaptureFallingEdgeDisable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\tpTMR->CCR = (pTMR->CCR & TIMER_CCR_MASK) & ~TIMER_CAP_FALLING(capnum);\n+}\n+\n+/**\n+ * @brief\tEnables interrupt on capture of selected CAP signal. For the\n+ *\t\t\tselected capture register, an interrupt will be generated when the enabled\n+ *\t\t\trising or falling edge on CAPn.capnum is detected.\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture signal/register to use\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_CaptureEnableInt(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\tpTMR->CCR = (pTMR->CCR & TIMER_CCR_MASK) | TIMER_INT_ON_CAP(capnum);\n+}\n+\n+/**\n+ * @brief\tDisables interrupt on capture of selected CAP signal\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapnum\t: Capture signal/register to use\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_TIMER_CaptureDisableInt(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+\tpTMR->CCR = (pTMR->CCR & TIMER_CCR_MASK) & ~TIMER_INT_ON_CAP(capnum);\n+}\n+\n+/**\n+ * @brief Standard timer initial match pin state and change state\n+ */\n+typedef enum IP_TIMER_PIN_MATCH_STATE {\n+\tTIMER_EXTMATCH_DO_NOTHING = 0,\t/*!< Timer match state does nothing on match pin */\n+\tTIMER_EXTMATCH_CLEAR      = 1,\t/*!< Timer match state sets match pin low */\n+\tTIMER_EXTMATCH_SET        = 2,\t/*!< Timer match state sets match pin high */\n+\tTIMER_EXTMATCH_TOGGLE     = 3\t\t/*!< Timer match state toggles match pin */\n+} TIMER_PIN_MATCH_STATE_T;\n+\n+/**\n+ * @brief\tSets external match control (MATn.matchnum) pin control. For the pin\n+ *          selected with matchnum, sets the function of the pin that occurs on\n+ *          a terminal count match for the match count.\n+ * @param\tpTMR\t\t\t: Pointer to timer IP register address\n+ * @param\tinitial_state\t: Initial state of the pin, high(1) or low(0)\n+ * @param\tmatchState\t\t: Selects the match state for the pin\n+ * @param\tmatchnum\t\t: MATn.matchnum signal to use\n+ * @return\tNothing\n+ * @note\tFor the pin selected with matchnum, sets the function of the pin that occurs on\n+ * a terminal count match for the match count.\n+ */\n+void Chip_TIMER_ExtMatchControlSet(LPC_TIMER_T *pTMR, int8_t initial_state,\n+\t\t\t\t\t\t\t\t   TIMER_PIN_MATCH_STATE_T matchState, int8_t matchnum);\n+\n+/**\n+ * @brief Standard timer clock and edge for count source\n+ */\n+typedef enum IP_TIMER_CAP_SRC_STATE {\n+\tTIMER_CAPSRC_RISING_PCLK  = 0,\t/*!< Timer ticks on PCLK rising edge */\n+\tTIMER_CAPSRC_RISING_CAPN  = 1,\t/*!< Timer ticks on CAPn.x rising edge */\n+\tTIMER_CAPSRC_FALLING_CAPN = 2,\t/*!< Timer ticks on CAPn.x falling edge */\n+\tTIMER_CAPSRC_BOTH_CAPN    = 3\t\t/*!< Timer ticks on CAPn.x both edges */\n+} TIMER_CAP_SRC_STATE_T;\n+\n+/**\n+ * @brief\tSets timer count source and edge with the selected passed from CapSrc.\n+ *          If CapSrc selected a CAPn pin, select the specific CAPn pin with the capnum value.\n+ * @param\tpTMR\t: Pointer to timer IP register address\n+ * @param\tcapSrc\t: timer clock source and edge\n+ * @param\tcapnum\t: CAPn.capnum pin to use (0 - 2)\n+ * @return\tNothing\n+ * @note\tIf CapSrc selected a CAPn pin, select the specific CAPn pin with the capnum value.\n+ */\n+__STATIC_INLINE void Chip_TIMER_TIMER_SetCountClockSrc(LPC_TIMER_T *pTMR,\n+\t\t\t\t\t\t\t\t\t\t\t\t\t   TIMER_CAP_SRC_STATE_T capSrc,\n+\t\t\t\t\t\t\t\t\t\t\t\t\t   int8_t capnum)\n+{\n+\tpTMR->CTCR = (pTMR->CTCR & ~TIMER_CTCR_MASK) | ((uint32_t) capSrc | ((uint32_t) capnum) << 2);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __TIMER_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/uart_5410x.h ./chip/inc/uart_5410x.h\n--- a_tnusFF/chip/inc/uart_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/uart_5410x.h\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,539 @@\n+/*\n+ * @brief LPC5410X UART driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __UART_5410X_H_\n+#define __UART_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include \"ring_buffer.h\"\n+\n+/** @defgroup UART_5410X CHIP: LPC5410X UART Driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/* UART Status Register bits */\n+#define UART_RXRDY           (1 << 0)\t/* Receive data ready */\n+#define UART_RXIDLE          (1 << 1)\t/* Receiver Idle */\n+#define UART_TXRDY           (1 << 2)\t/* Transmitter ready */\n+#define UART_TXIDLE          (1 << 3)\t/* Transmitter Idle */\n+#define UART_RXDERR          (0xF100)\t/* overrun err, frame err, parity err, RxNoise err */\n+#define UART_TXDERR          (0x0200)\t/* underrun err */\n+#define UART_START           (0x1000)\n+\n+/* UART Interrupt register bits */\n+#define UART_INT_RXRDY          (1 << 0)\n+#define UART_INT_TXRDY          (1 << 2)\n+#define UART_INT_TXIDLE         (1 << 3)\n+#define UART_INT_CTS            (1 << 5)\n+#define UART_INT_TXDIS          (1 << 6)\n+#define UART_INT_OVR            (1 << 8)\n+#define UART_INT_BREAK          (1 << 11)\n+#define UART_INT_START          (1 << 12)\n+#define UART_INT_FRMERR         (1 << 13)\n+#define UART_INT_PARERR         (1 << 14)\n+#define UART_INT_RXNOISE        (1 << 15)\n+#define UART_INT_ABAUDERR       (1 << 16)\n+\n+/* Configuration register bits */\n+#define UARTEN      1\n+\n+#define UART_CTL_TXDIS          (1UL << 6)\n+#define UART_CTL_TXBRKEN        (1UL << 1)\n+#define UART_CTL_AUTOBAUD       (1UL << 16)\n+#define UART_CFG_RES            (2UL | (1UL << 10) | (1UL << 13) | (1UL << 17) | (0xFFUL << 24))\n+#define UART_CFG_ENABLE          1\n+#define UART_PAR_MASK           (3 << 4)\n+#define UART_DATA_MASK          (3 << 2)\n+#define UART_CTL_RES            (1UL | (7UL << 3) | (1UL << 7) | (0x3FUL << 10) | (0x7FFFUL << 17))\n+#define UART_IDLE_MASK          (1 << 3)\n+#define UART_STAT_CTS           (1 << 4)\n+#define UART_STAT_BREAK         (1 << 10)\n+#define UART_STAT_RXIDLE        (1 << 1)\n+\n+/*******************\n+ * EXPORTED MACROS  *\n+ ********************/\n+#define     ECHO_EN             1\n+#define     ECHO_DIS            0\n+\n+/*********************\n+ * EXPORTED TYPEDEFS  *\n+ **********************/\n+\n+typedef struct {\t\t/* UART registers Structure          */\n+\t__IO uint32_t CFG;\t\t\t\t/*!< Offset: 0x000 Configuration register  */\n+\t__IO uint32_t CTL;\t\t\t\t/*!< Offset: 0x004 Control register */\n+\t__IO uint32_t STAT;\t\t\t\t/*!< Offset: 0x008 Status register */\n+\t__IO uint32_t INTENSET;\t\t\t/*!< Offset: 0x00C Interrupt Enable Read and Set register */\n+\t__O  uint32_t INTENCLR;\t\t\t/*!< Offset: 0x010 Interrupt Enable Clear register */\n+\t__I  uint32_t RXDAT;\t\t/*!< Offset: 0x014 Receiver Data register */\n+\t__I  uint32_t RXDATSTAT;\t/*!< Offset: 0x018 Rx Data with status */\n+\t__O  uint32_t TXDAT;\t\t\t/*!< Offset: 0x01C Transmitter Data Register */\n+\t__IO uint32_t BRG;\t\t\t\t/*!< Offset: 0x020 Baud Rate Generator register */\n+\t__I  uint32_t INTSTAT;\t/*!< Offset: 0x024 Interrupt Status register */\n+\t__IO uint32_t OSR;\t\t\t\t/*!< Offset: 0x028 Oversampling register */\n+\t__IO uint32_t ADR;\t\t\t\t/*!< Offset: 0x02C Address register (for automatic address matching) */\n+} LPC_USART_T;\n+\n+/**\n+ * @brief UART CFG register definitions\n+ */\n+// #define UART_CFG_ENABLE         (0x01 << 0)\n+#define UART_CFG_DATALEN_7      (0x00 << 2)\t\t/*!< UART 7 bit length mode */\n+#define UART_CFG_DATALEN_8      (0x01 << 2)\t\t/*!< UART 8 bit length mode */\n+#define UART_CFG_DATALEN_9      (0x02 << 2)\t\t/*!< UART 9 bit length mode */\n+#define UART_CFG_PARITY_NONE    (0x00 << 4)\t\t/*!< No parity */\n+#define UART_CFG_PARITY_EVEN    (0x02 << 4)\t\t/*!< Even parity */\n+#define UART_CFG_PARITY_ODD     (0x03 << 4)\t\t/*!< Odd parity */\n+#define UART_CFG_STOPLEN_1      (0x00 << 6)\t\t/*!< UART One Stop Bit Select */\n+#define UART_CFG_STOPLEN_2      (0x01 << 6)\t\t/*!< UART Two Stop Bits Select */\n+#define UART_CFG_MODE32K        (0x01 << 7)\t\t/*!< UART 32K MODE */\n+#define UART_CFG_LINMODE        (0x01 << 8)\t\t/*!< UART LIN MODE */\n+#define UART_CFG_CTSEN          (0x01 << 9)\t\t/*!< CTS enable bit */\n+#define UART_CFG_SYNCEN         (0x01 << 11)\t/*!< Synchronous mode enable bit */\n+#define UART_CFG_CLKPOL         (0x01 << 12)\t/*!< Un_RXD rising edge sample enable bit */\n+#define UART_CFG_SYNCMST        (0x01 << 14)\t/*!< Select master mode (synchronous mode) enable bit */\n+#define UART_CFG_LOOP           (0x01 << 15)\t/*!< Loopback mode enable bit */\n+\n+/**\n+ * @brief UART CTRL register definitions\n+ */\n+#define UART_CTRL_TXBRKEN       (0x01 << 1)\t\t/*!< Continuous break enable bit */\n+#define UART_CTRL_ADDRDET       (0x01 << 2)\t\t/*!< Address detect mode enable bit */\n+#define UART_CTRL_TXDIS         (0x01 << 6)\t\t/*!< Transmit disable bit */\n+#define UART_CTRL_CC            (0x01 << 8)\t\t/*!< Continuous Clock mode enable bit */\n+#define UART_CTRL_CLRCC         (0x01 << 9)\t\t/*!< Clear Continuous Clock bit */\n+#define UART_CTRL_AUTOBAUD      (0x01 << 16)\t/*!< Auto baud bit */\n+\n+/**\n+ * @brief UART STAT register definitions\n+ */\n+#define UART_STAT_RXRDY         (0x01 << 0)\t\t\t/*!< Receiver ready */\n+// #define UART_STAT_RXIDLE        (0x01 << 1)\t\t\t/*!< Receiver idle */\n+#define UART_STAT_TXRDY         (0x01 << 2)\t\t\t/*!< Transmitter ready for data */\n+#define UART_STAT_TXIDLE        (0x01 << 3)\t\t\t/*!< Transmitter idle */\n+// #define UART_STAT_CTS           (0x01 << 4)\t\t\t/*!< Status of CTS signal */\n+#define UART_STAT_DELTACTS      (0x01 << 5)\t\t\t/*!< Change in CTS state */\n+#define UART_STAT_TXDISINT      (0x01 << 6)\t\t\t/*!< Transmitter disabled */\n+#define UART_STAT_OVERRUNINT    (0x01 << 8)\t\t\t/*!< Overrun Error interrupt flag. */\n+#define UART_STAT_RXBRK         (0x01 << 10)\t\t/*!< Received break */\n+#define UART_STAT_DELTARXBRK    (0x01 << 11)\t\t/*!< Change in receive break detection */\n+#define UART_STAT_START         (0x01 << 12)\t\t/*!< Start detected */\n+#define UART_STAT_FRM_ERRINT    (0x01 << 13)\t\t/*!< Framing Error interrupt flag */\n+#define UART_STAT_PAR_ERRINT    (0x01 << 14)\t\t/*!< Parity Error interrupt flag */\n+#define UART_STAT_RXNOISEINT    (0x01 << 15)\t\t/*!< Received Noise interrupt flag */\n+#define UART_STAT_ABERR         (0x01 << 16)\t\t/*!< Auto baud error flag */\n+\n+/**\n+ * @brief UART INTENSET/INTENCLR register definitions\n+ */\n+#define UART_INTEN_RXRDY        (0x01 << 0)\t\t\t/*!< Receive Ready interrupt */\n+#define UART_INTEN_TXRDY        (0x01 << 2)\t\t\t/*!< Transmit Ready interrupt */\n+#define UART_INTEN_DELTACTS     (0x01 << 5)\t\t\t/*!< Change in CTS state interrupt */\n+#define UART_INTEN_TXDIS        (0x01 << 6)\t\t\t/*!< Transmitter disable interrupt */\n+#define UART_INTEN_OVERRUN      (0x01 << 8)\t\t\t/*!< Overrun error interrupt */\n+#define UART_INTEN_DELTARXBRK   (0x01 << 11)\t\t/*!< Change in receiver break detection interrupt */\n+#define UART_INTEN_START        (0x01 << 12)\t\t/*!< Start detect interrupt */\n+#define UART_INTEN_FRAMERR      (0x01 << 13)\t\t/*!< Frame error interrupt */\n+#define UART_INTEN_PARITYERR    (0x01 << 14)\t\t/*!< Parity error interrupt */\n+#define UART_INTEN_RXNOISE      (0x01 << 15)\t\t/*!< Received noise interrupt */\n+\n+/**\n+ * @brief\tUART Baud rate calculation structure\n+ * @note\n+ * Use oversampling (@a ovr) value other than 16, only if the difference\n+ * between the actual baud and desired baud has an unacceptable error percentage.\n+ * Smaller @a ovr values can cause the sampling position within the data-bit\n+ * less accurate an may potentially cause more noise errors or incorrect data\n+ * set ovr to < 10 only when there is no other higher values suitable. Note that\n+ * the UART OSR and BRG are -1 encoded i.e., when writing to register BRG @a div must\n+ * be (div - 1) and when writing to OSR @a ovr must be (ovr - 1)\n+ */\n+typedef struct {\n+\tuint32_t clk;\t/*!< IN: Base clock to fractional divider; OUT: \"Base clock rate for UART\" */\n+\tuint32_t baud;\t/*!< IN: Required baud rate; OUT: Actual baud rate */\n+\tuint8_t ovr;\t/*!< IN: Number of desired over samples [0-auto detect or values 5 to 16]; OUT: Auto detected over samples [unchanged if IN is not 0] */\n+\tuint8_t mul;\t/*!< IN: 0 - calculate MUL, 1 - do't calculate (@a clk) has UART base clock; OUT: MUL value to be set in FRG register */\n+\tuint16_t div;\t/*!< OUT: Integer divider to divide the \"Base clock rate for UART\" */\n+} UART_BAUD_T;\n+\n+/**\n+ * @brief\tCalculate baudrate parameters for a UART\n+ * @param\tpUART\t\t: Pointer to selected UARTx peripheral (Ignored)\n+ * @param\tpBaud\t\t: Pointer to baud structure #UART_BAUD_T\n+ * @return\tLPC_OK(0) on success; non-zero on failure\n+ * @note\tValues returned by pBaud is valid only if the return value is LPC_OK.\n+ */\n+uint32_t Chip_UART_CalcBaud(LPC_USART_T *pUART, UART_BAUD_T *pBaud);\n+\n+/**\n+ * @brief\tEnable the UART\n+ * @param\tpUART\t\t: Pointer to selected UARTx peripheral\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_UART_Enable(LPC_USART_T *pUART)\n+{\n+\tpUART->CFG |= UART_CFG_ENABLE;\n+}\n+\n+/**\n+ * @brief\tDisable the UART\n+ * @param\tpUART\t: Pointer to selected UARTx peripheral\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_UART_Disable(LPC_USART_T *pUART)\n+{\n+\tpUART->CFG &= ~UART_CFG_ENABLE;\n+}\n+\n+/**\n+ * @brief\tEnable transmission on UART TxD pin\n+ * @param\tpUART\t: Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+__STATIC_INLINE void Chip_UART_TXEnable(LPC_USART_T *pUART)\n+{\n+\tpUART->CTL &= ~UART_CTRL_TXDIS;\n+}\n+\n+/**\n+ * @brief\tDisable transmission on UART TxD pin\n+ * @param\tpUART\t: Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+__STATIC_INLINE void Chip_UART_TXDisable(LPC_USART_T *pUART)\n+{\n+\tpUART->CTL |= UART_CTRL_TXDIS;\n+}\n+\n+/**\n+ * @brief\tSet auto baud\n+ * @param\tpUART\t: Pointer to selected pUART peripheral\n+ * @return true if auto baud succeeds, false if fails\n+ */\n+__STATIC_INLINE uint32_t Chip_UART_AutoBaud(LPC_USART_T *pUART)\n+{\n+\twhile ( (pUART->STAT & UART_STAT_RXIDLE) != UART_STAT_RXIDLE ) {}\n+\tpUART->CTL |= UART_CTRL_AUTOBAUD;\n+\twhile ( pUART->CTL & UART_CTRL_AUTOBAUD ) {\n+\t\tif ( pUART->STAT & UART_STAT_ABERR ) {\n+\t\t\tpUART->STAT = UART_STAT_ABERR;\n+\t\t\treturn false;\n+\t\t}\n+\t}\n+\treturn true;\n+}\n+\n+/**\n+ * @brief\tTransmit a single data byte through the UART peripheral\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tdata\t: Byte to transmit\n+ * @return\tNothing\n+ * @note\tThis function attempts to place a byte into the UART transmit\n+ *\t\t\tholding register regard regardless of UART state.\n+ */\n+__STATIC_INLINE void Chip_UART_SendByte(LPC_USART_T *pUART, uint8_t data)\n+{\n+\tpUART->TXDAT = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief\tRead a single byte data from the UART peripheral\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @return\tA single byte of data read\n+ * @note\tThis function reads a byte from the UART receive FIFO or\n+ *\t\t\treceive hold register regard regardless of UART state. The\n+ *\t\t\tFIFO status should be read first prior to using this function\n+ */\n+__STATIC_INLINE uint32_t Chip_UART_ReadByte(LPC_USART_T *pUART)\n+{\n+\t/* Strip off undefined reserved bits, keep 9 lower bits */\n+\treturn (uint32_t) (pUART->RXDAT & 0x000001FF);\n+}\n+\n+/**\n+ * @brief\tSets the UART baudrate divider values (BRG and OSR)\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tdiv\t\t: Baud rate clock divider value\n+ * @param\tovr\t\t: Over sampling value to be used\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_UART_Div(LPC_USART_T *pUART, uint32_t div, uint32_t ovr)\n+{\n+\tif (div) {\n+\t\tpUART->BRG = div - 1;\n+\t}\n+\tif (ovr) {\n+\t\tpUART->OSR = ovr - 1;\n+\t}\n+}\n+\n+/**\n+ * @brief\tEnable UART interrupts\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tintMask\t: OR'ed Interrupts to enable\n+ * @return\tNothing\n+ * @note\tUse an OR'ed value of UART_INTEN_* definitions with this function\n+ *\t\t\tto enable specific UART interrupts.\n+ */\n+__STATIC_INLINE void Chip_UART_IntEnable(LPC_USART_T *pUART, uint32_t intMask)\n+{\n+\tpUART->INTENSET = intMask;\n+}\n+\n+/**\n+ * @brief\tDisable UART interrupts\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tintMask\t: OR'ed Interrupts to disable\n+ * @return\tNothing\n+ * @note\tUse an OR'ed value of UART_INTEN_* definitions with this function\n+ *\t\t\tto disable specific UART interrupts.\n+ */\n+__STATIC_INLINE void Chip_UART_IntDisable(LPC_USART_T *pUART, uint32_t intMask)\n+{\n+\tpUART->INTENCLR = intMask;\n+}\n+\n+/**\n+ * @brief\tReturns UART interrupts that are enabled\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @return\tReturns the enabled UART interrupts\n+ * @note\tUse an OR'ed value of UART_INTEN_* definitions with this function\n+ *\t\t\tto determine which interrupts are enabled. You can check\n+ *\t\t\tfor multiple enabled bits if needed.\n+ */\n+__STATIC_INLINE uint32_t Chip_UART_GetIntsEnabled(LPC_USART_T *pUART)\n+{\n+\treturn pUART->INTENSET;\n+}\n+\n+/**\n+ * @brief\tGet UART interrupt status\n+ * @param\tpUART\t: The base of UART peripheral on the chip\n+ * @return\tThe Interrupt status register of UART\n+ * @note\tMultiple interrupts may be pending. Mask the return value\n+ *\t\t\twith one or more UART_INTEN_* definitions to determine\n+ *\t\t\tpending interrupts.\n+ */\n+__STATIC_INLINE uint32_t Chip_UART_GetIntStatus(LPC_USART_T *pUART)\n+{\n+\treturn pUART->INTSTAT;\n+}\n+\n+/**\n+ * @brief\tConfigure data width, parity and stop bits\n+ * @param\tpUART\t: Pointer to selected pUART peripheral\n+ * @param\tconfig\t: UART configuration, OR'ed values of select UART_CFG_* defines\n+ * @return\tNothing\n+ * @note\tSelect OR'ed config options for the UART from the UART_CFG_PARITY_*,\n+ *\t\t\tUART_CFG_STOPLEN_*, and UART_CFG_DATALEN_* definitions. For example,\n+ *\t\t\ta configuration of 8 data bits, 1 stop bit, and even (enabled) parity would be\n+ *\t\t\t(UART_CFG_DATALEN_8 | UART_CFG_STOPLEN_1 | UART_CFG_PARITY_EVEN). Will not\n+ *\t\t\talter other bits in the CFG register.\n+ */\n+__STATIC_INLINE void Chip_UART_ConfigData(LPC_USART_T *pUART, uint32_t config)\n+{\n+\tpUART->CFG = config;\n+}\n+\n+/**\n+ * @brief\tGet the UART status register\n+ * @param\tpUART\t: Pointer to selected UARTx peripheral\n+ * @return\tUART status register\n+ * @note\tMultiple statuses may be pending. Mask the return value\n+ *\t\t\twith one or more UART_STAT_* definitions to determine\n+ *\t\t\tstatuses.\n+ */\n+__STATIC_INLINE uint32_t Chip_UART_GetStatus(LPC_USART_T *pUART)\n+{\n+\treturn pUART->STAT;\n+}\n+\n+/**\n+ * @brief\tClear the UART status register\n+ * @param\tpUART\t: Pointer to selected UARTx peripheral\n+ * @param\tstsMask\t: OR'ed statuses to disable\n+ * @return\tNothing\n+ * @note\tMultiple interrupts may be pending. Mask the return value\n+ *\t\t\twith one or more UART_INTEN_* definitions to determine\n+ *\t\t\tpending interrupts.\n+ */\n+__STATIC_INLINE void Chip_UART_ClearStatus(LPC_USART_T *pUART, uint32_t stsMask)\n+{\n+\tpUART->STAT = stsMask;\n+}\n+\n+/**\n+ * @brief\tInitialize the UART peripheral\n+ * @param\tpUART\t: The base of UART peripheral on the chip\n+ * @return\tNothing\n+ */\n+void Chip_UART_Init(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief\tDeinitialize the UART peripheral\n+ * @param\tpUART\t: The base of UART peripheral on the chip\n+ * @return\tNothing\n+ */\n+void Chip_UART_DeInit(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief\tTransmit a byte array through the UART peripheral (non-blocking)\n+ * @param\tpUART\t\t: Pointer to selected UART peripheral\n+ * @param\tdata\t\t: Pointer to bytes to transmit\n+ * @param\tnumBytes\t: Number of bytes to transmit\n+ * @return\tThe actual number of bytes placed into the FIFO\n+ * @note\tThis function places data into the transmit FIFO until either\n+ *\t\t\tall the data is in the FIFO or the FIFO is full. This function\n+ *\t\t\twill not block in the FIFO is full. The actual number of bytes\n+ *\t\t\tplaced into the FIFO is returned. This function ignores errors.\n+ */\n+int Chip_UART_Send(LPC_USART_T *pUART, const void *data, int numBytes);\n+\n+/**\n+ * @brief\tRead data through the UART peripheral (non-blocking)\n+ * @param\tpUART\t\t: Pointer to selected UART peripheral\n+ * @param\tdata\t\t: Pointer to bytes array to fill\n+ * @param\tnumBytes\t: Size of the passed data array\n+ * @return\tThe actual number of bytes read\n+ * @note\tThis function reads data from the receive FIFO until either\n+ *\t\t\tall the data has been read or the passed buffer is completely full.\n+ *\t\t\tThis function will not block. This function ignores errors.\n+ */\n+int Chip_UART_Read(LPC_USART_T *pUART, void *data, int numBytes);\n+\n+/**\n+ * @brief\tSet baud rate for UART\n+ * @param\tpUART\t: The base of UART peripheral on the chip\n+ * @param\tbaudrate: Baud rate to be set\n+ * @return\tNothing\n+ * @note\n+ * Setting the baud rate of one UART will affect the baud rate of other\n+ * UART's as the Fractional divider is shared between all the UART.\n+ */\n+void Chip_UART_SetBaud(LPC_USART_T *pUART, uint32_t baudrate);\n+\n+/**\n+ * @brief\tTransmit a byte array through the UART peripheral (blocking)\n+ * @param\tpUART\t\t: Pointer to selected UART peripheral\n+ * @param\tdata\t\t: Pointer to data to transmit\n+ * @param\tnumBytes\t: Number of bytes to transmit\n+ * @return\tThe number of bytes transmitted\n+ * @note\tThis function will send or place all bytes into the transmit\n+ *\t\t\tFIFO. This function will block until the last bytes are in the FIFO.\n+ */\n+int Chip_UART_SendBlocking(LPC_USART_T *pUART, const void *data, int numBytes);\n+\n+/**\n+ * @brief\tRead data through the UART peripheral (blocking)\n+ * @param\tpUART\t\t: Pointer to selected UART peripheral\n+ * @param\tdata\t\t: Pointer to data array to fill\n+ * @param\tnumBytes\t: Size of the passed data array\n+ * @return\tThe size of the dat array\n+ * @note\tThis function reads data from the receive FIFO until the passed\n+ *\t\t\tbuffer is completely full. The function will block until full.\n+ *\t\t\tThis function ignores errors.\n+ */\n+int Chip_UART_ReadBlocking(LPC_USART_T *pUART, void *data, int numBytes);\n+\n+/**\n+ * @brief\tUART receive-only interrupt handler for ring buffers\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tpRB\t\t: Pointer to ring buffer structure to use\n+ * @return\tNothing\n+ * @note\tIf ring buffer support is desired for the receive side\n+ *\t\t\tof data transfer, the UART interrupt should call this\n+ *\t\t\tfunction for a receive based interrupt status.\n+ */\n+void Chip_UART_RXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB);\n+\n+/**\n+ * @brief\tUART transmit-only interrupt handler for ring buffers\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tpRB\t\t: Pointer to ring buffer structure to use\n+ * @return\tNothing\n+ * @note\tIf ring buffer support is desired for the transmit side\n+ *\t\t\tof data transfer, the UART interrupt should call this\n+ *\t\t\tfunction for a transmit based interrupt status.\n+ */\n+void Chip_UART_TXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB);\n+\n+/**\n+ * @brief\tPopulate a transmit ring buffer and start UART transmit\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tpRB\t\t: Pointer to ring buffer structure to use\n+ * @param\tdata\t: Pointer to buffer to move to ring buffer\n+ * @param\tcount\t: Number of bytes to move\n+ * @return\tThe number of bytes placed into the ring buffer\n+ * @note\tWill move the data into the TX ring buffer and start the\n+ *\t\t\ttransfer. If the number of bytes returned is less than the\n+ *\t\t\tnumber of bytes to send, the ring buffer is considered full.\n+ */\n+uint32_t Chip_UART_SendRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, const void *data, int count);\n+\n+/**\n+ * @brief\tCopy data from a receive ring buffer\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tpRB\t\t: Pointer to ring buffer structure to use\n+ * @param\tdata\t: Pointer to buffer to fill from ring buffer\n+ * @param\tbytes\t: Size of the passed buffer in bytes\n+ * @return\tThe number of bytes placed into the ring buffer\n+ * @note\tWill move the data from the RX ring buffer up to the\n+ *\t\t\tthe maximum passed buffer size. Returns 0 if there is\n+ *\t\t\tno data in the ring buffer.\n+ */\n+int Chip_UART_ReadRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, void *data, int bytes);\n+\n+/**\n+ * @brief\tUART receive/transmit interrupt handler for ring buffers\n+ * @param\tpUART\t: Pointer to selected UART peripheral\n+ * @param\tpRXRB\t: Pointer to transmit ring buffer\n+ * @param\tpTXRB\t: Pointer to receive ring buffer\n+ * @return\tNothing\n+ * @note\tThis provides a basic implementation of the UART IRQ\n+ *\t\t\thandler for support of a ring buffer implementation for\n+ *\t\t\ttransmit and receive.\n+ */\n+void Chip_UART_IRQRBHandler(LPC_USART_T *pUART, RINGBUFF_T *pRXRB, RINGBUFF_T *pTXRB);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __UART_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/utick_5410x.h ./chip/inc/utick_5410x.h\n--- a_tnusFF/chip/inc/utick_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/utick_5410x.h\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,174 @@\n+/*\n+ * @brief LPC5410X Micro Tick chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __UTICK_5410X_H_\n+#define __UTICK_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup UTICK_5410X CHIP: LPC5410X Micro Tick driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief Micro Tick register block structure\n+ */\n+typedef struct {\n+\t__IO uint32_t CTRL;\t\t\t\t/*!< UTick Control register */\n+\t__IO uint32_t STATUS;\t\t\t/*!< UTick Status register */\n+} LPC_UTICK_T;\n+\n+/**\n+ * @brief UTick register definitions\n+ */\n+/** UTick repeat delay bit */\n+#define UTICK_CTRL_REPEAT           ((uint32_t) 1UL << 31)\n+/** UTick Delay Value Mask */\n+#define UTICK_CTRL_DELAY_MASK       ((uint32_t) 0x7FFFFFFF)\n+/** UTick Interrupt Status bit */\n+#define UTICK_STATUS_INTR           ((uint32_t) 1 << 0)\n+/** UTick Active Status bit */\n+#define UTICK_STATUS_ACTIVE         ((uint32_t) 1 << 1)\n+/** UTick Status Register Mask */\n+#define UTICK_STATUS_MASK           ((uint32_t) 0x03)\n+\n+/**\n+ * @brief\tInitialize the UTICK peripheral\n+ * @param\tpUTICK\t: UTICK peripheral selected\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_UTICK_Init(LPC_UTICK_T *pUTICK)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_UTICK);\n+\tChip_SYSCON_PeriphReset(RESET_UTICK);\n+}\n+\n+/**\n+ * @brief\tDe-initialize the UTICK peripheral\n+ * @param\tpUTICK\t: UTICK peripheral selected\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_UTICK_DeInit(LPC_UTICK_T *pUTICK)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_UTICK);\n+}\n+\n+/**\n+ * @brief\tSetup UTICK\n+ * @param\tpUTICK\t\t: The base address of UTICK block\n+ * @param\ttick_value\t: Tick value, should not exceed UTICK_CTRL_DELAY_MASK\n+ * @param\trepeat\t\t: If true then delay repeats continuously else it is one time\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_UTICK_SetTick(LPC_UTICK_T *pUTICK, uint32_t tick_value, bool repeat)\n+{\n+\tif (repeat) {\n+\t\ttick_value |= UTICK_CTRL_REPEAT;\n+\t}\n+\n+\tpUTICK->CTRL = tick_value;\n+}\n+\n+/**\n+ * @brief\tSetup UTICK for the passed delay (in mS)\n+ * @param\tpUTICK\t: The base address of UTICK block\n+ * @param\tdelayMs\t: Delay value in mS (Maximum is 1000mS)\n+ * @param\trepeat\t: If true then delay repeats continuously else it is one time\n+ * @return\tNothing\n+ * @note\tThe WDT oscillator runs at about 500KHz, so delays in uS won't be\n+ * too accurate.\n+ */\n+__STATIC_INLINE void Chip_UTICK_SetDelayMs(LPC_UTICK_T *pUTICK, uint32_t delayMs, bool repeat)\n+{\n+\tuint32_t tick_value = (delayMs * Chip_Clock_GetWDTOSCRate()) / 1000;\n+\n+\tif (repeat) {\n+\t\ttick_value |= UTICK_CTRL_REPEAT;\n+\t}\n+\telse {\n+\t\ttick_value &= ~UTICK_CTRL_REPEAT;\n+\t}\n+\n+\tpUTICK->CTRL = tick_value;\n+}\n+\n+/**\n+ * @brief\tRead UTICK Value\n+ * @param\tpUTICK\t: The base address of UTICK block\n+ * @return\tCurrent tick value\n+ */\n+__STATIC_INLINE uint32_t Chip_UTICK_GetTick(LPC_UTICK_T *pUTICK)\n+{\n+\treturn pUTICK->CTRL & UTICK_CTRL_DELAY_MASK;\n+}\n+\n+/**\n+ * @brief\tHalt UTICK timer\n+ * @param\tpUTICK\t: The base address of UTICK block\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_UTICK_Halt(LPC_UTICK_T *pUTICK)\n+{\n+\tpUTICK->CTRL = 0;\n+}\n+\n+/**\n+ * @brief\tReturns the status of UTICK\n+ * @param\tpUTICK\t: The base address of UTICK block\n+ * @return Micro tick timer status register value\n+ */\n+__STATIC_INLINE uint32_t Chip_UTICK_GetStatus(LPC_UTICK_T *pUTICK)\n+{\n+\treturn pUTICK->STATUS;\n+}\n+\n+/**\n+ * @brief\tClears UTICK Interrupt flag\n+ * @param\tpUTICK\t: The base address of UTICK block\n+ * @return\tNothing\n+ */\n+__STATIC_INLINE void Chip_UTICK_ClearInterrupt(LPC_UTICK_T *pUTICK)\n+{\n+\tpUTICK->STATUS = UTICK_STATUS_INTR;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __UTICK_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/inc/wwdt_5410x.h ./chip/inc/wwdt_5410x.h\n--- a_tnusFF/chip/inc/wwdt_5410x.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/inc/wwdt_5410x.h\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,253 @@\n+/*\n+ * @brief LPC5410X WWDT chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __WWDT_5410X_H_\n+#define __WWDT_5410X_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup LPC_WWDT CHIP: LPC5410X Windowed Watchdog driver\n+ * @ingroup CHIP_5410X_DRIVERS\n+ * @{\n+ */\n+\n+/**\n+ * @brief Windowed Watchdog register block structure\n+ */\n+typedef struct {\t\t\t\t/*!< WWDT Structure         */\n+\t__IO uint32_t  MOD;\t\t\t/*!< Watchdog mode register. This register contains the basic mode and status of the Watchdog Timer. */\n+\t__IO uint32_t  TC;\t\t\t/*!< Watchdog timer constant register. This register determines the time-out value. */\n+\t__O  uint32_t  FEED;\t\t/*!< Watchdog feed sequence register. Writing 0xAA followed by 0x55 to this register reloads the Watchdog timer with the value contained in WDTC. */\n+\t__I  uint32_t  TV;\t\t\t/*!< Watchdog timer value register. This register reads out the current value of the Watchdog timer. */\n+\t__I  uint32_t  RESERVED0;\n+\t__IO uint32_t  WARNINT;\t\t/*!< Watchdog warning interrupt register. This register contains the Watchdog warning interrupt compare value. */\n+\t__IO uint32_t  WINDOW;\t\t/*!< Watchdog timer window register. This register contains the Watchdog window value. */\n+} LPC_WWDT_T;\n+\n+/**\n+ * @brief Watchdog Mode register definitions\n+ */\n+/** Watchdog Mode Bitmask */\n+#define WWDT_WDMOD_BITMASK          ((uint32_t) 0x3F)\n+/** WWDT enable bit */\n+#define WWDT_WDMOD_WDEN             ((uint32_t) (1 << 0))\n+/** WWDT reset enable bit */\n+#define WWDT_WDMOD_WDRESET          ((uint32_t) (1 << 1))\n+/** WWDT time-out flag bit */\n+#define WWDT_WDMOD_WDTOF            ((uint32_t) (1 << 2))\n+/** WWDT warning interrupt flag bit */\n+#define WWDT_WDMOD_WDINT            ((uint32_t) (1 << 3))\n+/** WWDT Protect flag bit */\n+#define WWDT_WDMOD_WDPROTECT        ((uint32_t) (1 << 4))\n+/** WWDT lock bit */\n+#define WWDT_WDMOD_LOCK             ((uint32_t) (1 << 5))\n+\n+/**\n+ * @brief\tInitialize the Watchdog timer\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @return\tNone\n+ */\n+void Chip_WWDT_Init(LPC_WWDT_T *pWWDT);\n+\n+/**\n+ * @brief\tShutdown the Watchdog timer\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_WWDT_DeInit(LPC_WWDT_T *pWWDT)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_WWDT);\n+}\n+\n+/**\n+ * @brief\tSet WDT timeout constant value used for feed\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @param\ttimeout\t: WDT timeout in ticks, between WWDT_TICKS_MIN and WWDT_TICKS_MAX\n+ * @return\tnone\n+ */\n+__STATIC_INLINE void Chip_WWDT_SetTimeOut(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+\tpWWDT->TC = timeout;\n+}\n+\n+/**\n+ * @brief\tFeed watchdog timer\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @return\tNone\n+ * @note\tIf this function isn't called, a watchdog timer warning will occur.\n+ * After the warning, a timeout will occur if a feed has happened.\n+ * Note that if WWDT registers are modified in an interrupt then it is a good\n+ * idea to prevent those interrupts when writing the feed sequence.\n+ */\n+__STATIC_INLINE void Chip_WWDT_Feed(LPC_WWDT_T *pWWDT)\n+{\n+\tpWWDT->FEED = 0xAA;\n+\tpWWDT->FEED = 0x55;\n+}\n+\n+/**\n+ * @brief\tSet WWDT warning interrupt\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @param\ttimeout\t: WDT warning in ticks, between 0 and 1023\n+ * @return\tNone\n+ * @note\tThis is the number of ticks after the watchdog interrupt that the\n+ * warning interrupt will be generated.\n+ */\n+__STATIC_INLINE void Chip_WWDT_SetWarning(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+\tpWWDT->WARNINT = timeout;\n+}\n+\n+/**\n+ * @brief\tGet WWDT warning interrupt\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @return\tWWDT warning interrupt\n+ */\n+__STATIC_INLINE uint32_t Chip_WWDT_GetWarning(LPC_WWDT_T *pWWDT)\n+{\n+\treturn pWWDT->WARNINT;\n+}\n+\n+/**\n+ * @brief\tSet WWDT window time\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @param\ttimeout\t: WDT timeout in ticks, between WWDT_TICKS_MIN and WWDT_TICKS_MAX\n+ * @return\tNone\n+ * @note\tThe watchdog timer must be fed between the timeout from the Chip_WWDT_SetTimeOut()\n+ * function and this function, with this function defining the last tick before the\n+ * watchdog window interrupt occurs.\n+ */\n+__STATIC_INLINE void Chip_WWDT_SetWindow(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+\tpWWDT->WINDOW = timeout;\n+}\n+\n+/**\n+ * @brief\tGet WWDT window time\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @return\tWWDT window time\n+ */\n+__STATIC_INLINE uint32_t Chip_WWDT_GetWindow(LPC_WWDT_T *pWWDT)\n+{\n+\treturn pWWDT->WINDOW;\n+}\n+\n+/**\n+ * @brief\tEnable watchdog timer options\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @param\toptions\t: An or'ed set of options of values\n+ *\t\t\t\t\t\tWWDT_WDMOD_WDEN, WWDT_WDMOD_WDRESET, and WWDT_WDMOD_WDPROTECT\n+ * @return\tNone\n+ * @note\tYou can enable more than one option at once (ie, WWDT_WDMOD_WDRESET |\n+ * WWDT_WDMOD_WDPROTECT), but use the WWDT_WDMOD_WDEN after all other options\n+ * are set (or unset) with no other options. If WWDT_WDMOD_LOCK is used, it cannot\n+ * be unset.\n+ */\n+__STATIC_INLINE void Chip_WWDT_SetOption(LPC_WWDT_T *pWWDT, uint32_t options)\n+{\n+\tpWWDT->MOD = (pWWDT->MOD & WWDT_WDMOD_BITMASK) | options;\n+}\n+\n+/**\n+ * @brief\tDisable/clear watchdog timer options\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @param\toptions\t: An or'ed set of options of values\n+ *\t\t\t\t\t\tWWDT_WDMOD_WDEN, WWDT_WDMOD_WDRESET, and WWDT_WDMOD_WDPROTECT\n+ * @return\tNone\n+ * @note\tYou can disable more than one option at once (ie, WWDT_WDMOD_WDRESET |\n+ * WWDT_WDMOD_WDTOF).\n+ */\n+__STATIC_INLINE void Chip_WWDT_UnsetOption(LPC_WWDT_T *pWWDT, uint32_t options)\n+{\n+\tpWWDT->MOD &= (~options) & WWDT_WDMOD_BITMASK;\n+}\n+\n+/**\n+ * @brief\tEnable WWDT activity\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_WWDT_Start(LPC_WWDT_T *pWWDT)\n+{\n+\tChip_WWDT_SetOption(pWWDT, WWDT_WDMOD_WDEN);\n+\tChip_WWDT_Feed(pWWDT);\n+}\n+\n+/**\n+ * @brief\tRead WWDT status flag\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @return\tWatchdog status, an Or'ed value of WWDT_WDMOD_*\n+ */\n+__STATIC_INLINE uint32_t Chip_WWDT_GetStatus(LPC_WWDT_T *pWWDT)\n+{\n+\treturn pWWDT->MOD;\n+}\n+\n+/**\n+ * @brief\tClear WWDT interrupt status flags\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @param\tstatus\t: Or'ed value of status flag(s) that you want to clear, should be:\n+ *              - WWDT_WDMOD_WDTOF: Clear watchdog timeout flag\n+ *              - WWDT_WDMOD_WDINT: Clear watchdog warning flag\n+ * @return\tNone\n+ */\n+__STATIC_INLINE void Chip_WWDT_ClearStatusFlag(LPC_WWDT_T *pWWDT, uint32_t status)\n+{\n+\tif (status & WWDT_WDMOD_WDTOF) {\n+\t\tpWWDT->MOD &= (~WWDT_WDMOD_WDTOF) & WWDT_WDMOD_BITMASK;\n+\t}\n+\t/* Interrupt flag is cleared by writing a 1 */\n+\tif (status & WWDT_WDMOD_WDINT) {\n+\t\tpWWDT->MOD = (pWWDT->MOD & WWDT_WDMOD_BITMASK) | WWDT_WDMOD_WDINT;\n+\t}\n+}\n+\n+/**\n+ * @brief\tGet the current value of WDT\n+ * @param\tpWWDT\t: The base of WatchDog Timer peripheral on the chip\n+ * @return\tcurrent value of WDT\n+ */\n+__STATIC_INLINE uint32_t Chip_WWDT_GetCurrentCount(LPC_WWDT_T *pWWDT)\n+{\n+\treturn pWWDT->TV;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __WWDT_5410X_H_ */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/libs/libpower.hex ./chip/libs/libpower.hex\n--- a_tnusFF/chip/libs/libpower.hex\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/libs/libpower.hex\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,435 @@\n+:10000000213C617263683E0A2F202020202020209E\n+:100010002020202020202020313433383338323043\n+:100020003732202030202020202030202020202087\n+:10003000302020202020202035353820202020206E\n+:100040002020600A00000016000002720000027208\n+:1000500000000272000002720000027200000272D0\n+:1000600000000272000002720000027200000272C0\n+:1000700000000272000002720000027200000272B0\n+:1000800000000272000002720000027200000272A0\n+:100090000000027200000272000002720000027290\n+:1000A000436869705F504F5745525F504452656CCA\n+:1000B0006F63005F5F7365745F6C7076645F6C651F\n+:1000C00076656C00436869705F504F5745525F45D5\n+:1000D0006E746572506F7765724D6F6465497261B9\n+:1000E0006D4F6E6C7900436869705F504F57455291\n+:1000F0005F536574504C4C00436869705F504F57B4\n+:1001000045525F536574464C415348506F77657252\n+:1001100000436869705F504F5745525F536574568E\n+:100120006F6C7461676500436869705F504F574535\n+:10013000525F52656C6F6341504900436869705F5C\n+:10014000504F5745525F456E746572506F776572B8\n+:100150004D6F646500436869705F504F5745525F4B\n+:10016000456E746572506F7765724D6F6465526548\n+:100170006C6F6300436869705F504F5745525F531F\n+:10018000657456444C6576656C00436869705F50D1\n+:100190004F5745525F5365744C5056444C657665D5\n+:1001A0006C004E4F54555345445F46554E43320004\n+:1001B0004E4F54555345445F46554E4333004E4FC2\n+:1001C00054555345445F46554E4335004368697066\n+:1001D0005F504F5745525F53657441434C476174BC\n+:1001E0006500436869705F504F5745525F476574BB\n+:1001F00041434C47617465004E4F54555345445F2D\n+:1002000046554E433600436869705F504F5745521C\n+:100210005F476574524F4D56657273696F6E004348\n+:100220006869705F4350555F49734D6173746572BF\n+:10023000436F726500436869705F4350555F434D7B\n+:1002400030426F6F7400436869705F4350555F437D\n+:100250004D34426F6F7400436869705F4350555F5F\n+:1002600053656C6563744D6173746572436F726539\n+:100270000000706F7765725F6C6962726172792ECF\n+:100280006F2F31343338333832303732202030203A\n+:1002900020202020302020202020313030363636DB\n+:1002A000202036323532202020202020600A7F4551\n+:1002B0004C460101010000000000000000000100A8\n+:1002C0002800010000000000000000000000200BDA\n+:1002D00000000000000534000000000028002C0091\n+:1002E000290013B5EFF3108472B61C491D4A0B693F\n+:1002F00043F004030B614FF08043D3F810120A431C\n+:1003000022EA0002C3F800228020164AC3F8C8007F\n+:10031000C3F81422D86430BF11F0200014D04FF07D\n+:10032000804380225A65C3F810124FF48051096847\n+:100330000191C3F8D020094A136923F00403136123\n+:1003400084F3108802B010BDC3F818220090009BFF\n+:100350007D2BE4D8009B01330093F8E700BF00ED4C\n+:1003600000E0DDD7DFFB2000040000B58BB00AA859\n+:10037000372340F8143D01A9034B984702980BB06E\n+:100380005DF804FB00BF05020003F0B5194C059FA2\n+:10039000246814F4885F04D0012829D008B9032FF9\n+:1003A00026D1099C089DE40105F00105E4B244EA68\n+:1003B0004516079C04F0010446EAC405069C04F0B7\n+:1003C000010445EA440403F0010344EA831302F004\n+:1003D000010243EA021201F0010142EA810100F048\n+:1003E0000100014307F00307034B41EA07211964A9\n+:1003F000F0BD0000034000C002404FF080432022C7\n+:1004000010B5C3F8142272B60D490D4A0C6944F0B8\n+:1004100004040C61D3F81042224322EA0002C3F81C\n+:100420000022084AC3F814228022DA6430BFC3F8DD\n+:1004300010420B6923F004030B6162B610BD00ED9E\n+:1004400000E0DDD7DFFB2000040070B505460C4658\n+:10045000FFF7FEFFB0F5885F0ED128462146FFF773\n+:10046000FEFF4FF48000FFF7FEFF4FF08043D3F80C\n+:10047000B431DB07F9D508E0054B1B68DB6828467B\n+:1004800021461B68BDE870401847002070BD00027F\n+:10049000000382B04FF080430F4A0F4988B1C3F880\n+:1004A0001822C3F8181200230193019B632B02D872\n+:1004B000019B0133F8E74FF080438022C3F8C82046\n+:1004C00006E0C3F81412C3F814228022C3F8D02027\n+:1004D00002B0704700BF0400003820000402F8B5E5\n+:1004E00006460D46FFF7FEFFB0F5885F66D14FF078\n+:1004F0008043724AC3F81822724B9D421BD8714C3C\n+:100500002368DB68002002461B69052198472368A1\n+:10051000DB6801201B690B21002298472368DB68F8\n+:1005200002201B690B21002298472368DB68032007\n+:100530001B6905213EE0644B9D421BD8624C236839\n+:10054000DB68002002461B69092198472368DB68A5\n+:1005500001201B690B21002298472368DB680220D9\n+:100560001B690B21002298472368DB6803201B6965\n+:1005700009211FE0564B9D4201D9554E9CE0514C3C\n+:100580002368DB68002002461B690B21984723681B\n+:10059000DB6801201B690B21002298472368DB6878\n+:1005A00002201B690B21002298472368DB681B6926\n+:1005B00003200B210022984700267DE0002E7AD1EF\n+:1005C000FFF7FEFF41F2021398420BD14FF0804338\n+:1005D0004149D3F8FC03404A414B984214BF1346AB\n+:1005E0000B4600E03D4B4FF47A72B5FBF2F29A42B3\n+:1005F000C3D84FF08043314AC3F81822D3F824718E\n+:10060000384B9D4227F470471CD9364B9D421BD96D\n+:1006100003F5370303F5D8539D4217D9334B9D4259\n+:1006200016D9324B9D4215D903F5370303F5D8533C\n+:100630009D4211D92F4B2F4A304CA5428CBF1446F6\n+:100640001C460AE02E4C08E02E4C06E02E4C04E03E\n+:100650002E4C02E02E4C00E02E4C1A4D2B68DB682D\n+:10066000002004F00F0102461B6998472B68DB68E5\n+:1006700001201B690B21002298472B68DB68C4F31B\n+:1006800003311B690220002298472B68DB68C4F302\n+:1006900083411B69032000229847240E4FF08043BA\n+:1006A00006D047F0200747EA0434C3F8244103E0AA\n+:1006B000C3F8247180E7174E3046F8BD00BF040030\n+:1006C0000038FF2C310100020003FFB3C40400E135\n+:1006D000F50502000B00A086010000770100CEFEA8\n+:1006E000C108001BB70000366E01006CDC020087F9\n+:1006F0009303CCC23004CDD2340500BD0105C7B28E\n+:100700001C00C8B22001C9B22402CAB22802CBB26E\n+:100710002C03CCC2300304000C000A46024921F02D\n+:100720000101FFF7FEBF0000000070B505460C4652\n+:10073000FFF7FEFFB0F5885F43D1032D4AD8DFE80D\n+:1007400005F002081A33234A136923F004031361E6\n+:1007500035E072B6204B20491A6942F004021A6152\n+:100760004FF08042D2F81002014321EA0401C2F89E\n+:10077000001230BF12E072B6174B18491A6942F0E6\n+:1007800004021A614FF08042D2F81002014321EABC\n+:100790000401C2F8001230BFC2F810021A6922F038\n+:1007A00004021A6162B670BD72B60A4A136943F058\n+:1007B000040313614FF08043E443C3F8104230BF99\n+:1007C00070BD074B1B68DB68284621469B68BDE867\n+:1007D0007040184770BD00ED00E05D07CA78DDD7B6\n+:1007E000DFFB00020003022803D142F001020846A9\n+:1007F0001047FFF7FEBF08B538B9084B1B6813F464\n+:10080000885F02D0CB1E022B06D8054B1B68DB6825\n+:100810001B699847002008BD034808BD00BF0000C1\n+:1008200003400002000306000C0010B586B0FFF77D\n+:10083000FEFF41F20113984209D80C4B1B6813F4D8\n+:10084000885F12D10B4B4FF4AA721A640DE0094B6A\n+:100850001B680020DB680190012100910290039049\n+:1008600004905C690A460B46A04706B010BD000024\n+:10087000034000C00240000200030148FFF7FEBF32\n+:1008800000BF040000384FF08043014AC3F814222F\n+:1008900070470400003837B504463D200D46FFF789\n+:1008A000FEFF2CB91C4B03221A6020225A602CE058\n+:1008B000012C0BD11D2D25D8184B1B6803F00F03FD\n+:1008C000052B22D84FF48032134B18E0022C1BD199\n+:1008D0001D2D1AD8114B1B6803F00F03033B022B8D\n+:1008E00012D80C4B0E4A1A6000220192019A1E2A5D\n+:1008F00002D8019A0132F8E71A6842F4C0221A605D\n+:10090000002402E0022400E001243D20FFF7FEFF66\n+:10091000204603B030BD0000034000C00240040088\n+:10092000010010B50446FFF7FEFF41F201139842A3\n+:10093000054B1B68DB68204694BF9B6A1B6BBDE8B8\n+:100940001040184700BF0002000310B5FFF7FEFF7C\n+:1009500041F201139842044B1B68DB68BDE810406C\n+:1009600094BFDB6A5B6B184700BF0002000310B541\n+:10097000FFF7FEFF41F20113984206D9044B1B68B2\n+:10098000DB68BDE810409B6B1847012010BD0002DA\n+:100990000003FFF7FEBF084B1B6840F62442C3F379\n+:1009A0000B1393424FF08043D3F8000300F0010093\n+:1009B00018BF80F00100704700BF00ED00E04FF06D\n+:1009C0008043074AC3F80813C3F80403D3F80003AD\n+:1009D000054902430143C3F80013C3F800237047DD\n+:1009E00000BF0800C4C02800C4C04FF08043074ABD\n+:1009F000C3F80813C3F80403D3F8000305490243FE\n+:100A00000143C3F80013C3F80023704700BF04007C\n+:100A1000C4C01400C4C04FF08043D3F8002322F0B8\n+:100A2000410220B942F0404343F4440301E0044B47\n+:100A3000134309B143F040034FF08042C2F8003342\n+:100A400070470100C4C0004743433A2028474E5531\n+:100A500020546F6F6C7320666F722041524D204599\n+:100A60006D6265646465642050726F636573736F53\n+:100A700072732920342E392E3320323031353035FF\n+:100A80003239202872656C6561736529205B41529B\n+:100A90004D2F656D6265646465642D345F392D6228\n+:100AA00072616E6368207265766973696F6E203259\n+:100AB00032343238385D00413600000061656162D1\n+:100AC0006900012C00000005436F727465782D4D9C\n+:100AD0003400060D074D09020A061204140115011F\n+:100AE0001703180119011A011B011E042201002E0F\n+:100AF00073796D746162002E737472746162002E7A\n+:100B00007368737472746162002E74657874002E59\n+:100B100064617461002E627373002E746578742EA4\n+:100B2000436869705F504F5745525F504452656C3F\n+:100B30006F63002E746578742E67657442524F4D52\n+:100B400056657273696F6E002E746578742E5F5FE0\n+:100B50007365745F6C7076645F6C6576656C002E8F\n+:100B6000746578742E436869705F504F5745525FC3\n+:100B7000456E746572506F7765724D6F646549722A\n+:100B8000616D4F6E6C79002E72656C2E7465787491\n+:100B90002E436869705F504F5745525F53657450DC\n+:100BA0004C4C002E746578742E436869705F504F0A\n+:100BB0005745525F536574464C415348506F7765B3\n+:100BC00072002E72656C2E746578742E436869709D\n+:100BD0005F504F5745525F536574566F6C74616731\n+:100BE00065002E72656C2E746578742E436869708A\n+:100BF0005F504F5745525F52656C6F6341504900DB\n+:100C00002E72656C2E746578742E436869705F501F\n+:100C10004F5745525F456E746572506F7765724DE0\n+:100C20006F6465002E72656C2E746578742E43684F\n+:100C300069705F504F5745525F456E746572506FD3\n+:100C40007765724D6F646552656C6F63002E7465D5\n+:100C500078742E436869705F504F5745525F5365F3\n+:100C60007456444C6576656C002E72656C2E746506\n+:100C700078742E436869705F504F5745525F5365D3\n+:100C8000744C5056444C6576656C002E72656C2E23\n+:100C9000746578742E4E4F54555345445F46554EF7\n+:100CA0004332002E746578742E4E4F54555345448C\n+:100CB0005F46554E4333002E72656C2E7465787412\n+:100CC0002E4E4F54555345445F46554E4335002EE6\n+:100CD00072656C2E746578742E436869705F504F2E\n+:100CE0005745525F53657441434C47617465002E0C\n+:100CF00072656C2E746578742E436869705F504F0E\n+:100D00005745525F47657441434C47617465002EF7\n+:100D100072656C2E746578742E4E4F54555345444D\n+:100D20005F46554E4336002E72656C2E746578749E\n+:100D30002E436869705F504F5745525F4765745244\n+:100D40004F4D56657273696F6E002E746578742E00\n+:100D5000436869705F4350555F49734D61737465B3\n+:100D600072436F7265002E746578742E43686970E3\n+:100D70005F4350555F434D30426F6F74002E746572\n+:100D800078742E436869705F4350555F434D344219\n+:100D90006F6F74002E746578742E436869705F43BA\n+:100DA00050555F53656C6563744D61737465724330\n+:100DB0006F7265002E636F6D6D656E74002E41520B\n+:100DC0004D2E617474726962757465730000000061\n+:100DD0000000000000000000000000000000000013\n+:100DE0000000000000000000000000000000000003\n+:100DF0000000000000001B000000010000000600D1\n+:100E000000000000000034000000000000000000AE\n+:100E100000000000000002000000000000002100AF\n+:100E2000000001000000030000000000000034008A\n+:100E300000000000000000000000000000000100B1\n+:100E40000000000000002700000008000000030070\n+:100E5000000000000000340000000000000000005E\n+:100E600000000000000001000000000000002C0055\n+:100E70000000010000000600000000000000340037\n+:100E800000008800000000000000000000000400D6\n+:100E90000000000000004500000001000000060006\n+:100EA000000000000000BC00000020000000000066\n+:100EB00000000000000004000000000000005A00D4\n+:100EC0000000010000000600000000000000DC003F\n+:100ED000000070000000000000000000000004009E\n+:100EE000000000000000710000000100000006008A\n+:100EF0000000000000004C01000050000000000055\n+:100F000000000000000004000000000000009D0040\n+:100F100000000100000006000000000000009C012D\n+:100F20000000480000000000000000000000040075\n+:100F3000000000000000990000000900000000000F\n+:100F4000000000000000E4170000180000002A0064\n+:100F50000000080000000400000008000000B500C8\n+:100F60000000010000000600000000000000E40195\n+:100F700000004C0000000000000000000000040021\n+:100F8000000000000000D800000001000000060082\n+:100F9000000000000000300200003C0200000000E1\n+:100FA0000000000000000400000000000000D40069\n+:100FB0000000090000000000000000000000FC1715\n+:100FC0000000100000002A0000000B0000000400D8\n+:100FD000000008000000F80000000100000006000A\n+:100FE0000000000000006C04000010000000000081\n+:100FF0000000000000000400000000000000F400F9\n+:1010000000000900000000000000000000000C18B3\n+:101010000000100000002A0000000D000000040085\n+:10102000000008000000160100000100000006009A\n+:101030000000000000007C040000BC000000000074\n+:101040000000000000000400000000000000120189\n+:1010500000000900000000000000000000001C1853\n+:101060000000080000002A0000000F00000004003B\n+:101070000000080000003A01000001000000060026\n+:101080000000000000003805000010000000000013\n+:101090000000000000000200000000000000360117\n+:1010A00000000900000000000000000000002418FB\n+:1010B0000000080000002A000000110000000400E9\n+:1010C0000000080000005F010000010000000600B1\n+:1010D000000000000000480500003400000000008F\n+:1010E00000000000000004000000000000007F017C\n+:1010F00000000100000006000000000000007C0568\n+:10110000000050000000000000000000000004008B\n+:101110000000000000007B0100000900000000004A\n+:101120000000000000002C180000080000002A0049\n+:101130000000140000000400000008000000A101ED\n+:101140000000010000000600000000000000CC05C7\n+:1011500000000C000000000000000000000004007F\n+:101160000000000000009D010000090000000000D8\n+:1011700000000000000034180000080000002A00F1\n+:101180000000160000000400000008000000B50187\n+:101190000000010000000600000000000000D8056B\n+:1011A000000010000000000000000000000004002B\n+:1011B000000000000000CD0100000100000006005A\n+:1011C000000000000000E80500008C0000000000A6\n+:1011D0000000000000000400000000000000C90141\n+:1011E00000000900000000000000000000003C18A2\n+:1011F0000000100000002A00000019000000040098\n+:10120000000008000000E5010000010000000600E9\n+:10121000000000000000740600002800000000002C\n+:101220000000000000000400000000000000E101D8\n+:1012300000000900000000000000000000004C1841\n+:101240000000080000002A0000001B00000004004D\n+:101250000000080000000502000001000000060078\n+:101260000000000000009C060000240000000000B8\n+:101270000000000000000400000000000000010267\n+:1012800000000900000000000000000000005418E9\n+:101290000000080000002A0000001D0000000400FB\n+:1012A0000000080000002502000001000000060008\n+:1012B000000000000000C006000024000000000044\n+:1012C00000000000000004000000000000002102F7\n+:1012D00000000900000000000000000000005C1891\n+:1012E0000000080000002A0000001F0000000400A9\n+:1012F0000000080000003D020000010000000600A0\n+:10130000000000000000E4060000040000000000EF\n+:101310000000000000000200000000000000390290\n+:101320000000090000000000000000000000641838\n+:101330000000080000002A00000021000000040056\n+:101340000000080000005C02000001000000060030\n+:10135000000000000000E806000028000000000077\n+:1013600000000000000004000000000000007802FF\n+:10137000000001000000060000000000000010074F\n+:1013800000002C000000000000000000000004002D\n+:101390000000000000008F020000010000000600B5\n+:1013A0000000000000003C0700002C0000000000CE\n+:1013B0000000000000000400000000000000A60281\n+:1013C00000000100000006000000000000006807A7\n+:1013D00000003000000000000000000000000400D9\n+:1013E000000000000000C602000001000000300004\n+:1013F00000000000000098070000710000000000DD\n+:101400000000000000000100000001000000CF0209\n+:101410000000030000700000000000000000090848\n+:101420000000370000000000000000000000010084\n+:101430000000000000001100000003000000000098\n+:1014400000000000000040080000DF020000000073\n+:10145000000000000000010000000000000001008A\n+:101460000000020000000000000000000000001268\n+:101470000000900300002B0000001E00000004008C\n+:101480000000100000000900000003000000000040\n+:101490000000000000009015000051020000000054\n+:1014A000000000000000010000000000000000003B\n+:1014B000000000000000000000000000000001002B\n+:1014C00000000100000020000000020005000000F4\n+:1014D0000000000000000000000003000100000008\n+:1014E00000000000000000000000030002000000F7\n+:1014F00000000000000000000000030003000000E6\n+:1015000000000000000000000000030004000000D4\n+:1015100000000000000000000000030005000000C3\n+:1015200000000000000000000000030006000000B2\n+:1015300000000000000000000000030007000000A1\n+:101540000000000000000000000003000800000090\n+:101550000000000000000000000003000A0000007E\n+:101560000000000000000000000003000B0000006D\n+:101570000000000000000000000003000D0000005B\n+:101580000000000000000000000003000F00000049\n+:101590000000000000000000000003001100000037\n+:1015A0000000000000000000000003001300000025\n+:1015B0000000000000000000000003001400000014\n+:1015C0000000000000000000000003001600000002\n+:1015D00000000000000000000000030018000000F0\n+:1015E00000000000000000000000030019000000DF\n+:1015F0000000000000000000000003001B000000CD\n+:101600000000000000000000000003001D000000BA\n+:101610000000000000000000000003001F000000A8\n+:101620000000000000000000000003002100000096\n+:101630000000000000000000000003002300000084\n+:101640000000000000000000000003002400000073\n+:101650000000000000000000000003002500000062\n+:101660000000000000000000000003002600000051\n+:101670000000000000000000000003002700000040\n+:10168000000000000000000000000300280010001F\n+:101690000000010000008800000012000400230088\n+:1016A000000001000000700000001200060034007D\n+:1016B000000001000000500000001200070056006A\n+:1016C000000001000000480000001200080068004F\n+:1016D0000000000000000000000010000000820078\n+:1016E0000000000000000000000010000000960054\n+:1016F0000000010000004C00000012000A00AF00D2\n+:101700000000010000003C02000012000B00C500B8\n+:101710000000010000001000000012000D00D900C0\n+:101720000000000000000000000010000000E000C9\n+:10173000000001000000BC00000012000F00FA00D1\n+:10174000000001000000100000001200110019014B\n+:1017500000000100000034000000120013002F01FF\n+:1017600000000100000050000000120014004701BA\n+:101770000000010000000C000000120016005501DE\n+:1017800000000100000010000000120018006301BA\n+:101790000000010000008C0000001200190071011F\n+:1017A00000000000000000000000100000008E019A\n+:1017B0000000000000000000000010000000AC016C\n+:1017C0000000010000002800000012001B00C20100\n+:1017D0000000010000002400000012001D00D801DC\n+:1017E0000000010000002400000012001F00E601BC\n+:1017F0000000010000000400000012002100FF01B1\n+:101800000000010000002800000012002300150263\n+:101810000000010000002C0000001200240026023D\n+:101820000000010000002C0000001200250037021B\n+:1018300000000100000030000000120026000067D8\n+:10184000657442524F4D56657273696F6E004368FE\n+:1018500069705F504F5745525F504452656C6F63DB\n+:10186000005F5F7365745F6C7076645F6C6576654E\n+:101870006C00436869705F504F5745525F456E7406\n+:101880006572506F7765724D6F64654972616D4F17\n+:101890006E6C7900436869705F504F5745525F53D3\n+:1018A0006574504C4C00436869705F436C6F636BA8\n+:1018B0005F536574757053797374656D504C4C004B\n+:1018C000436869705F535953434F4E5F506F77655C\n+:1018D00072557000436869705F504F5745525F53AF\n+:1018E0006574464C415348506F7765720043686990\n+:1018F000705F504F5745525F536574566F6C7461FB\n+:10190000676500436869705F504F5745525F526585\n+:101910006C6F63415049006D656D63707900436879\n+:1019200069705F504F5745525F456E746572506FD6\n+:101930007765724D6F646500436869705F504F57FB\n+:1019400045525F456E746572506F7765724D6F6476\n+:101950006552656C6F6300436869705F504F57450F\n+:10196000525F53657456444C6576656C00436869F4\n+:10197000705F504F5745525F5365744C5056444CFE\n+:101980006576656C004E4F54555345445F46554E41\n+:101990004332004E4F54555345445F46554E4333F2\n+:1019A000004E4F54555345445F46554E4335004312\n+:1019B0006869705F436C6F636B5F456E61626C65F5\n+:1019C000506572697068436C6F636B00436869703F\n+:1019D0005F436C6F636B5F44697361626C655065F4\n+:1019E00072697068436C6F636B00436869705F5025\n+:1019F0004F5745525F53657441434C4761746500CE\n+:101A0000436869705F504F5745525F476574414363\n+:101A10004C47617465004E4F54555345445F4655DD\n+:101A20004E433600436869705F504F5745525F47D9\n+:101A30006574524F4D56657273696F6E00436869E5\n+:101A4000705F4350555F49734D6173746572436FA6\n+:101A5000726500436869705F4350555F434D304283\n+:101A60006F6F7400436869705F4350555F434D3436\n+:101A7000426F6F7400436869705F4350555F5365F0\n+:101A80006C6563744D6173746572436F72650000B9\n+:101A90000000060000000A010000140000000A22F5\n+:101AA00000001C0000000A230000060000000A01DC\n+:101AB0000000E20000000A0100000C000000021E0D\n+:101AC0000000080000001E270000060000000A01B8\n+:101AD00000000C0000001E280000040000000A01A5\n+:101AE0000000020000001E230000080000000A2F72\n+:101AF0000000760000000A300000040000000A0127\n+:101B00000000020000000A010000020000000A01BB\n+:0A1B10000000000000001E010000AC\n+:00000001FF\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/libs/libpower_m0.hex ./chip/libs/libpower_m0.hex\n--- a_tnusFF/chip/libs/libpower_m0.hex\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/libs/libpower_m0.hex\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,443 @@\n+:10000000213C617263683E0A2F202020202020209E\n+:100010002020202020202020313433383338323043\n+:100020003737202030202020202030202020202082\n+:10003000302020202020202035353820202020206E\n+:100040002020600A00000016000002720000027208\n+:1000500000000272000002720000027200000272D0\n+:1000600000000272000002720000027200000272C0\n+:1000700000000272000002720000027200000272B0\n+:1000800000000272000002720000027200000272A0\n+:100090000000027200000272000002720000027290\n+:1000A000436869705F504F5745525F504452656CCA\n+:1000B0006F63005F5F7365745F6C7076645F6C651F\n+:1000C00076656C00436869705F504F5745525F45D5\n+:1000D0006E746572506F7765724D6F6465497261B9\n+:1000E0006D4F6E6C7900436869705F504F57455291\n+:1000F0005F536574504C4C00436869705F504F57B4\n+:1001000045525F536574464C415348506F77657252\n+:1001100000436869705F504F5745525F536574568E\n+:100120006F6C7461676500436869705F504F574535\n+:10013000525F52656C6F6341504900436869705F5C\n+:10014000504F5745525F456E746572506F776572B8\n+:100150004D6F646500436869705F504F5745525F4B\n+:10016000456E746572506F7765724D6F6465526548\n+:100170006C6F6300436869705F504F5745525F531F\n+:10018000657456444C6576656C00436869705F50D1\n+:100190004F5745525F5365744C5056444C657665D5\n+:1001A0006C004E4F54555345445F46554E43320004\n+:1001B0004E4F54555345445F46554E4333004E4FC2\n+:1001C00054555345445F46554E4335004368697066\n+:1001D0005F504F5745525F53657441434C476174BC\n+:1001E0006500436869705F504F5745525F476574BB\n+:1001F00041434C47617465004E4F54555345445F2D\n+:1002000046554E433600436869705F504F5745521C\n+:100210005F476574524F4D56657273696F6E004348\n+:100220006869705F4350555F49734D6173746572BF\n+:10023000436F726500436869705F4350555F434D7B\n+:1002400030426F6F7400436869705F4350555F437D\n+:100250004D34426F6F7400436869705F4350555F5F\n+:1002600053656C6563744D6173746572436F726539\n+:100270000000706F7765725F6C6962726172792ECF\n+:100280006F2F313433383338323037372020302035\n+:1002900020202020302020202020313030363636DB\n+:1002A000202036333834202020202020600A7F454B\n+:1002B0004C460101010000000000000000000100A8\n+:1002C0002800010000000000000000000000500BAA\n+:1002D00000000000000534000000000028002C0091\n+:1002E000290073B5EFF3108472B604221C4D1C4E26\n+:1002F0002B6913432B61842280239200DB059958DC\n+:10030000194A0A438243802080001A5080221648EE\n+:100310000260852080001E50DA6430BF603A0A40D7\n+:10032000281C002A11D084258022AD005A6559511D\n+:1003300080235B011B6801930D4B1A6003697C3AB3\n+:100340009343036184F3108873BD8625AD005E512D\n+:100350000092009A7D2AE6D8009A0132F8E700ED73\n+:1003600000E020000400DDD7DFFBC8000040D00023\n+:100370000040372300B58BB0059305A801A9024BB7\n+:10038000984702980BB000BDC04605020003F0B5C7\n+:10039000184C266888246401264206D0012827D0FC\n+:1003A000002802D1059C032C22D10124FF27089E9E\n+:1003B000234026407501099E2240F6013E40079FDA\n+:1003C0002E432740FF003E43069F21402740A74081\n+:1003D000044003203E439B01334312011A43059B13\n+:1003E0008900184011430C430002024B04431C6473\n+:1003F000F0BD0000034000C00240F0B58023852717\n+:100400002022DB05BF00DA5172B6042484250B4993\n+:10041000AD000A6922430A615E59094A32438243A8\n+:10042000802080001A50074ADA518022DA6430BFF7\n+:100430005E510B69A3430B6162B6F0BDC04600ED8F\n+:1004400000E0DDD7DFFB2000040038B5051C0C1CE4\n+:10045000FFF7FEFF88235B0198420FD1281C211C67\n+:10046000FFF7FEFF8020C003FFF7FEFFDA238022A4\n+:100470005B00D205D358DB07F8D507E0054B281CF5\n+:100480001B68211CDB681B68984700E0002038BD12\n+:10049000C04600020003802313B5DB050E490E4C55\n+:1004A00000280ED08622920099509C500023019380\n+:1004B000019B632B02D8019B0133F8E78022074B95\n+:1004C00006E0852292009C509950953A054BFF3AE0\n+:1004D0001A6013BDC0460400003820000402C800A2\n+:1004E0000040D0000040F7B5051C0F1CFFF7FEFFD1\n+:1004F00088235B01984267D1862380226F499B0045\n+:10050000D205D1506E4B9F421BD800206D4C021C6F\n+:1005100023680521DB681B69984723680120DB6895\n+:100520000B211B690022984723680220DB680B21FE\n+:100530001B690022984723680320DB6805211B699B\n+:100540003EE0604B9F421BD800205D4C021C23689C\n+:100550000921DB681B69984723680120DB680B21B0\n+:100560001B690022984723680220DB680B211B6966\n+:100570000022984723680320DB6809211B691FE0DC\n+:10058000524B9F4201D9514D95E000204D4C021C29\n+:1005900023680B21DB681B69984723680120DB680F\n+:1005A0000B211B690022984723680220DB680B217E\n+:1005B0001B690022984703200B212368DB681B6915\n+:1005C00000229847002576E0002D73D1FFF7FEFF4B\n+:1005D000404B984209D1FF2380229B00D205D2587C\n+:1005E0003D4B9A4201D13C4C00E03C4CFA21381C76\n+:1005F0008900FFF7FEFFA042C5D8862380222E493E\n+:100600009B00D205374ED150B46A364B1C40364B56\n+:1006100001949F4213D9354B9F4212D9354B9F42CB\n+:1006200011D9344B9F4210D9344B9F420FD9334BD1\n+:100630009F420ED9334B9F420DD8324C0CE0324CC6\n+:100640000AE0324C08E0324C06E0324C04E0324C16\n+:1006500002E0324C00E0324C00200F21194F2140C3\n+:100660003B68021CDB681B6998473B680120DB681C\n+:100670000B211B69002298470F223B68210BDB6886\n+:1006800011401B690220002298470F223B68A10CF1\n+:10069000DB6811401B69032000229847240E06D016\n+:1006A0002023019A240313431C43B46203E0019BFB\n+:1006B000B36287E71C4D281CFEBD04000038FF2CE8\n+:1006C000310100020003FFB3C40400E1F50502009C\n+:1006D0000B0002110000CEFEC108A08601000077C9\n+:1006E0000100FC000040FF0FFFFF001BB7000036B9\n+:1006F0006E0100512502006CDC020087930300A20A\n+:100700004A0400BD0105CCC23004C7B21C00C8B207\n+:100710002001C9B22402CAB22802CBB22C03CCC237\n+:100720003003CDD2340504000C0008B501230A1CA7\n+:1007300002499943FFF7FEFF08BD0000000070B5B5\n+:10074000051C0C1CFFF7FEFF88235B0198423FD17C\n+:10075000032D44D8281C224B0422FFF7FEFF02067B\n+:10076000172D19699143196130E072B6196980201B\n+:10077000114319618421C005890041581A4D29434C\n+:10078000A1438024A400015130BF10E072B6802044\n+:1007900084251969C00511431961AD0046591249F4\n+:1007A0003143A1438024A400015130BF465119694F\n+:1007B0009143196162B612E072B61969E4430A43C3\n+:1007C0001A61842380229B00D205D45030BF06E0FA\n+:1007D000074B281C1B68211CDB689B68984770BD71\n+:1007E000C04600ED00E05D07CA78DDD7DFFB000200\n+:1007F000000308B5022804D10123081C1A439047BE\n+:1008000001E0FFF7FEFF08BD000010B5002808D189\n+:10081000094B1C6888235B011C4202D0CB1E022BB3\n+:1008200006D8054B1B68DB681B699847002000E071\n+:10083000034810BDC046000003400002000306004C\n+:100840000C0010B586B0FFF7FEFF0E4B98420AD899\n+:100850000E4B1A6888235B011A4212D1AA220B4B55\n+:1008600052001A640DE00A4B00201B68DA6801236D\n+:10087000019000930290039004905469191C1A1C73\n+:10088000A04706B010BD011100000000034000C0E9\n+:1008900002400002000308B50248FFF7FEFF08BD52\n+:1008A000C046040000388523802202499B00D205FF\n+:1008B000D1507047C0460400003873B5051C3D2078\n+:1008C0000E1CFFF7FEFF002D05D103221C4B1A6002\n+:1008D0001D325A602DE0012D0DD102241D2E29D884\n+:1008E000184B2C1C1A680F231340052B22D880228A\n+:1008F000134B52021CE00124022D1BD12C1C1D2E77\n+:1009000018D80F4B013C1A680F231340033B022BEE\n+:1009100010D80C4A0A4B1A6000220192019A1E2A32\n+:1009200002D8019A0132F8E7C0211A68C9020A43C5\n+:100930001A6000243D20FFF7FEFF201C76BD00005A\n+:10094000034000C002400400010010B5041CFFF782\n+:10095000FEFF054B064A1B68DB68904201D89B6A84\n+:1009600000E01B6B201C984710BD00020003011122\n+:10097000000008B5FFF7FEFF054B054A1B68DB6862\n+:10098000904201D8DB6A00E05B6B984708BD00022B\n+:1009900000030111000008B5FFF7FEFF054B021C24\n+:1009A00001209A4204D9034B1B68DB689B6B984774\n+:1009B00008BD011100000002000308B5FFF7FEFFAB\n+:1009C00008BD8021C022084B10B51B68084C1B04D1\n+:1009D0001B0DC90592000120A34202D08B589843F9\n+:1009E00001E08B58184010BDC04600ED00E0240C1B\n+:1009F00000008023C222DB05920010B59950C0216F\n+:100A0000043A985089005A58034C03481043224333\n+:100A10005A50585010BD2800C4C00800C4C08023DC\n+:100A2000C222DB05920010B59950C021043A9850BB\n+:100A300089005A58034C0348104322435A505850D7\n+:100A400010BD1400C4C00400C4C030B5C02280244E\n+:100A50004125E4059200A358AB43002801D1044886\n+:100A600000E004480343002901D040210B43A35078\n+:100A700030BD0000C4C00100C4C0004743433A2059\n+:100A800028474E5520546F6F6C7320666F7220415B\n+:100A9000524D20456D6265646465642050726F63D9\n+:100AA0006573736F72732920342E392E33203230E0\n+:100AB000313530353239202872656C6561736529AE\n+:100AC000205B41524D2F656D6265646465642D3411\n+:100AD0005F392D6272616E63682072657669736931\n+:100AE0006F6E203232343238385D00413000000001\n+:100AF000616561626900012600000005436F727440\n+:100B000065782D4D3000060C074D090112041401C3\n+:100B100015011703180119011A011E04002E73791B\n+:100B20006D746162002E737472746162002E73685A\n+:100B3000737472746162002E74657874002E64613F\n+:100B40007461002E627373002E746578742E43688E\n+:100B500069705F504F5745525F504452656C6F63E8\n+:100B6000002E746578742E67657442524F4D566539\n+:100B70007273696F6E002E746578742E5F5F736593\n+:100B8000745F6C7076645F6C6576656C002E74655E\n+:100B900078742E436869705F504F5745525F456EB9\n+:100BA000746572506F7765724D6F64654972616DDF\n+:100BB0004F6E6C79002E72656C2E746578742E43BE\n+:100BC0006869705F504F5745525F536574504C4C85\n+:100BD000002E746578742E436869705F504F5745D6\n+:100BE000525F536574464C415348506F77657200AD\n+:100BF0002E72656C2E746578742E436869705F5030\n+:100C00004F5745525F536574566F6C74616765004A\n+:100C10002E72656C2E746578742E436869705F500F\n+:100C20004F5745525F52656C6F63415049002E72B9\n+:100C3000656C2E746578742E436869705F504F57E9\n+:100C400045525F456E746572506F7765724D6F6483\n+:100C500065002E72656C2E746578742E4368697019\n+:100C60005F504F5745525F456E746572506F7765A0\n+:100C7000724D6F646552656C6F63002E7465787495\n+:100C80002E436869705F504F5745525F53657456E5\n+:100C9000444C6576656C002E72656C2E74657874B4\n+:100CA0002E436869705F504F5745525F5365744CCF\n+:100CB0005056444C6576656C002E72656C2E7465DA\n+:100CC00078742E4E4F54555345445F46554E43322B\n+:100CD000002E746578742E4E4F54555345445F462C\n+:100CE000554E4333002E72656C2E746578742E4E0B\n+:100CF0004F54555345445F46554E4335002E72655B\n+:100D00006C2E746578742E436869705F504F574538\n+:100D1000525F53657441434C47617465002E7265A0\n+:100D20006C2E746578742E436869705F504F574518\n+:100D3000525F47657441434C47617465002E72658C\n+:100D40006C2E746578742E4E4F54555345445F464F\n+:100D5000554E4336002E72656C2E746578742E43A2\n+:100D60006869705F504F5745525F476574524F4DE9\n+:100D700056657273696F6E002E746578742E4368C1\n+:100D800069705F4350555F49734D61737465724379\n+:100D90006F7265002E746578742E436869705F43C6\n+:100DA00050555F434D30426F6F74002E74657874F8\n+:100DB0002E436869705F4350555F434D34426F6FF7\n+:100DC00074002E746578742E436869705F435055C3\n+:100DD0005F53656C6563744D6173746572436F72C4\n+:100DE00065002E636F6D6D656E74002E41524D2E41\n+:100DF00061747472696275746573000000000000AC\n+:100E000000000000000000000000000000000000E2\n+:100E100000000000000000000000000000000000D2\n+:100E20000000000000001B000000010000000600A0\n+:100E3000000000000000340000000000000000007E\n+:100E4000000000000000020000000000000021007F\n+:100E5000000001000000030000000000000034005A\n+:100E60000000000000000000000000000000010081\n+:100E70000000000000002700000008000000030040\n+:100E8000000000000000340000000000000000002E\n+:100E900000000000000001000000000000002C0025\n+:100EA0000000010000000600000000000000340007\n+:100EB000000090000000000000000000000004009E\n+:100EC00000000000000045000000010000000600D6\n+:100ED000000000000000C40000001C000000000032\n+:100EE00000000000000004000000000000005A00A4\n+:100EF0000000010000000600000000000000E0000B\n+:100F000000006C0000000000000000000000040071\n+:100F10000000000000007100000001000000060059\n+:100F20000000000000004C01000050000000000024\n+:100F300000000000000004000000000000009D0010\n+:100F400000000100000006000000000000009C01FD\n+:100F500000004C0000000000000000000000040041\n+:100F600000000000000099000000090000000000DF\n+:100F700000000000000058180000180000002A00BF\n+:100F80000000080000000400000008000000B50098\n+:100F90000000010000000600000000000000E80161\n+:100FA00000005000000000000000000000000400ED\n+:100FB000000000000000D800000001000000060052\n+:100FC00000000000000038020000440200000000A1\n+:100FD0000000000000000400000000000000D40039\n+:100FE0000000090000000000000000000000701870\n+:100FF0000000180000002A0000000B0000000400A0\n+:10100000000008000000F8000000010000000600D9\n+:101010000000000000007C0400001400000000003C\n+:101020000000000000000400000000000000F400C8\n+:101030000000090000000000000000000000881807\n+:101040000000100000002A0000000D000000040055\n+:10105000000008000000160100000100000006006A\n+:1010600000000000000090040000B4000000000038\n+:101070000000000000000400000000000000120159\n+:1010800000000900000000000000000000009818A7\n+:101090000000100000002A0000000F000000040003\n+:1010A0000000080000003A010000010000000600F6\n+:1010B00000000000000044050000160000000000D1\n+:1010C00000000000000002000000000000003601E7\n+:1010D0000000090000000000000000000000A81847\n+:1010E0000000080000002A000000110000000400B9\n+:1010F0000000080000005F01000001000000060081\n+:101100000000000000005C05000038000000000046\n+:1011100000000000000004000000000000007F014B\n+:10112000000001000000060000000000000094051F\n+:101130000000540000000000000000000000040057\n+:101140000000000000007B0100000900000000001A\n+:10115000000000000000B0180000080000002A0095\n+:101160000000140000000400000008000000A101BD\n+:101170000000010000000600000000000000E8057B\n+:10118000000010000000000000000000000004004B\n+:101190000000000000009D010000090000000000A8\n+:1011A000000000000000B8180000080000002A003D\n+:1011B0000000160000000400000008000000B50157\n+:1011C0000000010000000600000000000000F8051B\n+:1011D00000001400000000000000000000000400F7\n+:1011E000000000000000CD0100000100000006002A\n+:1011F0000000000000000C0600009000000000004D\n+:101200000000000000000400000000000000C90110\n+:101210000000090000000000000000000000C018ED\n+:101220000000100000002A00000019000000040067\n+:10123000000008000000E5010000010000000600B9\n+:101240000000000000009C060000280000000000D4\n+:101250000000000000000400000000000000E101A8\n+:101260000000090000000000000000000000D0188D\n+:101270000000080000002A0000001B00000004001D\n+:101280000000080000000502000001000000060048\n+:10129000000000000000C406000024000000000060\n+:1012A0000000000000000400000000000000010237\n+:1012B0000000090000000000000000000000D81835\n+:1012C0000000080000002A0000001D0000000400CB\n+:1012D00000000800000025020000010000000600D8\n+:1012E000000000000000E8060000240000000000EC\n+:1012F00000000000000004000000000000002102C7\n+:101300000000090000000000000000000000E018DC\n+:101310000000080000002A0000001F000000040078\n+:101320000000080000003D0200000100000006006F\n+:101330000000000000000C07000008000000000092\n+:101340000000000000000200000000000000390260\n+:101350000000090000000000000000000000E81884\n+:101360000000080000002A00000021000000040026\n+:101370000000080000005C02000001000000060000\n+:101380000000000000001407000030000000000012\n+:1013900000000000000004000000000000007802CF\n+:1013A00000000100000006000000000000004407EB\n+:1013B00000002C00000000000000000000000400FD\n+:1013C0000000000000008F02000001000000060085\n+:1013D000000000000000700700002C00000000006A\n+:1013E0000000000000000400000000000000A60251\n+:1013F00000000100000006000000000000009C0743\n+:1014000000003000000000000000000000000400A8\n+:10141000000000000000C6020000010000003000D3\n+:10142000000000000000CC07000071000000000078\n+:101430000000000000000100000001000000CF02D9\n+:1014400000000300007000000000000000003D08E4\n+:10145000000031000000000000000000000001005A\n+:101460000000000000001100000003000000000068\n+:101470000000000000006E080000DF020000000015\n+:10148000000000000000010000000000000001005A\n+:101490000000020000000000000000000000301208\n+:1014A0000000B00300002B0000001E00000004003C\n+:1014B0000000100000000900000003000000000010\n+:1014C000000000000000E0150000750200000000B0\n+:1014D000000000000000010000000000000000000B\n+:1014E00000000000000000000000000000000100FB\n+:1014F0000000010000001C000000020005000000C8\n+:1015000000000000000000000000030001000000D7\n+:1015100000000000000000000000030002000000C6\n+:1015200000000000000000000000030003000000B5\n+:1015300000000000000000000000030004000000A4\n+:101540000000000000000000000003000500000093\n+:101550000000000000000000000003000600000082\n+:101560000000000000000000000003000700000071\n+:101570000000000000000000000003000800000060\n+:101580000000000000000000000003000A0000004E\n+:101590000000000000000000000003000B0000003D\n+:1015A0000000000000000000000003000D0000002B\n+:1015B0000000000000000000000003000F00000019\n+:1015C0000000000000000000000003001100000007\n+:1015D00000000000000000000000030013000000F5\n+:1015E00000000000000000000000030014000000E4\n+:1015F00000000000000000000000030016000000D2\n+:1016000000000000000000000000030018000000BF\n+:1016100000000000000000000000030019000000AE\n+:101620000000000000000000000003001B0000009C\n+:101630000000000000000000000003001D0000008A\n+:101640000000000000000000000003001F00000078\n+:101650000000000000000000000003002100000066\n+:101660000000000000000000000003002300000054\n+:101670000000000000000000000003002400000043\n+:101680000000000000000000000003002500000032\n+:101690000000000000000000000003002600000021\n+:1016A0000000000000000000000003002700000010\n+:1016B00000000000000000000000030028001000EF\n+:1016C0000000010000009000000012000400230050\n+:1016D0000000010000006C00000012000600340051\n+:1016E000000001000000500000001200070056003A\n+:1016F0000000010000004C0000001200080068001B\n+:101700000000000000000000000010000000820047\n+:101710000000000000000000000010000000960023\n+:101720000000010000005000000012000A00AF009D\n+:101730000000000000000000000010000000BD00DC\n+:101740000000010000004402000012000B00D30062\n+:101750000000010000001400000012000D00E7006E\n+:101760000000000000000000000010000000EE007B\n+:10177000000001000000B400000012000F0008018A\n+:1017800000000000000000000000100000001E012A\n+:1017900000000100000016000000120011003D01D1\n+:1017A0000000010000003800000012001300530187\n+:1017B00000000100000054000000120014006B0142\n+:1017C0000000010000001000000012001600790166\n+:1017D0000000010000001400000012001800870142\n+:1017E00000000100000090000000120019009501A7\n+:1017F0000000000000000000000010000000B20126\n+:101800000000000000000000000010000000D001F7\n+:101810000000010000002800000012001B00E6018B\n+:101820000000010000002400000012001D00FC0167\n+:101830000000010000002400000012001F000A0246\n+:101840000000010000000800000012002100230237\n+:1018500000000100000030000000120023003902E7\n+:101860000000010000002C000000120024004A02C9\n+:101870000000010000002C000000120025005B02A7\n+:101880000000010000003000000012002600006788\n+:10189000657442524F4D56657273696F6E004368AE\n+:1018A00069705F504F5745525F504452656C6F638B\n+:1018B000005F5F7365745F6C7076645F6C657665FE\n+:1018C0006C00436869705F504F5745525F456E74B6\n+:1018D0006572506F7765724D6F64654972616D4FC7\n+:1018E0006E6C7900436869705F504F5745525F5383\n+:1018F0006574504C4C00436869705F436C6F636B58\n+:101900005F536574757053797374656D504C4C00FA\n+:10191000436869705F535953434F4E5F506F77650B\n+:1019200072557000436869705F504F5745525F535E\n+:101930006574464C415348506F776572005F5F6134\n+:10194000656162695F756964697600436869705FA3\n+:10195000504F5745525F536574566F6C746167659D\n+:1019600000436869705F504F5745525F52656C6F16\n+:1019700063415049006D656D63707900436869701B\n+:101980005F504F5745525F456E746572506F776573\n+:10199000724D6F6465005F5F676E755F7468756D2B\n+:1019A00062315F636173655F757169004368697077\n+:1019B0005F504F5745525F456E746572506F776543\n+:1019C000724D6F646552656C6F6300436869705F48\n+:1019D000504F5745525F53657456444C6576656C5D\n+:1019E00000436869705F504F5745525F5365744CB0\n+:1019F0005056444C6576656C004E4F5455534544E3\n+:101A00005F46554E4332004E4F54555345445F4652\n+:101A1000554E4333004E4F54555345445F46554E43\n+:101A2000433500436869705F436C6F636B5F456E5D\n+:101A300061626C65506572697068436C6F636B00BE\n+:101A4000436869705F436C6F636B5F446973616285\n+:101A50006C65506572697068436C6F636B004368B6\n+:101A600069705F504F5745525F53657441434C470F\n+:101A700061746500436869705F504F5745525F4716\n+:101A8000657441434C47617465004E4F545553454E\n+:101A9000445F46554E433600436869705F504F5768\n+:101AA00045525F476574524F4D56657273696F6E4C\n+:101AB00000436869705F4350555F49734D617374AB\n+:101AC0006572436F726500436869705F4350555F8C\n+:101AD000434D30426F6F7400436869705F435055E7\n+:101AE0005F434D34426F6F7400436869705F4350C9\n+:101AF000555F53656C6563744D6173746572436FB4\n+:101B0000726500000000060000000A0100001600D7\n+:101B100000000A2200001E0000000A230000060048\n+:101B200000000A010000E60000000A0100000C01AC\n+:101B300000000A2500000A0000000A28000010002A\n+:101B40000000021E0000060000000A0100001C0048\n+:101B500000000A2A0000100000000A29000004000A\n+:101B600000000A010000040000000A230000080031\n+:101B700000000A3100007C0000000A32000004006E\n+:101B800000000A010000020000000A01000002003B\n+:0E1B900000000A010000020000000A0100002F\n+:00000001FF\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/libs/libpower_m4f_hard.hex ./chip/libs/libpower_m4f_hard.hex\n--- a_tnusFF/chip/libs/libpower_m4f_hard.hex\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/libs/libpower_m4f_hard.hex\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,435 @@\n+:10000000213C617263683E0A2F202020202020209E\n+:10001000202020202020202031343338333831393B\n+:100020003138202030202020202030202020202087\n+:10003000302020202020202035353820202020206E\n+:100040002020600A00000016000002720000027208\n+:1000500000000272000002720000027200000272D0\n+:1000600000000272000002720000027200000272C0\n+:1000700000000272000002720000027200000272B0\n+:1000800000000272000002720000027200000272A0\n+:100090000000027200000272000002720000027290\n+:1000A000436869705F504F5745525F504452656CCA\n+:1000B0006F63005F5F7365745F6C7076645F6C651F\n+:1000C00076656C00436869705F504F5745525F45D5\n+:1000D0006E746572506F7765724D6F6465497261B9\n+:1000E0006D4F6E6C7900436869705F504F57455291\n+:1000F0005F536574504C4C00436869705F504F57B4\n+:1001000045525F536574464C415348506F77657252\n+:1001100000436869705F504F5745525F536574568E\n+:100120006F6C7461676500436869705F504F574535\n+:10013000525F52656C6F6341504900436869705F5C\n+:10014000504F5745525F456E746572506F776572B8\n+:100150004D6F646500436869705F504F5745525F4B\n+:10016000456E746572506F7765724D6F6465526548\n+:100170006C6F6300436869705F504F5745525F531F\n+:10018000657456444C6576656C00436869705F50D1\n+:100190004F5745525F5365744C5056444C657665D5\n+:1001A0006C004E4F54555345445F46554E43320004\n+:1001B0004E4F54555345445F46554E4333004E4FC2\n+:1001C00054555345445F46554E4335004368697066\n+:1001D0005F504F5745525F53657441434C476174BC\n+:1001E0006500436869705F504F5745525F476574BB\n+:1001F00041434C47617465004E4F54555345445F2D\n+:1002000046554E433600436869705F504F5745521C\n+:100210005F476574524F4D56657273696F6E004348\n+:100220006869705F4350555F49734D6173746572BF\n+:10023000436F726500436869705F4350555F434D7B\n+:1002400030426F6F7400436869705F4350555F437D\n+:100250004D34426F6F7400436869705F4350555F5F\n+:1002600053656C6563744D6173746572436F726539\n+:100270000000706F7765725F6C6962726172792ECF\n+:100280006F2F313433383338313931382020302032\n+:1002900020202020302020202020313030363636DB\n+:1002A000202036323536202020202020600A7F454D\n+:1002B0004C460101010000000000000000000100A8\n+:1002C0002800010000000000000000000000240BD6\n+:1002D00000000000000534000000000028002C0091\n+:1002E000290013B5EFF3108472B61C491D4A0B693F\n+:1002F00043F004030B614FF08043D3F810120A431C\n+:1003000022EA0002C3F800228020164AC3F8C8007F\n+:10031000C3F81422D86430BF11F0200014D04FF07D\n+:10032000804380225A65C3F810124FF48051096847\n+:100330000191C3F8D020094A136923F00403136123\n+:1003400084F3108802B010BDC3F818220090009BFF\n+:100350007D2BE4D8009B01330093F8E700BF00ED4C\n+:1003600000E0DDD7DFFB2000040000B58BB00AA859\n+:10037000372340F8143D01A9034B984702980BB06E\n+:100380005DF804FB00BF05020003F0B5194C059FA2\n+:10039000246814F4885F04D0012829D008B9032FF9\n+:1003A00026D1099C089DE40105F00105E4B244EA68\n+:1003B0004516079C04F0010446EAC405069C04F0B7\n+:1003C000010445EA440403F0010344EA831302F004\n+:1003D000010243EA021201F0010142EA810100F048\n+:1003E0000100014307F00307034B41EA07211964A9\n+:1003F000F0BD0000034000C002404FF080432022C7\n+:1004000010B5C3F8142272B60D490D4A0C6944F0B8\n+:1004100004040C61D3F81042224322EA0002C3F81C\n+:100420000022084AC3F814228022DA6430BFC3F8DD\n+:1004300010420B6923F004030B6162B610BD00ED9E\n+:1004400000E0DDD7DFFB2000040070B505460C4658\n+:10045000FFF7FEFFB0F5885F0ED128462146FFF773\n+:10046000FEFF4FF48000FFF7FEFF4FF08043D3F80C\n+:10047000B431DB07F9D508E0054B1B68DB6828467B\n+:1004800021461B68BDE870401847002070BD00027F\n+:10049000000382B04FF080430F4A0F4988B1C3F880\n+:1004A0001822C3F8181200230193019B632B02D872\n+:1004B000019B0133F8E74FF080438022C3F8C82046\n+:1004C00006E0C3F81412C3F814228022C3F8D02027\n+:1004D00002B0704700BF0400003820000402F8B5E5\n+:1004E00006460D46FFF7FEFFB0F5885F66D14FF078\n+:1004F0008043724AC3F81822724B9D421BD8714C3C\n+:100500002368DB68002002461B69052198472368A1\n+:10051000DB6801201B690B21002298472368DB68F8\n+:1005200002201B690B21002298472368DB68032007\n+:100530001B6905213EE0644B9D421BD8624C236839\n+:10054000DB68002002461B69092198472368DB68A5\n+:1005500001201B690B21002298472368DB680220D9\n+:100560001B690B21002298472368DB6803201B6965\n+:1005700009211FE0564B9D4201D9554E9CE0514C3C\n+:100580002368DB68002002461B690B21984723681B\n+:10059000DB6801201B690B21002298472368DB6878\n+:1005A00002201B690B21002298472368DB681B6926\n+:1005B00003200B210022984700267DE0002E7AD1EF\n+:1005C000FFF7FEFF41F2021398420BD14FF0804338\n+:1005D0004149D3F8FC03404A414B984214BF1346AB\n+:1005E0000B4600E03D4B4FF47A72B5FBF2F29A42B3\n+:1005F000C3D84FF08043314AC3F81822D3F824718E\n+:10060000384B9D4227F470471CD9364B9D421BD96D\n+:1006100003F5370303F5D8539D4217D9334B9D4259\n+:1006200016D9324B9D4215D903F5370303F5D8533C\n+:100630009D4211D92F4B2F4A304CA5428CBF1446F6\n+:100640001C460AE02E4C08E02E4C06E02E4C04E03E\n+:100650002E4C02E02E4C00E02E4C1A4D2B68DB682D\n+:10066000002004F00F0102461B6998472B68DB68E5\n+:1006700001201B690B21002298472B68DB68C4F31B\n+:1006800003311B690220002298472B68DB68C4F302\n+:1006900083411B69032000229847240E4FF08043BA\n+:1006A00006D047F0200747EA0434C3F8244103E0AA\n+:1006B000C3F8247180E7174E3046F8BD00BF040030\n+:1006C0000038FF2C310100020003FFB3C40400E135\n+:1006D000F50502000B00A086010000770100CEFEA8\n+:1006E000C108001BB70000366E01006CDC020087F9\n+:1006F0009303CCC23004CDD2340500BD0105C7B28E\n+:100700001C00C8B22001C9B22402CAB22802CBB26E\n+:100710002C03CCC2300304000C000A46024921F02D\n+:100720000101FFF7FEBF0000000070B505460C4652\n+:10073000FFF7FEFFB0F5885F43D1032D4AD8DFE80D\n+:1007400005F002081A33234A136923F004031361E6\n+:1007500035E072B6204B20491A6942F004021A6152\n+:100760004FF08042D2F81002014321EA0401C2F89E\n+:10077000001230BF12E072B6174B18491A6942F0E6\n+:1007800004021A614FF08042D2F81002014321EABC\n+:100790000401C2F8001230BFC2F810021A6922F038\n+:1007A00004021A6162B670BD72B60A4A136943F058\n+:1007B000040313614FF08043E443C3F8104230BF99\n+:1007C00070BD074B1B68DB68284621469B68BDE867\n+:1007D0007040184770BD00ED00E05D07CA78DDD7B6\n+:1007E000DFFB00020003022803D142F001020846A9\n+:1007F0001047FFF7FEBF08B538B9084B1B6813F464\n+:10080000885F02D0CB1E022B06D8054B1B68DB6825\n+:100810001B699847002008BD034808BD00BF0000C1\n+:1008200003400002000306000C0010B586B0FFF77D\n+:10083000FEFF41F20113984209D80C4B1B6813F4D8\n+:10084000885F12D10B4B4FF4AA721A640DE0094B6A\n+:100850001B680020DB680190012100910290039049\n+:1008600004905C690A460B46A04706B010BD000024\n+:10087000034000C00240000200030148FFF7FEBF32\n+:1008800000BF040000384FF08043014AC3F814222F\n+:1008900070470400003837B504463D200D46FFF789\n+:1008A000FEFF2CB91C4B03221A6020225A602CE058\n+:1008B000012C0BD11D2D25D8184B1B6803F00F03FD\n+:1008C000052B22D84FF48032134B18E0022C1BD199\n+:1008D0001D2D1AD8114B1B6803F00F03033B022B8D\n+:1008E00012D80C4B0E4A1A6000220192019A1E2A5D\n+:1008F00002D8019A0132F8E71A6842F4C0221A605D\n+:10090000002402E0022400E001243D20FFF7FEFF66\n+:10091000204603B030BD0000034000C00240040088\n+:10092000010010B50446FFF7FEFF41F201139842A3\n+:10093000054B1B68DB68204694BF9B6A1B6BBDE8B8\n+:100940001040184700BF0002000310B5FFF7FEFF7C\n+:1009500041F201139842044B1B68DB68BDE810406C\n+:1009600094BFDB6A5B6B184700BF0002000310B541\n+:10097000FFF7FEFF41F20113984206D9044B1B68B2\n+:10098000DB68BDE810409B6B1847012010BD0002DA\n+:100990000003FFF7FEBF084B1B6840F62442C3F379\n+:1009A0000B1393424FF08043D3F8000300F0010093\n+:1009B00018BF80F00100704700BF00ED00E04FF06D\n+:1009C0008043074AC3F80813C3F80403D3F80003AD\n+:1009D000054902430143C3F80013C3F800237047DD\n+:1009E00000BF0800C4C02800C4C04FF08043074ABD\n+:1009F000C3F80813C3F80403D3F8000305490243FE\n+:100A00000143C3F80013C3F80023704700BF04007C\n+:100A1000C4C01400C4C04FF08043D3F8002322F0B8\n+:100A2000410220B942F0404343F4440301E0044B47\n+:100A3000134309B143F040034FF08042C2F8003342\n+:100A400070470100C4C0004743433A2028474E5531\n+:100A500020546F6F6C7320666F722041524D204599\n+:100A60006D6265646465642050726F636573736F53\n+:100A700072732920342E392E3320323031353035FF\n+:100A80003239202872656C6561736529205B41529B\n+:100A90004D2F656D6265646465642D345F392D6228\n+:100AA00072616E6368207265766973696F6E203259\n+:100AB00032343238385D00413800000061656162CF\n+:100AC0006900012E00000005436F727465782D4D9A\n+:100AD0003400060D074D09020A061204140115011F\n+:100AE0001703180119011A011B011C011E04220120\n+:100AF000002E73796D746162002E7374727461627A\n+:100B0000002E7368737472746162002E7465787459\n+:100B1000002E64617461002E627373002E74657818\n+:100B2000742E436869705F504F5745525F5044526E\n+:100B3000656C6F63002E746578742E67657442521D\n+:100B40004F4D56657273696F6E002E746578742E02\n+:100B50005F5F7365745F6C7076645F6C6576656CFF\n+:100B6000002E746578742E436869705F504F574546\n+:100B7000525F456E746572506F7765724D6F646534\n+:100B80004972616D4F6E6C79002E72656C2E7465C2\n+:100B900078742E436869705F504F5745525F5365B4\n+:100BA00074504C4C002E746578742E436869705FE5\n+:100BB000504F5745525F536574464C415348506FF0\n+:100BC000776572002E72656C2E746578742E43689A\n+:100BD00069705F504F5745525F536574566F6C7420\n+:100BE000616765002E72656C2E746578742E43689B\n+:100BF00069705F504F5745525F52656C6F6341504B\n+:100C000049002E72656C2E746578742E4368697085\n+:100C10005F504F5745525F456E746572506F7765F0\n+:100C2000724D6F6465002E72656C2E746578742E3B\n+:100C3000436869705F504F5745525F456E746572E7\n+:100C4000506F7765724D6F646552656C6F63002EEF\n+:100C5000746578742E436869705F504F5745525FD2\n+:100C600053657456444C6576656C002E72656C2E27\n+:100C7000746578742E436869705F504F5745525FB2\n+:100C80005365744C5056444C6576656C002E726505\n+:100C90006C2E746578742E4E4F54555345445F4600\n+:100CA000554E4332002E746578742E4E4F54555372\n+:100CB00045445F46554E4333002E72656C2E746575\n+:100CC00078742E4E4F54555345445F46554E433528\n+:100CD000002E72656C2E746578742E436869705F9F\n+:100CE000504F5745525F53657441434C476174659B\n+:100CF000002E72656C2E746578742E436869705F7F\n+:100D0000504F5745525F47657441434C4761746586\n+:100D1000002E72656C2E746578742E4E4F545553A8\n+:100D200045445F46554E4336002E72656C2E746501\n+:100D300078742E436869705F504F5745525F47651E\n+:100D400074524F4D56657273696F6E002E746578DC\n+:100D5000742E436869705F4350555F49734D6173EA\n+:100D6000746572436F7265002E746578742E4368E3\n+:100D700069705F4350555F434D30426F6F74002E72\n+:100D8000746578742E436869705F4350555F434DB6\n+:100D900034426F6F74002E746578742E43686970E6\n+:100DA0005F4350555F53656C6563744D6173746543\n+:100DB00072436F7265002E636F6D6D656E74002EE9\n+:100DC00041524D2E617474726962757465730000CE\n+:100DD0000000000000000000000000000000000013\n+:100DE0000000000000000000000000000000000003\n+:100DF000000000000000000000001B0000000100D7\n+:100E000000000600000000000000340000000000A8\n+:100E100000000000000000000000020000000000D0\n+:100E2000000021000000010000000300000000009D\n+:100E3000000034000000000000000000000000007E\n+:100E40000000010000000000000027000000080072\n+:100E5000000003000000000000003400000000005B\n+:100E60000000000000000000000001000000000081\n+:100E700000002C000000010000000600000000003F\n+:100E800000003400000088000000000000000000A6\n+:100E90000000040000000000000045000000010008\n+:100EA00000000600000000000000BC000000200060\n+:100EB000000000000000000000000400000000002E\n+:100EC00000005A00000001000000060000000000C1\n+:100ED0000000DC00000070000000000000000000C6\n+:100EE000000004000000000000007100000001008C\n+:100EF000000006000000000000004C01000050004F\n+:100F000000000000000000000000040000000000DD\n+:100F100000009D000000010000000600000000002D\n+:100F200000009C01000048000000000000000000DC\n+:100F3000000004000000000000009900000009000B\n+:100F400000000000000000000000E817000018008A\n+:100F500000002A0000000800000004000000080053\n+:100F60000000B500000001000000060000000000C5\n+:100F70000000E40100004C00000000000000000040\n+:100F800000000400000000000000D8000000010084\n+:100F900000000600000000000000300200003C02DB\n+:100FA000000000000000000000000400000000003D\n+:100FB0000000D40000000900000000000000000054\n+:100FC000000000180000100000002A0000000B00C4\n+:100FD00000000400000008000000F800000001000C\n+:100FE000000006000000000000006C04000010007B\n+:100FF00000000000000000000000040000000000ED\n+:101000000000F400000009000000000000000000E3\n+:10101000000010180000100000002A0000000D0061\n+:10102000000004000000080000001601000001009C\n+:10103000000006000000000000007C040000BC006E\n+:10104000000000000000000000000400000000009C\n+:101050000000120100000900000000000000000074\n+:10106000000020180000080000002A0000000F0007\n+:10107000000004000000080000003A010000010028\n+:10108000000006000000000000003805000010000D\n+:10109000000000000000000000000200000000004E\n+:1010A0000000360100000900000000000000000000\n+:1010B000000028180000080000002A0000001100AD\n+:1010C000000004000000080000005F0100000100B3\n+:1010D0000000060000000000000048050000340089\n+:1010E00000000000000000000000040000000000FC\n+:1010F00000007F0100000100000006000000000069\n+:1011000000007C050000500000000000000000000E\n+:10111000000004000000000000007B010000090046\n+:10112000000000000000000000003018000008006F\n+:1011300000002A0000001400000004000000080065\n+:101140000000A101000001000000060000000000F6\n+:101150000000CC0500000C000000000000000000B2\n+:10116000000004000000000000009D0100000900D4\n+:101170000000000000000000000038180000080017\n+:1011800000002A0000001600000004000000080013\n+:101190000000B50100000100000006000000000092\n+:1011A0000000D80500001000000000000000000052\n+:1011B00000000400000000000000CD01000001005C\n+:1011C00000000600000000000000E80500008C00A0\n+:1011D000000000000000000000000400000000000B\n+:1011E0000000C9010000090000000000000000002C\n+:1011F000000040180000100000002A000000190044\n+:1012000000000400000008000000E50100000100EB\n+:101210000000060000000000000074060000280026\n+:1012200000000000000000000000040000000000BA\n+:101230000000E101000009000000000000000000C3\n+:10124000000050180000080000002A0000001B00E9\n+:10125000000004000000080000000502000001007A\n+:10126000000006000000000000009C0600002400B2\n+:10127000000000000000000000000400000000006A\n+:101280000000010200000900000000000000000052\n+:10129000000058180000080000002A0000001D008F\n+:1012A000000004000000080000002502000001000A\n+:1012B00000000600000000000000C006000024003E\n+:1012C000000000000000000000000400000000001A\n+:1012D00000002102000009000000000000000000E2\n+:1012E000000060180000080000002A0000001F0035\n+:1012F000000004000000080000003D0200000100A2\n+:1013000000000600000000000000E40600000400E9\n+:1013100000000000000000000000020000000000CB\n+:101320000000390200000900000000000000000079\n+:10133000000068180000080000002A0000002100DA\n+:10134000000004000000080000005C020000010032\n+:1013500000000600000000000000E8060000280071\n+:101360000000000000000000000004000000000079\n+:1013700000007802000001000000060000000000EC\n+:101380000000100700002C0000000000000000001A\n+:10139000000004000000000000008F0200000100B7\n+:1013A000000006000000000000003C0700002C00C8\n+:1013B0000000000000000000000004000000000029\n+:1013C0000000A6020000010000000600000000006E\n+:1013D000000068070000300000000000000000006E\n+:1013E00000000400000000000000C6020000010030\n+:1013F00000003000000000000000980700007100AD\n+:1014000000000000000000000000010000000100DA\n+:101410000000CF0200000300007000000000000088\n+:101420000000090800003900000000000000000072\n+:101430000000010000000000000011000000030097\n+:101440000000000000000000000042080000DF0271\n+:10145000000000000000000000000100000000008B\n+:101460000000010000000200000000000000000079\n+:10147000000004120000900300002B0000001E007A\n+:10148000000004000000100000000900000003003C\n+:101490000000000000000000000094150000510250\n+:1014A000000000000000000000000100000000003B\n+:1014B000000000000000000000000000000000002C\n+:1014C00000000100000001000000200000000200F8\n+:1014D0000500000000000000000000000000030004\n+:1014E00001000000000000000000000000000300F8\n+:1014F00002000000000000000000000000000300E7\n+:1015000003000000000000000000000000000300D5\n+:1015100004000000000000000000000000000300C4\n+:1015200005000000000000000000000000000300B3\n+:1015300006000000000000000000000000000300A2\n+:101540000700000000000000000000000000030091\n+:101550000800000000000000000000000000030080\n+:101560000A0000000000000000000000000003006E\n+:101570000B0000000000000000000000000003005D\n+:101580000D0000000000000000000000000003004B\n+:101590000F00000000000000000000000000030039\n+:1015A0001100000000000000000000000000030027\n+:1015B0001300000000000000000000000000030015\n+:1015C0001400000000000000000000000000030004\n+:1015D00016000000000000000000000000000300F2\n+:1015E00018000000000000000000000000000300E0\n+:1015F00019000000000000000000000000000300CF\n+:101600001B000000000000000000000000000300BC\n+:101610001D000000000000000000000000000300AA\n+:101620001F00000000000000000000000000030098\n+:101630002100000000000000000000000000030086\n+:101640002300000000000000000000000000030074\n+:101650002400000000000000000000000000030063\n+:101660002500000000000000000000000000030052\n+:101670002600000000000000000000000000030041\n+:101680002700000000000000000000000000030030\n+:101690002800100000000100000088000000120077\n+:1016A0000400230000000100000070000000120090\n+:1016B000060034000000010000005000000012008D\n+:1016C0000700560000000100000048000000120062\n+:1016D000080068000000000000000000000010008A\n+:1016E0000000820000000000000000000000100068\n+:1016F000000096000000010000004C0000001200F5\n+:101700000A00AF000000010000003C0200001200CF\n+:101710000B00C500000001000000100000001200D6\n+:101720000D00D900000000000000000000001000C3\n+:101730000000E000000001000000BC0000001200FA\n+:101740000F00FA000000010000001000000012006D\n+:101750001100190100000100000034000000120017\n+:1017600013002F01000001000000500000001200D3\n+:10177000140047010000010000000C0000001200EE\n+:1017800016005501000001000000100000001200CA\n+:10179000180063010000010000008C00000012002E\n+:1017A000190071010000000000000000000010009E\n+:1017B00000008E010000000000000000000010008A\n+:1017C0000000AC0100000100000028000000120031\n+:1017D0001B00C201000001000000240000001200F4\n+:1017E0001D00D801000001000000240000001200CC\n+:1017F0001F00E601000001000000040000001200CC\n+:101800002100FF010000010000002800000012007C\n+:10181000230015020000010000002C00000012004F\n+:10182000240026020000010000002C00000012002D\n+:101830002500370200000100000030000000120007\n+:1018400026000067657442524F4D56657273696F8A\n+:101850006E00436869705F504F5745525F50445265\n+:10186000656C6F63005F5F7365745F6C7076645F57\n+:101870006C6576656C00436869705F504F574552E0\n+:101880005F456E746572506F7765724D6F64654920\n+:1018900072616D4F6E6C7900436869705F504F578D\n+:1018A00045525F536574504C4C00436869705F4308\n+:1018B0006C6F636B5F536574757053797374656D8A\n+:1018C000504C4C00436869705F535953434F4E5F0F\n+:1018D000506F776572557000436869705F504F575D\n+:1018E00045525F536574464C415348506F7765725B\n+:1018F00000436869705F504F5745525F5365745697\n+:101900006F6C7461676500436869705F504F57453D\n+:10191000525F52656C6F63415049006D656D637035\n+:101920007900436869705F504F5745525F456E7448\n+:101930006572506F7765724D6F64650043686970BA\n+:101940005F504F5745525F456E746572506F7765B3\n+:10195000724D6F646552656C6F6300436869705FB8\n+:10196000504F5745525F53657456444C6576656CCD\n+:1019700000436869705F504F5745525F5365744C20\n+:101980005056444C6576656C004E4F545553454453\n+:101990005F46554E4332004E4F54555345445F46C3\n+:1019A000554E4333004E4F54555345445F46554EB4\n+:1019B000433500436869705F436C6F636B5F456ECE\n+:1019C00061626C65506572697068436C6F636B002F\n+:1019D000436869705F436C6F636B5F4469736162F6\n+:1019E0006C65506572697068436C6F636B00436827\n+:1019F00069705F504F5745525F53657441434C4780\n+:101A000061746500436869705F504F5745525F4786\n+:101A1000657441434C47617465004E4F54555345BE\n+:101A2000445F46554E433600436869705F504F57D8\n+:101A300045525F476574524F4D56657273696F6EBC\n+:101A400000436869705F4350555F49734D6173741B\n+:101A50006572436F726500436869705F4350555FFC\n+:101A6000434D30426F6F7400436869705F43505557\n+:101A70005F434D34426F6F7400436869705F435039\n+:101A8000555F53656C6563744D6173746572436F24\n+:101A9000726500000000060000000A01000014004A\n+:101AA00000000A2200001C0000000A2300000600BB\n+:101AB00000000A010000E20000000A0100000C0022\n+:101AC0000000021E0000080000001E2700000600A3\n+:101AD00000000A0100000C0000001E2800000400A5\n+:101AE00000000A010000020000001E2300000800A0\n+:101AF00000000A2F0000760000000A3000000400F9\n+:101B000000000A010000020000000A0100000200BB\n+:0E1B100000000A010000000000001E0100009D\n+:00000001FF\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/adc_5410x.c ./chip/src/adc_5410x.c\n--- a_tnusFF/chip/src/adc_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/adc_5410x.c\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,129 @@\n+/*\n+ * @brief LPC5410X ADC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the ADC peripheral */\n+void Chip_ADC_Init(LPC_ADC_T *pADC, uint32_t flags)\n+{\n+\t/* Power up ADC and enable ADC base clock */\n+\tChip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_ADC0 | SYSCON_PDRUNCFG_PD_VDDA_ENA | SYSCON_PDRUNCFG_PD_VREFP);\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_ADC0);\n+\n+\t/* Disable ADC interrupts */\n+\tpADC->INTEN = 0;\n+\n+\t/* Set ADC control options */\n+\tpADC->CTRL = flags;\n+}\n+\n+/* Shutdown ADC */\n+void Chip_ADC_DeInit(LPC_ADC_T *pADC)\n+{\n+\tpADC->INTEN = 0;\n+\tpADC->CTRL = 0;\n+\n+\t/* Stop ADC clock and then power down ADC */\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_ADC0);\n+\tChip_SYSCON_PowerDown(SYSCON_PDRUNCFG_PD_ADC0 | SYSCON_PDRUNCFG_PD_VDDA_ENA | SYSCON_PDRUNCFG_PD_VREFP);\n+}\n+\n+/* Calibrate ADC for system clock frequency */\n+uint32_t Chip_ADC_Calibration(LPC_ADC_T *pADC)\n+{\n+\tvolatile uint32_t i;\n+\tuint32_t sysclk_freq = Chip_Clock_GetSystemClockRate();\n+\n+\tpADC->STARTUP = ADC_STARTUP_ENABLE;\n+\tfor ( i = 0; i < 0x10; i++ ) {}\n+\tif ( !(pADC->STARTUP & ADC_STARTUP_ENABLE) ) {\n+\t\treturn ERR_ADC_NO_POWER;\n+\t}\n+\n+\t/* If not in by-pass mode do the calibration */\n+\tif ( (pADC->CALIBR & ADC_CALREQD) && !(pADC->CTRL & ADC_CR_BYPASS) ) {\n+\t\tuint32_t ctrl = pADC->CTRL & 0x7FFF;\n+\t\tuint32_t tmp = ctrl;\n+\n+\t\t/* Set ADC to SYNC mode */\n+\t\ttmp &= ~ADC_CR_ASYNC_MODE;\n+\n+\t\t/* To be safe run calibration at 1MHz UM permits upto 30MHz */\n+\t\tif (sysclk_freq > 1000000UL) {\n+\t\t\tpADC->CTRL = tmp | (((sysclk_freq / 1000000UL) - 1) & 0xFF);\n+\t\t}\n+\n+\t\t/* Calibration is needed, do it now. */\n+\t\tpADC->CALIBR = ADC_CALIB;\n+\t\ti = 0xF0000;\n+\t\twhile ( (pADC->CALIBR & ADC_CALIB) && --i ) {}\n+\t\tpADC->CTRL = ctrl;\n+\t\treturn i ? LPC_OK : ERR_TIME_OUT;\n+\t}\n+\n+\t/* A dummy conversion cycle will be performed. */\n+\tpADC->STARTUP = (pADC->STARTUP | ADC_STARTUP_INIT) & 0x03;\n+\ti = 0x7FFFF;\n+\twhile ( (pADC->STARTUP & ADC_STARTUP_INIT) && --i ) {}\n+\treturn i ? LPC_OK : ERR_TIME_OUT;\n+}\n+\n+/* Set ADC clock rate */\n+void Chip_ADC_SetClockRate(LPC_ADC_T *pADC, uint32_t rate)\n+{\n+\tuint32_t div;\n+\n+\t/* Get ADC clock source to determine base ADC rate. IN sychronous mode,\n+\t   the ADC base clock comes from the system clock. In ASYNC mode, it\n+\t   comes from the ASYNC ADC clock and this function doesn't work. */\n+\tdiv = Chip_Clock_GetSystemClockRate() / rate;\n+\tif (div == 0) {\n+\t\tdiv = 1;\n+\t}\n+\n+\tChip_ADC_SetDivider(pADC, (uint8_t) div - 1);\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/chip_5410x.c ./chip/src/chip_5410x.c\n--- a_tnusFF/chip/src/chip_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/chip_5410x.c\t2016-10-22 23:17:43.576840278 -0300\n@@ -0,0 +1,59 @@\n+/*\n+ * @brief LPC5410X Miscellaneous chip specific functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* System Clock Frequency (Core Clock) */\n+uint32_t SystemCoreClock;\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Update system core clock rate, should be called if the system has\n+   a clock rate change */\n+void SystemCoreClockUpdate(void)\n+{\n+\t/* CPU core speed (main clock speed adjusted by system clock divider) */\n+\tSystemCoreClock = Chip_Clock_GetSystemClockRate();\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/clock_5410x.c ./chip/src/clock_5410x.c\n--- a_tnusFF/chip/src/clock_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/clock_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,393 @@\n+/*\n+ * @brief LPC5410X clock driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Return asynchronous APB clock rate (no regard for divider) */\n+static uint32_t Chip_Clock_GetAsyncSyscon_ClockRate_NoDiv(void)\n+{\n+\tCHIP_ASYNC_SYSCON_SRC_T src;\n+\tuint32_t clkRate;\n+\n+\tsrc = Chip_Clock_GetAsyncSysconClockSource();\n+\tswitch (src) {\n+\tcase SYSCON_ASYNC_IRC:\n+\t\tclkRate = Chip_Clock_GetIntOscRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_ASYNC_WDTOSC:\n+\t\tclkRate = Chip_Clock_GetWDTOSCRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_ASYNC_MAINCLK:\n+\t\tclkRate = Chip_Clock_GetMainClockRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_ASYNC_CLKIN:\n+\t\tclkRate = Chip_Clock_GetSystemPLLInClockRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_ASYNC_SYSPLLOUT:\n+\t\tclkRate = Chip_Clock_GetSystemPLLOutClockRate(false);\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tclkRate = 0;\n+\t\tbreak;\n+\t}\n+\n+\treturn clkRate;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Return main A clock rate */\n+uint32_t Chip_Clock_GetMain_A_ClockRate(void)\n+{\n+\tuint32_t clkRate = 0;\n+\n+\tswitch (Chip_Clock_GetMain_A_ClockSource()) {\n+\tcase SYSCON_MAIN_A_CLKSRC_IRC:\n+\t\tclkRate = Chip_Clock_GetIntOscRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_MAIN_A_CLKSRCA_CLKIN:\n+\t\tclkRate = Chip_Clock_GetExtClockInRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_MAIN_A_CLKSRCA_WDTOSC:\n+\t\tclkRate = Chip_Clock_GetWDTOSCRate();\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tclkRate = 0;\n+\t\tbreak;\n+\t}\n+\n+\treturn clkRate;\n+}\n+\n+/* Return main B clock rate */\n+uint32_t Chip_Clock_GetMain_B_ClockRate(void)\n+{\n+\tuint32_t clkRate = 0;\n+\n+\tswitch (Chip_Clock_GetMain_B_ClockSource()) {\n+\tcase SYSCON_MAIN_B_CLKSRC_MAINCLKSELA:\n+\t\tclkRate = Chip_Clock_GetMain_A_ClockRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_MAIN_B_CLKSRC_SYSPLLIN:\n+\t\tclkRate = Chip_Clock_GetSystemPLLInClockRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_MAIN_B_CLKSRC_SYSPLLOUT:\n+\t\tclkRate = Chip_Clock_GetSystemPLLOutClockRate(false);\n+\t\tbreak;\n+\n+\tcase SYSCON_MAIN_B_CLKSRC_RTC:\n+\t\tclkRate = Chip_Clock_GetRTCOscRate();\n+\t\tbreak;\n+\t}\n+\n+\treturn clkRate;\n+}\n+\n+/* Set CLKOUT clock source and divider */\n+void Chip_Clock_SetCLKOUTSource(CHIP_SYSCON_CLKOUTSRC_T src, uint32_t div)\n+{\n+\tuint32_t srcClk = (uint32_t) src;\n+\n+\t/* Use a clock A source? */\n+\tif (src >= SYSCON_CLKOUTSRCA_OUTPUT) {\n+\t\t/* Not using a CLKOUT A source */\n+\t\tLPC_SYSCON->CLKOUTSELB = srcClk - SYSCON_CLKOUTSRCA_OUTPUT;\n+\t}\n+\telse {\n+\t\t/* Using a clock A source, select A and then switch B to A */\n+\t\tLPC_SYSCON->CLKOUTSELA = srcClk;\n+\t\tLPC_SYSCON->CLKOUTSELB = 0;\n+\t}\n+\n+\tLPC_SYSCON->CLKOUTDIV = div;\n+}\n+\n+/* Enable a system or peripheral clock */\n+void Chip_Clock_EnablePeriphClock(CHIP_SYSCON_CLOCK_T clk)\n+{\n+\tuint32_t clkEnab = (uint32_t) clk;\n+\n+\tif (clkEnab >= 128) {\n+\t\tclkEnab = clkEnab - 128;\n+\n+\t\tLPC_ASYNC_SYSCON->ASYNCAPBCLKCTRLSET = (1 << clkEnab);\n+\t}\n+\telse if (clkEnab >= 32) {\n+\t\tLPC_SYSCON->AHBCLKCTRLSET[1] = (1 << (clkEnab - 32));\n+\t}\n+\telse {\n+\t\tLPC_SYSCON->AHBCLKCTRLSET[0] = (1 << clkEnab);\n+\t}\n+}\n+\n+/* Disable a system or peripheral clock */\n+void Chip_Clock_DisablePeriphClock(CHIP_SYSCON_CLOCK_T clk)\n+{\n+\tuint32_t clkEnab = (uint32_t) clk;\n+\n+\tif (clkEnab >= 128) {\n+\t\tclkEnab = clkEnab - 128;\n+\n+\t\tLPC_ASYNC_SYSCON->ASYNCAPBCLKCTRLCLR = (1 << clkEnab);\n+\t}\n+\telse if (clkEnab >= 32) {\n+\t\tLPC_SYSCON->AHBCLKCTRLCLR[1] = (1 << (clkEnab - 32));\n+\t}\n+\telse {\n+\t\tLPC_SYSCON->AHBCLKCTRLCLR[0] = (1 << clkEnab);\n+\t}\n+}\n+\n+/* Returns the system tick rate as used with the system tick divider */\n+uint32_t Chip_Clock_GetSysTickClockRate(void)\n+{\n+\tuint32_t sysRate, div;\n+\n+\tdiv = LPC_SYSCON->SYSTICKCLKDIV;\n+\n+\t/* If divider is 0, the system tick clock is disabled */\n+\tif (div == 0) {\n+\t\tsysRate = 0;\n+\t}\n+\telse {\n+\t\tsysRate = Chip_Clock_GetSystemClockRate() / LPC_SYSCON->SYSTICKCLKDIV;\n+\t}\n+\n+\treturn sysRate;\n+}\n+\n+/* Return ADC clock rate */\n+uint32_t Chip_Clock_GetADCClockRate(void)\n+{\n+\tuint32_t div, clkRate = 0;\n+\n+\tdiv = Chip_Clock_GetADCClockDiv();\n+\n+\t/* ADC clock only enabled if div>0 */\n+\tif (div > 0) {\n+\t\tswitch (Chip_Clock_GetADCClockSource()) {\n+\t\tcase SYSCON_ADCCLKSELSRC_MAINCLK:\n+\t\t\tclkRate = Chip_Clock_GetMainClockRate();\n+\t\t\tbreak;\n+\n+\t\tcase SYSCON_ADCCLKSELSRC_SYSPLLOUT:\n+\t\t\tclkRate = Chip_Clock_GetSystemPLLOutClockRate(false);\n+\t\t\tbreak;\n+\n+\t\tcase SYSCON_ADCCLKSELSRC_IRC:\n+\t\t\tclkRate = Chip_Clock_GetIntOscRate();\n+\t\t\tbreak;\n+\t\t}\n+\n+\t\tclkRate = clkRate / div;\n+\t}\n+\n+\treturn clkRate;\n+}\n+\n+/* Set asynchronous APB clock source */\n+void Chip_Clock_SetAsyncSysconClockSource(CHIP_ASYNC_SYSCON_SRC_T src)\n+{\n+\tuint32_t clkSrc = (uint32_t) src;\n+\n+\tif (src >= SYSCON_ASYNC_MAINCLK) {\n+\t\tLPC_ASYNC_SYSCON->ASYNCAPBCLKSELB = (clkSrc - 4);\n+\t}\n+\telse {\n+\t\tLPC_ASYNC_SYSCON->ASYNCAPBCLKSELA = clkSrc;\n+\t\tLPC_ASYNC_SYSCON->ASYNCAPBCLKSELB = 3;\n+\t}\n+}\n+\n+/* Get asynchronous APB clock source */\n+CHIP_ASYNC_SYSCON_SRC_T Chip_Clock_GetAsyncSysconClockSource(void)\n+{\n+\tuint32_t clkSrc;\n+\n+\tif (LPC_ASYNC_SYSCON->ASYNCAPBCLKSELB == 3) {\n+\t\tclkSrc = LPC_ASYNC_SYSCON->ASYNCAPBCLKSELA;\n+\t}\n+\telse {\n+\t\tclkSrc = 4 + LPC_ASYNC_SYSCON->ASYNCAPBCLKSELB;\n+\t}\n+\n+\treturn (CHIP_ASYNC_SYSCON_SRC_T) clkSrc;\n+}\n+\n+/* Return asynchronous APB clock rate */\n+uint32_t Chip_Clock_GetAsyncSyscon_ClockRate(void)\n+{\n+\tuint32_t clkRate, div;\n+\n+\tclkRate = Chip_Clock_GetAsyncSyscon_ClockRate_NoDiv();\n+\tdiv = LPC_ASYNC_SYSCON->ASYNCCLKDIV;\n+\tif (div == 0) {\n+\t\t/* Clock is disabled */\n+\t\treturn 0;\n+\t}\n+\n+\treturn clkRate / div;\n+}\n+\n+/* Set main system clock source */\n+void Chip_Clock_SetMainClockSource(CHIP_SYSCON_MAINCLKSRC_T src)\n+{\n+\tuint32_t clkSrc = (uint32_t) src;\n+\n+\tif (clkSrc >= 4) {\n+\t\t/* Main B source only, not using main A */\n+\t\tChip_Clock_SetMain_B_ClockSource((CHIP_SYSCON_MAIN_B_CLKSRC_T) (clkSrc - 4));\n+\t}\n+\telse {\n+\t\t/* Select main A clock source and set main B source to use main A */\n+\t\tChip_Clock_SetMain_A_ClockSource((CHIP_SYSCON_MAIN_A_CLKSRC_T) clkSrc);\n+\t\tChip_Clock_SetMain_B_ClockSource(SYSCON_MAIN_B_CLKSRC_MAINCLKSELA);\n+\t}\n+}\n+\n+/* Returns the main clock source */\n+CHIP_SYSCON_MAINCLKSRC_T Chip_Clock_GetMainClockSource(void)\n+{\n+\tCHIP_SYSCON_MAIN_B_CLKSRC_T srcB;\n+\tuint32_t clkSrc;\n+\n+\t/* Get main B clock source */\n+\tsrcB = Chip_Clock_GetMain_B_ClockSource();\n+\tif (srcB == SYSCON_MAIN_B_CLKSRC_MAINCLKSELA) {\n+\t\t/* Using source A, so return source A */\n+\t\tclkSrc = (uint32_t) Chip_Clock_GetMain_A_ClockSource();\n+\t}\n+\telse {\n+\t\t/* Using source B */\n+\t\tclkSrc = 4 + (uint32_t) srcB;\n+\t}\n+\n+\treturn (CHIP_SYSCON_MAINCLKSRC_T) clkSrc;\n+}\n+\n+/* Return main clock rate */\n+uint32_t Chip_Clock_GetMainClockRate(void)\n+{\n+\tuint32_t clkRate;\n+\n+\tif (Chip_Clock_GetMain_B_ClockSource() == SYSCON_MAIN_B_CLKSRC_MAINCLKSELA) {\n+\t\t/* Return main A clock rate */\n+\t\tclkRate = Chip_Clock_GetMain_A_ClockRate();\n+\t}\n+\telse {\n+\t\t/* Return main B clock rate */\n+\t\tclkRate = Chip_Clock_GetMain_B_ClockRate();\n+\t}\n+\n+\treturn clkRate;\n+}\n+\n+/* Return system clock rate */\n+uint32_t Chip_Clock_GetSystemClockRate(void)\n+{\n+\t/* No point in checking for divide by 0 */\n+\treturn Chip_Clock_GetMainClockRate() / LPC_SYSCON->AHBCLKDIV;\n+}\n+\n+/* Get UART base rate */\n+uint32_t Chip_Clock_GetUARTBaseClockRate(void)\n+{\n+\tuint64_t inclk;\n+\n+\t/* Get clock rate into FRG */\n+\tinclk = (uint64_t) Chip_Clock_GetAsyncSyscon_ClockRate();\n+\n+\tif (inclk != 0) {\n+\t\tuint32_t mult, divmult;\n+\n+\t\tdivmult = LPC_ASYNC_SYSCON->FRGCTRL & 0xFF;\n+\t\tif ((divmult & 0xFF) == 0xFF) {\n+\t\t\t/* Fractional part is enabled, get multiplier */\n+\t\t\tmult = (divmult >> 8) & 0xFF;\n+\n+\t\t\t/* Get fractional error */\n+\t\t\tinclk = (inclk * 256) / (uint64_t) (256 + mult);\n+\t\t}\n+\t}\n+\n+\treturn (uint32_t) inclk;\n+}\n+\n+/* Set UART base rate */\n+uint32_t Chip_Clock_SetUARTBaseClockRate(uint32_t rate)\n+{\n+\tuint32_t div, inclk, err;\n+\tuint64_t uart_fra_multiplier;\n+\n+\t/* Input clock into FRG block is the main system cloock */\n+\tinclk = Chip_Clock_GetAsyncSyscon_ClockRate();\n+\n+\t/* Get integer divider for coarse rate */\n+\tdiv = inclk / rate;\n+\tif (div == 0) {\n+\t\tdiv = 1;\n+\t}\n+\n+\t/* Enable FRG clock */\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_FRG);\n+\n+\terr = inclk - (rate * div);\n+\tuart_fra_multiplier = (((uint64_t) err + (uint64_t) rate) * 256) / (uint64_t) (rate * div);\n+\n+\t/* Enable fractional divider and set multiplier */\n+\tLPC_ASYNC_SYSCON->FRGCTRL = 0xFF | (uart_fra_multiplier << 8);\n+\n+\treturn Chip_Clock_GetUARTBaseClockRate();\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/crc_5410x.c ./chip/src/crc_5410x.c\n--- a_tnusFF/chip/src/crc_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/crc_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,118 @@\n+/*\n+ * @brief LPC5410X Cyclic Redundancy Check (CRC) Engine driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize CRC engine */\n+void Chip_CRC_Init(void)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_CRC);\n+\tChip_SYSCON_PeriphReset(RESET_CRC);\n+}\n+\n+/* De-initialize CRC engine */\n+void Chip_CRC_Deinit(void)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_CRC);\n+}\n+\n+/* Sets up the CRC engine with defaults based on the polynomial to be used */\n+void Chip_CRC_UseDefaultConfig(CRC_POLY_T poly)\n+{\n+\tswitch (poly) {\n+\tcase CRC_POLY_CRC16:\n+\t\tChip_CRC_UseCRC16();\n+\t\tbreak;\n+\n+\tcase CRC_POLY_CRC32:\n+\t\tChip_CRC_UseCRC32();\n+\t\tbreak;\n+\n+\tcase CRC_POLY_CCITT:\n+\tdefault:\n+\t\tChip_CRC_UseCCITT();\n+\t\tbreak;\n+\t}\n+}\n+\n+/* configure CRC engine and compute CCITT checksum from 8-bit data */\n+uint32_t Chip_CRC_CRC8(const uint8_t *data, uint32_t bytes)\n+{\n+\tChip_CRC_UseCCITT();\n+\twhile (bytes > 0) {\n+\t\tChip_CRC_Write8(*data);\n+\t\tdata++;\n+\t\tbytes--;\n+\t}\n+\n+\treturn Chip_CRC_Sum();\n+}\n+\n+/* Convenience function for computing a standard CRC16 checksum from 16-bit data block */\n+uint32_t Chip_CRC_CRC16(const uint16_t *data, uint32_t hwords)\n+{\n+\tChip_CRC_UseCRC16();\n+\twhile (hwords > 0) {\n+\t\tChip_CRC_Write16(*data);\n+\t\tdata++;\n+\t\thwords--;\n+\t}\n+\n+\treturn Chip_CRC_Sum();\n+}\n+\n+/* Convenience function for computing a standard CRC32 checksum from 32-bit data block */\n+uint32_t Chip_CRC_CRC32(const uint32_t *data, uint32_t words)\n+{\n+\tChip_CRC_UseCRC32();\n+\twhile (words > 0) {\n+\t\tChip_CRC_Write32(*data);\n+\t\tdata++;\n+\t\twords--;\n+\t}\n+\n+\treturn Chip_CRC_Sum();\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/dma_5410x.c ./chip/src/dma_5410x.c\n--- a_tnusFF/chip/src/dma_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/dma_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,67 @@\n+/*\n+ * @brief DMA driver declarations and functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* DMA SRAM table - this can be optionally used with the Chip_DMA_SetSRAMBase()\n+   function if a DMA SRAM table is needed. This table is correctly aligned for\n+     the DMA controller. */\n+\n+/* Set alignement to 512 bytes */\n+ALIGN(512) DMA_CHDESC_T Chip_DMA_Table[MAX_DMA_CHANNEL];\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Sets up a DMA channel with the passed DMA transfer descriptor */\n+bool Chip_DMA_SetupTranChannel(LPC_DMA_T *pDMA, DMA_CHID_T ch, DMA_CHDESC_T *desc)\n+{\n+\tbool good = false;\n+\tDMA_CHDESC_T *pDesc = (DMA_CHDESC_T *) pDMA->SRAMBASE;\n+\n+\tif ((Chip_DMA_GetActiveChannels(pDMA) & (1 << ch)) == 0) {\n+\t\t/* Channel is not active, so update the descriptor */\n+\t\tpDesc[ch] = *desc;\n+\n+\t\tgood = true;\n+\t}\n+\n+\treturn good;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/fifo_5410x.c ./chip/src/fifo_5410x.c\n--- a_tnusFF/chip/src/fifo_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/fifo_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,306 @@\n+/*\n+ * @brief LPC5410X System FIFO chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/** SPI FIFO read FIFO statuses */\n+#define LPC_SPIRXFIFO_STAT_SSEL0N       (1 << 16)\t\t/*!< Slave select for receive on SSEL0 (active low) */\n+#define LPC_SPIRXFIFO_STAT_SSEL1N       (1 << 17)\t\t/*!< Slave select for receive on SSEL1 (active low) */\n+#define LPC_SPIRXFIFO_STAT_SSEL2N       (1 << 18)\t\t/*!< Slave select for receive on SSEL2 (active low) */\n+#define LPC_SPIRXFIFO_STAT_SSEL3N       (1 << 19)\t\t/*!< Slave select for receive on SSEL3 (active low) */\n+#define LPC_SPIRXFIFO_STAT_SOT          (1 << 20)\t\t/*!< This flag will be 1 if this is the first data after the SSELs went from deasserted to asserted */\n+\n+/** SPI FIFO write FIFO control */\n+#define LPC_SPITXFIFO_CTRL_SSEL0N       (1 << 16)\t\t/*!< Master assert for receive on SSEL0 (active low) */\n+#define LPC_SPITXFIFO_CTRL_SSEL1N       (1 << 17)\t\t/*!< Master assert for receive on SSEL1 (active low) */\n+#define LPC_SPITXFIFO_CTRL_SSEL2N       (1 << 18)\t\t/*!< Master assert for receive on SSEL2 (active low) */\n+#define LPC_SPITXFIFO_CTRL_SSEL3N       (1 << 19)\t\t/*!< Master assert for receive on SSEL3 (active low) */\n+#define LPC_SPITXFIFO_CTRL_EOT          (1 << 20)\t\t/*!< End of Transfer. The asserted SSEL will be deasserted at the end of a transfer */\n+#define LPC_SPITXFIFO_CTRL_EOF          (1 << 21)\t\t/*!< End of Frame. Between frames, a delay may be inserted, as defined by the FRAME_DELAY value in the DLY register */\n+#define LPC_SPITXFIFO_CTRL_RXIGNORE     (1 << 22)\t\t/*!< Receive Ignore. This allows data to be transmitted using the SPI without the need to read unneeded data from the receiver */\n+#define LPC_SPITXFIFO_CTRL_LEN(n)       ((n) << 24)\t\t/*!< Data Length. Specifies the data length from 1 to 16 bits ((n-1) encoded) */\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the system FIFO */\n+void Chip_FIFO_Init(LPC_FIFO_T *pFIFO)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_FIFO);\n+\tChip_SYSCON_PeriphReset(RESET_FIFO);\n+}\n+\n+/* Deinitializes the system FIFO */\n+void Chip_FIFO_Deinit(LPC_FIFO_T *pFIFO)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_FIFO);\n+}\n+\n+/* Get the FIFO space available for the USART/SPI direction */\n+uint32_t Chip_FIFO_GetFifoSpace(LPC_FIFO_T *pFIFO, LPC_FIFO_PERIPHID_T periphId, LPC_FIFO_DIR_T dir)\n+{\n+\tuint32_t pcfg;\n+\n+\tif (periphId == FIFO_USART) {\n+\t\tpcfg = pFIFO->common.FIFOCTLUSART;\n+\t}\n+\telse {\n+\t\tpcfg = pFIFO->common.FIFOCTLSPI;\n+\t}\n+\n+\tif (dir == FIFO_RX) {\n+\t\tpcfg = pcfg >> 16;\n+\t}\n+\telse {\n+\t\tpcfg = pcfg >> 24;\n+\t}\n+\n+\treturn pcfg & 0xFF;\n+}\n+\n+/* Pause a peripheral FIFO */\n+void Chip_FIFO_PauseFifo(LPC_FIFO_T *pFIFO, LPC_FIFO_PERIPHID_T periphId, LPC_FIFO_DIR_T dir)\n+{\n+\tif (periphId == FIFO_USART) {\n+\t\tif (dir == FIFO_RX) {\n+\t\t\tpFIFO->common.FIFOCTLUSART |= (1 << 0);\n+\t\t}\n+\t\telse {\n+\t\t\tpFIFO->common.FIFOCTLUSART |= (1 << 8);\n+\t\t}\n+\t}\n+\telse {\n+\t\tif (dir == FIFO_RX) {\n+\t\t\tpFIFO->common.FIFOCTLSPI |= (1 << 0);\n+\t\t}\n+\t\telse {\n+\t\t\tpFIFO->common.FIFOCTLSPI |= (1 << 8);\n+\t\t}\n+\t}\n+}\n+\n+/* Unpause a peripheral FIFO */\n+void Chip_FIFO_UnpauseFifo(LPC_FIFO_T *pFIFO, LPC_FIFO_PERIPHID_T periphId, LPC_FIFO_DIR_T dir)\n+{\n+\tif (periphId == FIFO_USART) {\n+\t\tif (dir == FIFO_RX) {\n+\t\t\tpFIFO->common.FIFOCTLUSART &= ~(1 << 0);\n+\t\t}\n+\t\telse {\n+\t\t\tpFIFO->common.FIFOCTLUSART &= ~(1 << 8);\n+\t\t}\n+\t}\n+\telse {\n+\t\tif (dir == FIFO_RX) {\n+\t\t\tpFIFO->common.FIFOCTLSPI &= ~(1 << 0);\n+\t\t}\n+\t\telse {\n+\t\t\tpFIFO->common.FIFOCTLSPI &= ~(1 << 8);\n+\t\t}\n+\t}\n+}\n+\n+/* Configure a peripheral's FIFO sizes */\n+void Chip_FIFO_ConfigFifoSize(LPC_FIFO_T *pFIFO, LPC_FIFO_PERIPHID_T periphId, LPC_FIFO_CFGSIZE_T *pSizes)\n+{\n+\tint maxP, i;\n+\tuint32_t upDateMask;\n+\tvolatile uint32_t *updateReg, *pFifoSizes, *pFifoPause;\n+\n+\t/* Pause FIFOs */\n+\tChip_FIFO_PauseFifo(LPC_FIFO, periphId, FIFO_RX);\n+\tChip_FIFO_PauseFifo(LPC_FIFO, periphId, FIFO_TX);\n+\n+\t/* Maximum peripheral FIFOs supported */\n+\tif (periphId == FIFO_USART) {\n+\t\tmaxP = LPC_FIFO_USART_MAX;\n+\t\tupdateReg = &pFIFO->common.FIFOUPDATEUSART;\n+\t\tupDateMask = 0xF | (0xF << 16);\n+\t\tpFifoSizes = &pFIFO->common.FIFOCFGUSART[0];\n+\t\tpFifoPause = &pFIFO->common.FIFOCTLUSART;\n+\t}\n+\telse {\n+\t\tmaxP = LPC_FIFO_SPI_MAX;\n+\t\tupdateReg = &pFIFO->common.FIFOUPDATESPI;\n+\t\tupDateMask = 0x3 | (0x3 << 16);\n+\t\tpFifoSizes = &pFIFO->common.FIFOCFGSPI[0];\n+\t\tpFifoPause = &pFIFO->common.FIFOCTLSPI;\n+\t}\n+\n+\t/* Wait for FIFO pause */\n+\twhile ((*pFifoPause & ((1 << 0) | (1 << 8))) != ((1 << 0) | (1 << 8))) {}\n+\n+\t/* Update FIFO sizes */\n+\tfor (i = 0; i < maxP; i++) {\n+\t\tpFifoSizes[i] = ((uint32_t) (pSizes->fifoRXSize[i]) << 0) |\n+\t\t\t\t\t\t((uint32_t) (pSizes->fifoTXSize[i]) << 8);\n+\t}\n+\n+\t/* Update all peripheral FIFO sizes */\n+\t*updateReg = upDateMask;\n+}\n+\n+/* Configure the USART system FIFO */\n+void Chip_FIFOUSART_Configure(LPC_FIFO_T *pFIFO, int usartIndex, LPC_FIFO_CFG_T *pUSARTCfg)\n+{\n+\tpFIFO->usart[usartIndex].CFG =\n+\t\t(pUSARTCfg->noTimeoutContWrite << 4) |\n+\t\t(pUSARTCfg->noTimeoutContEmpty << 5) |\n+\t\t(pUSARTCfg->timeoutBase << 8) |\n+\t\t(pUSARTCfg->timeoutValue << 12) |\n+\t\t(pUSARTCfg->rxThreshold << 16) |\n+\t\t(pUSARTCfg->txThreshold << 24);\n+}\n+\n+/* Write data to a system FIFO (non-blocking) */\n+int Chip_FIFOUSART_WriteTX(LPC_FIFO_T *pFIFO, int usartIndex, bool sz8, void *buff, int numData)\n+{\n+\tint datumWritten, sz16;\n+\tuint8_t *p8 = (uint8_t *) buff;\n+\tuint16_t *p16 = (uint16_t *) buff;\n+\n+\t/* Get configured FIFO size to determine write size, limit to buffer size */\n+\tsz16 = (pFIFO->usart[usartIndex].STAT >> 24) & 0xFF;\n+\tif (sz16 > numData) {\n+\t\tsz16 = numData;\n+\t}\n+\tdatumWritten = sz16;\n+\n+\t/* Write from buffer */\n+\twhile (sz16 > 0) {\n+\t\tif (sz8) {\n+\t\t\tpFIFO->usart[usartIndex].TXDAT = (uint32_t) *p8;\n+\t\t\tp8++;\n+\t\t}\n+\t\telse {\n+\t\t\tpFIFO->usart[usartIndex].TXDAT = (uint32_t) *p16;\n+\t\t\tp16++;\n+\t\t}\n+\n+\t\tsz16--;\n+\t}\n+\n+\treturn datumWritten;\n+}\n+\n+/* Read data from a system FIFO (non-blocking) */\n+int Chip_FIFOUSART_ReadRX(LPC_FIFO_T *pFIFO, int usartIndex, bool sz8, void *buff, int numData)\n+{\n+\tint datumRead, sz16;\n+\tuint8_t *p8 = (uint8_t *) buff;\n+\tuint16_t *p16 = (uint16_t *) buff;\n+\n+\t/* Get configured FIFO size to determine read size, limit to buffer size */\n+\tsz16 = (pFIFO->usart[usartIndex].STAT >> 16) & 0xFF;\n+\tif (sz16 > numData) {\n+\t\tsz16 = numData;\n+\t}\n+\tdatumRead = sz16;\n+\n+\t/* Read into buffer */\n+\twhile (sz16 > 0) {\n+\t\tif (sz8) {\n+\t\t\t*p8 = (uint8_t) (pFIFO->usart[usartIndex].RXDAT & 0xFF);\n+\t\t\tp8++;\n+\t\t}\n+\t\telse {\n+\t\t\t*p16 = (uint16_t) (pFIFO->usart[usartIndex].RXDAT & 0x1FF);\n+\t\t\tp16++;\n+\t\t}\n+\n+\t\tsz16--;\n+\t}\n+\n+\treturn datumRead;\n+}\n+\n+/* Read data from a system FIFO with status (non-blocking) */\n+int Chip_FIFOUSART_ReadRXStatus(LPC_FIFO_T *pFIFO, int usartIndex, uint16_t *buff, int numData)\n+{\n+\tint datumRead, sz16;\n+\tuint16_t *p16 = (uint16_t *) buff;\n+\n+\t/* Get configured FIFO size to determine read size, limit to buffer size */\n+\tsz16 = (pFIFO->usart[usartIndex].STAT >> 16) & 0xFF;\n+\tif (sz16 > numData) {\n+\t\tsz16 = numData;\n+\t}\n+\tdatumRead = sz16;\n+\n+\t/* Read into buffer */\n+\twhile (sz16 > 0) {\n+\t\t*p16 = (uint16_t) (pFIFO->usart[usartIndex].RXDATSTAT & 0xFFFF);\n+\t\tp16++;\n+\t\tsz16--;\n+\t}\n+\n+\treturn datumRead;\n+}\n+\n+#if 0\t/* Sorry, not yet support */\n+/* Configure the USART system FIFO */\n+void Chip_FIFOSPI_Configure(LPC_FIFO_T *pFIFO, int spiIndex, LPC_FIFO_CFG_T *pSPICfg)\n+{\n+\tpFIFO->spi[spiIndex].CFG =\n+\t\t(pSPICfg->noTimeoutContWrite << 4) |\n+\t\t(pSPICfg->noTimeoutContEmpty << 5) |\n+\t\t(pSPICfg->timeoutBase << 6) |\n+\t\t(pSPICfg->timeoutValue << 12) |\n+\t\t(pSPICfg->rxThreshold << 16) |\n+\t\t(pSPICfg->txThreshold << 24);\n+}\n+\n+/* Start a data transfer (non-blocking) */\n+void Chip_FIFOSPI_StartTransfer(LPC_FIFO_T *pFIFO, LPC_FIFO_SPICTL_T *pSetupData)\n+{\n+\tpSetupData->start = 1;\n+\tChip_FIFOSPI_Transfer(pFIFO, pSetupData);\n+}\n+\n+/* Feed a SPI data transfer (non-blocking) */\n+void Chip_FIFOSPI_Transfer(LPC_FIFO_T *pFIFO, LPC_FIFO_SPICTL_T *pSetupData)\n+{\n+\t// FIXME - not yet ready\n+}\n+\n+#endif\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/fpu_init.c ./chip/src/fpu_init.c\n--- a_tnusFF/chip/src/fpu_init.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/fpu_init.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,96 @@\n+/*\n+ * @brief FPU init code\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#if defined(CORE_M4)\n+\n+#include \"cmsis.h\"\n+#include \"stdint.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define LPC_CPACR           0xE000ED88\n+\n+#define SCB_MVFR0           0xE000EF40\n+#define SCB_MVFR0_RESET     0x10110021\n+\n+#define SCB_MVFR1           0xE000EF44\n+#define SCB_MVFR1_RESET     0x11000011\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Early initialization of the FPU */\n+void fpuInit(void)\n+{\n+#if __FPU_PRESENT != 0\n+\t// from arm trm manual:\n+\t//                ; CPACR is located at address 0xE000ED88\n+\t//                LDR.W R0, =0xE000ED88\n+\t//                ; Read CPACR\n+\t//                LDR R1, [R0]\n+\t//                ; Set bits 20-23 to enable CP10 and CP11 coprocessors\n+\t//                ORR R1, R1, #(0xF << 20)\n+\t//                ; Write back the modified value to the CPACR\n+\t//                STR R1, [R0]\n+\n+\tvolatile uint32_t *regCpacr = (uint32_t *) LPC_CPACR;\n+\tvolatile uint32_t *regMvfr0 = (uint32_t *) SCB_MVFR0;\n+\tvolatile uint32_t *regMvfr1 = (uint32_t *) SCB_MVFR1;\n+\tvolatile uint32_t Cpacr;\n+\tvolatile uint32_t Mvfr0;\n+\tvolatile uint32_t Mvfr1;\n+\tchar vfpPresent = 0;\n+\n+\tMvfr0 = *regMvfr0;\n+\tMvfr1 = *regMvfr1;\n+\n+\tvfpPresent = ((SCB_MVFR0_RESET == Mvfr0) && (SCB_MVFR1_RESET == Mvfr1));\n+\n+\tif (vfpPresent) {\n+\t\tCpacr = *regCpacr;\n+\t\tCpacr |= (0xF << 20);\n+\t\t*regCpacr = Cpacr;\t// enable CP10 and CP11 for full access\n+\t}\n+#endif /* __FPU_PRESENT != 0 */\n+}\n+\n+#endif /* defined(CORE_M4 */\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/gpio_5410x.c ./chip/src/gpio_5410x.c\n--- a_tnusFF/chip/src/gpio_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/gpio_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,108 @@\n+/*\n+ * @brief LPC5410X GPIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* GPIO initilisation function */\n+void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_GPIO0);\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_GPIO1);\n+\tChip_SYSCON_PeriphReset(RESET_GPIO0);\n+\tChip_SYSCON_PeriphReset(RESET_GPIO1);\n+}\n+\n+/* GPIO deinitialisation function */\n+void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_GPIO0);\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_GPIO1);\n+}\n+\n+/* Set GPIO direction for a single GPIO pin */\n+void Chip_GPIO_WriteDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t pin, bool setting)\n+{\n+\tif (setting) {\n+\t\tpGPIO->DIR[port] |= 1UL << pin;\n+\t}\n+\telse {\n+\t\tpGPIO->DIR[port] &= ~(1UL << pin);\n+\t}\n+}\n+\n+/* Set GPIO direction for a single GPIO pin */\n+void Chip_GPIO_SetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool output)\n+{\n+\tif (output) {\n+\t\tChip_GPIO_SetPinDIROutput(pGPIO, port, pin);\n+\t}\n+\telse {\n+\t\tChip_GPIO_SetPinDIRInput(pGPIO, port, pin);\n+\t}\n+}\n+\n+/* Set Direction for a GPIO port */\n+void Chip_GPIO_SetDir(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue, uint8_t out)\n+{\n+\tif (out) {\n+\t\tpGPIO->DIR[portNum] |= bitValue;\n+\t}\n+\telse {\n+\t\tpGPIO->DIR[portNum] &= ~bitValue;\n+\t}\n+}\n+\n+/* Set GPIO direction for a all selected GPIO pins to an input or output */\n+void Chip_GPIO_SetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask, bool outSet)\n+{\n+\tif (outSet) {\n+\t\tChip_GPIO_SetPortDIROutput(pGPIO, port, pinMask);\n+\t}\n+\telse {\n+\t\tChip_GPIO_SetPortDIRInput(pGPIO, port, pinMask);\n+\t}\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/gpiogroup_5410x.c ./chip/src/gpiogroup_5410x.c\n--- a_tnusFF/chip/src/gpiogroup_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/gpiogroup_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,48 @@\n+/*\n+ * @brief LPC5410x GPIO group driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/i2cm_5410x.c ./chip/src/i2cm_5410x.c\n--- a_tnusFF/chip/src/i2cm_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/i2cm_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,226 @@\n+/*\n+ * @brief LPC5410x I2C master driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Sets HIGH and LOW duty cycle registers */\n+void Chip_I2CM_SetDutyCycle(LPC_I2C_T *pI2C, uint16_t sclH, uint16_t sclL)\n+{\n+\t/* Limit to usable range of timing values */\n+\tif (sclH < 2) {\n+\t\tsclH = 2;\n+\t}\n+\telse if (sclH > 9) {\n+\t\tsclH = 9;\n+\t}\n+\tif (sclL < 2) {\n+\t\tsclL = 2;\n+\t}\n+\telse if (sclL > 9) {\n+\t\tsclL = 9;\n+\t}\n+\n+\tpI2C->MSTTIME = (((sclH - 2) & 0x07) << 4) | ((sclL - 2) & 0x07);\n+}\n+\n+/* Set up bus speed for LPC_I2C interface */\n+void Chip_I2CM_SetBusSpeed(LPC_I2C_T *pI2C, uint32_t busSpeed)\n+{\n+\tuint32_t scl;\n+\n+\tscl = Chip_Clock_GetAsyncSyscon_ClockRate() / (Chip_I2C_GetClockDiv(pI2C) * busSpeed);\n+\tChip_I2CM_SetDutyCycle(pI2C, (scl >> 1), (scl - (scl >> 1)));\n+}\n+\n+/* Master transfer state change handler handler */\n+uint32_t Chip_I2CM_XferHandler(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+\tuint32_t status = Chip_I2CM_GetStatus(pI2C);\n+\n+\tif (status & I2C_STAT_MSTRARBLOSS) {\n+\t\t/* Master Lost Arbitration */\n+\t\t/* Set transfer status as Arbitration Lost */\n+\t\txfer->status = I2CM_STATUS_ARBLOST;\n+\t\t/* Clear Status Flags */\n+\t\tChip_I2CM_ClearStatus(pI2C, I2C_STAT_MSTRARBLOSS);\n+\t\t/* Master continue */\n+\t\tif (status & I2C_STAT_MSTPENDING) {\n+\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE;\n+\t\t}\n+\t}\n+\telse if (status & I2C_STAT_MSTSTSTPERR) {\n+\t\t/* Master Start Stop Error */\n+\t\t/* Set transfer status as Bus Error */\n+\t\txfer->status = I2CM_STATUS_BUS_ERROR;\n+\t\t/* Clear Status Flags */\n+\t\tChip_I2CM_ClearStatus(pI2C, I2C_STAT_MSTSTSTPERR);\n+\n+\t\t/* Master continue */\n+\t\tif (status & I2C_STAT_MSTPENDING) {\n+\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE;\n+\t\t}\n+\t}\n+\telse if (status & I2C_STAT_MSTPENDING) {\n+\t\t/* Master is Pending */\n+\t\t/* Branch based on Master State Code */\n+\t\tswitch (Chip_I2CM_GetMasterState(pI2C)) {\n+\t\tcase I2C_STAT_MSTCODE_IDLE:\t/* Master idle */\n+\t\t\t/* Can transition to idle between transmit and receive states */\n+\t\t\tif (xfer->txSz) {\n+\t\t\t\t/* Start transmit state */\n+\t\t\t\tChip_I2CM_WriteByte(pI2C, (xfer->slaveAddr << 1));\n+\t\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTSTART;\n+\t\t\t}\n+\t\t\telse if (xfer->rxSz) {\n+\t\t\t\t/* Start receive state with start ot repeat start */\n+\t\t\t\tChip_I2CM_WriteByte(pI2C, (xfer->slaveAddr << 1) | 0x1);\n+\t\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTSTART;\n+\t\t\t}\n+\t\t\telse {\n+\t\t\t\t/* No data to send, done */\n+\t\t\t\txfer->status = I2CM_STATUS_OK;\n+\t\t\t}\n+\t\t\tbreak;\n+\n+\t\tcase I2C_STAT_MSTCODE_RXREADY:\t/* Receive data is available */\n+\t\t\t/* Read Data up until the buffer size */\n+\t\t\tif (xfer->rxSz) {\n+\t\t\t\t*xfer->rxBuff = pI2C->MSTDAT;\n+\t\t\t\txfer->rxBuff++;\n+\t\t\t\txfer->rxSz--;\n+\t\t\t}\n+\n+\t\t\tif (xfer->rxSz) {\n+\t\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE;\n+\t\t\t}\n+\t\t\telse {\n+\t\t\t\t/* Last byte to receive, send stop after byte received */\n+\t\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE | I2C_MSTCTL_MSTSTOP;\n+\t\t\t}\n+\t\t\tbreak;\n+\n+\t\tcase I2C_STAT_MSTCODE_TXREADY:\t/* Master Transmit available */\n+\t\t\tif (xfer->txSz) {\n+\t\t\t\t/* If Tx data available transmit data and continue */\n+\t\t\t\tpI2C->MSTDAT = (uint32_t) *xfer->txBuff;\n+\t\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE;\n+\t\t\t\txfer->txBuff++;\n+\t\t\t\txfer->txSz--;\n+\t\t\t}\n+\t\t\telse if (xfer->rxSz == 0) {\n+\t\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTSTOP;\n+\t\t\t}\n+\t\t\telse {\n+\t\t\t\t/* Start receive state with start ot repeat start */\n+\t\t\t\tChip_I2CM_WriteByte(pI2C, (xfer->slaveAddr << 1) | 0x1);\n+\t\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTSTART;\n+\t\t\t}\n+\t\t\tbreak;\n+\n+\t\tcase I2C_STAT_MSTCODE_NACKADR:\t/* Slave address was NACK'ed */\n+\t\t\t/* Set transfer status as NACK on address */\n+\t\t\txfer->status = I2CM_STATUS_NAK_ADR;\n+\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTSTOP;\n+\t\t\tbreak;\n+\n+\t\tcase I2C_STAT_MSTCODE_NACKDAT:\t/* Slave data was NACK'ed */\n+\t\t\t/* Set transfer status as NACK on data */\n+\t\t\txfer->status = I2CM_STATUS_NAK_DAT;\n+\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTSTOP;\n+\t\t\tbreak;\n+\n+\t\tdefault:\n+\t\t\t/* Illegal I2C master state machine case. This should never happen.\n+\t\t\t     Try to advance state machine by continuing. */\n+\t\t\txfer->status = I2CM_STATUS_ERROR;\n+\t\t\tpI2C->MSTCTL = I2C_MSTCTL_MSTCONTINUE;\n+\t\t\tbreak;\n+\t\t}\n+\t}\n+\telse {\n+\t\t/* Unsupported operation. This may be a call to the master handler\n+\t\t     for a wrong interrupt type. This handler should only be called when a\n+\t\t     master arbitration loss, master start/stop error, or master pending status\n+\t\t     occurs. */\n+\t\txfer->status = I2CM_STATUS_ERROR;\n+\t}\n+\n+\treturn xfer->status != I2CM_STATUS_BUSY;\n+}\n+\n+/* Transmit and Receive data in master mode */\n+void Chip_I2CM_Xfer(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+\t/* set the transfer status as busy */\n+\txfer->status = I2CM_STATUS_BUSY;\n+\n+\t/* Reset master state machine */\n+\tChip_I2CM_Disable(pI2C);\n+\tChip_I2CM_Enable(pI2C);\n+\n+\t/* Clear controller state. */\n+\tChip_I2CM_ClearStatus(pI2C, I2C_STAT_MSTRARBLOSS | I2C_STAT_MSTSTSTPERR);\n+\n+\t/* Handle transfer via initial call to handler */\n+\tChip_I2CM_XferHandler(pI2C, xfer);\n+}\n+\n+/* Transmit and Receive data in master mode */\n+uint32_t Chip_I2CM_XferBlocking(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+\t/* start transfer */\n+\tChip_I2CM_Xfer(pI2C, xfer);\n+\n+\twhile (xfer->status == I2CM_STATUS_BUSY) {\n+\t\t/* wait for status change interrupt */\n+\t\twhile (!Chip_I2CM_IsMasterPending(pI2C)) {}\n+\t\t/* call state change handler */\n+\t\tChip_I2CM_XferHandler(pI2C, xfer);\n+\t}\n+\n+\treturn xfer->status == I2CM_STATUS_OK;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/i2cs_5410x.c ./chip/src/i2cs_5410x.c\n--- a_tnusFF/chip/src/i2cs_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/i2cs_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,104 @@\n+/*\n+ * @brief LPC5410x I2C slave driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Slave transfer state change handler */\n+uint32_t Chip_I2CS_XferHandler(LPC_I2C_T *pI2C, const I2CS_XFER_T *xfers)\n+{\n+\tuint32_t done = 0, xferDone = 0;\n+\n+\tuint8_t data;\n+\tuint32_t state;\n+\n+\t/* Transfer complete? */\n+\tif ((Chip_I2C_GetPendingInt(pI2C) & I2C_INTENSET_SLVDESEL) != 0) {\n+\t\tChip_I2CS_ClearStatus(pI2C, I2C_STAT_SLVDESEL);\n+\t\txfers->slaveDone();\n+\t\txferDone = 1;\n+\t}\n+\telse {\n+\t\t/* Determine the current I2C slave state */\n+\t\tstate = Chip_I2CS_GetSlaveState(pI2C);\n+\n+\t\tswitch (state) {\n+\t\tcase I2C_STAT_SLVCODE_ADDR:\t\t/* Slave address received */\n+\t\t\t/* Get slave address that needs servicing */\n+\t\t\tdata = Chip_I2CS_GetSlaveAddr(pI2C, Chip_I2CS_GetSlaveMatchIndex(pI2C));\n+\n+\t\t\t/* Call address callback */\n+\t\t\txfers->slaveStart(data);\n+\t\t\tbreak;\n+\n+\t\tcase I2C_STAT_SLVCODE_RX:\t\t/* Data byte received, not used with DMA */\n+\t\t\t/* Get received data */\n+\t\t\tdata = Chip_I2CS_ReadByte(pI2C);\n+\t\t\tdone = xfers->slaveRecv(data);\n+\t\t\tbreak;\n+\n+\t\tcase I2C_STAT_SLVCODE_TX:\t\t/* Get byte that needs to be sent, or start DMA */\n+\t\t\t/* Get data to send */\n+\t\t\tdone = xfers->slaveSend(&data);\n+\t\t\tif (!((done == I2C_SLVCTL_SLVNACK) || (done == I2C_SLVCTL_SLVDMA))) {\n+\t\t\t\tChip_I2CS_WriteByte(pI2C, data);\n+\t\t\t}\n+\t\t\tbreak;\n+\t\t}\n+\n+\t\tif (done == I2C_SLVCTL_SLVNACK) {\n+\t\t\tChip_I2CS_SlaveNACK(pI2C);\n+\t\t}\n+\t\telse if (done == I2C_SLVCTL_SLVDMA) {\n+\t\t\tChip_I2CS_SlaveEnableDMA(pI2C);\n+\t\t}\n+\t\telse {\n+\t\t\tChip_I2CS_SlaveContinue(pI2C);\n+\t\t}\n+\t}\n+\n+\treturn xferDone;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/iap.c ./chip/src/iap.c\n--- a_tnusFF/chip/src/iap.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/iap.c\t2016-10-22 23:23:55.480850238 -0300\n@@ -0,0 +1,175 @@\n+/*\n+ * @brief Common FLASH support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Prepare sector for write operation */\n+uint8_t Chip_IAP_PreSectorForReadWrite(uint32_t strSector, uint32_t endSector)\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_PREWRRITE_CMD;\n+\tcommand[1] = strSector;\n+\tcommand[2] = endSector;\n+\tiap_entry(command, result);\n+\n+\treturn result[0];\n+}\n+\n+/* Copy RAM to flash */\n+uint8_t Chip_IAP_CopyRamToFlash(uint32_t dstAdd, uint32_t *srcAdd, uint32_t byteswrt)\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_WRISECTOR_CMD;\n+\tcommand[1] = dstAdd;\n+\tcommand[2] = (uint32_t) srcAdd;\n+\tcommand[3] = byteswrt;\n+\tcommand[4] = SystemCoreClock / 1000;\n+\tiap_entry(command, result);\n+\n+\treturn result[0];\n+}\n+\n+/* Erase sector */\n+uint8_t Chip_IAP_EraseSector(uint32_t strSector, uint32_t endSector)\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_ERSSECTOR_CMD;\n+\tcommand[1] = strSector;\n+\tcommand[2] = endSector;\n+\tcommand[3] = SystemCoreClock / 1000;\n+\tiap_entry(command, result);\n+\n+\treturn result[0];\n+}\n+\n+/* Blank check sector */\n+uint8_t Chip_IAP_BlankCheckSector(uint32_t strSector, uint32_t endSector)\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_BLANK_CHECK_SECTOR_CMD;\n+\tcommand[1] = strSector;\n+\tcommand[2] = endSector;\n+\tiap_entry(command, result);\n+\n+\treturn result[0];\n+}\n+\n+/* Read part identification number */\n+uint32_t Chip_IAP_ReadPID()\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_REPID_CMD;\n+\tiap_entry(command, result);\n+\n+\treturn result[1];\n+}\n+\n+/* Read boot code version number */\n+uint8_t Chip_IAP_ReadBootCode()\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_READ_BOOT_CODE_CMD;\n+\tiap_entry(command, result);\n+\n+\treturn result[0];\n+}\n+\n+/* IAP compare */\n+uint8_t Chip_IAP_Compare(uint32_t dstAdd, uint32_t srcAdd, uint32_t bytescmp)\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_COMPARE_CMD;\n+\tcommand[1] = dstAdd;\n+\tcommand[2] = srcAdd;\n+\tcommand[3] = bytescmp;\n+\tiap_entry(command, result);\n+\n+\treturn result[0];\n+}\n+\n+/* Reinvoke ISP */\n+uint8_t Chip_IAP_ReinvokeISP()\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_REINVOKE_ISP_CMD;\n+\tiap_entry(command, result);\n+\n+\treturn result[0];\n+}\n+\n+/* Read the unique ID */\n+uint32_t Chip_IAP_ReadUID()\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_READ_UID_CMD;\n+\tiap_entry(command, result);\n+\n+\treturn result[1];\n+}\n+\n+/* Erase page */\n+uint8_t Chip_IAP_ErasePage(uint32_t strPage, uint32_t endPage)\n+{\n+\tunsigned int command[5], result[4];\n+\n+\tcommand[0] = IAP_ERASE_PAGE_CMD;\n+\tcommand[1] = strPage;\n+\tcommand[2] = endPage;\n+\tcommand[3] = SystemCoreClock / 1000;\n+\tiap_entry(command, result);\n+\n+\treturn result[0];\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/iocon_5410x.c ./chip/src/iocon_5410x.c\n--- a_tnusFF/chip/src/iocon_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/iocon_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,58 @@\n+/*\n+ * @brief LPC5410X IOCON driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set all I/O Control pin muxing */\n+void Chip_IOCON_SetPinMuxing(LPC_IOCON_T *pIOCON, const PINMUX_GRP_T *pinArray, uint32_t arrayLength)\n+{\n+\tuint32_t ix;\n+\n+\tfor (ix = 0; ix < arrayLength; ix++ ) {\n+\t\tChip_IOCON_PinMuxSet(pIOCON, pinArray[ix].port, pinArray[ix].pin, pinArray[ix].modefunc);\n+\t}\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/pinint_5410x.c ./chip/src/pinint_5410x.c\n--- a_tnusFF/chip/src/pinint_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/pinint_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,79 @@\n+/*\n+ * @brief LPC5410X Pin Interrupt and Pattern Match Registers and driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set source for pattern match engine */\n+void Chip_PININT_SetPatternMatchSrc(LPC_PIN_INT_T *pPININT,\n+\t\t\t\t\t\t\t\t\tChip_PININT_SELECT_T channelNum,\n+\t\t\t\t\t\t\t\t\tChip_PININT_BITSLICE_T sliceNum)\n+{\n+\tuint32_t pmsrc_reg;\n+\n+\t/* Source source for pattern matching */\n+\tpmsrc_reg = pPININT->PMSRC & ~(PININT_SRC_BITSOURCE_MASK << (PININT_SRC_BITSOURCE_START + (sliceNum * 3)));\n+\tpPININT->PMSRC = pmsrc_reg | (channelNum << (PININT_SRC_BITSOURCE_START + (sliceNum * 3)));\n+}\n+\n+/* Configure Pattern match engine */\n+void Chip_PININT_SetPatternMatchConfig(LPC_PIN_INT_T *pPININT, Chip_PININT_BITSLICE_T sliceNum,\n+\t\t\t\t\t\t\t\t\t   Chip_PININT_BITSLICE_CFG_T slice_cfg, bool end_point)\n+{\n+\tuint32_t pmcfg_reg;\n+\n+\t/* Configure bit slice configuration */\n+\tpmcfg_reg = pPININT->PMCFG & ~(PININT_SRC_BITCFG_MASK << (PININT_SRC_BITCFG_START + (sliceNum * 3)));\n+\tpPININT->PMCFG = pmcfg_reg | (slice_cfg << (PININT_SRC_BITCFG_START + (sliceNum * 3)));\n+\n+\t/* If end point is true, enable the bits */\n+\tif (end_point == true) {\n+\t\t/* By default slice 7 is final component */\n+\t\tif (sliceNum != PININTBITSLICE7) {\n+\t\t\tpPININT->PMCFG |= (0x1 << sliceNum);\n+\t\t}\n+\t}\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/pll_5410x.c ./chip/src/pll_5410x.c\n--- a_tnusFF/chip/src/pll_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/pll_5410x.c\t2016-10-22 23:17:43.580840278 -0300\n@@ -0,0 +1,884 @@\n+/*\n+ * @brief LPC5410X PLL driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define NVALMAX                     (0x100)\n+#define PVALMAX                     (0x20)\n+#define MVALMAX                     (0x8000)\n+\n+/* SYS PLL related bit fields */\n+#define SYS_PLL_SELR(d)             (((d) & 0xf) << 0)\t\t/*!< Bandwidth select R value */\n+#define SYS_PLL_SELI(d)             (((d) & 0x3f) << 4)\t\t/*!< Bandwidth select I value */\n+#define SYS_PLL_SELP(d)             (((d) & 0x1f) << 10)\t/*!< Bandwidth select P value */\n+#define SYS_PLL_BYPASS              (1 << 15)\t\t\t\t/*!< Enable PLL bypass */\n+#define SYS_PLL_BYPASSCCODIV2       (1 << 16)\t\t\t\t/*!< Enable bypass of extra divider by 2 */\n+#define SYS_PLL_UPLIMOFF            (1 << 17)\t\t\t\t/*!< Enable spread spectrum/fractional mode */\n+#define SYS_PLL_BANDSEL             (1 << 18)\t\t\t\t/*!< Enable MDEC control */\n+#define SYS_PLL_DIRECTI             (1 << 19)\t\t\t\t/*!< PLL0 direct input enable */\n+#define SYS_PLL_DIRECTO             (1 << 20)\t\t\t\t/*!< PLL0 direct output enable */\n+\n+// #define FRAC_BITS_SELI\t\t\t(8)\t\t// For retaining fractions in divisions\n+#define PLL_SSCG0_MDEC_VAL_P    (0)\t\t\t// MDEC is in bits  16 downto 0\n+#define PLL_SSCG0_MDEC_VAL_M    (0x1FFFFUL << PLL_SSCG0_MDEC_VAL_P)\t\t// NDEC is in bits  9 downto 0\n+#define PLL_NDEC_VAL_P          (0)\t\t\t// NDEC is in bits  9:0\n+#define PLL_NDEC_VAL_M          (0x3FFUL << PLL_NDEC_VAL_P)\n+#define PLL_PDEC_VAL_P          (0)\t\t\t// PDEC is in bits 6:0\n+#define PLL_PDEC_VAL_M          (0x3FFUL << PLL_PDEC_VAL_P)\n+\n+#define PLL_MIN_CCO_FREQ_MHZ    (75000000)\n+#define PLL_MAX_CCO_FREQ_MHZ    (150000000)\n+#define PLL_LOWER_IN_LIMIT      (4000)\t\t\t\t/*!< Minimum PLL input rate */\n+#define PLL_MIN_IN_SSMODE       (2000000)\n+#define PLL_MAX_IN_SSMODE       (4000000)\n+\n+// Middle of the range values for spread-spectrum\n+#define PLL_SSCG_MF_FREQ_VALUE                               4\n+#define PLL_SSCG_MC_COMP_VALUE                               2\n+#define PLL_SSCG_MR_DEPTH_VALUE                              4\n+#define PLL_SSCG_DITHER_VALUE                                0\n+\n+// pll SYSPLLCTRL Bits\n+#define SYSCON_SYSPLLCTRL_SELR_P                                0\n+#define SYSCON_SYSPLLCTRL_SELR_M                                (0xFUL << SYSCON_SYSPLLCTRL_SELR_P)\n+#define SYSCON_SYSPLLCTRL_SELI_P                                4\n+#define SYSCON_SYSPLLCTRL_SELI_M                                (0x3FUL << SYSCON_SYSPLLCTRL_SELI_P)\n+#define SYSCON_SYSPLLCTRL_SELP_P                                10\n+#define SYSCON_SYSPLLCTRL_SELP_M                                (0x1FUL << SYSCON_SYSPLLCTRL_SELP_P)\n+#define SYSCON_SYSPLLCTRL_BYPASS_P                          15\t\t// sys_pll150_ctrl\n+#define SYSCON_SYSPLLCTRL_BYPASS                                (1UL << SYSCON_SYSPLLCTRL_BYPASS_P)\n+#define SYSCON_SYSPLLCTRL_BYPASS_FBDIV2_P               16\n+#define SYSCON_SYSPLLCTRL_BYPASS_FBDIV2                 (1UL << SYSCON_SYSPLLCTRL_BYPASS_FBDIV2_P)\n+#define SYSCON_SYSPLLCTRL_UPLIMOFF_P                        17\n+#define SYSCON_SYSPLLCTRL_UPLIMOFF                          (1UL << SYSCON_SYSPLLCTRL_UPLIMOFF_P)\n+#define SYSCON_SYSPLLCTRL_BANDSEL_SSCGREG_N_P       18\n+#define SYSCON_SYSPLLCTRL_BANDSEL_SSCGREG_N         (1UL << SYSCON_SYSPLLCTRL_BANDSEL_SSCGREG_N_P)\n+#define SYSCON_SYSPLLCTRL_DIRECTI_P                         19\n+#define SYSCON_SYSPLLCTRL_DIRECTI                               (1UL << SYSCON_SYSPLLCTRL_DIRECTI_P)\n+#define SYSCON_SYSPLLCTRL_DIRECTO_P                         20\n+#define SYSCON_SYSPLLCTRL_DIRECTO                               (1UL << SYSCON_SYSPLLCTRL_DIRECTO_P)\n+\n+#define SYSCON_SYSPLLSTAT_LOCK_P                                0\n+#define SYSCON_SYSPLLSTAT_LOCK                              (1UL << SYSCON_SYSPLLSTAT_LOCK_P)\n+\n+#define PLL_CTRL_BYPASS_P                                                  15\t\t// sys_pll150_ctrl\n+#define PLL_CTRL_BYPASS_FBDIV2_P                                           16\n+#define PLL_CTRL_UPLIMOFF_P                                                17\n+#define PLL_CTRL_BANDSEL_SSCGREG_N_P                                       18\n+#define PLL_CTRL_DIRECTI_P                                                 19\n+#define PLL_CTRL_DIRECTO_P                                                 20\n+\n+#define PLL_CTRL_BYPASS                                                    (1 << PLL_CTRL_BYPASS_P)\n+#define PLL_CTRL_DIRECTI                                                   (1 << PLL_CTRL_DIRECTI_P)\n+#define PLL_CTRL_DIRECTO                                                   (1 << PLL_CTRL_DIRECTO_P)\n+#define PLL_CTRL_UPLIMOFF                                                  (1 << PLL_CTRL_UPLIMOFF_P)\n+#define PLL_CTRL_BANDSEL_SSCGREG_N                                         (1 << PLL_CTRL_BANDSEL_SSCGREG_N_P)\n+#define PLL_CTRL_BYPASS_FBDIV2                                             (1 << PLL_CTRL_BYPASS_FBDIV2_P)\n+\n+// SSCG control[0]\n+// #define PLL_SSCG0_MDEC_VAL_P                                                0    // MDEC is in bits  16 downto 0\n+#define PLL_SSCG0_MREQ_P                                                   17\n+#define PLL_SSCG0_SEL_EXT_SSCG_N_P                                         18\n+#define PLL_SSCG0_SEL_EXT_SSCG_N                                           (1 << PLL_SSCG0_SEL_EXT_SSCG_N_P)\n+#define PLL_SSCG0_MREQ                                                     (1 << PLL_SSCG0_MREQ_P)\n+\n+// SSCG control[1]\n+#define PLL_SSCG1_MD_REQ_P                                                 19\n+#define PLL_SSCG1_MOD_PD_SSCGCLK_N_P                                       28\n+#define PLL_SSCG1_DITHER_P                                                 29\n+#define PLL_SSCG1_MOD_PD_SSCGCLK_N                                         (1 << PLL_SSCG1_MOD_PD_SSCGCLK_N_P)\n+#define PLL_SSCG1_DITHER                                                   (1 << PLL_SSCG1_DITHER_P)\n+#define PLL_SSCG1_MD_REQ                                                   (1 << PLL_SSCG1_MD_REQ_P)\n+\n+// PLL NDEC reg\n+#define PLL_NDEC_VAL_SET(value)                     (((unsigned long) (value) << PLL_NDEC_VAL_P) & PLL_NDEC_VAL_M)\n+#define PLL_NDEC_NREQ_P                                     10\n+#define PLL_NDEC_NREQ                                           (1 << PLL_NDEC_NREQ_P)\n+\n+// PLL PDEC reg\n+#define PLL_PDEC_VAL_SET(value)                     (((unsigned long) (value) << PLL_PDEC_VAL_P) & PLL_PDEC_VAL_M)\n+#define PLL_PDEC_PREQ_P                                     7\n+#define PLL_PDEC_PREQ                                           (1 << PLL_PDEC_PREQ_P)\n+\n+// SSCG control[0]\n+#define PLL_SSCG0_MDEC_VAL_SET(value)        (((unsigned long) (value) << PLL_SSCG0_MDEC_VAL_P) & PLL_SSCG0_MDEC_VAL_M)\n+#define PLL_SSCG0_MREQ_P                     17\n+#define PLL_SSCG0_MREQ                       (1 << PLL_SSCG0_MREQ_P)\n+#define PLL_SSCG0_SEL_EXT_SSCG_N_P           18\n+#define PLL_SSCG0_SEL_EXT_SSCG_N             (1 << PLL_SSCG0_SEL_EXT_SSCG_N_P)\n+\n+// SSCG control[1]\n+#define PLL_SSCG1_MD_FRACT_P                                        0\n+#define PLL_SSCG1_MD_INT_P                                          11\n+#define PLL_SSCG1_MF_P                                              20\n+#define PLL_SSCG1_MC_P                                              26\n+#define PLL_SSCG1_MR_P                                              23\n+\n+#define PLL_SSCG1_MD_FRACT_M                                        (0x7FFUL << PLL_SSCG1_MD_FRACT_P)\n+#define PLL_SSCG1_MD_INT_M                                          (0xFFUL << PLL_SSCG1_MD_INT_P)\n+#define PLL_SSCG1_MF_M                                              (0x7UL << PLL_SSCG1_MF_P)\n+#define PLL_SSCG1_MC_M                                              (0x3UL << PLL_SSCG1_MC_P)\n+#define PLL_SSCG1_MR_M                                              (0x7UL << PLL_SSCG1_MR_P)\n+\n+#define PLL_SSCG1_MD_FRACT_SET(value)                               (((unsigned long) (value) << \\\n+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  PLL_SSCG1_MD_FRACT_P) & PLL_SSCG1_MD_FRACT_M)\n+#define PLL_SSCG1_MD_INT_SET(value)                                 (((unsigned long) (value) << \\\n+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t  PLL_SSCG1_MD_INT_P)   & PLL_SSCG1_MD_INT_M)\n+\n+// Middle of the range values for spread-spectrum\n+#define PLL0_SSCG_MF_FREQ_VALUE     4\n+#define PLL0_SSCG_MC_COMP_VALUE     2\n+#define PLL0_SSCG_MR_DEPTH_VALUE    4\n+#define PLL0_SSCG_DITHER_VALUE      0\n+\n+#define PLL_MAX_N_DIV       0x100\n+\n+/* Saved value of PLL output rate, computed whenever needed to save run-time\n+   computation on each call to retrive the PLL rate. */\n+static uint32_t curPllRate;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Find encoded NDEC value for raw N value, max N = NVALMAX */\n+static uint32_t pllEncodeN(uint32_t N)\n+{\n+\tuint32_t x, i;\n+\n+\t/* Find NDec */\n+\tswitch (N) {\n+\tcase 0:\n+\t\tx = 0x3FF;\n+\t\tbreak;\n+\n+\tcase 1:\n+\t\tx = 0x302;\n+\t\tbreak;\n+\n+\tcase 2:\n+\t\tx = 0x202;\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tx = 0x080;\n+\t\tfor (i = N; i <= NVALMAX; i++) {\n+\t\t\tx = (((x ^ (x >> 2) ^ (x >> 3) ^ (x >> 4)) & 1) << 7) | ((x >> 1) & 0x7F);\n+\t\t}\n+\t\tbreak;\n+\t}\n+\n+\treturn x & (PLL_NDEC_VAL_M >> PLL_NDEC_VAL_P);\n+}\n+\n+/* Find decoded N value for raw NDEC value */\n+static uint32_t pllDecodeN(uint32_t NDEC)\n+{\n+\tuint32_t n, x, i;\n+\n+\t/* Find NDec */\n+\tswitch (NDEC) {\n+\tcase 0x3FF:\n+\t\tn = 0;\n+\t\tbreak;\n+\n+\tcase 0x302:\n+\t\tn = 1;\n+\t\tbreak;\n+\n+\tcase 0x202:\n+\t\tn = 2;\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tx = 0x080;\n+\t\tn = 0xFFFFFFFF;\n+\t\tfor (i = NVALMAX; ((i >= 3) && (n == 0xFFFFFFFF)); i--) {\n+\t\t\tx = (((x ^ (x >> 2) ^ (x >> 3) ^ (x >> 4)) & 1) << 7) | ((x >> 1) & 0x7F);\n+\t\t\tif ((x & (PLL_NDEC_VAL_M >> PLL_NDEC_VAL_P)) == NDEC) {\n+\t\t\t\t/* Decoded value of NDEC */\n+\t\t\t\tn = i;\n+\t\t\t}\n+\t\t}\n+\t\tbreak;\n+\t}\n+\n+\treturn n;\n+}\n+\n+/* Find encoded PDEC value for raw P value, max P = PVALMAX */\n+static uint32_t pllEncodeP(uint32_t P)\n+{\n+\tuint32_t x, i;\n+\n+\t/* Find PDec */\n+\tswitch (P) {\n+\tcase 0:\n+\t\tx = 0xFF;\n+\t\tbreak;\n+\n+\tcase 1:\n+\t\tx = 0x62;\n+\t\tbreak;\n+\n+\tcase 2:\n+\t\tx = 0x42;\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tx = 0x10;\n+\t\tfor (i = P; i <= PVALMAX; i++) {\n+\t\t\tx = (((x ^ (x >> 2)) & 1) << 4) | ((x >> 1) & 0xF);\n+\t\t}\n+\t\tbreak;\n+\t}\n+\n+\treturn x & (PLL_PDEC_VAL_M >> PLL_PDEC_VAL_P);\n+}\n+\n+/* Find decoded P value for raw PDEC value */\n+static uint32_t pllDecodeP(uint32_t PDEC)\n+{\n+\tuint32_t p, x, i;\n+\n+\t/* Find PDec */\n+\tswitch (PDEC) {\n+\tcase 0xFF:\n+\t\tp = 0;\n+\t\tbreak;\n+\n+\tcase 0x62:\n+\t\tp = 1;\n+\t\tbreak;\n+\n+\tcase 0x42:\n+\t\tp = 2;\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tx = 0x10;\n+\t\tp = 0xFFFFFFFF;\n+\t\tfor (i = PVALMAX; ((i >= 3) && (p == 0xFFFFFFFF)); i--) {\n+\t\t\tx = (((x ^ (x >> 2)) & 1) << 4) | ((x >> 1) & 0xF);\n+\t\t\tif ((x & (PLL_PDEC_VAL_M >> PLL_PDEC_VAL_P)) == PDEC) {\n+\t\t\t\t/* Decoded value of PDEC */\n+\t\t\t\tp = i;\n+\t\t\t}\n+\t\t}\n+\t\tbreak;\n+\t}\n+\n+\treturn p;\n+}\n+\n+/* Find encoded MDEC value for raw M value, max M = MVALMAX */\n+static uint32_t pllEncodeM(uint32_t M)\n+{\n+\tuint32_t i, x;\n+\n+\t/* Find MDec */\n+\tswitch (M) {\n+\tcase 0:\n+\t\tx = 0x1FFFF;\n+\t\tbreak;\n+\n+\tcase 1:\n+\t\tx = 0x18003;\n+\t\tbreak;\n+\n+\tcase 2:\n+\t\tx = 0x10003;\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tx = 0x04000;\n+\t\tfor (i = M; i <= MVALMAX; i++) {\n+\t\t\tx = (((x ^ (x >> 1)) & 1) << 14) | ((x >> 1) & 0x3FFF);\n+\t\t}\n+\t\tbreak;\n+\t}\n+\n+\treturn x & (PLL_SSCG0_MDEC_VAL_M >> PLL_SSCG0_MDEC_VAL_P);\n+}\n+\n+/* Find decoded M value for raw MDEC value */\n+static uint32_t pllDecodeM(uint32_t MDEC)\n+{\n+\tuint32_t m, i, x;\n+\n+\t/* Find MDec */\n+\tswitch (MDEC) {\n+\tcase 0x1FFFF:\n+\t\tm = 0;\n+\t\tbreak;\n+\n+\tcase 0x18003:\n+\t\tm = 1;\n+\t\tbreak;\n+\n+\tcase 0x10003:\n+\t\tm = 2;\n+\t\tbreak;\n+\n+\tdefault:\n+\t\tx = 0x04000;\n+\t\tm = 0xFFFFFFFF;\n+\t\tfor (i = MVALMAX; ((i >= 3) && (m == 0xFFFFFFFF)); i--) {\n+\t\t\tx = (((x ^ (x >> 1)) & 1) << 14) | ((x >> 1) & 0x3FFF);\n+\t\t\tif ((x & (PLL_SSCG0_MDEC_VAL_M >> PLL_SSCG0_MDEC_VAL_P)) == MDEC) {\n+\t\t\t\t/* Decoded value of MDEC */\n+\t\t\t\tm = i;\n+\t\t\t}\n+\t\t}\n+\t\tbreak;\n+\t}\n+\n+\treturn m;\n+}\n+\n+/* Find SELP, SELI, and SELR values for raw M value, max M = MVALMAX */\n+static void pllFindSel(uint32_t M, bool bypassFBDIV2, uint32_t *pSelP, uint32_t *pSelI, uint32_t *pSelR)\n+{\n+\t/* If the bypass divider is disabled, the multiplier is doubled */\n+\tif (bypassFBDIV2 == true) {\n+\t\tM *= 2;\n+\t}\n+\n+\t/* bandwidth: compute selP from Multiplier */\n+\tif (M < 60) {\n+\t\t*pSelP = (M >> 1) + 1;\n+\t}\n+\telse {\n+\t\t*pSelP = PVALMAX - 1;\n+\t}\n+\n+\t/* bandwidth: compute selI from Multiplier */\n+\tif (M > 16384) {\n+\t\t*pSelI = 1;\n+\t}\n+\telse if (M > 8192) {\n+\t\t*pSelI = 2;\n+\t}\n+\telse if (M > 2048) {\n+\t\t*pSelI = 4;\n+\t}\n+\telse if (M >= 501) {\n+\t\t*pSelI = 8;\n+\t}\n+\telse if (M >= 60) {\n+\t\t*pSelI = 4 * (1024 / (M + 9));\n+\t}\n+\telse {\n+\t\t*pSelI = (M & 0x3C) + 4;\n+\t}\n+\n+\tif (*pSelI > (SYSCON_SYSPLLCTRL_SELI_M >> SYSCON_SYSPLLCTRL_SELI_P)) {\n+\t\t*pSelI = (SYSCON_SYSPLLCTRL_SELI_M >> SYSCON_SYSPLLCTRL_SELI_P);\n+\t}\n+\n+\t*pSelR = 0;\n+}\n+\n+/* Get predivider (N) from PLL NDEC setting */\n+uint32_t findPllPreDiv(uint32_t ctrlReg, uint32_t nDecReg)\n+{\n+\tuint32_t preDiv = 1;\n+\n+\t/* Direct input is not used? */\n+\tif ((ctrlReg & SYSCON_SYSPLLCTRL_DIRECTI) == 0) {\n+\t\t/* Decode NDEC value to get (N) pre divider */\n+\t\tpreDiv = pllDecodeN(nDecReg & 0x3FF);\n+\t\tif (preDiv == 0) {\n+\t\t\tpreDiv = 1;\n+\t\t}\n+\t}\n+\n+\t/* Adjusted by 1, directi is used to bypass */\n+\treturn preDiv;\n+}\n+\n+/* Get postdivider (P) from PLL PDEC setting */\n+uint32_t findPllPostDiv(uint32_t ctrlReg, uint32_t pDecReg)\n+{\n+\tuint32_t postDiv = 1;\n+\n+\t/* Direct input is not used? */\n+\tif ((ctrlReg & SYS_PLL_DIRECTO) == 0) {\n+\t\t/* Decode PDEC value to get (P) post divider */\n+\t\tpostDiv = 2 * pllDecodeP(pDecReg & 0x7F);\n+\t\tif (postDiv == 0) {\n+\t\t\tpostDiv = 2;\n+\t\t}\n+\t}\n+\n+\t/* Adjusted by 1, directo is used to bypass */\n+\treturn postDiv;\n+}\n+\n+/* Get multiplier (M) from PLL MDEC and BYPASS_FBDIV2 settings */\n+uint32_t findPllMMult(uint32_t ctrlReg, uint32_t mDecReg)\n+{\n+\tuint32_t mMult = 1;\n+\n+\t/* Decode MDEC value to get (M) multiplier */\n+\tmMult = pllDecodeM(mDecReg & 0x1FFFF);\n+\n+\t/* Extra multiply by 2 needed? */\n+\tif ((ctrlReg & SYSCON_SYSPLLCTRL_BYPASS_FBDIV2) == 0) {\n+\t\tmMult *= 2;\n+\t}\n+\n+\tif (mMult == 0) {\n+\t\tmMult = 1;\n+\t}\n+\n+\treturn mMult;\n+}\n+\n+static uint32_t FindGreatestCommonDivisor(uint32_t m, uint32_t n)\n+{\n+\tuint32_t tmp;\n+\n+\twhile (n != 0) {\n+\t\ttmp = n;\n+\t\tn = m % n;\n+\t\tm = tmp;\n+\t}\n+\n+\treturn m;\n+}\n+\n+/* Set PLL output based on desired output rate */\n+static PLL_ERROR_T Chip_Clock_GetPllConfig(uint32_t finHz, uint32_t foutHz, PLL_SETUP_T *pSetup,\n+\t\t\t\t\t\t\t\t\t\t   bool useFeedbackDiv2, bool useSS)\n+{\n+\tuint32_t nDivOutHz, fccoHz, multFccoDiv;\n+\tuint32_t pllPreDivider, pllMultiplier, pllBypassFBDIV2, pllPostDivider;\n+\tuint32_t pllDirectInput, pllDirectOutput;\n+\tuint32_t pllSelP, pllSelI, pllSelR, bandsel, uplimoff;\n+\n+\t/* Baseline parameters (no input or output dividers) */\n+\tpllPreDivider = 1;\t/* 1 implies pre-divider will be disabled */\n+\tpllPostDivider = 0;\t/* 0 implies post-divider will be disabled */\n+\tpllDirectOutput = 1;\n+\tif (useFeedbackDiv2) {\n+\t\t/* Using feedback divider for M, so disable bypass */\n+\t\tpllBypassFBDIV2 = 0;\n+\t}\n+\telse {\n+\t\tpllBypassFBDIV2 = 1;\n+\t}\n+\tmultFccoDiv = (2 - pllBypassFBDIV2);\n+\n+\t/* Verify output rate parameter */\n+\tif (foutHz > PLL_MAX_CCO_FREQ_MHZ) {\n+\t\t/* Maximum PLL output with post divider=1 cannot go above this frequency */\n+\t\treturn PLL_ERROR_OUTPUT_TOO_HIGH;\n+\t}\n+\tif (foutHz < (PLL_MIN_CCO_FREQ_MHZ / (PVALMAX << 1))) {\n+\t\t/* Minmum PLL output with maximum post divider cannot go below this frequency */\n+\t\treturn PLL_ERROR_OUTPUT_TOO_LOW;\n+\t}\n+\n+\t/* If using SS mode, input clock needs to be between 2MHz and 4MHz */\n+\tif (useSS) {\n+\t\t/* Verify input rate parameter */\n+\t\tif (finHz < PLL_MIN_IN_SSMODE) {\n+\t\t\t/* Input clock into the PLL cannot be lower than this */\n+\t\t\treturn PLL_ERROR_INPUT_TOO_LOW;\n+\t\t}\n+\n+\t\t/* PLL input in SS mode must be under 4MHz */\n+\t\tpllPreDivider = finHz / ((PLL_MIN_IN_SSMODE + PLL_MAX_IN_SSMODE) / 2);\n+\t\tif (pllPreDivider > NVALMAX) {\n+\t\t\treturn PLL_ERROR_INPUT_TOO_HIGH;\n+\t\t}\n+\t}\n+\telse {\n+\t\t/* Verify input rate parameter */\n+\t\tif (finHz < PLL_LOWER_IN_LIMIT) {\n+\t\t\t/* Input clock into the PLL cannot be lower than this */\n+\t\t\treturn PLL_ERROR_INPUT_TOO_LOW;\n+\t\t}\n+\t}\n+\n+\t/* Find the optimal CCO frequency for the output and input that\n+\t   will keep it inside the PLL CCO range. This may require\n+\t   tweaking the post-divider for the PLL. */\n+\tfccoHz = foutHz;\n+\twhile (fccoHz < PLL_MIN_CCO_FREQ_MHZ) {\n+\t\t/* CCO output is less than minimum CCO range, so the CCO output\n+\t\t   needs to be bumped up and the post-divider is used to bring\n+\t\t   the PLL output back down. */\n+\t\tpllPostDivider++;\n+\t\tif (pllPostDivider > PVALMAX) {\n+\t\t\treturn PLL_ERROR_OUTSIDE_INTLIMIT;\n+\t\t}\n+\n+\t\t/* Target CCO goes up, PLL output goes down */\n+\t\tfccoHz = foutHz * (pllPostDivider * 2);\n+\t\tpllDirectOutput = 0;\n+\t}\n+\n+\t/* Determine if a pre-divider is needed to get the best frequency */\n+\tif ((finHz > PLL_LOWER_IN_LIMIT) && (fccoHz >= finHz) && (useSS == false)) {\n+\t\tuint32_t a = FindGreatestCommonDivisor(fccoHz, (multFccoDiv * finHz));\n+\n+\t\tif (a > 20000) {\n+\t\t\ta = (multFccoDiv * finHz) / a;\n+\t\t\tif ((a != 0) && (a < PLL_MAX_N_DIV)) {\n+\t\t\t\tpllPreDivider = a;\n+\t\t\t}\n+\t\t}\n+\t}\n+\n+\t/* Bypass pre-divider hardware if pre-divider is 1 */\n+\tif (pllPreDivider > 1) {\n+\t\tpllDirectInput = 0;\n+\t}\n+\telse {\n+\t\tpllDirectInput = 1;\n+\t}\n+\n+\t/* Determine PLL multipler */\n+\tnDivOutHz = (finHz / pllPreDivider);\n+\tpllMultiplier = (fccoHz / nDivOutHz) / multFccoDiv;\n+\n+\t/* Find optimal values for filter */\n+\tif (useSS == false) {\n+\t\t/* Will bumping up M by 1 get us closer to the desired CCO frequency? */\n+\t\tif ((nDivOutHz * ((multFccoDiv * pllMultiplier * 2) + 1)) < (fccoHz * 2)) {\n+\t\t\tpllMultiplier++;\n+\t\t}\n+\n+\t\t/* Setup filtering */\n+\t\tpllFindSel(pllMultiplier, pllBypassFBDIV2, &pllSelP, &pllSelI, &pllSelR);\n+\t\tbandsel = 1;\n+\t\tuplimoff = 0;\n+\n+\t\t/* Get encoded value for M (mult) and use manual filter, disable SS mode */\n+\t\tpSetup->SYSPLLSSCTRL[0] = (PLL_SSCG0_MDEC_VAL_SET(pllEncodeM(pllMultiplier)) |\n+\t\t\t\t\t\t\t\t   (1 << PLL_SSCG0_SEL_EXT_SSCG_N_P));\n+\n+\t\t/* Power down SSC, not used */\n+\t\tpSetup->SYSPLLSSCTRL[1] = PLL_SSCG1_MOD_PD_SSCGCLK_N;\n+\t}\n+\telse {\n+\t\tuint64_t fc;\n+\n+\t\t/* Filtering will be handled by SSC */\n+\t\tpllSelR = pllSelI = pllSelP = 0;\n+\t\tbandsel = 0;\n+\t\tuplimoff = 1;\n+\n+\t\t/* The PLL multiplier will get very close and slightly under the\n+\t\t   desired target frequency. A small fractional component can be\n+\t\t   added to fine tune the frequency upwards to the target. */\n+\t\tfc = ((uint64_t) (fccoHz % (multFccoDiv * nDivOutHz)) << 11) / (multFccoDiv * nDivOutHz);\n+\n+\t\t/* MDEC set by SSC */\n+\t\tpSetup->SYSPLLSSCTRL[0] = 0;\n+\n+\t\t/* Set multiplier */\n+\t\tpSetup->SYSPLLSSCTRL[1] = PLL_SSCG1_MD_INT_SET(pllMultiplier) |\n+\t\t\t\t\t\t\t\t  PLL_SSCG1_MD_FRACT_SET((uint32_t) fc);\n+\t}\n+\n+\t/* Get encoded values for N (prediv) and P (postdiv) */\n+\tpSetup->SYSPLLNDEC = PLL_NDEC_VAL_SET(pllEncodeN(pllPreDivider));\n+\tpSetup->SYSPLLPDEC = PLL_PDEC_VAL_SET(pllEncodeP(pllPostDivider));\n+\n+\t/* PLL control */\n+\tpSetup->SYSPLLCTRL =\n+\t\t(pllSelR << SYSCON_SYSPLLCTRL_SELR_P) |\t\t\t\t\t/* Filter coefficient */\n+\t\t(pllSelI << SYSCON_SYSPLLCTRL_SELI_P) |\t\t\t\t\t/* Filter coefficient */\n+\t\t(pllSelP << SYSCON_SYSPLLCTRL_SELP_P) |\t\t\t\t\t/* Filter coefficient */\n+\t\t(0 << SYSCON_SYSPLLCTRL_BYPASS_P) |\t\t\t\t\t\t/* PLL bypass mode disabled */\n+\t\t(pllBypassFBDIV2 << SYSCON_SYSPLLCTRL_BYPASS_FBDIV2_P) |\t/* Extra M / 2 divider? */\n+\t\t(uplimoff << SYSCON_SYSPLLCTRL_UPLIMOFF_P) |\t\t\t/* SS/fractional mode disabled */\n+\t\t(bandsel << SYSCON_SYSPLLCTRL_BANDSEL_SSCGREG_N_P) |\t/* Manual bandwidth selection enabled */\n+\t\t(pllDirectInput << SYSCON_SYSPLLCTRL_DIRECTI_P) |\t\t/* Bypass pre-divider? */\n+\t\t(pllDirectOutput << SYSCON_SYSPLLCTRL_DIRECTO_P);\t\t/* Bypass post-divider? */\n+\n+\treturn PLL_ERROR_SUCCESS;\n+}\n+\n+/* Update local PLL rate variable */\n+static void Chip_Clock_GetSystemPLLOutFromSetupUpdate(PLL_SETUP_T *pSetup)\n+{\n+\tcurPllRate = Chip_Clock_GetSystemPLLOutFromSetup(pSetup);\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Return System PLL input clock rate */\n+uint32_t Chip_Clock_GetSystemPLLInClockRate(void)\n+{\n+\tuint32_t clkRate = 0;\n+\n+\tswitch ((CHIP_SYSCON_PLLCLKSRC_T) (LPC_SYSCON->SYSPLLCLKSEL & 0x3)) {\n+\tcase SYSCON_PLLCLKSRC_IRC:\n+\t\tclkRate = Chip_Clock_GetIntOscRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_PLLCLKSRC_CLKIN:\n+\t\tclkRate = Chip_Clock_GetExtClockInRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_PLLCLKSRC_WDTOSC:\n+\t\tclkRate = Chip_Clock_GetWDTOSCRate();\n+\t\tbreak;\n+\n+\tcase SYSCON_PLLCLKSRC_RTC:\n+\t\tclkRate = Chip_Clock_GetRTCOscRate();\n+\t\tbreak;\n+\t}\n+\n+\treturn clkRate;\n+}\n+\n+/* Return System PLL output clock rate from setup structure */\n+uint32_t Chip_Clock_GetSystemPLLOutFromSetup(PLL_SETUP_T *pSetup)\n+{\n+\tuint32_t prediv, postdiv, mMult, inPllRate;\n+\tuint64_t workRate;\n+\n+\tinPllRate = Chip_Clock_GetSystemPLLInClockRate();\n+\tif ((pSetup->SYSPLLCTRL & SYSCON_SYSPLLCTRL_BYPASS_P) == 0) {\n+\t\t/* PLL is not in bypass mode, get pre-divider, post-divider, and M divider */\n+\t\tprediv = findPllPreDiv(pSetup->SYSPLLCTRL, pSetup->SYSPLLNDEC);\n+\t\tpostdiv = findPllPostDiv(pSetup->SYSPLLCTRL, pSetup->SYSPLLPDEC);\n+\n+\t\t/* Adjust input clock */\n+\t\tinPllRate = inPllRate / prediv;\n+\n+\t\t/* If using the SS, use the multiplier */\n+\t\tif (pSetup->SYSPLLSSCTRL[1] & PLL_SSCG1_MOD_PD_SSCGCLK_N) {\n+\t\t\t/* MDEC used for rate */\n+\t\t\tmMult = findPllMMult(pSetup->SYSPLLCTRL, pSetup->SYSPLLSSCTRL[0]);\n+\t\t\tworkRate = (uint64_t) inPllRate * (uint64_t) mMult;\n+\t\t}\n+\t\telse {\n+\t\t\tuint64_t fract;\n+\n+\t\t\t/* SS multipler used for rate */\n+\t\t\tmMult = (pSetup->SYSPLLSSCTRL[1] & PLL_SSCG1_MD_INT_M) >> PLL_SSCG1_MD_INT_P;\n+\t\t\tworkRate = (uint64_t) inPllRate * (uint64_t) mMult;\n+\n+\t\t\t/* Adjust by fractional */\n+\t\t\tfract = (uint64_t) (pSetup->SYSPLLSSCTRL[1] & PLL_SSCG1_MD_FRACT_M) >> PLL_SSCG1_MD_FRACT_P;\n+\t\t\tworkRate = workRate + ((inPllRate * fract) / 0x7FF);\n+\t\t}\n+\n+\t\tworkRate = workRate / ((uint64_t) postdiv);\n+\t}\n+\telse {\n+\t\t/* In bypass mode */\n+\t\tworkRate = (uint64_t) inPllRate;\n+\t}\n+\n+\treturn (uint32_t) workRate;\n+}\n+\n+/* Return System PLL output clock rate */\n+uint32_t Chip_Clock_GetSystemPLLOutClockRate(bool recompute)\n+{\n+\tPLL_SETUP_T Setup;\n+\tuint32_t rate;\n+\n+\tif ((recompute == true) || (curPllRate == 0)) {\n+\t\tSetup.SYSPLLCTRL = LPC_SYSCON->SYSPLLCTRL;\n+\t\tSetup.SYSPLLNDEC = LPC_SYSCON->SYSPLLNDEC;\n+\t\tSetup.SYSPLLPDEC = LPC_SYSCON->SYSPLLPDEC;\n+\t\tSetup.SYSPLLSSCTRL[0] = LPC_SYSCON->SYSPLLSSCTRL[0];\n+\t\tSetup.SYSPLLSSCTRL[1] = LPC_SYSCON->SYSPLLSSCTRL[1];\n+\n+\t\tChip_Clock_GetSystemPLLOutFromSetupUpdate(&Setup);\n+\t}\n+\n+\trate = curPllRate;\n+\n+\treturn rate;\n+}\n+\n+/* Enables and disables PLL bypass mode */\n+void Chip_Clock_SetBypassPLL(bool bypass)\n+{\n+\tif (bypass) {\n+\t\tLPC_SYSCON->SYSPLLCTRL |= SYSCON_SYSPLLCTRL_BYPASS_P;\n+\t}\n+\telse {\n+\t\tLPC_SYSCON->SYSPLLCTRL &= ~SYSCON_SYSPLLCTRL_BYPASS_P;\n+\t}\n+}\n+\n+/* Set PLL output based on the passed PLL setup data */\n+PLL_ERROR_T Chip_Clock_SetupPLLData(PLL_CONFIG_T *pControl, PLL_SETUP_T *pSetup)\n+{\n+\tuint32_t inRate;\n+\tbool useSS = (bool) ((pControl->flags & PLL_CONFIGFLAG_FORCENOFRACT) == 0);\n+\tPLL_ERROR_T pllError;\n+\n+\t/* Determine input rate for the PLL */\n+\tif ((pControl->flags & PLL_CONFIGFLAG_USEINRATE) != 0) {\n+\t\tinRate = pControl->InputRate;\n+\t}\n+\telse {\n+\t\tinRate = Chip_Clock_GetSystemPLLInClockRate();\n+\t}\n+\n+\t/* PLL flag options */\n+\tpllError = Chip_Clock_GetPllConfig(inRate, pControl->desiredRate, pSetup, false, useSS);\n+\tif ((useSS) && (pllError == PLL_ERROR_SUCCESS)) {\n+\t\t/* If using SS mode, then some tweaks are made to the generated setup */\n+\t\tpSetup->SYSPLLSSCTRL[1] |= (uint32_t) pControl->ss_mf | (uint32_t) pControl->ss_mr |\n+\t\t\t\t\t\t\t\t   (uint32_t) pControl->ss_mc;\n+\t\tif (pControl->mfDither) {\n+\t\t\tpSetup->SYSPLLSSCTRL[1] |= PLL_SSCG1_DITHER;\n+\t\t}\n+\t}\n+\n+\treturn pllError;\n+}\n+\n+/* Set PLL output from PLL setup structure */\n+PLL_ERROR_T Chip_Clock_SetupSystemPLLPrec(PLL_SETUP_T *pSetup)\n+{\n+\t/* Power off PLL during setup changes */\n+\tChip_SYSCON_PowerDown(SYSCON_PDRUNCFG_PD_SYS_PLL);\n+\n+\t/* Write PLL setup data */\n+\tLPC_SYSCON->SYSPLLCTRL = pSetup->SYSPLLCTRL;\n+\tLPC_SYSCON->SYSPLLNDEC = pSetup->SYSPLLNDEC;\n+\tLPC_SYSCON->SYSPLLNDEC = pSetup->SYSPLLNDEC | PLL_NDEC_NREQ;/* latch */\n+\tLPC_SYSCON->SYSPLLPDEC = pSetup->SYSPLLPDEC;\n+\tLPC_SYSCON->SYSPLLPDEC = pSetup->SYSPLLPDEC | PLL_PDEC_PREQ;/* latch */\n+\tLPC_SYSCON->SYSPLLSSCTRL[0] = pSetup->SYSPLLSSCTRL[0];\n+\tLPC_SYSCON->SYSPLLSSCTRL[0] = pSetup->SYSPLLSSCTRL[0] | PLL_SSCG0_MREQ;\t/* latch */\n+\tLPC_SYSCON->SYSPLLSSCTRL[1] = pSetup->SYSPLLSSCTRL[1];\n+\tLPC_SYSCON->SYSPLLSSCTRL[1] = pSetup->SYSPLLSSCTRL[1] | PLL_SSCG1_MD_REQ;\t/* latch */\n+\n+\t/* Flags for lock or power on */\n+\tif ((pSetup->flags & (PLL_SETUPFLAG_POWERUP | PLL_SETUPFLAG_WAITLOCK)) != 0) {\n+\t\tChip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_SYS_PLL);\n+\t}\n+\tif ((pSetup->flags & PLL_SETUPFLAG_WAITLOCK) != 0) {\n+\t\twhile (Chip_Clock_IsSystemPLLLocked() == false) {}\n+\t}\n+\n+\t/* Update current programmed PLL rate var */\n+\tChip_Clock_GetSystemPLLOutFromSetupUpdate(pSetup);\n+\n+\t/* System voltage adjustment, occurs prior to setting main system clock */\n+\tif ((pSetup->flags & PLL_SETUPFLAG_ADGVOLT) != 0) {\n+\t\tChip_POWER_SetVoltage(POWER_LOW_POWER_MODE, curPllRate);\n+\t}\n+\tcurPllRate = 0;\n+\n+\treturn PLL_ERROR_SUCCESS;\n+}\n+\n+/*\n+    Set System PLL clock based on the input frequency and multiplier\n+\n+    Here is the configuration used by this function:\n+    - input divider -- set to 2\n+    - output -- direct (p-divider is not used)\n+    - direct in = off\n+    - direct out = on\n+\n+    There is a subtle doubling of the \"multiply_by\" factor.\n+    There is a feedback clock that is not disabled.\n+    Because it halves the divider, it doubles the frequency.\n+    This is used to compensate for the input divider value.\n+\n+ */\n+\n+void Chip_Clock_SetupSystemPLL(uint32_t multiply_by, uint32_t input_freq)\n+{\n+\tuint32_t cco_freq = input_freq * multiply_by;\n+\tuint32_t pdec = 1;\n+\tuint32_t selr;\n+\tuint32_t seli;\n+\tuint32_t selp;\n+\tuint32_t mdec, ndec;\n+\n+\tuint32_t directo = SYS_PLL_DIRECTO;\n+\n+\twhile (cco_freq < 75000000) {\n+\t\tmultiply_by <<= 1;\t/* double value in each iteration */\n+\t\tpdec <<= 1;\t\t\t/* correspondingly double pdec to cancel effect of double msel */\n+\t\tcco_freq = input_freq * multiply_by;\n+\t}\n+\tselr = 0;\n+\tseli = (multiply_by & 0x3c) + 4;\n+\tselp = (multiply_by >> 1) + 1;\n+\n+\tif (pdec > 1) {\n+\t\tdirecto = 0;\t/* use post divider */\n+\t\tpdec = pdec / 2;\t/* Account for minus 1 encoding */\n+\t\t/* Translate P value */\n+\t\tpdec = (pdec == 1)  ? 0x62 :\t/* 1  * 2 */\n+\t\t\t   (pdec == 2)  ? 0x42 :\t/* 2  * 2 */\n+\t\t\t   (pdec == 4)  ? 0x02 :\t/* 4  * 2 */\n+\t\t\t   (pdec == 8)  ? 0x0b :\t/* 8  * 2 */\n+\t\t\t   (pdec == 16) ? 0x11 :\t/* 16 * 2 */\n+\t\t\t   (pdec == 32) ? 0x08 : 0x08;\t/* 32 * 2 */\n+\t}\n+\n+\t/* Only support values of 2 to 16 (to keep driver simple) */\n+\tmdec = 0x7fff >> (16 - (multiply_by - 1));\n+\tndec = 0x202;\t/* pre divide by 2 (hardcoded) */\n+\n+\tLPC_SYSCON->SYSPLLCTRL = SYS_PLL_BANDSEL | directo | (selr << SYSCON_SYSPLLCTRL_SELR_P) |\n+\t\t\t\t\t\t\t (seli << SYSCON_SYSPLLCTRL_SELI_P) | (selp << SYSCON_SYSPLLCTRL_SELP_P);\n+\n+\tLPC_SYSCON->SYSPLLPDEC = pdec;\t\t\t\t\t\t\t\t\t/* set PDEC value */\n+\tLPC_SYSCON->SYSPLLPDEC = pdec | (1 << 7);\t\t\t\t\t\t/* Assert PDEC reload request: load register into PLL */\n+\n+\tLPC_SYSCON->SYSPLLNDEC = ndec;\t\t\t\t\t\t\t\t\t/* set NDEC value */\n+\tLPC_SYSCON->SYSPLLNDEC = ndec | (1 << 10);\t\t\t\t\t\t/* Assert NDEC reload request: load register into PLL */\n+\n+\tLPC_SYSCON->SYSPLLSSCTRL[0] = (1 << 18) | mdec;\t\t\t\t\t/* set MDEC value*/\n+\tLPC_SYSCON->SYSPLLSSCTRL[0] = (1 << 18) | (1 << 17) | mdec;\t\t/* Load register into the PLL */\n+\n+\tcurPllRate = 0;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/ring_buffer.c ./chip/src/ring_buffer.c\n--- a_tnusFF/chip/src/ring_buffer.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/ring_buffer.c\t2016-10-22 23:21:09.408845790 -0300\n@@ -0,0 +1,181 @@\n+/*\n+ * @brief Common ring buffer support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include <string.h>\n+#include \"ring_buffer.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define RB_INDH(rb)                ((rb)->head & ((rb)->count - 1))\n+#define RB_INDT(rb)                ((rb)->tail & ((rb)->count - 1))\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize ring buffer */\n+int RingBuffer_Init(RINGBUFF_T *RingBuff,\n+\t\t\t\t\tvoid *buffer,\n+\t\t\t\t\tint itemSize,\n+\t\t\t\t\tint count,\n+\t\t\t\t\tvoid *(*cpyFunc)(void *dst, const void *src, uint32_t len))\n+{\n+\tRingBuff->data = buffer;\n+\tRingBuff->count = count;\n+\tRingBuff->itemSz = itemSize;\n+\tRingBuff->head = RingBuff->tail = 0;\n+\tif (!cpyFunc) {\n+\t\tcpyFunc = (void *(*)(void *, const void *, uint32_t)) memcpy;\n+\t}\n+\tRingBuff->copy = cpyFunc;\n+\n+\treturn 1;\n+}\n+\n+/* Insert a single item into Ring Buffer */\n+int RingBuffer_Insert(RINGBUFF_T *RingBuff, const void *data)\n+{\n+\tuint8_t *ptr = RingBuff->data;\n+\n+\t/* We cannot insert when queue is full */\n+\tif (RingBuffer_IsFull(RingBuff)) {\n+\t\treturn 0;\n+\t}\n+\n+\tptr += RB_INDH(RingBuff) * RingBuff->itemSz;\n+\tRingBuff->copy(ptr, data, RingBuff->itemSz);\n+\tRingBuff->head++;\n+\n+\treturn 1;\n+}\n+\n+/* Insert multiple items into Ring Buffer */\n+int RingBuffer_InsertMult(RINGBUFF_T *RingBuff, const void *data, int num)\n+{\n+\tuint8_t *ptr = RingBuff->data;\n+\tint cnt1, cnt2;\n+\n+\t/* We cannot insert when queue is full */\n+\tif (RingBuffer_IsFull(RingBuff)) {\n+\t\treturn 0;\n+\t}\n+\n+\t/* Calculate the segment lengths */\n+\tcnt1 = cnt2 = RingBuffer_GetFree(RingBuff);\n+\tif (RB_INDH(RingBuff) + cnt1 >= RingBuff->count) {\n+\t\tcnt1 = RingBuff->count - RB_INDH(RingBuff);\n+\t}\n+\tcnt2 -= cnt1;\n+\n+\tcnt1 = MIN(cnt1, num);\n+\tnum -= cnt1;\n+\n+\tcnt2 = MIN(cnt2, num);\n+\tnum -= cnt2;\n+\n+\t/* Write segment 1 */\n+\tptr += RB_INDH(RingBuff) * RingBuff->itemSz;\n+\tRingBuff->copy(ptr, data, cnt1 * RingBuff->itemSz);\n+\tRingBuff->head += cnt1;\n+\n+\t/* Write segment 2 */\n+\tptr = (uint8_t *) RingBuff->data + RB_INDH(RingBuff) * RingBuff->itemSz;\n+\tdata = (const uint8_t *) data + cnt1 * RingBuff->itemSz;\n+\tRingBuff->copy(ptr, data, cnt2 * RingBuff->itemSz);\n+\tRingBuff->head += cnt2;\n+\n+\treturn cnt1 + cnt2;\n+}\n+\n+/* Pop single item from Ring Buffer */\n+int RingBuffer_Pop(RINGBUFF_T *RingBuff, void *data)\n+{\n+\tuint8_t *ptr = RingBuff->data;\n+\n+\t/* We cannot pop when queue is empty */\n+\tif (RingBuffer_IsEmpty(RingBuff)) {\n+\t\treturn 0;\n+\t}\n+\n+\tptr += RB_INDT(RingBuff) * RingBuff->itemSz;\n+\tRingBuff->copy(data, ptr, RingBuff->itemSz);\n+\tRingBuff->tail++;\n+\n+\treturn 1;\n+}\n+\n+/* Pop multiple items from Ring buffer */\n+int RingBuffer_PopMult(RINGBUFF_T *RingBuff, void *data, int num)\n+{\n+\tuint8_t *ptr = RingBuff->data;\n+\tint cnt1, cnt2;\n+\n+\t/* We cannot insert when queue is empty */\n+\tif (RingBuffer_IsEmpty(RingBuff)) {\n+\t\treturn 0;\n+\t}\n+\n+\t/* Calculate the segment lengths */\n+\tcnt1 = cnt2 = RingBuffer_GetCount(RingBuff);\n+\tif (RB_INDT(RingBuff) + cnt1 >= RingBuff->count) {\n+\t\tcnt1 = RingBuff->count - RB_INDT(RingBuff);\n+\t}\n+\tcnt2 -= cnt1;\n+\n+\tcnt1 = MIN(cnt1, num);\n+\tnum -= cnt1;\n+\n+\tcnt2 = MIN(cnt2, num);\n+\tnum -= cnt2;\n+\n+\t/* Write segment 1 */\n+\tptr += RB_INDT(RingBuff) * RingBuff->itemSz;\n+\tRingBuff->copy(data, ptr, cnt1 * RingBuff->itemSz);\n+\tRingBuff->tail += cnt1;\n+\n+\t/* Write segment 2 */\n+\tptr = (uint8_t *) RingBuff->data + RB_INDT(RingBuff) * RingBuff->itemSz;\n+\tdata = (uint8_t *) data + cnt1 * RingBuff->itemSz;\n+\tRingBuff->copy(data, ptr, cnt2 * RingBuff->itemSz);\n+\tRingBuff->tail += cnt2;\n+\n+\treturn cnt1 + cnt2;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/ritimer_5410x.c ./chip/src/ritimer_5410x.c\n--- a_tnusFF/chip/src/ritimer_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/ritimer_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,105 @@\n+/*\n+ * @brief LPC5410X RITimer chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the RIT */\n+void Chip_RIT_Init(LPC_RITIMER_T *pRITimer)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_RIT);\n+\tChip_SYSCON_PeriphReset(RESET_RIT);\n+\n+\t/* Default is timer disabled */\n+\tpRITimer->CTRL = 0x0;\n+}\n+\n+/* DeInitialize the RIT */\n+void Chip_RIT_DeInit(LPC_RITIMER_T *pRITimer)\n+{\n+\tpRITimer->CTRL = 0x0;\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_RIT);\n+}\n+\n+/* Set timer interval value */\n+void Chip_RIT_SetTimerInterval(LPC_RITIMER_T *pRITimer, uint32_t time_interval)\n+{\n+\tuint32_t cmp_value;\n+\n+\t/* Determine aapproximate compare value based on clock rate and passed interval */\n+\tcmp_value = (Chip_Clock_GetMainClockRate() / 1000) * time_interval;\n+\n+\t/* Set timer compare value */\n+\tChip_RIT_SetCOMPVAL(pRITimer, cmp_value);\n+}\n+\n+/* Set timer interval value (48-bit) */\n+void Chip_RIT_SetTimerInterval64(LPC_RITIMER_T *pRITimer, uint64_t time_interval)\n+{\n+\tuint64_t cmp_value;\n+\n+\t/* Determine aapproximate compare value based on clock rate and passed interval */\n+\tcmp_value = (uint64_t) Chip_Clock_GetMainClockRate() / 1000;\n+\tcmp_value = cmp_value * time_interval;\n+\n+\t/* Set timer compare value */\n+\tChip_RIT_SetCOMPVAL64(pRITimer, cmp_value);\n+}\n+\n+/* Check whether interrupt is pending */\n+IntStatus Chip_RIT_GetIntStatus(LPC_RITIMER_T *pRITimer)\n+{\n+\tuint8_t result;\n+\n+\tif ((pRITimer->CTRL & RIT_CTRL_INT) == 1) {\n+\t\tresult = SET;\n+\t}\n+\telse {\n+\t\treturn RESET;\n+\t}\n+\n+\treturn (IntStatus) result;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/rtc_ut.c ./chip/src/rtc_ut.c\n--- a_tnusFF/chip/src/rtc_ut.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/rtc_ut.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,202 @@\n+/*\n+ * @brief RTC tick to (a more) Universal Time\n+ * Adds conversion functions to use an RTC that only provides a\n+ * seconds capability to provide \"struct tm\" support.\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"rtc_ut.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define SECSPERMIN      (60)\n+#define MINSPERHOUR     (60)\n+#define SECSPERHOUR     (SECSPERMIN * MINSPERHOUR)\n+#define HOURSPERDAY     (24)\n+#define SECSPERDAY      (SECSPERMIN * MINSPERHOUR * HOURSPERDAY)\n+#define DAYSPERWEEK     (7)\n+#define MONETHSPERYEAR  (12)\n+#define DAYSPERYEAR     (365)\n+#define DAYSPERLEAPYEAR (366)\n+\n+/* Days per month, LY is special */\n+static uint8_t daysPerMonth[2][MONETHSPERYEAR] = {\n+\t{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},\t/* Normal year */\n+\t{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},\t/* Leap year */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Converts the number of days offset from the start year to real year\n+   data accounting for leap years */\n+static void GetDMLY(int dayOff, struct tm *pTime)\n+{\n+\tbool YearFound = false;\n+\tint daysYear = dayOff;\n+\tint leapYear, curLeapYear, year = TM_YEAR_BASE, monthYear = 0;\n+\tbool MonthFound = false;\n+\n+\t/* Leap year check for less than 1 year time */\n+\tif ((year % 4) == 0) {\n+\t\tcurLeapYear = 1;\n+\t}\n+\telse {\n+\t\tcurLeapYear = 0;\n+\t}\n+\n+\t/* Determine offset of years from days offset */\n+\twhile (YearFound == false) {\n+\t\tif ((year % 4) == 0) {\n+\t\t\t/* Leap year, 366 days */\n+\t\t\tdaysYear = DAYSPERLEAPYEAR;\n+\t\t\tleapYear = 1;\n+\t\t}\n+\t\telse {\n+\t\t\t/* Leap year, 365 days */\n+\t\t\tdaysYear = DAYSPERYEAR;\n+\t\t\tleapYear = 0;\n+\t\t}\n+\n+\t\tif (dayOff > daysYear) {\n+\t\t\tdayOff -= daysYear;\n+\t\t\tyear++;\n+\t\t}\n+\t\telse {\n+\t\t\tYearFound = true;\n+\t\t\tcurLeapYear = leapYear;\t/* In a leap year */\n+\t\t}\n+\t}\n+\n+\t/* Save relative year and day into year */\n+\tpTime->tm_year = year - TM_YEAR_BASE;\t/* Base year relative */\n+\tpTime->tm_yday = dayOff;/* 0 relative */\n+\n+\t/* Determine offset of months from days offset */\n+\twhile (MonthFound == false) {\n+\t\tif ((dayOff + 1) > daysPerMonth[curLeapYear][monthYear]) {\n+\t\t\t/* Next month */\n+\t\t\tdayOff -= daysPerMonth[curLeapYear][monthYear];\n+\t\t\tmonthYear++;\n+\t\t}\n+\t\telse {\n+\t\t\t/* Month found */\n+\t\t\tMonthFound = true;\n+\t\t}\n+\t}\n+\n+\tpTime->tm_mday = dayOff + 1;/* 1 relative */\n+\tpTime->tm_mon = monthYear;\t/* 0 relative */\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Converts an RTC tick time to Universal time */\n+void ConvertRtcTime(uint32_t rtcTick, struct tm *pTime)\n+{\n+\tint daySeconds, dayNum;\n+\n+\t/* Get day offset and seconds since start */\n+\tdayNum = (int) (rtcTick / SECSPERDAY);\n+\tdaySeconds = (int) (rtcTick % SECSPERDAY);\n+\n+\t/* Fill in secs, min, hours */\n+\tpTime->tm_sec = daySeconds % 60;\n+\tpTime->tm_hour = daySeconds / SECSPERHOUR;\n+\tpTime->tm_min = (daySeconds - (pTime->tm_hour * SECSPERHOUR)) / SECSPERMIN;\n+\n+\t/* Weekday, 0 = Sunday, 6 = Saturday */\n+\tpTime->tm_wday = (dayNum + TM_DAYOFWEEK) % DAYSPERWEEK;\n+\n+\t/* Get year, month, day of month, and day of year */\n+\tGetDMLY(dayNum, pTime);\n+\n+\t/* Not supported in this driver */\n+\tpTime->tm_isdst = 0;\n+}\n+\n+/* Converts a Universal time to RTC tick time */\n+void ConvertTimeRtc(struct tm *pTime, uint32_t *rtcTick)\n+{\n+\tint leapYear, year = pTime->tm_year + TM_YEAR_BASE;\n+\tuint32_t dayOff, monthOff, monthCur, rtcTicks = 0;\n+\n+\t/* Leap year check for less than 1 year time */\n+\tif ((year % 4) == 0) {\n+\t\tleapYear = 1;\n+\t}\n+\telse {\n+\t\tleapYear = 0;\n+\t}\n+\n+\t/* Add days for each year and leap year */\n+\twhile (year > TM_YEAR_BASE) {\n+\t\tif ((year % 4) == 0) {\n+\t\t\t/* Leap year, 366 days */\n+\t\t\trtcTicks += DAYSPERLEAPYEAR * SECSPERDAY;\n+\t\t\tleapYear = 1;\n+\t\t}\n+\t\telse {\n+\t\t\t/* Leap year, 365 days */\n+\t\t\trtcTicks += DAYSPERYEAR * SECSPERDAY;\n+\t\t\tleapYear = 0;\n+\t\t}\n+\n+\t\tyear--;\n+\t}\n+\n+\t/* Day and month are 0 relative offsets since day and month\n+\t   start at 1 */\n+\tdayOff = (uint32_t) pTime->tm_mday - 1;\n+\tmonthOff = (uint32_t) pTime->tm_mon;\n+\n+\t/* Add in seconds for passed months */\n+\tfor (monthCur = 0; monthCur < monthOff; monthCur++) {\n+\t\trtcTicks += (uint32_t) (daysPerMonth[leapYear][monthCur] * SECSPERDAY);\n+\t}\n+\n+\t/* Add in seconds for day offset into the current month */\n+\trtcTicks += (dayOff * SECSPERDAY);\n+\n+\t/* Add in seconds for hours, minutes, and seconds */\n+\trtcTicks += (uint32_t) (pTime->tm_hour * SECSPERHOUR);\n+\trtcTicks += (uint32_t) (pTime->tm_min * SECSPERMIN);\n+\trtcTicks += (uint32_t) pTime->tm_sec;\n+\n+\t*rtcTick = rtcTicks;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/sct_5410x.c ./chip/src/sct_5410x.c\n--- a_tnusFF/chip/src/sct_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/sct_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,81 @@\n+/*\n+ * @brief LPC5410X State Configurable Timer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize SCT */\n+void Chip_SCT_Init(LPC_SCT_T *pSCT)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_SCT0);\n+\tChip_SYSCON_PeriphReset(RESET_SCT0);\n+}\n+\n+/* Shutdown SCT */\n+void Chip_SCT_DeInit(LPC_SCT_T *pSCT)\n+{\n+\tChip_Clock_DisablePeriphClock(SYSCON_CLOCK_SCT0);\n+}\n+\n+/* Set/Clear SCT control register */\n+void Chip_SCT_SetClrControl(LPC_SCT_T *pSCT, uint32_t value, FunctionalState ena)\n+{\n+\tif (ena == ENABLE) {\n+\t\tChip_SCT_SetControl(pSCT, value);\n+\t}\n+\telse {\n+\t\tChip_SCT_ClearControl(pSCT, value);\n+\t}\n+}\n+\n+/* Set Conflict resolution */\n+void Chip_SCT_SetConflictResolution(LPC_SCT_T *pSCT, uint8_t outnum, uint8_t value)\n+{\n+\tuint32_t tem;\n+\n+\ttem = pSCT->RES & (~(0x03 << (2 * outnum)));\n+\tpSCT->RES = tem | (value << (2 * outnum));\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/sct_pwm_5410x.c ./chip/src/sct_pwm_5410x.c\n--- a_tnusFF/chip/src/sct_pwm_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/sct_pwm_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,86 @@\n+/*\n+ * @brief LPC5410x State Configurable Timer PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Setup the OUTPUT pin corresponding to the PWM index */\n+void Chip_SCTPWM_SetOutPin(LPC_SCT_T *pSCT, uint8_t index, uint8_t pin)\n+{\n+\tint ix = (int) index;\n+\tpSCT->EVENT[ix].CTRL = index | (1 << 12);\n+\tpSCT->EVENT[ix].STATE = 1;\n+\tpSCT->OUT[pin].SET = 1;\n+\tpSCT->OUT[pin].CLR = 1 << ix;\n+\n+\t/* Clear the output in-case of conflict */\n+\tpSCT->RES = (pSCT->RES & ~(3 << (pin << 1))) | (0x01 << (pin << 1));\n+\n+\t/* Set and Clear do not depend on direction */\n+\tpSCT->OUTPUTDIRCTRL = (pSCT->OUTPUTDIRCTRL & ~(3 << (pin << 1)));\n+}\n+\n+/* Set the PWM frequency */\n+void Chip_SCTPWM_SetRate(LPC_SCT_T *pSCT, uint32_t freq)\n+{\n+\tuint32_t rate;\n+\n+\trate = Chip_Clock_GetSystemClockRate() / freq;\n+\n+\t/* Stop the SCT before configuration */\n+\tChip_SCTPWM_Stop(pSCT);\n+\n+\t/* Set MATCH0 for max limit */\n+\tpSCT->REGMODE_L = 0;\n+\tpSCT->REGMODE_H = 0;\n+\tChip_SCT_SetMatchCount(pSCT, SCT_MATCH_0, 0);\n+\tChip_SCT_SetMatchReload(pSCT, SCT_MATCH_0, rate);\n+\tpSCT->EVENT[0].CTRL = 1 << 12;\n+\tpSCT->EVENT[0].STATE = 1;\n+\n+\t/* Set SCT Counter to count 32-bits and reset to 0 after reaching MATCH0 */\n+\tChip_SCT_Config(pSCT, SCT_CONFIG_32BIT_COUNTER | SCT_CONFIG_AUTOLIMIT_L);\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/spi_common_5410x.c ./chip/src/spi_common_5410x.c\n--- a_tnusFF/chip/src/spi_common_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/spi_common_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,71 @@\n+/*\n+ * @brief LPC5410X SPI driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Setup SAPI configuration */\n+void Chip_SPI_ConfigureSPI(LPC_SPI_T *pSPI, SPI_CFGSETUP_T *pCFG)\n+{\n+\tuint32_t reg;\n+\n+\t/* Get register and mask off config bits this function alters */\n+\treg = pSPI->CFG & ~(SPI_CFG_MASTER_EN | SPI_CFG_LSB_FIRST_EN |\n+\t\t\t\t\t\tSPI_CFG_CPHA_SECOND | SPI_CFG_CPOL_HI);\n+\n+\tif (pCFG->master) {\n+\t\treg |= SPI_CFG_MASTER_EN;\n+\t}\n+\tif (pCFG->lsbFirst) {\n+\t\treg |= SPI_CFG_LSB_FIRST_EN;\n+\t}\n+\treg |= (uint32_t) pCFG->mode;\n+\n+\tChip_SPI_SetCFGRegBits(pSPI, reg);\n+\n+\t/* Deassert all chip selects, only in master mode */\n+\tpSPI->TXCTRL = SPI_TXDATCTL_DEASSERT_ALL;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/spim_5410x.c ./chip/src/spim_5410x.c\n--- a_tnusFF/chip/src/spim_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/spim_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,201 @@\n+/*\n+ * @brief LPC5410X SPI master driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Get SPI master bit rate */\n+uint32_t Chip_SPIM_GetClockRate(LPC_SPI_T *pSPI)\n+{\n+\treturn Chip_Clock_GetAsyncSyscon_ClockRate() / (pSPI->DIV + 1);\n+}\n+\n+/* Set SPI master bit rate */\n+uint32_t Chip_SPIM_SetClockRate(LPC_SPI_T *pSPI, uint32_t rate)\n+{\n+\tuint32_t baseClock, div;\n+\n+\t/* Get peripheral base clock rate */\n+\tbaseClock = Chip_Clock_GetAsyncSyscon_ClockRate();\n+\n+\t/* Compute divider */\n+\tdiv = baseClock / rate;\n+\n+\t/* Limit values */\n+\tif (div == 0) {\n+\t\tdiv = 1;\n+\t}\n+\telse if (div > 0x10000) {\n+\t\tdiv = 0x10000;\n+\t}\n+\tpSPI->DIV = div - 1;\n+\n+\treturn Chip_SPIM_GetClockRate(pSPI);\n+}\n+\n+/* Handler SPI transfer RX */\n+__STATIC_INLINE int Chip_SPIM_HandlerRx(LPC_SPI_T *pSPI, SPIM_XFER_T *xfer)\n+{\n+\tint ret = 0;\n+\tint flen = (xfer->options >> 8) & 0xF;\n+\tuint32_t data = Chip_SPI_ReadRawRXFifo(pSPI);\n+\n+\tif (xfer->rxCount > xfer->rxDoneCount) {\n+\t\tif (flen > 8) {\n+\t\t\t((uint16_t *) xfer->rxBuff)[xfer->rxDoneCount] = data;\n+\t\t}\n+\t\telse {\n+\t\t\t((uint8_t *) xfer->rxBuff)[xfer->rxDoneCount] = data;\n+\t\t}\n+\t\tret = 1;\n+\t}\n+\txfer->rxDoneCount++;\n+\tif ((xfer->rxCount == xfer->rxDoneCount) && xfer->cbFunc) {\n+\t\txfer->cbFunc(SPIM_EVT_RXDONE, xfer);\n+\t}\n+\treturn ret;\n+}\n+\n+/* SPI master transfer state change handler */\n+void Chip_SPIM_XferHandler(LPC_SPI_T *pSPI, SPIM_XFER_T *xfer)\n+{\n+\tuint32_t data;\n+\tuint8_t flen;\n+\n+\t/* Get length of a receive value */\n+\tflen = (pSPI->TXCTRL >> 24) & 0xF;\n+\n+\t/* Master asserts slave */\n+\tif ((Chip_SPI_GetStatus(pSPI) & SPI_STAT_SSA) != 0) {\n+\t\tChip_SPI_ClearStatus(pSPI, SPI_STAT_SSA);\n+\n+\t\txfer->state = SPIM_XFER_STATE_BUSY;\n+\t\t/* SSEL assertion callback */\n+\t\tif (xfer->cbFunc) {\n+\t\t\txfer->cbFunc(SPIM_EVT_SSELASSERT, xfer);\n+\t\t}\n+\t}\n+\n+\t/* Slave de-assertion */\n+\tif ((Chip_SPI_GetStatus(pSPI) & SPI_STAT_SSD) != 0) {\n+\t\tChip_SPI_ClearStatus(pSPI, SPI_STAT_SSD);\n+\n+\t\txfer->state = SPIM_XFER_STATE_DONE;\n+\t\t/* SSEL assertion callback */\n+\t\tif (xfer->cbFunc) {\n+\t\t\txfer->cbFunc(SPIM_EVT_SSELDEASSERT, xfer);\n+\t\t}\n+\t}\n+\n+\t/* Data received? */\n+\twhile ((Chip_SPI_GetStatus(pSPI) & SPI_STAT_RXRDY) != 0 && Chip_SPIM_HandlerRx(pSPI, xfer)) {}\n+\n+\t/* Transmit data? */\n+\twhile (((Chip_SPI_GetStatus(pSPI) & SPI_STAT_TXRDY) != 0)) {\n+\t\tint32_t len = xfer->rxCount > xfer->txCount ? xfer->rxCount : xfer->txCount;\n+\t\tif ((xfer->rxCount <= xfer->rxDoneCount) && (xfer->txCount <= xfer->txDoneCount)) {\n+\t\t\txfer->state = SPIM_XFER_STATE_DONE;\n+\t\t\t/* Transfer is done, this will be last data */\n+\t\t\tChip_SPIM_ForceEndOfTransfer(pSPI);\n+\t\t\treturn;\n+\t\t}\n+\t\tdata = 0;\n+\t\tif (xfer->txCount > xfer->txDoneCount) {\n+\t\t\tif (flen > 8) {\n+\t\t\t\tdata = ((uint16_t *) xfer->txBuff)[xfer->txDoneCount];\n+\t\t\t}\n+\t\t\telse {\n+\t\t\t\tdata = ((uint8_t *) xfer->txBuff)[xfer->txDoneCount];\n+\t\t\t}\n+\t\t}\n+\n+\t\t/* Check for end of transfer and end the transfer if needed */\n+\t\tif ((len == (xfer->txDoneCount + 1)) && (xfer->options & SPIM_XFER_OPTION_EOT)) {\n+\t\t\tpSPI->TXDATCTL = pSPI->TXCTRL | SPI_TXDATCTL_EOT | data;\n+\t\t}\n+\t\telse {\n+\t\t\tChip_SPI_WriteTXData(pSPI, data);\n+\t\t}\n+\n+\t\txfer->txDoneCount++;\n+\t\tif ((xfer->txCount == xfer->txDoneCount) && xfer->cbFunc) {\n+\t\t\txfer->cbFunc(SPIM_EVT_TXDONE, xfer);\n+\t\t}\n+\n+\t\t/* Check if we have a data ready to receive */\n+\t\tif (Chip_SPI_GetStatus(pSPI) & SPI_STAT_RXRDY) {\n+\t\t\tChip_SPIM_HandlerRx(pSPI, xfer);\n+\t\t}\n+\t}\n+}\n+\n+/* Start non-blocking SPI master transfer */\n+void Chip_SPIM_Xfer(LPC_SPI_T *pSPI, SPIM_XFER_T *xfer)\n+{\n+\t/* Setup SPI master select, data length, EOT/EOF timing, and RX data ignore */\n+\tpSPI->TXCTRL =\n+\t\t((xfer->options <<\n+\t\t  16) | SPI_TXDATCTL_DEASSERT_ALL | (xfer->rxBuff ? 0 : SPI_TXDATCTL_RXIGNORE)) & ~SPI_TXDATCTL_EOT;\n+\tChip_SPIM_AssertSSEL(pSPI, xfer->sselNum);\n+\n+\t/* Clear initial transfer states */\n+\txfer->txDoneCount = xfer->rxDoneCount = 0;\n+\n+\t/* Call main handler to start transfer */\n+\tChip_SPIM_XferHandler(pSPI, xfer);\n+}\n+\n+/* Perform blocking SPI master transfer */\n+void Chip_SPIM_XferBlocking(LPC_SPI_T *pSPI, SPIM_XFER_T *xfer)\n+{\n+\t/* Start trasnfer */\n+\tChip_SPIM_Xfer(pSPI, xfer);\n+\n+\t/* Wait for termination */\n+\twhile (xfer->state != SPIM_XFER_STATE_DONE) {\n+\t\tChip_SPIM_XferHandler(pSPI, xfer);\n+\t}\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/spis_5410x.c ./chip/src/spis_5410x.c\n--- a_tnusFF/chip/src/spis_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/spis_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,154 @@\n+/*\n+ * @brief LPC5410X SPI master driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Determine SSEL associated with the current data value */\n+static uint8_t Chip_SPIS_FindSSEL(LPC_SPI_T *pSPI, uint32_t data)\n+{\n+\tint i;\n+\tuint8_t ssel = 0;\n+\n+\tfor (i = 0; i <= 3; i++) {\n+\t\tif ((data & SPI_RXDAT_RXSSELNUM_INACTIVE(i)) == 0) {\n+\t\t\t/* Signal is active on low */\n+\t\t\tssel = (uint8_t) i;\n+\t\t}\n+\t}\n+\n+\treturn ssel;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* SPI slave transfer state change handler */\n+uint32_t Chip_SPIS_XferHandler(LPC_SPI_T *pSPI, SPIS_XFER_T *xfer)\n+{\n+\tuint32_t staterr, data;\n+\tuint8_t flen;\n+\n+\t/* Get length of a receive value */\n+\tflen = (pSPI->TXCTRL >> 24) & 0xF;\n+\n+\t/* Data received? */\n+\twhile ((Chip_SPI_GetStatus(pSPI) & SPI_STAT_RXRDY) != 0) {\n+\t\t/* Get raw data and status */\n+\t\tdata = Chip_SPI_ReadRXData(pSPI);\n+\t\tif (xfer->rxCount > xfer->rxDoneCount) {\n+\t\t\tif (flen > 8) {\n+\t\t\t\t((uint16_t *) xfer->rxBuff)[xfer->rxDoneCount] = data;\n+\t\t\t}\n+\t\t\telse {\n+\t\t\t\t((uint8_t *) xfer->rxBuff)[xfer->rxDoneCount] = data;\n+\t\t\t}\n+\t\t}\n+\t\txfer->rxDoneCount++;\n+\t\tif (xfer->cbFunc && (xfer->rxCount == xfer->rxDoneCount)) {\n+\t\t\txfer->cbFunc(SPIS_EVT_RXDONE, xfer);\n+\t\t}\n+\t}\n+\n+\t/* Get errors for later, we'll continue even if errors occur, but we notify\n+\t   caller on return */\n+\tstaterr = Chip_SPI_GetStatus(pSPI) & (SPI_STAT_RXOV | SPI_STAT_TXUR);\n+\tif (staterr != 0) {\n+\t\tChip_SPI_ClearStatus(pSPI, staterr);\n+\t}\n+\n+\t/* Slave assertion */\n+\tif ((Chip_SPI_GetStatus(pSPI) & SPI_STAT_SSA) != 0) {\n+\t\tChip_SPI_ClearStatus(pSPI, SPI_STAT_SSA);\n+\n+\t\t/* Determine SPI select. Read the data FIFO to get the slave number. Data\n+\t\t   should not be in the receive FIFO yet, only the statuses */\n+\t\txfer->sselNum = Chip_SPIS_FindSSEL(pSPI, Chip_SPI_ReadRawRXFifo(pSPI));\n+\n+\t\txfer->state = SPIS_XFER_STATE_BUSY;\n+\t\t/* SSEL assertion callback */\n+\t\tif (xfer->cbFunc) {\n+\t\t\txfer->cbFunc(SPIS_EVT_SSELASSERT, xfer);\n+\t\t}\n+\t}\n+\n+\t/* Transmit data? */\n+\twhile ((Chip_SPI_GetStatus(pSPI) & SPI_STAT_TXRDY) != 0) {\n+\t\tdata = 0;\n+\t\tif (xfer->txCount > xfer->txDoneCount) {\n+\t\t\tdata = flen > 8 ?\n+\t\t\t\t   (uint32_t) ((uint16_t *) xfer->txBuff)[xfer->txDoneCount] :\n+\t\t\t\t   (uint32_t) ((uint8_t *) xfer->txBuff)[xfer->txDoneCount];\n+\t\t}\n+\t\tChip_SPI_WriteTXData(pSPI, data);\n+\t\txfer->txDoneCount++;\n+\t\tif (xfer->cbFunc && (xfer->txCount == xfer->txDoneCount)) {\n+\t\t\txfer->cbFunc(SPIS_EVT_TXDONE, xfer);\n+\t\t}\n+\t}\n+\n+\t/* Slave de-assertion */\n+\tif (((Chip_SPI_GetStatus(pSPI) & SPI_STAT_SSD) != 0) && ((Chip_SPI_GetStatus(pSPI) & SPI_STAT_RXRDY) == 0)) {\n+\t\tChip_SPI_ClearStatus(pSPI, SPI_STAT_SSD);\n+\t\txfer->state = SPIS_XFER_STATE_DONE;\n+\t\t/* SSEL assertion callback */\n+\t\tif (xfer->cbFunc) {\n+\t\t\txfer->cbFunc(SPIS_EVT_SSELDEASSERT, xfer);\n+\t\t}\n+\t}\n+\n+\treturn staterr;\n+}\n+\n+/* SPI slave transfer blocking function */\n+uint32_t Chip_SPIS_XferBlocking(LPC_SPI_T *pSPI, SPIS_XFER_T *xfer)\n+{\n+\tuint32_t status = 0;\n+\n+\t/* Wait forever until deassertion event */\n+\twhile (xfer->state != SPIS_XFER_STATE_DONE) {\n+\t\tstatus = Chip_SPIS_XferHandler(pSPI, xfer);\n+\t}\n+\n+\treturn status;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/stopwatch_5410x.c ./chip/src/stopwatch_5410x.c\n--- a_tnusFF/chip/src/stopwatch_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/stopwatch_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,109 @@\n+/*\n+ * @brief LPC5410x specific stopwatch implementation\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+#include \"stopwatch.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Precompute these to optimize runtime */\n+static uint32_t ticksPerSecond;\n+static uint32_t ticksPerMs;\n+static uint32_t ticksPerUs;\n+\n+/* Use this timer for stopwatch */\n+#define LPC_TIMER32_1 LPC_TIMER0\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize stopwatch */\n+void StopWatch_Init(void)\n+{\n+\t/* Set prescaler to divide by 8 */\n+\tconst uint32_t prescaleDivisor = 8;\n+\tChip_TIMER_Init(LPC_TIMER32_1);\n+\tChip_TIMER_PrescaleSet(LPC_TIMER32_1, prescaleDivisor - 1);\n+\tChip_TIMER_Enable(LPC_TIMER32_1);\n+\n+\t/* Pre-compute tick rate. */\n+\tticksPerSecond = Chip_Clock_GetAsyncSyscon_ClockRate() / prescaleDivisor;\n+\tticksPerMs = ticksPerSecond / 1000;\n+\tticksPerUs = ticksPerSecond / 1000000;\n+}\n+\n+/* Start a stopwatch */\n+uint32_t StopWatch_Start(void)\n+{\n+\t/* Return the current timer count. */\n+\treturn Chip_TIMER_ReadCount(LPC_TIMER32_1);\n+}\n+\n+/* Returns number of ticks per second of the stopwatch timer */\n+uint32_t StopWatch_TicksPerSecond(void)\n+{\n+\treturn ticksPerSecond;\n+}\n+\n+/* Converts from stopwatch ticks to mS. */\n+uint32_t StopWatch_TicksToMs(uint32_t ticks)\n+{\n+\treturn ticks / ticksPerMs;\n+}\n+\n+/* Converts from stopwatch ticks to uS. */\n+uint32_t StopWatch_TicksToUs(uint32_t ticks)\n+{\n+\treturn ticks / ticksPerUs;\n+}\n+\n+/* Converts from mS to stopwatch ticks. */\n+uint32_t StopWatch_MsToTicks(uint32_t mS)\n+{\n+\treturn mS * ticksPerMs;\n+}\n+\n+/* Converts from uS to stopwatch ticks. */\n+uint32_t StopWatch_UsToTicks(uint32_t uS)\n+{\n+\treturn uS * ticksPerUs;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/syscon_5410x.c ./chip/src/syscon_5410x.c\n--- a_tnusFF/chip/src/syscon_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/syscon_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,192 @@\n+/*\n+ * @brief LPC5410X System & Control driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set source for non-maskable interrupt (NMI) */\n+void Chip_SYSCON_SetNMISource(uint32_t intsrc)\n+{\n+\tuint32_t reg;\n+\n+\treg = LPC_SYSCON->NMISRC;\n+#if defined(CORE_M4)\n+\treg &= ~SYSCON_NMISRC_M4_ENABLE;\n+#else\n+\treg &= ~SYSCON_NMISRC_M0_ENABLE;\n+\tintsrc = (intsrc << 8);\n+#endif\n+\n+\t/* First write without NMI bit, and then write source */\n+\tLPC_SYSCON->NMISRC = reg;\n+\tLPC_SYSCON->NMISRC = reg | intsrc;\n+}\n+\n+/* Enable interrupt used for NMI source */\n+void Chip_SYSCON_EnableNMISource(void)\n+{\n+#if defined(CORE_M4)\n+\tLPC_SYSCON->NMISRC |= SYSCON_NMISRC_M4_ENABLE;\n+#else\n+\tLPC_SYSCON->NMISRC |= SYSCON_NMISRC_M0_ENABLE;\n+#endif\n+}\n+\n+/* Disable interrupt used for NMI source */\n+void Chip_SYSCON_DisableNMISource(void)\n+{\n+#if defined(CORE_M4)\n+\tLPC_SYSCON->NMISRC &= ~SYSCON_NMISRC_M4_ENABLE;\n+#else\n+\tLPC_SYSCON->NMISRC &= ~SYSCON_NMISRC_M0_ENABLE;\n+#endif\n+}\n+\n+/* Enable or disable asynchronous APB bridge and subsystem */\n+void Chip_SYSCON_Enable_ASYNC_Syscon(bool enable)\n+{\n+\tif (enable) {\n+\t\tLPC_SYSCON->ASYNCAPBCTRL = 0x01;\n+\t}\n+\telse {\n+\t\tLPC_SYSCON->ASYNCAPBCTRL = 0x00;\n+\t}\n+}\n+\n+/* Resets a peripheral */\n+void Chip_SYSCON_PeriphReset(CHIP_SYSCON_PERIPH_RESET_T periph)\n+{\n+\tuint32_t pid = (uint32_t) periph;\n+\n+\tif (pid >= 128) {\n+\t\t/* Async resets mapped to 128 and above, offset for peripheral bit index */\n+\t\tpid = 1 << (((uint32_t) periph) - 128);\n+\t\tLPC_ASYNC_SYSCON->ASYNCPRESETCTRLSET = pid;\n+\t\tLPC_ASYNC_SYSCON->ASYNCPRESETCTRLCLR = pid;\n+\t}\n+\telse if (periph >= 32) {\n+\t\tpid = 1 << (((uint32_t) periph) - 32);\n+\t\tLPC_SYSCON->PRESETCTRLSET[1] = pid;\n+\t\tLPC_SYSCON->PRESETCTRLCLR[1] = pid;\n+\t}\n+\telse {\n+\t\tpid = 1 << ((uint32_t) periph);\n+\t\tLPC_SYSCON->PRESETCTRLSET[0] = pid;\n+\t\tLPC_SYSCON->PRESETCTRLCLR[0] = pid;\n+\t}\n+}\n+\n+/* Returns the computed value for a frequency measurement cycle */\n+uint32_t Chip_SYSCON_GetCompFreqMeas(uint32_t refClockRate)\n+{\n+\tuint32_t capval;\n+\tuint64_t clkrate = 0;\n+\n+\t/* Get raw capture value */\n+\tcapval = Chip_SYSCON_GetRawFreqMeasCapval();\n+\n+\t/* Limit CAPVAL check */\n+\tif (capval > 2) {\n+\t\tclkrate = (((uint64_t) capval - 2) * (uint64_t) refClockRate) / 0x4000;\n+\t}\n+\n+\treturn (uint32_t) clkrate;\n+}\n+\n+uint32_t Chip_SYSCON_PLLDelay(void)\n+{\n+\tuint32_t ifreq = Chip_Clock_GetSystemPLLInClockRate();\n+\tuint32_t coreclk = Chip_Clock_GetMainClockRate(), div = 0;\n+\tif (coreclk) {\n+\t\tdiv = 12000000 / coreclk;\n+\t}\n+\tif (!div) {\n+\t\tdiv = 1;\n+\t}\n+\tif (ifreq <= 100000) {\n+\t\t/* Dealy for 600 uSecs */\n+\t\treturn 1430 / div;\n+\t}\n+\telse if (ifreq <= 1000000) {\n+\t\t/* Delay for 300 uSecs */\n+\t\treturn 1210 / div;\n+\t}\n+\telse if (ifreq <= 10000000) {\n+\t\treturn 657 / div;\n+\t}\n+\telse {\n+\t\treturn 172 / div;\t/* 72 uSecs */\n+\t}\n+}\n+\n+void Chip_SYSCON_PowerUp(uint32_t powerupmask)\n+{\n+\t/* If turning the PLL back on, perform the following sequence to accelerate PLL lock */\n+\tif (powerupmask & SYSCON_PDRUNCFG_PD_SYS_PLL) {\n+\t\tvolatile uint32_t delayX;\n+\t\tuint32_t maxCCO = (1 << 18) | 0x5dd2;\t/* CCO = 1.6Ghz + MDEC enabled*/\n+\t\tuint32_t curSSCTRL = LPC_SYSCON->SYSPLLSSCTRL[0] & ~(1 << 17);\t/* current value with mreq cleared */\n+\n+\t\t/* Initialize  and power up PLL */\n+\t\tLPC_SYSCON->SYSPLLSSCTRL[0] = maxCCO;\n+\t\tLPC_SYSCON->PDRUNCFGCLR = SYSCON_PDRUNCFG_PD_SYS_PLL;\n+\n+\t\t/* Set mreq to activate */\n+\t\tLPC_SYSCON->SYSPLLSSCTRL[0] = maxCCO | (1 << 17);\n+\n+\t\t/* Delay for 72 uSec @ 12Mhz */\n+\t\tfor (delayX = Chip_SYSCON_PLLDelay(); delayX; --delayX) {}\n+\n+\t\t/* clear mreq to prepare for restoring mreq */\n+\t\tLPC_SYSCON->SYSPLLSSCTRL[0] = curSSCTRL;\n+\n+\t\t/* set original value back and activate */\n+\t\tLPC_SYSCON->SYSPLLSSCTRL[0] = curSSCTRL | (1 << 17);\n+\t}\n+\n+\t/* Enable peripheral states by setting low */\n+\tLPC_SYSCON->PDRUNCFGCLR = powerupmask;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/sysinit_5410x.c ./chip/src/sysinit_5410x.c\n--- a_tnusFF/chip/src/sysinit_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/sysinit_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,169 @@\n+/*\n+ * @brief LPC5410X Chip specific SystemInit\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Sets the best FLASH clock arte for the passed frequency */\n+static void setupFlashClocks(uint32_t freq)\n+{\n+\t/* v17.0 ROM support only - coarse FLASH clocking timing.\n+\t   FLASH access is setup based on voltage for v17.1 and later ROMs\n+\t   as part of the power library. */\n+\tif (Chip_POWER_GetROMVersion() == LPC5410X_ROMVER_0) {\n+\t\tif (freq < 20000000) {\n+\t\t\tChip_SYSCON_SetFLASHAccess(SYSCON_FLASH_1CYCLE);\n+\t\t}\n+\t\telse if (freq < 48000000) {\n+\t\t\tChip_SYSCON_SetFLASHAccess(SYSCON_FLASH_2CYCLE);\n+\t\t}\n+\t\telse if (freq < 72000000) {\n+\t\t\tChip_SYSCON_SetFLASHAccess(SYSCON_FLASH_3CYCLE);\n+\t\t}\n+\t\telse {\n+\t\t\tChip_SYSCON_SetFLASHAccess(SYSCON_FLASH_4CYCLE);\n+\t\t}\n+\t}\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Clock and PLL initialization based on the internal oscillator */\n+void Chip_SetupIrcClocking(uint32_t iFreq)\n+{\n+\tPLL_CONFIG_T pllConfig;\n+\tPLL_SETUP_T pllSetup;\n+\tPLL_ERROR_T pllError;\n+\n+\t/* Turn on the IRC by clearing the power down bit */\n+\tChip_SYSCON_PowerUp(SYSCON_PDRUNCFG_PD_IRC_OSC | SYSCON_PDRUNCFG_PD_IRC);\n+\n+\t/* Select the PLL input to the IRC */\n+\tChip_Clock_SetSystemPLLSource(SYSCON_PLLCLKSRC_IRC);\n+\n+\t/* Setup FLASH access */\n+\tsetupFlashClocks(iFreq);\n+\n+\t/* Power down PLL to change the PLL divider ratio */\n+\tChip_SYSCON_PowerDown(SYSCON_PDRUNCFG_PD_SYS_PLL);\n+\n+\t/* Setup PLL configuration */\n+\tpllConfig.desiredRate = iFreq;\n+\tpllConfig.InputRate = 0;\n+\tpllConfig.flags = PLL_CONFIGFLAG_FORCENOFRACT;\n+\tpllError = Chip_Clock_SetupPLLData(&pllConfig, &pllSetup);\n+\tif (pllError == PLL_ERROR_SUCCESS) {\n+\t\tpllSetup.flags = PLL_SETUPFLAG_WAITLOCK | PLL_SETUPFLAG_ADGVOLT;\n+\t\tpllError = Chip_Clock_SetupSystemPLLPrec(&pllSetup);\n+\t}\n+\n+\t/* Set system clock divider to 1 */\n+\tChip_Clock_SetSysClockDiv(1);\n+\n+\t/* Set main clock source to the system PLL. This will drive 24MHz\n+\t   for the main clock and 24MHz for the system clock */\n+\tChip_Clock_SetMainClockSource(SYSCON_MAINCLKSRC_PLLOUT);\n+\n+\t/* ASYSNC SYSCON needs to be on or all serial peripheral won't work.\n+\t   Be careful if PLL is used or not, ASYNC_SYSCON source needs to be\n+\t   selected carefully. */\n+\tChip_SYSCON_Enable_ASYNC_Syscon(true);\n+\tChip_Clock_SetAsyncSysconClockDiv(1);\n+\tChip_Clock_SetAsyncSysconClockSource(SYSCON_ASYNC_IRC);\n+}\n+\n+/* Clock and PLL initialization based on the external clock input */\n+void Chip_SetupExtInClocking(uint32_t iFreq)\n+{\n+\tPLL_CONFIG_T pllConfig;\n+\tPLL_SETUP_T pllSetup;\n+\tPLL_ERROR_T pllError;\n+\n+\t/* IOCON clock left on, this is needed is CLKIN is used. */\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_IOCON);\n+\n+\t/* Select external clock input pin */\n+\tChip_IOCON_PinMuxSet(LPC_IOCON, 0, 22, (IOCON_MODE_PULLUP |\n+\t\t\t\t\t\t\t\t\t\t\tIOCON_FUNC1 | IOCON_DIGITAL_EN | IOCON_INPFILT_OFF));\n+\n+\t/* Select the PLL input to the EXT clock input */\n+\tChip_Clock_SetSystemPLLSource(SYSCON_PLLCLKSRC_CLKIN);\n+\n+\t/* Setup FLASH access */\n+\tsetupFlashClocks(iFreq);\n+\n+\t/* Power down PLL to change the PLL divider ratio */\n+\tChip_SYSCON_PowerDown(SYSCON_PDRUNCFG_PD_SYS_PLL);\n+\n+\t/* Setup PLL configuration */\n+\tpllConfig.desiredRate = iFreq;\n+\tpllConfig.InputRate = 0;\n+\tpllConfig.flags = PLL_CONFIGFLAG_FORCENOFRACT;\n+\tpllError = Chip_Clock_SetupPLLData(&pllConfig, &pllSetup);\n+\tif (pllError == PLL_ERROR_SUCCESS) {\n+\t\tpllSetup.flags = PLL_SETUPFLAG_WAITLOCK | PLL_SETUPFLAG_ADGVOLT;\n+\t\tpllError = Chip_Clock_SetupSystemPLLPrec(&pllSetup);\n+\t}\n+\n+\t/* Set system clock divider to 1 */\n+\tChip_Clock_SetSysClockDiv(1);\n+\n+\t/* Set main clock source to the system PLL. This will drive 24MHz\n+\t   for the main clock and 24MHz for the system clock */\n+\tChip_Clock_SetMainClockSource(SYSCON_MAINCLKSRC_PLLOUT);\n+\n+\t/* ASYSNC SYSCON needs to be on or all serial peripheral won't work.\n+\t   Be careful if PLL is used or not, ASYNC_SYSCON source needs to be\n+\t   selected carefully. */\n+\tChip_SYSCON_Enable_ASYNC_Syscon(true);\n+\tChip_Clock_SetAsyncSysconClockDiv(1);\n+\tChip_Clock_SetAsyncSysconClockSource(SYSCON_ASYNC_IRC);\n+}\n+\n+/* Set up and initialize hardware prior to call to main */\n+void Chip_SystemInit(void)\n+{\n+\t/* Initial internal clocking @100MHz */\n+\tChip_SetupIrcClocking(96000000);\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/timer_5410x.c ./chip/src/timer_5410x.c\n--- a_tnusFF/chip/src/timer_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/timer_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,133 @@\n+/*\n+ * @brief LPC5410X 32-bit Timer/PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+struct TBASE_TO_TMRBITS {\n+\tuint32_t base;\n+\tuint8_t  clockID;\n+\tuint8_t  resetID;\n+};\n+\n+#define LAST_TIMER      (4)\n+static const struct TBASE_TO_TMRBITS tbaseToTimerIDs[LAST_TIMER + 1] = {\n+\t{LPC_TIMER0_BASE, (uint8_t) SYSCON_CLOCK_TIMER0, (uint8_t) RESET_TIMER0},\n+\t{LPC_TIMER1_BASE, (uint8_t) SYSCON_CLOCK_TIMER1, (uint8_t) RESET_TIMER1},\n+\t{LPC_TIMER2_BASE, (uint8_t) SYSCON_CLOCK_TIMER2, (uint8_t) RESET_TIMER2},\n+\t{LPC_TIMER3_BASE, (uint8_t) SYSCON_CLOCK_TIMER3, (uint8_t) RESET_TIMER3},\n+\t{LPC_TIMER4_BASE, (uint8_t) SYSCON_CLOCK_TIMER4, (uint8_t) RESET_TIMER4}\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Return index into tbaseToTimerIDs for timers 0-4 */\n+static int GetClockID(LPC_TIMER_T *pTMR)\n+{\n+\tint timerId = LAST_TIMER;\n+\n+\twhile (timerId >= 0) {\n+\t\tif (pTMR == (LPC_TIMER_T *) tbaseToTimerIDs[timerId].base) {\n+\t\t\treturn timerId;\n+\t\t}\n+\n+\t\ttimerId--;\n+\t}\n+\n+\t/* Waill return timer 0 if no timer match */\n+\treturn 0;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize a timer */\n+void Chip_TIMER_Init(LPC_TIMER_T *pTMR)\n+{\n+\tint clockId = GetClockID(pTMR);\n+\n+\tChip_Clock_EnablePeriphClock((CHIP_SYSCON_CLOCK_T) tbaseToTimerIDs[clockId].clockID);\n+\tChip_SYSCON_PeriphReset((CHIP_SYSCON_PERIPH_RESET_T) tbaseToTimerIDs[clockId].resetID);\n+}\n+\n+/*\tShutdown a timer */\n+void Chip_TIMER_DeInit(LPC_TIMER_T *pTMR)\n+{\n+\tint clockId = GetClockID(pTMR);\n+\n+\tChip_Clock_DisablePeriphClock((CHIP_SYSCON_CLOCK_T) tbaseToTimerIDs[clockId].clockID);\n+}\n+\n+/* Resets the timer counter and prescale counts to 0 */\n+void Chip_TIMER_Reset(LPC_TIMER_T *pTMR)\n+{\n+\tuint32_t reg;\n+\n+\t/* Disable timer, set terminal count to non-0 */\n+\treg = pTMR->TCR;\n+\tpTMR->TCR = 0;\n+\tpTMR->TC = 1;\n+\n+\t/* Reset timer counter */\n+\tpTMR->TCR = TIMER_RESET;\n+\n+\t/* Wait for terminal count to clear */\n+\twhile (pTMR->TC != 0) {}\n+\n+\t/* Restore timer state */\n+\tpTMR->TCR = reg;\n+}\n+\n+/* Sets external match control (MATn.matchnum) pin control */\n+void Chip_TIMER_ExtMatchControlSet(LPC_TIMER_T *pTMR, int8_t initial_state,\n+\t\t\t\t\t\t\t\t   TIMER_PIN_MATCH_STATE_T matchState, int8_t matchnum)\n+{\n+\tuint32_t mask, reg;\n+\n+\t/* Clear bits corresponding to selected match register */\n+\tmask = (1 << matchnum) | (0x03 << (4 + (matchnum * 2)));\n+\t/* Also mask reserved bits */\n+\treg = (pTMR->EMR & TIMER_EMR_MASK) & ~mask;\n+\n+\t/* Set new configuration for selected match register */\n+\tpTMR->EMR = reg | (((uint32_t) initial_state) << matchnum) |\n+\t\t\t\t(((uint32_t) matchState) << (4 + (matchnum * 2)));\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/uart_5410x.c ./chip/src/uart_5410x.c\n--- a_tnusFF/chip/src/uart_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/uart_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,364 @@\n+/*\n+ * @brief LPC5410X UART driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2015\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Return UART clock ID from the UART register address */\n+static CHIP_SYSCON_CLOCK_T getUARTClockID(LPC_USART_T *pUART)\n+{\n+\tif (pUART == LPC_USART0) {\n+\t\treturn SYSCON_CLOCK_USART0;\n+\t}\n+\telse if (pUART == LPC_USART1) {\n+\t\treturn SYSCON_CLOCK_USART1;\n+\t}\n+\telse if (pUART == LPC_USART2) {\n+\t\treturn SYSCON_CLOCK_USART2;\n+\t}\n+\treturn SYSCON_CLOCK_USART3;\n+}\n+\n+/* PRIVATE: Division logic to divide without integer overflow */\n+static uint32_t _UART_DivClk(uint32_t pclk, uint32_t m)\n+{\n+\tuint32_t q, r, u = pclk >> 24, l = pclk << 8;\n+\tm = m + 256;\n+\tq = (1 << 24) / m;\n+\tr = (1 << 24) - (q * m);\n+\treturn ((q * u) << 8) + (((r * u) << 8) + l) / m;\n+}\n+\n+/* PRIVATE: Get highest Over sampling value */\n+static uint32_t _UART_GetHighDiv(uint32_t val, uint8_t strict)\n+{\n+\tint32_t i, max = strict ? 16 : 5;\n+\tfor (i = 16; i >= max; i--) {\n+\t\tif (!(val % i)) {\n+\t\t\treturn i;\n+\t\t}\n+\t}\n+\treturn 0;\n+}\n+\n+/* Calculate error difference */\n+static int32_t _CalcErr(uint32_t n, uint32_t d, uint32_t *prev)\n+{\n+\tuint32_t err = n - (n / d) * d;\n+\tuint32_t herr = ((n / d) + 1) * d - n;\n+\tif (herr < err) {\n+\t\terr = herr;\n+\t}\n+\n+\tif (*prev <= err) {\n+\t\treturn 0;\n+\t}\n+\t*prev = err;\n+\treturn (herr == err) + 1;\n+}\n+\n+/* Calculate the base DIV value */\n+static ErrorCode_t _UART_CalcDiv(UART_BAUD_T *ub)\n+{\n+\tint32_t i = 0;\n+\tuint32_t perr = ~0UL;\n+\n+\tif (!ub->div) {\n+\t\ti = ub->ovr ? ub->ovr : 16;\n+\t}\n+\n+\tfor (; i > 4; i--) {\n+\t\tint32_t tmp = _CalcErr(ub->clk, ub->baud * i, &perr);\n+\n+\t\t/* Continue when no improvement seen in err value */\n+\t\tif (!tmp) {\n+\t\t\tcontinue;\n+\t\t}\n+\n+\t\tub->div = tmp - 1;\n+\t\tif (ub->ovr == i) {\n+\t\t\tbreak;\n+\t\t}\n+\t\tub->ovr = i;\n+\t}\n+\n+\tif (!ub->ovr) {\n+\t\treturn ERR_UART_BAUDRATE;\n+\t}\n+\n+\tub->div += ub->clk / (ub->baud * ub->ovr);\n+\tif (!ub->div) {\n+\t\treturn ERR_UART_BAUDRATE;\n+\t}\n+\n+\tub->baud = ub->clk / (ub->div * ub->ovr);\n+\treturn LPC_OK;\n+}\n+\n+/* Calculate the best MUL value */\n+static void _UART_CalcMul(UART_BAUD_T *ub)\n+{\n+\tuint32_t m, perr = ~0UL, pclk = ub->clk, ovr = ub->ovr;\n+\n+\t/* If clock is UART's base clock calculate only the divider */\n+\tfor (m = 0; m < 256; m++) {\n+\t\tuint32_t ov = ovr, x, v, tmp;\n+\n+\t\t/* Get clock and calculate error */\n+\t\tx = _UART_DivClk(pclk, m);\n+\t\ttmp = _CalcErr(x, ub->baud, &perr);\n+\t\tv = (x / ub->baud) + tmp - 1;\n+\n+\t\t/* Update if new error is better than previous best */\n+\t\tif (!tmp || (ovr && (v % ovr)) ||\n+\t\t\t(!ovr && ((ov = _UART_GetHighDiv(v, ovr)) == 0))) {\n+\t\t\tcontinue;\n+\t\t}\n+\n+\t\tub->ovr = ov;\n+\t\tub->mul = m;\n+\t\tub->clk = x;\n+\t\tub->div = tmp - 1;\n+\t}\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Function to calculate UART Baud rate */\n+uint32_t Chip_UART_CalcBaud(LPC_USART_T *pUART, UART_BAUD_T *pBaud)\n+{\n+\tif (!pBaud->mul) {\n+\t\t_UART_CalcMul(pBaud);\n+\t}\n+\n+\treturn _UART_CalcDiv(pBaud);\n+}\n+\n+/* Initialize the UART peripheral */\n+void Chip_UART_Init(LPC_USART_T *pUART)\n+{\n+\t/* Enable USART clock */\n+\tChip_Clock_EnablePeriphClock(getUARTClockID(pUART));\n+\n+\t/* UART reset */\n+\tif (pUART == LPC_USART0) {\n+\t\t/* Peripheral reset control to USART0 */\n+\t\tChip_SYSCON_PeriphReset(RESET_USART0);\n+\t}\n+\telse if (pUART == LPC_USART1) {\n+\t\t/* Peripheral reset control to USART1 */\n+\t\tChip_SYSCON_PeriphReset(RESET_USART1);\n+\t}\n+\telse if (pUART == LPC_USART2) {\n+\t\t/* Peripheral reset control to USART2 */\n+\t\tChip_SYSCON_PeriphReset(RESET_USART2);\n+\t}\n+\telse if (pUART == LPC_USART3) {\n+\t\t/* Peripheral reset control to USART3 */\n+\t\tChip_SYSCON_PeriphReset(RESET_USART3);\n+\t}\n+\n+}\n+\n+/* Initialize the UART peripheral */\n+void Chip_UART_DeInit(LPC_USART_T *pUART)\n+{\n+\t/* Enable USART clock */\n+\tChip_Clock_DisablePeriphClock(getUARTClockID(pUART));\n+}\n+\n+/* Transmit a byte array through the UART peripheral (non-blocking) */\n+int Chip_UART_Send(LPC_USART_T *pUART, const void *data, int numBytes)\n+{\n+\tint sent = 0;\n+\tuint8_t *p8 = (uint8_t *) data;\n+\n+\t/* Send until the transmit FIFO is full or out of bytes */\n+\twhile ((sent < numBytes) &&\n+\t\t   ((Chip_UART_GetStatus(pUART) & UART_STAT_TXRDY) != 0)) {\n+\t\tChip_UART_SendByte(pUART, *p8);\n+\t\tp8++;\n+\t\tsent++;\n+\t}\n+\n+\treturn sent;\n+}\n+\n+/* Transmit a byte array through the UART peripheral (blocking) */\n+int Chip_UART_SendBlocking(LPC_USART_T *pUART, const void *data, int numBytes)\n+{\n+\tint pass, sent = 0;\n+\tuint8_t *p8 = (uint8_t *) data;\n+\n+\twhile (numBytes > 0) {\n+\t\tpass = Chip_UART_Send(pUART, p8, numBytes);\n+\t\tnumBytes -= pass;\n+\t\tsent += pass;\n+\t\tp8 += pass;\n+\t}\n+\n+\treturn sent;\n+}\n+\n+/* Read data through the UART peripheral (non-blocking) */\n+int Chip_UART_Read(LPC_USART_T *pUART, void *data, int numBytes)\n+{\n+\tint readBytes = 0;\n+\tuint8_t *p8 = (uint8_t *) data;\n+\n+\t/* Send until the transmit FIFO is full or out of bytes */\n+\twhile ((readBytes < numBytes) &&\n+\t\t   ((Chip_UART_GetStatus(pUART) & UART_STAT_RXRDY) != 0)) {\n+\t\t*p8 = Chip_UART_ReadByte(pUART);\n+\t\tp8++;\n+\t\treadBytes++;\n+\t}\n+\n+\treturn readBytes;\n+}\n+\n+/* Read data through the UART peripheral (blocking) */\n+int Chip_UART_ReadBlocking(LPC_USART_T *pUART, void *data, int numBytes)\n+{\n+\tint pass, readBytes = 0;\n+\tuint8_t *p8 = (uint8_t *) data;\n+\n+\twhile (readBytes < numBytes) {\n+\t\tpass = Chip_UART_Read(pUART, p8, numBytes);\n+\t\tnumBytes -= pass;\n+\t\treadBytes += pass;\n+\t\tp8 += pass;\n+\t}\n+\n+\treturn readBytes;\n+}\n+\n+/* Set baud rate for UART */\n+void Chip_UART_SetBaud(LPC_USART_T *pUART, uint32_t baudrate)\n+{\n+\tUART_BAUD_T baud;\n+\n+\t/* Set up baudrate parameters */\n+\tbaud.clk = Chip_Clock_GetAsyncSyscon_ClockRate();\t/* Clock frequency */\n+\tbaud.baud = baudrate;\t/* Required baud rate */\n+\tbaud.ovr = 0;\t/* Set the oversampling to the recommended rate */\n+\tbaud.mul = baud.div = 0;\n+\tChip_UART_CalcBaud(pUART, &baud);\n+\n+\t/* Enable register clock to the fractional divider */\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_FRG);\n+\n+\t/* Set fractional control register */\n+\tChip_SYSCON_SetUSARTFRGCtrl(baud.mul, 0xFF);\n+\tChip_UART_Div(pUART, baud.div, baud.ovr);\n+}\n+\n+/* UART receive-only interrupt handler for ring buffers */\n+void Chip_UART_RXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB)\n+{\n+\t/* New data will be ignored if data not popped in time */\n+\twhile ((Chip_UART_GetStatus(pUART) & UART_STAT_RXRDY) != 0) {\n+\t\tuint8_t ch = Chip_UART_ReadByte(pUART);\n+\t\tRingBuffer_Insert(pRB, &ch);\n+\t}\n+}\n+\n+/* UART transmit-only interrupt handler for ring buffers */\n+void Chip_UART_TXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB)\n+{\n+\tuint8_t ch;\n+\n+\t/* Fill FIFO until full or until TX ring buffer is empty */\n+\twhile (((Chip_UART_GetStatus(pUART) & UART_STAT_TXRDY) != 0) &&\n+\t\t   RingBuffer_Pop(pRB, &ch)) {\n+\t\tChip_UART_SendByte(pUART, ch);\n+\t}\n+}\n+\n+/* Populate a transmit ring buffer and start UART transmit */\n+uint32_t Chip_UART_SendRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, const void *data, int count)\n+{\n+\tuint32_t ret;\n+\tuint8_t *p8 = (uint8_t *) data;\n+\n+\t/* Don't let UART transmit ring buffer change in the UART IRQ handler */\n+\tChip_UART_IntDisable(pUART, UART_INTEN_TXRDY);\n+\n+\t/* Move as much data as possible into transmit ring buffer */\n+\tret = RingBuffer_InsertMult(pRB, p8, count);\n+\tChip_UART_TXIntHandlerRB(pUART, pRB);\n+\n+\t/* Add additional data to transmit ring buffer if possible */\n+\tret += RingBuffer_InsertMult(pRB, (p8 + ret), (count - ret));\n+\n+\t/* Enable UART transmit interrupt */\n+\tChip_UART_IntEnable(pUART, UART_INTEN_TXRDY);\n+\n+\treturn ret;\n+}\n+\n+/* Copy data from a receive ring buffer */\n+int Chip_UART_ReadRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, void *data, int bytes)\n+{\n+\t(void) pUART;\n+\n+\treturn RingBuffer_PopMult(pRB, (uint8_t *) data, bytes);\n+}\n+\n+/* UART receive/transmit interrupt handler for ring buffers */\n+void Chip_UART_IRQRBHandler(LPC_USART_T *pUART, RINGBUFF_T *pRXRB, RINGBUFF_T *pTXRB)\n+{\n+\t/* Handle transmit interrupt if enabled */\n+\tif ((Chip_UART_GetStatus(pUART) & UART_STAT_TXRDY) != 0) {\n+\t\tChip_UART_TXIntHandlerRB(pUART, pTXRB);\n+\n+\t\t/* Disable transmit interrupt if the ring buffer is empty */\n+\t\tif (RingBuffer_IsEmpty(pTXRB)) {\n+\t\t\tChip_UART_IntDisable(pUART, UART_INTEN_TXRDY);\n+\t\t}\n+\t}\n+\n+\t/* Handle receive interrupt */\n+\tChip_UART_RXIntHandlerRB(pUART, pRXRB);\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/chip/src/wwdt_5410x.c ./chip/src/wwdt_5410x.c\n--- a_tnusFF/chip/src/wwdt_5410x.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./chip/src/wwdt_5410x.c\t2016-10-22 23:17:43.584840278 -0300\n@@ -0,0 +1,61 @@\n+/*\n+ * @brief LPC5410X WWDT chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the Watchdog timer */\n+void Chip_WWDT_Init(LPC_WWDT_T *pWWDT)\n+{\n+\tChip_Clock_EnablePeriphClock(SYSCON_CLOCK_WWDT);\n+\tChip_SYSCON_PeriphReset(RESET_WWDT);\n+\n+\t/* Disable watchdog */\n+\tpWWDT->MOD       = 0;\n+\tpWWDT->TC        = 0xFF;\n+\tpWWDT->WARNINT   = 0x3FF;\n+\tpWWDT->WINDOW    = 0xFFFFFF;\n+}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/config.mk ./config.mk\n--- a_tnusFF/config.mk\t1969-12-31 21:00:00.000000000 -0300\n+++ ./config.mk\t2016-10-22 23:24:26.052851056 -0300\n@@ -0,0 +1,12 @@\n+# Executable name\n+APP=${{Program_Name string:blinking}}\n+\n+MODULES=app base board chip\n+DEFINES=CORE_M4 __USE_LPCOPEN __USE_NEWLIB __LPC5410X__ __CODE_RED\n+LIBRARY=power_m4f_hard\n+\n+# Verbose Build: no|yes\n+VERBOSE=${{Verbose_Build items:no|yes}}\n+\n+# Optimization Level: debug|none|basic|standar|full|size|speed\n+OPT_LEVEL=${{Optimization_Level items:debug|none|basic|standar|full|size|speed}}\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/linker.ld ./linker.ld\n--- a_tnusFF/linker.ld\t1969-12-31 21:00:00.000000000 -0300\n+++ ./linker.ld\t2016-10-22 23:17:43.588840279 -0300\n@@ -0,0 +1,253 @@\n+\n+MEMORY\n+{\n+  /* Define each memory region */\n+  MFlash512 (rx) : ORIGIN = 0x0, LENGTH = 0x80000 /* 512K bytes (alias Flash) */  \n+  Ram0_64 (rwx) : ORIGIN = 0x2000000, LENGTH = 0xffe0 /* 64K - 32 bytes (alias RAM) */  \n+  Ram1_32 (rwx) : ORIGIN = 0x2010000, LENGTH = 0x8000 /* 32K bytes (alias RAM2) */  \n+  Ram2_8 (rwx) : ORIGIN = 0x3400000, LENGTH = 0x2000 /* 8K bytes (alias RAM3) */  \n+}\n+\n+  /* Define a symbol for the top of each memory region */\n+  __base_MFlash512 = 0x0  ; /* MFlash512 */  \n+  __base_Flash = 0x0 ; /* Flash */  \n+  __top_MFlash512 = 0x0 + 0x80000 ; /* 512K bytes */  \n+  __top_Flash = 0x0 + 0x80000 ; /* 512K bytes */  \n+  __base_Ram0_64 = 0x2000000  ; /* Ram0_64 */  \n+  __base_RAM = 0x2000000 ; /* RAM */  \n+  __top_Ram0_64 = 0x2000000 + 0x10000 ; /* 64K bytes */  \n+  __top_RAM = 0x2000000 + 0x10000 - 32 ; /* 64K bytes */  \n+  __base_Ram1_32 = 0x2010000  ; /* Ram1_32 */  \n+  __base_RAM2 = 0x2010000 ; /* RAM2 */  \n+  __top_Ram1_32 = 0x2010000 + 0x8000 ; /* 32K bytes */  \n+  __top_RAM2 = 0x2010000 + 0x8000 ; /* 32K bytes */  \n+  __base_Ram2_8 = 0x3400000  ; /* Ram2_8 */  \n+  __base_RAM3 = 0x3400000 ; /* RAM3 */  \n+  __top_Ram2_8 = 0x3400000 + 0x2000 ; /* 8K bytes */  \n+  __top_RAM3 = 0x3400000 + 0x2000 ; /* 8K bytes */  \n+\n+ENTRY(ResetISR)\n+\n+SECTIONS\n+{\n+    /* MAIN TEXT SECTION */\n+    .text : ALIGN(4)\n+    {\n+        FILL(0xff)\n+        __vectors_start__ = ABSOLUTE(.) ;\n+        KEEP(*(.isr_vector))\n+        /* Global Section Table */\n+        . = ALIGN(4) ; \n+        __section_table_start = .;\n+        __data_section_table = .;\n+        LONG(LOADADDR(.data));\n+        LONG(    ADDR(.data));\n+        LONG(  SIZEOF(.data));\n+        LONG(LOADADDR(.data_RAM2_core_m0slave_text));\n+        LONG(    ADDR(.data_RAM2_core_m0slave_text));\n+        LONG(  SIZEOF(.data_RAM2_core_m0slave_text));\n+        LONG(LOADADDR(.data_RAM2_core_m0slave_ARM_extab));\n+        LONG(    ADDR(.data_RAM2_core_m0slave_ARM_extab));\n+        LONG(  SIZEOF(.data_RAM2_core_m0slave_ARM_extab));\n+        LONG(LOADADDR(.data_RAM2_core_m0slave_ARM_exidx));\n+        LONG(    ADDR(.data_RAM2_core_m0slave_ARM_exidx));\n+        LONG(  SIZEOF(.data_RAM2_core_m0slave_ARM_exidx));\n+        LONG(LOADADDR(.data_RAM2_core_m0slave_data));\n+        LONG(    ADDR(.data_RAM2_core_m0slave_data));\n+        LONG(  SIZEOF(.data_RAM2_core_m0slave_data));\n+        LONG(LOADADDR(.data_RAM2));\n+        LONG(    ADDR(.data_RAM2));\n+        LONG(  SIZEOF(.data_RAM2));\n+        LONG(LOADADDR(.data_RAM3));\n+        LONG(    ADDR(.data_RAM3));\n+        LONG(  SIZEOF(.data_RAM3));\n+        __data_section_table_end = .;\n+        __bss_section_table = .;\n+        LONG(    ADDR(.bss));\n+        LONG(  SIZEOF(.bss));\n+        LONG(    ADDR(.bss_RAM2));\n+        LONG(  SIZEOF(.bss_RAM2));\n+        LONG(    ADDR(.bss_RAM3));\n+        LONG(  SIZEOF(.bss_RAM3));\n+        __bss_section_table_end = .;\n+        __section_table_end = . ;\n+\t    /* End of Global Section Table */\n+\n+        *(.after_vectors*)\n+\n+    } >MFlash512\n+\n+    .text : ALIGN(4)    \n+    {\n+        *(.text*)\n+        *(.rodata .rodata.* .constdata .constdata.*)\n+        . = ALIGN(4);\n+    } > MFlash512\n+    /*\n+     * for exception handling/unwind - some Newlib functions (in common\n+     * with C++ and STDC++) use this. \n+     */\n+    .ARM.extab : ALIGN(4) \n+    {\n+        *(.ARM.extab* .gnu.linkonce.armextab.*)\n+    } > MFlash512\n+    __exidx_start = .;\n+\n+    .ARM.exidx : ALIGN(4)\n+    {\n+        *(.ARM.exidx* .gnu.linkonce.armexidx.*)\n+    } > MFlash512\n+    __exidx_end = .;\n+\n+    _etext = .;\n+        \n+    /* DATA section for Ram1_32 */\n+  \n+    .data_RAM2_core_m0slave_text : SUBALIGN(4)\n+    {\n+       FILL(0xff)\n+       PROVIDE(__start_data_RAM2 = .) ;\n+       __core_m0slave_START__ = .; /* start of slave image */\n+       KEEP(*(.core_m0slave))\n+    } > Ram1_32 AT>MFlash512\n+\n+    /* M0SLAVE extab and exidx sections */\n+    .data_RAM2_core_m0slave_ARM_extab . : SUBALIGN(4)\n+    {\n+        FILL(0xff)\n+        KEEP(*(.core_m0slave.ARM.extab))\n+    } > Ram1_32 AT>MFlash512 \n+\n+    .data_RAM2_core_m0slave_ARM_exidx . : SUBALIGN(4)\n+    {\n+        FILL(0xff)\n+        KEEP(*(.core_m0slave.ARM.exidx))\n+    } > Ram1_32 AT>MFlash512 \n+\n+    /* M0SLAVE data section */\n+    .data_RAM2_core_m0slave_data . : SUBALIGN(4)\n+    {\n+        FILL(0xff)\n+        KEEP(*(.core_m0slave.data_*)) KEEP(*(.core_m0slave.data))\n+        __core_m0slave_END__ = .; /* end of slave image */\n+\n+        /* perform some simple sanity checks */\n+        /*\n+        ASSERT(!(__core_m0slave_START__ == __core_m0slave_END__), \"No slave code for _core_m0slave\");\n+        ASSERT( (ABSOLUTE(__core_m0slave_START__) == __vectors_start___core_m0slave), \"M0SLAVE execute address differs from address provided in source image\");\n+        */\n+    } > Ram1_32 AT>MFlash512 \n+    .data_RAM2 : ALIGN(4)\n+    {\n+        FILL(0xff)\n+        *(.ramfunc.$RAM2)\n+        *(.ramfunc.$Ram1_32)\n+        *(.data.$RAM2*)\n+        *(.data.$Ram1_32*)\n+        . = ALIGN(4) ;\n+        PROVIDE(__end_data_RAM2 = .) ;\n+     } > Ram1_32 AT>MFlash512\n+\n+    /* DATA section for Ram2_8 */\n+  \n+    .data_RAM3 : ALIGN(4)\n+    {\n+        FILL(0xff)\n+        PROVIDE(__start_data_RAM3 = .) ;\n+        *(.ramfunc.$RAM3)\n+        *(.ramfunc.$Ram2_8)\n+        *(.data.$RAM3*)\n+        *(.data.$Ram2_8*)\n+        . = ALIGN(4) ;\n+        PROVIDE(__end_data_RAM3 = .) ;\n+     } > Ram2_8 AT>MFlash512\n+\n+    /* MAIN DATA SECTION */\n+    .uninit_RESERVED : ALIGN(4)\n+    {\n+        KEEP(*(.bss.$RESERVED*))\n+        . = ALIGN(4) ;\n+        _end_uninit_RESERVED = .;\n+    } > Ram0_64\n+    /* Main DATA section (Ram0_64) */\n+    .data : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       _data = . ;\n+       *(vtable)\n+       *(.ramfunc*)\n+       *(.data*)\n+       . = ALIGN(4) ;\n+       _edata = . ;\n+    } > Ram0_64 AT>MFlash512\n+    /* BSS section for Ram1_32 */\n+    .bss_RAM2 : ALIGN(4)\n+    {\n+       PROVIDE(__start_bss_RAM2 = .) ;\n+       *(.bss.$RAM2*)\n+       *(.bss.$Ram1_32*)\n+       . = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */\n+       PROVIDE(__end_bss_RAM2 = .) ;\n+    } > Ram1_32 \n+    /* BSS section for Ram2_8 */\n+    .bss_RAM3 : ALIGN(4)\n+    {\n+       PROVIDE(__start_bss_RAM3 = .) ;\n+       *(.bss.$RAM3*)\n+       *(.bss.$Ram2_8*)\n+       . = ALIGN (. != 0 ? 4 : 1) ; /* avoid empty segment */\n+       PROVIDE(__end_bss_RAM3 = .) ;\n+    } > Ram2_8 \n+    /* MAIN BSS SECTION */\n+    .bss : ALIGN(4)\n+    {\n+        _bss = .;\n+        *(.bss*)\n+        *(COMMON)\n+        . = ALIGN(4) ;\n+        _ebss = .;\n+        PROVIDE(end = .);\n+    } > Ram0_64\n+    /* NOINIT section for Ram1_32 */\n+    .noinit_RAM2 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM2*)\n+       *(.noinit.$Ram1_32*)\n+       . = ALIGN(4) ;\n+    } > Ram1_32 \n+    /* NOINIT section for Ram2_8 */\n+    .noinit_RAM3 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM3*)\n+       *(.noinit.$Ram2_8*)\n+       . = ALIGN(4) ;\n+    } > Ram2_8 \n+    /* DEFAULT NOINIT SECTION */\n+    .noinit (NOLOAD): ALIGN(4)\n+    {\n+        _noinit = .;\n+        *(.noinit*) \n+         . = ALIGN(4) ;\n+        _end_noinit = .;\n+    } > Ram0_64\n+\n+    PROVIDE(_pvHeapStart = DEFINED(__user_heap_base) ? __user_heap_base : .);\n+    PROVIDE(_vStackTop = DEFINED(__user_stack_top) ? __user_stack_top : __top_Ram0_64);\n+\n+    /* ## Create checksum value (used in startup) ## */\n+    PROVIDE(__valid_user_code_checksum = 0 - \n+                                         (_vStackTop \n+                                         + (ResetISR + 1) \n+                                         + (NMI_Handler + 1) \n+                                         + (HardFault_Handler + 1) \n+                                         + (( DEFINED(MemManage_Handler) ? MemManage_Handler : 0 ) + 1)   /* MemManage_Handler may not be defined */\n+                                         + (( DEFINED(BusFault_Handler) ? BusFault_Handler : 0 ) + 1)     /* BusFault_Handler may not be defined */\n+                                         + (( DEFINED(UsageFault_Handler) ? UsageFault_Handler : 0 ) + 1) /* UsageFault_Handler may not be defined */\n+                                         ) );\n+}\n+\n+GROUP(\n+ libgcc.a\n+ libc.a\n+ libm.a\n+)\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/Makefile ./Makefile\n--- a_tnusFF/Makefile\t1969-12-31 21:00:00.000000000 -0300\n+++ ./Makefile\t2016-10-22 23:17:43.588840279 -0300\n@@ -0,0 +1,105 @@\n+include config.mk\n+\n+SRC=$(foreach m, $(MODULES), $(wildcard $(m)/src/*.c))\n+INCLUDES=$(foreach m, $(MODULES), -I$(m)/inc)\n+_DEFINES=$(foreach m, $(DEFINES), -D$(m))\n+LIBPATHS=$(foreach m, $(MODULES), $(if $(wildcard $(m)/libs/*.a), -L$(m)/libs,))\n+LIBFLAGS=$(foreach l, $(LIBRARY), -l$(l))\n+\n+LIBSDEPS=$(addsuffix .a, $(basename $(foreach l, $(LIBRARY), $(foreach m, $(MODULES), $(wildcard $(m)/libs/lib$(l).hex) ) )))\n+\n+OBJECTS=$(SRC:.c=.o)\n+DEPS=$(SRC:.c=.d)\n+LDSCRIPT=linker.ld\n+\n+ARCH_FLAGS=-mcpu=cortex-m4 -mthumb -mfpu=fpv4-sp-d16 -mfloat-abi=hard\n+\n+ifeq ($(OPT_LEVEL),debug)\n+OPT_FLAGS=-Og\n+else ifeq ($(OPT_LEVEL),none)\n+OPT_FLAGS=-O0\n+else ifeq ($(OPT_LEVEL),basic)\n+OPT_FLAGS=-O1\n+else ifeq ($(OPT_LEVEL),standar)\n+OPT_FLAGS=-O2\n+else ifeq ($(OPT_LEVEL),full)\n+OPT_FLAGS=-O3\n+else ifeq ($(OPT_LEVEL),size)\n+OPT_FLAGS=-Os\n+else ifeq ($(OPT_LEVEL),speed)\n+OPT_FLAGS=-Ofast\n+endif\n+\n+CFLAGS=$(ARCH_FLAGS) $(INCLUDES) $(_DEFINES) -g3 $(OPT_FLAGS) -ffunction-sections -fdata-sections\n+LDFLAGS=$(ARCH_FLAGS) -T$(LDSCRIPT) -nostartfiles -Wl,-gc-sections\n+LDFLAGS+=--specs=nano.specs\n+#LDFLAGS+=--specs=rdimon.specs\n+\n+CROSS=arm-none-eabi-\n+CC=$(CROSS)gcc\n+LD=$(CROSS)gcc\n+SIZE=$(CROSS)size\n+LIST=$(CROSS)objdump -xdSs\n+OBJCOPY=$(CROSS)objcopy\n+GDB=$(CROSS)gdb\n+OOCD=openocd\n+OOCD_SCRIPT?=oocd.cfg\n+ifeq ($(VERBOSE),yes)\n+Q=\n+else\n+Q=@\n+endif\n+\n+TARGET=$(APP).elf\n+TARGET_BIN=$(basename $(TARGET)).bin\n+TARGET_LST=$(basename $(TARGET)).lst\n+\n+all: $(TARGET) $(TARGET_BIN) $(TARGET_LST) size\n+\n+-include $(DEPS)\n+\n+%.o: %.c\n+\t@echo CC $<\n+\t$(Q)$(CC) -MMD $(CFLAGS) -c -o $@ $<\n+\n+%.a: %.hex\n+\t@echo DEBLOB $@\n+\t$(Q)$(OBJCOPY) -I ihex $< -O binary $@\n+\n+#%.hex: %.a\n+#\t@echo BLOB $<\n+#\t$(Q)$(OBJCOPY) -I binary $< -O ihex $@\n+\n+$(TARGET): $(OBJECTS) $(LIBSDEPS)\n+\t@echo LD $@\n+\t$(Q)$(LD) $(LDFLAGS) -o $@ $(OBJECTS) $(LIBSDEPS)\n+\t\n+$(TARGET_BIN): $(TARGET)\n+\t@echo BIN\n+\t$(Q)$(OBJCOPY) -v -O binary $< $@\n+\t\n+$(TARGET_LST): $(TARGET)\n+\t@echo LIST\n+\t$(Q)$(LIST) $< > $@\n+\n+size: $(TARGET)\n+\t$(Q)$(SIZE) $<\n+\n+program: $(TARGET_BIN)\n+\t@echo PROG\n+\t$(Q)$(OOCD) -f $(OOCD_SCRIPT) \\\n+\t\t-c \"init\" \\\n+\t\t-c \"reset halt\" \\\n+\t\t-c \"flash write_image erase unlock $< 0x00000000 bin\" \\\n+\t\t-c \"reset run\" \\\n+\t\t-c \"shutdown\" 2>&1\n+\n+erase:\n+\t$(Q)openocd -f $(OOCD_SCRIPT) \\\n+\t\t-c \"init\" -c \"reset halt\" -c \"flash erase_sector 0 0 last\" -c \"shutdown\" 2>&1\n+\n+clean:\n+\t@echo CLEAN\n+\t$(Q)rm -fR $(OBJECTS) $(TARGET) $(TARGET_BIN) $(TARGET_LST) $(DEPS) $(LIBSDEPS)\n+\n+.PHONY: all size clean program\ndiff -aur --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_tnusFF/oocd.cfg ./oocd.cfg\n--- a_tnusFF/oocd.cfg\t1969-12-31 21:00:00.000000000 -0300\n+++ ./oocd.cfg\t2016-10-22 23:17:43.588840279 -0300\n@@ -0,0 +1,90 @@\n+###############################################################################\n+#\n+# Copyright 2014, Juan Cecconi (UTN-FRBA, Numetron)\n+# Copyright 2016, Pablo Ridolfi\n+#\n+# This file is part of CIAA Firmware.\n+#\n+# Redistribution and use in source and binary forms, with or without\n+# modification, are permitted provided that the following conditions are met:\n+#\n+# 1. Redistributions of source code must retain the above copyright notice,\n+#    this list of conditions and the following disclaimer.\n+#\n+# 2. Redistributions in binary form must reproduce the above copyright notice,\n+#    this list of conditions and the following disclaimer in the documentation\n+#    and/or other materials provided with the distribution.\n+#\n+# 3. Neither the name of the copyright holder nor the names of its\n+#    contributors may be used to endorse or promote products derived from this\n+#    software without specific prior written permission.\n+#\n+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+# POSSIBILITY OF SUCH DAMAGE.\n+#\n+###############################################################################\n+#OpenOCD configuration (target and interface) for LPC54102 using CMSIS-DAP\n+\n+interface cmsis-dap\n+cmsis_dap_vid_pid 0x1FC9 0x0081\n+\n+adapter_khz 1000\n+\n+if { [info exists CCLK] } {\n+\tset _CCLK $CCLK\n+} else {\n+\tset _CCLK 4000\n+}\n+\n+if { [info exists CHIPNAME] } {\n+\tset _CHIPNAME $CHIPNAME\n+} else {\n+\tset _CHIPNAME lpc54102\n+}\n+\n+#\n+# M4 SWD mode TAP\n+#\n+if { [info exists M4_SWD_TAPID] } {\n+\tset _M4_SWD_TAPID $M4_SWD_TAPID\n+} else {\n+\tset _M4_SWD_TAPID 0x2ba01477\n+}\n+\n+#\n+# M0 SWD mode TAP\n+#\n+if { [info exists M0_SWD_TAPID] } {\n+\tset _M0_SWD_TAPID $M0_SWD_TAPID\n+} else {\n+\tset _M0_SWD_TAPID 0x2ba01477\n+}\n+\n+swd newdap $_CHIPNAME m4 -expected-id $_M4_SWD_TAPID\n+swd newdap $_CHIPNAME m0 -expected-id $_M0_SWD_TAPID\n+\n+target create $_CHIPNAME.m4 cortex_m -chain-position $_CHIPNAME.m4\n+#target create $_CHIPNAME.m0 cortex_m -chain-position $_CHIPNAME.m0\n+\n+set _WORKAREASIZE 0x10000\n+$_CHIPNAME.m4 configure -work-area-phys 0x02000000 -work-area-size $_WORKAREASIZE\n+\n+set _FLASHNAME $_CHIPNAME.flash\n+flash bank $_FLASHNAME lpc2000 0x00000000 0x80000 0 0 $_CHIPNAME.m4 lpc54100 $_CCLK calc_checksum\n+\n+reset_config srst_only\n+cortex_m reset_config vectreset\n+\n+$_CHIPNAME.m4 configure -event gdb-attach {\n+   echo \"Halting target\"\n+   halt\n+}\n"
  },
  {
    "path": "old/resources/templates/lpcopen.template",
    "content": "diff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/app/src/main.c ./app/src/main.c\n--- a_8FkA5l/app/src/main.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./app/src/main.c\t2017-02-27 20:42:08.260009486 -0300\n@@ -0,0 +1,27 @@\n+#include \"board.h\"\n+\n+#define TICKRATE_HZ (1000)\n+\n+static volatile uint32_t tick_ct = 0;\n+\n+void SysTick_Handler(void) {\n+   tick_ct++;\n+}\n+\n+void delay(uint32_t tk) {\n+   uint32_t end = tick_ct + tk;\n+   while(tick_ct < end)\n+       __WFI();\n+}\n+\n+int main(void) {\n+   SystemCoreClockUpdate();\n+   Board_Init();\n+   SysTick_Config(SystemCoreClock / TICKRATE_HZ);\n+\n+   while (1) {\n+       Board_LED_Toggle(LED_3);\n+       delay(100);\n+       printf(\"Hola mundo at %d\\r\\n\", tick_ct);\n+   }\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/ciaa_lpc4337.ld ./ciaa_lpc4337.ld\n--- a_8FkA5l/ciaa_lpc4337.ld\t1969-12-31 21:00:00.000000000 -0300\n+++ ./ciaa_lpc4337.ld\t2017-02-27 20:42:08.260009486 -0300\n@@ -0,0 +1,278 @@\n+GROUP(\n+  libgcc.a\n+  libc.a\n+  libm.a\n+)\n+\n+MEMORY\n+{\n+  /* Define each memory region */\n+  MFlashA512 (rx) : ORIGIN = 0x1a000000, LENGTH = 0x80000 /* 512K bytes */\n+  MFlashB512 (rx) : ORIGIN = 0x1b000000, LENGTH = 0x80000 /* 512K bytes */\n+  RamLoc32 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x8000 /* 32K bytes */\n+  RamLoc40 (rwx) : ORIGIN = 0x10080000, LENGTH = 0xa000 /* 40K bytes */\n+  RamAHB32 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x8000 /* 32K bytes */\n+  RamAHB16 (rwx) : ORIGIN = 0x20008000, LENGTH = 0x4000 /* 16K bytes */\n+  RamAHB_ETB16 (rwx) : ORIGIN = 0x2000c000, LENGTH = 0x4000 /* 16K bytes */\n+}\n+\n+/* Define a symbol for the top of each memory region */\n+__top_MFlashA512 = 0x1a000000 + 0x80000;\n+__top_MFlashB512 = 0x1b000000 + 0x80000;\n+__top_RamLoc32 = 0x10000000 + 0x8000;\n+__top_RamLoc40 = 0x10080000 + 0xa000;\n+__top_RamAHB32 = 0x20000000 + 0x8000;\n+__top_RamAHB16 = 0x20008000 + 0x4000;\n+__top_RamAHB_ETB16 = 0x2000c000 + 0x4000;\n+\n+ENTRY(ResetISR)\n+\n+SECTIONS\n+{\n+\n+    .text_Flash2 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       *(.text_Flash2*) /* for compatibility with previous releases */\n+       *(.text_MFlashB512*) /* for compatibility with previous releases */\n+       *(.text.$Flash2*)\n+       *(.text.$MFlashB512*)\n+       *(.rodata.$Flash2*)\n+       *(.rodata.$MFlashB512*)\n+    } > MFlashB512\n+\n+    /* MAIN TEXT SECTION */\n+    .text : ALIGN(4)\n+    {\n+        FILL(0xff)\n+        __vectors_start__ = ABSOLUTE(.) ;\n+        KEEP(*(.isr_vector))\n+\n+        /* Global Section Table */\n+        . = ALIGN(4) ;\n+        __section_table_start = .;\n+        __data_section_table = .;\n+        LONG(LOADADDR(.data));\n+        LONG(    ADDR(.data));\n+        LONG(  SIZEOF(.data));\n+        LONG(LOADADDR(.data_RAM2));\n+        LONG(    ADDR(.data_RAM2));\n+        LONG(  SIZEOF(.data_RAM2));\n+        LONG(LOADADDR(.data_RAM3));\n+        LONG(    ADDR(.data_RAM3));\n+        LONG(  SIZEOF(.data_RAM3));\n+        LONG(LOADADDR(.data_RAM4));\n+        LONG(    ADDR(.data_RAM4));\n+        LONG(  SIZEOF(.data_RAM4));\n+        LONG(LOADADDR(.data_RAM5));\n+        LONG(    ADDR(.data_RAM5));\n+        LONG(  SIZEOF(.data_RAM5));\n+        __data_section_table_end = .;\n+        __bss_section_table = .;\n+        LONG(    ADDR(.bss));\n+        LONG(  SIZEOF(.bss));\n+        LONG(    ADDR(.bss_RAM2));\n+        LONG(  SIZEOF(.bss_RAM2));\n+        LONG(    ADDR(.bss_RAM3));\n+        LONG(  SIZEOF(.bss_RAM3));\n+        LONG(    ADDR(.bss_RAM4));\n+        LONG(  SIZEOF(.bss_RAM4));\n+        LONG(    ADDR(.bss_RAM5));\n+        LONG(  SIZEOF(.bss_RAM5));\n+        __bss_section_table_end = .;\n+        __section_table_end = . ;\n+        /* End of Global Section Table */\n+\n+\n+        *(.after_vectors*)\n+\n+        /* Code Read Protect data */\n+        . = 0x000002FC ;\n+        PROVIDE(__CRP_WORD_START__ = .) ;\n+        KEEP(*(.crp))\n+        PROVIDE(__CRP_WORD_END__ = .) ;\n+        ASSERT(!(__CRP_WORD_START__ == __CRP_WORD_END__), \"Linker CRP Enabled, but no CRP_WORD provided within application\");\n+        /* End of Code Read Protect */\n+\n+    } >MFlashA512\n+\n+    .text : ALIGN(4)\n+    {\n+         *(.text*)\n+        *(.rodata .rodata.* .constdata .constdata.*)\n+        . = ALIGN(4);\n+\n+    } > MFlashA512\n+\n+    /*\n+     * for exception handling/unwind - some Newlib functions (in common\n+     * with C++ and STDC++) use this.\n+     */\n+    .ARM.extab : ALIGN(4)\n+    {\n+       *(.ARM.extab* .gnu.linkonce.armextab.*)\n+    } > MFlashA512\n+    __exidx_start = .;\n+\n+    .ARM.exidx : ALIGN(4)\n+    {\n+       *(.ARM.exidx* .gnu.linkonce.armexidx.*)\n+    } > MFlashA512\n+    __exidx_end = .;\n+\n+    _etext = .;\n+\n+\n+    /* DATA section for RamLoc40 */\n+   .data_RAM2 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+      /*  __core_m0app_START__ = .; start of slave image\n+         KEEP(*(.core_m0app))\n+       __core_m0app_END__ = .;  end of slave image\n+       ASSERT(!(__core_m0app_START__ == __core_m0app_END__), \"No slave code for _core_m0app\");\n+       ASSERT( (ABSOLUTE(__core_m0app_START__) == __vectors_start___core_m0app), \"M0APP execute address differs from address provided in source image\");*/\n+       *(.ramfunc.$RAM2)\n+       *(.ramfunc.$RamLoc40)\n+       *(.data.$RAM2*)\n+       *(.data.$RamLoc40*)\n+       . = ALIGN(4) ;\n+    } > RamLoc40 AT>MFlashA512\n+\n+    /* DATA section for RamAHB32 */\n+    .data_RAM3 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       *(.ramfunc.$RAM3)\n+       *(.ramfunc.$RamAHB32)\n+       *(.data.$RAM3*)\n+       *(.data.$RamAHB32*)\n+       . = ALIGN(4) ;\n+    } > RamAHB32 AT>MFlashA512\n+\n+    /* DATA section for RamAHB16 */\n+    .data_RAM4 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       *(.ramfunc.$RAM4)\n+       *(.ramfunc.$RamAHB16)\n+       *(.data.$RAM4*)\n+       *(.data.$RamAHB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB16 AT>MFlashA512\n+\n+    /* DATA section for RamAHB_ETB16 */\n+    .data_RAM5 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       *(.ramfunc.$RAM5)\n+       *(.ramfunc.$RamAHB_ETB16)\n+       *(.data.$RAM5*)\n+       *(.data.$RamAHB_ETB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB_ETB16 AT>MFlashA512\n+\n+    /* MAIN DATA SECTION */\n+\n+\n+    .uninit_RESERVED : ALIGN(4)\n+    {\n+        KEEP(*(.bss.$RESERVED*))\n+        . = ALIGN(4) ;\n+        _end_uninit_RESERVED = .;\n+    } > RamLoc32\n+\n+\n+   /* Main DATA section (RamLoc32) */\n+   .data : ALIGN(4)\n+   {\n+      FILL(0xff)\n+      _data = . ;\n+      *(vtable)\n+      *(.ramfunc*)\n+      *(.data*)\n+      . = ALIGN(4) ;\n+      _edata = . ;\n+   } > RamLoc32 AT>MFlashA512\n+\n+    /* BSS section for RamLoc40 */\n+    .bss_RAM2 : ALIGN(4)\n+    {\n+       *(.bss.$RAM2*)\n+       *(.bss.$RamLoc40*)\n+       . = ALIGN(4) ;\n+    } > RamLoc40\n+    /* BSS section for RamAHB32 */\n+    .bss_RAM3 : ALIGN(4)\n+    {\n+       *(.bss.$RAM3*)\n+       *(.bss.$RamAHB32*)\n+       . = ALIGN(4) ;\n+    } > RamAHB32\n+    /* BSS section for RamAHB16 */\n+    .bss_RAM4 : ALIGN(4)\n+    {\n+       *(.bss.$RAM4*)\n+       *(.bss.$RamAHB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB16\n+    /* BSS section for RamAHB_ETB16 */\n+    .bss_RAM5 : ALIGN(4)\n+    {\n+       *(.bss.$RAM5*)\n+       *(.bss.$RamAHB_ETB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB_ETB16\n+\n+    /* MAIN BSS SECTION */\n+    .bss : ALIGN(4)\n+    {\n+        _bss = .;\n+        *(.bss*)\n+        *(COMMON)\n+        . = ALIGN(4) ;\n+        _ebss = .;\n+        PROVIDE(end = .);\n+    } > RamLoc32\n+\n+    /* NOINIT section for RamLoc40 */\n+    .noinit_RAM2 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM2*)\n+       *(.noinit.$RamLoc40*)\n+       . = ALIGN(4) ;\n+    } > RamLoc40\n+    /* NOINIT section for RamAHB32 */\n+    .noinit_RAM3 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM3*)\n+       *(.noinit.$RamAHB32*)\n+       . = ALIGN(4) ;\n+    } > RamAHB32\n+    /* NOINIT section for RamAHB16 */\n+    .noinit_RAM4 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM4*)\n+       *(.noinit.$RamAHB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB16\n+    /* NOINIT section for RamAHB_ETB16 */\n+    .noinit_RAM5 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM5*)\n+       *(.noinit.$RamAHB_ETB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB_ETB16\n+\n+    /* DEFAULT NOINIT SECTION */\n+    .noinit (NOLOAD): ALIGN(4)\n+    {\n+        _noinit = .;\n+        *(.noinit*)\n+         . = ALIGN(4) ;\n+        _end_noinit = .;\n+    } > RamLoc32\n+\n+    PROVIDE(_pvHeapStart = .);\n+    PROVIDE(_vStackTop = __top_RamLoc32 - 0);\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/ciaa-nxp.cfg ./ciaa-nxp.cfg\n--- a_8FkA5l/ciaa-nxp.cfg\t1969-12-31 21:00:00.000000000 -0300\n+++ ./ciaa-nxp.cfg\t2017-02-27 20:42:08.260009486 -0300\n@@ -0,0 +1,161 @@\n+###############################################################################\n+#\n+# Copyright 2014, Juan Cecconi (UTN-FRBA, Numetron)\n+#\n+# This file is part of CIAA Firmware.\n+#\n+# Redistribution and use in source and binary forms, with or without\n+# modification, are permitted provided that the following conditions are met:\n+#\n+# 1. Redistributions of source code must retain the above copyright notice,\n+#    this list of conditions and the following disclaimer.\n+#\n+# 2. Redistributions in binary form must reproduce the above copyright notice,\n+#    this list of conditions and the following disclaimer in the documentation\n+#    and/or other materials provided with the distribution.\n+#\n+# 3. Neither the name of the copyright holder nor the names of its\n+#    contributors may be used to endorse or promote products derived from this\n+#    software without specific prior written permission.\n+#\n+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+# POSSIBILITY OF SUCH DAMAGE.\n+#\n+###############################################################################\n+#OpenOCD configuration (target and interface) for CIAA-NXP\n+\n+######################################################################################################\n+# Utilizar una interface tipo FTDI, todo lo que sigue está basado en ello\n+######################################################################################################\n+interface ftdi\n+\n+######################################################################################################\n+# Agrego el Par VID-PID del FTDI, si hay más agregar a continuación...\n+######################################################################################################\n+ftdi_vid_pid 0x0403 0x6010\n+\n+######################################################################################################\n+# Se utilizó el Channel A (ADBUS0 a ADBUS3) para conectar el JTAG mediante MPSSE\n+######################################################################################################\n+ftdi_channel 0\n+\n+######################################################################################################\n+# ftdi_layout_init 'Valor' 'Dirección', Configura los GPIO (H-L), su valor y dirección en ese orden(1 = Salida, 0 = entrada)\n+# los 16 bits se arman H-L como sigue 'ACBUS7-0+ADBUS7-0'\n+#ADBUS0 = FT_CLCK = 1, salida de Clock\n+#ADBUS1 = FT_TDI = 1, salida de datos del FT\n+#ADBUS2 = FT_TDO = 0, entrada de datos al FT\n+#ADBUS3 = FT_TMS = 1, salida de Test Mode Select, setear a 1\n+#ADBUS4 = Pin 14 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ADBUS5 = Pin 12 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ADBUS6 = Pin 10 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ADBUS7 = Pin 8 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS0 = FT_TRST = 1, salida de TRST...va al buffer y luego no se usa, setear a 1\n+#ACBUS1 = FT_RST = 1, salida de RST...va al buffer y luego no se usa, setear a 1\n+#ACBUS2 = FT_OE = 1, salida de OE para manejar el Buffer del JTAG, setear a 1\n+#ACBUS3 = Pin 6 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS4 = Pin 4 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS5 = Pin 2 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS6 = Pin 1 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS7 = Pin 3 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+######################################################################################################\n+ftdi_layout_init 0x0708 0xFFFB\n+\n+######################################################################################################\n+# La creación de las señales que siguen no hacen falta porque se indicó en el Target cfg que no se\n+# las tiene conectadas a ningún lado\n+######################################################################################################\n+\n+######################################################################################################\n+# Creo la señal llamada nTRST (Not TAP Reset) que es una tipo dato, y usa el bit 8 del GPIO (H-L), es\n+# decir GPIOH0 (pin ACBUS0) por eso 0x100, y a la vez se activa conjuntamente con el OE que\n+# está usado en el bit 10 del GPIO, es decir, en GPIOH2 (pin ACBUS2) por eso 0x400\n+######################################################################################################\n+ftdi_layout_signal nTRST -data 0x0100\n+\n+######################################################################################################\n+# Creo la señal llamada nSRST (Not System Reset) que se activa cuando se hace un cmd 'reset'\n+# Es tipo dato y usa el bit 9 del GPIO (H-L), es decir GPIOH1 (pin ACBUS1) por eso 0x200,\n+# y a la vez se activa conjuntamente con el OE que  está usado en el bit 10 del GPIO, es decir,\n+# en GPIOH2 (pin ACBUS2) por eso 0x400\n+######################################################################################################\n+ftdi_layout_signal nSRST -data 0x0200\n+\n+################################################################\n+# Especifica en KHz la frecuencia del Clock en el JTAG (TCK)\n+################################################################\n+transport select jtag\n+adapter_khz 2000\n+\n+################################################################\n+# Defino nombre de CHIP\n+################################################################\n+set _CHIPNAME lpc4337\n+\n+################################################################\n+# Defino los TAP del JTAG, para el core M4 y M0\n+################################################################\n+\n+# M4 JTAG mode TAP\n+set _M4_JTAG_TAPID 0x4ba00477\n+\n+# M0 TAP\n+set _M0_JTAG_TAPID 0x0ba01477\n+\n+jtag newtap $_CHIPNAME m4 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M4_JTAG_TAPID\n+\n+jtag newtap $_CHIPNAME m0 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M0_JTAG_TAPID\n+\n+################################################################\n+# Creo los 2 targets lpc4337.m4 y lpc4337.m0\n+################################################################\n+target create $_CHIPNAME.m4 cortex_m -chain-position $_CHIPNAME.m4\n+target create $_CHIPNAME.m0 cortex_m -chain-position $_CHIPNAME.m0\n+\n+################################################################\n+# Defino un area de trabajo en la RAM para acelerar el proceso\n+# de programación de la flash\n+################################################################\n+set _WORKAREASIZE 0x8000\n+$_CHIPNAME.m4 configure -work-area-phys 0x10000000 -work-area-size $_WORKAREASIZE\n+\n+################################################################\n+# Se define un banco de flash, grabable usando el driver lpc2000\n+# que es compatible con el LPC4337\n+# flash bank <name> lpc2000 <base> <size> 0 0 <target#> <variant> <clock> [calc checksum]\n+################################################################\n+set _FLASHNAME $_CHIPNAME.flash\n+flash bank $_FLASHNAME lpc2000 0x1a000000 0x80000 0 0 $_CHIPNAME.m4 lpc4300 96000 calc_checksum\n+\n+################################################################\n+# TRST (TAP Reset) y SRST (System Reset) no están conectados más allá del Buffer\n+# en el prototipo.\n+# Por lo tanto se indica 'none'\n+################################################################\n+reset_config none\n+#reset_config trst_only\n+\n+################################################################\n+# on this CPU we should use VECTRESET to perform a soft reset and\n+# manually reset the periphery\n+# SRST or SYSRESETREQ disable the debug interface for the time of\n+# the reset and will not fit our requirements for a consistent debug\n+# session\n+################################################################\n+cortex_m reset_config vectreset\n+\n+targets $_CHIPNAME.m4\n+\n+$_CHIPNAME.m4 configure -event gdb-attach {\n+   echo \"Reset Halt, due to gdb attached...!\"\n+   reset halt\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/config.mk ./config.mk\n--- a_8FkA5l/config.mk\t1969-12-31 21:00:00.000000000 -0300\n+++ ./config.mk\t2017-02-27 20:48:55.680020397 -0300\n@@ -0,0 +1,10 @@\n+APP=${{Program_Name string:blinking}}\n+\n+MODULES=app lpc_chip_43xx lpc_board_ciaa_edu_4337\n+DEFINES=CORE_M4 __USE_LPCOPEN __USE_NEWLIB\n+\n+VERBOSE=${{Verbose_Build items:n|y}}\n+OPT=${{Optimization_Level items:g|0|1|2|3|s|fast}}\n+USE_NANO=${{Newlib_NANO items:y|n}}\n+SEMIHOST=${{Use_semihosting items:n|y}}\n+USE_FPU=${{Use_FPU items:y|n}}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_board_ciaa_edu_4337/inc/board_api.h ./lpc_board_ciaa_edu_4337/inc/board_api.h\n--- a_8FkA5l/lpc_board_ciaa_edu_4337/inc/board_api.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/inc/board_api.h\t2017-02-27 20:42:08.316009488 -0300\n@@ -0,0 +1,176 @@\n+/*\n+ * @brief Common board API functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __BOARD_API_H_\n+#define __BOARD_API_H_\n+\n+#include \"lpc_types.h\"\n+#include <stdio.h>\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup BOARD_COMMON_API BOARD: Common board functions\n+ * @ingroup BOARD_Common\n+ * This file contains common board definitions that are shared across\n+ * boards and devices. All of these functions do not need to be\n+ * implemented for a specific board, but if they are implemented, they\n+ * should use this API standard.\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Setup and initialize hardware prior to call to main()\n+ * @return None\n+ * @note   Board_SystemInit() is called prior to the application and sets up system\n+ * clocking, memory, and any resources needed prior to the application\n+ * starting.\n+ */\n+void Board_SystemInit(void);\n+\n+/**\n+ * @brief  Setup pin multiplexer per board schematics\n+ * @return None\n+ * @note   Board_SetupMuxing() should be called from SystemInit() prior to application\n+ * main() is called. So that the PINs are set in proper state.\n+ */\n+void Board_SetupMuxing(void);\n+\n+/**\n+ * @brief  Setup system clocking\n+ * @return None\n+ * @note   This sets up board clocking.\n+ */\n+void Board_SetupClocking(void);\n+\n+/**\n+ * @brief  Setup external system memory\n+ * @return None\n+ * @note   This function is typically called after pin mux setup and clock setup and\n+ * sets up any external memory needed by the system (DRAM, SRAM, etc.). Not all\n+ * boards need this function.\n+ */\n+void Board_SetupExtMemory(void);\n+\n+/**\n+ * @brief  Set up and initialize all required blocks and functions related to the board hardware.\n+ * @return None\n+ */\n+void Board_Init(void);\n+\n+/**\n+ * @brief  Initializes board UART for output, required for printf redirection\n+ * @return None\n+ */\n+void Board_Debug_Init(void);\n+\n+/**\n+ * @brief  Sends a single character on the UART, required for printf redirection\n+ * @param  ch  : character to send\n+ * @return None\n+ */\n+void Board_UARTPutChar(char ch);\n+\n+/**\n+ * @brief  Get a single character from the UART, required for scanf input\n+ * @return EOF if not character was received, or character value\n+ */\n+int Board_UARTGetChar(void);\n+\n+/**\n+ * @brief  Prints a string to the UART\n+ * @param  str : Terminated string to output\n+ * @return None\n+ */\n+void Board_UARTPutSTR(const char *str);\n+\n+/**\n+ * @brief  Sets the state of a board LED to on or off\n+ * @param  LEDNumber   : LED number to set state for\n+ * @param  State       : true for on, false for off\n+ * @return None\n+ */\n+void Board_LED_Set(uint8_t LEDNumber, bool State);\n+\n+/**\n+ * @brief  Returns the current state of a board LED\n+ * @param  LEDNumber   : LED number to set state for\n+ * @return true if the LED is on, otherwise false\n+ */\n+bool Board_LED_Test(uint8_t LEDNumber);\n+\n+/**\n+ * @brief  Toggles the current state of a board LED\n+ * @param  LEDNumber   : LED number to change state for\n+ * @return None\n+ */\n+void Board_LED_Toggle(uint8_t LEDNumber);\n+\n+/**\n+ * @brief Function prototype for a MS delay function. Board layers or example code may\n+ *        define this function as needed.\n+ */\n+typedef void (*p_msDelay_func_t)(uint32_t);\n+\n+/* The DEBUG* functions are selected based on system configuration.\n+   Code that uses the DEBUG* functions will have their I/O routed to\n+   the UART, semihosting, or nowhere. */\n+#if defined(DEBUG_ENABLE)\n+#if defined(DEBUG_SEMIHOSTING)\n+#define DEBUGINIT()\n+#define DEBUGOUT(...) printf(__VA_ARGS__)\n+#define DEBUGSTR(str) printf(str)\n+#define DEBUGIN() (int) EOF\n+\n+#else\n+#define DEBUGINIT() Board_Debug_Init()\n+#define DEBUGOUT(...) printf(__VA_ARGS__)\n+#define DEBUGSTR(str) Board_UARTPutSTR(str)\n+#define DEBUGIN() Board_UARTGetChar()\n+#endif /* defined(DEBUG_SEMIHOSTING) */\n+\n+#else\n+#define DEBUGINIT()\n+#define DEBUGOUT(...)\n+#define DEBUGSTR(str)\n+#define DEBUGIN() (int) EOF\n+#endif /* defined(DEBUG_ENABLE) */\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __BOARD_API_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_board_ciaa_edu_4337/inc/board.h ./lpc_board_ciaa_edu_4337/inc/board.h\n--- a_8FkA5l/lpc_board_ciaa_edu_4337/inc/board.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/inc/board.h\t2017-02-27 20:42:08.316009488 -0300\n@@ -0,0 +1,178 @@\n+/*\n+ * @brief NGX Xplorer 4330 board file\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __BOARD_H_\n+#define __BOARD_H_\n+\n+#include \"chip.h\"\n+/* board_api.h is included at the bottom of this file after DEBUG setup */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup BOARD_NGX_XPLORER_4330 LPC4330 NGX Xplorer board support software API functions\n+ * @ingroup LPCOPEN_43XX_BOARD_NGX4330\n+ * The board support software API functions provide some simple abstracted\n+ * functions used across multiple LPCOpen board examples. See @ref BOARD_COMMON_API\n+ * for the functions defined by this board support layer.<br>\n+ * @{\n+ */\n+\n+/** @defgroup BOARD_NGX_XPLORER_4330_OPTIONS BOARD: LPC4330 NGX Xplorer board options\n+ * This board has options that configure its operation at build-time.<br>\n+ * @{\n+ */\n+\n+/** Define DEBUG_ENABLE to enable IO via the DEBUGSTR, DEBUGOUT, and\n+    DEBUGIN macros. If not defined, DEBUG* functions will be optimized\n+   out of the code at build time.\n+ */\n+#define DEBUG_ENABLE\n+\n+/** Define DEBUG_SEMIHOSTING along with DEBUG_ENABLE to enable IO support\n+    via semihosting. You may need to use a C library that supports\n+   semihosting with this option.\n+ */\n+//#define DEBUG_SEMIHOSTING\n+\n+/** Board UART used for debug output and input using the DEBUG* macros. This\n+    is also the port used for Board_UARTPutChar, Board_UARTGetChar, and\n+   Board_UARTPutSTR functions. */\n+#define DEBUG_UART LPC_USART2\n+\n+/**\n+ * @}\n+ */\n+\n+/* Board name */\n+#define BOARD_CIAA_EDU_NXP_4337\n+\n+/* Build for RMII interface */\n+#define USE_RMII\n+#define BOARD_ENET_PHY_ADDR    0x00\n+\n+#define LED_3 2\n+#define LED_2 1\n+#define LED_1 0\n+#define LED_RED 3\n+#define LED_GREEN 4\n+#define LED_BLUE 5\n+\n+/**\n+ * @brief  Sets up board specific I2C interface\n+ * @param  id  : I2C Peripheral ID (I2C0, I2C1)\n+ * @return Nothing\n+ */\n+void Board_I2C_Init(I2C_ID_T id);\n+\n+/**\n+ * @brief  Sets up I2C Fast Plus mode\n+ * @param  id  : Must always be I2C0\n+ * @return Nothing\n+ * @note   This function must be called before calling\n+ *          Chip_I2C_SetClockRate() to set clock rates above\n+ *          normal range 100KHz to 400KHz. Only I2C0 supports\n+ *          this mode.\n+ */\n+STATIC INLINE void Board_I2C_EnableFastPlus(I2C_ID_T id)\n+{\n+   Chip_SCU_I2C0PinConfig(I2C0_FAST_MODE_PLUS);\n+}\n+\n+/**\n+ * @brief  Disable I2C Fast Plus mode and enables default mode\n+ * @param  id  : Must always be I2C0\n+ * @return Nothing\n+ * @sa     Board_I2C_EnableFastPlus()\n+ */\n+STATIC INLINE void Board_I2C_DisableFastPlus(I2C_ID_T id)\n+{\n+   Chip_SCU_I2C0PinConfig(I2C0_STANDARD_FAST_MODE);\n+}\n+\n+/**\n+ * @brief  Initializes board specific GPIO Interrupt\n+ * @return Nothing\n+ */\n+void Board_GPIO_Int_Init(void);\n+\n+/**\n+ * @brief  Initialize pin muxing for SSP interface\n+ * @param  pSSP    : Pointer to SSP interface to initialize\n+ * @return Nothing\n+ */\n+void Board_SSP_Init(LPC_SSP_T *pSSP);\n+\n+/**\n+ * @brief  Returns the MAC address assigned to this board\n+ * @param  mcaddr : Pointer to 6-byte character array to populate with MAC address\n+ * @return Nothing\n+ */\n+void Board_ENET_GetMacADDR(uint8_t *mcaddr);\n+\n+/**\n+ * @brief  Initialize pin muxing for a UART\n+ * @param  pUART   : Pointer to UART register block for UART pins to init\n+ * @return Nothing\n+ */\n+void Board_UART_Init(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief  Initialize pin muxing for SDMMC interface\n+ * @return Nothing\n+ */\n+void Board_SDMMC_Init(void);\n+\n+/**\n+ * @brief  Initialize DAC\n+ * @param  pDAC    : Pointer to DAC register interface used on this board\n+ * @return Nothing\n+ */\n+void Board_DAC_Init(LPC_DAC_T *pDAC);\n+\n+/**\n+ * @brief  Initialize ADC\n+ * @return Nothing\n+ */\n+STATIC INLINE void Board_ADC_Init(void){}\n+\n+/**\n+ * @}\n+ */\n+\n+#include \"board_api.h\"\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __BOARD_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_board_ciaa_edu_4337/src/board.c ./lpc_board_ciaa_edu_4337/src/board.c\n--- a_8FkA5l/lpc_board_ciaa_edu_4337/src/board.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/board.c\t2017-02-27 20:42:08.368009489 -0300\n@@ -0,0 +1,201 @@\n+/*\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"board.h\"\n+#include \"string.h\"\n+\n+/** @ingroup BOARD_NGX_XPLORER_18304330\n+ * @{\n+ */\n+\n+/* SDIO Data pin configuration bits */\n+#define SDIO_DAT_PINCFG (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_PULLUP | SCU_MODE_FUNC7)\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* System configuration variables used by chip driver */\n+const uint32_t ExtRateIn = 0;\n+const uint32_t OscRateIn = 12000000;\n+\n+typedef struct {\n+   uint8_t port;\n+   uint8_t pin;\n+} io_port_t;\n+\n+static const io_port_t gpioLEDBits[] = {{0, 14}, {1, 11}, {1, 12}, {5, 0}, {5, 1}, {5, 2}};\n+static uint32_t lcd_cfg_val;\n+\n+void Board_UART_Init(LPC_USART_T *pUART)\n+{\n+   Chip_SCU_PinMuxSet(0x6, 4, (SCU_MODE_INACT | SCU_MODE_FUNC2));                  /* P6,4 : UART0_TXD */\n+   Chip_SCU_PinMuxSet(0x2, 1, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC1));/* P2.1 : UART0_RXD */\n+}\n+\n+/* Initialize debug output via UART for board */\n+void Board_Debug_Init(void)\n+{\n+#if defined(DEBUG_UART)\n+   Board_UART_Init(DEBUG_UART);\n+\n+   Chip_UART_Init(DEBUG_UART);\n+   Chip_UART_SetBaudFDR(DEBUG_UART, 115200);\n+   Chip_UART_ConfigData(DEBUG_UART, UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS);\n+\n+   /* Enable UART Transmit */\n+   Chip_UART_TXEnable(DEBUG_UART);\n+#endif\n+}\n+\n+/* Sends a character on the UART */\n+void Board_UARTPutChar(char ch)\n+{\n+#if defined(DEBUG_UART)\n+   /* Wait for space in FIFO */\n+   while ((Chip_UART_ReadLineStatus(DEBUG_UART) & UART_LSR_THRE) == 0) {}\n+   Chip_UART_SendByte(DEBUG_UART, (uint8_t) ch);\n+#endif\n+}\n+\n+/* Gets a character from the UART, returns EOF if no character is ready */\n+int Board_UARTGetChar(void)\n+{\n+#if defined(DEBUG_UART)\n+   if (Chip_UART_ReadLineStatus(DEBUG_UART) & UART_LSR_RDR) {\n+       return (int) Chip_UART_ReadByte(DEBUG_UART);\n+   }\n+#endif\n+   return EOF;\n+}\n+\n+/* Outputs a string on the debug UART */\n+void Board_UARTPutSTR(const char *str)\n+{\n+#if defined(DEBUG_UART)\n+   while (*str != '\\0') {\n+       Board_UARTPutChar(*str++);\n+   }\n+#endif\n+}\n+\n+static void Board_LED_Init()\n+{\n+   uint32_t idx;\n+\n+   for (idx = 0; idx < (sizeof(gpioLEDBits) / sizeof(io_port_t)); ++idx) {\n+       /* Set pin direction and init to off */\n+       Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, gpioLEDBits[idx].port, gpioLEDBits[idx].pin);\n+       Chip_GPIO_SetPinState(LPC_GPIO_PORT, gpioLEDBits[idx].port, gpioLEDBits[idx].pin, (bool) false);\n+   }\n+}\n+\n+void Board_LED_Set(uint8_t LEDNumber, bool On)\n+{\n+   if (LEDNumber < (sizeof(gpioLEDBits) / sizeof(io_port_t)))\n+        Chip_GPIO_SetPinState(LPC_GPIO_PORT, gpioLEDBits[LEDNumber].port, gpioLEDBits[LEDNumber].pin, (bool) !On);\n+}\n+\n+bool Board_LED_Test(uint8_t LEDNumber)\n+{\n+   if (LEDNumber < (sizeof(gpioLEDBits) / sizeof(io_port_t)))\n+       return (bool) !Chip_GPIO_GetPinState(LPC_GPIO_PORT, gpioLEDBits[LEDNumber].port, gpioLEDBits[LEDNumber].pin);\n+\n+   return false;\n+}\n+\n+void Board_LED_Toggle(uint8_t LEDNumber)\n+{\n+   Board_LED_Set(LEDNumber, !Board_LED_Test(LEDNumber));\n+}\n+\n+/* Returns the MAC address assigned to this board */\n+void Board_ENET_GetMacADDR(uint8_t *mcaddr)\n+{\n+   uint8_t boardmac[] = {0x00, 0x60, 0x37, 0x12, 0x34, 0x56};\n+\n+   memcpy(mcaddr, boardmac, 6);\n+}\n+\n+/* Set up and initialize all required blocks and functions related to the\n+   board hardware */\n+void Board_Init(void)\n+{\n+   /* Sets up DEBUG UART */\n+   DEBUGINIT();\n+\n+   /* Initializes GPIO */\n+   Chip_GPIO_Init(LPC_GPIO_PORT);\n+\n+   /* Initialize LEDs */\n+   Board_LED_Init();\n+   Chip_ENET_RMIIEnable(LPC_ETHERNET);\n+}\n+\n+void Board_I2C_Init(I2C_ID_T id)\n+{\n+   if (id == I2C1) {\n+       /* Configure pin function for I2C1*/\n+       Chip_SCU_PinMuxSet(0x2, 3, (SCU_MODE_ZIF_DIS | SCU_MODE_INBUFF_EN | SCU_MODE_FUNC1));       /* P2.3 : I2C1_SDA */\n+       Chip_SCU_PinMuxSet(0x2, 4, (SCU_MODE_ZIF_DIS | SCU_MODE_INBUFF_EN | SCU_MODE_FUNC1));       /* P2.4 : I2C1_SCL */\n+   } else {\n+       Chip_SCU_I2C0PinConfig(I2C0_STANDARD_FAST_MODE);\n+   }\n+}\n+\n+void Board_SDMMC_Init(void)\n+{\n+   Chip_SCU_PinMuxSet(0x1, 9, SDIO_DAT_PINCFG);    /* P1.9 connected to SDIO_D0 */\n+   Chip_SCU_PinMuxSet(0x1, 10, SDIO_DAT_PINCFG);   /* P1.10 connected to SDIO_D1 */\n+   Chip_SCU_PinMuxSet(0x1, 11, SDIO_DAT_PINCFG);   /* P1.11 connected to SDIO_D2 */\n+   Chip_SCU_PinMuxSet(0x1, 12, SDIO_DAT_PINCFG);   /* P1.12 connected to SDIO_D3 */\n+\n+   Chip_SCU_ClockPinMuxSet(2, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_FUNC4)); /* CLK2 connected to SDIO_CLK */\n+   Chip_SCU_PinMuxSet(0x1, 6, SDIO_DAT_PINCFG);    /* P1.6 connected to SDIO_CMD */\n+   Chip_SCU_PinMuxSet(0x1, 13, (SCU_MODE_INBUFF_EN | SCU_MODE_FUNC7)); /* P1.13 connected to SDIO_CD */\n+}\n+\n+void Board_SSP_Init(LPC_SSP_T *pSSP)\n+{\n+   if (pSSP == LPC_SSP1) {\n+       Chip_SCU_PinMuxSet(0x1, 5, (SCU_PINIO_FAST | SCU_MODE_FUNC5));  /* P1.5 => SSEL1 */\n+       Chip_SCU_PinMuxSet(0xF, 4, (SCU_PINIO_FAST | SCU_MODE_FUNC0));  /* PF.4 => SCK1 */\n+       Chip_SCU_PinMuxSet(0x1, 4, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC5)); /* P1.4 => MOSI1 */\n+       Chip_SCU_PinMuxSet(0x1, 3, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC5)); /* P1.3 => MISO1 */\n+   } else {\n+       return;\n+   }\n+}\n+\n+/* Initialize DAC interface for the board */\n+void Board_DAC_Init(LPC_DAC_T *pDAC)\n+{\n+   Chip_SCU_DAC_Analog_Config();\n+}\n+\n+/**\n+ * @}\n+ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_board_ciaa_edu_4337/src/board_sysinit.c ./lpc_board_ciaa_edu_4337/src/board_sysinit.c\n--- a_8FkA5l/lpc_board_ciaa_edu_4337/src/board_sysinit.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/board_sysinit.c\t2017-02-27 20:42:08.368009489 -0300\n@@ -0,0 +1,143 @@\n+/*\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"board.h\"\n+\n+/* The System initialization code is called prior to the application and\n+   initializes the board for run-time operation. Board initialization\n+   includes clock setup and default pin muxing configuration. */\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Structure for initial base clock states */\n+struct CLK_BASE_STATES {\n+   CHIP_CGU_BASE_CLK_T clk;    /* Base clock */\n+   CHIP_CGU_CLKIN_T clkin; /* Base clock source, see UM for allowable souorces per base clock */\n+   bool autoblock_enab;/* Set to true to enable autoblocking on frequency change */\n+   bool powerdn;       /* Set to true if the base clock is initially powered down */\n+};\n+\n+/* Initial base clock states are mostly on */\n+STATIC const struct CLK_BASE_STATES InitClkStates[] = {\n+\n+   /* Ethernet Clock base */\n+   {CLK_BASE_PHY_TX, CLKIN_ENET_TX, true, false},\n+   {CLK_BASE_PHY_RX, CLKIN_ENET_TX, true, false},\n+\n+   /* Clocks derived from dividers */\n+   {CLK_BASE_USB0, CLKIN_IDIVD, true, true}\n+};\n+\n+STATIC const PINMUX_GRP_T pinmuxing[] = {\n+   /* Board LEDs */\n+   {2, 10, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC0)},\n+   {2, 11, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC0)},\n+   {2, 12, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC0)},\n+   {2, 0, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC4)},\n+   {2, 1, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC4)},\n+   {2, 2, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC4)},\n+\n+   /* UART 3 */\n+   {2, 3, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC2)},\n+   {2, 4, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC2)},\n+\n+   /* UART 0 */\n+   {9, 5, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC2)},\n+    {9, 6, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC7)},\n+    {6, 2, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC7)},\n+\n+    /* BUTTONS */\n+    {1, 0, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC0)},\n+    {1, 1, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC0)},\n+    {1, 2, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC0)},\n+    {1, 6, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC0)},\n+\n+   /* ENET Pin mux (RMII Pins) */\n+   {1, 15, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC3)}, /* RXD0 */\n+   {1, 16, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC7)}, /* CRS_DV */\n+   {1, 17, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC3)}, /* MDIO */\n+   {1, 18, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC3)}, /* TXD0 */\n+   {1, 19, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC0)}, /* REFCLK */\n+   {1, 20, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC3)}, /* TXD1 */\n+   {7,  7, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC6)}, /* MDC */\n+   {0,  0, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC2)},  /* RXD1 */\n+   {0,  1, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC6)}, /* TXEN */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Sets up system pin muxing */\n+void Board_SetupMuxing(void)\n+{\n+   /* Setup system level pin muxing */\n+   Chip_SCU_SetPinMuxing(pinmuxing, sizeof(pinmuxing) / sizeof(PINMUX_GRP_T));\n+}\n+\n+/* Set up and initialize clocking prior to call to main */\n+void Board_SetupClocking(void)\n+{\n+   int i;\n+\n+   /* Enable Flash acceleration and setup wait states */\n+   Chip_CREG_SetFlashAcceleration(MAX_CLOCK_FREQ);\n+\n+   /* Setup System core frequency to MAX_CLOCK_FREQ */\n+   Chip_SetupCoreClock(CLKIN_CRYSTAL, MAX_CLOCK_FREQ, true);\n+\n+   /* Setup system base clocks and initial states. This won't enable and\n+      disable individual clocks, but sets up the base clock sources for\n+      each individual peripheral clock. */\n+   for (i = 0; i < (sizeof(InitClkStates) / sizeof(InitClkStates[0])); i++) {\n+       Chip_Clock_SetBaseClock(InitClkStates[i].clk, InitClkStates[i].clkin,\n+                               InitClkStates[i].autoblock_enab, InitClkStates[i].powerdn);\n+   }\n+\n+   /* Reset and enable 32Khz oscillator */\n+   LPC_CREG->CREG0 &= ~((1 << 3) | (1 << 2));\n+   LPC_CREG->CREG0 |= (1 << 1) | (1 << 0);\n+}\n+\n+/* Set up and initialize hardware prior to call to main */\n+void Board_SystemInit(void)\n+{\n+   /* Setup system clocking and memory. This is done early to allow the\n+      application and tools to clear memory and use scatter loading to\n+      external memory. */\n+   Board_SetupMuxing();\n+   Board_SetupClocking();\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_board_ciaa_edu_4337/src/crp.c ./lpc_board_ciaa_edu_4337/src/crp.c\n--- a_8FkA5l/lpc_board_ciaa_edu_4337/src/crp.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/crp.c\t2017-02-27 20:42:08.368009489 -0300\n@@ -0,0 +1,3 @@\n+#define CRP_NO_CRP          0xFFFFFFFF\n+\n+__attribute__ ((used,section(\".crp\"))) const unsigned int CRP_WORD = CRP_NO_CRP ;\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_board_ciaa_edu_4337/src/cr_startup_lpc43xx.c ./lpc_board_ciaa_edu_4337/src/cr_startup_lpc43xx.c\n--- a_8FkA5l/lpc_board_ciaa_edu_4337/src/cr_startup_lpc43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/cr_startup_lpc43xx.c\t2017-02-27 20:42:08.368009489 -0300\n@@ -0,0 +1,502 @@\n+//*****************************************************************************\n+// LPC43xx (Cortex-M4) Microcontroller Startup code for use with LPCXpresso IDE\n+//\n+// Version : 140113\n+//*****************************************************************************\n+//\n+// Copyright(C) NXP Semiconductors, 2013-2014\n+// All rights reserved.\n+//\n+// Software that is described herein is for illustrative purposes only\n+// which provides customers with programming information regarding the\n+// LPC products.  This software is supplied \"AS IS\" without any warranties of\n+// any kind, and NXP Semiconductors and its licensor disclaim any and\n+// all warranties, express or implied, including all implied warranties of\n+// merchantability, fitness for a particular purpose and non-infringement of\n+// intellectual property rights.  NXP Semiconductors assumes no responsibility\n+// or liability for the use of the software, conveys no license or rights under any\n+// patent, copyright, mask work right, or any other intellectual property rights in\n+// or to any products. NXP Semiconductors reserves the right to make changes\n+// in the software without notification. NXP Semiconductors also makes no\n+// representation or warranty that such application will be suitable for the\n+// specified use without further testing or modification.\n+//\n+// Permission to use, copy, modify, and distribute this software and its\n+// documentation is hereby granted, under NXP Semiconductors' and its\n+// licensor's relevant copyrights in the software, without fee, provided that it\n+// is used in conjunction with NXP Semiconductors microcontrollers.  This\n+// copyright, permission, and disclaimer notice must appear in all copies of\n+// this code.\n+//*****************************************************************************\n+\n+#if defined (__cplusplus)\n+#ifdef __REDLIB__\n+#error Redlib does not support C++\n+#else\n+//*****************************************************************************\n+//\n+// The entry point for the C++ library startup\n+//\n+//*****************************************************************************\n+extern \"C\" {\n+    extern void __libc_init_array(void);\n+}\n+#endif\n+#endif\n+\n+#define WEAK __attribute__ ((weak))\n+#define ALIAS(f) __attribute__ ((weak, alias (#f)))\n+\n+//*****************************************************************************\n+#if defined (__cplusplus)\n+extern \"C\" {\n+#endif\n+\n+//*****************************************************************************\n+#if defined (__USE_CMSIS) || defined (__USE_LPCOPEN)\n+// Declaration of external SystemInit function\n+extern void SystemInit(void);\n+#endif\n+\n+//*****************************************************************************\n+//\n+// Forward declaration of the default handlers. These are aliased.\n+// When the application defines a handler (with the same name), this will\n+// automatically take precedence over these weak definitions\n+//\n+//*****************************************************************************\n+void ResetISR(void);\n+WEAK void NMI_Handler(void);\n+WEAK void HardFault_Handler(void);\n+WEAK void MemManage_Handler(void);\n+WEAK void BusFault_Handler(void);\n+WEAK void UsageFault_Handler(void);\n+WEAK void SVC_Handler(void);\n+WEAK void DebugMon_Handler(void);\n+WEAK void PendSV_Handler(void);\n+WEAK void SysTick_Handler(void);\n+WEAK void IntDefaultHandler(void);\n+\n+//*****************************************************************************\n+//\n+// Forward declaration of the specific IRQ handlers. These are aliased\n+// to the IntDefaultHandler, which is a 'forever' loop. When the application\n+// defines a handler (with the same name), this will automatically take\n+// precedence over these weak definitions\n+//\n+//*****************************************************************************\n+void DAC_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#if defined (__USE_LPCOPEN)\n+void M0APP_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#else\n+void M0CORE_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#endif\n+void DMA_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void FLASH_EEPROM_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ETH_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SDIO_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void LCD_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void USB0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void USB1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SCT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void RIT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void TIMER0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void TIMER1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void TIMER2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void TIMER3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void MCPWM_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ADC0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2C0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SPI_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2C1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ADC1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SSP0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SSP1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2S0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2S1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SPIFI_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SGPIO_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO4_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO5_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO6_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO7_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GINT0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GINT1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void EVRT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CAN1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#if defined (__USE_LPCOPEN)\n+void ADCHS_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#else\n+void VADC_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#endif\n+void ATIMER_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void RTC_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void WDT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void M0SUB_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CAN0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void QEI_IRQHandler(void) ALIAS(IntDefaultHandler);\n+\n+//*****************************************************************************\n+//\n+// The entry point for the application.\n+// __main() is the entry point for Redlib based applications\n+// main() is the entry point for Newlib based applications\n+//\n+//*****************************************************************************\n+#if defined (__REDLIB__)\n+extern void __main(void);\n+#endif\n+extern int main(void);\n+//*****************************************************************************\n+//\n+// External declaration for the pointer to the stack top from the Linker Script\n+//\n+//*****************************************************************************\n+extern void _vStackTop(void);\n+\n+//*****************************************************************************\n+#if defined (__cplusplus)\n+} // extern \"C\"\n+#endif\n+//*****************************************************************************\n+//\n+// The vector table.\n+// This relies on the linker script to place at correct location in memory.\n+//\n+//*****************************************************************************\n+extern void (* const g_pfnVectors[])(void);\n+__attribute__ ((used,section(\".isr_vector\")))\n+void (* const g_pfnVectors[])(void) = {\n+    // Core Level - CM4\n+    &_vStackTop,                    // The initial stack pointer\n+    ResetISR,                       // The reset handler\n+    NMI_Handler,                    // The NMI handler\n+    HardFault_Handler,              // The hard fault handler\n+    MemManage_Handler,              // The MPU fault handler\n+    BusFault_Handler,               // The bus fault handler\n+    UsageFault_Handler,             // The usage fault handler\n+    0,                              // Reserved\n+    0,                              // Reserved\n+    0,                              // Reserved\n+    0,                              // Reserved\n+    SVC_Handler,                    // SVCall handler\n+    DebugMon_Handler,               // Debug monitor handler\n+    0,                              // Reserved\n+    PendSV_Handler,                 // The PendSV handler\n+    SysTick_Handler,                // The SysTick handler\n+\n+    // Chip Level - LPC43 (M4)\n+    DAC_IRQHandler,           // 16\n+#if defined (__USE_LPCOPEN)\n+    M0APP_IRQHandler,        // 17 CortexM4/M0 (LPC43XX ONLY)\n+#else\n+    M0CORE_IRQHandler,        // 17\n+#endif\n+    DMA_IRQHandler,           // 18\n+    0,           // 19\n+    FLASH_EEPROM_IRQHandler,   // 20 ORed flash Bank A, flash Bank B, EEPROM interrupts\n+    ETH_IRQHandler,           // 21\n+    SDIO_IRQHandler,          // 22\n+    LCD_IRQHandler,           // 23\n+    USB0_IRQHandler,          // 24\n+    USB1_IRQHandler,          // 25\n+    SCT_IRQHandler,           // 26\n+    RIT_IRQHandler,           // 27\n+    TIMER0_IRQHandler,        // 28\n+    TIMER1_IRQHandler,        // 29\n+    TIMER2_IRQHandler,        // 30\n+    TIMER3_IRQHandler,        // 31\n+    MCPWM_IRQHandler,         // 32\n+    ADC0_IRQHandler,          // 33\n+    I2C0_IRQHandler,          // 34\n+    I2C1_IRQHandler,          // 35\n+    SPI_IRQHandler,           // 36\n+    ADC1_IRQHandler,          // 37\n+    SSP0_IRQHandler,          // 38\n+    SSP1_IRQHandler,          // 39\n+    UART0_IRQHandler,         // 40\n+    UART1_IRQHandler,         // 41\n+    UART2_IRQHandler,         // 42\n+    UART3_IRQHandler,         // 43\n+    I2S0_IRQHandler,          // 44\n+    I2S1_IRQHandler,          // 45\n+    SPIFI_IRQHandler,         // 46\n+    SGPIO_IRQHandler,         // 47\n+    GPIO0_IRQHandler,         // 48\n+    GPIO1_IRQHandler,         // 49\n+    GPIO2_IRQHandler,         // 50\n+    GPIO3_IRQHandler,         // 51\n+    GPIO4_IRQHandler,         // 52\n+    GPIO5_IRQHandler,         // 53\n+    GPIO6_IRQHandler,         // 54\n+    GPIO7_IRQHandler,         // 55\n+    GINT0_IRQHandler,         // 56\n+    GINT1_IRQHandler,         // 57\n+    EVRT_IRQHandler,          // 58\n+    CAN1_IRQHandler,          // 59\n+    0,                        // 60\n+#if defined (__USE_LPCOPEN)\n+    ADCHS_IRQHandler,         // 61 ADCHS combined interrupt\n+#else\n+    VADC_IRQHandler,          // 61\n+#endif\n+    ATIMER_IRQHandler,        // 62\n+    RTC_IRQHandler,           // 63\n+    0,                        // 64\n+    WDT_IRQHandler,           // 65\n+    M0SUB_IRQHandler,         // 66\n+    CAN0_IRQHandler,          // 67\n+    QEI_IRQHandler,           // 68\n+};\n+\n+\n+//*****************************************************************************\n+// Functions to carry out the initialization of RW and BSS data sections. These\n+// are written as separate functions rather than being inlined within the\n+// ResetISR() function in order to cope with MCUs with multiple banks of\n+// memory.\n+//*****************************************************************************\n+        __attribute__((section(\".after_vectors\"\n+)))\n+void data_init(unsigned int romstart, unsigned int start, unsigned int len) {\n+    unsigned int *pulDest = (unsigned int*) start;\n+    unsigned int *pulSrc = (unsigned int*) romstart;\n+    unsigned int loop;\n+    for (loop = 0; loop < len; loop = loop + 4)\n+        *pulDest++ = *pulSrc++;\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void bss_init(unsigned int start, unsigned int len) {\n+    unsigned int *pulDest = (unsigned int*) start;\n+    unsigned int loop;\n+    for (loop = 0; loop < len; loop = loop + 4)\n+        *pulDest++ = 0;\n+}\n+\n+//*****************************************************************************\n+// The following symbols are constructs generated by the linker, indicating\n+// the location of various points in the \"Global Section Table\". This table is\n+// created by the linker via the Code Red managed linker script mechanism. It\n+// contains the load address, execution address and length of each RW data\n+// section and the execution and length of each BSS (zero initialized) section.\n+//*****************************************************************************\n+extern unsigned int __data_section_table;\n+extern unsigned int __data_section_table_end;\n+extern unsigned int __bss_section_table;\n+extern unsigned int __bss_section_table_end;\n+\n+//*****************************************************************************\n+// Reset entry point for your code.\n+// Sets up a simple runtime environment and initializes the C/C++\n+// library.\n+//\n+//*****************************************************************************\n+void ResetISR(void) {\n+\n+// *************************************************************\n+// The following conditional block of code manually resets as\n+// much of the peripheral set of the LPC43 as possible. This is\n+// done because the LPC43 does not provide a means of triggering\n+// a full system reset under debugger control, which can cause\n+// problems in certain circumstances when debugging.\n+//\n+// You can prevent this code block being included if you require\n+// (for example when creating a final executable which you will\n+// not debug) by setting the define 'DONT_RESET_ON_RESTART'.\n+//\n+#ifndef DONT_RESET_ON_RESTART\n+\n+    // Disable interrupts\n+    __asm volatile (\"cpsid i\");\n+    // equivalent to CMSIS '__disable_irq()' function\n+\n+    unsigned int *RESET_CONTROL = (unsigned int *) 0x40053100;\n+    // LPC_RGU->RESET_CTRL0 @ 0x40053100\n+    // LPC_RGU->RESET_CTRL1 @ 0x40053104\n+    // Note that we do not use the CMSIS register access mechanism,\n+    // as there is no guarantee that the project has been configured\n+    // to use CMSIS.\n+\n+    // Write to LPC_RGU->RESET_CTRL0\n+    *(RESET_CONTROL + 0) = 0x10DF1000;\n+    // GPIO_RST|AES_RST|ETHERNET_RST|SDIO_RST|DMA_RST|\n+    // USB1_RST|USB0_RST|LCD_RST|M0_SUB_RST\n+\n+    // Write to LPC_RGU->RESET_CTRL1\n+    *(RESET_CONTROL + 1) = 0x01DFF7FF;\n+    // M0APP_RST|CAN0_RST|CAN1_RST|I2S_RST|SSP1_RST|SSP0_RST|\n+    // I2C1_RST|I2C0_RST|UART3_RST|UART1_RST|UART1_RST|UART0_RST|\n+    // DAC_RST|ADC1_RST|ADC0_RST|QEI_RST|MOTOCONPWM_RST|SCT_RST|\n+    // RITIMER_RST|TIMER3_RST|TIMER2_RST|TIMER1_RST|TIMER0_RST\n+\n+    // Clear all pending interrupts in the NVIC\n+    volatile unsigned int *NVIC_ICPR = (unsigned int *) 0xE000E280;\n+    unsigned int irqpendloop;\n+    for (irqpendloop = 0; irqpendloop < 8; irqpendloop++) {\n+        *(NVIC_ICPR + irqpendloop) = 0xFFFFFFFF;\n+    }\n+\n+    // Reenable interrupts\n+    __asm volatile (\"cpsie i\");\n+    // equivalent to CMSIS '__enable_irq()' function\n+\n+#endif  // ifndef DONT_RESET_ON_RESTART\n+// *************************************************************\n+\n+#if defined (__USE_LPCOPEN)\n+    SystemInit();\n+#endif\n+\n+    //\n+    // Copy the data sections from flash to SRAM.\n+    //\n+    unsigned int LoadAddr, ExeAddr, SectionLen;\n+    unsigned int *SectionTableAddr;\n+\n+    // Load base address of Global Section Table\n+    SectionTableAddr = &__data_section_table;\n+\n+    // Copy the data sections from flash to SRAM.\n+    while (SectionTableAddr < &__data_section_table_end) {\n+        LoadAddr = *SectionTableAddr++;\n+        ExeAddr = *SectionTableAddr++;\n+        SectionLen = *SectionTableAddr++;\n+        data_init(LoadAddr, ExeAddr, SectionLen);\n+    }\n+    // At this point, SectionTableAddr = &__bss_section_table;\n+    // Zero fill the bss segment\n+    while (SectionTableAddr < &__bss_section_table_end) {\n+        ExeAddr = *SectionTableAddr++;\n+        SectionLen = *SectionTableAddr++;\n+        bss_init(ExeAddr, SectionLen);\n+    }\n+\n+#if !defined (__USE_LPCOPEN)\n+// LPCOpen init code deals with FP and VTOR initialisation\n+#if defined (__VFP_FP__) && !defined (__SOFTFP__)\n+    /*\n+     * Code to enable the Cortex-M4 FPU only included\n+     * if appropriate build options have been selected.\n+     * Code taken from Section 7.1, Cortex-M4 TRM (DDI0439C)\n+     */\n+    // CPACR is located at address 0xE000ED88\n+    asm(\"LDR.W R0, =0xE000ED88\");\n+    // Read CPACR\n+    asm(\"LDR R1, [R0]\");\n+    // Set bits 20-23 to enable CP10 and CP11 coprocessors\n+    asm(\" ORR R1, R1, #(0xF << 20)\");\n+    // Write back the modified value to the CPACR\n+    asm(\"STR R1, [R0]\");\n+#endif // (__VFP_FP__) && !(__SOFTFP__)\n+    // ******************************\n+    // Check to see if we are running the code from a non-zero\n+    // address (eg RAM, external flash), in which case we need\n+    // to modify the VTOR register to tell the CPU that the\n+    // vector table is located at a non-0x0 address.\n+\n+    // Note that we do not use the CMSIS register access mechanism,\n+    // as there is no guarantee that the project has been configured\n+    // to use CMSIS.\n+    unsigned int * pSCB_VTOR = (unsigned int *) 0xE000ED08;\n+    if ((unsigned int *) g_pfnVectors != (unsigned int *) 0x00000000) {\n+        // CMSIS : SCB->VTOR = <address of vector table>\n+        *pSCB_VTOR = (unsigned int) g_pfnVectors;\n+    }\n+#endif\n+\n+#if defined (__USE_CMSIS)\n+    SystemInit();\n+#endif\n+\n+#if defined (__cplusplus)\n+    //\n+    // Call C++ library initialisation\n+    //\n+    __libc_init_array();\n+#endif\n+\n+#if defined (__REDLIB__)\n+    // Call the Redlib library, which in turn calls main()\n+    __main();\n+#else\n+    main();\n+#endif\n+\n+    //\n+    // main() shouldn't return, but if it does, we'll just enter an infinite loop\n+    //\n+    while (1) {\n+        ;\n+    }\n+}\n+\n+//*****************************************************************************\n+// Default exception handlers. Override the ones here by defining your own\n+// handler routines in your application code.\n+//*****************************************************************************\n+__attribute__ ((section(\".after_vectors\")))\n+void NMI_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void HardFault_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void MemManage_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void BusFault_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void UsageFault_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void SVC_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void DebugMon_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void PendSV_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void SysTick_Handler(void) {\n+    while (1) {\n+    }\n+}\n+\n+//*****************************************************************************\n+//\n+// Processor ends up here if an unexpected interrupt occurs or a specific\n+// handler is not present in the application code.\n+//\n+//*****************************************************************************\n+__attribute__ ((section(\".after_vectors\")))\n+void IntDefaultHandler(void) {\n+    while (1) {\n+    }\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_board_ciaa_edu_4337/src/sysinit.c ./lpc_board_ciaa_edu_4337/src/sysinit.c\n--- a_8FkA5l/lpc_board_ciaa_edu_4337/src/sysinit.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/sysinit.c\t2017-02-27 20:42:08.368009489 -0300\n@@ -0,0 +1,89 @@\n+/*\n+ * @brief Common SystemInit function for LPC18xx/LPC43xx chips\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+#if defined(NO_BOARD_LIB)\n+#include \"chip.h\"\n+const uint32_t ExtRateIn = 0;\n+const uint32_t OscRateIn = 12000000;\n+#else\n+#include \"board.h\"\n+#endif\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set up and initialize hardware prior to call to main */\n+void SystemInit(void)\n+{\n+#if defined(CORE_M3) || defined(CORE_M4)\n+   unsigned int *pSCB_VTOR = (unsigned int *) 0xE000ED08;\n+\n+#if defined(__IAR_SYSTEMS_ICC__)\n+   extern void *__vector_table;\n+\n+   *pSCB_VTOR = (unsigned int) &__vector_table;\n+#elif defined(__CODE_RED)\n+   extern void *g_pfnVectors;\n+\n+   *pSCB_VTOR = (unsigned int) &g_pfnVectors;\n+#elif defined(__ARMCC_VERSION)\n+   extern void *__Vectors;\n+\n+   *pSCB_VTOR = (unsigned int) &__Vectors;\n+#endif\n+\n+#if defined(__FPU_PRESENT) && __FPU_PRESENT == 1\n+   fpuInit();\n+#endif\n+\n+#if defined(NO_BOARD_LIB)\n+   /* Chip specific SystemInit */\n+   Chip_SystemInit();\n+#else\n+   /* Board specific SystemInit */\n+   Board_SystemInit();\n+#endif\n+\n+#endif /* defined(CORE_M3) || defined(CORE_M4) */\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_board_ciaa_edu_4337/src/system.c ./lpc_board_ciaa_edu_4337/src/system.c\n--- a_8FkA5l/lpc_board_ciaa_edu_4337/src/system.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/system.c\t2017-02-27 20:42:08.368009489 -0300\n@@ -0,0 +1,190 @@\n+#include <reent.h>\n+#include <errno.h>\n+#include <signal.h>\n+\n+#include <board.h>\n+\n+#define UNUSED(...) ((void) (__VA_ARGS__))\n+#define SET_ERR(e) (r->_errno = e)\n+\n+void _exit(int code) {\n+   register int __params__ __asm__(\"r0\") = code;\n+   while (1)\n+       __asm__ __volatile__(\"bkpt 0\");\n+}\n+\n+int _close_r(struct _reent *r, int fd) {\n+   UNUSED(fd);\n+   SET_ERR(EBADF);\n+   return -1;\n+}\n+\n+int _execve_r(struct _reent *r, const char *f, char * const *args,\n+       char * const *env) {\n+   UNUSED(f, args, env);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _fcntl_r(struct _reent *r, int fd, int cmd, int arg) {\n+   UNUSED(fd, cmd, arg);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _fork_r(struct _reent *r) {\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _fstat_r(struct _reent *r, int fd, struct stat *st) {\n+   UNUSED(fd, st);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _getpid_r(struct _reent *r) {\n+   UNUSED(r);\n+   return 1;\n+}\n+\n+int _isatty_r(struct _reent *r, int fd) {\n+   switch (fd) {\n+   case 0:\n+   case 1:\n+   case 2:\n+       return 1;\n+   default:\n+       SET_ERR(EBADF);\n+       return -1;\n+   }\n+}\n+\n+int _kill_r(struct _reent *r, int pid, int signal) {\n+   if (pid == _getpid_r(r)) {\n+       switch (signal) {\n+       case SIGHUP:\n+       case SIGINT:\n+       case SIGQUIT:\n+       case SIGILL:\n+       case SIGTRAP:\n+       case SIGEMT:\n+       case SIGFPE:\n+       case SIGKILL:\n+       case SIGBUS:\n+       case SIGSEGV:\n+       case SIGSYS:\n+       case SIGPIPE:\n+       case SIGALRM:\n+       case SIGTERM:\n+       default:\n+           _exit(0);\n+       }\n+   } else {\n+       SET_ERR(ECHILD);\n+   }\n+   return -1;\n+}\n+\n+int _link_r(struct _reent *r, const char *oldf, const char *newf) {\n+   UNUSED(oldf, newf);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+_off_t _lseek_r(struct _reent *r, int fd, _off_t off, int w) {\n+   UNUSED(fd, off, w);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _mkdir_r(struct _reent *r, const char *name, int m) {\n+   UNUSED(name, m);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _open_r(struct _reent *r, const char *name, int f, int m) {\n+   UNUSED(name, f, m);\n+   SET_ERR(EBADF);\n+   return -1;\n+}\n+\n+_ssize_t _read_r(struct _reent *r, int fd, void *b, size_t n) {\n+   size_t i;\n+   switch (fd) {\n+   case 0:\n+   case 1:\n+   case 2:\n+       for (i = 0; i < n; i++)\n+           ((char*) b)[i] = Board_UARTGetChar();\n+       return n;\n+   default:\n+       SET_ERR(ENODEV);\n+       return -1;\n+   }\n+}\n+\n+int _rename_r(struct _reent *r, const char *oldf, const char *newf) {\n+   UNUSED(oldf, newf);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+void *_sbrk_r(struct _reent *r, ptrdiff_t incr) {\n+   extern int _pvHeapStart;\n+   static void *heap_end;\n+   void *prev_heap_end;\n+   if (heap_end == 0) {\n+       heap_end = &_pvHeapStart;\n+   }\n+   prev_heap_end = heap_end;\n+   heap_end += incr;\n+   return prev_heap_end;\n+}\n+\n+int _stat_r(struct _reent *r, const char *name, struct stat *s) {\n+   UNUSED(name, s);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+_CLOCK_T_ _times_r(struct _reent *r, struct tms *tm) {\n+   UNUSED(tm);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _unlink_r(struct _reent *r, const char *name) {\n+   UNUSED(name);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _wait_r(struct _reent *r, int *st) {\n+   UNUSED(st);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+_ssize_t _write_r(struct _reent *r, int fd, const void *b, size_t n) {\n+   size_t i;\n+   switch (fd) {\n+   case 0:\n+   case 1:\n+   case 2:\n+       for (i = 0; i < n; i++)\n+           Board_UARTPutChar(((char*) b)[i]);\n+       return n;\n+   default:\n+       SET_ERR(ENODEV);\n+       return -1;\n+   }\n+}\n+\n+/* This one is not guaranteed to be available on all targets.  */\n+int _gettimeofday_r(struct _reent *r, struct timeval *__tp, void *__tzp) {\n+   UNUSED(__tp, __tzp);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/adc_18xx_43xx.h ./lpc_chip_43xx/inc/adc_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/adc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/adc_18xx_43xx.h\t2017-02-27 20:42:08.420009491 -0300\n@@ -0,0 +1,268 @@\n+/*\n+ * @brief  LPC18xx/43xx A/D conversion driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ADC_18XX_43XX_H_\n+#define __ADC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ADC_18XX_43XX CHIP:  LPC18xx/43xx A/D conversion driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define ADC_ACC_10BITS\n+\n+#define ADC_MAX_SAMPLE_RATE 400000\n+\n+/**\n+ * @brief 10 or 12-bit ADC register block structure\n+ */\n+typedef struct {                   /*!< ADCn Structure */\n+   __IO uint32_t CR;               /*!< A/D Control Register. The AD0CR register must be written to select the operating mode before A/D conversion can occur. */\n+   __I  uint32_t GDR;              /*!< A/D Global Data Register. Contains the result of the most recent A/D conversion. */\n+   __I  uint32_t RESERVED0;\n+   __IO uint32_t INTEN;            /*!< A/D Interrupt Enable Register. This register contains enable bits that allow the DONE flag of each A/D channel to be included or excluded from contributing to the generation of an A/D interrupt. */\n+   __I  uint32_t DR[8];            /*!< A/D Channel Data Register. This register contains the result of the most recent conversion completed on channel n. */\n+   __I  uint32_t STAT;             /*!< A/D Status Register. This register contains DONE and OVERRUN flags for all of the A/D channels, as well as the A/D interrupt flag. */\n+} LPC_ADC_T;\n+\n+/**\n+ * @brief ADC register support bitfields and mask\n+ */\n+\n+#define ADC_DR_RESULT(n)        ((((n) >> 6) & 0x3FF)) /*!< Mask for getting the 10 bits ADC data read value */\n+#define ADC_CR_BITACC(n)        ((((n) & 0x7) << 17))  /*!< Number of ADC accuracy bits */\n+#define ADC_DR_DONE(n)          (((n) >> 31))          /*!< Mask for reading the ADC done status */\n+#define ADC_DR_OVERRUN(n)       ((((n) >> 30) & (1UL)))    /*!< Mask for reading the ADC overrun status */\n+#define ADC_CR_CH_SEL(n)        ((1UL << (n)))         /*!< Selects which of the AD0.0:7 pins is (are) to be sampled and converted */\n+#define ADC_CR_CLKDIV(n)        ((((n) & 0xFF) << 8))  /*!< The APB clock (PCLK) is divided by (this value plus one) to produce the clock for the A/D */\n+#define ADC_CR_BURST            ((1UL << 16))          /*!< Repeated conversions A/D enable bit */\n+#define ADC_CR_PDN              ((1UL << 21))          /*!< ADC convert is operational */\n+#define ADC_CR_START_MASK       ((7UL << 24))          /*!< ADC start mask bits */\n+#define ADC_CR_START_MODE_SEL(SEL)  ((SEL << 24))      /*!< Select Start Mode */\n+#define ADC_CR_START_NOW        ((1UL << 24))          /*!< Start conversion now */\n+#define ADC_CR_START_CTOUT15    ((2UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on CTOUT_15 */\n+#define ADC_CR_START_CTOUT8     ((3UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on CTOUT_8 */\n+#define ADC_CR_START_ADCTRIG0   ((4UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on ADCTRIG0 */\n+#define ADC_CR_START_ADCTRIG1   ((5UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on ADCTRIG1 */\n+#define ADC_CR_START_MCOA2      ((6UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on Motocon PWM output MCOA2 */\n+#define ADC_CR_EDGE             ((1UL << 27))          /*!< Start conversion on a falling edge on the selected CAP/MAT signal */\n+#define ADC_SAMPLE_RATE_CONFIG_MASK         (ADC_CR_CLKDIV(0xFF) | ADC_CR_BITACC(0x07))\n+\n+/**\n+ * @brief  ADC status register used for IP drivers\n+ */\n+typedef enum IP_ADC_STATUS {\n+   ADC_DR_DONE_STAT,   /*!< ADC data register staus */\n+   ADC_DR_OVERRUN_STAT,/*!< ADC data overrun staus */\n+   ADC_DR_ADINT_STAT   /*!< ADC interrupt status */\n+} ADC_STATUS_T;\n+\n+/** The channels on one ADC peripheral*/\n+typedef enum CHIP_ADC_CHANNEL {\n+   ADC_CH0 = 0,    /**< ADC channel 0 */\n+   ADC_CH1,        /**< ADC channel 1 */\n+   ADC_CH2,        /**< ADC channel 2 */\n+   ADC_CH3,        /**< ADC channel 3 */\n+   ADC_CH4,        /**< ADC channel 4 */\n+   ADC_CH5,        /**< ADC channel 5 */\n+   ADC_CH6,        /**< ADC channel 6 */\n+   ADC_CH7,        /**< ADC channel 7 */\n+} ADC_CHANNEL_T;\n+\n+/** The number of bits of accuracy of the result in the LS bits of ADDR*/\n+typedef enum CHIP_ADC_RESOLUTION {\n+   ADC_10BITS = 0,     /**< ADC 10 bits */\n+   ADC_9BITS,          /**< ADC 9 bits  */\n+   ADC_8BITS,          /**< ADC 8 bits  */\n+   ADC_7BITS,          /**< ADC 7 bits  */\n+   ADC_6BITS,          /**< ADC 6 bits  */\n+   ADC_5BITS,          /**< ADC 5 bits  */\n+   ADC_4BITS,          /**< ADC 4 bits  */\n+   ADC_3BITS,          /**< ADC 3 bits  */\n+} ADC_RESOLUTION_T;\n+\n+/** Edge configuration, which controls rising or falling edge on the selected signal for the start of a conversion */\n+typedef enum CHIP_ADC_EDGE_CFG {\n+   ADC_TRIGGERMODE_RISING = 0,     /**< Trigger event: rising edge */\n+   ADC_TRIGGERMODE_FALLING,        /**< Trigger event: falling edge */\n+} ADC_EDGE_CFG_T;\n+\n+/** Start mode, which controls the start of an A/D conversion when the BURST bit is 0. */\n+typedef enum CHIP_ADC_START_MODE {\n+   ADC_NO_START = 0,\n+   ADC_START_NOW,          /*!< Start conversion now */\n+   ADC_START_ON_CTOUT15,   /*!< Start conversion when the edge selected by bit 27 occurs on CTOUT_15 */\n+   ADC_START_ON_CTOUT8,    /*!< Start conversion when the edge selected by bit 27 occurs on CTOUT_8 */\n+   ADC_START_ON_ADCTRIG0,  /*!< Start conversion when the edge selected by bit 27 occurs on ADCTRIG0 */\n+   ADC_START_ON_ADCTRIG1,  /*!< Start conversion when the edge selected by bit 27 occurs on ADCTRIG1 */\n+   ADC_START_ON_MCOA2      /*!< Start conversion when the edge selected by bit 27 occurs on Motocon PWM output MCOA2 */\n+} ADC_START_MODE_T;\n+\n+/** Clock setup structure for ADC controller passed to the initialize function */\n+typedef struct {\n+   uint32_t adcRate;       /*!< ADC rate */\n+   uint8_t  bitsAccuracy;  /*!< ADC bit accuracy */\n+   bool     burstMode;     /*!< ADC Burt Mode */\n+} ADC_CLOCK_SETUP_T;\n+\n+/**\n+ * @brief  Initialize the ADC peripheral and the ADC setup structure to default value\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  ADCSetup    : ADC setup structure to be set\n+ * @return Nothing\n+ * @note   Default setting for ADC is 400kHz - 10bits\n+ */\n+void Chip_ADC_Init(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup);\n+\n+/**\n+ * @brief  Shutdown ADC\n+ * @param  pADC    : The base of ADC peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_ADC_DeInit(LPC_ADC_T *pADC);\n+\n+/**\n+ * @brief  Read the ADC value from a channel\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel     : ADC channel to read\n+ * @param  data        : Pointer to where to put data\n+ * @return SUCCESS or ERROR if no conversion is ready\n+ */\n+Status Chip_ADC_ReadValue(LPC_ADC_T *pADC, uint8_t channel, uint16_t *data);\n+\n+/**\n+ * @brief  Read the ADC value and convert it to 8bits value\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel:    selected channel\n+ * @param  data        : Storage for data\n+ * @return Status  : ERROR or SUCCESS\n+ */\n+Status Chip_ADC_ReadByte(LPC_ADC_T *pADC, ADC_CHANNEL_T channel, uint8_t *data);\n+\n+/**\n+ * @brief  Read the ADC channel status\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel     : ADC channel to read\n+ * @param  StatusType  : Status type of ADC_DR_*\n+ * @return SET or RESET\n+ */\n+FlagStatus Chip_ADC_ReadStatus(LPC_ADC_T *pADC, uint8_t channel, uint32_t StatusType);\n+\n+/**\n+ * @brief  Enable/Disable interrupt for ADC channel\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel     : ADC channel to read\n+ * @param  NewState    : New state, ENABLE or DISABLE\n+ * @return SET or RESET\n+ */\n+void Chip_ADC_Int_SetChannelCmd(LPC_ADC_T *pADC, uint8_t channel, FunctionalState NewState);\n+\n+/**\n+ * @brief  Enable/Disable global interrupt for ADC channel\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  NewState    : New state, ENABLE or DISABLE\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ADC_Int_SetGlobalCmd(LPC_ADC_T *pADC, FunctionalState NewState)\n+{\n+   Chip_ADC_Int_SetChannelCmd(pADC, 8, NewState);\n+}\n+\n+/**\n+ * @brief  Select the mode starting the AD conversion\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  mode        : Stating mode, should be :\n+ *                         - ADC_NO_START              : Must be set for Burst mode\n+ *                         - ADC_START_NOW             : Start conversion now\n+ *                         - ADC_START_ON_CTOUT15      : Start conversion when the edge selected by bit 27 occurs on CTOUT_15\n+ *                         - ADC_START_ON_CTOUT8       : Start conversion when the edge selected by bit 27 occurs on CTOUT_8\n+ *                         - ADC_START_ON_ADCTRIG0     : Start conversion when the edge selected by bit 27 occurs on ADCTRIG0\n+ *                         - ADC_START_ON_ADCTRIG1     : Start conversion when the edge selected by bit 27 occurs on ADCTRIG1\n+ *                         - ADC_START_ON_MCOA2        : Start conversion when the edge selected by bit 27 occurs on Motocon PWM output MCOA2\n+ * @param  EdgeOption  : Stating Edge Condition, should be :\n+ *                         - ADC_TRIGGERMODE_RISING    : Trigger event on rising edge\n+ *                         - ADC_TRIGGERMODE_FALLING   : Trigger event on falling edge\n+ * @return Nothing\n+ */\n+void Chip_ADC_SetStartMode(LPC_ADC_T *pADC, ADC_START_MODE_T mode, ADC_EDGE_CFG_T EdgeOption);\n+\n+/**\n+ * @brief  Set the ADC Sample rate\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  ADCSetup    : ADC setup structure to be modified\n+ * @param  rate        : Sample rate, should be set so the clock for A/D converter is less than or equal to 4.5MHz.\n+ * @return Nothing\n+ */\n+void Chip_ADC_SetSampleRate(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup, uint32_t rate);\n+\n+/**\n+ * @brief  Set the ADC accuracy bits\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  ADCSetup    : ADC setup structure to be modified\n+ * @param  resolution  : The resolution, should be ADC_10BITS -> ADC_3BITS\n+ * @return Nothing\n+ */\n+void Chip_ADC_SetResolution(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup, ADC_RESOLUTION_T resolution);\n+\n+/**\n+ * @brief  Enable or disable the ADC channel on ADC peripheral\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel     : Channel to be enable or disable\n+ * @param  NewState    : New state, should be:\n+ *                             - ENABLE\n+ *                             - DISABLE\n+ * @return Nothing\n+ */\n+void Chip_ADC_EnableChannel(LPC_ADC_T *pADC, ADC_CHANNEL_T channel, FunctionalState NewState);\n+\n+/**\n+ * @brief  Enable burst mode\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  NewState    : New state, should be:\n+ *                         - ENABLE\n+ *                         - DISABLE\n+ * @return Nothing\n+ */\n+void Chip_ADC_SetBurstCmd(LPC_ADC_T *pADC, FunctionalState NewState);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ADC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/aes_18xx_43xx.h ./lpc_chip_43xx/inc/aes_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/aes_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/aes_18xx_43xx.h\t2017-02-27 20:42:08.420009491 -0300\n@@ -0,0 +1,161 @@\n+/*\n+ * @brief LPC18xx/43xx AES Engine driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __AES_18XX_43XX_H_\n+#define __AES_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup AES_18XX_43XX CHIP: LPC18xx/43xx AES Engine driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  AES Engine operation mode\n+ */\n+typedef enum CHIP_AES_OP_MODE {\n+   CHIP_AES_API_CMD_ENCODE_ECB,    /*!< ECB Encode mode */\n+   CHIP_AES_API_CMD_DECODE_ECB,    /*!< ECB Decode mode */\n+   CHIP_AES_API_CMD_ENCODE_CBC,    /*!< CBC Encode mode */\n+   CHIP_AES_API_CMD_DECODE_CBC,    /*!< CBC Decode mode */\n+} CHIP_AES_OP_MODE_T;\n+\n+/**\n+ * @brief  Initialize the AES Engine function\n+ * @return None\n+ * This function will initialize all the AES Engine driver function pointers\n+ * and call the AES Engine Initialization function.\n+ */\n+void Chip_AES_Init(void);\n+\n+/**\n+ * @brief  Set operation mode in AES Engine\n+ * @param  AesMode     : AES Operation Mode\n+ * @return Status\n+ */\n+uint32_t Chip_AES_SetMode(CHIP_AES_OP_MODE_T AesMode);\n+\n+/**\n+ * @brief  Load 128-bit AES user key in AES Engine\n+ * @param  keyNum: 0 - Load AES 128-bit user key 1, else load user key2\n+ * @return None\n+ */\n+void Chip_AES_LoadKey(uint32_t keyNum);\n+\n+/**\n+ * @brief  Load randomly generated key in AES engine\n+ * @return None\n+ * To update the RNG and load a new random number,\n+ * the API call Chip_OTP_GenRand should be used\n+ */\n+void Chip_AES_LoadKeyRNG(void);\n+\n+/**\n+ * @brief  Load 128-bit AES software defined user key in AES Engine\n+ * @param  pKey        : Pointer to 16 byte user key\n+ * @return None\n+ */\n+void Chip_AES_LoadKeySW(uint8_t *pKey);\n+\n+/**\n+ * @brief Load 128-bit AES initialization vector in AES Engine\n+ * @param  pVector     : Pointer to 16 byte Initialisation vector\n+ * @return None\n+ */\n+void Chip_AES_LoadIV_SW(uint8_t *pVector);\n+\n+/**\n+ * @brief Load IC specific 128-bit AES initialization vector in AES Engine\n+ * @return None\n+ * This loads 128-bit AES IC specific initialization vector,\n+ * which is used to decrypt a boot image\n+ */\n+void Chip_AES_LoadIV_IC(void);\n+\n+/**\n+ * @brief Operate AES Engine\n+ * @param  pDatOut     : Pointer to output data stream\n+ * @param  pDatIn      : Pointer to input data stream\n+ * @param  Size        : Size of the data stream (128-bit)\n+ * @return Status\n+ * This function performs the AES operation after the AES mode\n+ * has been set using Chip_AES_SetMode and the appropriate keys\n+ * and init vectors have been loaded\n+ */\n+uint32_t Chip_AES_Operate(uint8_t *pDatOut, uint8_t *pDatIn, uint32_t Size);\n+\n+/**\n+ * @brief  Program 128-bit AES Key in OTP\n+ * @param  KeyNum      : Key Number (Select 0 or 1)\n+ * @param  pKey        : Pointer to AES Key (16 bytes required)\n+ * @return Status\n+ * When calling the aes_ProgramKey2 function, ensure that VPP = 2.7 V to 3.6 V.\n+ */\n+uint32_t Chip_AES_ProgramKey(uint32_t KeyNum, uint8_t *pKey);\n+\n+/**\n+ * @brief  Checks for valid AES configuration of the chip and setup\n+ *         DMA channel to process an AES data block.\n+ * @param  channel_id  : channel id\n+ * @return Status\n+ */\n+uint32_t Chip_AES_Config_DMA(uint32_t channel_id);\n+\n+/**\n+ * @brief  Checks for valid AES configuration of the chip and\n+ *         enables DMA channel to process an AES data block.\n+ * @param  channel_id  : channel_id\n+ * @param  dataOutAddr : destination address(16 x size of consecutive bytes)\n+ * @param  dataInAddr  : source address(16 x size of consecutive bytes)\n+ * @param  size        : number of 128 bit AES blocks\n+ * @return Status\n+ */\n+uint32_t Chip_AES_OperateDMA(uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size);\n+\n+/**\n+ * @brief  Read status of DMA channels that process an AES data block.\n+ * @param  channel_id  : channel id\n+ * @return Status\n+ */\n+ uint32_t Chip_AES_GetStatusDMA(uint32_t channel_id);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __AES_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/atimer_18xx_43xx.h ./lpc_chip_43xx/inc/atimer_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/atimer_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/atimer_18xx_43xx.h\t2017-02-27 20:42:08.420009491 -0300\n@@ -0,0 +1,143 @@\n+/*\n+ * @brief LPC18xx/43xx Alarm Timer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ATIMER_18XX_43XX_H_\n+#define __ATIMER_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ATIMER_18XX_43XX CHIP: LPC18xx/43xx Alarm Timer driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Alarm Timer register block structure\n+ */\n+typedef struct {                   /*!< ATIMER Structure       */\n+   __IO uint32_t DOWNCOUNTER;      /*!< Downcounter register   */\n+   __IO uint32_t PRESET;           /*!< Preset value register  */\n+   __I  uint32_t RESERVED0[1012];\n+   __O  uint32_t CLR_EN;           /*!< Interrupt clear enable register */\n+   __O  uint32_t SET_EN;           /*!< Interrupt set enable register */\n+   __I  uint32_t STATUS;           /*!< Status register        */\n+   __I  uint32_t ENABLE;           /*!< Enable register        */\n+   __O  uint32_t CLR_STAT;         /*!< Clear register         */\n+   __O  uint32_t SET_STAT;         /*!< Set register           */\n+} LPC_ATIMER_T;\n+\n+/**\n+ * @brief  Initialize Alarm Timer\n+ * @param  pATIMER     : The base of ATIMER peripheral on the chip\n+ * @param  PresetValue : Count of 1 to 1024s for Alarm\n+ * @return None\n+ */\n+void Chip_ATIMER_Init(LPC_ATIMER_T *pATIMER, uint32_t PresetValue);\n+\n+/**\n+ * @brief  Close ATIMER device\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+void Chip_ATIMER_DeInit(LPC_ATIMER_T *pATIMER);\n+\n+/**\n+ * @brief  Enable ATIMER Interrupt\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_ATIMER_IntEnable(LPC_ATIMER_T *pATIMER)\n+{\n+   pATIMER->SET_EN = 1;\n+}\n+\n+/**\n+ * @brief  Disable ATIMER Interrupt\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_ATIMER_IntDisable(LPC_ATIMER_T *pATIMER)\n+{\n+   pATIMER->CLR_EN = 1;\n+}\n+\n+/**\n+ * @brief  Clear ATIMER Interrupt Status\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_ATIMER_ClearIntStatus(LPC_ATIMER_T *pATIMER)\n+{\n+   pATIMER->CLR_STAT = 1;\n+}\n+\n+/**\n+ * @brief  Set ATIMER Interrupt Status\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_ATIMER_SetIntStatus(LPC_ATIMER_T *pATIMER)\n+{\n+   pATIMER->SET_STAT = 1;\n+}\n+\n+/**\n+ * @brief  Update Preset value\n+ * @param  pATIMER     : The base of ATIMER peripheral on the chip\n+ * @param  PresetValue : updated preset value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ATIMER_UpdatePresetValue(LPC_ATIMER_T *pATIMER, uint32_t PresetValue)\n+{\n+   pATIMER->PRESET = PresetValue;\n+}\n+\n+/**\n+ * @brief  Read value of preset register\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return Value of capture register\n+ */\n+STATIC INLINE uint32_t Chip_ATIMER_GetPresetValue(LPC_ATIMER_T *pATIMER)\n+{\n+   return pATIMER->PRESET;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ATIMER_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/ccan_18xx_43xx.h ./lpc_chip_43xx/inc/ccan_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/ccan_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/ccan_18xx_43xx.h\t2017-02-27 20:42:08.424009491 -0300\n@@ -0,0 +1,505 @@\n+/*\n+ * @brief LPC18xx/43xx CCAN driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CCAN_18XX_43XX_H_\n+#define __CCAN_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CCAN_18XX_43XX CHIP: LPC18xx/43xx CCAN driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief CCAN message interface register block structure\n+ */\n+typedef struct {   /*!< C_CAN message interface Structure       */\n+   __IO uint32_t CMDREQ;           /*!< Message interface command request  */\n+   __IO uint32_t CMDMSK;           /*!< Message interface command mask*/\n+   __IO uint32_t MSK1;             /*!< Message interface mask 1 */\n+   __IO uint32_t MSK2;             /*!< Message interface mask 2 */\n+   __IO uint32_t ARB1;             /*!< Message interface arbitration 1 */\n+   __IO uint32_t ARB2;             /*!< Message interface arbitration 2 */\n+   __IO uint32_t MCTRL;            /*!< Message interface message control */\n+   __IO uint32_t DA1;              /*!< Message interface data A1 */\n+   __IO uint32_t DA2;              /*!< Message interface data A2 */\n+   __IO uint32_t DB1;              /*!< Message interface data B1 */\n+   __IO uint32_t DB2;              /*!< Message interface data B2 */\n+   __I  uint32_t  RESERVED[13];\n+} CCAN_IF_T;\n+\n+/**\n+ * @brief CCAN Controller Area Network register block structure\n+ */\n+typedef struct {                       /*!< C_CAN Structure       */\n+   __IO uint32_t CNTL;                 /*!< CAN control            */\n+   __IO uint32_t STAT;                 /*!< Status register        */\n+   __I  uint32_t EC;                   /*!< Error counter          */\n+   __IO uint32_t BT;                   /*!< Bit timing register    */\n+   __I  uint32_t INT;                  /*!< Interrupt register     */\n+   __IO uint32_t TEST;                 /*!< Test register          */\n+   __IO uint32_t BRPE;                 /*!< Baud rate prescaler extension register */\n+   __I  uint32_t  RESERVED0;\n+   CCAN_IF_T IF[2];\n+   __I  uint32_t  RESERVED2[8];\n+   __I  uint32_t TXREQ1;               /*!< Transmission request 1 */\n+   __I  uint32_t TXREQ2;               /*!< Transmission request 2 */\n+   __I  uint32_t  RESERVED3[6];\n+   __I  uint32_t ND1;                  /*!< New data 1             */\n+   __I  uint32_t ND2;                  /*!< New data 2             */\n+   __I  uint32_t  RESERVED4[6];\n+   __I  uint32_t IR1;                  /*!< Interrupt pending 1    */\n+   __I  uint32_t IR2;                  /*!< Interrupt pending 2    */\n+   __I  uint32_t  RESERVED5[6];\n+   __I  uint32_t MSGV1;                /*!< Message valid 1        */\n+   __I  uint32_t MSGV2;                /*!< Message valid 2        */\n+   __I  uint32_t  RESERVED6[6];\n+   __IO uint32_t CLKDIV;               /*!< CAN clock divider register */\n+} LPC_CCAN_T;\n+\n+/* CCAN Control register bit definitions */\n+#define CCAN_CTRL_INIT      (1 << 0)   /*!< Initialization is started. */\n+#define CCAN_CTRL_IE        (1 << 1)   /*!< Module Interupt Enable. */\n+#define CCAN_CTRL_SIE       (1 << 2)   /*!< Status Change Interupt Enable. */\n+#define CCAN_CTRL_EIE       (1 << 3)   /*!< Error Interupt Enable. */\n+#define CCAN_CTRL_DAR       (1 << 5)   /*!< Automatic retransmission disabled. */\n+#define CCAN_CTRL_CCE       (1 << 6)   /*!< The CPU has write access to the CANBT register while the INIT bit is one.*/\n+#define CCAN_CTRL_TEST      (1 << 7)   /*!< Test mode. */\n+\n+/* CCAN STAT register bit definitions */\n+#define CCAN_STAT_LEC_MASK  (0x07)     /* Mask for Last Error Code */\n+#define CCAN_STAT_TXOK      (1 << 3)   /* Transmitted a message successfully */\n+#define CCAN_STAT_RXOK      (1 << 4)   /* Received a message successfully */\n+#define CCAN_STAT_EPASS     (1 << 5)   /* The CAN controller is in the error passive state*/\n+#define CCAN_STAT_EWARN     (1 << 6)   /*At least one of the error counters in the EC has reached the error warning limit of 96.*/\n+#define CCAN_STAT_BOFF      (1 << 7)   /*The CAN controller is in busoff state.*/\n+\n+/**\n+ * @brief Last Error Code definition\n+ */\n+typedef enum {\n+   CCAN_LEC_NO_ERROR,      /*!< No error */\n+   CCAN_LEC_STUFF_ERROR,   /*!< More than 5 equal bits in a sequence have occurred in a part of a received message where this is not allowed. */\n+   CCAN_LEC_FORM_ERROR,    /*!< A fixed format part of a received frame has the wrong format */\n+   CCAN_LEC_ACK_ERROR,     /*!< The message this CAN core transmitted was not acknowledged. */\n+   CCAN_LEC_BIT1_ERROR,    /*!< During the transmission of a message (with the exception of the arbitration field), the device wanted to send a HIGH/recessive level\n+                               (bit of logical value \"1\"), but the monitored bus value was LOW/dominant. */\n+   CCAN_LEC_BIT0_ERROR,    /*!< During the transmission of a message (or acknowledge bit, or active error flag, or overload flag), the device wanted to send a\n+                               LOW/dominant level (data or identifier bit logical value \"0\"), but the monitored Bus value was HIGH/recessive. During busoff recovery this\n+                               status is set each time a sequence of 11 HIGH/recessive bits has been monitored. This enables\n+                               the CPU to monitor the proceeding of the busoff recovery sequence (indicating the bus is not stuck at LOW/dominant or continuously disturbed). */\n+   CCAN_LEC_CRC_ERROR,     /*!< The CRC checksum was incorrect in the message received. */\n+} CCAN_LEC_T;\n+\n+/* CCAN INT register bit definitions */\n+#define CCAN_INT_NO_PENDING       0            /*!< No interrupt pending */\n+#define CCAN_INT_STATUS           0x8000   /*!< Status interrupt*/\n+#define CCAN_INT_MSG_NUM(n)       (n)      /*!<Number of messages which caused interrupts */\n+\n+/* CCAN TEST register bit definitions */\n+#define CCAN_TEST_BASIC_MODE      (1 << 2) /*!<IF1 registers used as TX buffer, IF2 registers used as RX buffer. */\n+#define CCAN_TEST_SILENT_MODE     (1 << 3) /*!<The module is in silent mode. */\n+#define CCAN_TEST_LOOPBACK_MODE   (1 << 4) /*!<Loop back mode is enabled.*/\n+#define CCAN_TEST_TD_CONTROLLED   (0)      /*!< Level at the TD pin is controlled by the CAN controller.*/\n+#define CCAN_TEST_TD_MONITORED    (1 << 5) /*!< The sample point can be monitored at the TD pin.*/\n+#define CCAN_TEST_TD_DOMINANT     (2 << 5) /*!< TD pin is driven LOW/dominant.*/\n+#define CCAN_TEST_TD_RECESSIVE    (3 << 5) /*!< TD pin is driven HIGH/recessive.*/\n+#define CCAN_TEST_RD_DOMINANT     (0)      /*!< The CAN bus is dominant (RD = 0).*/\n+#define CCAN_TEST_RD_RECESSIVE    (1 << 7)     /*!< The CAN bus is recessive (RD = 1).*/\n+\n+#define CCAN_SEG1_DEFAULT_VAL 5\n+#define CCAN_SEG2_DEFAULT_VAL 4\n+#define CCAN_SJW_DEFAULT_VAL  0\n+\n+/**\n+ * @brief CCAN Transfer direction definition\n+ */\n+typedef enum {\n+   CCAN_RX_DIR,\n+   CCAN_TX_DIR,\n+} CCAN_TRANSFER_DIR_T;\n+\n+/**\n+ * @brief  Enable CCAN Interrupts\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  mask    : Interrupt mask, or-ed bit value of\n+ *                     - CCAN_CTRL_IE <br>\n+ *                     - CCAN_CTRL_SIE <br>\n+ *                     - CCAN_CTRL_EIE <br>\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_EnableInt(LPC_CCAN_T *pCCAN, uint32_t mask)\n+{\n+   pCCAN->CNTL |= mask;\n+}\n+\n+/**\n+ * @brief  Disable CCAN Interrupts\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  mask    : Interrupt mask, or-ed bit value of\n+ *                     - CCAN_CTRL_IE <br>\n+ *                     - CCAN_CTRL_SIE <br>\n+ *                     - CCAN_CTRL_EIE <br>\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_DisableInt(LPC_CCAN_T *pCCAN, uint32_t mask)\n+{\n+   pCCAN->CNTL &= ~mask;\n+}\n+\n+/**\n+ * @brief  Get the source ID of an interrupt\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @return Interrupt source ID\n+ */\n+STATIC INLINE uint32_t Chip_CCAN_GetIntID(LPC_CCAN_T *pCCAN)\n+{\n+   return pCCAN->INT;\n+}\n+\n+/**\n+ * @brief  Get the CCAN status register\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @return CCAN status register (or-ed bit value of  CCAN_STAT_*)\n+ */\n+STATIC INLINE uint32_t Chip_CCAN_GetStatus(LPC_CCAN_T *pCCAN)\n+{\n+   return pCCAN->STAT;\n+}\n+\n+/**\n+ * @brief  Set the CCAN status\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  val     : Value to be set for status register (or-ed bit value of  CCAN_STAT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_SetStatus(LPC_CCAN_T *pCCAN, uint32_t val)\n+{\n+   pCCAN->STAT = val & 0x1F;\n+}\n+\n+/**\n+ * @brief  Clear the status of CCAN bus\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  val : Status to be cleared (or-ed bit value of  CCAN_STAT_*)\n+ * @return Nothing\n+ */\n+void Chip_CCAN_ClearStatus(LPC_CCAN_T *pCCAN, uint32_t val);\n+\n+/**\n+ * @brief  Get the current value of the transmit/receive error counter\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  dir : direction\n+ * @return Current value of the transmit/receive error counter\n+ * @note   When @a dir is #CCAN_RX_DIR, then MSB (bit-7) indicates the\n+ * receiver error passive level, if the bit is High(1) then the reciever\n+ * counter has reached error passive level as specified in CAN2.0\n+ * specification; else if the bit is Low(0) it indicates that the\n+ * error counter is below the passive level. Bits from (bit6-0) has\n+ * the actual error count. When @a dir is #CCAN_TX_DIR, the complete\n+ * 8-bits indicates the number of tx errors.\n+ */\n+STATIC INLINE uint8_t Chip_CCAN_GetErrCounter(LPC_CCAN_T *pCCAN, CCAN_TRANSFER_DIR_T dir)\n+{\n+   return (dir == CCAN_TX_DIR) ? (pCCAN->EC & 0x0FF) : ((pCCAN->EC >> 8) & 0x0FF);\n+}\n+\n+/**\n+ * @brief  Enable test mode in CCAN\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_EnableTestMode(LPC_CCAN_T *pCCAN)\n+{\n+   pCCAN->CNTL |= CCAN_CTRL_TEST;\n+}\n+\n+/**\n+ * @brief  Enable test mode in CCAN\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_DisableTestMode(LPC_CCAN_T *pCCAN)\n+{\n+   pCCAN->CNTL &= ~CCAN_CTRL_TEST;\n+}\n+\n+/**\n+ * @brief  Enable/Disable test mode in CCAN\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  cfg : Test function, or-ed bit values of CCAN_TEST_*\n+ * @return Nothing\n+ * @note   Test Mode must be enabled before using Chip_CCAN_EnableTestMode function.\n+ */\n+STATIC INLINE void Chip_CCAN_ConfigTestMode(LPC_CCAN_T *pCCAN, uint32_t cfg)\n+{\n+   pCCAN->TEST = cfg;\n+}\n+\n+/**\n+ * @brief  Enable automatic retransmission\n+ * @param  pCCAN           : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_EnableAutoRetransmit(LPC_CCAN_T *pCCAN)\n+{\n+   pCCAN->CNTL &= ~CCAN_CTRL_DAR;\n+}\n+\n+/**\n+ * @brief  Disable automatic retransmission\n+ * @param  pCCAN           : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_DisableAutoRetransmit(LPC_CCAN_T *pCCAN)\n+{\n+   pCCAN->CNTL |= CCAN_CTRL_DAR;\n+}\n+\n+/**\n+ * @brief  Get the transmit repuest bit in all message objects\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @return A 32 bits value, each bit corresponds to transmit request bit in message objects\n+ */\n+STATIC INLINE uint32_t Chip_CCAN_GetTxRQST(LPC_CCAN_T *pCCAN)\n+{\n+   return pCCAN->TXREQ1 | (pCCAN->TXREQ2 << 16);\n+}\n+\n+/**\n+ * @brief  Initialize the CCAN peripheral, free all message object in RAM\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_CCAN_Init(LPC_CCAN_T *pCCAN);\n+\n+/**\n+ * @brief  De-initialize the CCAN peripheral\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_CCAN_DeInit(LPC_CCAN_T *pCCAN);\n+\n+/**\n+ * @brief  Select bit rate for CCAN bus\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  bitRate : Bit rate to be set\n+ * @return SUCCESS/ERROR\n+ */\n+Status Chip_CCAN_SetBitRate(LPC_CCAN_T *pCCAN, uint32_t bitRate);\n+\n+/** Number of message objects in Message RAM */\n+#define CCAN_MSG_MAX_NUM                              32\n+\n+/**\n+ * @brief CAN message object structure\n+ */\n+typedef struct {\n+   uint32_t    id;     /**< ID of message, if bit 30 is set then this is extended frame */\n+   uint32_t    dlc;    /**< Message data length */\n+   uint8_t     data[8];    /**< Message data */\n+} CCAN_MSG_OBJ_T;\n+\n+typedef enum {\n+   CCAN_MSG_IF1 = 0,\n+   CCAN_MSG_IF2 = 1,\n+} CCAN_MSG_IF_T;\n+\n+/* bit field of IF command request n register */\n+#define CCAN_IF_CMDREQ_MSG_NUM(n)  (n)         /* Message number (1->20) */\n+#define CCAN_IF_CMDREQ_BUSY          0x8000            /* 1 is writing is progress, cleared when RD/WR done */\n+\n+/* bit field of IF command mask register */\n+#define CCAN_IF_CMDMSK_DATAB        (1 << 0)       /** 1 is transfer data byte 4-7 to message object, 0 is not */\n+#define CCAN_IF_CMDMSK_DATAA        (1 << 1)       /** 1 is transfer data byte 0-3 to message object, 0 is not */\n+#define CCAN_IF_CMDMSK_W_TXRQST     (1 << 2)       /** Request a transmission. Set the TXRQST bit IF1/2_MCTRL. */\n+#define CCAN_IF_CMDMSK_R_NEWDAT     (1 << 2)       /** Clear NEWDAT bit in the message object */\n+#define CCAN_IF_CMDMSK_R_CLRINTPND  (1 << 3)       /** Clear INTPND bit in the message object. */\n+#define CCAN_IF_CMDMSK_CTRL         (1 << 4)       /** 1 is transfer the CTRL bit to the message object, 0 is not */\n+#define CCAN_IF_CMDMSK_ARB          (1 << 5)       /** 1 is transfer the ARB bits to the message object, 0 is not */\n+#define CCAN_IF_CMDMSK_MASK         (1 << 6)       /** 1 is transfer the MASK bit to the message object, 0 is not */\n+#define CCAN_IF_CMDMSK_WR           (1 << 7)       /*  Tranfer direction: Write */\n+#define CCAN_IF_CMDMSK_RD           (0)                /*  Tranfer direction: Read */\n+#define CCAN_IF_CMDMSK_TRANSFER_ALL (CCAN_IF_CMDMSK_CTRL | CCAN_IF_CMDMSK_MASK | CCAN_IF_CMDMSK_ARB | \\\n+                                    CCAN_IF_CMDMSK_DATAB | CCAN_IF_CMDMSK_DATAA)\n+\n+/* bit field of IF mask 2 register */\n+#define CCAN_IF_MASK2_MXTD          (1 << 15)              /* 1 is extended identifier bit is used in the RX filter unit, 0 is not */\n+#define CCAN_IF_MASK2_MDIR(n)       (((n) & 0x01) <<  14)  /* 1 is direction bit is used in the RX filter unit, 0 is not */\n+\n+/* bit field of IF arbitration 2 register */\n+#define CCAN_IF_ARB2_DIR(n)         (((n) & 0x01) << 13)   /* 1: Dir = transmit, 0: Dir = receive */\n+#define CCAN_IF_ARB2_XTD            (1 << 14)      /* Extended identifier bit is used*/\n+#define CCAN_IF_ARB2_MSGVAL         (1 << 15)      /* Message valid bit, 1 is valid in the MO handler, 0 is ignored */\n+\n+/* bit field of IF message control register */\n+#define CCAN_IF_MCTRL_DLC_MSK        0x000F            /* bit mask for DLC */\n+#define CCAN_IF_MCTRL_EOB           (1 << 7)       /* End of buffer, always write to 1 */\n+#define CCAN_IF_MCTRL_TXRQ          (1 << 8)       /* 1 is TxRqst enabled */\n+#define CCAN_IF_MCTRL_RMTEN(n)      (((n) & 1UL) << 9) /* 1 is remote frame enabled */\n+#define CCAN_IF_MCTRL_RXIE          (1 << 10)      /* 1 is RX interrupt enabled */\n+#define CCAN_IF_MCTRL_TXIE          (1 << 11)      /* 1 is TX interrupt enabled */\n+#define CCAN_IF_MCTRL_UMSK          (1 << 12)      /* 1 is to use the mask for the receive filter mask. */\n+#define CCAN_IF_MCTRL_INTP          (1 << 13)      /* 1 indicates message object is an interrupt source */\n+#define CCAN_IF_MCTRL_MLST          (1 << 14)      /* 1 indicates a message loss. */\n+#define CCAN_IF_MCTRL_NEWD          (1 << 15)      /* 1 indicates new data is in the message buffer.  */\n+\n+#define CCAN_MSG_ID_STD_MASK        0x07FF\n+#define CCAN_MSG_ID_EXT_MASK        0x1FFFFFFF\n+\n+/**\n+ * @brief  Tranfer message object between IF registers and Message RAM\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel       : The Message interface to be used\n+ * @param  mask    : command mask (or-ed bit value of CCAN_IF_CMDMSK_*)\n+ * @param  msgNum      : The number of message object in message RAM to be get\n+ * @return Nothing\n+ */\n+void Chip_CCAN_TransferMsgObject(LPC_CCAN_T *pCCAN,\n+                                CCAN_MSG_IF_T IFSel,\n+                                uint32_t mask,\n+                                uint32_t msgNum);\n+\n+/**\n+ * @brief  Set a message into the message object in message RAM\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel       : The Message interface to be used\n+ * @param  dir : transmit/receive\n+ * @param  remoteFrame: Enable/Disable passives transmit by using remote frame\n+ * @param  msgNum      : Message number\n+ * @param  pMsgObj     : Pointer of message to be set\n+ * @return Nothing\n+ */\n+void Chip_CCAN_SetMsgObject (LPC_CCAN_T *pCCAN,\n+                            CCAN_MSG_IF_T IFSel,\n+                            CCAN_TRANSFER_DIR_T dir,\n+                            bool remoteFrame,\n+                            uint8_t msgNum,\n+                            const CCAN_MSG_OBJ_T *pMsgObj);\n+\n+/**\n+ * @brief  Get a message object in message RAM into the message buffer\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  msgNum      : The number of message object in message RAM to be get\n+ * @param  pMsgObj     : Pointer of the message buffer\n+ * @return Nothing\n+ */\n+void Chip_CCAN_GetMsgObject(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum, CCAN_MSG_OBJ_T *pMsgObj);\n+\n+/**\n+ * @brief  Enable/Disable the message object to valid\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  msgNum  : Message number\n+ * @param  valid   : true: valid, false: invalide\n+ * @return Nothing\n+ */\n+void Chip_CCAN_SetValidMsg(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum, bool valid);\n+\n+/**\n+ * @brief  Check the message objects is valid or not\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @return A 32 bits value, each bit corresponds to a message objects form 0 to 31 (1 is valid, 0 is invalid)\n+ */\n+STATIC INLINE uint32_t Chip_CCAN_GetValidMsg(LPC_CCAN_T *pCCAN)\n+{\n+   return pCCAN->MSGV1 | (pCCAN->MSGV2 << 16);\n+}\n+\n+/**\n+ * @brief  Clear the pending message interrupt\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  msgNum  : Message number\n+ * @param  dir : Select transmit or receive interrupt to be cleared\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_ClearMsgIntPend(LPC_CCAN_T *pCCAN,\n+                                            CCAN_MSG_IF_T IFSel,\n+                                            uint8_t msgNum,\n+                                            CCAN_TRANSFER_DIR_T dir)\n+{\n+   Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_RD | CCAN_IF_CMDMSK_R_CLRINTPND, msgNum);\n+}\n+\n+/**\n+ * @brief  Clear new data flag bit in the message object\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  msgNum  : Message number\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_ClearNewDataFlag(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum)\n+{\n+   Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_RD | CCAN_IF_CMDMSK_R_NEWDAT, msgNum);\n+}\n+\n+/**\n+ * @brief  Send a message\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  remoteFrame: Enable/Disable passives transmit by using remote frame\n+ * @param  pMsgObj     : Message to be transmitted\n+ * @return Nothing\n+ */\n+void Chip_CCAN_Send (LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, bool remoteFrame, CCAN_MSG_OBJ_T *pMsgObj);\n+\n+/**\n+ * @brief  Register a message ID for receiving\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  id      : Received message ID\n+ * @return Nothing\n+ */\n+void Chip_CCAN_AddReceiveID(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint32_t id);\n+\n+/**\n+ * @brief  Remove a registered message ID from receiving\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  id      : Received message ID to be removed\n+ * @return Nothing\n+ */\n+void Chip_CCAN_DeleteReceiveID(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint32_t id);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CCAN_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/cguccu_18xx_43xx.h ./lpc_chip_43xx/inc/cguccu_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/cguccu_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/cguccu_18xx_43xx.h\t2017-02-27 20:42:08.424009491 -0300\n@@ -0,0 +1,114 @@\n+/*\n+ * @brief CGU/CCU registers and control functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CGUCCU_18XX_43XX_H_\n+#define __CGUCCU_18XX_43XX_H_\n+\n+#include \"chip_clocks.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @ingroup CLOCK_18XX_43XX\n+ * @{\n+ */\n+\n+/**\n+ * Audio or USB PLL selection\n+ */\n+typedef enum CHIP_CGU_USB_AUDIO_PLL {\n+   CGU_USB_PLL,\n+   CGU_AUDIO_PLL\n+} CHIP_CGU_USB_AUDIO_PLL_T;\n+\n+/**\n+ * PLL register block\n+ */\n+typedef struct {\n+   __I  uint32_t  PLL_STAT;                /*!< PLL status register */\n+   __IO uint32_t  PLL_CTRL;                /*!< PLL control register */\n+   __IO uint32_t  PLL_MDIV;                /*!< PLL M-divider register */\n+   __IO uint32_t  PLL_NP_DIV;              /*!< PLL N/P-divider register */\n+} CGU_PLL_REG_T;\n+\n+/**\n+ * @brief LPC18XX/43XX CGU register block structure\n+ */\n+typedef struct {                           /*!< (@ 0x40050000) CGU Structure          */\n+   __I  uint32_t  RESERVED0[5];\n+   __IO uint32_t  FREQ_MON;                /*!< (@ 0x40050014) Frequency monitor register */\n+   __IO uint32_t  XTAL_OSC_CTRL;           /*!< (@ 0x40050018) Crystal oscillator control register */\n+   CGU_PLL_REG_T  PLL[CGU_AUDIO_PLL + 1];  /*!< (@ 0x4005001C) USB and audio PLL blocks */\n+   __IO uint32_t  PLL0AUDIO_FRAC;          /*!< (@ 0x4005003C) PLL0 (audio)           */\n+   __I  uint32_t  PLL1_STAT;               /*!< (@ 0x40050040) PLL1 status register   */\n+   __IO uint32_t  PLL1_CTRL;               /*!< (@ 0x40050044) PLL1 control register  */\n+   __IO uint32_t  IDIV_CTRL[CLK_IDIV_LAST];/*!< (@ 0x40050048) Integer divider A-E control registers */\n+   __IO uint32_t  BASE_CLK[CLK_BASE_LAST]; /*!< (@ 0x4005005C) Start of base clock registers */\n+} LPC_CGU_T;\n+\n+/**\n+ * @brief CCU clock config/status register pair\n+ */\n+typedef struct {\n+   __IO uint32_t  CFG;                     /*!< CCU clock configuration register */\n+   __I  uint32_t  STAT;                    /*!< CCU clock status register */\n+} CCU_CFGSTAT_T;\n+\n+/**\n+ * @brief CCU1 register block structure\n+ */\n+typedef struct {                           /*!< (@ 0x40051000) CCU1 Structure         */\n+   __IO uint32_t  PM;                      /*!< (@ 0x40051000) CCU1 power mode register */\n+   __I  uint32_t  BASE_STAT;               /*!< (@ 0x40051004) CCU1 base clocks status register */\n+   __I  uint32_t  RESERVED0[62];\n+   CCU_CFGSTAT_T  CLKCCU[CLK_CCU1_LAST];   /*!< (@ 0x40051100) Start of CCU1 clock registers */\n+} LPC_CCU1_T;\n+\n+/**\n+ * @brief CCU2 register block structure\n+ */\n+typedef struct {                           /*!< (@ 0x40052000) CCU2 Structure         */\n+   __IO uint32_t  PM;                      /*!< (@ 0x40052000) Power mode register    */\n+   __I  uint32_t  BASE_STAT;               /*!< (@ 0x40052004) CCU base clocks status register */\n+   __I  uint32_t  RESERVED0[62];\n+   CCU_CFGSTAT_T  CLKCCU[CLK_CCU2_LAST - CLK_CCU1_LAST];   /*!< (@ 0x40052100) Start of CCU2 clock registers */\n+} LPC_CCU2_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CGUCCU_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/chip_clocks.h ./lpc_chip_43xx/inc/chip_clocks.h\n--- a_8FkA5l/lpc_chip_43xx/inc/chip_clocks.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/chip_clocks.h\t2017-02-27 20:42:08.424009491 -0300\n@@ -0,0 +1,252 @@\n+/*\n+ * @brief  LPC18xx/43xx chip clock list used by CGU and CCU drivers\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_CLOCKS_H_\n+#define __CHIP_CLOCKS_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @ingroup CLOCK_18XX_43XX\n+ * @{\n+ */\n+\n+/**\n+ * @brief CGU clock input list\n+ * These are possible input clocks for the CGU and can come\n+ * from both external (crystal) and internal (PLL) sources. These\n+ * clock inputs can be routed to the base clocks (@ref CHIP_CGU_BASE_CLK_T).\n+ */\n+typedef enum CHIP_CGU_CLKIN {\n+   CLKIN_32K,      /*!< External 32KHz input */\n+   CLKIN_IRC,      /*!< Internal IRC (12MHz) input */\n+   CLKIN_ENET_RX,  /*!< External ENET_RX pin input */\n+   CLKIN_ENET_TX,  /*!< External ENET_TX pin input */\n+   CLKIN_CLKIN,    /*!< External GPCLKIN pin input */\n+   CLKIN_RESERVED1,\n+   CLKIN_CRYSTAL,  /*!< External (main) crystal pin input */\n+   CLKIN_USBPLL,   /*!< Internal USB PLL input */\n+   CLKIN_AUDIOPLL, /*!< Internal Audio PLL input */\n+   CLKIN_MAINPLL,  /*!< Internal Main PLL input */\n+   CLKIN_RESERVED2,\n+   CLKIN_RESERVED3,\n+   CLKIN_IDIVA,    /*!< Internal divider A input */\n+   CLKIN_IDIVB,    /*!< Internal divider B input */\n+   CLKIN_IDIVC,    /*!< Internal divider C input */\n+   CLKIN_IDIVD,    /*!< Internal divider D input */\n+   CLKIN_IDIVE,    /*!< Internal divider E input */\n+   CLKINPUT_PD     /*!< External 32KHz input */\n+} CHIP_CGU_CLKIN_T;\n+\n+/**\n+ * @brief CGU base clocks\n+ * CGU base clocks are clocks that are associated with a single input clock\n+ * and are routed out to 1 or more peripherals. For example, the CLK_BASE_PERIPH\n+ * clock can be configured to use the CLKIN_MAINPLL input clock, which will in\n+ * turn route that clock to the CLK_PERIPH_BUS, CLK_PERIPH_CORE, and\n+ * CLK_PERIPH_SGPIO periphral clocks.\n+ */\n+typedef enum CHIP_CGU_BASE_CLK {\n+   CLK_BASE_SAFE,      /*!< Base clock for WDT oscillator, IRC input only */\n+   CLK_BASE_USB0,      /*!< Base USB clock for USB0, USB PLL input only */\n+#if defined(CHIP_LPC43XX)\n+   CLK_BASE_PERIPH,    /*!< Base clock for SGPIO */\n+#else\n+   CLK_BASE_RESERVED1,\n+#endif\n+   CLK_BASE_USB1,      /*!< Base USB clock for USB1 */\n+   CLK_BASE_MX,        /*!< Base clock for CPU core */\n+   CLK_BASE_SPIFI,     /*!< Base clock for SPIFI */\n+#if defined(CHIP_LPC43XX)\n+   CLK_BASE_SPI,       /*!< Base clock for SPI */\n+#else\n+   CLK_BASE_RESERVED2,\n+#endif\n+   CLK_BASE_PHY_RX,    /*!< Base clock for PHY RX */\n+   CLK_BASE_PHY_TX,    /*!< Base clock for PHY TX */\n+   CLK_BASE_APB1,      /*!< Base clock for APB1 group */\n+   CLK_BASE_APB3,      /*!< Base clock for APB3 group */\n+   CLK_BASE_LCD,       /*!< Base clock for LCD pixel clock */\n+#if defined(CHIP_LPC43XX)\n+   CLK_BASE_ADCHS,     /*!< Base clock for ADCHS */\n+#else\n+   CLK_BASE_RESERVED3,\n+#endif\n+   CLK_BASE_SDIO,      /*!< Base clock for SDIO */\n+   CLK_BASE_SSP0,      /*!< Base clock for SSP0 */\n+   CLK_BASE_SSP1,      /*!< Base clock for SSP1 */\n+   CLK_BASE_UART0,     /*!< Base clock for UART0 */\n+   CLK_BASE_UART1,     /*!< Base clock for UART1 */\n+   CLK_BASE_UART2,     /*!< Base clock for UART2 */\n+   CLK_BASE_UART3,     /*!< Base clock for UART3 */\n+   CLK_BASE_OUT,       /*!< Base clock for CLKOUT pin */\n+   CLK_BASE_RESERVED4,\n+   CLK_BASE_RESERVED5,\n+   CLK_BASE_RESERVED6,\n+   CLK_BASE_RESERVED7,\n+   CLK_BASE_APLL,      /*!< Base clock for audio PLL */\n+   CLK_BASE_CGU_OUT0,  /*!< Base clock for CGUOUT0 pin */\n+   CLK_BASE_CGU_OUT1,  /*!< Base clock for CGUOUT1 pin */\n+   CLK_BASE_LAST,\n+   CLK_BASE_NONE = CLK_BASE_LAST\n+} CHIP_CGU_BASE_CLK_T;\n+\n+/**\n+ * @brief CGU dividers\n+ * CGU dividers provide an extra clock state where a specific clock can be\n+ * divided before being routed to a peripheral group. A divider accepts an\n+ * input clock and then divides it. To use the divided clock for a base clock\n+ * group, use the divider as the input clock for the base clock (for example,\n+ * use CLKIN_IDIVB, where CLKIN_MAINPLL might be the input into the divider).\n+ */\n+typedef enum CHIP_CGU_IDIV {\n+   CLK_IDIV_A,     /*!< CGU clock divider A */\n+   CLK_IDIV_B,     /*!< CGU clock divider B */\n+   CLK_IDIV_C,     /*!< CGU clock divider A */\n+   CLK_IDIV_D,     /*!< CGU clock divider D */\n+   CLK_IDIV_E,     /*!< CGU clock divider E */\n+   CLK_IDIV_LAST\n+} CHIP_CGU_IDIV_T;\n+\n+#define CHIP_CGU_IDIV_MASK(x)  (\"\\x03\\x0F\\x0F\\x0F\\xFF\"[x])\n+\n+/**\n+ * @brief Peripheral clocks\n+ * Peripheral clocks are individual clocks routed to peripherals. Although\n+ * multiple peripherals may share a same base clock, each peripheral's clock\n+ * can be enabled or disabled individually. Some peripheral clocks also have\n+ * additional dividers associated with them.\n+ */\n+typedef enum CHIP_CCU_CLK {\n+   /* CCU1 clocks */\n+   CLK_APB3_BUS,       /*!< APB3 bus clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_I2C1,      /*!< I2C1 register/perigheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_DAC,       /*!< DAC peripheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_ADC0,      /*!< ADC0 register/perigheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_ADC1,      /*!< ADC1 register/perigheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_CAN0,      /*!< CAN0 register/perigheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB1_BUS = 32,  /*!< APB1 bus clock clock from base clock CLK_BASE_APB1 */\n+   CLK_APB1_MOTOCON,   /*!< Motor controller register/perigheral clock from base clock CLK_BASE_APB1 */\n+   CLK_APB1_I2C0,      /*!< I2C0 register/perigheral clock from base clock CLK_BASE_APB1 */\n+   CLK_APB1_I2S,       /*!< I2S register/perigheral clock from base clock CLK_BASE_APB1 */\n+   CLK_APB1_CAN1,      /*!< CAN1 register/perigheral clock from base clock CLK_BASE_APB1 */\n+   CLK_SPIFI = 64,     /*!< SPIFI SCKI input clock from base clock CLK_BASE_SPIFI */\n+   CLK_MX_BUS = 96,    /*!< M3/M4 BUS core clock from base clock CLK_BASE_MX */\n+   CLK_MX_SPIFI,       /*!< SPIFI register clock from base clock CLK_BASE_MX */\n+   CLK_MX_GPIO,        /*!< GPIO register clock from base clock CLK_BASE_MX */\n+   CLK_MX_LCD,         /*!< LCD register clock from base clock CLK_BASE_MX */\n+   CLK_MX_ETHERNET,    /*!< ETHERNET register clock from base clock CLK_BASE_MX */\n+   CLK_MX_USB0,        /*!< USB0 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_EMC,         /*!< EMC clock from base clock CLK_BASE_MX */\n+   CLK_MX_SDIO,        /*!< SDIO register clock from base clock CLK_BASE_MX */\n+   CLK_MX_DMA,         /*!< DMA register clock from base clock CLK_BASE_MX */\n+   CLK_MX_MXCORE,      /*!< M3/M4 CPU core clock from base clock CLK_BASE_MX */\n+   RESERVED_ALIGN = CLK_MX_MXCORE + 3,\n+   CLK_MX_SCT,         /*!< SCT register clock from base clock CLK_BASE_MX */\n+   CLK_MX_USB1,        /*!< USB1 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_EMC_DIV,     /*!< ENC divider clock from base clock CLK_BASE_MX */\n+   CLK_MX_FLASHA,      /*!< FLASHA bank clock from base clock CLK_BASE_MX */\n+   CLK_MX_FLASHB,      /*!< FLASHB bank clock from base clock CLK_BASE_MX */\n+#if defined(CHIP_LPC43XX)\n+   CLK_M4_M0APP,       /*!< M0 app CPU core clock from base clock CLK_BASE_MX */\n+   CLK_MX_ADCHS,       /*!< ADCHS clock from base clock CLK_BASE_ADCHS */\n+#else\n+   CLK_RESERVED1,\n+   CLK_RESERVED2,\n+#endif\n+   CLK_MX_EEPROM,      /*!< EEPROM clock from base clock CLK_BASE_MX */\n+   CLK_MX_WWDT = 128,  /*!< WWDT register clock from base clock CLK_BASE_MX */\n+   CLK_MX_UART0,       /*!< UART0 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_UART1,       /*!< UART1 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_SSP0,        /*!< SSP0 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_TIMER0,      /*!< TIMER0 register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_TIMER1,      /*!< TIMER1 register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_SCU,         /*!< SCU register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_CREG,        /*!< CREG clock from base clock CLK_BASE_MX */\n+   CLK_MX_RITIMER = 160,   /*!< RITIMER register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_UART2,       /*!< UART3 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_UART3,       /*!< UART4 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_TIMER2,      /*!< TIMER2 register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_TIMER3,      /*!< TIMER3 register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_SSP1,        /*!< SSP1 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_QEI,         /*!< QEI register/perigheral clock from base clock CLK_BASE_MX */\n+#if defined(CHIP_LPC43XX)\n+   CLK_PERIPH_BUS = 192,   /*!< Peripheral bus clock from base clock CLK_BASE_PERIPH */\n+   CLK_RESERVED3,\n+   CLK_PERIPH_CORE,    /*!< Peripheral core clock from base clock CLK_BASE_PERIPH */\n+   CLK_PERIPH_SGPIO,   /*!< SGPIO clock from base clock CLK_BASE_PERIPH */\n+#else\n+   CLK_RESERVED3 = 192,\n+   CLK_RESERVED3A,\n+   CLK_RESERVED4,\n+   CLK_RESERVED5,\n+#endif\n+   CLK_USB0 = 224,         /*!< USB0 clock from base clock CLK_BASE_USB0 */\n+   CLK_USB1 = 256,         /*!< USB1 clock from base clock CLK_BASE_USB1 */\n+#if defined(CHIP_LPC43XX)\n+   CLK_SPI = 288,          /*!< SPI clock from base clock CLK_BASE_SPI */\n+   CLK_ADCHS = 320,        /*!< ADCHS clock from base clock CLK_BASE_ADCHS */\n+#else\n+   CLK_RESERVED7 = 320,\n+   CLK_RESERVED8,\n+#endif\n+   CLK_CCU1_LAST,\n+\n+   /* CCU2 clocks */\n+   CLK_CCU2_START,\n+   CLK_APLL = CLK_CCU2_START,  /*!< Audio PLL clock from base clock CLK_BASE_APLL */\n+   RESERVED_ALIGNB = CLK_CCU2_START + 31,\n+   CLK_APB2_UART3,         /*!< UART3 clock from base clock CLK_BASE_UART3 */\n+   RESERVED_ALIGNC = CLK_CCU2_START + 63,\n+   CLK_APB2_UART2,         /*!< UART2 clock from base clock CLK_BASE_UART2 */\n+   RESERVED_ALIGND = CLK_CCU2_START + 95,\n+   CLK_APB0_UART1,         /*!< UART1 clock from base clock CLK_BASE_UART1 */\n+   RESERVED_ALIGNE = CLK_CCU2_START + 127,\n+   CLK_APB0_UART0,         /*!< UART0 clock from base clock CLK_BASE_UART0 */\n+   RESERVED_ALIGNF = CLK_CCU2_START + 159,\n+   CLK_APB2_SSP1,          /*!< SSP1 clock from base clock CLK_BASE_SSP1 */\n+   RESERVED_ALIGNG = CLK_CCU2_START + 191,\n+   CLK_APB0_SSP0,          /*!< SSP0 clock from base clock CLK_BASE_SSP0 */\n+   RESERVED_ALIGNH = CLK_CCU2_START + 223,\n+   CLK_APB2_SDIO,          /*!< SDIO clock from base clock CLK_BASE_SDIO */\n+   CLK_CCU2_LAST\n+} CHIP_CCU_CLK_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_CLOCKS_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/chip.h ./lpc_chip_43xx/inc/chip.h\n--- a_8FkA5l/lpc_chip_43xx/inc/chip.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/chip.h\t2017-02-27 20:42:08.424009491 -0300\n@@ -0,0 +1,163 @@\n+/*\n+ * @brief Chip inclusion selector file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_H_\n+#define __CHIP_H_\n+\n+#include \"sys_config.h\"\n+#include \"cmsis.h\"\n+\n+#if defined(CHIP_LPC18XX)\n+#include \"chip_lpc18xx.h\"\n+\n+#elif defined(CHIP_LPC43XX)\n+#include \"chip_lpc43xx.h\"\n+\n+#else\n+#error CHIP_LPC18XX or CHIP_LPC43XX must be defined\n+#endif\n+\n+/* Aliasing for Chip_USB_Init */\n+#define Chip_USB_Init  Chip_USB0_Init\n+\n+#ifdef __cplusplus\n+extern \"C\"\n+{\n+#endif\n+\n+/** @ingroup CHIP_18XX_43XX_DRIVER_OPTIONS\n+ * @{\n+ */\n+\n+/**\n+ * @brief  System oscillator rate\n+ * This value is defined externally to the chip layer and contains\n+ * the value in Hz for the external oscillator for the board. If using the\n+ * internal oscillator, this rate can be 0.\n+ */\n+extern const uint32_t OscRateIn;\n+\n+/**\n+ * @brief  Clock rate on the CLKIN pin\n+ * This value is defined externally to the chip layer and contains\n+ * the value in Hz for the CLKIN pin for the board. If this pin isn't used,\n+ * this rate can be 0.\n+ */\n+extern const uint32_t ExtRateIn;\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup SUPPORT_18XX_43XX_FUNC CHIP: LPC18xx/43xx support functions\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Current system clock rate, mainly used for sysTick\n+ */\n+extern uint32_t SystemCoreClock;\n+\n+/**\n+ * @brief  Update system core clock rate, should be called if the\n+ *         system has a clock rate change\n+ * @return None\n+ */\n+void SystemCoreClockUpdate(void);\n+\n+/**\n+ * @brief USB0 Pin and clock initialization\n+ * Calling this function will initialize the USB0 pins and the clock\n+ * @note This function will assume that the chip is clocked by an\n+ * external crystal oscillator of frequency 12MHz\n+ */\n+void Chip_USB0_Init(void);\n+\n+/**\n+ * @brief USB1 Pin and clock initialization\n+ * Calling this function will initialize the USB0 pins and the clock\n+ * @note This function will assume that the chip is clocked by an\n+ * external crystal oscillator of frequency 12MHz\n+ */\n+void Chip_USB1_Init(void);\n+\n+/**\n+ * @brief  Set up and initialize hardware prior to call to main()\n+ * @return None\n+ * @note   Chip_SystemInit() is called prior to the application and sets up\n+ * system clocking prior to the application starting.\n+ */\n+void Chip_SystemInit(void);\n+\n+/**\n+ * @brief  Clock and PLL initialization based input given in @a clkin\n+ * @param  clkin       : Input reference clock to PLL1 (MAINPLL) see #CHIP_CGU_CLKIN_T\n+ * @param  core_freq   : Desired output frequency of the PLL1 (Base clock to CPU Core)\n+ * @param  setbase     : Setup default base clock of peripherals (see notes)\n+ * @return None\n+ * @note   This API will initialize the MAINPLL (PLL1) to the frequency given by\n+ *             @a core_freq, and will use this PLL's output as the base clock for CPU\n+ *             Core. If @a clkin is #CLKIN_CRYSTAL then External Crystal Oscillator\n+ *             of frequency 12MHz will be used as the input reference clock to PLL1.<br>\n+ *             Parameter @a setbase if true will set APB[1,3], SSP[0,1], UART[0,1,2,3],\n+ *             SPI base clocks to MAINPLL's output clock. If @a setbase is false then\n+ *             the base clock settings for the peripherals will not be modified, only\n+ *             CPU Core's base clock will be updated to use clock generated by PLL1.\n+ */\n+void Chip_SetupCoreClock(CHIP_CGU_CLKIN_T clkin, uint32_t core_freq, bool setbase);\n+\n+/**\n+ * @brief  Clock and PLL initialization based on the external oscillator\n+ * @return None\n+ * @note   This API will initialize the MAINPLL (PLL1) to the maximum\n+ *             frequency (180MHz[LPC18xx] or 204MHz[LPC43xx]) and uses this\n+ *             PLL's output as the base clock for CPU Core. External Crystal Oscillator\n+ *             of frequency 12MHz will be used as the input reference clock to PLL1.\n+ */\n+void Chip_SetupXtalClocking(void);\n+\n+/**\n+ * @brief  Clock and PLL initialization based on the internal oscillator\n+ * @return None\n+ * @note   This API will initialize the MAINPLL (PLL1) to the maximum\n+ *             frequency (180MHz[LPC18xx] or 204MHz[LPC43xx]) and uses this\n+ *             PLL's output as the base clock for CPU Core. Internal RC Oscillator\n+ *             will be used as the input reference clock to PLL1.\n+ */\n+void Chip_SetupIrcClocking(void);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/chip_lpc18xx.h ./lpc_chip_43xx/inc/chip_lpc18xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/chip_lpc18xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/chip_lpc18xx.h\t2017-02-27 20:42:08.424009491 -0300\n@@ -0,0 +1,210 @@\n+/*\n+ * @brief LPC18xx basic chip inclusion file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_LPC18XX_H_\n+#define __CHIP_LPC18XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include \"lpc_types.h\"\n+#include \"sys_config.h\"\n+\n+#ifndef CORE_M3\n+#error CORE_M3 is not defined for the LPC18xx architecture\n+#error CORE_M3 should be defined as part of your compiler define list\n+#endif\n+\n+#ifndef CHIP_LPC18XX\n+#error The LPC18XX Chip include path is used for this build, but\n+#error CHIP_LPC18XX is not defined!\n+#endif\n+\n+/** @defgroup PERIPH_18XX_BASE CHIP: LPC18xx Peripheral addresses and register set declarations\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define LPC_SCT_BASE              0x40000000\n+#define LPC_GPDMA_BASE            0x40002000\n+#define LPC_SPIFI_BASE            0x40003000\n+#define LPC_SDMMC_BASE            0x40004000\n+#define LPC_EMC_BASE              0x40005000\n+#define LPC_USB0_BASE             0x40006000\n+#define LPC_USB1_BASE             0x40007000\n+#define LPC_LCD_BASE              0x40008000\n+#define LPC_FMCA_BASE             0x4000C000\n+#define LPC_FMCB_BASE             0x4000D000\n+#define LPC_ETHERNET_BASE         0x40010000\n+#define LPC_ATIMER_BASE           0x40040000\n+#define LPC_REGFILE_BASE          0x40041000\n+#define LPC_PMC_BASE              0x40042000\n+#define LPC_CREG_BASE             0x40043000\n+#define LPC_EVRT_BASE             0x40044000\n+#define LPC_OTP_BASE              0x40045000\n+#define LPC_RTC_BASE              0x40046000\n+#define LPC_CGU_BASE              0x40050000\n+#define LPC_CCU1_BASE             0x40051000\n+#define LPC_CCU2_BASE             0x40052000\n+#define LPC_RGU_BASE              0x40053000\n+#define LPC_WWDT_BASE             0x40080000\n+#define LPC_USART0_BASE           0x40081000\n+#define LPC_USART2_BASE           0x400C1000\n+#define LPC_USART3_BASE           0x400C2000\n+#define LPC_UART1_BASE            0x40082000\n+#define LPC_SSP0_BASE             0x40083000\n+#define LPC_SSP1_BASE             0x400C5000\n+#define LPC_TIMER0_BASE           0x40084000\n+#define LPC_TIMER1_BASE           0x40085000\n+#define LPC_TIMER2_BASE           0x400C3000\n+#define LPC_TIMER3_BASE           0x400C4000\n+#define LPC_SCU_BASE              0x40086000\n+#define LPC_PIN_INT_BASE          0x40087000\n+#define LPC_GPIO_GROUP_INT0_BASE  0x40088000\n+#define LPC_GPIO_GROUP_INT1_BASE  0x40089000\n+#define LPC_MCPWM_BASE            0x400A0000\n+#define LPC_I2C0_BASE             0x400A1000\n+#define LPC_I2C1_BASE             0x400E0000\n+#define LPC_I2S0_BASE             0x400A2000\n+#define LPC_I2S1_BASE             0x400A3000\n+#define LPC_C_CAN1_BASE           0x400A4000\n+#define LPC_RITIMER_BASE          0x400C0000\n+#define LPC_QEI_BASE              0x400C6000\n+#define LPC_GIMA_BASE             0x400C7000\n+#define LPC_DAC_BASE              0x400E1000\n+#define LPC_C_CAN0_BASE           0x400E2000\n+#define LPC_ADC0_BASE             0x400E3000\n+#define LPC_ADC1_BASE             0x400E4000\n+#define LPC_GPIO_PORT_BASE        0x400F4000\n+#define LPC_SPI_BASE              0x40100000\n+#define LPC_SGPIO_BASE            0x40101000\n+#define LPC_EEPROM_BASE           0x4000E000\n+#define LPC_ROM_API_BASE          0x10400100\n+\n+#define LPC_SCT                   ((LPC_SCT_T              *) LPC_SCT_BASE)\n+#define LPC_GPDMA                 ((LPC_GPDMA_T            *) LPC_GPDMA_BASE)\n+#define LPC_SDMMC                 ((LPC_SDMMC_T            *) LPC_SDMMC_BASE)\n+#define LPC_EMC                   ((LPC_EMC_T              *) LPC_EMC_BASE)\n+#define LPC_USB0                  ((LPC_USBHS_T            *) LPC_USB0_BASE)\n+#define LPC_USB1                  ((LPC_USBHS_T            *) LPC_USB1_BASE)\n+#define LPC_LCD                   ((LPC_LCD_T              *) LPC_LCD_BASE)\n+#define LPC_ETHERNET              ((LPC_ENET_T             *) LPC_ETHERNET_BASE)\n+#define LPC_ATIMER                ((LPC_ATIMER_T           *) LPC_ATIMER_BASE)\n+#define LPC_REGFILE               ((LPC_REGFILE_T          *) LPC_REGFILE_BASE)\n+#define LPC_PMC                   ((LPC_PMC_T              *) LPC_PMC_BASE)\n+#define LPC_EVRT                  ((LPC_EVRT_T             *) LPC_EVRT_BASE)\n+#define LPC_RTC                   ((LPC_RTC_T              *) LPC_RTC_BASE)\n+#define LPC_CGU                   ((LPC_CGU_T              *) LPC_CGU_BASE)\n+#define LPC_CCU1                  ((LPC_CCU1_T             *) LPC_CCU1_BASE)\n+#define LPC_CCU2                  ((LPC_CCU2_T             *) LPC_CCU2_BASE)\n+#define LPC_CREG                  ((LPC_CREG_T             *) LPC_CREG_BASE)\n+#define LPC_RGU                   ((LPC_RGU_T              *) LPC_RGU_BASE)\n+#define LPC_WWDT                  ((LPC_WWDT_T             *) LPC_WWDT_BASE)\n+#define LPC_USART0                ((LPC_USART_T            *) LPC_USART0_BASE)\n+#define LPC_USART2                ((LPC_USART_T            *) LPC_USART2_BASE)\n+#define LPC_USART3                ((LPC_USART_T            *) LPC_USART3_BASE)\n+#define LPC_UART1                 ((LPC_USART_T            *) LPC_UART1_BASE)\n+#define LPC_SSP0                  ((LPC_SSP_T              *) LPC_SSP0_BASE)\n+#define LPC_SSP1                  ((LPC_SSP_T              *) LPC_SSP1_BASE)\n+#define LPC_TIMER0                ((LPC_TIMER_T            *) LPC_TIMER0_BASE)\n+#define LPC_TIMER1                ((LPC_TIMER_T            *) LPC_TIMER1_BASE)\n+#define LPC_TIMER2                ((LPC_TIMER_T            *) LPC_TIMER2_BASE)\n+#define LPC_TIMER3                ((LPC_TIMER_T            *) LPC_TIMER3_BASE)\n+#define LPC_SCU                   ((LPC_SCU_T              *) LPC_SCU_BASE)\n+#define LPC_GPIO_PIN_INT          ((LPC_PIN_INT_T          *) LPC_PIN_INT_BASE)\n+#define LPC_GPIOGROUP             ((LPC_GPIOGROUPINT_T     *) LPC_GPIO_GROUP_INT0_BASE)\n+#define LPC_MCPWM                 ((LPC_MCPWM_T            *) LPC_MCPWM_BASE)\n+#define LPC_I2C0                  ((LPC_I2C_T              *) LPC_I2C0_BASE)\n+#define LPC_I2C1                  ((LPC_I2C_T              *) LPC_I2C1_BASE)\n+#define LPC_I2S0                  ((LPC_I2S_T              *) LPC_I2S0_BASE)\n+#define LPC_I2S1                  ((LPC_I2S_T              *) LPC_I2S1_BASE)\n+#define LPC_C_CAN1                ((LPC_CCAN_T             *) LPC_C_CAN1_BASE)\n+#define LPC_RITIMER               ((LPC_RITIMER_T          *) LPC_RITIMER_BASE)\n+#define LPC_QEI                   ((LPC_QEI_T              *) LPC_QEI_BASE)\n+#define LPC_GIMA                  ((LPC_GIMA_T             *) LPC_GIMA_BASE)\n+#define LPC_DAC                   ((LPC_DAC_T              *) LPC_DAC_BASE)\n+#define LPC_C_CAN0                ((LPC_CCAN_T             *) LPC_C_CAN0_BASE)\n+#define LPC_ADC0                  ((LPC_ADC_T              *) LPC_ADC0_BASE)\n+#define LPC_ADC1                  ((LPC_ADC_T              *) LPC_ADC1_BASE)\n+#define LPC_GPIO_PORT             ((LPC_GPIO_T             *) LPC_GPIO_PORT_BASE)\n+#define LPC_EEPROM                ((LPC_EEPROM_T           *) LPC_EEPROM_BASE)\n+#define LPC_FMCA                  ((LPC_FMC_T              *) LPC_FMCA_BASE)\n+#define LPC_FMC                   ((LPC_FMC_T            * *) LPC_FMCA_BASE)\n+#define LPC_FMCB                  ((LPC_FMC_T              *) LPC_FMCB_BASE)\n+#define LPC_ROM_API               ((LPC_ROM_API_T          *) LPC_ROM_API_BASE)\n+\n+/**\n+ * @}\n+ */\n+\n+#include \"scu_18xx_43xx.h\"\n+#include \"clock_18xx_43xx.h\"\n+#include \"rgu_18xx_43xx.h\"\n+#include \"creg_18xx_43xx.h\"\n+#include \"evrt_18xx_43xx.h\"\n+#include \"otp_18xx_43xx.h\"\n+#include \"sdif_18xx_43xx.h\"\n+#include \"adc_18xx_43xx.h\"\n+#include \"atimer_18xx_43xx.h\"\n+#include \"aes_18xx_43xx.h\"\n+#include \"ccan_18xx_43xx.h\"\n+#include \"dac_18xx_43xx.h\"\n+#include \"eeprom_18xx_43xx.h\"\n+#include \"emc_18xx_43xx.h\"\n+#include \"enet_18xx_43xx.h\"\n+#include \"fmc_18xx_43xx.h\"\n+#include \"i2c_18xx_43xx.h\"\n+#include \"i2s_18xx_43xx.h\"\n+#include \"gima_18xx_43xx.h\"\n+#include \"gpdma_18xx_43xx.h\"\n+#include \"gpio_18xx_43xx.h\"\n+#include \"pinint_18xx_43xx.h\"\n+#include \"gpiogroup_18xx_43xx.h\"\n+#include \"lcd_18xx_43xx.h\"\n+#include \"mcpwm_18xx_43xx.h\"\n+#include \"pmc_18xx_43xx.h\"\n+#include \"qei_18xx_43xx.h\"\n+#include \"ritimer_18xx_43xx.h\"\n+#include \"rtc_18xx_43xx.h\"\n+#include \"sct_18xx_43xx.h\"\n+#include \"sct_pwm_18xx_43xx.h\"\n+#include \"sdmmc_18xx_43xx.h\"\n+#include \"ssp_18xx_43xx.h\"\n+#include \"timer_18xx_43xx.h\"\n+#include \"uart_18xx_43xx.h\"\n+#include \"usbhs_18xx_43xx.h\"\n+#include \"wwdt_18xx_43xx.h\"\n+#include \"romapi_18xx_43xx.h\"\n+#include \"i2cm_18xx_43xx.h\"\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_LPC18XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/chip_lpc43xx.h ./lpc_chip_43xx/inc/chip_lpc43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/chip_lpc43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/chip_lpc43xx.h\t2017-02-27 20:42:08.424009491 -0300\n@@ -0,0 +1,221 @@\n+/*\n+ * @brief LPC43xx basic chip inclusion file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_LPC43XX_H_\n+#define __CHIP_LPC43XX_H_\n+\n+#include \"lpc_types.h\"\n+#include \"sys_config.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#if !defined(CORE_M4) && !defined(CORE_M0)\n+#error CORE_M4 or CORE_M0 is not defined for the LPC43xx architecture\n+#error CORE_M4 or CORE_M0 should be defined as part of your compiler define list\n+#endif\n+\n+#ifndef CHIP_LPC43XX\n+#error The LPC43XX Chip include path is used for this build, but\n+#error CHIP_LPC43XX is not defined!\n+#endif\n+\n+/** @defgroup PERIPH_43XX_BASE CHIP: LPC43xx Peripheral addresses and register set declarations\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define LPC_SCT_BASE              0x40000000\n+#define LPC_GPDMA_BASE            0x40002000\n+#define LPC_SPIFI_BASE            0x40003000\n+#define LPC_SDMMC_BASE            0x40004000\n+#define LPC_EMC_BASE              0x40005000\n+#define LPC_USB0_BASE             0x40006000\n+#define LPC_USB1_BASE             0x40007000\n+#define LPC_LCD_BASE              0x40008000\n+#define LPC_FMCA_BASE             0x4000C000\n+#define LPC_FMCB_BASE             0x4000D000\n+#define LPC_ETHERNET_BASE         0x40010000\n+#define LPC_ATIMER_BASE           0x40040000\n+#define LPC_REGFILE_BASE          0x40041000\n+#define LPC_PMC_BASE              0x40042000\n+#define LPC_CREG_BASE             0x40043000\n+#define LPC_EVRT_BASE             0x40044000\n+#define LPC_RTC_BASE              0x40046000\n+#define LPC_CGU_BASE              0x40050000\n+#define LPC_CCU1_BASE             0x40051000\n+#define LPC_CCU2_BASE             0x40052000\n+#define LPC_RGU_BASE              0x40053000\n+#define LPC_WWDT_BASE             0x40080000\n+#define LPC_USART0_BASE           0x40081000\n+#define LPC_USART2_BASE           0x400C1000\n+#define LPC_USART3_BASE           0x400C2000\n+#define LPC_UART1_BASE            0x40082000\n+#define LPC_SSP0_BASE             0x40083000\n+#define LPC_SSP1_BASE             0x400C5000\n+#define LPC_TIMER0_BASE           0x40084000\n+#define LPC_TIMER1_BASE           0x40085000\n+#define LPC_TIMER2_BASE           0x400C3000\n+#define LPC_TIMER3_BASE           0x400C4000\n+#define LPC_SCU_BASE              0x40086000\n+#define LPC_PIN_INT_BASE          0x40087000\n+#define LPC_GPIO_GROUP_INT0_BASE  0x40088000\n+#define LPC_GPIO_GROUP_INT1_BASE  0x40089000\n+#define LPC_MCPWM_BASE            0x400A0000\n+#define LPC_I2C0_BASE             0x400A1000\n+#define LPC_I2C1_BASE             0x400E0000\n+#define LPC_I2S0_BASE             0x400A2000\n+#define LPC_I2S1_BASE             0x400A3000\n+#define LPC_C_CAN1_BASE           0x400A4000\n+#define LPC_RITIMER_BASE          0x400C0000\n+#define LPC_QEI_BASE              0x400C6000\n+#define LPC_GIMA_BASE             0x400C7000\n+#define LPC_DAC_BASE              0x400E1000\n+#define LPC_C_CAN0_BASE           0x400E2000\n+#define LPC_ADC0_BASE             0x400E3000\n+#define LPC_ADC1_BASE             0x400E4000\n+#define LPC_ADCHS_BASE            0x400F0000\n+#define LPC_GPIO_PORT_BASE        0x400F4000\n+#define LPC_SPI_BASE              0x40100000\n+#define LPC_SGPIO_BASE            0x40101000\n+#define LPC_EEPROM_BASE           0x4000E000\n+#define LPC_ROM_API_BASE          0x10400100\n+\n+#define LPC_SCT                   ((LPC_SCT_T              *) LPC_SCT_BASE)\n+#define LPC_GPDMA                 ((LPC_GPDMA_T            *) LPC_GPDMA_BASE)\n+#define LPC_SDMMC                 ((LPC_SDMMC_T            *) LPC_SDMMC_BASE)\n+#define LPC_EMC                   ((LPC_EMC_T              *) LPC_EMC_BASE)\n+#define LPC_USB0                  ((LPC_USBHS_T            *) LPC_USB0_BASE)\n+#define LPC_USB1                  ((LPC_USBHS_T            *) LPC_USB1_BASE)\n+#define LPC_LCD                   ((LPC_LCD_T              *) LPC_LCD_BASE)\n+#define LPC_ETHERNET              ((LPC_ENET_T             *) LPC_ETHERNET_BASE)\n+#define LPC_ATIMER                ((LPC_ATIMER_T           *) LPC_ATIMER_BASE)\n+#define LPC_REGFILE               ((LPC_REGFILE_T          *) LPC_REGFILE_BASE)\n+#define LPC_PMC                   ((LPC_PMC_T              *) LPC_PMC_BASE)\n+#define LPC_EVRT                  ((LPC_EVRT_T             *) LPC_EVRT_BASE)\n+#define LPC_RTC                   ((LPC_RTC_T              *) LPC_RTC_BASE)\n+#define LPC_CGU                   ((LPC_CGU_T              *) LPC_CGU_BASE)\n+#define LPC_CCU1                  ((LPC_CCU1_T             *) LPC_CCU1_BASE)\n+#define LPC_CCU2                  ((LPC_CCU2_T             *) LPC_CCU2_BASE)\n+#define LPC_CREG                  ((LPC_CREG_T             *) LPC_CREG_BASE)\n+#define LPC_RGU                   ((LPC_RGU_T              *) LPC_RGU_BASE)\n+#define LPC_WWDT                  ((LPC_WWDT_T             *) LPC_WWDT_BASE)\n+#define LPC_USART0                ((LPC_USART_T            *) LPC_USART0_BASE)\n+#define LPC_USART2                ((LPC_USART_T            *) LPC_USART2_BASE)\n+#define LPC_USART3                ((LPC_USART_T            *) LPC_USART3_BASE)\n+#define LPC_UART1                 ((LPC_USART_T            *) LPC_UART1_BASE)\n+#define LPC_SSP0                  ((LPC_SSP_T              *) LPC_SSP0_BASE)\n+#define LPC_SSP1                  ((LPC_SSP_T              *) LPC_SSP1_BASE)\n+#define LPC_TIMER0                ((LPC_TIMER_T            *) LPC_TIMER0_BASE)\n+#define LPC_TIMER1                ((LPC_TIMER_T            *) LPC_TIMER1_BASE)\n+#define LPC_TIMER2                ((LPC_TIMER_T            *) LPC_TIMER2_BASE)\n+#define LPC_TIMER3                ((LPC_TIMER_T            *) LPC_TIMER3_BASE)\n+#define LPC_SCU                   ((LPC_SCU_T              *) LPC_SCU_BASE)\n+#define LPC_GPIO_PIN_INT          ((LPC_PIN_INT_T          *) LPC_PIN_INT_BASE)\n+#define LPC_GPIOGROUP             ((LPC_GPIOGROUPINT_T     *) LPC_GPIO_GROUP_INT0_BASE)\n+#define LPC_MCPWM                 ((LPC_MCPWM_T            *) LPC_MCPWM_BASE)\n+#define LPC_I2C0                  ((LPC_I2C_T              *) LPC_I2C0_BASE)\n+#define LPC_I2C1                  ((LPC_I2C_T              *) LPC_I2C1_BASE)\n+#define LPC_I2S0                  ((LPC_I2S_T              *) LPC_I2S0_BASE)\n+#define LPC_I2S1                  ((LPC_I2S_T              *) LPC_I2S1_BASE)\n+#define LPC_C_CAN1                ((LPC_CCAN_T             *) LPC_C_CAN1_BASE)\n+#define LPC_RITIMER               ((LPC_RITIMER_T          *) LPC_RITIMER_BASE)\n+#define LPC_QEI                   ((LPC_QEI_T              *) LPC_QEI_BASE)\n+#define LPC_GIMA                  ((LPC_GIMA_T             *) LPC_GIMA_BASE)\n+#define LPC_DAC                   ((LPC_DAC_T              *) LPC_DAC_BASE)\n+#define LPC_C_CAN0                ((LPC_CCAN_T             *) LPC_C_CAN0_BASE)\n+#define LPC_ADC0                  ((LPC_ADC_T              *) LPC_ADC0_BASE)\n+#define LPC_ADC1                  ((LPC_ADC_T              *) LPC_ADC1_BASE)\n+#define LPC_ADCHS                 ((LPC_HSADC_T            *) LPC_ADCHS_BASE)\n+#define LPC_GPIO_PORT             ((LPC_GPIO_T             *) LPC_GPIO_PORT_BASE)\n+#define LPC_SPI                   ((LPC_SPI_T              *) LPC_SPI_BASE)\n+#define LPC_SGPIO                 ((LPC_SGPIO_T            *) LPC_SGPIO_BASE)\n+#define LPC_EEPROM                ((LPC_EEPROM_T           *) LPC_EEPROM_BASE)\n+#define LPC_FMCA                  ((LPC_FMC_T              *) LPC_FMCA_BASE)\n+#define LPC_FMC                   ((LPC_FMC_T            * *) LPC_FMCA_BASE)\n+#define LPC_FMCB                  ((LPC_FMC_T              *) LPC_FMCB_BASE)\n+#define LPC_ROM_API               ((LPC_ROM_API_T          *) LPC_ROM_API_BASE)\n+\n+/**\n+ * @}\n+ */\n+\n+#include \"scu_18xx_43xx.h\"\n+#include \"clock_18xx_43xx.h\"\n+#include \"rgu_18xx_43xx.h\"\n+#include \"creg_18xx_43xx.h\"\n+#include \"evrt_18xx_43xx.h\"\n+#include \"otp_18xx_43xx.h\"\n+#include \"sdif_18xx_43xx.h\"\n+#include \"adc_18xx_43xx.h\"\n+#include \"hsadc_18xx_43xx.h\"\n+#include \"atimer_18xx_43xx.h\"\n+#include \"aes_18xx_43xx.h\"\n+#include \"ccan_18xx_43xx.h\"\n+#include \"dac_18xx_43xx.h\"\n+#include \"eeprom_18xx_43xx.h\"\n+#include \"emc_18xx_43xx.h\"\n+#include \"enet_18xx_43xx.h\"\n+#include \"fmc_18xx_43xx.h\"\n+#include \"i2c_18xx_43xx.h\"\n+#include \"i2s_18xx_43xx.h\"\n+#include \"gima_18xx_43xx.h\"\n+#include \"gpdma_18xx_43xx.h\"\n+#include \"gpio_18xx_43xx.h\"\n+#include \"pinint_18xx_43xx.h\"\n+#include \"gpiogroup_18xx_43xx.h\"\n+#include \"lcd_18xx_43xx.h\"\n+#include \"mcpwm_18xx_43xx.h\"\n+#include \"pmc_18xx_43xx.h\"\n+#include \"qei_18xx_43xx.h\"\n+#include \"ritimer_18xx_43xx.h\"\n+#include \"rtc_18xx_43xx.h\"\n+#include \"sct_18xx_43xx.h\"\n+#include \"sct_pwm_18xx_43xx.h\"\n+#include \"sdmmc_18xx_43xx.h\"\n+#include \"sdio_18xx_43xx.h\"\n+#include \"sgpio_18xx_43xx.h\"\n+#include \"spi_18xx_43xx.h\"\n+#include \"ssp_18xx_43xx.h\"\n+#include \"timer_18xx_43xx.h\"\n+#include \"uart_18xx_43xx.h\"\n+#include \"usbhs_18xx_43xx.h\"\n+#include \"wwdt_18xx_43xx.h\"\n+#include \"romapi_18xx_43xx.h\"\n+#include \"i2cm_18xx_43xx.h\"\n+\n+#if defined(CORE_M4)\n+#include \"fpu_init.h\"\n+#endif\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_LPC43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/clock_18xx_43xx.h ./lpc_chip_43xx/inc/clock_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/clock_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/clock_18xx_43xx.h\t2017-02-27 20:42:08.428009491 -0300\n@@ -0,0 +1,394 @@\n+/*\n+ * @brief LPC18xx/43xx clock driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CLOCK_18XX_43XX_H_\n+#define __CLOCK_18XX_43XX_H_\n+\n+#include \"cguccu_18xx_43xx.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CLOCK_18XX_43XX CHIP: LPC18xx/43xx Clock Driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/** @defgroup CLOCK_18XX_43XX_OPTIONS CHIP: LPC18xx/43xx Clock Driver driver options\n+ * @ingroup CLOCK_18XX_43XX CHIP_18XX_43XX_DRIVER_OPTIONS\n+ * The clock driver has options that configure it's operation at build-time.<br>\n+ *\n+ * <b>MAX_CLOCK_FREQ</b><br>\n+ * This macro defines the maximum frequency supported by the Chip [204MHz for LPC43xx\n+ * 180MHz for LPC18xx]. API Chip_SetupXtalClocking() and Chip_SetupIrcClocking() will\n+ * use this macro to set the CPU Core frequency to the maximum supported.<br>\n+ * To set a Core frequency other than the maximum frequency Chip_SetupCoreClock() API\n+ * must be used. <b>Using this macro to set the Core freqency is not recommended.</b>\n+ * @{\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+/* Internal oscillator frequency */\n+#define CGU_IRC_FREQ (12000000)\n+\n+#ifndef MAX_CLOCK_FREQ\n+#if defined(CHIP_LPC43XX)\n+#define MAX_CLOCK_FREQ (204000000)\n+#else\n+#define MAX_CLOCK_FREQ (180000000)\n+#endif\n+#endif\n+\n+#define PLL_MIN_CCO_FREQ 156000000  /**< Min CCO frequency of main PLL */\n+#define PLL_MAX_CCO_FREQ 320000000  /**< Max CCO frequency of main PLL */\n+\n+/**\n+ * @brief  PLL Parameter strucutre\n+ */\n+typedef struct {\n+   int ctrl;       /**< Control register value */\n+   CHIP_CGU_CLKIN_T srcin; /**< Input clock Source see #CHIP_CGU_CLKIN_T */\n+   int nsel;       /**< Pre-Div value */\n+   int psel;       /**< Post-Div Value */\n+   int msel;       /**< M-Div value */\n+   uint32_t fin;   /**< Input frequency */\n+   uint32_t fout;  /**< Output frequency */\n+   uint32_t fcco;  /**< CCO frequency */\n+} PLL_PARAM_T;\n+\n+/**\n+ * @brief  Enables the crystal oscillator\n+ * @return Nothing\n+ */\n+void Chip_Clock_EnableCrystal(void);\n+\n+/**\n+ * @brief  Disables the crystal oscillator\n+ * @return Nothing\n+ */\n+void Chip_Clock_DisableCrystal(void);\n+\n+/**\n+ * @brief   Configures the main PLL\n+ * @param   Input      : Which clock input to use as the PLL input\n+ * @param   MinHz      : Minimum allowable PLL output frequency\n+ * @param   DesiredHz  : Desired PLL output frequency\n+ * @param   MaxHz      : Maximum allowable PLL output frequency\n+ * @return Frequency of the PLL in Hz\n+ * Returns the configured PLL frequency or zero if the PLL can not be configured between MinHz\n+ * and MaxHz. This will not wait for PLL lock. Call Chip_Clock_MainPLLLocked() to determine if\n+ * the PLL is locked.\n+ */\n+uint32_t Chip_Clock_SetupMainPLLHz(CHIP_CGU_CLKIN_T Input, uint32_t MinHz, uint32_t DesiredHz, uint32_t MaxHz);\n+\n+/**\n+ * @brief  Directly set the PLL multipler\n+ * @param   Input  : Which clock input to use as the PLL input\n+ * @param  mult    : How many times to multiply the input clock\n+ * @return Frequency of the PLL in Hz\n+ */\n+uint32_t Chip_Clock_SetupMainPLLMult(CHIP_CGU_CLKIN_T Input, uint32_t mult);\n+\n+/**\n+ * @brief   Returns the frequency of the main PLL\n+ * @return Frequency of the PLL in Hz\n+ * Returns zero if the main PLL is not running.\n+ */\n+uint32_t Chip_Clock_GetMainPLLHz(void);\n+\n+/**\n+ * @brief  Disables the main PLL\n+ * @return none\n+ * Make sure the main PLL is not needed to clock the part before disabling it.\n+ * Saves power if the main PLL is not needed.\n+ */\n+__STATIC_INLINE void Chip_Clock_DisableMainPLL(void)\n+{\n+   /* power down main PLL */\n+   LPC_CGU->PLL1_CTRL |= 1;\n+}\n+\n+/**\n+ * @brief  Enbles the main PLL\n+ * @return none\n+ * Make sure the main PLL is enabled.\n+ */\n+__STATIC_INLINE void Chip_Clock_EnableMainPLL(void)\n+{\n+   /* power up main PLL */\n+   LPC_CGU->PLL1_CTRL &= ~1;\n+}\n+/**\n+ * @brief  Sets-up the main PLL\n+ * @param  ppll    : Pointer to pll param structure #PLL_PARAM_T\n+ * @return none\n+ * Make sure the main PLL is enabled.\n+ */\n+__STATIC_INLINE void Chip_Clock_SetupMainPLL(const PLL_PARAM_T *ppll)\n+{\n+   /* power up main PLL */\n+   LPC_CGU->PLL1_CTRL = ppll->ctrl | ((uint32_t) ppll->srcin << 24) | (ppll->msel << 16) | (ppll->nsel << 12) | (ppll->psel << 8);\n+}\n+\n+/**\n+ * @brief  Sets up a CGU clock divider and it's input clock\n+ * @param  Divider : CHIP_CGU_IDIV_T value indicating which divider to configure\n+ * @param  Input   : CHIP_CGU_CLKIN_T value indicating which clock source to use or CLOCKINPUT_PD to power down divider\n+ * @param  Divisor : value to divide Input clock by\n+ * @return Nothing\n+ * Maximum divider on A = 4, B/C/D = 16, E = 256.\n+ * See the user manual for allowable combinations for input clock.\n+ */\n+void Chip_Clock_SetDivider(CHIP_CGU_IDIV_T Divider, CHIP_CGU_CLKIN_T Input, uint32_t Divisor);\n+\n+/**\n+ * @brief  Gets a CGU clock divider source\n+ * @param  Divider : CHIP_CGU_IDIV_T value indicating which divider to get the source of\n+ * @return CHIP_CGU_CLKIN_T indicating which clock source is set or CLOCKINPUT_PD\n+ */\n+CHIP_CGU_CLKIN_T Chip_Clock_GetDividerSource(CHIP_CGU_IDIV_T Divider);\n+\n+/**\n+ * @brief  Gets a CGU clock divider divisor\n+ * @param  Divider : CHIP_CGU_IDIV_T value indicating which divider to get the source of\n+ * @return the divider value for the divider\n+ */\n+uint32_t Chip_Clock_GetDividerDivisor(CHIP_CGU_IDIV_T Divider);\n+\n+/**\n+ * @brief  Returns the frequency of the specified input clock source\n+ * @param  input   : Which clock input to return the frequency of\n+ * @return Frequency of input source in Hz\n+ * This function returns an ideal frequency and not the actual frequency. Returns\n+ * zero if the clock source is disabled.\n+ */\n+uint32_t Chip_Clock_GetClockInputHz(CHIP_CGU_CLKIN_T input);\n+\n+/**\n+ * @brief  Returns the frequency of the specified base clock source\n+ * @param  clock   : which base clock to return the frequency of.\n+ * @return Frequency of base source in Hz\n+ * This function returns an ideal frequency and not the actual frequency. Returns\n+ * zero if the clock source is disabled.\n+ */\n+uint32_t Chip_Clock_GetBaseClocktHz(CHIP_CGU_BASE_CLK_T clock);\n+\n+/**\n+ * @brief  Sets a CGU Base Clock clock source\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to set\n+ * @param  Input       : CHIP_CGU_CLKIN_T value indicating which clock source to use or CLOCKINPUT_PD to power down base clock\n+ * @param  autoblocken : Enables autoblocking during frequency change if true\n+ * @param  powerdn     : The clock base is setup, but powered down if true\n+ * @return Nothing\n+ */\n+void Chip_Clock_SetBaseClock(CHIP_CGU_BASE_CLK_T BaseClock, CHIP_CGU_CLKIN_T Input, bool autoblocken, bool powerdn);\n+\n+/**\n+ * @brief  Get CGU Base Clock clock source information\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to get\n+ * @param  Input       : Pointer to CHIP_CGU_CLKIN_T value of the base clock\n+ * @param  autoblocken : Pointer to autoblocking value of the base clock\n+ * @param  powerdn     : Pointer to power down flag\n+ * @return Nothing\n+ */\n+void Chip_Clock_GetBaseClockOpts(CHIP_CGU_BASE_CLK_T BaseClock, CHIP_CGU_CLKIN_T *Input, bool *autoblocken,\n+                                bool *powerdn);\n+\n+/**\n+ * @brief  Gets a CGU Base Clock clock source\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to get inpuot clock for\n+ * @return CHIP_CGU_CLKIN_T indicating which clock source is set or CLOCKINPUT_PD\n+ */\n+CHIP_CGU_CLKIN_T Chip_Clock_GetBaseClock(CHIP_CGU_BASE_CLK_T BaseClock);\n+\n+/**\n+ * @brief  Enables a base clock source\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to enable\n+ * @return Nothing\n+ */\n+void Chip_Clock_EnableBaseClock(CHIP_CGU_BASE_CLK_T BaseClock);\n+\n+/**\n+ * @brief  Disables a base clock source\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to disable\n+ * @return Nothing\n+ */\n+void Chip_Clock_DisableBaseClock(CHIP_CGU_BASE_CLK_T BaseClock);\n+\n+/**\n+ * @brief  Returns base clock enable state\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to check\n+ * @return true if the base clock is enabled, false if disabled\n+ */\n+bool Chip_Clock_IsBaseClockEnabled(CHIP_CGU_BASE_CLK_T BaseClock);\n+\n+/**\n+ * @brief  Enables a peripheral clock and sets clock states\n+ * @param  clk         : CHIP_CCU_CLK_T value indicating which clock to enable\n+ * @param  autoen      : true to enable autoblocking on a clock rate change, false to disable\n+ * @param  wakeupen    : true to enable wakeup mechanism, false to disable\n+ * @param  div         : Divider for the clock, must be 1 for most clocks, 2 supported on others\n+ * @return Nothing\n+ */\n+void Chip_Clock_EnableOpts(CHIP_CCU_CLK_T clk, bool autoen, bool wakeupen, int div);\n+\n+/**\n+ * @brief  Enables a peripheral clock\n+ * @param  clk : CHIP_CCU_CLK_T value indicating which clock to enable\n+ * @return Nothing\n+ */\n+void Chip_Clock_Enable(CHIP_CCU_CLK_T clk);\n+\n+/**\n+ * @brief  Enables RTCclock\n+ * @return Nothing\n+ */\n+void Chip_Clock_RTCEnable(void);\n+\n+/**\n+ * @brief  Disables a peripheral clock\n+ * @param  clk : CHIP_CCU_CLK_T value indicating which clock to disable\n+ * @return Nothing\n+ */\n+void Chip_Clock_Disable(CHIP_CCU_CLK_T clk);\n+\n+/**\n+ * @brief  Returns a peripheral clock rate\n+ * @param  clk : CHIP_CCU_CLK_T value indicating which clock to get rate for\n+ * @return 0 if the clock is disabled, or the rate of the clock\n+ */\n+uint32_t Chip_Clock_GetRate(CHIP_CCU_CLK_T clk);\n+\n+/**\n+ * @brief  Returns EMC clock rate\n+ * @return 0 if the clock is disabled, or the rate of the clock\n+ */\n+uint32_t Chip_Clock_GetEMCRate(void);\n+\n+/**\n+ * @brief  Start the power down sequence by disabling the branch output\n+ *          clocks with wake up mechanism (Only the clocks which\n+ *          wake up mechanism bit enabled will be disabled)\n+ * @return Nothing\n+ */\n+void Chip_Clock_StartPowerDown(void);\n+\n+/**\n+ * @brief  Clear the power down mode bit & proceed normal operation of branch output\n+ *          clocks (Only the clocks which wake up mechanism bit enabled will be\n+ *          enabled after the wake up event)\n+ * @return Nothing\n+ */\n+void Chip_Clock_ClearPowerDown(void);\n+\n+/**\n+ * Structure for setting up the USB or audio PLL\n+ */\n+typedef struct {\n+   uint32_t ctrl;      /* Default control word for PLL */\n+   uint32_t mdiv;      /* Default M-divider value for PLL */\n+   uint32_t ndiv;      /* Default NP-divider value for PLL */\n+   uint32_t fract;     /* Default fractional value for audio PLL only */\n+   uint32_t freq;      /* Output frequency of the pll */\n+} CGU_USBAUDIO_PLL_SETUP_T;\n+\n+/**\n+ * @brief  Sets up the audio or USB PLL\n+ * @param  Input       : Input clock\n+ * @param  pllnum      : PLL identifier\n+ * @param  pPLLSetup   : Pointer to PLL setup structure\n+ * @return Nothing\n+ * Sets up the PLL with the passed structure values.\n+ */\n+void Chip_Clock_SetupPLL(CHIP_CGU_CLKIN_T Input, CHIP_CGU_USB_AUDIO_PLL_T pllnum,\n+                        const CGU_USBAUDIO_PLL_SETUP_T *pPLLSetup);\n+\n+/**\n+ * @brief  Enables the audio or USB PLL\n+ * @param  pllnum  : PLL identifier\n+ * @return Nothing\n+ */\n+void Chip_Clock_EnablePLL(CHIP_CGU_USB_AUDIO_PLL_T pllnum);\n+\n+/**\n+ * @brief  Disables the audio or USB PLL\n+ * @param  pllnum  : PLL identifier\n+ * @return Nothing\n+ */\n+void Chip_Clock_DisablePLL(CHIP_CGU_USB_AUDIO_PLL_T pllnum);\n+\n+#define CGU_PLL_LOCKED (1 << 0)    /* PLL locked status */\n+#define CGU_PLL_FR     (1 << 1)    /* PLL free running indicator status */\n+\n+/**\n+ * @brief  Returns the PLL status\n+ * @param  pllnum  : PLL identifier\n+ * @return An OR'ed value of CGU_PLL_LOCKED or CGU_PLL_FR\n+ */\n+uint32_t Chip_Clock_GetPLLStatus(CHIP_CGU_USB_AUDIO_PLL_T pllnum);\n+\n+/**\n+ * @brief  Calculate main PLL Pre, Post and M div values\n+ * @param  freq    : Expected output frequency\n+ * @param  ppll    : Pointer to #PLL_PARAM_T structure\n+ * @return 0 on success; < 0 on failure\n+ * @note\n+ * ppll->srcin[IN] should have the appropriate Input clock source selected<br>\n+ * ppll->fout[OUT] will have the actual output frequency<br>\n+ * ppll->fcco[OUT] will have the frequency of CCO\n+ */\n+int Chip_Clock_CalcMainPLLValue(uint32_t freq, PLL_PARAM_T *ppll);\n+\n+\n+/**\n+ * @brief  Wait for Main PLL to be locked\n+ * @return 1 - PLL is LOCKED; 0 - PLL is not locked\n+ * @note   The main PLL should be locked prior to using it as a clock input for a base clock.\n+ */\n+__STATIC_INLINE int Chip_Clock_MainPLLLocked(void)\n+{\n+   /* Return true if locked */\n+   return (LPC_CGU->PLL1_STAT & 1) != 0;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CLOCK_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/cmsis_43xx.h ./lpc_chip_43xx/inc/cmsis_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/cmsis_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/cmsis_43xx.h\t2017-02-27 20:42:08.428009491 -0300\n@@ -0,0 +1,167 @@\n+/*\n+ * @brief Basic CMSIS include file for LPC43XX\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CMSIS_43XX_M0_H_\n+#define __CMSIS_43XX_M0_H_\n+\n+#ifndef __CMSIS_H_\n+#error \"cmsis_43xx.h should not be included directly use cmsis.h instead\"\n+#endif\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CMSIS_43XX CHIP: LPC43xx CMSIS include file\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#if defined(__ARMCC_VERSION)\n+  #pragma diag_suppress 2525\n+  #pragma push\n+  #pragma anon_unions\n+#elif defined(__CWCC__)\n+  #pragma push\n+  #pragma cpp_extensions on\n+#elif defined(__GNUC__)\n+/* anonymous unions are enabled by default */\n+#elif defined(__IAR_SYSTEMS_ICC__)\n+  #pragma language=extended\n+#else\n+  #error Not supported compiler type\n+#endif\n+\n+/** @defgroup CMSIS_43XX_COMMON CHIP: LPC43xx Cortex CMSIS definitions\n+ * @{\n+ */\n+\n+#define __CM4_REV              0x0001      /*!< Cortex-M4 Core Revision               */\n+#define __MPU_PRESENT             1            /*!< MPU present or not                    */\n+#define __NVIC_PRIO_BITS          3            /*!< Number of Bits used for Priority Levels */\n+#define __Vendor_SysTickConfig    0            /*!< Set to 1 if different SysTick Config is used */\n+#define __FPU_PRESENT             1            /*!< FPU present or not                    */\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup CMSIS_43XX_IRQ CHIP: LPC43xx peripheral interrupt numbers\n+ * @{\n+ */\n+\n+typedef enum {\n+   /* -------------------------  Cortex-M4 Processor Exceptions Numbers  ----------------------------- */\n+   Reset_IRQn                        = -15,/*!<   1  Reset Vector, invoked on Power up and warm reset */\n+   NonMaskableInt_IRQn               = -14,/*!<   2  Non maskable Interrupt, cannot be stopped or preempted */\n+   HardFault_IRQn                    = -13,/*!<   3  Hard Fault, all classes of Fault */\n+   MemoryManagement_IRQn             = -12,/*!<   4  Memory Management, MPU mismatch, including Access Violation and No Match */\n+   BusFault_IRQn                     = -11,/*!<   5  Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */\n+   UsageFault_IRQn                   = -10,/*!<   6  Usage Fault, i.e. Undef Instruction, Illegal State Transition */\n+   SVCall_IRQn                       =  -5,/*!<  11  System Service Call via SVC instruction */\n+   DebugMonitor_IRQn                 =  -4,/*!<  12  Debug Monitor                    */\n+   PendSV_IRQn                       =  -2,/*!<  14  Pendable request for system service */\n+   SysTick_IRQn                      =  -1,/*!<  15  System Tick Timer                */\n+\n+   /* ---------------------------  LPC18xx/43xx Specific Interrupt Numbers  ------------------------------- */\n+   DAC_IRQn                          =   0,/*!<   0  DAC                              */\n+   M0APP_IRQn                        =   1,/*!<   1  M0APP Core interrupt             */\n+   DMA_IRQn                          =   2,/*!<   2  DMA                              */\n+   RESERVED1_IRQn                    =   3,/*!<   3  EZH/EDM                          */\n+   RESERVED2_IRQn                    =   4,\n+   ETHERNET_IRQn                     =   5,/*!<   5  ETHERNET                         */\n+   SDIO_IRQn                         =   6,/*!<   6  SDIO                             */\n+   LCD_IRQn                          =   7,/*!<   7  LCD                              */\n+   USB0_IRQn                         =   8,/*!<   8  USB0                             */\n+   USB1_IRQn                         =   9,/*!<   9  USB1                             */\n+   SCT_IRQn                          =  10,/*!<  10  SCT                              */\n+   RITIMER_IRQn                      =  11,/*!<  11  RITIMER                          */\n+   TIMER0_IRQn                       =  12,/*!<  12  TIMER0                           */\n+   TIMER1_IRQn                       =  13,/*!<  13  TIMER1                           */\n+   TIMER2_IRQn                       =  14,/*!<  14  TIMER2                           */\n+   TIMER3_IRQn                       =  15,/*!<  15  TIMER3                           */\n+   MCPWM_IRQn                        =  16,/*!<  16  MCPWM                            */\n+   ADC0_IRQn                         =  17,/*!<  17  ADC0                             */\n+   I2C0_IRQn                         =  18,/*!<  18  I2C0                             */\n+   I2C1_IRQn                         =  19,/*!<  19  I2C1                             */\n+   SPI_INT_IRQn                      =  20,/*!<  20  SPI_INT                          */\n+   ADC1_IRQn                         =  21,/*!<  21  ADC1                             */\n+   SSP0_IRQn                         =  22,/*!<  22  SSP0                             */\n+   SSP1_IRQn                         =  23,/*!<  23  SSP1                             */\n+   USART0_IRQn                       =  24,/*!<  24  USART0                           */\n+   UART1_IRQn                        =  25,/*!<  25  UART1                            */\n+   USART2_IRQn                       =  26,/*!<  26  USART2                           */\n+   USART3_IRQn                       =  27,/*!<  27  USART3                           */\n+   I2S0_IRQn                         =  28,/*!<  28  I2S0                             */\n+   I2S1_IRQn                         =  29,/*!<  29  I2S1                             */\n+   RESERVED4_IRQn                    =  30,\n+   SGPIO_INT_IRQn                    =  31,/*!<  31  SGPIO_IINT                       */\n+   PIN_INT0_IRQn                     =  32,/*!<  32  PIN_INT0                         */\n+   PIN_INT1_IRQn                     =  33,/*!<  33  PIN_INT1                         */\n+   PIN_INT2_IRQn                     =  34,/*!<  34  PIN_INT2                         */\n+   PIN_INT3_IRQn                     =  35,/*!<  35  PIN_INT3                         */\n+   PIN_INT4_IRQn                     =  36,/*!<  36  PIN_INT4                         */\n+   PIN_INT5_IRQn                     =  37,/*!<  37  PIN_INT5                         */\n+   PIN_INT6_IRQn                     =  38,/*!<  38  PIN_INT6                         */\n+   PIN_INT7_IRQn                     =  39,/*!<  39  PIN_INT7                         */\n+   GINT0_IRQn                        =  40,/*!<  40  GINT0                            */\n+   GINT1_IRQn                        =  41,/*!<  41  GINT1                            */\n+   EVENTROUTER_IRQn                  =  42,/*!<  42  EVENTROUTER                      */\n+   C_CAN1_IRQn                       =  43,/*!<  43  C_CAN1                           */\n+   RESERVED6_IRQn                    =  44,\n+   ADCHS_IRQn                        =  45,/*!<  45  ADCHS interrupt                  */\n+   ATIMER_IRQn                       =  46,/*!<  46  ATIMER                           */\n+   RTC_IRQn                          =  47,/*!<  47  RTC                              */\n+   RESERVED8_IRQn                    =  48,\n+   WWDT_IRQn                         =  49,/*!<  49  WWDT                             */\n+   M0SUB_IRQn                        =  50,/*!<  50  M0SUB core interrupt             */\n+   C_CAN0_IRQn                       =  51,/*!<  51  C_CAN0                           */\n+   QEI_IRQn                          =  52,/*!<  52  QEI                              */\n+} LPC43XX_IRQn_Type;\n+\n+/**\n+ * @}\n+ */\n+\n+typedef LPC43XX_IRQn_Type IRQn_Type;\n+\n+/* Cortex-M4 processor and core peripherals */\n+#include \"core_cm4.h\"\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* ifndef __CMSIS_43XX_M0_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/cmsis.h ./lpc_chip_43xx/inc/cmsis.h\n--- a_8FkA5l/lpc_chip_43xx/inc/cmsis.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/cmsis.h\t2017-02-27 20:42:08.428009491 -0300\n@@ -0,0 +1,63 @@\n+/*\n+ * @brief LPC11xx selective CMSIS inclusion file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CMSIS_H_\n+#define __CMSIS_H_\n+\n+#include \"lpc_types.h\"\n+#include \"sys_config.h\"\n+\n+/* Select correct CMSIS include file based on CHIP_* definition */\n+#if defined(CHIP_LPC43XX)\n+\n+#ifdef CORE_M4\n+#include \"cmsis_43xx.h\"\n+\n+#elif defined(CORE_M0)\n+#if defined(LPC43XX_CORE_M0APP)\n+#include \"cmsis_43xx_m0app.h\"\n+\n+#elif (defined(LPC43XX_CORE_M0SUB))\n+#include \"cmsis_43xx_m0sub.h\"\n+\n+#else\n+#error \"LPC43XX_CORE_M0APP or LPC43XX_CORE_M0SUB must be defined\"\n+#endif\n+\n+#else\n+#error \"CORE_M0 or CORE_M4 must be defined for CHIP_LPC43XX\"\n+#endif\n+\n+#elif defined(CHIP_LPC18XX)\n+#include \"cmsis_18xx.h\"\n+\n+#else\n+#error \"No CHIP_* definition is defined\"\n+#endif\n+\n+#endif /* __CMSIS_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/core_cm4.h ./lpc_chip_43xx/inc/core_cm4.h\n--- a_8FkA5l/lpc_chip_43xx/inc/core_cm4.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/core_cm4.h\t2017-02-27 20:42:08.432009491 -0300\n@@ -0,0 +1,1772 @@\n+/**************************************************************************//**\n+ * @file     core_cm4.h\n+ * @brief    CMSIS Cortex-M4 Core Peripheral Access Layer Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#if defined ( __ICCARM__ )\n+ #pragma system_include  /* treat file as system include file for MISRA check */\n+#endif\n+\n+#ifdef __cplusplus\n+ extern \"C\" {\n+#endif\n+\n+#ifndef __CORE_CM4_H_GENERIC\n+#define __CORE_CM4_H_GENERIC\n+\n+/** \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n+  CMSIS violates the following MISRA-C:2004 rules:\n+\n+   \\li Required Rule 8.5, object/function definition in header file.<br>\n+     Function definitions in header files are used to allow 'inlining'.\n+\n+   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n+     Unions are used for effective representation of core registers.\n+\n+   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n+     Function-like macros are used to allow more efficient code.\n+ */\n+\n+\n+/*******************************************************************************\n+ *                 CMSIS definitions\n+ ******************************************************************************/\n+/** \\ingroup Cortex_M4\n+  @{\n+ */\n+\n+/*  CMSIS CM4 definitions */\n+#define __CM4_CMSIS_VERSION_MAIN  (0x03)                                   /*!< [31:16] CMSIS HAL main version   */\n+#define __CM4_CMSIS_VERSION_SUB   (0x20)                                   /*!< [15:0]  CMSIS HAL sub version    */\n+#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16) | \\\n+                                    __CM4_CMSIS_VERSION_SUB          )     /*!< CMSIS HAL version number         */\n+\n+#define __CORTEX_M                (0x04)                                   /*!< Cortex-M Core                    */\n+\n+\n+#if   defined ( __CC_ARM )\n+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */\n+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */\n+  #define __STATIC_INLINE  static __inline\n+\n+#elif defined ( __ICCARM__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler          */\n+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __TMS470__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler       */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __GNUC__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */\n+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __TASKING__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */\n+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */\n+  #define __STATIC_INLINE  static inline\n+\n+#endif\n+\n+/** __FPU_USED indicates whether an FPU is used or not. For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n+*/\n+#if defined ( __CC_ARM )\n+  #if defined __TARGET_FPU_VFP\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __ICCARM__ )\n+  #if defined __ARMVFP__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __TMS470__ )\n+  #if defined __TI_VFP_SUPPORT__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __GNUC__ )\n+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __TASKING__ )\n+  #if defined __FPU_VFP__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+#endif\n+\n+#include <stdint.h>                      /* standard types definitions                      */\n+#include <core_cmInstr.h>                /* Core Instruction Access                         */\n+#include <core_cmFunc.h>                 /* Core Function Access                            */\n+#include <core_cm4_simd.h>               /* Compiler specific SIMD Intrinsics               */\n+\n+#endif /* __CORE_CM4_H_GENERIC */\n+\n+#ifndef __CMSIS_GENERIC\n+\n+#ifndef __CORE_CM4_H_DEPENDANT\n+#define __CORE_CM4_H_DEPENDANT\n+\n+/* check device defines and use defaults */\n+#if defined __CHECK_DEVICE_DEFINES\n+  #ifndef __CM4_REV\n+    #define __CM4_REV               0x0000\n+    #warning \"__CM4_REV not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __FPU_PRESENT\n+    #define __FPU_PRESENT             0\n+    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __MPU_PRESENT\n+    #define __MPU_PRESENT             0\n+    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __NVIC_PRIO_BITS\n+    #define __NVIC_PRIO_BITS          4\n+    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __Vendor_SysTickConfig\n+    #define __Vendor_SysTickConfig    0\n+    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n+  #endif\n+#endif\n+\n+/* IO definitions (access restrictions to peripheral registers) */\n+/**\n+    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n+\n+    <strong>IO Type Qualifiers</strong> are used\n+    \\li to specify the access to peripheral variables.\n+    \\li for automatic generation of peripheral register debug information.\n+*/\n+#ifdef __cplusplus\n+  #define   __I     volatile             /*!< Defines 'read only' permissions                 */\n+#else\n+  #define   __I     volatile const       /*!< Defines 'read only' permissions                 */\n+#endif\n+#define     __O     volatile             /*!< Defines 'write only' permissions                */\n+#define     __IO    volatile             /*!< Defines 'read / write' permissions              */\n+\n+/*@} end of group Cortex_M4 */\n+\n+\n+\n+/*******************************************************************************\n+ *                 Register Abstraction\n+  Core Register contain:\n+  - Core Register\n+  - Core NVIC Register\n+  - Core SCB Register\n+  - Core SysTick Register\n+  - Core Debug Register\n+  - Core MPU Register\n+  - Core FPU Register\n+ ******************************************************************************/\n+/** \\defgroup CMSIS_core_register Defines and Type Definitions\n+    \\brief Type definitions and defines for Cortex-M processor based devices.\n+*/\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_CORE  Status and Control Registers\n+    \\brief  Core Register type definitions.\n+  @{\n+ */\n+\n+/** \\brief  Union type to access the Application Program Status Register (APSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+#if (__CORTEX_M != 0x04)\n+    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved                           */\n+#else\n+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved                           */\n+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\n+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved                           */\n+#endif\n+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\n+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\n+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\n+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\n+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} APSR_Type;\n+\n+\n+/** \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\n+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved                           */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} IPSR_Type;\n+\n+\n+/** \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\n+#if (__CORTEX_M != 0x04)\n+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved                           */\n+#else\n+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved                           */\n+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\n+    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved                           */\n+#endif\n+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0)          */\n+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0)          */\n+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\n+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\n+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\n+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\n+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} xPSR_Type;\n+\n+\n+/** \\brief  Union type to access the Control Registers (CONTROL).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used                   */\n+    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag           */\n+    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved                           */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} CONTROL_Type;\n+\n+/*@} end of group CMSIS_CORE */\n+\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n+    \\brief      Type definitions for the NVIC Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t ISER[8];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */\n+       uint32_t RESERVED0[24];\n+  __IO uint32_t ICER[8];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register         */\n+       uint32_t RSERVED1[24];\n+  __IO uint32_t ISPR[8];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register          */\n+       uint32_t RESERVED2[24];\n+  __IO uint32_t ICPR[8];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register        */\n+       uint32_t RESERVED3[24];\n+  __IO uint32_t IABR[8];                 /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register           */\n+       uint32_t RESERVED4[56];\n+  __IO uint8_t  IP[240];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n+       uint32_t RESERVED5[644];\n+  __O  uint32_t STIR;                    /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register     */\n+}  NVIC_Type;\n+\n+/* Software Triggered Interrupt Register Definitions */\n+#define NVIC_STIR_INTID_Pos                 0                                          /*!< STIR: INTLINESNUM Position */\n+#define NVIC_STIR_INTID_Msk                (0x1FFUL << NVIC_STIR_INTID_Pos)            /*!< STIR: INTLINESNUM Mask */\n+\n+/*@} end of group CMSIS_NVIC */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SCB     System Control Block (SCB)\n+    \\brief      Type definitions for the System Control Block Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Control Block (SCB).\n+ */\n+typedef struct\n+{\n+  __I  uint32_t CPUID;                   /*!< Offset: 0x000 (R/ )  CPUID Base Register                                   */\n+  __IO uint32_t ICSR;                    /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register                  */\n+  __IO uint32_t VTOR;                    /*!< Offset: 0x008 (R/W)  Vector Table Offset Register                          */\n+  __IO uint32_t AIRCR;                   /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register      */\n+  __IO uint32_t SCR;                     /*!< Offset: 0x010 (R/W)  System Control Register                               */\n+  __IO uint32_t CCR;                     /*!< Offset: 0x014 (R/W)  Configuration Control Register                        */\n+  __IO uint8_t  SHP[12];                 /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n+  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State Register             */\n+  __IO uint32_t CFSR;                    /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register                    */\n+  __IO uint32_t HFSR;                    /*!< Offset: 0x02C (R/W)  HardFault Status Register                             */\n+  __IO uint32_t DFSR;                    /*!< Offset: 0x030 (R/W)  Debug Fault Status Register                           */\n+  __IO uint32_t MMFAR;                   /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register                      */\n+  __IO uint32_t BFAR;                    /*!< Offset: 0x038 (R/W)  BusFault Address Register                             */\n+  __IO uint32_t AFSR;                    /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register                       */\n+  __I  uint32_t PFR[2];                  /*!< Offset: 0x040 (R/ )  Processor Feature Register                            */\n+  __I  uint32_t DFR;                     /*!< Offset: 0x048 (R/ )  Debug Feature Register                                */\n+  __I  uint32_t ADR;                     /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register                            */\n+  __I  uint32_t MMFR[4];                 /*!< Offset: 0x050 (R/ )  Memory Model Feature Register                         */\n+  __I  uint32_t ISAR[5];                 /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register                   */\n+       uint32_t RESERVED0[5];\n+  __IO uint32_t CPACR;                   /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register                   */\n+} SCB_Type;\n+\n+/* SCB CPUID Register Definitions */\n+#define SCB_CPUID_IMPLEMENTER_Pos          24                                             /*!< SCB CPUID: IMPLEMENTER Position */\n+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n+\n+#define SCB_CPUID_VARIANT_Pos              20                                             /*!< SCB CPUID: VARIANT Position */\n+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n+\n+#define SCB_CPUID_ARCHITECTURE_Pos         16                                             /*!< SCB CPUID: ARCHITECTURE Position */\n+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n+\n+#define SCB_CPUID_PARTNO_Pos                4                                             /*!< SCB CPUID: PARTNO Position */\n+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n+\n+#define SCB_CPUID_REVISION_Pos              0                                             /*!< SCB CPUID: REVISION Position */\n+#define SCB_CPUID_REVISION_Msk             (0xFUL << SCB_CPUID_REVISION_Pos)              /*!< SCB CPUID: REVISION Mask */\n+\n+/* SCB Interrupt Control State Register Definitions */\n+#define SCB_ICSR_NMIPENDSET_Pos            31                                             /*!< SCB ICSR: NMIPENDSET Position */\n+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n+\n+#define SCB_ICSR_PENDSVSET_Pos             28                                             /*!< SCB ICSR: PENDSVSET Position */\n+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n+\n+#define SCB_ICSR_PENDSVCLR_Pos             27                                             /*!< SCB ICSR: PENDSVCLR Position */\n+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n+\n+#define SCB_ICSR_PENDSTSET_Pos             26                                             /*!< SCB ICSR: PENDSTSET Position */\n+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n+\n+#define SCB_ICSR_PENDSTCLR_Pos             25                                             /*!< SCB ICSR: PENDSTCLR Position */\n+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n+\n+#define SCB_ICSR_ISRPREEMPT_Pos            23                                             /*!< SCB ICSR: ISRPREEMPT Position */\n+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n+\n+#define SCB_ICSR_ISRPENDING_Pos            22                                             /*!< SCB ICSR: ISRPENDING Position */\n+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n+\n+#define SCB_ICSR_VECTPENDING_Pos           12                                             /*!< SCB ICSR: VECTPENDING Position */\n+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n+\n+#define SCB_ICSR_RETTOBASE_Pos             11                                             /*!< SCB ICSR: RETTOBASE Position */\n+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n+\n+#define SCB_ICSR_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */\n+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE Mask */\n+\n+/* SCB Vector Table Offset Register Definitions */\n+#define SCB_VTOR_TBLOFF_Pos                 7                                             /*!< SCB VTOR: TBLOFF Position */\n+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n+\n+/* SCB Application Interrupt and Reset Control Register Definitions */\n+#define SCB_AIRCR_VECTKEY_Pos              16                                             /*!< SCB AIRCR: VECTKEY Position */\n+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n+\n+#define SCB_AIRCR_VECTKEYSTAT_Pos          16                                             /*!< SCB AIRCR: VECTKEYSTAT Position */\n+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n+\n+#define SCB_AIRCR_ENDIANESS_Pos            15                                             /*!< SCB AIRCR: ENDIANESS Position */\n+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n+\n+#define SCB_AIRCR_PRIGROUP_Pos              8                                             /*!< SCB AIRCR: PRIGROUP Position */\n+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n+\n+#define SCB_AIRCR_SYSRESETREQ_Pos           2                                             /*!< SCB AIRCR: SYSRESETREQ Position */\n+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n+\n+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1                                             /*!< SCB AIRCR: VECTCLRACTIVE Position */\n+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n+\n+#define SCB_AIRCR_VECTRESET_Pos             0                                             /*!< SCB AIRCR: VECTRESET Position */\n+#define SCB_AIRCR_VECTRESET_Msk            (1UL << SCB_AIRCR_VECTRESET_Pos)               /*!< SCB AIRCR: VECTRESET Mask */\n+\n+/* SCB System Control Register Definitions */\n+#define SCB_SCR_SEVONPEND_Pos               4                                             /*!< SCB SCR: SEVONPEND Position */\n+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n+\n+#define SCB_SCR_SLEEPDEEP_Pos               2                                             /*!< SCB SCR: SLEEPDEEP Position */\n+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n+\n+#define SCB_SCR_SLEEPONEXIT_Pos             1                                             /*!< SCB SCR: SLEEPONEXIT Position */\n+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n+\n+/* SCB Configuration Control Register Definitions */\n+#define SCB_CCR_STKALIGN_Pos                9                                             /*!< SCB CCR: STKALIGN Position */\n+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n+\n+#define SCB_CCR_BFHFNMIGN_Pos               8                                             /*!< SCB CCR: BFHFNMIGN Position */\n+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n+\n+#define SCB_CCR_DIV_0_TRP_Pos               4                                             /*!< SCB CCR: DIV_0_TRP Position */\n+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n+\n+#define SCB_CCR_UNALIGN_TRP_Pos             3                                             /*!< SCB CCR: UNALIGN_TRP Position */\n+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n+\n+#define SCB_CCR_USERSETMPEND_Pos            1                                             /*!< SCB CCR: USERSETMPEND Position */\n+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n+\n+#define SCB_CCR_NONBASETHRDENA_Pos          0                                             /*!< SCB CCR: NONBASETHRDENA Position */\n+#define SCB_CCR_NONBASETHRDENA_Msk         (1UL << SCB_CCR_NONBASETHRDENA_Pos)            /*!< SCB CCR: NONBASETHRDENA Mask */\n+\n+/* SCB System Handler Control and State Register Definitions */\n+#define SCB_SHCSR_USGFAULTENA_Pos          18                                             /*!< SCB SHCSR: USGFAULTENA Position */\n+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n+\n+#define SCB_SHCSR_BUSFAULTENA_Pos          17                                             /*!< SCB SHCSR: BUSFAULTENA Position */\n+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n+\n+#define SCB_SHCSR_MEMFAULTENA_Pos          16                                             /*!< SCB SHCSR: MEMFAULTENA Position */\n+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n+\n+#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */\n+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n+\n+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14                                             /*!< SCB SHCSR: BUSFAULTPENDED Position */\n+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13                                             /*!< SCB SHCSR: MEMFAULTPENDED Position */\n+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_USGFAULTPENDED_Pos       12                                             /*!< SCB SHCSR: USGFAULTPENDED Position */\n+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_SYSTICKACT_Pos           11                                             /*!< SCB SHCSR: SYSTICKACT Position */\n+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n+\n+#define SCB_SHCSR_PENDSVACT_Pos            10                                             /*!< SCB SHCSR: PENDSVACT Position */\n+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n+\n+#define SCB_SHCSR_MONITORACT_Pos            8                                             /*!< SCB SHCSR: MONITORACT Position */\n+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n+\n+#define SCB_SHCSR_SVCALLACT_Pos             7                                             /*!< SCB SHCSR: SVCALLACT Position */\n+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n+\n+#define SCB_SHCSR_USGFAULTACT_Pos           3                                             /*!< SCB SHCSR: USGFAULTACT Position */\n+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n+\n+#define SCB_SHCSR_BUSFAULTACT_Pos           1                                             /*!< SCB SHCSR: BUSFAULTACT Position */\n+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n+\n+#define SCB_SHCSR_MEMFAULTACT_Pos           0                                             /*!< SCB SHCSR: MEMFAULTACT Position */\n+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL << SCB_SHCSR_MEMFAULTACT_Pos)             /*!< SCB SHCSR: MEMFAULTACT Mask */\n+\n+/* SCB Configurable Fault Status Registers Definitions */\n+#define SCB_CFSR_USGFAULTSR_Pos            16                                             /*!< SCB CFSR: Usage Fault Status Register Position */\n+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n+\n+#define SCB_CFSR_BUSFAULTSR_Pos             8                                             /*!< SCB CFSR: Bus Fault Status Register Position */\n+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n+\n+#define SCB_CFSR_MEMFAULTSR_Pos             0                                             /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos)            /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n+\n+/* SCB Hard Fault Status Registers Definitions */\n+#define SCB_HFSR_DEBUGEVT_Pos              31                                             /*!< SCB HFSR: DEBUGEVT Position */\n+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n+\n+#define SCB_HFSR_FORCED_Pos                30                                             /*!< SCB HFSR: FORCED Position */\n+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n+\n+#define SCB_HFSR_VECTTBL_Pos                1                                             /*!< SCB HFSR: VECTTBL Position */\n+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n+\n+/* SCB Debug Fault Status Register Definitions */\n+#define SCB_DFSR_EXTERNAL_Pos               4                                             /*!< SCB DFSR: EXTERNAL Position */\n+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n+\n+#define SCB_DFSR_VCATCH_Pos                 3                                             /*!< SCB DFSR: VCATCH Position */\n+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n+\n+#define SCB_DFSR_DWTTRAP_Pos                2                                             /*!< SCB DFSR: DWTTRAP Position */\n+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n+\n+#define SCB_DFSR_BKPT_Pos                   1                                             /*!< SCB DFSR: BKPT Position */\n+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n+\n+#define SCB_DFSR_HALTED_Pos                 0                                             /*!< SCB DFSR: HALTED Position */\n+#define SCB_DFSR_HALTED_Msk                (1UL << SCB_DFSR_HALTED_Pos)                   /*!< SCB DFSR: HALTED Mask */\n+\n+/*@} end of group CMSIS_SCB */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n+    \\brief      Type definitions for the System Control and ID Register not in the SCB\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Control and ID Register not in the SCB.\n+ */\n+typedef struct\n+{\n+       uint32_t RESERVED0[1];\n+  __I  uint32_t ICTR;                    /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register      */\n+  __IO uint32_t ACTLR;                   /*!< Offset: 0x008 (R/W)  Auxiliary Control Register              */\n+} SCnSCB_Type;\n+\n+/* Interrupt Controller Type Register Definitions */\n+#define SCnSCB_ICTR_INTLINESNUM_Pos         0                                          /*!< ICTR: INTLINESNUM Position */\n+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos)      /*!< ICTR: INTLINESNUM Mask */\n+\n+/* Auxiliary Control Register Definitions */\n+#define SCnSCB_ACTLR_DISOOFP_Pos            9                                          /*!< ACTLR: DISOOFP Position */\n+#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */\n+\n+#define SCnSCB_ACTLR_DISFPCA_Pos            8                                          /*!< ACTLR: DISFPCA Position */\n+#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */\n+\n+#define SCnSCB_ACTLR_DISFOLD_Pos            2                                          /*!< ACTLR: DISFOLD Position */\n+#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n+\n+#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1                                          /*!< ACTLR: DISDEFWBUF Position */\n+#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n+\n+#define SCnSCB_ACTLR_DISMCYCINT_Pos         0                                          /*!< ACTLR: DISMCYCINT Position */\n+#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos)        /*!< ACTLR: DISMCYCINT Mask */\n+\n+/*@} end of group CMSIS_SCnotSCB */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n+    \\brief      Type definitions for the System Timer Registers.\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Timer (SysTick).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n+  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */\n+  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */\n+  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */\n+} SysTick_Type;\n+\n+/* SysTick Control / Status Register Definitions */\n+#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */\n+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n+\n+#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */\n+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n+\n+#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */\n+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n+\n+#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */\n+#define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */\n+\n+/* SysTick Reload Register Definitions */\n+#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */\n+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */\n+\n+/* SysTick Current Register Definitions */\n+#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */\n+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */\n+\n+/* SysTick Calibration Register Definitions */\n+#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */\n+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n+\n+#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */\n+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n+\n+#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */\n+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */\n+\n+/*@} end of group CMSIS_SysTick */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n+    \\brief      Type definitions for the Instrumentation Trace Macrocell (ITM)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n+ */\n+typedef struct\n+{\n+  __O  union\n+  {\n+    __O  uint8_t    u8;                  /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit                   */\n+    __O  uint16_t   u16;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit                  */\n+    __O  uint32_t   u32;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit                  */\n+  }  PORT [32];                          /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers               */\n+       uint32_t RESERVED0[864];\n+  __IO uint32_t TER;                     /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register                 */\n+       uint32_t RESERVED1[15];\n+  __IO uint32_t TPR;                     /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register              */\n+       uint32_t RESERVED2[15];\n+  __IO uint32_t TCR;                     /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register                */\n+       uint32_t RESERVED3[29];\n+  __O  uint32_t IWR;                     /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register            */\n+  __I  uint32_t IRR;                     /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register             */\n+  __IO uint32_t IMCR;                    /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register     */\n+       uint32_t RESERVED4[43];\n+  __O  uint32_t LAR;                     /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register                  */\n+  __I  uint32_t LSR;                     /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register                  */\n+       uint32_t RESERVED5[6];\n+  __I  uint32_t PID4;                    /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n+  __I  uint32_t PID5;                    /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n+  __I  uint32_t PID6;                    /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n+  __I  uint32_t PID7;                    /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n+  __I  uint32_t PID0;                    /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n+  __I  uint32_t PID1;                    /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n+  __I  uint32_t PID2;                    /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n+  __I  uint32_t PID3;                    /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n+  __I  uint32_t CID0;                    /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n+  __I  uint32_t CID1;                    /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n+  __I  uint32_t CID2;                    /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n+  __I  uint32_t CID3;                    /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n+} ITM_Type;\n+\n+/* ITM Trace Privilege Register Definitions */\n+#define ITM_TPR_PRIVMASK_Pos                0                                             /*!< ITM TPR: PRIVMASK Position */\n+#define ITM_TPR_PRIVMASK_Msk               (0xFUL << ITM_TPR_PRIVMASK_Pos)                /*!< ITM TPR: PRIVMASK Mask */\n+\n+/* ITM Trace Control Register Definitions */\n+#define ITM_TCR_BUSY_Pos                   23                                             /*!< ITM TCR: BUSY Position */\n+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n+\n+#define ITM_TCR_TraceBusID_Pos             16                                             /*!< ITM TCR: ATBID Position */\n+#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n+\n+#define ITM_TCR_GTSFREQ_Pos                10                                             /*!< ITM TCR: Global timestamp frequency Position */\n+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n+\n+#define ITM_TCR_TSPrescale_Pos              8                                             /*!< ITM TCR: TSPrescale Position */\n+#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n+\n+#define ITM_TCR_SWOENA_Pos                  4                                             /*!< ITM TCR: SWOENA Position */\n+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n+\n+#define ITM_TCR_DWTENA_Pos                  3                                             /*!< ITM TCR: DWTENA Position */\n+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n+\n+#define ITM_TCR_SYNCENA_Pos                 2                                             /*!< ITM TCR: SYNCENA Position */\n+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n+\n+#define ITM_TCR_TSENA_Pos                   1                                             /*!< ITM TCR: TSENA Position */\n+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n+\n+#define ITM_TCR_ITMENA_Pos                  0                                             /*!< ITM TCR: ITM Enable bit Position */\n+#define ITM_TCR_ITMENA_Msk                 (1UL << ITM_TCR_ITMENA_Pos)                    /*!< ITM TCR: ITM Enable bit Mask */\n+\n+/* ITM Integration Write Register Definitions */\n+#define ITM_IWR_ATVALIDM_Pos                0                                             /*!< ITM IWR: ATVALIDM Position */\n+#define ITM_IWR_ATVALIDM_Msk               (1UL << ITM_IWR_ATVALIDM_Pos)                  /*!< ITM IWR: ATVALIDM Mask */\n+\n+/* ITM Integration Read Register Definitions */\n+#define ITM_IRR_ATREADYM_Pos                0                                             /*!< ITM IRR: ATREADYM Position */\n+#define ITM_IRR_ATREADYM_Msk               (1UL << ITM_IRR_ATREADYM_Pos)                  /*!< ITM IRR: ATREADYM Mask */\n+\n+/* ITM Integration Mode Control Register Definitions */\n+#define ITM_IMCR_INTEGRATION_Pos            0                                             /*!< ITM IMCR: INTEGRATION Position */\n+#define ITM_IMCR_INTEGRATION_Msk           (1UL << ITM_IMCR_INTEGRATION_Pos)              /*!< ITM IMCR: INTEGRATION Mask */\n+\n+/* ITM Lock Status Register Definitions */\n+#define ITM_LSR_ByteAcc_Pos                 2                                             /*!< ITM LSR: ByteAcc Position */\n+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n+\n+#define ITM_LSR_Access_Pos                  1                                             /*!< ITM LSR: Access Position */\n+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n+\n+#define ITM_LSR_Present_Pos                 0                                             /*!< ITM LSR: Present Position */\n+#define ITM_LSR_Present_Msk                (1UL << ITM_LSR_Present_Pos)                   /*!< ITM LSR: Present Mask */\n+\n+/*@}*/ /* end of group CMSIS_ITM */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n+    \\brief      Type definitions for the Data Watchpoint and Trace (DWT)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  Control Register                          */\n+  __IO uint32_t CYCCNT;                  /*!< Offset: 0x004 (R/W)  Cycle Count Register                      */\n+  __IO uint32_t CPICNT;                  /*!< Offset: 0x008 (R/W)  CPI Count Register                        */\n+  __IO uint32_t EXCCNT;                  /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register         */\n+  __IO uint32_t SLEEPCNT;                /*!< Offset: 0x010 (R/W)  Sleep Count Register                      */\n+  __IO uint32_t LSUCNT;                  /*!< Offset: 0x014 (R/W)  LSU Count Register                        */\n+  __IO uint32_t FOLDCNT;                 /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register         */\n+  __I  uint32_t PCSR;                    /*!< Offset: 0x01C (R/ )  Program Counter Sample Register           */\n+  __IO uint32_t COMP0;                   /*!< Offset: 0x020 (R/W)  Comparator Register 0                     */\n+  __IO uint32_t MASK0;                   /*!< Offset: 0x024 (R/W)  Mask Register 0                           */\n+  __IO uint32_t FUNCTION0;               /*!< Offset: 0x028 (R/W)  Function Register 0                       */\n+       uint32_t RESERVED0[1];\n+  __IO uint32_t COMP1;                   /*!< Offset: 0x030 (R/W)  Comparator Register 1                     */\n+  __IO uint32_t MASK1;                   /*!< Offset: 0x034 (R/W)  Mask Register 1                           */\n+  __IO uint32_t FUNCTION1;               /*!< Offset: 0x038 (R/W)  Function Register 1                       */\n+       uint32_t RESERVED1[1];\n+  __IO uint32_t COMP2;                   /*!< Offset: 0x040 (R/W)  Comparator Register 2                     */\n+  __IO uint32_t MASK2;                   /*!< Offset: 0x044 (R/W)  Mask Register 2                           */\n+  __IO uint32_t FUNCTION2;               /*!< Offset: 0x048 (R/W)  Function Register 2                       */\n+       uint32_t RESERVED2[1];\n+  __IO uint32_t COMP3;                   /*!< Offset: 0x050 (R/W)  Comparator Register 3                     */\n+  __IO uint32_t MASK3;                   /*!< Offset: 0x054 (R/W)  Mask Register 3                           */\n+  __IO uint32_t FUNCTION3;               /*!< Offset: 0x058 (R/W)  Function Register 3                       */\n+} DWT_Type;\n+\n+/* DWT Control Register Definitions */\n+#define DWT_CTRL_NUMCOMP_Pos               28                                          /*!< DWT CTRL: NUMCOMP Position */\n+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n+\n+#define DWT_CTRL_NOTRCPKT_Pos              27                                          /*!< DWT CTRL: NOTRCPKT Position */\n+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n+\n+#define DWT_CTRL_NOEXTTRIG_Pos             26                                          /*!< DWT CTRL: NOEXTTRIG Position */\n+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n+\n+#define DWT_CTRL_NOCYCCNT_Pos              25                                          /*!< DWT CTRL: NOCYCCNT Position */\n+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n+\n+#define DWT_CTRL_NOPRFCNT_Pos              24                                          /*!< DWT CTRL: NOPRFCNT Position */\n+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n+\n+#define DWT_CTRL_CYCEVTENA_Pos             22                                          /*!< DWT CTRL: CYCEVTENA Position */\n+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n+\n+#define DWT_CTRL_FOLDEVTENA_Pos            21                                          /*!< DWT CTRL: FOLDEVTENA Position */\n+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n+\n+#define DWT_CTRL_LSUEVTENA_Pos             20                                          /*!< DWT CTRL: LSUEVTENA Position */\n+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n+\n+#define DWT_CTRL_SLEEPEVTENA_Pos           19                                          /*!< DWT CTRL: SLEEPEVTENA Position */\n+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n+\n+#define DWT_CTRL_EXCEVTENA_Pos             18                                          /*!< DWT CTRL: EXCEVTENA Position */\n+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n+\n+#define DWT_CTRL_CPIEVTENA_Pos             17                                          /*!< DWT CTRL: CPIEVTENA Position */\n+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n+\n+#define DWT_CTRL_EXCTRCENA_Pos             16                                          /*!< DWT CTRL: EXCTRCENA Position */\n+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n+\n+#define DWT_CTRL_PCSAMPLENA_Pos            12                                          /*!< DWT CTRL: PCSAMPLENA Position */\n+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n+\n+#define DWT_CTRL_SYNCTAP_Pos               10                                          /*!< DWT CTRL: SYNCTAP Position */\n+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n+\n+#define DWT_CTRL_CYCTAP_Pos                 9                                          /*!< DWT CTRL: CYCTAP Position */\n+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n+\n+#define DWT_CTRL_POSTINIT_Pos               5                                          /*!< DWT CTRL: POSTINIT Position */\n+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n+\n+#define DWT_CTRL_POSTPRESET_Pos             1                                          /*!< DWT CTRL: POSTPRESET Position */\n+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n+\n+#define DWT_CTRL_CYCCNTENA_Pos              0                                          /*!< DWT CTRL: CYCCNTENA Position */\n+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL << DWT_CTRL_CYCCNTENA_Pos)           /*!< DWT CTRL: CYCCNTENA Mask */\n+\n+/* DWT CPI Count Register Definitions */\n+#define DWT_CPICNT_CPICNT_Pos               0                                          /*!< DWT CPICNT: CPICNT Position */\n+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL << DWT_CPICNT_CPICNT_Pos)           /*!< DWT CPICNT: CPICNT Mask */\n+\n+/* DWT Exception Overhead Count Register Definitions */\n+#define DWT_EXCCNT_EXCCNT_Pos               0                                          /*!< DWT EXCCNT: EXCCNT Position */\n+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL << DWT_EXCCNT_EXCCNT_Pos)           /*!< DWT EXCCNT: EXCCNT Mask */\n+\n+/* DWT Sleep Count Register Definitions */\n+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0                                          /*!< DWT SLEEPCNT: SLEEPCNT Position */\n+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos)       /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n+\n+/* DWT LSU Count Register Definitions */\n+#define DWT_LSUCNT_LSUCNT_Pos               0                                          /*!< DWT LSUCNT: LSUCNT Position */\n+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL << DWT_LSUCNT_LSUCNT_Pos)           /*!< DWT LSUCNT: LSUCNT Mask */\n+\n+/* DWT Folded-instruction Count Register Definitions */\n+#define DWT_FOLDCNT_FOLDCNT_Pos             0                                          /*!< DWT FOLDCNT: FOLDCNT Position */\n+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos)         /*!< DWT FOLDCNT: FOLDCNT Mask */\n+\n+/* DWT Comparator Mask Register Definitions */\n+#define DWT_MASK_MASK_Pos                   0                                          /*!< DWT MASK: MASK Position */\n+#define DWT_MASK_MASK_Msk                  (0x1FUL << DWT_MASK_MASK_Pos)               /*!< DWT MASK: MASK Mask */\n+\n+/* DWT Comparator Function Register Definitions */\n+#define DWT_FUNCTION_MATCHED_Pos           24                                          /*!< DWT FUNCTION: MATCHED Position */\n+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n+\n+#define DWT_FUNCTION_DATAVADDR1_Pos        16                                          /*!< DWT FUNCTION: DATAVADDR1 Position */\n+#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n+\n+#define DWT_FUNCTION_DATAVADDR0_Pos        12                                          /*!< DWT FUNCTION: DATAVADDR0 Position */\n+#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n+\n+#define DWT_FUNCTION_DATAVSIZE_Pos         10                                          /*!< DWT FUNCTION: DATAVSIZE Position */\n+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n+\n+#define DWT_FUNCTION_LNK1ENA_Pos            9                                          /*!< DWT FUNCTION: LNK1ENA Position */\n+#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n+\n+#define DWT_FUNCTION_DATAVMATCH_Pos         8                                          /*!< DWT FUNCTION: DATAVMATCH Position */\n+#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n+\n+#define DWT_FUNCTION_CYCMATCH_Pos           7                                          /*!< DWT FUNCTION: CYCMATCH Position */\n+#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n+\n+#define DWT_FUNCTION_EMITRANGE_Pos          5                                          /*!< DWT FUNCTION: EMITRANGE Position */\n+#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n+\n+#define DWT_FUNCTION_FUNCTION_Pos           0                                          /*!< DWT FUNCTION: FUNCTION Position */\n+#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL << DWT_FUNCTION_FUNCTION_Pos)        /*!< DWT FUNCTION: FUNCTION Mask */\n+\n+/*@}*/ /* end of group CMSIS_DWT */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n+    \\brief      Type definitions for the Trace Port Interface (TPI)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Trace Port Interface Register (TPI).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t SSPSR;                   /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register     */\n+  __IO uint32_t CSPSR;                   /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n+       uint32_t RESERVED0[2];\n+  __IO uint32_t ACPR;                    /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n+       uint32_t RESERVED1[55];\n+  __IO uint32_t SPPR;                    /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n+       uint32_t RESERVED2[131];\n+  __I  uint32_t FFSR;                    /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n+  __IO uint32_t FFCR;                    /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n+  __I  uint32_t FSCR;                    /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n+       uint32_t RESERVED3[759];\n+  __I  uint32_t TRIGGER;                 /*!< Offset: 0xEE8 (R/ )  TRIGGER */\n+  __I  uint32_t FIFO0;                   /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n+  __I  uint32_t ITATBCTR2;               /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n+       uint32_t RESERVED4[1];\n+  __I  uint32_t ITATBCTR0;               /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n+  __I  uint32_t FIFO1;                   /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n+  __IO uint32_t ITCTRL;                  /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n+       uint32_t RESERVED5[39];\n+  __IO uint32_t CLAIMSET;                /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n+  __IO uint32_t CLAIMCLR;                /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n+       uint32_t RESERVED7[8];\n+  __I  uint32_t DEVID;                   /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n+  __I  uint32_t DEVTYPE;                 /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n+} TPI_Type;\n+\n+/* TPI Asynchronous Clock Prescaler Register Definitions */\n+#define TPI_ACPR_PRESCALER_Pos              0                                          /*!< TPI ACPR: PRESCALER Position */\n+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL << TPI_ACPR_PRESCALER_Pos)        /*!< TPI ACPR: PRESCALER Mask */\n+\n+/* TPI Selected Pin Protocol Register Definitions */\n+#define TPI_SPPR_TXMODE_Pos                 0                                          /*!< TPI SPPR: TXMODE Position */\n+#define TPI_SPPR_TXMODE_Msk                (0x3UL << TPI_SPPR_TXMODE_Pos)              /*!< TPI SPPR: TXMODE Mask */\n+\n+/* TPI Formatter and Flush Status Register Definitions */\n+#define TPI_FFSR_FtNonStop_Pos              3                                          /*!< TPI FFSR: FtNonStop Position */\n+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n+\n+#define TPI_FFSR_TCPresent_Pos              2                                          /*!< TPI FFSR: TCPresent Position */\n+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n+\n+#define TPI_FFSR_FtStopped_Pos              1                                          /*!< TPI FFSR: FtStopped Position */\n+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n+\n+#define TPI_FFSR_FlInProg_Pos               0                                          /*!< TPI FFSR: FlInProg Position */\n+#define TPI_FFSR_FlInProg_Msk              (0x1UL << TPI_FFSR_FlInProg_Pos)            /*!< TPI FFSR: FlInProg Mask */\n+\n+/* TPI Formatter and Flush Control Register Definitions */\n+#define TPI_FFCR_TrigIn_Pos                 8                                          /*!< TPI FFCR: TrigIn Position */\n+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n+\n+#define TPI_FFCR_EnFCont_Pos                1                                          /*!< TPI FFCR: EnFCont Position */\n+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n+\n+/* TPI TRIGGER Register Definitions */\n+#define TPI_TRIGGER_TRIGGER_Pos             0                                          /*!< TPI TRIGGER: TRIGGER Position */\n+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL << TPI_TRIGGER_TRIGGER_Pos)          /*!< TPI TRIGGER: TRIGGER Mask */\n+\n+/* TPI Integration ETM Data Register Definitions (FIFO0) */\n+#define TPI_FIFO0_ITM_ATVALID_Pos          29                                          /*!< TPI FIFO0: ITM_ATVALID Position */\n+#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n+\n+#define TPI_FIFO0_ITM_bytecount_Pos        27                                          /*!< TPI FIFO0: ITM_bytecount Position */\n+#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n+\n+#define TPI_FIFO0_ETM_ATVALID_Pos          26                                          /*!< TPI FIFO0: ETM_ATVALID Position */\n+#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n+\n+#define TPI_FIFO0_ETM_bytecount_Pos        24                                          /*!< TPI FIFO0: ETM_bytecount Position */\n+#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n+\n+#define TPI_FIFO0_ETM2_Pos                 16                                          /*!< TPI FIFO0: ETM2 Position */\n+#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n+\n+#define TPI_FIFO0_ETM1_Pos                  8                                          /*!< TPI FIFO0: ETM1 Position */\n+#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n+\n+#define TPI_FIFO0_ETM0_Pos                  0                                          /*!< TPI FIFO0: ETM0 Position */\n+#define TPI_FIFO0_ETM0_Msk                 (0xFFUL << TPI_FIFO0_ETM0_Pos)              /*!< TPI FIFO0: ETM0 Mask */\n+\n+/* TPI ITATBCTR2 Register Definitions */\n+#define TPI_ITATBCTR2_ATREADY_Pos           0                                          /*!< TPI ITATBCTR2: ATREADY Position */\n+#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL << TPI_ITATBCTR2_ATREADY_Pos)        /*!< TPI ITATBCTR2: ATREADY Mask */\n+\n+/* TPI Integration ITM Data Register Definitions (FIFO1) */\n+#define TPI_FIFO1_ITM_ATVALID_Pos          29                                          /*!< TPI FIFO1: ITM_ATVALID Position */\n+#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n+\n+#define TPI_FIFO1_ITM_bytecount_Pos        27                                          /*!< TPI FIFO1: ITM_bytecount Position */\n+#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n+\n+#define TPI_FIFO1_ETM_ATVALID_Pos          26                                          /*!< TPI FIFO1: ETM_ATVALID Position */\n+#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n+\n+#define TPI_FIFO1_ETM_bytecount_Pos        24                                          /*!< TPI FIFO1: ETM_bytecount Position */\n+#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n+\n+#define TPI_FIFO1_ITM2_Pos                 16                                          /*!< TPI FIFO1: ITM2 Position */\n+#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n+\n+#define TPI_FIFO1_ITM1_Pos                  8                                          /*!< TPI FIFO1: ITM1 Position */\n+#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n+\n+#define TPI_FIFO1_ITM0_Pos                  0                                          /*!< TPI FIFO1: ITM0 Position */\n+#define TPI_FIFO1_ITM0_Msk                 (0xFFUL << TPI_FIFO1_ITM0_Pos)              /*!< TPI FIFO1: ITM0 Mask */\n+\n+/* TPI ITATBCTR0 Register Definitions */\n+#define TPI_ITATBCTR0_ATREADY_Pos           0                                          /*!< TPI ITATBCTR0: ATREADY Position */\n+#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL << TPI_ITATBCTR0_ATREADY_Pos)        /*!< TPI ITATBCTR0: ATREADY Mask */\n+\n+/* TPI Integration Mode Control Register Definitions */\n+#define TPI_ITCTRL_Mode_Pos                 0                                          /*!< TPI ITCTRL: Mode Position */\n+#define TPI_ITCTRL_Mode_Msk                (0x1UL << TPI_ITCTRL_Mode_Pos)              /*!< TPI ITCTRL: Mode Mask */\n+\n+/* TPI DEVID Register Definitions */\n+#define TPI_DEVID_NRZVALID_Pos             11                                          /*!< TPI DEVID: NRZVALID Position */\n+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n+\n+#define TPI_DEVID_MANCVALID_Pos            10                                          /*!< TPI DEVID: MANCVALID Position */\n+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n+\n+#define TPI_DEVID_PTINVALID_Pos             9                                          /*!< TPI DEVID: PTINVALID Position */\n+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n+\n+#define TPI_DEVID_MinBufSz_Pos              6                                          /*!< TPI DEVID: MinBufSz Position */\n+#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n+\n+#define TPI_DEVID_AsynClkIn_Pos             5                                          /*!< TPI DEVID: AsynClkIn Position */\n+#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n+\n+#define TPI_DEVID_NrTraceInput_Pos          0                                          /*!< TPI DEVID: NrTraceInput Position */\n+#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL << TPI_DEVID_NrTraceInput_Pos)      /*!< TPI DEVID: NrTraceInput Mask */\n+\n+/* TPI DEVTYPE Register Definitions */\n+#define TPI_DEVTYPE_SubType_Pos             0                                          /*!< TPI DEVTYPE: SubType Position */\n+#define TPI_DEVTYPE_SubType_Msk            (0xFUL << TPI_DEVTYPE_SubType_Pos)          /*!< TPI DEVTYPE: SubType Mask */\n+\n+#define TPI_DEVTYPE_MajorType_Pos           4                                          /*!< TPI DEVTYPE: MajorType Position */\n+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n+\n+/*@}*/ /* end of group CMSIS_TPI */\n+\n+\n+#if (__MPU_PRESENT == 1)\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n+    \\brief      Type definitions for the Memory Protection Unit (MPU)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Memory Protection Unit (MPU).\n+ */\n+typedef struct\n+{\n+  __I  uint32_t TYPE;                    /*!< Offset: 0x000 (R/ )  MPU Type Register                              */\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x004 (R/W)  MPU Control Register                           */\n+  __IO uint32_t RNR;                     /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register                     */\n+  __IO uint32_t RBAR;                    /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register               */\n+  __IO uint32_t RASR;                    /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register         */\n+  __IO uint32_t RBAR_A1;                 /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register       */\n+  __IO uint32_t RASR_A1;                 /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n+  __IO uint32_t RBAR_A2;                 /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register       */\n+  __IO uint32_t RASR_A2;                 /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n+  __IO uint32_t RBAR_A3;                 /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register       */\n+  __IO uint32_t RASR_A3;                 /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n+} MPU_Type;\n+\n+/* MPU Type Register */\n+#define MPU_TYPE_IREGION_Pos               16                                             /*!< MPU TYPE: IREGION Position */\n+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n+\n+#define MPU_TYPE_DREGION_Pos                8                                             /*!< MPU TYPE: DREGION Position */\n+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n+\n+#define MPU_TYPE_SEPARATE_Pos               0                                             /*!< MPU TYPE: SEPARATE Position */\n+#define MPU_TYPE_SEPARATE_Msk              (1UL << MPU_TYPE_SEPARATE_Pos)                 /*!< MPU TYPE: SEPARATE Mask */\n+\n+/* MPU Control Register */\n+#define MPU_CTRL_PRIVDEFENA_Pos             2                                             /*!< MPU CTRL: PRIVDEFENA Position */\n+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n+\n+#define MPU_CTRL_HFNMIENA_Pos               1                                             /*!< MPU CTRL: HFNMIENA Position */\n+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n+\n+#define MPU_CTRL_ENABLE_Pos                 0                                             /*!< MPU CTRL: ENABLE Position */\n+#define MPU_CTRL_ENABLE_Msk                (1UL << MPU_CTRL_ENABLE_Pos)                   /*!< MPU CTRL: ENABLE Mask */\n+\n+/* MPU Region Number Register */\n+#define MPU_RNR_REGION_Pos                  0                                             /*!< MPU RNR: REGION Position */\n+#define MPU_RNR_REGION_Msk                 (0xFFUL << MPU_RNR_REGION_Pos)                 /*!< MPU RNR: REGION Mask */\n+\n+/* MPU Region Base Address Register */\n+#define MPU_RBAR_ADDR_Pos                   5                                             /*!< MPU RBAR: ADDR Position */\n+#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n+\n+#define MPU_RBAR_VALID_Pos                  4                                             /*!< MPU RBAR: VALID Position */\n+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n+\n+#define MPU_RBAR_REGION_Pos                 0                                             /*!< MPU RBAR: REGION Position */\n+#define MPU_RBAR_REGION_Msk                (0xFUL << MPU_RBAR_REGION_Pos)                 /*!< MPU RBAR: REGION Mask */\n+\n+/* MPU Region Attribute and Size Register */\n+#define MPU_RASR_ATTRS_Pos                 16                                             /*!< MPU RASR: MPU Region Attribute field Position */\n+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n+\n+#define MPU_RASR_XN_Pos                    28                                             /*!< MPU RASR: ATTRS.XN Position */\n+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n+\n+#define MPU_RASR_AP_Pos                    24                                             /*!< MPU RASR: ATTRS.AP Position */\n+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n+\n+#define MPU_RASR_TEX_Pos                   19                                             /*!< MPU RASR: ATTRS.TEX Position */\n+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n+\n+#define MPU_RASR_S_Pos                     18                                             /*!< MPU RASR: ATTRS.S Position */\n+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n+\n+#define MPU_RASR_C_Pos                     17                                             /*!< MPU RASR: ATTRS.C Position */\n+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n+\n+#define MPU_RASR_B_Pos                     16                                             /*!< MPU RASR: ATTRS.B Position */\n+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n+\n+#define MPU_RASR_SRD_Pos                    8                                             /*!< MPU RASR: Sub-Region Disable Position */\n+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n+\n+#define MPU_RASR_SIZE_Pos                   1                                             /*!< MPU RASR: Region Size Field Position */\n+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n+\n+#define MPU_RASR_ENABLE_Pos                 0                                             /*!< MPU RASR: Region enable bit Position */\n+#define MPU_RASR_ENABLE_Msk                (1UL << MPU_RASR_ENABLE_Pos)                   /*!< MPU RASR: Region enable bit Disable Mask */\n+\n+/*@} end of group CMSIS_MPU */\n+#endif\n+\n+\n+#if (__FPU_PRESENT == 1)\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n+    \\brief      Type definitions for the Floating Point Unit (FPU)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Floating Point Unit (FPU).\n+ */\n+typedef struct\n+{\n+       uint32_t RESERVED0[1];\n+  __IO uint32_t FPCCR;                   /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register               */\n+  __IO uint32_t FPCAR;                   /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register               */\n+  __IO uint32_t FPDSCR;                  /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register        */\n+  __I  uint32_t MVFR0;                   /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0                       */\n+  __I  uint32_t MVFR1;                   /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1                       */\n+} FPU_Type;\n+\n+/* Floating-Point Context Control Register */\n+#define FPU_FPCCR_ASPEN_Pos                31                                             /*!< FPCCR: ASPEN bit Position */\n+#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n+\n+#define FPU_FPCCR_LSPEN_Pos                30                                             /*!< FPCCR: LSPEN Position */\n+#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n+\n+#define FPU_FPCCR_MONRDY_Pos                8                                             /*!< FPCCR: MONRDY Position */\n+#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n+\n+#define FPU_FPCCR_BFRDY_Pos                 6                                             /*!< FPCCR: BFRDY Position */\n+#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n+\n+#define FPU_FPCCR_MMRDY_Pos                 5                                             /*!< FPCCR: MMRDY Position */\n+#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n+\n+#define FPU_FPCCR_HFRDY_Pos                 4                                             /*!< FPCCR: HFRDY Position */\n+#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n+\n+#define FPU_FPCCR_THREAD_Pos                3                                             /*!< FPCCR: processor mode bit Position */\n+#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n+\n+#define FPU_FPCCR_USER_Pos                  1                                             /*!< FPCCR: privilege level bit Position */\n+#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n+\n+#define FPU_FPCCR_LSPACT_Pos                0                                             /*!< FPCCR: Lazy state preservation active bit Position */\n+#define FPU_FPCCR_LSPACT_Msk               (1UL << FPU_FPCCR_LSPACT_Pos)                  /*!< FPCCR: Lazy state preservation active bit Mask */\n+\n+/* Floating-Point Context Address Register */\n+#define FPU_FPCAR_ADDRESS_Pos               3                                             /*!< FPCAR: ADDRESS bit Position */\n+#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n+\n+/* Floating-Point Default Status Control Register */\n+#define FPU_FPDSCR_AHP_Pos                 26                                             /*!< FPDSCR: AHP bit Position */\n+#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n+\n+#define FPU_FPDSCR_DN_Pos                  25                                             /*!< FPDSCR: DN bit Position */\n+#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n+\n+#define FPU_FPDSCR_FZ_Pos                  24                                             /*!< FPDSCR: FZ bit Position */\n+#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n+\n+#define FPU_FPDSCR_RMode_Pos               22                                             /*!< FPDSCR: RMode bit Position */\n+#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n+\n+/* Media and FP Feature Register 0 */\n+#define FPU_MVFR0_FP_rounding_modes_Pos    28                                             /*!< MVFR0: FP rounding modes bits Position */\n+#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n+\n+#define FPU_MVFR0_Short_vectors_Pos        24                                             /*!< MVFR0: Short vectors bits Position */\n+#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n+\n+#define FPU_MVFR0_Square_root_Pos          20                                             /*!< MVFR0: Square root bits Position */\n+#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n+\n+#define FPU_MVFR0_Divide_Pos               16                                             /*!< MVFR0: Divide bits Position */\n+#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n+\n+#define FPU_MVFR0_FP_excep_trapping_Pos    12                                             /*!< MVFR0: FP exception trapping bits Position */\n+#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n+\n+#define FPU_MVFR0_Double_precision_Pos      8                                             /*!< MVFR0: Double-precision bits Position */\n+#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n+\n+#define FPU_MVFR0_Single_precision_Pos      4                                             /*!< MVFR0: Single-precision bits Position */\n+#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n+\n+#define FPU_MVFR0_A_SIMD_registers_Pos      0                                             /*!< MVFR0: A_SIMD registers bits Position */\n+#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos)      /*!< MVFR0: A_SIMD registers bits Mask */\n+\n+/* Media and FP Feature Register 1 */\n+#define FPU_MVFR1_FP_fused_MAC_Pos         28                                             /*!< MVFR1: FP fused MAC bits Position */\n+#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n+\n+#define FPU_MVFR1_FP_HPFP_Pos              24                                             /*!< MVFR1: FP HPFP bits Position */\n+#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n+\n+#define FPU_MVFR1_D_NaN_mode_Pos            4                                             /*!< MVFR1: D_NaN mode bits Position */\n+#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n+\n+#define FPU_MVFR1_FtZ_mode_Pos              0                                             /*!< MVFR1: FtZ mode bits Position */\n+#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL << FPU_MVFR1_FtZ_mode_Pos)              /*!< MVFR1: FtZ mode bits Mask */\n+\n+/*@} end of group CMSIS_FPU */\n+#endif\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n+    \\brief      Type definitions for the Core Debug Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Core Debug Register (CoreDebug).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t DHCSR;                   /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register    */\n+  __O  uint32_t DCRSR;                   /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register        */\n+  __IO uint32_t DCRDR;                   /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register            */\n+  __IO uint32_t DEMCR;                   /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n+} CoreDebug_Type;\n+\n+/* Debug Halting Control and Status Register */\n+#define CoreDebug_DHCSR_DBGKEY_Pos         16                                             /*!< CoreDebug DHCSR: DBGKEY Position */\n+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n+\n+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25                                             /*!< CoreDebug DHCSR: S_RESET_ST Position */\n+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n+\n+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24                                             /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n+\n+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19                                             /*!< CoreDebug DHCSR: S_LOCKUP Position */\n+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n+\n+#define CoreDebug_DHCSR_S_SLEEP_Pos        18                                             /*!< CoreDebug DHCSR: S_SLEEP Position */\n+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n+\n+#define CoreDebug_DHCSR_S_HALT_Pos         17                                             /*!< CoreDebug DHCSR: S_HALT Position */\n+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n+\n+#define CoreDebug_DHCSR_S_REGRDY_Pos       16                                             /*!< CoreDebug DHCSR: S_REGRDY Position */\n+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n+\n+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5                                             /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n+\n+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3                                             /*!< CoreDebug DHCSR: C_MASKINTS Position */\n+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n+\n+#define CoreDebug_DHCSR_C_STEP_Pos          2                                             /*!< CoreDebug DHCSR: C_STEP Position */\n+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n+\n+#define CoreDebug_DHCSR_C_HALT_Pos          1                                             /*!< CoreDebug DHCSR: C_HALT Position */\n+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n+\n+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0                                             /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos)         /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n+\n+/* Debug Core Register Selector Register */\n+#define CoreDebug_DCRSR_REGWnR_Pos         16                                             /*!< CoreDebug DCRSR: REGWnR Position */\n+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n+\n+#define CoreDebug_DCRSR_REGSEL_Pos          0                                             /*!< CoreDebug DCRSR: REGSEL Position */\n+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos)         /*!< CoreDebug DCRSR: REGSEL Mask */\n+\n+/* Debug Exception and Monitor Control Register */\n+#define CoreDebug_DEMCR_TRCENA_Pos         24                                             /*!< CoreDebug DEMCR: TRCENA Position */\n+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n+\n+#define CoreDebug_DEMCR_MON_REQ_Pos        19                                             /*!< CoreDebug DEMCR: MON_REQ Position */\n+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n+\n+#define CoreDebug_DEMCR_MON_STEP_Pos       18                                             /*!< CoreDebug DEMCR: MON_STEP Position */\n+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n+\n+#define CoreDebug_DEMCR_MON_PEND_Pos       17                                             /*!< CoreDebug DEMCR: MON_PEND Position */\n+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n+\n+#define CoreDebug_DEMCR_MON_EN_Pos         16                                             /*!< CoreDebug DEMCR: MON_EN Position */\n+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n+\n+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10                                             /*!< CoreDebug DEMCR: VC_HARDERR Position */\n+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_INTERR_Pos       9                                             /*!< CoreDebug DEMCR: VC_INTERR Position */\n+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8                                             /*!< CoreDebug DEMCR: VC_BUSERR Position */\n+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_STATERR_Pos      7                                             /*!< CoreDebug DEMCR: VC_STATERR Position */\n+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6                                             /*!< CoreDebug DEMCR: VC_CHKERR Position */\n+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5                                             /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_MMERR_Pos        4                                             /*!< CoreDebug DEMCR: VC_MMERR Position */\n+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0                                             /*!< CoreDebug DEMCR: VC_CORERESET Position */\n+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos)      /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n+\n+/*@} end of group CMSIS_CoreDebug */\n+\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_core_base     Core Definitions\n+    \\brief      Definitions for base addresses, unions, and structures.\n+  @{\n+ */\n+\n+/* Memory mapping of Cortex-M4 Hardware */\n+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address  */\n+#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address                   */\n+#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address                   */\n+#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address                   */\n+#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address            */\n+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address               */\n+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address                  */\n+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address  */\n+\n+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct           */\n+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct       */\n+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct          */\n+#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct           */\n+#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct           */\n+#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct           */\n+#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct    */\n+\n+#if (__MPU_PRESENT == 1)\n+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit             */\n+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit             */\n+#endif\n+\n+#if (__FPU_PRESENT == 1)\n+  #define FPU_BASE          (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit                */\n+  #define FPU               ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit                */\n+#endif\n+\n+/*@} */\n+\n+\n+\n+/*******************************************************************************\n+ *                Hardware Abstraction Layer\n+  Core Function Interface contains:\n+  - Core NVIC Functions\n+  - Core SysTick Functions\n+  - Core Debug Functions\n+  - Core Register Access Functions\n+ ******************************************************************************/\n+/** \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n+*/\n+\n+\n+\n+/* ##########################   NVIC functions  #################################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n+    \\brief      Functions that manage interrupts and exceptions via the NVIC.\n+    @{\n+ */\n+\n+/** \\brief  Set Priority Grouping\n+\n+  The function sets the priority grouping field using the required unlock sequence.\n+  The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n+  Only values from 0..7 are used.\n+  In case of a conflict between priority grouping and available\n+  priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n+\n+    \\param [in]      PriorityGroup  Priority grouping field.\n+ */\n+__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n+{\n+  uint32_t reg_value;\n+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07);               /* only values 0..7 are used          */\n+\n+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n+  reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk);             /* clear bits to change               */\n+  reg_value  =  (reg_value                                 |\n+                ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) |\n+                (PriorityGroupTmp << 8));                                     /* Insert write key and priorty group */\n+  SCB->AIRCR =  reg_value;\n+}\n+\n+\n+/** \\brief  Get Priority Grouping\n+\n+  The function reads the priority grouping field from the NVIC Interrupt Controller.\n+\n+    \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)\n+{\n+  return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos);   /* read priority grouping field */\n+}\n+\n+\n+/** \\brief  Enable External Interrupt\n+\n+    The function enables a device-specific interrupt in the NVIC interrupt controller.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)\n+{\n+/*  NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));  enable interrupt */\n+  NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */\n+}\n+\n+\n+/** \\brief  Disable External Interrupt\n+\n+    The function disables a device-specific interrupt in the NVIC interrupt controller.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */\n+}\n+\n+\n+/** \\brief  Get Pending Interrupt\n+\n+    The function reads the pending register in the NVIC and returns the pending bit\n+    for the specified interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+\n+    \\return             0  Interrupt status is not pending.\n+    \\return             1  Interrupt status is pending.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)\n+{\n+  return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */\n+}\n+\n+\n+/** \\brief  Set Pending Interrupt\n+\n+    The function sets the pending bit of an external interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */\n+}\n+\n+\n+/** \\brief  Clear Pending Interrupt\n+\n+    The function clears the pending bit of an external interrupt.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */\n+}\n+\n+\n+/** \\brief  Get Active Interrupt\n+\n+    The function reads the active register in NVIC and returns the active bit.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+\n+    \\return             0  Interrupt status is not active.\n+    \\return             1  Interrupt status is active.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)\n+{\n+  return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */\n+}\n+\n+\n+/** \\brief  Set Interrupt Priority\n+\n+    The function sets the priority of an interrupt.\n+\n+    \\note The priority cannot be set for every core interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+    \\param [in]  priority  Priority to set.\n+ */\n+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n+{\n+  if(IRQn < 0) {\n+    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M  System Interrupts */\n+  else {\n+    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */\n+}\n+\n+\n+/** \\brief  Get Interrupt Priority\n+\n+    The function reads the priority of an interrupt. The interrupt\n+    number can be positive to specify an external (device specific)\n+    interrupt, or negative to specify an internal (core) interrupt.\n+\n+\n+    \\param [in]   IRQn  Interrupt number.\n+    \\return             Interrupt Priority. Value is aligned automatically to the implemented\n+                        priority bits of the microcontroller.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)\n+{\n+\n+  if(IRQn < 0) {\n+    return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M  system interrupts */\n+  else {\n+    return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)]           >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */\n+}\n+\n+\n+/** \\brief  Encode Priority\n+\n+    The function encodes the priority for an interrupt with the given priority group,\n+    preemptive priority value, and subpriority value.\n+    In case of a conflict between priority grouping and available\n+    priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set.\n+\n+    \\param [in]     PriorityGroup  Used priority group.\n+    \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n+    \\param [in]       SubPriority  Subpriority value (starting from 0).\n+    \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n+ */\n+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n+{\n+  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */\n+  uint32_t PreemptPriorityBits;\n+  uint32_t SubPriorityBits;\n+\n+  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;\n+  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;\n+\n+  return (\n+           ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) |\n+           ((SubPriority     & ((1 << (SubPriorityBits    )) - 1)))\n+         );\n+}\n+\n+\n+/** \\brief  Decode Priority\n+\n+    The function decodes an interrupt priority value with a given priority group to\n+    preemptive priority value and subpriority value.\n+    In case of a conflict between priority grouping and available\n+    priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set.\n+\n+    \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n+    \\param [in]     PriorityGroup  Used priority group.\n+    \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n+    \\param [out]     pSubPriority  Subpriority value (starting from 0).\n+ */\n+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)\n+{\n+  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */\n+  uint32_t PreemptPriorityBits;\n+  uint32_t SubPriorityBits;\n+\n+  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;\n+  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;\n+\n+  *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1);\n+  *pSubPriority     = (Priority                   ) & ((1 << (SubPriorityBits    )) - 1);\n+}\n+\n+\n+/** \\brief  System Reset\n+\n+    The function initiates a system reset request to reset the MCU.\n+ */\n+__STATIC_INLINE void NVIC_SystemReset(void)\n+{\n+  __DSB();                                                     /* Ensure all outstanding memory accesses included\n+                                                                  buffered write are completed before reset */\n+  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |\n+                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n+                 SCB_AIRCR_SYSRESETREQ_Msk);                   /* Keep priority group unchanged */\n+  __DSB();                                                     /* Ensure completion of memory access */\n+  while(1);                                                    /* wait until reset */\n+}\n+\n+/*@} end of CMSIS_Core_NVICFunctions */\n+\n+\n+\n+/* ##################################    SysTick function  ############################################ */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n+    \\brief      Functions that configure the System.\n+  @{\n+ */\n+\n+#if (__Vendor_SysTickConfig == 0)\n+\n+/** \\brief  System Tick Configuration\n+\n+    The function initializes the System Timer and its interrupt, and starts the System Tick Timer.\n+    Counter is in free running mode to generate periodic interrupts.\n+\n+    \\param [in]  ticks  Number of ticks between two interrupts.\n+\n+    \\return          0  Function succeeded.\n+    \\return          1  Function failed.\n+\n+    \\note     When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n+    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n+    must contain a vendor-specific implementation of this function.\n+\n+ */\n+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n+{\n+  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */\n+\n+  SysTick->LOAD  = ticks - 1;                                  /* set reload register */\n+  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */\n+  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */\n+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n+                   SysTick_CTRL_TICKINT_Msk   |\n+                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */\n+  return (0);                                                  /* Function successful */\n+}\n+\n+#endif\n+\n+/*@} end of CMSIS_Core_SysTickFunctions */\n+\n+\n+\n+/* ##################################### Debug In/Output function ########################################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_core_DebugFunctions ITM Functions\n+    \\brief   Functions that access the ITM debug interface.\n+  @{\n+ */\n+\n+extern volatile int32_t ITM_RxBuffer;                    /*!< External variable to receive characters.                         */\n+#define                 ITM_RXBUFFER_EMPTY    0x5AA55AA5 /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n+\n+\n+/** \\brief  ITM Send Character\n+\n+    The function transmits a character via the ITM channel 0, and\n+    \\li Just returns when no debugger is connected that has booked the output.\n+    \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n+\n+    \\param [in]     ch  Character to transmit.\n+\n+    \\returns            Character to transmit.\n+ */\n+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n+{\n+  if ((ITM->TCR & ITM_TCR_ITMENA_Msk)                  &&      /* ITM enabled */\n+      (ITM->TER & (1UL << 0)        )                    )     /* ITM Port #0 enabled */\n+  {\n+    while (ITM->PORT[0].u32 == 0);\n+    ITM->PORT[0].u8 = (uint8_t) ch;\n+  }\n+  return (ch);\n+}\n+\n+\n+/** \\brief  ITM Receive Character\n+\n+    The function inputs a character via the external variable \\ref ITM_RxBuffer.\n+\n+    \\return             Received character.\n+    \\return         -1  No character pending.\n+ */\n+__STATIC_INLINE int32_t ITM_ReceiveChar (void) {\n+  int32_t ch = -1;                           /* no character available */\n+\n+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {\n+    ch = ITM_RxBuffer;\n+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n+  }\n+\n+  return (ch);\n+}\n+\n+\n+/** \\brief  ITM Check Character\n+\n+    The function checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n+\n+    \\return          0  No character available.\n+    \\return          1  Character available.\n+ */\n+__STATIC_INLINE int32_t ITM_CheckChar (void) {\n+\n+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {\n+    return (0);                                 /* no character available */\n+  } else {\n+    return (1);                                 /*    character available */\n+  }\n+}\n+\n+/*@} end of CMSIS_core_DebugFunctions */\n+\n+#endif /* __CORE_CM4_H_DEPENDANT */\n+\n+#endif /* __CMSIS_GENERIC */\n+\n+#ifdef __cplusplus\n+}\n+#endif\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/core_cm4_simd.h ./lpc_chip_43xx/inc/core_cm4_simd.h\n--- a_8FkA5l/lpc_chip_43xx/inc/core_cm4_simd.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/core_cm4_simd.h\t2017-02-27 20:42:08.432009491 -0300\n@@ -0,0 +1,673 @@\n+/**************************************************************************//**\n+ * @file     core_cm4_simd.h\n+ * @brief    CMSIS Cortex-M4 SIMD Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifdef __cplusplus\n+ extern \"C\" {\n+#endif\n+\n+#ifndef __CORE_CM4_SIMD_H\n+#define __CORE_CM4_SIMD_H\n+\n+\n+/*******************************************************************************\n+ *                Hardware Abstraction Layer\n+ ******************************************************************************/\n+\n+\n+/* ###################  Compiler specific Intrinsics  ########################### */\n+/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n+  Access to dedicated SIMD instructions\n+  @{\n+*/\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#define __SADD8                           __sadd8\n+#define __QADD8                           __qadd8\n+#define __SHADD8                          __shadd8\n+#define __UADD8                           __uadd8\n+#define __UQADD8                          __uqadd8\n+#define __UHADD8                          __uhadd8\n+#define __SSUB8                           __ssub8\n+#define __QSUB8                           __qsub8\n+#define __SHSUB8                          __shsub8\n+#define __USUB8                           __usub8\n+#define __UQSUB8                          __uqsub8\n+#define __UHSUB8                          __uhsub8\n+#define __SADD16                          __sadd16\n+#define __QADD16                          __qadd16\n+#define __SHADD16                         __shadd16\n+#define __UADD16                          __uadd16\n+#define __UQADD16                         __uqadd16\n+#define __UHADD16                         __uhadd16\n+#define __SSUB16                          __ssub16\n+#define __QSUB16                          __qsub16\n+#define __SHSUB16                         __shsub16\n+#define __USUB16                          __usub16\n+#define __UQSUB16                         __uqsub16\n+#define __UHSUB16                         __uhsub16\n+#define __SASX                            __sasx\n+#define __QASX                            __qasx\n+#define __SHASX                           __shasx\n+#define __UASX                            __uasx\n+#define __UQASX                           __uqasx\n+#define __UHASX                           __uhasx\n+#define __SSAX                            __ssax\n+#define __QSAX                            __qsax\n+#define __SHSAX                           __shsax\n+#define __USAX                            __usax\n+#define __UQSAX                           __uqsax\n+#define __UHSAX                           __uhsax\n+#define __USAD8                           __usad8\n+#define __USADA8                          __usada8\n+#define __SSAT16                          __ssat16\n+#define __USAT16                          __usat16\n+#define __UXTB16                          __uxtb16\n+#define __UXTAB16                         __uxtab16\n+#define __SXTB16                          __sxtb16\n+#define __SXTAB16                         __sxtab16\n+#define __SMUAD                           __smuad\n+#define __SMUADX                          __smuadx\n+#define __SMLAD                           __smlad\n+#define __SMLADX                          __smladx\n+#define __SMLALD                          __smlald\n+#define __SMLALDX                         __smlaldx\n+#define __SMUSD                           __smusd\n+#define __SMUSDX                          __smusdx\n+#define __SMLSD                           __smlsd\n+#define __SMLSDX                          __smlsdx\n+#define __SMLSLD                          __smlsld\n+#define __SMLSLDX                         __smlsldx\n+#define __SEL                             __sel\n+#define __QADD                            __qadd\n+#define __QSUB                            __qsub\n+\n+#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n+                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n+\n+#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n+                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n+\n+#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \\\n+                                                      ((int64_t)(ARG3) << 32)      ) >> 32))\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#include <cmsis_iar.h>\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#include <cmsis_ccs.h>\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usad8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usada8 %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SSAT16(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"ssat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+#define __USAT16(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"usat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smuad %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smuadx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlad %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smladx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SMLALD(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+#define __SMLALDX(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smusd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smusdx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlsd %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlsdx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SMLSLD(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+#define __SMLSLDX(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sel %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+#define __PKHBT(ARG1,ARG2,ARG3) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n+  __ASM (\"pkhbt %0, %1, %2, lsl %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n+  __RES; \\\n+ })\n+\n+#define __PKHTB(ARG1,ARG2,ARG3) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n+  if (ARG3 == 0) \\\n+    __ASM (\"pkhtb %0, %1, %2\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2)  ); \\\n+  else \\\n+    __ASM (\"pkhtb %0, %1, %2, asr %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n+  __RES; \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n+{\n+ int32_t result;\n+\n+ __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n+ return(result);\n+}\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+/* not yet supported */\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+#endif\n+\n+/*@} end of group CMSIS_SIMD_intrinsics */\n+\n+\n+#endif /* __CORE_CM4_SIMD_H */\n+\n+#ifdef __cplusplus\n+}\n+#endif\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/core_cmFunc.h ./lpc_chip_43xx/inc/core_cmFunc.h\n--- a_8FkA5l/lpc_chip_43xx/inc/core_cmFunc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/core_cmFunc.h\t2017-02-27 20:42:08.436009491 -0300\n@@ -0,0 +1,636 @@\n+/**************************************************************************//**\n+ * @file     core_cmFunc.h\n+ * @brief    CMSIS Cortex-M Core Function Access Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifndef __CORE_CMFUNC_H\n+#define __CORE_CMFUNC_H\n+\n+\n+/* ###########################  Core Function Access  ########################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n+  @{\n+ */\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+#if (__ARMCC_VERSION < 400677)\n+  #error \"Please use ARM Compiler Toolchain V4.0.677 or later!\"\n+#endif\n+\n+/* intrinsic void __enable_irq();     */\n+/* intrinsic void __disable_irq();    */\n+\n+/** \\brief  Get Control Register\n+\n+    This function returns the content of the Control Register.\n+\n+    \\return               Control Register value\n+ */\n+__STATIC_INLINE uint32_t __get_CONTROL(void)\n+{\n+  register uint32_t __regControl         __ASM(\"control\");\n+  return(__regControl);\n+}\n+\n+\n+/** \\brief  Set Control Register\n+\n+    This function writes the given value to the Control Register.\n+\n+    \\param [in]    control  Control Register value to set\n+ */\n+__STATIC_INLINE void __set_CONTROL(uint32_t control)\n+{\n+  register uint32_t __regControl         __ASM(\"control\");\n+  __regControl = control;\n+}\n+\n+\n+/** \\brief  Get IPSR Register\n+\n+    This function returns the content of the IPSR Register.\n+\n+    \\return               IPSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_IPSR(void)\n+{\n+  register uint32_t __regIPSR          __ASM(\"ipsr\");\n+  return(__regIPSR);\n+}\n+\n+\n+/** \\brief  Get APSR Register\n+\n+    This function returns the content of the APSR Register.\n+\n+    \\return               APSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_APSR(void)\n+{\n+  register uint32_t __regAPSR          __ASM(\"apsr\");\n+  return(__regAPSR);\n+}\n+\n+\n+/** \\brief  Get xPSR Register\n+\n+    This function returns the content of the xPSR Register.\n+\n+    \\return               xPSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_xPSR(void)\n+{\n+  register uint32_t __regXPSR          __ASM(\"xpsr\");\n+  return(__regXPSR);\n+}\n+\n+\n+/** \\brief  Get Process Stack Pointer\n+\n+    This function returns the current value of the Process Stack Pointer (PSP).\n+\n+    \\return               PSP Register value\n+ */\n+__STATIC_INLINE uint32_t __get_PSP(void)\n+{\n+  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n+  return(__regProcessStackPointer);\n+}\n+\n+\n+/** \\brief  Set Process Stack Pointer\n+\n+    This function assigns the given value to the Process Stack Pointer (PSP).\n+\n+    \\param [in]    topOfProcStack  Process Stack Pointer value to set\n+ */\n+__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\n+{\n+  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n+  __regProcessStackPointer = topOfProcStack;\n+}\n+\n+\n+/** \\brief  Get Main Stack Pointer\n+\n+    This function returns the current value of the Main Stack Pointer (MSP).\n+\n+    \\return               MSP Register value\n+ */\n+__STATIC_INLINE uint32_t __get_MSP(void)\n+{\n+  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n+  return(__regMainStackPointer);\n+}\n+\n+\n+/** \\brief  Set Main Stack Pointer\n+\n+    This function assigns the given value to the Main Stack Pointer (MSP).\n+\n+    \\param [in]    topOfMainStack  Main Stack Pointer value to set\n+ */\n+__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\n+{\n+  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n+  __regMainStackPointer = topOfMainStack;\n+}\n+\n+\n+/** \\brief  Get Priority Mask\n+\n+    This function returns the current state of the priority mask bit from the Priority Mask Register.\n+\n+    \\return               Priority Mask value\n+ */\n+__STATIC_INLINE uint32_t __get_PRIMASK(void)\n+{\n+  register uint32_t __regPriMask         __ASM(\"primask\");\n+  return(__regPriMask);\n+}\n+\n+\n+/** \\brief  Set Priority Mask\n+\n+    This function assigns the given value to the Priority Mask Register.\n+\n+    \\param [in]    priMask  Priority Mask\n+ */\n+__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\n+{\n+  register uint32_t __regPriMask         __ASM(\"primask\");\n+  __regPriMask = (priMask);\n+}\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Enable FIQ\n+\n+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+#define __enable_fault_irq                __enable_fiq\n+\n+\n+/** \\brief  Disable FIQ\n+\n+    This function disables FIQ interrupts by setting the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+#define __disable_fault_irq               __disable_fiq\n+\n+\n+/** \\brief  Get Base Priority\n+\n+    This function returns the current value of the Base Priority register.\n+\n+    \\return               Base Priority register value\n+ */\n+__STATIC_INLINE uint32_t  __get_BASEPRI(void)\n+{\n+  register uint32_t __regBasePri         __ASM(\"basepri\");\n+  return(__regBasePri);\n+}\n+\n+\n+/** \\brief  Set Base Priority\n+\n+    This function assigns the given value to the Base Priority register.\n+\n+    \\param [in]    basePri  Base Priority value to set\n+ */\n+__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)\n+{\n+  register uint32_t __regBasePri         __ASM(\"basepri\");\n+  __regBasePri = (basePri & 0xff);\n+}\n+\n+\n+/** \\brief  Get Fault Mask\n+\n+    This function returns the current value of the Fault Mask register.\n+\n+    \\return               Fault Mask register value\n+ */\n+__STATIC_INLINE uint32_t __get_FAULTMASK(void)\n+{\n+  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n+  return(__regFaultMask);\n+}\n+\n+\n+/** \\brief  Set Fault Mask\n+\n+    This function assigns the given value to the Fault Mask register.\n+\n+    \\param [in]    faultMask  Fault Mask value to set\n+ */\n+__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\n+{\n+  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n+  __regFaultMask = (faultMask & (uint32_t)1);\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+#if       (__CORTEX_M == 0x04)\n+\n+/** \\brief  Get FPSCR\n+\n+    This function returns the current value of the Floating Point Status/Control register.\n+\n+    \\return               Floating Point Status/Control register value\n+ */\n+__STATIC_INLINE uint32_t __get_FPSCR(void)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  register uint32_t __regfpscr         __ASM(\"fpscr\");\n+  return(__regfpscr);\n+#else\n+   return(0);\n+#endif\n+}\n+\n+\n+/** \\brief  Set FPSCR\n+\n+    This function assigns the given value to the Floating Point Status/Control register.\n+\n+    \\param [in]    fpscr  Floating Point Status/Control value to set\n+ */\n+__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  register uint32_t __regfpscr         __ASM(\"fpscr\");\n+  __regfpscr = (fpscr);\n+#endif\n+}\n+\n+#endif /* (__CORTEX_M == 0x04) */\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+#include <cmsis_iar.h>\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+#include <cmsis_ccs.h>\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/** \\brief  Enable IRQ Interrupts\n+\n+  This function enables IRQ interrupts by clearing the I-bit in the CPSR.\n+  Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)\n+{\n+  __ASM volatile (\"cpsie i\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Disable IRQ Interrupts\n+\n+  This function disables IRQ interrupts by setting the I-bit in the CPSR.\n+  Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)\n+{\n+  __ASM volatile (\"cpsid i\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Control Register\n+\n+    This function returns the content of the Control Register.\n+\n+    \\return               Control Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Control Register\n+\n+    This function writes the given value to the Control Register.\n+\n+    \\param [in]    control  Control Register value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)\n+{\n+  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n+}\n+\n+\n+/** \\brief  Get IPSR Register\n+\n+    This function returns the content of the IPSR Register.\n+\n+    \\return               IPSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get APSR Register\n+\n+    This function returns the content of the APSR Register.\n+\n+    \\return               APSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get xPSR Register\n+\n+    This function returns the content of the xPSR Register.\n+\n+    \\return               xPSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get Process Stack Pointer\n+\n+    This function returns the current value of the Process Stack Pointer (PSP).\n+\n+    \\return               PSP Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)\n+{\n+  register uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, psp\\n\"  : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Process Stack Pointer\n+\n+    This function assigns the given value to the Process Stack Pointer (PSP).\n+\n+    \\param [in]    topOfProcStack  Process Stack Pointer value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\n+{\n+  __ASM volatile (\"MSR psp, %0\\n\" : : \"r\" (topOfProcStack) : \"sp\");\n+}\n+\n+\n+/** \\brief  Get Main Stack Pointer\n+\n+    This function returns the current value of the Main Stack Pointer (MSP).\n+\n+    \\return               MSP Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)\n+{\n+  register uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, msp\\n\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Main Stack Pointer\n+\n+    This function assigns the given value to the Main Stack Pointer (MSP).\n+\n+    \\param [in]    topOfMainStack  Main Stack Pointer value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\n+{\n+  __ASM volatile (\"MSR msp, %0\\n\" : : \"r\" (topOfMainStack) : \"sp\");\n+}\n+\n+\n+/** \\brief  Get Priority Mask\n+\n+    This function returns the current state of the priority mask bit from the Priority Mask Register.\n+\n+    \\return               Priority Mask value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Priority Mask\n+\n+    This function assigns the given value to the Priority Mask Register.\n+\n+    \\param [in]    priMask  Priority Mask\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\n+{\n+  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n+}\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Enable FIQ\n+\n+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)\n+{\n+  __ASM volatile (\"cpsie f\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Disable FIQ\n+\n+    This function disables FIQ interrupts by setting the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)\n+{\n+  __ASM volatile (\"cpsid f\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Base Priority\n+\n+    This function returns the current value of the Base Priority register.\n+\n+    \\return               Base Priority register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, basepri_max\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Base Priority\n+\n+    This function assigns the given value to the Base Priority register.\n+\n+    \\param [in]    basePri  Base Priority value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)\n+{\n+  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (value) : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Fault Mask\n+\n+    This function returns the current value of the Fault Mask register.\n+\n+    \\return               Fault Mask register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Fault Mask\n+\n+    This function assigns the given value to the Fault Mask register.\n+\n+    \\param [in]    faultMask  Fault Mask value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\n+{\n+  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+#if       (__CORTEX_M == 0x04)\n+\n+/** \\brief  Get FPSCR\n+\n+    This function returns the current value of the Floating Point Status/Control register.\n+\n+    \\return               Floating Point Status/Control register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  uint32_t result;\n+\n+  /* Empty asm statement works as a scheduling barrier */\n+  __ASM volatile (\"\");\n+  __ASM volatile (\"VMRS %0, fpscr\" : \"=r\" (result) );\n+  __ASM volatile (\"\");\n+  return(result);\n+#else\n+   return(0);\n+#endif\n+}\n+\n+\n+/** \\brief  Set FPSCR\n+\n+    This function assigns the given value to the Floating Point Status/Control register.\n+\n+    \\param [in]    fpscr  Floating Point Status/Control value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  /* Empty asm statement works as a scheduling barrier */\n+  __ASM volatile (\"\");\n+  __ASM volatile (\"VMSR fpscr, %0\" : : \"r\" (fpscr) : \"vfpcc\");\n+  __ASM volatile (\"\");\n+#endif\n+}\n+\n+#endif /* (__CORTEX_M == 0x04) */\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+/*\n+ * The CMSIS functions have been implemented as intrinsics in the compiler.\n+ * Please use \"carm -?i\" to get an up to date list of all instrinsics,\n+ * Including the CMSIS ones.\n+ */\n+\n+#endif\n+\n+/*@} end of CMSIS_Core_RegAccFunctions */\n+\n+\n+#endif /* __CORE_CMFUNC_H */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/core_cmInstr.h ./lpc_chip_43xx/inc/core_cmInstr.h\n--- a_8FkA5l/lpc_chip_43xx/inc/core_cmInstr.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/core_cmInstr.h\t2017-02-27 20:42:08.436009491 -0300\n@@ -0,0 +1,688 @@\n+/**************************************************************************//**\n+ * @file     core_cmInstr.h\n+ * @brief    CMSIS Cortex-M Core Instruction Access Header File\n+ * @version  V3.20\n+ * @date     05. March 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifndef __CORE_CMINSTR_H\n+#define __CORE_CMINSTR_H\n+\n+\n+/* ##########################  Core Instruction Access  ######################### */\n+/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n+  Access to dedicated instructions\n+  @{\n+*/\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+#if (__ARMCC_VERSION < 400677)\n+  #error \"Please use ARM Compiler Toolchain V4.0.677 or later!\"\n+#endif\n+\n+\n+/** \\brief  No Operation\n+\n+    No Operation does nothing. This instruction can be used for code alignment purposes.\n+ */\n+#define __NOP                             __nop\n+\n+\n+/** \\brief  Wait For Interrupt\n+\n+    Wait For Interrupt is a hint instruction that suspends execution\n+    until one of a number of events occurs.\n+ */\n+#define __WFI                             __wfi\n+\n+\n+/** \\brief  Wait For Event\n+\n+    Wait For Event is a hint instruction that permits the processor to enter\n+    a low-power state until one of a number of events occurs.\n+ */\n+#define __WFE                             __wfe\n+\n+\n+/** \\brief  Send Event\n+\n+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n+ */\n+#define __SEV                             __sev\n+\n+\n+/** \\brief  Instruction Synchronization Barrier\n+\n+    Instruction Synchronization Barrier flushes the pipeline in the processor,\n+    so that all instructions following the ISB are fetched from cache or\n+    memory, after the instruction has been completed.\n+ */\n+#define __ISB()                           __isb(0xF)\n+\n+\n+/** \\brief  Data Synchronization Barrier\n+\n+    This function acts as a special kind of Data Memory Barrier.\n+    It completes when all explicit memory accesses before this instruction complete.\n+ */\n+#define __DSB()                           __dsb(0xF)\n+\n+\n+/** \\brief  Data Memory Barrier\n+\n+    This function ensures the apparent order of the explicit memory operations before\n+    and after the instruction, without ensuring their completion.\n+ */\n+#define __DMB()                           __dmb(0xF)\n+\n+\n+/** \\brief  Reverse byte order (32 bit)\n+\n+    This function reverses the byte order in integer value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#define __REV                             __rev\n+\n+\n+/** \\brief  Reverse byte order (16 bit)\n+\n+    This function reverses the byte order in two unsigned short values.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#ifndef __NO_EMBEDDED_ASM\n+__attribute__((section(\".rev16_text\"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)\n+{\n+  rev16 r0, r0\n+  bx lr\n+}\n+#endif\n+\n+/** \\brief  Reverse byte order in signed short value\n+\n+    This function reverses the byte order in a signed short value with sign extension to integer.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#ifndef __NO_EMBEDDED_ASM\n+__attribute__((section(\".revsh_text\"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)\n+{\n+  revsh r0, r0\n+  bx lr\n+}\n+#endif\n+\n+\n+/** \\brief  Rotate Right in unsigned value (32 bit)\n+\n+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n+\n+    \\param [in]    value  Value to rotate\n+    \\param [in]    value  Number of Bits to rotate\n+    \\return               Rotated value\n+ */\n+#define __ROR                             __ror\n+\n+\n+/** \\brief  Breakpoint\n+\n+    This function causes the processor to enter Debug state.\n+    Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n+\n+    \\param [in]    value  is ignored by the processor.\n+                   If required, a debugger can use it to store additional information about the breakpoint.\n+ */\n+#define __BKPT(value)                       __breakpoint(value)\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Reverse bit order of value\n+\n+    This function reverses the bit order of the given value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#define __RBIT                            __rbit\n+\n+\n+/** \\brief  LDR Exclusive (8 bit)\n+\n+    This function performs a exclusive LDR command for 8 bit value.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return             value of type uint8_t at (*ptr)\n+ */\n+#define __LDREXB(ptr)                     ((uint8_t ) __ldrex(ptr))\n+\n+\n+/** \\brief  LDR Exclusive (16 bit)\n+\n+    This function performs a exclusive LDR command for 16 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint16_t at (*ptr)\n+ */\n+#define __LDREXH(ptr)                     ((uint16_t) __ldrex(ptr))\n+\n+\n+/** \\brief  LDR Exclusive (32 bit)\n+\n+    This function performs a exclusive LDR command for 32 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint32_t at (*ptr)\n+ */\n+#define __LDREXW(ptr)                     ((uint32_t ) __ldrex(ptr))\n+\n+\n+/** \\brief  STR Exclusive (8 bit)\n+\n+    This function performs a exclusive STR command for 8 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXB(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  STR Exclusive (16 bit)\n+\n+    This function performs a exclusive STR command for 16 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXH(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  STR Exclusive (32 bit)\n+\n+    This function performs a exclusive STR command for 32 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXW(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  Remove the exclusive lock\n+\n+    This function removes the exclusive lock which is created by LDREX.\n+\n+ */\n+#define __CLREX                           __clrex\n+\n+\n+/** \\brief  Signed Saturate\n+\n+    This function saturates a signed value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (1..32)\n+    \\return             Saturated value\n+ */\n+#define __SSAT                            __ssat\n+\n+\n+/** \\brief  Unsigned Saturate\n+\n+    This function saturates an unsigned value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (0..31)\n+    \\return             Saturated value\n+ */\n+#define __USAT                            __usat\n+\n+\n+/** \\brief  Count leading zeros\n+\n+    This function counts the number of leading zeros of a data value.\n+\n+    \\param [in]  value  Value to count the leading zeros\n+    \\return             number of leading zeros in value\n+ */\n+#define __CLZ                             __clz\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+#include <cmsis_iar.h>\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+#include <cmsis_ccs.h>\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/* Define macros for porting to both thumb1 and thumb2.\n+ * For thumb1, use low register (r0-r7), specified by constrant \"l\"\n+ * Otherwise, use general registers, specified by constrant \"r\" */\n+#if defined (__thumb__) && !defined (__thumb2__)\n+#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n+#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n+#else\n+#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n+#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n+#endif\n+\n+/** \\brief  No Operation\n+\n+    No Operation does nothing. This instruction can be used for code alignment purposes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void)\n+{\n+  __ASM volatile (\"nop\");\n+}\n+\n+\n+/** \\brief  Wait For Interrupt\n+\n+    Wait For Interrupt is a hint instruction that suspends execution\n+    until one of a number of events occurs.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void)\n+{\n+  __ASM volatile (\"wfi\");\n+}\n+\n+\n+/** \\brief  Wait For Event\n+\n+    Wait For Event is a hint instruction that permits the processor to enter\n+    a low-power state until one of a number of events occurs.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void)\n+{\n+  __ASM volatile (\"wfe\");\n+}\n+\n+\n+/** \\brief  Send Event\n+\n+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void)\n+{\n+  __ASM volatile (\"sev\");\n+}\n+\n+\n+/** \\brief  Instruction Synchronization Barrier\n+\n+    Instruction Synchronization Barrier flushes the pipeline in the processor,\n+    so that all instructions following the ISB are fetched from cache or\n+    memory, after the instruction has been completed.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void)\n+{\n+  __ASM volatile (\"isb\");\n+}\n+\n+\n+/** \\brief  Data Synchronization Barrier\n+\n+    This function acts as a special kind of Data Memory Barrier.\n+    It completes when all explicit memory accesses before this instruction complete.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void)\n+{\n+  __ASM volatile (\"dsb\");\n+}\n+\n+\n+/** \\brief  Data Memory Barrier\n+\n+    This function ensures the apparent order of the explicit memory operations before\n+    and after the instruction, without ensuring their completion.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void)\n+{\n+  __ASM volatile (\"dmb\");\n+}\n+\n+\n+/** \\brief  Reverse byte order (32 bit)\n+\n+    This function reverses the byte order in integer value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value)\n+{\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)\n+  return __builtin_bswap32(value);\n+#else\n+  uint32_t result;\n+\n+  __ASM volatile (\"rev %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+#endif\n+}\n+\n+\n+/** \\brief  Reverse byte order (16 bit)\n+\n+    This function reverses the byte order in two unsigned short values.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"rev16 %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Reverse byte order in signed short value\n+\n+    This function reverses the byte order in a signed short value with sign extension to integer.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value)\n+{\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+  return (short)__builtin_bswap16(value);\n+#else\n+  uint32_t result;\n+\n+  __ASM volatile (\"revsh %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+#endif\n+}\n+\n+\n+/** \\brief  Rotate Right in unsigned value (32 bit)\n+\n+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n+\n+    \\param [in]    value  Value to rotate\n+    \\param [in]    value  Number of Bits to rotate\n+    \\return               Rotated value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n+{\n+  return (op1 >> op2) | (op1 << (32 - op2));\n+}\n+\n+\n+/** \\brief  Breakpoint\n+\n+    This function causes the processor to enter Debug state.\n+    Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n+\n+    \\param [in]    value  is ignored by the processor.\n+                   If required, a debugger can use it to store additional information about the breakpoint.\n+ */\n+#define __BKPT(value)                       __ASM volatile (\"bkpt \"#value)\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Reverse bit order of value\n+\n+    This function reverses the bit order of the given value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value)\n+{\n+  uint32_t result;\n+\n+   __ASM volatile (\"rbit %0, %1\" : \"=r\" (result) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (8 bit)\n+\n+    This function performs a exclusive LDR command for 8 bit value.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return             value of type uint8_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)\n+{\n+    uint32_t result;\n+\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+   __ASM volatile (\"ldrexb %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+#else\n+    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n+       accepted by assembler. So has to use following less efficient pattern.\n+    */\n+   __ASM volatile (\"ldrexb %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n+#endif\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (16 bit)\n+\n+    This function performs a exclusive LDR command for 16 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint16_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)\n+{\n+    uint32_t result;\n+\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+   __ASM volatile (\"ldrexh %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+#else\n+    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n+       accepted by assembler. So has to use following less efficient pattern.\n+    */\n+   __ASM volatile (\"ldrexh %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n+#endif\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (32 bit)\n+\n+    This function performs a exclusive LDR command for 32 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint32_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)\n+{\n+    uint32_t result;\n+\n+   __ASM volatile (\"ldrex %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (8 bit)\n+\n+    This function performs a exclusive STR command for 8 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strexb %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (16 bit)\n+\n+    This function performs a exclusive STR command for 16 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strexh %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (32 bit)\n+\n+    This function performs a exclusive STR command for 32 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strex %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  Remove the exclusive lock\n+\n+    This function removes the exclusive lock which is created by LDREX.\n+\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)\n+{\n+  __ASM volatile (\"clrex\" ::: \"memory\");\n+}\n+\n+\n+/** \\brief  Signed Saturate\n+\n+    This function saturates a signed value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (1..32)\n+    \\return             Saturated value\n+ */\n+#define __SSAT(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"ssat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+\n+/** \\brief  Unsigned Saturate\n+\n+    This function saturates an unsigned value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (0..31)\n+    \\return             Saturated value\n+ */\n+#define __USAT(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"usat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+\n+/** \\brief  Count leading zeros\n+\n+    This function counts the number of leading zeros of a data value.\n+\n+    \\param [in]  value  Value to count the leading zeros\n+    \\return             number of leading zeros in value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value)\n+{\n+   uint32_t result;\n+\n+  __ASM volatile (\"clz %0, %1\" : \"=r\" (result) : \"r\" (value) );\n+  return(result);\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+/*\n+ * The CMSIS functions have been implemented as intrinsics in the compiler.\n+ * Please use \"carm -?i\" to get an up to date list of all intrinsics,\n+ * Including the CMSIS ones.\n+ */\n+\n+#endif\n+\n+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n+\n+#endif /* __CORE_CMINSTR_H */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/creg_18xx_43xx.h ./lpc_chip_43xx/inc/creg_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/creg_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/creg_18xx_43xx.h\t2017-02-27 20:42:08.436009491 -0300\n@@ -0,0 +1,238 @@\n+/*\n+ * @brief LPC18XX/43XX CREG control functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CREG_18XX_43XX_H_\n+#define __CREG_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CREG_18XX_43XX CHIP: LPC18xx/43xx CREG driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief CREG Register Block\n+ */\n+typedef struct {                       /*!< CREG Structure         */\n+   __I  uint32_t  RESERVED0;\n+   __IO uint32_t  CREG0;               /*!< Chip configuration register 32 kHz oscillator output and BOD control register. */\n+   __I  uint32_t  RESERVED1[62];\n+   __IO uint32_t  MXMEMMAP;            /*!< ARM Cortex-M3/M4 memory mapping */\n+#if defined(CHIP_LPC18XX)\n+   __I  uint32_t  RESERVED2[5];\n+#else\n+   __I  uint32_t  RESERVED2;\n+   __I  uint32_t  CREG1;               /*!< Configuration Register 1 */\n+   __I  uint32_t  CREG2;               /*!< Configuration Register 2 */\n+   __I  uint32_t  CREG3;               /*!< Configuration Register 3 */\n+   __I  uint32_t  CREG4;               /*!< Configuration Register 4 */\n+#endif\n+   __IO uint32_t  CREG5;               /*!< Chip configuration register 5. Controls JTAG access. */\n+   __IO uint32_t  DMAMUX;              /*!< DMA muxing control     */\n+   __IO uint32_t  FLASHCFGA;           /*!< Flash accelerator configuration register for flash bank A */\n+   __IO uint32_t  FLASHCFGB;           /*!< Flash accelerator configuration register for flash bank B */\n+   __IO uint32_t  ETBCFG;              /*!< ETB RAM configuration  */\n+   __IO uint32_t  CREG6;               /*!< Chip configuration register 6. */\n+#if defined(CHIP_LPC18XX)\n+   __I  uint32_t  RESERVED4[52];\n+#else\n+   __IO uint32_t  M4TXEVENT;           /*!< M4 IPC event register */\n+   __I  uint32_t  RESERVED4[51];\n+#endif\n+   __I  uint32_t  CHIPID;              /*!< Part ID                */\n+#if defined(CHIP_LPC18XX)\n+   __I  uint32_t  RESERVED5[191];\n+#else\n+   __I  uint32_t  RESERVED5[65];\n+   __IO uint32_t  M0SUBMEMMAP;         /*!< M0SUB IPC Event memory mapping */\n+   __I  uint32_t  RESERVED6[2];\n+   __IO uint32_t  M0SUBTXEVENT;        /*!< M0SUB IPC Event register */\n+   __I  uint32_t  RESERVED7[58];\n+   __IO uint32_t  M0APPTXEVENT;        /*!< M0APP IPC Event register */\n+   __IO uint32_t  M0APPMEMMAP;         /*!< ARM Cortex M0APP memory mapping */\n+   __I  uint32_t  RESERVED8[62];\n+#endif\n+   __IO uint32_t  USB0FLADJ;           /*!< USB0 frame length adjust register */\n+   __I  uint32_t  RESERVED9[63];\n+   __IO uint32_t  USB1FLADJ;           /*!< USB1 frame length adjust register */\n+} LPC_CREG_T;\n+\n+/**\n+ * @brief  Identifies whether on-chip flash is present\n+ * @return true if on chip flash is available, otherwise false\n+ */\n+STATIC INLINE uint32_t Chip_CREG_OnChipFlashIsPresent(void)\n+{\n+   return LPC_CREG->CHIPID != 0x3284E02B;\n+}\n+\n+/**\n+ * @brief  Configures the onboard Flash Accelerator in flash-based LPC18xx/LPC43xx parts.\n+ * @param  Hz  : Current frequency in Hz of the CPU\n+ * @return Nothing\n+ * This function should be called with the higher frequency before the clock frequency is\n+ * increased and it should be called with the new lower value after the clock frequency is\n+ * decreased.\n+ */\n+STATIC INLINE void Chip_CREG_SetFlashAcceleration(uint32_t Hz)\n+{\n+   uint32_t FAValue = Hz / 21510000;\n+\n+   LPC_CREG->FLASHCFGA = (LPC_CREG->FLASHCFGA & (~(0xF << 12))) | (FAValue << 12);\n+   LPC_CREG->FLASHCFGB = (LPC_CREG->FLASHCFGB & (~(0xF << 12))) | (FAValue << 12);\n+}\n+\n+/**\n+ * @brief FLASH Access time definitions\n+ */\n+typedef enum {\n+   FLASHTIM_20MHZ_CPU = 0,     /*!< Flash accesses use 1 CPU clocks. Use for up to 20 MHz CPU clock */\n+   FLASHTIM_40MHZ_CPU = 1,     /*!< Flash accesses use 2 CPU clocks. Use for up to 40 MHz CPU clock */\n+   FLASHTIM_60MHZ_CPU = 2,     /*!< Flash accesses use 3 CPU clocks. Use for up to 60 MHz CPU clock */\n+   FLASHTIM_80MHZ_CPU = 3,     /*!< Flash accesses use 4 CPU clocks. Use for up to 80 MHz CPU clock */\n+   FLASHTIM_100MHZ_CPU = 4,    /*!< Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock */\n+   FLASHTIM_120MHZ_CPU = 5,    /*!< Flash accesses use 6 CPU clocks. Use for up to 120 MHz CPU clock */\n+   FLASHTIM_150MHZ_CPU = 6,    /*!< Flash accesses use 7 CPU clocks. Use for up to 150 Mhz CPU clock */\n+   FLASHTIM_170MHZ_CPU = 7,        /*!< Flash accesses use 8 CPU clocks. Use for up to 170 MHz CPU clock */\n+   FLASHTIM_190MHZ_CPU = 8,        /*!< Flash accesses use 9 CPU clocks. Use for up to 190 MHz CPU clock */\n+   FLASHTIM_SAFE_SETTING = 9,      /*!< Flash accesses use 10 CPU clocks. Safe setting for any allowed conditions */\n+} CREG_FLASHTIM_T;\n+\n+/**\n+ * @brief  Set FLASH memory access time in clocks\n+ * @param  clks    : FLASH access speed rating\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_SetFLASHAccess(CREG_FLASHTIM_T clks)\n+{\n+   uint32_t tmpA, tmpB;\n+\n+   /* Don't alter lower bits */\n+   tmpA = LPC_CREG->FLASHCFGA & ~(0xF << 12);\n+   LPC_CREG->FLASHCFGA = tmpA | ((uint32_t) clks << 12);\n+   tmpB = LPC_CREG->FLASHCFGB & ~(0xF << 12);\n+   LPC_CREG->FLASHCFGB = tmpB | ((uint32_t) clks << 12);\n+}\n+\n+/**\n+ * @brief  Enables the USB0 high-speed PHY on LPC18xx/LPC43xx parts\n+ * @return Nothing\n+ * @note   The USB0 PLL & clock should be configured before calling this function. This function\n+ * should be called before the USB0 registers are accessed.\n+ */\n+STATIC INLINE void Chip_CREG_EnableUSB0Phy(void)\n+{\n+   LPC_CREG->CREG0 &= ~(1 << 5);\n+}\n+\n+/**\n+ * @brief  Disable the USB0 high-speed PHY on LPC18xx/LPC43xx parts\n+ * @return Nothing\n+ * @note   The USB0 PLL & clock should be configured before calling this function. This function\n+ * should be called before the USB0 registers are accessed.\n+ */\n+STATIC INLINE void Chip_CREG_DisableUSB0Phy(void)\n+{\n+   LPC_CREG->CREG0 |= (1 << 5);\n+}\n+\n+/**\n+ * @brief  Configures the BOD and Reset on LPC18xx/LPC43xx parts.\n+ * @param  BODVL   : Brown-Out Detect voltage level (0-3)\n+ * @param  BORVL   : Brown-Out Reset voltage level (0-3)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_ConfigureBODaR(uint32_t BODVL, uint32_t BORVL)\n+{\n+   LPC_CREG->CREG0 = (LPC_CREG->CREG0 & ~((3 << 8) | (3 << 10))) | (BODVL << 8) | (BORVL << 10);\n+}\n+\n+#if (defined(CHIP_LPC43XX) && defined(LPC_CREG))\n+/**\n+ * @brief  Configures base address of image to be run in the Cortex M0APP Core.\n+ * @param  memaddr : Address of the image (must be aligned to 4K)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_SetM0AppMemMap(uint32_t memaddr)\n+{\n+   LPC_CREG->M0APPMEMMAP = memaddr & ~0xFFF;\n+}\n+\n+/**\n+ * @brief  Configures base address of image to be run in the Cortex M0SUB Core.\n+ * @param  memaddr : Address of the image (must be aligned to 4K)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_SetM0SubMemMap(uint32_t memaddr)\n+{\n+   LPC_CREG->M0SUBMEMMAP = memaddr & ~0xFFF;\n+}\n+\n+/**\n+ * @brief  Clear M4 IPC Event\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_ClearM4Event(void)\n+{\n+   LPC_CREG->M4TXEVENT = 0;\n+}\n+\n+/**\n+ * @brief  Clear M0APP IPC Event\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_ClearM0AppEvent(void)\n+{\n+   LPC_CREG->M0APPTXEVENT = 0;\n+}\n+\n+/**\n+ * @brief  Clear M0APP IPC Event\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_ClearM0SubEvent(void)\n+{\n+   LPC_CREG->M0SUBTXEVENT = 0;\n+}\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CREG_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/dac_18xx_43xx.h ./lpc_chip_43xx/inc/dac_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/dac_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/dac_18xx_43xx.h\t2017-02-27 20:42:08.436009491 -0300\n@@ -0,0 +1,166 @@\n+/*\n+ * @brief LPC18xx/43xx D/A conversion driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __DAC_18XX_43XX_H_\n+#define __DAC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup DAC_18XX_43XX CHIP: LPC18xx/43xx D/A conversion driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief DAC register block structure\n+ */\n+typedef struct {           /*!< DAC Structure          */\n+   __IO uint32_t  CR;      /*!< DAC register. Holds the conversion data. */\n+   __IO uint32_t  CTRL;    /*!< DAC control register.  */\n+   __IO uint32_t  CNTVAL;  /*!< DAC counter value register. */\n+} LPC_DAC_T;\n+\n+/** After the selected settling time after this field is written with a\n+   new VALUE, the voltage on the AOUT pin (with respect to VSSA)\n+   is VALUE/1024 ? VREF */\n+#define DAC_VALUE(n)        ((uint32_t) ((n & 0x3FF) << 6))\n+/** If this bit = 0: The settling time of the DAC is 1 microsecond max,\n+ * and the maximum current is 700 microAmpere\n+ * If this bit = 1: The settling time of the DAC is 2.5 microsecond\n+ * and the maximum current is 350 microAmpere\n+ */\n+#define DAC_BIAS_EN         ((uint32_t) (1 << 16))\n+/** Value to reload interrupt DMA counter */\n+#define DAC_CCNT_VALUE(n)  ((uint32_t) (n & 0xffff))\n+\n+/** DCAR double buffering */\n+#define DAC_DBLBUF_ENA      ((uint32_t) (1 << 1))\n+/** DCAR Time out count enable */\n+#define DAC_CNT_ENA         ((uint32_t) (1 << 2))\n+/** DCAR DMA access */\n+#define DAC_DMA_ENA         ((uint32_t) (1 << 3))\n+/** DCAR DACCTRL mask bit */\n+#define DAC_DACCTRL_MASK    ((uint32_t) (0x0F))\n+\n+/**\n+ * @brief Current option in DAC configuration option\n+ */\n+typedef enum IP_DAC_CURRENT_OPT {\n+   DAC_MAX_UPDATE_RATE_1MHz = 0,   /*!< Shorter settling times and higher power consumption;\n+                                       allows for a maximum update rate of 1 MHz */\n+   DAC_MAX_UPDATE_RATE_400kHz      /*!< Longer settling times and lower power consumption;\n+                                       allows for a maximum update rate of 400 kHz */\n+} DAC_CURRENT_OPT_T;\n+\n+/**\n+ * @brief  Initial DAC configuration\n+ *              - Maximum  current is 700 uA\n+ *              - Value to AOUT is 0\n+ * @param  pDAC    : pointer to LPC_DAC_T\n+ * @return Nothing\n+ */\n+void Chip_DAC_Init(LPC_DAC_T *pDAC);\n+\n+/**\n+ * @brief  Shutdown DAC\n+ * @param  pDAC    : pointer to LPC_DAC_T\n+ * @return Nothing\n+ */\n+void Chip_DAC_DeInit(LPC_DAC_T *pDAC);\n+\n+/**\n+ * @brief  Update value to DAC buffer\n+ * @param  pDAC        : pointer to LPC_DAC_T\n+ * @param  dac_value   : value 10 bit to be converted to output\n+ * @return Nothing\n+ */\n+void Chip_DAC_UpdateValue(LPC_DAC_T *pDAC, uint32_t dac_value);\n+\n+/**\n+ * @brief  Set maximum update rate for DAC\n+ * @param  pDAC    : pointer to LPC_DAC_T\n+ * @param  bias    : Using Bias value, should be:\n+ *              - 0 is 1MHz\n+ *              - 1 is 400kHz\n+ * @return Nothing\n+ */\n+void Chip_DAC_SetBias(LPC_DAC_T *pDAC, uint32_t bias);\n+\n+/**\n+ * @brief  Enables the DMA operation and controls DMA timer\n+ * @param  pDAC        : pointer to LPC_DAC_T\n+ * @param  dacFlags    : An Or'ed value of the following DAC values:\n+ *                  - DAC_DBLBUF_ENA :enable/disable DACR double buffering feature\n+ *                  - DAC_CNT_ENA    :enable/disable timer out counter\n+ *                  - DAC_DMA_ENA    :enable/disable DMA access\n+ * @return Nothing\n+ * @note   Pass an Or'ed value of the DAC flags to enable those options.\n+ */\n+STATIC INLINE void Chip_DAC_ConfigDAConverterControl(LPC_DAC_T *pDAC, uint32_t dacFlags)\n+{\n+   uint32_t temp;\n+\n+   temp = pDAC->CTRL & ~DAC_DACCTRL_MASK;\n+   pDAC->CTRL = temp | dacFlags;\n+}\n+\n+/**\n+ * @brief  Set reload value for interrupt/DMA counter\n+ * @param  pDAC        : pointer to LPC_DAC_T\n+ * @param  time_out    : time out to reload for interrupt/DMA counter\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_DAC_SetDMATimeOut(LPC_DAC_T *pDAC, uint32_t time_out)\n+{\n+   pDAC->CNTVAL = DAC_CCNT_VALUE(time_out);\n+}\n+\n+/**\n+ * @brief  Get status for interrupt/DMA time out\n+ * @param  pDAC    : pointer to LPC_DAC_T\n+ * @return interrupt/DMA time out status, should be SET or RESET\n+ */\n+STATIC INLINE IntStatus Chip_DAC_GetIntStatus(LPC_DAC_T *pDAC)\n+{\n+   return (pDAC->CTRL & 0x01) ? SET : RESET;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __DAC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/eeprom_18xx_43xx.h ./lpc_chip_43xx/inc/eeprom_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/eeprom_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/eeprom_18xx_43xx.h\t2017-02-27 20:42:08.436009491 -0300\n@@ -0,0 +1,275 @@\n+/*\n+ * @brief LPC18xx/43xx EEPROM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef _EEPROM_18XX_43XX_H_\n+#define _EEPROM_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup EEPROM_18XX_43XX CHIP: LPC18xx/43xx EEPROM driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/* FIX ME: Move to chip.h */\n+/** EEPROM start address */\n+#define EEPROM_START                    (0x20040000)\n+/** EEPROM byes per page */\n+#define EEPROM_PAGE_SIZE                (128)\n+/**The number of EEPROM pages. The last page is not writable.*/\n+#define EEPROM_PAGE_NUM                 (128)\n+/** Get the eeprom address */\n+#define EEPROM_ADDRESS(page, offset)     (EEPROM_START + (EEPROM_PAGE_SIZE * (page)) + offset)\n+#define EEPROM_CLOCK_DIV                 1500000\n+#define EEPROM_READ_WAIT_STATE_VAL       0x58\n+#define EEPROM_WAIT_STATE_VAL            0x232\n+\n+/**\n+ * @brief EEPROM register block structure\n+ */\n+typedef struct {               /* EEPROM Structure */\n+   __IO uint32_t CMD;          /*!< EEPROM command register */\n+   uint32_t RESERVED0;\n+   __IO uint32_t RWSTATE;      /*!< EEPROM read wait state register */\n+   __IO uint32_t AUTOPROG;     /*!< EEPROM auto programming register */\n+   __IO uint32_t WSTATE;       /*!< EEPROM wait state register */\n+   __IO uint32_t CLKDIV;       /*!< EEPROM clock divider register */\n+   __IO uint32_t PWRDWN;       /*!< EEPROM power-down register */\n+   uint32_t RESERVED2[1007];\n+   __O  uint32_t INTENCLR;     /*!< EEPROM interrupt enable clear */\n+   __O  uint32_t INTENSET;     /*!< EEPROM interrupt enable set */\n+   __I  uint32_t INTSTAT;      /*!< EEPROM interrupt status */\n+   __I  uint32_t INTEN;        /*!< EEPROM interrupt enable */\n+   __O  uint32_t INTSTATCLR;   /*!< EEPROM interrupt status clear */\n+   __O  uint32_t INTSTATSET;   /*!< EEPROM interrupt status set */\n+} LPC_EEPROM_T;\n+\n+/*\n+ * @brief Macro defines for EEPROM command register\n+ */\n+#define EEPROM_CMD_ERASE_PRG_PAGE       (6)        /*!< EEPROM erase/program command */\n+\n+/*\n+ * @brief Macro defines for EEPROM Auto Programming register\n+ */\n+#define EEPROM_AUTOPROG_OFF     (0)        /*!<Auto programming off */\n+#define EEPROM_AUTOPROG_AFT_1WORDWRITTEN     (1)       /*!< Erase/program cycle is triggered after 1 word is written */\n+#define EEPROM_AUTOPROG_AFT_LASTWORDWRITTEN  (2)       /*!< Erase/program cycle is triggered after a write to AHB\n+                                                          address ending with ......1111100 (last word of a page) */\n+\n+/*\n+ * @brief Macro defines for EEPROM power down register\n+ */\n+#define EEPROM_PWRDWN                   (1 << 0)\n+\n+/*\n+ * @brief Macro defines for EEPROM interrupt related registers\n+ */\n+#define EEPROM_INT_ENDOFPROG            (1 << 2)\n+\n+/**\n+ * @brief  Put EEPROM device in power down mode\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_EnablePowerDown(LPC_EEPROM_T *pEEPROM)\n+{\n+   pEEPROM->PWRDWN = EEPROM_PWRDWN;\n+}\n+\n+/**\n+ * @brief  Bring EEPROM device out of power down mode\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_DisablePowerDown(LPC_EEPROM_T *pEEPROM)\n+{\n+   pEEPROM->PWRDWN = 0;\n+}\n+\n+/**\n+ * @brief  Initializes EEPROM\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+void Chip_EEPROM_Init(LPC_EEPROM_T *pEEPROM);\n+\n+/**\n+ * @brief  De-initializes EEPROM\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_DeInit(LPC_EEPROM_T *pEEPROM)\n+{\n+   /* Enable EEPROM power down mode */\n+   Chip_EEPROM_EnablePowerDown(pEEPROM);\n+}\n+\n+/**\n+ * @brief  Set Auto program mode\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mode    : Auto Program Mode (One of EEPROM_AUTOPROG_* value)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_SetAutoProg(LPC_EEPROM_T *pEEPROM, uint32_t mode)\n+{\n+   pEEPROM->AUTOPROG = mode;\n+}\n+\n+/**\n+ * @brief  Set EEPROM Read Wait State\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  ws      : Wait State value\n+ * @return Nothing\n+ * @note    Bits 7:0 represents wait state for Read Phase 2 and\n+ *          Bits 15:8 represents wait state for Read Phase1\n+ */\n+STATIC INLINE void Chip_EEPROM_SetReadWaitState(LPC_EEPROM_T *pEEPROM, uint32_t ws)\n+{\n+   pEEPROM->RWSTATE = ws;\n+}\n+\n+/**\n+ * @brief  Set EEPROM wait state\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  ws      : Wait State value\n+ * @return Nothing\n+ * @note    Bits 7:0 represents wait state for Phase 3,\n+ *          Bits 15:8 represents wait state for Phase2, and\n+ *          Bits 23:16 represents wait state for Phase1\n+ */\n+STATIC INLINE void Chip_EEPROM_SetWaitState(LPC_EEPROM_T *pEEPROM, uint32_t ws)\n+{\n+   pEEPROM->WSTATE = ws;\n+}\n+\n+/**\n+ * @brief  Select an EEPROM command\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  cmd     : EEPROM command\n+ * @return Nothing\n+ * @note   The cmd is OR-ed bits value of  EEPROM_CMD_*\n+ */\n+STATIC INLINE void Chip_EEPROM_SetCmd(LPC_EEPROM_T *pEEPROM, uint32_t cmd)\n+{\n+   pEEPROM->CMD = cmd;\n+}\n+\n+/**\n+ * @brief  Erase/Program an EEPROM page\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+void Chip_EEPROM_EraseProgramPage(LPC_EEPROM_T *pEEPROM);\n+\n+/**\n+ * @brief  Wait for interrupt occurs\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Expected interrupt\n+ * @return Nothing\n+ */\n+void Chip_EEPROM_WaitForIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask);\n+\n+/**\n+ * @brief  Enable EEPROM interrupt\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Interrupt mask (or-ed bits value of EEPROM_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_EnableInt(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   pEEPROM->INTENSET =  mask;\n+}\n+\n+/**\n+ * @brief  Disable EEPROM interrupt\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Interrupt mask (or-ed bits value of EEPROM_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_DisableInt(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   pEEPROM->INTENCLR =  mask;\n+}\n+\n+/**\n+ * @brief  Get the value of the EEPROM interrupt enable register\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return OR-ed bits value of EEPROM_INT_*\n+ */\n+STATIC INLINE uint32_t Chip_EEPROM_GetIntEnable(LPC_EEPROM_T *pEEPROM)\n+{\n+   return pEEPROM->INTEN;\n+}\n+\n+/**\n+ * @brief  Get EEPROM interrupt status\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return OR-ed bits value of EEPROM_INT_*\n+ */\n+STATIC INLINE uint32_t Chip_EEPROM_GetIntStatus(LPC_EEPROM_T *pEEPROM)\n+{\n+   return pEEPROM->INTSTAT;\n+}\n+\n+/**\n+ * @brief  Set EEPROM interrupt status\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Interrupt mask (or-ed bits value of EEPROM_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_SetIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   pEEPROM->INTSTATSET =  mask;\n+}\n+\n+/**\n+ * @brief  Clear EEPROM interrupt status\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Interrupt mask (or-ed bits value of EEPROM_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_ClearIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   pEEPROM->INTSTATCLR =  mask;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* _EEPROM_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/emc_18xx_43xx.h ./lpc_chip_43xx/inc/emc_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/emc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/emc_18xx_43xx.h\t2017-02-27 20:42:08.436009491 -0300\n@@ -0,0 +1,354 @@\n+/*\n+ * @brief LPC18xx/43xx EMC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __EMC_18XX_43XX_H_\n+#define __EMC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup EMC_18XX_43XX CHIP: LPC18xx/43xx External Memory Controller driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ * The EMC interface clocks must be enabled outside this driver prior to\n+ * calling any function of this driver.\n+ */\n+\n+/**\n+ * @brief External Memory Controller (EMC) register block structure\n+ */\n+typedef struct {                           /*!< EMC Structure          */\n+   __IO uint32_t  CONTROL;                 /*!< Controls operation of the memory controller. */\n+   __I  uint32_t  STATUS;                  /*!< Provides EMC status information. */\n+   __IO uint32_t  CONFIG;                  /*!< Configures operation of the memory controller. */\n+   __I  uint32_t  RESERVED0[5];\n+   __IO uint32_t  DYNAMICCONTROL;          /*!< Controls dynamic memory operation. */\n+   __IO uint32_t  DYNAMICREFRESH;          /*!< Configures dynamic memory refresh operation. */\n+   __IO uint32_t  DYNAMICREADCONFIG;       /*!< Configures the dynamic memory read strategy. */\n+   __I  uint32_t  RESERVED1;\n+   __IO uint32_t  DYNAMICRP;               /*!< Selects the precharge command period. */\n+   __IO uint32_t  DYNAMICRAS;              /*!< Selects the active to precharge command period. */\n+   __IO uint32_t  DYNAMICSREX;             /*!< Selects the self-refresh exit time. */\n+   __IO uint32_t  DYNAMICAPR;              /*!< Selects the last-data-out to active command time. */\n+   __IO uint32_t  DYNAMICDAL;              /*!< Selects the data-in to active command time. */\n+   __IO uint32_t  DYNAMICWR;               /*!< Selects the write recovery time. */\n+   __IO uint32_t  DYNAMICRC;               /*!< Selects the active to active command period. */\n+   __IO uint32_t  DYNAMICRFC;              /*!< Selects the auto-refresh period. */\n+   __IO uint32_t  DYNAMICXSR;              /*!< Selects the exit self-refresh to active command time. */\n+   __IO uint32_t  DYNAMICRRD;              /*!< Selects the active bank A to active bank B latency. */\n+   __IO uint32_t  DYNAMICMRD;              /*!< Selects the load mode register to active command time. */\n+   __I  uint32_t  RESERVED2[9];\n+   __IO uint32_t  STATICEXTENDEDWAIT;      /*!< Selects time for long static memory read and write transfers. */\n+   __I  uint32_t  RESERVED3[31];\n+   __IO uint32_t  DYNAMICCONFIG0;          /*!< Selects the configuration information for dynamic memory chip select n. */\n+   __IO uint32_t  DYNAMICRASCAS0;          /*!< Selects the RAS and CAS latencies for dynamic memory chip select n. */\n+   __I  uint32_t  RESERVED4[6];\n+   __IO uint32_t  DYNAMICCONFIG1;          /*!< Selects the configuration information for dynamic memory chip select n. */\n+   __IO uint32_t  DYNAMICRASCAS1;          /*!< Selects the RAS and CAS latencies for dynamic memory chip select n. */\n+   __I  uint32_t  RESERVED5[6];\n+   __IO uint32_t  DYNAMICCONFIG2;          /*!< Selects the configuration information for dynamic memory chip select n. */\n+   __IO uint32_t  DYNAMICRASCAS2;          /*!< Selects the RAS and CAS latencies for dynamic memory chip select n. */\n+   __I  uint32_t  RESERVED6[6];\n+   __IO uint32_t  DYNAMICCONFIG3;          /*!< Selects the configuration information for dynamic memory chip select n. */\n+   __IO uint32_t  DYNAMICRASCAS3;          /*!< Selects the RAS and CAS latencies for dynamic memory chip select n. */\n+   __I  uint32_t  RESERVED7[38];\n+   __IO uint32_t  STATICCONFIG0;           /*!< Selects the memory configuration for static chip select n. */\n+   __IO uint32_t  STATICWAITWEN0;          /*!< Selects the delay from chip select n to write enable. */\n+   __IO uint32_t  STATICWAITOEN0;          /*!< Selects the delay from chip select n or address change, whichever is later, to output enable. */\n+   __IO uint32_t  STATICWAITRD0;           /*!< Selects the delay from chip select n to a read access. */\n+   __IO uint32_t  STATICWAITPAG0;          /*!< Selects the delay for asynchronous page mode sequential accesses for chip select n. */\n+   __IO uint32_t  STATICWAITWR0;           /*!< Selects the delay from chip select n to a write access. */\n+   __IO uint32_t  STATICWAITTURN0;         /*!< Selects bus turnaround cycles */\n+   __I  uint32_t  RESERVED8;\n+   __IO uint32_t  STATICCONFIG1;           /*!< Selects the memory configuration for static chip select n. */\n+   __IO uint32_t  STATICWAITWEN1;          /*!< Selects the delay from chip select n to write enable. */\n+   __IO uint32_t  STATICWAITOEN1;          /*!< Selects the delay from chip select n or address change, whichever is later, to output enable. */\n+   __IO uint32_t  STATICWAITRD1;           /*!< Selects the delay from chip select n to a read access. */\n+   __IO uint32_t  STATICWAITPAG1;          /*!< Selects the delay for asynchronous page mode sequential accesses for chip select n. */\n+   __IO uint32_t  STATICWAITWR1;           /*!< Selects the delay from chip select n to a write access. */\n+   __IO uint32_t  STATICWAITTURN1;         /*!< Selects bus turnaround cycles */\n+   __I  uint32_t  RESERVED9;\n+   __IO uint32_t  STATICCONFIG2;           /*!< Selects the memory configuration for static chip select n. */\n+   __IO uint32_t  STATICWAITWEN2;          /*!< Selects the delay from chip select n to write enable. */\n+   __IO uint32_t  STATICWAITOEN2;          /*!< Selects the delay from chip select n or address change, whichever is later, to output enable. */\n+   __IO uint32_t  STATICWAITRD2;           /*!< Selects the delay from chip select n to a read access. */\n+   __IO uint32_t  STATICWAITPAG2;          /*!< Selects the delay for asynchronous page mode sequential accesses for chip select n. */\n+   __IO uint32_t  STATICWAITWR2;           /*!< Selects the delay from chip select n to a write access. */\n+   __IO uint32_t  STATICWAITTURN2;         /*!< Selects bus turnaround cycles */\n+   __I  uint32_t  RESERVED10;\n+   __IO uint32_t  STATICCONFIG3;           /*!< Selects the memory configuration for static chip select n. */\n+   __IO uint32_t  STATICWAITWEN3;          /*!< Selects the delay from chip select n to write enable. */\n+   __IO uint32_t  STATICWAITOEN3;          /*!< Selects the delay from chip select n or address change, whichever is later, to output enable. */\n+   __IO uint32_t  STATICWAITRD3;           /*!< Selects the delay from chip select n to a read access. */\n+   __IO uint32_t  STATICWAITPAG3;          /*!< Selects the delay for asynchronous page mode sequential accesses for chip select n. */\n+   __IO uint32_t  STATICWAITWR3;           /*!< Selects the delay from chip select n to a write access. */\n+   __IO uint32_t  STATICWAITTURN3;         /*!< Selects bus turnaround cycles */\n+} LPC_EMC_T;\n+\n+/**\n+ * Dynamic Chip Select Address\n+ */\n+#define EMC_ADDRESS_DYCS0   (0x28000000)\n+#define EMC_ADDRESS_DYCS1   (0x30000000)\n+#define EMC_ADDRESS_DYCS2   (0x60000000)\n+#define EMC_ADDRESS_DYCS3   (0x70000000)\n+\n+/**\n+ * Static Chip Select Address\n+ */\n+#define EMC_ADDRESS_CS0     (0x1C000000)\n+#define EMC_ADDRESS_CS1     (0x1D000000)\n+#define EMC_ADDRESS_CS2     (0x1E000000)\n+#define EMC_ADDRESS_CS3     (0x1F000000)\n+\n+/**\n+ * @brief EMC register support bitfields and mask\n+ */\n+/* Reserve for extending support to ARM9 or nextgen LPC */\n+#define EMC_SUPPORT_ONLY_PL172 /*!< Reserve for extending support to ARM9 or nextgen LPC */\n+\n+#define EMC_CONFIG_ENDIAN_LITTLE    (0)        /*!< Value for EMC to operate in Little Endian Mode */\n+#define EMC_CONFIG_ENDIAN_BIG         (1)  /*!< Value for EMC to operate in Big Endian Mode */\n+\n+#define EMC_CONFIG_BUFFER_ENABLE    (1 << 19)  /*!< EMC Buffer enable bit in EMC Dynamic Configuration register */\n+#define EMC_CONFIG_WRITE_PROTECT    (1 << 20)  /*!< EMC Write protect bit in EMC Dynamic Configuration register */\n+\n+/* Dynamic Memory Configuration Register Bit Definitions */\n+#define EMC_DYN_CONFIG_MD_BIT             (3)                              /*!< Memory device bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_MD_SDRAM         (0 << EMC_DYN_CONFIG_MD_BIT)       /*!< Select device as SDRAM in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_MD_LPSDRAM       (1 << EMC_DYN_CONFIG_MD_BIT)       /*!< Select device as LPSDRAM in EMC Dynamic Configuration register */\n+\n+#define EMC_DYN_CONFIG_LPSDRAM_BIT      (12)                           /*!< LPSDRAM bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_LPSDRAM          (1 << EMC_DYN_CONFIG_LPSDRAM_BIT)  /*!< LPSDRAM value in EMC Dynamic Configuration register */\n+\n+#define EMC_DYN_CONFIG_DEV_SIZE_BIT     (9)                                    /*!< Device Size starting bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_16Mb    (0x00 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 16Mb Device Size value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_64Mb    (0x01 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 64Mb Device Size value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_128Mb   (0x02 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 128Mb Device Size value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_256Mb   (0x03 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 256Mb Device Size value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_512Mb   (0x04 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 512Mb Device Size value in EMC Dynamic Configuration register */\n+\n+#define EMC_DYN_CONFIG_DEV_BUS_BIT      (7)                                    /*!< Device bus width starting bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_BUS_8        (0x00 << EMC_DYN_CONFIG_DEV_BUS_BIT)   /*!< Device 8-bit bus width value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_BUS_16       (0x01 << EMC_DYN_CONFIG_DEV_BUS_BIT)   /*!< Device 16-bit bus width value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_BUS_32       (0x02 << EMC_DYN_CONFIG_DEV_BUS_BIT)   /*!< Device 32-bit bus width value in EMC Dynamic Configuration register */\n+\n+#define EMC_DYN_CONFIG_DATA_BUS_WIDTH_BIT   (14)                                   /*!< Device data bus width starting bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DATA_BUS_16      (0x00 << EMC_DYN_CONFIG_DATA_BUS_WIDTH_BIT)    /*!< Device 16-bit data bus width value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DATA_BUS_32      (0x01 << EMC_DYN_CONFIG_DATA_BUS_WIDTH_BIT)    /*!< Device 32-bit bus width value in EMC Dynamic Configuration register */\n+\n+/*!< Memory configuration values in EMC Dynamic Configuration Register */\n+#define EMC_DYN_CONFIG_2Mx8_2BANKS_11ROWS_9COLS     ((0x0 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 2Mx8 2 Banks 11 Rows 9 Columns */\n+#define EMC_DYN_CONFIG_1Mx16_2BANKS_11ROWS_8COLS    ((0x0 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 1Mx16 2 Banks 11 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_8Mx8_4BANKS_12ROWS_9COLS     ((0x1 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 8Mx8 4 Banks 12 Rows 9 Columns */\n+#define EMC_DYN_CONFIG_4Mx16_4BANKS_12ROWS_8COLS    ((0x1 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 4Mx16 4 Banks 12 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_2Mx32_4BANKS_11ROWS_8COLS    ((0x1 << 9) | (0x2 << 7))  /*!< Value for Memory configuration - 2Mx32 4 Banks 11 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_16Mx8_4BANKS_12ROWS_10COLS   ((0x2 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 16Mx8 4 Banks 12 Rows 10 Columns */\n+#define EMC_DYN_CONFIG_8Mx16_4BANKS_12ROWS_9COLS    ((0x2 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 8Mx16 4 Banks 12 Rows 9 Columns */\n+#define EMC_DYN_CONFIG_4Mx32_4BANKS_12ROWS_8COLS    ((0x2 << 9) | (0x2 << 7))  /*!< Value for Memory configuration - 4Mx32 4 Banks 12 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_32Mx8_4BANKS_13ROWS_10COLS   ((0x3 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 32Mx8 4 Banks 13 Rows 10 Columns */\n+#define EMC_DYN_CONFIG_16Mx16_4BANKS_13ROWS_9COLS   ((0x3 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 16Mx16 4 Banks 13 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_8Mx32_4BANKS_13ROWS_8COLS    ((0x3 << 9) | (0x2 << 7))  /*!< Value for Memory configuration - 8Mx32 4 Banks 13 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_64Mx8_4BANKS_13ROWS_11COLS   ((0x4 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 64Mx8 4 Banks 13 Rows 11 Columns */\n+#define EMC_DYN_CONFIG_32Mx16_4BANKS_13ROWS_10COLS  ((0x4 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 32Mx16 4 Banks 13 Rows 10 Columns */\n+\n+/*!< Dynamic Memory Mode Register Bit Definition */\n+#define EMC_DYN_MODE_BURST_LEN_BIT      (0)    /*!< Starting bit No. of Burst Length in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_1        (0)    /*!< Value to set Burst Length to 1 in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_2        (1)    /*!< Value to set Burst Length to 2 in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_4        (2)    /*!< Value to set Burst Length to 4 in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_8        (3)    /*!< Value to set Burst Length to 8 in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_FULL     (7)    /*!< Value to set Burst Length to Full in Dynamic Memory Mode Register */\n+\n+#define EMC_DYN_MODE_BURST_TYPE_BIT         (3)                                    /*!< Burst Type bit in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_TYPE_SEQUENTIAL  (0 << EMC_DYN_MODE_BURST_TYPE_BIT) /*!< Burst Type Sequential in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_TYPE_INTERLEAVE  (1 << EMC_DYN_MODE_BURST_TYPE_BIT) /*!< Burst Type Interleaved in Dynamic Memory Mode Register */\n+\n+/*!< CAS Latency in Dynamic Mode Register */\n+#define EMC_DYN_MODE_CAS_BIT    (4)                            /*!< CAS latency starting bit in Dynamic Memory Mode register */\n+#define EMC_DYN_MODE_CAS_1      (1 << EMC_DYN_MODE_CAS_BIT)    /*!< value for CAS latency of 1 cycle */\n+#define EMC_DYN_MODE_CAS_2      (2 << EMC_DYN_MODE_CAS_BIT)    /*!< value for CAS latency of 2 cycle */\n+#define EMC_DYN_MODE_CAS_3      (3 << EMC_DYN_MODE_CAS_BIT)    /*!< value for CAS latency of 3 cycle */\n+\n+/*!< Operation Mode in Dynamic Mode register */\n+#define EMC_DYN_MODE_OPMODE_BIT           (7)                          /*!< Dynamic Mode Operation bit */\n+#define EMC_DYN_MODE_OPMODE_STANDARD    (0 << EMC_DYN_MODE_OPMODE_BIT) /*!< Value for Dynamic standard operation Mode */\n+\n+/*!< Write Burst Mode in Dynamic Mode register */\n+#define EMC_DYN_MODE_WBMODE_BIT             (9)                            /*!< Write Burst Mode bit */\n+#define EMC_DYN_MODE_WBMODE_PROGRAMMED  (0 << EMC_DYN_MODE_WBMODE_BIT) /*!< Write Burst Mode programmed */\n+#define EMC_DYN_MODE_WBMODE_SINGLE_LOC  (1 << EMC_DYN_MODE_WBMODE_BIT) /*!< Write Burst Mode Single LOC */\n+\n+/*!< Dynamic Memory Control Register Bit Definitions */\n+#define EMC_DYN_CONTROL_ENABLE          (0x03) /*!< Control Enable value */\n+\n+/*!< Static Memory Configuration Register Bit Definitions */\n+#define EMC_STATIC_CONFIG_MEM_WIDTH_8       (0)    /*!< Static Memory Configuration - 8-bit width */\n+#define EMC_STATIC_CONFIG_MEM_WIDTH_16      (1)    /*!< Static Memory Configuration - 16-bit width */\n+#define EMC_STATIC_CONFIG_MEM_WIDTH_32      (2)    /*!< Static Memory Configuration - 32-bit width */\n+\n+#define EMC_STATIC_CONFIG_PAGE_MODE_BIT         (3)                                        /*!< Page Mode bit No */\n+#define EMC_STATIC_CONFIG_PAGE_MODE_ENABLE      (1 << EMC_STATIC_CONFIG_PAGE_MODE_BIT) /*!< Value to enable Page Mode */\n+\n+#define EMC_STATIC_CONFIG_CS_POL_BIT            (6)                                    /*!< Chip Select bit No */\n+#define EMC_STATIC_CONFIG_CS_POL_ACTIVE_HIGH    (1 << EMC_STATIC_CONFIG_CS_POL_BIT)    /*!< Chip Select polarity - Active High */\n+#define EMC_STATIC_CONFIG_CS_POL_ACTIVE_LOW     (0 << EMC_STATIC_CONFIG_CS_POL_BIT)    /*!< Chip Select polarity - Active Low */\n+\n+#define EMC_STATIC_CONFIG_BLS_BIT           (7)                                /*!< BLS Configuration bit No */\n+#define EMC_STATIC_CONFIG_BLS_HIGH          (1 << EMC_STATIC_CONFIG_BLS_BIT)   /*!< BLS High Configuration value */\n+#define EMC_STATIC_CONFIG_BLS_LOW           (0 << EMC_STATIC_CONFIG_BLS_BIT)   /*!< BLS Low Configuration value */\n+\n+#define EMC_STATIC_CONFIG_EW_BIT            (8)                                /*!< Ext Wait bit No */\n+#define EMC_STATIC_CONFIG_EW_ENABLE         (1 << EMC_STATIC_CONFIG_EW_BIT)    /*!< Ext Wait Enabled value */\n+#define EMC_STATIC_CONFIG_EW_DISABLE        (0 << EMC_STATIC_CONFIG_EW_BIT)    /*!< Ext Wait Diabled value */\n+\n+/*!< Q24.8 Fixed Point Helper */\n+#define Q24_8_FP(x) ((x) * 256)\n+#define EMC_NANOSECOND(x)   Q24_8_FP(x)\n+#define EMC_CLOCK(x)        Q24_8_FP(-(x))\n+\n+/**\n+ * @brief  EMC Dynamic Device Configuration structure used for IP drivers\n+ */\n+typedef struct {\n+   uint32_t    BaseAddr;       /*!< Base Address */\n+   uint8_t     RAS;            /*!< RAS value */\n+   uint32_t    ModeRegister;   /*!< Mode Register value */\n+   uint32_t    DynConfig;      /*!< Dynamic Configuration value */\n+} IP_EMC_DYN_DEVICE_CONFIG_T;\n+\n+/**\n+ * @brief EMC Dynamic Configure Struct\n+ */\n+typedef struct {\n+   int32_t RefreshPeriod;                          /*!< Refresh period */\n+   uint32_t ReadConfig;                            /*!< Clock*/\n+   int32_t tRP;                                    /*!< Precharge Command Period */\n+   int32_t tRAS;                                   /*!< Active to Precharge Command Period */\n+   int32_t tSREX;                                  /*!< Self Refresh Exit Time */\n+   int32_t tAPR;                                   /*!< Last Data Out to Active Time */\n+   int32_t tDAL;                                   /*!< Data In to Active Command Time */\n+   int32_t tWR;                                    /*!< Write Recovery Time */\n+   int32_t tRC;                                    /*!< Active to Active Command Period */\n+   int32_t tRFC;                                   /*!< Auto-refresh Period */\n+   int32_t tXSR;                                   /*!< Exit Selt Refresh */\n+   int32_t tRRD;                                   /*!< Active Bank A to Active Bank B Time */\n+   int32_t tMRD;                                   /*!< Load Mode register command to Active Command */\n+   IP_EMC_DYN_DEVICE_CONFIG_T DevConfig[4];        /*!< Device Configuration array */\n+} IP_EMC_DYN_CONFIG_T;\n+\n+/**\n+ * @brief EMC Static Configure Structure\n+ */\n+typedef struct {\n+   uint8_t ChipSelect;     /*!< Chip select */\n+   uint32_t Config;        /*!< Configuration value */\n+   int32_t WaitWen;        /*!< Write Enable Wait */\n+   int32_t WaitOen;        /*!< Output Enable Wait */\n+   int32_t WaitRd;         /*!< Read Wait */\n+   int32_t WaitPage;       /*!< Page Access Wait */\n+   int32_t WaitWr;         /*!< Write Wait */\n+   int32_t WaitTurn;       /*!< Turn around wait */\n+} IP_EMC_STATIC_CONFIG_T;\n+\n+/**\n+ * @brief  Dyanmic memory setup\n+ * @param  Dynamic_Config  : Pointer to dynamic memory setup data\n+ * @return None\n+ */\n+void Chip_EMC_Dynamic_Init(IP_EMC_DYN_CONFIG_T *Dynamic_Config);\n+\n+/**\n+ * @brief  Static memory setup\n+ * @param  Static_Config   : Pointer to static memory setup data\n+ * @return None\n+ */\n+void Chip_EMC_Static_Init(IP_EMC_STATIC_CONFIG_T *Static_Config);\n+\n+/**\n+ * @brief  Enable Dynamic Memory Controller\n+ * @param  Enable  : 1 = Enable Dynamic Memory Controller, 0 = Disable\n+ * @return None\n+ */\n+void Chip_EMC_Dynamic_Enable(uint8_t Enable);\n+\n+/**\n+ * @brief  Mirror CS1 to CS0 and DYCS0\n+ * @param  Enable  : 1 = Mirror, 0 = Normal Memory Map\n+ * @return None\n+ */\n+void Chip_EMC_Mirror(uint8_t Enable);\n+\n+/**\n+ * @brief  Enable EMC\n+ * @param  Enable  : 1 = Enable, 0 = Disable\n+ * @return None\n+ */\n+void Chip_EMC_Enable(uint8_t Enable);\n+\n+/**\n+ * @brief  Set EMC LowPower Mode\n+ * @param  Enable  : 1 = Enable, 0 = Disable\n+ * @return None\n+ * @note   This function should only be called when the memory\n+ * controller is not busy (bit 0 of the status register is not set).\n+ */\n+void Chip_EMC_LowPowerMode(uint8_t Enable);\n+\n+/**\n+ * @brief  Initialize EMC\n+ * @param  Enable      : 1 = Enable, 0 = Disable\n+ * @param  ClockRatio  : clock out ratio, 0 = 1:1, 1 = 1:2\n+ * @param  EndianMode  : Endian Mode, 0 = Little, 1 = Big\n+ * @return None\n+ */\n+void Chip_EMC_Init(uint32_t Enable, uint32_t ClockRatio, uint32_t EndianMode);\n+\n+/**\n+ * @brief  Set Static Memory Extended Wait in Clock\n+ * @param  Wait16Clks  : Number of '16 clock' delay cycles\n+ * @return None\n+ */\n+STATIC INLINE void Chip_EMC_SetStaticExtendedWait(uint32_t Wait16Clks)\n+{\n+   LPC_EMC->STATICEXTENDEDWAIT = Wait16Clks;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __EMC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/enet_18xx_43xx.h ./lpc_chip_43xx/inc/enet_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/enet_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/enet_18xx_43xx.h\t2017-02-27 20:42:08.440009491 -0300\n@@ -0,0 +1,680 @@\n+/*\n+ * @brief LPC18xx/43xx Ethernet driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ENET_18XX_43XX_H_\n+#define __ENET_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ENET_18XX_43XX CHIP: LPC18xx/43xx Ethernet driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief 10/100 MII & RMII Ethernet with timestamping register block structure\n+ */\n+typedef struct {                           /*!< ETHERNET Structure */\n+   __IO uint32_t  MAC_CONFIG;              /*!< MAC configuration register */\n+   __IO uint32_t  MAC_FRAME_FILTER;        /*!< MAC frame filter */\n+   __IO uint32_t  MAC_HASHTABLE_HIGH;      /*!< Hash table high register */\n+   __IO uint32_t  MAC_HASHTABLE_LOW;       /*!< Hash table low register */\n+   __IO uint32_t  MAC_MII_ADDR;            /*!< MII address register */\n+   __IO uint32_t  MAC_MII_DATA;            /*!< MII data register */\n+   __IO uint32_t  MAC_FLOW_CTRL;           /*!< Flow control register */\n+   __IO uint32_t  MAC_VLAN_TAG;            /*!< VLAN tag register */\n+   __I  uint32_t  RESERVED0;\n+   __I  uint32_t  MAC_DEBUG;               /*!< Debug register */\n+   __IO uint32_t  MAC_RWAKE_FRFLT;         /*!< Remote wake-up frame filter */\n+   __IO uint32_t  MAC_PMT_CTRL_STAT;       /*!< PMT control and status */\n+   __I  uint32_t  RESERVED1[2];\n+   __I  uint32_t  MAC_INTR;                /*!< Interrupt status register */\n+   __IO uint32_t  MAC_INTR_MASK;           /*!< Interrupt mask register */\n+   __IO uint32_t  MAC_ADDR0_HIGH;          /*!< MAC address 0 high register */\n+   __IO uint32_t  MAC_ADDR0_LOW;           /*!< MAC address 0 low register */\n+   __I  uint32_t  RESERVED2[430];\n+   __IO uint32_t  MAC_TIMESTP_CTRL;        /*!< Time stamp control register */\n+   __IO uint32_t  SUBSECOND_INCR;          /*!< Sub-second increment register */\n+   __I  uint32_t  SECONDS;                 /*!< System time seconds register */\n+   __I  uint32_t  NANOSECONDS;             /*!< System time nanoseconds register */\n+   __IO uint32_t  SECONDSUPDATE;           /*!< System time seconds update register */\n+   __IO uint32_t  NANOSECONDSUPDATE;       /*!< System time nanoseconds update register */\n+   __IO uint32_t  ADDEND;                  /*!< Time stamp addend register */\n+   __IO uint32_t  TARGETSECONDS;           /*!< Target time seconds register */\n+   __IO uint32_t  TARGETNANOSECONDS;       /*!< Target time nanoseconds register */\n+   __IO uint32_t  HIGHWORD;                /*!< System time higher word seconds register */\n+   __I  uint32_t  TIMESTAMPSTAT;           /*!< Time stamp status register */\n+   __IO uint32_t  PPSCTRL;                 /*!< PPS control register */\n+   __I  uint32_t  AUXNANOSECONDS;          /*!< Auxiliary time stamp nanoseconds register */\n+   __I  uint32_t  AUXSECONDS;              /*!< Auxiliary time stamp seconds register */\n+   __I  uint32_t  RESERVED3[562];\n+   __IO uint32_t  DMA_BUS_MODE;            /*!< Bus Mode Register      */\n+   __IO uint32_t  DMA_TRANS_POLL_DEMAND;   /*!< Transmit poll demand register */\n+   __IO uint32_t  DMA_REC_POLL_DEMAND;     /*!< Receive poll demand register */\n+   __IO uint32_t  DMA_REC_DES_ADDR;        /*!< Receive descriptor list address register */\n+   __IO uint32_t  DMA_TRANS_DES_ADDR;      /*!< Transmit descriptor list address register */\n+   __IO uint32_t  DMA_STAT;                /*!< Status register */\n+   __IO uint32_t  DMA_OP_MODE;             /*!< Operation mode register */\n+   __IO uint32_t  DMA_INT_EN;              /*!< Interrupt enable register */\n+   __I  uint32_t  DMA_MFRM_BUFOF;          /*!< Missed frame and buffer overflow register */\n+   __IO uint32_t  DMA_REC_INT_WDT;         /*!< Receive interrupt watchdog timer register */\n+   __I  uint32_t  RESERVED4[8];\n+   __I  uint32_t  DMA_CURHOST_TRANS_DES;   /*!< Current host transmit descriptor register */\n+   __I  uint32_t  DMA_CURHOST_REC_DES;     /*!< Current host receive descriptor register */\n+   __I  uint32_t  DMA_CURHOST_TRANS_BUF;   /*!< Current host transmit buffer address register */\n+   __I  uint32_t  DMA_CURHOST_REC_BUF;     /*!< Current host receive buffer address register */\n+} LPC_ENET_T;\n+\n+/*\n+ * @brief MAC_CONFIG register bit defines\n+ */\n+#define MAC_CFG_RE     (1 << 2)        /*!< Receiver enable */\n+#define MAC_CFG_TE     (1 << 3)        /*!< Transmitter Enable */\n+#define MAC_CFG_DF     (1 << 4)        /*!< Deferral Check */\n+#define MAC_CFG_BL(n)  ((n) << 5)  /*!< Back-Off Limit */\n+#define MAC_CFG_ACS    (1 << 7)        /*!< Automatic Pad/CRC Stripping */\n+#define MAC_CFG_LUD    (1 << 8)        /*!< Link Up/Down, 1 = up */\n+#define MAC_CFG_DR     (1 << 9)        /*!< Disable Retry */\n+#define MAC_CFG_IPC    (1 << 10)   /*!< Checksum Offload */\n+#define MAC_CFG_DM     (1 << 11)   /*!< Duplex Mode, 1 = full, 0 = half */\n+#define MAC_CFG_LM     (1 << 12)   /*!< Loopback Mode */\n+#define MAC_CFG_DO     (1 << 13)   /*!< Disable Receive Own */\n+#define MAC_CFG_FES    (1 << 14)   /*!< Speed, 1 = 100Mbps, 0 = 10Mbos */\n+#define MAC_CFG_PS     (1 << 15)   /*!< Port select, must always be 1 */\n+#define MAC_CFG_DCRS   (1 << 16)   /*!< Disable carrier sense during transmission */\n+#define MAC_CFG_IFG(n) ((n) << 17) /*!< Inter-frame gap, 40..96, n incs by 8 */\n+#define MAC_CFG_JE     (1 << 20)   /*!< Jumbo Frame Enable */\n+#define MAC_CFG_JD     (1 << 22)   /*!< Jabber Disable */\n+#define MAC_CFG_WD     (1 << 23)   /*!< Watchdog Disable */\n+\n+/*\n+ * @brief MAC_FRAME_FILTER register bit defines\n+ */\n+#define MAC_FF_PR      (1 << 0)        /*!< Promiscuous Mode */\n+#define MAC_FF_DAIF    (1 << 3)        /*!< DA Inverse Filtering */\n+#define MAC_FF_PM      (1 << 4)        /*!< Pass All Multicast */\n+#define MAC_FF_DBF     (1 << 5)        /*!< Disable Broadcast Frames */\n+#define MAC_FF_PCF(n)  ((n) << 6)  /*!< Pass Control Frames, n = see user manual */\n+#define MAC_FF_SAIF    (1 << 8)        /*!< SA Inverse Filtering */\n+#define MAC_FF_SAF     (1 << 9)        /*!< Source Address Filter Enable */\n+#define MAC_FF_RA      (1UL << 31) /*!< Receive all */\n+\n+/*\n+ * @brief MAC_MII_ADDR register bit defines\n+ */\n+#define MAC_MIIA_GB    (1 << 0)        /*!< MII busy */\n+#define MAC_MIIA_W     (1 << 1)        /*!< MII write */\n+#define MAC_MIIA_CR(n) ((n) << 2)  /*!< CSR clock range, n = see manual */\n+#define MAC_MIIA_GR(n) ((n) << 6)  /*!< MII register. n = 0..31 */\n+#define MAC_MIIA_PA(n) ((n) << 11) /*!< Physical layer address, n = 0..31 */\n+\n+/*\n+ * @brief MAC_MII_DATA register bit defines\n+ */\n+#define MAC_MIID_GDMSK (0xFFFF)        /*!< MII data mask */\n+\n+/**\n+ * @brief MAC_FLOW_CONTROL register bit defines\n+ */\n+#define MAC_FC_FCB     (1 << 0)        /*!< Flow Control Busy/Backpressure Activate */\n+#define MAC_FC_TFE     (1 << 1)        /*!< Transmit Flow Control Enable */\n+#define MAC_FC_RFE     (1 << 2)        /*!< Receive Flow Control Enable */\n+#define MAC_FC_UP      (1 << 3)        /*!< Unicast Pause Frame Detect */\n+#define MAC_FC_PLT(n)  ((n) << 4)  /*!< Pause Low Threshold, n = see manual */\n+#define MAC_FC_DZPQ    (1 << 7)        /*!< Disable Zero-Quanta Pause */\n+#define MAC_FC_PT(n)   ((n) << 16) /*!< Pause time */\n+\n+/*\n+ * @brief MAC_VLAN_TAG register bit defines\n+ */\n+#define MAC_VT_VL(n)   ((n) << 0)  /*!< VLAN Tag Identifier for Receive Frames */\n+#define MAC_VT_ETC     (1 << 7)        /*!< Enable 12-Bit VLAN Tag Comparison */\n+\n+/*\n+ * @brief MAC_PMT_CTRL_STAT register bit defines\n+ */\n+#define MAC_PMT_PD     (1 << 0)        /*!< Power-down */\n+#define MAC_PMT_MPE    (1 << 1)        /*!< Magic packet enable */\n+#define MAC_PMT_WFE    (1 << 2)        /*!< Wake-up frame enable */\n+#define MAC_PMT_MPR    (1 << 5)        /*!< Magic Packet Received */\n+#define MAC_PMT_WFR    (1 << 6)        /*!< Wake-up Frame Received */\n+#define MAC_PMT_GU     (1 << 9)        /*!< Global Unicast */\n+#define MAC_PMT_WFFRPR (1UL << 31) /*!< Wake-up Frame Filter Register Pointer Reset */\n+\n+/*\n+ * @brief MAC_INTR_MASK register bit defines\n+ */\n+#define MAC_IM_PMT     (1 << 3)        /*!< PMT Interrupt Mask */\n+\n+/*\n+ * @brief MAC_ADDR0_HIGH register bit defines\n+ */\n+#define MAC_ADRH_MO    (1UL << 31) /*!< Always 1 when writing register */\n+\n+/*\n+ * @brief MAC_ADDR0_HIGH register bit defines\n+ */\n+#define MAC_ADRH_MO    (1UL << 31) /*!< Always 1 when writing register */\n+\n+/*\n+ * @brief MAC_TIMESTAMP register bit defines\n+ */\n+#define MAC_TS_TSENA   (1 << 0)        /*!< Time Stamp Enable */\n+#define MAC_TS_TSCFUP  (1 << 1)        /*!< Time Stamp Fine or Coarse Update */\n+#define MAC_TS_TSINIT  (1 << 2)        /*!< Time Stamp Initialize */\n+#define MAC_TS_TSUPDT  (1 << 3)        /*!< Time Stamp Update */\n+#define MAC_TS_TSTRIG  (1 << 4)        /*!< Time Stamp Interrupt Trigger Enable */\n+#define MAC_TS_TSADDR  (1 << 5)        /*!< Addend Reg Update */\n+#define MAC_TS_TSENAL  (1 << 8)        /*!< Enable Time Stamp for All Frames */\n+#define MAC_TS_TSCTRL  (1 << 9)        /*!< Time Stamp Digital or Binary rollover control */\n+#define MAC_TS_TSVER2  (1 << 10)   /*!< Enable PTP packet snooping for version 2 format */\n+#define MAC_TS_TSIPENA (1 << 11)   /*!< Enable Time Stamp Snapshot for PTP over Ethernet frames */\n+#define MAC_TS_TSIPV6E (1 << 12)   /*!< Enable Time Stamp Snapshot for IPv6 frames */\n+#define MAC_TS_TSIPV4E (1 << 13)   /*!< Enable Time Stamp Snapshot for IPv4 frames */\n+#define MAC_TS_TSEVNT  (1 << 14)   /*!< Enable Time Stamp Snapshot for Event Messages */\n+#define MAC_TS_TSMSTR  (1 << 15)   /*!< Enable Snapshot for Messages Relevant to Master */\n+#define MAC_TS_TSCLKT(n) ((n) << 16)   /*!< Select the type of clock node, n = see menual */\n+#define MAC_TS_TSENMA  (1 << 18)   /*!< Enable MAC address for PTP frame filtering */\n+\n+/*\n+ * @brief DMA_BUS_MODE register bit defines\n+ */\n+#define DMA_BM_SWR     (1 << 0)        /*!< Software reset */\n+#define DMA_BM_DA      (1 << 1)        /*!< DMA arbitration scheme, 1 = TX has priority over TX */\n+#define DMA_BM_DSL(n)  ((n) << 2)  /*!< Descriptor skip length, n = see manual */\n+#define DMA_BM_ATDS    (1 << 7)        /*!< Alternate (Enhanced) descriptor size */\n+#define DMA_BM_PBL(n)  ((n) << 8)  /*!< Programmable burst length, n = see manual */\n+#define DMA_BM_PR(n)   ((n) << 14) /*!< Rx-to-Tx priority ratio, n = see manual */\n+#define DMA_BM_FB      (1 << 16)   /*!< Fixed burst */\n+#define DMA_BM_RPBL(n) ((n) << 17) /*!< RxDMA PBL, n = see manual */\n+#define DMA_BM_USP     (1 << 23)   /*!< Use separate PBL */\n+#define DMA_BM_PBL8X   (1 << 24)   /*!< 8 x PBL mode */\n+#define DMA_BM_AAL     (1 << 25)   /*!< Address-aligned beats */\n+#define DMA_BM_MB      (1 << 26)   /*!< Mixed burst */\n+#define DMA_BM_TXPR    (1 << 27)   /*!< Transmit DMA has higher priority than receive DMA */\n+\n+/*\n+ * @brief DMA_STAT register bit defines\n+ */\n+#define DMA_ST_TI      (1 << 0)        /*!< Transmit interrupt */\n+#define DMA_ST_TPS     (1 << 1)        /*!< Transmit process stopped */\n+#define DMA_ST_TU      (1 << 2)        /*!< Transmit buffer unavailable */\n+#define DMA_ST_TJT     (1 << 3)        /*!< Transmit jabber timeout */\n+#define DMA_ST_OVF     (1 << 4)        /*!< Receive overflow */\n+#define DMA_ST_UNF     (1 << 5)        /*!< Transmit underflow */\n+#define DMA_ST_RI      (1 << 6)        /*!< Receive interrupt */\n+#define DMA_ST_RU      (1 << 7)        /*!< Receive buffer unavailable */\n+#define DMA_ST_RPS     (1 << 8)        /*!< Received process stopped */\n+#define DMA_ST_RWT     (1 << 9)        /*!< Receive watchdog timeout */\n+#define DMA_ST_ETI     (1 << 10)   /*!< Early transmit interrupt */\n+#define DMA_ST_FBI     (1 << 13)   /*!< Fatal bus error interrupt */\n+#define DMA_ST_ERI     (1 << 14)   /*!< Early receive interrupt */\n+#define DMA_ST_AIE     (1 << 15)   /*!< Abnormal interrupt summary */\n+#define DMA_ST_NIS     (1 << 16)   /*!< Normal interrupt summary */\n+#define DMA_ST_ALL     (0x1E7FF)   /*!< All interrupts */\n+\n+/*\n+ * @brief DMA_OP_MODE register bit defines\n+ */\n+#define DMA_OM_SR      (1 << 1)        /*!< Start/stop receive */\n+#define DMA_OM_OSF     (1 << 2)        /*!< Operate on second frame */\n+#define DMA_OM_RTC(n)  ((n) << 3)  /*!< Receive threshold control, n = see manual */\n+#define DMA_OM_FUF     (1 << 6)        /*!< Forward undersized good frames */\n+#define DMA_OM_FEF     (1 << 7)        /*!< Forward error frames */\n+#define DMA_OM_ST      (1 << 13)   /*!< Start/Stop Transmission Command */\n+#define DMA_OM_TTC(n)  ((n) << 14) /*!< Transmit threshold control, n = see manual */\n+#define DMA_OM_FTF     (1 << 20)   /*!< Flush transmit FIFO */\n+#define DMA_OM_TSF     (1 << 21)   /*!< Transmit store and forward */\n+#define DMA_OM_DFF     (1 << 24)   /*!< Disable flushing of received frames */\n+#define DMA_OM_RSF     (1 << 25)   /*!< Receive store and forward */\n+#define DMA_OM_DT      (1 << 26)   /*!< Disable Dropping of TCP/IP Checksum Error Frames */\n+\n+/*\n+ * @brief DMA_INT_EN register bit defines\n+ */\n+#define DMA_IE_TIE     (1 << 0)        /*!< Transmit interrupt enable */\n+#define DMA_IE_TSE     (1 << 1)        /*!< Transmit stopped enable */\n+#define DMA_IE_TUE     (1 << 2)        /*!< Transmit buffer unavailable enable */\n+#define DMA_IE_TJE     (1 << 3)        /*!< Transmit jabber timeout enable */\n+#define DMA_IE_OVE     (1 << 4)        /*!< Overflow interrupt enable */\n+#define DMA_IE_UNE     (1 << 5)        /*!< Underflow interrupt enable */\n+#define DMA_IE_RIE     (1 << 6)        /*!< Receive interrupt enable */\n+#define DMA_IE_RUE     (1 << 7)        /*!< Receive buffer unavailable enable */\n+#define DMA_IE_RSE     (1 << 8)        /*!< Received stopped enable */\n+#define DMA_IE_RWE     (1 << 9)        /*!< Receive watchdog timeout enable */\n+#define DMA_IE_ETE     (1 << 10)   /*!< Early transmit interrupt enable */\n+#define DMA_IE_FBE     (1 << 13)   /*!< Fatal bus error enable */\n+#define DMA_IE_ERE     (1 << 14)   /*!< Early receive interrupt enable */\n+#define DMA_IE_AIE     (1 << 15)   /*!< Abnormal interrupt summary enable */\n+#define DMA_IE_NIE     (1 << 16)   /*!< Normal interrupt summary enable */\n+\n+/*\n+ * @brief DMA_MFRM_BUFOF register bit defines\n+ */\n+#define DMA_MFRM_FMCMSK (0xFFFF)   /*!< Number of frames missed mask */\n+#define DMA_MFRM_OC    (1 << 16)   /*!< Overflow bit for missed frame counter */\n+#define DMA_MFRM_FMA(n) (((n) & 0x0FFE0000) >> 17) /*!< Number of frames missed by the application mask/shift */\n+#define DMA_MFRM_OF    (1 << 28)   /*!< Overflow bit for FIFO overflow counter */\n+\n+/*\n+ * @brief Common TRAN_DESC_T and TRAN_DESC_ENH_T CTRLSTAT field bit defines\n+ */\n+#define TDES_DB        (1 << 0)        /*!< Deferred Bit */\n+#define TDES_UF        (1 << 1)        /*!< Underflow Error */\n+#define TDES_ED        (1 << 2)        /*!< Excessive Deferral */\n+#define TDES_CCMSK(n)  (((n) & 0x000000F0) >> 3)/*!< CC: Collision Count (Status field) mask and shift */\n+#define TDES_VF        (1 << 7)        /*!< VLAN Frame */\n+#define TDES_EC        (1 << 8)        /*!< Excessive Collision */\n+#define TDES_LC        (1 << 9)        /*!< Late Collision */\n+#define TDES_NC        (1 << 10)   /*!< No Carrier */\n+#define TDES_LCAR      (1 << 11)   /*!< Loss of Carrier */\n+#define TDES_IPE       (1 << 12)   /*!< IP Payload Error */\n+#define TDES_FF        (1 << 13)   /*!< Frame Flushed */\n+#define TDES_JT        (1 << 14)   /*!< Jabber Timeout */\n+#define TDES_ES        (1 << 15)   /*!< Error Summary */\n+#define TDES_IHE       (1 << 16)   /*!< IP Header Error */\n+#define TDES_TTSS      (1 << 17)   /*!< Transmit Timestamp Status */\n+#define TDES_OWN       (1UL << 31) /*!< Own Bit */\n+\n+/*\n+ * @brief TRAN_DESC_ENH_T only CTRLSTAT field bit defines\n+ */\n+#define TDES_ENH_IC   (1UL << 30)  /*!< Interrupt on Completion, enhanced descriptor */\n+#define TDES_ENH_LS   (1 << 29)        /*!< Last Segment, enhanced descriptor */\n+#define TDES_ENH_FS   (1 << 28)        /*!< First Segment, enhanced descriptor */\n+#define TDES_ENH_DC   (1 << 27)        /*!< Disable CRC, enhanced descriptor */\n+#define TDES_ENH_DP   (1 << 26)        /*!< Disable Pad, enhanced descriptor */\n+#define TDES_ENH_TTSE (1 << 25)        /*!< Transmit Timestamp Enable, enhanced descriptor */\n+#define TDES_ENH_CIC(n) ((n) << 22)    /*!< Checksum Insertion Control, enhanced descriptor */\n+#define TDES_ENH_TER  (1 << 21)        /*!< Transmit End of Ring, enhanced descriptor */\n+#define TDES_ENH_TCH  (1 << 20)        /*!< Second Address Chained, enhanced descriptor */\n+\n+/*\n+ * @brief TRAN_DESC_T only BSIZE field bit defines\n+ */\n+#define TDES_NORM_IC   (1UL << 31) /*!< Interrupt on Completion, normal descriptor */\n+#define TDES_NORM_FS   (1 << 30)   /*!< First Segment, normal descriptor */\n+#define TDES_NORM_LS   (1 << 29)   /*!< Last Segment, normal descriptor */\n+#define TDES_NORM_CIC(n) ((n) << 27)   /*!< Checksum Insertion Control, normal descriptor */\n+#define TDES_NORM_DC   (1 << 26)   /*!< Disable CRC, normal descriptor */\n+#define TDES_NORM_TER  (1 << 25)   /*!< Transmit End of Ring, normal descriptor */\n+#define TDES_NORM_TCH  (1 << 24)   /*!< Second Address Chained, normal descriptor */\n+#define TDES_NORM_DP   (1 << 23)   /*!< Disable Pad, normal descriptor */\n+#define TDES_NORM_TTSE (1 << 22)   /*!< Transmit Timestamp Enable, normal descriptor */\n+#define TDES_NORM_BS2(n) (((n) & 0x3FF) << 11) /*!< Buffer 2 size, normal descriptor */\n+#define TDES_NORM_BS1(n) (((n) & 0x3FF) << 0)  /*!< Buffer 1 size, normal descriptor */\n+\n+/*\n+ * @brief TRAN_DESC_ENH_T only BSIZE field bit defines\n+ */\n+#define TDES_ENH_BS2(n) (((n) & 0xFFF) << 16)  /*!< Buffer 2 size, enhanced descriptor */\n+#define TDES_ENH_BS1(n) (((n) & 0xFFF) << 0)   /*!< Buffer 1 size, enhanced descriptor */\n+\n+/*\n+ * @brief Common REC_DESC_T and REC_DESC_ENH_T STATUS field bit defines\n+ */\n+#define RDES_ESA      (1 << 0)     /*!< Extended Status Available/Rx MAC Address */\n+#define RDES_CE       (1 << 1)     /*!< CRC Error */\n+#define RDES_DRE      (1 << 2)     /*!< Dribble Bit Error */\n+#define RDES_RE       (1 << 3)     /*!< Receive Error */\n+#define RDES_RWT      (1 << 4)     /*!< Receive Watchdog Timeout */\n+#define RDES_FT       (1 << 5)     /*!< Frame Type */\n+#define RDES_LC       (1 << 6)     /*!< Late Collision */\n+#define RDES_TSA      (1 << 7)     /*!< Timestamp Available/IP Checksum Error (Type1) /Giant Frame */\n+#define RDES_LS       (1 << 8)     /*!< Last Descriptor */\n+#define RDES_FS       (1 << 9)     /*!< First Descriptor */\n+#define RDES_VLAN     (1 << 10)        /*!< VLAN Tag */\n+#define RDES_OE       (1 << 11)        /*!< Overflow Error */\n+#define RDES_LE       (1 << 12)        /*!< Length Error */\n+#define RDES_SAF      (1 << 13)        /*!< Source Address Filter Fail */\n+#define RDES_DE       (1 << 14)        /*!< Descriptor Error */\n+#define RDES_ES       (1 << 15)        /*!< ES: Error Summary */\n+#define RDES_FLMSK(n) (((n) & 0x3FFF0000) >> 16)/*!< Frame Length mask and shift */\n+#define RDES_AFM      (1 << 30)        /*!< Destination Address Filter Fail */\n+#define RDES_OWN      (1UL << 31)  /*!< Own Bit */\n+\n+/*\n+ * @brief Common REC_DESC_T and REC_DESC_ENH_T CTRL field bit defines\n+ */\n+#define RDES_DINT     (1UL << 31)  /*!< Disable interrupt on completion */\n+\n+/*\n+ * @brief REC_DESC_T pnly CTRL field bit defines\n+ */\n+#define RDES_NORM_RER (1 << 25)        /*!< Receive End of Ring, normal descriptor */\n+#define RDES_NORM_RCH (1 << 24)        /*!< Second Address Chained, normal descriptor */\n+#define RDES_NORM_BS2(n) (((n) & 0x3FF) << 11) /*!< Buffer 2 size, normal descriptor */\n+#define RDES_NORM_BS1(n) (((n) & 0x3FF) << 0)  /*!< Buffer 1 size, normal descriptor */\n+\n+/**\n+ * @brief REC_DESC_ENH_T only CTRL field bit defines\n+ */\n+#define RDES_ENH_RER  (1 << 15)        /*!< Receive End of Ring, enhanced descriptor */\n+#define RDES_ENH_RCH  (1 << 14)        /*!< Second Address Chained, enhanced descriptor */\n+#define RDES_ENH_BS2(n) (((n) & 0xFFF) << 16)  /*!< Buffer 2 size, enhanced descriptor */\n+#define RDES_ENH_BS1(n) (((n) & 0xFFF) << 0)   /*!< Buffer 1 size, enhanced descriptor */\n+\n+/*\n+ * @brief REC_DESC_ENH_T only EXTSTAT field bit defines\n+ */\n+#define RDES_ENH_IPPL(n)  (((n) & 0x7) >> 2)   /*!< IP Payload Type mask and shift, enhanced descripto */\n+#define RDES_ENH_IPHE     (1 << 3) /*!< IP Header Error, enhanced descripto */\n+#define RDES_ENH_IPPLE    (1 << 4) /*!< IP Payload Error, enhanced descripto */\n+#define RDES_ENH_IPCSB    (1 << 5) /*!< IP Checksum Bypassed, enhanced descripto */\n+#define RDES_ENH_IPV4     (1 << 6) /*!< IPv4 Packet Received, enhanced descripto */\n+#define RDES_ENH_IPV6     (1 << 7) /*!< IPv6 Packet Received, enhanced descripto */\n+#define RDES_ENH_MTMSK(n) (((n) & 0xF) >> 8)   /*!< Message Type mask and shift, enhanced descripto */\n+\n+/*\n+ * @brief Maximum size of an ethernet buffer\n+ */\n+#define EMAC_ETH_MAX_FLEN (1536)\n+\n+/**\n+ * @brief Structure of a transmit descriptor (without timestamp)\n+ */\n+typedef struct {\n+   __IO uint32_t CTRLSTAT;     /*!< TDES control and status word */\n+   __IO uint32_t BSIZE;        /*!< Buffer 1/2 byte counts */\n+   __IO uint32_t B1ADD;        /*!< Buffer 1 address */\n+   __IO uint32_t B2ADD;        /*!< Buffer 2 or next descriptor address */\n+} ENET_TXDESC_T;\n+\n+/**\n+ * @brief Structure of a enhanced transmit descriptor (with timestamp)\n+ */\n+typedef struct {\n+   __IO uint32_t CTRLSTAT;     /*!< TDES control and status word */\n+   __IO uint32_t BSIZE;        /*!< Buffer 1/2 byte counts */\n+   __IO uint32_t B1ADD;        /*!< Buffer 1 address */\n+   __IO uint32_t B2ADD;        /*!< Buffer 2 or next descriptor address */\n+   __IO uint32_t TDES4;        /*!< Reserved */\n+   __IO uint32_t TDES5;        /*!< Reserved */\n+   __IO uint32_t TTSL;         /*!< Timestamp value low */\n+   __IO uint32_t TTSH;         /*!< Timestamp value high */\n+} ENET_ENHTXDESC_T;\n+\n+/**\n+ * @brief Structure of a receive descriptor (without timestamp)\n+ */\n+typedef struct {\n+   __IO uint32_t STATUS;       /*!< RDES status word */\n+   __IO uint32_t CTRL;         /*!< Buffer 1/2 byte counts and control */\n+   __IO uint32_t B1ADD;        /*!< Buffer 1 address */\n+   __IO uint32_t B2ADD;        /*!< Buffer 2 or next descriptor address */\n+} ENET_RXDESC_T;\n+\n+/**\n+ * @brief Structure of a enhanced receive descriptor (with timestamp)\n+ */\n+typedef struct {\n+   __IO uint32_t STATUS;       /*!< RDES status word */\n+   __IO uint32_t CTRL;         /*!< Buffer 1/2 byte counts */\n+   __IO uint32_t B1ADD;        /*!< Buffer 1 address */\n+   __IO uint32_t B2ADD;        /*!< Buffer 2 or next descriptor address */\n+   __IO uint32_t EXTSTAT;      /*!< Extended Status */\n+   __IO uint32_t RDES5;        /*!< Reserved */\n+   __IO uint32_t RTSL;         /*!< Timestamp value low */\n+   __IO uint32_t RTSH;         /*!< Timestamp value high */\n+} ENET_ENHRXDESC_T;\n+\n+/**\n+ * @brief  Resets the ethernet interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ * @note   Resets the ethernet interface. This should be called prior to\n+ * Chip_ENET_Init with a small delay after this call.\n+ */\n+STATIC INLINE void Chip_ENET_Reset(LPC_ENET_T *pENET)\n+{\n+   /* This should be called prior to IP_ENET_Init. The MAC controller may\n+      not be ready for a call to init right away so a small delay should\n+      occur after this call. */\n+   pENET->DMA_BUS_MODE |= DMA_BM_SWR;\n+}\n+\n+/**\n+ * @brief  Sets the address of the interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  macAddr : Pointer to the 6 bytes used for the MAC address\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_SetADDR(LPC_ENET_T *pENET, const uint8_t *macAddr)\n+{\n+   /* Save MAC address */\n+   pENET->MAC_ADDR0_LOW = ((uint32_t) macAddr[3] << 24) |\n+                          ((uint32_t) macAddr[2] << 16) | ((uint32_t) macAddr[1] << 8) |\n+                          ((uint32_t) macAddr[0]);\n+   pENET->MAC_ADDR0_HIGH = ((uint32_t) macAddr[5] << 8) |\n+                           ((uint32_t) macAddr[4]);\n+}\n+\n+/**\n+ * @brief  Sets up the PHY link clock divider and PHY address\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  div     : Divider index, not a divider value, see user manual\n+ * @param  addr    : PHY address, used with MII read and write\n+ * @return Nothing\n+ */\n+void Chip_ENET_SetupMII(LPC_ENET_T *pENET, uint32_t div, uint8_t addr);\n+\n+/**\n+ * @brief  Starts a PHY write via the MII\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  reg     : PHY register to write\n+ * @param  data    : Data to write to PHY register\n+ * @return Nothing\n+ * @note   Start a PHY write operation. Does not block, requires calling\n+ * IP_ENET_IsMIIBusy to determine when write is complete.\n+ */\n+void Chip_ENET_StartMIIWrite(LPC_ENET_T *pENET, uint8_t reg, uint16_t data);\n+\n+/**\n+ * @brief  Starts a PHY read via the MII\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  reg     : PHY register to read\n+ * @return Nothing\n+ * @note   Start a PHY read operation. Does not block, requires calling\n+ * IP_ENET_IsMIIBusy to determine when read is complete and calling\n+ * IP_ENET_ReadMIIData to get the data.\n+ */\n+void Chip_ENET_StartMIIRead(LPC_ENET_T *pENET, uint8_t reg);\n+\n+/**\n+ * @brief  Returns MII link (PHY) busy status\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Returns true if busy, otherwise false\n+ */\n+STATIC INLINE bool Chip_ENET_IsMIIBusy(LPC_ENET_T *pENET)\n+{\n+   return (pENET->MAC_MII_ADDR & MAC_MIIA_GB) ? true : false;\n+}\n+\n+/**\n+ * @brief  Returns the value read from the PHY\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Read value from PHY\n+ */\n+STATIC INLINE uint16_t Chip_ENET_ReadMIIData(LPC_ENET_T *pENET)\n+{\n+   return pENET->MAC_MII_DATA;\n+}\n+\n+/**\n+ * @brief  Enables ethernet transmit\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_TXEnable(LPC_ENET_T *pENET)\n+{\n+   pENET->MAC_CONFIG |= MAC_CFG_TE;\n+   pENET->DMA_OP_MODE |= DMA_OM_ST;\n+}\n+\n+/**\n+ * @brief Disables ethernet transmit\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_TXDisable(LPC_ENET_T *pENET)\n+{\n+   pENET->MAC_CONFIG &= ~MAC_CFG_TE;\n+}\n+\n+/**\n+ * @brief  Enables ethernet packet reception\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_RXEnable(LPC_ENET_T *pENET)\n+{\n+   pENET->MAC_CONFIG |= MAC_CFG_RE;\n+   pENET->DMA_OP_MODE |= DMA_OM_SR;\n+}\n+\n+/**\n+ * @brief  Disables ethernet packet reception\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_RXDisable(LPC_ENET_T *pENET)\n+{\n+   pENET->MAC_CONFIG &= ~MAC_CFG_RE;\n+}\n+\n+/**\n+ * @brief  Enable RMII ethernet operation\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ * @note   This function must be called to enable the internal\n+ * RMII PHY, and must be called before calling any Ethernet\n+ * functions.\n+ */\n+STATIC INLINE void Chip_ENET_RMIIEnable(LPC_ENET_T *pENET)\n+{\n+   LPC_CREG->CREG6 |= 0x4;\n+}\n+\n+/**\n+ * @brief  Enable MII ethernet operation\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ * @note   This function must be called to enable the\n+ * MII PHY, and must be called before calling any Ethernet\n+ * functions.\n+ */\n+STATIC INLINE void Chip_ENET_MIIEnable(LPC_ENET_T *pENET)\n+{\n+   LPC_CREG->CREG6 &= ~0x7;\n+}\n+\n+/**\n+ * @brief  Sets full or half duplex for the interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  full    : true to selected full duplex, false for half\n+ * @return Nothing\n+ */\n+void Chip_ENET_SetDuplex(LPC_ENET_T *pENET, bool full);\n+\n+/**\n+ * @brief  Sets speed for the interface\n+ * @param  pENET       : The base of ENET peripheral on the chip\n+ * @param  speed100    : true to select 100Mbps mode, false for 10Mbps\n+ * @return Nothing\n+ */\n+void Chip_ENET_SetSpeed(LPC_ENET_T *pENET, bool speed100);\n+\n+/**\n+ * @brief  Configures the initial ethernet descriptors\n+ * @param  pENET       : The base of ENET peripheral on the chip\n+ * @param  pTXDescs    : Pointer to TX descriptor list\n+ * @param  pRXDescs    : Pointer to RX descriptor list\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_InitDescriptors(LPC_ENET_T *pENET,\n+                                            ENET_ENHTXDESC_T *pTXDescs, ENET_ENHRXDESC_T *pRXDescs)\n+{\n+   /* Setup descriptor list base addresses */\n+   pENET->DMA_TRANS_DES_ADDR = (uint32_t) pTXDescs;\n+   pENET->DMA_REC_DES_ADDR = (uint32_t) pRXDescs;\n+}\n+\n+/**\n+ * @brief  Starts receive polling of RX descriptors\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_RXStart(LPC_ENET_T *pENET)\n+{\n+   /* Start receive polling */\n+   pENET->DMA_REC_POLL_DEMAND = 1;\n+}\n+\n+/**\n+ * @brief  Starts transmit polling of TX descriptors\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_TXStart(LPC_ENET_T *pENET)\n+{\n+   /* Start transmit polling */\n+   pENET->DMA_TRANS_POLL_DEMAND = 1;\n+}\n+\n+/**\n+ * @brief  Initialize ethernet interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  phyAddr : Address of the Phy [valid range 0 to 31]\n+ * @return Nothing\n+ * @note   Performs basic initialization of the ethernet interface in a default\n+ * state. This is enough to place the interface in a usable state, but\n+ * may require more setup outside this function.\n+ */\n+void Chip_ENET_Init(LPC_ENET_T *pENET, uint32_t phyAddr);\n+\n+/**\n+ * @brief  De-initialize the ethernet interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_ENET_DeInit(LPC_ENET_T *pENET);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ENET_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/error.h ./lpc_chip_43xx/inc/error.h\n--- a_8FkA5l/lpc_chip_43xx/inc/error.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/error.h\t2017-02-27 20:42:08.440009491 -0300\n@@ -0,0 +1,272 @@\n+/*\n+ * @brief Error code returned by Boot ROM drivers/library functions\n+ *\n+ *  This file contains unified error codes to be used across driver,\n+ *  middleware, applications, hal and demo software.\n+ *\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __LPC_ERROR_H__\n+#define __LPC_ERROR_H__\n+\n+/** Error code returned by Boot ROM drivers/library functions\n+ *\n+ *  Error codes are a 32-bit value with :\n+ *      - The 16 MSB contains the peripheral code number\n+ *      - The 16 LSB contains an error code number associated to that peripheral\n+ *\n+ */\n+typedef enum\n+{\n+  /**\\b 0x00000000*/ LPC_OK=0, /**< enum value returned on Success */\n+  /**\\b 0xFFFFFFFF*/ ERR_FAILED = -1, /**< enum value returned on general failure */\n+  /**\\b 0xFFFFFFFE*/ ERR_TIME_OUT = -2, /**< enum value returned on general timeout */\n+  /**\\b 0xFFFFFFFD*/ ERR_BUSY = -3,    /**< enum value returned when resource is busy */\n+\n+  /* ISP related errors */\n+  ERR_ISP_BASE = 0x00000000,\n+  /*0x00000001*/ ERR_ISP_INVALID_COMMAND = ERR_ISP_BASE + 1,\n+  /*0x00000002*/ ERR_ISP_SRC_ADDR_ERROR, /* Source address not on word boundary */\n+  /*0x00000003*/ ERR_ISP_DST_ADDR_ERROR, /* Destination address not on word or 256 byte boundary */\n+  /*0x00000004*/ ERR_ISP_SRC_ADDR_NOT_MAPPED,\n+  /*0x00000005*/ ERR_ISP_DST_ADDR_NOT_MAPPED,\n+  /*0x00000006*/ ERR_ISP_COUNT_ERROR, /* Byte count is not multiple of 4 or is not a permitted value */\n+  /*0x00000007*/ ERR_ISP_INVALID_SECTOR,\n+  /*0x00000008*/ ERR_ISP_SECTOR_NOT_BLANK,\n+  /*0x00000009*/ ERR_ISP_SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION,\n+  /*0x0000000A*/ ERR_ISP_COMPARE_ERROR,\n+  /*0x0000000B*/ ERR_ISP_BUSY, /* Flash programming hardware interface is busy */\n+  /*0x0000000C*/ ERR_ISP_PARAM_ERROR, /* Insufficient number of parameters */\n+  /*0x0000000D*/ ERR_ISP_ADDR_ERROR, /* Address not on word boundary */\n+  /*0x0000000E*/ ERR_ISP_ADDR_NOT_MAPPED,\n+  /*0x0000000F*/ ERR_ISP_CMD_LOCKED, /* Command is locked */\n+  /*0x00000010*/ ERR_ISP_INVALID_CODE, /* Unlock code is invalid */\n+  /*0x00000011*/ ERR_ISP_INVALID_BAUD_RATE,\n+  /*0x00000012*/ ERR_ISP_INVALID_STOP_BIT,\n+  /*0x00000013*/ ERR_ISP_CODE_READ_PROTECTION_ENABLED,\n+  /*0x00000014*/ ERR_ISP_INVALID_FLASH_UNIT,\n+  /*0x00000015*/ ERR_ISP_USER_CODE_CHECKSUM,\n+  /*0x00000016*/ ERR_ISP_SETTING_ACTIVE_PARTITION,\n+  /*0x00000017*/ ERR_ISP_IRC_NO_POWER,\n+  /*0x00000018*/ ERR_ISP_FLASH_NO_POWER,\n+  /*0x00000019*/ ERR_ISP_EEPROM_NO_POWER,\n+  /*0x0000001A*/ ERR_ISP_EEPROM_NO_CLOCK,\n+  /*0x0000001B*/ ERR_ISP_FLASH_NO_CLOCK,\n+  /*0x0000001C*/ ERR_ISP_REINVOKE_ISP_CONFIG,\n+\n+  /* ROM API related errors */\n+  ERR_API_BASE = 0x00010000,\n+  /**\\b 0x00010001*/ ERR_API_INVALID_PARAMS = ERR_API_BASE + 1, /**< Invalid parameters*/\n+  /**\\b 0x00010002*/ ERR_API_INVALID_PARAM1, /**< PARAM1 is invalid */\n+  /**\\b 0x00010003*/ ERR_API_INVALID_PARAM2, /**< PARAM2 is invalid */\n+  /**\\b 0x00010004*/ ERR_API_INVALID_PARAM3, /**< PARAM3 is invalid */\n+  /**\\b 0x00010005*/ ERR_API_MOD_INIT, /**< API is called before module init */\n+\n+  /* SPIFI API related errors */\n+  ERR_SPIFI_BASE = 0x00020000,\n+  /*0x00020001*/ ERR_SPIFI_DEVICE_ERROR =ERR_SPIFI_BASE+1,\n+  /*0x00020002*/ ERR_SPIFI_INTERNAL_ERROR,\n+  /*0x00020003*/ ERR_SPIFI_TIMEOUT,\n+  /*0x00020004*/ ERR_SPIFI_OPERAND_ERROR,\n+  /*0x00020005*/ ERR_SPIFI_STATUS_PROBLEM,\n+  /*0x00020006*/ ERR_SPIFI_UNKNOWN_EXT,\n+  /*0x00020007*/ ERR_SPIFI_UNKNOWN_ID,\n+  /*0x00020008*/ ERR_SPIFI_UNKNOWN_TYPE,\n+  /*0x00020009*/ ERR_SPIFI_UNKNOWN_MFG,\n+  /*0x0002000A*/ ERR_SPIFI_NO_DEVICE,\n+  /*0x0002000B*/ ERR_SPIFI_ERASE_NEEDED,\n+\n+  SEC_AES_NO_ERROR=0,\n+  /* Security API related errors */\n+  ERR_SEC_AES_BASE = 0x00030000,\n+  /*0x00030001*/ ERR_SEC_AES_WRONG_CMD=ERR_SEC_AES_BASE+1,\n+  /*0x00030002*/ ERR_SEC_AES_NOT_SUPPORTED,\n+  /*0x00030003*/ ERR_SEC_AES_KEY_ALREADY_PROGRAMMED,\n+  /*0x00030004*/ ERR_SEC_AES_DMA_CHANNEL_CFG,\n+  /*0x00030005*/ ERR_SEC_AES_DMA_MUX_CFG,\n+  /*0x00030006*/ SEC_AES_DMA_BUSY,\n+\n+  /* USB device stack related errors */\n+  ERR_USBD_BASE = 0x00040000,\n+  /**\\b 0x00040001*/ ERR_USBD_INVALID_REQ = ERR_USBD_BASE + 1, /**< invalid request */\n+  /**\\b 0x00040002*/ ERR_USBD_UNHANDLED, /**< Callback did not process the event */\n+  /**\\b 0x00040003*/ ERR_USBD_STALL,     /**< Stall the endpoint on which the call back is called */\n+  /**\\b 0x00040004*/ ERR_USBD_SEND_ZLP,  /**< Send ZLP packet on the endpoint on which the call back is called */\n+  /**\\b 0x00040005*/ ERR_USBD_SEND_DATA, /**< Send data packet on the endpoint on which the call back is called */\n+  /**\\b 0x00040006*/ ERR_USBD_BAD_DESC,  /**< Bad descriptor*/\n+  /**\\b 0x00040007*/ ERR_USBD_BAD_CFG_DESC,/**< Bad config descriptor*/\n+  /**\\b 0x00040008*/ ERR_USBD_BAD_INTF_DESC,/**< Bad interface descriptor*/\n+  /**\\b 0x00040009*/ ERR_USBD_BAD_EP_DESC,/**< Bad endpoint descriptor*/\n+  /**\\b 0x0004000a*/ ERR_USBD_BAD_MEM_BUF, /**< Bad alignment of buffer passed. */\n+  /**\\b 0x0004000b*/ ERR_USBD_TOO_MANY_CLASS_HDLR, /**< Too many class handlers. */\n+\n+  /* CGU  related errors */\n+  ERR_CGU_BASE = 0x00050000,\n+  /*0x00050001*/ ERR_CGU_NOT_IMPL=ERR_CGU_BASE+1,\n+  /*0x00050002*/ ERR_CGU_INVALID_PARAM,\n+  /*0x00050003*/ ERR_CGU_INVALID_SLICE,\n+  /*0x00050004*/ ERR_CGU_OUTPUT_GEN,\n+  /*0x00050005*/ ERR_CGU_DIV_SRC,\n+  /*0x00050006*/ ERR_CGU_DIV_VAL,\n+  /*0x00050007*/ ERR_CGU_SRC,\n+\n+  /*  I2C related errors   */\n+  ERR_I2C_BASE = 0x00060000,\n+  /*0x00060000*/ ERR_I2C_BUSY = ERR_I2C_BASE,\n+  /*0x00060001*/ ERR_I2C_NAK,\n+  /*0x00060002*/ ERR_I2C_BUFFER_OVERFLOW,\n+  /*0x00060003*/ ERR_I2C_BYTE_COUNT_ERR,\n+  /*0x00060004*/ ERR_I2C_LOSS_OF_ARBRITRATION,\n+  /*0x00060005*/ ERR_I2C_SLAVE_NOT_ADDRESSED,\n+  /*0x00060006*/ ERR_I2C_LOSS_OF_ARBRITRATION_NAK_BIT,\n+  /*0x00060007*/ ERR_I2C_GENERAL_FAILURE,\n+  /*0x00060008*/ ERR_I2C_REGS_SET_TO_DEFAULT,\n+  /*0x00060009*/ ERR_I2C_TIMEOUT,\n+  /*0x0006000A*/ ERR_I2C_BUFFER_UNDERFLOW,\n+  /*0x0006000B*/ ERR_I2C_PARAM,\n+\n+   /* OTP  related errors */\n+  ERR_OTP_BASE = 0x00070000,\n+  /*0x00070001*/ ERR_OTP_WR_ENABLE_INVALID = ERR_OTP_BASE+1,\n+  /*0x00070002*/ ERR_OTP_SOME_BITS_ALREADY_PROGRAMMED,\n+  /*0x00070003*/ ERR_OTP_ALL_DATA_OR_MASK_ZERO,\n+  /*0x00070004*/ ERR_OTP_WRITE_ACCESS_LOCKED,\n+  /*0x00070005*/ ERR_OTP_READ_DATA_MISMATCH,\n+  /*0x00070006*/ ERR_OTP_USB_ID_ENABLED,\n+  /*0x00070007*/ ERR_OTP_ETH_MAC_ENABLED,\n+  /*0x00070008*/ ERR_OTP_AES_KEYS_ENABLED,\n+  /*0x00070009*/ ERR_OTP_ILLEGAL_BANK,\n+\n+  /*  UART related errors   */\n+  ERR_UART_BASE = 0x00080000,\n+  /*0x00080001*/ ERR_UART_RXD_BUSY = ERR_UART_BASE+1,   //UART rxd is busy\n+  /*0x00080002*/ ERR_UART_TXD_BUSY,   //UART txd is busy\n+  /*0x00080003*/ ERR_UART_OVERRUN_FRAME_PARITY_NOISE, //overrun err, frame err, parity err, RxNoise err\n+  /*0x00080004*/ ERR_UART_UNDERRUN,    //underrun err\n+  /*0x00080005*/ ERR_UART_PARAM,       //parameter is error\n+  /*0x00080006*/ ERR_UART_BAUDRATE,    //baudrate setting is error\n+\n+  /*  CAN related errors   */\n+  ERR_CAN_BASE = 0x00090000,\n+  /*0x00090001*/ ERR_CAN_BAD_MEM_BUF = ERR_CAN_BASE+1,\n+  /*0x00090002*/ ERR_CAN_INIT_FAIL,\n+  /*0x00090003*/ ERR_CANOPEN_INIT_FAIL,\n+\n+  /* SPIFI Lite API related errors */\n+  ERR_SPIFI_LITE_BASE = 0x000A0000,\n+  /*0x000A0001*/ ERR_SPIFI_LITE_INVALID_ARGUMENTS = ERR_SPIFI_LITE_BASE+1,\n+  /*0x000A0002*/ ERR_SPIFI_LITE_BUSY,\n+  /*0x000A0003*/ ERR_SPIFI_LITE_MEMORY_MODE_ON,\n+  /*0x000A0004*/ ERR_SPIFI_LITE_MEMORY_MODE_OFF,\n+  /*0x000A0005*/ ERR_SPIFI_LITE_IN_DMA,\n+  /*0x000A0006*/ ERR_SPIFI_LITE_NOT_IN_DMA,\n+  /*0x000A0100*/ PENDING_SPIFI_LITE,\n+\n+  /* CLK related errors */\n+  ERR_CLK_BASE = 0x000B0000,\n+  /*0x000B0001*/ ERR_CLK_NOT_IMPL=ERR_CLK_BASE+1,\n+  /*0x000B0002*/ ERR_CLK_INVALID_PARAM,\n+  /*0x000B0003*/ ERR_CLK_INVALID_SLICE,\n+  /*0x000B0004*/ ERR_CLK_OUTPUT_GEN,\n+  /*0x000B0005*/ ERR_CLK_DIV_SRC,\n+  /*0x000B0006*/ ERR_CLK_DIV_VAL,\n+  /*0x000B0007*/ ERR_CLK_SRC,\n+  /*0x000B0008*/ ERR_CLK_PLL_FIN_TOO_SMALL,\n+  /*0x000B0009*/ ERR_CLK_PLL_FIN_TOO_LARGE,\n+  /*0x000B000A*/ ERR_CLK_PLL_FOUT_TOO_SMALL,\n+  /*0x000B000B*/ ERR_CLK_PLL_FOUT_TOO_LARGE,\n+  /*0x000B000C*/ ERR_CLK_PLL_NO_SOLUTION,\n+  /*0x000B000D*/ ERR_CLK_PLL_MIN_PCT,\n+  /*0x000B000E*/ ERR_CLK_PLL_MAX_PCT,\n+  /*0x000B000F*/ ERR_CLK_OSC_FREQ,\n+  /*0x000B0010*/ ERR_CLK_CFG,\n+  /*0x000B0011*/ ERR_CLK_TIMEOUT,\n+  /*0x000B0012*/ ERR_CLK_BASE_OFF,\n+  /*0x000B0013*/ ERR_CLK_OFF_DEADLOCK,\n+\n+  /*Power API*/\n+  ERR_PWR_BASE = 0x000C0000,\n+  /*0x000C0001*/  PWR_ERROR_ILLEGAL_MODE=ERR_PWR_BASE+1,\n+  /*0x000C0002*/  PWR_ERROR_CLOCK_FREQ_TOO_HIGH,\n+  /*0x000C0003*/  PWR_ERROR_INVALID_STATE,\n+  /*0x000C0004*/  PWR_ERROR_INVALID_CFG,\n+  /*0x000C0005*/  PWR_ERROR_PVT_DETECT,\n+\n+  /* DMA related errors */\n+  ERR_DMA_BASE = 0x000D0000,\n+  /*0x000D0001*/    ERR_DMA_ERROR_INT=ERR_DMA_BASE+1,\n+  /*0x000D0002*/    ERR_DMA_CHANNEL_NUMBER,\n+  /*0x000D0003*/    ERR_DMA_CHANNEL_DISABLED,\n+  /*0x000D0004*/    ERR_DMA_BUSY,\n+  /*0x000D0005*/    ERR_DMA_NOT_ALIGNMENT,\n+  /*0x000D0006*/    ERR_DMA_PING_PONG_EN,\n+  /*0x000D0007*/    ERR_DMA_CHANNEL_VALID_PENDING,\n+  /*0x000D0008*/    ERR_DMA_PARAM,\n+  /*0x000D0009*/    ERR_DMA_QUEUE_EMPTY,\n+  /*0x000D000A*/    ERR_DMA_GENERAL,\n+\n+  /* SPI related errors */\n+  ERR_SPI_BASE = 0x000E0000,\n+  /*0x000E0000*/    ERR_SPI_BUSY=ERR_SPI_BASE,\n+  /*0x000E0001*/    ERR_SPI_RXOVERRUN,\n+  /*0x000E0002*/    ERR_SPI_TXUNDERRUN,\n+  /*0x000E0003*/    ERR_SPI_SELNASSERT,\n+  /*0x000E0004*/    ERR_SPI_SELNDEASSERT,\n+  /*0x000E0005*/    ERR_SPI_CLKSTALL,\n+  /*0x000E0006*/    ERR_SPI_PARAM,\n+  /*0x000E0007*/    ERR_SPI_INVALID_LENGTH,\n+\n+  /* ADC related errors */\n+  ERR_ADC_BASE = 0x000F0000,\n+  /*0x000F0001*/    ERR_ADC_OVERRUN=ERR_ADC_BASE+1,\n+  /*0x000F0002*/    ERR_ADC_INVALID_CHANNEL,\n+  /*0x000F0003*/    ERR_ADC_INVALID_SEQUENCE,\n+  /*0x000F0004*/    ERR_ADC_INVALID_SETUP,\n+  /*0x000F0005*/    ERR_ADC_PARAM,\n+  /*0x000F0006*/    ERR_ADC_INVALID_LENGTH,\n+  /*0x000F0007*/    ERR_ADC_NO_POWER,\n+\n+  /* Debugger Mailbox related errors */\n+  ERR_DM_BASE = 0x00100000,\n+  /*0x00100001*/    ERR_DM_NOT_ENTERED=ERR_DM_BASE+1,\n+  /*0x00100002*/    ERR_DM_UNKNOWN_CMD,\n+  /*0x00100003*/    ERR_DM_COMM_FAIL\n+\n+} ErrorCode_t;\n+\n+#ifndef offsetof\n+#define offsetof(s, m)   (int) &(((s *) 0)->m)\n+#endif\n+\n+#define COMPILE_TIME_ASSERT(pred)    switch (0) { \\\n+   case 0: \\\n+   case pred:; }\n+\n+#endif /* __LPC_ERROR_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/evrt_18xx_43xx.h ./lpc_chip_43xx/inc/evrt_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/evrt_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/evrt_18xx_43xx.h\t2017-02-27 20:42:08.440009491 -0300\n@@ -0,0 +1,171 @@\n+/*\n+ * @brief LPC18xx/43xx event router driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __EVRT_18XX_43XX_H_\n+#define __EVRT_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup EVRT_18XX_43XX CHIP: LPC18xx/43xx Event router driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Event Router register structure\n+ */\n+typedef struct {                       /*!< EVENTROUTER Structure  */\n+   __IO uint32_t HILO;                 /*!< Level configuration register */\n+   __IO uint32_t EDGE;                 /*!< Edge configuration     */\n+   __I  uint32_t RESERVED0[1012];\n+   __O  uint32_t CLR_EN;               /*!< Event clear enable register */\n+   __O  uint32_t SET_EN;               /*!< Event set enable register */\n+   __I  uint32_t STATUS;               /*!< Status register        */\n+   __I  uint32_t ENABLE;               /*!< Enable register        */\n+   __O  uint32_t CLR_STAT;             /*!< Clear register         */\n+   __O  uint32_t SET_STAT;             /*!< Set register           */\n+} LPC_EVRT_T;\n+\n+/**\n+ * @brief EVRT input sources\n+ */\n+typedef enum CHIP_EVRT_SRC {\n+   EVRT_SRC_WAKEUP0,           /*!< WAKEUP0 event router source        */\n+   EVRT_SRC_WAKEUP1,           /*!< WAKEUP1 event router source        */\n+   EVRT_SRC_WAKEUP2,           /*!< WAKEUP2 event router source        */\n+   EVRT_SRC_WAKEUP3,           /*!< WAKEUP3 event router source        */\n+   EVRT_SRC_ATIMER,            /*!< Alarm timer event router source    */\n+   EVRT_SRC_RTC,               /*!< RTC event router source            */\n+   EVRT_SRC_BOD1,              /*!< BOD event router source            */\n+   EVRT_SRC_WWDT,              /*!< WWDT event router source           */\n+   EVRT_SRC_ETHERNET,          /*!< Ethernet event router source       */\n+   EVRT_SRC_USB0,              /*!< USB0 event router source           */\n+   EVRT_SRC_USB1,              /*!< USB1 event router source           */\n+   EVRT_SRC_SDIO,              /*!< Reserved                           */\n+   EVRT_SRC_CCAN,              /*!< C_CAN event router source          */\n+   EVRT_SRC_COMBINE_TIMER2,    /*!< Combined timer 2 event router source   */\n+   EVRT_SRC_COMBINE_TIMER6,    /*!< Combined timer 6 event router source   */\n+   EVRT_SRC_QEI,               /*!< QEI event router source            */\n+   EVRT_SRC_COMBINE_TIMER14,   /*!< Combined timer 14 event router source  */\n+   EVRT_SRC_RESERVED1,         /*!< Reserved                           */\n+   EVRT_SRC_RESERVED2,         /*!< Reserved                           */\n+   EVRT_SRC_RESET              /*!< Reset event router source          */\n+} CHIP_EVRT_SRC_T;\n+\n+/**\n+ * @brief Macro for checking for a valid EVRT source\n+ */\n+#define PARAM_EVRT_SOURCE(n)    ((n == EVRT_SRC_WAKEUP0) || (n == EVRT_SRC_WAKEUP1)    \\\n+                                || (n == EVRT_SRC_WAKEUP2) || (n == EVRT_SRC_WAKEUP3) \\\n+                                || (n == EVRT_SRC_ATIMER) || (n == EVRT_SRC_RTC) \\\n+                                || (n == EVRT_SRC_BOD1) || (n == EVRT_SRC_WWDT) \\\n+                                || (n == EVRT_SRC_ETHERNET) || (n == EVRT_SRC_USB0) \\\n+                                || (n == EVRT_SRC_USB1) || (n == EVRT_SRC_CCAN) || (n == EVRT_SRC_SDIO) \\\n+                                || (n == EVRT_SRC_COMBINE_TIMER2) || (n == EVRT_SRC_COMBINE_TIMER6) \\\n+                                || (n == EVRT_SRC_QEI) || (n == EVRT_SRC_COMBINE_TIMER14) \\\n+                                || (n == EVRT_SRC_RESET)) \\\n+\n+/**\n+ * @brief EVRT input state detecting type\n+ */\n+typedef enum CHIP_EVRT_SRC_ACTIVE {\n+   EVRT_SRC_ACTIVE_LOW_LEVEL,      /*!< Active low level       */\n+   EVRT_SRC_ACTIVE_HIGH_LEVEL,     /*!< Active high level      */\n+   EVRT_SRC_ACTIVE_FALLING_EDGE,   /*!< Active falling edge    */\n+   EVRT_SRC_ACTIVE_RISING_EDGE     /*!< Active rising edge     */\n+} CHIP_EVRT_SRC_ACTIVE_T;\n+\n+/**\n+ * @brief Macro for checking for a valid EVRT state type\n+ */\n+#define PARAM_EVRT_SOURCE_ACTIVE_TYPE(n) ((n == EVRT_SRC_ACTIVE_LOW_LEVEL) || (n == EVRT_SRC_ACTIVE_HIGH_LEVEL)    \\\n+                                         || (n == EVRT_SRC_ACTIVE_FALLING_EDGE) || (n == EVRT_SRC_ACTIVE_RISING_EDGE))\n+\n+/**\n+ * @brief  Initialize the EVRT\n+ * @return Nothing\n+ */\n+void Chip_EVRT_Init (void);\n+\n+/**\n+ * @brief  Set up the type of interrupt type for a source to EVRT\n+ * @param  EVRT_Src    : EVRT source, should be one of CHIP_EVRT_SRC_T type\n+ * @param  type        : EVRT type, should be one of CHIP_EVRT_SRC_ACTIVE_T type\n+ * @return Nothing\n+ */\n+void Chip_EVRT_ConfigIntSrcActiveType(CHIP_EVRT_SRC_T EVRT_Src, CHIP_EVRT_SRC_ACTIVE_T type);\n+\n+/**\n+ * @brief  Check if a source is sending interrupt to EVRT\n+ * @param  EVRT_Src    : EVRT source, should be one of CHIP_EVRT_SRC_T type\n+ * @return true if the interrupt from the source is pending, otherwise false\n+ */\n+IntStatus Chip_EVRT_IsSourceInterrupting(CHIP_EVRT_SRC_T EVRT_Src);\n+\n+/**\n+ * @brief  Enable or disable interrupt sources to EVRT\n+ * @param  EVRT_Src    : EVRT source, should be one of CHIP_EVRT_SRC_T type\n+ * @param  state       : ENABLE or DISABLE to enable or disable event router source\n+ * @return Nothing\n+ */\n+void Chip_EVRT_SetUpIntSrc(CHIP_EVRT_SRC_T EVRT_Src, FunctionalState state);\n+\n+/**\n+ * @brief  De-initializes the EVRT peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EVRT_DeInit(void)\n+{\n+   LPC_EVRT->CLR_EN    = 0xFFFF;\n+   LPC_EVRT->CLR_STAT  = 0xFFFF;\n+}\n+\n+/**\n+ * @brief  Clear pending interrupt EVRT source\n+ * @param  EVRT_Src    : EVRT source, should be one of CHIP_EVRT_SRC_T type\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EVRT_ClrPendIntSrc(CHIP_EVRT_SRC_T EVRT_Src)\n+{\n+   LPC_EVRT->CLR_STAT = (1 << (uint8_t) EVRT_Src);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __EVRT_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/fmc_18xx_43xx.h ./lpc_chip_43xx/inc/fmc_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/fmc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/fmc_18xx_43xx.h\t2017-02-27 20:42:08.440009491 -0300\n@@ -0,0 +1,139 @@\n+/*\n+ * @brief LPC18xx/43xx FLASH Memory Controller (FMC) driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __FMC_18XX_43XX_H_\n+#define __FMC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup FMC_18XX_43XX CHIP: LPC18xx/43xx FLASH Memory Controller driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief FLASH Memory Controller Unit register block structure\n+ */\n+typedef struct {       /*!< FMC Structure */\n+   __I  uint32_t  RESERVED1[8];\n+   __IO uint32_t  FMSSTART;\n+   __IO uint32_t  FMSSTOP;\n+   __I  uint32_t  RESERVED2;\n+   __I  uint32_t  FMSW[4];\n+   __I  uint32_t  RESERVED3[1001];\n+   __I  uint32_t  FMSTAT;\n+   __I  uint32_t  RESERVED5;\n+   __O  uint32_t  FMSTATCLR;\n+   __I  uint32_t  RESERVED4[5];\n+} LPC_FMC_T;\n+\n+/* Flash signature start and busy status bit */\n+#define FMC_FLASHSIG_BUSY       (1UL << 17)\n+\n+/* Flash signature clear status bit */\n+#define FMC_FLASHSIG_STAT       (1 << 2)\n+\n+/**\n+ * @brief  Start computation of a signature for a FLASH memory range\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @param  start   : Starting FLASH address for computation, must be aligned on 16 byte boundary\n+ * @param  stop    : Ending FLASH address for computation, must be aligned on 16 byte boundary\n+ * @return Nothing\n+ * @note   Only bits 20..4 are used for the FLASH signature computation.\n+ *         Use the Chip_FMC_IsSignatureBusy() function to determine when the\n+ *         signature computation operation is complete and use the\n+ *         Chip_FMC_GetSignature() function to get the computed signature.\n+ */\n+STATIC INLINE void Chip_FMC_ComputeSignature(uint8_t bank, uint32_t start, uint32_t stop)\n+{\n+   LPC_FMC[bank]->FMSSTART = (start >> 4);\n+   LPC_FMC[bank]->FMSTATCLR = FMC_FLASHSIG_STAT;\n+   LPC_FMC[bank]->FMSSTOP = (stop >> 4) | FMC_FLASHSIG_BUSY;\n+}\n+\n+/**\n+ * @brief  Start computation of a signature for a FLASH memory address and block count\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @param  start   : Starting FLASH address for computation, must be aligned on 16 byte boundary\n+ * @param  blocks  : Number of 16 byte blocks used for computation\n+ * @return Nothing\n+ * @note   Only bits 20..4 are used for the FLASH signature computation.\n+ *         Use the Chip_FMC_IsSignatureBusy() function to determine when the\n+ *         signature computation operation is complete and the\n+ *         Chip_FMC_GetSignature() function to get the computed signature.\n+ */\n+STATIC INLINE void Chip_FMC_ComputeSignatureBlocks(uint8_t bank, uint32_t start, uint32_t blocks)\n+{\n+   Chip_FMC_ComputeSignature(bank, start, (start + (blocks * 16)));\n+}\n+\n+/**\n+ * @brief  Clear signature generation completion flag\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_FMC_ClearSignatureBusy(uint8_t bank)\n+{\n+   LPC_FMC[bank]->FMSTATCLR = FMC_FLASHSIG_STAT;\n+}\n+\n+/**\n+ * @brief  Check for signature generation completion\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @return true if the signature computation is running, false if finished\n+ */\n+STATIC INLINE bool Chip_FMC_IsSignatureBusy(uint8_t bank)\n+{\n+   return (bool) ((LPC_FMC[bank]->FMSTAT & FMC_FLASHSIG_STAT) == 0);\n+}\n+\n+/**\n+ * @brief  Returns the generated FLASH signature value\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @param  index   : Signature index to get - use 0 to FMSW0, 1 to FMSW1, etc.\n+ * @return the generated FLASH signature value\n+ */\n+STATIC INLINE uint32_t Chip_FMC_GetSignature(uint8_t bank, int index)\n+{\n+   return LPC_FMC[bank]->FMSW[index];\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __FMC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/fpu_init.h ./lpc_chip_43xx/inc/fpu_init.h\n--- a_8FkA5l/lpc_chip_43xx/inc/fpu_init.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/fpu_init.h\t2017-02-27 20:42:08.440009491 -0300\n@@ -0,0 +1,52 @@\n+/*\n+ * @brief FPU init code\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __FPU_INIT_H_\n+#define __FPU_INIT_H_\n+\n+/**\n+ * @defgroup CHIP_FPU_CMX CHIP: FPU initialization\n+ * @ingroup CHIP_Common\n+ * Cortex FPU initialization\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Early initialization of the FPU\n+ * @return Nothing\n+ */\n+void fpuInit(void);\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __FPU_INIT_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/gima_18xx_43xx.h ./lpc_chip_43xx/inc/gima_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/gima_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/gima_18xx_43xx.h\t2017-02-27 20:42:08.440009491 -0300\n@@ -0,0 +1,66 @@\n+/*\n+ * @brief LPC18xx/43xx GIMA driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GIMA_18XX_43XX_H_\n+#define __GIMA_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GIMA_18XX_43XX CHIP: LPC18xx/43xx GIMA driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Global Input Multiplexer Array (GIMA) register block structure\n+ */\n+typedef struct {                       /*!< GIMA Structure */\n+   __IO uint32_t  CAP0_IN[4][4];       /*!< Timer x CAP0_y capture input multiplexer (GIMA output ((x*4)+y)) */\n+   __IO uint32_t  CTIN_IN[8];          /*!< SCT CTIN_x capture input multiplexer (GIMA output (16+x)) */\n+   __IO uint32_t  ADCHS_TRIGGER_IN;    /*!< ADCHS trigger input multiplexer (GIMA output 24) */\n+   __IO uint32_t  EVENTROUTER_13_IN;   /*!< Event router input 13 multiplexer (GIMA output 25) */\n+   __IO uint32_t  EVENTROUTER_14_IN;   /*!< Event router input 14 multiplexer (GIMA output 26) */\n+   __IO uint32_t  EVENTROUTER_16_IN;   /*!< Event router input 16 multiplexer (GIMA output 27) */\n+   __IO uint32_t  ADCSTART0_IN;        /*!< ADC start0 input multiplexer (GIMA output 28) */\n+   __IO uint32_t  ADCSTART1_IN;        /*!< ADC start1 input multiplexer (GIMA output 29) */\n+} LPC_GIMA_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GIMA_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/gpdma_18xx_43xx.h ./lpc_chip_43xx/inc/gpdma_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/gpdma_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/gpdma_18xx_43xx.h\t2017-02-27 20:42:08.444009491 -0300\n@@ -0,0 +1,418 @@\n+/*\n+ * @brief LPC18xx/43xx General Purpose DMA driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights. NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GPDMA_18XX_43XX_H_\n+#define __GPDMA_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GPDMA_18XX_43XX CHIP: LPC18xx/43xx General Purpose DMA driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Number of channels on GPDMA\n+ */\n+#define GPDMA_NUMBER_CHANNELS 8\n+\n+/**\n+ * @brief GPDMA Channel register block structure\n+ */\n+typedef struct {\n+   __IO uint32_t  SRCADDR;             /*!< DMA Channel Source Address Register */\n+   __IO uint32_t  DESTADDR;            /*!< DMA Channel Destination Address Register */\n+   __IO uint32_t  LLI;                 /*!< DMA Channel Linked List Item Register */\n+   __IO uint32_t  CONTROL;             /*!< DMA Channel Control Register */\n+   __IO uint32_t  CONFIG;              /*!< DMA Channel Configuration Register */\n+   __I  uint32_t  RESERVED1[3];\n+} GPDMA_CH_T;\n+\n+/**\n+ * @brief GPDMA register block\n+ */\n+typedef struct {                       /*!< GPDMA Structure */\n+   __I  uint32_t  INTSTAT;             /*!< DMA Interrupt Status Register */\n+   __I  uint32_t  INTTCSTAT;           /*!< DMA Interrupt Terminal Count Request Status Register */\n+   __O  uint32_t  INTTCCLEAR;          /*!< DMA Interrupt Terminal Count Request Clear Register */\n+   __I  uint32_t  INTERRSTAT;          /*!< DMA Interrupt Error Status Register */\n+   __O  uint32_t  INTERRCLR;           /*!< DMA Interrupt Error Clear Register */\n+   __I  uint32_t  RAWINTTCSTAT;        /*!< DMA Raw Interrupt Terminal Count Status Register */\n+   __I  uint32_t  RAWINTERRSTAT;       /*!< DMA Raw Error Interrupt Status Register */\n+   __I  uint32_t  ENBLDCHNS;           /*!< DMA Enabled Channel Register */\n+   __IO uint32_t  SOFTBREQ;            /*!< DMA Software Burst Request Register */\n+   __IO uint32_t  SOFTSREQ;            /*!< DMA Software Single Request Register */\n+   __IO uint32_t  SOFTLBREQ;           /*!< DMA Software Last Burst Request Register */\n+   __IO uint32_t  SOFTLSREQ;           /*!< DMA Software Last Single Request Register */\n+   __IO uint32_t  CONFIG;              /*!< DMA Configuration Register */\n+   __IO uint32_t  SYNC;                /*!< DMA Synchronization Register */\n+   __I  uint32_t  RESERVED0[50];\n+   GPDMA_CH_T     CH[GPDMA_NUMBER_CHANNELS];\n+} LPC_GPDMA_T;\n+\n+/**\n+ * @brief Macro defines for DMA channel control registers\n+ */\n+#define GPDMA_DMACCxControl_TransferSize(n) (((n & 0xFFF) << 0))   /*!< Transfer size*/\n+#define GPDMA_DMACCxControl_SBSize(n)       (((n & 0x07) << 12))   /*!< Source burst size*/\n+#define GPDMA_DMACCxControl_DBSize(n)       (((n & 0x07) << 15))   /*!< Destination burst size*/\n+#define GPDMA_DMACCxControl_SWidth(n)       (((n & 0x07) << 18))   /*!< Source transfer width*/\n+#define GPDMA_DMACCxControl_DWidth(n)       (((n & 0x07) << 21))   /*!< Destination transfer width*/\n+#define GPDMA_DMACCxControl_SI              ((1UL << 26))          /*!< Source increment*/\n+#define GPDMA_DMACCxControl_DI              ((1UL << 27))          /*!< Destination increment*/\n+#define GPDMA_DMACCxControl_SrcTransUseAHBMaster1   ((1UL << 24))  /*!< Source AHB master select in 18xx43xx*/\n+#define GPDMA_DMACCxControl_DestTransUseAHBMaster1  ((1UL << 25))  /*!< Destination AHB master select in 18xx43xx*/\n+#define GPDMA_DMACCxControl_Prot1           ((1UL << 28))          /*!< Indicates that the access is in user mode or privileged mode*/\n+#define GPDMA_DMACCxControl_Prot2           ((1UL << 29))          /*!< Indicates that the access is bufferable or not bufferable*/\n+#define GPDMA_DMACCxControl_Prot3           ((1UL << 30))          /*!< Indicates that the access is cacheable or not cacheable*/\n+#define GPDMA_DMACCxControl_I               ((1UL << 31))          /*!< Terminal count interrupt enable bit */\n+\n+/**\n+ * @brief Macro defines for DMA Configuration register\n+ */\n+#define GPDMA_DMACConfig_E              ((0x01))   /*!< DMA Controller enable*/\n+#define GPDMA_DMACConfig_M              ((0x02))   /*!< AHB Master endianness configuration*/\n+#define GPDMA_DMACConfig_BITMASK        ((0x03))\n+\n+/**\n+ * @brief Macro defines for DMA Channel Configuration registers\n+ */\n+#define GPDMA_DMACCxConfig_E                    ((1UL << 0))           /*!< DMA control enable*/\n+#define GPDMA_DMACCxConfig_SrcPeripheral(n)     (((n & 0x1F) << 1))        /*!< Source peripheral*/\n+#define GPDMA_DMACCxConfig_DestPeripheral(n)    (((n & 0x1F) << 6))        /*!< Destination peripheral*/\n+#define GPDMA_DMACCxConfig_TransferType(n)      (((n & 0x7) << 11))        /*!< This value indicates the type of transfer*/\n+#define GPDMA_DMACCxConfig_IE                   ((1UL << 14))          /*!< Interrupt error mask*/\n+#define GPDMA_DMACCxConfig_ITC                  ((1UL << 15))          /*!< Terminal count interrupt mask*/\n+#define GPDMA_DMACCxConfig_L                    ((1UL << 16))          /*!< Lock*/\n+#define GPDMA_DMACCxConfig_A                    ((1UL << 17))          /*!< Active*/\n+#define GPDMA_DMACCxConfig_H                    ((1UL << 18))          /*!< Halt*/\n+\n+/**\n+ * @brief GPDMA Interrupt Clear Status\n+ */\n+typedef enum {\n+   GPDMA_STATCLR_INTTC,    /*!< GPDMA Interrupt Terminal Count Request Clear */\n+   GPDMA_STATCLR_INTERR    /*!< GPDMA Interrupt Error Clear */\n+} GPDMA_STATECLEAR_T;\n+\n+/**\n+ * @brief GPDMA Type of Interrupt Status\n+ */\n+typedef enum {\n+   GPDMA_STAT_INT,         /*!< GPDMA Interrupt Status */\n+   GPDMA_STAT_INTTC,       /*!< GPDMA Interrupt Terminal Count Request Status */\n+   GPDMA_STAT_INTERR,      /*!< GPDMA Interrupt Error Status */\n+   GPDMA_STAT_RAWINTTC,    /*!< GPDMA Raw Interrupt Terminal Count Status */\n+   GPDMA_STAT_RAWINTERR,   /*!< GPDMA Raw Error Interrupt Status */\n+   GPDMA_STAT_ENABLED_CH   /*!< GPDMA Enabled Channel Status */\n+} GPDMA_STATUS_T;\n+\n+/**\n+ * @brief GPDMA Type of DMA controller\n+ */\n+typedef enum {\n+   GPDMA_TRANSFERTYPE_M2M_CONTROLLER_DMA              = ((0UL)),   /*!< Memory to memory - DMA control */\n+   GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA              = ((1UL)),   /*!< Memory to peripheral - DMA control */\n+   GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA              = ((2UL)),   /*!< Peripheral to memory - DMA control */\n+   GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DMA              = ((3UL)),   /*!< Source peripheral to destination peripheral - DMA control */\n+   GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DestPERIPHERAL   = ((4UL)),   /*!< Source peripheral to destination peripheral - destination peripheral control */\n+   GPDMA_TRANSFERTYPE_M2P_CONTROLLER_PERIPHERAL       = ((5UL)),   /*!< Memory to peripheral - peripheral control */\n+   GPDMA_TRANSFERTYPE_P2M_CONTROLLER_PERIPHERAL       = ((6UL)),   /*!< Peripheral to memory - peripheral control */\n+   GPDMA_TRANSFERTYPE_P2P_CONTROLLER_SrcPERIPHERAL    = ((7UL))    /*!< Source peripheral to destination peripheral - source peripheral control */\n+} GPDMA_FLOW_CONTROL_T;\n+\n+/**\n+ * @brief GPDMA structure using for DMA configuration\n+ */\n+typedef struct {\n+   uint32_t ChannelNum;    /*!< DMA channel number, should be in\n+                            *  range from 0 to 7.\n+                            *  Note: DMA channel 0 has the highest priority\n+                            *  and DMA channel 7 the lowest priority.\n+                            */\n+   uint32_t TransferSize;  /*!< Length/Size of transfer */\n+   uint32_t TransferWidth; /*!< Transfer width - used for TransferType is GPDMA_TRANSFERTYPE_M2M only */\n+   uint32_t SrcAddr;       /*!< Physical Source Address, used in case TransferType is chosen as\n+                            *   GPDMA_TRANSFERTYPE_M2M or GPDMA_TRANSFERTYPE_M2P */\n+   uint32_t DstAddr;       /*!< Physical Destination Address, used in case TransferType is chosen as\n+                            *   GPDMA_TRANSFERTYPE_M2M or GPDMA_TRANSFERTYPE_P2M */\n+   uint32_t TransferType;  /*!< Transfer Type, should be one of the following:\n+                            * - GPDMA_TRANSFERTYPE_M2M: Memory to memory - DMA control\n+                            * - GPDMA_TRANSFERTYPE_M2P: Memory to peripheral - DMA control\n+                            * - GPDMA_TRANSFERTYPE_P2M: Peripheral to memory - DMA control\n+                            * - GPDMA_TRANSFERTYPE_P2P: Source peripheral to destination peripheral - DMA control\n+                            */\n+} GPDMA_CH_CFG_T;\n+\n+/**\n+ * @brief GPDMA request connections\n+ */\n+#define GPDMA_CONN_MEMORY           ((0UL))            /**< MEMORY             */\n+#define GPDMA_CONN_MAT0_0           ((1UL))            /**< MAT0.0             */\n+#define GPDMA_CONN_UART0_Tx         ((2UL))            /**< UART0 Tx           */\n+#define GPDMA_CONN_MAT0_1           ((3UL))            /**< MAT0.1             */\n+#define GPDMA_CONN_UART0_Rx         ((4UL))            /**< UART0 Rx           */\n+#define GPDMA_CONN_MAT1_0           ((5UL))            /**< MAT1.0             */\n+#define GPDMA_CONN_UART1_Tx         ((6UL))            /**< UART1 Tx           */\n+#define GPDMA_CONN_MAT1_1           ((7UL))            /**< MAT1.1             */\n+#define GPDMA_CONN_UART1_Rx         ((8UL))            /**< UART1 Rx           */\n+#define GPDMA_CONN_MAT2_0           ((9UL))            /**< MAT2.0             */\n+#define GPDMA_CONN_UART2_Tx         ((10UL))       /**< UART2 Tx           */\n+#define GPDMA_CONN_MAT2_1           ((11UL))       /**< MAT2.1             */\n+#define GPDMA_CONN_UART2_Rx         ((12UL))       /**< UART2 Rx           */\n+#define GPDMA_CONN_MAT3_0           ((13UL))       /**< MAT3.0             */\n+#define GPDMA_CONN_UART3_Tx         ((14UL))       /**< UART3 Tx           */\n+#define GPDMA_CONN_SCT_0            ((15UL))       /**< SCT timer channel 0*/\n+#define GPDMA_CONN_MAT3_1           ((16UL))       /**< MAT3.1             */\n+#define GPDMA_CONN_UART3_Rx         ((17UL))       /**< UART3 Rx           */\n+#define GPDMA_CONN_SCT_1            ((18UL))       /**< SCT timer channel 1*/\n+#define GPDMA_CONN_SSP0_Rx          ((19UL))       /**< SSP0 Rx            */\n+#define GPDMA_CONN_I2S_Tx_Channel_0 ((20UL))       /**< I2S0 Tx on channel 0 */\n+#define GPDMA_CONN_SSP0_Tx          ((21UL))       /**< SSP0 Tx            */\n+#define GPDMA_CONN_I2S_Rx_Channel_1 ((22UL))       /**< I2S0 Rx on channel 0 */\n+#define GPDMA_CONN_SSP1_Rx          ((23UL))       /**< SSP1 Rx            */\n+#define GPDMA_CONN_SSP1_Tx          ((24UL))       /**< SSP1 Tx            */\n+#define GPDMA_CONN_ADC_0            ((25UL))       /**< ADC 0              */\n+#define GPDMA_CONN_ADC_1            ((26UL))       /**< ADC 1              */\n+#define GPDMA_CONN_DAC              ((27UL))       /**< DAC                */\n+#define GPDMA_CONN_I2S1_Tx_Channel_0 ((28UL))      /**< I2S1 Tx on channel 0 */\n+#define GPDMA_CONN_I2S1_Rx_Channel_1 ((29UL))      /**< I2S1 Rx on channel 0 */\n+\n+/**\n+ * @brief GPDMA Burst size in Source and Destination definitions\n+ */\n+#define GPDMA_BSIZE_1   ((0UL))    /*!< Burst size = 1 */\n+#define GPDMA_BSIZE_4   ((1UL))    /*!< Burst size = 4 */\n+#define GPDMA_BSIZE_8   ((2UL))    /*!< Burst size = 8 */\n+#define GPDMA_BSIZE_16  ((3UL))    /*!< Burst size = 16 */\n+#define GPDMA_BSIZE_32  ((4UL))    /*!< Burst size = 32 */\n+#define GPDMA_BSIZE_64  ((5UL))    /*!< Burst size = 64 */\n+#define GPDMA_BSIZE_128 ((6UL))    /*!< Burst size = 128 */\n+#define GPDMA_BSIZE_256 ((7UL))    /*!< Burst size = 256 */\n+\n+/**\n+ * @brief Width in Source transfer width and Destination transfer width definitions\n+ */\n+#define GPDMA_WIDTH_BYTE        ((0UL))    /*!< Width = 1 byte */\n+#define GPDMA_WIDTH_HALFWORD    ((1UL))    /*!< Width = 2 bytes */\n+#define GPDMA_WIDTH_WORD        ((2UL))    /*!< Width = 4 bytes */\n+\n+/**\n+ * @brief Flow control definitions\n+ */\n+#define DMA_CONTROLLER 0       /*!< Flow control is DMA controller*/\n+#define SRC_PER_CONTROLLER 1   /*!< Flow control is Source peripheral controller*/\n+#define DST_PER_CONTROLLER 2   /*!< Flow control is Destination peripheral controller*/\n+\n+/**\n+ * @brief DMA channel handle structure\n+ */\n+typedef struct {\n+   FunctionalState ChannelStatus;  /*!< DMA channel status */\n+} DMA_ChannelHandle_t;\n+\n+/**\n+ * @brief Transfer Descriptor structure typedef\n+ */\n+typedef struct DMA_TransferDescriptor {\n+   uint32_t src;   /*!< Source address */\n+   uint32_t dst;   /*!< Destination address */\n+   uint32_t lli;   /*!< Pointer to next descriptor structure */\n+   uint32_t ctrl;  /*!< Control word that has transfer size, type etc. */\n+} DMA_TransferDescriptor_t;\n+\n+/**\n+ * @brief  Initialize the GPDMA\n+ * @param  pGPDMA  : The base of GPDMA on the chip\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_Init(LPC_GPDMA_T *pGPDMA);\n+\n+/**\n+ * @brief  Shutdown the GPDMA\n+ * @param  pGPDMA  : The base of GPDMA on the chip\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_DeInit(LPC_GPDMA_T *pGPDMA);\n+\n+/**\n+ * @brief  Initialize channel configuration strucutre\n+ * @param  pGPDMA          : The base of GPDMA on the chip\n+ * @param  GPDMACfg        : Pointer to configuration structure to be initialized\n+ * @param  ChannelNum      : Channel used for transfer *must be obtained using Chip_GPDMA_GetFreeChannel()*\n+ * @param  src             : Address of Memory or one of @link #GPDMA_CONN_MEMORY\n+ *                              PeripheralConnection_ID @endlink, which is the source\n+ * @param  dst             : Address of Memory or one of @link #GPDMA_CONN_MEMORY\n+ *                              PeripheralConnection_ID @endlink, which is the destination\n+ * @param  Size            : The number of DMA transfers\n+ * @param  TransferType    : Select the transfer controller and the type of transfer. (See, #GPDMA_FLOW_CONTROL_T)\n+ * @return ERROR on error, SUCCESS on success\n+ */\n+int Chip_GPDMA_InitChannelCfg(LPC_GPDMA_T *pGPDMA,\n+                             GPDMA_CH_CFG_T *GPDMACfg,\n+                             uint8_t  ChannelNum,\n+                             uint32_t src,\n+                             uint32_t dst,\n+                             uint32_t Size,\n+                             GPDMA_FLOW_CONTROL_T TransferType);\n+\n+/**\n+ * @brief  Enable or Disable the GPDMA Channel\n+ * @param  pGPDMA      : The base of GPDMA on the chip\n+ * @param  channelNum  : The GPDMA channel : 0 - 7\n+ * @param  NewState    : ENABLE to enable GPDMA or DISABLE to disable GPDMA\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_ChannelCmd(LPC_GPDMA_T *pGPDMA, uint8_t channelNum, FunctionalState NewState);\n+\n+/**\n+ * @brief  Stop a stream DMA transfer\n+ * @param  pGPDMA      : The base of GPDMA on the chip\n+ * @param  ChannelNum  : Channel Number to be closed\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_Stop(LPC_GPDMA_T *pGPDMA, uint8_t ChannelNum);\n+\n+/**\n+ * @brief  The GPDMA stream interrupt status checking\n+ * @param  pGPDMA      : The base of GPDMA on the chip\n+ * @param  ChannelNum  : Channel Number to be checked on interruption\n+ * @return Status:\n+ *              - SUCCESS  : DMA transfer success\n+ *              - ERROR        : DMA transfer failed\n+ */\n+Status Chip_GPDMA_Interrupt(LPC_GPDMA_T *pGPDMA, uint8_t ChannelNum);\n+\n+/**\n+ * @brief  Read the status from different registers according to the type\n+ * @param  pGPDMA  : The base of GPDMA on the chip\n+ * @param  type    : Status mode, should be:\n+ *                     - GPDMA_STAT_INT        : GPDMA Interrupt Status\n+ *                     - GPDMA_STAT_INTTC      : GPDMA Interrupt Terminal Count Request Status\n+ *                     - GPDMA_STAT_INTERR     : GPDMA Interrupt Error Status\n+ *                     - GPDMA_STAT_RAWINTTC   : GPDMA Raw Interrupt Terminal Count Status\n+ *                     - GPDMA_STAT_RAWINTERR  : GPDMA Raw Error Interrupt Status\n+ *                     - GPDMA_STAT_ENABLED_CH : GPDMA Enabled Channel Status\n+ * @param  channel : The GPDMA channel : 0 - 7\n+ * @return SET is interrupt is pending or RESET if not pending\n+ */\n+IntStatus Chip_GPDMA_IntGetStatus(LPC_GPDMA_T *pGPDMA, GPDMA_STATUS_T type, uint8_t channel);\n+\n+/**\n+ * @brief  Clear the Interrupt Flag from different registers according to the type\n+ * @param  pGPDMA  : The base of GPDMA on the chip\n+ * @param  type    : Flag mode, should be:\n+ *                     - GPDMA_STATCLR_INTTC   : GPDMA Interrupt Terminal Count Request\n+ *                     - GPDMA_STATCLR_INTERR  : GPDMA Interrupt Error\n+ * @param  channel : The GPDMA channel : 0 - 7\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_ClearIntPending(LPC_GPDMA_T *pGPDMA, GPDMA_STATECLEAR_T type, uint8_t channel);\n+\n+/**\n+ * @brief  Get a free GPDMA channel for one DMA connection\n+ * @param  pGPDMA                  : The base of GPDMA on the chip\n+ * @param  PeripheralConnection_ID : Some chip fix each peripheral DMA connection on a specified channel ( have not used in 17xx/40xx )\n+ * @return The channel number which is selected\n+ */\n+uint8_t Chip_GPDMA_GetFreeChannel(LPC_GPDMA_T *pGPDMA,\n+                                 uint32_t PeripheralConnection_ID);\n+\n+/**\n+ * @brief  Do a DMA transfer M2M, M2P,P2M or P2P\n+ * @param  pGPDMA      : The base of GPDMA on the chip\n+ * @param  ChannelNum  : Channel used for transfer\n+ * @param  src         : Address of Memory or PeripheralConnection_ID which is the source\n+ * @param  dst         : Address of Memory or PeripheralConnection_ID which is the destination\n+ * @param  TransferType: Select the transfer controller and the type of transfer. Should be:\n+ *                               - GPDMA_TRANSFERTYPE_M2M_CONTROLLER_DMA\n+ *                               - GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA\n+ *                               - GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA\n+ *                               - GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DMA\n+ *                               - GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DestPERIPHERAL\n+ *                               - GPDMA_TRANSFERTYPE_M2P_CONTROLLER_PERIPHERAL\n+ *                               - GPDMA_TRANSFERTYPE_P2M_CONTROLLER_PERIPHERAL\n+ *                               - GPDMA_TRANSFERTYPE_P2P_CONTROLLER_SrcPERIPHERAL\n+ * @param  Size        : The number of DMA transfers\n+ * @return ERROR on error, SUCCESS on success\n+ */\n+Status Chip_GPDMA_Transfer(LPC_GPDMA_T *pGPDMA,\n+                          uint8_t ChannelNum,\n+                          uint32_t src,\n+                          uint32_t dst,\n+                          GPDMA_FLOW_CONTROL_T TransferType,\n+                          uint32_t Size);\n+\n+/**\n+ * @brief  Do a DMA transfer using linked list of descriptors\n+ * @param  pGPDMA          : The base of GPDMA on the chip\n+ * @param  ChannelNum      : Channel used for transfer *must be obtained using Chip_GPDMA_GetFreeChannel()*\n+ * @param  DMADescriptor   : First node in the linked list of descriptors\n+ * @param  TransferType    : Select the transfer controller and the type of transfer. (See, #GPDMA_FLOW_CONTROL_T)\n+ * @return ERROR on error, SUCCESS on success\n+ */\n+Status Chip_GPDMA_SGTransfer(LPC_GPDMA_T *pGPDMA,\n+                            uint8_t ChannelNum,\n+                            const DMA_TransferDescriptor_t *DMADescriptor,\n+                            GPDMA_FLOW_CONTROL_T TransferType);\n+\n+/**\n+ * @brief  Prepare a single DMA descriptor\n+ * @param  pGPDMA          : The base of GPDMA on the chip\n+ * @param  DMADescriptor   : DMA Descriptor to be initialized\n+ * @param  src             : Address of Memory or one of @link #GPDMA_CONN_MEMORY\n+ *                              PeripheralConnection_ID @endlink, which is the source\n+ * @param  dst             : Address of Memory or one of @link #GPDMA_CONN_MEMORY\n+ *                              PeripheralConnection_ID @endlink, which is the destination\n+ * @param  Size            : The number of DMA transfers\n+ * @param  TransferType    : Select the transfer controller and the type of transfer. (See, #GPDMA_FLOW_CONTROL_T)\n+ * @param  NextDescriptor  : Pointer to next descriptor (0 if no more descriptors available)\n+ * @return ERROR on error, SUCCESS on success\n+ */\n+Status Chip_GPDMA_PrepareDescriptor(LPC_GPDMA_T *pGPDMA,\n+                                   DMA_TransferDescriptor_t *DMADescriptor,\n+                                   uint32_t src,\n+                                   uint32_t dst,\n+                                   uint32_t Size,\n+                                   GPDMA_FLOW_CONTROL_T TransferType,\n+                                   const DMA_TransferDescriptor_t *NextDescriptor);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GPDMA_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/gpio_18xx_43xx.h ./lpc_chip_43xx/inc/gpio_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/gpio_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/gpio_18xx_43xx.h\t2017-02-27 20:42:08.444009491 -0300\n@@ -0,0 +1,471 @@\n+/*\n+ * @brief LPC18xx/43xx GPIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GPIO_18XX_43XX_H_\n+#define __GPIO_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GPIO_18XX_43XX CHIP: LPC18xx/43xx GPIO driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  GPIO port register block structure\n+ */\n+typedef struct {               /*!< GPIO_PORT Structure */\n+   __IO uint8_t B[128][32];    /*!< Offset 0x0000: Byte pin registers ports 0 to n; pins PIOn_0 to PIOn_31 */\n+   __IO uint32_t W[32][32];    /*!< Offset 0x1000: Word pin registers port 0 to n */\n+   __IO uint32_t DIR[32];      /*!< Offset 0x2000: Direction registers port n */\n+   __IO uint32_t MASK[32];     /*!< Offset 0x2080: Mask register port n */\n+   __IO uint32_t PIN[32];      /*!< Offset 0x2100: Portpin register port n */\n+   __IO uint32_t MPIN[32];     /*!< Offset 0x2180: Masked port register port n */\n+   __IO uint32_t SET[32];      /*!< Offset 0x2200: Write: Set register for port n Read: output bits for port n */\n+   __O  uint32_t CLR[32];      /*!< Offset 0x2280: Clear port n */\n+   __O  uint32_t NOT[32];      /*!< Offset 0x2300: Toggle port n */\n+} LPC_GPIO_T;\n+\n+/**\n+ * @brief  Initialize GPIO block\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_GPIO_Init(LPC_GPIO_T *pGPIO);\n+\n+/**\n+ * @brief  De-Initialize GPIO block\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO);\n+\n+/**\n+ * @brief  Set a GPIO port/bit state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO port to set\n+ * @param  pin     : GPIO pin to set\n+ * @param  setting : true for high, false for low\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_WritePortBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t pin, bool setting)\n+{\n+   pGPIO->B[port][pin] = setting;\n+}\n+\n+/**\n+ * @brief  Set a GPIO pin state via the GPIO byte register\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to set\n+ * @param  setting : true for high, false for low\n+ * @return Nothing\n+ * @note   This function replaces Chip_GPIO_WritePortBit()\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinState(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool setting)\n+{\n+   pGPIO->B[port][pin] = setting;\n+}\n+\n+/**\n+ * @brief  Read a GPIO state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO port to read\n+ * @param  pin     : GPIO pin to read\n+ * @return true of the GPIO is high, false if low\n+ * @note   It is recommended to use the Chip_GPIO_GetPinState() function instead.\n+ */\n+STATIC INLINE bool Chip_GPIO_ReadPortBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t pin)\n+{\n+   return (bool) pGPIO->B[port][pin];\n+}\n+\n+/**\n+ * @brief  Get a GPIO pin state via the GPIO byte register\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to get state for\n+ * @return true if the GPIO is high, false if low\n+ * @note   This function replaces Chip_GPIO_ReadPortBit()\n+ */\n+STATIC INLINE bool Chip_GPIO_GetPinState(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   return (bool) pGPIO->B[port][pin];\n+}\n+\n+/**\n+ * @brief  Set a GPIO direction\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO port to set\n+ * @param  bit     : GPIO bit to set\n+ * @param  setting : true for output, false for input\n+ * @return Nothing\n+ * @note   It is recommended to use the Chip_GPIO_SetPinDIROutput(),\n+ * Chip_GPIO_SetPinDIRInput() or Chip_GPIO_SetPinDIR() functions instead\n+ * of this function.\n+ */\n+void Chip_GPIO_WriteDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t bit, bool setting);\n+\n+/**\n+ * @brief  Set GPIO direction for a single GPIO pin to an output\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to set direction on as output\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinDIROutput(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->DIR[port] |= 1UL << pin;\n+}\n+\n+/**\n+ * @brief  Set GPIO direction for a single GPIO pin to an input\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to set direction on as input\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinDIRInput(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->DIR[port] &= ~(1UL << pin);\n+}\n+\n+/**\n+ * @brief  Set GPIO direction for a single GPIO pin\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to set direction for\n+ * @param  output  : true for output, false for input\n+ * @return Nothing\n+ */\n+void Chip_GPIO_SetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool output);\n+\n+/**\n+ * @brief  Read a GPIO direction (out or in)\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO port to read\n+ * @param  bit     : GPIO bit to read\n+ * @return true of the GPIO is an output, false if input\n+ * @note   It is recommended to use the Chip_GPIO_GetPinDIR() function instead.\n+ */\n+STATIC INLINE bool Chip_GPIO_ReadDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t bit)\n+{\n+   return (bool) (((pGPIO->DIR[port]) >> bit) & 1);\n+}\n+\n+/**\n+ * @brief  Get GPIO direction for a single GPIO pin\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to get direction for\n+ * @return true if the GPIO is an output, false if input\n+ */\n+STATIC INLINE bool Chip_GPIO_GetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   return (bool) (((pGPIO->DIR[port]) >> pin) & 1);\n+}\n+\n+/**\n+ * @brief  Set Direction for a GPIO port\n+ * @param  pGPIO       : The base of GPIO peripheral on the chip\n+ * @param  portNum     : port Number\n+ * @param  bitValue    : GPIO bit to set\n+ * @param  out         : Direction value, 0 = input, !0 = output\n+ * @return None\n+ * @note   Bits set to '0' are not altered. It is recommended to use the\n+ * Chip_GPIO_SetPortDIR() function instead.\n+ */\n+void Chip_GPIO_SetDir(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue, uint8_t out);\n+\n+/**\n+ * @brief  Set GPIO direction for a all selected GPIO pins to an output\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pinMask : GPIO pin mask to set direction on as output (bits 0..b for pins 0..n)\n+ * @return Nothing\n+ * @note   Sets multiple GPIO pins to the output direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortDIROutput(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)\n+{\n+   pGPIO->DIR[port] |= pinMask;\n+}\n+\n+/**\n+ * @brief  Set GPIO direction for a all selected GPIO pins to an input\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pinMask : GPIO pin mask to set direction on as input (bits 0..b for pins 0..n)\n+ * @return Nothing\n+ * @note   Sets multiple GPIO pins to the input direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an input.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortDIRInput(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)\n+{\n+   pGPIO->DIR[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief  Set GPIO direction for a all selected GPIO pins to an input or output\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pinMask : GPIO pin mask to set direction on (bits 0..b for pins 0..n)\n+ * @param  outSet  : Direction value, false = set as inputs, true = set as outputs\n+ * @return Nothing\n+ * @note   Sets multiple GPIO pins to the input direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an input.\n+ */\n+void Chip_GPIO_SetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pinMask, bool outSet);\n+\n+/**\n+ * @brief  Get GPIO direction for a all GPIO pins\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @return a bitfield containing the input and output states for each pin\n+ * @note   For pins 0..n, a high state in a bit corresponds to an output state for the\n+ * same pin, while a low  state corresponds to an input state.\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_GetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+   return pGPIO->DIR[port];\n+}\n+\n+/**\n+ * @brief  Set GPIO port mask value for GPIO masked read and write\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : port Number\n+ * @param  mask    : Mask value for read and write (only low bits are enabled)\n+ * @return Nothing\n+ * @note   Controls which bits are set or unset when using the masked\n+ * GPIO read and write functions. A low state indicates the pin is settable\n+ * and readable via the masked write and read functions.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortMask(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t mask)\n+{\n+   pGPIO->MASK[port] = mask;\n+}\n+\n+/**\n+ * @brief  Get GPIO port mask value used for GPIO masked read and write\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : port Number\n+ * @return Returns value set with the Chip_GPIO_SetPortMask() function.\n+ * @note   A high bit in the return value indicates that that GPIO pin for the\n+ * port cannot be set using the masked write function.\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_GetPortMask(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+   return pGPIO->MASK[port];\n+}\n+\n+/**\n+ * @brief  Set all GPIO raw pin states (regardless of masking)\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  value   : Value to set all GPIO pin states (0..n) to\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortValue(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t value)\n+{\n+   pGPIO->PIN[port] = value;\n+}\n+\n+/**\n+ * @brief  Get all GPIO raw pin states (regardless of masking)\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @return Current (raw) state of all GPIO pins\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_GetPortValue(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+   return pGPIO->PIN[port];\n+}\n+\n+/**\n+ * @brief  Set all GPIO pin states, but mask via the MASKP0 register\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  value   : Value to set all GPIO pin states (0..n) to\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_SetMaskedPortValue(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t value)\n+{\n+   pGPIO->MPIN[port] = value;\n+}\n+\n+/**\n+ * @brief  Get all GPIO pin statesm but mask via the MASKP0 register\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @return Current (masked) state of all GPIO pins\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_GetMaskedPortValue(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+   return pGPIO->MPIN[port];\n+}\n+\n+/**\n+ * @brief  Set a GPIO port/bit to the high state\n+ * @param  pGPIO       : The base of GPIO peripheral on the chip\n+ * @param  portNum     : port number\n+ * @param  bitValue    : bit(s) in the port to set high\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output. It is recommended to use the\n+ * Chip_GPIO_SetPortOutHigh() function instead.\n+ */\n+STATIC INLINE void Chip_GPIO_SetValue(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue)\n+{\n+   pGPIO->SET[portNum] = bitValue;\n+}\n+\n+/**\n+ * @brief  Set selected GPIO output pins to the high state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pins    : pins (0..n) to set high\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortOutHigh(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+   pGPIO->SET[port] = pins;\n+}\n+\n+/**\n+ * @brief  Set an individual GPIO output pin to the high state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip'\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : pin number (0..n) to set high\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinOutHigh(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->SET[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief  Set a GPIO port/bit to the low state\n+ * @param  pGPIO       : The base of GPIO peripheral on the chip\n+ * @param  portNum     : port number\n+ * @param  bitValue    : bit(s) in the port to set low\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_ClearValue(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue)\n+{\n+   pGPIO->CLR[portNum] = bitValue;\n+}\n+\n+/**\n+ * @brief  Set selected GPIO output pins to the low state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pins    : pins (0..n) to set low\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortOutLow(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+   pGPIO->CLR[port] = pins;\n+}\n+\n+/**\n+ * @brief  Set an individual GPIO output pin to the low state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : pin number (0..n) to set low\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinOutLow(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->CLR[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief  Toggle selected GPIO output pins to the opposite state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pins    : pins (0..n) to toggle\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortToggle(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+   pGPIO->NOT[port] = pins;\n+}\n+\n+/**\n+ * @brief  Toggle an individual GPIO output pin to the opposite state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : pin number (0..n) to toggle\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinToggle(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->NOT[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief  Read current bit states for the selected port\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  portNum : port number to read\n+ * @return Current value of GPIO port\n+ * @note   The current states of the bits for the port are read, regardless of\n+ * whether the GPIO port bits are input or output.\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_ReadValue(LPC_GPIO_T *pGPIO, uint8_t portNum)\n+{\n+   return pGPIO->PIN[portNum];\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GPIO_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/gpiogroup_18xx_43xx.h ./lpc_chip_43xx/inc/gpiogroup_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/gpiogroup_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/gpiogroup_18xx_43xx.h\t2017-02-27 20:42:08.444009491 -0300\n@@ -0,0 +1,205 @@\n+/*\n+ * @brief LPC18xx/43xx GPIO group driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GPIOGROUP_18XX_43XX_H_\n+#define __GPIOGROUP_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GPIOGP_18XX_43XX CHIP: LPC18xx/43xx GPIO group driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief GPIO grouped interrupt register block structure\n+ */\n+typedef struct {                   /*!< GPIO_GROUP_INTn Structure */\n+   __IO uint32_t  CTRL;            /*!< GPIO grouped interrupt control register */\n+   __I  uint32_t  RESERVED0[7];\n+   __IO uint32_t  PORT_POL[8];     /*!< GPIO grouped interrupt port polarity register */\n+   __IO uint32_t  PORT_ENA[8];     /*!< GPIO grouped interrupt port m enable register */\n+   uint32_t       RESERVED1[1000];\n+} LPC_GPIOGROUPINT_T;\n+\n+/**\n+ * LPC18xx/43xx GPIO group bit definitions\n+ */\n+#define GPIOGR_INT      (1 << 0)   /*!< GPIO interrupt pending/clear bit */\n+#define GPIOGR_COMB     (1 << 1)   /*!< GPIO interrupt OR(0)/AND(1) mode bit */\n+#define GPIOGR_TRIG     (1 << 2)   /*!< GPIO interrupt edge(0)/level(1) mode bit */\n+\n+/**\n+ * @brief  Clear interrupt pending status for the selected group\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_ClearIntStatus(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   uint32_t temp;\n+\n+   temp = pGPIOGPINT[group].CTRL;\n+   pGPIOGPINT[group].CTRL = temp | GPIOGR_INT;\n+}\n+\n+/**\n+ * @brief  Returns current GPIO group inetrrupt pending status\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return true if the group interrupt is pending, otherwise false.\n+ */\n+STATIC INLINE bool Chip_GPIOGP_GetIntStatus(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   return (bool) ((pGPIOGPINT[group].CTRL & GPIOGR_INT) != 0);\n+}\n+\n+/**\n+ * @brief  Selected GPIO group functionality for trigger on any pin in group (OR mode)\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectOrMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   pGPIOGPINT[group].CTRL &= ~GPIOGR_COMB;\n+}\n+\n+/**\n+ * @brief  Selected GPIO group functionality for trigger on all matching pins in group (AND mode)\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectAndMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   pGPIOGPINT[group].CTRL |= GPIOGR_COMB;\n+}\n+\n+/**\n+ * @brief  Selected GPIO group functionality edge trigger mode\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectEdgeMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   pGPIOGPINT[group].CTRL &= ~GPIOGR_TRIG;\n+}\n+\n+/**\n+ * @brief  Selected GPIO group functionality level trigger mode\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectLevelMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   pGPIOGPINT[group].CTRL |= GPIOGR_TRIG;\n+}\n+\n+/**\n+ * @brief  Set selected pins for the group and port to low level trigger\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @param  port        : GPIO port number\n+ * @param  pinMask     : Or'ed value of pins to select for low level (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectLowLevel(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+                                             uint8_t group,\n+                                             uint8_t port,\n+                                             uint32_t pinMask)\n+{\n+   pGPIOGPINT[group].PORT_POL[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief  Set selected pins for the group and port to high level trigger\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @param  port        : GPIO port number\n+ * @param  pinMask     : Or'ed value of pins to select for high level (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectHighLevel(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+                                              uint8_t group,\n+                                              uint8_t port,\n+                                              uint32_t pinMask)\n+{\n+   pGPIOGPINT[group].PORT_POL[port] |= pinMask;\n+}\n+\n+/**\n+ * @brief  Disabled selected pins for the group interrupt\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @param  port        : GPIO port number\n+ * @param  pinMask     : Or'ed value of pins to disable interrupt for (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return None\n+ * @note   Disabled pins do not contrinute to the group interrupt.\n+ */\n+STATIC INLINE void Chip_GPIOGP_DisableGroupPins(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+                                               uint8_t group,\n+                                               uint8_t port,\n+                                               uint32_t pinMask)\n+{\n+   pGPIOGPINT[group].PORT_ENA[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief  Enable selected pins for the group interrupt\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @param  port        : GPIO port number\n+ * @param  pinMask     : Or'ed value of pins to enable interrupt for (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return None\n+ * @note   Enabled pins contribute to the group interrupt.\n+ */\n+STATIC INLINE void Chip_GPIOGP_EnableGroupPins(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+                                              uint8_t group,\n+                                              uint8_t port,\n+                                              uint32_t pinMask)\n+{\n+   pGPIOGPINT[group].PORT_ENA[port] |= pinMask;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GPIOGROUP_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/hsadc_18xx_43xx.h ./lpc_chip_43xx/inc/hsadc_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/hsadc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/hsadc_18xx_43xx.h\t2017-02-27 20:42:08.444009491 -0300\n@@ -0,0 +1,575 @@\n+/*\n+ * @brief  LPC18xx/43xx High speed ADC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __HSADC_18XX_43XX_H_\n+#define __HSADC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup HSADC_18XX_43XX CHIP:  LPC18xx/43xx High speed ADC driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief High speed ADC interrupt control structure\n+ */\n+typedef struct {\n+   __O  uint32_t CLR_EN;           /*!< Interrupt clear mask */\n+   __O  uint32_t SET_EN;           /*!< Interrupt set mask */\n+   __I  uint32_t MASK;             /*!< Interrupt mask */\n+   __I  uint32_t STATUS;           /*!< Interrupt status */\n+   __O  uint32_t CLR_STAT;         /*!< Interrupt clear status */\n+   __O  uint32_t SET_STAT;         /*!< Interrupt set status */\n+   uint32_t RESERVED[2];\n+} HSADCINTCTRL_T;\n+\n+/**\n+ * @brief HSADC register block structure\n+ */\n+typedef struct {                   /*!< HSADC Structure */\n+   __O  uint32_t FLUSH;            /*!< Flushes FIFO */\n+   __IO uint32_t DMA_REQ;          /*!< Set or clear DMA write request */\n+   __I  uint32_t FIFO_STS;         /*!< Indicates FIFO fill level status */\n+   __IO uint32_t FIFO_CFG;         /*!< Configures FIFO fill level */\n+   __O  uint32_t TRIGGER;          /*!< Enable software trigger to start descriptor processing */\n+   __IO uint32_t DSCR_STS;         /*!< Indicates active descriptor table and descriptor entry */\n+   __IO uint32_t POWER_DOWN;       /*!< Set or clear power down mode */\n+   __IO uint32_t CONFIG;           /*!< Configures external trigger mode, store channel ID in FIFO and walk-up recovery time from power down */\n+   __IO uint32_t THR[2];           /*!< Configures window comparator A or B levels */\n+   __I  uint32_t LAST_SAMPLE[6];   /*!< Contains last converted sample of input M [M=0..5) and result of window comparator */\n+   uint32_t RESERVED0[49];\n+   __IO uint32_t ADC_SPEED;        /*!< ADC speed control */\n+   __IO uint32_t POWER_CONTROL;    /*!< Configures ADC power vs. speed, DC-in biasing, output format and power gating */\n+   uint32_t RESERVED1[61];\n+   __I  uint32_t FIFO_OUTPUT[16];  /*!< FIFO output mapped to 16 consecutive address locations */\n+   uint32_t RESERVED2[48];\n+   __IO uint32_t DESCRIPTOR[2][8]; /*!< Table 0 and 1 descriptors */\n+   uint32_t RESERVED3[752];\n+   HSADCINTCTRL_T INTS[2];         /*!< Interrupt 0 and 1 control and status registers */\n+} LPC_HSADC_T;\n+\n+#define HSADC_MAX_SAMPLEVAL 0xFFF\n+\n+/**\n+ * @brief  Initialize the High speed ADC\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_HSADC_Init(LPC_HSADC_T *pHSADC);\n+\n+/**\n+ * @brief  Shutdown HSADC\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_HSADC_DeInit(LPC_HSADC_T *pHSADC);\n+\n+/**\n+ * @brief  Flush High speed ADC FIFO\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_FlushFIFO(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->FLUSH = 1;\n+}\n+\n+/**\n+ * @brief  Load a descriptor table from memory by requesting a DMA write\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ * @note   WHat is this used for?\n+ */\n+STATIC INLINE void Chip_HSADC_LoadDMADesc(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->DMA_REQ = 1;\n+}\n+\n+/**\n+ * @brief  Returns current HSADC FIFO fill level\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return FIFO level, 0 for empty, 1 to 15, or 16 for full\n+ * @note   WHat is this used for?\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetFIFOLevel(LPC_HSADC_T *pHSADC)\n+{\n+   return pHSADC->FIFO_STS;\n+}\n+\n+/**\n+ * @brief  Sets up HSADC FIFO trip level and packing\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @param  trip    : HSADC FIFO trip point (1 to 15 samples)\n+ * @param  packed  : true to pack samples, false for no packing\n+ * @return Nothing\n+ * @note   The FIFO trip point is used for the DMA or interrupt level.\n+ *         Sample packging allows packing 2 samples into a single 32-bit\n+ *         word.\n+ */\n+void Chip_HSADC_SetupFIFO(LPC_HSADC_T *pHSADC, uint8_t trip, bool packed);\n+\n+/**\n+ * @brief  Starts a manual (software) trigger of HSADC descriptors\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_SWTrigger(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->TRIGGER = 1;\n+}\n+\n+/**\n+ * @brief  Set active table descriptor index and number\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @param  table   : Table index, 0 or 1\n+ * @param  desc    : Descriptor index, 0 to 7\n+ * @return Nothing\n+ * @note   This function can be used to set active descriptor table and\n+ *         active descriptor entry values. The new values will be updated\n+ *         immediately. This should only be updated when descriptors are\n+ *         not running (halted).\n+ */\n+STATIC INLINE void Chip_HSADC_SetActiveDescriptor(LPC_HSADC_T *pHSADC, uint8_t table, uint8_t desc)\n+{\n+   pHSADC->DSCR_STS = (uint32_t) ((desc << 1) | table);\n+}\n+\n+/**\n+ * @brief  Returns currently active descriptor index being processed\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return the current active descriptor index, 0 to 7\n+ */\n+STATIC INLINE uint8_t Chip_HSADC_GetActiveDescriptorIndex(LPC_HSADC_T *pHSADC)\n+{\n+   return (uint8_t) ((pHSADC->DSCR_STS >> 1) & 0x7);\n+}\n+\n+/**\n+ * @brief  Returns currently active descriptor table being processed\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return the current active descriptor table, 0 or 1\n+ */\n+STATIC INLINE uint8_t Chip_HSADC_GetActiveDescriptorTable(LPC_HSADC_T *pHSADC)\n+{\n+   return (uint8_t) (pHSADC->DSCR_STS & 1);\n+}\n+\n+/**\n+ * @brief  Enables ADC power down mode\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ * @note   In most cases, this function doesn't need to be used as\n+ * the descriptors control power as needed.\n+ */\n+STATIC INLINE void Chip_HSADC_EnablePowerDownMode(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->POWER_DOWN = 1;\n+}\n+\n+/**\n+ * @brief  Disables ADC power down mode\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ * @note   In most cases, this function doesn't need to be used as\n+ * the descriptors control power as needed.\n+ */\n+STATIC INLINE void Chip_HSADC_DisablePowerDownMode(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->POWER_DOWN = 0;\n+}\n+\n+/* HSADC trigger configuration mask types */\n+typedef enum {\n+   HSADC_CONFIG_TRIGGER_OFF = 0,               /*!< ADCHS triggers off */\n+   HSADC_CONFIG_TRIGGER_SW = 1,                /*!< ADCHS software trigger only */\n+   HSADC_CONFIG_TRIGGER_EXT = 2,               /*!< ADCHS external trigger only */\n+   HSADC_CONFIG_TRIGGER_BOTH = 3               /*!< ADCHS both software and external triggers allowed */\n+} HSADC_TRIGGER_MASK_T;\n+\n+/* HSADC trigger configuration mode types */\n+typedef enum {\n+   HSADC_CONFIG_TRIGGER_RISEEXT = (0 << 2),    /*!< ADCHS rising external trigger */\n+   HSADC_CONFIG_TRIGGER_FALLEXT = (1 << 2),    /*!< ADCHS falling external trigger */\n+   HSADC_CONFIG_TRIGGER_LOWEXT = (2 << 2),     /*!< ADCHS low external trigger */\n+   HSADC_CONFIG_TRIGGER_HIGHEXT = (3 << 2)     /*!< ADCHS high external trigger */\n+} HSADC_TRIGGER_MODE_T;\n+\n+/* HSADC trigger configuration sync types */\n+typedef enum {\n+   HSADC_CONFIG_TRIGGER_NOEXTSYNC = (0 << 4),  /*!< do not synchronize external trigger input */\n+   HSADC_CONFIG_TRIGGER_EXTSYNC = (1 << 4),    /*!< synchronize external trigger input */\n+} HSADC_TRIGGER_SYNC_T;\n+\n+/* HSADC trigger configuration channel ID */\n+typedef enum {\n+   HSADC_CHANNEL_ID_EN_NONE = (0 << 5),    /*!< do not add channel ID to FIFO output data */\n+   HSADC_CHANNEL_ID_EN_ADD = (1 << 5),     /*!< add channel ID to FIFO output data */\n+} HSADC_CHANNEL_ID_EN_T;\n+\n+/**\n+ * @brief  Configure HSADC trigger source and recovery time\n+ * @param  pHSADC          : The base of HSADC peripheral on the chip\n+ * @param  mask            : HSADC trigger configuration mask type\n+ * @param  mode            : HSADC trigger configuration mode type\n+ * @param  sync            : HSADC trigger configuration sync type\n+ * @param  chID            : HSADC trigger configuration channel ID enable\n+ * @param  recoveryTime    : ADC recovery time (in HSADC clocks) from powerdown (255 max)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_ConfigureTrigger(LPC_HSADC_T *pHSADC,\n+                                              HSADC_TRIGGER_MASK_T mask,\n+                                              HSADC_TRIGGER_MODE_T mode,\n+                                              HSADC_TRIGGER_SYNC_T sync,\n+                                              HSADC_CHANNEL_ID_EN_T chID, uint16_t recoveryTime)\n+{\n+   pHSADC->CONFIG = (uint32_t) mask | (uint32_t) mode | (uint32_t) sync |\n+                    (uint32_t) chID | (uint32_t) (recoveryTime << 6);\n+}\n+\n+/**\n+ * @brief  Set HSADC Threshold low value\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @param   thrnum : Threshold register value (0 for threshold register A, 1 for threshold register B)\n+ * @param   value  : Threshold low data value (should be 12-bit value)\n+ * @return None\n+ */\n+void Chip_HSADC_SetThrLowValue(LPC_HSADC_T *pHSADC, uint8_t thrnum, uint16_t value);\n+\n+/**\n+ * @brief  Set HSADC Threshold high value\n+ * @param  pHSADC      : The base of HSADC peripheral on the chip\n+ * @param   thrnum      : Threshold register value (0 for threshold register A, 1 for threshold register B)\n+ * @param   value       : Threshold high data value (should be 12-bit value)\n+ * @return None\n+ */\n+void Chip_HSADC_SetThrHighValue(LPC_HSADC_T *pHSADC, uint8_t thrnum, uint16_t value);\n+\n+/** HSADC last sample registers bit fields */\n+#define HSADC_LS_DONE                    (1 << 0)      /*!< Sample conversion complete bit */\n+#define HSADC_LS_OVERRUN                 (1 << 1)      /*!< Sample overrun bit */\n+#define HSADC_LS_RANGE_IN                (0 << 2)      /*!< Threshold range comparison is in range */\n+#define HSADC_LS_RANGE_BELOW             (1 << 2)      /*!< Threshold range comparison is below range */\n+#define HSADC_LS_RANGE_ABOVE             (2 << 2)      /*!< Threshold range comparison is above range */\n+#define HSADC_LS_RANGE(val)              ((val) & 0xC) /*!< Mask for threshold crossing comparison result */\n+#define HSADC_LS_CROSSING_NONE           (0 << 4)      /*!< No threshold crossing detected */\n+#define HSADC_LS_CROSSING_DOWN           (1 << 4)      /*!< Downward threshold crossing detected */\n+#define HSADC_LS_CROSSING_UP             (2 << 4)      /*!< Upward threshold crossing detected */\n+#define HSADC_LS_CROSSING(val)           ((val) & 0x30)    /*!< Mask for threshold crossing comparison result */\n+#define HSADC_LS_DATA(val)               ((val) >> 6)  /*!< Mask data value out of sample */\n+\n+/**\n+ * @brief  Read a ADC last sample register\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  channel : Last sample register to read, 0-5\n+ * @return Current raw value of the indexed last sample register\n+ * @note   This function returns the raw value of the indexed last sample register\n+ * and clears the sample's DONE and OVERRUN statuses if set. You can determine\n+ * the overrun and datavalid status for the sample by masking the return value\n+ * with HSADC_LS_DONE or HSADC_LS_OVERRUN. To get the data value for the sample,\n+ * use the HSADC_LS_DATA(sample) macro. The threshold range and crossing results\n+ * can be determined by using the HSADC_LS_RANGE(sample) and\n+ * HSADC_LS_CROSSING(sample) macros and comparing the result against the\n+ * HSADC_LS_RANGE_* or HSADC_LS_CROSSING_* definitions.<br>\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetLastSample(LPC_HSADC_T *pHSADC, uint8_t channel)\n+{\n+   return pHSADC->LAST_SAMPLE[channel];\n+}\n+\n+/**\n+ * @brief  Setup speed for a input channel\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  channel : Input to set, 0-5\n+ * @param  speed   : Speed value to set (0xF, 0xE, or 0x0), see user manual\n+ * @return Nothing\n+ * @note   It is recommended not to use this function, as the values needed\n+ * for this register will be setup with the Chip_HSADC_SetPowerSpeed() function.\n+ */\n+void Chip_HSADC_SetSpeed(LPC_HSADC_T *pHSADC, uint8_t channel, uint8_t speed);\n+\n+/**\n+ * @brief  Setup (common) HSADC power and speed settings\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  comp2   : True sets up for 2's complement, false sets up for offset binary data format\n+ * @return Nothing\n+ * @note   This function sets up the HSADC current/power/speed settings that\n+ * apply to all HSADC channels (inputs). Based on the HSADC clock rate, it will\n+ * automatically setup the best current setting (CRS) and speed settings (DGEC)\n+ * for all channels. (See user manual).<br>\n+ * This function is also used to set the data format of the sampled data. It is\n+ * recommended to call this function if the HSADC sample rate changes.\n+ */\n+void Chip_HSADC_SetPowerSpeed(LPC_HSADC_T *pHSADC, bool comp2);\n+\n+/* AC-DC coupling selection for vin_neg and vin_pos sides */\n+typedef enum {\n+   HSADC_CHANNEL_NODCBIAS = 0,     /*!< No DC bias */\n+   HSADC_CHANNEL_DCBIAS = 1,       /*!< DC bias on vin_neg side */\n+} HSADC_DCBIAS_T;\n+\n+/**\n+ * @brief  Setup AC-DC coupling selection for a channel\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  channel : Input to set, 0-5\n+ * @param  dcInNeg : AC-DC coupling selection on vin_neg side\n+ * @param  dcInPos : AC-DC coupling selection on vin_pos side\n+ * @return Nothing\n+ * @note   This function sets up the HSADC current/power/speed settings that\n+ * apply to all HSADC channels (inputs). Based on the HSADC clock rate, it will\n+ * automatically setup the best current setting (CRS) and speed settings (DGEC)\n+ * for all channels. (See user manual).<br>\n+ * This function is also used to set the data format of the sampled data. It is\n+ * recommended to call this function if the HSADC sample rate changes.\n+ */\n+void Chip_HSADC_SetACDCBias(LPC_HSADC_T *pHSADC, uint8_t channel,\n+                           HSADC_DCBIAS_T dcInNeg, HSADC_DCBIAS_T dcInPos);\n+\n+/**\n+ * @brief  Enable HSADC power control and band gap reference\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @return Nothing\n+ * @note   This function enables both the HSADC power and band gap\n+ * reference.\n+ */\n+STATIC INLINE void Chip_HSADC_EnablePower(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->POWER_CONTROL |= (1 << 17) | (1 << 18);\n+}\n+\n+/**\n+ * @brief  Disable HSADC power control and band gap reference\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @return Nothing\n+ * @note   This function disables both the HSADC power and band gap\n+ * reference.\n+ */\n+STATIC INLINE void Chip_HSADC_DisablePower(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->POWER_CONTROL &= ~((1 << 17) | (1 << 18));\n+}\n+\n+/** HSADC FIFO registers bit fields for unpacked sample in lower 16 bits */\n+#define HSADC_FIFO_SAMPLE_MASK      (0xFFF)                    /*!< 12-bit sample mask (unpacked) */\n+#define HSADC_FIFO_SAMPLE(val)      ((val) & 0xFFF)            /*!< Macro for stripping out unpacked sample data */\n+#define HSADC_FIFO_CHAN_ID_MASK     (0x7000)               /*!< Channel ID mask */\n+#define HSADC_FIFO_CHAN_ID(val)     (((val) >> 12) & 0x7)  /*!< Macro for stripping out sample data */\n+#define HSADC_FIFO_EMPTY            (0x1 << 15)                /*!< FIFO empty (invalid sample) */\n+#define HSADC_FIFO_SHIFTPACKED(val) ((val) >> 16)          /*!< Shifts the packed FIFO sample into the lower 16-bits of a word */\n+#define HSADC_FIFO_PACKEDMASK       (1UL << 31)                /*!< Packed sample check mask */\n+\n+/**\n+ * @brief  Reads the HSADC FIFO\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @return HSADC FIFO value\n+ * @note   This function reads and pops the HSADC FIFO. The FIFO\n+ * contents can be determined by using the HSADC_FIFO_* macros. If\n+ * FIFO packing is enabled, this may contain 2 samples. Use the\n+ * HSADC_FIFO_SHIFTPACKED macro to shift packed sample data into a\n+ * variable that can be used with the HSADC_FIFO_* macros. Note that\n+ * even if packing is enabled, the packed sample may not be valid.\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetFIFO(LPC_HSADC_T *pHSADC)\n+{\n+   return pHSADC->FIFO_OUTPUT[0];\n+}\n+\n+/** HSADC descriptor registers bit fields and support macros */\n+#define HSADC_DESC_CH(ch)           (ch)               /*!< Converter input channel */\n+#define HSADC_DESC_HALT             (1 << 3)           /*!< Descriptor halt after conversion bit */\n+#define HSADC_DESC_INT              (1 << 4)           /*!< Raise interrupt when ADC result is available bit */\n+#define HSADC_DESC_POWERDOWN        (1 << 5)           /*!< Power down after this conversion bit */\n+#define HSADC_DESC_BRANCH_NEXT      (0 << 6)           /*!< Continue with next descriptor */\n+#define HSADC_DESC_BRANCH_FIRST     (1 << 6)           /*!< Branch to the first descriptor */\n+#define HSADC_DESC_BRANCH_SWAP      (2 << 6)           /*!< Swap tables and branch to the first descriptor of the new table */\n+#define HSADC_DESC_MATCH(val)       ((val) << 8)       /*!< Match value used to trigger a descriptor */\n+#define HSADC_DESC_THRESH_NONE      (0 << 22)          /*!< No threshold detection performed */\n+#define HSADC_DESC_THRESH_A         (1 << 22)          /*!< Use A threshold detection */\n+#define HSADC_DESC_THRESH_B         (2 << 22)          /*!< Use B threshold detection */\n+#define HSADC_DESC_RESET_TIMER      (1 << 24)          /*!< Reset descriptor timer */\n+#define HSADC_DESC_UPDATE_TABLE     (1UL << 31)            /*!< Update table with all 8 descriptors of this table */\n+\n+/**\n+ * @brief  Sets up a raw HSADC descriptor entry\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  table   : Descriptor table number, 0 or 1\n+ * @param  descNo  : Descriptor number to setup, 0 to 7\n+ * @param  desc    : Raw descriptor value (see notes)\n+ * @return Nothing\n+ * @note   This function sets up a descriptor table entry. To setup\n+ * a descriptor entry, select a OR'ed combination of the HSADC_DESC_CH,\n+ * HSADC_DESC_HALT, HSADC_DESC_INT, HSADC_DESC_POWERDOWN, one of\n+ * HSADC_DESC_BRANCH_*, HSADC_DESC_MATCH, one of HSADC_DESC_THRESH_*, and\n+ * HSADC_DESC_RESET_TIMER definitions.<br>\n+ * Example for setting up a table 0, descriptor number 4 entry for input 0:<br>\n+ * Chip_HSADC_SetupDescEntry(LPC_HSADC, 0, 4, (HSADC_DESC_CH(0) | HSADC_DESC_HALT |\n+ *    HSADC_DESC_INT));\n+ */\n+STATIC INLINE void Chip_HSADC_SetupDescEntry(LPC_HSADC_T *pHSADC, uint8_t table,\n+                                            uint8_t descNo, uint32_t desc)\n+{\n+   pHSADC->DESCRIPTOR[table][descNo] = desc;\n+}\n+\n+/**\n+ * @brief  Update all descriptors of a table\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  table   : Descriptor table number, 0 or 1\n+ * @return Nothing\n+ * @note   Updates descriptor table with all 8 descriptors. This\n+ * function should be used after all descriptors are setup with\n+ * the Chip_HSADC_SetupDescEntry() function.\n+ */\n+STATIC INLINE void Chip_HSADC_UpdateDescTable(LPC_HSADC_T *pHSADC, uint8_t table)\n+{\n+   pHSADC->DESCRIPTOR[table][0] |= HSADC_DESC_UPDATE_TABLE;\n+}\n+\n+/* Interrupt selection for interrupt 0 set - these interrupts and statuses\n+   should only be used with the interrupt 0 register set */\n+#define HSADC_INT0_FIFO_FULL         (1 << 0)      /*!< number of samples in FIFO is more than FIFO_LEVEL */\n+#define HSADC_INT0_FIFO_EMPTY        (1 << 1)      /*!< FIFO is empty */\n+#define HSADC_INT0_FIFO_OVERFLOW     (1 << 2)      /*!< FIFO was full; conversion sample is not stored and lost */\n+#define HSADC_INT0_DSCR_DONE         (1 << 3)      /*!< The descriptor INTERRUPT field was enabled and its sample is converted */\n+#define HSADC_INT0_DSCR_ERROR        (1 << 4)      /*!< The ADC was not fully woken up when a sample was converted and the conversion results is unreliable */\n+#define HSADC_INT0_ADC_OVF           (1 << 5)      /*!< Converted sample value was over range of the 12 bit output code */\n+#define HSADC_INT0_ADC_UNF           (1 << 6)      /*!< Converted sample value was under range of the 12 bit output code */\n+\n+/* Interrupt selection for interrupt 1 set - these interrupts and statuses\n+   should only be used with the interrupt 1 register set */\n+#define HSADC_INT1_THCMP_BRANGE(ch)  (1 << ((ch * 5) + 0)) /*!< Input channel result below range */\n+#define HSADC_INT1_THCMP_ARANGE(ch)  (1 << ((ch * 5) + 1)) /*!< Input channel result above range */\n+#define HSADC_INT1_THCMP_DCROSS(ch)  (1 << ((ch * 5) + 2)) /*!< Input channel result downward threshold crossing detected */\n+#define HSADC_INT1_THCMP_UCROSS(ch)  (1 << ((ch * 5) + 3)) /*!< Input channel result upward threshold crossing detected */\n+#define HSADC_INT1_OVERRUN(ch)       (1 << ((ch * 5) + 4)) /*!< New conversion on channel completed and has overwritten the previous contents of register LAST_SAMPLE [0] before it has been read */\n+\n+/**\n+ * @brief  Enable an interrupt for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @param  intMask : Interrupts to enable, use HSADC_INT0_* for group 0\n+ *                    and HSADC_INT1_* values for group 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_EnableInts(LPC_HSADC_T *pHSADC, uint8_t intGrp, uint32_t intMask)\n+{\n+   pHSADC->INTS[intGrp].SET_EN = intMask;\n+}\n+\n+/**\n+ * @brief  Disables an interrupt for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @param  intMask : Interrupts to disable, use HSADC_INT0_* for group 0\n+ *                    and HSADC_INT1_* values for group 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_DisableInts(LPC_HSADC_T *pHSADC, uint8_t intGrp, uint32_t intMask)\n+{\n+   pHSADC->INTS[intGrp].CLR_EN = intMask;\n+}\n+\n+/**\n+ * @brief  Returns enabled interrupt for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @return enabled interrupts for the selected group\n+ * @note   Mask the return value with a HSADC_INT0_* macro for group 0\n+ * or HSADC_INT1_* values for group 1 to determine which interrupts are enabled.\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetEnabledInts(LPC_HSADC_T *pHSADC, uint8_t intGrp)\n+{\n+   return pHSADC->INTS[intGrp].MASK;\n+}\n+\n+/**\n+ * @brief  Returns status for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @return interrupt (pending) status for the selected group\n+ * @note   Mask the return value with a HSADC_INT0_* macro for group 0\n+ * or HSADC_INT1_* values for group 1 to determine which statuses are active.\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetIntStatus(LPC_HSADC_T *pHSADC, uint8_t intGrp)\n+{\n+   return pHSADC->INTS[intGrp].STATUS;\n+}\n+\n+/**\n+ * @brief  Clear a status for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @param  stsMask : Statuses to clear, use HSADC_INT0_* for group 0\n+ *                    and HSADC_INT1_* values for group 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_ClearIntStatus(LPC_HSADC_T *pHSADC, uint8_t intGrp, uint32_t stsMask)\n+{\n+   pHSADC->INTS[intGrp].CLR_STAT = stsMask;\n+}\n+\n+/**\n+ * @brief  Sets a status for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @param  stsMask : Statuses to set, use HSADC_INT0_* for group 0\n+ *                    and HSADC_INT1_* values for group 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_SetIntStatus(LPC_HSADC_T *pHSADC, uint8_t intGrp, uint32_t stsMask)\n+{\n+   pHSADC->INTS[intGrp].SET_STAT = stsMask;\n+}\n+\n+/**\n+ * @brief  Returns the clock rate in Hz for the HSADC\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return clock rate in Hz for the HSADC\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetBaseClockRate(LPC_HSADC_T *pHSADC)\n+{\n+   (void) pHSADC;\n+\n+   /* Return computed sample rate for the high speed ADC peripheral */\n+   return Chip_Clock_GetRate(CLK_ADCHS);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __HSADC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/i2c_18xx_43xx.h ./lpc_chip_43xx/inc/i2c_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/i2c_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/i2c_18xx_43xx.h\t2017-02-27 20:42:08.444009491 -0300\n@@ -0,0 +1,400 @@\n+/*\n+ * @brief LPC18xx/43xx I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2C_18XX_43XX_H_\n+#define __I2C_18XX_43XX_H_\n+#include \"i2c_common_18xx_43xx.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/**\n+ * @ingroup I2C_18XX_43XX\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Return values for SLAVE handler\n+ * @note\n+ * Chip drivers will usally be designed to match their events with this value\n+ */\n+#define RET_SLAVE_TX    6  /**< Return value, when 1 byte TX'd successfully */\n+#define RET_SLAVE_RX    5  /**< Return value, when 1 byte RX'd successfully */\n+#define RET_SLAVE_IDLE  2  /**< Return value, when slave enter idle mode */\n+#define RET_SLAVE_BUSY  0  /**< Return value, when slave is busy */\n+\n+/**\n+ * @brief I2C state handle return values\n+ */\n+#define I2C_STA_STO_RECV            0x20\n+\n+/*\n+ * @brief I2C return status code definitions\n+ */\n+#define I2C_I2STAT_NO_INF                       ((0xF8))/*!< No relevant information */\n+#define I2C_I2STAT_BUS_ERROR                    ((0x00))/*!< Bus Error */\n+\n+/*\n+ * @brief I2C status values\n+ */\n+#define I2C_SETUP_STATUS_ARBF   (1 << 8)   /**< Arbitration false */\n+#define I2C_SETUP_STATUS_NOACKF (1 << 9)   /**< No ACK returned */\n+#define I2C_SETUP_STATUS_DONE   (1 << 10)  /**< Status DONE */\n+\n+/*\n+ * @brief I2C state handle return values\n+ */\n+#define I2C_OK                      0x00\n+#define I2C_BYTE_SENT               0x01\n+#define I2C_BYTE_RECV               0x02\n+#define I2C_LAST_BYTE_RECV          0x04\n+#define I2C_SEND_END                0x08\n+#define I2C_RECV_END                0x10\n+#define I2C_STA_STO_RECV            0x20\n+\n+#define I2C_ERR                     (0x10000000)\n+#define I2C_NAK_RECV                (0x10000000 | 0x01)\n+\n+#define I2C_CheckError(ErrorCode)   (ErrorCode & 0x10000000)\n+\n+/*\n+ * @brief I2C monitor control configuration defines\n+ */\n+#define I2C_MONITOR_CFG_SCL_OUTPUT  I2C_I2MMCTRL_ENA_SCL       /**< SCL output enable */\n+#define I2C_MONITOR_CFG_MATCHALL    I2C_I2MMCTRL_MATCH_ALL     /**< Select interrupt register match */\n+\n+/**\n+ * @brief  I2C Slave Identifiers\n+ */\n+typedef enum {\n+   I2C_SLAVE_GENERAL,  /**< Slave ID for general calls */\n+   I2C_SLAVE_0,        /**< Slave ID fo Slave Address 0 */\n+   I2C_SLAVE_1,        /**< Slave ID fo Slave Address 1 */\n+   I2C_SLAVE_2,        /**< Slave ID fo Slave Address 2 */\n+   I2C_SLAVE_3,        /**< Slave ID fo Slave Address 3 */\n+   I2C_SLAVE_NUM_INTERFACE /**< Number of slave interfaces */\n+} I2C_SLAVE_ID;\n+\n+/**\n+ * @brief  I2C transfer status\n+ */\n+typedef enum {\n+   I2C_STATUS_DONE,    /**< Transfer done successfully */\n+   I2C_STATUS_NAK,     /**< NAK received during transfer */\n+   I2C_STATUS_ARBLOST, /**< Aribitration lost during transfer */\n+   I2C_STATUS_BUSERR,  /**< Bus error in I2C transfer */\n+   I2C_STATUS_BUSY,    /**< I2C is busy doing transfer */\n+   I2C_STATUS_SLAVENAK,/**< NAK received after SLA+W or SLA+R */\n+} I2C_STATUS_T;\n+\n+/**\n+ * @brief Master transfer data structure definitions\n+ */\n+typedef struct {\n+   uint8_t slaveAddr;      /**< 7-bit I2C Slave address */\n+   const uint8_t *txBuff;  /**< Pointer to array of bytes to be transmitted */\n+   int     txSz;           /**< Number of bytes in transmit array,\n+                              if 0 only receive transfer will be carried on */\n+   uint8_t *rxBuff;        /**< Pointer memory where bytes received from I2C be stored */\n+   int     rxSz;           /**< Number of bytes to received,\n+                              if 0 only transmission we be carried on */\n+   I2C_STATUS_T status;    /**< Status of the current I2C transfer */\n+} I2C_XFER_T;\n+\n+/**\n+ * @brief  I2C interface IDs\n+ * @note\n+ * All Chip functions will take this as the first parameter,\n+ * I2C_NUM_INTERFACE must never be used for calling any Chip\n+ * functions, it is only used to find the number of interfaces\n+ * available in the Chip.\n+ */\n+typedef enum I2C_ID {\n+   I2C0,               /**< ID I2C0 */\n+   I2C1,               /**< ID I2C1 */\n+   I2C_NUM_INTERFACE   /**< Number of I2C interfaces in the chip */\n+} I2C_ID_T;\n+\n+/**\n+ * @brief  I2C master events\n+ */\n+typedef enum {\n+   I2C_EVENT_WAIT = 1, /**< I2C Wait event */\n+   I2C_EVENT_DONE,     /**< Done event that wakes up Wait event */\n+   I2C_EVENT_LOCK,     /**< Re-entrency lock event for I2C transfer */\n+   I2C_EVENT_UNLOCK,   /**< Re-entrency unlock event for I2C transfer */\n+   I2C_EVENT_SLAVE_RX, /**< Slave receive event */\n+   I2C_EVENT_SLAVE_TX, /**< Slave transmit event */\n+} I2C_EVENT_T;\n+\n+/**\n+ * @brief  Event handler function type\n+ */\n+typedef void (*I2C_EVENTHANDLER_T)(I2C_ID_T, I2C_EVENT_T);\n+\n+/**\n+ * @brief  Initializes the LPC_I2C peripheral with specified parameter.\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ */\n+void Chip_I2C_Init(I2C_ID_T id);\n+\n+/**\n+ * @brief  De-initializes the I2C peripheral registers to their default reset values\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ */\n+void Chip_I2C_DeInit(I2C_ID_T id);\n+\n+/**\n+ * @brief  Set up clock rate for LPC_I2C peripheral.\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  clockrate   : Target clock rate value to initialized I2C peripheral (Hz)\n+ * @return Nothing\n+ * @note\n+ * Parameter @a clockrate for I2C0 should be from 1000 up to 1000000\n+ * (1 KHz to 1 MHz), as I2C0 support Fast Mode Plus. If the @a clockrate\n+ * is more than 400 KHz (Fast Plus Mode) Board_I2C_EnableFastPlus()\n+ * must be called prior to calling this function.\n+ */\n+void Chip_I2C_SetClockRate(I2C_ID_T id, uint32_t clockrate);\n+\n+/**\n+ * @brief  Get current clock rate for LPC_I2C peripheral.\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return The current I2C peripheral clock rate\n+ */\n+uint32_t Chip_I2C_GetClockRate(I2C_ID_T id);\n+\n+/**\n+ * @brief  Transmit and Receive data in master mode\n+ * @param  id      : I2C peripheral selected (I2C0, I2C1 etc)\n+ * @param  xfer    : Pointer to a I2C_XFER_T structure see notes below\n+ * @return\n+ * Any of #I2C_STATUS_T values, xfer->txSz will have number of bytes\n+ * not sent due to error, xfer->rxSz will have the number of bytes yet\n+ * to be received.\n+ * @note\n+ * The parameter @a xfer should have its member @a slaveAddr initialized\n+ * to the 7-Bit slave address to which the master will do the xfer, Bit0\n+ * to bit6 should have the address and Bit8 is ignored. During the transfer\n+ * no code (like event handler) must change the content of the memory\n+ * pointed to by @a xfer. The member of @a xfer, @a txBuff and @a txSz be\n+ * initialized to the memory from which the I2C must pick the data to be\n+ * transfered to slave and the number of bytes to send respectively, similarly\n+ * @a rxBuff and @a rxSz must have pointer to memroy where data received\n+ * from slave be stored and the number of data to get from slave respectilvely.\n+ */\n+int Chip_I2C_MasterTransfer(I2C_ID_T id, I2C_XFER_T *xfer);\n+\n+/**\n+ * @brief  Transmit data to I2C slave using I2C Master mode\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 .. etc)\n+ * @param  slaveAddr   : Slave address to which the data be written\n+ * @param  buff        : Pointer to buffer having the array of data\n+ * @param  len         : Number of bytes to be transfered from @a buff\n+ * @return Number of bytes successfully transfered\n+ */\n+int Chip_I2C_MasterSend(I2C_ID_T id, uint8_t slaveAddr, const uint8_t *buff, uint8_t len);\n+\n+/**\n+ * @brief  Transfer a command to slave and receive data from slave after a repeated start\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  slaveAddr   : Slave address of the I2C device\n+ * @param  cmd         : Command (Address/Register) to be written\n+ * @param  buff        : Pointer to memory that will hold the data received\n+ * @param  len         : Number of bytes to receive\n+ * @return Number of bytes successfully received\n+ */\n+int Chip_I2C_MasterCmdRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t cmd, uint8_t *buff, int len);\n+\n+/**\n+ * @brief  Get pointer to current function handling the events\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Pointer to function handing events of I2C\n+ */\n+I2C_EVENTHANDLER_T Chip_I2C_GetMasterEventHandler(I2C_ID_T id);\n+\n+/**\n+ * @brief  Set function that must handle I2C events\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  event       : Pointer to function that will handle the event (Should not be NULL)\n+ * @return 1 when successful, 0 when a transfer is on going with its own event handler\n+ */\n+int Chip_I2C_SetMasterEventHandler(I2C_ID_T id, I2C_EVENTHANDLER_T event);\n+\n+/**\n+ * @brief  Set function that must handle I2C events\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  slaveAddr   : Slave address from which data be read\n+ * @param  buff        : Pointer to memory where data read be stored\n+ * @param  len         : Number of bytes to read from slave\n+ * @return Number of bytes read successfully\n+ */\n+int Chip_I2C_MasterRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t *buff, int len);\n+\n+/**\n+ * @brief  Default event handler for polling operation\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  event   : Event ID of the event that called the function\n+ * @return Nothing\n+ */\n+void Chip_I2C_EventHandlerPolling(I2C_ID_T id, I2C_EVENT_T event);\n+\n+/**\n+ * @brief  Default event handler for interrupt base operation\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  event   : Event ID of the event that called the function\n+ * @return Nothing\n+ */\n+void Chip_I2C_EventHandler(I2C_ID_T id, I2C_EVENT_T event);\n+\n+/**\n+ * @brief  I2C Master transfer state change handler\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ * @note   Usually called from the appropriate Interrupt handler\n+ */\n+void Chip_I2C_MasterStateHandler(I2C_ID_T id);\n+\n+/**\n+ * @brief  Disable I2C peripheral's operation\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ */\n+void Chip_I2C_Disable(I2C_ID_T id);\n+\n+/**\n+ * @brief  Checks if master xfer in progress\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return 1 if master xfer in progress 0 otherwise\n+ * @note\n+ * This API is generally used in interrupt handler\n+ * of the application to decide whether to call\n+ * master state handler or to call slave state handler\n+ */\n+int Chip_I2C_IsMasterActive(I2C_ID_T id);\n+\n+/**\n+ * @brief  Setup a slave I2C device\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  sid         : I2C Slave peripheral ID (I2C_SLAVE_0, I2C_SLAVE_1 etc)\n+ * @param  xfer        : Pointer to transfer structure (see note below for more info)\n+ * @param  event       : Event handler for slave transfers\n+ * @param  addrMask    : Address mask to use along with slave address (see notes below for more info)\n+ * @return Nothing\n+ * @note\n+ * Parameter @a xfer should point to a valid I2C_XFER_T structure object\n+ * and must have @a slaveAddr initialized with 7bit Slave address (From Bit1 to Bit7),\n+ * Bit0 when set enables general call handling, @a slaveAddr along with @a addrMask will\n+ * be used to match the slave address. @a rxBuff and @a txBuff must point to valid buffers\n+ * where slave can receive or send the data from, size of which will be provided by\n+ * @a rxSz and @a txSz respectively. Function pointed to by @a event will be called\n+ * for the following events #I2C_EVENT_SLAVE_RX (One byte of data received successfully\n+ * from the master and stored inside memory pointed by xfer->rxBuff, incremented\n+ * the pointer and decremented the @a xfer->rxSz), #I2C_EVENT_SLAVE_TX (One byte of\n+ * data from xfer->txBuff was sent to master successfully, incremented the pointer\n+ * and decremented xfer->txSz), #I2C_EVENT_DONE (Master is done doing its transfers\n+ * with the slave).<br>\n+ * <br>Bit-0 of the parameter @a addrMask is reserved and should always be 0. Any bit (BIT1\n+ * to BIT7) set in @a addrMask will make the corresponding bit in *xfer->slaveAddr* as\n+ * don't care. Thit is, if *xfer->slaveAddr* is (0x10 << 1) and @a addrMask is (0x03 << 1) then\n+ * 0x10, 0x11, 0x12, 0x13 will all be considered as valid slave addresses for the registered\n+ * slave. Upon receving any event *xfer->slaveAddr* (BIT1 to BIT7) will hold the actual\n+ * address which was received from master.<br>\n+ * <br><b>General Call Handling</b><br>\n+ * Slave can receive data from master using general call address (0x00). General call\n+ * handling must be setup as given below\n+ *      - Call Chip_I2C_SlaveSetup() with argument @a sid as I2C_SLAVE_GENERAL\n+ *          - xfer->slaveAddr ignored, argument @a addrMask ignored\n+ *          - function provided by @a event will registered to be called when slave received data using addr 0x00\n+ *          - xfer->rxBuff and xfer->rxSz should be valid in argument @a xfer\n+ *      - To handle General Call only (No other slaves are configured)\n+ *          - Call Chip_I2C_SlaveSetup() with sid as I2C_SLAVE_X (X=0,1,2,3)\n+ *          - setup @a xfer with slaveAddr member set to 0, @a event is ignored hence can be NULL\n+ *          - provide @a addrMask (typically 0, if not you better be knowing what you are doing)\n+ *      - To handler General Call when other slave is active\n+ *          - Call Chip_I2C_SlaveSetup() with sid as I2C_SLAVE_X (X=0,1,2,3)\n+ *          - setup @a xfer with slaveAddr member set to 7-Bit Slave address [from Bit1 to 7]\n+ *          - Set Bit0 of @a xfer->slaveAddr as 1\n+ *          - Provide appropriate @a addrMask\n+ *          - Argument @a event must point to function, that handles events from actual slaveAddress and not the GC\n+ * @warning\n+ * If the slave has only one byte in its txBuff, once that byte is transfered to master the event handler\n+ * will be called for event #I2C_EVENT_DONE. If the master attempts to read more bytes in the same transfer\n+ * then the slave hardware will send 0xFF to master till the end of transfer, event handler will not be\n+ * called to notify this. For more info see section below<br>\n+ * <br><b> Last data handling in slave </b><br>\n+ * If the user wants to implement a slave which will read a byte from a specific location over and over\n+ * again whenever master reads the slave. If the user initializes the xfer->txBuff as the location to read\n+ * the byte from and xfer->txSz as 1, then say, if master reads one byte; slave will send the byte read from\n+ * xfer->txBuff and will call the event handler with #I2C_EVENT_DONE. If the master attempts to read another\n+ * byte instead of sending the byte read from xfer->txBuff the slave hardware will send 0xFF and no event will\n+ * occur. To handle this issue, slave should set xfer->txSz to 2, in which case when master reads the byte\n+ * event handler will be called with #I2C_EVENT_SLAVE_TX, in which the slave implementation can reset the buffer\n+ * and size back to original location (i.e, xfer->txBuff--, xfer->txSz++), if the master reads another byte\n+ * in the same transfer, byte read from xfer->txBuff will be sent and #I2C_EVENT_SLAVE_TX will be called again, and\n+ * the process repeats.\n+ */\n+void Chip_I2C_SlaveSetup(I2C_ID_T id,\n+                        I2C_SLAVE_ID sid,\n+                        I2C_XFER_T *xfer,\n+                        I2C_EVENTHANDLER_T event,\n+                        uint8_t addrMask);\n+\n+/**\n+ * @brief  I2C Slave event handler\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ */\n+void Chip_I2C_SlaveStateHandler(I2C_ID_T id);\n+\n+/**\n+ * @brief  I2C peripheral state change checking\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return 1 if I2C peripheral @a id has changed its state,\n+ *          0 if there is no state change\n+ * @note\n+ * This function must be used by the application when\n+ * the polling has to be done based on state change.\n+ */\n+int Chip_I2C_IsStateChanged(I2C_ID_T id);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2C_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/i2c_common_18xx_43xx.h ./lpc_chip_43xx/inc/i2c_common_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/i2c_common_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/i2c_common_18xx_43xx.h\t2017-02-27 20:42:08.444009491 -0300\n@@ -0,0 +1,200 @@\n+/*\n+ * @brief LPC18xx_43xx I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2C_COMMON_18XX_43XX_H_\n+#define __I2C_COMMON_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2C_18XX_43XX CHIP: LPC18xx_43xx I2C driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief I2C register block structure\n+ */\n+typedef struct {               /* I2C0 Structure         */\n+   __IO uint32_t CONSET;       /*!< I2C Control Set Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is set. Writing a zero has no effect on the corresponding bit in the I2C control register. */\n+   __I  uint32_t STAT;         /*!< I2C Status Register. During I2C operation, this register provides detailed status codes that allow software to determine the next action needed. */\n+   __IO uint32_t DAT;          /*!< I2C Data Register. During master or slave transmit mode, data to be transmitted is written to this register. During master or slave receive mode, data that has been received may be read from this register. */\n+   __IO uint32_t ADR0;         /*!< I2C Slave Address Register 0. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. */\n+   __IO uint32_t SCLH;         /*!< SCH Duty Cycle Register High Half Word. Determines the high time of the I2C clock. */\n+   __IO uint32_t SCLL;         /*!< SCL Duty Cycle Register Low Half Word. Determines the low time of the I2C clock. SCLL and SCLH together determine the clock frequency generated by an I2C master and certain times used in slave mode. */\n+   __O  uint32_t CONCLR;       /*!< I2C Control Clear Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is cleared. Writing a zero has no effect on the corresponding bit in the I2C control register. */\n+   __IO uint32_t MMCTRL;       /*!< Monitor mode control register. */\n+   __IO uint32_t ADR1;         /*!< I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. */\n+   __IO uint32_t ADR2;         /*!< I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. */\n+   __IO uint32_t ADR3;         /*!< I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. */\n+   __I  uint32_t DATA_BUFFER;  /*!< Data buffer register. The contents of the 8 MSBs of the DAT shift register will be transferred to the DATA_BUFFER automatically after every nine bits (8 bits of data plus ACK or NACK) has been received on the bus. */\n+   __IO uint32_t MASK[4];      /*!< I2C Slave address mask register */\n+} LPC_I2C_T;\n+\n+/*\n+ * @brief I2C Control Set register description\n+ */\n+#define I2C_I2CONSET_AA             ((0x04))/*!< Assert acknowledge flag */\n+#define I2C_I2CONSET_SI             ((0x08))/*!< I2C interrupt flag */\n+#define I2C_I2CONSET_STO            ((0x10))/*!< STOP flag */\n+#define I2C_I2CONSET_STA            ((0x20))/*!< START flag */\n+#define I2C_I2CONSET_I2EN           ((0x40))/*!< I2C interface enable */\n+\n+/*\n+ * @brief I2C Control Clear register description\n+ */\n+#define I2C_I2CONCLR_AAC            ((1 << 2)) /*!< Assert acknowledge Clear bit */\n+#define I2C_I2CONCLR_SIC            ((1 << 3)) /*!< I2C interrupt Clear bit */\n+#define I2C_I2CONCLR_STOC           ((1 << 4)) /*!< I2C STOP Clear bit */\n+#define I2C_I2CONCLR_STAC           ((1 << 5)) /*!< START flag Clear bit */\n+#define I2C_I2CONCLR_I2ENC          ((1 << 6)) /*!< I2C interface Disable bit */\n+\n+/*\n+ * @brief  I2C Common Control register description\n+ */\n+#define I2C_CON_AA            (1UL << 2)   /*!< Assert acknowledge bit */\n+#define I2C_CON_SI            (1UL << 3)   /*!< I2C interrupt bit */\n+#define I2C_CON_STO           (1UL << 4)   /*!< I2C STOP bit */\n+#define I2C_CON_STA           (1UL << 5)   /*!< START flag bit */\n+#define I2C_CON_I2EN          (1UL << 6)   /*!< I2C interface bit */\n+\n+/*\n+ * @brief I2C Status Code definition (I2C Status register)\n+ */\n+#define I2C_STAT_CODE_BITMASK       ((0xF8))/*!< Return Code mask in I2C status register */\n+#define I2C_STAT_CODE_ERROR         ((0xFF))/*!< Return Code error mask in I2C status register */\n+\n+/*\n+ * @brief I2C Master transmit mode\n+ */\n+#define I2C_I2STAT_M_TX_START                   ((0x08))/*!< A start condition has been transmitted */\n+#define I2C_I2STAT_M_TX_RESTART                 ((0x10))/*!< A repeat start condition has been transmitted */\n+#define I2C_I2STAT_M_TX_SLAW_ACK                ((0x18))/*!< SLA+W has been transmitted, ACK has been received */\n+#define I2C_I2STAT_M_TX_SLAW_NACK               ((0x20))/*!< SLA+W has been transmitted, NACK has been received */\n+#define I2C_I2STAT_M_TX_DAT_ACK                 ((0x28))/*!< Data has been transmitted, ACK has been received */\n+#define I2C_I2STAT_M_TX_DAT_NACK                ((0x30))/*!< Data has been transmitted, NACK has been received */\n+#define I2C_I2STAT_M_TX_ARB_LOST                ((0x38))/*!< Arbitration lost in SLA+R/W or Data bytes */\n+\n+/*\n+ * @brief I2C Master receive mode\n+ */\n+#define I2C_I2STAT_M_RX_START                   ((0x08))/*!< A start condition has been transmitted */\n+#define I2C_I2STAT_M_RX_RESTART                 ((0x10))/*!< A repeat start condition has been transmitted */\n+#define I2C_I2STAT_M_RX_ARB_LOST                ((0x38))/*!< Arbitration lost */\n+#define I2C_I2STAT_M_RX_SLAR_ACK                ((0x40))/*!< SLA+R has been transmitted, ACK has been received */\n+#define I2C_I2STAT_M_RX_SLAR_NACK               ((0x48))/*!< SLA+R has been transmitted, NACK has been received */\n+#define I2C_I2STAT_M_RX_DAT_ACK                 ((0x50))/*!< Data has been received, ACK has been returned */\n+#define I2C_I2STAT_M_RX_DAT_NACK                ((0x58))/*!< Data has been received, NACK has been returned */\n+\n+/*\n+ * @brief I2C Slave receive mode\n+ */\n+#define I2C_I2STAT_S_RX_SLAW_ACK                ((0x60))/*!< Own slave address has been received, ACK has been returned */\n+#define I2C_I2STAT_S_RX_ARB_LOST_M_SLA          ((0x68))/*!< Arbitration lost in SLA+R/W as master */\n+// #define I2C_I2STAT_S_RX_SLAW_ACK                ((0x68)) /*!< Own SLA+W has been received, ACK returned */\n+#define I2C_I2STAT_S_RX_GENCALL_ACK             ((0x70))/*!< General call address has been received, ACK has been returned */\n+#define I2C_I2STAT_S_RX_ARB_LOST_M_GENCALL      ((0x78))/*!< Arbitration lost in SLA+R/W (GENERAL CALL) as master */\n+// #define I2C_I2STAT_S_RX_GENCALL_ACK             ((0x78)) /*!< General call address has been received, ACK has been returned */\n+#define I2C_I2STAT_S_RX_PRE_SLA_DAT_ACK         ((0x80))/*!< Previously addressed with own SLA; Data has been received, ACK has been returned */\n+#define I2C_I2STAT_S_RX_PRE_SLA_DAT_NACK        ((0x88))/*!< Previously addressed with own SLA;Data has been received and NOT ACK has been returned */\n+#define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_ACK     ((0x90))/*!< Previously addressed with General Call; Data has been received and ACK has been returned */\n+#define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_NACK    ((0x98))/*!< Previously addressed with General Call; Data has been received and NOT ACK has been returned */\n+#define I2C_I2STAT_S_RX_STA_STO_SLVREC_SLVTRX   ((0xA0))/*!< A STOP condition or repeated START condition has been received while still addressed as SLV/REC (Slave Receive) or\n+                                                          SLV/TRX (Slave Transmit) */\n+\n+/*\n+ * @brief I2C Slave transmit mode\n+ */\n+#define I2C_I2STAT_S_TX_SLAR_ACK                ((0xA8))/*!< Own SLA+R has been received, ACK has been returned */\n+#define I2C_I2STAT_S_TX_ARB_LOST_M_SLA          ((0xB0))/*!< Arbitration lost in SLA+R/W as master */\n+// #define I2C_I2STAT_S_TX_SLAR_ACK                ((0xB0)) /*!< Own SLA+R has been received, ACK has been returned */\n+#define I2C_I2STAT_S_TX_DAT_ACK                 ((0xB8))/*!< Data has been transmitted, ACK has been received */\n+#define I2C_I2STAT_S_TX_DAT_NACK                ((0xC0))/*!< Data has been transmitted, NACK has been received */\n+#define I2C_I2STAT_S_TX_LAST_DAT_ACK            ((0xC8))/*!< Last data byte in I2DAT has been transmitted (AA = 0); ACK has been received */\n+#define I2C_SLAVE_TIME_OUT                      0x10000000UL/*!< Time out in case of using I2C slave mode */\n+\n+/*\n+ * @brief I2C Data register definition\n+ */\n+#define I2C_I2DAT_BITMASK           ((0xFF))/*!< Mask for I2DAT register */\n+#define I2C_I2DAT_IDLE_CHAR         (0xFF) /*!< Idle data value will be send out in slave mode in case of the actual expecting data requested from the master is greater than\n+                                                its sending data length that can be supported */\n+\n+/*\n+ * @brief I2C Monitor mode control register description\n+ */\n+#define I2C_I2MMCTRL_MM_ENA         ((1 << 0))         /**< Monitor mode enable */\n+#define I2C_I2MMCTRL_ENA_SCL        ((1 << 1))         /**< SCL output enable */\n+#define I2C_I2MMCTRL_MATCH_ALL      ((1 << 2))         /**< Select interrupt register match */\n+#define I2C_I2MMCTRL_BITMASK        ((0x07))       /**< Mask for I2MMCTRL register */\n+\n+/*\n+ * @brief I2C Data buffer register description\n+ */\n+#define I2DATA_BUFFER_BITMASK       ((0xFF))/*!< I2C Data buffer register bit mask */\n+\n+/*\n+ * @brief I2C Slave Address registers definition\n+ */\n+#define I2C_I2ADR_GC                ((1 << 0)) /*!< General Call enable bit */\n+#define I2C_I2ADR_BITMASK           ((0xFF))/*!< I2C Slave Address registers bit mask */\n+\n+/*\n+ * @brief I2C Mask Register definition\n+ */\n+#define I2C_I2MASK_MASK(n)          ((n & 0xFE))/*!< I2C Mask Register mask field */\n+\n+/*\n+ * @brief I2C SCL HIGH duty cycle Register definition\n+ */\n+#define I2C_I2SCLH_BITMASK          ((0xFFFF)) /*!< I2C SCL HIGH duty cycle Register bit mask */\n+\n+/*\n+ * @brief I2C SCL LOW duty cycle Register definition\n+ */\n+#define I2C_I2SCLL_BITMASK          ((0xFFFF)) /*!< I2C SCL LOW duty cycle Register bit mask */\n+\n+/*\n+ * @brief I2C monitor control configuration defines\n+ */\n+#define I2C_MONITOR_CFG_SCL_OUTPUT  I2C_I2MMCTRL_ENA_SCL       /**< SCL output enable */\n+#define I2C_MONITOR_CFG_MATCHALL    I2C_I2MMCTRL_MATCH_ALL     /**< Select interrupt register match */\n+\n+/**\n+ * @}\n+ */\n+\n+ #ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2C_COMMON_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/i2cm_18xx_43xx.h ./lpc_chip_43xx/inc/i2cm_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/i2cm_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/i2cm_18xx_43xx.h\t2017-02-27 20:42:08.448009492 -0300\n@@ -0,0 +1,419 @@\n+/*\n+ * @brief LPC18xx/43xx I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2CM_18XX_43XX_H_\n+#define __I2CM_18XX_43XX_H_\n+\n+#include \"i2c_common_18xx_43xx.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2CM_18XX_43XX CHIP: LPC18xx/43xx I2C master-only driver\n+ * @ingroup I2C_18XX_43XX\n+ * This driver only works in master mode. To describe the I2C transactions\n+ * following symbols are used in driver documentation.\n+ *\n+ * Key to symbols\n+ * ==============\n+ * S     (1 bit) : Start bit\n+ * P     (1 bit) : Stop bit\n+ * Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.\n+ * A, NA (1 bit) : Acknowledge and Not-Acknowledge bit.\n+ * Addr  (7 bits): I2C 7 bit address. Note that this can be expanded as usual to\n+ *                 get a 10 bit I2C address.\n+ * Data  (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh\n+ *                 for 16 bit data.\n+ * [..]: Data sent by I2C device, as opposed to data sent by the host adapter.\n+ * @{\n+ */\n+\n+/** I2CM_18XX_43XX_OPTIONS_TYPES I2C master transfer options\n+ * @{\n+ */\n+\n+/** Ignore NACK during data transfer. By default transfer is aborted. */\n+#define I2CM_XFER_OPTION_IGNORE_NACK     0x01\n+/** ACK last byte received. By default we NACK last byte we receive per I2C spec. */\n+#define I2CM_XFER_OPTION_LAST_RX_ACK     0x02\n+\n+/**\n+ * @}\n+ */\n+\n+/** I2CM_18XX_43XX_STATUS_TYPES I2C master transfer status types\n+ * @{\n+ */\n+\n+#define I2CM_STATUS_OK              0x00       /*!< Requested Request was executed successfully. */\n+#define I2CM_STATUS_ERROR           0x01       /*!< Unknown error condition. */\n+#define I2CM_STATUS_NAK             0x02       /*!< No acknowledgement received from slave. */\n+#define I2CM_STATUS_BUS_ERROR       0x03       /*!< I2C bus error */\n+#define I2CM_STATUS_SLAVE_NAK       0x04       /*!< No device responded for given slave address during SLA+W or SLA+R */\n+#define I2CM_STATUS_ARBLOST         0x05       /*!< Arbitration lost. */\n+#define I2CM_STATUS_BUSY            0xFF       /*!< I2C transmitter is busy. */\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @brief Master transfer data structure definitions\n+ */\n+typedef struct {\n+   uint8_t slaveAddr;      /*!< 7-bit I2C Slave address */\n+   uint8_t options;        /*!< Options for transfer*/\n+   uint16_t status;        /*!< Status of the current I2C transfer */\n+   uint16_t txSz;          /*!< Number of bytes in transmit array,\n+                              if 0 only receive transfer will be carried on */\n+   uint16_t rxSz;          /*!< Number of bytes to received,\n+                              if 0 only transmission we be carried on */\n+   const uint8_t *txBuff;  /*!< Pointer to array of bytes to be transmitted */\n+   uint8_t *rxBuff;        /*!< Pointer memory where bytes received from I2C be stored */\n+} I2CM_XFER_T;\n+\n+/**\n+ * @brief  Initialize I2C Interface\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function enables the I2C clock.\n+ */\n+void Chip_I2CM_Init(LPC_I2C_T *pI2C);\n+\n+/**\n+ * @brief  Shutdown I2C Interface\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function disables the I2C clock.\n+ */\n+void Chip_I2CM_DeInit(LPC_I2C_T *pI2C);\n+\n+/**\n+ * @brief  Sets HIGH and LOW duty cycle registers\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  sclH    : Number of I2C_PCLK cycles for the SCL HIGH time.\n+ * @param  sclL    : Number of I2C_PCLK cycles for the SCL LOW time.\n+ * @return Nothing\n+ * @note   The frequency is determined by the following formula (I2C_PCLK\n+ *          is the frequency of the peripheral I2C clock): <br>\n+ *              I2C_bitFrequency = (I2C_PCLK)/(sclH + sclL);\n+ */\n+static INLINE void Chip_I2CM_SetDutyCycle(LPC_I2C_T *pI2C, uint16_t sclH, uint16_t sclL)\n+{\n+   pI2C->SCLH = (uint32_t) sclH;\n+   pI2C->SCLL = (uint32_t) sclL;\n+}\n+\n+/**\n+ * @brief  Set up bus speed for LPC_I2C controller\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  busSpeed    : I2C bus clock rate\n+ * @return Nothing\n+ * @note   Per I2C specification the busSpeed should be\n+ *          @li 100000 for Standard mode\n+ *          @li 400000 for Fast mode\n+ *          @li 1000000 for Fast mode plus\n+ *          IOCON registers corresponding to I2C pads should be updated\n+ *          according to the bus mode.\n+ */\n+void Chip_I2CM_SetBusSpeed(LPC_I2C_T *pI2C, uint32_t busSpeed);\n+\n+/**\n+ * @brief  Transmit START or Repeat-START signal on I2C bus\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function sets the controller to transmit START condition when\n+ *          the bus becomes free.\n+ */\n+static INLINE void Chip_I2CM_SendStart(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONSET = I2C_CON_I2EN | I2C_CON_STA;\n+}\n+\n+/**\n+ * @brief  Reset I2C controller state\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function clears all control/status flags.\n+ */\n+static INLINE void Chip_I2CM_ResetControl(LPC_I2C_T *pI2C)\n+{\n+   /* Reset STA, AA and SI. Stop flag should not be cleared as it is a reserved bit */\n+   pI2C->CONCLR = I2C_CON_SI | I2C_CON_STA | I2C_CON_AA;\n+\n+}\n+\n+/**\n+ * @brief  Transmit a single data byte through the I2C peripheral\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  data    : Byte to transmit\n+ * @return Nothing\n+ * @note   This function attempts to place a byte into the UART transmit\n+ *         FIFO or transmit hold register regard regardless of UART state\n+ *\n+ */\n+static INLINE void Chip_I2CM_WriteByte(LPC_I2C_T *pI2C, uint8_t data)\n+{\n+   pI2C->DAT = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief  Read a single byte data from the I2C peripheral\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return A single byte of data read\n+ * @note   This function reads a byte from the I2C receive hold register\n+ *         regardless of I2C state. The I2C status should be read first prior\n+ *         to using this function.\n+ */\n+static INLINE uint8_t Chip_I2CM_ReadByte(LPC_I2C_T *pI2C)\n+{\n+   return (uint8_t) (pI2C->DAT & I2C_I2DAT_BITMASK);\n+}\n+\n+/**\n+ * @brief  Generate NACK after receiving next byte\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function sets the controller to NACK after receiving next\n+ *          byte from slave transmitter. Used before receiving last byte.\n+ */\n+static INLINE void Chip_I2CM_NackNextByte(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONCLR = I2C_CON_AA;\n+}\n+\n+/**\n+ * @brief  Transmit STOP signal on I2C bus\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function sets the controller to transmit STOP condition.\n+ */\n+static INLINE void Chip_I2CM_SendStop(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONSET = I2C_CON_STO;\n+}\n+\n+/**\n+ * @brief  Force start I2C transmit\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function forces I2C state machine to start transmitting.\n+ *         If an uncontrolled source generates a superfluous START or masks\n+ *          a STOP condition, then the I2C-bus stays busy indefinitely. If\n+ *          the STA flag is set and bus access is not obtained within a\n+ *          reasonable amount of time, then a forced access to the I2C-bus is\n+ *          possible. This is achieved by setting the STO flag while the STA\n+ *          flag is still set. No STOP condition is transmitted.\n+ */\n+static INLINE void Chip_I2CM_ForceStart(LPC_I2C_T *pI2C)\n+{\n+   /* check if we are pending on start */\n+   if (pI2C->CONSET & I2C_CON_STA) {\n+       pI2C->CONSET = I2C_CON_STO;\n+   }\n+   else {\n+       Chip_I2CM_SendStart(pI2C);\n+   }\n+}\n+\n+/**\n+ * @brief  Transmit STOP+START signal on I2C bus\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function sets the controller to transmit STOP condition\n+ *          followed by a START condition.\n+ */\n+static INLINE void Chip_I2CM_SendStartAfterStop(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONSET = I2C_CON_STO | I2C_CON_STA;\n+}\n+\n+/**\n+ * @brief  Check if I2C controller state changed\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Returns 0 if state didn't change\n+ * @note\n+ */\n+static INLINE uint32_t Chip_I2CM_StateChanged(LPC_I2C_T *pI2C)\n+{\n+   return pI2C->CONSET & I2C_CON_SI;\n+}\n+\n+/**\n+ * @brief  Clear state change interrupt flag\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note\n+ */\n+static INLINE void Chip_I2CM_ClearSI(LPC_I2C_T *pI2C)\n+{\n+   /* Stop flag should not be cleared as it is a reserved bit */\n+   pI2C->CONCLR = I2C_CON_SI | I2C_CON_STA;\n+}\n+\n+/**\n+ * @brief  Check if I2C bus is free per our controller\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Returns 0 if busy else a non-zero value.\n+ * @note   I2C controller clears STO bit when it sees STOP\n+ *          condition after a START condition on the bus.\n+ */\n+static INLINE uint32_t Chip_I2CM_BusFree(LPC_I2C_T *pI2C)\n+{\n+   return !(pI2C->CONSET & I2C_CON_STO);\n+}\n+\n+/**\n+ * @brief  Get current state of the I2C controller\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Returns 0 if busy else a non-zero value.\n+ * @note   I2C controller clears STO bit when it sees STOP\n+ *          condition after a START condition on the bus.\n+ */\n+static INLINE uint32_t Chip_I2CM_GetCurState(LPC_I2C_T *pI2C)\n+{\n+   return pI2C->STAT & I2C_STAT_CODE_BITMASK;\n+}\n+\n+/**\n+ * @brief  Disable I2C interface\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note\n+ */\n+static INLINE void Chip_I2CM_Disable(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONCLR = I2C_CON_I2EN;\n+}\n+\n+/**\n+ * @brief  Transfer state change handler handler\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  xfer    : Pointer to a I2CM_XFER_T structure see notes below\n+ * @return Returns non-zero value on completion of transfer. The @a status\n+ *         member of @a xfer structure contains the current status of the\n+ *         transfer at the end of the call.\n+ * @note\n+ * The parameter @a xfer should be same as the one passed to Chip_I2CM_Xfer()\n+ * routine.\n+ */\n+uint32_t Chip_I2CM_XferHandler(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @brief  Transmit and Receive data in master mode\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  xfer    : Pointer to a I2CM_XFER_T structure see notes below\n+ * @return Nothing.\n+ * @note\n+ * The parameter @a xfer should have its member @a slaveAddr initialized\n+ * to the 7-Bit slave address to which the master will do the xfer, Bit0\n+ * to bit6 should have the address and Bit8 is ignored. During the transfer\n+ * no code (like event handler) must change the content of the memory\n+ * pointed to by @a xfer. The member of @a xfer, @a txBuff and @a txSz be\n+ * initialized to the memory from which the I2C must pick the data to be\n+ * transferred to slave and the number of bytes to send respectively, similarly\n+ * @a rxBuff and @a rxSz must have pointer to memory where data received\n+ * from slave be stored and the number of data to get from slave respectively.\n+ * Following types of transfers are possible:\n+ * - Write-only transfer: When @a rxSz member of @a xfer is set to 0.\n+ *\n+ *          S Addr Wr [A] txBuff0 [A] txBuff1 [A] ... txBuffN [A] P\n+ *\n+ *      - If I2CM_XFER_OPTION_IGNORE_NACK is set in @a options member\n+ *\n+ *          S Addr Wr [A] txBuff0 [A or NA] ... txBuffN [A or NA] P\n+ *\n+ * - Read-only transfer: When @a txSz member of @a xfer is set to 0.\n+ *\n+ *          S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] NA P\n+ *\n+ *      - If I2CM_XFER_OPTION_LAST_RX_ACK is set in @a options member\n+ *\n+ *          S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] A P\n+ *\n+ * - Read-Write transfer: When @a rxSz and @ txSz members of @a xfer are non-zero.\n+ *\n+ *          S Addr Wr [A] txBuff0 [A] txBuff1 [A] ... txBuffN [A]\n+ *              S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] NA P\n+ *\n+ */\n+void Chip_I2CM_Xfer(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @brief  Transmit and Receive data in master mode\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  xfer    : Pointer to a I2CM_XFER_T structure see notes below\n+ * @return Returns non-zero value on successful completion of transfer.\n+ * @note\n+ * This function operates same as Chip_I2CM_Xfer(), but is a blocking call.\n+ */\n+uint32_t Chip_I2CM_XferBlocking(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @brief  Write given buffer of data to I2C interface\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  buff    : Pointer to buffer to be transmitted\n+ * @param  len     : Length of the buffer\n+ * @return Returns number of bytes written.\n+ * @note   This function is a blocking call. The function generates\n+ *          START/repeat-START condition on bus and starts transmitting\n+ *          data until transfer finishes or a NACK is received. No\n+ *          STOP condition is transmitted on the bus.\n+ *\n+ *          S Data0 [A] Data1 [A] ... DataN [A]\n+ */\n+uint32_t Chip_I2CM_Write(LPC_I2C_T *pI2C, const uint8_t *buff, uint32_t len);\n+\n+/**\n+ * @brief  Read data from I2C slave to given buffer\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  buff    :   Pointer to buffer for data received from I2C slave\n+ * @param  len     : Length of the buffer\n+ * @return Returns number of bytes read.\n+ * @note   This function is a blocking call. The function generates\n+ *          START/repeat-START condition on bus and starts reading\n+ *          data until requested number of bytes are read. No\n+ *          STOP condition is transmitted on the bus.\n+ *\n+ *          S [Data0] A [Data1] A ... [DataN] A\n+ */\n+uint32_t Chip_I2CM_Read(LPC_I2C_T *pI2C, uint8_t *buff, uint32_t len);\n+\n+/**\n+ * @}\n+ */\n+\n+ #ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2C_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/i2s_18xx_43xx.h ./lpc_chip_43xx/inc/i2s_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/i2s_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/i2s_18xx_43xx.h\t2017-02-27 20:42:08.448009492 -0300\n@@ -0,0 +1,560 @@\n+/*\n+ * @brief LPC18xx/43xx I2S driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2S_18XX_43XX_H_\n+#define __I2S_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2S_18XX_43XX CHIP: LPC18xx/43xx I2S driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief I2S DMA request channel define\n+ */\n+typedef enum {\n+   I2S_DMA_REQUEST_CHANNEL_1,  /*!< DMA request channel 1 */\n+   I2S_DMA_REQUEST_CHANNEL_2,  /*!< DMA request channel 2 */\n+   I2S_DMA_REQUEST_CHANNEL_NUM,/*!< The number of DMA request channels */\n+} I2S_DMA_CHANNEL_T;\n+\n+/**\n+ * @brief I2S register block structure\n+ */\n+typedef struct {               /*!< I2S Structure */\n+   __IO uint32_t DAO;          /*!< I2S Digital Audio Output Register. Contains control bits for the I2S transmit channel */\n+   __IO uint32_t DAI;          /*!< I2S Digital Audio Input Register. Contains control bits for the I2S receive channel */\n+   __O uint32_t TXFIFO;        /*!< I2S Transmit FIFO. Access register for the 8 x 32-bit transmitter FIFO */\n+   __I uint32_t RXFIFO;        /*!< I2S Receive FIFO. Access register for the 8 x 32-bit receiver FIFO */\n+   __I uint32_t STATE;         /*!< I2S Status Feedback Register. Contains status information about the I2S interface */\n+   __IO uint32_t DMA[I2S_DMA_REQUEST_CHANNEL_NUM]; /*!< I2S DMA Configuration Registers. Contains control information for DMA request channels */\n+   __IO uint32_t IRQ;          /*!< I2S Interrupt Request Control Register. Contains bits that control how the I2S interrupt request is generated */\n+   __IO uint32_t TXRATE;       /*!< I2S Transmit MCLK divider. This register determines the I2S TX MCLK rate by specifying the value to divide PCLK by in order to produce MCLK */\n+   __IO uint32_t RXRATE;       /*!< I2S Receive MCLK divider. This register determines the I2S RX MCLK rate by specifying the value to divide PCLK by in order to produce MCLK */\n+   __IO uint32_t TXBITRATE;    /*!< I2S Transmit bit rate divider. This register determines the I2S transmit bit rate by specifying the value to divide TX_MCLK by in order to produce the transmit bit clock */\n+   __IO uint32_t RXBITRATE;    /*!< I2S Receive bit rate divider. This register determines the I2S receive bit rate by specifying the value to divide RX_MCLK by in order to produce the receive bit clock */\n+   __IO uint32_t TXMODE;       /*!< I2S Transmit mode control */\n+   __IO uint32_t RXMODE;       /*!< I2S Receive mode control */\n+} LPC_I2S_T;\n+\n+/*\n+ * @brief I2S configuration parameter defines\n+ */\n+/* I2S Wordwidth bit */\n+#define I2S_WORDWIDTH_8     (0UL << 0) /*!< 8 bit Word */\n+#define I2S_WORDWIDTH_16    (1UL << 0) /*!< 16 bit word */\n+#define I2S_WORDWIDTH_32    (3UL << 0) /*!< 32 bit word */\n+\n+/* I2S Channel bit */\n+#define I2S_STEREO          (0UL << 2) /*!< Stereo audio */\n+#define I2S_MONO            (1UL << 2) /*!< Mono audio */\n+\n+/* I2S Master/Slave mode bit */\n+#define I2S_MASTER_MODE     (0UL << 5) /*!< I2S in master mode */\n+#define I2S_SLAVE_MODE      (1UL << 5) /*!< I2S in slave mode */\n+\n+/* I2S Stop bit */\n+#define I2S_STOP_ENABLE     (0UL << 3) /*!< I2S stop enable mask */\n+#define I2S_STOP_DISABLE    (1UL << 3) /*!< I2S stop disable mask */\n+\n+/* I2S Reset bit */\n+#define I2S_RESET_ENABLE    (1UL << 4) /*!< I2S reset enable mask */\n+#define I2S_RESET_DISABLE   (0UL << 4) /*!< I2S reset disable mask */\n+\n+/* I2S Mute bit */\n+#define I2S_MUTE_ENABLE     (1UL << 15)    /*!< I2S mute enable mask */\n+#define I2S_MUTE_DISABLE    (0UL << 15)    /*!< I2S mute disbale mask */\n+\n+/*\n+ * @brief Macro defines for DAO-Digital Audio Output register\n+ */\n+/* I2S wordwide - the number of bytes in data*/\n+#define I2S_DAO_WORDWIDTH_8     ((uint32_t) (0))   /*!< DAO 8 bit  */\n+#define I2S_DAO_WORDWIDTH_16    ((uint32_t) (1))   /*!< DAO 16 bit */\n+#define I2S_DAO_WORDWIDTH_32    ((uint32_t) (3))   /*!< DAO 32 bit */\n+#define I2S_DAO_WORDWIDTH_MASK  ((uint32_t) (3))\n+\n+/* I2S control mono or stereo format */\n+#define I2S_DAO_MONO            ((uint32_t) (1 << 2))  /*!< DAO mono audio mask */\n+\n+/* I2S control stop mode */\n+#define I2S_DAO_STOP            ((uint32_t) (1 << 3))  /*!< DAO stop mask */\n+\n+/* I2S control reset mode */\n+#define I2S_DAO_RESET           ((uint32_t) (1 << 4))  /*!< DAO reset mask */\n+\n+/* I2S control master/slave mode */\n+#define I2S_DAO_SLAVE           ((uint32_t) (1 << 5))  /*!< DAO slave mode mask */\n+\n+/* I2S word select half period minus one */\n+#define I2S_DAO_WS_HALFPERIOD(n)    ((uint32_t) (((n) & 0x1FF) << 6))  /*!< DAO Word select set macro */\n+#define I2S_DAO_WS_HALFPERIOD_MASK  ((uint32_t) ((0x1FF) << 6))        /*!< DAO Word select mask */\n+\n+/* I2S control mute mode */\n+#define I2S_DAO_MUTE            ((uint32_t) (1 << 15)) /*!< DAO mute mask */\n+\n+/*\n+ * @brief Macro defines for DAI-Digital Audio Input register\n+ */\n+/* I2S wordwide - the number of bytes in data*/\n+#define I2S_DAI_WORDWIDTH_8     ((uint32_t) (0))   /*!< DAI 8 bit  */\n+#define I2S_DAI_WORDWIDTH_16    ((uint32_t) (1))   /*!< DAI 16 bit */\n+#define I2S_DAI_WORDWIDTH_32    ((uint32_t) (3))   /*!< DAI 32 bit */\n+#define I2S_DAI_WORDWIDTH_MASK  ((uint32_t) (3))   /*!< DAI word wide mask */\n+\n+/* I2S control mono or stereo format */\n+#define I2S_DAI_MONO            ((uint32_t) (1 << 2))  /*!< DAI mono mode mask */\n+\n+/* I2S control stop mode */\n+#define I2S_DAI_STOP            ((uint32_t) (1 << 3))  /*!< DAI stop bit mask */\n+\n+/* I2S control reset mode */\n+#define I2S_DAI_RESET           ((uint32_t) (1 << 4))  /*!< DAI reset bit mask */\n+\n+/* I2S control master/slave mode */\n+#define I2S_DAI_SLAVE           ((uint32_t) (1 << 5))  /*!< DAI slave mode mask */\n+\n+/* I2S word select half period minus one (9 bits)*/\n+#define I2S_DAI_WS_HALFPERIOD(n)    ((uint32_t) (((n) & 0x1FF) << 6))  /*!< DAI Word select set macro */\n+#define I2S_DAI_WS_HALFPERIOD_MASK  ((uint32_t) ((0x1FF) << 6))        /*!< DAI Word select mask */\n+\n+/*\n+ * @brief Macro defines for STAT register (Status Feedback register)\n+ */\n+#define I2S_STATE_IRQ       ((uint32_t) (1))/*!< I2S Status Receive or Transmit Interrupt */\n+#define I2S_STATE_DMA1      ((uint32_t) (1 << 1))  /*!< I2S Status Receive or Transmit DMA1 */\n+#define I2S_STATE_DMA2      ((uint32_t) (1 << 2))  /*!< I2S Status Receive or Transmit DMA2 */\n+#define I2S_STATE_RX_LEVEL(n)   ((uint32_t) ((n & 1F) << 8))/*!< I2S Status Current level of the Receive FIFO (5 bits)*/\n+#define I2S_STATE_TX_LEVEL(n)   ((uint32_t) ((n & 1F) << 16))  /*!< I2S Status Current level of the Transmit FIFO (5 bits)*/\n+\n+/*\n+ * @brief Macro defines for DMA1 register (DMA1 Configuration register)\n+ */\n+#define I2S_DMA1_RX_ENABLE      ((uint32_t) (1))/*!< I2S control DMA1 for I2S receive */\n+#define I2S_DMA1_TX_ENABLE      ((uint32_t) (1 << 1))  /*!< I2S control DMA1 for I2S transmit */\n+#define I2S_DMA1_RX_DEPTH(n)    ((uint32_t) ((n & 0x1F) << 8)) /*!< I2S set FIFO level that trigger a receive DMA request on DMA1 */\n+#define I2S_DMA1_TX_DEPTH(n)    ((uint32_t) ((n & 0x1F) << 16))    /*!< I2S set FIFO level that trigger a transmit DMA request on DMA1 */\n+\n+/*\n+ * @brief Macro defines for DMA2 register (DMA2 Configuration register)\n+ */\n+#define I2S_DMA2_RX_ENABLE      ((uint32_t) (1))/*!< I2S control DMA2 for I2S receive */\n+#define I2S_DMA2_TX_ENABLE      ((uint32_t) (1 << 1))  /*!< I2S control DMA1 for I2S transmit */\n+#define I2S_DMA2_RX_DEPTH(n)    ((uint32_t) ((n & 0x1F) << 8)) /*!< I2S set FIFO level that trigger a receive DMA request on DMA1 */\n+#define I2S_DMA2_TX_DEPTH(n)    ((uint32_t) ((n & 0x1F) << 16))    /*!< I2S set FIFO level that trigger a transmit DMA request on DMA1 */\n+\n+/*\n+ * @brief Macro defines for IRQ register (Interrupt Request Control register)\n+ */\n+\n+#define I2S_IRQ_RX_ENABLE       ((uint32_t) (1))/*!< I2S control I2S receive interrupt */\n+#define I2S_IRQ_TX_ENABLE       ((uint32_t) (1 << 1))  /*!< I2S control I2S transmit interrupt */\n+#define I2S_IRQ_RX_DEPTH(n)     ((uint32_t) ((n & 0x0F) << 8)) /*!< I2S set the FIFO level on which to create an irq request */\n+#define I2S_IRQ_RX_DEPTH_MASK   ((uint32_t) ((0x0F) << 8))\n+#define I2S_IRQ_TX_DEPTH(n)     ((uint32_t) ((n & 0x0F) << 16))    /*!< I2S set the FIFO level on which to create an irq request */\n+#define I2S_IRQ_TX_DEPTH_MASK   ((uint32_t) ((0x0F) << 16))\n+\n+/*\n+ * @brief Macro defines for TXRATE/RXRATE register (Transmit/Receive Clock Rate register)\n+ */\n+#define I2S_TXRATE_Y_DIVIDER(n) ((uint32_t) (n & 0xFF))    /*!< I2S Transmit MCLK rate denominator */\n+#define I2S_TXRATE_X_DIVIDER(n) ((uint32_t) ((n & 0xFF) << 8)) /*!< I2S Transmit MCLK rate denominator */\n+#define I2S_RXRATE_Y_DIVIDER(n) ((uint32_t) (n & 0xFF))    /*!< I2S Receive MCLK rate denominator */\n+#define I2S_RXRATE_X_DIVIDER(n) ((uint32_t) ((n & 0xFF) << 8)) /*!< I2S Receive MCLK rate denominator */\n+\n+/*\n+ * @brief Macro defines for TXBITRATE & RXBITRATE register (Transmit/Receive Bit Rate register)\n+ */\n+#define I2S_TXBITRATE(n)    ((uint32_t) (n & 0x3F))\n+#define I2S_RXBITRATE(n)    ((uint32_t) (n & 0x3F))\n+\n+/*\n+ * @brief Macro defines for TXMODE/RXMODE register (Transmit/Receive Mode Control register)\n+ */\n+#define I2S_TXMODE_CLKSEL(n)    ((uint32_t) (n & 0x03))    /*!< I2S Transmit select clock source (2 bits)*/\n+#define I2S_TXMODE_4PIN_ENABLE  ((uint32_t) (1 << 2))  /*!< I2S Transmit control 4-pin mode */\n+#define I2S_TXMODE_MCENA        ((uint32_t) (1 << 3))  /*!< I2S Transmit control the TX_MCLK output */\n+#define I2S_RXMODE_CLKSEL(n)    ((uint32_t) (n & 0x03))    /*!< I2S Receive select clock source */\n+#define I2S_RXMODE_4PIN_ENABLE  ((uint32_t) (1 << 2))  /*!< I2S Receive control 4-pin mode */\n+#define I2S_RXMODE_MCENA        ((uint32_t) (1 << 3))  /*!< I2S Receive control the TX_MCLK output */\n+\n+/**\n+ * @brief I2S Audio Format Structure\n+ */\n+typedef struct {\n+   uint32_t SampleRate;    /*!< Sample Rate */\n+   uint8_t ChannelNumber;  /*!< Channel Number - 1 is mono, 2 is stereo */\n+   uint8_t WordWidth;      /*!< Word Width - 8, 16 or 32 bits */\n+} I2S_AUDIO_FORMAT_T;\n+\n+/**\n+ * @brief  Initialize for I2S\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_I2S_Init(LPC_I2S_T *pI2S);\n+\n+/**\n+ * @brief  Shutdown I2S\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   Reset all relative registers (DMA, transmit/receive control, interrupt) to default value\n+ */\n+void Chip_I2S_DeInit(LPC_I2S_T *pI2S);\n+\n+/**\n+ * @brief  Send a 32-bit data to TXFIFO for transmition\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @param  data    : Data to be transmited\n+ * @return Nothing\n+ * @note   The function writes to TXFIFO without checking any condition.\n+ */\n+STATIC INLINE void Chip_I2S_Send(LPC_I2S_T *pI2S, uint32_t data)\n+{\n+   pI2S->TXFIFO = data;\n+}\n+\n+/**\n+ * @brief  Get received data from RXFIFO\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Data received in RXFIFO\n+ * @note   The function reads from RXFIFO without checking any condition.\n+ */\n+STATIC INLINE uint32_t Chip_I2S_Receive(LPC_I2S_T *pI2S)\n+{\n+   return pI2S->RXFIFO;\n+}\n+\n+/**\n+ * @brief  Start transmit data\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_TxStart(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO &= ~(I2S_DAO_RESET | I2S_DAO_STOP | I2S_DAO_MUTE);\n+}\n+\n+/**\n+ * @brief  Start receive data\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_RxStart(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI &= ~(I2S_DAI_RESET | I2S_DAI_STOP);\n+}\n+\n+/**\n+ * @brief  Disables accesses on FIFOs, places the transmit channel in mute mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_TxPause(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO |= I2S_DAO_STOP;\n+}\n+\n+/**\n+ * @brief  Disables accesses on FIFOs, places the transmit channel in mute mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_RxPause(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI |= I2S_DAI_STOP;\n+}\n+\n+/**\n+ * @brief  Mute the Transmit channel\n+ * @param  pI2S        : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   The data output from I2S transmit channel is always zeroes\n+ */\n+STATIC INLINE void Chip_I2S_EnableMute(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO |= I2S_DAO_MUTE;\n+}\n+\n+/**\n+ * @brief  Un-Mute the I2S channel\n+ * @param  pI2S        : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_DisableMute(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO &= ~I2S_DAO_MUTE;\n+}\n+\n+/**\n+ * @brief  Stop I2S asynchronously\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   Pause, resets the transmit channel and FIFO asynchronously\n+ */\n+STATIC INLINE void Chip_I2S_TxStop(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO &= ~I2S_DAO_MUTE;\n+   pI2S->DAO |= I2S_DAO_STOP | I2S_DAO_RESET;\n+}\n+\n+/**\n+ * @brief  Stop I2S asynchronously\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   Pause, resets the transmit channel and FIFO asynchronously\n+ */\n+STATIC INLINE void Chip_I2S_RxStop(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI |= I2S_DAI_STOP | I2S_DAI_RESET;\n+}\n+\n+/**\n+ * @brief  Sets the I2S receive channel in slave mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   4 pin mode must be enabled on appropriate channel.\n+ * Must be called after each Chip_I2S_TxModeConfig call if\n+ * slave mode is needed.\n+ */\n+STATIC INLINE void Chip_I2S_RxSlave(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI |= I2S_SLAVE_MODE;\n+}\n+\n+/**\n+ * @brief  Sets the I2S transmit channel in slave mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   4 pin mode must be enabled on appropriate channel.\n+ * Must be called after each Chip_I2S_TxModeConfig call if\n+ * slave mode is needed.\n+ */\n+STATIC INLINE void Chip_I2S_TxSlave(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO |= I2S_SLAVE_MODE;\n+}\n+\n+/**\n+ * @brief  Set the I2S transmit mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @param  clksel  : Clock source selection for the receive bit clock divider\n+ * @param  fpin    : Receive 4-pin mode selection\n+ * @param  mcena   : Enable for the RX_MCLK output\n+ * @return Nothing\n+ * @note   In addition to master and slave modes, which are independently configurable for\n+ * the transmitter and the receiver, several different clock sources are possible,\n+ * including variations that share the clock and/or WS between the transmitter and\n+ * receiver. It also allows using I2S with fewer pins, typically four.\n+ */\n+STATIC INLINE void Chip_I2S_TxModeConfig(LPC_I2S_T *pI2S,\n+                                        uint32_t clksel,\n+                                        uint32_t fpin,\n+                                        uint32_t mcena)\n+{\n+   pI2S->TXMODE = clksel | fpin | mcena;\n+}\n+\n+/**\n+ * @brief  Set the I2S receive mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @param  clksel  : Clock source selection for the receive bit clock divider\n+ * @param  fpin    : Receive 4-pin mode selection\n+ * @param  mcena   : Enable for the RX_MCLK output\n+ * @return Nothing\n+ * @note   In addition to master and slave modes, which are independently configurable for\n+ * the transmitter and the receiver, several different clock sources are possible,\n+ * including variations that share the clock and/or WS between the transmitter and\n+ * receiver. It also allows using I2S with fewer pins, typically four.\n+ */\n+STATIC INLINE void Chip_I2S_RxModeConfig(LPC_I2S_T *pI2S,\n+                                        uint32_t clksel,\n+                                        uint32_t fpin,\n+                                        uint32_t mcena)\n+{\n+   pI2S->RXMODE = clksel | fpin | mcena;\n+}\n+\n+/**\n+ * @brief  Get the current level of the Transmit FIFO\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Current level of the Transmit FIFO\n+ */\n+STATIC INLINE uint8_t Chip_I2S_GetTxLevel(LPC_I2S_T *pI2S)\n+{\n+   return (pI2S->STATE >> 16) & 0xF;\n+}\n+\n+/**\n+ * @brief  Get the current level of the Receive FIFO\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Current level of the Receive FIFO\n+ */\n+STATIC INLINE uint8_t Chip_I2S_GetRxLevel(LPC_I2S_T *pI2S)\n+{\n+   return (pI2S->STATE >> 8) & 0xF;\n+}\n+\n+/**\n+ * @brief  Set the clock frequency for I2S interface\n+ * @param  pI2S            : The base of I2S peripheral on the chip\n+ * @param  div : Clock divider. This value plus one is used to divide MCLK to produce the clock frequency for I2S interface\n+ * @return Nothing\n+ * @note   The value depends on the audio sample rate desired and the data size and format(stereo/mono) used.\n+ * For example, a 48 kHz sample rate for 16-bit stereo data requires a bit rate of 48 000 x 16 x 2 = 1.536 MHz. So the mclk_divider should be MCLK/1.536 MHz\n+ */\n+STATIC INLINE void Chip_I2S_SetTxBitRate(LPC_I2S_T *pI2S, uint32_t div)\n+{\n+   pI2S->TXBITRATE = div;\n+}\n+\n+/**\n+ * @brief  Set the clock frequency for I2S interface\n+ * @param  pI2S            : The base of I2S peripheral on the chip\n+ * @param  div : Clock divider. This value plus one is used to divide MCLK to produce the clock frequency for I2S interface\n+ * @return Nothing\n+ * @note   The value depends on the audio sample rate desired and the data size and format(stereo/mono) used.\n+ * For example, a 48 kHz sample rate for 16-bit stereo data requires a bit rate of 48 000 x 16 x 2 = 1.536 MHz. So the mclk_divider should be MCLK/1.536 MHz\n+ */\n+STATIC INLINE void Chip_I2S_SetRxBitRate(LPC_I2S_T *pI2S, uint32_t div)\n+{\n+   pI2S->RXBITRATE = div;\n+}\n+\n+/**\n+ * @brief  Set the MCLK rate by using a fractional rate generator, dividing down the frequency of PCLK\n+ * @param  pI2S        : The base of I2S peripheral on the chip\n+ * @param  xDiv    : I2S transmit MCLK rate numerator\n+ * @param  yDiv    : I2S transmit MCLK rate denominator\n+ * @return Nothing\n+ * @note   Values of the numerator (X) and the denominator (Y) must be chosen to\n+ * produce a frequency twice that desired for the transmitter MCLK, which\n+ * must be an integer multiple of the transmitter bit clock rate.\n+ * The equation for the fractional rate generator is:\n+ * MCLK = PCLK * (X/Y) /2\n+ * Note: If the value of X or Y is 0, then no clock is generated. Also, the value of Y must be\n+ * greater than or equal to X.\n+ */\n+STATIC INLINE void Chip_I2S_SetTxXYDivider(LPC_I2S_T *pI2S, uint8_t xDiv, uint8_t yDiv)\n+{\n+   pI2S->TXRATE = yDiv | (xDiv << 8);\n+}\n+\n+/**\n+ * @brief  Set the MCLK rate by using a fractional rate generator, dividing down the frequency of PCLK\n+ * @param  pI2S        : The base of I2S peripheral on the chip\n+ * @param  xDiv    : I2S transmit MCLK rate numerator\n+ * @param  yDiv    : I2S transmit MCLK rate denominator\n+ * @return Nothing\n+ * @note   Values of the numerator (X) and the denominator (Y) must be chosen to\n+ * produce a frequency twice that desired for the transmitter MCLK, which\n+ * must be an integer multiple of the transmitter bit clock rate.\n+ * The equation for the fractional rate generator is:\n+ * MCLK = PCLK * (X/Y) /2\n+ * Note: If the value of X or Y is 0, then no clock is generated. Also, the value of Y must be\n+ * greater than or equal to X.\n+ */\n+STATIC INLINE void Chip_I2S_SetRxXYDivider(LPC_I2S_T *pI2S, uint8_t xDiv, uint8_t yDiv)\n+{\n+   pI2S->RXRATE = yDiv | (xDiv << 8);\n+}\n+\n+/**\n+ * @brief   Configure I2S for Audio Format input\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  format  : Audio Format\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_I2S_TxConfig(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format);\n+\n+/**\n+ * @brief   Configure I2S for Audio Format input\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  format  : Audio Format\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_I2S_RxConfig(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format);\n+\n+/**\n+ * @brief   Enable/Disable Interrupt with a specific FIFO depth\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  newState        : ENABLE or DISABLE interrupt\n+ * @param  depth       : FIFO level creating an irq request\n+ * @return Nothing\n+ */\n+void Chip_I2S_Int_TxCmd(LPC_I2S_T *pI2S, FunctionalState newState, uint8_t depth);\n+\n+/**\n+ * @brief   Enable/Disable Interrupt with a specific FIFO depth\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  newState        : ENABLE or DISABLE interrupt\n+ * @param  depth       : FIFO level creating an irq request\n+ * @return Nothing\n+ */\n+void Chip_I2S_Int_RxCmd(LPC_I2S_T *pI2S, FunctionalState newState, uint8_t depth);\n+\n+/**\n+ * @brief   Enable/Disable DMA with a specific FIFO depth\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  dmaNum          : Should be\n+ *                             - I2S_DMA_REQUEST_CHANNEL_1 : Using DMA1\n+ *                             - I2S_DMA_REQUEST_CHANNEL_2 : Using DMA2\n+ * @param  newState        : ENABLE or DISABLE interrupt\n+ * @param  depth       : FIFO level creating an irq request\n+ * @return Nothing\n+ */\n+void Chip_I2S_DMA_TxCmd(LPC_I2S_T *pI2S, I2S_DMA_CHANNEL_T dmaNum, FunctionalState newState, uint8_t depth);\n+\n+/**\n+ * @brief   Enable/Disable DMA with a specific FIFO depth\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  dmaNum          : Should be\n+ *                             - I2S_DMA_REQUEST_CHANNEL_1 : Using DMA1\n+ *                             - I2S_DMA_REQUEST_CHANNEL_2 : Using DMA2\n+ * @param  newState        : ENABLE or DISABLE interrupt\n+ * @param  depth       : FIFO level creating an irq request\n+ * @return Nothing\n+ */\n+void Chip_I2S_DMA_RxCmd(LPC_I2S_T *pI2S, I2S_DMA_CHANNEL_T dmaNum, FunctionalState newState, uint8_t depth);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2S_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/iap_18xx_43xx.h ./lpc_chip_43xx/inc/iap_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/iap_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/iap_18xx_43xx.h\t2017-02-27 20:42:08.448009492 -0300\n@@ -0,0 +1,197 @@\n+/*\n+ * @brief Common IAP support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __IAP_H_\n+#define __IAP_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup IAP_18XX_43XX CHIP: LPC18xx/43xx Flash IAP driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/* IAP command definitions */\n+#define IAP_PREWRRITE_CMD           50 /*!< Prepare sector for write operation command */\n+#define IAP_WRISECTOR_CMD           51 /*!< Write Sector command */\n+#define IAP_ERSSECTOR_CMD           52 /*!< Erase Sector command */\n+#define IAP_BLANK_CHECK_SECTOR_CMD  53 /*!< Blank check sector */\n+#define IAP_REPID_CMD               54 /*!< Read PartID command */\n+#define IAP_READ_BOOT_CODE_CMD      55 /*!< Read Boot code version */\n+#define IAP_COMPARE_CMD             56 /*!< Compare two RAM address locations */\n+#define IAP_REINVOKE_ISP_CMD        57 /*!< Reinvoke ISP */\n+#define IAP_READ_UID_CMD            58 /*!< Read UID */\n+#define IAP_ERASE_PAGE_CMD          59 /*!< Erase page */\n+#define IAP_SET_BOOT_FLASH          60 /*!< Set active boot flash bank */\n+#define IAP_EEPROM_WRITE            61 /*!< EEPROM Write command */\n+#define IAP_EEPROM_READ             62 /*!< EEPROM READ command */\n+\n+/* IAP response definitions */\n+#define IAP_CMD_SUCCESS             0  /*!< Command is executed successfully */\n+#define IAP_INVALID_COMMAND         1  /*!< Invalid command */\n+#define IAP_SRC_ADDR_ERROR          2  /*!< Source address is not on word boundary */\n+#define IAP_DST_ADDR_ERROR          3  /*!< Destination address is not on a correct boundary */\n+#define IAP_SRC_ADDR_NOT_MAPPED     4  /*!< Source address is not mapped in the memory map */\n+#define IAP_DST_ADDR_NOT_MAPPED     5  /*!< Destination address is not mapped in the memory map */\n+#define IAP_COUNT_ERROR             6  /*!< Byte count is not multiple of 4 or is not a permitted value */\n+#define IAP_INVALID_SECTOR          7  /*!< Sector number is invalid or end sector number is greater than start sector number */\n+#define IAP_SECTOR_NOT_BLANK        8  /*!< Sector is not blank */\n+#define IAP_SECTOR_NOT_PREPARED     9  /*!< Command to prepare sector for write operation was not executed */\n+#define IAP_COMPARE_ERROR           10 /*!< Source and destination data not equal */\n+#define IAP_BUSY                    11 /*!< Flash programming hardware interface is busy */\n+#define IAP_PARAM_ERROR             12 /*!< nsufficient number of parameters or invalid parameter */\n+#define IAP_ADDR_ERROR              13 /*!< Address is not on word boundary */\n+#define IAP_ADDR_NOT_MAPPED         14 /*!< Address is not mapped in the memory map */\n+#define IAP_CMD_LOCKED              15 /*!< Command is locked */\n+#define IAP_INVALID_CODE            16 /*!< Unlock code is invalid */\n+#define IAP_INVALID_BAUD_RATE       17 /*!< Invalid baud rate setting */\n+#define IAP_INVALID_STOP_BIT        18 /*!< Invalid stop bit setting */\n+#define IAP_CRP_ENABLED             19 /*!< Code read protection enabled */\n+\n+/* IAP_ENTRY API function type */\n+typedef void (*IAP_ENTRY_T)(unsigned int[5], unsigned int[4]);\n+\n+/**\n+ * @brief  Prepare sector for write operation\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @param  bankNum     : Flash Bank number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   This command must be executed before executing \"Copy RAM to flash\"\n+ *         or \"Erase Sector\" command.\n+ *         The end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_PreSectorForReadWrite(uint32_t strSector, uint32_t endSector, uint8_t bankNum);\n+\n+/**\n+ * @brief  Copy RAM to flash\n+ * @param  dstAdd      : Destination flash address where data bytes are to be written\n+ * @param  srcAdd      : Source flash address where data bytes are to be read\n+ * @param  byteswrt    : Number of bytes to be written\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The addresses should be a 256 byte boundary and the number of bytes\n+ *         should be 256 | 512 | 1024 | 4096\n+ */\n+uint8_t Chip_IAP_CopyRamToFlash(uint32_t dstAdd, uint32_t *srcAdd, uint32_t byteswrt);\n+\n+/**\n+ * @brief  Erase sector\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @param  bankNum     : Flash Bank number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_EraseSector(uint32_t strSector, uint32_t endSector, uint8_t bankNum);\n+\n+/**\n+ * @brief Blank check a sector or multiples sector of on-chip flash memory\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @param  bankNum     : Flash Bank number\n+ * @return Offset of the first non blank word location if the status code is SECTOR_NOT_BLANK\n+ * @note   The end sector must be greater than or equal to start sector number\n+ */\n+// FIXME - There are two return value (result[0] & result[1]\n+// Result0:Offset of the first non blank word location if the Status Code is\n+// SECTOR_NOT_BLANK.\n+// Result1:Contents of non blank word location.\n+uint8_t Chip_IAP_BlankCheckSector(uint32_t strSector, uint32_t endSector, uint8_t bankNum);\n+\n+/**\n+ * @brief  Read part identification number\n+ * @return Part identification number\n+ */\n+uint32_t Chip_IAP_ReadPID(void);\n+\n+/**\n+ * @brief  Read boot code version number\n+ * @return Boot code version number\n+ */\n+uint8_t Chip_IAP_ReadBootCode(void);\n+\n+/**\n+ * @brief  Compare the memory contents at two locations\n+ * @param  dstAdd      : Destination of the RAM address of data bytes to be compared\n+ * @param  srcAdd      : Source of the RAM address of data bytes to be compared\n+ * @param  bytescmp    : Number of bytes to be compared\n+ * @return Offset of the first mismatch of the status code is COMPARE_ERROR\n+ * @note   The addresses should be a word boundary and number of bytes should be\n+ *         a multiply of 4\n+ */\n+uint8_t Chip_IAP_Compare(uint32_t dstAdd, uint32_t srcAdd, uint32_t bytescmp);\n+\n+/**\n+ * @brief  IAP reinvoke ISP to invoke the bootloader in ISP mode\n+ * @return none\n+ */\n+uint8_t Chip_IAP_ReinvokeISP(void);\n+\n+/**\n+ * @brief  Read the unique ID\n+ * @return Status code to indicate the command is executed successfully or not\n+ */\n+uint32_t Chip_IAP_ReadUID(void);\n+\n+/**\n+ * @brief  Erase a page or multiple papers of on-chip flash memory\n+ * @param  strPage : Start page number\n+ * @param  endPage : End page number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The page number must be greater than or equal to start page number\n+ */\n+// FIXME - There are four return value\n+// Result0:The first 32-bit word (at the lowest address)\n+// Result1:The second 32-bit word.\n+// Result2:The third 32-bit word.\n+// Result3:The fourth 32-bit word.\n+uint8_t Chip_IAP_ErasePage(uint32_t strPage, uint32_t endPage);\n+\n+/**\n+ * @brief  Set active boot flash bank\n+ * @param  bankNum : Flash bank number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   Enable booting from the indicated flash unit by inserting a valid\n+ *                 signature and invalidating the other flash unit\n+ */\n+uint8_t Chip_IAP_SetBootFlashBank(uint8_t bankNum);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __IAP_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/iap.h ./lpc_chip_43xx/inc/iap.h\n--- a_8FkA5l/lpc_chip_43xx/inc/iap.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/iap.h\t2017-02-27 20:42:08.448009492 -0300\n@@ -0,0 +1,184 @@\n+/*\n+ * @brief Common IAP support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __IAP_H_\n+#define __IAP_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup COMMON_IAP CHIP: Common Chip ISP/IAP commands and return codes\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/* IAP command definitions */\n+#define IAP_PREWRRITE_CMD           50 /*!< Prepare sector for write operation command */\n+#define IAP_WRISECTOR_CMD           51 /*!< Write Sector command */\n+#define IAP_ERSSECTOR_CMD           52 /*!< Erase Sector command */\n+#define IAP_BLANK_CHECK_SECTOR_CMD  53 /*!< Blank check sector */\n+#define IAP_REPID_CMD               54 /*!< Read PartID command */\n+#define IAP_READ_BOOT_CODE_CMD      55 /*!< Read Boot code version */\n+#define IAP_COMPARE_CMD             56 /*!< Compare two RAM address locations */\n+#define IAP_REINVOKE_ISP_CMD        57 /*!< Reinvoke ISP */\n+#define IAP_READ_UID_CMD            58 /*!< Read UID */\n+#define IAP_ERASE_PAGE_CMD          59 /*!< Erase page */\n+#define IAP_EEPROM_WRITE            61 /*!< EEPROM Write command */\n+#define IAP_EEPROM_READ             62 /*!< EEPROM READ command */\n+\n+/* IAP response definitions */\n+#define IAP_CMD_SUCCESS             0  /*!< Command is executed successfully */\n+#define IAP_INVALID_COMMAND         1  /*!< Invalid command */\n+#define IAP_SRC_ADDR_ERROR          2  /*!< Source address is not on word boundary */\n+#define IAP_DST_ADDR_ERROR          3  /*!< Destination address is not on a correct boundary */\n+#define IAP_SRC_ADDR_NOT_MAPPED     4  /*!< Source address is not mapped in the memory map */\n+#define IAP_DST_ADDR_NOT_MAPPED     5  /*!< Destination address is not mapped in the memory map */\n+#define IAP_COUNT_ERROR             6  /*!< Byte count is not multiple of 4 or is not a permitted value */\n+#define IAP_INVALID_SECTOR          7  /*!< Sector number is invalid or end sector number is greater than start sector number */\n+#define IAP_SECTOR_NOT_BLANK        8  /*!< Sector is not blank */\n+#define IAP_SECTOR_NOT_PREPARED     9  /*!< Command to prepare sector for write operation was not executed */\n+#define IAP_COMPARE_ERROR           10 /*!< Source and destination data not equal */\n+#define IAP_BUSY                    11 /*!< Flash programming hardware interface is busy */\n+#define IAP_PARAM_ERROR             12 /*!< nsufficient number of parameters or invalid parameter */\n+#define IAP_ADDR_ERROR              13 /*!< Address is not on word boundary */\n+#define IAP_ADDR_NOT_MAPPED         14 /*!< Address is not mapped in the memory map */\n+#define IAP_CMD_LOCKED              15 /*!< Command is locked */\n+#define IAP_INVALID_CODE            16 /*!< Unlock code is invalid */\n+#define IAP_INVALID_BAUD_RATE       17 /*!< Invalid baud rate setting */\n+#define IAP_INVALID_STOP_BIT        18 /*!< Invalid stop bit setting */\n+#define IAP_CRP_ENABLED             19 /*!< Code read protection enabled */\n+\n+/* IAP_ENTRY API function type */\n+typedef void (*IAP_ENTRY_T)(unsigned int[], unsigned int[]);\n+\n+/**\n+ * @brief  Prepare sector for write operation\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   This command must be executed before executing \"Copy RAM to flash\"\n+ *         or \"Erase Sector\" command.\n+ *         The end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_PreSectorForReadWrite(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief  Copy RAM to flash\n+ * @param  dstAdd      : Destination FLASH address where data bytes are to be written\n+ * @param  srcAdd      : Source RAM address where data bytes are to be read\n+ * @param  byteswrt    : Number of bytes to be written\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The addresses should be a 256 byte boundary and the number of bytes\n+ *         should be 256 | 512 | 1024 | 4096\n+ */\n+uint8_t Chip_IAP_CopyRamToFlash(uint32_t dstAdd, uint32_t *srcAdd, uint32_t byteswrt);\n+\n+/**\n+ * @brief  Erase sector\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_EraseSector(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief Blank check a sector or multiples sector of on-chip flash memory\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @return Offset of the first non blank word location if the status code is SECTOR_NOT_BLANK\n+ * @note   The end sector must be greater than or equal to start sector number\n+ */\n+// FIXME - There are two return value (result[0] & result[1]\n+// Result0:Offset of the first non blank word location if the Status Code is\n+// SECTOR_NOT_BLANK.\n+// Result1:Contents of non blank word location.\n+uint8_t Chip_IAP_BlankCheckSector(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief  Read part identification number\n+ * @return Part identification number\n+ */\n+uint32_t Chip_IAP_ReadPID(void);\n+\n+/**\n+ * @brief  Read boot code version number\n+ * @return Boot code version number\n+ */\n+uint32_t Chip_IAP_ReadBootCode(void);\n+\n+/**\n+ * @brief  Compare the memory contents at two locations\n+ * @param  dstAdd      : Destination of the RAM address of data bytes to be compared\n+ * @param  srcAdd      : Source of the RAM address of data bytes to be compared\n+ * @param  bytescmp    : Number of bytes to be compared\n+ * @return Offset of the first mismatch of the status code is COMPARE_ERROR\n+ * @note   The addresses should be a word boundary and number of bytes should be\n+ *         a multiply of 4\n+ */\n+uint8_t Chip_IAP_Compare(uint32_t dstAdd, uint32_t srcAdd, uint32_t bytescmp);\n+\n+/**\n+ * @brief  IAP reinvoke ISP to invoke the bootloader in ISP mode\n+ * @return none\n+ */\n+uint8_t Chip_IAP_ReinvokeISP(void);\n+\n+/**\n+ * @brief  Read the unique ID\n+ * @return Status code to indicate the command is executed successfully or not\n+ */\n+uint32_t Chip_IAP_ReadUID(uint32_t* uid);\n+\n+/**\n+ * @brief  Erase a page or multiple papers of on-chip flash memory\n+ * @param  strPage : Start page number\n+ * @param  endPage : End page number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The page number must be greater than or equal to start page number\n+ */\n+// FIXME - There are four return value\n+// Result0:The first 32-bit word (at the lowest address)\n+// Result1:The second 32-bit word.\n+// Result2:The third 32-bit word.\n+// Result3:The fourth 32-bit word.\n+uint8_t Chip_IAP_ErasePage(uint32_t strPage, uint32_t endPage);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __IAP_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/lcd_18xx_43xx.h ./lpc_chip_43xx/inc/lcd_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/lcd_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/lcd_18xx_43xx.h\t2017-02-27 20:42:08.448009492 -0300\n@@ -0,0 +1,383 @@\n+/*\n+ * @brief LPC18xx/43xx LCD chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __LCD_18XX_43XX_H_\n+#define __LCD_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup LCD_18XX_43XX CHIP: LPC18xx/43xx LCD driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief LCD Controller register block structure\n+ */\n+typedef struct {               /*!< LCD Structure          */\n+   __IO uint32_t  TIMH;        /*!< Horizontal Timing Control register */\n+   __IO uint32_t  TIMV;        /*!< Vertical Timing Control register */\n+   __IO uint32_t  POL;         /*!< Clock and Signal Polarity Control register */\n+   __IO uint32_t  LE;          /*!< Line End Control register */\n+   __IO uint32_t  UPBASE;      /*!< Upper Panel Frame Base Address register */\n+   __IO uint32_t  LPBASE;      /*!< Lower Panel Frame Base Address register */\n+   __IO uint32_t  CTRL;        /*!< LCD Control register   */\n+   __IO uint32_t  INTMSK;      /*!< Interrupt Mask register */\n+   __I  uint32_t  INTRAW;      /*!< Raw Interrupt Status register */\n+   __I  uint32_t  INTSTAT;     /*!< Masked Interrupt Status register */\n+   __O  uint32_t  INTCLR;      /*!< Interrupt Clear register */\n+   __I  uint32_t  UPCURR;      /*!< Upper Panel Current Address Value register */\n+   __I  uint32_t  LPCURR;      /*!< Lower Panel Current Address Value register */\n+   __I  uint32_t  RESERVED0[115];\n+   __IO uint16_t PAL[256];     /*!< 256x16-bit Color Palette registers */\n+   __I  uint32_t  RESERVED1[256];\n+   __IO uint32_t CRSR_IMG[256];/*!< Cursor Image registers */\n+   __IO uint32_t  CRSR_CTRL;   /*!< Cursor Control register */\n+   __IO uint32_t  CRSR_CFG;    /*!< Cursor Configuration register */\n+   __IO uint32_t  CRSR_PAL0;   /*!< Cursor Palette register 0 */\n+   __IO uint32_t  CRSR_PAL1;   /*!< Cursor Palette register 1 */\n+   __IO uint32_t  CRSR_XY;     /*!< Cursor XY Position register */\n+   __IO uint32_t  CRSR_CLIP;   /*!< Cursor Clip Position register */\n+   __I  uint32_t  RESERVED2[2];\n+   __IO uint32_t  CRSR_INTMSK; /*!< Cursor Interrupt Mask register */\n+   __O  uint32_t  CRSR_INTCLR; /*!< Cursor Interrupt Clear register */\n+   __I  uint32_t  CRSR_INTRAW; /*!< Cursor Raw Interrupt Status register */\n+   __I  uint32_t  CRSR_INTSTAT;/*!< Cursor Masked Interrupt Status register */\n+} LPC_LCD_T;\n+\n+/**\n+ * @brief LCD Palette entry format\n+ */\n+typedef struct {\n+   uint32_t Rl : 5;\n+   uint32_t Gl : 5;\n+   uint32_t Bl : 5;\n+   uint32_t Il : 1;\n+   uint32_t Ru : 5;\n+   uint32_t Gu : 5;\n+   uint32_t Bu : 5;\n+   uint32_t Iu : 1;\n+} LCD_PALETTE_ENTRY_T;\n+\n+/**\n+ * @brief LCD Panel type\n+ */\n+typedef enum {\n+   LCD_TFT = 0x02,     /*!< standard TFT */\n+   LCD_MONO_4 = 0x01,  /*!< 4-bit STN mono */\n+   LCD_MONO_8 = 0x05,  /*!< 8-bit STN mono */\n+   LCD_CSTN = 0x00     /*!< color STN */\n+} LCD_PANEL_OPT_T;\n+\n+/**\n+ * @brief LCD Color Format\n+ */\n+typedef enum {\n+   LCD_COLOR_FORMAT_RGB = 0,\n+   LCD_COLOR_FORMAT_BGR\n+} LCD_COLOR_FORMAT_OPT_T;\n+\n+/** LCD Interrupt control mask register bits */\n+#define LCD_INTMSK_FUFIM   0x2 /*!< FIFO underflow interrupt enable */\n+#define LCD_INTMSK_LNBUIM  0x4 /*!< LCD next base address update interrupt enable */\n+#define LCD_INTMSK_VCOMPIM 0x8 /*!< Vertical compare interrupt enable */\n+#define LCD_INTMSK_BERIM   0x10    /*!< AHB master error interrupt enable */\n+\n+#define CLCDC_LCDCTRL_ENABLE    _BIT(0)        /*!< LCD control enable bit */\n+#define CLCDC_LCDCTRL_PWR       _BIT(11)   /*!< LCD control power enable bit */\n+\n+/**\n+ * @brief A structure for LCD Configuration\n+ */\n+typedef struct {\n+   uint8_t  HBP;   /*!< Horizontal back porch in clocks */\n+   uint8_t  HFP;   /*!< Horizontal front porch in clocks */\n+   uint8_t  HSW;   /*!< HSYNC pulse width in clocks */\n+   uint16_t PPL;   /*!< Pixels per line */\n+   uint8_t  VBP;   /*!< Vertical back porch in clocks */\n+   uint8_t  VFP;   /*!< Vertical front porch in clocks */\n+   uint8_t  VSW;   /*!< VSYNC pulse width in clocks */\n+   uint16_t LPP;   /*!< Lines per panel */\n+   uint8_t  IOE;   /*!< Invert output enable, 1 = invert */\n+   uint8_t  IPC;   /*!< Invert panel clock, 1 = invert */\n+   uint8_t  IHS;   /*!< Invert HSYNC, 1 = invert */\n+   uint8_t  IVS;   /*!< Invert VSYNC, 1 = invert */\n+   uint8_t  ACB;   /*!< AC bias frequency in clocks (not used) */\n+   uint8_t  BPP;   /*!< Maximum bits per pixel the display supports */\n+   LCD_PANEL_OPT_T  LCD;   /*!< LCD panel type */\n+   LCD_COLOR_FORMAT_OPT_T  color_format;   /*!<BGR or RGB */\n+   uint8_t  Dual;  /*!< Dual panel, 1 = dual panel display */\n+} LCD_CONFIG_T;\n+\n+/**\n+ * @brief LCD Cursor Size\n+ */\n+typedef enum {\n+   LCD_CURSOR_32x32 = 0,\n+   LCD_CURSOR_64x64\n+} LCD_CURSOR_SIZE_OPT_T;\n+\n+/**\n+ * @brief  Initialize the LCD controller\n+ * @param  pLCD                : The base of LCD peripheral on the chip\n+ * @param  LCD_ConfigStruct    : Pointer to LCD configuration\n+ * @return  LCD_FUNC_OK is executed successfully or LCD_FUNC_ERR on error\n+ */\n+void Chip_LCD_Init(LPC_LCD_T *pLCD, LCD_CONFIG_T *LCD_ConfigStruct);\n+\n+/**\n+ * @brief  Shutdown the LCD controller\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return  Nothing\n+ */\n+void Chip_LCD_DeInit(LPC_LCD_T *pLCD);\n+\n+/**\n+ * @brief  Power-on the LCD Panel (power pin)\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_PowerOn(LPC_LCD_T *pLCD)\n+{\n+   volatile int i;\n+   pLCD->CTRL |= CLCDC_LCDCTRL_PWR;\n+   for (i = 0; i < 1000000; i++) {}\n+   pLCD->CTRL |= CLCDC_LCDCTRL_ENABLE;\n+}\n+\n+/**\n+ * @brief  Power-off the LCD Panel (power pin)\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_PowerOff(LPC_LCD_T *pLCD)\n+{\n+   volatile int i;\n+   pLCD->CTRL &= ~CLCDC_LCDCTRL_PWR;\n+   for (i = 0; i < 1000000; i++) {}\n+   pLCD->CTRL &= ~CLCDC_LCDCTRL_ENABLE;\n+}\n+\n+/**\n+ * @brief  Enable/Disable the LCD Controller\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Enable(LPC_LCD_T *pLCD)\n+{\n+   pLCD->CTRL |= CLCDC_LCDCTRL_ENABLE;\n+}\n+\n+/**\n+ * @brief  Enable/Disable the LCD Controller\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Disable(LPC_LCD_T *pLCD)\n+{\n+   pLCD->CTRL &= ~CLCDC_LCDCTRL_ENABLE;\n+}\n+\n+/**\n+ * @brief  Set LCD Upper Panel Frame Buffer for Single Panel or Upper Panel Frame\n+ *         Buffer for Dual Panel\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  buffer  : address of buffer\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_SetUPFrameBuffer(LPC_LCD_T *pLCD, void *buffer)\n+{\n+   pLCD->UPBASE = (uint32_t) buffer;\n+}\n+\n+/**\n+ * @brief  Set LCD Lower Panel Frame Buffer for Dual Panel\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  buffer  : address of buffer\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_SetLPFrameBuffer(LPC_LCD_T *pLCD, void *buffer)\n+{\n+   pLCD->LPBASE = (uint32_t) buffer;\n+}\n+\n+/**\n+ * @brief  Configure Cursor\n+ * @param  pLCD        : The base of LCD peripheral on the chip\n+ * @param  cursor_size : specify size of cursor\n+ *                  - LCD_CURSOR_32x32 :cursor size is 32x32 pixels\n+ *                  - LCD_CURSOR_64x64 :cursor size is 64x64 pixels\n+ * @param  sync        : cursor sync mode\n+ *                  - TRUE :cursor sync to the frame sync pulse\n+ *                  - FALSE    :cursor async mode\n+ * @return None\n+ */\n+void Chip_LCD_Cursor_Config(LPC_LCD_T *pLCD, LCD_CURSOR_SIZE_OPT_T cursor_size, bool sync);\n+\n+/**\n+ * @brief  Enable Cursor\n+ * @param  pLCD        : The base of LCD peripheral on the chip\n+ * @param  cursor_num  : specify number of cursor is going to be written\n+ *                         this param must < 4\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_Enable(LPC_LCD_T *pLCD, uint8_t cursor_num)\n+{\n+   pLCD->CRSR_CTRL = (cursor_num << 4) | 1;\n+}\n+\n+/**\n+ * @brief  Disable Cursor\n+ * @param  pLCD        : The base of LCD peripheral on the chip\n+ * @param  cursor_num  : specify number of cursor is going to be written\n+ *                         this param must < 4\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_Disable(LPC_LCD_T *pLCD, uint8_t cursor_num)\n+{\n+   pLCD->CRSR_CTRL = (cursor_num << 4);\n+}\n+\n+/**\n+ * @brief  Load Cursor Palette\n+ * @param  pLCD            : The base of LCD peripheral on the chip\n+ * @param  palette_color   : cursor palette 0 value\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_LoadPalette0(LPC_LCD_T *pLCD, uint32_t palette_color)\n+{\n+   /* 7:0 - Red\n+      15:8 - Green\n+      23:16 - Blue\n+      31:24 - Not used*/\n+   pLCD->CRSR_PAL0 = (uint32_t) palette_color;\n+}\n+\n+/**\n+ * @brief  Load Cursor Palette\n+ * @param  pLCD            : The base of LCD peripheral on the chip\n+ * @param  palette_color   : cursor palette 1 value\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_LoadPalette1(LPC_LCD_T *pLCD, uint32_t palette_color)\n+{\n+   /* 7:0 - Red\n+          15:8 - Green\n+          23:16 - Blue\n+          31:24 - Not used*/\n+   pLCD->CRSR_PAL1 = (uint32_t) palette_color;\n+}\n+\n+/**\n+ * @brief  Set Cursor Position\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  x       : horizontal position\n+ * @param  y       : vertical position\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_SetPos(LPC_LCD_T *pLCD, uint16_t x, uint16_t y)\n+{\n+   pLCD->CRSR_XY = (x & 0x3FF) | ((y & 0x3FF) << 16);\n+}\n+\n+/**\n+ * @brief  Set Cursor Clipping Position\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  x       : horizontal position, should be in range: 0..63\n+ * @param  y       : vertical position, should be in range: 0..63\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_SetClip(LPC_LCD_T *pLCD, uint16_t x, uint16_t y)\n+{\n+   pLCD->CRSR_CLIP = (x & 0x3F) | ((y & 0x3F) << 8);\n+}\n+\n+/**\n+ * @brief  Enable Controller Interrupt\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  ints    : OR'ed interrupt bits to enable\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_EnableInts(LPC_LCD_T *pLCD, uint32_t ints)\n+{\n+   pLCD->INTMSK = ints;\n+}\n+\n+/**\n+ * @brief  Disable Controller Interrupt\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  ints    : OR'ed interrupt bits to disable\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_DisableInts(LPC_LCD_T *pLCD, uint32_t ints)\n+{\n+   pLCD->INTMSK = pLCD->INTMSK & ~(ints);\n+}\n+\n+/**\n+ * @brief  Clear Controller Interrupt\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  ints    : OR'ed interrupt bits to clear\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_ClearInts(LPC_LCD_T *pLCD, uint32_t ints)\n+{\n+   pLCD->INTCLR = pLCD->INTMSK & (ints);\n+}\n+\n+/**\n+ * @brief  Write Cursor Image into Internal Cursor Image Buffer\n+ * @param  pLCD        : The base of LCD peripheral on the chip\n+ * @param  cursor_num  : Cursor index\n+ * @param  Image       : Pointer to image data\n+ * @return None\n+ */\n+void Chip_LCD_Cursor_WriteImage(LPC_LCD_T *pLCD, uint8_t cursor_num, void *Image);\n+\n+/**\n+ * @brief  Load LCD Palette\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  palette : Address of palette table to load\n+ * @return None\n+ */\n+void Chip_LCD_LoadPalette(LPC_LCD_T *pLCD, void *palette);\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __LCD_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/lpc_types.h ./lpc_chip_43xx/inc/lpc_types.h\n--- a_8FkA5l/lpc_chip_43xx/inc/lpc_types.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/lpc_types.h\t2017-02-27 20:42:08.448009492 -0300\n@@ -0,0 +1,216 @@\n+/*\n+ * @brief Common types used in LPC functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __LPC_TYPES_H_\n+#define __LPC_TYPES_H_\n+\n+#include <stdint.h>\n+#include <stdbool.h>\n+\n+/** @defgroup LPC_Types CHIP: LPC Common Types\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/** @defgroup LPC_Types_Public_Types LPC Public Types\n+ * @{\n+ */\n+\n+/**\n+ * @brief Boolean Type definition\n+ */\n+typedef enum {FALSE = 0, TRUE = !FALSE} Bool;\n+\n+/**\n+ * @brief Boolean Type definition\n+ */\n+#if !defined(__cplusplus)\n+// typedef enum {false = 0, true = !false} bool;\n+#endif\n+\n+/**\n+ * @brief Flag Status and Interrupt Flag Status type definition\n+ */\n+typedef enum {RESET = 0, SET = !RESET} FlagStatus, IntStatus, SetState;\n+#define PARAM_SETSTATE(State) ((State == RESET) || (State == SET))\n+\n+/**\n+ * @brief Functional State Definition\n+ */\n+typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;\n+#define PARAM_FUNCTIONALSTATE(State) ((State == DISABLE) || (State == ENABLE))\n+\n+/**\n+ * @ Status type definition\n+ */\n+typedef enum {ERROR = 0, SUCCESS = !ERROR} Status;\n+\n+/**\n+ * Read/Write transfer type mode (Block or non-block)\n+ */\n+typedef enum {\n+   NONE_BLOCKING = 0,      /**< None Blocking type */\n+   BLOCKING,               /**< Blocking type */\n+} TRANSFER_BLOCK_T;\n+\n+/** Pointer to Function returning Void (any number of parameters) */\n+typedef void (*PFV)();\n+\n+/** Pointer to Function returning int32_t (any number of parameters) */\n+typedef int32_t (*PFI)();\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup LPC_Types_Public_Macros  LPC Public Macros\n+ * @{\n+ */\n+\n+/* _BIT(n) sets the bit at position \"n\"\n+ * _BIT(n) is intended to be used in \"OR\" and \"AND\" expressions:\n+ * e.g., \"(_BIT(3) | _BIT(7))\".\n+ */\n+#undef _BIT\n+/* Set bit macro */\n+#define _BIT(n) (1 << (n))\n+\n+/* _SBF(f,v) sets the bit field starting at position \"f\" to value \"v\".\n+ * _SBF(f,v) is intended to be used in \"OR\" and \"AND\" expressions:\n+ * e.g., \"((_SBF(5,7) | _SBF(12,0xF)) & 0xFFFF)\"\n+ */\n+#undef _SBF\n+/* Set bit field macro */\n+#define _SBF(f, v) ((v) << (f))\n+\n+/* _BITMASK constructs a symbol with 'field_width' least significant\n+ * bits set.\n+ * e.g., _BITMASK(5) constructs '0x1F', _BITMASK(16) == 0xFFFF\n+ * The symbol is intended to be used to limit the bit field width\n+ * thusly:\n+ * <a_register> = (any_expression) & _BITMASK(x), where 0 < x <= 32.\n+ * If \"any_expression\" results in a value that is larger than can be\n+ * contained in 'x' bits, the bits above 'x - 1' are masked off.  When\n+ * used with the _SBF example above, the example would be written:\n+ * a_reg = ((_SBF(5,7) | _SBF(12,0xF)) & _BITMASK(16))\n+ * This ensures that the value written to a_reg is no wider than\n+ * 16 bits, and makes the code easier to read and understand.\n+ */\n+#undef _BITMASK\n+/* Bitmask creation macro */\n+#define _BITMASK(field_width) ( _BIT(field_width) - 1)\n+\n+/* NULL pointer */\n+#ifndef NULL\n+#define NULL ((void *) 0)\n+#endif\n+\n+/* Number of elements in an array */\n+#define NELEMENTS(array)  (sizeof(array) / sizeof(array[0]))\n+\n+/* Static data/function define */\n+#define STATIC static\n+/* External data/function define */\n+#define EXTERN extern\n+\n+#if !defined(MAX)\n+#define MAX(a, b) (((a) > (b)) ? (a) : (b))\n+#endif\n+#if !defined(MIN)\n+#define MIN(a, b) (((a) < (b)) ? (a) : (b))\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+/* Old Type Definition compatibility */\n+/** @addtogroup LPC_Types_Public_Types\n+ * @{\n+ */\n+\n+/** LPC type for character type */\n+typedef char CHAR;\n+\n+/** LPC type for 8 bit unsigned value */\n+typedef uint8_t UNS_8;\n+\n+/** LPC type for 8 bit signed value */\n+typedef int8_t INT_8;\n+\n+/** LPC type for 16 bit unsigned value */\n+typedef uint16_t UNS_16;\n+\n+/** LPC type for 16 bit signed value */\n+typedef int16_t INT_16;\n+\n+/** LPC type for 32 bit unsigned value */\n+typedef uint32_t UNS_32;\n+\n+/** LPC type for 32 bit signed value */\n+typedef int32_t INT_32;\n+\n+/** LPC type for 64 bit signed value */\n+typedef int64_t INT_64;\n+\n+/** LPC type for 64 bit unsigned value */\n+typedef uint64_t UNS_64;\n+\n+#ifdef __CODE_RED\n+#define BOOL_32 bool\n+#define BOOL_16 bool\n+#define BOOL_8  bool\n+#else\n+/** 32 bit boolean type */\n+typedef bool BOOL_32;\n+\n+/** 16 bit boolean type */\n+typedef bool BOOL_16;\n+\n+/** 8 bit boolean type */\n+typedef bool BOOL_8;\n+#endif\n+\n+#ifdef __CC_ARM\n+#define INLINE  __inline\n+#else\n+#define INLINE inline\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __LPC_TYPES_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/mcpwm_18xx_43xx.h ./lpc_chip_43xx/inc/mcpwm_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/mcpwm_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/mcpwm_18xx_43xx.h\t2017-02-27 20:42:08.448009492 -0300\n@@ -0,0 +1,80 @@\n+/*\n+ * @brief LPC18xx/43xx Motor Control PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __MCPWM_18XX_43XX_H_\n+#define __MCPWM_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup MCPWM_18XX_43XX CHIP: LPC18xx/43xx Motor Control PWM driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Motor Control PWM register block structure\n+ */\n+typedef struct {                   /*!< MCPWM Structure        */\n+   __I  uint32_t  CON;             /*!< PWM Control read address */\n+   __O  uint32_t  CON_SET;         /*!< PWM Control set address */\n+   __O  uint32_t  CON_CLR;         /*!< PWM Control clear address */\n+   __I  uint32_t  CAPCON;          /*!< Capture Control read address */\n+   __O  uint32_t  CAPCON_SET;      /*!< Capture Control set address */\n+   __O  uint32_t  CAPCON_CLR;      /*!< Event Control clear address */\n+   __IO uint32_t TC[3];            /*!< Timer Counter register */\n+   __IO uint32_t LIM[3];           /*!< Limit register         */\n+   __IO uint32_t MAT[3];           /*!< Match register         */\n+   __IO uint32_t  DT;              /*!< Dead time register     */\n+   __IO uint32_t  CCP;             /*!< Communication Pattern register */\n+   __I  uint32_t CAP[3];           /*!< Capture register       */\n+   __I  uint32_t  INTEN;           /*!< Interrupt Enable read address */\n+   __O  uint32_t  INTEN_SET;       /*!< Interrupt Enable set address */\n+   __O  uint32_t  INTEN_CLR;       /*!< Interrupt Enable clear address */\n+   __I  uint32_t  CNTCON;          /*!< Count Control read address */\n+   __O  uint32_t  CNTCON_SET;      /*!< Count Control set address */\n+   __O  uint32_t  CNTCON_CLR;      /*!< Count Control clear address */\n+   __I  uint32_t  INTF;            /*!< Interrupt flags read address */\n+   __O  uint32_t  INTF_SET;        /*!< Interrupt flags set address */\n+   __O  uint32_t  INTF_CLR;        /*!< Interrupt flags clear address */\n+   __O  uint32_t  CAP_CLR;         /*!< Capture clear address  */\n+} LPC_MCPWM_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __MCPWM_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/otp_18xx_43xx.h ./lpc_chip_43xx/inc/otp_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/otp_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/otp_18xx_43xx.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,144 @@\n+/*\n+ * @brief LPC18xx/43xx OTP Controller driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __OTP_18XX_43XX_H_\n+#define __OTP_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup OTP_18XX_43XX CHIP: LPC18xx/43xx OTP Controller driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  OTP Register block\n+ */\n+typedef struct {\n+   __IO uint32_t OTP0_0;               /*!< (@ 0x40045000) OTP content */\n+   __IO uint32_t OTP0_1;               /*!< (@ 0x40045004) OTP content */\n+   __IO uint32_t OTP0_2;               /*!< (@ 0x40045008) OTP content */\n+   __IO uint32_t OTP0_3;               /*!< (@ 0x4004500C) OTP content */\n+   __IO uint32_t OTP1_0;               /*!< (@ 0x40045010) OTP content */\n+   __IO uint32_t OTP1_1;               /*!< (@ 0x40045014) OTP content */\n+   __IO uint32_t OTP1_2;               /*!< (@ 0x40045018) OTP content */\n+   __IO uint32_t OTP1_3;               /*!< (@ 0x4004501C) OTP content */\n+   __IO uint32_t OTP2_0;               /*!< (@ 0x40045020) OTP content */\n+   __IO uint32_t OTP2_1;               /*!< (@ 0x40045024) OTP content */\n+   __IO uint32_t OTP2_2;               /*!< (@ 0x40045028) OTP content */\n+   __IO uint32_t OTP2_3;               /*!< (@ 0x4004502C) OTP content */\n+   __IO uint32_t OTP3_0;               /*!< (@ 0x40045030) OTP content */\n+   __IO uint32_t OTP3_1;               /*!< (@ 0x40045034) OTP content */\n+   __IO uint32_t OTP3_2;               /*!< (@ 0x40045038) OTP content */\n+   __IO uint32_t OTP3_3;               /*!< (@ 0x4004503C) OTP content */\n+} LPC_OTP_T;\n+\n+/**\n+ * @brief  OTP Boot Source selection used in Chip driver\n+ */\n+typedef enum CHIP_OTP_BOOT_SRC {\n+   CHIP_OTP_BOOTSRC_PINS,      /*!< Boot source - External pins */\n+   CHIP_OTP_BOOTSRC_UART0,     /*!< Boot source - UART0 */\n+   CHIP_OTP_BOOTSRC_SPIFI,     /*!< Boot source - EMC 8-bit memory */\n+   CHIP_OTP_BOOTSRC_EMC8,      /*!< Boot source - EMC 16-bit memory */\n+   CHIP_OTP_BOOTSRC_EMC16,     /*!< Boot source - EMC 32-bit memory */\n+   CHIP_OTP_BOOTSRC_EMC32,     /*!< Boot source - EMC 32-bit memory */\n+   CHIP_OTP_BOOTSRC_USB0,      /*!< Boot source - DFU USB0 boot */\n+   CHIP_OTP_BOOTSRC_USB1,      /*!< Boot source - DFU USB1 boot */\n+   CHIP_OTP_BOOTSRC_SPI,       /*!< Boot source - SPI boot */\n+   CHIP_OTP_BOOTSRC_UART3      /*!< Boot source - UART3 */\n+} CHIP_OTP_BOOT_SRC_T;\n+\n+/**\n+ * @brief  Initialize for OTP Controller functions\n+ * @return  Status of Otp_Init function\n+ * This function will initialise all the OTP driver function pointers\n+ * and call the ROM OTP Initialisation function.\n+ */\n+uint32_t Chip_OTP_Init(void);\n+\n+/**\n+ * @brief  Program boot source in OTP Controller\n+ * @param  BootSrc : Boot Source enum value\n+ * @return Status\n+ */\n+uint32_t Chip_OTP_ProgBootSrc(CHIP_OTP_BOOT_SRC_T BootSrc);\n+\n+/**\n+ * @brief  Program the JTAG bit in OTP Controller\n+ * @return Status\n+ */\n+uint32_t Chip_OTP_ProgJTAGDis(void);\n+\n+/**\n+ * @brief  Program USB ID in OTP Controller\n+ * @param  ProductID   : USB Product ID\n+ * @param  VendorID    : USB Vendor ID\n+ * @return Status\n+ */\n+uint32_t Chip_OTP_ProgUSBID(uint32_t ProductID, uint32_t VendorID);\n+\n+/**\n+ * @brief  Program OTP GP Word memory\n+ * @param   WordNum     : Word Number (Select word 0 or word 1 or word 2)\n+ * @param  Data        : Data value\n+ * @param  Mask        : Mask value\n+ * @return Status\n+ * This function available in devices which are not AES capable\n+ */\n+uint32_t Chip_OTP_ProgGPWord(uint32_t WordNum, uint32_t Data, uint32_t Mask);\n+\n+/**\n+ * @brief  Program AES Key\n+ * @param   KeyNum      : Key Number (Select 0 or 1)\n+ * @param  key         : Pointer to AES Key (16 bytes required)\n+ * @return Status\n+ * This function available in devices which are AES capable\n+ */\n+uint32_t Chip_OTP_ProgKey(uint32_t KeyNum, uint8_t *key);\n+\n+/**\n+ * @brief  Generate Random Number using HW Random Number Generator\n+ * @return Random Number value\n+ */\n+uint32_t Chip_OTP_GenRand(void);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __OTP_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/pinint_18xx_43xx.h ./lpc_chip_43xx/inc/pinint_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/pinint_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/pinint_18xx_43xx.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,252 @@\n+/*\n+ * @brief LPC18xx/43xx Pin Interrupt and Pattern Match Registers and driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PININT_18XX_43XX_H_\n+#define __PININT_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup PININT_18XX_43XX CHIP: LPC18xx/43xx Pin Interrupt and Pattern Match driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC18xx/43xx Pin Interrupt and Pattern Match register block structure\n+ */\n+typedef struct {           /*!< PIN_INT Structure */\n+   __IO uint32_t ISEL;     /*!< Pin Interrupt Mode register */\n+   __IO uint32_t IENR;     /*!< Pin Interrupt Enable (Rising) register */\n+   __IO uint32_t SIENR;    /*!< Set Pin Interrupt Enable (Rising) register */\n+   __IO uint32_t CIENR;    /*!< Clear Pin Interrupt Enable (Rising) register */\n+   __IO uint32_t IENF;     /*!< Pin Interrupt Enable Falling Edge / Active Level register */\n+   __IO uint32_t SIENF;    /*!< Set Pin Interrupt Enable Falling Edge / Active Level register */\n+   __IO uint32_t CIENF;    /*!< Clear Pin Interrupt Enable Falling Edge / Active Level address */\n+   __IO uint32_t RISE;     /*!< Pin Interrupt Rising Edge register */\n+   __IO uint32_t FALL;     /*!< Pin Interrupt Falling Edge register */\n+   __IO uint32_t IST;      /*!< Pin Interrupt Status register */\n+} LPC_PIN_INT_T;\n+\n+\n+/**\n+ * LPC18xx/43xx Pin Interrupt channel values\n+ */\n+#define PININTCH0         (1 << 0)\n+#define PININTCH1         (1 << 1)\n+#define PININTCH2         (1 << 2)\n+#define PININTCH3         (1 << 3)\n+#define PININTCH4         (1 << 4)\n+#define PININTCH5         (1 << 5)\n+#define PININTCH6         (1 << 6)\n+#define PININTCH7         (1 << 7)\n+#define PININTCH(ch)      (1 << (ch))\n+\n+/**\n+ * @brief  Initialize Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return Nothing\n+ * @note   This function should be used after the Chip_GPIO_Init() function.\n+ */\n+STATIC INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT) {}\n+\n+/**\n+ * @brief  De-Initialize Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT) {}\n+\n+/**\n+ * @brief  Configure the pins as edge sensitive in Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_SetPinModeEdge(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->ISEL &= ~pins;\n+}\n+\n+/**\n+ * @brief  Configure the pins as level sensitive in Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_SetPinModeLevel(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->ISEL |= pins;\n+}\n+\n+/**\n+ * @brief  Return current PININT rising edge or high level interrupt enable state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return A bifield containing the high edge/level interrupt enables for each\n+ * interrupt. Bit 0 = PININT0, 1 = PININT1, etc.\n+ * For each bit, a 0 means the high edge/level interrupt is disabled, while a 1\n+ * means it's enabled.\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetHighEnabled(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->IENR;\n+}\n+\n+/**\n+ * @brief  Enable high edge/level PININT interrupts for pins\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins to enable (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_EnableIntHigh(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->SIENR = pins;\n+}\n+\n+/**\n+ * @brief  Disable high edge/level PININT interrupts for pins\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins to disable (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_DisableIntHigh(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->CIENR = pins;\n+}\n+\n+/**\n+ * @brief  Return current PININT falling edge or low level interrupt enable state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return A bifield containing the low edge/level interrupt enables for each\n+ * interrupt. Bit 0 = PININT0, 1 = PININT1, etc.\n+ * For each bit, a 0 means the low edge/level interrupt is disabled, while a 1\n+ * means it's enabled.\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetLowEnabled(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->IENF;\n+}\n+\n+/**\n+ * @brief  Enable low edge/level PININT interrupts for pins\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins to enable (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_EnableIntLow(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->SIENF = pins;\n+}\n+\n+/**\n+ * @brief  Disable low edge/level PININT interrupts for pins\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins to disable (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_DisableIntLow(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->CIENF = pins;\n+}\n+\n+/**\n+ * @brief  Return pin states that have a detected latched high edge (RISE) state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return PININT states (bit n = high) with a latched rise state detected\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetRiseStates(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->RISE;\n+}\n+\n+/**\n+ * @brief  Clears pin states that had a latched high edge (RISE) state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins with latched states to clear\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_ClearRiseStates(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->RISE = pins;\n+}\n+\n+/**\n+ * @brief  Return pin states that have a detected latched falling edge (FALL) state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return PININT states (bit n = high) with a latched rise state detected\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetFallStates(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->FALL;\n+}\n+\n+/**\n+ * @brief  Clears pin states that had a latched falling edge (FALL) state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins with latched states to clear\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_ClearFallStates(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->FALL = pins;\n+}\n+\n+/**\n+ * @brief  Get interrupt status from Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return Interrupt status (bit n for PININTn = high means interrupt ie pending)\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetIntStatus(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->IST;\n+}\n+\n+/**\n+ * @brief  Clear interrupt status in Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pin interrupts to clear (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_ClearIntStatus(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->IST = pins;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PININT_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/pmc_18xx_43xx.h ./lpc_chip_43xx/inc/pmc_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/pmc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/pmc_18xx_43xx.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,99 @@\n+/*\n+ * @brief LPC18xx/43xx Power Management Controller driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PMC_18XX_43XX_H_\n+#define __PMC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup PMC_18XX_43XX CHIP: LPC18xx/43xx Power Management Controller driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Power Management Controller register block structure\n+ */\n+typedef struct {                       /*!< PMC Structure          */\n+   __IO uint32_t  PD0_SLEEP0_HW_ENA;   /*!< Hardware sleep event enable register */\n+   __I  uint32_t  RESERVED0[6];\n+   __IO uint32_t  PD0_SLEEP0_MODE;     /*!< Sleep power mode register */\n+} LPC_PMC_T;\n+\n+/**\n+ * @brief Power Management Controller power modes\n+ * Setting this mode will not make IO loose the state\n+ */\n+#define PMC_PWR_DEEP_SLEEP_MODE         0x3000AA\n+#define PMC_PWR_POWER_DOWN_MODE         0x30FCBA\n+#define PMC_PWR_DEEP_POWER_DOWN_MODE    0x30FF7F\n+\n+/**\n+ * @brief Power Management Controller power modes (IO powerdown)\n+ * Setting this mode will make the IO loose the state\n+ */\n+#define PMC_PWR_DEEP_SLEEP_MODE_NO_IO         0x3F00AA\n+#define PMC_PWR_POWER_DOWN_MODE_NO_IO         0x3FFCBA\n+#define PMC_PWR_DEEP_POWER_DOWN_MODE_NO_IO    0x3FFF7F\n+\n+/*\n+ * @brief PMC power states\n+ */\n+typedef enum {\n+   PMC_DeepSleep = PMC_PWR_DEEP_SLEEP_MODE,            /*!< Deep sleep state */\n+   PMC_PowerDown = PMC_PWR_POWER_DOWN_MODE,            /*!< Power Down state */\n+   PMC_DeepPowerDown = PMC_PWR_DEEP_POWER_DOWN_MODE,   /*!< Power Down state */\n+} CHIP_PMC_PWR_STATE_T;\n+\n+/**\n+ * @brief  Set to sleep power state\n+ * @return Nothing\n+ */\n+void Chip_PMC_Sleep(void);\n+\n+/**\n+ * @brief  Set to sleep power mode\n+ * @param  PwrState    : Power State as specified in /a CHIP_PMC_PWR_STATE_T enum\n+ * @return Nothing\n+ */\n+void Chip_PMC_Set_PwrState(CHIP_PMC_PWR_STATE_T PwrState);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PMC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/qei_18xx_43xx.h ./lpc_chip_43xx/inc/qei_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/qei_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/qei_18xx_43xx.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,86 @@\n+/*\n+ * @brief LPC18xx/43xx Quadrature Encoder Interface driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __QEI_18XX_43XX_H_\n+#define __QEI_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup QEI_18XX_43XX CHIP: LPC18xx/43xx Quadrature Encoder Interface driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Quadrature Encoder Interface register block structure\n+ */\n+typedef struct {               /*!< QEI Structure          */\n+   __O  uint32_t  CON;         /*!< Control register       */\n+   __I  uint32_t  STAT;        /*!< Encoder status register */\n+   __IO uint32_t  CONF;        /*!< Configuration register */\n+   __I  uint32_t  POS;         /*!< Position register      */\n+   __IO uint32_t  MAXPOS;      /*!< Maximum position register */\n+   __IO uint32_t  CMPOS0;      /*!< position compare register 0 */\n+   __IO uint32_t  CMPOS1;      /*!< position compare register 1 */\n+   __IO uint32_t  CMPOS2;      /*!< position compare register 2 */\n+   __I  uint32_t  INXCNT;      /*!< Index count register   */\n+   __IO uint32_t  INXCMP0;     /*!< Index compare register 0 */\n+   __IO uint32_t  LOAD;        /*!< Velocity timer reload register */\n+   __I  uint32_t  TIME;        /*!< Velocity timer register */\n+   __I  uint32_t  VEL;         /*!< Velocity counter register */\n+   __I  uint32_t  CAP;         /*!< Velocity capture register */\n+   __IO uint32_t  VELCOMP;     /*!< Velocity compare register */\n+   __IO uint32_t  FILTERPHA;   /*!< Digital filter register on input phase A (QEI_A) */\n+   __IO uint32_t  FILTERPHB;   /*!< Digital filter register on input phase B (QEI_B) */\n+   __IO uint32_t  FILTERINX;   /*!< Digital filter register on input index (QEI_IDX) */\n+   __IO uint32_t  WINDOW;      /*!< Index acceptance window register */\n+   __IO uint32_t  INXCMP1;     /*!< Index compare register 1 */\n+   __IO uint32_t  INXCMP2;     /*!< Index compare register 2 */\n+   __I  uint32_t  RESERVED0[993];\n+   __O  uint32_t  IEC;         /*!< Interrupt enable clear register */\n+   __O  uint32_t  IES;         /*!< Interrupt enable set register */\n+   __I  uint32_t  INTSTAT;     /*!< Interrupt status register */\n+   __I  uint32_t  IE;          /*!< Interrupt enable register */\n+   __O  uint32_t  CLR;         /*!< Interrupt status clear register */\n+   __O  uint32_t  SET;         /*!< Interrupt status set register */\n+} LPC_QEI_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __QEI_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/rgu_18xx_43xx.h ./lpc_chip_43xx/inc/rgu_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/rgu_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/rgu_18xx_43xx.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,158 @@\n+/*\n+ * @brief LPC18xx/43xx Reset Generator Unit driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RGU_18XX_43XX_H_\n+#define __RGU_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RGU_18XX_43XX CHIP: LPC18xx/43xx Reset Generator Unit (RGU) driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief RGU reset enumerations\n+ */\n+typedef enum CHIP_RGU_RST {\n+   RGU_CORE_RST,\n+   RGU_PERIPH_RST,\n+   RGU_MASTER_RST,\n+   RGU_WWDT_RST = 4,\n+   RGU_CREG_RST,\n+   RGU_BUS_RST = 8,\n+   RGU_SCU_RST,\n+   RGU_M0SUB_RST = 12,\n+   RGU_M3_RST,\n+   RGU_LCD_RST = 16,\n+   RGU_USB0_RST,\n+   RGU_USB1_RST,\n+   RGU_DMA_RST,\n+   RGU_SDIO_RST,\n+   RGU_EMC_RST,\n+   RGU_ETHERNET_RST,\n+   RGU_FLASHA_RST = 25,\n+   RGU_EEPROM_RST = 27,\n+   RGU_GPIO_RST,\n+   RGU_FLASHB_RST,\n+   RGU_TIMER0_RST = 32,\n+   RGU_TIMER1_RST,\n+   RGU_TIMER2_RST,\n+   RGU_TIMER3_RST,\n+   RGU_RITIMER_RST,\n+   RGU_SCT_RST,\n+   RGU_MOTOCONPWM_RST,\n+   RGU_QEI_RST,\n+   RGU_ADC0_RST,\n+   RGU_ADC1_RST,\n+   RGU_DAC_RST,\n+   RGU_UART0_RST = 44,\n+   RGU_UART1_RST,\n+   RGU_UART2_RST,\n+   RGU_UART3_RST,\n+   RGU_I2C0_RST,\n+   RGU_I2C1_RST,\n+   RGU_SSP0_RST,\n+   RGU_SSP1_RST,\n+   RGU_I2S_RST,\n+   RGU_SPIFI_RST,\n+   RGU_CAN1_RST,\n+   RGU_CAN0_RST,\n+#ifdef CHIP_LPC43XX\n+   RGU_M0APP_RST,\n+   RGU_SGPIO_RST,\n+   RGU_SPI_RST,\n+   RGU_ADCHS_RST = 60,\n+#endif\n+   RGU_LAST_RST = 63,\n+} CHIP_RGU_RST_T;\n+\n+/**\n+ * @brief RGU register structure\n+ */\n+typedef struct {                           /*!< RGU Structure          */\n+   __I  uint32_t  RESERVED0[64];\n+   __O  uint32_t  RESET_CTRL[2];           /*!< Reset control register 0,1 */\n+   __I  uint32_t  RESERVED1[2];\n+   __IO uint32_t  RESET_STATUS[4];         /*!< Reset status register 0 to 3 */\n+   __I  uint32_t  RESERVED2[12];\n+   __I  uint32_t  RESET_ACTIVE_STATUS[2];  /*!< Reset active status register 0, 1 */\n+   __I  uint32_t  RESERVED3[170];\n+   __IO uint32_t  RESET_EXT_STAT[RGU_LAST_RST + 1];/*!< Reset external status registers */\n+} LPC_RGU_T;\n+\n+/**\n+ * @brief  Trigger a peripheral reset for the selected peripheral\n+ * @param  ResetNumber : Peripheral reset number to trigger\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_RGU_TriggerReset(CHIP_RGU_RST_T ResetNumber)\n+{\n+   LPC_RGU->RESET_CTRL[ResetNumber >> 5] = 1 << (ResetNumber & 31);\n+   /* Reset will auto clear after 1 clock cycle */\n+}\n+\n+/**\n+ * @brief  Checks the reset status of a peripheral\n+ * @param  ResetNumber : Peripheral reset number to trigger\n+ * @return true if the periperal is still being reset\n+ */\n+STATIC INLINE bool Chip_RGU_InReset(CHIP_RGU_RST_T ResetNumber)\n+{\n+   return !(LPC_RGU->RESET_ACTIVE_STATUS[ResetNumber >> 5] & (1 << (ResetNumber & 31)));\n+}\n+\n+/**\n+ * @brief  Clears reset for the selected peripheral\n+ * @param  ResetNumber : Peripheral reset number to trigger (RGU_M0SUB_RST or RGU_M0APP_RST)\n+ * @return Nothing\n+ * @note\n+ * Almost all peripherals will auto clear the reset bit. Only a few peripherals\n+ * like the Cortex M0 Core in LPC43xx will not auto clear the reset and require\n+ * this function to clear the reset bit. This function clears all reset bits in\n+ * a reset register.\n+ */\n+STATIC INLINE void Chip_RGU_ClearReset(CHIP_RGU_RST_T ResetNumber)\n+{\n+   LPC_RGU->RESET_CTRL[ResetNumber >> 5] = 0;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RGU_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/ring_buffer.h ./lpc_chip_43xx/inc/ring_buffer.h\n--- a_8FkA5l/lpc_chip_43xx/inc/ring_buffer.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/ring_buffer.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,188 @@\n+/*\n+ * @brief Common ring buffer support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RING_BUFFER_H_\n+#define __RING_BUFFER_H_\n+\n+#include \"lpc_types.h\"\n+\n+/** @defgroup Ring_Buffer CHIP: Simple ring buffer implementation\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/**\n+ * @brief Ring buffer structure\n+ */\n+typedef struct {\n+   void *data;\n+   int count;\n+   int itemSz;\n+   uint32_t head;\n+   uint32_t tail;\n+} RINGBUFF_T;\n+\n+/**\n+ * @def        RB_VHEAD(rb)\n+ * volatile typecasted head index\n+ */\n+#define RB_VHEAD(rb)              (*(volatile uint32_t *) &(rb)->head)\n+\n+/**\n+ * @def        RB_VTAIL(rb)\n+ * volatile typecasted tail index\n+ */\n+#define RB_VTAIL(rb)              (*(volatile uint32_t *) &(rb)->tail)\n+\n+/**\n+ * @brief  Initialize ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer to initialize\n+ * @param  buffer      : Pointer to buffer to associate with RingBuff\n+ * @param  itemSize    : Size of each buffer item size\n+ * @param  count       : Size of ring buffer\n+ * @note   Memory pointed by @a buffer must have correct alignment of\n+ *             @a itemSize, and @a count must be a power of 2 and must at\n+ *             least be 2 or greater.\n+ * @return Nothing\n+ */\n+int RingBuffer_Init(RINGBUFF_T *RingBuff, void *buffer, int itemSize, int count);\n+\n+/**\n+ * @brief  Resets the ring buffer to empty\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return Nothing\n+ */\n+STATIC INLINE void RingBuffer_Flush(RINGBUFF_T *RingBuff)\n+{\n+   RingBuff->head = RingBuff->tail = 0;\n+}\n+\n+/**\n+ * @brief  Return size the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return Size of the ring buffer in bytes\n+ */\n+STATIC INLINE int RingBuffer_GetSize(RINGBUFF_T *RingBuff)\n+{\n+   return RingBuff->count;\n+}\n+\n+/**\n+ * @brief  Return number of items in the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return Number of items in the ring buffer\n+ */\n+STATIC INLINE int RingBuffer_GetCount(RINGBUFF_T *RingBuff)\n+{\n+   return RB_VHEAD(RingBuff) - RB_VTAIL(RingBuff);\n+}\n+\n+/**\n+ * @brief  Return number of free items in the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return Number of free items in the ring buffer\n+ */\n+STATIC INLINE int RingBuffer_GetFree(RINGBUFF_T *RingBuff)\n+{\n+   return RingBuff->count - RingBuffer_GetCount(RingBuff);\n+}\n+\n+/**\n+ * @brief  Return number of items in the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return 1 if the ring buffer is full, otherwise 0\n+ */\n+STATIC INLINE int RingBuffer_IsFull(RINGBUFF_T *RingBuff)\n+{\n+   return (RingBuffer_GetCount(RingBuff) >= RingBuff->count);\n+}\n+\n+/**\n+ * @brief  Return empty status of ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return 1 if the ring buffer is empty, otherwise 0\n+ */\n+STATIC INLINE int RingBuffer_IsEmpty(RINGBUFF_T *RingBuff)\n+{\n+   return RB_VHEAD(RingBuff) == RB_VTAIL(RingBuff);\n+}\n+\n+/**\n+ * @brief  Insert a single item into ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @param  data        : pointer to item\n+ * @return 1 when successfully inserted,\n+ *         0 on error (Buffer not initialized using\n+ *         RingBuffer_Init() or attempted to insert\n+ *         when buffer is full)\n+ */\n+int RingBuffer_Insert(RINGBUFF_T *RingBuff, const void *data);\n+\n+/**\n+ * @brief  Insert an array of items into ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @param  data        : Pointer to first element of the item array\n+ * @param  num         : Number of items in the array\n+ * @return number of items successfully inserted,\n+ *         0 on error (Buffer not initialized using\n+ *         RingBuffer_Init() or attempted to insert\n+ *         when buffer is full)\n+ */\n+int RingBuffer_InsertMult(RINGBUFF_T *RingBuff, const void *data, int num);\n+\n+/**\n+ * @brief  Pop an item from the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @param  data        : Pointer to memory where popped item be stored\n+ * @return 1 when item popped successfuly onto @a data,\n+ *             0 When error (Buffer not initialized using\n+ *             RingBuffer_Init() or attempted to pop item when\n+ *             the buffer is empty)\n+ */\n+int RingBuffer_Pop(RINGBUFF_T *RingBuff, void *data);\n+\n+/**\n+ * @brief  Pop an array of items from the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @param  data        : Pointer to memory where popped items be stored\n+ * @param  num         : Max number of items array @a data can hold\n+ * @return Number of items popped onto @a data,\n+ *             0 on error (Buffer not initialized using RingBuffer_Init()\n+ *             or attempted to pop when the buffer is empty)\n+ */\n+int RingBuffer_PopMult(RINGBUFF_T *RingBuff, void *data, int num);\n+\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __RING_BUFFER_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/ritimer_18xx_43xx.h ./lpc_chip_43xx/inc/ritimer_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/ritimer_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/ritimer_18xx_43xx.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,189 @@\n+/*\n+ * @brief LPC18xx/43xx RITimer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RITIMER_18XX_43XX_H_\n+#define __RITIMER_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RITIMER_18XX_43XX CHIP: LPC18xx/43xx Repetitive Interrupt Timer driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Repetitive Interrupt Timer register block structure\n+ */\n+typedef struct {               /*!< RITIMER Structure      */\n+   __IO uint32_t  COMPVAL;     /*!< Compare register       */\n+   __IO uint32_t  MASK;        /*!< Mask register. This register holds the 32-bit mask value. A 1 written to any bit will force a compare on the corresponding bit of the counter and compare register. */\n+   __IO uint32_t  CTRL;        /*!< Control register.      */\n+   __IO uint32_t  COUNTER;     /*!< 32-bit counter         */\n+} LPC_RITIMER_T;\n+\n+/*\n+ * @brief RITIMER register support bitfields and mask\n+ */\n+\n+/*\n+ * RIT control register\n+ */\n+/**    Set by H/W when the counter value equals the masked compare value */\n+#define RIT_CTRL_INT    ((uint32_t) (1))\n+/** Set timer enable clear to 0 when the counter value equals the masked compare value  */\n+#define RIT_CTRL_ENCLR  ((uint32_t) _BIT(1))\n+/** Set timer enable on debug */\n+#define RIT_CTRL_ENBR   ((uint32_t) _BIT(2))\n+/** Set timer enable */\n+#define RIT_CTRL_TEN    ((uint32_t) _BIT(3))\n+\n+/**\n+ * @brief  Initialize the RIT\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+void Chip_RIT_Init(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief  Shutdown the RIT\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+void Chip_RIT_DeInit(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief  Enable Timer\n+ * @param  pRITimer        : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_Enable(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL |= RIT_CTRL_TEN;\n+}\n+\n+/**\n+ * @brief  Disable Timer\n+ * @param  pRITimer        : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_Disable(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL &= ~RIT_CTRL_TEN;\n+}\n+\n+/**\n+ * @brief  Enable timer debug\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_TimerDebugEnable(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL |= RIT_CTRL_ENBR;\n+}\n+\n+/**\n+ * @brief  Disable timer debug\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_TimerDebugDisable(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL &= ~RIT_CTRL_ENBR;\n+}\n+\n+/**\n+ * @brief  Check whether interrupt flag is set or not\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return Current interrupt status, either ET or UNSET\n+ */\n+IntStatus Chip_RIT_GetIntStatus(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief  Set a tick value for the interrupt to time out\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @param  val         : value (in ticks) of the interrupt to be set\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_SetCOMPVAL(LPC_RITIMER_T *pRITimer, uint32_t val)\n+{\n+   pRITimer->COMPVAL = val;\n+}\n+\n+/**\n+ * @brief  Enables or clears the RIT or interrupt\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @param  val         : RIT to be set, one or more RIT_CTRL_* values\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_EnableCTRL(LPC_RITIMER_T *pRITimer, uint32_t val)\n+{\n+   pRITimer->CTRL |= val;\n+}\n+\n+/**\n+ * @brief  Clears the RIT interrupt\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_ClearInt(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL |= RIT_CTRL_INT;\n+}\n+\n+/**\n+ * @brief  Returns the current RIT Counter value\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return the current timer counter value\n+ */\n+STATIC INLINE uint32_t Chip_RIT_GetCounter(LPC_RITIMER_T *pRITimer)\n+{\n+   return pRITimer->COUNTER;\n+}\n+\n+/**\n+ * @brief  Set timer interval value\n+ * @param  pRITimer        : RITimer peripheral selected\n+ * @param  time_interval   : timer interval value (ms)\n+ * @return None\n+ */\n+void Chip_RIT_SetTimerInterval(LPC_RITIMER_T *pRITimer, uint32_t time_interval);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RITIMER_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/romapi_18xx_43xx.h ./lpc_chip_43xx/inc/romapi_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/romapi_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/romapi_18xx_43xx.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,128 @@\n+/*\n+ * @brief LPC18xx_43xx ROM API declarations and functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ROMAPI_18XX_43XX_H_\n+#define __ROMAPI_18XX_43XX_H_\n+\n+#include \"iap_18xx_43xx.h\"\n+#include \"error.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ROMAPI_18XX_43XX CHIP: LPC18xx_43xx ROM API declarations and functions\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC18XX_43XX OTP API structure\n+ */\n+typedef struct {\n+   uint32_t (*Init)(void);                 /*!< Initializes OTP controller. */\n+   uint32_t (*ProgBootSrc)(CHIP_OTP_BOOT_SRC_T BootSrc);\n+   uint32_t (*ProgJTAGDis)(void);\n+   uint32_t (*ProgUSBID)(uint32_t ProductID, uint32_t VendorID);\n+   uint32_t reserved01;\n+   uint32_t reserved02;\n+   uint32_t reserved03;\n+   uint32_t reserved04;\n+   uint32_t (*ProgGP0)(uint32_t data, uint32_t mask);\n+   uint32_t (*ProgGP1)(uint32_t data, uint32_t mask);\n+   uint32_t (*ProgGP2)(uint32_t data, uint32_t mask);\n+   uint32_t (*ProgKey1)(uint8_t *key);\n+   uint32_t (*ProgKey2)(uint8_t *key);\n+   uint32_t (*GenRand)(void);\n+} OTP_API_T;\n+\n+/**\n+ * @brief LPC18XX_43XX AES API structure\n+ */\n+typedef struct {\n+   uint32_t (*Init)(void);\n+   uint32_t (*SetMode)(uint32_t mode);\n+   uint32_t (*LoadKey1)(void);\n+   uint32_t (*LoadKey2)(void);\n+   uint32_t (*LoadKeyRNG)(void);\n+   uint32_t (*LoadKeySW)(uint8_t *pKey);\n+   uint32_t (*LoadIV_SW)(uint8_t *pVector);\n+   uint32_t (*LoadIV_IC)(void);\n+   uint32_t (*Operate)(uint8_t *pOutput, uint8_t *pInput, uint32_t size);\n+   uint32_t (*ProgramKey1)(uint8_t *pKey);\n+   uint32_t (*ProgramKey2)(uint8_t *pKey);\n+} AES_API_T;\n+\n+/**\n+ * @brief LPC18XX High level ROM API structure\n+ */\n+typedef struct {\n+   void(*const iap_entry) (uint32_t *, uint32_t *);    /*!< IAP API entry function available on Flash parts only*/\n+   const OTP_API_T *pOtp;\n+   const AES_API_T *pAes;\n+   uint32_t reserved[3];\n+   const uint32_t spifiApiBase;            /*!< SPIFI API function table base address*/\n+   const uint32_t usbdApiBase;             /*!< USBD API function table base address*/\n+   const uint32_t endMarker;               /*!< API table end marker = 0x87654321 */\n+\n+} LPC_ROM_API_T;\n+\n+/* Pointer to ROM API function address */\n+#define LPC_ROM_API_BASE_LOC    0x10400100\n+#define LPC_ROM_API ((LPC_ROM_API_T *) LPC_ROM_API_BASE)\n+\n+/* Pointer to ROM IAP entry functions */\n+#define IAP_ENTRY_LOCATION        (*((uint32_t *) 0x10400100))\n+\n+/**\n+ * @brief IAP flash bank definitions\n+ */\n+#define IAP_FLASH_BANK_A                        0\n+#define IAP_FLASH_BANK_B                        1\n+\n+/**\n+ * @}\n+ */\n+\n+static INLINE void iap_entry(unsigned int cmd_param[], unsigned int status_result[])\n+{\n+   ((IAP_ENTRY_T) IAP_ENTRY_LOCATION)(cmd_param, status_result);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ROMAPI_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/rtc_18xx_43xx.h ./lpc_chip_43xx/inc/rtc_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/rtc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/rtc_18xx_43xx.h\t2017-02-27 20:42:08.452009492 -0300\n@@ -0,0 +1,638 @@\n+/*\n+ * @brief LPC18xx/43xx RTC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RTC_18XX_43XX_H_\n+#define __RTC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RTC_18XX_43XX CHIP: LPC18xx/43xx Real Time Clock driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define RTC_EV_SUPPORT      1              /* Event Monitor/Recorder support */\n+\n+/**\n+ * @brief RTC time type option\n+ */\n+typedef enum {\n+   RTC_TIMETYPE_SECOND,        /*!< Second */\n+   RTC_TIMETYPE_MINUTE,        /*!< Month */\n+   RTC_TIMETYPE_HOUR,          /*!< Hour */\n+   RTC_TIMETYPE_DAYOFMONTH,    /*!< Day of month */\n+   RTC_TIMETYPE_DAYOFWEEK,     /*!< Day of week */\n+   RTC_TIMETYPE_DAYOFYEAR,     /*!< Day of year */\n+   RTC_TIMETYPE_MONTH,         /*!< Month */\n+   RTC_TIMETYPE_YEAR,          /*!< Year */\n+   RTC_TIMETYPE_LAST\n+} RTC_TIMEINDEX_T;\n+\n+#if RTC_EV_SUPPORT\n+/**\n+ * @brief Event Channel Identifier definitions\n+ */\n+typedef enum {\n+   RTC_EV_CHANNEL_1 = 0,\n+   RTC_EV_CHANNEL_2,\n+   RTC_EV_CHANNEL_3,\n+   RTC_EV_CHANNEL_NUM,\n+} RTC_EV_CHANNEL_T;\n+#endif /*RTC_EV_SUPPORT*/\n+\n+/**\n+ * @brief Real Time Clock register block structure\n+ */\n+typedef struct {                           /*!< RTC Structure          */\n+   __IO uint32_t  ILR;                     /*!< Interrupt Location Register */\n+   __I  uint32_t  RESERVED0;\n+   __IO uint32_t  CCR;                     /*!< Clock Control Register */\n+   __IO uint32_t  CIIR;                    /*!< Counter Increment Interrupt Register */\n+   __IO uint32_t  AMR;                     /*!< Alarm Mask Register    */\n+   __I  uint32_t  CTIME[3];                /*!< Consolidated Time Register 0,1,2 */\n+   __IO uint32_t  TIME[RTC_TIMETYPE_LAST]; /*!< Timer field registers */\n+   __IO uint32_t  CALIBRATION;             /*!< Calibration Value Register */\n+   __I  uint32_t  RESERVED1[7];\n+   __IO uint32_t  ALRM[RTC_TIMETYPE_LAST]; /*!< Alarm field registers */\n+#if RTC_EV_SUPPORT\n+   __IO uint32_t ERSTATUS;                 /*!< Event Monitor/Recorder Status register*/\n+   __IO uint32_t ERCONTROL;                /*!< Event Monitor/Recorder Control register*/\n+   __I  uint32_t ERCOUNTERS;               /*!< Event Monitor/Recorder Counters register*/\n+   __I  uint32_t RESERVED2;\n+   __I  uint32_t ERFIRSTSTAMP[RTC_EV_CHANNEL_NUM];         /*!<Event Monitor/Recorder First Stamp registers*/\n+   __I  uint32_t RESERVED3;\n+   __I  uint32_t ERLASTSTAMP[RTC_EV_CHANNEL_NUM];          /*!<Event Monitor/Recorder Last Stamp registers*/\n+#endif /*RTC_EV_SUPPORT*/\n+} LPC_RTC_T;\n+\n+/**\n+ * @brief Register File register block structure\n+ */\n+typedef struct {\n+   __IO uint32_t REGFILE[64];  /*!< General purpose storage register */\n+} LPC_REGFILE_T;\n+\n+/*\n+ * @brief ILR register definitions\n+ */\n+/** ILR register mask */\n+#define RTC_ILR_BITMASK         ((0x00000003))\n+/** Bit inform the source interrupt is counter increment*/\n+#define RTC_IRL_RTCCIF          ((1 << 0))\n+/** Bit inform the source interrupt is alarm match*/\n+#define RTC_IRL_RTCALF          ((1 << 1))\n+\n+/*\n+ * @brief CCR register definitions\n+ */\n+/** CCR register mask */\n+#define RTC_CCR_BITMASK         ((0x00000013))\n+/** Clock enable */\n+#define RTC_CCR_CLKEN           ((1 << 0))\n+/** Clock reset */\n+#define RTC_CCR_CTCRST          ((1 << 1))\n+/** Calibration counter enable */\n+#define RTC_CCR_CCALEN          ((1 << 4))\n+\n+/*\n+ * @brief CIIR and AMR register definitions\n+ */\n+/** Counter Increment Interrupt bit for second */\n+#define RTC_AMR_CIIR_IMSEC          ((1 << 0))\n+/** Counter Increment Interrupt bit for minute */\n+#define RTC_AMR_CIIR_IMMIN          ((1 << 1))\n+/** Counter Increment Interrupt bit for hour */\n+#define RTC_AMR_CIIR_IMHOUR         ((1 << 2))\n+/** Counter Increment Interrupt bit for day of month */\n+#define RTC_AMR_CIIR_IMDOM          ((1 << 3))\n+/** Counter Increment Interrupt bit for day of week */\n+#define RTC_AMR_CIIR_IMDOW          ((1 << 4))\n+/** Counter Increment Interrupt bit for day of year */\n+#define RTC_AMR_CIIR_IMDOY          ((1 << 5))\n+/** Counter Increment Interrupt bit for month */\n+#define RTC_AMR_CIIR_IMMON          ((1 << 6))\n+/** Counter Increment Interrupt bit for year */\n+#define RTC_AMR_CIIR_IMYEAR         ((1 << 7))\n+/** CIIR bit mask */\n+#define RTC_AMR_CIIR_BITMASK        ((0xFF))\n+\n+/*\n+ * @brief RTC_AUX register definitions\n+ */\n+/** RTC Oscillator Fail detect flag */\n+#define RTC_AUX_RTC_OSCF        ((1 << 4))\n+\n+/*\n+ * @brief RTC_AUXEN register definitions\n+ */\n+/** Oscillator Fail Detect interrupt enable*/\n+#define RTC_AUXEN_RTC_OSCFEN    ((1 << 4))\n+\n+/*\n+ * @brief Consolidated Time Register 0 definitions\n+ */\n+#define RTC_CTIME0_SECONDS_MASK     ((0x3F))\n+#define RTC_CTIME0_MINUTES_MASK     ((0x3F00))\n+#define RTC_CTIME0_HOURS_MASK       ((0x1F0000))\n+#define RTC_CTIME0_DOW_MASK         ((0x7000000))\n+\n+/*\n+ * @brief Consolidated Time Register 1 definitions\n+ */\n+#define RTC_CTIME1_DOM_MASK         ((0x1F))\n+#define RTC_CTIME1_MONTH_MASK       ((0xF00))\n+#define RTC_CTIME1_YEAR_MASK        ((0xFFF0000))\n+\n+/*\n+ * @brief Consolidated Time Register 2 definitions\n+ */\n+#define RTC_CTIME2_DOY_MASK         ((0xFFF))\n+\n+/*\n+ * @brief Time Counter Group and Alarm register group\n+ */\n+/** SEC register mask */\n+#define RTC_SEC_MASK            (0x0000003F)\n+/** MIN register mask */\n+#define RTC_MIN_MASK            (0x0000003F)\n+/** HOUR register mask */\n+#define RTC_HOUR_MASK           (0x0000001F)\n+/** DOM register mask */\n+#define RTC_DOM_MASK            (0x0000001F)\n+/** DOW register mask */\n+#define RTC_DOW_MASK            (0x00000007)\n+/** DOY register mask */\n+#define RTC_DOY_MASK            (0x000001FF)\n+/** MONTH register mask */\n+#define RTC_MONTH_MASK          (0x0000000F)\n+/** YEAR register mask */\n+#define RTC_YEAR_MASK           (0x00000FFF)\n+\n+#define RTC_SECOND_MAX      59 /*!< Maximum value of second */\n+#define RTC_MINUTE_MAX      59 /*!< Maximum value of minute*/\n+#define RTC_HOUR_MAX        23 /*!< Maximum value of hour*/\n+#define RTC_MONTH_MIN       1  /*!< Minimum value of month*/\n+#define RTC_MONTH_MAX       12 /*!< Maximum value of month*/\n+#define RTC_DAYOFMONTH_MIN  1  /*!< Minimum value of day of month*/\n+#define RTC_DAYOFMONTH_MAX  31 /*!< Maximum value of day of month*/\n+#define RTC_DAYOFWEEK_MAX   6  /*!< Maximum value of day of week*/\n+#define RTC_DAYOFYEAR_MIN   1  /*!< Minimum value of day of year*/\n+#define RTC_DAYOFYEAR_MAX   366    /*!< Maximum value of day of year*/\n+#define RTC_YEAR_MAX        4095/*!< Maximum value of year*/\n+\n+/*\n+ * @brief Calibration register\n+ */\n+/** Calibration value */\n+#define RTC_CALIBRATION_CALVAL_MASK     ((0x1FFFF))\n+/** Calibration direction */\n+#define RTC_CALIBRATION_LIBDIR          ((1 << 17))\n+/** Calibration max value */\n+#define RTC_CALIBRATION_MAX             ((0x20000))\n+/** Calibration definitions */\n+#define RTC_CALIB_DIR_FORWARD           ((uint8_t) (0))\n+#define RTC_CALIB_DIR_BACKWARD          ((uint8_t) (1))\n+\n+#if RTC_EV_SUPPORT\n+/*\n+ * @brief Event Monitor/Recorder Control register\n+ */\n+/**  Event Monitor/Recorder Control register mask */\n+#define RTC_ERCTRL_BITMASK          ((uint32_t) 0xC0F03C0F)\n+/** Enable event interrupt and wakeup */\n+#define RTC_ERCTRL_INTWAKE_EN       ((uint32_t) (1 << 0))\n+/** Enables automatically clearing the RTC general purpose registers when an event occurs*/\n+#define RTC_ERCTRL_GPCLEAR_EN       ((uint32_t) (1 << 1))\n+/** Select polarity for a channel event on the input pin.*/\n+#define RTC_ERCTRL_POL_NEGATIVE     (0)        /* Event as positive edge */\n+#define RTC_ERCTRL_POL_POSITIVE     ((uint32_t) (1 << 2))  /* Event as negative edge */\n+/** Enable event input.*/\n+#define RTC_ERCTRL_INPUT_EN         ((uint32_t) (1 << 3))\n+/** Configure a specific channel */\n+#define RTC_ERCTRL_CHANNEL_CONFIG_BITMASK(ch)   ((uint32_t) (0x0F << (10 * ch)))\n+#define RTC_ERCTRL_CHANNEL_CONFIG(ch, flag) ((uint32_t) (flag << (10 * ch)))\n+\n+/** Enable Event Monitor/Recorder and select its operating frequency.*/\n+#define RTC_ERCTRL_MODE_MASK                (((uint32_t) 3) << 30)\n+#define RTC_ERCTRL_MODE_CLK_DISABLE         (((uint32_t) 0) << 30)\n+#define RTC_ERCTRL_MODE_16HZ                (((uint32_t) 1) << 30)\n+#define RTC_ERCTRL_MODE_64HZ                (((uint32_t) 2) << 30)\n+#define RTC_ERCTRL_MODE_1KHZ                (((uint32_t) 3) << 30)\n+#define RTC_ERCTRL_MODE(n)                  (((uint32_t) n) << 30)\n+\n+/*\n+ * @brief Event Monitor/Recorder Status register\n+ */\n+/** Event Flag for a specific channel */\n+#define RTC_ERSTATUS_CHANNEL_EV(ch)               ((uint32_t) (1 << ch))       /* At least 1 event has occurred on a specific channel */\n+/** General purpose registers have been asynchronous cleared. */\n+#define RTC_ERSTATUS_GPCLEARED            ((uint32_t) (1 << 3))\n+/** An interrupt/wakeup request is pending.*/\n+#define RTC_ERSTATUS_WAKEUP            ((uint32_t) (((uint32_t) 1) << 31))\n+\n+/*\n+ * @brief Event Monitor/Recorder Counter register\n+ */\n+/** Value of the counter for Events occurred on a specific channel */\n+#define RTC_ER_COUNTER(ch, n)            ((uint32_t) ((n >> (8 * ch)) & 0x07))\n+\n+/*\n+ * @brief Event Monitor/Recorder TimeStamp register\n+ */\n+#define RTC_ER_TIMESTAMP_SEC(n)             ((uint32_t) (n & 0x3F))\n+#define RTC_ER_TIMESTAMP_MIN(n)             ((uint32_t) ((n >> 6) & 0x3F))\n+#define RTC_ER_TIMESTAMP_HOUR(n)            ((uint32_t) ((n >> 12) & 0x1F))\n+#define RTC_ER_TIMESTAMP_DOY(n)             ((uint32_t) ((n >> 17) & 0x1FF))\n+\n+/**\n+ * @brief Event Monitor/Recorder Mode definition\n+ */\n+typedef enum IP_RTC_EV_MODE {\n+   RTC_EV_MODE_DISABLE = 0,        /*!< Event Monitor/Recoder is disabled */\n+   RTC_EV_MODE_ENABLE_16HZ =  1,   /*!< Event Monitor/Recoder is enabled and use 16Hz sample clock for event input */\n+   RTC_EV_MODE_ENABLE_64HZ = 2,    /*!< Event Monitor/Recoder is enabled and use 64Hz sample clock for event input */\n+   RTC_EV_MODE_ENABLE_1KHZ = 3,    /*!< Event Monitor/Recoder is enabled and use 1kHz sample clock for event input */\n+   RTC_EV_MODE_LAST,\n+} RTC_EV_MODE_T;\n+\n+/**\n+ * @brief Event Monitor/Recorder Timestamp structure\n+ */\n+typedef struct {\n+   uint8_t     sec;        /*!<   Second */\n+   uint8_t     min;        /*!<   Minute */\n+   uint8_t     hour;       /*!<   Hour */\n+   uint16_t    dayofyear;  /*!<   Day of year */\n+} RTC_EV_TIMESTAMP_T;\n+\n+#endif /*RTC_EV_SUPPORT*/\n+\n+/**\n+ * @brief RTC enumeration\n+ */\n+\n+/** @brief RTC interrupt source */\n+typedef enum {\n+   RTC_INT_COUNTER_INCREASE = RTC_IRL_RTCCIF,  /*!<  Counter Increment Interrupt */\n+   RTC_INT_ALARM = RTC_IRL_RTCALF              /*!< The alarm interrupt */\n+} RTC_INT_OPT_T;\n+\n+typedef struct {\n+   uint32_t time[RTC_TIMETYPE_LAST];\n+} RTC_TIME_T;\n+\n+/**\n+ * @brief  Reset clock tick counter in the RTC peripheral\n+ * @param  pRTC    : RTC peripheral selected\n+ * @return None\n+ */\n+void Chip_RTC_ResetClockTickCounter(LPC_RTC_T *pRTC);\n+\n+/**\n+ * @brief  Start/Stop RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  NewState    : New State of this function, should be:\n+ *                         - ENABLE    :The time counters are enabled\n+ *                         - DISABLE   :The time counters are disabled\n+ * @return None\n+ */\n+void Chip_RTC_Enable(LPC_RTC_T *pRTC, FunctionalState NewState);\n+\n+/**\n+ * @brief  Enable/Disable Counter increment interrupt for a time type in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  cntrMask    : Or'ed bit values for time types (RTC_AMR_CIIR_IM*)\n+ * @param  NewState    : ENABLE or DISABLE\n+ * @return None\n+ */\n+void Chip_RTC_CntIncrIntConfig(LPC_RTC_T *pRTC, uint32_t cntrMask, FunctionalState NewState);\n+\n+/**\n+ * @brief  Enable/Disable Alarm interrupt for a time type in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  alarmMask   : Or'ed bit values for ALARM types (RTC_AMR_CIIR_IM*)\n+ * @param  NewState    : ENABLE or DISABLE\n+ * @return None\n+ */\n+void Chip_RTC_AlarmIntConfig(LPC_RTC_T *pRTC, uint32_t alarmMask, FunctionalState NewState);\n+\n+/**\n+ * @brief  Set current time value for a time type in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  Timetype    : time field index type to set\n+ * @param  TimeValue   : Value to palce in time field\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_SetTime(LPC_RTC_T *pRTC, RTC_TIMEINDEX_T Timetype, uint32_t TimeValue)\n+{\n+   pRTC->TIME[Timetype] = TimeValue;\n+}\n+\n+/**\n+ * @brief  Get current time value for a type time type\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  Timetype    : Time field index type to get\n+ * @return Value of time field according to specified time type\n+ */\n+STATIC INLINE uint32_t Chip_RTC_GetTime(LPC_RTC_T *pRTC, RTC_TIMEINDEX_T Timetype)\n+{\n+   return pRTC->TIME[Timetype];\n+}\n+\n+/**\n+ * @brief  Set full time in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  pFullTime   : Pointer to full time data\n+ * @return None\n+ */\n+void Chip_RTC_SetFullTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime);\n+\n+/**\n+ * @brief  Get full time from the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  pFullTime   : Pointer to full time record to fill\n+ * @return None\n+ */\n+void Chip_RTC_GetFullTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime);\n+\n+/**\n+ * @brief  Set alarm time value for a time type\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  Timetype    : Time index field to set\n+ * @param  ALValue     : Alarm time value to set\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_SetAlarmTime(LPC_RTC_T *pRTC, RTC_TIMEINDEX_T Timetype, uint32_t ALValue)\n+{\n+   pRTC->ALRM[Timetype] = ALValue;\n+}\n+\n+/**\n+ * @brief  Get alarm time value for a time type\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  Timetype    : Time index field to get\n+ * @return Value of Alarm time according to specified time type\n+ */\n+STATIC INLINE uint32_t Chip_RTC_GetAlarmTime(LPC_RTC_T *pRTC, RTC_TIMEINDEX_T Timetype)\n+{\n+   return pRTC->ALRM[Timetype];\n+}\n+\n+/**\n+ * @brief  Set full alarm time in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  pFullTime   : Pointer to full time record to set alarm\n+ * @return None\n+ */\n+void Chip_RTC_SetFullAlarmTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime);\n+\n+/**\n+ * @brief  Get full alarm time in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  pFullTime   : Pointer to full time record to fill\n+ * @return None\n+ */\n+void Chip_RTC_GetFullAlarmTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime);\n+\n+/**\n+ * @brief  Write value to General purpose registers\n+ * @param  pRegFile    : RegFile peripheral selected\n+ * @param  index       : General purpose register index\n+ * @param  value       : Value to write\n+ * @return None\n+ * @note   These General purpose registers can be used to store important\n+ * information when the main power supply is off. The value in these\n+ * registers is not affected by chip reset. These registers are\n+ * powered in the RTC power domain.\n+ */\n+STATIC INLINE void Chip_REGFILE_Write(LPC_REGFILE_T *pRegFile, uint8_t index, uint32_t value)\n+{\n+   pRegFile->REGFILE[index] = value;\n+}\n+\n+/**\n+ * @brief  Read value from General purpose registers\n+ * @param  pRegFile    : RegFile peripheral selected\n+ * @param  index       : General purpose register index\n+ * @return Read Value\n+ * @note   These General purpose registers can be used to store important\n+ * information when the main power supply is off. The value in these\n+ * registers is not affected by chip reset. These registers are\n+ * powered in the RTC power domain.\n+ */\n+STATIC INLINE uint32_t Chip_REGFILE_Read(LPC_REGFILE_T *pRegFile, uint8_t index)\n+{\n+   return pRegFile->REGFILE[index];\n+}\n+\n+/**\n+ * @brief  Enable/Disable calibration counter in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  NewState    : New State of this function, should be:\n+ *                         - ENABLE    :The calibration counter is enabled and counting\n+ *                         - DISABLE   :The calibration counter is disabled and reset to zero\n+ * @return None\n+ */\n+void Chip_RTC_CalibCounterCmd(LPC_RTC_T *pRTC, FunctionalState NewState);\n+\n+/**\n+ * @brief  Configures Calibration in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  CalibValue  : Calibration value, should be in range from 0 to 131,072\n+ * @param  CalibDir    : Calibration Direction, should be:\n+ *                         - RTC_CALIB_DIR_FORWARD     :Forward calibration\n+ *                         - RTC_CALIB_DIR_BACKWARD    :Backward calibration\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_CalibConfig(LPC_RTC_T *pRTC, uint32_t CalibValue, uint8_t CalibDir)\n+{\n+   pRTC->CALIBRATION = ((CalibValue - 1) & RTC_CALIBRATION_CALVAL_MASK)\n+                       | ((CalibDir == RTC_CALIB_DIR_BACKWARD) ? RTC_CALIBRATION_LIBDIR : 0);\n+}\n+\n+/**\n+ * @brief  Clear specified Location interrupt pending in the RTC peripheral\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  IntType : Interrupt location type, should be:\n+ *                     - RTC_INT_COUNTER_INCREASE  :Clear Counter Increment Interrupt pending.\n+ *                     - RTC_INT_ALARM             :Clear alarm interrupt pending\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_ClearIntPending(LPC_RTC_T *pRTC, uint32_t IntType)\n+{\n+   pRTC->ILR = IntType;\n+}\n+\n+/**\n+ * @brief  Check whether if specified location interrupt in the RTC peripheral is set or not\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  IntType : Interrupt location type, should be:\n+ *                     - RTC_INT_COUNTER_INCREASE: Counter Increment Interrupt block generated an interrupt.\n+ *                     - RTC_INT_ALARM: Alarm generated an interrupt.\n+ * @return New state of specified Location interrupt in RTC peripheral, SET OR RESET\n+ */\n+STATIC INLINE IntStatus Chip_RTC_GetIntPending(LPC_RTC_T *pRTC, uint32_t IntType)\n+{\n+   return (pRTC->ILR & IntType) ? SET : RESET;\n+}\n+\n+#if RTC_EV_SUPPORT\n+\n+/**\n+ * @brief  Configure a specific event channel\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  ch      : Channel number\n+ * @param  flag    : Configuration flag\n+ * @return None\n+ * @note   flag is or-ed bit value of RTC_ERCTRL_INTWAKE_EN,RTC_ERCTRL_GPCLEAR_EN,\n+ *       RTC_ERCTRL_POL_POSITIVE and RTC_ERCTRL_INPUT_EN.\n+ */\n+STATIC INLINE void Chip_RTC_EV_Config(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, uint32_t flag)\n+{\n+   uint32_t temp;\n+\n+   temp = pRTC->ERCONTROL & (~(RTC_ERCTRL_CHANNEL_CONFIG_BITMASK(ch))) & RTC_ERCTRL_BITMASK;\n+   pRTC->ERCONTROL = temp | (RTC_ERCTRL_CHANNEL_CONFIG(ch, flag) & RTC_ERCTRL_BITMASK);\n+}\n+\n+/**\n+ * @brief  Enable/Disable and select clock frequency for Event Monitor/Recorder\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  mode    : selected mode\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_EV_SetMode(LPC_RTC_T *pRTC, RTC_EV_MODE_T mode)\n+{\n+   uint32_t temp;\n+\n+   temp = pRTC->ERCONTROL & (~RTC_ERCTRL_MODE_MASK) & RTC_ERCTRL_BITMASK;\n+   pRTC->ERCONTROL = temp | RTC_ERCTRL_MODE(mode);\n+}\n+\n+/**\n+ * @brief  Get Event Monitor/Recorder Status\n+ * @param  pRTC    : RTC peripheral selected\n+ * @return Or-ed bit value of RTC_ERSTATUS_GPCLEARED and RTC_ERSTATUS_WAKEUP\n+ */\n+STATIC INLINE uint8_t Chip_RTC_EV_GetStatus(LPC_RTC_T *pRTC)\n+{\n+   return pRTC->ERSTATUS & (RTC_ERSTATUS_GPCLEARED | RTC_ERSTATUS_WAKEUP);\n+}\n+\n+/**\n+ * @brief  Clear Event Monitor/Recorder Status\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  flag    : Or-ed bit value of RTC_ERSTATUS_GPCLEARED and RTC_ERSTATUS_WAKEUP\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_RTC_EV_ClearStatus(LPC_RTC_T *pRTC, uint32_t flag)\n+{\n+   pRTC->ERSTATUS = flag & (RTC_ERSTATUS_GPCLEARED | RTC_ERSTATUS_WAKEUP);\n+}\n+\n+/**\n+ * @brief  Get status of a specific event channel\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  ch      : Channel number\n+ * @return SET (At least 1 event occurred on the channel), RESET: no event occured.\n+ */\n+STATIC INLINE FlagStatus Chip_RTC_EV_GetChannelStatus(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch)\n+{\n+   return (pRTC->ERSTATUS & RTC_ERSTATUS_CHANNEL_EV(ch)) ? SET : RESET;\n+}\n+\n+/**\n+ * @brief  Clear status of a specific event channel\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  ch      : Channel number\n+ * @return Nothing.\n+ */\n+STATIC INLINE void Chip_RTC_EV_ClearChannelStatus(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch)\n+{\n+   pRTC->ERSTATUS = RTC_ERSTATUS_CHANNEL_EV(ch);\n+}\n+\n+/**\n+ * @brief  Get counter value of a specific event channel\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  ch      : Channel number\n+ * @return counter value\n+ */\n+STATIC INLINE uint8_t Chip_RTC_EV_GetCounter(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch)\n+{\n+   return RTC_ER_COUNTER(ch, pRTC->ERCOUNTERS);\n+}\n+\n+/**\n+ * @brief  Get first time stamp of a specific event channel\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  ch          : Channel number\n+ * @param  pTimeStamp  : pointer to Timestamp buffer\n+ * @return Nothing.\n+ */\n+void Chip_RTC_EV_GetFirstTimeStamp(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, RTC_EV_TIMESTAMP_T *pTimeStamp);\n+\n+/**\n+ * @brief  Get last time stamp of a specific event channel\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  ch          : Channel number\n+ * @param  pTimeStamp  : pointer to Timestamp buffer\n+ * @return Nothing.\n+ */\n+void Chip_RTC_EV_GetLastTimeStamp(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, RTC_EV_TIMESTAMP_T *pTimeStamp);\n+\n+#endif /*RTC_EV_SUPPORT*/\n+\n+/**\n+ * @brief  Initialize the RTC peripheral\n+ * @param  pRTC    : RTC peripheral selected\n+ * @return None\n+ */\n+void Chip_RTC_Init(LPC_RTC_T *pRTC);\n+\n+/**\n+ * @brief  De-initialize the RTC peripheral\n+ * @param  pRTC    : RTC peripheral selected\n+ * @return None\n+ */\n+void Chip_RTC_DeInit(LPC_RTC_T *pRTC);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RTC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/sct_18xx_43xx.h ./lpc_chip_43xx/inc/sct_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/sct_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sct_18xx_43xx.h\t2017-02-27 20:42:08.456009492 -0300\n@@ -0,0 +1,423 @@\n+/*\n+ * @brief LPC18xx/43xx State Configurable Timer (SCT) driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SCT_18XX_43XX_H_\n+#define __SCT_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SCT_18XX_43XX CHIP: LPC18xx/43xx State Configurable Timer driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/*\n+ * @brief SCT Module configuration\n+ */\n+#define CONFIG_SCT_nEV   (16)          /*!< Number of events */\n+#define CONFIG_SCT_nRG   (16)          /*!< Number of match/compare registers */\n+#define CONFIG_SCT_nOU   (16)          /*!< Number of outputs */\n+\n+/**\n+ * @brief State Configurable Timer register block structure\n+ */\n+typedef struct {\n+   __IO  uint32_t CONFIG;              /*!< Configuration Register */\n+   union {\n+       __IO uint32_t CTRL_U;           /*!< Control Register */\n+       struct {\n+           __IO uint16_t CTRL_L;       /*!< Low control register */\n+           __IO uint16_t CTRL_H;       /*!< High control register */\n+       };\n+\n+   };\n+\n+   __IO uint16_t LIMIT_L;              /*!< limit register for counter L */\n+   __IO uint16_t LIMIT_H;              /*!< limit register for counter H */\n+   __IO uint16_t HALT_L;               /*!< halt register for counter L */\n+   __IO uint16_t HALT_H;               /*!< halt register for counter H */\n+   __IO uint16_t STOP_L;               /*!< stop register for counter L */\n+   __IO uint16_t STOP_H;               /*!< stop register for counter H */\n+   __IO uint16_t START_L;              /*!< start register for counter L */\n+   __IO uint16_t START_H;              /*!< start register for counter H */\n+   uint32_t RESERVED1[10];             /*!< 0x03C reserved */\n+   union {\n+       __IO uint32_t COUNT_U;          /*!< counter register */\n+       struct {\n+           __IO uint16_t COUNT_L;      /*!< counter register for counter L */\n+           __IO uint16_t COUNT_H;      /*!< counter register for counter H */\n+       };\n+\n+   };\n+\n+   __IO uint16_t STATE_L;              /*!< state register for counter L */\n+   __IO uint16_t STATE_H;              /*!< state register for counter H */\n+   __I  uint32_t INPUT;                /*!< input register */\n+   __IO uint16_t REGMODE_L;            /*!< match - capture registers mode register L */\n+   __IO uint16_t REGMODE_H;            /*!< match - capture registers mode register H */\n+   __IO uint32_t OUTPUT;               /*!< output register */\n+   __IO uint32_t OUTPUTDIRCTRL;        /*!< output counter direction Control Register */\n+   __IO uint32_t RES;                  /*!< conflict resolution register */\n+   __IO uint32_t DMA0REQUEST;          /*!< DMA0 Request Register */\n+   __IO uint32_t DMA1REQUEST;          /*!< DMA1 Request Register */\n+   uint32_t RESERVED2[35];\n+   __IO uint32_t EVEN;                 /*!< event enable register */\n+   __IO uint32_t EVFLAG;               /*!< event flag register */\n+   __IO uint32_t CONEN;                /*!< conflict enable register */\n+   __IO uint32_t CONFLAG;              /*!< conflict flag register */\n+   union {\n+       __IO union {                    /*!< ... Match / Capture value */\n+           uint32_t U;                 /*!<       SCTMATCH[i].U  Unified 32-bit register */\n+           struct {\n+               uint16_t L;             /*!<       SCTMATCH[i].L  Access to L value */\n+               uint16_t H;             /*!<       SCTMATCH[i].H  Access to H value */\n+           };\n+\n+       } MATCH[CONFIG_SCT_nRG];\n+\n+       __I union {\n+           uint32_t U;                 /*!<       SCTCAP[i].U  Unified 32-bit register */\n+           struct {\n+               uint16_t L;             /*!<       SCTCAP[i].L  Access to L value */\n+               uint16_t H;             /*!<       SCTCAP[i].H  Access to H value */\n+           };\n+\n+       } CAP[CONFIG_SCT_nRG];\n+\n+   };\n+\n+   uint32_t RESERVED3[32 - CONFIG_SCT_nRG];        /*!< ...-0x17C reserved */\n+   union {\n+       __IO uint16_t MATCH_L[CONFIG_SCT_nRG];      /*!< 0x180-... Match Value L counter */\n+       __I  uint16_t CAP_L[CONFIG_SCT_nRG];        /*!< 0x180-... Capture Value L counter */\n+   };\n+\n+   uint16_t RESERVED4[32 - CONFIG_SCT_nRG];        /*!< ...-0x1BE reserved */\n+   union {\n+       __IO uint16_t MATCH_H[CONFIG_SCT_nRG];      /*!< 0x1C0-... Match Value H counter */\n+       __I  uint16_t CAP_H[CONFIG_SCT_nRG];        /*!< 0x1C0-... Capture Value H counter */\n+   };\n+\n+   uint16_t RESERVED5[32 - CONFIG_SCT_nRG];        /*!< ...-0x1FE reserved */\n+   union {\n+       __IO union {                    /*!< 0x200-... Match Reload / Capture Control value */\n+           uint32_t U;                 /*!<       SCTMATCHREL[i].U  Unified 32-bit register */\n+           struct {\n+               uint16_t L;             /*!<       SCTMATCHREL[i].L  Access to L value */\n+               uint16_t H;             /*!<       SCTMATCHREL[i].H  Access to H value */\n+           };\n+\n+       } MATCHREL[CONFIG_SCT_nRG];\n+\n+       __IO union {\n+           uint32_t U;                 /*!<       SCTCAPCTRL[i].U  Unified 32-bit register */\n+           struct {\n+               uint16_t L;             /*!<       SCTCAPCTRL[i].L  Access to L value */\n+               uint16_t H;             /*!<       SCTCAPCTRL[i].H  Access to H value */\n+           };\n+\n+       } CAPCTRL[CONFIG_SCT_nRG];\n+\n+   };\n+\n+   uint32_t RESERVED6[32 - CONFIG_SCT_nRG];        /*!< ...-0x27C reserved */\n+   union {\n+       __IO uint16_t MATCHREL_L[CONFIG_SCT_nRG];   /*!< 0x280-... Match Reload value L counter */\n+       __IO uint16_t CAPCTRL_L[CONFIG_SCT_nRG];    /*!< 0x280-... Capture Control value L counter */\n+   };\n+\n+   uint16_t RESERVED7[32 - CONFIG_SCT_nRG];        /*!< ...-0x2BE reserved */\n+   union {\n+       __IO uint16_t MATCHREL_H[CONFIG_SCT_nRG];   /*!< 0x2C0-... Match Reload value H counter */\n+       __IO uint16_t CAPCTRL_H[CONFIG_SCT_nRG];    /*!< 0x2C0-... Capture Control value H counter */\n+   };\n+\n+   uint16_t RESERVED8[32 - CONFIG_SCT_nRG];        /*!< ...-0x2FE reserved */\n+   __IO struct {                       /*!< 0x300-0x3FC  SCTEVENT[i].STATE / SCTEVENT[i].CTRL*/\n+       uint32_t STATE;                 /*!< Event State Register */\n+       uint32_t CTRL;                  /*!< Event Control Register */\n+   } EVENT[CONFIG_SCT_nEV];\n+\n+   uint32_t RESERVED9[128 - 2 * CONFIG_SCT_nEV];   /*!< ...-0x4FC reserved */\n+   __IO struct {                       /*!< 0x500-0x57C  SCTOUT[i].SET / SCTOUT[i].CLR */\n+       uint32_t SET;                   /*!< Output n Set Register */\n+       uint32_t CLR;                   /*!< Output n Clear Register */\n+   } OUT[CONFIG_SCT_nOU];\n+\n+   uint32_t RESERVED10[191 - 2 * CONFIG_SCT_nOU];  /*!< ...-0x7F8 reserved */\n+   __I  uint32_t MODULECONTENT;        /*!< 0x7FC Module Content */\n+} LPC_SCT_T;\n+\n+/*\n+ * @brief Macro defines for SCT configuration register\n+ */\n+#define SCT_CONFIG_16BIT_COUNTER        0x00000000 /*!< Operate as 2 16-bit counters */\n+#define SCT_CONFIG_32BIT_COUNTER        0x00000001 /*!< Operate as 1 32-bit counter */\n+\n+#define SCT_CONFIG_CLKMODE_BUSCLK       (0x0 << 1) /*!< Bus clock */\n+#define SCT_CONFIG_CLKMODE_SCTCLK       (0x1 << 1) /*!< SCT clock */\n+#define SCT_CONFIG_CLKMODE_INCLK        (0x2 << 1) /*!< Input clock selected in CLKSEL field */\n+#define SCT_CONFIG_CLKMODE_INEDGECLK    (0x3 << 1) /*!< Input clock edge selected in CLKSEL field */\n+\n+#define SCT_CONFIG_NORELOADL_U          (0x1 << 7) /*!< Operate as 1 32-bit counter */\n+#define SCT_CONFIG_NORELOADH            (0x1 << 8) /*!< Operate as 1 32-bit counter */\n+#define SCT_CONFIG_AUTOLIMIT_L          (0x1 << 17) /*!< Limits counter(L) based on MATCH0 */\n+#define SCT_CONFIG_AUTOLIMIT_H          (0x1 << 18) /*!< Limits counter(L) based on MATCH0 */\n+\n+/*\n+ * @brief Macro defines for SCT control register\n+ */\n+#define COUNTUP_TO_LIMIT_THEN_CLEAR_TO_ZERO     0          /*!< Direction for low or unified counter */\n+#define COUNTUP_TO LIMIT_THEN_COUNTDOWN_TO_ZERO 1\n+\n+#define SCT_CTRL_STOP_L                 (1 << 1)               /*!< Stop low counter */\n+#define SCT_CTRL_HALT_L                 (1 << 2)               /*!< Halt low counter */\n+#define SCT_CTRL_CLRCTR_L               (1 << 3)               /*!< Clear low or unified counter */\n+#define SCT_CTRL_BIDIR_L(x)             (((x) & 0x01) << 4)        /*!< Bidirectional bit */\n+#define SCT_CTRL_PRE_L(x)               (((x) & 0xFF) << 5)        /*!< Prescale clock for low or unified counter */\n+\n+#define COUNTUP_TO_LIMIT_THEN_CLEAR_TO_ZERO     0          /*!< Direction for high counter */\n+#define COUNTUP_TO LIMIT_THEN_COUNTDOWN_TO_ZERO 1\n+#define SCT_CTRL_STOP_H                 (1 << 17)              /*!< Stop high counter */\n+#define SCT_CTRL_HALT_H                 (1 << 18)              /*!< Halt high counter */\n+#define SCT_CTRL_CLRCTR_H               (1 << 19)              /*!< Clear high counter */\n+#define SCT_CTRL_BIDIR_H(x)             (((x) & 0x01) << 20)\n+#define SCT_CTRL_PRE_H(x)               (((x) & 0xFF) << 21)   /*!< Prescale clock for high counter */\n+\n+/*\n+ * @brief Macro defines for SCT Conflict resolution register\n+ */\n+#define SCT_RES_NOCHANGE                (0)\n+#define SCT_RES_SET_OUTPUT              (1)\n+#define SCT_RES_CLEAR_OUTPUT            (2)\n+#define SCT_RES_TOGGLE_OUTPUT           (3)\n+\n+/**\n+ * SCT Match register values enum\n+ */\n+typedef enum CHIP_SCT_MATCH_REG {\n+   SCT_MATCH_0 = 0,    /*!< SCT Match register 0 */\n+   SCT_MATCH_1 = 1,    /*!< SCT Match register 1 */\n+   SCT_MATCH_2 = 2,    /*!< SCT Match register 2 */\n+   SCT_MATCH_3 = 3,    /*!< SCT Match register 3 */\n+   SCT_MATCH_4 = 4     /*!< SCT Match register 4 */\n+} CHIP_SCT_MATCH_REG_T;\n+\n+/**\n+ * SCT Event values enum\n+ */\n+typedef enum CHIP_SCT_EVENT {\n+   SCT_EVT_0  = (1 << 0),  /*!< Event 0 */\n+   SCT_EVT_1  = (1 << 1),  /*!< Event 1 */\n+   SCT_EVT_2  = (1 << 2),  /*!< Event 2 */\n+   SCT_EVT_3  = (1 << 3),  /*!< Event 3 */\n+   SCT_EVT_4  = (1 << 4)   /*!< Event 4 */\n+} CHIP_SCT_EVENT_T;\n+\n+/**\n+ * @brief  Configures the State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  value   : The 32-bit CONFIG register value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_Config(LPC_SCT_T *pSCT, uint32_t value)\n+{\n+   pSCT->CONFIG = value;\n+}\n+\n+/**\n+ * @brief  Set or Clear the Control register\n+ * @param  pSCT            : Pointer to SCT register block\n+ * @param  value           : SCT Control register value\n+ * @param  ena             : ENABLE - To set the fields specified by value\n+ *                          : DISABLE - To clear the field specified by value\n+ * @return Nothing\n+ * Set or clear the control register bits as specified by the \\a value\n+ * parameter. If \\a ena is set to ENABLE, the mentioned register fields\n+ * will be set. If \\a ena is set to DISABLE, the mentioned register\n+ * fields will be cleared\n+ */\n+void Chip_SCT_SetClrControl(LPC_SCT_T *pSCT, uint32_t value, FunctionalState ena);\n+\n+/**\n+ * @brief  Set the conflict resolution\n+ * @param  pSCT            : Pointer to SCT register block\n+ * @param  outnum          : Output number\n+ * @param  value           : Output value\n+ *                          - SCT_RES_NOCHANGE     :No change\n+ *                         - SCT_RES_SET_OUTPUT    :Set output\n+ *                         - SCT_RES_CLEAR_OUTPUT  :Clear output\n+ *                         - SCT_RES_TOGGLE_OUTPUT :Toggle output\n+ *                          : SCT_RES_NOCHANGE\n+ *                          : DISABLE - To clear the field specified by value\n+ * @return Nothing\n+ * Set conflict resolution for the output \\a outnum\n+ */\n+void Chip_SCT_SetConflictResolution(LPC_SCT_T *pSCT, uint8_t outnum, uint8_t value);\n+\n+/**\n+ * @brief  Set unified count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  count   : The 32-bit count value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetCount(LPC_SCT_T *pSCT, uint32_t count)\n+{\n+   pSCT->COUNT_U = count;\n+}\n+\n+/**\n+ * @brief  Set lower count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  count   : The 16-bit count value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetCountL(LPC_SCT_T *pSCT, uint16_t count)\n+{\n+   pSCT->COUNT_L = count;\n+}\n+\n+/**\n+ * @brief  Set higher count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  count   : The 16-bit count value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetCountH(LPC_SCT_T *pSCT, uint16_t count)\n+{\n+   pSCT->COUNT_H = count;\n+}\n+\n+/**\n+ * @brief  Set unified match count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  n       : Match register value\n+ * @param  value   : The 32-bit match count value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetMatchCount(LPC_SCT_T *pSCT, CHIP_SCT_MATCH_REG_T n, uint32_t value)\n+{\n+   pSCT->MATCH[n].U = value;\n+}\n+\n+/**\n+ * @brief  Set control register in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  value   : Value (ORed value of SCT_CTRL_* bits)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetControl(LPC_SCT_T *pSCT, uint32_t value)\n+{\n+   pSCT->CTRL_U |= value;\n+}\n+\n+/**\n+ * @brief  Clear control register in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  value   : Value (ORed value of SCT_CTRL_* bits)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_ClearControl(LPC_SCT_T *pSCT, uint32_t value)\n+{\n+   pSCT->CTRL_U &= ~(value);\n+}\n+\n+/**\n+ * @brief  Set unified match reload count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  n       : Match register value\n+ * @param  value   : The 32-bit match count reload value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetMatchReload(LPC_SCT_T *pSCT, CHIP_SCT_MATCH_REG_T n, uint32_t value)\n+{\n+   pSCT->MATCHREL[n].U = value;\n+}\n+\n+/**\n+ * @brief  Enable the interrupt for the specified event in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  evt     : Event value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_EnableEventInt(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt)\n+{\n+   pSCT->EVEN |= evt;\n+}\n+\n+/**\n+ * @brief  Disable the interrupt for the specified event in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  evt     : Event value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_DisableEventInt(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt)\n+{\n+   pSCT->EVEN &= ~(evt);\n+}\n+\n+/**\n+ * @brief  Clear the specified event flag in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  evt     : Event value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_ClearEventFlag(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt)\n+{\n+   pSCT->EVFLAG |= evt;\n+}\n+\n+/**\n+ * @brief  Initializes the State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SCT_Init(LPC_SCT_T *pSCT);\n+\n+/**\n+ * @brief  Deinitializes the State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SCT_DeInit(LPC_SCT_T *pSCT);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+\n+#endif\n+\n+#endif /* __SCT_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/sct_pwm_18xx_43xx.h ./lpc_chip_43xx/inc/sct_pwm_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/sct_pwm_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sct_pwm_18xx_43xx.h\t2017-02-27 20:42:08.456009492 -0300\n@@ -0,0 +1,178 @@\n+/*\n+ * @brief LPC18xx_43xx State Configurable Timer (SCT/PWM) Chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SCT_PWM_18XX_43XX_H_\n+#define __SCT_PWM_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SCT_PWM_18XX_43XX CHIP: LPC18XX_43XX State Configurable Timer PWM driver\n+ *\n+ * For more information on how to use the driver please visit the FAQ page at\n+ * <a href=\"http://www.lpcware.com/content/faq/how-use-sct-standard-pwm-using-lpcopen\">\n+ * www.lpcware.com</a>\n+ *\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Get number of ticks per PWM cycle\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return Number ot ticks that will be counted per cycle\n+ * @note   Return value of this function will be vaild only\n+ *          after calling Chip_SCTPWM_SetRate()\n+ */\n+STATIC INLINE uint32_t Chip_SCTPWM_GetTicksPerCycle(LPC_SCT_T *pSCT)\n+{\n+   return pSCT->MATCHREL[0].U;\n+}\n+\n+/**\n+ * @brief  Converts a percentage to ticks\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  percent : Percentage to convert (0 - 100)\n+ * @return Number ot ticks corresponding to given percentage\n+ * @note   Do not use this function when using very low\n+ *          pwm rate (like 100Hz or less), on a chip that has\n+ *          very high frequency as the calculation might\n+ *          cause integer overflow\n+ */\n+STATIC INLINE uint32_t Chip_SCTPWM_PercentageToTicks(LPC_SCT_T *pSCT, uint8_t percent)\n+{\n+   return (Chip_SCTPWM_GetTicksPerCycle(pSCT) * percent) / 100;\n+}\n+\n+/**\n+ * @brief  Get number of ticks on per PWM cycle\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  index   : Index of the PWM 1 to N (see notes)\n+ * @return Number ot ticks for which the output will be ON per cycle\n+ * @note   @a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum.\n+ */\n+STATIC INLINE uint32_t Chip_SCTPWM_GetDutyCycle(LPC_SCT_T *pSCT, uint8_t index)\n+{\n+   return pSCT->MATCHREL[index].U;\n+}\n+\n+/**\n+ * @brief  Get number of ticks on per PWM cycle\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  index   : Index of the PWM 1 to N (see notes)\n+ * @param  ticks   : Number of ticks the output should say ON\n+ * @return None\n+ * @note   @a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum. The new duty cycle will be effective only\n+ *          after completion of current PWM cycle.\n+ */\n+STATIC INLINE void Chip_SCTPWM_SetDutyCycle(LPC_SCT_T *pSCT, uint8_t index, uint32_t ticks)\n+{\n+   Chip_SCT_SetMatchReload(pSCT, (CHIP_SCT_MATCH_REG_T)index, ticks);\n+}\n+\n+/**\n+ * @brief  Initialize the SCT/PWM clock and reset\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SCTPWM_Init(LPC_SCT_T *pSCT)\n+{\n+   Chip_SCT_Init(pSCT);\n+}\n+\n+/**\n+ * @brief  Start the SCT PWM\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return None\n+ * @note   This function must be called after all the\n+ *             configuration is completed. Do not call Chip_SCTPWM_SetRate()\n+ *             or Chip_SCTPWM_SetOutPin() after the SCT/PWM is started. Use\n+ *             Chip_SCTPWM_Stop() to stop the SCT/PWM before reconfiguring,\n+ *             Chip_SCTPWM_SetDutyCycle() can be called when the SCT/PWM is\n+ *             running to change the DutyCycle.\n+ */\n+STATIC INLINE void Chip_SCTPWM_Start(LPC_SCT_T *pSCT)\n+{\n+   Chip_SCT_ClearControl(pSCT, SCT_CTRL_HALT_L | SCT_CTRL_HALT_H);\n+}\n+\n+/**\n+ * @brief  Stop the SCT PWM\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SCTPWM_Stop(LPC_SCT_T *pSCT)\n+{\n+   /* Stop SCT */\n+   Chip_SCT_SetControl(pSCT, SCT_CTRL_HALT_L | SCT_CTRL_HALT_H);\n+\n+   /* Clear the counter */\n+   Chip_SCT_SetControl(pSCT, SCT_CTRL_CLRCTR_L | SCT_CTRL_CLRCTR_H);\n+}\n+\n+/**\n+ * @brief  Sets the frequency of the generated PWM wave\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  freq    : Frequency in Hz\n+ * @return None\n+ */\n+void Chip_SCTPWM_SetRate(LPC_SCT_T *pSCT, uint32_t freq);\n+\n+/**\n+ * @brief  Setup the OUTPUT pin and associate it with an index\n+ * @param  pSCT    : The base of the SCT peripheral on the chip\n+ * @param  index   : Index of PWM 1 to N (see notes)\n+ * @param  pin     : COUT pin to be associated with the index\n+ * @return None\n+ * @note   @a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum.\n+ */\n+void Chip_SCTPWM_SetOutPin(LPC_SCT_T *pSCT, uint8_t index, uint8_t pin);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+\n+#endif\n+\n+#endif /* __SCT_PWM_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/scu_18xx_43xx.h ./lpc_chip_43xx/inc/scu_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/scu_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/scu_18xx_43xx.h\t2017-02-27 20:42:08.456009492 -0300\n@@ -0,0 +1,247 @@\n+/*\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SCU_18XX_43XX_H_\n+#define __SCU_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SCU_18XX_43XX CHIP: LPC18xx/43xx SCU Driver (configures pin functions)\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+\n+/**\n+ * @brief Array of pin definitions passed to Chip_SCU_SetPinMuxing() must be in this format\n+ */\n+typedef struct {\n+   uint8_t pingrp;     /* Pin group */\n+   uint8_t pinnum;     /* Pin number */\n+   uint16_t modefunc;  /* Pin mode and function for SCU */\n+} PINMUX_GRP_T;\n+\n+/**\n+ * @brief System Control Unit register block\n+ */\n+typedef struct {\n+   __IO uint32_t  SFSP[16][32];\n+   __I  uint32_t  RESERVED0[256];\n+   __IO uint32_t  SFSCLK[4];           /*!< Pin configuration register for pins CLK0-3 */\n+   __I  uint32_t  RESERVED16[28];\n+   __IO uint32_t  SFSUSB;              /*!< Pin configuration register for USB */\n+   __IO uint32_t  SFSI2C0;             /*!< Pin configuration register for I2C0-bus pins */\n+   __IO uint32_t  ENAIO[3];            /*!< Analog function select registerS */\n+   __I  uint32_t  RESERVED17[27];\n+   __IO uint32_t  EMCDELAYCLK;         /*!< EMC clock delay register */\n+   __I  uint32_t  RESERVED18[63];\n+   __IO uint32_t  PINTSEL[2];          /*!< Pin interrupt select register for pin int 0 to 3 index 0, 4 to 7 index 1. */\n+} LPC_SCU_T;\n+\n+/**\n+ * SCU function and mode selection definitions\n+ * See the User Manual for specific modes and functions supoprted by the\n+ * various LPC18xx/43xx devices. Functionality can vary per device.\n+ */\n+#define SCU_MODE_PULLUP            (0x0 << 3)      /*!< Enable pull-up resistor at pad */\n+#define SCU_MODE_REPEATER          (0x1 << 3)      /*!< Enable pull-down and pull-up resistor at resistor at pad (repeater mode) */\n+#define SCU_MODE_INACT             (0x2 << 3)      /*!< Disable pull-down and pull-up resistor at resistor at pad */\n+#define SCU_MODE_PULLDOWN          (0x3 << 3)      /*!< Enable pull-down resistor at pad */\n+#define SCU_MODE_HIGHSPEEDSLEW_EN  (0x1 << 5)      /*!< Enable high-speed slew */\n+#define SCU_MODE_INBUFF_EN         (0x1 << 6)      /*!< Enable Input buffer */\n+#define SCU_MODE_ZIF_DIS           (0x1 << 7)      /*!< Disable input glitch filter */\n+#define SCU_MODE_4MA_DRIVESTR      (0x0 << 8)      /*!< Normal drive: 4mA drive strength */\n+#define SCU_MODE_8MA_DRIVESTR      (0x1 << 8)      /*!< Medium drive: 8mA drive strength */\n+#define SCU_MODE_14MA_DRIVESTR     (0x2 << 8)      /*!< High drive: 14mA drive strength */\n+#define SCU_MODE_20MA_DRIVESTR     (0x3 << 8)      /*!< Ultra high- drive: 20mA drive strength */\n+#define SCU_MODE_FUNC0             0x0             /*!< Selects pin function 0 */\n+#define SCU_MODE_FUNC1             0x1             /*!< Selects pin function 1 */\n+#define SCU_MODE_FUNC2             0x2             /*!< Selects pin function 2 */\n+#define SCU_MODE_FUNC3             0x3             /*!< Selects pin function 3 */\n+#define SCU_MODE_FUNC4             0x4             /*!< Selects pin function 4 */\n+#define SCU_MODE_FUNC5             0x5             /*!< Selects pin function 5 */\n+#define SCU_MODE_FUNC6             0x6             /*!< Selects pin function 6 */\n+#define SCU_MODE_FUNC7             0x7             /*!< Selects pin function 7 */\n+#define SCU_PINIO_FAST             (SCU_MODE_INACT | SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS)\n+\n+/**\n+ * SCU function and mode selection definitions (old)\n+ * For backwards compatibility.\n+ */\n+#define MD_PUP                     (0x0 << 3)      /** Enable pull-up resistor at pad */\n+#define MD_BUK                     (0x1 << 3)      /** Enable pull-down and pull-up resistor at resistor at pad (repeater mode) */\n+#define MD_PLN                     (0x2 << 3)      /** Disable pull-down and pull-up resistor at resistor at pad */\n+#define MD_PDN                     (0x3 << 3)      /** Enable pull-down resistor at pad */\n+#define MD_EHS                     (0x1 << 5)      /** Enable fast slew rate */\n+#define MD_EZI                     (0x1 << 6)      /** Input buffer enable */\n+#define MD_ZI                      (0x1 << 7)      /** Disable input glitch filter */\n+#define MD_EHD0                        (0x1 << 8)      /** EHD driver strength low bit */\n+#define MD_EHD1                        (0x1 << 8)      /** EHD driver strength high bit */\n+#define MD_PLN_FAST                    (MD_PLN | MD_EZI | MD_ZI | MD_EHS)\n+#define I2C0_STANDARD_FAST_MODE        (1 << 3 | 1 << 11)  /** Pin configuration for STANDARD/FAST mode I2C */\n+#define I2C0_FAST_MODE_PLUS            (2 << 1 | 1 << 3 | 1 << 7 | 1 << 10 | 1 << 11)  /** Pin configuration for Fast-mode Plus I2C */\n+#define FUNC0                      0x0             /** Pin function 0 */\n+#define FUNC1                      0x1             /** Pin function 1 */\n+#define FUNC2                      0x2             /** Pin function 2 */\n+#define FUNC3                      0x3             /** Pin function 3 */\n+#define FUNC4                      0x4             /** Pin function 4 */\n+#define FUNC5                      0x5             /** Pin function 5 */\n+#define FUNC6                      0x6             /** Pin function 6 */\n+#define FUNC7                      0x7             /** Pin function 7 */\n+\n+#define PORT_OFFSET                    0x80            /** Port offset definition */\n+#define PIN_OFFSET                 0x04            /** Pin offset definition */\n+\n+/** Returns the SFSP register address in the SCU for a pin and port, recommend using (*(volatile int *) &LPC_SCU->SFSP[po][pi];) */\n+#define LPC_SCU_PIN(LPC_SCU_BASE, po, pi) (*(volatile int *) ((LPC_SCU_BASE) + ((po) * 0x80) + ((pi) * 0x4))\n+\n+/** Returns the address in the SCU for a SFSCLK clock register, recommend using (*(volatile int *) &LPC_SCU->SFSCLK[c];) */\n+#define LPC_SCU_CLK(LPC_SCU_BASE, c) (*(volatile int *) ((LPC_SCU_BASE) +0xC00 + ((c) * 0x4)))\n+\n+/**\n+ * @brief  Sets I/O Control pin mux\n+ * @param  port        : Port number, should be: 0..15\n+ * @param  pin         : Pin number, should be: 0..31\n+ * @param  modefunc    : OR'ed values or type SCU_MODE_*\n+ * @return Nothing\n+ * @note   Do not use for clock pins (SFSCLK0 .. SFSCLK4). Use\n+ * Chip_SCU_ClockPinMux() function for SFSCLKx clock pins.\n+ */\n+STATIC INLINE void Chip_SCU_PinMuxSet(uint8_t port, uint8_t pin, uint16_t modefunc)\n+{\n+   LPC_SCU->SFSP[port][pin] = modefunc;\n+}\n+\n+/**\n+ * @brief  Configure pin function\n+ * @param  port    : Port number, should be: 0..15\n+ * @param  pin     : Pin number, should be: 0..31\n+ * @param  mode    : OR'ed values or type SCU_MODE_*\n+ * @param  func    : Pin function, value of type SCU_MODE_FUNC0 to SCU_MODE_FUNC7\n+ * @return Nothing\n+ * @note   Do not use for clock pins (SFSCLK0 .. SFSCLK4). Use\n+ * Chip_SCU_ClockPinMux() function for SFSCLKx clock pins.\n+ */\n+STATIC INLINE void Chip_SCU_PinMux(uint8_t port, uint8_t pin, uint16_t mode, uint8_t func)\n+{\n+   Chip_SCU_PinMuxSet(port, pin, (mode | (uint16_t) func));\n+}\n+\n+/**\n+ * @brief  Configure clock pin function (pins SFSCLKx)\n+ * @param  clknum  : Clock pin number, should be: 0..3\n+ * @param  modefunc    : OR'ed values or type SCU_MODE_*\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_ClockPinMuxSet(uint8_t clknum, uint16_t modefunc)\n+{\n+   LPC_SCU->SFSCLK[clknum] = (uint32_t) modefunc;\n+}\n+\n+/**\n+ * @brief  Configure clock pin function (pins SFSCLKx)\n+ * @param  clknum  : Clock pin number, should be: 0..3\n+ * @param  mode    : OR'ed values or type SCU_MODE_*\n+ * @param  func    : Pin function, value of type SCU_MODE_FUNC0 to SCU_MODE_FUNC7\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_ClockPinMux(uint8_t clknum, uint16_t mode, uint8_t func)\n+{\n+   LPC_SCU->SFSCLK[clknum] = ((uint32_t) mode | (uint32_t) func);\n+}\n+\n+/**\n+ * @brief  GPIO Interrupt Pin Select\n+ * @param  PortSel : GPIO PINTSEL interrupt, should be: 0 to 7\n+ * @param  PortNum : GPIO port number interrupt, should be: 0 to 7\n+ * @param  PinNum  : GPIO pin number Interrupt , should be: 0 to 31\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_GPIOIntPinSel(uint8_t PortSel, uint8_t PortNum, uint8_t PinNum)\n+{\n+   int32_t of = (PortSel & 3) << 3;\n+   uint32_t val = (((PortNum & 0x7) << 5) | (PinNum & 0x1F)) << of;\n+   LPC_SCU->PINTSEL[PortSel >> 2] = (LPC_SCU->PINTSEL[PortSel >> 2] & ~(0xFF << of)) | val;\n+}\n+\n+/**\n+ * @brief  I2C Pin Configuration\n+ * @param  I2C0Mode    : I2C0 mode, should be:\n+ *                  - I2C0_STANDARD_FAST_MODE: Standard/Fast mode transmit\n+ *                  - I2C0_FAST_MODE_PLUS: Fast-mode Plus transmit\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_I2C0PinConfig(uint32_t I2C0Mode)\n+{\n+   LPC_SCU->SFSI2C0 = I2C0Mode;\n+}\n+\n+/**\n+ * @brief  ADC Pin Configuration\n+ * @param  ADC_ID  : ADC number\n+ * @param  channel : ADC channel\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_ADC_Channel_Config(uint32_t ADC_ID, uint8_t channel)\n+{\n+   LPC_SCU->ENAIO[ADC_ID] |= 1UL << channel;\n+}\n+\n+/**\n+ * @brief  DAC Pin Configuration\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_DAC_Analog_Config(void)\n+{\n+   /*Enable analog function DAC on pin P4_4*/\n+   LPC_SCU->ENAIO[2] |= 1;\n+}\n+\n+/**\n+ * @brief  Set all I/O Control pin muxing\n+ * @param  pinArray    : Pointer to array of pin mux selections\n+ * @param  arrayLength : Number of entries in pinArray\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_SetPinMuxing(const PINMUX_GRP_T *pinArray, uint32_t arrayLength)\n+{\n+   uint32_t ix;\n+   for (ix = 0; ix < arrayLength; ix++ ) {\n+       Chip_SCU_PinMuxSet(pinArray[ix].pingrp, pinArray[ix].pinnum, pinArray[ix].modefunc);\n+   }\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SCU_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/sdif_18xx_43xx.h ./lpc_chip_43xx/inc/sdif_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/sdif_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sdif_18xx_43xx.h\t2017-02-27 20:42:08.456009492 -0300\n@@ -0,0 +1,479 @@\n+/*\n+ * @brief LPC18xx/43xx SD/SDIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SDIF_18XX_43XX_H_\n+#define __SDIF_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SDIF_18XX_43XX CHIP: LPC18xx/43xx SD/SDIO driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief SD/MMC & SDIO register block structure\n+ */\n+typedef struct {               /*!< SDMMC Structure        */\n+   __IO uint32_t  CTRL;        /*!< Control Register       */\n+   __IO uint32_t  PWREN;       /*!< Power Enable Register  */\n+   __IO uint32_t  CLKDIV;      /*!< Clock Divider Register */\n+   __IO uint32_t  CLKSRC;      /*!< SD Clock Source Register */\n+   __IO uint32_t  CLKENA;      /*!< Clock Enable Register  */\n+   __IO uint32_t  TMOUT;       /*!< Timeout Register       */\n+   __IO uint32_t  CTYPE;       /*!< Card Type Register     */\n+   __IO uint32_t  BLKSIZ;      /*!< Block Size Register    */\n+   __IO uint32_t  BYTCNT;      /*!< Byte Count Register    */\n+   __IO uint32_t  INTMASK;     /*!< Interrupt Mask Register */\n+   __IO uint32_t  CMDARG;      /*!< Command Argument Register */\n+   __IO uint32_t  CMD;         /*!< Command Register       */\n+   __I  uint32_t  RESP0;       /*!< Response Register 0    */\n+   __I  uint32_t  RESP1;       /*!< Response Register 1    */\n+   __I  uint32_t  RESP2;       /*!< Response Register 2    */\n+   __I  uint32_t  RESP3;       /*!< Response Register 3    */\n+   __I  uint32_t  MINTSTS;     /*!< Masked Interrupt Status Register */\n+   __IO uint32_t  RINTSTS;     /*!< Raw Interrupt Status Register */\n+   __I  uint32_t  STATUS;      /*!< Status Register        */\n+   __IO uint32_t  FIFOTH;      /*!< FIFO Threshold Watermark Register */\n+   __I  uint32_t  CDETECT;     /*!< Card Detect Register   */\n+   __I  uint32_t  WRTPRT;      /*!< Write Protect Register */\n+   __IO uint32_t  GPIO;        /*!< General Purpose Input/Output Register */\n+   __I  uint32_t  TCBCNT;      /*!< Transferred CIU Card Byte Count Register */\n+   __I  uint32_t  TBBCNT;      /*!< Transferred Host to BIU-FIFO Byte Count Register */\n+   __IO uint32_t  DEBNCE;      /*!< Debounce Count Register */\n+   __IO uint32_t  USRID;       /*!< User ID Register       */\n+   __I  uint32_t  VERID;       /*!< Version ID Register    */\n+   __I  uint32_t  RESERVED0;\n+   __IO uint32_t  UHS_REG;     /*!< UHS-1 Register         */\n+   __IO uint32_t  RST_N;       /*!< Hardware Reset         */\n+   __I  uint32_t  RESERVED1;\n+   __IO uint32_t  BMOD;        /*!< Bus Mode Register      */\n+   __O  uint32_t  PLDMND;      /*!< Poll Demand Register   */\n+   __IO uint32_t  DBADDR;      /*!< Descriptor List Base Address Register */\n+   __IO uint32_t  IDSTS;       /*!< Internal DMAC Status Register */\n+   __IO uint32_t  IDINTEN;     /*!< Internal DMAC Interrupt Enable Register */\n+   __I  uint32_t  DSCADDR;     /*!< Current Host Descriptor Address Register */\n+   __I  uint32_t  BUFADDR;     /*!< Current Buffer Descriptor Address Register */\n+} LPC_SDMMC_T;\n+\n+/** @brief  SDIO DMA descriptor control (des0) register defines\n+ */\n+#define MCI_DMADES0_OWN         (1UL << 31)        /*!< DMA owns descriptor bit */\n+#define MCI_DMADES0_CES         (1 << 30)      /*!< Card Error Summary bit */\n+#define MCI_DMADES0_ER          (1 << 5)       /*!< End of descriptopr ring bit */\n+#define MCI_DMADES0_CH          (1 << 4)       /*!< Second address chained bit */\n+#define MCI_DMADES0_FS          (1 << 3)       /*!< First descriptor bit */\n+#define MCI_DMADES0_LD          (1 << 2)       /*!< Last descriptor bit */\n+#define MCI_DMADES0_DIC         (1 << 1)       /*!< Disable interrupt on completion bit */\n+\n+/** @brief  SDIO DMA descriptor size (des1) register defines\n+ */\n+#define MCI_DMADES1_BS1(x)      (x)                /*!< Size of buffer 1 */\n+#define MCI_DMADES1_BS2(x)      ((x) << 13)        /*!< Size of buffer 2 */\n+#define MCI_DMADES1_MAXTR       4096           /*!< Max transfer size per buffer */\n+\n+/** @brief  SDIO control register defines\n+ */\n+#define MCI_CTRL_USE_INT_DMAC   (1 << 25)      /*!< Use internal DMA */\n+#define MCI_CTRL_CARDV_MASK     (0x7 << 16)        /*!< SD_VOLT[2:0} pins output state mask */\n+#define MCI_CTRL_CEATA_INT_EN   (1 << 11)      /*!< Enable CE-ATA interrupts */\n+#define MCI_CTRL_SEND_AS_CCSD   (1 << 10)      /*!< Send auto-stop */\n+#define MCI_CTRL_SEND_CCSD      (1 << 9)       /*!< Send CCSD */\n+#define MCI_CTRL_ABRT_READ_DATA (1 << 8)       /*!< Abort read data */\n+#define MCI_CTRL_SEND_IRQ_RESP  (1 << 7)       /*!< Send auto-IRQ response */\n+#define MCI_CTRL_READ_WAIT      (1 << 6)       /*!< Assert read-wait for SDIO */\n+#define MCI_CTRL_INT_ENABLE     (1 << 4)       /*!< Global interrupt enable */\n+#define MCI_CTRL_DMA_RESET      (1 << 2)       /*!< Reset internal DMA */\n+#define MCI_CTRL_FIFO_RESET     (1 << 1)       /*!< Reset data FIFO pointers */\n+#define MCI_CTRL_RESET          (1 << 0)       /*!< Reset controller */\n+\n+/** @brief SDIO Power Enable register defines\n+ */\n+#define MCI_POWER_ENABLE        0x1                /*!< Enable slot power signal (SD_POW) */\n+\n+/** @brief SDIO Clock divider register defines\n+ */\n+#define MCI_CLOCK_DIVIDER(dn, d2) ((d2) << ((dn) * 8)) /*!< Set cklock divider */\n+\n+/** @brief SDIO Clock source register defines\n+ */\n+#define MCI_CLKSRC_CLKDIV0      0\n+#define MCI_CLKSRC_CLKDIV1      1\n+#define MCI_CLKSRC_CLKDIV2      2\n+#define MCI_CLKSRC_CLKDIV3      3\n+#define MCI_CLK_SOURCE(clksrc)  (clksrc)       /*!< Set cklock divider source */\n+\n+/** @brief SDIO Clock Enable register defines\n+ */\n+#define MCI_CLKEN_LOW_PWR       (1 << 16)      /*!< Enable clock idle for slot */\n+#define MCI_CLKEN_ENABLE        (1 << 0)       /*!< Enable slot clock */\n+\n+/** @brief SDIO time-out register defines\n+ */\n+#define MCI_TMOUT_DATA(clks)    ((clks) << 8)  /*!< Data timeout clocks */\n+#define MCI_TMOUT_DATA_MSK      0xFFFFFF00\n+#define MCI_TMOUT_RESP(clks)    ((clks) & 0xFF)    /*!< Response timeout clocks */\n+#define MCI_TMOUT_RESP_MSK      0xFF\n+\n+/** @brief SDIO card-type register defines\n+ */\n+#define MCI_CTYPE_8BIT          (1 << 16)      /*!< Enable 4-bit mode */\n+#define MCI_CTYPE_4BIT          (1 << 0)       /*!< Enable 8-bit mode */\n+\n+/** @brief SDIO Interrupt status & mask register defines\n+ */\n+#define MCI_INT_SDIO            (1 << 16)      /*!< SDIO interrupt */\n+#define MCI_INT_EBE             (1 << 15)      /*!< End-bit error */\n+#define MCI_INT_ACD             (1 << 14)      /*!< Auto command done */\n+#define MCI_INT_SBE             (1 << 13)      /*!< Start bit error */\n+#define MCI_INT_HLE             (1 << 12)      /*!< Hardware locked error */\n+#define MCI_INT_FRUN            (1 << 11)      /*!< FIFO overrun/underrun error */\n+#define MCI_INT_HTO             (1 << 10)      /*!< Host data starvation error */\n+#define MCI_INT_DTO             (1 << 9)       /*!< Data timeout error */\n+#define MCI_INT_RTO             (1 << 8)       /*!< Response timeout error */\n+#define MCI_INT_DCRC            (1 << 7)       /*!< Data CRC error */\n+#define MCI_INT_RCRC            (1 << 6)       /*!< Response CRC error */\n+#define MCI_INT_RXDR            (1 << 5)       /*!< RX data ready */\n+#define MCI_INT_TXDR            (1 << 4)       /*!< TX data needed */\n+#define MCI_INT_DATA_OVER       (1 << 3)       /*!< Data transfer over */\n+#define MCI_INT_CMD_DONE        (1 << 2)       /*!< Command done */\n+#define MCI_INT_RESP_ERR        (1 << 1)       /*!< Command response error */\n+#define MCI_INT_CD              (1 << 0)       /*!< Card detect */\n+\n+/** @brief SDIO Command register defines\n+ */\n+#define MCI_CMD_START           (1UL << 31)        /*!< Start command */\n+#define MCI_CMD_VOLT_SWITCH     (1 << 28)      /*!< Voltage switch bit */\n+#define MCI_CMD_BOOT_MODE       (1 << 27)      /*!< Boot mode */\n+#define MCI_CMD_DISABLE_BOOT    (1 << 26)      /*!< Disable boot */\n+#define MCI_CMD_EXPECT_BOOT_ACK (1 << 25)      /*!< Expect boot ack */\n+#define MCI_CMD_ENABLE_BOOT     (1 << 24)      /*!< Enable boot */\n+#define MCI_CMD_CCS_EXP         (1 << 23)      /*!< CCS expected */\n+#define MCI_CMD_CEATA_RD        (1 << 22)      /*!< CE-ATA read in progress */\n+#define MCI_CMD_UPD_CLK         (1 << 21)      /*!< Update clock register only */\n+#define MCI_CMD_INIT            (1 << 15)      /*!< Send init sequence */\n+#define MCI_CMD_STOP            (1 << 14)      /*!< Stop/abort command */\n+#define MCI_CMD_PRV_DAT_WAIT    (1 << 13)      /*!< Wait before send */\n+#define MCI_CMD_SEND_STOP       (1 << 12)      /*!< Send auto-stop */\n+#define MCI_CMD_STRM_MODE       (1 << 11)      /*!< Stream transfer mode */\n+#define MCI_CMD_DAT_WR          (1 << 10)      /*!< Read(0)/Write(1) selection */\n+#define MCI_CMD_DAT_EXP         (1 << 9)       /*!< Data expected */\n+#define MCI_CMD_RESP_CRC        (1 << 8)       /*!< Check response CRC */\n+#define MCI_CMD_RESP_LONG       (1 << 7)       /*!< Response length */\n+#define MCI_CMD_RESP_EXP        (1 << 6)       /*!< Response expected */\n+#define MCI_CMD_INDX(n)         ((n) & 0x1F)\n+\n+/** @brief SDIO status register definess\n+ */\n+#define MCI_STS_GET_FCNT(x)     (((x) >> 17) & 0x1FF)\n+\n+/** @brief SDIO FIFO threshold defines\n+ */\n+#define MCI_FIFOTH_TX_WM(x)     ((x) & 0xFFF)\n+#define MCI_FIFOTH_RX_WM(x)     (((x) & 0xFFF) << 16)\n+#define MCI_FIFOTH_DMA_MTS_1    (0UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_4    (1UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_8    (2UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_16   (3UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_32   (4UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_64   (5UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_128  (6UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_256  (7UL << 28)\n+\n+/** @brief Bus mode register defines\n+ */\n+#define MCI_BMOD_PBL1           (0 << 8)       /*!< Burst length = 1 */\n+#define MCI_BMOD_PBL4           (1 << 8)       /*!< Burst length = 4 */\n+#define MCI_BMOD_PBL8           (2 << 8)       /*!< Burst length = 8 */\n+#define MCI_BMOD_PBL16          (3 << 8)       /*!< Burst length = 16 */\n+#define MCI_BMOD_PBL32          (4 << 8)       /*!< Burst length = 32 */\n+#define MCI_BMOD_PBL64          (5 << 8)       /*!< Burst length = 64 */\n+#define MCI_BMOD_PBL128         (6 << 8)       /*!< Burst length = 128 */\n+#define MCI_BMOD_PBL256         (7 << 8)       /*!< Burst length = 256 */\n+#define MCI_BMOD_DE             (1 << 7)       /*!< Enable internal DMAC */\n+#define MCI_BMOD_DSL(len)       ((len) << 2)   /*!< Descriptor skip length */\n+#define MCI_BMOD_FB             (1 << 1)       /*!< Fixed bursts */\n+#define MCI_BMOD_SWR            (1 << 0)       /*!< Software reset of internal registers */\n+\n+/** @brief Commonly used definitions\n+ */\n+#define SD_FIFO_SZ              32             /*!< Size of SDIO FIFOs (32-bit wide) */\n+\n+/** Function prototype for SD interface IRQ callback */\n+typedef uint32_t (*MCI_IRQ_CB_FUNC_T)(uint32_t);\n+\n+/** Function prototype for SD detect and write protect status check */\n+typedef int32_t (*PSCHECK_FUNC_T)(void);\n+\n+/** Function prototype for SD slot power enable or slot reset */\n+typedef void (*PS_POWER_FUNC_T)(int32_t enable);\n+\n+/** @brief  SDIO chained DMA descriptor\n+ */\n+typedef struct {\n+   volatile uint32_t des0;                     /*!< Control and status */\n+   volatile uint32_t des1;                     /*!< Buffer size(s) */\n+   volatile uint32_t des2;                     /*!< Buffer address pointer 1 */\n+   volatile uint32_t des3;                     /*!< Buffer address pointer 2 */\n+} pSDMMC_DMA_T;\n+\n+/** @brief  SDIO device type\n+ */\n+typedef struct _sdif_device {\n+   /* MCI_IRQ_CB_FUNC_T irq_cb; */\n+   pSDMMC_DMA_T mci_dma_dd[1 + (0x10000 / MCI_DMADES1_MAXTR)];\n+   /* uint32_t sdio_clk_rate; */\n+   /* uint32_t sdif_slot_clk_rate; */\n+   /* int32_t clock_enabled; */\n+} sdif_device;\n+\n+/** @brief Setup options for the SDIO driver\n+ */\n+#define US_TIMEOUT            1000000      /*!< give 1 atleast 1 sec for the card to respond */\n+#define MS_ACQUIRE_DELAY      (10)         /*!< inter-command acquire oper condition delay in msec*/\n+#define INIT_OP_RETRIES       50           /*!< initial OP_COND retries */\n+#define SET_OP_RETRIES        1000         /*!< set OP_COND retries */\n+#define SDIO_BUS_WIDTH        4                /*!< Max bus width supported */\n+#define SD_MMC_ENUM_CLOCK       400000     /*!< Typical enumeration clock rate */\n+#define MMC_MAX_CLOCK           20000000   /*!< Max MMC clock rate */\n+#define MMC_LOW_BUS_MAX_CLOCK   26000000   /*!< Type 0 MMC card max clock rate */\n+#define MMC_HIGH_BUS_MAX_CLOCK  52000000   /*!< Type 1 MMC card max clock rate */\n+#define SD_MAX_CLOCK            25000000   /*!< Max SD clock rate */\n+\n+/**\n+ * @brief  Set block size for the transfer\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  bytes   : block size in bytes\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetBlkSize(LPC_SDMMC_T *pSDMMC, uint32_t bytes)\n+{\n+   pSDMMC->BLKSIZ = bytes;\n+}\n+\n+/**\n+ * @brief  Reset card in slot\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  reset   : Sets SD_RST to passed state\n+ * @return None\n+ * @note   Reset card in slot, must manually de-assert reset after assertion\n+ * (Uses SD_RST pin, set per reset parameter state)\n+ */\n+STATIC INLINE void Chip_SDIF_Reset(LPC_SDMMC_T *pSDMMC, int32_t reset)\n+{\n+   if (reset) {\n+       pSDMMC->RST_N = 1;\n+   }\n+   else {\n+       pSDMMC->RST_N = 0;\n+   }\n+}\n+\n+/**\n+ * @brief  Detect if an SD card is inserted\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Returns 0 if a card is detected, otherwise 1\n+ * @note   Detect if an SD card is inserted\n+ * (uses SD_CD pin, returns 0 on card detect)\n+ */\n+STATIC INLINE int32_t Chip_SDIF_CardNDetect(LPC_SDMMC_T *pSDMMC)\n+{\n+   return (pSDMMC->CDETECT & 1);\n+}\n+\n+/**\n+ * @brief  Detect if write protect is enabled\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Returns 1 if card is write protected, otherwise 0\n+ * @note   Detect if write protect is enabled\n+ * (uses SD_WP pin, returns 1 if card is write protected)\n+ */\n+STATIC INLINE int32_t Chip_SDIF_CardWpOn(LPC_SDMMC_T *pSDMMC)\n+{\n+   return (pSDMMC->WRTPRT & 1);\n+}\n+\n+/**\n+ * @brief  Disable slot power\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ * @note   Uses SD_POW pin, set to low.\n+ */\n+STATIC INLINE void Chip_SDIF_PowerOff(LPC_SDMMC_T *pSDMMC)\n+{\n+   pSDMMC->PWREN = 0;\n+}\n+\n+/**\n+ * @brief  Enable slot power\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ * @note   Uses SD_POW pin, set to high.\n+ */\n+STATIC INLINE void Chip_SDIF_PowerOn(LPC_SDMMC_T *pSDMMC)\n+{\n+   pSDMMC->PWREN = 1;\n+}\n+\n+/**\n+ * @brief  Function to set card type\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  ctype   : card type\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetCardType(LPC_SDMMC_T *pSDMMC, uint32_t ctype)\n+{\n+   pSDMMC->CTYPE = ctype;\n+}\n+\n+/**\n+ * @brief  Returns the raw SD interface interrupt status\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Current pending interrupt status of Or'ed values MCI_INT_*\n+ */\n+STATIC INLINE uint32_t Chip_SDIF_GetIntStatus(LPC_SDMMC_T *pSDMMC)\n+{\n+   return pSDMMC->RINTSTS;\n+}\n+\n+/**\n+ * @brief  Clears the raw SD interface interrupt status\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  iVal    : Interrupts to be cleared, Or'ed values MCI_INT_*\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_ClrIntStatus(LPC_SDMMC_T *pSDMMC, uint32_t iVal)\n+{\n+   pSDMMC->RINTSTS = iVal;\n+}\n+\n+/**\n+ * @brief  Sets the SD interface interrupt mask\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  iVal    : Interrupts to enable, Or'ed values MCI_INT_*\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetIntMask(LPC_SDMMC_T *pSDMMC, uint32_t iVal)\n+{\n+   pSDMMC->INTMASK = iVal;\n+}\n+\n+/**\n+ * @brief  Set block size and byte count for transfer\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  blk_size: block size and byte count in bytes\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetBlkSizeByteCnt(LPC_SDMMC_T *pSDMMC, uint32_t blk_size)\n+{\n+   pSDMMC->BLKSIZ = blk_size;\n+   pSDMMC->BYTCNT = blk_size;\n+}\n+\n+/**\n+ * @brief  Set byte count for transfer\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  bytes   : block size and byte count in bytes\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetByteCnt(LPC_SDMMC_T *pSDMMC, uint32_t bytes)\n+{\n+   pSDMMC->BYTCNT = bytes;\n+}\n+\n+/**\n+ * @brief  Initializes the SD/MMC card controller\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ */\n+void Chip_SDIF_Init(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Shutdown the SD/MMC card controller\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ */\n+void Chip_SDIF_DeInit(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Function to send command to Card interface unit (CIU)\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  cmd     : Command with all flags set\n+ * @param  arg     : Argument for the command\n+ * @return TRUE on times-out, otherwise FALSE\n+ */\n+int32_t Chip_SDIF_SendCmd(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg);\n+\n+/**\n+ * @brief  Read the response from the last command\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  resp    : Pointer to response array to fill\n+ * @return None\n+ */\n+void Chip_SDIF_GetResponse(LPC_SDMMC_T *pSDMMC, uint32_t *resp);\n+\n+/**\n+ * @brief  Sets the SD bus clock speed\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  clk_rate    : Input clock rate into the IP block\n+ * @param  speed       : Desired clock speed to the card\n+ * @return None\n+ */\n+void Chip_SDIF_SetClock(LPC_SDMMC_T *pSDMMC, uint32_t clk_rate, uint32_t speed);\n+\n+/**\n+ * @brief  Function to clear interrupt & FIFOs\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ */\n+void Chip_SDIF_SetClearIntFifo(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Setup DMA descriptors\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  psdif_dev   : SD interface device\n+ * @param  addr        : Address of buffer (source or destination)\n+ * @param  size        : size of buffer in bytes (64K max)\n+ * @return None\n+ */\n+void Chip_SDIF_DmaSetup(LPC_SDMMC_T *pSDMMC, sdif_device *psdif_dev, uint32_t addr, uint32_t size);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SDIF_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/sdio_18xx_43xx.h ./lpc_chip_43xx/inc/sdio_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/sdio_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sdio_18xx_43xx.h\t2017-02-27 20:42:08.456009492 -0300\n@@ -0,0 +1,278 @@\n+/*\n+ * @brief LPC18xx/43xx SD/MMC card driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SDIO_18XX_43XX_H_\n+#define __SDIO_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SDIO_18XX_43XX CHIP: LPC18xx/43xx SDIO Card driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/** @brief SDIO Driver events */\n+enum SDIO_EVENT\n+{\n+   SDIO_START_COMMAND,  /**! SDIO driver is about to start a command transfer */\n+   SDIO_START_DATA,     /**! SDIO driver is about to start a data transfer */\n+   SDIO_WAIT_DELAY,     /**! SDIO driver needs to wait for given milli seconds */\n+   SDIO_WAIT_COMMAND,   /**! SDIO driver is waiting for a command to complete */\n+   SDIO_WAIT_DATA,      /**! SDIO driver is waiting for data transfer to complete */\n+\n+   SDIO_CARD_DETECT,    /**! SDIO driver has detected a card */\n+   SDIO_CMD_ERR,        /**! Error in command transfer */\n+   SDIO_CMD_DONE,       /**! Command transfer successful */\n+   SDIO_DATA_ERR,       /**! Data transfer error */\n+   SDIO_DATA_DONE,      /**! Data transfer successful */\n+   SDIO_CARD_INT,       /**! SDIO Card interrupt (from a function) */\n+};\n+\n+/** @brief SDIO Command Responses */\n+#define SDIO_CMD_RESP_R1     (1UL << 6)\n+#define SDIO_CMD_RESP_R2     (3UL << 6)\n+#define SDIO_CMD_RESP_R3     (1UL << 6)\n+#define SDIO_CMD_RESP_R4     (1UL << 6)\n+#define SDIO_CMD_RESP_R5     (1UL << 6)\n+#define SDIO_CMD_RESP_R6     (1UL << 6)\n+\n+/** @brief SDIO Command misc options */\n+#define SDIO_CMD_CRC         (1UL << 8)  /**! Response must have a valid CRC */\n+#define SDIO_CMD_DATA        (1UL << 9)  /**! Command is a data transfer command */\n+\n+/** @brief List of commands */\n+#define CMD0            (0 | (1 << 15))\n+#define CMD5            (5 | SDIO_CMD_RESP_R4)\n+#define CMD3            (3 | SDIO_CMD_RESP_R6)\n+#define CMD7            (7 | SDIO_CMD_RESP_R1)\n+#define CMD52           (52 | SDIO_CMD_RESP_R5 | SDIO_CMD_CRC)\n+#define CMD53           (53 | SDIO_CMD_RESP_R5 | SDIO_CMD_DATA | SDIO_CMD_CRC)\n+\n+/** @brief SDIO Error numbers */\n+#define SDIO_ERROR           -1 /**! General SDIO Error */\n+#define SDIO_ERR_FNUM        -2 /**! Error getting Number of functions supported */\n+#define SDIO_ERR_READWRITE   -3 /**! Error when performing Read/write of data */\n+#define SDIO_ERR_VOLT        -4 /**! Error Reading or setting up the voltage to 3v3 */\n+#define SDIO_ERR_RCA         -5 /**! Error during RCA phase */\n+#define SDIO_ERR_INVFUNC     -6 /**! Invalid function argument */\n+#define SDIO_ERR_INVARG      -7 /**! Invalid argument supplied to function */\n+\n+#define SDIO_VOLT_3_3    0x00100000UL  /* for CMD5 */\n+\n+/* SDIO Data transfer modes */\n+/** @brief  Block mode transfer flag\n+ *\n+ * When this flag is specified in a transfer the data will be transfered in blocks if not\n+ * it will be transfered in bytes. See SDIO_Card_DataRead(), SDIO_Card_DataWrite()\n+ * for more information.\n+ */\n+#define SDIO_MODE_BLOCK       (1UL << 27)\n+\n+/** @brief Buffer mode transfer flag\n+ *\n+ * Default mode for SDIO_Card_ReadData() and SDIO_Card_WriteData() is FIFO mode\n+ * in FIFO mode all the given data will be written to or read from the same\n+ * register address in the function. This flag will set the transfers to BUFFER\n+ * mode; in BUFFER mode read first byte will be read from the given source address\n+ * and the next byte will be read from the next source address (i.e src_addr + 1),\n+ * and so on, in BUFFER mode write first byte will be written to dest_addr, next\n+ * byte will be written to dest_addr + 1 and so on.\n+ */\n+#define SDIO_MODE_BUFFER      (1UL << 26)\n+\n+/* ---- SDIO Internal map ---- */\n+#define SDIO_AREA_CIA          0           /* function 0 */\n+\n+/* ---- Card Capability(0x08) register ---- */\n+#define SDIO_CCCR_LSC          0x40u       /* card is low-speed cards */\n+#define SDIO_CCCR_4BLS         0x80u       /* 4-bit support for low-speed cards */\n+\n+#define SDIO_POWER_INIT  1\n+\n+#define SDIO_CLK_HISPEED            33000000UL    /* High-Speed Clock  */\n+#define SDIO_CLK_FULLSPEED          16000000UL    /* Full-Speed Clock  */\n+#define SDIO_CLK_LOWSPEED           400000        /* Low-Speed Clock   */\n+\n+/**\n+ * @brief  Initialize the SDIO card\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  freq        : Initial frequency to use during the enumeration\n+ * @return 0 on Success; > 0 on response error [like CRC error] < 0 on BUS error\n+ */\n+int SDIO_Card_Init(LPC_SDMMC_T *pSDMMC, uint32_t freq);\n+\n+/**\n+ * @brief  Write 8-Bit register from SDIO register space\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  addr        : Address of the register to read\n+ * @param  data        : 8-bit data be written\n+ * @return 0 on Success; > 0 on response error [like CRC error] < 0 on BUS error\n+ * @note SDIO_Setup_Callback() function must be called to setup the call backs before\n+ * calling  this API.\n+ */\n+int SDIO_Write_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t data);\n+\n+/**\n+ * @brief  Write 8-Bit register from SDIO register space and read the register back\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  addr        : Address of the register to read\n+ * @param  data        : Pointer to memory where the 8-bit data be stored\n+ * @return 0 on Success; > 0 on response error [like CRC error] < 0 on BUS error\n+ * @note   @a data must have the value to be written stored in it when the function is called\n+ */\n+int SDIO_WriteRead_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t *data);\n+\n+/**\n+ * @brief  Read an 8-Bit register from SDIO register space\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  addr        : Address of the register to read\n+ * @param  data        : Pointer to memory where the 8-bit data be stored\n+ * @return 0 on Success; > 0 on response error [like CRC error] < 0 on BUS error\n+ */\n+int SDIO_Read_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t *data);\n+\n+/**\n+ * @brief  Setup SDIO wait and wakeup callbacks\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  wake_evt    : Wakeup event call-back handler\n+ * @param  wait_evt    : Wait event call-back handler\n+ * @return Nothing\n+ * @note   @a wake_evt and @a wait_evt should always be non-null function pointers\n+ * This function must be called before calling SDIO_Card_Init() function\n+ */\n+void SDIO_Setup_Callback(LPC_SDMMC_T *pSDMMC,\n+   void (*wake_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg),\n+   uint32_t (*wait_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg));\n+\n+/**\n+ * @brief  SDIO Event handler [Should be called from SDIO interrupt handler]\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @return Nothing\n+ */\n+void SDIO_Handler(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Sends a command to the SDIO Card [Example CMD52]\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  cmd         : Command to be sent along with any flags\n+ * @param  arg         : Argument for the command\n+ * @return 0 on Success; Non-Zero on failure\n+ */\n+uint32_t SDIO_Send_Command(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg);\n+\n+/**\n+ * @brief  Gets the block size of a given function\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @return Block size of the given function\n+ * @sa     SDIO_Card_SetBlockSize()\n+ * @note   If the return value is 0 then bock size is not set using\n+ * SDIO_Card_SetBlockSize(), or given @a func is not valid or the\n+ * card does not support block data transfers.\n+ */\n+uint32_t SDIO_Card_GetBlockSize(LPC_SDMMC_T *pSDMMC, uint32_t func);\n+\n+/**\n+ * @brief  Sets the block size of a given function\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  blkSize     : Block size to set\n+ * @return 0 on success; Non-Zero on failure\n+ * @sa     SDIO_Card_GetBlockSize()\n+ * @note   After setting block size using this API, if\n+ * SDIO_Card_GetBlockSize() returns 0 for a valid function then the card\n+ * does not support block transfers.\n+ */\n+int SDIO_Card_SetBlockSize(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t blkSize);\n+\n+/**\n+ * @brief  Writes stream or block of data to the SDIO card [Using CMD53]\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  dest_addr   : Address where the data to be written (inside @a func register space)\n+ * @param  src_addr    : Buffer from which data to be taken\n+ * @param  size        : Number of Bytes/Blocks to be transfered [Must be in the range 1 to 512]\n+ * @param  flags       : Or-ed value of #SDIO_MODE_BLOCK, #SDIO_MODE_BUFFER\n+ * @return 0 on success; Non-Zero on failure\n+ * @note   When #SDIO_MODE_BLOCK is set in @a flags the size is number of blocks, so\n+ * the number of bytes transferd will be @a size * \"block size\" [See SDIO_Card_GetBlockSize() and\n+ * SDIO_Card_SetBlockSize() for more information]\n+ */\n+int SDIO_Card_WriteData(LPC_SDMMC_T *pSDMMC, uint32_t func,\n+   uint32_t dest_addr, const uint8_t *src_addr,\n+   uint32_t size, uint32_t flags);\n+\n+/**\n+ * @brief  Reads stream or block of data from the SDIO card [Using CMD53]\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  dest_addr   : memory where the data to be read into\n+ * @param  src_addr    : Register address from which data to be read  (inside @a func register space)\n+ * @param  size        : Number of Bytes/Blocks to be transfered [Must be in the range 1 to 512]\n+ * @param  flags       : Or-ed value of #SDIO_MODE_BLOCK, #SDIO_MODE_BUFFER\n+ * @return 0 on success; Non-Zero on failure\n+ * @note   When #SDIO_MODE_BLOCK is set in @a flags the size is number of blocks, so\n+ * the number of bytes transferd will be @a size * \"block size\" [See SDIO_Card_GetBlockSize() and\n+ * SDIO_Card_SetBlockSize() for more information]\n+ */\n+int SDIO_Card_ReadData(LPC_SDMMC_T *pSDMMC, uint32_t func,\n+   uint8_t *dest_addr, uint32_t src_addr,\n+   uint32_t size, uint32_t flags);\n+\n+/**\n+ * @brief  Disable SDIO interrupt for a given function\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @return 0 - on success; Non zero on failure\n+ */\n+int SDIO_Card_DisableInt(LPC_SDMMC_T *pSDMMC, uint32_t func);\n+\n+/**\n+ * @brief  Enable SDIO interrupt for a given function\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @return 0 - on success; Non zero on failure\n+ */\n+int SDIO_Card_EnableInt(LPC_SDMMC_T *pSDMMC, uint32_t func);\n+\n+/**\n+ * @}\n+ */\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SDIO_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/sdmmc_18xx_43xx.h ./lpc_chip_43xx/inc/sdmmc_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/sdmmc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sdmmc_18xx_43xx.h\t2017-02-27 20:42:08.456009492 -0300\n@@ -0,0 +1,151 @@\n+/*\n+ * @brief LPC18xx/43xx SD/MMC card driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SDMMC_18XX_43XX_H_\n+#define __SDMMC_18XX_43XX_H_\n+\n+#include \"sdmmc.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SDMMC_18XX_43XX CHIP: LPC18xx/43xx SD/MMC driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define CMD_MASK_RESP       (0x3UL << 28)\n+#define CMD_RESP(r)         (((r) & 0x3) << 28)\n+#define CMD_RESP_R0         (0 << 28)\n+#define CMD_RESP_R1         (1 << 28)\n+#define CMD_RESP_R2         (2 << 28)\n+#define CMD_RESP_R3         (3 << 28)\n+#define CMD_BIT_AUTO_STOP   (1 << 24)\n+#define CMD_BIT_APP         (1 << 23)\n+#define CMD_BIT_INIT        (1 << 22)\n+#define CMD_BIT_BUSY        (1 << 21)\n+#define CMD_BIT_LS          (1 << 20)  /* Low speed, used during acquire */\n+#define CMD_BIT_DATA        (1 << 19)\n+#define CMD_BIT_WRITE       (1 << 18)\n+#define CMD_BIT_STREAM      (1 << 17)\n+#define CMD_MASK_CMD        (0xff)\n+#define CMD_SHIFT_CMD       (0)\n+\n+#define CMD(c, r)        ( ((c) &  CMD_MASK_CMD) | CMD_RESP((r)) )\n+\n+#define CMD_IDLE            CMD(MMC_GO_IDLE_STATE, 0) | CMD_BIT_LS    | CMD_BIT_INIT\n+#define CMD_SD_OP_COND      CMD(SD_APP_OP_COND, 1)      | CMD_BIT_LS | CMD_BIT_APP\n+#define CMD_SD_SEND_IF_COND CMD(SD_CMD8, 1)      | CMD_BIT_LS\n+#define CMD_MMC_OP_COND     CMD(MMC_SEND_OP_COND, 3)    | CMD_BIT_LS | CMD_BIT_INIT\n+#define CMD_ALL_SEND_CID    CMD(MMC_ALL_SEND_CID, 2)    | CMD_BIT_LS\n+#define CMD_MMC_SET_RCA     CMD(MMC_SET_RELATIVE_ADDR, 1) | CMD_BIT_LS\n+#define CMD_SD_SEND_RCA     CMD(SD_SEND_RELATIVE_ADDR, 1) | CMD_BIT_LS\n+#define CMD_SEND_CSD        CMD(MMC_SEND_CSD, 2) | CMD_BIT_LS\n+#define CMD_SEND_EXT_CSD    CMD(MMC_SEND_EXT_CSD, 1) | CMD_BIT_LS | CMD_BIT_DATA\n+#define CMD_DESELECT_CARD   CMD(MMC_SELECT_CARD, 0)\n+#define CMD_SELECT_CARD     CMD(MMC_SELECT_CARD, 1)\n+#define CMD_SET_BLOCKLEN    CMD(MMC_SET_BLOCKLEN, 1)\n+#define CMD_SEND_STATUS     CMD(MMC_SEND_STATUS, 1)\n+#define CMD_READ_SINGLE     CMD(MMC_READ_SINGLE_BLOCK, 1) | CMD_BIT_DATA\n+#define CMD_READ_MULTIPLE   CMD(MMC_READ_MULTIPLE_BLOCK, 1) | CMD_BIT_DATA | CMD_BIT_AUTO_STOP\n+#define CMD_SD_SET_WIDTH    CMD(SD_APP_SET_BUS_WIDTH, 1) | CMD_BIT_APP\n+#define CMD_STOP            CMD(MMC_STOP_TRANSMISSION, 1) | CMD_BIT_BUSY\n+#define CMD_WRITE_SINGLE    CMD(MMC_WRITE_BLOCK, 1) | CMD_BIT_DATA | CMD_BIT_WRITE\n+#define CMD_WRITE_MULTIPLE  CMD(MMC_WRITE_MULTIPLE_BLOCK, 1) | CMD_BIT_DATA | CMD_BIT_WRITE | CMD_BIT_AUTO_STOP\n+\n+/* Card specific setup data */\n+typedef struct _mci_card_struct {\n+   sdif_device sdif_dev;\n+   SDMMC_CARD_T card_info;\n+} mci_card_struct;\n+\n+/**\n+ * @brief  Get card's current state (idle, transfer, program, etc.)\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Current SD card transfer state\n+ */\n+int32_t Chip_SDMMC_GetState(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Function to enumerate the SD/MMC/SDHC/MMC+ cards\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  pcardinfo   : Pointer to pre-allocated card info structure\n+ * @return 1 if a card is acquired, otherwise 0\n+ */\n+uint32_t Chip_SDMMC_Acquire(LPC_SDMMC_T *pSDMMC, mci_card_struct *pcardinfo);\n+\n+/**\n+ * @brief  Get the device size of SD/MMC card (after enumeration)\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Card size in number of bytes (capacity)\n+ */\n+uint64_t Chip_SDMMC_GetDeviceSize(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Get the number of device blocks of SD/MMC card (after enumeration)\n+ * Since Chip_SDMMC_GetDeviceSize is limited to 32 bits cards with greater than\n+ * 2 GBytes of data will not be correct, in such cases users can use this function\n+ * to get the size of the card in blocks.\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Number of 512 bytes blocks in the card\n+ */\n+int32_t Chip_SDMMC_GetDeviceBlocks(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Performs the read of data from the SD/MMC card\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  buffer      : Pointer to data buffer to copy to\n+ * @param  start_block : Start block number\n+ * @param  num_blocks  : Number of block to read\n+ * @return Bytes read, or 0 on error\n+ */\n+int32_t Chip_SDMMC_ReadBlocks(LPC_SDMMC_T *pSDMMC, void *buffer, int32_t start_block, int32_t num_blocks);\n+\n+/**\n+ * @brief  Performs write of data to the SD/MMC card\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  buffer      : Pointer to data buffer to copy to\n+ * @param  start_block : Start block number\n+ * @param  num_blocks  : Number of block to write\n+ * @return Number of bytes actually written, or 0 on error\n+ */\n+int32_t Chip_SDMMC_WriteBlocks(LPC_SDMMC_T *pSDMMC, void *buffer, int32_t start_block, int32_t num_blocks);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SDMMC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/sdmmc.h ./lpc_chip_43xx/inc/sdmmc.h\n--- a_8FkA5l/lpc_chip_43xx/inc/sdmmc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sdmmc.h\t2017-02-27 20:42:08.460009492 -0300\n@@ -0,0 +1,450 @@\n+/*\n+ * @brief    Common definitions used in SD/MMC cards\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SDMMC_H\n+#define __SDMMC_H\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CHIP_SDMMC_Definitions CHIP: Common SD/MMC definitions\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/**\n+ * @brief OCR Register definitions\n+ */\n+/** Support voltage range 2.0-2.1 (this bit is reserved in SDC)*/\n+#define SDC_OCR_20_21               (((uint32_t) 1) << 8)\n+/** Support voltage range 2.1-2.2 (this bit is reserved in SDC)*/\n+#define SDC_OCR_21_22               (((uint32_t) 1) << 9)\n+/** Support voltage range 2.2-2.3 (this bit is reserved in SDC)*/\n+#define SDC_OCR_22_23               (((uint32_t) 1) << 10)\n+/** Support voltage range 2.3-2.4 (this bit is reserved in SDC)*/\n+#define SDC_OCR_23_24               (((uint32_t) 1) << 11)\n+/** Support voltage range 2.4-2.5 (this bit is reserved in SDC)*/\n+#define SDC_OCR_24_25               (((uint32_t) 1) << 12)\n+/** Support voltage range 2.5-2.6 (this bit is reserved in SDC)*/\n+#define SDC_OCR_25_26               (((uint32_t) 1) << 13)\n+/** Support voltage range 2.6-2.7 (this bit is reserved in SDC)*/\n+#define SDC_OCR_26_27               (((uint32_t) 1) << 14)\n+/** Support voltage range 2.7-2.8 */\n+#define SDC_OCR_27_28               (((uint32_t) 1) << 15)\n+/** Support voltage range 2.8-2.9*/\n+#define SDC_OCR_28_29               (((uint32_t) 1) << 16)\n+/** Support voltage range 2.9-3.0 */\n+#define SDC_OCR_29_30               (((uint32_t) 1) << 17)\n+/** Support voltage range 3.0-3.1 */\n+#define SDC_OCR_30_31               (((uint32_t) 1) << 18)\n+/** Support voltage range 3.1-3.2 */\n+#define SDC_OCR_31_32               (((uint32_t) 1) << 19)\n+/** Support voltage range 3.2-3.3 */\n+#define SDC_OCR_32_33               (((uint32_t) 1) << 20)\n+/** Support voltage range 3.3-3.4 */\n+#define SDC_OCR_33_34               (((uint32_t) 1) << 21)\n+/** Support voltage range 3.4-3.5 */\n+#define SDC_OCR_34_35               (((uint32_t) 1) << 22)\n+/** Support voltage range 3.5-3.6 */\n+#define SDC_OCR_35_36               (((uint32_t) 1) << 23)\n+/** Support voltage range 2.7-3.6 */\n+#define SDC_OCR_27_36               ((uint32_t) 0x00FF8000)\n+/** Card Capacity Status (CCS). (this bit is reserved in MMC) */\n+#define SDC_OCR_HC_CCS              (((uint32_t) 1) << 30)\n+/** Card power up status bit */\n+#define SDC_OCR_IDLE                (((uint32_t) 1) << 31)\n+#define SDC_OCR_BUSY                (((uint32_t) 0) << 31)\n+\n+/* SD/MMC commands - this matrix shows the command, response types, and\n+   supported card type for that command.\n+   Command                 Number Resp  SD  MMC\n+   ----------------------- ------ ----- --- ---\n+   Reset (go idle)         CMD0   NA    x   x\n+   Send op condition       CMD1   R3        x\n+   All send CID            CMD2   R2    x   x\n+   Send relative address   CMD3   R1        x\n+   Send relative address   CMD3   R6    x\n+   Program DSR             CMD4   NA        x\n+   Select/deselect card    CMD7   R1b       x\n+   Select/deselect card    CMD7   R1    x\n+   Send CSD                CMD9   R2    x   x\n+   Send CID                CMD10  R2    x   x\n+   Read data until stop    CMD11  R1    x   x\n+   Stop transmission       CMD12  R1/b  x   x\n+   Send status             CMD13  R1    x   x\n+   Go inactive state       CMD15  NA    x   x\n+   Set block length        CMD16  R1    x   x\n+   Read single block       CMD17  R1    x   x\n+   Read multiple blocks    CMD18  R1    x   x\n+   Write data until stop   CMD20  R1        x\n+   Setblock count          CMD23  R1        x\n+   Write single block      CMD24  R1    x   x\n+   Write multiple blocks   CMD25  R1    x   x\n+   Program CID             CMD26  R1        x\n+   Program CSD             CMD27  R1    x   x\n+   Set write protection    CMD28  R1b   x   x\n+   Clear write protection  CMD29  R1b   x   x\n+   Send write protection   CMD30  R1    x   x\n+   Erase block start       CMD32  R1    x\n+   Erase block end         CMD33  R1    x\n+   Erase block start       CMD35  R1        x\n+   Erase block end         CMD36  R1        x\n+   Erase blocks            CMD38  R1b       x\n+   Fast IO                 CMD39  R4        x\n+   Go IRQ state            CMD40  R5        x\n+   Lock/unlock             CMD42  R1b       x\n+   Application command     CMD55  R1        x\n+   General command         CMD56  R1b       x\n+\n+ *** SD card application commands - these must be preceded with ***\n+ *** MMC CMD55 application specific command first               ***\n+   Set bus width           ACMD6  R1    x\n+   Send SD status          ACMD13 R1    x\n+   Send number WR blocks   ACMD22 R1    x\n+   Set WR block erase cnt  ACMD23 R1    x\n+   Send op condition       ACMD41 R3    x\n+   Set clear card detect   ACMD42 R1    x\n+   Send CSR                ACMD51 R1    x */\n+\n+/**\n+ * @brief  SD/MMC application specific commands for SD cards only - these\n+ * must be preceded by the SDMMC CMD55 to work correctly\n+ */\n+typedef enum {\n+   SD_SET_BUS_WIDTH,       /*!< Set the SD bus width */\n+   SD_SEND_STATUS,         /*!< Send the SD card status */\n+   SD_SEND_WR_BLOCKS,      /*!< Send the number of written clocks */\n+   SD_SET_ERASE_COUNT,     /*!< Set the number of blocks to pre-erase */\n+   SD_SENDOP_COND,         /*!< Send the OCR register (init) */\n+   SD_CLEAR_CARD_DET,      /*!< Set or clear the 50K detect pullup */\n+   SD_SEND_SCR,            /*!< Send the SD configuration register */\n+   SD_INVALID_APP_CMD      /*!< Invalid SD application command */\n+} SD_APP_CMD_T;\n+\n+/**\n+ * @brief  Possible SDMMC response types\n+ */\n+typedef enum {\n+   SDMMC_RESPONSE_R1,      /*!< Typical status */\n+   SDMMC_RESPONSE_R1B,     /*!< Typical status with busy */\n+   SDMMC_RESPONSE_R2,      /*!< CID/CSD registers (CMD2 and CMD10) */\n+   SDMMC_RESPONSE_R3,      /*!< OCR register (CMD1, ACMD41) */\n+   SDMMC_RESPONSE_R4,      /*!< Fast IO response word */\n+   SDMMC_RESPONSE_R5,      /*!< Go IRQ state response word */\n+   SDMMC_RESPONSE_R6,      /*!< Published RCA response */\n+   SDMMC_RESPONSE_NONE     /*!< No response expected */\n+} SDMMC_RESPONSE_T;\n+\n+/**\n+ * @brief  Possible SDMMC card state types\n+ */\n+typedef enum {\n+   SDMMC_IDLE_ST = 0,  /*!< Idle state */\n+   SDMMC_READY_ST,     /*!< Ready state */\n+   SDMMC_IDENT_ST,     /*!< Identification State */\n+   SDMMC_STBY_ST,      /*!< standby state */\n+   SDMMC_TRAN_ST,      /*!< transfer state */\n+   SDMMC_DATA_ST,      /*!< Sending-data State */\n+   SDMMC_RCV_ST,       /*!< Receive-data State */\n+   SDMMC_PRG_ST,       /*!< Programming State */\n+   SDMMC_DIS_ST        /*!< Disconnect State */\n+} SDMMC_STATE_T;\n+\n+/* Function prototype for event setup function */\n+typedef void (*SDMMC_EVSETUP_FUNC_T)(void *);\n+\n+/* Function prototype for wait for event function */\n+typedef uint32_t (*SDMMC_EVWAIT_FUNC_T)(void);\n+\n+/* Function prototype for milliSecond delay function */\n+typedef void (*SDMMC_MSDELAY_FUNC_T)(uint32_t);\n+\n+/**\n+ * @brief SD/MMC Card specific setup data structure\n+ */\n+typedef struct {\n+   uint32_t response[4];                       /*!< Most recent response */\n+   uint32_t cid[4];                            /*!< CID of acquired card  */\n+   uint32_t csd[4];                            /*!< CSD of acquired card */\n+   uint32_t ext_csd[512 / 4];                  /*!< Ext CSD */\n+   uint32_t card_type;                         /*!< Card Type */\n+   uint16_t rca;                               /*!< Relative address assigned to card */\n+   uint32_t speed;                             /*!< Speed */\n+   uint32_t block_len;                         /*!< Card sector size */\n+   uint64_t device_size;                       /*!< Device Size */\n+   uint32_t blocknr;                           /*!< Block Number */\n+   uint32_t clk_rate;                          /*! Clock rate */\n+   SDMMC_EVSETUP_FUNC_T evsetup_cb;            /*!< Function to setup event information */\n+   SDMMC_EVWAIT_FUNC_T waitfunc_cb;            /*!< Function to wait for event */\n+   SDMMC_MSDELAY_FUNC_T msdelay_func;          /*!< Function to sleep in ms */\n+} SDMMC_CARD_T;\n+\n+/**\n+ * @brief SD/MMC commands, arguments and responses\n+ * Standard SD/MMC commands (3.1)       type  argument     response\n+ */\n+/* class 1 */\n+#define MMC_GO_IDLE_STATE         0        /* bc                          */\n+#define MMC_SEND_OP_COND          1        /* bcr  [31:0]  OCR        R3  */\n+#define MMC_ALL_SEND_CID          2        /* bcr                     R2  */\n+#define MMC_SET_RELATIVE_ADDR     3        /* ac   [31:16] RCA        R1  */\n+#define MMC_SET_DSR               4        /* bc   [31:16] RCA            */\n+#define MMC_SELECT_CARD           7        /* ac   [31:16] RCA        R1  */\n+#define MMC_SEND_EXT_CSD          8        /* bc                      R1  */\n+#define MMC_SEND_CSD              9        /* ac   [31:16] RCA        R2  */\n+#define MMC_SEND_CID             10        /* ac   [31:16] RCA        R2  */\n+#define MMC_STOP_TRANSMISSION    12        /* ac                      R1b */\n+#define MMC_SEND_STATUS          13        /* ac   [31:16] RCA        R1  */\n+#define MMC_GO_INACTIVE_STATE    15        /* ac   [31:16] RCA            */\n+\n+/* class 2 */\n+#define MMC_SET_BLOCKLEN         16        /* ac   [31:0]  block len  R1  */\n+#define MMC_READ_SINGLE_BLOCK    17        /* adtc [31:0]  data addr  R1  */\n+#define MMC_READ_MULTIPLE_BLOCK  18        /* adtc [31:0]  data addr  R1  */\n+\n+/* class 3 */\n+#define MMC_WRITE_DAT_UNTIL_STOP 20        /* adtc [31:0]  data addr  R1  */\n+\n+/* class 4 */\n+#define MMC_SET_BLOCK_COUNT      23        /* adtc [31:0]  data addr  R1  */\n+#define MMC_WRITE_BLOCK          24        /* adtc [31:0]  data addr  R1  */\n+#define MMC_WRITE_MULTIPLE_BLOCK 25        /* adtc                    R1  */\n+#define MMC_PROGRAM_CID          26        /* adtc                    R1  */\n+#define MMC_PROGRAM_CSD          27        /* adtc                    R1  */\n+\n+/* class 6 */\n+#define MMC_SET_WRITE_PROT       28        /* ac   [31:0]  data addr  R1b */\n+#define MMC_CLR_WRITE_PROT       29        /* ac   [31:0]  data addr  R1b */\n+#define MMC_SEND_WRITE_PROT      30        /* adtc [31:0]  wpdata addr R1  */\n+\n+/* class 5 */\n+#define MMC_ERASE_GROUP_START    35        /* ac   [31:0]  data addr  R1  */\n+#define MMC_ERASE_GROUP_END      36        /* ac   [31:0]  data addr  R1  */\n+#define MMC_ERASE                37        /* ac                      R1b */\n+#define SD_ERASE_WR_BLK_START    32        /* ac   [31:0]  data addr  R1  */\n+#define SD_ERASE_WR_BLK_END      33        /* ac   [31:0]  data addr  R1  */\n+#define SD_ERASE                 38        /* ac                      R1b */\n+\n+/* class 9 */\n+#define MMC_FAST_IO              39        /* ac   <Complex>          R4  */\n+#define MMC_GO_IRQ_STATE         40        /* bcr                     R5  */\n+\n+/* class 7 */\n+#define MMC_LOCK_UNLOCK          42        /* adtc                    R1b */\n+\n+/* class 8 */\n+#define MMC_APP_CMD              55        /* ac   [31:16] RCA        R1  */\n+#define MMC_GEN_CMD              56        /* adtc [0]     RD/WR      R1b */\n+\n+/* SD commands                           type  argument     response */\n+/* class 8 */\n+/* This is basically the same command as for MMC with some quirks. */\n+#define SD_SEND_RELATIVE_ADDR     3        /* ac                      R6  */\n+#define SD_CMD8                   8        /* bcr  [31:0]  OCR        R3  */\n+\n+/* Application commands */\n+#define SD_APP_SET_BUS_WIDTH      6        /* ac   [1:0]   bus width  R1   */\n+#define SD_APP_OP_COND           41        /* bcr  [31:0]  OCR        R1 (R4)  */\n+#define SD_APP_SEND_SCR          51        /* adtc                    R1   */\n+\n+/**\n+ * @brief MMC status in R1<br>\n+ * Type<br>\n+ *   e : error bit<br>\n+ *   s : status bit<br>\n+ *   r : detected and set for the actual command response<br>\n+ *   x : detected and set during command execution. the host must poll\n+ *       the card by sending status command in order to read these bits.\n+ * Clear condition<br>\n+ *   a : according to the card state<br>\n+ *   b : always related to the previous command. Reception of\n+ *       a valid command will clear it (with a delay of one command)<br>\n+ *   c : clear by read<br>\n+ */\n+\n+#define R1_OUT_OF_RANGE         (1UL << 31)    /* er, c */\n+#define R1_ADDRESS_ERROR        (1 << 30)  /* erx, c */\n+#define R1_BLOCK_LEN_ERROR      (1 << 29)  /* er, c */\n+#define R1_ERASE_SEQ_ERROR      (1 << 28)  /* er, c */\n+#define R1_ERASE_PARAM          (1 << 27)  /* ex, c */\n+#define R1_WP_VIOLATION         (1 << 26)  /* erx, c */\n+#define R1_CARD_IS_LOCKED       (1 << 25)  /* sx, a */\n+#define R1_LOCK_UNLOCK_FAILED   (1 << 24)  /* erx, c */\n+#define R1_COM_CRC_ERROR        (1 << 23)  /* er, b */\n+#define R1_ILLEGAL_COMMAND      (1 << 22)  /* er, b */\n+#define R1_CARD_ECC_FAILED      (1 << 21)  /* ex, c */\n+#define R1_CC_ERROR             (1 << 20)  /* erx, c */\n+#define R1_ERROR                (1 << 19)  /* erx, c */\n+#define R1_UNDERRUN             (1 << 18)  /* ex, c */\n+#define R1_OVERRUN              (1 << 17)  /* ex, c */\n+#define R1_CID_CSD_OVERWRITE    (1 << 16)  /* erx, c, CID/CSD overwrite */\n+#define R1_WP_ERASE_SKIP        (1 << 15)  /* sx, c */\n+#define R1_CARD_ECC_DISABLED    (1 << 14)  /* sx, a */\n+#define R1_ERASE_RESET          (1 << 13)  /* sr, c */\n+#define R1_STATUS(x)            (x & 0xFFFFE000)\n+#define R1_CURRENT_STATE(x)     ((x & 0x00001E00) >> 9)    /* sx, b (4 bits) */\n+#define R1_READY_FOR_DATA       (1 << 8)   /* sx, a */\n+#define R1_APP_CMD              (1 << 5)   /* sr, c */\n+\n+/**\n+ * @brief SD/MMC card OCR register bits\n+ */\n+#define OCR_ALL_READY           (1UL << 31)    /* Card Power up status bit */\n+#define OCR_HC_CCS              (1 << 30)  /* High capacity card */\n+#define OCR_VOLTAGE_RANGE_MSK   (0x00FF8000)\n+\n+#define SD_SEND_IF_ARG          0x000001AA\n+#define SD_SEND_IF_ECHO_MSK     0x000000FF\n+#define SD_SEND_IF_RESP         0x000000AA\n+\n+/**\n+ * @brief R3 response definitions\n+ */\n+#define CMDRESP_R3_OCR_VAL(n)           (((uint32_t) n) & 0xFFFFFF)\n+#define CMDRESP_R3_S18A                 (((uint32_t) 1 ) << 24)\n+#define CMDRESP_R3_HC_CCS               (((uint32_t) 1 ) << 30)\n+#define CMDRESP_R3_INIT_COMPLETE        (((uint32_t) 1 ) << 31)\n+\n+/**\n+ * @brief R6 response definitions\n+ */\n+#define CMDRESP_R6_RCA_VAL(n)           (((uint32_t) (n >> 16)) & 0xFFFF)\n+#define CMDRESP_R6_CARD_STATUS(n)       (((uint32_t) (n & 0x1FFF)) | \\\n+                                        ((n & (1 << 13)) ? (1 << 19) : 0) | \\\n+                                        ((n & (1 << 14)) ? (1 << 22) : 0) | \\\n+                                        ((n & (1 << 15)) ? (1 << 23) : 0))\n+\n+/**\n+ * @brief R7 response definitions\n+ */\n+/** Echo-back of check-pattern */\n+#define CMDRESP_R7_CHECK_PATTERN(n)     (((uint32_t) n ) & 0xFF)\n+/** Voltage accepted */\n+#define CMDRESP_R7_VOLTAGE_ACCEPTED     (((uint32_t) 1 ) << 8)\n+\n+/**\n+ * @brief CMD3 command definitions\n+ */\n+/** Card Address */\n+#define CMD3_RCA(n)         (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief CMD7 command definitions\n+ */\n+/** Card Address */\n+#define CMD7_RCA(n)         (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief CMD8 command definitions\n+ */\n+/** Check pattern */\n+#define CMD8_CHECKPATTERN(n)            (((uint32_t) (n & 0xFF) ) << 0)\n+/** Recommended pattern */\n+#define CMD8_DEF_PATTERN                    (0xAA)\n+/** Voltage supplied.*/\n+#define CMD8_VOLTAGESUPPLIED_27_36     (((uint32_t) 1 ) << 8)\n+\n+/**\n+ * @brief CMD9 command definitions\n+ */\n+#define CMD9_RCA(n)         (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief CMD13 command definitions\n+ */\n+#define CMD13_RCA(n)            (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief APP_CMD command definitions\n+ */\n+#define CMD55_RCA(n)            (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief ACMD41 command definitions\n+ */\n+#define ACMD41_OCR(n)                   (((uint32_t) n) & 0xFFFFFF)\n+#define ACMD41_S18R                     (((uint32_t) 1 ) << 24)\n+#define ACMD41_XPC                      (((uint32_t) 1 ) << 28)\n+#define ACMD41_HCS                      (((uint32_t) 1 ) << 30)\n+\n+/**\n+ * @brief ACMD6 command definitions\n+ */\n+#define ACMD6_BUS_WIDTH(n)              ((uint32_t) n & 0x03)\n+#define ACMD6_BUS_WIDTH_1               (0)\n+#define ACMD6_BUS_WIDTH_4               (2)\n+\n+/** @brief Card type defines\n+ */\n+#define CARD_TYPE_SD    (1 << 0)\n+#define CARD_TYPE_4BIT  (1 << 1)\n+#define CARD_TYPE_8BIT  (1 << 2)\n+#define CARD_TYPE_HC    (OCR_HC_CCS)/*!< high capacity card > 2GB */\n+\n+/**\n+ * @brief SD/MMC sector size in bytes\n+ */\n+#define MMC_SECTOR_SIZE     512\n+\n+/**\n+ * @brief Typical enumeration clock rate\n+ */\n+#define SD_MMC_ENUM_CLOCK       400000\n+\n+/**\n+ * @brief Max MMC clock rate\n+ */\n+#define MMC_MAX_CLOCK           20000000\n+\n+/**\n+ * @brief Type 0 MMC card max clock rate\n+ */\n+#define MMC_LOW_BUS_MAX_CLOCK   26000000\n+\n+/**\n+ * @brief Type 1 MMC card max clock rate\n+ */\n+#define MMC_HIGH_BUS_MAX_CLOCK  52000000\n+\n+/**\n+ * @brief Max SD clock rate\n+ */\n+#define SD_MAX_CLOCK            25000000\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __SDMMC_H */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/sgpio_18xx_43xx.h ./lpc_chip_43xx/inc/sgpio_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/sgpio_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sgpio_18xx_43xx.h\t2017-02-27 20:42:08.460009492 -0300\n@@ -0,0 +1,108 @@\n+/*\n+ * @brief LPC43xx Serial GPIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SGPIO_43XX_H_\n+#define __SGPIO_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SGPIO_43XX CHIP: LPC43xx Serial GPIO driver\n+ * @ingroup LPC_CHIP_18XX_43XX_Drivers\n+ * This module is present in LPC43xx MCUs only.\n+ * @{\n+ */\n+\n+#if defined(CHIP_LPC43XX)\n+\n+/**\n+ * @brief Serial GPIO register block structure\n+ */\n+typedef struct {                       /*!< SGPIO Structure        */\n+   __IO uint32_t  OUT_MUX_CFG[16];     /*!< Pin multiplexer configurationregisters. */\n+   __IO uint32_t  SGPIO_MUX_CFG[16];   /*!< SGPIO multiplexer configuration registers. */\n+   __IO uint32_t  SLICE_MUX_CFG[16];   /*!< Slice multiplexer configuration registers. */\n+   __IO uint32_t  REG[16];             /*!< Slice data registers. Eachtime COUNT0 reaches 0x0 the register shifts loading bit 31 withdata captured from DIN(n). DOUT(n) is set to REG(0) */\n+   __IO uint32_t  REG_SS[16];          /*!< Slice data shadow registers. Each time POSreaches 0x0 the contents of REG_SS is exchanged with the contentof REG */\n+   __IO uint32_t  PRESET[16];          /*!< Reload valueof COUNT0, loaded when COUNT0 reaches 0x0 */\n+   __IO uint32_t  COUNT[16];           /*!< Down counter, counts down each clock cycle. */\n+   __IO uint32_t  POS[16];             /*!< Each time COUNT0 reaches 0x0 */\n+   __IO uint32_t  MASK_A;              /*!< Mask for pattern match function of slice A */\n+   __IO uint32_t  MASK_H;              /*!< Mask for pattern match function of slice H */\n+   __IO uint32_t  MASK_I;              /*!< Mask for pattern match function of slice I */\n+   __IO uint32_t  MASK_P;              /*!< Mask for pattern match function of slice P */\n+   __I  uint32_t  GPIO_INREG;          /*!< GPIO input status register */\n+   __IO uint32_t  GPIO_OUTREG;         /*!< GPIO output control register */\n+   __IO uint32_t  GPIO_OENREG;         /*!< GPIO OE control register */\n+   __IO uint32_t  CTRL_ENABLED;        /*!< Enables the slice COUNT counter */\n+   __IO uint32_t  CTRL_DISABLED;       /*!< Disables the slice COUNT counter */\n+   __I  uint32_t  RESERVED0[823];\n+   __O  uint32_t  CLR_EN_0;            /*!< Shift clock interrupt clear mask */\n+   __O  uint32_t  SET_EN_0;            /*!< Shift clock interrupt set mask */\n+   __I  uint32_t  ENABLE_0;            /*!< Shift clock interrupt enable */\n+   __I  uint32_t  STATUS_0;            /*!< Shift clock interrupt status */\n+   __O  uint32_t  CTR_STATUS_0;        /*!< Shift clock interrupt clear status */\n+   __O  uint32_t  SET_STATUS_0;        /*!< Shift clock interrupt set status */\n+   __I  uint32_t  RESERVED1[2];\n+   __O  uint32_t  CLR_EN_1;            /*!< Capture clock interrupt clear mask */\n+   __O  uint32_t  SET_EN_1;            /*!< Capture clock interrupt set mask */\n+   __I  uint32_t  ENABLE_1;            /*!< Capture clock interrupt enable */\n+   __I  uint32_t  STATUS_1;            /*!< Capture clock interrupt status */\n+   __O  uint32_t  CTR_STATUS_1;        /*!< Capture clock interrupt clear status */\n+   __O  uint32_t  SET_STATUS_1;        /*!< Capture clock interrupt set status */\n+   __I  uint32_t  RESERVED2[2];\n+   __O  uint32_t  CLR_EN_2;            /*!< Pattern match interrupt clear mask */\n+   __O  uint32_t  SET_EN_2;            /*!< Pattern match interrupt set mask */\n+   __I  uint32_t  ENABLE_2;            /*!< Pattern match interrupt enable */\n+   __I  uint32_t  STATUS_2;            /*!< Pattern match interrupt status */\n+   __O  uint32_t  CTR_STATUS_2;        /*!< Pattern match interrupt clear status */\n+   __O  uint32_t  SET_STATUS_2;        /*!< Pattern match interrupt set status */\n+   __I  uint32_t  RESERVED3[2];\n+   __O  uint32_t  CLR_EN_3;            /*!< Input interrupt clear mask */\n+   __O  uint32_t  SET_EN_3;            /*!< Input bit match interrupt set mask */\n+   __I  uint32_t  ENABLE_3;            /*!< Input bit match interrupt enable */\n+   __I  uint32_t  STATUS_3;            /*!< Input bit match interrupt status */\n+   __O  uint32_t  CTR_STATUS_3;        /*!< Input bit match interrupt clear status */\n+   __O  uint32_t  SET_STATUS_3;        /*!< Shift clock interrupt set status */\n+} LPC_SGPIO_T;\n+\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SGPIO_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/spi_18xx_43xx.h ./lpc_chip_43xx/inc/spi_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/spi_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/spi_18xx_43xx.h\t2017-02-27 20:42:08.460009492 -0300\n@@ -0,0 +1,416 @@\n+/*\n+ * @brief LPC43xx SPI driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SPI_43XX_H_\n+#define __SPI_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SPI_43XX CHIP: LPC43xx SPI driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * This module is present in LPC43xx MCUs only.\n+ * @{\n+ */\n+#if defined(CHIP_LPC43XX)\n+\n+/**\n+ * @brief SPI register block structure\n+ */\n+typedef struct {                   /*!< SPI Structure          */\n+   __IO uint32_t  CR;              /*!< SPI Control Register. This register controls the operation of the SPI. */\n+   __I  uint32_t  SR;              /*!< SPI Status Register. This register shows the status of the SPI. */\n+   __IO uint32_t  DR;              /*!< SPI Data Register. This bi-directional register provides the transmit and receive data for the SPI. Transmit data is provided to the SPI0 by writing to this register. Data received by the SPI0 can be read from this register. */\n+   __IO uint32_t  CCR;             /*!< SPI Clock Counter Register. This register controls the frequency of a master's SCK0. */\n+   __I  uint32_t  RESERVED0[3];\n+   __IO uint32_t  INT;             /*!< SPI Interrupt Flag. This register contains the interrupt flag for the SPI interface. */\n+} LPC_SPI_T;\n+\n+/*\n+ * Macro defines for SPI Control register\n+ */\n+/* SPI CFG Register BitMask */\n+#define SPI_CR_BITMASK       ((uint32_t) 0xFFC)\n+/** Enable of controlling the number of bits per transfer  */\n+#define SPI_CR_BIT_EN         ((uint32_t) (1 << 2))\n+/** Mask of field of bit controlling */\n+#define SPI_CR_BITS_MASK      ((uint32_t) 0xF00)\n+/** Set the number of bits per a transfer */\n+#define SPI_CR_BITS(n)        ((uint32_t) ((n << 8) & 0xF00))  /* n is in range 8-16 */\n+/** SPI Clock Phase Select*/\n+#define SPI_CR_CPHA_FIRST     ((uint32_t) (0)) /*Capture data on the first edge, Change data on the following edge*/\n+#define SPI_CR_CPHA_SECOND    ((uint32_t) (1 << 3))    /*Change data on the first edge, Capture data on the following edge*/\n+/** SPI Clock Polarity Select*/\n+#define SPI_CR_CPOL_LO        ((uint32_t) (0)) /* The rest state of the clock (between frames) is low.*/\n+#define SPI_CR_CPOL_HI        ((uint32_t) (1 << 4))    /* The rest state of the clock (between frames) is high.*/\n+/** SPI Slave Mode Select */\n+#define SPI_CR_SLAVE_EN       ((uint32_t) 0)\n+/** SPI Master Mode Select */\n+#define SPI_CR_MASTER_EN      ((uint32_t) (1 << 5))\n+/** SPI MSB First mode enable */\n+#define SPI_CR_MSB_FIRST_EN   ((uint32_t) 0)   /*Data will be transmitted and received in standard order (MSB first).*/\n+/** SPI LSB First mode enable */\n+#define SPI_CR_LSB_FIRST_EN   ((uint32_t) (1 << 6))    /*Data will be transmitted and received in reverse order (LSB first).*/\n+/** SPI interrupt enable */\n+#define SPI_CR_INT_EN         ((uint32_t) (1 << 7))\n+\n+/*\n+ * Macro defines for SPI Status register\n+ */\n+/** SPI STAT Register BitMask */\n+#define SPI_SR_BITMASK        ((uint32_t) 0xF8)\n+/** Slave abort Flag */\n+#define SPI_SR_ABRT           ((uint32_t) (1 << 3))    /* When 1, this bit indicates that a slave abort has occurred. */\n+/* Mode fault Flag */\n+#define SPI_SR_MODF           ((uint32_t) (1 << 4))    /* when 1, this bit indicates that a Mode fault error has occurred. */\n+/** Read overrun flag*/\n+#define SPI_SR_ROVR           ((uint32_t) (1 << 5))    /* When 1, this bit indicates that a read overrun has occurred. */\n+/** Write collision flag. */\n+#define SPI_SR_WCOL           ((uint32_t) (1 << 6))    /* When 1, this bit indicates that a write collision has occurred.. */\n+/** SPI transfer complete flag. */\n+#define SPI_SR_SPIF           ((uint32_t) (1 << 7))        /* When 1, this bit indicates when a SPI data transfer is complete.. */\n+/** SPI error flag */\n+#define SPI_SR_ERROR          (SPI_SR_ABRT | SPI_SR_MODF | SPI_SR_ROVR | SPI_SR_WCOL)\n+/*\n+ * Macro defines for SPI Test Control Register register\n+ */\n+/*Enable SPI Test Mode */\n+#define SPI_TCR_TEST(n)       ((uint32_t) ((n & 0x3F) << 1))\n+\n+/*\n+ * Macro defines for SPI Interrupt register\n+ */\n+/** SPI interrupt flag */\n+#define SPI_INT_SPIF          ((uint32_t) (1 << 0))\n+\n+/**\n+ * Macro defines for SPI Data register\n+ */\n+/** Receiver Data  */\n+#define SPI_DR_DATA(n)        ((uint32_t) ((n) & 0xFFFF))\n+\n+/** @brief SPI Mode*/\n+typedef enum {\n+   SPI_MODE_MASTER = SPI_CR_MASTER_EN,         /* Master Mode */\n+   SPI_MODE_SLAVE = SPI_CR_SLAVE_EN,           /* Slave Mode */\n+} SPI_MODE_T;\n+\n+/** @brief SPI Clock Mode*/\n+typedef enum {\n+   SPI_CLOCK_CPHA0_CPOL0 = SPI_CR_CPOL_LO | SPI_CR_CPHA_FIRST,     /**< CPHA = 0, CPOL = 0 */\n+   SPI_CLOCK_CPHA0_CPOL1 = SPI_CR_CPOL_HI | SPI_CR_CPHA_FIRST,     /**< CPHA = 0, CPOL = 1 */\n+   SPI_CLOCK_CPHA1_CPOL0 = SPI_CR_CPOL_LO | SPI_CR_CPHA_SECOND,    /**< CPHA = 1, CPOL = 0 */\n+   SPI_CLOCK_CPHA1_CPOL1 = SPI_CR_CPOL_HI | SPI_CR_CPHA_SECOND,    /**< CPHA = 1, CPOL = 1 */\n+   SPI_CLOCK_MODE0 = SPI_CLOCK_CPHA0_CPOL0,/**< alias */\n+   SPI_CLOCK_MODE1 = SPI_CLOCK_CPHA1_CPOL0,/**< alias */\n+   SPI_CLOCK_MODE2 = SPI_CLOCK_CPHA0_CPOL1,/**< alias */\n+   SPI_CLOCK_MODE3 = SPI_CLOCK_CPHA1_CPOL1,/**< alias */\n+} SPI_CLOCK_MODE_T;\n+\n+/** @brief SPI Data Order Mode*/\n+typedef enum {\n+   SPI_DATA_MSB_FIRST = SPI_CR_MSB_FIRST_EN,           /* Standard Order */\n+   SPI_DATA_LSB_FIRST = SPI_CR_LSB_FIRST_EN,           /* Reverse Order */\n+} SPI_DATA_ORDER_T;\n+\n+/*\n+ * @brief Number of bits per frame\n+ */\n+typedef enum {\n+   SPI_BITS_8 = SPI_CR_BITS(8),        /**< 8 bits/frame */\n+   SPI_BITS_9 = SPI_CR_BITS(9),        /**< 9 bits/frame */\n+   SPI_BITS_10 = SPI_CR_BITS(10),      /**< 10 bits/frame */\n+   SPI_BITS_11 = SPI_CR_BITS(11),      /**< 11 bits/frame */\n+   SPI_BITS_12 = SPI_CR_BITS(12),      /**< 12 bits/frame */\n+   SPI_BITS_13 = SPI_CR_BITS(13),      /**< 13 bits/frame */\n+   SPI_BITS_14 = SPI_CR_BITS(14),      /**< 14 bits/frame */\n+   SPI_BITS_15 = SPI_CR_BITS(15),      /**< 15 bits/frame */\n+   SPI_BITS_16 = SPI_CR_BITS(16),      /**< 16 bits/frame */\n+} SPI_BITS_T;\n+\n+/** SPI callback function type*/\n+typedef void (*SPI_CALLBACK_T)(void);\n+/*\n+ * @brief SPI config format\n+ */\n+typedef struct {\n+   SPI_BITS_T bits;                        /*!< bits/frame */\n+   SPI_CLOCK_MODE_T clockMode; /*!< Format config: clock phase/polarity */\n+   SPI_DATA_ORDER_T dataOrder; /*!< Data order (MSB first/LSB first) */\n+} SPI_CONFIG_FORMAT_T;\n+\n+/*\n+ * @brief SPI data setup structure\n+ */\n+typedef struct {\n+   uint8_t      *pTxData;                  /*!< Pointer to transmit data */\n+   uint8_t      *pRxData;                  /*!< Pointer to receive data */\n+   uint32_t  cnt;                          /*!< Transfer counter */\n+   uint32_t  length;                       /*!< Length of transfer data */\n+   SPI_CALLBACK_T    fnBefFrame;               /*!< Function to call before sending frame */\n+   SPI_CALLBACK_T    fnAftFrame;               /*!< Function to call after sending frame */\n+   SPI_CALLBACK_T    fnBefTransfer;            /*!< Function to call before starting a transfer */\n+   SPI_CALLBACK_T    fnAftTransfer;            /*!< Function to call after a transfer complete */\n+} SPI_DATA_SETUP_T;\n+\n+/**\n+ * @brief  Get the current status of SPI controller\n+ * @return SPI controller status (Or-ed value of SPI_SR_*)\n+ */\n+STATIC INLINE uint32_t Chip_SPI_GetStatus(LPC_SPI_T *pSPI)\n+{\n+   return pSPI->SR;\n+}\n+\n+/**\n+ * @brief  Send SPI 16-bit data\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @param  data    : Transmit Data\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_SendFrame(LPC_SPI_T *pSPI, uint16_t data)\n+{\n+   pSPI->DR = SPI_DR_DATA(data);\n+}\n+\n+/**\n+ * @brief  Get received SPI data\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return receive data\n+ */\n+STATIC INLINE uint16_t Chip_SPI_ReceiveFrame(LPC_SPI_T *pSPI)\n+{\n+   return SPI_DR_DATA(pSPI->DR);\n+}\n+\n+/**\n+ * @brief  Set up output clocks per bit for SPI bus\n+ * @param  pSPI        : The base of SPI peripheral on the chip\n+ * @param  counter : the number of SPI peripheral clock cycles that make up an SPI clock\n+ * @return  Nothing\n+ * @note   The counter must be an even number greater than or equal to 8. <br>\n+ *     The SPI SCK rate = PCLK_SPI / counter.\n+ */\n+STATIC INLINE void Chip_SPI_SetClockCounter(LPC_SPI_T *pSPI, uint32_t counter)\n+{\n+   pSPI->CCR = counter;\n+}\n+\n+/**\n+ * @brief   Set up the SPI frame format\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  format          : Pointer to Frame format structure\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_SetFormat(LPC_SPI_T *pSPI, SPI_CONFIG_FORMAT_T *format)\n+{\n+   pSPI->CR = (pSPI->CR & (~0xF1C)) | SPI_CR_BIT_EN | format->bits | format->clockMode | format->dataOrder;\n+}\n+\n+/**\n+ * @brief  Get the number of bits transferred in each frame\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return  the number of bits transferred in each frame\n+ */\n+STATIC INLINE SPI_BITS_T Chip_SPI_GetDataSize(LPC_SPI_T *pSPI)\n+{\n+   return (pSPI->CR & SPI_CR_BIT_EN) ? ((SPI_BITS_T) (pSPI->CR & SPI_CR_BITS_MASK)) : SPI_BITS_8;\n+}\n+\n+/**\n+ * @brief  Get the current CPHA & CPOL setting\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return CPHA & CPOL setting\n+ */\n+STATIC INLINE SPI_CLOCK_MODE_T Chip_SPI_GetClockMode(LPC_SPI_T *pSPI)\n+{\n+   return (SPI_CLOCK_MODE_T) (pSPI->CR & (3 << 3));\n+}\n+\n+/**\n+ * @brief  Set the SPI working as master or slave mode\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return  Operating mode\n+ */\n+STATIC INLINE SPI_MODE_T Chip_SPI_GetMode(LPC_SPI_T *pSPI)\n+{\n+   return (SPI_MODE_T) (pSPI->CR & (1 << 5));\n+}\n+\n+/**\n+ * @brief   Set the SPI operating modes, master or slave\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  mode        : master mode/slave mode\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_SetMode(LPC_SPI_T *pSPI, SPI_MODE_T mode)\n+{\n+   pSPI->CR = (pSPI->CR & (~(1 << 5))) | mode;\n+}\n+\n+/**\n+ * @brief   Set the clock frequency for SPI interface\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  bitRate     : The SPI bit rate\n+ * @return Nothing\n+ */\n+void Chip_SPI_SetBitRate(LPC_SPI_T *pSPI, uint32_t bitRate);\n+\n+/**\n+ * @brief   Enable SPI interrupt\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_Int_Enable(LPC_SPI_T *pSPI)\n+{\n+   pSPI->CR |= SPI_CR_INT_EN;\n+}\n+\n+/**\n+ * @brief   Disable SPI interrupt\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_Int_Disable(LPC_SPI_T *pSPI)\n+{\n+   pSPI->CR &= ~SPI_CR_INT_EN;\n+}\n+\n+/**\n+ * @brief  Get the interrupt status\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return SPI interrupt Status (Or-ed bit value of SPI_INT_*)\n+ */\n+STATIC INLINE uint32_t Chip_SPI_Int_GetStatus(LPC_SPI_T *pSPI)\n+{\n+   return pSPI->INT;\n+}\n+\n+/**\n+ * @brief  Clear the interrupt status\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @param  mask    : SPI interrupt mask (Or-ed bit value of SPI_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_Int_ClearStatus(LPC_SPI_T *pSPI, uint32_t mask)\n+{\n+   pSPI->INT = mask;\n+}\n+\n+/**\n+ * @brief   Initialize the SPI\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SPI_Init(LPC_SPI_T *pSPI);\n+\n+/**\n+ * @brief  Deinitialise the SPI\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return Nothing\n+ * @note   The SPI controller is disabled\n+ */\n+void Chip_SPI_DeInit(LPC_SPI_T *pSPI);\n+\n+/**\n+ * @brief   Clean all data in RX FIFO of SPI\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SPI_Int_FlushData(LPC_SPI_T *pSPI);\n+\n+/**\n+ * @brief   SPI Interrupt Read/Write with 8-bit frame width\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SPI_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_SPI_Int_RWFrames8Bits(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SPI Interrupt Read/Write with 16-bit frame width\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SPI_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_SPI_Int_RWFrames16Bits(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SPI Polling Read/Write in blocking mode\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  pXfSetup        : Pointer to a SPI_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. It starts with writing phase and after that,\n+ * a reading phase is generated to read any data available in RX_FIFO. All needed information is prepared\n+ * through xf_setup param.\n+ */\n+uint32_t Chip_SPI_RWFrames_Blocking(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup);\n+\n+/**\n+ * @brief   SPI Polling Write in blocking mode\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  buffer          : Buffer address\n+ * @param  buffer_len      : Buffer length\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. First, a writing operation will send\n+ * the needed data. After that, a dummy reading operation is generated to clear data buffer\n+ */\n+uint32_t Chip_SPI_WriteFrames_Blocking(LPC_SPI_T *pSPI, uint8_t *buffer, uint32_t buffer_len);\n+\n+/**\n+ * @brief   SPI Polling Read in blocking mode\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  buffer          : Buffer address\n+ * @param  buffer_len      : The length of buffer\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. First, a dummy writing operation is generated\n+ * to clear data buffer. After that, a reading operation will receive the needed data\n+ */\n+uint32_t Chip_SPI_ReadFrames_Blocking(LPC_SPI_T *pSPI, uint8_t *buffer, uint32_t buffer_len);\n+\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SPI_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/ssp_18xx_43xx.h ./lpc_chip_43xx/inc/ssp_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/ssp_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/ssp_18xx_43xx.h\t2017-02-27 20:42:08.460009492 -0300\n@@ -0,0 +1,598 @@\n+/*\n+ * @brief LPC18xx/43xx SSP driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SSP_18XX_43XX_H_\n+#define __SSP_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SSP_18XX_43XX CHIP: LPC18xx/43xx SSP driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief SSP register block structure\n+ */\n+typedef struct {           /*!< SSPn Structure         */\n+   __IO uint32_t CR0;      /*!< Control Register 0. Selects the serial clock rate, bus type, and data size. */\n+   __IO uint32_t CR1;      /*!< Control Register 1. Selects master/slave and other modes. */\n+   __IO uint32_t DR;       /*!< Data Register. Writes fill the transmit FIFO, and reads empty the receive FIFO. */\n+   __I  uint32_t SR;       /*!< Status Register        */\n+   __IO uint32_t CPSR;     /*!< Clock Prescale Register */\n+   __IO uint32_t IMSC;     /*!< Interrupt Mask Set and Clear Register */\n+   __I  uint32_t RIS;      /*!< Raw Interrupt Status Register */\n+   __I  uint32_t MIS;      /*!< Masked Interrupt Status Register */\n+   __O  uint32_t ICR;      /*!< SSPICR Interrupt Clear Register */\n+   __IO uint32_t DMACR;    /*!< SSPn DMA control register */\n+} LPC_SSP_T;\n+\n+/**\n+ * Macro defines for CR0 register\n+ */\n+\n+/** SSP data size select, must be 4 bits to 16 bits */\n+#define SSP_CR0_DSS(n)          ((uint32_t) ((n) & 0xF))\n+/** SSP control 0 Motorola SPI mode */\n+#define SSP_CR0_FRF_SPI         ((uint32_t) (0 << 4))\n+/** SSP control 0 TI synchronous serial mode */\n+#define SSP_CR0_FRF_TI          ((uint32_t) (1 << 4))\n+/** SSP control 0 National Micro-wire mode */\n+#define SSP_CR0_FRF_MICROWIRE   ((uint32_t) (2 << 4))\n+/** SPI clock polarity bit (used in SPI mode only), (1) = maintains the\n+   bus clock high between frames, (0) = low */\n+#define SSP_CR0_CPOL_LO     ((uint32_t) (0))\n+#define SSP_CR0_CPOL_HI     ((uint32_t) (1 << 6))\n+/** SPI clock out phase bit (used in SPI mode only), (1) = captures data\n+   on the second clock transition of the frame, (0) = first */\n+#define SSP_CR0_CPHA_FIRST  ((uint32_t) (0))\n+#define SSP_CR0_CPHA_SECOND ((uint32_t) (1 << 7))\n+/** SSP serial clock rate value load macro, divider rate is\n+   PERIPH_CLK / (cpsr * (SCR + 1)) */\n+#define SSP_CR0_SCR(n)      ((uint32_t) ((n & 0xFF) << 8))\n+/** SSP CR0 bit mask */\n+#define SSP_CR0_BITMASK     ((uint32_t) (0xFFFF))\n+/** SSP CR0 bit mask */\n+#define SSP_CR0_BITMASK     ((uint32_t) (0xFFFF))\n+/** SSP serial clock rate value load macro, divider rate is\n+   PERIPH_CLK / (cpsr * (SCR + 1)) */\n+#define SSP_CR0_SCR(n)      ((uint32_t) ((n & 0xFF) << 8))\n+\n+/**\n+ * Macro defines for CR1 register\n+ */\n+\n+/** SSP control 1 loopback mode enable bit */\n+#define SSP_CR1_LBM_EN      ((uint32_t) (1 << 0))\n+/** SSP control 1 enable bit */\n+#define SSP_CR1_SSP_EN      ((uint32_t) (1 << 1))\n+/** SSP control 1 slave enable */\n+#define SSP_CR1_SLAVE_EN    ((uint32_t) (1 << 2))\n+#define SSP_CR1_MASTER_EN   ((uint32_t) (0))\n+/** SSP control 1 slave out disable bit, disables transmit line in slave\n+   mode */\n+#define SSP_CR1_SO_DISABLE  ((uint32_t) (1 << 3))\n+/** SSP CR1 bit mask */\n+#define SSP_CR1_BITMASK     ((uint32_t) (0x0F))\n+\n+/** SSP CPSR bit mask */\n+#define SSP_CPSR_BITMASK    ((uint32_t) (0xFF))\n+/**\n+ * Macro defines for DR register\n+ */\n+\n+/** SSP data bit mask */\n+#define SSP_DR_BITMASK(n)   ((n) & 0xFFFF)\n+\n+/**\n+ * Macro defines for SR register\n+ */\n+\n+/** SSP SR bit mask */\n+#define SSP_SR_BITMASK  ((uint32_t) (0x1F))\n+\n+/** ICR bit mask */\n+#define SSP_ICR_BITMASK ((uint32_t) (0x03))\n+\n+/**\n+ * @brief SSP Type of Status\n+ */\n+typedef enum _SSP_STATUS {\n+   SSP_STAT_TFE = ((uint32_t)(1 << 0)),/**< TX FIFO Empty */\n+   SSP_STAT_TNF = ((uint32_t)(1 << 1)),/**< TX FIFO not full */\n+   SSP_STAT_RNE = ((uint32_t)(1 << 2)),/**< RX FIFO not empty */\n+   SSP_STAT_RFF = ((uint32_t)(1 << 3)),/**< RX FIFO full */\n+   SSP_STAT_BSY = ((uint32_t)(1 << 4)),/**< SSP Busy */\n+} SSP_STATUS_T;\n+\n+/**\n+ * @brief SSP Type of Interrupt Mask\n+ */\n+typedef enum _SSP_INTMASK {\n+   SSP_RORIM = ((uint32_t)(1 << 0)),   /**< Overun */\n+   SSP_RTIM = ((uint32_t)(1 << 1)),/**< TimeOut */\n+   SSP_RXIM = ((uint32_t)(1 << 2)),/**< Rx FIFO is at least half full */\n+   SSP_TXIM = ((uint32_t)(1 << 3)),/**< Tx FIFO is at least half empty */\n+   SSP_INT_MASK_BITMASK = ((uint32_t)(0xF)),\n+} SSP_INTMASK_T;\n+\n+/**\n+ * @brief SSP Type of Mask Interrupt Status\n+ */\n+typedef enum _SSP_MASKINTSTATUS {\n+   SSP_RORMIS = ((uint32_t)(1 << 0)),  /**< Overun */\n+   SSP_RTMIS = ((uint32_t)(1 << 1)),   /**< TimeOut */\n+   SSP_RXMIS = ((uint32_t)(1 << 2)),   /**< Rx FIFO is at least half full */\n+   SSP_TXMIS = ((uint32_t)(1 << 3)),   /**< Tx FIFO is at least half empty */\n+   SSP_MASK_INT_STAT_BITMASK = ((uint32_t)(0xF)),\n+} SSP_MASKINTSTATUS_T;\n+\n+/**\n+ * @brief SSP Type of Raw Interrupt Status\n+ */\n+typedef enum _SSP_RAWINTSTATUS {\n+   SSP_RORRIS = ((uint32_t)(1 << 0)),  /**< Overun */\n+   SSP_RTRIS = ((uint32_t)(1 << 1)),   /**< TimeOut */\n+   SSP_RXRIS = ((uint32_t)(1 << 2)),   /**< Rx FIFO is at least half full */\n+   SSP_TXRIS = ((uint32_t)(1 << 3)),   /**< Tx FIFO is at least half empty */\n+   SSP_RAW_INT_STAT_BITMASK = ((uint32_t)(0xF)),\n+} SSP_RAWINTSTATUS_T;\n+\n+typedef enum _SSP_INTCLEAR {\n+   SSP_RORIC = 0x0,\n+   SSP_RTIC = 0x1,\n+   SSP_INT_CLEAR_BITMASK = 0x3,\n+} SSP_INTCLEAR_T;\n+\n+typedef enum _SSP_DMA {\n+   SSP_DMA_RX = (1u),  /**< DMA RX Enable */\n+   SSP_DMA_TX = (1u << 1), /**< DMA TX Enable */\n+   SSP_DMA_BITMASK = ((uint32_t)(0x3)),\n+} SSP_DMA_T;\n+\n+/*\n+ * @brief SSP clock format\n+ */\n+typedef enum CHIP_SSP_CLOCK_FORMAT {\n+   SSP_CLOCK_CPHA0_CPOL0 = (0 << 6),       /**< CPHA = 0, CPOL = 0 */\n+   SSP_CLOCK_CPHA0_CPOL1 = (1u << 6),      /**< CPHA = 0, CPOL = 1 */\n+   SSP_CLOCK_CPHA1_CPOL0 = (2u << 6),      /**< CPHA = 1, CPOL = 0 */\n+   SSP_CLOCK_CPHA1_CPOL1 = (3u << 6),      /**< CPHA = 1, CPOL = 1 */\n+   SSP_CLOCK_MODE0 = SSP_CLOCK_CPHA0_CPOL0,/**< alias */\n+   SSP_CLOCK_MODE1 = SSP_CLOCK_CPHA1_CPOL0,/**< alias */\n+   SSP_CLOCK_MODE2 = SSP_CLOCK_CPHA0_CPOL1,/**< alias */\n+   SSP_CLOCK_MODE3 = SSP_CLOCK_CPHA1_CPOL1,/**< alias */\n+} CHIP_SSP_CLOCK_MODE_T;\n+\n+/*\n+ * @brief SSP frame format\n+ */\n+typedef enum CHIP_SSP_FRAME_FORMAT {\n+   SSP_FRAMEFORMAT_SPI = (0 << 4),         /**< Frame format: SPI */\n+   CHIP_SSP_FRAME_FORMAT_TI = (1u << 4),           /**< Frame format: TI SSI */\n+   SSP_FRAMEFORMAT_MICROWIRE = (2u << 4),  /**< Frame format: Microwire */\n+} CHIP_SSP_FRAME_FORMAT_T;\n+\n+/*\n+ * @brief Number of bits per frame\n+ */\n+typedef enum CHIP_SSP_BITS {\n+   SSP_BITS_4 = (3u << 0),     /*!< 4 bits/frame */\n+   SSP_BITS_5 = (4u << 0),     /*!< 5 bits/frame */\n+   SSP_BITS_6 = (5u << 0),     /*!< 6 bits/frame */\n+   SSP_BITS_7 = (6u << 0),     /*!< 7 bits/frame */\n+   SSP_BITS_8 = (7u << 0),     /*!< 8 bits/frame */\n+   SSP_BITS_9 = (8u << 0),     /*!< 9 bits/frame */\n+   SSP_BITS_10 = (9u << 0),    /*!< 10 bits/frame */\n+   SSP_BITS_11 = (10u << 0),   /*!< 11 bits/frame */\n+   SSP_BITS_12 = (11u << 0),   /*!< 12 bits/frame */\n+   SSP_BITS_13 = (12u << 0),   /*!< 13 bits/frame */\n+   SSP_BITS_14 = (13u << 0),   /*!< 14 bits/frame */\n+   SSP_BITS_15 = (14u << 0),   /*!< 15 bits/frame */\n+   SSP_BITS_16 = (15u << 0),   /*!< 16 bits/frame */\n+} CHIP_SSP_BITS_T;\n+\n+/*\n+ * @brief SSP config format\n+ */\n+typedef struct SSP_ConfigFormat {\n+   CHIP_SSP_BITS_T bits;                   /*!< Format config: bits/frame */\n+   CHIP_SSP_CLOCK_MODE_T clockMode;    /*!< Format config: clock phase/polarity */\n+   CHIP_SSP_FRAME_FORMAT_T frameFormat;    /*!< Format config: SPI/TI/Microwire */\n+} SSP_ConfigFormat;\n+\n+/**\n+ * @brief  Enable SSP operation\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Enable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->CR1 |= SSP_CR1_SSP_EN;\n+}\n+\n+/**\n+ * @brief  Disable SSP operation\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Disable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->CR1 &= (~SSP_CR1_SSP_EN) & SSP_CR1_BITMASK;\n+}\n+\n+/**\n+ * @brief  Enable loopback mode\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ * @note   Serial input is taken from the serial output (MOSI or MISO) rather\n+ * than the serial input pin\n+ */\n+STATIC INLINE void Chip_SSP_EnableLoopBack(LPC_SSP_T *pSSP)\n+{\n+   pSSP->CR1 |= SSP_CR1_LBM_EN;\n+}\n+\n+/**\n+ * @brief  Disable loopback mode\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ * @note   Serial input is taken from the serial output (MOSI or MISO) rather\n+ * than the serial input pin\n+ */\n+STATIC INLINE void Chip_SSP_DisableLoopBack(LPC_SSP_T *pSSP)\n+{\n+   pSSP->CR1 &= (~SSP_CR1_LBM_EN) & SSP_CR1_BITMASK;\n+}\n+\n+/**\n+ * @brief  Get the current status of SSP controller\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  Stat    : Type of status, should be :\n+ *                     - SSP_STAT_TFE\n+ *                     - SSP_STAT_TNF\n+ *                     - SSP_STAT_RNE\n+ *                     - SSP_STAT_RFF\n+ *                     - SSP_STAT_BSY\n+ * @return  SSP controller status, SET or RESET\n+ */\n+STATIC INLINE FlagStatus Chip_SSP_GetStatus(LPC_SSP_T *pSSP, SSP_STATUS_T Stat)\n+{\n+   return (pSSP->SR & Stat) ? SET : RESET;\n+}\n+\n+/**\n+ * @brief  Get the masked interrupt status\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  SSP Masked Interrupt Status Register value\n+ * @note   The return value contains a 1 for each interrupt condition that is asserted and enabled (masked)\n+ */\n+STATIC INLINE uint32_t Chip_SSP_GetIntStatus(LPC_SSP_T *pSSP)\n+{\n+   return pSSP->MIS;\n+}\n+\n+/**\n+ * @brief  Get the raw interrupt status\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  RawInt  : Interrupt condition to be get status, shoud be :\n+ *                     - SSP_RORRIS\n+ *                     - SSP_RTRIS\n+ *                     - SSP_RXRIS\n+ *                     - SSP_TXRIS\n+ * @return  Raw interrupt status corresponding to interrupt condition , SET or RESET\n+ * @note   Get the status of each interrupt condition ,regardless of whether or not the interrupt is enabled\n+ */\n+STATIC INLINE IntStatus Chip_SSP_GetRawIntStatus(LPC_SSP_T *pSSP, SSP_RAWINTSTATUS_T RawInt)\n+{\n+   return (pSSP->RIS & RawInt) ? SET : RESET;\n+}\n+\n+/**\n+ * @brief  Get the number of bits transferred in each frame\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  the number of bits transferred in each frame minus one\n+ * @note   The return value is 0x03 -> 0xF corresponding to 4bit -> 16bit transfer\n+ */\n+STATIC INLINE uint8_t Chip_SSP_GetDataSize(LPC_SSP_T *pSSP)\n+{\n+   return SSP_CR0_DSS(pSSP->CR0);\n+}\n+\n+/**\n+ * @brief  Clear the corresponding interrupt condition(s) in the SSP controller\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  IntClear: Type of cleared interrupt, should be :\n+ *                     - SSP_RORIC\n+ *                     - SSP_RTIC\n+ * @return  Nothing\n+ * @note   Software can clear one or more interrupt condition(s) in the SSP controller\n+ */\n+STATIC INLINE void Chip_SSP_ClearIntPending(LPC_SSP_T *pSSP, SSP_INTCLEAR_T IntClear)\n+{\n+   pSSP->ICR = IntClear;\n+}\n+\n+/**\n+ * @brief  Enable interrupt for the SSP\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Int_Enable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->IMSC |= SSP_TXIM;\n+}\n+\n+/**\n+ * @brief  Disable interrupt for the SSP\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Int_Disable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->IMSC &= (~SSP_TXIM);\n+}\n+\n+/**\n+ * @brief  Get received SSP data\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  SSP 16-bit data received\n+ */\n+STATIC INLINE uint16_t Chip_SSP_ReceiveFrame(LPC_SSP_T *pSSP)\n+{\n+   return (uint16_t) (SSP_DR_BITMASK(pSSP->DR));\n+}\n+\n+/**\n+ * @brief  Send SSP 16-bit data\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  tx_data : SSP 16-bit data to be transmited\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_SendFrame(LPC_SSP_T *pSSP, uint16_t tx_data)\n+{\n+   pSSP->DR = SSP_DR_BITMASK(tx_data);\n+}\n+\n+/**\n+ * @brief  Set up output clocks per bit for SSP bus\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @param  clk_rate    fs: The number of prescaler-output clocks per bit on the bus, minus one\n+ * @param  prescale    : The factor by which the Prescaler divides the SSP peripheral clock PCLK\n+ * @return  Nothing\n+ * @note   The bit frequency is PCLK / (prescale x[clk_rate+1])\n+ */\n+void Chip_SSP_SetClockRate(LPC_SSP_T *pSSP, uint32_t clk_rate, uint32_t prescale);\n+\n+/**\n+ * @brief  Set up the SSP frame format\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @param  bits        : The number of bits transferred in each frame, should be SSP_BITS_4 to SSP_BITS_16\n+ * @param  frameFormat : Frame format, should be :\n+ *                         - SSP_FRAMEFORMAT_SPI\n+ *                         - SSP_FRAME_FORMAT_TI\n+ *                         - SSP_FRAMEFORMAT_MICROWIRE\n+ * @param  clockMode   : Select Clock polarity and Clock phase, should be :\n+ *                         - SSP_CLOCK_CPHA0_CPOL0\n+ *                         - SSP_CLOCK_CPHA0_CPOL1\n+ *                         - SSP_CLOCK_CPHA1_CPOL0\n+ *                         - SSP_CLOCK_CPHA1_CPOL1\n+ * @return  Nothing\n+ * @note   Note: The clockFormat is only used in SPI mode\n+ */\n+STATIC INLINE void Chip_SSP_SetFormat(LPC_SSP_T *pSSP, uint32_t bits, uint32_t frameFormat, uint32_t clockMode)\n+{\n+   pSSP->CR0 = (pSSP->CR0 & ~0xFF) | bits | frameFormat | clockMode;\n+}\n+\n+/**\n+ * @brief  Set the SSP working as master or slave mode\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  mode    : Operating mode, should be\n+ *                     - SSP_MODE_MASTER\n+ *                     - SSP_MODE_SLAVE\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Set_Mode(LPC_SSP_T *pSSP, uint32_t mode)\n+{\n+   pSSP->CR1 = (pSSP->CR1 & ~(1 << 2)) | mode;\n+}\n+\n+/**\n+ * @brief  Enable DMA for SSP\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_DMA_Enable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->DMACR |= SSP_DMA_BITMASK;\n+}\n+\n+/**\n+ * @brief  Disable DMA for SSP\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_DMA_Disable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->DMACR &= ~SSP_DMA_BITMASK;\n+}\n+\n+/*\n+ * @brief SSP mode\n+ */\n+typedef enum CHIP_SSP_MODE {\n+   SSP_MODE_MASTER = (0 << 2), /**< Master mode */\n+   SSP_MODE_SLAVE = (1u << 2), /**< Slave mode */\n+} CHIP_SSP_MODE_T;\n+\n+/*\n+ * @brief SPI address\n+ */\n+typedef struct {\n+   uint8_t port;   /*!< Port Number */\n+   uint8_t pin;    /*!< Pin number */\n+} SPI_Address_t;\n+\n+/*\n+ * @brief SSP data setup structure\n+ */\n+typedef struct {\n+   void      *tx_data; /*!< Pointer to transmit data */\n+   uint32_t  tx_cnt;   /*!< Transmit counter */\n+   void      *rx_data; /*!< Pointer to transmit data */\n+   uint32_t  rx_cnt;   /*!< Receive counter */\n+   uint32_t  length;   /*!< Length of transfer data */\n+} Chip_SSP_DATA_SETUP_T;\n+\n+/** SSP configuration parameter defines */\n+/** Clock phase control bit */\n+#define SSP_CPHA_FIRST          SSP_CR0_CPHA_FIRST\n+#define SSP_CPHA_SECOND         SSP_CR0_CPHA_SECOND\n+\n+/** Clock polarity control bit */\n+/* There's no bug here!!!\n+ * - If bit[6] in SSPnCR0 is 0: SSP controller maintains the bus clock low between frames.\n+ * That means the active clock is in HI state.\n+ * - If bit[6] in SSPnCR0 is 1 (SSP_CR0_CPOL_HI): SSP controller maintains the bus clock\n+ * high between frames. That means the active clock is in LO state.\n+ */\n+#define SSP_CPOL_HI             SSP_CR0_CPOL_LO\n+#define SSP_CPOL_LO             SSP_CR0_CPOL_HI\n+\n+/** SSP master mode enable */\n+#define SSP_SLAVE_MODE          SSP_CR1_SLAVE_EN\n+#define SSP_MASTER_MODE         SSP_CR1_MASTER_EN\n+\n+/**\n+ * @brief   Clean all data in RX FIFO of SSP\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SSP_Int_FlushData(LPC_SSP_T *pSSP);\n+\n+/**\n+ * @brief   SSP Interrupt Read/Write with 8-bit frame width\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SSP_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_SSP_Int_RWFrames8Bits(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SSP Interrupt Read/Write with 16-bit frame width\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SSP_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_SSP_Int_RWFrames16Bits(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SSP Polling Read/Write in blocking mode\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SSP_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. It starts with writing phase and after that,\n+ * a reading phase is generated to read any data available in RX_FIFO. All needed information is prepared\n+ * through xf_setup param.\n+ */\n+uint32_t Chip_SSP_RWFrames_Blocking(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SSP Polling Write in blocking mode\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  buffer          : Buffer address\n+ * @param  buffer_len      : Buffer length\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. First, a writing operation will send\n+ * the needed data. After that, a dummy reading operation is generated to clear data buffer\n+ */\n+uint32_t Chip_SSP_WriteFrames_Blocking(LPC_SSP_T *pSSP, const uint8_t *buffer, uint32_t buffer_len);\n+\n+/**\n+ * @brief   SSP Polling Read in blocking mode\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  buffer          : Buffer address\n+ * @param  buffer_len      : The length of buffer\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. First, a dummy writing operation is generated\n+ * to clear data buffer. After that, a reading operation will receive the needed data\n+ */\n+uint32_t Chip_SSP_ReadFrames_Blocking(LPC_SSP_T *pSSP, uint8_t *buffer, uint32_t buffer_len);\n+\n+/**\n+ * @brief   Initialize the SSP\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SSP_Init(LPC_SSP_T *pSSP);\n+\n+/**\n+ * @brief  Deinitialise the SSP\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return Nothing\n+ * @note   The SSP controller is disabled\n+ */\n+void Chip_SSP_DeInit(LPC_SSP_T *pSSP);\n+\n+/**\n+ * @brief   Set the SSP operating modes, master or slave\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  master          : 1 to set master, 0 to set slave\n+ * @return Nothing\n+ */\n+void Chip_SSP_SetMaster(LPC_SSP_T *pSSP, bool master);\n+\n+/**\n+ * @brief   Set the clock frequency for SSP interface\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  bitRate     : The SSP bit rate\n+ * @return Nothing\n+ */\n+void Chip_SSP_SetBitRate(LPC_SSP_T *pSSP, uint32_t bitRate);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SSP_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/stopwatch.h ./lpc_chip_43xx/inc/stopwatch.h\n--- a_8FkA5l/lpc_chip_43xx/inc/stopwatch.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/stopwatch.h\t2017-02-27 20:42:08.460009492 -0300\n@@ -0,0 +1,137 @@\n+/*\n+ * @brief Common stopwatch support\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __STOPWATCH_H_\n+#define __STOPWATCH_H_\n+\n+#include \"cmsis.h\"\n+\n+/** @defgroup Stop_Watch CHIP: Stopwatch primitives.\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Initialize stopwatch\n+ * @return Nothing\n+ */\n+void StopWatch_Init(void);\n+\n+/**\n+ * @brief  Start a stopwatch\n+ * @return Current cycle count\n+ */\n+uint32_t StopWatch_Start(void);\n+\n+/**\n+ * @brief      Returns number of ticks elapsed since stopwatch was started\n+ * @param      startTime   : Time returned by StopWatch_Start().\n+ * @return     Number of ticks elapsed since stopwatch was started\n+ */\n+STATIC INLINE uint32_t StopWatch_Elapsed(uint32_t startTime)\n+{\n+   return StopWatch_Start() - startTime;\n+}\n+\n+/**\n+ * @brief  Returns number of ticks per second of the stopwatch timer\n+ * @return Number of ticks per second of the stopwatch timer\n+ */\n+uint32_t StopWatch_TicksPerSecond(void);\n+\n+/**\n+ * @brief  Converts from stopwatch ticks to mS.\n+ * @param  ticks   : Duration in ticks to convert to mS.\n+ * @return Number of mS in given number of ticks\n+ */\n+uint32_t StopWatch_TicksToMs(uint32_t ticks);\n+\n+/**\n+ * @brief  Converts from stopwatch ticks to uS.\n+ * @param  ticks   : Duration in ticks to convert to uS.\n+ * @return Number of uS in given number of ticks\n+ */\n+uint32_t StopWatch_TicksToUs(uint32_t ticks);\n+\n+/**\n+ * @brief  Converts from mS to stopwatch ticks.\n+ * @param  mS  : Duration in mS to convert to ticks.\n+ * @return Number of ticks in given number of mS\n+ */\n+uint32_t StopWatch_MsToTicks(uint32_t mS);\n+\n+/**\n+ * @brief  Converts from uS to stopwatch ticks.\n+ * @param  uS  : Duration in uS to convert to ticks.\n+ * @return Number of ticks in given number of uS\n+ */\n+uint32_t StopWatch_UsToTicks(uint32_t uS);\n+\n+/**\n+ * @brief  Delays the given number of ticks using stopwatch primitives\n+ * @param  ticks   : Number of ticks to delay\n+ * @return Nothing\n+ */\n+STATIC INLINE void StopWatch_DelayTicks(uint32_t ticks)\n+{\n+   uint32_t startTime = StopWatch_Start();\n+   while (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @brief  Delays the given number of mS using stopwatch primitives\n+ * @param  mS  : Number of mS to delay\n+ * @return Nothing\n+ */\n+STATIC INLINE void StopWatch_DelayMs(uint32_t mS)\n+{\n+   uint32_t ticks = StopWatch_MsToTicks(mS);\n+   uint32_t startTime = StopWatch_Start();\n+   while (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @brief  Delays the given number of uS using stopwatch primitives\n+ * @param  uS  : Number of uS to delay\n+ * @return Nothing\n+ */\n+STATIC INLINE void StopWatch_DelayUs(uint32_t uS)\n+{\n+   uint32_t ticks = StopWatch_UsToTicks(uS);\n+   uint32_t startTime = StopWatch_Start();\n+   while (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __STOPWATCH_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/sys_config.h ./lpc_chip_43xx/inc/sys_config.h\n--- a_8FkA5l/lpc_chip_43xx/inc/sys_config.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sys_config.h\t2017-02-27 20:42:08.460009492 -0300\n@@ -0,0 +1,36 @@\n+/*\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SYS_CONFIG_H_\n+#define __SYS_CONFIG_H_\n+\n+/* LPC43xx chip family */\n+#define CHIP_LPC43XX\n+\n+#endif /* __SYS_CONFIG_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/timer_18xx_43xx.h ./lpc_chip_43xx/inc/timer_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/timer_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/timer_18xx_43xx.h\t2017-02-27 20:42:08.460009492 -0300\n@@ -0,0 +1,445 @@\n+/*\n+ * @brief LPC18xx/43xx 16/32-bit Timer/PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __TIMER_18XX_43XX_H_\n+#define __TIMER_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup TIMER_18XX_43XX CHIP: LPC18xx/43xx 16/32-bit Timer driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief 32-bit Standard timer register block structure\n+ */\n+typedef struct {                   /*!< TIMERn Structure       */\n+   __IO uint32_t IR;               /*!< Interrupt Register. The IR can be written to clear interrupts. The IR can be read to identify which of eight possible interrupt sources are pending. */\n+   __IO uint32_t TCR;              /*!< Timer Control Register. The TCR is used to control the Timer Counter functions. The Timer Counter can be disabled or reset through the TCR. */\n+   __IO uint32_t TC;               /*!< Timer Counter. The 32 bit TC is incremented every PR+1 cycles of PCLK. The TC is controlled through the TCR. */\n+   __IO uint32_t PR;               /*!< Prescale Register. The Prescale Counter (below) is equal to this value, the next clock increments the TC and clears the PC. */\n+   __IO uint32_t PC;               /*!< Prescale Counter. The 32 bit PC is a counter which is incremented to the value stored in PR. When the value in PR is reached, the TC is incremented and the PC is cleared. The PC is observable and controllable through the bus interface. */\n+   __IO uint32_t MCR;              /*!< Match Control Register. The MCR is used to control if an interrupt is generated and if the TC is reset when a Match occurs. */\n+   __IO uint32_t MR[4];            /*!< Match Register. MR can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR matches the TC. */\n+   __IO uint32_t CCR;              /*!< Capture Control Register. The CCR controls which edges of the capture inputs are used to load the Capture Registers and whether or not an interrupt is generated when a capture takes place. */\n+   __IO uint32_t CR[4];            /*!< Capture Register. CR is loaded with the value of TC when there is an event on the CAPn.0 input. */\n+   __IO uint32_t EMR;              /*!< External Match Register. The EMR controls the external match pins MATn.0-3 (MAT0.0-3 and MAT1.0-3 respectively). */\n+   __I  uint32_t RESERVED0[12];\n+   __IO uint32_t CTCR;             /*!< Count Control Register. The CTCR selects between Timer and Counter mode, and in Counter mode selects the signal and edge(s) for counting. */\n+} LPC_TIMER_T;\n+\n+/** Macro to clear interrupt pending */\n+#define TIMER_IR_CLR(n)         _BIT(n)\n+\n+/** Macro for getting a timer match interrupt bit */\n+#define TIMER_MATCH_INT(n)      (_BIT((n) & 0x0F))\n+/** Macro for getting a capture event interrupt bit */\n+#define TIMER_CAP_INT(n)        (_BIT((((n) & 0x0F) + 4)))\n+\n+/** Timer/counter enable bit */\n+#define TIMER_ENABLE            ((uint32_t) (1 << 0))\n+/** Timer/counter reset bit */\n+#define TIMER_RESET             ((uint32_t) (1 << 1))\n+\n+/** Bit location for interrupt on MRx match, n = 0 to 3 */\n+#define TIMER_INT_ON_MATCH(n)   (_BIT(((n) * 3)))\n+/** Bit location for reset on MRx match, n = 0 to 3 */\n+#define TIMER_RESET_ON_MATCH(n) (_BIT((((n) * 3) + 1)))\n+/** Bit location for stop on MRx match, n = 0 to 3 */\n+#define TIMER_STOP_ON_MATCH(n)  (_BIT((((n) * 3) + 2)))\n+\n+/** Bit location for CAP.n on CRx rising edge, n = 0 to 3 */\n+#define TIMER_CAP_RISING(n)     (_BIT(((n) * 3)))\n+/** Bit location for CAP.n on CRx falling edge, n = 0 to 3 */\n+#define TIMER_CAP_FALLING(n)    (_BIT((((n) * 3) + 1)))\n+/** Bit location for CAP.n on CRx interrupt enable, n = 0 to 3 */\n+#define TIMER_INT_ON_CAP(n)     (_BIT((((n) * 3) + 2)))\n+\n+/**\n+ * @brief  Initialize a timer\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ */\n+void Chip_TIMER_Init(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief  Shutdown a timer\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ */\n+void Chip_TIMER_DeInit(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief  Determine if a match interrupt is pending\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match interrupt number to check\n+ * @return false if the interrupt is not pending, otherwise true\n+ * @note   Determine if the match interrupt for the passed timer and match\n+ * counter is pending.\n+ */\n+STATIC INLINE bool Chip_TIMER_MatchPending(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   return (bool) ((pTMR->IR & TIMER_MATCH_INT(matchnum)) != 0);\n+}\n+\n+/**\n+ * @brief  Determine if a capture interrupt is pending\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture interrupt number to check\n+ * @return false if the interrupt is not pending, otherwise true\n+ * @note   Determine if the capture interrupt for the passed capture pin is\n+ * pending.\n+ */\n+STATIC INLINE bool Chip_TIMER_CapturePending(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   return (bool) ((pTMR->IR & TIMER_CAP_INT(capnum)) != 0);\n+}\n+\n+/**\n+ * @brief  Clears a (pending) match interrupt\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match interrupt number to clear\n+ * @return Nothing\n+ * @note   Clears a pending timer match interrupt.\n+ */\n+STATIC INLINE void Chip_TIMER_ClearMatch(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->IR = TIMER_IR_CLR(matchnum);\n+}\n+\n+/**\n+ * @brief  Clears a (pending) capture interrupt\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture interrupt number to clear\n+ * @return Nothing\n+ * @note   Clears a pending timer capture interrupt.\n+ */\n+STATIC INLINE void Chip_TIMER_ClearCapture(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->IR = (0x10 << capnum);\n+}\n+\n+/**\n+ * @brief  Enables the timer (starts count)\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ * @note   Enables the timer to start counting.\n+ */\n+STATIC INLINE void Chip_TIMER_Enable(LPC_TIMER_T *pTMR)\n+{\n+   pTMR->TCR |= TIMER_ENABLE;\n+}\n+\n+/**\n+ * @brief  Disables the timer (stops count)\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ * @note   Disables the timer to stop counting.\n+ */\n+STATIC INLINE void Chip_TIMER_Disable(LPC_TIMER_T *pTMR)\n+{\n+   pTMR->TCR &= ~TIMER_ENABLE;\n+}\n+\n+/**\n+ * @brief  Returns the current timer count\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Current timer terminal count value\n+ * @note   Returns the current timer terminal count.\n+ */\n+STATIC INLINE uint32_t Chip_TIMER_ReadCount(LPC_TIMER_T *pTMR)\n+{\n+   return pTMR->TC;\n+}\n+\n+/**\n+ * @brief  Returns the current prescale count\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Current timer prescale count value\n+ * @note   Returns the current prescale count.\n+ */\n+STATIC INLINE uint32_t Chip_TIMER_ReadPrescale(LPC_TIMER_T *pTMR)\n+{\n+   return pTMR->PC;\n+}\n+\n+/**\n+ * @brief  Sets the prescaler value\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  prescale    : Prescale value to set the prescale register to\n+ * @return Nothing\n+ * @note   Sets the prescale count value.\n+ */\n+STATIC INLINE void Chip_TIMER_PrescaleSet(LPC_TIMER_T *pTMR, uint32_t prescale)\n+{\n+   pTMR->PR = prescale;\n+}\n+\n+/**\n+ * @brief  Sets a timer match value\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer to set match count for\n+ * @param  matchval    : Match value for the selected match count\n+ * @return Nothing\n+ * @note   Sets one of the timer match values.\n+ */\n+STATIC INLINE void Chip_TIMER_SetMatch(LPC_TIMER_T *pTMR, int8_t matchnum, uint32_t matchval)\n+{\n+   pTMR->MR[matchnum] = matchval;\n+}\n+\n+/**\n+ * @brief  Reads a capture register\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture register to read\n+ * @return The selected capture register value\n+ * @note   Returns the selected capture register value.\n+ */\n+STATIC INLINE uint32_t Chip_TIMER_ReadCapture(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   return pTMR->CR[capnum];\n+}\n+\n+/**\n+ * @brief  Resets the timer terminal and prescale counts to 0\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ */\n+void Chip_TIMER_Reset(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief  Enables a match interrupt that fires when the terminal count\n+ *         matches the match counter value.\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_MatchEnableInt(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR |= TIMER_INT_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  Disables a match interrupt for a match counter.\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_MatchDisableInt(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR &= ~TIMER_INT_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  For the specific match counter, enables reset of the terminal count register when a match occurs\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_ResetOnMatchEnable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR |= TIMER_RESET_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  For the specific match counter, disables reset of the terminal count register when a match occurs\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_ResetOnMatchDisable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR &= ~TIMER_RESET_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  Enable a match timer to stop the terminal count when a\n+ *         match count equals the terminal count.\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_StopOnMatchEnable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR |= TIMER_STOP_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  Disable stop on match for a match timer. Disables a match timer\n+ *         to stop the terminal count when a match count equals the terminal count.\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_StopOnMatchDisable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR &= ~TIMER_STOP_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  Enables capture on on rising edge of selected CAP signal for the\n+ *         selected capture register, enables the selected CAPn.capnum signal to load\n+ *         the capture register with the terminal coount on a rising edge.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureRisingEdgeEnable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR |= TIMER_CAP_RISING(capnum);\n+}\n+\n+/**\n+ * @brief  Disables capture on on rising edge of selected CAP signal. For the\n+ *         selected capture register, disables the selected CAPn.capnum signal to load\n+ *         the capture register with the terminal coount on a rising edge.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureRisingEdgeDisable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR &= ~TIMER_CAP_RISING(capnum);\n+}\n+\n+/**\n+ * @brief  Enables capture on on falling edge of selected CAP signal. For the\n+ *         selected capture register, enables the selected CAPn.capnum signal to load\n+ *         the capture register with the terminal coount on a falling edge.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureFallingEdgeEnable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR |= TIMER_CAP_FALLING(capnum);\n+}\n+\n+/**\n+ * @brief  Disables capture on on falling edge of selected CAP signal. For the\n+ *         selected capture register, disables the selected CAPn.capnum signal to load\n+ *         the capture register with the terminal coount on a falling edge.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureFallingEdgeDisable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR &= ~TIMER_CAP_FALLING(capnum);\n+}\n+\n+/**\n+ * @brief  Enables interrupt on capture of selected CAP signal. For the\n+ *         selected capture register, an interrupt will be generated when the enabled\n+ *         rising or falling edge on CAPn.capnum is detected.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureEnableInt(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR |= TIMER_INT_ON_CAP(capnum);\n+}\n+\n+/**\n+ * @brief  Disables interrupt on capture of selected CAP signal\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureDisableInt(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR &= ~TIMER_INT_ON_CAP(capnum);\n+}\n+\n+/**\n+ * @brief Standard timer initial match pin state and change state\n+ */\n+typedef enum IP_TIMER_PIN_MATCH_STATE {\n+   TIMER_EXTMATCH_DO_NOTHING = 0,  /*!< Timer match state does nothing on match pin */\n+   TIMER_EXTMATCH_CLEAR      = 1,  /*!< Timer match state sets match pin low */\n+   TIMER_EXTMATCH_SET        = 2,  /*!< Timer match state sets match pin high */\n+   TIMER_EXTMATCH_TOGGLE     = 3   /*!< Timer match state toggles match pin */\n+} TIMER_PIN_MATCH_STATE_T;\n+\n+/**\n+ * @brief  Sets external match control (MATn.matchnum) pin control. For the pin\n+ *          selected with matchnum, sets the function of the pin that occurs on\n+ *          a terminal count match for the match count.\n+ * @param  pTMR            : Pointer to timer IP register address\n+ * @param  initial_state   : Initial state of the pin, high(1) or low(0)\n+ * @param  matchState      : Selects the match state for the pin\n+ * @param  matchnum        : MATn.matchnum signal to use\n+ * @return Nothing\n+ * @note   For the pin selected with matchnum, sets the function of the pin that occurs on\n+ * a terminal count match for the match count.\n+ */\n+void Chip_TIMER_ExtMatchControlSet(LPC_TIMER_T *pTMR, int8_t initial_state,\n+                                                TIMER_PIN_MATCH_STATE_T matchState, int8_t matchnum);\n+\n+/**\n+ * @brief Standard timer clock and edge for count source\n+ */\n+typedef enum IP_TIMER_CAP_SRC_STATE {\n+   TIMER_CAPSRC_RISING_PCLK  = 0,  /*!< Timer ticks on PCLK rising edge */\n+   TIMER_CAPSRC_RISING_CAPN  = 1,  /*!< Timer ticks on CAPn.x rising edge */\n+   TIMER_CAPSRC_FALLING_CAPN = 2,  /*!< Timer ticks on CAPn.x falling edge */\n+   TIMER_CAPSRC_BOTH_CAPN    = 3   /*!< Timer ticks on CAPn.x both edges */\n+} TIMER_CAP_SRC_STATE_T;\n+\n+/**\n+ * @brief  Sets timer count source and edge with the selected passed from CapSrc.\n+ *          If CapSrc selected a CAPn pin, select the specific CAPn pin with the capnum value.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capSrc  : timer clock source and edge\n+ * @param  capnum  : CAPn.capnum pin to use (if used)\n+ * @return Nothing\n+ * @note   If CapSrc selected a CAPn pin, select the specific CAPn pin with the capnum value.\n+ */\n+STATIC INLINE void Chip_TIMER_TIMER_SetCountClockSrc(LPC_TIMER_T *pTMR,\n+                                                    TIMER_CAP_SRC_STATE_T capSrc,\n+                                                    int8_t capnum)\n+{\n+   pTMR->CTCR = (uint32_t) capSrc | ((uint32_t) capnum) << 2;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __TIMER_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/uart_18xx_43xx.h ./lpc_chip_43xx/inc/uart_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/uart_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/uart_18xx_43xx.h\t2017-02-27 20:42:08.464009492 -0300\n@@ -0,0 +1,826 @@\n+/*\n+ * @brief LPC18xx/43xx UART chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __UART_18XX_43XX_H_\n+#define __UART_18XX_43XX_H_\n+\n+#include \"ring_buffer.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup UART_18XX_43XX CHIP: LPC18xx/43xx UART driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief USART register block structure\n+ */\n+typedef struct {                   /*!< USARTn Structure       */\n+\n+   union {\n+       __IO uint32_t  DLL;         /*!< Divisor Latch LSB. Least significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB = 1). */\n+       __O  uint32_t  THR;         /*!< Transmit Holding Register. The next character to be transmitted is written here (DLAB = 0). */\n+       __I  uint32_t  RBR;         /*!< Receiver Buffer Register. Contains the next received character to be read (DLAB = 0). */\n+   };\n+\n+   union {\n+       __IO uint32_t IER;          /*!< Interrupt Enable Register. Contains individual interrupt enable bits for the 7 potential UART interrupts (DLAB = 0). */\n+       __IO uint32_t DLM;          /*!< Divisor Latch MSB. Most significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB = 1). */\n+   };\n+\n+   union {\n+       __O  uint32_t FCR;          /*!< FIFO Control Register. Controls UART FIFO usage and modes. */\n+       __I  uint32_t IIR;          /*!< Interrupt ID Register. Identifies which interrupt(s) are pending. */\n+   };\n+\n+   __IO uint32_t LCR;              /*!< Line Control Register. Contains controls for frame formatting and break generation. */\n+   __IO uint32_t MCR;              /*!< Modem Control Register. Only present on USART ports with full modem support. */\n+   __I  uint32_t LSR;              /*!< Line Status Register. Contains flags for transmit and receive status, including line errors. */\n+   __I  uint32_t MSR;              /*!< Modem Status Register. Only present on USART ports with full modem support. */\n+   __IO uint32_t SCR;              /*!< Scratch Pad Register. Eight-bit temporary storage for software. */\n+   __IO uint32_t ACR;              /*!< Auto-baud Control Register. Contains controls for the auto-baud feature. */\n+   __IO uint32_t ICR;              /*!< IrDA control register (not all UARTS) */\n+   __IO uint32_t FDR;              /*!< Fractional Divider Register. Generates a clock input for the baud rate divider. */\n+   __IO uint32_t OSR;              /*!< Oversampling Register. Controls the degree of oversampling during each bit time. Only on some UARTS. */\n+   __IO uint32_t TER1;             /*!< Transmit Enable Register. Turns off USART transmitter for use with software flow control. */\n+   uint32_t  RESERVED0[3];\n+    __IO uint32_t HDEN;                /*!< Half-duplex enable Register- only on some UARTs */\n+   __I  uint32_t RESERVED1[1];\n+   __IO uint32_t SCICTRL;          /*!< Smart card interface control register- only on some UARTs */\n+\n+   __IO uint32_t RS485CTRL;        /*!< RS-485/EIA-485 Control. Contains controls to configure various aspects of RS-485/EIA-485 modes. */\n+   __IO uint32_t RS485ADRMATCH;    /*!< RS-485/EIA-485 address match. Contains the address match value for RS-485/EIA-485 mode. */\n+   __IO uint32_t RS485DLY;         /*!< RS-485/EIA-485 direction control delay. */\n+\n+   union {\n+       __IO uint32_t SYNCCTRL;     /*!< Synchronous mode control register. Only on USARTs. */\n+       __I  uint32_t FIFOLVL;      /*!< FIFO Level register. Provides the current fill levels of the transmit and receive FIFOs. */\n+   };\n+\n+   __IO uint32_t TER2;             /*!< Transmit Enable Register. Only on LPC177X_8X UART4 and LPC18XX/43XX USART0/2/3. */\n+} LPC_USART_T;\n+\n+\n+/**\n+ * @brief Macro defines for UART Receive Buffer register\n+ */\n+#define UART_RBR_MASKBIT    (0xFF)             /*!< UART Received Buffer mask bit (8 bits) */\n+\n+/**\n+ * @brief Macro defines for UART Divisor Latch LSB register\n+ */\n+#define UART_LOAD_DLL(div)  ((div) & 0xFF)     /*!< Macro for loading LSB of divisor */\n+#define UART_DLL_MASKBIT    (0xFF)             /*!< Divisor latch LSB bit mask */\n+\n+/**\n+ * @brief Macro defines for UART Divisor Latch MSB register\n+ */\n+#define UART_LOAD_DLM(div)  (((div) >> 8) & 0xFF)  /*!< Macro for loading MSB of divisors */\n+#define UART_DLM_MASKBIT    (0xFF)                 /*!< Divisor latch MSB bit mask */\n+\n+/**\n+ * @brief Macro defines for UART Interrupt Enable Register\n+ */\n+#define UART_IER_RBRINT      (1 << 0)  /*!< RBR Interrupt enable */\n+#define UART_IER_THREINT     (1 << 1)  /*!< THR Interrupt enable */\n+#define UART_IER_RLSINT      (1 << 2)  /*!< RX line status interrupt enable */\n+#define UART_IER_MSINT       (1 << 3)  /*!< Modem status interrupt enable - valid for 11xx, 17xx/40xx UART1, 18xx/43xx UART1  only */\n+#define UART_IER_CTSINT      (1 << 7)  /*!< CTS signal transition interrupt enable - valid for 17xx/40xx UART1, 18xx/43xx UART1 only */\n+#define UART_IER_ABEOINT     (1 << 8)  /*!< Enables the end of auto-baud interrupt */\n+#define UART_IER_ABTOINT     (1 << 9)  /*!< Enables the auto-baud time-out interrupt */\n+#define UART_IER_BITMASK     (0x307)   /*!< UART interrupt enable register bit mask  - valid for 13xx, 17xx/40xx UART0/2/3, 18xx/43xx UART0/2/3 only*/\n+#define UART1_IER_BITMASK    (0x30F)   /*!< UART1 interrupt enable register bit mask - valid for 11xx only */\n+#define UART2_IER_BITMASK    (0x38F)   /*!< UART2 interrupt enable register bit mask - valid for 17xx/40xx UART1, 18xx/43xx UART1 only */\n+\n+/**\n+ * @brief Macro defines for UART Interrupt Identification Register\n+ */\n+#define UART_IIR_INTSTAT_PEND   (1 << 0)   /*!< Interrupt pending status - Active low */\n+#define UART_IIR_FIFO_EN        (3 << 6)   /*!< These bits are equivalent to FCR[0] */\n+#define UART_IIR_ABEO_INT       (1 << 8)   /*!< End of auto-baud interrupt */\n+#define UART_IIR_ABTO_INT       (1 << 9)   /*!< Auto-baud time-out interrupt */\n+#define UART_IIR_BITMASK        (0x3CF)        /*!< UART interrupt identification register bit mask */\n+\n+/* Interrupt ID bit definitions */\n+#define UART_IIR_INTID_MASK     (7 << 1)   /*!< Interrupt identification: Interrupt ID mask */\n+#define UART_IIR_INTID_RLS      (3 << 1)   /*!< Interrupt identification: Receive line interrupt */\n+#define UART_IIR_INTID_RDA      (2 << 1)   /*!< Interrupt identification: Receive data available interrupt */\n+#define UART_IIR_INTID_CTI      (6 << 1)   /*!< Interrupt identification: Character time-out indicator interrupt */\n+#define UART_IIR_INTID_THRE     (1 << 1)   /*!< Interrupt identification: THRE interrupt */\n+#define UART_IIR_INTID_MODEM    (0 << 1)   /*!< Interrupt identification: Modem interrupt */\n+\n+/**\n+ * @brief Macro defines for UART FIFO Control Register\n+ */\n+#define UART_FCR_FIFO_EN        (1 << 0)   /*!< UART FIFO enable */\n+#define UART_FCR_RX_RS          (1 << 1)   /*!< UART RX FIFO reset */\n+#define UART_FCR_TX_RS          (1 << 2)   /*!< UART TX FIFO reset */\n+#define UART_FCR_DMAMODE_SEL    (1 << 3)   /*!< UART DMA mode selection - valid for 17xx/40xx, 18xx/43xx only */\n+#define UART_FCR_BITMASK        (0xCF)     /*!< UART FIFO control bit mask */\n+\n+#define UART_TX_FIFO_SIZE       (16)\n+\n+/* FIFO trigger level bit definitions */\n+#define UART_FCR_TRG_LEV0       (0)            /*!< UART FIFO trigger level 0: 1 character */\n+#define UART_FCR_TRG_LEV1       (1 << 6)   /*!< UART FIFO trigger level 1: 4 character */\n+#define UART_FCR_TRG_LEV2       (2 << 6)   /*!< UART FIFO trigger level 2: 8 character */\n+#define UART_FCR_TRG_LEV3       (3 << 6)   /*!< UART FIFO trigger level 3: 14 character */\n+\n+/**\n+ * @brief Macro defines for UART Line Control Register\n+ */\n+/* UART word length select bit definitions */\n+#define UART_LCR_WLEN_MASK      (3 << 0)       /*!< UART word length select bit mask */\n+#define UART_LCR_WLEN5          (0 << 0)       /*!< UART word length select: 5 bit data mode */\n+#define UART_LCR_WLEN6          (1 << 0)       /*!< UART word length select: 6 bit data mode */\n+#define UART_LCR_WLEN7          (2 << 0)       /*!< UART word length select: 7 bit data mode */\n+#define UART_LCR_WLEN8          (3 << 0)       /*!< UART word length select: 8 bit data mode */\n+\n+/* UART Stop bit select bit definitions */\n+#define UART_LCR_SBS_MASK       (1 << 2)       /*!< UART stop bit select: bit mask */\n+#define UART_LCR_SBS_1BIT       (0 << 2)       /*!< UART stop bit select: 1 stop bit */\n+#define UART_LCR_SBS_2BIT       (1 << 2)       /*!< UART stop bit select: 2 stop bits (in 5 bit data mode, 1.5 stop bits) */\n+\n+/* UART Parity enable bit definitions */\n+#define UART_LCR_PARITY_EN      (1 << 3)       /*!< UART Parity Enable */\n+#define UART_LCR_PARITY_DIS     (0 << 3)       /*!< UART Parity Disable */\n+#define UART_LCR_PARITY_ODD     (0 << 4)       /*!< UART Parity select: Odd parity */\n+#define UART_LCR_PARITY_EVEN    (1 << 4)       /*!< UART Parity select: Even parity */\n+#define UART_LCR_PARITY_F_1     (2 << 4)       /*!< UART Parity select: Forced 1 stick parity */\n+#define UART_LCR_PARITY_F_0     (3 << 4)       /*!< UART Parity select: Forced 0 stick parity */\n+#define UART_LCR_BREAK_EN       (1 << 6)       /*!< UART Break transmission enable */\n+#define UART_LCR_DLAB_EN        (1 << 7)       /*!< UART Divisor Latches Access bit enable */\n+#define UART_LCR_BITMASK        (0xFF)         /*!< UART line control bit mask */\n+\n+/**\n+ * @brief Macro defines for UART Modem Control Register\n+ */\n+#define UART_MCR_DTR_CTRL       (1 << 0)       /*!< Source for modem output pin DTR */\n+#define UART_MCR_RTS_CTRL       (1 << 1)       /*!< Source for modem output pin RTS */\n+#define UART_MCR_LOOPB_EN       (1 << 4)       /*!< Loop back mode select */\n+#define UART_MCR_AUTO_RTS_EN    (1 << 6)       /*!< Enable Auto RTS flow-control */\n+#define UART_MCR_AUTO_CTS_EN    (1 << 7)       /*!< Enable Auto CTS flow-control */\n+#define UART_MCR_BITMASK        (0xD3)         /*!< UART bit mask value */\n+\n+/**\n+ * @brief Macro defines for UART Line Status Register\n+ */\n+#define UART_LSR_RDR        (1 << 0)   /*!< Line status: Receive data ready */\n+#define UART_LSR_OE         (1 << 1)   /*!< Line status: Overrun error */\n+#define UART_LSR_PE         (1 << 2)   /*!< Line status: Parity error */\n+#define UART_LSR_FE         (1 << 3)   /*!< Line status: Framing error */\n+#define UART_LSR_BI         (1 << 4)   /*!< Line status: Break interrupt */\n+#define UART_LSR_THRE       (1 << 5)   /*!< Line status: Transmit holding register empty */\n+#define UART_LSR_TEMT       (1 << 6)   /*!< Line status: Transmitter empty */\n+#define UART_LSR_RXFE       (1 << 7)   /*!< Line status: Error in RX FIFO */\n+#define UART_LSR_TXFE       (1 << 8)   /*!< Line status: Error in RX FIFO */\n+#define UART_LSR_BITMASK    (0xFF)     /*!< UART Line status bit mask */\n+#define UART1_LSR_BITMASK   (0x1FF)        /*!< UART1 Line status bit mask - valid for 11xx, 18xx/43xx UART0/2/3 only */\n+\n+/**\n+ * @brief Macro defines for UART Modem Status Register\n+ */\n+#define UART_MSR_DELTA_CTS      (1 << 0)   /*!< Modem status: State change of input CTS */\n+#define UART_MSR_DELTA_DSR      (1 << 1)   /*!< Modem status: State change of input DSR */\n+#define UART_MSR_LO2HI_RI       (1 << 2)   /*!< Modem status: Low to high transition of input RI */\n+#define UART_MSR_DELTA_DCD      (1 << 3)   /*!< Modem status: State change of input DCD */\n+#define UART_MSR_CTS            (1 << 4)   /*!< Modem status: Clear To Send State */\n+#define UART_MSR_DSR            (1 << 5)   /*!< Modem status: Data Set Ready State */\n+#define UART_MSR_RI             (1 << 6)   /*!< Modem status: Ring Indicator State */\n+#define UART_MSR_DCD            (1 << 7)   /*!< Modem status: Data Carrier Detect State */\n+#define UART_MSR_BITMASK        (0xFF)     /*!< Modem status: MSR register bit-mask value */\n+\n+/**\n+ * @brief Macro defines for UART Auto baudrate control register\n+ */\n+#define UART_ACR_START              (1 << 0)   /*!< UART Auto-baud start */\n+#define UART_ACR_MODE               (1 << 1)   /*!< UART Auto baudrate Mode 1 */\n+#define UART_ACR_AUTO_RESTART       (1 << 2)   /*!< UART Auto baudrate restart */\n+#define UART_ACR_ABEOINT_CLR        (1 << 8)   /*!< UART End of auto-baud interrupt clear */\n+#define UART_ACR_ABTOINT_CLR        (1 << 9)   /*!< UART Auto-baud time-out interrupt clear */\n+#define UART_ACR_BITMASK            (0x307)        /*!< UART Auto Baudrate register bit mask */\n+\n+/**\n+ * Autobaud modes\n+ */\n+#define UART_ACR_MODE0              (0)    /*!< Auto baudrate Mode 0 */\n+#define UART_ACR_MODE1              (1)    /*!< Auto baudrate Mode 1 */\n+\n+/**\n+ * @brief Macro defines for UART RS485 Control register\n+ */\n+#define UART_RS485CTRL_NMM_EN       (1 << 0)   /*!< RS-485/EIA-485 Normal Multi-drop Mode (NMM) is disabled */\n+#define UART_RS485CTRL_RX_DIS       (1 << 1)   /*!< The receiver is disabled */\n+#define UART_RS485CTRL_AADEN        (1 << 2)   /*!< Auto Address Detect (AAD) is enabled */\n+#define UART_RS485CTRL_SEL_DTR      (1 << 3)   /*!< If direction control is enabled (bit DCTRL = 1), pin DTR is\n+                                                       used for direction control */\n+#define UART_RS485CTRL_DCTRL_EN     (1 << 4)   /*!< Enable Auto Direction Control */\n+#define UART_RS485CTRL_OINV_1       (1 << 5)   /*!< This bit reverses the polarity of the direction\n+                                                      control signal on the RTS (or DTR) pin. The direction control pin\n+                                                      will be driven to logic \"1\" when the transmitter has data to be sent */\n+#define UART_RS485CTRL_BITMASK      (0x3F)     /*!< RS485 control bit-mask value */\n+\n+/**\n+ * @brief Macro defines for UART IrDA Control Register - valid for 11xx, 17xx/40xx UART0/2/3, 18xx/43xx UART3 only\n+ */\n+#define UART_ICR_IRDAEN         (1 << 0)           /*!< IrDA mode enable */\n+#define UART_ICR_IRDAINV        (1 << 1)           /*!< IrDA serial input inverted */\n+#define UART_ICR_FIXPULSE_EN    (1 << 2)           /*!< IrDA fixed pulse width mode */\n+#define UART_ICR_PULSEDIV(n)    ((n & 0x07) << 3)  /*!< PulseDiv - Configures the pulse when FixPulseEn = 1 */\n+#define UART_ICR_BITMASK        (0x3F)             /*!< UART IRDA bit mask */\n+\n+/**\n+ * @brief Macro defines for UART half duplex register - ????\n+ */\n+#define UART_HDEN_HDEN          ((1 << 0))         /*!< enable half-duplex mode*/\n+\n+/**\n+ * @brief Macro defines for UART Smart card interface Control Register - valid for 11xx, 18xx/43xx UART0/2/3 only\n+ */\n+#define UART_SCICTRL_SCIEN        (1 << 0)         /*!< enable asynchronous half-duplex smart card interface*/\n+#define UART_SCICTRL_NACKDIS      (1 << 1)         /*!< NACK response is inhibited*/\n+#define UART_SCICTRL_PROTSEL_T1   (1 << 2)         /*!< ISO7816-3 protocol T1 is selected*/\n+#define UART_SCICTRL_TXRETRY(n)   ((n & 0x07) << 5)    /*!< number of retransmission*/\n+#define UART_SCICTRL_GUARDTIME(n) ((n & 0xFF) << 8)    /*!< Extra guard time*/\n+\n+/**\n+ * @brief Macro defines for UART Fractional Divider Register\n+ */\n+#define UART_FDR_DIVADDVAL(n)   (n & 0x0F)         /*!< Baud-rate generation pre-scaler divisor */\n+#define UART_FDR_MULVAL(n)      ((n << 4) & 0xF0)  /*!< Baud-rate pre-scaler multiplier value */\n+#define UART_FDR_BITMASK        (0xFF)             /*!< UART Fractional Divider register bit mask */\n+\n+/**\n+ * @brief Macro defines for UART Tx Enable Register\n+ */\n+#define UART_TER1_TXEN      (1 << 7)       /*!< Transmit enable bit  - valid for 11xx, 13xx, 17xx/40xx only */\n+#define UART_TER2_TXEN      (1 << 0)       /*!< Transmit enable bit  - valid for 18xx/43xx only */\n+\n+/**\n+ * @brief Macro defines for UART Synchronous Control Register - 11xx, 18xx/43xx UART0/2/3 only\n+ */\n+#define UART_SYNCCTRL_SYNC             (1 << 0)            /*!< enable synchronous mode*/\n+#define UART_SYNCCTRL_CSRC_MASTER      (1 << 1)        /*!< synchronous master mode*/\n+#define UART_SYNCCTRL_FES              (1 << 2)            /*!< sample on falling edge*/\n+#define UART_SYNCCTRL_TSBYPASS         (1 << 3)            /*!< to be defined*/\n+#define UART_SYNCCTRL_CSCEN            (1 << 4)            /*!< Continuous running clock enable (master mode only)*/\n+#define UART_SYNCCTRL_STARTSTOPDISABLE (1 << 5)            /*!< Do not send start/stop bit*/\n+#define UART_SYNCCTRL_CCCLR            (1 << 6)            /*!< stop continuous clock*/\n+\n+/**\n+ * @brief  Enable transmission on UART TxD pin\n+ * @param  pUART   : Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_TXEnable(LPC_USART_T *pUART)\n+{\n+    pUART->TER2 = UART_TER2_TXEN;\n+}\n+\n+/**\n+ * @brief  Disable transmission on UART TxD pin\n+ * @param  pUART   : Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_TXDisable(LPC_USART_T *pUART)\n+{\n+    pUART->TER2 = 0;\n+}\n+\n+/**\n+ * @brief  Transmit a single data byte through the UART peripheral\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  data    : Byte to transmit\n+ * @return Nothing\n+ * @note   This function attempts to place a byte into the UART transmit\n+ *         FIFO or transmit hold register regard regardless of UART state\n+ */\n+STATIC INLINE void Chip_UART_SendByte(LPC_USART_T *pUART, uint8_t data)\n+{\n+   pUART->THR = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief  Read a single byte data from the UART peripheral\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return A single byte of data read\n+ * @note   This function reads a byte from the UART receive FIFO or\n+ *         receive hold register regard regardless of UART state. The\n+ *         FIFO status should be read first prior to using this function\n+ */\n+STATIC INLINE uint8_t Chip_UART_ReadByte(LPC_USART_T *pUART)\n+{\n+   return (uint8_t) (pUART->RBR & UART_RBR_MASKBIT);\n+}\n+\n+/**\n+ * @brief  Enable UART interrupts\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  intMask : OR'ed Interrupts to enable in the Interrupt Enable Register (IER)\n+ * @return Nothing\n+ * @note   Use an OR'ed value of UART_IER_* definitions with this function\n+ *         to enable specific UART interrupts. The Divisor Latch Access Bit\n+ *         (DLAB) in LCR must be cleared in order to access the IER register.\n+ *         This function doesn't alter the DLAB state\n+ */\n+STATIC INLINE void Chip_UART_IntEnable(LPC_USART_T *pUART, uint32_t intMask)\n+{\n+   pUART->IER |= intMask;\n+}\n+\n+/**\n+ * @brief  Disable UART interrupts\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  intMask : OR'ed Interrupts to disable in the Interrupt Enable Register (IER)\n+ * @return Nothing\n+ * @note   Use an OR'ed value of UART_IER_* definitions with this function\n+ *         to disable specific UART interrupts. The Divisor Latch Access Bit\n+ *         (DLAB) in LCR must be cleared in order to access the IER register.\n+ *         This function doesn't alter the DLAB state\n+ */\n+STATIC INLINE void Chip_UART_IntDisable(LPC_USART_T *pUART, uint32_t intMask)\n+{\n+   pUART->IER &= ~intMask;\n+}\n+\n+/**\n+ * @brief  Returns UART interrupts that are enabled\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Returns the enabled UART interrupts\n+ * @note   Use an OR'ed value of UART_IER_* definitions with this function\n+ *         to determine which interrupts are enabled. You can check\n+ *         for multiple enabled bits if needed.\n+ */\n+STATIC INLINE uint32_t Chip_UART_GetIntsEnabled(LPC_USART_T *pUART)\n+{\n+   return pUART->IER;\n+}\n+\n+/**\n+ * @brief  Read the Interrupt Identification Register (IIR)\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Current pending interrupt status per the IIR register\n+ */\n+STATIC INLINE uint32_t Chip_UART_ReadIntIDReg(LPC_USART_T *pUART)\n+{\n+   return pUART->IIR;\n+}\n+\n+/**\n+ * @brief  Setup the UART FIFOs\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  fcr     : FIFO control register setup OR'ed flags\n+ * @return Nothing\n+ * @note   Use OR'ed value of UART_FCR_* definitions with this function\n+ *         to select specific options. For example, to enable the FIFOs\n+ *         with a RX trip level of 8 characters, use something like\n+ *         (UART_FCR_FIFO_EN | UART_FCR_TRG_LEV2)\n+ */\n+STATIC INLINE void Chip_UART_SetupFIFOS(LPC_USART_T *pUART, uint32_t fcr)\n+{\n+   pUART->FCR = fcr;\n+}\n+\n+/**\n+ * @brief  Configure data width, parity and stop bits\n+ * @param  pUART   : Pointer to selected pUART peripheral\n+ * @param  config  : UART configuration, OR'ed values of UART_LCR_* defines\n+ * @return Nothing\n+ * @note   Select OR'ed config options for the UART from the UART_LCR_*\n+ *         definitions. For example, a configuration of 8 data bits, 1\n+ *         stop bit, and even (enabled) parity would be\n+ *         (UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_EN | UART_LCR_PARITY_EVEN)\n+ */\n+STATIC INLINE void Chip_UART_ConfigData(LPC_USART_T *pUART, uint32_t config)\n+{\n+   pUART->LCR = config;\n+}\n+\n+/**\n+ * @brief  Enable access to Divisor Latches\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_EnableDivisorAccess(LPC_USART_T *pUART)\n+{\n+   pUART->LCR |= UART_LCR_DLAB_EN;\n+}\n+\n+/**\n+ * @brief  Disable access to Divisor Latches\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_DisableDivisorAccess(LPC_USART_T *pUART)\n+{\n+   pUART->LCR &= ~UART_LCR_DLAB_EN;\n+}\n+\n+/**\n+ * @brief  Set LSB and MSB divisor latch registers\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  dll     : Divisor Latch LSB value\n+ * @param  dlm     : Divisor Latch MSB value\n+ * @return Nothing\n+ * @note   The Divisor Latch Access Bit (DLAB) in LCR must be set in\n+ *         order to access the USART Divisor Latches. This function\n+ *         doesn't alter the DLAB state.\n+ */\n+STATIC INLINE void Chip_UART_SetDivisorLatches(LPC_USART_T *pUART, uint8_t dll, uint8_t dlm)\n+{\n+   pUART->DLL = (uint32_t) dll;\n+   pUART->DLM = (uint32_t) dlm;\n+}\n+\n+\n+/**\n+ * @brief  Return modem control register/status\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Modem control register (status)\n+ * @note   Mask bits of the returned status value with UART_MCR_*\n+ *         definitions for specific statuses.\n+ */\n+STATIC INLINE uint32_t Chip_UART_ReadModemControl(LPC_USART_T *pUART)\n+{\n+   return pUART->MCR;\n+}\n+\n+/**\n+ * @brief  Set modem control register/status\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  mcr     : Modem control register flags to set\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_MCR_* definitions with this\n+ *         call to set specific options.\n+ */\n+STATIC INLINE void Chip_UART_SetModemControl(LPC_USART_T *pUART, uint32_t mcr)\n+{\n+   pUART->MCR |= mcr;\n+}\n+\n+/**\n+ * @brief  Clear modem control register/status\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  mcr     : Modem control register flags to clear\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_MCR_* definitions with this\n+ *         call to clear specific options.\n+ */\n+STATIC INLINE void Chip_UART_ClearModemControl(LPC_USART_T *pUART, uint32_t mcr)\n+{\n+   pUART->MCR &= ~mcr;\n+}\n+\n+/**\n+ * @brief  Return Line Status register/status (LSR)\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Line Status register (status)\n+ * @note   Mask bits of the returned status value with UART_LSR_*\n+ *         definitions for specific statuses.\n+ */\n+STATIC INLINE uint32_t Chip_UART_ReadLineStatus(LPC_USART_T *pUART)\n+{\n+   return pUART->LSR;\n+}\n+\n+/**\n+ * @brief  Return Modem Status register/status (MSR)\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Modem Status register (status)\n+ * @note   Mask bits of the returned status value with UART_MSR_*\n+ *         definitions for specific statuses.\n+ */\n+STATIC INLINE uint32_t Chip_UART_ReadModemStatus(LPC_USART_T *pUART)\n+{\n+   return pUART->MSR;\n+}\n+\n+/**\n+ * @brief  Write a byte to the scratchpad register\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  data    : Byte value to write\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_SetScratch(LPC_USART_T *pUART, uint8_t data)\n+{\n+   pUART->SCR = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief  Returns current byte value in the scratchpad register\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Byte value read from scratchpad register\n+ */\n+STATIC INLINE uint8_t Chip_UART_ReadScratch(LPC_USART_T *pUART)\n+{\n+   return (uint8_t) (pUART->SCR & 0xFF);\n+}\n+\n+/**\n+ * @brief  Set autobaud register options\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  acr     : Or'ed values to set for ACR register\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_ACR_* definitions with this\n+ *         call to set specific options.\n+ */\n+STATIC INLINE void Chip_UART_SetAutoBaudReg(LPC_USART_T *pUART, uint32_t acr)\n+{\n+   pUART->ACR |= acr;\n+}\n+\n+/**\n+ * @brief  Clear autobaud register options\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  acr     : Or'ed values to clear for ACR register\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_ACR_* definitions with this\n+ *         call to clear specific options.\n+ */\n+STATIC INLINE void Chip_UART_ClearAutoBaudReg(LPC_USART_T *pUART, uint32_t acr)\n+{\n+   pUART->ACR &= ~acr;\n+}\n+\n+/**\n+ * @brief  Set RS485 control register options\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  ctrl    : Or'ed values to set for RS485 control register\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_RS485CTRL_* definitions with this\n+ *         call to set specific options.\n+ */\n+STATIC INLINE void Chip_UART_SetRS485Flags(LPC_USART_T *pUART, uint32_t ctrl)\n+{\n+   pUART->RS485CTRL |= ctrl;\n+}\n+\n+/**\n+ * @brief  Clear RS485 control register options\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  ctrl    : Or'ed values to clear for RS485 control register\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_RS485CTRL_* definitions with this\n+ *         call to clear specific options.\n+ */\n+STATIC INLINE void Chip_UART_ClearRS485Flags(LPC_USART_T *pUART, uint32_t ctrl)\n+{\n+   pUART->RS485CTRL &= ~ctrl;\n+}\n+\n+/**\n+ * @brief  Set RS485 address match value\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  addr    : Address match value for RS-485/EIA-485 mode\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_SetRS485Addr(LPC_USART_T *pUART, uint8_t addr)\n+{\n+   pUART->RS485ADRMATCH = (uint32_t) addr;\n+}\n+\n+/**\n+ * @brief  Read RS485 address match value\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Address match value for RS-485/EIA-485 mode\n+ */\n+STATIC INLINE uint8_t Chip_UART_GetRS485Addr(LPC_USART_T *pUART)\n+{\n+   return (uint8_t) (pUART->RS485ADRMATCH & 0xFF);\n+}\n+\n+/**\n+ * @brief  Set RS485 direction control (RTS or DTR) delay value\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  dly     : direction control (RTS or DTR) delay value\n+ * @return Nothing\n+ * @note   This delay time is in periods of the baud clock. Any delay\n+ *         time from 0 to 255 bit times may be programmed.\n+ */\n+STATIC INLINE void Chip_UART_SetRS485Delay(LPC_USART_T *pUART, uint8_t dly)\n+{\n+   pUART->RS485DLY = (uint32_t) dly;\n+}\n+\n+/**\n+ * @brief  Read RS485 direction control (RTS or DTR) delay value\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return direction control (RTS or DTR) delay value\n+ * @note   This delay time is in periods of the baud clock. Any delay\n+ *         time from 0 to 255 bit times may be programmed.\n+ */\n+STATIC INLINE uint8_t Chip_UART_GetRS485Delay(LPC_USART_T *pUART)\n+{\n+   return (uint8_t) (pUART->RS485DLY & 0xFF);\n+}\n+\n+/**\n+ * @brief  Initializes the pUART peripheral\n+ * @param  pUART       : Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+void Chip_UART_Init(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief  De-initializes the pUART peripheral.\n+ * @param  pUART       : Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+void Chip_UART_DeInit(LPC_USART_T *pUART);\n+\n+\n+/**\n+ * @brief  Check whether if UART is busy or not\n+ * @param  pUART   : Pointer to selected pUART peripheral\n+ * @return RESET if UART is not busy, otherwise return SET\n+ */\n+FlagStatus Chip_UART_CheckBusy(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief  Transmit a byte array through the UART peripheral (non-blocking)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  data        : Pointer to bytes to transmit\n+ * @param  numBytes    : Number of bytes to transmit\n+ * @return The actual number of bytes placed into the FIFO\n+ * @note   This function places data into the transmit FIFO until either\n+ *         all the data is in the FIFO or the FIFO is full. This function\n+ *         will not block in the FIFO is full. The actual number of bytes\n+ *         placed into the FIFO is returned. This function ignores errors.\n+ */\n+int Chip_UART_Send(LPC_USART_T *pUART, const void *data, int numBytes);\n+\n+/**\n+ * @brief  Read data through the UART peripheral (non-blocking)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  data        : Pointer to bytes array to fill\n+ * @param  numBytes    : Size of the passed data array\n+ * @return The actual number of bytes read\n+ * @note   This function reads data from the receive FIFO until either\n+ *         all the data has been read or the passed buffer is completely full.\n+ *         This function will not block. This function ignores errors.\n+ */\n+int Chip_UART_Read(LPC_USART_T *pUART, void *data, int numBytes);\n+\n+/**\n+ * @brief  Sets best dividers to get a target bit rate (without fractional divider)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  baudrate    : Target baud rate (baud rate = bit rate)\n+ * @return The actual baud rate, or 0 if no rate can be found\n+ */\n+uint32_t Chip_UART_SetBaud(LPC_USART_T *pUART, uint32_t baudrate);\n+\n+/**\n+ * @brief  Sets best dividers to get a target bit rate (with fractional divider)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  baud        : Target baud rate (baud rate = bit rate)\n+ * @return The actual baud rate, or 0 if no rate can be found\n+ * @note   The maximum bit rate possible is (clk / 16), the next possible bit\n+ *             rate is (clk / 32), the next possible bit rate is (clk / 48), no\n+ *             rates in-between any of the above three maximum rates could be set\n+ *             using this API. Fractional dividers can only be used for rates\n+ *             lower than (clk / 48) where @a clk is the base clock of the UART.\n+ */\n+uint32_t Chip_UART_SetBaudFDR(LPC_USART_T *pUART, uint32_t baud);\n+\n+/**\n+ * @brief  Transmit a byte array through the UART peripheral (blocking)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  data        : Pointer to data to transmit\n+ * @param  numBytes    : Number of bytes to transmit\n+ * @return The number of bytes transmitted\n+ * @note   This function will send or place all bytes into the transmit\n+ *         FIFO. This function will block until the last bytes are in the FIFO.\n+ */\n+int Chip_UART_SendBlocking(LPC_USART_T *pUART, const void *data, int numBytes);\n+\n+/**\n+ * @brief  Read data through the UART peripheral (blocking)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  data        : Pointer to data array to fill\n+ * @param  numBytes    : Size of the passed data array\n+ * @return The size of the dat array\n+ * @note   This function reads data from the receive FIFO until the passed\n+ *         buffer is completely full. The function will block until full.\n+ *         This function ignores errors.\n+ */\n+int Chip_UART_ReadBlocking(LPC_USART_T *pUART, void *data, int numBytes);\n+\n+/**\n+ * @brief  UART receive-only interrupt handler for ring buffers\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRB     : Pointer to ring buffer structure to use\n+ * @return Nothing\n+ * @note   If ring buffer support is desired for the receive side\n+ *         of data transfer, the UART interrupt should call this\n+ *         function for a receive based interrupt status.\n+ */\n+void Chip_UART_RXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB);\n+\n+/**\n+ * @brief  UART transmit-only interrupt handler for ring buffers\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRB     : Pointer to ring buffer structure to use\n+ * @return Nothing\n+ * @note   If ring buffer support is desired for the transmit side\n+ *         of data transfer, the UART interrupt should call this\n+ *         function for a transmit based interrupt status.\n+ */\n+void Chip_UART_TXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB);\n+\n+/**\n+ * @brief  Populate a transmit ring buffer and start UART transmit\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRB     : Pointer to ring buffer structure to use\n+ * @param  data    : Pointer to buffer to move to ring buffer\n+ * @param  bytes   : Number of bytes to move\n+ * @return The number of bytes placed into the ring buffer\n+ * @note   Will move the data into the TX ring buffer and start the\n+ *         transfer. If the number of bytes returned is less than the\n+ *         number of bytes to send, the ring buffer is considered full.\n+ */\n+uint32_t Chip_UART_SendRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, const void *data, int bytes);\n+\n+/**\n+ * @brief  Copy data from a receive ring buffer\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRB     : Pointer to ring buffer structure to use\n+ * @param  data    : Pointer to buffer to fill from ring buffer\n+ * @param  bytes   : Size of the passed buffer in bytes\n+ * @return The number of bytes placed into the ring buffer\n+ * @note   Will move the data from the RX ring buffer up to the\n+ *         the maximum passed buffer size. Returns 0 if there is\n+ *         no data in the ring buffer.\n+ */\n+int Chip_UART_ReadRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, void *data, int bytes);\n+\n+/**\n+ * @brief  UART receive/transmit interrupt handler for ring buffers\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRXRB   : Pointer to transmit ring buffer\n+ * @param  pTXRB   : Pointer to receive ring buffer\n+ * @return Nothing\n+ * @note   This provides a basic implementation of the UART IRQ\n+ *         handler for support of a ring buffer implementation for\n+ *         transmit and receive.\n+ */\n+void Chip_UART_IRQRBHandler(LPC_USART_T *pUART, RINGBUFF_T *pRXRB, RINGBUFF_T *pTXRB);\n+\n+/**\n+ * @brief  Returns the Auto Baud status\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return RESET if autobaud not completed, SET if autobaud completed\n+ */\n+FlagStatus Chip_UART_GetABEOStatus(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief  Start/stop autobaud operation\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  mode        : Autobaud mode (UART_ACR_MODE0 or UART_ACR_MODE1)\n+ * @param  autorestart : Enable autorestart (true to enable or false to disable)\n+ * @param  NewState    : ENABLE to start autobaud operation, DISABLE to\n+ *                          stop autobaud operation\n+ * @return Nothing\n+ */\n+void Chip_UART_ABCmd(LPC_USART_T *pUART, uint32_t mode, bool autorestart,\n+        FunctionalState NewState);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __UART_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_adc.h ./lpc_chip_43xx/inc/usbd/usbd_adc.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_adc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_adc.h\t2017-02-27 20:42:08.464009492 -0300\n@@ -0,0 +1,377 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_audio.h 165 2011-04-14 17:41:11Z usb10131                     $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Audio Device Class Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __AUDIO_H__\n+#define __AUDIO_H__\n+\n+\n+/* Audio Interface Subclass Codes */\n+#define AUDIO_SUBCLASS_UNDEFINED                0x00\n+#define AUDIO_SUBCLASS_AUDIOCONTROL             0x01\n+#define AUDIO_SUBCLASS_AUDIOSTREAMING           0x02\n+#define AUDIO_SUBCLASS_MIDISTREAMING            0x03\n+\n+/* Audio Interface Protocol Codes */\n+#define AUDIO_PROTOCOL_UNDEFINED                0x00\n+\n+\n+/* Audio Descriptor Types */\n+#define AUDIO_UNDEFINED_DESCRIPTOR_TYPE         0x20\n+#define AUDIO_DEVICE_DESCRIPTOR_TYPE            0x21\n+#define AUDIO_CONFIGURATION_DESCRIPTOR_TYPE     0x22\n+#define AUDIO_STRING_DESCRIPTOR_TYPE            0x23\n+#define AUDIO_INTERFACE_DESCRIPTOR_TYPE         0x24\n+#define AUDIO_ENDPOINT_DESCRIPTOR_TYPE          0x25\n+\n+\n+/* Audio Control Interface Descriptor Subtypes */\n+#define AUDIO_CONTROL_UNDEFINED                 0x00\n+#define AUDIO_CONTROL_HEADER                    0x01\n+#define AUDIO_CONTROL_INPUT_TERMINAL            0x02\n+#define AUDIO_CONTROL_OUTPUT_TERMINAL           0x03\n+#define AUDIO_CONTROL_MIXER_UNIT                0x04\n+#define AUDIO_CONTROL_SELECTOR_UNIT             0x05\n+#define AUDIO_CONTROL_FEATURE_UNIT              0x06\n+#define AUDIO_CONTROL_PROCESSING_UNIT           0x07\n+#define AUDIO_CONTROL_EXTENSION_UNIT            0x08\n+\n+/* Audio Streaming Interface Descriptor Subtypes */\n+#define AUDIO_STREAMING_UNDEFINED               0x00\n+#define AUDIO_STREAMING_GENERAL                 0x01\n+#define AUDIO_STREAMING_FORMAT_TYPE             0x02\n+#define AUDIO_STREAMING_FORMAT_SPECIFIC         0x03\n+\n+/* Audio Endpoint Descriptor Subtypes */\n+#define AUDIO_ENDPOINT_UNDEFINED                0x00\n+#define AUDIO_ENDPOINT_GENERAL                  0x01\n+\n+\n+/* Audio Descriptor Sizes */\n+#define AUDIO_CONTROL_INTERFACE_DESC_SZ(n)      0x08+n\n+#define AUDIO_STREAMING_INTERFACE_DESC_SIZE     0x07\n+#define AUDIO_INPUT_TERMINAL_DESC_SIZE          0x0C\n+#define AUDIO_OUTPUT_TERMINAL_DESC_SIZE         0x09\n+#define AUDIO_MIXER_UNIT_DESC_SZ(p,n)           0x0A+p+n\n+#define AUDIO_SELECTOR_UNIT_DESC_SZ(p)          0x06+p\n+#define AUDIO_FEATURE_UNIT_DESC_SZ(ch,n)        0x07+(ch+1)*n\n+#define AUDIO_PROCESSING_UNIT_DESC_SZ(p,n,x)    0x0D+p+n+x\n+#define AUDIO_EXTENSION_UNIT_DESC_SZ(p,n)       0x0D+p+n\n+#define AUDIO_STANDARD_ENDPOINT_DESC_SIZE       0x09\n+#define AUDIO_STREAMING_ENDPOINT_DESC_SIZE      0x07\n+\n+\n+/* Audio Processing Unit Process Types */\n+#define AUDIO_UNDEFINED_PROCESS                 0x00\n+#define AUDIO_UP_DOWN_MIX_PROCESS               0x01\n+#define AUDIO_DOLBY_PROLOGIC_PROCESS            0x02\n+#define AUDIO_3D_STEREO_PROCESS                 0x03\n+#define AUDIO_REVERBERATION_PROCESS             0x04\n+#define AUDIO_CHORUS_PROCESS                    0x05\n+#define AUDIO_DYN_RANGE_COMP_PROCESS            0x06\n+\n+\n+/* Audio Request Codes */\n+#define AUDIO_REQUEST_UNDEFINED                 0x00\n+#define AUDIO_REQUEST_SET_CUR                   0x01\n+#define AUDIO_REQUEST_GET_CUR                   0x81\n+#define AUDIO_REQUEST_SET_MIN                   0x02\n+#define AUDIO_REQUEST_GET_MIN                   0x82\n+#define AUDIO_REQUEST_SET_MAX                   0x03\n+#define AUDIO_REQUEST_GET_MAX                   0x83\n+#define AUDIO_REQUEST_SET_RES                   0x04\n+#define AUDIO_REQUEST_GET_RES                   0x84\n+#define AUDIO_REQUEST_SET_MEM                   0x05\n+#define AUDIO_REQUEST_GET_MEM                   0x85\n+#define AUDIO_REQUEST_GET_STAT                  0xFF\n+\n+\n+/* Audio Control Selector Codes */\n+#define AUDIO_CONTROL_UNDEFINED                 0x00    /* Common Selector */\n+\n+/*  Terminal Control Selectors */\n+#define AUDIO_COPY_PROTECT_CONTROL              0x01\n+\n+/*  Feature Unit Control Selectors */\n+#define AUDIO_MUTE_CONTROL                      0x01\n+#define AUDIO_VOLUME_CONTROL                    0x02\n+#define AUDIO_BASS_CONTROL                      0x03\n+#define AUDIO_MID_CONTROL                       0x04\n+#define AUDIO_TREBLE_CONTROL                    0x05\n+#define AUDIO_GRAPHIC_EQUALIZER_CONTROL         0x06\n+#define AUDIO_AUTOMATIC_GAIN_CONTROL            0x07\n+#define AUDIO_DELAY_CONTROL                     0x08\n+#define AUDIO_BASS_BOOST_CONTROL                0x09\n+#define AUDIO_LOUDNESS_CONTROL                  0x0A\n+\n+/*  Processing Unit Control Selectors: */\n+#define AUDIO_ENABLE_CONTROL                    0x01    /* Common Selector */\n+#define AUDIO_MODE_SELECT_CONTROL               0x02    /* Common Selector */\n+\n+/*  - Up/Down-mix Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+/*      AUDIO_MODE_SELECT_CONTROL               0x02       Common Selector */\n+\n+/*  - Dolby Prologic Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+/*      AUDIO_MODE_SELECT_CONTROL               0x02       Common Selector */\n+\n+/*  - 3D Stereo Extender Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+#define AUDIO_SPACIOUSNESS_CONTROL              0x02\n+\n+/*  - Reverberation Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+#define AUDIO_REVERB_LEVEL_CONTROL              0x02\n+#define AUDIO_REVERB_TIME_CONTROL               0x03\n+#define AUDIO_REVERB_FEEDBACK_CONTROL           0x04\n+\n+/*  - Chorus Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+#define AUDIO_CHORUS_LEVEL_CONTROL              0x02\n+#define AUDIO_SHORUS_RATE_CONTROL               0x03\n+#define AUDIO_CHORUS_DEPTH_CONTROL              0x04\n+\n+/*  - Dynamic Range Compressor Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+#define AUDIO_COMPRESSION_RATE_CONTROL          0x02\n+#define AUDIO_MAX_AMPL_CONTROL                  0x03\n+#define AUDIO_THRESHOLD_CONTROL                 0x04\n+#define AUDIO_ATTACK_TIME_CONTROL               0x05\n+#define AUDIO_RELEASE_TIME_CONTROL              0x06\n+\n+/*  Extension Unit Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+\n+/*  Endpoint Control Selectors */\n+#define AUDIO_SAMPLING_FREQ_CONTROL             0x01\n+#define AUDIO_PITCH_CONTROL                     0x02\n+\n+\n+/* Audio Format Specific Control Selectors */\n+\n+/*  MPEG Control Selectors */\n+#define AUDIO_MPEG_CONTROL_UNDEFINED            0x00\n+#define AUDIO_MPEG_DUAL_CHANNEL_CONTROL         0x01\n+#define AUDIO_MPEG_SECOND_STEREO_CONTROL        0x02\n+#define AUDIO_MPEG_MULTILINGUAL_CONTROL         0x03\n+#define AUDIO_MPEG_DYN_RANGE_CONTROL            0x04\n+#define AUDIO_MPEG_SCALING_CONTROL              0x05\n+#define AUDIO_MPEG_HILO_SCALING_CONTROL         0x06\n+\n+/*  AC-3 Control Selectors */\n+#define AUDIO_AC3_CONTROL_UNDEFINED             0x00\n+#define AUDIO_AC3_MODE_CONTROL                  0x01\n+#define AUDIO_AC3_DYN_RANGE_CONTROL             0x02\n+#define AUDIO_AC3_SCALING_CONTROL               0x03\n+#define AUDIO_AC3_HILO_SCALING_CONTROL          0x04\n+\n+\n+/* Audio Format Types */\n+#define AUDIO_FORMAT_TYPE_UNDEFINED             0x00\n+#define AUDIO_FORMAT_TYPE_I                     0x01\n+#define AUDIO_FORMAT_TYPE_II                    0x02\n+#define AUDIO_FORMAT_TYPE_III                   0x03\n+\n+\n+/* Audio Format Type Descriptor Sizes */\n+#define AUDIO_FORMAT_TYPE_I_DESC_SZ(n)          0x08+(n*3)\n+#define AUDIO_FORMAT_TYPE_II_DESC_SZ(n)         0x09+(n*3)\n+#define AUDIO_FORMAT_TYPE_III_DESC_SZ(n)        0x08+(n*3)\n+#define AUDIO_FORMAT_MPEG_DESC_SIZE             0x09\n+#define AUDIO_FORMAT_AC3_DESC_SIZE              0x0A\n+\n+\n+/* Audio Data Format Codes */\n+\n+/*  Audio Data Format Type I Codes */\n+#define AUDIO_FORMAT_TYPE_I_UNDEFINED           0x0000\n+#define AUDIO_FORMAT_PCM                        0x0001\n+#define AUDIO_FORMAT_PCM8                       0x0002\n+#define AUDIO_FORMAT_IEEE_FLOAT                 0x0003\n+#define AUDIO_FORMAT_ALAW                       0x0004\n+#define AUDIO_FORMAT_MULAW                      0x0005\n+\n+/*  Audio Data Format Type II Codes */\n+#define AUDIO_FORMAT_TYPE_II_UNDEFINED          0x1000\n+#define AUDIO_FORMAT_MPEG                       0x1001\n+#define AUDIO_FORMAT_AC3                        0x1002\n+\n+/*  Audio Data Format Type III Codes */\n+#define AUDIO_FORMAT_TYPE_III_UNDEFINED         0x2000\n+#define AUDIO_FORMAT_IEC1937_AC3                0x2001\n+#define AUDIO_FORMAT_IEC1937_MPEG1_L1           0x2002\n+#define AUDIO_FORMAT_IEC1937_MPEG1_L2_3         0x2003\n+#define AUDIO_FORMAT_IEC1937_MPEG2_NOEXT        0x2003\n+#define AUDIO_FORMAT_IEC1937_MPEG2_EXT          0x2004\n+#define AUDIO_FORMAT_IEC1937_MPEG2_L1_LS        0x2005\n+#define AUDIO_FORMAT_IEC1937_MPEG2_L2_3         0x2006\n+\n+\n+/* Predefined Audio Channel Configuration Bits */\n+#define AUDIO_CHANNEL_M                         0x0000  /* Mono */\n+#define AUDIO_CHANNEL_L                         0x0001  /* Left Front */\n+#define AUDIO_CHANNEL_R                         0x0002  /* Right Front */\n+#define AUDIO_CHANNEL_C                         0x0004  /* Center Front */\n+#define AUDIO_CHANNEL_LFE                       0x0008  /* Low Freq. Enhance. */\n+#define AUDIO_CHANNEL_LS                        0x0010  /* Left Surround */\n+#define AUDIO_CHANNEL_RS                        0x0020  /* Right Surround */\n+#define AUDIO_CHANNEL_LC                        0x0040  /* Left of Center */\n+#define AUDIO_CHANNEL_RC                        0x0080  /* Right of Center */\n+#define AUDIO_CHANNEL_S                         0x0100  /* Surround */\n+#define AUDIO_CHANNEL_SL                        0x0200  /* Side Left */\n+#define AUDIO_CHANNEL_SR                        0x0400  /* Side Right */\n+#define AUDIO_CHANNEL_T                         0x0800  /* Top */\n+\n+\n+/* Feature Unit Control Bits */\n+#define AUDIO_CONTROL_MUTE                      0x0001\n+#define AUDIO_CONTROL_VOLUME                    0x0002\n+#define AUDIO_CONTROL_BASS                      0x0004\n+#define AUDIO_CONTROL_MID                       0x0008\n+#define AUDIO_CONTROL_TREBLE                    0x0010\n+#define AUDIO_CONTROL_GRAPHIC_EQUALIZER         0x0020\n+#define AUDIO_CONTROL_AUTOMATIC_GAIN            0x0040\n+#define AUDIO_CONTROL_DEALY                     0x0080\n+#define AUDIO_CONTROL_BASS_BOOST                0x0100\n+#define AUDIO_CONTROL_LOUDNESS                  0x0200\n+\n+/* Processing Unit Control Bits: */\n+#define AUDIO_CONTROL_ENABLE                    0x0001  /* Common Bit */\n+#define AUDIO_CONTROL_MODE_SELECT               0x0002  /* Common Bit */\n+\n+/* - Up/Down-mix Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+/*      AUDIO_CONTROL_MODE_SELECT               0x0002     Common Bit */\n+\n+/* - Dolby Prologic Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+/*      AUDIO_CONTROL_MODE_SELECT               0x0002     Common Bit */\n+\n+/* - 3D Stereo Extender Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+#define AUDIO_CONTROL_SPACIOUSNESS              0x0002\n+\n+/* - Reverberation Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+#define AUDIO_CONTROL_REVERB_TYPE               0x0002\n+#define AUDIO_CONTROL_REVERB_LEVEL              0x0004\n+#define AUDIO_CONTROL_REVERB_TIME               0x0008\n+#define AUDIO_CONTROL_REVERB_FEEDBACK           0x0010\n+\n+/* - Chorus Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+#define AUDIO_CONTROL_CHORUS_LEVEL              0x0002\n+#define AUDIO_CONTROL_SHORUS_RATE               0x0004\n+#define AUDIO_CONTROL_CHORUS_DEPTH              0x0008\n+\n+/* - Dynamic Range Compressor Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+#define AUDIO_CONTROL_COMPRESSION_RATE          0x0002\n+#define AUDIO_CONTROL_MAX_AMPL                  0x0004\n+#define AUDIO_CONTROL_THRESHOLD                 0x0008\n+#define AUDIO_CONTROL_ATTACK_TIME               0x0010\n+#define AUDIO_CONTROL_RELEASE_TIME              0x0020\n+\n+/* Extension Unit Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+\n+/* Endpoint Control Bits */\n+#define AUDIO_CONTROL_SAMPLING_FREQ             0x01\n+#define AUDIO_CONTROL_PITCH                     0x02\n+#define AUDIO_MAX_PACKETS_ONLY                  0x80\n+\n+\n+/* Audio Terminal Types */\n+\n+/*  USB Terminal Types */\n+#define AUDIO_TERMINAL_USB_UNDEFINED            0x0100\n+#define AUDIO_TERMINAL_USB_STREAMING            0x0101\n+#define AUDIO_TERMINAL_USB_VENDOR_SPECIFIC      0x01FF\n+\n+/*  Input Terminal Types */\n+#define AUDIO_TERMINAL_INPUT_UNDEFINED          0x0200\n+#define AUDIO_TERMINAL_MICROPHONE               0x0201\n+#define AUDIO_TERMINAL_DESKTOP_MICROPHONE       0x0202\n+#define AUDIO_TERMINAL_PERSONAL_MICROPHONE      0x0203\n+#define AUDIO_TERMINAL_OMNI_DIR_MICROPHONE      0x0204\n+#define AUDIO_TERMINAL_MICROPHONE_ARRAY         0x0205\n+#define AUDIO_TERMINAL_PROCESSING_MIC_ARRAY     0x0206\n+\n+/*  Output Terminal Types */\n+#define AUDIO_TERMINAL_OUTPUT_UNDEFINED         0x0300\n+#define AUDIO_TERMINAL_SPEAKER                  0x0301\n+#define AUDIO_TERMINAL_HEADPHONES               0x0302\n+#define AUDIO_TERMINAL_HEAD_MOUNTED_AUDIO       0x0303\n+#define AUDIO_TERMINAL_DESKTOP_SPEAKER          0x0304\n+#define AUDIO_TERMINAL_ROOM_SPEAKER             0x0305\n+#define AUDIO_TERMINAL_COMMUNICATION_SPEAKER    0x0306\n+#define AUDIO_TERMINAL_LOW_FREQ_SPEAKER         0x0307\n+\n+/*  Bi-directional Terminal Types */\n+#define AUDIO_TERMINAL_BIDIRECTIONAL_UNDEFINED  0x0400\n+#define AUDIO_TERMINAL_HANDSET                  0x0401\n+#define AUDIO_TERMINAL_HEAD_MOUNTED_HANDSET     0x0402\n+#define AUDIO_TERMINAL_SPEAKERPHONE             0x0403\n+#define AUDIO_TERMINAL_SPEAKERPHONE_ECHOSUPRESS 0x0404\n+#define AUDIO_TERMINAL_SPEAKERPHONE_ECHOCANCEL  0x0405\n+\n+/*  Telephony Terminal Types */\n+#define AUDIO_TERMINAL_TELEPHONY_UNDEFINED      0x0500\n+#define AUDIO_TERMINAL_PHONE_LINE               0x0501\n+#define AUDIO_TERMINAL_TELEPHONE                0x0502\n+#define AUDIO_TERMINAL_DOWN_LINE_PHONE          0x0503\n+\n+/*  External Terminal Types */\n+#define AUDIO_TERMINAL_EXTERNAL_UNDEFINED       0x0600\n+#define AUDIO_TERMINAL_ANALOG_CONNECTOR         0x0601\n+#define AUDIO_TERMINAL_DIGITAL_AUDIO_INTERFACE  0x0602\n+#define AUDIO_TERMINAL_LINE_CONNECTOR           0x0603\n+#define AUDIO_TERMINAL_LEGACY_AUDIO_CONNECTOR   0x0604\n+#define AUDIO_TERMINAL_SPDIF_INTERFACE          0x0605\n+#define AUDIO_TERMINAL_1394_DA_STREAM           0x0606\n+#define AUDIO_TERMINAL_1394_DA_STREAM_TRACK     0x0607\n+\n+/*  Embedded Function Terminal Types */\n+#define AUDIO_TERMINAL_EMBEDDED_UNDEFINED       0x0700\n+#define AUDIO_TERMINAL_CALIBRATION_NOISE        0x0701\n+#define AUDIO_TERMINAL_EQUALIZATION_NOISE       0x0702\n+#define AUDIO_TERMINAL_CD_PLAYER                0x0703\n+#define AUDIO_TERMINAL_DAT                      0x0704\n+#define AUDIO_TERMINAL_DCC                      0x0705\n+#define AUDIO_TERMINAL_MINI_DISK                0x0706\n+#define AUDIO_TERMINAL_ANALOG_TAPE              0x0707\n+#define AUDIO_TERMINAL_PHONOGRAPH               0x0708\n+#define AUDIO_TERMINAL_VCR_AUDIO                0x0709\n+#define AUDIO_TERMINAL_VIDEO_DISC_AUDIO         0x070A\n+#define AUDIO_TERMINAL_DVD_AUDIO                0x070B\n+#define AUDIO_TERMINAL_TV_TUNER_AUDIO           0x070C\n+#define AUDIO_TERMINAL_SATELLITE_RECEIVER_AUDIO 0x070D\n+#define AUDIO_TERMINAL_CABLE_TUNER_AUDIO        0x070E\n+#define AUDIO_TERMINAL_DSS_AUDIO                0x070F\n+#define AUDIO_TERMINAL_RADIO_RECEIVER           0x0710\n+#define AUDIO_TERMINAL_RADIO_TRANSMITTER        0x0711\n+#define AUDIO_TERMINAL_MULTI_TRACK_RECORDER     0x0712\n+#define AUDIO_TERMINAL_SYNTHESIZER              0x0713\n+\n+\n+#endif  /* __AUDIO_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_cdc.h ./lpc_chip_43xx/inc/usbd/usbd_cdc.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_cdc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_cdc.h\t2017-02-27 20:42:08.464009492 -0300\n@@ -0,0 +1,249 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_cdc.h 165 2011-04-14 17:41:11Z usb10131                       $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Communication Device Class User module Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __CDC_H\n+#define __CDC_H\n+\n+#include \"usbd.h\"\n+\n+/*----------------------------------------------------------------------------\n+ *      Definitions  based on usbcdc11.pdf (www.usb.org)\n+ *---------------------------------------------------------------------------*/\n+/* Communication device class specification version 1.10 */\n+#define CDC_V1_10                               0x0110\n+\n+/* Communication interface class code */\n+/* (usbcdc11.pdf, 4.2, Table 15) */\n+#define CDC_COMMUNICATION_INTERFACE_CLASS       0x02\n+\n+/* Communication interface class subclass codes */\n+/* (usbcdc11.pdf, 4.3, Table 16) */\n+#define CDC_DIRECT_LINE_CONTROL_MODEL           0x01\n+#define CDC_ABSTRACT_CONTROL_MODEL              0x02\n+#define CDC_TELEPHONE_CONTROL_MODEL             0x03\n+#define CDC_MULTI_CHANNEL_CONTROL_MODEL         0x04\n+#define CDC_CAPI_CONTROL_MODEL                  0x05\n+#define CDC_ETHERNET_NETWORKING_CONTROL_MODEL   0x06\n+#define CDC_ATM_NETWORKING_CONTROL_MODEL        0x07\n+\n+/* Communication interface class control protocol codes */\n+/* (usbcdc11.pdf, 4.4, Table 17) */\n+#define CDC_PROTOCOL_COMMON_AT_COMMANDS         0x01\n+\n+/* Data interface class code */\n+/* (usbcdc11.pdf, 4.5, Table 18) */\n+#define CDC_DATA_INTERFACE_CLASS                0x0A\n+\n+/* Data interface class protocol codes */\n+/* (usbcdc11.pdf, 4.7, Table 19) */\n+#define CDC_PROTOCOL_ISDN_BRI                   0x30\n+#define CDC_PROTOCOL_HDLC                       0x31\n+#define CDC_PROTOCOL_TRANSPARENT                0x32\n+#define CDC_PROTOCOL_Q921_MANAGEMENT            0x50\n+#define CDC_PROTOCOL_Q921_DATA_LINK             0x51\n+#define CDC_PROTOCOL_Q921_MULTIPLEXOR           0x52\n+#define CDC_PROTOCOL_V42                        0x90\n+#define CDC_PROTOCOL_EURO_ISDN                  0x91\n+#define CDC_PROTOCOL_V24_RATE_ADAPTATION        0x92\n+#define CDC_PROTOCOL_CAPI                       0x93\n+#define CDC_PROTOCOL_HOST_BASED_DRIVER          0xFD\n+#define CDC_PROTOCOL_DESCRIBED_IN_PUFD          0xFE\n+\n+/* Type values for bDescriptorType field of functional descriptors */\n+/* (usbcdc11.pdf, 5.2.3, Table 24) */\n+#define CDC_CS_INTERFACE                        0x24\n+#define CDC_CS_ENDPOINT                         0x25\n+\n+/* Type values for bDescriptorSubtype field of functional descriptors */\n+/* (usbcdc11.pdf, 5.2.3, Table 25) */\n+#define CDC_HEADER                              0x00\n+#define CDC_CALL_MANAGEMENT                     0x01\n+#define CDC_ABSTRACT_CONTROL_MANAGEMENT         0x02\n+#define CDC_DIRECT_LINE_MANAGEMENT              0x03\n+#define CDC_TELEPHONE_RINGER                    0x04\n+#define CDC_REPORTING_CAPABILITIES              0x05\n+#define CDC_UNION                               0x06\n+#define CDC_COUNTRY_SELECTION                   0x07\n+#define CDC_TELEPHONE_OPERATIONAL_MODES         0x08\n+#define CDC_USB_TERMINAL                        0x09\n+#define CDC_NETWORK_CHANNEL                     0x0A\n+#define CDC_PROTOCOL_UNIT                       0x0B\n+#define CDC_EXTENSION_UNIT                      0x0C\n+#define CDC_MULTI_CHANNEL_MANAGEMENT            0x0D\n+#define CDC_CAPI_CONTROL_MANAGEMENT             0x0E\n+#define CDC_ETHERNET_NETWORKING                 0x0F\n+#define CDC_ATM_NETWORKING                      0x10\n+\n+/* CDC class-specific request codes */\n+/* (usbcdc11.pdf, 6.2, Table 46) */\n+/* see Table 45 for info about the specific requests. */\n+#define CDC_SEND_ENCAPSULATED_COMMAND           0x00\n+#define CDC_GET_ENCAPSULATED_RESPONSE           0x01\n+#define CDC_SET_COMM_FEATURE                    0x02\n+#define CDC_GET_COMM_FEATURE                    0x03\n+#define CDC_CLEAR_COMM_FEATURE                  0x04\n+#define CDC_SET_AUX_LINE_STATE                  0x10\n+#define CDC_SET_HOOK_STATE                      0x11\n+#define CDC_PULSE_SETUP                         0x12\n+#define CDC_SEND_PULSE                          0x13\n+#define CDC_SET_PULSE_TIME                      0x14\n+#define CDC_RING_AUX_JACK                       0x15\n+#define CDC_SET_LINE_CODING                     0x20\n+#define CDC_GET_LINE_CODING                     0x21\n+#define CDC_SET_CONTROL_LINE_STATE              0x22\n+#define CDC_SEND_BREAK                          0x23\n+#define CDC_SET_RINGER_PARMS                    0x30\n+#define CDC_GET_RINGER_PARMS                    0x31\n+#define CDC_SET_OPERATION_PARMS                 0x32\n+#define CDC_GET_OPERATION_PARMS                 0x33\n+#define CDC_SET_LINE_PARMS                      0x34\n+#define CDC_GET_LINE_PARMS                      0x35\n+#define CDC_DIAL_DIGITS                         0x36\n+#define CDC_SET_UNIT_PARAMETER                  0x37\n+#define CDC_GET_UNIT_PARAMETER                  0x38\n+#define CDC_CLEAR_UNIT_PARAMETER                0x39\n+#define CDC_GET_PROFILE                         0x3A\n+#define CDC_SET_ETHERNET_MULTICAST_FILTERS      0x40\n+#define CDC_SET_ETHERNET_PMP_FILTER             0x41\n+#define CDC_GET_ETHERNET_PMP_FILTER             0x42\n+#define CDC_SET_ETHERNET_PACKET_FILTER          0x43\n+#define CDC_GET_ETHERNET_STATISTIC              0x44\n+#define CDC_SET_ATM_DATA_FORMAT                 0x50\n+#define CDC_GET_ATM_DEVICE_STATISTICS           0x51\n+#define CDC_SET_ATM_DEFAULT_VC                  0x52\n+#define CDC_GET_ATM_VC_STATISTICS               0x53\n+\n+/* Communication feature selector codes */\n+/* (usbcdc11.pdf, 6.2.2..6.2.4, Table 47) */\n+#define CDC_ABSTRACT_STATE                      0x01\n+#define CDC_COUNTRY_SETTING                     0x02\n+\n+/* Feature Status returned for ABSTRACT_STATE Selector */\n+/* (usbcdc11.pdf, 6.2.3, Table 48) */\n+#define CDC_IDLE_SETTING                        (1 << 0)\n+#define CDC_DATA_MULTPLEXED_STATE               (1 << 1)\n+\n+\n+/* Control signal bitmap values for the SetControlLineState request */\n+/* (usbcdc11.pdf, 6.2.14, Table 51) */\n+#define CDC_DTE_PRESENT                         (1 << 0)\n+#define CDC_ACTIVATE_CARRIER                    (1 << 1)\n+\n+/* CDC class-specific notification codes */\n+/* (usbcdc11.pdf, 6.3, Table 68) */\n+/* see Table 67 for Info about class-specific notifications */\n+#define CDC_NOTIFICATION_NETWORK_CONNECTION     0x00\n+#define CDC_RESPONSE_AVAILABLE                  0x01\n+#define CDC_AUX_JACK_HOOK_STATE                 0x08\n+#define CDC_RING_DETECT                         0x09\n+#define CDC_NOTIFICATION_SERIAL_STATE           0x20\n+#define CDC_CALL_STATE_CHANGE                   0x28\n+#define CDC_LINE_STATE_CHANGE                   0x29\n+#define CDC_CONNECTION_SPEED_CHANGE             0x2A\n+\n+/* UART state bitmap values (Serial state notification). */\n+/* (usbcdc11.pdf, 6.3.5, Table 69) */\n+#define CDC_SERIAL_STATE_OVERRUN                (1 << 6)  /* receive data overrun error has occurred */\n+#define CDC_SERIAL_STATE_PARITY                 (1 << 5)  /* parity error has occurred */\n+#define CDC_SERIAL_STATE_FRAMING                (1 << 4)  /* framing error has occurred */\n+#define CDC_SERIAL_STATE_RING                   (1 << 3)  /* state of ring signal detection */\n+#define CDC_SERIAL_STATE_BREAK                  (1 << 2)  /* state of break detection */\n+#define CDC_SERIAL_STATE_TX_CARRIER             (1 << 1)  /* state of transmission carrier */\n+#define CDC_SERIAL_STATE_RX_CARRIER             (1 << 0)  /* state of receiver carrier */\n+\n+\n+/*----------------------------------------------------------------------------\n+ *      Structures  based on usbcdc11.pdf (www.usb.org)\n+ *---------------------------------------------------------------------------*/\n+\n+/* Header functional descriptor */\n+/* (usbcdc11.pdf, 5.2.3.1) */\n+/* This header must precede any list of class-specific descriptors. */\n+PRE_PACK struct POST_PACK _CDC_HEADER_DESCRIPTOR{\n+  uint8_t  bFunctionLength;                      /* size of this descriptor in bytes */\n+  uint8_t  bDescriptorType;                      /* CS_INTERFACE descriptor type */\n+  uint8_t  bDescriptorSubtype;                   /* Header functional descriptor subtype */\n+  uint16_t bcdCDC;                               /* USB CDC specification release version */\n+};\n+typedef struct _CDC_HEADER_DESCRIPTOR CDC_HEADER_DESCRIPTOR;\n+\n+/* Call management functional descriptor */\n+/* (usbcdc11.pdf, 5.2.3.2) */\n+/* Describes the processing of calls for the communication class interface. */\n+PRE_PACK struct POST_PACK _CDC_CALL_MANAGEMENT_DESCRIPTOR {\n+  uint8_t  bFunctionLength;                      /* size of this descriptor in bytes */\n+  uint8_t  bDescriptorType;                      /* CS_INTERFACE descriptor type */\n+  uint8_t  bDescriptorSubtype;                   /* call management functional descriptor subtype */\n+  uint8_t  bmCapabilities;                       /* capabilities that this configuration supports */\n+  uint8_t  bDataInterface;                       /* interface number of the data class interface used for call management (optional) */\n+};\n+typedef struct _CDC_CALL_MANAGEMENT_DESCRIPTOR CDC_CALL_MANAGEMENT_DESCRIPTOR;\n+\n+/* Abstract control management functional descriptor */\n+/* (usbcdc11.pdf, 5.2.3.3) */\n+/* Describes the command supported by the communication interface class with the Abstract Control Model subclass code. */\n+PRE_PACK struct POST_PACK _CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR {\n+  uint8_t  bFunctionLength;                      /* size of this descriptor in bytes */\n+  uint8_t  bDescriptorType;                      /* CS_INTERFACE descriptor type */\n+  uint8_t  bDescriptorSubtype;                   /* abstract control management functional descriptor subtype */\n+  uint8_t  bmCapabilities;                       /* capabilities supported by this configuration */\n+};\n+typedef struct _CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR;\n+\n+/* Union functional descriptors */\n+/* (usbcdc11.pdf, 5.2.3.8) */\n+/* Describes the relationship between a group of interfaces that can be considered to form a functional unit. */\n+PRE_PACK struct POST_PACK _CDC_UNION_DESCRIPTOR {\n+  uint8_t  bFunctionLength;                      /* size of this descriptor in bytes */\n+  uint8_t  bDescriptorType;                      /* CS_INTERFACE descriptor type */\n+  uint8_t  bDescriptorSubtype;                   /* union functional descriptor subtype */\n+  uint8_t  bMasterInterface;                     /* interface number designated as master */\n+};\n+typedef struct _CDC_UNION_DESCRIPTOR CDC_UNION_DESCRIPTOR;\n+\n+/* Union functional descriptors with one slave interface */\n+/* (usbcdc11.pdf, 5.2.3.8) */\n+PRE_PACK struct POST_PACK _CDC_UNION_1SLAVE_DESCRIPTOR {\n+  CDC_UNION_DESCRIPTOR sUnion;              /* Union functional descriptor */\n+  uint8_t              bSlaveInterfaces[1]; /* Slave interface 0 */\n+};\n+typedef struct _CDC_UNION_1SLAVE_DESCRIPTOR CDC_UNION_1SLAVE_DESCRIPTOR;\n+\n+/* Line coding structure */\n+/* Format of the data returned when a GetLineCoding request is received */\n+/* (usbcdc11.pdf, 6.2.13) */\n+PRE_PACK struct POST_PACK _CDC_LINE_CODING {\n+  uint32_t dwDTERate;                            /* Data terminal rate in bits per second */\n+  uint8_t  bCharFormat;                          /* Number of stop bits */\n+  uint8_t  bParityType;                          /* Parity bit type */\n+  uint8_t  bDataBits;                            /* Number of data bits */\n+};\n+typedef struct _CDC_LINE_CODING CDC_LINE_CODING;\n+\n+/* Notification header */\n+/* Data sent on the notification endpoint must follow this header. */\n+/* see  USB_SETUP_PACKET in file usb.h */\n+typedef USB_SETUP_PACKET CDC_NOTIFICATION_HEADER;\n+\n+#endif /* __CDC_H */\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_cdcuser.h ./lpc_chip_43xx/inc/usbd/usbd_cdcuser.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_cdcuser.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_cdcuser.h\t2017-02-27 20:42:08.464009492 -0300\n@@ -0,0 +1,529 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_cdcuser.h 331 2012-08-09 18:54:34Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Communication Device Class User module Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __CDCUSER_H__\n+#define __CDCUSER_H__\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"usbd_cdc.h\"\n+\n+/** \\file\n+ *  \\brief Communication Device Class (CDC) API structures and function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based CDC function driver.\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_CDC Communication Device Class (CDC) Function Driver\n+ *  \\section Sec_CDCModDescription Module Description\n+ *  CDC Class Function Driver module. This module contains an internal implementation of the USB CDC Class.\n+ *\n+ *  User applications can use this class driver instead of implementing the CDC-ACM class manually\n+ *  via the low-level USBD_HW and USBD_Core APIs.\n+ *\n+ *  This module is designed to simplify the user code by exposing only the required interface needed to interface with\n+ *  Devices using the USB CDC-ACM Class.\n+ */\n+\n+/*----------------------------------------------------------------------------\n+  We need a buffer for incoming data on USB port because USB receives\n+  much faster than  UART transmits\n+ *---------------------------------------------------------------------------*/\n+/* Buffer masks */\n+#define CDC_BUF_SIZE               (128)               /* Output buffer in bytes (power 2) */\n+                                                       /* large enough for file transfer */\n+#define CDC_BUF_MASK               (CDC_BUF_SIZE-1ul)\n+\n+/** \\brief Communication Device Class function driver initialization parameter data structure.\n+ *  \\ingroup USBD_CDC\n+ *\n+ *  \\details  This data structure is used to pass initialization parameters to the\n+ *  Communication Device Class function driver's init function.\n+ *\n+ */\n+typedef struct USBD_CDC_INIT_PARAM\n+{\n+  /* memory allocation params */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 4 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_CDC_API::GetMemSize() routine.*/\n+  /** Pointer to the control interface descriptor within the descriptor\n+  * array (\\em high_speed_desc) passed to Init() through \\ref USB_CORE_DESCS_T\n+  * structure. The stack assumes both HS and FS use same BULK endpoints.\n+  */\n+  uint8_t* cif_intf_desc;\n+  /** Pointer to the data interface descriptor within the descriptor\n+  * array (\\em high_speed_desc) passed to Init() through \\ref USB_CORE_DESCS_T\n+  * structure. The stack assumes both HS and FS use same BULK endpoints.\n+  */\n+  uint8_t* dif_intf_desc;\n+\n+  /* user defined functions */\n+\n+  /* required functions */\n+  /**\n+  *  Communication Interface Class specific get request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends CIC management element get requests.\n+  *  \\note Applications implementing Abstract Control Model subclass can set this\n+  *  param to NULL. As the default driver parses ACM requests and calls the\n+  *  individual ACM call-back routines defined in this structure. For all other subclasses\n+  *  this routine should be provided by the application.\n+  *  \\n\n+  *  The setup packet data (\\em pSetup) is passed to the call-back so that application\n+  *  can extract the CIC request type and other associated data. By default the stack\n+  *  will assign \\em pBuffer pointer to \\em EP0Buff allocated at init. The application\n+  *  code can directly write data into this buffer as long as data is less than 64 byte.\n+  *  If more data has to be sent then application code should update \\em pBuffer pointer\n+  *  and length accordingly.\n+  *\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in, out] pBuffer  Pointer to a pointer of data buffer containing request data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in, out] length  Amount of data to be sent back to host.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CIC_GetRequest)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* length);\n+\n+  /**\n+  *  Communication Interface Class specific set request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a CIC management element requests.\n+  *  \\note Applications implementing Abstract Control Model subclass can set this\n+  *  param to NULL. As the default driver parses ACM requests and calls the\n+  *  individual ACM call-back routines defined in this structure. For all other subclasses\n+  *  this routine should be provided by the application.\n+  *  \\n\n+  *  The setup packet data (\\em pSetup) is passed to the call-back so that application can\n+  *  extract the CIC request type and other associated data. If a set request has data associated,\n+  *  then this call-back is called twice.\n+  *  -# First when setup request is received, at this time application code could update\n+  *  \\em pBuffer pointer to point to the intended destination. The length param is set to 0\n+  *  so that application code knows this is first time. By default the stack will\n+  *  assign \\em pBuffer pointer to \\em EP0Buff allocated at init. Note, if data length is\n+  *  greater than 64 bytes and application code doesn't update \\em pBuffer pointer the\n+  *  stack will send STALL condition to host.\n+  *  -# Second when the data is received from the host. This time the length param is set\n+  *  with number of data bytes received.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in, out] pBuffer  Pointer to a pointer of data buffer containing request data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in] length  Amount of data copied to destination buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CIC_SetRequest)( USBD_HANDLE_T hCdc, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t length);\n+\n+  /**\n+  *  Communication Device Class specific BULK IN endpoint handler.\n+  *\n+  *  The application software should provide the BULK IN endpoint handler.\n+  *  Applications should transfer data depending on the communication protocol type set in descriptors.\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CDC_BulkIN_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  /**\n+  *  Communication Device Class specific BULK OUT endpoint handler.\n+  *\n+  *  The application software should provide the BULK OUT endpoint handler.\n+  *  Applications should transfer data depending on the communication protocol type set in descriptors.\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CDC_BulkOUT_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SEND_ENCAPSULATED_COMMAND request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SEND_ENCAPSULATED_COMMAND set request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] buffer Pointer to the command buffer.\n+  *  \\param[in] len  Length of the command buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SendEncpsCmd) (USBD_HANDLE_T hCDC, uint8_t* buffer, uint16_t len);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific GET_ENCAPSULATED_RESPONSE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a GET_ENCAPSULATED_RESPONSE request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in, out] buffer Pointer to a pointer of data buffer containing response data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in, out] len  Amount of data to be sent back to host.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*GetEncpsResp) (USBD_HANDLE_T hCDC, uint8_t** buffer, uint16_t* len);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SET_COMM_FEATURE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SET_COMM_FEATURE set request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] feature Communication feature type. See usbcdc11.pdf, section 6.2.4, Table 47.\n+  *  \\param[in] buffer Pointer to the settings buffer for the specified communication feature.\n+  *  \\param[in] len  Length of the request buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SetCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature, uint8_t* buffer, uint16_t len);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific GET_COMM_FEATURE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a GET_ENCAPSULATED_RESPONSE request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] feature Communication feature type. See usbcdc11.pdf, section 6.2.4, Table 47.\n+  *  \\param[in, out] buffer Pointer to a pointer of data buffer containing current settings\n+  *                         for the communication feature.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *  \\param[in, out] len  Amount of data to be sent back to host.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*GetCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature, uint8_t** pBuffer, uint16_t* len);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific CLEAR_COMM_FEATURE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a CLEAR_COMM_FEATURE request. In the call-back the application\n+  *  should Clears the settings for a particular communication feature.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] feature Communication feature type. See usbcdc11.pdf, section 6.2.4, Table 47.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*ClrCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SET_CONTROL_LINE_STATE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SET_CONTROL_LINE_STATE request. RS-232 signal used to tell the DCE\n+  *  device the DTE device is now present\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] state The state value uses bitmap values defined in usbcdc11.pdf,\n+  *        section 6.2.14, Table 51.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SetCtrlLineState) (USBD_HANDLE_T hCDC, uint16_t state);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SEND_BREAK request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SEND_BREAK request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] mstime Duration of Break signal in milliseconds. If mstime is FFFFh, then\n+  *        the application should send break until another SendBreak request is received\n+  *        with the wValue of 0000h.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SendBreak) (USBD_HANDLE_T hCDC, uint16_t mstime);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SET_LINE_CODING request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SET_LINE_CODING request. The application should configure the device\n+  *  per DTE rate, stop-bits, parity, and number-of-character bits settings provided in\n+  *  command buffer. See usbcdc11.pdf, section 6.2.13, table 50 for detail of the command buffer.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] line_coding Pointer to the CDC_LINE_CODING command buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SetLineCode) (USBD_HANDLE_T hCDC, CDC_LINE_CODING* line_coding);\n+\n+  /**\n+  *  Optional Communication Device Class specific INTERRUPT IN endpoint handler.\n+  *\n+  *  The application software should provide the INT IN endpoint handler.\n+  *  Applications should transfer data depending on the communication protocol type set in descriptors.\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CDC_InterruptEP_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  /**\n+  *  Optional user override-able function to replace the default CDC class handler.\n+  *\n+  *  The application software could override the default EP0 class handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_CDC_API::Init().\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CDC_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+} USBD_CDC_INIT_PARAM_T;\n+\n+/** \\brief CDC class API functions structure.\n+ *  \\ingroup USBD_CDC\n+ *\n+ *  This module exposes functions which interact directly with USB device controller hardware.\n+ *\n+ */\n+typedef struct USBD_CDC_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_CDC_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the CDC function driver module.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->CDC->Init(), to allocate memory used\n+   *  by CDC function driver module. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing CDC function driver module initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_CDC_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_CDC_INIT_PARAM_T* param)\n+   *  Function to initialize CDC function driver module.\n+   *\n+   *  This function is called by application layer to initialize CDC function driver module.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in, out] param Structure containing CDC function driver module initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF  Memory buffer passed is not 4-byte\n+   *              aligned or smaller than required.\n+   *          \\retval ERR_API_INVALID_PARAM2 Either CDC_Write() or CDC_Read() or\n+   *              CDC_Verify() callbacks are not defined.\n+   *          \\retval ERR_USBD_BAD_INTF_DESC  Wrong interface descriptor is passed.\n+   *          \\retval ERR_USBD_BAD_EP_DESC  Wrong endpoint descriptor is passed.\n+   */\n+  ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_CDC_INIT_PARAM_T* param, USBD_HANDLE_T* phCDC);\n+\n+  /** \\fn ErrorCode_t SendNotification(USBD_HANDLE_T hCdc, uint8_t bNotification, uint16_t data)\n+   *  Function to send CDC class notifications to host.\n+   *\n+   *  This function is called by application layer to send CDC class notifications to host.\n+   *  See usbcdc11.pdf, section 6.3, Table 67 for various notification types the CDC device can send.\n+   *  \\note The current version of the driver only supports following notifications allowed by ACM subclass:\n+   *  CDC_NOTIFICATION_NETWORK_CONNECTION, CDC_RESPONSE_AVAILABLE, CDC_NOTIFICATION_SERIAL_STATE.\n+   *  \\n\n+   *  For all other notifications application should construct the notification buffer appropriately\n+   *  and call hw->USB_WriteEP() for interrupt endpoint associated with the interface.\n+   *\n+   *  \\param[in] hCdc Handle to CDC function driver.\n+   *  \\param[in] bNotification Notification type allowed by ACM subclass. Should be CDC_NOTIFICATION_NETWORK_CONNECTION,\n+   *        CDC_RESPONSE_AVAILABLE or CDC_NOTIFICATION_SERIAL_STATE. For all other types ERR_API_INVALID_PARAM2\n+   *        is returned. See usbcdc11.pdf, section 3.6.2.1, table 5.\n+   *  \\param[in] data Data associated with notification.\n+   *        \\n For CDC_NOTIFICATION_NETWORK_CONNECTION a non-zero data value is interpreted as connected state.\n+   *        \\n For CDC_RESPONSE_AVAILABLE this parameter is ignored.\n+   *        \\n For CDC_NOTIFICATION_SERIAL_STATE the data should use bitmap values defined in usbcdc11.pdf,\n+   *        section 6.3.5, Table 69.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_API_INVALID_PARAM2  If unsupported notification type is passed.\n+   *\n+   */\n+  ErrorCode_t (*SendNotification)(USBD_HANDLE_T hCdc, uint8_t bNotification, uint16_t data);\n+\n+} USBD_CDC_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  ADVANCED_API */\n+\n+typedef struct _CDC_CTRL_T\n+{\n+  USB_CORE_CTRL_T*  pUsbCtrl;\n+  /* notification buffer */\n+  uint8_t notice_buf[12];\n+  CDC_LINE_CODING line_coding;\n+  uint8_t pad0;\n+\n+  uint8_t cif_num;                 /* control interface number */\n+  uint8_t dif_num;                 /* data interface number */\n+  uint8_t epin_num;                /* BULK IN endpoint number */\n+  uint8_t epout_num;               /* BULK OUT endpoint number */\n+  uint8_t epint_num;               /* Interrupt IN endpoint number */\n+  uint8_t pad[3];\n+  /* user defined functions */\n+  ErrorCode_t (*SendEncpsCmd) (USBD_HANDLE_T hCDC, uint8_t* buffer, uint16_t len);\n+  ErrorCode_t (*GetEncpsResp) (USBD_HANDLE_T hCDC, uint8_t** buffer, uint16_t* len);\n+  ErrorCode_t (*SetCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature, uint8_t* buffer, uint16_t len);\n+  ErrorCode_t (*GetCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature, uint8_t** pBuffer, uint16_t* len);\n+  ErrorCode_t (*ClrCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature);\n+  ErrorCode_t (*SetCtrlLineState) (USBD_HANDLE_T hCDC, uint16_t state);\n+  ErrorCode_t (*SendBreak) (USBD_HANDLE_T hCDC, uint16_t state);\n+  ErrorCode_t (*SetLineCode) (USBD_HANDLE_T hCDC, CDC_LINE_CODING* line_coding);\n+\n+  /* virtual functions */\n+  ErrorCode_t (*CIC_GetRequest)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* length);\n+  ErrorCode_t (*CIC_SetRequest)( USBD_HANDLE_T hCdc, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t length);\n+\n+} USB_CDC_CTRL_T;\n+\n+/* structure used by old ROM drivers, needed for workaround */\n+typedef struct _CDC0_CTRL_T {\n+   USB_CORE_CTRL_T *pUsbCtrl;\n+   /* notification buffer */\n+   uint8_t notice_buf[12];\n+   CDC_LINE_CODING line_coding;\n+\n+   uint8_t cif_num;                /* control interface number */\n+   uint8_t dif_num;                /* data interface number */\n+   uint8_t epin_num;               /* BULK IN endpoint number */\n+   uint8_t epout_num;              /* BULK OUT endpoint number */\n+   uint8_t epint_num;              /* Interrupt IN endpoint number */\n+   /* user defined functions */\n+   ErrorCode_t (*SendEncpsCmd)(USBD_HANDLE_T hCDC, uint8_t *buffer, uint16_t len);\n+   ErrorCode_t (*GetEncpsResp)(USBD_HANDLE_T hCDC, uint8_t * *buffer, uint16_t *len);\n+   ErrorCode_t (*SetCommFeature)(USBD_HANDLE_T hCDC, uint16_t feature, uint8_t *buffer, uint16_t len);\n+   ErrorCode_t (*GetCommFeature)(USBD_HANDLE_T hCDC, uint16_t feature, uint8_t * *pBuffer, uint16_t *len);\n+   ErrorCode_t (*ClrCommFeature)(USBD_HANDLE_T hCDC, uint16_t feature);\n+   ErrorCode_t (*SetCtrlLineState)(USBD_HANDLE_T hCDC, uint16_t state);\n+   ErrorCode_t (*SendBreak)(USBD_HANDLE_T hCDC, uint16_t state);\n+   ErrorCode_t (*SetLineCode)(USBD_HANDLE_T hCDC, CDC_LINE_CODING *line_coding);\n+\n+   /* virtual functions */\n+   ErrorCode_t (*CIC_GetRequest)(USBD_HANDLE_T hHid, USB_SETUP_PACKET *pSetup, uint8_t * *pBuffer, uint16_t *length);\n+   ErrorCode_t (*CIC_SetRequest)(USBD_HANDLE_T hCdc, USB_SETUP_PACKET *pSetup, uint8_t * *pBuffer, uint16_t length);\n+\n+} USB_CDC0_CTRL_T;\n+\n+typedef ErrorCode_t (*CIC_SetRequest_t)(USBD_HANDLE_T hCdc, USB_SETUP_PACKET *pSetup, uint8_t * *pBuffer, uint16_t length);\n+\n+/** @cond  DIRECT_API */\n+extern uint32_t mwCDC_GetMemSize(USBD_CDC_INIT_PARAM_T* param);\n+extern ErrorCode_t mwCDC_init(USBD_HANDLE_T hUsb, USBD_CDC_INIT_PARAM_T* param, USBD_HANDLE_T* phCDC);\n+extern ErrorCode_t mwCDC_SendNotification (USBD_HANDLE_T hCdc, uint8_t bNotification, uint16_t data);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+\n+\n+\n+\n+#endif  /* __CDCUSER_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_core.h ./lpc_chip_43xx/inc/usbd/usbd_core.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_core.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_core.h\t2017-02-27 20:42:08.464009492 -0300\n@@ -0,0 +1,585 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_core.h 331 2012-08-09 18:54:34Z usb10131                      $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB core controller structure definitions and function prototypes.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __MW_USBD_CORE_H__\n+#define __MW_USBD_CORE_H__\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"app_usbd_cfg.h\"\n+\n+/** \\file\n+ *  \\brief ROM API for USB device stack.\n+ *\n+ *  Definition of functions exported by core layer of ROM based USB device stack.\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_Core USB Core Layer\n+ *  \\section Sec_CoreModDescription Module Description\n+ *  The USB Core Layer implements the device abstraction defined in the <em> Universal Serial Bus Specification, </em>\n+ *  for applications to interact with the USB device interface on the device. The software in this layer responds to\n+ *  standard requests and returns standard descriptors. In current stack the Init() routine part of\n+ *  \\ref USBD_HW_API_T structure initializes both hardware layer and core layer.\n+ */\n+\n+\n+/* function pointer types */\n+\n+/** \\ingroup USBD_Core\n+ *  \\typedef USB_CB_T\n+ *  \\brief USB device stack's event callback function type.\n+ *\n+ *  The USB device stack exposes several event triggers through callback to application layer. The\n+ *  application layer can register methods to be called when such USB event happens.\n+ *\n+ *  \\param[in] hUsb Handle to the USB device stack.\n+ *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+ *          \\retval LPC_OK On success\n+ *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+ *          \\retval ERR_USBD_xxx  Other error conditions.\n+ *\n+ */\n+typedef ErrorCode_t (*USB_CB_T) (USBD_HANDLE_T hUsb);\n+\n+/** \\ingroup USBD_Core\n+ *  \\typedef USB_PARAM_CB_T\n+ *  \\brief USB device stack's event callback function type.\n+ *\n+ *  The USB device stack exposes several event triggers through callback to application layer. The\n+ *  application layer can register methods to be called when such USB event happens.\n+ *\n+ *  \\param[in] hUsb Handle to the USB device stack.\n+ *  \\param[in] param1 Extra information related to the event.\n+ *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+ *          \\retval LPC_OK On success\n+ *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+ *          \\retval ERR_USBD_xxx  For other error conditions.\n+ *\n+ */\n+typedef ErrorCode_t (*USB_PARAM_CB_T) (USBD_HANDLE_T hUsb, uint32_t param1);\n+\n+/** \\ingroup USBD_Core\n+ *  \\typedef USB_EP_HANDLER_T\n+ *  \\brief USBD setup request and endpoint event handler type.\n+ *\n+ *  The application layer should define the custom class's EP0 handler with function signature.\n+ *  The stack calls all the registered class handlers on any EP0 event before going through default\n+ *  handling of the event. This gives the class handlers to implement class specific request handlers\n+ *  and also to override the default stack handling for a particular event targeted to the interface.\n+ *  If an event is not handled by the callback the function should return ERR_USBD_UNHANDLED. For all\n+ *  other return codes the stack assumes that callback has taken care of the event and hence will not\n+ *  process the event any further and issues a STALL condition on EP0 indicating error to the host.\n+ *  \\n\n+ *  For endpoint interrupt handler the return value is ignored by the stack.\n+ *  \\n\n+ *  \\param[in] hUsb Handle to the USB device stack.\n+ *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+ *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+ *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+ *          \\retval LPC_OK On success.\n+ *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+ *          \\retval ERR_USBD_xxx  For other error conditions.\n+ *\n+ */\n+typedef ErrorCode_t (*USB_EP_HANDLER_T)(USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+\n+/** \\ingroup USBD_Core\n+ *  \\brief USB descriptors data structure.\n+ *  \\ingroup USBD_Core\n+ *\n+ *  \\details  This structure is used as part of USB device stack initialization\n+ *  parameter structure \\ref USBD_API_INIT_PARAM_T. This structure contains\n+ *  pointers to various descriptor arrays needed by the stack. These descriptors\n+ *  are reported to USB host as part of enumerations process.\n+ *\n+ *  \\note All descriptor pointers assigned in this structure should be on 4 byte\n+ *  aligned address boundary.\n+ */\n+typedef struct _USB_CORE_DESCS_T\n+{\n+  uint8_t *device_desc; /**< Pointer to USB device descriptor */\n+  uint8_t *string_desc; /**< Pointer to array of USB string descriptors */\n+  uint8_t *full_speed_desc; /**< Pointer to USB device configuration descriptor\n+                            * when device is operating in full speed mode.\n+                            */\n+  uint8_t *high_speed_desc; /**< Pointer to USB device configuration descriptor\n+                            * when device is operating in high speed mode. For\n+                            * full-speed only implementation this pointer should\n+                            * be same as full_speed_desc.\n+                            */\n+  uint8_t *device_qualifier; /**< Pointer to USB device qualifier descriptor. For\n+                             * full-speed only implementation this pointer should\n+                             * be set to null (0).\n+                             */\n+} USB_CORE_DESCS_T;\n+\n+/** \\brief USB device stack initialization parameter data structure.\n+ *  \\ingroup USBD_Core\n+ *\n+ *  \\details  This data structure is used to pass initialization parameters to the\n+ *  USB device stack's init function.\n+ *\n+ */\n+typedef struct USBD_API_INIT_PARAM\n+{\n+  uint32_t usb_reg_base; /**< USB device controller's base register address. */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 2048 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_HW_API::GetMemSize() routine.*/\n+  uint8_t max_num_ep; /**< max number of endpoints supported by the USB device\n+                      controller instance (specified by \\em usb_reg_base field)\n+                      to which this instance of stack is attached.\n+                      */\n+  uint8_t pad0[3];\n+  /* USB Device Events Callback Functions */\n+   /** Event for USB interface reset. This event fires when the USB host requests that the device\n+    *  reset its interface. This event fires after the control endpoint has been automatically\n+    *  configured by the library.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will prevent the device from enumerating correctly or operate properly.\n+    *\n+    */\n+  USB_CB_T USB_Reset_Event;\n+\n+   /** Event for USB suspend. This event fires when the USB host suspends the device by halting its\n+    *  transmission of Start Of Frame pulses to the device. This is generally hooked in order to move\n+    *  the device over to a low power state until the host wakes up the device.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will cause other system issues.\n+    */\n+  USB_CB_T USB_Suspend_Event;\n+\n+   /** Event for USB wake up or resume. This event fires when a the USB device interface is suspended\n+    *  and the host wakes up the device by supplying Start Of Frame pulses. This is generally\n+    *  hooked to pull the user application out of a low power state and back into normal operating\n+    *  mode.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will cause other system issues.\n+    *\n+    */\n+  USB_CB_T USB_Resume_Event;\n+\n+  /** Reserved parameter should be set to zero. */\n+  USB_CB_T reserved_sbz;\n+\n+  /** Event for USB Start Of Frame detection, when enabled. This event fires at the start of each USB\n+    *  frame, once per millisecond in full-speed mode or once per 125 microseconds in high-speed mode,\n+   *  and is synchronized to the USB bus.\n+    *\n+    *  This event is time-critical; it is run once per millisecond (full-speed mode) and thus long handlers\n+    *  will significantly degrade device performance. This event should only be enabled when needed to\n+   *  reduce device wake-ups.\n+    *\n+    *  \\note This event is not normally active - it must be manually enabled and disabled via the USB interrupt\n+    *        register.\n+    *        \\n\\n\n+    */\n+  USB_CB_T USB_SOF_Event;\n+\n+  /** Event for remote wake-up configuration, when enabled. This event fires when the USB host\n+    *  request the device to configure itself for remote wake-up capability. The USB host sends\n+   *  this request to device which report remote wake-up capable in their device descriptors,\n+   *  before going to low-power state. The application layer should implement this callback if\n+   *  they have any special on board circuit to trigger remote wake up event. Also application\n+   *  can use this callback to differentiate the following SUSPEND event is caused by cable plug-out\n+   *  or host SUSPEND request. The device can wake-up host only after receiving this callback and\n+   *  remote wake-up feature is enabled by host. To signal remote wake-up the device has to generate\n+   *  resume signaling on bus by calling usapi.hw->WakeUp() routine.\n+    *\n+    *  \\n\\n\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] param1 When 0 - Clear the wake-up configuration, 1 - Enable the wake-up configuration.\n+   *  \\return The call back should return \\ref ErrorCode_t type to indicate success or error condition.\n+    */\n+  USB_PARAM_CB_T USB_WakeUpCfg;\n+\n+  /** Reserved parameter should be set to zero. */\n+  USB_PARAM_CB_T USB_Power_Event;\n+\n+  /** Event for error condition. This event fires when USB device controller detect\n+    *  an error condition in the system.\n+    *\n+    *  \\n\\n\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] param1 USB device interrupt status register.\n+   *  \\return The call back should return \\ref ErrorCode_t type to indicate success or error condition.\n+   */\n+  USB_PARAM_CB_T USB_Error_Event;\n+\n+  /* USB Core Events Callback Functions */\n+  /** Event for USB configuration number changed. This event fires when a the USB host changes the\n+   *  selected configuration number. On receiving configuration change request from host, the stack\n+   *  enables/configures the endpoints needed by the new configuration before calling this callback\n+   *  function.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will prevent the device from enumerating correctly or operate properly.\n+   *\n+   */\n+  USB_CB_T USB_Configure_Event;\n+\n+  /** Event for USB interface setting changed. This event fires when a the USB host changes the\n+   *  interface setting to one of alternate interface settings. On receiving interface change\n+   *  request from host, the stack enables/configures the endpoints needed by the new alternate\n+   *  interface setting before calling this callback function.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will prevent the device from enumerating correctly or operate properly.\n+   *\n+   */\n+  USB_CB_T USB_Interface_Event;\n+\n+  /** Event for USB feature changed. This event fires when a the USB host send set/clear feature\n+   *  request. The stack handles this request for USB_FEATURE_REMOTE_WAKEUP, USB_FEATURE_TEST_MODE\n+   *  and USB_FEATURE_ENDPOINT_STALL features only. On receiving feature request from host, the\n+   *  stack handle the request appropriately and then calls this callback function.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will prevent the device from enumerating correctly or operate properly.\n+   *\n+   */\n+ USB_CB_T USB_Feature_Event;\n+\n+  /* cache and MMU translation functions */\n+  /** Reserved parameter for future use. should be set to zero. */\n+  uint32_t (* virt_to_phys)(void* vaddr);\n+  /** Reserved parameter for future use. should be set to zero. */\n+  void (* cache_flush)(uint32_t* start_adr, uint32_t* end_adr);\n+\n+} USBD_API_INIT_PARAM_T;\n+\n+\n+/** \\brief USBD stack Core API functions structure.\n+ *  \\ingroup USBD_Core\n+ *\n+ *  \\details  This module exposes functions which interact directly with USB device stack's core layer.\n+ *  The application layer uses this component when it has to implement custom class function driver or\n+ *  standard class function driver which is not part of the current USB device stack.\n+ *  The functions exposed by this interface are to register class specific EP0 handlers and corresponding\n+ *  utility functions to manipulate EP0 state machine of the stack. This interface also exposes\n+ *  function to register custom endpoint interrupt handler.\n+ *\n+ */\n+typedef struct USBD_CORE_API\n+{\n+ /** \\fn ErrorCode_t RegisterClassHandler(USBD_HANDLE_T hUsb, USB_EP_HANDLER_T pfn, void* data)\n+  *  Function to register class specific EP0 event handler with USB device stack.\n+  *\n+  *  The application layer uses this function when it has to register the custom class's EP0 handler.\n+  *  The stack calls all the registered class handlers on any EP0 event before going through default\n+  *  handling of the event. This gives the class handlers to implement class specific request handlers\n+  *  and also to override the default stack handling for a particular event targeted to the interface.\n+  *  Check \\ref USB_EP_HANDLER_T for more details on how the callback function should be implemented. Also\n+  *  application layer could use this function to register EP0 handler which responds to vendor specific\n+  *  requests.\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] pfn  Class specific EP0 handler function.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success\n+  *          \\retval ERR_USBD_TOO_MANY_CLASS_HDLR(0x0004000c)  The number of class handlers registered is\n+                        greater than the number of handlers allowed by the stack.\n+  *\n+  */\n+  ErrorCode_t (*RegisterClassHandler)(USBD_HANDLE_T hUsb, USB_EP_HANDLER_T pfn, void* data);\n+\n+ /** \\fn ErrorCode_t RegisterEpHandler(USBD_HANDLE_T hUsb, uint32_t ep_index, USB_EP_HANDLER_T pfn, void* data)\n+  *  Function to register interrupt/event handler for the requested endpoint with USB device stack.\n+  *\n+  *  The application layer uses this function to register the endpoint event handler.\n+  *  The stack calls all the registered endpoint handlers when\n+  *  - USB_EVT_OUT or USB_EVT_OUT_NAK events happen for OUT endpoint.\n+  *  - USB_EVT_IN or USB_EVT_IN_NAK events happen for IN endpoint.\n+  *  Check USB_EP_HANDLER_T for more details on how the callback function should be implemented.\n+  *  \\note By default endpoint _NAK events are not enabled. Application should call \\ref USBD_HW_API_T::EnableEvent\n+  *  for the corresponding endpoint.\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] ep_index  Endpoint index. Computed as\n+  *                       - For OUT endpoints = 2 * endpoint number eg. for EP2_OUT it is 4.\n+  *                       - For IN endopoints = (2 * endpoint number) + 1 eg. for EP2_IN it is 5.\n+  *  \\param[in] pfn  Endpoint event handler function.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success\n+  *          \\retval ERR_API_INVALID_PARAM2  ep_index is outside the boundary ( < 2 * USBD_API_INIT_PARAM_T::max_num_ep).\n+  *\n+  */\n+  ErrorCode_t (*RegisterEpHandler)(USBD_HANDLE_T hUsb, uint32_t ep_index, USB_EP_HANDLER_T pfn, void* data);\n+\n+  /** \\fn void SetupStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in setup state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in setup state. This function will read\n+   *  the setup packet received from USB host into stack's buffer.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*SetupStage )(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void DataInStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in data_in state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in data_in state. This function will write\n+   *  the data present in EP0Data buffer to EP0 FIFO for transmission to host.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*DataInStage)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void DataOutStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in data_out state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in data_out state. This function will read\n+   *  the control data (EP0 out packets) received from USB host into EP0Data buffer.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*DataOutStage)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void StatusInStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in status_in state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in status_in state. This function will send\n+   *  zero length IN packet on EP0 to host, indicating positive status.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*StatusInStage)(USBD_HANDLE_T hUsb);\n+  /** \\fn void StatusOutStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in status_out state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in status_out state. This function will read\n+   *  the zero length OUT packet received from USB host on EP0.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*StatusOutStage)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void StallEp0(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in stall state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  generate STALL signaling on EP0 endpoint. This function will also\n+   *  reset the EP0Data buffer.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*StallEp0)(USBD_HANDLE_T hUsb);\n+\n+} USBD_CORE_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+\n+ /** @cond  ADVANCED_API */\n+\n+/* forward declaration */\n+struct _USB_CORE_CTRL_T;\n+typedef struct _USB_CORE_CTRL_T  USB_CORE_CTRL_T;\n+\n+/* USB device Speed status defines */\n+#define USB_FULL_SPEED    0\n+#define USB_HIGH_SPEED    1\n+\n+/* USB Endpoint Data Structure */\n+typedef struct _USB_EP_DATA\n+{\n+  uint8_t  *pData;\n+  uint16_t   Count;\n+  uint16_t pad0;\n+} USB_EP_DATA;\n+\n+\n+/* USB core controller data structure */\n+struct _USB_CORE_CTRL_T\n+{\n+  /* override-able function pointers ~ c++ style virtual functions*/\n+  USB_CB_T USB_EvtSetupHandler;\n+  USB_CB_T USB_EvtOutHandler;\n+  USB_PARAM_CB_T USB_ReqVendor;\n+  USB_CB_T USB_ReqGetStatus;\n+  USB_CB_T USB_ReqGetDescriptor;\n+  USB_CB_T USB_ReqGetConfiguration;\n+  USB_CB_T USB_ReqSetConfiguration;\n+  USB_CB_T USB_ReqGetInterface;\n+  USB_CB_T USB_ReqSetInterface;\n+  USB_PARAM_CB_T USB_ReqSetClrFeature;\n+\n+  /* USB Device Events Callback Functions */\n+  USB_CB_T USB_Reset_Event;\n+  USB_CB_T USB_Suspend_Event;\n+  USB_CB_T USB_Resume_Event;\n+  USB_CB_T USB_SOF_Event;\n+  USB_PARAM_CB_T USB_Power_Event;\n+  USB_PARAM_CB_T USB_Error_Event;\n+  USB_PARAM_CB_T USB_WakeUpCfg;\n+\n+  /* USB Core Events Callback Functions */\n+  USB_CB_T USB_Configure_Event;\n+  USB_CB_T USB_Interface_Event;\n+  USB_CB_T USB_Feature_Event;\n+\n+  /* cache and MMU translation functions */\n+  uint32_t (* virt_to_phys)(void* vaddr);\n+  void (* cache_flush)(uint32_t* start_adr, uint32_t* end_adr);\n+\n+  /* event handlers for endpoints. */\n+  USB_EP_HANDLER_T  ep_event_hdlr[2 * USB_MAX_EP_NUM];\n+  void*  ep_hdlr_data[2 * USB_MAX_EP_NUM];\n+\n+  /* USB class handlers */\n+  USB_EP_HANDLER_T  ep0_hdlr_cb[USB_MAX_IF_NUM];\n+  void*  ep0_cb_data[USB_MAX_IF_NUM];\n+  uint8_t num_ep0_hdlrs;\n+  /* USB Core data Variables */\n+  uint8_t max_num_ep; /* max number of endpoints supported by the HW */\n+  uint8_t device_speed;\n+  uint8_t  num_interfaces;\n+  uint8_t  device_addr;\n+  uint8_t  config_value;\n+  uint16_t device_status;\n+  uint8_t *device_desc;\n+  uint8_t *string_desc;\n+  uint8_t *full_speed_desc;\n+  uint8_t *high_speed_desc;\n+  uint8_t *device_qualifier;\n+  uint32_t ep_mask;\n+  uint32_t ep_halt;\n+  uint32_t ep_stall;\n+  uint8_t  alt_setting[USB_MAX_IF_NUM];\n+  /* HW driver data pointer */\n+  void* hw_data;\n+\n+  /* USB Endpoint 0 Data Info */\n+  USB_EP_DATA EP0Data;\n+\n+  /* USB Endpoint 0 Buffer */\n+  //ALIGNED(4)\n+  uint8_t  EP0Buf[64];\n+\n+  /* USB Setup Packet */\n+  //ALIGNED(4)\n+  USB_SETUP_PACKET SetupPacket;\n+\n+};\n+\n+/* USB Core Functions */\n+extern void mwUSB_InitCore(USB_CORE_CTRL_T* pCtrl, USB_CORE_DESCS_T* pdescr, USBD_API_INIT_PARAM_T* param);\n+extern void mwUSB_ResetCore(USBD_HANDLE_T hUsb);\n+\n+/* inline functions */\n+static INLINE void USB_SetSpeedMode(USB_CORE_CTRL_T* pCtrl, uint8_t mode)\n+{\n+    pCtrl->device_speed = mode;\n+}\n+\n+static INLINE bool USB_IsConfigured(USBD_HANDLE_T hUsb)\n+{\n+    USB_CORE_CTRL_T* pCtrl = (USB_CORE_CTRL_T*) hUsb;\n+    return (bool) (pCtrl->config_value != 0);\n+}\n+\n+/** @cond  DIRECT_API */\n+/* midleware API */\n+extern ErrorCode_t mwUSB_RegisterClassHandler(USBD_HANDLE_T hUsb, USB_EP_HANDLER_T pfn, void* data);\n+extern ErrorCode_t mwUSB_RegisterEpHandler(USBD_HANDLE_T hUsb, uint32_t ep_index, USB_EP_HANDLER_T pfn, void* data);\n+extern void mwUSB_SetupStage (USBD_HANDLE_T hUsb);\n+extern void mwUSB_DataInStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_DataOutStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StatusInStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StatusOutStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StallEp0(USBD_HANDLE_T hUsb);\n+extern ErrorCode_t mwUSB_RegisterClassHandler(USBD_HANDLE_T hUsb, USB_EP_HANDLER_T pfn, void* data);\n+extern ErrorCode_t mwUSB_RegisterEpHandler(USBD_HANDLE_T hUsb, uint32_t ep_index, USB_EP_HANDLER_T pfn, void* data);\n+extern void mwUSB_SetupStage (USBD_HANDLE_T hUsb);\n+extern void mwUSB_DataInStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_DataOutStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StatusInStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StatusOutStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StallEp0(USBD_HANDLE_T hUsb);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+#endif  /* __MW_USBD_CORE_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_desc.h ./lpc_chip_43xx/inc/usbd/usbd_desc.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_desc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_desc.h\t2017-02-27 20:42:08.464009492 -0300\n@@ -0,0 +1,48 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_desc.h 165 2011-04-14 17:41:11Z usb10131                      $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Descriptors Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __USBDESC_H__\n+#define __USBDESC_H__\n+\n+#include \"usbd.h\"\n+\n+#define WBVAL(x) ((x) & 0xFF),(((x) >> 8) & 0xFF)\n+#define B3VAL(x) ((x) & 0xFF),(((x) >> 8) & 0xFF),(((x) >> 16) & 0xFF)\n+\n+#define USB_DEVICE_DESC_SIZE        (sizeof(USB_DEVICE_DESCRIPTOR))\n+#define USB_CONFIGUARTION_DESC_SIZE (sizeof(USB_CONFIGURATION_DESCRIPTOR))\n+#define USB_INTERFACE_DESC_SIZE     (sizeof(USB_INTERFACE_DESCRIPTOR))\n+#define USB_ENDPOINT_DESC_SIZE      (sizeof(USB_ENDPOINT_DESCRIPTOR))\n+#define USB_DEVICE_QUALI_SIZE       (sizeof(USB_DEVICE_QUALIFIER_DESCRIPTOR))\n+#define USB_OTHER_SPEED_CONF_SIZE   (sizeof(USB_OTHER_SPEED_CONFIGURATION))\n+\n+//#define HID_DESC_SIZE               (sizeof(HID_DESCRIPTOR))\n+//#define HID_REPORT_DESC_SIZE        (sizeof(HID_ReportDescriptor))\n+\n+extern const uint8_t  HID_ReportDescriptor[];\n+extern const uint16_t HID_ReportDescSize;\n+extern const uint16_t HID_DescOffset;\n+\n+\n+#endif  /* __USBDESC_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_dfu.h ./lpc_chip_43xx/inc/usbd/usbd_dfu.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_dfu.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_dfu.h\t2017-02-27 20:42:08.468009492 -0300\n@@ -0,0 +1,120 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_dfu.h 331 2012-08-09 18:54:34Z usb10131                       $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     Device Firmware Upgrade (DFU) module.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __MW_USBD_DFU_H__\n+#define __MW_USBD_DFU_H__\n+\n+#include \"usbd.h\"\n+\n+/** \\file\n+ *  \\brief Device Firmware Upgrade (DFU) class descriptors.\n+ *\n+ *  Definition of DFU class descriptors and their bit defines.\n+ *\n+ */\n+\n+/**\n+ * If USB device is only DFU capable, DFU Interface number is always 0.\n+ * if USB device is (DFU + Other Class (Audio/Mass Storage/HID), DFU\n+ * Interface number should also be 0 in this implementation.\n+ */\n+#define USB_DFU_IF_NUM 0x0\n+\n+#define USB_DFU_DESCRIPTOR_TYPE     0x21\n+#define USB_DFU_DESCRIPTOR_SIZE     9\n+#define USB_DFU_SUBCLASS            0x01\n+\n+/* DFU class-specific requests (Section 3, DFU Rev 1.1) */\n+#define USB_REQ_DFU_DETACH          0x00\n+#define USB_REQ_DFU_DNLOAD          0x01\n+#define USB_REQ_DFU_UPLOAD          0x02\n+#define USB_REQ_DFU_GETSTATUS       0x03\n+#define USB_REQ_DFU_CLRSTATUS       0x04\n+#define USB_REQ_DFU_GETSTATE        0x05\n+#define USB_REQ_DFU_ABORT           0x06\n+\n+#define DFU_STATUS_OK               0x00\n+#define DFU_STATUS_errTARGET        0x01\n+#define DFU_STATUS_errFILE          0x02\n+#define DFU_STATUS_errWRITE         0x03\n+#define DFU_STATUS_errERASE         0x04\n+#define DFU_STATUS_errCHECK_ERASED  0x05\n+#define DFU_STATUS_errPROG          0x06\n+#define DFU_STATUS_errVERIFY        0x07\n+#define DFU_STATUS_errADDRESS       0x08\n+#define DFU_STATUS_errNOTDONE       0x09\n+#define DFU_STATUS_errFIRMWARE      0x0a\n+#define DFU_STATUS_errVENDOR        0x0b\n+#define DFU_STATUS_errUSBR          0x0c\n+#define DFU_STATUS_errPOR           0x0d\n+#define DFU_STATUS_errUNKNOWN       0x0e\n+#define DFU_STATUS_errSTALLEDPKT    0x0f\n+\n+enum dfu_state {\n+  DFU_STATE_appIDLE             = 0,\n+  DFU_STATE_appDETACH           = 1,\n+  DFU_STATE_dfuIDLE             = 2,\n+  DFU_STATE_dfuDNLOAD_SYNC      = 3,\n+  DFU_STATE_dfuDNBUSY           = 4,\n+  DFU_STATE_dfuDNLOAD_IDLE      = 5,\n+  DFU_STATE_dfuMANIFEST_SYNC    = 6,\n+  DFU_STATE_dfuMANIFEST         = 7,\n+  DFU_STATE_dfuMANIFEST_WAIT_RST= 8,\n+  DFU_STATE_dfuUPLOAD_IDLE      = 9,\n+  DFU_STATE_dfuERROR            = 10\n+};\n+\n+#define DFU_EP0_NONE            0\n+#define DFU_EP0_UNHANDLED       1\n+#define DFU_EP0_STALL           2\n+#define DFU_EP0_ZLP             3\n+#define DFU_EP0_DATA            4\n+\n+#define USB_DFU_CAN_DOWNLOAD    (1 << 0)\n+#define USB_DFU_CAN_UPLOAD      (1 << 1)\n+#define USB_DFU_MANIFEST_TOL    (1 << 2)\n+#define USB_DFU_WILL_DETACH     (1 << 3)\n+\n+PRE_PACK struct POST_PACK _USB_DFU_FUNC_DESCRIPTOR {\n+  uint8_t   bLength;\n+  uint8_t   bDescriptorType;\n+  uint8_t   bmAttributes;\n+  uint16_t  wDetachTimeOut;\n+  uint16_t  wTransferSize;\n+  uint16_t  bcdDFUVersion;\n+};\n+typedef struct _USB_DFU_FUNC_DESCRIPTOR USB_DFU_FUNC_DESCRIPTOR;\n+\n+PRE_PACK struct POST_PACK _DFU_STATUS {\n+  uint8_t bStatus;\n+  uint8_t bwPollTimeout[3];\n+  uint8_t bState;\n+  uint8_t iString;\n+};\n+typedef struct _DFU_STATUS DFU_STATUS_T;\n+\n+#define DFU_FUNC_DESC_SIZE    sizeof(USB_DFU_FUNC_DESCRIPTOR)\n+#define DFU_GET_STATUS_SIZE   0x6\n+\n+\n+#endif  /* __MW_USBD_DFU_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_dfuuser.h ./lpc_chip_43xx/inc/usbd/usbd_dfuuser.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_dfuuser.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_dfuuser.h\t2017-02-27 20:42:08.468009492 -0300\n@@ -0,0 +1,270 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_dfuuser.h 331 2012-08-09 18:54:34Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     Device Firmware Upgrade Class Custom User Module Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __DFUUSER_H__\n+#define __DFUUSER_H__\n+\n+#include \"usbd.h\"\n+#include \"usbd_dfu.h\"\n+#include \"usbd_core.h\"\n+\n+/** \\file\n+ *  \\brief Device Firmware Upgrade (DFU) API structures and function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based DFU function driver.\n+ *\n+ */\n+\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_DFU Device Firmware Upgrade (DFU) Class Function Driver\n+ *  \\section Sec_MSCModDescription Module Description\n+ *  DFU Class Function Driver module. This module contains an internal implementation of the USB DFU Class.\n+ *  User applications can use this class driver instead of implementing the DFU class manually\n+ *  via the low-level USBD_HW and USBD_Core APIs.\n+ *\n+ *  This module is designed to simplify the user code by exposing only the required interface needed to interface with\n+ *  Devices using the USB DFU Class.\n+ */\n+\n+/** \\brief USB descriptors data structure.\n+ *  \\ingroup USBD_DFU\n+ *\n+ *  \\details  This module exposes functions which interact directly with USB device stack's core layer.\n+ *  The application layer uses this component when it has to implement custom class function driver or\n+ *  standard class function driver which is not part of the current USB device stack.\n+ *  The functions exposed by this interface are to register class specific EP0 handlers and corresponding\n+ *  utility functions to manipulate EP0 state machine of the stack. This interface also exposes\n+ *  function to register custom endpoint interrupt handler.\n+ *\n+ */\n+typedef struct USBD_DFU_INIT_PARAM\n+{\n+  /* memory allocation params */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 4 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_DFU_API::GetMemSize() routine.*/\n+  /* DFU paramas */\n+  uint16_t wTransferSize; /**< DFU transfer block size in number of bytes.\n+                          This value should match the value set in DFU descriptor\n+                          provided as part of the descriptor array\n+                          (\\em high_speed_desc) passed to Init() through\n+                          \\ref USB_CORE_DESCS_T structure.  */\n+\n+  uint16_t pad;\n+  /** Pointer to the DFU interface descriptor within the descriptor\n+  * array (\\em high_speed_desc) passed to Init() through \\ref USB_CORE_DESCS_T\n+  * structure.\n+  */\n+  uint8_t* intf_desc;\n+  /* user defined functions */\n+  /**\n+  *  DFU Write callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a write command. For application using zero-copy buffer scheme\n+  *  this function is called for the first time with \\em length parameter set to 0.\n+  *  The application code should update the buffer pointer.\n+  *\n+  *  \\param[in] block_num Destination start address.\n+  *  \\param[in, out] src  Pointer to a pointer to the source of data. Pointer-to-pointer\n+  *                     is used to implement zero-copy buffers. See \\ref USBD_ZeroCopy\n+  *                     for more details on zero-copy concept.\n+  *  \\param[out] bwPollTimeout  Pointer to a 3 byte buffer which the callback implementer\n+  *                     should fill with the amount of minimum time, in milliseconds,\n+  *                     that the host should wait before sending a subsequent\n+  *                     DFU_GETSTATUS request.\n+  *  \\param[in] length  Number of bytes to be written.\n+  *  \\return Returns DFU_STATUS_ values defined in mw_usbd_dfu.h.\n+  *\n+  */\n+  uint8_t (*DFU_Write)( uint32_t block_num, uint8_t** src, uint32_t length, uint8_t* bwPollTimeout);\n+\n+  /**\n+  *  DFU Read callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a read command.\n+  *\n+  *  \\param[in] block_num Destination start address.\n+  *  \\param[in, out] dst  Pointer to a pointer to the source of data. Pointer-to-pointer\n+  *                       is used to implement zero-copy buffers. See \\ref USBD_ZeroCopy\n+  *                       for more details on zero-copy concept.\n+  *  \\param[in] length  Amount of data copied to destination buffer.\n+  *  \\return Returns\n+  *                 - DFU_STATUS_ values defined in mw_usbd_dfu.h to return error conditions.\n+  *                 - 0 if there is no more data to be read. Stack will send EOF frame and set\n+  *                     DFU state-machine to dfuIdle state.\n+  *                 - length of the data copied, should be greater than or equal to 16. If the data copied\n+  *                   is less than DFU \\em wTransferSize the stack will send EOF frame and\n+  *                   goes to dfuIdle state.\n+  *\n+  */\n+  uint32_t (*DFU_Read)( uint32_t block_num, uint8_t** dst, uint32_t length);\n+\n+  /**\n+  *  DFU done callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  after firmware download completes.\n+  *\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*DFU_Done)(void);\n+\n+  /**\n+  *  DFU detach callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  after USB_REQ_DFU_DETACH is received. Applications which set USB_DFU_WILL_DETACH\n+  *  bit in DFU descriptor should define this function. As part of this function\n+  *  application can call Connect() routine to disconnect and then connect back with\n+  *  host. For application which rely on WinUSB based host application should use this\n+  *  feature since USB reset can be invoked only by kernel drivers on Windows host.\n+  *  By implementing this feature host doen't have to issue reset instead the device\n+  *  has to do it automatically by disconnect and connect procedure.\n+  *\n+  *  \\param[in] hUsb Handle DFU control structure.\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*DFU_Detach)(USBD_HANDLE_T hUsb);\n+\n+  /**\n+  *  Optional user override-able function to replace the default DFU class handler.\n+  *\n+  *  The application software could override the default EP0 class handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_DFU_API::Init().\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*DFU_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+} USBD_DFU_INIT_PARAM_T;\n+\n+\n+/** \\brief DFU class API functions structure.\n+ *  \\ingroup USBD_DFU\n+ *\n+ *  This module exposes functions which interact directly with USB device controller hardware.\n+ *\n+ */\n+typedef struct USBD_DFU_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_DFU_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the DFU function driver module.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->dfu->Init(), to allocate memory used\n+   *  by DFU function driver module. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing DFU function driver module initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_DFU_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param)\n+   *  Function to initialize DFU function driver module.\n+   *\n+   *  This function is called by application layer to initialize DFU function driver module.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in, out] param Structure containing DFU function driver module initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF  Memory buffer passed is not 4-byte aligned or smaller than required.\n+   *          \\retval ERR_API_INVALID_PARAM2 Either DFU_Write() or DFU_Done() or DFU_Read() call-backs are not defined.\n+   *          \\retval ERR_USBD_BAD_DESC\n+   *            - USB_DFU_DESCRIPTOR_TYPE is not defined immediately after\n+   *              interface descriptor.\n+   *            - wTransferSize in descriptor doesn't match the value passed\n+   *              in param->wTransferSize.\n+   *            - DFU_Detach() is not defined while USB_DFU_WILL_DETACH is set\n+   *              in DFU descriptor.\n+   *          \\retval ERR_USBD_BAD_INTF_DESC  Wrong interface descriptor is passed.\n+   */\n+  ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param, uint32_t init_state);\n+\n+} USBD_DFU_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  ADVANCED_API */\n+\n+typedef struct _USBD_DFU_CTRL_T\n+{\n+  /*ALIGNED(4)*/ DFU_STATUS_T dfu_req_get_status;\n+  uint16_t pad;\n+  uint8_t dfu_state;\n+  uint8_t dfu_status;\n+  uint8_t download_done;\n+  uint8_t if_num;                  /* interface number */\n+\n+  uint8_t* xfr_buf;\n+  USB_DFU_FUNC_DESCRIPTOR* dfu_desc;\n+\n+  USB_CORE_CTRL_T*  pUsbCtrl;\n+  /* user defined functions */\n+  /* return DFU_STATUS_ values defined in mw_usbd_dfu.h */\n+  uint8_t (*DFU_Write)( uint32_t block_num, uint8_t** src, uint32_t length, uint8_t* bwPollTimeout);\n+  /* return\n+  * DFU_STATUS_ : values defined in mw_usbd_dfu.h in case of errors\n+  * 0 : If end of memory reached\n+  * length : Amount of data copied to destination buffer\n+  */\n+  uint32_t (*DFU_Read)( uint32_t block_num, uint8_t** dst, uint32_t length);\n+  /* callback called after download is finished */\n+  void (*DFU_Done)(void);\n+  /* callback called after USB_REQ_DFU_DETACH is recived */\n+  void (*DFU_Detach)(USBD_HANDLE_T hUsb);\n+\n+} USBD_DFU_CTRL_T;\n+\n+/** @cond  DIRECT_API */\n+uint32_t mwDFU_GetMemSize(USBD_DFU_INIT_PARAM_T* param);\n+extern ErrorCode_t mwDFU_init(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param, uint32_t init_state);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+#endif  /* __DFUUSER_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd.h ./lpc_chip_43xx/inc/usbd/usbd.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd.h\t2017-02-27 20:42:08.468009492 -0300\n@@ -0,0 +1,705 @@\n+/***********************************************************************\n+* $Id:: mw_usbd.h 575 2012-11-20 01:35:56Z usb10131                           $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __USBD_H__\n+#define __USBD_H__\n+\n+/** \\file\n+ *  \\brief Common definitions and declarations for the USB stack.\n+ *\n+ *  Common definitions and declarations for the USB stack.\n+ *  \\addtogroup USBD_Core\n+ *  @{\n+ */\n+\n+#include \"lpc_types.h\"\n+\n+#if defined(__GNUC__)\n+/* As per http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html#Attribute-Syntax,\n+6.29 Attributes Syntax\n+\"An attribute specifier list may appear as part of a struct, union or\n+enum specifier. It may go either immediately after the struct, union\n+or enum keyword, or after the closing brace. The former syntax is\n+preferred. Where attribute specifiers follow the closing brace, they\n+are considered to relate to the structure, union or enumerated type\n+defined, not to any enclosing declaration the type specifier appears\n+in, and the type defined is not complete until after the attribute\n+specifiers.\"\n+So use POST_PACK immediately after struct keyword\n+*/\n+#define PRE_PACK\n+#define POST_PACK  __attribute__((__packed__))\n+#define ALIGNED(n)      __attribute__((aligned (n)))\n+\n+#elif defined(__arm)\n+#define PRE_PACK   __packed\n+#define POST_PACK\n+#define ALIGNED(n)      __align(n)\n+\n+#elif defined(__ICCARM__)\n+#define PRE_PACK                __packed\n+#define POST_PACK\n+#define PRAGMA_ALIGN_4096       _Pragma(\"data_alignment=4096\")\n+#define PRAGMA_ALIGN_2048       _Pragma(\"data_alignment=2048\")\n+#define PRAGMA_ALIGN_512        _Pragma(\"data_alignment=512\")\n+#define PRAGMA_ALIGN_256        _Pragma(\"data_alignment=256\")\n+#define PRAGMA_ALIGN_128        _Pragma(\"data_alignment=128\")\n+#define PRAGMA_ALIGN_64         _Pragma(\"data_alignment=64\")\n+#define PRAGMA_ALIGN_48         _Pragma(\"data_alignment=48\")\n+#define PRAGMA_ALIGN_32         _Pragma(\"data_alignment=32\")\n+#define PRAGMA_ALIGN_4          _Pragma(\"data_alignment=4\")\n+#define ALIGNED(n)              PRAGMA_ALIGN_##n\n+\n+#pragma diag_suppress=Pe021\n+#endif\n+\n+/** Structure to pack lower and upper byte to form 16 bit word. */\n+PRE_PACK struct POST_PACK _WB_T\n+{\n+  uint8_t L; /**< lower byte */\n+  uint8_t H; /**< upper byte */\n+};\n+/** Structure to pack lower and upper byte to form 16 bit word.*/\n+typedef struct _WB_T WB_T;\n+\n+/** Union of \\ref _WB_T struct and 16 bit word.*/\n+PRE_PACK union POST_PACK __WORD_BYTE\n+{\n+  uint16_t W; /**< data member to do 16 bit access */\n+  WB_T WB; /**< data member to do 8 bit access */\n+} ;\n+/** Union of \\ref _WB_T struct and 16 bit word.*/\n+typedef union __WORD_BYTE WORD_BYTE;\n+\n+/** bmRequestType.Dir defines\n+ * @{\n+ */\n+/** Request from host to device */\n+#define REQUEST_HOST_TO_DEVICE     0\n+/** Request from device to host */\n+#define REQUEST_DEVICE_TO_HOST     1\n+/** @} */\n+\n+/** bmRequestType.Type defines\n+ * @{\n+ */\n+/** Standard Request */\n+#define REQUEST_STANDARD           0\n+/** Class Request */\n+#define REQUEST_CLASS              1\n+/** Vendor Request */\n+#define REQUEST_VENDOR             2\n+/** Reserved Request */\n+#define REQUEST_RESERVED           3\n+/** @} */\n+\n+/** bmRequestType.Recipient defines\n+ * @{\n+ */\n+/** Request to device */\n+#define REQUEST_TO_DEVICE          0\n+/** Request to interface */\n+#define REQUEST_TO_INTERFACE       1\n+/** Request to endpoint */\n+#define REQUEST_TO_ENDPOINT        2\n+/** Request to other */\n+#define REQUEST_TO_OTHER           3\n+/** @} */\n+\n+/** Structure to define 8 bit USB request.*/\n+PRE_PACK struct POST_PACK _BM_T\n+{\n+  uint8_t Recipient :  5; /**< Recipient type. */\n+  uint8_t Type      :  2; /**< Request type.  */\n+  uint8_t Dir       :  1; /**< Direction type. */\n+};\n+/** Structure to define 8 bit USB request.*/\n+typedef struct _BM_T BM_T;\n+\n+/** Union of \\ref _BM_T struct and 8 bit byte.*/\n+PRE_PACK union POST_PACK _REQUEST_TYPE\n+{\n+  uint8_t B; /**< byte wide access memeber */\n+  BM_T BM;   /**< bitfield structure access memeber */\n+} ;\n+/** Union of \\ref _BM_T struct and 8 bit byte.*/\n+typedef union _REQUEST_TYPE REQUEST_TYPE;\n+\n+/** USB Standard Request Codes\n+ * @{\n+ */\n+/** GET_STATUS request */\n+#define USB_REQUEST_GET_STATUS                 0\n+/** CLEAR_FEATURE request */\n+#define USB_REQUEST_CLEAR_FEATURE              1\n+/** SET_FEATURE request */\n+#define USB_REQUEST_SET_FEATURE                3\n+/** SET_ADDRESS request */\n+#define USB_REQUEST_SET_ADDRESS                5\n+/** GET_DESCRIPTOR request */\n+#define USB_REQUEST_GET_DESCRIPTOR             6\n+/** SET_DESCRIPTOR request */\n+#define USB_REQUEST_SET_DESCRIPTOR             7\n+/** GET_CONFIGURATION request */\n+#define USB_REQUEST_GET_CONFIGURATION          8\n+/** SET_CONFIGURATION request */\n+#define USB_REQUEST_SET_CONFIGURATION          9\n+/** GET_INTERFACE request */\n+#define USB_REQUEST_GET_INTERFACE              10\n+/** SET_INTERFACE request */\n+#define USB_REQUEST_SET_INTERFACE              11\n+/** SYNC_FRAME request */\n+#define USB_REQUEST_SYNC_FRAME                 12\n+/** @} */\n+\n+/** USB GET_STATUS Bit Values\n+ * @{\n+ */\n+/** SELF_POWERED status*/\n+#define USB_GETSTATUS_SELF_POWERED             0x01\n+/** REMOTE_WAKEUP capable status*/\n+#define USB_GETSTATUS_REMOTE_WAKEUP            0x02\n+/** ENDPOINT_STALL status*/\n+#define USB_GETSTATUS_ENDPOINT_STALL           0x01\n+/** @} */\n+\n+/** USB Standard Feature selectors\n+ * @{\n+ */\n+/** ENDPOINT_STALL feature*/\n+#define USB_FEATURE_ENDPOINT_STALL             0\n+/** REMOTE_WAKEUP feature*/\n+#define USB_FEATURE_REMOTE_WAKEUP              1\n+/** TEST_MODE feature*/\n+#define USB_FEATURE_TEST_MODE                  2\n+/** @} */\n+\n+/** USB Default Control Pipe Setup Packet*/\n+PRE_PACK struct POST_PACK _USB_SETUP_PACKET\n+{\n+  REQUEST_TYPE bmRequestType; /**< This bitmapped field identifies the characteristics\n+                              of the specific request. \\sa _BM_T.\n+                              */\n+  uint8_t      bRequest; /**< This field specifies the particular request. The\n+                         Type bits in the bmRequestType field modify the meaning\n+                         of this field. \\sa USBD_REQUEST.\n+                         */\n+  WORD_BYTE    wValue; /**< Used to pass a parameter to the device, specific\n+                        to the request.\n+                        */\n+  WORD_BYTE    wIndex; /**< Used to pass a parameter to the device, specific\n+                        to the request. The wIndex field is often used in\n+                        requests to specify an endpoint or an interface.\n+                        */\n+  uint16_t     wLength; /**< This field specifies the length of the data\n+                        transferred during the second phase of the control\n+                        transfer.\n+                        */\n+} ;\n+/** USB Default Control Pipe Setup Packet*/\n+typedef struct _USB_SETUP_PACKET USB_SETUP_PACKET;\n+\n+\n+/** USB Descriptor Types\n+ * @{\n+ */\n+/** Device descriptor type  */\n+#define USB_DEVICE_DESCRIPTOR_TYPE             1\n+/** Configuration descriptor type  */\n+#define USB_CONFIGURATION_DESCRIPTOR_TYPE      2\n+/** String descriptor type  */\n+#define USB_STRING_DESCRIPTOR_TYPE             3\n+/** Interface descriptor type  */\n+#define USB_INTERFACE_DESCRIPTOR_TYPE          4\n+/** Endpoint descriptor type  */\n+#define USB_ENDPOINT_DESCRIPTOR_TYPE           5\n+/** Device qualifier descriptor type  */\n+#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE   6\n+/** Other speed configuration descriptor type  */\n+#define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7\n+/** Interface power descriptor type  */\n+#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE    8\n+/** OTG descriptor type  */\n+#define USB_OTG_DESCRIPTOR_TYPE                     9\n+/** Debug descriptor type  */\n+#define USB_DEBUG_DESCRIPTOR_TYPE                  10\n+/** Interface association descriptor type  */\n+#define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE  11\n+/** @} */\n+\n+/** USB Device Classes\n+ * @{\n+ */\n+/** Reserved device class  */\n+#define USB_DEVICE_CLASS_RESERVED              0x00\n+/** Audio device class  */\n+#define USB_DEVICE_CLASS_AUDIO                 0x01\n+/** Communications device class  */\n+#define USB_DEVICE_CLASS_COMMUNICATIONS        0x02\n+/** Human interface device class  */\n+#define USB_DEVICE_CLASS_HUMAN_INTERFACE       0x03\n+/** monitor device class  */\n+#define USB_DEVICE_CLASS_MONITOR               0x04\n+/** physical interface device class  */\n+#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE    0x05\n+/** power device class  */\n+#define USB_DEVICE_CLASS_POWER                 0x06\n+/** Printer device class  */\n+#define USB_DEVICE_CLASS_PRINTER               0x07\n+/** Storage device class  */\n+#define USB_DEVICE_CLASS_STORAGE               0x08\n+/** Hub device class  */\n+#define USB_DEVICE_CLASS_HUB                   0x09\n+/** miscellaneous device class  */\n+#define USB_DEVICE_CLASS_MISCELLANEOUS         0xEF\n+/** Application device class  */\n+#define USB_DEVICE_CLASS_APP                   0xFE\n+/** Vendor specific device class  */\n+#define USB_DEVICE_CLASS_VENDOR_SPECIFIC       0xFF\n+/** @} */\n+\n+/** bmAttributes in Configuration Descriptor\n+ * @{\n+ */\n+/** Power field mask */\n+#define USB_CONFIG_POWERED_MASK                0x40\n+/** Bus powered */\n+#define USB_CONFIG_BUS_POWERED                 0x80\n+/** Self powered */\n+#define USB_CONFIG_SELF_POWERED                0xC0\n+/** remote wakeup */\n+#define USB_CONFIG_REMOTE_WAKEUP               0x20\n+/** @} */\n+\n+/** bMaxPower in Configuration Descriptor */\n+#define USB_CONFIG_POWER_MA(mA)                ((mA)/2)\n+\n+/** bEndpointAddress in Endpoint Descriptor\n+ * @{\n+ */\n+/** Endopint address mask */\n+#define USB_ENDPOINT_DIRECTION_MASK            0x80\n+/** Macro to convert OUT endopint number to endpoint address value. */\n+#define USB_ENDPOINT_OUT(addr)                 ((addr) | 0x00)\n+/** Macro to convert IN endopint number to endpoint address value. */\n+#define USB_ENDPOINT_IN(addr)                  ((addr) | 0x80)\n+/** @} */\n+\n+/** bmAttributes in Endpoint Descriptor\n+ * @{\n+ */\n+/** Endopint type mask */\n+#define USB_ENDPOINT_TYPE_MASK                 0x03\n+/** Control Endopint type */\n+#define USB_ENDPOINT_TYPE_CONTROL              0x00\n+/** isochronous Endopint type */\n+#define USB_ENDPOINT_TYPE_ISOCHRONOUS          0x01\n+/** bulk Endopint type */\n+#define USB_ENDPOINT_TYPE_BULK                 0x02\n+/** interrupt Endopint type */\n+#define USB_ENDPOINT_TYPE_INTERRUPT            0x03\n+/** Endopint sync type mask */\n+#define USB_ENDPOINT_SYNC_MASK                 0x0C\n+/** no synchronization Endopint */\n+#define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION   0x00\n+/** Asynchronous sync Endopint */\n+#define USB_ENDPOINT_SYNC_ASYNCHRONOUS         0x04\n+/** Adaptive sync Endopint */\n+#define USB_ENDPOINT_SYNC_ADAPTIVE             0x08\n+/** Synchronous sync Endopint */\n+#define USB_ENDPOINT_SYNC_SYNCHRONOUS          0x0C\n+/** Endopint usage type mask */\n+#define USB_ENDPOINT_USAGE_MASK                0x30\n+/** Endopint data usage type  */\n+#define USB_ENDPOINT_USAGE_DATA                0x00\n+/** Endopint feedback usage type  */\n+#define USB_ENDPOINT_USAGE_FEEDBACK            0x10\n+/** Endopint implicit feedback usage type  */\n+#define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK   0x20\n+/** Endopint reserved usage type  */\n+#define USB_ENDPOINT_USAGE_RESERVED            0x30\n+/** @} */\n+\n+/** Control endopint EP0's maximum packet size in high-speed mode.*/\n+#define USB_ENDPOINT_0_HS_MAXP                 64\n+/** Control endopint EP0's maximum packet size in low-speed mode.*/\n+#define USB_ENDPOINT_0_LS_MAXP                 8\n+/** Bulk endopint's maximum packet size in high-speed mode.*/\n+#define USB_ENDPOINT_BULK_HS_MAXP              512\n+\n+/** USB Standard Device Descriptor */\n+PRE_PACK struct POST_PACK _USB_DEVICE_DESCRIPTOR\n+{\n+  uint8_t  bLength;     /**< Size of this descriptor in bytes. */\n+  uint8_t  bDescriptorType; /**< DEVICE Descriptor Type. */\n+  uint16_t bcdUSB; /**< BUSB Specification Release Number in\n+                    Binary-Coded Decimal (i.e., 2.10 is 210H).\n+                    This field identifies the release of the USB\n+                    Specification with which the device and its\n+                    descriptors are compliant.\n+                   */\n+  uint8_t  bDeviceClass; /**< Class code (assigned by the USB-IF).\n+                          If this field is reset to zero, each interface\n+                          within a configuration specifies its own\n+                          class information and the various\n+                          interfaces operate independently.\\n\n+                          If this field is set to a value between 1 and\n+                          FEH, the device supports different class\n+                          specifications on different interfaces and\n+                          the interfaces may not operate\n+                          independently. This value identifies the\n+                          class definition used for the aggregate\n+                          interfaces. \\n\n+                          If this field is set to FFH, the device class\n+                          is vendor-specific.\n+                          */\n+  uint8_t  bDeviceSubClass; /**< Subclass code (assigned by the USB-IF).\n+                            These codes are qualified by the value of\n+                            the bDeviceClass field. \\n\n+                            If the bDeviceClass field is reset to zero,\n+                            this field must also be reset to zero. \\n\n+                            If the bDeviceClass field is not set to FFH,\n+                            all values are reserved for assignment by\n+                            the USB-IF.\n+                            */\n+  uint8_t  bDeviceProtocol; /**< Protocol code (assigned by the USB-IF).\n+                            These codes are qualified by the value of\n+                            the bDeviceClass and the\n+                            bDeviceSubClass fields. If a device\n+                            supports class-specific protocols on a\n+                            device basis as opposed to an interface\n+                            basis, this code identifies the protocols\n+                            that the device uses as defined by the\n+                            specification of the device class. \\n\n+                            If this field is reset to zero, the device\n+                            does not use class-specific protocols on a\n+                            device basis. However, it may use classspecific\n+                            protocols on an interface basis. \\n\n+                            If this field is set to FFH, the device uses a\n+                            vendor-specific protocol on a device basis.\n+                            */\n+  uint8_t  bMaxPacketSize0; /**< Maximum packet size for endpoint zero\n+                            (only 8, 16, 32, or 64 are valid). For HS devices\n+                            is fixed to 64.\n+                            */\n+\n+  uint16_t idVendor; /**< Vendor ID (assigned by the USB-IF). */\n+  uint16_t idProduct; /**< Product ID (assigned by the manufacturer). */\n+  uint16_t bcdDevice; /**< Device release number in binary-coded decimal. */\n+  uint8_t  iManufacturer; /**< Index of string descriptor describing manufacturer. */\n+  uint8_t  iProduct; /**< Index of string descriptor describing product. */\n+  uint8_t  iSerialNumber; /**< Index of string descriptor describing the device�s\n+                          serial number.\n+                          */\n+  uint8_t  bNumConfigurations; /**< Number of possible configurations. */\n+} ;\n+/** USB Standard Device Descriptor */\n+typedef struct _USB_DEVICE_DESCRIPTOR USB_DEVICE_DESCRIPTOR;\n+\n+/** USB 2.0 Device Qualifier Descriptor */\n+PRE_PACK struct POST_PACK _USB_DEVICE_QUALIFIER_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of descriptor */\n+  uint8_t  bDescriptorType; /**< Device Qualifier Type */\n+  uint16_t bcdUSB; /**< USB specification version number (e.g., 0200H for V2.00) */\n+  uint8_t  bDeviceClass; /**< Class Code */\n+  uint8_t  bDeviceSubClass; /**< SubClass Code */\n+  uint8_t  bDeviceProtocol; /**< Protocol Code */\n+  uint8_t  bMaxPacketSize0; /**< Maximum packet size for other speed */\n+  uint8_t  bNumConfigurations; /**< Number of Other-speed Configurations */\n+  uint8_t  bReserved; /**< Reserved for future use, must be zero */\n+} ;\n+/** USB 2.0 Device Qualifier Descriptor */\n+typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR USB_DEVICE_QUALIFIER_DESCRIPTOR;\n+\n+/** USB Standard Configuration Descriptor */\n+PRE_PACK struct POST_PACK _USB_CONFIGURATION_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes */\n+  uint8_t  bDescriptorType; /**< CONFIGURATION Descriptor Type*/\n+  uint16_t wTotalLength; /**< Total length of data returned for this\n+                          configuration. Includes the combined length\n+                          of all descriptors (configuration, interface,\n+                          endpoint, and class- or vendor-specific)\n+                          returned for this configuration.*/\n+  uint8_t  bNumInterfaces; /**< Number of interfaces supported by this configuration*/\n+  uint8_t  bConfigurationValue; /**< Value to use as an argument to the\n+                                SetConfiguration() request to select this\n+                                configuration. */\n+  uint8_t  iConfiguration; /**< Index of string descriptor describing this\n+                            configuration*/\n+  uint8_t  bmAttributes; /**< Configuration characteristics \\n\n+                          D7: Reserved (set to one)\\n\n+                          D6: Self-powered \\n\n+                          D5: Remote Wakeup \\n\n+                          D4...0: Reserved (reset to zero) \\n\n+                          D7 is reserved and must be set to one for\n+                          historical reasons. \\n\n+                          A device configuration that uses power from\n+                          the bus and a local source reports a non-zero\n+                          value in bMaxPower to indicate the amount of\n+                          bus power required and sets D6. The actual\n+                          power source at runtime may be determined\n+                          using the GetStatus(DEVICE) request (see\n+                          USB 2.0 spec Section 9.4.5). \\n\n+                          If a device configuration supports remote\n+                          wakeup, D5 is set to one.*/\n+  uint8_t  bMaxPower; /**< Maximum power consumption of the USB\n+                      device from the bus in this specific\n+                      configuration when the device is fully\n+                      operational. Expressed in 2 mA units\n+                      (i.e., 50 = 100 mA). \\n\n+                      Note: A device configuration reports whether\n+                      the configuration is bus-powered or selfpowered.\n+                      Device status reports whether the\n+                      device is currently self-powered. If a device is\n+                      disconnected from its external power source, it\n+                      updates device status to indicate that it is no\n+                      longer self-powered. \\n\n+                      A device may not increase its power draw\n+                      from the bus, when it loses its external power\n+                      source, beyond the amount reported by its\n+                      configuration. \\n\n+                      If a device can continue to operate when\n+                      disconnected from its external power source, it\n+                      continues to do so. If the device cannot\n+                      continue to operate, it fails operations it can\n+                      no longer support. The USB System Software\n+                      may determine the cause of the failure by\n+                      checking the status and noting the loss of the\n+                      device�s power source.*/\n+} ;\n+/** USB Standard Configuration Descriptor */\n+typedef struct _USB_CONFIGURATION_DESCRIPTOR USB_CONFIGURATION_DESCRIPTOR;\n+\n+/** USB Standard Interface Association Descriptor */\n+PRE_PACK struct POST_PACK _USB_IAD_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< INTERFACE ASSOCIATION Descriptor Type*/\n+  uint8_t  bFirstInterface; /**< Interface number of the first interface that is\n+                            associated with this function.*/\n+  uint8_t  bInterfaceCount; /**< Number of contiguous interfaces that are\n+                            associated with this function. */\n+  uint8_t  bFunctionClass; /**< Class code (assigned by USB-IF). \\n\n+                            A value of zero is not allowed in this descriptor.\n+                            If this field is FFH, the function class is vendorspecific.\n+                            All other values are reserved for assignment by\n+                            the USB-IF.*/\n+  uint8_t  bFunctionSubClass; /**< Subclass code (assigned by USB-IF). \\n\n+                            If the bFunctionClass field is not set to FFH all\n+                            values are reserved for assignment by the USBIF.*/\n+  uint8_t  bFunctionProtocol; /**< Protocol code (assigned by the USB). \\n\n+                                These codes are qualified by the values of the\n+                                bFunctionClass and bFunctionSubClass fields.*/\n+  uint8_t  iFunction; /**< Index of string descriptor describing this function.*/\n+} ;\n+/** USB Standard Interface Association Descriptor */\n+typedef struct _USB_IAD_DESCRIPTOR USB_IAD_DESCRIPTOR;\n+\n+/** USB Standard Interface Descriptor */\n+PRE_PACK struct POST_PACK _USB_INTERFACE_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< INTERFACE Descriptor Type*/\n+  uint8_t  bInterfaceNumber; /**< Number of this interface. Zero-based\n+                              value identifying the index in the array of\n+                              concurrent interfaces supported by this\n+                              configuration.*/\n+  uint8_t  bAlternateSetting; /**< Value used to select this alternate setting\n+                              for the interface identified in the prior field*/\n+  uint8_t  bNumEndpoints; /**< Number of endpoints used by this\n+                          interface (excluding endpoint zero). If this\n+                          value is zero, this interface only uses the\n+                          Default Control Pipe.*/\n+  uint8_t  bInterfaceClass; /**< Class code (assigned by the USB-IF). \\n\n+                            A value of zero is reserved for future\n+                            standardization. \\n\n+                            If this field is set to FFH, the interface\n+                            class is vendor-specific. \\n\n+                            All other values are reserved for\n+                            assignment by the USB-IF.*/\n+  uint8_t  bInterfaceSubClass; /**< Subclass code (assigned by the USB-IF). \\n\n+                              These codes are qualified by the value of\n+                              the bInterfaceClass field. \\n\n+                              If the bInterfaceClass field is reset to zero,\n+                              this field must also be reset to zero. \\n\n+                              If the bInterfaceClass field is not set to\n+                              FFH, all values are reserved for\n+                              assignment by the USB-IF.*/\n+  uint8_t  bInterfaceProtocol; /**< Protocol code (assigned by the USB). \\n\n+                                These codes are qualified by the value of\n+                                the bInterfaceClass and the\n+                                bInterfaceSubClass fields. If an interface\n+                                supports class-specific requests, this code\n+                                identifies the protocols that the device\n+                                uses as defined by the specification of the\n+                                device class. \\n\n+                                If this field is reset to zero, the device\n+                                does not use a class-specific protocol on\n+                                this interface. \\n\n+                                If this field is set to FFH, the device uses\n+                                a vendor-specific protocol for this\n+                                interface.*/\n+  uint8_t  iInterface; /**< Index of string descriptor describing this interface*/\n+} ;\n+/** USB Standard Interface Descriptor */\n+typedef struct _USB_INTERFACE_DESCRIPTOR USB_INTERFACE_DESCRIPTOR;\n+\n+/** USB Standard Endpoint Descriptor */\n+PRE_PACK struct POST_PACK _USB_ENDPOINT_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< ENDPOINT Descriptor Type*/\n+  uint8_t  bEndpointAddress; /**< The address of the endpoint on the USB device\n+                            described by this descriptor. The address is\n+                            encoded as follows: \\n\n+                            Bit 3...0: The endpoint number \\n\n+                            Bit 6...4: Reserved, reset to zero \\n\n+                            Bit 7: Direction, ignored for control endpoints\n+                            0 = OUT endpoint\n+                            1 = IN endpoint.  \\n \\sa USBD_ENDPOINT_ADR_Type*/\n+  uint8_t  bmAttributes; /**< This field describes the endpoint�s attributes when it is\n+                          configured using the bConfigurationValue. \\n\n+                          Bits 1..0: Transfer Type\n+                          \\li 00 = Control\n+                          \\li 01 = Isochronous\n+                          \\li 10 = Bulk\n+                          \\li 11 = Interrupt  \\n\n+                          If not an isochronous endpoint, bits 5..2 are reserved\n+                          and must be set to zero. If isochronous, they are\n+                          defined as follows: \\n\n+                          Bits 3..2: Synchronization Type\n+                          \\li 00 = No Synchronization\n+                          \\li 01 = Asynchronous\n+                          \\li 10 = Adaptive\n+                          \\li 11 = Synchronous \\n\n+                          Bits 5..4: Usage Type\n+                          \\li 00 = Data endpoint\n+                          \\li 01 = Feedback endpoint\n+                          \\li 10 = Implicit feedback Data endpoint\n+                          \\li 11 = Reserved \\n\n+                          Refer to Chapter 5 of USB 2.0 specification for more information. \\n\n+                          All other bits are reserved and must be reset to zero.\n+                          Reserved bits must be ignored by the host.\n+                         \\n \\sa USBD_EP_ATTR_Type*/\n+  uint16_t wMaxPacketSize; /**< Maximum packet size this endpoint is capable of\n+                          sending or receiving when this configuration is\n+                          selected. \\n\n+                          For isochronous endpoints, this value is used to\n+                          reserve the bus time in the schedule, required for the\n+                          per-(micro)frame data payloads. The pipe may, on an\n+                          ongoing basis, actually use less bandwidth than that\n+                          reserved. The device reports, if necessary, the actual\n+                          bandwidth used via its normal, non-USB defined\n+                          mechanisms. \\n\n+                          For all endpoints, bits 10..0 specify the maximum\n+                          packet size (in bytes). \\n\n+                          For high-speed isochronous and interrupt endpoints: \\n\n+                          Bits 12..11 specify the number of additional transaction\n+                          opportunities per microframe: \\n\n+                          \\li 00 = None (1 transaction per microframe)\n+                          \\li 01 = 1 additional (2 per microframe)\n+                          \\li 10 = 2 additional (3 per microframe)\n+                          \\li 11 = Reserved \\n\n+                          Bits 15..13 are reserved and must be set to zero.*/\n+  uint8_t  bInterval; /**< Interval for polling endpoint for data transfers.\n+                      Expressed in frames or microframes depending on the\n+                      device operating speed (i.e., either 1 millisecond or\n+                      125 �s units).\n+                      \\li For full-/high-speed isochronous endpoints, this value\n+                      must be in the range from 1 to 16. The bInterval value\n+                      is used as the exponent for a \\f$ 2^(bInterval-1) \\f$ value; e.g., a\n+                      bInterval of 4 means a period of 8 (\\f$ 2^(4-1) \\f$).\n+                      \\li For full-/low-speed interrupt endpoints, the value of\n+                      this field may be from 1 to 255.\n+                      \\li For high-speed interrupt endpoints, the bInterval value\n+                      is used as the exponent for a \\f$ 2^(bInterval-1) \\f$ value; e.g., a\n+                      bInterval of 4 means a period of 8 (\\f$ 2^(4-1) \\f$) . This value\n+                      must be from 1 to 16.\n+                      \\li For high-speed bulk/control OUT endpoints, the\n+                      bInterval must specify the maximum NAK rate of the\n+                      endpoint. A value of 0 indicates the endpoint never\n+                      NAKs. Other values indicate at most 1 NAK each\n+                      bInterval number of microframes. This value must be\n+                      in the range from 0 to 255. \\n\n+                      Refer to Chapter 5 of USB 2.0 specification for more information.\n+                      */\n+} ;\n+/** USB Standard Endpoint Descriptor */\n+typedef struct _USB_ENDPOINT_DESCRIPTOR USB_ENDPOINT_DESCRIPTOR;\n+\n+/** USB String Descriptor */\n+PRE_PACK struct POST_PACK _USB_STRING_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< STRING Descriptor Type*/\n+  uint16_t bString/*[]*/; /**< UNICODE encoded string */\n+}  ;\n+/** USB String Descriptor */\n+typedef struct _USB_STRING_DESCRIPTOR USB_STRING_DESCRIPTOR;\n+\n+/** USB Common Descriptor */\n+PRE_PACK struct POST_PACK _USB_COMMON_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< Descriptor Type*/\n+} ;\n+/** USB Common Descriptor */\n+typedef struct _USB_COMMON_DESCRIPTOR USB_COMMON_DESCRIPTOR;\n+\n+/** USB Other Speed Configuration */\n+PRE_PACK struct POST_PACK _USB_OTHER_SPEED_CONFIGURATION\n+{\n+  uint8_t  bLength; /**< Size of descriptor*/\n+  uint8_t  bDescriptorType; /**< Other_speed_Configuration Type*/\n+  uint16_t wTotalLength; /**< Total length of data returned*/\n+  uint8_t  bNumInterfaces; /**< Number of interfaces supported by this speed configuration*/\n+  uint8_t  bConfigurationValue; /**< Value to use to select configuration*/\n+  uint8_t  IConfiguration; /**< Index of string descriptor*/\n+  uint8_t  bmAttributes; /**< Same as Configuration descriptor*/\n+  uint8_t  bMaxPower; /**< Same as Configuration descriptor*/\n+} ;\n+/** USB Other Speed Configuration */\n+typedef struct _USB_OTHER_SPEED_CONFIGURATION USB_OTHER_SPEED_CONFIGURATION;\n+\n+/** \\ingroup USBD_Core\n+ * USB device stack/module handle.\n+ */\n+typedef void* USBD_HANDLE_T;\n+\n+#define WBVAL(x) ((x) & 0xFF),(((x) >> 8) & 0xFF)\n+#define B3VAL(x) ((x) & 0xFF),(((x) >> 8) & 0xFF),(((x) >> 16) & 0xFF)\n+\n+#define USB_DEVICE_DESC_SIZE        (sizeof(USB_DEVICE_DESCRIPTOR))\n+#define USB_CONFIGURATION_DESC_SIZE (sizeof(USB_CONFIGURATION_DESCRIPTOR))\n+#define USB_INTERFACE_DESC_SIZE     (sizeof(USB_INTERFACE_DESCRIPTOR))\n+#define USB_INTERFACE_ASSOC_DESC_SIZE   (sizeof(USB_IAD_DESCRIPTOR))\n+#define USB_ENDPOINT_DESC_SIZE      (sizeof(USB_ENDPOINT_DESCRIPTOR))\n+#define USB_DEVICE_QUALI_SIZE       (sizeof(USB_DEVICE_QUALIFIER_DESCRIPTOR))\n+#define USB_OTHER_SPEED_CONF_SIZE   (sizeof(USB_OTHER_SPEED_CONFIGURATION))\n+\n+/** @}*/\n+\n+#endif  /* __USBD_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_hid.h ./lpc_chip_43xx/inc/usbd/usbd_hid.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_hid.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_hid.h\t2017-02-27 20:42:08.468009492 -0300\n@@ -0,0 +1,431 @@\n+/***********************************************************************\n+* $Id: mw_usbd_hid.h.rca 1.2 Tue Nov  1 11:45:07 2011 nlv09221 Experimental $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     HID Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __HID_H__\n+#define __HID_H__\n+\n+#include \"usbd.h\"\n+\n+/** \\file\n+ *  \\brief Common definitions and declarations for the library USB HID Class driver.\n+ *\n+ *  Common definitions and declarations for the library USB HID Class driver.\n+ *  \\addtogroup USBD_HID\n+ *  @{\n+ */\n+\n+\n+/** HID Subclass Codes\n+ * @{\n+ */\n+/** Descriptor Subclass value indicating that the device or interface does not implement a HID boot protocol. */\n+#define HID_SUBCLASS_NONE               0x00\n+/** Descriptor Subclass value indicating that the device or interface implements a HID boot protocol. */\n+#define HID_SUBCLASS_BOOT               0x01\n+/** @} */\n+\n+/** HID Protocol Codes\n+ * @{\n+ */\n+/** Descriptor Protocol value indicating that the device or interface does not belong to a HID boot protocol. */\n+#define HID_PROTOCOL_NONE               0x00\n+/** Descriptor Protocol value indicating that the device or interface belongs to the Keyboard HID boot protocol. */\n+#define HID_PROTOCOL_KEYBOARD           0x01\n+/** Descriptor Protocol value indicating that the device or interface belongs to the Mouse HID boot protocol. */\n+#define HID_PROTOCOL_MOUSE              0x02\n+/** @} */\n+\n+\n+\n+/** Descriptor Types\n+ * @{\n+ */\n+/** Descriptor header type value, to indicate a HID class HID descriptor. */\n+#define HID_HID_DESCRIPTOR_TYPE         0x21\n+/** Descriptor header type value, to indicate a HID class HID report descriptor. */\n+#define HID_REPORT_DESCRIPTOR_TYPE      0x22\n+/** Descriptor header type value, to indicate a HID class HID Physical descriptor. */\n+#define HID_PHYSICAL_DESCRIPTOR_TYPE    0x23\n+/** @} */\n+\n+\n+/** \\brief HID class-specific HID Descriptor.\n+ *\n+ *  Type define for the HID class-specific HID descriptor, to describe the HID device's specifications. Refer to the HID\n+ *  specification for details on the structure elements.\n+ *\n+ */\n+PRE_PACK struct POST_PACK _HID_DESCRIPTOR {\n+  uint8_t  bLength;    /**< Size of the descriptor, in bytes. */\n+  uint8_t  bDescriptorType;    /**< Type of HID descriptor. */\n+  uint16_t bcdHID; /**< BCD encoded version that the HID descriptor and device complies to. */\n+  uint8_t  bCountryCode; /**< Country code of the localized device, or zero if universal. */\n+  uint8_t  bNumDescriptors; /**< Total number of HID report descriptors for the interface. */\n+\n+  PRE_PACK struct POST_PACK _HID_DESCRIPTOR_LIST {\n+    uint8_t  bDescriptorType; /**< Type of HID report. */\n+    uint16_t wDescriptorLength; /**< Length of the associated HID report descriptor, in bytes. */\n+  } DescriptorList[1]; /**< Array of one or more descriptors */\n+} ;\n+/** HID class-specific HID Descriptor. */\n+typedef struct _HID_DESCRIPTOR HID_DESCRIPTOR;\n+\n+#define HID_DESC_SIZE   sizeof(HID_DESCRIPTOR)\n+\n+/** HID Request Codes\n+ * @{\n+ */\n+#define HID_REQUEST_GET_REPORT          0x01\n+#define HID_REQUEST_GET_IDLE            0x02\n+#define HID_REQUEST_GET_PROTOCOL        0x03\n+#define HID_REQUEST_SET_REPORT          0x09\n+#define HID_REQUEST_SET_IDLE            0x0A\n+#define HID_REQUEST_SET_PROTOCOL        0x0B\n+/** @} */\n+\n+/** HID Report Types\n+ * @{\n+ */\n+#define HID_REPORT_INPUT                0x01\n+#define HID_REPORT_OUTPUT               0x02\n+#define HID_REPORT_FEATURE              0x03\n+/** @} */\n+\n+\n+/** Usage Pages\n+ * @{\n+ */\n+#define HID_USAGE_PAGE_UNDEFINED        0x00\n+#define HID_USAGE_PAGE_GENERIC          0x01\n+#define HID_USAGE_PAGE_SIMULATION       0x02\n+#define HID_USAGE_PAGE_VR               0x03\n+#define HID_USAGE_PAGE_SPORT            0x04\n+#define HID_USAGE_PAGE_GAME             0x05\n+#define HID_USAGE_PAGE_DEV_CONTROLS     0x06\n+#define HID_USAGE_PAGE_KEYBOARD         0x07\n+#define HID_USAGE_PAGE_LED              0x08\n+#define HID_USAGE_PAGE_BUTTON           0x09\n+#define HID_USAGE_PAGE_ORDINAL          0x0A\n+#define HID_USAGE_PAGE_TELEPHONY        0x0B\n+#define HID_USAGE_PAGE_CONSUMER         0x0C\n+#define HID_USAGE_PAGE_DIGITIZER        0x0D\n+#define HID_USAGE_PAGE_UNICODE          0x10\n+#define HID_USAGE_PAGE_ALPHANUMERIC     0x14\n+/** @} */\n+\n+\n+/** Generic Desktop Page (0x01)\n+ * @{\n+ */\n+#define HID_USAGE_GENERIC_POINTER               0x01\n+#define HID_USAGE_GENERIC_MOUSE                 0x02\n+#define HID_USAGE_GENERIC_JOYSTICK              0x04\n+#define HID_USAGE_GENERIC_GAMEPAD               0x05\n+#define HID_USAGE_GENERIC_KEYBOARD              0x06\n+#define HID_USAGE_GENERIC_KEYPAD                0x07\n+#define HID_USAGE_GENERIC_X                     0x30\n+#define HID_USAGE_GENERIC_Y                     0x31\n+#define HID_USAGE_GENERIC_Z                     0x32\n+#define HID_USAGE_GENERIC_RX                    0x33\n+#define HID_USAGE_GENERIC_RY                    0x34\n+#define HID_USAGE_GENERIC_RZ                    0x35\n+#define HID_USAGE_GENERIC_SLIDER                0x36\n+#define HID_USAGE_GENERIC_DIAL                  0x37\n+#define HID_USAGE_GENERIC_WHEEL                 0x38\n+#define HID_USAGE_GENERIC_HATSWITCH             0x39\n+#define HID_USAGE_GENERIC_COUNTED_BUFFER        0x3A\n+#define HID_USAGE_GENERIC_BYTE_COUNT            0x3B\n+#define HID_USAGE_GENERIC_MOTION_WAKEUP         0x3C\n+#define HID_USAGE_GENERIC_VX                    0x40\n+#define HID_USAGE_GENERIC_VY                    0x41\n+#define HID_USAGE_GENERIC_VZ                    0x42\n+#define HID_USAGE_GENERIC_VBRX                  0x43\n+#define HID_USAGE_GENERIC_VBRY                  0x44\n+#define HID_USAGE_GENERIC_VBRZ                  0x45\n+#define HID_USAGE_GENERIC_VNO                   0x46\n+#define HID_USAGE_GENERIC_SYSTEM_CTL            0x80\n+#define HID_USAGE_GENERIC_SYSCTL_POWER          0x81\n+#define HID_USAGE_GENERIC_SYSCTL_SLEEP          0x82\n+#define HID_USAGE_GENERIC_SYSCTL_WAKE           0x83\n+#define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU   0x84\n+#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU      0x85\n+#define HID_USAGE_GENERIC_SYSCTL_APP_MENU       0x86\n+#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU      0x87\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT      0x88\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT    0x89\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT     0x8A\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT      0x8B\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_UP        0x8C\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN      0x8D\n+/** @} */\n+\n+/** Simulation Controls Page (0x02)\n+ * @{\n+ */\n+#define HID_USAGE_SIMULATION_RUDDER             0xBA\n+#define HID_USAGE_SIMULATION_THROTTLE           0xBB\n+/** @} */\n+\n+/* Virtual Reality Controls Page (0x03) */\n+/* ... */\n+\n+/* Sport Controls Page (0x04) */\n+/* ... */\n+\n+/* Game Controls Page (0x05) */\n+/* ... */\n+\n+/* Generic Device Controls Page (0x06) */\n+/* ... */\n+\n+/** Keyboard/Keypad Page (0x07)\n+ * @{\n+ */\n+/** Error \"keys\" */\n+#define HID_USAGE_KEYBOARD_NOEVENT              0x00\n+#define HID_USAGE_KEYBOARD_ROLLOVER             0x01\n+#define HID_USAGE_KEYBOARD_POSTFAIL             0x02\n+#define HID_USAGE_KEYBOARD_UNDEFINED            0x03\n+\n+/** Letters */\n+#define HID_USAGE_KEYBOARD_aA                   0x04\n+#define HID_USAGE_KEYBOARD_zZ                   0x1D\n+\n+/** Numbers */\n+#define HID_USAGE_KEYBOARD_ONE                  0x1E\n+#define HID_USAGE_KEYBOARD_ZERO                 0x27\n+\n+#define HID_USAGE_KEYBOARD_RETURN               0x28\n+#define HID_USAGE_KEYBOARD_ESCAPE               0x29\n+#define HID_USAGE_KEYBOARD_DELETE               0x2A\n+\n+/** Funtion keys */\n+#define HID_USAGE_KEYBOARD_F1                   0x3A\n+#define HID_USAGE_KEYBOARD_F12                  0x45\n+\n+#define HID_USAGE_KEYBOARD_PRINT_SCREEN         0x46\n+\n+/** Modifier Keys */\n+#define HID_USAGE_KEYBOARD_LCTRL                0xE0\n+#define HID_USAGE_KEYBOARD_LSHFT                0xE1\n+#define HID_USAGE_KEYBOARD_LALT                 0xE2\n+#define HID_USAGE_KEYBOARD_LGUI                 0xE3\n+#define HID_USAGE_KEYBOARD_RCTRL                0xE4\n+#define HID_USAGE_KEYBOARD_RSHFT                0xE5\n+#define HID_USAGE_KEYBOARD_RALT                 0xE6\n+#define HID_USAGE_KEYBOARD_RGUI                 0xE7\n+#define HID_USAGE_KEYBOARD_SCROLL_LOCK          0x47\n+#define HID_USAGE_KEYBOARD_NUM_LOCK             0x53\n+#define HID_USAGE_KEYBOARD_CAPS_LOCK            0x39\n+/** @} */\n+\n+/* ... */\n+\n+/** LED Page (0x08)\n+ * @{\n+ */\n+#define HID_USAGE_LED_NUM_LOCK                  0x01\n+#define HID_USAGE_LED_CAPS_LOCK                 0x02\n+#define HID_USAGE_LED_SCROLL_LOCK               0x03\n+#define HID_USAGE_LED_COMPOSE                   0x04\n+#define HID_USAGE_LED_KANA                      0x05\n+#define HID_USAGE_LED_POWER                     0x06\n+#define HID_USAGE_LED_SHIFT                     0x07\n+#define HID_USAGE_LED_DO_NOT_DISTURB            0x08\n+#define HID_USAGE_LED_MUTE                      0x09\n+#define HID_USAGE_LED_TONE_ENABLE               0x0A\n+#define HID_USAGE_LED_HIGH_CUT_FILTER           0x0B\n+#define HID_USAGE_LED_LOW_CUT_FILTER            0x0C\n+#define HID_USAGE_LED_EQUALIZER_ENABLE          0x0D\n+#define HID_USAGE_LED_SOUND_FIELD_ON            0x0E\n+#define HID_USAGE_LED_SURROUND_FIELD_ON         0x0F\n+#define HID_USAGE_LED_REPEAT                    0x10\n+#define HID_USAGE_LED_STEREO                    0x11\n+#define HID_USAGE_LED_SAMPLING_RATE_DETECT      0x12\n+#define HID_USAGE_LED_SPINNING                  0x13\n+#define HID_USAGE_LED_CAV                       0x14\n+#define HID_USAGE_LED_CLV                       0x15\n+#define HID_USAGE_LED_RECORDING_FORMAT_DET      0x16\n+#define HID_USAGE_LED_OFF_HOOK                  0x17\n+#define HID_USAGE_LED_RING                      0x18\n+#define HID_USAGE_LED_MESSAGE_WAITING           0x19\n+#define HID_USAGE_LED_DATA_MODE                 0x1A\n+#define HID_USAGE_LED_BATTERY_OPERATION         0x1B\n+#define HID_USAGE_LED_BATTERY_OK                0x1C\n+#define HID_USAGE_LED_BATTERY_LOW               0x1D\n+#define HID_USAGE_LED_SPEAKER                   0x1E\n+#define HID_USAGE_LED_HEAD_SET                  0x1F\n+#define HID_USAGE_LED_HOLD                      0x20\n+#define HID_USAGE_LED_MICROPHONE                0x21\n+#define HID_USAGE_LED_COVERAGE                  0x22\n+#define HID_USAGE_LED_NIGHT_MODE                0x23\n+#define HID_USAGE_LED_SEND_CALLS                0x24\n+#define HID_USAGE_LED_CALL_PICKUP               0x25\n+#define HID_USAGE_LED_CONFERENCE                0x26\n+#define HID_USAGE_LED_STAND_BY                  0x27\n+#define HID_USAGE_LED_CAMERA_ON                 0x28\n+#define HID_USAGE_LED_CAMERA_OFF                0x29\n+#define HID_USAGE_LED_ON_LINE                   0x2A\n+#define HID_USAGE_LED_OFF_LINE                  0x2B\n+#define HID_USAGE_LED_BUSY                      0x2C\n+#define HID_USAGE_LED_READY                     0x2D\n+#define HID_USAGE_LED_PAPER_OUT                 0x2E\n+#define HID_USAGE_LED_PAPER_JAM                 0x2F\n+#define HID_USAGE_LED_REMOTE                    0x30\n+#define HID_USAGE_LED_FORWARD                   0x31\n+#define HID_USAGE_LED_REVERSE                   0x32\n+#define HID_USAGE_LED_STOP                      0x33\n+#define HID_USAGE_LED_REWIND                    0x34\n+#define HID_USAGE_LED_FAST_FORWARD              0x35\n+#define HID_USAGE_LED_PLAY                      0x36\n+#define HID_USAGE_LED_PAUSE                     0x37\n+#define HID_USAGE_LED_RECORD                    0x38\n+#define HID_USAGE_LED_ERROR                     0x39\n+#define HID_USAGE_LED_SELECTED_INDICATOR        0x3A\n+#define HID_USAGE_LED_IN_USE_INDICATOR          0x3B\n+#define HID_USAGE_LED_MULTI_MODE_INDICATOR      0x3C\n+#define HID_USAGE_LED_INDICATOR_ON              0x3D\n+#define HID_USAGE_LED_INDICATOR_FLASH           0x3E\n+#define HID_USAGE_LED_INDICATOR_SLOW_BLINK      0x3F\n+#define HID_USAGE_LED_INDICATOR_FAST_BLINK      0x40\n+#define HID_USAGE_LED_INDICATOR_OFF             0x41\n+#define HID_USAGE_LED_FLASH_ON_TIME             0x42\n+#define HID_USAGE_LED_SLOW_BLINK_ON_TIME        0x43\n+#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME       0x44\n+#define HID_USAGE_LED_FAST_BLINK_ON_TIME        0x45\n+#define HID_USAGE_LED_FAST_BLINK_OFF_TIME       0x46\n+#define HID_USAGE_LED_INDICATOR_COLOR           0x47\n+#define HID_USAGE_LED_RED                       0x48\n+#define HID_USAGE_LED_GREEN                     0x49\n+#define HID_USAGE_LED_AMBER                     0x4A\n+#define HID_USAGE_LED_GENERIC_INDICATOR         0x4B\n+/** @} */\n+\n+/*  Button Page (0x09)\n+ */\n+/*   There is no need to label these usages. */\n+\n+/*  Ordinal Page (0x0A)\n+ */\n+/*   There is no need to label these usages. */\n+\n+/** Telephony Device Page (0x0B)\n+ * @{\n+ */\n+#define HID_USAGE_TELEPHONY_PHONE               0x01\n+#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE   0x02\n+#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS    0x03\n+#define HID_USAGE_TELEPHONY_HANDSET             0x04\n+#define HID_USAGE_TELEPHONY_HEADSET             0x05\n+#define HID_USAGE_TELEPHONY_KEYPAD              0x06\n+#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON 0x07\n+/** @} */\n+/* ... */\n+\n+/** Consumer Page (0x0C)\n+ * @{\n+ */\n+#define HID_USAGE_CONSUMER_CONTROL              0x01\n+#define HID_USAGE_CONSUMER_FAST_FORWARD       0xB3\n+#define HID_USAGE_CONSUMER_REWIND             0xB4\n+#define HID_USAGE_CONSUMER_PLAY_PAUSE              0xCD\n+#define HID_USAGE_CONSUMER_VOLUME_INCREMENT        0xE9\n+#define HID_USAGE_CONSUMER_VOLUME_DECREMENT        0xEA\n+/** @} */\n+/* ... */\n+\n+/* and others ... */\n+\n+\n+/** HID Report Item Macros\n+ * @{\n+ */\n+/** Main Items */\n+#define HID_Input(x)           0x81,x\n+#define HID_Output(x)          0x91,x\n+#define HID_Feature(x)         0xB1,x\n+#define HID_Collection(x)      0xA1,x\n+#define HID_EndCollection      0xC0\n+\n+/** Data (Input, Output, Feature) */\n+#define HID_Data               0<<0\n+#define HID_Constant           1<<0\n+#define HID_Array              0<<1\n+#define HID_Variable           1<<1\n+#define HID_Absolute           0<<2\n+#define HID_Relative           1<<2\n+#define HID_NoWrap             0<<3\n+#define HID_Wrap               1<<3\n+#define HID_Linear             0<<4\n+#define HID_NonLinear          1<<4\n+#define HID_PreferredState     0<<5\n+#define HID_NoPreferred        1<<5\n+#define HID_NoNullPosition     0<<6\n+#define HID_NullState          1<<6\n+#define HID_NonVolatile        0<<7\n+#define HID_Volatile           1<<7\n+\n+/** Collection Data */\n+#define HID_Physical           0x00\n+#define HID_Application        0x01\n+#define HID_Logical            0x02\n+#define HID_Report             0x03\n+#define HID_NamedArray         0x04\n+#define HID_UsageSwitch        0x05\n+#define HID_UsageModifier      0x06\n+\n+/** Global Items */\n+#define HID_UsagePage(x)       0x05,x\n+#define HID_UsagePageVendor(x) 0x06,x,0xFF\n+#define HID_LogicalMin(x)      0x15,x\n+#define HID_LogicalMinS(x)     0x16,(x&0xFF),((x>>8)&0xFF)\n+#define HID_LogicalMinL(x)     0x17,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_LogicalMax(x)      0x25,x\n+#define HID_LogicalMaxS(x)     0x26,(x&0xFF),((x>>8)&0xFF)\n+#define HID_LogicalMaxL(x)     0x27,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_PhysicalMin(x)     0x35,x\n+#define HID_PhysicalMinS(x)    0x36,(x&0xFF),((x>>8)&0xFF)\n+#define HID_PhysicalMinL(x)    0x37,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_PhysicalMax(x)     0x45,x\n+#define HID_PhysicalMaxS(x)    0x46,(x&0xFF),((x>>8)&0xFF)\n+#define HID_PhysicalMaxL(x)    0x47,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_UnitExponent(x)    0x55,x\n+#define HID_Unit(x)            0x65,x\n+#define HID_UnitS(x)           0x66,(x&0xFF),((x>>8)&0xFF)\n+#define HID_UnitL(x)           0x67,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_ReportSize(x)      0x75,x\n+#define HID_ReportID(x)        0x85,x\n+#define HID_ReportCount(x)     0x95,x\n+#define HID_ReportCount16(x)   0x96,(x&0xFF),((x>>8)&0xFF)\n+#define HID_Push               0xA0\n+#define HID_Pop                0xB0\n+\n+/** Local Items */\n+#define HID_Usage(x)           0x09,x\n+#define HID_UsageMin(x)        0x19,x\n+#define HID_UsageMax(x)        0x29,x\n+/** @} */\n+\n+/** @} */\n+\n+#endif  /* __HID_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_hiduser.h ./lpc_chip_43xx/inc/usbd/usbd_hiduser.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_hiduser.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_hiduser.h\t2017-02-27 20:42:08.468009492 -0300\n@@ -0,0 +1,421 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_hiduser.h 331 2012-08-09 18:54:34Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     HID Custom User Module Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __HIDUSER_H__\n+#define __HIDUSER_H__\n+\n+#include \"usbd.h\"\n+#include \"usbd_hid.h\"\n+#include \"usbd_core.h\"\n+\n+/** \\file\n+ *  \\brief Human Interface Device (HID) API structures and function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based HID function driver.\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_HID HID Class Function Driver\n+ *  \\section Sec_HIDModDescription Module Description\n+ *  HID Class Function Driver module. This module contains an internal implementation of the USB HID Class.\n+ *  User applications can use this class driver instead of implementing the HID class manually\n+ *  via the low-level HW and core APIs.\n+ *\n+ *  This module is designed to simplify the user code by exposing only the required interface needed to interface with\n+ *  Devices using the USB HID Class.\n+ */\n+\n+/** \\brief HID report descriptor data structure.\n+ *  \\ingroup USBD_HID\n+ *\n+ *  \\details  This structure is used as part of HID function driver initialization\n+ *  parameter structure \\ref USBD_HID_INIT_PARAM. This structure contains\n+ *  details of a report type supported by the application. An application\n+ *  can support multiple report types as a single HID device. The application\n+ *  should define this report type data structure per report it supports and\n+ *  the array of report types to USBD_HID_API::init() through \\ref USBD_HID_INIT_PARAM\n+ *  structure.\n+ *\n+ *  \\note All descriptor pointers assigned in this structure should be on 4 byte\n+ *  aligned address boundary.\n+ *\n+ */\n+typedef struct _HID_REPORT_T {\n+  uint16_t len; /**< Size of the report descriptor in bytes. */\n+  uint8_t idle_time; /**< This value is used by stack to respond to Set_Idle &\n+                     GET_Idle requests for the specified report ID. The value\n+                     of this field specified the rate at which duplicate reports\n+                     are generated for the specified Report ID. For example, a\n+                     device with two input reports could specify an idle rate of\n+                     20 milliseconds for report ID 1 and 500 milliseconds for\n+                     report ID 2.\n+                     */\n+  uint8_t __pad; /**< Padding space. */\n+  uint8_t* desc; /**< Report descriptor. */\n+} USB_HID_REPORT_T;\n+\n+/** \\brief USB descriptors data structure.\n+ *  \\ingroup USBD_HID\n+ *\n+ *  \\details  This module exposes functions which interact directly with USB device stack's core layer.\n+ *  The application layer uses this component when it has to implement custom class function driver or\n+ *  standard class function driver which is not part of the current USB device stack.\n+ *  The functions exposed by this interface are to register class specific EP0 handlers and corresponding\n+ *  utility functions to manipulate EP0 state machine of the stack. This interface also exposes\n+ *  function to register custom endpoint interrupt handler.\n+ *\n+ */\n+typedef struct USBD_HID_INIT_PARAM\n+{\n+  /* memory allocation params */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 4 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_HID_API::GetMemSize() routine.*/\n+  /* HID paramas */\n+  uint8_t max_reports; /**< Number of HID reports supported by this instance\n+                       of HID class driver.\n+                       */\n+  uint8_t pad[3];\n+  uint8_t* intf_desc; /**< Pointer to the HID interface descriptor within the\n+                      descriptor array (\\em high_speed_desc) passed to Init()\n+                      through \\ref USB_CORE_DESCS_T structure.\n+                      */\n+  USB_HID_REPORT_T* report_data; /**< Pointer to an array of HID report descriptor\n+                                 data structure (\\ref USB_HID_REPORT_T). The number\n+                                 of elements in the array should be same a \\em max_reports\n+                                 value. The stack uses this array to respond to\n+                                 requests received for various HID report descriptor\n+                                 information. \\note This array should be of global scope.\n+                                 */\n+\n+  /* user defined functions */\n+  /* required functions */\n+  /**\n+  *  HID get report callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a HID_REQUEST_GET_REPORT request. The setup packet data (\\em pSetup)\n+  *  is passed to the callback so that application can extract the report ID, report\n+  *  type and other information need to generate the report. \\note HID reports are sent\n+  *  via interrupt IN endpoint also. This function is called only when report request\n+  *  is received on control endpoint. Application should implement \\em HID_EpIn_Hdlr to\n+  *  send reports to host via interrupt IN endpoint.\n+  *\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in, out] pBuffer  Pointer to a pointer of data buffer containing report data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in] length  Amount of data copied to destination buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_GetReport)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* length);\n+\n+  /**\n+  *  HID set report callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a HID_REQUEST_SET_REPORT request. The setup packet data (\\em pSetup)\n+  *  is passed to the callback so that application can extract the report ID, report\n+  *  type and other information need to modify the report. An application might choose\n+  *  to ignore input Set_Report requests as meaningless. Alternatively these reports\n+  *  could be used to reset the origin of a control (that is, current position should\n+  *  report zero).\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in, out] pBuffer  Pointer to a pointer of data buffer containing report data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in] length  Amount of data copied to destination buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_SetReport)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t length);\n+\n+  /* optional functions */\n+\n+  /**\n+  *  Optional callback function to handle HID_GetPhysDesc request.\n+  *\n+  *  The application software could provide this callback HID_GetPhysDesc handler to\n+  *  handle get physical descriptor requests sent by the host. When host requests\n+  *  Physical Descriptor set 0, application should return a special descriptor\n+  *  identifying the number of descriptor sets and their sizes. A Get_Descriptor\n+  *  request with the Physical Index equal to 1 should return the first Physical\n+  *  Descriptor set. A device could possibly have alternate uses for its items.\n+  *  These can be enumerated by issuing subsequent Get_Descriptor requests while\n+  *  incrementing the Descriptor Index. A device should return the last descriptor\n+  *  set to requests with an index greater than the last number defined in the HID\n+  *  descriptor.\n+  *  \\note Applications which don't have physical descriptor should set this data member\n+  *  to zero before calling the USBD_HID_API::Init().\n+  *  \\n\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in] pBuf Pointer to a pointer of data buffer containing physical descriptor\n+  *                   data. If the physical descriptor is in USB accessible memory area\n+  *                   application could just update the pointer or else it should copy\n+  *                   the descriptor to the address pointed by this pointer.\n+  *  \\param[in] length  Amount of data copied to destination buffer or descriptor length.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_GetPhysDesc)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuf, uint16_t* length);\n+\n+  /**\n+  *  Optional callback function to handle HID_REQUEST_SET_IDLE request.\n+  *\n+  *  The application software could provide this callback to handle HID_REQUEST_SET_IDLE\n+  *  requests sent by the host. This callback is provided to applications to adjust\n+  *  timers associated with various reports, which are sent to host over interrupt\n+  *  endpoint. The setup packet data (\\em pSetup) is passed to the callback so that\n+  *  application can extract the report ID, report type and other information need\n+  *  to modify the report's idle time.\n+  *  \\note Applications which don't send reports on Interrupt endpoint or don't\n+  *  have idle time between reports should set this data member to zero before\n+  *  calling the USBD_HID_API::Init().\n+  *  \\n\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in] idleTime  Idle time to be set for the specified report.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_SetIdle)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t idleTime);\n+\n+  /**\n+  *  Optional callback function to handle HID_REQUEST_SET_PROTOCOL request.\n+  *\n+  *  The application software could provide this callback to handle HID_REQUEST_SET_PROTOCOL\n+  *  requests sent by the host. This callback is provided to applications to adjust\n+  *  modes of their code between boot mode and report mode.\n+  *  \\note Applications which don't support protocol modes should set this data member\n+  *  to zero before calling the USBD_HID_API::Init().\n+  *  \\n\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in] protocol  Protocol mode.\n+  *                       0 = Boot Protocol\n+  *                       1 = Report Protocol\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_SetProtocol)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t protocol);\n+\n+  /**\n+  *  Optional Interrupt IN endpoint event handler.\n+  *\n+  *  The application software could provide Interrupt IN endpoint event handler.\n+  *  Application which send reports to host on interrupt endpoint should provide\n+  *  an endpoint event handler through this data member. This data member is\n+  *  ignored if the interface descriptor \\em intf_desc doesn't have any IN interrupt\n+  *  endpoint descriptor associated.\n+  *  \\n\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Handle to HID function driver.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should return \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_EpIn_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+  /**\n+  *  Optional Interrupt OUT endpoint event handler.\n+  *\n+  *  The application software could provide Interrupt OUT endpoint event handler.\n+  *  Application which receives reports from host on interrupt endpoint should provide\n+  *  an endpoint event handler through this data member. This data member is\n+  *  ignored if the interface descriptor \\em intf_desc doesn't have any OUT interrupt\n+  *  endpoint descriptor associated.\n+  *  \\n\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Handle to HID function driver.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should return \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_EpOut_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  /* user override-able function */\n+  /**\n+  *  Optional user override-able function to replace the default HID_GetReportDesc handler.\n+  *\n+  *  The application software could override the default HID_GetReportDesc handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_HID_API::Init() and also provide report data array\n+  *  \\em report_data field.\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_GetReportDesc)(USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuf, uint16_t* length);\n+  /**\n+  *  Optional user override-able function to replace the default HID class handler.\n+  *\n+  *  The application software could override the default EP0 class handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_HID_API::Init().\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+} USBD_HID_INIT_PARAM_T;\n+\n+/** \\brief HID class API functions structure.\n+ *  \\ingroup USBD_HID\n+ *\n+ *  This structure contains pointers to all the function exposed by HID function driver module.\n+ *\n+ */\n+typedef struct USBD_HID_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_HID_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the HID function driver module.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->hid->Init(), to allocate memory used\n+   *  by HID function driver module. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing HID function driver module initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_HID_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_HID_INIT_PARAM_T* param)\n+   *  Function to initialize HID function driver module.\n+   *\n+   *  This function is called by application layer to initialize HID function driver\n+   *  module. On successful initialization the function returns a handle to HID\n+   *  function driver module in passed param structure.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in, out] param Structure containing HID function driver module\n+   *      initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF  Memory buffer passed is not 4-byte\n+   *              aligned or smaller than required.\n+   *          \\retval ERR_API_INVALID_PARAM2 Either HID_GetReport() or HID_SetReport()\n+   *              callback are not defined.\n+   *          \\retval ERR_USBD_BAD_DESC  HID_HID_DESCRIPTOR_TYPE is not defined\n+   *              immediately after interface descriptor.\n+   *          \\retval ERR_USBD_BAD_INTF_DESC  Wrong interface descriptor is passed.\n+   *          \\retval ERR_USBD_BAD_EP_DESC  Wrong endpoint descriptor is passed.\n+   */\n+  ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_HID_INIT_PARAM_T* param);\n+\n+} USBD_HID_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  ADVANCED_API */\n+\n+typedef struct _HID_CTRL_T {\n+  /* pointer to controller */\n+  USB_CORE_CTRL_T*  pUsbCtrl;\n+  /* descriptor pointers */\n+  uint8_t* hid_desc;\n+  USB_HID_REPORT_T* report_data;\n+\n+  uint8_t protocol;\n+  uint8_t if_num;                  /* interface number */\n+  uint8_t epin_adr;                /* IN interrupt endpoint */\n+  uint8_t epout_adr;               /* OUT interrupt endpoint */\n+\n+  /* user defined functions */\n+  ErrorCode_t (*HID_GetReport)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* length);\n+  ErrorCode_t (*HID_SetReport)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t length);\n+  ErrorCode_t (*HID_GetPhysDesc)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuf, uint16_t* length);\n+  ErrorCode_t (*HID_SetIdle)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t idleTime);\n+  ErrorCode_t (*HID_SetProtocol)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t protocol);\n+\n+  /* virtual overridable functions */\n+  ErrorCode_t (*HID_GetReportDesc)(USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuf, uint16_t* length);\n+\n+}USB_HID_CTRL_T;\n+\n+/** @cond  DIRECT_API */\n+extern uint32_t mwHID_GetMemSize(USBD_HID_INIT_PARAM_T* param);\n+extern ErrorCode_t mwHID_init(USBD_HANDLE_T hUsb, USBD_HID_INIT_PARAM_T* param);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+#endif  /* __HIDUSER_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_hw.h ./lpc_chip_43xx/inc/usbd/usbd_hw.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_hw.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_hw.h\t2017-02-27 20:42:08.468009492 -0300\n@@ -0,0 +1,457 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_hw.h 331 2012-08-09 18:54:34Z usb10131                        $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Hardware Function prototypes.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __USBHW_H__\n+#define __USBHW_H__\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"usbd_core.h\"\n+\n+/** \\file\n+ *  \\brief USB Hardware Function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based Device Controller Driver (DCD).\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_HW USB Device Controller Driver\n+ *  \\section Sec_HWModDescription Module Description\n+ *  The Device Controller Driver Layer implements the routines to deal directly with the hardware.\n+ */\n+\n+/** \\ingroup USBD_HW\n+*  USB Endpoint/class handler Callback Events.\n+*\n+*/\n+enum USBD_EVENT_T {\n+  USB_EVT_SETUP =1,    /**< 1   Setup Packet received */\n+  USB_EVT_OUT,         /**< 2   OUT Packet received */\n+  USB_EVT_IN,          /**< 3    IN Packet sent */\n+  USB_EVT_OUT_NAK,     /**< 4   OUT Packet - Not Acknowledged */\n+  USB_EVT_IN_NAK,      /**< 5    IN Packet - Not Acknowledged */\n+  USB_EVT_OUT_STALL,   /**< 6   OUT Packet - Stalled */\n+  USB_EVT_IN_STALL,    /**< 7    IN Packet - Stalled */\n+  USB_EVT_OUT_DMA_EOT, /**< 8   DMA OUT EP - End of Transfer */\n+  USB_EVT_IN_DMA_EOT,  /**< 9   DMA  IN EP - End of Transfer */\n+  USB_EVT_OUT_DMA_NDR, /**< 10  DMA OUT EP - New Descriptor Request */\n+  USB_EVT_IN_DMA_NDR,  /**< 11  DMA  IN EP - New Descriptor Request */\n+  USB_EVT_OUT_DMA_ERR, /**< 12  DMA OUT EP - Error */\n+  USB_EVT_IN_DMA_ERR,  /**< 13  DMA  IN EP - Error */\n+  USB_EVT_RESET,       /**< 14  Reset event recieved */\n+  USB_EVT_SOF,         /**< 15  Start of Frame event */\n+  USB_EVT_DEV_STATE,   /**< 16  Device status events */\n+  USB_EVT_DEV_ERROR   /**< 17  Device error events */\n+};\n+\n+/**\n+ *  \\brief Hardware API functions structure.\n+ *  \\ingroup USBD_HW\n+ *\n+ *  This module exposes functions which interact directly with USB device controller hardware.\n+ *\n+ */\n+typedef struct USBD_HW_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_API_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the USB device stack's DCD and core layers.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->hw->Init(), to allocate memory used\n+   *  by DCD and core layers. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing USB device stack initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_API_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t Init(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param)\n+   *  Function to initialize USB device stack's DCD and core layers.\n+   *\n+   *  This function is called by application layer to initialize USB hardware and core layers.\n+   *  On successful initialization the function returns a handle to USB device stack which should\n+   *  be passed to the rest of the functions.\n+   *\n+   *  \\param[in,out] phUsb Pointer to the USB device stack handle of type USBD_HANDLE_T.\n+   *  \\param[in]  pDesc Structure containing pointers to various descriptor arrays needed by the stack.\n+   *                    These descriptors are reported to USB host as part of enumerations process.\n+   *  \\param[in]  param Structure containing USB device stack initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK(0) On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF(0x0004000b) When insufficient memory buffer is passed or memory\n+   *                                             is not aligned on 2048 boundary.\n+   */\n+  ErrorCode_t (*Init)(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param);\n+\n+  /** \\fn void Connect(USBD_HANDLE_T hUsb, uint32_t con)\n+   *  Function to make USB device visible/invisible on the USB bus.\n+   *\n+   *  This function is called after the USB initialization. This function uses the soft connect\n+   *  feature to make the device visible on the USB bus. This function is called only after the\n+   *  application is ready to handle the USB data. The enumeration process is started by the\n+   *  host after the device detection. The driver handles the enumeration process according to\n+   *  the USB descriptors passed in the USB initialization function.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] con  States whether to connect (1) or to disconnect (0).\n+   *  \\return Nothing.\n+   */\n+  void (*Connect)(USBD_HANDLE_T hUsb, uint32_t con);\n+\n+  /** \\fn void ISR(USBD_HANDLE_T hUsb)\n+   *  Function to USB device controller interrupt events.\n+   *\n+   *  When the user application is active the interrupt handlers are mapped in the user flash\n+   *  space. The user application must provide an interrupt handler for the USB interrupt and\n+   *  call this function in the interrupt handler routine. The driver interrupt handler takes\n+   *  appropriate action according to the data received on the USB bus.\n+   *\n+   *  \\param[in]  hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*ISR)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void Reset(USBD_HANDLE_T hUsb)\n+   *  Function to Reset USB device stack and hardware controller.\n+   *\n+   *  Reset USB device stack and hardware controller. Disables all endpoints except EP0.\n+   *  Clears all pending interrupts and resets endpoint transfer queues.\n+   *  This function is called internally by pUsbApi->hw->init() and from reset event.\n+   *\n+   *  \\param[in]  hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void  (*Reset)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void ForceFullSpeed(USBD_HANDLE_T hUsb, uint32_t cfg)\n+   *  Function to force high speed USB device to operate in full speed mode.\n+   *\n+   *  This function is useful for testing the behavior of current device when connected\n+   *  to a full speed only hosts.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] cfg  When 1 - set force full-speed or\n+   *                       0 - clear force full-speed.\n+   *  \\return Nothing.\n+   */\n+  void  (*ForceFullSpeed )(USBD_HANDLE_T hUsb, uint32_t cfg);\n+\n+  /** \\fn void WakeUpCfg(USBD_HANDLE_T hUsb, uint32_t cfg)\n+   *  Function to configure USB device controller to wake-up host on remote events.\n+   *\n+   *  This function is called by application layer to configure the USB device controller\n+   *  to wakeup on remote events. It is recommended to call this function from users's\n+   *  USB_WakeUpCfg() callback routine registered with stack.\n+   *  \\note User's USB_WakeUpCfg() is registered with stack by setting the USB_WakeUpCfg member\n+   *  of USBD_API_INIT_PARAM_T structure before calling pUsbApi->hw->Init() routine.\n+   *  Certain USB device controllers needed to keep some clocks always on to generate\n+   *  resume signaling through pUsbApi->hw->WakeUp(). This hook is provided to support\n+   *  such controllers. In most controllers cases this is an empty routine.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] cfg  When 1 - Configure controller to wake on remote events or\n+   *                       0 - Configure controller not to wake on remote events.\n+   *  \\return Nothing.\n+   */\n+  void  (*WakeUpCfg)(USBD_HANDLE_T hUsb, uint32_t  cfg);\n+\n+  /** \\fn void SetAddress(USBD_HANDLE_T hUsb, uint32_t adr)\n+   *  Function to set USB address assigned by host in device controller hardware.\n+   *\n+   *  This function is called automatically when USB_REQUEST_SET_ADDRESS request is received\n+   *  by the stack from USB host.\n+   *  This interface is provided to users to invoke this function in other scenarios which are not\n+   *  handle by current stack. In most user applications this function is not called directly.\n+   *  Also this function can be used by users who are selectively modifying the USB device stack's\n+   *  standard handlers through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] adr  USB bus Address to which the device controller should respond. Usually\n+   *                  assigned by the USB host.\n+   *  \\return Nothing.\n+   */\n+  void  (*SetAddress)(USBD_HANDLE_T hUsb, uint32_t adr);\n+\n+  /** \\fn void Configure(USBD_HANDLE_T hUsb, uint32_t cfg)\n+   *  Function to configure device controller hardware with selected configuration.\n+   *\n+   *  This function is called automatically when USB_REQUEST_SET_CONFIGURATION request is received\n+   *  by the stack from USB host.\n+   *  This interface is provided to users to invoke this function in other scenarios which are not\n+   *  handle by current stack. In most user applications this function is not called directly.\n+   *  Also this function can be used by users who are selectively modifying the USB device stack's\n+   *  standard handlers through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] cfg  Configuration index.\n+   *  \\return Nothing.\n+   */\n+  void  (*Configure)(USBD_HANDLE_T hUsb, uint32_t  cfg);\n+\n+  /** \\fn void ConfigEP(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD)\n+   *  Function to configure USB Endpoint according to descriptor.\n+   *\n+   *  This function is called automatically when USB_REQUEST_SET_CONFIGURATION request is received\n+   *  by the stack from USB host. All the endpoints associated with the selected configuration\n+   *  are configured.\n+   *  This interface is provided to users to invoke this function in other scenarios which are not\n+   *  handle by current stack. In most user applications this function is not called directly.\n+   *  Also this function can be used by users who are selectively modifying the USB device stack's\n+   *  standard handlers through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] pEPD Endpoint descriptor structure defined in USB 2.0 specification.\n+   *  \\return Nothing.\n+   */\n+  void  (*ConfigEP)(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD);\n+\n+  /** \\fn void DirCtrlEP(USBD_HANDLE_T hUsb, uint32_t dir)\n+   *  Function to set direction for USB control endpoint EP0.\n+   *\n+   *  This function is called automatically by the stack on need basis.\n+   *  This interface is provided to users to invoke this function in other scenarios which are not\n+   *  handle by current stack. In most user applications this function is not called directly.\n+   *  Also this function can be used by users who are selectively modifying the USB device stack's\n+   *  standard handlers through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] cfg  When 1 - Set EP0 in IN transfer mode\n+   *                       0 - Set EP0 in OUT transfer mode\n+   *  \\return Nothing.\n+   */\n+  void  (*DirCtrlEP)(USBD_HANDLE_T hUsb, uint32_t dir);\n+\n+  /** \\fn void EnableEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to enable selected USB endpoint.\n+   *\n+   *  This function enables interrupts on selected endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+   */\n+  void  (*EnableEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn void DisableEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to disable selected USB endpoint.\n+   *\n+   *  This function disables interrupts on selected endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+   */\n+  void  (*DisableEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn void ResetEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to reset selected USB endpoint.\n+   *\n+   *  This function flushes the endpoint buffers and resets data toggle logic.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+  */\n+  void  (*ResetEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn void SetStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to STALL selected USB endpoint.\n+   *\n+   *  Generates STALL signaling for requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+   */\n+  void  (*SetStallEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn void ClrStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to clear STALL state for the requested endpoint.\n+   *\n+   *  This function clears STALL state for the requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+   */\n+  void  (*ClrStallEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn ErrorCode_t SetTestMode(USBD_HANDLE_T hUsb, uint8_t mode)\n+   *  Function to set high speed USB device controller in requested test mode.\n+   *\n+   *  USB-IF requires the high speed device to be put in various test modes\n+   *  for electrical testing. This USB device stack calls this function whenever\n+   *  it receives USB_REQUEST_CLEAR_FEATURE request for USB_FEATURE_TEST_MODE.\n+   *  Users can put the device in test mode by directly calling this function.\n+   *  Returns ERR_USBD_INVALID_REQ when device controller is full-speed only.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] mode  Test mode defined in USB 2.0 electrical testing specification.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK(0) - On success\n+   *          \\retval ERR_USBD_INVALID_REQ(0x00040001) - Invalid test mode or\n+   *                                             Device controller is full-speed only.\n+   */\n+  ErrorCode_t (*SetTestMode)(USBD_HANDLE_T hUsb, uint8_t mode);\n+\n+  /** \\fn uint32_t ReadEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData)\n+   *  Function to read data received on the requested endpoint.\n+   *\n+   *  This function is called by USB stack and the application layer to read the data\n+   *  received on the requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\param[in,out] pData Pointer to the data buffer where data is to be copied.\n+   *  \\return Returns the number of bytes copied to the buffer.\n+   */\n+  uint32_t (*ReadEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData);\n+\n+  /** \\fn uint32_t ReadReqEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len)\n+   *  Function to queue read request on the specified endpoint.\n+   *\n+   *  This function is called by USB stack and the application layer to queue a read request\n+   *  on the specified endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\param[in,out] pData Pointer to the data buffer where data is to be copied. This buffer\n+   *                       address should be accessible by USB DMA master.\n+   *  \\param[in] len  Length of the buffer passed.\n+   *  \\return Returns the length of the requested buffer.\n+   */\n+  uint32_t (*ReadReqEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len);\n+\n+  /** \\fn uint32_t ReadSetupPkt(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t *pData)\n+   *  Function to read setup packet data received on the requested endpoint.\n+   *\n+   *  This function is called by USB stack and the application layer to read setup packet data\n+   *  received on the requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP0_IN is represented by 0x80 number.\n+   *  \\param[in,out] pData Pointer to the data buffer where data is to be copied.\n+   *  \\return Returns the number of bytes copied to the buffer.\n+   */\n+  uint32_t (*ReadSetupPkt)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t *pData);\n+\n+  /** \\fn uint32_t WriteEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt)\n+   *  Function to write data to be sent on the requested endpoint.\n+   *\n+   *  This function is called by USB stack and the application layer to send data\n+   *  on the requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\param[in] pData Pointer to the data buffer from where data is to be copied.\n+   *  \\param[in] cnt  Number of bytes to write.\n+   *  \\return Returns the number of bytes written.\n+   */\n+  uint32_t (*WriteEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt);\n+\n+  /** \\fn void WakeUp(USBD_HANDLE_T hUsb)\n+   *  Function to generate resume signaling on bus for remote host wakeup.\n+   *\n+   *  This function is called by application layer to remotely wakeup host controller\n+   *  when system is in suspend state. Application should indicate this remote wakeup\n+   *  capability by setting USB_CONFIG_REMOTE_WAKEUP in bmAttributes of Configuration\n+   *  Descriptor. Also this routine will generate resume signalling only if host\n+   *  enables USB_FEATURE_REMOTE_WAKEUP by sending SET_FEATURE request before suspending\n+   *  the bus.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void  (*WakeUp)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void EnableEvent(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type, uint32_t enable)\n+   *  Function to enable/disable selected USB event.\n+   *\n+   *  This function enables interrupts on selected endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number corresponding to the event.\n+   *                    ie. An EP1_IN is represented by 0x81 number. For device events\n+   *                    set this param to 0x0.\n+   *  \\param[in] event_type  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+   *  \\param[in] enable  1 - enable event, 0 - disable event.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK(0) - On success\n+   *          \\retval ERR_USBD_INVALID_REQ(0x00040001) - Invalid event type.\n+   */\n+  ErrorCode_t  (*EnableEvent)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type, uint32_t enable);\n+\n+} USBD_HW_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes used by stack internally\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  DIRECT_API */\n+\n+/* Driver functions */\n+uint32_t hwUSB_GetMemSize(USBD_API_INIT_PARAM_T* param);\n+ErrorCode_t hwUSB_Init(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param);\n+void hwUSB_Connect(USBD_HANDLE_T hUsb, uint32_t con);\n+void hwUSB_ISR(USBD_HANDLE_T hUsb);\n+\n+/* USB Hardware Functions */\n+extern void  hwUSB_Reset(USBD_HANDLE_T hUsb);\n+extern void  hwUSB_ForceFullSpeed (USBD_HANDLE_T hUsb, uint32_t con);\n+extern void  hwUSB_WakeUpCfg(USBD_HANDLE_T hUsb, uint32_t  cfg);\n+extern void  hwUSB_SetAddress(USBD_HANDLE_T hUsb, uint32_t adr);\n+extern void  hwUSB_Configure(USBD_HANDLE_T hUsb, uint32_t  cfg);\n+extern void  hwUSB_ConfigEP(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD);\n+extern void  hwUSB_DirCtrlEP(USBD_HANDLE_T hUsb, uint32_t dir);\n+extern void  hwUSB_EnableEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern void  hwUSB_DisableEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern void  hwUSB_ResetEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern void  hwUSB_SetStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern void  hwUSB_ClrStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern ErrorCode_t hwUSB_SetTestMode(USBD_HANDLE_T hUsb, uint8_t mode); /* for FS only devices return ERR_USBD_INVALID_REQ */\n+extern uint32_t hwUSB_ReadEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData);\n+extern uint32_t hwUSB_ReadReqEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len);\n+extern uint32_t hwUSB_ReadSetupPkt(USBD_HANDLE_T hUsb, uint32_t, uint32_t *);\n+extern uint32_t hwUSB_WriteEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt);\n+\n+/* generate resume signaling on the bus */\n+extern void  hwUSB_WakeUp(USBD_HANDLE_T hUsb);\n+extern ErrorCode_t  hwUSB_EnableEvent(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type, uint32_t enable);\n+/* TODO implement following routines\n+- function to program TD and queue them to ep Qh\n+*/\n+\n+/** @endcond */\n+\n+\n+#endif  /* __USBHW_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_msc.h ./lpc_chip_43xx/inc/usbd/usbd_msc.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_msc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_msc.h\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,119 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_msc.h 331 2012-08-09 18:54:34Z usb10131                       $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     Mass Storage Class definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __MSC_H__\n+#define __MSC_H__\n+\n+#include \"usbd.h\"\n+\n+/** \\file\n+ *  \\brief Mass Storage class (MSC) descriptors.\n+ *\n+ *  Definition of MSC class descriptors and their bit defines.\n+ *\n+ */\n+\n+/* MSC Subclass Codes */\n+#define MSC_SUBCLASS_RBC                0x01\n+#define MSC_SUBCLASS_SFF8020I_MMC2      0x02\n+#define MSC_SUBCLASS_QIC157             0x03\n+#define MSC_SUBCLASS_UFI                0x04\n+#define MSC_SUBCLASS_SFF8070I           0x05\n+#define MSC_SUBCLASS_SCSI               0x06\n+\n+/* MSC Protocol Codes */\n+#define MSC_PROTOCOL_CBI_INT            0x00\n+#define MSC_PROTOCOL_CBI_NOINT          0x01\n+#define MSC_PROTOCOL_BULK_ONLY          0x50\n+\n+\n+/* MSC Request Codes */\n+#define MSC_REQUEST_RESET               0xFF\n+#define MSC_REQUEST_GET_MAX_LUN         0xFE\n+\n+\n+/* MSC Bulk-only Stage */\n+#define MSC_BS_CBW                      0       /* Command Block Wrapper */\n+#define MSC_BS_DATA_OUT                 1       /* Data Out Phase */\n+#define MSC_BS_DATA_IN                  2       /* Data In Phase */\n+#define MSC_BS_DATA_IN_LAST             3       /* Data In Last Phase */\n+#define MSC_BS_DATA_IN_LAST_STALL       4       /* Data In Last Phase with Stall */\n+#define MSC_BS_CSW                      5       /* Command Status Wrapper */\n+#define MSC_BS_ERROR                    6       /* Error */\n+\n+\n+/* Bulk-only Command Block Wrapper */\n+PRE_PACK struct POST_PACK _MSC_CBW\n+{\n+  uint32_t dSignature;\n+  uint32_t dTag;\n+  uint32_t dDataLength;\n+  uint8_t  bmFlags;\n+  uint8_t  bLUN;\n+  uint8_t  bCBLength;\n+  uint8_t  CB[16];\n+} ;\n+typedef struct _MSC_CBW MSC_CBW;\n+\n+/* Bulk-only Command Status Wrapper */\n+PRE_PACK struct POST_PACK _MSC_CSW\n+{\n+  uint32_t dSignature;\n+  uint32_t dTag;\n+  uint32_t dDataResidue;\n+  uint8_t  bStatus;\n+} ;\n+typedef struct _MSC_CSW MSC_CSW;\n+\n+#define MSC_CBW_Signature               0x43425355\n+#define MSC_CSW_Signature               0x53425355\n+\n+\n+/* CSW Status Definitions */\n+#define CSW_CMD_PASSED                  0x00\n+#define CSW_CMD_FAILED                  0x01\n+#define CSW_PHASE_ERROR                 0x02\n+\n+\n+/* SCSI Commands */\n+#define SCSI_TEST_UNIT_READY            0x00\n+#define SCSI_REQUEST_SENSE              0x03\n+#define SCSI_FORMAT_UNIT                0x04\n+#define SCSI_INQUIRY                    0x12\n+#define SCSI_MODE_SELECT6               0x15\n+#define SCSI_MODE_SENSE6                0x1A\n+#define SCSI_START_STOP_UNIT            0x1B\n+#define SCSI_MEDIA_REMOVAL              0x1E\n+#define SCSI_READ_FORMAT_CAPACITIES     0x23\n+#define SCSI_READ_CAPACITY              0x25\n+#define SCSI_READ10                     0x28\n+#define SCSI_WRITE10                    0x2A\n+#define SCSI_VERIFY10                   0x2F\n+#define SCSI_READ12                     0xA8\n+#define SCSI_WRITE12                    0xAA\n+#define SCSI_MODE_SELECT10              0x55\n+#define SCSI_MODE_SENSE10               0x5A\n+\n+\n+#endif  /* __MSC_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_mscuser.h ./lpc_chip_43xx/inc/usbd/usbd_mscuser.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_mscuser.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_mscuser.h\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,270 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_mscuser.h 577 2012-11-20 01:42:04Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     Mass Storage Class Custom User Module definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __MSCUSER_H__\n+#define __MSCUSER_H__\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"usbd_msc.h\"\n+#include \"usbd_core.h\"\n+#include \"app_usbd_cfg.h\"\n+\n+/** \\file\n+ *  \\brief Mass Storage Class (MSC) API structures and function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based MSC function driver.\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_MSC Mass Storage Class (MSC) Function Driver\n+ *  \\section Sec_MSCModDescription Module Description\n+ *  MSC Class Function Driver module. This module contains an internal implementation of the USB MSC Class.\n+ *  User applications can use this class driver instead of implementing the MSC class manually\n+ *  via the low-level USBD_HW and USBD_Core APIs.\n+ *\n+ *  This module is designed to simplify the user code by exposing only the required interface needed to interface with\n+ *  Devices using the USB MSC Class.\n+ */\n+\n+/** \\brief Mass Storage class function driver initialization parameter data structure.\n+ *  \\ingroup USBD_MSC\n+ *\n+ *  \\details  This data structure is used to pass initialization parameters to the\n+ *  Mass Storage class function driver's init function.\n+ *\n+ */\n+typedef struct USBD_MSC_INIT_PARAM\n+{\n+  /* memory allocation params */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 4 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_MSC_API::GetMemSize() routine.*/\n+  /* mass storage params */\n+  uint8_t*  InquiryStr; /**< Pointer to the 28 character string. This string is\n+                        sent in response to the SCSI Inquiry command. \\note The data\n+                        pointed by the pointer should be of global scope.\n+                        */\n+  uint32_t  BlockCount; /**< Number of blocks present in the mass storage device */\n+  uint32_t  BlockSize; /**< Block size in number of bytes */\n+  uint32_t  MemorySize; /**< Memory size in number of bytes */\n+  /** Pointer to the interface descriptor within the descriptor\n+  * array (\\em high_speed_desc) passed to Init() through \\ref USB_CORE_DESCS_T\n+  * structure. The stack assumes both HS and FS use same BULK endpoints.\n+  */\n+\n+  uint8_t* intf_desc;\n+  /* user defined functions */\n+\n+ /**\n+  *  MSC Write callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a write command.\n+  *\n+  *  \\param[in] offset Destination start address.\n+  *  \\param[in, out] src  Pointer to a pointer to the source of data. Pointer-to-pointer\n+  *                       is used to implement zero-copy buffers. See \\ref USBD_ZeroCopy\n+  *                       for more details on zero-copy concept.\n+  *  \\param[in] length  Number of bytes to be written.\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*MSC_Write)( uint32_t offset, uint8_t** src, uint32_t length, uint32_t high_offset);\n+ /**\n+  *  MSC Read callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a read command.\n+  *\n+  *  \\param[in] offset Source start address.\n+  *  \\param[in, out] dst  Pointer to a pointer to the source of data. The MSC function drivers\n+  *         implemented in stack are written with zero-copy model. Meaning the stack doesn't make an\n+  *          extra copy of buffer before writing/reading data from USB hardware FIFO. Hence the\n+  *          parameter is pointer to a pointer containing address buffer (<em>uint8_t** dst</em>).\n+  *          So that the user application can update the buffer pointer instead of copying data to\n+  *          address pointed by the parameter. /note The updated buffer address should be accessible\n+  *          by USB DMA master. If user doesn't want to use zero-copy model, then the user should copy\n+  *          data to the address pointed by the passed buffer pointer parameter and shouldn't change\n+  *          the address value. See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in] length  Number of bytes to be read.\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*MSC_Read)( uint32_t offset, uint8_t** dst, uint32_t length, uint32_t high_offset);\n+ /**\n+  *  MSC Verify callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a verify command. The callback function should compare the buffer\n+  *  with the destination memory at the requested offset and\n+  *\n+  *  \\param[in] offset Destination start address.\n+  *  \\param[in] buf  Buffer containing the data sent by the host.\n+  *  \\param[in] length  Number of bytes to verify.\n+  *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK If data in the buffer matches the data at destination\n+  *          \\retval ERR_FAILED  At least one byte is different.\n+  *\n+  */\n+  ErrorCode_t (*MSC_Verify)( uint32_t offset, uint8_t buf[], uint32_t length, uint32_t high_offset);\n+  /**\n+  *  Optional callback function to optimize MSC_Write buffer transfer.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends SCSI_WRITE10/SCSI_WRITE12 command. The callback function should\n+  *  update the \\em buff_adr pointer so that the stack transfers the data directly\n+  *  to the target buffer. /note The updated buffer address should be accessible\n+  *  by USB DMA master. If user doesn't want to use zero-copy model, then the user\n+  *  should not update the buffer pointer. See \\ref USBD_ZeroCopy for more details\n+  *  on zero-copy concept.\n+  *\n+  *  \\param[in] offset Destination start address.\n+  *  \\param[in,out] buf  Buffer containing the data sent by the host.\n+  *  \\param[in] length  Number of bytes to write.\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*MSC_GetWriteBuf)( uint32_t offset, uint8_t** buff_adr, uint32_t length, uint32_t high_offset);\n+\n+  /**\n+  *  Optional user override-able function to replace the default MSC class handler.\n+  *\n+  *  The application software could override the default EP0 class handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_MSC_API::Init().\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*MSC_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  uint64_t  MemorySize64;\n+\n+} USBD_MSC_INIT_PARAM_T;\n+\n+/** \\brief MSC class API functions structure.\n+ *  \\ingroup USBD_MSC\n+ *\n+ *  This module exposes functions which interact directly with USB device controller hardware.\n+ *\n+ */\n+typedef struct USBD_MSC_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_MSC_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the MSC function driver module.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->msc->Init(), to allocate memory used\n+   *  by MSC function driver module. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing MSC function driver module initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_MSC_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_MSC_INIT_PARAM_T* param)\n+   *  Function to initialize MSC function driver module.\n+   *\n+   *  This function is called by application layer to initialize MSC function driver module.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in, out] param Structure containing MSC function driver module initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF  Memory buffer passed is not 4-byte\n+   *              aligned or smaller than required.\n+   *          \\retval ERR_API_INVALID_PARAM2 Either MSC_Write() or MSC_Read() or\n+   *              MSC_Verify() callbacks are not defined.\n+   *          \\retval ERR_USBD_BAD_INTF_DESC  Wrong interface descriptor is passed.\n+   *          \\retval ERR_USBD_BAD_EP_DESC  Wrong endpoint descriptor is passed.\n+   */\n+  ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_MSC_INIT_PARAM_T* param);\n+\n+} USBD_MSC_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  ADVANCED_API */\n+\n+typedef struct _MSC_CTRL_T\n+{\n+  /* If it's a USB HS, the max packet is 512, if it's USB FS,\n+  the max packet is 64. Use 512 for both HS and FS. */\n+  /*ALIGNED(4)*/ uint8_t  BulkBuf[USB_HS_MAX_BULK_PACKET]; /* Bulk In/Out Buffer */\n+  /*ALIGNED(4)*/MSC_CBW CBW;                   /* Command Block Wrapper */\n+  /*ALIGNED(4)*/MSC_CSW CSW;                   /* Command Status Wrapper */\n+\n+  USB_CORE_CTRL_T*  pUsbCtrl;\n+\n+  uint64_t Offset;                  /* R/W Offset */\n+  uint32_t Length;                  /* R/W Length */\n+  uint32_t BulkLen;                 /* Bulk In/Out Length */\n+  uint8_t* rx_buf;\n+\n+  uint8_t BulkStage;               /* Bulk Stage */\n+  uint8_t if_num;                  /* interface number */\n+  uint8_t epin_num;                /* BULK IN endpoint number */\n+  uint8_t epout_num;               /* BULK OUT endpoint number */\n+  uint32_t MemOK;                  /* Memory OK */\n+\n+  uint8_t*  InquiryStr;\n+  uint32_t  BlockCount;\n+  uint32_t  BlockSize;\n+  uint64_t  MemorySize;\n+  /* user defined functions */\n+  void (*MSC_Write)( uint32_t offset, uint8_t** src, uint32_t length, uint32_t high_offset);\n+  void (*MSC_Read)( uint32_t offset, uint8_t** dst, uint32_t length, uint32_t high_offset);\n+  ErrorCode_t (*MSC_Verify)( uint32_t offset, uint8_t src[], uint32_t length, uint32_t high_offset);\n+  /* optional call back for MSC_Write optimization */\n+  void (*MSC_GetWriteBuf)( uint32_t offset, uint8_t** buff_adr, uint32_t length, uint32_t high_offset);\n+\n+\n+}USB_MSC_CTRL_T;\n+\n+/** @cond  DIRECT_API */\n+extern uint32_t mwMSC_GetMemSize(USBD_MSC_INIT_PARAM_T* param);\n+extern ErrorCode_t mwMSC_init(USBD_HANDLE_T hUsb, USBD_MSC_INIT_PARAM_T* param);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+\n+#endif  /* __MSCUSER_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_rom_api.h ./lpc_chip_43xx/inc/usbd/usbd_rom_api.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbd/usbd_rom_api.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_rom_api.h\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,92 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_rom_api.h 331 2012-08-09 18:54:34Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     ROM API Module definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __MW_USBD_ROM_API_H\n+#define __MW_USBD_ROM_API_H\n+/** \\file\n+ *  \\brief ROM API for USB device stack.\n+ *\n+ *  Definition of functions exported by ROM based USB device stack.\n+ *\n+ */\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"usbd_hw.h\"\n+#include \"usbd_core.h\"\n+#include \"usbd_mscuser.h\"\n+#include \"usbd_dfuuser.h\"\n+#include \"usbd_hiduser.h\"\n+#include \"usbd_cdcuser.h\"\n+\n+/** \\brief Main USBD API functions structure.\n+ *  \\ingroup Group_USBD\n+ *\n+ *  This structure contains pointer to various USB Device stack's sub-module\n+ *  function tables. This structure is used as main entry point to access\n+ *  various methods (grouped in sub-modules) exposed by ROM based USB device\n+ *  stack.\n+ *\n+ */\n+typedef struct USBD_API\n+{\n+  const USBD_HW_API_T* hw; /**< Pointer to function table which exposes functions\n+                           which interact directly with USB device stack's core\n+                           layer.*/\n+  const USBD_CORE_API_T* core; /**< Pointer to function table which exposes functions\n+                           which interact directly with USB device controller\n+                           hardware.*/\n+  const USBD_MSC_API_T* msc; /**< Pointer to function table which exposes functions\n+                           provided by MSC function driver module.\n+                           */\n+  const USBD_DFU_API_T* dfu; /**< Pointer to function table which exposes functions\n+                           provided by DFU function driver module.\n+                           */\n+  const USBD_HID_API_T* hid; /**< Pointer to function table which exposes functions\n+                           provided by HID function driver module.\n+                           */\n+  const USBD_CDC_API_T* cdc; /**< Pointer to function table which exposes functions\n+                           provided by CDC-ACM function driver module.\n+                           */\n+  const uint32_t* reserved6; /**< Reserved for future function driver module.\n+                           */\n+  const uint32_t version; /**< Version identifier of USB ROM stack. The version is\n+                          defined as 0x0CHDMhCC where each nibble represents version\n+                          number of the corresponding component.\n+                          CC -  7:0  - 8bit core version number\n+                           h - 11:8  - 4bit hardware interface version number\n+                           M - 15:12 - 4bit MSC class module version number\n+                           D - 19:16 - 4bit DFU class module version number\n+                           H - 23:20 - 4bit HID class module version number\n+                           C - 27:24 - 4bit CDC class module version number\n+                           H - 31:28 - 4bit reserved\n+                           */\n+\n+} USBD_API_T;\n+\n+/* Applications using USBD ROM API should define this instance. The pointer should be assigned a value computed based on chip definitions. */\n+extern const USBD_API_T* g_pUsbApi;\n+#define USBD_API g_pUsbApi\n+\n+#endif /*__MW_USBD_ROM_API_H*/\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/usbhs_18xx_43xx.h ./lpc_chip_43xx/inc/usbhs_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/usbhs_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbhs_18xx_43xx.h\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,123 @@\n+/*\n+ * @brief LPC18xx/43xx High-Speed USB driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __USBHS_18XX_43XX_H_\n+#define __USBHS_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup USBHS_18XX_43XX CHIP: LPC18xx/43xx USBHS Device, Host, & OTG driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief USB High-Speed register block structure\n+ */\n+typedef struct {                           /*!< USB Structure         */\n+   __I  uint32_t  RESERVED0[64];\n+   __I  uint32_t  CAPLENGTH;               /*!< Capability register length */\n+   __I  uint32_t  HCSPARAMS;               /*!< Host controller structural parameters */\n+   __I  uint32_t  HCCPARAMS;               /*!< Host controller capability parameters */\n+   __I  uint32_t  RESERVED1[5];\n+   __I  uint32_t  DCIVERSION;              /*!< Device interface version number */\n+   __I  uint32_t  RESERVED2[7];\n+   union {\n+       __IO uint32_t  USBCMD_H;            /*!< USB command (host mode) */\n+       __IO uint32_t  USBCMD_D;            /*!< USB command (device mode) */\n+   };\n+\n+   union {\n+       __IO uint32_t  USBSTS_H;            /*!< USB status (host mode) */\n+       __IO uint32_t  USBSTS_D;            /*!< USB status (device mode) */\n+   };\n+\n+   union {\n+       __IO uint32_t  USBINTR_H;           /*!< USB interrupt enable (host mode) */\n+       __IO uint32_t  USBINTR_D;           /*!< USB interrupt enable (device mode) */\n+   };\n+\n+   union {\n+       __IO uint32_t  FRINDEX_H;           /*!< USB frame index (host mode) */\n+       __I  uint32_t  FRINDEX_D;           /*!< USB frame index (device mode) */\n+   };\n+\n+   __I  uint32_t  RESERVED3;\n+   union {\n+       __IO uint32_t  PERIODICLISTBASE;    /*!< Frame list base address */\n+       __IO uint32_t  DEVICEADDR;          /*!< USB device address     */\n+   };\n+\n+   union {\n+       __IO uint32_t  ASYNCLISTADDR;       /*!< Address of endpoint list in memory (host mode) */\n+       __IO uint32_t  ENDPOINTLISTADDR;    /*!< Address of endpoint list in memory (device mode) */\n+   };\n+\n+   __IO uint32_t  TTCTRL;                  /*!< Asynchronous buffer status for embedded TT (host mode) */\n+   __IO uint32_t  BURSTSIZE;               /*!< Programmable burst size */\n+   __IO uint32_t  TXFILLTUNING;            /*!< Host transmit pre-buffer packet tuning (host mode) */\n+   __I  uint32_t  RESERVED4[2];\n+   __IO uint32_t  ULPIVIEWPORT;            /*!< ULPI viewport          */\n+   __IO uint32_t  BINTERVAL;               /*!< Length of virtual frame */\n+   __IO uint32_t  ENDPTNAK;                /*!< Endpoint NAK (device mode) */\n+   __IO uint32_t  ENDPTNAKEN;              /*!< Endpoint NAK Enable (device mode) */\n+   __I  uint32_t  RESERVED5;\n+   union {\n+       __IO uint32_t  PORTSC1_H;           /*!< Port 1 status/control (host mode) */\n+       __IO uint32_t  PORTSC1_D;           /*!< Port 1 status/control (device mode) */\n+   };\n+\n+   __I  uint32_t  RESERVED6[7];\n+   __IO uint32_t  OTGSC;                   /*!< OTG status and control */\n+   union {\n+       __IO uint32_t  USBMODE_H;           /*!< USB mode (host mode)   */\n+       __IO uint32_t  USBMODE_D;           /*!< USB mode (device mode) */\n+   };\n+\n+   __IO uint32_t  ENDPTSETUPSTAT;          /*!< Endpoint setup status  */\n+   __IO uint32_t  ENDPTPRIME;              /*!< Endpoint initialization */\n+   __IO uint32_t  ENDPTFLUSH;              /*!< Endpoint de-initialization */\n+   __I  uint32_t  ENDPTSTAT;               /*!< Endpoint status        */\n+   __IO uint32_t  ENDPTCOMPLETE;           /*!< Endpoint complete      */\n+   __IO uint32_t  ENDPTCTRL[6];            /*!< Endpoint control 0     */\n+} LPC_USBHS_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __USBHS_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/inc/wwdt_18xx_43xx.h ./lpc_chip_43xx/inc/wwdt_18xx_43xx.h\n--- a_8FkA5l/lpc_chip_43xx/inc/wwdt_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/wwdt_18xx_43xx.h\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,227 @@\n+/*\n+ * @brief LPC18xx/43xx WWDT driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __WWDT_18XX_43XX_H_\n+#define __WWDT_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup WWDT_18XX_43XX CHIP: LPC18xx/43xx Windowed Watchdog driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define WATCHDOG_WINDOW_SUPPORT\n+\n+/** WDT oscillator frequency value */\n+#define WDT_OSC     (CGU_IRC_FREQ)\n+\n+/**\n+ * @brief Windowed Watchdog register block structure\n+ */\n+typedef struct {               /*!< WWDT Structure         */\n+   __IO uint32_t  MOD;         /*!< Watchdog mode register. This register contains the basic mode and status of the Watchdog Timer. */\n+   __IO uint32_t  TC;          /*!< Watchdog timer constant register. This register determines the time-out value. */\n+   __O  uint32_t  FEED;        /*!< Watchdog feed sequence register. Writing 0xAA followed by 0x55 to this register reloads the Watchdog timer with the value contained in WDTC. */\n+   __I  uint32_t  TV;          /*!< Watchdog timer value register. This register reads out the current value of the Watchdog timer. */\n+   __I  uint32_t  RESERVED0;\n+#ifdef WATCHDOG_WINDOW_SUPPORT\n+   __IO uint32_t  WARNINT;     /*!< Watchdog warning interrupt register. This register contains the Watchdog warning interrupt compare value. */\n+   __IO uint32_t  WINDOW;      /*!< Watchdog timer window register. This register contains the Watchdog window value. */\n+#endif\n+} LPC_WWDT_T;\n+\n+/**\n+ * @brief Watchdog Mode register definitions\n+ */\n+/** Watchdog Mode Bitmask */\n+#define WWDT_WDMOD_BITMASK          ((uint32_t) 0x1F)\n+/** WWDT interrupt enable bit */\n+#define WWDT_WDMOD_WDEN             ((uint32_t) (1 << 0))\n+/** WWDT interrupt enable bit */\n+#define WWDT_WDMOD_WDRESET          ((uint32_t) (1 << 1))\n+/** WWDT time out flag bit */\n+#define WWDT_WDMOD_WDTOF            ((uint32_t) (1 << 2))\n+/** WDT Time Out flag bit */\n+#define WWDT_WDMOD_WDINT            ((uint32_t) (1 << 3))\n+/** WWDT Protect flag bit */\n+#define WWDT_WDMOD_WDPROTECT        ((uint32_t) (1 << 4))\n+\n+/**\n+ * @brief  Initialize the Watchdog timer\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return None\n+ */\n+void Chip_WWDT_Init(LPC_WWDT_T *pWWDT);\n+\n+/**\n+ * @brief  Shutdown the Watchdog timer\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return None\n+ */\n+void Chip_WWDT_DeInit(LPC_WWDT_T *pWWDT);\n+\n+/**\n+ * @brief  Set WDT timeout constant value used for feed\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  timeout : WDT timeout in ticks, between WWDT_TICKS_MIN and WWDT_TICKS_MAX\n+ * @return none\n+ */\n+STATIC INLINE void Chip_WWDT_SetTimeOut(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+   pWWDT->TC = timeout;\n+}\n+\n+/**\n+ * @brief  Feed watchdog timer\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return None\n+ * @note   If this function isn't called, a watchdog timer warning will occur.\n+ * After the warning, a timeout will occur if a feed has happened.\n+ */\n+STATIC INLINE void Chip_WWDT_Feed(LPC_WWDT_T *pWWDT)\n+{\n+   pWWDT->FEED = 0xAA;\n+   pWWDT->FEED = 0x55;\n+}\n+\n+#if defined(WATCHDOG_WINDOW_SUPPORT)\n+/**\n+ * @brief  Set WWDT warning interrupt\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  timeout : WDT warning in ticks, between 0 and 1023\n+ * @return None\n+ * @note   This is the number of ticks after the watchdog interrupt that the\n+ * warning interrupt will be generated.\n+ */\n+STATIC INLINE void Chip_WWDT_SetWarning(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+   pWWDT->WARNINT = timeout;\n+}\n+\n+/**\n+ * @brief  Set WWDT window time\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  timeout : WDT timeout in ticks, between WWDT_TICKS_MIN and WWDT_TICKS_MAX\n+ * @return None\n+ * @note   The watchdog timer must be fed between the timeout from the Chip_WWDT_SetTimeOut()\n+ * function and this function, with this function defining the last tick before the\n+ * watchdog window interrupt occurs.\n+ */\n+STATIC INLINE void Chip_WWDT_SetWindow(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+   pWWDT->WINDOW = timeout;\n+}\n+\n+#endif\n+\n+/**\n+ * @brief  Enable watchdog timer options\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  options : An or'ed set of options of values\n+ *                     WWDT_WDMOD_WDEN, WWDT_WDMOD_WDRESET, and WWDT_WDMOD_WDPROTECT\n+ * @return None\n+ * @note   You can enable more than one option at once (ie, WWDT_WDMOD_WDRESET |\n+ * WWDT_WDMOD_WDPROTECT), but use the WWDT_WDMOD_WDEN after all other options\n+ * are set (or unset) with no other options. If WWDT_WDMOD_LOCK is used, it cannot\n+ * be unset.\n+ */\n+STATIC INLINE void Chip_WWDT_SetOption(LPC_WWDT_T *pWWDT, uint32_t options)\n+{\n+   pWWDT->MOD |= options;\n+}\n+\n+/**\n+ * @brief  Disable/clear watchdog timer options\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  options : An or'ed set of options of values\n+ *                     WWDT_WDMOD_WDEN, WWDT_WDMOD_WDRESET, and WWDT_WDMOD_WDPROTECT\n+ * @return None\n+ * @note   You can disable more than one option at once (ie, WWDT_WDMOD_WDRESET |\n+ * WWDT_WDMOD_WDTOF).\n+ */\n+STATIC INLINE void Chip_WWDT_UnsetOption(LPC_WWDT_T *pWWDT, uint32_t options)\n+{\n+   pWWDT->MOD &= (~options) & WWDT_WDMOD_BITMASK;\n+}\n+\n+/**\n+ * @brief  Enable WWDT activity\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_WWDT_Start(LPC_WWDT_T *pWWDT)\n+{\n+   Chip_WWDT_SetOption(pWWDT, WWDT_WDMOD_WDEN);\n+   Chip_WWDT_Feed(pWWDT);\n+}\n+\n+/**\n+ * @brief  Read WWDT status flag\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return Watchdog status, an Or'ed value of WWDT_WDMOD_*\n+ */\n+STATIC INLINE uint32_t Chip_WWDT_GetStatus(LPC_WWDT_T *pWWDT)\n+{\n+   return pWWDT->MOD;\n+}\n+\n+/**\n+ * @brief  Clear WWDT interrupt status flags\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  status  : Or'ed value of status flag(s) that you want to clear, should be:\n+ *              - WWDT_WDMOD_WDTOF: Clear watchdog timeout flag\n+ *              - WWDT_WDMOD_WDINT: Clear watchdog warning flag\n+ * @return None\n+ */\n+void Chip_WWDT_ClearStatusFlag(LPC_WWDT_T *pWWDT, uint32_t status);\n+\n+/**\n+ * @brief  Get the current value of WDT\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return current value of WDT\n+ */\n+STATIC INLINE uint32_t Chip_WWDT_GetCurrentCount(LPC_WWDT_T *pWWDT)\n+{\n+   return pWWDT->TV;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __WWDT_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/adc_18xx_43xx.c ./lpc_chip_43xx/src/adc_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/adc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/adc_18xx_43xx.c\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,257 @@\n+/*\n+ * @brief LPC18xx/43xx A/D conversion driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Get the number of clock for a full conversion */\n+STATIC INLINE uint8_t getFullConvClk(void)\n+{\n+   return 11;\n+}\n+\n+/* Returns clock index for the peripheral block */\n+STATIC CHIP_CCU_CLK_T Chip_ADC_GetClockIndex(LPC_ADC_T *pADC)\n+{\n+   CHIP_CCU_CLK_T clkADC;\n+\n+   if (pADC == LPC_ADC1) {\n+       clkADC = CLK_APB3_ADC1;\n+   }\n+   else {\n+       clkADC = CLK_APB3_ADC0;\n+   }\n+\n+   return clkADC;\n+}\n+\n+/* Get divider value */\n+STATIC uint8_t getClkDiv(LPC_ADC_T *pADC, bool burstMode, uint32_t adcRate, uint8_t clks)\n+{\n+   uint32_t adcBlockFreq;\n+   uint32_t fullAdcRate;\n+   uint8_t div;\n+\n+   /* The APB clock (PCLK_ADC0) is divided by (CLKDIV+1) to produce the clock for\n+      A/D converter, which should be less than or equal to 4.5MHz.\n+      A fully conversion requires (bits_accuracy+1) of these clocks.\n+      ADC Clock = PCLK_ADC0 / (CLKDIV + 1);\n+      ADC rate = ADC clock / (the number of clocks required for each conversion);\n+    */\n+   adcBlockFreq = Chip_Clock_GetRate(Chip_ADC_GetClockIndex(pADC));\n+   if (burstMode) {\n+       fullAdcRate = adcRate * clks;\n+   }\n+   else {\n+       fullAdcRate = adcRate * getFullConvClk();\n+   }\n+\n+   /* Get the round value by fomular: (2*A + B)/(2*B) */\n+   div = ((adcBlockFreq * 2 + fullAdcRate) / (fullAdcRate * 2)) - 1;\n+   return div;\n+}\n+\n+/* Set start mode for ADC */\n+void setStartMode(LPC_ADC_T *pADC, uint8_t start_mode)\n+{\n+   uint32_t temp;\n+   temp = pADC->CR & (~ADC_CR_START_MASK);\n+   pADC->CR = temp | (ADC_CR_START_MODE_SEL((uint32_t) start_mode));\n+}\n+\n+/* Get the ADC value */\n+Status readAdcVal(LPC_ADC_T *pADC, uint8_t channel, uint16_t *data)\n+{\n+   uint32_t temp;\n+   temp = pADC->DR[channel];\n+   if (!ADC_DR_DONE(temp)) {\n+       return ERROR;\n+   }\n+   /*  if(ADC_DR_OVERRUN(temp) && (pADC->CR & ADC_CR_BURST)) */\n+   /*  return ERROR; */\n+   *data = (uint16_t) ADC_DR_RESULT(temp);\n+   return SUCCESS;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the ADC peripheral and the ADC setup structure to default value */\n+void Chip_ADC_Init(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup)\n+{\n+   uint8_t div;\n+   uint32_t cr = 0;\n+   uint32_t clk;\n+\n+   Chip_Clock_EnableOpts(Chip_ADC_GetClockIndex(pADC), true, true, 1);\n+\n+   pADC->INTEN = 0;        /* Disable all interrupts */\n+\n+   cr |= ADC_CR_PDN;\n+   ADCSetup->adcRate = ADC_MAX_SAMPLE_RATE;\n+   ADCSetup->bitsAccuracy = ADC_10BITS;\n+   clk = 11;\n+   ADCSetup->burstMode = false;\n+   div = getClkDiv(pADC, false, ADCSetup->adcRate, clk);\n+   cr |= ADC_CR_CLKDIV(div);\n+   cr |= ADC_CR_BITACC(ADCSetup->bitsAccuracy);\n+   pADC->CR = cr;\n+}\n+\n+/* Shutdown ADC */\n+void Chip_ADC_DeInit(LPC_ADC_T *pADC)\n+{\n+   pADC->INTEN = 0x00000100;\n+   pADC->CR = 0;\n+   Chip_Clock_Disable(Chip_ADC_GetClockIndex(pADC));\n+}\n+\n+/* Get the ADC value */\n+Status Chip_ADC_ReadValue(LPC_ADC_T *pADC, uint8_t channel, uint16_t *data)\n+{\n+   return readAdcVal(pADC, channel, data);\n+}\n+\n+/* Get ADC Channel status from ADC data register */\n+FlagStatus Chip_ADC_ReadStatus(LPC_ADC_T *pADC, uint8_t channel, uint32_t StatusType)\n+{\n+   switch (StatusType) {\n+   case ADC_DR_DONE_STAT:\n+       return (pADC->STAT & (1UL << channel)) ? SET : RESET;\n+\n+   case ADC_DR_OVERRUN_STAT:\n+       channel += 8;\n+       return (pADC->STAT & (1UL << channel)) ? SET : RESET;\n+\n+   case ADC_DR_ADINT_STAT:\n+       return pADC->STAT >> 16 ? SET : RESET;\n+\n+   default:\n+       break;\n+   }\n+   return RESET;\n+}\n+\n+/* Enable/Disable interrupt for ADC channel */\n+void Chip_ADC_Int_SetChannelCmd(LPC_ADC_T *pADC, uint8_t channel, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pADC->INTEN |= (1UL << channel);\n+   }\n+   else {\n+       pADC->INTEN &= (~(1UL << channel));\n+   }\n+}\n+\n+/* Select the mode starting the AD conversion */\n+void Chip_ADC_SetStartMode(LPC_ADC_T *pADC, ADC_START_MODE_T mode, ADC_EDGE_CFG_T EdgeOption)\n+{\n+   if ((mode != ADC_START_NOW) && (mode != ADC_NO_START)) {\n+       if (EdgeOption) {\n+           pADC->CR |= ADC_CR_EDGE;\n+       }\n+       else {\n+           pADC->CR &= ~ADC_CR_EDGE;\n+       }\n+   }\n+   setStartMode(pADC, (uint8_t) mode);\n+}\n+\n+/* Set the ADC Sample rate */\n+void Chip_ADC_SetSampleRate(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup, uint32_t rate)\n+{\n+   uint8_t div;\n+   uint32_t cr;\n+\n+   cr = pADC->CR & (~ADC_SAMPLE_RATE_CONFIG_MASK);\n+   ADCSetup->adcRate = rate;\n+   div = getClkDiv(pADC, ADCSetup->burstMode, rate, (11 - ADCSetup->bitsAccuracy));\n+   cr |= ADC_CR_CLKDIV(div);\n+   cr |= ADC_CR_BITACC(ADCSetup->bitsAccuracy);\n+   pADC->CR = cr;\n+}\n+\n+/* Set the ADC accuracy bits */\n+void Chip_ADC_SetResolution(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup, ADC_RESOLUTION_T resolution)\n+{\n+   ADCSetup->bitsAccuracy = resolution;\n+   Chip_ADC_SetSampleRate(pADC, ADCSetup, ADCSetup->adcRate);\n+}\n+\n+/* Enable or disable the ADC channel on ADC peripheral */\n+void Chip_ADC_EnableChannel(LPC_ADC_T *pADC, ADC_CHANNEL_T channel, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pADC->CR |= ADC_CR_CH_SEL(channel);\n+   }\n+   else {\n+       pADC->CR &= ~ADC_CR_START_MASK;\n+       pADC->CR &= ~ADC_CR_CH_SEL(channel);\n+   }\n+}\n+\n+/* Enable burst mode */\n+void Chip_ADC_SetBurstCmd(LPC_ADC_T *pADC, FunctionalState NewState)\n+{\n+   setStartMode(pADC, ADC_NO_START);\n+\n+    if (NewState == DISABLE) {\n+       pADC->CR &= ~ADC_CR_BURST;\n+   }\n+   else {\n+       pADC->CR |= ADC_CR_BURST;\n+   }\n+}\n+\n+/* Read the ADC value and convert it to 8bits value */\n+Status Chip_ADC_ReadByte(LPC_ADC_T *pADC, ADC_CHANNEL_T channel, uint8_t *data)\n+{\n+   uint16_t temp;\n+   Status rt;\n+\n+   rt = readAdcVal(pADC, channel, &temp);\n+   *data = (uint8_t) temp;\n+\n+   return rt;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/aes_18xx_43xx.c ./lpc_chip_43xx/src/aes_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/aes_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/aes_18xx_43xx.c\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,174 @@\n+/*\n+ * @brief LPC18xx/43xx AES Engine driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define BOOTROM_BASE           0x10400100\n+#define AES_API_TABLE_OFFSET   0x2\n+\n+typedef    void        (*V_FP_V)(void);\n+typedef    uint32_t    (*U32_FP_V)(void);\n+\n+static unsigned long *BOOTROM_API_TABLE;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+static uint32_t (*aes_SetMode)(CHIP_AES_OP_MODE_T AesMode);\n+static void (*aes_LoadKey1)(void);\n+static void (*aes_LoadKey2)(void);\n+static void (*aes_LoadKeyRNG)(void);\n+static void (*aes_LoadKeySW)(uint8_t *pKey);\n+static void (*aes_LoadIV_SW)(uint8_t *pVector);\n+static void (*aes_LoadIV_IC)(void);\n+static uint32_t (*aes_Operate)(uint8_t *pDatOut, uint8_t *pDatIn, uint32_t size);\n+static uint32_t (*aes_ProgramKey1)(uint8_t *pKey);\n+static uint32_t (*aes_ProgramKey2)(uint8_t *pKey);\n+static uint32_t (*aes_Config_DMA) (uint32_t channel_id);\n+static uint32_t (*aes_Operate_DMA)(uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size);\n+static uint32_t (*aes_Get_Status_DMA) (uint32_t channel_id);\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* CHIP AES Initialisation function */\n+void Chip_AES_Init(void)\n+{\n+   uint32_t (*ROM_aes_Init)(void);\n+\n+   BOOTROM_API_TABLE = *((unsigned long * *) BOOTROM_BASE + AES_API_TABLE_OFFSET);\n+\n+   ROM_aes_Init        = (uint32_t (*)(void))BOOTROM_API_TABLE[0];\n+   aes_SetMode         = (uint32_t (*)(CHIP_AES_OP_MODE_T AesMode))BOOTROM_API_TABLE[1];\n+   aes_LoadKey1        = (void (*)(void))BOOTROM_API_TABLE[2];\n+   aes_LoadKey2        = (void (*)(void))BOOTROM_API_TABLE[3];\n+   aes_LoadKeyRNG      = (void (*)(void))BOOTROM_API_TABLE[4];\n+   aes_LoadKeySW       = (void (*)(uint8_t *pKey))BOOTROM_API_TABLE[5];\n+   aes_LoadIV_SW       = (void (*)(uint8_t *pVector))BOOTROM_API_TABLE[6];\n+   aes_LoadIV_IC       = (void (*)(void))BOOTROM_API_TABLE[7];\n+   aes_Operate         = (uint32_t (*)(uint8_t *pDatOut, uint8_t *pDatIn, uint32_t Size))BOOTROM_API_TABLE[8];\n+   aes_ProgramKey1     = (uint32_t (*)(uint8_t *pKey))BOOTROM_API_TABLE[9];\n+   aes_ProgramKey2     = (uint32_t (*)(uint8_t *pKey))BOOTROM_API_TABLE[10];\n+   aes_Config_DMA      = (uint32_t (*)(uint32_t channel_id))BOOTROM_API_TABLE[11];\n+   aes_Operate_DMA     = (uint32_t (*)(uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size))BOOTROM_API_TABLE[12];\n+   aes_Get_Status_DMA  = (uint32_t (*) (uint32_t channel_id))BOOTROM_API_TABLE[13];\n+\n+   ROM_aes_Init();\n+}\n+\n+/* Set Operation mode in AES Engine */\n+uint32_t Chip_AES_SetMode(CHIP_AES_OP_MODE_T AesMode)\n+{\n+   return aes_SetMode(AesMode);\n+}\n+\n+/* Load 128-bit user key in AES Engine */\n+void Chip_AES_LoadKey(uint32_t keyNum)\n+{\n+   if (keyNum) {\n+       aes_LoadKey2();\n+   }\n+   else {\n+       aes_LoadKey1();\n+   }\n+}\n+\n+/* Load randomly generated key in AES engine */\n+void Chip_AES_LoadKeyRNG(void)\n+{\n+   aes_LoadKeyRNG();\n+}\n+\n+/* Load 128-bit AES software defined user key */\n+void Chip_AES_LoadKeySW(uint8_t *pKey)\n+{\n+   aes_LoadKeySW(pKey);\n+}\n+\n+/* Load 128-bit AES initialization vector */\n+void Chip_AES_LoadIV_SW(uint8_t *pVector)\n+{\n+   aes_LoadIV_SW(pVector);\n+}\n+\n+/* Load IC specific 128-bit AES initialization vector */\n+void Chip_AES_LoadIV_IC(void)\n+{\n+   aes_LoadIV_IC();\n+}\n+\n+/* Operate AES Engine */\n+uint32_t Chip_AES_Operate(uint8_t *pDatOut, uint8_t *pDatIn, uint32_t Size)\n+{\n+   return aes_Operate(pDatOut, pDatIn, Size);\n+}\n+\n+/* Program 128-bit AES Key in OTP */\n+uint32_t Chip_AES_ProgramKey(uint32_t KeyNum, uint8_t *pKey)\n+{\n+   uint32_t status;\n+\n+   if (KeyNum) {\n+       status = aes_ProgramKey2(pKey);\n+   }\n+   else {\n+       status = aes_ProgramKey1(pKey);\n+   }\n+   return status;\n+}\n+\n+/* Configure DMA channel to process AES block */\n+uint32_t Chip_AES_Config_DMA(uint32_t channel_id)\n+{\n+   return aes_Config_DMA(channel_id);\n+}\n+\n+/* Enables DMA channel and Operates AES Engine */\n+uint32_t Chip_AES_OperateDMA(uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size)\n+{\n+   return aes_Operate_DMA(channel_id,dataOutAddr,dataInAddr,size);\n+}\n+\n+/* Read status of DMA channels that process an AES data block. */\n+uint32_t Chip_AES_GetStatusDMA(uint32_t channel_id)\n+{\n+   return aes_Get_Status_DMA(channel_id);\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/atimer_18xx_43xx.c ./lpc_chip_43xx/src/atimer_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/atimer_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/atimer_18xx_43xx.c\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,63 @@\n+/*\n+ * @brief LPC18xx/43xx Alarm Timer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize Alarm Timer */\n+void Chip_ATIMER_Init(LPC_ATIMER_T *pATIMER, uint32_t PresetValue)\n+{\n+   Chip_ATIMER_UpdatePresetValue(pATIMER, PresetValue);\n+   Chip_ATIMER_ClearIntStatus(pATIMER);\n+}\n+\n+/* Close ATIMER device */\n+void Chip_ATIMER_DeInit(LPC_ATIMER_T *pATIMER)\n+{\n+   Chip_ATIMER_ClearIntStatus(pATIMER);\n+   Chip_ATIMER_IntDisable(pATIMER);\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/ccan_18xx_43xx.c ./lpc_chip_43xx/src/ccan_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/ccan_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/ccan_18xx_43xx.c\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,311 @@\n+/*\n+ * @brief LPC18xx/43xx CCAN driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Configure the bit timing for CCAN bus */\n+STATIC void configTimming(LPC_CCAN_T *pCCAN,\n+                         uint32_t ClkDiv,\n+                         uint32_t BaudRatePrescaler,\n+                         uint8_t SynJumpWidth,\n+                         uint8_t Tseg1,\n+                         uint8_t Tseg2)\n+{\n+   /* Reset software */\n+   if (!(pCCAN->CNTL & CCAN_CTRL_INIT)) {\n+       pCCAN->CNTL |= CCAN_CTRL_INIT;\n+   }\n+\n+   /*Set bus timing */\n+   pCCAN->CLKDIV = ClkDiv;         /* Divider for CAN VPB3 clock */\n+   pCCAN->CNTL |= CCAN_CTRL_CCE;       /* Start configuring bit timing */\n+   pCCAN->BT = (BaudRatePrescaler & 0x3F) | (SynJumpWidth & 0x03) << 6 | (Tseg1 & 0x0F) << 8 | (Tseg2 & 0x07) << 12;\n+   pCCAN->BRPE = BaudRatePrescaler >> 6;   /* Set Baud Rate Prescaler MSBs */\n+   pCCAN->CNTL &= ~CCAN_CTRL_CCE;      /* Stop configuring bit timing */\n+\n+   /* Finish software initialization */\n+   pCCAN->CNTL &= ~CCAN_CTRL_INIT;\n+   while ( pCCAN->CNTL & CCAN_CTRL_INIT ) {}\n+}\n+\n+/* Return 1->32; 0 if not find free msg */\n+STATIC uint8_t getFreeMsgObject(LPC_CCAN_T *pCCAN)\n+{\n+   uint32_t msg_valid;\n+   uint8_t i;\n+   msg_valid = Chip_CCAN_GetValidMsg(pCCAN);\n+   for (i = 0; i < CCAN_MSG_MAX_NUM; i++) {\n+       if (!((msg_valid >> i) & 1UL)) {\n+           return i + 1;\n+       }\n+   }\n+   return 0;   // No free object\n+}\n+\n+STATIC void freeMsgObject(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum)\n+{\n+   Chip_CCAN_SetValidMsg(pCCAN, IFSel, msgNum, false);\n+}\n+\n+/* Returns clock index for the peripheral block */\n+STATIC CHIP_CCU_CLK_T Chip_CCAN_GetClockIndex(LPC_CCAN_T *pCCAN)\n+{\n+   CHIP_CCU_CLK_T clkCCAN;\n+\n+   if (pCCAN == LPC_C_CAN1) {\n+       clkCCAN = CLK_APB1_CAN1;\n+   }\n+   else {\n+       clkCCAN = CLK_APB3_CAN0;\n+   }\n+\n+   return clkCCAN;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the CCAN peripheral, free all message object in RAM */\n+void Chip_CCAN_Init(LPC_CCAN_T *pCCAN)\n+{\n+   uint8_t i;\n+\n+   Chip_Clock_EnableOpts(Chip_CCAN_GetClockIndex(pCCAN), true, false, 1);\n+\n+   for (i = 1; i <= CCAN_MSG_MAX_NUM; i++) {\n+       freeMsgObject(pCCAN, CCAN_MSG_IF1, i);\n+   }\n+   Chip_CCAN_ClearStatus(pCCAN, (CCAN_STAT_RXOK | CCAN_STAT_TXOK));\n+}\n+\n+/* De-initialize the CCAN peripheral */\n+void Chip_CCAN_DeInit(LPC_CCAN_T *pCCAN)\n+{\n+   Chip_Clock_Disable(Chip_CCAN_GetClockIndex(pCCAN));\n+}\n+\n+/* Select bit rate for CCAN bus */\n+Status Chip_CCAN_SetBitRate(LPC_CCAN_T *pCCAN, uint32_t bitRate)\n+{\n+   uint32_t pClk, div, quanta, segs, seg1, seg2, clk_per_bit, can_sjw;\n+   pClk = Chip_Clock_GetRate(Chip_CCAN_GetClockIndex(pCCAN));\n+   clk_per_bit = pClk / bitRate;\n+\n+   for (div = 0; div <= 15; div++) {\n+       for (quanta = 1; quanta <= 32; quanta++) {\n+           for (segs = 3; segs <= 17; segs++) {\n+               if (clk_per_bit == (segs * quanta * (div + 1))) {\n+                   segs -= 3;\n+                   seg1 = segs / 2;\n+                   seg2 = segs - seg1;\n+                   can_sjw = seg1 > 3 ? 3 : seg1;\n+                   configTimming(pCCAN, div, quanta - 1, can_sjw, seg1, seg2);\n+                   return SUCCESS;\n+               }\n+           }\n+       }\n+   }\n+   return ERROR;\n+}\n+\n+/* Clear the status of CCAN bus */\n+void Chip_CCAN_ClearStatus(LPC_CCAN_T *pCCAN, uint32_t val)\n+{\n+   uint32_t tmp = Chip_CCAN_GetStatus(pCCAN);\n+   Chip_CCAN_SetStatus(pCCAN, tmp & (~val));\n+}\n+\n+/* Set a message into the message object in message RAM */\n+void Chip_CCAN_SetMsgObject(LPC_CCAN_T *pCCAN,\n+                           CCAN_MSG_IF_T IFSel,\n+                           CCAN_TRANSFER_DIR_T dir,\n+                           bool remoteFrame,\n+                           uint8_t msgNum,\n+                           const CCAN_MSG_OBJ_T *pMsgObj)\n+{\n+   uint16_t *pData;\n+   uint32_t msgCtrl = 0;\n+\n+   if (pMsgObj == NULL) {\n+       return;\n+   }\n+   pData = (uint16_t *) (pMsgObj->data);\n+\n+   msgCtrl |= CCAN_IF_MCTRL_UMSK | CCAN_IF_MCTRL_RMTEN(remoteFrame) | CCAN_IF_MCTRL_EOB |\n+              (pMsgObj->dlc & CCAN_IF_MCTRL_DLC_MSK);\n+   if (dir == CCAN_TX_DIR) {\n+       msgCtrl |= CCAN_IF_MCTRL_TXIE;\n+       if (!remoteFrame) {\n+           msgCtrl |= CCAN_IF_MCTRL_TXRQ;\n+       }\n+   }\n+   else {\n+       msgCtrl |= CCAN_IF_MCTRL_RXIE;\n+   }\n+\n+   pCCAN->IF[IFSel].MCTRL = msgCtrl;\n+   pCCAN->IF[IFSel].DA1 = *pData++;    /* Lower two bytes of message pointer */\n+   pCCAN->IF[IFSel].DA2 = *pData++;    /* Upper two bytes of message pointer */\n+   pCCAN->IF[IFSel].DB1 = *pData++;    /* Lower two bytes of message pointer */\n+   pCCAN->IF[IFSel].DB2 = *pData;  /* Upper two bytes of message pointer */\n+\n+   /* Configure arbitration */\n+   if (!(pMsgObj->id & (0x1 << 30))) {                 /* bit 30 is 0, standard frame */\n+       /* Mxtd: 0, Mdir: 1, Mask is 0x7FF */\n+       pCCAN->IF[IFSel].MSK2 = CCAN_IF_MASK2_MDIR(dir) | (CCAN_MSG_ID_STD_MASK << 2);\n+       pCCAN->IF[IFSel].MSK1 = 0x0000;\n+\n+       /* MsgVal: 1, Mtd: 0, Dir: 1, ID = 0x200 */\n+       pCCAN->IF[IFSel].ARB2 = CCAN_IF_ARB2_MSGVAL | CCAN_IF_ARB2_DIR(dir) | (pMsgObj->id << 2);\n+       pCCAN->IF[IFSel].ARB1 = 0x0000;\n+   }\n+   else {                                      /* Extended frame */\n+       /* Mxtd: 1, Mdir: 1, Mask is 0x1FFFFFFF */\n+       pCCAN->IF[IFSel].MSK2 = CCAN_IF_MASK2_MXTD | CCAN_IF_MASK2_MDIR(dir) | (CCAN_MSG_ID_EXT_MASK >> 16);\n+       pCCAN->IF[IFSel].MSK1 = CCAN_MSG_ID_EXT_MASK & 0x0000FFFF;\n+\n+       /* MsgVal: 1, Mtd: 1, Dir: 1, ID = 0x200000 */\n+       pCCAN->IF[IFSel].ARB2 = CCAN_IF_ARB2_MSGVAL | CCAN_IF_ARB2_XTD | CCAN_IF_ARB2_DIR(dir) | (pMsgObj->id >> 16);\n+       pCCAN->IF[IFSel].ARB1 = pMsgObj->id & 0x0000FFFF;\n+   }\n+\n+   Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_WR | CCAN_IF_CMDMSK_TRANSFER_ALL, msgNum);\n+}\n+\n+/* Get a message object in message RAM into the message buffer */\n+void Chip_CCAN_GetMsgObject(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum, CCAN_MSG_OBJ_T *pMsgObj)\n+{\n+   uint32_t *pData;\n+   if (!pMsgObj) {\n+       return;\n+   }\n+   pData = (uint32_t *) pMsgObj->data;\n+   Chip_CCAN_TransferMsgObject(pCCAN,\n+                               IFSel,\n+                               CCAN_IF_CMDMSK_RD | CCAN_IF_CMDMSK_TRANSFER_ALL | CCAN_IF_CMDMSK_R_CLRINTPND,\n+                               msgNum);\n+\n+   if (pCCAN->IF[IFSel].MCTRL & CCAN_IF_MCTRL_NEWD) {\n+       pMsgObj->id = (pCCAN->IF[IFSel].ARB1) | (pCCAN->IF[IFSel].ARB2 << 16);\n+       pMsgObj->dlc = pCCAN->IF[IFSel].MCTRL & CCAN_IF_MCTRL_DLC_MSK;\n+       *pData++ = (pCCAN->IF[IFSel].DA2 << 16) | pCCAN->IF[IFSel].DA1;\n+       *pData = (pCCAN->IF[IFSel].DB2 << 16) | pCCAN->IF[IFSel].DB1;\n+\n+       if (pMsgObj->id & (0x1 << 30)) {\n+           pMsgObj->id &= CCAN_MSG_ID_EXT_MASK;\n+       }\n+       else {\n+           pMsgObj->id >>= 18;\n+           pMsgObj->id &= CCAN_MSG_ID_STD_MASK;\n+       }\n+   }\n+}\n+\n+/* Data transfer between IF registers and Message RAM */\n+void Chip_CCAN_TransferMsgObject(LPC_CCAN_T *pCCAN,\n+                                CCAN_MSG_IF_T IFSel,\n+                                uint32_t mask,\n+                                uint32_t msgNum) {\n+   msgNum &= 0x3F;\n+   pCCAN->IF[IFSel].CMDMSK = mask;\n+   pCCAN->IF[IFSel].CMDREQ = msgNum;\n+   while (pCCAN->IF[IFSel].CMDREQ & CCAN_IF_CMDREQ_BUSY ) {}\n+}\n+\n+/* Enable/Disable the message object to valid */\n+void Chip_CCAN_SetValidMsg(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum, bool valid)\n+{\n+\n+   uint32_t temp;\n+   temp = pCCAN->IF[IFSel].ARB2;\n+   if (!valid) {\n+       pCCAN->IF[IFSel].ARB2 = (temp & (~CCAN_IF_ARB2_MSGVAL));\n+   }\n+   else {\n+       pCCAN->IF[IFSel].ARB2 = (temp | (CCAN_IF_ARB2_MSGVAL));\n+   }\n+\n+   Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_WR | CCAN_IF_CMDMSK_ARB, msgNum);\n+}\n+\n+/* Send a message */\n+void Chip_CCAN_Send(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, bool remoteFrame, CCAN_MSG_OBJ_T *pMsgObj)\n+{\n+   uint8_t msgNum = getFreeMsgObject(pCCAN);\n+   if (!msgNum) {\n+       return;\n+   }\n+   Chip_CCAN_SetMsgObject(pCCAN, IFSel, CCAN_TX_DIR, remoteFrame, msgNum, pMsgObj);\n+   while (Chip_CCAN_GetTxRQST(pCCAN) >> (msgNum - 1)) {    // blocking , wait for sending completed\n+   }\n+   if (!remoteFrame) {\n+       freeMsgObject(pCCAN, IFSel, msgNum);\n+   }\n+}\n+\n+/* Register a message ID for receiving */\n+void Chip_CCAN_AddReceiveID(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint32_t id)\n+{\n+   CCAN_MSG_OBJ_T temp;\n+   uint8_t msgNum = getFreeMsgObject(pCCAN);\n+   if (!msgNum) {\n+       return;\n+   }\n+   temp.id = id;\n+   Chip_CCAN_SetMsgObject(pCCAN, IFSel, CCAN_RX_DIR, false, msgNum, &temp);\n+}\n+\n+/* Remove a registered message ID from receiving */\n+void Chip_CCAN_DeleteReceiveID(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint32_t id)\n+{\n+   uint8_t i;\n+   CCAN_MSG_OBJ_T temp;\n+   for (i = 1; i <= CCAN_MSG_MAX_NUM; i++) {\n+       Chip_CCAN_GetMsgObject(pCCAN, IFSel, i, &temp);\n+       if (temp.id == id) {\n+           freeMsgObject(pCCAN, IFSel, i);\n+       }\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/chip_18xx_43xx.c ./lpc_chip_43xx/src/chip_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/chip_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/chip_18xx_43xx.c\t2017-02-27 20:42:08.472009492 -0300\n@@ -0,0 +1,117 @@\n+/*\n+ * @brief LPC18xx/LPC43xx chip driver source\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+/* USB PLL pre-initialized setup values for 480MHz output rate */\n+static const CGU_USBAUDIO_PLL_SETUP_T usbPLLSetup = {\n+   0x0000601D, /* Default control with main osc input, PLL disabled */\n+   0x06167FFA, /* M-divider value for 480MHz output from 12MHz input */\n+   0x00000000, /* N-divider value */\n+   0x00000000, /* Not applicable for USB PLL */\n+   480000000   /* PLL output frequency */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+/* System Clock Frequency (Core Clock) */\n+uint32_t SystemCoreClock;\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+static void Chip_USB_PllSetup(void)\n+{\n+   /* No need to setup anything if PLL is already setup for the frequency */\n+   if (Chip_Clock_GetClockInputHz(CLKIN_USBPLL) == usbPLLSetup.freq)\n+       return ;\n+\n+   /* Setup default USB PLL state for a 480MHz output and attach */\n+   Chip_Clock_SetupPLL(CLKIN_CRYSTAL, CGU_USB_PLL, &usbPLLSetup);\n+\n+   /* enable USB PLL */\n+   Chip_Clock_EnablePLL(CGU_USB_PLL);\n+\n+   /* Wait for PLL lock */\n+   while (!(Chip_Clock_GetPLLStatus(CGU_USB_PLL) & CGU_PLL_LOCKED)) {}\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+void Chip_USB0_Init(void)\n+{\n+   /* Set up USB PLL */\n+   Chip_USB_PllSetup();\n+\n+   /* Setup USB0 base clock as clock out from USB PLL */\n+   Chip_Clock_SetBaseClock( CLK_BASE_USB0, CLKIN_USBPLL, true, true);\n+\n+   /* enable USB main clock */\n+   Chip_Clock_EnableBaseClock(CLK_BASE_USB0);\n+   Chip_Clock_EnableOpts(CLK_MX_USB0, true, true, 1);\n+   /* enable USB0 phy */\n+   Chip_CREG_EnableUSB0Phy();\n+}\n+\n+void Chip_USB1_Init(void)\n+{\n+   /* Setup and enable the PLL */\n+   Chip_USB_PllSetup();\n+\n+   /* USB1 needs a 60MHz clock. To get it, a divider of 4 and then 2 are\n+      chained to make a divide by 8 function. Connect the output of\n+      divider D to the USB1 base clock. */\n+   Chip_Clock_SetDivider(CLK_IDIV_A, CLKIN_USBPLL, 4);\n+   Chip_Clock_SetDivider(CLK_IDIV_D, CLKIN_IDIVA, 2);\n+   Chip_Clock_SetBaseClock(CLK_BASE_USB1, CLKIN_IDIVD, true, true);\n+\n+   /* enable USB main clock */\n+   Chip_Clock_EnableBaseClock(CLK_BASE_USB1);\n+   Chip_Clock_EnableOpts(CLK_MX_USB1, true, true, 1);\n+   /* enable USB1_DP and USB1_DN on chip FS phy.*/\n+   LPC_SCU->SFSUSB = 0x12;\n+}\n+\n+\n+/* Update system core clock rate, should be called if the system has\n+   a clock rate change */\n+void SystemCoreClockUpdate(void)\n+{\n+   /* CPU core speed */\n+   SystemCoreClock = Chip_Clock_GetRate(CLK_MX_MXCORE);\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/clock_18xx_43xx.c ./lpc_chip_43xx/src/clock_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/clock_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/clock_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,823 @@\n+/*\n+ * @brief LPC18xx/43xx clock driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Maps a peripheral clock to it's base clock */\n+typedef struct {\n+   CHIP_CCU_CLK_T clkstart;\n+   CHIP_CCU_CLK_T clkend;\n+   CHIP_CGU_BASE_CLK_T clkbase;\n+} CLK_PERIPH_TO_BASE_T;\n+static const CLK_PERIPH_TO_BASE_T periph_to_base[] = {\n+   {CLK_APB3_BUS, CLK_APB3_CAN0, CLK_BASE_APB3},\n+   {CLK_APB1_BUS, CLK_APB1_CAN1, CLK_BASE_APB1},\n+   {CLK_SPIFI, CLK_SPIFI, CLK_BASE_SPIFI},\n+   {CLK_MX_BUS, CLK_MX_QEI, CLK_BASE_MX},\n+#if defined(CHIP_LPC43XX)\n+   {CLK_PERIPH_BUS, CLK_PERIPH_SGPIO, CLK_BASE_PERIPH},\n+#endif\n+   {CLK_USB0, CLK_USB0, CLK_BASE_USB0},\n+   {CLK_USB1, CLK_USB1, CLK_BASE_USB1},\n+#if defined(CHIP_LPC43XX)\n+   {CLK_SPI, CLK_SPI, CLK_BASE_SPI},\n+   {CLK_ADCHS, CLK_ADCHS, CLK_BASE_ADCHS},\n+#endif\n+   {CLK_APLL, CLK_APLL, CLK_BASE_APLL},\n+   {CLK_APB2_UART3, CLK_APB2_UART3, CLK_BASE_UART3},\n+   {CLK_APB2_UART2, CLK_APB2_UART2, CLK_BASE_UART2},\n+   {CLK_APB0_UART1, CLK_APB0_UART1, CLK_BASE_UART1},\n+   {CLK_APB0_UART0, CLK_APB0_UART0, CLK_BASE_UART0},\n+   {CLK_APB2_SSP1, CLK_APB2_SSP1, CLK_BASE_SSP1},\n+   {CLK_APB0_SSP0, CLK_APB0_SSP0, CLK_BASE_SSP0},\n+   {CLK_APB2_SDIO, CLK_APB2_SDIO, CLK_BASE_SDIO},\n+   {CLK_CCU2_LAST, CLK_CCU2_LAST, CLK_BASE_NONE}\n+};\n+\n+#define CRYSTAL_32K_FREQ_IN    (32 * 1024)\n+\n+/* Variables to use audio and usb pll frequency */\n+static uint32_t audio_usb_pll_freq[CGU_AUDIO_PLL+1];\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+__STATIC_INLINE uint32_t ABS(int val)\n+{\n+   if (val < 0)\n+       return -val;\n+   return val;\n+}\n+\n+static void pll_calc_divs(uint32_t freq, PLL_PARAM_T *ppll)\n+{\n+\n+   uint32_t prev = freq;\n+   int n, m, p;\n+\n+   /* When direct mode is set FBSEL should be a don't care */\n+   if (ppll->ctrl & (1 << 7)) {\n+       ppll->ctrl &= ~(1 << 6);\n+   }\n+   for (n = 1; n <= 4; n++) {\n+       for (p = 0; p < 4; p ++) {\n+           for (m = 1; m <= 256; m++) {\n+               uint32_t fcco, fout;\n+               if (ppll->ctrl & (1 << 6)) {\n+                   fcco = ((m << (p + 1)) * ppll->fin) / n;\n+               } else {\n+                   fcco = (m * ppll->fin) / n;\n+               }\n+               if (fcco < PLL_MIN_CCO_FREQ) continue;\n+               if (fcco > PLL_MAX_CCO_FREQ) break;\n+               if (ppll->ctrl & (1 << 7)) {\n+                   fout = fcco;\n+               } else {\n+                   fout = fcco >> (p + 1);\n+               }\n+\n+               if (ABS(freq - fout) < prev) {\n+                   ppll->nsel = n;\n+                   ppll->psel = p + 1;\n+                   ppll->msel = m;\n+                   ppll->fout = fout;\n+                   ppll->fcco = fcco;\n+                   prev = ABS(freq - fout);\n+               }\n+           }\n+       }\n+   }\n+}\n+\n+static void pll_get_frac(uint32_t freq, PLL_PARAM_T *ppll)\n+{\n+   int diff[3];\n+   PLL_PARAM_T pll[3] = {{0},{0},{0}};\n+\n+   /* Try direct mode */\n+   pll[0].ctrl |= (1 << 7);\n+   pll[0].fin = ppll->fin;\n+   pll[0].srcin = ppll->srcin;\n+   pll_calc_divs(freq, &pll[0]);\n+   if (pll[0].fout == freq) {\n+       *ppll = pll[0];\n+       return ;\n+   }\n+   diff[0] = ABS(freq - pll[0].fout);\n+\n+   /* Try non-Integer mode */\n+   pll[2].ctrl = (1 << 6);\n+   pll[2].fin = ppll->fin;\n+   pll[2].srcin = ppll->srcin;\n+   pll_calc_divs(freq, &pll[2]);\n+   if (pll[2].fout == freq) {\n+       *ppll = pll[2];\n+       return ;\n+   }\n+\n+   diff[2] = ABS(freq - pll[2].fout);\n+   /* Try integer mode */\n+   pll[1].ctrl = (1 << 6);\n+   pll[1].fin = ppll->fin;\n+   pll[1].srcin = ppll->srcin;\n+   pll_calc_divs(freq, &pll[1]);\n+   if (pll[1].fout == freq) {\n+       *ppll = pll[1];\n+       return ;\n+   }\n+   diff[1] = ABS(freq - pll[1].fout);\n+\n+   /* Find the min of 3 and return */\n+   if (diff[0] <= diff[1]) {\n+       if (diff[0] <= diff[2]) {\n+           *ppll = pll[0];\n+       } else {\n+           *ppll = pll[2];\n+       }\n+   } else {\n+       if (diff[1] <= diff[2]) {\n+           *ppll = pll[1];\n+       } else {\n+           *ppll = pll[2];\n+       }\n+   }\n+}\n+\n+/* Test PLL input values for a specific frequency range */\n+static uint32_t Chip_Clock_TestMainPLLMultiplier(uint32_t InputHz, uint32_t TestMult, uint32_t MinHz, uint32_t MaxHz)\n+{\n+   uint32_t TestHz = TestMult * InputHz;\n+\n+   if ((TestHz < MinHz) || (TestHz > MAX_CLOCK_FREQ) || (TestHz > MaxHz)) {\n+       TestHz = 0;\n+   }\n+\n+   return TestHz;\n+}\n+\n+/* Returns clock rate out of a divider */\n+static uint32_t Chip_Clock_GetDivRate(CHIP_CGU_CLKIN_T clock, CHIP_CGU_IDIV_T divider)\n+{\n+   CHIP_CGU_CLKIN_T input;\n+   uint32_t div;\n+\n+   input = Chip_Clock_GetDividerSource(divider);\n+   div = Chip_Clock_GetDividerDivisor(divider);\n+   return Chip_Clock_GetClockInputHz(input) / (div + 1);\n+}\n+\n+/* Finds the base clock for the peripheral clock */\n+static CHIP_CGU_BASE_CLK_T Chip_Clock_FindBaseClock(CHIP_CCU_CLK_T clk)\n+{\n+   CHIP_CGU_BASE_CLK_T baseclk = CLK_BASE_NONE;\n+   int i = 0;\n+\n+   while ((baseclk == CLK_BASE_NONE) && (periph_to_base[i].clkbase != baseclk)) {\n+       if ((clk >= periph_to_base[i].clkstart) && (clk <= periph_to_base[i].clkend)) {\n+           baseclk = periph_to_base[i].clkbase;\n+       }\n+       else {\n+           i++;\n+       }\n+   }\n+\n+   return baseclk;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Enables the crystal oscillator */\n+void Chip_Clock_EnableCrystal(void)\n+{\n+   volatile uint32_t delay = 1000;\n+\n+   uint32_t OldCrystalConfig = LPC_CGU->XTAL_OSC_CTRL;\n+\n+   /* Clear bypass mode */\n+   OldCrystalConfig &= (~2);\n+   if (OldCrystalConfig != LPC_CGU->XTAL_OSC_CTRL) {\n+       LPC_CGU->XTAL_OSC_CTRL = OldCrystalConfig;\n+   }\n+\n+   /* Enable crystal oscillator */\n+   OldCrystalConfig &= (~1);\n+   if (OscRateIn >= 20000000) {\n+       OldCrystalConfig |= 4;  /* Set high frequency mode */\n+\n+   }\n+   LPC_CGU->XTAL_OSC_CTRL = OldCrystalConfig;\n+\n+   /* Delay for 250uSec */\n+   while(delay--) {}\n+}\n+\n+/* Calculate the Main PLL div values */\n+int Chip_Clock_CalcMainPLLValue(uint32_t freq, PLL_PARAM_T *ppll)\n+{\n+   ppll->fin = Chip_Clock_GetClockInputHz(ppll->srcin);\n+\n+   /* Do sanity check on frequency */\n+   if (freq > MAX_CLOCK_FREQ || freq < (PLL_MIN_CCO_FREQ / 16) || !ppll->fin) {\n+       return -1;\n+   }\n+\n+   ppll->ctrl = 1 << 7; /* Enable direct mode [If possible] */\n+   ppll->nsel = 0;\n+   ppll->psel = 0;\n+   ppll->msel = freq / ppll->fin;\n+\n+   if (freq < PLL_MIN_CCO_FREQ || ppll->msel * ppll->fin != freq) {\n+       pll_get_frac(freq, ppll);\n+       if (!ppll->nsel) {\n+           return -1;\n+       }\n+       ppll->nsel --;\n+   }\n+\n+   if (ppll->msel == 0) {\n+       return - 1;\n+   }\n+\n+   if (ppll->psel) {\n+       ppll->psel --;\n+   }\n+\n+   ppll->msel --;\n+\n+   return 0;\n+}\n+\n+/* Disables the crystal oscillator */\n+void Chip_Clock_DisableCrystal(void)\n+{\n+   /* Disable crystal oscillator */\n+   LPC_CGU->XTAL_OSC_CTRL |= 1;\n+}\n+\n+/* Configures the main PLL */\n+uint32_t Chip_Clock_SetupMainPLLHz(CHIP_CGU_CLKIN_T Input, uint32_t MinHz, uint32_t DesiredHz, uint32_t MaxHz)\n+{\n+   uint32_t freqin = Chip_Clock_GetClockInputHz(Input);\n+   uint32_t Mult, LastMult, MultEnd;\n+   uint32_t freqout, freqout2;\n+\n+   if (DesiredHz != 0xFFFFFFFF) {\n+       /* Test DesiredHz rounded down */\n+       Mult = DesiredHz / freqin;\n+       freqout = Chip_Clock_TestMainPLLMultiplier(freqin, Mult, MinHz, MaxHz);\n+\n+       /* Test DesiredHz rounded up */\n+       Mult++;\n+       freqout2 = Chip_Clock_TestMainPLLMultiplier(freqin, Mult, MinHz, MaxHz);\n+\n+       if (freqout && !freqout2) { /* rounding up is no good? set first multiplier */\n+           Mult--;\n+           return Chip_Clock_SetupMainPLLMult(Input, Mult);\n+       }\n+       if (!freqout && freqout2) { /* didn't work until rounded up? set 2nd multiplier */\n+           return Chip_Clock_SetupMainPLLMult(Input, Mult);\n+       }\n+\n+       if (freqout && freqout2) {  /* either multiplier okay? choose closer one */\n+           if ((DesiredHz - freqout) > (freqout2 - DesiredHz)) {\n+               Mult--;\n+               return Chip_Clock_SetupMainPLLMult(Input, Mult);\n+           }\n+           else {\n+               return Chip_Clock_SetupMainPLLMult(Input, Mult);\n+           }\n+       }\n+   }\n+\n+   /* Neither multiplier okay? Try to start at MinHz and increment.\n+      This should find the highest multiplier that is still good */\n+   Mult = MinHz / freqin;\n+   MultEnd = MaxHz / freqin;\n+   LastMult = 0;\n+   while (1) {\n+       freqout = Chip_Clock_TestMainPLLMultiplier(freqin, Mult, MinHz, MaxHz);\n+\n+       if (freqout) {\n+           LastMult = Mult;\n+       }\n+\n+       if (Mult >= MultEnd) {\n+           break;\n+       }\n+       Mult++;\n+   }\n+\n+   if (LastMult) {\n+       return Chip_Clock_SetupMainPLLMult(Input, LastMult);\n+   }\n+\n+   return 0;\n+}\n+\n+/* Directly set the PLL multipler */\n+uint32_t Chip_Clock_SetupMainPLLMult(CHIP_CGU_CLKIN_T Input, uint32_t mult)\n+{\n+   volatile uint32_t delay = 250;\n+   uint32_t freq = Chip_Clock_GetClockInputHz(Input);\n+   uint32_t msel = 0, nsel = 0, psel = 0, pval = 1;\n+   uint32_t PLLReg = LPC_CGU->PLL1_CTRL;\n+\n+   freq *= mult;\n+   msel = mult - 1;\n+\n+   PLLReg &= ~(0x1F << 24);/* clear input source bits */\n+   PLLReg |= Input << 24;  /* set input source bits to parameter */\n+\n+   /* Clear other PLL input bits */\n+   PLLReg &= ~((1 << 6) |  /* FBSEL */\n+               (1 << 1) |  /* BYPASS */\n+               (1 << 7) |  /* DIRECT */\n+               (0x03 << 8) | (0xFF << 16) | (0x03 << 12)); /* PSEL, MSEL, NSEL- divider ratios */\n+\n+   if (freq < 156000000) {\n+       /* psel is encoded such that 0=1, 1=2, 2=4, 3=8 */\n+       while ((2 * (pval) * freq) < 156000000) {\n+           psel++;\n+           pval *= 2;\n+       }\n+\n+       PLLReg |= (msel << 16) | (nsel << 12) | (psel << 8) | (1 << 6); /* dividers + FBSEL */\n+   }\n+   else if (freq < 320000000) {\n+       PLLReg |= (msel << 16) | (nsel << 12) | (psel << 8) | (1 << 7) | (1 << 6);  /* dividers + DIRECT + FBSEL */\n+   }\n+   else {\n+       Chip_Clock_DisableMainPLL();\n+       return 0;\n+   }\n+   LPC_CGU->PLL1_CTRL = PLLReg & ~(1 << 0);\n+\n+   /* Wait for 50uSec */\n+   while(delay--) {}\n+\n+   return freq;\n+}\n+\n+/* Returns the frequency of the main PLL */\n+uint32_t Chip_Clock_GetMainPLLHz(void)\n+{\n+   uint32_t PLLReg = LPC_CGU->PLL1_CTRL;\n+   uint32_t freq = Chip_Clock_GetClockInputHz((CHIP_CGU_CLKIN_T) ((PLLReg >> 24) & 0xF));\n+   uint32_t msel, nsel, psel, direct, fbsel;\n+   uint32_t m, n, p;\n+   const uint8_t ptab[] = {1, 2, 4, 8};\n+\n+   /* No lock? */\n+   if (!(LPC_CGU->PLL1_STAT & 1)) {\n+       return 0;\n+   }\n+\n+   msel = (PLLReg >> 16) & 0xFF;\n+   nsel = (PLLReg >> 12) & 0x3;\n+   psel = (PLLReg >> 8) & 0x3;\n+   direct = (PLLReg >> 7) & 0x1;\n+   fbsel = (PLLReg >> 6) & 0x1;\n+\n+   m = msel + 1;\n+   n = nsel + 1;\n+   p = ptab[psel];\n+\n+   if (direct || fbsel) {\n+       return m * (freq / n);\n+   }\n+\n+   return (m / (2 * p)) * (freq / n);\n+}\n+\n+/* Sets up a CGU clock divider and it's input clock */\n+void Chip_Clock_SetDivider(CHIP_CGU_IDIV_T Divider, CHIP_CGU_CLKIN_T Input, uint32_t Divisor)\n+{\n+   uint32_t reg = LPC_CGU->IDIV_CTRL[Divider];\n+\n+   Divisor--;\n+\n+   if (Input != CLKINPUT_PD) {\n+       /* Mask off bits that need to changes */\n+       reg &= ~((0x1F << 24) | 1 | (CHIP_CGU_IDIV_MASK(Divider) << 2));\n+\n+       /* Enable autoblocking, clear PD, and set clock source & divisor */\n+       LPC_CGU->IDIV_CTRL[Divider] = reg | (1 << 11) | (Input << 24) | (Divisor << 2);\n+   }\n+   else {\n+       LPC_CGU->IDIV_CTRL[Divider] = reg | 1;  /* Power down this divider */\n+   }\n+}\n+\n+/* Gets a CGU clock divider source */\n+CHIP_CGU_CLKIN_T Chip_Clock_GetDividerSource(CHIP_CGU_IDIV_T Divider)\n+{\n+   uint32_t reg = LPC_CGU->IDIV_CTRL[Divider];\n+\n+   if (reg & 1) {  /* divider is powered down */\n+       return CLKINPUT_PD;\n+   }\n+\n+   return (CHIP_CGU_CLKIN_T) ((reg >> 24) & 0x1F);\n+}\n+\n+/* Gets a CGU clock divider divisor */\n+uint32_t Chip_Clock_GetDividerDivisor(CHIP_CGU_IDIV_T Divider)\n+{\n+   return (CHIP_CGU_CLKIN_T) ((LPC_CGU->IDIV_CTRL[Divider] >> 2) & CHIP_CGU_IDIV_MASK(Divider));\n+}\n+\n+/* Returns the frequency of the specified input clock source */\n+uint32_t Chip_Clock_GetClockInputHz(CHIP_CGU_CLKIN_T input)\n+{\n+   uint32_t rate = 0;\n+\n+   switch (input) {\n+   case CLKIN_32K:\n+       rate = CRYSTAL_32K_FREQ_IN;\n+       break;\n+\n+   case CLKIN_IRC:\n+       rate = CGU_IRC_FREQ;\n+       break;\n+\n+   case CLKIN_ENET_RX:\n+       if ((LPC_CREG->CREG6 & 0x07) != 0x4) {\n+           /* MII mode requires 25MHz clock */\n+           rate = 25000000;\n+       }\n+       break;\n+\n+   case CLKIN_ENET_TX:\n+       if ((LPC_CREG->CREG6 & 0x07) != 0x4) {\n+           rate = 25000000; /* MII uses 25 MHz */\n+       } else {\n+           rate = 50000000; /* RMII uses 50 MHz */\n+       }\n+       break;\n+\n+   case CLKIN_CLKIN:\n+       rate = ExtRateIn;\n+       break;\n+\n+   case CLKIN_CRYSTAL:\n+       rate = OscRateIn;\n+       break;\n+\n+   case CLKIN_USBPLL:\n+       rate = audio_usb_pll_freq[CGU_USB_PLL];\n+       break;\n+\n+   case CLKIN_AUDIOPLL:\n+       rate = audio_usb_pll_freq[CGU_AUDIO_PLL];\n+       break;\n+\n+   case CLKIN_MAINPLL:\n+       rate = Chip_Clock_GetMainPLLHz();\n+       break;\n+\n+   case CLKIN_IDIVA:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_A);\n+       break;\n+\n+   case CLKIN_IDIVB:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_B);\n+       break;\n+\n+   case CLKIN_IDIVC:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_C);\n+       break;\n+\n+   case CLKIN_IDIVD:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_D);\n+       break;\n+\n+   case CLKIN_IDIVE:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_E);\n+       break;\n+\n+   case CLKINPUT_PD:\n+       rate = 0;\n+       break;\n+\n+   default:\n+       break;\n+   }\n+\n+   return rate;\n+}\n+\n+/* Returns the frequency of the specified base clock source */\n+uint32_t Chip_Clock_GetBaseClocktHz(CHIP_CGU_BASE_CLK_T clock)\n+{\n+   return Chip_Clock_GetClockInputHz(Chip_Clock_GetBaseClock(clock));\n+}\n+\n+/* Sets a CGU Base Clock clock source */\n+void Chip_Clock_SetBaseClock(CHIP_CGU_BASE_CLK_T BaseClock, CHIP_CGU_CLKIN_T Input, bool autoblocken, bool powerdn)\n+{\n+   uint32_t reg = LPC_CGU->BASE_CLK[BaseClock];\n+\n+   if (BaseClock < CLK_BASE_NONE) {\n+       if (Input != CLKINPUT_PD) {\n+           /* Mask off fields we plan to update */\n+           reg &= ~((0x1F << 24) | 1 | (1 << 11));\n+\n+           if (autoblocken) {\n+               reg |= (1 << 11);\n+           }\n+           if (powerdn) {\n+               reg |= (1 << 0);\n+           }\n+\n+           /* Set clock source */\n+           reg |= (Input << 24);\n+\n+           LPC_CGU->BASE_CLK[BaseClock] = reg;\n+       }\n+   }\n+   else {\n+       LPC_CGU->BASE_CLK[BaseClock] = reg | 1; /* Power down this base clock */\n+   }\n+}\n+\n+/* Reads CGU Base Clock clock source information */\n+void Chip_Clock_GetBaseClockOpts(CHIP_CGU_BASE_CLK_T BaseClock, CHIP_CGU_CLKIN_T *Input, bool *autoblocken,\n+                                bool *powerdn)\n+{\n+   uint32_t reg = LPC_CGU->BASE_CLK[BaseClock];\n+   CHIP_CGU_CLKIN_T ClkIn = (CHIP_CGU_CLKIN_T) ((reg  >> 24) & 0x1F );\n+\n+   if (BaseClock < CLK_BASE_NONE) {\n+       /* Get settings */\n+       *Input = ClkIn;\n+       *autoblocken = (reg & (1 << 11)) ? true : false;\n+       *powerdn = (reg & (1 << 0)) ? true : false;\n+   }\n+   else {\n+       *Input = CLKINPUT_PD;\n+       *powerdn = true;\n+       *autoblocken = true;\n+   }\n+}\n+\n+/*Enables a base clock source */\n+void Chip_Clock_EnableBaseClock(CHIP_CGU_BASE_CLK_T BaseClock)\n+{\n+   if (BaseClock < CLK_BASE_NONE) {\n+       LPC_CGU->BASE_CLK[BaseClock] &= ~1;\n+   }\n+}\n+\n+/* Disables a base clock source */\n+void Chip_Clock_DisableBaseClock(CHIP_CGU_BASE_CLK_T BaseClock)\n+{\n+   if (BaseClock < CLK_BASE_NONE) {\n+       LPC_CGU->BASE_CLK[BaseClock] |= 1;\n+   }\n+}\n+\n+/* Returns base clock enable state */\n+bool Chip_Clock_IsBaseClockEnabled(CHIP_CGU_BASE_CLK_T BaseClock)\n+{\n+   bool enabled;\n+\n+   if (BaseClock < CLK_BASE_NONE) {\n+       enabled = (bool) ((LPC_CGU->BASE_CLK[BaseClock] & 1) == 0);\n+   }\n+   else {\n+       enabled = false;\n+   }\n+\n+   return enabled;\n+}\n+\n+/* Gets a CGU Base Clock clock source */\n+CHIP_CGU_CLKIN_T Chip_Clock_GetBaseClock(CHIP_CGU_BASE_CLK_T BaseClock)\n+{\n+   uint32_t reg;\n+\n+   if (BaseClock >= CLK_BASE_NONE) {\n+       return CLKINPUT_PD;\n+   }\n+\n+   reg = LPC_CGU->BASE_CLK[BaseClock];\n+\n+   /* base clock is powered down? */\n+   if (reg & 1) {\n+       return CLKINPUT_PD;\n+   }\n+\n+   return (CHIP_CGU_CLKIN_T) ((reg >> 24) & 0x1F);\n+}\n+\n+/* Enables a peripheral clock and sets clock states */\n+void Chip_Clock_EnableOpts(CHIP_CCU_CLK_T clk, bool autoen, bool wakeupen, int div)\n+{\n+   uint32_t reg = 1;\n+\n+   if (autoen) {\n+       reg |= (1 << 1);\n+   }\n+   if (wakeupen) {\n+       reg |= (1 << 2);\n+   }\n+\n+   /* Not all clocks support a divider, but we won't check that here. Only\n+      dividers of 1 and 2 are allowed. Assume 1 if not 2 */\n+   if (div == 2) {\n+       reg |= (1 << 5);\n+   }\n+\n+   /* Setup peripheral clock and start running */\n+   if (clk >= CLK_CCU2_START) {\n+       LPC_CCU2->CLKCCU[clk - CLK_CCU2_START].CFG = reg;\n+   }\n+   else {\n+       LPC_CCU1->CLKCCU[clk].CFG = reg;\n+   }\n+}\n+\n+/* Enables a peripheral clock */\n+void Chip_Clock_Enable(CHIP_CCU_CLK_T clk)\n+{\n+   /* Start peripheral clock running */\n+   if (clk >= CLK_CCU2_START) {\n+       LPC_CCU2->CLKCCU[clk - CLK_CCU2_START].CFG |= 1;\n+   }\n+   else {\n+       LPC_CCU1->CLKCCU[clk].CFG |= 1;\n+   }\n+}\n+\n+/* Enable RTC Clock */\n+void Chip_Clock_RTCEnable(void)\n+{\n+   LPC_CREG->CREG0 &= ~((1 << 3) | (1 << 2));  /* Reset 32Khz oscillator */\n+   LPC_CREG->CREG0 |= (1 << 1) | (1 << 0); /* Enable 32 kHz & 1 kHz on osc32k and release reset */\n+}\n+\n+/* Disables a peripheral clock */\n+void Chip_Clock_Disable(CHIP_CCU_CLK_T clk)\n+{\n+   /* Stop peripheral clock */\n+   if (clk >= CLK_CCU2_START) {\n+       LPC_CCU2->CLKCCU[clk - CLK_CCU2_START].CFG &= ~1;\n+   }\n+   else {\n+       LPC_CCU1->CLKCCU[clk].CFG &= ~1;\n+   }\n+}\n+\n+/**\n+ * Disable all branch output clocks with wake up mechanism enabled.\n+ * Only the clocks with wake up mechanism enabled will be disabled &\n+ * power down sequence started\n+ */\n+void Chip_Clock_StartPowerDown(void)\n+{\n+   /* Set Power Down bit */\n+   LPC_CCU1->PM = 1;\n+   LPC_CCU2->PM = 1;\n+}\n+\n+/**\n+ * Enable all branch output clocks after the wake up event.\n+ * Only the clocks with wake up mechanism enabled will be enabled\n+ */\n+void Chip_Clock_ClearPowerDown(void)\n+{\n+   /* Clear Power Down bit */\n+   LPC_CCU1->PM = 0;\n+   LPC_CCU2->PM = 0;\n+}\n+\n+/* Returns a peripheral clock rate */\n+uint32_t Chip_Clock_GetRate(CHIP_CCU_CLK_T clk)\n+{\n+   CHIP_CGU_BASE_CLK_T baseclk;\n+   uint32_t reg, div, rate;\n+\n+   /* Get CCU config register for clock */\n+   if (clk >= CLK_CCU2_START) {\n+       reg = LPC_CCU2->CLKCCU[clk - CLK_CCU2_START].CFG;\n+   }\n+   else {\n+       reg = LPC_CCU1->CLKCCU[clk].CFG;\n+   }\n+\n+   /* Is the clock enabled? */\n+   if (reg & 1) {\n+       /* Get base clock for this peripheral clock */\n+       baseclk = Chip_Clock_FindBaseClock(clk);\n+\n+       /* Get base clock rate */\n+       rate = Chip_Clock_GetBaseClocktHz(baseclk);\n+\n+       /* Get divider for this clock */\n+       if (((reg >> 5) & 0x7) == 0) {\n+           div = 1;\n+       }\n+       else {\n+           div = 2;/* No other dividers supported */\n+\n+       }\n+       rate = rate / div;\n+   }\n+   else {\n+       rate = 0;\n+   }\n+\n+   return rate;\n+}\n+\n+/* Get EMC Clock Rate */\n+uint32_t Chip_Clock_GetEMCRate(void)\n+\n+{\n+   uint32_t ClkFreq;\n+   uint32_t EMCDiv;\n+   ClkFreq = Chip_Clock_GetRate(CLK_MX_EMC);\n+\n+   /* EMC Divider readback at pos 27\n+       TODO: just checked but dont mention in UM */\n+   EMCDiv = (LPC_CCU1->CLKCCU[CLK_MX_EMC_DIV].CFG >> 27) & 0x07;\n+\n+   /* Check EMC Divider to get real EMC clock out */\n+   if ((EMCDiv == 1) && (LPC_CREG->CREG6 & (1 << 16))) {\n+       ClkFreq >>= 1;\n+   }\n+   return ClkFreq;\n+}\n+\n+/* Sets up the audio or USB PLL */\n+void Chip_Clock_SetupPLL(CHIP_CGU_CLKIN_T Input, CHIP_CGU_USB_AUDIO_PLL_T pllnum,\n+                        const CGU_USBAUDIO_PLL_SETUP_T *pPLLSetup)\n+{\n+   uint32_t reg = pPLLSetup->ctrl | (Input << 24);\n+\n+   /* Setup from passed values */\n+   LPC_CGU->PLL[pllnum].PLL_CTRL = reg;\n+   LPC_CGU->PLL[pllnum].PLL_MDIV = pPLLSetup->mdiv;\n+   LPC_CGU->PLL[pllnum].PLL_NP_DIV = pPLLSetup->ndiv;\n+\n+   /* Fractional divider is for audio PLL only */\n+   if (pllnum == CGU_AUDIO_PLL) {\n+       LPC_CGU->PLL0AUDIO_FRAC = pPLLSetup->fract;\n+   }\n+   audio_usb_pll_freq[pllnum] = pPLLSetup->freq;\n+}\n+\n+/* Enables the audio or USB PLL */\n+void Chip_Clock_EnablePLL(CHIP_CGU_USB_AUDIO_PLL_T pllnum)\n+{\n+   LPC_CGU->PLL[pllnum].PLL_CTRL &= ~1;\n+}\n+\n+/* Disables the audio or USB PLL */\n+void Chip_Clock_DisablePLL(CHIP_CGU_USB_AUDIO_PLL_T pllnum)\n+{\n+   LPC_CGU->PLL[pllnum].PLL_CTRL |= 1;\n+}\n+\n+/* Returns the PLL status */\n+uint32_t Chip_Clock_GetPLLStatus(CHIP_CGU_USB_AUDIO_PLL_T pllnum)\n+{\n+   return LPC_CGU->PLL[pllnum].PLL_STAT;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/dac_18xx_43xx.c ./lpc_chip_43xx/src/dac_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/dac_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/dac_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,85 @@\n+/*\n+ * @brief LPC18xx/43xx D/A conversion driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the DAC peripheral */\n+void Chip_DAC_Init(LPC_DAC_T *pDAC)\n+{\n+   Chip_Clock_EnableOpts(CLK_APB3_DAC, true, true, 1);\n+\n+   /* Set maximum update rate 1MHz */\n+   Chip_DAC_SetBias(pDAC, DAC_MAX_UPDATE_RATE_1MHz);\n+}\n+\n+/* Shutdown DAC peripheral */\n+void Chip_DAC_DeInit(LPC_DAC_T *pDAC)\n+{\n+   Chip_Clock_Disable(CLK_APB3_DAC);\n+}\n+\n+/* Update value to DAC buffer*/\n+void Chip_DAC_UpdateValue(LPC_DAC_T *pDAC, uint32_t dac_value)\n+{\n+   uint32_t tmp;\n+\n+   tmp = pDAC->CR & DAC_BIAS_EN;\n+   tmp |= DAC_VALUE(dac_value);\n+   /* Update value */\n+   pDAC->CR = tmp;\n+}\n+\n+/* Set Maximum update rate for DAC */\n+void Chip_DAC_SetBias(LPC_DAC_T *pDAC, uint32_t bias)\n+{\n+   pDAC->CR &= ~DAC_BIAS_EN;\n+\n+   if (bias  == DAC_MAX_UPDATE_RATE_400kHz) {\n+       pDAC->CR |= DAC_BIAS_EN;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/eeprom_18xx_43xx.c ./lpc_chip_43xx/src/eeprom_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/eeprom_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/eeprom_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,100 @@\n+/*\n+ * @brief LPC18xx/43xx EEPROM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Setup EEPROM clock */\n+STATIC void setClkDiv(LPC_EEPROM_T *pEEPROM)\n+{\n+   uint32_t clk;\n+\n+   /* Setup EEPROM timing to 375KHz based on PCLK rate */\n+   clk = Chip_Clock_GetRate(CLK_MX_EEPROM);\n+\n+   /* Set EEPROM clock divide value*/\n+   pEEPROM->CLKDIV = clk / EEPROM_CLOCK_DIV - 1;\n+}\n+\n+/* Setup EEPROM clock */\n+STATIC INLINE void setWaitState(LPC_EEPROM_T *pEEPROM)\n+{\n+   /* Setup EEPROM wait states*/\n+   Chip_EEPROM_SetReadWaitState(pEEPROM, EEPROM_READ_WAIT_STATE_VAL);\n+   Chip_EEPROM_SetWaitState(pEEPROM, EEPROM_WAIT_STATE_VAL);\n+\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the EEPROM peripheral with specified parameter */\n+void Chip_EEPROM_Init(LPC_EEPROM_T *pEEPROM)\n+{\n+   /* Disable EEPROM power down mode */\n+   Chip_EEPROM_DisablePowerDown(pEEPROM);\n+   setClkDiv(pEEPROM);\n+   setWaitState(pEEPROM);\n+}\n+\n+/* Write data from page register to non-volatile memory */\n+void Chip_EEPROM_EraseProgramPage(LPC_EEPROM_T *pEEPROM)\n+{\n+   Chip_EEPROM_ClearIntStatus(pEEPROM, EEPROM_CMD_ERASE_PRG_PAGE);\n+   Chip_EEPROM_SetCmd(pEEPROM, EEPROM_CMD_ERASE_PRG_PAGE);\n+   Chip_EEPROM_WaitForIntStatus(pEEPROM, EEPROM_INT_ENDOFPROG);\n+}\n+\n+/* Wait for interrupt */\n+void Chip_EEPROM_WaitForIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   uint32_t status;\n+   while (1) {\n+       status = Chip_EEPROM_GetIntStatus(pEEPROM);\n+       if ((status & mask) == mask) {\n+           break;\n+       }\n+   }\n+   Chip_EEPROM_ClearIntStatus(pEEPROM, mask);\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/emc_18xx_43xx.c ./lpc_chip_43xx/src/emc_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/emc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/emc_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,289 @@\n+/*\n+ * @brief LPC18xx/43xx EMC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* DIV function with result rounded up */\n+#define EMC_DIV_ROUND_UP(x, y)  ((x + y - 1) / y)\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+#ifndef EMC_SUPPORT_ONLY_PL172\n+/* Get ARM External Memory Controller Version */\n+STATIC uint32_t getARMPeripheralID(void)\n+{\n+   uint32_t *RegAdd;\n+   RegAdd = (uint32_t *) ((uint32_t) LPC_EMC + 0xFE0);\n+   return (RegAdd[0] & 0xFF) | ((RegAdd[1] & 0xFF) << 8) |\n+          ((RegAdd[2] & 0xFF) << 16) | (RegAdd[3] << 24);\n+}\n+\n+#endif\n+\n+/* Calculate Clock Count from Timing Unit(nanoseconds) */\n+STATIC uint32_t convertTimmingParam(uint32_t EMC_Clock, int32_t input_ns, uint32_t adjust)\n+{\n+   uint32_t temp;\n+   if (input_ns < 0) {\n+       return (-input_ns) >> 8;\n+   }\n+   temp = EMC_Clock / 1000000;     /* MHz calculation */\n+   temp = temp * input_ns / 1000;\n+\n+   /* round up */\n+   temp += 0xFF;\n+\n+   /* convert to simple integer number format */\n+   temp >>= 8;\n+   if (temp > adjust) {\n+       return temp - adjust;\n+   }\n+\n+   return 0;\n+}\n+\n+/* Get Dynamic Memory Device Colum len */\n+STATIC uint32_t getColsLen(uint32_t DynConfig)\n+{\n+   uint32_t DevBusWidth;\n+   DevBusWidth = (DynConfig >> EMC_DYN_CONFIG_DEV_BUS_BIT) & 0x03;\n+   if (DevBusWidth == 2) {\n+       return 8;\n+   }\n+   else if (DevBusWidth == 1) {\n+       return ((DynConfig >> (EMC_DYN_CONFIG_DEV_SIZE_BIT + 1)) & 0x03) + 8;\n+   }\n+   else if (DevBusWidth == 0) {\n+       return ((DynConfig >> (EMC_DYN_CONFIG_DEV_SIZE_BIT + 1)) & 0x03) + 9;\n+   }\n+\n+   return 0;\n+}\n+\n+/* Initializes the Dynamic Controller according to the specified parameters\n+   in the IP_EMC_DYN_CONFIG_T */\n+void initDynMem(LPC_EMC_T *pEMC, IP_EMC_DYN_CONFIG_T *Dynamic_Config, uint32_t EMC_Clock)\n+{\n+   uint32_t ChipSelect, tmpclk;\n+   volatile int i;\n+\n+   for (ChipSelect = 0; ChipSelect < 4; ChipSelect++) {\n+       LPC_EMC_T *EMC_Reg_add = (LPC_EMC_T *) ((uint32_t) pEMC + (ChipSelect << 5));\n+\n+       EMC_Reg_add->DYNAMICRASCAS0    = Dynamic_Config->DevConfig[ChipSelect].RAS |\n+                                        ((Dynamic_Config->DevConfig[ChipSelect].ModeRegister <<\n+                                          (8 - EMC_DYN_MODE_CAS_BIT)) & 0xF00);\n+       EMC_Reg_add->DYNAMICCONFIG0    = Dynamic_Config->DevConfig[ChipSelect].DynConfig;\n+   }\n+   pEMC->DYNAMICREADCONFIG = Dynamic_Config->ReadConfig;   /* Read strategy */\n+\n+   pEMC->DYNAMICRP         = convertTimmingParam(EMC_Clock, Dynamic_Config->tRP, 1);\n+   pEMC->DYNAMICRAS        = convertTimmingParam(EMC_Clock, Dynamic_Config->tRAS, 1);\n+   pEMC->DYNAMICSREX       = convertTimmingParam(EMC_Clock, Dynamic_Config->tSREX, 1);\n+   pEMC->DYNAMICAPR        = convertTimmingParam(EMC_Clock, Dynamic_Config->tAPR, 1);\n+   pEMC->DYNAMICDAL        = convertTimmingParam(EMC_Clock, Dynamic_Config->tDAL, 0);\n+   pEMC->DYNAMICWR         = convertTimmingParam(EMC_Clock, Dynamic_Config->tWR, 1);\n+   pEMC->DYNAMICRC         = convertTimmingParam(EMC_Clock, Dynamic_Config->tRC, 1);\n+   pEMC->DYNAMICRFC        = convertTimmingParam(EMC_Clock, Dynamic_Config->tRFC, 1);\n+   pEMC->DYNAMICXSR        = convertTimmingParam(EMC_Clock, Dynamic_Config->tXSR, 1);\n+   pEMC->DYNAMICRRD        = convertTimmingParam(EMC_Clock, Dynamic_Config->tRRD, 1);\n+   pEMC->DYNAMICMRD        = convertTimmingParam(EMC_Clock, Dynamic_Config->tMRD, 1);\n+\n+   for (i = 0; i < 1000; i++) {    /* wait 100us */\n+   }\n+   pEMC->DYNAMICCONTROL    = 0x00000183;   /* Issue NOP command */\n+\n+   for (i = 0; i < 1000; i++) {}\n+   pEMC->DYNAMICCONTROL    = 0x00000103;   /* Issue PALL command */\n+\n+   pEMC->DYNAMICREFRESH = 2;   /* ( 2 * 16 ) -> 32 clock cycles */\n+\n+   for (i = 0; i < 80; i++) {}\n+\n+   tmpclk = EMC_DIV_ROUND_UP(convertTimmingParam(EMC_Clock, Dynamic_Config->RefreshPeriod, 0), 16);\n+   pEMC->DYNAMICREFRESH    = tmpclk;\n+\n+   pEMC->DYNAMICCONTROL    = 0x00000083;   /* Issue MODE command */\n+\n+   for (ChipSelect = 0; ChipSelect < 4; ChipSelect++) {\n+       /*uint32_t burst_length;*/\n+       uint32_t DynAddr;\n+       uint8_t Col_len;\n+\n+       Col_len = getColsLen(Dynamic_Config->DevConfig[ChipSelect].DynConfig);\n+       /* get bus wide: if 32bit, len is 4 else if 16bit len is 2 */\n+       /* burst_length = 1 << ((((Dynamic_Config->DynConfig[ChipSelect] >> 14) & 1)^1) +1); */\n+       if (Dynamic_Config->DevConfig[ChipSelect].DynConfig & (1 << EMC_DYN_CONFIG_DATA_BUS_WIDTH_BIT)) {\n+           /*32bit bus */\n+           /*burst_length = 2;*/\n+           Col_len += 2;\n+       }\n+       else {\n+           /*burst_length = 4;*/\n+           Col_len += 1;\n+       }\n+\n+       /* Check for RBC mode */\n+       if (!(Dynamic_Config->DevConfig[ChipSelect].DynConfig & EMC_DYN_CONFIG_LPSDRAM)) {\n+           if (!(Dynamic_Config->DevConfig[ChipSelect].DynConfig & (0x7 << EMC_DYN_CONFIG_DEV_SIZE_BIT))) {\n+               /* 2 banks => 1 bank select bit */\n+               Col_len += 1;\n+           }\n+           else {\n+               /* 4 banks => 2 bank select bits */\n+               Col_len += 2;\n+           }\n+       }\n+\n+       DynAddr = Dynamic_Config->DevConfig[ChipSelect].BaseAddr;\n+\n+\n+       if (DynAddr != 0) {\n+           uint32_t temp;\n+           uint32_t ModeRegister;\n+           ModeRegister = Dynamic_Config->DevConfig[ChipSelect].ModeRegister;\n+           temp = *((volatile uint32_t *) (DynAddr | (ModeRegister << Col_len)));\n+           temp = temp;\n+       }\n+   }\n+   pEMC->DYNAMICCONTROL    = 0x00000000;   /* Issue NORMAL command */\n+\n+   /* enable buffers */\n+   pEMC->DYNAMICCONFIG0    |= 1 << 19;\n+   pEMC->DYNAMICCONFIG1    |= 1 << 19;\n+   pEMC->DYNAMICCONFIG2    |= 1 << 19;\n+   pEMC->DYNAMICCONFIG3    |= 1 << 19;\n+}\n+\n+/* Initializes the Static Controller according to the specified parameters\n+ * in the IP_EMC_STATIC_CONFIG_T\n+ */\n+void initStaticMem(LPC_EMC_T *pEMC, IP_EMC_STATIC_CONFIG_T *Static_Config, uint32_t EMC_Clock)\n+{\n+   LPC_EMC_T *EMC_Reg_add = (LPC_EMC_T *) ((uint32_t) pEMC + ((Static_Config->ChipSelect) << 5));\n+   EMC_Reg_add->STATICCONFIG0      = Static_Config->Config;\n+   EMC_Reg_add->STATICWAITWEN0     = convertTimmingParam(EMC_Clock, Static_Config->WaitWen, 1);\n+   EMC_Reg_add->STATICWAITOEN0     = convertTimmingParam(EMC_Clock, Static_Config->WaitOen, 0);\n+   EMC_Reg_add->STATICWAITRD0      = convertTimmingParam(EMC_Clock, Static_Config->WaitRd, 1);\n+   EMC_Reg_add->STATICWAITPAG0     = convertTimmingParam(EMC_Clock, Static_Config->WaitPage, 1);\n+   EMC_Reg_add->STATICWAITWR0      = convertTimmingParam(EMC_Clock, Static_Config->WaitWr, 2);\n+   EMC_Reg_add->STATICWAITTURN0    = convertTimmingParam(EMC_Clock, Static_Config->WaitTurn, 1);\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Dyanmic memory setup */\n+void Chip_EMC_Dynamic_Init(IP_EMC_DYN_CONFIG_T *Dynamic_Config)\n+{\n+   uint32_t ClkFreq;\n+\n+   /* Note clocks must be enabled prior to this call */\n+   ClkFreq = Chip_Clock_GetEMCRate();\n+\n+   initDynMem(LPC_EMC, Dynamic_Config, ClkFreq);\n+}\n+\n+/* Enable Dynamic Memory Controller */\n+void Chip_EMC_Dynamic_Enable(uint8_t Enable)\n+{\n+   if (Enable) {\n+       LPC_EMC->DYNAMICCONTROL |= EMC_DYN_CONTROL_ENABLE;\n+   }\n+   else {\n+       LPC_EMC->DYNAMICCONTROL &= ~EMC_DYN_CONTROL_ENABLE;\n+   }\n+}\n+\n+/* Static memory setup */\n+void Chip_EMC_Static_Init(IP_EMC_STATIC_CONFIG_T *Static_Config)\n+{\n+   uint32_t ClkFreq;\n+\n+   /* Note clocks must be enabled prior to this call */\n+   ClkFreq = Chip_Clock_GetEMCRate();\n+\n+   initStaticMem(LPC_EMC, Static_Config, ClkFreq);\n+}\n+\n+/* Mirror CS1 to CS0 and DYCS0 */\n+void Chip_EMC_Mirror(uint8_t Enable)\n+{\n+   if (Enable) {\n+       LPC_EMC->CONTROL |= 1 << 1;\n+   }\n+   else {\n+       LPC_EMC->CONTROL &= ~(1 << 1);\n+   }\n+}\n+\n+/* Enable EMC */\n+void Chip_EMC_Enable(uint8_t Enable)\n+{\n+   if (Enable) {\n+       LPC_EMC->CONTROL |= 1;\n+   }\n+   else {\n+       LPC_EMC->CONTROL &= ~(1);\n+   }\n+}\n+\n+/* Set EMC LowPower Mode */\n+void Chip_EMC_LowPowerMode(uint8_t Enable)\n+{\n+   if (Enable) {\n+       LPC_EMC->CONTROL |= 1 << 2;\n+   }\n+   else {\n+       LPC_EMC->CONTROL &= ~(1 << 2);\n+   }\n+}\n+\n+/* Initialize EMC */\n+void Chip_EMC_Init(uint32_t Enable, uint32_t ClockRatio, uint32_t EndianMode)\n+{\n+   LPC_EMC->CONFIG    = (EndianMode ? 1 : 0) | ((ClockRatio ? 1 : 0) << 8);\n+\n+   /* Enable EMC 001 Normal Memory Map, No low power mode */\n+   LPC_EMC->CONTROL     = (Enable ? 1 : 0);\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/enet_18xx_43xx.c ./lpc_chip_43xx/src/enet_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/enet_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/enet_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,182 @@\n+/*\n+ * @brief LPC18xx/43xx Ethernet driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Saved address for PHY and clock divider */\n+STATIC uint32_t phyCfg;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+STATIC INLINE void reset(LPC_ENET_T *pENET)\n+{\n+    Chip_RGU_TriggerReset(RGU_ETHERNET_RST);\n+   while (Chip_RGU_InReset(RGU_ETHERNET_RST))\n+    {}\n+\n+   /* Reset ethernet peripheral */\n+   Chip_ENET_Reset(pENET);\n+}\n+\n+STATIC uint32_t Chip_ENET_CalcMDCClock(void)\n+{\n+   uint32_t val = SystemCoreClock / 1000000UL;\n+\n+   if (val >= 20 && val < 35)\n+       return 2;\n+   if (val >= 35 && val < 60)\n+       return 3;\n+   if (val >= 60 && val < 100)\n+       return 0;\n+   if (val >= 100 && val < 150)\n+       return 1;\n+   if (val >= 150 && val < 250)\n+       return 4;\n+   if (val >= 250 && val < 300)\n+       return 5;\n+\n+   /* Code should never reach here\n+      unless there is BUG in frequency settings\n+   */\n+   return 0;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Basic Ethernet interface initialization */\n+void Chip_ENET_Init(LPC_ENET_T *pENET, uint32_t phyAddr)\n+{\n+   Chip_Clock_EnableOpts(CLK_MX_ETHERNET, true, true, 1);\n+\n+   reset(pENET);\n+\n+   /* Setup MII link divider to /102 and PHY address 1 */\n+   Chip_ENET_SetupMII(pENET, Chip_ENET_CalcMDCClock(), phyAddr);\n+\n+   /* Enhanced descriptors, burst length = 1 */\n+   pENET->DMA_BUS_MODE = DMA_BM_ATDS | DMA_BM_PBL(1) | DMA_BM_RPBL(1);\n+\n+   /* Initial MAC configuration for checksum offload, full duplex,\n+      100Mbps, disable receive own in half duplex, inter-frame gap\n+      of 64-bits */\n+   pENET->MAC_CONFIG = MAC_CFG_BL(0) | MAC_CFG_IPC | MAC_CFG_DM |\n+                       MAC_CFG_DO | MAC_CFG_FES | MAC_CFG_PS | MAC_CFG_IFG(3);\n+\n+   /* Setup default filter */\n+   pENET->MAC_FRAME_FILTER = MAC_FF_PR | MAC_FF_RA;\n+\n+   /* Flush transmit FIFO */\n+   pENET->DMA_OP_MODE = DMA_OM_FTF;\n+\n+   /* Setup DMA to flush receive FIFOs at 32 bytes, service TX FIFOs at\n+      64 bytes */\n+   pENET->DMA_OP_MODE |= DMA_OM_RTC(1) | DMA_OM_TTC(0);\n+\n+   /* Clear all MAC interrupts */\n+   pENET->DMA_STAT = DMA_ST_ALL;\n+\n+   /* Enable MAC interrupts */\n+   pENET->DMA_INT_EN = 0;\n+}\n+\n+/* Ethernet interface shutdown */\n+void Chip_ENET_DeInit(LPC_ENET_T *pENET)\n+{\n+   /* Disable packet reception */\n+   pENET->MAC_CONFIG = 0;\n+\n+   /* Flush transmit FIFO */\n+   pENET->DMA_OP_MODE = DMA_OM_FTF;\n+\n+   /* Disable receive and transmit DMA processes */\n+   pENET->DMA_OP_MODE = 0;\n+\n+   Chip_Clock_Disable(CLK_MX_ETHERNET);\n+}\n+\n+/* Sets up the PHY link clock divider and PHY address */\n+void Chip_ENET_SetupMII(LPC_ENET_T *pENET, uint32_t div, uint8_t addr)\n+{\n+   /* Save clock divider and PHY address in MII address register */\n+   phyCfg = MAC_MIIA_PA(addr) | MAC_MIIA_CR(div);\n+}\n+\n+/* Starts a PHY write via the MII */\n+void Chip_ENET_StartMIIWrite(LPC_ENET_T *pENET, uint8_t reg, uint16_t data)\n+{\n+   /* Write value at PHY address and register */\n+   pENET->MAC_MII_ADDR = phyCfg | MAC_MIIA_GR(reg) | MAC_MIIA_W;\n+   pENET->MAC_MII_DATA = (uint32_t) data;\n+   pENET->MAC_MII_ADDR |= MAC_MIIA_GB;\n+}\n+\n+/*Starts a PHY read via the MII */\n+void Chip_ENET_StartMIIRead(LPC_ENET_T *pENET, uint8_t reg)\n+{\n+   /* Read value at PHY address and register */\n+   pENET->MAC_MII_ADDR = phyCfg | MAC_MIIA_GR(reg);\n+   pENET->MAC_MII_ADDR |= MAC_MIIA_GB;\n+}\n+\n+/* Sets full or half duplex for the interface */\n+void Chip_ENET_SetDuplex(LPC_ENET_T *pENET, bool full)\n+{\n+   if (full) {\n+       pENET->MAC_CONFIG |= MAC_CFG_DM;\n+   }\n+   else {\n+       pENET->MAC_CONFIG &= ~MAC_CFG_DM;\n+   }\n+}\n+\n+/* Sets speed for the interface */\n+void Chip_ENET_SetSpeed(LPC_ENET_T *pENET, bool speed100)\n+{\n+   if (speed100) {\n+       pENET->MAC_CONFIG |= MAC_CFG_FES;\n+   }\n+   else {\n+       pENET->MAC_CONFIG &= ~MAC_CFG_FES;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/evrt_18xx_43xx.c ./lpc_chip_43xx/src/evrt_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/evrt_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/evrt_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,111 @@\n+/*\n+ * @brief LPC18xx/43xx event router driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the EVRT */\n+void Chip_EVRT_Init(void)\n+{\n+   uint8_t i = 0;\n+   // Clear all register to be default\n+   LPC_EVRT->HILO      = 0x0000;\n+   LPC_EVRT->EDGE      = 0x0000;\n+   LPC_EVRT->CLR_EN    = 0xFFFF;\n+   do {\n+       i++;\n+       LPC_EVRT->CLR_STAT  = 0xFFFFF;\n+   } while ((LPC_EVRT->STATUS != 0) && (i < 10));\n+}\n+\n+/* Set up the type of interrupt type for a source to EVRT */\n+void Chip_EVRT_ConfigIntSrcActiveType(CHIP_EVRT_SRC_T EVRT_Src, CHIP_EVRT_SRC_ACTIVE_T type)\n+{\n+   switch (type) {\n+   case EVRT_SRC_ACTIVE_LOW_LEVEL:\n+       LPC_EVRT->HILO &= ~(1 << (uint8_t) EVRT_Src);\n+       LPC_EVRT->EDGE &= ~(1 << (uint8_t) EVRT_Src);\n+       break;\n+\n+   case EVRT_SRC_ACTIVE_HIGH_LEVEL:\n+       LPC_EVRT->HILO |= (1 << (uint8_t) EVRT_Src);\n+       LPC_EVRT->EDGE &= ~(1 << (uint8_t) EVRT_Src);\n+       break;\n+\n+   case EVRT_SRC_ACTIVE_FALLING_EDGE:\n+       LPC_EVRT->HILO &= ~(1 << (uint8_t) EVRT_Src);\n+       LPC_EVRT->EDGE |= (1 << (uint8_t) EVRT_Src);\n+       break;\n+\n+   case EVRT_SRC_ACTIVE_RISING_EDGE:\n+       LPC_EVRT->HILO |= (1 << (uint8_t) EVRT_Src);\n+       LPC_EVRT->EDGE |= (1 << (uint8_t) EVRT_Src);\n+       break;\n+\n+   default:\n+       break;\n+   }\n+}\n+\n+/* Enable or disable interrupt sources to EVRT */\n+void Chip_EVRT_SetUpIntSrc(CHIP_EVRT_SRC_T EVRT_Src, FunctionalState state)\n+{\n+   if (state == ENABLE) {\n+       LPC_EVRT->SET_EN = (1 << (uint8_t) EVRT_Src);\n+   }\n+   else {\n+       LPC_EVRT->CLR_EN = (1 << (uint8_t) EVRT_Src);\n+   }\n+}\n+\n+/* Check if a source is sending interrupt to EVRT */\n+IntStatus Chip_EVRT_IsSourceInterrupting(CHIP_EVRT_SRC_T EVRT_Src)\n+{\n+   if (LPC_EVRT->STATUS & (1 << (uint8_t) EVRT_Src)) {\n+       return SET;\n+   }\n+   else {return RESET; }\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/fpu_init.c ./lpc_chip_43xx/src/fpu_init.c\n--- a_8FkA5l/lpc_chip_43xx/src/fpu_init.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/fpu_init.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,97 @@\n+/*\n+ * @brief FPU init code\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#if defined(CORE_M4)\n+\n+#include \"sys_config.h\"\n+#include \"cmsis.h\"\n+#include \"stdint.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define LPC_CPACR           0xE000ED88\n+\n+#define SCB_MVFR0           0xE000EF40\n+#define SCB_MVFR0_RESET     0x10110021\n+\n+#define SCB_MVFR1           0xE000EF44\n+#define SCB_MVFR1_RESET     0x11000011\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Early initialization of the FPU */\n+void fpuInit(void)\n+{\n+#if __FPU_PRESENT != 0\n+   // from arm trm manual:\n+   //                ; CPACR is located at address 0xE000ED88\n+   //                LDR.W R0, =0xE000ED88\n+   //                ; Read CPACR\n+   //                LDR R1, [R0]\n+   //                ; Set bits 20-23 to enable CP10 and CP11 coprocessors\n+   //                ORR R1, R1, #(0xF << 20)\n+   //                ; Write back the modified value to the CPACR\n+   //                STR R1, [R0]\n+\n+   volatile uint32_t *regCpacr = (uint32_t *) LPC_CPACR;\n+   volatile uint32_t *regMvfr0 = (uint32_t *) SCB_MVFR0;\n+   volatile uint32_t *regMvfr1 = (uint32_t *) SCB_MVFR1;\n+   volatile uint32_t Cpacr;\n+   volatile uint32_t Mvfr0;\n+   volatile uint32_t Mvfr1;\n+   char vfpPresent = 0;\n+\n+   Mvfr0 = *regMvfr0;\n+   Mvfr1 = *regMvfr1;\n+\n+   vfpPresent = ((SCB_MVFR0_RESET == Mvfr0) && (SCB_MVFR1_RESET == Mvfr1));\n+\n+   if (vfpPresent) {\n+       Cpacr = *regCpacr;\n+       Cpacr |= (0xF << 20);\n+       *regCpacr = Cpacr;  // enable CP10 and CP11 for full access\n+   }\n+#endif /* __FPU_PRESENT != 0 */\n+}\n+\n+#endif /* defined(CORE_M4 */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/gpdma_18xx_43xx.c ./lpc_chip_43xx/src/gpdma_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/gpdma_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/gpdma_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,746 @@\n+/*\n+ * @brief LPC18xx/43xx GPDMA driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Channel array to monitor free channel */\n+static DMA_ChannelHandle_t ChannelHandlerArray[GPDMA_NUMBER_CHANNELS];\n+\n+/* Optimized Peripheral Source and Destination burst size (18xx,43xx) */\n+static const uint8_t GPDMA_LUTPerBurst[] = {\n+   GPDMA_BSIZE_4,  /* MEMORY             */\n+   GPDMA_BSIZE_1,  /* MAT0.0             */\n+   GPDMA_BSIZE_1,  /* UART0 Tx           */\n+   GPDMA_BSIZE_1,  /* MAT0.1             */\n+   GPDMA_BSIZE_1,  /* UART0 Rx           */\n+   GPDMA_BSIZE_1,  /* MAT1.0             */\n+   GPDMA_BSIZE_1,  /* UART1 Tx           */\n+   GPDMA_BSIZE_1,  /* MAT1.1             */\n+   GPDMA_BSIZE_1,  /* UART1 Rx           */\n+   GPDMA_BSIZE_1,  /* MAT2.0             */\n+   GPDMA_BSIZE_1,  /* UART2 Tx           */\n+   GPDMA_BSIZE_1,  /* MAT2.1             */\n+   GPDMA_BSIZE_1,  /* UART2 Rx           */\n+   GPDMA_BSIZE_1,  /* MAT3.0             */\n+   GPDMA_BSIZE_1,  /* UART3 Tx           */\n+   0,              /* SCT timer channel 0*/\n+   GPDMA_BSIZE_1,  /* MAT3.1             */\n+   GPDMA_BSIZE_1,  /* UART3 Rx           */\n+   0,              /* SCT timer channel 1*/\n+   GPDMA_BSIZE_4,  /* SSP0 Rx            */\n+   GPDMA_BSIZE_32, /* I2S channel 0      */\n+   GPDMA_BSIZE_4,  /* SSP0 Tx            */\n+   GPDMA_BSIZE_32, /* I2S channel 1      */\n+   GPDMA_BSIZE_4,  /* SSP1 Rx            */\n+   GPDMA_BSIZE_4,  /* SSP1 Tx            */\n+   GPDMA_BSIZE_4,  /* ADC 0              */\n+   GPDMA_BSIZE_4,  /* ADC 1              */\n+   GPDMA_BSIZE_1,  /* DAC                */\n+   GPDMA_BSIZE_32, /* I2S channel 0      */\n+   GPDMA_BSIZE_32  /* I2S channel 0      */\n+};\n+\n+/* Optimized Peripheral Source and Destination transfer width (18xx,43xx) */\n+static const uint8_t GPDMA_LUTPerWid[] = {\n+   GPDMA_WIDTH_WORD,   /* MEMORY             */\n+   GPDMA_WIDTH_WORD,   /* MAT0.0             */\n+   GPDMA_WIDTH_BYTE,   /* UART0 Tx           */\n+   GPDMA_WIDTH_WORD,   /* MAT0.1             */\n+   GPDMA_WIDTH_BYTE,   /* UART0 Rx           */\n+   GPDMA_WIDTH_WORD,   /* MAT1.0             */\n+   GPDMA_WIDTH_BYTE,   /* UART1 Tx           */\n+   GPDMA_WIDTH_WORD,   /* MAT1.1             */\n+   GPDMA_WIDTH_BYTE,   /* UART1 Rx           */\n+   GPDMA_WIDTH_WORD,   /* MAT2.0             */\n+   GPDMA_WIDTH_BYTE,   /* UART2 Tx           */\n+   GPDMA_WIDTH_WORD,   /* MAT2.1             */\n+   GPDMA_WIDTH_BYTE,   /* UART2 Rx           */\n+   GPDMA_WIDTH_WORD,   /* MAT3.0             */\n+   GPDMA_WIDTH_BYTE,   /* UART3 Tx           */\n+   0,                  /* SCT timer channel 0*/\n+   GPDMA_WIDTH_WORD,   /* MAT3.1             */\n+   GPDMA_WIDTH_BYTE,   /* UART3 Rx           */\n+   0,                  /* SCT timer channel 1*/\n+   GPDMA_WIDTH_BYTE,   /* SSP0 Rx            */\n+   GPDMA_WIDTH_WORD,   /* I2S channel 0      */\n+   GPDMA_WIDTH_BYTE,   /* SSP0 Tx            */\n+   GPDMA_WIDTH_WORD,   /* I2S channel 1      */\n+   GPDMA_WIDTH_BYTE,   /* SSP1 Rx            */\n+   GPDMA_WIDTH_BYTE,   /* SSP1 Tx            */\n+   GPDMA_WIDTH_WORD,   /* ADC 0              */\n+   GPDMA_WIDTH_WORD,   /* ADC 1              */\n+   GPDMA_WIDTH_WORD,   /* DAC                */\n+   GPDMA_WIDTH_WORD,   /* I2S channel 0      */\n+   GPDMA_WIDTH_WORD/* I2S channel 0      */\n+};\n+\n+/* Lookup Table of Connection Type matched with (18xx,43xx) Peripheral Data (FIFO) register base address */\n+volatile static const void *GPDMA_LUTPerAddr[] = {\n+   NULL,                           /* MEMORY             */\n+   (&LPC_TIMER0->MR),              /* MAT0.0             */\n+   (&LPC_USART0-> /*RBTHDLR.*/ THR),   /* UART0 Tx           */\n+   ((uint32_t *) &LPC_TIMER0->MR + 1), /* MAT0.1             */\n+   (&LPC_USART0-> /*RBTHDLR.*/ RBR),   /* UART0 Rx           */\n+   (&LPC_TIMER1->MR),              /* MAT1.0             */\n+   (&LPC_UART1-> /*RBTHDLR.*/ THR),/* UART1 Tx           */\n+   ((uint32_t *) &LPC_TIMER1->MR + 1), /* MAT1.1             */\n+   (&LPC_UART1-> /*RBTHDLR.*/ RBR),/* UART1 Rx           */\n+   (&LPC_TIMER2->MR),              /* MAT2.0             */\n+   (&LPC_USART2-> /*RBTHDLR.*/ THR),   /* UART2 Tx           */\n+   ((uint32_t *) &LPC_TIMER2->MR + 1), /* MAT2.1             */\n+   (&LPC_USART2-> /*RBTHDLR.*/ RBR),   /* UART2 Rx           */\n+   (&LPC_TIMER3->MR),              /* MAT3.0             */\n+   (&LPC_USART3-> /*RBTHDLR.*/ THR),   /* UART3 Tx           */\n+   0,                              /* SCT timer channel 0*/\n+   ((uint32_t *) &LPC_TIMER3->MR + 1), /* MAT3.1             */\n+   (&LPC_USART3-> /*RBTHDLR.*/ RBR),   /* UART3 Rx           */\n+   0,                              /* SCT timer channel 1*/\n+   (&LPC_SSP0->DR),                /* SSP0 Rx            */\n+   (&LPC_I2S0->TXFIFO),            /* I2S0 Tx on channel 0 */\n+   (&LPC_SSP0->DR),                /* SSP0 Tx            */\n+   (&LPC_I2S0->RXFIFO),            /* I2S0 Rx on channel 1  */\n+   (&LPC_SSP1->DR),                /* SSP1 Rx            */\n+   (&LPC_SSP1->DR),                /* SSP1 Tx            */\n+   (&LPC_ADC0->GDR),               /* ADC 0              */\n+   (&LPC_ADC1->GDR),               /* ADC 1              */\n+   (&LPC_DAC->CR),                 /* DAC                */\n+   (&LPC_I2S1->TXFIFO),            /* I2S1 Tx on channel 0 */\n+   (&LPC_I2S1->RXFIFO)             /* I2S1 Rx on channel 1 */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+/* Control which set of peripherals is connected to the DMA controller */\n+STATIC uint8_t configDMAMux(uint32_t gpdma_peripheral_connection_number)\n+{\n+   uint8_t function, channel;\n+\n+   switch (gpdma_peripheral_connection_number) {\n+   case GPDMA_CONN_MAT0_0:\n+       function = 0;\n+       channel = 1;\n+       break;\n+\n+   case GPDMA_CONN_UART0_Tx:\n+       function = 1;\n+       channel = 1;\n+       break;\n+\n+   case GPDMA_CONN_MAT0_1:\n+       function = 0;\n+       channel = 2;\n+       break;\n+\n+   case GPDMA_CONN_UART0_Rx:\n+       function = 1;\n+       channel = 2;\n+       break;\n+\n+   case GPDMA_CONN_MAT1_0:\n+       function = 0;\n+       channel = 3;\n+       break;\n+\n+   case GPDMA_CONN_UART1_Tx:\n+       function = 1;\n+       channel = 3;\n+       break;\n+\n+   case GPDMA_CONN_I2S1_Tx_Channel_0:\n+       function = 2;\n+       channel = 3;\n+       break;\n+\n+   case GPDMA_CONN_MAT1_1:\n+       function = 0;\n+       channel = 4;\n+       break;\n+\n+   case GPDMA_CONN_UART1_Rx:\n+       function = 1;\n+       channel = 4;\n+       break;\n+\n+   case GPDMA_CONN_I2S1_Rx_Channel_1:\n+       function = 2;\n+       channel =  4;\n+       break;\n+\n+   case GPDMA_CONN_MAT2_0:\n+       function = 0;\n+       channel = 5;\n+       break;\n+\n+   case GPDMA_CONN_UART2_Tx:\n+       function = 1;\n+       channel = 5;\n+       break;\n+\n+   case GPDMA_CONN_MAT2_1:\n+       function = 0;\n+       channel = 6;\n+       break;\n+\n+   case GPDMA_CONN_UART2_Rx:\n+       function = 1;\n+       channel = 6;\n+       break;\n+\n+   case GPDMA_CONN_MAT3_0:\n+       function = 0;\n+       channel = 7;\n+       break;\n+\n+   case GPDMA_CONN_UART3_Tx:\n+       function = 1;\n+       channel = 7;\n+       break;\n+\n+   case GPDMA_CONN_SCT_0:\n+       function = 2;\n+       channel = 7;\n+       break;\n+\n+   case GPDMA_CONN_MAT3_1:\n+       function = 0;\n+       channel = 8;\n+       break;\n+\n+   case GPDMA_CONN_UART3_Rx:\n+       function = 1;\n+       channel = 8;\n+       break;\n+\n+   case GPDMA_CONN_SCT_1:\n+       function = 2;\n+       channel = 8;\n+       break;\n+\n+   case GPDMA_CONN_SSP0_Rx:\n+       function = 0;\n+       channel = 9;\n+       break;\n+\n+   case GPDMA_CONN_I2S_Tx_Channel_0:\n+       function = 1;\n+       channel = 9;\n+       break;\n+\n+   case GPDMA_CONN_SSP0_Tx:\n+       function = 0;\n+       channel = 10;\n+       break;\n+\n+   case GPDMA_CONN_I2S_Rx_Channel_1:\n+       function = 1;\n+       channel = 10;\n+       break;\n+\n+   case GPDMA_CONN_SSP1_Rx:\n+       function = 0;\n+       channel = 11;\n+       break;\n+\n+   case GPDMA_CONN_SSP1_Tx:\n+       function = 0;\n+       channel = 12;\n+       break;\n+\n+   case GPDMA_CONN_ADC_0:\n+       function = 0;\n+       channel = 13;\n+       break;\n+\n+   case GPDMA_CONN_ADC_1:\n+       function = 0;\n+       channel = 14;\n+       break;\n+\n+   case GPDMA_CONN_DAC:\n+       function = 0;\n+       channel = 15;\n+       break;\n+\n+   default:\n+       function = 3;\n+       channel = 15;\n+       break;\n+   }\n+   /* Set select function to dmamux register */\n+   if (0 != gpdma_peripheral_connection_number) {\n+       uint32_t temp;\n+       temp = LPC_CREG->DMAMUX & (~(0x03 << (2 * channel)));\n+       LPC_CREG->DMAMUX = temp | (function << (2 * channel));\n+   }\n+   return channel;\n+}\n+\n+uint32_t makeCtrlWord(const GPDMA_CH_CFG_T *GPDMAChannelConfig,\n+                     uint32_t GPDMA_LUTPerBurstSrcConn,\n+                     uint32_t GPDMA_LUTPerBurstDstConn,\n+                     uint32_t GPDMA_LUTPerWidSrcConn,\n+                     uint32_t GPDMA_LUTPerWidDstConn)\n+{\n+   uint32_t ctrl_word = 0;\n+\n+   switch (GPDMAChannelConfig->TransferType) {\n+   /* Memory to memory */\n+   case GPDMA_TRANSFERTYPE_M2M_CONTROLLER_DMA:\n+       ctrl_word = GPDMA_DMACCxControl_TransferSize(GPDMAChannelConfig->TransferSize)\n+                   | GPDMA_DMACCxControl_SBSize((4UL))             /**< Burst size = 32 */\n+                   | GPDMA_DMACCxControl_DBSize((4UL))             /**< Burst size = 32 */\n+                   | GPDMA_DMACCxControl_SWidth(GPDMAChannelConfig->TransferWidth)\n+                   | GPDMA_DMACCxControl_DWidth(GPDMAChannelConfig->TransferWidth)\n+                   | GPDMA_DMACCxControl_SI\n+                   | GPDMA_DMACCxControl_DI\n+                   | GPDMA_DMACCxControl_I;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_M2P_CONTROLLER_PERIPHERAL:\n+       ctrl_word = GPDMA_DMACCxControl_TransferSize((uint32_t) GPDMAChannelConfig->TransferSize)\n+                   | GPDMA_DMACCxControl_SBSize(GPDMA_LUTPerBurstDstConn)\n+                   | GPDMA_DMACCxControl_DBSize(GPDMA_LUTPerBurstDstConn)\n+                   | GPDMA_DMACCxControl_SWidth(GPDMA_LUTPerWidDstConn)\n+                   | GPDMA_DMACCxControl_DWidth(GPDMA_LUTPerWidDstConn)\n+                   | GPDMA_DMACCxControl_DestTransUseAHBMaster1\n+                   | GPDMA_DMACCxControl_SI\n+                   | GPDMA_DMACCxControl_I;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_PERIPHERAL:\n+       ctrl_word = GPDMA_DMACCxControl_TransferSize((uint32_t) GPDMAChannelConfig->TransferSize)\n+                   | GPDMA_DMACCxControl_SBSize(GPDMA_LUTPerBurstSrcConn)\n+                   | GPDMA_DMACCxControl_DBSize(GPDMA_LUTPerBurstSrcConn)\n+                   | GPDMA_DMACCxControl_SWidth(GPDMA_LUTPerWidSrcConn)\n+                   | GPDMA_DMACCxControl_DWidth(GPDMA_LUTPerWidSrcConn)\n+                   | GPDMA_DMACCxControl_SrcTransUseAHBMaster1\n+                   | GPDMA_DMACCxControl_DI\n+                   | GPDMA_DMACCxControl_I;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DestPERIPHERAL:\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_SrcPERIPHERAL:\n+       ctrl_word = GPDMA_DMACCxControl_TransferSize((uint32_t) GPDMAChannelConfig->TransferSize)\n+                   | GPDMA_DMACCxControl_SBSize(GPDMA_LUTPerBurstSrcConn)\n+                   | GPDMA_DMACCxControl_DBSize(GPDMA_LUTPerBurstDstConn)\n+                   | GPDMA_DMACCxControl_SWidth(GPDMA_LUTPerWidSrcConn)\n+                   | GPDMA_DMACCxControl_DWidth(GPDMA_LUTPerWidDstConn)\n+                   | GPDMA_DMACCxControl_SrcTransUseAHBMaster1\n+                   | GPDMA_DMACCxControl_DestTransUseAHBMaster1\n+                   | GPDMA_DMACCxControl_I;\n+\n+       break;\n+\n+   /* Do not support any more transfer type, return ERROR */\n+   default:\n+       return ERROR;\n+   }\n+   return ctrl_word;\n+}\n+\n+/* Set up the DPDMA according to the specification configuration details */\n+Status setupChannel(LPC_GPDMA_T *pGPDMA,\n+                   GPDMA_CH_CFG_T *GPDMAChannelConfig,\n+                   uint32_t CtrlWord,\n+                   uint32_t LinkListItem,\n+                   uint8_t SrcPeripheral,\n+                   uint8_t DstPeripheral)\n+{\n+   GPDMA_CH_T *pDMAch;\n+\n+   if (pGPDMA->ENBLDCHNS & ((((1UL << (GPDMAChannelConfig->ChannelNum)) & 0xFF)))) {\n+       /* This channel is enabled, return ERROR, need to release this channel first */\n+       return ERROR;\n+   }\n+\n+   /* Get Channel pointer */\n+   pDMAch = (GPDMA_CH_T *) &(pGPDMA->CH[GPDMAChannelConfig->ChannelNum]);\n+\n+   /* Reset the Interrupt status */\n+   pGPDMA->INTTCCLEAR = (((1UL << (GPDMAChannelConfig->ChannelNum)) & 0xFF));\n+   pGPDMA->INTERRCLR = (((1UL << (GPDMAChannelConfig->ChannelNum)) & 0xFF));\n+\n+   /* Assign Linker List Item value */\n+   pDMAch->LLI = LinkListItem;\n+\n+   /* Enable DMA channels, little endian */\n+   pGPDMA->CONFIG = GPDMA_DMACConfig_E;\n+   while (!(pGPDMA->CONFIG & GPDMA_DMACConfig_E)) {}\n+\n+   pDMAch->SRCADDR = GPDMAChannelConfig->SrcAddr;\n+   pDMAch->DESTADDR = GPDMAChannelConfig->DstAddr;\n+\n+   /* Configure DMA Channel, enable Error Counter and Terminate counter */\n+   pDMAch->CONFIG = GPDMA_DMACCxConfig_IE\n+                    | GPDMA_DMACCxConfig_ITC       /*| GPDMA_DMACCxConfig_E*/\n+                    | GPDMA_DMACCxConfig_TransferType((uint32_t) GPDMAChannelConfig->TransferType)\n+                    | GPDMA_DMACCxConfig_SrcPeripheral(SrcPeripheral)\n+                    | GPDMA_DMACCxConfig_DestPeripheral(DstPeripheral);\n+\n+   pDMAch->CONTROL = CtrlWord;\n+\n+   return SUCCESS;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the GPDMA */\n+void Chip_GPDMA_Init(LPC_GPDMA_T *pGPDMA)\n+{\n+   uint8_t i;\n+\n+   Chip_Clock_EnableOpts(CLK_MX_DMA, true, true, 1);\n+\n+   /* Reset all channel configuration register */\n+   for (i = 8; i > 0; i--) {\n+       pGPDMA->CH[i - 1].CONFIG = 0;\n+   }\n+\n+   /* Clear all DMA interrupt and error flag */\n+   pGPDMA->INTTCCLEAR = 0xFF;\n+   pGPDMA->INTERRCLR = 0xFF;\n+\n+   /* Reset all channels are free */\n+   for (i = 0; i < GPDMA_NUMBER_CHANNELS; i++) {\n+       ChannelHandlerArray[i].ChannelStatus = DISABLE;\n+   }\n+}\n+\n+/* Shutdown the GPDMA */\n+void Chip_GPDMA_DeInit(LPC_GPDMA_T *pGPDMA)\n+{\n+   Chip_Clock_Disable(CLK_MX_DMA);\n+}\n+\n+/* Stop a stream DMA transfer */\n+void Chip_GPDMA_Stop(LPC_GPDMA_T *pGPDMA,\n+                    uint8_t ChannelNum)\n+{\n+   Chip_GPDMA_ChannelCmd(pGPDMA, (ChannelNum), DISABLE);\n+   if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INTTC, ChannelNum)) {\n+       /* Clear terminate counter Interrupt pending */\n+       Chip_GPDMA_ClearIntPending(pGPDMA, GPDMA_STATCLR_INTTC, ChannelNum);\n+   }\n+   if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INTERR, ChannelNum)) {\n+       /* Clear terminate counter Interrupt pending */\n+       Chip_GPDMA_ClearIntPending(pGPDMA, GPDMA_STATCLR_INTERR, ChannelNum);\n+   }\n+   ChannelHandlerArray[ChannelNum].ChannelStatus = DISABLE;\n+}\n+\n+/* The GPDMA stream interrupt status checking */\n+Status Chip_GPDMA_Interrupt(LPC_GPDMA_T *pGPDMA,\n+                           uint8_t ChannelNum)\n+{\n+\n+   if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INT, ChannelNum)) {\n+       /* Check counter terminal status */\n+       if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INTTC, ChannelNum)) {\n+           /* Clear terminate counter Interrupt pending */\n+           Chip_GPDMA_ClearIntPending(pGPDMA, GPDMA_STATCLR_INTTC, ChannelNum);\n+           return SUCCESS;\n+       }\n+       /* Check error terminal status */\n+       if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INTERR, ChannelNum)) {\n+           /* Clear error counter Interrupt pending */\n+\n+           Chip_GPDMA_ClearIntPending(pGPDMA, GPDMA_STATCLR_INTERR, ChannelNum);\n+           return ERROR;\n+       }\n+   }\n+   return ERROR;\n+}\n+\n+int Chip_GPDMA_InitChannelCfg(LPC_GPDMA_T *pGPDMA,\n+                             GPDMA_CH_CFG_T *GPDMACfg,\n+                             uint8_t  ChannelNum,\n+                             uint32_t src,\n+                             uint32_t dst,\n+                             uint32_t Size,\n+                             GPDMA_FLOW_CONTROL_T TransferType)\n+{\n+   int rval = -1;\n+   GPDMACfg->ChannelNum = ChannelNum;\n+   GPDMACfg->TransferType = TransferType;\n+   GPDMACfg->TransferSize = Size;\n+\n+   switch (TransferType) {\n+   case GPDMA_TRANSFERTYPE_M2M_CONTROLLER_DMA:\n+       GPDMACfg->SrcAddr = (uint32_t) src;\n+       GPDMACfg->DstAddr = (uint32_t) dst;\n+       rval = 3;\n+       GPDMACfg->TransferWidth = GPDMA_WIDTH_WORD;\n+       GPDMACfg->TransferSize = Size / 4;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_M2P_CONTROLLER_PERIPHERAL:\n+       GPDMACfg->SrcAddr = (uint32_t) src;\n+       rval = 1;\n+       GPDMACfg->DstAddr = (uint32_t) GPDMA_LUTPerAddr[dst];\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_PERIPHERAL:\n+       GPDMACfg->SrcAddr = (uint32_t) GPDMA_LUTPerAddr[src];\n+       GPDMACfg->DstAddr = (uint32_t) dst;\n+       rval = 2;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DestPERIPHERAL:\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_SrcPERIPHERAL:\n+       GPDMACfg->SrcAddr = (uint32_t) GPDMA_LUTPerAddr[src];\n+       GPDMACfg->DstAddr = (uint32_t) GPDMA_LUTPerAddr[dst];\n+       rval = 0;\n+       break;\n+\n+   default:\n+       break;\n+   }\n+   return rval;\n+}\n+\n+/* Read the status from different registers according to the type */\n+IntStatus Chip_GPDMA_IntGetStatus(LPC_GPDMA_T *pGPDMA, GPDMA_STATUS_T type, uint8_t channel)\n+{\n+   /**\n+    * TODO check the channel <=8 type is exited\n+    */\n+   switch (type) {\n+   case GPDMA_STAT_INT:/* check status of DMA channel interrupts */\n+       return (IntStatus) (pGPDMA->INTSTAT & (((1UL << channel) & 0xFF)));\n+\n+   case GPDMA_STAT_INTTC:  /* check terminal count interrupt request status for DMA */\n+       return (IntStatus) (pGPDMA->INTTCSTAT & (((1UL << channel) & 0xFF)));\n+\n+   case GPDMA_STAT_INTERR: /* check interrupt status for DMA channels */\n+       return (IntStatus) (pGPDMA->INTERRSTAT & (((1UL << channel) & 0xFF)));\n+\n+   case GPDMA_STAT_RAWINTTC:   /* check status of the terminal count interrupt for DMA channels */\n+       return (IntStatus) (pGPDMA->RAWINTTCSTAT & (((1UL << channel) & 0xFF)));\n+\n+   case GPDMA_STAT_RAWINTERR:  /* check status of the error interrupt for DMA channels */\n+       return (IntStatus) (pGPDMA->RAWINTERRSTAT & (((1UL << channel) & 0xFF)));\n+\n+   default:/* check enable status for DMA channels */\n+       return (IntStatus) (pGPDMA->ENBLDCHNS & (((1UL << channel) & 0xFF)));\n+   }\n+}\n+\n+/* Clear the Interrupt Flag from different registers according to the type */\n+void Chip_GPDMA_ClearIntPending(LPC_GPDMA_T *pGPDMA, GPDMA_STATECLEAR_T type, uint8_t channel)\n+{\n+   if (type == GPDMA_STATCLR_INTTC) {\n+       /* clears the terminal count interrupt request on DMA channel */\n+       pGPDMA->INTTCCLEAR = (((1UL << (channel)) & 0xFF));\n+   }\n+   else {\n+       /* clear the error interrupt request */\n+       pGPDMA->INTERRCLR = (((1UL << (channel)) & 0xFF));\n+   }\n+}\n+\n+/* Enable or Disable the GPDMA Channel */\n+void Chip_GPDMA_ChannelCmd(LPC_GPDMA_T *pGPDMA, uint8_t channelNum, FunctionalState NewState)\n+{\n+   GPDMA_CH_T *pDMAch;\n+\n+   /* Get Channel pointer */\n+   pDMAch = (GPDMA_CH_T *) &(pGPDMA->CH[channelNum]);\n+\n+   if (NewState == ENABLE) {\n+       pDMAch->CONFIG |= GPDMA_DMACCxConfig_E;\n+   }\n+   else {\n+       pDMAch->CONFIG &= ~GPDMA_DMACCxConfig_E;\n+   }\n+}\n+\n+/* Do a DMA transfer M2M, M2P,P2M or P2P */\n+Status Chip_GPDMA_Transfer(LPC_GPDMA_T *pGPDMA,\n+                          uint8_t ChannelNum,\n+                          uint32_t src,\n+                          uint32_t dst,\n+                          GPDMA_FLOW_CONTROL_T TransferType,\n+                          uint32_t Size)\n+{\n+   GPDMA_CH_CFG_T GPDMACfg;\n+   uint8_t SrcPeripheral = 0, DstPeripheral = 0;\n+   uint32_t cwrd;\n+   int ret;\n+\n+   ret = Chip_GPDMA_InitChannelCfg(pGPDMA, &GPDMACfg, ChannelNum, src, dst, Size, TransferType);\n+   if (ret < 0) {\n+       return ERROR;\n+   }\n+\n+   /* Adjust src/dst index if they are memory */\n+   if (ret & 1) {\n+       src = 0;\n+   }\n+   else {\n+       SrcPeripheral = configDMAMux(src);\n+   }\n+\n+   if (ret & 2) {\n+       dst = 0;\n+   }\n+   else {\n+       DstPeripheral = configDMAMux(dst);\n+   }\n+\n+   cwrd = makeCtrlWord(&GPDMACfg,\n+                       (uint32_t) GPDMA_LUTPerBurst[src],\n+                       (uint32_t) GPDMA_LUTPerBurst[dst],\n+                       (uint32_t) GPDMA_LUTPerWid[src],\n+                       (uint32_t) GPDMA_LUTPerWid[dst]);\n+   if (setupChannel(pGPDMA, &GPDMACfg, cwrd, 0, SrcPeripheral, DstPeripheral) == ERROR) {\n+       return ERROR;\n+   }\n+\n+   /* Start the Channel */\n+   Chip_GPDMA_ChannelCmd(pGPDMA, ChannelNum, ENABLE);\n+   return SUCCESS;\n+}\n+\n+Status Chip_GPDMA_PrepareDescriptor(LPC_GPDMA_T *pGPDMA,\n+                                   DMA_TransferDescriptor_t *DMADescriptor,\n+                                   uint32_t src,\n+                                   uint32_t dst,\n+                                   uint32_t Size,\n+                                   GPDMA_FLOW_CONTROL_T TransferType,\n+                                   const DMA_TransferDescriptor_t *NextDescriptor)\n+{\n+   int ret;\n+   GPDMA_CH_CFG_T GPDMACfg;\n+\n+   ret = Chip_GPDMA_InitChannelCfg(pGPDMA, &GPDMACfg, 0, src, dst, Size, TransferType);\n+   if (ret < 0) {\n+       return ERROR;\n+   }\n+\n+   /* Adjust src/dst index if they are memory */\n+   if (ret & 1) {\n+       src = 0;\n+   }\n+\n+   if (ret & 2) {\n+       dst = 0;\n+   }\n+\n+   DMADescriptor->src  = GPDMACfg.SrcAddr;\n+   DMADescriptor->dst  = GPDMACfg.DstAddr;\n+   DMADescriptor->lli  = (uint32_t) NextDescriptor;\n+   DMADescriptor->ctrl = makeCtrlWord(&GPDMACfg,\n+                                      (uint32_t) GPDMA_LUTPerBurst[src],\n+                                      (uint32_t) GPDMA_LUTPerBurst[dst],\n+                                      (uint32_t) GPDMA_LUTPerWid[src],\n+                                      (uint32_t) GPDMA_LUTPerWid[dst]);\n+\n+   /* By default set interrupt only for last transfer */\n+   if (NextDescriptor) {\n+       DMADescriptor->ctrl &= ~GPDMA_DMACCxControl_I;\n+   }\n+\n+   return SUCCESS;\n+}\n+\n+/* Do a DMA scatter-gather transfer M2M, M2P,P2M or P2P using DMA descriptors */\n+Status Chip_GPDMA_SGTransfer(LPC_GPDMA_T *pGPDMA,\n+                            uint8_t ChannelNum,\n+                            const DMA_TransferDescriptor_t *DMADescriptor,\n+                            GPDMA_FLOW_CONTROL_T TransferType)\n+{\n+   const DMA_TransferDescriptor_t *dsc = DMADescriptor;\n+   GPDMA_CH_CFG_T GPDMACfg;\n+   uint8_t SrcPeripheral = 0, DstPeripheral = 0;\n+   uint32_t src = DMADescriptor->src, dst = DMADescriptor->dst;\n+   int ret;\n+\n+   ret = Chip_GPDMA_InitChannelCfg(pGPDMA, &GPDMACfg, ChannelNum, src, dst, 0, TransferType);\n+   if (ret < 0) {\n+       return ERROR;\n+   }\n+\n+   /* Adjust src/dst index if they are memory */\n+   if (ret & 1) {\n+       src = 0;\n+   }\n+   else {\n+       SrcPeripheral = configDMAMux(src);\n+   }\n+\n+   if (ret & 2) {\n+       dst = 0;\n+   }\n+   else {\n+       DstPeripheral = configDMAMux(dst);\n+   }\n+\n+   if (setupChannel(pGPDMA, &GPDMACfg, dsc->ctrl, dsc->lli, SrcPeripheral, DstPeripheral) == ERROR) {\n+       return ERROR;\n+   }\n+\n+   /* Start the Channel */\n+   Chip_GPDMA_ChannelCmd(pGPDMA, ChannelNum, ENABLE);\n+   return SUCCESS;\n+}\n+\n+/* Get a free GPDMA channel for one DMA connection */\n+uint8_t Chip_GPDMA_GetFreeChannel(LPC_GPDMA_T *pGPDMA,\n+                                 uint32_t PeripheralConnection_ID)\n+{\n+   uint8_t temp = 0;\n+   for (temp = 0; temp < GPDMA_NUMBER_CHANNELS; temp++) {\n+       if (!Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_ENABLED_CH,\n+                                    temp) && (ChannelHandlerArray[temp].ChannelStatus == DISABLE)) {\n+           ChannelHandlerArray[temp].ChannelStatus = ENABLE;\n+           return temp;\n+       }\n+   }\n+   return 0;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/gpio_18xx_43xx.c ./lpc_chip_43xx/src/gpio_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/gpio_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/gpio_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,102 @@\n+/*\n+ * @brief LPC18xx/43xx GPIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize GPIO block */\n+void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)\n+{\n+}\n+\n+/* De-Initialize GPIO block */\n+void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)\n+{\n+}\n+\n+/* Set a GPIO direction */\n+void Chip_GPIO_WriteDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t bit, bool setting)\n+{\n+   if (setting) {\n+       pGPIO->DIR[port] |= 1UL << bit;\n+   }\n+   else {\n+       pGPIO->DIR[port] &= ~(1UL << bit);\n+   }\n+}\n+\n+/* Set Direction for a GPIO port */\n+void Chip_GPIO_SetDir(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue, uint8_t out)\n+{\n+   if (out) {\n+       pGPIO->DIR[portNum] |= bitValue;\n+   }\n+   else {\n+       pGPIO->DIR[portNum] &= ~bitValue;\n+   }\n+}\n+\n+/* Set GPIO direction for a single GPIO pin */\n+void Chip_GPIO_SetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool output)\n+{\n+   if (output) {\n+       Chip_GPIO_SetPinDIROutput(pGPIO, port, pin);\n+   }\n+   else {\n+       Chip_GPIO_SetPinDIRInput(pGPIO, port, pin);\n+   }\n+}\n+\n+/* Set GPIO direction for a all selected GPIO pins to an input or output */\n+void Chip_GPIO_SetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pinMask, bool outSet)\n+{\n+   if (outSet) {\n+       Chip_GPIO_SetPortDIROutput(pGPIO, port, pinMask);\n+   }\n+   else {\n+       Chip_GPIO_SetPortDIRInput(pGPIO, port, pinMask);\n+   }\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/gpiogroup_18xx_43xx.c ./lpc_chip_43xx/src/gpiogroup_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/gpiogroup_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/gpiogroup_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,48 @@\n+/*\n+ * @brief LPC18xx/43xx GPIO group driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/hsadc_18xx_43xx.c ./lpc_chip_43xx/src/hsadc_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/hsadc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/hsadc_18xx_43xx.c\t2017-02-27 20:42:08.476009492 -0300\n@@ -0,0 +1,178 @@\n+/*\n+ * @brief LPC18xx/43xx High speed ADC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* CRS and DGEC values mapped to maximum HSADC sample rates */\n+typedef struct {\n+   uint32_t minRate;\n+   uint8_t crs;\n+   uint8_t dgec;\n+} CRSDCEG_T;\n+static const CRSDCEG_T powerSets[] = {\n+   {20000000,   0, 0x0},   /* Use 0/0 for less than 20MHz */\n+   {30000000,   1, 0x0},   /* Use 1/0 for less than 30MHz */\n+   {50000000,   2, 0x0},   /* Use 2/0 for less than 50MHz */\n+   {65000000,   3, 0xF},   /* Use 3/F for less than 65MHz */\n+   {0xFFFFFFFF, 4, 0xE},   /* Use 4/E for everything else */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the High speed ADC */\n+void Chip_HSADC_Init(LPC_HSADC_T *pHSADC)\n+{\n+   /* Enable HSADC register clock */\n+   Chip_Clock_EnableOpts(CLK_MX_ADCHS, true, true, 1);\n+\n+   /* Enable HSADC sample clock */\n+   Chip_Clock_Enable(CLK_ADCHS);\n+\n+   /* Reset HSADC, will auto-clear */\n+   Chip_RGU_TriggerReset(RGU_ADCHS_RST);\n+}\n+\n+/* Shutdown ADC */\n+void Chip_HSADC_DeInit(LPC_HSADC_T *pHSADC)\n+{\n+   /* Power down */\n+   Chip_HSADC_DisablePower(pHSADC);\n+\n+   /* Reset HSADC and wait for clear, will auto-clear */\n+   Chip_RGU_TriggerReset(RGU_ADCHS_RST);\n+   while (Chip_RGU_InReset(RGU_ADCHS_RST)) {}\n+\n+   /* SHutdown HSADC clock after reset is complete */\n+   Chip_Clock_Disable(CLK_MX_ADCHS);\n+}\n+\n+/* Sets up HSADC FIFO trip level and packing */\n+void Chip_HSADC_SetupFIFO(LPC_HSADC_T *pHSADC, uint8_t trip, bool packed)\n+{\n+   uint32_t val = (uint32_t) trip << 1;\n+   if (packed) {\n+       val |= 1;\n+   }\n+\n+   pHSADC->FIFO_CFG = val;\n+}\n+\n+/* Set HSADC Threshold low value */\n+void Chip_HSADC_SetThrLowValue(LPC_HSADC_T *pHSADC, uint8_t thrnum, uint16_t value)\n+{\n+   uint32_t reg;\n+\n+   reg = pHSADC->THR[thrnum] & ~0xFFF;\n+   pHSADC->THR[thrnum] = reg | (uint32_t) value;\n+}\n+\n+/* Set HSADC Threshold high value */\n+void Chip_HSADC_SetThrHighValue(LPC_HSADC_T *pHSADC, uint8_t thrnum, uint16_t value)\n+{\n+   uint32_t reg;\n+\n+   reg = pHSADC->THR[thrnum] & ~0xFFF0000;\n+   pHSADC->THR[thrnum] = reg | (((uint32_t) value) << 16);\n+}\n+\n+/* Setup speed for a input channel */\n+void Chip_HSADC_SetSpeed(LPC_HSADC_T *pHSADC, uint8_t channel, uint8_t speed)\n+{\n+   uint32_t reg, shift = channel * 4;\n+\n+   reg = pHSADC->ADC_SPEED & ~(0xF << shift);\n+   pHSADC->ADC_SPEED = reg | (speed << shift);\n+}\n+\n+/* Setup (common) HSADC power and speed settings */\n+void Chip_HSADC_SetPowerSpeed(LPC_HSADC_T *pHSADC, bool comp2)\n+{\n+   uint32_t rate, val, orBits;\n+   int i, idx;\n+\n+   /* Get current clock rate for HSADC */\n+   rate = Chip_HSADC_GetBaseClockRate(pHSADC);\n+\n+   /* Determine optimal CRS and DCEG settings based on clock rate */\n+   idx = 0;\n+   while (rate > powerSets[idx].minRate) {\n+       idx++;\n+   }\n+\n+   /* Add CRS selection based on clock speed */\n+   orBits = powerSets[idx].crs;\n+\n+   /* Enable 2's complement data format? */\n+   if (comp2) {\n+       orBits |= (1 << 16);\n+   }\n+\n+   /* Update DCEG settings for all channels based on current CRS */\n+   for (i = 0; i < 6; i++) {\n+       Chip_HSADC_SetSpeed(pHSADC, i, powerSets[idx].dgec);\n+   }\n+\n+   /* Get current power control register value and mask off bits that\n+      may change */\n+   val = pHSADC->POWER_CONTROL & ~((1 << 16) | 0xF);\n+\n+   /* Update with new power and data format settings */\n+   pHSADC->POWER_CONTROL = val | orBits;\n+}\n+\n+/* Setup AC-DC coupling selection for a channel */\n+void Chip_HSADC_SetACDCBias(LPC_HSADC_T *pHSADC, uint8_t channel,\n+                           HSADC_DCBIAS_T dcInNeg, HSADC_DCBIAS_T dcInPos)\n+{\n+   uint32_t reg, mask, orBits;\n+\n+   /* Build mask and enable words for selected DCINNEG abd DCINPOS\n+      fields for the selected channel */\n+   mask = ((1 << 4) | (1 << 10)) << channel;\n+   orBits = (((uint32_t) dcInNeg << 4) | ((uint32_t) dcInPos << 10)) << channel;\n+\n+   reg = pHSADC->POWER_CONTROL & ~mask;\n+   pHSADC->POWER_CONTROL = reg | orBits;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/i2c_18xx_43xx.c ./lpc_chip_43xx/src/i2c_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/i2c_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/i2c_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,554 @@\n+/*\n+ * @brief LPC18xx/43xx I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Control flags */\n+#define I2C_CON_FLAGS (I2C_CON_AA | I2C_CON_SI | I2C_CON_STO | I2C_CON_STA)\n+#define LPC_I2Cx(id)      ((i2c[id].ip))\n+#define SLAVE_ACTIVE(iic) (((iic)->flags & 0xFF00) != 0)\n+\n+/* I2C common interface structure */\n+struct i2c_interface {\n+   LPC_I2C_T *ip;      /* IP base address of the I2C device */\n+   CHIP_CCU_CLK_T clk; /* Clock used by I2C */\n+   I2C_EVENTHANDLER_T mEvent;  /* Current active Master event handler */\n+   I2C_EVENTHANDLER_T sEvent;  /* Slave transfer events */\n+   I2C_XFER_T *mXfer;  /* Current active xfer pointer */\n+   I2C_XFER_T *sXfer;  /* Pointer to store xfer when bus is busy */\n+   uint32_t flags;     /* Flags used by I2C master and slave */\n+};\n+\n+/* Slave interface structure */\n+struct i2c_slave_interface {\n+   I2C_XFER_T *xfer;\n+   I2C_EVENTHANDLER_T event;\n+};\n+\n+/* I2C interfaces */\n+static struct i2c_interface i2c[I2C_NUM_INTERFACE] = {\n+   {LPC_I2C0, CLK_APB1_I2C0, Chip_I2C_EventHandler, NULL, NULL, NULL, 0},\n+   {LPC_I2C1, CLK_APB3_I2C1, Chip_I2C_EventHandler, NULL, NULL, NULL, 0}\n+};\n+\n+static struct i2c_slave_interface i2c_slave[I2C_NUM_INTERFACE][I2C_SLAVE_NUM_INTERFACE];\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+STATIC INLINE void enableClk(I2C_ID_T id)\n+{\n+   Chip_Clock_Enable(i2c[id].clk);\n+}\n+\n+STATIC INLINE void disableClk(I2C_ID_T id)\n+{\n+   Chip_Clock_Disable(i2c[id].clk);\n+}\n+\n+/* Get the ADC Clock Rate */\n+STATIC INLINE uint32_t getClkRate(I2C_ID_T id)\n+{\n+   return Chip_Clock_GetRate(i2c[id].clk);\n+}\n+\n+/* Enable I2C and start master transfer */\n+STATIC INLINE void startMasterXfer(LPC_I2C_T *pI2C)\n+{\n+   /* Reset STA, STO, SI */\n+   pI2C->CONCLR = I2C_CON_SI | I2C_CON_STA | I2C_CON_AA;\n+\n+   /* Enter to Master Transmitter mode */\n+   pI2C->CONSET = I2C_CON_I2EN | I2C_CON_STA;\n+}\n+\n+/* Enable I2C and enable slave transfers */\n+STATIC INLINE void startSlaverXfer(LPC_I2C_T *pI2C)\n+{\n+   /* Reset STA, STO, SI */\n+   pI2C->CONCLR = I2C_CON_SI | I2C_CON_STA;\n+\n+   /* Enter to Master Transmitter mode */\n+   pI2C->CONSET = I2C_CON_I2EN | I2C_CON_AA;\n+}\n+\n+/* Check if I2C bus is free */\n+STATIC INLINE int isI2CBusFree(LPC_I2C_T *pI2C)\n+{\n+   return !(pI2C->CONSET & I2C_CON_STO);\n+}\n+\n+/* Get current state of the I2C peripheral */\n+STATIC INLINE int getCurState(LPC_I2C_T *pI2C)\n+{\n+   return (int) (pI2C->STAT & I2C_STAT_CODE_BITMASK);\n+}\n+\n+/* Check if the active state belongs to master mode*/\n+STATIC INLINE int isMasterState(LPC_I2C_T *pI2C)\n+{\n+   return getCurState(pI2C) < 0x60;\n+}\n+\n+/* Set OWN slave address for specific slave ID */\n+STATIC void setSlaveAddr(LPC_I2C_T *pI2C, I2C_SLAVE_ID sid, uint8_t addr, uint8_t mask)\n+{\n+   uint32_t index = (uint32_t) sid - 1;\n+   pI2C->MASK[index] = mask;\n+   if (sid == I2C_SLAVE_0) {\n+       pI2C->ADR0 = addr;\n+   }\n+   else {\n+       volatile uint32_t *abase = &pI2C->ADR1;\n+       abase[index - 1] = addr;\n+   }\n+}\n+\n+/* Match the slave address */\n+STATIC int isSlaveAddrMatching(uint8_t addr1, uint8_t addr2, uint8_t mask)\n+{\n+   mask |= 1;\n+   return (addr1 & ~mask) == (addr2 & ~mask);\n+}\n+\n+/* Get the index of the active slave */\n+STATIC I2C_SLAVE_ID lookupSlaveIndex(LPC_I2C_T *pI2C, uint8_t slaveAddr)\n+{\n+   if (!(slaveAddr >> 1)) {\n+       return I2C_SLAVE_GENERAL;                   /* General call address */\n+   }\n+   if (isSlaveAddrMatching(pI2C->ADR0, slaveAddr, pI2C->MASK[0])) {\n+       return I2C_SLAVE_0;\n+   }\n+   if (isSlaveAddrMatching(pI2C->ADR1, slaveAddr, pI2C->MASK[1])) {\n+       return I2C_SLAVE_1;\n+   }\n+   if (isSlaveAddrMatching(pI2C->ADR2, slaveAddr, pI2C->MASK[2])) {\n+       return I2C_SLAVE_2;\n+   }\n+   if (isSlaveAddrMatching(pI2C->ADR3, slaveAddr, pI2C->MASK[3])) {\n+       return I2C_SLAVE_3;\n+   }\n+\n+   /* If everything is fine the code should never come here */\n+   return I2C_SLAVE_GENERAL;\n+}\n+\n+/* Master transfer state change handler handler */\n+int handleMasterXferState(LPC_I2C_T *pI2C, I2C_XFER_T  *xfer)\n+{\n+   uint32_t cclr = I2C_CON_FLAGS;\n+\n+   switch (getCurState(pI2C)) {\n+   case 0x08:      /* Start condition on bus */\n+   case 0x10:      /* Repeated start condition */\n+       pI2C->DAT = (xfer->slaveAddr << 1) | (xfer->txSz == 0);\n+       break;\n+\n+   /* Tx handling */\n+   case 0x18:      /* SLA+W sent and ACK received */\n+   case 0x28:      /* DATA sent and ACK received */\n+       if (!xfer->txSz) {\n+           cclr &= ~(xfer->rxSz ? I2C_CON_STA : I2C_CON_STO);\n+       }\n+       else {\n+           pI2C->DAT = *xfer->txBuff++;\n+           xfer->txSz--;\n+       }\n+       break;\n+\n+   /* Rx handling */\n+   case 0x58:      /* Data Received and NACK sent */\n+       cclr &= ~I2C_CON_STO;\n+\n+   case 0x50:      /* Data Received and ACK sent */\n+       *xfer->rxBuff++ = pI2C->DAT;\n+       xfer->rxSz--;\n+\n+   case 0x40:      /* SLA+R sent and ACK received */\n+       if (xfer->rxSz > 1) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       break;\n+\n+   /* NAK Handling */\n+   case 0x20:      /* SLA+W sent NAK received */\n+   case 0x48:      /* SLA+R sent NAK received */\n+       xfer->status = I2C_STATUS_SLAVENAK;\n+       cclr &= ~I2C_CON_STO;\n+       break;\n+\n+   case 0x30:      /* DATA sent NAK received */\n+       xfer->status = I2C_STATUS_NAK;\n+       cclr &= ~I2C_CON_STO;\n+       break;\n+\n+   case 0x38:      /* Arbitration lost */\n+       xfer->status = I2C_STATUS_ARBLOST;\n+       break;\n+\n+   /* Bus Error */\n+   case 0x00:\n+       xfer->status = I2C_STATUS_BUSERR;\n+       cclr &= ~I2C_CON_STO;\n+   }\n+\n+   /* Set clear control flags */\n+   pI2C->CONSET = cclr ^ I2C_CON_FLAGS;\n+   pI2C->CONCLR = cclr & ~I2C_CON_STO;\n+\n+   /* If stopped return 0 */\n+   if (!(cclr & I2C_CON_STO) || (xfer->status == I2C_STATUS_ARBLOST)) {\n+       if (xfer->status == I2C_STATUS_BUSY) {\n+           xfer->status = I2C_STATUS_DONE;\n+       }\n+       return 0;\n+   }\n+   return 1;\n+}\n+\n+/* Find the slave address of SLA+W or SLA+R */\n+I2C_SLAVE_ID getSlaveIndex(LPC_I2C_T *pI2C)\n+{\n+   switch (getCurState(pI2C)) {\n+   case 0x60:\n+   case 0x68:\n+   case 0x70:\n+   case 0x78:\n+   case 0xA8:\n+   case 0xB0:\n+       return lookupSlaveIndex(pI2C, pI2C->DAT);\n+   }\n+\n+   /* If everything is fine code should never come here */\n+   return I2C_SLAVE_GENERAL;\n+}\n+\n+/* Slave state machine handler */\n+int handleSlaveXferState(LPC_I2C_T *pI2C, I2C_XFER_T *xfer)\n+{\n+   uint32_t cclr = I2C_CON_FLAGS;\n+   int ret = RET_SLAVE_BUSY;\n+\n+   xfer->status = I2C_STATUS_BUSY;\n+   switch (getCurState(pI2C)) {\n+   case 0x80:      /* SLA: Data received + ACK sent */\n+   case 0x90:      /* GC: Data received + ACK sent */\n+       *xfer->rxBuff++ = pI2C->DAT;\n+       xfer->rxSz--;\n+       ret = RET_SLAVE_RX;\n+       if (xfer->rxSz > 1) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       break;\n+\n+   case 0x60:      /* Own SLA+W received */\n+   case 0x68:      /* Own SLA+W received after losing arbitration */\n+   case 0x70:      /* GC+W received */\n+   case 0x78:      /* GC+W received after losing arbitration */\n+       xfer->slaveAddr = pI2C->DAT & ~1;\n+       if (xfer->rxSz > 1) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       break;\n+\n+   case 0xA8:      /* SLA+R received */\n+   case 0xB0:      /* SLA+R received after losing arbitration */\n+       xfer->slaveAddr = pI2C->DAT & ~1;\n+\n+   case 0xB8:      /* DATA sent and ACK received */\n+       pI2C->DAT = *xfer->txBuff++;\n+       xfer->txSz--;\n+       if (xfer->txSz > 0) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       ret = RET_SLAVE_TX;\n+       break;\n+\n+   case 0xC0:      /* Data transmitted and NAK received */\n+   case 0xC8:      /* Last data transmitted and ACK received */\n+   case 0x88:      /* SLA: Data received + NAK sent */\n+   case 0x98:      /* GC: Data received + NAK sent */\n+   case 0xA0:      /* STOP/Repeated START condition received */\n+       ret = RET_SLAVE_IDLE;\n+       cclr &= ~I2C_CON_AA;\n+       xfer->status = I2C_STATUS_DONE;\n+       if (xfer->slaveAddr & 1) {\n+           cclr &= ~I2C_CON_STA;\n+       }\n+       break;\n+   }\n+\n+   /* Set clear control flags */\n+   pI2C->CONSET = cclr ^ I2C_CON_FLAGS;\n+   pI2C->CONCLR = cclr & ~I2C_CON_STO;\n+\n+   return ret;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+/* Chip event handler interrupt based */\n+void Chip_I2C_EventHandler(I2C_ID_T id, I2C_EVENT_T event)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+   volatile I2C_STATUS_T *stat;\n+\n+   /* Only WAIT event needs to be handled */\n+   if (event != I2C_EVENT_WAIT) {\n+       return;\n+   }\n+\n+   stat = &iic->mXfer->status;\n+   /* Wait for the status to change */\n+   while (*stat == I2C_STATUS_BUSY) {}\n+}\n+\n+/* Chip polling event handler */\n+void Chip_I2C_EventHandlerPolling(I2C_ID_T id, I2C_EVENT_T event)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+   volatile I2C_STATUS_T *stat;\n+\n+   /* Only WAIT event needs to be handled */\n+   if (event != I2C_EVENT_WAIT) {\n+       return;\n+   }\n+\n+   stat = &iic->mXfer->status;\n+   /* Call the state change handler till xfer is done */\n+   while (*stat == I2C_STATUS_BUSY) {\n+       if (Chip_I2C_IsStateChanged(id)) {\n+           Chip_I2C_MasterStateHandler(id);\n+       }\n+   }\n+}\n+\n+/* Initializes the LPC_I2C peripheral with specified parameter */\n+void Chip_I2C_Init(I2C_ID_T id)\n+{\n+   enableClk(id);\n+\n+   /* Set I2C operation to default */\n+   LPC_I2Cx(id)->CONCLR = (I2C_CON_AA | I2C_CON_SI | I2C_CON_STA | I2C_CON_I2EN);\n+}\n+\n+/* De-initializes the I2C peripheral registers to their default reset values */\n+void Chip_I2C_DeInit(I2C_ID_T id)\n+{\n+   /* Disable I2C control */\n+   LPC_I2Cx(id)->CONCLR = I2C_CON_I2EN | I2C_CON_SI | I2C_CON_STA | I2C_CON_AA;\n+\n+   disableClk(id);\n+}\n+\n+/* Set up clock rate for LPC_I2C peripheral */\n+void Chip_I2C_SetClockRate(I2C_ID_T id, uint32_t clockrate)\n+{\n+   uint32_t SCLValue;\n+\n+   SCLValue = (getClkRate(id) / clockrate);\n+   LPC_I2Cx(id)->SCLH = (uint32_t) (SCLValue >> 1);\n+   LPC_I2Cx(id)->SCLL = (uint32_t) (SCLValue - LPC_I2Cx(id)->SCLH);\n+}\n+\n+/* Get current clock rate for LPC_I2C peripheral */\n+uint32_t Chip_I2C_GetClockRate(I2C_ID_T id)\n+{\n+   return getClkRate(id) / (LPC_I2Cx(id)->SCLH + LPC_I2Cx(id)->SCLL);\n+}\n+\n+/* Set the master event handler */\n+int Chip_I2C_SetMasterEventHandler(I2C_ID_T id, I2C_EVENTHANDLER_T event)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+   if (!iic->mXfer) {\n+       iic->mEvent = event;\n+   }\n+   return iic->mEvent == event;\n+}\n+\n+/* Get the master event handler */\n+I2C_EVENTHANDLER_T Chip_I2C_GetMasterEventHandler(I2C_ID_T id)\n+{\n+   return i2c[id].mEvent;\n+}\n+\n+/* Transmit and Receive data in master mode */\n+int Chip_I2C_MasterTransfer(I2C_ID_T id, I2C_XFER_T *xfer)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+\n+   iic->mEvent(id, I2C_EVENT_LOCK);\n+   xfer->status = I2C_STATUS_BUSY;\n+   iic->mXfer = xfer;\n+\n+   /* If slave xfer not in progress */\n+   if (!iic->sXfer) {\n+       startMasterXfer(iic->ip);\n+   }\n+   iic->mEvent(id, I2C_EVENT_WAIT);\n+   iic->mXfer = 0;\n+\n+   /* Wait for stop condition to appear on bus */\n+   while (!isI2CBusFree(iic->ip)) {}\n+\n+   /* Start slave if one is active */\n+   if (SLAVE_ACTIVE(iic)) {\n+       startSlaverXfer(iic->ip);\n+   }\n+\n+   iic->mEvent(id, I2C_EVENT_UNLOCK);\n+   return (int) xfer->status;\n+}\n+\n+/* Master tx only */\n+int Chip_I2C_MasterSend(I2C_ID_T id, uint8_t slaveAddr, const uint8_t *buff, uint8_t len)\n+{\n+   I2C_XFER_T xfer = {0};\n+   xfer.slaveAddr = slaveAddr;\n+   xfer.txBuff = buff;\n+   xfer.txSz = len;\n+   while (Chip_I2C_MasterTransfer(id, &xfer) == I2C_STATUS_ARBLOST) {}\n+   return len - xfer.txSz;\n+}\n+\n+/* Transmit one byte and receive an array of bytes after a repeated start condition is generated in Master mode.\n+ * This function is useful for communicating with the I2C slave registers\n+ */\n+int Chip_I2C_MasterCmdRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t cmd, uint8_t *buff, int len)\n+{\n+   I2C_XFER_T xfer = {0};\n+   xfer.slaveAddr = slaveAddr;\n+   xfer.txBuff = &cmd;\n+   xfer.txSz = 1;\n+   xfer.rxBuff = buff;\n+   xfer.rxSz = len;\n+   while (Chip_I2C_MasterTransfer(id, &xfer) == I2C_STATUS_ARBLOST) {}\n+   return len - xfer.rxSz;\n+}\n+\n+/* Sequential master read */\n+int Chip_I2C_MasterRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t *buff, int len)\n+{\n+   I2C_XFER_T xfer = {0};\n+   xfer.slaveAddr = slaveAddr;\n+   xfer.rxBuff = buff;\n+   xfer.rxSz = len;\n+   while (Chip_I2C_MasterTransfer(id, &xfer) == I2C_STATUS_ARBLOST) {}\n+   return len - xfer.rxSz;\n+}\n+\n+/* Check if master state is active */\n+int Chip_I2C_IsMasterActive(I2C_ID_T id)\n+{\n+   return isMasterState(i2c[id].ip);\n+}\n+\n+/* State change handler for master transfer */\n+void Chip_I2C_MasterStateHandler(I2C_ID_T id)\n+{\n+   if (!handleMasterXferState(i2c[id].ip, i2c[id].mXfer)) {\n+       i2c[id].mEvent(id, I2C_EVENT_DONE);\n+   }\n+}\n+\n+/* Setup slave function */\n+void Chip_I2C_SlaveSetup(I2C_ID_T id,\n+                        I2C_SLAVE_ID sid,\n+                        I2C_XFER_T *xfer,\n+                        I2C_EVENTHANDLER_T event,\n+                        uint8_t addrMask)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+   struct i2c_slave_interface *si2c = &i2c_slave[id][sid];\n+   si2c->xfer = xfer;\n+   si2c->event = event;\n+\n+   /* Set up the slave address */\n+   if (sid != I2C_SLAVE_GENERAL) {\n+       setSlaveAddr(iic->ip, sid, xfer->slaveAddr, addrMask);\n+   }\n+\n+   if (!SLAVE_ACTIVE(iic) && !iic->mXfer) {\n+       startSlaverXfer(iic->ip);\n+   }\n+   iic->flags |= 1 << (sid + 8);\n+}\n+\n+/* I2C Slave event handler */\n+void Chip_I2C_SlaveStateHandler(I2C_ID_T id)\n+{\n+   int ret;\n+   struct i2c_interface *iic = &i2c[id];\n+\n+   /* Get the currently addressed slave */\n+   if (!iic->sXfer) {\n+       struct i2c_slave_interface *si2c;\n+\n+       I2C_SLAVE_ID sid = getSlaveIndex(iic->ip);\n+       si2c = &i2c_slave[id][sid];\n+       iic->sXfer = si2c->xfer;\n+       iic->sEvent = si2c->event;\n+   }\n+\n+   iic->sXfer->slaveAddr |= iic->mXfer != 0;\n+   ret = handleSlaveXferState(iic->ip, iic->sXfer);\n+   if (ret) {\n+       if (iic->sXfer->status == I2C_STATUS_DONE) {\n+           iic->sXfer = 0;\n+       }\n+       iic->sEvent(id, (I2C_EVENT_T) ret);\n+   }\n+}\n+\n+/* Disable I2C device */\n+void Chip_I2C_Disable(I2C_ID_T id)\n+{\n+   LPC_I2Cx(id)->CONCLR = I2C_I2CONCLR_I2ENC;\n+}\n+\n+/* State change checking */\n+int Chip_I2C_IsStateChanged(I2C_ID_T id)\n+{\n+   return (LPC_I2Cx(id)->CONSET & I2C_CON_SI) != 0;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/i2cm_18xx_43xx.c ./lpc_chip_43xx/src/i2cm_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/i2cm_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/i2cm_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,265 @@\n+/*\n+ * @brief LPC18xx/43xx I2C master driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Control flags */\n+#define I2C_CON_FLAGS (I2C_CON_AA | I2C_CON_SI | I2C_CON_STO | I2C_CON_STA)\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+/* Get the ADC Clock Rate */\n+static CHIP_CCU_CLK_T i2cm_getClkId(LPC_I2C_T *pI2C)\n+{\n+   return (pI2C == LPC_I2C0)? CLK_APB1_I2C0 : CLK_APB3_I2C1;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the LPC_I2C peripheral with specified parameter */\n+void Chip_I2CM_Init(LPC_I2C_T *pI2C)\n+{\n+   /* Enable I2C clock */\n+   Chip_Clock_Enable(i2cm_getClkId(pI2C));\n+   /* Reset I2C state machine */\n+   Chip_I2CM_ResetControl(pI2C);\n+}\n+\n+/* De-initializes the I2C peripheral registers to their default reset values */\n+void Chip_I2CM_DeInit(LPC_I2C_T *pI2C)\n+{\n+   /* Reset I2C state machine */\n+   Chip_I2CM_ResetControl(pI2C);\n+   /* Disable I2C clock */\n+   Chip_Clock_Disable(i2cm_getClkId(pI2C));\n+}\n+\n+/* Set up bus speed for LPC_I2C interface */\n+void Chip_I2CM_SetBusSpeed(LPC_I2C_T *pI2C, uint32_t busSpeed)\n+{\n+   uint32_t clockDiv = (Chip_Clock_GetRate(i2cm_getClkId(pI2C)) / busSpeed);\n+\n+   Chip_I2CM_SetDutyCycle(pI2C, (clockDiv >> 1), (clockDiv - (clockDiv >> 1)));\n+}\n+\n+/* Master transfer state change handler handler */\n+uint32_t Chip_I2CM_XferHandler(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+   uint32_t cclr = I2C_CON_FLAGS;\n+\n+   switch (Chip_I2CM_GetCurState(pI2C)) {\n+   case 0x08:      /* Start condition on bus */\n+   case 0x10:      /* Repeated start condition */\n+       pI2C->DAT = (xfer->slaveAddr << 1) | (xfer->txSz == 0);\n+       break;\n+\n+   /* Tx handling */\n+   case 0x20:      /* SLA+W sent NAK received */\n+   case 0x30:      /* DATA sent NAK received */\n+       if ((xfer->options & I2CM_XFER_OPTION_IGNORE_NACK) == 0) {\n+           xfer->status = I2CM_STATUS_NAK;\n+           cclr &= ~I2C_CON_STO;\n+           break;\n+       }\n+\n+   case 0x18:      /* SLA+W sent and ACK received */\n+   case 0x28:      /* DATA sent and ACK received */\n+       if (!xfer->txSz) {\n+           if (xfer->rxSz) {\n+               cclr &= ~I2C_CON_STA;\n+           }\n+           else {\n+               xfer->status = I2CM_STATUS_OK;\n+               cclr &= ~I2C_CON_STO;\n+           }\n+\n+       }\n+       else {\n+           pI2C->DAT = *xfer->txBuff++;\n+           xfer->txSz--;\n+       }\n+       break;\n+\n+   /* Rx handling */\n+   case 0x58:      /* Data Received and NACK sent */\n+   case 0x50:      /* Data Received and ACK sent */\n+       *xfer->rxBuff++ = pI2C->DAT;\n+       xfer->rxSz--;\n+\n+   case 0x40:      /* SLA+R sent and ACK received */\n+       if ((xfer->rxSz > 1) || (xfer->options & I2CM_XFER_OPTION_LAST_RX_ACK)) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       if (xfer->rxSz == 0) {\n+           xfer->status = I2CM_STATUS_OK;\n+           cclr &= ~I2C_CON_STO;\n+       }\n+       break;\n+\n+   /* NAK Handling */\n+   case 0x48:      /* SLA+R sent NAK received */\n+       xfer->status = I2CM_STATUS_SLAVE_NAK;\n+       cclr &= ~I2C_CON_STO;\n+       break;\n+\n+   case 0x38:      /* Arbitration lost */\n+       xfer->status = I2CM_STATUS_ARBLOST;\n+       break;\n+\n+   case 0x00:      /* Bus Error */\n+       xfer->status = I2CM_STATUS_BUS_ERROR;\n+       cclr &= ~I2C_CON_STO;\n+        break;\n+    default:\n+       xfer->status = I2CM_STATUS_ERROR;\n+       cclr &= ~I2C_CON_STO;\n+        break;\n+   }\n+\n+   /* Set clear control flags */\n+   pI2C->CONSET = cclr ^ I2C_CON_FLAGS;\n+   /* Stop flag should not be cleared as it is a reserved bit */\n+   pI2C->CONCLR = cclr & (I2C_CON_AA | I2C_CON_SI | I2C_CON_STA);\n+\n+   return xfer->status != I2CM_STATUS_BUSY;\n+}\n+\n+/* Transmit and Receive data in master mode */\n+void Chip_I2CM_Xfer(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+   /* set the transfer status as busy */\n+   xfer->status = I2CM_STATUS_BUSY;\n+   /* Clear controller state. */\n+   Chip_I2CM_ResetControl(pI2C);\n+   /* Enter to Master Transmitter mode */\n+   Chip_I2CM_SendStart(pI2C);\n+}\n+\n+/* Transmit and Receive data in master mode */\n+uint32_t Chip_I2CM_XferBlocking(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+   uint32_t ret = 0;\n+   /* start transfer */\n+   Chip_I2CM_Xfer(pI2C, xfer);\n+\n+   while (ret == 0) {\n+       /* wait for status change interrupt */\n+       while ( Chip_I2CM_StateChanged(pI2C) == 0) {}\n+       /* call state change handler */\n+       ret = Chip_I2CM_XferHandler(pI2C, xfer);\n+   }\n+   return ret;\n+}\n+\n+/* Master tx only */\n+uint32_t Chip_I2CM_Write(LPC_I2C_T *pI2C, const uint8_t *buff, uint32_t len)\n+{\n+   uint32_t txLen = 0, err = 0;\n+\n+   /* clear state change interrupt status */\n+   Chip_I2CM_ClearSI(pI2C);\n+   /* generate START condition */\n+   Chip_I2CM_SendStart(pI2C);\n+\n+   while ((txLen < len) && (err == 0)) {\n+       /* wait for status change interrupt */\n+       while ( Chip_I2CM_StateChanged(pI2C) == 0) {}\n+\n+       /* check status and send data */\n+       switch (Chip_I2CM_GetCurState(pI2C)) {\n+       case 0x08:      /* Start condition on bus */\n+       case 0x10:      /* Repeated start condition */\n+       case 0x18:      /* SLA+W sent and ACK received */\n+       case 0x28:      /* DATA sent and ACK received */\n+           Chip_I2CM_WriteByte(pI2C, buff[txLen++]);\n+           break;\n+\n+       case 0x38:      /* Arbitration lost */\n+           break;\n+\n+       default:        /* we shouldn't be in any other state */\n+           err = 1;\n+           break;\n+       }\n+       /* clear state change interrupt status */\n+       Chip_I2CM_ClearSI(pI2C);\n+   }\n+\n+   return txLen;\n+}\n+\n+/* Sequential master read */\n+uint32_t Chip_I2CM_Read(LPC_I2C_T *pI2C, uint8_t *buff, uint32_t len)\n+{\n+   uint32_t rxLen = 0, err = 0;\n+\n+   /* clear state change interrupt status */\n+   Chip_I2CM_ClearSI(pI2C);\n+   /* generate START condition and auto-ack data received */\n+   pI2C->CONSET = I2C_CON_AA | I2C_CON_STA;\n+\n+   while ((rxLen < len) && (err == 0)) {\n+       /* wait for status change interrupt */\n+       while ( Chip_I2CM_StateChanged(pI2C) == 0) {}\n+\n+       /* check status and send data */\n+       switch (Chip_I2CM_GetCurState(pI2C)) {\n+       case 0x08:      /* Start condition on bus */\n+       case 0x10:      /* Repeated start condition */\n+       case 0x40:      /* SLA+R sent and ACK received */\n+       case 0x50:      /* Data Received and ACK sent */\n+           buff[rxLen++] = Chip_I2CM_ReadByte(pI2C);\n+           break;\n+\n+       case 0x38:      /* Arbitration lost */\n+           break;\n+\n+       default:        /* we shouldn't be in any other state */\n+           err = 1;\n+           break;\n+       }\n+       /* clear state change interrupt status */\n+       Chip_I2CM_ClearSI(pI2C);\n+   }\n+\n+   return rxLen;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/i2s_18xx_43xx.c ./lpc_chip_43xx/src/i2s_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/i2s_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/i2s_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,258 @@\n+/*\n+ * @brief LPC18xx/43xx I2S driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Get divider value */\n+STATIC Status getClkDiv(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format, uint16_t *pxDiv, uint16_t *pyDiv, uint32_t *pN)\n+{\n+   uint32_t pClk;\n+   uint32_t x, y;\n+   uint64_t divider;\n+   uint16_t dif;\n+   uint16_t xDiv = 0, yDiv = 0;\n+   uint32_t N;\n+   uint16_t err, ErrorOptimal = 0xFFFF;\n+\n+   pClk = Chip_Clock_GetRate(CLK_APB1_I2S);\n+\n+   /* divider is a fixed point number with 16 fractional bits */\n+   divider = (((uint64_t) (format->SampleRate) * 2 * (format->WordWidth) * 2) << 16) / pClk;\n+   /* find N that make x/y <= 1 -> divider <= 2^16 */\n+   for (N = 64; N > 0; N--) {\n+       if ((divider * N) < (1 << 16)) {\n+           break;\n+       }\n+   }\n+   if (N == 0) {\n+       return ERROR;\n+   }\n+   divider *= N;\n+   for (y = 255; y > 0; y--) {\n+       x = y * divider;\n+       if (x & (0xFF000000)) {\n+           continue;\n+       }\n+       dif = x & 0xFFFF;\n+       if (dif > 0x8000) {\n+           err = 0x10000 - dif;\n+       }\n+       else {\n+           err = dif;\n+       }\n+       if (err == 0) {\n+           yDiv = y;\n+           break;\n+       }\n+       else if (err < ErrorOptimal) {\n+           ErrorOptimal = err;\n+           yDiv = y;\n+       }\n+   }\n+   xDiv = ((uint64_t) yDiv * (format->SampleRate) * 2 * (format->WordWidth) * N * 2) / pClk;\n+   if (xDiv >= 256) {\n+       xDiv = 0xFF;\n+   }\n+   if (xDiv == 0) {\n+       xDiv = 1;\n+   }\n+\n+   *pxDiv = xDiv;\n+   *pyDiv = yDiv;\n+   *pN = N;\n+   return SUCCESS;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the I2S interface */\n+void Chip_I2S_Init(LPC_I2S_T *pI2S)\n+{\n+   Chip_Clock_Enable(CLK_APB1_I2S);\n+}\n+\n+/* Shutdown I2S */\n+void Chip_I2S_DeInit(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI = 0x07E1;\n+   pI2S->DAO = 0x87E1;\n+   pI2S->IRQ = 0;\n+   pI2S->TXMODE = 0;\n+   pI2S->RXMODE = 0;\n+   pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] = 0;\n+   pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] = 0;\n+   Chip_Clock_Disable(CLK_APB1_I2S);\n+}\n+\n+/* Configure I2S for Audio Format input */\n+Status Chip_I2S_TxConfig(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format)\n+{\n+   uint32_t temp;\n+   uint16_t xDiv, yDiv;\n+   uint32_t N;\n+\n+   if (getClkDiv(pI2S, format, &xDiv, &yDiv, &N) == ERROR) {\n+       return ERROR;\n+   }\n+\n+   temp = pI2S->DAO & (~(I2S_DAO_WORDWIDTH_MASK | I2S_DAO_MONO | I2S_DAO_SLAVE | I2S_DAO_WS_HALFPERIOD_MASK));\n+   if (format->WordWidth <= 8) {\n+       temp |= I2S_WORDWIDTH_8;\n+   }\n+   else if (format->WordWidth <= 16) {\n+       temp |= I2S_WORDWIDTH_16;\n+   }\n+   else {\n+       temp |= I2S_WORDWIDTH_32;\n+   }\n+\n+   temp |= (format->ChannelNumber) == 1 ? I2S_MONO : I2S_STEREO;\n+   temp |= I2S_MASTER_MODE;\n+   temp |= I2S_DAO_WS_HALFPERIOD(format->WordWidth - 1);\n+   pI2S->DAO = temp;\n+   pI2S->TXMODE = I2S_TXMODE_CLKSEL(0);\n+   pI2S->TXBITRATE = N - 1;\n+   pI2S->TXRATE = yDiv | (xDiv << 8);\n+   return SUCCESS;\n+}\n+\n+/* Configure I2S for Audio Format input */\n+Status Chip_I2S_RxConfig(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format)\n+{\n+   uint32_t temp;\n+   uint16_t xDiv, yDiv;\n+   uint32_t N;\n+\n+   if (getClkDiv(pI2S, format, &xDiv, &yDiv, &N) == ERROR) {\n+       return ERROR;\n+   }\n+   temp = pI2S->DAI & (~(I2S_DAI_WORDWIDTH_MASK | I2S_DAI_MONO | I2S_DAI_SLAVE | I2S_DAI_WS_HALFPERIOD_MASK));\n+   if (format->WordWidth <= 8) {\n+       temp |= I2S_WORDWIDTH_8;\n+   }\n+   else if (format->WordWidth <= 16) {\n+       temp |= I2S_WORDWIDTH_16;\n+   }\n+   else {\n+       temp |= I2S_WORDWIDTH_32;\n+   }\n+\n+   temp |= (format->ChannelNumber) == 1 ? I2S_MONO : I2S_STEREO;\n+   temp |= I2S_MASTER_MODE;\n+   temp |= I2S_DAI_WS_HALFPERIOD(format->WordWidth - 1);\n+   pI2S->DAI = temp;\n+   pI2S->RXMODE = I2S_RXMODE_CLKSEL(0);\n+   pI2S->RXBITRATE = N - 1;\n+   pI2S->RXRATE = yDiv | (xDiv << 8);\n+   return SUCCESS;\n+}\n+\n+/* Enable/Disable Interrupt with a specific FIFO depth */\n+void Chip_I2S_Int_TxCmd(LPC_I2S_T *pI2S, FunctionalState newState, uint8_t depth)\n+{\n+   uint32_t temp;\n+   depth &= 0x0F;\n+   if (newState == ENABLE) {\n+       temp = pI2S->IRQ & (~I2S_IRQ_TX_DEPTH_MASK);\n+       pI2S->IRQ = temp | (I2S_IRQ_TX_DEPTH(depth));\n+       pI2S->IRQ |= 0x02;\n+   }\n+   else {\n+       pI2S->IRQ &= (~0x02);\n+   }\n+}\n+\n+/* Enable/Disable Interrupt with a specific FIFO depth */\n+void Chip_I2S_Int_RxCmd(LPC_I2S_T *pI2S, FunctionalState newState, uint8_t depth)\n+{\n+   uint32_t temp;\n+   depth &= 0x0F;\n+   if (newState == ENABLE) {\n+       temp = pI2S->IRQ & (~I2S_IRQ_RX_DEPTH_MASK);\n+       pI2S->IRQ = temp | (I2S_IRQ_RX_DEPTH(depth));\n+       pI2S->IRQ |= 0x01;\n+   }\n+   else {\n+       pI2S->IRQ &= (~0x01);\n+   }\n+}\n+\n+/* Enable/Disable DMA with a specific FIFO depth */\n+void Chip_I2S_DMA_TxCmd(LPC_I2S_T *pI2S,\n+                       I2S_DMA_CHANNEL_T dmaNum,\n+                       FunctionalState newState,\n+                       uint8_t depth)\n+{\n+   /* Enable/Disable I2S transmit*/\n+   if (newState == ENABLE) {\n+       /* Set FIFO Level */\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] &= ~(0x0F << 16);\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] |= depth << 16;\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] |= 0x02;\n+   }\n+   else {\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] &= ~0x02;\n+   }\n+}\n+\n+/* Enable/Disable DMA with a specific FIFO depth */\n+void Chip_I2S_DMA_RxCmd(LPC_I2S_T *pI2S,\n+                       I2S_DMA_CHANNEL_T dmaNum,\n+                       FunctionalState newState,\n+                       uint8_t depth)\n+{\n+\n+   /* Enable/Disable I2S Receive */\n+   if (newState == ENABLE) {\n+       /* Set FIFO Level */\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] &= ~(0x0F << 8);\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] |= depth << 8;\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] |= 0x01;\n+   }\n+   else {\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] &= ~0x01;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/iap_18xx_43xx.c ./lpc_chip_43xx/src/iap_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/iap_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/iap_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,191 @@\n+/*\n+ * @brief Common FLASH IAP support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Prepare sector for write operation */\n+uint8_t Chip_IAP_PreSectorForReadWrite(uint32_t strSector, uint32_t endSector, uint8_t flashBank)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_PREWRRITE_CMD;\n+   command[1] = strSector;\n+   command[2] = endSector;\n+   command[3] = flashBank;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Copy RAM to flash */\n+uint8_t Chip_IAP_CopyRamToFlash(uint32_t dstAdd, uint32_t *srcAdd, uint32_t byteswrt)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_WRISECTOR_CMD;\n+   command[1] = dstAdd;\n+   command[2] = (uint32_t) srcAdd;\n+   command[3] = byteswrt;\n+   command[4] = SystemCoreClock / 1000;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Erase sector */\n+uint8_t Chip_IAP_EraseSector(uint32_t strSector, uint32_t endSector, uint8_t flashBank)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_ERSSECTOR_CMD;\n+   command[1] = strSector;\n+   command[2] = endSector;\n+   command[3] = SystemCoreClock / 1000;\n+   command[4] = flashBank;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Blank check sector */\n+uint8_t Chip_IAP_BlankCheckSector(uint32_t strSector, uint32_t endSector, uint8_t flashBank)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_BLANK_CHECK_SECTOR_CMD;\n+   command[1] = strSector;\n+   command[2] = endSector;\n+   command[3] = flashBank;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Read part identification number */\n+uint32_t Chip_IAP_ReadPID()\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_REPID_CMD;\n+   iap_entry(command, result);\n+\n+   return result[1];\n+}\n+\n+/* Read boot code version number */\n+uint8_t Chip_IAP_ReadBootCode()\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_READ_BOOT_CODE_CMD;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* IAP compare */\n+uint8_t Chip_IAP_Compare(uint32_t dstAdd, uint32_t srcAdd, uint32_t bytescmp)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_COMPARE_CMD;\n+   command[1] = dstAdd;\n+   command[2] = srcAdd;\n+   command[3] = bytescmp;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Reinvoke ISP */\n+uint8_t Chip_IAP_ReinvokeISP()\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_REINVOKE_ISP_CMD;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Read the unique ID */\n+uint32_t Chip_IAP_ReadUID()\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_READ_UID_CMD;\n+   iap_entry(command, result);\n+\n+   return result[1];\n+}\n+\n+/* Erase page */\n+uint8_t Chip_IAP_ErasePage(uint32_t strPage, uint32_t endPage)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_ERASE_PAGE_CMD;\n+   command[1] = strPage;\n+   command[2] = endPage;\n+   command[3] = SystemCoreClock / 1000;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Set active boot flash bank */\n+uint8_t Chip_IAP_SetBootFlashBank(uint8_t bankNum)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_SET_BOOT_FLASH;\n+   command[1] = bankNum;\n+   command[2] = SystemCoreClock / 1000;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/lcd_18xx_43xx.c ./lpc_chip_43xx/src/lcd_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/lcd_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/lcd_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,206 @@\n+/*\n+ * @brief LPC18xx/43xx LCD chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+static LCD_CURSOR_SIZE_OPT_T LCD_Cursor_Size = LCD_CURSOR_64x64;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the LCD controller */\n+void Chip_LCD_Init(LPC_LCD_T *pLCD, LCD_CONFIG_T *LCD_ConfigStruct)\n+{\n+   uint32_t i, regValue, *pPal;\n+   uint32_t pcd;\n+\n+   /* Enable LCD Clock */\n+   Chip_Clock_EnableOpts(CLK_MX_LCD, true, true, 1);\n+\n+   /* disable the display */\n+   pLCD->CTRL &= ~CLCDC_LCDCTRL_ENABLE;\n+\n+   /* Setting LCD_TIMH register */\n+   regValue = ( ((((LCD_ConfigStruct->PPL / 16) - 1) & 0x3F) << 2)\n+                |         (( (LCD_ConfigStruct->HSW - 1)    & 0xFF) << 8)\n+                |         (( (LCD_ConfigStruct->HFP - 1)    & 0xFF) << 16)\n+                |         (( (LCD_ConfigStruct->HBP - 1)    & 0xFF) << 24) );\n+   pLCD->TIMH = regValue;\n+\n+   /* Setting LCD_TIMV register */\n+   regValue = ((((LCD_ConfigStruct->LPP - 1) & 0x3FF) << 0)\n+               |        (((LCD_ConfigStruct->VSW - 1) & 0x03F) << 10)\n+               |        (((LCD_ConfigStruct->VFP - 1) & 0x0FF) << 16)\n+               |        (((LCD_ConfigStruct->VBP - 1) & 0x0FF) << 24) );\n+   pLCD->TIMV = regValue;\n+\n+   /* Generate the clock and signal polarity control word */\n+   regValue = 0;\n+   regValue = (((LCD_ConfigStruct->ACB - 1) & 0x1F) << 6);\n+   regValue |= (LCD_ConfigStruct->IOE & 1) << 14;\n+   regValue |= (LCD_ConfigStruct->IPC & 1) << 13;\n+   regValue |= (LCD_ConfigStruct->IHS & 1) << 12;\n+   regValue |= (LCD_ConfigStruct->IVS & 1) << 11;\n+\n+   /* Compute clocks per line based on panel type */\n+   switch (LCD_ConfigStruct->LCD) {\n+   case LCD_MONO_4:\n+       regValue |= ((((LCD_ConfigStruct->PPL / 4) - 1) & 0x3FF) << 16);\n+       break;\n+\n+   case LCD_MONO_8:\n+       regValue |= ((((LCD_ConfigStruct->PPL / 8) - 1) & 0x3FF) << 16);\n+       break;\n+\n+   case LCD_CSTN:\n+       regValue |= (((((LCD_ConfigStruct->PPL * 3) / 8) - 1) & 0x3FF) << 16);\n+       break;\n+\n+   case LCD_TFT:\n+   default:\n+       regValue |=  /*1<<26 |*/ (((LCD_ConfigStruct->PPL - 1) & 0x3FF) << 16);\n+   }\n+\n+   /* panel clock divisor */\n+   pcd = 5;// LCD_ConfigStruct->pcd;   // TODO: should be calculated from LCDDCLK\n+   pcd &= 0x3FF;\n+   regValue |=  ((pcd >> 5) << 27) | ((pcd) & 0x1F);\n+   pLCD->POL = regValue;\n+\n+   /* disable interrupts */\n+   pLCD->INTMSK = 0;\n+\n+   /* set bits per pixel */\n+   regValue = LCD_ConfigStruct->BPP << 1;\n+\n+   /* set color format RGB */\n+   regValue |= LCD_ConfigStruct->color_format << 8;\n+   regValue |= LCD_ConfigStruct->LCD << 4;\n+   if (LCD_ConfigStruct->Dual == 1) {\n+       regValue |= 1 << 7;\n+   }\n+   pLCD->CTRL = regValue;\n+\n+   /* clear palette */\n+   pPal = (uint32_t *) (&(pLCD->PAL));\n+   for (i = 0; i < 128; i++) {\n+       *pPal = 0;\n+       pPal++;\n+   }\n+}\n+\n+/* Shutdown the LCD controller */\n+void Chip_LCD_DeInit(LPC_LCD_T *pLCD)\n+{\n+   Chip_Clock_Disable(CLK_MX_LCD);\n+}\n+\n+/* Configure Cursor */\n+void Chip_LCD_Cursor_Config(LPC_LCD_T *pLCD, LCD_CURSOR_SIZE_OPT_T cursor_size, bool sync)\n+{\n+   LCD_Cursor_Size = cursor_size;\n+   pLCD->CRSR_CFG = ((sync ? 1 : 0) << 1) | cursor_size;\n+}\n+\n+/* Write Cursor Image into Internal Cursor Image Buffer */\n+void Chip_LCD_Cursor_WriteImage(LPC_LCD_T *pLCD, uint8_t cursor_num, void *Image)\n+{\n+   int i, j;\n+   uint32_t *fifoptr, *crsr_ptr = (uint32_t *) Image;\n+\n+   /* Check if Cursor Size was configured as 32x32 or 64x64*/\n+   if (LCD_Cursor_Size == LCD_CURSOR_32x32) {\n+       i = cursor_num * 64;\n+       j = i + 64;\n+   }\n+   else {\n+       i = 0;\n+       j = 256;\n+   }\n+   fifoptr = (void *) &(pLCD->CRSR_IMG[0]);\n+\n+   /* Copy Cursor Image content to FIFO */\n+   for (; i < j; i++) {\n+\n+       *fifoptr = *crsr_ptr;\n+       crsr_ptr++;\n+       fifoptr++;\n+   }\n+}\n+\n+/* Load LCD Palette */\n+void Chip_LCD_LoadPalette(LPC_LCD_T *pLCD, void *palette)\n+{\n+   LCD_PALETTE_ENTRY_T pal_entry = {0};\n+   uint8_t i, *pal_ptr;\n+   /* This function supports loading of the color palette from\n+      the C file generated by the bmp2c utility. It expects the\n+      palette to be passed as an array of 32-bit BGR entries having\n+      the following format:\n+      2:0 - Not used\n+      7:3 - Blue\n+      10:8 - Not used\n+      15:11 - Green\n+      18:16 - Not used\n+      23:19 - Red\n+      31:24 - Not used\n+      arg = pointer to input palette table address */\n+   pal_ptr = (uint8_t *) palette;\n+\n+   /* 256 entry in the palette table */\n+   for (i = 0; i < 256 / 2; i++) {\n+       pal_entry.Bl = (*pal_ptr++) >> 3;   /* blue first */\n+       pal_entry.Gl = (*pal_ptr++) >> 3;   /* get green */\n+       pal_entry.Rl = (*pal_ptr++) >> 3;   /* get red */\n+       pal_ptr++;  /* skip over the unused byte */\n+       /* do the most significant halfword of the palette */\n+       pal_entry.Bu = (*pal_ptr++) >> 3;   /* blue first */\n+       pal_entry.Gu = (*pal_ptr++) >> 3;   /* get green */\n+       pal_entry.Ru = (*pal_ptr++) >> 3;   /* get red */\n+       pal_ptr++;  /* skip over the unused byte */\n+\n+       pLCD->PAL[i] = *((uint32_t *)&pal_entry);\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/otp_18xx_43xx.c ./lpc_chip_43xx/src/otp_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/otp_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/otp_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,145 @@\n+/*\n+ * @brief LPC18xx/43xx OTP Controller driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define BOOTROM_BASE            0x10400100\n+#define OTP_API_TABLE_OFFSET    0x1\n+\n+static unsigned long *BOOTROM_API_TABLE;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+static uint32_t (*Otp_ProgBootSrc)(CHIP_OTP_BOOT_SRC_T BootSrc);\n+static uint32_t (*Otp_ProgJTAGDis)(void);\n+static uint32_t (*Otp_ProgUSBID)(uint32_t ProductID, uint32_t VendorID);\n+static uint32_t (*Otp_ProgGP0)(uint32_t Data, uint32_t Mask);\n+static uint32_t (*Otp_ProgGP1)(uint32_t Data, uint32_t Mask);\n+static uint32_t (*Otp_ProgGP2)(uint32_t Data, uint32_t Mask);\n+static uint32_t (*Otp_ProgKey1)(uint8_t *key);\n+static uint32_t (*Otp_ProgKey2)(uint8_t *key);\n+static uint32_t (*Otp_GenRand)(void);\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* CHIP OTP Initialisation function */\n+uint32_t Chip_OTP_Init(void)\n+{\n+   uint32_t (*ROM_otp_Init)(void);\n+\n+   BOOTROM_API_TABLE = *((unsigned long * *) BOOTROM_BASE + OTP_API_TABLE_OFFSET);\n+\n+   ROM_otp_Init      = (uint32_t (*)(void))BOOTROM_API_TABLE[0];\n+   Otp_ProgBootSrc   = (uint32_t (*)(CHIP_OTP_BOOT_SRC_T BootSrc))BOOTROM_API_TABLE[1];\n+   Otp_ProgJTAGDis   = (uint32_t (*)(void))BOOTROM_API_TABLE[2];\n+   Otp_ProgUSBID     = (uint32_t (*)(uint32_t ProductID, uint32_t VendorID))BOOTROM_API_TABLE[3];\n+   Otp_ProgGP0       = (uint32_t (*)(uint32_t Data, uint32_t Mask))BOOTROM_API_TABLE[8];\n+   Otp_ProgGP1       = (uint32_t (*)(uint32_t Data, uint32_t Mask))BOOTROM_API_TABLE[9];\n+   Otp_ProgGP2       = (uint32_t (*)(uint32_t Data, uint32_t Mask))BOOTROM_API_TABLE[10];\n+   Otp_ProgKey1      = (uint32_t (*)(uint8_t *key))BOOTROM_API_TABLE[11];\n+   Otp_ProgKey2      = (uint32_t (*)(uint8_t *key))BOOTROM_API_TABLE[12];\n+   Otp_GenRand       = (uint32_t (*)(void))BOOTROM_API_TABLE[13];\n+\n+   return ROM_otp_Init();\n+}\n+\n+/* Program boot source in OTP Controller */\n+uint32_t Chip_OTP_ProgBootSrc(CHIP_OTP_BOOT_SRC_T BootSrc)\n+{\n+   return Otp_ProgBootSrc(BootSrc);\n+}\n+\n+/* Program the JTAG bit in OTP Controller */\n+uint32_t Chip_OTP_ProgJTAGDis(void)\n+{\n+   return Otp_ProgJTAGDis();\n+}\n+\n+/* Program USB ID in OTP Controller */\n+uint32_t Chip_OTP_ProgUSBID(uint32_t ProductID, uint32_t VendorID)\n+{\n+   return Otp_ProgUSBID(ProductID, VendorID);\n+}\n+\n+/* Program OTP GP Word memory */\n+uint32_t Chip_OTP_ProgGPWord(uint32_t WordNum, uint32_t Data, uint32_t Mask)\n+{\n+   uint32_t status;\n+\n+   switch (WordNum) {\n+   case 1:\n+       status = Otp_ProgGP1(Data, Mask);\n+       break;\n+\n+   case 2:\n+       status = Otp_ProgGP2(Data, Mask);\n+       break;\n+\n+   case 0:\n+   default:\n+       status = Otp_ProgGP0(Data, Mask);\n+       break;\n+   }\n+\n+   return status;\n+}\n+\n+/* Program AES Key */\n+uint32_t Chip_OTP_ProgKey(uint32_t KeyNum, uint8_t *key)\n+{\n+   uint32_t status;\n+\n+   if (KeyNum) {\n+       status = Otp_ProgKey2(key);\n+   }\n+   else {\n+       status = Otp_ProgKey1(key);\n+   }\n+   return status;\n+}\n+\n+/* Generate Random Number using HW Random Number Generator */\n+uint32_t Chip_OTP_GenRand(void)\n+{\n+   return Otp_GenRand();\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/pinint_18xx_43xx.c ./lpc_chip_43xx/src/pinint_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/pinint_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/pinint_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,48 @@\n+/*\n+ * @brief LPC18xx/43xx Pin Interrupt and Pattern Match driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/pmc_18xx_43xx.c ./lpc_chip_43xx/src/pmc_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/pmc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/pmc_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,69 @@\n+/*\n+ * @brief LPC18xx/43xx Power Management Controller driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set to sleep mode */\n+void Chip_PMC_Sleep(void)\n+{\n+   /* Sleep Mode*/\n+   __WFI();\n+}\n+\n+/* Set power state */\n+void Chip_PMC_Set_PwrState(CHIP_PMC_PWR_STATE_T PwrState)\n+{\n+\n+   /* Set Deep sleep mode bit in System Control register of M4 core */\n+   SCB->SCR = 0x4;\n+\n+   /* Set power state in PMC */\n+   LPC_PMC->PD0_SLEEP0_MODE = (uint32_t) PwrState;\n+\n+   __WFI();\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/ring_buffer.c ./lpc_chip_43xx/src/ring_buffer.c\n--- a_8FkA5l/lpc_chip_43xx/src/ring_buffer.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/ring_buffer.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,167 @@\n+/*\n+ * @brief Common ring buffer support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include <string.h>\n+#include \"ring_buffer.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define RB_INDH(rb)                ((rb)->head & ((rb)->count - 1))\n+#define RB_INDT(rb)                ((rb)->tail & ((rb)->count - 1))\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize ring buffer */\n+int RingBuffer_Init(RINGBUFF_T *RingBuff, void *buffer, int itemSize, int count)\n+{\n+   RingBuff->data = buffer;\n+   RingBuff->count = count;\n+   RingBuff->itemSz = itemSize;\n+   RingBuff->head = RingBuff->tail = 0;\n+\n+   return 1;\n+}\n+\n+/* Insert a single item into Ring Buffer */\n+int RingBuffer_Insert(RINGBUFF_T *RingBuff, const void *data)\n+{\n+   uint8_t *ptr = RingBuff->data;\n+\n+   /* We cannot insert when queue is full */\n+   if (RingBuffer_IsFull(RingBuff))\n+       return 0;\n+\n+   ptr += RB_INDH(RingBuff) * RingBuff->itemSz;\n+   memcpy(ptr, data, RingBuff->itemSz);\n+   RingBuff->head++;\n+\n+   return 1;\n+}\n+\n+/* Insert multiple items into Ring Buffer */\n+int RingBuffer_InsertMult(RINGBUFF_T *RingBuff, const void *data, int num)\n+{\n+   uint8_t *ptr = RingBuff->data;\n+   int cnt1, cnt2;\n+\n+   /* We cannot insert when queue is full */\n+   if (RingBuffer_IsFull(RingBuff))\n+       return 0;\n+\n+   /* Calculate the segment lengths */\n+   cnt1 = cnt2 = RingBuffer_GetFree(RingBuff);\n+   if (RB_INDH(RingBuff) + cnt1 >= RingBuff->count)\n+       cnt1 = RingBuff->count - RB_INDH(RingBuff);\n+   cnt2 -= cnt1;\n+\n+   cnt1 = MIN(cnt1, num);\n+   num -= cnt1;\n+\n+   cnt2 = MIN(cnt2, num);\n+   num -= cnt2;\n+\n+   /* Write segment 1 */\n+   ptr += RB_INDH(RingBuff) * RingBuff->itemSz;\n+   memcpy(ptr, data, cnt1 * RingBuff->itemSz);\n+   RingBuff->head += cnt1;\n+\n+   /* Write segment 2 */\n+   ptr = (uint8_t *) RingBuff->data + RB_INDH(RingBuff) * RingBuff->itemSz;\n+   data = (const uint8_t *) data + cnt1 * RingBuff->itemSz;\n+   memcpy(ptr, data, cnt2 * RingBuff->itemSz);\n+   RingBuff->head += cnt2;\n+\n+   return cnt1 + cnt2;\n+}\n+\n+/* Pop single item from Ring Buffer */\n+int RingBuffer_Pop(RINGBUFF_T *RingBuff, void *data)\n+{\n+   uint8_t *ptr = RingBuff->data;\n+\n+   /* We cannot pop when queue is empty */\n+   if (RingBuffer_IsEmpty(RingBuff))\n+       return 0;\n+\n+   ptr += RB_INDT(RingBuff) * RingBuff->itemSz;\n+   memcpy(data, ptr, RingBuff->itemSz);\n+   RingBuff->tail++;\n+\n+   return 1;\n+}\n+\n+/* Pop multiple items from Ring buffer */\n+int RingBuffer_PopMult(RINGBUFF_T *RingBuff, void *data, int num)\n+{\n+   uint8_t *ptr = RingBuff->data;\n+   int cnt1, cnt2;\n+\n+   /* We cannot insert when queue is empty */\n+   if (RingBuffer_IsEmpty(RingBuff))\n+       return 0;\n+\n+   /* Calculate the segment lengths */\n+   cnt1 = cnt2 = RingBuffer_GetCount(RingBuff);\n+   if (RB_INDT(RingBuff) + cnt1 >= RingBuff->count)\n+       cnt1 = RingBuff->count - RB_INDT(RingBuff);\n+   cnt2 -= cnt1;\n+\n+   cnt1 = MIN(cnt1, num);\n+   num -= cnt1;\n+\n+   cnt2 = MIN(cnt2, num);\n+   num -= cnt2;\n+\n+   /* Write segment 1 */\n+   ptr += RB_INDT(RingBuff) * RingBuff->itemSz;\n+   memcpy(data, ptr, cnt1 * RingBuff->itemSz);\n+   RingBuff->tail += cnt1;\n+\n+   /* Write segment 2 */\n+   ptr = (uint8_t *) RingBuff->data + RB_INDT(RingBuff) * RingBuff->itemSz;\n+   data = (uint8_t *) data + cnt1 * RingBuff->itemSz;\n+   memcpy(data, ptr, cnt2 * RingBuff->itemSz);\n+   RingBuff->tail += cnt2;\n+\n+   return cnt1 + cnt2;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/ritimer_18xx_43xx.c ./lpc_chip_43xx/src/ritimer_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/ritimer_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/ritimer_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,97 @@\n+/*\n+ * @brief LPC18xx/43xx RITimer chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the RIT */\n+void Chip_RIT_Init(LPC_RITIMER_T *pRITimer)\n+{\n+   Chip_Clock_EnableOpts(CLK_MX_RITIMER, true, true, 1);\n+   pRITimer->COMPVAL = 0xFFFFFFFF;\n+   pRITimer->MASK  = 0x00000000;\n+   pRITimer->CTRL  = 0x0C;\n+   pRITimer->COUNTER   = 0x00000000;\n+}\n+\n+/* DeInitialize the RIT */\n+void Chip_RIT_DeInit(LPC_RITIMER_T *pRITimer)\n+{\n+   Chip_RIT_Init(pRITimer);\n+   Chip_Clock_Disable(CLK_MX_RITIMER);\n+}\n+\n+/* Set timer interval value */\n+void Chip_RIT_SetTimerInterval(LPC_RITIMER_T *pRITimer, uint32_t time_interval)\n+{\n+   uint32_t cmp_value;\n+\n+   /* Determine aapproximate compare value based on clock rate and passed interval */\n+   cmp_value = (Chip_Clock_GetRate(CLK_MX_RITIMER) / 1000) * time_interval;\n+\n+   /* Set timer compare value */\n+   Chip_RIT_SetCOMPVAL(pRITimer, cmp_value);\n+\n+   /* Set timer enable clear bit to clear timer to 0 whenever\n+      counter value equals the contents of RICOMPVAL */\n+   Chip_RIT_EnableCTRL(pRITimer, RIT_CTRL_ENCLR);\n+}\n+\n+/* Check whether interrupt is pending */\n+IntStatus Chip_RIT_GetIntStatus(LPC_RITIMER_T *pRITimer)\n+{\n+   uint8_t result;\n+\n+   if ((pRITimer->CTRL & RIT_CTRL_INT) == 1) {\n+       result = SET;\n+   }\n+   else {\n+       return RESET;\n+   }\n+\n+   return (IntStatus) result;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/rtc_18xx_43xx.c ./lpc_chip_43xx/src/rtc_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/rtc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/rtc_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,220 @@\n+/*\n+ * @brief LPC18xx/43xx RTC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the RTC peripheral */\n+void Chip_RTC_Init(LPC_RTC_T *pRTC)\n+{\n+   Chip_Clock_RTCEnable();\n+\n+   /* 2-Second delay after enabling RTC clock */\n+   LPC_ATIMER->DOWNCOUNTER = 2048;\n+   while (LPC_ATIMER->DOWNCOUNTER);\n+\n+   /* Disable RTC */\n+   Chip_RTC_Enable(pRTC, DISABLE);\n+\n+   /* Disable Calibration */\n+   Chip_RTC_CalibCounterCmd(pRTC, DISABLE);\n+\n+   /* Reset RTC Clock */\n+   Chip_RTC_ResetClockTickCounter(pRTC);\n+\n+   /* Clear counter increment and alarm interrupt */\n+   pRTC->ILR = RTC_IRL_RTCCIF | RTC_IRL_RTCALF;\n+   while (pRTC->ILR != 0) {}\n+\n+   /* Clear all register to be default */\n+   pRTC->CIIR = 0x00;\n+   pRTC->AMR = 0xFF;\n+   pRTC->CALIBRATION = 0x00;\n+}\n+\n+/*De-initialize the RTC peripheral */\n+void Chip_RTC_DeInit(LPC_RTC_T *pRTC)\n+{\n+   pRTC->CCR = 0x00;\n+}\n+\n+/* Reset clock tick counter in the RTC peripheral */\n+void Chip_RTC_ResetClockTickCounter(LPC_RTC_T *pRTC)\n+{\n+   /* Reset RTC clock*/\n+   pRTC->CCR |= RTC_CCR_CTCRST;\n+   while (!(pRTC->CCR & RTC_CCR_CTCRST)) {}\n+\n+   /* Finish resetting RTC clock */\n+   pRTC->CCR = (pRTC->CCR & ~RTC_CCR_CTCRST) & RTC_CCR_BITMASK;\n+   while (pRTC->CCR & RTC_CCR_CTCRST) {}\n+}\n+\n+/* Start/Stop RTC peripheral */\n+void Chip_RTC_Enable(LPC_RTC_T *pRTC, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pRTC->CCR |= RTC_CCR_CLKEN;\n+   } else {\n+       pRTC->CCR = (pRTC->CCR & ~RTC_CCR_CLKEN) & RTC_CCR_BITMASK;\n+   }\n+}\n+\n+/* Enable/Disable Counter increment interrupt for a time type in the RTC peripheral */\n+void Chip_RTC_CntIncrIntConfig(LPC_RTC_T *pRTC, uint32_t cntrMask, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pRTC->CIIR |= cntrMask;\n+   }\n+\n+   else {\n+       pRTC->CIIR &= (~cntrMask) & RTC_AMR_CIIR_BITMASK;\n+       while (pRTC->CIIR & cntrMask) {}\n+   }\n+}\n+\n+/* Enable/Disable Alarm interrupt for a time type in the RTC peripheral */\n+void Chip_RTC_AlarmIntConfig(LPC_RTC_T *pRTC, uint32_t alarmMask, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pRTC->AMR &= (~alarmMask) & RTC_AMR_CIIR_BITMASK;\n+   }\n+   else {\n+       pRTC->AMR |= (alarmMask);\n+       while ((pRTC->AMR & alarmMask) == 0) {}\n+   }\n+}\n+\n+/* Set full time in the RTC peripheral */\n+void Chip_RTC_SetFullTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime)\n+{\n+   RTC_TIMEINDEX_T i;\n+   uint32_t ccr_val = pRTC->CCR;\n+\n+   /* Temporarily disable */\n+   if (ccr_val & RTC_CCR_CLKEN) {\n+       pRTC->CCR = ccr_val & (~RTC_CCR_CLKEN) & RTC_CCR_BITMASK;\n+   }\n+\n+   /* Date time setting */\n+   for (i = RTC_TIMETYPE_SECOND; i < RTC_TIMETYPE_LAST; i++) {\n+       pRTC->TIME[i] = pFullTime->time[i];\n+   }\n+\n+   /* Restore to old setting */\n+   pRTC->CCR = ccr_val;\n+}\n+\n+/* Get full time from the RTC peripheral */\n+void Chip_RTC_GetFullTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime)\n+{\n+   RTC_TIMEINDEX_T i;\n+   uint32_t secs = 0xFF;\n+\n+   /* Read full time, but verify second tick didn't change during the read. If\n+      it did, re-read the time again so it will be consistent across all fields. */\n+   while (secs != pRTC->TIME[RTC_TIMETYPE_SECOND]) {\n+       secs = pFullTime->time[RTC_TIMETYPE_SECOND] = pRTC->TIME[RTC_TIMETYPE_SECOND];\n+       for (i = RTC_TIMETYPE_MINUTE; i < RTC_TIMETYPE_LAST; i++) {\n+           pFullTime->time[i] = pRTC->TIME[i];\n+       }\n+   }\n+}\n+\n+/* Set full alarm time in the RTC peripheral */\n+void Chip_RTC_SetFullAlarmTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime)\n+{\n+   RTC_TIMEINDEX_T i;\n+\n+   for (i = RTC_TIMETYPE_SECOND; i < RTC_TIMETYPE_LAST; i++) {\n+       pRTC->ALRM[i] = pFullTime->time[i];\n+   }\n+}\n+\n+/* Get full alarm time in the RTC peripheral */\n+void Chip_RTC_GetFullAlarmTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime)\n+{\n+   RTC_TIMEINDEX_T i;\n+\n+   for (i = RTC_TIMETYPE_SECOND; i < RTC_TIMETYPE_LAST; i++) {\n+       pFullTime->time[i] = pRTC->ALRM[i];\n+   }\n+}\n+\n+/* Enable/Disable calibration counter in the RTC peripheral */\n+void Chip_RTC_CalibCounterCmd(LPC_RTC_T *pRTC, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       do {\n+           pRTC->CCR &= (~RTC_CCR_CCALEN) & RTC_CCR_BITMASK;\n+       } while (pRTC->CCR & RTC_CCR_CCALEN);\n+   }\n+   else {\n+       pRTC->CCR |= RTC_CCR_CCALEN;\n+   }\n+}\n+\n+#if RTC_EV_SUPPORT\n+/* Get first timestamp value */\n+void Chip_RTC_EV_GetFirstTimeStamp(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, RTC_EV_TIMESTAMP_T *pTimeStamp)\n+{\n+   pTimeStamp->sec = RTC_ER_TIMESTAMP_SEC(pRTC->ERFIRSTSTAMP[ch]);\n+   pTimeStamp->min = RTC_ER_TIMESTAMP_MIN(pRTC->ERFIRSTSTAMP[ch]);\n+   pTimeStamp->hour = RTC_ER_TIMESTAMP_HOUR(pRTC->ERFIRSTSTAMP[ch]);\n+   pTimeStamp->dayofyear = RTC_ER_TIMESTAMP_DOY(pRTC->ERFIRSTSTAMP[ch]);\n+}\n+\n+/* Get last timestamp value */\n+void Chip_RTC_EV_GetLastTimeStamp(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, RTC_EV_TIMESTAMP_T *pTimeStamp)\n+{\n+   pTimeStamp->sec = RTC_ER_TIMESTAMP_SEC(pRTC->ERLASTSTAMP[ch]);\n+   pTimeStamp->min = RTC_ER_TIMESTAMP_MIN(pRTC->ERLASTSTAMP[ch]);\n+   pTimeStamp->hour = RTC_ER_TIMESTAMP_HOUR(pRTC->ERLASTSTAMP[ch]);\n+   pTimeStamp->dayofyear = RTC_ER_TIMESTAMP_DOY(pRTC->ERLASTSTAMP[ch]);\n+}\n+\n+#endif /*RTC_EV_SUPPORT*/\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/sct_18xx_43xx.c ./lpc_chip_43xx/src/sct_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/sct_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sct_18xx_43xx.c\t2017-02-27 20:42:08.480009492 -0300\n@@ -0,0 +1,87 @@\n+/*\n+ * @brief LPC18xx/43xx State Configurable Timer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize SCT */\n+void Chip_SCT_Init(LPC_SCT_T *pSCT)\n+{\n+   Chip_Clock_EnableOpts(CLK_MX_SCT, true, true, 1);\n+}\n+\n+/* Shutdown SCT */\n+void Chip_SCT_DeInit(LPC_SCT_T *pSCT)\n+{\n+   Chip_Clock_Disable(CLK_MX_SCT);\n+}\n+\n+/* Set/Clear SCT control register */\n+void Chip_SCT_SetClrControl(LPC_SCT_T *pSCT, uint32_t value, FunctionalState ena)\n+{\n+   uint32_t tem;\n+\n+   tem = pSCT->CTRL_U;\n+   if (ena == ENABLE) {\n+       tem |= value;\n+   }\n+   else {\n+       tem &= (~value);\n+   }\n+   pSCT->CTRL_U = tem;\n+}\n+\n+/* Set Conflict resolution */\n+void Chip_SCT_SetConflictResolution(LPC_SCT_T *pSCT, uint8_t outnum, uint8_t value)\n+{\n+   uint32_t tem;\n+\n+   tem = pSCT->RES;\n+   tem &= ~(0x03 << (2 * outnum));\n+   tem |= (value << (2 * outnum));\n+   pSCT->RES = tem;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/sct_pwm_18xx_43xx.c ./lpc_chip_43xx/src/sct_pwm_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/sct_pwm_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sct_pwm_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,87 @@\n+/*\n+ * @brief LPC18xx_43xx State Configurable Timer PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Setup the OUTPUT pin corresponding to the PWM index */\n+void Chip_SCTPWM_SetOutPin(LPC_SCT_T *pSCT, uint8_t index, uint8_t pin)\n+{\n+   int ix = (int) index;\n+   pSCT->EVENT[ix].CTRL = index | (1 << 12);\n+   pSCT->EVENT[ix].STATE = 1;\n+   pSCT->OUT[pin].SET = 1;\n+   pSCT->OUT[pin].CLR = 1 << ix;\n+\n+   /* Clear the output in-case of conflict */\n+   pSCT->RES = (pSCT->RES & ~(3 << (pin << 1))) | (0x01 << (pin << 1));\n+\n+   /* Set and Clear do not depend on direction */\n+   pSCT->OUTPUTDIRCTRL = (pSCT->OUTPUTDIRCTRL & ~(3 << (pin << 1)));\n+}\n+\n+/* Set the PWM frequency */\n+void Chip_SCTPWM_SetRate(LPC_SCT_T *pSCT, uint32_t freq)\n+{\n+   uint32_t rate;\n+\n+   rate = Chip_Clock_GetRate(CLK_MX_SCT) / freq;;\n+\n+   /* Stop the SCT before configuration */\n+   Chip_SCTPWM_Stop(pSCT);\n+\n+   /* Set MATCH0 for max limit */\n+   pSCT->REGMODE_L = 0;\n+   pSCT->REGMODE_H = 0;\n+   Chip_SCT_SetMatchCount(pSCT, SCT_MATCH_0, 0);\n+   Chip_SCT_SetMatchReload(pSCT, SCT_MATCH_0, rate);\n+   pSCT->EVENT[0].CTRL = 1 << 12;\n+   pSCT->EVENT[0].STATE = 1;\n+   pSCT->LIMIT_L = 1;\n+\n+   /* Set SCT Counter to count 32-bits and reset to 0 after reaching MATCH0 */\n+   Chip_SCT_Config(pSCT, SCT_CONFIG_32BIT_COUNTER | SCT_CONFIG_AUTOLIMIT_L);\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/sdif_18xx_43xx.c ./lpc_chip_43xx/src/sdif_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/sdif_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sdif_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,223 @@\n+/*\n+ * @brief LPC18xx/43xx SD/SDIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+#include \"string.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the SD/MMC controller */\n+void Chip_SDIF_Init(LPC_SDMMC_T *pSDMMC)\n+{\n+    /* Enable SDIO module clock */\n+   Chip_Clock_EnableOpts(CLK_MX_SDIO, true, true, 1);\n+\n+    /* Software reset */\n+   pSDMMC->BMOD = MCI_BMOD_SWR;\n+\n+   /* reset all blocks */\n+   pSDMMC->CTRL = MCI_CTRL_RESET | MCI_CTRL_FIFO_RESET | MCI_CTRL_DMA_RESET;\n+   while (pSDMMC->CTRL & (MCI_CTRL_RESET | MCI_CTRL_FIFO_RESET | MCI_CTRL_DMA_RESET)) {}\n+\n+   /* Internal DMA setup for control register */\n+   pSDMMC->CTRL = MCI_CTRL_USE_INT_DMAC | MCI_CTRL_INT_ENABLE;\n+   pSDMMC->INTMASK = 0;\n+\n+   /* Clear the interrupts for the host controller */\n+   pSDMMC->RINTSTS = 0xFFFFFFFF;\n+\n+   /* Put in max timeout */\n+   pSDMMC->TMOUT = 0xFFFFFFFF;\n+\n+   /* FIFO threshold settings for DMA, DMA burst of 4,   FIFO watermark at 16 */\n+   pSDMMC->FIFOTH = MCI_FIFOTH_DMA_MTS_4 | MCI_FIFOTH_RX_WM((SD_FIFO_SZ / 2) - 1) | MCI_FIFOTH_TX_WM(SD_FIFO_SZ / 2);\n+\n+   /* Enable internal DMA, burst size of 4, fixed burst */\n+   pSDMMC->BMOD = MCI_BMOD_DE | MCI_BMOD_PBL4 | MCI_BMOD_DSL(4);\n+\n+   /* disable clock to CIU (needs latch) */\n+   pSDMMC->CLKENA = 0;\n+   pSDMMC->CLKSRC = 0;\n+}\n+\n+/* Shutdown the SD/MMC controller */\n+void Chip_SDIF_DeInit(LPC_SDMMC_T *pSDMMC)\n+{\n+    /* Disable the clock */\n+   Chip_Clock_Disable(CLK_MX_SDIO);\n+}\n+\n+/* Function to send command to Card interface unit (CIU) */\n+int32_t Chip_SDIF_SendCmd(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg)\n+{\n+   volatile int32_t tmo = 50;\n+   volatile int delay;\n+\n+   /* set command arg reg*/\n+   pSDMMC->CMDARG = arg;\n+   pSDMMC->CMD = MCI_CMD_START | cmd;\n+\n+   /* poll untill command is accepted by the CIU */\n+   while (--tmo && (pSDMMC->CMD & MCI_CMD_START)) {\n+       if (tmo & 1) {\n+           delay = 50;\n+       }\n+       else {\n+           delay = 18000;\n+       }\n+\n+       while (--delay > 1) {}\n+   }\n+\n+   return (tmo < 1) ? 1 : 0;\n+}\n+\n+/* Read the response from the last command */\n+void Chip_SDIF_GetResponse(LPC_SDMMC_T *pSDMMC, uint32_t *resp)\n+{\n+   /* on this chip response is not a fifo so read all 4 regs */\n+   resp[0] = pSDMMC->RESP0;\n+   resp[1] = pSDMMC->RESP1;\n+   resp[2] = pSDMMC->RESP2;\n+   resp[3] = pSDMMC->RESP3;\n+}\n+\n+/* Sets the SD bus clock speed */\n+void Chip_SDIF_SetClock(LPC_SDMMC_T *pSDMMC, uint32_t clk_rate, uint32_t speed)\n+{\n+   /* compute SD/MMC clock dividers */\n+   uint32_t div;\n+\n+   div = ((clk_rate / speed) + 2) >> 1;\n+\n+   if ((div == pSDMMC->CLKDIV) && pSDMMC->CLKENA) {\n+       return; /* Closest speed is already set */\n+\n+   }\n+   /* disable clock */\n+   pSDMMC->CLKENA = 0;\n+\n+   /* User divider 0 */\n+   pSDMMC->CLKSRC = MCI_CLKSRC_CLKDIV0;\n+\n+   /* inform CIU */\n+   Chip_SDIF_SendCmd(pSDMMC, MCI_CMD_UPD_CLK | MCI_CMD_PRV_DAT_WAIT, 0);\n+\n+   /* set divider 0 to desired value */\n+   pSDMMC->CLKDIV = MCI_CLOCK_DIVIDER(0, div);\n+\n+   /* inform CIU */\n+   Chip_SDIF_SendCmd(pSDMMC, MCI_CMD_UPD_CLK | MCI_CMD_PRV_DAT_WAIT, 0);\n+\n+   /* enable clock */\n+   pSDMMC->CLKENA = MCI_CLKEN_ENABLE;\n+\n+   /* inform CIU */\n+   Chip_SDIF_SendCmd(pSDMMC, MCI_CMD_UPD_CLK | MCI_CMD_PRV_DAT_WAIT, 0);\n+}\n+\n+/* Function to clear interrupt & FIFOs */\n+void Chip_SDIF_SetClearIntFifo(LPC_SDMMC_T *pSDMMC)\n+{\n+   /* reset all blocks */\n+   pSDMMC->CTRL |= MCI_CTRL_FIFO_RESET;\n+\n+   /* wait till resets clear */\n+   while (pSDMMC->CTRL & MCI_CTRL_FIFO_RESET) {}\n+\n+   /* Clear interrupt status */\n+   pSDMMC->RINTSTS = 0xFFFFFFFF;\n+}\n+\n+/* Setup DMA descriptors */\n+void Chip_SDIF_DmaSetup(LPC_SDMMC_T *pSDMMC, sdif_device *psdif_dev, uint32_t addr, uint32_t size)\n+{\n+   int i = 0;\n+   uint32_t ctrl, maxs;\n+\n+   /* Reset DMA */\n+   pSDMMC->CTRL |= MCI_CTRL_DMA_RESET | MCI_CTRL_FIFO_RESET;\n+   while (pSDMMC->CTRL & MCI_CTRL_DMA_RESET) {}\n+\n+   /* Build a descriptor list using the chained DMA method */\n+   while (size > 0) {\n+       /* Limit size of the transfer to maximum buffer size */\n+       maxs = size;\n+       if (maxs > MCI_DMADES1_MAXTR) {\n+           maxs = MCI_DMADES1_MAXTR;\n+       }\n+       size -= maxs;\n+\n+       /* Set buffer size */\n+       psdif_dev->mci_dma_dd[i].des1 = MCI_DMADES1_BS1(maxs);\n+\n+       /* Setup buffer address (chained) */\n+       psdif_dev->mci_dma_dd[i].des2 = addr + (i * MCI_DMADES1_MAXTR);\n+\n+       /* Setup basic control */\n+       ctrl = MCI_DMADES0_OWN | MCI_DMADES0_CH;\n+       if (i == 0) {\n+           ctrl |= MCI_DMADES0_FS; /* First DMA buffer */\n+\n+       }\n+       /* No more data? Then this is the last descriptor */\n+       if (!size) {\n+           ctrl |= MCI_DMADES0_LD;\n+       }\n+       else {\n+           ctrl |= MCI_DMADES0_DIC;\n+       }\n+\n+       /* Another descriptor is needed */\n+       psdif_dev->mci_dma_dd[i].des3 = (uint32_t) &psdif_dev->mci_dma_dd[i + 1];\n+       psdif_dev->mci_dma_dd[i].des0 = ctrl;\n+\n+       i++;\n+   }\n+\n+   /* Set DMA derscriptor base address */\n+   pSDMMC->DBADDR = (uint32_t) &psdif_dev->mci_dma_dd[0];\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/sdio_18xx_43xx.c ./lpc_chip_43xx/src/sdio_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/sdio_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sdio_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,518 @@\n+/*\n+ * @brief LPC18xx/43xx SDIO Card driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define SDIO_CMD_INT_MSK    0xA146       /* Interrupts to be enabled for CMD */\n+#define SDIO_DATA_INT_MSK   0xBE88       /* Interrupts to enable for data transfer */\n+#define SDIO_CARD_INT_MSK   (1UL << 16)  /* SDIO Card interrupt */\n+\n+static struct\n+{\n+   void (*wake_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg);\n+   uint32_t (*wait_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg);\n+   uint32_t flag;\n+   uint32_t response[4];\n+   int fnum;\n+   uint16_t blkSz[8];     /* Block size setting for the 8- function blocks */\n+   sdif_device sdev;      /* SDIO interface device structure */\n+}sdio_context, *sdioif = &sdio_context;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Set the SDIO Card voltage level to 3v3 */\n+static int SDIO_Card_SetVoltage(LPC_SDMMC_T *pSDMMC)\n+{\n+   int ret, i;\n+   uint32_t val;\n+\n+   ret = SDIO_Send_Command(pSDMMC, CMD5, 0);\n+   if (ret) return ret;\n+   val = sdioif->response[0];\n+\n+   /* Number of functions supported by the card */\n+   sdioif->fnum = (val >> 28) & 7;\n+\n+   /* Check number of I/O functions*/\n+   if(sdioif->fnum == 0) {\n+       /* Number of I/O functions */\n+       return SDIO_ERR_FNUM;\n+   }\n+\n+   /* ---- check OCR ---- */\n+   if((val & SDIO_VOLT_3_3) == 0){\n+       /* invalid voltage */\n+       return SDIO_ERR_VOLT;\n+   }\n+\n+   /* ==== send CMD5 write new voltage  === */\n+   for(i = 0; i < 100; i++){\n+       ret = SDIO_Send_Command(pSDMMC, CMD5, SDIO_VOLT_3_3);\n+       if (ret) return ret;\n+       val = sdioif->response[0];\n+\n+       /* Is card ready ? */\n+       if(val & (1UL << 31)){\n+           break;\n+       }\n+\n+       sdioif->wait_evt(pSDMMC, SDIO_WAIT_DELAY, (void *)10);\n+   }\n+\n+   /* ==== Check C bit  ==== */\n+   if(val & (1UL << 31)){\n+       return 0;\n+   }\n+\n+   return SDIO_ERR_VOLT; /* error end */\n+}\n+\n+/* Set SDIO Card RCA */\n+static int SDIO_CARD_SetRCA(LPC_SDMMC_T *pSDMMC)\n+{\n+   int ret;\n+\n+   /* ==== send CMD3 get RCA  ==== */\n+   ret = SDIO_Send_Command(pSDMMC, CMD3, 0);\n+   if (ret) return ret;\n+\n+   /* R6 response to CMD3 */\n+   if((sdioif->response[0] & 0x0000e000) != 0){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+       return SDIO_ERR_RCA;\n+   }\n+\n+   /* change card state */\n+   sdioif->flag |= SDIO_POWER_INIT;\n+\n+   /* New published RCA */\n+   sdioif->response[0] &= 0xffff0000;\n+\n+   /* ==== change state to Stanby State ==== */\n+   return SDIO_Send_Command(pSDMMC, CMD7, sdioif->response[0]);\n+}\n+\n+/* Set the Clock speed and mode [1/4 bit] of the card */\n+static int SDIO_Card_SetMode(LPC_SDMMC_T *pSDMMC, uint32_t clk, int mode_4bit)\n+{\n+   int ret;\n+   uint32_t val;\n+\n+   Chip_SDIF_SetClock(pSDMMC, Chip_Clock_GetBaseClocktHz(CLK_BASE_SDIO), clk);\n+\n+   if (!mode_4bit)\n+       return 0;\n+\n+   val = 0x02;\n+   ret = SDIO_WriteRead_Direct(pSDMMC, SDIO_AREA_CIA, 0x07, &val);\n+   if (ret) return ret;\n+\n+   if (val & 0x02) {\n+       Chip_SDIF_SetCardType(pSDMMC, MCI_CTYPE_4BIT);\n+   }\n+   return 0;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+/* Set the block size of a function */\n+int SDIO_Card_SetBlockSize(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t blkSize)\n+{\n+   int ret;\n+   uint32_t tmp, asz;\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   if (blkSize > 2048)\n+       return SDIO_ERR_INVARG;\n+\n+   tmp = blkSize & 0xFF;\n+   ret = SDIO_WriteRead_Direct(pSDMMC, SDIO_AREA_CIA, (func << 8) + 0x10, &tmp);\n+   if (ret) return ret;\n+   asz = tmp;\n+\n+   tmp = blkSize >> 8;\n+   ret = SDIO_WriteRead_Direct(pSDMMC, SDIO_AREA_CIA, (func << 8) + 0x11, &tmp);\n+   if (ret) return ret;\n+   asz |= tmp << 8;\n+   sdioif->blkSz[func] = asz;\n+   return 0;\n+}\n+\n+/* Get the block size of a particular function */\n+uint32_t SDIO_Card_GetBlockSize(LPC_SDMMC_T *pSDMMC, uint32_t func)\n+{\n+   if (func > sdioif->fnum)\n+       return 0;\n+\n+   return sdioif->blkSz[func];\n+}\n+\n+/* Write data to SDIO Card */\n+int SDIO_Card_WriteData(LPC_SDMMC_T *pSDMMC, uint32_t func,\n+   uint32_t dest_addr, const uint8_t *src_addr,\n+   uint32_t size, uint32_t flags)\n+{\n+   int ret;\n+   uint32_t bs = size, bsize = size;\n+   uint32_t cmd = CMD53 | (1UL << 10);\n+\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   if (bsize > 512 || bsize == 0)\n+       return SDIO_ERR_INVARG;\n+\n+   if (flags & SDIO_MODE_BLOCK) {\n+       uint32_t bs = SDIO_Card_GetBlockSize(pSDMMC, func);\n+       if (!bs) return SDIO_ERR_INVARG;\n+       size *= bs;\n+   }\n+\n+   /* Set Block Size */\n+   Chip_SDIF_SetBlkSize(pSDMMC, bs);\n+\n+   /* set number of bytes to read */\n+   Chip_SDIF_SetByteCnt(pSDMMC, size);\n+\n+   sdioif->wait_evt(pSDMMC, SDIO_START_DATA, 0);\n+   Chip_SDIF_DmaSetup(pSDMMC, &sdioif->sdev, (uint32_t) src_addr, size);\n+\n+   ret = SDIO_Send_Command(pSDMMC, cmd, (func << 28) | (dest_addr << 9) | (bsize & 0x1FF) | (1UL << 31) | (flags & (0x3 << 26)));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+   return sdioif->wait_evt(pSDMMC, SDIO_WAIT_DATA, 0);\n+}\n+\n+/* Write data to SDIO Card */\n+int SDIO_Card_ReadData(LPC_SDMMC_T *pSDMMC, uint32_t func, uint8_t *dest_addr, uint32_t src_addr, uint32_t size, uint32_t flags)\n+{\n+   int ret;\n+   uint32_t bs = size, bsize = size;\n+   uint32_t cmd = CMD53;\n+\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   if (bsize > 512 || bsize == 0)\n+       return SDIO_ERR_INVARG;\n+\n+   if (flags & SDIO_MODE_BLOCK) {\n+       bs = SDIO_Card_GetBlockSize(pSDMMC, func);\n+       if (!bs) return SDIO_ERR_INVARG;\n+       size *= bs;\n+   }\n+   /* Set the block size */\n+   Chip_SDIF_SetBlkSize(pSDMMC, bs);\n+\n+   /* set number of bytes to read */\n+   Chip_SDIF_SetByteCnt(pSDMMC, size);\n+\n+   sdioif->wait_evt(pSDMMC, SDIO_START_DATA, 0);\n+   Chip_SDIF_DmaSetup(pSDMMC, &sdioif->sdev, (uint32_t) dest_addr, size);\n+\n+   ret = SDIO_Send_Command(pSDMMC, cmd | (1 << 13), (func << 28) | (src_addr << 9) | (bsize & 0x1FF) | (flags & (0x3 << 26)));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+\n+   return sdioif->wait_evt(pSDMMC, SDIO_WAIT_DATA, 0);\n+}\n+\n+/* Enable SDIO function interrupt */\n+int SDIO_Card_EnableInt(LPC_SDMMC_T *pSDMMC, uint32_t func)\n+{\n+   int ret;\n+   uint32_t val;\n+\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   ret = SDIO_Read_Direct(pSDMMC, SDIO_AREA_CIA, 0x04, &val);\n+   if (ret) return ret;\n+   val |= (1 << func) | 1;\n+   ret = SDIO_Write_Direct(pSDMMC, SDIO_AREA_CIA, 0x04, val);\n+   if (ret) return ret;\n+   pSDMMC->INTMASK |= SDIO_CARD_INT_MSK;\n+\n+   return 0;\n+}\n+\n+/* Disable SDIO function interrupt */\n+int SDIO_Card_DisableInt(LPC_SDMMC_T *pSDMMC, uint32_t func)\n+{\n+   int ret;\n+   uint32_t val;\n+\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   ret = SDIO_Read_Direct(pSDMMC, SDIO_AREA_CIA, 0x04, &val);\n+   if (ret) return ret;\n+   val &= ~(1 << func);\n+\n+   /* Disable master interrupt if it is the only thing enabled */\n+   if (val == 1)\n+       val = 0;\n+   ret = SDIO_Write_Direct(pSDMMC, SDIO_AREA_CIA, 0x04, val);\n+   if (ret) return ret;\n+   if (!val)\n+       pSDMMC->INTMASK &= ~SDIO_CARD_INT_MSK;\n+\n+   return 0;\n+}\n+\n+/* Initialize the SDIO card */\n+int SDIO_Card_Init(LPC_SDMMC_T *pSDMMC, uint32_t freq)\n+{\n+   int ret;\n+   uint32_t val;\n+\n+   /* Set Clock to 400KHz */\n+   Chip_SDIF_SetClock(pSDMMC, Chip_Clock_GetBaseClocktHz(CLK_BASE_SDIO), freq);\n+   Chip_SDIF_SetCardType(pSDMMC, 0);\n+\n+   sdioif->wait_evt(pSDMMC, SDIO_WAIT_DELAY, (void *) 100); /* Wait for card to wake up */\n+\n+   if (sdioif->flag & SDIO_POWER_INIT) {\n+       /* Write to the Reset Bit */\n+       ret = SDIO_Write_Direct(pSDMMC, SDIO_AREA_CIA, 0x06, 0x08);\n+       if (ret) return ret;\n+   }\n+\n+   /* Set Voltage level to 3v3 */\n+   ret = SDIO_Card_SetVoltage(pSDMMC);\n+   if (ret) return ret;\n+\n+   /* Set the RCA */\n+   ret = SDIO_CARD_SetRCA(pSDMMC);\n+   if (ret) return ret;\n+\n+   /* ==== check card capability ==== */\n+   val = 0x02;\n+   ret = SDIO_WriteRead_Direct(pSDMMC, SDIO_AREA_CIA, 0x13, &val);\n+   if (ret) return ret;\n+\n+   /* FIXME: Verify */\n+   /* FIFO threshold settings for DMA, DMA burst of 4,   FIFO watermark at 16 */\n+   pSDMMC->FIFOTH = MCI_FIFOTH_DMA_MTS_1 | MCI_FIFOTH_RX_WM(0) | MCI_FIFOTH_TX_WM(1);\n+\n+   /* Enable internal DMA, burst size of 4, fixed burst */\n+   pSDMMC->BMOD = MCI_BMOD_DE | MCI_BMOD_PBL1 | MCI_BMOD_DSL(0);\n+\n+   /* High Speed Support? */\n+   if ((val & 0x03) == 3) {\n+       return SDIO_Card_SetMode(pSDMMC, SDIO_CLK_HISPEED, 1);\n+   }\n+\n+   ret = SDIO_Read_Direct(pSDMMC, SDIO_AREA_CIA, 0x08, &val);\n+   if (ret) return ret;\n+\n+   /* Full Speed Support? */\n+   if (val & SDIO_CCCR_LSC) {\n+       return SDIO_Card_SetMode(pSDMMC, SDIO_CLK_FULLSPEED, 1);\n+   }\n+\n+   /* Low Speed Card */\n+   return SDIO_Card_SetMode(pSDMMC, SDIO_CLK_LOWSPEED, val & SDIO_CCCR_4BLS);\n+}\n+\n+/* Write given data to register space of the CARD */\n+int SDIO_Write_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t data)\n+{\n+   int ret;\n+\n+   ret = SDIO_Send_Command(pSDMMC, CMD52, (func << 28) | (addr << 9) | (data & 0xFF) | (1UL << 31));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+   return data != (sdioif->response[0] & 0xFF);\n+}\n+\n+/* Write given data to register, and read back the register into data */\n+int SDIO_WriteRead_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t *data)\n+{\n+   int ret;\n+\n+   ret = SDIO_Send_Command(pSDMMC, CMD52, (func << 28) | (1 << 27) | (addr << 9) | ((*data) & 0xFF) | (1UL << 31));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+   *data = sdioif->response[0] & 0xFF;\n+   return 0;\n+}\n+\n+/* Read a register from the register address space of the CARD */\n+int SDIO_Read_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t *data)\n+{\n+   int ret;\n+   ret = SDIO_Send_Command(pSDMMC, CMD52, ((func & 7) << 28) | ((addr & 0x1FFFF) << 9));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+   *data = sdioif->response[0] & 0xFF;\n+   return 0;\n+}\n+\n+/* Set up the wait and wake call-back functions */\n+void SDIO_Setup_Callback(LPC_SDMMC_T *pSDMMC,\n+   void (*wake_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg),\n+   uint32_t (*wait_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg))\n+{\n+   sdioif->wake_evt = wake_evt;\n+   sdioif->wait_evt = wait_evt;\n+}\n+\n+/* Send and SD Command to the SDIO Card */\n+uint32_t SDIO_Send_Command(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg)\n+{\n+   uint32_t ret, ival;\n+   uint32_t imsk = pSDMMC->INTMASK;\n+   ret = sdioif->wait_evt(pSDMMC, SDIO_START_COMMAND, (void *)(cmd & 0x3F));\n+   ival = SDIO_CMD_INT_MSK & ~ret;\n+\n+   /* Set data interrupts for data commands */\n+   if (cmd & SDIO_CMD_DATA) {\n+       ival |= SDIO_DATA_INT_MSK;\n+       imsk |= SDIO_DATA_INT_MSK;\n+   }\n+\n+   Chip_SDIF_SetIntMask(pSDMMC, ival);\n+   Chip_SDIF_SendCmd(pSDMMC, cmd, arg);\n+   ret = sdioif->wait_evt(pSDMMC, SDIO_WAIT_COMMAND, 0);\n+   if (!ret && (cmd & SDIO_CMD_RESP_R1)) {\n+       Chip_SDIF_GetResponse(pSDMMC, &sdioif->response[0]);\n+   }\n+\n+   Chip_SDIF_SetIntMask(pSDMMC, imsk);\n+   return ret;\n+}\n+\n+/* SDIO Card interrupt handler */\n+void SDIO_Handler(LPC_SDMMC_T *pSDMMC)\n+{\n+   uint32_t status = pSDMMC->MINTSTS;\n+   uint32_t iclr = 0;\n+\n+   /* Card Detected */\n+   if (status & 1) {\n+       sdioif->wake_evt(pSDMMC, SDIO_CARD_DETECT, 0);\n+       iclr = 1;\n+   }\n+\n+   /* Command event error */\n+   if (status & (SDIO_CMD_INT_MSK & ~4)) {\n+       sdioif->wake_evt(pSDMMC, SDIO_CMD_ERR, (void *) (status & (SDIO_CMD_INT_MSK & ~4)));\n+       iclr |= status & SDIO_CMD_INT_MSK;\n+   } else if (status & 4) {\n+       /* Command event done */\n+       sdioif->wake_evt(pSDMMC, SDIO_CMD_DONE, (void *) status);\n+       iclr |= status & SDIO_CMD_INT_MSK;\n+   }\n+\n+   /* Command event error */\n+   if (status & (SDIO_DATA_INT_MSK & ~8)) {\n+       sdioif->wake_evt(pSDMMC, SDIO_DATA_ERR, (void *) (status & (SDIO_DATA_INT_MSK & ~8)));\n+       iclr |= (status & SDIO_DATA_INT_MSK) | (3 << 4);\n+   } else if (status & 8) {\n+       /* Command event done */\n+       sdioif->wake_evt(pSDMMC, SDIO_DATA_DONE, (void *) status);\n+       iclr |= (status & SDIO_DATA_INT_MSK) | (3 << 4);\n+   }\n+\n+   /* Handle Card interrupt */\n+   if (status & SDIO_CARD_INT_MSK) {\n+       sdioif->wake_evt(pSDMMC, SDIO_CARD_INT, 0);\n+       iclr |= status & SDIO_CARD_INT_MSK;\n+   }\n+\n+   /* Clear the interrupts */\n+   pSDMMC->RINTSTS = iclr;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/sdmmc_18xx_43xx.c ./lpc_chip_43xx/src/sdmmc_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/sdmmc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sdmmc_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,592 @@\n+/*\n+ * @brief LPC18xx/43xx SD/SDIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+#include \"string.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Global instance of the current card */\n+static mci_card_struct *g_card_info;\n+\n+/* Helper definition: all SD error conditions in the status word */\n+#define SD_INT_ERROR (MCI_INT_RESP_ERR | MCI_INT_RCRC | MCI_INT_DCRC | \\\n+                     MCI_INT_RTO | MCI_INT_DTO | MCI_INT_HTO | MCI_INT_FRUN | MCI_INT_HLE | \\\n+                     MCI_INT_SBE | MCI_INT_EBE)\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Function to execute a command */\n+static int32_t sdmmc_execute_command(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg, uint32_t wait_status)\n+{\n+   int32_t step = (cmd & CMD_BIT_APP) ? 2 : 1;\n+   int32_t status = 0;\n+   uint32_t cmd_reg = 0;\n+\n+   if (!wait_status) {\n+       wait_status = (cmd & CMD_MASK_RESP) ? MCI_INT_CMD_DONE : MCI_INT_DATA_OVER;\n+   }\n+\n+   /* Clear the interrupts & FIFOs*/\n+   if (cmd & CMD_BIT_DATA) {\n+       Chip_SDIF_SetClearIntFifo(pSDMMC);\n+   }\n+\n+   /* also check error conditions */\n+   wait_status |= MCI_INT_EBE | MCI_INT_SBE | MCI_INT_HLE | MCI_INT_RTO | MCI_INT_RCRC | MCI_INT_RESP_ERR;\n+   if (wait_status & MCI_INT_DATA_OVER) {\n+       wait_status |= MCI_INT_FRUN | MCI_INT_HTO | MCI_INT_DTO | MCI_INT_DCRC;\n+   }\n+\n+   while (step) {\n+       Chip_SDIF_SetClock(pSDMMC, Chip_Clock_GetBaseClocktHz(CLK_BASE_SDIO), g_card_info->card_info.speed);\n+\n+       /* Clear the interrupts */\n+       Chip_SDIF_ClrIntStatus(pSDMMC, 0xFFFFFFFF);\n+\n+       g_card_info->card_info.evsetup_cb((void *) &wait_status);\n+\n+       switch (step) {\n+       case 1: /* Execute command */\n+           cmd_reg = ((cmd & CMD_MASK_CMD) >> CMD_SHIFT_CMD) |\n+                     ((cmd & CMD_BIT_INIT)  ? MCI_CMD_INIT : 0) |\n+                     ((cmd & CMD_BIT_DATA)  ? (MCI_CMD_DAT_EXP | MCI_CMD_PRV_DAT_WAIT) : 0) |\n+                     (((cmd & CMD_MASK_RESP) == CMD_RESP_R2) ? MCI_CMD_RESP_LONG : 0) |\n+                     ((cmd & CMD_MASK_RESP) ? MCI_CMD_RESP_EXP : 0) |\n+                     ((cmd & CMD_BIT_WRITE)  ? MCI_CMD_DAT_WR : 0) |\n+                     ((cmd & CMD_BIT_STREAM) ? MCI_CMD_STRM_MODE : 0) |\n+                     ((cmd & CMD_BIT_BUSY) ? MCI_CMD_STOP : 0) |\n+                     ((cmd & CMD_BIT_AUTO_STOP)  ? MCI_CMD_SEND_STOP : 0) |\n+                     MCI_CMD_START;\n+\n+           /* wait for previos data finsh for select/deselect commands */\n+           if (((cmd & CMD_MASK_CMD) >> CMD_SHIFT_CMD) == MMC_SELECT_CARD) {\n+               cmd_reg |= MCI_CMD_PRV_DAT_WAIT;\n+           }\n+\n+           /* wait for command to be accepted by CIU */\n+           if (Chip_SDIF_SendCmd(pSDMMC, cmd_reg, arg) == 0) {\n+               --step;\n+           }\n+           break;\n+\n+       case 0:\n+           return 0;\n+\n+       case 2: /* APP prefix */\n+           cmd_reg = MMC_APP_CMD | MCI_CMD_RESP_EXP |\n+                     ((cmd & CMD_BIT_INIT)  ? MCI_CMD_INIT : 0) |\n+                     MCI_CMD_START;\n+\n+           if (Chip_SDIF_SendCmd(pSDMMC, cmd_reg, g_card_info->card_info.rca << 16) == 0) {\n+               --step;\n+           }\n+           break;\n+       }\n+\n+       /* wait for command response */\n+       status = g_card_info->card_info.waitfunc_cb();\n+\n+       /* We return an error if there is a timeout, even if we've fetched  a response */\n+       if (status & SD_INT_ERROR) {\n+           return status;\n+       }\n+\n+       if (status & MCI_INT_CMD_DONE) {\n+           switch (cmd & CMD_MASK_RESP) {\n+           case 0:\n+               break;\n+\n+           case CMD_RESP_R1:\n+           case CMD_RESP_R3:\n+           case CMD_RESP_R2:\n+               Chip_SDIF_GetResponse(pSDMMC, &g_card_info->card_info.response[0]);\n+               break;\n+           }\n+       }\n+   }\n+\n+   return 0;\n+}\n+\n+/* Checks whether card is acquired properly or not */\n+static int32_t prv_card_acquired(void)\n+{\n+   return g_card_info->card_info.cid[0] != 0;\n+}\n+\n+/* Helper function to get a bit field withing multi-word  buffer. Used to get\n+   fields with-in CSD & EXT-CSD */\n+static uint32_t prv_get_bits(int32_t start, int32_t end, uint32_t *data)\n+{\n+   uint32_t v;\n+   uint32_t i = end >> 5;\n+   uint32_t j = start & 0x1f;\n+\n+   if (i == (start >> 5)) {\n+       v = (data[i] >> j);\n+   }\n+   else {\n+       v = ((data[i] << (32 - j)) | (data[start >> 5] >> j));\n+   }\n+\n+   return v & ((1 << (end - start + 1)) - 1);\n+}\n+\n+/* Function to process the CSD & EXT-CSD of the card */\n+static void prv_process_csd(LPC_SDMMC_T *pSDMMC)\n+{\n+   int32_t status = 0;\n+   int32_t c_size = 0;\n+   int32_t c_size_mult = 0;\n+   int32_t mult = 0;\n+\n+   /* compute block length based on CSD response */\n+   g_card_info->card_info.block_len = 1 << prv_get_bits(80, 83, g_card_info->card_info.csd);\n+\n+   if ((g_card_info->card_info.card_type & CARD_TYPE_HC) && (g_card_info->card_info.card_type & CARD_TYPE_SD)) {\n+       /* See section 5.3.3 CSD Register (CSD Version 2.0) of SD2.0 spec  an explanation for the calculation of these values */\n+       c_size = prv_get_bits(48, 63, (uint32_t *) g_card_info->card_info.csd) + 1;\n+       g_card_info->card_info.blocknr = c_size << 10;  /* 512 byte blocks */\n+   }\n+   else {\n+       /* See section 5.3 of the 4.1 revision of the MMC specs for  an explanation for the calculation of these values */\n+       c_size = prv_get_bits(62, 73, (uint32_t *) g_card_info->card_info.csd);\n+       c_size_mult = prv_get_bits(47, 49, (uint32_t *) g_card_info->card_info.csd);\n+       mult = 1 << (c_size_mult + 2);\n+       g_card_info->card_info.blocknr = (c_size + 1) * mult;\n+\n+       /* adjust blocknr to 512/block */\n+       if (g_card_info->card_info.block_len > MMC_SECTOR_SIZE) {\n+           g_card_info->card_info.blocknr = g_card_info->card_info.blocknr * (g_card_info->card_info.block_len >> 9);\n+       }\n+\n+       /* get extended CSD for newer MMC cards CSD spec >= 4.0*/\n+       if (((g_card_info->card_info.card_type & CARD_TYPE_SD) == 0) &&\n+           (prv_get_bits(122, 125, (uint32_t *) g_card_info->card_info.csd) >= 4)) {\n+           /* put card in trans state */\n+           status = sdmmc_execute_command(pSDMMC, CMD_SELECT_CARD, g_card_info->card_info.rca << 16, 0);\n+\n+           /* set block size and byte count */\n+           Chip_SDIF_SetBlkSizeByteCnt(pSDMMC, MMC_SECTOR_SIZE);\n+\n+           /* send EXT_CSD command */\n+           Chip_SDIF_DmaSetup(pSDMMC,\n+                             &g_card_info->sdif_dev,\n+                             (uint32_t) g_card_info->card_info.ext_csd,\n+                             MMC_SECTOR_SIZE);\n+\n+           status = sdmmc_execute_command(pSDMMC, CMD_SEND_EXT_CSD, 0, 0 | MCI_INT_DATA_OVER);\n+           if ((status & SD_INT_ERROR) == 0) {\n+               /* check EXT_CSD_VER is greater than 1.1 */\n+               if ((g_card_info->card_info.ext_csd[48] & 0xFF) > 1) {\n+                   g_card_info->card_info.blocknr = g_card_info->card_info.ext_csd[53];/* bytes 212:215 represent sec count */\n+\n+               }\n+               /* switch to 52MHz clock if card type is set to 1 or else set to 26MHz */\n+               if ((g_card_info->card_info.ext_csd[49] & 0xFF) == 1) {\n+                   /* for type 1 MMC cards high speed is 52MHz */\n+                   g_card_info->card_info.speed = MMC_HIGH_BUS_MAX_CLOCK;\n+               }\n+               else {\n+                   /* for type 0 MMC cards high speed is 26MHz */\n+                   g_card_info->card_info.speed = MMC_LOW_BUS_MAX_CLOCK;\n+               }\n+           }\n+       }\n+   }\n+\n+   g_card_info->card_info.device_size = (uint64_t) g_card_info->card_info.blocknr << 9;    /* blocknr * 512 */\n+}\n+\n+/* Puts current selected card in trans state */\n+static int32_t prv_set_trans_state(LPC_SDMMC_T *pSDMMC)\n+{\n+   uint32_t status;\n+\n+   /* get current state of the card */\n+   status = sdmmc_execute_command(pSDMMC, CMD_SEND_STATUS, g_card_info->card_info.rca << 16, 0);\n+   if (status & MCI_INT_RTO) {\n+       /* unable to get the card state. So return immediatly. */\n+       return -1;\n+   }\n+\n+   /* check card state in response */\n+   status = R1_CURRENT_STATE(g_card_info->card_info.response[0]);\n+   switch (status) {\n+   case SDMMC_STBY_ST:\n+       /* put card in 'Trans' state */\n+       status = sdmmc_execute_command(pSDMMC, CMD_SELECT_CARD, g_card_info->card_info.rca << 16, 0);\n+       if (status != 0) {\n+           /* unable to put the card in Trans state. So return immediatly. */\n+           return -1;\n+       }\n+       break;\n+\n+   case SDMMC_TRAN_ST:\n+       /*do nothing */\n+       break;\n+\n+   default:\n+       /* card shouldn't be in other states so return */\n+       return -1;\n+   }\n+\n+   return 0;\n+}\n+\n+/* Sets card data width and block size */\n+static int32_t prv_set_card_params(LPC_SDMMC_T *pSDMMC)\n+{\n+   int32_t status;\n+\n+#if SDIO_BUS_WIDTH > 1\n+   if (g_card_info->card_info.card_type & CARD_TYPE_SD) {\n+       status = sdmmc_execute_command(pSDMMC, CMD_SD_SET_WIDTH, 2, 0);\n+       if (status != 0) {\n+           return -1;\n+       }\n+\n+       /* if positive response */\n+       Chip_SDIF_SetCardType(pSDMMC, MCI_CTYPE_4BIT);\n+   }\n+#elif SDIO_BUS_WIDTH > 4\n+#error 8-bit mode not supported yet!\n+#endif\n+\n+   /* set block length */\n+   Chip_SDIF_SetBlkSize(pSDMMC, MMC_SECTOR_SIZE);\n+   status = sdmmc_execute_command(pSDMMC, CMD_SET_BLOCKLEN, MMC_SECTOR_SIZE, 0);\n+   if (status != 0) {\n+       return -1;\n+   }\n+\n+   return 0;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+/* Get card's current state (idle, transfer, program, etc.) */\n+int32_t Chip_SDMMC_GetState(LPC_SDMMC_T *pSDMMC)\n+{\n+   uint32_t status;\n+\n+   /* get current state of the card */\n+   status = sdmmc_execute_command(pSDMMC, CMD_SEND_STATUS, g_card_info->card_info.rca << 16, 0);\n+   if (status & MCI_INT_RTO) {\n+       return -1;\n+   }\n+\n+   /* check card state in response */\n+   return (int32_t) R1_CURRENT_STATE(g_card_info->card_info.response[0]);\n+}\n+\n+/* Function to enumerate the SD/MMC/SDHC/MMC+ cards */\n+uint32_t Chip_SDMMC_Acquire(LPC_SDMMC_T *pSDMMC, mci_card_struct *pcardinfo)\n+{\n+   int32_t status;\n+   int32_t tries = 0;\n+   uint32_t ocr = OCR_VOLTAGE_RANGE_MSK;\n+   uint32_t r;\n+   int32_t state = 0;\n+   uint32_t command = 0;\n+\n+   g_card_info = pcardinfo;\n+\n+   /* clear card type */\n+   Chip_SDIF_SetCardType(pSDMMC, 0);\n+\n+   /* set high speed for the card as 20MHz */\n+   g_card_info->card_info.speed = MMC_MAX_CLOCK;\n+\n+   status = sdmmc_execute_command(pSDMMC, CMD_IDLE, 0, MCI_INT_CMD_DONE);\n+\n+   while (state < 100) {\n+       switch (state) {\n+       case 0: /* Setup for SD */\n+           /* check if it is SDHC card */\n+           status = sdmmc_execute_command(pSDMMC, CMD_SD_SEND_IF_COND, SD_SEND_IF_ARG, 0);\n+           if (!(status & MCI_INT_RTO)) {\n+               /* check response has same echo pattern */\n+               if ((g_card_info->card_info.response[0] & SD_SEND_IF_ECHO_MSK) == SD_SEND_IF_RESP) {\n+                   ocr |= OCR_HC_CCS;\n+               }\n+           }\n+\n+           ++state;\n+           command = CMD_SD_OP_COND;\n+           tries = INIT_OP_RETRIES;\n+\n+           /* assume SD card */\n+           g_card_info->card_info.card_type |= CARD_TYPE_SD;\n+           g_card_info->card_info.speed = SD_MAX_CLOCK;\n+           break;\n+\n+       case 10:    /* Setup for MMC */\n+           /* start fresh for MMC crds */\n+           g_card_info->card_info.card_type &= ~CARD_TYPE_SD;\n+           status = sdmmc_execute_command(pSDMMC, CMD_IDLE, 0, MCI_INT_CMD_DONE);\n+           command = CMD_MMC_OP_COND;\n+           tries = INIT_OP_RETRIES;\n+           ocr |= OCR_HC_CCS;\n+           ++state;\n+\n+           /* for MMC cards high speed is 20MHz */\n+           g_card_info->card_info.speed = MMC_MAX_CLOCK;\n+           break;\n+\n+       case 1:\n+       case 11:\n+           status = sdmmc_execute_command(pSDMMC, command, 0, 0);\n+           if (status & MCI_INT_RTO) {\n+               state += 9; /* Mode unavailable */\n+           }\n+           else {\n+               ++state;\n+           }\n+           break;\n+\n+       case 2:     /* Initial OCR check  */\n+       case 12:\n+           ocr = g_card_info->card_info.response[0] | (ocr & OCR_HC_CCS);\n+           if (ocr & OCR_ALL_READY) {\n+               ++state;\n+           }\n+           else {\n+               state += 2;\n+           }\n+           break;\n+\n+       case 3:     /* Initial wait for OCR clear */\n+       case 13:\n+           while ((ocr & OCR_ALL_READY) && --tries > 0) {\n+               g_card_info->card_info.msdelay_func(MS_ACQUIRE_DELAY);\n+               status = sdmmc_execute_command(pSDMMC, command, 0, 0);\n+               ocr = g_card_info->card_info.response[0] | (ocr & OCR_HC_CCS);\n+           }\n+           if (ocr & OCR_ALL_READY) {\n+               state += 7;\n+           }\n+           else {\n+               ++state;\n+           }\n+           break;\n+\n+       case 14:\n+           /* for MMC cards set high capacity bit */\n+           ocr |= OCR_HC_CCS;\n+\n+       case 4: /* Assign OCR */\n+           tries = SET_OP_RETRIES;\n+           ocr &= OCR_VOLTAGE_RANGE_MSK | OCR_HC_CCS;  /* Mask for the bits we care about */\n+           do {\n+               g_card_info->card_info.msdelay_func(MS_ACQUIRE_DELAY);\n+               status = sdmmc_execute_command(pSDMMC, command, ocr, 0);\n+               r = g_card_info->card_info.response[0];\n+           } while (!(r & OCR_ALL_READY) && --tries > 0);\n+\n+           if (r & OCR_ALL_READY) {\n+               /* is it high capacity card */\n+               g_card_info->card_info.card_type |= (r & OCR_HC_CCS);\n+               ++state;\n+           }\n+           else {\n+               state += 6;\n+           }\n+           break;\n+\n+       case 5: /* CID polling */\n+       case 15:\n+           status = sdmmc_execute_command(pSDMMC, CMD_ALL_SEND_CID, 0, 0);\n+           memcpy(&g_card_info->card_info.cid, &g_card_info->card_info.response[0], 16);\n+           ++state;\n+           break;\n+\n+       case 6: /* RCA send, for SD get RCA */\n+           status = sdmmc_execute_command(pSDMMC, CMD_SD_SEND_RCA, 0, 0);\n+           g_card_info->card_info.rca = (g_card_info->card_info.response[0]) >> 16;\n+           ++state;\n+           break;\n+\n+       case 16:    /* RCA assignment for MMC set to 1 */\n+           g_card_info->card_info.rca = 1;\n+           status = sdmmc_execute_command(pSDMMC, CMD_MMC_SET_RCA, g_card_info->card_info.rca << 16, 0);\n+           ++state;\n+           break;\n+\n+       case 7:\n+       case 17:\n+           status = sdmmc_execute_command(pSDMMC, CMD_SEND_CSD, g_card_info->card_info.rca << 16, 0);\n+           memcpy(&g_card_info->card_info.csd, &g_card_info->card_info.response[0], 16);\n+           state = 100;\n+           break;\n+\n+       default:\n+           state += 100;   /* break from while loop */\n+           break;\n+       }\n+   }\n+\n+   /* Compute card size, block size and no. of blocks  based on CSD response recived. */\n+   if (prv_card_acquired()) {\n+       prv_process_csd(pSDMMC);\n+\n+       /* Setup card data width and block size (once) */\n+       if (prv_set_trans_state(pSDMMC) != 0) {\n+           return 0;\n+       }\n+       if (prv_set_card_params(pSDMMC) != 0) {\n+           return 0;\n+       }\n+   }\n+\n+   return prv_card_acquired();\n+}\n+\n+/* Get the device size of SD/MMC card (after enumeration) */\n+uint64_t Chip_SDMMC_GetDeviceSize(LPC_SDMMC_T *pSDMMC)\n+{\n+   return g_card_info->card_info.device_size;\n+}\n+\n+/* Get the number of blocks in SD/MMC card (after enumeration) */\n+int32_t Chip_SDMMC_GetDeviceBlocks(LPC_SDMMC_T *pSDMMC)\n+{\n+   return g_card_info->card_info.blocknr;\n+}\n+\n+/* Performs the read of data from the SD/MMC card */\n+int32_t Chip_SDMMC_ReadBlocks(LPC_SDMMC_T *pSDMMC, void *buffer, int32_t start_block, int32_t num_blocks)\n+{\n+   int32_t cbRead = (num_blocks) * MMC_SECTOR_SIZE;\n+   int32_t status = 0;\n+   int32_t index;\n+\n+   /* if card is not acquired return immediately */\n+   if (( start_block < 0) || ( (start_block + num_blocks) > g_card_info->card_info.blocknr) ) {\n+       return 0;\n+   }\n+\n+   /* put card in trans state */\n+   if (prv_set_trans_state(pSDMMC) != 0) {\n+       return 0;\n+   }\n+\n+   /* set number of bytes to read */\n+   Chip_SDIF_SetByteCnt(pSDMMC, cbRead);\n+\n+   /* if high capacity card use block indexing */\n+   if (g_card_info->card_info.card_type & CARD_TYPE_HC) {\n+       index = start_block;\n+   }\n+   else {  /*fix at 512 bytes*/\n+       index = start_block << 9;   // \\* g_card_info->card_info.block_len;\n+\n+   }\n+   Chip_SDIF_DmaSetup(pSDMMC, &g_card_info->sdif_dev, (uint32_t) buffer, cbRead);\n+\n+   /* Select single or multiple read based on number of blocks */\n+   if (num_blocks == 1) {\n+       status = sdmmc_execute_command(pSDMMC, CMD_READ_SINGLE, index, 0 | MCI_INT_DATA_OVER);\n+   }\n+   else {\n+       status = sdmmc_execute_command(pSDMMC, CMD_READ_MULTIPLE, index, 0 | MCI_INT_DATA_OVER);\n+   }\n+\n+   if (status != 0) {\n+       cbRead = 0;\n+   }\n+   /*Wait for card program to finish*/\n+   while (Chip_SDMMC_GetState(pSDMMC) != SDMMC_TRAN_ST) {}\n+\n+   return cbRead;\n+}\n+\n+/* Performs write of data to the SD/MMC card */\n+int32_t Chip_SDMMC_WriteBlocks(LPC_SDMMC_T *pSDMMC, void *buffer, int32_t start_block, int32_t num_blocks)\n+{\n+   int32_t cbWrote = num_blocks *  MMC_SECTOR_SIZE;\n+   int32_t status;\n+   int32_t index;\n+\n+   /* if card is not acquired return immediately */\n+   if (( start_block < 0) || ( (start_block + num_blocks) > g_card_info->card_info.blocknr) ) {\n+       return 0;\n+   }\n+\n+   /*Wait for card program to finish*/\n+   while (Chip_SDMMC_GetState(pSDMMC) != SDMMC_TRAN_ST) {}\n+\n+   /* put card in trans state */\n+   if (prv_set_trans_state(pSDMMC) != 0) {\n+       return 0;\n+   }\n+\n+   /* set number of bytes to write */\n+   Chip_SDIF_SetByteCnt(pSDMMC, cbWrote);\n+\n+   /* if high capacity card use block indexing */\n+   if (g_card_info->card_info.card_type & CARD_TYPE_HC) {\n+       index = start_block;\n+   }\n+   else {  /*fix at 512 bytes*/\n+       index = start_block << 9;   // * g_card_info->card_info.block_len;\n+\n+   }\n+\n+   Chip_SDIF_DmaSetup(pSDMMC, &g_card_info->sdif_dev, (uint32_t) buffer, cbWrote);\n+\n+   /* Select single or multiple write based on number of blocks */\n+   if (num_blocks == 1) {\n+       status = sdmmc_execute_command(pSDMMC, CMD_WRITE_SINGLE, index, 0 | MCI_INT_DATA_OVER);\n+   }\n+   else {\n+       status = sdmmc_execute_command(pSDMMC, CMD_WRITE_MULTIPLE, index, 0 | MCI_INT_DATA_OVER);\n+   }\n+\n+   /*Wait for card program to finish*/\n+   while (Chip_SDMMC_GetState(pSDMMC) != SDMMC_TRAN_ST) {}\n+\n+   if (status != 0) {\n+       cbWrote = 0;\n+   }\n+\n+   return cbWrote;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/spi_18xx_43xx.c ./lpc_chip_43xx/src/spi_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/spi_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/spi_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,227 @@\n+/*\n+ * @brief LPC43xx SPI driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+#if defined(CHIP_LPC43XX)\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Execute callback function */\n+STATIC void executeCallback(LPC_SPI_T *pSPI, SPI_CALLBACK_T pfunc)\n+{\n+   if (pfunc) {\n+       (pfunc) ();\n+   }\n+}\n+\n+/* Write byte(s) to FIFO buffer */\n+STATIC void writeData(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup, uint32_t num_bytes)\n+{\n+   uint16_t data2write = 0xFFFF;\n+\n+   if ( pXfSetup->pTxData) {\n+       data2write =  pXfSetup->pTxData[pXfSetup->cnt];\n+       if (num_bytes == 2) {\n+           data2write |= pXfSetup->pTxData[pXfSetup->cnt + 1] << 8;\n+       }\n+   }\n+\n+   Chip_SPI_SendFrame(pSPI, data2write);\n+\n+}\n+\n+/* Read byte(s) from FIFO buffer */\n+STATIC void readData(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup, uint16_t rDat, uint32_t num_bytes)\n+{\n+   rDat = Chip_SPI_ReceiveFrame(pSPI);\n+   if (pXfSetup->pRxData) {\n+       pXfSetup->pRxData[pXfSetup->cnt] = rDat;\n+       if (num_bytes == 2) {\n+           pXfSetup->pRxData[pXfSetup->cnt + 1] = rDat >> 8;\n+       }\n+   }\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* SPI Polling Read/Write in blocking mode */\n+uint32_t Chip_SPI_RWFrames_Blocking(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup)\n+{\n+   uint32_t status;\n+   uint16_t rDat = 0x0000;\n+   uint8_t bytes = 1;\n+\n+   /* Clear status */\n+   Chip_SPI_Int_FlushData(pSPI);\n+\n+   if (Chip_SPI_GetDataSize(pSPI) != SPI_BITS_8) {\n+       bytes = 2;\n+   }\n+\n+   executeCallback(pSPI, pXfSetup->fnBefTransfer);\n+\n+   while (pXfSetup->cnt < pXfSetup->length) {\n+\n+       executeCallback(pSPI, pXfSetup->fnBefFrame);\n+\n+       /* write data to buffer */\n+       writeData(pSPI, pXfSetup, bytes);\n+\n+       /* Wait for transfer completes */\n+       while (1) {\n+           status = Chip_SPI_GetStatus(pSPI);\n+           /* Check error */\n+           if (status & SPI_SR_ERROR) {\n+               goto rw_end;\n+           }\n+           if (status & SPI_SR_SPIF) {\n+               break;\n+           }\n+       }\n+\n+       executeCallback(pSPI, pXfSetup->fnAftFrame);\n+\n+       /* Read data*/\n+       readData(pSPI, pXfSetup, rDat, bytes);\n+       pXfSetup->cnt += bytes;\n+   }\n+\n+rw_end:\n+   executeCallback(pSPI, pXfSetup->fnAftTransfer);\n+   return pXfSetup->cnt;\n+}\n+\n+/* Clean all data in RX FIFO of SPI */\n+void Chip_SPI_Int_FlushData(LPC_SPI_T *pSPI)\n+{\n+   volatile uint32_t tmp;\n+   Chip_SPI_GetStatus(pSPI);\n+   tmp = Chip_SPI_ReceiveFrame(pSPI);\n+   Chip_SPI_Int_ClearStatus(pSPI, SPI_INT_SPIF);\n+}\n+\n+/* SPI Interrupt Read/Write with 8-bit frame width */\n+Status Chip_SPI_Int_RWFrames(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup, uint8_t bytes)\n+{\n+   uint32_t status;\n+   uint16_t rDat = 0x0000;\n+\n+   status = Chip_SPI_GetStatus(pSPI);\n+   /* Check error status */\n+   if (status & SPI_SR_ERROR) {\n+       return ERROR;\n+   }\n+\n+   Chip_SPI_Int_ClearStatus(pSPI, SPI_INT_SPIF);\n+   if (status & SPI_SR_SPIF) {\n+       executeCallback(pSPI, pXfSetup->fnAftFrame);\n+       if (pXfSetup->cnt < pXfSetup->length) {\n+           /* read data */\n+           readData(pSPI, pXfSetup, rDat, bytes);\n+           pXfSetup->cnt += bytes;\n+       }\n+   }\n+\n+   if (pXfSetup->cnt < pXfSetup->length) {\n+\n+       executeCallback(pSPI, pXfSetup->fnBefFrame);\n+\n+       /* Write data  */\n+       writeData(pSPI, pXfSetup, bytes);\n+   }\n+   else {\n+       executeCallback(pSPI, pXfSetup->fnAftTransfer);\n+   }\n+   return SUCCESS;\n+}\n+\n+/* SPI Interrupt Read/Write with 8-bit frame width */\n+Status Chip_SPI_Int_RWFrames8Bits(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup)\n+{\n+   return Chip_SPI_Int_RWFrames(pSPI, pXfSetup, 1);\n+}\n+\n+/* SPI Interrupt Read/Write with 16-bit frame width */\n+Status Chip_SPI_Int_RWFrames16Bits(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup)\n+{\n+   return Chip_SPI_Int_RWFrames(pSPI, pXfSetup, 2);\n+}\n+\n+/* Set the clock frequency for SPI interface */\n+void Chip_SPI_SetBitRate(LPC_SPI_T *pSPI, uint32_t bitRate)\n+{\n+   uint32_t spiClk, counter;\n+   /* Get SPI clock rate */\n+   spiClk = Chip_Clock_GetRate(CLK_SPI);\n+\n+   counter = spiClk / bitRate;\n+   if (counter < 8) {\n+       counter = 8;\n+   }\n+   counter = ((counter + 1) / 2) * 2;\n+\n+   if (counter > 254) {\n+       counter = 254;\n+   }\n+\n+   Chip_SPI_SetClockCounter(pSPI, counter);\n+}\n+\n+/* Initialize the SPI */\n+void Chip_SPI_Init(LPC_SPI_T *pSPI)\n+{\n+   Chip_Clock_Enable(CLK_SPI);\n+\n+   Chip_SPI_SetMode(pSPI, SPI_MODE_MASTER);\n+   pSPI->CR = (pSPI->CR & (~0xF1C)) | SPI_CR_BIT_EN | SPI_BITS_8 | SPI_CLOCK_CPHA0_CPOL0 | SPI_DATA_MSB_FIRST;\n+   Chip_SPI_SetBitRate(pSPI, 400000);\n+}\n+\n+/* De-initializes the SPI peripheral */\n+void Chip_SPI_DeInit(LPC_SPI_T *pSPI)\n+{\n+   Chip_Clock_Disable(CLK_SPI);\n+}\n+\n+#endif\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/ssp_18xx_43xx.c ./lpc_chip_43xx/src/ssp_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/ssp_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/ssp_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,469 @@\n+/*\n+ * @brief LPC18xx/43xx SSP driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+STATIC void SSP_Write2BFifo(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   if (xf_setup->tx_data) {\n+       Chip_SSP_SendFrame(pSSP, (*(uint16_t *) ((uint32_t) xf_setup->tx_data +\n+                                                xf_setup->tx_cnt)));\n+   }\n+   else {\n+       Chip_SSP_SendFrame(pSSP, 0xFFFF);\n+   }\n+\n+   xf_setup->tx_cnt += 2;\n+}\n+\n+/** SSP macro: write 1 bytes to FIFO buffer */\n+STATIC void SSP_Write1BFifo(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   if (xf_setup->tx_data) {\n+       Chip_SSP_SendFrame(pSSP, (*(uint8_t *) ((uint32_t) xf_setup->tx_data + xf_setup->tx_cnt)));\n+   }\n+   else {\n+       Chip_SSP_SendFrame(pSSP, 0xFF);\n+   }\n+\n+   xf_setup->tx_cnt++;\n+}\n+\n+/** SSP macro: read 1 bytes from FIFO buffer */\n+STATIC void SSP_Read2BFifo(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   uint16_t rDat;\n+\n+   while ((Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET) &&\n+          (xf_setup->rx_cnt < xf_setup->length)) {\n+       rDat = Chip_SSP_ReceiveFrame(pSSP);\n+       if (xf_setup->rx_data) {\n+           *(uint16_t *) ((uint32_t) xf_setup->rx_data + xf_setup->rx_cnt) = rDat;\n+       }\n+\n+       xf_setup->rx_cnt += 2;\n+   }\n+}\n+\n+/** SSP macro: read 2 bytes from FIFO buffer */\n+STATIC void SSP_Read1BFifo(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   uint16_t rDat;\n+\n+   while ((Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET) &&\n+          (xf_setup->rx_cnt < xf_setup->length)) {\n+       rDat = Chip_SSP_ReceiveFrame(pSSP);\n+       if (xf_setup->rx_data) {\n+           *(uint8_t *) ((uint32_t) xf_setup->rx_data + xf_setup->rx_cnt) = rDat;\n+       }\n+\n+       xf_setup->rx_cnt++;\n+   }\n+}\n+\n+/* Returns clock index for the register interface */\n+STATIC CHIP_CCU_CLK_T Chip_SSP_GetClockIndex(LPC_SSP_T *pSSP)\n+{\n+   CHIP_CCU_CLK_T clkSSP;\n+\n+   if (pSSP == LPC_SSP1) {\n+       clkSSP = CLK_MX_SSP1;\n+   }\n+   else {\n+       clkSSP = CLK_MX_SSP0;\n+   }\n+\n+   return clkSSP;\n+}\n+\n+/* Returns clock index for the peripheral block */\n+STATIC CHIP_CCU_CLK_T Chip_SSP_GetPeriphClockIndex(LPC_SSP_T *pSSP)\n+{\n+   CHIP_CCU_CLK_T clkSSP;\n+\n+   if (pSSP == LPC_SSP1) {\n+       clkSSP = CLK_APB2_SSP1;\n+   }\n+   else {\n+       clkSSP = CLK_APB0_SSP0;\n+   }\n+\n+   return clkSSP;\n+}\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/*Set up output clocks per bit for SSP bus*/\n+void Chip_SSP_SetClockRate(LPC_SSP_T *pSSP, uint32_t clk_rate, uint32_t prescale)\n+{\n+   uint32_t temp;\n+   temp = pSSP->CR0 & (~(SSP_CR0_SCR(0xFF)));\n+   pSSP->CR0 = temp | (SSP_CR0_SCR(clk_rate));\n+   pSSP->CPSR = prescale;\n+}\n+\n+/* SSP Polling Read/Write in blocking mode */\n+uint32_t Chip_SSP_RWFrames_Blocking(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   /* Clear all remaining frames in RX FIFO */\n+   while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE)) {\n+       Chip_SSP_ReceiveFrame(pSSP);\n+   }\n+\n+   /* Clear status */\n+   Chip_SSP_ClearIntPending(pSSP, SSP_INT_CLEAR_BITMASK);\n+\n+   if (Chip_SSP_GetDataSize(pSSP) > SSP_BITS_8) {\n+       while (xf_setup->rx_cnt < xf_setup->length || xf_setup->tx_cnt < xf_setup->length) {\n+           /* write data to buffer */\n+           if (( Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && ( xf_setup->tx_cnt < xf_setup->length) ) {\n+               SSP_Write2BFifo(pSSP, xf_setup);\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           SSP_Read2BFifo(pSSP, xf_setup);\n+       }\n+   }\n+   else {\n+       while (xf_setup->rx_cnt < xf_setup->length || xf_setup->tx_cnt < xf_setup->length) {\n+           /* write data to buffer */\n+           if (( Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && ( xf_setup->tx_cnt < xf_setup->length) ) {\n+               SSP_Write1BFifo(pSSP, xf_setup);\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           SSP_Read1BFifo(pSSP, xf_setup);\n+       }\n+   }\n+   if (xf_setup->tx_data) {\n+       return xf_setup->tx_cnt;\n+   }\n+   else if (xf_setup->rx_data) {\n+       return xf_setup->rx_cnt;\n+   }\n+\n+   return 0;\n+}\n+\n+/* SSP Polling Write in blocking mode */\n+uint32_t Chip_SSP_WriteFrames_Blocking(LPC_SSP_T *pSSP, const uint8_t *buffer, uint32_t buffer_len)\n+{\n+   uint32_t tx_cnt = 0, rx_cnt = 0;\n+\n+   /* Clear all remaining frames in RX FIFO */\n+   while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE)) {\n+       Chip_SSP_ReceiveFrame(pSSP);\n+   }\n+\n+   /* Clear status */\n+   Chip_SSP_ClearIntPending(pSSP, SSP_INT_CLEAR_BITMASK);\n+\n+   if (Chip_SSP_GetDataSize(pSSP) > SSP_BITS_8) {\n+       uint16_t *wdata16;\n+\n+       wdata16 = (uint16_t *) buffer;\n+\n+       while (tx_cnt < buffer_len || rx_cnt < buffer_len) {\n+           /* write data to buffer */\n+           if ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && (tx_cnt < buffer_len)) {\n+               Chip_SSP_SendFrame(pSSP, *wdata16);\n+               wdata16++;\n+               tx_cnt += 2;\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET) {\n+               Chip_SSP_ReceiveFrame(pSSP);    /* read dummy data */\n+               rx_cnt += 2;\n+           }\n+       }\n+   }\n+   else {\n+       const uint8_t *wdata8;\n+\n+       wdata8 = buffer;\n+\n+       while (tx_cnt < buffer_len || rx_cnt < buffer_len) {\n+           /* write data to buffer */\n+           if ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && (tx_cnt < buffer_len)) {\n+               Chip_SSP_SendFrame(pSSP, *wdata8);\n+               wdata8++;\n+               tx_cnt++;\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET && rx_cnt < buffer_len) {\n+               Chip_SSP_ReceiveFrame(pSSP);    /* read dummy data */\n+               rx_cnt++;\n+           }\n+       }\n+   }\n+\n+   return tx_cnt;\n+\n+}\n+\n+/* SSP Polling Read in blocking mode */\n+uint32_t Chip_SSP_ReadFrames_Blocking(LPC_SSP_T *pSSP, uint8_t *buffer, uint32_t buffer_len)\n+{\n+   uint32_t rx_cnt = 0, tx_cnt = 0;\n+\n+   /* Clear all remaining frames in RX FIFO */\n+   while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE)) {\n+       Chip_SSP_ReceiveFrame(pSSP);\n+   }\n+\n+   /* Clear status */\n+   Chip_SSP_ClearIntPending(pSSP, SSP_INT_CLEAR_BITMASK);\n+\n+   if (Chip_SSP_GetDataSize(pSSP) > SSP_BITS_8) {\n+       uint16_t *rdata16;\n+\n+       rdata16 = (uint16_t *) buffer;\n+\n+       while (tx_cnt < buffer_len || rx_cnt < buffer_len) {\n+           /* write data to buffer */\n+           if ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && (tx_cnt < buffer_len)) {\n+               Chip_SSP_SendFrame(pSSP, 0xFFFF);   /* just send dummy data */\n+               tx_cnt += 2;\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET && rx_cnt < buffer_len) {\n+               *rdata16 = Chip_SSP_ReceiveFrame(pSSP);\n+               rdata16++;\n+               rx_cnt += 2;\n+           }\n+       }\n+   }\n+   else {\n+       uint8_t *rdata8;\n+\n+       rdata8 = buffer;\n+\n+       while (tx_cnt < buffer_len || rx_cnt < buffer_len) {\n+           /* write data to buffer */\n+           if ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && (tx_cnt < buffer_len)) {\n+               Chip_SSP_SendFrame(pSSP, 0xFF); /* just send dummy data      */\n+               tx_cnt++;\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET && rx_cnt < buffer_len) {\n+               *rdata8 = Chip_SSP_ReceiveFrame(pSSP);\n+               rdata8++;\n+               rx_cnt++;\n+           }\n+       }\n+   }\n+\n+   return rx_cnt;\n+\n+}\n+\n+/* Clean all data in RX FIFO of SSP */\n+void Chip_SSP_Int_FlushData(LPC_SSP_T *pSSP)\n+{\n+   if (Chip_SSP_GetStatus(pSSP, SSP_STAT_BSY)) {\n+       while (Chip_SSP_GetStatus(pSSP, SSP_STAT_BSY)) {}\n+   }\n+\n+   /* Clear all remaining frames in RX FIFO */\n+   while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE)) {\n+       Chip_SSP_ReceiveFrame(pSSP);\n+   }\n+\n+   /* Clear status */\n+   Chip_SSP_ClearIntPending(pSSP, SSP_INT_CLEAR_BITMASK);\n+}\n+\n+/* SSP Interrupt Read/Write with 8-bit frame width */\n+Status Chip_SSP_Int_RWFrames8Bits(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   /* Check overrun error in RIS register */\n+   if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+       return ERROR;\n+   }\n+\n+   if ((xf_setup->tx_cnt != xf_setup->length) || (xf_setup->rx_cnt != xf_setup->length)) {\n+       /* check if RX FIFO contains data */\n+       SSP_Read1BFifo(pSSP, xf_setup);\n+\n+       while ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF)) && (xf_setup->tx_cnt != xf_setup->length)) {\n+           /* Write data to buffer */\n+           SSP_Write1BFifo(pSSP, xf_setup);\n+\n+           /* Check overrun error in RIS register */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /*  Check for any data available in RX FIFO */\n+           SSP_Read1BFifo(pSSP, xf_setup);\n+       }\n+\n+       return SUCCESS;\n+   }\n+\n+   return ERROR;\n+}\n+\n+/* SSP Interrupt Read/Write with 16-bit frame width */\n+Status Chip_SSP_Int_RWFrames16Bits(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   /* Check overrun error in RIS register */\n+   if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+       return ERROR;\n+   }\n+\n+   if ((xf_setup->tx_cnt != xf_setup->length) || (xf_setup->rx_cnt != xf_setup->length)) {\n+       /* check if RX FIFO contains data */\n+       SSP_Read2BFifo(pSSP, xf_setup);\n+\n+       while ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF)) && (xf_setup->tx_cnt != xf_setup->length)) {\n+           /* Write data to buffer */\n+           SSP_Write2BFifo(pSSP, xf_setup);\n+\n+           /* Check overrun error in RIS register */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /*  Check for any data available in RX FIFO          */\n+           SSP_Read2BFifo(pSSP, xf_setup);\n+       }\n+\n+       return SUCCESS;\n+   }\n+\n+   return ERROR;\n+}\n+\n+/* Set the SSP operating modes, master or slave */\n+void Chip_SSP_SetMaster(LPC_SSP_T *pSSP, bool master)\n+{\n+   if (master) {\n+       Chip_SSP_Set_Mode(pSSP, SSP_MODE_MASTER);\n+   }\n+   else {\n+       Chip_SSP_Set_Mode(pSSP, SSP_MODE_SLAVE);\n+   }\n+}\n+\n+/* Set the clock frequency for SSP interface */\n+void Chip_SSP_SetBitRate(LPC_SSP_T *pSSP, uint32_t bitRate)\n+{\n+   uint32_t ssp_clk, cr0_div, cmp_clk, prescale;\n+\n+   ssp_clk = Chip_Clock_GetRate(Chip_SSP_GetPeriphClockIndex(pSSP));\n+\n+   cr0_div = 0;\n+   cmp_clk = 0xFFFFFFFF;\n+   prescale = 2;\n+\n+   while (cmp_clk > bitRate) {\n+       cmp_clk = ssp_clk / ((cr0_div + 1) * prescale);\n+       if (cmp_clk > bitRate) {\n+           cr0_div++;\n+           if (cr0_div > 0xFF) {\n+               cr0_div = 0;\n+               prescale += 2;\n+           }\n+       }\n+   }\n+\n+   Chip_SSP_SetClockRate(pSSP, cr0_div, prescale);\n+}\n+\n+/* Initialize the SSP */\n+void Chip_SSP_Init(LPC_SSP_T *pSSP)\n+{\n+   Chip_Clock_Enable(Chip_SSP_GetClockIndex(pSSP));\n+   Chip_Clock_Enable(Chip_SSP_GetPeriphClockIndex(pSSP));\n+\n+   Chip_SSP_Set_Mode(pSSP, SSP_MODE_MASTER);\n+   Chip_SSP_SetFormat(pSSP, SSP_BITS_8, SSP_FRAMEFORMAT_SPI, SSP_CLOCK_CPHA0_CPOL0);\n+   Chip_SSP_SetBitRate(pSSP, 100000);\n+}\n+\n+/* De-initializes the SSP peripheral */\n+void Chip_SSP_DeInit(LPC_SSP_T *pSSP)\n+{\n+   Chip_SSP_Disable(pSSP);\n+\n+   Chip_Clock_Disable(Chip_SSP_GetPeriphClockIndex(pSSP));\n+   Chip_Clock_Disable(Chip_SSP_GetClockIndex(pSSP));\n+\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/stopwatch_18xx_43xx.c ./lpc_chip_43xx/src/stopwatch_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/stopwatch_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/stopwatch_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,106 @@\n+/*\n+ * @brief LPC18xx/43xx specific stopwatch implementation\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+#include \"stopwatch.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Precompute these to optimize runtime */\n+static uint32_t ticksPerSecond;\n+static uint32_t ticksPerMs;\n+static uint32_t ticksPerUs;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize stopwatch */\n+void StopWatch_Init(void)\n+{\n+   /* Use timer 1. Set prescaler to divide by 8 */\n+   const uint32_t prescaleDivisor = 8;\n+   Chip_TIMER_Init(LPC_TIMER0);\n+   Chip_TIMER_PrescaleSet(LPC_TIMER0, prescaleDivisor - 1);\n+   Chip_TIMER_Enable(LPC_TIMER0);\n+\n+   /* Pre-compute tick rate. */\n+   ticksPerSecond = Chip_Clock_GetRate(CLK_MX_TIMER0) / prescaleDivisor;\n+   ticksPerMs = ticksPerSecond / 1000;\n+   ticksPerUs = ticksPerSecond / 1000000;\n+}\n+\n+/* Start a stopwatch */\n+uint32_t StopWatch_Start(void)\n+{\n+   /* Return the current timer count. */\n+   return Chip_TIMER_ReadCount(LPC_TIMER0);\n+}\n+\n+/* Returns number of ticks per second of the stopwatch timer */\n+uint32_t StopWatch_TicksPerSecond(void)\n+{\n+   return ticksPerSecond;\n+}\n+\n+/* Converts from stopwatch ticks to mS. */\n+uint32_t StopWatch_TicksToMs(uint32_t ticks)\n+{\n+   return ticks / ticksPerMs;\n+}\n+\n+/* Converts from stopwatch ticks to uS. */\n+uint32_t StopWatch_TicksToUs(uint32_t ticks)\n+{\n+   return ticks / ticksPerUs;\n+}\n+\n+/* Converts from mS to stopwatch ticks. */\n+uint32_t StopWatch_MsToTicks(uint32_t mS)\n+{\n+   return mS * ticksPerMs;\n+}\n+\n+/* Converts from uS to stopwatch ticks. */\n+uint32_t StopWatch_UsToTicks(uint32_t uS)\n+{\n+   return uS * ticksPerUs;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/sysinit_18xx_43xx.c ./lpc_chip_43xx/src/sysinit_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/sysinit_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sysinit_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,162 @@\n+/*\n+ * @brief LPC18xx/LPC43xx Chip specific SystemInit\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Structure for initial base clock states */\n+struct CLK_BASE_STATES {\n+   CHIP_CGU_BASE_CLK_T clk;    /* Base clock */\n+   CHIP_CGU_CLKIN_T clkin; /* Base clock source, see UM for allowable souorces per base clock */\n+   bool autoblock_enab;    /* Set to true to enable autoblocking on frequency change */\n+   bool powerdn;           /* Set to true if the base clock is initially powered down */\n+};\n+\n+static const struct CLK_BASE_STATES InitClkStates[] = {\n+   {CLK_BASE_SAFE, CLKIN_IRC, true, false},\n+   {CLK_BASE_APB1, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_APB3, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_USB0, CLKIN_USBPLL, true, true},\n+#if defined(CHIP_LPC43XX)\n+   {CLK_BASE_PERIPH, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_SPI, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_ADCHS, CLKIN_MAINPLL, true, true},\n+#endif\n+   {CLK_BASE_SDIO, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_SSP0, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_SSP1, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_UART0, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_UART1, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_UART2, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_UART3, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_OUT, CLKINPUT_PD, true, false},\n+   {CLK_BASE_APLL, CLKINPUT_PD, true, false},\n+   {CLK_BASE_CGU_OUT0, CLKINPUT_PD, true, false},\n+   {CLK_BASE_CGU_OUT1, CLKINPUT_PD, true, false},\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+/* Setup Chip Core clock */\n+void Chip_SetupCoreClock(CHIP_CGU_CLKIN_T clkin, uint32_t core_freq, bool setbase)\n+{\n+   int i;\n+   volatile uint32_t delay = 5500;\n+   uint32_t direct = 0;\n+   PLL_PARAM_T ppll;\n+\n+   if (clkin == CLKIN_CRYSTAL) {\n+       /* Switch main system clocking to crystal */\n+       Chip_Clock_EnableCrystal();\n+   }\n+   Chip_Clock_SetBaseClock(CLK_BASE_MX, clkin, true, false);\n+   Chip_Clock_DisableMainPLL(); /* Disable PLL */\n+\n+   /* Calculate the PLL Parameters */\n+   ppll.srcin = clkin;\n+   Chip_Clock_CalcMainPLLValue(core_freq, &ppll);\n+\n+   if (core_freq > 110000000UL) {\n+       if (!(ppll.ctrl & (1 << 7)) || ppll.psel) {\n+           PLL_PARAM_T lpll;\n+           /* Calculate the PLL Parameters */\n+           lpll.srcin = clkin;\n+           Chip_Clock_CalcMainPLLValue(110000000UL, &lpll);\n+           Chip_Clock_SetupMainPLL(&lpll);\n+           /* Wait for the PLL to lock */\n+           while(!Chip_Clock_MainPLLLocked()) {}\n+           Chip_Clock_SetBaseClock(CLK_BASE_MX, CLKIN_MAINPLL, true, false);\n+           while(delay --){}\n+           delay = 5500;\n+       } else {\n+           direct = 1;\n+           ppll.ctrl &= ~(1 << 7);\n+       }\n+   }\n+\n+   /* Setup and start the PLL */\n+   Chip_Clock_SetupMainPLL(&ppll);\n+\n+   /* Wait for the PLL to lock */\n+   while(!Chip_Clock_MainPLLLocked()) {}\n+\n+   /* Set core clock base as PLL1 */\n+   Chip_Clock_SetBaseClock(CLK_BASE_MX, CLKIN_MAINPLL, true, false);\n+\n+   while(delay --){} /* Wait for approx 50 uSec */\n+   if (direct) {\n+       delay = 5500;\n+       ppll.ctrl |= 1 << 7;\n+       Chip_Clock_SetupMainPLL(&ppll); /* Set DIRECT to operate at full frequency */\n+       while(delay --){} /* Wait for approx 50 uSec */\n+   }\n+\n+   if (setbase) {\n+       /* Setup system base clocks and initial states. This won't enable and\n+          disable individual clocks, but sets up the base clock sources for\n+          each individual peripheral clock. */\n+       for (i = 0; i < (sizeof(InitClkStates) / sizeof(InitClkStates[0])); i++) {\n+           Chip_Clock_SetBaseClock(InitClkStates[i].clk, InitClkStates[i].clkin,\n+                                   InitClkStates[i].autoblock_enab, InitClkStates[i].powerdn);\n+       }\n+   }\n+}\n+\n+/* Setup system clocking */\n+void Chip_SetupXtalClocking(void)\n+{\n+   Chip_SetupCoreClock(CLKIN_CRYSTAL, MAX_CLOCK_FREQ, true);\n+}\n+\n+/* Set up and initialize hardware prior to call to main */\n+void Chip_SetupIrcClocking(void)\n+{\n+   Chip_SetupCoreClock(CLKIN_IRC, MAX_CLOCK_FREQ, true);\n+}\n+\n+/* Set up and initialize hardware prior to call to main */\n+void Chip_SystemInit(void)\n+{\n+   /* Initial internal clocking */\n+   Chip_SetupIrcClocking();\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/timer_18xx_43xx.c ./lpc_chip_43xx/src/timer_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/timer_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/timer_18xx_43xx.c\t2017-02-27 20:42:08.484009492 -0300\n@@ -0,0 +1,117 @@\n+/*\n+ * @brief LPC18xx/43xx 16/32-bit Timer/PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Returns clock index for the peripheral block */\n+STATIC CHIP_CCU_CLK_T Chip_TIMER_GetClockIndex(LPC_TIMER_T *pTMR)\n+{\n+   CHIP_CCU_CLK_T clkTMR;\n+\n+   if (pTMR == LPC_TIMER3) {\n+       clkTMR = CLK_MX_TIMER3;\n+   }\n+    else if (pTMR == LPC_TIMER2) {\n+       clkTMR = CLK_MX_TIMER2;\n+   }\n+    else if (pTMR == LPC_TIMER1) {\n+       clkTMR = CLK_MX_TIMER1;\n+   }\n+   else {\n+       clkTMR = CLK_MX_TIMER0;\n+   }\n+\n+   return clkTMR;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize a timer */\n+void Chip_TIMER_Init(LPC_TIMER_T *pTMR)\n+{\n+   Chip_Clock_Enable(Chip_TIMER_GetClockIndex(pTMR));\n+}\n+\n+/* Shutdown a timer */\n+void Chip_TIMER_DeInit(LPC_TIMER_T *pTMR)\n+{\n+   Chip_Clock_Disable(Chip_TIMER_GetClockIndex(pTMR));\n+}\n+\n+/* Resets the timer terminal and prescale counts to 0 */\n+void Chip_TIMER_Reset(LPC_TIMER_T *pTMR)\n+{\n+   uint32_t reg;\n+\n+   /* Disable timer, set terminal count to non-0 */\n+   reg = pTMR->TCR;\n+   pTMR->TCR = 0;\n+   pTMR->TC = 1;\n+\n+   /* Reset timer counter */\n+   pTMR->TCR = TIMER_RESET;\n+\n+   /* Wait for terminal count to clear */\n+   while (pTMR->TC != 0) {}\n+\n+   /* Restore timer state */\n+   pTMR->TCR = reg;\n+}\n+\n+/* Sets external match control (MATn.matchnum) pin control */\n+void Chip_TIMER_ExtMatchControlSet(LPC_TIMER_T *pTMR, int8_t initial_state,\n+                                  TIMER_PIN_MATCH_STATE_T matchState, int8_t matchnum)\n+{\n+   uint32_t mask, reg;\n+\n+   /* Clear bits corresponding to selected match register */\n+   mask = (1 << matchnum) | (0x03 << (4 + (matchnum * 2)));\n+   reg = pTMR->EMR &= ~mask;\n+\n+   /* Set new configuration for selected match register */\n+   pTMR->EMR = reg | (((uint32_t) initial_state) << matchnum) |\n+               (((uint32_t) matchState) << (4 + (matchnum * 2)));\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/uart_18xx_43xx.c ./lpc_chip_43xx/src/uart_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/uart_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/uart_18xx_43xx.c\t2017-02-27 20:42:08.488009493 -0300\n@@ -0,0 +1,424 @@\n+/*\n+ * @brief LPC18xx/43xx UART chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Autobaud status flag */\n+STATIC volatile FlagStatus ABsyncSts = RESET;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+ /* UART Peripheral clocks */\n+static const CHIP_CCU_CLK_T UART_PClock[] = {CLK_MX_UART0, CLK_MX_UART1, CLK_MX_UART2, CLK_MX_UART3};\n+\n+/* UART Bus clocks */\n+static const CHIP_CCU_CLK_T UART_BClock[] = {CLK_APB0_UART0, CLK_APB0_UART1, CLK_APB2_UART2, CLK_APB2_UART3};\n+\n+/* Returns clock index for the peripheral block */\n+static int Chip_UART_GetIndex(LPC_USART_T *pUART)\n+{\n+   uint32_t base = (uint32_t) pUART;\n+   switch(base) {\n+       case LPC_USART0_BASE:\n+           return 0;\n+       case LPC_UART1_BASE:\n+           return 1;\n+       case LPC_USART2_BASE:\n+           return 2;\n+       case LPC_USART3_BASE:\n+           return 3;\n+       default:\n+           return 0; /* Should never come here */\n+   }\n+}\n+\n+/* UART Autobaud command interrupt handler */\n+STATIC void Chip_UART_ABIntHandler(LPC_USART_T *pUART)\n+{\n+   /* Handle End Of Autobaud interrupt */\n+   if((Chip_UART_ReadIntIDReg(pUART) & UART_IIR_ABEO_INT) != 0) {\n+        Chip_UART_SetAutoBaudReg(pUART, UART_ACR_ABEOINT_CLR);\n+       Chip_UART_IntDisable(pUART, UART_IER_ABEOINT);\n+       if (ABsyncSts == RESET) {\n+           ABsyncSts = SET;\n+        }\n+   }\n+\n+    /* Handle Autobaud Timeout interrupt */\n+   if((Chip_UART_ReadIntIDReg(pUART) & UART_IIR_ABTO_INT) != 0) {\n+        Chip_UART_SetAutoBaudReg(pUART, UART_ACR_ABTOINT_CLR);\n+       Chip_UART_IntDisable(pUART, UART_IER_ABTOINT);\n+   }\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the pUART peripheral */\n+void Chip_UART_Init(LPC_USART_T *pUART)\n+{\n+    volatile uint32_t tmp;\n+\n+   /* Enable UART clocking. UART base clock(s) must already be enabled */\n+   Chip_Clock_EnableOpts(UART_PClock[Chip_UART_GetIndex(pUART)], true, true, 1);\n+\n+   /* Enable FIFOs by default, reset them */\n+   Chip_UART_SetupFIFOS(pUART, (UART_FCR_FIFO_EN | UART_FCR_RX_RS | UART_FCR_TX_RS));\n+\n+    /* Disable Tx */\n+    Chip_UART_TXDisable(pUART);\n+\n+    /* Disable interrupts */\n+   pUART->IER = 0;\n+   /* Set LCR to default state */\n+   pUART->LCR = 0;\n+   /* Set ACR to default state */\n+   pUART->ACR = 0;\n+    /* Set RS485 control to default state */\n+   pUART->RS485CTRL = 0;\n+   /* Set RS485 delay timer to default state */\n+   pUART->RS485DLY = 0;\n+   /* Set RS485 addr match to default state */\n+   pUART->RS485ADRMATCH = 0;\n+\n+    /* Clear MCR */\n+    if (pUART == LPC_UART1) {\n+       /* Set Modem Control to default state */\n+       pUART->MCR = 0;\n+       /*Dummy Reading to Clear Status */\n+       tmp = pUART->MSR;\n+   }\n+\n+   /* Default 8N1, with DLAB disabled */\n+   Chip_UART_ConfigData(pUART, (UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS));\n+\n+   /* Disable fractional divider */\n+   pUART->FDR = 0x10;\n+}\n+\n+/* De-initializes the pUART peripheral */\n+void Chip_UART_DeInit(LPC_USART_T *pUART)\n+{\n+    /* Disable Tx */\n+    Chip_UART_TXDisable(pUART);\n+\n+    /* Disable clock */\n+   Chip_Clock_Disable(UART_PClock[Chip_UART_GetIndex(pUART)]);\n+}\n+\n+/* Transmit a byte array through the UART peripheral (non-blocking) */\n+int Chip_UART_Send(LPC_USART_T *pUART, const void *data, int numBytes)\n+{\n+   int sent = 0;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   /* Send until the transmit FIFO is full or out of bytes */\n+   while ((sent < numBytes) &&\n+          ((Chip_UART_ReadLineStatus(pUART) & UART_LSR_THRE) != 0)) {\n+       Chip_UART_SendByte(pUART, *p8);\n+       p8++;\n+       sent++;\n+   }\n+\n+   return sent;\n+}\n+\n+/* Check whether if UART is busy or not */\n+FlagStatus Chip_UART_CheckBusy(LPC_USART_T *pUART)\n+{\n+   if (pUART->LSR & UART_LSR_TEMT) {\n+       return RESET;\n+   }\n+   else {\n+       return SET;\n+   }\n+}\n+\n+/* Transmit a byte array through the UART peripheral (blocking) */\n+int Chip_UART_SendBlocking(LPC_USART_T *pUART, const void *data, int numBytes)\n+{\n+   int pass, sent = 0;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   while (numBytes > 0) {\n+       pass = Chip_UART_Send(pUART, p8, numBytes);\n+       numBytes -= pass;\n+       sent += pass;\n+       p8 += pass;\n+   }\n+\n+   return sent;\n+}\n+\n+/* Read data through the UART peripheral (non-blocking) */\n+int Chip_UART_Read(LPC_USART_T *pUART, void *data, int numBytes)\n+{\n+   int readBytes = 0;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   /* Send until the transmit FIFO is full or out of bytes */\n+   while ((readBytes < numBytes) &&\n+          ((Chip_UART_ReadLineStatus(pUART) & UART_LSR_RDR) != 0)) {\n+       *p8 = Chip_UART_ReadByte(pUART);\n+       p8++;\n+       readBytes++;\n+   }\n+\n+   return readBytes;\n+}\n+\n+/* Read data through the UART peripheral (blocking) */\n+int Chip_UART_ReadBlocking(LPC_USART_T *pUART, void *data, int numBytes)\n+{\n+   int pass, readBytes = 0;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   while (readBytes < numBytes) {\n+       pass = Chip_UART_Read(pUART, p8, numBytes);\n+       numBytes -= pass;\n+       readBytes += pass;\n+       p8 += pass;\n+   }\n+\n+   return readBytes;\n+}\n+\n+/* Determines and sets best dividers to get a target bit rate */\n+uint32_t Chip_UART_SetBaud(LPC_USART_T *pUART, uint32_t baudrate)\n+{\n+   uint32_t div, divh, divl, clkin;\n+\n+   /* Determine UART clock in rate without FDR */\n+   clkin = Chip_Clock_GetRate(UART_BClock[Chip_UART_GetIndex(pUART)]);\n+   div = clkin / (baudrate * 16);\n+\n+   /* High and low halves of the divider */\n+   divh = div / 256;\n+   divl = div - (divh * 256);\n+\n+   Chip_UART_EnableDivisorAccess(pUART);\n+   Chip_UART_SetDivisorLatches(pUART, divl, divh);\n+   Chip_UART_DisableDivisorAccess(pUART);\n+\n+   /* Fractional FDR alreadt setup for 1 in UART init */\n+\n+   return clkin / div;\n+}\n+\n+/* UART receive-only interrupt handler for ring buffers */\n+void Chip_UART_RXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB)\n+{\n+   /* New data will be ignored if data not popped in time */\n+   while (Chip_UART_ReadLineStatus(pUART) & UART_LSR_RDR) {\n+       uint8_t ch = Chip_UART_ReadByte(pUART);\n+       RingBuffer_Insert(pRB, &ch);\n+   }\n+}\n+\n+/* UART transmit-only interrupt handler for ring buffers */\n+void Chip_UART_TXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB)\n+{\n+   uint8_t ch;\n+\n+   /* Fill FIFO until full or until TX ring buffer is empty */\n+   while ((Chip_UART_ReadLineStatus(pUART) & UART_LSR_THRE) != 0 &&\n+          RingBuffer_Pop(pRB, &ch)) {\n+       Chip_UART_SendByte(pUART, ch);\n+   }\n+\n+   /* Turn off interrupt if the ring buffer is empty */\n+   if (RingBuffer_IsEmpty(pRB)) {\n+       /* Shut down transmit */\n+       Chip_UART_IntDisable(pUART, UART_IER_THREINT);\n+   }\n+}\n+\n+/* Populate a transmit ring buffer and start UART transmit */\n+uint32_t Chip_UART_SendRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, const void *data, int bytes)\n+{\n+   uint32_t ret;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   /* Don't let UART transmit ring buffer change in the UART IRQ handler */\n+   Chip_UART_IntDisable(pUART, UART_IER_THREINT);\n+\n+   /* Move as much data as possible into transmit ring buffer */\n+   ret = RingBuffer_InsertMult(pRB, p8, bytes);\n+   Chip_UART_TXIntHandlerRB(pUART, pRB);\n+\n+   /* Add additional data to transmit ring buffer if possible */\n+   ret += RingBuffer_InsertMult(pRB, (p8 + ret), (bytes - ret));\n+\n+   /* Enable UART transmit interrupt */\n+   Chip_UART_IntEnable(pUART, UART_IER_THREINT);\n+\n+   return ret;\n+}\n+\n+/* Copy data from a receive ring buffer */\n+int Chip_UART_ReadRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, void *data, int bytes)\n+{\n+   (void) pUART;\n+\n+   return RingBuffer_PopMult(pRB, (uint8_t *) data, bytes);\n+}\n+\n+/* UART receive/transmit interrupt handler for ring buffers */\n+void Chip_UART_IRQRBHandler(LPC_USART_T *pUART, RINGBUFF_T *pRXRB, RINGBUFF_T *pTXRB)\n+{\n+   /* Handle transmit interrupt if enabled */\n+   if (pUART->IER & UART_IER_THREINT) {\n+       Chip_UART_TXIntHandlerRB(pUART, pTXRB);\n+\n+       /* Disable transmit interrupt if the ring buffer is empty */\n+       if (RingBuffer_IsEmpty(pTXRB)) {\n+           Chip_UART_IntDisable(pUART, UART_IER_THREINT);\n+       }\n+   }\n+\n+   /* Handle receive interrupt */\n+   Chip_UART_RXIntHandlerRB(pUART, pRXRB);\n+\n+    /* Handle Autobaud interrupts */\n+    Chip_UART_ABIntHandler(pUART);\n+}\n+\n+/* Determines and sets best dividers to get a target baud rate */\n+uint32_t Chip_UART_SetBaudFDR(LPC_USART_T *pUART, uint32_t baud)\n+{\n+   uint32_t sdiv = 0, sm = 1, sd = 0;\n+   uint32_t pclk, m, d;\n+   uint32_t odiff = -1UL; /* old best diff */\n+\n+   /* Get base clock for the corresponding UART */\n+   pclk = Chip_Clock_GetRate(UART_BClock[Chip_UART_GetIndex(pUART)]);\n+\n+   /* Loop through all possible fractional divider values */\n+   for (m = 1; odiff && m < 16; m++) {\n+       for (d = 0; d < m; d++) {\n+           uint32_t diff, div;\n+           uint64_t dval = (((uint64_t) pclk << 28) * m) / (baud * (m + d));\n+\n+           /* Lower 32-bit of dval has diff */\n+           diff = (uint32_t) dval;\n+           /* Upper 32-bit of dval has div */\n+           div = (uint32_t) (dval >> 32);\n+\n+           /* Closer to next div */\n+           if ((int)diff < 0) {\n+               diff = -diff;\n+               div ++;\n+           }\n+\n+           /* Check if new value is worse than old or out of range */\n+           if (odiff < diff || !div || (div >> 16) || (div < 3 && d)) {\n+               continue;\n+           }\n+\n+           /* Store the new better values */\n+           sdiv = div;\n+           sd = d;\n+           sm = m;\n+           odiff = diff;\n+\n+           /* On perfect match, break loop */\n+           if(!diff) {\n+               break;\n+           }\n+       }\n+   }\n+\n+   /* Return 0 if a vaild divisor is not possible */\n+   if (!sdiv) {\n+       return 0;\n+   }\n+\n+   /* Update UART registers */\n+   Chip_UART_EnableDivisorAccess(pUART);\n+   Chip_UART_SetDivisorLatches(pUART, UART_LOAD_DLL(sdiv), UART_LOAD_DLM(sdiv));\n+   Chip_UART_DisableDivisorAccess(pUART);\n+\n+   /* Set best fractional divider */\n+   pUART->FDR = (UART_FDR_MULVAL(sm) | UART_FDR_DIVADDVAL(sd));\n+\n+   /* Return actual baud rate */\n+   return (pclk >> 4) * sm / (sdiv * (sm + sd));\n+}\n+\n+/* UART interrupt service routine */\n+FlagStatus Chip_UART_GetABEOStatus(LPC_USART_T *pUART)\n+{\n+   (void) pUART;\n+   return ABsyncSts;\n+}\n+\n+/* Start/Stop Auto Baudrate activity */\n+void Chip_UART_ABCmd(LPC_USART_T *pUART, uint32_t mode, bool autorestart, FunctionalState NewState)\n+{\n+    uint32_t tmp = 0;\n+\n+   if (NewState == ENABLE) {\n+       /* Clear DLL and DLM value */\n+       pUART->LCR |= UART_LCR_DLAB_EN;\n+       pUART->DLL = 0;\n+       pUART->DLM = 0;\n+       pUART->LCR &= ~UART_LCR_DLAB_EN;\n+\n+       /* FDR value must be reset to default value */\n+       pUART->FDR = 0x10;\n+\n+       if (mode == UART_ACR_MODE1) {\n+           tmp = UART_ACR_START | UART_ACR_MODE;\n+       }\n+       else {\n+           tmp = UART_ACR_START;\n+       }\n+\n+       if (autorestart == true) {\n+           tmp |= UART_ACR_AUTO_RESTART;\n+       }\n+       pUART->ACR = tmp;\n+   }\n+   else {\n+       pUART->ACR = 0;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/src/wwdt_18xx_43xx.c ./lpc_chip_43xx/src/wwdt_18xx_43xx.c\n--- a_8FkA5l/lpc_chip_43xx/src/wwdt_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/wwdt_18xx_43xx.c\t2017-02-27 20:42:08.488009493 -0300\n@@ -0,0 +1,78 @@\n+/*\n+ * @brief LPC18xx/43xx WWDT driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the Watchdog timer */\n+void Chip_WWDT_Init(LPC_WWDT_T *pWWDT)\n+{\n+   /* Disable watchdog */\n+   pWWDT->MOD       = 0;\n+   pWWDT->TC        = 0xFF;\n+#if defined(WATCHDOG_WINDOW_SUPPORT)\n+   pWWDT->WARNINT   = 0xFFFF;\n+   pWWDT->WINDOW    = 0xFFFFFF;\n+#endif\n+}\n+\n+/* Shutdown the Watchdog timer */\n+void Chip_WWDT_DeInit(LPC_WWDT_T *pWWDT)\n+{\n+}\n+\n+/* Clear WWDT interrupt status flags */\n+void Chip_WWDT_ClearStatusFlag(LPC_WWDT_T *pWWDT, uint32_t status)\n+{\n+   if (status & WWDT_WDMOD_WDTOF) {\n+       pWWDT->MOD &= (~WWDT_WDMOD_WDTOF) & WWDT_WDMOD_BITMASK;\n+   }\n+\n+   if (status & WWDT_WDMOD_WDINT) {\n+       pWWDT->MOD |= WWDT_WDMOD_WDINT;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/lpc_chip_43xx/version.txt ./lpc_chip_43xx/version.txt\n--- a_8FkA5l/lpc_chip_43xx/version.txt\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/version.txt\t2017-02-27 20:42:08.488009493 -0300\n@@ -0,0 +1,3 @@\n+LPCOPEN VERSION: 2_16\n+RELEASE DATE:\n+Fri 02/20/2015\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_8FkA5l/Makefile ./Makefile\n--- a_8FkA5l/Makefile\t1969-12-31 21:00:00.000000000 -0300\n+++ ./Makefile\t2017-02-27 20:57:18.556033863 -0300\n@@ -0,0 +1,85 @@\n+include config.mk\n+\n+SRC=$(foreach m, $(MODULES), $(wildcard $(m)/src/*.c))\n+INCLUDES=$(foreach m, $(MODULES), -I$(m)/inc)\n+_DEFINES=$(foreach m, $(DEFINES), -D$(m))\n+OBJECTS=$(SRC:.c=.o)\n+DEPS=$(SRC:.c=.d)\n+LDSCRIPT=ciaa_lpc4337.ld\n+\n+ARCH_FLAGS=-mcpu=cortex-m4 -mthumb\n+\n+TARGET=$(APP).elf\n+TARGET_BIN=$(basename $(TARGET)).bin\n+TARGET_LST=$(basename $(TARGET)).lst\n+TARGET_MAP=$(basename $(TARGET)).map\n+\n+ifeq ($(USE_FPU),y)\n+ARCH_FLAGS+=-mfloat-abi=hard -mfpu=fpv4-sp-d16\n+endif\n+\n+CFLAGS=$(ARCH_FLAGS) $(INCLUDES) $(_DEFINES) -ggdb3 -O$(OPT) -ffunction-sections -fdata-sections\n+LDFLAGS=$(ARCH_FLAGS) -T$(LDSCRIPT) -nostartfiles -Wl,-gc-sections -Wl,-Map=$(TARGET_MAP) -Wl,--cref\n+\n+ifeq ($(USE_NANO),y)\n+LDFLAGS+=--specs=nano.specs\n+endif\n+\n+ifeq ($(SEMIHOST),y)\n+LDFLAGS+=--specs=rdimon.specs\n+endif\n+\n+CROSS=arm-none-eabi-\n+CC=$(CROSS)gcc\n+LD=$(CROSS)gcc\n+SIZE=$(CROSS)size\n+LIST=$(CROSS)objdump -xdS\n+OBJCOPY=$(CROSS)objcopy\n+GDB=$(CROSS)gdb\n+OOCD=openocd\n+\n+OOCD_SCRIPT?=ciaa-nxp.cfg\n+\n+ifeq ($(VERBOSE),y)\n+Q=\n+else\n+Q=@\n+endif\n+\n+all: $(TARGET) $(TARGET_BIN) $(TARGET_LST) size\n+\n+-include $(DEPS)\n+\n+%.o: %.c\n+\t@echo CC $<\n+\t$(Q)$(CC) -MMD $(CFLAGS) -c -o $@ $<\n+\n+$(TARGET): $(OBJECTS)\n+\t@echo LD $@\n+\t$(Q)$(LD) $(LDFLAGS) -o $@ $(OBJECTS)\n+\n+$(TARGET_BIN): $(TARGET)\n+\t@echo BIN\n+\t$(Q)$(OBJCOPY) -v -O binary $< $@\n+\n+$(TARGET_LST): $(TARGET)\n+\t@echo LIST\n+\t$(Q)$(LIST) $< > $@\n+\n+size: $(TARGET)\n+\t$(Q)$(SIZE) $<\n+\n+program: $(TARGET_BIN)\n+\t@echo PROG\n+\t$(Q)$(OOCD) -f $(OOCD_SCRIPT) \\\n+\t\t-c \"init\" \\\n+\t\t-c \"halt 0\" \\\n+\t\t-c \"flash write_image erase unlock $< 0x1A000000 bin\" \\\n+\t\t-c \"reset run\" \\\n+\t\t-c \"shutdown\" 2>&1\n+\n+clean:\n+\t@echo CLEAN\n+\t$(Q)rm -fR $(OBJECTS) $(TARGET) $(TARGET_BIN) $(TARGET_LST) $(DEPS)\n+\n+.PHONY: all size clean program\n"
  },
  {
    "path": "old/resources/templates/sAPI-Project.template",
    "content": "diff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/app/inc/led_sequences.h ./app/inc/led_sequences.h\n--- a_OkB2vL/app/inc/led_sequences.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./app/inc/led_sequences.h\t2016-12-16 19:30:55.000000000 -0300\n@@ -0,0 +1,62 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+#ifndef _LED_SEQUENCES_H_\n+#define _LED_SEQUENCES_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _LED_SEQUENCES_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/app/src/led_sequences.c ./app/src/led_sequences.c\n--- a_OkB2vL/app/src/led_sequences.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./app/src/led_sequences.c\t2016-12-16 19:30:55.000000000 -0300\n@@ -0,0 +1,163 @@\n+/* Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/*\r\n+ * Date: 2016-04-26\r\n+ */\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"led_sequences.h\"   /* <= own header */\r\n+\r\n+#include \"sapi.h\"            /* <= sAPI header */\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+\r\n+/* FUNCION PRINCIPAL, PUNTO DE ENTRADA AL PROGRAMA LUEGO DE RESET. */\r\n+int main(void){\r\n+\r\n+   /* ------------- INICIALIZACIONES ------------- */\r\n+\r\n+   /* Inicializar la placa */\r\n+   boardConfig();\r\n+\r\n+   /* Inicializar el conteo de Ticks con resolución de 1ms, sin tickHook */\r\n+   tickConfig( 1, 0 );\r\n+\r\n+   /* Inicializar GPIOs */\r\n+   gpioConfig( 0, GPIO_ENABLE );\r\n+\r\n+   /* Configuración de pines de entrada para Teclas de la CIAA-NXP */\r\n+   gpioConfig( TEC1, GPIO_INPUT );\r\n+   gpioConfig( TEC2, GPIO_INPUT );\r\n+   gpioConfig( TEC3, GPIO_INPUT );\r\n+   gpioConfig( TEC4, GPIO_INPUT );\r\n+\r\n+   /* Configuración de pines de salida para Leds de la CIAA-NXP */\r\n+   gpioConfig( LEDR, GPIO_OUTPUT );\r\n+   gpioConfig( LEDG, GPIO_OUTPUT );\r\n+   gpioConfig( LEDB, GPIO_OUTPUT );\r\n+   gpioConfig( LED1, GPIO_OUTPUT );\r\n+   gpioConfig( LED2, GPIO_OUTPUT );\r\n+   gpioConfig( LED3, GPIO_OUTPUT );\r\n+\r\n+   /* Variable de Retardo no bloqueante */\r\n+   delay_t delay;\r\n+\r\n+   /* Inicializar Retardo no bloqueante con tiempo en milisegundos\r\n+      (500ms = 0,5s) */\r\n+   delayConfig( &delay, 500 );\r\n+\r\n+   int8_t i = 3;\r\n+   uint8_t sequence = 0;\r\n+\r\n+   /* ------------- REPETIR POR SIEMPRE ------------- */\r\n+   while(1) {\r\n+\r\n+      if ( !gpioRead( TEC1 ) ){\r\n+         sequence = 0;\r\n+      }\r\n+      if ( !gpioRead( TEC2 ) ){\r\n+         /* Velocidad Rapida */\r\n+         delayWrite( &delay, 150 );\r\n+      }\r\n+      if ( !gpioRead( TEC3 ) ){\r\n+         /* Velocidad Lenta */\r\n+         delayWrite( &delay, 750 );\r\n+      }\r\n+      if ( !gpioRead( TEC4 ) ){\r\n+         sequence = 1;\r\n+      }\r\n+\r\n+      /* delayRead retorna TRUE cuando se cumple el tiempo de retardo */\r\n+      if ( delayRead( &delay ) ){\r\n+         if ( !sequence ){\r\n+            i--;\r\n+         }\r\n+         else{\r\n+            i++;\r\n+         }\r\n+      }\r\n+\r\n+      if ( i == 0 ){\r\n+         gpioWrite( LEDB, ON );\r\n+         gpioWrite( LED1, OFF );\r\n+         gpioWrite( LED2, OFF );\r\n+         gpioWrite( LED3, OFF );\r\n+      }\r\n+      if ( i == 1 ){\r\n+         gpioWrite( LEDB, OFF );\r\n+         gpioWrite( LED1, ON );\r\n+         gpioWrite( LED2, OFF );\r\n+         gpioWrite( LED3, OFF );\r\n+      }\r\n+      if ( i == 2 ){\r\n+         gpioWrite( LEDB, OFF );\r\n+         gpioWrite( LED1, OFF );\r\n+         gpioWrite( LED2, ON );\r\n+         gpioWrite( LED3, OFF );\r\n+      }\r\n+      if ( i == 3 ){\r\n+         gpioWrite( LEDB, OFF );\r\n+         gpioWrite( LED1, OFF );\r\n+         gpioWrite( LED2, OFF );\r\n+         gpioWrite( LED3, ON );\r\n+      }\r\n+\r\n+      if ( i < 0 ){\r\n+         i = 3;\r\n+      }\r\n+      if ( i > 3 ){\r\n+         i = 0;\r\n+      }\r\n+\r\n+   }\r\n+\r\n+   /* NO DEBE LLEGAR NUNCA AQUI, debido a que a este programa no es llamado\r\n+      por ningun S.O. */\r\n+   return 0 ;\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/ciaa_lpc4337.ld ./ciaa_lpc4337.ld\n--- a_OkB2vL/ciaa_lpc4337.ld\t1969-12-31 21:00:00.000000000 -0300\n+++ ./ciaa_lpc4337.ld\t2017-02-27 21:03:16.972043462 -0300\n@@ -0,0 +1,278 @@\n+GROUP(\n+  libgcc.a\n+  libc.a\n+  libm.a\n+)\n+\n+MEMORY\n+{\n+  /* Define each memory region */\n+  MFlashA512 (rx) : ORIGIN = 0x1a000000, LENGTH = 0x80000 /* 512K bytes */\n+  MFlashB512 (rx) : ORIGIN = 0x1b000000, LENGTH = 0x80000 /* 512K bytes */\n+  RamLoc32 (rwx) : ORIGIN = 0x10000000, LENGTH = 0x8000 /* 32K bytes */\n+  RamLoc40 (rwx) : ORIGIN = 0x10080000, LENGTH = 0xa000 /* 40K bytes */\n+  RamAHB32 (rwx) : ORIGIN = 0x20000000, LENGTH = 0x8000 /* 32K bytes */\n+  RamAHB16 (rwx) : ORIGIN = 0x20008000, LENGTH = 0x4000 /* 16K bytes */\n+  RamAHB_ETB16 (rwx) : ORIGIN = 0x2000c000, LENGTH = 0x4000 /* 16K bytes */\n+}\n+\n+/* Define a symbol for the top of each memory region */\n+__top_MFlashA512 = 0x1a000000 + 0x80000;\n+__top_MFlashB512 = 0x1b000000 + 0x80000;\n+__top_RamLoc32 = 0x10000000 + 0x8000;\n+__top_RamLoc40 = 0x10080000 + 0xa000;\n+__top_RamAHB32 = 0x20000000 + 0x8000;\n+__top_RamAHB16 = 0x20008000 + 0x4000;\n+__top_RamAHB_ETB16 = 0x2000c000 + 0x4000;\n+\n+ENTRY(ResetISR)\n+\n+SECTIONS\n+{\n+\n+    .text_Flash2 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       *(.text_Flash2*) /* for compatibility with previous releases */\n+       *(.text_MFlashB512*) /* for compatibility with previous releases */\n+       *(.text.$Flash2*)\n+       *(.text.$MFlashB512*)\n+       *(.rodata.$Flash2*)\n+       *(.rodata.$MFlashB512*)\n+    } > MFlashB512\n+\n+    /* MAIN TEXT SECTION */\n+    .text : ALIGN(4)\n+    {\n+        FILL(0xff)\n+        __vectors_start__ = ABSOLUTE(.) ;\n+        KEEP(*(.isr_vector))\n+\n+        /* Global Section Table */\n+        . = ALIGN(4) ;\n+        __section_table_start = .;\n+        __data_section_table = .;\n+        LONG(LOADADDR(.data));\n+        LONG(    ADDR(.data));\n+        LONG(  SIZEOF(.data));\n+        LONG(LOADADDR(.data_RAM2));\n+        LONG(    ADDR(.data_RAM2));\n+        LONG(  SIZEOF(.data_RAM2));\n+        LONG(LOADADDR(.data_RAM3));\n+        LONG(    ADDR(.data_RAM3));\n+        LONG(  SIZEOF(.data_RAM3));\n+        LONG(LOADADDR(.data_RAM4));\n+        LONG(    ADDR(.data_RAM4));\n+        LONG(  SIZEOF(.data_RAM4));\n+        LONG(LOADADDR(.data_RAM5));\n+        LONG(    ADDR(.data_RAM5));\n+        LONG(  SIZEOF(.data_RAM5));\n+        __data_section_table_end = .;\n+        __bss_section_table = .;\n+        LONG(    ADDR(.bss));\n+        LONG(  SIZEOF(.bss));\n+        LONG(    ADDR(.bss_RAM2));\n+        LONG(  SIZEOF(.bss_RAM2));\n+        LONG(    ADDR(.bss_RAM3));\n+        LONG(  SIZEOF(.bss_RAM3));\n+        LONG(    ADDR(.bss_RAM4));\n+        LONG(  SIZEOF(.bss_RAM4));\n+        LONG(    ADDR(.bss_RAM5));\n+        LONG(  SIZEOF(.bss_RAM5));\n+        __bss_section_table_end = .;\n+        __section_table_end = . ;\n+        /* End of Global Section Table */\n+\n+\n+        *(.after_vectors*)\n+\n+        /* Code Read Protect data */\n+        . = 0x000002FC ;\n+        PROVIDE(__CRP_WORD_START__ = .) ;\n+        KEEP(*(.crp))\n+        PROVIDE(__CRP_WORD_END__ = .) ;\n+        ASSERT(!(__CRP_WORD_START__ == __CRP_WORD_END__), \"Linker CRP Enabled, but no CRP_WORD provided within application\");\n+        /* End of Code Read Protect */\n+\n+    } >MFlashA512\n+\n+    .text : ALIGN(4)\n+    {\n+         *(.text*)\n+        *(.rodata .rodata.* .constdata .constdata.*)\n+        . = ALIGN(4);\n+\n+    } > MFlashA512\n+\n+    /*\n+     * for exception handling/unwind - some Newlib functions (in common\n+     * with C++ and STDC++) use this.\n+     */\n+    .ARM.extab : ALIGN(4)\n+    {\n+       *(.ARM.extab* .gnu.linkonce.armextab.*)\n+    } > MFlashA512\n+    __exidx_start = .;\n+\n+    .ARM.exidx : ALIGN(4)\n+    {\n+       *(.ARM.exidx* .gnu.linkonce.armexidx.*)\n+    } > MFlashA512\n+    __exidx_end = .;\n+\n+    _etext = .;\n+\n+\n+    /* DATA section for RamLoc40 */\n+   .data_RAM2 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+      /*  __core_m0app_START__ = .; start of slave image\n+         KEEP(*(.core_m0app))\n+       __core_m0app_END__ = .;  end of slave image\n+       ASSERT(!(__core_m0app_START__ == __core_m0app_END__), \"No slave code for _core_m0app\");\n+       ASSERT( (ABSOLUTE(__core_m0app_START__) == __vectors_start___core_m0app), \"M0APP execute address differs from address provided in source image\");*/\n+       *(.ramfunc.$RAM2)\n+       *(.ramfunc.$RamLoc40)\n+       *(.data.$RAM2*)\n+       *(.data.$RamLoc40*)\n+       . = ALIGN(4) ;\n+    } > RamLoc40 AT>MFlashA512\n+\n+    /* DATA section for RamAHB32 */\n+    .data_RAM3 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       *(.ramfunc.$RAM3)\n+       *(.ramfunc.$RamAHB32)\n+       *(.data.$RAM3*)\n+       *(.data.$RamAHB32*)\n+       . = ALIGN(4) ;\n+    } > RamAHB32 AT>MFlashA512\n+\n+    /* DATA section for RamAHB16 */\n+    .data_RAM4 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       *(.ramfunc.$RAM4)\n+       *(.ramfunc.$RamAHB16)\n+       *(.data.$RAM4*)\n+       *(.data.$RamAHB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB16 AT>MFlashA512\n+\n+    /* DATA section for RamAHB_ETB16 */\n+    .data_RAM5 : ALIGN(4)\n+    {\n+       FILL(0xff)\n+       *(.ramfunc.$RAM5)\n+       *(.ramfunc.$RamAHB_ETB16)\n+       *(.data.$RAM5*)\n+       *(.data.$RamAHB_ETB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB_ETB16 AT>MFlashA512\n+\n+    /* MAIN DATA SECTION */\n+\n+\n+    .uninit_RESERVED : ALIGN(4)\n+    {\n+        KEEP(*(.bss.$RESERVED*))\n+        . = ALIGN(4) ;\n+        _end_uninit_RESERVED = .;\n+    } > RamLoc32\n+\n+\n+   /* Main DATA section (RamLoc32) */\n+   .data : ALIGN(4)\n+   {\n+      FILL(0xff)\n+      _data = . ;\n+      *(vtable)\n+      *(.ramfunc*)\n+      *(.data*)\n+      . = ALIGN(4) ;\n+      _edata = . ;\n+   } > RamLoc32 AT>MFlashA512\n+\n+    /* BSS section for RamLoc40 */\n+    .bss_RAM2 : ALIGN(4)\n+    {\n+       *(.bss.$RAM2*)\n+       *(.bss.$RamLoc40*)\n+       . = ALIGN(4) ;\n+    } > RamLoc40\n+    /* BSS section for RamAHB32 */\n+    .bss_RAM3 : ALIGN(4)\n+    {\n+       *(.bss.$RAM3*)\n+       *(.bss.$RamAHB32*)\n+       . = ALIGN(4) ;\n+    } > RamAHB32\n+    /* BSS section for RamAHB16 */\n+    .bss_RAM4 : ALIGN(4)\n+    {\n+       *(.bss.$RAM4*)\n+       *(.bss.$RamAHB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB16\n+    /* BSS section for RamAHB_ETB16 */\n+    .bss_RAM5 : ALIGN(4)\n+    {\n+       *(.bss.$RAM5*)\n+       *(.bss.$RamAHB_ETB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB_ETB16\n+\n+    /* MAIN BSS SECTION */\n+    .bss : ALIGN(4)\n+    {\n+        _bss = .;\n+        *(.bss*)\n+        *(COMMON)\n+        . = ALIGN(4) ;\n+        _ebss = .;\n+        PROVIDE(end = .);\n+    } > RamLoc32\n+\n+    /* NOINIT section for RamLoc40 */\n+    .noinit_RAM2 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM2*)\n+       *(.noinit.$RamLoc40*)\n+       . = ALIGN(4) ;\n+    } > RamLoc40\n+    /* NOINIT section for RamAHB32 */\n+    .noinit_RAM3 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM3*)\n+       *(.noinit.$RamAHB32*)\n+       . = ALIGN(4) ;\n+    } > RamAHB32\n+    /* NOINIT section for RamAHB16 */\n+    .noinit_RAM4 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM4*)\n+       *(.noinit.$RamAHB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB16\n+    /* NOINIT section for RamAHB_ETB16 */\n+    .noinit_RAM5 (NOLOAD) : ALIGN(4)\n+    {\n+       *(.noinit.$RAM5*)\n+       *(.noinit.$RamAHB_ETB16*)\n+       . = ALIGN(4) ;\n+    } > RamAHB_ETB16\n+\n+    /* DEFAULT NOINIT SECTION */\n+    .noinit (NOLOAD): ALIGN(4)\n+    {\n+        _noinit = .;\n+        *(.noinit*)\n+         . = ALIGN(4) ;\n+        _end_noinit = .;\n+    } > RamLoc32\n+\n+    PROVIDE(_pvHeapStart = .);\n+    PROVIDE(_vStackTop = __top_RamLoc32 - 0);\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/ciaa-nxp.cfg ./ciaa-nxp.cfg\n--- a_OkB2vL/ciaa-nxp.cfg\t1969-12-31 21:00:00.000000000 -0300\n+++ ./ciaa-nxp.cfg\t2017-02-27 21:03:16.972043462 -0300\n@@ -0,0 +1,161 @@\n+###############################################################################\n+#\n+# Copyright 2014, Juan Cecconi (UTN-FRBA, Numetron)\n+#\n+# This file is part of CIAA Firmware.\n+#\n+# Redistribution and use in source and binary forms, with or without\n+# modification, are permitted provided that the following conditions are met:\n+#\n+# 1. Redistributions of source code must retain the above copyright notice,\n+#    this list of conditions and the following disclaimer.\n+#\n+# 2. Redistributions in binary form must reproduce the above copyright notice,\n+#    this list of conditions and the following disclaimer in the documentation\n+#    and/or other materials provided with the distribution.\n+#\n+# 3. Neither the name of the copyright holder nor the names of its\n+#    contributors may be used to endorse or promote products derived from this\n+#    software without specific prior written permission.\n+#\n+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+# POSSIBILITY OF SUCH DAMAGE.\n+#\n+###############################################################################\n+#OpenOCD configuration (target and interface) for CIAA-NXP\n+\n+######################################################################################################\n+# Utilizar una interface tipo FTDI, todo lo que sigue está basado en ello\n+######################################################################################################\n+interface ftdi\n+\n+######################################################################################################\n+# Agrego el Par VID-PID del FTDI, si hay más agregar a continuación...\n+######################################################################################################\n+ftdi_vid_pid 0x0403 0x6010\n+\n+######################################################################################################\n+# Se utilizó el Channel A (ADBUS0 a ADBUS3) para conectar el JTAG mediante MPSSE\n+######################################################################################################\n+ftdi_channel 0\n+\n+######################################################################################################\n+# ftdi_layout_init 'Valor' 'Dirección', Configura los GPIO (H-L), su valor y dirección en ese orden(1 = Salida, 0 = entrada)\n+# los 16 bits se arman H-L como sigue 'ACBUS7-0+ADBUS7-0'\n+#ADBUS0 = FT_CLCK = 1, salida de Clock\n+#ADBUS1 = FT_TDI = 1, salida de datos del FT\n+#ADBUS2 = FT_TDO = 0, entrada de datos al FT\n+#ADBUS3 = FT_TMS = 1, salida de Test Mode Select, setear a 1\n+#ADBUS4 = Pin 14 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ADBUS5 = Pin 12 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ADBUS6 = Pin 10 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ADBUS7 = Pin 8 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS0 = FT_TRST = 1, salida de TRST...va al buffer y luego no se usa, setear a 1\n+#ACBUS1 = FT_RST = 1, salida de RST...va al buffer y luego no se usa, setear a 1\n+#ACBUS2 = FT_OE = 1, salida de OE para manejar el Buffer del JTAG, setear a 1\n+#ACBUS3 = Pin 6 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS4 = Pin 4 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS5 = Pin 2 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS6 = Pin 1 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+#ACBUS7 = Pin 3 - conector P9 = 1 salida para no dejar flotante e ingresar ruido al FT\n+######################################################################################################\n+ftdi_layout_init 0x0708 0xFFFB\n+\n+######################################################################################################\n+# La creación de las señales que siguen no hacen falta porque se indicó en el Target cfg que no se\n+# las tiene conectadas a ningún lado\n+######################################################################################################\n+\n+######################################################################################################\n+# Creo la señal llamada nTRST (Not TAP Reset) que es una tipo dato, y usa el bit 8 del GPIO (H-L), es\n+# decir GPIOH0 (pin ACBUS0) por eso 0x100, y a la vez se activa conjuntamente con el OE que\n+# está usado en el bit 10 del GPIO, es decir, en GPIOH2 (pin ACBUS2) por eso 0x400\n+######################################################################################################\n+ftdi_layout_signal nTRST -data 0x0100\n+\n+######################################################################################################\n+# Creo la señal llamada nSRST (Not System Reset) que se activa cuando se hace un cmd 'reset'\n+# Es tipo dato y usa el bit 9 del GPIO (H-L), es decir GPIOH1 (pin ACBUS1) por eso 0x200,\n+# y a la vez se activa conjuntamente con el OE que  está usado en el bit 10 del GPIO, es decir,\n+# en GPIOH2 (pin ACBUS2) por eso 0x400\n+######################################################################################################\n+ftdi_layout_signal nSRST -data 0x0200\n+\n+################################################################\n+# Especifica en KHz la frecuencia del Clock en el JTAG (TCK)\n+################################################################\n+transport select jtag\n+adapter_khz 2000\n+\n+################################################################\n+# Defino nombre de CHIP\n+################################################################\n+set _CHIPNAME lpc4337\n+\n+################################################################\n+# Defino los TAP del JTAG, para el core M4 y M0\n+################################################################\n+\n+# M4 JTAG mode TAP\n+set _M4_JTAG_TAPID 0x4ba00477\n+\n+# M0 TAP\n+set _M0_JTAG_TAPID 0x0ba01477\n+\n+jtag newtap $_CHIPNAME m4 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M4_JTAG_TAPID\n+\n+jtag newtap $_CHIPNAME m0 -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id $_M0_JTAG_TAPID\n+\n+################################################################\n+# Creo los 2 targets lpc4337.m4 y lpc4337.m0\n+################################################################\n+target create $_CHIPNAME.m4 cortex_m -chain-position $_CHIPNAME.m4\n+target create $_CHIPNAME.m0 cortex_m -chain-position $_CHIPNAME.m0\n+\n+################################################################\n+# Defino un area de trabajo en la RAM para acelerar el proceso\n+# de programación de la flash\n+################################################################\n+set _WORKAREASIZE 0x8000\n+$_CHIPNAME.m4 configure -work-area-phys 0x10000000 -work-area-size $_WORKAREASIZE\n+\n+################################################################\n+# Se define un banco de flash, grabable usando el driver lpc2000\n+# que es compatible con el LPC4337\n+# flash bank <name> lpc2000 <base> <size> 0 0 <target#> <variant> <clock> [calc checksum]\n+################################################################\n+set _FLASHNAME $_CHIPNAME.flash\n+flash bank $_FLASHNAME lpc2000 0x1a000000 0x80000 0 0 $_CHIPNAME.m4 lpc4300 96000 calc_checksum\n+\n+################################################################\n+# TRST (TAP Reset) y SRST (System Reset) no están conectados más allá del Buffer\n+# en el prototipo.\n+# Por lo tanto se indica 'none'\n+################################################################\n+reset_config none\n+#reset_config trst_only\n+\n+################################################################\n+# on this CPU we should use VECTRESET to perform a soft reset and\n+# manually reset the periphery\n+# SRST or SYSRESETREQ disable the debug interface for the time of\n+# the reset and will not fit our requirements for a consistent debug\n+# session\n+################################################################\n+cortex_m reset_config vectreset\n+\n+targets $_CHIPNAME.m4\n+\n+$_CHIPNAME.m4 configure -event gdb-attach {\n+   echo \"Reset Halt, due to gdb attached...!\"\n+   reset halt\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/config.mk ./config.mk\n--- a_OkB2vL/config.mk\t1969-12-31 21:00:00.000000000 -0300\n+++ ./config.mk\t2017-02-27 21:08:01.608051084 -0300\n@@ -0,0 +1,10 @@\n+APP=${{Program_Name string:blinking}}\n+\n+MODULES=app lpc_chip_43xx lpc_board_ciaa_edu_4337 sapi\n+DEFINES=CORE_M4 __USE_LPCOPEN __USE_NEWLIB\n+\n+VERBOSE=${{Verbose_Build items:n|y}}\n+OPT=${{Optimization_Level items:g|0|1|2|3|s|fast}}\n+USE_NANO=${{Newlib_NANO items:y|n}}\n+SEMIHOST=${{Use_semihosting items:n|y}}\n+USE_FPU=${{Use_FPU items:y|n}}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_board_ciaa_edu_4337/inc/board_api.h ./lpc_board_ciaa_edu_4337/inc/board_api.h\n--- a_OkB2vL/lpc_board_ciaa_edu_4337/inc/board_api.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/inc/board_api.h\t2017-02-27 21:03:16.972043462 -0300\n@@ -0,0 +1,176 @@\n+/*\n+ * @brief Common board API functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __BOARD_API_H_\n+#define __BOARD_API_H_\n+\n+#include \"lpc_types.h\"\n+#include <stdio.h>\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup BOARD_COMMON_API BOARD: Common board functions\n+ * @ingroup BOARD_Common\n+ * This file contains common board definitions that are shared across\n+ * boards and devices. All of these functions do not need to be\n+ * implemented for a specific board, but if they are implemented, they\n+ * should use this API standard.\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Setup and initialize hardware prior to call to main()\n+ * @return None\n+ * @note   Board_SystemInit() is called prior to the application and sets up system\n+ * clocking, memory, and any resources needed prior to the application\n+ * starting.\n+ */\n+void Board_SystemInit(void);\n+\n+/**\n+ * @brief  Setup pin multiplexer per board schematics\n+ * @return None\n+ * @note   Board_SetupMuxing() should be called from SystemInit() prior to application\n+ * main() is called. So that the PINs are set in proper state.\n+ */\n+void Board_SetupMuxing(void);\n+\n+/**\n+ * @brief  Setup system clocking\n+ * @return None\n+ * @note   This sets up board clocking.\n+ */\n+void Board_SetupClocking(void);\n+\n+/**\n+ * @brief  Setup external system memory\n+ * @return None\n+ * @note   This function is typically called after pin mux setup and clock setup and\n+ * sets up any external memory needed by the system (DRAM, SRAM, etc.). Not all\n+ * boards need this function.\n+ */\n+void Board_SetupExtMemory(void);\n+\n+/**\n+ * @brief  Set up and initialize all required blocks and functions related to the board hardware.\n+ * @return None\n+ */\n+void Board_Init(void);\n+\n+/**\n+ * @brief  Initializes board UART for output, required for printf redirection\n+ * @return None\n+ */\n+void Board_Debug_Init(void);\n+\n+/**\n+ * @brief  Sends a single character on the UART, required for printf redirection\n+ * @param  ch  : character to send\n+ * @return None\n+ */\n+void Board_UARTPutChar(char ch);\n+\n+/**\n+ * @brief  Get a single character from the UART, required for scanf input\n+ * @return EOF if not character was received, or character value\n+ */\n+int Board_UARTGetChar(void);\n+\n+/**\n+ * @brief  Prints a string to the UART\n+ * @param  str : Terminated string to output\n+ * @return None\n+ */\n+void Board_UARTPutSTR(const char *str);\n+\n+/**\n+ * @brief  Sets the state of a board LED to on or off\n+ * @param  LEDNumber   : LED number to set state for\n+ * @param  State       : true for on, false for off\n+ * @return None\n+ */\n+void Board_LED_Set(uint8_t LEDNumber, bool State);\n+\n+/**\n+ * @brief  Returns the current state of a board LED\n+ * @param  LEDNumber   : LED number to set state for\n+ * @return true if the LED is on, otherwise false\n+ */\n+bool Board_LED_Test(uint8_t LEDNumber);\n+\n+/**\n+ * @brief  Toggles the current state of a board LED\n+ * @param  LEDNumber   : LED number to change state for\n+ * @return None\n+ */\n+void Board_LED_Toggle(uint8_t LEDNumber);\n+\n+/**\n+ * @brief Function prototype for a MS delay function. Board layers or example code may\n+ *        define this function as needed.\n+ */\n+typedef void (*p_msDelay_func_t)(uint32_t);\n+\n+/* The DEBUG* functions are selected based on system configuration.\n+   Code that uses the DEBUG* functions will have their I/O routed to\n+   the UART, semihosting, or nowhere. */\n+#if defined(DEBUG_ENABLE)\n+#if defined(DEBUG_SEMIHOSTING)\n+#define DEBUGINIT()\n+#define DEBUGOUT(...) printf(__VA_ARGS__)\n+#define DEBUGSTR(str) printf(str)\n+#define DEBUGIN() (int) EOF\n+\n+#else\n+#define DEBUGINIT() Board_Debug_Init()\n+#define DEBUGOUT(...) printf(__VA_ARGS__)\n+#define DEBUGSTR(str) Board_UARTPutSTR(str)\n+#define DEBUGIN() Board_UARTGetChar()\n+#endif /* defined(DEBUG_SEMIHOSTING) */\n+\n+#else\n+#define DEBUGINIT()\n+#define DEBUGOUT(...)\n+#define DEBUGSTR(str)\n+#define DEBUGIN() (int) EOF\n+#endif /* defined(DEBUG_ENABLE) */\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __BOARD_API_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_board_ciaa_edu_4337/inc/board.h ./lpc_board_ciaa_edu_4337/inc/board.h\n--- a_OkB2vL/lpc_board_ciaa_edu_4337/inc/board.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/inc/board.h\t2017-02-27 21:03:16.972043462 -0300\n@@ -0,0 +1,178 @@\n+/*\n+ * @brief NGX Xplorer 4330 board file\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __BOARD_H_\n+#define __BOARD_H_\n+\n+#include \"chip.h\"\n+/* board_api.h is included at the bottom of this file after DEBUG setup */\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup BOARD_NGX_XPLORER_4330 LPC4330 NGX Xplorer board support software API functions\n+ * @ingroup LPCOPEN_43XX_BOARD_NGX4330\n+ * The board support software API functions provide some simple abstracted\n+ * functions used across multiple LPCOpen board examples. See @ref BOARD_COMMON_API\n+ * for the functions defined by this board support layer.<br>\n+ * @{\n+ */\n+\n+/** @defgroup BOARD_NGX_XPLORER_4330_OPTIONS BOARD: LPC4330 NGX Xplorer board options\n+ * This board has options that configure its operation at build-time.<br>\n+ * @{\n+ */\n+\n+/** Define DEBUG_ENABLE to enable IO via the DEBUGSTR, DEBUGOUT, and\n+    DEBUGIN macros. If not defined, DEBUG* functions will be optimized\n+   out of the code at build time.\n+ */\n+#define DEBUG_ENABLE\n+\n+/** Define DEBUG_SEMIHOSTING along with DEBUG_ENABLE to enable IO support\n+    via semihosting. You may need to use a C library that supports\n+   semihosting with this option.\n+ */\n+//#define DEBUG_SEMIHOSTING\n+\n+/** Board UART used for debug output and input using the DEBUG* macros. This\n+    is also the port used for Board_UARTPutChar, Board_UARTGetChar, and\n+   Board_UARTPutSTR functions. */\n+#define DEBUG_UART LPC_USART2\n+\n+/**\n+ * @}\n+ */\n+\n+/* Board name */\n+#define BOARD_CIAA_EDU_NXP_4337\n+\n+/* Build for RMII interface */\n+#define USE_RMII\n+#define BOARD_ENET_PHY_ADDR    0x00\n+\n+#define LED_3 2\n+#define LED_2 1\n+#define LED_1 0\n+#define LED_RED 3\n+#define LED_GREEN 4\n+#define LED_BLUE 5\n+\n+/**\n+ * @brief  Sets up board specific I2C interface\n+ * @param  id  : I2C Peripheral ID (I2C0, I2C1)\n+ * @return Nothing\n+ */\n+void Board_I2C_Init(I2C_ID_T id);\n+\n+/**\n+ * @brief  Sets up I2C Fast Plus mode\n+ * @param  id  : Must always be I2C0\n+ * @return Nothing\n+ * @note   This function must be called before calling\n+ *          Chip_I2C_SetClockRate() to set clock rates above\n+ *          normal range 100KHz to 400KHz. Only I2C0 supports\n+ *          this mode.\n+ */\n+STATIC INLINE void Board_I2C_EnableFastPlus(I2C_ID_T id)\n+{\n+   Chip_SCU_I2C0PinConfig(I2C0_FAST_MODE_PLUS);\n+}\n+\n+/**\n+ * @brief  Disable I2C Fast Plus mode and enables default mode\n+ * @param  id  : Must always be I2C0\n+ * @return Nothing\n+ * @sa     Board_I2C_EnableFastPlus()\n+ */\n+STATIC INLINE void Board_I2C_DisableFastPlus(I2C_ID_T id)\n+{\n+   Chip_SCU_I2C0PinConfig(I2C0_STANDARD_FAST_MODE);\n+}\n+\n+/**\n+ * @brief  Initializes board specific GPIO Interrupt\n+ * @return Nothing\n+ */\n+void Board_GPIO_Int_Init(void);\n+\n+/**\n+ * @brief  Initialize pin muxing for SSP interface\n+ * @param  pSSP    : Pointer to SSP interface to initialize\n+ * @return Nothing\n+ */\n+void Board_SSP_Init(LPC_SSP_T *pSSP);\n+\n+/**\n+ * @brief  Returns the MAC address assigned to this board\n+ * @param  mcaddr : Pointer to 6-byte character array to populate with MAC address\n+ * @return Nothing\n+ */\n+void Board_ENET_GetMacADDR(uint8_t *mcaddr);\n+\n+/**\n+ * @brief  Initialize pin muxing for a UART\n+ * @param  pUART   : Pointer to UART register block for UART pins to init\n+ * @return Nothing\n+ */\n+void Board_UART_Init(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief  Initialize pin muxing for SDMMC interface\n+ * @return Nothing\n+ */\n+void Board_SDMMC_Init(void);\n+\n+/**\n+ * @brief  Initialize DAC\n+ * @param  pDAC    : Pointer to DAC register interface used on this board\n+ * @return Nothing\n+ */\n+void Board_DAC_Init(LPC_DAC_T *pDAC);\n+\n+/**\n+ * @brief  Initialize ADC\n+ * @return Nothing\n+ */\n+STATIC INLINE void Board_ADC_Init(void){}\n+\n+/**\n+ * @}\n+ */\n+\n+#include \"board_api.h\"\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __BOARD_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_board_ciaa_edu_4337/src/board.c ./lpc_board_ciaa_edu_4337/src/board.c\n--- a_OkB2vL/lpc_board_ciaa_edu_4337/src/board.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/board.c\t2017-02-27 21:03:16.976043462 -0300\n@@ -0,0 +1,201 @@\n+/*\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"board.h\"\n+#include \"string.h\"\n+\n+/** @ingroup BOARD_NGX_XPLORER_18304330\n+ * @{\n+ */\n+\n+/* SDIO Data pin configuration bits */\n+#define SDIO_DAT_PINCFG (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_PULLUP | SCU_MODE_FUNC7)\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* System configuration variables used by chip driver */\n+const uint32_t ExtRateIn = 0;\n+const uint32_t OscRateIn = 12000000;\n+\n+typedef struct {\n+   uint8_t port;\n+   uint8_t pin;\n+} io_port_t;\n+\n+static const io_port_t gpioLEDBits[] = {{0, 14}, {1, 11}, {1, 12}, {5, 0}, {5, 1}, {5, 2}};\n+static uint32_t lcd_cfg_val;\n+\n+void Board_UART_Init(LPC_USART_T *pUART)\n+{\n+   Chip_SCU_PinMuxSet(0x6, 4, (SCU_MODE_INACT | SCU_MODE_FUNC2));                  /* P6,4 : UART0_TXD */\n+   Chip_SCU_PinMuxSet(0x2, 1, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC1));/* P2.1 : UART0_RXD */\n+}\n+\n+/* Initialize debug output via UART for board */\n+void Board_Debug_Init(void)\n+{\n+#if defined(DEBUG_UART)\n+   Board_UART_Init(DEBUG_UART);\n+\n+   Chip_UART_Init(DEBUG_UART);\n+   Chip_UART_SetBaudFDR(DEBUG_UART, 115200);\n+   Chip_UART_ConfigData(DEBUG_UART, UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS);\n+\n+   /* Enable UART Transmit */\n+   Chip_UART_TXEnable(DEBUG_UART);\n+#endif\n+}\n+\n+/* Sends a character on the UART */\n+void Board_UARTPutChar(char ch)\n+{\n+#if defined(DEBUG_UART)\n+   /* Wait for space in FIFO */\n+   while ((Chip_UART_ReadLineStatus(DEBUG_UART) & UART_LSR_THRE) == 0) {}\n+   Chip_UART_SendByte(DEBUG_UART, (uint8_t) ch);\n+#endif\n+}\n+\n+/* Gets a character from the UART, returns EOF if no character is ready */\n+int Board_UARTGetChar(void)\n+{\n+#if defined(DEBUG_UART)\n+   if (Chip_UART_ReadLineStatus(DEBUG_UART) & UART_LSR_RDR) {\n+       return (int) Chip_UART_ReadByte(DEBUG_UART);\n+   }\n+#endif\n+   return EOF;\n+}\n+\n+/* Outputs a string on the debug UART */\n+void Board_UARTPutSTR(const char *str)\n+{\n+#if defined(DEBUG_UART)\n+   while (*str != '\\0') {\n+       Board_UARTPutChar(*str++);\n+   }\n+#endif\n+}\n+\n+static void Board_LED_Init()\n+{\n+   uint32_t idx;\n+\n+   for (idx = 0; idx < (sizeof(gpioLEDBits) / sizeof(io_port_t)); ++idx) {\n+       /* Set pin direction and init to off */\n+       Chip_GPIO_SetPinDIROutput(LPC_GPIO_PORT, gpioLEDBits[idx].port, gpioLEDBits[idx].pin);\n+       Chip_GPIO_SetPinState(LPC_GPIO_PORT, gpioLEDBits[idx].port, gpioLEDBits[idx].pin, (bool) false);\n+   }\n+}\n+\n+void Board_LED_Set(uint8_t LEDNumber, bool On)\n+{\n+   if (LEDNumber < (sizeof(gpioLEDBits) / sizeof(io_port_t)))\n+        Chip_GPIO_SetPinState(LPC_GPIO_PORT, gpioLEDBits[LEDNumber].port, gpioLEDBits[LEDNumber].pin, (bool) !On);\n+}\n+\n+bool Board_LED_Test(uint8_t LEDNumber)\n+{\n+   if (LEDNumber < (sizeof(gpioLEDBits) / sizeof(io_port_t)))\n+       return (bool) !Chip_GPIO_GetPinState(LPC_GPIO_PORT, gpioLEDBits[LEDNumber].port, gpioLEDBits[LEDNumber].pin);\n+\n+   return false;\n+}\n+\n+void Board_LED_Toggle(uint8_t LEDNumber)\n+{\n+   Board_LED_Set(LEDNumber, !Board_LED_Test(LEDNumber));\n+}\n+\n+/* Returns the MAC address assigned to this board */\n+void Board_ENET_GetMacADDR(uint8_t *mcaddr)\n+{\n+   uint8_t boardmac[] = {0x00, 0x60, 0x37, 0x12, 0x34, 0x56};\n+\n+   memcpy(mcaddr, boardmac, 6);\n+}\n+\n+/* Set up and initialize all required blocks and functions related to the\n+   board hardware */\n+void Board_Init(void)\n+{\n+   /* Sets up DEBUG UART */\n+   DEBUGINIT();\n+\n+   /* Initializes GPIO */\n+   Chip_GPIO_Init(LPC_GPIO_PORT);\n+\n+   /* Initialize LEDs */\n+   Board_LED_Init();\n+   Chip_ENET_RMIIEnable(LPC_ETHERNET);\n+}\n+\n+void Board_I2C_Init(I2C_ID_T id)\n+{\n+   if (id == I2C1) {\n+       /* Configure pin function for I2C1*/\n+       Chip_SCU_PinMuxSet(0x2, 3, (SCU_MODE_ZIF_DIS | SCU_MODE_INBUFF_EN | SCU_MODE_FUNC1));       /* P2.3 : I2C1_SDA */\n+       Chip_SCU_PinMuxSet(0x2, 4, (SCU_MODE_ZIF_DIS | SCU_MODE_INBUFF_EN | SCU_MODE_FUNC1));       /* P2.4 : I2C1_SCL */\n+   } else {\n+       Chip_SCU_I2C0PinConfig(I2C0_STANDARD_FAST_MODE);\n+   }\n+}\n+\n+void Board_SDMMC_Init(void)\n+{\n+   Chip_SCU_PinMuxSet(0x1, 9, SDIO_DAT_PINCFG);    /* P1.9 connected to SDIO_D0 */\n+   Chip_SCU_PinMuxSet(0x1, 10, SDIO_DAT_PINCFG);   /* P1.10 connected to SDIO_D1 */\n+   Chip_SCU_PinMuxSet(0x1, 11, SDIO_DAT_PINCFG);   /* P1.11 connected to SDIO_D2 */\n+   Chip_SCU_PinMuxSet(0x1, 12, SDIO_DAT_PINCFG);   /* P1.12 connected to SDIO_D3 */\n+\n+   Chip_SCU_ClockPinMuxSet(2, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_FUNC4)); /* CLK2 connected to SDIO_CLK */\n+   Chip_SCU_PinMuxSet(0x1, 6, SDIO_DAT_PINCFG);    /* P1.6 connected to SDIO_CMD */\n+   Chip_SCU_PinMuxSet(0x1, 13, (SCU_MODE_INBUFF_EN | SCU_MODE_FUNC7)); /* P1.13 connected to SDIO_CD */\n+}\n+\n+void Board_SSP_Init(LPC_SSP_T *pSSP)\n+{\n+   if (pSSP == LPC_SSP1) {\n+       Chip_SCU_PinMuxSet(0x1, 5, (SCU_PINIO_FAST | SCU_MODE_FUNC5));  /* P1.5 => SSEL1 */\n+       Chip_SCU_PinMuxSet(0xF, 4, (SCU_PINIO_FAST | SCU_MODE_FUNC0));  /* PF.4 => SCK1 */\n+       Chip_SCU_PinMuxSet(0x1, 4, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC5)); /* P1.4 => MOSI1 */\n+       Chip_SCU_PinMuxSet(0x1, 3, (SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC5)); /* P1.3 => MISO1 */\n+   } else {\n+       return;\n+   }\n+}\n+\n+/* Initialize DAC interface for the board */\n+void Board_DAC_Init(LPC_DAC_T *pDAC)\n+{\n+   Chip_SCU_DAC_Analog_Config();\n+}\n+\n+/**\n+ * @}\n+ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_board_ciaa_edu_4337/src/board_sysinit.c ./lpc_board_ciaa_edu_4337/src/board_sysinit.c\n--- a_OkB2vL/lpc_board_ciaa_edu_4337/src/board_sysinit.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/board_sysinit.c\t2017-02-27 21:03:16.976043462 -0300\n@@ -0,0 +1,143 @@\n+/*\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"board.h\"\n+\n+/* The System initialization code is called prior to the application and\n+   initializes the board for run-time operation. Board initialization\n+   includes clock setup and default pin muxing configuration. */\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Structure for initial base clock states */\n+struct CLK_BASE_STATES {\n+   CHIP_CGU_BASE_CLK_T clk;    /* Base clock */\n+   CHIP_CGU_CLKIN_T clkin; /* Base clock source, see UM for allowable souorces per base clock */\n+   bool autoblock_enab;/* Set to true to enable autoblocking on frequency change */\n+   bool powerdn;       /* Set to true if the base clock is initially powered down */\n+};\n+\n+/* Initial base clock states are mostly on */\n+STATIC const struct CLK_BASE_STATES InitClkStates[] = {\n+\n+   /* Ethernet Clock base */\n+   {CLK_BASE_PHY_TX, CLKIN_ENET_TX, true, false},\n+   {CLK_BASE_PHY_RX, CLKIN_ENET_TX, true, false},\n+\n+   /* Clocks derived from dividers */\n+   {CLK_BASE_USB0, CLKIN_IDIVD, true, true}\n+};\n+\n+STATIC const PINMUX_GRP_T pinmuxing[] = {\n+   /* Board LEDs */\n+   {2, 10, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC0)},\n+   {2, 11, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC0)},\n+   {2, 12, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC0)},\n+   {2, 0, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC4)},\n+   {2, 1, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC4)},\n+   {2, 2, (SCU_MODE_INBUFF_EN | SCU_MODE_PULLUP | SCU_MODE_FUNC4)},\n+\n+   /* UART 3 */\n+   {2, 3, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC2)},\n+   {2, 4, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC2)},\n+\n+   /* UART 0 */\n+   {9, 5, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC2)},\n+    {9, 6, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC7)},\n+    {6, 2, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC7)},\n+\n+    /* BUTTONS */\n+    {1, 0, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC0)},\n+    {1, 1, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC0)},\n+    {1, 2, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC0)},\n+    {1, 6, (SCU_MODE_INBUFF_EN | SCU_MODE_INACT | SCU_MODE_FUNC0)},\n+\n+   /* ENET Pin mux (RMII Pins) */\n+   {1, 15, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC3)}, /* RXD0 */\n+   {1, 16, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC7)}, /* CRS_DV */\n+   {1, 17, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC3)}, /* MDIO */\n+   {1, 18, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC3)}, /* TXD0 */\n+   {1, 19, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC0)}, /* REFCLK */\n+   {1, 20, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC3)}, /* TXD1 */\n+   {7,  7, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC6)}, /* MDC */\n+   {0,  0, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC2)},  /* RXD1 */\n+   {0,  1, (SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INACT | SCU_MODE_ZIF_DIS | SCU_MODE_FUNC6)}, /* TXEN */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Sets up system pin muxing */\n+void Board_SetupMuxing(void)\n+{\n+   /* Setup system level pin muxing */\n+   Chip_SCU_SetPinMuxing(pinmuxing, sizeof(pinmuxing) / sizeof(PINMUX_GRP_T));\n+}\n+\n+/* Set up and initialize clocking prior to call to main */\n+void Board_SetupClocking(void)\n+{\n+   int i;\n+\n+   /* Enable Flash acceleration and setup wait states */\n+   Chip_CREG_SetFlashAcceleration(MAX_CLOCK_FREQ);\n+\n+   /* Setup System core frequency to MAX_CLOCK_FREQ */\n+   Chip_SetupCoreClock(CLKIN_CRYSTAL, MAX_CLOCK_FREQ, true);\n+\n+   /* Setup system base clocks and initial states. This won't enable and\n+      disable individual clocks, but sets up the base clock sources for\n+      each individual peripheral clock. */\n+   for (i = 0; i < (sizeof(InitClkStates) / sizeof(InitClkStates[0])); i++) {\n+       Chip_Clock_SetBaseClock(InitClkStates[i].clk, InitClkStates[i].clkin,\n+                               InitClkStates[i].autoblock_enab, InitClkStates[i].powerdn);\n+   }\n+\n+   /* Reset and enable 32Khz oscillator */\n+   LPC_CREG->CREG0 &= ~((1 << 3) | (1 << 2));\n+   LPC_CREG->CREG0 |= (1 << 1) | (1 << 0);\n+}\n+\n+/* Set up and initialize hardware prior to call to main */\n+void Board_SystemInit(void)\n+{\n+   /* Setup system clocking and memory. This is done early to allow the\n+      application and tools to clear memory and use scatter loading to\n+      external memory. */\n+   Board_SetupMuxing();\n+   Board_SetupClocking();\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_board_ciaa_edu_4337/src/crp.c ./lpc_board_ciaa_edu_4337/src/crp.c\n--- a_OkB2vL/lpc_board_ciaa_edu_4337/src/crp.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/crp.c\t2017-02-27 21:03:16.976043462 -0300\n@@ -0,0 +1,3 @@\n+#define CRP_NO_CRP          0xFFFFFFFF\n+\n+__attribute__ ((used,section(\".crp\"))) const unsigned int CRP_WORD = CRP_NO_CRP ;\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_board_ciaa_edu_4337/src/cr_startup_lpc43xx.c ./lpc_board_ciaa_edu_4337/src/cr_startup_lpc43xx.c\n--- a_OkB2vL/lpc_board_ciaa_edu_4337/src/cr_startup_lpc43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/cr_startup_lpc43xx.c\t2017-02-27 21:03:16.976043462 -0300\n@@ -0,0 +1,502 @@\n+//*****************************************************************************\n+// LPC43xx (Cortex-M4) Microcontroller Startup code for use with LPCXpresso IDE\n+//\n+// Version : 140113\n+//*****************************************************************************\n+//\n+// Copyright(C) NXP Semiconductors, 2013-2014\n+// All rights reserved.\n+//\n+// Software that is described herein is for illustrative purposes only\n+// which provides customers with programming information regarding the\n+// LPC products.  This software is supplied \"AS IS\" without any warranties of\n+// any kind, and NXP Semiconductors and its licensor disclaim any and\n+// all warranties, express or implied, including all implied warranties of\n+// merchantability, fitness for a particular purpose and non-infringement of\n+// intellectual property rights.  NXP Semiconductors assumes no responsibility\n+// or liability for the use of the software, conveys no license or rights under any\n+// patent, copyright, mask work right, or any other intellectual property rights in\n+// or to any products. NXP Semiconductors reserves the right to make changes\n+// in the software without notification. NXP Semiconductors also makes no\n+// representation or warranty that such application will be suitable for the\n+// specified use without further testing or modification.\n+//\n+// Permission to use, copy, modify, and distribute this software and its\n+// documentation is hereby granted, under NXP Semiconductors' and its\n+// licensor's relevant copyrights in the software, without fee, provided that it\n+// is used in conjunction with NXP Semiconductors microcontrollers.  This\n+// copyright, permission, and disclaimer notice must appear in all copies of\n+// this code.\n+//*****************************************************************************\n+\n+#if defined (__cplusplus)\n+#ifdef __REDLIB__\n+#error Redlib does not support C++\n+#else\n+//*****************************************************************************\n+//\n+// The entry point for the C++ library startup\n+//\n+//*****************************************************************************\n+extern \"C\" {\n+    extern void __libc_init_array(void);\n+}\n+#endif\n+#endif\n+\n+#define WEAK __attribute__ ((weak))\n+#define ALIAS(f) __attribute__ ((weak, alias (#f)))\n+\n+//*****************************************************************************\n+#if defined (__cplusplus)\n+extern \"C\" {\n+#endif\n+\n+//*****************************************************************************\n+#if defined (__USE_CMSIS) || defined (__USE_LPCOPEN)\n+// Declaration of external SystemInit function\n+extern void SystemInit(void);\n+#endif\n+\n+//*****************************************************************************\n+//\n+// Forward declaration of the default handlers. These are aliased.\n+// When the application defines a handler (with the same name), this will\n+// automatically take precedence over these weak definitions\n+//\n+//*****************************************************************************\n+void ResetISR(void);\n+WEAK void NMI_Handler(void);\n+WEAK void HardFault_Handler(void);\n+WEAK void MemManage_Handler(void);\n+WEAK void BusFault_Handler(void);\n+WEAK void UsageFault_Handler(void);\n+WEAK void SVC_Handler(void);\n+WEAK void DebugMon_Handler(void);\n+WEAK void PendSV_Handler(void);\n+WEAK void SysTick_Handler(void);\n+WEAK void IntDefaultHandler(void);\n+\n+//*****************************************************************************\n+//\n+// Forward declaration of the specific IRQ handlers. These are aliased\n+// to the IntDefaultHandler, which is a 'forever' loop. When the application\n+// defines a handler (with the same name), this will automatically take\n+// precedence over these weak definitions\n+//\n+//*****************************************************************************\n+void DAC_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#if defined (__USE_LPCOPEN)\n+void M0APP_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#else\n+void M0CORE_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#endif\n+void DMA_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void FLASH_EEPROM_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ETH_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SDIO_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void LCD_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void USB0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void USB1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SCT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void RIT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void TIMER0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void TIMER1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void TIMER2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void TIMER3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void MCPWM_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ADC0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2C0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SPI_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2C1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void ADC1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SSP0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SSP1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void UART3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2S0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void I2S1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SPIFI_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void SGPIO_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO2_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO3_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO4_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO5_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO6_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GPIO7_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GINT0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void GINT1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void EVRT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CAN1_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#if defined (__USE_LPCOPEN)\n+void ADCHS_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#else\n+void VADC_IRQHandler(void) ALIAS(IntDefaultHandler);\n+#endif\n+void ATIMER_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void RTC_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void WDT_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void M0SUB_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void CAN0_IRQHandler(void) ALIAS(IntDefaultHandler);\n+void QEI_IRQHandler(void) ALIAS(IntDefaultHandler);\n+\n+//*****************************************************************************\n+//\n+// The entry point for the application.\n+// __main() is the entry point for Redlib based applications\n+// main() is the entry point for Newlib based applications\n+//\n+//*****************************************************************************\n+#if defined (__REDLIB__)\n+extern void __main(void);\n+#endif\n+extern int main(void);\n+//*****************************************************************************\n+//\n+// External declaration for the pointer to the stack top from the Linker Script\n+//\n+//*****************************************************************************\n+extern void _vStackTop(void);\n+\n+//*****************************************************************************\n+#if defined (__cplusplus)\n+} // extern \"C\"\n+#endif\n+//*****************************************************************************\n+//\n+// The vector table.\n+// This relies on the linker script to place at correct location in memory.\n+//\n+//*****************************************************************************\n+extern void (* const g_pfnVectors[])(void);\n+__attribute__ ((used,section(\".isr_vector\")))\n+void (* const g_pfnVectors[])(void) = {\n+    // Core Level - CM4\n+    &_vStackTop,                    // The initial stack pointer\n+    ResetISR,                       // The reset handler\n+    NMI_Handler,                    // The NMI handler\n+    HardFault_Handler,              // The hard fault handler\n+    MemManage_Handler,              // The MPU fault handler\n+    BusFault_Handler,               // The bus fault handler\n+    UsageFault_Handler,             // The usage fault handler\n+    0,                              // Reserved\n+    0,                              // Reserved\n+    0,                              // Reserved\n+    0,                              // Reserved\n+    SVC_Handler,                    // SVCall handler\n+    DebugMon_Handler,               // Debug monitor handler\n+    0,                              // Reserved\n+    PendSV_Handler,                 // The PendSV handler\n+    SysTick_Handler,                // The SysTick handler\n+\n+    // Chip Level - LPC43 (M4)\n+    DAC_IRQHandler,           // 16\n+#if defined (__USE_LPCOPEN)\n+    M0APP_IRQHandler,        // 17 CortexM4/M0 (LPC43XX ONLY)\n+#else\n+    M0CORE_IRQHandler,        // 17\n+#endif\n+    DMA_IRQHandler,           // 18\n+    0,           // 19\n+    FLASH_EEPROM_IRQHandler,   // 20 ORed flash Bank A, flash Bank B, EEPROM interrupts\n+    ETH_IRQHandler,           // 21\n+    SDIO_IRQHandler,          // 22\n+    LCD_IRQHandler,           // 23\n+    USB0_IRQHandler,          // 24\n+    USB1_IRQHandler,          // 25\n+    SCT_IRQHandler,           // 26\n+    RIT_IRQHandler,           // 27\n+    TIMER0_IRQHandler,        // 28\n+    TIMER1_IRQHandler,        // 29\n+    TIMER2_IRQHandler,        // 30\n+    TIMER3_IRQHandler,        // 31\n+    MCPWM_IRQHandler,         // 32\n+    ADC0_IRQHandler,          // 33\n+    I2C0_IRQHandler,          // 34\n+    I2C1_IRQHandler,          // 35\n+    SPI_IRQHandler,           // 36\n+    ADC1_IRQHandler,          // 37\n+    SSP0_IRQHandler,          // 38\n+    SSP1_IRQHandler,          // 39\n+    UART0_IRQHandler,         // 40\n+    UART1_IRQHandler,         // 41\n+    UART2_IRQHandler,         // 42\n+    UART3_IRQHandler,         // 43\n+    I2S0_IRQHandler,          // 44\n+    I2S1_IRQHandler,          // 45\n+    SPIFI_IRQHandler,         // 46\n+    SGPIO_IRQHandler,         // 47\n+    GPIO0_IRQHandler,         // 48\n+    GPIO1_IRQHandler,         // 49\n+    GPIO2_IRQHandler,         // 50\n+    GPIO3_IRQHandler,         // 51\n+    GPIO4_IRQHandler,         // 52\n+    GPIO5_IRQHandler,         // 53\n+    GPIO6_IRQHandler,         // 54\n+    GPIO7_IRQHandler,         // 55\n+    GINT0_IRQHandler,         // 56\n+    GINT1_IRQHandler,         // 57\n+    EVRT_IRQHandler,          // 58\n+    CAN1_IRQHandler,          // 59\n+    0,                        // 60\n+#if defined (__USE_LPCOPEN)\n+    ADCHS_IRQHandler,         // 61 ADCHS combined interrupt\n+#else\n+    VADC_IRQHandler,          // 61\n+#endif\n+    ATIMER_IRQHandler,        // 62\n+    RTC_IRQHandler,           // 63\n+    0,                        // 64\n+    WDT_IRQHandler,           // 65\n+    M0SUB_IRQHandler,         // 66\n+    CAN0_IRQHandler,          // 67\n+    QEI_IRQHandler,           // 68\n+};\n+\n+\n+//*****************************************************************************\n+// Functions to carry out the initialization of RW and BSS data sections. These\n+// are written as separate functions rather than being inlined within the\n+// ResetISR() function in order to cope with MCUs with multiple banks of\n+// memory.\n+//*****************************************************************************\n+        __attribute__((section(\".after_vectors\"\n+)))\n+void data_init(unsigned int romstart, unsigned int start, unsigned int len) {\n+    unsigned int *pulDest = (unsigned int*) start;\n+    unsigned int *pulSrc = (unsigned int*) romstart;\n+    unsigned int loop;\n+    for (loop = 0; loop < len; loop = loop + 4)\n+        *pulDest++ = *pulSrc++;\n+}\n+\n+__attribute__ ((section(\".after_vectors\")))\n+void bss_init(unsigned int start, unsigned int len) {\n+    unsigned int *pulDest = (unsigned int*) start;\n+    unsigned int loop;\n+    for (loop = 0; loop < len; loop = loop + 4)\n+        *pulDest++ = 0;\n+}\n+\n+//*****************************************************************************\n+// The following symbols are constructs generated by the linker, indicating\n+// the location of various points in the \"Global Section Table\". This table is\n+// created by the linker via the Code Red managed linker script mechanism. It\n+// contains the load address, execution address and length of each RW data\n+// section and the execution and length of each BSS (zero initialized) section.\n+//*****************************************************************************\n+extern unsigned int __data_section_table;\n+extern unsigned int __data_section_table_end;\n+extern unsigned int __bss_section_table;\n+extern unsigned int __bss_section_table_end;\n+\n+//*****************************************************************************\n+// Reset entry point for your code.\n+// Sets up a simple runtime environment and initializes the C/C++\n+// library.\n+//\n+//*****************************************************************************\n+void ResetISR(void) {\n+\n+// *************************************************************\n+// The following conditional block of code manually resets as\n+// much of the peripheral set of the LPC43 as possible. This is\n+// done because the LPC43 does not provide a means of triggering\n+// a full system reset under debugger control, which can cause\n+// problems in certain circumstances when debugging.\n+//\n+// You can prevent this code block being included if you require\n+// (for example when creating a final executable which you will\n+// not debug) by setting the define 'DONT_RESET_ON_RESTART'.\n+//\n+#ifndef DONT_RESET_ON_RESTART\n+\n+    // Disable interrupts\n+    __asm volatile (\"cpsid i\");\n+    // equivalent to CMSIS '__disable_irq()' function\n+\n+    unsigned int *RESET_CONTROL = (unsigned int *) 0x40053100;\n+    // LPC_RGU->RESET_CTRL0 @ 0x40053100\n+    // LPC_RGU->RESET_CTRL1 @ 0x40053104\n+    // Note that we do not use the CMSIS register access mechanism,\n+    // as there is no guarantee that the project has been configured\n+    // to use CMSIS.\n+\n+    // Write to LPC_RGU->RESET_CTRL0\n+    *(RESET_CONTROL + 0) = 0x10DF1000;\n+    // GPIO_RST|AES_RST|ETHERNET_RST|SDIO_RST|DMA_RST|\n+    // USB1_RST|USB0_RST|LCD_RST|M0_SUB_RST\n+\n+    // Write to LPC_RGU->RESET_CTRL1\n+    *(RESET_CONTROL + 1) = 0x01DFF7FF;\n+    // M0APP_RST|CAN0_RST|CAN1_RST|I2S_RST|SSP1_RST|SSP0_RST|\n+    // I2C1_RST|I2C0_RST|UART3_RST|UART1_RST|UART1_RST|UART0_RST|\n+    // DAC_RST|ADC1_RST|ADC0_RST|QEI_RST|MOTOCONPWM_RST|SCT_RST|\n+    // RITIMER_RST|TIMER3_RST|TIMER2_RST|TIMER1_RST|TIMER0_RST\n+\n+    // Clear all pending interrupts in the NVIC\n+    volatile unsigned int *NVIC_ICPR = (unsigned int *) 0xE000E280;\n+    unsigned int irqpendloop;\n+    for (irqpendloop = 0; irqpendloop < 8; irqpendloop++) {\n+        *(NVIC_ICPR + irqpendloop) = 0xFFFFFFFF;\n+    }\n+\n+    // Reenable interrupts\n+    __asm volatile (\"cpsie i\");\n+    // equivalent to CMSIS '__enable_irq()' function\n+\n+#endif  // ifndef DONT_RESET_ON_RESTART\n+// *************************************************************\n+\n+#if defined (__USE_LPCOPEN)\n+    SystemInit();\n+#endif\n+\n+    //\n+    // Copy the data sections from flash to SRAM.\n+    //\n+    unsigned int LoadAddr, ExeAddr, SectionLen;\n+    unsigned int *SectionTableAddr;\n+\n+    // Load base address of Global Section Table\n+    SectionTableAddr = &__data_section_table;\n+\n+    // Copy the data sections from flash to SRAM.\n+    while (SectionTableAddr < &__data_section_table_end) {\n+        LoadAddr = *SectionTableAddr++;\n+        ExeAddr = *SectionTableAddr++;\n+        SectionLen = *SectionTableAddr++;\n+        data_init(LoadAddr, ExeAddr, SectionLen);\n+    }\n+    // At this point, SectionTableAddr = &__bss_section_table;\n+    // Zero fill the bss segment\n+    while (SectionTableAddr < &__bss_section_table_end) {\n+        ExeAddr = *SectionTableAddr++;\n+        SectionLen = *SectionTableAddr++;\n+        bss_init(ExeAddr, SectionLen);\n+    }\n+\n+#if !defined (__USE_LPCOPEN)\n+// LPCOpen init code deals with FP and VTOR initialisation\n+#if defined (__VFP_FP__) && !defined (__SOFTFP__)\n+    /*\n+     * Code to enable the Cortex-M4 FPU only included\n+     * if appropriate build options have been selected.\n+     * Code taken from Section 7.1, Cortex-M4 TRM (DDI0439C)\n+     */\n+    // CPACR is located at address 0xE000ED88\n+    asm(\"LDR.W R0, =0xE000ED88\");\n+    // Read CPACR\n+    asm(\"LDR R1, [R0]\");\n+    // Set bits 20-23 to enable CP10 and CP11 coprocessors\n+    asm(\" ORR R1, R1, #(0xF << 20)\");\n+    // Write back the modified value to the CPACR\n+    asm(\"STR R1, [R0]\");\n+#endif // (__VFP_FP__) && !(__SOFTFP__)\n+    // ******************************\n+    // Check to see if we are running the code from a non-zero\n+    // address (eg RAM, external flash), in which case we need\n+    // to modify the VTOR register to tell the CPU that the\n+    // vector table is located at a non-0x0 address.\n+\n+    // Note that we do not use the CMSIS register access mechanism,\n+    // as there is no guarantee that the project has been configured\n+    // to use CMSIS.\n+    unsigned int * pSCB_VTOR = (unsigned int *) 0xE000ED08;\n+    if ((unsigned int *) g_pfnVectors != (unsigned int *) 0x00000000) {\n+        // CMSIS : SCB->VTOR = <address of vector table>\n+        *pSCB_VTOR = (unsigned int) g_pfnVectors;\n+    }\n+#endif\n+\n+#if defined (__USE_CMSIS)\n+    SystemInit();\n+#endif\n+\n+#if defined (__cplusplus)\n+    //\n+    // Call C++ library initialisation\n+    //\n+    __libc_init_array();\n+#endif\n+\n+#if defined (__REDLIB__)\n+    // Call the Redlib library, which in turn calls main()\n+    __main();\n+#else\n+    main();\n+#endif\n+\n+    //\n+    // main() shouldn't return, but if it does, we'll just enter an infinite loop\n+    //\n+    while (1) {\n+        ;\n+    }\n+}\n+\n+//*****************************************************************************\n+// Default exception handlers. Override the ones here by defining your own\n+// handler routines in your application code.\n+//*****************************************************************************\n+__attribute__ ((section(\".after_vectors\")))\n+void NMI_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void HardFault_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void MemManage_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void BusFault_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void UsageFault_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void SVC_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void DebugMon_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void PendSV_Handler(void) {\n+    while (1) {\n+    }\n+}\n+__attribute__ ((section(\".after_vectors\")))\n+void SysTick_Handler(void) {\n+    while (1) {\n+    }\n+}\n+\n+//*****************************************************************************\n+//\n+// Processor ends up here if an unexpected interrupt occurs or a specific\n+// handler is not present in the application code.\n+//\n+//*****************************************************************************\n+__attribute__ ((section(\".after_vectors\")))\n+void IntDefaultHandler(void) {\n+    while (1) {\n+    }\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_board_ciaa_edu_4337/src/sysinit.c ./lpc_board_ciaa_edu_4337/src/sysinit.c\n--- a_OkB2vL/lpc_board_ciaa_edu_4337/src/sysinit.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/sysinit.c\t2017-02-27 21:03:16.976043462 -0300\n@@ -0,0 +1,89 @@\n+/*\n+ * @brief Common SystemInit function for LPC18xx/LPC43xx chips\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+#if defined(NO_BOARD_LIB)\n+#include \"chip.h\"\n+const uint32_t ExtRateIn = 0;\n+const uint32_t OscRateIn = 12000000;\n+#else\n+#include \"board.h\"\n+#endif\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set up and initialize hardware prior to call to main */\n+void SystemInit(void)\n+{\n+#if defined(CORE_M3) || defined(CORE_M4)\n+   unsigned int *pSCB_VTOR = (unsigned int *) 0xE000ED08;\n+\n+#if defined(__IAR_SYSTEMS_ICC__)\n+   extern void *__vector_table;\n+\n+   *pSCB_VTOR = (unsigned int) &__vector_table;\n+#elif defined(__CODE_RED)\n+   extern void *g_pfnVectors;\n+\n+   *pSCB_VTOR = (unsigned int) &g_pfnVectors;\n+#elif defined(__ARMCC_VERSION)\n+   extern void *__Vectors;\n+\n+   *pSCB_VTOR = (unsigned int) &__Vectors;\n+#endif\n+\n+#if defined(__FPU_PRESENT) && __FPU_PRESENT == 1\n+   fpuInit();\n+#endif\n+\n+#if defined(NO_BOARD_LIB)\n+   /* Chip specific SystemInit */\n+   Chip_SystemInit();\n+#else\n+   /* Board specific SystemInit */\n+   Board_SystemInit();\n+#endif\n+\n+#endif /* defined(CORE_M3) || defined(CORE_M4) */\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_board_ciaa_edu_4337/src/system.c ./lpc_board_ciaa_edu_4337/src/system.c\n--- a_OkB2vL/lpc_board_ciaa_edu_4337/src/system.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_board_ciaa_edu_4337/src/system.c\t2017-02-27 21:03:16.976043462 -0300\n@@ -0,0 +1,190 @@\n+#include <reent.h>\n+#include <errno.h>\n+#include <signal.h>\n+\n+#include <board.h>\n+\n+#define UNUSED(...) ((void) (__VA_ARGS__))\n+#define SET_ERR(e) (r->_errno = e)\n+\n+void _exit(int code) {\n+   register int __params__ __asm__(\"r0\") = code;\n+   while (1)\n+       __asm__ __volatile__(\"bkpt 0\");\n+}\n+\n+int _close_r(struct _reent *r, int fd) {\n+   UNUSED(fd);\n+   SET_ERR(EBADF);\n+   return -1;\n+}\n+\n+int _execve_r(struct _reent *r, const char *f, char * const *args,\n+       char * const *env) {\n+   UNUSED(f, args, env);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _fcntl_r(struct _reent *r, int fd, int cmd, int arg) {\n+   UNUSED(fd, cmd, arg);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _fork_r(struct _reent *r) {\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _fstat_r(struct _reent *r, int fd, struct stat *st) {\n+   UNUSED(fd, st);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _getpid_r(struct _reent *r) {\n+   UNUSED(r);\n+   return 1;\n+}\n+\n+int _isatty_r(struct _reent *r, int fd) {\n+   switch (fd) {\n+   case 0:\n+   case 1:\n+   case 2:\n+       return 1;\n+   default:\n+       SET_ERR(EBADF);\n+       return -1;\n+   }\n+}\n+\n+int _kill_r(struct _reent *r, int pid, int signal) {\n+   if (pid == _getpid_r(r)) {\n+       switch (signal) {\n+       case SIGHUP:\n+       case SIGINT:\n+       case SIGQUIT:\n+       case SIGILL:\n+       case SIGTRAP:\n+       case SIGEMT:\n+       case SIGFPE:\n+       case SIGKILL:\n+       case SIGBUS:\n+       case SIGSEGV:\n+       case SIGSYS:\n+       case SIGPIPE:\n+       case SIGALRM:\n+       case SIGTERM:\n+       default:\n+           _exit(0);\n+       }\n+   } else {\n+       SET_ERR(ECHILD);\n+   }\n+   return -1;\n+}\n+\n+int _link_r(struct _reent *r, const char *oldf, const char *newf) {\n+   UNUSED(oldf, newf);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+_off_t _lseek_r(struct _reent *r, int fd, _off_t off, int w) {\n+   UNUSED(fd, off, w);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _mkdir_r(struct _reent *r, const char *name, int m) {\n+   UNUSED(name, m);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _open_r(struct _reent *r, const char *name, int f, int m) {\n+   UNUSED(name, f, m);\n+   SET_ERR(EBADF);\n+   return -1;\n+}\n+\n+_ssize_t _read_r(struct _reent *r, int fd, void *b, size_t n) {\n+   size_t i;\n+   switch (fd) {\n+   case 0:\n+   case 1:\n+   case 2:\n+       for (i = 0; i < n; i++)\n+           ((char*) b)[i] = Board_UARTGetChar();\n+       return n;\n+   default:\n+       SET_ERR(ENODEV);\n+       return -1;\n+   }\n+}\n+\n+int _rename_r(struct _reent *r, const char *oldf, const char *newf) {\n+   UNUSED(oldf, newf);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+void *_sbrk_r(struct _reent *r, ptrdiff_t incr) {\n+   extern int _pvHeapStart;\n+   static void *heap_end;\n+   void *prev_heap_end;\n+   if (heap_end == 0) {\n+       heap_end = &_pvHeapStart;\n+   }\n+   prev_heap_end = heap_end;\n+   heap_end += incr;\n+   return prev_heap_end;\n+}\n+\n+int _stat_r(struct _reent *r, const char *name, struct stat *s) {\n+   UNUSED(name, s);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+_CLOCK_T_ _times_r(struct _reent *r, struct tms *tm) {\n+   UNUSED(tm);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _unlink_r(struct _reent *r, const char *name) {\n+   UNUSED(name);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+int _wait_r(struct _reent *r, int *st) {\n+   UNUSED(st);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\n+\n+_ssize_t _write_r(struct _reent *r, int fd, const void *b, size_t n) {\n+   size_t i;\n+   switch (fd) {\n+   case 0:\n+   case 1:\n+   case 2:\n+       for (i = 0; i < n; i++)\n+           Board_UARTPutChar(((char*) b)[i]);\n+       return n;\n+   default:\n+       SET_ERR(ENODEV);\n+       return -1;\n+   }\n+}\n+\n+/* This one is not guaranteed to be available on all targets.  */\n+int _gettimeofday_r(struct _reent *r, struct timeval *__tp, void *__tzp) {\n+   UNUSED(__tp, __tzp);\n+   SET_ERR(ENOSYS);\n+   return -1;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/adc_18xx_43xx.h ./lpc_chip_43xx/inc/adc_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/adc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/adc_18xx_43xx.h\t2017-02-27 21:03:16.980043462 -0300\n@@ -0,0 +1,268 @@\n+/*\n+ * @brief  LPC18xx/43xx A/D conversion driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ADC_18XX_43XX_H_\n+#define __ADC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ADC_18XX_43XX CHIP:  LPC18xx/43xx A/D conversion driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define ADC_ACC_10BITS\n+\n+#define ADC_MAX_SAMPLE_RATE 400000\n+\n+/**\n+ * @brief 10 or 12-bit ADC register block structure\n+ */\n+typedef struct {                   /*!< ADCn Structure */\n+   __IO uint32_t CR;               /*!< A/D Control Register. The AD0CR register must be written to select the operating mode before A/D conversion can occur. */\n+   __I  uint32_t GDR;              /*!< A/D Global Data Register. Contains the result of the most recent A/D conversion. */\n+   __I  uint32_t RESERVED0;\n+   __IO uint32_t INTEN;            /*!< A/D Interrupt Enable Register. This register contains enable bits that allow the DONE flag of each A/D channel to be included or excluded from contributing to the generation of an A/D interrupt. */\n+   __I  uint32_t DR[8];            /*!< A/D Channel Data Register. This register contains the result of the most recent conversion completed on channel n. */\n+   __I  uint32_t STAT;             /*!< A/D Status Register. This register contains DONE and OVERRUN flags for all of the A/D channels, as well as the A/D interrupt flag. */\n+} LPC_ADC_T;\n+\n+/**\n+ * @brief ADC register support bitfields and mask\n+ */\n+\n+#define ADC_DR_RESULT(n)        ((((n) >> 6) & 0x3FF)) /*!< Mask for getting the 10 bits ADC data read value */\n+#define ADC_CR_BITACC(n)        ((((n) & 0x7) << 17))  /*!< Number of ADC accuracy bits */\n+#define ADC_DR_DONE(n)          (((n) >> 31))          /*!< Mask for reading the ADC done status */\n+#define ADC_DR_OVERRUN(n)       ((((n) >> 30) & (1UL)))    /*!< Mask for reading the ADC overrun status */\n+#define ADC_CR_CH_SEL(n)        ((1UL << (n)))         /*!< Selects which of the AD0.0:7 pins is (are) to be sampled and converted */\n+#define ADC_CR_CLKDIV(n)        ((((n) & 0xFF) << 8))  /*!< The APB clock (PCLK) is divided by (this value plus one) to produce the clock for the A/D */\n+#define ADC_CR_BURST            ((1UL << 16))          /*!< Repeated conversions A/D enable bit */\n+#define ADC_CR_PDN              ((1UL << 21))          /*!< ADC convert is operational */\n+#define ADC_CR_START_MASK       ((7UL << 24))          /*!< ADC start mask bits */\n+#define ADC_CR_START_MODE_SEL(SEL)  ((SEL << 24))      /*!< Select Start Mode */\n+#define ADC_CR_START_NOW        ((1UL << 24))          /*!< Start conversion now */\n+#define ADC_CR_START_CTOUT15    ((2UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on CTOUT_15 */\n+#define ADC_CR_START_CTOUT8     ((3UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on CTOUT_8 */\n+#define ADC_CR_START_ADCTRIG0   ((4UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on ADCTRIG0 */\n+#define ADC_CR_START_ADCTRIG1   ((5UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on ADCTRIG1 */\n+#define ADC_CR_START_MCOA2      ((6UL << 24))          /*!< Start conversion when the edge selected by bit 27 occurs on Motocon PWM output MCOA2 */\n+#define ADC_CR_EDGE             ((1UL << 27))          /*!< Start conversion on a falling edge on the selected CAP/MAT signal */\n+#define ADC_SAMPLE_RATE_CONFIG_MASK         (ADC_CR_CLKDIV(0xFF) | ADC_CR_BITACC(0x07))\n+\n+/**\n+ * @brief  ADC status register used for IP drivers\n+ */\n+typedef enum IP_ADC_STATUS {\n+   ADC_DR_DONE_STAT,   /*!< ADC data register staus */\n+   ADC_DR_OVERRUN_STAT,/*!< ADC data overrun staus */\n+   ADC_DR_ADINT_STAT   /*!< ADC interrupt status */\n+} ADC_STATUS_T;\n+\n+/** The channels on one ADC peripheral*/\n+typedef enum CHIP_ADC_CHANNEL {\n+   ADC_CH0 = 0,    /**< ADC channel 0 */\n+   ADC_CH1,        /**< ADC channel 1 */\n+   ADC_CH2,        /**< ADC channel 2 */\n+   ADC_CH3,        /**< ADC channel 3 */\n+   ADC_CH4,        /**< ADC channel 4 */\n+   ADC_CH5,        /**< ADC channel 5 */\n+   ADC_CH6,        /**< ADC channel 6 */\n+   ADC_CH7,        /**< ADC channel 7 */\n+} ADC_CHANNEL_T;\n+\n+/** The number of bits of accuracy of the result in the LS bits of ADDR*/\n+typedef enum CHIP_ADC_RESOLUTION {\n+   ADC_10BITS = 0,     /**< ADC 10 bits */\n+   ADC_9BITS,          /**< ADC 9 bits  */\n+   ADC_8BITS,          /**< ADC 8 bits  */\n+   ADC_7BITS,          /**< ADC 7 bits  */\n+   ADC_6BITS,          /**< ADC 6 bits  */\n+   ADC_5BITS,          /**< ADC 5 bits  */\n+   ADC_4BITS,          /**< ADC 4 bits  */\n+   ADC_3BITS,          /**< ADC 3 bits  */\n+} ADC_RESOLUTION_T;\n+\n+/** Edge configuration, which controls rising or falling edge on the selected signal for the start of a conversion */\n+typedef enum CHIP_ADC_EDGE_CFG {\n+   ADC_TRIGGERMODE_RISING = 0,     /**< Trigger event: rising edge */\n+   ADC_TRIGGERMODE_FALLING,        /**< Trigger event: falling edge */\n+} ADC_EDGE_CFG_T;\n+\n+/** Start mode, which controls the start of an A/D conversion when the BURST bit is 0. */\n+typedef enum CHIP_ADC_START_MODE {\n+   ADC_NO_START = 0,\n+   ADC_START_NOW,          /*!< Start conversion now */\n+   ADC_START_ON_CTOUT15,   /*!< Start conversion when the edge selected by bit 27 occurs on CTOUT_15 */\n+   ADC_START_ON_CTOUT8,    /*!< Start conversion when the edge selected by bit 27 occurs on CTOUT_8 */\n+   ADC_START_ON_ADCTRIG0,  /*!< Start conversion when the edge selected by bit 27 occurs on ADCTRIG0 */\n+   ADC_START_ON_ADCTRIG1,  /*!< Start conversion when the edge selected by bit 27 occurs on ADCTRIG1 */\n+   ADC_START_ON_MCOA2      /*!< Start conversion when the edge selected by bit 27 occurs on Motocon PWM output MCOA2 */\n+} ADC_START_MODE_T;\n+\n+/** Clock setup structure for ADC controller passed to the initialize function */\n+typedef struct {\n+   uint32_t adcRate;       /*!< ADC rate */\n+   uint8_t  bitsAccuracy;  /*!< ADC bit accuracy */\n+   bool     burstMode;     /*!< ADC Burt Mode */\n+} ADC_CLOCK_SETUP_T;\n+\n+/**\n+ * @brief  Initialize the ADC peripheral and the ADC setup structure to default value\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  ADCSetup    : ADC setup structure to be set\n+ * @return Nothing\n+ * @note   Default setting for ADC is 400kHz - 10bits\n+ */\n+void Chip_ADC_Init(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup);\n+\n+/**\n+ * @brief  Shutdown ADC\n+ * @param  pADC    : The base of ADC peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_ADC_DeInit(LPC_ADC_T *pADC);\n+\n+/**\n+ * @brief  Read the ADC value from a channel\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel     : ADC channel to read\n+ * @param  data        : Pointer to where to put data\n+ * @return SUCCESS or ERROR if no conversion is ready\n+ */\n+Status Chip_ADC_ReadValue(LPC_ADC_T *pADC, uint8_t channel, uint16_t *data);\n+\n+/**\n+ * @brief  Read the ADC value and convert it to 8bits value\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel:    selected channel\n+ * @param  data        : Storage for data\n+ * @return Status  : ERROR or SUCCESS\n+ */\n+Status Chip_ADC_ReadByte(LPC_ADC_T *pADC, ADC_CHANNEL_T channel, uint8_t *data);\n+\n+/**\n+ * @brief  Read the ADC channel status\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel     : ADC channel to read\n+ * @param  StatusType  : Status type of ADC_DR_*\n+ * @return SET or RESET\n+ */\n+FlagStatus Chip_ADC_ReadStatus(LPC_ADC_T *pADC, uint8_t channel, uint32_t StatusType);\n+\n+/**\n+ * @brief  Enable/Disable interrupt for ADC channel\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel     : ADC channel to read\n+ * @param  NewState    : New state, ENABLE or DISABLE\n+ * @return SET or RESET\n+ */\n+void Chip_ADC_Int_SetChannelCmd(LPC_ADC_T *pADC, uint8_t channel, FunctionalState NewState);\n+\n+/**\n+ * @brief  Enable/Disable global interrupt for ADC channel\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  NewState    : New state, ENABLE or DISABLE\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ADC_Int_SetGlobalCmd(LPC_ADC_T *pADC, FunctionalState NewState)\n+{\n+   Chip_ADC_Int_SetChannelCmd(pADC, 8, NewState);\n+}\n+\n+/**\n+ * @brief  Select the mode starting the AD conversion\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  mode        : Stating mode, should be :\n+ *                         - ADC_NO_START              : Must be set for Burst mode\n+ *                         - ADC_START_NOW             : Start conversion now\n+ *                         - ADC_START_ON_CTOUT15      : Start conversion when the edge selected by bit 27 occurs on CTOUT_15\n+ *                         - ADC_START_ON_CTOUT8       : Start conversion when the edge selected by bit 27 occurs on CTOUT_8\n+ *                         - ADC_START_ON_ADCTRIG0     : Start conversion when the edge selected by bit 27 occurs on ADCTRIG0\n+ *                         - ADC_START_ON_ADCTRIG1     : Start conversion when the edge selected by bit 27 occurs on ADCTRIG1\n+ *                         - ADC_START_ON_MCOA2        : Start conversion when the edge selected by bit 27 occurs on Motocon PWM output MCOA2\n+ * @param  EdgeOption  : Stating Edge Condition, should be :\n+ *                         - ADC_TRIGGERMODE_RISING    : Trigger event on rising edge\n+ *                         - ADC_TRIGGERMODE_FALLING   : Trigger event on falling edge\n+ * @return Nothing\n+ */\n+void Chip_ADC_SetStartMode(LPC_ADC_T *pADC, ADC_START_MODE_T mode, ADC_EDGE_CFG_T EdgeOption);\n+\n+/**\n+ * @brief  Set the ADC Sample rate\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  ADCSetup    : ADC setup structure to be modified\n+ * @param  rate        : Sample rate, should be set so the clock for A/D converter is less than or equal to 4.5MHz.\n+ * @return Nothing\n+ */\n+void Chip_ADC_SetSampleRate(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup, uint32_t rate);\n+\n+/**\n+ * @brief  Set the ADC accuracy bits\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  ADCSetup    : ADC setup structure to be modified\n+ * @param  resolution  : The resolution, should be ADC_10BITS -> ADC_3BITS\n+ * @return Nothing\n+ */\n+void Chip_ADC_SetResolution(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup, ADC_RESOLUTION_T resolution);\n+\n+/**\n+ * @brief  Enable or disable the ADC channel on ADC peripheral\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  channel     : Channel to be enable or disable\n+ * @param  NewState    : New state, should be:\n+ *                             - ENABLE\n+ *                             - DISABLE\n+ * @return Nothing\n+ */\n+void Chip_ADC_EnableChannel(LPC_ADC_T *pADC, ADC_CHANNEL_T channel, FunctionalState NewState);\n+\n+/**\n+ * @brief  Enable burst mode\n+ * @param  pADC        : The base of ADC peripheral on the chip\n+ * @param  NewState    : New state, should be:\n+ *                         - ENABLE\n+ *                         - DISABLE\n+ * @return Nothing\n+ */\n+void Chip_ADC_SetBurstCmd(LPC_ADC_T *pADC, FunctionalState NewState);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ADC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/aes_18xx_43xx.h ./lpc_chip_43xx/inc/aes_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/aes_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/aes_18xx_43xx.h\t2017-02-27 21:03:16.980043462 -0300\n@@ -0,0 +1,161 @@\n+/*\n+ * @brief LPC18xx/43xx AES Engine driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __AES_18XX_43XX_H_\n+#define __AES_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup AES_18XX_43XX CHIP: LPC18xx/43xx AES Engine driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  AES Engine operation mode\n+ */\n+typedef enum CHIP_AES_OP_MODE {\n+   CHIP_AES_API_CMD_ENCODE_ECB,    /*!< ECB Encode mode */\n+   CHIP_AES_API_CMD_DECODE_ECB,    /*!< ECB Decode mode */\n+   CHIP_AES_API_CMD_ENCODE_CBC,    /*!< CBC Encode mode */\n+   CHIP_AES_API_CMD_DECODE_CBC,    /*!< CBC Decode mode */\n+} CHIP_AES_OP_MODE_T;\n+\n+/**\n+ * @brief  Initialize the AES Engine function\n+ * @return None\n+ * This function will initialize all the AES Engine driver function pointers\n+ * and call the AES Engine Initialization function.\n+ */\n+void Chip_AES_Init(void);\n+\n+/**\n+ * @brief  Set operation mode in AES Engine\n+ * @param  AesMode     : AES Operation Mode\n+ * @return Status\n+ */\n+uint32_t Chip_AES_SetMode(CHIP_AES_OP_MODE_T AesMode);\n+\n+/**\n+ * @brief  Load 128-bit AES user key in AES Engine\n+ * @param  keyNum: 0 - Load AES 128-bit user key 1, else load user key2\n+ * @return None\n+ */\n+void Chip_AES_LoadKey(uint32_t keyNum);\n+\n+/**\n+ * @brief  Load randomly generated key in AES engine\n+ * @return None\n+ * To update the RNG and load a new random number,\n+ * the API call Chip_OTP_GenRand should be used\n+ */\n+void Chip_AES_LoadKeyRNG(void);\n+\n+/**\n+ * @brief  Load 128-bit AES software defined user key in AES Engine\n+ * @param  pKey        : Pointer to 16 byte user key\n+ * @return None\n+ */\n+void Chip_AES_LoadKeySW(uint8_t *pKey);\n+\n+/**\n+ * @brief Load 128-bit AES initialization vector in AES Engine\n+ * @param  pVector     : Pointer to 16 byte Initialisation vector\n+ * @return None\n+ */\n+void Chip_AES_LoadIV_SW(uint8_t *pVector);\n+\n+/**\n+ * @brief Load IC specific 128-bit AES initialization vector in AES Engine\n+ * @return None\n+ * This loads 128-bit AES IC specific initialization vector,\n+ * which is used to decrypt a boot image\n+ */\n+void Chip_AES_LoadIV_IC(void);\n+\n+/**\n+ * @brief Operate AES Engine\n+ * @param  pDatOut     : Pointer to output data stream\n+ * @param  pDatIn      : Pointer to input data stream\n+ * @param  Size        : Size of the data stream (128-bit)\n+ * @return Status\n+ * This function performs the AES operation after the AES mode\n+ * has been set using Chip_AES_SetMode and the appropriate keys\n+ * and init vectors have been loaded\n+ */\n+uint32_t Chip_AES_Operate(uint8_t *pDatOut, uint8_t *pDatIn, uint32_t Size);\n+\n+/**\n+ * @brief  Program 128-bit AES Key in OTP\n+ * @param  KeyNum      : Key Number (Select 0 or 1)\n+ * @param  pKey        : Pointer to AES Key (16 bytes required)\n+ * @return Status\n+ * When calling the aes_ProgramKey2 function, ensure that VPP = 2.7 V to 3.6 V.\n+ */\n+uint32_t Chip_AES_ProgramKey(uint32_t KeyNum, uint8_t *pKey);\n+\n+/**\n+ * @brief  Checks for valid AES configuration of the chip and setup\n+ *         DMA channel to process an AES data block.\n+ * @param  channel_id  : channel id\n+ * @return Status\n+ */\n+uint32_t Chip_AES_Config_DMA(uint32_t channel_id);\n+\n+/**\n+ * @brief  Checks for valid AES configuration of the chip and\n+ *         enables DMA channel to process an AES data block.\n+ * @param  channel_id  : channel_id\n+ * @param  dataOutAddr : destination address(16 x size of consecutive bytes)\n+ * @param  dataInAddr  : source address(16 x size of consecutive bytes)\n+ * @param  size        : number of 128 bit AES blocks\n+ * @return Status\n+ */\n+uint32_t Chip_AES_OperateDMA(uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size);\n+\n+/**\n+ * @brief  Read status of DMA channels that process an AES data block.\n+ * @param  channel_id  : channel id\n+ * @return Status\n+ */\n+ uint32_t Chip_AES_GetStatusDMA(uint32_t channel_id);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __AES_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/atimer_18xx_43xx.h ./lpc_chip_43xx/inc/atimer_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/atimer_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/atimer_18xx_43xx.h\t2017-02-27 21:03:16.980043462 -0300\n@@ -0,0 +1,143 @@\n+/*\n+ * @brief LPC18xx/43xx Alarm Timer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ATIMER_18XX_43XX_H_\n+#define __ATIMER_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ATIMER_18XX_43XX CHIP: LPC18xx/43xx Alarm Timer driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Alarm Timer register block structure\n+ */\n+typedef struct {                   /*!< ATIMER Structure       */\n+   __IO uint32_t DOWNCOUNTER;      /*!< Downcounter register   */\n+   __IO uint32_t PRESET;           /*!< Preset value register  */\n+   __I  uint32_t RESERVED0[1012];\n+   __O  uint32_t CLR_EN;           /*!< Interrupt clear enable register */\n+   __O  uint32_t SET_EN;           /*!< Interrupt set enable register */\n+   __I  uint32_t STATUS;           /*!< Status register        */\n+   __I  uint32_t ENABLE;           /*!< Enable register        */\n+   __O  uint32_t CLR_STAT;         /*!< Clear register         */\n+   __O  uint32_t SET_STAT;         /*!< Set register           */\n+} LPC_ATIMER_T;\n+\n+/**\n+ * @brief  Initialize Alarm Timer\n+ * @param  pATIMER     : The base of ATIMER peripheral on the chip\n+ * @param  PresetValue : Count of 1 to 1024s for Alarm\n+ * @return None\n+ */\n+void Chip_ATIMER_Init(LPC_ATIMER_T *pATIMER, uint32_t PresetValue);\n+\n+/**\n+ * @brief  Close ATIMER device\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+void Chip_ATIMER_DeInit(LPC_ATIMER_T *pATIMER);\n+\n+/**\n+ * @brief  Enable ATIMER Interrupt\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_ATIMER_IntEnable(LPC_ATIMER_T *pATIMER)\n+{\n+   pATIMER->SET_EN = 1;\n+}\n+\n+/**\n+ * @brief  Disable ATIMER Interrupt\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_ATIMER_IntDisable(LPC_ATIMER_T *pATIMER)\n+{\n+   pATIMER->CLR_EN = 1;\n+}\n+\n+/**\n+ * @brief  Clear ATIMER Interrupt Status\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_ATIMER_ClearIntStatus(LPC_ATIMER_T *pATIMER)\n+{\n+   pATIMER->CLR_STAT = 1;\n+}\n+\n+/**\n+ * @brief  Set ATIMER Interrupt Status\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_ATIMER_SetIntStatus(LPC_ATIMER_T *pATIMER)\n+{\n+   pATIMER->SET_STAT = 1;\n+}\n+\n+/**\n+ * @brief  Update Preset value\n+ * @param  pATIMER     : The base of ATIMER peripheral on the chip\n+ * @param  PresetValue : updated preset value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ATIMER_UpdatePresetValue(LPC_ATIMER_T *pATIMER, uint32_t PresetValue)\n+{\n+   pATIMER->PRESET = PresetValue;\n+}\n+\n+/**\n+ * @brief  Read value of preset register\n+ * @param  pATIMER : The base of ATIMER peripheral on the chip\n+ * @return Value of capture register\n+ */\n+STATIC INLINE uint32_t Chip_ATIMER_GetPresetValue(LPC_ATIMER_T *pATIMER)\n+{\n+   return pATIMER->PRESET;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ATIMER_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/ccan_18xx_43xx.h ./lpc_chip_43xx/inc/ccan_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/ccan_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/ccan_18xx_43xx.h\t2017-02-27 21:03:16.984043462 -0300\n@@ -0,0 +1,505 @@\n+/*\n+ * @brief LPC18xx/43xx CCAN driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CCAN_18XX_43XX_H_\n+#define __CCAN_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CCAN_18XX_43XX CHIP: LPC18xx/43xx CCAN driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief CCAN message interface register block structure\n+ */\n+typedef struct {   /*!< C_CAN message interface Structure       */\n+   __IO uint32_t CMDREQ;           /*!< Message interface command request  */\n+   __IO uint32_t CMDMSK;           /*!< Message interface command mask*/\n+   __IO uint32_t MSK1;             /*!< Message interface mask 1 */\n+   __IO uint32_t MSK2;             /*!< Message interface mask 2 */\n+   __IO uint32_t ARB1;             /*!< Message interface arbitration 1 */\n+   __IO uint32_t ARB2;             /*!< Message interface arbitration 2 */\n+   __IO uint32_t MCTRL;            /*!< Message interface message control */\n+   __IO uint32_t DA1;              /*!< Message interface data A1 */\n+   __IO uint32_t DA2;              /*!< Message interface data A2 */\n+   __IO uint32_t DB1;              /*!< Message interface data B1 */\n+   __IO uint32_t DB2;              /*!< Message interface data B2 */\n+   __I  uint32_t  RESERVED[13];\n+} CCAN_IF_T;\n+\n+/**\n+ * @brief CCAN Controller Area Network register block structure\n+ */\n+typedef struct {                       /*!< C_CAN Structure       */\n+   __IO uint32_t CNTL;                 /*!< CAN control            */\n+   __IO uint32_t STAT;                 /*!< Status register        */\n+   __I  uint32_t EC;                   /*!< Error counter          */\n+   __IO uint32_t BT;                   /*!< Bit timing register    */\n+   __I  uint32_t INT;                  /*!< Interrupt register     */\n+   __IO uint32_t TEST;                 /*!< Test register          */\n+   __IO uint32_t BRPE;                 /*!< Baud rate prescaler extension register */\n+   __I  uint32_t  RESERVED0;\n+   CCAN_IF_T IF[2];\n+   __I  uint32_t  RESERVED2[8];\n+   __I  uint32_t TXREQ1;               /*!< Transmission request 1 */\n+   __I  uint32_t TXREQ2;               /*!< Transmission request 2 */\n+   __I  uint32_t  RESERVED3[6];\n+   __I  uint32_t ND1;                  /*!< New data 1             */\n+   __I  uint32_t ND2;                  /*!< New data 2             */\n+   __I  uint32_t  RESERVED4[6];\n+   __I  uint32_t IR1;                  /*!< Interrupt pending 1    */\n+   __I  uint32_t IR2;                  /*!< Interrupt pending 2    */\n+   __I  uint32_t  RESERVED5[6];\n+   __I  uint32_t MSGV1;                /*!< Message valid 1        */\n+   __I  uint32_t MSGV2;                /*!< Message valid 2        */\n+   __I  uint32_t  RESERVED6[6];\n+   __IO uint32_t CLKDIV;               /*!< CAN clock divider register */\n+} LPC_CCAN_T;\n+\n+/* CCAN Control register bit definitions */\n+#define CCAN_CTRL_INIT      (1 << 0)   /*!< Initialization is started. */\n+#define CCAN_CTRL_IE        (1 << 1)   /*!< Module Interupt Enable. */\n+#define CCAN_CTRL_SIE       (1 << 2)   /*!< Status Change Interupt Enable. */\n+#define CCAN_CTRL_EIE       (1 << 3)   /*!< Error Interupt Enable. */\n+#define CCAN_CTRL_DAR       (1 << 5)   /*!< Automatic retransmission disabled. */\n+#define CCAN_CTRL_CCE       (1 << 6)   /*!< The CPU has write access to the CANBT register while the INIT bit is one.*/\n+#define CCAN_CTRL_TEST      (1 << 7)   /*!< Test mode. */\n+\n+/* CCAN STAT register bit definitions */\n+#define CCAN_STAT_LEC_MASK  (0x07)     /* Mask for Last Error Code */\n+#define CCAN_STAT_TXOK      (1 << 3)   /* Transmitted a message successfully */\n+#define CCAN_STAT_RXOK      (1 << 4)   /* Received a message successfully */\n+#define CCAN_STAT_EPASS     (1 << 5)   /* The CAN controller is in the error passive state*/\n+#define CCAN_STAT_EWARN     (1 << 6)   /*At least one of the error counters in the EC has reached the error warning limit of 96.*/\n+#define CCAN_STAT_BOFF      (1 << 7)   /*The CAN controller is in busoff state.*/\n+\n+/**\n+ * @brief Last Error Code definition\n+ */\n+typedef enum {\n+   CCAN_LEC_NO_ERROR,      /*!< No error */\n+   CCAN_LEC_STUFF_ERROR,   /*!< More than 5 equal bits in a sequence have occurred in a part of a received message where this is not allowed. */\n+   CCAN_LEC_FORM_ERROR,    /*!< A fixed format part of a received frame has the wrong format */\n+   CCAN_LEC_ACK_ERROR,     /*!< The message this CAN core transmitted was not acknowledged. */\n+   CCAN_LEC_BIT1_ERROR,    /*!< During the transmission of a message (with the exception of the arbitration field), the device wanted to send a HIGH/recessive level\n+                               (bit of logical value \"1\"), but the monitored bus value was LOW/dominant. */\n+   CCAN_LEC_BIT0_ERROR,    /*!< During the transmission of a message (or acknowledge bit, or active error flag, or overload flag), the device wanted to send a\n+                               LOW/dominant level (data or identifier bit logical value \"0\"), but the monitored Bus value was HIGH/recessive. During busoff recovery this\n+                               status is set each time a sequence of 11 HIGH/recessive bits has been monitored. This enables\n+                               the CPU to monitor the proceeding of the busoff recovery sequence (indicating the bus is not stuck at LOW/dominant or continuously disturbed). */\n+   CCAN_LEC_CRC_ERROR,     /*!< The CRC checksum was incorrect in the message received. */\n+} CCAN_LEC_T;\n+\n+/* CCAN INT register bit definitions */\n+#define CCAN_INT_NO_PENDING       0            /*!< No interrupt pending */\n+#define CCAN_INT_STATUS           0x8000   /*!< Status interrupt*/\n+#define CCAN_INT_MSG_NUM(n)       (n)      /*!<Number of messages which caused interrupts */\n+\n+/* CCAN TEST register bit definitions */\n+#define CCAN_TEST_BASIC_MODE      (1 << 2) /*!<IF1 registers used as TX buffer, IF2 registers used as RX buffer. */\n+#define CCAN_TEST_SILENT_MODE     (1 << 3) /*!<The module is in silent mode. */\n+#define CCAN_TEST_LOOPBACK_MODE   (1 << 4) /*!<Loop back mode is enabled.*/\n+#define CCAN_TEST_TD_CONTROLLED   (0)      /*!< Level at the TD pin is controlled by the CAN controller.*/\n+#define CCAN_TEST_TD_MONITORED    (1 << 5) /*!< The sample point can be monitored at the TD pin.*/\n+#define CCAN_TEST_TD_DOMINANT     (2 << 5) /*!< TD pin is driven LOW/dominant.*/\n+#define CCAN_TEST_TD_RECESSIVE    (3 << 5) /*!< TD pin is driven HIGH/recessive.*/\n+#define CCAN_TEST_RD_DOMINANT     (0)      /*!< The CAN bus is dominant (RD = 0).*/\n+#define CCAN_TEST_RD_RECESSIVE    (1 << 7)     /*!< The CAN bus is recessive (RD = 1).*/\n+\n+#define CCAN_SEG1_DEFAULT_VAL 5\n+#define CCAN_SEG2_DEFAULT_VAL 4\n+#define CCAN_SJW_DEFAULT_VAL  0\n+\n+/**\n+ * @brief CCAN Transfer direction definition\n+ */\n+typedef enum {\n+   CCAN_RX_DIR,\n+   CCAN_TX_DIR,\n+} CCAN_TRANSFER_DIR_T;\n+\n+/**\n+ * @brief  Enable CCAN Interrupts\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  mask    : Interrupt mask, or-ed bit value of\n+ *                     - CCAN_CTRL_IE <br>\n+ *                     - CCAN_CTRL_SIE <br>\n+ *                     - CCAN_CTRL_EIE <br>\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_EnableInt(LPC_CCAN_T *pCCAN, uint32_t mask)\n+{\n+   pCCAN->CNTL |= mask;\n+}\n+\n+/**\n+ * @brief  Disable CCAN Interrupts\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  mask    : Interrupt mask, or-ed bit value of\n+ *                     - CCAN_CTRL_IE <br>\n+ *                     - CCAN_CTRL_SIE <br>\n+ *                     - CCAN_CTRL_EIE <br>\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_DisableInt(LPC_CCAN_T *pCCAN, uint32_t mask)\n+{\n+   pCCAN->CNTL &= ~mask;\n+}\n+\n+/**\n+ * @brief  Get the source ID of an interrupt\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @return Interrupt source ID\n+ */\n+STATIC INLINE uint32_t Chip_CCAN_GetIntID(LPC_CCAN_T *pCCAN)\n+{\n+   return pCCAN->INT;\n+}\n+\n+/**\n+ * @brief  Get the CCAN status register\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @return CCAN status register (or-ed bit value of  CCAN_STAT_*)\n+ */\n+STATIC INLINE uint32_t Chip_CCAN_GetStatus(LPC_CCAN_T *pCCAN)\n+{\n+   return pCCAN->STAT;\n+}\n+\n+/**\n+ * @brief  Set the CCAN status\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  val     : Value to be set for status register (or-ed bit value of  CCAN_STAT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_SetStatus(LPC_CCAN_T *pCCAN, uint32_t val)\n+{\n+   pCCAN->STAT = val & 0x1F;\n+}\n+\n+/**\n+ * @brief  Clear the status of CCAN bus\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  val : Status to be cleared (or-ed bit value of  CCAN_STAT_*)\n+ * @return Nothing\n+ */\n+void Chip_CCAN_ClearStatus(LPC_CCAN_T *pCCAN, uint32_t val);\n+\n+/**\n+ * @brief  Get the current value of the transmit/receive error counter\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  dir : direction\n+ * @return Current value of the transmit/receive error counter\n+ * @note   When @a dir is #CCAN_RX_DIR, then MSB (bit-7) indicates the\n+ * receiver error passive level, if the bit is High(1) then the reciever\n+ * counter has reached error passive level as specified in CAN2.0\n+ * specification; else if the bit is Low(0) it indicates that the\n+ * error counter is below the passive level. Bits from (bit6-0) has\n+ * the actual error count. When @a dir is #CCAN_TX_DIR, the complete\n+ * 8-bits indicates the number of tx errors.\n+ */\n+STATIC INLINE uint8_t Chip_CCAN_GetErrCounter(LPC_CCAN_T *pCCAN, CCAN_TRANSFER_DIR_T dir)\n+{\n+   return (dir == CCAN_TX_DIR) ? (pCCAN->EC & 0x0FF) : ((pCCAN->EC >> 8) & 0x0FF);\n+}\n+\n+/**\n+ * @brief  Enable test mode in CCAN\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_EnableTestMode(LPC_CCAN_T *pCCAN)\n+{\n+   pCCAN->CNTL |= CCAN_CTRL_TEST;\n+}\n+\n+/**\n+ * @brief  Enable test mode in CCAN\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_DisableTestMode(LPC_CCAN_T *pCCAN)\n+{\n+   pCCAN->CNTL &= ~CCAN_CTRL_TEST;\n+}\n+\n+/**\n+ * @brief  Enable/Disable test mode in CCAN\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  cfg : Test function, or-ed bit values of CCAN_TEST_*\n+ * @return Nothing\n+ * @note   Test Mode must be enabled before using Chip_CCAN_EnableTestMode function.\n+ */\n+STATIC INLINE void Chip_CCAN_ConfigTestMode(LPC_CCAN_T *pCCAN, uint32_t cfg)\n+{\n+   pCCAN->TEST = cfg;\n+}\n+\n+/**\n+ * @brief  Enable automatic retransmission\n+ * @param  pCCAN           : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_EnableAutoRetransmit(LPC_CCAN_T *pCCAN)\n+{\n+   pCCAN->CNTL &= ~CCAN_CTRL_DAR;\n+}\n+\n+/**\n+ * @brief  Disable automatic retransmission\n+ * @param  pCCAN           : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_DisableAutoRetransmit(LPC_CCAN_T *pCCAN)\n+{\n+   pCCAN->CNTL |= CCAN_CTRL_DAR;\n+}\n+\n+/**\n+ * @brief  Get the transmit repuest bit in all message objects\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @return A 32 bits value, each bit corresponds to transmit request bit in message objects\n+ */\n+STATIC INLINE uint32_t Chip_CCAN_GetTxRQST(LPC_CCAN_T *pCCAN)\n+{\n+   return pCCAN->TXREQ1 | (pCCAN->TXREQ2 << 16);\n+}\n+\n+/**\n+ * @brief  Initialize the CCAN peripheral, free all message object in RAM\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_CCAN_Init(LPC_CCAN_T *pCCAN);\n+\n+/**\n+ * @brief  De-initialize the CCAN peripheral\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_CCAN_DeInit(LPC_CCAN_T *pCCAN);\n+\n+/**\n+ * @brief  Select bit rate for CCAN bus\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  bitRate : Bit rate to be set\n+ * @return SUCCESS/ERROR\n+ */\n+Status Chip_CCAN_SetBitRate(LPC_CCAN_T *pCCAN, uint32_t bitRate);\n+\n+/** Number of message objects in Message RAM */\n+#define CCAN_MSG_MAX_NUM                              32\n+\n+/**\n+ * @brief CAN message object structure\n+ */\n+typedef struct {\n+   uint32_t    id;     /**< ID of message, if bit 30 is set then this is extended frame */\n+   uint32_t    dlc;    /**< Message data length */\n+   uint8_t     data[8];    /**< Message data */\n+} CCAN_MSG_OBJ_T;\n+\n+typedef enum {\n+   CCAN_MSG_IF1 = 0,\n+   CCAN_MSG_IF2 = 1,\n+} CCAN_MSG_IF_T;\n+\n+/* bit field of IF command request n register */\n+#define CCAN_IF_CMDREQ_MSG_NUM(n)  (n)         /* Message number (1->20) */\n+#define CCAN_IF_CMDREQ_BUSY          0x8000            /* 1 is writing is progress, cleared when RD/WR done */\n+\n+/* bit field of IF command mask register */\n+#define CCAN_IF_CMDMSK_DATAB        (1 << 0)       /** 1 is transfer data byte 4-7 to message object, 0 is not */\n+#define CCAN_IF_CMDMSK_DATAA        (1 << 1)       /** 1 is transfer data byte 0-3 to message object, 0 is not */\n+#define CCAN_IF_CMDMSK_W_TXRQST     (1 << 2)       /** Request a transmission. Set the TXRQST bit IF1/2_MCTRL. */\n+#define CCAN_IF_CMDMSK_R_NEWDAT     (1 << 2)       /** Clear NEWDAT bit in the message object */\n+#define CCAN_IF_CMDMSK_R_CLRINTPND  (1 << 3)       /** Clear INTPND bit in the message object. */\n+#define CCAN_IF_CMDMSK_CTRL         (1 << 4)       /** 1 is transfer the CTRL bit to the message object, 0 is not */\n+#define CCAN_IF_CMDMSK_ARB          (1 << 5)       /** 1 is transfer the ARB bits to the message object, 0 is not */\n+#define CCAN_IF_CMDMSK_MASK         (1 << 6)       /** 1 is transfer the MASK bit to the message object, 0 is not */\n+#define CCAN_IF_CMDMSK_WR           (1 << 7)       /*  Tranfer direction: Write */\n+#define CCAN_IF_CMDMSK_RD           (0)                /*  Tranfer direction: Read */\n+#define CCAN_IF_CMDMSK_TRANSFER_ALL (CCAN_IF_CMDMSK_CTRL | CCAN_IF_CMDMSK_MASK | CCAN_IF_CMDMSK_ARB | \\\n+                                    CCAN_IF_CMDMSK_DATAB | CCAN_IF_CMDMSK_DATAA)\n+\n+/* bit field of IF mask 2 register */\n+#define CCAN_IF_MASK2_MXTD          (1 << 15)              /* 1 is extended identifier bit is used in the RX filter unit, 0 is not */\n+#define CCAN_IF_MASK2_MDIR(n)       (((n) & 0x01) <<  14)  /* 1 is direction bit is used in the RX filter unit, 0 is not */\n+\n+/* bit field of IF arbitration 2 register */\n+#define CCAN_IF_ARB2_DIR(n)         (((n) & 0x01) << 13)   /* 1: Dir = transmit, 0: Dir = receive */\n+#define CCAN_IF_ARB2_XTD            (1 << 14)      /* Extended identifier bit is used*/\n+#define CCAN_IF_ARB2_MSGVAL         (1 << 15)      /* Message valid bit, 1 is valid in the MO handler, 0 is ignored */\n+\n+/* bit field of IF message control register */\n+#define CCAN_IF_MCTRL_DLC_MSK        0x000F            /* bit mask for DLC */\n+#define CCAN_IF_MCTRL_EOB           (1 << 7)       /* End of buffer, always write to 1 */\n+#define CCAN_IF_MCTRL_TXRQ          (1 << 8)       /* 1 is TxRqst enabled */\n+#define CCAN_IF_MCTRL_RMTEN(n)      (((n) & 1UL) << 9) /* 1 is remote frame enabled */\n+#define CCAN_IF_MCTRL_RXIE          (1 << 10)      /* 1 is RX interrupt enabled */\n+#define CCAN_IF_MCTRL_TXIE          (1 << 11)      /* 1 is TX interrupt enabled */\n+#define CCAN_IF_MCTRL_UMSK          (1 << 12)      /* 1 is to use the mask for the receive filter mask. */\n+#define CCAN_IF_MCTRL_INTP          (1 << 13)      /* 1 indicates message object is an interrupt source */\n+#define CCAN_IF_MCTRL_MLST          (1 << 14)      /* 1 indicates a message loss. */\n+#define CCAN_IF_MCTRL_NEWD          (1 << 15)      /* 1 indicates new data is in the message buffer.  */\n+\n+#define CCAN_MSG_ID_STD_MASK        0x07FF\n+#define CCAN_MSG_ID_EXT_MASK        0x1FFFFFFF\n+\n+/**\n+ * @brief  Tranfer message object between IF registers and Message RAM\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel       : The Message interface to be used\n+ * @param  mask    : command mask (or-ed bit value of CCAN_IF_CMDMSK_*)\n+ * @param  msgNum      : The number of message object in message RAM to be get\n+ * @return Nothing\n+ */\n+void Chip_CCAN_TransferMsgObject(LPC_CCAN_T *pCCAN,\n+                                CCAN_MSG_IF_T IFSel,\n+                                uint32_t mask,\n+                                uint32_t msgNum);\n+\n+/**\n+ * @brief  Set a message into the message object in message RAM\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel       : The Message interface to be used\n+ * @param  dir : transmit/receive\n+ * @param  remoteFrame: Enable/Disable passives transmit by using remote frame\n+ * @param  msgNum      : Message number\n+ * @param  pMsgObj     : Pointer of message to be set\n+ * @return Nothing\n+ */\n+void Chip_CCAN_SetMsgObject (LPC_CCAN_T *pCCAN,\n+                            CCAN_MSG_IF_T IFSel,\n+                            CCAN_TRANSFER_DIR_T dir,\n+                            bool remoteFrame,\n+                            uint8_t msgNum,\n+                            const CCAN_MSG_OBJ_T *pMsgObj);\n+\n+/**\n+ * @brief  Get a message object in message RAM into the message buffer\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  msgNum      : The number of message object in message RAM to be get\n+ * @param  pMsgObj     : Pointer of the message buffer\n+ * @return Nothing\n+ */\n+void Chip_CCAN_GetMsgObject(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum, CCAN_MSG_OBJ_T *pMsgObj);\n+\n+/**\n+ * @brief  Enable/Disable the message object to valid\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  msgNum  : Message number\n+ * @param  valid   : true: valid, false: invalide\n+ * @return Nothing\n+ */\n+void Chip_CCAN_SetValidMsg(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum, bool valid);\n+\n+/**\n+ * @brief  Check the message objects is valid or not\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @return A 32 bits value, each bit corresponds to a message objects form 0 to 31 (1 is valid, 0 is invalid)\n+ */\n+STATIC INLINE uint32_t Chip_CCAN_GetValidMsg(LPC_CCAN_T *pCCAN)\n+{\n+   return pCCAN->MSGV1 | (pCCAN->MSGV2 << 16);\n+}\n+\n+/**\n+ * @brief  Clear the pending message interrupt\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  msgNum  : Message number\n+ * @param  dir : Select transmit or receive interrupt to be cleared\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_ClearMsgIntPend(LPC_CCAN_T *pCCAN,\n+                                            CCAN_MSG_IF_T IFSel,\n+                                            uint8_t msgNum,\n+                                            CCAN_TRANSFER_DIR_T dir)\n+{\n+   Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_RD | CCAN_IF_CMDMSK_R_CLRINTPND, msgNum);\n+}\n+\n+/**\n+ * @brief  Clear new data flag bit in the message object\n+ * @param  pCCAN   : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  msgNum  : Message number\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CCAN_ClearNewDataFlag(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum)\n+{\n+   Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_RD | CCAN_IF_CMDMSK_R_NEWDAT, msgNum);\n+}\n+\n+/**\n+ * @brief  Send a message\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  remoteFrame: Enable/Disable passives transmit by using remote frame\n+ * @param  pMsgObj     : Message to be transmitted\n+ * @return Nothing\n+ */\n+void Chip_CCAN_Send (LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, bool remoteFrame, CCAN_MSG_OBJ_T *pMsgObj);\n+\n+/**\n+ * @brief  Register a message ID for receiving\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  id      : Received message ID\n+ * @return Nothing\n+ */\n+void Chip_CCAN_AddReceiveID(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint32_t id);\n+\n+/**\n+ * @brief  Remove a registered message ID from receiving\n+ * @param  IFSel   : The Message interface to be used\n+ * @param  pCCAN       : The base of CCAN peripheral on the chip\n+ * @param  id      : Received message ID to be removed\n+ * @return Nothing\n+ */\n+void Chip_CCAN_DeleteReceiveID(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint32_t id);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CCAN_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/cguccu_18xx_43xx.h ./lpc_chip_43xx/inc/cguccu_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/cguccu_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/cguccu_18xx_43xx.h\t2017-02-27 21:03:16.984043462 -0300\n@@ -0,0 +1,114 @@\n+/*\n+ * @brief CGU/CCU registers and control functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CGUCCU_18XX_43XX_H_\n+#define __CGUCCU_18XX_43XX_H_\n+\n+#include \"chip_clocks.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @ingroup CLOCK_18XX_43XX\n+ * @{\n+ */\n+\n+/**\n+ * Audio or USB PLL selection\n+ */\n+typedef enum CHIP_CGU_USB_AUDIO_PLL {\n+   CGU_USB_PLL,\n+   CGU_AUDIO_PLL\n+} CHIP_CGU_USB_AUDIO_PLL_T;\n+\n+/**\n+ * PLL register block\n+ */\n+typedef struct {\n+   __I  uint32_t  PLL_STAT;                /*!< PLL status register */\n+   __IO uint32_t  PLL_CTRL;                /*!< PLL control register */\n+   __IO uint32_t  PLL_MDIV;                /*!< PLL M-divider register */\n+   __IO uint32_t  PLL_NP_DIV;              /*!< PLL N/P-divider register */\n+} CGU_PLL_REG_T;\n+\n+/**\n+ * @brief LPC18XX/43XX CGU register block structure\n+ */\n+typedef struct {                           /*!< (@ 0x40050000) CGU Structure          */\n+   __I  uint32_t  RESERVED0[5];\n+   __IO uint32_t  FREQ_MON;                /*!< (@ 0x40050014) Frequency monitor register */\n+   __IO uint32_t  XTAL_OSC_CTRL;           /*!< (@ 0x40050018) Crystal oscillator control register */\n+   CGU_PLL_REG_T  PLL[CGU_AUDIO_PLL + 1];  /*!< (@ 0x4005001C) USB and audio PLL blocks */\n+   __IO uint32_t  PLL0AUDIO_FRAC;          /*!< (@ 0x4005003C) PLL0 (audio)           */\n+   __I  uint32_t  PLL1_STAT;               /*!< (@ 0x40050040) PLL1 status register   */\n+   __IO uint32_t  PLL1_CTRL;               /*!< (@ 0x40050044) PLL1 control register  */\n+   __IO uint32_t  IDIV_CTRL[CLK_IDIV_LAST];/*!< (@ 0x40050048) Integer divider A-E control registers */\n+   __IO uint32_t  BASE_CLK[CLK_BASE_LAST]; /*!< (@ 0x4005005C) Start of base clock registers */\n+} LPC_CGU_T;\n+\n+/**\n+ * @brief CCU clock config/status register pair\n+ */\n+typedef struct {\n+   __IO uint32_t  CFG;                     /*!< CCU clock configuration register */\n+   __I  uint32_t  STAT;                    /*!< CCU clock status register */\n+} CCU_CFGSTAT_T;\n+\n+/**\n+ * @brief CCU1 register block structure\n+ */\n+typedef struct {                           /*!< (@ 0x40051000) CCU1 Structure         */\n+   __IO uint32_t  PM;                      /*!< (@ 0x40051000) CCU1 power mode register */\n+   __I  uint32_t  BASE_STAT;               /*!< (@ 0x40051004) CCU1 base clocks status register */\n+   __I  uint32_t  RESERVED0[62];\n+   CCU_CFGSTAT_T  CLKCCU[CLK_CCU1_LAST];   /*!< (@ 0x40051100) Start of CCU1 clock registers */\n+} LPC_CCU1_T;\n+\n+/**\n+ * @brief CCU2 register block structure\n+ */\n+typedef struct {                           /*!< (@ 0x40052000) CCU2 Structure         */\n+   __IO uint32_t  PM;                      /*!< (@ 0x40052000) Power mode register    */\n+   __I  uint32_t  BASE_STAT;               /*!< (@ 0x40052004) CCU base clocks status register */\n+   __I  uint32_t  RESERVED0[62];\n+   CCU_CFGSTAT_T  CLKCCU[CLK_CCU2_LAST - CLK_CCU1_LAST];   /*!< (@ 0x40052100) Start of CCU2 clock registers */\n+} LPC_CCU2_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CGUCCU_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/chip_clocks.h ./lpc_chip_43xx/inc/chip_clocks.h\n--- a_OkB2vL/lpc_chip_43xx/inc/chip_clocks.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/chip_clocks.h\t2017-02-27 21:03:16.984043462 -0300\n@@ -0,0 +1,252 @@\n+/*\n+ * @brief  LPC18xx/43xx chip clock list used by CGU and CCU drivers\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_CLOCKS_H_\n+#define __CHIP_CLOCKS_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @ingroup CLOCK_18XX_43XX\n+ * @{\n+ */\n+\n+/**\n+ * @brief CGU clock input list\n+ * These are possible input clocks for the CGU and can come\n+ * from both external (crystal) and internal (PLL) sources. These\n+ * clock inputs can be routed to the base clocks (@ref CHIP_CGU_BASE_CLK_T).\n+ */\n+typedef enum CHIP_CGU_CLKIN {\n+   CLKIN_32K,      /*!< External 32KHz input */\n+   CLKIN_IRC,      /*!< Internal IRC (12MHz) input */\n+   CLKIN_ENET_RX,  /*!< External ENET_RX pin input */\n+   CLKIN_ENET_TX,  /*!< External ENET_TX pin input */\n+   CLKIN_CLKIN,    /*!< External GPCLKIN pin input */\n+   CLKIN_RESERVED1,\n+   CLKIN_CRYSTAL,  /*!< External (main) crystal pin input */\n+   CLKIN_USBPLL,   /*!< Internal USB PLL input */\n+   CLKIN_AUDIOPLL, /*!< Internal Audio PLL input */\n+   CLKIN_MAINPLL,  /*!< Internal Main PLL input */\n+   CLKIN_RESERVED2,\n+   CLKIN_RESERVED3,\n+   CLKIN_IDIVA,    /*!< Internal divider A input */\n+   CLKIN_IDIVB,    /*!< Internal divider B input */\n+   CLKIN_IDIVC,    /*!< Internal divider C input */\n+   CLKIN_IDIVD,    /*!< Internal divider D input */\n+   CLKIN_IDIVE,    /*!< Internal divider E input */\n+   CLKINPUT_PD     /*!< External 32KHz input */\n+} CHIP_CGU_CLKIN_T;\n+\n+/**\n+ * @brief CGU base clocks\n+ * CGU base clocks are clocks that are associated with a single input clock\n+ * and are routed out to 1 or more peripherals. For example, the CLK_BASE_PERIPH\n+ * clock can be configured to use the CLKIN_MAINPLL input clock, which will in\n+ * turn route that clock to the CLK_PERIPH_BUS, CLK_PERIPH_CORE, and\n+ * CLK_PERIPH_SGPIO periphral clocks.\n+ */\n+typedef enum CHIP_CGU_BASE_CLK {\n+   CLK_BASE_SAFE,      /*!< Base clock for WDT oscillator, IRC input only */\n+   CLK_BASE_USB0,      /*!< Base USB clock for USB0, USB PLL input only */\n+#if defined(CHIP_LPC43XX)\n+   CLK_BASE_PERIPH,    /*!< Base clock for SGPIO */\n+#else\n+   CLK_BASE_RESERVED1,\n+#endif\n+   CLK_BASE_USB1,      /*!< Base USB clock for USB1 */\n+   CLK_BASE_MX,        /*!< Base clock for CPU core */\n+   CLK_BASE_SPIFI,     /*!< Base clock for SPIFI */\n+#if defined(CHIP_LPC43XX)\n+   CLK_BASE_SPI,       /*!< Base clock for SPI */\n+#else\n+   CLK_BASE_RESERVED2,\n+#endif\n+   CLK_BASE_PHY_RX,    /*!< Base clock for PHY RX */\n+   CLK_BASE_PHY_TX,    /*!< Base clock for PHY TX */\n+   CLK_BASE_APB1,      /*!< Base clock for APB1 group */\n+   CLK_BASE_APB3,      /*!< Base clock for APB3 group */\n+   CLK_BASE_LCD,       /*!< Base clock for LCD pixel clock */\n+#if defined(CHIP_LPC43XX)\n+   CLK_BASE_ADCHS,     /*!< Base clock for ADCHS */\n+#else\n+   CLK_BASE_RESERVED3,\n+#endif\n+   CLK_BASE_SDIO,      /*!< Base clock for SDIO */\n+   CLK_BASE_SSP0,      /*!< Base clock for SSP0 */\n+   CLK_BASE_SSP1,      /*!< Base clock for SSP1 */\n+   CLK_BASE_UART0,     /*!< Base clock for UART0 */\n+   CLK_BASE_UART1,     /*!< Base clock for UART1 */\n+   CLK_BASE_UART2,     /*!< Base clock for UART2 */\n+   CLK_BASE_UART3,     /*!< Base clock for UART3 */\n+   CLK_BASE_OUT,       /*!< Base clock for CLKOUT pin */\n+   CLK_BASE_RESERVED4,\n+   CLK_BASE_RESERVED5,\n+   CLK_BASE_RESERVED6,\n+   CLK_BASE_RESERVED7,\n+   CLK_BASE_APLL,      /*!< Base clock for audio PLL */\n+   CLK_BASE_CGU_OUT0,  /*!< Base clock for CGUOUT0 pin */\n+   CLK_BASE_CGU_OUT1,  /*!< Base clock for CGUOUT1 pin */\n+   CLK_BASE_LAST,\n+   CLK_BASE_NONE = CLK_BASE_LAST\n+} CHIP_CGU_BASE_CLK_T;\n+\n+/**\n+ * @brief CGU dividers\n+ * CGU dividers provide an extra clock state where a specific clock can be\n+ * divided before being routed to a peripheral group. A divider accepts an\n+ * input clock and then divides it. To use the divided clock for a base clock\n+ * group, use the divider as the input clock for the base clock (for example,\n+ * use CLKIN_IDIVB, where CLKIN_MAINPLL might be the input into the divider).\n+ */\n+typedef enum CHIP_CGU_IDIV {\n+   CLK_IDIV_A,     /*!< CGU clock divider A */\n+   CLK_IDIV_B,     /*!< CGU clock divider B */\n+   CLK_IDIV_C,     /*!< CGU clock divider A */\n+   CLK_IDIV_D,     /*!< CGU clock divider D */\n+   CLK_IDIV_E,     /*!< CGU clock divider E */\n+   CLK_IDIV_LAST\n+} CHIP_CGU_IDIV_T;\n+\n+#define CHIP_CGU_IDIV_MASK(x)  (\"\\x03\\x0F\\x0F\\x0F\\xFF\"[x])\n+\n+/**\n+ * @brief Peripheral clocks\n+ * Peripheral clocks are individual clocks routed to peripherals. Although\n+ * multiple peripherals may share a same base clock, each peripheral's clock\n+ * can be enabled or disabled individually. Some peripheral clocks also have\n+ * additional dividers associated with them.\n+ */\n+typedef enum CHIP_CCU_CLK {\n+   /* CCU1 clocks */\n+   CLK_APB3_BUS,       /*!< APB3 bus clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_I2C1,      /*!< I2C1 register/perigheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_DAC,       /*!< DAC peripheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_ADC0,      /*!< ADC0 register/perigheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_ADC1,      /*!< ADC1 register/perigheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB3_CAN0,      /*!< CAN0 register/perigheral clock from base clock CLK_BASE_APB3 */\n+   CLK_APB1_BUS = 32,  /*!< APB1 bus clock clock from base clock CLK_BASE_APB1 */\n+   CLK_APB1_MOTOCON,   /*!< Motor controller register/perigheral clock from base clock CLK_BASE_APB1 */\n+   CLK_APB1_I2C0,      /*!< I2C0 register/perigheral clock from base clock CLK_BASE_APB1 */\n+   CLK_APB1_I2S,       /*!< I2S register/perigheral clock from base clock CLK_BASE_APB1 */\n+   CLK_APB1_CAN1,      /*!< CAN1 register/perigheral clock from base clock CLK_BASE_APB1 */\n+   CLK_SPIFI = 64,     /*!< SPIFI SCKI input clock from base clock CLK_BASE_SPIFI */\n+   CLK_MX_BUS = 96,    /*!< M3/M4 BUS core clock from base clock CLK_BASE_MX */\n+   CLK_MX_SPIFI,       /*!< SPIFI register clock from base clock CLK_BASE_MX */\n+   CLK_MX_GPIO,        /*!< GPIO register clock from base clock CLK_BASE_MX */\n+   CLK_MX_LCD,         /*!< LCD register clock from base clock CLK_BASE_MX */\n+   CLK_MX_ETHERNET,    /*!< ETHERNET register clock from base clock CLK_BASE_MX */\n+   CLK_MX_USB0,        /*!< USB0 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_EMC,         /*!< EMC clock from base clock CLK_BASE_MX */\n+   CLK_MX_SDIO,        /*!< SDIO register clock from base clock CLK_BASE_MX */\n+   CLK_MX_DMA,         /*!< DMA register clock from base clock CLK_BASE_MX */\n+   CLK_MX_MXCORE,      /*!< M3/M4 CPU core clock from base clock CLK_BASE_MX */\n+   RESERVED_ALIGN = CLK_MX_MXCORE + 3,\n+   CLK_MX_SCT,         /*!< SCT register clock from base clock CLK_BASE_MX */\n+   CLK_MX_USB1,        /*!< USB1 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_EMC_DIV,     /*!< ENC divider clock from base clock CLK_BASE_MX */\n+   CLK_MX_FLASHA,      /*!< FLASHA bank clock from base clock CLK_BASE_MX */\n+   CLK_MX_FLASHB,      /*!< FLASHB bank clock from base clock CLK_BASE_MX */\n+#if defined(CHIP_LPC43XX)\n+   CLK_M4_M0APP,       /*!< M0 app CPU core clock from base clock CLK_BASE_MX */\n+   CLK_MX_ADCHS,       /*!< ADCHS clock from base clock CLK_BASE_ADCHS */\n+#else\n+   CLK_RESERVED1,\n+   CLK_RESERVED2,\n+#endif\n+   CLK_MX_EEPROM,      /*!< EEPROM clock from base clock CLK_BASE_MX */\n+   CLK_MX_WWDT = 128,  /*!< WWDT register clock from base clock CLK_BASE_MX */\n+   CLK_MX_UART0,       /*!< UART0 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_UART1,       /*!< UART1 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_SSP0,        /*!< SSP0 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_TIMER0,      /*!< TIMER0 register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_TIMER1,      /*!< TIMER1 register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_SCU,         /*!< SCU register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_CREG,        /*!< CREG clock from base clock CLK_BASE_MX */\n+   CLK_MX_RITIMER = 160,   /*!< RITIMER register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_UART2,       /*!< UART3 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_UART3,       /*!< UART4 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_TIMER2,      /*!< TIMER2 register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_TIMER3,      /*!< TIMER3 register/perigheral clock from base clock CLK_BASE_MX */\n+   CLK_MX_SSP1,        /*!< SSP1 register clock from base clock CLK_BASE_MX */\n+   CLK_MX_QEI,         /*!< QEI register/perigheral clock from base clock CLK_BASE_MX */\n+#if defined(CHIP_LPC43XX)\n+   CLK_PERIPH_BUS = 192,   /*!< Peripheral bus clock from base clock CLK_BASE_PERIPH */\n+   CLK_RESERVED3,\n+   CLK_PERIPH_CORE,    /*!< Peripheral core clock from base clock CLK_BASE_PERIPH */\n+   CLK_PERIPH_SGPIO,   /*!< SGPIO clock from base clock CLK_BASE_PERIPH */\n+#else\n+   CLK_RESERVED3 = 192,\n+   CLK_RESERVED3A,\n+   CLK_RESERVED4,\n+   CLK_RESERVED5,\n+#endif\n+   CLK_USB0 = 224,         /*!< USB0 clock from base clock CLK_BASE_USB0 */\n+   CLK_USB1 = 256,         /*!< USB1 clock from base clock CLK_BASE_USB1 */\n+#if defined(CHIP_LPC43XX)\n+   CLK_SPI = 288,          /*!< SPI clock from base clock CLK_BASE_SPI */\n+   CLK_ADCHS = 320,        /*!< ADCHS clock from base clock CLK_BASE_ADCHS */\n+#else\n+   CLK_RESERVED7 = 320,\n+   CLK_RESERVED8,\n+#endif\n+   CLK_CCU1_LAST,\n+\n+   /* CCU2 clocks */\n+   CLK_CCU2_START,\n+   CLK_APLL = CLK_CCU2_START,  /*!< Audio PLL clock from base clock CLK_BASE_APLL */\n+   RESERVED_ALIGNB = CLK_CCU2_START + 31,\n+   CLK_APB2_UART3,         /*!< UART3 clock from base clock CLK_BASE_UART3 */\n+   RESERVED_ALIGNC = CLK_CCU2_START + 63,\n+   CLK_APB2_UART2,         /*!< UART2 clock from base clock CLK_BASE_UART2 */\n+   RESERVED_ALIGND = CLK_CCU2_START + 95,\n+   CLK_APB0_UART1,         /*!< UART1 clock from base clock CLK_BASE_UART1 */\n+   RESERVED_ALIGNE = CLK_CCU2_START + 127,\n+   CLK_APB0_UART0,         /*!< UART0 clock from base clock CLK_BASE_UART0 */\n+   RESERVED_ALIGNF = CLK_CCU2_START + 159,\n+   CLK_APB2_SSP1,          /*!< SSP1 clock from base clock CLK_BASE_SSP1 */\n+   RESERVED_ALIGNG = CLK_CCU2_START + 191,\n+   CLK_APB0_SSP0,          /*!< SSP0 clock from base clock CLK_BASE_SSP0 */\n+   RESERVED_ALIGNH = CLK_CCU2_START + 223,\n+   CLK_APB2_SDIO,          /*!< SDIO clock from base clock CLK_BASE_SDIO */\n+   CLK_CCU2_LAST\n+} CHIP_CCU_CLK_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_CLOCKS_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/chip.h ./lpc_chip_43xx/inc/chip.h\n--- a_OkB2vL/lpc_chip_43xx/inc/chip.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/chip.h\t2017-02-27 21:03:16.984043462 -0300\n@@ -0,0 +1,163 @@\n+/*\n+ * @brief Chip inclusion selector file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_H_\n+#define __CHIP_H_\n+\n+#include \"sys_config.h\"\n+#include \"cmsis.h\"\n+\n+#if defined(CHIP_LPC18XX)\n+#include \"chip_lpc18xx.h\"\n+\n+#elif defined(CHIP_LPC43XX)\n+#include \"chip_lpc43xx.h\"\n+\n+#else\n+#error CHIP_LPC18XX or CHIP_LPC43XX must be defined\n+#endif\n+\n+/* Aliasing for Chip_USB_Init */\n+#define Chip_USB_Init  Chip_USB0_Init\n+\n+#ifdef __cplusplus\n+extern \"C\"\n+{\n+#endif\n+\n+/** @ingroup CHIP_18XX_43XX_DRIVER_OPTIONS\n+ * @{\n+ */\n+\n+/**\n+ * @brief  System oscillator rate\n+ * This value is defined externally to the chip layer and contains\n+ * the value in Hz for the external oscillator for the board. If using the\n+ * internal oscillator, this rate can be 0.\n+ */\n+extern const uint32_t OscRateIn;\n+\n+/**\n+ * @brief  Clock rate on the CLKIN pin\n+ * This value is defined externally to the chip layer and contains\n+ * the value in Hz for the CLKIN pin for the board. If this pin isn't used,\n+ * this rate can be 0.\n+ */\n+extern const uint32_t ExtRateIn;\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup SUPPORT_18XX_43XX_FUNC CHIP: LPC18xx/43xx support functions\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Current system clock rate, mainly used for sysTick\n+ */\n+extern uint32_t SystemCoreClock;\n+\n+/**\n+ * @brief  Update system core clock rate, should be called if the\n+ *         system has a clock rate change\n+ * @return None\n+ */\n+void SystemCoreClockUpdate(void);\n+\n+/**\n+ * @brief USB0 Pin and clock initialization\n+ * Calling this function will initialize the USB0 pins and the clock\n+ * @note This function will assume that the chip is clocked by an\n+ * external crystal oscillator of frequency 12MHz\n+ */\n+void Chip_USB0_Init(void);\n+\n+/**\n+ * @brief USB1 Pin and clock initialization\n+ * Calling this function will initialize the USB0 pins and the clock\n+ * @note This function will assume that the chip is clocked by an\n+ * external crystal oscillator of frequency 12MHz\n+ */\n+void Chip_USB1_Init(void);\n+\n+/**\n+ * @brief  Set up and initialize hardware prior to call to main()\n+ * @return None\n+ * @note   Chip_SystemInit() is called prior to the application and sets up\n+ * system clocking prior to the application starting.\n+ */\n+void Chip_SystemInit(void);\n+\n+/**\n+ * @brief  Clock and PLL initialization based input given in @a clkin\n+ * @param  clkin       : Input reference clock to PLL1 (MAINPLL) see #CHIP_CGU_CLKIN_T\n+ * @param  core_freq   : Desired output frequency of the PLL1 (Base clock to CPU Core)\n+ * @param  setbase     : Setup default base clock of peripherals (see notes)\n+ * @return None\n+ * @note   This API will initialize the MAINPLL (PLL1) to the frequency given by\n+ *             @a core_freq, and will use this PLL's output as the base clock for CPU\n+ *             Core. If @a clkin is #CLKIN_CRYSTAL then External Crystal Oscillator\n+ *             of frequency 12MHz will be used as the input reference clock to PLL1.<br>\n+ *             Parameter @a setbase if true will set APB[1,3], SSP[0,1], UART[0,1,2,3],\n+ *             SPI base clocks to MAINPLL's output clock. If @a setbase is false then\n+ *             the base clock settings for the peripherals will not be modified, only\n+ *             CPU Core's base clock will be updated to use clock generated by PLL1.\n+ */\n+void Chip_SetupCoreClock(CHIP_CGU_CLKIN_T clkin, uint32_t core_freq, bool setbase);\n+\n+/**\n+ * @brief  Clock and PLL initialization based on the external oscillator\n+ * @return None\n+ * @note   This API will initialize the MAINPLL (PLL1) to the maximum\n+ *             frequency (180MHz[LPC18xx] or 204MHz[LPC43xx]) and uses this\n+ *             PLL's output as the base clock for CPU Core. External Crystal Oscillator\n+ *             of frequency 12MHz will be used as the input reference clock to PLL1.\n+ */\n+void Chip_SetupXtalClocking(void);\n+\n+/**\n+ * @brief  Clock and PLL initialization based on the internal oscillator\n+ * @return None\n+ * @note   This API will initialize the MAINPLL (PLL1) to the maximum\n+ *             frequency (180MHz[LPC18xx] or 204MHz[LPC43xx]) and uses this\n+ *             PLL's output as the base clock for CPU Core. Internal RC Oscillator\n+ *             will be used as the input reference clock to PLL1.\n+ */\n+void Chip_SetupIrcClocking(void);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/chip_lpc18xx.h ./lpc_chip_43xx/inc/chip_lpc18xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/chip_lpc18xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/chip_lpc18xx.h\t2017-02-27 21:03:16.988043462 -0300\n@@ -0,0 +1,210 @@\n+/*\n+ * @brief LPC18xx basic chip inclusion file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_LPC18XX_H_\n+#define __CHIP_LPC18XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#include \"lpc_types.h\"\n+#include \"sys_config.h\"\n+\n+#ifndef CORE_M3\n+#error CORE_M3 is not defined for the LPC18xx architecture\n+#error CORE_M3 should be defined as part of your compiler define list\n+#endif\n+\n+#ifndef CHIP_LPC18XX\n+#error The LPC18XX Chip include path is used for this build, but\n+#error CHIP_LPC18XX is not defined!\n+#endif\n+\n+/** @defgroup PERIPH_18XX_BASE CHIP: LPC18xx Peripheral addresses and register set declarations\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define LPC_SCT_BASE              0x40000000\n+#define LPC_GPDMA_BASE            0x40002000\n+#define LPC_SPIFI_BASE            0x40003000\n+#define LPC_SDMMC_BASE            0x40004000\n+#define LPC_EMC_BASE              0x40005000\n+#define LPC_USB0_BASE             0x40006000\n+#define LPC_USB1_BASE             0x40007000\n+#define LPC_LCD_BASE              0x40008000\n+#define LPC_FMCA_BASE             0x4000C000\n+#define LPC_FMCB_BASE             0x4000D000\n+#define LPC_ETHERNET_BASE         0x40010000\n+#define LPC_ATIMER_BASE           0x40040000\n+#define LPC_REGFILE_BASE          0x40041000\n+#define LPC_PMC_BASE              0x40042000\n+#define LPC_CREG_BASE             0x40043000\n+#define LPC_EVRT_BASE             0x40044000\n+#define LPC_OTP_BASE              0x40045000\n+#define LPC_RTC_BASE              0x40046000\n+#define LPC_CGU_BASE              0x40050000\n+#define LPC_CCU1_BASE             0x40051000\n+#define LPC_CCU2_BASE             0x40052000\n+#define LPC_RGU_BASE              0x40053000\n+#define LPC_WWDT_BASE             0x40080000\n+#define LPC_USART0_BASE           0x40081000\n+#define LPC_USART2_BASE           0x400C1000\n+#define LPC_USART3_BASE           0x400C2000\n+#define LPC_UART1_BASE            0x40082000\n+#define LPC_SSP0_BASE             0x40083000\n+#define LPC_SSP1_BASE             0x400C5000\n+#define LPC_TIMER0_BASE           0x40084000\n+#define LPC_TIMER1_BASE           0x40085000\n+#define LPC_TIMER2_BASE           0x400C3000\n+#define LPC_TIMER3_BASE           0x400C4000\n+#define LPC_SCU_BASE              0x40086000\n+#define LPC_PIN_INT_BASE          0x40087000\n+#define LPC_GPIO_GROUP_INT0_BASE  0x40088000\n+#define LPC_GPIO_GROUP_INT1_BASE  0x40089000\n+#define LPC_MCPWM_BASE            0x400A0000\n+#define LPC_I2C0_BASE             0x400A1000\n+#define LPC_I2C1_BASE             0x400E0000\n+#define LPC_I2S0_BASE             0x400A2000\n+#define LPC_I2S1_BASE             0x400A3000\n+#define LPC_C_CAN1_BASE           0x400A4000\n+#define LPC_RITIMER_BASE          0x400C0000\n+#define LPC_QEI_BASE              0x400C6000\n+#define LPC_GIMA_BASE             0x400C7000\n+#define LPC_DAC_BASE              0x400E1000\n+#define LPC_C_CAN0_BASE           0x400E2000\n+#define LPC_ADC0_BASE             0x400E3000\n+#define LPC_ADC1_BASE             0x400E4000\n+#define LPC_GPIO_PORT_BASE        0x400F4000\n+#define LPC_SPI_BASE              0x40100000\n+#define LPC_SGPIO_BASE            0x40101000\n+#define LPC_EEPROM_BASE           0x4000E000\n+#define LPC_ROM_API_BASE          0x10400100\n+\n+#define LPC_SCT                   ((LPC_SCT_T              *) LPC_SCT_BASE)\n+#define LPC_GPDMA                 ((LPC_GPDMA_T            *) LPC_GPDMA_BASE)\n+#define LPC_SDMMC                 ((LPC_SDMMC_T            *) LPC_SDMMC_BASE)\n+#define LPC_EMC                   ((LPC_EMC_T              *) LPC_EMC_BASE)\n+#define LPC_USB0                  ((LPC_USBHS_T            *) LPC_USB0_BASE)\n+#define LPC_USB1                  ((LPC_USBHS_T            *) LPC_USB1_BASE)\n+#define LPC_LCD                   ((LPC_LCD_T              *) LPC_LCD_BASE)\n+#define LPC_ETHERNET              ((LPC_ENET_T             *) LPC_ETHERNET_BASE)\n+#define LPC_ATIMER                ((LPC_ATIMER_T           *) LPC_ATIMER_BASE)\n+#define LPC_REGFILE               ((LPC_REGFILE_T          *) LPC_REGFILE_BASE)\n+#define LPC_PMC                   ((LPC_PMC_T              *) LPC_PMC_BASE)\n+#define LPC_EVRT                  ((LPC_EVRT_T             *) LPC_EVRT_BASE)\n+#define LPC_RTC                   ((LPC_RTC_T              *) LPC_RTC_BASE)\n+#define LPC_CGU                   ((LPC_CGU_T              *) LPC_CGU_BASE)\n+#define LPC_CCU1                  ((LPC_CCU1_T             *) LPC_CCU1_BASE)\n+#define LPC_CCU2                  ((LPC_CCU2_T             *) LPC_CCU2_BASE)\n+#define LPC_CREG                  ((LPC_CREG_T             *) LPC_CREG_BASE)\n+#define LPC_RGU                   ((LPC_RGU_T              *) LPC_RGU_BASE)\n+#define LPC_WWDT                  ((LPC_WWDT_T             *) LPC_WWDT_BASE)\n+#define LPC_USART0                ((LPC_USART_T            *) LPC_USART0_BASE)\n+#define LPC_USART2                ((LPC_USART_T            *) LPC_USART2_BASE)\n+#define LPC_USART3                ((LPC_USART_T            *) LPC_USART3_BASE)\n+#define LPC_UART1                 ((LPC_USART_T            *) LPC_UART1_BASE)\n+#define LPC_SSP0                  ((LPC_SSP_T              *) LPC_SSP0_BASE)\n+#define LPC_SSP1                  ((LPC_SSP_T              *) LPC_SSP1_BASE)\n+#define LPC_TIMER0                ((LPC_TIMER_T            *) LPC_TIMER0_BASE)\n+#define LPC_TIMER1                ((LPC_TIMER_T            *) LPC_TIMER1_BASE)\n+#define LPC_TIMER2                ((LPC_TIMER_T            *) LPC_TIMER2_BASE)\n+#define LPC_TIMER3                ((LPC_TIMER_T            *) LPC_TIMER3_BASE)\n+#define LPC_SCU                   ((LPC_SCU_T              *) LPC_SCU_BASE)\n+#define LPC_GPIO_PIN_INT          ((LPC_PIN_INT_T          *) LPC_PIN_INT_BASE)\n+#define LPC_GPIOGROUP             ((LPC_GPIOGROUPINT_T     *) LPC_GPIO_GROUP_INT0_BASE)\n+#define LPC_MCPWM                 ((LPC_MCPWM_T            *) LPC_MCPWM_BASE)\n+#define LPC_I2C0                  ((LPC_I2C_T              *) LPC_I2C0_BASE)\n+#define LPC_I2C1                  ((LPC_I2C_T              *) LPC_I2C1_BASE)\n+#define LPC_I2S0                  ((LPC_I2S_T              *) LPC_I2S0_BASE)\n+#define LPC_I2S1                  ((LPC_I2S_T              *) LPC_I2S1_BASE)\n+#define LPC_C_CAN1                ((LPC_CCAN_T             *) LPC_C_CAN1_BASE)\n+#define LPC_RITIMER               ((LPC_RITIMER_T          *) LPC_RITIMER_BASE)\n+#define LPC_QEI                   ((LPC_QEI_T              *) LPC_QEI_BASE)\n+#define LPC_GIMA                  ((LPC_GIMA_T             *) LPC_GIMA_BASE)\n+#define LPC_DAC                   ((LPC_DAC_T              *) LPC_DAC_BASE)\n+#define LPC_C_CAN0                ((LPC_CCAN_T             *) LPC_C_CAN0_BASE)\n+#define LPC_ADC0                  ((LPC_ADC_T              *) LPC_ADC0_BASE)\n+#define LPC_ADC1                  ((LPC_ADC_T              *) LPC_ADC1_BASE)\n+#define LPC_GPIO_PORT             ((LPC_GPIO_T             *) LPC_GPIO_PORT_BASE)\n+#define LPC_EEPROM                ((LPC_EEPROM_T           *) LPC_EEPROM_BASE)\n+#define LPC_FMCA                  ((LPC_FMC_T              *) LPC_FMCA_BASE)\n+#define LPC_FMC                   ((LPC_FMC_T            * *) LPC_FMCA_BASE)\n+#define LPC_FMCB                  ((LPC_FMC_T              *) LPC_FMCB_BASE)\n+#define LPC_ROM_API               ((LPC_ROM_API_T          *) LPC_ROM_API_BASE)\n+\n+/**\n+ * @}\n+ */\n+\n+#include \"scu_18xx_43xx.h\"\n+#include \"clock_18xx_43xx.h\"\n+#include \"rgu_18xx_43xx.h\"\n+#include \"creg_18xx_43xx.h\"\n+#include \"evrt_18xx_43xx.h\"\n+#include \"otp_18xx_43xx.h\"\n+#include \"sdif_18xx_43xx.h\"\n+#include \"adc_18xx_43xx.h\"\n+#include \"atimer_18xx_43xx.h\"\n+#include \"aes_18xx_43xx.h\"\n+#include \"ccan_18xx_43xx.h\"\n+#include \"dac_18xx_43xx.h\"\n+#include \"eeprom_18xx_43xx.h\"\n+#include \"emc_18xx_43xx.h\"\n+#include \"enet_18xx_43xx.h\"\n+#include \"fmc_18xx_43xx.h\"\n+#include \"i2c_18xx_43xx.h\"\n+#include \"i2s_18xx_43xx.h\"\n+#include \"gima_18xx_43xx.h\"\n+#include \"gpdma_18xx_43xx.h\"\n+#include \"gpio_18xx_43xx.h\"\n+#include \"pinint_18xx_43xx.h\"\n+#include \"gpiogroup_18xx_43xx.h\"\n+#include \"lcd_18xx_43xx.h\"\n+#include \"mcpwm_18xx_43xx.h\"\n+#include \"pmc_18xx_43xx.h\"\n+#include \"qei_18xx_43xx.h\"\n+#include \"ritimer_18xx_43xx.h\"\n+#include \"rtc_18xx_43xx.h\"\n+#include \"sct_18xx_43xx.h\"\n+#include \"sct_pwm_18xx_43xx.h\"\n+#include \"sdmmc_18xx_43xx.h\"\n+#include \"ssp_18xx_43xx.h\"\n+#include \"timer_18xx_43xx.h\"\n+#include \"uart_18xx_43xx.h\"\n+#include \"usbhs_18xx_43xx.h\"\n+#include \"wwdt_18xx_43xx.h\"\n+#include \"romapi_18xx_43xx.h\"\n+#include \"i2cm_18xx_43xx.h\"\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_LPC18XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/chip_lpc43xx.h ./lpc_chip_43xx/inc/chip_lpc43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/chip_lpc43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/chip_lpc43xx.h\t2017-02-27 21:03:16.988043462 -0300\n@@ -0,0 +1,221 @@\n+/*\n+ * @brief LPC43xx basic chip inclusion file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CHIP_LPC43XX_H_\n+#define __CHIP_LPC43XX_H_\n+\n+#include \"lpc_types.h\"\n+#include \"sys_config.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+#if !defined(CORE_M4) && !defined(CORE_M0)\n+#error CORE_M4 or CORE_M0 is not defined for the LPC43xx architecture\n+#error CORE_M4 or CORE_M0 should be defined as part of your compiler define list\n+#endif\n+\n+#ifndef CHIP_LPC43XX\n+#error The LPC43XX Chip include path is used for this build, but\n+#error CHIP_LPC43XX is not defined!\n+#endif\n+\n+/** @defgroup PERIPH_43XX_BASE CHIP: LPC43xx Peripheral addresses and register set declarations\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define LPC_SCT_BASE              0x40000000\n+#define LPC_GPDMA_BASE            0x40002000\n+#define LPC_SPIFI_BASE            0x40003000\n+#define LPC_SDMMC_BASE            0x40004000\n+#define LPC_EMC_BASE              0x40005000\n+#define LPC_USB0_BASE             0x40006000\n+#define LPC_USB1_BASE             0x40007000\n+#define LPC_LCD_BASE              0x40008000\n+#define LPC_FMCA_BASE             0x4000C000\n+#define LPC_FMCB_BASE             0x4000D000\n+#define LPC_ETHERNET_BASE         0x40010000\n+#define LPC_ATIMER_BASE           0x40040000\n+#define LPC_REGFILE_BASE          0x40041000\n+#define LPC_PMC_BASE              0x40042000\n+#define LPC_CREG_BASE             0x40043000\n+#define LPC_EVRT_BASE             0x40044000\n+#define LPC_RTC_BASE              0x40046000\n+#define LPC_CGU_BASE              0x40050000\n+#define LPC_CCU1_BASE             0x40051000\n+#define LPC_CCU2_BASE             0x40052000\n+#define LPC_RGU_BASE              0x40053000\n+#define LPC_WWDT_BASE             0x40080000\n+#define LPC_USART0_BASE           0x40081000\n+#define LPC_USART2_BASE           0x400C1000\n+#define LPC_USART3_BASE           0x400C2000\n+#define LPC_UART1_BASE            0x40082000\n+#define LPC_SSP0_BASE             0x40083000\n+#define LPC_SSP1_BASE             0x400C5000\n+#define LPC_TIMER0_BASE           0x40084000\n+#define LPC_TIMER1_BASE           0x40085000\n+#define LPC_TIMER2_BASE           0x400C3000\n+#define LPC_TIMER3_BASE           0x400C4000\n+#define LPC_SCU_BASE              0x40086000\n+#define LPC_PIN_INT_BASE          0x40087000\n+#define LPC_GPIO_GROUP_INT0_BASE  0x40088000\n+#define LPC_GPIO_GROUP_INT1_BASE  0x40089000\n+#define LPC_MCPWM_BASE            0x400A0000\n+#define LPC_I2C0_BASE             0x400A1000\n+#define LPC_I2C1_BASE             0x400E0000\n+#define LPC_I2S0_BASE             0x400A2000\n+#define LPC_I2S1_BASE             0x400A3000\n+#define LPC_C_CAN1_BASE           0x400A4000\n+#define LPC_RITIMER_BASE          0x400C0000\n+#define LPC_QEI_BASE              0x400C6000\n+#define LPC_GIMA_BASE             0x400C7000\n+#define LPC_DAC_BASE              0x400E1000\n+#define LPC_C_CAN0_BASE           0x400E2000\n+#define LPC_ADC0_BASE             0x400E3000\n+#define LPC_ADC1_BASE             0x400E4000\n+#define LPC_ADCHS_BASE            0x400F0000\n+#define LPC_GPIO_PORT_BASE        0x400F4000\n+#define LPC_SPI_BASE              0x40100000\n+#define LPC_SGPIO_BASE            0x40101000\n+#define LPC_EEPROM_BASE           0x4000E000\n+#define LPC_ROM_API_BASE          0x10400100\n+\n+#define LPC_SCT                   ((LPC_SCT_T              *) LPC_SCT_BASE)\n+#define LPC_GPDMA                 ((LPC_GPDMA_T            *) LPC_GPDMA_BASE)\n+#define LPC_SDMMC                 ((LPC_SDMMC_T            *) LPC_SDMMC_BASE)\n+#define LPC_EMC                   ((LPC_EMC_T              *) LPC_EMC_BASE)\n+#define LPC_USB0                  ((LPC_USBHS_T            *) LPC_USB0_BASE)\n+#define LPC_USB1                  ((LPC_USBHS_T            *) LPC_USB1_BASE)\n+#define LPC_LCD                   ((LPC_LCD_T              *) LPC_LCD_BASE)\n+#define LPC_ETHERNET              ((LPC_ENET_T             *) LPC_ETHERNET_BASE)\n+#define LPC_ATIMER                ((LPC_ATIMER_T           *) LPC_ATIMER_BASE)\n+#define LPC_REGFILE               ((LPC_REGFILE_T          *) LPC_REGFILE_BASE)\n+#define LPC_PMC                   ((LPC_PMC_T              *) LPC_PMC_BASE)\n+#define LPC_EVRT                  ((LPC_EVRT_T             *) LPC_EVRT_BASE)\n+#define LPC_RTC                   ((LPC_RTC_T              *) LPC_RTC_BASE)\n+#define LPC_CGU                   ((LPC_CGU_T              *) LPC_CGU_BASE)\n+#define LPC_CCU1                  ((LPC_CCU1_T             *) LPC_CCU1_BASE)\n+#define LPC_CCU2                  ((LPC_CCU2_T             *) LPC_CCU2_BASE)\n+#define LPC_CREG                  ((LPC_CREG_T             *) LPC_CREG_BASE)\n+#define LPC_RGU                   ((LPC_RGU_T              *) LPC_RGU_BASE)\n+#define LPC_WWDT                  ((LPC_WWDT_T             *) LPC_WWDT_BASE)\n+#define LPC_USART0                ((LPC_USART_T            *) LPC_USART0_BASE)\n+#define LPC_USART2                ((LPC_USART_T            *) LPC_USART2_BASE)\n+#define LPC_USART3                ((LPC_USART_T            *) LPC_USART3_BASE)\n+#define LPC_UART1                 ((LPC_USART_T            *) LPC_UART1_BASE)\n+#define LPC_SSP0                  ((LPC_SSP_T              *) LPC_SSP0_BASE)\n+#define LPC_SSP1                  ((LPC_SSP_T              *) LPC_SSP1_BASE)\n+#define LPC_TIMER0                ((LPC_TIMER_T            *) LPC_TIMER0_BASE)\n+#define LPC_TIMER1                ((LPC_TIMER_T            *) LPC_TIMER1_BASE)\n+#define LPC_TIMER2                ((LPC_TIMER_T            *) LPC_TIMER2_BASE)\n+#define LPC_TIMER3                ((LPC_TIMER_T            *) LPC_TIMER3_BASE)\n+#define LPC_SCU                   ((LPC_SCU_T              *) LPC_SCU_BASE)\n+#define LPC_GPIO_PIN_INT          ((LPC_PIN_INT_T          *) LPC_PIN_INT_BASE)\n+#define LPC_GPIOGROUP             ((LPC_GPIOGROUPINT_T     *) LPC_GPIO_GROUP_INT0_BASE)\n+#define LPC_MCPWM                 ((LPC_MCPWM_T            *) LPC_MCPWM_BASE)\n+#define LPC_I2C0                  ((LPC_I2C_T              *) LPC_I2C0_BASE)\n+#define LPC_I2C1                  ((LPC_I2C_T              *) LPC_I2C1_BASE)\n+#define LPC_I2S0                  ((LPC_I2S_T              *) LPC_I2S0_BASE)\n+#define LPC_I2S1                  ((LPC_I2S_T              *) LPC_I2S1_BASE)\n+#define LPC_C_CAN1                ((LPC_CCAN_T             *) LPC_C_CAN1_BASE)\n+#define LPC_RITIMER               ((LPC_RITIMER_T          *) LPC_RITIMER_BASE)\n+#define LPC_QEI                   ((LPC_QEI_T              *) LPC_QEI_BASE)\n+#define LPC_GIMA                  ((LPC_GIMA_T             *) LPC_GIMA_BASE)\n+#define LPC_DAC                   ((LPC_DAC_T              *) LPC_DAC_BASE)\n+#define LPC_C_CAN0                ((LPC_CCAN_T             *) LPC_C_CAN0_BASE)\n+#define LPC_ADC0                  ((LPC_ADC_T              *) LPC_ADC0_BASE)\n+#define LPC_ADC1                  ((LPC_ADC_T              *) LPC_ADC1_BASE)\n+#define LPC_ADCHS                 ((LPC_HSADC_T            *) LPC_ADCHS_BASE)\n+#define LPC_GPIO_PORT             ((LPC_GPIO_T             *) LPC_GPIO_PORT_BASE)\n+#define LPC_SPI                   ((LPC_SPI_T              *) LPC_SPI_BASE)\n+#define LPC_SGPIO                 ((LPC_SGPIO_T            *) LPC_SGPIO_BASE)\n+#define LPC_EEPROM                ((LPC_EEPROM_T           *) LPC_EEPROM_BASE)\n+#define LPC_FMCA                  ((LPC_FMC_T              *) LPC_FMCA_BASE)\n+#define LPC_FMC                   ((LPC_FMC_T            * *) LPC_FMCA_BASE)\n+#define LPC_FMCB                  ((LPC_FMC_T              *) LPC_FMCB_BASE)\n+#define LPC_ROM_API               ((LPC_ROM_API_T          *) LPC_ROM_API_BASE)\n+\n+/**\n+ * @}\n+ */\n+\n+#include \"scu_18xx_43xx.h\"\n+#include \"clock_18xx_43xx.h\"\n+#include \"rgu_18xx_43xx.h\"\n+#include \"creg_18xx_43xx.h\"\n+#include \"evrt_18xx_43xx.h\"\n+#include \"otp_18xx_43xx.h\"\n+#include \"sdif_18xx_43xx.h\"\n+#include \"adc_18xx_43xx.h\"\n+#include \"hsadc_18xx_43xx.h\"\n+#include \"atimer_18xx_43xx.h\"\n+#include \"aes_18xx_43xx.h\"\n+#include \"ccan_18xx_43xx.h\"\n+#include \"dac_18xx_43xx.h\"\n+#include \"eeprom_18xx_43xx.h\"\n+#include \"emc_18xx_43xx.h\"\n+#include \"enet_18xx_43xx.h\"\n+#include \"fmc_18xx_43xx.h\"\n+#include \"i2c_18xx_43xx.h\"\n+#include \"i2s_18xx_43xx.h\"\n+#include \"gima_18xx_43xx.h\"\n+#include \"gpdma_18xx_43xx.h\"\n+#include \"gpio_18xx_43xx.h\"\n+#include \"pinint_18xx_43xx.h\"\n+#include \"gpiogroup_18xx_43xx.h\"\n+#include \"lcd_18xx_43xx.h\"\n+#include \"mcpwm_18xx_43xx.h\"\n+#include \"pmc_18xx_43xx.h\"\n+#include \"qei_18xx_43xx.h\"\n+#include \"ritimer_18xx_43xx.h\"\n+#include \"rtc_18xx_43xx.h\"\n+#include \"sct_18xx_43xx.h\"\n+#include \"sct_pwm_18xx_43xx.h\"\n+#include \"sdmmc_18xx_43xx.h\"\n+#include \"sdio_18xx_43xx.h\"\n+#include \"sgpio_18xx_43xx.h\"\n+#include \"spi_18xx_43xx.h\"\n+#include \"ssp_18xx_43xx.h\"\n+#include \"timer_18xx_43xx.h\"\n+#include \"uart_18xx_43xx.h\"\n+#include \"usbhs_18xx_43xx.h\"\n+#include \"wwdt_18xx_43xx.h\"\n+#include \"romapi_18xx_43xx.h\"\n+#include \"i2cm_18xx_43xx.h\"\n+\n+#if defined(CORE_M4)\n+#include \"fpu_init.h\"\n+#endif\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CHIP_LPC43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/clock_18xx_43xx.h ./lpc_chip_43xx/inc/clock_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/clock_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/clock_18xx_43xx.h\t2017-02-27 21:03:16.988043462 -0300\n@@ -0,0 +1,394 @@\n+/*\n+ * @brief LPC18xx/43xx clock driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CLOCK_18XX_43XX_H_\n+#define __CLOCK_18XX_43XX_H_\n+\n+#include \"cguccu_18xx_43xx.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CLOCK_18XX_43XX CHIP: LPC18xx/43xx Clock Driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/** @defgroup CLOCK_18XX_43XX_OPTIONS CHIP: LPC18xx/43xx Clock Driver driver options\n+ * @ingroup CLOCK_18XX_43XX CHIP_18XX_43XX_DRIVER_OPTIONS\n+ * The clock driver has options that configure it's operation at build-time.<br>\n+ *\n+ * <b>MAX_CLOCK_FREQ</b><br>\n+ * This macro defines the maximum frequency supported by the Chip [204MHz for LPC43xx\n+ * 180MHz for LPC18xx]. API Chip_SetupXtalClocking() and Chip_SetupIrcClocking() will\n+ * use this macro to set the CPU Core frequency to the maximum supported.<br>\n+ * To set a Core frequency other than the maximum frequency Chip_SetupCoreClock() API\n+ * must be used. <b>Using this macro to set the Core freqency is not recommended.</b>\n+ * @{\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+/* Internal oscillator frequency */\n+#define CGU_IRC_FREQ (12000000)\n+\n+#ifndef MAX_CLOCK_FREQ\n+#if defined(CHIP_LPC43XX)\n+#define MAX_CLOCK_FREQ (204000000)\n+#else\n+#define MAX_CLOCK_FREQ (180000000)\n+#endif\n+#endif\n+\n+#define PLL_MIN_CCO_FREQ 156000000  /**< Min CCO frequency of main PLL */\n+#define PLL_MAX_CCO_FREQ 320000000  /**< Max CCO frequency of main PLL */\n+\n+/**\n+ * @brief  PLL Parameter strucutre\n+ */\n+typedef struct {\n+   int ctrl;       /**< Control register value */\n+   CHIP_CGU_CLKIN_T srcin; /**< Input clock Source see #CHIP_CGU_CLKIN_T */\n+   int nsel;       /**< Pre-Div value */\n+   int psel;       /**< Post-Div Value */\n+   int msel;       /**< M-Div value */\n+   uint32_t fin;   /**< Input frequency */\n+   uint32_t fout;  /**< Output frequency */\n+   uint32_t fcco;  /**< CCO frequency */\n+} PLL_PARAM_T;\n+\n+/**\n+ * @brief  Enables the crystal oscillator\n+ * @return Nothing\n+ */\n+void Chip_Clock_EnableCrystal(void);\n+\n+/**\n+ * @brief  Disables the crystal oscillator\n+ * @return Nothing\n+ */\n+void Chip_Clock_DisableCrystal(void);\n+\n+/**\n+ * @brief   Configures the main PLL\n+ * @param   Input      : Which clock input to use as the PLL input\n+ * @param   MinHz      : Minimum allowable PLL output frequency\n+ * @param   DesiredHz  : Desired PLL output frequency\n+ * @param   MaxHz      : Maximum allowable PLL output frequency\n+ * @return Frequency of the PLL in Hz\n+ * Returns the configured PLL frequency or zero if the PLL can not be configured between MinHz\n+ * and MaxHz. This will not wait for PLL lock. Call Chip_Clock_MainPLLLocked() to determine if\n+ * the PLL is locked.\n+ */\n+uint32_t Chip_Clock_SetupMainPLLHz(CHIP_CGU_CLKIN_T Input, uint32_t MinHz, uint32_t DesiredHz, uint32_t MaxHz);\n+\n+/**\n+ * @brief  Directly set the PLL multipler\n+ * @param   Input  : Which clock input to use as the PLL input\n+ * @param  mult    : How many times to multiply the input clock\n+ * @return Frequency of the PLL in Hz\n+ */\n+uint32_t Chip_Clock_SetupMainPLLMult(CHIP_CGU_CLKIN_T Input, uint32_t mult);\n+\n+/**\n+ * @brief   Returns the frequency of the main PLL\n+ * @return Frequency of the PLL in Hz\n+ * Returns zero if the main PLL is not running.\n+ */\n+uint32_t Chip_Clock_GetMainPLLHz(void);\n+\n+/**\n+ * @brief  Disables the main PLL\n+ * @return none\n+ * Make sure the main PLL is not needed to clock the part before disabling it.\n+ * Saves power if the main PLL is not needed.\n+ */\n+__STATIC_INLINE void Chip_Clock_DisableMainPLL(void)\n+{\n+   /* power down main PLL */\n+   LPC_CGU->PLL1_CTRL |= 1;\n+}\n+\n+/**\n+ * @brief  Enbles the main PLL\n+ * @return none\n+ * Make sure the main PLL is enabled.\n+ */\n+__STATIC_INLINE void Chip_Clock_EnableMainPLL(void)\n+{\n+   /* power up main PLL */\n+   LPC_CGU->PLL1_CTRL &= ~1;\n+}\n+/**\n+ * @brief  Sets-up the main PLL\n+ * @param  ppll    : Pointer to pll param structure #PLL_PARAM_T\n+ * @return none\n+ * Make sure the main PLL is enabled.\n+ */\n+__STATIC_INLINE void Chip_Clock_SetupMainPLL(const PLL_PARAM_T *ppll)\n+{\n+   /* power up main PLL */\n+   LPC_CGU->PLL1_CTRL = ppll->ctrl | ((uint32_t) ppll->srcin << 24) | (ppll->msel << 16) | (ppll->nsel << 12) | (ppll->psel << 8);\n+}\n+\n+/**\n+ * @brief  Sets up a CGU clock divider and it's input clock\n+ * @param  Divider : CHIP_CGU_IDIV_T value indicating which divider to configure\n+ * @param  Input   : CHIP_CGU_CLKIN_T value indicating which clock source to use or CLOCKINPUT_PD to power down divider\n+ * @param  Divisor : value to divide Input clock by\n+ * @return Nothing\n+ * Maximum divider on A = 4, B/C/D = 16, E = 256.\n+ * See the user manual for allowable combinations for input clock.\n+ */\n+void Chip_Clock_SetDivider(CHIP_CGU_IDIV_T Divider, CHIP_CGU_CLKIN_T Input, uint32_t Divisor);\n+\n+/**\n+ * @brief  Gets a CGU clock divider source\n+ * @param  Divider : CHIP_CGU_IDIV_T value indicating which divider to get the source of\n+ * @return CHIP_CGU_CLKIN_T indicating which clock source is set or CLOCKINPUT_PD\n+ */\n+CHIP_CGU_CLKIN_T Chip_Clock_GetDividerSource(CHIP_CGU_IDIV_T Divider);\n+\n+/**\n+ * @brief  Gets a CGU clock divider divisor\n+ * @param  Divider : CHIP_CGU_IDIV_T value indicating which divider to get the source of\n+ * @return the divider value for the divider\n+ */\n+uint32_t Chip_Clock_GetDividerDivisor(CHIP_CGU_IDIV_T Divider);\n+\n+/**\n+ * @brief  Returns the frequency of the specified input clock source\n+ * @param  input   : Which clock input to return the frequency of\n+ * @return Frequency of input source in Hz\n+ * This function returns an ideal frequency and not the actual frequency. Returns\n+ * zero if the clock source is disabled.\n+ */\n+uint32_t Chip_Clock_GetClockInputHz(CHIP_CGU_CLKIN_T input);\n+\n+/**\n+ * @brief  Returns the frequency of the specified base clock source\n+ * @param  clock   : which base clock to return the frequency of.\n+ * @return Frequency of base source in Hz\n+ * This function returns an ideal frequency and not the actual frequency. Returns\n+ * zero if the clock source is disabled.\n+ */\n+uint32_t Chip_Clock_GetBaseClocktHz(CHIP_CGU_BASE_CLK_T clock);\n+\n+/**\n+ * @brief  Sets a CGU Base Clock clock source\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to set\n+ * @param  Input       : CHIP_CGU_CLKIN_T value indicating which clock source to use or CLOCKINPUT_PD to power down base clock\n+ * @param  autoblocken : Enables autoblocking during frequency change if true\n+ * @param  powerdn     : The clock base is setup, but powered down if true\n+ * @return Nothing\n+ */\n+void Chip_Clock_SetBaseClock(CHIP_CGU_BASE_CLK_T BaseClock, CHIP_CGU_CLKIN_T Input, bool autoblocken, bool powerdn);\n+\n+/**\n+ * @brief  Get CGU Base Clock clock source information\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to get\n+ * @param  Input       : Pointer to CHIP_CGU_CLKIN_T value of the base clock\n+ * @param  autoblocken : Pointer to autoblocking value of the base clock\n+ * @param  powerdn     : Pointer to power down flag\n+ * @return Nothing\n+ */\n+void Chip_Clock_GetBaseClockOpts(CHIP_CGU_BASE_CLK_T BaseClock, CHIP_CGU_CLKIN_T *Input, bool *autoblocken,\n+                                bool *powerdn);\n+\n+/**\n+ * @brief  Gets a CGU Base Clock clock source\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to get inpuot clock for\n+ * @return CHIP_CGU_CLKIN_T indicating which clock source is set or CLOCKINPUT_PD\n+ */\n+CHIP_CGU_CLKIN_T Chip_Clock_GetBaseClock(CHIP_CGU_BASE_CLK_T BaseClock);\n+\n+/**\n+ * @brief  Enables a base clock source\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to enable\n+ * @return Nothing\n+ */\n+void Chip_Clock_EnableBaseClock(CHIP_CGU_BASE_CLK_T BaseClock);\n+\n+/**\n+ * @brief  Disables a base clock source\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to disable\n+ * @return Nothing\n+ */\n+void Chip_Clock_DisableBaseClock(CHIP_CGU_BASE_CLK_T BaseClock);\n+\n+/**\n+ * @brief  Returns base clock enable state\n+ * @param  BaseClock   : CHIP_CGU_BASE_CLK_T value indicating which base clock to check\n+ * @return true if the base clock is enabled, false if disabled\n+ */\n+bool Chip_Clock_IsBaseClockEnabled(CHIP_CGU_BASE_CLK_T BaseClock);\n+\n+/**\n+ * @brief  Enables a peripheral clock and sets clock states\n+ * @param  clk         : CHIP_CCU_CLK_T value indicating which clock to enable\n+ * @param  autoen      : true to enable autoblocking on a clock rate change, false to disable\n+ * @param  wakeupen    : true to enable wakeup mechanism, false to disable\n+ * @param  div         : Divider for the clock, must be 1 for most clocks, 2 supported on others\n+ * @return Nothing\n+ */\n+void Chip_Clock_EnableOpts(CHIP_CCU_CLK_T clk, bool autoen, bool wakeupen, int div);\n+\n+/**\n+ * @brief  Enables a peripheral clock\n+ * @param  clk : CHIP_CCU_CLK_T value indicating which clock to enable\n+ * @return Nothing\n+ */\n+void Chip_Clock_Enable(CHIP_CCU_CLK_T clk);\n+\n+/**\n+ * @brief  Enables RTCclock\n+ * @return Nothing\n+ */\n+void Chip_Clock_RTCEnable(void);\n+\n+/**\n+ * @brief  Disables a peripheral clock\n+ * @param  clk : CHIP_CCU_CLK_T value indicating which clock to disable\n+ * @return Nothing\n+ */\n+void Chip_Clock_Disable(CHIP_CCU_CLK_T clk);\n+\n+/**\n+ * @brief  Returns a peripheral clock rate\n+ * @param  clk : CHIP_CCU_CLK_T value indicating which clock to get rate for\n+ * @return 0 if the clock is disabled, or the rate of the clock\n+ */\n+uint32_t Chip_Clock_GetRate(CHIP_CCU_CLK_T clk);\n+\n+/**\n+ * @brief  Returns EMC clock rate\n+ * @return 0 if the clock is disabled, or the rate of the clock\n+ */\n+uint32_t Chip_Clock_GetEMCRate(void);\n+\n+/**\n+ * @brief  Start the power down sequence by disabling the branch output\n+ *          clocks with wake up mechanism (Only the clocks which\n+ *          wake up mechanism bit enabled will be disabled)\n+ * @return Nothing\n+ */\n+void Chip_Clock_StartPowerDown(void);\n+\n+/**\n+ * @brief  Clear the power down mode bit & proceed normal operation of branch output\n+ *          clocks (Only the clocks which wake up mechanism bit enabled will be\n+ *          enabled after the wake up event)\n+ * @return Nothing\n+ */\n+void Chip_Clock_ClearPowerDown(void);\n+\n+/**\n+ * Structure for setting up the USB or audio PLL\n+ */\n+typedef struct {\n+   uint32_t ctrl;      /* Default control word for PLL */\n+   uint32_t mdiv;      /* Default M-divider value for PLL */\n+   uint32_t ndiv;      /* Default NP-divider value for PLL */\n+   uint32_t fract;     /* Default fractional value for audio PLL only */\n+   uint32_t freq;      /* Output frequency of the pll */\n+} CGU_USBAUDIO_PLL_SETUP_T;\n+\n+/**\n+ * @brief  Sets up the audio or USB PLL\n+ * @param  Input       : Input clock\n+ * @param  pllnum      : PLL identifier\n+ * @param  pPLLSetup   : Pointer to PLL setup structure\n+ * @return Nothing\n+ * Sets up the PLL with the passed structure values.\n+ */\n+void Chip_Clock_SetupPLL(CHIP_CGU_CLKIN_T Input, CHIP_CGU_USB_AUDIO_PLL_T pllnum,\n+                        const CGU_USBAUDIO_PLL_SETUP_T *pPLLSetup);\n+\n+/**\n+ * @brief  Enables the audio or USB PLL\n+ * @param  pllnum  : PLL identifier\n+ * @return Nothing\n+ */\n+void Chip_Clock_EnablePLL(CHIP_CGU_USB_AUDIO_PLL_T pllnum);\n+\n+/**\n+ * @brief  Disables the audio or USB PLL\n+ * @param  pllnum  : PLL identifier\n+ * @return Nothing\n+ */\n+void Chip_Clock_DisablePLL(CHIP_CGU_USB_AUDIO_PLL_T pllnum);\n+\n+#define CGU_PLL_LOCKED (1 << 0)    /* PLL locked status */\n+#define CGU_PLL_FR     (1 << 1)    /* PLL free running indicator status */\n+\n+/**\n+ * @brief  Returns the PLL status\n+ * @param  pllnum  : PLL identifier\n+ * @return An OR'ed value of CGU_PLL_LOCKED or CGU_PLL_FR\n+ */\n+uint32_t Chip_Clock_GetPLLStatus(CHIP_CGU_USB_AUDIO_PLL_T pllnum);\n+\n+/**\n+ * @brief  Calculate main PLL Pre, Post and M div values\n+ * @param  freq    : Expected output frequency\n+ * @param  ppll    : Pointer to #PLL_PARAM_T structure\n+ * @return 0 on success; < 0 on failure\n+ * @note\n+ * ppll->srcin[IN] should have the appropriate Input clock source selected<br>\n+ * ppll->fout[OUT] will have the actual output frequency<br>\n+ * ppll->fcco[OUT] will have the frequency of CCO\n+ */\n+int Chip_Clock_CalcMainPLLValue(uint32_t freq, PLL_PARAM_T *ppll);\n+\n+\n+/**\n+ * @brief  Wait for Main PLL to be locked\n+ * @return 1 - PLL is LOCKED; 0 - PLL is not locked\n+ * @note   The main PLL should be locked prior to using it as a clock input for a base clock.\n+ */\n+__STATIC_INLINE int Chip_Clock_MainPLLLocked(void)\n+{\n+   /* Return true if locked */\n+   return (LPC_CGU->PLL1_STAT & 1) != 0;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CLOCK_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/cmsis_43xx.h ./lpc_chip_43xx/inc/cmsis_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/cmsis_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/cmsis_43xx.h\t2017-02-27 21:03:16.988043462 -0300\n@@ -0,0 +1,167 @@\n+/*\n+ * @brief Basic CMSIS include file for LPC43XX\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CMSIS_43XX_M0_H_\n+#define __CMSIS_43XX_M0_H_\n+\n+#ifndef __CMSIS_H_\n+#error \"cmsis_43xx.h should not be included directly use cmsis.h instead\"\n+#endif\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CMSIS_43XX CHIP: LPC43xx CMSIS include file\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#if defined(__ARMCC_VERSION)\n+  #pragma diag_suppress 2525\n+  #pragma push\n+  #pragma anon_unions\n+#elif defined(__CWCC__)\n+  #pragma push\n+  #pragma cpp_extensions on\n+#elif defined(__GNUC__)\n+/* anonymous unions are enabled by default */\n+#elif defined(__IAR_SYSTEMS_ICC__)\n+  #pragma language=extended\n+#else\n+  #error Not supported compiler type\n+#endif\n+\n+/** @defgroup CMSIS_43XX_COMMON CHIP: LPC43xx Cortex CMSIS definitions\n+ * @{\n+ */\n+\n+#define __CM4_REV              0x0001      /*!< Cortex-M4 Core Revision               */\n+#define __MPU_PRESENT             1            /*!< MPU present or not                    */\n+#define __NVIC_PRIO_BITS          3            /*!< Number of Bits used for Priority Levels */\n+#define __Vendor_SysTickConfig    0            /*!< Set to 1 if different SysTick Config is used */\n+#define __FPU_PRESENT             1            /*!< FPU present or not                    */\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup CMSIS_43XX_IRQ CHIP: LPC43xx peripheral interrupt numbers\n+ * @{\n+ */\n+\n+typedef enum {\n+   /* -------------------------  Cortex-M4 Processor Exceptions Numbers  ----------------------------- */\n+   Reset_IRQn                        = -15,/*!<   1  Reset Vector, invoked on Power up and warm reset */\n+   NonMaskableInt_IRQn               = -14,/*!<   2  Non maskable Interrupt, cannot be stopped or preempted */\n+   HardFault_IRQn                    = -13,/*!<   3  Hard Fault, all classes of Fault */\n+   MemoryManagement_IRQn             = -12,/*!<   4  Memory Management, MPU mismatch, including Access Violation and No Match */\n+   BusFault_IRQn                     = -11,/*!<   5  Bus Fault, Pre-Fetch-, Memory Access Fault, other address/memory related Fault */\n+   UsageFault_IRQn                   = -10,/*!<   6  Usage Fault, i.e. Undef Instruction, Illegal State Transition */\n+   SVCall_IRQn                       =  -5,/*!<  11  System Service Call via SVC instruction */\n+   DebugMonitor_IRQn                 =  -4,/*!<  12  Debug Monitor                    */\n+   PendSV_IRQn                       =  -2,/*!<  14  Pendable request for system service */\n+   SysTick_IRQn                      =  -1,/*!<  15  System Tick Timer                */\n+\n+   /* ---------------------------  LPC18xx/43xx Specific Interrupt Numbers  ------------------------------- */\n+   DAC_IRQn                          =   0,/*!<   0  DAC                              */\n+   M0APP_IRQn                        =   1,/*!<   1  M0APP Core interrupt             */\n+   DMA_IRQn                          =   2,/*!<   2  DMA                              */\n+   RESERVED1_IRQn                    =   3,/*!<   3  EZH/EDM                          */\n+   RESERVED2_IRQn                    =   4,\n+   ETHERNET_IRQn                     =   5,/*!<   5  ETHERNET                         */\n+   SDIO_IRQn                         =   6,/*!<   6  SDIO                             */\n+   LCD_IRQn                          =   7,/*!<   7  LCD                              */\n+   USB0_IRQn                         =   8,/*!<   8  USB0                             */\n+   USB1_IRQn                         =   9,/*!<   9  USB1                             */\n+   SCT_IRQn                          =  10,/*!<  10  SCT                              */\n+   RITIMER_IRQn                      =  11,/*!<  11  RITIMER                          */\n+   TIMER0_IRQn                       =  12,/*!<  12  TIMER0                           */\n+   TIMER1_IRQn                       =  13,/*!<  13  TIMER1                           */\n+   TIMER2_IRQn                       =  14,/*!<  14  TIMER2                           */\n+   TIMER3_IRQn                       =  15,/*!<  15  TIMER3                           */\n+   MCPWM_IRQn                        =  16,/*!<  16  MCPWM                            */\n+   ADC0_IRQn                         =  17,/*!<  17  ADC0                             */\n+   I2C0_IRQn                         =  18,/*!<  18  I2C0                             */\n+   I2C1_IRQn                         =  19,/*!<  19  I2C1                             */\n+   SPI_INT_IRQn                      =  20,/*!<  20  SPI_INT                          */\n+   ADC1_IRQn                         =  21,/*!<  21  ADC1                             */\n+   SSP0_IRQn                         =  22,/*!<  22  SSP0                             */\n+   SSP1_IRQn                         =  23,/*!<  23  SSP1                             */\n+   USART0_IRQn                       =  24,/*!<  24  USART0                           */\n+   UART1_IRQn                        =  25,/*!<  25  UART1                            */\n+   USART2_IRQn                       =  26,/*!<  26  USART2                           */\n+   USART3_IRQn                       =  27,/*!<  27  USART3                           */\n+   I2S0_IRQn                         =  28,/*!<  28  I2S0                             */\n+   I2S1_IRQn                         =  29,/*!<  29  I2S1                             */\n+   RESERVED4_IRQn                    =  30,\n+   SGPIO_INT_IRQn                    =  31,/*!<  31  SGPIO_IINT                       */\n+   PIN_INT0_IRQn                     =  32,/*!<  32  PIN_INT0                         */\n+   PIN_INT1_IRQn                     =  33,/*!<  33  PIN_INT1                         */\n+   PIN_INT2_IRQn                     =  34,/*!<  34  PIN_INT2                         */\n+   PIN_INT3_IRQn                     =  35,/*!<  35  PIN_INT3                         */\n+   PIN_INT4_IRQn                     =  36,/*!<  36  PIN_INT4                         */\n+   PIN_INT5_IRQn                     =  37,/*!<  37  PIN_INT5                         */\n+   PIN_INT6_IRQn                     =  38,/*!<  38  PIN_INT6                         */\n+   PIN_INT7_IRQn                     =  39,/*!<  39  PIN_INT7                         */\n+   GINT0_IRQn                        =  40,/*!<  40  GINT0                            */\n+   GINT1_IRQn                        =  41,/*!<  41  GINT1                            */\n+   EVENTROUTER_IRQn                  =  42,/*!<  42  EVENTROUTER                      */\n+   C_CAN1_IRQn                       =  43,/*!<  43  C_CAN1                           */\n+   RESERVED6_IRQn                    =  44,\n+   ADCHS_IRQn                        =  45,/*!<  45  ADCHS interrupt                  */\n+   ATIMER_IRQn                       =  46,/*!<  46  ATIMER                           */\n+   RTC_IRQn                          =  47,/*!<  47  RTC                              */\n+   RESERVED8_IRQn                    =  48,\n+   WWDT_IRQn                         =  49,/*!<  49  WWDT                             */\n+   M0SUB_IRQn                        =  50,/*!<  50  M0SUB core interrupt             */\n+   C_CAN0_IRQn                       =  51,/*!<  51  C_CAN0                           */\n+   QEI_IRQn                          =  52,/*!<  52  QEI                              */\n+} LPC43XX_IRQn_Type;\n+\n+/**\n+ * @}\n+ */\n+\n+typedef LPC43XX_IRQn_Type IRQn_Type;\n+\n+/* Cortex-M4 processor and core peripherals */\n+#include \"core_cm4.h\"\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* ifndef __CMSIS_43XX_M0_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/cmsis.h ./lpc_chip_43xx/inc/cmsis.h\n--- a_OkB2vL/lpc_chip_43xx/inc/cmsis.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/cmsis.h\t2017-02-27 21:03:16.988043462 -0300\n@@ -0,0 +1,63 @@\n+/*\n+ * @brief LPC11xx selective CMSIS inclusion file\n+ *\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CMSIS_H_\n+#define __CMSIS_H_\n+\n+#include \"lpc_types.h\"\n+#include \"sys_config.h\"\n+\n+/* Select correct CMSIS include file based on CHIP_* definition */\n+#if defined(CHIP_LPC43XX)\n+\n+#ifdef CORE_M4\n+#include \"cmsis_43xx.h\"\n+\n+#elif defined(CORE_M0)\n+#if defined(LPC43XX_CORE_M0APP)\n+#include \"cmsis_43xx_m0app.h\"\n+\n+#elif (defined(LPC43XX_CORE_M0SUB))\n+#include \"cmsis_43xx_m0sub.h\"\n+\n+#else\n+#error \"LPC43XX_CORE_M0APP or LPC43XX_CORE_M0SUB must be defined\"\n+#endif\n+\n+#else\n+#error \"CORE_M0 or CORE_M4 must be defined for CHIP_LPC43XX\"\n+#endif\n+\n+#elif defined(CHIP_LPC18XX)\n+#include \"cmsis_18xx.h\"\n+\n+#else\n+#error \"No CHIP_* definition is defined\"\n+#endif\n+\n+#endif /* __CMSIS_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/core_cm4.h ./lpc_chip_43xx/inc/core_cm4.h\n--- a_OkB2vL/lpc_chip_43xx/inc/core_cm4.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/core_cm4.h\t2017-02-27 21:03:16.992043462 -0300\n@@ -0,0 +1,1772 @@\n+/**************************************************************************//**\n+ * @file     core_cm4.h\n+ * @brief    CMSIS Cortex-M4 Core Peripheral Access Layer Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#if defined ( __ICCARM__ )\n+ #pragma system_include  /* treat file as system include file for MISRA check */\n+#endif\n+\n+#ifdef __cplusplus\n+ extern \"C\" {\n+#endif\n+\n+#ifndef __CORE_CM4_H_GENERIC\n+#define __CORE_CM4_H_GENERIC\n+\n+/** \\page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions\n+  CMSIS violates the following MISRA-C:2004 rules:\n+\n+   \\li Required Rule 8.5, object/function definition in header file.<br>\n+     Function definitions in header files are used to allow 'inlining'.\n+\n+   \\li Required Rule 18.4, declaration of union type or object of union type: '{...}'.<br>\n+     Unions are used for effective representation of core registers.\n+\n+   \\li Advisory Rule 19.7, Function-like macro defined.<br>\n+     Function-like macros are used to allow more efficient code.\n+ */\n+\n+\n+/*******************************************************************************\n+ *                 CMSIS definitions\n+ ******************************************************************************/\n+/** \\ingroup Cortex_M4\n+  @{\n+ */\n+\n+/*  CMSIS CM4 definitions */\n+#define __CM4_CMSIS_VERSION_MAIN  (0x03)                                   /*!< [31:16] CMSIS HAL main version   */\n+#define __CM4_CMSIS_VERSION_SUB   (0x20)                                   /*!< [15:0]  CMSIS HAL sub version    */\n+#define __CM4_CMSIS_VERSION       ((__CM4_CMSIS_VERSION_MAIN << 16) | \\\n+                                    __CM4_CMSIS_VERSION_SUB          )     /*!< CMSIS HAL version number         */\n+\n+#define __CORTEX_M                (0x04)                                   /*!< Cortex-M Core                    */\n+\n+\n+#if   defined ( __CC_ARM )\n+  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */\n+  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */\n+  #define __STATIC_INLINE  static __inline\n+\n+#elif defined ( __ICCARM__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler          */\n+  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __TMS470__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler       */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __GNUC__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */\n+  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */\n+  #define __STATIC_INLINE  static inline\n+\n+#elif defined ( __TASKING__ )\n+  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */\n+  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */\n+  #define __STATIC_INLINE  static inline\n+\n+#endif\n+\n+/** __FPU_USED indicates whether an FPU is used or not. For this, __FPU_PRESENT has to be checked prior to making use of FPU specific registers and functions.\n+*/\n+#if defined ( __CC_ARM )\n+  #if defined __TARGET_FPU_VFP\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __ICCARM__ )\n+  #if defined __ARMVFP__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __TMS470__ )\n+  #if defined __TI_VFP_SUPPORT__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __GNUC__ )\n+  #if defined (__VFP_FP__) && !defined(__SOFTFP__)\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #warning \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+\n+#elif defined ( __TASKING__ )\n+  #if defined __FPU_VFP__\n+    #if (__FPU_PRESENT == 1)\n+      #define __FPU_USED       1\n+    #else\n+      #error \"Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)\"\n+      #define __FPU_USED       0\n+    #endif\n+  #else\n+    #define __FPU_USED         0\n+  #endif\n+#endif\n+\n+#include <stdint.h>                      /* standard types definitions                      */\n+#include <core_cmInstr.h>                /* Core Instruction Access                         */\n+#include <core_cmFunc.h>                 /* Core Function Access                            */\n+#include <core_cm4_simd.h>               /* Compiler specific SIMD Intrinsics               */\n+\n+#endif /* __CORE_CM4_H_GENERIC */\n+\n+#ifndef __CMSIS_GENERIC\n+\n+#ifndef __CORE_CM4_H_DEPENDANT\n+#define __CORE_CM4_H_DEPENDANT\n+\n+/* check device defines and use defaults */\n+#if defined __CHECK_DEVICE_DEFINES\n+  #ifndef __CM4_REV\n+    #define __CM4_REV               0x0000\n+    #warning \"__CM4_REV not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __FPU_PRESENT\n+    #define __FPU_PRESENT             0\n+    #warning \"__FPU_PRESENT not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __MPU_PRESENT\n+    #define __MPU_PRESENT             0\n+    #warning \"__MPU_PRESENT not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __NVIC_PRIO_BITS\n+    #define __NVIC_PRIO_BITS          4\n+    #warning \"__NVIC_PRIO_BITS not defined in device header file; using default!\"\n+  #endif\n+\n+  #ifndef __Vendor_SysTickConfig\n+    #define __Vendor_SysTickConfig    0\n+    #warning \"__Vendor_SysTickConfig not defined in device header file; using default!\"\n+  #endif\n+#endif\n+\n+/* IO definitions (access restrictions to peripheral registers) */\n+/**\n+    \\defgroup CMSIS_glob_defs CMSIS Global Defines\n+\n+    <strong>IO Type Qualifiers</strong> are used\n+    \\li to specify the access to peripheral variables.\n+    \\li for automatic generation of peripheral register debug information.\n+*/\n+#ifdef __cplusplus\n+  #define   __I     volatile             /*!< Defines 'read only' permissions                 */\n+#else\n+  #define   __I     volatile const       /*!< Defines 'read only' permissions                 */\n+#endif\n+#define     __O     volatile             /*!< Defines 'write only' permissions                */\n+#define     __IO    volatile             /*!< Defines 'read / write' permissions              */\n+\n+/*@} end of group Cortex_M4 */\n+\n+\n+\n+/*******************************************************************************\n+ *                 Register Abstraction\n+  Core Register contain:\n+  - Core Register\n+  - Core NVIC Register\n+  - Core SCB Register\n+  - Core SysTick Register\n+  - Core Debug Register\n+  - Core MPU Register\n+  - Core FPU Register\n+ ******************************************************************************/\n+/** \\defgroup CMSIS_core_register Defines and Type Definitions\n+    \\brief Type definitions and defines for Cortex-M processor based devices.\n+*/\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_CORE  Status and Control Registers\n+    \\brief  Core Register type definitions.\n+  @{\n+ */\n+\n+/** \\brief  Union type to access the Application Program Status Register (APSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+#if (__CORTEX_M != 0x04)\n+    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved                           */\n+#else\n+    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved                           */\n+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\n+    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved                           */\n+#endif\n+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\n+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\n+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\n+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\n+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} APSR_Type;\n+\n+\n+/** \\brief  Union type to access the Interrupt Program Status Register (IPSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\n+    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved                           */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} IPSR_Type;\n+\n+\n+/** \\brief  Union type to access the Special-Purpose Program Status Registers (xPSR).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */\n+#if (__CORTEX_M != 0x04)\n+    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved                           */\n+#else\n+    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved                           */\n+    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */\n+    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved                           */\n+#endif\n+    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0)          */\n+    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0)          */\n+    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */\n+    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */\n+    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */\n+    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */\n+    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} xPSR_Type;\n+\n+\n+/** \\brief  Union type to access the Control Registers (CONTROL).\n+ */\n+typedef union\n+{\n+  struct\n+  {\n+    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */\n+    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used                   */\n+    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag           */\n+    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved                           */\n+  } b;                                   /*!< Structure used for bit  access                  */\n+  uint32_t w;                            /*!< Type      used for word access                  */\n+} CONTROL_Type;\n+\n+/*@} end of group CMSIS_CORE */\n+\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)\n+    \\brief      Type definitions for the NVIC Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t ISER[8];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */\n+       uint32_t RESERVED0[24];\n+  __IO uint32_t ICER[8];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register         */\n+       uint32_t RSERVED1[24];\n+  __IO uint32_t ISPR[8];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register          */\n+       uint32_t RESERVED2[24];\n+  __IO uint32_t ICPR[8];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register        */\n+       uint32_t RESERVED3[24];\n+  __IO uint32_t IABR[8];                 /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register           */\n+       uint32_t RESERVED4[56];\n+  __IO uint8_t  IP[240];                 /*!< Offset: 0x300 (R/W)  Interrupt Priority Register (8Bit wide) */\n+       uint32_t RESERVED5[644];\n+  __O  uint32_t STIR;                    /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register     */\n+}  NVIC_Type;\n+\n+/* Software Triggered Interrupt Register Definitions */\n+#define NVIC_STIR_INTID_Pos                 0                                          /*!< STIR: INTLINESNUM Position */\n+#define NVIC_STIR_INTID_Msk                (0x1FFUL << NVIC_STIR_INTID_Pos)            /*!< STIR: INTLINESNUM Mask */\n+\n+/*@} end of group CMSIS_NVIC */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SCB     System Control Block (SCB)\n+    \\brief      Type definitions for the System Control Block Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Control Block (SCB).\n+ */\n+typedef struct\n+{\n+  __I  uint32_t CPUID;                   /*!< Offset: 0x000 (R/ )  CPUID Base Register                                   */\n+  __IO uint32_t ICSR;                    /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register                  */\n+  __IO uint32_t VTOR;                    /*!< Offset: 0x008 (R/W)  Vector Table Offset Register                          */\n+  __IO uint32_t AIRCR;                   /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register      */\n+  __IO uint32_t SCR;                     /*!< Offset: 0x010 (R/W)  System Control Register                               */\n+  __IO uint32_t CCR;                     /*!< Offset: 0x014 (R/W)  Configuration Control Register                        */\n+  __IO uint8_t  SHP[12];                 /*!< Offset: 0x018 (R/W)  System Handlers Priority Registers (4-7, 8-11, 12-15) */\n+  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State Register             */\n+  __IO uint32_t CFSR;                    /*!< Offset: 0x028 (R/W)  Configurable Fault Status Register                    */\n+  __IO uint32_t HFSR;                    /*!< Offset: 0x02C (R/W)  HardFault Status Register                             */\n+  __IO uint32_t DFSR;                    /*!< Offset: 0x030 (R/W)  Debug Fault Status Register                           */\n+  __IO uint32_t MMFAR;                   /*!< Offset: 0x034 (R/W)  MemManage Fault Address Register                      */\n+  __IO uint32_t BFAR;                    /*!< Offset: 0x038 (R/W)  BusFault Address Register                             */\n+  __IO uint32_t AFSR;                    /*!< Offset: 0x03C (R/W)  Auxiliary Fault Status Register                       */\n+  __I  uint32_t PFR[2];                  /*!< Offset: 0x040 (R/ )  Processor Feature Register                            */\n+  __I  uint32_t DFR;                     /*!< Offset: 0x048 (R/ )  Debug Feature Register                                */\n+  __I  uint32_t ADR;                     /*!< Offset: 0x04C (R/ )  Auxiliary Feature Register                            */\n+  __I  uint32_t MMFR[4];                 /*!< Offset: 0x050 (R/ )  Memory Model Feature Register                         */\n+  __I  uint32_t ISAR[5];                 /*!< Offset: 0x060 (R/ )  Instruction Set Attributes Register                   */\n+       uint32_t RESERVED0[5];\n+  __IO uint32_t CPACR;                   /*!< Offset: 0x088 (R/W)  Coprocessor Access Control Register                   */\n+} SCB_Type;\n+\n+/* SCB CPUID Register Definitions */\n+#define SCB_CPUID_IMPLEMENTER_Pos          24                                             /*!< SCB CPUID: IMPLEMENTER Position */\n+#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */\n+\n+#define SCB_CPUID_VARIANT_Pos              20                                             /*!< SCB CPUID: VARIANT Position */\n+#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */\n+\n+#define SCB_CPUID_ARCHITECTURE_Pos         16                                             /*!< SCB CPUID: ARCHITECTURE Position */\n+#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */\n+\n+#define SCB_CPUID_PARTNO_Pos                4                                             /*!< SCB CPUID: PARTNO Position */\n+#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */\n+\n+#define SCB_CPUID_REVISION_Pos              0                                             /*!< SCB CPUID: REVISION Position */\n+#define SCB_CPUID_REVISION_Msk             (0xFUL << SCB_CPUID_REVISION_Pos)              /*!< SCB CPUID: REVISION Mask */\n+\n+/* SCB Interrupt Control State Register Definitions */\n+#define SCB_ICSR_NMIPENDSET_Pos            31                                             /*!< SCB ICSR: NMIPENDSET Position */\n+#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */\n+\n+#define SCB_ICSR_PENDSVSET_Pos             28                                             /*!< SCB ICSR: PENDSVSET Position */\n+#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */\n+\n+#define SCB_ICSR_PENDSVCLR_Pos             27                                             /*!< SCB ICSR: PENDSVCLR Position */\n+#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */\n+\n+#define SCB_ICSR_PENDSTSET_Pos             26                                             /*!< SCB ICSR: PENDSTSET Position */\n+#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */\n+\n+#define SCB_ICSR_PENDSTCLR_Pos             25                                             /*!< SCB ICSR: PENDSTCLR Position */\n+#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */\n+\n+#define SCB_ICSR_ISRPREEMPT_Pos            23                                             /*!< SCB ICSR: ISRPREEMPT Position */\n+#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */\n+\n+#define SCB_ICSR_ISRPENDING_Pos            22                                             /*!< SCB ICSR: ISRPENDING Position */\n+#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */\n+\n+#define SCB_ICSR_VECTPENDING_Pos           12                                             /*!< SCB ICSR: VECTPENDING Position */\n+#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */\n+\n+#define SCB_ICSR_RETTOBASE_Pos             11                                             /*!< SCB ICSR: RETTOBASE Position */\n+#define SCB_ICSR_RETTOBASE_Msk             (1UL << SCB_ICSR_RETTOBASE_Pos)                /*!< SCB ICSR: RETTOBASE Mask */\n+\n+#define SCB_ICSR_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */\n+#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE Mask */\n+\n+/* SCB Vector Table Offset Register Definitions */\n+#define SCB_VTOR_TBLOFF_Pos                 7                                             /*!< SCB VTOR: TBLOFF Position */\n+#define SCB_VTOR_TBLOFF_Msk                (0x1FFFFFFUL << SCB_VTOR_TBLOFF_Pos)           /*!< SCB VTOR: TBLOFF Mask */\n+\n+/* SCB Application Interrupt and Reset Control Register Definitions */\n+#define SCB_AIRCR_VECTKEY_Pos              16                                             /*!< SCB AIRCR: VECTKEY Position */\n+#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */\n+\n+#define SCB_AIRCR_VECTKEYSTAT_Pos          16                                             /*!< SCB AIRCR: VECTKEYSTAT Position */\n+#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */\n+\n+#define SCB_AIRCR_ENDIANESS_Pos            15                                             /*!< SCB AIRCR: ENDIANESS Position */\n+#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */\n+\n+#define SCB_AIRCR_PRIGROUP_Pos              8                                             /*!< SCB AIRCR: PRIGROUP Position */\n+#define SCB_AIRCR_PRIGROUP_Msk             (7UL << SCB_AIRCR_PRIGROUP_Pos)                /*!< SCB AIRCR: PRIGROUP Mask */\n+\n+#define SCB_AIRCR_SYSRESETREQ_Pos           2                                             /*!< SCB AIRCR: SYSRESETREQ Position */\n+#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */\n+\n+#define SCB_AIRCR_VECTCLRACTIVE_Pos         1                                             /*!< SCB AIRCR: VECTCLRACTIVE Position */\n+#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */\n+\n+#define SCB_AIRCR_VECTRESET_Pos             0                                             /*!< SCB AIRCR: VECTRESET Position */\n+#define SCB_AIRCR_VECTRESET_Msk            (1UL << SCB_AIRCR_VECTRESET_Pos)               /*!< SCB AIRCR: VECTRESET Mask */\n+\n+/* SCB System Control Register Definitions */\n+#define SCB_SCR_SEVONPEND_Pos               4                                             /*!< SCB SCR: SEVONPEND Position */\n+#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */\n+\n+#define SCB_SCR_SLEEPDEEP_Pos               2                                             /*!< SCB SCR: SLEEPDEEP Position */\n+#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */\n+\n+#define SCB_SCR_SLEEPONEXIT_Pos             1                                             /*!< SCB SCR: SLEEPONEXIT Position */\n+#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */\n+\n+/* SCB Configuration Control Register Definitions */\n+#define SCB_CCR_STKALIGN_Pos                9                                             /*!< SCB CCR: STKALIGN Position */\n+#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */\n+\n+#define SCB_CCR_BFHFNMIGN_Pos               8                                             /*!< SCB CCR: BFHFNMIGN Position */\n+#define SCB_CCR_BFHFNMIGN_Msk              (1UL << SCB_CCR_BFHFNMIGN_Pos)                 /*!< SCB CCR: BFHFNMIGN Mask */\n+\n+#define SCB_CCR_DIV_0_TRP_Pos               4                                             /*!< SCB CCR: DIV_0_TRP Position */\n+#define SCB_CCR_DIV_0_TRP_Msk              (1UL << SCB_CCR_DIV_0_TRP_Pos)                 /*!< SCB CCR: DIV_0_TRP Mask */\n+\n+#define SCB_CCR_UNALIGN_TRP_Pos             3                                             /*!< SCB CCR: UNALIGN_TRP Position */\n+#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */\n+\n+#define SCB_CCR_USERSETMPEND_Pos            1                                             /*!< SCB CCR: USERSETMPEND Position */\n+#define SCB_CCR_USERSETMPEND_Msk           (1UL << SCB_CCR_USERSETMPEND_Pos)              /*!< SCB CCR: USERSETMPEND Mask */\n+\n+#define SCB_CCR_NONBASETHRDENA_Pos          0                                             /*!< SCB CCR: NONBASETHRDENA Position */\n+#define SCB_CCR_NONBASETHRDENA_Msk         (1UL << SCB_CCR_NONBASETHRDENA_Pos)            /*!< SCB CCR: NONBASETHRDENA Mask */\n+\n+/* SCB System Handler Control and State Register Definitions */\n+#define SCB_SHCSR_USGFAULTENA_Pos          18                                             /*!< SCB SHCSR: USGFAULTENA Position */\n+#define SCB_SHCSR_USGFAULTENA_Msk          (1UL << SCB_SHCSR_USGFAULTENA_Pos)             /*!< SCB SHCSR: USGFAULTENA Mask */\n+\n+#define SCB_SHCSR_BUSFAULTENA_Pos          17                                             /*!< SCB SHCSR: BUSFAULTENA Position */\n+#define SCB_SHCSR_BUSFAULTENA_Msk          (1UL << SCB_SHCSR_BUSFAULTENA_Pos)             /*!< SCB SHCSR: BUSFAULTENA Mask */\n+\n+#define SCB_SHCSR_MEMFAULTENA_Pos          16                                             /*!< SCB SHCSR: MEMFAULTENA Position */\n+#define SCB_SHCSR_MEMFAULTENA_Msk          (1UL << SCB_SHCSR_MEMFAULTENA_Pos)             /*!< SCB SHCSR: MEMFAULTENA Mask */\n+\n+#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */\n+#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */\n+\n+#define SCB_SHCSR_BUSFAULTPENDED_Pos       14                                             /*!< SCB SHCSR: BUSFAULTPENDED Position */\n+#define SCB_SHCSR_BUSFAULTPENDED_Msk       (1UL << SCB_SHCSR_BUSFAULTPENDED_Pos)          /*!< SCB SHCSR: BUSFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_MEMFAULTPENDED_Pos       13                                             /*!< SCB SHCSR: MEMFAULTPENDED Position */\n+#define SCB_SHCSR_MEMFAULTPENDED_Msk       (1UL << SCB_SHCSR_MEMFAULTPENDED_Pos)          /*!< SCB SHCSR: MEMFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_USGFAULTPENDED_Pos       12                                             /*!< SCB SHCSR: USGFAULTPENDED Position */\n+#define SCB_SHCSR_USGFAULTPENDED_Msk       (1UL << SCB_SHCSR_USGFAULTPENDED_Pos)          /*!< SCB SHCSR: USGFAULTPENDED Mask */\n+\n+#define SCB_SHCSR_SYSTICKACT_Pos           11                                             /*!< SCB SHCSR: SYSTICKACT Position */\n+#define SCB_SHCSR_SYSTICKACT_Msk           (1UL << SCB_SHCSR_SYSTICKACT_Pos)              /*!< SCB SHCSR: SYSTICKACT Mask */\n+\n+#define SCB_SHCSR_PENDSVACT_Pos            10                                             /*!< SCB SHCSR: PENDSVACT Position */\n+#define SCB_SHCSR_PENDSVACT_Msk            (1UL << SCB_SHCSR_PENDSVACT_Pos)               /*!< SCB SHCSR: PENDSVACT Mask */\n+\n+#define SCB_SHCSR_MONITORACT_Pos            8                                             /*!< SCB SHCSR: MONITORACT Position */\n+#define SCB_SHCSR_MONITORACT_Msk           (1UL << SCB_SHCSR_MONITORACT_Pos)              /*!< SCB SHCSR: MONITORACT Mask */\n+\n+#define SCB_SHCSR_SVCALLACT_Pos             7                                             /*!< SCB SHCSR: SVCALLACT Position */\n+#define SCB_SHCSR_SVCALLACT_Msk            (1UL << SCB_SHCSR_SVCALLACT_Pos)               /*!< SCB SHCSR: SVCALLACT Mask */\n+\n+#define SCB_SHCSR_USGFAULTACT_Pos           3                                             /*!< SCB SHCSR: USGFAULTACT Position */\n+#define SCB_SHCSR_USGFAULTACT_Msk          (1UL << SCB_SHCSR_USGFAULTACT_Pos)             /*!< SCB SHCSR: USGFAULTACT Mask */\n+\n+#define SCB_SHCSR_BUSFAULTACT_Pos           1                                             /*!< SCB SHCSR: BUSFAULTACT Position */\n+#define SCB_SHCSR_BUSFAULTACT_Msk          (1UL << SCB_SHCSR_BUSFAULTACT_Pos)             /*!< SCB SHCSR: BUSFAULTACT Mask */\n+\n+#define SCB_SHCSR_MEMFAULTACT_Pos           0                                             /*!< SCB SHCSR: MEMFAULTACT Position */\n+#define SCB_SHCSR_MEMFAULTACT_Msk          (1UL << SCB_SHCSR_MEMFAULTACT_Pos)             /*!< SCB SHCSR: MEMFAULTACT Mask */\n+\n+/* SCB Configurable Fault Status Registers Definitions */\n+#define SCB_CFSR_USGFAULTSR_Pos            16                                             /*!< SCB CFSR: Usage Fault Status Register Position */\n+#define SCB_CFSR_USGFAULTSR_Msk            (0xFFFFUL << SCB_CFSR_USGFAULTSR_Pos)          /*!< SCB CFSR: Usage Fault Status Register Mask */\n+\n+#define SCB_CFSR_BUSFAULTSR_Pos             8                                             /*!< SCB CFSR: Bus Fault Status Register Position */\n+#define SCB_CFSR_BUSFAULTSR_Msk            (0xFFUL << SCB_CFSR_BUSFAULTSR_Pos)            /*!< SCB CFSR: Bus Fault Status Register Mask */\n+\n+#define SCB_CFSR_MEMFAULTSR_Pos             0                                             /*!< SCB CFSR: Memory Manage Fault Status Register Position */\n+#define SCB_CFSR_MEMFAULTSR_Msk            (0xFFUL << SCB_CFSR_MEMFAULTSR_Pos)            /*!< SCB CFSR: Memory Manage Fault Status Register Mask */\n+\n+/* SCB Hard Fault Status Registers Definitions */\n+#define SCB_HFSR_DEBUGEVT_Pos              31                                             /*!< SCB HFSR: DEBUGEVT Position */\n+#define SCB_HFSR_DEBUGEVT_Msk              (1UL << SCB_HFSR_DEBUGEVT_Pos)                 /*!< SCB HFSR: DEBUGEVT Mask */\n+\n+#define SCB_HFSR_FORCED_Pos                30                                             /*!< SCB HFSR: FORCED Position */\n+#define SCB_HFSR_FORCED_Msk                (1UL << SCB_HFSR_FORCED_Pos)                   /*!< SCB HFSR: FORCED Mask */\n+\n+#define SCB_HFSR_VECTTBL_Pos                1                                             /*!< SCB HFSR: VECTTBL Position */\n+#define SCB_HFSR_VECTTBL_Msk               (1UL << SCB_HFSR_VECTTBL_Pos)                  /*!< SCB HFSR: VECTTBL Mask */\n+\n+/* SCB Debug Fault Status Register Definitions */\n+#define SCB_DFSR_EXTERNAL_Pos               4                                             /*!< SCB DFSR: EXTERNAL Position */\n+#define SCB_DFSR_EXTERNAL_Msk              (1UL << SCB_DFSR_EXTERNAL_Pos)                 /*!< SCB DFSR: EXTERNAL Mask */\n+\n+#define SCB_DFSR_VCATCH_Pos                 3                                             /*!< SCB DFSR: VCATCH Position */\n+#define SCB_DFSR_VCATCH_Msk                (1UL << SCB_DFSR_VCATCH_Pos)                   /*!< SCB DFSR: VCATCH Mask */\n+\n+#define SCB_DFSR_DWTTRAP_Pos                2                                             /*!< SCB DFSR: DWTTRAP Position */\n+#define SCB_DFSR_DWTTRAP_Msk               (1UL << SCB_DFSR_DWTTRAP_Pos)                  /*!< SCB DFSR: DWTTRAP Mask */\n+\n+#define SCB_DFSR_BKPT_Pos                   1                                             /*!< SCB DFSR: BKPT Position */\n+#define SCB_DFSR_BKPT_Msk                  (1UL << SCB_DFSR_BKPT_Pos)                     /*!< SCB DFSR: BKPT Mask */\n+\n+#define SCB_DFSR_HALTED_Pos                 0                                             /*!< SCB DFSR: HALTED Position */\n+#define SCB_DFSR_HALTED_Msk                (1UL << SCB_DFSR_HALTED_Pos)                   /*!< SCB DFSR: HALTED Mask */\n+\n+/*@} end of group CMSIS_SCB */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SCnSCB System Controls not in SCB (SCnSCB)\n+    \\brief      Type definitions for the System Control and ID Register not in the SCB\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Control and ID Register not in the SCB.\n+ */\n+typedef struct\n+{\n+       uint32_t RESERVED0[1];\n+  __I  uint32_t ICTR;                    /*!< Offset: 0x004 (R/ )  Interrupt Controller Type Register      */\n+  __IO uint32_t ACTLR;                   /*!< Offset: 0x008 (R/W)  Auxiliary Control Register              */\n+} SCnSCB_Type;\n+\n+/* Interrupt Controller Type Register Definitions */\n+#define SCnSCB_ICTR_INTLINESNUM_Pos         0                                          /*!< ICTR: INTLINESNUM Position */\n+#define SCnSCB_ICTR_INTLINESNUM_Msk        (0xFUL << SCnSCB_ICTR_INTLINESNUM_Pos)      /*!< ICTR: INTLINESNUM Mask */\n+\n+/* Auxiliary Control Register Definitions */\n+#define SCnSCB_ACTLR_DISOOFP_Pos            9                                          /*!< ACTLR: DISOOFP Position */\n+#define SCnSCB_ACTLR_DISOOFP_Msk           (1UL << SCnSCB_ACTLR_DISOOFP_Pos)           /*!< ACTLR: DISOOFP Mask */\n+\n+#define SCnSCB_ACTLR_DISFPCA_Pos            8                                          /*!< ACTLR: DISFPCA Position */\n+#define SCnSCB_ACTLR_DISFPCA_Msk           (1UL << SCnSCB_ACTLR_DISFPCA_Pos)           /*!< ACTLR: DISFPCA Mask */\n+\n+#define SCnSCB_ACTLR_DISFOLD_Pos            2                                          /*!< ACTLR: DISFOLD Position */\n+#define SCnSCB_ACTLR_DISFOLD_Msk           (1UL << SCnSCB_ACTLR_DISFOLD_Pos)           /*!< ACTLR: DISFOLD Mask */\n+\n+#define SCnSCB_ACTLR_DISDEFWBUF_Pos         1                                          /*!< ACTLR: DISDEFWBUF Position */\n+#define SCnSCB_ACTLR_DISDEFWBUF_Msk        (1UL << SCnSCB_ACTLR_DISDEFWBUF_Pos)        /*!< ACTLR: DISDEFWBUF Mask */\n+\n+#define SCnSCB_ACTLR_DISMCYCINT_Pos         0                                          /*!< ACTLR: DISMCYCINT Position */\n+#define SCnSCB_ACTLR_DISMCYCINT_Msk        (1UL << SCnSCB_ACTLR_DISMCYCINT_Pos)        /*!< ACTLR: DISMCYCINT Mask */\n+\n+/*@} end of group CMSIS_SCnotSCB */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_SysTick     System Tick Timer (SysTick)\n+    \\brief      Type definitions for the System Timer Registers.\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the System Timer (SysTick).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */\n+  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */\n+  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */\n+  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */\n+} SysTick_Type;\n+\n+/* SysTick Control / Status Register Definitions */\n+#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */\n+#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */\n+\n+#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */\n+#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */\n+\n+#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */\n+#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */\n+\n+#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */\n+#define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */\n+\n+/* SysTick Reload Register Definitions */\n+#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */\n+#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */\n+\n+/* SysTick Current Register Definitions */\n+#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */\n+#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */\n+\n+/* SysTick Calibration Register Definitions */\n+#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */\n+#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */\n+\n+#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */\n+#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */\n+\n+#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */\n+#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick CALIB: TENMS Mask */\n+\n+/*@} end of group CMSIS_SysTick */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_ITM     Instrumentation Trace Macrocell (ITM)\n+    \\brief      Type definitions for the Instrumentation Trace Macrocell (ITM)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Instrumentation Trace Macrocell Register (ITM).\n+ */\n+typedef struct\n+{\n+  __O  union\n+  {\n+    __O  uint8_t    u8;                  /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 8-bit                   */\n+    __O  uint16_t   u16;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 16-bit                  */\n+    __O  uint32_t   u32;                 /*!< Offset: 0x000 ( /W)  ITM Stimulus Port 32-bit                  */\n+  }  PORT [32];                          /*!< Offset: 0x000 ( /W)  ITM Stimulus Port Registers               */\n+       uint32_t RESERVED0[864];\n+  __IO uint32_t TER;                     /*!< Offset: 0xE00 (R/W)  ITM Trace Enable Register                 */\n+       uint32_t RESERVED1[15];\n+  __IO uint32_t TPR;                     /*!< Offset: 0xE40 (R/W)  ITM Trace Privilege Register              */\n+       uint32_t RESERVED2[15];\n+  __IO uint32_t TCR;                     /*!< Offset: 0xE80 (R/W)  ITM Trace Control Register                */\n+       uint32_t RESERVED3[29];\n+  __O  uint32_t IWR;                     /*!< Offset: 0xEF8 ( /W)  ITM Integration Write Register            */\n+  __I  uint32_t IRR;                     /*!< Offset: 0xEFC (R/ )  ITM Integration Read Register             */\n+  __IO uint32_t IMCR;                    /*!< Offset: 0xF00 (R/W)  ITM Integration Mode Control Register     */\n+       uint32_t RESERVED4[43];\n+  __O  uint32_t LAR;                     /*!< Offset: 0xFB0 ( /W)  ITM Lock Access Register                  */\n+  __I  uint32_t LSR;                     /*!< Offset: 0xFB4 (R/ )  ITM Lock Status Register                  */\n+       uint32_t RESERVED5[6];\n+  __I  uint32_t PID4;                    /*!< Offset: 0xFD0 (R/ )  ITM Peripheral Identification Register #4 */\n+  __I  uint32_t PID5;                    /*!< Offset: 0xFD4 (R/ )  ITM Peripheral Identification Register #5 */\n+  __I  uint32_t PID6;                    /*!< Offset: 0xFD8 (R/ )  ITM Peripheral Identification Register #6 */\n+  __I  uint32_t PID7;                    /*!< Offset: 0xFDC (R/ )  ITM Peripheral Identification Register #7 */\n+  __I  uint32_t PID0;                    /*!< Offset: 0xFE0 (R/ )  ITM Peripheral Identification Register #0 */\n+  __I  uint32_t PID1;                    /*!< Offset: 0xFE4 (R/ )  ITM Peripheral Identification Register #1 */\n+  __I  uint32_t PID2;                    /*!< Offset: 0xFE8 (R/ )  ITM Peripheral Identification Register #2 */\n+  __I  uint32_t PID3;                    /*!< Offset: 0xFEC (R/ )  ITM Peripheral Identification Register #3 */\n+  __I  uint32_t CID0;                    /*!< Offset: 0xFF0 (R/ )  ITM Component  Identification Register #0 */\n+  __I  uint32_t CID1;                    /*!< Offset: 0xFF4 (R/ )  ITM Component  Identification Register #1 */\n+  __I  uint32_t CID2;                    /*!< Offset: 0xFF8 (R/ )  ITM Component  Identification Register #2 */\n+  __I  uint32_t CID3;                    /*!< Offset: 0xFFC (R/ )  ITM Component  Identification Register #3 */\n+} ITM_Type;\n+\n+/* ITM Trace Privilege Register Definitions */\n+#define ITM_TPR_PRIVMASK_Pos                0                                             /*!< ITM TPR: PRIVMASK Position */\n+#define ITM_TPR_PRIVMASK_Msk               (0xFUL << ITM_TPR_PRIVMASK_Pos)                /*!< ITM TPR: PRIVMASK Mask */\n+\n+/* ITM Trace Control Register Definitions */\n+#define ITM_TCR_BUSY_Pos                   23                                             /*!< ITM TCR: BUSY Position */\n+#define ITM_TCR_BUSY_Msk                   (1UL << ITM_TCR_BUSY_Pos)                      /*!< ITM TCR: BUSY Mask */\n+\n+#define ITM_TCR_TraceBusID_Pos             16                                             /*!< ITM TCR: ATBID Position */\n+#define ITM_TCR_TraceBusID_Msk             (0x7FUL << ITM_TCR_TraceBusID_Pos)             /*!< ITM TCR: ATBID Mask */\n+\n+#define ITM_TCR_GTSFREQ_Pos                10                                             /*!< ITM TCR: Global timestamp frequency Position */\n+#define ITM_TCR_GTSFREQ_Msk                (3UL << ITM_TCR_GTSFREQ_Pos)                   /*!< ITM TCR: Global timestamp frequency Mask */\n+\n+#define ITM_TCR_TSPrescale_Pos              8                                             /*!< ITM TCR: TSPrescale Position */\n+#define ITM_TCR_TSPrescale_Msk             (3UL << ITM_TCR_TSPrescale_Pos)                /*!< ITM TCR: TSPrescale Mask */\n+\n+#define ITM_TCR_SWOENA_Pos                  4                                             /*!< ITM TCR: SWOENA Position */\n+#define ITM_TCR_SWOENA_Msk                 (1UL << ITM_TCR_SWOENA_Pos)                    /*!< ITM TCR: SWOENA Mask */\n+\n+#define ITM_TCR_DWTENA_Pos                  3                                             /*!< ITM TCR: DWTENA Position */\n+#define ITM_TCR_DWTENA_Msk                 (1UL << ITM_TCR_DWTENA_Pos)                    /*!< ITM TCR: DWTENA Mask */\n+\n+#define ITM_TCR_SYNCENA_Pos                 2                                             /*!< ITM TCR: SYNCENA Position */\n+#define ITM_TCR_SYNCENA_Msk                (1UL << ITM_TCR_SYNCENA_Pos)                   /*!< ITM TCR: SYNCENA Mask */\n+\n+#define ITM_TCR_TSENA_Pos                   1                                             /*!< ITM TCR: TSENA Position */\n+#define ITM_TCR_TSENA_Msk                  (1UL << ITM_TCR_TSENA_Pos)                     /*!< ITM TCR: TSENA Mask */\n+\n+#define ITM_TCR_ITMENA_Pos                  0                                             /*!< ITM TCR: ITM Enable bit Position */\n+#define ITM_TCR_ITMENA_Msk                 (1UL << ITM_TCR_ITMENA_Pos)                    /*!< ITM TCR: ITM Enable bit Mask */\n+\n+/* ITM Integration Write Register Definitions */\n+#define ITM_IWR_ATVALIDM_Pos                0                                             /*!< ITM IWR: ATVALIDM Position */\n+#define ITM_IWR_ATVALIDM_Msk               (1UL << ITM_IWR_ATVALIDM_Pos)                  /*!< ITM IWR: ATVALIDM Mask */\n+\n+/* ITM Integration Read Register Definitions */\n+#define ITM_IRR_ATREADYM_Pos                0                                             /*!< ITM IRR: ATREADYM Position */\n+#define ITM_IRR_ATREADYM_Msk               (1UL << ITM_IRR_ATREADYM_Pos)                  /*!< ITM IRR: ATREADYM Mask */\n+\n+/* ITM Integration Mode Control Register Definitions */\n+#define ITM_IMCR_INTEGRATION_Pos            0                                             /*!< ITM IMCR: INTEGRATION Position */\n+#define ITM_IMCR_INTEGRATION_Msk           (1UL << ITM_IMCR_INTEGRATION_Pos)              /*!< ITM IMCR: INTEGRATION Mask */\n+\n+/* ITM Lock Status Register Definitions */\n+#define ITM_LSR_ByteAcc_Pos                 2                                             /*!< ITM LSR: ByteAcc Position */\n+#define ITM_LSR_ByteAcc_Msk                (1UL << ITM_LSR_ByteAcc_Pos)                   /*!< ITM LSR: ByteAcc Mask */\n+\n+#define ITM_LSR_Access_Pos                  1                                             /*!< ITM LSR: Access Position */\n+#define ITM_LSR_Access_Msk                 (1UL << ITM_LSR_Access_Pos)                    /*!< ITM LSR: Access Mask */\n+\n+#define ITM_LSR_Present_Pos                 0                                             /*!< ITM LSR: Present Position */\n+#define ITM_LSR_Present_Msk                (1UL << ITM_LSR_Present_Pos)                   /*!< ITM LSR: Present Mask */\n+\n+/*@}*/ /* end of group CMSIS_ITM */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_DWT     Data Watchpoint and Trace (DWT)\n+    \\brief      Type definitions for the Data Watchpoint and Trace (DWT)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Data Watchpoint and Trace Register (DWT).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  Control Register                          */\n+  __IO uint32_t CYCCNT;                  /*!< Offset: 0x004 (R/W)  Cycle Count Register                      */\n+  __IO uint32_t CPICNT;                  /*!< Offset: 0x008 (R/W)  CPI Count Register                        */\n+  __IO uint32_t EXCCNT;                  /*!< Offset: 0x00C (R/W)  Exception Overhead Count Register         */\n+  __IO uint32_t SLEEPCNT;                /*!< Offset: 0x010 (R/W)  Sleep Count Register                      */\n+  __IO uint32_t LSUCNT;                  /*!< Offset: 0x014 (R/W)  LSU Count Register                        */\n+  __IO uint32_t FOLDCNT;                 /*!< Offset: 0x018 (R/W)  Folded-instruction Count Register         */\n+  __I  uint32_t PCSR;                    /*!< Offset: 0x01C (R/ )  Program Counter Sample Register           */\n+  __IO uint32_t COMP0;                   /*!< Offset: 0x020 (R/W)  Comparator Register 0                     */\n+  __IO uint32_t MASK0;                   /*!< Offset: 0x024 (R/W)  Mask Register 0                           */\n+  __IO uint32_t FUNCTION0;               /*!< Offset: 0x028 (R/W)  Function Register 0                       */\n+       uint32_t RESERVED0[1];\n+  __IO uint32_t COMP1;                   /*!< Offset: 0x030 (R/W)  Comparator Register 1                     */\n+  __IO uint32_t MASK1;                   /*!< Offset: 0x034 (R/W)  Mask Register 1                           */\n+  __IO uint32_t FUNCTION1;               /*!< Offset: 0x038 (R/W)  Function Register 1                       */\n+       uint32_t RESERVED1[1];\n+  __IO uint32_t COMP2;                   /*!< Offset: 0x040 (R/W)  Comparator Register 2                     */\n+  __IO uint32_t MASK2;                   /*!< Offset: 0x044 (R/W)  Mask Register 2                           */\n+  __IO uint32_t FUNCTION2;               /*!< Offset: 0x048 (R/W)  Function Register 2                       */\n+       uint32_t RESERVED2[1];\n+  __IO uint32_t COMP3;                   /*!< Offset: 0x050 (R/W)  Comparator Register 3                     */\n+  __IO uint32_t MASK3;                   /*!< Offset: 0x054 (R/W)  Mask Register 3                           */\n+  __IO uint32_t FUNCTION3;               /*!< Offset: 0x058 (R/W)  Function Register 3                       */\n+} DWT_Type;\n+\n+/* DWT Control Register Definitions */\n+#define DWT_CTRL_NUMCOMP_Pos               28                                          /*!< DWT CTRL: NUMCOMP Position */\n+#define DWT_CTRL_NUMCOMP_Msk               (0xFUL << DWT_CTRL_NUMCOMP_Pos)             /*!< DWT CTRL: NUMCOMP Mask */\n+\n+#define DWT_CTRL_NOTRCPKT_Pos              27                                          /*!< DWT CTRL: NOTRCPKT Position */\n+#define DWT_CTRL_NOTRCPKT_Msk              (0x1UL << DWT_CTRL_NOTRCPKT_Pos)            /*!< DWT CTRL: NOTRCPKT Mask */\n+\n+#define DWT_CTRL_NOEXTTRIG_Pos             26                                          /*!< DWT CTRL: NOEXTTRIG Position */\n+#define DWT_CTRL_NOEXTTRIG_Msk             (0x1UL << DWT_CTRL_NOEXTTRIG_Pos)           /*!< DWT CTRL: NOEXTTRIG Mask */\n+\n+#define DWT_CTRL_NOCYCCNT_Pos              25                                          /*!< DWT CTRL: NOCYCCNT Position */\n+#define DWT_CTRL_NOCYCCNT_Msk              (0x1UL << DWT_CTRL_NOCYCCNT_Pos)            /*!< DWT CTRL: NOCYCCNT Mask */\n+\n+#define DWT_CTRL_NOPRFCNT_Pos              24                                          /*!< DWT CTRL: NOPRFCNT Position */\n+#define DWT_CTRL_NOPRFCNT_Msk              (0x1UL << DWT_CTRL_NOPRFCNT_Pos)            /*!< DWT CTRL: NOPRFCNT Mask */\n+\n+#define DWT_CTRL_CYCEVTENA_Pos             22                                          /*!< DWT CTRL: CYCEVTENA Position */\n+#define DWT_CTRL_CYCEVTENA_Msk             (0x1UL << DWT_CTRL_CYCEVTENA_Pos)           /*!< DWT CTRL: CYCEVTENA Mask */\n+\n+#define DWT_CTRL_FOLDEVTENA_Pos            21                                          /*!< DWT CTRL: FOLDEVTENA Position */\n+#define DWT_CTRL_FOLDEVTENA_Msk            (0x1UL << DWT_CTRL_FOLDEVTENA_Pos)          /*!< DWT CTRL: FOLDEVTENA Mask */\n+\n+#define DWT_CTRL_LSUEVTENA_Pos             20                                          /*!< DWT CTRL: LSUEVTENA Position */\n+#define DWT_CTRL_LSUEVTENA_Msk             (0x1UL << DWT_CTRL_LSUEVTENA_Pos)           /*!< DWT CTRL: LSUEVTENA Mask */\n+\n+#define DWT_CTRL_SLEEPEVTENA_Pos           19                                          /*!< DWT CTRL: SLEEPEVTENA Position */\n+#define DWT_CTRL_SLEEPEVTENA_Msk           (0x1UL << DWT_CTRL_SLEEPEVTENA_Pos)         /*!< DWT CTRL: SLEEPEVTENA Mask */\n+\n+#define DWT_CTRL_EXCEVTENA_Pos             18                                          /*!< DWT CTRL: EXCEVTENA Position */\n+#define DWT_CTRL_EXCEVTENA_Msk             (0x1UL << DWT_CTRL_EXCEVTENA_Pos)           /*!< DWT CTRL: EXCEVTENA Mask */\n+\n+#define DWT_CTRL_CPIEVTENA_Pos             17                                          /*!< DWT CTRL: CPIEVTENA Position */\n+#define DWT_CTRL_CPIEVTENA_Msk             (0x1UL << DWT_CTRL_CPIEVTENA_Pos)           /*!< DWT CTRL: CPIEVTENA Mask */\n+\n+#define DWT_CTRL_EXCTRCENA_Pos             16                                          /*!< DWT CTRL: EXCTRCENA Position */\n+#define DWT_CTRL_EXCTRCENA_Msk             (0x1UL << DWT_CTRL_EXCTRCENA_Pos)           /*!< DWT CTRL: EXCTRCENA Mask */\n+\n+#define DWT_CTRL_PCSAMPLENA_Pos            12                                          /*!< DWT CTRL: PCSAMPLENA Position */\n+#define DWT_CTRL_PCSAMPLENA_Msk            (0x1UL << DWT_CTRL_PCSAMPLENA_Pos)          /*!< DWT CTRL: PCSAMPLENA Mask */\n+\n+#define DWT_CTRL_SYNCTAP_Pos               10                                          /*!< DWT CTRL: SYNCTAP Position */\n+#define DWT_CTRL_SYNCTAP_Msk               (0x3UL << DWT_CTRL_SYNCTAP_Pos)             /*!< DWT CTRL: SYNCTAP Mask */\n+\n+#define DWT_CTRL_CYCTAP_Pos                 9                                          /*!< DWT CTRL: CYCTAP Position */\n+#define DWT_CTRL_CYCTAP_Msk                (0x1UL << DWT_CTRL_CYCTAP_Pos)              /*!< DWT CTRL: CYCTAP Mask */\n+\n+#define DWT_CTRL_POSTINIT_Pos               5                                          /*!< DWT CTRL: POSTINIT Position */\n+#define DWT_CTRL_POSTINIT_Msk              (0xFUL << DWT_CTRL_POSTINIT_Pos)            /*!< DWT CTRL: POSTINIT Mask */\n+\n+#define DWT_CTRL_POSTPRESET_Pos             1                                          /*!< DWT CTRL: POSTPRESET Position */\n+#define DWT_CTRL_POSTPRESET_Msk            (0xFUL << DWT_CTRL_POSTPRESET_Pos)          /*!< DWT CTRL: POSTPRESET Mask */\n+\n+#define DWT_CTRL_CYCCNTENA_Pos              0                                          /*!< DWT CTRL: CYCCNTENA Position */\n+#define DWT_CTRL_CYCCNTENA_Msk             (0x1UL << DWT_CTRL_CYCCNTENA_Pos)           /*!< DWT CTRL: CYCCNTENA Mask */\n+\n+/* DWT CPI Count Register Definitions */\n+#define DWT_CPICNT_CPICNT_Pos               0                                          /*!< DWT CPICNT: CPICNT Position */\n+#define DWT_CPICNT_CPICNT_Msk              (0xFFUL << DWT_CPICNT_CPICNT_Pos)           /*!< DWT CPICNT: CPICNT Mask */\n+\n+/* DWT Exception Overhead Count Register Definitions */\n+#define DWT_EXCCNT_EXCCNT_Pos               0                                          /*!< DWT EXCCNT: EXCCNT Position */\n+#define DWT_EXCCNT_EXCCNT_Msk              (0xFFUL << DWT_EXCCNT_EXCCNT_Pos)           /*!< DWT EXCCNT: EXCCNT Mask */\n+\n+/* DWT Sleep Count Register Definitions */\n+#define DWT_SLEEPCNT_SLEEPCNT_Pos           0                                          /*!< DWT SLEEPCNT: SLEEPCNT Position */\n+#define DWT_SLEEPCNT_SLEEPCNT_Msk          (0xFFUL << DWT_SLEEPCNT_SLEEPCNT_Pos)       /*!< DWT SLEEPCNT: SLEEPCNT Mask */\n+\n+/* DWT LSU Count Register Definitions */\n+#define DWT_LSUCNT_LSUCNT_Pos               0                                          /*!< DWT LSUCNT: LSUCNT Position */\n+#define DWT_LSUCNT_LSUCNT_Msk              (0xFFUL << DWT_LSUCNT_LSUCNT_Pos)           /*!< DWT LSUCNT: LSUCNT Mask */\n+\n+/* DWT Folded-instruction Count Register Definitions */\n+#define DWT_FOLDCNT_FOLDCNT_Pos             0                                          /*!< DWT FOLDCNT: FOLDCNT Position */\n+#define DWT_FOLDCNT_FOLDCNT_Msk            (0xFFUL << DWT_FOLDCNT_FOLDCNT_Pos)         /*!< DWT FOLDCNT: FOLDCNT Mask */\n+\n+/* DWT Comparator Mask Register Definitions */\n+#define DWT_MASK_MASK_Pos                   0                                          /*!< DWT MASK: MASK Position */\n+#define DWT_MASK_MASK_Msk                  (0x1FUL << DWT_MASK_MASK_Pos)               /*!< DWT MASK: MASK Mask */\n+\n+/* DWT Comparator Function Register Definitions */\n+#define DWT_FUNCTION_MATCHED_Pos           24                                          /*!< DWT FUNCTION: MATCHED Position */\n+#define DWT_FUNCTION_MATCHED_Msk           (0x1UL << DWT_FUNCTION_MATCHED_Pos)         /*!< DWT FUNCTION: MATCHED Mask */\n+\n+#define DWT_FUNCTION_DATAVADDR1_Pos        16                                          /*!< DWT FUNCTION: DATAVADDR1 Position */\n+#define DWT_FUNCTION_DATAVADDR1_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR1_Pos)      /*!< DWT FUNCTION: DATAVADDR1 Mask */\n+\n+#define DWT_FUNCTION_DATAVADDR0_Pos        12                                          /*!< DWT FUNCTION: DATAVADDR0 Position */\n+#define DWT_FUNCTION_DATAVADDR0_Msk        (0xFUL << DWT_FUNCTION_DATAVADDR0_Pos)      /*!< DWT FUNCTION: DATAVADDR0 Mask */\n+\n+#define DWT_FUNCTION_DATAVSIZE_Pos         10                                          /*!< DWT FUNCTION: DATAVSIZE Position */\n+#define DWT_FUNCTION_DATAVSIZE_Msk         (0x3UL << DWT_FUNCTION_DATAVSIZE_Pos)       /*!< DWT FUNCTION: DATAVSIZE Mask */\n+\n+#define DWT_FUNCTION_LNK1ENA_Pos            9                                          /*!< DWT FUNCTION: LNK1ENA Position */\n+#define DWT_FUNCTION_LNK1ENA_Msk           (0x1UL << DWT_FUNCTION_LNK1ENA_Pos)         /*!< DWT FUNCTION: LNK1ENA Mask */\n+\n+#define DWT_FUNCTION_DATAVMATCH_Pos         8                                          /*!< DWT FUNCTION: DATAVMATCH Position */\n+#define DWT_FUNCTION_DATAVMATCH_Msk        (0x1UL << DWT_FUNCTION_DATAVMATCH_Pos)      /*!< DWT FUNCTION: DATAVMATCH Mask */\n+\n+#define DWT_FUNCTION_CYCMATCH_Pos           7                                          /*!< DWT FUNCTION: CYCMATCH Position */\n+#define DWT_FUNCTION_CYCMATCH_Msk          (0x1UL << DWT_FUNCTION_CYCMATCH_Pos)        /*!< DWT FUNCTION: CYCMATCH Mask */\n+\n+#define DWT_FUNCTION_EMITRANGE_Pos          5                                          /*!< DWT FUNCTION: EMITRANGE Position */\n+#define DWT_FUNCTION_EMITRANGE_Msk         (0x1UL << DWT_FUNCTION_EMITRANGE_Pos)       /*!< DWT FUNCTION: EMITRANGE Mask */\n+\n+#define DWT_FUNCTION_FUNCTION_Pos           0                                          /*!< DWT FUNCTION: FUNCTION Position */\n+#define DWT_FUNCTION_FUNCTION_Msk          (0xFUL << DWT_FUNCTION_FUNCTION_Pos)        /*!< DWT FUNCTION: FUNCTION Mask */\n+\n+/*@}*/ /* end of group CMSIS_DWT */\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_TPI     Trace Port Interface (TPI)\n+    \\brief      Type definitions for the Trace Port Interface (TPI)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Trace Port Interface Register (TPI).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t SSPSR;                   /*!< Offset: 0x000 (R/ )  Supported Parallel Port Size Register     */\n+  __IO uint32_t CSPSR;                   /*!< Offset: 0x004 (R/W)  Current Parallel Port Size Register */\n+       uint32_t RESERVED0[2];\n+  __IO uint32_t ACPR;                    /*!< Offset: 0x010 (R/W)  Asynchronous Clock Prescaler Register */\n+       uint32_t RESERVED1[55];\n+  __IO uint32_t SPPR;                    /*!< Offset: 0x0F0 (R/W)  Selected Pin Protocol Register */\n+       uint32_t RESERVED2[131];\n+  __I  uint32_t FFSR;                    /*!< Offset: 0x300 (R/ )  Formatter and Flush Status Register */\n+  __IO uint32_t FFCR;                    /*!< Offset: 0x304 (R/W)  Formatter and Flush Control Register */\n+  __I  uint32_t FSCR;                    /*!< Offset: 0x308 (R/ )  Formatter Synchronization Counter Register */\n+       uint32_t RESERVED3[759];\n+  __I  uint32_t TRIGGER;                 /*!< Offset: 0xEE8 (R/ )  TRIGGER */\n+  __I  uint32_t FIFO0;                   /*!< Offset: 0xEEC (R/ )  Integration ETM Data */\n+  __I  uint32_t ITATBCTR2;               /*!< Offset: 0xEF0 (R/ )  ITATBCTR2 */\n+       uint32_t RESERVED4[1];\n+  __I  uint32_t ITATBCTR0;               /*!< Offset: 0xEF8 (R/ )  ITATBCTR0 */\n+  __I  uint32_t FIFO1;                   /*!< Offset: 0xEFC (R/ )  Integration ITM Data */\n+  __IO uint32_t ITCTRL;                  /*!< Offset: 0xF00 (R/W)  Integration Mode Control */\n+       uint32_t RESERVED5[39];\n+  __IO uint32_t CLAIMSET;                /*!< Offset: 0xFA0 (R/W)  Claim tag set */\n+  __IO uint32_t CLAIMCLR;                /*!< Offset: 0xFA4 (R/W)  Claim tag clear */\n+       uint32_t RESERVED7[8];\n+  __I  uint32_t DEVID;                   /*!< Offset: 0xFC8 (R/ )  TPIU_DEVID */\n+  __I  uint32_t DEVTYPE;                 /*!< Offset: 0xFCC (R/ )  TPIU_DEVTYPE */\n+} TPI_Type;\n+\n+/* TPI Asynchronous Clock Prescaler Register Definitions */\n+#define TPI_ACPR_PRESCALER_Pos              0                                          /*!< TPI ACPR: PRESCALER Position */\n+#define TPI_ACPR_PRESCALER_Msk             (0x1FFFUL << TPI_ACPR_PRESCALER_Pos)        /*!< TPI ACPR: PRESCALER Mask */\n+\n+/* TPI Selected Pin Protocol Register Definitions */\n+#define TPI_SPPR_TXMODE_Pos                 0                                          /*!< TPI SPPR: TXMODE Position */\n+#define TPI_SPPR_TXMODE_Msk                (0x3UL << TPI_SPPR_TXMODE_Pos)              /*!< TPI SPPR: TXMODE Mask */\n+\n+/* TPI Formatter and Flush Status Register Definitions */\n+#define TPI_FFSR_FtNonStop_Pos              3                                          /*!< TPI FFSR: FtNonStop Position */\n+#define TPI_FFSR_FtNonStop_Msk             (0x1UL << TPI_FFSR_FtNonStop_Pos)           /*!< TPI FFSR: FtNonStop Mask */\n+\n+#define TPI_FFSR_TCPresent_Pos              2                                          /*!< TPI FFSR: TCPresent Position */\n+#define TPI_FFSR_TCPresent_Msk             (0x1UL << TPI_FFSR_TCPresent_Pos)           /*!< TPI FFSR: TCPresent Mask */\n+\n+#define TPI_FFSR_FtStopped_Pos              1                                          /*!< TPI FFSR: FtStopped Position */\n+#define TPI_FFSR_FtStopped_Msk             (0x1UL << TPI_FFSR_FtStopped_Pos)           /*!< TPI FFSR: FtStopped Mask */\n+\n+#define TPI_FFSR_FlInProg_Pos               0                                          /*!< TPI FFSR: FlInProg Position */\n+#define TPI_FFSR_FlInProg_Msk              (0x1UL << TPI_FFSR_FlInProg_Pos)            /*!< TPI FFSR: FlInProg Mask */\n+\n+/* TPI Formatter and Flush Control Register Definitions */\n+#define TPI_FFCR_TrigIn_Pos                 8                                          /*!< TPI FFCR: TrigIn Position */\n+#define TPI_FFCR_TrigIn_Msk                (0x1UL << TPI_FFCR_TrigIn_Pos)              /*!< TPI FFCR: TrigIn Mask */\n+\n+#define TPI_FFCR_EnFCont_Pos                1                                          /*!< TPI FFCR: EnFCont Position */\n+#define TPI_FFCR_EnFCont_Msk               (0x1UL << TPI_FFCR_EnFCont_Pos)             /*!< TPI FFCR: EnFCont Mask */\n+\n+/* TPI TRIGGER Register Definitions */\n+#define TPI_TRIGGER_TRIGGER_Pos             0                                          /*!< TPI TRIGGER: TRIGGER Position */\n+#define TPI_TRIGGER_TRIGGER_Msk            (0x1UL << TPI_TRIGGER_TRIGGER_Pos)          /*!< TPI TRIGGER: TRIGGER Mask */\n+\n+/* TPI Integration ETM Data Register Definitions (FIFO0) */\n+#define TPI_FIFO0_ITM_ATVALID_Pos          29                                          /*!< TPI FIFO0: ITM_ATVALID Position */\n+#define TPI_FIFO0_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ITM_ATVALID_Pos)        /*!< TPI FIFO0: ITM_ATVALID Mask */\n+\n+#define TPI_FIFO0_ITM_bytecount_Pos        27                                          /*!< TPI FIFO0: ITM_bytecount Position */\n+#define TPI_FIFO0_ITM_bytecount_Msk        (0x3UL << TPI_FIFO0_ITM_bytecount_Pos)      /*!< TPI FIFO0: ITM_bytecount Mask */\n+\n+#define TPI_FIFO0_ETM_ATVALID_Pos          26                                          /*!< TPI FIFO0: ETM_ATVALID Position */\n+#define TPI_FIFO0_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO0_ETM_ATVALID_Pos)        /*!< TPI FIFO0: ETM_ATVALID Mask */\n+\n+#define TPI_FIFO0_ETM_bytecount_Pos        24                                          /*!< TPI FIFO0: ETM_bytecount Position */\n+#define TPI_FIFO0_ETM_bytecount_Msk        (0x3UL << TPI_FIFO0_ETM_bytecount_Pos)      /*!< TPI FIFO0: ETM_bytecount Mask */\n+\n+#define TPI_FIFO0_ETM2_Pos                 16                                          /*!< TPI FIFO0: ETM2 Position */\n+#define TPI_FIFO0_ETM2_Msk                 (0xFFUL << TPI_FIFO0_ETM2_Pos)              /*!< TPI FIFO0: ETM2 Mask */\n+\n+#define TPI_FIFO0_ETM1_Pos                  8                                          /*!< TPI FIFO0: ETM1 Position */\n+#define TPI_FIFO0_ETM1_Msk                 (0xFFUL << TPI_FIFO0_ETM1_Pos)              /*!< TPI FIFO0: ETM1 Mask */\n+\n+#define TPI_FIFO0_ETM0_Pos                  0                                          /*!< TPI FIFO0: ETM0 Position */\n+#define TPI_FIFO0_ETM0_Msk                 (0xFFUL << TPI_FIFO0_ETM0_Pos)              /*!< TPI FIFO0: ETM0 Mask */\n+\n+/* TPI ITATBCTR2 Register Definitions */\n+#define TPI_ITATBCTR2_ATREADY_Pos           0                                          /*!< TPI ITATBCTR2: ATREADY Position */\n+#define TPI_ITATBCTR2_ATREADY_Msk          (0x1UL << TPI_ITATBCTR2_ATREADY_Pos)        /*!< TPI ITATBCTR2: ATREADY Mask */\n+\n+/* TPI Integration ITM Data Register Definitions (FIFO1) */\n+#define TPI_FIFO1_ITM_ATVALID_Pos          29                                          /*!< TPI FIFO1: ITM_ATVALID Position */\n+#define TPI_FIFO1_ITM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ITM_ATVALID_Pos)        /*!< TPI FIFO1: ITM_ATVALID Mask */\n+\n+#define TPI_FIFO1_ITM_bytecount_Pos        27                                          /*!< TPI FIFO1: ITM_bytecount Position */\n+#define TPI_FIFO1_ITM_bytecount_Msk        (0x3UL << TPI_FIFO1_ITM_bytecount_Pos)      /*!< TPI FIFO1: ITM_bytecount Mask */\n+\n+#define TPI_FIFO1_ETM_ATVALID_Pos          26                                          /*!< TPI FIFO1: ETM_ATVALID Position */\n+#define TPI_FIFO1_ETM_ATVALID_Msk          (0x3UL << TPI_FIFO1_ETM_ATVALID_Pos)        /*!< TPI FIFO1: ETM_ATVALID Mask */\n+\n+#define TPI_FIFO1_ETM_bytecount_Pos        24                                          /*!< TPI FIFO1: ETM_bytecount Position */\n+#define TPI_FIFO1_ETM_bytecount_Msk        (0x3UL << TPI_FIFO1_ETM_bytecount_Pos)      /*!< TPI FIFO1: ETM_bytecount Mask */\n+\n+#define TPI_FIFO1_ITM2_Pos                 16                                          /*!< TPI FIFO1: ITM2 Position */\n+#define TPI_FIFO1_ITM2_Msk                 (0xFFUL << TPI_FIFO1_ITM2_Pos)              /*!< TPI FIFO1: ITM2 Mask */\n+\n+#define TPI_FIFO1_ITM1_Pos                  8                                          /*!< TPI FIFO1: ITM1 Position */\n+#define TPI_FIFO1_ITM1_Msk                 (0xFFUL << TPI_FIFO1_ITM1_Pos)              /*!< TPI FIFO1: ITM1 Mask */\n+\n+#define TPI_FIFO1_ITM0_Pos                  0                                          /*!< TPI FIFO1: ITM0 Position */\n+#define TPI_FIFO1_ITM0_Msk                 (0xFFUL << TPI_FIFO1_ITM0_Pos)              /*!< TPI FIFO1: ITM0 Mask */\n+\n+/* TPI ITATBCTR0 Register Definitions */\n+#define TPI_ITATBCTR0_ATREADY_Pos           0                                          /*!< TPI ITATBCTR0: ATREADY Position */\n+#define TPI_ITATBCTR0_ATREADY_Msk          (0x1UL << TPI_ITATBCTR0_ATREADY_Pos)        /*!< TPI ITATBCTR0: ATREADY Mask */\n+\n+/* TPI Integration Mode Control Register Definitions */\n+#define TPI_ITCTRL_Mode_Pos                 0                                          /*!< TPI ITCTRL: Mode Position */\n+#define TPI_ITCTRL_Mode_Msk                (0x1UL << TPI_ITCTRL_Mode_Pos)              /*!< TPI ITCTRL: Mode Mask */\n+\n+/* TPI DEVID Register Definitions */\n+#define TPI_DEVID_NRZVALID_Pos             11                                          /*!< TPI DEVID: NRZVALID Position */\n+#define TPI_DEVID_NRZVALID_Msk             (0x1UL << TPI_DEVID_NRZVALID_Pos)           /*!< TPI DEVID: NRZVALID Mask */\n+\n+#define TPI_DEVID_MANCVALID_Pos            10                                          /*!< TPI DEVID: MANCVALID Position */\n+#define TPI_DEVID_MANCVALID_Msk            (0x1UL << TPI_DEVID_MANCVALID_Pos)          /*!< TPI DEVID: MANCVALID Mask */\n+\n+#define TPI_DEVID_PTINVALID_Pos             9                                          /*!< TPI DEVID: PTINVALID Position */\n+#define TPI_DEVID_PTINVALID_Msk            (0x1UL << TPI_DEVID_PTINVALID_Pos)          /*!< TPI DEVID: PTINVALID Mask */\n+\n+#define TPI_DEVID_MinBufSz_Pos              6                                          /*!< TPI DEVID: MinBufSz Position */\n+#define TPI_DEVID_MinBufSz_Msk             (0x7UL << TPI_DEVID_MinBufSz_Pos)           /*!< TPI DEVID: MinBufSz Mask */\n+\n+#define TPI_DEVID_AsynClkIn_Pos             5                                          /*!< TPI DEVID: AsynClkIn Position */\n+#define TPI_DEVID_AsynClkIn_Msk            (0x1UL << TPI_DEVID_AsynClkIn_Pos)          /*!< TPI DEVID: AsynClkIn Mask */\n+\n+#define TPI_DEVID_NrTraceInput_Pos          0                                          /*!< TPI DEVID: NrTraceInput Position */\n+#define TPI_DEVID_NrTraceInput_Msk         (0x1FUL << TPI_DEVID_NrTraceInput_Pos)      /*!< TPI DEVID: NrTraceInput Mask */\n+\n+/* TPI DEVTYPE Register Definitions */\n+#define TPI_DEVTYPE_SubType_Pos             0                                          /*!< TPI DEVTYPE: SubType Position */\n+#define TPI_DEVTYPE_SubType_Msk            (0xFUL << TPI_DEVTYPE_SubType_Pos)          /*!< TPI DEVTYPE: SubType Mask */\n+\n+#define TPI_DEVTYPE_MajorType_Pos           4                                          /*!< TPI DEVTYPE: MajorType Position */\n+#define TPI_DEVTYPE_MajorType_Msk          (0xFUL << TPI_DEVTYPE_MajorType_Pos)        /*!< TPI DEVTYPE: MajorType Mask */\n+\n+/*@}*/ /* end of group CMSIS_TPI */\n+\n+\n+#if (__MPU_PRESENT == 1)\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_MPU     Memory Protection Unit (MPU)\n+    \\brief      Type definitions for the Memory Protection Unit (MPU)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Memory Protection Unit (MPU).\n+ */\n+typedef struct\n+{\n+  __I  uint32_t TYPE;                    /*!< Offset: 0x000 (R/ )  MPU Type Register                              */\n+  __IO uint32_t CTRL;                    /*!< Offset: 0x004 (R/W)  MPU Control Register                           */\n+  __IO uint32_t RNR;                     /*!< Offset: 0x008 (R/W)  MPU Region RNRber Register                     */\n+  __IO uint32_t RBAR;                    /*!< Offset: 0x00C (R/W)  MPU Region Base Address Register               */\n+  __IO uint32_t RASR;                    /*!< Offset: 0x010 (R/W)  MPU Region Attribute and Size Register         */\n+  __IO uint32_t RBAR_A1;                 /*!< Offset: 0x014 (R/W)  MPU Alias 1 Region Base Address Register       */\n+  __IO uint32_t RASR_A1;                 /*!< Offset: 0x018 (R/W)  MPU Alias 1 Region Attribute and Size Register */\n+  __IO uint32_t RBAR_A2;                 /*!< Offset: 0x01C (R/W)  MPU Alias 2 Region Base Address Register       */\n+  __IO uint32_t RASR_A2;                 /*!< Offset: 0x020 (R/W)  MPU Alias 2 Region Attribute and Size Register */\n+  __IO uint32_t RBAR_A3;                 /*!< Offset: 0x024 (R/W)  MPU Alias 3 Region Base Address Register       */\n+  __IO uint32_t RASR_A3;                 /*!< Offset: 0x028 (R/W)  MPU Alias 3 Region Attribute and Size Register */\n+} MPU_Type;\n+\n+/* MPU Type Register */\n+#define MPU_TYPE_IREGION_Pos               16                                             /*!< MPU TYPE: IREGION Position */\n+#define MPU_TYPE_IREGION_Msk               (0xFFUL << MPU_TYPE_IREGION_Pos)               /*!< MPU TYPE: IREGION Mask */\n+\n+#define MPU_TYPE_DREGION_Pos                8                                             /*!< MPU TYPE: DREGION Position */\n+#define MPU_TYPE_DREGION_Msk               (0xFFUL << MPU_TYPE_DREGION_Pos)               /*!< MPU TYPE: DREGION Mask */\n+\n+#define MPU_TYPE_SEPARATE_Pos               0                                             /*!< MPU TYPE: SEPARATE Position */\n+#define MPU_TYPE_SEPARATE_Msk              (1UL << MPU_TYPE_SEPARATE_Pos)                 /*!< MPU TYPE: SEPARATE Mask */\n+\n+/* MPU Control Register */\n+#define MPU_CTRL_PRIVDEFENA_Pos             2                                             /*!< MPU CTRL: PRIVDEFENA Position */\n+#define MPU_CTRL_PRIVDEFENA_Msk            (1UL << MPU_CTRL_PRIVDEFENA_Pos)               /*!< MPU CTRL: PRIVDEFENA Mask */\n+\n+#define MPU_CTRL_HFNMIENA_Pos               1                                             /*!< MPU CTRL: HFNMIENA Position */\n+#define MPU_CTRL_HFNMIENA_Msk              (1UL << MPU_CTRL_HFNMIENA_Pos)                 /*!< MPU CTRL: HFNMIENA Mask */\n+\n+#define MPU_CTRL_ENABLE_Pos                 0                                             /*!< MPU CTRL: ENABLE Position */\n+#define MPU_CTRL_ENABLE_Msk                (1UL << MPU_CTRL_ENABLE_Pos)                   /*!< MPU CTRL: ENABLE Mask */\n+\n+/* MPU Region Number Register */\n+#define MPU_RNR_REGION_Pos                  0                                             /*!< MPU RNR: REGION Position */\n+#define MPU_RNR_REGION_Msk                 (0xFFUL << MPU_RNR_REGION_Pos)                 /*!< MPU RNR: REGION Mask */\n+\n+/* MPU Region Base Address Register */\n+#define MPU_RBAR_ADDR_Pos                   5                                             /*!< MPU RBAR: ADDR Position */\n+#define MPU_RBAR_ADDR_Msk                  (0x7FFFFFFUL << MPU_RBAR_ADDR_Pos)             /*!< MPU RBAR: ADDR Mask */\n+\n+#define MPU_RBAR_VALID_Pos                  4                                             /*!< MPU RBAR: VALID Position */\n+#define MPU_RBAR_VALID_Msk                 (1UL << MPU_RBAR_VALID_Pos)                    /*!< MPU RBAR: VALID Mask */\n+\n+#define MPU_RBAR_REGION_Pos                 0                                             /*!< MPU RBAR: REGION Position */\n+#define MPU_RBAR_REGION_Msk                (0xFUL << MPU_RBAR_REGION_Pos)                 /*!< MPU RBAR: REGION Mask */\n+\n+/* MPU Region Attribute and Size Register */\n+#define MPU_RASR_ATTRS_Pos                 16                                             /*!< MPU RASR: MPU Region Attribute field Position */\n+#define MPU_RASR_ATTRS_Msk                 (0xFFFFUL << MPU_RASR_ATTRS_Pos)               /*!< MPU RASR: MPU Region Attribute field Mask */\n+\n+#define MPU_RASR_XN_Pos                    28                                             /*!< MPU RASR: ATTRS.XN Position */\n+#define MPU_RASR_XN_Msk                    (1UL << MPU_RASR_XN_Pos)                       /*!< MPU RASR: ATTRS.XN Mask */\n+\n+#define MPU_RASR_AP_Pos                    24                                             /*!< MPU RASR: ATTRS.AP Position */\n+#define MPU_RASR_AP_Msk                    (0x7UL << MPU_RASR_AP_Pos)                     /*!< MPU RASR: ATTRS.AP Mask */\n+\n+#define MPU_RASR_TEX_Pos                   19                                             /*!< MPU RASR: ATTRS.TEX Position */\n+#define MPU_RASR_TEX_Msk                   (0x7UL << MPU_RASR_TEX_Pos)                    /*!< MPU RASR: ATTRS.TEX Mask */\n+\n+#define MPU_RASR_S_Pos                     18                                             /*!< MPU RASR: ATTRS.S Position */\n+#define MPU_RASR_S_Msk                     (1UL << MPU_RASR_S_Pos)                        /*!< MPU RASR: ATTRS.S Mask */\n+\n+#define MPU_RASR_C_Pos                     17                                             /*!< MPU RASR: ATTRS.C Position */\n+#define MPU_RASR_C_Msk                     (1UL << MPU_RASR_C_Pos)                        /*!< MPU RASR: ATTRS.C Mask */\n+\n+#define MPU_RASR_B_Pos                     16                                             /*!< MPU RASR: ATTRS.B Position */\n+#define MPU_RASR_B_Msk                     (1UL << MPU_RASR_B_Pos)                        /*!< MPU RASR: ATTRS.B Mask */\n+\n+#define MPU_RASR_SRD_Pos                    8                                             /*!< MPU RASR: Sub-Region Disable Position */\n+#define MPU_RASR_SRD_Msk                   (0xFFUL << MPU_RASR_SRD_Pos)                   /*!< MPU RASR: Sub-Region Disable Mask */\n+\n+#define MPU_RASR_SIZE_Pos                   1                                             /*!< MPU RASR: Region Size Field Position */\n+#define MPU_RASR_SIZE_Msk                  (0x1FUL << MPU_RASR_SIZE_Pos)                  /*!< MPU RASR: Region Size Field Mask */\n+\n+#define MPU_RASR_ENABLE_Pos                 0                                             /*!< MPU RASR: Region enable bit Position */\n+#define MPU_RASR_ENABLE_Msk                (1UL << MPU_RASR_ENABLE_Pos)                   /*!< MPU RASR: Region enable bit Disable Mask */\n+\n+/*@} end of group CMSIS_MPU */\n+#endif\n+\n+\n+#if (__FPU_PRESENT == 1)\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_FPU     Floating Point Unit (FPU)\n+    \\brief      Type definitions for the Floating Point Unit (FPU)\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Floating Point Unit (FPU).\n+ */\n+typedef struct\n+{\n+       uint32_t RESERVED0[1];\n+  __IO uint32_t FPCCR;                   /*!< Offset: 0x004 (R/W)  Floating-Point Context Control Register               */\n+  __IO uint32_t FPCAR;                   /*!< Offset: 0x008 (R/W)  Floating-Point Context Address Register               */\n+  __IO uint32_t FPDSCR;                  /*!< Offset: 0x00C (R/W)  Floating-Point Default Status Control Register        */\n+  __I  uint32_t MVFR0;                   /*!< Offset: 0x010 (R/ )  Media and FP Feature Register 0                       */\n+  __I  uint32_t MVFR1;                   /*!< Offset: 0x014 (R/ )  Media and FP Feature Register 1                       */\n+} FPU_Type;\n+\n+/* Floating-Point Context Control Register */\n+#define FPU_FPCCR_ASPEN_Pos                31                                             /*!< FPCCR: ASPEN bit Position */\n+#define FPU_FPCCR_ASPEN_Msk                (1UL << FPU_FPCCR_ASPEN_Pos)                   /*!< FPCCR: ASPEN bit Mask */\n+\n+#define FPU_FPCCR_LSPEN_Pos                30                                             /*!< FPCCR: LSPEN Position */\n+#define FPU_FPCCR_LSPEN_Msk                (1UL << FPU_FPCCR_LSPEN_Pos)                   /*!< FPCCR: LSPEN bit Mask */\n+\n+#define FPU_FPCCR_MONRDY_Pos                8                                             /*!< FPCCR: MONRDY Position */\n+#define FPU_FPCCR_MONRDY_Msk               (1UL << FPU_FPCCR_MONRDY_Pos)                  /*!< FPCCR: MONRDY bit Mask */\n+\n+#define FPU_FPCCR_BFRDY_Pos                 6                                             /*!< FPCCR: BFRDY Position */\n+#define FPU_FPCCR_BFRDY_Msk                (1UL << FPU_FPCCR_BFRDY_Pos)                   /*!< FPCCR: BFRDY bit Mask */\n+\n+#define FPU_FPCCR_MMRDY_Pos                 5                                             /*!< FPCCR: MMRDY Position */\n+#define FPU_FPCCR_MMRDY_Msk                (1UL << FPU_FPCCR_MMRDY_Pos)                   /*!< FPCCR: MMRDY bit Mask */\n+\n+#define FPU_FPCCR_HFRDY_Pos                 4                                             /*!< FPCCR: HFRDY Position */\n+#define FPU_FPCCR_HFRDY_Msk                (1UL << FPU_FPCCR_HFRDY_Pos)                   /*!< FPCCR: HFRDY bit Mask */\n+\n+#define FPU_FPCCR_THREAD_Pos                3                                             /*!< FPCCR: processor mode bit Position */\n+#define FPU_FPCCR_THREAD_Msk               (1UL << FPU_FPCCR_THREAD_Pos)                  /*!< FPCCR: processor mode active bit Mask */\n+\n+#define FPU_FPCCR_USER_Pos                  1                                             /*!< FPCCR: privilege level bit Position */\n+#define FPU_FPCCR_USER_Msk                 (1UL << FPU_FPCCR_USER_Pos)                    /*!< FPCCR: privilege level bit Mask */\n+\n+#define FPU_FPCCR_LSPACT_Pos                0                                             /*!< FPCCR: Lazy state preservation active bit Position */\n+#define FPU_FPCCR_LSPACT_Msk               (1UL << FPU_FPCCR_LSPACT_Pos)                  /*!< FPCCR: Lazy state preservation active bit Mask */\n+\n+/* Floating-Point Context Address Register */\n+#define FPU_FPCAR_ADDRESS_Pos               3                                             /*!< FPCAR: ADDRESS bit Position */\n+#define FPU_FPCAR_ADDRESS_Msk              (0x1FFFFFFFUL << FPU_FPCAR_ADDRESS_Pos)        /*!< FPCAR: ADDRESS bit Mask */\n+\n+/* Floating-Point Default Status Control Register */\n+#define FPU_FPDSCR_AHP_Pos                 26                                             /*!< FPDSCR: AHP bit Position */\n+#define FPU_FPDSCR_AHP_Msk                 (1UL << FPU_FPDSCR_AHP_Pos)                    /*!< FPDSCR: AHP bit Mask */\n+\n+#define FPU_FPDSCR_DN_Pos                  25                                             /*!< FPDSCR: DN bit Position */\n+#define FPU_FPDSCR_DN_Msk                  (1UL << FPU_FPDSCR_DN_Pos)                     /*!< FPDSCR: DN bit Mask */\n+\n+#define FPU_FPDSCR_FZ_Pos                  24                                             /*!< FPDSCR: FZ bit Position */\n+#define FPU_FPDSCR_FZ_Msk                  (1UL << FPU_FPDSCR_FZ_Pos)                     /*!< FPDSCR: FZ bit Mask */\n+\n+#define FPU_FPDSCR_RMode_Pos               22                                             /*!< FPDSCR: RMode bit Position */\n+#define FPU_FPDSCR_RMode_Msk               (3UL << FPU_FPDSCR_RMode_Pos)                  /*!< FPDSCR: RMode bit Mask */\n+\n+/* Media and FP Feature Register 0 */\n+#define FPU_MVFR0_FP_rounding_modes_Pos    28                                             /*!< MVFR0: FP rounding modes bits Position */\n+#define FPU_MVFR0_FP_rounding_modes_Msk    (0xFUL << FPU_MVFR0_FP_rounding_modes_Pos)     /*!< MVFR0: FP rounding modes bits Mask */\n+\n+#define FPU_MVFR0_Short_vectors_Pos        24                                             /*!< MVFR0: Short vectors bits Position */\n+#define FPU_MVFR0_Short_vectors_Msk        (0xFUL << FPU_MVFR0_Short_vectors_Pos)         /*!< MVFR0: Short vectors bits Mask */\n+\n+#define FPU_MVFR0_Square_root_Pos          20                                             /*!< MVFR0: Square root bits Position */\n+#define FPU_MVFR0_Square_root_Msk          (0xFUL << FPU_MVFR0_Square_root_Pos)           /*!< MVFR0: Square root bits Mask */\n+\n+#define FPU_MVFR0_Divide_Pos               16                                             /*!< MVFR0: Divide bits Position */\n+#define FPU_MVFR0_Divide_Msk               (0xFUL << FPU_MVFR0_Divide_Pos)                /*!< MVFR0: Divide bits Mask */\n+\n+#define FPU_MVFR0_FP_excep_trapping_Pos    12                                             /*!< MVFR0: FP exception trapping bits Position */\n+#define FPU_MVFR0_FP_excep_trapping_Msk    (0xFUL << FPU_MVFR0_FP_excep_trapping_Pos)     /*!< MVFR0: FP exception trapping bits Mask */\n+\n+#define FPU_MVFR0_Double_precision_Pos      8                                             /*!< MVFR0: Double-precision bits Position */\n+#define FPU_MVFR0_Double_precision_Msk     (0xFUL << FPU_MVFR0_Double_precision_Pos)      /*!< MVFR0: Double-precision bits Mask */\n+\n+#define FPU_MVFR0_Single_precision_Pos      4                                             /*!< MVFR0: Single-precision bits Position */\n+#define FPU_MVFR0_Single_precision_Msk     (0xFUL << FPU_MVFR0_Single_precision_Pos)      /*!< MVFR0: Single-precision bits Mask */\n+\n+#define FPU_MVFR0_A_SIMD_registers_Pos      0                                             /*!< MVFR0: A_SIMD registers bits Position */\n+#define FPU_MVFR0_A_SIMD_registers_Msk     (0xFUL << FPU_MVFR0_A_SIMD_registers_Pos)      /*!< MVFR0: A_SIMD registers bits Mask */\n+\n+/* Media and FP Feature Register 1 */\n+#define FPU_MVFR1_FP_fused_MAC_Pos         28                                             /*!< MVFR1: FP fused MAC bits Position */\n+#define FPU_MVFR1_FP_fused_MAC_Msk         (0xFUL << FPU_MVFR1_FP_fused_MAC_Pos)          /*!< MVFR1: FP fused MAC bits Mask */\n+\n+#define FPU_MVFR1_FP_HPFP_Pos              24                                             /*!< MVFR1: FP HPFP bits Position */\n+#define FPU_MVFR1_FP_HPFP_Msk              (0xFUL << FPU_MVFR1_FP_HPFP_Pos)               /*!< MVFR1: FP HPFP bits Mask */\n+\n+#define FPU_MVFR1_D_NaN_mode_Pos            4                                             /*!< MVFR1: D_NaN mode bits Position */\n+#define FPU_MVFR1_D_NaN_mode_Msk           (0xFUL << FPU_MVFR1_D_NaN_mode_Pos)            /*!< MVFR1: D_NaN mode bits Mask */\n+\n+#define FPU_MVFR1_FtZ_mode_Pos              0                                             /*!< MVFR1: FtZ mode bits Position */\n+#define FPU_MVFR1_FtZ_mode_Msk             (0xFUL << FPU_MVFR1_FtZ_mode_Pos)              /*!< MVFR1: FtZ mode bits Mask */\n+\n+/*@} end of group CMSIS_FPU */\n+#endif\n+\n+\n+/** \\ingroup  CMSIS_core_register\n+    \\defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)\n+    \\brief      Type definitions for the Core Debug Registers\n+  @{\n+ */\n+\n+/** \\brief  Structure type to access the Core Debug Register (CoreDebug).\n+ */\n+typedef struct\n+{\n+  __IO uint32_t DHCSR;                   /*!< Offset: 0x000 (R/W)  Debug Halting Control and Status Register    */\n+  __O  uint32_t DCRSR;                   /*!< Offset: 0x004 ( /W)  Debug Core Register Selector Register        */\n+  __IO uint32_t DCRDR;                   /*!< Offset: 0x008 (R/W)  Debug Core Register Data Register            */\n+  __IO uint32_t DEMCR;                   /*!< Offset: 0x00C (R/W)  Debug Exception and Monitor Control Register */\n+} CoreDebug_Type;\n+\n+/* Debug Halting Control and Status Register */\n+#define CoreDebug_DHCSR_DBGKEY_Pos         16                                             /*!< CoreDebug DHCSR: DBGKEY Position */\n+#define CoreDebug_DHCSR_DBGKEY_Msk         (0xFFFFUL << CoreDebug_DHCSR_DBGKEY_Pos)       /*!< CoreDebug DHCSR: DBGKEY Mask */\n+\n+#define CoreDebug_DHCSR_S_RESET_ST_Pos     25                                             /*!< CoreDebug DHCSR: S_RESET_ST Position */\n+#define CoreDebug_DHCSR_S_RESET_ST_Msk     (1UL << CoreDebug_DHCSR_S_RESET_ST_Pos)        /*!< CoreDebug DHCSR: S_RESET_ST Mask */\n+\n+#define CoreDebug_DHCSR_S_RETIRE_ST_Pos    24                                             /*!< CoreDebug DHCSR: S_RETIRE_ST Position */\n+#define CoreDebug_DHCSR_S_RETIRE_ST_Msk    (1UL << CoreDebug_DHCSR_S_RETIRE_ST_Pos)       /*!< CoreDebug DHCSR: S_RETIRE_ST Mask */\n+\n+#define CoreDebug_DHCSR_S_LOCKUP_Pos       19                                             /*!< CoreDebug DHCSR: S_LOCKUP Position */\n+#define CoreDebug_DHCSR_S_LOCKUP_Msk       (1UL << CoreDebug_DHCSR_S_LOCKUP_Pos)          /*!< CoreDebug DHCSR: S_LOCKUP Mask */\n+\n+#define CoreDebug_DHCSR_S_SLEEP_Pos        18                                             /*!< CoreDebug DHCSR: S_SLEEP Position */\n+#define CoreDebug_DHCSR_S_SLEEP_Msk        (1UL << CoreDebug_DHCSR_S_SLEEP_Pos)           /*!< CoreDebug DHCSR: S_SLEEP Mask */\n+\n+#define CoreDebug_DHCSR_S_HALT_Pos         17                                             /*!< CoreDebug DHCSR: S_HALT Position */\n+#define CoreDebug_DHCSR_S_HALT_Msk         (1UL << CoreDebug_DHCSR_S_HALT_Pos)            /*!< CoreDebug DHCSR: S_HALT Mask */\n+\n+#define CoreDebug_DHCSR_S_REGRDY_Pos       16                                             /*!< CoreDebug DHCSR: S_REGRDY Position */\n+#define CoreDebug_DHCSR_S_REGRDY_Msk       (1UL << CoreDebug_DHCSR_S_REGRDY_Pos)          /*!< CoreDebug DHCSR: S_REGRDY Mask */\n+\n+#define CoreDebug_DHCSR_C_SNAPSTALL_Pos     5                                             /*!< CoreDebug DHCSR: C_SNAPSTALL Position */\n+#define CoreDebug_DHCSR_C_SNAPSTALL_Msk    (1UL << CoreDebug_DHCSR_C_SNAPSTALL_Pos)       /*!< CoreDebug DHCSR: C_SNAPSTALL Mask */\n+\n+#define CoreDebug_DHCSR_C_MASKINTS_Pos      3                                             /*!< CoreDebug DHCSR: C_MASKINTS Position */\n+#define CoreDebug_DHCSR_C_MASKINTS_Msk     (1UL << CoreDebug_DHCSR_C_MASKINTS_Pos)        /*!< CoreDebug DHCSR: C_MASKINTS Mask */\n+\n+#define CoreDebug_DHCSR_C_STEP_Pos          2                                             /*!< CoreDebug DHCSR: C_STEP Position */\n+#define CoreDebug_DHCSR_C_STEP_Msk         (1UL << CoreDebug_DHCSR_C_STEP_Pos)            /*!< CoreDebug DHCSR: C_STEP Mask */\n+\n+#define CoreDebug_DHCSR_C_HALT_Pos          1                                             /*!< CoreDebug DHCSR: C_HALT Position */\n+#define CoreDebug_DHCSR_C_HALT_Msk         (1UL << CoreDebug_DHCSR_C_HALT_Pos)            /*!< CoreDebug DHCSR: C_HALT Mask */\n+\n+#define CoreDebug_DHCSR_C_DEBUGEN_Pos       0                                             /*!< CoreDebug DHCSR: C_DEBUGEN Position */\n+#define CoreDebug_DHCSR_C_DEBUGEN_Msk      (1UL << CoreDebug_DHCSR_C_DEBUGEN_Pos)         /*!< CoreDebug DHCSR: C_DEBUGEN Mask */\n+\n+/* Debug Core Register Selector Register */\n+#define CoreDebug_DCRSR_REGWnR_Pos         16                                             /*!< CoreDebug DCRSR: REGWnR Position */\n+#define CoreDebug_DCRSR_REGWnR_Msk         (1UL << CoreDebug_DCRSR_REGWnR_Pos)            /*!< CoreDebug DCRSR: REGWnR Mask */\n+\n+#define CoreDebug_DCRSR_REGSEL_Pos          0                                             /*!< CoreDebug DCRSR: REGSEL Position */\n+#define CoreDebug_DCRSR_REGSEL_Msk         (0x1FUL << CoreDebug_DCRSR_REGSEL_Pos)         /*!< CoreDebug DCRSR: REGSEL Mask */\n+\n+/* Debug Exception and Monitor Control Register */\n+#define CoreDebug_DEMCR_TRCENA_Pos         24                                             /*!< CoreDebug DEMCR: TRCENA Position */\n+#define CoreDebug_DEMCR_TRCENA_Msk         (1UL << CoreDebug_DEMCR_TRCENA_Pos)            /*!< CoreDebug DEMCR: TRCENA Mask */\n+\n+#define CoreDebug_DEMCR_MON_REQ_Pos        19                                             /*!< CoreDebug DEMCR: MON_REQ Position */\n+#define CoreDebug_DEMCR_MON_REQ_Msk        (1UL << CoreDebug_DEMCR_MON_REQ_Pos)           /*!< CoreDebug DEMCR: MON_REQ Mask */\n+\n+#define CoreDebug_DEMCR_MON_STEP_Pos       18                                             /*!< CoreDebug DEMCR: MON_STEP Position */\n+#define CoreDebug_DEMCR_MON_STEP_Msk       (1UL << CoreDebug_DEMCR_MON_STEP_Pos)          /*!< CoreDebug DEMCR: MON_STEP Mask */\n+\n+#define CoreDebug_DEMCR_MON_PEND_Pos       17                                             /*!< CoreDebug DEMCR: MON_PEND Position */\n+#define CoreDebug_DEMCR_MON_PEND_Msk       (1UL << CoreDebug_DEMCR_MON_PEND_Pos)          /*!< CoreDebug DEMCR: MON_PEND Mask */\n+\n+#define CoreDebug_DEMCR_MON_EN_Pos         16                                             /*!< CoreDebug DEMCR: MON_EN Position */\n+#define CoreDebug_DEMCR_MON_EN_Msk         (1UL << CoreDebug_DEMCR_MON_EN_Pos)            /*!< CoreDebug DEMCR: MON_EN Mask */\n+\n+#define CoreDebug_DEMCR_VC_HARDERR_Pos     10                                             /*!< CoreDebug DEMCR: VC_HARDERR Position */\n+#define CoreDebug_DEMCR_VC_HARDERR_Msk     (1UL << CoreDebug_DEMCR_VC_HARDERR_Pos)        /*!< CoreDebug DEMCR: VC_HARDERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_INTERR_Pos       9                                             /*!< CoreDebug DEMCR: VC_INTERR Position */\n+#define CoreDebug_DEMCR_VC_INTERR_Msk      (1UL << CoreDebug_DEMCR_VC_INTERR_Pos)         /*!< CoreDebug DEMCR: VC_INTERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_BUSERR_Pos       8                                             /*!< CoreDebug DEMCR: VC_BUSERR Position */\n+#define CoreDebug_DEMCR_VC_BUSERR_Msk      (1UL << CoreDebug_DEMCR_VC_BUSERR_Pos)         /*!< CoreDebug DEMCR: VC_BUSERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_STATERR_Pos      7                                             /*!< CoreDebug DEMCR: VC_STATERR Position */\n+#define CoreDebug_DEMCR_VC_STATERR_Msk     (1UL << CoreDebug_DEMCR_VC_STATERR_Pos)        /*!< CoreDebug DEMCR: VC_STATERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_CHKERR_Pos       6                                             /*!< CoreDebug DEMCR: VC_CHKERR Position */\n+#define CoreDebug_DEMCR_VC_CHKERR_Msk      (1UL << CoreDebug_DEMCR_VC_CHKERR_Pos)         /*!< CoreDebug DEMCR: VC_CHKERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_NOCPERR_Pos      5                                             /*!< CoreDebug DEMCR: VC_NOCPERR Position */\n+#define CoreDebug_DEMCR_VC_NOCPERR_Msk     (1UL << CoreDebug_DEMCR_VC_NOCPERR_Pos)        /*!< CoreDebug DEMCR: VC_NOCPERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_MMERR_Pos        4                                             /*!< CoreDebug DEMCR: VC_MMERR Position */\n+#define CoreDebug_DEMCR_VC_MMERR_Msk       (1UL << CoreDebug_DEMCR_VC_MMERR_Pos)          /*!< CoreDebug DEMCR: VC_MMERR Mask */\n+\n+#define CoreDebug_DEMCR_VC_CORERESET_Pos    0                                             /*!< CoreDebug DEMCR: VC_CORERESET Position */\n+#define CoreDebug_DEMCR_VC_CORERESET_Msk   (1UL << CoreDebug_DEMCR_VC_CORERESET_Pos)      /*!< CoreDebug DEMCR: VC_CORERESET Mask */\n+\n+/*@} end of group CMSIS_CoreDebug */\n+\n+\n+/** \\ingroup    CMSIS_core_register\n+    \\defgroup   CMSIS_core_base     Core Definitions\n+    \\brief      Definitions for base addresses, unions, and structures.\n+  @{\n+ */\n+\n+/* Memory mapping of Cortex-M4 Hardware */\n+#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address  */\n+#define ITM_BASE            (0xE0000000UL)                            /*!< ITM Base Address                   */\n+#define DWT_BASE            (0xE0001000UL)                            /*!< DWT Base Address                   */\n+#define TPI_BASE            (0xE0040000UL)                            /*!< TPI Base Address                   */\n+#define CoreDebug_BASE      (0xE000EDF0UL)                            /*!< Core Debug Base Address            */\n+#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address               */\n+#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address                  */\n+#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address  */\n+\n+#define SCnSCB              ((SCnSCB_Type    *)     SCS_BASE      )   /*!< System control Register not in SCB */\n+#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct           */\n+#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct       */\n+#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct          */\n+#define ITM                 ((ITM_Type       *)     ITM_BASE      )   /*!< ITM configuration struct           */\n+#define DWT                 ((DWT_Type       *)     DWT_BASE      )   /*!< DWT configuration struct           */\n+#define TPI                 ((TPI_Type       *)     TPI_BASE      )   /*!< TPI configuration struct           */\n+#define CoreDebug           ((CoreDebug_Type *)     CoreDebug_BASE)   /*!< Core Debug configuration struct    */\n+\n+#if (__MPU_PRESENT == 1)\n+  #define MPU_BASE          (SCS_BASE +  0x0D90UL)                    /*!< Memory Protection Unit             */\n+  #define MPU               ((MPU_Type       *)     MPU_BASE      )   /*!< Memory Protection Unit             */\n+#endif\n+\n+#if (__FPU_PRESENT == 1)\n+  #define FPU_BASE          (SCS_BASE +  0x0F30UL)                    /*!< Floating Point Unit                */\n+  #define FPU               ((FPU_Type       *)     FPU_BASE      )   /*!< Floating Point Unit                */\n+#endif\n+\n+/*@} */\n+\n+\n+\n+/*******************************************************************************\n+ *                Hardware Abstraction Layer\n+  Core Function Interface contains:\n+  - Core NVIC Functions\n+  - Core SysTick Functions\n+  - Core Debug Functions\n+  - Core Register Access Functions\n+ ******************************************************************************/\n+/** \\defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference\n+*/\n+\n+\n+\n+/* ##########################   NVIC functions  #################################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_NVICFunctions NVIC Functions\n+    \\brief      Functions that manage interrupts and exceptions via the NVIC.\n+    @{\n+ */\n+\n+/** \\brief  Set Priority Grouping\n+\n+  The function sets the priority grouping field using the required unlock sequence.\n+  The parameter PriorityGroup is assigned to the field SCB->AIRCR [10:8] PRIGROUP field.\n+  Only values from 0..7 are used.\n+  In case of a conflict between priority grouping and available\n+  priority bits (__NVIC_PRIO_BITS), the smallest possible priority group is set.\n+\n+    \\param [in]      PriorityGroup  Priority grouping field.\n+ */\n+__STATIC_INLINE void NVIC_SetPriorityGrouping(uint32_t PriorityGroup)\n+{\n+  uint32_t reg_value;\n+  uint32_t PriorityGroupTmp = (PriorityGroup & (uint32_t)0x07);               /* only values 0..7 are used          */\n+\n+  reg_value  =  SCB->AIRCR;                                                   /* read old register configuration    */\n+  reg_value &= ~(SCB_AIRCR_VECTKEY_Msk | SCB_AIRCR_PRIGROUP_Msk);             /* clear bits to change               */\n+  reg_value  =  (reg_value                                 |\n+                ((uint32_t)0x5FA << SCB_AIRCR_VECTKEY_Pos) |\n+                (PriorityGroupTmp << 8));                                     /* Insert write key and priorty group */\n+  SCB->AIRCR =  reg_value;\n+}\n+\n+\n+/** \\brief  Get Priority Grouping\n+\n+  The function reads the priority grouping field from the NVIC Interrupt Controller.\n+\n+    \\return                Priority grouping field (SCB->AIRCR [10:8] PRIGROUP field).\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPriorityGrouping(void)\n+{\n+  return ((SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) >> SCB_AIRCR_PRIGROUP_Pos);   /* read priority grouping field */\n+}\n+\n+\n+/** \\brief  Enable External Interrupt\n+\n+    The function enables a device-specific interrupt in the NVIC interrupt controller.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)\n+{\n+/*  NVIC->ISER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F));  enable interrupt */\n+  NVIC->ISER[(uint32_t)((int32_t)IRQn) >> 5] = (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); /* enable interrupt */\n+}\n+\n+\n+/** \\brief  Disable External Interrupt\n+\n+    The function disables a device-specific interrupt in the NVIC interrupt controller.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ICER[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* disable interrupt */\n+}\n+\n+\n+/** \\brief  Get Pending Interrupt\n+\n+    The function reads the pending register in the NVIC and returns the pending bit\n+    for the specified interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+\n+    \\return             0  Interrupt status is not pending.\n+    \\return             1  Interrupt status is pending.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)\n+{\n+  return((uint32_t) ((NVIC->ISPR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if pending else 0 */\n+}\n+\n+\n+/** \\brief  Set Pending Interrupt\n+\n+    The function sets the pending bit of an external interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ISPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* set interrupt pending */\n+}\n+\n+\n+/** \\brief  Clear Pending Interrupt\n+\n+    The function clears the pending bit of an external interrupt.\n+\n+    \\param [in]      IRQn  External interrupt number. Value cannot be negative.\n+ */\n+__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)\n+{\n+  NVIC->ICPR[((uint32_t)(IRQn) >> 5)] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */\n+}\n+\n+\n+/** \\brief  Get Active Interrupt\n+\n+    The function reads the active register in NVIC and returns the active bit.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+\n+    \\return             0  Interrupt status is not active.\n+    \\return             1  Interrupt status is active.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)\n+{\n+  return((uint32_t)((NVIC->IABR[(uint32_t)(IRQn) >> 5] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0)); /* Return 1 if active else 0 */\n+}\n+\n+\n+/** \\brief  Set Interrupt Priority\n+\n+    The function sets the priority of an interrupt.\n+\n+    \\note The priority cannot be set for every core interrupt.\n+\n+    \\param [in]      IRQn  Interrupt number.\n+    \\param [in]  priority  Priority to set.\n+ */\n+__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)\n+{\n+  if(IRQn < 0) {\n+    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set Priority for Cortex-M  System Interrupts */\n+  else {\n+    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set Priority for device specific Interrupts  */\n+}\n+\n+\n+/** \\brief  Get Interrupt Priority\n+\n+    The function reads the priority of an interrupt. The interrupt\n+    number can be positive to specify an external (device specific)\n+    interrupt, or negative to specify an internal (core) interrupt.\n+\n+\n+    \\param [in]   IRQn  Interrupt number.\n+    \\return             Interrupt Priority. Value is aligned automatically to the implemented\n+                        priority bits of the microcontroller.\n+ */\n+__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)\n+{\n+\n+  if(IRQn < 0) {\n+    return((uint32_t)(SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M  system interrupts */\n+  else {\n+    return((uint32_t)(NVIC->IP[(uint32_t)(IRQn)]           >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */\n+}\n+\n+\n+/** \\brief  Encode Priority\n+\n+    The function encodes the priority for an interrupt with the given priority group,\n+    preemptive priority value, and subpriority value.\n+    In case of a conflict between priority grouping and available\n+    priority bits (__NVIC_PRIO_BITS), the samllest possible priority group is set.\n+\n+    \\param [in]     PriorityGroup  Used priority group.\n+    \\param [in]   PreemptPriority  Preemptive priority value (starting from 0).\n+    \\param [in]       SubPriority  Subpriority value (starting from 0).\n+    \\return                        Encoded priority. Value can be used in the function \\ref NVIC_SetPriority().\n+ */\n+__STATIC_INLINE uint32_t NVIC_EncodePriority (uint32_t PriorityGroup, uint32_t PreemptPriority, uint32_t SubPriority)\n+{\n+  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */\n+  uint32_t PreemptPriorityBits;\n+  uint32_t SubPriorityBits;\n+\n+  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;\n+  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;\n+\n+  return (\n+           ((PreemptPriority & ((1 << (PreemptPriorityBits)) - 1)) << SubPriorityBits) |\n+           ((SubPriority     & ((1 << (SubPriorityBits    )) - 1)))\n+         );\n+}\n+\n+\n+/** \\brief  Decode Priority\n+\n+    The function decodes an interrupt priority value with a given priority group to\n+    preemptive priority value and subpriority value.\n+    In case of a conflict between priority grouping and available\n+    priority bits (__NVIC_PRIO_BITS) the samllest possible priority group is set.\n+\n+    \\param [in]         Priority   Priority value, which can be retrieved with the function \\ref NVIC_GetPriority().\n+    \\param [in]     PriorityGroup  Used priority group.\n+    \\param [out] pPreemptPriority  Preemptive priority value (starting from 0).\n+    \\param [out]     pSubPriority  Subpriority value (starting from 0).\n+ */\n+__STATIC_INLINE void NVIC_DecodePriority (uint32_t Priority, uint32_t PriorityGroup, uint32_t* pPreemptPriority, uint32_t* pSubPriority)\n+{\n+  uint32_t PriorityGroupTmp = (PriorityGroup & 0x07);          /* only values 0..7 are used          */\n+  uint32_t PreemptPriorityBits;\n+  uint32_t SubPriorityBits;\n+\n+  PreemptPriorityBits = ((7 - PriorityGroupTmp) > __NVIC_PRIO_BITS) ? __NVIC_PRIO_BITS : 7 - PriorityGroupTmp;\n+  SubPriorityBits     = ((PriorityGroupTmp + __NVIC_PRIO_BITS) < 7) ? 0 : PriorityGroupTmp - 7 + __NVIC_PRIO_BITS;\n+\n+  *pPreemptPriority = (Priority >> SubPriorityBits) & ((1 << (PreemptPriorityBits)) - 1);\n+  *pSubPriority     = (Priority                   ) & ((1 << (SubPriorityBits    )) - 1);\n+}\n+\n+\n+/** \\brief  System Reset\n+\n+    The function initiates a system reset request to reset the MCU.\n+ */\n+__STATIC_INLINE void NVIC_SystemReset(void)\n+{\n+  __DSB();                                                     /* Ensure all outstanding memory accesses included\n+                                                                  buffered write are completed before reset */\n+  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |\n+                 (SCB->AIRCR & SCB_AIRCR_PRIGROUP_Msk) |\n+                 SCB_AIRCR_SYSRESETREQ_Msk);                   /* Keep priority group unchanged */\n+  __DSB();                                                     /* Ensure completion of memory access */\n+  while(1);                                                    /* wait until reset */\n+}\n+\n+/*@} end of CMSIS_Core_NVICFunctions */\n+\n+\n+\n+/* ##################################    SysTick function  ############################################ */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_SysTickFunctions SysTick Functions\n+    \\brief      Functions that configure the System.\n+  @{\n+ */\n+\n+#if (__Vendor_SysTickConfig == 0)\n+\n+/** \\brief  System Tick Configuration\n+\n+    The function initializes the System Timer and its interrupt, and starts the System Tick Timer.\n+    Counter is in free running mode to generate periodic interrupts.\n+\n+    \\param [in]  ticks  Number of ticks between two interrupts.\n+\n+    \\return          0  Function succeeded.\n+    \\return          1  Function failed.\n+\n+    \\note     When the variable <b>__Vendor_SysTickConfig</b> is set to 1, then the\n+    function <b>SysTick_Config</b> is not included. In this case, the file <b><i>device</i>.h</b>\n+    must contain a vendor-specific implementation of this function.\n+\n+ */\n+__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)\n+{\n+  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */\n+\n+  SysTick->LOAD  = ticks - 1;                                  /* set reload register */\n+  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */\n+  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */\n+  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |\n+                   SysTick_CTRL_TICKINT_Msk   |\n+                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */\n+  return (0);                                                  /* Function successful */\n+}\n+\n+#endif\n+\n+/*@} end of CMSIS_Core_SysTickFunctions */\n+\n+\n+\n+/* ##################################### Debug In/Output function ########################################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_core_DebugFunctions ITM Functions\n+    \\brief   Functions that access the ITM debug interface.\n+  @{\n+ */\n+\n+extern volatile int32_t ITM_RxBuffer;                    /*!< External variable to receive characters.                         */\n+#define                 ITM_RXBUFFER_EMPTY    0x5AA55AA5 /*!< Value identifying \\ref ITM_RxBuffer is ready for next character. */\n+\n+\n+/** \\brief  ITM Send Character\n+\n+    The function transmits a character via the ITM channel 0, and\n+    \\li Just returns when no debugger is connected that has booked the output.\n+    \\li Is blocking when a debugger is connected, but the previous character sent has not been transmitted.\n+\n+    \\param [in]     ch  Character to transmit.\n+\n+    \\returns            Character to transmit.\n+ */\n+__STATIC_INLINE uint32_t ITM_SendChar (uint32_t ch)\n+{\n+  if ((ITM->TCR & ITM_TCR_ITMENA_Msk)                  &&      /* ITM enabled */\n+      (ITM->TER & (1UL << 0)        )                    )     /* ITM Port #0 enabled */\n+  {\n+    while (ITM->PORT[0].u32 == 0);\n+    ITM->PORT[0].u8 = (uint8_t) ch;\n+  }\n+  return (ch);\n+}\n+\n+\n+/** \\brief  ITM Receive Character\n+\n+    The function inputs a character via the external variable \\ref ITM_RxBuffer.\n+\n+    \\return             Received character.\n+    \\return         -1  No character pending.\n+ */\n+__STATIC_INLINE int32_t ITM_ReceiveChar (void) {\n+  int32_t ch = -1;                           /* no character available */\n+\n+  if (ITM_RxBuffer != ITM_RXBUFFER_EMPTY) {\n+    ch = ITM_RxBuffer;\n+    ITM_RxBuffer = ITM_RXBUFFER_EMPTY;       /* ready for next character */\n+  }\n+\n+  return (ch);\n+}\n+\n+\n+/** \\brief  ITM Check Character\n+\n+    The function checks whether a character is pending for reading in the variable \\ref ITM_RxBuffer.\n+\n+    \\return          0  No character available.\n+    \\return          1  Character available.\n+ */\n+__STATIC_INLINE int32_t ITM_CheckChar (void) {\n+\n+  if (ITM_RxBuffer == ITM_RXBUFFER_EMPTY) {\n+    return (0);                                 /* no character available */\n+  } else {\n+    return (1);                                 /*    character available */\n+  }\n+}\n+\n+/*@} end of CMSIS_core_DebugFunctions */\n+\n+#endif /* __CORE_CM4_H_DEPENDANT */\n+\n+#endif /* __CMSIS_GENERIC */\n+\n+#ifdef __cplusplus\n+}\n+#endif\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/core_cm4_simd.h ./lpc_chip_43xx/inc/core_cm4_simd.h\n--- a_OkB2vL/lpc_chip_43xx/inc/core_cm4_simd.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/core_cm4_simd.h\t2017-02-27 21:03:16.996043462 -0300\n@@ -0,0 +1,673 @@\n+/**************************************************************************//**\n+ * @file     core_cm4_simd.h\n+ * @brief    CMSIS Cortex-M4 SIMD Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifdef __cplusplus\n+ extern \"C\" {\n+#endif\n+\n+#ifndef __CORE_CM4_SIMD_H\n+#define __CORE_CM4_SIMD_H\n+\n+\n+/*******************************************************************************\n+ *                Hardware Abstraction Layer\n+ ******************************************************************************/\n+\n+\n+/* ###################  Compiler specific Intrinsics  ########################### */\n+/** \\defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics\n+  Access to dedicated SIMD instructions\n+  @{\n+*/\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#define __SADD8                           __sadd8\n+#define __QADD8                           __qadd8\n+#define __SHADD8                          __shadd8\n+#define __UADD8                           __uadd8\n+#define __UQADD8                          __uqadd8\n+#define __UHADD8                          __uhadd8\n+#define __SSUB8                           __ssub8\n+#define __QSUB8                           __qsub8\n+#define __SHSUB8                          __shsub8\n+#define __USUB8                           __usub8\n+#define __UQSUB8                          __uqsub8\n+#define __UHSUB8                          __uhsub8\n+#define __SADD16                          __sadd16\n+#define __QADD16                          __qadd16\n+#define __SHADD16                         __shadd16\n+#define __UADD16                          __uadd16\n+#define __UQADD16                         __uqadd16\n+#define __UHADD16                         __uhadd16\n+#define __SSUB16                          __ssub16\n+#define __QSUB16                          __qsub16\n+#define __SHSUB16                         __shsub16\n+#define __USUB16                          __usub16\n+#define __UQSUB16                         __uqsub16\n+#define __UHSUB16                         __uhsub16\n+#define __SASX                            __sasx\n+#define __QASX                            __qasx\n+#define __SHASX                           __shasx\n+#define __UASX                            __uasx\n+#define __UQASX                           __uqasx\n+#define __UHASX                           __uhasx\n+#define __SSAX                            __ssax\n+#define __QSAX                            __qsax\n+#define __SHSAX                           __shsax\n+#define __USAX                            __usax\n+#define __UQSAX                           __uqsax\n+#define __UHSAX                           __uhsax\n+#define __USAD8                           __usad8\n+#define __USADA8                          __usada8\n+#define __SSAT16                          __ssat16\n+#define __USAT16                          __usat16\n+#define __UXTB16                          __uxtb16\n+#define __UXTAB16                         __uxtab16\n+#define __SXTB16                          __sxtb16\n+#define __SXTAB16                         __sxtab16\n+#define __SMUAD                           __smuad\n+#define __SMUADX                          __smuadx\n+#define __SMLAD                           __smlad\n+#define __SMLADX                          __smladx\n+#define __SMLALD                          __smlald\n+#define __SMLALDX                         __smlaldx\n+#define __SMUSD                           __smusd\n+#define __SMUSDX                          __smusdx\n+#define __SMLSD                           __smlsd\n+#define __SMLSDX                          __smlsdx\n+#define __SMLSLD                          __smlsld\n+#define __SMLSLDX                         __smlsldx\n+#define __SEL                             __sel\n+#define __QADD                            __qadd\n+#define __QSUB                            __qsub\n+\n+#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \\\n+                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )\n+\n+#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \\\n+                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )\n+\n+#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \\\n+                                                      ((int64_t)(ARG3) << 32)      ) >> 32))\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#include <cmsis_iar.h>\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+#include <cmsis_ccs.h>\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhadd8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsub8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhadd16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsub16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhasx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"ssax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"shsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uqsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uhsax %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usad8 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"usada8 %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SSAT16(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"ssat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+#define __USAT16(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"usat16 %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"uxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sxtb16 %0, %1\" : \"=r\" (result) : \"r\" (op1));\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sxtab16 %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smuad %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smuadx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlad %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smladx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SMLALD(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlald %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+#define __SMLALDX(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((uint64_t)(ARG3) >> 32), __ARG3_L = (uint32_t)((uint64_t)(ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlaldx %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smusd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smusdx %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlsd %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"smlsdx %0, %1, %2, %3\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2), \"r\" (op3) );\n+  return(result);\n+}\n+\n+#define __SMLSLD(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlsld %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+#define __SMLSLDX(ARG1,ARG2,ARG3) \\\n+({ \\\n+  uint32_t __ARG1 = (ARG1), __ARG2 = (ARG2), __ARG3_H = (uint32_t)((ARG3) >> 32), __ARG3_L = (uint32_t)((ARG3) & 0xFFFFFFFFUL); \\\n+  __ASM volatile (\"smlsldx %0, %1, %2, %3\" : \"=r\" (__ARG3_L), \"=r\" (__ARG3_H) : \"r\" (__ARG1), \"r\" (__ARG2), \"0\" (__ARG3_L), \"1\" (__ARG3_H) ); \\\n+  (uint64_t)(((uint64_t)__ARG3_H << 32) | __ARG3_L); \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"sel %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qadd %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"qsub %0, %1, %2\" : \"=r\" (result) : \"r\" (op1), \"r\" (op2) );\n+  return(result);\n+}\n+\n+#define __PKHBT(ARG1,ARG2,ARG3) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n+  __ASM (\"pkhbt %0, %1, %2, lsl %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n+  __RES; \\\n+ })\n+\n+#define __PKHTB(ARG1,ARG2,ARG3) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \\\n+  if (ARG3 == 0) \\\n+    __ASM (\"pkhtb %0, %1, %2\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2)  ); \\\n+  else \\\n+    __ASM (\"pkhtb %0, %1, %2, asr %3\" : \"=r\" (__RES) :  \"r\" (__ARG1), \"r\" (__ARG2), \"I\" (ARG3)  ); \\\n+  __RES; \\\n+ })\n+\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)\n+{\n+ int32_t result;\n+\n+ __ASM volatile (\"smmla %0, %1, %2, %3\" : \"=r\" (result): \"r\"  (op1), \"r\" (op2), \"r\" (op3) );\n+ return(result);\n+}\n+\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+\n+/*------ CM4 SIMD Intrinsics -----------------------------------------------------*/\n+/* not yet supported */\n+/*-- End CM4 SIMD Intrinsics -----------------------------------------------------*/\n+\n+\n+#endif\n+\n+/*@} end of group CMSIS_SIMD_intrinsics */\n+\n+\n+#endif /* __CORE_CM4_SIMD_H */\n+\n+#ifdef __cplusplus\n+}\n+#endif\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/core_cmFunc.h ./lpc_chip_43xx/inc/core_cmFunc.h\n--- a_OkB2vL/lpc_chip_43xx/inc/core_cmFunc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/core_cmFunc.h\t2017-02-27 21:03:16.996043462 -0300\n@@ -0,0 +1,636 @@\n+/**************************************************************************//**\n+ * @file     core_cmFunc.h\n+ * @brief    CMSIS Cortex-M Core Function Access Header File\n+ * @version  V3.20\n+ * @date     25. February 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifndef __CORE_CMFUNC_H\n+#define __CORE_CMFUNC_H\n+\n+\n+/* ###########################  Core Function Access  ########################### */\n+/** \\ingroup  CMSIS_Core_FunctionInterface\n+    \\defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions\n+  @{\n+ */\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+#if (__ARMCC_VERSION < 400677)\n+  #error \"Please use ARM Compiler Toolchain V4.0.677 or later!\"\n+#endif\n+\n+/* intrinsic void __enable_irq();     */\n+/* intrinsic void __disable_irq();    */\n+\n+/** \\brief  Get Control Register\n+\n+    This function returns the content of the Control Register.\n+\n+    \\return               Control Register value\n+ */\n+__STATIC_INLINE uint32_t __get_CONTROL(void)\n+{\n+  register uint32_t __regControl         __ASM(\"control\");\n+  return(__regControl);\n+}\n+\n+\n+/** \\brief  Set Control Register\n+\n+    This function writes the given value to the Control Register.\n+\n+    \\param [in]    control  Control Register value to set\n+ */\n+__STATIC_INLINE void __set_CONTROL(uint32_t control)\n+{\n+  register uint32_t __regControl         __ASM(\"control\");\n+  __regControl = control;\n+}\n+\n+\n+/** \\brief  Get IPSR Register\n+\n+    This function returns the content of the IPSR Register.\n+\n+    \\return               IPSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_IPSR(void)\n+{\n+  register uint32_t __regIPSR          __ASM(\"ipsr\");\n+  return(__regIPSR);\n+}\n+\n+\n+/** \\brief  Get APSR Register\n+\n+    This function returns the content of the APSR Register.\n+\n+    \\return               APSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_APSR(void)\n+{\n+  register uint32_t __regAPSR          __ASM(\"apsr\");\n+  return(__regAPSR);\n+}\n+\n+\n+/** \\brief  Get xPSR Register\n+\n+    This function returns the content of the xPSR Register.\n+\n+    \\return               xPSR Register value\n+ */\n+__STATIC_INLINE uint32_t __get_xPSR(void)\n+{\n+  register uint32_t __regXPSR          __ASM(\"xpsr\");\n+  return(__regXPSR);\n+}\n+\n+\n+/** \\brief  Get Process Stack Pointer\n+\n+    This function returns the current value of the Process Stack Pointer (PSP).\n+\n+    \\return               PSP Register value\n+ */\n+__STATIC_INLINE uint32_t __get_PSP(void)\n+{\n+  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n+  return(__regProcessStackPointer);\n+}\n+\n+\n+/** \\brief  Set Process Stack Pointer\n+\n+    This function assigns the given value to the Process Stack Pointer (PSP).\n+\n+    \\param [in]    topOfProcStack  Process Stack Pointer value to set\n+ */\n+__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\n+{\n+  register uint32_t __regProcessStackPointer  __ASM(\"psp\");\n+  __regProcessStackPointer = topOfProcStack;\n+}\n+\n+\n+/** \\brief  Get Main Stack Pointer\n+\n+    This function returns the current value of the Main Stack Pointer (MSP).\n+\n+    \\return               MSP Register value\n+ */\n+__STATIC_INLINE uint32_t __get_MSP(void)\n+{\n+  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n+  return(__regMainStackPointer);\n+}\n+\n+\n+/** \\brief  Set Main Stack Pointer\n+\n+    This function assigns the given value to the Main Stack Pointer (MSP).\n+\n+    \\param [in]    topOfMainStack  Main Stack Pointer value to set\n+ */\n+__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\n+{\n+  register uint32_t __regMainStackPointer     __ASM(\"msp\");\n+  __regMainStackPointer = topOfMainStack;\n+}\n+\n+\n+/** \\brief  Get Priority Mask\n+\n+    This function returns the current state of the priority mask bit from the Priority Mask Register.\n+\n+    \\return               Priority Mask value\n+ */\n+__STATIC_INLINE uint32_t __get_PRIMASK(void)\n+{\n+  register uint32_t __regPriMask         __ASM(\"primask\");\n+  return(__regPriMask);\n+}\n+\n+\n+/** \\brief  Set Priority Mask\n+\n+    This function assigns the given value to the Priority Mask Register.\n+\n+    \\param [in]    priMask  Priority Mask\n+ */\n+__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\n+{\n+  register uint32_t __regPriMask         __ASM(\"primask\");\n+  __regPriMask = (priMask);\n+}\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Enable FIQ\n+\n+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+#define __enable_fault_irq                __enable_fiq\n+\n+\n+/** \\brief  Disable FIQ\n+\n+    This function disables FIQ interrupts by setting the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+#define __disable_fault_irq               __disable_fiq\n+\n+\n+/** \\brief  Get Base Priority\n+\n+    This function returns the current value of the Base Priority register.\n+\n+    \\return               Base Priority register value\n+ */\n+__STATIC_INLINE uint32_t  __get_BASEPRI(void)\n+{\n+  register uint32_t __regBasePri         __ASM(\"basepri\");\n+  return(__regBasePri);\n+}\n+\n+\n+/** \\brief  Set Base Priority\n+\n+    This function assigns the given value to the Base Priority register.\n+\n+    \\param [in]    basePri  Base Priority value to set\n+ */\n+__STATIC_INLINE void __set_BASEPRI(uint32_t basePri)\n+{\n+  register uint32_t __regBasePri         __ASM(\"basepri\");\n+  __regBasePri = (basePri & 0xff);\n+}\n+\n+\n+/** \\brief  Get Fault Mask\n+\n+    This function returns the current value of the Fault Mask register.\n+\n+    \\return               Fault Mask register value\n+ */\n+__STATIC_INLINE uint32_t __get_FAULTMASK(void)\n+{\n+  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n+  return(__regFaultMask);\n+}\n+\n+\n+/** \\brief  Set Fault Mask\n+\n+    This function assigns the given value to the Fault Mask register.\n+\n+    \\param [in]    faultMask  Fault Mask value to set\n+ */\n+__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\n+{\n+  register uint32_t __regFaultMask       __ASM(\"faultmask\");\n+  __regFaultMask = (faultMask & (uint32_t)1);\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+#if       (__CORTEX_M == 0x04)\n+\n+/** \\brief  Get FPSCR\n+\n+    This function returns the current value of the Floating Point Status/Control register.\n+\n+    \\return               Floating Point Status/Control register value\n+ */\n+__STATIC_INLINE uint32_t __get_FPSCR(void)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  register uint32_t __regfpscr         __ASM(\"fpscr\");\n+  return(__regfpscr);\n+#else\n+   return(0);\n+#endif\n+}\n+\n+\n+/** \\brief  Set FPSCR\n+\n+    This function assigns the given value to the Floating Point Status/Control register.\n+\n+    \\param [in]    fpscr  Floating Point Status/Control value to set\n+ */\n+__STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  register uint32_t __regfpscr         __ASM(\"fpscr\");\n+  __regfpscr = (fpscr);\n+#endif\n+}\n+\n+#endif /* (__CORTEX_M == 0x04) */\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+#include <cmsis_iar.h>\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+#include <cmsis_ccs.h>\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/** \\brief  Enable IRQ Interrupts\n+\n+  This function enables IRQ interrupts by clearing the I-bit in the CPSR.\n+  Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)\n+{\n+  __ASM volatile (\"cpsie i\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Disable IRQ Interrupts\n+\n+  This function disables IRQ interrupts by setting the I-bit in the CPSR.\n+  Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)\n+{\n+  __ASM volatile (\"cpsid i\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Control Register\n+\n+    This function returns the content of the Control Register.\n+\n+    \\return               Control Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, control\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Control Register\n+\n+    This function writes the given value to the Control Register.\n+\n+    \\param [in]    control  Control Register value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)\n+{\n+  __ASM volatile (\"MSR control, %0\" : : \"r\" (control) : \"memory\");\n+}\n+\n+\n+/** \\brief  Get IPSR Register\n+\n+    This function returns the content of the IPSR Register.\n+\n+    \\return               IPSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, ipsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get APSR Register\n+\n+    This function returns the content of the APSR Register.\n+\n+    \\return               APSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, apsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get xPSR Register\n+\n+    This function returns the content of the xPSR Register.\n+\n+    \\return               xPSR Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, xpsr\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Get Process Stack Pointer\n+\n+    This function returns the current value of the Process Stack Pointer (PSP).\n+\n+    \\return               PSP Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)\n+{\n+  register uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, psp\\n\"  : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Process Stack Pointer\n+\n+    This function assigns the given value to the Process Stack Pointer (PSP).\n+\n+    \\param [in]    topOfProcStack  Process Stack Pointer value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)\n+{\n+  __ASM volatile (\"MSR psp, %0\\n\" : : \"r\" (topOfProcStack) : \"sp\");\n+}\n+\n+\n+/** \\brief  Get Main Stack Pointer\n+\n+    This function returns the current value of the Main Stack Pointer (MSP).\n+\n+    \\return               MSP Register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)\n+{\n+  register uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, msp\\n\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Main Stack Pointer\n+\n+    This function assigns the given value to the Main Stack Pointer (MSP).\n+\n+    \\param [in]    topOfMainStack  Main Stack Pointer value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)\n+{\n+  __ASM volatile (\"MSR msp, %0\\n\" : : \"r\" (topOfMainStack) : \"sp\");\n+}\n+\n+\n+/** \\brief  Get Priority Mask\n+\n+    This function returns the current state of the priority mask bit from the Priority Mask Register.\n+\n+    \\return               Priority Mask value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, primask\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Priority Mask\n+\n+    This function assigns the given value to the Priority Mask Register.\n+\n+    \\param [in]    priMask  Priority Mask\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)\n+{\n+  __ASM volatile (\"MSR primask, %0\" : : \"r\" (priMask) : \"memory\");\n+}\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Enable FIQ\n+\n+    This function enables FIQ interrupts by clearing the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)\n+{\n+  __ASM volatile (\"cpsie f\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Disable FIQ\n+\n+    This function disables FIQ interrupts by setting the F-bit in the CPSR.\n+    Can only be executed in Privileged modes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)\n+{\n+  __ASM volatile (\"cpsid f\" : : : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Base Priority\n+\n+    This function returns the current value of the Base Priority register.\n+\n+    \\return               Base Priority register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, basepri_max\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Base Priority\n+\n+    This function assigns the given value to the Base Priority register.\n+\n+    \\param [in]    basePri  Base Priority value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)\n+{\n+  __ASM volatile (\"MSR basepri, %0\" : : \"r\" (value) : \"memory\");\n+}\n+\n+\n+/** \\brief  Get Fault Mask\n+\n+    This function returns the current value of the Fault Mask register.\n+\n+    \\return               Fault Mask register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"MRS %0, faultmask\" : \"=r\" (result) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Set Fault Mask\n+\n+    This function assigns the given value to the Fault Mask register.\n+\n+    \\param [in]    faultMask  Fault Mask value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)\n+{\n+  __ASM volatile (\"MSR faultmask, %0\" : : \"r\" (faultMask) : \"memory\");\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+#if       (__CORTEX_M == 0x04)\n+\n+/** \\brief  Get FPSCR\n+\n+    This function returns the current value of the Floating Point Status/Control register.\n+\n+    \\return               Floating Point Status/Control register value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  uint32_t result;\n+\n+  /* Empty asm statement works as a scheduling barrier */\n+  __ASM volatile (\"\");\n+  __ASM volatile (\"VMRS %0, fpscr\" : \"=r\" (result) );\n+  __ASM volatile (\"\");\n+  return(result);\n+#else\n+   return(0);\n+#endif\n+}\n+\n+\n+/** \\brief  Set FPSCR\n+\n+    This function assigns the given value to the Floating Point Status/Control register.\n+\n+    \\param [in]    fpscr  Floating Point Status/Control value to set\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)\n+{\n+#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)\n+  /* Empty asm statement works as a scheduling barrier */\n+  __ASM volatile (\"\");\n+  __ASM volatile (\"VMSR fpscr, %0\" : : \"r\" (fpscr) : \"vfpcc\");\n+  __ASM volatile (\"\");\n+#endif\n+}\n+\n+#endif /* (__CORTEX_M == 0x04) */\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+/*\n+ * The CMSIS functions have been implemented as intrinsics in the compiler.\n+ * Please use \"carm -?i\" to get an up to date list of all instrinsics,\n+ * Including the CMSIS ones.\n+ */\n+\n+#endif\n+\n+/*@} end of CMSIS_Core_RegAccFunctions */\n+\n+\n+#endif /* __CORE_CMFUNC_H */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/core_cmInstr.h ./lpc_chip_43xx/inc/core_cmInstr.h\n--- a_OkB2vL/lpc_chip_43xx/inc/core_cmInstr.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/core_cmInstr.h\t2017-02-27 21:03:17.000043462 -0300\n@@ -0,0 +1,688 @@\n+/**************************************************************************//**\n+ * @file     core_cmInstr.h\n+ * @brief    CMSIS Cortex-M Core Instruction Access Header File\n+ * @version  V3.20\n+ * @date     05. March 2013\n+ *\n+ * @note\n+ *\n+ ******************************************************************************/\n+/* Copyright (c) 2009 - 2013 ARM LIMITED\n+\n+   All rights reserved.\n+   Redistribution and use in source and binary forms, with or without\n+   modification, are permitted provided that the following conditions are met:\n+   - Redistributions of source code must retain the above copyright\n+     notice, this list of conditions and the following disclaimer.\n+   - Redistributions in binary form must reproduce the above copyright\n+     notice, this list of conditions and the following disclaimer in the\n+     documentation and/or other materials provided with the distribution.\n+   - Neither the name of ARM nor the names of its contributors may be used\n+     to endorse or promote products derived from this software without\n+     specific prior written permission.\n+   *\n+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+   ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE\n+   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+   CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+   SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+   CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+   ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+   POSSIBILITY OF SUCH DAMAGE.\n+   ---------------------------------------------------------------------------*/\n+\n+\n+#ifndef __CORE_CMINSTR_H\n+#define __CORE_CMINSTR_H\n+\n+\n+/* ##########################  Core Instruction Access  ######################### */\n+/** \\defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface\n+  Access to dedicated instructions\n+  @{\n+*/\n+\n+#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/\n+/* ARM armcc specific functions */\n+\n+#if (__ARMCC_VERSION < 400677)\n+  #error \"Please use ARM Compiler Toolchain V4.0.677 or later!\"\n+#endif\n+\n+\n+/** \\brief  No Operation\n+\n+    No Operation does nothing. This instruction can be used for code alignment purposes.\n+ */\n+#define __NOP                             __nop\n+\n+\n+/** \\brief  Wait For Interrupt\n+\n+    Wait For Interrupt is a hint instruction that suspends execution\n+    until one of a number of events occurs.\n+ */\n+#define __WFI                             __wfi\n+\n+\n+/** \\brief  Wait For Event\n+\n+    Wait For Event is a hint instruction that permits the processor to enter\n+    a low-power state until one of a number of events occurs.\n+ */\n+#define __WFE                             __wfe\n+\n+\n+/** \\brief  Send Event\n+\n+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n+ */\n+#define __SEV                             __sev\n+\n+\n+/** \\brief  Instruction Synchronization Barrier\n+\n+    Instruction Synchronization Barrier flushes the pipeline in the processor,\n+    so that all instructions following the ISB are fetched from cache or\n+    memory, after the instruction has been completed.\n+ */\n+#define __ISB()                           __isb(0xF)\n+\n+\n+/** \\brief  Data Synchronization Barrier\n+\n+    This function acts as a special kind of Data Memory Barrier.\n+    It completes when all explicit memory accesses before this instruction complete.\n+ */\n+#define __DSB()                           __dsb(0xF)\n+\n+\n+/** \\brief  Data Memory Barrier\n+\n+    This function ensures the apparent order of the explicit memory operations before\n+    and after the instruction, without ensuring their completion.\n+ */\n+#define __DMB()                           __dmb(0xF)\n+\n+\n+/** \\brief  Reverse byte order (32 bit)\n+\n+    This function reverses the byte order in integer value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#define __REV                             __rev\n+\n+\n+/** \\brief  Reverse byte order (16 bit)\n+\n+    This function reverses the byte order in two unsigned short values.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#ifndef __NO_EMBEDDED_ASM\n+__attribute__((section(\".rev16_text\"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)\n+{\n+  rev16 r0, r0\n+  bx lr\n+}\n+#endif\n+\n+/** \\brief  Reverse byte order in signed short value\n+\n+    This function reverses the byte order in a signed short value with sign extension to integer.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#ifndef __NO_EMBEDDED_ASM\n+__attribute__((section(\".revsh_text\"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)\n+{\n+  revsh r0, r0\n+  bx lr\n+}\n+#endif\n+\n+\n+/** \\brief  Rotate Right in unsigned value (32 bit)\n+\n+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n+\n+    \\param [in]    value  Value to rotate\n+    \\param [in]    value  Number of Bits to rotate\n+    \\return               Rotated value\n+ */\n+#define __ROR                             __ror\n+\n+\n+/** \\brief  Breakpoint\n+\n+    This function causes the processor to enter Debug state.\n+    Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n+\n+    \\param [in]    value  is ignored by the processor.\n+                   If required, a debugger can use it to store additional information about the breakpoint.\n+ */\n+#define __BKPT(value)                       __breakpoint(value)\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Reverse bit order of value\n+\n+    This function reverses the bit order of the given value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+#define __RBIT                            __rbit\n+\n+\n+/** \\brief  LDR Exclusive (8 bit)\n+\n+    This function performs a exclusive LDR command for 8 bit value.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return             value of type uint8_t at (*ptr)\n+ */\n+#define __LDREXB(ptr)                     ((uint8_t ) __ldrex(ptr))\n+\n+\n+/** \\brief  LDR Exclusive (16 bit)\n+\n+    This function performs a exclusive LDR command for 16 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint16_t at (*ptr)\n+ */\n+#define __LDREXH(ptr)                     ((uint16_t) __ldrex(ptr))\n+\n+\n+/** \\brief  LDR Exclusive (32 bit)\n+\n+    This function performs a exclusive LDR command for 32 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint32_t at (*ptr)\n+ */\n+#define __LDREXW(ptr)                     ((uint32_t ) __ldrex(ptr))\n+\n+\n+/** \\brief  STR Exclusive (8 bit)\n+\n+    This function performs a exclusive STR command for 8 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXB(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  STR Exclusive (16 bit)\n+\n+    This function performs a exclusive STR command for 16 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXH(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  STR Exclusive (32 bit)\n+\n+    This function performs a exclusive STR command for 32 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+#define __STREXW(value, ptr)              __strex(value, ptr)\n+\n+\n+/** \\brief  Remove the exclusive lock\n+\n+    This function removes the exclusive lock which is created by LDREX.\n+\n+ */\n+#define __CLREX                           __clrex\n+\n+\n+/** \\brief  Signed Saturate\n+\n+    This function saturates a signed value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (1..32)\n+    \\return             Saturated value\n+ */\n+#define __SSAT                            __ssat\n+\n+\n+/** \\brief  Unsigned Saturate\n+\n+    This function saturates an unsigned value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (0..31)\n+    \\return             Saturated value\n+ */\n+#define __USAT                            __usat\n+\n+\n+/** \\brief  Count leading zeros\n+\n+    This function counts the number of leading zeros of a data value.\n+\n+    \\param [in]  value  Value to count the leading zeros\n+    \\return             number of leading zeros in value\n+ */\n+#define __CLZ                             __clz\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+\n+#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/\n+/* IAR iccarm specific functions */\n+\n+#include <cmsis_iar.h>\n+\n+\n+#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/\n+/* TI CCS specific functions */\n+\n+#include <cmsis_ccs.h>\n+\n+\n+#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/\n+/* GNU gcc specific functions */\n+\n+/* Define macros for porting to both thumb1 and thumb2.\n+ * For thumb1, use low register (r0-r7), specified by constrant \"l\"\n+ * Otherwise, use general registers, specified by constrant \"r\" */\n+#if defined (__thumb__) && !defined (__thumb2__)\n+#define __CMSIS_GCC_OUT_REG(r) \"=l\" (r)\n+#define __CMSIS_GCC_USE_REG(r) \"l\" (r)\n+#else\n+#define __CMSIS_GCC_OUT_REG(r) \"=r\" (r)\n+#define __CMSIS_GCC_USE_REG(r) \"r\" (r)\n+#endif\n+\n+/** \\brief  No Operation\n+\n+    No Operation does nothing. This instruction can be used for code alignment purposes.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void)\n+{\n+  __ASM volatile (\"nop\");\n+}\n+\n+\n+/** \\brief  Wait For Interrupt\n+\n+    Wait For Interrupt is a hint instruction that suspends execution\n+    until one of a number of events occurs.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void)\n+{\n+  __ASM volatile (\"wfi\");\n+}\n+\n+\n+/** \\brief  Wait For Event\n+\n+    Wait For Event is a hint instruction that permits the processor to enter\n+    a low-power state until one of a number of events occurs.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void)\n+{\n+  __ASM volatile (\"wfe\");\n+}\n+\n+\n+/** \\brief  Send Event\n+\n+    Send Event is a hint instruction. It causes an event to be signaled to the CPU.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void)\n+{\n+  __ASM volatile (\"sev\");\n+}\n+\n+\n+/** \\brief  Instruction Synchronization Barrier\n+\n+    Instruction Synchronization Barrier flushes the pipeline in the processor,\n+    so that all instructions following the ISB are fetched from cache or\n+    memory, after the instruction has been completed.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void)\n+{\n+  __ASM volatile (\"isb\");\n+}\n+\n+\n+/** \\brief  Data Synchronization Barrier\n+\n+    This function acts as a special kind of Data Memory Barrier.\n+    It completes when all explicit memory accesses before this instruction complete.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void)\n+{\n+  __ASM volatile (\"dsb\");\n+}\n+\n+\n+/** \\brief  Data Memory Barrier\n+\n+    This function ensures the apparent order of the explicit memory operations before\n+    and after the instruction, without ensuring their completion.\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void)\n+{\n+  __ASM volatile (\"dmb\");\n+}\n+\n+\n+/** \\brief  Reverse byte order (32 bit)\n+\n+    This function reverses the byte order in integer value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value)\n+{\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)\n+  return __builtin_bswap32(value);\n+#else\n+  uint32_t result;\n+\n+  __ASM volatile (\"rev %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+#endif\n+}\n+\n+\n+/** \\brief  Reverse byte order (16 bit)\n+\n+    This function reverses the byte order in two unsigned short values.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value)\n+{\n+  uint32_t result;\n+\n+  __ASM volatile (\"rev16 %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+}\n+\n+\n+/** \\brief  Reverse byte order in signed short value\n+\n+    This function reverses the byte order in a signed short value with sign extension to integer.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value)\n+{\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+  return (short)__builtin_bswap16(value);\n+#else\n+  uint32_t result;\n+\n+  __ASM volatile (\"revsh %0, %1\" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );\n+  return(result);\n+#endif\n+}\n+\n+\n+/** \\brief  Rotate Right in unsigned value (32 bit)\n+\n+    This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.\n+\n+    \\param [in]    value  Value to rotate\n+    \\param [in]    value  Number of Bits to rotate\n+    \\return               Rotated value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)\n+{\n+  return (op1 >> op2) | (op1 << (32 - op2));\n+}\n+\n+\n+/** \\brief  Breakpoint\n+\n+    This function causes the processor to enter Debug state.\n+    Debug tools can use this to investigate system state when the instruction at a particular address is reached.\n+\n+    \\param [in]    value  is ignored by the processor.\n+                   If required, a debugger can use it to store additional information about the breakpoint.\n+ */\n+#define __BKPT(value)                       __ASM volatile (\"bkpt \"#value)\n+\n+\n+#if       (__CORTEX_M >= 0x03)\n+\n+/** \\brief  Reverse bit order of value\n+\n+    This function reverses the bit order of the given value.\n+\n+    \\param [in]    value  Value to reverse\n+    \\return               Reversed value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value)\n+{\n+  uint32_t result;\n+\n+   __ASM volatile (\"rbit %0, %1\" : \"=r\" (result) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (8 bit)\n+\n+    This function performs a exclusive LDR command for 8 bit value.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return             value of type uint8_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)\n+{\n+    uint32_t result;\n+\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+   __ASM volatile (\"ldrexb %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+#else\n+    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n+       accepted by assembler. So has to use following less efficient pattern.\n+    */\n+   __ASM volatile (\"ldrexb %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n+#endif\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (16 bit)\n+\n+    This function performs a exclusive LDR command for 16 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint16_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)\n+{\n+    uint32_t result;\n+\n+#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)\n+   __ASM volatile (\"ldrexh %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+#else\n+    /* Prior to GCC 4.8, \"Q\" will be expanded to [rx, #0] which is not\n+       accepted by assembler. So has to use following less efficient pattern.\n+    */\n+   __ASM volatile (\"ldrexh %0, [%1]\" : \"=r\" (result) : \"r\" (addr) : \"memory\" );\n+#endif\n+   return(result);\n+}\n+\n+\n+/** \\brief  LDR Exclusive (32 bit)\n+\n+    This function performs a exclusive LDR command for 32 bit values.\n+\n+    \\param [in]    ptr  Pointer to data\n+    \\return        value of type uint32_t at (*ptr)\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)\n+{\n+    uint32_t result;\n+\n+   __ASM volatile (\"ldrex %0, %1\" : \"=r\" (result) : \"Q\" (*addr) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (8 bit)\n+\n+    This function performs a exclusive STR command for 8 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strexb %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (16 bit)\n+\n+    This function performs a exclusive STR command for 16 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strexh %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  STR Exclusive (32 bit)\n+\n+    This function performs a exclusive STR command for 32 bit values.\n+\n+    \\param [in]  value  Value to store\n+    \\param [in]    ptr  Pointer to location\n+    \\return          0  Function succeeded\n+    \\return          1  Function failed\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)\n+{\n+   uint32_t result;\n+\n+   __ASM volatile (\"strex %0, %2, %1\" : \"=&r\" (result), \"=Q\" (*addr) : \"r\" (value) );\n+   return(result);\n+}\n+\n+\n+/** \\brief  Remove the exclusive lock\n+\n+    This function removes the exclusive lock which is created by LDREX.\n+\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)\n+{\n+  __ASM volatile (\"clrex\" ::: \"memory\");\n+}\n+\n+\n+/** \\brief  Signed Saturate\n+\n+    This function saturates a signed value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (1..32)\n+    \\return             Saturated value\n+ */\n+#define __SSAT(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"ssat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+\n+/** \\brief  Unsigned Saturate\n+\n+    This function saturates an unsigned value.\n+\n+    \\param [in]  value  Value to be saturated\n+    \\param [in]    sat  Bit position to saturate to (0..31)\n+    \\return             Saturated value\n+ */\n+#define __USAT(ARG1,ARG2) \\\n+({                          \\\n+  uint32_t __RES, __ARG1 = (ARG1); \\\n+  __ASM (\"usat %0, %1, %2\" : \"=r\" (__RES) :  \"I\" (ARG2), \"r\" (__ARG1) ); \\\n+  __RES; \\\n+ })\n+\n+\n+/** \\brief  Count leading zeros\n+\n+    This function counts the number of leading zeros of a data value.\n+\n+    \\param [in]  value  Value to count the leading zeros\n+    \\return             number of leading zeros in value\n+ */\n+__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value)\n+{\n+   uint32_t result;\n+\n+  __ASM volatile (\"clz %0, %1\" : \"=r\" (result) : \"r\" (value) );\n+  return(result);\n+}\n+\n+#endif /* (__CORTEX_M >= 0x03) */\n+\n+\n+\n+\n+#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/\n+/* TASKING carm specific functions */\n+\n+/*\n+ * The CMSIS functions have been implemented as intrinsics in the compiler.\n+ * Please use \"carm -?i\" to get an up to date list of all intrinsics,\n+ * Including the CMSIS ones.\n+ */\n+\n+#endif\n+\n+/*@}*/ /* end of group CMSIS_Core_InstructionInterface */\n+\n+#endif /* __CORE_CMINSTR_H */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/creg_18xx_43xx.h ./lpc_chip_43xx/inc/creg_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/creg_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/creg_18xx_43xx.h\t2017-02-27 21:03:17.000043462 -0300\n@@ -0,0 +1,238 @@\n+/*\n+ * @brief LPC18XX/43XX CREG control functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __CREG_18XX_43XX_H_\n+#define __CREG_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CREG_18XX_43XX CHIP: LPC18xx/43xx CREG driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief CREG Register Block\n+ */\n+typedef struct {                       /*!< CREG Structure         */\n+   __I  uint32_t  RESERVED0;\n+   __IO uint32_t  CREG0;               /*!< Chip configuration register 32 kHz oscillator output and BOD control register. */\n+   __I  uint32_t  RESERVED1[62];\n+   __IO uint32_t  MXMEMMAP;            /*!< ARM Cortex-M3/M4 memory mapping */\n+#if defined(CHIP_LPC18XX)\n+   __I  uint32_t  RESERVED2[5];\n+#else\n+   __I  uint32_t  RESERVED2;\n+   __I  uint32_t  CREG1;               /*!< Configuration Register 1 */\n+   __I  uint32_t  CREG2;               /*!< Configuration Register 2 */\n+   __I  uint32_t  CREG3;               /*!< Configuration Register 3 */\n+   __I  uint32_t  CREG4;               /*!< Configuration Register 4 */\n+#endif\n+   __IO uint32_t  CREG5;               /*!< Chip configuration register 5. Controls JTAG access. */\n+   __IO uint32_t  DMAMUX;              /*!< DMA muxing control     */\n+   __IO uint32_t  FLASHCFGA;           /*!< Flash accelerator configuration register for flash bank A */\n+   __IO uint32_t  FLASHCFGB;           /*!< Flash accelerator configuration register for flash bank B */\n+   __IO uint32_t  ETBCFG;              /*!< ETB RAM configuration  */\n+   __IO uint32_t  CREG6;               /*!< Chip configuration register 6. */\n+#if defined(CHIP_LPC18XX)\n+   __I  uint32_t  RESERVED4[52];\n+#else\n+   __IO uint32_t  M4TXEVENT;           /*!< M4 IPC event register */\n+   __I  uint32_t  RESERVED4[51];\n+#endif\n+   __I  uint32_t  CHIPID;              /*!< Part ID                */\n+#if defined(CHIP_LPC18XX)\n+   __I  uint32_t  RESERVED5[191];\n+#else\n+   __I  uint32_t  RESERVED5[65];\n+   __IO uint32_t  M0SUBMEMMAP;         /*!< M0SUB IPC Event memory mapping */\n+   __I  uint32_t  RESERVED6[2];\n+   __IO uint32_t  M0SUBTXEVENT;        /*!< M0SUB IPC Event register */\n+   __I  uint32_t  RESERVED7[58];\n+   __IO uint32_t  M0APPTXEVENT;        /*!< M0APP IPC Event register */\n+   __IO uint32_t  M0APPMEMMAP;         /*!< ARM Cortex M0APP memory mapping */\n+   __I  uint32_t  RESERVED8[62];\n+#endif\n+   __IO uint32_t  USB0FLADJ;           /*!< USB0 frame length adjust register */\n+   __I  uint32_t  RESERVED9[63];\n+   __IO uint32_t  USB1FLADJ;           /*!< USB1 frame length adjust register */\n+} LPC_CREG_T;\n+\n+/**\n+ * @brief  Identifies whether on-chip flash is present\n+ * @return true if on chip flash is available, otherwise false\n+ */\n+STATIC INLINE uint32_t Chip_CREG_OnChipFlashIsPresent(void)\n+{\n+   return LPC_CREG->CHIPID != 0x3284E02B;\n+}\n+\n+/**\n+ * @brief  Configures the onboard Flash Accelerator in flash-based LPC18xx/LPC43xx parts.\n+ * @param  Hz  : Current frequency in Hz of the CPU\n+ * @return Nothing\n+ * This function should be called with the higher frequency before the clock frequency is\n+ * increased and it should be called with the new lower value after the clock frequency is\n+ * decreased.\n+ */\n+STATIC INLINE void Chip_CREG_SetFlashAcceleration(uint32_t Hz)\n+{\n+   uint32_t FAValue = Hz / 21510000;\n+\n+   LPC_CREG->FLASHCFGA = (LPC_CREG->FLASHCFGA & (~(0xF << 12))) | (FAValue << 12);\n+   LPC_CREG->FLASHCFGB = (LPC_CREG->FLASHCFGB & (~(0xF << 12))) | (FAValue << 12);\n+}\n+\n+/**\n+ * @brief FLASH Access time definitions\n+ */\n+typedef enum {\n+   FLASHTIM_20MHZ_CPU = 0,     /*!< Flash accesses use 1 CPU clocks. Use for up to 20 MHz CPU clock */\n+   FLASHTIM_40MHZ_CPU = 1,     /*!< Flash accesses use 2 CPU clocks. Use for up to 40 MHz CPU clock */\n+   FLASHTIM_60MHZ_CPU = 2,     /*!< Flash accesses use 3 CPU clocks. Use for up to 60 MHz CPU clock */\n+   FLASHTIM_80MHZ_CPU = 3,     /*!< Flash accesses use 4 CPU clocks. Use for up to 80 MHz CPU clock */\n+   FLASHTIM_100MHZ_CPU = 4,    /*!< Flash accesses use 5 CPU clocks. Use for up to 100 MHz CPU clock */\n+   FLASHTIM_120MHZ_CPU = 5,    /*!< Flash accesses use 6 CPU clocks. Use for up to 120 MHz CPU clock */\n+   FLASHTIM_150MHZ_CPU = 6,    /*!< Flash accesses use 7 CPU clocks. Use for up to 150 Mhz CPU clock */\n+   FLASHTIM_170MHZ_CPU = 7,        /*!< Flash accesses use 8 CPU clocks. Use for up to 170 MHz CPU clock */\n+   FLASHTIM_190MHZ_CPU = 8,        /*!< Flash accesses use 9 CPU clocks. Use for up to 190 MHz CPU clock */\n+   FLASHTIM_SAFE_SETTING = 9,      /*!< Flash accesses use 10 CPU clocks. Safe setting for any allowed conditions */\n+} CREG_FLASHTIM_T;\n+\n+/**\n+ * @brief  Set FLASH memory access time in clocks\n+ * @param  clks    : FLASH access speed rating\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_SetFLASHAccess(CREG_FLASHTIM_T clks)\n+{\n+   uint32_t tmpA, tmpB;\n+\n+   /* Don't alter lower bits */\n+   tmpA = LPC_CREG->FLASHCFGA & ~(0xF << 12);\n+   LPC_CREG->FLASHCFGA = tmpA | ((uint32_t) clks << 12);\n+   tmpB = LPC_CREG->FLASHCFGB & ~(0xF << 12);\n+   LPC_CREG->FLASHCFGB = tmpB | ((uint32_t) clks << 12);\n+}\n+\n+/**\n+ * @brief  Enables the USB0 high-speed PHY on LPC18xx/LPC43xx parts\n+ * @return Nothing\n+ * @note   The USB0 PLL & clock should be configured before calling this function. This function\n+ * should be called before the USB0 registers are accessed.\n+ */\n+STATIC INLINE void Chip_CREG_EnableUSB0Phy(void)\n+{\n+   LPC_CREG->CREG0 &= ~(1 << 5);\n+}\n+\n+/**\n+ * @brief  Disable the USB0 high-speed PHY on LPC18xx/LPC43xx parts\n+ * @return Nothing\n+ * @note   The USB0 PLL & clock should be configured before calling this function. This function\n+ * should be called before the USB0 registers are accessed.\n+ */\n+STATIC INLINE void Chip_CREG_DisableUSB0Phy(void)\n+{\n+   LPC_CREG->CREG0 |= (1 << 5);\n+}\n+\n+/**\n+ * @brief  Configures the BOD and Reset on LPC18xx/LPC43xx parts.\n+ * @param  BODVL   : Brown-Out Detect voltage level (0-3)\n+ * @param  BORVL   : Brown-Out Reset voltage level (0-3)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_ConfigureBODaR(uint32_t BODVL, uint32_t BORVL)\n+{\n+   LPC_CREG->CREG0 = (LPC_CREG->CREG0 & ~((3 << 8) | (3 << 10))) | (BODVL << 8) | (BORVL << 10);\n+}\n+\n+#if (defined(CHIP_LPC43XX) && defined(LPC_CREG))\n+/**\n+ * @brief  Configures base address of image to be run in the Cortex M0APP Core.\n+ * @param  memaddr : Address of the image (must be aligned to 4K)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_SetM0AppMemMap(uint32_t memaddr)\n+{\n+   LPC_CREG->M0APPMEMMAP = memaddr & ~0xFFF;\n+}\n+\n+/**\n+ * @brief  Configures base address of image to be run in the Cortex M0SUB Core.\n+ * @param  memaddr : Address of the image (must be aligned to 4K)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_SetM0SubMemMap(uint32_t memaddr)\n+{\n+   LPC_CREG->M0SUBMEMMAP = memaddr & ~0xFFF;\n+}\n+\n+/**\n+ * @brief  Clear M4 IPC Event\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_ClearM4Event(void)\n+{\n+   LPC_CREG->M4TXEVENT = 0;\n+}\n+\n+/**\n+ * @brief  Clear M0APP IPC Event\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_ClearM0AppEvent(void)\n+{\n+   LPC_CREG->M0APPTXEVENT = 0;\n+}\n+\n+/**\n+ * @brief  Clear M0APP IPC Event\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_CREG_ClearM0SubEvent(void)\n+{\n+   LPC_CREG->M0SUBTXEVENT = 0;\n+}\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __CREG_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/dac_18xx_43xx.h ./lpc_chip_43xx/inc/dac_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/dac_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/dac_18xx_43xx.h\t2017-02-27 21:03:17.000043462 -0300\n@@ -0,0 +1,166 @@\n+/*\n+ * @brief LPC18xx/43xx D/A conversion driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __DAC_18XX_43XX_H_\n+#define __DAC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup DAC_18XX_43XX CHIP: LPC18xx/43xx D/A conversion driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief DAC register block structure\n+ */\n+typedef struct {           /*!< DAC Structure          */\n+   __IO uint32_t  CR;      /*!< DAC register. Holds the conversion data. */\n+   __IO uint32_t  CTRL;    /*!< DAC control register.  */\n+   __IO uint32_t  CNTVAL;  /*!< DAC counter value register. */\n+} LPC_DAC_T;\n+\n+/** After the selected settling time after this field is written with a\n+   new VALUE, the voltage on the AOUT pin (with respect to VSSA)\n+   is VALUE/1024 ? VREF */\n+#define DAC_VALUE(n)        ((uint32_t) ((n & 0x3FF) << 6))\n+/** If this bit = 0: The settling time of the DAC is 1 microsecond max,\n+ * and the maximum current is 700 microAmpere\n+ * If this bit = 1: The settling time of the DAC is 2.5 microsecond\n+ * and the maximum current is 350 microAmpere\n+ */\n+#define DAC_BIAS_EN         ((uint32_t) (1 << 16))\n+/** Value to reload interrupt DMA counter */\n+#define DAC_CCNT_VALUE(n)  ((uint32_t) (n & 0xffff))\n+\n+/** DCAR double buffering */\n+#define DAC_DBLBUF_ENA      ((uint32_t) (1 << 1))\n+/** DCAR Time out count enable */\n+#define DAC_CNT_ENA         ((uint32_t) (1 << 2))\n+/** DCAR DMA access */\n+#define DAC_DMA_ENA         ((uint32_t) (1 << 3))\n+/** DCAR DACCTRL mask bit */\n+#define DAC_DACCTRL_MASK    ((uint32_t) (0x0F))\n+\n+/**\n+ * @brief Current option in DAC configuration option\n+ */\n+typedef enum IP_DAC_CURRENT_OPT {\n+   DAC_MAX_UPDATE_RATE_1MHz = 0,   /*!< Shorter settling times and higher power consumption;\n+                                       allows for a maximum update rate of 1 MHz */\n+   DAC_MAX_UPDATE_RATE_400kHz      /*!< Longer settling times and lower power consumption;\n+                                       allows for a maximum update rate of 400 kHz */\n+} DAC_CURRENT_OPT_T;\n+\n+/**\n+ * @brief  Initial DAC configuration\n+ *              - Maximum  current is 700 uA\n+ *              - Value to AOUT is 0\n+ * @param  pDAC    : pointer to LPC_DAC_T\n+ * @return Nothing\n+ */\n+void Chip_DAC_Init(LPC_DAC_T *pDAC);\n+\n+/**\n+ * @brief  Shutdown DAC\n+ * @param  pDAC    : pointer to LPC_DAC_T\n+ * @return Nothing\n+ */\n+void Chip_DAC_DeInit(LPC_DAC_T *pDAC);\n+\n+/**\n+ * @brief  Update value to DAC buffer\n+ * @param  pDAC        : pointer to LPC_DAC_T\n+ * @param  dac_value   : value 10 bit to be converted to output\n+ * @return Nothing\n+ */\n+void Chip_DAC_UpdateValue(LPC_DAC_T *pDAC, uint32_t dac_value);\n+\n+/**\n+ * @brief  Set maximum update rate for DAC\n+ * @param  pDAC    : pointer to LPC_DAC_T\n+ * @param  bias    : Using Bias value, should be:\n+ *              - 0 is 1MHz\n+ *              - 1 is 400kHz\n+ * @return Nothing\n+ */\n+void Chip_DAC_SetBias(LPC_DAC_T *pDAC, uint32_t bias);\n+\n+/**\n+ * @brief  Enables the DMA operation and controls DMA timer\n+ * @param  pDAC        : pointer to LPC_DAC_T\n+ * @param  dacFlags    : An Or'ed value of the following DAC values:\n+ *                  - DAC_DBLBUF_ENA :enable/disable DACR double buffering feature\n+ *                  - DAC_CNT_ENA    :enable/disable timer out counter\n+ *                  - DAC_DMA_ENA    :enable/disable DMA access\n+ * @return Nothing\n+ * @note   Pass an Or'ed value of the DAC flags to enable those options.\n+ */\n+STATIC INLINE void Chip_DAC_ConfigDAConverterControl(LPC_DAC_T *pDAC, uint32_t dacFlags)\n+{\n+   uint32_t temp;\n+\n+   temp = pDAC->CTRL & ~DAC_DACCTRL_MASK;\n+   pDAC->CTRL = temp | dacFlags;\n+}\n+\n+/**\n+ * @brief  Set reload value for interrupt/DMA counter\n+ * @param  pDAC        : pointer to LPC_DAC_T\n+ * @param  time_out    : time out to reload for interrupt/DMA counter\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_DAC_SetDMATimeOut(LPC_DAC_T *pDAC, uint32_t time_out)\n+{\n+   pDAC->CNTVAL = DAC_CCNT_VALUE(time_out);\n+}\n+\n+/**\n+ * @brief  Get status for interrupt/DMA time out\n+ * @param  pDAC    : pointer to LPC_DAC_T\n+ * @return interrupt/DMA time out status, should be SET or RESET\n+ */\n+STATIC INLINE IntStatus Chip_DAC_GetIntStatus(LPC_DAC_T *pDAC)\n+{\n+   return (pDAC->CTRL & 0x01) ? SET : RESET;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __DAC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/eeprom_18xx_43xx.h ./lpc_chip_43xx/inc/eeprom_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/eeprom_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/eeprom_18xx_43xx.h\t2017-02-27 21:03:17.000043462 -0300\n@@ -0,0 +1,275 @@\n+/*\n+ * @brief LPC18xx/43xx EEPROM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef _EEPROM_18XX_43XX_H_\n+#define _EEPROM_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup EEPROM_18XX_43XX CHIP: LPC18xx/43xx EEPROM driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/* FIX ME: Move to chip.h */\n+/** EEPROM start address */\n+#define EEPROM_START                    (0x20040000)\n+/** EEPROM byes per page */\n+#define EEPROM_PAGE_SIZE                (128)\n+/**The number of EEPROM pages. The last page is not writable.*/\n+#define EEPROM_PAGE_NUM                 (128)\n+/** Get the eeprom address */\n+#define EEPROM_ADDRESS(page, offset)     (EEPROM_START + (EEPROM_PAGE_SIZE * (page)) + offset)\n+#define EEPROM_CLOCK_DIV                 1500000\n+#define EEPROM_READ_WAIT_STATE_VAL       0x58\n+#define EEPROM_WAIT_STATE_VAL            0x232\n+\n+/**\n+ * @brief EEPROM register block structure\n+ */\n+typedef struct {               /* EEPROM Structure */\n+   __IO uint32_t CMD;          /*!< EEPROM command register */\n+   uint32_t RESERVED0;\n+   __IO uint32_t RWSTATE;      /*!< EEPROM read wait state register */\n+   __IO uint32_t AUTOPROG;     /*!< EEPROM auto programming register */\n+   __IO uint32_t WSTATE;       /*!< EEPROM wait state register */\n+   __IO uint32_t CLKDIV;       /*!< EEPROM clock divider register */\n+   __IO uint32_t PWRDWN;       /*!< EEPROM power-down register */\n+   uint32_t RESERVED2[1007];\n+   __O  uint32_t INTENCLR;     /*!< EEPROM interrupt enable clear */\n+   __O  uint32_t INTENSET;     /*!< EEPROM interrupt enable set */\n+   __I  uint32_t INTSTAT;      /*!< EEPROM interrupt status */\n+   __I  uint32_t INTEN;        /*!< EEPROM interrupt enable */\n+   __O  uint32_t INTSTATCLR;   /*!< EEPROM interrupt status clear */\n+   __O  uint32_t INTSTATSET;   /*!< EEPROM interrupt status set */\n+} LPC_EEPROM_T;\n+\n+/*\n+ * @brief Macro defines for EEPROM command register\n+ */\n+#define EEPROM_CMD_ERASE_PRG_PAGE       (6)        /*!< EEPROM erase/program command */\n+\n+/*\n+ * @brief Macro defines for EEPROM Auto Programming register\n+ */\n+#define EEPROM_AUTOPROG_OFF     (0)        /*!<Auto programming off */\n+#define EEPROM_AUTOPROG_AFT_1WORDWRITTEN     (1)       /*!< Erase/program cycle is triggered after 1 word is written */\n+#define EEPROM_AUTOPROG_AFT_LASTWORDWRITTEN  (2)       /*!< Erase/program cycle is triggered after a write to AHB\n+                                                          address ending with ......1111100 (last word of a page) */\n+\n+/*\n+ * @brief Macro defines for EEPROM power down register\n+ */\n+#define EEPROM_PWRDWN                   (1 << 0)\n+\n+/*\n+ * @brief Macro defines for EEPROM interrupt related registers\n+ */\n+#define EEPROM_INT_ENDOFPROG            (1 << 2)\n+\n+/**\n+ * @brief  Put EEPROM device in power down mode\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_EnablePowerDown(LPC_EEPROM_T *pEEPROM)\n+{\n+   pEEPROM->PWRDWN = EEPROM_PWRDWN;\n+}\n+\n+/**\n+ * @brief  Bring EEPROM device out of power down mode\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_DisablePowerDown(LPC_EEPROM_T *pEEPROM)\n+{\n+   pEEPROM->PWRDWN = 0;\n+}\n+\n+/**\n+ * @brief  Initializes EEPROM\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+void Chip_EEPROM_Init(LPC_EEPROM_T *pEEPROM);\n+\n+/**\n+ * @brief  De-initializes EEPROM\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_DeInit(LPC_EEPROM_T *pEEPROM)\n+{\n+   /* Enable EEPROM power down mode */\n+   Chip_EEPROM_EnablePowerDown(pEEPROM);\n+}\n+\n+/**\n+ * @brief  Set Auto program mode\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mode    : Auto Program Mode (One of EEPROM_AUTOPROG_* value)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_SetAutoProg(LPC_EEPROM_T *pEEPROM, uint32_t mode)\n+{\n+   pEEPROM->AUTOPROG = mode;\n+}\n+\n+/**\n+ * @brief  Set EEPROM Read Wait State\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  ws      : Wait State value\n+ * @return Nothing\n+ * @note    Bits 7:0 represents wait state for Read Phase 2 and\n+ *          Bits 15:8 represents wait state for Read Phase1\n+ */\n+STATIC INLINE void Chip_EEPROM_SetReadWaitState(LPC_EEPROM_T *pEEPROM, uint32_t ws)\n+{\n+   pEEPROM->RWSTATE = ws;\n+}\n+\n+/**\n+ * @brief  Set EEPROM wait state\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  ws      : Wait State value\n+ * @return Nothing\n+ * @note    Bits 7:0 represents wait state for Phase 3,\n+ *          Bits 15:8 represents wait state for Phase2, and\n+ *          Bits 23:16 represents wait state for Phase1\n+ */\n+STATIC INLINE void Chip_EEPROM_SetWaitState(LPC_EEPROM_T *pEEPROM, uint32_t ws)\n+{\n+   pEEPROM->WSTATE = ws;\n+}\n+\n+/**\n+ * @brief  Select an EEPROM command\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  cmd     : EEPROM command\n+ * @return Nothing\n+ * @note   The cmd is OR-ed bits value of  EEPROM_CMD_*\n+ */\n+STATIC INLINE void Chip_EEPROM_SetCmd(LPC_EEPROM_T *pEEPROM, uint32_t cmd)\n+{\n+   pEEPROM->CMD = cmd;\n+}\n+\n+/**\n+ * @brief  Erase/Program an EEPROM page\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return Nothing\n+ */\n+void Chip_EEPROM_EraseProgramPage(LPC_EEPROM_T *pEEPROM);\n+\n+/**\n+ * @brief  Wait for interrupt occurs\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Expected interrupt\n+ * @return Nothing\n+ */\n+void Chip_EEPROM_WaitForIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask);\n+\n+/**\n+ * @brief  Enable EEPROM interrupt\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Interrupt mask (or-ed bits value of EEPROM_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_EnableInt(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   pEEPROM->INTENSET =  mask;\n+}\n+\n+/**\n+ * @brief  Disable EEPROM interrupt\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Interrupt mask (or-ed bits value of EEPROM_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_DisableInt(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   pEEPROM->INTENCLR =  mask;\n+}\n+\n+/**\n+ * @brief  Get the value of the EEPROM interrupt enable register\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return OR-ed bits value of EEPROM_INT_*\n+ */\n+STATIC INLINE uint32_t Chip_EEPROM_GetIntEnable(LPC_EEPROM_T *pEEPROM)\n+{\n+   return pEEPROM->INTEN;\n+}\n+\n+/**\n+ * @brief  Get EEPROM interrupt status\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @return OR-ed bits value of EEPROM_INT_*\n+ */\n+STATIC INLINE uint32_t Chip_EEPROM_GetIntStatus(LPC_EEPROM_T *pEEPROM)\n+{\n+   return pEEPROM->INTSTAT;\n+}\n+\n+/**\n+ * @brief  Set EEPROM interrupt status\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Interrupt mask (or-ed bits value of EEPROM_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_SetIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   pEEPROM->INTSTATSET =  mask;\n+}\n+\n+/**\n+ * @brief  Clear EEPROM interrupt status\n+ * @param  pEEPROM : Pointer to EEPROM peripheral block structure\n+ * @param  mask    : Interrupt mask (or-ed bits value of EEPROM_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EEPROM_ClearIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   pEEPROM->INTSTATCLR =  mask;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* _EEPROM_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/emc_18xx_43xx.h ./lpc_chip_43xx/inc/emc_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/emc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/emc_18xx_43xx.h\t2017-02-27 21:03:17.004043462 -0300\n@@ -0,0 +1,354 @@\n+/*\n+ * @brief LPC18xx/43xx EMC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __EMC_18XX_43XX_H_\n+#define __EMC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup EMC_18XX_43XX CHIP: LPC18xx/43xx External Memory Controller driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ * The EMC interface clocks must be enabled outside this driver prior to\n+ * calling any function of this driver.\n+ */\n+\n+/**\n+ * @brief External Memory Controller (EMC) register block structure\n+ */\n+typedef struct {                           /*!< EMC Structure          */\n+   __IO uint32_t  CONTROL;                 /*!< Controls operation of the memory controller. */\n+   __I  uint32_t  STATUS;                  /*!< Provides EMC status information. */\n+   __IO uint32_t  CONFIG;                  /*!< Configures operation of the memory controller. */\n+   __I  uint32_t  RESERVED0[5];\n+   __IO uint32_t  DYNAMICCONTROL;          /*!< Controls dynamic memory operation. */\n+   __IO uint32_t  DYNAMICREFRESH;          /*!< Configures dynamic memory refresh operation. */\n+   __IO uint32_t  DYNAMICREADCONFIG;       /*!< Configures the dynamic memory read strategy. */\n+   __I  uint32_t  RESERVED1;\n+   __IO uint32_t  DYNAMICRP;               /*!< Selects the precharge command period. */\n+   __IO uint32_t  DYNAMICRAS;              /*!< Selects the active to precharge command period. */\n+   __IO uint32_t  DYNAMICSREX;             /*!< Selects the self-refresh exit time. */\n+   __IO uint32_t  DYNAMICAPR;              /*!< Selects the last-data-out to active command time. */\n+   __IO uint32_t  DYNAMICDAL;              /*!< Selects the data-in to active command time. */\n+   __IO uint32_t  DYNAMICWR;               /*!< Selects the write recovery time. */\n+   __IO uint32_t  DYNAMICRC;               /*!< Selects the active to active command period. */\n+   __IO uint32_t  DYNAMICRFC;              /*!< Selects the auto-refresh period. */\n+   __IO uint32_t  DYNAMICXSR;              /*!< Selects the exit self-refresh to active command time. */\n+   __IO uint32_t  DYNAMICRRD;              /*!< Selects the active bank A to active bank B latency. */\n+   __IO uint32_t  DYNAMICMRD;              /*!< Selects the load mode register to active command time. */\n+   __I  uint32_t  RESERVED2[9];\n+   __IO uint32_t  STATICEXTENDEDWAIT;      /*!< Selects time for long static memory read and write transfers. */\n+   __I  uint32_t  RESERVED3[31];\n+   __IO uint32_t  DYNAMICCONFIG0;          /*!< Selects the configuration information for dynamic memory chip select n. */\n+   __IO uint32_t  DYNAMICRASCAS0;          /*!< Selects the RAS and CAS latencies for dynamic memory chip select n. */\n+   __I  uint32_t  RESERVED4[6];\n+   __IO uint32_t  DYNAMICCONFIG1;          /*!< Selects the configuration information for dynamic memory chip select n. */\n+   __IO uint32_t  DYNAMICRASCAS1;          /*!< Selects the RAS and CAS latencies for dynamic memory chip select n. */\n+   __I  uint32_t  RESERVED5[6];\n+   __IO uint32_t  DYNAMICCONFIG2;          /*!< Selects the configuration information for dynamic memory chip select n. */\n+   __IO uint32_t  DYNAMICRASCAS2;          /*!< Selects the RAS and CAS latencies for dynamic memory chip select n. */\n+   __I  uint32_t  RESERVED6[6];\n+   __IO uint32_t  DYNAMICCONFIG3;          /*!< Selects the configuration information for dynamic memory chip select n. */\n+   __IO uint32_t  DYNAMICRASCAS3;          /*!< Selects the RAS and CAS latencies for dynamic memory chip select n. */\n+   __I  uint32_t  RESERVED7[38];\n+   __IO uint32_t  STATICCONFIG0;           /*!< Selects the memory configuration for static chip select n. */\n+   __IO uint32_t  STATICWAITWEN0;          /*!< Selects the delay from chip select n to write enable. */\n+   __IO uint32_t  STATICWAITOEN0;          /*!< Selects the delay from chip select n or address change, whichever is later, to output enable. */\n+   __IO uint32_t  STATICWAITRD0;           /*!< Selects the delay from chip select n to a read access. */\n+   __IO uint32_t  STATICWAITPAG0;          /*!< Selects the delay for asynchronous page mode sequential accesses for chip select n. */\n+   __IO uint32_t  STATICWAITWR0;           /*!< Selects the delay from chip select n to a write access. */\n+   __IO uint32_t  STATICWAITTURN0;         /*!< Selects bus turnaround cycles */\n+   __I  uint32_t  RESERVED8;\n+   __IO uint32_t  STATICCONFIG1;           /*!< Selects the memory configuration for static chip select n. */\n+   __IO uint32_t  STATICWAITWEN1;          /*!< Selects the delay from chip select n to write enable. */\n+   __IO uint32_t  STATICWAITOEN1;          /*!< Selects the delay from chip select n or address change, whichever is later, to output enable. */\n+   __IO uint32_t  STATICWAITRD1;           /*!< Selects the delay from chip select n to a read access. */\n+   __IO uint32_t  STATICWAITPAG1;          /*!< Selects the delay for asynchronous page mode sequential accesses for chip select n. */\n+   __IO uint32_t  STATICWAITWR1;           /*!< Selects the delay from chip select n to a write access. */\n+   __IO uint32_t  STATICWAITTURN1;         /*!< Selects bus turnaround cycles */\n+   __I  uint32_t  RESERVED9;\n+   __IO uint32_t  STATICCONFIG2;           /*!< Selects the memory configuration for static chip select n. */\n+   __IO uint32_t  STATICWAITWEN2;          /*!< Selects the delay from chip select n to write enable. */\n+   __IO uint32_t  STATICWAITOEN2;          /*!< Selects the delay from chip select n or address change, whichever is later, to output enable. */\n+   __IO uint32_t  STATICWAITRD2;           /*!< Selects the delay from chip select n to a read access. */\n+   __IO uint32_t  STATICWAITPAG2;          /*!< Selects the delay for asynchronous page mode sequential accesses for chip select n. */\n+   __IO uint32_t  STATICWAITWR2;           /*!< Selects the delay from chip select n to a write access. */\n+   __IO uint32_t  STATICWAITTURN2;         /*!< Selects bus turnaround cycles */\n+   __I  uint32_t  RESERVED10;\n+   __IO uint32_t  STATICCONFIG3;           /*!< Selects the memory configuration for static chip select n. */\n+   __IO uint32_t  STATICWAITWEN3;          /*!< Selects the delay from chip select n to write enable. */\n+   __IO uint32_t  STATICWAITOEN3;          /*!< Selects the delay from chip select n or address change, whichever is later, to output enable. */\n+   __IO uint32_t  STATICWAITRD3;           /*!< Selects the delay from chip select n to a read access. */\n+   __IO uint32_t  STATICWAITPAG3;          /*!< Selects the delay for asynchronous page mode sequential accesses for chip select n. */\n+   __IO uint32_t  STATICWAITWR3;           /*!< Selects the delay from chip select n to a write access. */\n+   __IO uint32_t  STATICWAITTURN3;         /*!< Selects bus turnaround cycles */\n+} LPC_EMC_T;\n+\n+/**\n+ * Dynamic Chip Select Address\n+ */\n+#define EMC_ADDRESS_DYCS0   (0x28000000)\n+#define EMC_ADDRESS_DYCS1   (0x30000000)\n+#define EMC_ADDRESS_DYCS2   (0x60000000)\n+#define EMC_ADDRESS_DYCS3   (0x70000000)\n+\n+/**\n+ * Static Chip Select Address\n+ */\n+#define EMC_ADDRESS_CS0     (0x1C000000)\n+#define EMC_ADDRESS_CS1     (0x1D000000)\n+#define EMC_ADDRESS_CS2     (0x1E000000)\n+#define EMC_ADDRESS_CS3     (0x1F000000)\n+\n+/**\n+ * @brief EMC register support bitfields and mask\n+ */\n+/* Reserve for extending support to ARM9 or nextgen LPC */\n+#define EMC_SUPPORT_ONLY_PL172 /*!< Reserve for extending support to ARM9 or nextgen LPC */\n+\n+#define EMC_CONFIG_ENDIAN_LITTLE    (0)        /*!< Value for EMC to operate in Little Endian Mode */\n+#define EMC_CONFIG_ENDIAN_BIG         (1)  /*!< Value for EMC to operate in Big Endian Mode */\n+\n+#define EMC_CONFIG_BUFFER_ENABLE    (1 << 19)  /*!< EMC Buffer enable bit in EMC Dynamic Configuration register */\n+#define EMC_CONFIG_WRITE_PROTECT    (1 << 20)  /*!< EMC Write protect bit in EMC Dynamic Configuration register */\n+\n+/* Dynamic Memory Configuration Register Bit Definitions */\n+#define EMC_DYN_CONFIG_MD_BIT             (3)                              /*!< Memory device bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_MD_SDRAM         (0 << EMC_DYN_CONFIG_MD_BIT)       /*!< Select device as SDRAM in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_MD_LPSDRAM       (1 << EMC_DYN_CONFIG_MD_BIT)       /*!< Select device as LPSDRAM in EMC Dynamic Configuration register */\n+\n+#define EMC_DYN_CONFIG_LPSDRAM_BIT      (12)                           /*!< LPSDRAM bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_LPSDRAM          (1 << EMC_DYN_CONFIG_LPSDRAM_BIT)  /*!< LPSDRAM value in EMC Dynamic Configuration register */\n+\n+#define EMC_DYN_CONFIG_DEV_SIZE_BIT     (9)                                    /*!< Device Size starting bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_16Mb    (0x00 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 16Mb Device Size value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_64Mb    (0x01 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 64Mb Device Size value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_128Mb   (0x02 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 128Mb Device Size value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_256Mb   (0x03 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 256Mb Device Size value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_SIZE_512Mb   (0x04 << EMC_DYN_CONFIG_DEV_SIZE_BIT)  /*!< 512Mb Device Size value in EMC Dynamic Configuration register */\n+\n+#define EMC_DYN_CONFIG_DEV_BUS_BIT      (7)                                    /*!< Device bus width starting bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_BUS_8        (0x00 << EMC_DYN_CONFIG_DEV_BUS_BIT)   /*!< Device 8-bit bus width value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_BUS_16       (0x01 << EMC_DYN_CONFIG_DEV_BUS_BIT)   /*!< Device 16-bit bus width value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DEV_BUS_32       (0x02 << EMC_DYN_CONFIG_DEV_BUS_BIT)   /*!< Device 32-bit bus width value in EMC Dynamic Configuration register */\n+\n+#define EMC_DYN_CONFIG_DATA_BUS_WIDTH_BIT   (14)                                   /*!< Device data bus width starting bit in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DATA_BUS_16      (0x00 << EMC_DYN_CONFIG_DATA_BUS_WIDTH_BIT)    /*!< Device 16-bit data bus width value in EMC Dynamic Configuration register */\n+#define EMC_DYN_CONFIG_DATA_BUS_32      (0x01 << EMC_DYN_CONFIG_DATA_BUS_WIDTH_BIT)    /*!< Device 32-bit bus width value in EMC Dynamic Configuration register */\n+\n+/*!< Memory configuration values in EMC Dynamic Configuration Register */\n+#define EMC_DYN_CONFIG_2Mx8_2BANKS_11ROWS_9COLS     ((0x0 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 2Mx8 2 Banks 11 Rows 9 Columns */\n+#define EMC_DYN_CONFIG_1Mx16_2BANKS_11ROWS_8COLS    ((0x0 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 1Mx16 2 Banks 11 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_8Mx8_4BANKS_12ROWS_9COLS     ((0x1 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 8Mx8 4 Banks 12 Rows 9 Columns */\n+#define EMC_DYN_CONFIG_4Mx16_4BANKS_12ROWS_8COLS    ((0x1 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 4Mx16 4 Banks 12 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_2Mx32_4BANKS_11ROWS_8COLS    ((0x1 << 9) | (0x2 << 7))  /*!< Value for Memory configuration - 2Mx32 4 Banks 11 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_16Mx8_4BANKS_12ROWS_10COLS   ((0x2 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 16Mx8 4 Banks 12 Rows 10 Columns */\n+#define EMC_DYN_CONFIG_8Mx16_4BANKS_12ROWS_9COLS    ((0x2 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 8Mx16 4 Banks 12 Rows 9 Columns */\n+#define EMC_DYN_CONFIG_4Mx32_4BANKS_12ROWS_8COLS    ((0x2 << 9) | (0x2 << 7))  /*!< Value for Memory configuration - 4Mx32 4 Banks 12 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_32Mx8_4BANKS_13ROWS_10COLS   ((0x3 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 32Mx8 4 Banks 13 Rows 10 Columns */\n+#define EMC_DYN_CONFIG_16Mx16_4BANKS_13ROWS_9COLS   ((0x3 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 16Mx16 4 Banks 13 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_8Mx32_4BANKS_13ROWS_8COLS    ((0x3 << 9) | (0x2 << 7))  /*!< Value for Memory configuration - 8Mx32 4 Banks 13 Rows 8 Columns */\n+#define EMC_DYN_CONFIG_64Mx8_4BANKS_13ROWS_11COLS   ((0x4 << 9) | (0x0 << 7))  /*!< Value for Memory configuration - 64Mx8 4 Banks 13 Rows 11 Columns */\n+#define EMC_DYN_CONFIG_32Mx16_4BANKS_13ROWS_10COLS  ((0x4 << 9) | (0x1 << 7))  /*!< Value for Memory configuration - 32Mx16 4 Banks 13 Rows 10 Columns */\n+\n+/*!< Dynamic Memory Mode Register Bit Definition */\n+#define EMC_DYN_MODE_BURST_LEN_BIT      (0)    /*!< Starting bit No. of Burst Length in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_1        (0)    /*!< Value to set Burst Length to 1 in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_2        (1)    /*!< Value to set Burst Length to 2 in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_4        (2)    /*!< Value to set Burst Length to 4 in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_8        (3)    /*!< Value to set Burst Length to 8 in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_LEN_FULL     (7)    /*!< Value to set Burst Length to Full in Dynamic Memory Mode Register */\n+\n+#define EMC_DYN_MODE_BURST_TYPE_BIT         (3)                                    /*!< Burst Type bit in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_TYPE_SEQUENTIAL  (0 << EMC_DYN_MODE_BURST_TYPE_BIT) /*!< Burst Type Sequential in Dynamic Memory Mode Register */\n+#define EMC_DYN_MODE_BURST_TYPE_INTERLEAVE  (1 << EMC_DYN_MODE_BURST_TYPE_BIT) /*!< Burst Type Interleaved in Dynamic Memory Mode Register */\n+\n+/*!< CAS Latency in Dynamic Mode Register */\n+#define EMC_DYN_MODE_CAS_BIT    (4)                            /*!< CAS latency starting bit in Dynamic Memory Mode register */\n+#define EMC_DYN_MODE_CAS_1      (1 << EMC_DYN_MODE_CAS_BIT)    /*!< value for CAS latency of 1 cycle */\n+#define EMC_DYN_MODE_CAS_2      (2 << EMC_DYN_MODE_CAS_BIT)    /*!< value for CAS latency of 2 cycle */\n+#define EMC_DYN_MODE_CAS_3      (3 << EMC_DYN_MODE_CAS_BIT)    /*!< value for CAS latency of 3 cycle */\n+\n+/*!< Operation Mode in Dynamic Mode register */\n+#define EMC_DYN_MODE_OPMODE_BIT           (7)                          /*!< Dynamic Mode Operation bit */\n+#define EMC_DYN_MODE_OPMODE_STANDARD    (0 << EMC_DYN_MODE_OPMODE_BIT) /*!< Value for Dynamic standard operation Mode */\n+\n+/*!< Write Burst Mode in Dynamic Mode register */\n+#define EMC_DYN_MODE_WBMODE_BIT             (9)                            /*!< Write Burst Mode bit */\n+#define EMC_DYN_MODE_WBMODE_PROGRAMMED  (0 << EMC_DYN_MODE_WBMODE_BIT) /*!< Write Burst Mode programmed */\n+#define EMC_DYN_MODE_WBMODE_SINGLE_LOC  (1 << EMC_DYN_MODE_WBMODE_BIT) /*!< Write Burst Mode Single LOC */\n+\n+/*!< Dynamic Memory Control Register Bit Definitions */\n+#define EMC_DYN_CONTROL_ENABLE          (0x03) /*!< Control Enable value */\n+\n+/*!< Static Memory Configuration Register Bit Definitions */\n+#define EMC_STATIC_CONFIG_MEM_WIDTH_8       (0)    /*!< Static Memory Configuration - 8-bit width */\n+#define EMC_STATIC_CONFIG_MEM_WIDTH_16      (1)    /*!< Static Memory Configuration - 16-bit width */\n+#define EMC_STATIC_CONFIG_MEM_WIDTH_32      (2)    /*!< Static Memory Configuration - 32-bit width */\n+\n+#define EMC_STATIC_CONFIG_PAGE_MODE_BIT         (3)                                        /*!< Page Mode bit No */\n+#define EMC_STATIC_CONFIG_PAGE_MODE_ENABLE      (1 << EMC_STATIC_CONFIG_PAGE_MODE_BIT) /*!< Value to enable Page Mode */\n+\n+#define EMC_STATIC_CONFIG_CS_POL_BIT            (6)                                    /*!< Chip Select bit No */\n+#define EMC_STATIC_CONFIG_CS_POL_ACTIVE_HIGH    (1 << EMC_STATIC_CONFIG_CS_POL_BIT)    /*!< Chip Select polarity - Active High */\n+#define EMC_STATIC_CONFIG_CS_POL_ACTIVE_LOW     (0 << EMC_STATIC_CONFIG_CS_POL_BIT)    /*!< Chip Select polarity - Active Low */\n+\n+#define EMC_STATIC_CONFIG_BLS_BIT           (7)                                /*!< BLS Configuration bit No */\n+#define EMC_STATIC_CONFIG_BLS_HIGH          (1 << EMC_STATIC_CONFIG_BLS_BIT)   /*!< BLS High Configuration value */\n+#define EMC_STATIC_CONFIG_BLS_LOW           (0 << EMC_STATIC_CONFIG_BLS_BIT)   /*!< BLS Low Configuration value */\n+\n+#define EMC_STATIC_CONFIG_EW_BIT            (8)                                /*!< Ext Wait bit No */\n+#define EMC_STATIC_CONFIG_EW_ENABLE         (1 << EMC_STATIC_CONFIG_EW_BIT)    /*!< Ext Wait Enabled value */\n+#define EMC_STATIC_CONFIG_EW_DISABLE        (0 << EMC_STATIC_CONFIG_EW_BIT)    /*!< Ext Wait Diabled value */\n+\n+/*!< Q24.8 Fixed Point Helper */\n+#define Q24_8_FP(x) ((x) * 256)\n+#define EMC_NANOSECOND(x)   Q24_8_FP(x)\n+#define EMC_CLOCK(x)        Q24_8_FP(-(x))\n+\n+/**\n+ * @brief  EMC Dynamic Device Configuration structure used for IP drivers\n+ */\n+typedef struct {\n+   uint32_t    BaseAddr;       /*!< Base Address */\n+   uint8_t     RAS;            /*!< RAS value */\n+   uint32_t    ModeRegister;   /*!< Mode Register value */\n+   uint32_t    DynConfig;      /*!< Dynamic Configuration value */\n+} IP_EMC_DYN_DEVICE_CONFIG_T;\n+\n+/**\n+ * @brief EMC Dynamic Configure Struct\n+ */\n+typedef struct {\n+   int32_t RefreshPeriod;                          /*!< Refresh period */\n+   uint32_t ReadConfig;                            /*!< Clock*/\n+   int32_t tRP;                                    /*!< Precharge Command Period */\n+   int32_t tRAS;                                   /*!< Active to Precharge Command Period */\n+   int32_t tSREX;                                  /*!< Self Refresh Exit Time */\n+   int32_t tAPR;                                   /*!< Last Data Out to Active Time */\n+   int32_t tDAL;                                   /*!< Data In to Active Command Time */\n+   int32_t tWR;                                    /*!< Write Recovery Time */\n+   int32_t tRC;                                    /*!< Active to Active Command Period */\n+   int32_t tRFC;                                   /*!< Auto-refresh Period */\n+   int32_t tXSR;                                   /*!< Exit Selt Refresh */\n+   int32_t tRRD;                                   /*!< Active Bank A to Active Bank B Time */\n+   int32_t tMRD;                                   /*!< Load Mode register command to Active Command */\n+   IP_EMC_DYN_DEVICE_CONFIG_T DevConfig[4];        /*!< Device Configuration array */\n+} IP_EMC_DYN_CONFIG_T;\n+\n+/**\n+ * @brief EMC Static Configure Structure\n+ */\n+typedef struct {\n+   uint8_t ChipSelect;     /*!< Chip select */\n+   uint32_t Config;        /*!< Configuration value */\n+   int32_t WaitWen;        /*!< Write Enable Wait */\n+   int32_t WaitOen;        /*!< Output Enable Wait */\n+   int32_t WaitRd;         /*!< Read Wait */\n+   int32_t WaitPage;       /*!< Page Access Wait */\n+   int32_t WaitWr;         /*!< Write Wait */\n+   int32_t WaitTurn;       /*!< Turn around wait */\n+} IP_EMC_STATIC_CONFIG_T;\n+\n+/**\n+ * @brief  Dyanmic memory setup\n+ * @param  Dynamic_Config  : Pointer to dynamic memory setup data\n+ * @return None\n+ */\n+void Chip_EMC_Dynamic_Init(IP_EMC_DYN_CONFIG_T *Dynamic_Config);\n+\n+/**\n+ * @brief  Static memory setup\n+ * @param  Static_Config   : Pointer to static memory setup data\n+ * @return None\n+ */\n+void Chip_EMC_Static_Init(IP_EMC_STATIC_CONFIG_T *Static_Config);\n+\n+/**\n+ * @brief  Enable Dynamic Memory Controller\n+ * @param  Enable  : 1 = Enable Dynamic Memory Controller, 0 = Disable\n+ * @return None\n+ */\n+void Chip_EMC_Dynamic_Enable(uint8_t Enable);\n+\n+/**\n+ * @brief  Mirror CS1 to CS0 and DYCS0\n+ * @param  Enable  : 1 = Mirror, 0 = Normal Memory Map\n+ * @return None\n+ */\n+void Chip_EMC_Mirror(uint8_t Enable);\n+\n+/**\n+ * @brief  Enable EMC\n+ * @param  Enable  : 1 = Enable, 0 = Disable\n+ * @return None\n+ */\n+void Chip_EMC_Enable(uint8_t Enable);\n+\n+/**\n+ * @brief  Set EMC LowPower Mode\n+ * @param  Enable  : 1 = Enable, 0 = Disable\n+ * @return None\n+ * @note   This function should only be called when the memory\n+ * controller is not busy (bit 0 of the status register is not set).\n+ */\n+void Chip_EMC_LowPowerMode(uint8_t Enable);\n+\n+/**\n+ * @brief  Initialize EMC\n+ * @param  Enable      : 1 = Enable, 0 = Disable\n+ * @param  ClockRatio  : clock out ratio, 0 = 1:1, 1 = 1:2\n+ * @param  EndianMode  : Endian Mode, 0 = Little, 1 = Big\n+ * @return None\n+ */\n+void Chip_EMC_Init(uint32_t Enable, uint32_t ClockRatio, uint32_t EndianMode);\n+\n+/**\n+ * @brief  Set Static Memory Extended Wait in Clock\n+ * @param  Wait16Clks  : Number of '16 clock' delay cycles\n+ * @return None\n+ */\n+STATIC INLINE void Chip_EMC_SetStaticExtendedWait(uint32_t Wait16Clks)\n+{\n+   LPC_EMC->STATICEXTENDEDWAIT = Wait16Clks;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __EMC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/enet_18xx_43xx.h ./lpc_chip_43xx/inc/enet_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/enet_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/enet_18xx_43xx.h\t2017-02-27 21:03:17.004043462 -0300\n@@ -0,0 +1,680 @@\n+/*\n+ * @brief LPC18xx/43xx Ethernet driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ENET_18XX_43XX_H_\n+#define __ENET_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ENET_18XX_43XX CHIP: LPC18xx/43xx Ethernet driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief 10/100 MII & RMII Ethernet with timestamping register block structure\n+ */\n+typedef struct {                           /*!< ETHERNET Structure */\n+   __IO uint32_t  MAC_CONFIG;              /*!< MAC configuration register */\n+   __IO uint32_t  MAC_FRAME_FILTER;        /*!< MAC frame filter */\n+   __IO uint32_t  MAC_HASHTABLE_HIGH;      /*!< Hash table high register */\n+   __IO uint32_t  MAC_HASHTABLE_LOW;       /*!< Hash table low register */\n+   __IO uint32_t  MAC_MII_ADDR;            /*!< MII address register */\n+   __IO uint32_t  MAC_MII_DATA;            /*!< MII data register */\n+   __IO uint32_t  MAC_FLOW_CTRL;           /*!< Flow control register */\n+   __IO uint32_t  MAC_VLAN_TAG;            /*!< VLAN tag register */\n+   __I  uint32_t  RESERVED0;\n+   __I  uint32_t  MAC_DEBUG;               /*!< Debug register */\n+   __IO uint32_t  MAC_RWAKE_FRFLT;         /*!< Remote wake-up frame filter */\n+   __IO uint32_t  MAC_PMT_CTRL_STAT;       /*!< PMT control and status */\n+   __I  uint32_t  RESERVED1[2];\n+   __I  uint32_t  MAC_INTR;                /*!< Interrupt status register */\n+   __IO uint32_t  MAC_INTR_MASK;           /*!< Interrupt mask register */\n+   __IO uint32_t  MAC_ADDR0_HIGH;          /*!< MAC address 0 high register */\n+   __IO uint32_t  MAC_ADDR0_LOW;           /*!< MAC address 0 low register */\n+   __I  uint32_t  RESERVED2[430];\n+   __IO uint32_t  MAC_TIMESTP_CTRL;        /*!< Time stamp control register */\n+   __IO uint32_t  SUBSECOND_INCR;          /*!< Sub-second increment register */\n+   __I  uint32_t  SECONDS;                 /*!< System time seconds register */\n+   __I  uint32_t  NANOSECONDS;             /*!< System time nanoseconds register */\n+   __IO uint32_t  SECONDSUPDATE;           /*!< System time seconds update register */\n+   __IO uint32_t  NANOSECONDSUPDATE;       /*!< System time nanoseconds update register */\n+   __IO uint32_t  ADDEND;                  /*!< Time stamp addend register */\n+   __IO uint32_t  TARGETSECONDS;           /*!< Target time seconds register */\n+   __IO uint32_t  TARGETNANOSECONDS;       /*!< Target time nanoseconds register */\n+   __IO uint32_t  HIGHWORD;                /*!< System time higher word seconds register */\n+   __I  uint32_t  TIMESTAMPSTAT;           /*!< Time stamp status register */\n+   __IO uint32_t  PPSCTRL;                 /*!< PPS control register */\n+   __I  uint32_t  AUXNANOSECONDS;          /*!< Auxiliary time stamp nanoseconds register */\n+   __I  uint32_t  AUXSECONDS;              /*!< Auxiliary time stamp seconds register */\n+   __I  uint32_t  RESERVED3[562];\n+   __IO uint32_t  DMA_BUS_MODE;            /*!< Bus Mode Register      */\n+   __IO uint32_t  DMA_TRANS_POLL_DEMAND;   /*!< Transmit poll demand register */\n+   __IO uint32_t  DMA_REC_POLL_DEMAND;     /*!< Receive poll demand register */\n+   __IO uint32_t  DMA_REC_DES_ADDR;        /*!< Receive descriptor list address register */\n+   __IO uint32_t  DMA_TRANS_DES_ADDR;      /*!< Transmit descriptor list address register */\n+   __IO uint32_t  DMA_STAT;                /*!< Status register */\n+   __IO uint32_t  DMA_OP_MODE;             /*!< Operation mode register */\n+   __IO uint32_t  DMA_INT_EN;              /*!< Interrupt enable register */\n+   __I  uint32_t  DMA_MFRM_BUFOF;          /*!< Missed frame and buffer overflow register */\n+   __IO uint32_t  DMA_REC_INT_WDT;         /*!< Receive interrupt watchdog timer register */\n+   __I  uint32_t  RESERVED4[8];\n+   __I  uint32_t  DMA_CURHOST_TRANS_DES;   /*!< Current host transmit descriptor register */\n+   __I  uint32_t  DMA_CURHOST_REC_DES;     /*!< Current host receive descriptor register */\n+   __I  uint32_t  DMA_CURHOST_TRANS_BUF;   /*!< Current host transmit buffer address register */\n+   __I  uint32_t  DMA_CURHOST_REC_BUF;     /*!< Current host receive buffer address register */\n+} LPC_ENET_T;\n+\n+/*\n+ * @brief MAC_CONFIG register bit defines\n+ */\n+#define MAC_CFG_RE     (1 << 2)        /*!< Receiver enable */\n+#define MAC_CFG_TE     (1 << 3)        /*!< Transmitter Enable */\n+#define MAC_CFG_DF     (1 << 4)        /*!< Deferral Check */\n+#define MAC_CFG_BL(n)  ((n) << 5)  /*!< Back-Off Limit */\n+#define MAC_CFG_ACS    (1 << 7)        /*!< Automatic Pad/CRC Stripping */\n+#define MAC_CFG_LUD    (1 << 8)        /*!< Link Up/Down, 1 = up */\n+#define MAC_CFG_DR     (1 << 9)        /*!< Disable Retry */\n+#define MAC_CFG_IPC    (1 << 10)   /*!< Checksum Offload */\n+#define MAC_CFG_DM     (1 << 11)   /*!< Duplex Mode, 1 = full, 0 = half */\n+#define MAC_CFG_LM     (1 << 12)   /*!< Loopback Mode */\n+#define MAC_CFG_DO     (1 << 13)   /*!< Disable Receive Own */\n+#define MAC_CFG_FES    (1 << 14)   /*!< Speed, 1 = 100Mbps, 0 = 10Mbos */\n+#define MAC_CFG_PS     (1 << 15)   /*!< Port select, must always be 1 */\n+#define MAC_CFG_DCRS   (1 << 16)   /*!< Disable carrier sense during transmission */\n+#define MAC_CFG_IFG(n) ((n) << 17) /*!< Inter-frame gap, 40..96, n incs by 8 */\n+#define MAC_CFG_JE     (1 << 20)   /*!< Jumbo Frame Enable */\n+#define MAC_CFG_JD     (1 << 22)   /*!< Jabber Disable */\n+#define MAC_CFG_WD     (1 << 23)   /*!< Watchdog Disable */\n+\n+/*\n+ * @brief MAC_FRAME_FILTER register bit defines\n+ */\n+#define MAC_FF_PR      (1 << 0)        /*!< Promiscuous Mode */\n+#define MAC_FF_DAIF    (1 << 3)        /*!< DA Inverse Filtering */\n+#define MAC_FF_PM      (1 << 4)        /*!< Pass All Multicast */\n+#define MAC_FF_DBF     (1 << 5)        /*!< Disable Broadcast Frames */\n+#define MAC_FF_PCF(n)  ((n) << 6)  /*!< Pass Control Frames, n = see user manual */\n+#define MAC_FF_SAIF    (1 << 8)        /*!< SA Inverse Filtering */\n+#define MAC_FF_SAF     (1 << 9)        /*!< Source Address Filter Enable */\n+#define MAC_FF_RA      (1UL << 31) /*!< Receive all */\n+\n+/*\n+ * @brief MAC_MII_ADDR register bit defines\n+ */\n+#define MAC_MIIA_GB    (1 << 0)        /*!< MII busy */\n+#define MAC_MIIA_W     (1 << 1)        /*!< MII write */\n+#define MAC_MIIA_CR(n) ((n) << 2)  /*!< CSR clock range, n = see manual */\n+#define MAC_MIIA_GR(n) ((n) << 6)  /*!< MII register. n = 0..31 */\n+#define MAC_MIIA_PA(n) ((n) << 11) /*!< Physical layer address, n = 0..31 */\n+\n+/*\n+ * @brief MAC_MII_DATA register bit defines\n+ */\n+#define MAC_MIID_GDMSK (0xFFFF)        /*!< MII data mask */\n+\n+/**\n+ * @brief MAC_FLOW_CONTROL register bit defines\n+ */\n+#define MAC_FC_FCB     (1 << 0)        /*!< Flow Control Busy/Backpressure Activate */\n+#define MAC_FC_TFE     (1 << 1)        /*!< Transmit Flow Control Enable */\n+#define MAC_FC_RFE     (1 << 2)        /*!< Receive Flow Control Enable */\n+#define MAC_FC_UP      (1 << 3)        /*!< Unicast Pause Frame Detect */\n+#define MAC_FC_PLT(n)  ((n) << 4)  /*!< Pause Low Threshold, n = see manual */\n+#define MAC_FC_DZPQ    (1 << 7)        /*!< Disable Zero-Quanta Pause */\n+#define MAC_FC_PT(n)   ((n) << 16) /*!< Pause time */\n+\n+/*\n+ * @brief MAC_VLAN_TAG register bit defines\n+ */\n+#define MAC_VT_VL(n)   ((n) << 0)  /*!< VLAN Tag Identifier for Receive Frames */\n+#define MAC_VT_ETC     (1 << 7)        /*!< Enable 12-Bit VLAN Tag Comparison */\n+\n+/*\n+ * @brief MAC_PMT_CTRL_STAT register bit defines\n+ */\n+#define MAC_PMT_PD     (1 << 0)        /*!< Power-down */\n+#define MAC_PMT_MPE    (1 << 1)        /*!< Magic packet enable */\n+#define MAC_PMT_WFE    (1 << 2)        /*!< Wake-up frame enable */\n+#define MAC_PMT_MPR    (1 << 5)        /*!< Magic Packet Received */\n+#define MAC_PMT_WFR    (1 << 6)        /*!< Wake-up Frame Received */\n+#define MAC_PMT_GU     (1 << 9)        /*!< Global Unicast */\n+#define MAC_PMT_WFFRPR (1UL << 31) /*!< Wake-up Frame Filter Register Pointer Reset */\n+\n+/*\n+ * @brief MAC_INTR_MASK register bit defines\n+ */\n+#define MAC_IM_PMT     (1 << 3)        /*!< PMT Interrupt Mask */\n+\n+/*\n+ * @brief MAC_ADDR0_HIGH register bit defines\n+ */\n+#define MAC_ADRH_MO    (1UL << 31) /*!< Always 1 when writing register */\n+\n+/*\n+ * @brief MAC_ADDR0_HIGH register bit defines\n+ */\n+#define MAC_ADRH_MO    (1UL << 31) /*!< Always 1 when writing register */\n+\n+/*\n+ * @brief MAC_TIMESTAMP register bit defines\n+ */\n+#define MAC_TS_TSENA   (1 << 0)        /*!< Time Stamp Enable */\n+#define MAC_TS_TSCFUP  (1 << 1)        /*!< Time Stamp Fine or Coarse Update */\n+#define MAC_TS_TSINIT  (1 << 2)        /*!< Time Stamp Initialize */\n+#define MAC_TS_TSUPDT  (1 << 3)        /*!< Time Stamp Update */\n+#define MAC_TS_TSTRIG  (1 << 4)        /*!< Time Stamp Interrupt Trigger Enable */\n+#define MAC_TS_TSADDR  (1 << 5)        /*!< Addend Reg Update */\n+#define MAC_TS_TSENAL  (1 << 8)        /*!< Enable Time Stamp for All Frames */\n+#define MAC_TS_TSCTRL  (1 << 9)        /*!< Time Stamp Digital or Binary rollover control */\n+#define MAC_TS_TSVER2  (1 << 10)   /*!< Enable PTP packet snooping for version 2 format */\n+#define MAC_TS_TSIPENA (1 << 11)   /*!< Enable Time Stamp Snapshot for PTP over Ethernet frames */\n+#define MAC_TS_TSIPV6E (1 << 12)   /*!< Enable Time Stamp Snapshot for IPv6 frames */\n+#define MAC_TS_TSIPV4E (1 << 13)   /*!< Enable Time Stamp Snapshot for IPv4 frames */\n+#define MAC_TS_TSEVNT  (1 << 14)   /*!< Enable Time Stamp Snapshot for Event Messages */\n+#define MAC_TS_TSMSTR  (1 << 15)   /*!< Enable Snapshot for Messages Relevant to Master */\n+#define MAC_TS_TSCLKT(n) ((n) << 16)   /*!< Select the type of clock node, n = see menual */\n+#define MAC_TS_TSENMA  (1 << 18)   /*!< Enable MAC address for PTP frame filtering */\n+\n+/*\n+ * @brief DMA_BUS_MODE register bit defines\n+ */\n+#define DMA_BM_SWR     (1 << 0)        /*!< Software reset */\n+#define DMA_BM_DA      (1 << 1)        /*!< DMA arbitration scheme, 1 = TX has priority over TX */\n+#define DMA_BM_DSL(n)  ((n) << 2)  /*!< Descriptor skip length, n = see manual */\n+#define DMA_BM_ATDS    (1 << 7)        /*!< Alternate (Enhanced) descriptor size */\n+#define DMA_BM_PBL(n)  ((n) << 8)  /*!< Programmable burst length, n = see manual */\n+#define DMA_BM_PR(n)   ((n) << 14) /*!< Rx-to-Tx priority ratio, n = see manual */\n+#define DMA_BM_FB      (1 << 16)   /*!< Fixed burst */\n+#define DMA_BM_RPBL(n) ((n) << 17) /*!< RxDMA PBL, n = see manual */\n+#define DMA_BM_USP     (1 << 23)   /*!< Use separate PBL */\n+#define DMA_BM_PBL8X   (1 << 24)   /*!< 8 x PBL mode */\n+#define DMA_BM_AAL     (1 << 25)   /*!< Address-aligned beats */\n+#define DMA_BM_MB      (1 << 26)   /*!< Mixed burst */\n+#define DMA_BM_TXPR    (1 << 27)   /*!< Transmit DMA has higher priority than receive DMA */\n+\n+/*\n+ * @brief DMA_STAT register bit defines\n+ */\n+#define DMA_ST_TI      (1 << 0)        /*!< Transmit interrupt */\n+#define DMA_ST_TPS     (1 << 1)        /*!< Transmit process stopped */\n+#define DMA_ST_TU      (1 << 2)        /*!< Transmit buffer unavailable */\n+#define DMA_ST_TJT     (1 << 3)        /*!< Transmit jabber timeout */\n+#define DMA_ST_OVF     (1 << 4)        /*!< Receive overflow */\n+#define DMA_ST_UNF     (1 << 5)        /*!< Transmit underflow */\n+#define DMA_ST_RI      (1 << 6)        /*!< Receive interrupt */\n+#define DMA_ST_RU      (1 << 7)        /*!< Receive buffer unavailable */\n+#define DMA_ST_RPS     (1 << 8)        /*!< Received process stopped */\n+#define DMA_ST_RWT     (1 << 9)        /*!< Receive watchdog timeout */\n+#define DMA_ST_ETI     (1 << 10)   /*!< Early transmit interrupt */\n+#define DMA_ST_FBI     (1 << 13)   /*!< Fatal bus error interrupt */\n+#define DMA_ST_ERI     (1 << 14)   /*!< Early receive interrupt */\n+#define DMA_ST_AIE     (1 << 15)   /*!< Abnormal interrupt summary */\n+#define DMA_ST_NIS     (1 << 16)   /*!< Normal interrupt summary */\n+#define DMA_ST_ALL     (0x1E7FF)   /*!< All interrupts */\n+\n+/*\n+ * @brief DMA_OP_MODE register bit defines\n+ */\n+#define DMA_OM_SR      (1 << 1)        /*!< Start/stop receive */\n+#define DMA_OM_OSF     (1 << 2)        /*!< Operate on second frame */\n+#define DMA_OM_RTC(n)  ((n) << 3)  /*!< Receive threshold control, n = see manual */\n+#define DMA_OM_FUF     (1 << 6)        /*!< Forward undersized good frames */\n+#define DMA_OM_FEF     (1 << 7)        /*!< Forward error frames */\n+#define DMA_OM_ST      (1 << 13)   /*!< Start/Stop Transmission Command */\n+#define DMA_OM_TTC(n)  ((n) << 14) /*!< Transmit threshold control, n = see manual */\n+#define DMA_OM_FTF     (1 << 20)   /*!< Flush transmit FIFO */\n+#define DMA_OM_TSF     (1 << 21)   /*!< Transmit store and forward */\n+#define DMA_OM_DFF     (1 << 24)   /*!< Disable flushing of received frames */\n+#define DMA_OM_RSF     (1 << 25)   /*!< Receive store and forward */\n+#define DMA_OM_DT      (1 << 26)   /*!< Disable Dropping of TCP/IP Checksum Error Frames */\n+\n+/*\n+ * @brief DMA_INT_EN register bit defines\n+ */\n+#define DMA_IE_TIE     (1 << 0)        /*!< Transmit interrupt enable */\n+#define DMA_IE_TSE     (1 << 1)        /*!< Transmit stopped enable */\n+#define DMA_IE_TUE     (1 << 2)        /*!< Transmit buffer unavailable enable */\n+#define DMA_IE_TJE     (1 << 3)        /*!< Transmit jabber timeout enable */\n+#define DMA_IE_OVE     (1 << 4)        /*!< Overflow interrupt enable */\n+#define DMA_IE_UNE     (1 << 5)        /*!< Underflow interrupt enable */\n+#define DMA_IE_RIE     (1 << 6)        /*!< Receive interrupt enable */\n+#define DMA_IE_RUE     (1 << 7)        /*!< Receive buffer unavailable enable */\n+#define DMA_IE_RSE     (1 << 8)        /*!< Received stopped enable */\n+#define DMA_IE_RWE     (1 << 9)        /*!< Receive watchdog timeout enable */\n+#define DMA_IE_ETE     (1 << 10)   /*!< Early transmit interrupt enable */\n+#define DMA_IE_FBE     (1 << 13)   /*!< Fatal bus error enable */\n+#define DMA_IE_ERE     (1 << 14)   /*!< Early receive interrupt enable */\n+#define DMA_IE_AIE     (1 << 15)   /*!< Abnormal interrupt summary enable */\n+#define DMA_IE_NIE     (1 << 16)   /*!< Normal interrupt summary enable */\n+\n+/*\n+ * @brief DMA_MFRM_BUFOF register bit defines\n+ */\n+#define DMA_MFRM_FMCMSK (0xFFFF)   /*!< Number of frames missed mask */\n+#define DMA_MFRM_OC    (1 << 16)   /*!< Overflow bit for missed frame counter */\n+#define DMA_MFRM_FMA(n) (((n) & 0x0FFE0000) >> 17) /*!< Number of frames missed by the application mask/shift */\n+#define DMA_MFRM_OF    (1 << 28)   /*!< Overflow bit for FIFO overflow counter */\n+\n+/*\n+ * @brief Common TRAN_DESC_T and TRAN_DESC_ENH_T CTRLSTAT field bit defines\n+ */\n+#define TDES_DB        (1 << 0)        /*!< Deferred Bit */\n+#define TDES_UF        (1 << 1)        /*!< Underflow Error */\n+#define TDES_ED        (1 << 2)        /*!< Excessive Deferral */\n+#define TDES_CCMSK(n)  (((n) & 0x000000F0) >> 3)/*!< CC: Collision Count (Status field) mask and shift */\n+#define TDES_VF        (1 << 7)        /*!< VLAN Frame */\n+#define TDES_EC        (1 << 8)        /*!< Excessive Collision */\n+#define TDES_LC        (1 << 9)        /*!< Late Collision */\n+#define TDES_NC        (1 << 10)   /*!< No Carrier */\n+#define TDES_LCAR      (1 << 11)   /*!< Loss of Carrier */\n+#define TDES_IPE       (1 << 12)   /*!< IP Payload Error */\n+#define TDES_FF        (1 << 13)   /*!< Frame Flushed */\n+#define TDES_JT        (1 << 14)   /*!< Jabber Timeout */\n+#define TDES_ES        (1 << 15)   /*!< Error Summary */\n+#define TDES_IHE       (1 << 16)   /*!< IP Header Error */\n+#define TDES_TTSS      (1 << 17)   /*!< Transmit Timestamp Status */\n+#define TDES_OWN       (1UL << 31) /*!< Own Bit */\n+\n+/*\n+ * @brief TRAN_DESC_ENH_T only CTRLSTAT field bit defines\n+ */\n+#define TDES_ENH_IC   (1UL << 30)  /*!< Interrupt on Completion, enhanced descriptor */\n+#define TDES_ENH_LS   (1 << 29)        /*!< Last Segment, enhanced descriptor */\n+#define TDES_ENH_FS   (1 << 28)        /*!< First Segment, enhanced descriptor */\n+#define TDES_ENH_DC   (1 << 27)        /*!< Disable CRC, enhanced descriptor */\n+#define TDES_ENH_DP   (1 << 26)        /*!< Disable Pad, enhanced descriptor */\n+#define TDES_ENH_TTSE (1 << 25)        /*!< Transmit Timestamp Enable, enhanced descriptor */\n+#define TDES_ENH_CIC(n) ((n) << 22)    /*!< Checksum Insertion Control, enhanced descriptor */\n+#define TDES_ENH_TER  (1 << 21)        /*!< Transmit End of Ring, enhanced descriptor */\n+#define TDES_ENH_TCH  (1 << 20)        /*!< Second Address Chained, enhanced descriptor */\n+\n+/*\n+ * @brief TRAN_DESC_T only BSIZE field bit defines\n+ */\n+#define TDES_NORM_IC   (1UL << 31) /*!< Interrupt on Completion, normal descriptor */\n+#define TDES_NORM_FS   (1 << 30)   /*!< First Segment, normal descriptor */\n+#define TDES_NORM_LS   (1 << 29)   /*!< Last Segment, normal descriptor */\n+#define TDES_NORM_CIC(n) ((n) << 27)   /*!< Checksum Insertion Control, normal descriptor */\n+#define TDES_NORM_DC   (1 << 26)   /*!< Disable CRC, normal descriptor */\n+#define TDES_NORM_TER  (1 << 25)   /*!< Transmit End of Ring, normal descriptor */\n+#define TDES_NORM_TCH  (1 << 24)   /*!< Second Address Chained, normal descriptor */\n+#define TDES_NORM_DP   (1 << 23)   /*!< Disable Pad, normal descriptor */\n+#define TDES_NORM_TTSE (1 << 22)   /*!< Transmit Timestamp Enable, normal descriptor */\n+#define TDES_NORM_BS2(n) (((n) & 0x3FF) << 11) /*!< Buffer 2 size, normal descriptor */\n+#define TDES_NORM_BS1(n) (((n) & 0x3FF) << 0)  /*!< Buffer 1 size, normal descriptor */\n+\n+/*\n+ * @brief TRAN_DESC_ENH_T only BSIZE field bit defines\n+ */\n+#define TDES_ENH_BS2(n) (((n) & 0xFFF) << 16)  /*!< Buffer 2 size, enhanced descriptor */\n+#define TDES_ENH_BS1(n) (((n) & 0xFFF) << 0)   /*!< Buffer 1 size, enhanced descriptor */\n+\n+/*\n+ * @brief Common REC_DESC_T and REC_DESC_ENH_T STATUS field bit defines\n+ */\n+#define RDES_ESA      (1 << 0)     /*!< Extended Status Available/Rx MAC Address */\n+#define RDES_CE       (1 << 1)     /*!< CRC Error */\n+#define RDES_DRE      (1 << 2)     /*!< Dribble Bit Error */\n+#define RDES_RE       (1 << 3)     /*!< Receive Error */\n+#define RDES_RWT      (1 << 4)     /*!< Receive Watchdog Timeout */\n+#define RDES_FT       (1 << 5)     /*!< Frame Type */\n+#define RDES_LC       (1 << 6)     /*!< Late Collision */\n+#define RDES_TSA      (1 << 7)     /*!< Timestamp Available/IP Checksum Error (Type1) /Giant Frame */\n+#define RDES_LS       (1 << 8)     /*!< Last Descriptor */\n+#define RDES_FS       (1 << 9)     /*!< First Descriptor */\n+#define RDES_VLAN     (1 << 10)        /*!< VLAN Tag */\n+#define RDES_OE       (1 << 11)        /*!< Overflow Error */\n+#define RDES_LE       (1 << 12)        /*!< Length Error */\n+#define RDES_SAF      (1 << 13)        /*!< Source Address Filter Fail */\n+#define RDES_DE       (1 << 14)        /*!< Descriptor Error */\n+#define RDES_ES       (1 << 15)        /*!< ES: Error Summary */\n+#define RDES_FLMSK(n) (((n) & 0x3FFF0000) >> 16)/*!< Frame Length mask and shift */\n+#define RDES_AFM      (1 << 30)        /*!< Destination Address Filter Fail */\n+#define RDES_OWN      (1UL << 31)  /*!< Own Bit */\n+\n+/*\n+ * @brief Common REC_DESC_T and REC_DESC_ENH_T CTRL field bit defines\n+ */\n+#define RDES_DINT     (1UL << 31)  /*!< Disable interrupt on completion */\n+\n+/*\n+ * @brief REC_DESC_T pnly CTRL field bit defines\n+ */\n+#define RDES_NORM_RER (1 << 25)        /*!< Receive End of Ring, normal descriptor */\n+#define RDES_NORM_RCH (1 << 24)        /*!< Second Address Chained, normal descriptor */\n+#define RDES_NORM_BS2(n) (((n) & 0x3FF) << 11) /*!< Buffer 2 size, normal descriptor */\n+#define RDES_NORM_BS1(n) (((n) & 0x3FF) << 0)  /*!< Buffer 1 size, normal descriptor */\n+\n+/**\n+ * @brief REC_DESC_ENH_T only CTRL field bit defines\n+ */\n+#define RDES_ENH_RER  (1 << 15)        /*!< Receive End of Ring, enhanced descriptor */\n+#define RDES_ENH_RCH  (1 << 14)        /*!< Second Address Chained, enhanced descriptor */\n+#define RDES_ENH_BS2(n) (((n) & 0xFFF) << 16)  /*!< Buffer 2 size, enhanced descriptor */\n+#define RDES_ENH_BS1(n) (((n) & 0xFFF) << 0)   /*!< Buffer 1 size, enhanced descriptor */\n+\n+/*\n+ * @brief REC_DESC_ENH_T only EXTSTAT field bit defines\n+ */\n+#define RDES_ENH_IPPL(n)  (((n) & 0x7) >> 2)   /*!< IP Payload Type mask and shift, enhanced descripto */\n+#define RDES_ENH_IPHE     (1 << 3) /*!< IP Header Error, enhanced descripto */\n+#define RDES_ENH_IPPLE    (1 << 4) /*!< IP Payload Error, enhanced descripto */\n+#define RDES_ENH_IPCSB    (1 << 5) /*!< IP Checksum Bypassed, enhanced descripto */\n+#define RDES_ENH_IPV4     (1 << 6) /*!< IPv4 Packet Received, enhanced descripto */\n+#define RDES_ENH_IPV6     (1 << 7) /*!< IPv6 Packet Received, enhanced descripto */\n+#define RDES_ENH_MTMSK(n) (((n) & 0xF) >> 8)   /*!< Message Type mask and shift, enhanced descripto */\n+\n+/*\n+ * @brief Maximum size of an ethernet buffer\n+ */\n+#define EMAC_ETH_MAX_FLEN (1536)\n+\n+/**\n+ * @brief Structure of a transmit descriptor (without timestamp)\n+ */\n+typedef struct {\n+   __IO uint32_t CTRLSTAT;     /*!< TDES control and status word */\n+   __IO uint32_t BSIZE;        /*!< Buffer 1/2 byte counts */\n+   __IO uint32_t B1ADD;        /*!< Buffer 1 address */\n+   __IO uint32_t B2ADD;        /*!< Buffer 2 or next descriptor address */\n+} ENET_TXDESC_T;\n+\n+/**\n+ * @brief Structure of a enhanced transmit descriptor (with timestamp)\n+ */\n+typedef struct {\n+   __IO uint32_t CTRLSTAT;     /*!< TDES control and status word */\n+   __IO uint32_t BSIZE;        /*!< Buffer 1/2 byte counts */\n+   __IO uint32_t B1ADD;        /*!< Buffer 1 address */\n+   __IO uint32_t B2ADD;        /*!< Buffer 2 or next descriptor address */\n+   __IO uint32_t TDES4;        /*!< Reserved */\n+   __IO uint32_t TDES5;        /*!< Reserved */\n+   __IO uint32_t TTSL;         /*!< Timestamp value low */\n+   __IO uint32_t TTSH;         /*!< Timestamp value high */\n+} ENET_ENHTXDESC_T;\n+\n+/**\n+ * @brief Structure of a receive descriptor (without timestamp)\n+ */\n+typedef struct {\n+   __IO uint32_t STATUS;       /*!< RDES status word */\n+   __IO uint32_t CTRL;         /*!< Buffer 1/2 byte counts and control */\n+   __IO uint32_t B1ADD;        /*!< Buffer 1 address */\n+   __IO uint32_t B2ADD;        /*!< Buffer 2 or next descriptor address */\n+} ENET_RXDESC_T;\n+\n+/**\n+ * @brief Structure of a enhanced receive descriptor (with timestamp)\n+ */\n+typedef struct {\n+   __IO uint32_t STATUS;       /*!< RDES status word */\n+   __IO uint32_t CTRL;         /*!< Buffer 1/2 byte counts */\n+   __IO uint32_t B1ADD;        /*!< Buffer 1 address */\n+   __IO uint32_t B2ADD;        /*!< Buffer 2 or next descriptor address */\n+   __IO uint32_t EXTSTAT;      /*!< Extended Status */\n+   __IO uint32_t RDES5;        /*!< Reserved */\n+   __IO uint32_t RTSL;         /*!< Timestamp value low */\n+   __IO uint32_t RTSH;         /*!< Timestamp value high */\n+} ENET_ENHRXDESC_T;\n+\n+/**\n+ * @brief  Resets the ethernet interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ * @note   Resets the ethernet interface. This should be called prior to\n+ * Chip_ENET_Init with a small delay after this call.\n+ */\n+STATIC INLINE void Chip_ENET_Reset(LPC_ENET_T *pENET)\n+{\n+   /* This should be called prior to IP_ENET_Init. The MAC controller may\n+      not be ready for a call to init right away so a small delay should\n+      occur after this call. */\n+   pENET->DMA_BUS_MODE |= DMA_BM_SWR;\n+}\n+\n+/**\n+ * @brief  Sets the address of the interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  macAddr : Pointer to the 6 bytes used for the MAC address\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_SetADDR(LPC_ENET_T *pENET, const uint8_t *macAddr)\n+{\n+   /* Save MAC address */\n+   pENET->MAC_ADDR0_LOW = ((uint32_t) macAddr[3] << 24) |\n+                          ((uint32_t) macAddr[2] << 16) | ((uint32_t) macAddr[1] << 8) |\n+                          ((uint32_t) macAddr[0]);\n+   pENET->MAC_ADDR0_HIGH = ((uint32_t) macAddr[5] << 8) |\n+                           ((uint32_t) macAddr[4]);\n+}\n+\n+/**\n+ * @brief  Sets up the PHY link clock divider and PHY address\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  div     : Divider index, not a divider value, see user manual\n+ * @param  addr    : PHY address, used with MII read and write\n+ * @return Nothing\n+ */\n+void Chip_ENET_SetupMII(LPC_ENET_T *pENET, uint32_t div, uint8_t addr);\n+\n+/**\n+ * @brief  Starts a PHY write via the MII\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  reg     : PHY register to write\n+ * @param  data    : Data to write to PHY register\n+ * @return Nothing\n+ * @note   Start a PHY write operation. Does not block, requires calling\n+ * IP_ENET_IsMIIBusy to determine when write is complete.\n+ */\n+void Chip_ENET_StartMIIWrite(LPC_ENET_T *pENET, uint8_t reg, uint16_t data);\n+\n+/**\n+ * @brief  Starts a PHY read via the MII\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  reg     : PHY register to read\n+ * @return Nothing\n+ * @note   Start a PHY read operation. Does not block, requires calling\n+ * IP_ENET_IsMIIBusy to determine when read is complete and calling\n+ * IP_ENET_ReadMIIData to get the data.\n+ */\n+void Chip_ENET_StartMIIRead(LPC_ENET_T *pENET, uint8_t reg);\n+\n+/**\n+ * @brief  Returns MII link (PHY) busy status\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Returns true if busy, otherwise false\n+ */\n+STATIC INLINE bool Chip_ENET_IsMIIBusy(LPC_ENET_T *pENET)\n+{\n+   return (pENET->MAC_MII_ADDR & MAC_MIIA_GB) ? true : false;\n+}\n+\n+/**\n+ * @brief  Returns the value read from the PHY\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Read value from PHY\n+ */\n+STATIC INLINE uint16_t Chip_ENET_ReadMIIData(LPC_ENET_T *pENET)\n+{\n+   return pENET->MAC_MII_DATA;\n+}\n+\n+/**\n+ * @brief  Enables ethernet transmit\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_TXEnable(LPC_ENET_T *pENET)\n+{\n+   pENET->MAC_CONFIG |= MAC_CFG_TE;\n+   pENET->DMA_OP_MODE |= DMA_OM_ST;\n+}\n+\n+/**\n+ * @brief Disables ethernet transmit\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_TXDisable(LPC_ENET_T *pENET)\n+{\n+   pENET->MAC_CONFIG &= ~MAC_CFG_TE;\n+}\n+\n+/**\n+ * @brief  Enables ethernet packet reception\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_RXEnable(LPC_ENET_T *pENET)\n+{\n+   pENET->MAC_CONFIG |= MAC_CFG_RE;\n+   pENET->DMA_OP_MODE |= DMA_OM_SR;\n+}\n+\n+/**\n+ * @brief  Disables ethernet packet reception\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_RXDisable(LPC_ENET_T *pENET)\n+{\n+   pENET->MAC_CONFIG &= ~MAC_CFG_RE;\n+}\n+\n+/**\n+ * @brief  Enable RMII ethernet operation\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ * @note   This function must be called to enable the internal\n+ * RMII PHY, and must be called before calling any Ethernet\n+ * functions.\n+ */\n+STATIC INLINE void Chip_ENET_RMIIEnable(LPC_ENET_T *pENET)\n+{\n+   LPC_CREG->CREG6 |= 0x4;\n+}\n+\n+/**\n+ * @brief  Enable MII ethernet operation\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ * @note   This function must be called to enable the\n+ * MII PHY, and must be called before calling any Ethernet\n+ * functions.\n+ */\n+STATIC INLINE void Chip_ENET_MIIEnable(LPC_ENET_T *pENET)\n+{\n+   LPC_CREG->CREG6 &= ~0x7;\n+}\n+\n+/**\n+ * @brief  Sets full or half duplex for the interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  full    : true to selected full duplex, false for half\n+ * @return Nothing\n+ */\n+void Chip_ENET_SetDuplex(LPC_ENET_T *pENET, bool full);\n+\n+/**\n+ * @brief  Sets speed for the interface\n+ * @param  pENET       : The base of ENET peripheral on the chip\n+ * @param  speed100    : true to select 100Mbps mode, false for 10Mbps\n+ * @return Nothing\n+ */\n+void Chip_ENET_SetSpeed(LPC_ENET_T *pENET, bool speed100);\n+\n+/**\n+ * @brief  Configures the initial ethernet descriptors\n+ * @param  pENET       : The base of ENET peripheral on the chip\n+ * @param  pTXDescs    : Pointer to TX descriptor list\n+ * @param  pRXDescs    : Pointer to RX descriptor list\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_InitDescriptors(LPC_ENET_T *pENET,\n+                                            ENET_ENHTXDESC_T *pTXDescs, ENET_ENHRXDESC_T *pRXDescs)\n+{\n+   /* Setup descriptor list base addresses */\n+   pENET->DMA_TRANS_DES_ADDR = (uint32_t) pTXDescs;\n+   pENET->DMA_REC_DES_ADDR = (uint32_t) pRXDescs;\n+}\n+\n+/**\n+ * @brief  Starts receive polling of RX descriptors\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_RXStart(LPC_ENET_T *pENET)\n+{\n+   /* Start receive polling */\n+   pENET->DMA_REC_POLL_DEMAND = 1;\n+}\n+\n+/**\n+ * @brief  Starts transmit polling of TX descriptors\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_ENET_TXStart(LPC_ENET_T *pENET)\n+{\n+   /* Start transmit polling */\n+   pENET->DMA_TRANS_POLL_DEMAND = 1;\n+}\n+\n+/**\n+ * @brief  Initialize ethernet interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @param  phyAddr : Address of the Phy [valid range 0 to 31]\n+ * @return Nothing\n+ * @note   Performs basic initialization of the ethernet interface in a default\n+ * state. This is enough to place the interface in a usable state, but\n+ * may require more setup outside this function.\n+ */\n+void Chip_ENET_Init(LPC_ENET_T *pENET, uint32_t phyAddr);\n+\n+/**\n+ * @brief  De-initialize the ethernet interface\n+ * @param  pENET   : The base of ENET peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_ENET_DeInit(LPC_ENET_T *pENET);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ENET_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/error.h ./lpc_chip_43xx/inc/error.h\n--- a_OkB2vL/lpc_chip_43xx/inc/error.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/error.h\t2017-02-27 21:03:17.004043462 -0300\n@@ -0,0 +1,272 @@\n+/*\n+ * @brief Error code returned by Boot ROM drivers/library functions\n+ *\n+ *  This file contains unified error codes to be used across driver,\n+ *  middleware, applications, hal and demo software.\n+ *\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __LPC_ERROR_H__\n+#define __LPC_ERROR_H__\n+\n+/** Error code returned by Boot ROM drivers/library functions\n+ *\n+ *  Error codes are a 32-bit value with :\n+ *      - The 16 MSB contains the peripheral code number\n+ *      - The 16 LSB contains an error code number associated to that peripheral\n+ *\n+ */\n+typedef enum\n+{\n+  /**\\b 0x00000000*/ LPC_OK=0, /**< enum value returned on Success */\n+  /**\\b 0xFFFFFFFF*/ ERR_FAILED = -1, /**< enum value returned on general failure */\n+  /**\\b 0xFFFFFFFE*/ ERR_TIME_OUT = -2, /**< enum value returned on general timeout */\n+  /**\\b 0xFFFFFFFD*/ ERR_BUSY = -3,    /**< enum value returned when resource is busy */\n+\n+  /* ISP related errors */\n+  ERR_ISP_BASE = 0x00000000,\n+  /*0x00000001*/ ERR_ISP_INVALID_COMMAND = ERR_ISP_BASE + 1,\n+  /*0x00000002*/ ERR_ISP_SRC_ADDR_ERROR, /* Source address not on word boundary */\n+  /*0x00000003*/ ERR_ISP_DST_ADDR_ERROR, /* Destination address not on word or 256 byte boundary */\n+  /*0x00000004*/ ERR_ISP_SRC_ADDR_NOT_MAPPED,\n+  /*0x00000005*/ ERR_ISP_DST_ADDR_NOT_MAPPED,\n+  /*0x00000006*/ ERR_ISP_COUNT_ERROR, /* Byte count is not multiple of 4 or is not a permitted value */\n+  /*0x00000007*/ ERR_ISP_INVALID_SECTOR,\n+  /*0x00000008*/ ERR_ISP_SECTOR_NOT_BLANK,\n+  /*0x00000009*/ ERR_ISP_SECTOR_NOT_PREPARED_FOR_WRITE_OPERATION,\n+  /*0x0000000A*/ ERR_ISP_COMPARE_ERROR,\n+  /*0x0000000B*/ ERR_ISP_BUSY, /* Flash programming hardware interface is busy */\n+  /*0x0000000C*/ ERR_ISP_PARAM_ERROR, /* Insufficient number of parameters */\n+  /*0x0000000D*/ ERR_ISP_ADDR_ERROR, /* Address not on word boundary */\n+  /*0x0000000E*/ ERR_ISP_ADDR_NOT_MAPPED,\n+  /*0x0000000F*/ ERR_ISP_CMD_LOCKED, /* Command is locked */\n+  /*0x00000010*/ ERR_ISP_INVALID_CODE, /* Unlock code is invalid */\n+  /*0x00000011*/ ERR_ISP_INVALID_BAUD_RATE,\n+  /*0x00000012*/ ERR_ISP_INVALID_STOP_BIT,\n+  /*0x00000013*/ ERR_ISP_CODE_READ_PROTECTION_ENABLED,\n+  /*0x00000014*/ ERR_ISP_INVALID_FLASH_UNIT,\n+  /*0x00000015*/ ERR_ISP_USER_CODE_CHECKSUM,\n+  /*0x00000016*/ ERR_ISP_SETTING_ACTIVE_PARTITION,\n+  /*0x00000017*/ ERR_ISP_IRC_NO_POWER,\n+  /*0x00000018*/ ERR_ISP_FLASH_NO_POWER,\n+  /*0x00000019*/ ERR_ISP_EEPROM_NO_POWER,\n+  /*0x0000001A*/ ERR_ISP_EEPROM_NO_CLOCK,\n+  /*0x0000001B*/ ERR_ISP_FLASH_NO_CLOCK,\n+  /*0x0000001C*/ ERR_ISP_REINVOKE_ISP_CONFIG,\n+\n+  /* ROM API related errors */\n+  ERR_API_BASE = 0x00010000,\n+  /**\\b 0x00010001*/ ERR_API_INVALID_PARAMS = ERR_API_BASE + 1, /**< Invalid parameters*/\n+  /**\\b 0x00010002*/ ERR_API_INVALID_PARAM1, /**< PARAM1 is invalid */\n+  /**\\b 0x00010003*/ ERR_API_INVALID_PARAM2, /**< PARAM2 is invalid */\n+  /**\\b 0x00010004*/ ERR_API_INVALID_PARAM3, /**< PARAM3 is invalid */\n+  /**\\b 0x00010005*/ ERR_API_MOD_INIT, /**< API is called before module init */\n+\n+  /* SPIFI API related errors */\n+  ERR_SPIFI_BASE = 0x00020000,\n+  /*0x00020001*/ ERR_SPIFI_DEVICE_ERROR =ERR_SPIFI_BASE+1,\n+  /*0x00020002*/ ERR_SPIFI_INTERNAL_ERROR,\n+  /*0x00020003*/ ERR_SPIFI_TIMEOUT,\n+  /*0x00020004*/ ERR_SPIFI_OPERAND_ERROR,\n+  /*0x00020005*/ ERR_SPIFI_STATUS_PROBLEM,\n+  /*0x00020006*/ ERR_SPIFI_UNKNOWN_EXT,\n+  /*0x00020007*/ ERR_SPIFI_UNKNOWN_ID,\n+  /*0x00020008*/ ERR_SPIFI_UNKNOWN_TYPE,\n+  /*0x00020009*/ ERR_SPIFI_UNKNOWN_MFG,\n+  /*0x0002000A*/ ERR_SPIFI_NO_DEVICE,\n+  /*0x0002000B*/ ERR_SPIFI_ERASE_NEEDED,\n+\n+  SEC_AES_NO_ERROR=0,\n+  /* Security API related errors */\n+  ERR_SEC_AES_BASE = 0x00030000,\n+  /*0x00030001*/ ERR_SEC_AES_WRONG_CMD=ERR_SEC_AES_BASE+1,\n+  /*0x00030002*/ ERR_SEC_AES_NOT_SUPPORTED,\n+  /*0x00030003*/ ERR_SEC_AES_KEY_ALREADY_PROGRAMMED,\n+  /*0x00030004*/ ERR_SEC_AES_DMA_CHANNEL_CFG,\n+  /*0x00030005*/ ERR_SEC_AES_DMA_MUX_CFG,\n+  /*0x00030006*/ SEC_AES_DMA_BUSY,\n+\n+  /* USB device stack related errors */\n+  ERR_USBD_BASE = 0x00040000,\n+  /**\\b 0x00040001*/ ERR_USBD_INVALID_REQ = ERR_USBD_BASE + 1, /**< invalid request */\n+  /**\\b 0x00040002*/ ERR_USBD_UNHANDLED, /**< Callback did not process the event */\n+  /**\\b 0x00040003*/ ERR_USBD_STALL,     /**< Stall the endpoint on which the call back is called */\n+  /**\\b 0x00040004*/ ERR_USBD_SEND_ZLP,  /**< Send ZLP packet on the endpoint on which the call back is called */\n+  /**\\b 0x00040005*/ ERR_USBD_SEND_DATA, /**< Send data packet on the endpoint on which the call back is called */\n+  /**\\b 0x00040006*/ ERR_USBD_BAD_DESC,  /**< Bad descriptor*/\n+  /**\\b 0x00040007*/ ERR_USBD_BAD_CFG_DESC,/**< Bad config descriptor*/\n+  /**\\b 0x00040008*/ ERR_USBD_BAD_INTF_DESC,/**< Bad interface descriptor*/\n+  /**\\b 0x00040009*/ ERR_USBD_BAD_EP_DESC,/**< Bad endpoint descriptor*/\n+  /**\\b 0x0004000a*/ ERR_USBD_BAD_MEM_BUF, /**< Bad alignment of buffer passed. */\n+  /**\\b 0x0004000b*/ ERR_USBD_TOO_MANY_CLASS_HDLR, /**< Too many class handlers. */\n+\n+  /* CGU  related errors */\n+  ERR_CGU_BASE = 0x00050000,\n+  /*0x00050001*/ ERR_CGU_NOT_IMPL=ERR_CGU_BASE+1,\n+  /*0x00050002*/ ERR_CGU_INVALID_PARAM,\n+  /*0x00050003*/ ERR_CGU_INVALID_SLICE,\n+  /*0x00050004*/ ERR_CGU_OUTPUT_GEN,\n+  /*0x00050005*/ ERR_CGU_DIV_SRC,\n+  /*0x00050006*/ ERR_CGU_DIV_VAL,\n+  /*0x00050007*/ ERR_CGU_SRC,\n+\n+  /*  I2C related errors   */\n+  ERR_I2C_BASE = 0x00060000,\n+  /*0x00060000*/ ERR_I2C_BUSY = ERR_I2C_BASE,\n+  /*0x00060001*/ ERR_I2C_NAK,\n+  /*0x00060002*/ ERR_I2C_BUFFER_OVERFLOW,\n+  /*0x00060003*/ ERR_I2C_BYTE_COUNT_ERR,\n+  /*0x00060004*/ ERR_I2C_LOSS_OF_ARBRITRATION,\n+  /*0x00060005*/ ERR_I2C_SLAVE_NOT_ADDRESSED,\n+  /*0x00060006*/ ERR_I2C_LOSS_OF_ARBRITRATION_NAK_BIT,\n+  /*0x00060007*/ ERR_I2C_GENERAL_FAILURE,\n+  /*0x00060008*/ ERR_I2C_REGS_SET_TO_DEFAULT,\n+  /*0x00060009*/ ERR_I2C_TIMEOUT,\n+  /*0x0006000A*/ ERR_I2C_BUFFER_UNDERFLOW,\n+  /*0x0006000B*/ ERR_I2C_PARAM,\n+\n+   /* OTP  related errors */\n+  ERR_OTP_BASE = 0x00070000,\n+  /*0x00070001*/ ERR_OTP_WR_ENABLE_INVALID = ERR_OTP_BASE+1,\n+  /*0x00070002*/ ERR_OTP_SOME_BITS_ALREADY_PROGRAMMED,\n+  /*0x00070003*/ ERR_OTP_ALL_DATA_OR_MASK_ZERO,\n+  /*0x00070004*/ ERR_OTP_WRITE_ACCESS_LOCKED,\n+  /*0x00070005*/ ERR_OTP_READ_DATA_MISMATCH,\n+  /*0x00070006*/ ERR_OTP_USB_ID_ENABLED,\n+  /*0x00070007*/ ERR_OTP_ETH_MAC_ENABLED,\n+  /*0x00070008*/ ERR_OTP_AES_KEYS_ENABLED,\n+  /*0x00070009*/ ERR_OTP_ILLEGAL_BANK,\n+\n+  /*  UART related errors   */\n+  ERR_UART_BASE = 0x00080000,\n+  /*0x00080001*/ ERR_UART_RXD_BUSY = ERR_UART_BASE+1,   //UART rxd is busy\n+  /*0x00080002*/ ERR_UART_TXD_BUSY,   //UART txd is busy\n+  /*0x00080003*/ ERR_UART_OVERRUN_FRAME_PARITY_NOISE, //overrun err, frame err, parity err, RxNoise err\n+  /*0x00080004*/ ERR_UART_UNDERRUN,    //underrun err\n+  /*0x00080005*/ ERR_UART_PARAM,       //parameter is error\n+  /*0x00080006*/ ERR_UART_BAUDRATE,    //baudrate setting is error\n+\n+  /*  CAN related errors   */\n+  ERR_CAN_BASE = 0x00090000,\n+  /*0x00090001*/ ERR_CAN_BAD_MEM_BUF = ERR_CAN_BASE+1,\n+  /*0x00090002*/ ERR_CAN_INIT_FAIL,\n+  /*0x00090003*/ ERR_CANOPEN_INIT_FAIL,\n+\n+  /* SPIFI Lite API related errors */\n+  ERR_SPIFI_LITE_BASE = 0x000A0000,\n+  /*0x000A0001*/ ERR_SPIFI_LITE_INVALID_ARGUMENTS = ERR_SPIFI_LITE_BASE+1,\n+  /*0x000A0002*/ ERR_SPIFI_LITE_BUSY,\n+  /*0x000A0003*/ ERR_SPIFI_LITE_MEMORY_MODE_ON,\n+  /*0x000A0004*/ ERR_SPIFI_LITE_MEMORY_MODE_OFF,\n+  /*0x000A0005*/ ERR_SPIFI_LITE_IN_DMA,\n+  /*0x000A0006*/ ERR_SPIFI_LITE_NOT_IN_DMA,\n+  /*0x000A0100*/ PENDING_SPIFI_LITE,\n+\n+  /* CLK related errors */\n+  ERR_CLK_BASE = 0x000B0000,\n+  /*0x000B0001*/ ERR_CLK_NOT_IMPL=ERR_CLK_BASE+1,\n+  /*0x000B0002*/ ERR_CLK_INVALID_PARAM,\n+  /*0x000B0003*/ ERR_CLK_INVALID_SLICE,\n+  /*0x000B0004*/ ERR_CLK_OUTPUT_GEN,\n+  /*0x000B0005*/ ERR_CLK_DIV_SRC,\n+  /*0x000B0006*/ ERR_CLK_DIV_VAL,\n+  /*0x000B0007*/ ERR_CLK_SRC,\n+  /*0x000B0008*/ ERR_CLK_PLL_FIN_TOO_SMALL,\n+  /*0x000B0009*/ ERR_CLK_PLL_FIN_TOO_LARGE,\n+  /*0x000B000A*/ ERR_CLK_PLL_FOUT_TOO_SMALL,\n+  /*0x000B000B*/ ERR_CLK_PLL_FOUT_TOO_LARGE,\n+  /*0x000B000C*/ ERR_CLK_PLL_NO_SOLUTION,\n+  /*0x000B000D*/ ERR_CLK_PLL_MIN_PCT,\n+  /*0x000B000E*/ ERR_CLK_PLL_MAX_PCT,\n+  /*0x000B000F*/ ERR_CLK_OSC_FREQ,\n+  /*0x000B0010*/ ERR_CLK_CFG,\n+  /*0x000B0011*/ ERR_CLK_TIMEOUT,\n+  /*0x000B0012*/ ERR_CLK_BASE_OFF,\n+  /*0x000B0013*/ ERR_CLK_OFF_DEADLOCK,\n+\n+  /*Power API*/\n+  ERR_PWR_BASE = 0x000C0000,\n+  /*0x000C0001*/  PWR_ERROR_ILLEGAL_MODE=ERR_PWR_BASE+1,\n+  /*0x000C0002*/  PWR_ERROR_CLOCK_FREQ_TOO_HIGH,\n+  /*0x000C0003*/  PWR_ERROR_INVALID_STATE,\n+  /*0x000C0004*/  PWR_ERROR_INVALID_CFG,\n+  /*0x000C0005*/  PWR_ERROR_PVT_DETECT,\n+\n+  /* DMA related errors */\n+  ERR_DMA_BASE = 0x000D0000,\n+  /*0x000D0001*/    ERR_DMA_ERROR_INT=ERR_DMA_BASE+1,\n+  /*0x000D0002*/    ERR_DMA_CHANNEL_NUMBER,\n+  /*0x000D0003*/    ERR_DMA_CHANNEL_DISABLED,\n+  /*0x000D0004*/    ERR_DMA_BUSY,\n+  /*0x000D0005*/    ERR_DMA_NOT_ALIGNMENT,\n+  /*0x000D0006*/    ERR_DMA_PING_PONG_EN,\n+  /*0x000D0007*/    ERR_DMA_CHANNEL_VALID_PENDING,\n+  /*0x000D0008*/    ERR_DMA_PARAM,\n+  /*0x000D0009*/    ERR_DMA_QUEUE_EMPTY,\n+  /*0x000D000A*/    ERR_DMA_GENERAL,\n+\n+  /* SPI related errors */\n+  ERR_SPI_BASE = 0x000E0000,\n+  /*0x000E0000*/    ERR_SPI_BUSY=ERR_SPI_BASE,\n+  /*0x000E0001*/    ERR_SPI_RXOVERRUN,\n+  /*0x000E0002*/    ERR_SPI_TXUNDERRUN,\n+  /*0x000E0003*/    ERR_SPI_SELNASSERT,\n+  /*0x000E0004*/    ERR_SPI_SELNDEASSERT,\n+  /*0x000E0005*/    ERR_SPI_CLKSTALL,\n+  /*0x000E0006*/    ERR_SPI_PARAM,\n+  /*0x000E0007*/    ERR_SPI_INVALID_LENGTH,\n+\n+  /* ADC related errors */\n+  ERR_ADC_BASE = 0x000F0000,\n+  /*0x000F0001*/    ERR_ADC_OVERRUN=ERR_ADC_BASE+1,\n+  /*0x000F0002*/    ERR_ADC_INVALID_CHANNEL,\n+  /*0x000F0003*/    ERR_ADC_INVALID_SEQUENCE,\n+  /*0x000F0004*/    ERR_ADC_INVALID_SETUP,\n+  /*0x000F0005*/    ERR_ADC_PARAM,\n+  /*0x000F0006*/    ERR_ADC_INVALID_LENGTH,\n+  /*0x000F0007*/    ERR_ADC_NO_POWER,\n+\n+  /* Debugger Mailbox related errors */\n+  ERR_DM_BASE = 0x00100000,\n+  /*0x00100001*/    ERR_DM_NOT_ENTERED=ERR_DM_BASE+1,\n+  /*0x00100002*/    ERR_DM_UNKNOWN_CMD,\n+  /*0x00100003*/    ERR_DM_COMM_FAIL\n+\n+} ErrorCode_t;\n+\n+#ifndef offsetof\n+#define offsetof(s, m)   (int) &(((s *) 0)->m)\n+#endif\n+\n+#define COMPILE_TIME_ASSERT(pred)    switch (0) { \\\n+   case 0: \\\n+   case pred:; }\n+\n+#endif /* __LPC_ERROR_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/evrt_18xx_43xx.h ./lpc_chip_43xx/inc/evrt_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/evrt_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/evrt_18xx_43xx.h\t2017-02-27 21:03:17.004043462 -0300\n@@ -0,0 +1,171 @@\n+/*\n+ * @brief LPC18xx/43xx event router driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __EVRT_18XX_43XX_H_\n+#define __EVRT_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup EVRT_18XX_43XX CHIP: LPC18xx/43xx Event router driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Event Router register structure\n+ */\n+typedef struct {                       /*!< EVENTROUTER Structure  */\n+   __IO uint32_t HILO;                 /*!< Level configuration register */\n+   __IO uint32_t EDGE;                 /*!< Edge configuration     */\n+   __I  uint32_t RESERVED0[1012];\n+   __O  uint32_t CLR_EN;               /*!< Event clear enable register */\n+   __O  uint32_t SET_EN;               /*!< Event set enable register */\n+   __I  uint32_t STATUS;               /*!< Status register        */\n+   __I  uint32_t ENABLE;               /*!< Enable register        */\n+   __O  uint32_t CLR_STAT;             /*!< Clear register         */\n+   __O  uint32_t SET_STAT;             /*!< Set register           */\n+} LPC_EVRT_T;\n+\n+/**\n+ * @brief EVRT input sources\n+ */\n+typedef enum CHIP_EVRT_SRC {\n+   EVRT_SRC_WAKEUP0,           /*!< WAKEUP0 event router source        */\n+   EVRT_SRC_WAKEUP1,           /*!< WAKEUP1 event router source        */\n+   EVRT_SRC_WAKEUP2,           /*!< WAKEUP2 event router source        */\n+   EVRT_SRC_WAKEUP3,           /*!< WAKEUP3 event router source        */\n+   EVRT_SRC_ATIMER,            /*!< Alarm timer event router source    */\n+   EVRT_SRC_RTC,               /*!< RTC event router source            */\n+   EVRT_SRC_BOD1,              /*!< BOD event router source            */\n+   EVRT_SRC_WWDT,              /*!< WWDT event router source           */\n+   EVRT_SRC_ETHERNET,          /*!< Ethernet event router source       */\n+   EVRT_SRC_USB0,              /*!< USB0 event router source           */\n+   EVRT_SRC_USB1,              /*!< USB1 event router source           */\n+   EVRT_SRC_SDIO,              /*!< Reserved                           */\n+   EVRT_SRC_CCAN,              /*!< C_CAN event router source          */\n+   EVRT_SRC_COMBINE_TIMER2,    /*!< Combined timer 2 event router source   */\n+   EVRT_SRC_COMBINE_TIMER6,    /*!< Combined timer 6 event router source   */\n+   EVRT_SRC_QEI,               /*!< QEI event router source            */\n+   EVRT_SRC_COMBINE_TIMER14,   /*!< Combined timer 14 event router source  */\n+   EVRT_SRC_RESERVED1,         /*!< Reserved                           */\n+   EVRT_SRC_RESERVED2,         /*!< Reserved                           */\n+   EVRT_SRC_RESET              /*!< Reset event router source          */\n+} CHIP_EVRT_SRC_T;\n+\n+/**\n+ * @brief Macro for checking for a valid EVRT source\n+ */\n+#define PARAM_EVRT_SOURCE(n)    ((n == EVRT_SRC_WAKEUP0) || (n == EVRT_SRC_WAKEUP1)    \\\n+                                || (n == EVRT_SRC_WAKEUP2) || (n == EVRT_SRC_WAKEUP3) \\\n+                                || (n == EVRT_SRC_ATIMER) || (n == EVRT_SRC_RTC) \\\n+                                || (n == EVRT_SRC_BOD1) || (n == EVRT_SRC_WWDT) \\\n+                                || (n == EVRT_SRC_ETHERNET) || (n == EVRT_SRC_USB0) \\\n+                                || (n == EVRT_SRC_USB1) || (n == EVRT_SRC_CCAN) || (n == EVRT_SRC_SDIO) \\\n+                                || (n == EVRT_SRC_COMBINE_TIMER2) || (n == EVRT_SRC_COMBINE_TIMER6) \\\n+                                || (n == EVRT_SRC_QEI) || (n == EVRT_SRC_COMBINE_TIMER14) \\\n+                                || (n == EVRT_SRC_RESET)) \\\n+\n+/**\n+ * @brief EVRT input state detecting type\n+ */\n+typedef enum CHIP_EVRT_SRC_ACTIVE {\n+   EVRT_SRC_ACTIVE_LOW_LEVEL,      /*!< Active low level       */\n+   EVRT_SRC_ACTIVE_HIGH_LEVEL,     /*!< Active high level      */\n+   EVRT_SRC_ACTIVE_FALLING_EDGE,   /*!< Active falling edge    */\n+   EVRT_SRC_ACTIVE_RISING_EDGE     /*!< Active rising edge     */\n+} CHIP_EVRT_SRC_ACTIVE_T;\n+\n+/**\n+ * @brief Macro for checking for a valid EVRT state type\n+ */\n+#define PARAM_EVRT_SOURCE_ACTIVE_TYPE(n) ((n == EVRT_SRC_ACTIVE_LOW_LEVEL) || (n == EVRT_SRC_ACTIVE_HIGH_LEVEL)    \\\n+                                         || (n == EVRT_SRC_ACTIVE_FALLING_EDGE) || (n == EVRT_SRC_ACTIVE_RISING_EDGE))\n+\n+/**\n+ * @brief  Initialize the EVRT\n+ * @return Nothing\n+ */\n+void Chip_EVRT_Init (void);\n+\n+/**\n+ * @brief  Set up the type of interrupt type for a source to EVRT\n+ * @param  EVRT_Src    : EVRT source, should be one of CHIP_EVRT_SRC_T type\n+ * @param  type        : EVRT type, should be one of CHIP_EVRT_SRC_ACTIVE_T type\n+ * @return Nothing\n+ */\n+void Chip_EVRT_ConfigIntSrcActiveType(CHIP_EVRT_SRC_T EVRT_Src, CHIP_EVRT_SRC_ACTIVE_T type);\n+\n+/**\n+ * @brief  Check if a source is sending interrupt to EVRT\n+ * @param  EVRT_Src    : EVRT source, should be one of CHIP_EVRT_SRC_T type\n+ * @return true if the interrupt from the source is pending, otherwise false\n+ */\n+IntStatus Chip_EVRT_IsSourceInterrupting(CHIP_EVRT_SRC_T EVRT_Src);\n+\n+/**\n+ * @brief  Enable or disable interrupt sources to EVRT\n+ * @param  EVRT_Src    : EVRT source, should be one of CHIP_EVRT_SRC_T type\n+ * @param  state       : ENABLE or DISABLE to enable or disable event router source\n+ * @return Nothing\n+ */\n+void Chip_EVRT_SetUpIntSrc(CHIP_EVRT_SRC_T EVRT_Src, FunctionalState state);\n+\n+/**\n+ * @brief  De-initializes the EVRT peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EVRT_DeInit(void)\n+{\n+   LPC_EVRT->CLR_EN    = 0xFFFF;\n+   LPC_EVRT->CLR_STAT  = 0xFFFF;\n+}\n+\n+/**\n+ * @brief  Clear pending interrupt EVRT source\n+ * @param  EVRT_Src    : EVRT source, should be one of CHIP_EVRT_SRC_T type\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_EVRT_ClrPendIntSrc(CHIP_EVRT_SRC_T EVRT_Src)\n+{\n+   LPC_EVRT->CLR_STAT = (1 << (uint8_t) EVRT_Src);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __EVRT_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/fmc_18xx_43xx.h ./lpc_chip_43xx/inc/fmc_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/fmc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/fmc_18xx_43xx.h\t2017-02-27 21:03:17.004043462 -0300\n@@ -0,0 +1,139 @@\n+/*\n+ * @brief LPC18xx/43xx FLASH Memory Controller (FMC) driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __FMC_18XX_43XX_H_\n+#define __FMC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup FMC_18XX_43XX CHIP: LPC18xx/43xx FLASH Memory Controller driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief FLASH Memory Controller Unit register block structure\n+ */\n+typedef struct {       /*!< FMC Structure */\n+   __I  uint32_t  RESERVED1[8];\n+   __IO uint32_t  FMSSTART;\n+   __IO uint32_t  FMSSTOP;\n+   __I  uint32_t  RESERVED2;\n+   __I  uint32_t  FMSW[4];\n+   __I  uint32_t  RESERVED3[1001];\n+   __I  uint32_t  FMSTAT;\n+   __I  uint32_t  RESERVED5;\n+   __O  uint32_t  FMSTATCLR;\n+   __I  uint32_t  RESERVED4[5];\n+} LPC_FMC_T;\n+\n+/* Flash signature start and busy status bit */\n+#define FMC_FLASHSIG_BUSY       (1UL << 17)\n+\n+/* Flash signature clear status bit */\n+#define FMC_FLASHSIG_STAT       (1 << 2)\n+\n+/**\n+ * @brief  Start computation of a signature for a FLASH memory range\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @param  start   : Starting FLASH address for computation, must be aligned on 16 byte boundary\n+ * @param  stop    : Ending FLASH address for computation, must be aligned on 16 byte boundary\n+ * @return Nothing\n+ * @note   Only bits 20..4 are used for the FLASH signature computation.\n+ *         Use the Chip_FMC_IsSignatureBusy() function to determine when the\n+ *         signature computation operation is complete and use the\n+ *         Chip_FMC_GetSignature() function to get the computed signature.\n+ */\n+STATIC INLINE void Chip_FMC_ComputeSignature(uint8_t bank, uint32_t start, uint32_t stop)\n+{\n+   LPC_FMC[bank]->FMSSTART = (start >> 4);\n+   LPC_FMC[bank]->FMSTATCLR = FMC_FLASHSIG_STAT;\n+   LPC_FMC[bank]->FMSSTOP = (stop >> 4) | FMC_FLASHSIG_BUSY;\n+}\n+\n+/**\n+ * @brief  Start computation of a signature for a FLASH memory address and block count\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @param  start   : Starting FLASH address for computation, must be aligned on 16 byte boundary\n+ * @param  blocks  : Number of 16 byte blocks used for computation\n+ * @return Nothing\n+ * @note   Only bits 20..4 are used for the FLASH signature computation.\n+ *         Use the Chip_FMC_IsSignatureBusy() function to determine when the\n+ *         signature computation operation is complete and the\n+ *         Chip_FMC_GetSignature() function to get the computed signature.\n+ */\n+STATIC INLINE void Chip_FMC_ComputeSignatureBlocks(uint8_t bank, uint32_t start, uint32_t blocks)\n+{\n+   Chip_FMC_ComputeSignature(bank, start, (start + (blocks * 16)));\n+}\n+\n+/**\n+ * @brief  Clear signature generation completion flag\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_FMC_ClearSignatureBusy(uint8_t bank)\n+{\n+   LPC_FMC[bank]->FMSTATCLR = FMC_FLASHSIG_STAT;\n+}\n+\n+/**\n+ * @brief  Check for signature generation completion\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @return true if the signature computation is running, false if finished\n+ */\n+STATIC INLINE bool Chip_FMC_IsSignatureBusy(uint8_t bank)\n+{\n+   return (bool) ((LPC_FMC[bank]->FMSTAT & FMC_FLASHSIG_STAT) == 0);\n+}\n+\n+/**\n+ * @brief  Returns the generated FLASH signature value\n+ * @param  bank    : FLASH bank, A = 0, B = 1\n+ * @param  index   : Signature index to get - use 0 to FMSW0, 1 to FMSW1, etc.\n+ * @return the generated FLASH signature value\n+ */\n+STATIC INLINE uint32_t Chip_FMC_GetSignature(uint8_t bank, int index)\n+{\n+   return LPC_FMC[bank]->FMSW[index];\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __FMC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/fpu_init.h ./lpc_chip_43xx/inc/fpu_init.h\n--- a_OkB2vL/lpc_chip_43xx/inc/fpu_init.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/fpu_init.h\t2017-02-27 21:03:17.004043462 -0300\n@@ -0,0 +1,52 @@\n+/*\n+ * @brief FPU init code\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __FPU_INIT_H_\n+#define __FPU_INIT_H_\n+\n+/**\n+ * @defgroup CHIP_FPU_CMX CHIP: FPU initialization\n+ * @ingroup CHIP_Common\n+ * Cortex FPU initialization\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Early initialization of the FPU\n+ * @return Nothing\n+ */\n+void fpuInit(void);\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __FPU_INIT_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/gima_18xx_43xx.h ./lpc_chip_43xx/inc/gima_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/gima_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/gima_18xx_43xx.h\t2017-02-27 21:03:17.004043462 -0300\n@@ -0,0 +1,66 @@\n+/*\n+ * @brief LPC18xx/43xx GIMA driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GIMA_18XX_43XX_H_\n+#define __GIMA_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GIMA_18XX_43XX CHIP: LPC18xx/43xx GIMA driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Global Input Multiplexer Array (GIMA) register block structure\n+ */\n+typedef struct {                       /*!< GIMA Structure */\n+   __IO uint32_t  CAP0_IN[4][4];       /*!< Timer x CAP0_y capture input multiplexer (GIMA output ((x*4)+y)) */\n+   __IO uint32_t  CTIN_IN[8];          /*!< SCT CTIN_x capture input multiplexer (GIMA output (16+x)) */\n+   __IO uint32_t  ADCHS_TRIGGER_IN;    /*!< ADCHS trigger input multiplexer (GIMA output 24) */\n+   __IO uint32_t  EVENTROUTER_13_IN;   /*!< Event router input 13 multiplexer (GIMA output 25) */\n+   __IO uint32_t  EVENTROUTER_14_IN;   /*!< Event router input 14 multiplexer (GIMA output 26) */\n+   __IO uint32_t  EVENTROUTER_16_IN;   /*!< Event router input 16 multiplexer (GIMA output 27) */\n+   __IO uint32_t  ADCSTART0_IN;        /*!< ADC start0 input multiplexer (GIMA output 28) */\n+   __IO uint32_t  ADCSTART1_IN;        /*!< ADC start1 input multiplexer (GIMA output 29) */\n+} LPC_GIMA_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GIMA_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/gpdma_18xx_43xx.h ./lpc_chip_43xx/inc/gpdma_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/gpdma_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/gpdma_18xx_43xx.h\t2017-02-27 21:03:17.008043462 -0300\n@@ -0,0 +1,418 @@\n+/*\n+ * @brief LPC18xx/43xx General Purpose DMA driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights. NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GPDMA_18XX_43XX_H_\n+#define __GPDMA_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GPDMA_18XX_43XX CHIP: LPC18xx/43xx General Purpose DMA driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Number of channels on GPDMA\n+ */\n+#define GPDMA_NUMBER_CHANNELS 8\n+\n+/**\n+ * @brief GPDMA Channel register block structure\n+ */\n+typedef struct {\n+   __IO uint32_t  SRCADDR;             /*!< DMA Channel Source Address Register */\n+   __IO uint32_t  DESTADDR;            /*!< DMA Channel Destination Address Register */\n+   __IO uint32_t  LLI;                 /*!< DMA Channel Linked List Item Register */\n+   __IO uint32_t  CONTROL;             /*!< DMA Channel Control Register */\n+   __IO uint32_t  CONFIG;              /*!< DMA Channel Configuration Register */\n+   __I  uint32_t  RESERVED1[3];\n+} GPDMA_CH_T;\n+\n+/**\n+ * @brief GPDMA register block\n+ */\n+typedef struct {                       /*!< GPDMA Structure */\n+   __I  uint32_t  INTSTAT;             /*!< DMA Interrupt Status Register */\n+   __I  uint32_t  INTTCSTAT;           /*!< DMA Interrupt Terminal Count Request Status Register */\n+   __O  uint32_t  INTTCCLEAR;          /*!< DMA Interrupt Terminal Count Request Clear Register */\n+   __I  uint32_t  INTERRSTAT;          /*!< DMA Interrupt Error Status Register */\n+   __O  uint32_t  INTERRCLR;           /*!< DMA Interrupt Error Clear Register */\n+   __I  uint32_t  RAWINTTCSTAT;        /*!< DMA Raw Interrupt Terminal Count Status Register */\n+   __I  uint32_t  RAWINTERRSTAT;       /*!< DMA Raw Error Interrupt Status Register */\n+   __I  uint32_t  ENBLDCHNS;           /*!< DMA Enabled Channel Register */\n+   __IO uint32_t  SOFTBREQ;            /*!< DMA Software Burst Request Register */\n+   __IO uint32_t  SOFTSREQ;            /*!< DMA Software Single Request Register */\n+   __IO uint32_t  SOFTLBREQ;           /*!< DMA Software Last Burst Request Register */\n+   __IO uint32_t  SOFTLSREQ;           /*!< DMA Software Last Single Request Register */\n+   __IO uint32_t  CONFIG;              /*!< DMA Configuration Register */\n+   __IO uint32_t  SYNC;                /*!< DMA Synchronization Register */\n+   __I  uint32_t  RESERVED0[50];\n+   GPDMA_CH_T     CH[GPDMA_NUMBER_CHANNELS];\n+} LPC_GPDMA_T;\n+\n+/**\n+ * @brief Macro defines for DMA channel control registers\n+ */\n+#define GPDMA_DMACCxControl_TransferSize(n) (((n & 0xFFF) << 0))   /*!< Transfer size*/\n+#define GPDMA_DMACCxControl_SBSize(n)       (((n & 0x07) << 12))   /*!< Source burst size*/\n+#define GPDMA_DMACCxControl_DBSize(n)       (((n & 0x07) << 15))   /*!< Destination burst size*/\n+#define GPDMA_DMACCxControl_SWidth(n)       (((n & 0x07) << 18))   /*!< Source transfer width*/\n+#define GPDMA_DMACCxControl_DWidth(n)       (((n & 0x07) << 21))   /*!< Destination transfer width*/\n+#define GPDMA_DMACCxControl_SI              ((1UL << 26))          /*!< Source increment*/\n+#define GPDMA_DMACCxControl_DI              ((1UL << 27))          /*!< Destination increment*/\n+#define GPDMA_DMACCxControl_SrcTransUseAHBMaster1   ((1UL << 24))  /*!< Source AHB master select in 18xx43xx*/\n+#define GPDMA_DMACCxControl_DestTransUseAHBMaster1  ((1UL << 25))  /*!< Destination AHB master select in 18xx43xx*/\n+#define GPDMA_DMACCxControl_Prot1           ((1UL << 28))          /*!< Indicates that the access is in user mode or privileged mode*/\n+#define GPDMA_DMACCxControl_Prot2           ((1UL << 29))          /*!< Indicates that the access is bufferable or not bufferable*/\n+#define GPDMA_DMACCxControl_Prot3           ((1UL << 30))          /*!< Indicates that the access is cacheable or not cacheable*/\n+#define GPDMA_DMACCxControl_I               ((1UL << 31))          /*!< Terminal count interrupt enable bit */\n+\n+/**\n+ * @brief Macro defines for DMA Configuration register\n+ */\n+#define GPDMA_DMACConfig_E              ((0x01))   /*!< DMA Controller enable*/\n+#define GPDMA_DMACConfig_M              ((0x02))   /*!< AHB Master endianness configuration*/\n+#define GPDMA_DMACConfig_BITMASK        ((0x03))\n+\n+/**\n+ * @brief Macro defines for DMA Channel Configuration registers\n+ */\n+#define GPDMA_DMACCxConfig_E                    ((1UL << 0))           /*!< DMA control enable*/\n+#define GPDMA_DMACCxConfig_SrcPeripheral(n)     (((n & 0x1F) << 1))        /*!< Source peripheral*/\n+#define GPDMA_DMACCxConfig_DestPeripheral(n)    (((n & 0x1F) << 6))        /*!< Destination peripheral*/\n+#define GPDMA_DMACCxConfig_TransferType(n)      (((n & 0x7) << 11))        /*!< This value indicates the type of transfer*/\n+#define GPDMA_DMACCxConfig_IE                   ((1UL << 14))          /*!< Interrupt error mask*/\n+#define GPDMA_DMACCxConfig_ITC                  ((1UL << 15))          /*!< Terminal count interrupt mask*/\n+#define GPDMA_DMACCxConfig_L                    ((1UL << 16))          /*!< Lock*/\n+#define GPDMA_DMACCxConfig_A                    ((1UL << 17))          /*!< Active*/\n+#define GPDMA_DMACCxConfig_H                    ((1UL << 18))          /*!< Halt*/\n+\n+/**\n+ * @brief GPDMA Interrupt Clear Status\n+ */\n+typedef enum {\n+   GPDMA_STATCLR_INTTC,    /*!< GPDMA Interrupt Terminal Count Request Clear */\n+   GPDMA_STATCLR_INTERR    /*!< GPDMA Interrupt Error Clear */\n+} GPDMA_STATECLEAR_T;\n+\n+/**\n+ * @brief GPDMA Type of Interrupt Status\n+ */\n+typedef enum {\n+   GPDMA_STAT_INT,         /*!< GPDMA Interrupt Status */\n+   GPDMA_STAT_INTTC,       /*!< GPDMA Interrupt Terminal Count Request Status */\n+   GPDMA_STAT_INTERR,      /*!< GPDMA Interrupt Error Status */\n+   GPDMA_STAT_RAWINTTC,    /*!< GPDMA Raw Interrupt Terminal Count Status */\n+   GPDMA_STAT_RAWINTERR,   /*!< GPDMA Raw Error Interrupt Status */\n+   GPDMA_STAT_ENABLED_CH   /*!< GPDMA Enabled Channel Status */\n+} GPDMA_STATUS_T;\n+\n+/**\n+ * @brief GPDMA Type of DMA controller\n+ */\n+typedef enum {\n+   GPDMA_TRANSFERTYPE_M2M_CONTROLLER_DMA              = ((0UL)),   /*!< Memory to memory - DMA control */\n+   GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA              = ((1UL)),   /*!< Memory to peripheral - DMA control */\n+   GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA              = ((2UL)),   /*!< Peripheral to memory - DMA control */\n+   GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DMA              = ((3UL)),   /*!< Source peripheral to destination peripheral - DMA control */\n+   GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DestPERIPHERAL   = ((4UL)),   /*!< Source peripheral to destination peripheral - destination peripheral control */\n+   GPDMA_TRANSFERTYPE_M2P_CONTROLLER_PERIPHERAL       = ((5UL)),   /*!< Memory to peripheral - peripheral control */\n+   GPDMA_TRANSFERTYPE_P2M_CONTROLLER_PERIPHERAL       = ((6UL)),   /*!< Peripheral to memory - peripheral control */\n+   GPDMA_TRANSFERTYPE_P2P_CONTROLLER_SrcPERIPHERAL    = ((7UL))    /*!< Source peripheral to destination peripheral - source peripheral control */\n+} GPDMA_FLOW_CONTROL_T;\n+\n+/**\n+ * @brief GPDMA structure using for DMA configuration\n+ */\n+typedef struct {\n+   uint32_t ChannelNum;    /*!< DMA channel number, should be in\n+                            *  range from 0 to 7.\n+                            *  Note: DMA channel 0 has the highest priority\n+                            *  and DMA channel 7 the lowest priority.\n+                            */\n+   uint32_t TransferSize;  /*!< Length/Size of transfer */\n+   uint32_t TransferWidth; /*!< Transfer width - used for TransferType is GPDMA_TRANSFERTYPE_M2M only */\n+   uint32_t SrcAddr;       /*!< Physical Source Address, used in case TransferType is chosen as\n+                            *   GPDMA_TRANSFERTYPE_M2M or GPDMA_TRANSFERTYPE_M2P */\n+   uint32_t DstAddr;       /*!< Physical Destination Address, used in case TransferType is chosen as\n+                            *   GPDMA_TRANSFERTYPE_M2M or GPDMA_TRANSFERTYPE_P2M */\n+   uint32_t TransferType;  /*!< Transfer Type, should be one of the following:\n+                            * - GPDMA_TRANSFERTYPE_M2M: Memory to memory - DMA control\n+                            * - GPDMA_TRANSFERTYPE_M2P: Memory to peripheral - DMA control\n+                            * - GPDMA_TRANSFERTYPE_P2M: Peripheral to memory - DMA control\n+                            * - GPDMA_TRANSFERTYPE_P2P: Source peripheral to destination peripheral - DMA control\n+                            */\n+} GPDMA_CH_CFG_T;\n+\n+/**\n+ * @brief GPDMA request connections\n+ */\n+#define GPDMA_CONN_MEMORY           ((0UL))            /**< MEMORY             */\n+#define GPDMA_CONN_MAT0_0           ((1UL))            /**< MAT0.0             */\n+#define GPDMA_CONN_UART0_Tx         ((2UL))            /**< UART0 Tx           */\n+#define GPDMA_CONN_MAT0_1           ((3UL))            /**< MAT0.1             */\n+#define GPDMA_CONN_UART0_Rx         ((4UL))            /**< UART0 Rx           */\n+#define GPDMA_CONN_MAT1_0           ((5UL))            /**< MAT1.0             */\n+#define GPDMA_CONN_UART1_Tx         ((6UL))            /**< UART1 Tx           */\n+#define GPDMA_CONN_MAT1_1           ((7UL))            /**< MAT1.1             */\n+#define GPDMA_CONN_UART1_Rx         ((8UL))            /**< UART1 Rx           */\n+#define GPDMA_CONN_MAT2_0           ((9UL))            /**< MAT2.0             */\n+#define GPDMA_CONN_UART2_Tx         ((10UL))       /**< UART2 Tx           */\n+#define GPDMA_CONN_MAT2_1           ((11UL))       /**< MAT2.1             */\n+#define GPDMA_CONN_UART2_Rx         ((12UL))       /**< UART2 Rx           */\n+#define GPDMA_CONN_MAT3_0           ((13UL))       /**< MAT3.0             */\n+#define GPDMA_CONN_UART3_Tx         ((14UL))       /**< UART3 Tx           */\n+#define GPDMA_CONN_SCT_0            ((15UL))       /**< SCT timer channel 0*/\n+#define GPDMA_CONN_MAT3_1           ((16UL))       /**< MAT3.1             */\n+#define GPDMA_CONN_UART3_Rx         ((17UL))       /**< UART3 Rx           */\n+#define GPDMA_CONN_SCT_1            ((18UL))       /**< SCT timer channel 1*/\n+#define GPDMA_CONN_SSP0_Rx          ((19UL))       /**< SSP0 Rx            */\n+#define GPDMA_CONN_I2S_Tx_Channel_0 ((20UL))       /**< I2S0 Tx on channel 0 */\n+#define GPDMA_CONN_SSP0_Tx          ((21UL))       /**< SSP0 Tx            */\n+#define GPDMA_CONN_I2S_Rx_Channel_1 ((22UL))       /**< I2S0 Rx on channel 0 */\n+#define GPDMA_CONN_SSP1_Rx          ((23UL))       /**< SSP1 Rx            */\n+#define GPDMA_CONN_SSP1_Tx          ((24UL))       /**< SSP1 Tx            */\n+#define GPDMA_CONN_ADC_0            ((25UL))       /**< ADC 0              */\n+#define GPDMA_CONN_ADC_1            ((26UL))       /**< ADC 1              */\n+#define GPDMA_CONN_DAC              ((27UL))       /**< DAC                */\n+#define GPDMA_CONN_I2S1_Tx_Channel_0 ((28UL))      /**< I2S1 Tx on channel 0 */\n+#define GPDMA_CONN_I2S1_Rx_Channel_1 ((29UL))      /**< I2S1 Rx on channel 0 */\n+\n+/**\n+ * @brief GPDMA Burst size in Source and Destination definitions\n+ */\n+#define GPDMA_BSIZE_1   ((0UL))    /*!< Burst size = 1 */\n+#define GPDMA_BSIZE_4   ((1UL))    /*!< Burst size = 4 */\n+#define GPDMA_BSIZE_8   ((2UL))    /*!< Burst size = 8 */\n+#define GPDMA_BSIZE_16  ((3UL))    /*!< Burst size = 16 */\n+#define GPDMA_BSIZE_32  ((4UL))    /*!< Burst size = 32 */\n+#define GPDMA_BSIZE_64  ((5UL))    /*!< Burst size = 64 */\n+#define GPDMA_BSIZE_128 ((6UL))    /*!< Burst size = 128 */\n+#define GPDMA_BSIZE_256 ((7UL))    /*!< Burst size = 256 */\n+\n+/**\n+ * @brief Width in Source transfer width and Destination transfer width definitions\n+ */\n+#define GPDMA_WIDTH_BYTE        ((0UL))    /*!< Width = 1 byte */\n+#define GPDMA_WIDTH_HALFWORD    ((1UL))    /*!< Width = 2 bytes */\n+#define GPDMA_WIDTH_WORD        ((2UL))    /*!< Width = 4 bytes */\n+\n+/**\n+ * @brief Flow control definitions\n+ */\n+#define DMA_CONTROLLER 0       /*!< Flow control is DMA controller*/\n+#define SRC_PER_CONTROLLER 1   /*!< Flow control is Source peripheral controller*/\n+#define DST_PER_CONTROLLER 2   /*!< Flow control is Destination peripheral controller*/\n+\n+/**\n+ * @brief DMA channel handle structure\n+ */\n+typedef struct {\n+   FunctionalState ChannelStatus;  /*!< DMA channel status */\n+} DMA_ChannelHandle_t;\n+\n+/**\n+ * @brief Transfer Descriptor structure typedef\n+ */\n+typedef struct DMA_TransferDescriptor {\n+   uint32_t src;   /*!< Source address */\n+   uint32_t dst;   /*!< Destination address */\n+   uint32_t lli;   /*!< Pointer to next descriptor structure */\n+   uint32_t ctrl;  /*!< Control word that has transfer size, type etc. */\n+} DMA_TransferDescriptor_t;\n+\n+/**\n+ * @brief  Initialize the GPDMA\n+ * @param  pGPDMA  : The base of GPDMA on the chip\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_Init(LPC_GPDMA_T *pGPDMA);\n+\n+/**\n+ * @brief  Shutdown the GPDMA\n+ * @param  pGPDMA  : The base of GPDMA on the chip\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_DeInit(LPC_GPDMA_T *pGPDMA);\n+\n+/**\n+ * @brief  Initialize channel configuration strucutre\n+ * @param  pGPDMA          : The base of GPDMA on the chip\n+ * @param  GPDMACfg        : Pointer to configuration structure to be initialized\n+ * @param  ChannelNum      : Channel used for transfer *must be obtained using Chip_GPDMA_GetFreeChannel()*\n+ * @param  src             : Address of Memory or one of @link #GPDMA_CONN_MEMORY\n+ *                              PeripheralConnection_ID @endlink, which is the source\n+ * @param  dst             : Address of Memory or one of @link #GPDMA_CONN_MEMORY\n+ *                              PeripheralConnection_ID @endlink, which is the destination\n+ * @param  Size            : The number of DMA transfers\n+ * @param  TransferType    : Select the transfer controller and the type of transfer. (See, #GPDMA_FLOW_CONTROL_T)\n+ * @return ERROR on error, SUCCESS on success\n+ */\n+int Chip_GPDMA_InitChannelCfg(LPC_GPDMA_T *pGPDMA,\n+                             GPDMA_CH_CFG_T *GPDMACfg,\n+                             uint8_t  ChannelNum,\n+                             uint32_t src,\n+                             uint32_t dst,\n+                             uint32_t Size,\n+                             GPDMA_FLOW_CONTROL_T TransferType);\n+\n+/**\n+ * @brief  Enable or Disable the GPDMA Channel\n+ * @param  pGPDMA      : The base of GPDMA on the chip\n+ * @param  channelNum  : The GPDMA channel : 0 - 7\n+ * @param  NewState    : ENABLE to enable GPDMA or DISABLE to disable GPDMA\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_ChannelCmd(LPC_GPDMA_T *pGPDMA, uint8_t channelNum, FunctionalState NewState);\n+\n+/**\n+ * @brief  Stop a stream DMA transfer\n+ * @param  pGPDMA      : The base of GPDMA on the chip\n+ * @param  ChannelNum  : Channel Number to be closed\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_Stop(LPC_GPDMA_T *pGPDMA, uint8_t ChannelNum);\n+\n+/**\n+ * @brief  The GPDMA stream interrupt status checking\n+ * @param  pGPDMA      : The base of GPDMA on the chip\n+ * @param  ChannelNum  : Channel Number to be checked on interruption\n+ * @return Status:\n+ *              - SUCCESS  : DMA transfer success\n+ *              - ERROR        : DMA transfer failed\n+ */\n+Status Chip_GPDMA_Interrupt(LPC_GPDMA_T *pGPDMA, uint8_t ChannelNum);\n+\n+/**\n+ * @brief  Read the status from different registers according to the type\n+ * @param  pGPDMA  : The base of GPDMA on the chip\n+ * @param  type    : Status mode, should be:\n+ *                     - GPDMA_STAT_INT        : GPDMA Interrupt Status\n+ *                     - GPDMA_STAT_INTTC      : GPDMA Interrupt Terminal Count Request Status\n+ *                     - GPDMA_STAT_INTERR     : GPDMA Interrupt Error Status\n+ *                     - GPDMA_STAT_RAWINTTC   : GPDMA Raw Interrupt Terminal Count Status\n+ *                     - GPDMA_STAT_RAWINTERR  : GPDMA Raw Error Interrupt Status\n+ *                     - GPDMA_STAT_ENABLED_CH : GPDMA Enabled Channel Status\n+ * @param  channel : The GPDMA channel : 0 - 7\n+ * @return SET is interrupt is pending or RESET if not pending\n+ */\n+IntStatus Chip_GPDMA_IntGetStatus(LPC_GPDMA_T *pGPDMA, GPDMA_STATUS_T type, uint8_t channel);\n+\n+/**\n+ * @brief  Clear the Interrupt Flag from different registers according to the type\n+ * @param  pGPDMA  : The base of GPDMA on the chip\n+ * @param  type    : Flag mode, should be:\n+ *                     - GPDMA_STATCLR_INTTC   : GPDMA Interrupt Terminal Count Request\n+ *                     - GPDMA_STATCLR_INTERR  : GPDMA Interrupt Error\n+ * @param  channel : The GPDMA channel : 0 - 7\n+ * @return Nothing\n+ */\n+void Chip_GPDMA_ClearIntPending(LPC_GPDMA_T *pGPDMA, GPDMA_STATECLEAR_T type, uint8_t channel);\n+\n+/**\n+ * @brief  Get a free GPDMA channel for one DMA connection\n+ * @param  pGPDMA                  : The base of GPDMA on the chip\n+ * @param  PeripheralConnection_ID : Some chip fix each peripheral DMA connection on a specified channel ( have not used in 17xx/40xx )\n+ * @return The channel number which is selected\n+ */\n+uint8_t Chip_GPDMA_GetFreeChannel(LPC_GPDMA_T *pGPDMA,\n+                                 uint32_t PeripheralConnection_ID);\n+\n+/**\n+ * @brief  Do a DMA transfer M2M, M2P,P2M or P2P\n+ * @param  pGPDMA      : The base of GPDMA on the chip\n+ * @param  ChannelNum  : Channel used for transfer\n+ * @param  src         : Address of Memory or PeripheralConnection_ID which is the source\n+ * @param  dst         : Address of Memory or PeripheralConnection_ID which is the destination\n+ * @param  TransferType: Select the transfer controller and the type of transfer. Should be:\n+ *                               - GPDMA_TRANSFERTYPE_M2M_CONTROLLER_DMA\n+ *                               - GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA\n+ *                               - GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA\n+ *                               - GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DMA\n+ *                               - GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DestPERIPHERAL\n+ *                               - GPDMA_TRANSFERTYPE_M2P_CONTROLLER_PERIPHERAL\n+ *                               - GPDMA_TRANSFERTYPE_P2M_CONTROLLER_PERIPHERAL\n+ *                               - GPDMA_TRANSFERTYPE_P2P_CONTROLLER_SrcPERIPHERAL\n+ * @param  Size        : The number of DMA transfers\n+ * @return ERROR on error, SUCCESS on success\n+ */\n+Status Chip_GPDMA_Transfer(LPC_GPDMA_T *pGPDMA,\n+                          uint8_t ChannelNum,\n+                          uint32_t src,\n+                          uint32_t dst,\n+                          GPDMA_FLOW_CONTROL_T TransferType,\n+                          uint32_t Size);\n+\n+/**\n+ * @brief  Do a DMA transfer using linked list of descriptors\n+ * @param  pGPDMA          : The base of GPDMA on the chip\n+ * @param  ChannelNum      : Channel used for transfer *must be obtained using Chip_GPDMA_GetFreeChannel()*\n+ * @param  DMADescriptor   : First node in the linked list of descriptors\n+ * @param  TransferType    : Select the transfer controller and the type of transfer. (See, #GPDMA_FLOW_CONTROL_T)\n+ * @return ERROR on error, SUCCESS on success\n+ */\n+Status Chip_GPDMA_SGTransfer(LPC_GPDMA_T *pGPDMA,\n+                            uint8_t ChannelNum,\n+                            const DMA_TransferDescriptor_t *DMADescriptor,\n+                            GPDMA_FLOW_CONTROL_T TransferType);\n+\n+/**\n+ * @brief  Prepare a single DMA descriptor\n+ * @param  pGPDMA          : The base of GPDMA on the chip\n+ * @param  DMADescriptor   : DMA Descriptor to be initialized\n+ * @param  src             : Address of Memory or one of @link #GPDMA_CONN_MEMORY\n+ *                              PeripheralConnection_ID @endlink, which is the source\n+ * @param  dst             : Address of Memory or one of @link #GPDMA_CONN_MEMORY\n+ *                              PeripheralConnection_ID @endlink, which is the destination\n+ * @param  Size            : The number of DMA transfers\n+ * @param  TransferType    : Select the transfer controller and the type of transfer. (See, #GPDMA_FLOW_CONTROL_T)\n+ * @param  NextDescriptor  : Pointer to next descriptor (0 if no more descriptors available)\n+ * @return ERROR on error, SUCCESS on success\n+ */\n+Status Chip_GPDMA_PrepareDescriptor(LPC_GPDMA_T *pGPDMA,\n+                                   DMA_TransferDescriptor_t *DMADescriptor,\n+                                   uint32_t src,\n+                                   uint32_t dst,\n+                                   uint32_t Size,\n+                                   GPDMA_FLOW_CONTROL_T TransferType,\n+                                   const DMA_TransferDescriptor_t *NextDescriptor);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GPDMA_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/gpio_18xx_43xx.h ./lpc_chip_43xx/inc/gpio_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/gpio_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/gpio_18xx_43xx.h\t2017-02-27 21:03:17.008043462 -0300\n@@ -0,0 +1,471 @@\n+/*\n+ * @brief LPC18xx/43xx GPIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GPIO_18XX_43XX_H_\n+#define __GPIO_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GPIO_18XX_43XX CHIP: LPC18xx/43xx GPIO driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  GPIO port register block structure\n+ */\n+typedef struct {               /*!< GPIO_PORT Structure */\n+   __IO uint8_t B[128][32];    /*!< Offset 0x0000: Byte pin registers ports 0 to n; pins PIOn_0 to PIOn_31 */\n+   __IO uint32_t W[32][32];    /*!< Offset 0x1000: Word pin registers port 0 to n */\n+   __IO uint32_t DIR[32];      /*!< Offset 0x2000: Direction registers port n */\n+   __IO uint32_t MASK[32];     /*!< Offset 0x2080: Mask register port n */\n+   __IO uint32_t PIN[32];      /*!< Offset 0x2100: Portpin register port n */\n+   __IO uint32_t MPIN[32];     /*!< Offset 0x2180: Masked port register port n */\n+   __IO uint32_t SET[32];      /*!< Offset 0x2200: Write: Set register for port n Read: output bits for port n */\n+   __O  uint32_t CLR[32];      /*!< Offset 0x2280: Clear port n */\n+   __O  uint32_t NOT[32];      /*!< Offset 0x2300: Toggle port n */\n+} LPC_GPIO_T;\n+\n+/**\n+ * @brief  Initialize GPIO block\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_GPIO_Init(LPC_GPIO_T *pGPIO);\n+\n+/**\n+ * @brief  De-Initialize GPIO block\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO);\n+\n+/**\n+ * @brief  Set a GPIO port/bit state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO port to set\n+ * @param  pin     : GPIO pin to set\n+ * @param  setting : true for high, false for low\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_WritePortBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t pin, bool setting)\n+{\n+   pGPIO->B[port][pin] = setting;\n+}\n+\n+/**\n+ * @brief  Set a GPIO pin state via the GPIO byte register\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to set\n+ * @param  setting : true for high, false for low\n+ * @return Nothing\n+ * @note   This function replaces Chip_GPIO_WritePortBit()\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinState(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool setting)\n+{\n+   pGPIO->B[port][pin] = setting;\n+}\n+\n+/**\n+ * @brief  Read a GPIO state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO port to read\n+ * @param  pin     : GPIO pin to read\n+ * @return true of the GPIO is high, false if low\n+ * @note   It is recommended to use the Chip_GPIO_GetPinState() function instead.\n+ */\n+STATIC INLINE bool Chip_GPIO_ReadPortBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t pin)\n+{\n+   return (bool) pGPIO->B[port][pin];\n+}\n+\n+/**\n+ * @brief  Get a GPIO pin state via the GPIO byte register\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to get state for\n+ * @return true if the GPIO is high, false if low\n+ * @note   This function replaces Chip_GPIO_ReadPortBit()\n+ */\n+STATIC INLINE bool Chip_GPIO_GetPinState(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   return (bool) pGPIO->B[port][pin];\n+}\n+\n+/**\n+ * @brief  Set a GPIO direction\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO port to set\n+ * @param  bit     : GPIO bit to set\n+ * @param  setting : true for output, false for input\n+ * @return Nothing\n+ * @note   It is recommended to use the Chip_GPIO_SetPinDIROutput(),\n+ * Chip_GPIO_SetPinDIRInput() or Chip_GPIO_SetPinDIR() functions instead\n+ * of this function.\n+ */\n+void Chip_GPIO_WriteDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t bit, bool setting);\n+\n+/**\n+ * @brief  Set GPIO direction for a single GPIO pin to an output\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to set direction on as output\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinDIROutput(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->DIR[port] |= 1UL << pin;\n+}\n+\n+/**\n+ * @brief  Set GPIO direction for a single GPIO pin to an input\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to set direction on as input\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinDIRInput(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->DIR[port] &= ~(1UL << pin);\n+}\n+\n+/**\n+ * @brief  Set GPIO direction for a single GPIO pin\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to set direction for\n+ * @param  output  : true for output, false for input\n+ * @return Nothing\n+ */\n+void Chip_GPIO_SetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool output);\n+\n+/**\n+ * @brief  Read a GPIO direction (out or in)\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO port to read\n+ * @param  bit     : GPIO bit to read\n+ * @return true of the GPIO is an output, false if input\n+ * @note   It is recommended to use the Chip_GPIO_GetPinDIR() function instead.\n+ */\n+STATIC INLINE bool Chip_GPIO_ReadDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t bit)\n+{\n+   return (bool) (((pGPIO->DIR[port]) >> bit) & 1);\n+}\n+\n+/**\n+ * @brief  Get GPIO direction for a single GPIO pin\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : GPIO pin to get direction for\n+ * @return true if the GPIO is an output, false if input\n+ */\n+STATIC INLINE bool Chip_GPIO_GetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   return (bool) (((pGPIO->DIR[port]) >> pin) & 1);\n+}\n+\n+/**\n+ * @brief  Set Direction for a GPIO port\n+ * @param  pGPIO       : The base of GPIO peripheral on the chip\n+ * @param  portNum     : port Number\n+ * @param  bitValue    : GPIO bit to set\n+ * @param  out         : Direction value, 0 = input, !0 = output\n+ * @return None\n+ * @note   Bits set to '0' are not altered. It is recommended to use the\n+ * Chip_GPIO_SetPortDIR() function instead.\n+ */\n+void Chip_GPIO_SetDir(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue, uint8_t out);\n+\n+/**\n+ * @brief  Set GPIO direction for a all selected GPIO pins to an output\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pinMask : GPIO pin mask to set direction on as output (bits 0..b for pins 0..n)\n+ * @return Nothing\n+ * @note   Sets multiple GPIO pins to the output direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortDIROutput(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)\n+{\n+   pGPIO->DIR[port] |= pinMask;\n+}\n+\n+/**\n+ * @brief  Set GPIO direction for a all selected GPIO pins to an input\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pinMask : GPIO pin mask to set direction on as input (bits 0..b for pins 0..n)\n+ * @return Nothing\n+ * @note   Sets multiple GPIO pins to the input direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an input.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortDIRInput(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pinMask)\n+{\n+   pGPIO->DIR[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief  Set GPIO direction for a all selected GPIO pins to an input or output\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pinMask : GPIO pin mask to set direction on (bits 0..b for pins 0..n)\n+ * @param  outSet  : Direction value, false = set as inputs, true = set as outputs\n+ * @return Nothing\n+ * @note   Sets multiple GPIO pins to the input direction, each bit's position that is\n+ * high sets the corresponding pin number for that bit to an input.\n+ */\n+void Chip_GPIO_SetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pinMask, bool outSet);\n+\n+/**\n+ * @brief  Get GPIO direction for a all GPIO pins\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @return a bitfield containing the input and output states for each pin\n+ * @note   For pins 0..n, a high state in a bit corresponds to an output state for the\n+ * same pin, while a low  state corresponds to an input state.\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_GetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+   return pGPIO->DIR[port];\n+}\n+\n+/**\n+ * @brief  Set GPIO port mask value for GPIO masked read and write\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : port Number\n+ * @param  mask    : Mask value for read and write (only low bits are enabled)\n+ * @return Nothing\n+ * @note   Controls which bits are set or unset when using the masked\n+ * GPIO read and write functions. A low state indicates the pin is settable\n+ * and readable via the masked write and read functions.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortMask(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t mask)\n+{\n+   pGPIO->MASK[port] = mask;\n+}\n+\n+/**\n+ * @brief  Get GPIO port mask value used for GPIO masked read and write\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : port Number\n+ * @return Returns value set with the Chip_GPIO_SetPortMask() function.\n+ * @note   A high bit in the return value indicates that that GPIO pin for the\n+ * port cannot be set using the masked write function.\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_GetPortMask(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+   return pGPIO->MASK[port];\n+}\n+\n+/**\n+ * @brief  Set all GPIO raw pin states (regardless of masking)\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  value   : Value to set all GPIO pin states (0..n) to\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortValue(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t value)\n+{\n+   pGPIO->PIN[port] = value;\n+}\n+\n+/**\n+ * @brief  Get all GPIO raw pin states (regardless of masking)\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @return Current (raw) state of all GPIO pins\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_GetPortValue(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+   return pGPIO->PIN[port];\n+}\n+\n+/**\n+ * @brief  Set all GPIO pin states, but mask via the MASKP0 register\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  value   : Value to set all GPIO pin states (0..n) to\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_GPIO_SetMaskedPortValue(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t value)\n+{\n+   pGPIO->MPIN[port] = value;\n+}\n+\n+/**\n+ * @brief  Get all GPIO pin statesm but mask via the MASKP0 register\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @return Current (masked) state of all GPIO pins\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_GetMaskedPortValue(LPC_GPIO_T *pGPIO, uint8_t port)\n+{\n+   return pGPIO->MPIN[port];\n+}\n+\n+/**\n+ * @brief  Set a GPIO port/bit to the high state\n+ * @param  pGPIO       : The base of GPIO peripheral on the chip\n+ * @param  portNum     : port number\n+ * @param  bitValue    : bit(s) in the port to set high\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output. It is recommended to use the\n+ * Chip_GPIO_SetPortOutHigh() function instead.\n+ */\n+STATIC INLINE void Chip_GPIO_SetValue(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue)\n+{\n+   pGPIO->SET[portNum] = bitValue;\n+}\n+\n+/**\n+ * @brief  Set selected GPIO output pins to the high state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pins    : pins (0..n) to set high\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortOutHigh(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+   pGPIO->SET[port] = pins;\n+}\n+\n+/**\n+ * @brief  Set an individual GPIO output pin to the high state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip'\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : pin number (0..n) to set high\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinOutHigh(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->SET[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief  Set a GPIO port/bit to the low state\n+ * @param  pGPIO       : The base of GPIO peripheral on the chip\n+ * @param  portNum     : port number\n+ * @param  bitValue    : bit(s) in the port to set low\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_ClearValue(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue)\n+{\n+   pGPIO->CLR[portNum] = bitValue;\n+}\n+\n+/**\n+ * @brief  Set selected GPIO output pins to the low state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pins    : pins (0..n) to set low\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortOutLow(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+   pGPIO->CLR[port] = pins;\n+}\n+\n+/**\n+ * @brief  Set an individual GPIO output pin to the low state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : pin number (0..n) to set low\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinOutLow(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->CLR[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief  Toggle selected GPIO output pins to the opposite state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pins    : pins (0..n) to toggle\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPortToggle(LPC_GPIO_T *pGPIO, uint8_t port, uint32_t pins)\n+{\n+   pGPIO->NOT[port] = pins;\n+}\n+\n+/**\n+ * @brief  Toggle an individual GPIO output pin to the opposite state\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  port    : GPIO Port number where @a pin is located\n+ * @param  pin     : pin number (0..n) to toggle\n+ * @return None\n+ * @note   Any bit set as a '0' will not have it's state changed. This only\n+ * applies to ports configured as an output.\n+ */\n+STATIC INLINE void Chip_GPIO_SetPinToggle(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin)\n+{\n+   pGPIO->NOT[port] = (1 << pin);\n+}\n+\n+/**\n+ * @brief  Read current bit states for the selected port\n+ * @param  pGPIO   : The base of GPIO peripheral on the chip\n+ * @param  portNum : port number to read\n+ * @return Current value of GPIO port\n+ * @note   The current states of the bits for the port are read, regardless of\n+ * whether the GPIO port bits are input or output.\n+ */\n+STATIC INLINE uint32_t Chip_GPIO_ReadValue(LPC_GPIO_T *pGPIO, uint8_t portNum)\n+{\n+   return pGPIO->PIN[portNum];\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GPIO_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/gpiogroup_18xx_43xx.h ./lpc_chip_43xx/inc/gpiogroup_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/gpiogroup_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/gpiogroup_18xx_43xx.h\t2017-02-27 21:03:17.008043462 -0300\n@@ -0,0 +1,205 @@\n+/*\n+ * @brief LPC18xx/43xx GPIO group driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __GPIOGROUP_18XX_43XX_H_\n+#define __GPIOGROUP_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup GPIOGP_18XX_43XX CHIP: LPC18xx/43xx GPIO group driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief GPIO grouped interrupt register block structure\n+ */\n+typedef struct {                   /*!< GPIO_GROUP_INTn Structure */\n+   __IO uint32_t  CTRL;            /*!< GPIO grouped interrupt control register */\n+   __I  uint32_t  RESERVED0[7];\n+   __IO uint32_t  PORT_POL[8];     /*!< GPIO grouped interrupt port polarity register */\n+   __IO uint32_t  PORT_ENA[8];     /*!< GPIO grouped interrupt port m enable register */\n+   uint32_t       RESERVED1[1000];\n+} LPC_GPIOGROUPINT_T;\n+\n+/**\n+ * LPC18xx/43xx GPIO group bit definitions\n+ */\n+#define GPIOGR_INT      (1 << 0)   /*!< GPIO interrupt pending/clear bit */\n+#define GPIOGR_COMB     (1 << 1)   /*!< GPIO interrupt OR(0)/AND(1) mode bit */\n+#define GPIOGR_TRIG     (1 << 2)   /*!< GPIO interrupt edge(0)/level(1) mode bit */\n+\n+/**\n+ * @brief  Clear interrupt pending status for the selected group\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_ClearIntStatus(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   uint32_t temp;\n+\n+   temp = pGPIOGPINT[group].CTRL;\n+   pGPIOGPINT[group].CTRL = temp | GPIOGR_INT;\n+}\n+\n+/**\n+ * @brief  Returns current GPIO group inetrrupt pending status\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return true if the group interrupt is pending, otherwise false.\n+ */\n+STATIC INLINE bool Chip_GPIOGP_GetIntStatus(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   return (bool) ((pGPIOGPINT[group].CTRL & GPIOGR_INT) != 0);\n+}\n+\n+/**\n+ * @brief  Selected GPIO group functionality for trigger on any pin in group (OR mode)\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectOrMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   pGPIOGPINT[group].CTRL &= ~GPIOGR_COMB;\n+}\n+\n+/**\n+ * @brief  Selected GPIO group functionality for trigger on all matching pins in group (AND mode)\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectAndMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   pGPIOGPINT[group].CTRL |= GPIOGR_COMB;\n+}\n+\n+/**\n+ * @brief  Selected GPIO group functionality edge trigger mode\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectEdgeMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   pGPIOGPINT[group].CTRL &= ~GPIOGR_TRIG;\n+}\n+\n+/**\n+ * @brief  Selected GPIO group functionality level trigger mode\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectLevelMode(LPC_GPIOGROUPINT_T *pGPIOGPINT, uint8_t group)\n+{\n+   pGPIOGPINT[group].CTRL |= GPIOGR_TRIG;\n+}\n+\n+/**\n+ * @brief  Set selected pins for the group and port to low level trigger\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @param  port        : GPIO port number\n+ * @param  pinMask     : Or'ed value of pins to select for low level (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectLowLevel(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+                                             uint8_t group,\n+                                             uint8_t port,\n+                                             uint32_t pinMask)\n+{\n+   pGPIOGPINT[group].PORT_POL[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief  Set selected pins for the group and port to high level trigger\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @param  port        : GPIO port number\n+ * @param  pinMask     : Or'ed value of pins to select for high level (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return None\n+ */\n+STATIC INLINE void Chip_GPIOGP_SelectHighLevel(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+                                              uint8_t group,\n+                                              uint8_t port,\n+                                              uint32_t pinMask)\n+{\n+   pGPIOGPINT[group].PORT_POL[port] |= pinMask;\n+}\n+\n+/**\n+ * @brief  Disabled selected pins for the group interrupt\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @param  port        : GPIO port number\n+ * @param  pinMask     : Or'ed value of pins to disable interrupt for (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return None\n+ * @note   Disabled pins do not contrinute to the group interrupt.\n+ */\n+STATIC INLINE void Chip_GPIOGP_DisableGroupPins(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+                                               uint8_t group,\n+                                               uint8_t port,\n+                                               uint32_t pinMask)\n+{\n+   pGPIOGPINT[group].PORT_ENA[port] &= ~pinMask;\n+}\n+\n+/**\n+ * @brief  Enable selected pins for the group interrupt\n+ * @param  pGPIOGPINT  : Pointer to GPIO group register block\n+ * @param  group       : GPIO group number\n+ * @param  port        : GPIO port number\n+ * @param  pinMask     : Or'ed value of pins to enable interrupt for (bit 0 = pin 0, 1 = pin1, etc.)\n+ * @return None\n+ * @note   Enabled pins contribute to the group interrupt.\n+ */\n+STATIC INLINE void Chip_GPIOGP_EnableGroupPins(LPC_GPIOGROUPINT_T *pGPIOGPINT,\n+                                              uint8_t group,\n+                                              uint8_t port,\n+                                              uint32_t pinMask)\n+{\n+   pGPIOGPINT[group].PORT_ENA[port] |= pinMask;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __GPIOGROUP_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/hsadc_18xx_43xx.h ./lpc_chip_43xx/inc/hsadc_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/hsadc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/hsadc_18xx_43xx.h\t2017-02-27 21:03:17.008043462 -0300\n@@ -0,0 +1,575 @@\n+/*\n+ * @brief  LPC18xx/43xx High speed ADC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __HSADC_18XX_43XX_H_\n+#define __HSADC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup HSADC_18XX_43XX CHIP:  LPC18xx/43xx High speed ADC driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief High speed ADC interrupt control structure\n+ */\n+typedef struct {\n+   __O  uint32_t CLR_EN;           /*!< Interrupt clear mask */\n+   __O  uint32_t SET_EN;           /*!< Interrupt set mask */\n+   __I  uint32_t MASK;             /*!< Interrupt mask */\n+   __I  uint32_t STATUS;           /*!< Interrupt status */\n+   __O  uint32_t CLR_STAT;         /*!< Interrupt clear status */\n+   __O  uint32_t SET_STAT;         /*!< Interrupt set status */\n+   uint32_t RESERVED[2];\n+} HSADCINTCTRL_T;\n+\n+/**\n+ * @brief HSADC register block structure\n+ */\n+typedef struct {                   /*!< HSADC Structure */\n+   __O  uint32_t FLUSH;            /*!< Flushes FIFO */\n+   __IO uint32_t DMA_REQ;          /*!< Set or clear DMA write request */\n+   __I  uint32_t FIFO_STS;         /*!< Indicates FIFO fill level status */\n+   __IO uint32_t FIFO_CFG;         /*!< Configures FIFO fill level */\n+   __O  uint32_t TRIGGER;          /*!< Enable software trigger to start descriptor processing */\n+   __IO uint32_t DSCR_STS;         /*!< Indicates active descriptor table and descriptor entry */\n+   __IO uint32_t POWER_DOWN;       /*!< Set or clear power down mode */\n+   __IO uint32_t CONFIG;           /*!< Configures external trigger mode, store channel ID in FIFO and walk-up recovery time from power down */\n+   __IO uint32_t THR[2];           /*!< Configures window comparator A or B levels */\n+   __I  uint32_t LAST_SAMPLE[6];   /*!< Contains last converted sample of input M [M=0..5) and result of window comparator */\n+   uint32_t RESERVED0[49];\n+   __IO uint32_t ADC_SPEED;        /*!< ADC speed control */\n+   __IO uint32_t POWER_CONTROL;    /*!< Configures ADC power vs. speed, DC-in biasing, output format and power gating */\n+   uint32_t RESERVED1[61];\n+   __I  uint32_t FIFO_OUTPUT[16];  /*!< FIFO output mapped to 16 consecutive address locations */\n+   uint32_t RESERVED2[48];\n+   __IO uint32_t DESCRIPTOR[2][8]; /*!< Table 0 and 1 descriptors */\n+   uint32_t RESERVED3[752];\n+   HSADCINTCTRL_T INTS[2];         /*!< Interrupt 0 and 1 control and status registers */\n+} LPC_HSADC_T;\n+\n+#define HSADC_MAX_SAMPLEVAL 0xFFF\n+\n+/**\n+ * @brief  Initialize the High speed ADC\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_HSADC_Init(LPC_HSADC_T *pHSADC);\n+\n+/**\n+ * @brief  Shutdown HSADC\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_HSADC_DeInit(LPC_HSADC_T *pHSADC);\n+\n+/**\n+ * @brief  Flush High speed ADC FIFO\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_FlushFIFO(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->FLUSH = 1;\n+}\n+\n+/**\n+ * @brief  Load a descriptor table from memory by requesting a DMA write\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ * @note   WHat is this used for?\n+ */\n+STATIC INLINE void Chip_HSADC_LoadDMADesc(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->DMA_REQ = 1;\n+}\n+\n+/**\n+ * @brief  Returns current HSADC FIFO fill level\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return FIFO level, 0 for empty, 1 to 15, or 16 for full\n+ * @note   WHat is this used for?\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetFIFOLevel(LPC_HSADC_T *pHSADC)\n+{\n+   return pHSADC->FIFO_STS;\n+}\n+\n+/**\n+ * @brief  Sets up HSADC FIFO trip level and packing\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @param  trip    : HSADC FIFO trip point (1 to 15 samples)\n+ * @param  packed  : true to pack samples, false for no packing\n+ * @return Nothing\n+ * @note   The FIFO trip point is used for the DMA or interrupt level.\n+ *         Sample packging allows packing 2 samples into a single 32-bit\n+ *         word.\n+ */\n+void Chip_HSADC_SetupFIFO(LPC_HSADC_T *pHSADC, uint8_t trip, bool packed);\n+\n+/**\n+ * @brief  Starts a manual (software) trigger of HSADC descriptors\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_SWTrigger(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->TRIGGER = 1;\n+}\n+\n+/**\n+ * @brief  Set active table descriptor index and number\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @param  table   : Table index, 0 or 1\n+ * @param  desc    : Descriptor index, 0 to 7\n+ * @return Nothing\n+ * @note   This function can be used to set active descriptor table and\n+ *         active descriptor entry values. The new values will be updated\n+ *         immediately. This should only be updated when descriptors are\n+ *         not running (halted).\n+ */\n+STATIC INLINE void Chip_HSADC_SetActiveDescriptor(LPC_HSADC_T *pHSADC, uint8_t table, uint8_t desc)\n+{\n+   pHSADC->DSCR_STS = (uint32_t) ((desc << 1) | table);\n+}\n+\n+/**\n+ * @brief  Returns currently active descriptor index being processed\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return the current active descriptor index, 0 to 7\n+ */\n+STATIC INLINE uint8_t Chip_HSADC_GetActiveDescriptorIndex(LPC_HSADC_T *pHSADC)\n+{\n+   return (uint8_t) ((pHSADC->DSCR_STS >> 1) & 0x7);\n+}\n+\n+/**\n+ * @brief  Returns currently active descriptor table being processed\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return the current active descriptor table, 0 or 1\n+ */\n+STATIC INLINE uint8_t Chip_HSADC_GetActiveDescriptorTable(LPC_HSADC_T *pHSADC)\n+{\n+   return (uint8_t) (pHSADC->DSCR_STS & 1);\n+}\n+\n+/**\n+ * @brief  Enables ADC power down mode\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ * @note   In most cases, this function doesn't need to be used as\n+ * the descriptors control power as needed.\n+ */\n+STATIC INLINE void Chip_HSADC_EnablePowerDownMode(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->POWER_DOWN = 1;\n+}\n+\n+/**\n+ * @brief  Disables ADC power down mode\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return Nothing\n+ * @note   In most cases, this function doesn't need to be used as\n+ * the descriptors control power as needed.\n+ */\n+STATIC INLINE void Chip_HSADC_DisablePowerDownMode(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->POWER_DOWN = 0;\n+}\n+\n+/* HSADC trigger configuration mask types */\n+typedef enum {\n+   HSADC_CONFIG_TRIGGER_OFF = 0,               /*!< ADCHS triggers off */\n+   HSADC_CONFIG_TRIGGER_SW = 1,                /*!< ADCHS software trigger only */\n+   HSADC_CONFIG_TRIGGER_EXT = 2,               /*!< ADCHS external trigger only */\n+   HSADC_CONFIG_TRIGGER_BOTH = 3               /*!< ADCHS both software and external triggers allowed */\n+} HSADC_TRIGGER_MASK_T;\n+\n+/* HSADC trigger configuration mode types */\n+typedef enum {\n+   HSADC_CONFIG_TRIGGER_RISEEXT = (0 << 2),    /*!< ADCHS rising external trigger */\n+   HSADC_CONFIG_TRIGGER_FALLEXT = (1 << 2),    /*!< ADCHS falling external trigger */\n+   HSADC_CONFIG_TRIGGER_LOWEXT = (2 << 2),     /*!< ADCHS low external trigger */\n+   HSADC_CONFIG_TRIGGER_HIGHEXT = (3 << 2)     /*!< ADCHS high external trigger */\n+} HSADC_TRIGGER_MODE_T;\n+\n+/* HSADC trigger configuration sync types */\n+typedef enum {\n+   HSADC_CONFIG_TRIGGER_NOEXTSYNC = (0 << 4),  /*!< do not synchronize external trigger input */\n+   HSADC_CONFIG_TRIGGER_EXTSYNC = (1 << 4),    /*!< synchronize external trigger input */\n+} HSADC_TRIGGER_SYNC_T;\n+\n+/* HSADC trigger configuration channel ID */\n+typedef enum {\n+   HSADC_CHANNEL_ID_EN_NONE = (0 << 5),    /*!< do not add channel ID to FIFO output data */\n+   HSADC_CHANNEL_ID_EN_ADD = (1 << 5),     /*!< add channel ID to FIFO output data */\n+} HSADC_CHANNEL_ID_EN_T;\n+\n+/**\n+ * @brief  Configure HSADC trigger source and recovery time\n+ * @param  pHSADC          : The base of HSADC peripheral on the chip\n+ * @param  mask            : HSADC trigger configuration mask type\n+ * @param  mode            : HSADC trigger configuration mode type\n+ * @param  sync            : HSADC trigger configuration sync type\n+ * @param  chID            : HSADC trigger configuration channel ID enable\n+ * @param  recoveryTime    : ADC recovery time (in HSADC clocks) from powerdown (255 max)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_ConfigureTrigger(LPC_HSADC_T *pHSADC,\n+                                              HSADC_TRIGGER_MASK_T mask,\n+                                              HSADC_TRIGGER_MODE_T mode,\n+                                              HSADC_TRIGGER_SYNC_T sync,\n+                                              HSADC_CHANNEL_ID_EN_T chID, uint16_t recoveryTime)\n+{\n+   pHSADC->CONFIG = (uint32_t) mask | (uint32_t) mode | (uint32_t) sync |\n+                    (uint32_t) chID | (uint32_t) (recoveryTime << 6);\n+}\n+\n+/**\n+ * @brief  Set HSADC Threshold low value\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @param   thrnum : Threshold register value (0 for threshold register A, 1 for threshold register B)\n+ * @param   value  : Threshold low data value (should be 12-bit value)\n+ * @return None\n+ */\n+void Chip_HSADC_SetThrLowValue(LPC_HSADC_T *pHSADC, uint8_t thrnum, uint16_t value);\n+\n+/**\n+ * @brief  Set HSADC Threshold high value\n+ * @param  pHSADC      : The base of HSADC peripheral on the chip\n+ * @param   thrnum      : Threshold register value (0 for threshold register A, 1 for threshold register B)\n+ * @param   value       : Threshold high data value (should be 12-bit value)\n+ * @return None\n+ */\n+void Chip_HSADC_SetThrHighValue(LPC_HSADC_T *pHSADC, uint8_t thrnum, uint16_t value);\n+\n+/** HSADC last sample registers bit fields */\n+#define HSADC_LS_DONE                    (1 << 0)      /*!< Sample conversion complete bit */\n+#define HSADC_LS_OVERRUN                 (1 << 1)      /*!< Sample overrun bit */\n+#define HSADC_LS_RANGE_IN                (0 << 2)      /*!< Threshold range comparison is in range */\n+#define HSADC_LS_RANGE_BELOW             (1 << 2)      /*!< Threshold range comparison is below range */\n+#define HSADC_LS_RANGE_ABOVE             (2 << 2)      /*!< Threshold range comparison is above range */\n+#define HSADC_LS_RANGE(val)              ((val) & 0xC) /*!< Mask for threshold crossing comparison result */\n+#define HSADC_LS_CROSSING_NONE           (0 << 4)      /*!< No threshold crossing detected */\n+#define HSADC_LS_CROSSING_DOWN           (1 << 4)      /*!< Downward threshold crossing detected */\n+#define HSADC_LS_CROSSING_UP             (2 << 4)      /*!< Upward threshold crossing detected */\n+#define HSADC_LS_CROSSING(val)           ((val) & 0x30)    /*!< Mask for threshold crossing comparison result */\n+#define HSADC_LS_DATA(val)               ((val) >> 6)  /*!< Mask data value out of sample */\n+\n+/**\n+ * @brief  Read a ADC last sample register\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  channel : Last sample register to read, 0-5\n+ * @return Current raw value of the indexed last sample register\n+ * @note   This function returns the raw value of the indexed last sample register\n+ * and clears the sample's DONE and OVERRUN statuses if set. You can determine\n+ * the overrun and datavalid status for the sample by masking the return value\n+ * with HSADC_LS_DONE or HSADC_LS_OVERRUN. To get the data value for the sample,\n+ * use the HSADC_LS_DATA(sample) macro. The threshold range and crossing results\n+ * can be determined by using the HSADC_LS_RANGE(sample) and\n+ * HSADC_LS_CROSSING(sample) macros and comparing the result against the\n+ * HSADC_LS_RANGE_* or HSADC_LS_CROSSING_* definitions.<br>\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetLastSample(LPC_HSADC_T *pHSADC, uint8_t channel)\n+{\n+   return pHSADC->LAST_SAMPLE[channel];\n+}\n+\n+/**\n+ * @brief  Setup speed for a input channel\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  channel : Input to set, 0-5\n+ * @param  speed   : Speed value to set (0xF, 0xE, or 0x0), see user manual\n+ * @return Nothing\n+ * @note   It is recommended not to use this function, as the values needed\n+ * for this register will be setup with the Chip_HSADC_SetPowerSpeed() function.\n+ */\n+void Chip_HSADC_SetSpeed(LPC_HSADC_T *pHSADC, uint8_t channel, uint8_t speed);\n+\n+/**\n+ * @brief  Setup (common) HSADC power and speed settings\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  comp2   : True sets up for 2's complement, false sets up for offset binary data format\n+ * @return Nothing\n+ * @note   This function sets up the HSADC current/power/speed settings that\n+ * apply to all HSADC channels (inputs). Based on the HSADC clock rate, it will\n+ * automatically setup the best current setting (CRS) and speed settings (DGEC)\n+ * for all channels. (See user manual).<br>\n+ * This function is also used to set the data format of the sampled data. It is\n+ * recommended to call this function if the HSADC sample rate changes.\n+ */\n+void Chip_HSADC_SetPowerSpeed(LPC_HSADC_T *pHSADC, bool comp2);\n+\n+/* AC-DC coupling selection for vin_neg and vin_pos sides */\n+typedef enum {\n+   HSADC_CHANNEL_NODCBIAS = 0,     /*!< No DC bias */\n+   HSADC_CHANNEL_DCBIAS = 1,       /*!< DC bias on vin_neg side */\n+} HSADC_DCBIAS_T;\n+\n+/**\n+ * @brief  Setup AC-DC coupling selection for a channel\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  channel : Input to set, 0-5\n+ * @param  dcInNeg : AC-DC coupling selection on vin_neg side\n+ * @param  dcInPos : AC-DC coupling selection on vin_pos side\n+ * @return Nothing\n+ * @note   This function sets up the HSADC current/power/speed settings that\n+ * apply to all HSADC channels (inputs). Based on the HSADC clock rate, it will\n+ * automatically setup the best current setting (CRS) and speed settings (DGEC)\n+ * for all channels. (See user manual).<br>\n+ * This function is also used to set the data format of the sampled data. It is\n+ * recommended to call this function if the HSADC sample rate changes.\n+ */\n+void Chip_HSADC_SetACDCBias(LPC_HSADC_T *pHSADC, uint8_t channel,\n+                           HSADC_DCBIAS_T dcInNeg, HSADC_DCBIAS_T dcInPos);\n+\n+/**\n+ * @brief  Enable HSADC power control and band gap reference\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @return Nothing\n+ * @note   This function enables both the HSADC power and band gap\n+ * reference.\n+ */\n+STATIC INLINE void Chip_HSADC_EnablePower(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->POWER_CONTROL |= (1 << 17) | (1 << 18);\n+}\n+\n+/**\n+ * @brief  Disable HSADC power control and band gap reference\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @return Nothing\n+ * @note   This function disables both the HSADC power and band gap\n+ * reference.\n+ */\n+STATIC INLINE void Chip_HSADC_DisablePower(LPC_HSADC_T *pHSADC)\n+{\n+   pHSADC->POWER_CONTROL &= ~((1 << 17) | (1 << 18));\n+}\n+\n+/** HSADC FIFO registers bit fields for unpacked sample in lower 16 bits */\n+#define HSADC_FIFO_SAMPLE_MASK      (0xFFF)                    /*!< 12-bit sample mask (unpacked) */\n+#define HSADC_FIFO_SAMPLE(val)      ((val) & 0xFFF)            /*!< Macro for stripping out unpacked sample data */\n+#define HSADC_FIFO_CHAN_ID_MASK     (0x7000)               /*!< Channel ID mask */\n+#define HSADC_FIFO_CHAN_ID(val)     (((val) >> 12) & 0x7)  /*!< Macro for stripping out sample data */\n+#define HSADC_FIFO_EMPTY            (0x1 << 15)                /*!< FIFO empty (invalid sample) */\n+#define HSADC_FIFO_SHIFTPACKED(val) ((val) >> 16)          /*!< Shifts the packed FIFO sample into the lower 16-bits of a word */\n+#define HSADC_FIFO_PACKEDMASK       (1UL << 31)                /*!< Packed sample check mask */\n+\n+/**\n+ * @brief  Reads the HSADC FIFO\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @return HSADC FIFO value\n+ * @note   This function reads and pops the HSADC FIFO. The FIFO\n+ * contents can be determined by using the HSADC_FIFO_* macros. If\n+ * FIFO packing is enabled, this may contain 2 samples. Use the\n+ * HSADC_FIFO_SHIFTPACKED macro to shift packed sample data into a\n+ * variable that can be used with the HSADC_FIFO_* macros. Note that\n+ * even if packing is enabled, the packed sample may not be valid.\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetFIFO(LPC_HSADC_T *pHSADC)\n+{\n+   return pHSADC->FIFO_OUTPUT[0];\n+}\n+\n+/** HSADC descriptor registers bit fields and support macros */\n+#define HSADC_DESC_CH(ch)           (ch)               /*!< Converter input channel */\n+#define HSADC_DESC_HALT             (1 << 3)           /*!< Descriptor halt after conversion bit */\n+#define HSADC_DESC_INT              (1 << 4)           /*!< Raise interrupt when ADC result is available bit */\n+#define HSADC_DESC_POWERDOWN        (1 << 5)           /*!< Power down after this conversion bit */\n+#define HSADC_DESC_BRANCH_NEXT      (0 << 6)           /*!< Continue with next descriptor */\n+#define HSADC_DESC_BRANCH_FIRST     (1 << 6)           /*!< Branch to the first descriptor */\n+#define HSADC_DESC_BRANCH_SWAP      (2 << 6)           /*!< Swap tables and branch to the first descriptor of the new table */\n+#define HSADC_DESC_MATCH(val)       ((val) << 8)       /*!< Match value used to trigger a descriptor */\n+#define HSADC_DESC_THRESH_NONE      (0 << 22)          /*!< No threshold detection performed */\n+#define HSADC_DESC_THRESH_A         (1 << 22)          /*!< Use A threshold detection */\n+#define HSADC_DESC_THRESH_B         (2 << 22)          /*!< Use B threshold detection */\n+#define HSADC_DESC_RESET_TIMER      (1 << 24)          /*!< Reset descriptor timer */\n+#define HSADC_DESC_UPDATE_TABLE     (1UL << 31)            /*!< Update table with all 8 descriptors of this table */\n+\n+/**\n+ * @brief  Sets up a raw HSADC descriptor entry\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  table   : Descriptor table number, 0 or 1\n+ * @param  descNo  : Descriptor number to setup, 0 to 7\n+ * @param  desc    : Raw descriptor value (see notes)\n+ * @return Nothing\n+ * @note   This function sets up a descriptor table entry. To setup\n+ * a descriptor entry, select a OR'ed combination of the HSADC_DESC_CH,\n+ * HSADC_DESC_HALT, HSADC_DESC_INT, HSADC_DESC_POWERDOWN, one of\n+ * HSADC_DESC_BRANCH_*, HSADC_DESC_MATCH, one of HSADC_DESC_THRESH_*, and\n+ * HSADC_DESC_RESET_TIMER definitions.<br>\n+ * Example for setting up a table 0, descriptor number 4 entry for input 0:<br>\n+ * Chip_HSADC_SetupDescEntry(LPC_HSADC, 0, 4, (HSADC_DESC_CH(0) | HSADC_DESC_HALT |\n+ *    HSADC_DESC_INT));\n+ */\n+STATIC INLINE void Chip_HSADC_SetupDescEntry(LPC_HSADC_T *pHSADC, uint8_t table,\n+                                            uint8_t descNo, uint32_t desc)\n+{\n+   pHSADC->DESCRIPTOR[table][descNo] = desc;\n+}\n+\n+/**\n+ * @brief  Update all descriptors of a table\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  table   : Descriptor table number, 0 or 1\n+ * @return Nothing\n+ * @note   Updates descriptor table with all 8 descriptors. This\n+ * function should be used after all descriptors are setup with\n+ * the Chip_HSADC_SetupDescEntry() function.\n+ */\n+STATIC INLINE void Chip_HSADC_UpdateDescTable(LPC_HSADC_T *pHSADC, uint8_t table)\n+{\n+   pHSADC->DESCRIPTOR[table][0] |= HSADC_DESC_UPDATE_TABLE;\n+}\n+\n+/* Interrupt selection for interrupt 0 set - these interrupts and statuses\n+   should only be used with the interrupt 0 register set */\n+#define HSADC_INT0_FIFO_FULL         (1 << 0)      /*!< number of samples in FIFO is more than FIFO_LEVEL */\n+#define HSADC_INT0_FIFO_EMPTY        (1 << 1)      /*!< FIFO is empty */\n+#define HSADC_INT0_FIFO_OVERFLOW     (1 << 2)      /*!< FIFO was full; conversion sample is not stored and lost */\n+#define HSADC_INT0_DSCR_DONE         (1 << 3)      /*!< The descriptor INTERRUPT field was enabled and its sample is converted */\n+#define HSADC_INT0_DSCR_ERROR        (1 << 4)      /*!< The ADC was not fully woken up when a sample was converted and the conversion results is unreliable */\n+#define HSADC_INT0_ADC_OVF           (1 << 5)      /*!< Converted sample value was over range of the 12 bit output code */\n+#define HSADC_INT0_ADC_UNF           (1 << 6)      /*!< Converted sample value was under range of the 12 bit output code */\n+\n+/* Interrupt selection for interrupt 1 set - these interrupts and statuses\n+   should only be used with the interrupt 1 register set */\n+#define HSADC_INT1_THCMP_BRANGE(ch)  (1 << ((ch * 5) + 0)) /*!< Input channel result below range */\n+#define HSADC_INT1_THCMP_ARANGE(ch)  (1 << ((ch * 5) + 1)) /*!< Input channel result above range */\n+#define HSADC_INT1_THCMP_DCROSS(ch)  (1 << ((ch * 5) + 2)) /*!< Input channel result downward threshold crossing detected */\n+#define HSADC_INT1_THCMP_UCROSS(ch)  (1 << ((ch * 5) + 3)) /*!< Input channel result upward threshold crossing detected */\n+#define HSADC_INT1_OVERRUN(ch)       (1 << ((ch * 5) + 4)) /*!< New conversion on channel completed and has overwritten the previous contents of register LAST_SAMPLE [0] before it has been read */\n+\n+/**\n+ * @brief  Enable an interrupt for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @param  intMask : Interrupts to enable, use HSADC_INT0_* for group 0\n+ *                    and HSADC_INT1_* values for group 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_EnableInts(LPC_HSADC_T *pHSADC, uint8_t intGrp, uint32_t intMask)\n+{\n+   pHSADC->INTS[intGrp].SET_EN = intMask;\n+}\n+\n+/**\n+ * @brief  Disables an interrupt for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @param  intMask : Interrupts to disable, use HSADC_INT0_* for group 0\n+ *                    and HSADC_INT1_* values for group 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_DisableInts(LPC_HSADC_T *pHSADC, uint8_t intGrp, uint32_t intMask)\n+{\n+   pHSADC->INTS[intGrp].CLR_EN = intMask;\n+}\n+\n+/**\n+ * @brief  Returns enabled interrupt for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @return enabled interrupts for the selected group\n+ * @note   Mask the return value with a HSADC_INT0_* macro for group 0\n+ * or HSADC_INT1_* values for group 1 to determine which interrupts are enabled.\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetEnabledInts(LPC_HSADC_T *pHSADC, uint8_t intGrp)\n+{\n+   return pHSADC->INTS[intGrp].MASK;\n+}\n+\n+/**\n+ * @brief  Returns status for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @return interrupt (pending) status for the selected group\n+ * @note   Mask the return value with a HSADC_INT0_* macro for group 0\n+ * or HSADC_INT1_* values for group 1 to determine which statuses are active.\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetIntStatus(LPC_HSADC_T *pHSADC, uint8_t intGrp)\n+{\n+   return pHSADC->INTS[intGrp].STATUS;\n+}\n+\n+/**\n+ * @brief  Clear a status for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @param  stsMask : Statuses to clear, use HSADC_INT0_* for group 0\n+ *                    and HSADC_INT1_* values for group 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_ClearIntStatus(LPC_HSADC_T *pHSADC, uint8_t intGrp, uint32_t stsMask)\n+{\n+   pHSADC->INTS[intGrp].CLR_STAT = stsMask;\n+}\n+\n+/**\n+ * @brief  Sets a status for HSADC interrupt group 0 or 1\n+ * @param  pHSADC  : The base of ADC peripheral on the chip\n+ * @param  intGrp  : Interrupt group 0 or 1\n+ * @param  stsMask : Statuses to set, use HSADC_INT0_* for group 0\n+ *                    and HSADC_INT1_* values for group 1\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_HSADC_SetIntStatus(LPC_HSADC_T *pHSADC, uint8_t intGrp, uint32_t stsMask)\n+{\n+   pHSADC->INTS[intGrp].SET_STAT = stsMask;\n+}\n+\n+/**\n+ * @brief  Returns the clock rate in Hz for the HSADC\n+ * @param  pHSADC  : The base of HSADC peripheral on the chip\n+ * @return clock rate in Hz for the HSADC\n+ */\n+STATIC INLINE uint32_t Chip_HSADC_GetBaseClockRate(LPC_HSADC_T *pHSADC)\n+{\n+   (void) pHSADC;\n+\n+   /* Return computed sample rate for the high speed ADC peripheral */\n+   return Chip_Clock_GetRate(CLK_ADCHS);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __HSADC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/i2c_18xx_43xx.h ./lpc_chip_43xx/inc/i2c_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/i2c_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/i2c_18xx_43xx.h\t2017-02-27 21:03:17.012043463 -0300\n@@ -0,0 +1,400 @@\n+/*\n+ * @brief LPC18xx/43xx I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2C_18XX_43XX_H_\n+#define __I2C_18XX_43XX_H_\n+#include \"i2c_common_18xx_43xx.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/**\n+ * @ingroup I2C_18XX_43XX\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Return values for SLAVE handler\n+ * @note\n+ * Chip drivers will usally be designed to match their events with this value\n+ */\n+#define RET_SLAVE_TX    6  /**< Return value, when 1 byte TX'd successfully */\n+#define RET_SLAVE_RX    5  /**< Return value, when 1 byte RX'd successfully */\n+#define RET_SLAVE_IDLE  2  /**< Return value, when slave enter idle mode */\n+#define RET_SLAVE_BUSY  0  /**< Return value, when slave is busy */\n+\n+/**\n+ * @brief I2C state handle return values\n+ */\n+#define I2C_STA_STO_RECV            0x20\n+\n+/*\n+ * @brief I2C return status code definitions\n+ */\n+#define I2C_I2STAT_NO_INF                       ((0xF8))/*!< No relevant information */\n+#define I2C_I2STAT_BUS_ERROR                    ((0x00))/*!< Bus Error */\n+\n+/*\n+ * @brief I2C status values\n+ */\n+#define I2C_SETUP_STATUS_ARBF   (1 << 8)   /**< Arbitration false */\n+#define I2C_SETUP_STATUS_NOACKF (1 << 9)   /**< No ACK returned */\n+#define I2C_SETUP_STATUS_DONE   (1 << 10)  /**< Status DONE */\n+\n+/*\n+ * @brief I2C state handle return values\n+ */\n+#define I2C_OK                      0x00\n+#define I2C_BYTE_SENT               0x01\n+#define I2C_BYTE_RECV               0x02\n+#define I2C_LAST_BYTE_RECV          0x04\n+#define I2C_SEND_END                0x08\n+#define I2C_RECV_END                0x10\n+#define I2C_STA_STO_RECV            0x20\n+\n+#define I2C_ERR                     (0x10000000)\n+#define I2C_NAK_RECV                (0x10000000 | 0x01)\n+\n+#define I2C_CheckError(ErrorCode)   (ErrorCode & 0x10000000)\n+\n+/*\n+ * @brief I2C monitor control configuration defines\n+ */\n+#define I2C_MONITOR_CFG_SCL_OUTPUT  I2C_I2MMCTRL_ENA_SCL       /**< SCL output enable */\n+#define I2C_MONITOR_CFG_MATCHALL    I2C_I2MMCTRL_MATCH_ALL     /**< Select interrupt register match */\n+\n+/**\n+ * @brief  I2C Slave Identifiers\n+ */\n+typedef enum {\n+   I2C_SLAVE_GENERAL,  /**< Slave ID for general calls */\n+   I2C_SLAVE_0,        /**< Slave ID fo Slave Address 0 */\n+   I2C_SLAVE_1,        /**< Slave ID fo Slave Address 1 */\n+   I2C_SLAVE_2,        /**< Slave ID fo Slave Address 2 */\n+   I2C_SLAVE_3,        /**< Slave ID fo Slave Address 3 */\n+   I2C_SLAVE_NUM_INTERFACE /**< Number of slave interfaces */\n+} I2C_SLAVE_ID;\n+\n+/**\n+ * @brief  I2C transfer status\n+ */\n+typedef enum {\n+   I2C_STATUS_DONE,    /**< Transfer done successfully */\n+   I2C_STATUS_NAK,     /**< NAK received during transfer */\n+   I2C_STATUS_ARBLOST, /**< Aribitration lost during transfer */\n+   I2C_STATUS_BUSERR,  /**< Bus error in I2C transfer */\n+   I2C_STATUS_BUSY,    /**< I2C is busy doing transfer */\n+   I2C_STATUS_SLAVENAK,/**< NAK received after SLA+W or SLA+R */\n+} I2C_STATUS_T;\n+\n+/**\n+ * @brief Master transfer data structure definitions\n+ */\n+typedef struct {\n+   uint8_t slaveAddr;      /**< 7-bit I2C Slave address */\n+   const uint8_t *txBuff;  /**< Pointer to array of bytes to be transmitted */\n+   int     txSz;           /**< Number of bytes in transmit array,\n+                              if 0 only receive transfer will be carried on */\n+   uint8_t *rxBuff;        /**< Pointer memory where bytes received from I2C be stored */\n+   int     rxSz;           /**< Number of bytes to received,\n+                              if 0 only transmission we be carried on */\n+   I2C_STATUS_T status;    /**< Status of the current I2C transfer */\n+} I2C_XFER_T;\n+\n+/**\n+ * @brief  I2C interface IDs\n+ * @note\n+ * All Chip functions will take this as the first parameter,\n+ * I2C_NUM_INTERFACE must never be used for calling any Chip\n+ * functions, it is only used to find the number of interfaces\n+ * available in the Chip.\n+ */\n+typedef enum I2C_ID {\n+   I2C0,               /**< ID I2C0 */\n+   I2C1,               /**< ID I2C1 */\n+   I2C_NUM_INTERFACE   /**< Number of I2C interfaces in the chip */\n+} I2C_ID_T;\n+\n+/**\n+ * @brief  I2C master events\n+ */\n+typedef enum {\n+   I2C_EVENT_WAIT = 1, /**< I2C Wait event */\n+   I2C_EVENT_DONE,     /**< Done event that wakes up Wait event */\n+   I2C_EVENT_LOCK,     /**< Re-entrency lock event for I2C transfer */\n+   I2C_EVENT_UNLOCK,   /**< Re-entrency unlock event for I2C transfer */\n+   I2C_EVENT_SLAVE_RX, /**< Slave receive event */\n+   I2C_EVENT_SLAVE_TX, /**< Slave transmit event */\n+} I2C_EVENT_T;\n+\n+/**\n+ * @brief  Event handler function type\n+ */\n+typedef void (*I2C_EVENTHANDLER_T)(I2C_ID_T, I2C_EVENT_T);\n+\n+/**\n+ * @brief  Initializes the LPC_I2C peripheral with specified parameter.\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ */\n+void Chip_I2C_Init(I2C_ID_T id);\n+\n+/**\n+ * @brief  De-initializes the I2C peripheral registers to their default reset values\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ */\n+void Chip_I2C_DeInit(I2C_ID_T id);\n+\n+/**\n+ * @brief  Set up clock rate for LPC_I2C peripheral.\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  clockrate   : Target clock rate value to initialized I2C peripheral (Hz)\n+ * @return Nothing\n+ * @note\n+ * Parameter @a clockrate for I2C0 should be from 1000 up to 1000000\n+ * (1 KHz to 1 MHz), as I2C0 support Fast Mode Plus. If the @a clockrate\n+ * is more than 400 KHz (Fast Plus Mode) Board_I2C_EnableFastPlus()\n+ * must be called prior to calling this function.\n+ */\n+void Chip_I2C_SetClockRate(I2C_ID_T id, uint32_t clockrate);\n+\n+/**\n+ * @brief  Get current clock rate for LPC_I2C peripheral.\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return The current I2C peripheral clock rate\n+ */\n+uint32_t Chip_I2C_GetClockRate(I2C_ID_T id);\n+\n+/**\n+ * @brief  Transmit and Receive data in master mode\n+ * @param  id      : I2C peripheral selected (I2C0, I2C1 etc)\n+ * @param  xfer    : Pointer to a I2C_XFER_T structure see notes below\n+ * @return\n+ * Any of #I2C_STATUS_T values, xfer->txSz will have number of bytes\n+ * not sent due to error, xfer->rxSz will have the number of bytes yet\n+ * to be received.\n+ * @note\n+ * The parameter @a xfer should have its member @a slaveAddr initialized\n+ * to the 7-Bit slave address to which the master will do the xfer, Bit0\n+ * to bit6 should have the address and Bit8 is ignored. During the transfer\n+ * no code (like event handler) must change the content of the memory\n+ * pointed to by @a xfer. The member of @a xfer, @a txBuff and @a txSz be\n+ * initialized to the memory from which the I2C must pick the data to be\n+ * transfered to slave and the number of bytes to send respectively, similarly\n+ * @a rxBuff and @a rxSz must have pointer to memroy where data received\n+ * from slave be stored and the number of data to get from slave respectilvely.\n+ */\n+int Chip_I2C_MasterTransfer(I2C_ID_T id, I2C_XFER_T *xfer);\n+\n+/**\n+ * @brief  Transmit data to I2C slave using I2C Master mode\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 .. etc)\n+ * @param  slaveAddr   : Slave address to which the data be written\n+ * @param  buff        : Pointer to buffer having the array of data\n+ * @param  len         : Number of bytes to be transfered from @a buff\n+ * @return Number of bytes successfully transfered\n+ */\n+int Chip_I2C_MasterSend(I2C_ID_T id, uint8_t slaveAddr, const uint8_t *buff, uint8_t len);\n+\n+/**\n+ * @brief  Transfer a command to slave and receive data from slave after a repeated start\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  slaveAddr   : Slave address of the I2C device\n+ * @param  cmd         : Command (Address/Register) to be written\n+ * @param  buff        : Pointer to memory that will hold the data received\n+ * @param  len         : Number of bytes to receive\n+ * @return Number of bytes successfully received\n+ */\n+int Chip_I2C_MasterCmdRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t cmd, uint8_t *buff, int len);\n+\n+/**\n+ * @brief  Get pointer to current function handling the events\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Pointer to function handing events of I2C\n+ */\n+I2C_EVENTHANDLER_T Chip_I2C_GetMasterEventHandler(I2C_ID_T id);\n+\n+/**\n+ * @brief  Set function that must handle I2C events\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  event       : Pointer to function that will handle the event (Should not be NULL)\n+ * @return 1 when successful, 0 when a transfer is on going with its own event handler\n+ */\n+int Chip_I2C_SetMasterEventHandler(I2C_ID_T id, I2C_EVENTHANDLER_T event);\n+\n+/**\n+ * @brief  Set function that must handle I2C events\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  slaveAddr   : Slave address from which data be read\n+ * @param  buff        : Pointer to memory where data read be stored\n+ * @param  len         : Number of bytes to read from slave\n+ * @return Number of bytes read successfully\n+ */\n+int Chip_I2C_MasterRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t *buff, int len);\n+\n+/**\n+ * @brief  Default event handler for polling operation\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  event   : Event ID of the event that called the function\n+ * @return Nothing\n+ */\n+void Chip_I2C_EventHandlerPolling(I2C_ID_T id, I2C_EVENT_T event);\n+\n+/**\n+ * @brief  Default event handler for interrupt base operation\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  event   : Event ID of the event that called the function\n+ * @return Nothing\n+ */\n+void Chip_I2C_EventHandler(I2C_ID_T id, I2C_EVENT_T event);\n+\n+/**\n+ * @brief  I2C Master transfer state change handler\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ * @note   Usually called from the appropriate Interrupt handler\n+ */\n+void Chip_I2C_MasterStateHandler(I2C_ID_T id);\n+\n+/**\n+ * @brief  Disable I2C peripheral's operation\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ */\n+void Chip_I2C_Disable(I2C_ID_T id);\n+\n+/**\n+ * @brief  Checks if master xfer in progress\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return 1 if master xfer in progress 0 otherwise\n+ * @note\n+ * This API is generally used in interrupt handler\n+ * of the application to decide whether to call\n+ * master state handler or to call slave state handler\n+ */\n+int Chip_I2C_IsMasterActive(I2C_ID_T id);\n+\n+/**\n+ * @brief  Setup a slave I2C device\n+ * @param  id          : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @param  sid         : I2C Slave peripheral ID (I2C_SLAVE_0, I2C_SLAVE_1 etc)\n+ * @param  xfer        : Pointer to transfer structure (see note below for more info)\n+ * @param  event       : Event handler for slave transfers\n+ * @param  addrMask    : Address mask to use along with slave address (see notes below for more info)\n+ * @return Nothing\n+ * @note\n+ * Parameter @a xfer should point to a valid I2C_XFER_T structure object\n+ * and must have @a slaveAddr initialized with 7bit Slave address (From Bit1 to Bit7),\n+ * Bit0 when set enables general call handling, @a slaveAddr along with @a addrMask will\n+ * be used to match the slave address. @a rxBuff and @a txBuff must point to valid buffers\n+ * where slave can receive or send the data from, size of which will be provided by\n+ * @a rxSz and @a txSz respectively. Function pointed to by @a event will be called\n+ * for the following events #I2C_EVENT_SLAVE_RX (One byte of data received successfully\n+ * from the master and stored inside memory pointed by xfer->rxBuff, incremented\n+ * the pointer and decremented the @a xfer->rxSz), #I2C_EVENT_SLAVE_TX (One byte of\n+ * data from xfer->txBuff was sent to master successfully, incremented the pointer\n+ * and decremented xfer->txSz), #I2C_EVENT_DONE (Master is done doing its transfers\n+ * with the slave).<br>\n+ * <br>Bit-0 of the parameter @a addrMask is reserved and should always be 0. Any bit (BIT1\n+ * to BIT7) set in @a addrMask will make the corresponding bit in *xfer->slaveAddr* as\n+ * don't care. Thit is, if *xfer->slaveAddr* is (0x10 << 1) and @a addrMask is (0x03 << 1) then\n+ * 0x10, 0x11, 0x12, 0x13 will all be considered as valid slave addresses for the registered\n+ * slave. Upon receving any event *xfer->slaveAddr* (BIT1 to BIT7) will hold the actual\n+ * address which was received from master.<br>\n+ * <br><b>General Call Handling</b><br>\n+ * Slave can receive data from master using general call address (0x00). General call\n+ * handling must be setup as given below\n+ *      - Call Chip_I2C_SlaveSetup() with argument @a sid as I2C_SLAVE_GENERAL\n+ *          - xfer->slaveAddr ignored, argument @a addrMask ignored\n+ *          - function provided by @a event will registered to be called when slave received data using addr 0x00\n+ *          - xfer->rxBuff and xfer->rxSz should be valid in argument @a xfer\n+ *      - To handle General Call only (No other slaves are configured)\n+ *          - Call Chip_I2C_SlaveSetup() with sid as I2C_SLAVE_X (X=0,1,2,3)\n+ *          - setup @a xfer with slaveAddr member set to 0, @a event is ignored hence can be NULL\n+ *          - provide @a addrMask (typically 0, if not you better be knowing what you are doing)\n+ *      - To handler General Call when other slave is active\n+ *          - Call Chip_I2C_SlaveSetup() with sid as I2C_SLAVE_X (X=0,1,2,3)\n+ *          - setup @a xfer with slaveAddr member set to 7-Bit Slave address [from Bit1 to 7]\n+ *          - Set Bit0 of @a xfer->slaveAddr as 1\n+ *          - Provide appropriate @a addrMask\n+ *          - Argument @a event must point to function, that handles events from actual slaveAddress and not the GC\n+ * @warning\n+ * If the slave has only one byte in its txBuff, once that byte is transfered to master the event handler\n+ * will be called for event #I2C_EVENT_DONE. If the master attempts to read more bytes in the same transfer\n+ * then the slave hardware will send 0xFF to master till the end of transfer, event handler will not be\n+ * called to notify this. For more info see section below<br>\n+ * <br><b> Last data handling in slave </b><br>\n+ * If the user wants to implement a slave which will read a byte from a specific location over and over\n+ * again whenever master reads the slave. If the user initializes the xfer->txBuff as the location to read\n+ * the byte from and xfer->txSz as 1, then say, if master reads one byte; slave will send the byte read from\n+ * xfer->txBuff and will call the event handler with #I2C_EVENT_DONE. If the master attempts to read another\n+ * byte instead of sending the byte read from xfer->txBuff the slave hardware will send 0xFF and no event will\n+ * occur. To handle this issue, slave should set xfer->txSz to 2, in which case when master reads the byte\n+ * event handler will be called with #I2C_EVENT_SLAVE_TX, in which the slave implementation can reset the buffer\n+ * and size back to original location (i.e, xfer->txBuff--, xfer->txSz++), if the master reads another byte\n+ * in the same transfer, byte read from xfer->txBuff will be sent and #I2C_EVENT_SLAVE_TX will be called again, and\n+ * the process repeats.\n+ */\n+void Chip_I2C_SlaveSetup(I2C_ID_T id,\n+                        I2C_SLAVE_ID sid,\n+                        I2C_XFER_T *xfer,\n+                        I2C_EVENTHANDLER_T event,\n+                        uint8_t addrMask);\n+\n+/**\n+ * @brief  I2C Slave event handler\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return Nothing\n+ */\n+void Chip_I2C_SlaveStateHandler(I2C_ID_T id);\n+\n+/**\n+ * @brief  I2C peripheral state change checking\n+ * @param  id      : I2C peripheral ID (I2C0, I2C1 ... etc)\n+ * @return 1 if I2C peripheral @a id has changed its state,\n+ *          0 if there is no state change\n+ * @note\n+ * This function must be used by the application when\n+ * the polling has to be done based on state change.\n+ */\n+int Chip_I2C_IsStateChanged(I2C_ID_T id);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2C_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/i2c_common_18xx_43xx.h ./lpc_chip_43xx/inc/i2c_common_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/i2c_common_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/i2c_common_18xx_43xx.h\t2017-02-27 21:03:17.012043463 -0300\n@@ -0,0 +1,200 @@\n+/*\n+ * @brief LPC18xx_43xx I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2C_COMMON_18XX_43XX_H_\n+#define __I2C_COMMON_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2C_18XX_43XX CHIP: LPC18xx_43xx I2C driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief I2C register block structure\n+ */\n+typedef struct {               /* I2C0 Structure         */\n+   __IO uint32_t CONSET;       /*!< I2C Control Set Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is set. Writing a zero has no effect on the corresponding bit in the I2C control register. */\n+   __I  uint32_t STAT;         /*!< I2C Status Register. During I2C operation, this register provides detailed status codes that allow software to determine the next action needed. */\n+   __IO uint32_t DAT;          /*!< I2C Data Register. During master or slave transmit mode, data to be transmitted is written to this register. During master or slave receive mode, data that has been received may be read from this register. */\n+   __IO uint32_t ADR0;         /*!< I2C Slave Address Register 0. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. */\n+   __IO uint32_t SCLH;         /*!< SCH Duty Cycle Register High Half Word. Determines the high time of the I2C clock. */\n+   __IO uint32_t SCLL;         /*!< SCL Duty Cycle Register Low Half Word. Determines the low time of the I2C clock. SCLL and SCLH together determine the clock frequency generated by an I2C master and certain times used in slave mode. */\n+   __O  uint32_t CONCLR;       /*!< I2C Control Clear Register. When a one is written to a bit of this register, the corresponding bit in the I2C control register is cleared. Writing a zero has no effect on the corresponding bit in the I2C control register. */\n+   __IO uint32_t MMCTRL;       /*!< Monitor mode control register. */\n+   __IO uint32_t ADR1;         /*!< I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. */\n+   __IO uint32_t ADR2;         /*!< I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. */\n+   __IO uint32_t ADR3;         /*!< I2C Slave Address Register. Contains the 7-bit slave address for operation of the I2C interface in slave mode, and is not used in master mode. The least significant bit determines whether a slave responds to the General Call address. */\n+   __I  uint32_t DATA_BUFFER;  /*!< Data buffer register. The contents of the 8 MSBs of the DAT shift register will be transferred to the DATA_BUFFER automatically after every nine bits (8 bits of data plus ACK or NACK) has been received on the bus. */\n+   __IO uint32_t MASK[4];      /*!< I2C Slave address mask register */\n+} LPC_I2C_T;\n+\n+/*\n+ * @brief I2C Control Set register description\n+ */\n+#define I2C_I2CONSET_AA             ((0x04))/*!< Assert acknowledge flag */\n+#define I2C_I2CONSET_SI             ((0x08))/*!< I2C interrupt flag */\n+#define I2C_I2CONSET_STO            ((0x10))/*!< STOP flag */\n+#define I2C_I2CONSET_STA            ((0x20))/*!< START flag */\n+#define I2C_I2CONSET_I2EN           ((0x40))/*!< I2C interface enable */\n+\n+/*\n+ * @brief I2C Control Clear register description\n+ */\n+#define I2C_I2CONCLR_AAC            ((1 << 2)) /*!< Assert acknowledge Clear bit */\n+#define I2C_I2CONCLR_SIC            ((1 << 3)) /*!< I2C interrupt Clear bit */\n+#define I2C_I2CONCLR_STOC           ((1 << 4)) /*!< I2C STOP Clear bit */\n+#define I2C_I2CONCLR_STAC           ((1 << 5)) /*!< START flag Clear bit */\n+#define I2C_I2CONCLR_I2ENC          ((1 << 6)) /*!< I2C interface Disable bit */\n+\n+/*\n+ * @brief  I2C Common Control register description\n+ */\n+#define I2C_CON_AA            (1UL << 2)   /*!< Assert acknowledge bit */\n+#define I2C_CON_SI            (1UL << 3)   /*!< I2C interrupt bit */\n+#define I2C_CON_STO           (1UL << 4)   /*!< I2C STOP bit */\n+#define I2C_CON_STA           (1UL << 5)   /*!< START flag bit */\n+#define I2C_CON_I2EN          (1UL << 6)   /*!< I2C interface bit */\n+\n+/*\n+ * @brief I2C Status Code definition (I2C Status register)\n+ */\n+#define I2C_STAT_CODE_BITMASK       ((0xF8))/*!< Return Code mask in I2C status register */\n+#define I2C_STAT_CODE_ERROR         ((0xFF))/*!< Return Code error mask in I2C status register */\n+\n+/*\n+ * @brief I2C Master transmit mode\n+ */\n+#define I2C_I2STAT_M_TX_START                   ((0x08))/*!< A start condition has been transmitted */\n+#define I2C_I2STAT_M_TX_RESTART                 ((0x10))/*!< A repeat start condition has been transmitted */\n+#define I2C_I2STAT_M_TX_SLAW_ACK                ((0x18))/*!< SLA+W has been transmitted, ACK has been received */\n+#define I2C_I2STAT_M_TX_SLAW_NACK               ((0x20))/*!< SLA+W has been transmitted, NACK has been received */\n+#define I2C_I2STAT_M_TX_DAT_ACK                 ((0x28))/*!< Data has been transmitted, ACK has been received */\n+#define I2C_I2STAT_M_TX_DAT_NACK                ((0x30))/*!< Data has been transmitted, NACK has been received */\n+#define I2C_I2STAT_M_TX_ARB_LOST                ((0x38))/*!< Arbitration lost in SLA+R/W or Data bytes */\n+\n+/*\n+ * @brief I2C Master receive mode\n+ */\n+#define I2C_I2STAT_M_RX_START                   ((0x08))/*!< A start condition has been transmitted */\n+#define I2C_I2STAT_M_RX_RESTART                 ((0x10))/*!< A repeat start condition has been transmitted */\n+#define I2C_I2STAT_M_RX_ARB_LOST                ((0x38))/*!< Arbitration lost */\n+#define I2C_I2STAT_M_RX_SLAR_ACK                ((0x40))/*!< SLA+R has been transmitted, ACK has been received */\n+#define I2C_I2STAT_M_RX_SLAR_NACK               ((0x48))/*!< SLA+R has been transmitted, NACK has been received */\n+#define I2C_I2STAT_M_RX_DAT_ACK                 ((0x50))/*!< Data has been received, ACK has been returned */\n+#define I2C_I2STAT_M_RX_DAT_NACK                ((0x58))/*!< Data has been received, NACK has been returned */\n+\n+/*\n+ * @brief I2C Slave receive mode\n+ */\n+#define I2C_I2STAT_S_RX_SLAW_ACK                ((0x60))/*!< Own slave address has been received, ACK has been returned */\n+#define I2C_I2STAT_S_RX_ARB_LOST_M_SLA          ((0x68))/*!< Arbitration lost in SLA+R/W as master */\n+// #define I2C_I2STAT_S_RX_SLAW_ACK                ((0x68)) /*!< Own SLA+W has been received, ACK returned */\n+#define I2C_I2STAT_S_RX_GENCALL_ACK             ((0x70))/*!< General call address has been received, ACK has been returned */\n+#define I2C_I2STAT_S_RX_ARB_LOST_M_GENCALL      ((0x78))/*!< Arbitration lost in SLA+R/W (GENERAL CALL) as master */\n+// #define I2C_I2STAT_S_RX_GENCALL_ACK             ((0x78)) /*!< General call address has been received, ACK has been returned */\n+#define I2C_I2STAT_S_RX_PRE_SLA_DAT_ACK         ((0x80))/*!< Previously addressed with own SLA; Data has been received, ACK has been returned */\n+#define I2C_I2STAT_S_RX_PRE_SLA_DAT_NACK        ((0x88))/*!< Previously addressed with own SLA;Data has been received and NOT ACK has been returned */\n+#define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_ACK     ((0x90))/*!< Previously addressed with General Call; Data has been received and ACK has been returned */\n+#define I2C_I2STAT_S_RX_PRE_GENCALL_DAT_NACK    ((0x98))/*!< Previously addressed with General Call; Data has been received and NOT ACK has been returned */\n+#define I2C_I2STAT_S_RX_STA_STO_SLVREC_SLVTRX   ((0xA0))/*!< A STOP condition or repeated START condition has been received while still addressed as SLV/REC (Slave Receive) or\n+                                                          SLV/TRX (Slave Transmit) */\n+\n+/*\n+ * @brief I2C Slave transmit mode\n+ */\n+#define I2C_I2STAT_S_TX_SLAR_ACK                ((0xA8))/*!< Own SLA+R has been received, ACK has been returned */\n+#define I2C_I2STAT_S_TX_ARB_LOST_M_SLA          ((0xB0))/*!< Arbitration lost in SLA+R/W as master */\n+// #define I2C_I2STAT_S_TX_SLAR_ACK                ((0xB0)) /*!< Own SLA+R has been received, ACK has been returned */\n+#define I2C_I2STAT_S_TX_DAT_ACK                 ((0xB8))/*!< Data has been transmitted, ACK has been received */\n+#define I2C_I2STAT_S_TX_DAT_NACK                ((0xC0))/*!< Data has been transmitted, NACK has been received */\n+#define I2C_I2STAT_S_TX_LAST_DAT_ACK            ((0xC8))/*!< Last data byte in I2DAT has been transmitted (AA = 0); ACK has been received */\n+#define I2C_SLAVE_TIME_OUT                      0x10000000UL/*!< Time out in case of using I2C slave mode */\n+\n+/*\n+ * @brief I2C Data register definition\n+ */\n+#define I2C_I2DAT_BITMASK           ((0xFF))/*!< Mask for I2DAT register */\n+#define I2C_I2DAT_IDLE_CHAR         (0xFF) /*!< Idle data value will be send out in slave mode in case of the actual expecting data requested from the master is greater than\n+                                                its sending data length that can be supported */\n+\n+/*\n+ * @brief I2C Monitor mode control register description\n+ */\n+#define I2C_I2MMCTRL_MM_ENA         ((1 << 0))         /**< Monitor mode enable */\n+#define I2C_I2MMCTRL_ENA_SCL        ((1 << 1))         /**< SCL output enable */\n+#define I2C_I2MMCTRL_MATCH_ALL      ((1 << 2))         /**< Select interrupt register match */\n+#define I2C_I2MMCTRL_BITMASK        ((0x07))       /**< Mask for I2MMCTRL register */\n+\n+/*\n+ * @brief I2C Data buffer register description\n+ */\n+#define I2DATA_BUFFER_BITMASK       ((0xFF))/*!< I2C Data buffer register bit mask */\n+\n+/*\n+ * @brief I2C Slave Address registers definition\n+ */\n+#define I2C_I2ADR_GC                ((1 << 0)) /*!< General Call enable bit */\n+#define I2C_I2ADR_BITMASK           ((0xFF))/*!< I2C Slave Address registers bit mask */\n+\n+/*\n+ * @brief I2C Mask Register definition\n+ */\n+#define I2C_I2MASK_MASK(n)          ((n & 0xFE))/*!< I2C Mask Register mask field */\n+\n+/*\n+ * @brief I2C SCL HIGH duty cycle Register definition\n+ */\n+#define I2C_I2SCLH_BITMASK          ((0xFFFF)) /*!< I2C SCL HIGH duty cycle Register bit mask */\n+\n+/*\n+ * @brief I2C SCL LOW duty cycle Register definition\n+ */\n+#define I2C_I2SCLL_BITMASK          ((0xFFFF)) /*!< I2C SCL LOW duty cycle Register bit mask */\n+\n+/*\n+ * @brief I2C monitor control configuration defines\n+ */\n+#define I2C_MONITOR_CFG_SCL_OUTPUT  I2C_I2MMCTRL_ENA_SCL       /**< SCL output enable */\n+#define I2C_MONITOR_CFG_MATCHALL    I2C_I2MMCTRL_MATCH_ALL     /**< Select interrupt register match */\n+\n+/**\n+ * @}\n+ */\n+\n+ #ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2C_COMMON_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/i2cm_18xx_43xx.h ./lpc_chip_43xx/inc/i2cm_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/i2cm_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/i2cm_18xx_43xx.h\t2017-02-27 21:03:17.012043463 -0300\n@@ -0,0 +1,419 @@\n+/*\n+ * @brief LPC18xx/43xx I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2CM_18XX_43XX_H_\n+#define __I2CM_18XX_43XX_H_\n+\n+#include \"i2c_common_18xx_43xx.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2CM_18XX_43XX CHIP: LPC18xx/43xx I2C master-only driver\n+ * @ingroup I2C_18XX_43XX\n+ * This driver only works in master mode. To describe the I2C transactions\n+ * following symbols are used in driver documentation.\n+ *\n+ * Key to symbols\n+ * ==============\n+ * S     (1 bit) : Start bit\n+ * P     (1 bit) : Stop bit\n+ * Rd/Wr (1 bit) : Read/Write bit. Rd equals 1, Wr equals 0.\n+ * A, NA (1 bit) : Acknowledge and Not-Acknowledge bit.\n+ * Addr  (7 bits): I2C 7 bit address. Note that this can be expanded as usual to\n+ *                 get a 10 bit I2C address.\n+ * Data  (8 bits): A plain data byte. Sometimes, I write DataLow, DataHigh\n+ *                 for 16 bit data.\n+ * [..]: Data sent by I2C device, as opposed to data sent by the host adapter.\n+ * @{\n+ */\n+\n+/** I2CM_18XX_43XX_OPTIONS_TYPES I2C master transfer options\n+ * @{\n+ */\n+\n+/** Ignore NACK during data transfer. By default transfer is aborted. */\n+#define I2CM_XFER_OPTION_IGNORE_NACK     0x01\n+/** ACK last byte received. By default we NACK last byte we receive per I2C spec. */\n+#define I2CM_XFER_OPTION_LAST_RX_ACK     0x02\n+\n+/**\n+ * @}\n+ */\n+\n+/** I2CM_18XX_43XX_STATUS_TYPES I2C master transfer status types\n+ * @{\n+ */\n+\n+#define I2CM_STATUS_OK              0x00       /*!< Requested Request was executed successfully. */\n+#define I2CM_STATUS_ERROR           0x01       /*!< Unknown error condition. */\n+#define I2CM_STATUS_NAK             0x02       /*!< No acknowledgement received from slave. */\n+#define I2CM_STATUS_BUS_ERROR       0x03       /*!< I2C bus error */\n+#define I2CM_STATUS_SLAVE_NAK       0x04       /*!< No device responded for given slave address during SLA+W or SLA+R */\n+#define I2CM_STATUS_ARBLOST         0x05       /*!< Arbitration lost. */\n+#define I2CM_STATUS_BUSY            0xFF       /*!< I2C transmitter is busy. */\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @brief Master transfer data structure definitions\n+ */\n+typedef struct {\n+   uint8_t slaveAddr;      /*!< 7-bit I2C Slave address */\n+   uint8_t options;        /*!< Options for transfer*/\n+   uint16_t status;        /*!< Status of the current I2C transfer */\n+   uint16_t txSz;          /*!< Number of bytes in transmit array,\n+                              if 0 only receive transfer will be carried on */\n+   uint16_t rxSz;          /*!< Number of bytes to received,\n+                              if 0 only transmission we be carried on */\n+   const uint8_t *txBuff;  /*!< Pointer to array of bytes to be transmitted */\n+   uint8_t *rxBuff;        /*!< Pointer memory where bytes received from I2C be stored */\n+} I2CM_XFER_T;\n+\n+/**\n+ * @brief  Initialize I2C Interface\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function enables the I2C clock.\n+ */\n+void Chip_I2CM_Init(LPC_I2C_T *pI2C);\n+\n+/**\n+ * @brief  Shutdown I2C Interface\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function disables the I2C clock.\n+ */\n+void Chip_I2CM_DeInit(LPC_I2C_T *pI2C);\n+\n+/**\n+ * @brief  Sets HIGH and LOW duty cycle registers\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  sclH    : Number of I2C_PCLK cycles for the SCL HIGH time.\n+ * @param  sclL    : Number of I2C_PCLK cycles for the SCL LOW time.\n+ * @return Nothing\n+ * @note   The frequency is determined by the following formula (I2C_PCLK\n+ *          is the frequency of the peripheral I2C clock): <br>\n+ *              I2C_bitFrequency = (I2C_PCLK)/(sclH + sclL);\n+ */\n+static INLINE void Chip_I2CM_SetDutyCycle(LPC_I2C_T *pI2C, uint16_t sclH, uint16_t sclL)\n+{\n+   pI2C->SCLH = (uint32_t) sclH;\n+   pI2C->SCLL = (uint32_t) sclL;\n+}\n+\n+/**\n+ * @brief  Set up bus speed for LPC_I2C controller\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  busSpeed    : I2C bus clock rate\n+ * @return Nothing\n+ * @note   Per I2C specification the busSpeed should be\n+ *          @li 100000 for Standard mode\n+ *          @li 400000 for Fast mode\n+ *          @li 1000000 for Fast mode plus\n+ *          IOCON registers corresponding to I2C pads should be updated\n+ *          according to the bus mode.\n+ */\n+void Chip_I2CM_SetBusSpeed(LPC_I2C_T *pI2C, uint32_t busSpeed);\n+\n+/**\n+ * @brief  Transmit START or Repeat-START signal on I2C bus\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function sets the controller to transmit START condition when\n+ *          the bus becomes free.\n+ */\n+static INLINE void Chip_I2CM_SendStart(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONSET = I2C_CON_I2EN | I2C_CON_STA;\n+}\n+\n+/**\n+ * @brief  Reset I2C controller state\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function clears all control/status flags.\n+ */\n+static INLINE void Chip_I2CM_ResetControl(LPC_I2C_T *pI2C)\n+{\n+   /* Reset STA, AA and SI. Stop flag should not be cleared as it is a reserved bit */\n+   pI2C->CONCLR = I2C_CON_SI | I2C_CON_STA | I2C_CON_AA;\n+\n+}\n+\n+/**\n+ * @brief  Transmit a single data byte through the I2C peripheral\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  data    : Byte to transmit\n+ * @return Nothing\n+ * @note   This function attempts to place a byte into the UART transmit\n+ *         FIFO or transmit hold register regard regardless of UART state\n+ *\n+ */\n+static INLINE void Chip_I2CM_WriteByte(LPC_I2C_T *pI2C, uint8_t data)\n+{\n+   pI2C->DAT = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief  Read a single byte data from the I2C peripheral\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return A single byte of data read\n+ * @note   This function reads a byte from the I2C receive hold register\n+ *         regardless of I2C state. The I2C status should be read first prior\n+ *         to using this function.\n+ */\n+static INLINE uint8_t Chip_I2CM_ReadByte(LPC_I2C_T *pI2C)\n+{\n+   return (uint8_t) (pI2C->DAT & I2C_I2DAT_BITMASK);\n+}\n+\n+/**\n+ * @brief  Generate NACK after receiving next byte\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function sets the controller to NACK after receiving next\n+ *          byte from slave transmitter. Used before receiving last byte.\n+ */\n+static INLINE void Chip_I2CM_NackNextByte(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONCLR = I2C_CON_AA;\n+}\n+\n+/**\n+ * @brief  Transmit STOP signal on I2C bus\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function sets the controller to transmit STOP condition.\n+ */\n+static INLINE void Chip_I2CM_SendStop(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONSET = I2C_CON_STO;\n+}\n+\n+/**\n+ * @brief  Force start I2C transmit\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function forces I2C state machine to start transmitting.\n+ *         If an uncontrolled source generates a superfluous START or masks\n+ *          a STOP condition, then the I2C-bus stays busy indefinitely. If\n+ *          the STA flag is set and bus access is not obtained within a\n+ *          reasonable amount of time, then a forced access to the I2C-bus is\n+ *          possible. This is achieved by setting the STO flag while the STA\n+ *          flag is still set. No STOP condition is transmitted.\n+ */\n+static INLINE void Chip_I2CM_ForceStart(LPC_I2C_T *pI2C)\n+{\n+   /* check if we are pending on start */\n+   if (pI2C->CONSET & I2C_CON_STA) {\n+       pI2C->CONSET = I2C_CON_STO;\n+   }\n+   else {\n+       Chip_I2CM_SendStart(pI2C);\n+   }\n+}\n+\n+/**\n+ * @brief  Transmit STOP+START signal on I2C bus\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note   This function sets the controller to transmit STOP condition\n+ *          followed by a START condition.\n+ */\n+static INLINE void Chip_I2CM_SendStartAfterStop(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONSET = I2C_CON_STO | I2C_CON_STA;\n+}\n+\n+/**\n+ * @brief  Check if I2C controller state changed\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Returns 0 if state didn't change\n+ * @note\n+ */\n+static INLINE uint32_t Chip_I2CM_StateChanged(LPC_I2C_T *pI2C)\n+{\n+   return pI2C->CONSET & I2C_CON_SI;\n+}\n+\n+/**\n+ * @brief  Clear state change interrupt flag\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note\n+ */\n+static INLINE void Chip_I2CM_ClearSI(LPC_I2C_T *pI2C)\n+{\n+   /* Stop flag should not be cleared as it is a reserved bit */\n+   pI2C->CONCLR = I2C_CON_SI | I2C_CON_STA;\n+}\n+\n+/**\n+ * @brief  Check if I2C bus is free per our controller\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Returns 0 if busy else a non-zero value.\n+ * @note   I2C controller clears STO bit when it sees STOP\n+ *          condition after a START condition on the bus.\n+ */\n+static INLINE uint32_t Chip_I2CM_BusFree(LPC_I2C_T *pI2C)\n+{\n+   return !(pI2C->CONSET & I2C_CON_STO);\n+}\n+\n+/**\n+ * @brief  Get current state of the I2C controller\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Returns 0 if busy else a non-zero value.\n+ * @note   I2C controller clears STO bit when it sees STOP\n+ *          condition after a START condition on the bus.\n+ */\n+static INLINE uint32_t Chip_I2CM_GetCurState(LPC_I2C_T *pI2C)\n+{\n+   return pI2C->STAT & I2C_STAT_CODE_BITMASK;\n+}\n+\n+/**\n+ * @brief  Disable I2C interface\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @return Nothing\n+ * @note\n+ */\n+static INLINE void Chip_I2CM_Disable(LPC_I2C_T *pI2C)\n+{\n+   pI2C->CONCLR = I2C_CON_I2EN;\n+}\n+\n+/**\n+ * @brief  Transfer state change handler handler\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  xfer    : Pointer to a I2CM_XFER_T structure see notes below\n+ * @return Returns non-zero value on completion of transfer. The @a status\n+ *         member of @a xfer structure contains the current status of the\n+ *         transfer at the end of the call.\n+ * @note\n+ * The parameter @a xfer should be same as the one passed to Chip_I2CM_Xfer()\n+ * routine.\n+ */\n+uint32_t Chip_I2CM_XferHandler(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @brief  Transmit and Receive data in master mode\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  xfer    : Pointer to a I2CM_XFER_T structure see notes below\n+ * @return Nothing.\n+ * @note\n+ * The parameter @a xfer should have its member @a slaveAddr initialized\n+ * to the 7-Bit slave address to which the master will do the xfer, Bit0\n+ * to bit6 should have the address and Bit8 is ignored. During the transfer\n+ * no code (like event handler) must change the content of the memory\n+ * pointed to by @a xfer. The member of @a xfer, @a txBuff and @a txSz be\n+ * initialized to the memory from which the I2C must pick the data to be\n+ * transferred to slave and the number of bytes to send respectively, similarly\n+ * @a rxBuff and @a rxSz must have pointer to memory where data received\n+ * from slave be stored and the number of data to get from slave respectively.\n+ * Following types of transfers are possible:\n+ * - Write-only transfer: When @a rxSz member of @a xfer is set to 0.\n+ *\n+ *          S Addr Wr [A] txBuff0 [A] txBuff1 [A] ... txBuffN [A] P\n+ *\n+ *      - If I2CM_XFER_OPTION_IGNORE_NACK is set in @a options member\n+ *\n+ *          S Addr Wr [A] txBuff0 [A or NA] ... txBuffN [A or NA] P\n+ *\n+ * - Read-only transfer: When @a txSz member of @a xfer is set to 0.\n+ *\n+ *          S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] NA P\n+ *\n+ *      - If I2CM_XFER_OPTION_LAST_RX_ACK is set in @a options member\n+ *\n+ *          S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] A P\n+ *\n+ * - Read-Write transfer: When @a rxSz and @ txSz members of @a xfer are non-zero.\n+ *\n+ *          S Addr Wr [A] txBuff0 [A] txBuff1 [A] ... txBuffN [A]\n+ *              S Addr Rd [A] [rxBuff0] A [rxBuff1] A ... [rxBuffN] NA P\n+ *\n+ */\n+void Chip_I2CM_Xfer(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @brief  Transmit and Receive data in master mode\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  xfer    : Pointer to a I2CM_XFER_T structure see notes below\n+ * @return Returns non-zero value on successful completion of transfer.\n+ * @note\n+ * This function operates same as Chip_I2CM_Xfer(), but is a blocking call.\n+ */\n+uint32_t Chip_I2CM_XferBlocking(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer);\n+\n+/**\n+ * @brief  Write given buffer of data to I2C interface\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  buff    : Pointer to buffer to be transmitted\n+ * @param  len     : Length of the buffer\n+ * @return Returns number of bytes written.\n+ * @note   This function is a blocking call. The function generates\n+ *          START/repeat-START condition on bus and starts transmitting\n+ *          data until transfer finishes or a NACK is received. No\n+ *          STOP condition is transmitted on the bus.\n+ *\n+ *          S Data0 [A] Data1 [A] ... DataN [A]\n+ */\n+uint32_t Chip_I2CM_Write(LPC_I2C_T *pI2C, const uint8_t *buff, uint32_t len);\n+\n+/**\n+ * @brief  Read data from I2C slave to given buffer\n+ * @param  pI2C    : Pointer to selected I2C peripheral\n+ * @param  buff    :   Pointer to buffer for data received from I2C slave\n+ * @param  len     : Length of the buffer\n+ * @return Returns number of bytes read.\n+ * @note   This function is a blocking call. The function generates\n+ *          START/repeat-START condition on bus and starts reading\n+ *          data until requested number of bytes are read. No\n+ *          STOP condition is transmitted on the bus.\n+ *\n+ *          S [Data0] A [Data1] A ... [DataN] A\n+ */\n+uint32_t Chip_I2CM_Read(LPC_I2C_T *pI2C, uint8_t *buff, uint32_t len);\n+\n+/**\n+ * @}\n+ */\n+\n+ #ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2C_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/i2s_18xx_43xx.h ./lpc_chip_43xx/inc/i2s_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/i2s_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/i2s_18xx_43xx.h\t2017-02-27 21:03:17.012043463 -0300\n@@ -0,0 +1,560 @@\n+/*\n+ * @brief LPC18xx/43xx I2S driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __I2S_18XX_43XX_H_\n+#define __I2S_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup I2S_18XX_43XX CHIP: LPC18xx/43xx I2S driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief I2S DMA request channel define\n+ */\n+typedef enum {\n+   I2S_DMA_REQUEST_CHANNEL_1,  /*!< DMA request channel 1 */\n+   I2S_DMA_REQUEST_CHANNEL_2,  /*!< DMA request channel 2 */\n+   I2S_DMA_REQUEST_CHANNEL_NUM,/*!< The number of DMA request channels */\n+} I2S_DMA_CHANNEL_T;\n+\n+/**\n+ * @brief I2S register block structure\n+ */\n+typedef struct {               /*!< I2S Structure */\n+   __IO uint32_t DAO;          /*!< I2S Digital Audio Output Register. Contains control bits for the I2S transmit channel */\n+   __IO uint32_t DAI;          /*!< I2S Digital Audio Input Register. Contains control bits for the I2S receive channel */\n+   __O uint32_t TXFIFO;        /*!< I2S Transmit FIFO. Access register for the 8 x 32-bit transmitter FIFO */\n+   __I uint32_t RXFIFO;        /*!< I2S Receive FIFO. Access register for the 8 x 32-bit receiver FIFO */\n+   __I uint32_t STATE;         /*!< I2S Status Feedback Register. Contains status information about the I2S interface */\n+   __IO uint32_t DMA[I2S_DMA_REQUEST_CHANNEL_NUM]; /*!< I2S DMA Configuration Registers. Contains control information for DMA request channels */\n+   __IO uint32_t IRQ;          /*!< I2S Interrupt Request Control Register. Contains bits that control how the I2S interrupt request is generated */\n+   __IO uint32_t TXRATE;       /*!< I2S Transmit MCLK divider. This register determines the I2S TX MCLK rate by specifying the value to divide PCLK by in order to produce MCLK */\n+   __IO uint32_t RXRATE;       /*!< I2S Receive MCLK divider. This register determines the I2S RX MCLK rate by specifying the value to divide PCLK by in order to produce MCLK */\n+   __IO uint32_t TXBITRATE;    /*!< I2S Transmit bit rate divider. This register determines the I2S transmit bit rate by specifying the value to divide TX_MCLK by in order to produce the transmit bit clock */\n+   __IO uint32_t RXBITRATE;    /*!< I2S Receive bit rate divider. This register determines the I2S receive bit rate by specifying the value to divide RX_MCLK by in order to produce the receive bit clock */\n+   __IO uint32_t TXMODE;       /*!< I2S Transmit mode control */\n+   __IO uint32_t RXMODE;       /*!< I2S Receive mode control */\n+} LPC_I2S_T;\n+\n+/*\n+ * @brief I2S configuration parameter defines\n+ */\n+/* I2S Wordwidth bit */\n+#define I2S_WORDWIDTH_8     (0UL << 0) /*!< 8 bit Word */\n+#define I2S_WORDWIDTH_16    (1UL << 0) /*!< 16 bit word */\n+#define I2S_WORDWIDTH_32    (3UL << 0) /*!< 32 bit word */\n+\n+/* I2S Channel bit */\n+#define I2S_STEREO          (0UL << 2) /*!< Stereo audio */\n+#define I2S_MONO            (1UL << 2) /*!< Mono audio */\n+\n+/* I2S Master/Slave mode bit */\n+#define I2S_MASTER_MODE     (0UL << 5) /*!< I2S in master mode */\n+#define I2S_SLAVE_MODE      (1UL << 5) /*!< I2S in slave mode */\n+\n+/* I2S Stop bit */\n+#define I2S_STOP_ENABLE     (0UL << 3) /*!< I2S stop enable mask */\n+#define I2S_STOP_DISABLE    (1UL << 3) /*!< I2S stop disable mask */\n+\n+/* I2S Reset bit */\n+#define I2S_RESET_ENABLE    (1UL << 4) /*!< I2S reset enable mask */\n+#define I2S_RESET_DISABLE   (0UL << 4) /*!< I2S reset disable mask */\n+\n+/* I2S Mute bit */\n+#define I2S_MUTE_ENABLE     (1UL << 15)    /*!< I2S mute enable mask */\n+#define I2S_MUTE_DISABLE    (0UL << 15)    /*!< I2S mute disbale mask */\n+\n+/*\n+ * @brief Macro defines for DAO-Digital Audio Output register\n+ */\n+/* I2S wordwide - the number of bytes in data*/\n+#define I2S_DAO_WORDWIDTH_8     ((uint32_t) (0))   /*!< DAO 8 bit  */\n+#define I2S_DAO_WORDWIDTH_16    ((uint32_t) (1))   /*!< DAO 16 bit */\n+#define I2S_DAO_WORDWIDTH_32    ((uint32_t) (3))   /*!< DAO 32 bit */\n+#define I2S_DAO_WORDWIDTH_MASK  ((uint32_t) (3))\n+\n+/* I2S control mono or stereo format */\n+#define I2S_DAO_MONO            ((uint32_t) (1 << 2))  /*!< DAO mono audio mask */\n+\n+/* I2S control stop mode */\n+#define I2S_DAO_STOP            ((uint32_t) (1 << 3))  /*!< DAO stop mask */\n+\n+/* I2S control reset mode */\n+#define I2S_DAO_RESET           ((uint32_t) (1 << 4))  /*!< DAO reset mask */\n+\n+/* I2S control master/slave mode */\n+#define I2S_DAO_SLAVE           ((uint32_t) (1 << 5))  /*!< DAO slave mode mask */\n+\n+/* I2S word select half period minus one */\n+#define I2S_DAO_WS_HALFPERIOD(n)    ((uint32_t) (((n) & 0x1FF) << 6))  /*!< DAO Word select set macro */\n+#define I2S_DAO_WS_HALFPERIOD_MASK  ((uint32_t) ((0x1FF) << 6))        /*!< DAO Word select mask */\n+\n+/* I2S control mute mode */\n+#define I2S_DAO_MUTE            ((uint32_t) (1 << 15)) /*!< DAO mute mask */\n+\n+/*\n+ * @brief Macro defines for DAI-Digital Audio Input register\n+ */\n+/* I2S wordwide - the number of bytes in data*/\n+#define I2S_DAI_WORDWIDTH_8     ((uint32_t) (0))   /*!< DAI 8 bit  */\n+#define I2S_DAI_WORDWIDTH_16    ((uint32_t) (1))   /*!< DAI 16 bit */\n+#define I2S_DAI_WORDWIDTH_32    ((uint32_t) (3))   /*!< DAI 32 bit */\n+#define I2S_DAI_WORDWIDTH_MASK  ((uint32_t) (3))   /*!< DAI word wide mask */\n+\n+/* I2S control mono or stereo format */\n+#define I2S_DAI_MONO            ((uint32_t) (1 << 2))  /*!< DAI mono mode mask */\n+\n+/* I2S control stop mode */\n+#define I2S_DAI_STOP            ((uint32_t) (1 << 3))  /*!< DAI stop bit mask */\n+\n+/* I2S control reset mode */\n+#define I2S_DAI_RESET           ((uint32_t) (1 << 4))  /*!< DAI reset bit mask */\n+\n+/* I2S control master/slave mode */\n+#define I2S_DAI_SLAVE           ((uint32_t) (1 << 5))  /*!< DAI slave mode mask */\n+\n+/* I2S word select half period minus one (9 bits)*/\n+#define I2S_DAI_WS_HALFPERIOD(n)    ((uint32_t) (((n) & 0x1FF) << 6))  /*!< DAI Word select set macro */\n+#define I2S_DAI_WS_HALFPERIOD_MASK  ((uint32_t) ((0x1FF) << 6))        /*!< DAI Word select mask */\n+\n+/*\n+ * @brief Macro defines for STAT register (Status Feedback register)\n+ */\n+#define I2S_STATE_IRQ       ((uint32_t) (1))/*!< I2S Status Receive or Transmit Interrupt */\n+#define I2S_STATE_DMA1      ((uint32_t) (1 << 1))  /*!< I2S Status Receive or Transmit DMA1 */\n+#define I2S_STATE_DMA2      ((uint32_t) (1 << 2))  /*!< I2S Status Receive or Transmit DMA2 */\n+#define I2S_STATE_RX_LEVEL(n)   ((uint32_t) ((n & 1F) << 8))/*!< I2S Status Current level of the Receive FIFO (5 bits)*/\n+#define I2S_STATE_TX_LEVEL(n)   ((uint32_t) ((n & 1F) << 16))  /*!< I2S Status Current level of the Transmit FIFO (5 bits)*/\n+\n+/*\n+ * @brief Macro defines for DMA1 register (DMA1 Configuration register)\n+ */\n+#define I2S_DMA1_RX_ENABLE      ((uint32_t) (1))/*!< I2S control DMA1 for I2S receive */\n+#define I2S_DMA1_TX_ENABLE      ((uint32_t) (1 << 1))  /*!< I2S control DMA1 for I2S transmit */\n+#define I2S_DMA1_RX_DEPTH(n)    ((uint32_t) ((n & 0x1F) << 8)) /*!< I2S set FIFO level that trigger a receive DMA request on DMA1 */\n+#define I2S_DMA1_TX_DEPTH(n)    ((uint32_t) ((n & 0x1F) << 16))    /*!< I2S set FIFO level that trigger a transmit DMA request on DMA1 */\n+\n+/*\n+ * @brief Macro defines for DMA2 register (DMA2 Configuration register)\n+ */\n+#define I2S_DMA2_RX_ENABLE      ((uint32_t) (1))/*!< I2S control DMA2 for I2S receive */\n+#define I2S_DMA2_TX_ENABLE      ((uint32_t) (1 << 1))  /*!< I2S control DMA1 for I2S transmit */\n+#define I2S_DMA2_RX_DEPTH(n)    ((uint32_t) ((n & 0x1F) << 8)) /*!< I2S set FIFO level that trigger a receive DMA request on DMA1 */\n+#define I2S_DMA2_TX_DEPTH(n)    ((uint32_t) ((n & 0x1F) << 16))    /*!< I2S set FIFO level that trigger a transmit DMA request on DMA1 */\n+\n+/*\n+ * @brief Macro defines for IRQ register (Interrupt Request Control register)\n+ */\n+\n+#define I2S_IRQ_RX_ENABLE       ((uint32_t) (1))/*!< I2S control I2S receive interrupt */\n+#define I2S_IRQ_TX_ENABLE       ((uint32_t) (1 << 1))  /*!< I2S control I2S transmit interrupt */\n+#define I2S_IRQ_RX_DEPTH(n)     ((uint32_t) ((n & 0x0F) << 8)) /*!< I2S set the FIFO level on which to create an irq request */\n+#define I2S_IRQ_RX_DEPTH_MASK   ((uint32_t) ((0x0F) << 8))\n+#define I2S_IRQ_TX_DEPTH(n)     ((uint32_t) ((n & 0x0F) << 16))    /*!< I2S set the FIFO level on which to create an irq request */\n+#define I2S_IRQ_TX_DEPTH_MASK   ((uint32_t) ((0x0F) << 16))\n+\n+/*\n+ * @brief Macro defines for TXRATE/RXRATE register (Transmit/Receive Clock Rate register)\n+ */\n+#define I2S_TXRATE_Y_DIVIDER(n) ((uint32_t) (n & 0xFF))    /*!< I2S Transmit MCLK rate denominator */\n+#define I2S_TXRATE_X_DIVIDER(n) ((uint32_t) ((n & 0xFF) << 8)) /*!< I2S Transmit MCLK rate denominator */\n+#define I2S_RXRATE_Y_DIVIDER(n) ((uint32_t) (n & 0xFF))    /*!< I2S Receive MCLK rate denominator */\n+#define I2S_RXRATE_X_DIVIDER(n) ((uint32_t) ((n & 0xFF) << 8)) /*!< I2S Receive MCLK rate denominator */\n+\n+/*\n+ * @brief Macro defines for TXBITRATE & RXBITRATE register (Transmit/Receive Bit Rate register)\n+ */\n+#define I2S_TXBITRATE(n)    ((uint32_t) (n & 0x3F))\n+#define I2S_RXBITRATE(n)    ((uint32_t) (n & 0x3F))\n+\n+/*\n+ * @brief Macro defines for TXMODE/RXMODE register (Transmit/Receive Mode Control register)\n+ */\n+#define I2S_TXMODE_CLKSEL(n)    ((uint32_t) (n & 0x03))    /*!< I2S Transmit select clock source (2 bits)*/\n+#define I2S_TXMODE_4PIN_ENABLE  ((uint32_t) (1 << 2))  /*!< I2S Transmit control 4-pin mode */\n+#define I2S_TXMODE_MCENA        ((uint32_t) (1 << 3))  /*!< I2S Transmit control the TX_MCLK output */\n+#define I2S_RXMODE_CLKSEL(n)    ((uint32_t) (n & 0x03))    /*!< I2S Receive select clock source */\n+#define I2S_RXMODE_4PIN_ENABLE  ((uint32_t) (1 << 2))  /*!< I2S Receive control 4-pin mode */\n+#define I2S_RXMODE_MCENA        ((uint32_t) (1 << 3))  /*!< I2S Receive control the TX_MCLK output */\n+\n+/**\n+ * @brief I2S Audio Format Structure\n+ */\n+typedef struct {\n+   uint32_t SampleRate;    /*!< Sample Rate */\n+   uint8_t ChannelNumber;  /*!< Channel Number - 1 is mono, 2 is stereo */\n+   uint8_t WordWidth;      /*!< Word Width - 8, 16 or 32 bits */\n+} I2S_AUDIO_FORMAT_T;\n+\n+/**\n+ * @brief  Initialize for I2S\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_I2S_Init(LPC_I2S_T *pI2S);\n+\n+/**\n+ * @brief  Shutdown I2S\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   Reset all relative registers (DMA, transmit/receive control, interrupt) to default value\n+ */\n+void Chip_I2S_DeInit(LPC_I2S_T *pI2S);\n+\n+/**\n+ * @brief  Send a 32-bit data to TXFIFO for transmition\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @param  data    : Data to be transmited\n+ * @return Nothing\n+ * @note   The function writes to TXFIFO without checking any condition.\n+ */\n+STATIC INLINE void Chip_I2S_Send(LPC_I2S_T *pI2S, uint32_t data)\n+{\n+   pI2S->TXFIFO = data;\n+}\n+\n+/**\n+ * @brief  Get received data from RXFIFO\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Data received in RXFIFO\n+ * @note   The function reads from RXFIFO without checking any condition.\n+ */\n+STATIC INLINE uint32_t Chip_I2S_Receive(LPC_I2S_T *pI2S)\n+{\n+   return pI2S->RXFIFO;\n+}\n+\n+/**\n+ * @brief  Start transmit data\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_TxStart(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO &= ~(I2S_DAO_RESET | I2S_DAO_STOP | I2S_DAO_MUTE);\n+}\n+\n+/**\n+ * @brief  Start receive data\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_RxStart(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI &= ~(I2S_DAI_RESET | I2S_DAI_STOP);\n+}\n+\n+/**\n+ * @brief  Disables accesses on FIFOs, places the transmit channel in mute mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_TxPause(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO |= I2S_DAO_STOP;\n+}\n+\n+/**\n+ * @brief  Disables accesses on FIFOs, places the transmit channel in mute mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_RxPause(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI |= I2S_DAI_STOP;\n+}\n+\n+/**\n+ * @brief  Mute the Transmit channel\n+ * @param  pI2S        : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   The data output from I2S transmit channel is always zeroes\n+ */\n+STATIC INLINE void Chip_I2S_EnableMute(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO |= I2S_DAO_MUTE;\n+}\n+\n+/**\n+ * @brief  Un-Mute the I2S channel\n+ * @param  pI2S        : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_I2S_DisableMute(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO &= ~I2S_DAO_MUTE;\n+}\n+\n+/**\n+ * @brief  Stop I2S asynchronously\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   Pause, resets the transmit channel and FIFO asynchronously\n+ */\n+STATIC INLINE void Chip_I2S_TxStop(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO &= ~I2S_DAO_MUTE;\n+   pI2S->DAO |= I2S_DAO_STOP | I2S_DAO_RESET;\n+}\n+\n+/**\n+ * @brief  Stop I2S asynchronously\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   Pause, resets the transmit channel and FIFO asynchronously\n+ */\n+STATIC INLINE void Chip_I2S_RxStop(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI |= I2S_DAI_STOP | I2S_DAI_RESET;\n+}\n+\n+/**\n+ * @brief  Sets the I2S receive channel in slave mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   4 pin mode must be enabled on appropriate channel.\n+ * Must be called after each Chip_I2S_TxModeConfig call if\n+ * slave mode is needed.\n+ */\n+STATIC INLINE void Chip_I2S_RxSlave(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI |= I2S_SLAVE_MODE;\n+}\n+\n+/**\n+ * @brief  Sets the I2S transmit channel in slave mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Nothing\n+ * @note   4 pin mode must be enabled on appropriate channel.\n+ * Must be called after each Chip_I2S_TxModeConfig call if\n+ * slave mode is needed.\n+ */\n+STATIC INLINE void Chip_I2S_TxSlave(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAO |= I2S_SLAVE_MODE;\n+}\n+\n+/**\n+ * @brief  Set the I2S transmit mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @param  clksel  : Clock source selection for the receive bit clock divider\n+ * @param  fpin    : Receive 4-pin mode selection\n+ * @param  mcena   : Enable for the RX_MCLK output\n+ * @return Nothing\n+ * @note   In addition to master and slave modes, which are independently configurable for\n+ * the transmitter and the receiver, several different clock sources are possible,\n+ * including variations that share the clock and/or WS between the transmitter and\n+ * receiver. It also allows using I2S with fewer pins, typically four.\n+ */\n+STATIC INLINE void Chip_I2S_TxModeConfig(LPC_I2S_T *pI2S,\n+                                        uint32_t clksel,\n+                                        uint32_t fpin,\n+                                        uint32_t mcena)\n+{\n+   pI2S->TXMODE = clksel | fpin | mcena;\n+}\n+\n+/**\n+ * @brief  Set the I2S receive mode\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @param  clksel  : Clock source selection for the receive bit clock divider\n+ * @param  fpin    : Receive 4-pin mode selection\n+ * @param  mcena   : Enable for the RX_MCLK output\n+ * @return Nothing\n+ * @note   In addition to master and slave modes, which are independently configurable for\n+ * the transmitter and the receiver, several different clock sources are possible,\n+ * including variations that share the clock and/or WS between the transmitter and\n+ * receiver. It also allows using I2S with fewer pins, typically four.\n+ */\n+STATIC INLINE void Chip_I2S_RxModeConfig(LPC_I2S_T *pI2S,\n+                                        uint32_t clksel,\n+                                        uint32_t fpin,\n+                                        uint32_t mcena)\n+{\n+   pI2S->RXMODE = clksel | fpin | mcena;\n+}\n+\n+/**\n+ * @brief  Get the current level of the Transmit FIFO\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Current level of the Transmit FIFO\n+ */\n+STATIC INLINE uint8_t Chip_I2S_GetTxLevel(LPC_I2S_T *pI2S)\n+{\n+   return (pI2S->STATE >> 16) & 0xF;\n+}\n+\n+/**\n+ * @brief  Get the current level of the Receive FIFO\n+ * @param  pI2S    : The base of I2S peripheral on the chip\n+ * @return Current level of the Receive FIFO\n+ */\n+STATIC INLINE uint8_t Chip_I2S_GetRxLevel(LPC_I2S_T *pI2S)\n+{\n+   return (pI2S->STATE >> 8) & 0xF;\n+}\n+\n+/**\n+ * @brief  Set the clock frequency for I2S interface\n+ * @param  pI2S            : The base of I2S peripheral on the chip\n+ * @param  div : Clock divider. This value plus one is used to divide MCLK to produce the clock frequency for I2S interface\n+ * @return Nothing\n+ * @note   The value depends on the audio sample rate desired and the data size and format(stereo/mono) used.\n+ * For example, a 48 kHz sample rate for 16-bit stereo data requires a bit rate of 48 000 x 16 x 2 = 1.536 MHz. So the mclk_divider should be MCLK/1.536 MHz\n+ */\n+STATIC INLINE void Chip_I2S_SetTxBitRate(LPC_I2S_T *pI2S, uint32_t div)\n+{\n+   pI2S->TXBITRATE = div;\n+}\n+\n+/**\n+ * @brief  Set the clock frequency for I2S interface\n+ * @param  pI2S            : The base of I2S peripheral on the chip\n+ * @param  div : Clock divider. This value plus one is used to divide MCLK to produce the clock frequency for I2S interface\n+ * @return Nothing\n+ * @note   The value depends on the audio sample rate desired and the data size and format(stereo/mono) used.\n+ * For example, a 48 kHz sample rate for 16-bit stereo data requires a bit rate of 48 000 x 16 x 2 = 1.536 MHz. So the mclk_divider should be MCLK/1.536 MHz\n+ */\n+STATIC INLINE void Chip_I2S_SetRxBitRate(LPC_I2S_T *pI2S, uint32_t div)\n+{\n+   pI2S->RXBITRATE = div;\n+}\n+\n+/**\n+ * @brief  Set the MCLK rate by using a fractional rate generator, dividing down the frequency of PCLK\n+ * @param  pI2S        : The base of I2S peripheral on the chip\n+ * @param  xDiv    : I2S transmit MCLK rate numerator\n+ * @param  yDiv    : I2S transmit MCLK rate denominator\n+ * @return Nothing\n+ * @note   Values of the numerator (X) and the denominator (Y) must be chosen to\n+ * produce a frequency twice that desired for the transmitter MCLK, which\n+ * must be an integer multiple of the transmitter bit clock rate.\n+ * The equation for the fractional rate generator is:\n+ * MCLK = PCLK * (X/Y) /2\n+ * Note: If the value of X or Y is 0, then no clock is generated. Also, the value of Y must be\n+ * greater than or equal to X.\n+ */\n+STATIC INLINE void Chip_I2S_SetTxXYDivider(LPC_I2S_T *pI2S, uint8_t xDiv, uint8_t yDiv)\n+{\n+   pI2S->TXRATE = yDiv | (xDiv << 8);\n+}\n+\n+/**\n+ * @brief  Set the MCLK rate by using a fractional rate generator, dividing down the frequency of PCLK\n+ * @param  pI2S        : The base of I2S peripheral on the chip\n+ * @param  xDiv    : I2S transmit MCLK rate numerator\n+ * @param  yDiv    : I2S transmit MCLK rate denominator\n+ * @return Nothing\n+ * @note   Values of the numerator (X) and the denominator (Y) must be chosen to\n+ * produce a frequency twice that desired for the transmitter MCLK, which\n+ * must be an integer multiple of the transmitter bit clock rate.\n+ * The equation for the fractional rate generator is:\n+ * MCLK = PCLK * (X/Y) /2\n+ * Note: If the value of X or Y is 0, then no clock is generated. Also, the value of Y must be\n+ * greater than or equal to X.\n+ */\n+STATIC INLINE void Chip_I2S_SetRxXYDivider(LPC_I2S_T *pI2S, uint8_t xDiv, uint8_t yDiv)\n+{\n+   pI2S->RXRATE = yDiv | (xDiv << 8);\n+}\n+\n+/**\n+ * @brief   Configure I2S for Audio Format input\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  format  : Audio Format\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_I2S_TxConfig(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format);\n+\n+/**\n+ * @brief   Configure I2S for Audio Format input\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  format  : Audio Format\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_I2S_RxConfig(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format);\n+\n+/**\n+ * @brief   Enable/Disable Interrupt with a specific FIFO depth\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  newState        : ENABLE or DISABLE interrupt\n+ * @param  depth       : FIFO level creating an irq request\n+ * @return Nothing\n+ */\n+void Chip_I2S_Int_TxCmd(LPC_I2S_T *pI2S, FunctionalState newState, uint8_t depth);\n+\n+/**\n+ * @brief   Enable/Disable Interrupt with a specific FIFO depth\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  newState        : ENABLE or DISABLE interrupt\n+ * @param  depth       : FIFO level creating an irq request\n+ * @return Nothing\n+ */\n+void Chip_I2S_Int_RxCmd(LPC_I2S_T *pI2S, FunctionalState newState, uint8_t depth);\n+\n+/**\n+ * @brief   Enable/Disable DMA with a specific FIFO depth\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  dmaNum          : Should be\n+ *                             - I2S_DMA_REQUEST_CHANNEL_1 : Using DMA1\n+ *                             - I2S_DMA_REQUEST_CHANNEL_2 : Using DMA2\n+ * @param  newState        : ENABLE or DISABLE interrupt\n+ * @param  depth       : FIFO level creating an irq request\n+ * @return Nothing\n+ */\n+void Chip_I2S_DMA_TxCmd(LPC_I2S_T *pI2S, I2S_DMA_CHANNEL_T dmaNum, FunctionalState newState, uint8_t depth);\n+\n+/**\n+ * @brief   Enable/Disable DMA with a specific FIFO depth\n+ * @param  pI2S            : The base I2S peripheral on the chip\n+ * @param  dmaNum          : Should be\n+ *                             - I2S_DMA_REQUEST_CHANNEL_1 : Using DMA1\n+ *                             - I2S_DMA_REQUEST_CHANNEL_2 : Using DMA2\n+ * @param  newState        : ENABLE or DISABLE interrupt\n+ * @param  depth       : FIFO level creating an irq request\n+ * @return Nothing\n+ */\n+void Chip_I2S_DMA_RxCmd(LPC_I2S_T *pI2S, I2S_DMA_CHANNEL_T dmaNum, FunctionalState newState, uint8_t depth);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __I2S_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/iap_18xx_43xx.h ./lpc_chip_43xx/inc/iap_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/iap_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/iap_18xx_43xx.h\t2017-02-27 21:03:17.012043463 -0300\n@@ -0,0 +1,197 @@\n+/*\n+ * @brief Common IAP support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __IAP_H_\n+#define __IAP_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup IAP_18XX_43XX CHIP: LPC18xx/43xx Flash IAP driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/* IAP command definitions */\n+#define IAP_PREWRRITE_CMD           50 /*!< Prepare sector for write operation command */\n+#define IAP_WRISECTOR_CMD           51 /*!< Write Sector command */\n+#define IAP_ERSSECTOR_CMD           52 /*!< Erase Sector command */\n+#define IAP_BLANK_CHECK_SECTOR_CMD  53 /*!< Blank check sector */\n+#define IAP_REPID_CMD               54 /*!< Read PartID command */\n+#define IAP_READ_BOOT_CODE_CMD      55 /*!< Read Boot code version */\n+#define IAP_COMPARE_CMD             56 /*!< Compare two RAM address locations */\n+#define IAP_REINVOKE_ISP_CMD        57 /*!< Reinvoke ISP */\n+#define IAP_READ_UID_CMD            58 /*!< Read UID */\n+#define IAP_ERASE_PAGE_CMD          59 /*!< Erase page */\n+#define IAP_SET_BOOT_FLASH          60 /*!< Set active boot flash bank */\n+#define IAP_EEPROM_WRITE            61 /*!< EEPROM Write command */\n+#define IAP_EEPROM_READ             62 /*!< EEPROM READ command */\n+\n+/* IAP response definitions */\n+#define IAP_CMD_SUCCESS             0  /*!< Command is executed successfully */\n+#define IAP_INVALID_COMMAND         1  /*!< Invalid command */\n+#define IAP_SRC_ADDR_ERROR          2  /*!< Source address is not on word boundary */\n+#define IAP_DST_ADDR_ERROR          3  /*!< Destination address is not on a correct boundary */\n+#define IAP_SRC_ADDR_NOT_MAPPED     4  /*!< Source address is not mapped in the memory map */\n+#define IAP_DST_ADDR_NOT_MAPPED     5  /*!< Destination address is not mapped in the memory map */\n+#define IAP_COUNT_ERROR             6  /*!< Byte count is not multiple of 4 or is not a permitted value */\n+#define IAP_INVALID_SECTOR          7  /*!< Sector number is invalid or end sector number is greater than start sector number */\n+#define IAP_SECTOR_NOT_BLANK        8  /*!< Sector is not blank */\n+#define IAP_SECTOR_NOT_PREPARED     9  /*!< Command to prepare sector for write operation was not executed */\n+#define IAP_COMPARE_ERROR           10 /*!< Source and destination data not equal */\n+#define IAP_BUSY                    11 /*!< Flash programming hardware interface is busy */\n+#define IAP_PARAM_ERROR             12 /*!< nsufficient number of parameters or invalid parameter */\n+#define IAP_ADDR_ERROR              13 /*!< Address is not on word boundary */\n+#define IAP_ADDR_NOT_MAPPED         14 /*!< Address is not mapped in the memory map */\n+#define IAP_CMD_LOCKED              15 /*!< Command is locked */\n+#define IAP_INVALID_CODE            16 /*!< Unlock code is invalid */\n+#define IAP_INVALID_BAUD_RATE       17 /*!< Invalid baud rate setting */\n+#define IAP_INVALID_STOP_BIT        18 /*!< Invalid stop bit setting */\n+#define IAP_CRP_ENABLED             19 /*!< Code read protection enabled */\n+\n+/* IAP_ENTRY API function type */\n+typedef void (*IAP_ENTRY_T)(unsigned int[5], unsigned int[4]);\n+\n+/**\n+ * @brief  Prepare sector for write operation\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @param  bankNum     : Flash Bank number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   This command must be executed before executing \"Copy RAM to flash\"\n+ *         or \"Erase Sector\" command.\n+ *         The end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_PreSectorForReadWrite(uint32_t strSector, uint32_t endSector, uint8_t bankNum);\n+\n+/**\n+ * @brief  Copy RAM to flash\n+ * @param  dstAdd      : Destination flash address where data bytes are to be written\n+ * @param  srcAdd      : Source flash address where data bytes are to be read\n+ * @param  byteswrt    : Number of bytes to be written\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The addresses should be a 256 byte boundary and the number of bytes\n+ *         should be 256 | 512 | 1024 | 4096\n+ */\n+uint8_t Chip_IAP_CopyRamToFlash(uint32_t dstAdd, uint32_t *srcAdd, uint32_t byteswrt);\n+\n+/**\n+ * @brief  Erase sector\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @param  bankNum     : Flash Bank number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_EraseSector(uint32_t strSector, uint32_t endSector, uint8_t bankNum);\n+\n+/**\n+ * @brief Blank check a sector or multiples sector of on-chip flash memory\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @param  bankNum     : Flash Bank number\n+ * @return Offset of the first non blank word location if the status code is SECTOR_NOT_BLANK\n+ * @note   The end sector must be greater than or equal to start sector number\n+ */\n+// FIXME - There are two return value (result[0] & result[1]\n+// Result0:Offset of the first non blank word location if the Status Code is\n+// SECTOR_NOT_BLANK.\n+// Result1:Contents of non blank word location.\n+uint8_t Chip_IAP_BlankCheckSector(uint32_t strSector, uint32_t endSector, uint8_t bankNum);\n+\n+/**\n+ * @brief  Read part identification number\n+ * @return Part identification number\n+ */\n+uint32_t Chip_IAP_ReadPID(void);\n+\n+/**\n+ * @brief  Read boot code version number\n+ * @return Boot code version number\n+ */\n+uint8_t Chip_IAP_ReadBootCode(void);\n+\n+/**\n+ * @brief  Compare the memory contents at two locations\n+ * @param  dstAdd      : Destination of the RAM address of data bytes to be compared\n+ * @param  srcAdd      : Source of the RAM address of data bytes to be compared\n+ * @param  bytescmp    : Number of bytes to be compared\n+ * @return Offset of the first mismatch of the status code is COMPARE_ERROR\n+ * @note   The addresses should be a word boundary and number of bytes should be\n+ *         a multiply of 4\n+ */\n+uint8_t Chip_IAP_Compare(uint32_t dstAdd, uint32_t srcAdd, uint32_t bytescmp);\n+\n+/**\n+ * @brief  IAP reinvoke ISP to invoke the bootloader in ISP mode\n+ * @return none\n+ */\n+uint8_t Chip_IAP_ReinvokeISP(void);\n+\n+/**\n+ * @brief  Read the unique ID\n+ * @return Status code to indicate the command is executed successfully or not\n+ */\n+uint32_t Chip_IAP_ReadUID(void);\n+\n+/**\n+ * @brief  Erase a page or multiple papers of on-chip flash memory\n+ * @param  strPage : Start page number\n+ * @param  endPage : End page number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The page number must be greater than or equal to start page number\n+ */\n+// FIXME - There are four return value\n+// Result0:The first 32-bit word (at the lowest address)\n+// Result1:The second 32-bit word.\n+// Result2:The third 32-bit word.\n+// Result3:The fourth 32-bit word.\n+uint8_t Chip_IAP_ErasePage(uint32_t strPage, uint32_t endPage);\n+\n+/**\n+ * @brief  Set active boot flash bank\n+ * @param  bankNum : Flash bank number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   Enable booting from the indicated flash unit by inserting a valid\n+ *                 signature and invalidating the other flash unit\n+ */\n+uint8_t Chip_IAP_SetBootFlashBank(uint8_t bankNum);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __IAP_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/iap.h ./lpc_chip_43xx/inc/iap.h\n--- a_OkB2vL/lpc_chip_43xx/inc/iap.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/iap.h\t2017-02-27 21:03:17.012043463 -0300\n@@ -0,0 +1,184 @@\n+/*\n+ * @brief Common IAP support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __IAP_H_\n+#define __IAP_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup COMMON_IAP CHIP: Common Chip ISP/IAP commands and return codes\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/* IAP command definitions */\n+#define IAP_PREWRRITE_CMD           50 /*!< Prepare sector for write operation command */\n+#define IAP_WRISECTOR_CMD           51 /*!< Write Sector command */\n+#define IAP_ERSSECTOR_CMD           52 /*!< Erase Sector command */\n+#define IAP_BLANK_CHECK_SECTOR_CMD  53 /*!< Blank check sector */\n+#define IAP_REPID_CMD               54 /*!< Read PartID command */\n+#define IAP_READ_BOOT_CODE_CMD      55 /*!< Read Boot code version */\n+#define IAP_COMPARE_CMD             56 /*!< Compare two RAM address locations */\n+#define IAP_REINVOKE_ISP_CMD        57 /*!< Reinvoke ISP */\n+#define IAP_READ_UID_CMD            58 /*!< Read UID */\n+#define IAP_ERASE_PAGE_CMD          59 /*!< Erase page */\n+#define IAP_EEPROM_WRITE            61 /*!< EEPROM Write command */\n+#define IAP_EEPROM_READ             62 /*!< EEPROM READ command */\n+\n+/* IAP response definitions */\n+#define IAP_CMD_SUCCESS             0  /*!< Command is executed successfully */\n+#define IAP_INVALID_COMMAND         1  /*!< Invalid command */\n+#define IAP_SRC_ADDR_ERROR          2  /*!< Source address is not on word boundary */\n+#define IAP_DST_ADDR_ERROR          3  /*!< Destination address is not on a correct boundary */\n+#define IAP_SRC_ADDR_NOT_MAPPED     4  /*!< Source address is not mapped in the memory map */\n+#define IAP_DST_ADDR_NOT_MAPPED     5  /*!< Destination address is not mapped in the memory map */\n+#define IAP_COUNT_ERROR             6  /*!< Byte count is not multiple of 4 or is not a permitted value */\n+#define IAP_INVALID_SECTOR          7  /*!< Sector number is invalid or end sector number is greater than start sector number */\n+#define IAP_SECTOR_NOT_BLANK        8  /*!< Sector is not blank */\n+#define IAP_SECTOR_NOT_PREPARED     9  /*!< Command to prepare sector for write operation was not executed */\n+#define IAP_COMPARE_ERROR           10 /*!< Source and destination data not equal */\n+#define IAP_BUSY                    11 /*!< Flash programming hardware interface is busy */\n+#define IAP_PARAM_ERROR             12 /*!< nsufficient number of parameters or invalid parameter */\n+#define IAP_ADDR_ERROR              13 /*!< Address is not on word boundary */\n+#define IAP_ADDR_NOT_MAPPED         14 /*!< Address is not mapped in the memory map */\n+#define IAP_CMD_LOCKED              15 /*!< Command is locked */\n+#define IAP_INVALID_CODE            16 /*!< Unlock code is invalid */\n+#define IAP_INVALID_BAUD_RATE       17 /*!< Invalid baud rate setting */\n+#define IAP_INVALID_STOP_BIT        18 /*!< Invalid stop bit setting */\n+#define IAP_CRP_ENABLED             19 /*!< Code read protection enabled */\n+\n+/* IAP_ENTRY API function type */\n+typedef void (*IAP_ENTRY_T)(unsigned int[], unsigned int[]);\n+\n+/**\n+ * @brief  Prepare sector for write operation\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   This command must be executed before executing \"Copy RAM to flash\"\n+ *         or \"Erase Sector\" command.\n+ *         The end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_PreSectorForReadWrite(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief  Copy RAM to flash\n+ * @param  dstAdd      : Destination FLASH address where data bytes are to be written\n+ * @param  srcAdd      : Source RAM address where data bytes are to be read\n+ * @param  byteswrt    : Number of bytes to be written\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The addresses should be a 256 byte boundary and the number of bytes\n+ *         should be 256 | 512 | 1024 | 4096\n+ */\n+uint8_t Chip_IAP_CopyRamToFlash(uint32_t dstAdd, uint32_t *srcAdd, uint32_t byteswrt);\n+\n+/**\n+ * @brief  Erase sector\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The end sector must be greater than or equal to start sector number\n+ */\n+uint8_t Chip_IAP_EraseSector(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief Blank check a sector or multiples sector of on-chip flash memory\n+ * @param  strSector   : Start sector number\n+ * @param  endSector   : End sector number\n+ * @return Offset of the first non blank word location if the status code is SECTOR_NOT_BLANK\n+ * @note   The end sector must be greater than or equal to start sector number\n+ */\n+// FIXME - There are two return value (result[0] & result[1]\n+// Result0:Offset of the first non blank word location if the Status Code is\n+// SECTOR_NOT_BLANK.\n+// Result1:Contents of non blank word location.\n+uint8_t Chip_IAP_BlankCheckSector(uint32_t strSector, uint32_t endSector);\n+\n+/**\n+ * @brief  Read part identification number\n+ * @return Part identification number\n+ */\n+uint32_t Chip_IAP_ReadPID(void);\n+\n+/**\n+ * @brief  Read boot code version number\n+ * @return Boot code version number\n+ */\n+uint32_t Chip_IAP_ReadBootCode(void);\n+\n+/**\n+ * @brief  Compare the memory contents at two locations\n+ * @param  dstAdd      : Destination of the RAM address of data bytes to be compared\n+ * @param  srcAdd      : Source of the RAM address of data bytes to be compared\n+ * @param  bytescmp    : Number of bytes to be compared\n+ * @return Offset of the first mismatch of the status code is COMPARE_ERROR\n+ * @note   The addresses should be a word boundary and number of bytes should be\n+ *         a multiply of 4\n+ */\n+uint8_t Chip_IAP_Compare(uint32_t dstAdd, uint32_t srcAdd, uint32_t bytescmp);\n+\n+/**\n+ * @brief  IAP reinvoke ISP to invoke the bootloader in ISP mode\n+ * @return none\n+ */\n+uint8_t Chip_IAP_ReinvokeISP(void);\n+\n+/**\n+ * @brief  Read the unique ID\n+ * @return Status code to indicate the command is executed successfully or not\n+ */\n+uint32_t Chip_IAP_ReadUID(uint32_t* uid);\n+\n+/**\n+ * @brief  Erase a page or multiple papers of on-chip flash memory\n+ * @param  strPage : Start page number\n+ * @param  endPage : End page number\n+ * @return Status code to indicate the command is executed successfully or not\n+ * @note   The page number must be greater than or equal to start page number\n+ */\n+// FIXME - There are four return value\n+// Result0:The first 32-bit word (at the lowest address)\n+// Result1:The second 32-bit word.\n+// Result2:The third 32-bit word.\n+// Result3:The fourth 32-bit word.\n+uint8_t Chip_IAP_ErasePage(uint32_t strPage, uint32_t endPage);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __IAP_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/lcd_18xx_43xx.h ./lpc_chip_43xx/inc/lcd_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/lcd_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/lcd_18xx_43xx.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,383 @@\n+/*\n+ * @brief LPC18xx/43xx LCD chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __LCD_18XX_43XX_H_\n+#define __LCD_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup LCD_18XX_43XX CHIP: LPC18xx/43xx LCD driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief LCD Controller register block structure\n+ */\n+typedef struct {               /*!< LCD Structure          */\n+   __IO uint32_t  TIMH;        /*!< Horizontal Timing Control register */\n+   __IO uint32_t  TIMV;        /*!< Vertical Timing Control register */\n+   __IO uint32_t  POL;         /*!< Clock and Signal Polarity Control register */\n+   __IO uint32_t  LE;          /*!< Line End Control register */\n+   __IO uint32_t  UPBASE;      /*!< Upper Panel Frame Base Address register */\n+   __IO uint32_t  LPBASE;      /*!< Lower Panel Frame Base Address register */\n+   __IO uint32_t  CTRL;        /*!< LCD Control register   */\n+   __IO uint32_t  INTMSK;      /*!< Interrupt Mask register */\n+   __I  uint32_t  INTRAW;      /*!< Raw Interrupt Status register */\n+   __I  uint32_t  INTSTAT;     /*!< Masked Interrupt Status register */\n+   __O  uint32_t  INTCLR;      /*!< Interrupt Clear register */\n+   __I  uint32_t  UPCURR;      /*!< Upper Panel Current Address Value register */\n+   __I  uint32_t  LPCURR;      /*!< Lower Panel Current Address Value register */\n+   __I  uint32_t  RESERVED0[115];\n+   __IO uint16_t PAL[256];     /*!< 256x16-bit Color Palette registers */\n+   __I  uint32_t  RESERVED1[256];\n+   __IO uint32_t CRSR_IMG[256];/*!< Cursor Image registers */\n+   __IO uint32_t  CRSR_CTRL;   /*!< Cursor Control register */\n+   __IO uint32_t  CRSR_CFG;    /*!< Cursor Configuration register */\n+   __IO uint32_t  CRSR_PAL0;   /*!< Cursor Palette register 0 */\n+   __IO uint32_t  CRSR_PAL1;   /*!< Cursor Palette register 1 */\n+   __IO uint32_t  CRSR_XY;     /*!< Cursor XY Position register */\n+   __IO uint32_t  CRSR_CLIP;   /*!< Cursor Clip Position register */\n+   __I  uint32_t  RESERVED2[2];\n+   __IO uint32_t  CRSR_INTMSK; /*!< Cursor Interrupt Mask register */\n+   __O  uint32_t  CRSR_INTCLR; /*!< Cursor Interrupt Clear register */\n+   __I  uint32_t  CRSR_INTRAW; /*!< Cursor Raw Interrupt Status register */\n+   __I  uint32_t  CRSR_INTSTAT;/*!< Cursor Masked Interrupt Status register */\n+} LPC_LCD_T;\n+\n+/**\n+ * @brief LCD Palette entry format\n+ */\n+typedef struct {\n+   uint32_t Rl : 5;\n+   uint32_t Gl : 5;\n+   uint32_t Bl : 5;\n+   uint32_t Il : 1;\n+   uint32_t Ru : 5;\n+   uint32_t Gu : 5;\n+   uint32_t Bu : 5;\n+   uint32_t Iu : 1;\n+} LCD_PALETTE_ENTRY_T;\n+\n+/**\n+ * @brief LCD Panel type\n+ */\n+typedef enum {\n+   LCD_TFT = 0x02,     /*!< standard TFT */\n+   LCD_MONO_4 = 0x01,  /*!< 4-bit STN mono */\n+   LCD_MONO_8 = 0x05,  /*!< 8-bit STN mono */\n+   LCD_CSTN = 0x00     /*!< color STN */\n+} LCD_PANEL_OPT_T;\n+\n+/**\n+ * @brief LCD Color Format\n+ */\n+typedef enum {\n+   LCD_COLOR_FORMAT_RGB = 0,\n+   LCD_COLOR_FORMAT_BGR\n+} LCD_COLOR_FORMAT_OPT_T;\n+\n+/** LCD Interrupt control mask register bits */\n+#define LCD_INTMSK_FUFIM   0x2 /*!< FIFO underflow interrupt enable */\n+#define LCD_INTMSK_LNBUIM  0x4 /*!< LCD next base address update interrupt enable */\n+#define LCD_INTMSK_VCOMPIM 0x8 /*!< Vertical compare interrupt enable */\n+#define LCD_INTMSK_BERIM   0x10    /*!< AHB master error interrupt enable */\n+\n+#define CLCDC_LCDCTRL_ENABLE    _BIT(0)        /*!< LCD control enable bit */\n+#define CLCDC_LCDCTRL_PWR       _BIT(11)   /*!< LCD control power enable bit */\n+\n+/**\n+ * @brief A structure for LCD Configuration\n+ */\n+typedef struct {\n+   uint8_t  HBP;   /*!< Horizontal back porch in clocks */\n+   uint8_t  HFP;   /*!< Horizontal front porch in clocks */\n+   uint8_t  HSW;   /*!< HSYNC pulse width in clocks */\n+   uint16_t PPL;   /*!< Pixels per line */\n+   uint8_t  VBP;   /*!< Vertical back porch in clocks */\n+   uint8_t  VFP;   /*!< Vertical front porch in clocks */\n+   uint8_t  VSW;   /*!< VSYNC pulse width in clocks */\n+   uint16_t LPP;   /*!< Lines per panel */\n+   uint8_t  IOE;   /*!< Invert output enable, 1 = invert */\n+   uint8_t  IPC;   /*!< Invert panel clock, 1 = invert */\n+   uint8_t  IHS;   /*!< Invert HSYNC, 1 = invert */\n+   uint8_t  IVS;   /*!< Invert VSYNC, 1 = invert */\n+   uint8_t  ACB;   /*!< AC bias frequency in clocks (not used) */\n+   uint8_t  BPP;   /*!< Maximum bits per pixel the display supports */\n+   LCD_PANEL_OPT_T  LCD;   /*!< LCD panel type */\n+   LCD_COLOR_FORMAT_OPT_T  color_format;   /*!<BGR or RGB */\n+   uint8_t  Dual;  /*!< Dual panel, 1 = dual panel display */\n+} LCD_CONFIG_T;\n+\n+/**\n+ * @brief LCD Cursor Size\n+ */\n+typedef enum {\n+   LCD_CURSOR_32x32 = 0,\n+   LCD_CURSOR_64x64\n+} LCD_CURSOR_SIZE_OPT_T;\n+\n+/**\n+ * @brief  Initialize the LCD controller\n+ * @param  pLCD                : The base of LCD peripheral on the chip\n+ * @param  LCD_ConfigStruct    : Pointer to LCD configuration\n+ * @return  LCD_FUNC_OK is executed successfully or LCD_FUNC_ERR on error\n+ */\n+void Chip_LCD_Init(LPC_LCD_T *pLCD, LCD_CONFIG_T *LCD_ConfigStruct);\n+\n+/**\n+ * @brief  Shutdown the LCD controller\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return  Nothing\n+ */\n+void Chip_LCD_DeInit(LPC_LCD_T *pLCD);\n+\n+/**\n+ * @brief  Power-on the LCD Panel (power pin)\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_PowerOn(LPC_LCD_T *pLCD)\n+{\n+   volatile int i;\n+   pLCD->CTRL |= CLCDC_LCDCTRL_PWR;\n+   for (i = 0; i < 1000000; i++) {}\n+   pLCD->CTRL |= CLCDC_LCDCTRL_ENABLE;\n+}\n+\n+/**\n+ * @brief  Power-off the LCD Panel (power pin)\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_PowerOff(LPC_LCD_T *pLCD)\n+{\n+   volatile int i;\n+   pLCD->CTRL &= ~CLCDC_LCDCTRL_PWR;\n+   for (i = 0; i < 1000000; i++) {}\n+   pLCD->CTRL &= ~CLCDC_LCDCTRL_ENABLE;\n+}\n+\n+/**\n+ * @brief  Enable/Disable the LCD Controller\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Enable(LPC_LCD_T *pLCD)\n+{\n+   pLCD->CTRL |= CLCDC_LCDCTRL_ENABLE;\n+}\n+\n+/**\n+ * @brief  Enable/Disable the LCD Controller\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Disable(LPC_LCD_T *pLCD)\n+{\n+   pLCD->CTRL &= ~CLCDC_LCDCTRL_ENABLE;\n+}\n+\n+/**\n+ * @brief  Set LCD Upper Panel Frame Buffer for Single Panel or Upper Panel Frame\n+ *         Buffer for Dual Panel\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  buffer  : address of buffer\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_SetUPFrameBuffer(LPC_LCD_T *pLCD, void *buffer)\n+{\n+   pLCD->UPBASE = (uint32_t) buffer;\n+}\n+\n+/**\n+ * @brief  Set LCD Lower Panel Frame Buffer for Dual Panel\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  buffer  : address of buffer\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_SetLPFrameBuffer(LPC_LCD_T *pLCD, void *buffer)\n+{\n+   pLCD->LPBASE = (uint32_t) buffer;\n+}\n+\n+/**\n+ * @brief  Configure Cursor\n+ * @param  pLCD        : The base of LCD peripheral on the chip\n+ * @param  cursor_size : specify size of cursor\n+ *                  - LCD_CURSOR_32x32 :cursor size is 32x32 pixels\n+ *                  - LCD_CURSOR_64x64 :cursor size is 64x64 pixels\n+ * @param  sync        : cursor sync mode\n+ *                  - TRUE :cursor sync to the frame sync pulse\n+ *                  - FALSE    :cursor async mode\n+ * @return None\n+ */\n+void Chip_LCD_Cursor_Config(LPC_LCD_T *pLCD, LCD_CURSOR_SIZE_OPT_T cursor_size, bool sync);\n+\n+/**\n+ * @brief  Enable Cursor\n+ * @param  pLCD        : The base of LCD peripheral on the chip\n+ * @param  cursor_num  : specify number of cursor is going to be written\n+ *                         this param must < 4\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_Enable(LPC_LCD_T *pLCD, uint8_t cursor_num)\n+{\n+   pLCD->CRSR_CTRL = (cursor_num << 4) | 1;\n+}\n+\n+/**\n+ * @brief  Disable Cursor\n+ * @param  pLCD        : The base of LCD peripheral on the chip\n+ * @param  cursor_num  : specify number of cursor is going to be written\n+ *                         this param must < 4\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_Disable(LPC_LCD_T *pLCD, uint8_t cursor_num)\n+{\n+   pLCD->CRSR_CTRL = (cursor_num << 4);\n+}\n+\n+/**\n+ * @brief  Load Cursor Palette\n+ * @param  pLCD            : The base of LCD peripheral on the chip\n+ * @param  palette_color   : cursor palette 0 value\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_LoadPalette0(LPC_LCD_T *pLCD, uint32_t palette_color)\n+{\n+   /* 7:0 - Red\n+      15:8 - Green\n+      23:16 - Blue\n+      31:24 - Not used*/\n+   pLCD->CRSR_PAL0 = (uint32_t) palette_color;\n+}\n+\n+/**\n+ * @brief  Load Cursor Palette\n+ * @param  pLCD            : The base of LCD peripheral on the chip\n+ * @param  palette_color   : cursor palette 1 value\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_LoadPalette1(LPC_LCD_T *pLCD, uint32_t palette_color)\n+{\n+   /* 7:0 - Red\n+          15:8 - Green\n+          23:16 - Blue\n+          31:24 - Not used*/\n+   pLCD->CRSR_PAL1 = (uint32_t) palette_color;\n+}\n+\n+/**\n+ * @brief  Set Cursor Position\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  x       : horizontal position\n+ * @param  y       : vertical position\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_SetPos(LPC_LCD_T *pLCD, uint16_t x, uint16_t y)\n+{\n+   pLCD->CRSR_XY = (x & 0x3FF) | ((y & 0x3FF) << 16);\n+}\n+\n+/**\n+ * @brief  Set Cursor Clipping Position\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  x       : horizontal position, should be in range: 0..63\n+ * @param  y       : vertical position, should be in range: 0..63\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_Cursor_SetClip(LPC_LCD_T *pLCD, uint16_t x, uint16_t y)\n+{\n+   pLCD->CRSR_CLIP = (x & 0x3F) | ((y & 0x3F) << 8);\n+}\n+\n+/**\n+ * @brief  Enable Controller Interrupt\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  ints    : OR'ed interrupt bits to enable\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_EnableInts(LPC_LCD_T *pLCD, uint32_t ints)\n+{\n+   pLCD->INTMSK = ints;\n+}\n+\n+/**\n+ * @brief  Disable Controller Interrupt\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  ints    : OR'ed interrupt bits to disable\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_DisableInts(LPC_LCD_T *pLCD, uint32_t ints)\n+{\n+   pLCD->INTMSK = pLCD->INTMSK & ~(ints);\n+}\n+\n+/**\n+ * @brief  Clear Controller Interrupt\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  ints    : OR'ed interrupt bits to clear\n+ * @return None\n+ */\n+STATIC INLINE void Chip_LCD_ClearInts(LPC_LCD_T *pLCD, uint32_t ints)\n+{\n+   pLCD->INTCLR = pLCD->INTMSK & (ints);\n+}\n+\n+/**\n+ * @brief  Write Cursor Image into Internal Cursor Image Buffer\n+ * @param  pLCD        : The base of LCD peripheral on the chip\n+ * @param  cursor_num  : Cursor index\n+ * @param  Image       : Pointer to image data\n+ * @return None\n+ */\n+void Chip_LCD_Cursor_WriteImage(LPC_LCD_T *pLCD, uint8_t cursor_num, void *Image);\n+\n+/**\n+ * @brief  Load LCD Palette\n+ * @param  pLCD    : The base of LCD peripheral on the chip\n+ * @param  palette : Address of palette table to load\n+ * @return None\n+ */\n+void Chip_LCD_LoadPalette(LPC_LCD_T *pLCD, void *palette);\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __LCD_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/lpc_types.h ./lpc_chip_43xx/inc/lpc_types.h\n--- a_OkB2vL/lpc_chip_43xx/inc/lpc_types.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/lpc_types.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,216 @@\n+/*\n+ * @brief Common types used in LPC functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __LPC_TYPES_H_\n+#define __LPC_TYPES_H_\n+\n+#include <stdint.h>\n+#include <stdbool.h>\n+\n+/** @defgroup LPC_Types CHIP: LPC Common Types\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/** @defgroup LPC_Types_Public_Types LPC Public Types\n+ * @{\n+ */\n+\n+/**\n+ * @brief Boolean Type definition\n+ */\n+typedef enum {FALSE = 0, TRUE = !FALSE} Bool;\n+\n+/**\n+ * @brief Boolean Type definition\n+ */\n+#if !defined(__cplusplus)\n+// typedef enum {false = 0, true = !false} bool;\n+#endif\n+\n+/**\n+ * @brief Flag Status and Interrupt Flag Status type definition\n+ */\n+typedef enum {RESET = 0, SET = !RESET} FlagStatus, IntStatus, SetState;\n+#define PARAM_SETSTATE(State) ((State == RESET) || (State == SET))\n+\n+/**\n+ * @brief Functional State Definition\n+ */\n+typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;\n+#define PARAM_FUNCTIONALSTATE(State) ((State == DISABLE) || (State == ENABLE))\n+\n+/**\n+ * @ Status type definition\n+ */\n+typedef enum {ERROR = 0, SUCCESS = !ERROR} Status;\n+\n+/**\n+ * Read/Write transfer type mode (Block or non-block)\n+ */\n+typedef enum {\n+   NONE_BLOCKING = 0,      /**< None Blocking type */\n+   BLOCKING,               /**< Blocking type */\n+} TRANSFER_BLOCK_T;\n+\n+/** Pointer to Function returning Void (any number of parameters) */\n+typedef void (*PFV)();\n+\n+/** Pointer to Function returning int32_t (any number of parameters) */\n+typedef int32_t (*PFI)();\n+\n+/**\n+ * @}\n+ */\n+\n+/** @defgroup LPC_Types_Public_Macros  LPC Public Macros\n+ * @{\n+ */\n+\n+/* _BIT(n) sets the bit at position \"n\"\n+ * _BIT(n) is intended to be used in \"OR\" and \"AND\" expressions:\n+ * e.g., \"(_BIT(3) | _BIT(7))\".\n+ */\n+#undef _BIT\n+/* Set bit macro */\n+#define _BIT(n) (1 << (n))\n+\n+/* _SBF(f,v) sets the bit field starting at position \"f\" to value \"v\".\n+ * _SBF(f,v) is intended to be used in \"OR\" and \"AND\" expressions:\n+ * e.g., \"((_SBF(5,7) | _SBF(12,0xF)) & 0xFFFF)\"\n+ */\n+#undef _SBF\n+/* Set bit field macro */\n+#define _SBF(f, v) ((v) << (f))\n+\n+/* _BITMASK constructs a symbol with 'field_width' least significant\n+ * bits set.\n+ * e.g., _BITMASK(5) constructs '0x1F', _BITMASK(16) == 0xFFFF\n+ * The symbol is intended to be used to limit the bit field width\n+ * thusly:\n+ * <a_register> = (any_expression) & _BITMASK(x), where 0 < x <= 32.\n+ * If \"any_expression\" results in a value that is larger than can be\n+ * contained in 'x' bits, the bits above 'x - 1' are masked off.  When\n+ * used with the _SBF example above, the example would be written:\n+ * a_reg = ((_SBF(5,7) | _SBF(12,0xF)) & _BITMASK(16))\n+ * This ensures that the value written to a_reg is no wider than\n+ * 16 bits, and makes the code easier to read and understand.\n+ */\n+#undef _BITMASK\n+/* Bitmask creation macro */\n+#define _BITMASK(field_width) ( _BIT(field_width) - 1)\n+\n+/* NULL pointer */\n+#ifndef NULL\n+#define NULL ((void *) 0)\n+#endif\n+\n+/* Number of elements in an array */\n+#define NELEMENTS(array)  (sizeof(array) / sizeof(array[0]))\n+\n+/* Static data/function define */\n+#define STATIC static\n+/* External data/function define */\n+#define EXTERN extern\n+\n+#if !defined(MAX)\n+#define MAX(a, b) (((a) > (b)) ? (a) : (b))\n+#endif\n+#if !defined(MIN)\n+#define MIN(a, b) (((a) < (b)) ? (a) : (b))\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+/* Old Type Definition compatibility */\n+/** @addtogroup LPC_Types_Public_Types\n+ * @{\n+ */\n+\n+/** LPC type for character type */\n+typedef char CHAR;\n+\n+/** LPC type for 8 bit unsigned value */\n+typedef uint8_t UNS_8;\n+\n+/** LPC type for 8 bit signed value */\n+typedef int8_t INT_8;\n+\n+/** LPC type for 16 bit unsigned value */\n+typedef uint16_t UNS_16;\n+\n+/** LPC type for 16 bit signed value */\n+typedef int16_t INT_16;\n+\n+/** LPC type for 32 bit unsigned value */\n+typedef uint32_t UNS_32;\n+\n+/** LPC type for 32 bit signed value */\n+typedef int32_t INT_32;\n+\n+/** LPC type for 64 bit signed value */\n+typedef int64_t INT_64;\n+\n+/** LPC type for 64 bit unsigned value */\n+typedef uint64_t UNS_64;\n+\n+#ifdef __CODE_RED\n+#define BOOL_32 bool\n+#define BOOL_16 bool\n+#define BOOL_8  bool\n+#else\n+/** 32 bit boolean type */\n+typedef bool BOOL_32;\n+\n+/** 16 bit boolean type */\n+typedef bool BOOL_16;\n+\n+/** 8 bit boolean type */\n+typedef bool BOOL_8;\n+#endif\n+\n+#ifdef __CC_ARM\n+#define INLINE  __inline\n+#else\n+#define INLINE inline\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __LPC_TYPES_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/mcpwm_18xx_43xx.h ./lpc_chip_43xx/inc/mcpwm_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/mcpwm_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/mcpwm_18xx_43xx.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,80 @@\n+/*\n+ * @brief LPC18xx/43xx Motor Control PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __MCPWM_18XX_43XX_H_\n+#define __MCPWM_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup MCPWM_18XX_43XX CHIP: LPC18xx/43xx Motor Control PWM driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Motor Control PWM register block structure\n+ */\n+typedef struct {                   /*!< MCPWM Structure        */\n+   __I  uint32_t  CON;             /*!< PWM Control read address */\n+   __O  uint32_t  CON_SET;         /*!< PWM Control set address */\n+   __O  uint32_t  CON_CLR;         /*!< PWM Control clear address */\n+   __I  uint32_t  CAPCON;          /*!< Capture Control read address */\n+   __O  uint32_t  CAPCON_SET;      /*!< Capture Control set address */\n+   __O  uint32_t  CAPCON_CLR;      /*!< Event Control clear address */\n+   __IO uint32_t TC[3];            /*!< Timer Counter register */\n+   __IO uint32_t LIM[3];           /*!< Limit register         */\n+   __IO uint32_t MAT[3];           /*!< Match register         */\n+   __IO uint32_t  DT;              /*!< Dead time register     */\n+   __IO uint32_t  CCP;             /*!< Communication Pattern register */\n+   __I  uint32_t CAP[3];           /*!< Capture register       */\n+   __I  uint32_t  INTEN;           /*!< Interrupt Enable read address */\n+   __O  uint32_t  INTEN_SET;       /*!< Interrupt Enable set address */\n+   __O  uint32_t  INTEN_CLR;       /*!< Interrupt Enable clear address */\n+   __I  uint32_t  CNTCON;          /*!< Count Control read address */\n+   __O  uint32_t  CNTCON_SET;      /*!< Count Control set address */\n+   __O  uint32_t  CNTCON_CLR;      /*!< Count Control clear address */\n+   __I  uint32_t  INTF;            /*!< Interrupt flags read address */\n+   __O  uint32_t  INTF_SET;        /*!< Interrupt flags set address */\n+   __O  uint32_t  INTF_CLR;        /*!< Interrupt flags clear address */\n+   __O  uint32_t  CAP_CLR;         /*!< Capture clear address  */\n+} LPC_MCPWM_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __MCPWM_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/otp_18xx_43xx.h ./lpc_chip_43xx/inc/otp_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/otp_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/otp_18xx_43xx.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,144 @@\n+/*\n+ * @brief LPC18xx/43xx OTP Controller driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __OTP_18XX_43XX_H_\n+#define __OTP_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup OTP_18XX_43XX CHIP: LPC18xx/43xx OTP Controller driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  OTP Register block\n+ */\n+typedef struct {\n+   __IO uint32_t OTP0_0;               /*!< (@ 0x40045000) OTP content */\n+   __IO uint32_t OTP0_1;               /*!< (@ 0x40045004) OTP content */\n+   __IO uint32_t OTP0_2;               /*!< (@ 0x40045008) OTP content */\n+   __IO uint32_t OTP0_3;               /*!< (@ 0x4004500C) OTP content */\n+   __IO uint32_t OTP1_0;               /*!< (@ 0x40045010) OTP content */\n+   __IO uint32_t OTP1_1;               /*!< (@ 0x40045014) OTP content */\n+   __IO uint32_t OTP1_2;               /*!< (@ 0x40045018) OTP content */\n+   __IO uint32_t OTP1_3;               /*!< (@ 0x4004501C) OTP content */\n+   __IO uint32_t OTP2_0;               /*!< (@ 0x40045020) OTP content */\n+   __IO uint32_t OTP2_1;               /*!< (@ 0x40045024) OTP content */\n+   __IO uint32_t OTP2_2;               /*!< (@ 0x40045028) OTP content */\n+   __IO uint32_t OTP2_3;               /*!< (@ 0x4004502C) OTP content */\n+   __IO uint32_t OTP3_0;               /*!< (@ 0x40045030) OTP content */\n+   __IO uint32_t OTP3_1;               /*!< (@ 0x40045034) OTP content */\n+   __IO uint32_t OTP3_2;               /*!< (@ 0x40045038) OTP content */\n+   __IO uint32_t OTP3_3;               /*!< (@ 0x4004503C) OTP content */\n+} LPC_OTP_T;\n+\n+/**\n+ * @brief  OTP Boot Source selection used in Chip driver\n+ */\n+typedef enum CHIP_OTP_BOOT_SRC {\n+   CHIP_OTP_BOOTSRC_PINS,      /*!< Boot source - External pins */\n+   CHIP_OTP_BOOTSRC_UART0,     /*!< Boot source - UART0 */\n+   CHIP_OTP_BOOTSRC_SPIFI,     /*!< Boot source - EMC 8-bit memory */\n+   CHIP_OTP_BOOTSRC_EMC8,      /*!< Boot source - EMC 16-bit memory */\n+   CHIP_OTP_BOOTSRC_EMC16,     /*!< Boot source - EMC 32-bit memory */\n+   CHIP_OTP_BOOTSRC_EMC32,     /*!< Boot source - EMC 32-bit memory */\n+   CHIP_OTP_BOOTSRC_USB0,      /*!< Boot source - DFU USB0 boot */\n+   CHIP_OTP_BOOTSRC_USB1,      /*!< Boot source - DFU USB1 boot */\n+   CHIP_OTP_BOOTSRC_SPI,       /*!< Boot source - SPI boot */\n+   CHIP_OTP_BOOTSRC_UART3      /*!< Boot source - UART3 */\n+} CHIP_OTP_BOOT_SRC_T;\n+\n+/**\n+ * @brief  Initialize for OTP Controller functions\n+ * @return  Status of Otp_Init function\n+ * This function will initialise all the OTP driver function pointers\n+ * and call the ROM OTP Initialisation function.\n+ */\n+uint32_t Chip_OTP_Init(void);\n+\n+/**\n+ * @brief  Program boot source in OTP Controller\n+ * @param  BootSrc : Boot Source enum value\n+ * @return Status\n+ */\n+uint32_t Chip_OTP_ProgBootSrc(CHIP_OTP_BOOT_SRC_T BootSrc);\n+\n+/**\n+ * @brief  Program the JTAG bit in OTP Controller\n+ * @return Status\n+ */\n+uint32_t Chip_OTP_ProgJTAGDis(void);\n+\n+/**\n+ * @brief  Program USB ID in OTP Controller\n+ * @param  ProductID   : USB Product ID\n+ * @param  VendorID    : USB Vendor ID\n+ * @return Status\n+ */\n+uint32_t Chip_OTP_ProgUSBID(uint32_t ProductID, uint32_t VendorID);\n+\n+/**\n+ * @brief  Program OTP GP Word memory\n+ * @param   WordNum     : Word Number (Select word 0 or word 1 or word 2)\n+ * @param  Data        : Data value\n+ * @param  Mask        : Mask value\n+ * @return Status\n+ * This function available in devices which are not AES capable\n+ */\n+uint32_t Chip_OTP_ProgGPWord(uint32_t WordNum, uint32_t Data, uint32_t Mask);\n+\n+/**\n+ * @brief  Program AES Key\n+ * @param   KeyNum      : Key Number (Select 0 or 1)\n+ * @param  key         : Pointer to AES Key (16 bytes required)\n+ * @return Status\n+ * This function available in devices which are AES capable\n+ */\n+uint32_t Chip_OTP_ProgKey(uint32_t KeyNum, uint8_t *key);\n+\n+/**\n+ * @brief  Generate Random Number using HW Random Number Generator\n+ * @return Random Number value\n+ */\n+uint32_t Chip_OTP_GenRand(void);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __OTP_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/pinint_18xx_43xx.h ./lpc_chip_43xx/inc/pinint_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/pinint_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/pinint_18xx_43xx.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,252 @@\n+/*\n+ * @brief LPC18xx/43xx Pin Interrupt and Pattern Match Registers and driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PININT_18XX_43XX_H_\n+#define __PININT_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup PININT_18XX_43XX CHIP: LPC18xx/43xx Pin Interrupt and Pattern Match driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC18xx/43xx Pin Interrupt and Pattern Match register block structure\n+ */\n+typedef struct {           /*!< PIN_INT Structure */\n+   __IO uint32_t ISEL;     /*!< Pin Interrupt Mode register */\n+   __IO uint32_t IENR;     /*!< Pin Interrupt Enable (Rising) register */\n+   __IO uint32_t SIENR;    /*!< Set Pin Interrupt Enable (Rising) register */\n+   __IO uint32_t CIENR;    /*!< Clear Pin Interrupt Enable (Rising) register */\n+   __IO uint32_t IENF;     /*!< Pin Interrupt Enable Falling Edge / Active Level register */\n+   __IO uint32_t SIENF;    /*!< Set Pin Interrupt Enable Falling Edge / Active Level register */\n+   __IO uint32_t CIENF;    /*!< Clear Pin Interrupt Enable Falling Edge / Active Level address */\n+   __IO uint32_t RISE;     /*!< Pin Interrupt Rising Edge register */\n+   __IO uint32_t FALL;     /*!< Pin Interrupt Falling Edge register */\n+   __IO uint32_t IST;      /*!< Pin Interrupt Status register */\n+} LPC_PIN_INT_T;\n+\n+\n+/**\n+ * LPC18xx/43xx Pin Interrupt channel values\n+ */\n+#define PININTCH0         (1 << 0)\n+#define PININTCH1         (1 << 1)\n+#define PININTCH2         (1 << 2)\n+#define PININTCH3         (1 << 3)\n+#define PININTCH4         (1 << 4)\n+#define PININTCH5         (1 << 5)\n+#define PININTCH6         (1 << 6)\n+#define PININTCH7         (1 << 7)\n+#define PININTCH(ch)      (1 << (ch))\n+\n+/**\n+ * @brief  Initialize Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return Nothing\n+ * @note   This function should be used after the Chip_GPIO_Init() function.\n+ */\n+STATIC INLINE void Chip_PININT_Init(LPC_PIN_INT_T *pPININT) {}\n+\n+/**\n+ * @brief  De-Initialize Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_DeInit(LPC_PIN_INT_T *pPININT) {}\n+\n+/**\n+ * @brief  Configure the pins as edge sensitive in Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_SetPinModeEdge(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->ISEL &= ~pins;\n+}\n+\n+/**\n+ * @brief  Configure the pins as level sensitive in Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_SetPinModeLevel(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->ISEL |= pins;\n+}\n+\n+/**\n+ * @brief  Return current PININT rising edge or high level interrupt enable state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return A bifield containing the high edge/level interrupt enables for each\n+ * interrupt. Bit 0 = PININT0, 1 = PININT1, etc.\n+ * For each bit, a 0 means the high edge/level interrupt is disabled, while a 1\n+ * means it's enabled.\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetHighEnabled(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->IENR;\n+}\n+\n+/**\n+ * @brief  Enable high edge/level PININT interrupts for pins\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins to enable (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_EnableIntHigh(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->SIENR = pins;\n+}\n+\n+/**\n+ * @brief  Disable high edge/level PININT interrupts for pins\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins to disable (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_DisableIntHigh(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->CIENR = pins;\n+}\n+\n+/**\n+ * @brief  Return current PININT falling edge or low level interrupt enable state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return A bifield containing the low edge/level interrupt enables for each\n+ * interrupt. Bit 0 = PININT0, 1 = PININT1, etc.\n+ * For each bit, a 0 means the low edge/level interrupt is disabled, while a 1\n+ * means it's enabled.\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetLowEnabled(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->IENF;\n+}\n+\n+/**\n+ * @brief  Enable low edge/level PININT interrupts for pins\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins to enable (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_EnableIntLow(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->SIENF = pins;\n+}\n+\n+/**\n+ * @brief  Disable low edge/level PININT interrupts for pins\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins to disable (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_DisableIntLow(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->CIENF = pins;\n+}\n+\n+/**\n+ * @brief  Return pin states that have a detected latched high edge (RISE) state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return PININT states (bit n = high) with a latched rise state detected\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetRiseStates(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->RISE;\n+}\n+\n+/**\n+ * @brief  Clears pin states that had a latched high edge (RISE) state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins with latched states to clear\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_ClearRiseStates(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->RISE = pins;\n+}\n+\n+/**\n+ * @brief  Return pin states that have a detected latched falling edge (FALL) state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return PININT states (bit n = high) with a latched rise state detected\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetFallStates(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->FALL;\n+}\n+\n+/**\n+ * @brief  Clears pin states that had a latched falling edge (FALL) state\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pins with latched states to clear\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_ClearFallStates(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->FALL = pins;\n+}\n+\n+/**\n+ * @brief  Get interrupt status from Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @return Interrupt status (bit n for PININTn = high means interrupt ie pending)\n+ */\n+STATIC INLINE uint32_t Chip_PININT_GetIntStatus(LPC_PIN_INT_T *pPININT)\n+{\n+   return pPININT->IST;\n+}\n+\n+/**\n+ * @brief  Clear interrupt status in Pin interrupt block\n+ * @param  pPININT : The base address of Pin interrupt block\n+ * @param  pins    : Pin interrupts to clear (ORed value of PININTCH*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_PININT_ClearIntStatus(LPC_PIN_INT_T *pPININT, uint32_t pins)\n+{\n+   pPININT->IST = pins;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PININT_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/pmc_18xx_43xx.h ./lpc_chip_43xx/inc/pmc_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/pmc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/pmc_18xx_43xx.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,99 @@\n+/*\n+ * @brief LPC18xx/43xx Power Management Controller driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __PMC_18XX_43XX_H_\n+#define __PMC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup PMC_18XX_43XX CHIP: LPC18xx/43xx Power Management Controller driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Power Management Controller register block structure\n+ */\n+typedef struct {                       /*!< PMC Structure          */\n+   __IO uint32_t  PD0_SLEEP0_HW_ENA;   /*!< Hardware sleep event enable register */\n+   __I  uint32_t  RESERVED0[6];\n+   __IO uint32_t  PD0_SLEEP0_MODE;     /*!< Sleep power mode register */\n+} LPC_PMC_T;\n+\n+/**\n+ * @brief Power Management Controller power modes\n+ * Setting this mode will not make IO loose the state\n+ */\n+#define PMC_PWR_DEEP_SLEEP_MODE         0x3000AA\n+#define PMC_PWR_POWER_DOWN_MODE         0x30FCBA\n+#define PMC_PWR_DEEP_POWER_DOWN_MODE    0x30FF7F\n+\n+/**\n+ * @brief Power Management Controller power modes (IO powerdown)\n+ * Setting this mode will make the IO loose the state\n+ */\n+#define PMC_PWR_DEEP_SLEEP_MODE_NO_IO         0x3F00AA\n+#define PMC_PWR_POWER_DOWN_MODE_NO_IO         0x3FFCBA\n+#define PMC_PWR_DEEP_POWER_DOWN_MODE_NO_IO    0x3FFF7F\n+\n+/*\n+ * @brief PMC power states\n+ */\n+typedef enum {\n+   PMC_DeepSleep = PMC_PWR_DEEP_SLEEP_MODE,            /*!< Deep sleep state */\n+   PMC_PowerDown = PMC_PWR_POWER_DOWN_MODE,            /*!< Power Down state */\n+   PMC_DeepPowerDown = PMC_PWR_DEEP_POWER_DOWN_MODE,   /*!< Power Down state */\n+} CHIP_PMC_PWR_STATE_T;\n+\n+/**\n+ * @brief  Set to sleep power state\n+ * @return Nothing\n+ */\n+void Chip_PMC_Sleep(void);\n+\n+/**\n+ * @brief  Set to sleep power mode\n+ * @param  PwrState    : Power State as specified in /a CHIP_PMC_PWR_STATE_T enum\n+ * @return Nothing\n+ */\n+void Chip_PMC_Set_PwrState(CHIP_PMC_PWR_STATE_T PwrState);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __PMC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/qei_18xx_43xx.h ./lpc_chip_43xx/inc/qei_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/qei_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/qei_18xx_43xx.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,86 @@\n+/*\n+ * @brief LPC18xx/43xx Quadrature Encoder Interface driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __QEI_18XX_43XX_H_\n+#define __QEI_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup QEI_18XX_43XX CHIP: LPC18xx/43xx Quadrature Encoder Interface driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Quadrature Encoder Interface register block structure\n+ */\n+typedef struct {               /*!< QEI Structure          */\n+   __O  uint32_t  CON;         /*!< Control register       */\n+   __I  uint32_t  STAT;        /*!< Encoder status register */\n+   __IO uint32_t  CONF;        /*!< Configuration register */\n+   __I  uint32_t  POS;         /*!< Position register      */\n+   __IO uint32_t  MAXPOS;      /*!< Maximum position register */\n+   __IO uint32_t  CMPOS0;      /*!< position compare register 0 */\n+   __IO uint32_t  CMPOS1;      /*!< position compare register 1 */\n+   __IO uint32_t  CMPOS2;      /*!< position compare register 2 */\n+   __I  uint32_t  INXCNT;      /*!< Index count register   */\n+   __IO uint32_t  INXCMP0;     /*!< Index compare register 0 */\n+   __IO uint32_t  LOAD;        /*!< Velocity timer reload register */\n+   __I  uint32_t  TIME;        /*!< Velocity timer register */\n+   __I  uint32_t  VEL;         /*!< Velocity counter register */\n+   __I  uint32_t  CAP;         /*!< Velocity capture register */\n+   __IO uint32_t  VELCOMP;     /*!< Velocity compare register */\n+   __IO uint32_t  FILTERPHA;   /*!< Digital filter register on input phase A (QEI_A) */\n+   __IO uint32_t  FILTERPHB;   /*!< Digital filter register on input phase B (QEI_B) */\n+   __IO uint32_t  FILTERINX;   /*!< Digital filter register on input index (QEI_IDX) */\n+   __IO uint32_t  WINDOW;      /*!< Index acceptance window register */\n+   __IO uint32_t  INXCMP1;     /*!< Index compare register 1 */\n+   __IO uint32_t  INXCMP2;     /*!< Index compare register 2 */\n+   __I  uint32_t  RESERVED0[993];\n+   __O  uint32_t  IEC;         /*!< Interrupt enable clear register */\n+   __O  uint32_t  IES;         /*!< Interrupt enable set register */\n+   __I  uint32_t  INTSTAT;     /*!< Interrupt status register */\n+   __I  uint32_t  IE;          /*!< Interrupt enable register */\n+   __O  uint32_t  CLR;         /*!< Interrupt status clear register */\n+   __O  uint32_t  SET;         /*!< Interrupt status set register */\n+} LPC_QEI_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __QEI_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/rgu_18xx_43xx.h ./lpc_chip_43xx/inc/rgu_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/rgu_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/rgu_18xx_43xx.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,158 @@\n+/*\n+ * @brief LPC18xx/43xx Reset Generator Unit driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RGU_18XX_43XX_H_\n+#define __RGU_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RGU_18XX_43XX CHIP: LPC18xx/43xx Reset Generator Unit (RGU) driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief RGU reset enumerations\n+ */\n+typedef enum CHIP_RGU_RST {\n+   RGU_CORE_RST,\n+   RGU_PERIPH_RST,\n+   RGU_MASTER_RST,\n+   RGU_WWDT_RST = 4,\n+   RGU_CREG_RST,\n+   RGU_BUS_RST = 8,\n+   RGU_SCU_RST,\n+   RGU_M0SUB_RST = 12,\n+   RGU_M3_RST,\n+   RGU_LCD_RST = 16,\n+   RGU_USB0_RST,\n+   RGU_USB1_RST,\n+   RGU_DMA_RST,\n+   RGU_SDIO_RST,\n+   RGU_EMC_RST,\n+   RGU_ETHERNET_RST,\n+   RGU_FLASHA_RST = 25,\n+   RGU_EEPROM_RST = 27,\n+   RGU_GPIO_RST,\n+   RGU_FLASHB_RST,\n+   RGU_TIMER0_RST = 32,\n+   RGU_TIMER1_RST,\n+   RGU_TIMER2_RST,\n+   RGU_TIMER3_RST,\n+   RGU_RITIMER_RST,\n+   RGU_SCT_RST,\n+   RGU_MOTOCONPWM_RST,\n+   RGU_QEI_RST,\n+   RGU_ADC0_RST,\n+   RGU_ADC1_RST,\n+   RGU_DAC_RST,\n+   RGU_UART0_RST = 44,\n+   RGU_UART1_RST,\n+   RGU_UART2_RST,\n+   RGU_UART3_RST,\n+   RGU_I2C0_RST,\n+   RGU_I2C1_RST,\n+   RGU_SSP0_RST,\n+   RGU_SSP1_RST,\n+   RGU_I2S_RST,\n+   RGU_SPIFI_RST,\n+   RGU_CAN1_RST,\n+   RGU_CAN0_RST,\n+#ifdef CHIP_LPC43XX\n+   RGU_M0APP_RST,\n+   RGU_SGPIO_RST,\n+   RGU_SPI_RST,\n+   RGU_ADCHS_RST = 60,\n+#endif\n+   RGU_LAST_RST = 63,\n+} CHIP_RGU_RST_T;\n+\n+/**\n+ * @brief RGU register structure\n+ */\n+typedef struct {                           /*!< RGU Structure          */\n+   __I  uint32_t  RESERVED0[64];\n+   __O  uint32_t  RESET_CTRL[2];           /*!< Reset control register 0,1 */\n+   __I  uint32_t  RESERVED1[2];\n+   __IO uint32_t  RESET_STATUS[4];         /*!< Reset status register 0 to 3 */\n+   __I  uint32_t  RESERVED2[12];\n+   __I  uint32_t  RESET_ACTIVE_STATUS[2];  /*!< Reset active status register 0, 1 */\n+   __I  uint32_t  RESERVED3[170];\n+   __IO uint32_t  RESET_EXT_STAT[RGU_LAST_RST + 1];/*!< Reset external status registers */\n+} LPC_RGU_T;\n+\n+/**\n+ * @brief  Trigger a peripheral reset for the selected peripheral\n+ * @param  ResetNumber : Peripheral reset number to trigger\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_RGU_TriggerReset(CHIP_RGU_RST_T ResetNumber)\n+{\n+   LPC_RGU->RESET_CTRL[ResetNumber >> 5] = 1 << (ResetNumber & 31);\n+   /* Reset will auto clear after 1 clock cycle */\n+}\n+\n+/**\n+ * @brief  Checks the reset status of a peripheral\n+ * @param  ResetNumber : Peripheral reset number to trigger\n+ * @return true if the periperal is still being reset\n+ */\n+STATIC INLINE bool Chip_RGU_InReset(CHIP_RGU_RST_T ResetNumber)\n+{\n+   return !(LPC_RGU->RESET_ACTIVE_STATUS[ResetNumber >> 5] & (1 << (ResetNumber & 31)));\n+}\n+\n+/**\n+ * @brief  Clears reset for the selected peripheral\n+ * @param  ResetNumber : Peripheral reset number to trigger (RGU_M0SUB_RST or RGU_M0APP_RST)\n+ * @return Nothing\n+ * @note\n+ * Almost all peripherals will auto clear the reset bit. Only a few peripherals\n+ * like the Cortex M0 Core in LPC43xx will not auto clear the reset and require\n+ * this function to clear the reset bit. This function clears all reset bits in\n+ * a reset register.\n+ */\n+STATIC INLINE void Chip_RGU_ClearReset(CHIP_RGU_RST_T ResetNumber)\n+{\n+   LPC_RGU->RESET_CTRL[ResetNumber >> 5] = 0;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RGU_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/ring_buffer.h ./lpc_chip_43xx/inc/ring_buffer.h\n--- a_OkB2vL/lpc_chip_43xx/inc/ring_buffer.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/ring_buffer.h\t2017-02-27 21:03:17.016043463 -0300\n@@ -0,0 +1,188 @@\n+/*\n+ * @brief Common ring buffer support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RING_BUFFER_H_\n+#define __RING_BUFFER_H_\n+\n+#include \"lpc_types.h\"\n+\n+/** @defgroup Ring_Buffer CHIP: Simple ring buffer implementation\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/**\n+ * @brief Ring buffer structure\n+ */\n+typedef struct {\n+   void *data;\n+   int count;\n+   int itemSz;\n+   uint32_t head;\n+   uint32_t tail;\n+} RINGBUFF_T;\n+\n+/**\n+ * @def        RB_VHEAD(rb)\n+ * volatile typecasted head index\n+ */\n+#define RB_VHEAD(rb)              (*(volatile uint32_t *) &(rb)->head)\n+\n+/**\n+ * @def        RB_VTAIL(rb)\n+ * volatile typecasted tail index\n+ */\n+#define RB_VTAIL(rb)              (*(volatile uint32_t *) &(rb)->tail)\n+\n+/**\n+ * @brief  Initialize ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer to initialize\n+ * @param  buffer      : Pointer to buffer to associate with RingBuff\n+ * @param  itemSize    : Size of each buffer item size\n+ * @param  count       : Size of ring buffer\n+ * @note   Memory pointed by @a buffer must have correct alignment of\n+ *             @a itemSize, and @a count must be a power of 2 and must at\n+ *             least be 2 or greater.\n+ * @return Nothing\n+ */\n+int RingBuffer_Init(RINGBUFF_T *RingBuff, void *buffer, int itemSize, int count);\n+\n+/**\n+ * @brief  Resets the ring buffer to empty\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return Nothing\n+ */\n+STATIC INLINE void RingBuffer_Flush(RINGBUFF_T *RingBuff)\n+{\n+   RingBuff->head = RingBuff->tail = 0;\n+}\n+\n+/**\n+ * @brief  Return size the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return Size of the ring buffer in bytes\n+ */\n+STATIC INLINE int RingBuffer_GetSize(RINGBUFF_T *RingBuff)\n+{\n+   return RingBuff->count;\n+}\n+\n+/**\n+ * @brief  Return number of items in the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return Number of items in the ring buffer\n+ */\n+STATIC INLINE int RingBuffer_GetCount(RINGBUFF_T *RingBuff)\n+{\n+   return RB_VHEAD(RingBuff) - RB_VTAIL(RingBuff);\n+}\n+\n+/**\n+ * @brief  Return number of free items in the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return Number of free items in the ring buffer\n+ */\n+STATIC INLINE int RingBuffer_GetFree(RINGBUFF_T *RingBuff)\n+{\n+   return RingBuff->count - RingBuffer_GetCount(RingBuff);\n+}\n+\n+/**\n+ * @brief  Return number of items in the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return 1 if the ring buffer is full, otherwise 0\n+ */\n+STATIC INLINE int RingBuffer_IsFull(RINGBUFF_T *RingBuff)\n+{\n+   return (RingBuffer_GetCount(RingBuff) >= RingBuff->count);\n+}\n+\n+/**\n+ * @brief  Return empty status of ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @return 1 if the ring buffer is empty, otherwise 0\n+ */\n+STATIC INLINE int RingBuffer_IsEmpty(RINGBUFF_T *RingBuff)\n+{\n+   return RB_VHEAD(RingBuff) == RB_VTAIL(RingBuff);\n+}\n+\n+/**\n+ * @brief  Insert a single item into ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @param  data        : pointer to item\n+ * @return 1 when successfully inserted,\n+ *         0 on error (Buffer not initialized using\n+ *         RingBuffer_Init() or attempted to insert\n+ *         when buffer is full)\n+ */\n+int RingBuffer_Insert(RINGBUFF_T *RingBuff, const void *data);\n+\n+/**\n+ * @brief  Insert an array of items into ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @param  data        : Pointer to first element of the item array\n+ * @param  num         : Number of items in the array\n+ * @return number of items successfully inserted,\n+ *         0 on error (Buffer not initialized using\n+ *         RingBuffer_Init() or attempted to insert\n+ *         when buffer is full)\n+ */\n+int RingBuffer_InsertMult(RINGBUFF_T *RingBuff, const void *data, int num);\n+\n+/**\n+ * @brief  Pop an item from the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @param  data        : Pointer to memory where popped item be stored\n+ * @return 1 when item popped successfuly onto @a data,\n+ *             0 When error (Buffer not initialized using\n+ *             RingBuffer_Init() or attempted to pop item when\n+ *             the buffer is empty)\n+ */\n+int RingBuffer_Pop(RINGBUFF_T *RingBuff, void *data);\n+\n+/**\n+ * @brief  Pop an array of items from the ring buffer\n+ * @param  RingBuff    : Pointer to ring buffer\n+ * @param  data        : Pointer to memory where popped items be stored\n+ * @param  num         : Max number of items array @a data can hold\n+ * @return Number of items popped onto @a data,\n+ *             0 on error (Buffer not initialized using RingBuffer_Init()\n+ *             or attempted to pop when the buffer is empty)\n+ */\n+int RingBuffer_PopMult(RINGBUFF_T *RingBuff, void *data, int num);\n+\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __RING_BUFFER_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/ritimer_18xx_43xx.h ./lpc_chip_43xx/inc/ritimer_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/ritimer_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/ritimer_18xx_43xx.h\t2017-02-27 21:03:17.020043463 -0300\n@@ -0,0 +1,189 @@\n+/*\n+ * @brief LPC18xx/43xx RITimer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RITIMER_18XX_43XX_H_\n+#define __RITIMER_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RITIMER_18XX_43XX CHIP: LPC18xx/43xx Repetitive Interrupt Timer driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief Repetitive Interrupt Timer register block structure\n+ */\n+typedef struct {               /*!< RITIMER Structure      */\n+   __IO uint32_t  COMPVAL;     /*!< Compare register       */\n+   __IO uint32_t  MASK;        /*!< Mask register. This register holds the 32-bit mask value. A 1 written to any bit will force a compare on the corresponding bit of the counter and compare register. */\n+   __IO uint32_t  CTRL;        /*!< Control register.      */\n+   __IO uint32_t  COUNTER;     /*!< 32-bit counter         */\n+} LPC_RITIMER_T;\n+\n+/*\n+ * @brief RITIMER register support bitfields and mask\n+ */\n+\n+/*\n+ * RIT control register\n+ */\n+/**    Set by H/W when the counter value equals the masked compare value */\n+#define RIT_CTRL_INT    ((uint32_t) (1))\n+/** Set timer enable clear to 0 when the counter value equals the masked compare value  */\n+#define RIT_CTRL_ENCLR  ((uint32_t) _BIT(1))\n+/** Set timer enable on debug */\n+#define RIT_CTRL_ENBR   ((uint32_t) _BIT(2))\n+/** Set timer enable */\n+#define RIT_CTRL_TEN    ((uint32_t) _BIT(3))\n+\n+/**\n+ * @brief  Initialize the RIT\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+void Chip_RIT_Init(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief  Shutdown the RIT\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+void Chip_RIT_DeInit(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief  Enable Timer\n+ * @param  pRITimer        : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_Enable(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL |= RIT_CTRL_TEN;\n+}\n+\n+/**\n+ * @brief  Disable Timer\n+ * @param  pRITimer        : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_Disable(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL &= ~RIT_CTRL_TEN;\n+}\n+\n+/**\n+ * @brief  Enable timer debug\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_TimerDebugEnable(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL |= RIT_CTRL_ENBR;\n+}\n+\n+/**\n+ * @brief  Disable timer debug\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_TimerDebugDisable(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL &= ~RIT_CTRL_ENBR;\n+}\n+\n+/**\n+ * @brief  Check whether interrupt flag is set or not\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return Current interrupt status, either ET or UNSET\n+ */\n+IntStatus Chip_RIT_GetIntStatus(LPC_RITIMER_T *pRITimer);\n+\n+/**\n+ * @brief  Set a tick value for the interrupt to time out\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @param  val         : value (in ticks) of the interrupt to be set\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_SetCOMPVAL(LPC_RITIMER_T *pRITimer, uint32_t val)\n+{\n+   pRITimer->COMPVAL = val;\n+}\n+\n+/**\n+ * @brief  Enables or clears the RIT or interrupt\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @param  val         : RIT to be set, one or more RIT_CTRL_* values\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_EnableCTRL(LPC_RITIMER_T *pRITimer, uint32_t val)\n+{\n+   pRITimer->CTRL |= val;\n+}\n+\n+/**\n+ * @brief  Clears the RIT interrupt\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RIT_ClearInt(LPC_RITIMER_T *pRITimer)\n+{\n+   pRITimer->CTRL |= RIT_CTRL_INT;\n+}\n+\n+/**\n+ * @brief  Returns the current RIT Counter value\n+ * @param  pRITimer    : RITimer peripheral selected\n+ * @return the current timer counter value\n+ */\n+STATIC INLINE uint32_t Chip_RIT_GetCounter(LPC_RITIMER_T *pRITimer)\n+{\n+   return pRITimer->COUNTER;\n+}\n+\n+/**\n+ * @brief  Set timer interval value\n+ * @param  pRITimer        : RITimer peripheral selected\n+ * @param  time_interval   : timer interval value (ms)\n+ * @return None\n+ */\n+void Chip_RIT_SetTimerInterval(LPC_RITIMER_T *pRITimer, uint32_t time_interval);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RITIMER_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/romapi_18xx_43xx.h ./lpc_chip_43xx/inc/romapi_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/romapi_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/romapi_18xx_43xx.h\t2017-02-27 21:03:17.020043463 -0300\n@@ -0,0 +1,128 @@\n+/*\n+ * @brief LPC18xx_43xx ROM API declarations and functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __ROMAPI_18XX_43XX_H_\n+#define __ROMAPI_18XX_43XX_H_\n+\n+#include \"iap_18xx_43xx.h\"\n+#include \"error.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup ROMAPI_18XX_43XX CHIP: LPC18xx_43xx ROM API declarations and functions\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief LPC18XX_43XX OTP API structure\n+ */\n+typedef struct {\n+   uint32_t (*Init)(void);                 /*!< Initializes OTP controller. */\n+   uint32_t (*ProgBootSrc)(CHIP_OTP_BOOT_SRC_T BootSrc);\n+   uint32_t (*ProgJTAGDis)(void);\n+   uint32_t (*ProgUSBID)(uint32_t ProductID, uint32_t VendorID);\n+   uint32_t reserved01;\n+   uint32_t reserved02;\n+   uint32_t reserved03;\n+   uint32_t reserved04;\n+   uint32_t (*ProgGP0)(uint32_t data, uint32_t mask);\n+   uint32_t (*ProgGP1)(uint32_t data, uint32_t mask);\n+   uint32_t (*ProgGP2)(uint32_t data, uint32_t mask);\n+   uint32_t (*ProgKey1)(uint8_t *key);\n+   uint32_t (*ProgKey2)(uint8_t *key);\n+   uint32_t (*GenRand)(void);\n+} OTP_API_T;\n+\n+/**\n+ * @brief LPC18XX_43XX AES API structure\n+ */\n+typedef struct {\n+   uint32_t (*Init)(void);\n+   uint32_t (*SetMode)(uint32_t mode);\n+   uint32_t (*LoadKey1)(void);\n+   uint32_t (*LoadKey2)(void);\n+   uint32_t (*LoadKeyRNG)(void);\n+   uint32_t (*LoadKeySW)(uint8_t *pKey);\n+   uint32_t (*LoadIV_SW)(uint8_t *pVector);\n+   uint32_t (*LoadIV_IC)(void);\n+   uint32_t (*Operate)(uint8_t *pOutput, uint8_t *pInput, uint32_t size);\n+   uint32_t (*ProgramKey1)(uint8_t *pKey);\n+   uint32_t (*ProgramKey2)(uint8_t *pKey);\n+} AES_API_T;\n+\n+/**\n+ * @brief LPC18XX High level ROM API structure\n+ */\n+typedef struct {\n+   void(*const iap_entry) (uint32_t *, uint32_t *);    /*!< IAP API entry function available on Flash parts only*/\n+   const OTP_API_T *pOtp;\n+   const AES_API_T *pAes;\n+   uint32_t reserved[3];\n+   const uint32_t spifiApiBase;            /*!< SPIFI API function table base address*/\n+   const uint32_t usbdApiBase;             /*!< USBD API function table base address*/\n+   const uint32_t endMarker;               /*!< API table end marker = 0x87654321 */\n+\n+} LPC_ROM_API_T;\n+\n+/* Pointer to ROM API function address */\n+#define LPC_ROM_API_BASE_LOC    0x10400100\n+#define LPC_ROM_API ((LPC_ROM_API_T *) LPC_ROM_API_BASE)\n+\n+/* Pointer to ROM IAP entry functions */\n+#define IAP_ENTRY_LOCATION        (*((uint32_t *) 0x10400100))\n+\n+/**\n+ * @brief IAP flash bank definitions\n+ */\n+#define IAP_FLASH_BANK_A                        0\n+#define IAP_FLASH_BANK_B                        1\n+\n+/**\n+ * @}\n+ */\n+\n+static INLINE void iap_entry(unsigned int cmd_param[], unsigned int status_result[])\n+{\n+   ((IAP_ENTRY_T) IAP_ENTRY_LOCATION)(cmd_param, status_result);\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __ROMAPI_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/rtc_18xx_43xx.h ./lpc_chip_43xx/inc/rtc_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/rtc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/rtc_18xx_43xx.h\t2017-02-27 21:03:17.020043463 -0300\n@@ -0,0 +1,638 @@\n+/*\n+ * @brief LPC18xx/43xx RTC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __RTC_18XX_43XX_H_\n+#define __RTC_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup RTC_18XX_43XX CHIP: LPC18xx/43xx Real Time Clock driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define RTC_EV_SUPPORT      1              /* Event Monitor/Recorder support */\n+\n+/**\n+ * @brief RTC time type option\n+ */\n+typedef enum {\n+   RTC_TIMETYPE_SECOND,        /*!< Second */\n+   RTC_TIMETYPE_MINUTE,        /*!< Month */\n+   RTC_TIMETYPE_HOUR,          /*!< Hour */\n+   RTC_TIMETYPE_DAYOFMONTH,    /*!< Day of month */\n+   RTC_TIMETYPE_DAYOFWEEK,     /*!< Day of week */\n+   RTC_TIMETYPE_DAYOFYEAR,     /*!< Day of year */\n+   RTC_TIMETYPE_MONTH,         /*!< Month */\n+   RTC_TIMETYPE_YEAR,          /*!< Year */\n+   RTC_TIMETYPE_LAST\n+} RTC_TIMEINDEX_T;\n+\n+#if RTC_EV_SUPPORT\n+/**\n+ * @brief Event Channel Identifier definitions\n+ */\n+typedef enum {\n+   RTC_EV_CHANNEL_1 = 0,\n+   RTC_EV_CHANNEL_2,\n+   RTC_EV_CHANNEL_3,\n+   RTC_EV_CHANNEL_NUM,\n+} RTC_EV_CHANNEL_T;\n+#endif /*RTC_EV_SUPPORT*/\n+\n+/**\n+ * @brief Real Time Clock register block structure\n+ */\n+typedef struct {                           /*!< RTC Structure          */\n+   __IO uint32_t  ILR;                     /*!< Interrupt Location Register */\n+   __I  uint32_t  RESERVED0;\n+   __IO uint32_t  CCR;                     /*!< Clock Control Register */\n+   __IO uint32_t  CIIR;                    /*!< Counter Increment Interrupt Register */\n+   __IO uint32_t  AMR;                     /*!< Alarm Mask Register    */\n+   __I  uint32_t  CTIME[3];                /*!< Consolidated Time Register 0,1,2 */\n+   __IO uint32_t  TIME[RTC_TIMETYPE_LAST]; /*!< Timer field registers */\n+   __IO uint32_t  CALIBRATION;             /*!< Calibration Value Register */\n+   __I  uint32_t  RESERVED1[7];\n+   __IO uint32_t  ALRM[RTC_TIMETYPE_LAST]; /*!< Alarm field registers */\n+#if RTC_EV_SUPPORT\n+   __IO uint32_t ERSTATUS;                 /*!< Event Monitor/Recorder Status register*/\n+   __IO uint32_t ERCONTROL;                /*!< Event Monitor/Recorder Control register*/\n+   __I  uint32_t ERCOUNTERS;               /*!< Event Monitor/Recorder Counters register*/\n+   __I  uint32_t RESERVED2;\n+   __I  uint32_t ERFIRSTSTAMP[RTC_EV_CHANNEL_NUM];         /*!<Event Monitor/Recorder First Stamp registers*/\n+   __I  uint32_t RESERVED3;\n+   __I  uint32_t ERLASTSTAMP[RTC_EV_CHANNEL_NUM];          /*!<Event Monitor/Recorder Last Stamp registers*/\n+#endif /*RTC_EV_SUPPORT*/\n+} LPC_RTC_T;\n+\n+/**\n+ * @brief Register File register block structure\n+ */\n+typedef struct {\n+   __IO uint32_t REGFILE[64];  /*!< General purpose storage register */\n+} LPC_REGFILE_T;\n+\n+/*\n+ * @brief ILR register definitions\n+ */\n+/** ILR register mask */\n+#define RTC_ILR_BITMASK         ((0x00000003))\n+/** Bit inform the source interrupt is counter increment*/\n+#define RTC_IRL_RTCCIF          ((1 << 0))\n+/** Bit inform the source interrupt is alarm match*/\n+#define RTC_IRL_RTCALF          ((1 << 1))\n+\n+/*\n+ * @brief CCR register definitions\n+ */\n+/** CCR register mask */\n+#define RTC_CCR_BITMASK         ((0x00000013))\n+/** Clock enable */\n+#define RTC_CCR_CLKEN           ((1 << 0))\n+/** Clock reset */\n+#define RTC_CCR_CTCRST          ((1 << 1))\n+/** Calibration counter enable */\n+#define RTC_CCR_CCALEN          ((1 << 4))\n+\n+/*\n+ * @brief CIIR and AMR register definitions\n+ */\n+/** Counter Increment Interrupt bit for second */\n+#define RTC_AMR_CIIR_IMSEC          ((1 << 0))\n+/** Counter Increment Interrupt bit for minute */\n+#define RTC_AMR_CIIR_IMMIN          ((1 << 1))\n+/** Counter Increment Interrupt bit for hour */\n+#define RTC_AMR_CIIR_IMHOUR         ((1 << 2))\n+/** Counter Increment Interrupt bit for day of month */\n+#define RTC_AMR_CIIR_IMDOM          ((1 << 3))\n+/** Counter Increment Interrupt bit for day of week */\n+#define RTC_AMR_CIIR_IMDOW          ((1 << 4))\n+/** Counter Increment Interrupt bit for day of year */\n+#define RTC_AMR_CIIR_IMDOY          ((1 << 5))\n+/** Counter Increment Interrupt bit for month */\n+#define RTC_AMR_CIIR_IMMON          ((1 << 6))\n+/** Counter Increment Interrupt bit for year */\n+#define RTC_AMR_CIIR_IMYEAR         ((1 << 7))\n+/** CIIR bit mask */\n+#define RTC_AMR_CIIR_BITMASK        ((0xFF))\n+\n+/*\n+ * @brief RTC_AUX register definitions\n+ */\n+/** RTC Oscillator Fail detect flag */\n+#define RTC_AUX_RTC_OSCF        ((1 << 4))\n+\n+/*\n+ * @brief RTC_AUXEN register definitions\n+ */\n+/** Oscillator Fail Detect interrupt enable*/\n+#define RTC_AUXEN_RTC_OSCFEN    ((1 << 4))\n+\n+/*\n+ * @brief Consolidated Time Register 0 definitions\n+ */\n+#define RTC_CTIME0_SECONDS_MASK     ((0x3F))\n+#define RTC_CTIME0_MINUTES_MASK     ((0x3F00))\n+#define RTC_CTIME0_HOURS_MASK       ((0x1F0000))\n+#define RTC_CTIME0_DOW_MASK         ((0x7000000))\n+\n+/*\n+ * @brief Consolidated Time Register 1 definitions\n+ */\n+#define RTC_CTIME1_DOM_MASK         ((0x1F))\n+#define RTC_CTIME1_MONTH_MASK       ((0xF00))\n+#define RTC_CTIME1_YEAR_MASK        ((0xFFF0000))\n+\n+/*\n+ * @brief Consolidated Time Register 2 definitions\n+ */\n+#define RTC_CTIME2_DOY_MASK         ((0xFFF))\n+\n+/*\n+ * @brief Time Counter Group and Alarm register group\n+ */\n+/** SEC register mask */\n+#define RTC_SEC_MASK            (0x0000003F)\n+/** MIN register mask */\n+#define RTC_MIN_MASK            (0x0000003F)\n+/** HOUR register mask */\n+#define RTC_HOUR_MASK           (0x0000001F)\n+/** DOM register mask */\n+#define RTC_DOM_MASK            (0x0000001F)\n+/** DOW register mask */\n+#define RTC_DOW_MASK            (0x00000007)\n+/** DOY register mask */\n+#define RTC_DOY_MASK            (0x000001FF)\n+/** MONTH register mask */\n+#define RTC_MONTH_MASK          (0x0000000F)\n+/** YEAR register mask */\n+#define RTC_YEAR_MASK           (0x00000FFF)\n+\n+#define RTC_SECOND_MAX      59 /*!< Maximum value of second */\n+#define RTC_MINUTE_MAX      59 /*!< Maximum value of minute*/\n+#define RTC_HOUR_MAX        23 /*!< Maximum value of hour*/\n+#define RTC_MONTH_MIN       1  /*!< Minimum value of month*/\n+#define RTC_MONTH_MAX       12 /*!< Maximum value of month*/\n+#define RTC_DAYOFMONTH_MIN  1  /*!< Minimum value of day of month*/\n+#define RTC_DAYOFMONTH_MAX  31 /*!< Maximum value of day of month*/\n+#define RTC_DAYOFWEEK_MAX   6  /*!< Maximum value of day of week*/\n+#define RTC_DAYOFYEAR_MIN   1  /*!< Minimum value of day of year*/\n+#define RTC_DAYOFYEAR_MAX   366    /*!< Maximum value of day of year*/\n+#define RTC_YEAR_MAX        4095/*!< Maximum value of year*/\n+\n+/*\n+ * @brief Calibration register\n+ */\n+/** Calibration value */\n+#define RTC_CALIBRATION_CALVAL_MASK     ((0x1FFFF))\n+/** Calibration direction */\n+#define RTC_CALIBRATION_LIBDIR          ((1 << 17))\n+/** Calibration max value */\n+#define RTC_CALIBRATION_MAX             ((0x20000))\n+/** Calibration definitions */\n+#define RTC_CALIB_DIR_FORWARD           ((uint8_t) (0))\n+#define RTC_CALIB_DIR_BACKWARD          ((uint8_t) (1))\n+\n+#if RTC_EV_SUPPORT\n+/*\n+ * @brief Event Monitor/Recorder Control register\n+ */\n+/**  Event Monitor/Recorder Control register mask */\n+#define RTC_ERCTRL_BITMASK          ((uint32_t) 0xC0F03C0F)\n+/** Enable event interrupt and wakeup */\n+#define RTC_ERCTRL_INTWAKE_EN       ((uint32_t) (1 << 0))\n+/** Enables automatically clearing the RTC general purpose registers when an event occurs*/\n+#define RTC_ERCTRL_GPCLEAR_EN       ((uint32_t) (1 << 1))\n+/** Select polarity for a channel event on the input pin.*/\n+#define RTC_ERCTRL_POL_NEGATIVE     (0)        /* Event as positive edge */\n+#define RTC_ERCTRL_POL_POSITIVE     ((uint32_t) (1 << 2))  /* Event as negative edge */\n+/** Enable event input.*/\n+#define RTC_ERCTRL_INPUT_EN         ((uint32_t) (1 << 3))\n+/** Configure a specific channel */\n+#define RTC_ERCTRL_CHANNEL_CONFIG_BITMASK(ch)   ((uint32_t) (0x0F << (10 * ch)))\n+#define RTC_ERCTRL_CHANNEL_CONFIG(ch, flag) ((uint32_t) (flag << (10 * ch)))\n+\n+/** Enable Event Monitor/Recorder and select its operating frequency.*/\n+#define RTC_ERCTRL_MODE_MASK                (((uint32_t) 3) << 30)\n+#define RTC_ERCTRL_MODE_CLK_DISABLE         (((uint32_t) 0) << 30)\n+#define RTC_ERCTRL_MODE_16HZ                (((uint32_t) 1) << 30)\n+#define RTC_ERCTRL_MODE_64HZ                (((uint32_t) 2) << 30)\n+#define RTC_ERCTRL_MODE_1KHZ                (((uint32_t) 3) << 30)\n+#define RTC_ERCTRL_MODE(n)                  (((uint32_t) n) << 30)\n+\n+/*\n+ * @brief Event Monitor/Recorder Status register\n+ */\n+/** Event Flag for a specific channel */\n+#define RTC_ERSTATUS_CHANNEL_EV(ch)               ((uint32_t) (1 << ch))       /* At least 1 event has occurred on a specific channel */\n+/** General purpose registers have been asynchronous cleared. */\n+#define RTC_ERSTATUS_GPCLEARED            ((uint32_t) (1 << 3))\n+/** An interrupt/wakeup request is pending.*/\n+#define RTC_ERSTATUS_WAKEUP            ((uint32_t) (((uint32_t) 1) << 31))\n+\n+/*\n+ * @brief Event Monitor/Recorder Counter register\n+ */\n+/** Value of the counter for Events occurred on a specific channel */\n+#define RTC_ER_COUNTER(ch, n)            ((uint32_t) ((n >> (8 * ch)) & 0x07))\n+\n+/*\n+ * @brief Event Monitor/Recorder TimeStamp register\n+ */\n+#define RTC_ER_TIMESTAMP_SEC(n)             ((uint32_t) (n & 0x3F))\n+#define RTC_ER_TIMESTAMP_MIN(n)             ((uint32_t) ((n >> 6) & 0x3F))\n+#define RTC_ER_TIMESTAMP_HOUR(n)            ((uint32_t) ((n >> 12) & 0x1F))\n+#define RTC_ER_TIMESTAMP_DOY(n)             ((uint32_t) ((n >> 17) & 0x1FF))\n+\n+/**\n+ * @brief Event Monitor/Recorder Mode definition\n+ */\n+typedef enum IP_RTC_EV_MODE {\n+   RTC_EV_MODE_DISABLE = 0,        /*!< Event Monitor/Recoder is disabled */\n+   RTC_EV_MODE_ENABLE_16HZ =  1,   /*!< Event Monitor/Recoder is enabled and use 16Hz sample clock for event input */\n+   RTC_EV_MODE_ENABLE_64HZ = 2,    /*!< Event Monitor/Recoder is enabled and use 64Hz sample clock for event input */\n+   RTC_EV_MODE_ENABLE_1KHZ = 3,    /*!< Event Monitor/Recoder is enabled and use 1kHz sample clock for event input */\n+   RTC_EV_MODE_LAST,\n+} RTC_EV_MODE_T;\n+\n+/**\n+ * @brief Event Monitor/Recorder Timestamp structure\n+ */\n+typedef struct {\n+   uint8_t     sec;        /*!<   Second */\n+   uint8_t     min;        /*!<   Minute */\n+   uint8_t     hour;       /*!<   Hour */\n+   uint16_t    dayofyear;  /*!<   Day of year */\n+} RTC_EV_TIMESTAMP_T;\n+\n+#endif /*RTC_EV_SUPPORT*/\n+\n+/**\n+ * @brief RTC enumeration\n+ */\n+\n+/** @brief RTC interrupt source */\n+typedef enum {\n+   RTC_INT_COUNTER_INCREASE = RTC_IRL_RTCCIF,  /*!<  Counter Increment Interrupt */\n+   RTC_INT_ALARM = RTC_IRL_RTCALF              /*!< The alarm interrupt */\n+} RTC_INT_OPT_T;\n+\n+typedef struct {\n+   uint32_t time[RTC_TIMETYPE_LAST];\n+} RTC_TIME_T;\n+\n+/**\n+ * @brief  Reset clock tick counter in the RTC peripheral\n+ * @param  pRTC    : RTC peripheral selected\n+ * @return None\n+ */\n+void Chip_RTC_ResetClockTickCounter(LPC_RTC_T *pRTC);\n+\n+/**\n+ * @brief  Start/Stop RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  NewState    : New State of this function, should be:\n+ *                         - ENABLE    :The time counters are enabled\n+ *                         - DISABLE   :The time counters are disabled\n+ * @return None\n+ */\n+void Chip_RTC_Enable(LPC_RTC_T *pRTC, FunctionalState NewState);\n+\n+/**\n+ * @brief  Enable/Disable Counter increment interrupt for a time type in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  cntrMask    : Or'ed bit values for time types (RTC_AMR_CIIR_IM*)\n+ * @param  NewState    : ENABLE or DISABLE\n+ * @return None\n+ */\n+void Chip_RTC_CntIncrIntConfig(LPC_RTC_T *pRTC, uint32_t cntrMask, FunctionalState NewState);\n+\n+/**\n+ * @brief  Enable/Disable Alarm interrupt for a time type in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  alarmMask   : Or'ed bit values for ALARM types (RTC_AMR_CIIR_IM*)\n+ * @param  NewState    : ENABLE or DISABLE\n+ * @return None\n+ */\n+void Chip_RTC_AlarmIntConfig(LPC_RTC_T *pRTC, uint32_t alarmMask, FunctionalState NewState);\n+\n+/**\n+ * @brief  Set current time value for a time type in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  Timetype    : time field index type to set\n+ * @param  TimeValue   : Value to palce in time field\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_SetTime(LPC_RTC_T *pRTC, RTC_TIMEINDEX_T Timetype, uint32_t TimeValue)\n+{\n+   pRTC->TIME[Timetype] = TimeValue;\n+}\n+\n+/**\n+ * @brief  Get current time value for a type time type\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  Timetype    : Time field index type to get\n+ * @return Value of time field according to specified time type\n+ */\n+STATIC INLINE uint32_t Chip_RTC_GetTime(LPC_RTC_T *pRTC, RTC_TIMEINDEX_T Timetype)\n+{\n+   return pRTC->TIME[Timetype];\n+}\n+\n+/**\n+ * @brief  Set full time in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  pFullTime   : Pointer to full time data\n+ * @return None\n+ */\n+void Chip_RTC_SetFullTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime);\n+\n+/**\n+ * @brief  Get full time from the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  pFullTime   : Pointer to full time record to fill\n+ * @return None\n+ */\n+void Chip_RTC_GetFullTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime);\n+\n+/**\n+ * @brief  Set alarm time value for a time type\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  Timetype    : Time index field to set\n+ * @param  ALValue     : Alarm time value to set\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_SetAlarmTime(LPC_RTC_T *pRTC, RTC_TIMEINDEX_T Timetype, uint32_t ALValue)\n+{\n+   pRTC->ALRM[Timetype] = ALValue;\n+}\n+\n+/**\n+ * @brief  Get alarm time value for a time type\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  Timetype    : Time index field to get\n+ * @return Value of Alarm time according to specified time type\n+ */\n+STATIC INLINE uint32_t Chip_RTC_GetAlarmTime(LPC_RTC_T *pRTC, RTC_TIMEINDEX_T Timetype)\n+{\n+   return pRTC->ALRM[Timetype];\n+}\n+\n+/**\n+ * @brief  Set full alarm time in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  pFullTime   : Pointer to full time record to set alarm\n+ * @return None\n+ */\n+void Chip_RTC_SetFullAlarmTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime);\n+\n+/**\n+ * @brief  Get full alarm time in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  pFullTime   : Pointer to full time record to fill\n+ * @return None\n+ */\n+void Chip_RTC_GetFullAlarmTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime);\n+\n+/**\n+ * @brief  Write value to General purpose registers\n+ * @param  pRegFile    : RegFile peripheral selected\n+ * @param  index       : General purpose register index\n+ * @param  value       : Value to write\n+ * @return None\n+ * @note   These General purpose registers can be used to store important\n+ * information when the main power supply is off. The value in these\n+ * registers is not affected by chip reset. These registers are\n+ * powered in the RTC power domain.\n+ */\n+STATIC INLINE void Chip_REGFILE_Write(LPC_REGFILE_T *pRegFile, uint8_t index, uint32_t value)\n+{\n+   pRegFile->REGFILE[index] = value;\n+}\n+\n+/**\n+ * @brief  Read value from General purpose registers\n+ * @param  pRegFile    : RegFile peripheral selected\n+ * @param  index       : General purpose register index\n+ * @return Read Value\n+ * @note   These General purpose registers can be used to store important\n+ * information when the main power supply is off. The value in these\n+ * registers is not affected by chip reset. These registers are\n+ * powered in the RTC power domain.\n+ */\n+STATIC INLINE uint32_t Chip_REGFILE_Read(LPC_REGFILE_T *pRegFile, uint8_t index)\n+{\n+   return pRegFile->REGFILE[index];\n+}\n+\n+/**\n+ * @brief  Enable/Disable calibration counter in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  NewState    : New State of this function, should be:\n+ *                         - ENABLE    :The calibration counter is enabled and counting\n+ *                         - DISABLE   :The calibration counter is disabled and reset to zero\n+ * @return None\n+ */\n+void Chip_RTC_CalibCounterCmd(LPC_RTC_T *pRTC, FunctionalState NewState);\n+\n+/**\n+ * @brief  Configures Calibration in the RTC peripheral\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  CalibValue  : Calibration value, should be in range from 0 to 131,072\n+ * @param  CalibDir    : Calibration Direction, should be:\n+ *                         - RTC_CALIB_DIR_FORWARD     :Forward calibration\n+ *                         - RTC_CALIB_DIR_BACKWARD    :Backward calibration\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_CalibConfig(LPC_RTC_T *pRTC, uint32_t CalibValue, uint8_t CalibDir)\n+{\n+   pRTC->CALIBRATION = ((CalibValue - 1) & RTC_CALIBRATION_CALVAL_MASK)\n+                       | ((CalibDir == RTC_CALIB_DIR_BACKWARD) ? RTC_CALIBRATION_LIBDIR : 0);\n+}\n+\n+/**\n+ * @brief  Clear specified Location interrupt pending in the RTC peripheral\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  IntType : Interrupt location type, should be:\n+ *                     - RTC_INT_COUNTER_INCREASE  :Clear Counter Increment Interrupt pending.\n+ *                     - RTC_INT_ALARM             :Clear alarm interrupt pending\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_ClearIntPending(LPC_RTC_T *pRTC, uint32_t IntType)\n+{\n+   pRTC->ILR = IntType;\n+}\n+\n+/**\n+ * @brief  Check whether if specified location interrupt in the RTC peripheral is set or not\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  IntType : Interrupt location type, should be:\n+ *                     - RTC_INT_COUNTER_INCREASE: Counter Increment Interrupt block generated an interrupt.\n+ *                     - RTC_INT_ALARM: Alarm generated an interrupt.\n+ * @return New state of specified Location interrupt in RTC peripheral, SET OR RESET\n+ */\n+STATIC INLINE IntStatus Chip_RTC_GetIntPending(LPC_RTC_T *pRTC, uint32_t IntType)\n+{\n+   return (pRTC->ILR & IntType) ? SET : RESET;\n+}\n+\n+#if RTC_EV_SUPPORT\n+\n+/**\n+ * @brief  Configure a specific event channel\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  ch      : Channel number\n+ * @param  flag    : Configuration flag\n+ * @return None\n+ * @note   flag is or-ed bit value of RTC_ERCTRL_INTWAKE_EN,RTC_ERCTRL_GPCLEAR_EN,\n+ *       RTC_ERCTRL_POL_POSITIVE and RTC_ERCTRL_INPUT_EN.\n+ */\n+STATIC INLINE void Chip_RTC_EV_Config(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, uint32_t flag)\n+{\n+   uint32_t temp;\n+\n+   temp = pRTC->ERCONTROL & (~(RTC_ERCTRL_CHANNEL_CONFIG_BITMASK(ch))) & RTC_ERCTRL_BITMASK;\n+   pRTC->ERCONTROL = temp | (RTC_ERCTRL_CHANNEL_CONFIG(ch, flag) & RTC_ERCTRL_BITMASK);\n+}\n+\n+/**\n+ * @brief  Enable/Disable and select clock frequency for Event Monitor/Recorder\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  mode    : selected mode\n+ * @return None\n+ */\n+STATIC INLINE void Chip_RTC_EV_SetMode(LPC_RTC_T *pRTC, RTC_EV_MODE_T mode)\n+{\n+   uint32_t temp;\n+\n+   temp = pRTC->ERCONTROL & (~RTC_ERCTRL_MODE_MASK) & RTC_ERCTRL_BITMASK;\n+   pRTC->ERCONTROL = temp | RTC_ERCTRL_MODE(mode);\n+}\n+\n+/**\n+ * @brief  Get Event Monitor/Recorder Status\n+ * @param  pRTC    : RTC peripheral selected\n+ * @return Or-ed bit value of RTC_ERSTATUS_GPCLEARED and RTC_ERSTATUS_WAKEUP\n+ */\n+STATIC INLINE uint8_t Chip_RTC_EV_GetStatus(LPC_RTC_T *pRTC)\n+{\n+   return pRTC->ERSTATUS & (RTC_ERSTATUS_GPCLEARED | RTC_ERSTATUS_WAKEUP);\n+}\n+\n+/**\n+ * @brief  Clear Event Monitor/Recorder Status\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  flag    : Or-ed bit value of RTC_ERSTATUS_GPCLEARED and RTC_ERSTATUS_WAKEUP\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_RTC_EV_ClearStatus(LPC_RTC_T *pRTC, uint32_t flag)\n+{\n+   pRTC->ERSTATUS = flag & (RTC_ERSTATUS_GPCLEARED | RTC_ERSTATUS_WAKEUP);\n+}\n+\n+/**\n+ * @brief  Get status of a specific event channel\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  ch      : Channel number\n+ * @return SET (At least 1 event occurred on the channel), RESET: no event occured.\n+ */\n+STATIC INLINE FlagStatus Chip_RTC_EV_GetChannelStatus(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch)\n+{\n+   return (pRTC->ERSTATUS & RTC_ERSTATUS_CHANNEL_EV(ch)) ? SET : RESET;\n+}\n+\n+/**\n+ * @brief  Clear status of a specific event channel\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  ch      : Channel number\n+ * @return Nothing.\n+ */\n+STATIC INLINE void Chip_RTC_EV_ClearChannelStatus(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch)\n+{\n+   pRTC->ERSTATUS = RTC_ERSTATUS_CHANNEL_EV(ch);\n+}\n+\n+/**\n+ * @brief  Get counter value of a specific event channel\n+ * @param  pRTC    : RTC peripheral selected\n+ * @param  ch      : Channel number\n+ * @return counter value\n+ */\n+STATIC INLINE uint8_t Chip_RTC_EV_GetCounter(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch)\n+{\n+   return RTC_ER_COUNTER(ch, pRTC->ERCOUNTERS);\n+}\n+\n+/**\n+ * @brief  Get first time stamp of a specific event channel\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  ch          : Channel number\n+ * @param  pTimeStamp  : pointer to Timestamp buffer\n+ * @return Nothing.\n+ */\n+void Chip_RTC_EV_GetFirstTimeStamp(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, RTC_EV_TIMESTAMP_T *pTimeStamp);\n+\n+/**\n+ * @brief  Get last time stamp of a specific event channel\n+ * @param  pRTC        : RTC peripheral selected\n+ * @param  ch          : Channel number\n+ * @param  pTimeStamp  : pointer to Timestamp buffer\n+ * @return Nothing.\n+ */\n+void Chip_RTC_EV_GetLastTimeStamp(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, RTC_EV_TIMESTAMP_T *pTimeStamp);\n+\n+#endif /*RTC_EV_SUPPORT*/\n+\n+/**\n+ * @brief  Initialize the RTC peripheral\n+ * @param  pRTC    : RTC peripheral selected\n+ * @return None\n+ */\n+void Chip_RTC_Init(LPC_RTC_T *pRTC);\n+\n+/**\n+ * @brief  De-initialize the RTC peripheral\n+ * @param  pRTC    : RTC peripheral selected\n+ * @return None\n+ */\n+void Chip_RTC_DeInit(LPC_RTC_T *pRTC);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __RTC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/sct_18xx_43xx.h ./lpc_chip_43xx/inc/sct_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/sct_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sct_18xx_43xx.h\t2017-02-27 21:03:17.020043463 -0300\n@@ -0,0 +1,423 @@\n+/*\n+ * @brief LPC18xx/43xx State Configurable Timer (SCT) driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SCT_18XX_43XX_H_\n+#define __SCT_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SCT_18XX_43XX CHIP: LPC18xx/43xx State Configurable Timer driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/*\n+ * @brief SCT Module configuration\n+ */\n+#define CONFIG_SCT_nEV   (16)          /*!< Number of events */\n+#define CONFIG_SCT_nRG   (16)          /*!< Number of match/compare registers */\n+#define CONFIG_SCT_nOU   (16)          /*!< Number of outputs */\n+\n+/**\n+ * @brief State Configurable Timer register block structure\n+ */\n+typedef struct {\n+   __IO  uint32_t CONFIG;              /*!< Configuration Register */\n+   union {\n+       __IO uint32_t CTRL_U;           /*!< Control Register */\n+       struct {\n+           __IO uint16_t CTRL_L;       /*!< Low control register */\n+           __IO uint16_t CTRL_H;       /*!< High control register */\n+       };\n+\n+   };\n+\n+   __IO uint16_t LIMIT_L;              /*!< limit register for counter L */\n+   __IO uint16_t LIMIT_H;              /*!< limit register for counter H */\n+   __IO uint16_t HALT_L;               /*!< halt register for counter L */\n+   __IO uint16_t HALT_H;               /*!< halt register for counter H */\n+   __IO uint16_t STOP_L;               /*!< stop register for counter L */\n+   __IO uint16_t STOP_H;               /*!< stop register for counter H */\n+   __IO uint16_t START_L;              /*!< start register for counter L */\n+   __IO uint16_t START_H;              /*!< start register for counter H */\n+   uint32_t RESERVED1[10];             /*!< 0x03C reserved */\n+   union {\n+       __IO uint32_t COUNT_U;          /*!< counter register */\n+       struct {\n+           __IO uint16_t COUNT_L;      /*!< counter register for counter L */\n+           __IO uint16_t COUNT_H;      /*!< counter register for counter H */\n+       };\n+\n+   };\n+\n+   __IO uint16_t STATE_L;              /*!< state register for counter L */\n+   __IO uint16_t STATE_H;              /*!< state register for counter H */\n+   __I  uint32_t INPUT;                /*!< input register */\n+   __IO uint16_t REGMODE_L;            /*!< match - capture registers mode register L */\n+   __IO uint16_t REGMODE_H;            /*!< match - capture registers mode register H */\n+   __IO uint32_t OUTPUT;               /*!< output register */\n+   __IO uint32_t OUTPUTDIRCTRL;        /*!< output counter direction Control Register */\n+   __IO uint32_t RES;                  /*!< conflict resolution register */\n+   __IO uint32_t DMA0REQUEST;          /*!< DMA0 Request Register */\n+   __IO uint32_t DMA1REQUEST;          /*!< DMA1 Request Register */\n+   uint32_t RESERVED2[35];\n+   __IO uint32_t EVEN;                 /*!< event enable register */\n+   __IO uint32_t EVFLAG;               /*!< event flag register */\n+   __IO uint32_t CONEN;                /*!< conflict enable register */\n+   __IO uint32_t CONFLAG;              /*!< conflict flag register */\n+   union {\n+       __IO union {                    /*!< ... Match / Capture value */\n+           uint32_t U;                 /*!<       SCTMATCH[i].U  Unified 32-bit register */\n+           struct {\n+               uint16_t L;             /*!<       SCTMATCH[i].L  Access to L value */\n+               uint16_t H;             /*!<       SCTMATCH[i].H  Access to H value */\n+           };\n+\n+       } MATCH[CONFIG_SCT_nRG];\n+\n+       __I union {\n+           uint32_t U;                 /*!<       SCTCAP[i].U  Unified 32-bit register */\n+           struct {\n+               uint16_t L;             /*!<       SCTCAP[i].L  Access to L value */\n+               uint16_t H;             /*!<       SCTCAP[i].H  Access to H value */\n+           };\n+\n+       } CAP[CONFIG_SCT_nRG];\n+\n+   };\n+\n+   uint32_t RESERVED3[32 - CONFIG_SCT_nRG];        /*!< ...-0x17C reserved */\n+   union {\n+       __IO uint16_t MATCH_L[CONFIG_SCT_nRG];      /*!< 0x180-... Match Value L counter */\n+       __I  uint16_t CAP_L[CONFIG_SCT_nRG];        /*!< 0x180-... Capture Value L counter */\n+   };\n+\n+   uint16_t RESERVED4[32 - CONFIG_SCT_nRG];        /*!< ...-0x1BE reserved */\n+   union {\n+       __IO uint16_t MATCH_H[CONFIG_SCT_nRG];      /*!< 0x1C0-... Match Value H counter */\n+       __I  uint16_t CAP_H[CONFIG_SCT_nRG];        /*!< 0x1C0-... Capture Value H counter */\n+   };\n+\n+   uint16_t RESERVED5[32 - CONFIG_SCT_nRG];        /*!< ...-0x1FE reserved */\n+   union {\n+       __IO union {                    /*!< 0x200-... Match Reload / Capture Control value */\n+           uint32_t U;                 /*!<       SCTMATCHREL[i].U  Unified 32-bit register */\n+           struct {\n+               uint16_t L;             /*!<       SCTMATCHREL[i].L  Access to L value */\n+               uint16_t H;             /*!<       SCTMATCHREL[i].H  Access to H value */\n+           };\n+\n+       } MATCHREL[CONFIG_SCT_nRG];\n+\n+       __IO union {\n+           uint32_t U;                 /*!<       SCTCAPCTRL[i].U  Unified 32-bit register */\n+           struct {\n+               uint16_t L;             /*!<       SCTCAPCTRL[i].L  Access to L value */\n+               uint16_t H;             /*!<       SCTCAPCTRL[i].H  Access to H value */\n+           };\n+\n+       } CAPCTRL[CONFIG_SCT_nRG];\n+\n+   };\n+\n+   uint32_t RESERVED6[32 - CONFIG_SCT_nRG];        /*!< ...-0x27C reserved */\n+   union {\n+       __IO uint16_t MATCHREL_L[CONFIG_SCT_nRG];   /*!< 0x280-... Match Reload value L counter */\n+       __IO uint16_t CAPCTRL_L[CONFIG_SCT_nRG];    /*!< 0x280-... Capture Control value L counter */\n+   };\n+\n+   uint16_t RESERVED7[32 - CONFIG_SCT_nRG];        /*!< ...-0x2BE reserved */\n+   union {\n+       __IO uint16_t MATCHREL_H[CONFIG_SCT_nRG];   /*!< 0x2C0-... Match Reload value H counter */\n+       __IO uint16_t CAPCTRL_H[CONFIG_SCT_nRG];    /*!< 0x2C0-... Capture Control value H counter */\n+   };\n+\n+   uint16_t RESERVED8[32 - CONFIG_SCT_nRG];        /*!< ...-0x2FE reserved */\n+   __IO struct {                       /*!< 0x300-0x3FC  SCTEVENT[i].STATE / SCTEVENT[i].CTRL*/\n+       uint32_t STATE;                 /*!< Event State Register */\n+       uint32_t CTRL;                  /*!< Event Control Register */\n+   } EVENT[CONFIG_SCT_nEV];\n+\n+   uint32_t RESERVED9[128 - 2 * CONFIG_SCT_nEV];   /*!< ...-0x4FC reserved */\n+   __IO struct {                       /*!< 0x500-0x57C  SCTOUT[i].SET / SCTOUT[i].CLR */\n+       uint32_t SET;                   /*!< Output n Set Register */\n+       uint32_t CLR;                   /*!< Output n Clear Register */\n+   } OUT[CONFIG_SCT_nOU];\n+\n+   uint32_t RESERVED10[191 - 2 * CONFIG_SCT_nOU];  /*!< ...-0x7F8 reserved */\n+   __I  uint32_t MODULECONTENT;        /*!< 0x7FC Module Content */\n+} LPC_SCT_T;\n+\n+/*\n+ * @brief Macro defines for SCT configuration register\n+ */\n+#define SCT_CONFIG_16BIT_COUNTER        0x00000000 /*!< Operate as 2 16-bit counters */\n+#define SCT_CONFIG_32BIT_COUNTER        0x00000001 /*!< Operate as 1 32-bit counter */\n+\n+#define SCT_CONFIG_CLKMODE_BUSCLK       (0x0 << 1) /*!< Bus clock */\n+#define SCT_CONFIG_CLKMODE_SCTCLK       (0x1 << 1) /*!< SCT clock */\n+#define SCT_CONFIG_CLKMODE_INCLK        (0x2 << 1) /*!< Input clock selected in CLKSEL field */\n+#define SCT_CONFIG_CLKMODE_INEDGECLK    (0x3 << 1) /*!< Input clock edge selected in CLKSEL field */\n+\n+#define SCT_CONFIG_NORELOADL_U          (0x1 << 7) /*!< Operate as 1 32-bit counter */\n+#define SCT_CONFIG_NORELOADH            (0x1 << 8) /*!< Operate as 1 32-bit counter */\n+#define SCT_CONFIG_AUTOLIMIT_L          (0x1 << 17) /*!< Limits counter(L) based on MATCH0 */\n+#define SCT_CONFIG_AUTOLIMIT_H          (0x1 << 18) /*!< Limits counter(L) based on MATCH0 */\n+\n+/*\n+ * @brief Macro defines for SCT control register\n+ */\n+#define COUNTUP_TO_LIMIT_THEN_CLEAR_TO_ZERO     0          /*!< Direction for low or unified counter */\n+#define COUNTUP_TO LIMIT_THEN_COUNTDOWN_TO_ZERO 1\n+\n+#define SCT_CTRL_STOP_L                 (1 << 1)               /*!< Stop low counter */\n+#define SCT_CTRL_HALT_L                 (1 << 2)               /*!< Halt low counter */\n+#define SCT_CTRL_CLRCTR_L               (1 << 3)               /*!< Clear low or unified counter */\n+#define SCT_CTRL_BIDIR_L(x)             (((x) & 0x01) << 4)        /*!< Bidirectional bit */\n+#define SCT_CTRL_PRE_L(x)               (((x) & 0xFF) << 5)        /*!< Prescale clock for low or unified counter */\n+\n+#define COUNTUP_TO_LIMIT_THEN_CLEAR_TO_ZERO     0          /*!< Direction for high counter */\n+#define COUNTUP_TO LIMIT_THEN_COUNTDOWN_TO_ZERO 1\n+#define SCT_CTRL_STOP_H                 (1 << 17)              /*!< Stop high counter */\n+#define SCT_CTRL_HALT_H                 (1 << 18)              /*!< Halt high counter */\n+#define SCT_CTRL_CLRCTR_H               (1 << 19)              /*!< Clear high counter */\n+#define SCT_CTRL_BIDIR_H(x)             (((x) & 0x01) << 20)\n+#define SCT_CTRL_PRE_H(x)               (((x) & 0xFF) << 21)   /*!< Prescale clock for high counter */\n+\n+/*\n+ * @brief Macro defines for SCT Conflict resolution register\n+ */\n+#define SCT_RES_NOCHANGE                (0)\n+#define SCT_RES_SET_OUTPUT              (1)\n+#define SCT_RES_CLEAR_OUTPUT            (2)\n+#define SCT_RES_TOGGLE_OUTPUT           (3)\n+\n+/**\n+ * SCT Match register values enum\n+ */\n+typedef enum CHIP_SCT_MATCH_REG {\n+   SCT_MATCH_0 = 0,    /*!< SCT Match register 0 */\n+   SCT_MATCH_1 = 1,    /*!< SCT Match register 1 */\n+   SCT_MATCH_2 = 2,    /*!< SCT Match register 2 */\n+   SCT_MATCH_3 = 3,    /*!< SCT Match register 3 */\n+   SCT_MATCH_4 = 4     /*!< SCT Match register 4 */\n+} CHIP_SCT_MATCH_REG_T;\n+\n+/**\n+ * SCT Event values enum\n+ */\n+typedef enum CHIP_SCT_EVENT {\n+   SCT_EVT_0  = (1 << 0),  /*!< Event 0 */\n+   SCT_EVT_1  = (1 << 1),  /*!< Event 1 */\n+   SCT_EVT_2  = (1 << 2),  /*!< Event 2 */\n+   SCT_EVT_3  = (1 << 3),  /*!< Event 3 */\n+   SCT_EVT_4  = (1 << 4)   /*!< Event 4 */\n+} CHIP_SCT_EVENT_T;\n+\n+/**\n+ * @brief  Configures the State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  value   : The 32-bit CONFIG register value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_Config(LPC_SCT_T *pSCT, uint32_t value)\n+{\n+   pSCT->CONFIG = value;\n+}\n+\n+/**\n+ * @brief  Set or Clear the Control register\n+ * @param  pSCT            : Pointer to SCT register block\n+ * @param  value           : SCT Control register value\n+ * @param  ena             : ENABLE - To set the fields specified by value\n+ *                          : DISABLE - To clear the field specified by value\n+ * @return Nothing\n+ * Set or clear the control register bits as specified by the \\a value\n+ * parameter. If \\a ena is set to ENABLE, the mentioned register fields\n+ * will be set. If \\a ena is set to DISABLE, the mentioned register\n+ * fields will be cleared\n+ */\n+void Chip_SCT_SetClrControl(LPC_SCT_T *pSCT, uint32_t value, FunctionalState ena);\n+\n+/**\n+ * @brief  Set the conflict resolution\n+ * @param  pSCT            : Pointer to SCT register block\n+ * @param  outnum          : Output number\n+ * @param  value           : Output value\n+ *                          - SCT_RES_NOCHANGE     :No change\n+ *                         - SCT_RES_SET_OUTPUT    :Set output\n+ *                         - SCT_RES_CLEAR_OUTPUT  :Clear output\n+ *                         - SCT_RES_TOGGLE_OUTPUT :Toggle output\n+ *                          : SCT_RES_NOCHANGE\n+ *                          : DISABLE - To clear the field specified by value\n+ * @return Nothing\n+ * Set conflict resolution for the output \\a outnum\n+ */\n+void Chip_SCT_SetConflictResolution(LPC_SCT_T *pSCT, uint8_t outnum, uint8_t value);\n+\n+/**\n+ * @brief  Set unified count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  count   : The 32-bit count value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetCount(LPC_SCT_T *pSCT, uint32_t count)\n+{\n+   pSCT->COUNT_U = count;\n+}\n+\n+/**\n+ * @brief  Set lower count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  count   : The 16-bit count value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetCountL(LPC_SCT_T *pSCT, uint16_t count)\n+{\n+   pSCT->COUNT_L = count;\n+}\n+\n+/**\n+ * @brief  Set higher count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  count   : The 16-bit count value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetCountH(LPC_SCT_T *pSCT, uint16_t count)\n+{\n+   pSCT->COUNT_H = count;\n+}\n+\n+/**\n+ * @brief  Set unified match count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  n       : Match register value\n+ * @param  value   : The 32-bit match count value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetMatchCount(LPC_SCT_T *pSCT, CHIP_SCT_MATCH_REG_T n, uint32_t value)\n+{\n+   pSCT->MATCH[n].U = value;\n+}\n+\n+/**\n+ * @brief  Set control register in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  value   : Value (ORed value of SCT_CTRL_* bits)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetControl(LPC_SCT_T *pSCT, uint32_t value)\n+{\n+   pSCT->CTRL_U |= value;\n+}\n+\n+/**\n+ * @brief  Clear control register in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  value   : Value (ORed value of SCT_CTRL_* bits)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_ClearControl(LPC_SCT_T *pSCT, uint32_t value)\n+{\n+   pSCT->CTRL_U &= ~(value);\n+}\n+\n+/**\n+ * @brief  Set unified match reload count value in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  n       : Match register value\n+ * @param  value   : The 32-bit match count reload value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_SetMatchReload(LPC_SCT_T *pSCT, CHIP_SCT_MATCH_REG_T n, uint32_t value)\n+{\n+   pSCT->MATCHREL[n].U = value;\n+}\n+\n+/**\n+ * @brief  Enable the interrupt for the specified event in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  evt     : Event value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_EnableEventInt(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt)\n+{\n+   pSCT->EVEN |= evt;\n+}\n+\n+/**\n+ * @brief  Disable the interrupt for the specified event in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  evt     : Event value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_DisableEventInt(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt)\n+{\n+   pSCT->EVEN &= ~(evt);\n+}\n+\n+/**\n+ * @brief  Clear the specified event flag in State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  evt     : Event value\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCT_ClearEventFlag(LPC_SCT_T *pSCT, CHIP_SCT_EVENT_T evt)\n+{\n+   pSCT->EVFLAG |= evt;\n+}\n+\n+/**\n+ * @brief  Initializes the State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SCT_Init(LPC_SCT_T *pSCT);\n+\n+/**\n+ * @brief  Deinitializes the State Configurable Timer\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SCT_DeInit(LPC_SCT_T *pSCT);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+\n+#endif\n+\n+#endif /* __SCT_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/sct_pwm_18xx_43xx.h ./lpc_chip_43xx/inc/sct_pwm_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/sct_pwm_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sct_pwm_18xx_43xx.h\t2017-02-27 21:03:17.020043463 -0300\n@@ -0,0 +1,178 @@\n+/*\n+ * @brief LPC18xx_43xx State Configurable Timer (SCT/PWM) Chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SCT_PWM_18XX_43XX_H_\n+#define __SCT_PWM_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SCT_PWM_18XX_43XX CHIP: LPC18XX_43XX State Configurable Timer PWM driver\n+ *\n+ * For more information on how to use the driver please visit the FAQ page at\n+ * <a href=\"http://www.lpcware.com/content/faq/how-use-sct-standard-pwm-using-lpcopen\">\n+ * www.lpcware.com</a>\n+ *\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Get number of ticks per PWM cycle\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return Number ot ticks that will be counted per cycle\n+ * @note   Return value of this function will be vaild only\n+ *          after calling Chip_SCTPWM_SetRate()\n+ */\n+STATIC INLINE uint32_t Chip_SCTPWM_GetTicksPerCycle(LPC_SCT_T *pSCT)\n+{\n+   return pSCT->MATCHREL[0].U;\n+}\n+\n+/**\n+ * @brief  Converts a percentage to ticks\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  percent : Percentage to convert (0 - 100)\n+ * @return Number ot ticks corresponding to given percentage\n+ * @note   Do not use this function when using very low\n+ *          pwm rate (like 100Hz or less), on a chip that has\n+ *          very high frequency as the calculation might\n+ *          cause integer overflow\n+ */\n+STATIC INLINE uint32_t Chip_SCTPWM_PercentageToTicks(LPC_SCT_T *pSCT, uint8_t percent)\n+{\n+   return (Chip_SCTPWM_GetTicksPerCycle(pSCT) * percent) / 100;\n+}\n+\n+/**\n+ * @brief  Get number of ticks on per PWM cycle\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  index   : Index of the PWM 1 to N (see notes)\n+ * @return Number ot ticks for which the output will be ON per cycle\n+ * @note   @a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum.\n+ */\n+STATIC INLINE uint32_t Chip_SCTPWM_GetDutyCycle(LPC_SCT_T *pSCT, uint8_t index)\n+{\n+   return pSCT->MATCHREL[index].U;\n+}\n+\n+/**\n+ * @brief  Get number of ticks on per PWM cycle\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  index   : Index of the PWM 1 to N (see notes)\n+ * @param  ticks   : Number of ticks the output should say ON\n+ * @return None\n+ * @note   @a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum. The new duty cycle will be effective only\n+ *          after completion of current PWM cycle.\n+ */\n+STATIC INLINE void Chip_SCTPWM_SetDutyCycle(LPC_SCT_T *pSCT, uint8_t index, uint32_t ticks)\n+{\n+   Chip_SCT_SetMatchReload(pSCT, (CHIP_SCT_MATCH_REG_T)index, ticks);\n+}\n+\n+/**\n+ * @brief  Initialize the SCT/PWM clock and reset\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SCTPWM_Init(LPC_SCT_T *pSCT)\n+{\n+   Chip_SCT_Init(pSCT);\n+}\n+\n+/**\n+ * @brief  Start the SCT PWM\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return None\n+ * @note   This function must be called after all the\n+ *             configuration is completed. Do not call Chip_SCTPWM_SetRate()\n+ *             or Chip_SCTPWM_SetOutPin() after the SCT/PWM is started. Use\n+ *             Chip_SCTPWM_Stop() to stop the SCT/PWM before reconfiguring,\n+ *             Chip_SCTPWM_SetDutyCycle() can be called when the SCT/PWM is\n+ *             running to change the DutyCycle.\n+ */\n+STATIC INLINE void Chip_SCTPWM_Start(LPC_SCT_T *pSCT)\n+{\n+   Chip_SCT_ClearControl(pSCT, SCT_CTRL_HALT_L | SCT_CTRL_HALT_H);\n+}\n+\n+/**\n+ * @brief  Stop the SCT PWM\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SCTPWM_Stop(LPC_SCT_T *pSCT)\n+{\n+   /* Stop SCT */\n+   Chip_SCT_SetControl(pSCT, SCT_CTRL_HALT_L | SCT_CTRL_HALT_H);\n+\n+   /* Clear the counter */\n+   Chip_SCT_SetControl(pSCT, SCT_CTRL_CLRCTR_L | SCT_CTRL_CLRCTR_H);\n+}\n+\n+/**\n+ * @brief  Sets the frequency of the generated PWM wave\n+ * @param  pSCT    : The base of SCT peripheral on the chip\n+ * @param  freq    : Frequency in Hz\n+ * @return None\n+ */\n+void Chip_SCTPWM_SetRate(LPC_SCT_T *pSCT, uint32_t freq);\n+\n+/**\n+ * @brief  Setup the OUTPUT pin and associate it with an index\n+ * @param  pSCT    : The base of the SCT peripheral on the chip\n+ * @param  index   : Index of PWM 1 to N (see notes)\n+ * @param  pin     : COUT pin to be associated with the index\n+ * @return None\n+ * @note   @a index will be 1 to N where N is the \"Number of\n+ *          match registers available in the SCT - 1\" or\n+ *          \"Number of OUTPUT pins available in the SCT\" whichever\n+ *          is minimum.\n+ */\n+void Chip_SCTPWM_SetOutPin(LPC_SCT_T *pSCT, uint8_t index, uint8_t pin);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+\n+#endif\n+\n+#endif /* __SCT_PWM_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/scu_18xx_43xx.h ./lpc_chip_43xx/inc/scu_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/scu_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/scu_18xx_43xx.h\t2017-02-27 21:03:17.020043463 -0300\n@@ -0,0 +1,247 @@\n+/*\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SCU_18XX_43XX_H_\n+#define __SCU_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SCU_18XX_43XX CHIP: LPC18xx/43xx SCU Driver (configures pin functions)\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+\n+/**\n+ * @brief Array of pin definitions passed to Chip_SCU_SetPinMuxing() must be in this format\n+ */\n+typedef struct {\n+   uint8_t pingrp;     /* Pin group */\n+   uint8_t pinnum;     /* Pin number */\n+   uint16_t modefunc;  /* Pin mode and function for SCU */\n+} PINMUX_GRP_T;\n+\n+/**\n+ * @brief System Control Unit register block\n+ */\n+typedef struct {\n+   __IO uint32_t  SFSP[16][32];\n+   __I  uint32_t  RESERVED0[256];\n+   __IO uint32_t  SFSCLK[4];           /*!< Pin configuration register for pins CLK0-3 */\n+   __I  uint32_t  RESERVED16[28];\n+   __IO uint32_t  SFSUSB;              /*!< Pin configuration register for USB */\n+   __IO uint32_t  SFSI2C0;             /*!< Pin configuration register for I2C0-bus pins */\n+   __IO uint32_t  ENAIO[3];            /*!< Analog function select registerS */\n+   __I  uint32_t  RESERVED17[27];\n+   __IO uint32_t  EMCDELAYCLK;         /*!< EMC clock delay register */\n+   __I  uint32_t  RESERVED18[63];\n+   __IO uint32_t  PINTSEL[2];          /*!< Pin interrupt select register for pin int 0 to 3 index 0, 4 to 7 index 1. */\n+} LPC_SCU_T;\n+\n+/**\n+ * SCU function and mode selection definitions\n+ * See the User Manual for specific modes and functions supoprted by the\n+ * various LPC18xx/43xx devices. Functionality can vary per device.\n+ */\n+#define SCU_MODE_PULLUP            (0x0 << 3)      /*!< Enable pull-up resistor at pad */\n+#define SCU_MODE_REPEATER          (0x1 << 3)      /*!< Enable pull-down and pull-up resistor at resistor at pad (repeater mode) */\n+#define SCU_MODE_INACT             (0x2 << 3)      /*!< Disable pull-down and pull-up resistor at resistor at pad */\n+#define SCU_MODE_PULLDOWN          (0x3 << 3)      /*!< Enable pull-down resistor at pad */\n+#define SCU_MODE_HIGHSPEEDSLEW_EN  (0x1 << 5)      /*!< Enable high-speed slew */\n+#define SCU_MODE_INBUFF_EN         (0x1 << 6)      /*!< Enable Input buffer */\n+#define SCU_MODE_ZIF_DIS           (0x1 << 7)      /*!< Disable input glitch filter */\n+#define SCU_MODE_4MA_DRIVESTR      (0x0 << 8)      /*!< Normal drive: 4mA drive strength */\n+#define SCU_MODE_8MA_DRIVESTR      (0x1 << 8)      /*!< Medium drive: 8mA drive strength */\n+#define SCU_MODE_14MA_DRIVESTR     (0x2 << 8)      /*!< High drive: 14mA drive strength */\n+#define SCU_MODE_20MA_DRIVESTR     (0x3 << 8)      /*!< Ultra high- drive: 20mA drive strength */\n+#define SCU_MODE_FUNC0             0x0             /*!< Selects pin function 0 */\n+#define SCU_MODE_FUNC1             0x1             /*!< Selects pin function 1 */\n+#define SCU_MODE_FUNC2             0x2             /*!< Selects pin function 2 */\n+#define SCU_MODE_FUNC3             0x3             /*!< Selects pin function 3 */\n+#define SCU_MODE_FUNC4             0x4             /*!< Selects pin function 4 */\n+#define SCU_MODE_FUNC5             0x5             /*!< Selects pin function 5 */\n+#define SCU_MODE_FUNC6             0x6             /*!< Selects pin function 6 */\n+#define SCU_MODE_FUNC7             0x7             /*!< Selects pin function 7 */\n+#define SCU_PINIO_FAST             (SCU_MODE_INACT | SCU_MODE_HIGHSPEEDSLEW_EN | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS)\n+\n+/**\n+ * SCU function and mode selection definitions (old)\n+ * For backwards compatibility.\n+ */\n+#define MD_PUP                     (0x0 << 3)      /** Enable pull-up resistor at pad */\n+#define MD_BUK                     (0x1 << 3)      /** Enable pull-down and pull-up resistor at resistor at pad (repeater mode) */\n+#define MD_PLN                     (0x2 << 3)      /** Disable pull-down and pull-up resistor at resistor at pad */\n+#define MD_PDN                     (0x3 << 3)      /** Enable pull-down resistor at pad */\n+#define MD_EHS                     (0x1 << 5)      /** Enable fast slew rate */\n+#define MD_EZI                     (0x1 << 6)      /** Input buffer enable */\n+#define MD_ZI                      (0x1 << 7)      /** Disable input glitch filter */\n+#define MD_EHD0                        (0x1 << 8)      /** EHD driver strength low bit */\n+#define MD_EHD1                        (0x1 << 8)      /** EHD driver strength high bit */\n+#define MD_PLN_FAST                    (MD_PLN | MD_EZI | MD_ZI | MD_EHS)\n+#define I2C0_STANDARD_FAST_MODE        (1 << 3 | 1 << 11)  /** Pin configuration for STANDARD/FAST mode I2C */\n+#define I2C0_FAST_MODE_PLUS            (2 << 1 | 1 << 3 | 1 << 7 | 1 << 10 | 1 << 11)  /** Pin configuration for Fast-mode Plus I2C */\n+#define FUNC0                      0x0             /** Pin function 0 */\n+#define FUNC1                      0x1             /** Pin function 1 */\n+#define FUNC2                      0x2             /** Pin function 2 */\n+#define FUNC3                      0x3             /** Pin function 3 */\n+#define FUNC4                      0x4             /** Pin function 4 */\n+#define FUNC5                      0x5             /** Pin function 5 */\n+#define FUNC6                      0x6             /** Pin function 6 */\n+#define FUNC7                      0x7             /** Pin function 7 */\n+\n+#define PORT_OFFSET                    0x80            /** Port offset definition */\n+#define PIN_OFFSET                 0x04            /** Pin offset definition */\n+\n+/** Returns the SFSP register address in the SCU for a pin and port, recommend using (*(volatile int *) &LPC_SCU->SFSP[po][pi];) */\n+#define LPC_SCU_PIN(LPC_SCU_BASE, po, pi) (*(volatile int *) ((LPC_SCU_BASE) + ((po) * 0x80) + ((pi) * 0x4))\n+\n+/** Returns the address in the SCU for a SFSCLK clock register, recommend using (*(volatile int *) &LPC_SCU->SFSCLK[c];) */\n+#define LPC_SCU_CLK(LPC_SCU_BASE, c) (*(volatile int *) ((LPC_SCU_BASE) +0xC00 + ((c) * 0x4)))\n+\n+/**\n+ * @brief  Sets I/O Control pin mux\n+ * @param  port        : Port number, should be: 0..15\n+ * @param  pin         : Pin number, should be: 0..31\n+ * @param  modefunc    : OR'ed values or type SCU_MODE_*\n+ * @return Nothing\n+ * @note   Do not use for clock pins (SFSCLK0 .. SFSCLK4). Use\n+ * Chip_SCU_ClockPinMux() function for SFSCLKx clock pins.\n+ */\n+STATIC INLINE void Chip_SCU_PinMuxSet(uint8_t port, uint8_t pin, uint16_t modefunc)\n+{\n+   LPC_SCU->SFSP[port][pin] = modefunc;\n+}\n+\n+/**\n+ * @brief  Configure pin function\n+ * @param  port    : Port number, should be: 0..15\n+ * @param  pin     : Pin number, should be: 0..31\n+ * @param  mode    : OR'ed values or type SCU_MODE_*\n+ * @param  func    : Pin function, value of type SCU_MODE_FUNC0 to SCU_MODE_FUNC7\n+ * @return Nothing\n+ * @note   Do not use for clock pins (SFSCLK0 .. SFSCLK4). Use\n+ * Chip_SCU_ClockPinMux() function for SFSCLKx clock pins.\n+ */\n+STATIC INLINE void Chip_SCU_PinMux(uint8_t port, uint8_t pin, uint16_t mode, uint8_t func)\n+{\n+   Chip_SCU_PinMuxSet(port, pin, (mode | (uint16_t) func));\n+}\n+\n+/**\n+ * @brief  Configure clock pin function (pins SFSCLKx)\n+ * @param  clknum  : Clock pin number, should be: 0..3\n+ * @param  modefunc    : OR'ed values or type SCU_MODE_*\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_ClockPinMuxSet(uint8_t clknum, uint16_t modefunc)\n+{\n+   LPC_SCU->SFSCLK[clknum] = (uint32_t) modefunc;\n+}\n+\n+/**\n+ * @brief  Configure clock pin function (pins SFSCLKx)\n+ * @param  clknum  : Clock pin number, should be: 0..3\n+ * @param  mode    : OR'ed values or type SCU_MODE_*\n+ * @param  func    : Pin function, value of type SCU_MODE_FUNC0 to SCU_MODE_FUNC7\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_ClockPinMux(uint8_t clknum, uint16_t mode, uint8_t func)\n+{\n+   LPC_SCU->SFSCLK[clknum] = ((uint32_t) mode | (uint32_t) func);\n+}\n+\n+/**\n+ * @brief  GPIO Interrupt Pin Select\n+ * @param  PortSel : GPIO PINTSEL interrupt, should be: 0 to 7\n+ * @param  PortNum : GPIO port number interrupt, should be: 0 to 7\n+ * @param  PinNum  : GPIO pin number Interrupt , should be: 0 to 31\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_GPIOIntPinSel(uint8_t PortSel, uint8_t PortNum, uint8_t PinNum)\n+{\n+   int32_t of = (PortSel & 3) << 3;\n+   uint32_t val = (((PortNum & 0x7) << 5) | (PinNum & 0x1F)) << of;\n+   LPC_SCU->PINTSEL[PortSel >> 2] = (LPC_SCU->PINTSEL[PortSel >> 2] & ~(0xFF << of)) | val;\n+}\n+\n+/**\n+ * @brief  I2C Pin Configuration\n+ * @param  I2C0Mode    : I2C0 mode, should be:\n+ *                  - I2C0_STANDARD_FAST_MODE: Standard/Fast mode transmit\n+ *                  - I2C0_FAST_MODE_PLUS: Fast-mode Plus transmit\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_I2C0PinConfig(uint32_t I2C0Mode)\n+{\n+   LPC_SCU->SFSI2C0 = I2C0Mode;\n+}\n+\n+/**\n+ * @brief  ADC Pin Configuration\n+ * @param  ADC_ID  : ADC number\n+ * @param  channel : ADC channel\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_ADC_Channel_Config(uint32_t ADC_ID, uint8_t channel)\n+{\n+   LPC_SCU->ENAIO[ADC_ID] |= 1UL << channel;\n+}\n+\n+/**\n+ * @brief  DAC Pin Configuration\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_DAC_Analog_Config(void)\n+{\n+   /*Enable analog function DAC on pin P4_4*/\n+   LPC_SCU->ENAIO[2] |= 1;\n+}\n+\n+/**\n+ * @brief  Set all I/O Control pin muxing\n+ * @param  pinArray    : Pointer to array of pin mux selections\n+ * @param  arrayLength : Number of entries in pinArray\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SCU_SetPinMuxing(const PINMUX_GRP_T *pinArray, uint32_t arrayLength)\n+{\n+   uint32_t ix;\n+   for (ix = 0; ix < arrayLength; ix++ ) {\n+       Chip_SCU_PinMuxSet(pinArray[ix].pingrp, pinArray[ix].pinnum, pinArray[ix].modefunc);\n+   }\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SCU_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/sdif_18xx_43xx.h ./lpc_chip_43xx/inc/sdif_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/sdif_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sdif_18xx_43xx.h\t2017-02-27 21:03:17.020043463 -0300\n@@ -0,0 +1,479 @@\n+/*\n+ * @brief LPC18xx/43xx SD/SDIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SDIF_18XX_43XX_H_\n+#define __SDIF_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SDIF_18XX_43XX CHIP: LPC18xx/43xx SD/SDIO driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief SD/MMC & SDIO register block structure\n+ */\n+typedef struct {               /*!< SDMMC Structure        */\n+   __IO uint32_t  CTRL;        /*!< Control Register       */\n+   __IO uint32_t  PWREN;       /*!< Power Enable Register  */\n+   __IO uint32_t  CLKDIV;      /*!< Clock Divider Register */\n+   __IO uint32_t  CLKSRC;      /*!< SD Clock Source Register */\n+   __IO uint32_t  CLKENA;      /*!< Clock Enable Register  */\n+   __IO uint32_t  TMOUT;       /*!< Timeout Register       */\n+   __IO uint32_t  CTYPE;       /*!< Card Type Register     */\n+   __IO uint32_t  BLKSIZ;      /*!< Block Size Register    */\n+   __IO uint32_t  BYTCNT;      /*!< Byte Count Register    */\n+   __IO uint32_t  INTMASK;     /*!< Interrupt Mask Register */\n+   __IO uint32_t  CMDARG;      /*!< Command Argument Register */\n+   __IO uint32_t  CMD;         /*!< Command Register       */\n+   __I  uint32_t  RESP0;       /*!< Response Register 0    */\n+   __I  uint32_t  RESP1;       /*!< Response Register 1    */\n+   __I  uint32_t  RESP2;       /*!< Response Register 2    */\n+   __I  uint32_t  RESP3;       /*!< Response Register 3    */\n+   __I  uint32_t  MINTSTS;     /*!< Masked Interrupt Status Register */\n+   __IO uint32_t  RINTSTS;     /*!< Raw Interrupt Status Register */\n+   __I  uint32_t  STATUS;      /*!< Status Register        */\n+   __IO uint32_t  FIFOTH;      /*!< FIFO Threshold Watermark Register */\n+   __I  uint32_t  CDETECT;     /*!< Card Detect Register   */\n+   __I  uint32_t  WRTPRT;      /*!< Write Protect Register */\n+   __IO uint32_t  GPIO;        /*!< General Purpose Input/Output Register */\n+   __I  uint32_t  TCBCNT;      /*!< Transferred CIU Card Byte Count Register */\n+   __I  uint32_t  TBBCNT;      /*!< Transferred Host to BIU-FIFO Byte Count Register */\n+   __IO uint32_t  DEBNCE;      /*!< Debounce Count Register */\n+   __IO uint32_t  USRID;       /*!< User ID Register       */\n+   __I  uint32_t  VERID;       /*!< Version ID Register    */\n+   __I  uint32_t  RESERVED0;\n+   __IO uint32_t  UHS_REG;     /*!< UHS-1 Register         */\n+   __IO uint32_t  RST_N;       /*!< Hardware Reset         */\n+   __I  uint32_t  RESERVED1;\n+   __IO uint32_t  BMOD;        /*!< Bus Mode Register      */\n+   __O  uint32_t  PLDMND;      /*!< Poll Demand Register   */\n+   __IO uint32_t  DBADDR;      /*!< Descriptor List Base Address Register */\n+   __IO uint32_t  IDSTS;       /*!< Internal DMAC Status Register */\n+   __IO uint32_t  IDINTEN;     /*!< Internal DMAC Interrupt Enable Register */\n+   __I  uint32_t  DSCADDR;     /*!< Current Host Descriptor Address Register */\n+   __I  uint32_t  BUFADDR;     /*!< Current Buffer Descriptor Address Register */\n+} LPC_SDMMC_T;\n+\n+/** @brief  SDIO DMA descriptor control (des0) register defines\n+ */\n+#define MCI_DMADES0_OWN         (1UL << 31)        /*!< DMA owns descriptor bit */\n+#define MCI_DMADES0_CES         (1 << 30)      /*!< Card Error Summary bit */\n+#define MCI_DMADES0_ER          (1 << 5)       /*!< End of descriptopr ring bit */\n+#define MCI_DMADES0_CH          (1 << 4)       /*!< Second address chained bit */\n+#define MCI_DMADES0_FS          (1 << 3)       /*!< First descriptor bit */\n+#define MCI_DMADES0_LD          (1 << 2)       /*!< Last descriptor bit */\n+#define MCI_DMADES0_DIC         (1 << 1)       /*!< Disable interrupt on completion bit */\n+\n+/** @brief  SDIO DMA descriptor size (des1) register defines\n+ */\n+#define MCI_DMADES1_BS1(x)      (x)                /*!< Size of buffer 1 */\n+#define MCI_DMADES1_BS2(x)      ((x) << 13)        /*!< Size of buffer 2 */\n+#define MCI_DMADES1_MAXTR       4096           /*!< Max transfer size per buffer */\n+\n+/** @brief  SDIO control register defines\n+ */\n+#define MCI_CTRL_USE_INT_DMAC   (1 << 25)      /*!< Use internal DMA */\n+#define MCI_CTRL_CARDV_MASK     (0x7 << 16)        /*!< SD_VOLT[2:0} pins output state mask */\n+#define MCI_CTRL_CEATA_INT_EN   (1 << 11)      /*!< Enable CE-ATA interrupts */\n+#define MCI_CTRL_SEND_AS_CCSD   (1 << 10)      /*!< Send auto-stop */\n+#define MCI_CTRL_SEND_CCSD      (1 << 9)       /*!< Send CCSD */\n+#define MCI_CTRL_ABRT_READ_DATA (1 << 8)       /*!< Abort read data */\n+#define MCI_CTRL_SEND_IRQ_RESP  (1 << 7)       /*!< Send auto-IRQ response */\n+#define MCI_CTRL_READ_WAIT      (1 << 6)       /*!< Assert read-wait for SDIO */\n+#define MCI_CTRL_INT_ENABLE     (1 << 4)       /*!< Global interrupt enable */\n+#define MCI_CTRL_DMA_RESET      (1 << 2)       /*!< Reset internal DMA */\n+#define MCI_CTRL_FIFO_RESET     (1 << 1)       /*!< Reset data FIFO pointers */\n+#define MCI_CTRL_RESET          (1 << 0)       /*!< Reset controller */\n+\n+/** @brief SDIO Power Enable register defines\n+ */\n+#define MCI_POWER_ENABLE        0x1                /*!< Enable slot power signal (SD_POW) */\n+\n+/** @brief SDIO Clock divider register defines\n+ */\n+#define MCI_CLOCK_DIVIDER(dn, d2) ((d2) << ((dn) * 8)) /*!< Set cklock divider */\n+\n+/** @brief SDIO Clock source register defines\n+ */\n+#define MCI_CLKSRC_CLKDIV0      0\n+#define MCI_CLKSRC_CLKDIV1      1\n+#define MCI_CLKSRC_CLKDIV2      2\n+#define MCI_CLKSRC_CLKDIV3      3\n+#define MCI_CLK_SOURCE(clksrc)  (clksrc)       /*!< Set cklock divider source */\n+\n+/** @brief SDIO Clock Enable register defines\n+ */\n+#define MCI_CLKEN_LOW_PWR       (1 << 16)      /*!< Enable clock idle for slot */\n+#define MCI_CLKEN_ENABLE        (1 << 0)       /*!< Enable slot clock */\n+\n+/** @brief SDIO time-out register defines\n+ */\n+#define MCI_TMOUT_DATA(clks)    ((clks) << 8)  /*!< Data timeout clocks */\n+#define MCI_TMOUT_DATA_MSK      0xFFFFFF00\n+#define MCI_TMOUT_RESP(clks)    ((clks) & 0xFF)    /*!< Response timeout clocks */\n+#define MCI_TMOUT_RESP_MSK      0xFF\n+\n+/** @brief SDIO card-type register defines\n+ */\n+#define MCI_CTYPE_8BIT          (1 << 16)      /*!< Enable 4-bit mode */\n+#define MCI_CTYPE_4BIT          (1 << 0)       /*!< Enable 8-bit mode */\n+\n+/** @brief SDIO Interrupt status & mask register defines\n+ */\n+#define MCI_INT_SDIO            (1 << 16)      /*!< SDIO interrupt */\n+#define MCI_INT_EBE             (1 << 15)      /*!< End-bit error */\n+#define MCI_INT_ACD             (1 << 14)      /*!< Auto command done */\n+#define MCI_INT_SBE             (1 << 13)      /*!< Start bit error */\n+#define MCI_INT_HLE             (1 << 12)      /*!< Hardware locked error */\n+#define MCI_INT_FRUN            (1 << 11)      /*!< FIFO overrun/underrun error */\n+#define MCI_INT_HTO             (1 << 10)      /*!< Host data starvation error */\n+#define MCI_INT_DTO             (1 << 9)       /*!< Data timeout error */\n+#define MCI_INT_RTO             (1 << 8)       /*!< Response timeout error */\n+#define MCI_INT_DCRC            (1 << 7)       /*!< Data CRC error */\n+#define MCI_INT_RCRC            (1 << 6)       /*!< Response CRC error */\n+#define MCI_INT_RXDR            (1 << 5)       /*!< RX data ready */\n+#define MCI_INT_TXDR            (1 << 4)       /*!< TX data needed */\n+#define MCI_INT_DATA_OVER       (1 << 3)       /*!< Data transfer over */\n+#define MCI_INT_CMD_DONE        (1 << 2)       /*!< Command done */\n+#define MCI_INT_RESP_ERR        (1 << 1)       /*!< Command response error */\n+#define MCI_INT_CD              (1 << 0)       /*!< Card detect */\n+\n+/** @brief SDIO Command register defines\n+ */\n+#define MCI_CMD_START           (1UL << 31)        /*!< Start command */\n+#define MCI_CMD_VOLT_SWITCH     (1 << 28)      /*!< Voltage switch bit */\n+#define MCI_CMD_BOOT_MODE       (1 << 27)      /*!< Boot mode */\n+#define MCI_CMD_DISABLE_BOOT    (1 << 26)      /*!< Disable boot */\n+#define MCI_CMD_EXPECT_BOOT_ACK (1 << 25)      /*!< Expect boot ack */\n+#define MCI_CMD_ENABLE_BOOT     (1 << 24)      /*!< Enable boot */\n+#define MCI_CMD_CCS_EXP         (1 << 23)      /*!< CCS expected */\n+#define MCI_CMD_CEATA_RD        (1 << 22)      /*!< CE-ATA read in progress */\n+#define MCI_CMD_UPD_CLK         (1 << 21)      /*!< Update clock register only */\n+#define MCI_CMD_INIT            (1 << 15)      /*!< Send init sequence */\n+#define MCI_CMD_STOP            (1 << 14)      /*!< Stop/abort command */\n+#define MCI_CMD_PRV_DAT_WAIT    (1 << 13)      /*!< Wait before send */\n+#define MCI_CMD_SEND_STOP       (1 << 12)      /*!< Send auto-stop */\n+#define MCI_CMD_STRM_MODE       (1 << 11)      /*!< Stream transfer mode */\n+#define MCI_CMD_DAT_WR          (1 << 10)      /*!< Read(0)/Write(1) selection */\n+#define MCI_CMD_DAT_EXP         (1 << 9)       /*!< Data expected */\n+#define MCI_CMD_RESP_CRC        (1 << 8)       /*!< Check response CRC */\n+#define MCI_CMD_RESP_LONG       (1 << 7)       /*!< Response length */\n+#define MCI_CMD_RESP_EXP        (1 << 6)       /*!< Response expected */\n+#define MCI_CMD_INDX(n)         ((n) & 0x1F)\n+\n+/** @brief SDIO status register definess\n+ */\n+#define MCI_STS_GET_FCNT(x)     (((x) >> 17) & 0x1FF)\n+\n+/** @brief SDIO FIFO threshold defines\n+ */\n+#define MCI_FIFOTH_TX_WM(x)     ((x) & 0xFFF)\n+#define MCI_FIFOTH_RX_WM(x)     (((x) & 0xFFF) << 16)\n+#define MCI_FIFOTH_DMA_MTS_1    (0UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_4    (1UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_8    (2UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_16   (3UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_32   (4UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_64   (5UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_128  (6UL << 28)\n+#define MCI_FIFOTH_DMA_MTS_256  (7UL << 28)\n+\n+/** @brief Bus mode register defines\n+ */\n+#define MCI_BMOD_PBL1           (0 << 8)       /*!< Burst length = 1 */\n+#define MCI_BMOD_PBL4           (1 << 8)       /*!< Burst length = 4 */\n+#define MCI_BMOD_PBL8           (2 << 8)       /*!< Burst length = 8 */\n+#define MCI_BMOD_PBL16          (3 << 8)       /*!< Burst length = 16 */\n+#define MCI_BMOD_PBL32          (4 << 8)       /*!< Burst length = 32 */\n+#define MCI_BMOD_PBL64          (5 << 8)       /*!< Burst length = 64 */\n+#define MCI_BMOD_PBL128         (6 << 8)       /*!< Burst length = 128 */\n+#define MCI_BMOD_PBL256         (7 << 8)       /*!< Burst length = 256 */\n+#define MCI_BMOD_DE             (1 << 7)       /*!< Enable internal DMAC */\n+#define MCI_BMOD_DSL(len)       ((len) << 2)   /*!< Descriptor skip length */\n+#define MCI_BMOD_FB             (1 << 1)       /*!< Fixed bursts */\n+#define MCI_BMOD_SWR            (1 << 0)       /*!< Software reset of internal registers */\n+\n+/** @brief Commonly used definitions\n+ */\n+#define SD_FIFO_SZ              32             /*!< Size of SDIO FIFOs (32-bit wide) */\n+\n+/** Function prototype for SD interface IRQ callback */\n+typedef uint32_t (*MCI_IRQ_CB_FUNC_T)(uint32_t);\n+\n+/** Function prototype for SD detect and write protect status check */\n+typedef int32_t (*PSCHECK_FUNC_T)(void);\n+\n+/** Function prototype for SD slot power enable or slot reset */\n+typedef void (*PS_POWER_FUNC_T)(int32_t enable);\n+\n+/** @brief  SDIO chained DMA descriptor\n+ */\n+typedef struct {\n+   volatile uint32_t des0;                     /*!< Control and status */\n+   volatile uint32_t des1;                     /*!< Buffer size(s) */\n+   volatile uint32_t des2;                     /*!< Buffer address pointer 1 */\n+   volatile uint32_t des3;                     /*!< Buffer address pointer 2 */\n+} pSDMMC_DMA_T;\n+\n+/** @brief  SDIO device type\n+ */\n+typedef struct _sdif_device {\n+   /* MCI_IRQ_CB_FUNC_T irq_cb; */\n+   pSDMMC_DMA_T mci_dma_dd[1 + (0x10000 / MCI_DMADES1_MAXTR)];\n+   /* uint32_t sdio_clk_rate; */\n+   /* uint32_t sdif_slot_clk_rate; */\n+   /* int32_t clock_enabled; */\n+} sdif_device;\n+\n+/** @brief Setup options for the SDIO driver\n+ */\n+#define US_TIMEOUT            1000000      /*!< give 1 atleast 1 sec for the card to respond */\n+#define MS_ACQUIRE_DELAY      (10)         /*!< inter-command acquire oper condition delay in msec*/\n+#define INIT_OP_RETRIES       50           /*!< initial OP_COND retries */\n+#define SET_OP_RETRIES        1000         /*!< set OP_COND retries */\n+#define SDIO_BUS_WIDTH        4                /*!< Max bus width supported */\n+#define SD_MMC_ENUM_CLOCK       400000     /*!< Typical enumeration clock rate */\n+#define MMC_MAX_CLOCK           20000000   /*!< Max MMC clock rate */\n+#define MMC_LOW_BUS_MAX_CLOCK   26000000   /*!< Type 0 MMC card max clock rate */\n+#define MMC_HIGH_BUS_MAX_CLOCK  52000000   /*!< Type 1 MMC card max clock rate */\n+#define SD_MAX_CLOCK            25000000   /*!< Max SD clock rate */\n+\n+/**\n+ * @brief  Set block size for the transfer\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  bytes   : block size in bytes\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetBlkSize(LPC_SDMMC_T *pSDMMC, uint32_t bytes)\n+{\n+   pSDMMC->BLKSIZ = bytes;\n+}\n+\n+/**\n+ * @brief  Reset card in slot\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  reset   : Sets SD_RST to passed state\n+ * @return None\n+ * @note   Reset card in slot, must manually de-assert reset after assertion\n+ * (Uses SD_RST pin, set per reset parameter state)\n+ */\n+STATIC INLINE void Chip_SDIF_Reset(LPC_SDMMC_T *pSDMMC, int32_t reset)\n+{\n+   if (reset) {\n+       pSDMMC->RST_N = 1;\n+   }\n+   else {\n+       pSDMMC->RST_N = 0;\n+   }\n+}\n+\n+/**\n+ * @brief  Detect if an SD card is inserted\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Returns 0 if a card is detected, otherwise 1\n+ * @note   Detect if an SD card is inserted\n+ * (uses SD_CD pin, returns 0 on card detect)\n+ */\n+STATIC INLINE int32_t Chip_SDIF_CardNDetect(LPC_SDMMC_T *pSDMMC)\n+{\n+   return (pSDMMC->CDETECT & 1);\n+}\n+\n+/**\n+ * @brief  Detect if write protect is enabled\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Returns 1 if card is write protected, otherwise 0\n+ * @note   Detect if write protect is enabled\n+ * (uses SD_WP pin, returns 1 if card is write protected)\n+ */\n+STATIC INLINE int32_t Chip_SDIF_CardWpOn(LPC_SDMMC_T *pSDMMC)\n+{\n+   return (pSDMMC->WRTPRT & 1);\n+}\n+\n+/**\n+ * @brief  Disable slot power\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ * @note   Uses SD_POW pin, set to low.\n+ */\n+STATIC INLINE void Chip_SDIF_PowerOff(LPC_SDMMC_T *pSDMMC)\n+{\n+   pSDMMC->PWREN = 0;\n+}\n+\n+/**\n+ * @brief  Enable slot power\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ * @note   Uses SD_POW pin, set to high.\n+ */\n+STATIC INLINE void Chip_SDIF_PowerOn(LPC_SDMMC_T *pSDMMC)\n+{\n+   pSDMMC->PWREN = 1;\n+}\n+\n+/**\n+ * @brief  Function to set card type\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  ctype   : card type\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetCardType(LPC_SDMMC_T *pSDMMC, uint32_t ctype)\n+{\n+   pSDMMC->CTYPE = ctype;\n+}\n+\n+/**\n+ * @brief  Returns the raw SD interface interrupt status\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Current pending interrupt status of Or'ed values MCI_INT_*\n+ */\n+STATIC INLINE uint32_t Chip_SDIF_GetIntStatus(LPC_SDMMC_T *pSDMMC)\n+{\n+   return pSDMMC->RINTSTS;\n+}\n+\n+/**\n+ * @brief  Clears the raw SD interface interrupt status\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  iVal    : Interrupts to be cleared, Or'ed values MCI_INT_*\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_ClrIntStatus(LPC_SDMMC_T *pSDMMC, uint32_t iVal)\n+{\n+   pSDMMC->RINTSTS = iVal;\n+}\n+\n+/**\n+ * @brief  Sets the SD interface interrupt mask\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  iVal    : Interrupts to enable, Or'ed values MCI_INT_*\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetIntMask(LPC_SDMMC_T *pSDMMC, uint32_t iVal)\n+{\n+   pSDMMC->INTMASK = iVal;\n+}\n+\n+/**\n+ * @brief  Set block size and byte count for transfer\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  blk_size: block size and byte count in bytes\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetBlkSizeByteCnt(LPC_SDMMC_T *pSDMMC, uint32_t blk_size)\n+{\n+   pSDMMC->BLKSIZ = blk_size;\n+   pSDMMC->BYTCNT = blk_size;\n+}\n+\n+/**\n+ * @brief  Set byte count for transfer\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  bytes   : block size and byte count in bytes\n+ * @return None\n+ */\n+STATIC INLINE void Chip_SDIF_SetByteCnt(LPC_SDMMC_T *pSDMMC, uint32_t bytes)\n+{\n+   pSDMMC->BYTCNT = bytes;\n+}\n+\n+/**\n+ * @brief  Initializes the SD/MMC card controller\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ */\n+void Chip_SDIF_Init(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Shutdown the SD/MMC card controller\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ */\n+void Chip_SDIF_DeInit(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Function to send command to Card interface unit (CIU)\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  cmd     : Command with all flags set\n+ * @param  arg     : Argument for the command\n+ * @return TRUE on times-out, otherwise FALSE\n+ */\n+int32_t Chip_SDIF_SendCmd(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg);\n+\n+/**\n+ * @brief  Read the response from the last command\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  resp    : Pointer to response array to fill\n+ * @return None\n+ */\n+void Chip_SDIF_GetResponse(LPC_SDMMC_T *pSDMMC, uint32_t *resp);\n+\n+/**\n+ * @brief  Sets the SD bus clock speed\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  clk_rate    : Input clock rate into the IP block\n+ * @param  speed       : Desired clock speed to the card\n+ * @return None\n+ */\n+void Chip_SDIF_SetClock(LPC_SDMMC_T *pSDMMC, uint32_t clk_rate, uint32_t speed);\n+\n+/**\n+ * @brief  Function to clear interrupt & FIFOs\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return None\n+ */\n+void Chip_SDIF_SetClearIntFifo(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Setup DMA descriptors\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @param  psdif_dev   : SD interface device\n+ * @param  addr        : Address of buffer (source or destination)\n+ * @param  size        : size of buffer in bytes (64K max)\n+ * @return None\n+ */\n+void Chip_SDIF_DmaSetup(LPC_SDMMC_T *pSDMMC, sdif_device *psdif_dev, uint32_t addr, uint32_t size);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SDIF_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/sdio_18xx_43xx.h ./lpc_chip_43xx/inc/sdio_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/sdio_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sdio_18xx_43xx.h\t2017-02-27 21:03:17.024043463 -0300\n@@ -0,0 +1,278 @@\n+/*\n+ * @brief LPC18xx/43xx SD/MMC card driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SDIO_18XX_43XX_H_\n+#define __SDIO_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SDIO_18XX_43XX CHIP: LPC18xx/43xx SDIO Card driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/** @brief SDIO Driver events */\n+enum SDIO_EVENT\n+{\n+   SDIO_START_COMMAND,  /**! SDIO driver is about to start a command transfer */\n+   SDIO_START_DATA,     /**! SDIO driver is about to start a data transfer */\n+   SDIO_WAIT_DELAY,     /**! SDIO driver needs to wait for given milli seconds */\n+   SDIO_WAIT_COMMAND,   /**! SDIO driver is waiting for a command to complete */\n+   SDIO_WAIT_DATA,      /**! SDIO driver is waiting for data transfer to complete */\n+\n+   SDIO_CARD_DETECT,    /**! SDIO driver has detected a card */\n+   SDIO_CMD_ERR,        /**! Error in command transfer */\n+   SDIO_CMD_DONE,       /**! Command transfer successful */\n+   SDIO_DATA_ERR,       /**! Data transfer error */\n+   SDIO_DATA_DONE,      /**! Data transfer successful */\n+   SDIO_CARD_INT,       /**! SDIO Card interrupt (from a function) */\n+};\n+\n+/** @brief SDIO Command Responses */\n+#define SDIO_CMD_RESP_R1     (1UL << 6)\n+#define SDIO_CMD_RESP_R2     (3UL << 6)\n+#define SDIO_CMD_RESP_R3     (1UL << 6)\n+#define SDIO_CMD_RESP_R4     (1UL << 6)\n+#define SDIO_CMD_RESP_R5     (1UL << 6)\n+#define SDIO_CMD_RESP_R6     (1UL << 6)\n+\n+/** @brief SDIO Command misc options */\n+#define SDIO_CMD_CRC         (1UL << 8)  /**! Response must have a valid CRC */\n+#define SDIO_CMD_DATA        (1UL << 9)  /**! Command is a data transfer command */\n+\n+/** @brief List of commands */\n+#define CMD0            (0 | (1 << 15))\n+#define CMD5            (5 | SDIO_CMD_RESP_R4)\n+#define CMD3            (3 | SDIO_CMD_RESP_R6)\n+#define CMD7            (7 | SDIO_CMD_RESP_R1)\n+#define CMD52           (52 | SDIO_CMD_RESP_R5 | SDIO_CMD_CRC)\n+#define CMD53           (53 | SDIO_CMD_RESP_R5 | SDIO_CMD_DATA | SDIO_CMD_CRC)\n+\n+/** @brief SDIO Error numbers */\n+#define SDIO_ERROR           -1 /**! General SDIO Error */\n+#define SDIO_ERR_FNUM        -2 /**! Error getting Number of functions supported */\n+#define SDIO_ERR_READWRITE   -3 /**! Error when performing Read/write of data */\n+#define SDIO_ERR_VOLT        -4 /**! Error Reading or setting up the voltage to 3v3 */\n+#define SDIO_ERR_RCA         -5 /**! Error during RCA phase */\n+#define SDIO_ERR_INVFUNC     -6 /**! Invalid function argument */\n+#define SDIO_ERR_INVARG      -7 /**! Invalid argument supplied to function */\n+\n+#define SDIO_VOLT_3_3    0x00100000UL  /* for CMD5 */\n+\n+/* SDIO Data transfer modes */\n+/** @brief  Block mode transfer flag\n+ *\n+ * When this flag is specified in a transfer the data will be transfered in blocks if not\n+ * it will be transfered in bytes. See SDIO_Card_DataRead(), SDIO_Card_DataWrite()\n+ * for more information.\n+ */\n+#define SDIO_MODE_BLOCK       (1UL << 27)\n+\n+/** @brief Buffer mode transfer flag\n+ *\n+ * Default mode for SDIO_Card_ReadData() and SDIO_Card_WriteData() is FIFO mode\n+ * in FIFO mode all the given data will be written to or read from the same\n+ * register address in the function. This flag will set the transfers to BUFFER\n+ * mode; in BUFFER mode read first byte will be read from the given source address\n+ * and the next byte will be read from the next source address (i.e src_addr + 1),\n+ * and so on, in BUFFER mode write first byte will be written to dest_addr, next\n+ * byte will be written to dest_addr + 1 and so on.\n+ */\n+#define SDIO_MODE_BUFFER      (1UL << 26)\n+\n+/* ---- SDIO Internal map ---- */\n+#define SDIO_AREA_CIA          0           /* function 0 */\n+\n+/* ---- Card Capability(0x08) register ---- */\n+#define SDIO_CCCR_LSC          0x40u       /* card is low-speed cards */\n+#define SDIO_CCCR_4BLS         0x80u       /* 4-bit support for low-speed cards */\n+\n+#define SDIO_POWER_INIT  1\n+\n+#define SDIO_CLK_HISPEED            33000000UL    /* High-Speed Clock  */\n+#define SDIO_CLK_FULLSPEED          16000000UL    /* Full-Speed Clock  */\n+#define SDIO_CLK_LOWSPEED           400000        /* Low-Speed Clock   */\n+\n+/**\n+ * @brief  Initialize the SDIO card\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  freq        : Initial frequency to use during the enumeration\n+ * @return 0 on Success; > 0 on response error [like CRC error] < 0 on BUS error\n+ */\n+int SDIO_Card_Init(LPC_SDMMC_T *pSDMMC, uint32_t freq);\n+\n+/**\n+ * @brief  Write 8-Bit register from SDIO register space\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  addr        : Address of the register to read\n+ * @param  data        : 8-bit data be written\n+ * @return 0 on Success; > 0 on response error [like CRC error] < 0 on BUS error\n+ * @note SDIO_Setup_Callback() function must be called to setup the call backs before\n+ * calling  this API.\n+ */\n+int SDIO_Write_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t data);\n+\n+/**\n+ * @brief  Write 8-Bit register from SDIO register space and read the register back\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  addr        : Address of the register to read\n+ * @param  data        : Pointer to memory where the 8-bit data be stored\n+ * @return 0 on Success; > 0 on response error [like CRC error] < 0 on BUS error\n+ * @note   @a data must have the value to be written stored in it when the function is called\n+ */\n+int SDIO_WriteRead_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t *data);\n+\n+/**\n+ * @brief  Read an 8-Bit register from SDIO register space\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  addr        : Address of the register to read\n+ * @param  data        : Pointer to memory where the 8-bit data be stored\n+ * @return 0 on Success; > 0 on response error [like CRC error] < 0 on BUS error\n+ */\n+int SDIO_Read_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t *data);\n+\n+/**\n+ * @brief  Setup SDIO wait and wakeup callbacks\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  wake_evt    : Wakeup event call-back handler\n+ * @param  wait_evt    : Wait event call-back handler\n+ * @return Nothing\n+ * @note   @a wake_evt and @a wait_evt should always be non-null function pointers\n+ * This function must be called before calling SDIO_Card_Init() function\n+ */\n+void SDIO_Setup_Callback(LPC_SDMMC_T *pSDMMC,\n+   void (*wake_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg),\n+   uint32_t (*wait_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg));\n+\n+/**\n+ * @brief  SDIO Event handler [Should be called from SDIO interrupt handler]\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @return Nothing\n+ */\n+void SDIO_Handler(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Sends a command to the SDIO Card [Example CMD52]\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  cmd         : Command to be sent along with any flags\n+ * @param  arg         : Argument for the command\n+ * @return 0 on Success; Non-Zero on failure\n+ */\n+uint32_t SDIO_Send_Command(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg);\n+\n+/**\n+ * @brief  Gets the block size of a given function\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @return Block size of the given function\n+ * @sa     SDIO_Card_SetBlockSize()\n+ * @note   If the return value is 0 then bock size is not set using\n+ * SDIO_Card_SetBlockSize(), or given @a func is not valid or the\n+ * card does not support block data transfers.\n+ */\n+uint32_t SDIO_Card_GetBlockSize(LPC_SDMMC_T *pSDMMC, uint32_t func);\n+\n+/**\n+ * @brief  Sets the block size of a given function\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  blkSize     : Block size to set\n+ * @return 0 on success; Non-Zero on failure\n+ * @sa     SDIO_Card_GetBlockSize()\n+ * @note   After setting block size using this API, if\n+ * SDIO_Card_GetBlockSize() returns 0 for a valid function then the card\n+ * does not support block transfers.\n+ */\n+int SDIO_Card_SetBlockSize(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t blkSize);\n+\n+/**\n+ * @brief  Writes stream or block of data to the SDIO card [Using CMD53]\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  dest_addr   : Address where the data to be written (inside @a func register space)\n+ * @param  src_addr    : Buffer from which data to be taken\n+ * @param  size        : Number of Bytes/Blocks to be transfered [Must be in the range 1 to 512]\n+ * @param  flags       : Or-ed value of #SDIO_MODE_BLOCK, #SDIO_MODE_BUFFER\n+ * @return 0 on success; Non-Zero on failure\n+ * @note   When #SDIO_MODE_BLOCK is set in @a flags the size is number of blocks, so\n+ * the number of bytes transferd will be @a size * \"block size\" [See SDIO_Card_GetBlockSize() and\n+ * SDIO_Card_SetBlockSize() for more information]\n+ */\n+int SDIO_Card_WriteData(LPC_SDMMC_T *pSDMMC, uint32_t func,\n+   uint32_t dest_addr, const uint8_t *src_addr,\n+   uint32_t size, uint32_t flags);\n+\n+/**\n+ * @brief  Reads stream or block of data from the SDIO card [Using CMD53]\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @param  dest_addr   : memory where the data to be read into\n+ * @param  src_addr    : Register address from which data to be read  (inside @a func register space)\n+ * @param  size        : Number of Bytes/Blocks to be transfered [Must be in the range 1 to 512]\n+ * @param  flags       : Or-ed value of #SDIO_MODE_BLOCK, #SDIO_MODE_BUFFER\n+ * @return 0 on success; Non-Zero on failure\n+ * @note   When #SDIO_MODE_BLOCK is set in @a flags the size is number of blocks, so\n+ * the number of bytes transferd will be @a size * \"block size\" [See SDIO_Card_GetBlockSize() and\n+ * SDIO_Card_SetBlockSize() for more information]\n+ */\n+int SDIO_Card_ReadData(LPC_SDMMC_T *pSDMMC, uint32_t func,\n+   uint8_t *dest_addr, uint32_t src_addr,\n+   uint32_t size, uint32_t flags);\n+\n+/**\n+ * @brief  Disable SDIO interrupt for a given function\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @return 0 - on success; Non zero on failure\n+ */\n+int SDIO_Card_DisableInt(LPC_SDMMC_T *pSDMMC, uint32_t func);\n+\n+/**\n+ * @brief  Enable SDIO interrupt for a given function\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  func        : function number [0 to 7] [0 = CIA function]\n+ * @return 0 - on success; Non zero on failure\n+ */\n+int SDIO_Card_EnableInt(LPC_SDMMC_T *pSDMMC, uint32_t func);\n+\n+/**\n+ * @}\n+ */\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SDIO_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/sdmmc_18xx_43xx.h ./lpc_chip_43xx/inc/sdmmc_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/sdmmc_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sdmmc_18xx_43xx.h\t2017-02-27 21:03:17.024043463 -0300\n@@ -0,0 +1,151 @@\n+/*\n+ * @brief LPC18xx/43xx SD/MMC card driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SDMMC_18XX_43XX_H_\n+#define __SDMMC_18XX_43XX_H_\n+\n+#include \"sdmmc.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SDMMC_18XX_43XX CHIP: LPC18xx/43xx SD/MMC driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define CMD_MASK_RESP       (0x3UL << 28)\n+#define CMD_RESP(r)         (((r) & 0x3) << 28)\n+#define CMD_RESP_R0         (0 << 28)\n+#define CMD_RESP_R1         (1 << 28)\n+#define CMD_RESP_R2         (2 << 28)\n+#define CMD_RESP_R3         (3 << 28)\n+#define CMD_BIT_AUTO_STOP   (1 << 24)\n+#define CMD_BIT_APP         (1 << 23)\n+#define CMD_BIT_INIT        (1 << 22)\n+#define CMD_BIT_BUSY        (1 << 21)\n+#define CMD_BIT_LS          (1 << 20)  /* Low speed, used during acquire */\n+#define CMD_BIT_DATA        (1 << 19)\n+#define CMD_BIT_WRITE       (1 << 18)\n+#define CMD_BIT_STREAM      (1 << 17)\n+#define CMD_MASK_CMD        (0xff)\n+#define CMD_SHIFT_CMD       (0)\n+\n+#define CMD(c, r)        ( ((c) &  CMD_MASK_CMD) | CMD_RESP((r)) )\n+\n+#define CMD_IDLE            CMD(MMC_GO_IDLE_STATE, 0) | CMD_BIT_LS    | CMD_BIT_INIT\n+#define CMD_SD_OP_COND      CMD(SD_APP_OP_COND, 1)      | CMD_BIT_LS | CMD_BIT_APP\n+#define CMD_SD_SEND_IF_COND CMD(SD_CMD8, 1)      | CMD_BIT_LS\n+#define CMD_MMC_OP_COND     CMD(MMC_SEND_OP_COND, 3)    | CMD_BIT_LS | CMD_BIT_INIT\n+#define CMD_ALL_SEND_CID    CMD(MMC_ALL_SEND_CID, 2)    | CMD_BIT_LS\n+#define CMD_MMC_SET_RCA     CMD(MMC_SET_RELATIVE_ADDR, 1) | CMD_BIT_LS\n+#define CMD_SD_SEND_RCA     CMD(SD_SEND_RELATIVE_ADDR, 1) | CMD_BIT_LS\n+#define CMD_SEND_CSD        CMD(MMC_SEND_CSD, 2) | CMD_BIT_LS\n+#define CMD_SEND_EXT_CSD    CMD(MMC_SEND_EXT_CSD, 1) | CMD_BIT_LS | CMD_BIT_DATA\n+#define CMD_DESELECT_CARD   CMD(MMC_SELECT_CARD, 0)\n+#define CMD_SELECT_CARD     CMD(MMC_SELECT_CARD, 1)\n+#define CMD_SET_BLOCKLEN    CMD(MMC_SET_BLOCKLEN, 1)\n+#define CMD_SEND_STATUS     CMD(MMC_SEND_STATUS, 1)\n+#define CMD_READ_SINGLE     CMD(MMC_READ_SINGLE_BLOCK, 1) | CMD_BIT_DATA\n+#define CMD_READ_MULTIPLE   CMD(MMC_READ_MULTIPLE_BLOCK, 1) | CMD_BIT_DATA | CMD_BIT_AUTO_STOP\n+#define CMD_SD_SET_WIDTH    CMD(SD_APP_SET_BUS_WIDTH, 1) | CMD_BIT_APP\n+#define CMD_STOP            CMD(MMC_STOP_TRANSMISSION, 1) | CMD_BIT_BUSY\n+#define CMD_WRITE_SINGLE    CMD(MMC_WRITE_BLOCK, 1) | CMD_BIT_DATA | CMD_BIT_WRITE\n+#define CMD_WRITE_MULTIPLE  CMD(MMC_WRITE_MULTIPLE_BLOCK, 1) | CMD_BIT_DATA | CMD_BIT_WRITE | CMD_BIT_AUTO_STOP\n+\n+/* Card specific setup data */\n+typedef struct _mci_card_struct {\n+   sdif_device sdif_dev;\n+   SDMMC_CARD_T card_info;\n+} mci_card_struct;\n+\n+/**\n+ * @brief  Get card's current state (idle, transfer, program, etc.)\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Current SD card transfer state\n+ */\n+int32_t Chip_SDMMC_GetState(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Function to enumerate the SD/MMC/SDHC/MMC+ cards\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  pcardinfo   : Pointer to pre-allocated card info structure\n+ * @return 1 if a card is acquired, otherwise 0\n+ */\n+uint32_t Chip_SDMMC_Acquire(LPC_SDMMC_T *pSDMMC, mci_card_struct *pcardinfo);\n+\n+/**\n+ * @brief  Get the device size of SD/MMC card (after enumeration)\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Card size in number of bytes (capacity)\n+ */\n+uint64_t Chip_SDMMC_GetDeviceSize(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Get the number of device blocks of SD/MMC card (after enumeration)\n+ * Since Chip_SDMMC_GetDeviceSize is limited to 32 bits cards with greater than\n+ * 2 GBytes of data will not be correct, in such cases users can use this function\n+ * to get the size of the card in blocks.\n+ * @param  pSDMMC  : SDMMC peripheral selected\n+ * @return Number of 512 bytes blocks in the card\n+ */\n+int32_t Chip_SDMMC_GetDeviceBlocks(LPC_SDMMC_T *pSDMMC);\n+\n+/**\n+ * @brief  Performs the read of data from the SD/MMC card\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  buffer      : Pointer to data buffer to copy to\n+ * @param  start_block : Start block number\n+ * @param  num_blocks  : Number of block to read\n+ * @return Bytes read, or 0 on error\n+ */\n+int32_t Chip_SDMMC_ReadBlocks(LPC_SDMMC_T *pSDMMC, void *buffer, int32_t start_block, int32_t num_blocks);\n+\n+/**\n+ * @brief  Performs write of data to the SD/MMC card\n+ * @param  pSDMMC      : SDMMC peripheral selected\n+ * @param  buffer      : Pointer to data buffer to copy to\n+ * @param  start_block : Start block number\n+ * @param  num_blocks  : Number of block to write\n+ * @return Number of bytes actually written, or 0 on error\n+ */\n+int32_t Chip_SDMMC_WriteBlocks(LPC_SDMMC_T *pSDMMC, void *buffer, int32_t start_block, int32_t num_blocks);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SDMMC_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/sdmmc.h ./lpc_chip_43xx/inc/sdmmc.h\n--- a_OkB2vL/lpc_chip_43xx/inc/sdmmc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sdmmc.h\t2017-02-27 21:03:17.024043463 -0300\n@@ -0,0 +1,450 @@\n+/*\n+ * @brief    Common definitions used in SD/MMC cards\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SDMMC_H\n+#define __SDMMC_H\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup CHIP_SDMMC_Definitions CHIP: Common SD/MMC definitions\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/**\n+ * @brief OCR Register definitions\n+ */\n+/** Support voltage range 2.0-2.1 (this bit is reserved in SDC)*/\n+#define SDC_OCR_20_21               (((uint32_t) 1) << 8)\n+/** Support voltage range 2.1-2.2 (this bit is reserved in SDC)*/\n+#define SDC_OCR_21_22               (((uint32_t) 1) << 9)\n+/** Support voltage range 2.2-2.3 (this bit is reserved in SDC)*/\n+#define SDC_OCR_22_23               (((uint32_t) 1) << 10)\n+/** Support voltage range 2.3-2.4 (this bit is reserved in SDC)*/\n+#define SDC_OCR_23_24               (((uint32_t) 1) << 11)\n+/** Support voltage range 2.4-2.5 (this bit is reserved in SDC)*/\n+#define SDC_OCR_24_25               (((uint32_t) 1) << 12)\n+/** Support voltage range 2.5-2.6 (this bit is reserved in SDC)*/\n+#define SDC_OCR_25_26               (((uint32_t) 1) << 13)\n+/** Support voltage range 2.6-2.7 (this bit is reserved in SDC)*/\n+#define SDC_OCR_26_27               (((uint32_t) 1) << 14)\n+/** Support voltage range 2.7-2.8 */\n+#define SDC_OCR_27_28               (((uint32_t) 1) << 15)\n+/** Support voltage range 2.8-2.9*/\n+#define SDC_OCR_28_29               (((uint32_t) 1) << 16)\n+/** Support voltage range 2.9-3.0 */\n+#define SDC_OCR_29_30               (((uint32_t) 1) << 17)\n+/** Support voltage range 3.0-3.1 */\n+#define SDC_OCR_30_31               (((uint32_t) 1) << 18)\n+/** Support voltage range 3.1-3.2 */\n+#define SDC_OCR_31_32               (((uint32_t) 1) << 19)\n+/** Support voltage range 3.2-3.3 */\n+#define SDC_OCR_32_33               (((uint32_t) 1) << 20)\n+/** Support voltage range 3.3-3.4 */\n+#define SDC_OCR_33_34               (((uint32_t) 1) << 21)\n+/** Support voltage range 3.4-3.5 */\n+#define SDC_OCR_34_35               (((uint32_t) 1) << 22)\n+/** Support voltage range 3.5-3.6 */\n+#define SDC_OCR_35_36               (((uint32_t) 1) << 23)\n+/** Support voltage range 2.7-3.6 */\n+#define SDC_OCR_27_36               ((uint32_t) 0x00FF8000)\n+/** Card Capacity Status (CCS). (this bit is reserved in MMC) */\n+#define SDC_OCR_HC_CCS              (((uint32_t) 1) << 30)\n+/** Card power up status bit */\n+#define SDC_OCR_IDLE                (((uint32_t) 1) << 31)\n+#define SDC_OCR_BUSY                (((uint32_t) 0) << 31)\n+\n+/* SD/MMC commands - this matrix shows the command, response types, and\n+   supported card type for that command.\n+   Command                 Number Resp  SD  MMC\n+   ----------------------- ------ ----- --- ---\n+   Reset (go idle)         CMD0   NA    x   x\n+   Send op condition       CMD1   R3        x\n+   All send CID            CMD2   R2    x   x\n+   Send relative address   CMD3   R1        x\n+   Send relative address   CMD3   R6    x\n+   Program DSR             CMD4   NA        x\n+   Select/deselect card    CMD7   R1b       x\n+   Select/deselect card    CMD7   R1    x\n+   Send CSD                CMD9   R2    x   x\n+   Send CID                CMD10  R2    x   x\n+   Read data until stop    CMD11  R1    x   x\n+   Stop transmission       CMD12  R1/b  x   x\n+   Send status             CMD13  R1    x   x\n+   Go inactive state       CMD15  NA    x   x\n+   Set block length        CMD16  R1    x   x\n+   Read single block       CMD17  R1    x   x\n+   Read multiple blocks    CMD18  R1    x   x\n+   Write data until stop   CMD20  R1        x\n+   Setblock count          CMD23  R1        x\n+   Write single block      CMD24  R1    x   x\n+   Write multiple blocks   CMD25  R1    x   x\n+   Program CID             CMD26  R1        x\n+   Program CSD             CMD27  R1    x   x\n+   Set write protection    CMD28  R1b   x   x\n+   Clear write protection  CMD29  R1b   x   x\n+   Send write protection   CMD30  R1    x   x\n+   Erase block start       CMD32  R1    x\n+   Erase block end         CMD33  R1    x\n+   Erase block start       CMD35  R1        x\n+   Erase block end         CMD36  R1        x\n+   Erase blocks            CMD38  R1b       x\n+   Fast IO                 CMD39  R4        x\n+   Go IRQ state            CMD40  R5        x\n+   Lock/unlock             CMD42  R1b       x\n+   Application command     CMD55  R1        x\n+   General command         CMD56  R1b       x\n+\n+ *** SD card application commands - these must be preceded with ***\n+ *** MMC CMD55 application specific command first               ***\n+   Set bus width           ACMD6  R1    x\n+   Send SD status          ACMD13 R1    x\n+   Send number WR blocks   ACMD22 R1    x\n+   Set WR block erase cnt  ACMD23 R1    x\n+   Send op condition       ACMD41 R3    x\n+   Set clear card detect   ACMD42 R1    x\n+   Send CSR                ACMD51 R1    x */\n+\n+/**\n+ * @brief  SD/MMC application specific commands for SD cards only - these\n+ * must be preceded by the SDMMC CMD55 to work correctly\n+ */\n+typedef enum {\n+   SD_SET_BUS_WIDTH,       /*!< Set the SD bus width */\n+   SD_SEND_STATUS,         /*!< Send the SD card status */\n+   SD_SEND_WR_BLOCKS,      /*!< Send the number of written clocks */\n+   SD_SET_ERASE_COUNT,     /*!< Set the number of blocks to pre-erase */\n+   SD_SENDOP_COND,         /*!< Send the OCR register (init) */\n+   SD_CLEAR_CARD_DET,      /*!< Set or clear the 50K detect pullup */\n+   SD_SEND_SCR,            /*!< Send the SD configuration register */\n+   SD_INVALID_APP_CMD      /*!< Invalid SD application command */\n+} SD_APP_CMD_T;\n+\n+/**\n+ * @brief  Possible SDMMC response types\n+ */\n+typedef enum {\n+   SDMMC_RESPONSE_R1,      /*!< Typical status */\n+   SDMMC_RESPONSE_R1B,     /*!< Typical status with busy */\n+   SDMMC_RESPONSE_R2,      /*!< CID/CSD registers (CMD2 and CMD10) */\n+   SDMMC_RESPONSE_R3,      /*!< OCR register (CMD1, ACMD41) */\n+   SDMMC_RESPONSE_R4,      /*!< Fast IO response word */\n+   SDMMC_RESPONSE_R5,      /*!< Go IRQ state response word */\n+   SDMMC_RESPONSE_R6,      /*!< Published RCA response */\n+   SDMMC_RESPONSE_NONE     /*!< No response expected */\n+} SDMMC_RESPONSE_T;\n+\n+/**\n+ * @brief  Possible SDMMC card state types\n+ */\n+typedef enum {\n+   SDMMC_IDLE_ST = 0,  /*!< Idle state */\n+   SDMMC_READY_ST,     /*!< Ready state */\n+   SDMMC_IDENT_ST,     /*!< Identification State */\n+   SDMMC_STBY_ST,      /*!< standby state */\n+   SDMMC_TRAN_ST,      /*!< transfer state */\n+   SDMMC_DATA_ST,      /*!< Sending-data State */\n+   SDMMC_RCV_ST,       /*!< Receive-data State */\n+   SDMMC_PRG_ST,       /*!< Programming State */\n+   SDMMC_DIS_ST        /*!< Disconnect State */\n+} SDMMC_STATE_T;\n+\n+/* Function prototype for event setup function */\n+typedef void (*SDMMC_EVSETUP_FUNC_T)(void *);\n+\n+/* Function prototype for wait for event function */\n+typedef uint32_t (*SDMMC_EVWAIT_FUNC_T)(void);\n+\n+/* Function prototype for milliSecond delay function */\n+typedef void (*SDMMC_MSDELAY_FUNC_T)(uint32_t);\n+\n+/**\n+ * @brief SD/MMC Card specific setup data structure\n+ */\n+typedef struct {\n+   uint32_t response[4];                       /*!< Most recent response */\n+   uint32_t cid[4];                            /*!< CID of acquired card  */\n+   uint32_t csd[4];                            /*!< CSD of acquired card */\n+   uint32_t ext_csd[512 / 4];                  /*!< Ext CSD */\n+   uint32_t card_type;                         /*!< Card Type */\n+   uint16_t rca;                               /*!< Relative address assigned to card */\n+   uint32_t speed;                             /*!< Speed */\n+   uint32_t block_len;                         /*!< Card sector size */\n+   uint64_t device_size;                       /*!< Device Size */\n+   uint32_t blocknr;                           /*!< Block Number */\n+   uint32_t clk_rate;                          /*! Clock rate */\n+   SDMMC_EVSETUP_FUNC_T evsetup_cb;            /*!< Function to setup event information */\n+   SDMMC_EVWAIT_FUNC_T waitfunc_cb;            /*!< Function to wait for event */\n+   SDMMC_MSDELAY_FUNC_T msdelay_func;          /*!< Function to sleep in ms */\n+} SDMMC_CARD_T;\n+\n+/**\n+ * @brief SD/MMC commands, arguments and responses\n+ * Standard SD/MMC commands (3.1)       type  argument     response\n+ */\n+/* class 1 */\n+#define MMC_GO_IDLE_STATE         0        /* bc                          */\n+#define MMC_SEND_OP_COND          1        /* bcr  [31:0]  OCR        R3  */\n+#define MMC_ALL_SEND_CID          2        /* bcr                     R2  */\n+#define MMC_SET_RELATIVE_ADDR     3        /* ac   [31:16] RCA        R1  */\n+#define MMC_SET_DSR               4        /* bc   [31:16] RCA            */\n+#define MMC_SELECT_CARD           7        /* ac   [31:16] RCA        R1  */\n+#define MMC_SEND_EXT_CSD          8        /* bc                      R1  */\n+#define MMC_SEND_CSD              9        /* ac   [31:16] RCA        R2  */\n+#define MMC_SEND_CID             10        /* ac   [31:16] RCA        R2  */\n+#define MMC_STOP_TRANSMISSION    12        /* ac                      R1b */\n+#define MMC_SEND_STATUS          13        /* ac   [31:16] RCA        R1  */\n+#define MMC_GO_INACTIVE_STATE    15        /* ac   [31:16] RCA            */\n+\n+/* class 2 */\n+#define MMC_SET_BLOCKLEN         16        /* ac   [31:0]  block len  R1  */\n+#define MMC_READ_SINGLE_BLOCK    17        /* adtc [31:0]  data addr  R1  */\n+#define MMC_READ_MULTIPLE_BLOCK  18        /* adtc [31:0]  data addr  R1  */\n+\n+/* class 3 */\n+#define MMC_WRITE_DAT_UNTIL_STOP 20        /* adtc [31:0]  data addr  R1  */\n+\n+/* class 4 */\n+#define MMC_SET_BLOCK_COUNT      23        /* adtc [31:0]  data addr  R1  */\n+#define MMC_WRITE_BLOCK          24        /* adtc [31:0]  data addr  R1  */\n+#define MMC_WRITE_MULTIPLE_BLOCK 25        /* adtc                    R1  */\n+#define MMC_PROGRAM_CID          26        /* adtc                    R1  */\n+#define MMC_PROGRAM_CSD          27        /* adtc                    R1  */\n+\n+/* class 6 */\n+#define MMC_SET_WRITE_PROT       28        /* ac   [31:0]  data addr  R1b */\n+#define MMC_CLR_WRITE_PROT       29        /* ac   [31:0]  data addr  R1b */\n+#define MMC_SEND_WRITE_PROT      30        /* adtc [31:0]  wpdata addr R1  */\n+\n+/* class 5 */\n+#define MMC_ERASE_GROUP_START    35        /* ac   [31:0]  data addr  R1  */\n+#define MMC_ERASE_GROUP_END      36        /* ac   [31:0]  data addr  R1  */\n+#define MMC_ERASE                37        /* ac                      R1b */\n+#define SD_ERASE_WR_BLK_START    32        /* ac   [31:0]  data addr  R1  */\n+#define SD_ERASE_WR_BLK_END      33        /* ac   [31:0]  data addr  R1  */\n+#define SD_ERASE                 38        /* ac                      R1b */\n+\n+/* class 9 */\n+#define MMC_FAST_IO              39        /* ac   <Complex>          R4  */\n+#define MMC_GO_IRQ_STATE         40        /* bcr                     R5  */\n+\n+/* class 7 */\n+#define MMC_LOCK_UNLOCK          42        /* adtc                    R1b */\n+\n+/* class 8 */\n+#define MMC_APP_CMD              55        /* ac   [31:16] RCA        R1  */\n+#define MMC_GEN_CMD              56        /* adtc [0]     RD/WR      R1b */\n+\n+/* SD commands                           type  argument     response */\n+/* class 8 */\n+/* This is basically the same command as for MMC with some quirks. */\n+#define SD_SEND_RELATIVE_ADDR     3        /* ac                      R6  */\n+#define SD_CMD8                   8        /* bcr  [31:0]  OCR        R3  */\n+\n+/* Application commands */\n+#define SD_APP_SET_BUS_WIDTH      6        /* ac   [1:0]   bus width  R1   */\n+#define SD_APP_OP_COND           41        /* bcr  [31:0]  OCR        R1 (R4)  */\n+#define SD_APP_SEND_SCR          51        /* adtc                    R1   */\n+\n+/**\n+ * @brief MMC status in R1<br>\n+ * Type<br>\n+ *   e : error bit<br>\n+ *   s : status bit<br>\n+ *   r : detected and set for the actual command response<br>\n+ *   x : detected and set during command execution. the host must poll\n+ *       the card by sending status command in order to read these bits.\n+ * Clear condition<br>\n+ *   a : according to the card state<br>\n+ *   b : always related to the previous command. Reception of\n+ *       a valid command will clear it (with a delay of one command)<br>\n+ *   c : clear by read<br>\n+ */\n+\n+#define R1_OUT_OF_RANGE         (1UL << 31)    /* er, c */\n+#define R1_ADDRESS_ERROR        (1 << 30)  /* erx, c */\n+#define R1_BLOCK_LEN_ERROR      (1 << 29)  /* er, c */\n+#define R1_ERASE_SEQ_ERROR      (1 << 28)  /* er, c */\n+#define R1_ERASE_PARAM          (1 << 27)  /* ex, c */\n+#define R1_WP_VIOLATION         (1 << 26)  /* erx, c */\n+#define R1_CARD_IS_LOCKED       (1 << 25)  /* sx, a */\n+#define R1_LOCK_UNLOCK_FAILED   (1 << 24)  /* erx, c */\n+#define R1_COM_CRC_ERROR        (1 << 23)  /* er, b */\n+#define R1_ILLEGAL_COMMAND      (1 << 22)  /* er, b */\n+#define R1_CARD_ECC_FAILED      (1 << 21)  /* ex, c */\n+#define R1_CC_ERROR             (1 << 20)  /* erx, c */\n+#define R1_ERROR                (1 << 19)  /* erx, c */\n+#define R1_UNDERRUN             (1 << 18)  /* ex, c */\n+#define R1_OVERRUN              (1 << 17)  /* ex, c */\n+#define R1_CID_CSD_OVERWRITE    (1 << 16)  /* erx, c, CID/CSD overwrite */\n+#define R1_WP_ERASE_SKIP        (1 << 15)  /* sx, c */\n+#define R1_CARD_ECC_DISABLED    (1 << 14)  /* sx, a */\n+#define R1_ERASE_RESET          (1 << 13)  /* sr, c */\n+#define R1_STATUS(x)            (x & 0xFFFFE000)\n+#define R1_CURRENT_STATE(x)     ((x & 0x00001E00) >> 9)    /* sx, b (4 bits) */\n+#define R1_READY_FOR_DATA       (1 << 8)   /* sx, a */\n+#define R1_APP_CMD              (1 << 5)   /* sr, c */\n+\n+/**\n+ * @brief SD/MMC card OCR register bits\n+ */\n+#define OCR_ALL_READY           (1UL << 31)    /* Card Power up status bit */\n+#define OCR_HC_CCS              (1 << 30)  /* High capacity card */\n+#define OCR_VOLTAGE_RANGE_MSK   (0x00FF8000)\n+\n+#define SD_SEND_IF_ARG          0x000001AA\n+#define SD_SEND_IF_ECHO_MSK     0x000000FF\n+#define SD_SEND_IF_RESP         0x000000AA\n+\n+/**\n+ * @brief R3 response definitions\n+ */\n+#define CMDRESP_R3_OCR_VAL(n)           (((uint32_t) n) & 0xFFFFFF)\n+#define CMDRESP_R3_S18A                 (((uint32_t) 1 ) << 24)\n+#define CMDRESP_R3_HC_CCS               (((uint32_t) 1 ) << 30)\n+#define CMDRESP_R3_INIT_COMPLETE        (((uint32_t) 1 ) << 31)\n+\n+/**\n+ * @brief R6 response definitions\n+ */\n+#define CMDRESP_R6_RCA_VAL(n)           (((uint32_t) (n >> 16)) & 0xFFFF)\n+#define CMDRESP_R6_CARD_STATUS(n)       (((uint32_t) (n & 0x1FFF)) | \\\n+                                        ((n & (1 << 13)) ? (1 << 19) : 0) | \\\n+                                        ((n & (1 << 14)) ? (1 << 22) : 0) | \\\n+                                        ((n & (1 << 15)) ? (1 << 23) : 0))\n+\n+/**\n+ * @brief R7 response definitions\n+ */\n+/** Echo-back of check-pattern */\n+#define CMDRESP_R7_CHECK_PATTERN(n)     (((uint32_t) n ) & 0xFF)\n+/** Voltage accepted */\n+#define CMDRESP_R7_VOLTAGE_ACCEPTED     (((uint32_t) 1 ) << 8)\n+\n+/**\n+ * @brief CMD3 command definitions\n+ */\n+/** Card Address */\n+#define CMD3_RCA(n)         (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief CMD7 command definitions\n+ */\n+/** Card Address */\n+#define CMD7_RCA(n)         (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief CMD8 command definitions\n+ */\n+/** Check pattern */\n+#define CMD8_CHECKPATTERN(n)            (((uint32_t) (n & 0xFF) ) << 0)\n+/** Recommended pattern */\n+#define CMD8_DEF_PATTERN                    (0xAA)\n+/** Voltage supplied.*/\n+#define CMD8_VOLTAGESUPPLIED_27_36     (((uint32_t) 1 ) << 8)\n+\n+/**\n+ * @brief CMD9 command definitions\n+ */\n+#define CMD9_RCA(n)         (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief CMD13 command definitions\n+ */\n+#define CMD13_RCA(n)            (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief APP_CMD command definitions\n+ */\n+#define CMD55_RCA(n)            (((uint32_t) (n & 0xFFFF) ) << 16)\n+\n+/**\n+ * @brief ACMD41 command definitions\n+ */\n+#define ACMD41_OCR(n)                   (((uint32_t) n) & 0xFFFFFF)\n+#define ACMD41_S18R                     (((uint32_t) 1 ) << 24)\n+#define ACMD41_XPC                      (((uint32_t) 1 ) << 28)\n+#define ACMD41_HCS                      (((uint32_t) 1 ) << 30)\n+\n+/**\n+ * @brief ACMD6 command definitions\n+ */\n+#define ACMD6_BUS_WIDTH(n)              ((uint32_t) n & 0x03)\n+#define ACMD6_BUS_WIDTH_1               (0)\n+#define ACMD6_BUS_WIDTH_4               (2)\n+\n+/** @brief Card type defines\n+ */\n+#define CARD_TYPE_SD    (1 << 0)\n+#define CARD_TYPE_4BIT  (1 << 1)\n+#define CARD_TYPE_8BIT  (1 << 2)\n+#define CARD_TYPE_HC    (OCR_HC_CCS)/*!< high capacity card > 2GB */\n+\n+/**\n+ * @brief SD/MMC sector size in bytes\n+ */\n+#define MMC_SECTOR_SIZE     512\n+\n+/**\n+ * @brief Typical enumeration clock rate\n+ */\n+#define SD_MMC_ENUM_CLOCK       400000\n+\n+/**\n+ * @brief Max MMC clock rate\n+ */\n+#define MMC_MAX_CLOCK           20000000\n+\n+/**\n+ * @brief Type 0 MMC card max clock rate\n+ */\n+#define MMC_LOW_BUS_MAX_CLOCK   26000000\n+\n+/**\n+ * @brief Type 1 MMC card max clock rate\n+ */\n+#define MMC_HIGH_BUS_MAX_CLOCK  52000000\n+\n+/**\n+ * @brief Max SD clock rate\n+ */\n+#define SD_MAX_CLOCK            25000000\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __SDMMC_H */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/sgpio_18xx_43xx.h ./lpc_chip_43xx/inc/sgpio_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/sgpio_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sgpio_18xx_43xx.h\t2017-02-27 21:03:17.024043463 -0300\n@@ -0,0 +1,108 @@\n+/*\n+ * @brief LPC43xx Serial GPIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SGPIO_43XX_H_\n+#define __SGPIO_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SGPIO_43XX CHIP: LPC43xx Serial GPIO driver\n+ * @ingroup LPC_CHIP_18XX_43XX_Drivers\n+ * This module is present in LPC43xx MCUs only.\n+ * @{\n+ */\n+\n+#if defined(CHIP_LPC43XX)\n+\n+/**\n+ * @brief Serial GPIO register block structure\n+ */\n+typedef struct {                       /*!< SGPIO Structure        */\n+   __IO uint32_t  OUT_MUX_CFG[16];     /*!< Pin multiplexer configurationregisters. */\n+   __IO uint32_t  SGPIO_MUX_CFG[16];   /*!< SGPIO multiplexer configuration registers. */\n+   __IO uint32_t  SLICE_MUX_CFG[16];   /*!< Slice multiplexer configuration registers. */\n+   __IO uint32_t  REG[16];             /*!< Slice data registers. Eachtime COUNT0 reaches 0x0 the register shifts loading bit 31 withdata captured from DIN(n). DOUT(n) is set to REG(0) */\n+   __IO uint32_t  REG_SS[16];          /*!< Slice data shadow registers. Each time POSreaches 0x0 the contents of REG_SS is exchanged with the contentof REG */\n+   __IO uint32_t  PRESET[16];          /*!< Reload valueof COUNT0, loaded when COUNT0 reaches 0x0 */\n+   __IO uint32_t  COUNT[16];           /*!< Down counter, counts down each clock cycle. */\n+   __IO uint32_t  POS[16];             /*!< Each time COUNT0 reaches 0x0 */\n+   __IO uint32_t  MASK_A;              /*!< Mask for pattern match function of slice A */\n+   __IO uint32_t  MASK_H;              /*!< Mask for pattern match function of slice H */\n+   __IO uint32_t  MASK_I;              /*!< Mask for pattern match function of slice I */\n+   __IO uint32_t  MASK_P;              /*!< Mask for pattern match function of slice P */\n+   __I  uint32_t  GPIO_INREG;          /*!< GPIO input status register */\n+   __IO uint32_t  GPIO_OUTREG;         /*!< GPIO output control register */\n+   __IO uint32_t  GPIO_OENREG;         /*!< GPIO OE control register */\n+   __IO uint32_t  CTRL_ENABLED;        /*!< Enables the slice COUNT counter */\n+   __IO uint32_t  CTRL_DISABLED;       /*!< Disables the slice COUNT counter */\n+   __I  uint32_t  RESERVED0[823];\n+   __O  uint32_t  CLR_EN_0;            /*!< Shift clock interrupt clear mask */\n+   __O  uint32_t  SET_EN_0;            /*!< Shift clock interrupt set mask */\n+   __I  uint32_t  ENABLE_0;            /*!< Shift clock interrupt enable */\n+   __I  uint32_t  STATUS_0;            /*!< Shift clock interrupt status */\n+   __O  uint32_t  CTR_STATUS_0;        /*!< Shift clock interrupt clear status */\n+   __O  uint32_t  SET_STATUS_0;        /*!< Shift clock interrupt set status */\n+   __I  uint32_t  RESERVED1[2];\n+   __O  uint32_t  CLR_EN_1;            /*!< Capture clock interrupt clear mask */\n+   __O  uint32_t  SET_EN_1;            /*!< Capture clock interrupt set mask */\n+   __I  uint32_t  ENABLE_1;            /*!< Capture clock interrupt enable */\n+   __I  uint32_t  STATUS_1;            /*!< Capture clock interrupt status */\n+   __O  uint32_t  CTR_STATUS_1;        /*!< Capture clock interrupt clear status */\n+   __O  uint32_t  SET_STATUS_1;        /*!< Capture clock interrupt set status */\n+   __I  uint32_t  RESERVED2[2];\n+   __O  uint32_t  CLR_EN_2;            /*!< Pattern match interrupt clear mask */\n+   __O  uint32_t  SET_EN_2;            /*!< Pattern match interrupt set mask */\n+   __I  uint32_t  ENABLE_2;            /*!< Pattern match interrupt enable */\n+   __I  uint32_t  STATUS_2;            /*!< Pattern match interrupt status */\n+   __O  uint32_t  CTR_STATUS_2;        /*!< Pattern match interrupt clear status */\n+   __O  uint32_t  SET_STATUS_2;        /*!< Pattern match interrupt set status */\n+   __I  uint32_t  RESERVED3[2];\n+   __O  uint32_t  CLR_EN_3;            /*!< Input interrupt clear mask */\n+   __O  uint32_t  SET_EN_3;            /*!< Input bit match interrupt set mask */\n+   __I  uint32_t  ENABLE_3;            /*!< Input bit match interrupt enable */\n+   __I  uint32_t  STATUS_3;            /*!< Input bit match interrupt status */\n+   __O  uint32_t  CTR_STATUS_3;        /*!< Input bit match interrupt clear status */\n+   __O  uint32_t  SET_STATUS_3;        /*!< Shift clock interrupt set status */\n+} LPC_SGPIO_T;\n+\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SGPIO_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/spi_18xx_43xx.h ./lpc_chip_43xx/inc/spi_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/spi_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/spi_18xx_43xx.h\t2017-02-27 21:03:17.024043463 -0300\n@@ -0,0 +1,416 @@\n+/*\n+ * @brief LPC43xx SPI driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SPI_43XX_H_\n+#define __SPI_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SPI_43XX CHIP: LPC43xx SPI driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * This module is present in LPC43xx MCUs only.\n+ * @{\n+ */\n+#if defined(CHIP_LPC43XX)\n+\n+/**\n+ * @brief SPI register block structure\n+ */\n+typedef struct {                   /*!< SPI Structure          */\n+   __IO uint32_t  CR;              /*!< SPI Control Register. This register controls the operation of the SPI. */\n+   __I  uint32_t  SR;              /*!< SPI Status Register. This register shows the status of the SPI. */\n+   __IO uint32_t  DR;              /*!< SPI Data Register. This bi-directional register provides the transmit and receive data for the SPI. Transmit data is provided to the SPI0 by writing to this register. Data received by the SPI0 can be read from this register. */\n+   __IO uint32_t  CCR;             /*!< SPI Clock Counter Register. This register controls the frequency of a master's SCK0. */\n+   __I  uint32_t  RESERVED0[3];\n+   __IO uint32_t  INT;             /*!< SPI Interrupt Flag. This register contains the interrupt flag for the SPI interface. */\n+} LPC_SPI_T;\n+\n+/*\n+ * Macro defines for SPI Control register\n+ */\n+/* SPI CFG Register BitMask */\n+#define SPI_CR_BITMASK       ((uint32_t) 0xFFC)\n+/** Enable of controlling the number of bits per transfer  */\n+#define SPI_CR_BIT_EN         ((uint32_t) (1 << 2))\n+/** Mask of field of bit controlling */\n+#define SPI_CR_BITS_MASK      ((uint32_t) 0xF00)\n+/** Set the number of bits per a transfer */\n+#define SPI_CR_BITS(n)        ((uint32_t) ((n << 8) & 0xF00))  /* n is in range 8-16 */\n+/** SPI Clock Phase Select*/\n+#define SPI_CR_CPHA_FIRST     ((uint32_t) (0)) /*Capture data on the first edge, Change data on the following edge*/\n+#define SPI_CR_CPHA_SECOND    ((uint32_t) (1 << 3))    /*Change data on the first edge, Capture data on the following edge*/\n+/** SPI Clock Polarity Select*/\n+#define SPI_CR_CPOL_LO        ((uint32_t) (0)) /* The rest state of the clock (between frames) is low.*/\n+#define SPI_CR_CPOL_HI        ((uint32_t) (1 << 4))    /* The rest state of the clock (between frames) is high.*/\n+/** SPI Slave Mode Select */\n+#define SPI_CR_SLAVE_EN       ((uint32_t) 0)\n+/** SPI Master Mode Select */\n+#define SPI_CR_MASTER_EN      ((uint32_t) (1 << 5))\n+/** SPI MSB First mode enable */\n+#define SPI_CR_MSB_FIRST_EN   ((uint32_t) 0)   /*Data will be transmitted and received in standard order (MSB first).*/\n+/** SPI LSB First mode enable */\n+#define SPI_CR_LSB_FIRST_EN   ((uint32_t) (1 << 6))    /*Data will be transmitted and received in reverse order (LSB first).*/\n+/** SPI interrupt enable */\n+#define SPI_CR_INT_EN         ((uint32_t) (1 << 7))\n+\n+/*\n+ * Macro defines for SPI Status register\n+ */\n+/** SPI STAT Register BitMask */\n+#define SPI_SR_BITMASK        ((uint32_t) 0xF8)\n+/** Slave abort Flag */\n+#define SPI_SR_ABRT           ((uint32_t) (1 << 3))    /* When 1, this bit indicates that a slave abort has occurred. */\n+/* Mode fault Flag */\n+#define SPI_SR_MODF           ((uint32_t) (1 << 4))    /* when 1, this bit indicates that a Mode fault error has occurred. */\n+/** Read overrun flag*/\n+#define SPI_SR_ROVR           ((uint32_t) (1 << 5))    /* When 1, this bit indicates that a read overrun has occurred. */\n+/** Write collision flag. */\n+#define SPI_SR_WCOL           ((uint32_t) (1 << 6))    /* When 1, this bit indicates that a write collision has occurred.. */\n+/** SPI transfer complete flag. */\n+#define SPI_SR_SPIF           ((uint32_t) (1 << 7))        /* When 1, this bit indicates when a SPI data transfer is complete.. */\n+/** SPI error flag */\n+#define SPI_SR_ERROR          (SPI_SR_ABRT | SPI_SR_MODF | SPI_SR_ROVR | SPI_SR_WCOL)\n+/*\n+ * Macro defines for SPI Test Control Register register\n+ */\n+/*Enable SPI Test Mode */\n+#define SPI_TCR_TEST(n)       ((uint32_t) ((n & 0x3F) << 1))\n+\n+/*\n+ * Macro defines for SPI Interrupt register\n+ */\n+/** SPI interrupt flag */\n+#define SPI_INT_SPIF          ((uint32_t) (1 << 0))\n+\n+/**\n+ * Macro defines for SPI Data register\n+ */\n+/** Receiver Data  */\n+#define SPI_DR_DATA(n)        ((uint32_t) ((n) & 0xFFFF))\n+\n+/** @brief SPI Mode*/\n+typedef enum {\n+   SPI_MODE_MASTER = SPI_CR_MASTER_EN,         /* Master Mode */\n+   SPI_MODE_SLAVE = SPI_CR_SLAVE_EN,           /* Slave Mode */\n+} SPI_MODE_T;\n+\n+/** @brief SPI Clock Mode*/\n+typedef enum {\n+   SPI_CLOCK_CPHA0_CPOL0 = SPI_CR_CPOL_LO | SPI_CR_CPHA_FIRST,     /**< CPHA = 0, CPOL = 0 */\n+   SPI_CLOCK_CPHA0_CPOL1 = SPI_CR_CPOL_HI | SPI_CR_CPHA_FIRST,     /**< CPHA = 0, CPOL = 1 */\n+   SPI_CLOCK_CPHA1_CPOL0 = SPI_CR_CPOL_LO | SPI_CR_CPHA_SECOND,    /**< CPHA = 1, CPOL = 0 */\n+   SPI_CLOCK_CPHA1_CPOL1 = SPI_CR_CPOL_HI | SPI_CR_CPHA_SECOND,    /**< CPHA = 1, CPOL = 1 */\n+   SPI_CLOCK_MODE0 = SPI_CLOCK_CPHA0_CPOL0,/**< alias */\n+   SPI_CLOCK_MODE1 = SPI_CLOCK_CPHA1_CPOL0,/**< alias */\n+   SPI_CLOCK_MODE2 = SPI_CLOCK_CPHA0_CPOL1,/**< alias */\n+   SPI_CLOCK_MODE3 = SPI_CLOCK_CPHA1_CPOL1,/**< alias */\n+} SPI_CLOCK_MODE_T;\n+\n+/** @brief SPI Data Order Mode*/\n+typedef enum {\n+   SPI_DATA_MSB_FIRST = SPI_CR_MSB_FIRST_EN,           /* Standard Order */\n+   SPI_DATA_LSB_FIRST = SPI_CR_LSB_FIRST_EN,           /* Reverse Order */\n+} SPI_DATA_ORDER_T;\n+\n+/*\n+ * @brief Number of bits per frame\n+ */\n+typedef enum {\n+   SPI_BITS_8 = SPI_CR_BITS(8),        /**< 8 bits/frame */\n+   SPI_BITS_9 = SPI_CR_BITS(9),        /**< 9 bits/frame */\n+   SPI_BITS_10 = SPI_CR_BITS(10),      /**< 10 bits/frame */\n+   SPI_BITS_11 = SPI_CR_BITS(11),      /**< 11 bits/frame */\n+   SPI_BITS_12 = SPI_CR_BITS(12),      /**< 12 bits/frame */\n+   SPI_BITS_13 = SPI_CR_BITS(13),      /**< 13 bits/frame */\n+   SPI_BITS_14 = SPI_CR_BITS(14),      /**< 14 bits/frame */\n+   SPI_BITS_15 = SPI_CR_BITS(15),      /**< 15 bits/frame */\n+   SPI_BITS_16 = SPI_CR_BITS(16),      /**< 16 bits/frame */\n+} SPI_BITS_T;\n+\n+/** SPI callback function type*/\n+typedef void (*SPI_CALLBACK_T)(void);\n+/*\n+ * @brief SPI config format\n+ */\n+typedef struct {\n+   SPI_BITS_T bits;                        /*!< bits/frame */\n+   SPI_CLOCK_MODE_T clockMode; /*!< Format config: clock phase/polarity */\n+   SPI_DATA_ORDER_T dataOrder; /*!< Data order (MSB first/LSB first) */\n+} SPI_CONFIG_FORMAT_T;\n+\n+/*\n+ * @brief SPI data setup structure\n+ */\n+typedef struct {\n+   uint8_t      *pTxData;                  /*!< Pointer to transmit data */\n+   uint8_t      *pRxData;                  /*!< Pointer to receive data */\n+   uint32_t  cnt;                          /*!< Transfer counter */\n+   uint32_t  length;                       /*!< Length of transfer data */\n+   SPI_CALLBACK_T    fnBefFrame;               /*!< Function to call before sending frame */\n+   SPI_CALLBACK_T    fnAftFrame;               /*!< Function to call after sending frame */\n+   SPI_CALLBACK_T    fnBefTransfer;            /*!< Function to call before starting a transfer */\n+   SPI_CALLBACK_T    fnAftTransfer;            /*!< Function to call after a transfer complete */\n+} SPI_DATA_SETUP_T;\n+\n+/**\n+ * @brief  Get the current status of SPI controller\n+ * @return SPI controller status (Or-ed value of SPI_SR_*)\n+ */\n+STATIC INLINE uint32_t Chip_SPI_GetStatus(LPC_SPI_T *pSPI)\n+{\n+   return pSPI->SR;\n+}\n+\n+/**\n+ * @brief  Send SPI 16-bit data\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @param  data    : Transmit Data\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_SendFrame(LPC_SPI_T *pSPI, uint16_t data)\n+{\n+   pSPI->DR = SPI_DR_DATA(data);\n+}\n+\n+/**\n+ * @brief  Get received SPI data\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return receive data\n+ */\n+STATIC INLINE uint16_t Chip_SPI_ReceiveFrame(LPC_SPI_T *pSPI)\n+{\n+   return SPI_DR_DATA(pSPI->DR);\n+}\n+\n+/**\n+ * @brief  Set up output clocks per bit for SPI bus\n+ * @param  pSPI        : The base of SPI peripheral on the chip\n+ * @param  counter : the number of SPI peripheral clock cycles that make up an SPI clock\n+ * @return  Nothing\n+ * @note   The counter must be an even number greater than or equal to 8. <br>\n+ *     The SPI SCK rate = PCLK_SPI / counter.\n+ */\n+STATIC INLINE void Chip_SPI_SetClockCounter(LPC_SPI_T *pSPI, uint32_t counter)\n+{\n+   pSPI->CCR = counter;\n+}\n+\n+/**\n+ * @brief   Set up the SPI frame format\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  format          : Pointer to Frame format structure\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_SetFormat(LPC_SPI_T *pSPI, SPI_CONFIG_FORMAT_T *format)\n+{\n+   pSPI->CR = (pSPI->CR & (~0xF1C)) | SPI_CR_BIT_EN | format->bits | format->clockMode | format->dataOrder;\n+}\n+\n+/**\n+ * @brief  Get the number of bits transferred in each frame\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return  the number of bits transferred in each frame\n+ */\n+STATIC INLINE SPI_BITS_T Chip_SPI_GetDataSize(LPC_SPI_T *pSPI)\n+{\n+   return (pSPI->CR & SPI_CR_BIT_EN) ? ((SPI_BITS_T) (pSPI->CR & SPI_CR_BITS_MASK)) : SPI_BITS_8;\n+}\n+\n+/**\n+ * @brief  Get the current CPHA & CPOL setting\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return CPHA & CPOL setting\n+ */\n+STATIC INLINE SPI_CLOCK_MODE_T Chip_SPI_GetClockMode(LPC_SPI_T *pSPI)\n+{\n+   return (SPI_CLOCK_MODE_T) (pSPI->CR & (3 << 3));\n+}\n+\n+/**\n+ * @brief  Set the SPI working as master or slave mode\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return  Operating mode\n+ */\n+STATIC INLINE SPI_MODE_T Chip_SPI_GetMode(LPC_SPI_T *pSPI)\n+{\n+   return (SPI_MODE_T) (pSPI->CR & (1 << 5));\n+}\n+\n+/**\n+ * @brief   Set the SPI operating modes, master or slave\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  mode        : master mode/slave mode\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_SetMode(LPC_SPI_T *pSPI, SPI_MODE_T mode)\n+{\n+   pSPI->CR = (pSPI->CR & (~(1 << 5))) | mode;\n+}\n+\n+/**\n+ * @brief   Set the clock frequency for SPI interface\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  bitRate     : The SPI bit rate\n+ * @return Nothing\n+ */\n+void Chip_SPI_SetBitRate(LPC_SPI_T *pSPI, uint32_t bitRate);\n+\n+/**\n+ * @brief   Enable SPI interrupt\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_Int_Enable(LPC_SPI_T *pSPI)\n+{\n+   pSPI->CR |= SPI_CR_INT_EN;\n+}\n+\n+/**\n+ * @brief   Disable SPI interrupt\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_Int_Disable(LPC_SPI_T *pSPI)\n+{\n+   pSPI->CR &= ~SPI_CR_INT_EN;\n+}\n+\n+/**\n+ * @brief  Get the interrupt status\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return SPI interrupt Status (Or-ed bit value of SPI_INT_*)\n+ */\n+STATIC INLINE uint32_t Chip_SPI_Int_GetStatus(LPC_SPI_T *pSPI)\n+{\n+   return pSPI->INT;\n+}\n+\n+/**\n+ * @brief  Clear the interrupt status\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @param  mask    : SPI interrupt mask (Or-ed bit value of SPI_INT_*)\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_SPI_Int_ClearStatus(LPC_SPI_T *pSPI, uint32_t mask)\n+{\n+   pSPI->INT = mask;\n+}\n+\n+/**\n+ * @brief   Initialize the SPI\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SPI_Init(LPC_SPI_T *pSPI);\n+\n+/**\n+ * @brief  Deinitialise the SPI\n+ * @param  pSPI    : The base of SPI peripheral on the chip\n+ * @return Nothing\n+ * @note   The SPI controller is disabled\n+ */\n+void Chip_SPI_DeInit(LPC_SPI_T *pSPI);\n+\n+/**\n+ * @brief   Clean all data in RX FIFO of SPI\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SPI_Int_FlushData(LPC_SPI_T *pSPI);\n+\n+/**\n+ * @brief   SPI Interrupt Read/Write with 8-bit frame width\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SPI_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_SPI_Int_RWFrames8Bits(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SPI Interrupt Read/Write with 16-bit frame width\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SPI_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_SPI_Int_RWFrames16Bits(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SPI Polling Read/Write in blocking mode\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  pXfSetup        : Pointer to a SPI_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. It starts with writing phase and after that,\n+ * a reading phase is generated to read any data available in RX_FIFO. All needed information is prepared\n+ * through xf_setup param.\n+ */\n+uint32_t Chip_SPI_RWFrames_Blocking(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup);\n+\n+/**\n+ * @brief   SPI Polling Write in blocking mode\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  buffer          : Buffer address\n+ * @param  buffer_len      : Buffer length\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. First, a writing operation will send\n+ * the needed data. After that, a dummy reading operation is generated to clear data buffer\n+ */\n+uint32_t Chip_SPI_WriteFrames_Blocking(LPC_SPI_T *pSPI, uint8_t *buffer, uint32_t buffer_len);\n+\n+/**\n+ * @brief   SPI Polling Read in blocking mode\n+ * @param  pSPI            : The base SPI peripheral on the chip\n+ * @param  buffer          : Buffer address\n+ * @param  buffer_len      : The length of buffer\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. First, a dummy writing operation is generated\n+ * to clear data buffer. After that, a reading operation will receive the needed data\n+ */\n+uint32_t Chip_SPI_ReadFrames_Blocking(LPC_SPI_T *pSPI, uint8_t *buffer, uint32_t buffer_len);\n+\n+#endif\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SPI_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/ssp_18xx_43xx.h ./lpc_chip_43xx/inc/ssp_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/ssp_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/ssp_18xx_43xx.h\t2017-02-27 21:03:17.024043463 -0300\n@@ -0,0 +1,598 @@\n+/*\n+ * @brief LPC18xx/43xx SSP driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SSP_18XX_43XX_H_\n+#define __SSP_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup SSP_18XX_43XX CHIP: LPC18xx/43xx SSP driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief SSP register block structure\n+ */\n+typedef struct {           /*!< SSPn Structure         */\n+   __IO uint32_t CR0;      /*!< Control Register 0. Selects the serial clock rate, bus type, and data size. */\n+   __IO uint32_t CR1;      /*!< Control Register 1. Selects master/slave and other modes. */\n+   __IO uint32_t DR;       /*!< Data Register. Writes fill the transmit FIFO, and reads empty the receive FIFO. */\n+   __I  uint32_t SR;       /*!< Status Register        */\n+   __IO uint32_t CPSR;     /*!< Clock Prescale Register */\n+   __IO uint32_t IMSC;     /*!< Interrupt Mask Set and Clear Register */\n+   __I  uint32_t RIS;      /*!< Raw Interrupt Status Register */\n+   __I  uint32_t MIS;      /*!< Masked Interrupt Status Register */\n+   __O  uint32_t ICR;      /*!< SSPICR Interrupt Clear Register */\n+   __IO uint32_t DMACR;    /*!< SSPn DMA control register */\n+} LPC_SSP_T;\n+\n+/**\n+ * Macro defines for CR0 register\n+ */\n+\n+/** SSP data size select, must be 4 bits to 16 bits */\n+#define SSP_CR0_DSS(n)          ((uint32_t) ((n) & 0xF))\n+/** SSP control 0 Motorola SPI mode */\n+#define SSP_CR0_FRF_SPI         ((uint32_t) (0 << 4))\n+/** SSP control 0 TI synchronous serial mode */\n+#define SSP_CR0_FRF_TI          ((uint32_t) (1 << 4))\n+/** SSP control 0 National Micro-wire mode */\n+#define SSP_CR0_FRF_MICROWIRE   ((uint32_t) (2 << 4))\n+/** SPI clock polarity bit (used in SPI mode only), (1) = maintains the\n+   bus clock high between frames, (0) = low */\n+#define SSP_CR0_CPOL_LO     ((uint32_t) (0))\n+#define SSP_CR0_CPOL_HI     ((uint32_t) (1 << 6))\n+/** SPI clock out phase bit (used in SPI mode only), (1) = captures data\n+   on the second clock transition of the frame, (0) = first */\n+#define SSP_CR0_CPHA_FIRST  ((uint32_t) (0))\n+#define SSP_CR0_CPHA_SECOND ((uint32_t) (1 << 7))\n+/** SSP serial clock rate value load macro, divider rate is\n+   PERIPH_CLK / (cpsr * (SCR + 1)) */\n+#define SSP_CR0_SCR(n)      ((uint32_t) ((n & 0xFF) << 8))\n+/** SSP CR0 bit mask */\n+#define SSP_CR0_BITMASK     ((uint32_t) (0xFFFF))\n+/** SSP CR0 bit mask */\n+#define SSP_CR0_BITMASK     ((uint32_t) (0xFFFF))\n+/** SSP serial clock rate value load macro, divider rate is\n+   PERIPH_CLK / (cpsr * (SCR + 1)) */\n+#define SSP_CR0_SCR(n)      ((uint32_t) ((n & 0xFF) << 8))\n+\n+/**\n+ * Macro defines for CR1 register\n+ */\n+\n+/** SSP control 1 loopback mode enable bit */\n+#define SSP_CR1_LBM_EN      ((uint32_t) (1 << 0))\n+/** SSP control 1 enable bit */\n+#define SSP_CR1_SSP_EN      ((uint32_t) (1 << 1))\n+/** SSP control 1 slave enable */\n+#define SSP_CR1_SLAVE_EN    ((uint32_t) (1 << 2))\n+#define SSP_CR1_MASTER_EN   ((uint32_t) (0))\n+/** SSP control 1 slave out disable bit, disables transmit line in slave\n+   mode */\n+#define SSP_CR1_SO_DISABLE  ((uint32_t) (1 << 3))\n+/** SSP CR1 bit mask */\n+#define SSP_CR1_BITMASK     ((uint32_t) (0x0F))\n+\n+/** SSP CPSR bit mask */\n+#define SSP_CPSR_BITMASK    ((uint32_t) (0xFF))\n+/**\n+ * Macro defines for DR register\n+ */\n+\n+/** SSP data bit mask */\n+#define SSP_DR_BITMASK(n)   ((n) & 0xFFFF)\n+\n+/**\n+ * Macro defines for SR register\n+ */\n+\n+/** SSP SR bit mask */\n+#define SSP_SR_BITMASK  ((uint32_t) (0x1F))\n+\n+/** ICR bit mask */\n+#define SSP_ICR_BITMASK ((uint32_t) (0x03))\n+\n+/**\n+ * @brief SSP Type of Status\n+ */\n+typedef enum _SSP_STATUS {\n+   SSP_STAT_TFE = ((uint32_t)(1 << 0)),/**< TX FIFO Empty */\n+   SSP_STAT_TNF = ((uint32_t)(1 << 1)),/**< TX FIFO not full */\n+   SSP_STAT_RNE = ((uint32_t)(1 << 2)),/**< RX FIFO not empty */\n+   SSP_STAT_RFF = ((uint32_t)(1 << 3)),/**< RX FIFO full */\n+   SSP_STAT_BSY = ((uint32_t)(1 << 4)),/**< SSP Busy */\n+} SSP_STATUS_T;\n+\n+/**\n+ * @brief SSP Type of Interrupt Mask\n+ */\n+typedef enum _SSP_INTMASK {\n+   SSP_RORIM = ((uint32_t)(1 << 0)),   /**< Overun */\n+   SSP_RTIM = ((uint32_t)(1 << 1)),/**< TimeOut */\n+   SSP_RXIM = ((uint32_t)(1 << 2)),/**< Rx FIFO is at least half full */\n+   SSP_TXIM = ((uint32_t)(1 << 3)),/**< Tx FIFO is at least half empty */\n+   SSP_INT_MASK_BITMASK = ((uint32_t)(0xF)),\n+} SSP_INTMASK_T;\n+\n+/**\n+ * @brief SSP Type of Mask Interrupt Status\n+ */\n+typedef enum _SSP_MASKINTSTATUS {\n+   SSP_RORMIS = ((uint32_t)(1 << 0)),  /**< Overun */\n+   SSP_RTMIS = ((uint32_t)(1 << 1)),   /**< TimeOut */\n+   SSP_RXMIS = ((uint32_t)(1 << 2)),   /**< Rx FIFO is at least half full */\n+   SSP_TXMIS = ((uint32_t)(1 << 3)),   /**< Tx FIFO is at least half empty */\n+   SSP_MASK_INT_STAT_BITMASK = ((uint32_t)(0xF)),\n+} SSP_MASKINTSTATUS_T;\n+\n+/**\n+ * @brief SSP Type of Raw Interrupt Status\n+ */\n+typedef enum _SSP_RAWINTSTATUS {\n+   SSP_RORRIS = ((uint32_t)(1 << 0)),  /**< Overun */\n+   SSP_RTRIS = ((uint32_t)(1 << 1)),   /**< TimeOut */\n+   SSP_RXRIS = ((uint32_t)(1 << 2)),   /**< Rx FIFO is at least half full */\n+   SSP_TXRIS = ((uint32_t)(1 << 3)),   /**< Tx FIFO is at least half empty */\n+   SSP_RAW_INT_STAT_BITMASK = ((uint32_t)(0xF)),\n+} SSP_RAWINTSTATUS_T;\n+\n+typedef enum _SSP_INTCLEAR {\n+   SSP_RORIC = 0x0,\n+   SSP_RTIC = 0x1,\n+   SSP_INT_CLEAR_BITMASK = 0x3,\n+} SSP_INTCLEAR_T;\n+\n+typedef enum _SSP_DMA {\n+   SSP_DMA_RX = (1u),  /**< DMA RX Enable */\n+   SSP_DMA_TX = (1u << 1), /**< DMA TX Enable */\n+   SSP_DMA_BITMASK = ((uint32_t)(0x3)),\n+} SSP_DMA_T;\n+\n+/*\n+ * @brief SSP clock format\n+ */\n+typedef enum CHIP_SSP_CLOCK_FORMAT {\n+   SSP_CLOCK_CPHA0_CPOL0 = (0 << 6),       /**< CPHA = 0, CPOL = 0 */\n+   SSP_CLOCK_CPHA0_CPOL1 = (1u << 6),      /**< CPHA = 0, CPOL = 1 */\n+   SSP_CLOCK_CPHA1_CPOL0 = (2u << 6),      /**< CPHA = 1, CPOL = 0 */\n+   SSP_CLOCK_CPHA1_CPOL1 = (3u << 6),      /**< CPHA = 1, CPOL = 1 */\n+   SSP_CLOCK_MODE0 = SSP_CLOCK_CPHA0_CPOL0,/**< alias */\n+   SSP_CLOCK_MODE1 = SSP_CLOCK_CPHA1_CPOL0,/**< alias */\n+   SSP_CLOCK_MODE2 = SSP_CLOCK_CPHA0_CPOL1,/**< alias */\n+   SSP_CLOCK_MODE3 = SSP_CLOCK_CPHA1_CPOL1,/**< alias */\n+} CHIP_SSP_CLOCK_MODE_T;\n+\n+/*\n+ * @brief SSP frame format\n+ */\n+typedef enum CHIP_SSP_FRAME_FORMAT {\n+   SSP_FRAMEFORMAT_SPI = (0 << 4),         /**< Frame format: SPI */\n+   CHIP_SSP_FRAME_FORMAT_TI = (1u << 4),           /**< Frame format: TI SSI */\n+   SSP_FRAMEFORMAT_MICROWIRE = (2u << 4),  /**< Frame format: Microwire */\n+} CHIP_SSP_FRAME_FORMAT_T;\n+\n+/*\n+ * @brief Number of bits per frame\n+ */\n+typedef enum CHIP_SSP_BITS {\n+   SSP_BITS_4 = (3u << 0),     /*!< 4 bits/frame */\n+   SSP_BITS_5 = (4u << 0),     /*!< 5 bits/frame */\n+   SSP_BITS_6 = (5u << 0),     /*!< 6 bits/frame */\n+   SSP_BITS_7 = (6u << 0),     /*!< 7 bits/frame */\n+   SSP_BITS_8 = (7u << 0),     /*!< 8 bits/frame */\n+   SSP_BITS_9 = (8u << 0),     /*!< 9 bits/frame */\n+   SSP_BITS_10 = (9u << 0),    /*!< 10 bits/frame */\n+   SSP_BITS_11 = (10u << 0),   /*!< 11 bits/frame */\n+   SSP_BITS_12 = (11u << 0),   /*!< 12 bits/frame */\n+   SSP_BITS_13 = (12u << 0),   /*!< 13 bits/frame */\n+   SSP_BITS_14 = (13u << 0),   /*!< 14 bits/frame */\n+   SSP_BITS_15 = (14u << 0),   /*!< 15 bits/frame */\n+   SSP_BITS_16 = (15u << 0),   /*!< 16 bits/frame */\n+} CHIP_SSP_BITS_T;\n+\n+/*\n+ * @brief SSP config format\n+ */\n+typedef struct SSP_ConfigFormat {\n+   CHIP_SSP_BITS_T bits;                   /*!< Format config: bits/frame */\n+   CHIP_SSP_CLOCK_MODE_T clockMode;    /*!< Format config: clock phase/polarity */\n+   CHIP_SSP_FRAME_FORMAT_T frameFormat;    /*!< Format config: SPI/TI/Microwire */\n+} SSP_ConfigFormat;\n+\n+/**\n+ * @brief  Enable SSP operation\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Enable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->CR1 |= SSP_CR1_SSP_EN;\n+}\n+\n+/**\n+ * @brief  Disable SSP operation\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Disable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->CR1 &= (~SSP_CR1_SSP_EN) & SSP_CR1_BITMASK;\n+}\n+\n+/**\n+ * @brief  Enable loopback mode\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ * @note   Serial input is taken from the serial output (MOSI or MISO) rather\n+ * than the serial input pin\n+ */\n+STATIC INLINE void Chip_SSP_EnableLoopBack(LPC_SSP_T *pSSP)\n+{\n+   pSSP->CR1 |= SSP_CR1_LBM_EN;\n+}\n+\n+/**\n+ * @brief  Disable loopback mode\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ * @note   Serial input is taken from the serial output (MOSI or MISO) rather\n+ * than the serial input pin\n+ */\n+STATIC INLINE void Chip_SSP_DisableLoopBack(LPC_SSP_T *pSSP)\n+{\n+   pSSP->CR1 &= (~SSP_CR1_LBM_EN) & SSP_CR1_BITMASK;\n+}\n+\n+/**\n+ * @brief  Get the current status of SSP controller\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  Stat    : Type of status, should be :\n+ *                     - SSP_STAT_TFE\n+ *                     - SSP_STAT_TNF\n+ *                     - SSP_STAT_RNE\n+ *                     - SSP_STAT_RFF\n+ *                     - SSP_STAT_BSY\n+ * @return  SSP controller status, SET or RESET\n+ */\n+STATIC INLINE FlagStatus Chip_SSP_GetStatus(LPC_SSP_T *pSSP, SSP_STATUS_T Stat)\n+{\n+   return (pSSP->SR & Stat) ? SET : RESET;\n+}\n+\n+/**\n+ * @brief  Get the masked interrupt status\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  SSP Masked Interrupt Status Register value\n+ * @note   The return value contains a 1 for each interrupt condition that is asserted and enabled (masked)\n+ */\n+STATIC INLINE uint32_t Chip_SSP_GetIntStatus(LPC_SSP_T *pSSP)\n+{\n+   return pSSP->MIS;\n+}\n+\n+/**\n+ * @brief  Get the raw interrupt status\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  RawInt  : Interrupt condition to be get status, shoud be :\n+ *                     - SSP_RORRIS\n+ *                     - SSP_RTRIS\n+ *                     - SSP_RXRIS\n+ *                     - SSP_TXRIS\n+ * @return  Raw interrupt status corresponding to interrupt condition , SET or RESET\n+ * @note   Get the status of each interrupt condition ,regardless of whether or not the interrupt is enabled\n+ */\n+STATIC INLINE IntStatus Chip_SSP_GetRawIntStatus(LPC_SSP_T *pSSP, SSP_RAWINTSTATUS_T RawInt)\n+{\n+   return (pSSP->RIS & RawInt) ? SET : RESET;\n+}\n+\n+/**\n+ * @brief  Get the number of bits transferred in each frame\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  the number of bits transferred in each frame minus one\n+ * @note   The return value is 0x03 -> 0xF corresponding to 4bit -> 16bit transfer\n+ */\n+STATIC INLINE uint8_t Chip_SSP_GetDataSize(LPC_SSP_T *pSSP)\n+{\n+   return SSP_CR0_DSS(pSSP->CR0);\n+}\n+\n+/**\n+ * @brief  Clear the corresponding interrupt condition(s) in the SSP controller\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  IntClear: Type of cleared interrupt, should be :\n+ *                     - SSP_RORIC\n+ *                     - SSP_RTIC\n+ * @return  Nothing\n+ * @note   Software can clear one or more interrupt condition(s) in the SSP controller\n+ */\n+STATIC INLINE void Chip_SSP_ClearIntPending(LPC_SSP_T *pSSP, SSP_INTCLEAR_T IntClear)\n+{\n+   pSSP->ICR = IntClear;\n+}\n+\n+/**\n+ * @brief  Enable interrupt for the SSP\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Int_Enable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->IMSC |= SSP_TXIM;\n+}\n+\n+/**\n+ * @brief  Disable interrupt for the SSP\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Int_Disable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->IMSC &= (~SSP_TXIM);\n+}\n+\n+/**\n+ * @brief  Get received SSP data\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  SSP 16-bit data received\n+ */\n+STATIC INLINE uint16_t Chip_SSP_ReceiveFrame(LPC_SSP_T *pSSP)\n+{\n+   return (uint16_t) (SSP_DR_BITMASK(pSSP->DR));\n+}\n+\n+/**\n+ * @brief  Send SSP 16-bit data\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  tx_data : SSP 16-bit data to be transmited\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_SendFrame(LPC_SSP_T *pSSP, uint16_t tx_data)\n+{\n+   pSSP->DR = SSP_DR_BITMASK(tx_data);\n+}\n+\n+/**\n+ * @brief  Set up output clocks per bit for SSP bus\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @param  clk_rate    fs: The number of prescaler-output clocks per bit on the bus, minus one\n+ * @param  prescale    : The factor by which the Prescaler divides the SSP peripheral clock PCLK\n+ * @return  Nothing\n+ * @note   The bit frequency is PCLK / (prescale x[clk_rate+1])\n+ */\n+void Chip_SSP_SetClockRate(LPC_SSP_T *pSSP, uint32_t clk_rate, uint32_t prescale);\n+\n+/**\n+ * @brief  Set up the SSP frame format\n+ * @param  pSSP        : The base of SSP peripheral on the chip\n+ * @param  bits        : The number of bits transferred in each frame, should be SSP_BITS_4 to SSP_BITS_16\n+ * @param  frameFormat : Frame format, should be :\n+ *                         - SSP_FRAMEFORMAT_SPI\n+ *                         - SSP_FRAME_FORMAT_TI\n+ *                         - SSP_FRAMEFORMAT_MICROWIRE\n+ * @param  clockMode   : Select Clock polarity and Clock phase, should be :\n+ *                         - SSP_CLOCK_CPHA0_CPOL0\n+ *                         - SSP_CLOCK_CPHA0_CPOL1\n+ *                         - SSP_CLOCK_CPHA1_CPOL0\n+ *                         - SSP_CLOCK_CPHA1_CPOL1\n+ * @return  Nothing\n+ * @note   Note: The clockFormat is only used in SPI mode\n+ */\n+STATIC INLINE void Chip_SSP_SetFormat(LPC_SSP_T *pSSP, uint32_t bits, uint32_t frameFormat, uint32_t clockMode)\n+{\n+   pSSP->CR0 = (pSSP->CR0 & ~0xFF) | bits | frameFormat | clockMode;\n+}\n+\n+/**\n+ * @brief  Set the SSP working as master or slave mode\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @param  mode    : Operating mode, should be\n+ *                     - SSP_MODE_MASTER\n+ *                     - SSP_MODE_SLAVE\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_Set_Mode(LPC_SSP_T *pSSP, uint32_t mode)\n+{\n+   pSSP->CR1 = (pSSP->CR1 & ~(1 << 2)) | mode;\n+}\n+\n+/**\n+ * @brief  Enable DMA for SSP\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_DMA_Enable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->DMACR |= SSP_DMA_BITMASK;\n+}\n+\n+/**\n+ * @brief  Disable DMA for SSP\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return  Nothing\n+ */\n+STATIC INLINE void Chip_SSP_DMA_Disable(LPC_SSP_T *pSSP)\n+{\n+   pSSP->DMACR &= ~SSP_DMA_BITMASK;\n+}\n+\n+/*\n+ * @brief SSP mode\n+ */\n+typedef enum CHIP_SSP_MODE {\n+   SSP_MODE_MASTER = (0 << 2), /**< Master mode */\n+   SSP_MODE_SLAVE = (1u << 2), /**< Slave mode */\n+} CHIP_SSP_MODE_T;\n+\n+/*\n+ * @brief SPI address\n+ */\n+typedef struct {\n+   uint8_t port;   /*!< Port Number */\n+   uint8_t pin;    /*!< Pin number */\n+} SPI_Address_t;\n+\n+/*\n+ * @brief SSP data setup structure\n+ */\n+typedef struct {\n+   void      *tx_data; /*!< Pointer to transmit data */\n+   uint32_t  tx_cnt;   /*!< Transmit counter */\n+   void      *rx_data; /*!< Pointer to transmit data */\n+   uint32_t  rx_cnt;   /*!< Receive counter */\n+   uint32_t  length;   /*!< Length of transfer data */\n+} Chip_SSP_DATA_SETUP_T;\n+\n+/** SSP configuration parameter defines */\n+/** Clock phase control bit */\n+#define SSP_CPHA_FIRST          SSP_CR0_CPHA_FIRST\n+#define SSP_CPHA_SECOND         SSP_CR0_CPHA_SECOND\n+\n+/** Clock polarity control bit */\n+/* There's no bug here!!!\n+ * - If bit[6] in SSPnCR0 is 0: SSP controller maintains the bus clock low between frames.\n+ * That means the active clock is in HI state.\n+ * - If bit[6] in SSPnCR0 is 1 (SSP_CR0_CPOL_HI): SSP controller maintains the bus clock\n+ * high between frames. That means the active clock is in LO state.\n+ */\n+#define SSP_CPOL_HI             SSP_CR0_CPOL_LO\n+#define SSP_CPOL_LO             SSP_CR0_CPOL_HI\n+\n+/** SSP master mode enable */\n+#define SSP_SLAVE_MODE          SSP_CR1_SLAVE_EN\n+#define SSP_MASTER_MODE         SSP_CR1_MASTER_EN\n+\n+/**\n+ * @brief   Clean all data in RX FIFO of SSP\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SSP_Int_FlushData(LPC_SSP_T *pSSP);\n+\n+/**\n+ * @brief   SSP Interrupt Read/Write with 8-bit frame width\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SSP_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_SSP_Int_RWFrames8Bits(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SSP Interrupt Read/Write with 16-bit frame width\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SSP_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return SUCCESS or ERROR\n+ */\n+Status Chip_SSP_Int_RWFrames16Bits(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SSP Polling Read/Write in blocking mode\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  xf_setup        : Pointer to a SSP_DATA_SETUP_T structure that contains specified\n+ *                          information about transmit/receive data    configuration\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. It starts with writing phase and after that,\n+ * a reading phase is generated to read any data available in RX_FIFO. All needed information is prepared\n+ * through xf_setup param.\n+ */\n+uint32_t Chip_SSP_RWFrames_Blocking(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup);\n+\n+/**\n+ * @brief   SSP Polling Write in blocking mode\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  buffer          : Buffer address\n+ * @param  buffer_len      : Buffer length\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. First, a writing operation will send\n+ * the needed data. After that, a dummy reading operation is generated to clear data buffer\n+ */\n+uint32_t Chip_SSP_WriteFrames_Blocking(LPC_SSP_T *pSSP, const uint8_t *buffer, uint32_t buffer_len);\n+\n+/**\n+ * @brief   SSP Polling Read in blocking mode\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  buffer          : Buffer address\n+ * @param  buffer_len      : The length of buffer\n+ * @return Actual data length has been transferred\n+ * @note\n+ * This function can be used in both master and slave mode. First, a dummy writing operation is generated\n+ * to clear data buffer. After that, a reading operation will receive the needed data\n+ */\n+uint32_t Chip_SSP_ReadFrames_Blocking(LPC_SSP_T *pSSP, uint8_t *buffer, uint32_t buffer_len);\n+\n+/**\n+ * @brief   Initialize the SSP\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @return Nothing\n+ */\n+void Chip_SSP_Init(LPC_SSP_T *pSSP);\n+\n+/**\n+ * @brief  Deinitialise the SSP\n+ * @param  pSSP    : The base of SSP peripheral on the chip\n+ * @return Nothing\n+ * @note   The SSP controller is disabled\n+ */\n+void Chip_SSP_DeInit(LPC_SSP_T *pSSP);\n+\n+/**\n+ * @brief   Set the SSP operating modes, master or slave\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  master          : 1 to set master, 0 to set slave\n+ * @return Nothing\n+ */\n+void Chip_SSP_SetMaster(LPC_SSP_T *pSSP, bool master);\n+\n+/**\n+ * @brief   Set the clock frequency for SSP interface\n+ * @param  pSSP            : The base SSP peripheral on the chip\n+ * @param  bitRate     : The SSP bit rate\n+ * @return Nothing\n+ */\n+void Chip_SSP_SetBitRate(LPC_SSP_T *pSSP, uint32_t bitRate);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __SSP_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/stopwatch.h ./lpc_chip_43xx/inc/stopwatch.h\n--- a_OkB2vL/lpc_chip_43xx/inc/stopwatch.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/stopwatch.h\t2017-02-27 21:03:17.028043463 -0300\n@@ -0,0 +1,137 @@\n+/*\n+ * @brief Common stopwatch support\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __STOPWATCH_H_\n+#define __STOPWATCH_H_\n+\n+#include \"cmsis.h\"\n+\n+/** @defgroup Stop_Watch CHIP: Stopwatch primitives.\n+ * @ingroup CHIP_Common\n+ * @{\n+ */\n+\n+/**\n+ * @brief  Initialize stopwatch\n+ * @return Nothing\n+ */\n+void StopWatch_Init(void);\n+\n+/**\n+ * @brief  Start a stopwatch\n+ * @return Current cycle count\n+ */\n+uint32_t StopWatch_Start(void);\n+\n+/**\n+ * @brief      Returns number of ticks elapsed since stopwatch was started\n+ * @param      startTime   : Time returned by StopWatch_Start().\n+ * @return     Number of ticks elapsed since stopwatch was started\n+ */\n+STATIC INLINE uint32_t StopWatch_Elapsed(uint32_t startTime)\n+{\n+   return StopWatch_Start() - startTime;\n+}\n+\n+/**\n+ * @brief  Returns number of ticks per second of the stopwatch timer\n+ * @return Number of ticks per second of the stopwatch timer\n+ */\n+uint32_t StopWatch_TicksPerSecond(void);\n+\n+/**\n+ * @brief  Converts from stopwatch ticks to mS.\n+ * @param  ticks   : Duration in ticks to convert to mS.\n+ * @return Number of mS in given number of ticks\n+ */\n+uint32_t StopWatch_TicksToMs(uint32_t ticks);\n+\n+/**\n+ * @brief  Converts from stopwatch ticks to uS.\n+ * @param  ticks   : Duration in ticks to convert to uS.\n+ * @return Number of uS in given number of ticks\n+ */\n+uint32_t StopWatch_TicksToUs(uint32_t ticks);\n+\n+/**\n+ * @brief  Converts from mS to stopwatch ticks.\n+ * @param  mS  : Duration in mS to convert to ticks.\n+ * @return Number of ticks in given number of mS\n+ */\n+uint32_t StopWatch_MsToTicks(uint32_t mS);\n+\n+/**\n+ * @brief  Converts from uS to stopwatch ticks.\n+ * @param  uS  : Duration in uS to convert to ticks.\n+ * @return Number of ticks in given number of uS\n+ */\n+uint32_t StopWatch_UsToTicks(uint32_t uS);\n+\n+/**\n+ * @brief  Delays the given number of ticks using stopwatch primitives\n+ * @param  ticks   : Number of ticks to delay\n+ * @return Nothing\n+ */\n+STATIC INLINE void StopWatch_DelayTicks(uint32_t ticks)\n+{\n+   uint32_t startTime = StopWatch_Start();\n+   while (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @brief  Delays the given number of mS using stopwatch primitives\n+ * @param  mS  : Number of mS to delay\n+ * @return Nothing\n+ */\n+STATIC INLINE void StopWatch_DelayMs(uint32_t mS)\n+{\n+   uint32_t ticks = StopWatch_MsToTicks(mS);\n+   uint32_t startTime = StopWatch_Start();\n+   while (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @brief  Delays the given number of uS using stopwatch primitives\n+ * @param  uS  : Number of uS to delay\n+ * @return Nothing\n+ */\n+STATIC INLINE void StopWatch_DelayUs(uint32_t uS)\n+{\n+   uint32_t ticks = StopWatch_UsToTicks(uS);\n+   uint32_t startTime = StopWatch_Start();\n+   while (StopWatch_Elapsed(startTime) < ticks) {}\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#endif /* __STOPWATCH_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/sys_config.h ./lpc_chip_43xx/inc/sys_config.h\n--- a_OkB2vL/lpc_chip_43xx/inc/sys_config.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/sys_config.h\t2017-02-27 21:03:17.028043463 -0300\n@@ -0,0 +1,36 @@\n+/*\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __SYS_CONFIG_H_\n+#define __SYS_CONFIG_H_\n+\n+/* LPC43xx chip family */\n+#define CHIP_LPC43XX\n+\n+#endif /* __SYS_CONFIG_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/timer_18xx_43xx.h ./lpc_chip_43xx/inc/timer_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/timer_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/timer_18xx_43xx.h\t2017-02-27 21:03:17.028043463 -0300\n@@ -0,0 +1,445 @@\n+/*\n+ * @brief LPC18xx/43xx 16/32-bit Timer/PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __TIMER_18XX_43XX_H_\n+#define __TIMER_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup TIMER_18XX_43XX CHIP: LPC18xx/43xx 16/32-bit Timer driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief 32-bit Standard timer register block structure\n+ */\n+typedef struct {                   /*!< TIMERn Structure       */\n+   __IO uint32_t IR;               /*!< Interrupt Register. The IR can be written to clear interrupts. The IR can be read to identify which of eight possible interrupt sources are pending. */\n+   __IO uint32_t TCR;              /*!< Timer Control Register. The TCR is used to control the Timer Counter functions. The Timer Counter can be disabled or reset through the TCR. */\n+   __IO uint32_t TC;               /*!< Timer Counter. The 32 bit TC is incremented every PR+1 cycles of PCLK. The TC is controlled through the TCR. */\n+   __IO uint32_t PR;               /*!< Prescale Register. The Prescale Counter (below) is equal to this value, the next clock increments the TC and clears the PC. */\n+   __IO uint32_t PC;               /*!< Prescale Counter. The 32 bit PC is a counter which is incremented to the value stored in PR. When the value in PR is reached, the TC is incremented and the PC is cleared. The PC is observable and controllable through the bus interface. */\n+   __IO uint32_t MCR;              /*!< Match Control Register. The MCR is used to control if an interrupt is generated and if the TC is reset when a Match occurs. */\n+   __IO uint32_t MR[4];            /*!< Match Register. MR can be enabled through the MCR to reset the TC, stop both the TC and PC, and/or generate an interrupt every time MR matches the TC. */\n+   __IO uint32_t CCR;              /*!< Capture Control Register. The CCR controls which edges of the capture inputs are used to load the Capture Registers and whether or not an interrupt is generated when a capture takes place. */\n+   __IO uint32_t CR[4];            /*!< Capture Register. CR is loaded with the value of TC when there is an event on the CAPn.0 input. */\n+   __IO uint32_t EMR;              /*!< External Match Register. The EMR controls the external match pins MATn.0-3 (MAT0.0-3 and MAT1.0-3 respectively). */\n+   __I  uint32_t RESERVED0[12];\n+   __IO uint32_t CTCR;             /*!< Count Control Register. The CTCR selects between Timer and Counter mode, and in Counter mode selects the signal and edge(s) for counting. */\n+} LPC_TIMER_T;\n+\n+/** Macro to clear interrupt pending */\n+#define TIMER_IR_CLR(n)         _BIT(n)\n+\n+/** Macro for getting a timer match interrupt bit */\n+#define TIMER_MATCH_INT(n)      (_BIT((n) & 0x0F))\n+/** Macro for getting a capture event interrupt bit */\n+#define TIMER_CAP_INT(n)        (_BIT((((n) & 0x0F) + 4)))\n+\n+/** Timer/counter enable bit */\n+#define TIMER_ENABLE            ((uint32_t) (1 << 0))\n+/** Timer/counter reset bit */\n+#define TIMER_RESET             ((uint32_t) (1 << 1))\n+\n+/** Bit location for interrupt on MRx match, n = 0 to 3 */\n+#define TIMER_INT_ON_MATCH(n)   (_BIT(((n) * 3)))\n+/** Bit location for reset on MRx match, n = 0 to 3 */\n+#define TIMER_RESET_ON_MATCH(n) (_BIT((((n) * 3) + 1)))\n+/** Bit location for stop on MRx match, n = 0 to 3 */\n+#define TIMER_STOP_ON_MATCH(n)  (_BIT((((n) * 3) + 2)))\n+\n+/** Bit location for CAP.n on CRx rising edge, n = 0 to 3 */\n+#define TIMER_CAP_RISING(n)     (_BIT(((n) * 3)))\n+/** Bit location for CAP.n on CRx falling edge, n = 0 to 3 */\n+#define TIMER_CAP_FALLING(n)    (_BIT((((n) * 3) + 1)))\n+/** Bit location for CAP.n on CRx interrupt enable, n = 0 to 3 */\n+#define TIMER_INT_ON_CAP(n)     (_BIT((((n) * 3) + 2)))\n+\n+/**\n+ * @brief  Initialize a timer\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ */\n+void Chip_TIMER_Init(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief  Shutdown a timer\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ */\n+void Chip_TIMER_DeInit(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief  Determine if a match interrupt is pending\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match interrupt number to check\n+ * @return false if the interrupt is not pending, otherwise true\n+ * @note   Determine if the match interrupt for the passed timer and match\n+ * counter is pending.\n+ */\n+STATIC INLINE bool Chip_TIMER_MatchPending(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   return (bool) ((pTMR->IR & TIMER_MATCH_INT(matchnum)) != 0);\n+}\n+\n+/**\n+ * @brief  Determine if a capture interrupt is pending\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture interrupt number to check\n+ * @return false if the interrupt is not pending, otherwise true\n+ * @note   Determine if the capture interrupt for the passed capture pin is\n+ * pending.\n+ */\n+STATIC INLINE bool Chip_TIMER_CapturePending(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   return (bool) ((pTMR->IR & TIMER_CAP_INT(capnum)) != 0);\n+}\n+\n+/**\n+ * @brief  Clears a (pending) match interrupt\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match interrupt number to clear\n+ * @return Nothing\n+ * @note   Clears a pending timer match interrupt.\n+ */\n+STATIC INLINE void Chip_TIMER_ClearMatch(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->IR = TIMER_IR_CLR(matchnum);\n+}\n+\n+/**\n+ * @brief  Clears a (pending) capture interrupt\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture interrupt number to clear\n+ * @return Nothing\n+ * @note   Clears a pending timer capture interrupt.\n+ */\n+STATIC INLINE void Chip_TIMER_ClearCapture(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->IR = (0x10 << capnum);\n+}\n+\n+/**\n+ * @brief  Enables the timer (starts count)\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ * @note   Enables the timer to start counting.\n+ */\n+STATIC INLINE void Chip_TIMER_Enable(LPC_TIMER_T *pTMR)\n+{\n+   pTMR->TCR |= TIMER_ENABLE;\n+}\n+\n+/**\n+ * @brief  Disables the timer (stops count)\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ * @note   Disables the timer to stop counting.\n+ */\n+STATIC INLINE void Chip_TIMER_Disable(LPC_TIMER_T *pTMR)\n+{\n+   pTMR->TCR &= ~TIMER_ENABLE;\n+}\n+\n+/**\n+ * @brief  Returns the current timer count\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Current timer terminal count value\n+ * @note   Returns the current timer terminal count.\n+ */\n+STATIC INLINE uint32_t Chip_TIMER_ReadCount(LPC_TIMER_T *pTMR)\n+{\n+   return pTMR->TC;\n+}\n+\n+/**\n+ * @brief  Returns the current prescale count\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Current timer prescale count value\n+ * @note   Returns the current prescale count.\n+ */\n+STATIC INLINE uint32_t Chip_TIMER_ReadPrescale(LPC_TIMER_T *pTMR)\n+{\n+   return pTMR->PC;\n+}\n+\n+/**\n+ * @brief  Sets the prescaler value\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  prescale    : Prescale value to set the prescale register to\n+ * @return Nothing\n+ * @note   Sets the prescale count value.\n+ */\n+STATIC INLINE void Chip_TIMER_PrescaleSet(LPC_TIMER_T *pTMR, uint32_t prescale)\n+{\n+   pTMR->PR = prescale;\n+}\n+\n+/**\n+ * @brief  Sets a timer match value\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer to set match count for\n+ * @param  matchval    : Match value for the selected match count\n+ * @return Nothing\n+ * @note   Sets one of the timer match values.\n+ */\n+STATIC INLINE void Chip_TIMER_SetMatch(LPC_TIMER_T *pTMR, int8_t matchnum, uint32_t matchval)\n+{\n+   pTMR->MR[matchnum] = matchval;\n+}\n+\n+/**\n+ * @brief  Reads a capture register\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture register to read\n+ * @return The selected capture register value\n+ * @note   Returns the selected capture register value.\n+ */\n+STATIC INLINE uint32_t Chip_TIMER_ReadCapture(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   return pTMR->CR[capnum];\n+}\n+\n+/**\n+ * @brief  Resets the timer terminal and prescale counts to 0\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @return Nothing\n+ */\n+void Chip_TIMER_Reset(LPC_TIMER_T *pTMR);\n+\n+/**\n+ * @brief  Enables a match interrupt that fires when the terminal count\n+ *         matches the match counter value.\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_MatchEnableInt(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR |= TIMER_INT_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  Disables a match interrupt for a match counter.\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_MatchDisableInt(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR &= ~TIMER_INT_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  For the specific match counter, enables reset of the terminal count register when a match occurs\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_ResetOnMatchEnable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR |= TIMER_RESET_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  For the specific match counter, disables reset of the terminal count register when a match occurs\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_ResetOnMatchDisable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR &= ~TIMER_RESET_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  Enable a match timer to stop the terminal count when a\n+ *         match count equals the terminal count.\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_StopOnMatchEnable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR |= TIMER_STOP_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  Disable stop on match for a match timer. Disables a match timer\n+ *         to stop the terminal count when a match count equals the terminal count.\n+ * @param  pTMR        : Pointer to timer IP register address\n+ * @param  matchnum    : Match timer, 0 to 3\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_StopOnMatchDisable(LPC_TIMER_T *pTMR, int8_t matchnum)\n+{\n+   pTMR->MCR &= ~TIMER_STOP_ON_MATCH(matchnum);\n+}\n+\n+/**\n+ * @brief  Enables capture on on rising edge of selected CAP signal for the\n+ *         selected capture register, enables the selected CAPn.capnum signal to load\n+ *         the capture register with the terminal coount on a rising edge.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureRisingEdgeEnable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR |= TIMER_CAP_RISING(capnum);\n+}\n+\n+/**\n+ * @brief  Disables capture on on rising edge of selected CAP signal. For the\n+ *         selected capture register, disables the selected CAPn.capnum signal to load\n+ *         the capture register with the terminal coount on a rising edge.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureRisingEdgeDisable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR &= ~TIMER_CAP_RISING(capnum);\n+}\n+\n+/**\n+ * @brief  Enables capture on on falling edge of selected CAP signal. For the\n+ *         selected capture register, enables the selected CAPn.capnum signal to load\n+ *         the capture register with the terminal coount on a falling edge.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureFallingEdgeEnable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR |= TIMER_CAP_FALLING(capnum);\n+}\n+\n+/**\n+ * @brief  Disables capture on on falling edge of selected CAP signal. For the\n+ *         selected capture register, disables the selected CAPn.capnum signal to load\n+ *         the capture register with the terminal coount on a falling edge.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureFallingEdgeDisable(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR &= ~TIMER_CAP_FALLING(capnum);\n+}\n+\n+/**\n+ * @brief  Enables interrupt on capture of selected CAP signal. For the\n+ *         selected capture register, an interrupt will be generated when the enabled\n+ *         rising or falling edge on CAPn.capnum is detected.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureEnableInt(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR |= TIMER_INT_ON_CAP(capnum);\n+}\n+\n+/**\n+ * @brief  Disables interrupt on capture of selected CAP signal\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capnum  : Capture signal/register to use\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_TIMER_CaptureDisableInt(LPC_TIMER_T *pTMR, int8_t capnum)\n+{\n+   pTMR->CCR &= ~TIMER_INT_ON_CAP(capnum);\n+}\n+\n+/**\n+ * @brief Standard timer initial match pin state and change state\n+ */\n+typedef enum IP_TIMER_PIN_MATCH_STATE {\n+   TIMER_EXTMATCH_DO_NOTHING = 0,  /*!< Timer match state does nothing on match pin */\n+   TIMER_EXTMATCH_CLEAR      = 1,  /*!< Timer match state sets match pin low */\n+   TIMER_EXTMATCH_SET        = 2,  /*!< Timer match state sets match pin high */\n+   TIMER_EXTMATCH_TOGGLE     = 3   /*!< Timer match state toggles match pin */\n+} TIMER_PIN_MATCH_STATE_T;\n+\n+/**\n+ * @brief  Sets external match control (MATn.matchnum) pin control. For the pin\n+ *          selected with matchnum, sets the function of the pin that occurs on\n+ *          a terminal count match for the match count.\n+ * @param  pTMR            : Pointer to timer IP register address\n+ * @param  initial_state   : Initial state of the pin, high(1) or low(0)\n+ * @param  matchState      : Selects the match state for the pin\n+ * @param  matchnum        : MATn.matchnum signal to use\n+ * @return Nothing\n+ * @note   For the pin selected with matchnum, sets the function of the pin that occurs on\n+ * a terminal count match for the match count.\n+ */\n+void Chip_TIMER_ExtMatchControlSet(LPC_TIMER_T *pTMR, int8_t initial_state,\n+                                                TIMER_PIN_MATCH_STATE_T matchState, int8_t matchnum);\n+\n+/**\n+ * @brief Standard timer clock and edge for count source\n+ */\n+typedef enum IP_TIMER_CAP_SRC_STATE {\n+   TIMER_CAPSRC_RISING_PCLK  = 0,  /*!< Timer ticks on PCLK rising edge */\n+   TIMER_CAPSRC_RISING_CAPN  = 1,  /*!< Timer ticks on CAPn.x rising edge */\n+   TIMER_CAPSRC_FALLING_CAPN = 2,  /*!< Timer ticks on CAPn.x falling edge */\n+   TIMER_CAPSRC_BOTH_CAPN    = 3   /*!< Timer ticks on CAPn.x both edges */\n+} TIMER_CAP_SRC_STATE_T;\n+\n+/**\n+ * @brief  Sets timer count source and edge with the selected passed from CapSrc.\n+ *          If CapSrc selected a CAPn pin, select the specific CAPn pin with the capnum value.\n+ * @param  pTMR    : Pointer to timer IP register address\n+ * @param  capSrc  : timer clock source and edge\n+ * @param  capnum  : CAPn.capnum pin to use (if used)\n+ * @return Nothing\n+ * @note   If CapSrc selected a CAPn pin, select the specific CAPn pin with the capnum value.\n+ */\n+STATIC INLINE void Chip_TIMER_TIMER_SetCountClockSrc(LPC_TIMER_T *pTMR,\n+                                                    TIMER_CAP_SRC_STATE_T capSrc,\n+                                                    int8_t capnum)\n+{\n+   pTMR->CTCR = (uint32_t) capSrc | ((uint32_t) capnum) << 2;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __TIMER_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/uart_18xx_43xx.h ./lpc_chip_43xx/inc/uart_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/uart_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/uart_18xx_43xx.h\t2017-02-27 21:03:17.028043463 -0300\n@@ -0,0 +1,826 @@\n+/*\n+ * @brief LPC18xx/43xx UART chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __UART_18XX_43XX_H_\n+#define __UART_18XX_43XX_H_\n+\n+#include \"ring_buffer.h\"\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup UART_18XX_43XX CHIP: LPC18xx/43xx UART driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief USART register block structure\n+ */\n+typedef struct {                   /*!< USARTn Structure       */\n+\n+   union {\n+       __IO uint32_t  DLL;         /*!< Divisor Latch LSB. Least significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB = 1). */\n+       __O  uint32_t  THR;         /*!< Transmit Holding Register. The next character to be transmitted is written here (DLAB = 0). */\n+       __I  uint32_t  RBR;         /*!< Receiver Buffer Register. Contains the next received character to be read (DLAB = 0). */\n+   };\n+\n+   union {\n+       __IO uint32_t IER;          /*!< Interrupt Enable Register. Contains individual interrupt enable bits for the 7 potential UART interrupts (DLAB = 0). */\n+       __IO uint32_t DLM;          /*!< Divisor Latch MSB. Most significant byte of the baud rate divisor value. The full divisor is used to generate a baud rate from the fractional rate divider (DLAB = 1). */\n+   };\n+\n+   union {\n+       __O  uint32_t FCR;          /*!< FIFO Control Register. Controls UART FIFO usage and modes. */\n+       __I  uint32_t IIR;          /*!< Interrupt ID Register. Identifies which interrupt(s) are pending. */\n+   };\n+\n+   __IO uint32_t LCR;              /*!< Line Control Register. Contains controls for frame formatting and break generation. */\n+   __IO uint32_t MCR;              /*!< Modem Control Register. Only present on USART ports with full modem support. */\n+   __I  uint32_t LSR;              /*!< Line Status Register. Contains flags for transmit and receive status, including line errors. */\n+   __I  uint32_t MSR;              /*!< Modem Status Register. Only present on USART ports with full modem support. */\n+   __IO uint32_t SCR;              /*!< Scratch Pad Register. Eight-bit temporary storage for software. */\n+   __IO uint32_t ACR;              /*!< Auto-baud Control Register. Contains controls for the auto-baud feature. */\n+   __IO uint32_t ICR;              /*!< IrDA control register (not all UARTS) */\n+   __IO uint32_t FDR;              /*!< Fractional Divider Register. Generates a clock input for the baud rate divider. */\n+   __IO uint32_t OSR;              /*!< Oversampling Register. Controls the degree of oversampling during each bit time. Only on some UARTS. */\n+   __IO uint32_t TER1;             /*!< Transmit Enable Register. Turns off USART transmitter for use with software flow control. */\n+   uint32_t  RESERVED0[3];\n+    __IO uint32_t HDEN;                /*!< Half-duplex enable Register- only on some UARTs */\n+   __I  uint32_t RESERVED1[1];\n+   __IO uint32_t SCICTRL;          /*!< Smart card interface control register- only on some UARTs */\n+\n+   __IO uint32_t RS485CTRL;        /*!< RS-485/EIA-485 Control. Contains controls to configure various aspects of RS-485/EIA-485 modes. */\n+   __IO uint32_t RS485ADRMATCH;    /*!< RS-485/EIA-485 address match. Contains the address match value for RS-485/EIA-485 mode. */\n+   __IO uint32_t RS485DLY;         /*!< RS-485/EIA-485 direction control delay. */\n+\n+   union {\n+       __IO uint32_t SYNCCTRL;     /*!< Synchronous mode control register. Only on USARTs. */\n+       __I  uint32_t FIFOLVL;      /*!< FIFO Level register. Provides the current fill levels of the transmit and receive FIFOs. */\n+   };\n+\n+   __IO uint32_t TER2;             /*!< Transmit Enable Register. Only on LPC177X_8X UART4 and LPC18XX/43XX USART0/2/3. */\n+} LPC_USART_T;\n+\n+\n+/**\n+ * @brief Macro defines for UART Receive Buffer register\n+ */\n+#define UART_RBR_MASKBIT    (0xFF)             /*!< UART Received Buffer mask bit (8 bits) */\n+\n+/**\n+ * @brief Macro defines for UART Divisor Latch LSB register\n+ */\n+#define UART_LOAD_DLL(div)  ((div) & 0xFF)     /*!< Macro for loading LSB of divisor */\n+#define UART_DLL_MASKBIT    (0xFF)             /*!< Divisor latch LSB bit mask */\n+\n+/**\n+ * @brief Macro defines for UART Divisor Latch MSB register\n+ */\n+#define UART_LOAD_DLM(div)  (((div) >> 8) & 0xFF)  /*!< Macro for loading MSB of divisors */\n+#define UART_DLM_MASKBIT    (0xFF)                 /*!< Divisor latch MSB bit mask */\n+\n+/**\n+ * @brief Macro defines for UART Interrupt Enable Register\n+ */\n+#define UART_IER_RBRINT      (1 << 0)  /*!< RBR Interrupt enable */\n+#define UART_IER_THREINT     (1 << 1)  /*!< THR Interrupt enable */\n+#define UART_IER_RLSINT      (1 << 2)  /*!< RX line status interrupt enable */\n+#define UART_IER_MSINT       (1 << 3)  /*!< Modem status interrupt enable - valid for 11xx, 17xx/40xx UART1, 18xx/43xx UART1  only */\n+#define UART_IER_CTSINT      (1 << 7)  /*!< CTS signal transition interrupt enable - valid for 17xx/40xx UART1, 18xx/43xx UART1 only */\n+#define UART_IER_ABEOINT     (1 << 8)  /*!< Enables the end of auto-baud interrupt */\n+#define UART_IER_ABTOINT     (1 << 9)  /*!< Enables the auto-baud time-out interrupt */\n+#define UART_IER_BITMASK     (0x307)   /*!< UART interrupt enable register bit mask  - valid for 13xx, 17xx/40xx UART0/2/3, 18xx/43xx UART0/2/3 only*/\n+#define UART1_IER_BITMASK    (0x30F)   /*!< UART1 interrupt enable register bit mask - valid for 11xx only */\n+#define UART2_IER_BITMASK    (0x38F)   /*!< UART2 interrupt enable register bit mask - valid for 17xx/40xx UART1, 18xx/43xx UART1 only */\n+\n+/**\n+ * @brief Macro defines for UART Interrupt Identification Register\n+ */\n+#define UART_IIR_INTSTAT_PEND   (1 << 0)   /*!< Interrupt pending status - Active low */\n+#define UART_IIR_FIFO_EN        (3 << 6)   /*!< These bits are equivalent to FCR[0] */\n+#define UART_IIR_ABEO_INT       (1 << 8)   /*!< End of auto-baud interrupt */\n+#define UART_IIR_ABTO_INT       (1 << 9)   /*!< Auto-baud time-out interrupt */\n+#define UART_IIR_BITMASK        (0x3CF)        /*!< UART interrupt identification register bit mask */\n+\n+/* Interrupt ID bit definitions */\n+#define UART_IIR_INTID_MASK     (7 << 1)   /*!< Interrupt identification: Interrupt ID mask */\n+#define UART_IIR_INTID_RLS      (3 << 1)   /*!< Interrupt identification: Receive line interrupt */\n+#define UART_IIR_INTID_RDA      (2 << 1)   /*!< Interrupt identification: Receive data available interrupt */\n+#define UART_IIR_INTID_CTI      (6 << 1)   /*!< Interrupt identification: Character time-out indicator interrupt */\n+#define UART_IIR_INTID_THRE     (1 << 1)   /*!< Interrupt identification: THRE interrupt */\n+#define UART_IIR_INTID_MODEM    (0 << 1)   /*!< Interrupt identification: Modem interrupt */\n+\n+/**\n+ * @brief Macro defines for UART FIFO Control Register\n+ */\n+#define UART_FCR_FIFO_EN        (1 << 0)   /*!< UART FIFO enable */\n+#define UART_FCR_RX_RS          (1 << 1)   /*!< UART RX FIFO reset */\n+#define UART_FCR_TX_RS          (1 << 2)   /*!< UART TX FIFO reset */\n+#define UART_FCR_DMAMODE_SEL    (1 << 3)   /*!< UART DMA mode selection - valid for 17xx/40xx, 18xx/43xx only */\n+#define UART_FCR_BITMASK        (0xCF)     /*!< UART FIFO control bit mask */\n+\n+#define UART_TX_FIFO_SIZE       (16)\n+\n+/* FIFO trigger level bit definitions */\n+#define UART_FCR_TRG_LEV0       (0)            /*!< UART FIFO trigger level 0: 1 character */\n+#define UART_FCR_TRG_LEV1       (1 << 6)   /*!< UART FIFO trigger level 1: 4 character */\n+#define UART_FCR_TRG_LEV2       (2 << 6)   /*!< UART FIFO trigger level 2: 8 character */\n+#define UART_FCR_TRG_LEV3       (3 << 6)   /*!< UART FIFO trigger level 3: 14 character */\n+\n+/**\n+ * @brief Macro defines for UART Line Control Register\n+ */\n+/* UART word length select bit definitions */\n+#define UART_LCR_WLEN_MASK      (3 << 0)       /*!< UART word length select bit mask */\n+#define UART_LCR_WLEN5          (0 << 0)       /*!< UART word length select: 5 bit data mode */\n+#define UART_LCR_WLEN6          (1 << 0)       /*!< UART word length select: 6 bit data mode */\n+#define UART_LCR_WLEN7          (2 << 0)       /*!< UART word length select: 7 bit data mode */\n+#define UART_LCR_WLEN8          (3 << 0)       /*!< UART word length select: 8 bit data mode */\n+\n+/* UART Stop bit select bit definitions */\n+#define UART_LCR_SBS_MASK       (1 << 2)       /*!< UART stop bit select: bit mask */\n+#define UART_LCR_SBS_1BIT       (0 << 2)       /*!< UART stop bit select: 1 stop bit */\n+#define UART_LCR_SBS_2BIT       (1 << 2)       /*!< UART stop bit select: 2 stop bits (in 5 bit data mode, 1.5 stop bits) */\n+\n+/* UART Parity enable bit definitions */\n+#define UART_LCR_PARITY_EN      (1 << 3)       /*!< UART Parity Enable */\n+#define UART_LCR_PARITY_DIS     (0 << 3)       /*!< UART Parity Disable */\n+#define UART_LCR_PARITY_ODD     (0 << 4)       /*!< UART Parity select: Odd parity */\n+#define UART_LCR_PARITY_EVEN    (1 << 4)       /*!< UART Parity select: Even parity */\n+#define UART_LCR_PARITY_F_1     (2 << 4)       /*!< UART Parity select: Forced 1 stick parity */\n+#define UART_LCR_PARITY_F_0     (3 << 4)       /*!< UART Parity select: Forced 0 stick parity */\n+#define UART_LCR_BREAK_EN       (1 << 6)       /*!< UART Break transmission enable */\n+#define UART_LCR_DLAB_EN        (1 << 7)       /*!< UART Divisor Latches Access bit enable */\n+#define UART_LCR_BITMASK        (0xFF)         /*!< UART line control bit mask */\n+\n+/**\n+ * @brief Macro defines for UART Modem Control Register\n+ */\n+#define UART_MCR_DTR_CTRL       (1 << 0)       /*!< Source for modem output pin DTR */\n+#define UART_MCR_RTS_CTRL       (1 << 1)       /*!< Source for modem output pin RTS */\n+#define UART_MCR_LOOPB_EN       (1 << 4)       /*!< Loop back mode select */\n+#define UART_MCR_AUTO_RTS_EN    (1 << 6)       /*!< Enable Auto RTS flow-control */\n+#define UART_MCR_AUTO_CTS_EN    (1 << 7)       /*!< Enable Auto CTS flow-control */\n+#define UART_MCR_BITMASK        (0xD3)         /*!< UART bit mask value */\n+\n+/**\n+ * @brief Macro defines for UART Line Status Register\n+ */\n+#define UART_LSR_RDR        (1 << 0)   /*!< Line status: Receive data ready */\n+#define UART_LSR_OE         (1 << 1)   /*!< Line status: Overrun error */\n+#define UART_LSR_PE         (1 << 2)   /*!< Line status: Parity error */\n+#define UART_LSR_FE         (1 << 3)   /*!< Line status: Framing error */\n+#define UART_LSR_BI         (1 << 4)   /*!< Line status: Break interrupt */\n+#define UART_LSR_THRE       (1 << 5)   /*!< Line status: Transmit holding register empty */\n+#define UART_LSR_TEMT       (1 << 6)   /*!< Line status: Transmitter empty */\n+#define UART_LSR_RXFE       (1 << 7)   /*!< Line status: Error in RX FIFO */\n+#define UART_LSR_TXFE       (1 << 8)   /*!< Line status: Error in RX FIFO */\n+#define UART_LSR_BITMASK    (0xFF)     /*!< UART Line status bit mask */\n+#define UART1_LSR_BITMASK   (0x1FF)        /*!< UART1 Line status bit mask - valid for 11xx, 18xx/43xx UART0/2/3 only */\n+\n+/**\n+ * @brief Macro defines for UART Modem Status Register\n+ */\n+#define UART_MSR_DELTA_CTS      (1 << 0)   /*!< Modem status: State change of input CTS */\n+#define UART_MSR_DELTA_DSR      (1 << 1)   /*!< Modem status: State change of input DSR */\n+#define UART_MSR_LO2HI_RI       (1 << 2)   /*!< Modem status: Low to high transition of input RI */\n+#define UART_MSR_DELTA_DCD      (1 << 3)   /*!< Modem status: State change of input DCD */\n+#define UART_MSR_CTS            (1 << 4)   /*!< Modem status: Clear To Send State */\n+#define UART_MSR_DSR            (1 << 5)   /*!< Modem status: Data Set Ready State */\n+#define UART_MSR_RI             (1 << 6)   /*!< Modem status: Ring Indicator State */\n+#define UART_MSR_DCD            (1 << 7)   /*!< Modem status: Data Carrier Detect State */\n+#define UART_MSR_BITMASK        (0xFF)     /*!< Modem status: MSR register bit-mask value */\n+\n+/**\n+ * @brief Macro defines for UART Auto baudrate control register\n+ */\n+#define UART_ACR_START              (1 << 0)   /*!< UART Auto-baud start */\n+#define UART_ACR_MODE               (1 << 1)   /*!< UART Auto baudrate Mode 1 */\n+#define UART_ACR_AUTO_RESTART       (1 << 2)   /*!< UART Auto baudrate restart */\n+#define UART_ACR_ABEOINT_CLR        (1 << 8)   /*!< UART End of auto-baud interrupt clear */\n+#define UART_ACR_ABTOINT_CLR        (1 << 9)   /*!< UART Auto-baud time-out interrupt clear */\n+#define UART_ACR_BITMASK            (0x307)        /*!< UART Auto Baudrate register bit mask */\n+\n+/**\n+ * Autobaud modes\n+ */\n+#define UART_ACR_MODE0              (0)    /*!< Auto baudrate Mode 0 */\n+#define UART_ACR_MODE1              (1)    /*!< Auto baudrate Mode 1 */\n+\n+/**\n+ * @brief Macro defines for UART RS485 Control register\n+ */\n+#define UART_RS485CTRL_NMM_EN       (1 << 0)   /*!< RS-485/EIA-485 Normal Multi-drop Mode (NMM) is disabled */\n+#define UART_RS485CTRL_RX_DIS       (1 << 1)   /*!< The receiver is disabled */\n+#define UART_RS485CTRL_AADEN        (1 << 2)   /*!< Auto Address Detect (AAD) is enabled */\n+#define UART_RS485CTRL_SEL_DTR      (1 << 3)   /*!< If direction control is enabled (bit DCTRL = 1), pin DTR is\n+                                                       used for direction control */\n+#define UART_RS485CTRL_DCTRL_EN     (1 << 4)   /*!< Enable Auto Direction Control */\n+#define UART_RS485CTRL_OINV_1       (1 << 5)   /*!< This bit reverses the polarity of the direction\n+                                                      control signal on the RTS (or DTR) pin. The direction control pin\n+                                                      will be driven to logic \"1\" when the transmitter has data to be sent */\n+#define UART_RS485CTRL_BITMASK      (0x3F)     /*!< RS485 control bit-mask value */\n+\n+/**\n+ * @brief Macro defines for UART IrDA Control Register - valid for 11xx, 17xx/40xx UART0/2/3, 18xx/43xx UART3 only\n+ */\n+#define UART_ICR_IRDAEN         (1 << 0)           /*!< IrDA mode enable */\n+#define UART_ICR_IRDAINV        (1 << 1)           /*!< IrDA serial input inverted */\n+#define UART_ICR_FIXPULSE_EN    (1 << 2)           /*!< IrDA fixed pulse width mode */\n+#define UART_ICR_PULSEDIV(n)    ((n & 0x07) << 3)  /*!< PulseDiv - Configures the pulse when FixPulseEn = 1 */\n+#define UART_ICR_BITMASK        (0x3F)             /*!< UART IRDA bit mask */\n+\n+/**\n+ * @brief Macro defines for UART half duplex register - ????\n+ */\n+#define UART_HDEN_HDEN          ((1 << 0))         /*!< enable half-duplex mode*/\n+\n+/**\n+ * @brief Macro defines for UART Smart card interface Control Register - valid for 11xx, 18xx/43xx UART0/2/3 only\n+ */\n+#define UART_SCICTRL_SCIEN        (1 << 0)         /*!< enable asynchronous half-duplex smart card interface*/\n+#define UART_SCICTRL_NACKDIS      (1 << 1)         /*!< NACK response is inhibited*/\n+#define UART_SCICTRL_PROTSEL_T1   (1 << 2)         /*!< ISO7816-3 protocol T1 is selected*/\n+#define UART_SCICTRL_TXRETRY(n)   ((n & 0x07) << 5)    /*!< number of retransmission*/\n+#define UART_SCICTRL_GUARDTIME(n) ((n & 0xFF) << 8)    /*!< Extra guard time*/\n+\n+/**\n+ * @brief Macro defines for UART Fractional Divider Register\n+ */\n+#define UART_FDR_DIVADDVAL(n)   (n & 0x0F)         /*!< Baud-rate generation pre-scaler divisor */\n+#define UART_FDR_MULVAL(n)      ((n << 4) & 0xF0)  /*!< Baud-rate pre-scaler multiplier value */\n+#define UART_FDR_BITMASK        (0xFF)             /*!< UART Fractional Divider register bit mask */\n+\n+/**\n+ * @brief Macro defines for UART Tx Enable Register\n+ */\n+#define UART_TER1_TXEN      (1 << 7)       /*!< Transmit enable bit  - valid for 11xx, 13xx, 17xx/40xx only */\n+#define UART_TER2_TXEN      (1 << 0)       /*!< Transmit enable bit  - valid for 18xx/43xx only */\n+\n+/**\n+ * @brief Macro defines for UART Synchronous Control Register - 11xx, 18xx/43xx UART0/2/3 only\n+ */\n+#define UART_SYNCCTRL_SYNC             (1 << 0)            /*!< enable synchronous mode*/\n+#define UART_SYNCCTRL_CSRC_MASTER      (1 << 1)        /*!< synchronous master mode*/\n+#define UART_SYNCCTRL_FES              (1 << 2)            /*!< sample on falling edge*/\n+#define UART_SYNCCTRL_TSBYPASS         (1 << 3)            /*!< to be defined*/\n+#define UART_SYNCCTRL_CSCEN            (1 << 4)            /*!< Continuous running clock enable (master mode only)*/\n+#define UART_SYNCCTRL_STARTSTOPDISABLE (1 << 5)            /*!< Do not send start/stop bit*/\n+#define UART_SYNCCTRL_CCCLR            (1 << 6)            /*!< stop continuous clock*/\n+\n+/**\n+ * @brief  Enable transmission on UART TxD pin\n+ * @param  pUART   : Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_TXEnable(LPC_USART_T *pUART)\n+{\n+    pUART->TER2 = UART_TER2_TXEN;\n+}\n+\n+/**\n+ * @brief  Disable transmission on UART TxD pin\n+ * @param  pUART   : Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_TXDisable(LPC_USART_T *pUART)\n+{\n+    pUART->TER2 = 0;\n+}\n+\n+/**\n+ * @brief  Transmit a single data byte through the UART peripheral\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  data    : Byte to transmit\n+ * @return Nothing\n+ * @note   This function attempts to place a byte into the UART transmit\n+ *         FIFO or transmit hold register regard regardless of UART state\n+ */\n+STATIC INLINE void Chip_UART_SendByte(LPC_USART_T *pUART, uint8_t data)\n+{\n+   pUART->THR = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief  Read a single byte data from the UART peripheral\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return A single byte of data read\n+ * @note   This function reads a byte from the UART receive FIFO or\n+ *         receive hold register regard regardless of UART state. The\n+ *         FIFO status should be read first prior to using this function\n+ */\n+STATIC INLINE uint8_t Chip_UART_ReadByte(LPC_USART_T *pUART)\n+{\n+   return (uint8_t) (pUART->RBR & UART_RBR_MASKBIT);\n+}\n+\n+/**\n+ * @brief  Enable UART interrupts\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  intMask : OR'ed Interrupts to enable in the Interrupt Enable Register (IER)\n+ * @return Nothing\n+ * @note   Use an OR'ed value of UART_IER_* definitions with this function\n+ *         to enable specific UART interrupts. The Divisor Latch Access Bit\n+ *         (DLAB) in LCR must be cleared in order to access the IER register.\n+ *         This function doesn't alter the DLAB state\n+ */\n+STATIC INLINE void Chip_UART_IntEnable(LPC_USART_T *pUART, uint32_t intMask)\n+{\n+   pUART->IER |= intMask;\n+}\n+\n+/**\n+ * @brief  Disable UART interrupts\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  intMask : OR'ed Interrupts to disable in the Interrupt Enable Register (IER)\n+ * @return Nothing\n+ * @note   Use an OR'ed value of UART_IER_* definitions with this function\n+ *         to disable specific UART interrupts. The Divisor Latch Access Bit\n+ *         (DLAB) in LCR must be cleared in order to access the IER register.\n+ *         This function doesn't alter the DLAB state\n+ */\n+STATIC INLINE void Chip_UART_IntDisable(LPC_USART_T *pUART, uint32_t intMask)\n+{\n+   pUART->IER &= ~intMask;\n+}\n+\n+/**\n+ * @brief  Returns UART interrupts that are enabled\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Returns the enabled UART interrupts\n+ * @note   Use an OR'ed value of UART_IER_* definitions with this function\n+ *         to determine which interrupts are enabled. You can check\n+ *         for multiple enabled bits if needed.\n+ */\n+STATIC INLINE uint32_t Chip_UART_GetIntsEnabled(LPC_USART_T *pUART)\n+{\n+   return pUART->IER;\n+}\n+\n+/**\n+ * @brief  Read the Interrupt Identification Register (IIR)\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Current pending interrupt status per the IIR register\n+ */\n+STATIC INLINE uint32_t Chip_UART_ReadIntIDReg(LPC_USART_T *pUART)\n+{\n+   return pUART->IIR;\n+}\n+\n+/**\n+ * @brief  Setup the UART FIFOs\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  fcr     : FIFO control register setup OR'ed flags\n+ * @return Nothing\n+ * @note   Use OR'ed value of UART_FCR_* definitions with this function\n+ *         to select specific options. For example, to enable the FIFOs\n+ *         with a RX trip level of 8 characters, use something like\n+ *         (UART_FCR_FIFO_EN | UART_FCR_TRG_LEV2)\n+ */\n+STATIC INLINE void Chip_UART_SetupFIFOS(LPC_USART_T *pUART, uint32_t fcr)\n+{\n+   pUART->FCR = fcr;\n+}\n+\n+/**\n+ * @brief  Configure data width, parity and stop bits\n+ * @param  pUART   : Pointer to selected pUART peripheral\n+ * @param  config  : UART configuration, OR'ed values of UART_LCR_* defines\n+ * @return Nothing\n+ * @note   Select OR'ed config options for the UART from the UART_LCR_*\n+ *         definitions. For example, a configuration of 8 data bits, 1\n+ *         stop bit, and even (enabled) parity would be\n+ *         (UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_EN | UART_LCR_PARITY_EVEN)\n+ */\n+STATIC INLINE void Chip_UART_ConfigData(LPC_USART_T *pUART, uint32_t config)\n+{\n+   pUART->LCR = config;\n+}\n+\n+/**\n+ * @brief  Enable access to Divisor Latches\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_EnableDivisorAccess(LPC_USART_T *pUART)\n+{\n+   pUART->LCR |= UART_LCR_DLAB_EN;\n+}\n+\n+/**\n+ * @brief  Disable access to Divisor Latches\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_DisableDivisorAccess(LPC_USART_T *pUART)\n+{\n+   pUART->LCR &= ~UART_LCR_DLAB_EN;\n+}\n+\n+/**\n+ * @brief  Set LSB and MSB divisor latch registers\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  dll     : Divisor Latch LSB value\n+ * @param  dlm     : Divisor Latch MSB value\n+ * @return Nothing\n+ * @note   The Divisor Latch Access Bit (DLAB) in LCR must be set in\n+ *         order to access the USART Divisor Latches. This function\n+ *         doesn't alter the DLAB state.\n+ */\n+STATIC INLINE void Chip_UART_SetDivisorLatches(LPC_USART_T *pUART, uint8_t dll, uint8_t dlm)\n+{\n+   pUART->DLL = (uint32_t) dll;\n+   pUART->DLM = (uint32_t) dlm;\n+}\n+\n+\n+/**\n+ * @brief  Return modem control register/status\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Modem control register (status)\n+ * @note   Mask bits of the returned status value with UART_MCR_*\n+ *         definitions for specific statuses.\n+ */\n+STATIC INLINE uint32_t Chip_UART_ReadModemControl(LPC_USART_T *pUART)\n+{\n+   return pUART->MCR;\n+}\n+\n+/**\n+ * @brief  Set modem control register/status\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  mcr     : Modem control register flags to set\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_MCR_* definitions with this\n+ *         call to set specific options.\n+ */\n+STATIC INLINE void Chip_UART_SetModemControl(LPC_USART_T *pUART, uint32_t mcr)\n+{\n+   pUART->MCR |= mcr;\n+}\n+\n+/**\n+ * @brief  Clear modem control register/status\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  mcr     : Modem control register flags to clear\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_MCR_* definitions with this\n+ *         call to clear specific options.\n+ */\n+STATIC INLINE void Chip_UART_ClearModemControl(LPC_USART_T *pUART, uint32_t mcr)\n+{\n+   pUART->MCR &= ~mcr;\n+}\n+\n+/**\n+ * @brief  Return Line Status register/status (LSR)\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Line Status register (status)\n+ * @note   Mask bits of the returned status value with UART_LSR_*\n+ *         definitions for specific statuses.\n+ */\n+STATIC INLINE uint32_t Chip_UART_ReadLineStatus(LPC_USART_T *pUART)\n+{\n+   return pUART->LSR;\n+}\n+\n+/**\n+ * @brief  Return Modem Status register/status (MSR)\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Modem Status register (status)\n+ * @note   Mask bits of the returned status value with UART_MSR_*\n+ *         definitions for specific statuses.\n+ */\n+STATIC INLINE uint32_t Chip_UART_ReadModemStatus(LPC_USART_T *pUART)\n+{\n+   return pUART->MSR;\n+}\n+\n+/**\n+ * @brief  Write a byte to the scratchpad register\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  data    : Byte value to write\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_SetScratch(LPC_USART_T *pUART, uint8_t data)\n+{\n+   pUART->SCR = (uint32_t) data;\n+}\n+\n+/**\n+ * @brief  Returns current byte value in the scratchpad register\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Byte value read from scratchpad register\n+ */\n+STATIC INLINE uint8_t Chip_UART_ReadScratch(LPC_USART_T *pUART)\n+{\n+   return (uint8_t) (pUART->SCR & 0xFF);\n+}\n+\n+/**\n+ * @brief  Set autobaud register options\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  acr     : Or'ed values to set for ACR register\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_ACR_* definitions with this\n+ *         call to set specific options.\n+ */\n+STATIC INLINE void Chip_UART_SetAutoBaudReg(LPC_USART_T *pUART, uint32_t acr)\n+{\n+   pUART->ACR |= acr;\n+}\n+\n+/**\n+ * @brief  Clear autobaud register options\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  acr     : Or'ed values to clear for ACR register\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_ACR_* definitions with this\n+ *         call to clear specific options.\n+ */\n+STATIC INLINE void Chip_UART_ClearAutoBaudReg(LPC_USART_T *pUART, uint32_t acr)\n+{\n+   pUART->ACR &= ~acr;\n+}\n+\n+/**\n+ * @brief  Set RS485 control register options\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  ctrl    : Or'ed values to set for RS485 control register\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_RS485CTRL_* definitions with this\n+ *         call to set specific options.\n+ */\n+STATIC INLINE void Chip_UART_SetRS485Flags(LPC_USART_T *pUART, uint32_t ctrl)\n+{\n+   pUART->RS485CTRL |= ctrl;\n+}\n+\n+/**\n+ * @brief  Clear RS485 control register options\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  ctrl    : Or'ed values to clear for RS485 control register\n+ * @return Nothing\n+ * @note   Use an Or'ed value of UART_RS485CTRL_* definitions with this\n+ *         call to clear specific options.\n+ */\n+STATIC INLINE void Chip_UART_ClearRS485Flags(LPC_USART_T *pUART, uint32_t ctrl)\n+{\n+   pUART->RS485CTRL &= ~ctrl;\n+}\n+\n+/**\n+ * @brief  Set RS485 address match value\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  addr    : Address match value for RS-485/EIA-485 mode\n+ * @return Nothing\n+ */\n+STATIC INLINE void Chip_UART_SetRS485Addr(LPC_USART_T *pUART, uint8_t addr)\n+{\n+   pUART->RS485ADRMATCH = (uint32_t) addr;\n+}\n+\n+/**\n+ * @brief  Read RS485 address match value\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return Address match value for RS-485/EIA-485 mode\n+ */\n+STATIC INLINE uint8_t Chip_UART_GetRS485Addr(LPC_USART_T *pUART)\n+{\n+   return (uint8_t) (pUART->RS485ADRMATCH & 0xFF);\n+}\n+\n+/**\n+ * @brief  Set RS485 direction control (RTS or DTR) delay value\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  dly     : direction control (RTS or DTR) delay value\n+ * @return Nothing\n+ * @note   This delay time is in periods of the baud clock. Any delay\n+ *         time from 0 to 255 bit times may be programmed.\n+ */\n+STATIC INLINE void Chip_UART_SetRS485Delay(LPC_USART_T *pUART, uint8_t dly)\n+{\n+   pUART->RS485DLY = (uint32_t) dly;\n+}\n+\n+/**\n+ * @brief  Read RS485 direction control (RTS or DTR) delay value\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return direction control (RTS or DTR) delay value\n+ * @note   This delay time is in periods of the baud clock. Any delay\n+ *         time from 0 to 255 bit times may be programmed.\n+ */\n+STATIC INLINE uint8_t Chip_UART_GetRS485Delay(LPC_USART_T *pUART)\n+{\n+   return (uint8_t) (pUART->RS485DLY & 0xFF);\n+}\n+\n+/**\n+ * @brief  Initializes the pUART peripheral\n+ * @param  pUART       : Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+void Chip_UART_Init(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief  De-initializes the pUART peripheral.\n+ * @param  pUART       : Pointer to selected pUART peripheral\n+ * @return Nothing\n+ */\n+void Chip_UART_DeInit(LPC_USART_T *pUART);\n+\n+\n+/**\n+ * @brief  Check whether if UART is busy or not\n+ * @param  pUART   : Pointer to selected pUART peripheral\n+ * @return RESET if UART is not busy, otherwise return SET\n+ */\n+FlagStatus Chip_UART_CheckBusy(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief  Transmit a byte array through the UART peripheral (non-blocking)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  data        : Pointer to bytes to transmit\n+ * @param  numBytes    : Number of bytes to transmit\n+ * @return The actual number of bytes placed into the FIFO\n+ * @note   This function places data into the transmit FIFO until either\n+ *         all the data is in the FIFO or the FIFO is full. This function\n+ *         will not block in the FIFO is full. The actual number of bytes\n+ *         placed into the FIFO is returned. This function ignores errors.\n+ */\n+int Chip_UART_Send(LPC_USART_T *pUART, const void *data, int numBytes);\n+\n+/**\n+ * @brief  Read data through the UART peripheral (non-blocking)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  data        : Pointer to bytes array to fill\n+ * @param  numBytes    : Size of the passed data array\n+ * @return The actual number of bytes read\n+ * @note   This function reads data from the receive FIFO until either\n+ *         all the data has been read or the passed buffer is completely full.\n+ *         This function will not block. This function ignores errors.\n+ */\n+int Chip_UART_Read(LPC_USART_T *pUART, void *data, int numBytes);\n+\n+/**\n+ * @brief  Sets best dividers to get a target bit rate (without fractional divider)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  baudrate    : Target baud rate (baud rate = bit rate)\n+ * @return The actual baud rate, or 0 if no rate can be found\n+ */\n+uint32_t Chip_UART_SetBaud(LPC_USART_T *pUART, uint32_t baudrate);\n+\n+/**\n+ * @brief  Sets best dividers to get a target bit rate (with fractional divider)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  baud        : Target baud rate (baud rate = bit rate)\n+ * @return The actual baud rate, or 0 if no rate can be found\n+ * @note   The maximum bit rate possible is (clk / 16), the next possible bit\n+ *             rate is (clk / 32), the next possible bit rate is (clk / 48), no\n+ *             rates in-between any of the above three maximum rates could be set\n+ *             using this API. Fractional dividers can only be used for rates\n+ *             lower than (clk / 48) where @a clk is the base clock of the UART.\n+ */\n+uint32_t Chip_UART_SetBaudFDR(LPC_USART_T *pUART, uint32_t baud);\n+\n+/**\n+ * @brief  Transmit a byte array through the UART peripheral (blocking)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  data        : Pointer to data to transmit\n+ * @param  numBytes    : Number of bytes to transmit\n+ * @return The number of bytes transmitted\n+ * @note   This function will send or place all bytes into the transmit\n+ *         FIFO. This function will block until the last bytes are in the FIFO.\n+ */\n+int Chip_UART_SendBlocking(LPC_USART_T *pUART, const void *data, int numBytes);\n+\n+/**\n+ * @brief  Read data through the UART peripheral (blocking)\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  data        : Pointer to data array to fill\n+ * @param  numBytes    : Size of the passed data array\n+ * @return The size of the dat array\n+ * @note   This function reads data from the receive FIFO until the passed\n+ *         buffer is completely full. The function will block until full.\n+ *         This function ignores errors.\n+ */\n+int Chip_UART_ReadBlocking(LPC_USART_T *pUART, void *data, int numBytes);\n+\n+/**\n+ * @brief  UART receive-only interrupt handler for ring buffers\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRB     : Pointer to ring buffer structure to use\n+ * @return Nothing\n+ * @note   If ring buffer support is desired for the receive side\n+ *         of data transfer, the UART interrupt should call this\n+ *         function for a receive based interrupt status.\n+ */\n+void Chip_UART_RXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB);\n+\n+/**\n+ * @brief  UART transmit-only interrupt handler for ring buffers\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRB     : Pointer to ring buffer structure to use\n+ * @return Nothing\n+ * @note   If ring buffer support is desired for the transmit side\n+ *         of data transfer, the UART interrupt should call this\n+ *         function for a transmit based interrupt status.\n+ */\n+void Chip_UART_TXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB);\n+\n+/**\n+ * @brief  Populate a transmit ring buffer and start UART transmit\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRB     : Pointer to ring buffer structure to use\n+ * @param  data    : Pointer to buffer to move to ring buffer\n+ * @param  bytes   : Number of bytes to move\n+ * @return The number of bytes placed into the ring buffer\n+ * @note   Will move the data into the TX ring buffer and start the\n+ *         transfer. If the number of bytes returned is less than the\n+ *         number of bytes to send, the ring buffer is considered full.\n+ */\n+uint32_t Chip_UART_SendRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, const void *data, int bytes);\n+\n+/**\n+ * @brief  Copy data from a receive ring buffer\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRB     : Pointer to ring buffer structure to use\n+ * @param  data    : Pointer to buffer to fill from ring buffer\n+ * @param  bytes   : Size of the passed buffer in bytes\n+ * @return The number of bytes placed into the ring buffer\n+ * @note   Will move the data from the RX ring buffer up to the\n+ *         the maximum passed buffer size. Returns 0 if there is\n+ *         no data in the ring buffer.\n+ */\n+int Chip_UART_ReadRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, void *data, int bytes);\n+\n+/**\n+ * @brief  UART receive/transmit interrupt handler for ring buffers\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @param  pRXRB   : Pointer to transmit ring buffer\n+ * @param  pTXRB   : Pointer to receive ring buffer\n+ * @return Nothing\n+ * @note   This provides a basic implementation of the UART IRQ\n+ *         handler for support of a ring buffer implementation for\n+ *         transmit and receive.\n+ */\n+void Chip_UART_IRQRBHandler(LPC_USART_T *pUART, RINGBUFF_T *pRXRB, RINGBUFF_T *pTXRB);\n+\n+/**\n+ * @brief  Returns the Auto Baud status\n+ * @param  pUART   : Pointer to selected UART peripheral\n+ * @return RESET if autobaud not completed, SET if autobaud completed\n+ */\n+FlagStatus Chip_UART_GetABEOStatus(LPC_USART_T *pUART);\n+\n+/**\n+ * @brief  Start/stop autobaud operation\n+ * @param  pUART       : Pointer to selected UART peripheral\n+ * @param  mode        : Autobaud mode (UART_ACR_MODE0 or UART_ACR_MODE1)\n+ * @param  autorestart : Enable autorestart (true to enable or false to disable)\n+ * @param  NewState    : ENABLE to start autobaud operation, DISABLE to\n+ *                          stop autobaud operation\n+ * @return Nothing\n+ */\n+void Chip_UART_ABCmd(LPC_USART_T *pUART, uint32_t mode, bool autorestart,\n+        FunctionalState NewState);\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __UART_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_adc.h ./lpc_chip_43xx/inc/usbd/usbd_adc.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_adc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_adc.h\t2017-02-27 21:03:17.028043463 -0300\n@@ -0,0 +1,377 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_audio.h 165 2011-04-14 17:41:11Z usb10131                     $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Audio Device Class Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __AUDIO_H__\n+#define __AUDIO_H__\n+\n+\n+/* Audio Interface Subclass Codes */\n+#define AUDIO_SUBCLASS_UNDEFINED                0x00\n+#define AUDIO_SUBCLASS_AUDIOCONTROL             0x01\n+#define AUDIO_SUBCLASS_AUDIOSTREAMING           0x02\n+#define AUDIO_SUBCLASS_MIDISTREAMING            0x03\n+\n+/* Audio Interface Protocol Codes */\n+#define AUDIO_PROTOCOL_UNDEFINED                0x00\n+\n+\n+/* Audio Descriptor Types */\n+#define AUDIO_UNDEFINED_DESCRIPTOR_TYPE         0x20\n+#define AUDIO_DEVICE_DESCRIPTOR_TYPE            0x21\n+#define AUDIO_CONFIGURATION_DESCRIPTOR_TYPE     0x22\n+#define AUDIO_STRING_DESCRIPTOR_TYPE            0x23\n+#define AUDIO_INTERFACE_DESCRIPTOR_TYPE         0x24\n+#define AUDIO_ENDPOINT_DESCRIPTOR_TYPE          0x25\n+\n+\n+/* Audio Control Interface Descriptor Subtypes */\n+#define AUDIO_CONTROL_UNDEFINED                 0x00\n+#define AUDIO_CONTROL_HEADER                    0x01\n+#define AUDIO_CONTROL_INPUT_TERMINAL            0x02\n+#define AUDIO_CONTROL_OUTPUT_TERMINAL           0x03\n+#define AUDIO_CONTROL_MIXER_UNIT                0x04\n+#define AUDIO_CONTROL_SELECTOR_UNIT             0x05\n+#define AUDIO_CONTROL_FEATURE_UNIT              0x06\n+#define AUDIO_CONTROL_PROCESSING_UNIT           0x07\n+#define AUDIO_CONTROL_EXTENSION_UNIT            0x08\n+\n+/* Audio Streaming Interface Descriptor Subtypes */\n+#define AUDIO_STREAMING_UNDEFINED               0x00\n+#define AUDIO_STREAMING_GENERAL                 0x01\n+#define AUDIO_STREAMING_FORMAT_TYPE             0x02\n+#define AUDIO_STREAMING_FORMAT_SPECIFIC         0x03\n+\n+/* Audio Endpoint Descriptor Subtypes */\n+#define AUDIO_ENDPOINT_UNDEFINED                0x00\n+#define AUDIO_ENDPOINT_GENERAL                  0x01\n+\n+\n+/* Audio Descriptor Sizes */\n+#define AUDIO_CONTROL_INTERFACE_DESC_SZ(n)      0x08+n\n+#define AUDIO_STREAMING_INTERFACE_DESC_SIZE     0x07\n+#define AUDIO_INPUT_TERMINAL_DESC_SIZE          0x0C\n+#define AUDIO_OUTPUT_TERMINAL_DESC_SIZE         0x09\n+#define AUDIO_MIXER_UNIT_DESC_SZ(p,n)           0x0A+p+n\n+#define AUDIO_SELECTOR_UNIT_DESC_SZ(p)          0x06+p\n+#define AUDIO_FEATURE_UNIT_DESC_SZ(ch,n)        0x07+(ch+1)*n\n+#define AUDIO_PROCESSING_UNIT_DESC_SZ(p,n,x)    0x0D+p+n+x\n+#define AUDIO_EXTENSION_UNIT_DESC_SZ(p,n)       0x0D+p+n\n+#define AUDIO_STANDARD_ENDPOINT_DESC_SIZE       0x09\n+#define AUDIO_STREAMING_ENDPOINT_DESC_SIZE      0x07\n+\n+\n+/* Audio Processing Unit Process Types */\n+#define AUDIO_UNDEFINED_PROCESS                 0x00\n+#define AUDIO_UP_DOWN_MIX_PROCESS               0x01\n+#define AUDIO_DOLBY_PROLOGIC_PROCESS            0x02\n+#define AUDIO_3D_STEREO_PROCESS                 0x03\n+#define AUDIO_REVERBERATION_PROCESS             0x04\n+#define AUDIO_CHORUS_PROCESS                    0x05\n+#define AUDIO_DYN_RANGE_COMP_PROCESS            0x06\n+\n+\n+/* Audio Request Codes */\n+#define AUDIO_REQUEST_UNDEFINED                 0x00\n+#define AUDIO_REQUEST_SET_CUR                   0x01\n+#define AUDIO_REQUEST_GET_CUR                   0x81\n+#define AUDIO_REQUEST_SET_MIN                   0x02\n+#define AUDIO_REQUEST_GET_MIN                   0x82\n+#define AUDIO_REQUEST_SET_MAX                   0x03\n+#define AUDIO_REQUEST_GET_MAX                   0x83\n+#define AUDIO_REQUEST_SET_RES                   0x04\n+#define AUDIO_REQUEST_GET_RES                   0x84\n+#define AUDIO_REQUEST_SET_MEM                   0x05\n+#define AUDIO_REQUEST_GET_MEM                   0x85\n+#define AUDIO_REQUEST_GET_STAT                  0xFF\n+\n+\n+/* Audio Control Selector Codes */\n+#define AUDIO_CONTROL_UNDEFINED                 0x00    /* Common Selector */\n+\n+/*  Terminal Control Selectors */\n+#define AUDIO_COPY_PROTECT_CONTROL              0x01\n+\n+/*  Feature Unit Control Selectors */\n+#define AUDIO_MUTE_CONTROL                      0x01\n+#define AUDIO_VOLUME_CONTROL                    0x02\n+#define AUDIO_BASS_CONTROL                      0x03\n+#define AUDIO_MID_CONTROL                       0x04\n+#define AUDIO_TREBLE_CONTROL                    0x05\n+#define AUDIO_GRAPHIC_EQUALIZER_CONTROL         0x06\n+#define AUDIO_AUTOMATIC_GAIN_CONTROL            0x07\n+#define AUDIO_DELAY_CONTROL                     0x08\n+#define AUDIO_BASS_BOOST_CONTROL                0x09\n+#define AUDIO_LOUDNESS_CONTROL                  0x0A\n+\n+/*  Processing Unit Control Selectors: */\n+#define AUDIO_ENABLE_CONTROL                    0x01    /* Common Selector */\n+#define AUDIO_MODE_SELECT_CONTROL               0x02    /* Common Selector */\n+\n+/*  - Up/Down-mix Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+/*      AUDIO_MODE_SELECT_CONTROL               0x02       Common Selector */\n+\n+/*  - Dolby Prologic Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+/*      AUDIO_MODE_SELECT_CONTROL               0x02       Common Selector */\n+\n+/*  - 3D Stereo Extender Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+#define AUDIO_SPACIOUSNESS_CONTROL              0x02\n+\n+/*  - Reverberation Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+#define AUDIO_REVERB_LEVEL_CONTROL              0x02\n+#define AUDIO_REVERB_TIME_CONTROL               0x03\n+#define AUDIO_REVERB_FEEDBACK_CONTROL           0x04\n+\n+/*  - Chorus Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+#define AUDIO_CHORUS_LEVEL_CONTROL              0x02\n+#define AUDIO_SHORUS_RATE_CONTROL               0x03\n+#define AUDIO_CHORUS_DEPTH_CONTROL              0x04\n+\n+/*  - Dynamic Range Compressor Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+#define AUDIO_COMPRESSION_RATE_CONTROL          0x02\n+#define AUDIO_MAX_AMPL_CONTROL                  0x03\n+#define AUDIO_THRESHOLD_CONTROL                 0x04\n+#define AUDIO_ATTACK_TIME_CONTROL               0x05\n+#define AUDIO_RELEASE_TIME_CONTROL              0x06\n+\n+/*  Extension Unit Control Selectors */\n+/*      AUDIO_ENABLE_CONTROL                    0x01       Common Selector */\n+\n+/*  Endpoint Control Selectors */\n+#define AUDIO_SAMPLING_FREQ_CONTROL             0x01\n+#define AUDIO_PITCH_CONTROL                     0x02\n+\n+\n+/* Audio Format Specific Control Selectors */\n+\n+/*  MPEG Control Selectors */\n+#define AUDIO_MPEG_CONTROL_UNDEFINED            0x00\n+#define AUDIO_MPEG_DUAL_CHANNEL_CONTROL         0x01\n+#define AUDIO_MPEG_SECOND_STEREO_CONTROL        0x02\n+#define AUDIO_MPEG_MULTILINGUAL_CONTROL         0x03\n+#define AUDIO_MPEG_DYN_RANGE_CONTROL            0x04\n+#define AUDIO_MPEG_SCALING_CONTROL              0x05\n+#define AUDIO_MPEG_HILO_SCALING_CONTROL         0x06\n+\n+/*  AC-3 Control Selectors */\n+#define AUDIO_AC3_CONTROL_UNDEFINED             0x00\n+#define AUDIO_AC3_MODE_CONTROL                  0x01\n+#define AUDIO_AC3_DYN_RANGE_CONTROL             0x02\n+#define AUDIO_AC3_SCALING_CONTROL               0x03\n+#define AUDIO_AC3_HILO_SCALING_CONTROL          0x04\n+\n+\n+/* Audio Format Types */\n+#define AUDIO_FORMAT_TYPE_UNDEFINED             0x00\n+#define AUDIO_FORMAT_TYPE_I                     0x01\n+#define AUDIO_FORMAT_TYPE_II                    0x02\n+#define AUDIO_FORMAT_TYPE_III                   0x03\n+\n+\n+/* Audio Format Type Descriptor Sizes */\n+#define AUDIO_FORMAT_TYPE_I_DESC_SZ(n)          0x08+(n*3)\n+#define AUDIO_FORMAT_TYPE_II_DESC_SZ(n)         0x09+(n*3)\n+#define AUDIO_FORMAT_TYPE_III_DESC_SZ(n)        0x08+(n*3)\n+#define AUDIO_FORMAT_MPEG_DESC_SIZE             0x09\n+#define AUDIO_FORMAT_AC3_DESC_SIZE              0x0A\n+\n+\n+/* Audio Data Format Codes */\n+\n+/*  Audio Data Format Type I Codes */\n+#define AUDIO_FORMAT_TYPE_I_UNDEFINED           0x0000\n+#define AUDIO_FORMAT_PCM                        0x0001\n+#define AUDIO_FORMAT_PCM8                       0x0002\n+#define AUDIO_FORMAT_IEEE_FLOAT                 0x0003\n+#define AUDIO_FORMAT_ALAW                       0x0004\n+#define AUDIO_FORMAT_MULAW                      0x0005\n+\n+/*  Audio Data Format Type II Codes */\n+#define AUDIO_FORMAT_TYPE_II_UNDEFINED          0x1000\n+#define AUDIO_FORMAT_MPEG                       0x1001\n+#define AUDIO_FORMAT_AC3                        0x1002\n+\n+/*  Audio Data Format Type III Codes */\n+#define AUDIO_FORMAT_TYPE_III_UNDEFINED         0x2000\n+#define AUDIO_FORMAT_IEC1937_AC3                0x2001\n+#define AUDIO_FORMAT_IEC1937_MPEG1_L1           0x2002\n+#define AUDIO_FORMAT_IEC1937_MPEG1_L2_3         0x2003\n+#define AUDIO_FORMAT_IEC1937_MPEG2_NOEXT        0x2003\n+#define AUDIO_FORMAT_IEC1937_MPEG2_EXT          0x2004\n+#define AUDIO_FORMAT_IEC1937_MPEG2_L1_LS        0x2005\n+#define AUDIO_FORMAT_IEC1937_MPEG2_L2_3         0x2006\n+\n+\n+/* Predefined Audio Channel Configuration Bits */\n+#define AUDIO_CHANNEL_M                         0x0000  /* Mono */\n+#define AUDIO_CHANNEL_L                         0x0001  /* Left Front */\n+#define AUDIO_CHANNEL_R                         0x0002  /* Right Front */\n+#define AUDIO_CHANNEL_C                         0x0004  /* Center Front */\n+#define AUDIO_CHANNEL_LFE                       0x0008  /* Low Freq. Enhance. */\n+#define AUDIO_CHANNEL_LS                        0x0010  /* Left Surround */\n+#define AUDIO_CHANNEL_RS                        0x0020  /* Right Surround */\n+#define AUDIO_CHANNEL_LC                        0x0040  /* Left of Center */\n+#define AUDIO_CHANNEL_RC                        0x0080  /* Right of Center */\n+#define AUDIO_CHANNEL_S                         0x0100  /* Surround */\n+#define AUDIO_CHANNEL_SL                        0x0200  /* Side Left */\n+#define AUDIO_CHANNEL_SR                        0x0400  /* Side Right */\n+#define AUDIO_CHANNEL_T                         0x0800  /* Top */\n+\n+\n+/* Feature Unit Control Bits */\n+#define AUDIO_CONTROL_MUTE                      0x0001\n+#define AUDIO_CONTROL_VOLUME                    0x0002\n+#define AUDIO_CONTROL_BASS                      0x0004\n+#define AUDIO_CONTROL_MID                       0x0008\n+#define AUDIO_CONTROL_TREBLE                    0x0010\n+#define AUDIO_CONTROL_GRAPHIC_EQUALIZER         0x0020\n+#define AUDIO_CONTROL_AUTOMATIC_GAIN            0x0040\n+#define AUDIO_CONTROL_DEALY                     0x0080\n+#define AUDIO_CONTROL_BASS_BOOST                0x0100\n+#define AUDIO_CONTROL_LOUDNESS                  0x0200\n+\n+/* Processing Unit Control Bits: */\n+#define AUDIO_CONTROL_ENABLE                    0x0001  /* Common Bit */\n+#define AUDIO_CONTROL_MODE_SELECT               0x0002  /* Common Bit */\n+\n+/* - Up/Down-mix Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+/*      AUDIO_CONTROL_MODE_SELECT               0x0002     Common Bit */\n+\n+/* - Dolby Prologic Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+/*      AUDIO_CONTROL_MODE_SELECT               0x0002     Common Bit */\n+\n+/* - 3D Stereo Extender Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+#define AUDIO_CONTROL_SPACIOUSNESS              0x0002\n+\n+/* - Reverberation Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+#define AUDIO_CONTROL_REVERB_TYPE               0x0002\n+#define AUDIO_CONTROL_REVERB_LEVEL              0x0004\n+#define AUDIO_CONTROL_REVERB_TIME               0x0008\n+#define AUDIO_CONTROL_REVERB_FEEDBACK           0x0010\n+\n+/* - Chorus Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+#define AUDIO_CONTROL_CHORUS_LEVEL              0x0002\n+#define AUDIO_CONTROL_SHORUS_RATE               0x0004\n+#define AUDIO_CONTROL_CHORUS_DEPTH              0x0008\n+\n+/* - Dynamic Range Compressor Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+#define AUDIO_CONTROL_COMPRESSION_RATE          0x0002\n+#define AUDIO_CONTROL_MAX_AMPL                  0x0004\n+#define AUDIO_CONTROL_THRESHOLD                 0x0008\n+#define AUDIO_CONTROL_ATTACK_TIME               0x0010\n+#define AUDIO_CONTROL_RELEASE_TIME              0x0020\n+\n+/* Extension Unit Control Bits */\n+/*      AUDIO_CONTROL_ENABLE                    0x0001     Common Bit */\n+\n+/* Endpoint Control Bits */\n+#define AUDIO_CONTROL_SAMPLING_FREQ             0x01\n+#define AUDIO_CONTROL_PITCH                     0x02\n+#define AUDIO_MAX_PACKETS_ONLY                  0x80\n+\n+\n+/* Audio Terminal Types */\n+\n+/*  USB Terminal Types */\n+#define AUDIO_TERMINAL_USB_UNDEFINED            0x0100\n+#define AUDIO_TERMINAL_USB_STREAMING            0x0101\n+#define AUDIO_TERMINAL_USB_VENDOR_SPECIFIC      0x01FF\n+\n+/*  Input Terminal Types */\n+#define AUDIO_TERMINAL_INPUT_UNDEFINED          0x0200\n+#define AUDIO_TERMINAL_MICROPHONE               0x0201\n+#define AUDIO_TERMINAL_DESKTOP_MICROPHONE       0x0202\n+#define AUDIO_TERMINAL_PERSONAL_MICROPHONE      0x0203\n+#define AUDIO_TERMINAL_OMNI_DIR_MICROPHONE      0x0204\n+#define AUDIO_TERMINAL_MICROPHONE_ARRAY         0x0205\n+#define AUDIO_TERMINAL_PROCESSING_MIC_ARRAY     0x0206\n+\n+/*  Output Terminal Types */\n+#define AUDIO_TERMINAL_OUTPUT_UNDEFINED         0x0300\n+#define AUDIO_TERMINAL_SPEAKER                  0x0301\n+#define AUDIO_TERMINAL_HEADPHONES               0x0302\n+#define AUDIO_TERMINAL_HEAD_MOUNTED_AUDIO       0x0303\n+#define AUDIO_TERMINAL_DESKTOP_SPEAKER          0x0304\n+#define AUDIO_TERMINAL_ROOM_SPEAKER             0x0305\n+#define AUDIO_TERMINAL_COMMUNICATION_SPEAKER    0x0306\n+#define AUDIO_TERMINAL_LOW_FREQ_SPEAKER         0x0307\n+\n+/*  Bi-directional Terminal Types */\n+#define AUDIO_TERMINAL_BIDIRECTIONAL_UNDEFINED  0x0400\n+#define AUDIO_TERMINAL_HANDSET                  0x0401\n+#define AUDIO_TERMINAL_HEAD_MOUNTED_HANDSET     0x0402\n+#define AUDIO_TERMINAL_SPEAKERPHONE             0x0403\n+#define AUDIO_TERMINAL_SPEAKERPHONE_ECHOSUPRESS 0x0404\n+#define AUDIO_TERMINAL_SPEAKERPHONE_ECHOCANCEL  0x0405\n+\n+/*  Telephony Terminal Types */\n+#define AUDIO_TERMINAL_TELEPHONY_UNDEFINED      0x0500\n+#define AUDIO_TERMINAL_PHONE_LINE               0x0501\n+#define AUDIO_TERMINAL_TELEPHONE                0x0502\n+#define AUDIO_TERMINAL_DOWN_LINE_PHONE          0x0503\n+\n+/*  External Terminal Types */\n+#define AUDIO_TERMINAL_EXTERNAL_UNDEFINED       0x0600\n+#define AUDIO_TERMINAL_ANALOG_CONNECTOR         0x0601\n+#define AUDIO_TERMINAL_DIGITAL_AUDIO_INTERFACE  0x0602\n+#define AUDIO_TERMINAL_LINE_CONNECTOR           0x0603\n+#define AUDIO_TERMINAL_LEGACY_AUDIO_CONNECTOR   0x0604\n+#define AUDIO_TERMINAL_SPDIF_INTERFACE          0x0605\n+#define AUDIO_TERMINAL_1394_DA_STREAM           0x0606\n+#define AUDIO_TERMINAL_1394_DA_STREAM_TRACK     0x0607\n+\n+/*  Embedded Function Terminal Types */\n+#define AUDIO_TERMINAL_EMBEDDED_UNDEFINED       0x0700\n+#define AUDIO_TERMINAL_CALIBRATION_NOISE        0x0701\n+#define AUDIO_TERMINAL_EQUALIZATION_NOISE       0x0702\n+#define AUDIO_TERMINAL_CD_PLAYER                0x0703\n+#define AUDIO_TERMINAL_DAT                      0x0704\n+#define AUDIO_TERMINAL_DCC                      0x0705\n+#define AUDIO_TERMINAL_MINI_DISK                0x0706\n+#define AUDIO_TERMINAL_ANALOG_TAPE              0x0707\n+#define AUDIO_TERMINAL_PHONOGRAPH               0x0708\n+#define AUDIO_TERMINAL_VCR_AUDIO                0x0709\n+#define AUDIO_TERMINAL_VIDEO_DISC_AUDIO         0x070A\n+#define AUDIO_TERMINAL_DVD_AUDIO                0x070B\n+#define AUDIO_TERMINAL_TV_TUNER_AUDIO           0x070C\n+#define AUDIO_TERMINAL_SATELLITE_RECEIVER_AUDIO 0x070D\n+#define AUDIO_TERMINAL_CABLE_TUNER_AUDIO        0x070E\n+#define AUDIO_TERMINAL_DSS_AUDIO                0x070F\n+#define AUDIO_TERMINAL_RADIO_RECEIVER           0x0710\n+#define AUDIO_TERMINAL_RADIO_TRANSMITTER        0x0711\n+#define AUDIO_TERMINAL_MULTI_TRACK_RECORDER     0x0712\n+#define AUDIO_TERMINAL_SYNTHESIZER              0x0713\n+\n+\n+#endif  /* __AUDIO_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_cdc.h ./lpc_chip_43xx/inc/usbd/usbd_cdc.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_cdc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_cdc.h\t2017-02-27 21:03:17.032043463 -0300\n@@ -0,0 +1,249 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_cdc.h 165 2011-04-14 17:41:11Z usb10131                       $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Communication Device Class User module Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __CDC_H\n+#define __CDC_H\n+\n+#include \"usbd.h\"\n+\n+/*----------------------------------------------------------------------------\n+ *      Definitions  based on usbcdc11.pdf (www.usb.org)\n+ *---------------------------------------------------------------------------*/\n+/* Communication device class specification version 1.10 */\n+#define CDC_V1_10                               0x0110\n+\n+/* Communication interface class code */\n+/* (usbcdc11.pdf, 4.2, Table 15) */\n+#define CDC_COMMUNICATION_INTERFACE_CLASS       0x02\n+\n+/* Communication interface class subclass codes */\n+/* (usbcdc11.pdf, 4.3, Table 16) */\n+#define CDC_DIRECT_LINE_CONTROL_MODEL           0x01\n+#define CDC_ABSTRACT_CONTROL_MODEL              0x02\n+#define CDC_TELEPHONE_CONTROL_MODEL             0x03\n+#define CDC_MULTI_CHANNEL_CONTROL_MODEL         0x04\n+#define CDC_CAPI_CONTROL_MODEL                  0x05\n+#define CDC_ETHERNET_NETWORKING_CONTROL_MODEL   0x06\n+#define CDC_ATM_NETWORKING_CONTROL_MODEL        0x07\n+\n+/* Communication interface class control protocol codes */\n+/* (usbcdc11.pdf, 4.4, Table 17) */\n+#define CDC_PROTOCOL_COMMON_AT_COMMANDS         0x01\n+\n+/* Data interface class code */\n+/* (usbcdc11.pdf, 4.5, Table 18) */\n+#define CDC_DATA_INTERFACE_CLASS                0x0A\n+\n+/* Data interface class protocol codes */\n+/* (usbcdc11.pdf, 4.7, Table 19) */\n+#define CDC_PROTOCOL_ISDN_BRI                   0x30\n+#define CDC_PROTOCOL_HDLC                       0x31\n+#define CDC_PROTOCOL_TRANSPARENT                0x32\n+#define CDC_PROTOCOL_Q921_MANAGEMENT            0x50\n+#define CDC_PROTOCOL_Q921_DATA_LINK             0x51\n+#define CDC_PROTOCOL_Q921_MULTIPLEXOR           0x52\n+#define CDC_PROTOCOL_V42                        0x90\n+#define CDC_PROTOCOL_EURO_ISDN                  0x91\n+#define CDC_PROTOCOL_V24_RATE_ADAPTATION        0x92\n+#define CDC_PROTOCOL_CAPI                       0x93\n+#define CDC_PROTOCOL_HOST_BASED_DRIVER          0xFD\n+#define CDC_PROTOCOL_DESCRIBED_IN_PUFD          0xFE\n+\n+/* Type values for bDescriptorType field of functional descriptors */\n+/* (usbcdc11.pdf, 5.2.3, Table 24) */\n+#define CDC_CS_INTERFACE                        0x24\n+#define CDC_CS_ENDPOINT                         0x25\n+\n+/* Type values for bDescriptorSubtype field of functional descriptors */\n+/* (usbcdc11.pdf, 5.2.3, Table 25) */\n+#define CDC_HEADER                              0x00\n+#define CDC_CALL_MANAGEMENT                     0x01\n+#define CDC_ABSTRACT_CONTROL_MANAGEMENT         0x02\n+#define CDC_DIRECT_LINE_MANAGEMENT              0x03\n+#define CDC_TELEPHONE_RINGER                    0x04\n+#define CDC_REPORTING_CAPABILITIES              0x05\n+#define CDC_UNION                               0x06\n+#define CDC_COUNTRY_SELECTION                   0x07\n+#define CDC_TELEPHONE_OPERATIONAL_MODES         0x08\n+#define CDC_USB_TERMINAL                        0x09\n+#define CDC_NETWORK_CHANNEL                     0x0A\n+#define CDC_PROTOCOL_UNIT                       0x0B\n+#define CDC_EXTENSION_UNIT                      0x0C\n+#define CDC_MULTI_CHANNEL_MANAGEMENT            0x0D\n+#define CDC_CAPI_CONTROL_MANAGEMENT             0x0E\n+#define CDC_ETHERNET_NETWORKING                 0x0F\n+#define CDC_ATM_NETWORKING                      0x10\n+\n+/* CDC class-specific request codes */\n+/* (usbcdc11.pdf, 6.2, Table 46) */\n+/* see Table 45 for info about the specific requests. */\n+#define CDC_SEND_ENCAPSULATED_COMMAND           0x00\n+#define CDC_GET_ENCAPSULATED_RESPONSE           0x01\n+#define CDC_SET_COMM_FEATURE                    0x02\n+#define CDC_GET_COMM_FEATURE                    0x03\n+#define CDC_CLEAR_COMM_FEATURE                  0x04\n+#define CDC_SET_AUX_LINE_STATE                  0x10\n+#define CDC_SET_HOOK_STATE                      0x11\n+#define CDC_PULSE_SETUP                         0x12\n+#define CDC_SEND_PULSE                          0x13\n+#define CDC_SET_PULSE_TIME                      0x14\n+#define CDC_RING_AUX_JACK                       0x15\n+#define CDC_SET_LINE_CODING                     0x20\n+#define CDC_GET_LINE_CODING                     0x21\n+#define CDC_SET_CONTROL_LINE_STATE              0x22\n+#define CDC_SEND_BREAK                          0x23\n+#define CDC_SET_RINGER_PARMS                    0x30\n+#define CDC_GET_RINGER_PARMS                    0x31\n+#define CDC_SET_OPERATION_PARMS                 0x32\n+#define CDC_GET_OPERATION_PARMS                 0x33\n+#define CDC_SET_LINE_PARMS                      0x34\n+#define CDC_GET_LINE_PARMS                      0x35\n+#define CDC_DIAL_DIGITS                         0x36\n+#define CDC_SET_UNIT_PARAMETER                  0x37\n+#define CDC_GET_UNIT_PARAMETER                  0x38\n+#define CDC_CLEAR_UNIT_PARAMETER                0x39\n+#define CDC_GET_PROFILE                         0x3A\n+#define CDC_SET_ETHERNET_MULTICAST_FILTERS      0x40\n+#define CDC_SET_ETHERNET_PMP_FILTER             0x41\n+#define CDC_GET_ETHERNET_PMP_FILTER             0x42\n+#define CDC_SET_ETHERNET_PACKET_FILTER          0x43\n+#define CDC_GET_ETHERNET_STATISTIC              0x44\n+#define CDC_SET_ATM_DATA_FORMAT                 0x50\n+#define CDC_GET_ATM_DEVICE_STATISTICS           0x51\n+#define CDC_SET_ATM_DEFAULT_VC                  0x52\n+#define CDC_GET_ATM_VC_STATISTICS               0x53\n+\n+/* Communication feature selector codes */\n+/* (usbcdc11.pdf, 6.2.2..6.2.4, Table 47) */\n+#define CDC_ABSTRACT_STATE                      0x01\n+#define CDC_COUNTRY_SETTING                     0x02\n+\n+/* Feature Status returned for ABSTRACT_STATE Selector */\n+/* (usbcdc11.pdf, 6.2.3, Table 48) */\n+#define CDC_IDLE_SETTING                        (1 << 0)\n+#define CDC_DATA_MULTPLEXED_STATE               (1 << 1)\n+\n+\n+/* Control signal bitmap values for the SetControlLineState request */\n+/* (usbcdc11.pdf, 6.2.14, Table 51) */\n+#define CDC_DTE_PRESENT                         (1 << 0)\n+#define CDC_ACTIVATE_CARRIER                    (1 << 1)\n+\n+/* CDC class-specific notification codes */\n+/* (usbcdc11.pdf, 6.3, Table 68) */\n+/* see Table 67 for Info about class-specific notifications */\n+#define CDC_NOTIFICATION_NETWORK_CONNECTION     0x00\n+#define CDC_RESPONSE_AVAILABLE                  0x01\n+#define CDC_AUX_JACK_HOOK_STATE                 0x08\n+#define CDC_RING_DETECT                         0x09\n+#define CDC_NOTIFICATION_SERIAL_STATE           0x20\n+#define CDC_CALL_STATE_CHANGE                   0x28\n+#define CDC_LINE_STATE_CHANGE                   0x29\n+#define CDC_CONNECTION_SPEED_CHANGE             0x2A\n+\n+/* UART state bitmap values (Serial state notification). */\n+/* (usbcdc11.pdf, 6.3.5, Table 69) */\n+#define CDC_SERIAL_STATE_OVERRUN                (1 << 6)  /* receive data overrun error has occurred */\n+#define CDC_SERIAL_STATE_PARITY                 (1 << 5)  /* parity error has occurred */\n+#define CDC_SERIAL_STATE_FRAMING                (1 << 4)  /* framing error has occurred */\n+#define CDC_SERIAL_STATE_RING                   (1 << 3)  /* state of ring signal detection */\n+#define CDC_SERIAL_STATE_BREAK                  (1 << 2)  /* state of break detection */\n+#define CDC_SERIAL_STATE_TX_CARRIER             (1 << 1)  /* state of transmission carrier */\n+#define CDC_SERIAL_STATE_RX_CARRIER             (1 << 0)  /* state of receiver carrier */\n+\n+\n+/*----------------------------------------------------------------------------\n+ *      Structures  based on usbcdc11.pdf (www.usb.org)\n+ *---------------------------------------------------------------------------*/\n+\n+/* Header functional descriptor */\n+/* (usbcdc11.pdf, 5.2.3.1) */\n+/* This header must precede any list of class-specific descriptors. */\n+PRE_PACK struct POST_PACK _CDC_HEADER_DESCRIPTOR{\n+  uint8_t  bFunctionLength;                      /* size of this descriptor in bytes */\n+  uint8_t  bDescriptorType;                      /* CS_INTERFACE descriptor type */\n+  uint8_t  bDescriptorSubtype;                   /* Header functional descriptor subtype */\n+  uint16_t bcdCDC;                               /* USB CDC specification release version */\n+};\n+typedef struct _CDC_HEADER_DESCRIPTOR CDC_HEADER_DESCRIPTOR;\n+\n+/* Call management functional descriptor */\n+/* (usbcdc11.pdf, 5.2.3.2) */\n+/* Describes the processing of calls for the communication class interface. */\n+PRE_PACK struct POST_PACK _CDC_CALL_MANAGEMENT_DESCRIPTOR {\n+  uint8_t  bFunctionLength;                      /* size of this descriptor in bytes */\n+  uint8_t  bDescriptorType;                      /* CS_INTERFACE descriptor type */\n+  uint8_t  bDescriptorSubtype;                   /* call management functional descriptor subtype */\n+  uint8_t  bmCapabilities;                       /* capabilities that this configuration supports */\n+  uint8_t  bDataInterface;                       /* interface number of the data class interface used for call management (optional) */\n+};\n+typedef struct _CDC_CALL_MANAGEMENT_DESCRIPTOR CDC_CALL_MANAGEMENT_DESCRIPTOR;\n+\n+/* Abstract control management functional descriptor */\n+/* (usbcdc11.pdf, 5.2.3.3) */\n+/* Describes the command supported by the communication interface class with the Abstract Control Model subclass code. */\n+PRE_PACK struct POST_PACK _CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR {\n+  uint8_t  bFunctionLength;                      /* size of this descriptor in bytes */\n+  uint8_t  bDescriptorType;                      /* CS_INTERFACE descriptor type */\n+  uint8_t  bDescriptorSubtype;                   /* abstract control management functional descriptor subtype */\n+  uint8_t  bmCapabilities;                       /* capabilities supported by this configuration */\n+};\n+typedef struct _CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR CDC_ABSTRACT_CONTROL_MANAGEMENT_DESCRIPTOR;\n+\n+/* Union functional descriptors */\n+/* (usbcdc11.pdf, 5.2.3.8) */\n+/* Describes the relationship between a group of interfaces that can be considered to form a functional unit. */\n+PRE_PACK struct POST_PACK _CDC_UNION_DESCRIPTOR {\n+  uint8_t  bFunctionLength;                      /* size of this descriptor in bytes */\n+  uint8_t  bDescriptorType;                      /* CS_INTERFACE descriptor type */\n+  uint8_t  bDescriptorSubtype;                   /* union functional descriptor subtype */\n+  uint8_t  bMasterInterface;                     /* interface number designated as master */\n+};\n+typedef struct _CDC_UNION_DESCRIPTOR CDC_UNION_DESCRIPTOR;\n+\n+/* Union functional descriptors with one slave interface */\n+/* (usbcdc11.pdf, 5.2.3.8) */\n+PRE_PACK struct POST_PACK _CDC_UNION_1SLAVE_DESCRIPTOR {\n+  CDC_UNION_DESCRIPTOR sUnion;              /* Union functional descriptor */\n+  uint8_t              bSlaveInterfaces[1]; /* Slave interface 0 */\n+};\n+typedef struct _CDC_UNION_1SLAVE_DESCRIPTOR CDC_UNION_1SLAVE_DESCRIPTOR;\n+\n+/* Line coding structure */\n+/* Format of the data returned when a GetLineCoding request is received */\n+/* (usbcdc11.pdf, 6.2.13) */\n+PRE_PACK struct POST_PACK _CDC_LINE_CODING {\n+  uint32_t dwDTERate;                            /* Data terminal rate in bits per second */\n+  uint8_t  bCharFormat;                          /* Number of stop bits */\n+  uint8_t  bParityType;                          /* Parity bit type */\n+  uint8_t  bDataBits;                            /* Number of data bits */\n+};\n+typedef struct _CDC_LINE_CODING CDC_LINE_CODING;\n+\n+/* Notification header */\n+/* Data sent on the notification endpoint must follow this header. */\n+/* see  USB_SETUP_PACKET in file usb.h */\n+typedef USB_SETUP_PACKET CDC_NOTIFICATION_HEADER;\n+\n+#endif /* __CDC_H */\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_cdcuser.h ./lpc_chip_43xx/inc/usbd/usbd_cdcuser.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_cdcuser.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_cdcuser.h\t2017-02-27 21:03:17.032043463 -0300\n@@ -0,0 +1,529 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_cdcuser.h 331 2012-08-09 18:54:34Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Communication Device Class User module Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __CDCUSER_H__\n+#define __CDCUSER_H__\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"usbd_cdc.h\"\n+\n+/** \\file\n+ *  \\brief Communication Device Class (CDC) API structures and function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based CDC function driver.\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_CDC Communication Device Class (CDC) Function Driver\n+ *  \\section Sec_CDCModDescription Module Description\n+ *  CDC Class Function Driver module. This module contains an internal implementation of the USB CDC Class.\n+ *\n+ *  User applications can use this class driver instead of implementing the CDC-ACM class manually\n+ *  via the low-level USBD_HW and USBD_Core APIs.\n+ *\n+ *  This module is designed to simplify the user code by exposing only the required interface needed to interface with\n+ *  Devices using the USB CDC-ACM Class.\n+ */\n+\n+/*----------------------------------------------------------------------------\n+  We need a buffer for incoming data on USB port because USB receives\n+  much faster than  UART transmits\n+ *---------------------------------------------------------------------------*/\n+/* Buffer masks */\n+#define CDC_BUF_SIZE               (128)               /* Output buffer in bytes (power 2) */\n+                                                       /* large enough for file transfer */\n+#define CDC_BUF_MASK               (CDC_BUF_SIZE-1ul)\n+\n+/** \\brief Communication Device Class function driver initialization parameter data structure.\n+ *  \\ingroup USBD_CDC\n+ *\n+ *  \\details  This data structure is used to pass initialization parameters to the\n+ *  Communication Device Class function driver's init function.\n+ *\n+ */\n+typedef struct USBD_CDC_INIT_PARAM\n+{\n+  /* memory allocation params */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 4 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_CDC_API::GetMemSize() routine.*/\n+  /** Pointer to the control interface descriptor within the descriptor\n+  * array (\\em high_speed_desc) passed to Init() through \\ref USB_CORE_DESCS_T\n+  * structure. The stack assumes both HS and FS use same BULK endpoints.\n+  */\n+  uint8_t* cif_intf_desc;\n+  /** Pointer to the data interface descriptor within the descriptor\n+  * array (\\em high_speed_desc) passed to Init() through \\ref USB_CORE_DESCS_T\n+  * structure. The stack assumes both HS and FS use same BULK endpoints.\n+  */\n+  uint8_t* dif_intf_desc;\n+\n+  /* user defined functions */\n+\n+  /* required functions */\n+  /**\n+  *  Communication Interface Class specific get request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends CIC management element get requests.\n+  *  \\note Applications implementing Abstract Control Model subclass can set this\n+  *  param to NULL. As the default driver parses ACM requests and calls the\n+  *  individual ACM call-back routines defined in this structure. For all other subclasses\n+  *  this routine should be provided by the application.\n+  *  \\n\n+  *  The setup packet data (\\em pSetup) is passed to the call-back so that application\n+  *  can extract the CIC request type and other associated data. By default the stack\n+  *  will assign \\em pBuffer pointer to \\em EP0Buff allocated at init. The application\n+  *  code can directly write data into this buffer as long as data is less than 64 byte.\n+  *  If more data has to be sent then application code should update \\em pBuffer pointer\n+  *  and length accordingly.\n+  *\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in, out] pBuffer  Pointer to a pointer of data buffer containing request data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in, out] length  Amount of data to be sent back to host.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CIC_GetRequest)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* length);\n+\n+  /**\n+  *  Communication Interface Class specific set request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a CIC management element requests.\n+  *  \\note Applications implementing Abstract Control Model subclass can set this\n+  *  param to NULL. As the default driver parses ACM requests and calls the\n+  *  individual ACM call-back routines defined in this structure. For all other subclasses\n+  *  this routine should be provided by the application.\n+  *  \\n\n+  *  The setup packet data (\\em pSetup) is passed to the call-back so that application can\n+  *  extract the CIC request type and other associated data. If a set request has data associated,\n+  *  then this call-back is called twice.\n+  *  -# First when setup request is received, at this time application code could update\n+  *  \\em pBuffer pointer to point to the intended destination. The length param is set to 0\n+  *  so that application code knows this is first time. By default the stack will\n+  *  assign \\em pBuffer pointer to \\em EP0Buff allocated at init. Note, if data length is\n+  *  greater than 64 bytes and application code doesn't update \\em pBuffer pointer the\n+  *  stack will send STALL condition to host.\n+  *  -# Second when the data is received from the host. This time the length param is set\n+  *  with number of data bytes received.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in, out] pBuffer  Pointer to a pointer of data buffer containing request data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in] length  Amount of data copied to destination buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CIC_SetRequest)( USBD_HANDLE_T hCdc, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t length);\n+\n+  /**\n+  *  Communication Device Class specific BULK IN endpoint handler.\n+  *\n+  *  The application software should provide the BULK IN endpoint handler.\n+  *  Applications should transfer data depending on the communication protocol type set in descriptors.\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CDC_BulkIN_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  /**\n+  *  Communication Device Class specific BULK OUT endpoint handler.\n+  *\n+  *  The application software should provide the BULK OUT endpoint handler.\n+  *  Applications should transfer data depending on the communication protocol type set in descriptors.\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CDC_BulkOUT_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SEND_ENCAPSULATED_COMMAND request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SEND_ENCAPSULATED_COMMAND set request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] buffer Pointer to the command buffer.\n+  *  \\param[in] len  Length of the command buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SendEncpsCmd) (USBD_HANDLE_T hCDC, uint8_t* buffer, uint16_t len);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific GET_ENCAPSULATED_RESPONSE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a GET_ENCAPSULATED_RESPONSE request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in, out] buffer Pointer to a pointer of data buffer containing response data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in, out] len  Amount of data to be sent back to host.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*GetEncpsResp) (USBD_HANDLE_T hCDC, uint8_t** buffer, uint16_t* len);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SET_COMM_FEATURE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SET_COMM_FEATURE set request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] feature Communication feature type. See usbcdc11.pdf, section 6.2.4, Table 47.\n+  *  \\param[in] buffer Pointer to the settings buffer for the specified communication feature.\n+  *  \\param[in] len  Length of the request buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SetCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature, uint8_t* buffer, uint16_t len);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific GET_COMM_FEATURE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a GET_ENCAPSULATED_RESPONSE request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] feature Communication feature type. See usbcdc11.pdf, section 6.2.4, Table 47.\n+  *  \\param[in, out] buffer Pointer to a pointer of data buffer containing current settings\n+  *                         for the communication feature.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *  \\param[in, out] len  Amount of data to be sent back to host.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*GetCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature, uint8_t** pBuffer, uint16_t* len);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific CLEAR_COMM_FEATURE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a CLEAR_COMM_FEATURE request. In the call-back the application\n+  *  should Clears the settings for a particular communication feature.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] feature Communication feature type. See usbcdc11.pdf, section 6.2.4, Table 47.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*ClrCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SET_CONTROL_LINE_STATE request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SET_CONTROL_LINE_STATE request. RS-232 signal used to tell the DCE\n+  *  device the DTE device is now present\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] state The state value uses bitmap values defined in usbcdc11.pdf,\n+  *        section 6.2.14, Table 51.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SetCtrlLineState) (USBD_HANDLE_T hCDC, uint16_t state);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SEND_BREAK request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SEND_BREAK request.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] mstime Duration of Break signal in milliseconds. If mstime is FFFFh, then\n+  *        the application should send break until another SendBreak request is received\n+  *        with the wValue of 0000h.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SendBreak) (USBD_HANDLE_T hCDC, uint16_t mstime);\n+\n+  /**\n+  *  Abstract control model(ACM) subclass specific SET_LINE_CODING request call-back function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a SET_LINE_CODING request. The application should configure the device\n+  *  per DTE rate, stop-bits, parity, and number-of-character bits settings provided in\n+  *  command buffer. See usbcdc11.pdf, section 6.2.13, table 50 for detail of the command buffer.\n+  *\n+  *  \\param[in] hCdc Handle to CDC function driver.\n+  *  \\param[in] line_coding Pointer to the CDC_LINE_CODING command buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*SetLineCode) (USBD_HANDLE_T hCDC, CDC_LINE_CODING* line_coding);\n+\n+  /**\n+  *  Optional Communication Device Class specific INTERRUPT IN endpoint handler.\n+  *\n+  *  The application software should provide the INT IN endpoint handler.\n+  *  Applications should transfer data depending on the communication protocol type set in descriptors.\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CDC_InterruptEP_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  /**\n+  *  Optional user override-able function to replace the default CDC class handler.\n+  *\n+  *  The application software could override the default EP0 class handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_CDC_API::Init().\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*CDC_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+} USBD_CDC_INIT_PARAM_T;\n+\n+/** \\brief CDC class API functions structure.\n+ *  \\ingroup USBD_CDC\n+ *\n+ *  This module exposes functions which interact directly with USB device controller hardware.\n+ *\n+ */\n+typedef struct USBD_CDC_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_CDC_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the CDC function driver module.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->CDC->Init(), to allocate memory used\n+   *  by CDC function driver module. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing CDC function driver module initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_CDC_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_CDC_INIT_PARAM_T* param)\n+   *  Function to initialize CDC function driver module.\n+   *\n+   *  This function is called by application layer to initialize CDC function driver module.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in, out] param Structure containing CDC function driver module initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF  Memory buffer passed is not 4-byte\n+   *              aligned or smaller than required.\n+   *          \\retval ERR_API_INVALID_PARAM2 Either CDC_Write() or CDC_Read() or\n+   *              CDC_Verify() callbacks are not defined.\n+   *          \\retval ERR_USBD_BAD_INTF_DESC  Wrong interface descriptor is passed.\n+   *          \\retval ERR_USBD_BAD_EP_DESC  Wrong endpoint descriptor is passed.\n+   */\n+  ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_CDC_INIT_PARAM_T* param, USBD_HANDLE_T* phCDC);\n+\n+  /** \\fn ErrorCode_t SendNotification(USBD_HANDLE_T hCdc, uint8_t bNotification, uint16_t data)\n+   *  Function to send CDC class notifications to host.\n+   *\n+   *  This function is called by application layer to send CDC class notifications to host.\n+   *  See usbcdc11.pdf, section 6.3, Table 67 for various notification types the CDC device can send.\n+   *  \\note The current version of the driver only supports following notifications allowed by ACM subclass:\n+   *  CDC_NOTIFICATION_NETWORK_CONNECTION, CDC_RESPONSE_AVAILABLE, CDC_NOTIFICATION_SERIAL_STATE.\n+   *  \\n\n+   *  For all other notifications application should construct the notification buffer appropriately\n+   *  and call hw->USB_WriteEP() for interrupt endpoint associated with the interface.\n+   *\n+   *  \\param[in] hCdc Handle to CDC function driver.\n+   *  \\param[in] bNotification Notification type allowed by ACM subclass. Should be CDC_NOTIFICATION_NETWORK_CONNECTION,\n+   *        CDC_RESPONSE_AVAILABLE or CDC_NOTIFICATION_SERIAL_STATE. For all other types ERR_API_INVALID_PARAM2\n+   *        is returned. See usbcdc11.pdf, section 3.6.2.1, table 5.\n+   *  \\param[in] data Data associated with notification.\n+   *        \\n For CDC_NOTIFICATION_NETWORK_CONNECTION a non-zero data value is interpreted as connected state.\n+   *        \\n For CDC_RESPONSE_AVAILABLE this parameter is ignored.\n+   *        \\n For CDC_NOTIFICATION_SERIAL_STATE the data should use bitmap values defined in usbcdc11.pdf,\n+   *        section 6.3.5, Table 69.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_API_INVALID_PARAM2  If unsupported notification type is passed.\n+   *\n+   */\n+  ErrorCode_t (*SendNotification)(USBD_HANDLE_T hCdc, uint8_t bNotification, uint16_t data);\n+\n+} USBD_CDC_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  ADVANCED_API */\n+\n+typedef struct _CDC_CTRL_T\n+{\n+  USB_CORE_CTRL_T*  pUsbCtrl;\n+  /* notification buffer */\n+  uint8_t notice_buf[12];\n+  CDC_LINE_CODING line_coding;\n+  uint8_t pad0;\n+\n+  uint8_t cif_num;                 /* control interface number */\n+  uint8_t dif_num;                 /* data interface number */\n+  uint8_t epin_num;                /* BULK IN endpoint number */\n+  uint8_t epout_num;               /* BULK OUT endpoint number */\n+  uint8_t epint_num;               /* Interrupt IN endpoint number */\n+  uint8_t pad[3];\n+  /* user defined functions */\n+  ErrorCode_t (*SendEncpsCmd) (USBD_HANDLE_T hCDC, uint8_t* buffer, uint16_t len);\n+  ErrorCode_t (*GetEncpsResp) (USBD_HANDLE_T hCDC, uint8_t** buffer, uint16_t* len);\n+  ErrorCode_t (*SetCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature, uint8_t* buffer, uint16_t len);\n+  ErrorCode_t (*GetCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature, uint8_t** pBuffer, uint16_t* len);\n+  ErrorCode_t (*ClrCommFeature) (USBD_HANDLE_T hCDC, uint16_t feature);\n+  ErrorCode_t (*SetCtrlLineState) (USBD_HANDLE_T hCDC, uint16_t state);\n+  ErrorCode_t (*SendBreak) (USBD_HANDLE_T hCDC, uint16_t state);\n+  ErrorCode_t (*SetLineCode) (USBD_HANDLE_T hCDC, CDC_LINE_CODING* line_coding);\n+\n+  /* virtual functions */\n+  ErrorCode_t (*CIC_GetRequest)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* length);\n+  ErrorCode_t (*CIC_SetRequest)( USBD_HANDLE_T hCdc, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t length);\n+\n+} USB_CDC_CTRL_T;\n+\n+/* structure used by old ROM drivers, needed for workaround */\n+typedef struct _CDC0_CTRL_T {\n+   USB_CORE_CTRL_T *pUsbCtrl;\n+   /* notification buffer */\n+   uint8_t notice_buf[12];\n+   CDC_LINE_CODING line_coding;\n+\n+   uint8_t cif_num;                /* control interface number */\n+   uint8_t dif_num;                /* data interface number */\n+   uint8_t epin_num;               /* BULK IN endpoint number */\n+   uint8_t epout_num;              /* BULK OUT endpoint number */\n+   uint8_t epint_num;              /* Interrupt IN endpoint number */\n+   /* user defined functions */\n+   ErrorCode_t (*SendEncpsCmd)(USBD_HANDLE_T hCDC, uint8_t *buffer, uint16_t len);\n+   ErrorCode_t (*GetEncpsResp)(USBD_HANDLE_T hCDC, uint8_t * *buffer, uint16_t *len);\n+   ErrorCode_t (*SetCommFeature)(USBD_HANDLE_T hCDC, uint16_t feature, uint8_t *buffer, uint16_t len);\n+   ErrorCode_t (*GetCommFeature)(USBD_HANDLE_T hCDC, uint16_t feature, uint8_t * *pBuffer, uint16_t *len);\n+   ErrorCode_t (*ClrCommFeature)(USBD_HANDLE_T hCDC, uint16_t feature);\n+   ErrorCode_t (*SetCtrlLineState)(USBD_HANDLE_T hCDC, uint16_t state);\n+   ErrorCode_t (*SendBreak)(USBD_HANDLE_T hCDC, uint16_t state);\n+   ErrorCode_t (*SetLineCode)(USBD_HANDLE_T hCDC, CDC_LINE_CODING *line_coding);\n+\n+   /* virtual functions */\n+   ErrorCode_t (*CIC_GetRequest)(USBD_HANDLE_T hHid, USB_SETUP_PACKET *pSetup, uint8_t * *pBuffer, uint16_t *length);\n+   ErrorCode_t (*CIC_SetRequest)(USBD_HANDLE_T hCdc, USB_SETUP_PACKET *pSetup, uint8_t * *pBuffer, uint16_t length);\n+\n+} USB_CDC0_CTRL_T;\n+\n+typedef ErrorCode_t (*CIC_SetRequest_t)(USBD_HANDLE_T hCdc, USB_SETUP_PACKET *pSetup, uint8_t * *pBuffer, uint16_t length);\n+\n+/** @cond  DIRECT_API */\n+extern uint32_t mwCDC_GetMemSize(USBD_CDC_INIT_PARAM_T* param);\n+extern ErrorCode_t mwCDC_init(USBD_HANDLE_T hUsb, USBD_CDC_INIT_PARAM_T* param, USBD_HANDLE_T* phCDC);\n+extern ErrorCode_t mwCDC_SendNotification (USBD_HANDLE_T hCdc, uint8_t bNotification, uint16_t data);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+\n+\n+\n+\n+#endif  /* __CDCUSER_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_core.h ./lpc_chip_43xx/inc/usbd/usbd_core.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_core.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_core.h\t2017-02-27 21:03:17.032043463 -0300\n@@ -0,0 +1,585 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_core.h 331 2012-08-09 18:54:34Z usb10131                      $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB core controller structure definitions and function prototypes.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __MW_USBD_CORE_H__\n+#define __MW_USBD_CORE_H__\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"app_usbd_cfg.h\"\n+\n+/** \\file\n+ *  \\brief ROM API for USB device stack.\n+ *\n+ *  Definition of functions exported by core layer of ROM based USB device stack.\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_Core USB Core Layer\n+ *  \\section Sec_CoreModDescription Module Description\n+ *  The USB Core Layer implements the device abstraction defined in the <em> Universal Serial Bus Specification, </em>\n+ *  for applications to interact with the USB device interface on the device. The software in this layer responds to\n+ *  standard requests and returns standard descriptors. In current stack the Init() routine part of\n+ *  \\ref USBD_HW_API_T structure initializes both hardware layer and core layer.\n+ */\n+\n+\n+/* function pointer types */\n+\n+/** \\ingroup USBD_Core\n+ *  \\typedef USB_CB_T\n+ *  \\brief USB device stack's event callback function type.\n+ *\n+ *  The USB device stack exposes several event triggers through callback to application layer. The\n+ *  application layer can register methods to be called when such USB event happens.\n+ *\n+ *  \\param[in] hUsb Handle to the USB device stack.\n+ *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+ *          \\retval LPC_OK On success\n+ *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+ *          \\retval ERR_USBD_xxx  Other error conditions.\n+ *\n+ */\n+typedef ErrorCode_t (*USB_CB_T) (USBD_HANDLE_T hUsb);\n+\n+/** \\ingroup USBD_Core\n+ *  \\typedef USB_PARAM_CB_T\n+ *  \\brief USB device stack's event callback function type.\n+ *\n+ *  The USB device stack exposes several event triggers through callback to application layer. The\n+ *  application layer can register methods to be called when such USB event happens.\n+ *\n+ *  \\param[in] hUsb Handle to the USB device stack.\n+ *  \\param[in] param1 Extra information related to the event.\n+ *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+ *          \\retval LPC_OK On success\n+ *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+ *          \\retval ERR_USBD_xxx  For other error conditions.\n+ *\n+ */\n+typedef ErrorCode_t (*USB_PARAM_CB_T) (USBD_HANDLE_T hUsb, uint32_t param1);\n+\n+/** \\ingroup USBD_Core\n+ *  \\typedef USB_EP_HANDLER_T\n+ *  \\brief USBD setup request and endpoint event handler type.\n+ *\n+ *  The application layer should define the custom class's EP0 handler with function signature.\n+ *  The stack calls all the registered class handlers on any EP0 event before going through default\n+ *  handling of the event. This gives the class handlers to implement class specific request handlers\n+ *  and also to override the default stack handling for a particular event targeted to the interface.\n+ *  If an event is not handled by the callback the function should return ERR_USBD_UNHANDLED. For all\n+ *  other return codes the stack assumes that callback has taken care of the event and hence will not\n+ *  process the event any further and issues a STALL condition on EP0 indicating error to the host.\n+ *  \\n\n+ *  For endpoint interrupt handler the return value is ignored by the stack.\n+ *  \\n\n+ *  \\param[in] hUsb Handle to the USB device stack.\n+ *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+ *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+ *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+ *          \\retval LPC_OK On success.\n+ *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+ *          \\retval ERR_USBD_xxx  For other error conditions.\n+ *\n+ */\n+typedef ErrorCode_t (*USB_EP_HANDLER_T)(USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+\n+/** \\ingroup USBD_Core\n+ *  \\brief USB descriptors data structure.\n+ *  \\ingroup USBD_Core\n+ *\n+ *  \\details  This structure is used as part of USB device stack initialization\n+ *  parameter structure \\ref USBD_API_INIT_PARAM_T. This structure contains\n+ *  pointers to various descriptor arrays needed by the stack. These descriptors\n+ *  are reported to USB host as part of enumerations process.\n+ *\n+ *  \\note All descriptor pointers assigned in this structure should be on 4 byte\n+ *  aligned address boundary.\n+ */\n+typedef struct _USB_CORE_DESCS_T\n+{\n+  uint8_t *device_desc; /**< Pointer to USB device descriptor */\n+  uint8_t *string_desc; /**< Pointer to array of USB string descriptors */\n+  uint8_t *full_speed_desc; /**< Pointer to USB device configuration descriptor\n+                            * when device is operating in full speed mode.\n+                            */\n+  uint8_t *high_speed_desc; /**< Pointer to USB device configuration descriptor\n+                            * when device is operating in high speed mode. For\n+                            * full-speed only implementation this pointer should\n+                            * be same as full_speed_desc.\n+                            */\n+  uint8_t *device_qualifier; /**< Pointer to USB device qualifier descriptor. For\n+                             * full-speed only implementation this pointer should\n+                             * be set to null (0).\n+                             */\n+} USB_CORE_DESCS_T;\n+\n+/** \\brief USB device stack initialization parameter data structure.\n+ *  \\ingroup USBD_Core\n+ *\n+ *  \\details  This data structure is used to pass initialization parameters to the\n+ *  USB device stack's init function.\n+ *\n+ */\n+typedef struct USBD_API_INIT_PARAM\n+{\n+  uint32_t usb_reg_base; /**< USB device controller's base register address. */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 2048 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_HW_API::GetMemSize() routine.*/\n+  uint8_t max_num_ep; /**< max number of endpoints supported by the USB device\n+                      controller instance (specified by \\em usb_reg_base field)\n+                      to which this instance of stack is attached.\n+                      */\n+  uint8_t pad0[3];\n+  /* USB Device Events Callback Functions */\n+   /** Event for USB interface reset. This event fires when the USB host requests that the device\n+    *  reset its interface. This event fires after the control endpoint has been automatically\n+    *  configured by the library.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will prevent the device from enumerating correctly or operate properly.\n+    *\n+    */\n+  USB_CB_T USB_Reset_Event;\n+\n+   /** Event for USB suspend. This event fires when the USB host suspends the device by halting its\n+    *  transmission of Start Of Frame pulses to the device. This is generally hooked in order to move\n+    *  the device over to a low power state until the host wakes up the device.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will cause other system issues.\n+    */\n+  USB_CB_T USB_Suspend_Event;\n+\n+   /** Event for USB wake up or resume. This event fires when a the USB device interface is suspended\n+    *  and the host wakes up the device by supplying Start Of Frame pulses. This is generally\n+    *  hooked to pull the user application out of a low power state and back into normal operating\n+    *  mode.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will cause other system issues.\n+    *\n+    */\n+  USB_CB_T USB_Resume_Event;\n+\n+  /** Reserved parameter should be set to zero. */\n+  USB_CB_T reserved_sbz;\n+\n+  /** Event for USB Start Of Frame detection, when enabled. This event fires at the start of each USB\n+    *  frame, once per millisecond in full-speed mode or once per 125 microseconds in high-speed mode,\n+   *  and is synchronized to the USB bus.\n+    *\n+    *  This event is time-critical; it is run once per millisecond (full-speed mode) and thus long handlers\n+    *  will significantly degrade device performance. This event should only be enabled when needed to\n+   *  reduce device wake-ups.\n+    *\n+    *  \\note This event is not normally active - it must be manually enabled and disabled via the USB interrupt\n+    *        register.\n+    *        \\n\\n\n+    */\n+  USB_CB_T USB_SOF_Event;\n+\n+  /** Event for remote wake-up configuration, when enabled. This event fires when the USB host\n+    *  request the device to configure itself for remote wake-up capability. The USB host sends\n+   *  this request to device which report remote wake-up capable in their device descriptors,\n+   *  before going to low-power state. The application layer should implement this callback if\n+   *  they have any special on board circuit to trigger remote wake up event. Also application\n+   *  can use this callback to differentiate the following SUSPEND event is caused by cable plug-out\n+   *  or host SUSPEND request. The device can wake-up host only after receiving this callback and\n+   *  remote wake-up feature is enabled by host. To signal remote wake-up the device has to generate\n+   *  resume signaling on bus by calling usapi.hw->WakeUp() routine.\n+    *\n+    *  \\n\\n\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] param1 When 0 - Clear the wake-up configuration, 1 - Enable the wake-up configuration.\n+   *  \\return The call back should return \\ref ErrorCode_t type to indicate success or error condition.\n+    */\n+  USB_PARAM_CB_T USB_WakeUpCfg;\n+\n+  /** Reserved parameter should be set to zero. */\n+  USB_PARAM_CB_T USB_Power_Event;\n+\n+  /** Event for error condition. This event fires when USB device controller detect\n+    *  an error condition in the system.\n+    *\n+    *  \\n\\n\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] param1 USB device interrupt status register.\n+   *  \\return The call back should return \\ref ErrorCode_t type to indicate success or error condition.\n+   */\n+  USB_PARAM_CB_T USB_Error_Event;\n+\n+  /* USB Core Events Callback Functions */\n+  /** Event for USB configuration number changed. This event fires when a the USB host changes the\n+   *  selected configuration number. On receiving configuration change request from host, the stack\n+   *  enables/configures the endpoints needed by the new configuration before calling this callback\n+   *  function.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will prevent the device from enumerating correctly or operate properly.\n+   *\n+   */\n+  USB_CB_T USB_Configure_Event;\n+\n+  /** Event for USB interface setting changed. This event fires when a the USB host changes the\n+   *  interface setting to one of alternate interface settings. On receiving interface change\n+   *  request from host, the stack enables/configures the endpoints needed by the new alternate\n+   *  interface setting before calling this callback function.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will prevent the device from enumerating correctly or operate properly.\n+   *\n+   */\n+  USB_CB_T USB_Interface_Event;\n+\n+  /** Event for USB feature changed. This event fires when a the USB host send set/clear feature\n+   *  request. The stack handles this request for USB_FEATURE_REMOTE_WAKEUP, USB_FEATURE_TEST_MODE\n+   *  and USB_FEATURE_ENDPOINT_STALL features only. On receiving feature request from host, the\n+   *  stack handle the request appropriately and then calls this callback function.\n+    *  \\n\n+    *  \\note This event is called from USB_ISR context and hence is time-critical. Having delays in this\n+    *  callback will prevent the device from enumerating correctly or operate properly.\n+   *\n+   */\n+ USB_CB_T USB_Feature_Event;\n+\n+  /* cache and MMU translation functions */\n+  /** Reserved parameter for future use. should be set to zero. */\n+  uint32_t (* virt_to_phys)(void* vaddr);\n+  /** Reserved parameter for future use. should be set to zero. */\n+  void (* cache_flush)(uint32_t* start_adr, uint32_t* end_adr);\n+\n+} USBD_API_INIT_PARAM_T;\n+\n+\n+/** \\brief USBD stack Core API functions structure.\n+ *  \\ingroup USBD_Core\n+ *\n+ *  \\details  This module exposes functions which interact directly with USB device stack's core layer.\n+ *  The application layer uses this component when it has to implement custom class function driver or\n+ *  standard class function driver which is not part of the current USB device stack.\n+ *  The functions exposed by this interface are to register class specific EP0 handlers and corresponding\n+ *  utility functions to manipulate EP0 state machine of the stack. This interface also exposes\n+ *  function to register custom endpoint interrupt handler.\n+ *\n+ */\n+typedef struct USBD_CORE_API\n+{\n+ /** \\fn ErrorCode_t RegisterClassHandler(USBD_HANDLE_T hUsb, USB_EP_HANDLER_T pfn, void* data)\n+  *  Function to register class specific EP0 event handler with USB device stack.\n+  *\n+  *  The application layer uses this function when it has to register the custom class's EP0 handler.\n+  *  The stack calls all the registered class handlers on any EP0 event before going through default\n+  *  handling of the event. This gives the class handlers to implement class specific request handlers\n+  *  and also to override the default stack handling for a particular event targeted to the interface.\n+  *  Check \\ref USB_EP_HANDLER_T for more details on how the callback function should be implemented. Also\n+  *  application layer could use this function to register EP0 handler which responds to vendor specific\n+  *  requests.\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] pfn  Class specific EP0 handler function.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success\n+  *          \\retval ERR_USBD_TOO_MANY_CLASS_HDLR(0x0004000c)  The number of class handlers registered is\n+                        greater than the number of handlers allowed by the stack.\n+  *\n+  */\n+  ErrorCode_t (*RegisterClassHandler)(USBD_HANDLE_T hUsb, USB_EP_HANDLER_T pfn, void* data);\n+\n+ /** \\fn ErrorCode_t RegisterEpHandler(USBD_HANDLE_T hUsb, uint32_t ep_index, USB_EP_HANDLER_T pfn, void* data)\n+  *  Function to register interrupt/event handler for the requested endpoint with USB device stack.\n+  *\n+  *  The application layer uses this function to register the endpoint event handler.\n+  *  The stack calls all the registered endpoint handlers when\n+  *  - USB_EVT_OUT or USB_EVT_OUT_NAK events happen for OUT endpoint.\n+  *  - USB_EVT_IN or USB_EVT_IN_NAK events happen for IN endpoint.\n+  *  Check USB_EP_HANDLER_T for more details on how the callback function should be implemented.\n+  *  \\note By default endpoint _NAK events are not enabled. Application should call \\ref USBD_HW_API_T::EnableEvent\n+  *  for the corresponding endpoint.\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] ep_index  Endpoint index. Computed as\n+  *                       - For OUT endpoints = 2 * endpoint number eg. for EP2_OUT it is 4.\n+  *                       - For IN endopoints = (2 * endpoint number) + 1 eg. for EP2_IN it is 5.\n+  *  \\param[in] pfn  Endpoint event handler function.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success\n+  *          \\retval ERR_API_INVALID_PARAM2  ep_index is outside the boundary ( < 2 * USBD_API_INIT_PARAM_T::max_num_ep).\n+  *\n+  */\n+  ErrorCode_t (*RegisterEpHandler)(USBD_HANDLE_T hUsb, uint32_t ep_index, USB_EP_HANDLER_T pfn, void* data);\n+\n+  /** \\fn void SetupStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in setup state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in setup state. This function will read\n+   *  the setup packet received from USB host into stack's buffer.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*SetupStage )(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void DataInStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in data_in state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in data_in state. This function will write\n+   *  the data present in EP0Data buffer to EP0 FIFO for transmission to host.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*DataInStage)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void DataOutStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in data_out state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in data_out state. This function will read\n+   *  the control data (EP0 out packets) received from USB host into EP0Data buffer.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*DataOutStage)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void StatusInStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in status_in state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in status_in state. This function will send\n+   *  zero length IN packet on EP0 to host, indicating positive status.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*StatusInStage)(USBD_HANDLE_T hUsb);\n+  /** \\fn void StatusOutStage(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in status_out state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  set the EP0 state machine in status_out state. This function will read\n+   *  the zero length OUT packet received from USB host on EP0.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*StatusOutStage)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void StallEp0(USBD_HANDLE_T hUsb)\n+   *  Function to set EP0 state machine in stall state.\n+   *\n+   *  This function is called by USB stack and the application layer to\n+   *  generate STALL signaling on EP0 endpoint. This function will also\n+   *  reset the EP0Data buffer.\n+   *  \\n\n+   *  \\note This interface is provided to users to invoke this function in other\n+   *  scenarios which are not handle by current stack. In most user applications\n+   *  this function is not called directly.Also this function can be used by\n+   *  users who are selectively modifying the USB device stack's standard handlers\n+   *  through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*StallEp0)(USBD_HANDLE_T hUsb);\n+\n+} USBD_CORE_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+\n+ /** @cond  ADVANCED_API */\n+\n+/* forward declaration */\n+struct _USB_CORE_CTRL_T;\n+typedef struct _USB_CORE_CTRL_T  USB_CORE_CTRL_T;\n+\n+/* USB device Speed status defines */\n+#define USB_FULL_SPEED    0\n+#define USB_HIGH_SPEED    1\n+\n+/* USB Endpoint Data Structure */\n+typedef struct _USB_EP_DATA\n+{\n+  uint8_t  *pData;\n+  uint16_t   Count;\n+  uint16_t pad0;\n+} USB_EP_DATA;\n+\n+\n+/* USB core controller data structure */\n+struct _USB_CORE_CTRL_T\n+{\n+  /* override-able function pointers ~ c++ style virtual functions*/\n+  USB_CB_T USB_EvtSetupHandler;\n+  USB_CB_T USB_EvtOutHandler;\n+  USB_PARAM_CB_T USB_ReqVendor;\n+  USB_CB_T USB_ReqGetStatus;\n+  USB_CB_T USB_ReqGetDescriptor;\n+  USB_CB_T USB_ReqGetConfiguration;\n+  USB_CB_T USB_ReqSetConfiguration;\n+  USB_CB_T USB_ReqGetInterface;\n+  USB_CB_T USB_ReqSetInterface;\n+  USB_PARAM_CB_T USB_ReqSetClrFeature;\n+\n+  /* USB Device Events Callback Functions */\n+  USB_CB_T USB_Reset_Event;\n+  USB_CB_T USB_Suspend_Event;\n+  USB_CB_T USB_Resume_Event;\n+  USB_CB_T USB_SOF_Event;\n+  USB_PARAM_CB_T USB_Power_Event;\n+  USB_PARAM_CB_T USB_Error_Event;\n+  USB_PARAM_CB_T USB_WakeUpCfg;\n+\n+  /* USB Core Events Callback Functions */\n+  USB_CB_T USB_Configure_Event;\n+  USB_CB_T USB_Interface_Event;\n+  USB_CB_T USB_Feature_Event;\n+\n+  /* cache and MMU translation functions */\n+  uint32_t (* virt_to_phys)(void* vaddr);\n+  void (* cache_flush)(uint32_t* start_adr, uint32_t* end_adr);\n+\n+  /* event handlers for endpoints. */\n+  USB_EP_HANDLER_T  ep_event_hdlr[2 * USB_MAX_EP_NUM];\n+  void*  ep_hdlr_data[2 * USB_MAX_EP_NUM];\n+\n+  /* USB class handlers */\n+  USB_EP_HANDLER_T  ep0_hdlr_cb[USB_MAX_IF_NUM];\n+  void*  ep0_cb_data[USB_MAX_IF_NUM];\n+  uint8_t num_ep0_hdlrs;\n+  /* USB Core data Variables */\n+  uint8_t max_num_ep; /* max number of endpoints supported by the HW */\n+  uint8_t device_speed;\n+  uint8_t  num_interfaces;\n+  uint8_t  device_addr;\n+  uint8_t  config_value;\n+  uint16_t device_status;\n+  uint8_t *device_desc;\n+  uint8_t *string_desc;\n+  uint8_t *full_speed_desc;\n+  uint8_t *high_speed_desc;\n+  uint8_t *device_qualifier;\n+  uint32_t ep_mask;\n+  uint32_t ep_halt;\n+  uint32_t ep_stall;\n+  uint8_t  alt_setting[USB_MAX_IF_NUM];\n+  /* HW driver data pointer */\n+  void* hw_data;\n+\n+  /* USB Endpoint 0 Data Info */\n+  USB_EP_DATA EP0Data;\n+\n+  /* USB Endpoint 0 Buffer */\n+  //ALIGNED(4)\n+  uint8_t  EP0Buf[64];\n+\n+  /* USB Setup Packet */\n+  //ALIGNED(4)\n+  USB_SETUP_PACKET SetupPacket;\n+\n+};\n+\n+/* USB Core Functions */\n+extern void mwUSB_InitCore(USB_CORE_CTRL_T* pCtrl, USB_CORE_DESCS_T* pdescr, USBD_API_INIT_PARAM_T* param);\n+extern void mwUSB_ResetCore(USBD_HANDLE_T hUsb);\n+\n+/* inline functions */\n+static INLINE void USB_SetSpeedMode(USB_CORE_CTRL_T* pCtrl, uint8_t mode)\n+{\n+    pCtrl->device_speed = mode;\n+}\n+\n+static INLINE bool USB_IsConfigured(USBD_HANDLE_T hUsb)\n+{\n+    USB_CORE_CTRL_T* pCtrl = (USB_CORE_CTRL_T*) hUsb;\n+    return (bool) (pCtrl->config_value != 0);\n+}\n+\n+/** @cond  DIRECT_API */\n+/* midleware API */\n+extern ErrorCode_t mwUSB_RegisterClassHandler(USBD_HANDLE_T hUsb, USB_EP_HANDLER_T pfn, void* data);\n+extern ErrorCode_t mwUSB_RegisterEpHandler(USBD_HANDLE_T hUsb, uint32_t ep_index, USB_EP_HANDLER_T pfn, void* data);\n+extern void mwUSB_SetupStage (USBD_HANDLE_T hUsb);\n+extern void mwUSB_DataInStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_DataOutStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StatusInStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StatusOutStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StallEp0(USBD_HANDLE_T hUsb);\n+extern ErrorCode_t mwUSB_RegisterClassHandler(USBD_HANDLE_T hUsb, USB_EP_HANDLER_T pfn, void* data);\n+extern ErrorCode_t mwUSB_RegisterEpHandler(USBD_HANDLE_T hUsb, uint32_t ep_index, USB_EP_HANDLER_T pfn, void* data);\n+extern void mwUSB_SetupStage (USBD_HANDLE_T hUsb);\n+extern void mwUSB_DataInStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_DataOutStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StatusInStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StatusOutStage(USBD_HANDLE_T hUsb);\n+extern void mwUSB_StallEp0(USBD_HANDLE_T hUsb);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+#endif  /* __MW_USBD_CORE_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_desc.h ./lpc_chip_43xx/inc/usbd/usbd_desc.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_desc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_desc.h\t2017-02-27 21:03:17.032043463 -0300\n@@ -0,0 +1,48 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_desc.h 165 2011-04-14 17:41:11Z usb10131                      $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Descriptors Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __USBDESC_H__\n+#define __USBDESC_H__\n+\n+#include \"usbd.h\"\n+\n+#define WBVAL(x) ((x) & 0xFF),(((x) >> 8) & 0xFF)\n+#define B3VAL(x) ((x) & 0xFF),(((x) >> 8) & 0xFF),(((x) >> 16) & 0xFF)\n+\n+#define USB_DEVICE_DESC_SIZE        (sizeof(USB_DEVICE_DESCRIPTOR))\n+#define USB_CONFIGUARTION_DESC_SIZE (sizeof(USB_CONFIGURATION_DESCRIPTOR))\n+#define USB_INTERFACE_DESC_SIZE     (sizeof(USB_INTERFACE_DESCRIPTOR))\n+#define USB_ENDPOINT_DESC_SIZE      (sizeof(USB_ENDPOINT_DESCRIPTOR))\n+#define USB_DEVICE_QUALI_SIZE       (sizeof(USB_DEVICE_QUALIFIER_DESCRIPTOR))\n+#define USB_OTHER_SPEED_CONF_SIZE   (sizeof(USB_OTHER_SPEED_CONFIGURATION))\n+\n+//#define HID_DESC_SIZE               (sizeof(HID_DESCRIPTOR))\n+//#define HID_REPORT_DESC_SIZE        (sizeof(HID_ReportDescriptor))\n+\n+extern const uint8_t  HID_ReportDescriptor[];\n+extern const uint16_t HID_ReportDescSize;\n+extern const uint16_t HID_DescOffset;\n+\n+\n+#endif  /* __USBDESC_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_dfu.h ./lpc_chip_43xx/inc/usbd/usbd_dfu.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_dfu.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_dfu.h\t2017-02-27 21:03:17.036043463 -0300\n@@ -0,0 +1,120 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_dfu.h 331 2012-08-09 18:54:34Z usb10131                       $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     Device Firmware Upgrade (DFU) module.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __MW_USBD_DFU_H__\n+#define __MW_USBD_DFU_H__\n+\n+#include \"usbd.h\"\n+\n+/** \\file\n+ *  \\brief Device Firmware Upgrade (DFU) class descriptors.\n+ *\n+ *  Definition of DFU class descriptors and their bit defines.\n+ *\n+ */\n+\n+/**\n+ * If USB device is only DFU capable, DFU Interface number is always 0.\n+ * if USB device is (DFU + Other Class (Audio/Mass Storage/HID), DFU\n+ * Interface number should also be 0 in this implementation.\n+ */\n+#define USB_DFU_IF_NUM 0x0\n+\n+#define USB_DFU_DESCRIPTOR_TYPE     0x21\n+#define USB_DFU_DESCRIPTOR_SIZE     9\n+#define USB_DFU_SUBCLASS            0x01\n+\n+/* DFU class-specific requests (Section 3, DFU Rev 1.1) */\n+#define USB_REQ_DFU_DETACH          0x00\n+#define USB_REQ_DFU_DNLOAD          0x01\n+#define USB_REQ_DFU_UPLOAD          0x02\n+#define USB_REQ_DFU_GETSTATUS       0x03\n+#define USB_REQ_DFU_CLRSTATUS       0x04\n+#define USB_REQ_DFU_GETSTATE        0x05\n+#define USB_REQ_DFU_ABORT           0x06\n+\n+#define DFU_STATUS_OK               0x00\n+#define DFU_STATUS_errTARGET        0x01\n+#define DFU_STATUS_errFILE          0x02\n+#define DFU_STATUS_errWRITE         0x03\n+#define DFU_STATUS_errERASE         0x04\n+#define DFU_STATUS_errCHECK_ERASED  0x05\n+#define DFU_STATUS_errPROG          0x06\n+#define DFU_STATUS_errVERIFY        0x07\n+#define DFU_STATUS_errADDRESS       0x08\n+#define DFU_STATUS_errNOTDONE       0x09\n+#define DFU_STATUS_errFIRMWARE      0x0a\n+#define DFU_STATUS_errVENDOR        0x0b\n+#define DFU_STATUS_errUSBR          0x0c\n+#define DFU_STATUS_errPOR           0x0d\n+#define DFU_STATUS_errUNKNOWN       0x0e\n+#define DFU_STATUS_errSTALLEDPKT    0x0f\n+\n+enum dfu_state {\n+  DFU_STATE_appIDLE             = 0,\n+  DFU_STATE_appDETACH           = 1,\n+  DFU_STATE_dfuIDLE             = 2,\n+  DFU_STATE_dfuDNLOAD_SYNC      = 3,\n+  DFU_STATE_dfuDNBUSY           = 4,\n+  DFU_STATE_dfuDNLOAD_IDLE      = 5,\n+  DFU_STATE_dfuMANIFEST_SYNC    = 6,\n+  DFU_STATE_dfuMANIFEST         = 7,\n+  DFU_STATE_dfuMANIFEST_WAIT_RST= 8,\n+  DFU_STATE_dfuUPLOAD_IDLE      = 9,\n+  DFU_STATE_dfuERROR            = 10\n+};\n+\n+#define DFU_EP0_NONE            0\n+#define DFU_EP0_UNHANDLED       1\n+#define DFU_EP0_STALL           2\n+#define DFU_EP0_ZLP             3\n+#define DFU_EP0_DATA            4\n+\n+#define USB_DFU_CAN_DOWNLOAD    (1 << 0)\n+#define USB_DFU_CAN_UPLOAD      (1 << 1)\n+#define USB_DFU_MANIFEST_TOL    (1 << 2)\n+#define USB_DFU_WILL_DETACH     (1 << 3)\n+\n+PRE_PACK struct POST_PACK _USB_DFU_FUNC_DESCRIPTOR {\n+  uint8_t   bLength;\n+  uint8_t   bDescriptorType;\n+  uint8_t   bmAttributes;\n+  uint16_t  wDetachTimeOut;\n+  uint16_t  wTransferSize;\n+  uint16_t  bcdDFUVersion;\n+};\n+typedef struct _USB_DFU_FUNC_DESCRIPTOR USB_DFU_FUNC_DESCRIPTOR;\n+\n+PRE_PACK struct POST_PACK _DFU_STATUS {\n+  uint8_t bStatus;\n+  uint8_t bwPollTimeout[3];\n+  uint8_t bState;\n+  uint8_t iString;\n+};\n+typedef struct _DFU_STATUS DFU_STATUS_T;\n+\n+#define DFU_FUNC_DESC_SIZE    sizeof(USB_DFU_FUNC_DESCRIPTOR)\n+#define DFU_GET_STATUS_SIZE   0x6\n+\n+\n+#endif  /* __MW_USBD_DFU_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_dfuuser.h ./lpc_chip_43xx/inc/usbd/usbd_dfuuser.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_dfuuser.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_dfuuser.h\t2017-02-27 21:03:17.036043463 -0300\n@@ -0,0 +1,270 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_dfuuser.h 331 2012-08-09 18:54:34Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     Device Firmware Upgrade Class Custom User Module Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __DFUUSER_H__\n+#define __DFUUSER_H__\n+\n+#include \"usbd.h\"\n+#include \"usbd_dfu.h\"\n+#include \"usbd_core.h\"\n+\n+/** \\file\n+ *  \\brief Device Firmware Upgrade (DFU) API structures and function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based DFU function driver.\n+ *\n+ */\n+\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_DFU Device Firmware Upgrade (DFU) Class Function Driver\n+ *  \\section Sec_MSCModDescription Module Description\n+ *  DFU Class Function Driver module. This module contains an internal implementation of the USB DFU Class.\n+ *  User applications can use this class driver instead of implementing the DFU class manually\n+ *  via the low-level USBD_HW and USBD_Core APIs.\n+ *\n+ *  This module is designed to simplify the user code by exposing only the required interface needed to interface with\n+ *  Devices using the USB DFU Class.\n+ */\n+\n+/** \\brief USB descriptors data structure.\n+ *  \\ingroup USBD_DFU\n+ *\n+ *  \\details  This module exposes functions which interact directly with USB device stack's core layer.\n+ *  The application layer uses this component when it has to implement custom class function driver or\n+ *  standard class function driver which is not part of the current USB device stack.\n+ *  The functions exposed by this interface are to register class specific EP0 handlers and corresponding\n+ *  utility functions to manipulate EP0 state machine of the stack. This interface also exposes\n+ *  function to register custom endpoint interrupt handler.\n+ *\n+ */\n+typedef struct USBD_DFU_INIT_PARAM\n+{\n+  /* memory allocation params */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 4 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_DFU_API::GetMemSize() routine.*/\n+  /* DFU paramas */\n+  uint16_t wTransferSize; /**< DFU transfer block size in number of bytes.\n+                          This value should match the value set in DFU descriptor\n+                          provided as part of the descriptor array\n+                          (\\em high_speed_desc) passed to Init() through\n+                          \\ref USB_CORE_DESCS_T structure.  */\n+\n+  uint16_t pad;\n+  /** Pointer to the DFU interface descriptor within the descriptor\n+  * array (\\em high_speed_desc) passed to Init() through \\ref USB_CORE_DESCS_T\n+  * structure.\n+  */\n+  uint8_t* intf_desc;\n+  /* user defined functions */\n+  /**\n+  *  DFU Write callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a write command. For application using zero-copy buffer scheme\n+  *  this function is called for the first time with \\em length parameter set to 0.\n+  *  The application code should update the buffer pointer.\n+  *\n+  *  \\param[in] block_num Destination start address.\n+  *  \\param[in, out] src  Pointer to a pointer to the source of data. Pointer-to-pointer\n+  *                     is used to implement zero-copy buffers. See \\ref USBD_ZeroCopy\n+  *                     for more details on zero-copy concept.\n+  *  \\param[out] bwPollTimeout  Pointer to a 3 byte buffer which the callback implementer\n+  *                     should fill with the amount of minimum time, in milliseconds,\n+  *                     that the host should wait before sending a subsequent\n+  *                     DFU_GETSTATUS request.\n+  *  \\param[in] length  Number of bytes to be written.\n+  *  \\return Returns DFU_STATUS_ values defined in mw_usbd_dfu.h.\n+  *\n+  */\n+  uint8_t (*DFU_Write)( uint32_t block_num, uint8_t** src, uint32_t length, uint8_t* bwPollTimeout);\n+\n+  /**\n+  *  DFU Read callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a read command.\n+  *\n+  *  \\param[in] block_num Destination start address.\n+  *  \\param[in, out] dst  Pointer to a pointer to the source of data. Pointer-to-pointer\n+  *                       is used to implement zero-copy buffers. See \\ref USBD_ZeroCopy\n+  *                       for more details on zero-copy concept.\n+  *  \\param[in] length  Amount of data copied to destination buffer.\n+  *  \\return Returns\n+  *                 - DFU_STATUS_ values defined in mw_usbd_dfu.h to return error conditions.\n+  *                 - 0 if there is no more data to be read. Stack will send EOF frame and set\n+  *                     DFU state-machine to dfuIdle state.\n+  *                 - length of the data copied, should be greater than or equal to 16. If the data copied\n+  *                   is less than DFU \\em wTransferSize the stack will send EOF frame and\n+  *                   goes to dfuIdle state.\n+  *\n+  */\n+  uint32_t (*DFU_Read)( uint32_t block_num, uint8_t** dst, uint32_t length);\n+\n+  /**\n+  *  DFU done callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  after firmware download completes.\n+  *\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*DFU_Done)(void);\n+\n+  /**\n+  *  DFU detach callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  after USB_REQ_DFU_DETACH is received. Applications which set USB_DFU_WILL_DETACH\n+  *  bit in DFU descriptor should define this function. As part of this function\n+  *  application can call Connect() routine to disconnect and then connect back with\n+  *  host. For application which rely on WinUSB based host application should use this\n+  *  feature since USB reset can be invoked only by kernel drivers on Windows host.\n+  *  By implementing this feature host doen't have to issue reset instead the device\n+  *  has to do it automatically by disconnect and connect procedure.\n+  *\n+  *  \\param[in] hUsb Handle DFU control structure.\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*DFU_Detach)(USBD_HANDLE_T hUsb);\n+\n+  /**\n+  *  Optional user override-able function to replace the default DFU class handler.\n+  *\n+  *  The application software could override the default EP0 class handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_DFU_API::Init().\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*DFU_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+} USBD_DFU_INIT_PARAM_T;\n+\n+\n+/** \\brief DFU class API functions structure.\n+ *  \\ingroup USBD_DFU\n+ *\n+ *  This module exposes functions which interact directly with USB device controller hardware.\n+ *\n+ */\n+typedef struct USBD_DFU_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_DFU_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the DFU function driver module.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->dfu->Init(), to allocate memory used\n+   *  by DFU function driver module. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing DFU function driver module initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_DFU_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param)\n+   *  Function to initialize DFU function driver module.\n+   *\n+   *  This function is called by application layer to initialize DFU function driver module.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in, out] param Structure containing DFU function driver module initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF  Memory buffer passed is not 4-byte aligned or smaller than required.\n+   *          \\retval ERR_API_INVALID_PARAM2 Either DFU_Write() or DFU_Done() or DFU_Read() call-backs are not defined.\n+   *          \\retval ERR_USBD_BAD_DESC\n+   *            - USB_DFU_DESCRIPTOR_TYPE is not defined immediately after\n+   *              interface descriptor.\n+   *            - wTransferSize in descriptor doesn't match the value passed\n+   *              in param->wTransferSize.\n+   *            - DFU_Detach() is not defined while USB_DFU_WILL_DETACH is set\n+   *              in DFU descriptor.\n+   *          \\retval ERR_USBD_BAD_INTF_DESC  Wrong interface descriptor is passed.\n+   */\n+  ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param, uint32_t init_state);\n+\n+} USBD_DFU_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  ADVANCED_API */\n+\n+typedef struct _USBD_DFU_CTRL_T\n+{\n+  /*ALIGNED(4)*/ DFU_STATUS_T dfu_req_get_status;\n+  uint16_t pad;\n+  uint8_t dfu_state;\n+  uint8_t dfu_status;\n+  uint8_t download_done;\n+  uint8_t if_num;                  /* interface number */\n+\n+  uint8_t* xfr_buf;\n+  USB_DFU_FUNC_DESCRIPTOR* dfu_desc;\n+\n+  USB_CORE_CTRL_T*  pUsbCtrl;\n+  /* user defined functions */\n+  /* return DFU_STATUS_ values defined in mw_usbd_dfu.h */\n+  uint8_t (*DFU_Write)( uint32_t block_num, uint8_t** src, uint32_t length, uint8_t* bwPollTimeout);\n+  /* return\n+  * DFU_STATUS_ : values defined in mw_usbd_dfu.h in case of errors\n+  * 0 : If end of memory reached\n+  * length : Amount of data copied to destination buffer\n+  */\n+  uint32_t (*DFU_Read)( uint32_t block_num, uint8_t** dst, uint32_t length);\n+  /* callback called after download is finished */\n+  void (*DFU_Done)(void);\n+  /* callback called after USB_REQ_DFU_DETACH is recived */\n+  void (*DFU_Detach)(USBD_HANDLE_T hUsb);\n+\n+} USBD_DFU_CTRL_T;\n+\n+/** @cond  DIRECT_API */\n+uint32_t mwDFU_GetMemSize(USBD_DFU_INIT_PARAM_T* param);\n+extern ErrorCode_t mwDFU_init(USBD_HANDLE_T hUsb, USBD_DFU_INIT_PARAM_T* param, uint32_t init_state);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+#endif  /* __DFUUSER_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd.h ./lpc_chip_43xx/inc/usbd/usbd.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd.h\t2017-02-27 21:03:17.036043463 -0300\n@@ -0,0 +1,705 @@\n+/***********************************************************************\n+* $Id:: mw_usbd.h 575 2012-11-20 01:35:56Z usb10131                           $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __USBD_H__\n+#define __USBD_H__\n+\n+/** \\file\n+ *  \\brief Common definitions and declarations for the USB stack.\n+ *\n+ *  Common definitions and declarations for the USB stack.\n+ *  \\addtogroup USBD_Core\n+ *  @{\n+ */\n+\n+#include \"lpc_types.h\"\n+\n+#if defined(__GNUC__)\n+/* As per http://gcc.gnu.org/onlinedocs/gcc/Attribute-Syntax.html#Attribute-Syntax,\n+6.29 Attributes Syntax\n+\"An attribute specifier list may appear as part of a struct, union or\n+enum specifier. It may go either immediately after the struct, union\n+or enum keyword, or after the closing brace. The former syntax is\n+preferred. Where attribute specifiers follow the closing brace, they\n+are considered to relate to the structure, union or enumerated type\n+defined, not to any enclosing declaration the type specifier appears\n+in, and the type defined is not complete until after the attribute\n+specifiers.\"\n+So use POST_PACK immediately after struct keyword\n+*/\n+#define PRE_PACK\n+#define POST_PACK  __attribute__((__packed__))\n+#define ALIGNED(n)      __attribute__((aligned (n)))\n+\n+#elif defined(__arm)\n+#define PRE_PACK   __packed\n+#define POST_PACK\n+#define ALIGNED(n)      __align(n)\n+\n+#elif defined(__ICCARM__)\n+#define PRE_PACK                __packed\n+#define POST_PACK\n+#define PRAGMA_ALIGN_4096       _Pragma(\"data_alignment=4096\")\n+#define PRAGMA_ALIGN_2048       _Pragma(\"data_alignment=2048\")\n+#define PRAGMA_ALIGN_512        _Pragma(\"data_alignment=512\")\n+#define PRAGMA_ALIGN_256        _Pragma(\"data_alignment=256\")\n+#define PRAGMA_ALIGN_128        _Pragma(\"data_alignment=128\")\n+#define PRAGMA_ALIGN_64         _Pragma(\"data_alignment=64\")\n+#define PRAGMA_ALIGN_48         _Pragma(\"data_alignment=48\")\n+#define PRAGMA_ALIGN_32         _Pragma(\"data_alignment=32\")\n+#define PRAGMA_ALIGN_4          _Pragma(\"data_alignment=4\")\n+#define ALIGNED(n)              PRAGMA_ALIGN_##n\n+\n+#pragma diag_suppress=Pe021\n+#endif\n+\n+/** Structure to pack lower and upper byte to form 16 bit word. */\n+PRE_PACK struct POST_PACK _WB_T\n+{\n+  uint8_t L; /**< lower byte */\n+  uint8_t H; /**< upper byte */\n+};\n+/** Structure to pack lower and upper byte to form 16 bit word.*/\n+typedef struct _WB_T WB_T;\n+\n+/** Union of \\ref _WB_T struct and 16 bit word.*/\n+PRE_PACK union POST_PACK __WORD_BYTE\n+{\n+  uint16_t W; /**< data member to do 16 bit access */\n+  WB_T WB; /**< data member to do 8 bit access */\n+} ;\n+/** Union of \\ref _WB_T struct and 16 bit word.*/\n+typedef union __WORD_BYTE WORD_BYTE;\n+\n+/** bmRequestType.Dir defines\n+ * @{\n+ */\n+/** Request from host to device */\n+#define REQUEST_HOST_TO_DEVICE     0\n+/** Request from device to host */\n+#define REQUEST_DEVICE_TO_HOST     1\n+/** @} */\n+\n+/** bmRequestType.Type defines\n+ * @{\n+ */\n+/** Standard Request */\n+#define REQUEST_STANDARD           0\n+/** Class Request */\n+#define REQUEST_CLASS              1\n+/** Vendor Request */\n+#define REQUEST_VENDOR             2\n+/** Reserved Request */\n+#define REQUEST_RESERVED           3\n+/** @} */\n+\n+/** bmRequestType.Recipient defines\n+ * @{\n+ */\n+/** Request to device */\n+#define REQUEST_TO_DEVICE          0\n+/** Request to interface */\n+#define REQUEST_TO_INTERFACE       1\n+/** Request to endpoint */\n+#define REQUEST_TO_ENDPOINT        2\n+/** Request to other */\n+#define REQUEST_TO_OTHER           3\n+/** @} */\n+\n+/** Structure to define 8 bit USB request.*/\n+PRE_PACK struct POST_PACK _BM_T\n+{\n+  uint8_t Recipient :  5; /**< Recipient type. */\n+  uint8_t Type      :  2; /**< Request type.  */\n+  uint8_t Dir       :  1; /**< Direction type. */\n+};\n+/** Structure to define 8 bit USB request.*/\n+typedef struct _BM_T BM_T;\n+\n+/** Union of \\ref _BM_T struct and 8 bit byte.*/\n+PRE_PACK union POST_PACK _REQUEST_TYPE\n+{\n+  uint8_t B; /**< byte wide access memeber */\n+  BM_T BM;   /**< bitfield structure access memeber */\n+} ;\n+/** Union of \\ref _BM_T struct and 8 bit byte.*/\n+typedef union _REQUEST_TYPE REQUEST_TYPE;\n+\n+/** USB Standard Request Codes\n+ * @{\n+ */\n+/** GET_STATUS request */\n+#define USB_REQUEST_GET_STATUS                 0\n+/** CLEAR_FEATURE request */\n+#define USB_REQUEST_CLEAR_FEATURE              1\n+/** SET_FEATURE request */\n+#define USB_REQUEST_SET_FEATURE                3\n+/** SET_ADDRESS request */\n+#define USB_REQUEST_SET_ADDRESS                5\n+/** GET_DESCRIPTOR request */\n+#define USB_REQUEST_GET_DESCRIPTOR             6\n+/** SET_DESCRIPTOR request */\n+#define USB_REQUEST_SET_DESCRIPTOR             7\n+/** GET_CONFIGURATION request */\n+#define USB_REQUEST_GET_CONFIGURATION          8\n+/** SET_CONFIGURATION request */\n+#define USB_REQUEST_SET_CONFIGURATION          9\n+/** GET_INTERFACE request */\n+#define USB_REQUEST_GET_INTERFACE              10\n+/** SET_INTERFACE request */\n+#define USB_REQUEST_SET_INTERFACE              11\n+/** SYNC_FRAME request */\n+#define USB_REQUEST_SYNC_FRAME                 12\n+/** @} */\n+\n+/** USB GET_STATUS Bit Values\n+ * @{\n+ */\n+/** SELF_POWERED status*/\n+#define USB_GETSTATUS_SELF_POWERED             0x01\n+/** REMOTE_WAKEUP capable status*/\n+#define USB_GETSTATUS_REMOTE_WAKEUP            0x02\n+/** ENDPOINT_STALL status*/\n+#define USB_GETSTATUS_ENDPOINT_STALL           0x01\n+/** @} */\n+\n+/** USB Standard Feature selectors\n+ * @{\n+ */\n+/** ENDPOINT_STALL feature*/\n+#define USB_FEATURE_ENDPOINT_STALL             0\n+/** REMOTE_WAKEUP feature*/\n+#define USB_FEATURE_REMOTE_WAKEUP              1\n+/** TEST_MODE feature*/\n+#define USB_FEATURE_TEST_MODE                  2\n+/** @} */\n+\n+/** USB Default Control Pipe Setup Packet*/\n+PRE_PACK struct POST_PACK _USB_SETUP_PACKET\n+{\n+  REQUEST_TYPE bmRequestType; /**< This bitmapped field identifies the characteristics\n+                              of the specific request. \\sa _BM_T.\n+                              */\n+  uint8_t      bRequest; /**< This field specifies the particular request. The\n+                         Type bits in the bmRequestType field modify the meaning\n+                         of this field. \\sa USBD_REQUEST.\n+                         */\n+  WORD_BYTE    wValue; /**< Used to pass a parameter to the device, specific\n+                        to the request.\n+                        */\n+  WORD_BYTE    wIndex; /**< Used to pass a parameter to the device, specific\n+                        to the request. The wIndex field is often used in\n+                        requests to specify an endpoint or an interface.\n+                        */\n+  uint16_t     wLength; /**< This field specifies the length of the data\n+                        transferred during the second phase of the control\n+                        transfer.\n+                        */\n+} ;\n+/** USB Default Control Pipe Setup Packet*/\n+typedef struct _USB_SETUP_PACKET USB_SETUP_PACKET;\n+\n+\n+/** USB Descriptor Types\n+ * @{\n+ */\n+/** Device descriptor type  */\n+#define USB_DEVICE_DESCRIPTOR_TYPE             1\n+/** Configuration descriptor type  */\n+#define USB_CONFIGURATION_DESCRIPTOR_TYPE      2\n+/** String descriptor type  */\n+#define USB_STRING_DESCRIPTOR_TYPE             3\n+/** Interface descriptor type  */\n+#define USB_INTERFACE_DESCRIPTOR_TYPE          4\n+/** Endpoint descriptor type  */\n+#define USB_ENDPOINT_DESCRIPTOR_TYPE           5\n+/** Device qualifier descriptor type  */\n+#define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE   6\n+/** Other speed configuration descriptor type  */\n+#define USB_OTHER_SPEED_CONFIG_DESCRIPTOR_TYPE 7\n+/** Interface power descriptor type  */\n+#define USB_INTERFACE_POWER_DESCRIPTOR_TYPE    8\n+/** OTG descriptor type  */\n+#define USB_OTG_DESCRIPTOR_TYPE                     9\n+/** Debug descriptor type  */\n+#define USB_DEBUG_DESCRIPTOR_TYPE                  10\n+/** Interface association descriptor type  */\n+#define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE  11\n+/** @} */\n+\n+/** USB Device Classes\n+ * @{\n+ */\n+/** Reserved device class  */\n+#define USB_DEVICE_CLASS_RESERVED              0x00\n+/** Audio device class  */\n+#define USB_DEVICE_CLASS_AUDIO                 0x01\n+/** Communications device class  */\n+#define USB_DEVICE_CLASS_COMMUNICATIONS        0x02\n+/** Human interface device class  */\n+#define USB_DEVICE_CLASS_HUMAN_INTERFACE       0x03\n+/** monitor device class  */\n+#define USB_DEVICE_CLASS_MONITOR               0x04\n+/** physical interface device class  */\n+#define USB_DEVICE_CLASS_PHYSICAL_INTERFACE    0x05\n+/** power device class  */\n+#define USB_DEVICE_CLASS_POWER                 0x06\n+/** Printer device class  */\n+#define USB_DEVICE_CLASS_PRINTER               0x07\n+/** Storage device class  */\n+#define USB_DEVICE_CLASS_STORAGE               0x08\n+/** Hub device class  */\n+#define USB_DEVICE_CLASS_HUB                   0x09\n+/** miscellaneous device class  */\n+#define USB_DEVICE_CLASS_MISCELLANEOUS         0xEF\n+/** Application device class  */\n+#define USB_DEVICE_CLASS_APP                   0xFE\n+/** Vendor specific device class  */\n+#define USB_DEVICE_CLASS_VENDOR_SPECIFIC       0xFF\n+/** @} */\n+\n+/** bmAttributes in Configuration Descriptor\n+ * @{\n+ */\n+/** Power field mask */\n+#define USB_CONFIG_POWERED_MASK                0x40\n+/** Bus powered */\n+#define USB_CONFIG_BUS_POWERED                 0x80\n+/** Self powered */\n+#define USB_CONFIG_SELF_POWERED                0xC0\n+/** remote wakeup */\n+#define USB_CONFIG_REMOTE_WAKEUP               0x20\n+/** @} */\n+\n+/** bMaxPower in Configuration Descriptor */\n+#define USB_CONFIG_POWER_MA(mA)                ((mA)/2)\n+\n+/** bEndpointAddress in Endpoint Descriptor\n+ * @{\n+ */\n+/** Endopint address mask */\n+#define USB_ENDPOINT_DIRECTION_MASK            0x80\n+/** Macro to convert OUT endopint number to endpoint address value. */\n+#define USB_ENDPOINT_OUT(addr)                 ((addr) | 0x00)\n+/** Macro to convert IN endopint number to endpoint address value. */\n+#define USB_ENDPOINT_IN(addr)                  ((addr) | 0x80)\n+/** @} */\n+\n+/** bmAttributes in Endpoint Descriptor\n+ * @{\n+ */\n+/** Endopint type mask */\n+#define USB_ENDPOINT_TYPE_MASK                 0x03\n+/** Control Endopint type */\n+#define USB_ENDPOINT_TYPE_CONTROL              0x00\n+/** isochronous Endopint type */\n+#define USB_ENDPOINT_TYPE_ISOCHRONOUS          0x01\n+/** bulk Endopint type */\n+#define USB_ENDPOINT_TYPE_BULK                 0x02\n+/** interrupt Endopint type */\n+#define USB_ENDPOINT_TYPE_INTERRUPT            0x03\n+/** Endopint sync type mask */\n+#define USB_ENDPOINT_SYNC_MASK                 0x0C\n+/** no synchronization Endopint */\n+#define USB_ENDPOINT_SYNC_NO_SYNCHRONIZATION   0x00\n+/** Asynchronous sync Endopint */\n+#define USB_ENDPOINT_SYNC_ASYNCHRONOUS         0x04\n+/** Adaptive sync Endopint */\n+#define USB_ENDPOINT_SYNC_ADAPTIVE             0x08\n+/** Synchronous sync Endopint */\n+#define USB_ENDPOINT_SYNC_SYNCHRONOUS          0x0C\n+/** Endopint usage type mask */\n+#define USB_ENDPOINT_USAGE_MASK                0x30\n+/** Endopint data usage type  */\n+#define USB_ENDPOINT_USAGE_DATA                0x00\n+/** Endopint feedback usage type  */\n+#define USB_ENDPOINT_USAGE_FEEDBACK            0x10\n+/** Endopint implicit feedback usage type  */\n+#define USB_ENDPOINT_USAGE_IMPLICIT_FEEDBACK   0x20\n+/** Endopint reserved usage type  */\n+#define USB_ENDPOINT_USAGE_RESERVED            0x30\n+/** @} */\n+\n+/** Control endopint EP0's maximum packet size in high-speed mode.*/\n+#define USB_ENDPOINT_0_HS_MAXP                 64\n+/** Control endopint EP0's maximum packet size in low-speed mode.*/\n+#define USB_ENDPOINT_0_LS_MAXP                 8\n+/** Bulk endopint's maximum packet size in high-speed mode.*/\n+#define USB_ENDPOINT_BULK_HS_MAXP              512\n+\n+/** USB Standard Device Descriptor */\n+PRE_PACK struct POST_PACK _USB_DEVICE_DESCRIPTOR\n+{\n+  uint8_t  bLength;     /**< Size of this descriptor in bytes. */\n+  uint8_t  bDescriptorType; /**< DEVICE Descriptor Type. */\n+  uint16_t bcdUSB; /**< BUSB Specification Release Number in\n+                    Binary-Coded Decimal (i.e., 2.10 is 210H).\n+                    This field identifies the release of the USB\n+                    Specification with which the device and its\n+                    descriptors are compliant.\n+                   */\n+  uint8_t  bDeviceClass; /**< Class code (assigned by the USB-IF).\n+                          If this field is reset to zero, each interface\n+                          within a configuration specifies its own\n+                          class information and the various\n+                          interfaces operate independently.\\n\n+                          If this field is set to a value between 1 and\n+                          FEH, the device supports different class\n+                          specifications on different interfaces and\n+                          the interfaces may not operate\n+                          independently. This value identifies the\n+                          class definition used for the aggregate\n+                          interfaces. \\n\n+                          If this field is set to FFH, the device class\n+                          is vendor-specific.\n+                          */\n+  uint8_t  bDeviceSubClass; /**< Subclass code (assigned by the USB-IF).\n+                            These codes are qualified by the value of\n+                            the bDeviceClass field. \\n\n+                            If the bDeviceClass field is reset to zero,\n+                            this field must also be reset to zero. \\n\n+                            If the bDeviceClass field is not set to FFH,\n+                            all values are reserved for assignment by\n+                            the USB-IF.\n+                            */\n+  uint8_t  bDeviceProtocol; /**< Protocol code (assigned by the USB-IF).\n+                            These codes are qualified by the value of\n+                            the bDeviceClass and the\n+                            bDeviceSubClass fields. If a device\n+                            supports class-specific protocols on a\n+                            device basis as opposed to an interface\n+                            basis, this code identifies the protocols\n+                            that the device uses as defined by the\n+                            specification of the device class. \\n\n+                            If this field is reset to zero, the device\n+                            does not use class-specific protocols on a\n+                            device basis. However, it may use classspecific\n+                            protocols on an interface basis. \\n\n+                            If this field is set to FFH, the device uses a\n+                            vendor-specific protocol on a device basis.\n+                            */\n+  uint8_t  bMaxPacketSize0; /**< Maximum packet size for endpoint zero\n+                            (only 8, 16, 32, or 64 are valid). For HS devices\n+                            is fixed to 64.\n+                            */\n+\n+  uint16_t idVendor; /**< Vendor ID (assigned by the USB-IF). */\n+  uint16_t idProduct; /**< Product ID (assigned by the manufacturer). */\n+  uint16_t bcdDevice; /**< Device release number in binary-coded decimal. */\n+  uint8_t  iManufacturer; /**< Index of string descriptor describing manufacturer. */\n+  uint8_t  iProduct; /**< Index of string descriptor describing product. */\n+  uint8_t  iSerialNumber; /**< Index of string descriptor describing the device�s\n+                          serial number.\n+                          */\n+  uint8_t  bNumConfigurations; /**< Number of possible configurations. */\n+} ;\n+/** USB Standard Device Descriptor */\n+typedef struct _USB_DEVICE_DESCRIPTOR USB_DEVICE_DESCRIPTOR;\n+\n+/** USB 2.0 Device Qualifier Descriptor */\n+PRE_PACK struct POST_PACK _USB_DEVICE_QUALIFIER_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of descriptor */\n+  uint8_t  bDescriptorType; /**< Device Qualifier Type */\n+  uint16_t bcdUSB; /**< USB specification version number (e.g., 0200H for V2.00) */\n+  uint8_t  bDeviceClass; /**< Class Code */\n+  uint8_t  bDeviceSubClass; /**< SubClass Code */\n+  uint8_t  bDeviceProtocol; /**< Protocol Code */\n+  uint8_t  bMaxPacketSize0; /**< Maximum packet size for other speed */\n+  uint8_t  bNumConfigurations; /**< Number of Other-speed Configurations */\n+  uint8_t  bReserved; /**< Reserved for future use, must be zero */\n+} ;\n+/** USB 2.0 Device Qualifier Descriptor */\n+typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR USB_DEVICE_QUALIFIER_DESCRIPTOR;\n+\n+/** USB Standard Configuration Descriptor */\n+PRE_PACK struct POST_PACK _USB_CONFIGURATION_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes */\n+  uint8_t  bDescriptorType; /**< CONFIGURATION Descriptor Type*/\n+  uint16_t wTotalLength; /**< Total length of data returned for this\n+                          configuration. Includes the combined length\n+                          of all descriptors (configuration, interface,\n+                          endpoint, and class- or vendor-specific)\n+                          returned for this configuration.*/\n+  uint8_t  bNumInterfaces; /**< Number of interfaces supported by this configuration*/\n+  uint8_t  bConfigurationValue; /**< Value to use as an argument to the\n+                                SetConfiguration() request to select this\n+                                configuration. */\n+  uint8_t  iConfiguration; /**< Index of string descriptor describing this\n+                            configuration*/\n+  uint8_t  bmAttributes; /**< Configuration characteristics \\n\n+                          D7: Reserved (set to one)\\n\n+                          D6: Self-powered \\n\n+                          D5: Remote Wakeup \\n\n+                          D4...0: Reserved (reset to zero) \\n\n+                          D7 is reserved and must be set to one for\n+                          historical reasons. \\n\n+                          A device configuration that uses power from\n+                          the bus and a local source reports a non-zero\n+                          value in bMaxPower to indicate the amount of\n+                          bus power required and sets D6. The actual\n+                          power source at runtime may be determined\n+                          using the GetStatus(DEVICE) request (see\n+                          USB 2.0 spec Section 9.4.5). \\n\n+                          If a device configuration supports remote\n+                          wakeup, D5 is set to one.*/\n+  uint8_t  bMaxPower; /**< Maximum power consumption of the USB\n+                      device from the bus in this specific\n+                      configuration when the device is fully\n+                      operational. Expressed in 2 mA units\n+                      (i.e., 50 = 100 mA). \\n\n+                      Note: A device configuration reports whether\n+                      the configuration is bus-powered or selfpowered.\n+                      Device status reports whether the\n+                      device is currently self-powered. If a device is\n+                      disconnected from its external power source, it\n+                      updates device status to indicate that it is no\n+                      longer self-powered. \\n\n+                      A device may not increase its power draw\n+                      from the bus, when it loses its external power\n+                      source, beyond the amount reported by its\n+                      configuration. \\n\n+                      If a device can continue to operate when\n+                      disconnected from its external power source, it\n+                      continues to do so. If the device cannot\n+                      continue to operate, it fails operations it can\n+                      no longer support. The USB System Software\n+                      may determine the cause of the failure by\n+                      checking the status and noting the loss of the\n+                      device�s power source.*/\n+} ;\n+/** USB Standard Configuration Descriptor */\n+typedef struct _USB_CONFIGURATION_DESCRIPTOR USB_CONFIGURATION_DESCRIPTOR;\n+\n+/** USB Standard Interface Association Descriptor */\n+PRE_PACK struct POST_PACK _USB_IAD_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< INTERFACE ASSOCIATION Descriptor Type*/\n+  uint8_t  bFirstInterface; /**< Interface number of the first interface that is\n+                            associated with this function.*/\n+  uint8_t  bInterfaceCount; /**< Number of contiguous interfaces that are\n+                            associated with this function. */\n+  uint8_t  bFunctionClass; /**< Class code (assigned by USB-IF). \\n\n+                            A value of zero is not allowed in this descriptor.\n+                            If this field is FFH, the function class is vendorspecific.\n+                            All other values are reserved for assignment by\n+                            the USB-IF.*/\n+  uint8_t  bFunctionSubClass; /**< Subclass code (assigned by USB-IF). \\n\n+                            If the bFunctionClass field is not set to FFH all\n+                            values are reserved for assignment by the USBIF.*/\n+  uint8_t  bFunctionProtocol; /**< Protocol code (assigned by the USB). \\n\n+                                These codes are qualified by the values of the\n+                                bFunctionClass and bFunctionSubClass fields.*/\n+  uint8_t  iFunction; /**< Index of string descriptor describing this function.*/\n+} ;\n+/** USB Standard Interface Association Descriptor */\n+typedef struct _USB_IAD_DESCRIPTOR USB_IAD_DESCRIPTOR;\n+\n+/** USB Standard Interface Descriptor */\n+PRE_PACK struct POST_PACK _USB_INTERFACE_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< INTERFACE Descriptor Type*/\n+  uint8_t  bInterfaceNumber; /**< Number of this interface. Zero-based\n+                              value identifying the index in the array of\n+                              concurrent interfaces supported by this\n+                              configuration.*/\n+  uint8_t  bAlternateSetting; /**< Value used to select this alternate setting\n+                              for the interface identified in the prior field*/\n+  uint8_t  bNumEndpoints; /**< Number of endpoints used by this\n+                          interface (excluding endpoint zero). If this\n+                          value is zero, this interface only uses the\n+                          Default Control Pipe.*/\n+  uint8_t  bInterfaceClass; /**< Class code (assigned by the USB-IF). \\n\n+                            A value of zero is reserved for future\n+                            standardization. \\n\n+                            If this field is set to FFH, the interface\n+                            class is vendor-specific. \\n\n+                            All other values are reserved for\n+                            assignment by the USB-IF.*/\n+  uint8_t  bInterfaceSubClass; /**< Subclass code (assigned by the USB-IF). \\n\n+                              These codes are qualified by the value of\n+                              the bInterfaceClass field. \\n\n+                              If the bInterfaceClass field is reset to zero,\n+                              this field must also be reset to zero. \\n\n+                              If the bInterfaceClass field is not set to\n+                              FFH, all values are reserved for\n+                              assignment by the USB-IF.*/\n+  uint8_t  bInterfaceProtocol; /**< Protocol code (assigned by the USB). \\n\n+                                These codes are qualified by the value of\n+                                the bInterfaceClass and the\n+                                bInterfaceSubClass fields. If an interface\n+                                supports class-specific requests, this code\n+                                identifies the protocols that the device\n+                                uses as defined by the specification of the\n+                                device class. \\n\n+                                If this field is reset to zero, the device\n+                                does not use a class-specific protocol on\n+                                this interface. \\n\n+                                If this field is set to FFH, the device uses\n+                                a vendor-specific protocol for this\n+                                interface.*/\n+  uint8_t  iInterface; /**< Index of string descriptor describing this interface*/\n+} ;\n+/** USB Standard Interface Descriptor */\n+typedef struct _USB_INTERFACE_DESCRIPTOR USB_INTERFACE_DESCRIPTOR;\n+\n+/** USB Standard Endpoint Descriptor */\n+PRE_PACK struct POST_PACK _USB_ENDPOINT_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< ENDPOINT Descriptor Type*/\n+  uint8_t  bEndpointAddress; /**< The address of the endpoint on the USB device\n+                            described by this descriptor. The address is\n+                            encoded as follows: \\n\n+                            Bit 3...0: The endpoint number \\n\n+                            Bit 6...4: Reserved, reset to zero \\n\n+                            Bit 7: Direction, ignored for control endpoints\n+                            0 = OUT endpoint\n+                            1 = IN endpoint.  \\n \\sa USBD_ENDPOINT_ADR_Type*/\n+  uint8_t  bmAttributes; /**< This field describes the endpoint�s attributes when it is\n+                          configured using the bConfigurationValue. \\n\n+                          Bits 1..0: Transfer Type\n+                          \\li 00 = Control\n+                          \\li 01 = Isochronous\n+                          \\li 10 = Bulk\n+                          \\li 11 = Interrupt  \\n\n+                          If not an isochronous endpoint, bits 5..2 are reserved\n+                          and must be set to zero. If isochronous, they are\n+                          defined as follows: \\n\n+                          Bits 3..2: Synchronization Type\n+                          \\li 00 = No Synchronization\n+                          \\li 01 = Asynchronous\n+                          \\li 10 = Adaptive\n+                          \\li 11 = Synchronous \\n\n+                          Bits 5..4: Usage Type\n+                          \\li 00 = Data endpoint\n+                          \\li 01 = Feedback endpoint\n+                          \\li 10 = Implicit feedback Data endpoint\n+                          \\li 11 = Reserved \\n\n+                          Refer to Chapter 5 of USB 2.0 specification for more information. \\n\n+                          All other bits are reserved and must be reset to zero.\n+                          Reserved bits must be ignored by the host.\n+                         \\n \\sa USBD_EP_ATTR_Type*/\n+  uint16_t wMaxPacketSize; /**< Maximum packet size this endpoint is capable of\n+                          sending or receiving when this configuration is\n+                          selected. \\n\n+                          For isochronous endpoints, this value is used to\n+                          reserve the bus time in the schedule, required for the\n+                          per-(micro)frame data payloads. The pipe may, on an\n+                          ongoing basis, actually use less bandwidth than that\n+                          reserved. The device reports, if necessary, the actual\n+                          bandwidth used via its normal, non-USB defined\n+                          mechanisms. \\n\n+                          For all endpoints, bits 10..0 specify the maximum\n+                          packet size (in bytes). \\n\n+                          For high-speed isochronous and interrupt endpoints: \\n\n+                          Bits 12..11 specify the number of additional transaction\n+                          opportunities per microframe: \\n\n+                          \\li 00 = None (1 transaction per microframe)\n+                          \\li 01 = 1 additional (2 per microframe)\n+                          \\li 10 = 2 additional (3 per microframe)\n+                          \\li 11 = Reserved \\n\n+                          Bits 15..13 are reserved and must be set to zero.*/\n+  uint8_t  bInterval; /**< Interval for polling endpoint for data transfers.\n+                      Expressed in frames or microframes depending on the\n+                      device operating speed (i.e., either 1 millisecond or\n+                      125 �s units).\n+                      \\li For full-/high-speed isochronous endpoints, this value\n+                      must be in the range from 1 to 16. The bInterval value\n+                      is used as the exponent for a \\f$ 2^(bInterval-1) \\f$ value; e.g., a\n+                      bInterval of 4 means a period of 8 (\\f$ 2^(4-1) \\f$).\n+                      \\li For full-/low-speed interrupt endpoints, the value of\n+                      this field may be from 1 to 255.\n+                      \\li For high-speed interrupt endpoints, the bInterval value\n+                      is used as the exponent for a \\f$ 2^(bInterval-1) \\f$ value; e.g., a\n+                      bInterval of 4 means a period of 8 (\\f$ 2^(4-1) \\f$) . This value\n+                      must be from 1 to 16.\n+                      \\li For high-speed bulk/control OUT endpoints, the\n+                      bInterval must specify the maximum NAK rate of the\n+                      endpoint. A value of 0 indicates the endpoint never\n+                      NAKs. Other values indicate at most 1 NAK each\n+                      bInterval number of microframes. This value must be\n+                      in the range from 0 to 255. \\n\n+                      Refer to Chapter 5 of USB 2.0 specification for more information.\n+                      */\n+} ;\n+/** USB Standard Endpoint Descriptor */\n+typedef struct _USB_ENDPOINT_DESCRIPTOR USB_ENDPOINT_DESCRIPTOR;\n+\n+/** USB String Descriptor */\n+PRE_PACK struct POST_PACK _USB_STRING_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< STRING Descriptor Type*/\n+  uint16_t bString/*[]*/; /**< UNICODE encoded string */\n+}  ;\n+/** USB String Descriptor */\n+typedef struct _USB_STRING_DESCRIPTOR USB_STRING_DESCRIPTOR;\n+\n+/** USB Common Descriptor */\n+PRE_PACK struct POST_PACK _USB_COMMON_DESCRIPTOR\n+{\n+  uint8_t  bLength; /**< Size of this descriptor in bytes*/\n+  uint8_t  bDescriptorType; /**< Descriptor Type*/\n+} ;\n+/** USB Common Descriptor */\n+typedef struct _USB_COMMON_DESCRIPTOR USB_COMMON_DESCRIPTOR;\n+\n+/** USB Other Speed Configuration */\n+PRE_PACK struct POST_PACK _USB_OTHER_SPEED_CONFIGURATION\n+{\n+  uint8_t  bLength; /**< Size of descriptor*/\n+  uint8_t  bDescriptorType; /**< Other_speed_Configuration Type*/\n+  uint16_t wTotalLength; /**< Total length of data returned*/\n+  uint8_t  bNumInterfaces; /**< Number of interfaces supported by this speed configuration*/\n+  uint8_t  bConfigurationValue; /**< Value to use to select configuration*/\n+  uint8_t  IConfiguration; /**< Index of string descriptor*/\n+  uint8_t  bmAttributes; /**< Same as Configuration descriptor*/\n+  uint8_t  bMaxPower; /**< Same as Configuration descriptor*/\n+} ;\n+/** USB Other Speed Configuration */\n+typedef struct _USB_OTHER_SPEED_CONFIGURATION USB_OTHER_SPEED_CONFIGURATION;\n+\n+/** \\ingroup USBD_Core\n+ * USB device stack/module handle.\n+ */\n+typedef void* USBD_HANDLE_T;\n+\n+#define WBVAL(x) ((x) & 0xFF),(((x) >> 8) & 0xFF)\n+#define B3VAL(x) ((x) & 0xFF),(((x) >> 8) & 0xFF),(((x) >> 16) & 0xFF)\n+\n+#define USB_DEVICE_DESC_SIZE        (sizeof(USB_DEVICE_DESCRIPTOR))\n+#define USB_CONFIGURATION_DESC_SIZE (sizeof(USB_CONFIGURATION_DESCRIPTOR))\n+#define USB_INTERFACE_DESC_SIZE     (sizeof(USB_INTERFACE_DESCRIPTOR))\n+#define USB_INTERFACE_ASSOC_DESC_SIZE   (sizeof(USB_IAD_DESCRIPTOR))\n+#define USB_ENDPOINT_DESC_SIZE      (sizeof(USB_ENDPOINT_DESCRIPTOR))\n+#define USB_DEVICE_QUALI_SIZE       (sizeof(USB_DEVICE_QUALIFIER_DESCRIPTOR))\n+#define USB_OTHER_SPEED_CONF_SIZE   (sizeof(USB_OTHER_SPEED_CONFIGURATION))\n+\n+/** @}*/\n+\n+#endif  /* __USBD_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_hid.h ./lpc_chip_43xx/inc/usbd/usbd_hid.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_hid.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_hid.h\t2017-02-27 21:03:17.036043463 -0300\n@@ -0,0 +1,431 @@\n+/***********************************************************************\n+* $Id: mw_usbd_hid.h.rca 1.2 Tue Nov  1 11:45:07 2011 nlv09221 Experimental $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     HID Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __HID_H__\n+#define __HID_H__\n+\n+#include \"usbd.h\"\n+\n+/** \\file\n+ *  \\brief Common definitions and declarations for the library USB HID Class driver.\n+ *\n+ *  Common definitions and declarations for the library USB HID Class driver.\n+ *  \\addtogroup USBD_HID\n+ *  @{\n+ */\n+\n+\n+/** HID Subclass Codes\n+ * @{\n+ */\n+/** Descriptor Subclass value indicating that the device or interface does not implement a HID boot protocol. */\n+#define HID_SUBCLASS_NONE               0x00\n+/** Descriptor Subclass value indicating that the device or interface implements a HID boot protocol. */\n+#define HID_SUBCLASS_BOOT               0x01\n+/** @} */\n+\n+/** HID Protocol Codes\n+ * @{\n+ */\n+/** Descriptor Protocol value indicating that the device or interface does not belong to a HID boot protocol. */\n+#define HID_PROTOCOL_NONE               0x00\n+/** Descriptor Protocol value indicating that the device or interface belongs to the Keyboard HID boot protocol. */\n+#define HID_PROTOCOL_KEYBOARD           0x01\n+/** Descriptor Protocol value indicating that the device or interface belongs to the Mouse HID boot protocol. */\n+#define HID_PROTOCOL_MOUSE              0x02\n+/** @} */\n+\n+\n+\n+/** Descriptor Types\n+ * @{\n+ */\n+/** Descriptor header type value, to indicate a HID class HID descriptor. */\n+#define HID_HID_DESCRIPTOR_TYPE         0x21\n+/** Descriptor header type value, to indicate a HID class HID report descriptor. */\n+#define HID_REPORT_DESCRIPTOR_TYPE      0x22\n+/** Descriptor header type value, to indicate a HID class HID Physical descriptor. */\n+#define HID_PHYSICAL_DESCRIPTOR_TYPE    0x23\n+/** @} */\n+\n+\n+/** \\brief HID class-specific HID Descriptor.\n+ *\n+ *  Type define for the HID class-specific HID descriptor, to describe the HID device's specifications. Refer to the HID\n+ *  specification for details on the structure elements.\n+ *\n+ */\n+PRE_PACK struct POST_PACK _HID_DESCRIPTOR {\n+  uint8_t  bLength;    /**< Size of the descriptor, in bytes. */\n+  uint8_t  bDescriptorType;    /**< Type of HID descriptor. */\n+  uint16_t bcdHID; /**< BCD encoded version that the HID descriptor and device complies to. */\n+  uint8_t  bCountryCode; /**< Country code of the localized device, or zero if universal. */\n+  uint8_t  bNumDescriptors; /**< Total number of HID report descriptors for the interface. */\n+\n+  PRE_PACK struct POST_PACK _HID_DESCRIPTOR_LIST {\n+    uint8_t  bDescriptorType; /**< Type of HID report. */\n+    uint16_t wDescriptorLength; /**< Length of the associated HID report descriptor, in bytes. */\n+  } DescriptorList[1]; /**< Array of one or more descriptors */\n+} ;\n+/** HID class-specific HID Descriptor. */\n+typedef struct _HID_DESCRIPTOR HID_DESCRIPTOR;\n+\n+#define HID_DESC_SIZE   sizeof(HID_DESCRIPTOR)\n+\n+/** HID Request Codes\n+ * @{\n+ */\n+#define HID_REQUEST_GET_REPORT          0x01\n+#define HID_REQUEST_GET_IDLE            0x02\n+#define HID_REQUEST_GET_PROTOCOL        0x03\n+#define HID_REQUEST_SET_REPORT          0x09\n+#define HID_REQUEST_SET_IDLE            0x0A\n+#define HID_REQUEST_SET_PROTOCOL        0x0B\n+/** @} */\n+\n+/** HID Report Types\n+ * @{\n+ */\n+#define HID_REPORT_INPUT                0x01\n+#define HID_REPORT_OUTPUT               0x02\n+#define HID_REPORT_FEATURE              0x03\n+/** @} */\n+\n+\n+/** Usage Pages\n+ * @{\n+ */\n+#define HID_USAGE_PAGE_UNDEFINED        0x00\n+#define HID_USAGE_PAGE_GENERIC          0x01\n+#define HID_USAGE_PAGE_SIMULATION       0x02\n+#define HID_USAGE_PAGE_VR               0x03\n+#define HID_USAGE_PAGE_SPORT            0x04\n+#define HID_USAGE_PAGE_GAME             0x05\n+#define HID_USAGE_PAGE_DEV_CONTROLS     0x06\n+#define HID_USAGE_PAGE_KEYBOARD         0x07\n+#define HID_USAGE_PAGE_LED              0x08\n+#define HID_USAGE_PAGE_BUTTON           0x09\n+#define HID_USAGE_PAGE_ORDINAL          0x0A\n+#define HID_USAGE_PAGE_TELEPHONY        0x0B\n+#define HID_USAGE_PAGE_CONSUMER         0x0C\n+#define HID_USAGE_PAGE_DIGITIZER        0x0D\n+#define HID_USAGE_PAGE_UNICODE          0x10\n+#define HID_USAGE_PAGE_ALPHANUMERIC     0x14\n+/** @} */\n+\n+\n+/** Generic Desktop Page (0x01)\n+ * @{\n+ */\n+#define HID_USAGE_GENERIC_POINTER               0x01\n+#define HID_USAGE_GENERIC_MOUSE                 0x02\n+#define HID_USAGE_GENERIC_JOYSTICK              0x04\n+#define HID_USAGE_GENERIC_GAMEPAD               0x05\n+#define HID_USAGE_GENERIC_KEYBOARD              0x06\n+#define HID_USAGE_GENERIC_KEYPAD                0x07\n+#define HID_USAGE_GENERIC_X                     0x30\n+#define HID_USAGE_GENERIC_Y                     0x31\n+#define HID_USAGE_GENERIC_Z                     0x32\n+#define HID_USAGE_GENERIC_RX                    0x33\n+#define HID_USAGE_GENERIC_RY                    0x34\n+#define HID_USAGE_GENERIC_RZ                    0x35\n+#define HID_USAGE_GENERIC_SLIDER                0x36\n+#define HID_USAGE_GENERIC_DIAL                  0x37\n+#define HID_USAGE_GENERIC_WHEEL                 0x38\n+#define HID_USAGE_GENERIC_HATSWITCH             0x39\n+#define HID_USAGE_GENERIC_COUNTED_BUFFER        0x3A\n+#define HID_USAGE_GENERIC_BYTE_COUNT            0x3B\n+#define HID_USAGE_GENERIC_MOTION_WAKEUP         0x3C\n+#define HID_USAGE_GENERIC_VX                    0x40\n+#define HID_USAGE_GENERIC_VY                    0x41\n+#define HID_USAGE_GENERIC_VZ                    0x42\n+#define HID_USAGE_GENERIC_VBRX                  0x43\n+#define HID_USAGE_GENERIC_VBRY                  0x44\n+#define HID_USAGE_GENERIC_VBRZ                  0x45\n+#define HID_USAGE_GENERIC_VNO                   0x46\n+#define HID_USAGE_GENERIC_SYSTEM_CTL            0x80\n+#define HID_USAGE_GENERIC_SYSCTL_POWER          0x81\n+#define HID_USAGE_GENERIC_SYSCTL_SLEEP          0x82\n+#define HID_USAGE_GENERIC_SYSCTL_WAKE           0x83\n+#define HID_USAGE_GENERIC_SYSCTL_CONTEXT_MENU   0x84\n+#define HID_USAGE_GENERIC_SYSCTL_MAIN_MENU      0x85\n+#define HID_USAGE_GENERIC_SYSCTL_APP_MENU       0x86\n+#define HID_USAGE_GENERIC_SYSCTL_HELP_MENU      0x87\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_EXIT      0x88\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_SELECT    0x89\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_RIGHT     0x8A\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_LEFT      0x8B\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_UP        0x8C\n+#define HID_USAGE_GENERIC_SYSCTL_MENU_DOWN      0x8D\n+/** @} */\n+\n+/** Simulation Controls Page (0x02)\n+ * @{\n+ */\n+#define HID_USAGE_SIMULATION_RUDDER             0xBA\n+#define HID_USAGE_SIMULATION_THROTTLE           0xBB\n+/** @} */\n+\n+/* Virtual Reality Controls Page (0x03) */\n+/* ... */\n+\n+/* Sport Controls Page (0x04) */\n+/* ... */\n+\n+/* Game Controls Page (0x05) */\n+/* ... */\n+\n+/* Generic Device Controls Page (0x06) */\n+/* ... */\n+\n+/** Keyboard/Keypad Page (0x07)\n+ * @{\n+ */\n+/** Error \"keys\" */\n+#define HID_USAGE_KEYBOARD_NOEVENT              0x00\n+#define HID_USAGE_KEYBOARD_ROLLOVER             0x01\n+#define HID_USAGE_KEYBOARD_POSTFAIL             0x02\n+#define HID_USAGE_KEYBOARD_UNDEFINED            0x03\n+\n+/** Letters */\n+#define HID_USAGE_KEYBOARD_aA                   0x04\n+#define HID_USAGE_KEYBOARD_zZ                   0x1D\n+\n+/** Numbers */\n+#define HID_USAGE_KEYBOARD_ONE                  0x1E\n+#define HID_USAGE_KEYBOARD_ZERO                 0x27\n+\n+#define HID_USAGE_KEYBOARD_RETURN               0x28\n+#define HID_USAGE_KEYBOARD_ESCAPE               0x29\n+#define HID_USAGE_KEYBOARD_DELETE               0x2A\n+\n+/** Funtion keys */\n+#define HID_USAGE_KEYBOARD_F1                   0x3A\n+#define HID_USAGE_KEYBOARD_F12                  0x45\n+\n+#define HID_USAGE_KEYBOARD_PRINT_SCREEN         0x46\n+\n+/** Modifier Keys */\n+#define HID_USAGE_KEYBOARD_LCTRL                0xE0\n+#define HID_USAGE_KEYBOARD_LSHFT                0xE1\n+#define HID_USAGE_KEYBOARD_LALT                 0xE2\n+#define HID_USAGE_KEYBOARD_LGUI                 0xE3\n+#define HID_USAGE_KEYBOARD_RCTRL                0xE4\n+#define HID_USAGE_KEYBOARD_RSHFT                0xE5\n+#define HID_USAGE_KEYBOARD_RALT                 0xE6\n+#define HID_USAGE_KEYBOARD_RGUI                 0xE7\n+#define HID_USAGE_KEYBOARD_SCROLL_LOCK          0x47\n+#define HID_USAGE_KEYBOARD_NUM_LOCK             0x53\n+#define HID_USAGE_KEYBOARD_CAPS_LOCK            0x39\n+/** @} */\n+\n+/* ... */\n+\n+/** LED Page (0x08)\n+ * @{\n+ */\n+#define HID_USAGE_LED_NUM_LOCK                  0x01\n+#define HID_USAGE_LED_CAPS_LOCK                 0x02\n+#define HID_USAGE_LED_SCROLL_LOCK               0x03\n+#define HID_USAGE_LED_COMPOSE                   0x04\n+#define HID_USAGE_LED_KANA                      0x05\n+#define HID_USAGE_LED_POWER                     0x06\n+#define HID_USAGE_LED_SHIFT                     0x07\n+#define HID_USAGE_LED_DO_NOT_DISTURB            0x08\n+#define HID_USAGE_LED_MUTE                      0x09\n+#define HID_USAGE_LED_TONE_ENABLE               0x0A\n+#define HID_USAGE_LED_HIGH_CUT_FILTER           0x0B\n+#define HID_USAGE_LED_LOW_CUT_FILTER            0x0C\n+#define HID_USAGE_LED_EQUALIZER_ENABLE          0x0D\n+#define HID_USAGE_LED_SOUND_FIELD_ON            0x0E\n+#define HID_USAGE_LED_SURROUND_FIELD_ON         0x0F\n+#define HID_USAGE_LED_REPEAT                    0x10\n+#define HID_USAGE_LED_STEREO                    0x11\n+#define HID_USAGE_LED_SAMPLING_RATE_DETECT      0x12\n+#define HID_USAGE_LED_SPINNING                  0x13\n+#define HID_USAGE_LED_CAV                       0x14\n+#define HID_USAGE_LED_CLV                       0x15\n+#define HID_USAGE_LED_RECORDING_FORMAT_DET      0x16\n+#define HID_USAGE_LED_OFF_HOOK                  0x17\n+#define HID_USAGE_LED_RING                      0x18\n+#define HID_USAGE_LED_MESSAGE_WAITING           0x19\n+#define HID_USAGE_LED_DATA_MODE                 0x1A\n+#define HID_USAGE_LED_BATTERY_OPERATION         0x1B\n+#define HID_USAGE_LED_BATTERY_OK                0x1C\n+#define HID_USAGE_LED_BATTERY_LOW               0x1D\n+#define HID_USAGE_LED_SPEAKER                   0x1E\n+#define HID_USAGE_LED_HEAD_SET                  0x1F\n+#define HID_USAGE_LED_HOLD                      0x20\n+#define HID_USAGE_LED_MICROPHONE                0x21\n+#define HID_USAGE_LED_COVERAGE                  0x22\n+#define HID_USAGE_LED_NIGHT_MODE                0x23\n+#define HID_USAGE_LED_SEND_CALLS                0x24\n+#define HID_USAGE_LED_CALL_PICKUP               0x25\n+#define HID_USAGE_LED_CONFERENCE                0x26\n+#define HID_USAGE_LED_STAND_BY                  0x27\n+#define HID_USAGE_LED_CAMERA_ON                 0x28\n+#define HID_USAGE_LED_CAMERA_OFF                0x29\n+#define HID_USAGE_LED_ON_LINE                   0x2A\n+#define HID_USAGE_LED_OFF_LINE                  0x2B\n+#define HID_USAGE_LED_BUSY                      0x2C\n+#define HID_USAGE_LED_READY                     0x2D\n+#define HID_USAGE_LED_PAPER_OUT                 0x2E\n+#define HID_USAGE_LED_PAPER_JAM                 0x2F\n+#define HID_USAGE_LED_REMOTE                    0x30\n+#define HID_USAGE_LED_FORWARD                   0x31\n+#define HID_USAGE_LED_REVERSE                   0x32\n+#define HID_USAGE_LED_STOP                      0x33\n+#define HID_USAGE_LED_REWIND                    0x34\n+#define HID_USAGE_LED_FAST_FORWARD              0x35\n+#define HID_USAGE_LED_PLAY                      0x36\n+#define HID_USAGE_LED_PAUSE                     0x37\n+#define HID_USAGE_LED_RECORD                    0x38\n+#define HID_USAGE_LED_ERROR                     0x39\n+#define HID_USAGE_LED_SELECTED_INDICATOR        0x3A\n+#define HID_USAGE_LED_IN_USE_INDICATOR          0x3B\n+#define HID_USAGE_LED_MULTI_MODE_INDICATOR      0x3C\n+#define HID_USAGE_LED_INDICATOR_ON              0x3D\n+#define HID_USAGE_LED_INDICATOR_FLASH           0x3E\n+#define HID_USAGE_LED_INDICATOR_SLOW_BLINK      0x3F\n+#define HID_USAGE_LED_INDICATOR_FAST_BLINK      0x40\n+#define HID_USAGE_LED_INDICATOR_OFF             0x41\n+#define HID_USAGE_LED_FLASH_ON_TIME             0x42\n+#define HID_USAGE_LED_SLOW_BLINK_ON_TIME        0x43\n+#define HID_USAGE_LED_SLOW_BLINK_OFF_TIME       0x44\n+#define HID_USAGE_LED_FAST_BLINK_ON_TIME        0x45\n+#define HID_USAGE_LED_FAST_BLINK_OFF_TIME       0x46\n+#define HID_USAGE_LED_INDICATOR_COLOR           0x47\n+#define HID_USAGE_LED_RED                       0x48\n+#define HID_USAGE_LED_GREEN                     0x49\n+#define HID_USAGE_LED_AMBER                     0x4A\n+#define HID_USAGE_LED_GENERIC_INDICATOR         0x4B\n+/** @} */\n+\n+/*  Button Page (0x09)\n+ */\n+/*   There is no need to label these usages. */\n+\n+/*  Ordinal Page (0x0A)\n+ */\n+/*   There is no need to label these usages. */\n+\n+/** Telephony Device Page (0x0B)\n+ * @{\n+ */\n+#define HID_USAGE_TELEPHONY_PHONE               0x01\n+#define HID_USAGE_TELEPHONY_ANSWERING_MACHINE   0x02\n+#define HID_USAGE_TELEPHONY_MESSAGE_CONTROLS    0x03\n+#define HID_USAGE_TELEPHONY_HANDSET             0x04\n+#define HID_USAGE_TELEPHONY_HEADSET             0x05\n+#define HID_USAGE_TELEPHONY_KEYPAD              0x06\n+#define HID_USAGE_TELEPHONY_PROGRAMMABLE_BUTTON 0x07\n+/** @} */\n+/* ... */\n+\n+/** Consumer Page (0x0C)\n+ * @{\n+ */\n+#define HID_USAGE_CONSUMER_CONTROL              0x01\n+#define HID_USAGE_CONSUMER_FAST_FORWARD       0xB3\n+#define HID_USAGE_CONSUMER_REWIND             0xB4\n+#define HID_USAGE_CONSUMER_PLAY_PAUSE              0xCD\n+#define HID_USAGE_CONSUMER_VOLUME_INCREMENT        0xE9\n+#define HID_USAGE_CONSUMER_VOLUME_DECREMENT        0xEA\n+/** @} */\n+/* ... */\n+\n+/* and others ... */\n+\n+\n+/** HID Report Item Macros\n+ * @{\n+ */\n+/** Main Items */\n+#define HID_Input(x)           0x81,x\n+#define HID_Output(x)          0x91,x\n+#define HID_Feature(x)         0xB1,x\n+#define HID_Collection(x)      0xA1,x\n+#define HID_EndCollection      0xC0\n+\n+/** Data (Input, Output, Feature) */\n+#define HID_Data               0<<0\n+#define HID_Constant           1<<0\n+#define HID_Array              0<<1\n+#define HID_Variable           1<<1\n+#define HID_Absolute           0<<2\n+#define HID_Relative           1<<2\n+#define HID_NoWrap             0<<3\n+#define HID_Wrap               1<<3\n+#define HID_Linear             0<<4\n+#define HID_NonLinear          1<<4\n+#define HID_PreferredState     0<<5\n+#define HID_NoPreferred        1<<5\n+#define HID_NoNullPosition     0<<6\n+#define HID_NullState          1<<6\n+#define HID_NonVolatile        0<<7\n+#define HID_Volatile           1<<7\n+\n+/** Collection Data */\n+#define HID_Physical           0x00\n+#define HID_Application        0x01\n+#define HID_Logical            0x02\n+#define HID_Report             0x03\n+#define HID_NamedArray         0x04\n+#define HID_UsageSwitch        0x05\n+#define HID_UsageModifier      0x06\n+\n+/** Global Items */\n+#define HID_UsagePage(x)       0x05,x\n+#define HID_UsagePageVendor(x) 0x06,x,0xFF\n+#define HID_LogicalMin(x)      0x15,x\n+#define HID_LogicalMinS(x)     0x16,(x&0xFF),((x>>8)&0xFF)\n+#define HID_LogicalMinL(x)     0x17,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_LogicalMax(x)      0x25,x\n+#define HID_LogicalMaxS(x)     0x26,(x&0xFF),((x>>8)&0xFF)\n+#define HID_LogicalMaxL(x)     0x27,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_PhysicalMin(x)     0x35,x\n+#define HID_PhysicalMinS(x)    0x36,(x&0xFF),((x>>8)&0xFF)\n+#define HID_PhysicalMinL(x)    0x37,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_PhysicalMax(x)     0x45,x\n+#define HID_PhysicalMaxS(x)    0x46,(x&0xFF),((x>>8)&0xFF)\n+#define HID_PhysicalMaxL(x)    0x47,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_UnitExponent(x)    0x55,x\n+#define HID_Unit(x)            0x65,x\n+#define HID_UnitS(x)           0x66,(x&0xFF),((x>>8)&0xFF)\n+#define HID_UnitL(x)           0x67,(x&0xFF),((x>>8)&0xFF),((x>>16)&0xFF),((x>>24)&0xFF)\n+#define HID_ReportSize(x)      0x75,x\n+#define HID_ReportID(x)        0x85,x\n+#define HID_ReportCount(x)     0x95,x\n+#define HID_ReportCount16(x)   0x96,(x&0xFF),((x>>8)&0xFF)\n+#define HID_Push               0xA0\n+#define HID_Pop                0xB0\n+\n+/** Local Items */\n+#define HID_Usage(x)           0x09,x\n+#define HID_UsageMin(x)        0x19,x\n+#define HID_UsageMax(x)        0x29,x\n+/** @} */\n+\n+/** @} */\n+\n+#endif  /* __HID_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_hiduser.h ./lpc_chip_43xx/inc/usbd/usbd_hiduser.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_hiduser.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_hiduser.h\t2017-02-27 21:03:17.040043463 -0300\n@@ -0,0 +1,421 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_hiduser.h 331 2012-08-09 18:54:34Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     HID Custom User Module Definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __HIDUSER_H__\n+#define __HIDUSER_H__\n+\n+#include \"usbd.h\"\n+#include \"usbd_hid.h\"\n+#include \"usbd_core.h\"\n+\n+/** \\file\n+ *  \\brief Human Interface Device (HID) API structures and function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based HID function driver.\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_HID HID Class Function Driver\n+ *  \\section Sec_HIDModDescription Module Description\n+ *  HID Class Function Driver module. This module contains an internal implementation of the USB HID Class.\n+ *  User applications can use this class driver instead of implementing the HID class manually\n+ *  via the low-level HW and core APIs.\n+ *\n+ *  This module is designed to simplify the user code by exposing only the required interface needed to interface with\n+ *  Devices using the USB HID Class.\n+ */\n+\n+/** \\brief HID report descriptor data structure.\n+ *  \\ingroup USBD_HID\n+ *\n+ *  \\details  This structure is used as part of HID function driver initialization\n+ *  parameter structure \\ref USBD_HID_INIT_PARAM. This structure contains\n+ *  details of a report type supported by the application. An application\n+ *  can support multiple report types as a single HID device. The application\n+ *  should define this report type data structure per report it supports and\n+ *  the array of report types to USBD_HID_API::init() through \\ref USBD_HID_INIT_PARAM\n+ *  structure.\n+ *\n+ *  \\note All descriptor pointers assigned in this structure should be on 4 byte\n+ *  aligned address boundary.\n+ *\n+ */\n+typedef struct _HID_REPORT_T {\n+  uint16_t len; /**< Size of the report descriptor in bytes. */\n+  uint8_t idle_time; /**< This value is used by stack to respond to Set_Idle &\n+                     GET_Idle requests for the specified report ID. The value\n+                     of this field specified the rate at which duplicate reports\n+                     are generated for the specified Report ID. For example, a\n+                     device with two input reports could specify an idle rate of\n+                     20 milliseconds for report ID 1 and 500 milliseconds for\n+                     report ID 2.\n+                     */\n+  uint8_t __pad; /**< Padding space. */\n+  uint8_t* desc; /**< Report descriptor. */\n+} USB_HID_REPORT_T;\n+\n+/** \\brief USB descriptors data structure.\n+ *  \\ingroup USBD_HID\n+ *\n+ *  \\details  This module exposes functions which interact directly with USB device stack's core layer.\n+ *  The application layer uses this component when it has to implement custom class function driver or\n+ *  standard class function driver which is not part of the current USB device stack.\n+ *  The functions exposed by this interface are to register class specific EP0 handlers and corresponding\n+ *  utility functions to manipulate EP0 state machine of the stack. This interface also exposes\n+ *  function to register custom endpoint interrupt handler.\n+ *\n+ */\n+typedef struct USBD_HID_INIT_PARAM\n+{\n+  /* memory allocation params */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 4 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_HID_API::GetMemSize() routine.*/\n+  /* HID paramas */\n+  uint8_t max_reports; /**< Number of HID reports supported by this instance\n+                       of HID class driver.\n+                       */\n+  uint8_t pad[3];\n+  uint8_t* intf_desc; /**< Pointer to the HID interface descriptor within the\n+                      descriptor array (\\em high_speed_desc) passed to Init()\n+                      through \\ref USB_CORE_DESCS_T structure.\n+                      */\n+  USB_HID_REPORT_T* report_data; /**< Pointer to an array of HID report descriptor\n+                                 data structure (\\ref USB_HID_REPORT_T). The number\n+                                 of elements in the array should be same a \\em max_reports\n+                                 value. The stack uses this array to respond to\n+                                 requests received for various HID report descriptor\n+                                 information. \\note This array should be of global scope.\n+                                 */\n+\n+  /* user defined functions */\n+  /* required functions */\n+  /**\n+  *  HID get report callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a HID_REQUEST_GET_REPORT request. The setup packet data (\\em pSetup)\n+  *  is passed to the callback so that application can extract the report ID, report\n+  *  type and other information need to generate the report. \\note HID reports are sent\n+  *  via interrupt IN endpoint also. This function is called only when report request\n+  *  is received on control endpoint. Application should implement \\em HID_EpIn_Hdlr to\n+  *  send reports to host via interrupt IN endpoint.\n+  *\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in, out] pBuffer  Pointer to a pointer of data buffer containing report data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in] length  Amount of data copied to destination buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_GetReport)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* length);\n+\n+  /**\n+  *  HID set report callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a HID_REQUEST_SET_REPORT request. The setup packet data (\\em pSetup)\n+  *  is passed to the callback so that application can extract the report ID, report\n+  *  type and other information need to modify the report. An application might choose\n+  *  to ignore input Set_Report requests as meaningless. Alternatively these reports\n+  *  could be used to reset the origin of a control (that is, current position should\n+  *  report zero).\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in, out] pBuffer  Pointer to a pointer of data buffer containing report data.\n+  *                       Pointer-to-pointer is used to implement zero-copy buffers.\n+  *                       See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in] length  Amount of data copied to destination buffer.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_SetReport)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t length);\n+\n+  /* optional functions */\n+\n+  /**\n+  *  Optional callback function to handle HID_GetPhysDesc request.\n+  *\n+  *  The application software could provide this callback HID_GetPhysDesc handler to\n+  *  handle get physical descriptor requests sent by the host. When host requests\n+  *  Physical Descriptor set 0, application should return a special descriptor\n+  *  identifying the number of descriptor sets and their sizes. A Get_Descriptor\n+  *  request with the Physical Index equal to 1 should return the first Physical\n+  *  Descriptor set. A device could possibly have alternate uses for its items.\n+  *  These can be enumerated by issuing subsequent Get_Descriptor requests while\n+  *  incrementing the Descriptor Index. A device should return the last descriptor\n+  *  set to requests with an index greater than the last number defined in the HID\n+  *  descriptor.\n+  *  \\note Applications which don't have physical descriptor should set this data member\n+  *  to zero before calling the USBD_HID_API::Init().\n+  *  \\n\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in] pBuf Pointer to a pointer of data buffer containing physical descriptor\n+  *                   data. If the physical descriptor is in USB accessible memory area\n+  *                   application could just update the pointer or else it should copy\n+  *                   the descriptor to the address pointed by this pointer.\n+  *  \\param[in] length  Amount of data copied to destination buffer or descriptor length.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_GetPhysDesc)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuf, uint16_t* length);\n+\n+  /**\n+  *  Optional callback function to handle HID_REQUEST_SET_IDLE request.\n+  *\n+  *  The application software could provide this callback to handle HID_REQUEST_SET_IDLE\n+  *  requests sent by the host. This callback is provided to applications to adjust\n+  *  timers associated with various reports, which are sent to host over interrupt\n+  *  endpoint. The setup packet data (\\em pSetup) is passed to the callback so that\n+  *  application can extract the report ID, report type and other information need\n+  *  to modify the report's idle time.\n+  *  \\note Applications which don't send reports on Interrupt endpoint or don't\n+  *  have idle time between reports should set this data member to zero before\n+  *  calling the USBD_HID_API::Init().\n+  *  \\n\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in] idleTime  Idle time to be set for the specified report.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_SetIdle)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t idleTime);\n+\n+  /**\n+  *  Optional callback function to handle HID_REQUEST_SET_PROTOCOL request.\n+  *\n+  *  The application software could provide this callback to handle HID_REQUEST_SET_PROTOCOL\n+  *  requests sent by the host. This callback is provided to applications to adjust\n+  *  modes of their code between boot mode and report mode.\n+  *  \\note Applications which don't support protocol modes should set this data member\n+  *  to zero before calling the USBD_HID_API::Init().\n+  *  \\n\n+  *\n+  *  \\param[in] hHid Handle to HID function driver.\n+  *  \\param[in] pSetup Pointer to setup packet received from host.\n+  *  \\param[in] protocol  Protocol mode.\n+  *                       0 = Boot Protocol\n+  *                       1 = Report Protocol\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_SetProtocol)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t protocol);\n+\n+  /**\n+  *  Optional Interrupt IN endpoint event handler.\n+  *\n+  *  The application software could provide Interrupt IN endpoint event handler.\n+  *  Application which send reports to host on interrupt endpoint should provide\n+  *  an endpoint event handler through this data member. This data member is\n+  *  ignored if the interface descriptor \\em intf_desc doesn't have any IN interrupt\n+  *  endpoint descriptor associated.\n+  *  \\n\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Handle to HID function driver.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should return \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_EpIn_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+  /**\n+  *  Optional Interrupt OUT endpoint event handler.\n+  *\n+  *  The application software could provide Interrupt OUT endpoint event handler.\n+  *  Application which receives reports from host on interrupt endpoint should provide\n+  *  an endpoint event handler through this data member. This data member is\n+  *  ignored if the interface descriptor \\em intf_desc doesn't have any OUT interrupt\n+  *  endpoint descriptor associated.\n+  *  \\n\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Handle to HID function driver.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should return \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_EpOut_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  /* user override-able function */\n+  /**\n+  *  Optional user override-able function to replace the default HID_GetReportDesc handler.\n+  *\n+  *  The application software could override the default HID_GetReportDesc handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_HID_API::Init() and also provide report data array\n+  *  \\em report_data field.\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_GetReportDesc)(USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuf, uint16_t* length);\n+  /**\n+  *  Optional user override-able function to replace the default HID class handler.\n+  *\n+  *  The application software could override the default EP0 class handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_HID_API::Init().\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*HID_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+} USBD_HID_INIT_PARAM_T;\n+\n+/** \\brief HID class API functions structure.\n+ *  \\ingroup USBD_HID\n+ *\n+ *  This structure contains pointers to all the function exposed by HID function driver module.\n+ *\n+ */\n+typedef struct USBD_HID_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_HID_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the HID function driver module.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->hid->Init(), to allocate memory used\n+   *  by HID function driver module. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing HID function driver module initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_HID_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_HID_INIT_PARAM_T* param)\n+   *  Function to initialize HID function driver module.\n+   *\n+   *  This function is called by application layer to initialize HID function driver\n+   *  module. On successful initialization the function returns a handle to HID\n+   *  function driver module in passed param structure.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in, out] param Structure containing HID function driver module\n+   *      initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF  Memory buffer passed is not 4-byte\n+   *              aligned or smaller than required.\n+   *          \\retval ERR_API_INVALID_PARAM2 Either HID_GetReport() or HID_SetReport()\n+   *              callback are not defined.\n+   *          \\retval ERR_USBD_BAD_DESC  HID_HID_DESCRIPTOR_TYPE is not defined\n+   *              immediately after interface descriptor.\n+   *          \\retval ERR_USBD_BAD_INTF_DESC  Wrong interface descriptor is passed.\n+   *          \\retval ERR_USBD_BAD_EP_DESC  Wrong endpoint descriptor is passed.\n+   */\n+  ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_HID_INIT_PARAM_T* param);\n+\n+} USBD_HID_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  ADVANCED_API */\n+\n+typedef struct _HID_CTRL_T {\n+  /* pointer to controller */\n+  USB_CORE_CTRL_T*  pUsbCtrl;\n+  /* descriptor pointers */\n+  uint8_t* hid_desc;\n+  USB_HID_REPORT_T* report_data;\n+\n+  uint8_t protocol;\n+  uint8_t if_num;                  /* interface number */\n+  uint8_t epin_adr;                /* IN interrupt endpoint */\n+  uint8_t epout_adr;               /* OUT interrupt endpoint */\n+\n+  /* user defined functions */\n+  ErrorCode_t (*HID_GetReport)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t* length);\n+  ErrorCode_t (*HID_SetReport)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuffer, uint16_t length);\n+  ErrorCode_t (*HID_GetPhysDesc)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuf, uint16_t* length);\n+  ErrorCode_t (*HID_SetIdle)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t idleTime);\n+  ErrorCode_t (*HID_SetProtocol)( USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t protocol);\n+\n+  /* virtual overridable functions */\n+  ErrorCode_t (*HID_GetReportDesc)(USBD_HANDLE_T hHid, USB_SETUP_PACKET* pSetup, uint8_t** pBuf, uint16_t* length);\n+\n+}USB_HID_CTRL_T;\n+\n+/** @cond  DIRECT_API */\n+extern uint32_t mwHID_GetMemSize(USBD_HID_INIT_PARAM_T* param);\n+extern ErrorCode_t mwHID_init(USBD_HANDLE_T hUsb, USBD_HID_INIT_PARAM_T* param);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+#endif  /* __HIDUSER_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_hw.h ./lpc_chip_43xx/inc/usbd/usbd_hw.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_hw.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_hw.h\t2017-02-27 21:03:17.040043463 -0300\n@@ -0,0 +1,457 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_hw.h 331 2012-08-09 18:54:34Z usb10131                        $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     USB Hardware Function prototypes.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __USBHW_H__\n+#define __USBHW_H__\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"usbd_core.h\"\n+\n+/** \\file\n+ *  \\brief USB Hardware Function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based Device Controller Driver (DCD).\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_HW USB Device Controller Driver\n+ *  \\section Sec_HWModDescription Module Description\n+ *  The Device Controller Driver Layer implements the routines to deal directly with the hardware.\n+ */\n+\n+/** \\ingroup USBD_HW\n+*  USB Endpoint/class handler Callback Events.\n+*\n+*/\n+enum USBD_EVENT_T {\n+  USB_EVT_SETUP =1,    /**< 1   Setup Packet received */\n+  USB_EVT_OUT,         /**< 2   OUT Packet received */\n+  USB_EVT_IN,          /**< 3    IN Packet sent */\n+  USB_EVT_OUT_NAK,     /**< 4   OUT Packet - Not Acknowledged */\n+  USB_EVT_IN_NAK,      /**< 5    IN Packet - Not Acknowledged */\n+  USB_EVT_OUT_STALL,   /**< 6   OUT Packet - Stalled */\n+  USB_EVT_IN_STALL,    /**< 7    IN Packet - Stalled */\n+  USB_EVT_OUT_DMA_EOT, /**< 8   DMA OUT EP - End of Transfer */\n+  USB_EVT_IN_DMA_EOT,  /**< 9   DMA  IN EP - End of Transfer */\n+  USB_EVT_OUT_DMA_NDR, /**< 10  DMA OUT EP - New Descriptor Request */\n+  USB_EVT_IN_DMA_NDR,  /**< 11  DMA  IN EP - New Descriptor Request */\n+  USB_EVT_OUT_DMA_ERR, /**< 12  DMA OUT EP - Error */\n+  USB_EVT_IN_DMA_ERR,  /**< 13  DMA  IN EP - Error */\n+  USB_EVT_RESET,       /**< 14  Reset event recieved */\n+  USB_EVT_SOF,         /**< 15  Start of Frame event */\n+  USB_EVT_DEV_STATE,   /**< 16  Device status events */\n+  USB_EVT_DEV_ERROR   /**< 17  Device error events */\n+};\n+\n+/**\n+ *  \\brief Hardware API functions structure.\n+ *  \\ingroup USBD_HW\n+ *\n+ *  This module exposes functions which interact directly with USB device controller hardware.\n+ *\n+ */\n+typedef struct USBD_HW_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_API_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the USB device stack's DCD and core layers.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->hw->Init(), to allocate memory used\n+   *  by DCD and core layers. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing USB device stack initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_API_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t Init(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param)\n+   *  Function to initialize USB device stack's DCD and core layers.\n+   *\n+   *  This function is called by application layer to initialize USB hardware and core layers.\n+   *  On successful initialization the function returns a handle to USB device stack which should\n+   *  be passed to the rest of the functions.\n+   *\n+   *  \\param[in,out] phUsb Pointer to the USB device stack handle of type USBD_HANDLE_T.\n+   *  \\param[in]  pDesc Structure containing pointers to various descriptor arrays needed by the stack.\n+   *                    These descriptors are reported to USB host as part of enumerations process.\n+   *  \\param[in]  param Structure containing USB device stack initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK(0) On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF(0x0004000b) When insufficient memory buffer is passed or memory\n+   *                                             is not aligned on 2048 boundary.\n+   */\n+  ErrorCode_t (*Init)(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param);\n+\n+  /** \\fn void Connect(USBD_HANDLE_T hUsb, uint32_t con)\n+   *  Function to make USB device visible/invisible on the USB bus.\n+   *\n+   *  This function is called after the USB initialization. This function uses the soft connect\n+   *  feature to make the device visible on the USB bus. This function is called only after the\n+   *  application is ready to handle the USB data. The enumeration process is started by the\n+   *  host after the device detection. The driver handles the enumeration process according to\n+   *  the USB descriptors passed in the USB initialization function.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] con  States whether to connect (1) or to disconnect (0).\n+   *  \\return Nothing.\n+   */\n+  void (*Connect)(USBD_HANDLE_T hUsb, uint32_t con);\n+\n+  /** \\fn void ISR(USBD_HANDLE_T hUsb)\n+   *  Function to USB device controller interrupt events.\n+   *\n+   *  When the user application is active the interrupt handlers are mapped in the user flash\n+   *  space. The user application must provide an interrupt handler for the USB interrupt and\n+   *  call this function in the interrupt handler routine. The driver interrupt handler takes\n+   *  appropriate action according to the data received on the USB bus.\n+   *\n+   *  \\param[in]  hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void (*ISR)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void Reset(USBD_HANDLE_T hUsb)\n+   *  Function to Reset USB device stack and hardware controller.\n+   *\n+   *  Reset USB device stack and hardware controller. Disables all endpoints except EP0.\n+   *  Clears all pending interrupts and resets endpoint transfer queues.\n+   *  This function is called internally by pUsbApi->hw->init() and from reset event.\n+   *\n+   *  \\param[in]  hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void  (*Reset)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void ForceFullSpeed(USBD_HANDLE_T hUsb, uint32_t cfg)\n+   *  Function to force high speed USB device to operate in full speed mode.\n+   *\n+   *  This function is useful for testing the behavior of current device when connected\n+   *  to a full speed only hosts.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] cfg  When 1 - set force full-speed or\n+   *                       0 - clear force full-speed.\n+   *  \\return Nothing.\n+   */\n+  void  (*ForceFullSpeed )(USBD_HANDLE_T hUsb, uint32_t cfg);\n+\n+  /** \\fn void WakeUpCfg(USBD_HANDLE_T hUsb, uint32_t cfg)\n+   *  Function to configure USB device controller to wake-up host on remote events.\n+   *\n+   *  This function is called by application layer to configure the USB device controller\n+   *  to wakeup on remote events. It is recommended to call this function from users's\n+   *  USB_WakeUpCfg() callback routine registered with stack.\n+   *  \\note User's USB_WakeUpCfg() is registered with stack by setting the USB_WakeUpCfg member\n+   *  of USBD_API_INIT_PARAM_T structure before calling pUsbApi->hw->Init() routine.\n+   *  Certain USB device controllers needed to keep some clocks always on to generate\n+   *  resume signaling through pUsbApi->hw->WakeUp(). This hook is provided to support\n+   *  such controllers. In most controllers cases this is an empty routine.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] cfg  When 1 - Configure controller to wake on remote events or\n+   *                       0 - Configure controller not to wake on remote events.\n+   *  \\return Nothing.\n+   */\n+  void  (*WakeUpCfg)(USBD_HANDLE_T hUsb, uint32_t  cfg);\n+\n+  /** \\fn void SetAddress(USBD_HANDLE_T hUsb, uint32_t adr)\n+   *  Function to set USB address assigned by host in device controller hardware.\n+   *\n+   *  This function is called automatically when USB_REQUEST_SET_ADDRESS request is received\n+   *  by the stack from USB host.\n+   *  This interface is provided to users to invoke this function in other scenarios which are not\n+   *  handle by current stack. In most user applications this function is not called directly.\n+   *  Also this function can be used by users who are selectively modifying the USB device stack's\n+   *  standard handlers through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] adr  USB bus Address to which the device controller should respond. Usually\n+   *                  assigned by the USB host.\n+   *  \\return Nothing.\n+   */\n+  void  (*SetAddress)(USBD_HANDLE_T hUsb, uint32_t adr);\n+\n+  /** \\fn void Configure(USBD_HANDLE_T hUsb, uint32_t cfg)\n+   *  Function to configure device controller hardware with selected configuration.\n+   *\n+   *  This function is called automatically when USB_REQUEST_SET_CONFIGURATION request is received\n+   *  by the stack from USB host.\n+   *  This interface is provided to users to invoke this function in other scenarios which are not\n+   *  handle by current stack. In most user applications this function is not called directly.\n+   *  Also this function can be used by users who are selectively modifying the USB device stack's\n+   *  standard handlers through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] cfg  Configuration index.\n+   *  \\return Nothing.\n+   */\n+  void  (*Configure)(USBD_HANDLE_T hUsb, uint32_t  cfg);\n+\n+  /** \\fn void ConfigEP(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD)\n+   *  Function to configure USB Endpoint according to descriptor.\n+   *\n+   *  This function is called automatically when USB_REQUEST_SET_CONFIGURATION request is received\n+   *  by the stack from USB host. All the endpoints associated with the selected configuration\n+   *  are configured.\n+   *  This interface is provided to users to invoke this function in other scenarios which are not\n+   *  handle by current stack. In most user applications this function is not called directly.\n+   *  Also this function can be used by users who are selectively modifying the USB device stack's\n+   *  standard handlers through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] pEPD Endpoint descriptor structure defined in USB 2.0 specification.\n+   *  \\return Nothing.\n+   */\n+  void  (*ConfigEP)(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD);\n+\n+  /** \\fn void DirCtrlEP(USBD_HANDLE_T hUsb, uint32_t dir)\n+   *  Function to set direction for USB control endpoint EP0.\n+   *\n+   *  This function is called automatically by the stack on need basis.\n+   *  This interface is provided to users to invoke this function in other scenarios which are not\n+   *  handle by current stack. In most user applications this function is not called directly.\n+   *  Also this function can be used by users who are selectively modifying the USB device stack's\n+   *  standard handlers through callback interface exposed by the stack.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] cfg  When 1 - Set EP0 in IN transfer mode\n+   *                       0 - Set EP0 in OUT transfer mode\n+   *  \\return Nothing.\n+   */\n+  void  (*DirCtrlEP)(USBD_HANDLE_T hUsb, uint32_t dir);\n+\n+  /** \\fn void EnableEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to enable selected USB endpoint.\n+   *\n+   *  This function enables interrupts on selected endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+   */\n+  void  (*EnableEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn void DisableEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to disable selected USB endpoint.\n+   *\n+   *  This function disables interrupts on selected endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+   */\n+  void  (*DisableEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn void ResetEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to reset selected USB endpoint.\n+   *\n+   *  This function flushes the endpoint buffers and resets data toggle logic.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+  */\n+  void  (*ResetEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn void SetStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to STALL selected USB endpoint.\n+   *\n+   *  Generates STALL signaling for requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+   */\n+  void  (*SetStallEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn void ClrStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum)\n+   *  Function to clear STALL state for the requested endpoint.\n+   *\n+   *  This function clears STALL state for the requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\return Nothing.\n+   */\n+  void  (*ClrStallEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+\n+  /** \\fn ErrorCode_t SetTestMode(USBD_HANDLE_T hUsb, uint8_t mode)\n+   *  Function to set high speed USB device controller in requested test mode.\n+   *\n+   *  USB-IF requires the high speed device to be put in various test modes\n+   *  for electrical testing. This USB device stack calls this function whenever\n+   *  it receives USB_REQUEST_CLEAR_FEATURE request for USB_FEATURE_TEST_MODE.\n+   *  Users can put the device in test mode by directly calling this function.\n+   *  Returns ERR_USBD_INVALID_REQ when device controller is full-speed only.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] mode  Test mode defined in USB 2.0 electrical testing specification.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK(0) - On success\n+   *          \\retval ERR_USBD_INVALID_REQ(0x00040001) - Invalid test mode or\n+   *                                             Device controller is full-speed only.\n+   */\n+  ErrorCode_t (*SetTestMode)(USBD_HANDLE_T hUsb, uint8_t mode);\n+\n+  /** \\fn uint32_t ReadEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData)\n+   *  Function to read data received on the requested endpoint.\n+   *\n+   *  This function is called by USB stack and the application layer to read the data\n+   *  received on the requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\param[in,out] pData Pointer to the data buffer where data is to be copied.\n+   *  \\return Returns the number of bytes copied to the buffer.\n+   */\n+  uint32_t (*ReadEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData);\n+\n+  /** \\fn uint32_t ReadReqEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len)\n+   *  Function to queue read request on the specified endpoint.\n+   *\n+   *  This function is called by USB stack and the application layer to queue a read request\n+   *  on the specified endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\param[in,out] pData Pointer to the data buffer where data is to be copied. This buffer\n+   *                       address should be accessible by USB DMA master.\n+   *  \\param[in] len  Length of the buffer passed.\n+   *  \\return Returns the length of the requested buffer.\n+   */\n+  uint32_t (*ReadReqEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len);\n+\n+  /** \\fn uint32_t ReadSetupPkt(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t *pData)\n+   *  Function to read setup packet data received on the requested endpoint.\n+   *\n+   *  This function is called by USB stack and the application layer to read setup packet data\n+   *  received on the requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP0_IN is represented by 0x80 number.\n+   *  \\param[in,out] pData Pointer to the data buffer where data is to be copied.\n+   *  \\return Returns the number of bytes copied to the buffer.\n+   */\n+  uint32_t (*ReadSetupPkt)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t *pData);\n+\n+  /** \\fn uint32_t WriteEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt)\n+   *  Function to write data to be sent on the requested endpoint.\n+   *\n+   *  This function is called by USB stack and the application layer to send data\n+   *  on the requested endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number as per USB specification.\n+   *                    ie. An EP1_IN is represented by 0x81 number.\n+   *  \\param[in] pData Pointer to the data buffer from where data is to be copied.\n+   *  \\param[in] cnt  Number of bytes to write.\n+   *  \\return Returns the number of bytes written.\n+   */\n+  uint32_t (*WriteEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt);\n+\n+  /** \\fn void WakeUp(USBD_HANDLE_T hUsb)\n+   *  Function to generate resume signaling on bus for remote host wakeup.\n+   *\n+   *  This function is called by application layer to remotely wakeup host controller\n+   *  when system is in suspend state. Application should indicate this remote wakeup\n+   *  capability by setting USB_CONFIG_REMOTE_WAKEUP in bmAttributes of Configuration\n+   *  Descriptor. Also this routine will generate resume signalling only if host\n+   *  enables USB_FEATURE_REMOTE_WAKEUP by sending SET_FEATURE request before suspending\n+   *  the bus.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\return Nothing.\n+   */\n+  void  (*WakeUp)(USBD_HANDLE_T hUsb);\n+\n+  /** \\fn void EnableEvent(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type, uint32_t enable)\n+   *  Function to enable/disable selected USB event.\n+   *\n+   *  This function enables interrupts on selected endpoint.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in] EPNum  Endpoint number corresponding to the event.\n+   *                    ie. An EP1_IN is represented by 0x81 number. For device events\n+   *                    set this param to 0x0.\n+   *  \\param[in] event_type  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+   *  \\param[in] enable  1 - enable event, 0 - disable event.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK(0) - On success\n+   *          \\retval ERR_USBD_INVALID_REQ(0x00040001) - Invalid event type.\n+   */\n+  ErrorCode_t  (*EnableEvent)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type, uint32_t enable);\n+\n+} USBD_HW_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes used by stack internally\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  DIRECT_API */\n+\n+/* Driver functions */\n+uint32_t hwUSB_GetMemSize(USBD_API_INIT_PARAM_T* param);\n+ErrorCode_t hwUSB_Init(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param);\n+void hwUSB_Connect(USBD_HANDLE_T hUsb, uint32_t con);\n+void hwUSB_ISR(USBD_HANDLE_T hUsb);\n+\n+/* USB Hardware Functions */\n+extern void  hwUSB_Reset(USBD_HANDLE_T hUsb);\n+extern void  hwUSB_ForceFullSpeed (USBD_HANDLE_T hUsb, uint32_t con);\n+extern void  hwUSB_WakeUpCfg(USBD_HANDLE_T hUsb, uint32_t  cfg);\n+extern void  hwUSB_SetAddress(USBD_HANDLE_T hUsb, uint32_t adr);\n+extern void  hwUSB_Configure(USBD_HANDLE_T hUsb, uint32_t  cfg);\n+extern void  hwUSB_ConfigEP(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD);\n+extern void  hwUSB_DirCtrlEP(USBD_HANDLE_T hUsb, uint32_t dir);\n+extern void  hwUSB_EnableEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern void  hwUSB_DisableEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern void  hwUSB_ResetEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern void  hwUSB_SetStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern void  hwUSB_ClrStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum);\n+extern ErrorCode_t hwUSB_SetTestMode(USBD_HANDLE_T hUsb, uint8_t mode); /* for FS only devices return ERR_USBD_INVALID_REQ */\n+extern uint32_t hwUSB_ReadEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData);\n+extern uint32_t hwUSB_ReadReqEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len);\n+extern uint32_t hwUSB_ReadSetupPkt(USBD_HANDLE_T hUsb, uint32_t, uint32_t *);\n+extern uint32_t hwUSB_WriteEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt);\n+\n+/* generate resume signaling on the bus */\n+extern void  hwUSB_WakeUp(USBD_HANDLE_T hUsb);\n+extern ErrorCode_t  hwUSB_EnableEvent(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type, uint32_t enable);\n+/* TODO implement following routines\n+- function to program TD and queue them to ep Qh\n+*/\n+\n+/** @endcond */\n+\n+\n+#endif  /* __USBHW_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_msc.h ./lpc_chip_43xx/inc/usbd/usbd_msc.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_msc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_msc.h\t2017-02-27 21:03:17.040043463 -0300\n@@ -0,0 +1,119 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_msc.h 331 2012-08-09 18:54:34Z usb10131                       $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     Mass Storage Class definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+\n+#ifndef __MSC_H__\n+#define __MSC_H__\n+\n+#include \"usbd.h\"\n+\n+/** \\file\n+ *  \\brief Mass Storage class (MSC) descriptors.\n+ *\n+ *  Definition of MSC class descriptors and their bit defines.\n+ *\n+ */\n+\n+/* MSC Subclass Codes */\n+#define MSC_SUBCLASS_RBC                0x01\n+#define MSC_SUBCLASS_SFF8020I_MMC2      0x02\n+#define MSC_SUBCLASS_QIC157             0x03\n+#define MSC_SUBCLASS_UFI                0x04\n+#define MSC_SUBCLASS_SFF8070I           0x05\n+#define MSC_SUBCLASS_SCSI               0x06\n+\n+/* MSC Protocol Codes */\n+#define MSC_PROTOCOL_CBI_INT            0x00\n+#define MSC_PROTOCOL_CBI_NOINT          0x01\n+#define MSC_PROTOCOL_BULK_ONLY          0x50\n+\n+\n+/* MSC Request Codes */\n+#define MSC_REQUEST_RESET               0xFF\n+#define MSC_REQUEST_GET_MAX_LUN         0xFE\n+\n+\n+/* MSC Bulk-only Stage */\n+#define MSC_BS_CBW                      0       /* Command Block Wrapper */\n+#define MSC_BS_DATA_OUT                 1       /* Data Out Phase */\n+#define MSC_BS_DATA_IN                  2       /* Data In Phase */\n+#define MSC_BS_DATA_IN_LAST             3       /* Data In Last Phase */\n+#define MSC_BS_DATA_IN_LAST_STALL       4       /* Data In Last Phase with Stall */\n+#define MSC_BS_CSW                      5       /* Command Status Wrapper */\n+#define MSC_BS_ERROR                    6       /* Error */\n+\n+\n+/* Bulk-only Command Block Wrapper */\n+PRE_PACK struct POST_PACK _MSC_CBW\n+{\n+  uint32_t dSignature;\n+  uint32_t dTag;\n+  uint32_t dDataLength;\n+  uint8_t  bmFlags;\n+  uint8_t  bLUN;\n+  uint8_t  bCBLength;\n+  uint8_t  CB[16];\n+} ;\n+typedef struct _MSC_CBW MSC_CBW;\n+\n+/* Bulk-only Command Status Wrapper */\n+PRE_PACK struct POST_PACK _MSC_CSW\n+{\n+  uint32_t dSignature;\n+  uint32_t dTag;\n+  uint32_t dDataResidue;\n+  uint8_t  bStatus;\n+} ;\n+typedef struct _MSC_CSW MSC_CSW;\n+\n+#define MSC_CBW_Signature               0x43425355\n+#define MSC_CSW_Signature               0x53425355\n+\n+\n+/* CSW Status Definitions */\n+#define CSW_CMD_PASSED                  0x00\n+#define CSW_CMD_FAILED                  0x01\n+#define CSW_PHASE_ERROR                 0x02\n+\n+\n+/* SCSI Commands */\n+#define SCSI_TEST_UNIT_READY            0x00\n+#define SCSI_REQUEST_SENSE              0x03\n+#define SCSI_FORMAT_UNIT                0x04\n+#define SCSI_INQUIRY                    0x12\n+#define SCSI_MODE_SELECT6               0x15\n+#define SCSI_MODE_SENSE6                0x1A\n+#define SCSI_START_STOP_UNIT            0x1B\n+#define SCSI_MEDIA_REMOVAL              0x1E\n+#define SCSI_READ_FORMAT_CAPACITIES     0x23\n+#define SCSI_READ_CAPACITY              0x25\n+#define SCSI_READ10                     0x28\n+#define SCSI_WRITE10                    0x2A\n+#define SCSI_VERIFY10                   0x2F\n+#define SCSI_READ12                     0xA8\n+#define SCSI_WRITE12                    0xAA\n+#define SCSI_MODE_SELECT10              0x55\n+#define SCSI_MODE_SENSE10               0x5A\n+\n+\n+#endif  /* __MSC_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_mscuser.h ./lpc_chip_43xx/inc/usbd/usbd_mscuser.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_mscuser.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_mscuser.h\t2017-02-27 21:03:17.040043463 -0300\n@@ -0,0 +1,270 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_mscuser.h 577 2012-11-20 01:42:04Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     Mass Storage Class Custom User Module definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __MSCUSER_H__\n+#define __MSCUSER_H__\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"usbd_msc.h\"\n+#include \"usbd_core.h\"\n+#include \"app_usbd_cfg.h\"\n+\n+/** \\file\n+ *  \\brief Mass Storage Class (MSC) API structures and function prototypes.\n+ *\n+ *  Definition of functions exported by ROM based MSC function driver.\n+ *\n+ */\n+\n+/** \\ingroup Group_USBD\n+ *  @defgroup USBD_MSC Mass Storage Class (MSC) Function Driver\n+ *  \\section Sec_MSCModDescription Module Description\n+ *  MSC Class Function Driver module. This module contains an internal implementation of the USB MSC Class.\n+ *  User applications can use this class driver instead of implementing the MSC class manually\n+ *  via the low-level USBD_HW and USBD_Core APIs.\n+ *\n+ *  This module is designed to simplify the user code by exposing only the required interface needed to interface with\n+ *  Devices using the USB MSC Class.\n+ */\n+\n+/** \\brief Mass Storage class function driver initialization parameter data structure.\n+ *  \\ingroup USBD_MSC\n+ *\n+ *  \\details  This data structure is used to pass initialization parameters to the\n+ *  Mass Storage class function driver's init function.\n+ *\n+ */\n+typedef struct USBD_MSC_INIT_PARAM\n+{\n+  /* memory allocation params */\n+  uint32_t mem_base;  /**< Base memory location from where the stack can allocate\n+                      data and buffers. \\note The memory address set in this field\n+                      should be accessible by USB DMA controller. Also this value\n+                      should be aligned on 4 byte boundary.\n+                      */\n+  uint32_t mem_size;  /**< The size of memory buffer which stack can use.\n+                      \\note The \\em mem_size should be greater than the size\n+                      returned by USBD_MSC_API::GetMemSize() routine.*/\n+  /* mass storage params */\n+  uint8_t*  InquiryStr; /**< Pointer to the 28 character string. This string is\n+                        sent in response to the SCSI Inquiry command. \\note The data\n+                        pointed by the pointer should be of global scope.\n+                        */\n+  uint32_t  BlockCount; /**< Number of blocks present in the mass storage device */\n+  uint32_t  BlockSize; /**< Block size in number of bytes */\n+  uint32_t  MemorySize; /**< Memory size in number of bytes */\n+  /** Pointer to the interface descriptor within the descriptor\n+  * array (\\em high_speed_desc) passed to Init() through \\ref USB_CORE_DESCS_T\n+  * structure. The stack assumes both HS and FS use same BULK endpoints.\n+  */\n+\n+  uint8_t* intf_desc;\n+  /* user defined functions */\n+\n+ /**\n+  *  MSC Write callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a write command.\n+  *\n+  *  \\param[in] offset Destination start address.\n+  *  \\param[in, out] src  Pointer to a pointer to the source of data. Pointer-to-pointer\n+  *                       is used to implement zero-copy buffers. See \\ref USBD_ZeroCopy\n+  *                       for more details on zero-copy concept.\n+  *  \\param[in] length  Number of bytes to be written.\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*MSC_Write)( uint32_t offset, uint8_t** src, uint32_t length, uint32_t high_offset);\n+ /**\n+  *  MSC Read callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a read command.\n+  *\n+  *  \\param[in] offset Source start address.\n+  *  \\param[in, out] dst  Pointer to a pointer to the source of data. The MSC function drivers\n+  *         implemented in stack are written with zero-copy model. Meaning the stack doesn't make an\n+  *          extra copy of buffer before writing/reading data from USB hardware FIFO. Hence the\n+  *          parameter is pointer to a pointer containing address buffer (<em>uint8_t** dst</em>).\n+  *          So that the user application can update the buffer pointer instead of copying data to\n+  *          address pointed by the parameter. /note The updated buffer address should be accessible\n+  *          by USB DMA master. If user doesn't want to use zero-copy model, then the user should copy\n+  *          data to the address pointed by the passed buffer pointer parameter and shouldn't change\n+  *          the address value. See \\ref USBD_ZeroCopy for more details on zero-copy concept.\n+  *  \\param[in] length  Number of bytes to be read.\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*MSC_Read)( uint32_t offset, uint8_t** dst, uint32_t length, uint32_t high_offset);\n+ /**\n+  *  MSC Verify callback function.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends a verify command. The callback function should compare the buffer\n+  *  with the destination memory at the requested offset and\n+  *\n+  *  \\param[in] offset Destination start address.\n+  *  \\param[in] buf  Buffer containing the data sent by the host.\n+  *  \\param[in] length  Number of bytes to verify.\n+  *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK If data in the buffer matches the data at destination\n+  *          \\retval ERR_FAILED  At least one byte is different.\n+  *\n+  */\n+  ErrorCode_t (*MSC_Verify)( uint32_t offset, uint8_t buf[], uint32_t length, uint32_t high_offset);\n+  /**\n+  *  Optional callback function to optimize MSC_Write buffer transfer.\n+  *\n+  *  This function is provided by the application software. This function gets called\n+  *  when host sends SCSI_WRITE10/SCSI_WRITE12 command. The callback function should\n+  *  update the \\em buff_adr pointer so that the stack transfers the data directly\n+  *  to the target buffer. /note The updated buffer address should be accessible\n+  *  by USB DMA master. If user doesn't want to use zero-copy model, then the user\n+  *  should not update the buffer pointer. See \\ref USBD_ZeroCopy for more details\n+  *  on zero-copy concept.\n+  *\n+  *  \\param[in] offset Destination start address.\n+  *  \\param[in,out] buf  Buffer containing the data sent by the host.\n+  *  \\param[in] length  Number of bytes to write.\n+  *  \\return Nothing.\n+  *\n+  */\n+  void (*MSC_GetWriteBuf)( uint32_t offset, uint8_t** buff_adr, uint32_t length, uint32_t high_offset);\n+\n+  /**\n+  *  Optional user override-able function to replace the default MSC class handler.\n+  *\n+  *  The application software could override the default EP0 class handler with their\n+  *  own by providing the handler function address as this data member of the parameter\n+  *  structure. Application which like the default handler should set this data member\n+  *  to zero before calling the USBD_MSC_API::Init().\n+  *  \\n\n+  *  \\note\n+  *\n+  *  \\param[in] hUsb Handle to the USB device stack.\n+  *  \\param[in] data Pointer to the data which will be passed when callback function is called by the stack.\n+  *  \\param[in] event  Type of endpoint event. See \\ref USBD_EVENT_T for more details.\n+  *  \\return The call back should returns \\ref ErrorCode_t type to indicate success or error condition.\n+  *          \\retval LPC_OK On success.\n+  *          \\retval ERR_USBD_UNHANDLED  Event is not handled hence pass the event to next in line.\n+  *          \\retval ERR_USBD_xxx  For other error conditions.\n+  *\n+  */\n+  ErrorCode_t (*MSC_Ep0_Hdlr) (USBD_HANDLE_T hUsb, void* data, uint32_t event);\n+\n+  uint64_t  MemorySize64;\n+\n+} USBD_MSC_INIT_PARAM_T;\n+\n+/** \\brief MSC class API functions structure.\n+ *  \\ingroup USBD_MSC\n+ *\n+ *  This module exposes functions which interact directly with USB device controller hardware.\n+ *\n+ */\n+typedef struct USBD_MSC_API\n+{\n+  /** \\fn uint32_t GetMemSize(USBD_MSC_INIT_PARAM_T* param)\n+   *  Function to determine the memory required by the MSC function driver module.\n+   *\n+   *  This function is called by application layer before calling pUsbApi->msc->Init(), to allocate memory used\n+   *  by MSC function driver module. The application should allocate the memory which is accessible by USB\n+   *  controller/DMA controller.\n+   *  \\note Some memory areas are not accessible by all bus masters.\n+   *\n+   *  \\param[in] param Structure containing MSC function driver module initialization parameters.\n+   *  \\return Returns the required memory size in bytes.\n+   */\n+  uint32_t (*GetMemSize)(USBD_MSC_INIT_PARAM_T* param);\n+\n+  /** \\fn ErrorCode_t init(USBD_HANDLE_T hUsb, USBD_MSC_INIT_PARAM_T* param)\n+   *  Function to initialize MSC function driver module.\n+   *\n+   *  This function is called by application layer to initialize MSC function driver module.\n+   *\n+   *  \\param[in] hUsb Handle to the USB device stack.\n+   *  \\param[in, out] param Structure containing MSC function driver module initialization parameters.\n+   *  \\return Returns \\ref ErrorCode_t type to indicate success or error condition.\n+   *          \\retval LPC_OK On success\n+   *          \\retval ERR_USBD_BAD_MEM_BUF  Memory buffer passed is not 4-byte\n+   *              aligned or smaller than required.\n+   *          \\retval ERR_API_INVALID_PARAM2 Either MSC_Write() or MSC_Read() or\n+   *              MSC_Verify() callbacks are not defined.\n+   *          \\retval ERR_USBD_BAD_INTF_DESC  Wrong interface descriptor is passed.\n+   *          \\retval ERR_USBD_BAD_EP_DESC  Wrong endpoint descriptor is passed.\n+   */\n+  ErrorCode_t (*init)(USBD_HANDLE_T hUsb, USBD_MSC_INIT_PARAM_T* param);\n+\n+} USBD_MSC_API_T;\n+\n+/*-----------------------------------------------------------------------------\n+ *  Private functions & structures prototypes\n+ *-----------------------------------------------------------------------------*/\n+/** @cond  ADVANCED_API */\n+\n+typedef struct _MSC_CTRL_T\n+{\n+  /* If it's a USB HS, the max packet is 512, if it's USB FS,\n+  the max packet is 64. Use 512 for both HS and FS. */\n+  /*ALIGNED(4)*/ uint8_t  BulkBuf[USB_HS_MAX_BULK_PACKET]; /* Bulk In/Out Buffer */\n+  /*ALIGNED(4)*/MSC_CBW CBW;                   /* Command Block Wrapper */\n+  /*ALIGNED(4)*/MSC_CSW CSW;                   /* Command Status Wrapper */\n+\n+  USB_CORE_CTRL_T*  pUsbCtrl;\n+\n+  uint64_t Offset;                  /* R/W Offset */\n+  uint32_t Length;                  /* R/W Length */\n+  uint32_t BulkLen;                 /* Bulk In/Out Length */\n+  uint8_t* rx_buf;\n+\n+  uint8_t BulkStage;               /* Bulk Stage */\n+  uint8_t if_num;                  /* interface number */\n+  uint8_t epin_num;                /* BULK IN endpoint number */\n+  uint8_t epout_num;               /* BULK OUT endpoint number */\n+  uint32_t MemOK;                  /* Memory OK */\n+\n+  uint8_t*  InquiryStr;\n+  uint32_t  BlockCount;\n+  uint32_t  BlockSize;\n+  uint64_t  MemorySize;\n+  /* user defined functions */\n+  void (*MSC_Write)( uint32_t offset, uint8_t** src, uint32_t length, uint32_t high_offset);\n+  void (*MSC_Read)( uint32_t offset, uint8_t** dst, uint32_t length, uint32_t high_offset);\n+  ErrorCode_t (*MSC_Verify)( uint32_t offset, uint8_t src[], uint32_t length, uint32_t high_offset);\n+  /* optional call back for MSC_Write optimization */\n+  void (*MSC_GetWriteBuf)( uint32_t offset, uint8_t** buff_adr, uint32_t length, uint32_t high_offset);\n+\n+\n+}USB_MSC_CTRL_T;\n+\n+/** @cond  DIRECT_API */\n+extern uint32_t mwMSC_GetMemSize(USBD_MSC_INIT_PARAM_T* param);\n+extern ErrorCode_t mwMSC_init(USBD_HANDLE_T hUsb, USBD_MSC_INIT_PARAM_T* param);\n+/** @endcond */\n+\n+/** @endcond */\n+\n+\n+#endif  /* __MSCUSER_H__ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_rom_api.h ./lpc_chip_43xx/inc/usbd/usbd_rom_api.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbd/usbd_rom_api.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbd/usbd_rom_api.h\t2017-02-27 21:03:17.040043463 -0300\n@@ -0,0 +1,92 @@\n+/***********************************************************************\n+* $Id:: mw_usbd_rom_api.h 331 2012-08-09 18:54:34Z usb10131                   $\n+*\n+* Project: USB device ROM Stack\n+*\n+* Description:\n+*     ROM API Module definitions.\n+*\n+***********************************************************************\n+*   Copyright(C) 2011, NXP Semiconductor\n+*   All rights reserved.\n+*\n+* Software that is described herein is for illustrative purposes only\n+* which provides customers with programming information regarding the\n+* products. This software is supplied \"AS IS\" without any warranties.\n+* NXP Semiconductors assumes no responsibility or liability for the\n+* use of the software, conveys no license or title under any patent,\n+* copyright, or mask work right to the product. NXP Semiconductors\n+* reserves the right to make changes in the software without\n+* notification. NXP Semiconductors also make no representation or\n+* warranty that such application will be suitable for the specified\n+* use without further testing or modification.\n+**********************************************************************/\n+#ifndef __MW_USBD_ROM_API_H\n+#define __MW_USBD_ROM_API_H\n+/** \\file\n+ *  \\brief ROM API for USB device stack.\n+ *\n+ *  Definition of functions exported by ROM based USB device stack.\n+ *\n+ */\n+\n+#include \"error.h\"\n+#include \"usbd.h\"\n+#include \"usbd_hw.h\"\n+#include \"usbd_core.h\"\n+#include \"usbd_mscuser.h\"\n+#include \"usbd_dfuuser.h\"\n+#include \"usbd_hiduser.h\"\n+#include \"usbd_cdcuser.h\"\n+\n+/** \\brief Main USBD API functions structure.\n+ *  \\ingroup Group_USBD\n+ *\n+ *  This structure contains pointer to various USB Device stack's sub-module\n+ *  function tables. This structure is used as main entry point to access\n+ *  various methods (grouped in sub-modules) exposed by ROM based USB device\n+ *  stack.\n+ *\n+ */\n+typedef struct USBD_API\n+{\n+  const USBD_HW_API_T* hw; /**< Pointer to function table which exposes functions\n+                           which interact directly with USB device stack's core\n+                           layer.*/\n+  const USBD_CORE_API_T* core; /**< Pointer to function table which exposes functions\n+                           which interact directly with USB device controller\n+                           hardware.*/\n+  const USBD_MSC_API_T* msc; /**< Pointer to function table which exposes functions\n+                           provided by MSC function driver module.\n+                           */\n+  const USBD_DFU_API_T* dfu; /**< Pointer to function table which exposes functions\n+                           provided by DFU function driver module.\n+                           */\n+  const USBD_HID_API_T* hid; /**< Pointer to function table which exposes functions\n+                           provided by HID function driver module.\n+                           */\n+  const USBD_CDC_API_T* cdc; /**< Pointer to function table which exposes functions\n+                           provided by CDC-ACM function driver module.\n+                           */\n+  const uint32_t* reserved6; /**< Reserved for future function driver module.\n+                           */\n+  const uint32_t version; /**< Version identifier of USB ROM stack. The version is\n+                          defined as 0x0CHDMhCC where each nibble represents version\n+                          number of the corresponding component.\n+                          CC -  7:0  - 8bit core version number\n+                           h - 11:8  - 4bit hardware interface version number\n+                           M - 15:12 - 4bit MSC class module version number\n+                           D - 19:16 - 4bit DFU class module version number\n+                           H - 23:20 - 4bit HID class module version number\n+                           C - 27:24 - 4bit CDC class module version number\n+                           H - 31:28 - 4bit reserved\n+                           */\n+\n+} USBD_API_T;\n+\n+/* Applications using USBD ROM API should define this instance. The pointer should be assigned a value computed based on chip definitions. */\n+extern const USBD_API_T* g_pUsbApi;\n+#define USBD_API g_pUsbApi\n+\n+#endif /*__MW_USBD_ROM_API_H*/\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/usbhs_18xx_43xx.h ./lpc_chip_43xx/inc/usbhs_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/usbhs_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/usbhs_18xx_43xx.h\t2017-02-27 21:03:17.040043463 -0300\n@@ -0,0 +1,123 @@\n+/*\n+ * @brief LPC18xx/43xx High-Speed USB driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __USBHS_18XX_43XX_H_\n+#define __USBHS_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup USBHS_18XX_43XX CHIP: LPC18xx/43xx USBHS Device, Host, & OTG driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+/**\n+ * @brief USB High-Speed register block structure\n+ */\n+typedef struct {                           /*!< USB Structure         */\n+   __I  uint32_t  RESERVED0[64];\n+   __I  uint32_t  CAPLENGTH;               /*!< Capability register length */\n+   __I  uint32_t  HCSPARAMS;               /*!< Host controller structural parameters */\n+   __I  uint32_t  HCCPARAMS;               /*!< Host controller capability parameters */\n+   __I  uint32_t  RESERVED1[5];\n+   __I  uint32_t  DCIVERSION;              /*!< Device interface version number */\n+   __I  uint32_t  RESERVED2[7];\n+   union {\n+       __IO uint32_t  USBCMD_H;            /*!< USB command (host mode) */\n+       __IO uint32_t  USBCMD_D;            /*!< USB command (device mode) */\n+   };\n+\n+   union {\n+       __IO uint32_t  USBSTS_H;            /*!< USB status (host mode) */\n+       __IO uint32_t  USBSTS_D;            /*!< USB status (device mode) */\n+   };\n+\n+   union {\n+       __IO uint32_t  USBINTR_H;           /*!< USB interrupt enable (host mode) */\n+       __IO uint32_t  USBINTR_D;           /*!< USB interrupt enable (device mode) */\n+   };\n+\n+   union {\n+       __IO uint32_t  FRINDEX_H;           /*!< USB frame index (host mode) */\n+       __I  uint32_t  FRINDEX_D;           /*!< USB frame index (device mode) */\n+   };\n+\n+   __I  uint32_t  RESERVED3;\n+   union {\n+       __IO uint32_t  PERIODICLISTBASE;    /*!< Frame list base address */\n+       __IO uint32_t  DEVICEADDR;          /*!< USB device address     */\n+   };\n+\n+   union {\n+       __IO uint32_t  ASYNCLISTADDR;       /*!< Address of endpoint list in memory (host mode) */\n+       __IO uint32_t  ENDPOINTLISTADDR;    /*!< Address of endpoint list in memory (device mode) */\n+   };\n+\n+   __IO uint32_t  TTCTRL;                  /*!< Asynchronous buffer status for embedded TT (host mode) */\n+   __IO uint32_t  BURSTSIZE;               /*!< Programmable burst size */\n+   __IO uint32_t  TXFILLTUNING;            /*!< Host transmit pre-buffer packet tuning (host mode) */\n+   __I  uint32_t  RESERVED4[2];\n+   __IO uint32_t  ULPIVIEWPORT;            /*!< ULPI viewport          */\n+   __IO uint32_t  BINTERVAL;               /*!< Length of virtual frame */\n+   __IO uint32_t  ENDPTNAK;                /*!< Endpoint NAK (device mode) */\n+   __IO uint32_t  ENDPTNAKEN;              /*!< Endpoint NAK Enable (device mode) */\n+   __I  uint32_t  RESERVED5;\n+   union {\n+       __IO uint32_t  PORTSC1_H;           /*!< Port 1 status/control (host mode) */\n+       __IO uint32_t  PORTSC1_D;           /*!< Port 1 status/control (device mode) */\n+   };\n+\n+   __I  uint32_t  RESERVED6[7];\n+   __IO uint32_t  OTGSC;                   /*!< OTG status and control */\n+   union {\n+       __IO uint32_t  USBMODE_H;           /*!< USB mode (host mode)   */\n+       __IO uint32_t  USBMODE_D;           /*!< USB mode (device mode) */\n+   };\n+\n+   __IO uint32_t  ENDPTSETUPSTAT;          /*!< Endpoint setup status  */\n+   __IO uint32_t  ENDPTPRIME;              /*!< Endpoint initialization */\n+   __IO uint32_t  ENDPTFLUSH;              /*!< Endpoint de-initialization */\n+   __I  uint32_t  ENDPTSTAT;               /*!< Endpoint status        */\n+   __IO uint32_t  ENDPTCOMPLETE;           /*!< Endpoint complete      */\n+   __IO uint32_t  ENDPTCTRL[6];            /*!< Endpoint control 0     */\n+} LPC_USBHS_T;\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __USBHS_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/inc/wwdt_18xx_43xx.h ./lpc_chip_43xx/inc/wwdt_18xx_43xx.h\n--- a_OkB2vL/lpc_chip_43xx/inc/wwdt_18xx_43xx.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/inc/wwdt_18xx_43xx.h\t2017-02-27 21:03:17.040043463 -0300\n@@ -0,0 +1,227 @@\n+/*\n+ * @brief LPC18xx/43xx WWDT driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#ifndef __WWDT_18XX_43XX_H_\n+#define __WWDT_18XX_43XX_H_\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/** @defgroup WWDT_18XX_43XX CHIP: LPC18xx/43xx Windowed Watchdog driver\n+ * @ingroup CHIP_18XX_43XX_Drivers\n+ * @{\n+ */\n+\n+#define WATCHDOG_WINDOW_SUPPORT\n+\n+/** WDT oscillator frequency value */\n+#define WDT_OSC     (CGU_IRC_FREQ)\n+\n+/**\n+ * @brief Windowed Watchdog register block structure\n+ */\n+typedef struct {               /*!< WWDT Structure         */\n+   __IO uint32_t  MOD;         /*!< Watchdog mode register. This register contains the basic mode and status of the Watchdog Timer. */\n+   __IO uint32_t  TC;          /*!< Watchdog timer constant register. This register determines the time-out value. */\n+   __O  uint32_t  FEED;        /*!< Watchdog feed sequence register. Writing 0xAA followed by 0x55 to this register reloads the Watchdog timer with the value contained in WDTC. */\n+   __I  uint32_t  TV;          /*!< Watchdog timer value register. This register reads out the current value of the Watchdog timer. */\n+   __I  uint32_t  RESERVED0;\n+#ifdef WATCHDOG_WINDOW_SUPPORT\n+   __IO uint32_t  WARNINT;     /*!< Watchdog warning interrupt register. This register contains the Watchdog warning interrupt compare value. */\n+   __IO uint32_t  WINDOW;      /*!< Watchdog timer window register. This register contains the Watchdog window value. */\n+#endif\n+} LPC_WWDT_T;\n+\n+/**\n+ * @brief Watchdog Mode register definitions\n+ */\n+/** Watchdog Mode Bitmask */\n+#define WWDT_WDMOD_BITMASK          ((uint32_t) 0x1F)\n+/** WWDT interrupt enable bit */\n+#define WWDT_WDMOD_WDEN             ((uint32_t) (1 << 0))\n+/** WWDT interrupt enable bit */\n+#define WWDT_WDMOD_WDRESET          ((uint32_t) (1 << 1))\n+/** WWDT time out flag bit */\n+#define WWDT_WDMOD_WDTOF            ((uint32_t) (1 << 2))\n+/** WDT Time Out flag bit */\n+#define WWDT_WDMOD_WDINT            ((uint32_t) (1 << 3))\n+/** WWDT Protect flag bit */\n+#define WWDT_WDMOD_WDPROTECT        ((uint32_t) (1 << 4))\n+\n+/**\n+ * @brief  Initialize the Watchdog timer\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return None\n+ */\n+void Chip_WWDT_Init(LPC_WWDT_T *pWWDT);\n+\n+/**\n+ * @brief  Shutdown the Watchdog timer\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return None\n+ */\n+void Chip_WWDT_DeInit(LPC_WWDT_T *pWWDT);\n+\n+/**\n+ * @brief  Set WDT timeout constant value used for feed\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  timeout : WDT timeout in ticks, between WWDT_TICKS_MIN and WWDT_TICKS_MAX\n+ * @return none\n+ */\n+STATIC INLINE void Chip_WWDT_SetTimeOut(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+   pWWDT->TC = timeout;\n+}\n+\n+/**\n+ * @brief  Feed watchdog timer\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return None\n+ * @note   If this function isn't called, a watchdog timer warning will occur.\n+ * After the warning, a timeout will occur if a feed has happened.\n+ */\n+STATIC INLINE void Chip_WWDT_Feed(LPC_WWDT_T *pWWDT)\n+{\n+   pWWDT->FEED = 0xAA;\n+   pWWDT->FEED = 0x55;\n+}\n+\n+#if defined(WATCHDOG_WINDOW_SUPPORT)\n+/**\n+ * @brief  Set WWDT warning interrupt\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  timeout : WDT warning in ticks, between 0 and 1023\n+ * @return None\n+ * @note   This is the number of ticks after the watchdog interrupt that the\n+ * warning interrupt will be generated.\n+ */\n+STATIC INLINE void Chip_WWDT_SetWarning(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+   pWWDT->WARNINT = timeout;\n+}\n+\n+/**\n+ * @brief  Set WWDT window time\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  timeout : WDT timeout in ticks, between WWDT_TICKS_MIN and WWDT_TICKS_MAX\n+ * @return None\n+ * @note   The watchdog timer must be fed between the timeout from the Chip_WWDT_SetTimeOut()\n+ * function and this function, with this function defining the last tick before the\n+ * watchdog window interrupt occurs.\n+ */\n+STATIC INLINE void Chip_WWDT_SetWindow(LPC_WWDT_T *pWWDT, uint32_t timeout)\n+{\n+   pWWDT->WINDOW = timeout;\n+}\n+\n+#endif\n+\n+/**\n+ * @brief  Enable watchdog timer options\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  options : An or'ed set of options of values\n+ *                     WWDT_WDMOD_WDEN, WWDT_WDMOD_WDRESET, and WWDT_WDMOD_WDPROTECT\n+ * @return None\n+ * @note   You can enable more than one option at once (ie, WWDT_WDMOD_WDRESET |\n+ * WWDT_WDMOD_WDPROTECT), but use the WWDT_WDMOD_WDEN after all other options\n+ * are set (or unset) with no other options. If WWDT_WDMOD_LOCK is used, it cannot\n+ * be unset.\n+ */\n+STATIC INLINE void Chip_WWDT_SetOption(LPC_WWDT_T *pWWDT, uint32_t options)\n+{\n+   pWWDT->MOD |= options;\n+}\n+\n+/**\n+ * @brief  Disable/clear watchdog timer options\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  options : An or'ed set of options of values\n+ *                     WWDT_WDMOD_WDEN, WWDT_WDMOD_WDRESET, and WWDT_WDMOD_WDPROTECT\n+ * @return None\n+ * @note   You can disable more than one option at once (ie, WWDT_WDMOD_WDRESET |\n+ * WWDT_WDMOD_WDTOF).\n+ */\n+STATIC INLINE void Chip_WWDT_UnsetOption(LPC_WWDT_T *pWWDT, uint32_t options)\n+{\n+   pWWDT->MOD &= (~options) & WWDT_WDMOD_BITMASK;\n+}\n+\n+/**\n+ * @brief  Enable WWDT activity\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return None\n+ */\n+STATIC INLINE void Chip_WWDT_Start(LPC_WWDT_T *pWWDT)\n+{\n+   Chip_WWDT_SetOption(pWWDT, WWDT_WDMOD_WDEN);\n+   Chip_WWDT_Feed(pWWDT);\n+}\n+\n+/**\n+ * @brief  Read WWDT status flag\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return Watchdog status, an Or'ed value of WWDT_WDMOD_*\n+ */\n+STATIC INLINE uint32_t Chip_WWDT_GetStatus(LPC_WWDT_T *pWWDT)\n+{\n+   return pWWDT->MOD;\n+}\n+\n+/**\n+ * @brief  Clear WWDT interrupt status flags\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @param  status  : Or'ed value of status flag(s) that you want to clear, should be:\n+ *              - WWDT_WDMOD_WDTOF: Clear watchdog timeout flag\n+ *              - WWDT_WDMOD_WDINT: Clear watchdog warning flag\n+ * @return None\n+ */\n+void Chip_WWDT_ClearStatusFlag(LPC_WWDT_T *pWWDT, uint32_t status);\n+\n+/**\n+ * @brief  Get the current value of WDT\n+ * @param  pWWDT   : The base of WatchDog Timer peripheral on the chip\n+ * @return current value of WDT\n+ */\n+STATIC INLINE uint32_t Chip_WWDT_GetCurrentCount(LPC_WWDT_T *pWWDT)\n+{\n+   return pWWDT->TV;\n+}\n+\n+/**\n+ * @}\n+ */\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+#endif /* __WWDT_18XX_43XX_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/adc_18xx_43xx.c ./lpc_chip_43xx/src/adc_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/adc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/adc_18xx_43xx.c\t2017-02-27 21:03:17.040043463 -0300\n@@ -0,0 +1,257 @@\n+/*\n+ * @brief LPC18xx/43xx A/D conversion driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Get the number of clock for a full conversion */\n+STATIC INLINE uint8_t getFullConvClk(void)\n+{\n+   return 11;\n+}\n+\n+/* Returns clock index for the peripheral block */\n+STATIC CHIP_CCU_CLK_T Chip_ADC_GetClockIndex(LPC_ADC_T *pADC)\n+{\n+   CHIP_CCU_CLK_T clkADC;\n+\n+   if (pADC == LPC_ADC1) {\n+       clkADC = CLK_APB3_ADC1;\n+   }\n+   else {\n+       clkADC = CLK_APB3_ADC0;\n+   }\n+\n+   return clkADC;\n+}\n+\n+/* Get divider value */\n+STATIC uint8_t getClkDiv(LPC_ADC_T *pADC, bool burstMode, uint32_t adcRate, uint8_t clks)\n+{\n+   uint32_t adcBlockFreq;\n+   uint32_t fullAdcRate;\n+   uint8_t div;\n+\n+   /* The APB clock (PCLK_ADC0) is divided by (CLKDIV+1) to produce the clock for\n+      A/D converter, which should be less than or equal to 4.5MHz.\n+      A fully conversion requires (bits_accuracy+1) of these clocks.\n+      ADC Clock = PCLK_ADC0 / (CLKDIV + 1);\n+      ADC rate = ADC clock / (the number of clocks required for each conversion);\n+    */\n+   adcBlockFreq = Chip_Clock_GetRate(Chip_ADC_GetClockIndex(pADC));\n+   if (burstMode) {\n+       fullAdcRate = adcRate * clks;\n+   }\n+   else {\n+       fullAdcRate = adcRate * getFullConvClk();\n+   }\n+\n+   /* Get the round value by fomular: (2*A + B)/(2*B) */\n+   div = ((adcBlockFreq * 2 + fullAdcRate) / (fullAdcRate * 2)) - 1;\n+   return div;\n+}\n+\n+/* Set start mode for ADC */\n+void setStartMode(LPC_ADC_T *pADC, uint8_t start_mode)\n+{\n+   uint32_t temp;\n+   temp = pADC->CR & (~ADC_CR_START_MASK);\n+   pADC->CR = temp | (ADC_CR_START_MODE_SEL((uint32_t) start_mode));\n+}\n+\n+/* Get the ADC value */\n+Status readAdcVal(LPC_ADC_T *pADC, uint8_t channel, uint16_t *data)\n+{\n+   uint32_t temp;\n+   temp = pADC->DR[channel];\n+   if (!ADC_DR_DONE(temp)) {\n+       return ERROR;\n+   }\n+   /*  if(ADC_DR_OVERRUN(temp) && (pADC->CR & ADC_CR_BURST)) */\n+   /*  return ERROR; */\n+   *data = (uint16_t) ADC_DR_RESULT(temp);\n+   return SUCCESS;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the ADC peripheral and the ADC setup structure to default value */\n+void Chip_ADC_Init(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup)\n+{\n+   uint8_t div;\n+   uint32_t cr = 0;\n+   uint32_t clk;\n+\n+   Chip_Clock_EnableOpts(Chip_ADC_GetClockIndex(pADC), true, true, 1);\n+\n+   pADC->INTEN = 0;        /* Disable all interrupts */\n+\n+   cr |= ADC_CR_PDN;\n+   ADCSetup->adcRate = ADC_MAX_SAMPLE_RATE;\n+   ADCSetup->bitsAccuracy = ADC_10BITS;\n+   clk = 11;\n+   ADCSetup->burstMode = false;\n+   div = getClkDiv(pADC, false, ADCSetup->adcRate, clk);\n+   cr |= ADC_CR_CLKDIV(div);\n+   cr |= ADC_CR_BITACC(ADCSetup->bitsAccuracy);\n+   pADC->CR = cr;\n+}\n+\n+/* Shutdown ADC */\n+void Chip_ADC_DeInit(LPC_ADC_T *pADC)\n+{\n+   pADC->INTEN = 0x00000100;\n+   pADC->CR = 0;\n+   Chip_Clock_Disable(Chip_ADC_GetClockIndex(pADC));\n+}\n+\n+/* Get the ADC value */\n+Status Chip_ADC_ReadValue(LPC_ADC_T *pADC, uint8_t channel, uint16_t *data)\n+{\n+   return readAdcVal(pADC, channel, data);\n+}\n+\n+/* Get ADC Channel status from ADC data register */\n+FlagStatus Chip_ADC_ReadStatus(LPC_ADC_T *pADC, uint8_t channel, uint32_t StatusType)\n+{\n+   switch (StatusType) {\n+   case ADC_DR_DONE_STAT:\n+       return (pADC->STAT & (1UL << channel)) ? SET : RESET;\n+\n+   case ADC_DR_OVERRUN_STAT:\n+       channel += 8;\n+       return (pADC->STAT & (1UL << channel)) ? SET : RESET;\n+\n+   case ADC_DR_ADINT_STAT:\n+       return pADC->STAT >> 16 ? SET : RESET;\n+\n+   default:\n+       break;\n+   }\n+   return RESET;\n+}\n+\n+/* Enable/Disable interrupt for ADC channel */\n+void Chip_ADC_Int_SetChannelCmd(LPC_ADC_T *pADC, uint8_t channel, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pADC->INTEN |= (1UL << channel);\n+   }\n+   else {\n+       pADC->INTEN &= (~(1UL << channel));\n+   }\n+}\n+\n+/* Select the mode starting the AD conversion */\n+void Chip_ADC_SetStartMode(LPC_ADC_T *pADC, ADC_START_MODE_T mode, ADC_EDGE_CFG_T EdgeOption)\n+{\n+   if ((mode != ADC_START_NOW) && (mode != ADC_NO_START)) {\n+       if (EdgeOption) {\n+           pADC->CR |= ADC_CR_EDGE;\n+       }\n+       else {\n+           pADC->CR &= ~ADC_CR_EDGE;\n+       }\n+   }\n+   setStartMode(pADC, (uint8_t) mode);\n+}\n+\n+/* Set the ADC Sample rate */\n+void Chip_ADC_SetSampleRate(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup, uint32_t rate)\n+{\n+   uint8_t div;\n+   uint32_t cr;\n+\n+   cr = pADC->CR & (~ADC_SAMPLE_RATE_CONFIG_MASK);\n+   ADCSetup->adcRate = rate;\n+   div = getClkDiv(pADC, ADCSetup->burstMode, rate, (11 - ADCSetup->bitsAccuracy));\n+   cr |= ADC_CR_CLKDIV(div);\n+   cr |= ADC_CR_BITACC(ADCSetup->bitsAccuracy);\n+   pADC->CR = cr;\n+}\n+\n+/* Set the ADC accuracy bits */\n+void Chip_ADC_SetResolution(LPC_ADC_T *pADC, ADC_CLOCK_SETUP_T *ADCSetup, ADC_RESOLUTION_T resolution)\n+{\n+   ADCSetup->bitsAccuracy = resolution;\n+   Chip_ADC_SetSampleRate(pADC, ADCSetup, ADCSetup->adcRate);\n+}\n+\n+/* Enable or disable the ADC channel on ADC peripheral */\n+void Chip_ADC_EnableChannel(LPC_ADC_T *pADC, ADC_CHANNEL_T channel, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pADC->CR |= ADC_CR_CH_SEL(channel);\n+   }\n+   else {\n+       pADC->CR &= ~ADC_CR_START_MASK;\n+       pADC->CR &= ~ADC_CR_CH_SEL(channel);\n+   }\n+}\n+\n+/* Enable burst mode */\n+void Chip_ADC_SetBurstCmd(LPC_ADC_T *pADC, FunctionalState NewState)\n+{\n+   setStartMode(pADC, ADC_NO_START);\n+\n+    if (NewState == DISABLE) {\n+       pADC->CR &= ~ADC_CR_BURST;\n+   }\n+   else {\n+       pADC->CR |= ADC_CR_BURST;\n+   }\n+}\n+\n+/* Read the ADC value and convert it to 8bits value */\n+Status Chip_ADC_ReadByte(LPC_ADC_T *pADC, ADC_CHANNEL_T channel, uint8_t *data)\n+{\n+   uint16_t temp;\n+   Status rt;\n+\n+   rt = readAdcVal(pADC, channel, &temp);\n+   *data = (uint8_t) temp;\n+\n+   return rt;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/aes_18xx_43xx.c ./lpc_chip_43xx/src/aes_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/aes_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/aes_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,174 @@\n+/*\n+ * @brief LPC18xx/43xx AES Engine driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define BOOTROM_BASE           0x10400100\n+#define AES_API_TABLE_OFFSET   0x2\n+\n+typedef    void        (*V_FP_V)(void);\n+typedef    uint32_t    (*U32_FP_V)(void);\n+\n+static unsigned long *BOOTROM_API_TABLE;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+static uint32_t (*aes_SetMode)(CHIP_AES_OP_MODE_T AesMode);\n+static void (*aes_LoadKey1)(void);\n+static void (*aes_LoadKey2)(void);\n+static void (*aes_LoadKeyRNG)(void);\n+static void (*aes_LoadKeySW)(uint8_t *pKey);\n+static void (*aes_LoadIV_SW)(uint8_t *pVector);\n+static void (*aes_LoadIV_IC)(void);\n+static uint32_t (*aes_Operate)(uint8_t *pDatOut, uint8_t *pDatIn, uint32_t size);\n+static uint32_t (*aes_ProgramKey1)(uint8_t *pKey);\n+static uint32_t (*aes_ProgramKey2)(uint8_t *pKey);\n+static uint32_t (*aes_Config_DMA) (uint32_t channel_id);\n+static uint32_t (*aes_Operate_DMA)(uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size);\n+static uint32_t (*aes_Get_Status_DMA) (uint32_t channel_id);\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* CHIP AES Initialisation function */\n+void Chip_AES_Init(void)\n+{\n+   uint32_t (*ROM_aes_Init)(void);\n+\n+   BOOTROM_API_TABLE = *((unsigned long * *) BOOTROM_BASE + AES_API_TABLE_OFFSET);\n+\n+   ROM_aes_Init        = (uint32_t (*)(void))BOOTROM_API_TABLE[0];\n+   aes_SetMode         = (uint32_t (*)(CHIP_AES_OP_MODE_T AesMode))BOOTROM_API_TABLE[1];\n+   aes_LoadKey1        = (void (*)(void))BOOTROM_API_TABLE[2];\n+   aes_LoadKey2        = (void (*)(void))BOOTROM_API_TABLE[3];\n+   aes_LoadKeyRNG      = (void (*)(void))BOOTROM_API_TABLE[4];\n+   aes_LoadKeySW       = (void (*)(uint8_t *pKey))BOOTROM_API_TABLE[5];\n+   aes_LoadIV_SW       = (void (*)(uint8_t *pVector))BOOTROM_API_TABLE[6];\n+   aes_LoadIV_IC       = (void (*)(void))BOOTROM_API_TABLE[7];\n+   aes_Operate         = (uint32_t (*)(uint8_t *pDatOut, uint8_t *pDatIn, uint32_t Size))BOOTROM_API_TABLE[8];\n+   aes_ProgramKey1     = (uint32_t (*)(uint8_t *pKey))BOOTROM_API_TABLE[9];\n+   aes_ProgramKey2     = (uint32_t (*)(uint8_t *pKey))BOOTROM_API_TABLE[10];\n+   aes_Config_DMA      = (uint32_t (*)(uint32_t channel_id))BOOTROM_API_TABLE[11];\n+   aes_Operate_DMA     = (uint32_t (*)(uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size))BOOTROM_API_TABLE[12];\n+   aes_Get_Status_DMA  = (uint32_t (*) (uint32_t channel_id))BOOTROM_API_TABLE[13];\n+\n+   ROM_aes_Init();\n+}\n+\n+/* Set Operation mode in AES Engine */\n+uint32_t Chip_AES_SetMode(CHIP_AES_OP_MODE_T AesMode)\n+{\n+   return aes_SetMode(AesMode);\n+}\n+\n+/* Load 128-bit user key in AES Engine */\n+void Chip_AES_LoadKey(uint32_t keyNum)\n+{\n+   if (keyNum) {\n+       aes_LoadKey2();\n+   }\n+   else {\n+       aes_LoadKey1();\n+   }\n+}\n+\n+/* Load randomly generated key in AES engine */\n+void Chip_AES_LoadKeyRNG(void)\n+{\n+   aes_LoadKeyRNG();\n+}\n+\n+/* Load 128-bit AES software defined user key */\n+void Chip_AES_LoadKeySW(uint8_t *pKey)\n+{\n+   aes_LoadKeySW(pKey);\n+}\n+\n+/* Load 128-bit AES initialization vector */\n+void Chip_AES_LoadIV_SW(uint8_t *pVector)\n+{\n+   aes_LoadIV_SW(pVector);\n+}\n+\n+/* Load IC specific 128-bit AES initialization vector */\n+void Chip_AES_LoadIV_IC(void)\n+{\n+   aes_LoadIV_IC();\n+}\n+\n+/* Operate AES Engine */\n+uint32_t Chip_AES_Operate(uint8_t *pDatOut, uint8_t *pDatIn, uint32_t Size)\n+{\n+   return aes_Operate(pDatOut, pDatIn, Size);\n+}\n+\n+/* Program 128-bit AES Key in OTP */\n+uint32_t Chip_AES_ProgramKey(uint32_t KeyNum, uint8_t *pKey)\n+{\n+   uint32_t status;\n+\n+   if (KeyNum) {\n+       status = aes_ProgramKey2(pKey);\n+   }\n+   else {\n+       status = aes_ProgramKey1(pKey);\n+   }\n+   return status;\n+}\n+\n+/* Configure DMA channel to process AES block */\n+uint32_t Chip_AES_Config_DMA(uint32_t channel_id)\n+{\n+   return aes_Config_DMA(channel_id);\n+}\n+\n+/* Enables DMA channel and Operates AES Engine */\n+uint32_t Chip_AES_OperateDMA(uint32_t channel_id, uint8_t *dataOutAddr, uint8_t *dataInAddr, uint32_t size)\n+{\n+   return aes_Operate_DMA(channel_id,dataOutAddr,dataInAddr,size);\n+}\n+\n+/* Read status of DMA channels that process an AES data block. */\n+uint32_t Chip_AES_GetStatusDMA(uint32_t channel_id)\n+{\n+   return aes_Get_Status_DMA(channel_id);\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/atimer_18xx_43xx.c ./lpc_chip_43xx/src/atimer_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/atimer_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/atimer_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,63 @@\n+/*\n+ * @brief LPC18xx/43xx Alarm Timer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize Alarm Timer */\n+void Chip_ATIMER_Init(LPC_ATIMER_T *pATIMER, uint32_t PresetValue)\n+{\n+   Chip_ATIMER_UpdatePresetValue(pATIMER, PresetValue);\n+   Chip_ATIMER_ClearIntStatus(pATIMER);\n+}\n+\n+/* Close ATIMER device */\n+void Chip_ATIMER_DeInit(LPC_ATIMER_T *pATIMER)\n+{\n+   Chip_ATIMER_ClearIntStatus(pATIMER);\n+   Chip_ATIMER_IntDisable(pATIMER);\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/ccan_18xx_43xx.c ./lpc_chip_43xx/src/ccan_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/ccan_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/ccan_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,311 @@\n+/*\n+ * @brief LPC18xx/43xx CCAN driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Configure the bit timing for CCAN bus */\n+STATIC void configTimming(LPC_CCAN_T *pCCAN,\n+                         uint32_t ClkDiv,\n+                         uint32_t BaudRatePrescaler,\n+                         uint8_t SynJumpWidth,\n+                         uint8_t Tseg1,\n+                         uint8_t Tseg2)\n+{\n+   /* Reset software */\n+   if (!(pCCAN->CNTL & CCAN_CTRL_INIT)) {\n+       pCCAN->CNTL |= CCAN_CTRL_INIT;\n+   }\n+\n+   /*Set bus timing */\n+   pCCAN->CLKDIV = ClkDiv;         /* Divider for CAN VPB3 clock */\n+   pCCAN->CNTL |= CCAN_CTRL_CCE;       /* Start configuring bit timing */\n+   pCCAN->BT = (BaudRatePrescaler & 0x3F) | (SynJumpWidth & 0x03) << 6 | (Tseg1 & 0x0F) << 8 | (Tseg2 & 0x07) << 12;\n+   pCCAN->BRPE = BaudRatePrescaler >> 6;   /* Set Baud Rate Prescaler MSBs */\n+   pCCAN->CNTL &= ~CCAN_CTRL_CCE;      /* Stop configuring bit timing */\n+\n+   /* Finish software initialization */\n+   pCCAN->CNTL &= ~CCAN_CTRL_INIT;\n+   while ( pCCAN->CNTL & CCAN_CTRL_INIT ) {}\n+}\n+\n+/* Return 1->32; 0 if not find free msg */\n+STATIC uint8_t getFreeMsgObject(LPC_CCAN_T *pCCAN)\n+{\n+   uint32_t msg_valid;\n+   uint8_t i;\n+   msg_valid = Chip_CCAN_GetValidMsg(pCCAN);\n+   for (i = 0; i < CCAN_MSG_MAX_NUM; i++) {\n+       if (!((msg_valid >> i) & 1UL)) {\n+           return i + 1;\n+       }\n+   }\n+   return 0;   // No free object\n+}\n+\n+STATIC void freeMsgObject(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum)\n+{\n+   Chip_CCAN_SetValidMsg(pCCAN, IFSel, msgNum, false);\n+}\n+\n+/* Returns clock index for the peripheral block */\n+STATIC CHIP_CCU_CLK_T Chip_CCAN_GetClockIndex(LPC_CCAN_T *pCCAN)\n+{\n+   CHIP_CCU_CLK_T clkCCAN;\n+\n+   if (pCCAN == LPC_C_CAN1) {\n+       clkCCAN = CLK_APB1_CAN1;\n+   }\n+   else {\n+       clkCCAN = CLK_APB3_CAN0;\n+   }\n+\n+   return clkCCAN;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the CCAN peripheral, free all message object in RAM */\n+void Chip_CCAN_Init(LPC_CCAN_T *pCCAN)\n+{\n+   uint8_t i;\n+\n+   Chip_Clock_EnableOpts(Chip_CCAN_GetClockIndex(pCCAN), true, false, 1);\n+\n+   for (i = 1; i <= CCAN_MSG_MAX_NUM; i++) {\n+       freeMsgObject(pCCAN, CCAN_MSG_IF1, i);\n+   }\n+   Chip_CCAN_ClearStatus(pCCAN, (CCAN_STAT_RXOK | CCAN_STAT_TXOK));\n+}\n+\n+/* De-initialize the CCAN peripheral */\n+void Chip_CCAN_DeInit(LPC_CCAN_T *pCCAN)\n+{\n+   Chip_Clock_Disable(Chip_CCAN_GetClockIndex(pCCAN));\n+}\n+\n+/* Select bit rate for CCAN bus */\n+Status Chip_CCAN_SetBitRate(LPC_CCAN_T *pCCAN, uint32_t bitRate)\n+{\n+   uint32_t pClk, div, quanta, segs, seg1, seg2, clk_per_bit, can_sjw;\n+   pClk = Chip_Clock_GetRate(Chip_CCAN_GetClockIndex(pCCAN));\n+   clk_per_bit = pClk / bitRate;\n+\n+   for (div = 0; div <= 15; div++) {\n+       for (quanta = 1; quanta <= 32; quanta++) {\n+           for (segs = 3; segs <= 17; segs++) {\n+               if (clk_per_bit == (segs * quanta * (div + 1))) {\n+                   segs -= 3;\n+                   seg1 = segs / 2;\n+                   seg2 = segs - seg1;\n+                   can_sjw = seg1 > 3 ? 3 : seg1;\n+                   configTimming(pCCAN, div, quanta - 1, can_sjw, seg1, seg2);\n+                   return SUCCESS;\n+               }\n+           }\n+       }\n+   }\n+   return ERROR;\n+}\n+\n+/* Clear the status of CCAN bus */\n+void Chip_CCAN_ClearStatus(LPC_CCAN_T *pCCAN, uint32_t val)\n+{\n+   uint32_t tmp = Chip_CCAN_GetStatus(pCCAN);\n+   Chip_CCAN_SetStatus(pCCAN, tmp & (~val));\n+}\n+\n+/* Set a message into the message object in message RAM */\n+void Chip_CCAN_SetMsgObject(LPC_CCAN_T *pCCAN,\n+                           CCAN_MSG_IF_T IFSel,\n+                           CCAN_TRANSFER_DIR_T dir,\n+                           bool remoteFrame,\n+                           uint8_t msgNum,\n+                           const CCAN_MSG_OBJ_T *pMsgObj)\n+{\n+   uint16_t *pData;\n+   uint32_t msgCtrl = 0;\n+\n+   if (pMsgObj == NULL) {\n+       return;\n+   }\n+   pData = (uint16_t *) (pMsgObj->data);\n+\n+   msgCtrl |= CCAN_IF_MCTRL_UMSK | CCAN_IF_MCTRL_RMTEN(remoteFrame) | CCAN_IF_MCTRL_EOB |\n+              (pMsgObj->dlc & CCAN_IF_MCTRL_DLC_MSK);\n+   if (dir == CCAN_TX_DIR) {\n+       msgCtrl |= CCAN_IF_MCTRL_TXIE;\n+       if (!remoteFrame) {\n+           msgCtrl |= CCAN_IF_MCTRL_TXRQ;\n+       }\n+   }\n+   else {\n+       msgCtrl |= CCAN_IF_MCTRL_RXIE;\n+   }\n+\n+   pCCAN->IF[IFSel].MCTRL = msgCtrl;\n+   pCCAN->IF[IFSel].DA1 = *pData++;    /* Lower two bytes of message pointer */\n+   pCCAN->IF[IFSel].DA2 = *pData++;    /* Upper two bytes of message pointer */\n+   pCCAN->IF[IFSel].DB1 = *pData++;    /* Lower two bytes of message pointer */\n+   pCCAN->IF[IFSel].DB2 = *pData;  /* Upper two bytes of message pointer */\n+\n+   /* Configure arbitration */\n+   if (!(pMsgObj->id & (0x1 << 30))) {                 /* bit 30 is 0, standard frame */\n+       /* Mxtd: 0, Mdir: 1, Mask is 0x7FF */\n+       pCCAN->IF[IFSel].MSK2 = CCAN_IF_MASK2_MDIR(dir) | (CCAN_MSG_ID_STD_MASK << 2);\n+       pCCAN->IF[IFSel].MSK1 = 0x0000;\n+\n+       /* MsgVal: 1, Mtd: 0, Dir: 1, ID = 0x200 */\n+       pCCAN->IF[IFSel].ARB2 = CCAN_IF_ARB2_MSGVAL | CCAN_IF_ARB2_DIR(dir) | (pMsgObj->id << 2);\n+       pCCAN->IF[IFSel].ARB1 = 0x0000;\n+   }\n+   else {                                      /* Extended frame */\n+       /* Mxtd: 1, Mdir: 1, Mask is 0x1FFFFFFF */\n+       pCCAN->IF[IFSel].MSK2 = CCAN_IF_MASK2_MXTD | CCAN_IF_MASK2_MDIR(dir) | (CCAN_MSG_ID_EXT_MASK >> 16);\n+       pCCAN->IF[IFSel].MSK1 = CCAN_MSG_ID_EXT_MASK & 0x0000FFFF;\n+\n+       /* MsgVal: 1, Mtd: 1, Dir: 1, ID = 0x200000 */\n+       pCCAN->IF[IFSel].ARB2 = CCAN_IF_ARB2_MSGVAL | CCAN_IF_ARB2_XTD | CCAN_IF_ARB2_DIR(dir) | (pMsgObj->id >> 16);\n+       pCCAN->IF[IFSel].ARB1 = pMsgObj->id & 0x0000FFFF;\n+   }\n+\n+   Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_WR | CCAN_IF_CMDMSK_TRANSFER_ALL, msgNum);\n+}\n+\n+/* Get a message object in message RAM into the message buffer */\n+void Chip_CCAN_GetMsgObject(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum, CCAN_MSG_OBJ_T *pMsgObj)\n+{\n+   uint32_t *pData;\n+   if (!pMsgObj) {\n+       return;\n+   }\n+   pData = (uint32_t *) pMsgObj->data;\n+   Chip_CCAN_TransferMsgObject(pCCAN,\n+                               IFSel,\n+                               CCAN_IF_CMDMSK_RD | CCAN_IF_CMDMSK_TRANSFER_ALL | CCAN_IF_CMDMSK_R_CLRINTPND,\n+                               msgNum);\n+\n+   if (pCCAN->IF[IFSel].MCTRL & CCAN_IF_MCTRL_NEWD) {\n+       pMsgObj->id = (pCCAN->IF[IFSel].ARB1) | (pCCAN->IF[IFSel].ARB2 << 16);\n+       pMsgObj->dlc = pCCAN->IF[IFSel].MCTRL & CCAN_IF_MCTRL_DLC_MSK;\n+       *pData++ = (pCCAN->IF[IFSel].DA2 << 16) | pCCAN->IF[IFSel].DA1;\n+       *pData = (pCCAN->IF[IFSel].DB2 << 16) | pCCAN->IF[IFSel].DB1;\n+\n+       if (pMsgObj->id & (0x1 << 30)) {\n+           pMsgObj->id &= CCAN_MSG_ID_EXT_MASK;\n+       }\n+       else {\n+           pMsgObj->id >>= 18;\n+           pMsgObj->id &= CCAN_MSG_ID_STD_MASK;\n+       }\n+   }\n+}\n+\n+/* Data transfer between IF registers and Message RAM */\n+void Chip_CCAN_TransferMsgObject(LPC_CCAN_T *pCCAN,\n+                                CCAN_MSG_IF_T IFSel,\n+                                uint32_t mask,\n+                                uint32_t msgNum) {\n+   msgNum &= 0x3F;\n+   pCCAN->IF[IFSel].CMDMSK = mask;\n+   pCCAN->IF[IFSel].CMDREQ = msgNum;\n+   while (pCCAN->IF[IFSel].CMDREQ & CCAN_IF_CMDREQ_BUSY ) {}\n+}\n+\n+/* Enable/Disable the message object to valid */\n+void Chip_CCAN_SetValidMsg(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint8_t msgNum, bool valid)\n+{\n+\n+   uint32_t temp;\n+   temp = pCCAN->IF[IFSel].ARB2;\n+   if (!valid) {\n+       pCCAN->IF[IFSel].ARB2 = (temp & (~CCAN_IF_ARB2_MSGVAL));\n+   }\n+   else {\n+       pCCAN->IF[IFSel].ARB2 = (temp | (CCAN_IF_ARB2_MSGVAL));\n+   }\n+\n+   Chip_CCAN_TransferMsgObject(pCCAN, IFSel, CCAN_IF_CMDMSK_WR | CCAN_IF_CMDMSK_ARB, msgNum);\n+}\n+\n+/* Send a message */\n+void Chip_CCAN_Send(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, bool remoteFrame, CCAN_MSG_OBJ_T *pMsgObj)\n+{\n+   uint8_t msgNum = getFreeMsgObject(pCCAN);\n+   if (!msgNum) {\n+       return;\n+   }\n+   Chip_CCAN_SetMsgObject(pCCAN, IFSel, CCAN_TX_DIR, remoteFrame, msgNum, pMsgObj);\n+   while (Chip_CCAN_GetTxRQST(pCCAN) >> (msgNum - 1)) {    // blocking , wait for sending completed\n+   }\n+   if (!remoteFrame) {\n+       freeMsgObject(pCCAN, IFSel, msgNum);\n+   }\n+}\n+\n+/* Register a message ID for receiving */\n+void Chip_CCAN_AddReceiveID(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint32_t id)\n+{\n+   CCAN_MSG_OBJ_T temp;\n+   uint8_t msgNum = getFreeMsgObject(pCCAN);\n+   if (!msgNum) {\n+       return;\n+   }\n+   temp.id = id;\n+   Chip_CCAN_SetMsgObject(pCCAN, IFSel, CCAN_RX_DIR, false, msgNum, &temp);\n+}\n+\n+/* Remove a registered message ID from receiving */\n+void Chip_CCAN_DeleteReceiveID(LPC_CCAN_T *pCCAN, CCAN_MSG_IF_T IFSel, uint32_t id)\n+{\n+   uint8_t i;\n+   CCAN_MSG_OBJ_T temp;\n+   for (i = 1; i <= CCAN_MSG_MAX_NUM; i++) {\n+       Chip_CCAN_GetMsgObject(pCCAN, IFSel, i, &temp);\n+       if (temp.id == id) {\n+           freeMsgObject(pCCAN, IFSel, i);\n+       }\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/chip_18xx_43xx.c ./lpc_chip_43xx/src/chip_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/chip_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/chip_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,117 @@\n+/*\n+ * @brief LPC18xx/LPC43xx chip driver source\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+/* USB PLL pre-initialized setup values for 480MHz output rate */\n+static const CGU_USBAUDIO_PLL_SETUP_T usbPLLSetup = {\n+   0x0000601D, /* Default control with main osc input, PLL disabled */\n+   0x06167FFA, /* M-divider value for 480MHz output from 12MHz input */\n+   0x00000000, /* N-divider value */\n+   0x00000000, /* Not applicable for USB PLL */\n+   480000000   /* PLL output frequency */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+/* System Clock Frequency (Core Clock) */\n+uint32_t SystemCoreClock;\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+static void Chip_USB_PllSetup(void)\n+{\n+   /* No need to setup anything if PLL is already setup for the frequency */\n+   if (Chip_Clock_GetClockInputHz(CLKIN_USBPLL) == usbPLLSetup.freq)\n+       return ;\n+\n+   /* Setup default USB PLL state for a 480MHz output and attach */\n+   Chip_Clock_SetupPLL(CLKIN_CRYSTAL, CGU_USB_PLL, &usbPLLSetup);\n+\n+   /* enable USB PLL */\n+   Chip_Clock_EnablePLL(CGU_USB_PLL);\n+\n+   /* Wait for PLL lock */\n+   while (!(Chip_Clock_GetPLLStatus(CGU_USB_PLL) & CGU_PLL_LOCKED)) {}\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+void Chip_USB0_Init(void)\n+{\n+   /* Set up USB PLL */\n+   Chip_USB_PllSetup();\n+\n+   /* Setup USB0 base clock as clock out from USB PLL */\n+   Chip_Clock_SetBaseClock( CLK_BASE_USB0, CLKIN_USBPLL, true, true);\n+\n+   /* enable USB main clock */\n+   Chip_Clock_EnableBaseClock(CLK_BASE_USB0);\n+   Chip_Clock_EnableOpts(CLK_MX_USB0, true, true, 1);\n+   /* enable USB0 phy */\n+   Chip_CREG_EnableUSB0Phy();\n+}\n+\n+void Chip_USB1_Init(void)\n+{\n+   /* Setup and enable the PLL */\n+   Chip_USB_PllSetup();\n+\n+   /* USB1 needs a 60MHz clock. To get it, a divider of 4 and then 2 are\n+      chained to make a divide by 8 function. Connect the output of\n+      divider D to the USB1 base clock. */\n+   Chip_Clock_SetDivider(CLK_IDIV_A, CLKIN_USBPLL, 4);\n+   Chip_Clock_SetDivider(CLK_IDIV_D, CLKIN_IDIVA, 2);\n+   Chip_Clock_SetBaseClock(CLK_BASE_USB1, CLKIN_IDIVD, true, true);\n+\n+   /* enable USB main clock */\n+   Chip_Clock_EnableBaseClock(CLK_BASE_USB1);\n+   Chip_Clock_EnableOpts(CLK_MX_USB1, true, true, 1);\n+   /* enable USB1_DP and USB1_DN on chip FS phy.*/\n+   LPC_SCU->SFSUSB = 0x12;\n+}\n+\n+\n+/* Update system core clock rate, should be called if the system has\n+   a clock rate change */\n+void SystemCoreClockUpdate(void)\n+{\n+   /* CPU core speed */\n+   SystemCoreClock = Chip_Clock_GetRate(CLK_MX_MXCORE);\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/clock_18xx_43xx.c ./lpc_chip_43xx/src/clock_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/clock_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/clock_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,823 @@\n+/*\n+ * @brief LPC18xx/43xx clock driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Maps a peripheral clock to it's base clock */\n+typedef struct {\n+   CHIP_CCU_CLK_T clkstart;\n+   CHIP_CCU_CLK_T clkend;\n+   CHIP_CGU_BASE_CLK_T clkbase;\n+} CLK_PERIPH_TO_BASE_T;\n+static const CLK_PERIPH_TO_BASE_T periph_to_base[] = {\n+   {CLK_APB3_BUS, CLK_APB3_CAN0, CLK_BASE_APB3},\n+   {CLK_APB1_BUS, CLK_APB1_CAN1, CLK_BASE_APB1},\n+   {CLK_SPIFI, CLK_SPIFI, CLK_BASE_SPIFI},\n+   {CLK_MX_BUS, CLK_MX_QEI, CLK_BASE_MX},\n+#if defined(CHIP_LPC43XX)\n+   {CLK_PERIPH_BUS, CLK_PERIPH_SGPIO, CLK_BASE_PERIPH},\n+#endif\n+   {CLK_USB0, CLK_USB0, CLK_BASE_USB0},\n+   {CLK_USB1, CLK_USB1, CLK_BASE_USB1},\n+#if defined(CHIP_LPC43XX)\n+   {CLK_SPI, CLK_SPI, CLK_BASE_SPI},\n+   {CLK_ADCHS, CLK_ADCHS, CLK_BASE_ADCHS},\n+#endif\n+   {CLK_APLL, CLK_APLL, CLK_BASE_APLL},\n+   {CLK_APB2_UART3, CLK_APB2_UART3, CLK_BASE_UART3},\n+   {CLK_APB2_UART2, CLK_APB2_UART2, CLK_BASE_UART2},\n+   {CLK_APB0_UART1, CLK_APB0_UART1, CLK_BASE_UART1},\n+   {CLK_APB0_UART0, CLK_APB0_UART0, CLK_BASE_UART0},\n+   {CLK_APB2_SSP1, CLK_APB2_SSP1, CLK_BASE_SSP1},\n+   {CLK_APB0_SSP0, CLK_APB0_SSP0, CLK_BASE_SSP0},\n+   {CLK_APB2_SDIO, CLK_APB2_SDIO, CLK_BASE_SDIO},\n+   {CLK_CCU2_LAST, CLK_CCU2_LAST, CLK_BASE_NONE}\n+};\n+\n+#define CRYSTAL_32K_FREQ_IN    (32 * 1024)\n+\n+/* Variables to use audio and usb pll frequency */\n+static uint32_t audio_usb_pll_freq[CGU_AUDIO_PLL+1];\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+__STATIC_INLINE uint32_t ABS(int val)\n+{\n+   if (val < 0)\n+       return -val;\n+   return val;\n+}\n+\n+static void pll_calc_divs(uint32_t freq, PLL_PARAM_T *ppll)\n+{\n+\n+   uint32_t prev = freq;\n+   int n, m, p;\n+\n+   /* When direct mode is set FBSEL should be a don't care */\n+   if (ppll->ctrl & (1 << 7)) {\n+       ppll->ctrl &= ~(1 << 6);\n+   }\n+   for (n = 1; n <= 4; n++) {\n+       for (p = 0; p < 4; p ++) {\n+           for (m = 1; m <= 256; m++) {\n+               uint32_t fcco, fout;\n+               if (ppll->ctrl & (1 << 6)) {\n+                   fcco = ((m << (p + 1)) * ppll->fin) / n;\n+               } else {\n+                   fcco = (m * ppll->fin) / n;\n+               }\n+               if (fcco < PLL_MIN_CCO_FREQ) continue;\n+               if (fcco > PLL_MAX_CCO_FREQ) break;\n+               if (ppll->ctrl & (1 << 7)) {\n+                   fout = fcco;\n+               } else {\n+                   fout = fcco >> (p + 1);\n+               }\n+\n+               if (ABS(freq - fout) < prev) {\n+                   ppll->nsel = n;\n+                   ppll->psel = p + 1;\n+                   ppll->msel = m;\n+                   ppll->fout = fout;\n+                   ppll->fcco = fcco;\n+                   prev = ABS(freq - fout);\n+               }\n+           }\n+       }\n+   }\n+}\n+\n+static void pll_get_frac(uint32_t freq, PLL_PARAM_T *ppll)\n+{\n+   int diff[3];\n+   PLL_PARAM_T pll[3] = {{0},{0},{0}};\n+\n+   /* Try direct mode */\n+   pll[0].ctrl |= (1 << 7);\n+   pll[0].fin = ppll->fin;\n+   pll[0].srcin = ppll->srcin;\n+   pll_calc_divs(freq, &pll[0]);\n+   if (pll[0].fout == freq) {\n+       *ppll = pll[0];\n+       return ;\n+   }\n+   diff[0] = ABS(freq - pll[0].fout);\n+\n+   /* Try non-Integer mode */\n+   pll[2].ctrl = (1 << 6);\n+   pll[2].fin = ppll->fin;\n+   pll[2].srcin = ppll->srcin;\n+   pll_calc_divs(freq, &pll[2]);\n+   if (pll[2].fout == freq) {\n+       *ppll = pll[2];\n+       return ;\n+   }\n+\n+   diff[2] = ABS(freq - pll[2].fout);\n+   /* Try integer mode */\n+   pll[1].ctrl = (1 << 6);\n+   pll[1].fin = ppll->fin;\n+   pll[1].srcin = ppll->srcin;\n+   pll_calc_divs(freq, &pll[1]);\n+   if (pll[1].fout == freq) {\n+       *ppll = pll[1];\n+       return ;\n+   }\n+   diff[1] = ABS(freq - pll[1].fout);\n+\n+   /* Find the min of 3 and return */\n+   if (diff[0] <= diff[1]) {\n+       if (diff[0] <= diff[2]) {\n+           *ppll = pll[0];\n+       } else {\n+           *ppll = pll[2];\n+       }\n+   } else {\n+       if (diff[1] <= diff[2]) {\n+           *ppll = pll[1];\n+       } else {\n+           *ppll = pll[2];\n+       }\n+   }\n+}\n+\n+/* Test PLL input values for a specific frequency range */\n+static uint32_t Chip_Clock_TestMainPLLMultiplier(uint32_t InputHz, uint32_t TestMult, uint32_t MinHz, uint32_t MaxHz)\n+{\n+   uint32_t TestHz = TestMult * InputHz;\n+\n+   if ((TestHz < MinHz) || (TestHz > MAX_CLOCK_FREQ) || (TestHz > MaxHz)) {\n+       TestHz = 0;\n+   }\n+\n+   return TestHz;\n+}\n+\n+/* Returns clock rate out of a divider */\n+static uint32_t Chip_Clock_GetDivRate(CHIP_CGU_CLKIN_T clock, CHIP_CGU_IDIV_T divider)\n+{\n+   CHIP_CGU_CLKIN_T input;\n+   uint32_t div;\n+\n+   input = Chip_Clock_GetDividerSource(divider);\n+   div = Chip_Clock_GetDividerDivisor(divider);\n+   return Chip_Clock_GetClockInputHz(input) / (div + 1);\n+}\n+\n+/* Finds the base clock for the peripheral clock */\n+static CHIP_CGU_BASE_CLK_T Chip_Clock_FindBaseClock(CHIP_CCU_CLK_T clk)\n+{\n+   CHIP_CGU_BASE_CLK_T baseclk = CLK_BASE_NONE;\n+   int i = 0;\n+\n+   while ((baseclk == CLK_BASE_NONE) && (periph_to_base[i].clkbase != baseclk)) {\n+       if ((clk >= periph_to_base[i].clkstart) && (clk <= periph_to_base[i].clkend)) {\n+           baseclk = periph_to_base[i].clkbase;\n+       }\n+       else {\n+           i++;\n+       }\n+   }\n+\n+   return baseclk;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Enables the crystal oscillator */\n+void Chip_Clock_EnableCrystal(void)\n+{\n+   volatile uint32_t delay = 1000;\n+\n+   uint32_t OldCrystalConfig = LPC_CGU->XTAL_OSC_CTRL;\n+\n+   /* Clear bypass mode */\n+   OldCrystalConfig &= (~2);\n+   if (OldCrystalConfig != LPC_CGU->XTAL_OSC_CTRL) {\n+       LPC_CGU->XTAL_OSC_CTRL = OldCrystalConfig;\n+   }\n+\n+   /* Enable crystal oscillator */\n+   OldCrystalConfig &= (~1);\n+   if (OscRateIn >= 20000000) {\n+       OldCrystalConfig |= 4;  /* Set high frequency mode */\n+\n+   }\n+   LPC_CGU->XTAL_OSC_CTRL = OldCrystalConfig;\n+\n+   /* Delay for 250uSec */\n+   while(delay--) {}\n+}\n+\n+/* Calculate the Main PLL div values */\n+int Chip_Clock_CalcMainPLLValue(uint32_t freq, PLL_PARAM_T *ppll)\n+{\n+   ppll->fin = Chip_Clock_GetClockInputHz(ppll->srcin);\n+\n+   /* Do sanity check on frequency */\n+   if (freq > MAX_CLOCK_FREQ || freq < (PLL_MIN_CCO_FREQ / 16) || !ppll->fin) {\n+       return -1;\n+   }\n+\n+   ppll->ctrl = 1 << 7; /* Enable direct mode [If possible] */\n+   ppll->nsel = 0;\n+   ppll->psel = 0;\n+   ppll->msel = freq / ppll->fin;\n+\n+   if (freq < PLL_MIN_CCO_FREQ || ppll->msel * ppll->fin != freq) {\n+       pll_get_frac(freq, ppll);\n+       if (!ppll->nsel) {\n+           return -1;\n+       }\n+       ppll->nsel --;\n+   }\n+\n+   if (ppll->msel == 0) {\n+       return - 1;\n+   }\n+\n+   if (ppll->psel) {\n+       ppll->psel --;\n+   }\n+\n+   ppll->msel --;\n+\n+   return 0;\n+}\n+\n+/* Disables the crystal oscillator */\n+void Chip_Clock_DisableCrystal(void)\n+{\n+   /* Disable crystal oscillator */\n+   LPC_CGU->XTAL_OSC_CTRL |= 1;\n+}\n+\n+/* Configures the main PLL */\n+uint32_t Chip_Clock_SetupMainPLLHz(CHIP_CGU_CLKIN_T Input, uint32_t MinHz, uint32_t DesiredHz, uint32_t MaxHz)\n+{\n+   uint32_t freqin = Chip_Clock_GetClockInputHz(Input);\n+   uint32_t Mult, LastMult, MultEnd;\n+   uint32_t freqout, freqout2;\n+\n+   if (DesiredHz != 0xFFFFFFFF) {\n+       /* Test DesiredHz rounded down */\n+       Mult = DesiredHz / freqin;\n+       freqout = Chip_Clock_TestMainPLLMultiplier(freqin, Mult, MinHz, MaxHz);\n+\n+       /* Test DesiredHz rounded up */\n+       Mult++;\n+       freqout2 = Chip_Clock_TestMainPLLMultiplier(freqin, Mult, MinHz, MaxHz);\n+\n+       if (freqout && !freqout2) { /* rounding up is no good? set first multiplier */\n+           Mult--;\n+           return Chip_Clock_SetupMainPLLMult(Input, Mult);\n+       }\n+       if (!freqout && freqout2) { /* didn't work until rounded up? set 2nd multiplier */\n+           return Chip_Clock_SetupMainPLLMult(Input, Mult);\n+       }\n+\n+       if (freqout && freqout2) {  /* either multiplier okay? choose closer one */\n+           if ((DesiredHz - freqout) > (freqout2 - DesiredHz)) {\n+               Mult--;\n+               return Chip_Clock_SetupMainPLLMult(Input, Mult);\n+           }\n+           else {\n+               return Chip_Clock_SetupMainPLLMult(Input, Mult);\n+           }\n+       }\n+   }\n+\n+   /* Neither multiplier okay? Try to start at MinHz and increment.\n+      This should find the highest multiplier that is still good */\n+   Mult = MinHz / freqin;\n+   MultEnd = MaxHz / freqin;\n+   LastMult = 0;\n+   while (1) {\n+       freqout = Chip_Clock_TestMainPLLMultiplier(freqin, Mult, MinHz, MaxHz);\n+\n+       if (freqout) {\n+           LastMult = Mult;\n+       }\n+\n+       if (Mult >= MultEnd) {\n+           break;\n+       }\n+       Mult++;\n+   }\n+\n+   if (LastMult) {\n+       return Chip_Clock_SetupMainPLLMult(Input, LastMult);\n+   }\n+\n+   return 0;\n+}\n+\n+/* Directly set the PLL multipler */\n+uint32_t Chip_Clock_SetupMainPLLMult(CHIP_CGU_CLKIN_T Input, uint32_t mult)\n+{\n+   volatile uint32_t delay = 250;\n+   uint32_t freq = Chip_Clock_GetClockInputHz(Input);\n+   uint32_t msel = 0, nsel = 0, psel = 0, pval = 1;\n+   uint32_t PLLReg = LPC_CGU->PLL1_CTRL;\n+\n+   freq *= mult;\n+   msel = mult - 1;\n+\n+   PLLReg &= ~(0x1F << 24);/* clear input source bits */\n+   PLLReg |= Input << 24;  /* set input source bits to parameter */\n+\n+   /* Clear other PLL input bits */\n+   PLLReg &= ~((1 << 6) |  /* FBSEL */\n+               (1 << 1) |  /* BYPASS */\n+               (1 << 7) |  /* DIRECT */\n+               (0x03 << 8) | (0xFF << 16) | (0x03 << 12)); /* PSEL, MSEL, NSEL- divider ratios */\n+\n+   if (freq < 156000000) {\n+       /* psel is encoded such that 0=1, 1=2, 2=4, 3=8 */\n+       while ((2 * (pval) * freq) < 156000000) {\n+           psel++;\n+           pval *= 2;\n+       }\n+\n+       PLLReg |= (msel << 16) | (nsel << 12) | (psel << 8) | (1 << 6); /* dividers + FBSEL */\n+   }\n+   else if (freq < 320000000) {\n+       PLLReg |= (msel << 16) | (nsel << 12) | (psel << 8) | (1 << 7) | (1 << 6);  /* dividers + DIRECT + FBSEL */\n+   }\n+   else {\n+       Chip_Clock_DisableMainPLL();\n+       return 0;\n+   }\n+   LPC_CGU->PLL1_CTRL = PLLReg & ~(1 << 0);\n+\n+   /* Wait for 50uSec */\n+   while(delay--) {}\n+\n+   return freq;\n+}\n+\n+/* Returns the frequency of the main PLL */\n+uint32_t Chip_Clock_GetMainPLLHz(void)\n+{\n+   uint32_t PLLReg = LPC_CGU->PLL1_CTRL;\n+   uint32_t freq = Chip_Clock_GetClockInputHz((CHIP_CGU_CLKIN_T) ((PLLReg >> 24) & 0xF));\n+   uint32_t msel, nsel, psel, direct, fbsel;\n+   uint32_t m, n, p;\n+   const uint8_t ptab[] = {1, 2, 4, 8};\n+\n+   /* No lock? */\n+   if (!(LPC_CGU->PLL1_STAT & 1)) {\n+       return 0;\n+   }\n+\n+   msel = (PLLReg >> 16) & 0xFF;\n+   nsel = (PLLReg >> 12) & 0x3;\n+   psel = (PLLReg >> 8) & 0x3;\n+   direct = (PLLReg >> 7) & 0x1;\n+   fbsel = (PLLReg >> 6) & 0x1;\n+\n+   m = msel + 1;\n+   n = nsel + 1;\n+   p = ptab[psel];\n+\n+   if (direct || fbsel) {\n+       return m * (freq / n);\n+   }\n+\n+   return (m / (2 * p)) * (freq / n);\n+}\n+\n+/* Sets up a CGU clock divider and it's input clock */\n+void Chip_Clock_SetDivider(CHIP_CGU_IDIV_T Divider, CHIP_CGU_CLKIN_T Input, uint32_t Divisor)\n+{\n+   uint32_t reg = LPC_CGU->IDIV_CTRL[Divider];\n+\n+   Divisor--;\n+\n+   if (Input != CLKINPUT_PD) {\n+       /* Mask off bits that need to changes */\n+       reg &= ~((0x1F << 24) | 1 | (CHIP_CGU_IDIV_MASK(Divider) << 2));\n+\n+       /* Enable autoblocking, clear PD, and set clock source & divisor */\n+       LPC_CGU->IDIV_CTRL[Divider] = reg | (1 << 11) | (Input << 24) | (Divisor << 2);\n+   }\n+   else {\n+       LPC_CGU->IDIV_CTRL[Divider] = reg | 1;  /* Power down this divider */\n+   }\n+}\n+\n+/* Gets a CGU clock divider source */\n+CHIP_CGU_CLKIN_T Chip_Clock_GetDividerSource(CHIP_CGU_IDIV_T Divider)\n+{\n+   uint32_t reg = LPC_CGU->IDIV_CTRL[Divider];\n+\n+   if (reg & 1) {  /* divider is powered down */\n+       return CLKINPUT_PD;\n+   }\n+\n+   return (CHIP_CGU_CLKIN_T) ((reg >> 24) & 0x1F);\n+}\n+\n+/* Gets a CGU clock divider divisor */\n+uint32_t Chip_Clock_GetDividerDivisor(CHIP_CGU_IDIV_T Divider)\n+{\n+   return (CHIP_CGU_CLKIN_T) ((LPC_CGU->IDIV_CTRL[Divider] >> 2) & CHIP_CGU_IDIV_MASK(Divider));\n+}\n+\n+/* Returns the frequency of the specified input clock source */\n+uint32_t Chip_Clock_GetClockInputHz(CHIP_CGU_CLKIN_T input)\n+{\n+   uint32_t rate = 0;\n+\n+   switch (input) {\n+   case CLKIN_32K:\n+       rate = CRYSTAL_32K_FREQ_IN;\n+       break;\n+\n+   case CLKIN_IRC:\n+       rate = CGU_IRC_FREQ;\n+       break;\n+\n+   case CLKIN_ENET_RX:\n+       if ((LPC_CREG->CREG6 & 0x07) != 0x4) {\n+           /* MII mode requires 25MHz clock */\n+           rate = 25000000;\n+       }\n+       break;\n+\n+   case CLKIN_ENET_TX:\n+       if ((LPC_CREG->CREG6 & 0x07) != 0x4) {\n+           rate = 25000000; /* MII uses 25 MHz */\n+       } else {\n+           rate = 50000000; /* RMII uses 50 MHz */\n+       }\n+       break;\n+\n+   case CLKIN_CLKIN:\n+       rate = ExtRateIn;\n+       break;\n+\n+   case CLKIN_CRYSTAL:\n+       rate = OscRateIn;\n+       break;\n+\n+   case CLKIN_USBPLL:\n+       rate = audio_usb_pll_freq[CGU_USB_PLL];\n+       break;\n+\n+   case CLKIN_AUDIOPLL:\n+       rate = audio_usb_pll_freq[CGU_AUDIO_PLL];\n+       break;\n+\n+   case CLKIN_MAINPLL:\n+       rate = Chip_Clock_GetMainPLLHz();\n+       break;\n+\n+   case CLKIN_IDIVA:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_A);\n+       break;\n+\n+   case CLKIN_IDIVB:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_B);\n+       break;\n+\n+   case CLKIN_IDIVC:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_C);\n+       break;\n+\n+   case CLKIN_IDIVD:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_D);\n+       break;\n+\n+   case CLKIN_IDIVE:\n+       rate = Chip_Clock_GetDivRate(input, CLK_IDIV_E);\n+       break;\n+\n+   case CLKINPUT_PD:\n+       rate = 0;\n+       break;\n+\n+   default:\n+       break;\n+   }\n+\n+   return rate;\n+}\n+\n+/* Returns the frequency of the specified base clock source */\n+uint32_t Chip_Clock_GetBaseClocktHz(CHIP_CGU_BASE_CLK_T clock)\n+{\n+   return Chip_Clock_GetClockInputHz(Chip_Clock_GetBaseClock(clock));\n+}\n+\n+/* Sets a CGU Base Clock clock source */\n+void Chip_Clock_SetBaseClock(CHIP_CGU_BASE_CLK_T BaseClock, CHIP_CGU_CLKIN_T Input, bool autoblocken, bool powerdn)\n+{\n+   uint32_t reg = LPC_CGU->BASE_CLK[BaseClock];\n+\n+   if (BaseClock < CLK_BASE_NONE) {\n+       if (Input != CLKINPUT_PD) {\n+           /* Mask off fields we plan to update */\n+           reg &= ~((0x1F << 24) | 1 | (1 << 11));\n+\n+           if (autoblocken) {\n+               reg |= (1 << 11);\n+           }\n+           if (powerdn) {\n+               reg |= (1 << 0);\n+           }\n+\n+           /* Set clock source */\n+           reg |= (Input << 24);\n+\n+           LPC_CGU->BASE_CLK[BaseClock] = reg;\n+       }\n+   }\n+   else {\n+       LPC_CGU->BASE_CLK[BaseClock] = reg | 1; /* Power down this base clock */\n+   }\n+}\n+\n+/* Reads CGU Base Clock clock source information */\n+void Chip_Clock_GetBaseClockOpts(CHIP_CGU_BASE_CLK_T BaseClock, CHIP_CGU_CLKIN_T *Input, bool *autoblocken,\n+                                bool *powerdn)\n+{\n+   uint32_t reg = LPC_CGU->BASE_CLK[BaseClock];\n+   CHIP_CGU_CLKIN_T ClkIn = (CHIP_CGU_CLKIN_T) ((reg  >> 24) & 0x1F );\n+\n+   if (BaseClock < CLK_BASE_NONE) {\n+       /* Get settings */\n+       *Input = ClkIn;\n+       *autoblocken = (reg & (1 << 11)) ? true : false;\n+       *powerdn = (reg & (1 << 0)) ? true : false;\n+   }\n+   else {\n+       *Input = CLKINPUT_PD;\n+       *powerdn = true;\n+       *autoblocken = true;\n+   }\n+}\n+\n+/*Enables a base clock source */\n+void Chip_Clock_EnableBaseClock(CHIP_CGU_BASE_CLK_T BaseClock)\n+{\n+   if (BaseClock < CLK_BASE_NONE) {\n+       LPC_CGU->BASE_CLK[BaseClock] &= ~1;\n+   }\n+}\n+\n+/* Disables a base clock source */\n+void Chip_Clock_DisableBaseClock(CHIP_CGU_BASE_CLK_T BaseClock)\n+{\n+   if (BaseClock < CLK_BASE_NONE) {\n+       LPC_CGU->BASE_CLK[BaseClock] |= 1;\n+   }\n+}\n+\n+/* Returns base clock enable state */\n+bool Chip_Clock_IsBaseClockEnabled(CHIP_CGU_BASE_CLK_T BaseClock)\n+{\n+   bool enabled;\n+\n+   if (BaseClock < CLK_BASE_NONE) {\n+       enabled = (bool) ((LPC_CGU->BASE_CLK[BaseClock] & 1) == 0);\n+   }\n+   else {\n+       enabled = false;\n+   }\n+\n+   return enabled;\n+}\n+\n+/* Gets a CGU Base Clock clock source */\n+CHIP_CGU_CLKIN_T Chip_Clock_GetBaseClock(CHIP_CGU_BASE_CLK_T BaseClock)\n+{\n+   uint32_t reg;\n+\n+   if (BaseClock >= CLK_BASE_NONE) {\n+       return CLKINPUT_PD;\n+   }\n+\n+   reg = LPC_CGU->BASE_CLK[BaseClock];\n+\n+   /* base clock is powered down? */\n+   if (reg & 1) {\n+       return CLKINPUT_PD;\n+   }\n+\n+   return (CHIP_CGU_CLKIN_T) ((reg >> 24) & 0x1F);\n+}\n+\n+/* Enables a peripheral clock and sets clock states */\n+void Chip_Clock_EnableOpts(CHIP_CCU_CLK_T clk, bool autoen, bool wakeupen, int div)\n+{\n+   uint32_t reg = 1;\n+\n+   if (autoen) {\n+       reg |= (1 << 1);\n+   }\n+   if (wakeupen) {\n+       reg |= (1 << 2);\n+   }\n+\n+   /* Not all clocks support a divider, but we won't check that here. Only\n+      dividers of 1 and 2 are allowed. Assume 1 if not 2 */\n+   if (div == 2) {\n+       reg |= (1 << 5);\n+   }\n+\n+   /* Setup peripheral clock and start running */\n+   if (clk >= CLK_CCU2_START) {\n+       LPC_CCU2->CLKCCU[clk - CLK_CCU2_START].CFG = reg;\n+   }\n+   else {\n+       LPC_CCU1->CLKCCU[clk].CFG = reg;\n+   }\n+}\n+\n+/* Enables a peripheral clock */\n+void Chip_Clock_Enable(CHIP_CCU_CLK_T clk)\n+{\n+   /* Start peripheral clock running */\n+   if (clk >= CLK_CCU2_START) {\n+       LPC_CCU2->CLKCCU[clk - CLK_CCU2_START].CFG |= 1;\n+   }\n+   else {\n+       LPC_CCU1->CLKCCU[clk].CFG |= 1;\n+   }\n+}\n+\n+/* Enable RTC Clock */\n+void Chip_Clock_RTCEnable(void)\n+{\n+   LPC_CREG->CREG0 &= ~((1 << 3) | (1 << 2));  /* Reset 32Khz oscillator */\n+   LPC_CREG->CREG0 |= (1 << 1) | (1 << 0); /* Enable 32 kHz & 1 kHz on osc32k and release reset */\n+}\n+\n+/* Disables a peripheral clock */\n+void Chip_Clock_Disable(CHIP_CCU_CLK_T clk)\n+{\n+   /* Stop peripheral clock */\n+   if (clk >= CLK_CCU2_START) {\n+       LPC_CCU2->CLKCCU[clk - CLK_CCU2_START].CFG &= ~1;\n+   }\n+   else {\n+       LPC_CCU1->CLKCCU[clk].CFG &= ~1;\n+   }\n+}\n+\n+/**\n+ * Disable all branch output clocks with wake up mechanism enabled.\n+ * Only the clocks with wake up mechanism enabled will be disabled &\n+ * power down sequence started\n+ */\n+void Chip_Clock_StartPowerDown(void)\n+{\n+   /* Set Power Down bit */\n+   LPC_CCU1->PM = 1;\n+   LPC_CCU2->PM = 1;\n+}\n+\n+/**\n+ * Enable all branch output clocks after the wake up event.\n+ * Only the clocks with wake up mechanism enabled will be enabled\n+ */\n+void Chip_Clock_ClearPowerDown(void)\n+{\n+   /* Clear Power Down bit */\n+   LPC_CCU1->PM = 0;\n+   LPC_CCU2->PM = 0;\n+}\n+\n+/* Returns a peripheral clock rate */\n+uint32_t Chip_Clock_GetRate(CHIP_CCU_CLK_T clk)\n+{\n+   CHIP_CGU_BASE_CLK_T baseclk;\n+   uint32_t reg, div, rate;\n+\n+   /* Get CCU config register for clock */\n+   if (clk >= CLK_CCU2_START) {\n+       reg = LPC_CCU2->CLKCCU[clk - CLK_CCU2_START].CFG;\n+   }\n+   else {\n+       reg = LPC_CCU1->CLKCCU[clk].CFG;\n+   }\n+\n+   /* Is the clock enabled? */\n+   if (reg & 1) {\n+       /* Get base clock for this peripheral clock */\n+       baseclk = Chip_Clock_FindBaseClock(clk);\n+\n+       /* Get base clock rate */\n+       rate = Chip_Clock_GetBaseClocktHz(baseclk);\n+\n+       /* Get divider for this clock */\n+       if (((reg >> 5) & 0x7) == 0) {\n+           div = 1;\n+       }\n+       else {\n+           div = 2;/* No other dividers supported */\n+\n+       }\n+       rate = rate / div;\n+   }\n+   else {\n+       rate = 0;\n+   }\n+\n+   return rate;\n+}\n+\n+/* Get EMC Clock Rate */\n+uint32_t Chip_Clock_GetEMCRate(void)\n+\n+{\n+   uint32_t ClkFreq;\n+   uint32_t EMCDiv;\n+   ClkFreq = Chip_Clock_GetRate(CLK_MX_EMC);\n+\n+   /* EMC Divider readback at pos 27\n+       TODO: just checked but dont mention in UM */\n+   EMCDiv = (LPC_CCU1->CLKCCU[CLK_MX_EMC_DIV].CFG >> 27) & 0x07;\n+\n+   /* Check EMC Divider to get real EMC clock out */\n+   if ((EMCDiv == 1) && (LPC_CREG->CREG6 & (1 << 16))) {\n+       ClkFreq >>= 1;\n+   }\n+   return ClkFreq;\n+}\n+\n+/* Sets up the audio or USB PLL */\n+void Chip_Clock_SetupPLL(CHIP_CGU_CLKIN_T Input, CHIP_CGU_USB_AUDIO_PLL_T pllnum,\n+                        const CGU_USBAUDIO_PLL_SETUP_T *pPLLSetup)\n+{\n+   uint32_t reg = pPLLSetup->ctrl | (Input << 24);\n+\n+   /* Setup from passed values */\n+   LPC_CGU->PLL[pllnum].PLL_CTRL = reg;\n+   LPC_CGU->PLL[pllnum].PLL_MDIV = pPLLSetup->mdiv;\n+   LPC_CGU->PLL[pllnum].PLL_NP_DIV = pPLLSetup->ndiv;\n+\n+   /* Fractional divider is for audio PLL only */\n+   if (pllnum == CGU_AUDIO_PLL) {\n+       LPC_CGU->PLL0AUDIO_FRAC = pPLLSetup->fract;\n+   }\n+   audio_usb_pll_freq[pllnum] = pPLLSetup->freq;\n+}\n+\n+/* Enables the audio or USB PLL */\n+void Chip_Clock_EnablePLL(CHIP_CGU_USB_AUDIO_PLL_T pllnum)\n+{\n+   LPC_CGU->PLL[pllnum].PLL_CTRL &= ~1;\n+}\n+\n+/* Disables the audio or USB PLL */\n+void Chip_Clock_DisablePLL(CHIP_CGU_USB_AUDIO_PLL_T pllnum)\n+{\n+   LPC_CGU->PLL[pllnum].PLL_CTRL |= 1;\n+}\n+\n+/* Returns the PLL status */\n+uint32_t Chip_Clock_GetPLLStatus(CHIP_CGU_USB_AUDIO_PLL_T pllnum)\n+{\n+   return LPC_CGU->PLL[pllnum].PLL_STAT;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/dac_18xx_43xx.c ./lpc_chip_43xx/src/dac_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/dac_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/dac_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,85 @@\n+/*\n+ * @brief LPC18xx/43xx D/A conversion driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the DAC peripheral */\n+void Chip_DAC_Init(LPC_DAC_T *pDAC)\n+{\n+   Chip_Clock_EnableOpts(CLK_APB3_DAC, true, true, 1);\n+\n+   /* Set maximum update rate 1MHz */\n+   Chip_DAC_SetBias(pDAC, DAC_MAX_UPDATE_RATE_1MHz);\n+}\n+\n+/* Shutdown DAC peripheral */\n+void Chip_DAC_DeInit(LPC_DAC_T *pDAC)\n+{\n+   Chip_Clock_Disable(CLK_APB3_DAC);\n+}\n+\n+/* Update value to DAC buffer*/\n+void Chip_DAC_UpdateValue(LPC_DAC_T *pDAC, uint32_t dac_value)\n+{\n+   uint32_t tmp;\n+\n+   tmp = pDAC->CR & DAC_BIAS_EN;\n+   tmp |= DAC_VALUE(dac_value);\n+   /* Update value */\n+   pDAC->CR = tmp;\n+}\n+\n+/* Set Maximum update rate for DAC */\n+void Chip_DAC_SetBias(LPC_DAC_T *pDAC, uint32_t bias)\n+{\n+   pDAC->CR &= ~DAC_BIAS_EN;\n+\n+   if (bias  == DAC_MAX_UPDATE_RATE_400kHz) {\n+       pDAC->CR |= DAC_BIAS_EN;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/eeprom_18xx_43xx.c ./lpc_chip_43xx/src/eeprom_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/eeprom_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/eeprom_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,100 @@\n+/*\n+ * @brief LPC18xx/43xx EEPROM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Setup EEPROM clock */\n+STATIC void setClkDiv(LPC_EEPROM_T *pEEPROM)\n+{\n+   uint32_t clk;\n+\n+   /* Setup EEPROM timing to 375KHz based on PCLK rate */\n+   clk = Chip_Clock_GetRate(CLK_MX_EEPROM);\n+\n+   /* Set EEPROM clock divide value*/\n+   pEEPROM->CLKDIV = clk / EEPROM_CLOCK_DIV - 1;\n+}\n+\n+/* Setup EEPROM clock */\n+STATIC INLINE void setWaitState(LPC_EEPROM_T *pEEPROM)\n+{\n+   /* Setup EEPROM wait states*/\n+   Chip_EEPROM_SetReadWaitState(pEEPROM, EEPROM_READ_WAIT_STATE_VAL);\n+   Chip_EEPROM_SetWaitState(pEEPROM, EEPROM_WAIT_STATE_VAL);\n+\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the EEPROM peripheral with specified parameter */\n+void Chip_EEPROM_Init(LPC_EEPROM_T *pEEPROM)\n+{\n+   /* Disable EEPROM power down mode */\n+   Chip_EEPROM_DisablePowerDown(pEEPROM);\n+   setClkDiv(pEEPROM);\n+   setWaitState(pEEPROM);\n+}\n+\n+/* Write data from page register to non-volatile memory */\n+void Chip_EEPROM_EraseProgramPage(LPC_EEPROM_T *pEEPROM)\n+{\n+   Chip_EEPROM_ClearIntStatus(pEEPROM, EEPROM_CMD_ERASE_PRG_PAGE);\n+   Chip_EEPROM_SetCmd(pEEPROM, EEPROM_CMD_ERASE_PRG_PAGE);\n+   Chip_EEPROM_WaitForIntStatus(pEEPROM, EEPROM_INT_ENDOFPROG);\n+}\n+\n+/* Wait for interrupt */\n+void Chip_EEPROM_WaitForIntStatus(LPC_EEPROM_T *pEEPROM, uint32_t mask)\n+{\n+   uint32_t status;\n+   while (1) {\n+       status = Chip_EEPROM_GetIntStatus(pEEPROM);\n+       if ((status & mask) == mask) {\n+           break;\n+       }\n+   }\n+   Chip_EEPROM_ClearIntStatus(pEEPROM, mask);\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/emc_18xx_43xx.c ./lpc_chip_43xx/src/emc_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/emc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/emc_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,289 @@\n+/*\n+ * @brief LPC18xx/43xx EMC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* DIV function with result rounded up */\n+#define EMC_DIV_ROUND_UP(x, y)  ((x + y - 1) / y)\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+#ifndef EMC_SUPPORT_ONLY_PL172\n+/* Get ARM External Memory Controller Version */\n+STATIC uint32_t getARMPeripheralID(void)\n+{\n+   uint32_t *RegAdd;\n+   RegAdd = (uint32_t *) ((uint32_t) LPC_EMC + 0xFE0);\n+   return (RegAdd[0] & 0xFF) | ((RegAdd[1] & 0xFF) << 8) |\n+          ((RegAdd[2] & 0xFF) << 16) | (RegAdd[3] << 24);\n+}\n+\n+#endif\n+\n+/* Calculate Clock Count from Timing Unit(nanoseconds) */\n+STATIC uint32_t convertTimmingParam(uint32_t EMC_Clock, int32_t input_ns, uint32_t adjust)\n+{\n+   uint32_t temp;\n+   if (input_ns < 0) {\n+       return (-input_ns) >> 8;\n+   }\n+   temp = EMC_Clock / 1000000;     /* MHz calculation */\n+   temp = temp * input_ns / 1000;\n+\n+   /* round up */\n+   temp += 0xFF;\n+\n+   /* convert to simple integer number format */\n+   temp >>= 8;\n+   if (temp > adjust) {\n+       return temp - adjust;\n+   }\n+\n+   return 0;\n+}\n+\n+/* Get Dynamic Memory Device Colum len */\n+STATIC uint32_t getColsLen(uint32_t DynConfig)\n+{\n+   uint32_t DevBusWidth;\n+   DevBusWidth = (DynConfig >> EMC_DYN_CONFIG_DEV_BUS_BIT) & 0x03;\n+   if (DevBusWidth == 2) {\n+       return 8;\n+   }\n+   else if (DevBusWidth == 1) {\n+       return ((DynConfig >> (EMC_DYN_CONFIG_DEV_SIZE_BIT + 1)) & 0x03) + 8;\n+   }\n+   else if (DevBusWidth == 0) {\n+       return ((DynConfig >> (EMC_DYN_CONFIG_DEV_SIZE_BIT + 1)) & 0x03) + 9;\n+   }\n+\n+   return 0;\n+}\n+\n+/* Initializes the Dynamic Controller according to the specified parameters\n+   in the IP_EMC_DYN_CONFIG_T */\n+void initDynMem(LPC_EMC_T *pEMC, IP_EMC_DYN_CONFIG_T *Dynamic_Config, uint32_t EMC_Clock)\n+{\n+   uint32_t ChipSelect, tmpclk;\n+   volatile int i;\n+\n+   for (ChipSelect = 0; ChipSelect < 4; ChipSelect++) {\n+       LPC_EMC_T *EMC_Reg_add = (LPC_EMC_T *) ((uint32_t) pEMC + (ChipSelect << 5));\n+\n+       EMC_Reg_add->DYNAMICRASCAS0    = Dynamic_Config->DevConfig[ChipSelect].RAS |\n+                                        ((Dynamic_Config->DevConfig[ChipSelect].ModeRegister <<\n+                                          (8 - EMC_DYN_MODE_CAS_BIT)) & 0xF00);\n+       EMC_Reg_add->DYNAMICCONFIG0    = Dynamic_Config->DevConfig[ChipSelect].DynConfig;\n+   }\n+   pEMC->DYNAMICREADCONFIG = Dynamic_Config->ReadConfig;   /* Read strategy */\n+\n+   pEMC->DYNAMICRP         = convertTimmingParam(EMC_Clock, Dynamic_Config->tRP, 1);\n+   pEMC->DYNAMICRAS        = convertTimmingParam(EMC_Clock, Dynamic_Config->tRAS, 1);\n+   pEMC->DYNAMICSREX       = convertTimmingParam(EMC_Clock, Dynamic_Config->tSREX, 1);\n+   pEMC->DYNAMICAPR        = convertTimmingParam(EMC_Clock, Dynamic_Config->tAPR, 1);\n+   pEMC->DYNAMICDAL        = convertTimmingParam(EMC_Clock, Dynamic_Config->tDAL, 0);\n+   pEMC->DYNAMICWR         = convertTimmingParam(EMC_Clock, Dynamic_Config->tWR, 1);\n+   pEMC->DYNAMICRC         = convertTimmingParam(EMC_Clock, Dynamic_Config->tRC, 1);\n+   pEMC->DYNAMICRFC        = convertTimmingParam(EMC_Clock, Dynamic_Config->tRFC, 1);\n+   pEMC->DYNAMICXSR        = convertTimmingParam(EMC_Clock, Dynamic_Config->tXSR, 1);\n+   pEMC->DYNAMICRRD        = convertTimmingParam(EMC_Clock, Dynamic_Config->tRRD, 1);\n+   pEMC->DYNAMICMRD        = convertTimmingParam(EMC_Clock, Dynamic_Config->tMRD, 1);\n+\n+   for (i = 0; i < 1000; i++) {    /* wait 100us */\n+   }\n+   pEMC->DYNAMICCONTROL    = 0x00000183;   /* Issue NOP command */\n+\n+   for (i = 0; i < 1000; i++) {}\n+   pEMC->DYNAMICCONTROL    = 0x00000103;   /* Issue PALL command */\n+\n+   pEMC->DYNAMICREFRESH = 2;   /* ( 2 * 16 ) -> 32 clock cycles */\n+\n+   for (i = 0; i < 80; i++) {}\n+\n+   tmpclk = EMC_DIV_ROUND_UP(convertTimmingParam(EMC_Clock, Dynamic_Config->RefreshPeriod, 0), 16);\n+   pEMC->DYNAMICREFRESH    = tmpclk;\n+\n+   pEMC->DYNAMICCONTROL    = 0x00000083;   /* Issue MODE command */\n+\n+   for (ChipSelect = 0; ChipSelect < 4; ChipSelect++) {\n+       /*uint32_t burst_length;*/\n+       uint32_t DynAddr;\n+       uint8_t Col_len;\n+\n+       Col_len = getColsLen(Dynamic_Config->DevConfig[ChipSelect].DynConfig);\n+       /* get bus wide: if 32bit, len is 4 else if 16bit len is 2 */\n+       /* burst_length = 1 << ((((Dynamic_Config->DynConfig[ChipSelect] >> 14) & 1)^1) +1); */\n+       if (Dynamic_Config->DevConfig[ChipSelect].DynConfig & (1 << EMC_DYN_CONFIG_DATA_BUS_WIDTH_BIT)) {\n+           /*32bit bus */\n+           /*burst_length = 2;*/\n+           Col_len += 2;\n+       }\n+       else {\n+           /*burst_length = 4;*/\n+           Col_len += 1;\n+       }\n+\n+       /* Check for RBC mode */\n+       if (!(Dynamic_Config->DevConfig[ChipSelect].DynConfig & EMC_DYN_CONFIG_LPSDRAM)) {\n+           if (!(Dynamic_Config->DevConfig[ChipSelect].DynConfig & (0x7 << EMC_DYN_CONFIG_DEV_SIZE_BIT))) {\n+               /* 2 banks => 1 bank select bit */\n+               Col_len += 1;\n+           }\n+           else {\n+               /* 4 banks => 2 bank select bits */\n+               Col_len += 2;\n+           }\n+       }\n+\n+       DynAddr = Dynamic_Config->DevConfig[ChipSelect].BaseAddr;\n+\n+\n+       if (DynAddr != 0) {\n+           uint32_t temp;\n+           uint32_t ModeRegister;\n+           ModeRegister = Dynamic_Config->DevConfig[ChipSelect].ModeRegister;\n+           temp = *((volatile uint32_t *) (DynAddr | (ModeRegister << Col_len)));\n+           temp = temp;\n+       }\n+   }\n+   pEMC->DYNAMICCONTROL    = 0x00000000;   /* Issue NORMAL command */\n+\n+   /* enable buffers */\n+   pEMC->DYNAMICCONFIG0    |= 1 << 19;\n+   pEMC->DYNAMICCONFIG1    |= 1 << 19;\n+   pEMC->DYNAMICCONFIG2    |= 1 << 19;\n+   pEMC->DYNAMICCONFIG3    |= 1 << 19;\n+}\n+\n+/* Initializes the Static Controller according to the specified parameters\n+ * in the IP_EMC_STATIC_CONFIG_T\n+ */\n+void initStaticMem(LPC_EMC_T *pEMC, IP_EMC_STATIC_CONFIG_T *Static_Config, uint32_t EMC_Clock)\n+{\n+   LPC_EMC_T *EMC_Reg_add = (LPC_EMC_T *) ((uint32_t) pEMC + ((Static_Config->ChipSelect) << 5));\n+   EMC_Reg_add->STATICCONFIG0      = Static_Config->Config;\n+   EMC_Reg_add->STATICWAITWEN0     = convertTimmingParam(EMC_Clock, Static_Config->WaitWen, 1);\n+   EMC_Reg_add->STATICWAITOEN0     = convertTimmingParam(EMC_Clock, Static_Config->WaitOen, 0);\n+   EMC_Reg_add->STATICWAITRD0      = convertTimmingParam(EMC_Clock, Static_Config->WaitRd, 1);\n+   EMC_Reg_add->STATICWAITPAG0     = convertTimmingParam(EMC_Clock, Static_Config->WaitPage, 1);\n+   EMC_Reg_add->STATICWAITWR0      = convertTimmingParam(EMC_Clock, Static_Config->WaitWr, 2);\n+   EMC_Reg_add->STATICWAITTURN0    = convertTimmingParam(EMC_Clock, Static_Config->WaitTurn, 1);\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Dyanmic memory setup */\n+void Chip_EMC_Dynamic_Init(IP_EMC_DYN_CONFIG_T *Dynamic_Config)\n+{\n+   uint32_t ClkFreq;\n+\n+   /* Note clocks must be enabled prior to this call */\n+   ClkFreq = Chip_Clock_GetEMCRate();\n+\n+   initDynMem(LPC_EMC, Dynamic_Config, ClkFreq);\n+}\n+\n+/* Enable Dynamic Memory Controller */\n+void Chip_EMC_Dynamic_Enable(uint8_t Enable)\n+{\n+   if (Enable) {\n+       LPC_EMC->DYNAMICCONTROL |= EMC_DYN_CONTROL_ENABLE;\n+   }\n+   else {\n+       LPC_EMC->DYNAMICCONTROL &= ~EMC_DYN_CONTROL_ENABLE;\n+   }\n+}\n+\n+/* Static memory setup */\n+void Chip_EMC_Static_Init(IP_EMC_STATIC_CONFIG_T *Static_Config)\n+{\n+   uint32_t ClkFreq;\n+\n+   /* Note clocks must be enabled prior to this call */\n+   ClkFreq = Chip_Clock_GetEMCRate();\n+\n+   initStaticMem(LPC_EMC, Static_Config, ClkFreq);\n+}\n+\n+/* Mirror CS1 to CS0 and DYCS0 */\n+void Chip_EMC_Mirror(uint8_t Enable)\n+{\n+   if (Enable) {\n+       LPC_EMC->CONTROL |= 1 << 1;\n+   }\n+   else {\n+       LPC_EMC->CONTROL &= ~(1 << 1);\n+   }\n+}\n+\n+/* Enable EMC */\n+void Chip_EMC_Enable(uint8_t Enable)\n+{\n+   if (Enable) {\n+       LPC_EMC->CONTROL |= 1;\n+   }\n+   else {\n+       LPC_EMC->CONTROL &= ~(1);\n+   }\n+}\n+\n+/* Set EMC LowPower Mode */\n+void Chip_EMC_LowPowerMode(uint8_t Enable)\n+{\n+   if (Enable) {\n+       LPC_EMC->CONTROL |= 1 << 2;\n+   }\n+   else {\n+       LPC_EMC->CONTROL &= ~(1 << 2);\n+   }\n+}\n+\n+/* Initialize EMC */\n+void Chip_EMC_Init(uint32_t Enable, uint32_t ClockRatio, uint32_t EndianMode)\n+{\n+   LPC_EMC->CONFIG    = (EndianMode ? 1 : 0) | ((ClockRatio ? 1 : 0) << 8);\n+\n+   /* Enable EMC 001 Normal Memory Map, No low power mode */\n+   LPC_EMC->CONTROL     = (Enable ? 1 : 0);\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/enet_18xx_43xx.c ./lpc_chip_43xx/src/enet_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/enet_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/enet_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,182 @@\n+/*\n+ * @brief LPC18xx/43xx Ethernet driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Saved address for PHY and clock divider */\n+STATIC uint32_t phyCfg;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+STATIC INLINE void reset(LPC_ENET_T *pENET)\n+{\n+    Chip_RGU_TriggerReset(RGU_ETHERNET_RST);\n+   while (Chip_RGU_InReset(RGU_ETHERNET_RST))\n+    {}\n+\n+   /* Reset ethernet peripheral */\n+   Chip_ENET_Reset(pENET);\n+}\n+\n+STATIC uint32_t Chip_ENET_CalcMDCClock(void)\n+{\n+   uint32_t val = SystemCoreClock / 1000000UL;\n+\n+   if (val >= 20 && val < 35)\n+       return 2;\n+   if (val >= 35 && val < 60)\n+       return 3;\n+   if (val >= 60 && val < 100)\n+       return 0;\n+   if (val >= 100 && val < 150)\n+       return 1;\n+   if (val >= 150 && val < 250)\n+       return 4;\n+   if (val >= 250 && val < 300)\n+       return 5;\n+\n+   /* Code should never reach here\n+      unless there is BUG in frequency settings\n+   */\n+   return 0;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Basic Ethernet interface initialization */\n+void Chip_ENET_Init(LPC_ENET_T *pENET, uint32_t phyAddr)\n+{\n+   Chip_Clock_EnableOpts(CLK_MX_ETHERNET, true, true, 1);\n+\n+   reset(pENET);\n+\n+   /* Setup MII link divider to /102 and PHY address 1 */\n+   Chip_ENET_SetupMII(pENET, Chip_ENET_CalcMDCClock(), phyAddr);\n+\n+   /* Enhanced descriptors, burst length = 1 */\n+   pENET->DMA_BUS_MODE = DMA_BM_ATDS | DMA_BM_PBL(1) | DMA_BM_RPBL(1);\n+\n+   /* Initial MAC configuration for checksum offload, full duplex,\n+      100Mbps, disable receive own in half duplex, inter-frame gap\n+      of 64-bits */\n+   pENET->MAC_CONFIG = MAC_CFG_BL(0) | MAC_CFG_IPC | MAC_CFG_DM |\n+                       MAC_CFG_DO | MAC_CFG_FES | MAC_CFG_PS | MAC_CFG_IFG(3);\n+\n+   /* Setup default filter */\n+   pENET->MAC_FRAME_FILTER = MAC_FF_PR | MAC_FF_RA;\n+\n+   /* Flush transmit FIFO */\n+   pENET->DMA_OP_MODE = DMA_OM_FTF;\n+\n+   /* Setup DMA to flush receive FIFOs at 32 bytes, service TX FIFOs at\n+      64 bytes */\n+   pENET->DMA_OP_MODE |= DMA_OM_RTC(1) | DMA_OM_TTC(0);\n+\n+   /* Clear all MAC interrupts */\n+   pENET->DMA_STAT = DMA_ST_ALL;\n+\n+   /* Enable MAC interrupts */\n+   pENET->DMA_INT_EN = 0;\n+}\n+\n+/* Ethernet interface shutdown */\n+void Chip_ENET_DeInit(LPC_ENET_T *pENET)\n+{\n+   /* Disable packet reception */\n+   pENET->MAC_CONFIG = 0;\n+\n+   /* Flush transmit FIFO */\n+   pENET->DMA_OP_MODE = DMA_OM_FTF;\n+\n+   /* Disable receive and transmit DMA processes */\n+   pENET->DMA_OP_MODE = 0;\n+\n+   Chip_Clock_Disable(CLK_MX_ETHERNET);\n+}\n+\n+/* Sets up the PHY link clock divider and PHY address */\n+void Chip_ENET_SetupMII(LPC_ENET_T *pENET, uint32_t div, uint8_t addr)\n+{\n+   /* Save clock divider and PHY address in MII address register */\n+   phyCfg = MAC_MIIA_PA(addr) | MAC_MIIA_CR(div);\n+}\n+\n+/* Starts a PHY write via the MII */\n+void Chip_ENET_StartMIIWrite(LPC_ENET_T *pENET, uint8_t reg, uint16_t data)\n+{\n+   /* Write value at PHY address and register */\n+   pENET->MAC_MII_ADDR = phyCfg | MAC_MIIA_GR(reg) | MAC_MIIA_W;\n+   pENET->MAC_MII_DATA = (uint32_t) data;\n+   pENET->MAC_MII_ADDR |= MAC_MIIA_GB;\n+}\n+\n+/*Starts a PHY read via the MII */\n+void Chip_ENET_StartMIIRead(LPC_ENET_T *pENET, uint8_t reg)\n+{\n+   /* Read value at PHY address and register */\n+   pENET->MAC_MII_ADDR = phyCfg | MAC_MIIA_GR(reg);\n+   pENET->MAC_MII_ADDR |= MAC_MIIA_GB;\n+}\n+\n+/* Sets full or half duplex for the interface */\n+void Chip_ENET_SetDuplex(LPC_ENET_T *pENET, bool full)\n+{\n+   if (full) {\n+       pENET->MAC_CONFIG |= MAC_CFG_DM;\n+   }\n+   else {\n+       pENET->MAC_CONFIG &= ~MAC_CFG_DM;\n+   }\n+}\n+\n+/* Sets speed for the interface */\n+void Chip_ENET_SetSpeed(LPC_ENET_T *pENET, bool speed100)\n+{\n+   if (speed100) {\n+       pENET->MAC_CONFIG |= MAC_CFG_FES;\n+   }\n+   else {\n+       pENET->MAC_CONFIG &= ~MAC_CFG_FES;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/evrt_18xx_43xx.c ./lpc_chip_43xx/src/evrt_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/evrt_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/evrt_18xx_43xx.c\t2017-02-27 21:03:17.044043463 -0300\n@@ -0,0 +1,111 @@\n+/*\n+ * @brief LPC18xx/43xx event router driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the EVRT */\n+void Chip_EVRT_Init(void)\n+{\n+   uint8_t i = 0;\n+   // Clear all register to be default\n+   LPC_EVRT->HILO      = 0x0000;\n+   LPC_EVRT->EDGE      = 0x0000;\n+   LPC_EVRT->CLR_EN    = 0xFFFF;\n+   do {\n+       i++;\n+       LPC_EVRT->CLR_STAT  = 0xFFFFF;\n+   } while ((LPC_EVRT->STATUS != 0) && (i < 10));\n+}\n+\n+/* Set up the type of interrupt type for a source to EVRT */\n+void Chip_EVRT_ConfigIntSrcActiveType(CHIP_EVRT_SRC_T EVRT_Src, CHIP_EVRT_SRC_ACTIVE_T type)\n+{\n+   switch (type) {\n+   case EVRT_SRC_ACTIVE_LOW_LEVEL:\n+       LPC_EVRT->HILO &= ~(1 << (uint8_t) EVRT_Src);\n+       LPC_EVRT->EDGE &= ~(1 << (uint8_t) EVRT_Src);\n+       break;\n+\n+   case EVRT_SRC_ACTIVE_HIGH_LEVEL:\n+       LPC_EVRT->HILO |= (1 << (uint8_t) EVRT_Src);\n+       LPC_EVRT->EDGE &= ~(1 << (uint8_t) EVRT_Src);\n+       break;\n+\n+   case EVRT_SRC_ACTIVE_FALLING_EDGE:\n+       LPC_EVRT->HILO &= ~(1 << (uint8_t) EVRT_Src);\n+       LPC_EVRT->EDGE |= (1 << (uint8_t) EVRT_Src);\n+       break;\n+\n+   case EVRT_SRC_ACTIVE_RISING_EDGE:\n+       LPC_EVRT->HILO |= (1 << (uint8_t) EVRT_Src);\n+       LPC_EVRT->EDGE |= (1 << (uint8_t) EVRT_Src);\n+       break;\n+\n+   default:\n+       break;\n+   }\n+}\n+\n+/* Enable or disable interrupt sources to EVRT */\n+void Chip_EVRT_SetUpIntSrc(CHIP_EVRT_SRC_T EVRT_Src, FunctionalState state)\n+{\n+   if (state == ENABLE) {\n+       LPC_EVRT->SET_EN = (1 << (uint8_t) EVRT_Src);\n+   }\n+   else {\n+       LPC_EVRT->CLR_EN = (1 << (uint8_t) EVRT_Src);\n+   }\n+}\n+\n+/* Check if a source is sending interrupt to EVRT */\n+IntStatus Chip_EVRT_IsSourceInterrupting(CHIP_EVRT_SRC_T EVRT_Src)\n+{\n+   if (LPC_EVRT->STATUS & (1 << (uint8_t) EVRT_Src)) {\n+       return SET;\n+   }\n+   else {return RESET; }\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/fpu_init.c ./lpc_chip_43xx/src/fpu_init.c\n--- a_OkB2vL/lpc_chip_43xx/src/fpu_init.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/fpu_init.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,97 @@\n+/*\n+ * @brief FPU init code\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#if defined(CORE_M4)\n+\n+#include \"sys_config.h\"\n+#include \"cmsis.h\"\n+#include \"stdint.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define LPC_CPACR           0xE000ED88\n+\n+#define SCB_MVFR0           0xE000EF40\n+#define SCB_MVFR0_RESET     0x10110021\n+\n+#define SCB_MVFR1           0xE000EF44\n+#define SCB_MVFR1_RESET     0x11000011\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Early initialization of the FPU */\n+void fpuInit(void)\n+{\n+#if __FPU_PRESENT != 0\n+   // from arm trm manual:\n+   //                ; CPACR is located at address 0xE000ED88\n+   //                LDR.W R0, =0xE000ED88\n+   //                ; Read CPACR\n+   //                LDR R1, [R0]\n+   //                ; Set bits 20-23 to enable CP10 and CP11 coprocessors\n+   //                ORR R1, R1, #(0xF << 20)\n+   //                ; Write back the modified value to the CPACR\n+   //                STR R1, [R0]\n+\n+   volatile uint32_t *regCpacr = (uint32_t *) LPC_CPACR;\n+   volatile uint32_t *regMvfr0 = (uint32_t *) SCB_MVFR0;\n+   volatile uint32_t *regMvfr1 = (uint32_t *) SCB_MVFR1;\n+   volatile uint32_t Cpacr;\n+   volatile uint32_t Mvfr0;\n+   volatile uint32_t Mvfr1;\n+   char vfpPresent = 0;\n+\n+   Mvfr0 = *regMvfr0;\n+   Mvfr1 = *regMvfr1;\n+\n+   vfpPresent = ((SCB_MVFR0_RESET == Mvfr0) && (SCB_MVFR1_RESET == Mvfr1));\n+\n+   if (vfpPresent) {\n+       Cpacr = *regCpacr;\n+       Cpacr |= (0xF << 20);\n+       *regCpacr = Cpacr;  // enable CP10 and CP11 for full access\n+   }\n+#endif /* __FPU_PRESENT != 0 */\n+}\n+\n+#endif /* defined(CORE_M4 */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/gpdma_18xx_43xx.c ./lpc_chip_43xx/src/gpdma_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/gpdma_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/gpdma_18xx_43xx.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,746 @@\n+/*\n+ * @brief LPC18xx/43xx GPDMA driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Channel array to monitor free channel */\n+static DMA_ChannelHandle_t ChannelHandlerArray[GPDMA_NUMBER_CHANNELS];\n+\n+/* Optimized Peripheral Source and Destination burst size (18xx,43xx) */\n+static const uint8_t GPDMA_LUTPerBurst[] = {\n+   GPDMA_BSIZE_4,  /* MEMORY             */\n+   GPDMA_BSIZE_1,  /* MAT0.0             */\n+   GPDMA_BSIZE_1,  /* UART0 Tx           */\n+   GPDMA_BSIZE_1,  /* MAT0.1             */\n+   GPDMA_BSIZE_1,  /* UART0 Rx           */\n+   GPDMA_BSIZE_1,  /* MAT1.0             */\n+   GPDMA_BSIZE_1,  /* UART1 Tx           */\n+   GPDMA_BSIZE_1,  /* MAT1.1             */\n+   GPDMA_BSIZE_1,  /* UART1 Rx           */\n+   GPDMA_BSIZE_1,  /* MAT2.0             */\n+   GPDMA_BSIZE_1,  /* UART2 Tx           */\n+   GPDMA_BSIZE_1,  /* MAT2.1             */\n+   GPDMA_BSIZE_1,  /* UART2 Rx           */\n+   GPDMA_BSIZE_1,  /* MAT3.0             */\n+   GPDMA_BSIZE_1,  /* UART3 Tx           */\n+   0,              /* SCT timer channel 0*/\n+   GPDMA_BSIZE_1,  /* MAT3.1             */\n+   GPDMA_BSIZE_1,  /* UART3 Rx           */\n+   0,              /* SCT timer channel 1*/\n+   GPDMA_BSIZE_4,  /* SSP0 Rx            */\n+   GPDMA_BSIZE_32, /* I2S channel 0      */\n+   GPDMA_BSIZE_4,  /* SSP0 Tx            */\n+   GPDMA_BSIZE_32, /* I2S channel 1      */\n+   GPDMA_BSIZE_4,  /* SSP1 Rx            */\n+   GPDMA_BSIZE_4,  /* SSP1 Tx            */\n+   GPDMA_BSIZE_4,  /* ADC 0              */\n+   GPDMA_BSIZE_4,  /* ADC 1              */\n+   GPDMA_BSIZE_1,  /* DAC                */\n+   GPDMA_BSIZE_32, /* I2S channel 0      */\n+   GPDMA_BSIZE_32  /* I2S channel 0      */\n+};\n+\n+/* Optimized Peripheral Source and Destination transfer width (18xx,43xx) */\n+static const uint8_t GPDMA_LUTPerWid[] = {\n+   GPDMA_WIDTH_WORD,   /* MEMORY             */\n+   GPDMA_WIDTH_WORD,   /* MAT0.0             */\n+   GPDMA_WIDTH_BYTE,   /* UART0 Tx           */\n+   GPDMA_WIDTH_WORD,   /* MAT0.1             */\n+   GPDMA_WIDTH_BYTE,   /* UART0 Rx           */\n+   GPDMA_WIDTH_WORD,   /* MAT1.0             */\n+   GPDMA_WIDTH_BYTE,   /* UART1 Tx           */\n+   GPDMA_WIDTH_WORD,   /* MAT1.1             */\n+   GPDMA_WIDTH_BYTE,   /* UART1 Rx           */\n+   GPDMA_WIDTH_WORD,   /* MAT2.0             */\n+   GPDMA_WIDTH_BYTE,   /* UART2 Tx           */\n+   GPDMA_WIDTH_WORD,   /* MAT2.1             */\n+   GPDMA_WIDTH_BYTE,   /* UART2 Rx           */\n+   GPDMA_WIDTH_WORD,   /* MAT3.0             */\n+   GPDMA_WIDTH_BYTE,   /* UART3 Tx           */\n+   0,                  /* SCT timer channel 0*/\n+   GPDMA_WIDTH_WORD,   /* MAT3.1             */\n+   GPDMA_WIDTH_BYTE,   /* UART3 Rx           */\n+   0,                  /* SCT timer channel 1*/\n+   GPDMA_WIDTH_BYTE,   /* SSP0 Rx            */\n+   GPDMA_WIDTH_WORD,   /* I2S channel 0      */\n+   GPDMA_WIDTH_BYTE,   /* SSP0 Tx            */\n+   GPDMA_WIDTH_WORD,   /* I2S channel 1      */\n+   GPDMA_WIDTH_BYTE,   /* SSP1 Rx            */\n+   GPDMA_WIDTH_BYTE,   /* SSP1 Tx            */\n+   GPDMA_WIDTH_WORD,   /* ADC 0              */\n+   GPDMA_WIDTH_WORD,   /* ADC 1              */\n+   GPDMA_WIDTH_WORD,   /* DAC                */\n+   GPDMA_WIDTH_WORD,   /* I2S channel 0      */\n+   GPDMA_WIDTH_WORD/* I2S channel 0      */\n+};\n+\n+/* Lookup Table of Connection Type matched with (18xx,43xx) Peripheral Data (FIFO) register base address */\n+volatile static const void *GPDMA_LUTPerAddr[] = {\n+   NULL,                           /* MEMORY             */\n+   (&LPC_TIMER0->MR),              /* MAT0.0             */\n+   (&LPC_USART0-> /*RBTHDLR.*/ THR),   /* UART0 Tx           */\n+   ((uint32_t *) &LPC_TIMER0->MR + 1), /* MAT0.1             */\n+   (&LPC_USART0-> /*RBTHDLR.*/ RBR),   /* UART0 Rx           */\n+   (&LPC_TIMER1->MR),              /* MAT1.0             */\n+   (&LPC_UART1-> /*RBTHDLR.*/ THR),/* UART1 Tx           */\n+   ((uint32_t *) &LPC_TIMER1->MR + 1), /* MAT1.1             */\n+   (&LPC_UART1-> /*RBTHDLR.*/ RBR),/* UART1 Rx           */\n+   (&LPC_TIMER2->MR),              /* MAT2.0             */\n+   (&LPC_USART2-> /*RBTHDLR.*/ THR),   /* UART2 Tx           */\n+   ((uint32_t *) &LPC_TIMER2->MR + 1), /* MAT2.1             */\n+   (&LPC_USART2-> /*RBTHDLR.*/ RBR),   /* UART2 Rx           */\n+   (&LPC_TIMER3->MR),              /* MAT3.0             */\n+   (&LPC_USART3-> /*RBTHDLR.*/ THR),   /* UART3 Tx           */\n+   0,                              /* SCT timer channel 0*/\n+   ((uint32_t *) &LPC_TIMER3->MR + 1), /* MAT3.1             */\n+   (&LPC_USART3-> /*RBTHDLR.*/ RBR),   /* UART3 Rx           */\n+   0,                              /* SCT timer channel 1*/\n+   (&LPC_SSP0->DR),                /* SSP0 Rx            */\n+   (&LPC_I2S0->TXFIFO),            /* I2S0 Tx on channel 0 */\n+   (&LPC_SSP0->DR),                /* SSP0 Tx            */\n+   (&LPC_I2S0->RXFIFO),            /* I2S0 Rx on channel 1  */\n+   (&LPC_SSP1->DR),                /* SSP1 Rx            */\n+   (&LPC_SSP1->DR),                /* SSP1 Tx            */\n+   (&LPC_ADC0->GDR),               /* ADC 0              */\n+   (&LPC_ADC1->GDR),               /* ADC 1              */\n+   (&LPC_DAC->CR),                 /* DAC                */\n+   (&LPC_I2S1->TXFIFO),            /* I2S1 Tx on channel 0 */\n+   (&LPC_I2S1->RXFIFO)             /* I2S1 Rx on channel 1 */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+/* Control which set of peripherals is connected to the DMA controller */\n+STATIC uint8_t configDMAMux(uint32_t gpdma_peripheral_connection_number)\n+{\n+   uint8_t function, channel;\n+\n+   switch (gpdma_peripheral_connection_number) {\n+   case GPDMA_CONN_MAT0_0:\n+       function = 0;\n+       channel = 1;\n+       break;\n+\n+   case GPDMA_CONN_UART0_Tx:\n+       function = 1;\n+       channel = 1;\n+       break;\n+\n+   case GPDMA_CONN_MAT0_1:\n+       function = 0;\n+       channel = 2;\n+       break;\n+\n+   case GPDMA_CONN_UART0_Rx:\n+       function = 1;\n+       channel = 2;\n+       break;\n+\n+   case GPDMA_CONN_MAT1_0:\n+       function = 0;\n+       channel = 3;\n+       break;\n+\n+   case GPDMA_CONN_UART1_Tx:\n+       function = 1;\n+       channel = 3;\n+       break;\n+\n+   case GPDMA_CONN_I2S1_Tx_Channel_0:\n+       function = 2;\n+       channel = 3;\n+       break;\n+\n+   case GPDMA_CONN_MAT1_1:\n+       function = 0;\n+       channel = 4;\n+       break;\n+\n+   case GPDMA_CONN_UART1_Rx:\n+       function = 1;\n+       channel = 4;\n+       break;\n+\n+   case GPDMA_CONN_I2S1_Rx_Channel_1:\n+       function = 2;\n+       channel =  4;\n+       break;\n+\n+   case GPDMA_CONN_MAT2_0:\n+       function = 0;\n+       channel = 5;\n+       break;\n+\n+   case GPDMA_CONN_UART2_Tx:\n+       function = 1;\n+       channel = 5;\n+       break;\n+\n+   case GPDMA_CONN_MAT2_1:\n+       function = 0;\n+       channel = 6;\n+       break;\n+\n+   case GPDMA_CONN_UART2_Rx:\n+       function = 1;\n+       channel = 6;\n+       break;\n+\n+   case GPDMA_CONN_MAT3_0:\n+       function = 0;\n+       channel = 7;\n+       break;\n+\n+   case GPDMA_CONN_UART3_Tx:\n+       function = 1;\n+       channel = 7;\n+       break;\n+\n+   case GPDMA_CONN_SCT_0:\n+       function = 2;\n+       channel = 7;\n+       break;\n+\n+   case GPDMA_CONN_MAT3_1:\n+       function = 0;\n+       channel = 8;\n+       break;\n+\n+   case GPDMA_CONN_UART3_Rx:\n+       function = 1;\n+       channel = 8;\n+       break;\n+\n+   case GPDMA_CONN_SCT_1:\n+       function = 2;\n+       channel = 8;\n+       break;\n+\n+   case GPDMA_CONN_SSP0_Rx:\n+       function = 0;\n+       channel = 9;\n+       break;\n+\n+   case GPDMA_CONN_I2S_Tx_Channel_0:\n+       function = 1;\n+       channel = 9;\n+       break;\n+\n+   case GPDMA_CONN_SSP0_Tx:\n+       function = 0;\n+       channel = 10;\n+       break;\n+\n+   case GPDMA_CONN_I2S_Rx_Channel_1:\n+       function = 1;\n+       channel = 10;\n+       break;\n+\n+   case GPDMA_CONN_SSP1_Rx:\n+       function = 0;\n+       channel = 11;\n+       break;\n+\n+   case GPDMA_CONN_SSP1_Tx:\n+       function = 0;\n+       channel = 12;\n+       break;\n+\n+   case GPDMA_CONN_ADC_0:\n+       function = 0;\n+       channel = 13;\n+       break;\n+\n+   case GPDMA_CONN_ADC_1:\n+       function = 0;\n+       channel = 14;\n+       break;\n+\n+   case GPDMA_CONN_DAC:\n+       function = 0;\n+       channel = 15;\n+       break;\n+\n+   default:\n+       function = 3;\n+       channel = 15;\n+       break;\n+   }\n+   /* Set select function to dmamux register */\n+   if (0 != gpdma_peripheral_connection_number) {\n+       uint32_t temp;\n+       temp = LPC_CREG->DMAMUX & (~(0x03 << (2 * channel)));\n+       LPC_CREG->DMAMUX = temp | (function << (2 * channel));\n+   }\n+   return channel;\n+}\n+\n+uint32_t makeCtrlWord(const GPDMA_CH_CFG_T *GPDMAChannelConfig,\n+                     uint32_t GPDMA_LUTPerBurstSrcConn,\n+                     uint32_t GPDMA_LUTPerBurstDstConn,\n+                     uint32_t GPDMA_LUTPerWidSrcConn,\n+                     uint32_t GPDMA_LUTPerWidDstConn)\n+{\n+   uint32_t ctrl_word = 0;\n+\n+   switch (GPDMAChannelConfig->TransferType) {\n+   /* Memory to memory */\n+   case GPDMA_TRANSFERTYPE_M2M_CONTROLLER_DMA:\n+       ctrl_word = GPDMA_DMACCxControl_TransferSize(GPDMAChannelConfig->TransferSize)\n+                   | GPDMA_DMACCxControl_SBSize((4UL))             /**< Burst size = 32 */\n+                   | GPDMA_DMACCxControl_DBSize((4UL))             /**< Burst size = 32 */\n+                   | GPDMA_DMACCxControl_SWidth(GPDMAChannelConfig->TransferWidth)\n+                   | GPDMA_DMACCxControl_DWidth(GPDMAChannelConfig->TransferWidth)\n+                   | GPDMA_DMACCxControl_SI\n+                   | GPDMA_DMACCxControl_DI\n+                   | GPDMA_DMACCxControl_I;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_M2P_CONTROLLER_PERIPHERAL:\n+       ctrl_word = GPDMA_DMACCxControl_TransferSize((uint32_t) GPDMAChannelConfig->TransferSize)\n+                   | GPDMA_DMACCxControl_SBSize(GPDMA_LUTPerBurstDstConn)\n+                   | GPDMA_DMACCxControl_DBSize(GPDMA_LUTPerBurstDstConn)\n+                   | GPDMA_DMACCxControl_SWidth(GPDMA_LUTPerWidDstConn)\n+                   | GPDMA_DMACCxControl_DWidth(GPDMA_LUTPerWidDstConn)\n+                   | GPDMA_DMACCxControl_DestTransUseAHBMaster1\n+                   | GPDMA_DMACCxControl_SI\n+                   | GPDMA_DMACCxControl_I;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_PERIPHERAL:\n+       ctrl_word = GPDMA_DMACCxControl_TransferSize((uint32_t) GPDMAChannelConfig->TransferSize)\n+                   | GPDMA_DMACCxControl_SBSize(GPDMA_LUTPerBurstSrcConn)\n+                   | GPDMA_DMACCxControl_DBSize(GPDMA_LUTPerBurstSrcConn)\n+                   | GPDMA_DMACCxControl_SWidth(GPDMA_LUTPerWidSrcConn)\n+                   | GPDMA_DMACCxControl_DWidth(GPDMA_LUTPerWidSrcConn)\n+                   | GPDMA_DMACCxControl_SrcTransUseAHBMaster1\n+                   | GPDMA_DMACCxControl_DI\n+                   | GPDMA_DMACCxControl_I;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DestPERIPHERAL:\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_SrcPERIPHERAL:\n+       ctrl_word = GPDMA_DMACCxControl_TransferSize((uint32_t) GPDMAChannelConfig->TransferSize)\n+                   | GPDMA_DMACCxControl_SBSize(GPDMA_LUTPerBurstSrcConn)\n+                   | GPDMA_DMACCxControl_DBSize(GPDMA_LUTPerBurstDstConn)\n+                   | GPDMA_DMACCxControl_SWidth(GPDMA_LUTPerWidSrcConn)\n+                   | GPDMA_DMACCxControl_DWidth(GPDMA_LUTPerWidDstConn)\n+                   | GPDMA_DMACCxControl_SrcTransUseAHBMaster1\n+                   | GPDMA_DMACCxControl_DestTransUseAHBMaster1\n+                   | GPDMA_DMACCxControl_I;\n+\n+       break;\n+\n+   /* Do not support any more transfer type, return ERROR */\n+   default:\n+       return ERROR;\n+   }\n+   return ctrl_word;\n+}\n+\n+/* Set up the DPDMA according to the specification configuration details */\n+Status setupChannel(LPC_GPDMA_T *pGPDMA,\n+                   GPDMA_CH_CFG_T *GPDMAChannelConfig,\n+                   uint32_t CtrlWord,\n+                   uint32_t LinkListItem,\n+                   uint8_t SrcPeripheral,\n+                   uint8_t DstPeripheral)\n+{\n+   GPDMA_CH_T *pDMAch;\n+\n+   if (pGPDMA->ENBLDCHNS & ((((1UL << (GPDMAChannelConfig->ChannelNum)) & 0xFF)))) {\n+       /* This channel is enabled, return ERROR, need to release this channel first */\n+       return ERROR;\n+   }\n+\n+   /* Get Channel pointer */\n+   pDMAch = (GPDMA_CH_T *) &(pGPDMA->CH[GPDMAChannelConfig->ChannelNum]);\n+\n+   /* Reset the Interrupt status */\n+   pGPDMA->INTTCCLEAR = (((1UL << (GPDMAChannelConfig->ChannelNum)) & 0xFF));\n+   pGPDMA->INTERRCLR = (((1UL << (GPDMAChannelConfig->ChannelNum)) & 0xFF));\n+\n+   /* Assign Linker List Item value */\n+   pDMAch->LLI = LinkListItem;\n+\n+   /* Enable DMA channels, little endian */\n+   pGPDMA->CONFIG = GPDMA_DMACConfig_E;\n+   while (!(pGPDMA->CONFIG & GPDMA_DMACConfig_E)) {}\n+\n+   pDMAch->SRCADDR = GPDMAChannelConfig->SrcAddr;\n+   pDMAch->DESTADDR = GPDMAChannelConfig->DstAddr;\n+\n+   /* Configure DMA Channel, enable Error Counter and Terminate counter */\n+   pDMAch->CONFIG = GPDMA_DMACCxConfig_IE\n+                    | GPDMA_DMACCxConfig_ITC       /*| GPDMA_DMACCxConfig_E*/\n+                    | GPDMA_DMACCxConfig_TransferType((uint32_t) GPDMAChannelConfig->TransferType)\n+                    | GPDMA_DMACCxConfig_SrcPeripheral(SrcPeripheral)\n+                    | GPDMA_DMACCxConfig_DestPeripheral(DstPeripheral);\n+\n+   pDMAch->CONTROL = CtrlWord;\n+\n+   return SUCCESS;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the GPDMA */\n+void Chip_GPDMA_Init(LPC_GPDMA_T *pGPDMA)\n+{\n+   uint8_t i;\n+\n+   Chip_Clock_EnableOpts(CLK_MX_DMA, true, true, 1);\n+\n+   /* Reset all channel configuration register */\n+   for (i = 8; i > 0; i--) {\n+       pGPDMA->CH[i - 1].CONFIG = 0;\n+   }\n+\n+   /* Clear all DMA interrupt and error flag */\n+   pGPDMA->INTTCCLEAR = 0xFF;\n+   pGPDMA->INTERRCLR = 0xFF;\n+\n+   /* Reset all channels are free */\n+   for (i = 0; i < GPDMA_NUMBER_CHANNELS; i++) {\n+       ChannelHandlerArray[i].ChannelStatus = DISABLE;\n+   }\n+}\n+\n+/* Shutdown the GPDMA */\n+void Chip_GPDMA_DeInit(LPC_GPDMA_T *pGPDMA)\n+{\n+   Chip_Clock_Disable(CLK_MX_DMA);\n+}\n+\n+/* Stop a stream DMA transfer */\n+void Chip_GPDMA_Stop(LPC_GPDMA_T *pGPDMA,\n+                    uint8_t ChannelNum)\n+{\n+   Chip_GPDMA_ChannelCmd(pGPDMA, (ChannelNum), DISABLE);\n+   if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INTTC, ChannelNum)) {\n+       /* Clear terminate counter Interrupt pending */\n+       Chip_GPDMA_ClearIntPending(pGPDMA, GPDMA_STATCLR_INTTC, ChannelNum);\n+   }\n+   if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INTERR, ChannelNum)) {\n+       /* Clear terminate counter Interrupt pending */\n+       Chip_GPDMA_ClearIntPending(pGPDMA, GPDMA_STATCLR_INTERR, ChannelNum);\n+   }\n+   ChannelHandlerArray[ChannelNum].ChannelStatus = DISABLE;\n+}\n+\n+/* The GPDMA stream interrupt status checking */\n+Status Chip_GPDMA_Interrupt(LPC_GPDMA_T *pGPDMA,\n+                           uint8_t ChannelNum)\n+{\n+\n+   if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INT, ChannelNum)) {\n+       /* Check counter terminal status */\n+       if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INTTC, ChannelNum)) {\n+           /* Clear terminate counter Interrupt pending */\n+           Chip_GPDMA_ClearIntPending(pGPDMA, GPDMA_STATCLR_INTTC, ChannelNum);\n+           return SUCCESS;\n+       }\n+       /* Check error terminal status */\n+       if (Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_INTERR, ChannelNum)) {\n+           /* Clear error counter Interrupt pending */\n+\n+           Chip_GPDMA_ClearIntPending(pGPDMA, GPDMA_STATCLR_INTERR, ChannelNum);\n+           return ERROR;\n+       }\n+   }\n+   return ERROR;\n+}\n+\n+int Chip_GPDMA_InitChannelCfg(LPC_GPDMA_T *pGPDMA,\n+                             GPDMA_CH_CFG_T *GPDMACfg,\n+                             uint8_t  ChannelNum,\n+                             uint32_t src,\n+                             uint32_t dst,\n+                             uint32_t Size,\n+                             GPDMA_FLOW_CONTROL_T TransferType)\n+{\n+   int rval = -1;\n+   GPDMACfg->ChannelNum = ChannelNum;\n+   GPDMACfg->TransferType = TransferType;\n+   GPDMACfg->TransferSize = Size;\n+\n+   switch (TransferType) {\n+   case GPDMA_TRANSFERTYPE_M2M_CONTROLLER_DMA:\n+       GPDMACfg->SrcAddr = (uint32_t) src;\n+       GPDMACfg->DstAddr = (uint32_t) dst;\n+       rval = 3;\n+       GPDMACfg->TransferWidth = GPDMA_WIDTH_WORD;\n+       GPDMACfg->TransferSize = Size / 4;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_M2P_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_M2P_CONTROLLER_PERIPHERAL:\n+       GPDMACfg->SrcAddr = (uint32_t) src;\n+       rval = 1;\n+       GPDMACfg->DstAddr = (uint32_t) GPDMA_LUTPerAddr[dst];\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_P2M_CONTROLLER_PERIPHERAL:\n+       GPDMACfg->SrcAddr = (uint32_t) GPDMA_LUTPerAddr[src];\n+       GPDMACfg->DstAddr = (uint32_t) dst;\n+       rval = 2;\n+       break;\n+\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DMA:\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_DestPERIPHERAL:\n+   case GPDMA_TRANSFERTYPE_P2P_CONTROLLER_SrcPERIPHERAL:\n+       GPDMACfg->SrcAddr = (uint32_t) GPDMA_LUTPerAddr[src];\n+       GPDMACfg->DstAddr = (uint32_t) GPDMA_LUTPerAddr[dst];\n+       rval = 0;\n+       break;\n+\n+   default:\n+       break;\n+   }\n+   return rval;\n+}\n+\n+/* Read the status from different registers according to the type */\n+IntStatus Chip_GPDMA_IntGetStatus(LPC_GPDMA_T *pGPDMA, GPDMA_STATUS_T type, uint8_t channel)\n+{\n+   /**\n+    * TODO check the channel <=8 type is exited\n+    */\n+   switch (type) {\n+   case GPDMA_STAT_INT:/* check status of DMA channel interrupts */\n+       return (IntStatus) (pGPDMA->INTSTAT & (((1UL << channel) & 0xFF)));\n+\n+   case GPDMA_STAT_INTTC:  /* check terminal count interrupt request status for DMA */\n+       return (IntStatus) (pGPDMA->INTTCSTAT & (((1UL << channel) & 0xFF)));\n+\n+   case GPDMA_STAT_INTERR: /* check interrupt status for DMA channels */\n+       return (IntStatus) (pGPDMA->INTERRSTAT & (((1UL << channel) & 0xFF)));\n+\n+   case GPDMA_STAT_RAWINTTC:   /* check status of the terminal count interrupt for DMA channels */\n+       return (IntStatus) (pGPDMA->RAWINTTCSTAT & (((1UL << channel) & 0xFF)));\n+\n+   case GPDMA_STAT_RAWINTERR:  /* check status of the error interrupt for DMA channels */\n+       return (IntStatus) (pGPDMA->RAWINTERRSTAT & (((1UL << channel) & 0xFF)));\n+\n+   default:/* check enable status for DMA channels */\n+       return (IntStatus) (pGPDMA->ENBLDCHNS & (((1UL << channel) & 0xFF)));\n+   }\n+}\n+\n+/* Clear the Interrupt Flag from different registers according to the type */\n+void Chip_GPDMA_ClearIntPending(LPC_GPDMA_T *pGPDMA, GPDMA_STATECLEAR_T type, uint8_t channel)\n+{\n+   if (type == GPDMA_STATCLR_INTTC) {\n+       /* clears the terminal count interrupt request on DMA channel */\n+       pGPDMA->INTTCCLEAR = (((1UL << (channel)) & 0xFF));\n+   }\n+   else {\n+       /* clear the error interrupt request */\n+       pGPDMA->INTERRCLR = (((1UL << (channel)) & 0xFF));\n+   }\n+}\n+\n+/* Enable or Disable the GPDMA Channel */\n+void Chip_GPDMA_ChannelCmd(LPC_GPDMA_T *pGPDMA, uint8_t channelNum, FunctionalState NewState)\n+{\n+   GPDMA_CH_T *pDMAch;\n+\n+   /* Get Channel pointer */\n+   pDMAch = (GPDMA_CH_T *) &(pGPDMA->CH[channelNum]);\n+\n+   if (NewState == ENABLE) {\n+       pDMAch->CONFIG |= GPDMA_DMACCxConfig_E;\n+   }\n+   else {\n+       pDMAch->CONFIG &= ~GPDMA_DMACCxConfig_E;\n+   }\n+}\n+\n+/* Do a DMA transfer M2M, M2P,P2M or P2P */\n+Status Chip_GPDMA_Transfer(LPC_GPDMA_T *pGPDMA,\n+                          uint8_t ChannelNum,\n+                          uint32_t src,\n+                          uint32_t dst,\n+                          GPDMA_FLOW_CONTROL_T TransferType,\n+                          uint32_t Size)\n+{\n+   GPDMA_CH_CFG_T GPDMACfg;\n+   uint8_t SrcPeripheral = 0, DstPeripheral = 0;\n+   uint32_t cwrd;\n+   int ret;\n+\n+   ret = Chip_GPDMA_InitChannelCfg(pGPDMA, &GPDMACfg, ChannelNum, src, dst, Size, TransferType);\n+   if (ret < 0) {\n+       return ERROR;\n+   }\n+\n+   /* Adjust src/dst index if they are memory */\n+   if (ret & 1) {\n+       src = 0;\n+   }\n+   else {\n+       SrcPeripheral = configDMAMux(src);\n+   }\n+\n+   if (ret & 2) {\n+       dst = 0;\n+   }\n+   else {\n+       DstPeripheral = configDMAMux(dst);\n+   }\n+\n+   cwrd = makeCtrlWord(&GPDMACfg,\n+                       (uint32_t) GPDMA_LUTPerBurst[src],\n+                       (uint32_t) GPDMA_LUTPerBurst[dst],\n+                       (uint32_t) GPDMA_LUTPerWid[src],\n+                       (uint32_t) GPDMA_LUTPerWid[dst]);\n+   if (setupChannel(pGPDMA, &GPDMACfg, cwrd, 0, SrcPeripheral, DstPeripheral) == ERROR) {\n+       return ERROR;\n+   }\n+\n+   /* Start the Channel */\n+   Chip_GPDMA_ChannelCmd(pGPDMA, ChannelNum, ENABLE);\n+   return SUCCESS;\n+}\n+\n+Status Chip_GPDMA_PrepareDescriptor(LPC_GPDMA_T *pGPDMA,\n+                                   DMA_TransferDescriptor_t *DMADescriptor,\n+                                   uint32_t src,\n+                                   uint32_t dst,\n+                                   uint32_t Size,\n+                                   GPDMA_FLOW_CONTROL_T TransferType,\n+                                   const DMA_TransferDescriptor_t *NextDescriptor)\n+{\n+   int ret;\n+   GPDMA_CH_CFG_T GPDMACfg;\n+\n+   ret = Chip_GPDMA_InitChannelCfg(pGPDMA, &GPDMACfg, 0, src, dst, Size, TransferType);\n+   if (ret < 0) {\n+       return ERROR;\n+   }\n+\n+   /* Adjust src/dst index if they are memory */\n+   if (ret & 1) {\n+       src = 0;\n+   }\n+\n+   if (ret & 2) {\n+       dst = 0;\n+   }\n+\n+   DMADescriptor->src  = GPDMACfg.SrcAddr;\n+   DMADescriptor->dst  = GPDMACfg.DstAddr;\n+   DMADescriptor->lli  = (uint32_t) NextDescriptor;\n+   DMADescriptor->ctrl = makeCtrlWord(&GPDMACfg,\n+                                      (uint32_t) GPDMA_LUTPerBurst[src],\n+                                      (uint32_t) GPDMA_LUTPerBurst[dst],\n+                                      (uint32_t) GPDMA_LUTPerWid[src],\n+                                      (uint32_t) GPDMA_LUTPerWid[dst]);\n+\n+   /* By default set interrupt only for last transfer */\n+   if (NextDescriptor) {\n+       DMADescriptor->ctrl &= ~GPDMA_DMACCxControl_I;\n+   }\n+\n+   return SUCCESS;\n+}\n+\n+/* Do a DMA scatter-gather transfer M2M, M2P,P2M or P2P using DMA descriptors */\n+Status Chip_GPDMA_SGTransfer(LPC_GPDMA_T *pGPDMA,\n+                            uint8_t ChannelNum,\n+                            const DMA_TransferDescriptor_t *DMADescriptor,\n+                            GPDMA_FLOW_CONTROL_T TransferType)\n+{\n+   const DMA_TransferDescriptor_t *dsc = DMADescriptor;\n+   GPDMA_CH_CFG_T GPDMACfg;\n+   uint8_t SrcPeripheral = 0, DstPeripheral = 0;\n+   uint32_t src = DMADescriptor->src, dst = DMADescriptor->dst;\n+   int ret;\n+\n+   ret = Chip_GPDMA_InitChannelCfg(pGPDMA, &GPDMACfg, ChannelNum, src, dst, 0, TransferType);\n+   if (ret < 0) {\n+       return ERROR;\n+   }\n+\n+   /* Adjust src/dst index if they are memory */\n+   if (ret & 1) {\n+       src = 0;\n+   }\n+   else {\n+       SrcPeripheral = configDMAMux(src);\n+   }\n+\n+   if (ret & 2) {\n+       dst = 0;\n+   }\n+   else {\n+       DstPeripheral = configDMAMux(dst);\n+   }\n+\n+   if (setupChannel(pGPDMA, &GPDMACfg, dsc->ctrl, dsc->lli, SrcPeripheral, DstPeripheral) == ERROR) {\n+       return ERROR;\n+   }\n+\n+   /* Start the Channel */\n+   Chip_GPDMA_ChannelCmd(pGPDMA, ChannelNum, ENABLE);\n+   return SUCCESS;\n+}\n+\n+/* Get a free GPDMA channel for one DMA connection */\n+uint8_t Chip_GPDMA_GetFreeChannel(LPC_GPDMA_T *pGPDMA,\n+                                 uint32_t PeripheralConnection_ID)\n+{\n+   uint8_t temp = 0;\n+   for (temp = 0; temp < GPDMA_NUMBER_CHANNELS; temp++) {\n+       if (!Chip_GPDMA_IntGetStatus(pGPDMA, GPDMA_STAT_ENABLED_CH,\n+                                    temp) && (ChannelHandlerArray[temp].ChannelStatus == DISABLE)) {\n+           ChannelHandlerArray[temp].ChannelStatus = ENABLE;\n+           return temp;\n+       }\n+   }\n+   return 0;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/gpio_18xx_43xx.c ./lpc_chip_43xx/src/gpio_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/gpio_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/gpio_18xx_43xx.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,102 @@\n+/*\n+ * @brief LPC18xx/43xx GPIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize GPIO block */\n+void Chip_GPIO_Init(LPC_GPIO_T *pGPIO)\n+{\n+}\n+\n+/* De-Initialize GPIO block */\n+void Chip_GPIO_DeInit(LPC_GPIO_T *pGPIO)\n+{\n+}\n+\n+/* Set a GPIO direction */\n+void Chip_GPIO_WriteDirBit(LPC_GPIO_T *pGPIO, uint32_t port, uint8_t bit, bool setting)\n+{\n+   if (setting) {\n+       pGPIO->DIR[port] |= 1UL << bit;\n+   }\n+   else {\n+       pGPIO->DIR[port] &= ~(1UL << bit);\n+   }\n+}\n+\n+/* Set Direction for a GPIO port */\n+void Chip_GPIO_SetDir(LPC_GPIO_T *pGPIO, uint8_t portNum, uint32_t bitValue, uint8_t out)\n+{\n+   if (out) {\n+       pGPIO->DIR[portNum] |= bitValue;\n+   }\n+   else {\n+       pGPIO->DIR[portNum] &= ~bitValue;\n+   }\n+}\n+\n+/* Set GPIO direction for a single GPIO pin */\n+void Chip_GPIO_SetPinDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pin, bool output)\n+{\n+   if (output) {\n+       Chip_GPIO_SetPinDIROutput(pGPIO, port, pin);\n+   }\n+   else {\n+       Chip_GPIO_SetPinDIRInput(pGPIO, port, pin);\n+   }\n+}\n+\n+/* Set GPIO direction for a all selected GPIO pins to an input or output */\n+void Chip_GPIO_SetPortDIR(LPC_GPIO_T *pGPIO, uint8_t port, uint8_t pinMask, bool outSet)\n+{\n+   if (outSet) {\n+       Chip_GPIO_SetPortDIROutput(pGPIO, port, pinMask);\n+   }\n+   else {\n+       Chip_GPIO_SetPortDIRInput(pGPIO, port, pinMask);\n+   }\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/gpiogroup_18xx_43xx.c ./lpc_chip_43xx/src/gpiogroup_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/gpiogroup_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/gpiogroup_18xx_43xx.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,48 @@\n+/*\n+ * @brief LPC18xx/43xx GPIO group driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/hsadc_18xx_43xx.c ./lpc_chip_43xx/src/hsadc_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/hsadc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/hsadc_18xx_43xx.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,178 @@\n+/*\n+ * @brief LPC18xx/43xx High speed ADC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* CRS and DGEC values mapped to maximum HSADC sample rates */\n+typedef struct {\n+   uint32_t minRate;\n+   uint8_t crs;\n+   uint8_t dgec;\n+} CRSDCEG_T;\n+static const CRSDCEG_T powerSets[] = {\n+   {20000000,   0, 0x0},   /* Use 0/0 for less than 20MHz */\n+   {30000000,   1, 0x0},   /* Use 1/0 for less than 30MHz */\n+   {50000000,   2, 0x0},   /* Use 2/0 for less than 50MHz */\n+   {65000000,   3, 0xF},   /* Use 3/F for less than 65MHz */\n+   {0xFFFFFFFF, 4, 0xE},   /* Use 4/E for everything else */\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the High speed ADC */\n+void Chip_HSADC_Init(LPC_HSADC_T *pHSADC)\n+{\n+   /* Enable HSADC register clock */\n+   Chip_Clock_EnableOpts(CLK_MX_ADCHS, true, true, 1);\n+\n+   /* Enable HSADC sample clock */\n+   Chip_Clock_Enable(CLK_ADCHS);\n+\n+   /* Reset HSADC, will auto-clear */\n+   Chip_RGU_TriggerReset(RGU_ADCHS_RST);\n+}\n+\n+/* Shutdown ADC */\n+void Chip_HSADC_DeInit(LPC_HSADC_T *pHSADC)\n+{\n+   /* Power down */\n+   Chip_HSADC_DisablePower(pHSADC);\n+\n+   /* Reset HSADC and wait for clear, will auto-clear */\n+   Chip_RGU_TriggerReset(RGU_ADCHS_RST);\n+   while (Chip_RGU_InReset(RGU_ADCHS_RST)) {}\n+\n+   /* SHutdown HSADC clock after reset is complete */\n+   Chip_Clock_Disable(CLK_MX_ADCHS);\n+}\n+\n+/* Sets up HSADC FIFO trip level and packing */\n+void Chip_HSADC_SetupFIFO(LPC_HSADC_T *pHSADC, uint8_t trip, bool packed)\n+{\n+   uint32_t val = (uint32_t) trip << 1;\n+   if (packed) {\n+       val |= 1;\n+   }\n+\n+   pHSADC->FIFO_CFG = val;\n+}\n+\n+/* Set HSADC Threshold low value */\n+void Chip_HSADC_SetThrLowValue(LPC_HSADC_T *pHSADC, uint8_t thrnum, uint16_t value)\n+{\n+   uint32_t reg;\n+\n+   reg = pHSADC->THR[thrnum] & ~0xFFF;\n+   pHSADC->THR[thrnum] = reg | (uint32_t) value;\n+}\n+\n+/* Set HSADC Threshold high value */\n+void Chip_HSADC_SetThrHighValue(LPC_HSADC_T *pHSADC, uint8_t thrnum, uint16_t value)\n+{\n+   uint32_t reg;\n+\n+   reg = pHSADC->THR[thrnum] & ~0xFFF0000;\n+   pHSADC->THR[thrnum] = reg | (((uint32_t) value) << 16);\n+}\n+\n+/* Setup speed for a input channel */\n+void Chip_HSADC_SetSpeed(LPC_HSADC_T *pHSADC, uint8_t channel, uint8_t speed)\n+{\n+   uint32_t reg, shift = channel * 4;\n+\n+   reg = pHSADC->ADC_SPEED & ~(0xF << shift);\n+   pHSADC->ADC_SPEED = reg | (speed << shift);\n+}\n+\n+/* Setup (common) HSADC power and speed settings */\n+void Chip_HSADC_SetPowerSpeed(LPC_HSADC_T *pHSADC, bool comp2)\n+{\n+   uint32_t rate, val, orBits;\n+   int i, idx;\n+\n+   /* Get current clock rate for HSADC */\n+   rate = Chip_HSADC_GetBaseClockRate(pHSADC);\n+\n+   /* Determine optimal CRS and DCEG settings based on clock rate */\n+   idx = 0;\n+   while (rate > powerSets[idx].minRate) {\n+       idx++;\n+   }\n+\n+   /* Add CRS selection based on clock speed */\n+   orBits = powerSets[idx].crs;\n+\n+   /* Enable 2's complement data format? */\n+   if (comp2) {\n+       orBits |= (1 << 16);\n+   }\n+\n+   /* Update DCEG settings for all channels based on current CRS */\n+   for (i = 0; i < 6; i++) {\n+       Chip_HSADC_SetSpeed(pHSADC, i, powerSets[idx].dgec);\n+   }\n+\n+   /* Get current power control register value and mask off bits that\n+      may change */\n+   val = pHSADC->POWER_CONTROL & ~((1 << 16) | 0xF);\n+\n+   /* Update with new power and data format settings */\n+   pHSADC->POWER_CONTROL = val | orBits;\n+}\n+\n+/* Setup AC-DC coupling selection for a channel */\n+void Chip_HSADC_SetACDCBias(LPC_HSADC_T *pHSADC, uint8_t channel,\n+                           HSADC_DCBIAS_T dcInNeg, HSADC_DCBIAS_T dcInPos)\n+{\n+   uint32_t reg, mask, orBits;\n+\n+   /* Build mask and enable words for selected DCINNEG abd DCINPOS\n+      fields for the selected channel */\n+   mask = ((1 << 4) | (1 << 10)) << channel;\n+   orBits = (((uint32_t) dcInNeg << 4) | ((uint32_t) dcInPos << 10)) << channel;\n+\n+   reg = pHSADC->POWER_CONTROL & ~mask;\n+   pHSADC->POWER_CONTROL = reg | orBits;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/i2c_18xx_43xx.c ./lpc_chip_43xx/src/i2c_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/i2c_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/i2c_18xx_43xx.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,554 @@\n+/*\n+ * @brief LPC18xx/43xx I2C driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Control flags */\n+#define I2C_CON_FLAGS (I2C_CON_AA | I2C_CON_SI | I2C_CON_STO | I2C_CON_STA)\n+#define LPC_I2Cx(id)      ((i2c[id].ip))\n+#define SLAVE_ACTIVE(iic) (((iic)->flags & 0xFF00) != 0)\n+\n+/* I2C common interface structure */\n+struct i2c_interface {\n+   LPC_I2C_T *ip;      /* IP base address of the I2C device */\n+   CHIP_CCU_CLK_T clk; /* Clock used by I2C */\n+   I2C_EVENTHANDLER_T mEvent;  /* Current active Master event handler */\n+   I2C_EVENTHANDLER_T sEvent;  /* Slave transfer events */\n+   I2C_XFER_T *mXfer;  /* Current active xfer pointer */\n+   I2C_XFER_T *sXfer;  /* Pointer to store xfer when bus is busy */\n+   uint32_t flags;     /* Flags used by I2C master and slave */\n+};\n+\n+/* Slave interface structure */\n+struct i2c_slave_interface {\n+   I2C_XFER_T *xfer;\n+   I2C_EVENTHANDLER_T event;\n+};\n+\n+/* I2C interfaces */\n+static struct i2c_interface i2c[I2C_NUM_INTERFACE] = {\n+   {LPC_I2C0, CLK_APB1_I2C0, Chip_I2C_EventHandler, NULL, NULL, NULL, 0},\n+   {LPC_I2C1, CLK_APB3_I2C1, Chip_I2C_EventHandler, NULL, NULL, NULL, 0}\n+};\n+\n+static struct i2c_slave_interface i2c_slave[I2C_NUM_INTERFACE][I2C_SLAVE_NUM_INTERFACE];\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+STATIC INLINE void enableClk(I2C_ID_T id)\n+{\n+   Chip_Clock_Enable(i2c[id].clk);\n+}\n+\n+STATIC INLINE void disableClk(I2C_ID_T id)\n+{\n+   Chip_Clock_Disable(i2c[id].clk);\n+}\n+\n+/* Get the ADC Clock Rate */\n+STATIC INLINE uint32_t getClkRate(I2C_ID_T id)\n+{\n+   return Chip_Clock_GetRate(i2c[id].clk);\n+}\n+\n+/* Enable I2C and start master transfer */\n+STATIC INLINE void startMasterXfer(LPC_I2C_T *pI2C)\n+{\n+   /* Reset STA, STO, SI */\n+   pI2C->CONCLR = I2C_CON_SI | I2C_CON_STA | I2C_CON_AA;\n+\n+   /* Enter to Master Transmitter mode */\n+   pI2C->CONSET = I2C_CON_I2EN | I2C_CON_STA;\n+}\n+\n+/* Enable I2C and enable slave transfers */\n+STATIC INLINE void startSlaverXfer(LPC_I2C_T *pI2C)\n+{\n+   /* Reset STA, STO, SI */\n+   pI2C->CONCLR = I2C_CON_SI | I2C_CON_STA;\n+\n+   /* Enter to Master Transmitter mode */\n+   pI2C->CONSET = I2C_CON_I2EN | I2C_CON_AA;\n+}\n+\n+/* Check if I2C bus is free */\n+STATIC INLINE int isI2CBusFree(LPC_I2C_T *pI2C)\n+{\n+   return !(pI2C->CONSET & I2C_CON_STO);\n+}\n+\n+/* Get current state of the I2C peripheral */\n+STATIC INLINE int getCurState(LPC_I2C_T *pI2C)\n+{\n+   return (int) (pI2C->STAT & I2C_STAT_CODE_BITMASK);\n+}\n+\n+/* Check if the active state belongs to master mode*/\n+STATIC INLINE int isMasterState(LPC_I2C_T *pI2C)\n+{\n+   return getCurState(pI2C) < 0x60;\n+}\n+\n+/* Set OWN slave address for specific slave ID */\n+STATIC void setSlaveAddr(LPC_I2C_T *pI2C, I2C_SLAVE_ID sid, uint8_t addr, uint8_t mask)\n+{\n+   uint32_t index = (uint32_t) sid - 1;\n+   pI2C->MASK[index] = mask;\n+   if (sid == I2C_SLAVE_0) {\n+       pI2C->ADR0 = addr;\n+   }\n+   else {\n+       volatile uint32_t *abase = &pI2C->ADR1;\n+       abase[index - 1] = addr;\n+   }\n+}\n+\n+/* Match the slave address */\n+STATIC int isSlaveAddrMatching(uint8_t addr1, uint8_t addr2, uint8_t mask)\n+{\n+   mask |= 1;\n+   return (addr1 & ~mask) == (addr2 & ~mask);\n+}\n+\n+/* Get the index of the active slave */\n+STATIC I2C_SLAVE_ID lookupSlaveIndex(LPC_I2C_T *pI2C, uint8_t slaveAddr)\n+{\n+   if (!(slaveAddr >> 1)) {\n+       return I2C_SLAVE_GENERAL;                   /* General call address */\n+   }\n+   if (isSlaveAddrMatching(pI2C->ADR0, slaveAddr, pI2C->MASK[0])) {\n+       return I2C_SLAVE_0;\n+   }\n+   if (isSlaveAddrMatching(pI2C->ADR1, slaveAddr, pI2C->MASK[1])) {\n+       return I2C_SLAVE_1;\n+   }\n+   if (isSlaveAddrMatching(pI2C->ADR2, slaveAddr, pI2C->MASK[2])) {\n+       return I2C_SLAVE_2;\n+   }\n+   if (isSlaveAddrMatching(pI2C->ADR3, slaveAddr, pI2C->MASK[3])) {\n+       return I2C_SLAVE_3;\n+   }\n+\n+   /* If everything is fine the code should never come here */\n+   return I2C_SLAVE_GENERAL;\n+}\n+\n+/* Master transfer state change handler handler */\n+int handleMasterXferState(LPC_I2C_T *pI2C, I2C_XFER_T  *xfer)\n+{\n+   uint32_t cclr = I2C_CON_FLAGS;\n+\n+   switch (getCurState(pI2C)) {\n+   case 0x08:      /* Start condition on bus */\n+   case 0x10:      /* Repeated start condition */\n+       pI2C->DAT = (xfer->slaveAddr << 1) | (xfer->txSz == 0);\n+       break;\n+\n+   /* Tx handling */\n+   case 0x18:      /* SLA+W sent and ACK received */\n+   case 0x28:      /* DATA sent and ACK received */\n+       if (!xfer->txSz) {\n+           cclr &= ~(xfer->rxSz ? I2C_CON_STA : I2C_CON_STO);\n+       }\n+       else {\n+           pI2C->DAT = *xfer->txBuff++;\n+           xfer->txSz--;\n+       }\n+       break;\n+\n+   /* Rx handling */\n+   case 0x58:      /* Data Received and NACK sent */\n+       cclr &= ~I2C_CON_STO;\n+\n+   case 0x50:      /* Data Received and ACK sent */\n+       *xfer->rxBuff++ = pI2C->DAT;\n+       xfer->rxSz--;\n+\n+   case 0x40:      /* SLA+R sent and ACK received */\n+       if (xfer->rxSz > 1) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       break;\n+\n+   /* NAK Handling */\n+   case 0x20:      /* SLA+W sent NAK received */\n+   case 0x48:      /* SLA+R sent NAK received */\n+       xfer->status = I2C_STATUS_SLAVENAK;\n+       cclr &= ~I2C_CON_STO;\n+       break;\n+\n+   case 0x30:      /* DATA sent NAK received */\n+       xfer->status = I2C_STATUS_NAK;\n+       cclr &= ~I2C_CON_STO;\n+       break;\n+\n+   case 0x38:      /* Arbitration lost */\n+       xfer->status = I2C_STATUS_ARBLOST;\n+       break;\n+\n+   /* Bus Error */\n+   case 0x00:\n+       xfer->status = I2C_STATUS_BUSERR;\n+       cclr &= ~I2C_CON_STO;\n+   }\n+\n+   /* Set clear control flags */\n+   pI2C->CONSET = cclr ^ I2C_CON_FLAGS;\n+   pI2C->CONCLR = cclr & ~I2C_CON_STO;\n+\n+   /* If stopped return 0 */\n+   if (!(cclr & I2C_CON_STO) || (xfer->status == I2C_STATUS_ARBLOST)) {\n+       if (xfer->status == I2C_STATUS_BUSY) {\n+           xfer->status = I2C_STATUS_DONE;\n+       }\n+       return 0;\n+   }\n+   return 1;\n+}\n+\n+/* Find the slave address of SLA+W or SLA+R */\n+I2C_SLAVE_ID getSlaveIndex(LPC_I2C_T *pI2C)\n+{\n+   switch (getCurState(pI2C)) {\n+   case 0x60:\n+   case 0x68:\n+   case 0x70:\n+   case 0x78:\n+   case 0xA8:\n+   case 0xB0:\n+       return lookupSlaveIndex(pI2C, pI2C->DAT);\n+   }\n+\n+   /* If everything is fine code should never come here */\n+   return I2C_SLAVE_GENERAL;\n+}\n+\n+/* Slave state machine handler */\n+int handleSlaveXferState(LPC_I2C_T *pI2C, I2C_XFER_T *xfer)\n+{\n+   uint32_t cclr = I2C_CON_FLAGS;\n+   int ret = RET_SLAVE_BUSY;\n+\n+   xfer->status = I2C_STATUS_BUSY;\n+   switch (getCurState(pI2C)) {\n+   case 0x80:      /* SLA: Data received + ACK sent */\n+   case 0x90:      /* GC: Data received + ACK sent */\n+       *xfer->rxBuff++ = pI2C->DAT;\n+       xfer->rxSz--;\n+       ret = RET_SLAVE_RX;\n+       if (xfer->rxSz > 1) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       break;\n+\n+   case 0x60:      /* Own SLA+W received */\n+   case 0x68:      /* Own SLA+W received after losing arbitration */\n+   case 0x70:      /* GC+W received */\n+   case 0x78:      /* GC+W received after losing arbitration */\n+       xfer->slaveAddr = pI2C->DAT & ~1;\n+       if (xfer->rxSz > 1) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       break;\n+\n+   case 0xA8:      /* SLA+R received */\n+   case 0xB0:      /* SLA+R received after losing arbitration */\n+       xfer->slaveAddr = pI2C->DAT & ~1;\n+\n+   case 0xB8:      /* DATA sent and ACK received */\n+       pI2C->DAT = *xfer->txBuff++;\n+       xfer->txSz--;\n+       if (xfer->txSz > 0) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       ret = RET_SLAVE_TX;\n+       break;\n+\n+   case 0xC0:      /* Data transmitted and NAK received */\n+   case 0xC8:      /* Last data transmitted and ACK received */\n+   case 0x88:      /* SLA: Data received + NAK sent */\n+   case 0x98:      /* GC: Data received + NAK sent */\n+   case 0xA0:      /* STOP/Repeated START condition received */\n+       ret = RET_SLAVE_IDLE;\n+       cclr &= ~I2C_CON_AA;\n+       xfer->status = I2C_STATUS_DONE;\n+       if (xfer->slaveAddr & 1) {\n+           cclr &= ~I2C_CON_STA;\n+       }\n+       break;\n+   }\n+\n+   /* Set clear control flags */\n+   pI2C->CONSET = cclr ^ I2C_CON_FLAGS;\n+   pI2C->CONCLR = cclr & ~I2C_CON_STO;\n+\n+   return ret;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+/* Chip event handler interrupt based */\n+void Chip_I2C_EventHandler(I2C_ID_T id, I2C_EVENT_T event)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+   volatile I2C_STATUS_T *stat;\n+\n+   /* Only WAIT event needs to be handled */\n+   if (event != I2C_EVENT_WAIT) {\n+       return;\n+   }\n+\n+   stat = &iic->mXfer->status;\n+   /* Wait for the status to change */\n+   while (*stat == I2C_STATUS_BUSY) {}\n+}\n+\n+/* Chip polling event handler */\n+void Chip_I2C_EventHandlerPolling(I2C_ID_T id, I2C_EVENT_T event)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+   volatile I2C_STATUS_T *stat;\n+\n+   /* Only WAIT event needs to be handled */\n+   if (event != I2C_EVENT_WAIT) {\n+       return;\n+   }\n+\n+   stat = &iic->mXfer->status;\n+   /* Call the state change handler till xfer is done */\n+   while (*stat == I2C_STATUS_BUSY) {\n+       if (Chip_I2C_IsStateChanged(id)) {\n+           Chip_I2C_MasterStateHandler(id);\n+       }\n+   }\n+}\n+\n+/* Initializes the LPC_I2C peripheral with specified parameter */\n+void Chip_I2C_Init(I2C_ID_T id)\n+{\n+   enableClk(id);\n+\n+   /* Set I2C operation to default */\n+   LPC_I2Cx(id)->CONCLR = (I2C_CON_AA | I2C_CON_SI | I2C_CON_STA | I2C_CON_I2EN);\n+}\n+\n+/* De-initializes the I2C peripheral registers to their default reset values */\n+void Chip_I2C_DeInit(I2C_ID_T id)\n+{\n+   /* Disable I2C control */\n+   LPC_I2Cx(id)->CONCLR = I2C_CON_I2EN | I2C_CON_SI | I2C_CON_STA | I2C_CON_AA;\n+\n+   disableClk(id);\n+}\n+\n+/* Set up clock rate for LPC_I2C peripheral */\n+void Chip_I2C_SetClockRate(I2C_ID_T id, uint32_t clockrate)\n+{\n+   uint32_t SCLValue;\n+\n+   SCLValue = (getClkRate(id) / clockrate);\n+   LPC_I2Cx(id)->SCLH = (uint32_t) (SCLValue >> 1);\n+   LPC_I2Cx(id)->SCLL = (uint32_t) (SCLValue - LPC_I2Cx(id)->SCLH);\n+}\n+\n+/* Get current clock rate for LPC_I2C peripheral */\n+uint32_t Chip_I2C_GetClockRate(I2C_ID_T id)\n+{\n+   return getClkRate(id) / (LPC_I2Cx(id)->SCLH + LPC_I2Cx(id)->SCLL);\n+}\n+\n+/* Set the master event handler */\n+int Chip_I2C_SetMasterEventHandler(I2C_ID_T id, I2C_EVENTHANDLER_T event)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+   if (!iic->mXfer) {\n+       iic->mEvent = event;\n+   }\n+   return iic->mEvent == event;\n+}\n+\n+/* Get the master event handler */\n+I2C_EVENTHANDLER_T Chip_I2C_GetMasterEventHandler(I2C_ID_T id)\n+{\n+   return i2c[id].mEvent;\n+}\n+\n+/* Transmit and Receive data in master mode */\n+int Chip_I2C_MasterTransfer(I2C_ID_T id, I2C_XFER_T *xfer)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+\n+   iic->mEvent(id, I2C_EVENT_LOCK);\n+   xfer->status = I2C_STATUS_BUSY;\n+   iic->mXfer = xfer;\n+\n+   /* If slave xfer not in progress */\n+   if (!iic->sXfer) {\n+       startMasterXfer(iic->ip);\n+   }\n+   iic->mEvent(id, I2C_EVENT_WAIT);\n+   iic->mXfer = 0;\n+\n+   /* Wait for stop condition to appear on bus */\n+   while (!isI2CBusFree(iic->ip)) {}\n+\n+   /* Start slave if one is active */\n+   if (SLAVE_ACTIVE(iic)) {\n+       startSlaverXfer(iic->ip);\n+   }\n+\n+   iic->mEvent(id, I2C_EVENT_UNLOCK);\n+   return (int) xfer->status;\n+}\n+\n+/* Master tx only */\n+int Chip_I2C_MasterSend(I2C_ID_T id, uint8_t slaveAddr, const uint8_t *buff, uint8_t len)\n+{\n+   I2C_XFER_T xfer = {0};\n+   xfer.slaveAddr = slaveAddr;\n+   xfer.txBuff = buff;\n+   xfer.txSz = len;\n+   while (Chip_I2C_MasterTransfer(id, &xfer) == I2C_STATUS_ARBLOST) {}\n+   return len - xfer.txSz;\n+}\n+\n+/* Transmit one byte and receive an array of bytes after a repeated start condition is generated in Master mode.\n+ * This function is useful for communicating with the I2C slave registers\n+ */\n+int Chip_I2C_MasterCmdRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t cmd, uint8_t *buff, int len)\n+{\n+   I2C_XFER_T xfer = {0};\n+   xfer.slaveAddr = slaveAddr;\n+   xfer.txBuff = &cmd;\n+   xfer.txSz = 1;\n+   xfer.rxBuff = buff;\n+   xfer.rxSz = len;\n+   while (Chip_I2C_MasterTransfer(id, &xfer) == I2C_STATUS_ARBLOST) {}\n+   return len - xfer.rxSz;\n+}\n+\n+/* Sequential master read */\n+int Chip_I2C_MasterRead(I2C_ID_T id, uint8_t slaveAddr, uint8_t *buff, int len)\n+{\n+   I2C_XFER_T xfer = {0};\n+   xfer.slaveAddr = slaveAddr;\n+   xfer.rxBuff = buff;\n+   xfer.rxSz = len;\n+   while (Chip_I2C_MasterTransfer(id, &xfer) == I2C_STATUS_ARBLOST) {}\n+   return len - xfer.rxSz;\n+}\n+\n+/* Check if master state is active */\n+int Chip_I2C_IsMasterActive(I2C_ID_T id)\n+{\n+   return isMasterState(i2c[id].ip);\n+}\n+\n+/* State change handler for master transfer */\n+void Chip_I2C_MasterStateHandler(I2C_ID_T id)\n+{\n+   if (!handleMasterXferState(i2c[id].ip, i2c[id].mXfer)) {\n+       i2c[id].mEvent(id, I2C_EVENT_DONE);\n+   }\n+}\n+\n+/* Setup slave function */\n+void Chip_I2C_SlaveSetup(I2C_ID_T id,\n+                        I2C_SLAVE_ID sid,\n+                        I2C_XFER_T *xfer,\n+                        I2C_EVENTHANDLER_T event,\n+                        uint8_t addrMask)\n+{\n+   struct i2c_interface *iic = &i2c[id];\n+   struct i2c_slave_interface *si2c = &i2c_slave[id][sid];\n+   si2c->xfer = xfer;\n+   si2c->event = event;\n+\n+   /* Set up the slave address */\n+   if (sid != I2C_SLAVE_GENERAL) {\n+       setSlaveAddr(iic->ip, sid, xfer->slaveAddr, addrMask);\n+   }\n+\n+   if (!SLAVE_ACTIVE(iic) && !iic->mXfer) {\n+       startSlaverXfer(iic->ip);\n+   }\n+   iic->flags |= 1 << (sid + 8);\n+}\n+\n+/* I2C Slave event handler */\n+void Chip_I2C_SlaveStateHandler(I2C_ID_T id)\n+{\n+   int ret;\n+   struct i2c_interface *iic = &i2c[id];\n+\n+   /* Get the currently addressed slave */\n+   if (!iic->sXfer) {\n+       struct i2c_slave_interface *si2c;\n+\n+       I2C_SLAVE_ID sid = getSlaveIndex(iic->ip);\n+       si2c = &i2c_slave[id][sid];\n+       iic->sXfer = si2c->xfer;\n+       iic->sEvent = si2c->event;\n+   }\n+\n+   iic->sXfer->slaveAddr |= iic->mXfer != 0;\n+   ret = handleSlaveXferState(iic->ip, iic->sXfer);\n+   if (ret) {\n+       if (iic->sXfer->status == I2C_STATUS_DONE) {\n+           iic->sXfer = 0;\n+       }\n+       iic->sEvent(id, (I2C_EVENT_T) ret);\n+   }\n+}\n+\n+/* Disable I2C device */\n+void Chip_I2C_Disable(I2C_ID_T id)\n+{\n+   LPC_I2Cx(id)->CONCLR = I2C_I2CONCLR_I2ENC;\n+}\n+\n+/* State change checking */\n+int Chip_I2C_IsStateChanged(I2C_ID_T id)\n+{\n+   return (LPC_I2Cx(id)->CONSET & I2C_CON_SI) != 0;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/i2cm_18xx_43xx.c ./lpc_chip_43xx/src/i2cm_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/i2cm_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/i2cm_18xx_43xx.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,265 @@\n+/*\n+ * @brief LPC18xx/43xx I2C master driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Control flags */\n+#define I2C_CON_FLAGS (I2C_CON_AA | I2C_CON_SI | I2C_CON_STO | I2C_CON_STA)\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+/* Get the ADC Clock Rate */\n+static CHIP_CCU_CLK_T i2cm_getClkId(LPC_I2C_T *pI2C)\n+{\n+   return (pI2C == LPC_I2C0)? CLK_APB1_I2C0 : CLK_APB3_I2C1;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the LPC_I2C peripheral with specified parameter */\n+void Chip_I2CM_Init(LPC_I2C_T *pI2C)\n+{\n+   /* Enable I2C clock */\n+   Chip_Clock_Enable(i2cm_getClkId(pI2C));\n+   /* Reset I2C state machine */\n+   Chip_I2CM_ResetControl(pI2C);\n+}\n+\n+/* De-initializes the I2C peripheral registers to their default reset values */\n+void Chip_I2CM_DeInit(LPC_I2C_T *pI2C)\n+{\n+   /* Reset I2C state machine */\n+   Chip_I2CM_ResetControl(pI2C);\n+   /* Disable I2C clock */\n+   Chip_Clock_Disable(i2cm_getClkId(pI2C));\n+}\n+\n+/* Set up bus speed for LPC_I2C interface */\n+void Chip_I2CM_SetBusSpeed(LPC_I2C_T *pI2C, uint32_t busSpeed)\n+{\n+   uint32_t clockDiv = (Chip_Clock_GetRate(i2cm_getClkId(pI2C)) / busSpeed);\n+\n+   Chip_I2CM_SetDutyCycle(pI2C, (clockDiv >> 1), (clockDiv - (clockDiv >> 1)));\n+}\n+\n+/* Master transfer state change handler handler */\n+uint32_t Chip_I2CM_XferHandler(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+   uint32_t cclr = I2C_CON_FLAGS;\n+\n+   switch (Chip_I2CM_GetCurState(pI2C)) {\n+   case 0x08:      /* Start condition on bus */\n+   case 0x10:      /* Repeated start condition */\n+       pI2C->DAT = (xfer->slaveAddr << 1) | (xfer->txSz == 0);\n+       break;\n+\n+   /* Tx handling */\n+   case 0x20:      /* SLA+W sent NAK received */\n+   case 0x30:      /* DATA sent NAK received */\n+       if ((xfer->options & I2CM_XFER_OPTION_IGNORE_NACK) == 0) {\n+           xfer->status = I2CM_STATUS_NAK;\n+           cclr &= ~I2C_CON_STO;\n+           break;\n+       }\n+\n+   case 0x18:      /* SLA+W sent and ACK received */\n+   case 0x28:      /* DATA sent and ACK received */\n+       if (!xfer->txSz) {\n+           if (xfer->rxSz) {\n+               cclr &= ~I2C_CON_STA;\n+           }\n+           else {\n+               xfer->status = I2CM_STATUS_OK;\n+               cclr &= ~I2C_CON_STO;\n+           }\n+\n+       }\n+       else {\n+           pI2C->DAT = *xfer->txBuff++;\n+           xfer->txSz--;\n+       }\n+       break;\n+\n+   /* Rx handling */\n+   case 0x58:      /* Data Received and NACK sent */\n+   case 0x50:      /* Data Received and ACK sent */\n+       *xfer->rxBuff++ = pI2C->DAT;\n+       xfer->rxSz--;\n+\n+   case 0x40:      /* SLA+R sent and ACK received */\n+       if ((xfer->rxSz > 1) || (xfer->options & I2CM_XFER_OPTION_LAST_RX_ACK)) {\n+           cclr &= ~I2C_CON_AA;\n+       }\n+       if (xfer->rxSz == 0) {\n+           xfer->status = I2CM_STATUS_OK;\n+           cclr &= ~I2C_CON_STO;\n+       }\n+       break;\n+\n+   /* NAK Handling */\n+   case 0x48:      /* SLA+R sent NAK received */\n+       xfer->status = I2CM_STATUS_SLAVE_NAK;\n+       cclr &= ~I2C_CON_STO;\n+       break;\n+\n+   case 0x38:      /* Arbitration lost */\n+       xfer->status = I2CM_STATUS_ARBLOST;\n+       break;\n+\n+   case 0x00:      /* Bus Error */\n+       xfer->status = I2CM_STATUS_BUS_ERROR;\n+       cclr &= ~I2C_CON_STO;\n+        break;\n+    default:\n+       xfer->status = I2CM_STATUS_ERROR;\n+       cclr &= ~I2C_CON_STO;\n+        break;\n+   }\n+\n+   /* Set clear control flags */\n+   pI2C->CONSET = cclr ^ I2C_CON_FLAGS;\n+   /* Stop flag should not be cleared as it is a reserved bit */\n+   pI2C->CONCLR = cclr & (I2C_CON_AA | I2C_CON_SI | I2C_CON_STA);\n+\n+   return xfer->status != I2CM_STATUS_BUSY;\n+}\n+\n+/* Transmit and Receive data in master mode */\n+void Chip_I2CM_Xfer(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+   /* set the transfer status as busy */\n+   xfer->status = I2CM_STATUS_BUSY;\n+   /* Clear controller state. */\n+   Chip_I2CM_ResetControl(pI2C);\n+   /* Enter to Master Transmitter mode */\n+   Chip_I2CM_SendStart(pI2C);\n+}\n+\n+/* Transmit and Receive data in master mode */\n+uint32_t Chip_I2CM_XferBlocking(LPC_I2C_T *pI2C, I2CM_XFER_T *xfer)\n+{\n+   uint32_t ret = 0;\n+   /* start transfer */\n+   Chip_I2CM_Xfer(pI2C, xfer);\n+\n+   while (ret == 0) {\n+       /* wait for status change interrupt */\n+       while ( Chip_I2CM_StateChanged(pI2C) == 0) {}\n+       /* call state change handler */\n+       ret = Chip_I2CM_XferHandler(pI2C, xfer);\n+   }\n+   return ret;\n+}\n+\n+/* Master tx only */\n+uint32_t Chip_I2CM_Write(LPC_I2C_T *pI2C, const uint8_t *buff, uint32_t len)\n+{\n+   uint32_t txLen = 0, err = 0;\n+\n+   /* clear state change interrupt status */\n+   Chip_I2CM_ClearSI(pI2C);\n+   /* generate START condition */\n+   Chip_I2CM_SendStart(pI2C);\n+\n+   while ((txLen < len) && (err == 0)) {\n+       /* wait for status change interrupt */\n+       while ( Chip_I2CM_StateChanged(pI2C) == 0) {}\n+\n+       /* check status and send data */\n+       switch (Chip_I2CM_GetCurState(pI2C)) {\n+       case 0x08:      /* Start condition on bus */\n+       case 0x10:      /* Repeated start condition */\n+       case 0x18:      /* SLA+W sent and ACK received */\n+       case 0x28:      /* DATA sent and ACK received */\n+           Chip_I2CM_WriteByte(pI2C, buff[txLen++]);\n+           break;\n+\n+       case 0x38:      /* Arbitration lost */\n+           break;\n+\n+       default:        /* we shouldn't be in any other state */\n+           err = 1;\n+           break;\n+       }\n+       /* clear state change interrupt status */\n+       Chip_I2CM_ClearSI(pI2C);\n+   }\n+\n+   return txLen;\n+}\n+\n+/* Sequential master read */\n+uint32_t Chip_I2CM_Read(LPC_I2C_T *pI2C, uint8_t *buff, uint32_t len)\n+{\n+   uint32_t rxLen = 0, err = 0;\n+\n+   /* clear state change interrupt status */\n+   Chip_I2CM_ClearSI(pI2C);\n+   /* generate START condition and auto-ack data received */\n+   pI2C->CONSET = I2C_CON_AA | I2C_CON_STA;\n+\n+   while ((rxLen < len) && (err == 0)) {\n+       /* wait for status change interrupt */\n+       while ( Chip_I2CM_StateChanged(pI2C) == 0) {}\n+\n+       /* check status and send data */\n+       switch (Chip_I2CM_GetCurState(pI2C)) {\n+       case 0x08:      /* Start condition on bus */\n+       case 0x10:      /* Repeated start condition */\n+       case 0x40:      /* SLA+R sent and ACK received */\n+       case 0x50:      /* Data Received and ACK sent */\n+           buff[rxLen++] = Chip_I2CM_ReadByte(pI2C);\n+           break;\n+\n+       case 0x38:      /* Arbitration lost */\n+           break;\n+\n+       default:        /* we shouldn't be in any other state */\n+           err = 1;\n+           break;\n+       }\n+       /* clear state change interrupt status */\n+       Chip_I2CM_ClearSI(pI2C);\n+   }\n+\n+   return rxLen;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/i2s_18xx_43xx.c ./lpc_chip_43xx/src/i2s_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/i2s_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/i2s_18xx_43xx.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,258 @@\n+/*\n+ * @brief LPC18xx/43xx I2S driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Get divider value */\n+STATIC Status getClkDiv(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format, uint16_t *pxDiv, uint16_t *pyDiv, uint32_t *pN)\n+{\n+   uint32_t pClk;\n+   uint32_t x, y;\n+   uint64_t divider;\n+   uint16_t dif;\n+   uint16_t xDiv = 0, yDiv = 0;\n+   uint32_t N;\n+   uint16_t err, ErrorOptimal = 0xFFFF;\n+\n+   pClk = Chip_Clock_GetRate(CLK_APB1_I2S);\n+\n+   /* divider is a fixed point number with 16 fractional bits */\n+   divider = (((uint64_t) (format->SampleRate) * 2 * (format->WordWidth) * 2) << 16) / pClk;\n+   /* find N that make x/y <= 1 -> divider <= 2^16 */\n+   for (N = 64; N > 0; N--) {\n+       if ((divider * N) < (1 << 16)) {\n+           break;\n+       }\n+   }\n+   if (N == 0) {\n+       return ERROR;\n+   }\n+   divider *= N;\n+   for (y = 255; y > 0; y--) {\n+       x = y * divider;\n+       if (x & (0xFF000000)) {\n+           continue;\n+       }\n+       dif = x & 0xFFFF;\n+       if (dif > 0x8000) {\n+           err = 0x10000 - dif;\n+       }\n+       else {\n+           err = dif;\n+       }\n+       if (err == 0) {\n+           yDiv = y;\n+           break;\n+       }\n+       else if (err < ErrorOptimal) {\n+           ErrorOptimal = err;\n+           yDiv = y;\n+       }\n+   }\n+   xDiv = ((uint64_t) yDiv * (format->SampleRate) * 2 * (format->WordWidth) * N * 2) / pClk;\n+   if (xDiv >= 256) {\n+       xDiv = 0xFF;\n+   }\n+   if (xDiv == 0) {\n+       xDiv = 1;\n+   }\n+\n+   *pxDiv = xDiv;\n+   *pyDiv = yDiv;\n+   *pN = N;\n+   return SUCCESS;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the I2S interface */\n+void Chip_I2S_Init(LPC_I2S_T *pI2S)\n+{\n+   Chip_Clock_Enable(CLK_APB1_I2S);\n+}\n+\n+/* Shutdown I2S */\n+void Chip_I2S_DeInit(LPC_I2S_T *pI2S)\n+{\n+   pI2S->DAI = 0x07E1;\n+   pI2S->DAO = 0x87E1;\n+   pI2S->IRQ = 0;\n+   pI2S->TXMODE = 0;\n+   pI2S->RXMODE = 0;\n+   pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] = 0;\n+   pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] = 0;\n+   Chip_Clock_Disable(CLK_APB1_I2S);\n+}\n+\n+/* Configure I2S for Audio Format input */\n+Status Chip_I2S_TxConfig(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format)\n+{\n+   uint32_t temp;\n+   uint16_t xDiv, yDiv;\n+   uint32_t N;\n+\n+   if (getClkDiv(pI2S, format, &xDiv, &yDiv, &N) == ERROR) {\n+       return ERROR;\n+   }\n+\n+   temp = pI2S->DAO & (~(I2S_DAO_WORDWIDTH_MASK | I2S_DAO_MONO | I2S_DAO_SLAVE | I2S_DAO_WS_HALFPERIOD_MASK));\n+   if (format->WordWidth <= 8) {\n+       temp |= I2S_WORDWIDTH_8;\n+   }\n+   else if (format->WordWidth <= 16) {\n+       temp |= I2S_WORDWIDTH_16;\n+   }\n+   else {\n+       temp |= I2S_WORDWIDTH_32;\n+   }\n+\n+   temp |= (format->ChannelNumber) == 1 ? I2S_MONO : I2S_STEREO;\n+   temp |= I2S_MASTER_MODE;\n+   temp |= I2S_DAO_WS_HALFPERIOD(format->WordWidth - 1);\n+   pI2S->DAO = temp;\n+   pI2S->TXMODE = I2S_TXMODE_CLKSEL(0);\n+   pI2S->TXBITRATE = N - 1;\n+   pI2S->TXRATE = yDiv | (xDiv << 8);\n+   return SUCCESS;\n+}\n+\n+/* Configure I2S for Audio Format input */\n+Status Chip_I2S_RxConfig(LPC_I2S_T *pI2S, I2S_AUDIO_FORMAT_T *format)\n+{\n+   uint32_t temp;\n+   uint16_t xDiv, yDiv;\n+   uint32_t N;\n+\n+   if (getClkDiv(pI2S, format, &xDiv, &yDiv, &N) == ERROR) {\n+       return ERROR;\n+   }\n+   temp = pI2S->DAI & (~(I2S_DAI_WORDWIDTH_MASK | I2S_DAI_MONO | I2S_DAI_SLAVE | I2S_DAI_WS_HALFPERIOD_MASK));\n+   if (format->WordWidth <= 8) {\n+       temp |= I2S_WORDWIDTH_8;\n+   }\n+   else if (format->WordWidth <= 16) {\n+       temp |= I2S_WORDWIDTH_16;\n+   }\n+   else {\n+       temp |= I2S_WORDWIDTH_32;\n+   }\n+\n+   temp |= (format->ChannelNumber) == 1 ? I2S_MONO : I2S_STEREO;\n+   temp |= I2S_MASTER_MODE;\n+   temp |= I2S_DAI_WS_HALFPERIOD(format->WordWidth - 1);\n+   pI2S->DAI = temp;\n+   pI2S->RXMODE = I2S_RXMODE_CLKSEL(0);\n+   pI2S->RXBITRATE = N - 1;\n+   pI2S->RXRATE = yDiv | (xDiv << 8);\n+   return SUCCESS;\n+}\n+\n+/* Enable/Disable Interrupt with a specific FIFO depth */\n+void Chip_I2S_Int_TxCmd(LPC_I2S_T *pI2S, FunctionalState newState, uint8_t depth)\n+{\n+   uint32_t temp;\n+   depth &= 0x0F;\n+   if (newState == ENABLE) {\n+       temp = pI2S->IRQ & (~I2S_IRQ_TX_DEPTH_MASK);\n+       pI2S->IRQ = temp | (I2S_IRQ_TX_DEPTH(depth));\n+       pI2S->IRQ |= 0x02;\n+   }\n+   else {\n+       pI2S->IRQ &= (~0x02);\n+   }\n+}\n+\n+/* Enable/Disable Interrupt with a specific FIFO depth */\n+void Chip_I2S_Int_RxCmd(LPC_I2S_T *pI2S, FunctionalState newState, uint8_t depth)\n+{\n+   uint32_t temp;\n+   depth &= 0x0F;\n+   if (newState == ENABLE) {\n+       temp = pI2S->IRQ & (~I2S_IRQ_RX_DEPTH_MASK);\n+       pI2S->IRQ = temp | (I2S_IRQ_RX_DEPTH(depth));\n+       pI2S->IRQ |= 0x01;\n+   }\n+   else {\n+       pI2S->IRQ &= (~0x01);\n+   }\n+}\n+\n+/* Enable/Disable DMA with a specific FIFO depth */\n+void Chip_I2S_DMA_TxCmd(LPC_I2S_T *pI2S,\n+                       I2S_DMA_CHANNEL_T dmaNum,\n+                       FunctionalState newState,\n+                       uint8_t depth)\n+{\n+   /* Enable/Disable I2S transmit*/\n+   if (newState == ENABLE) {\n+       /* Set FIFO Level */\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] &= ~(0x0F << 16);\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] |= depth << 16;\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] |= 0x02;\n+   }\n+   else {\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_1] &= ~0x02;\n+   }\n+}\n+\n+/* Enable/Disable DMA with a specific FIFO depth */\n+void Chip_I2S_DMA_RxCmd(LPC_I2S_T *pI2S,\n+                       I2S_DMA_CHANNEL_T dmaNum,\n+                       FunctionalState newState,\n+                       uint8_t depth)\n+{\n+\n+   /* Enable/Disable I2S Receive */\n+   if (newState == ENABLE) {\n+       /* Set FIFO Level */\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] &= ~(0x0F << 8);\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] |= depth << 8;\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] |= 0x01;\n+   }\n+   else {\n+       pI2S->DMA[I2S_DMA_REQUEST_CHANNEL_2] &= ~0x01;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/iap_18xx_43xx.c ./lpc_chip_43xx/src/iap_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/iap_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/iap_18xx_43xx.c\t2017-02-27 21:03:17.048043464 -0300\n@@ -0,0 +1,191 @@\n+/*\n+ * @brief Common FLASH IAP support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Prepare sector for write operation */\n+uint8_t Chip_IAP_PreSectorForReadWrite(uint32_t strSector, uint32_t endSector, uint8_t flashBank)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_PREWRRITE_CMD;\n+   command[1] = strSector;\n+   command[2] = endSector;\n+   command[3] = flashBank;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Copy RAM to flash */\n+uint8_t Chip_IAP_CopyRamToFlash(uint32_t dstAdd, uint32_t *srcAdd, uint32_t byteswrt)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_WRISECTOR_CMD;\n+   command[1] = dstAdd;\n+   command[2] = (uint32_t) srcAdd;\n+   command[3] = byteswrt;\n+   command[4] = SystemCoreClock / 1000;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Erase sector */\n+uint8_t Chip_IAP_EraseSector(uint32_t strSector, uint32_t endSector, uint8_t flashBank)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_ERSSECTOR_CMD;\n+   command[1] = strSector;\n+   command[2] = endSector;\n+   command[3] = SystemCoreClock / 1000;\n+   command[4] = flashBank;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Blank check sector */\n+uint8_t Chip_IAP_BlankCheckSector(uint32_t strSector, uint32_t endSector, uint8_t flashBank)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_BLANK_CHECK_SECTOR_CMD;\n+   command[1] = strSector;\n+   command[2] = endSector;\n+   command[3] = flashBank;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Read part identification number */\n+uint32_t Chip_IAP_ReadPID()\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_REPID_CMD;\n+   iap_entry(command, result);\n+\n+   return result[1];\n+}\n+\n+/* Read boot code version number */\n+uint8_t Chip_IAP_ReadBootCode()\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_READ_BOOT_CODE_CMD;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* IAP compare */\n+uint8_t Chip_IAP_Compare(uint32_t dstAdd, uint32_t srcAdd, uint32_t bytescmp)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_COMPARE_CMD;\n+   command[1] = dstAdd;\n+   command[2] = srcAdd;\n+   command[3] = bytescmp;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Reinvoke ISP */\n+uint8_t Chip_IAP_ReinvokeISP()\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_REINVOKE_ISP_CMD;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Read the unique ID */\n+uint32_t Chip_IAP_ReadUID()\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_READ_UID_CMD;\n+   iap_entry(command, result);\n+\n+   return result[1];\n+}\n+\n+/* Erase page */\n+uint8_t Chip_IAP_ErasePage(uint32_t strPage, uint32_t endPage)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_ERASE_PAGE_CMD;\n+   command[1] = strPage;\n+   command[2] = endPage;\n+   command[3] = SystemCoreClock / 1000;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\n+\n+/* Set active boot flash bank */\n+uint8_t Chip_IAP_SetBootFlashBank(uint8_t bankNum)\n+{\n+    unsigned int command[5], result[4];\n+\n+   command[0] = IAP_SET_BOOT_FLASH;\n+   command[1] = bankNum;\n+   command[2] = SystemCoreClock / 1000;\n+   iap_entry(command, result);\n+\n+   return result[0];\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/lcd_18xx_43xx.c ./lpc_chip_43xx/src/lcd_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/lcd_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/lcd_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,206 @@\n+/*\n+ * @brief LPC18xx/43xx LCD chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+static LCD_CURSOR_SIZE_OPT_T LCD_Cursor_Size = LCD_CURSOR_64x64;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the LCD controller */\n+void Chip_LCD_Init(LPC_LCD_T *pLCD, LCD_CONFIG_T *LCD_ConfigStruct)\n+{\n+   uint32_t i, regValue, *pPal;\n+   uint32_t pcd;\n+\n+   /* Enable LCD Clock */\n+   Chip_Clock_EnableOpts(CLK_MX_LCD, true, true, 1);\n+\n+   /* disable the display */\n+   pLCD->CTRL &= ~CLCDC_LCDCTRL_ENABLE;\n+\n+   /* Setting LCD_TIMH register */\n+   regValue = ( ((((LCD_ConfigStruct->PPL / 16) - 1) & 0x3F) << 2)\n+                |         (( (LCD_ConfigStruct->HSW - 1)    & 0xFF) << 8)\n+                |         (( (LCD_ConfigStruct->HFP - 1)    & 0xFF) << 16)\n+                |         (( (LCD_ConfigStruct->HBP - 1)    & 0xFF) << 24) );\n+   pLCD->TIMH = regValue;\n+\n+   /* Setting LCD_TIMV register */\n+   regValue = ((((LCD_ConfigStruct->LPP - 1) & 0x3FF) << 0)\n+               |        (((LCD_ConfigStruct->VSW - 1) & 0x03F) << 10)\n+               |        (((LCD_ConfigStruct->VFP - 1) & 0x0FF) << 16)\n+               |        (((LCD_ConfigStruct->VBP - 1) & 0x0FF) << 24) );\n+   pLCD->TIMV = regValue;\n+\n+   /* Generate the clock and signal polarity control word */\n+   regValue = 0;\n+   regValue = (((LCD_ConfigStruct->ACB - 1) & 0x1F) << 6);\n+   regValue |= (LCD_ConfigStruct->IOE & 1) << 14;\n+   regValue |= (LCD_ConfigStruct->IPC & 1) << 13;\n+   regValue |= (LCD_ConfigStruct->IHS & 1) << 12;\n+   regValue |= (LCD_ConfigStruct->IVS & 1) << 11;\n+\n+   /* Compute clocks per line based on panel type */\n+   switch (LCD_ConfigStruct->LCD) {\n+   case LCD_MONO_4:\n+       regValue |= ((((LCD_ConfigStruct->PPL / 4) - 1) & 0x3FF) << 16);\n+       break;\n+\n+   case LCD_MONO_8:\n+       regValue |= ((((LCD_ConfigStruct->PPL / 8) - 1) & 0x3FF) << 16);\n+       break;\n+\n+   case LCD_CSTN:\n+       regValue |= (((((LCD_ConfigStruct->PPL * 3) / 8) - 1) & 0x3FF) << 16);\n+       break;\n+\n+   case LCD_TFT:\n+   default:\n+       regValue |=  /*1<<26 |*/ (((LCD_ConfigStruct->PPL - 1) & 0x3FF) << 16);\n+   }\n+\n+   /* panel clock divisor */\n+   pcd = 5;// LCD_ConfigStruct->pcd;   // TODO: should be calculated from LCDDCLK\n+   pcd &= 0x3FF;\n+   regValue |=  ((pcd >> 5) << 27) | ((pcd) & 0x1F);\n+   pLCD->POL = regValue;\n+\n+   /* disable interrupts */\n+   pLCD->INTMSK = 0;\n+\n+   /* set bits per pixel */\n+   regValue = LCD_ConfigStruct->BPP << 1;\n+\n+   /* set color format RGB */\n+   regValue |= LCD_ConfigStruct->color_format << 8;\n+   regValue |= LCD_ConfigStruct->LCD << 4;\n+   if (LCD_ConfigStruct->Dual == 1) {\n+       regValue |= 1 << 7;\n+   }\n+   pLCD->CTRL = regValue;\n+\n+   /* clear palette */\n+   pPal = (uint32_t *) (&(pLCD->PAL));\n+   for (i = 0; i < 128; i++) {\n+       *pPal = 0;\n+       pPal++;\n+   }\n+}\n+\n+/* Shutdown the LCD controller */\n+void Chip_LCD_DeInit(LPC_LCD_T *pLCD)\n+{\n+   Chip_Clock_Disable(CLK_MX_LCD);\n+}\n+\n+/* Configure Cursor */\n+void Chip_LCD_Cursor_Config(LPC_LCD_T *pLCD, LCD_CURSOR_SIZE_OPT_T cursor_size, bool sync)\n+{\n+   LCD_Cursor_Size = cursor_size;\n+   pLCD->CRSR_CFG = ((sync ? 1 : 0) << 1) | cursor_size;\n+}\n+\n+/* Write Cursor Image into Internal Cursor Image Buffer */\n+void Chip_LCD_Cursor_WriteImage(LPC_LCD_T *pLCD, uint8_t cursor_num, void *Image)\n+{\n+   int i, j;\n+   uint32_t *fifoptr, *crsr_ptr = (uint32_t *) Image;\n+\n+   /* Check if Cursor Size was configured as 32x32 or 64x64*/\n+   if (LCD_Cursor_Size == LCD_CURSOR_32x32) {\n+       i = cursor_num * 64;\n+       j = i + 64;\n+   }\n+   else {\n+       i = 0;\n+       j = 256;\n+   }\n+   fifoptr = (void *) &(pLCD->CRSR_IMG[0]);\n+\n+   /* Copy Cursor Image content to FIFO */\n+   for (; i < j; i++) {\n+\n+       *fifoptr = *crsr_ptr;\n+       crsr_ptr++;\n+       fifoptr++;\n+   }\n+}\n+\n+/* Load LCD Palette */\n+void Chip_LCD_LoadPalette(LPC_LCD_T *pLCD, void *palette)\n+{\n+   LCD_PALETTE_ENTRY_T pal_entry = {0};\n+   uint8_t i, *pal_ptr;\n+   /* This function supports loading of the color palette from\n+      the C file generated by the bmp2c utility. It expects the\n+      palette to be passed as an array of 32-bit BGR entries having\n+      the following format:\n+      2:0 - Not used\n+      7:3 - Blue\n+      10:8 - Not used\n+      15:11 - Green\n+      18:16 - Not used\n+      23:19 - Red\n+      31:24 - Not used\n+      arg = pointer to input palette table address */\n+   pal_ptr = (uint8_t *) palette;\n+\n+   /* 256 entry in the palette table */\n+   for (i = 0; i < 256 / 2; i++) {\n+       pal_entry.Bl = (*pal_ptr++) >> 3;   /* blue first */\n+       pal_entry.Gl = (*pal_ptr++) >> 3;   /* get green */\n+       pal_entry.Rl = (*pal_ptr++) >> 3;   /* get red */\n+       pal_ptr++;  /* skip over the unused byte */\n+       /* do the most significant halfword of the palette */\n+       pal_entry.Bu = (*pal_ptr++) >> 3;   /* blue first */\n+       pal_entry.Gu = (*pal_ptr++) >> 3;   /* get green */\n+       pal_entry.Ru = (*pal_ptr++) >> 3;   /* get red */\n+       pal_ptr++;  /* skip over the unused byte */\n+\n+       pLCD->PAL[i] = *((uint32_t *)&pal_entry);\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/otp_18xx_43xx.c ./lpc_chip_43xx/src/otp_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/otp_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/otp_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,145 @@\n+/*\n+ * @brief LPC18xx/43xx OTP Controller driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define BOOTROM_BASE            0x10400100\n+#define OTP_API_TABLE_OFFSET    0x1\n+\n+static unsigned long *BOOTROM_API_TABLE;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+static uint32_t (*Otp_ProgBootSrc)(CHIP_OTP_BOOT_SRC_T BootSrc);\n+static uint32_t (*Otp_ProgJTAGDis)(void);\n+static uint32_t (*Otp_ProgUSBID)(uint32_t ProductID, uint32_t VendorID);\n+static uint32_t (*Otp_ProgGP0)(uint32_t Data, uint32_t Mask);\n+static uint32_t (*Otp_ProgGP1)(uint32_t Data, uint32_t Mask);\n+static uint32_t (*Otp_ProgGP2)(uint32_t Data, uint32_t Mask);\n+static uint32_t (*Otp_ProgKey1)(uint8_t *key);\n+static uint32_t (*Otp_ProgKey2)(uint8_t *key);\n+static uint32_t (*Otp_GenRand)(void);\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* CHIP OTP Initialisation function */\n+uint32_t Chip_OTP_Init(void)\n+{\n+   uint32_t (*ROM_otp_Init)(void);\n+\n+   BOOTROM_API_TABLE = *((unsigned long * *) BOOTROM_BASE + OTP_API_TABLE_OFFSET);\n+\n+   ROM_otp_Init      = (uint32_t (*)(void))BOOTROM_API_TABLE[0];\n+   Otp_ProgBootSrc   = (uint32_t (*)(CHIP_OTP_BOOT_SRC_T BootSrc))BOOTROM_API_TABLE[1];\n+   Otp_ProgJTAGDis   = (uint32_t (*)(void))BOOTROM_API_TABLE[2];\n+   Otp_ProgUSBID     = (uint32_t (*)(uint32_t ProductID, uint32_t VendorID))BOOTROM_API_TABLE[3];\n+   Otp_ProgGP0       = (uint32_t (*)(uint32_t Data, uint32_t Mask))BOOTROM_API_TABLE[8];\n+   Otp_ProgGP1       = (uint32_t (*)(uint32_t Data, uint32_t Mask))BOOTROM_API_TABLE[9];\n+   Otp_ProgGP2       = (uint32_t (*)(uint32_t Data, uint32_t Mask))BOOTROM_API_TABLE[10];\n+   Otp_ProgKey1      = (uint32_t (*)(uint8_t *key))BOOTROM_API_TABLE[11];\n+   Otp_ProgKey2      = (uint32_t (*)(uint8_t *key))BOOTROM_API_TABLE[12];\n+   Otp_GenRand       = (uint32_t (*)(void))BOOTROM_API_TABLE[13];\n+\n+   return ROM_otp_Init();\n+}\n+\n+/* Program boot source in OTP Controller */\n+uint32_t Chip_OTP_ProgBootSrc(CHIP_OTP_BOOT_SRC_T BootSrc)\n+{\n+   return Otp_ProgBootSrc(BootSrc);\n+}\n+\n+/* Program the JTAG bit in OTP Controller */\n+uint32_t Chip_OTP_ProgJTAGDis(void)\n+{\n+   return Otp_ProgJTAGDis();\n+}\n+\n+/* Program USB ID in OTP Controller */\n+uint32_t Chip_OTP_ProgUSBID(uint32_t ProductID, uint32_t VendorID)\n+{\n+   return Otp_ProgUSBID(ProductID, VendorID);\n+}\n+\n+/* Program OTP GP Word memory */\n+uint32_t Chip_OTP_ProgGPWord(uint32_t WordNum, uint32_t Data, uint32_t Mask)\n+{\n+   uint32_t status;\n+\n+   switch (WordNum) {\n+   case 1:\n+       status = Otp_ProgGP1(Data, Mask);\n+       break;\n+\n+   case 2:\n+       status = Otp_ProgGP2(Data, Mask);\n+       break;\n+\n+   case 0:\n+   default:\n+       status = Otp_ProgGP0(Data, Mask);\n+       break;\n+   }\n+\n+   return status;\n+}\n+\n+/* Program AES Key */\n+uint32_t Chip_OTP_ProgKey(uint32_t KeyNum, uint8_t *key)\n+{\n+   uint32_t status;\n+\n+   if (KeyNum) {\n+       status = Otp_ProgKey2(key);\n+   }\n+   else {\n+       status = Otp_ProgKey1(key);\n+   }\n+   return status;\n+}\n+\n+/* Generate Random Number using HW Random Number Generator */\n+uint32_t Chip_OTP_GenRand(void)\n+{\n+   return Otp_GenRand();\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/pinint_18xx_43xx.c ./lpc_chip_43xx/src/pinint_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/pinint_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/pinint_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,48 @@\n+/*\n+ * @brief LPC18xx/43xx Pin Interrupt and Pattern Match driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licenser disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/pmc_18xx_43xx.c ./lpc_chip_43xx/src/pmc_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/pmc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/pmc_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,69 @@\n+/*\n+ * @brief LPC18xx/43xx Power Management Controller driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Set to sleep mode */\n+void Chip_PMC_Sleep(void)\n+{\n+   /* Sleep Mode*/\n+   __WFI();\n+}\n+\n+/* Set power state */\n+void Chip_PMC_Set_PwrState(CHIP_PMC_PWR_STATE_T PwrState)\n+{\n+\n+   /* Set Deep sleep mode bit in System Control register of M4 core */\n+   SCB->SCR = 0x4;\n+\n+   /* Set power state in PMC */\n+   LPC_PMC->PD0_SLEEP0_MODE = (uint32_t) PwrState;\n+\n+   __WFI();\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/ring_buffer.c ./lpc_chip_43xx/src/ring_buffer.c\n--- a_OkB2vL/lpc_chip_43xx/src/ring_buffer.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/ring_buffer.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,167 @@\n+/*\n+ * @brief Common ring buffer support functions\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include <string.h>\n+#include \"ring_buffer.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define RB_INDH(rb)                ((rb)->head & ((rb)->count - 1))\n+#define RB_INDT(rb)                ((rb)->tail & ((rb)->count - 1))\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize ring buffer */\n+int RingBuffer_Init(RINGBUFF_T *RingBuff, void *buffer, int itemSize, int count)\n+{\n+   RingBuff->data = buffer;\n+   RingBuff->count = count;\n+   RingBuff->itemSz = itemSize;\n+   RingBuff->head = RingBuff->tail = 0;\n+\n+   return 1;\n+}\n+\n+/* Insert a single item into Ring Buffer */\n+int RingBuffer_Insert(RINGBUFF_T *RingBuff, const void *data)\n+{\n+   uint8_t *ptr = RingBuff->data;\n+\n+   /* We cannot insert when queue is full */\n+   if (RingBuffer_IsFull(RingBuff))\n+       return 0;\n+\n+   ptr += RB_INDH(RingBuff) * RingBuff->itemSz;\n+   memcpy(ptr, data, RingBuff->itemSz);\n+   RingBuff->head++;\n+\n+   return 1;\n+}\n+\n+/* Insert multiple items into Ring Buffer */\n+int RingBuffer_InsertMult(RINGBUFF_T *RingBuff, const void *data, int num)\n+{\n+   uint8_t *ptr = RingBuff->data;\n+   int cnt1, cnt2;\n+\n+   /* We cannot insert when queue is full */\n+   if (RingBuffer_IsFull(RingBuff))\n+       return 0;\n+\n+   /* Calculate the segment lengths */\n+   cnt1 = cnt2 = RingBuffer_GetFree(RingBuff);\n+   if (RB_INDH(RingBuff) + cnt1 >= RingBuff->count)\n+       cnt1 = RingBuff->count - RB_INDH(RingBuff);\n+   cnt2 -= cnt1;\n+\n+   cnt1 = MIN(cnt1, num);\n+   num -= cnt1;\n+\n+   cnt2 = MIN(cnt2, num);\n+   num -= cnt2;\n+\n+   /* Write segment 1 */\n+   ptr += RB_INDH(RingBuff) * RingBuff->itemSz;\n+   memcpy(ptr, data, cnt1 * RingBuff->itemSz);\n+   RingBuff->head += cnt1;\n+\n+   /* Write segment 2 */\n+   ptr = (uint8_t *) RingBuff->data + RB_INDH(RingBuff) * RingBuff->itemSz;\n+   data = (const uint8_t *) data + cnt1 * RingBuff->itemSz;\n+   memcpy(ptr, data, cnt2 * RingBuff->itemSz);\n+   RingBuff->head += cnt2;\n+\n+   return cnt1 + cnt2;\n+}\n+\n+/* Pop single item from Ring Buffer */\n+int RingBuffer_Pop(RINGBUFF_T *RingBuff, void *data)\n+{\n+   uint8_t *ptr = RingBuff->data;\n+\n+   /* We cannot pop when queue is empty */\n+   if (RingBuffer_IsEmpty(RingBuff))\n+       return 0;\n+\n+   ptr += RB_INDT(RingBuff) * RingBuff->itemSz;\n+   memcpy(data, ptr, RingBuff->itemSz);\n+   RingBuff->tail++;\n+\n+   return 1;\n+}\n+\n+/* Pop multiple items from Ring buffer */\n+int RingBuffer_PopMult(RINGBUFF_T *RingBuff, void *data, int num)\n+{\n+   uint8_t *ptr = RingBuff->data;\n+   int cnt1, cnt2;\n+\n+   /* We cannot insert when queue is empty */\n+   if (RingBuffer_IsEmpty(RingBuff))\n+       return 0;\n+\n+   /* Calculate the segment lengths */\n+   cnt1 = cnt2 = RingBuffer_GetCount(RingBuff);\n+   if (RB_INDT(RingBuff) + cnt1 >= RingBuff->count)\n+       cnt1 = RingBuff->count - RB_INDT(RingBuff);\n+   cnt2 -= cnt1;\n+\n+   cnt1 = MIN(cnt1, num);\n+   num -= cnt1;\n+\n+   cnt2 = MIN(cnt2, num);\n+   num -= cnt2;\n+\n+   /* Write segment 1 */\n+   ptr += RB_INDT(RingBuff) * RingBuff->itemSz;\n+   memcpy(data, ptr, cnt1 * RingBuff->itemSz);\n+   RingBuff->tail += cnt1;\n+\n+   /* Write segment 2 */\n+   ptr = (uint8_t *) RingBuff->data + RB_INDT(RingBuff) * RingBuff->itemSz;\n+   data = (uint8_t *) data + cnt1 * RingBuff->itemSz;\n+   memcpy(data, ptr, cnt2 * RingBuff->itemSz);\n+   RingBuff->tail += cnt2;\n+\n+   return cnt1 + cnt2;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/ritimer_18xx_43xx.c ./lpc_chip_43xx/src/ritimer_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/ritimer_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/ritimer_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,97 @@\n+/*\n+ * @brief LPC18xx/43xx RITimer chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the RIT */\n+void Chip_RIT_Init(LPC_RITIMER_T *pRITimer)\n+{\n+   Chip_Clock_EnableOpts(CLK_MX_RITIMER, true, true, 1);\n+   pRITimer->COMPVAL = 0xFFFFFFFF;\n+   pRITimer->MASK  = 0x00000000;\n+   pRITimer->CTRL  = 0x0C;\n+   pRITimer->COUNTER   = 0x00000000;\n+}\n+\n+/* DeInitialize the RIT */\n+void Chip_RIT_DeInit(LPC_RITIMER_T *pRITimer)\n+{\n+   Chip_RIT_Init(pRITimer);\n+   Chip_Clock_Disable(CLK_MX_RITIMER);\n+}\n+\n+/* Set timer interval value */\n+void Chip_RIT_SetTimerInterval(LPC_RITIMER_T *pRITimer, uint32_t time_interval)\n+{\n+   uint32_t cmp_value;\n+\n+   /* Determine aapproximate compare value based on clock rate and passed interval */\n+   cmp_value = (Chip_Clock_GetRate(CLK_MX_RITIMER) / 1000) * time_interval;\n+\n+   /* Set timer compare value */\n+   Chip_RIT_SetCOMPVAL(pRITimer, cmp_value);\n+\n+   /* Set timer enable clear bit to clear timer to 0 whenever\n+      counter value equals the contents of RICOMPVAL */\n+   Chip_RIT_EnableCTRL(pRITimer, RIT_CTRL_ENCLR);\n+}\n+\n+/* Check whether interrupt is pending */\n+IntStatus Chip_RIT_GetIntStatus(LPC_RITIMER_T *pRITimer)\n+{\n+   uint8_t result;\n+\n+   if ((pRITimer->CTRL & RIT_CTRL_INT) == 1) {\n+       result = SET;\n+   }\n+   else {\n+       return RESET;\n+   }\n+\n+   return (IntStatus) result;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/rtc_18xx_43xx.c ./lpc_chip_43xx/src/rtc_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/rtc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/rtc_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,220 @@\n+/*\n+ * @brief LPC18xx/43xx RTC driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the RTC peripheral */\n+void Chip_RTC_Init(LPC_RTC_T *pRTC)\n+{\n+   Chip_Clock_RTCEnable();\n+\n+   /* 2-Second delay after enabling RTC clock */\n+   LPC_ATIMER->DOWNCOUNTER = 2048;\n+   while (LPC_ATIMER->DOWNCOUNTER);\n+\n+   /* Disable RTC */\n+   Chip_RTC_Enable(pRTC, DISABLE);\n+\n+   /* Disable Calibration */\n+   Chip_RTC_CalibCounterCmd(pRTC, DISABLE);\n+\n+   /* Reset RTC Clock */\n+   Chip_RTC_ResetClockTickCounter(pRTC);\n+\n+   /* Clear counter increment and alarm interrupt */\n+   pRTC->ILR = RTC_IRL_RTCCIF | RTC_IRL_RTCALF;\n+   while (pRTC->ILR != 0) {}\n+\n+   /* Clear all register to be default */\n+   pRTC->CIIR = 0x00;\n+   pRTC->AMR = 0xFF;\n+   pRTC->CALIBRATION = 0x00;\n+}\n+\n+/*De-initialize the RTC peripheral */\n+void Chip_RTC_DeInit(LPC_RTC_T *pRTC)\n+{\n+   pRTC->CCR = 0x00;\n+}\n+\n+/* Reset clock tick counter in the RTC peripheral */\n+void Chip_RTC_ResetClockTickCounter(LPC_RTC_T *pRTC)\n+{\n+   /* Reset RTC clock*/\n+   pRTC->CCR |= RTC_CCR_CTCRST;\n+   while (!(pRTC->CCR & RTC_CCR_CTCRST)) {}\n+\n+   /* Finish resetting RTC clock */\n+   pRTC->CCR = (pRTC->CCR & ~RTC_CCR_CTCRST) & RTC_CCR_BITMASK;\n+   while (pRTC->CCR & RTC_CCR_CTCRST) {}\n+}\n+\n+/* Start/Stop RTC peripheral */\n+void Chip_RTC_Enable(LPC_RTC_T *pRTC, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pRTC->CCR |= RTC_CCR_CLKEN;\n+   } else {\n+       pRTC->CCR = (pRTC->CCR & ~RTC_CCR_CLKEN) & RTC_CCR_BITMASK;\n+   }\n+}\n+\n+/* Enable/Disable Counter increment interrupt for a time type in the RTC peripheral */\n+void Chip_RTC_CntIncrIntConfig(LPC_RTC_T *pRTC, uint32_t cntrMask, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pRTC->CIIR |= cntrMask;\n+   }\n+\n+   else {\n+       pRTC->CIIR &= (~cntrMask) & RTC_AMR_CIIR_BITMASK;\n+       while (pRTC->CIIR & cntrMask) {}\n+   }\n+}\n+\n+/* Enable/Disable Alarm interrupt for a time type in the RTC peripheral */\n+void Chip_RTC_AlarmIntConfig(LPC_RTC_T *pRTC, uint32_t alarmMask, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       pRTC->AMR &= (~alarmMask) & RTC_AMR_CIIR_BITMASK;\n+   }\n+   else {\n+       pRTC->AMR |= (alarmMask);\n+       while ((pRTC->AMR & alarmMask) == 0) {}\n+   }\n+}\n+\n+/* Set full time in the RTC peripheral */\n+void Chip_RTC_SetFullTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime)\n+{\n+   RTC_TIMEINDEX_T i;\n+   uint32_t ccr_val = pRTC->CCR;\n+\n+   /* Temporarily disable */\n+   if (ccr_val & RTC_CCR_CLKEN) {\n+       pRTC->CCR = ccr_val & (~RTC_CCR_CLKEN) & RTC_CCR_BITMASK;\n+   }\n+\n+   /* Date time setting */\n+   for (i = RTC_TIMETYPE_SECOND; i < RTC_TIMETYPE_LAST; i++) {\n+       pRTC->TIME[i] = pFullTime->time[i];\n+   }\n+\n+   /* Restore to old setting */\n+   pRTC->CCR = ccr_val;\n+}\n+\n+/* Get full time from the RTC peripheral */\n+void Chip_RTC_GetFullTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime)\n+{\n+   RTC_TIMEINDEX_T i;\n+   uint32_t secs = 0xFF;\n+\n+   /* Read full time, but verify second tick didn't change during the read. If\n+      it did, re-read the time again so it will be consistent across all fields. */\n+   while (secs != pRTC->TIME[RTC_TIMETYPE_SECOND]) {\n+       secs = pFullTime->time[RTC_TIMETYPE_SECOND] = pRTC->TIME[RTC_TIMETYPE_SECOND];\n+       for (i = RTC_TIMETYPE_MINUTE; i < RTC_TIMETYPE_LAST; i++) {\n+           pFullTime->time[i] = pRTC->TIME[i];\n+       }\n+   }\n+}\n+\n+/* Set full alarm time in the RTC peripheral */\n+void Chip_RTC_SetFullAlarmTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime)\n+{\n+   RTC_TIMEINDEX_T i;\n+\n+   for (i = RTC_TIMETYPE_SECOND; i < RTC_TIMETYPE_LAST; i++) {\n+       pRTC->ALRM[i] = pFullTime->time[i];\n+   }\n+}\n+\n+/* Get full alarm time in the RTC peripheral */\n+void Chip_RTC_GetFullAlarmTime(LPC_RTC_T *pRTC, RTC_TIME_T *pFullTime)\n+{\n+   RTC_TIMEINDEX_T i;\n+\n+   for (i = RTC_TIMETYPE_SECOND; i < RTC_TIMETYPE_LAST; i++) {\n+       pFullTime->time[i] = pRTC->ALRM[i];\n+   }\n+}\n+\n+/* Enable/Disable calibration counter in the RTC peripheral */\n+void Chip_RTC_CalibCounterCmd(LPC_RTC_T *pRTC, FunctionalState NewState)\n+{\n+   if (NewState == ENABLE) {\n+       do {\n+           pRTC->CCR &= (~RTC_CCR_CCALEN) & RTC_CCR_BITMASK;\n+       } while (pRTC->CCR & RTC_CCR_CCALEN);\n+   }\n+   else {\n+       pRTC->CCR |= RTC_CCR_CCALEN;\n+   }\n+}\n+\n+#if RTC_EV_SUPPORT\n+/* Get first timestamp value */\n+void Chip_RTC_EV_GetFirstTimeStamp(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, RTC_EV_TIMESTAMP_T *pTimeStamp)\n+{\n+   pTimeStamp->sec = RTC_ER_TIMESTAMP_SEC(pRTC->ERFIRSTSTAMP[ch]);\n+   pTimeStamp->min = RTC_ER_TIMESTAMP_MIN(pRTC->ERFIRSTSTAMP[ch]);\n+   pTimeStamp->hour = RTC_ER_TIMESTAMP_HOUR(pRTC->ERFIRSTSTAMP[ch]);\n+   pTimeStamp->dayofyear = RTC_ER_TIMESTAMP_DOY(pRTC->ERFIRSTSTAMP[ch]);\n+}\n+\n+/* Get last timestamp value */\n+void Chip_RTC_EV_GetLastTimeStamp(LPC_RTC_T *pRTC, RTC_EV_CHANNEL_T ch, RTC_EV_TIMESTAMP_T *pTimeStamp)\n+{\n+   pTimeStamp->sec = RTC_ER_TIMESTAMP_SEC(pRTC->ERLASTSTAMP[ch]);\n+   pTimeStamp->min = RTC_ER_TIMESTAMP_MIN(pRTC->ERLASTSTAMP[ch]);\n+   pTimeStamp->hour = RTC_ER_TIMESTAMP_HOUR(pRTC->ERLASTSTAMP[ch]);\n+   pTimeStamp->dayofyear = RTC_ER_TIMESTAMP_DOY(pRTC->ERLASTSTAMP[ch]);\n+}\n+\n+#endif /*RTC_EV_SUPPORT*/\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/sct_18xx_43xx.c ./lpc_chip_43xx/src/sct_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/sct_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sct_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,87 @@\n+/*\n+ * @brief LPC18xx/43xx State Configurable Timer driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize SCT */\n+void Chip_SCT_Init(LPC_SCT_T *pSCT)\n+{\n+   Chip_Clock_EnableOpts(CLK_MX_SCT, true, true, 1);\n+}\n+\n+/* Shutdown SCT */\n+void Chip_SCT_DeInit(LPC_SCT_T *pSCT)\n+{\n+   Chip_Clock_Disable(CLK_MX_SCT);\n+}\n+\n+/* Set/Clear SCT control register */\n+void Chip_SCT_SetClrControl(LPC_SCT_T *pSCT, uint32_t value, FunctionalState ena)\n+{\n+   uint32_t tem;\n+\n+   tem = pSCT->CTRL_U;\n+   if (ena == ENABLE) {\n+       tem |= value;\n+   }\n+   else {\n+       tem &= (~value);\n+   }\n+   pSCT->CTRL_U = tem;\n+}\n+\n+/* Set Conflict resolution */\n+void Chip_SCT_SetConflictResolution(LPC_SCT_T *pSCT, uint8_t outnum, uint8_t value)\n+{\n+   uint32_t tem;\n+\n+   tem = pSCT->RES;\n+   tem &= ~(0x03 << (2 * outnum));\n+   tem |= (value << (2 * outnum));\n+   pSCT->RES = tem;\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/sct_pwm_18xx_43xx.c ./lpc_chip_43xx/src/sct_pwm_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/sct_pwm_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sct_pwm_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,87 @@\n+/*\n+ * @brief LPC18xx_43xx State Configurable Timer PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Setup the OUTPUT pin corresponding to the PWM index */\n+void Chip_SCTPWM_SetOutPin(LPC_SCT_T *pSCT, uint8_t index, uint8_t pin)\n+{\n+   int ix = (int) index;\n+   pSCT->EVENT[ix].CTRL = index | (1 << 12);\n+   pSCT->EVENT[ix].STATE = 1;\n+   pSCT->OUT[pin].SET = 1;\n+   pSCT->OUT[pin].CLR = 1 << ix;\n+\n+   /* Clear the output in-case of conflict */\n+   pSCT->RES = (pSCT->RES & ~(3 << (pin << 1))) | (0x01 << (pin << 1));\n+\n+   /* Set and Clear do not depend on direction */\n+   pSCT->OUTPUTDIRCTRL = (pSCT->OUTPUTDIRCTRL & ~(3 << (pin << 1)));\n+}\n+\n+/* Set the PWM frequency */\n+void Chip_SCTPWM_SetRate(LPC_SCT_T *pSCT, uint32_t freq)\n+{\n+   uint32_t rate;\n+\n+   rate = Chip_Clock_GetRate(CLK_MX_SCT) / freq;;\n+\n+   /* Stop the SCT before configuration */\n+   Chip_SCTPWM_Stop(pSCT);\n+\n+   /* Set MATCH0 for max limit */\n+   pSCT->REGMODE_L = 0;\n+   pSCT->REGMODE_H = 0;\n+   Chip_SCT_SetMatchCount(pSCT, SCT_MATCH_0, 0);\n+   Chip_SCT_SetMatchReload(pSCT, SCT_MATCH_0, rate);\n+   pSCT->EVENT[0].CTRL = 1 << 12;\n+   pSCT->EVENT[0].STATE = 1;\n+   pSCT->LIMIT_L = 1;\n+\n+   /* Set SCT Counter to count 32-bits and reset to 0 after reaching MATCH0 */\n+   Chip_SCT_Config(pSCT, SCT_CONFIG_32BIT_COUNTER | SCT_CONFIG_AUTOLIMIT_L);\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/sdif_18xx_43xx.c ./lpc_chip_43xx/src/sdif_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/sdif_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sdif_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,223 @@\n+/*\n+ * @brief LPC18xx/43xx SD/SDIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+#include \"string.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the SD/MMC controller */\n+void Chip_SDIF_Init(LPC_SDMMC_T *pSDMMC)\n+{\n+    /* Enable SDIO module clock */\n+   Chip_Clock_EnableOpts(CLK_MX_SDIO, true, true, 1);\n+\n+    /* Software reset */\n+   pSDMMC->BMOD = MCI_BMOD_SWR;\n+\n+   /* reset all blocks */\n+   pSDMMC->CTRL = MCI_CTRL_RESET | MCI_CTRL_FIFO_RESET | MCI_CTRL_DMA_RESET;\n+   while (pSDMMC->CTRL & (MCI_CTRL_RESET | MCI_CTRL_FIFO_RESET | MCI_CTRL_DMA_RESET)) {}\n+\n+   /* Internal DMA setup for control register */\n+   pSDMMC->CTRL = MCI_CTRL_USE_INT_DMAC | MCI_CTRL_INT_ENABLE;\n+   pSDMMC->INTMASK = 0;\n+\n+   /* Clear the interrupts for the host controller */\n+   pSDMMC->RINTSTS = 0xFFFFFFFF;\n+\n+   /* Put in max timeout */\n+   pSDMMC->TMOUT = 0xFFFFFFFF;\n+\n+   /* FIFO threshold settings for DMA, DMA burst of 4,   FIFO watermark at 16 */\n+   pSDMMC->FIFOTH = MCI_FIFOTH_DMA_MTS_4 | MCI_FIFOTH_RX_WM((SD_FIFO_SZ / 2) - 1) | MCI_FIFOTH_TX_WM(SD_FIFO_SZ / 2);\n+\n+   /* Enable internal DMA, burst size of 4, fixed burst */\n+   pSDMMC->BMOD = MCI_BMOD_DE | MCI_BMOD_PBL4 | MCI_BMOD_DSL(4);\n+\n+   /* disable clock to CIU (needs latch) */\n+   pSDMMC->CLKENA = 0;\n+   pSDMMC->CLKSRC = 0;\n+}\n+\n+/* Shutdown the SD/MMC controller */\n+void Chip_SDIF_DeInit(LPC_SDMMC_T *pSDMMC)\n+{\n+    /* Disable the clock */\n+   Chip_Clock_Disable(CLK_MX_SDIO);\n+}\n+\n+/* Function to send command to Card interface unit (CIU) */\n+int32_t Chip_SDIF_SendCmd(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg)\n+{\n+   volatile int32_t tmo = 50;\n+   volatile int delay;\n+\n+   /* set command arg reg*/\n+   pSDMMC->CMDARG = arg;\n+   pSDMMC->CMD = MCI_CMD_START | cmd;\n+\n+   /* poll untill command is accepted by the CIU */\n+   while (--tmo && (pSDMMC->CMD & MCI_CMD_START)) {\n+       if (tmo & 1) {\n+           delay = 50;\n+       }\n+       else {\n+           delay = 18000;\n+       }\n+\n+       while (--delay > 1) {}\n+   }\n+\n+   return (tmo < 1) ? 1 : 0;\n+}\n+\n+/* Read the response from the last command */\n+void Chip_SDIF_GetResponse(LPC_SDMMC_T *pSDMMC, uint32_t *resp)\n+{\n+   /* on this chip response is not a fifo so read all 4 regs */\n+   resp[0] = pSDMMC->RESP0;\n+   resp[1] = pSDMMC->RESP1;\n+   resp[2] = pSDMMC->RESP2;\n+   resp[3] = pSDMMC->RESP3;\n+}\n+\n+/* Sets the SD bus clock speed */\n+void Chip_SDIF_SetClock(LPC_SDMMC_T *pSDMMC, uint32_t clk_rate, uint32_t speed)\n+{\n+   /* compute SD/MMC clock dividers */\n+   uint32_t div;\n+\n+   div = ((clk_rate / speed) + 2) >> 1;\n+\n+   if ((div == pSDMMC->CLKDIV) && pSDMMC->CLKENA) {\n+       return; /* Closest speed is already set */\n+\n+   }\n+   /* disable clock */\n+   pSDMMC->CLKENA = 0;\n+\n+   /* User divider 0 */\n+   pSDMMC->CLKSRC = MCI_CLKSRC_CLKDIV0;\n+\n+   /* inform CIU */\n+   Chip_SDIF_SendCmd(pSDMMC, MCI_CMD_UPD_CLK | MCI_CMD_PRV_DAT_WAIT, 0);\n+\n+   /* set divider 0 to desired value */\n+   pSDMMC->CLKDIV = MCI_CLOCK_DIVIDER(0, div);\n+\n+   /* inform CIU */\n+   Chip_SDIF_SendCmd(pSDMMC, MCI_CMD_UPD_CLK | MCI_CMD_PRV_DAT_WAIT, 0);\n+\n+   /* enable clock */\n+   pSDMMC->CLKENA = MCI_CLKEN_ENABLE;\n+\n+   /* inform CIU */\n+   Chip_SDIF_SendCmd(pSDMMC, MCI_CMD_UPD_CLK | MCI_CMD_PRV_DAT_WAIT, 0);\n+}\n+\n+/* Function to clear interrupt & FIFOs */\n+void Chip_SDIF_SetClearIntFifo(LPC_SDMMC_T *pSDMMC)\n+{\n+   /* reset all blocks */\n+   pSDMMC->CTRL |= MCI_CTRL_FIFO_RESET;\n+\n+   /* wait till resets clear */\n+   while (pSDMMC->CTRL & MCI_CTRL_FIFO_RESET) {}\n+\n+   /* Clear interrupt status */\n+   pSDMMC->RINTSTS = 0xFFFFFFFF;\n+}\n+\n+/* Setup DMA descriptors */\n+void Chip_SDIF_DmaSetup(LPC_SDMMC_T *pSDMMC, sdif_device *psdif_dev, uint32_t addr, uint32_t size)\n+{\n+   int i = 0;\n+   uint32_t ctrl, maxs;\n+\n+   /* Reset DMA */\n+   pSDMMC->CTRL |= MCI_CTRL_DMA_RESET | MCI_CTRL_FIFO_RESET;\n+   while (pSDMMC->CTRL & MCI_CTRL_DMA_RESET) {}\n+\n+   /* Build a descriptor list using the chained DMA method */\n+   while (size > 0) {\n+       /* Limit size of the transfer to maximum buffer size */\n+       maxs = size;\n+       if (maxs > MCI_DMADES1_MAXTR) {\n+           maxs = MCI_DMADES1_MAXTR;\n+       }\n+       size -= maxs;\n+\n+       /* Set buffer size */\n+       psdif_dev->mci_dma_dd[i].des1 = MCI_DMADES1_BS1(maxs);\n+\n+       /* Setup buffer address (chained) */\n+       psdif_dev->mci_dma_dd[i].des2 = addr + (i * MCI_DMADES1_MAXTR);\n+\n+       /* Setup basic control */\n+       ctrl = MCI_DMADES0_OWN | MCI_DMADES0_CH;\n+       if (i == 0) {\n+           ctrl |= MCI_DMADES0_FS; /* First DMA buffer */\n+\n+       }\n+       /* No more data? Then this is the last descriptor */\n+       if (!size) {\n+           ctrl |= MCI_DMADES0_LD;\n+       }\n+       else {\n+           ctrl |= MCI_DMADES0_DIC;\n+       }\n+\n+       /* Another descriptor is needed */\n+       psdif_dev->mci_dma_dd[i].des3 = (uint32_t) &psdif_dev->mci_dma_dd[i + 1];\n+       psdif_dev->mci_dma_dd[i].des0 = ctrl;\n+\n+       i++;\n+   }\n+\n+   /* Set DMA derscriptor base address */\n+   pSDMMC->DBADDR = (uint32_t) &psdif_dev->mci_dma_dd[0];\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/sdio_18xx_43xx.c ./lpc_chip_43xx/src/sdio_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/sdio_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sdio_18xx_43xx.c\t2017-02-27 21:03:17.052043464 -0300\n@@ -0,0 +1,518 @@\n+/*\n+ * @brief LPC18xx/43xx SDIO Card driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+#define SDIO_CMD_INT_MSK    0xA146       /* Interrupts to be enabled for CMD */\n+#define SDIO_DATA_INT_MSK   0xBE88       /* Interrupts to enable for data transfer */\n+#define SDIO_CARD_INT_MSK   (1UL << 16)  /* SDIO Card interrupt */\n+\n+static struct\n+{\n+   void (*wake_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg);\n+   uint32_t (*wait_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg);\n+   uint32_t flag;\n+   uint32_t response[4];\n+   int fnum;\n+   uint16_t blkSz[8];     /* Block size setting for the 8- function blocks */\n+   sdif_device sdev;      /* SDIO interface device structure */\n+}sdio_context, *sdioif = &sdio_context;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Set the SDIO Card voltage level to 3v3 */\n+static int SDIO_Card_SetVoltage(LPC_SDMMC_T *pSDMMC)\n+{\n+   int ret, i;\n+   uint32_t val;\n+\n+   ret = SDIO_Send_Command(pSDMMC, CMD5, 0);\n+   if (ret) return ret;\n+   val = sdioif->response[0];\n+\n+   /* Number of functions supported by the card */\n+   sdioif->fnum = (val >> 28) & 7;\n+\n+   /* Check number of I/O functions*/\n+   if(sdioif->fnum == 0) {\n+       /* Number of I/O functions */\n+       return SDIO_ERR_FNUM;\n+   }\n+\n+   /* ---- check OCR ---- */\n+   if((val & SDIO_VOLT_3_3) == 0){\n+       /* invalid voltage */\n+       return SDIO_ERR_VOLT;\n+   }\n+\n+   /* ==== send CMD5 write new voltage  === */\n+   for(i = 0; i < 100; i++){\n+       ret = SDIO_Send_Command(pSDMMC, CMD5, SDIO_VOLT_3_3);\n+       if (ret) return ret;\n+       val = sdioif->response[0];\n+\n+       /* Is card ready ? */\n+       if(val & (1UL << 31)){\n+           break;\n+       }\n+\n+       sdioif->wait_evt(pSDMMC, SDIO_WAIT_DELAY, (void *)10);\n+   }\n+\n+   /* ==== Check C bit  ==== */\n+   if(val & (1UL << 31)){\n+       return 0;\n+   }\n+\n+   return SDIO_ERR_VOLT; /* error end */\n+}\n+\n+/* Set SDIO Card RCA */\n+static int SDIO_CARD_SetRCA(LPC_SDMMC_T *pSDMMC)\n+{\n+   int ret;\n+\n+   /* ==== send CMD3 get RCA  ==== */\n+   ret = SDIO_Send_Command(pSDMMC, CMD3, 0);\n+   if (ret) return ret;\n+\n+   /* R6 response to CMD3 */\n+   if((sdioif->response[0] & 0x0000e000) != 0){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+       return SDIO_ERR_RCA;\n+   }\n+\n+   /* change card state */\n+   sdioif->flag |= SDIO_POWER_INIT;\n+\n+   /* New published RCA */\n+   sdioif->response[0] &= 0xffff0000;\n+\n+   /* ==== change state to Stanby State ==== */\n+   return SDIO_Send_Command(pSDMMC, CMD7, sdioif->response[0]);\n+}\n+\n+/* Set the Clock speed and mode [1/4 bit] of the card */\n+static int SDIO_Card_SetMode(LPC_SDMMC_T *pSDMMC, uint32_t clk, int mode_4bit)\n+{\n+   int ret;\n+   uint32_t val;\n+\n+   Chip_SDIF_SetClock(pSDMMC, Chip_Clock_GetBaseClocktHz(CLK_BASE_SDIO), clk);\n+\n+   if (!mode_4bit)\n+       return 0;\n+\n+   val = 0x02;\n+   ret = SDIO_WriteRead_Direct(pSDMMC, SDIO_AREA_CIA, 0x07, &val);\n+   if (ret) return ret;\n+\n+   if (val & 0x02) {\n+       Chip_SDIF_SetCardType(pSDMMC, MCI_CTYPE_4BIT);\n+   }\n+   return 0;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+/* Set the block size of a function */\n+int SDIO_Card_SetBlockSize(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t blkSize)\n+{\n+   int ret;\n+   uint32_t tmp, asz;\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   if (blkSize > 2048)\n+       return SDIO_ERR_INVARG;\n+\n+   tmp = blkSize & 0xFF;\n+   ret = SDIO_WriteRead_Direct(pSDMMC, SDIO_AREA_CIA, (func << 8) + 0x10, &tmp);\n+   if (ret) return ret;\n+   asz = tmp;\n+\n+   tmp = blkSize >> 8;\n+   ret = SDIO_WriteRead_Direct(pSDMMC, SDIO_AREA_CIA, (func << 8) + 0x11, &tmp);\n+   if (ret) return ret;\n+   asz |= tmp << 8;\n+   sdioif->blkSz[func] = asz;\n+   return 0;\n+}\n+\n+/* Get the block size of a particular function */\n+uint32_t SDIO_Card_GetBlockSize(LPC_SDMMC_T *pSDMMC, uint32_t func)\n+{\n+   if (func > sdioif->fnum)\n+       return 0;\n+\n+   return sdioif->blkSz[func];\n+}\n+\n+/* Write data to SDIO Card */\n+int SDIO_Card_WriteData(LPC_SDMMC_T *pSDMMC, uint32_t func,\n+   uint32_t dest_addr, const uint8_t *src_addr,\n+   uint32_t size, uint32_t flags)\n+{\n+   int ret;\n+   uint32_t bs = size, bsize = size;\n+   uint32_t cmd = CMD53 | (1UL << 10);\n+\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   if (bsize > 512 || bsize == 0)\n+       return SDIO_ERR_INVARG;\n+\n+   if (flags & SDIO_MODE_BLOCK) {\n+       uint32_t bs = SDIO_Card_GetBlockSize(pSDMMC, func);\n+       if (!bs) return SDIO_ERR_INVARG;\n+       size *= bs;\n+   }\n+\n+   /* Set Block Size */\n+   Chip_SDIF_SetBlkSize(pSDMMC, bs);\n+\n+   /* set number of bytes to read */\n+   Chip_SDIF_SetByteCnt(pSDMMC, size);\n+\n+   sdioif->wait_evt(pSDMMC, SDIO_START_DATA, 0);\n+   Chip_SDIF_DmaSetup(pSDMMC, &sdioif->sdev, (uint32_t) src_addr, size);\n+\n+   ret = SDIO_Send_Command(pSDMMC, cmd, (func << 28) | (dest_addr << 9) | (bsize & 0x1FF) | (1UL << 31) | (flags & (0x3 << 26)));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+   return sdioif->wait_evt(pSDMMC, SDIO_WAIT_DATA, 0);\n+}\n+\n+/* Write data to SDIO Card */\n+int SDIO_Card_ReadData(LPC_SDMMC_T *pSDMMC, uint32_t func, uint8_t *dest_addr, uint32_t src_addr, uint32_t size, uint32_t flags)\n+{\n+   int ret;\n+   uint32_t bs = size, bsize = size;\n+   uint32_t cmd = CMD53;\n+\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   if (bsize > 512 || bsize == 0)\n+       return SDIO_ERR_INVARG;\n+\n+   if (flags & SDIO_MODE_BLOCK) {\n+       bs = SDIO_Card_GetBlockSize(pSDMMC, func);\n+       if (!bs) return SDIO_ERR_INVARG;\n+       size *= bs;\n+   }\n+   /* Set the block size */\n+   Chip_SDIF_SetBlkSize(pSDMMC, bs);\n+\n+   /* set number of bytes to read */\n+   Chip_SDIF_SetByteCnt(pSDMMC, size);\n+\n+   sdioif->wait_evt(pSDMMC, SDIO_START_DATA, 0);\n+   Chip_SDIF_DmaSetup(pSDMMC, &sdioif->sdev, (uint32_t) dest_addr, size);\n+\n+   ret = SDIO_Send_Command(pSDMMC, cmd | (1 << 13), (func << 28) | (src_addr << 9) | (bsize & 0x1FF) | (flags & (0x3 << 26)));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+\n+   return sdioif->wait_evt(pSDMMC, SDIO_WAIT_DATA, 0);\n+}\n+\n+/* Enable SDIO function interrupt */\n+int SDIO_Card_EnableInt(LPC_SDMMC_T *pSDMMC, uint32_t func)\n+{\n+   int ret;\n+   uint32_t val;\n+\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   ret = SDIO_Read_Direct(pSDMMC, SDIO_AREA_CIA, 0x04, &val);\n+   if (ret) return ret;\n+   val |= (1 << func) | 1;\n+   ret = SDIO_Write_Direct(pSDMMC, SDIO_AREA_CIA, 0x04, val);\n+   if (ret) return ret;\n+   pSDMMC->INTMASK |= SDIO_CARD_INT_MSK;\n+\n+   return 0;\n+}\n+\n+/* Disable SDIO function interrupt */\n+int SDIO_Card_DisableInt(LPC_SDMMC_T *pSDMMC, uint32_t func)\n+{\n+   int ret;\n+   uint32_t val;\n+\n+   if (func > sdioif->fnum)\n+       return SDIO_ERR_INVFUNC;\n+\n+   ret = SDIO_Read_Direct(pSDMMC, SDIO_AREA_CIA, 0x04, &val);\n+   if (ret) return ret;\n+   val &= ~(1 << func);\n+\n+   /* Disable master interrupt if it is the only thing enabled */\n+   if (val == 1)\n+       val = 0;\n+   ret = SDIO_Write_Direct(pSDMMC, SDIO_AREA_CIA, 0x04, val);\n+   if (ret) return ret;\n+   if (!val)\n+       pSDMMC->INTMASK &= ~SDIO_CARD_INT_MSK;\n+\n+   return 0;\n+}\n+\n+/* Initialize the SDIO card */\n+int SDIO_Card_Init(LPC_SDMMC_T *pSDMMC, uint32_t freq)\n+{\n+   int ret;\n+   uint32_t val;\n+\n+   /* Set Clock to 400KHz */\n+   Chip_SDIF_SetClock(pSDMMC, Chip_Clock_GetBaseClocktHz(CLK_BASE_SDIO), freq);\n+   Chip_SDIF_SetCardType(pSDMMC, 0);\n+\n+   sdioif->wait_evt(pSDMMC, SDIO_WAIT_DELAY, (void *) 100); /* Wait for card to wake up */\n+\n+   if (sdioif->flag & SDIO_POWER_INIT) {\n+       /* Write to the Reset Bit */\n+       ret = SDIO_Write_Direct(pSDMMC, SDIO_AREA_CIA, 0x06, 0x08);\n+       if (ret) return ret;\n+   }\n+\n+   /* Set Voltage level to 3v3 */\n+   ret = SDIO_Card_SetVoltage(pSDMMC);\n+   if (ret) return ret;\n+\n+   /* Set the RCA */\n+   ret = SDIO_CARD_SetRCA(pSDMMC);\n+   if (ret) return ret;\n+\n+   /* ==== check card capability ==== */\n+   val = 0x02;\n+   ret = SDIO_WriteRead_Direct(pSDMMC, SDIO_AREA_CIA, 0x13, &val);\n+   if (ret) return ret;\n+\n+   /* FIXME: Verify */\n+   /* FIFO threshold settings for DMA, DMA burst of 4,   FIFO watermark at 16 */\n+   pSDMMC->FIFOTH = MCI_FIFOTH_DMA_MTS_1 | MCI_FIFOTH_RX_WM(0) | MCI_FIFOTH_TX_WM(1);\n+\n+   /* Enable internal DMA, burst size of 4, fixed burst */\n+   pSDMMC->BMOD = MCI_BMOD_DE | MCI_BMOD_PBL1 | MCI_BMOD_DSL(0);\n+\n+   /* High Speed Support? */\n+   if ((val & 0x03) == 3) {\n+       return SDIO_Card_SetMode(pSDMMC, SDIO_CLK_HISPEED, 1);\n+   }\n+\n+   ret = SDIO_Read_Direct(pSDMMC, SDIO_AREA_CIA, 0x08, &val);\n+   if (ret) return ret;\n+\n+   /* Full Speed Support? */\n+   if (val & SDIO_CCCR_LSC) {\n+       return SDIO_Card_SetMode(pSDMMC, SDIO_CLK_FULLSPEED, 1);\n+   }\n+\n+   /* Low Speed Card */\n+   return SDIO_Card_SetMode(pSDMMC, SDIO_CLK_LOWSPEED, val & SDIO_CCCR_4BLS);\n+}\n+\n+/* Write given data to register space of the CARD */\n+int SDIO_Write_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t data)\n+{\n+   int ret;\n+\n+   ret = SDIO_Send_Command(pSDMMC, CMD52, (func << 28) | (addr << 9) | (data & 0xFF) | (1UL << 31));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+   return data != (sdioif->response[0] & 0xFF);\n+}\n+\n+/* Write given data to register, and read back the register into data */\n+int SDIO_WriteRead_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t *data)\n+{\n+   int ret;\n+\n+   ret = SDIO_Send_Command(pSDMMC, CMD52, (func << 28) | (1 << 27) | (addr << 9) | ((*data) & 0xFF) | (1UL << 31));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+   *data = sdioif->response[0] & 0xFF;\n+   return 0;\n+}\n+\n+/* Read a register from the register address space of the CARD */\n+int SDIO_Read_Direct(LPC_SDMMC_T *pSDMMC, uint32_t func, uint32_t addr, uint32_t *data)\n+{\n+   int ret;\n+   ret = SDIO_Send_Command(pSDMMC, CMD52, ((func & 7) << 28) | ((addr & 0x1FFFF) << 9));\n+   if (ret) return ret;\n+\n+   /* Check response for errors */\n+   if(sdioif->response[0] & 0xcb00){\n+                       /* COM_CRC_ERROR */\n+                       /* ILLEGAL_CRC_ERROR */\n+                       /* ERROR */\n+                       /* RFU FUNCTION_NUMBER */\n+                       /* OUT_OF_RANGE */\n+       /* Response flag error */\n+       return SDIO_ERR_READWRITE;\n+   }\n+   *data = sdioif->response[0] & 0xFF;\n+   return 0;\n+}\n+\n+/* Set up the wait and wake call-back functions */\n+void SDIO_Setup_Callback(LPC_SDMMC_T *pSDMMC,\n+   void (*wake_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg),\n+   uint32_t (*wait_evt)(LPC_SDMMC_T *pSDMMC, uint32_t event, void *arg))\n+{\n+   sdioif->wake_evt = wake_evt;\n+   sdioif->wait_evt = wait_evt;\n+}\n+\n+/* Send and SD Command to the SDIO Card */\n+uint32_t SDIO_Send_Command(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg)\n+{\n+   uint32_t ret, ival;\n+   uint32_t imsk = pSDMMC->INTMASK;\n+   ret = sdioif->wait_evt(pSDMMC, SDIO_START_COMMAND, (void *)(cmd & 0x3F));\n+   ival = SDIO_CMD_INT_MSK & ~ret;\n+\n+   /* Set data interrupts for data commands */\n+   if (cmd & SDIO_CMD_DATA) {\n+       ival |= SDIO_DATA_INT_MSK;\n+       imsk |= SDIO_DATA_INT_MSK;\n+   }\n+\n+   Chip_SDIF_SetIntMask(pSDMMC, ival);\n+   Chip_SDIF_SendCmd(pSDMMC, cmd, arg);\n+   ret = sdioif->wait_evt(pSDMMC, SDIO_WAIT_COMMAND, 0);\n+   if (!ret && (cmd & SDIO_CMD_RESP_R1)) {\n+       Chip_SDIF_GetResponse(pSDMMC, &sdioif->response[0]);\n+   }\n+\n+   Chip_SDIF_SetIntMask(pSDMMC, imsk);\n+   return ret;\n+}\n+\n+/* SDIO Card interrupt handler */\n+void SDIO_Handler(LPC_SDMMC_T *pSDMMC)\n+{\n+   uint32_t status = pSDMMC->MINTSTS;\n+   uint32_t iclr = 0;\n+\n+   /* Card Detected */\n+   if (status & 1) {\n+       sdioif->wake_evt(pSDMMC, SDIO_CARD_DETECT, 0);\n+       iclr = 1;\n+   }\n+\n+   /* Command event error */\n+   if (status & (SDIO_CMD_INT_MSK & ~4)) {\n+       sdioif->wake_evt(pSDMMC, SDIO_CMD_ERR, (void *) (status & (SDIO_CMD_INT_MSK & ~4)));\n+       iclr |= status & SDIO_CMD_INT_MSK;\n+   } else if (status & 4) {\n+       /* Command event done */\n+       sdioif->wake_evt(pSDMMC, SDIO_CMD_DONE, (void *) status);\n+       iclr |= status & SDIO_CMD_INT_MSK;\n+   }\n+\n+   /* Command event error */\n+   if (status & (SDIO_DATA_INT_MSK & ~8)) {\n+       sdioif->wake_evt(pSDMMC, SDIO_DATA_ERR, (void *) (status & (SDIO_DATA_INT_MSK & ~8)));\n+       iclr |= (status & SDIO_DATA_INT_MSK) | (3 << 4);\n+   } else if (status & 8) {\n+       /* Command event done */\n+       sdioif->wake_evt(pSDMMC, SDIO_DATA_DONE, (void *) status);\n+       iclr |= (status & SDIO_DATA_INT_MSK) | (3 << 4);\n+   }\n+\n+   /* Handle Card interrupt */\n+   if (status & SDIO_CARD_INT_MSK) {\n+       sdioif->wake_evt(pSDMMC, SDIO_CARD_INT, 0);\n+       iclr |= status & SDIO_CARD_INT_MSK;\n+   }\n+\n+   /* Clear the interrupts */\n+   pSDMMC->RINTSTS = iclr;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/sdmmc_18xx_43xx.c ./lpc_chip_43xx/src/sdmmc_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/sdmmc_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sdmmc_18xx_43xx.c\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,592 @@\n+/*\n+ * @brief LPC18xx/43xx SD/SDIO driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+#include \"string.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Global instance of the current card */\n+static mci_card_struct *g_card_info;\n+\n+/* Helper definition: all SD error conditions in the status word */\n+#define SD_INT_ERROR (MCI_INT_RESP_ERR | MCI_INT_RCRC | MCI_INT_DCRC | \\\n+                     MCI_INT_RTO | MCI_INT_DTO | MCI_INT_HTO | MCI_INT_FRUN | MCI_INT_HLE | \\\n+                     MCI_INT_SBE | MCI_INT_EBE)\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Function to execute a command */\n+static int32_t sdmmc_execute_command(LPC_SDMMC_T *pSDMMC, uint32_t cmd, uint32_t arg, uint32_t wait_status)\n+{\n+   int32_t step = (cmd & CMD_BIT_APP) ? 2 : 1;\n+   int32_t status = 0;\n+   uint32_t cmd_reg = 0;\n+\n+   if (!wait_status) {\n+       wait_status = (cmd & CMD_MASK_RESP) ? MCI_INT_CMD_DONE : MCI_INT_DATA_OVER;\n+   }\n+\n+   /* Clear the interrupts & FIFOs*/\n+   if (cmd & CMD_BIT_DATA) {\n+       Chip_SDIF_SetClearIntFifo(pSDMMC);\n+   }\n+\n+   /* also check error conditions */\n+   wait_status |= MCI_INT_EBE | MCI_INT_SBE | MCI_INT_HLE | MCI_INT_RTO | MCI_INT_RCRC | MCI_INT_RESP_ERR;\n+   if (wait_status & MCI_INT_DATA_OVER) {\n+       wait_status |= MCI_INT_FRUN | MCI_INT_HTO | MCI_INT_DTO | MCI_INT_DCRC;\n+   }\n+\n+   while (step) {\n+       Chip_SDIF_SetClock(pSDMMC, Chip_Clock_GetBaseClocktHz(CLK_BASE_SDIO), g_card_info->card_info.speed);\n+\n+       /* Clear the interrupts */\n+       Chip_SDIF_ClrIntStatus(pSDMMC, 0xFFFFFFFF);\n+\n+       g_card_info->card_info.evsetup_cb((void *) &wait_status);\n+\n+       switch (step) {\n+       case 1: /* Execute command */\n+           cmd_reg = ((cmd & CMD_MASK_CMD) >> CMD_SHIFT_CMD) |\n+                     ((cmd & CMD_BIT_INIT)  ? MCI_CMD_INIT : 0) |\n+                     ((cmd & CMD_BIT_DATA)  ? (MCI_CMD_DAT_EXP | MCI_CMD_PRV_DAT_WAIT) : 0) |\n+                     (((cmd & CMD_MASK_RESP) == CMD_RESP_R2) ? MCI_CMD_RESP_LONG : 0) |\n+                     ((cmd & CMD_MASK_RESP) ? MCI_CMD_RESP_EXP : 0) |\n+                     ((cmd & CMD_BIT_WRITE)  ? MCI_CMD_DAT_WR : 0) |\n+                     ((cmd & CMD_BIT_STREAM) ? MCI_CMD_STRM_MODE : 0) |\n+                     ((cmd & CMD_BIT_BUSY) ? MCI_CMD_STOP : 0) |\n+                     ((cmd & CMD_BIT_AUTO_STOP)  ? MCI_CMD_SEND_STOP : 0) |\n+                     MCI_CMD_START;\n+\n+           /* wait for previos data finsh for select/deselect commands */\n+           if (((cmd & CMD_MASK_CMD) >> CMD_SHIFT_CMD) == MMC_SELECT_CARD) {\n+               cmd_reg |= MCI_CMD_PRV_DAT_WAIT;\n+           }\n+\n+           /* wait for command to be accepted by CIU */\n+           if (Chip_SDIF_SendCmd(pSDMMC, cmd_reg, arg) == 0) {\n+               --step;\n+           }\n+           break;\n+\n+       case 0:\n+           return 0;\n+\n+       case 2: /* APP prefix */\n+           cmd_reg = MMC_APP_CMD | MCI_CMD_RESP_EXP |\n+                     ((cmd & CMD_BIT_INIT)  ? MCI_CMD_INIT : 0) |\n+                     MCI_CMD_START;\n+\n+           if (Chip_SDIF_SendCmd(pSDMMC, cmd_reg, g_card_info->card_info.rca << 16) == 0) {\n+               --step;\n+           }\n+           break;\n+       }\n+\n+       /* wait for command response */\n+       status = g_card_info->card_info.waitfunc_cb();\n+\n+       /* We return an error if there is a timeout, even if we've fetched  a response */\n+       if (status & SD_INT_ERROR) {\n+           return status;\n+       }\n+\n+       if (status & MCI_INT_CMD_DONE) {\n+           switch (cmd & CMD_MASK_RESP) {\n+           case 0:\n+               break;\n+\n+           case CMD_RESP_R1:\n+           case CMD_RESP_R3:\n+           case CMD_RESP_R2:\n+               Chip_SDIF_GetResponse(pSDMMC, &g_card_info->card_info.response[0]);\n+               break;\n+           }\n+       }\n+   }\n+\n+   return 0;\n+}\n+\n+/* Checks whether card is acquired properly or not */\n+static int32_t prv_card_acquired(void)\n+{\n+   return g_card_info->card_info.cid[0] != 0;\n+}\n+\n+/* Helper function to get a bit field withing multi-word  buffer. Used to get\n+   fields with-in CSD & EXT-CSD */\n+static uint32_t prv_get_bits(int32_t start, int32_t end, uint32_t *data)\n+{\n+   uint32_t v;\n+   uint32_t i = end >> 5;\n+   uint32_t j = start & 0x1f;\n+\n+   if (i == (start >> 5)) {\n+       v = (data[i] >> j);\n+   }\n+   else {\n+       v = ((data[i] << (32 - j)) | (data[start >> 5] >> j));\n+   }\n+\n+   return v & ((1 << (end - start + 1)) - 1);\n+}\n+\n+/* Function to process the CSD & EXT-CSD of the card */\n+static void prv_process_csd(LPC_SDMMC_T *pSDMMC)\n+{\n+   int32_t status = 0;\n+   int32_t c_size = 0;\n+   int32_t c_size_mult = 0;\n+   int32_t mult = 0;\n+\n+   /* compute block length based on CSD response */\n+   g_card_info->card_info.block_len = 1 << prv_get_bits(80, 83, g_card_info->card_info.csd);\n+\n+   if ((g_card_info->card_info.card_type & CARD_TYPE_HC) && (g_card_info->card_info.card_type & CARD_TYPE_SD)) {\n+       /* See section 5.3.3 CSD Register (CSD Version 2.0) of SD2.0 spec  an explanation for the calculation of these values */\n+       c_size = prv_get_bits(48, 63, (uint32_t *) g_card_info->card_info.csd) + 1;\n+       g_card_info->card_info.blocknr = c_size << 10;  /* 512 byte blocks */\n+   }\n+   else {\n+       /* See section 5.3 of the 4.1 revision of the MMC specs for  an explanation for the calculation of these values */\n+       c_size = prv_get_bits(62, 73, (uint32_t *) g_card_info->card_info.csd);\n+       c_size_mult = prv_get_bits(47, 49, (uint32_t *) g_card_info->card_info.csd);\n+       mult = 1 << (c_size_mult + 2);\n+       g_card_info->card_info.blocknr = (c_size + 1) * mult;\n+\n+       /* adjust blocknr to 512/block */\n+       if (g_card_info->card_info.block_len > MMC_SECTOR_SIZE) {\n+           g_card_info->card_info.blocknr = g_card_info->card_info.blocknr * (g_card_info->card_info.block_len >> 9);\n+       }\n+\n+       /* get extended CSD for newer MMC cards CSD spec >= 4.0*/\n+       if (((g_card_info->card_info.card_type & CARD_TYPE_SD) == 0) &&\n+           (prv_get_bits(122, 125, (uint32_t *) g_card_info->card_info.csd) >= 4)) {\n+           /* put card in trans state */\n+           status = sdmmc_execute_command(pSDMMC, CMD_SELECT_CARD, g_card_info->card_info.rca << 16, 0);\n+\n+           /* set block size and byte count */\n+           Chip_SDIF_SetBlkSizeByteCnt(pSDMMC, MMC_SECTOR_SIZE);\n+\n+           /* send EXT_CSD command */\n+           Chip_SDIF_DmaSetup(pSDMMC,\n+                             &g_card_info->sdif_dev,\n+                             (uint32_t) g_card_info->card_info.ext_csd,\n+                             MMC_SECTOR_SIZE);\n+\n+           status = sdmmc_execute_command(pSDMMC, CMD_SEND_EXT_CSD, 0, 0 | MCI_INT_DATA_OVER);\n+           if ((status & SD_INT_ERROR) == 0) {\n+               /* check EXT_CSD_VER is greater than 1.1 */\n+               if ((g_card_info->card_info.ext_csd[48] & 0xFF) > 1) {\n+                   g_card_info->card_info.blocknr = g_card_info->card_info.ext_csd[53];/* bytes 212:215 represent sec count */\n+\n+               }\n+               /* switch to 52MHz clock if card type is set to 1 or else set to 26MHz */\n+               if ((g_card_info->card_info.ext_csd[49] & 0xFF) == 1) {\n+                   /* for type 1 MMC cards high speed is 52MHz */\n+                   g_card_info->card_info.speed = MMC_HIGH_BUS_MAX_CLOCK;\n+               }\n+               else {\n+                   /* for type 0 MMC cards high speed is 26MHz */\n+                   g_card_info->card_info.speed = MMC_LOW_BUS_MAX_CLOCK;\n+               }\n+           }\n+       }\n+   }\n+\n+   g_card_info->card_info.device_size = (uint64_t) g_card_info->card_info.blocknr << 9;    /* blocknr * 512 */\n+}\n+\n+/* Puts current selected card in trans state */\n+static int32_t prv_set_trans_state(LPC_SDMMC_T *pSDMMC)\n+{\n+   uint32_t status;\n+\n+   /* get current state of the card */\n+   status = sdmmc_execute_command(pSDMMC, CMD_SEND_STATUS, g_card_info->card_info.rca << 16, 0);\n+   if (status & MCI_INT_RTO) {\n+       /* unable to get the card state. So return immediatly. */\n+       return -1;\n+   }\n+\n+   /* check card state in response */\n+   status = R1_CURRENT_STATE(g_card_info->card_info.response[0]);\n+   switch (status) {\n+   case SDMMC_STBY_ST:\n+       /* put card in 'Trans' state */\n+       status = sdmmc_execute_command(pSDMMC, CMD_SELECT_CARD, g_card_info->card_info.rca << 16, 0);\n+       if (status != 0) {\n+           /* unable to put the card in Trans state. So return immediatly. */\n+           return -1;\n+       }\n+       break;\n+\n+   case SDMMC_TRAN_ST:\n+       /*do nothing */\n+       break;\n+\n+   default:\n+       /* card shouldn't be in other states so return */\n+       return -1;\n+   }\n+\n+   return 0;\n+}\n+\n+/* Sets card data width and block size */\n+static int32_t prv_set_card_params(LPC_SDMMC_T *pSDMMC)\n+{\n+   int32_t status;\n+\n+#if SDIO_BUS_WIDTH > 1\n+   if (g_card_info->card_info.card_type & CARD_TYPE_SD) {\n+       status = sdmmc_execute_command(pSDMMC, CMD_SD_SET_WIDTH, 2, 0);\n+       if (status != 0) {\n+           return -1;\n+       }\n+\n+       /* if positive response */\n+       Chip_SDIF_SetCardType(pSDMMC, MCI_CTYPE_4BIT);\n+   }\n+#elif SDIO_BUS_WIDTH > 4\n+#error 8-bit mode not supported yet!\n+#endif\n+\n+   /* set block length */\n+   Chip_SDIF_SetBlkSize(pSDMMC, MMC_SECTOR_SIZE);\n+   status = sdmmc_execute_command(pSDMMC, CMD_SET_BLOCKLEN, MMC_SECTOR_SIZE, 0);\n+   if (status != 0) {\n+       return -1;\n+   }\n+\n+   return 0;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+/* Get card's current state (idle, transfer, program, etc.) */\n+int32_t Chip_SDMMC_GetState(LPC_SDMMC_T *pSDMMC)\n+{\n+   uint32_t status;\n+\n+   /* get current state of the card */\n+   status = sdmmc_execute_command(pSDMMC, CMD_SEND_STATUS, g_card_info->card_info.rca << 16, 0);\n+   if (status & MCI_INT_RTO) {\n+       return -1;\n+   }\n+\n+   /* check card state in response */\n+   return (int32_t) R1_CURRENT_STATE(g_card_info->card_info.response[0]);\n+}\n+\n+/* Function to enumerate the SD/MMC/SDHC/MMC+ cards */\n+uint32_t Chip_SDMMC_Acquire(LPC_SDMMC_T *pSDMMC, mci_card_struct *pcardinfo)\n+{\n+   int32_t status;\n+   int32_t tries = 0;\n+   uint32_t ocr = OCR_VOLTAGE_RANGE_MSK;\n+   uint32_t r;\n+   int32_t state = 0;\n+   uint32_t command = 0;\n+\n+   g_card_info = pcardinfo;\n+\n+   /* clear card type */\n+   Chip_SDIF_SetCardType(pSDMMC, 0);\n+\n+   /* set high speed for the card as 20MHz */\n+   g_card_info->card_info.speed = MMC_MAX_CLOCK;\n+\n+   status = sdmmc_execute_command(pSDMMC, CMD_IDLE, 0, MCI_INT_CMD_DONE);\n+\n+   while (state < 100) {\n+       switch (state) {\n+       case 0: /* Setup for SD */\n+           /* check if it is SDHC card */\n+           status = sdmmc_execute_command(pSDMMC, CMD_SD_SEND_IF_COND, SD_SEND_IF_ARG, 0);\n+           if (!(status & MCI_INT_RTO)) {\n+               /* check response has same echo pattern */\n+               if ((g_card_info->card_info.response[0] & SD_SEND_IF_ECHO_MSK) == SD_SEND_IF_RESP) {\n+                   ocr |= OCR_HC_CCS;\n+               }\n+           }\n+\n+           ++state;\n+           command = CMD_SD_OP_COND;\n+           tries = INIT_OP_RETRIES;\n+\n+           /* assume SD card */\n+           g_card_info->card_info.card_type |= CARD_TYPE_SD;\n+           g_card_info->card_info.speed = SD_MAX_CLOCK;\n+           break;\n+\n+       case 10:    /* Setup for MMC */\n+           /* start fresh for MMC crds */\n+           g_card_info->card_info.card_type &= ~CARD_TYPE_SD;\n+           status = sdmmc_execute_command(pSDMMC, CMD_IDLE, 0, MCI_INT_CMD_DONE);\n+           command = CMD_MMC_OP_COND;\n+           tries = INIT_OP_RETRIES;\n+           ocr |= OCR_HC_CCS;\n+           ++state;\n+\n+           /* for MMC cards high speed is 20MHz */\n+           g_card_info->card_info.speed = MMC_MAX_CLOCK;\n+           break;\n+\n+       case 1:\n+       case 11:\n+           status = sdmmc_execute_command(pSDMMC, command, 0, 0);\n+           if (status & MCI_INT_RTO) {\n+               state += 9; /* Mode unavailable */\n+           }\n+           else {\n+               ++state;\n+           }\n+           break;\n+\n+       case 2:     /* Initial OCR check  */\n+       case 12:\n+           ocr = g_card_info->card_info.response[0] | (ocr & OCR_HC_CCS);\n+           if (ocr & OCR_ALL_READY) {\n+               ++state;\n+           }\n+           else {\n+               state += 2;\n+           }\n+           break;\n+\n+       case 3:     /* Initial wait for OCR clear */\n+       case 13:\n+           while ((ocr & OCR_ALL_READY) && --tries > 0) {\n+               g_card_info->card_info.msdelay_func(MS_ACQUIRE_DELAY);\n+               status = sdmmc_execute_command(pSDMMC, command, 0, 0);\n+               ocr = g_card_info->card_info.response[0] | (ocr & OCR_HC_CCS);\n+           }\n+           if (ocr & OCR_ALL_READY) {\n+               state += 7;\n+           }\n+           else {\n+               ++state;\n+           }\n+           break;\n+\n+       case 14:\n+           /* for MMC cards set high capacity bit */\n+           ocr |= OCR_HC_CCS;\n+\n+       case 4: /* Assign OCR */\n+           tries = SET_OP_RETRIES;\n+           ocr &= OCR_VOLTAGE_RANGE_MSK | OCR_HC_CCS;  /* Mask for the bits we care about */\n+           do {\n+               g_card_info->card_info.msdelay_func(MS_ACQUIRE_DELAY);\n+               status = sdmmc_execute_command(pSDMMC, command, ocr, 0);\n+               r = g_card_info->card_info.response[0];\n+           } while (!(r & OCR_ALL_READY) && --tries > 0);\n+\n+           if (r & OCR_ALL_READY) {\n+               /* is it high capacity card */\n+               g_card_info->card_info.card_type |= (r & OCR_HC_CCS);\n+               ++state;\n+           }\n+           else {\n+               state += 6;\n+           }\n+           break;\n+\n+       case 5: /* CID polling */\n+       case 15:\n+           status = sdmmc_execute_command(pSDMMC, CMD_ALL_SEND_CID, 0, 0);\n+           memcpy(&g_card_info->card_info.cid, &g_card_info->card_info.response[0], 16);\n+           ++state;\n+           break;\n+\n+       case 6: /* RCA send, for SD get RCA */\n+           status = sdmmc_execute_command(pSDMMC, CMD_SD_SEND_RCA, 0, 0);\n+           g_card_info->card_info.rca = (g_card_info->card_info.response[0]) >> 16;\n+           ++state;\n+           break;\n+\n+       case 16:    /* RCA assignment for MMC set to 1 */\n+           g_card_info->card_info.rca = 1;\n+           status = sdmmc_execute_command(pSDMMC, CMD_MMC_SET_RCA, g_card_info->card_info.rca << 16, 0);\n+           ++state;\n+           break;\n+\n+       case 7:\n+       case 17:\n+           status = sdmmc_execute_command(pSDMMC, CMD_SEND_CSD, g_card_info->card_info.rca << 16, 0);\n+           memcpy(&g_card_info->card_info.csd, &g_card_info->card_info.response[0], 16);\n+           state = 100;\n+           break;\n+\n+       default:\n+           state += 100;   /* break from while loop */\n+           break;\n+       }\n+   }\n+\n+   /* Compute card size, block size and no. of blocks  based on CSD response recived. */\n+   if (prv_card_acquired()) {\n+       prv_process_csd(pSDMMC);\n+\n+       /* Setup card data width and block size (once) */\n+       if (prv_set_trans_state(pSDMMC) != 0) {\n+           return 0;\n+       }\n+       if (prv_set_card_params(pSDMMC) != 0) {\n+           return 0;\n+       }\n+   }\n+\n+   return prv_card_acquired();\n+}\n+\n+/* Get the device size of SD/MMC card (after enumeration) */\n+uint64_t Chip_SDMMC_GetDeviceSize(LPC_SDMMC_T *pSDMMC)\n+{\n+   return g_card_info->card_info.device_size;\n+}\n+\n+/* Get the number of blocks in SD/MMC card (after enumeration) */\n+int32_t Chip_SDMMC_GetDeviceBlocks(LPC_SDMMC_T *pSDMMC)\n+{\n+   return g_card_info->card_info.blocknr;\n+}\n+\n+/* Performs the read of data from the SD/MMC card */\n+int32_t Chip_SDMMC_ReadBlocks(LPC_SDMMC_T *pSDMMC, void *buffer, int32_t start_block, int32_t num_blocks)\n+{\n+   int32_t cbRead = (num_blocks) * MMC_SECTOR_SIZE;\n+   int32_t status = 0;\n+   int32_t index;\n+\n+   /* if card is not acquired return immediately */\n+   if (( start_block < 0) || ( (start_block + num_blocks) > g_card_info->card_info.blocknr) ) {\n+       return 0;\n+   }\n+\n+   /* put card in trans state */\n+   if (prv_set_trans_state(pSDMMC) != 0) {\n+       return 0;\n+   }\n+\n+   /* set number of bytes to read */\n+   Chip_SDIF_SetByteCnt(pSDMMC, cbRead);\n+\n+   /* if high capacity card use block indexing */\n+   if (g_card_info->card_info.card_type & CARD_TYPE_HC) {\n+       index = start_block;\n+   }\n+   else {  /*fix at 512 bytes*/\n+       index = start_block << 9;   // \\* g_card_info->card_info.block_len;\n+\n+   }\n+   Chip_SDIF_DmaSetup(pSDMMC, &g_card_info->sdif_dev, (uint32_t) buffer, cbRead);\n+\n+   /* Select single or multiple read based on number of blocks */\n+   if (num_blocks == 1) {\n+       status = sdmmc_execute_command(pSDMMC, CMD_READ_SINGLE, index, 0 | MCI_INT_DATA_OVER);\n+   }\n+   else {\n+       status = sdmmc_execute_command(pSDMMC, CMD_READ_MULTIPLE, index, 0 | MCI_INT_DATA_OVER);\n+   }\n+\n+   if (status != 0) {\n+       cbRead = 0;\n+   }\n+   /*Wait for card program to finish*/\n+   while (Chip_SDMMC_GetState(pSDMMC) != SDMMC_TRAN_ST) {}\n+\n+   return cbRead;\n+}\n+\n+/* Performs write of data to the SD/MMC card */\n+int32_t Chip_SDMMC_WriteBlocks(LPC_SDMMC_T *pSDMMC, void *buffer, int32_t start_block, int32_t num_blocks)\n+{\n+   int32_t cbWrote = num_blocks *  MMC_SECTOR_SIZE;\n+   int32_t status;\n+   int32_t index;\n+\n+   /* if card is not acquired return immediately */\n+   if (( start_block < 0) || ( (start_block + num_blocks) > g_card_info->card_info.blocknr) ) {\n+       return 0;\n+   }\n+\n+   /*Wait for card program to finish*/\n+   while (Chip_SDMMC_GetState(pSDMMC) != SDMMC_TRAN_ST) {}\n+\n+   /* put card in trans state */\n+   if (prv_set_trans_state(pSDMMC) != 0) {\n+       return 0;\n+   }\n+\n+   /* set number of bytes to write */\n+   Chip_SDIF_SetByteCnt(pSDMMC, cbWrote);\n+\n+   /* if high capacity card use block indexing */\n+   if (g_card_info->card_info.card_type & CARD_TYPE_HC) {\n+       index = start_block;\n+   }\n+   else {  /*fix at 512 bytes*/\n+       index = start_block << 9;   // * g_card_info->card_info.block_len;\n+\n+   }\n+\n+   Chip_SDIF_DmaSetup(pSDMMC, &g_card_info->sdif_dev, (uint32_t) buffer, cbWrote);\n+\n+   /* Select single or multiple write based on number of blocks */\n+   if (num_blocks == 1) {\n+       status = sdmmc_execute_command(pSDMMC, CMD_WRITE_SINGLE, index, 0 | MCI_INT_DATA_OVER);\n+   }\n+   else {\n+       status = sdmmc_execute_command(pSDMMC, CMD_WRITE_MULTIPLE, index, 0 | MCI_INT_DATA_OVER);\n+   }\n+\n+   /*Wait for card program to finish*/\n+   while (Chip_SDMMC_GetState(pSDMMC) != SDMMC_TRAN_ST) {}\n+\n+   if (status != 0) {\n+       cbWrote = 0;\n+   }\n+\n+   return cbWrote;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/spi_18xx_43xx.c ./lpc_chip_43xx/src/spi_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/spi_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/spi_18xx_43xx.c\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,227 @@\n+/*\n+ * @brief LPC43xx SPI driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+#if defined(CHIP_LPC43XX)\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Execute callback function */\n+STATIC void executeCallback(LPC_SPI_T *pSPI, SPI_CALLBACK_T pfunc)\n+{\n+   if (pfunc) {\n+       (pfunc) ();\n+   }\n+}\n+\n+/* Write byte(s) to FIFO buffer */\n+STATIC void writeData(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup, uint32_t num_bytes)\n+{\n+   uint16_t data2write = 0xFFFF;\n+\n+   if ( pXfSetup->pTxData) {\n+       data2write =  pXfSetup->pTxData[pXfSetup->cnt];\n+       if (num_bytes == 2) {\n+           data2write |= pXfSetup->pTxData[pXfSetup->cnt + 1] << 8;\n+       }\n+   }\n+\n+   Chip_SPI_SendFrame(pSPI, data2write);\n+\n+}\n+\n+/* Read byte(s) from FIFO buffer */\n+STATIC void readData(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup, uint16_t rDat, uint32_t num_bytes)\n+{\n+   rDat = Chip_SPI_ReceiveFrame(pSPI);\n+   if (pXfSetup->pRxData) {\n+       pXfSetup->pRxData[pXfSetup->cnt] = rDat;\n+       if (num_bytes == 2) {\n+           pXfSetup->pRxData[pXfSetup->cnt + 1] = rDat >> 8;\n+       }\n+   }\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* SPI Polling Read/Write in blocking mode */\n+uint32_t Chip_SPI_RWFrames_Blocking(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup)\n+{\n+   uint32_t status;\n+   uint16_t rDat = 0x0000;\n+   uint8_t bytes = 1;\n+\n+   /* Clear status */\n+   Chip_SPI_Int_FlushData(pSPI);\n+\n+   if (Chip_SPI_GetDataSize(pSPI) != SPI_BITS_8) {\n+       bytes = 2;\n+   }\n+\n+   executeCallback(pSPI, pXfSetup->fnBefTransfer);\n+\n+   while (pXfSetup->cnt < pXfSetup->length) {\n+\n+       executeCallback(pSPI, pXfSetup->fnBefFrame);\n+\n+       /* write data to buffer */\n+       writeData(pSPI, pXfSetup, bytes);\n+\n+       /* Wait for transfer completes */\n+       while (1) {\n+           status = Chip_SPI_GetStatus(pSPI);\n+           /* Check error */\n+           if (status & SPI_SR_ERROR) {\n+               goto rw_end;\n+           }\n+           if (status & SPI_SR_SPIF) {\n+               break;\n+           }\n+       }\n+\n+       executeCallback(pSPI, pXfSetup->fnAftFrame);\n+\n+       /* Read data*/\n+       readData(pSPI, pXfSetup, rDat, bytes);\n+       pXfSetup->cnt += bytes;\n+   }\n+\n+rw_end:\n+   executeCallback(pSPI, pXfSetup->fnAftTransfer);\n+   return pXfSetup->cnt;\n+}\n+\n+/* Clean all data in RX FIFO of SPI */\n+void Chip_SPI_Int_FlushData(LPC_SPI_T *pSPI)\n+{\n+   volatile uint32_t tmp;\n+   Chip_SPI_GetStatus(pSPI);\n+   tmp = Chip_SPI_ReceiveFrame(pSPI);\n+   Chip_SPI_Int_ClearStatus(pSPI, SPI_INT_SPIF);\n+}\n+\n+/* SPI Interrupt Read/Write with 8-bit frame width */\n+Status Chip_SPI_Int_RWFrames(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup, uint8_t bytes)\n+{\n+   uint32_t status;\n+   uint16_t rDat = 0x0000;\n+\n+   status = Chip_SPI_GetStatus(pSPI);\n+   /* Check error status */\n+   if (status & SPI_SR_ERROR) {\n+       return ERROR;\n+   }\n+\n+   Chip_SPI_Int_ClearStatus(pSPI, SPI_INT_SPIF);\n+   if (status & SPI_SR_SPIF) {\n+       executeCallback(pSPI, pXfSetup->fnAftFrame);\n+       if (pXfSetup->cnt < pXfSetup->length) {\n+           /* read data */\n+           readData(pSPI, pXfSetup, rDat, bytes);\n+           pXfSetup->cnt += bytes;\n+       }\n+   }\n+\n+   if (pXfSetup->cnt < pXfSetup->length) {\n+\n+       executeCallback(pSPI, pXfSetup->fnBefFrame);\n+\n+       /* Write data  */\n+       writeData(pSPI, pXfSetup, bytes);\n+   }\n+   else {\n+       executeCallback(pSPI, pXfSetup->fnAftTransfer);\n+   }\n+   return SUCCESS;\n+}\n+\n+/* SPI Interrupt Read/Write with 8-bit frame width */\n+Status Chip_SPI_Int_RWFrames8Bits(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup)\n+{\n+   return Chip_SPI_Int_RWFrames(pSPI, pXfSetup, 1);\n+}\n+\n+/* SPI Interrupt Read/Write with 16-bit frame width */\n+Status Chip_SPI_Int_RWFrames16Bits(LPC_SPI_T *pSPI, SPI_DATA_SETUP_T *pXfSetup)\n+{\n+   return Chip_SPI_Int_RWFrames(pSPI, pXfSetup, 2);\n+}\n+\n+/* Set the clock frequency for SPI interface */\n+void Chip_SPI_SetBitRate(LPC_SPI_T *pSPI, uint32_t bitRate)\n+{\n+   uint32_t spiClk, counter;\n+   /* Get SPI clock rate */\n+   spiClk = Chip_Clock_GetRate(CLK_SPI);\n+\n+   counter = spiClk / bitRate;\n+   if (counter < 8) {\n+       counter = 8;\n+   }\n+   counter = ((counter + 1) / 2) * 2;\n+\n+   if (counter > 254) {\n+       counter = 254;\n+   }\n+\n+   Chip_SPI_SetClockCounter(pSPI, counter);\n+}\n+\n+/* Initialize the SPI */\n+void Chip_SPI_Init(LPC_SPI_T *pSPI)\n+{\n+   Chip_Clock_Enable(CLK_SPI);\n+\n+   Chip_SPI_SetMode(pSPI, SPI_MODE_MASTER);\n+   pSPI->CR = (pSPI->CR & (~0xF1C)) | SPI_CR_BIT_EN | SPI_BITS_8 | SPI_CLOCK_CPHA0_CPOL0 | SPI_DATA_MSB_FIRST;\n+   Chip_SPI_SetBitRate(pSPI, 400000);\n+}\n+\n+/* De-initializes the SPI peripheral */\n+void Chip_SPI_DeInit(LPC_SPI_T *pSPI)\n+{\n+   Chip_Clock_Disable(CLK_SPI);\n+}\n+\n+#endif\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/ssp_18xx_43xx.c ./lpc_chip_43xx/src/ssp_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/ssp_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/ssp_18xx_43xx.c\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,469 @@\n+/*\n+ * @brief LPC18xx/43xx SSP driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+STATIC void SSP_Write2BFifo(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   if (xf_setup->tx_data) {\n+       Chip_SSP_SendFrame(pSSP, (*(uint16_t *) ((uint32_t) xf_setup->tx_data +\n+                                                xf_setup->tx_cnt)));\n+   }\n+   else {\n+       Chip_SSP_SendFrame(pSSP, 0xFFFF);\n+   }\n+\n+   xf_setup->tx_cnt += 2;\n+}\n+\n+/** SSP macro: write 1 bytes to FIFO buffer */\n+STATIC void SSP_Write1BFifo(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   if (xf_setup->tx_data) {\n+       Chip_SSP_SendFrame(pSSP, (*(uint8_t *) ((uint32_t) xf_setup->tx_data + xf_setup->tx_cnt)));\n+   }\n+   else {\n+       Chip_SSP_SendFrame(pSSP, 0xFF);\n+   }\n+\n+   xf_setup->tx_cnt++;\n+}\n+\n+/** SSP macro: read 1 bytes from FIFO buffer */\n+STATIC void SSP_Read2BFifo(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   uint16_t rDat;\n+\n+   while ((Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET) &&\n+          (xf_setup->rx_cnt < xf_setup->length)) {\n+       rDat = Chip_SSP_ReceiveFrame(pSSP);\n+       if (xf_setup->rx_data) {\n+           *(uint16_t *) ((uint32_t) xf_setup->rx_data + xf_setup->rx_cnt) = rDat;\n+       }\n+\n+       xf_setup->rx_cnt += 2;\n+   }\n+}\n+\n+/** SSP macro: read 2 bytes from FIFO buffer */\n+STATIC void SSP_Read1BFifo(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   uint16_t rDat;\n+\n+   while ((Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET) &&\n+          (xf_setup->rx_cnt < xf_setup->length)) {\n+       rDat = Chip_SSP_ReceiveFrame(pSSP);\n+       if (xf_setup->rx_data) {\n+           *(uint8_t *) ((uint32_t) xf_setup->rx_data + xf_setup->rx_cnt) = rDat;\n+       }\n+\n+       xf_setup->rx_cnt++;\n+   }\n+}\n+\n+/* Returns clock index for the register interface */\n+STATIC CHIP_CCU_CLK_T Chip_SSP_GetClockIndex(LPC_SSP_T *pSSP)\n+{\n+   CHIP_CCU_CLK_T clkSSP;\n+\n+   if (pSSP == LPC_SSP1) {\n+       clkSSP = CLK_MX_SSP1;\n+   }\n+   else {\n+       clkSSP = CLK_MX_SSP0;\n+   }\n+\n+   return clkSSP;\n+}\n+\n+/* Returns clock index for the peripheral block */\n+STATIC CHIP_CCU_CLK_T Chip_SSP_GetPeriphClockIndex(LPC_SSP_T *pSSP)\n+{\n+   CHIP_CCU_CLK_T clkSSP;\n+\n+   if (pSSP == LPC_SSP1) {\n+       clkSSP = CLK_APB2_SSP1;\n+   }\n+   else {\n+       clkSSP = CLK_APB0_SSP0;\n+   }\n+\n+   return clkSSP;\n+}\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/*Set up output clocks per bit for SSP bus*/\n+void Chip_SSP_SetClockRate(LPC_SSP_T *pSSP, uint32_t clk_rate, uint32_t prescale)\n+{\n+   uint32_t temp;\n+   temp = pSSP->CR0 & (~(SSP_CR0_SCR(0xFF)));\n+   pSSP->CR0 = temp | (SSP_CR0_SCR(clk_rate));\n+   pSSP->CPSR = prescale;\n+}\n+\n+/* SSP Polling Read/Write in blocking mode */\n+uint32_t Chip_SSP_RWFrames_Blocking(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   /* Clear all remaining frames in RX FIFO */\n+   while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE)) {\n+       Chip_SSP_ReceiveFrame(pSSP);\n+   }\n+\n+   /* Clear status */\n+   Chip_SSP_ClearIntPending(pSSP, SSP_INT_CLEAR_BITMASK);\n+\n+   if (Chip_SSP_GetDataSize(pSSP) > SSP_BITS_8) {\n+       while (xf_setup->rx_cnt < xf_setup->length || xf_setup->tx_cnt < xf_setup->length) {\n+           /* write data to buffer */\n+           if (( Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && ( xf_setup->tx_cnt < xf_setup->length) ) {\n+               SSP_Write2BFifo(pSSP, xf_setup);\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           SSP_Read2BFifo(pSSP, xf_setup);\n+       }\n+   }\n+   else {\n+       while (xf_setup->rx_cnt < xf_setup->length || xf_setup->tx_cnt < xf_setup->length) {\n+           /* write data to buffer */\n+           if (( Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && ( xf_setup->tx_cnt < xf_setup->length) ) {\n+               SSP_Write1BFifo(pSSP, xf_setup);\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           SSP_Read1BFifo(pSSP, xf_setup);\n+       }\n+   }\n+   if (xf_setup->tx_data) {\n+       return xf_setup->tx_cnt;\n+   }\n+   else if (xf_setup->rx_data) {\n+       return xf_setup->rx_cnt;\n+   }\n+\n+   return 0;\n+}\n+\n+/* SSP Polling Write in blocking mode */\n+uint32_t Chip_SSP_WriteFrames_Blocking(LPC_SSP_T *pSSP, const uint8_t *buffer, uint32_t buffer_len)\n+{\n+   uint32_t tx_cnt = 0, rx_cnt = 0;\n+\n+   /* Clear all remaining frames in RX FIFO */\n+   while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE)) {\n+       Chip_SSP_ReceiveFrame(pSSP);\n+   }\n+\n+   /* Clear status */\n+   Chip_SSP_ClearIntPending(pSSP, SSP_INT_CLEAR_BITMASK);\n+\n+   if (Chip_SSP_GetDataSize(pSSP) > SSP_BITS_8) {\n+       uint16_t *wdata16;\n+\n+       wdata16 = (uint16_t *) buffer;\n+\n+       while (tx_cnt < buffer_len || rx_cnt < buffer_len) {\n+           /* write data to buffer */\n+           if ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && (tx_cnt < buffer_len)) {\n+               Chip_SSP_SendFrame(pSSP, *wdata16);\n+               wdata16++;\n+               tx_cnt += 2;\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET) {\n+               Chip_SSP_ReceiveFrame(pSSP);    /* read dummy data */\n+               rx_cnt += 2;\n+           }\n+       }\n+   }\n+   else {\n+       const uint8_t *wdata8;\n+\n+       wdata8 = buffer;\n+\n+       while (tx_cnt < buffer_len || rx_cnt < buffer_len) {\n+           /* write data to buffer */\n+           if ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && (tx_cnt < buffer_len)) {\n+               Chip_SSP_SendFrame(pSSP, *wdata8);\n+               wdata8++;\n+               tx_cnt++;\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET && rx_cnt < buffer_len) {\n+               Chip_SSP_ReceiveFrame(pSSP);    /* read dummy data */\n+               rx_cnt++;\n+           }\n+       }\n+   }\n+\n+   return tx_cnt;\n+\n+}\n+\n+/* SSP Polling Read in blocking mode */\n+uint32_t Chip_SSP_ReadFrames_Blocking(LPC_SSP_T *pSSP, uint8_t *buffer, uint32_t buffer_len)\n+{\n+   uint32_t rx_cnt = 0, tx_cnt = 0;\n+\n+   /* Clear all remaining frames in RX FIFO */\n+   while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE)) {\n+       Chip_SSP_ReceiveFrame(pSSP);\n+   }\n+\n+   /* Clear status */\n+   Chip_SSP_ClearIntPending(pSSP, SSP_INT_CLEAR_BITMASK);\n+\n+   if (Chip_SSP_GetDataSize(pSSP) > SSP_BITS_8) {\n+       uint16_t *rdata16;\n+\n+       rdata16 = (uint16_t *) buffer;\n+\n+       while (tx_cnt < buffer_len || rx_cnt < buffer_len) {\n+           /* write data to buffer */\n+           if ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && (tx_cnt < buffer_len)) {\n+               Chip_SSP_SendFrame(pSSP, 0xFFFF);   /* just send dummy data */\n+               tx_cnt += 2;\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET && rx_cnt < buffer_len) {\n+               *rdata16 = Chip_SSP_ReceiveFrame(pSSP);\n+               rdata16++;\n+               rx_cnt += 2;\n+           }\n+       }\n+   }\n+   else {\n+       uint8_t *rdata8;\n+\n+       rdata8 = buffer;\n+\n+       while (tx_cnt < buffer_len || rx_cnt < buffer_len) {\n+           /* write data to buffer */\n+           if ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF) == SET) && (tx_cnt < buffer_len)) {\n+               Chip_SSP_SendFrame(pSSP, 0xFF); /* just send dummy data      */\n+               tx_cnt++;\n+           }\n+\n+           /* Check overrun error */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /* Check for any data available in RX FIFO */\n+           while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE) == SET && rx_cnt < buffer_len) {\n+               *rdata8 = Chip_SSP_ReceiveFrame(pSSP);\n+               rdata8++;\n+               rx_cnt++;\n+           }\n+       }\n+   }\n+\n+   return rx_cnt;\n+\n+}\n+\n+/* Clean all data in RX FIFO of SSP */\n+void Chip_SSP_Int_FlushData(LPC_SSP_T *pSSP)\n+{\n+   if (Chip_SSP_GetStatus(pSSP, SSP_STAT_BSY)) {\n+       while (Chip_SSP_GetStatus(pSSP, SSP_STAT_BSY)) {}\n+   }\n+\n+   /* Clear all remaining frames in RX FIFO */\n+   while (Chip_SSP_GetStatus(pSSP, SSP_STAT_RNE)) {\n+       Chip_SSP_ReceiveFrame(pSSP);\n+   }\n+\n+   /* Clear status */\n+   Chip_SSP_ClearIntPending(pSSP, SSP_INT_CLEAR_BITMASK);\n+}\n+\n+/* SSP Interrupt Read/Write with 8-bit frame width */\n+Status Chip_SSP_Int_RWFrames8Bits(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   /* Check overrun error in RIS register */\n+   if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+       return ERROR;\n+   }\n+\n+   if ((xf_setup->tx_cnt != xf_setup->length) || (xf_setup->rx_cnt != xf_setup->length)) {\n+       /* check if RX FIFO contains data */\n+       SSP_Read1BFifo(pSSP, xf_setup);\n+\n+       while ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF)) && (xf_setup->tx_cnt != xf_setup->length)) {\n+           /* Write data to buffer */\n+           SSP_Write1BFifo(pSSP, xf_setup);\n+\n+           /* Check overrun error in RIS register */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /*  Check for any data available in RX FIFO */\n+           SSP_Read1BFifo(pSSP, xf_setup);\n+       }\n+\n+       return SUCCESS;\n+   }\n+\n+   return ERROR;\n+}\n+\n+/* SSP Interrupt Read/Write with 16-bit frame width */\n+Status Chip_SSP_Int_RWFrames16Bits(LPC_SSP_T *pSSP, Chip_SSP_DATA_SETUP_T *xf_setup)\n+{\n+   /* Check overrun error in RIS register */\n+   if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+       return ERROR;\n+   }\n+\n+   if ((xf_setup->tx_cnt != xf_setup->length) || (xf_setup->rx_cnt != xf_setup->length)) {\n+       /* check if RX FIFO contains data */\n+       SSP_Read2BFifo(pSSP, xf_setup);\n+\n+       while ((Chip_SSP_GetStatus(pSSP, SSP_STAT_TNF)) && (xf_setup->tx_cnt != xf_setup->length)) {\n+           /* Write data to buffer */\n+           SSP_Write2BFifo(pSSP, xf_setup);\n+\n+           /* Check overrun error in RIS register */\n+           if (Chip_SSP_GetRawIntStatus(pSSP, SSP_RORRIS) == SET) {\n+               return ERROR;\n+           }\n+\n+           /*  Check for any data available in RX FIFO          */\n+           SSP_Read2BFifo(pSSP, xf_setup);\n+       }\n+\n+       return SUCCESS;\n+   }\n+\n+   return ERROR;\n+}\n+\n+/* Set the SSP operating modes, master or slave */\n+void Chip_SSP_SetMaster(LPC_SSP_T *pSSP, bool master)\n+{\n+   if (master) {\n+       Chip_SSP_Set_Mode(pSSP, SSP_MODE_MASTER);\n+   }\n+   else {\n+       Chip_SSP_Set_Mode(pSSP, SSP_MODE_SLAVE);\n+   }\n+}\n+\n+/* Set the clock frequency for SSP interface */\n+void Chip_SSP_SetBitRate(LPC_SSP_T *pSSP, uint32_t bitRate)\n+{\n+   uint32_t ssp_clk, cr0_div, cmp_clk, prescale;\n+\n+   ssp_clk = Chip_Clock_GetRate(Chip_SSP_GetPeriphClockIndex(pSSP));\n+\n+   cr0_div = 0;\n+   cmp_clk = 0xFFFFFFFF;\n+   prescale = 2;\n+\n+   while (cmp_clk > bitRate) {\n+       cmp_clk = ssp_clk / ((cr0_div + 1) * prescale);\n+       if (cmp_clk > bitRate) {\n+           cr0_div++;\n+           if (cr0_div > 0xFF) {\n+               cr0_div = 0;\n+               prescale += 2;\n+           }\n+       }\n+   }\n+\n+   Chip_SSP_SetClockRate(pSSP, cr0_div, prescale);\n+}\n+\n+/* Initialize the SSP */\n+void Chip_SSP_Init(LPC_SSP_T *pSSP)\n+{\n+   Chip_Clock_Enable(Chip_SSP_GetClockIndex(pSSP));\n+   Chip_Clock_Enable(Chip_SSP_GetPeriphClockIndex(pSSP));\n+\n+   Chip_SSP_Set_Mode(pSSP, SSP_MODE_MASTER);\n+   Chip_SSP_SetFormat(pSSP, SSP_BITS_8, SSP_FRAMEFORMAT_SPI, SSP_CLOCK_CPHA0_CPOL0);\n+   Chip_SSP_SetBitRate(pSSP, 100000);\n+}\n+\n+/* De-initializes the SSP peripheral */\n+void Chip_SSP_DeInit(LPC_SSP_T *pSSP)\n+{\n+   Chip_SSP_Disable(pSSP);\n+\n+   Chip_Clock_Disable(Chip_SSP_GetPeriphClockIndex(pSSP));\n+   Chip_Clock_Disable(Chip_SSP_GetClockIndex(pSSP));\n+\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/stopwatch_18xx_43xx.c ./lpc_chip_43xx/src/stopwatch_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/stopwatch_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/stopwatch_18xx_43xx.c\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,106 @@\n+/*\n+ * @brief LPC18xx/43xx specific stopwatch implementation\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2014\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+#include \"stopwatch.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Precompute these to optimize runtime */\n+static uint32_t ticksPerSecond;\n+static uint32_t ticksPerMs;\n+static uint32_t ticksPerUs;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize stopwatch */\n+void StopWatch_Init(void)\n+{\n+   /* Use timer 1. Set prescaler to divide by 8 */\n+   const uint32_t prescaleDivisor = 8;\n+   Chip_TIMER_Init(LPC_TIMER0);\n+   Chip_TIMER_PrescaleSet(LPC_TIMER0, prescaleDivisor - 1);\n+   Chip_TIMER_Enable(LPC_TIMER0);\n+\n+   /* Pre-compute tick rate. */\n+   ticksPerSecond = Chip_Clock_GetRate(CLK_MX_TIMER0) / prescaleDivisor;\n+   ticksPerMs = ticksPerSecond / 1000;\n+   ticksPerUs = ticksPerSecond / 1000000;\n+}\n+\n+/* Start a stopwatch */\n+uint32_t StopWatch_Start(void)\n+{\n+   /* Return the current timer count. */\n+   return Chip_TIMER_ReadCount(LPC_TIMER0);\n+}\n+\n+/* Returns number of ticks per second of the stopwatch timer */\n+uint32_t StopWatch_TicksPerSecond(void)\n+{\n+   return ticksPerSecond;\n+}\n+\n+/* Converts from stopwatch ticks to mS. */\n+uint32_t StopWatch_TicksToMs(uint32_t ticks)\n+{\n+   return ticks / ticksPerMs;\n+}\n+\n+/* Converts from stopwatch ticks to uS. */\n+uint32_t StopWatch_TicksToUs(uint32_t ticks)\n+{\n+   return ticks / ticksPerUs;\n+}\n+\n+/* Converts from mS to stopwatch ticks. */\n+uint32_t StopWatch_MsToTicks(uint32_t mS)\n+{\n+   return mS * ticksPerMs;\n+}\n+\n+/* Converts from uS to stopwatch ticks. */\n+uint32_t StopWatch_UsToTicks(uint32_t uS)\n+{\n+   return uS * ticksPerUs;\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/sysinit_18xx_43xx.c ./lpc_chip_43xx/src/sysinit_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/sysinit_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/sysinit_18xx_43xx.c\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,162 @@\n+/*\n+ * @brief LPC18xx/LPC43xx Chip specific SystemInit\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2013\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Structure for initial base clock states */\n+struct CLK_BASE_STATES {\n+   CHIP_CGU_BASE_CLK_T clk;    /* Base clock */\n+   CHIP_CGU_CLKIN_T clkin; /* Base clock source, see UM for allowable souorces per base clock */\n+   bool autoblock_enab;    /* Set to true to enable autoblocking on frequency change */\n+   bool powerdn;           /* Set to true if the base clock is initially powered down */\n+};\n+\n+static const struct CLK_BASE_STATES InitClkStates[] = {\n+   {CLK_BASE_SAFE, CLKIN_IRC, true, false},\n+   {CLK_BASE_APB1, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_APB3, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_USB0, CLKIN_USBPLL, true, true},\n+#if defined(CHIP_LPC43XX)\n+   {CLK_BASE_PERIPH, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_SPI, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_ADCHS, CLKIN_MAINPLL, true, true},\n+#endif\n+   {CLK_BASE_SDIO, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_SSP0, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_SSP1, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_UART0, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_UART1, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_UART2, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_UART3, CLKIN_MAINPLL, true, false},\n+   {CLK_BASE_OUT, CLKINPUT_PD, true, false},\n+   {CLK_BASE_APLL, CLKINPUT_PD, true, false},\n+   {CLK_BASE_CGU_OUT0, CLKINPUT_PD, true, false},\n+   {CLK_BASE_CGU_OUT1, CLKINPUT_PD, true, false},\n+};\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+/* Setup Chip Core clock */\n+void Chip_SetupCoreClock(CHIP_CGU_CLKIN_T clkin, uint32_t core_freq, bool setbase)\n+{\n+   int i;\n+   volatile uint32_t delay = 5500;\n+   uint32_t direct = 0;\n+   PLL_PARAM_T ppll;\n+\n+   if (clkin == CLKIN_CRYSTAL) {\n+       /* Switch main system clocking to crystal */\n+       Chip_Clock_EnableCrystal();\n+   }\n+   Chip_Clock_SetBaseClock(CLK_BASE_MX, clkin, true, false);\n+   Chip_Clock_DisableMainPLL(); /* Disable PLL */\n+\n+   /* Calculate the PLL Parameters */\n+   ppll.srcin = clkin;\n+   Chip_Clock_CalcMainPLLValue(core_freq, &ppll);\n+\n+   if (core_freq > 110000000UL) {\n+       if (!(ppll.ctrl & (1 << 7)) || ppll.psel) {\n+           PLL_PARAM_T lpll;\n+           /* Calculate the PLL Parameters */\n+           lpll.srcin = clkin;\n+           Chip_Clock_CalcMainPLLValue(110000000UL, &lpll);\n+           Chip_Clock_SetupMainPLL(&lpll);\n+           /* Wait for the PLL to lock */\n+           while(!Chip_Clock_MainPLLLocked()) {}\n+           Chip_Clock_SetBaseClock(CLK_BASE_MX, CLKIN_MAINPLL, true, false);\n+           while(delay --){}\n+           delay = 5500;\n+       } else {\n+           direct = 1;\n+           ppll.ctrl &= ~(1 << 7);\n+       }\n+   }\n+\n+   /* Setup and start the PLL */\n+   Chip_Clock_SetupMainPLL(&ppll);\n+\n+   /* Wait for the PLL to lock */\n+   while(!Chip_Clock_MainPLLLocked()) {}\n+\n+   /* Set core clock base as PLL1 */\n+   Chip_Clock_SetBaseClock(CLK_BASE_MX, CLKIN_MAINPLL, true, false);\n+\n+   while(delay --){} /* Wait for approx 50 uSec */\n+   if (direct) {\n+       delay = 5500;\n+       ppll.ctrl |= 1 << 7;\n+       Chip_Clock_SetupMainPLL(&ppll); /* Set DIRECT to operate at full frequency */\n+       while(delay --){} /* Wait for approx 50 uSec */\n+   }\n+\n+   if (setbase) {\n+       /* Setup system base clocks and initial states. This won't enable and\n+          disable individual clocks, but sets up the base clock sources for\n+          each individual peripheral clock. */\n+       for (i = 0; i < (sizeof(InitClkStates) / sizeof(InitClkStates[0])); i++) {\n+           Chip_Clock_SetBaseClock(InitClkStates[i].clk, InitClkStates[i].clkin,\n+                                   InitClkStates[i].autoblock_enab, InitClkStates[i].powerdn);\n+       }\n+   }\n+}\n+\n+/* Setup system clocking */\n+void Chip_SetupXtalClocking(void)\n+{\n+   Chip_SetupCoreClock(CLKIN_CRYSTAL, MAX_CLOCK_FREQ, true);\n+}\n+\n+/* Set up and initialize hardware prior to call to main */\n+void Chip_SetupIrcClocking(void)\n+{\n+   Chip_SetupCoreClock(CLKIN_IRC, MAX_CLOCK_FREQ, true);\n+}\n+\n+/* Set up and initialize hardware prior to call to main */\n+void Chip_SystemInit(void)\n+{\n+   /* Initial internal clocking */\n+   Chip_SetupIrcClocking();\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/timer_18xx_43xx.c ./lpc_chip_43xx/src/timer_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/timer_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/timer_18xx_43xx.c\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,117 @@\n+/*\n+ * @brief LPC18xx/43xx 16/32-bit Timer/PWM driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/* Returns clock index for the peripheral block */\n+STATIC CHIP_CCU_CLK_T Chip_TIMER_GetClockIndex(LPC_TIMER_T *pTMR)\n+{\n+   CHIP_CCU_CLK_T clkTMR;\n+\n+   if (pTMR == LPC_TIMER3) {\n+       clkTMR = CLK_MX_TIMER3;\n+   }\n+    else if (pTMR == LPC_TIMER2) {\n+       clkTMR = CLK_MX_TIMER2;\n+   }\n+    else if (pTMR == LPC_TIMER1) {\n+       clkTMR = CLK_MX_TIMER1;\n+   }\n+   else {\n+       clkTMR = CLK_MX_TIMER0;\n+   }\n+\n+   return clkTMR;\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize a timer */\n+void Chip_TIMER_Init(LPC_TIMER_T *pTMR)\n+{\n+   Chip_Clock_Enable(Chip_TIMER_GetClockIndex(pTMR));\n+}\n+\n+/* Shutdown a timer */\n+void Chip_TIMER_DeInit(LPC_TIMER_T *pTMR)\n+{\n+   Chip_Clock_Disable(Chip_TIMER_GetClockIndex(pTMR));\n+}\n+\n+/* Resets the timer terminal and prescale counts to 0 */\n+void Chip_TIMER_Reset(LPC_TIMER_T *pTMR)\n+{\n+   uint32_t reg;\n+\n+   /* Disable timer, set terminal count to non-0 */\n+   reg = pTMR->TCR;\n+   pTMR->TCR = 0;\n+   pTMR->TC = 1;\n+\n+   /* Reset timer counter */\n+   pTMR->TCR = TIMER_RESET;\n+\n+   /* Wait for terminal count to clear */\n+   while (pTMR->TC != 0) {}\n+\n+   /* Restore timer state */\n+   pTMR->TCR = reg;\n+}\n+\n+/* Sets external match control (MATn.matchnum) pin control */\n+void Chip_TIMER_ExtMatchControlSet(LPC_TIMER_T *pTMR, int8_t initial_state,\n+                                  TIMER_PIN_MATCH_STATE_T matchState, int8_t matchnum)\n+{\n+   uint32_t mask, reg;\n+\n+   /* Clear bits corresponding to selected match register */\n+   mask = (1 << matchnum) | (0x03 << (4 + (matchnum * 2)));\n+   reg = pTMR->EMR &= ~mask;\n+\n+   /* Set new configuration for selected match register */\n+   pTMR->EMR = reg | (((uint32_t) initial_state) << matchnum) |\n+               (((uint32_t) matchState) << (4 + (matchnum * 2)));\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/uart_18xx_43xx.c ./lpc_chip_43xx/src/uart_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/uart_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/uart_18xx_43xx.c\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,424 @@\n+/*\n+ * @brief LPC18xx/43xx UART chip driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/* Autobaud status flag */\n+STATIC volatile FlagStatus ABsyncSts = RESET;\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+ /* UART Peripheral clocks */\n+static const CHIP_CCU_CLK_T UART_PClock[] = {CLK_MX_UART0, CLK_MX_UART1, CLK_MX_UART2, CLK_MX_UART3};\n+\n+/* UART Bus clocks */\n+static const CHIP_CCU_CLK_T UART_BClock[] = {CLK_APB0_UART0, CLK_APB0_UART1, CLK_APB2_UART2, CLK_APB2_UART3};\n+\n+/* Returns clock index for the peripheral block */\n+static int Chip_UART_GetIndex(LPC_USART_T *pUART)\n+{\n+   uint32_t base = (uint32_t) pUART;\n+   switch(base) {\n+       case LPC_USART0_BASE:\n+           return 0;\n+       case LPC_UART1_BASE:\n+           return 1;\n+       case LPC_USART2_BASE:\n+           return 2;\n+       case LPC_USART3_BASE:\n+           return 3;\n+       default:\n+           return 0; /* Should never come here */\n+   }\n+}\n+\n+/* UART Autobaud command interrupt handler */\n+STATIC void Chip_UART_ABIntHandler(LPC_USART_T *pUART)\n+{\n+   /* Handle End Of Autobaud interrupt */\n+   if((Chip_UART_ReadIntIDReg(pUART) & UART_IIR_ABEO_INT) != 0) {\n+        Chip_UART_SetAutoBaudReg(pUART, UART_ACR_ABEOINT_CLR);\n+       Chip_UART_IntDisable(pUART, UART_IER_ABEOINT);\n+       if (ABsyncSts == RESET) {\n+           ABsyncSts = SET;\n+        }\n+   }\n+\n+    /* Handle Autobaud Timeout interrupt */\n+   if((Chip_UART_ReadIntIDReg(pUART) & UART_IIR_ABTO_INT) != 0) {\n+        Chip_UART_SetAutoBaudReg(pUART, UART_ACR_ABTOINT_CLR);\n+       Chip_UART_IntDisable(pUART, UART_IER_ABTOINT);\n+   }\n+}\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initializes the pUART peripheral */\n+void Chip_UART_Init(LPC_USART_T *pUART)\n+{\n+    volatile uint32_t tmp;\n+\n+   /* Enable UART clocking. UART base clock(s) must already be enabled */\n+   Chip_Clock_EnableOpts(UART_PClock[Chip_UART_GetIndex(pUART)], true, true, 1);\n+\n+   /* Enable FIFOs by default, reset them */\n+   Chip_UART_SetupFIFOS(pUART, (UART_FCR_FIFO_EN | UART_FCR_RX_RS | UART_FCR_TX_RS));\n+\n+    /* Disable Tx */\n+    Chip_UART_TXDisable(pUART);\n+\n+    /* Disable interrupts */\n+   pUART->IER = 0;\n+   /* Set LCR to default state */\n+   pUART->LCR = 0;\n+   /* Set ACR to default state */\n+   pUART->ACR = 0;\n+    /* Set RS485 control to default state */\n+   pUART->RS485CTRL = 0;\n+   /* Set RS485 delay timer to default state */\n+   pUART->RS485DLY = 0;\n+   /* Set RS485 addr match to default state */\n+   pUART->RS485ADRMATCH = 0;\n+\n+    /* Clear MCR */\n+    if (pUART == LPC_UART1) {\n+       /* Set Modem Control to default state */\n+       pUART->MCR = 0;\n+       /*Dummy Reading to Clear Status */\n+       tmp = pUART->MSR;\n+   }\n+\n+   /* Default 8N1, with DLAB disabled */\n+   Chip_UART_ConfigData(pUART, (UART_LCR_WLEN8 | UART_LCR_SBS_1BIT | UART_LCR_PARITY_DIS));\n+\n+   /* Disable fractional divider */\n+   pUART->FDR = 0x10;\n+}\n+\n+/* De-initializes the pUART peripheral */\n+void Chip_UART_DeInit(LPC_USART_T *pUART)\n+{\n+    /* Disable Tx */\n+    Chip_UART_TXDisable(pUART);\n+\n+    /* Disable clock */\n+   Chip_Clock_Disable(UART_PClock[Chip_UART_GetIndex(pUART)]);\n+}\n+\n+/* Transmit a byte array through the UART peripheral (non-blocking) */\n+int Chip_UART_Send(LPC_USART_T *pUART, const void *data, int numBytes)\n+{\n+   int sent = 0;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   /* Send until the transmit FIFO is full or out of bytes */\n+   while ((sent < numBytes) &&\n+          ((Chip_UART_ReadLineStatus(pUART) & UART_LSR_THRE) != 0)) {\n+       Chip_UART_SendByte(pUART, *p8);\n+       p8++;\n+       sent++;\n+   }\n+\n+   return sent;\n+}\n+\n+/* Check whether if UART is busy or not */\n+FlagStatus Chip_UART_CheckBusy(LPC_USART_T *pUART)\n+{\n+   if (pUART->LSR & UART_LSR_TEMT) {\n+       return RESET;\n+   }\n+   else {\n+       return SET;\n+   }\n+}\n+\n+/* Transmit a byte array through the UART peripheral (blocking) */\n+int Chip_UART_SendBlocking(LPC_USART_T *pUART, const void *data, int numBytes)\n+{\n+   int pass, sent = 0;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   while (numBytes > 0) {\n+       pass = Chip_UART_Send(pUART, p8, numBytes);\n+       numBytes -= pass;\n+       sent += pass;\n+       p8 += pass;\n+   }\n+\n+   return sent;\n+}\n+\n+/* Read data through the UART peripheral (non-blocking) */\n+int Chip_UART_Read(LPC_USART_T *pUART, void *data, int numBytes)\n+{\n+   int readBytes = 0;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   /* Send until the transmit FIFO is full or out of bytes */\n+   while ((readBytes < numBytes) &&\n+          ((Chip_UART_ReadLineStatus(pUART) & UART_LSR_RDR) != 0)) {\n+       *p8 = Chip_UART_ReadByte(pUART);\n+       p8++;\n+       readBytes++;\n+   }\n+\n+   return readBytes;\n+}\n+\n+/* Read data through the UART peripheral (blocking) */\n+int Chip_UART_ReadBlocking(LPC_USART_T *pUART, void *data, int numBytes)\n+{\n+   int pass, readBytes = 0;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   while (readBytes < numBytes) {\n+       pass = Chip_UART_Read(pUART, p8, numBytes);\n+       numBytes -= pass;\n+       readBytes += pass;\n+       p8 += pass;\n+   }\n+\n+   return readBytes;\n+}\n+\n+/* Determines and sets best dividers to get a target bit rate */\n+uint32_t Chip_UART_SetBaud(LPC_USART_T *pUART, uint32_t baudrate)\n+{\n+   uint32_t div, divh, divl, clkin;\n+\n+   /* Determine UART clock in rate without FDR */\n+   clkin = Chip_Clock_GetRate(UART_BClock[Chip_UART_GetIndex(pUART)]);\n+   div = clkin / (baudrate * 16);\n+\n+   /* High and low halves of the divider */\n+   divh = div / 256;\n+   divl = div - (divh * 256);\n+\n+   Chip_UART_EnableDivisorAccess(pUART);\n+   Chip_UART_SetDivisorLatches(pUART, divl, divh);\n+   Chip_UART_DisableDivisorAccess(pUART);\n+\n+   /* Fractional FDR alreadt setup for 1 in UART init */\n+\n+   return clkin / div;\n+}\n+\n+/* UART receive-only interrupt handler for ring buffers */\n+void Chip_UART_RXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB)\n+{\n+   /* New data will be ignored if data not popped in time */\n+   while (Chip_UART_ReadLineStatus(pUART) & UART_LSR_RDR) {\n+       uint8_t ch = Chip_UART_ReadByte(pUART);\n+       RingBuffer_Insert(pRB, &ch);\n+   }\n+}\n+\n+/* UART transmit-only interrupt handler for ring buffers */\n+void Chip_UART_TXIntHandlerRB(LPC_USART_T *pUART, RINGBUFF_T *pRB)\n+{\n+   uint8_t ch;\n+\n+   /* Fill FIFO until full or until TX ring buffer is empty */\n+   while ((Chip_UART_ReadLineStatus(pUART) & UART_LSR_THRE) != 0 &&\n+          RingBuffer_Pop(pRB, &ch)) {\n+       Chip_UART_SendByte(pUART, ch);\n+   }\n+\n+   /* Turn off interrupt if the ring buffer is empty */\n+   if (RingBuffer_IsEmpty(pRB)) {\n+       /* Shut down transmit */\n+       Chip_UART_IntDisable(pUART, UART_IER_THREINT);\n+   }\n+}\n+\n+/* Populate a transmit ring buffer and start UART transmit */\n+uint32_t Chip_UART_SendRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, const void *data, int bytes)\n+{\n+   uint32_t ret;\n+   uint8_t *p8 = (uint8_t *) data;\n+\n+   /* Don't let UART transmit ring buffer change in the UART IRQ handler */\n+   Chip_UART_IntDisable(pUART, UART_IER_THREINT);\n+\n+   /* Move as much data as possible into transmit ring buffer */\n+   ret = RingBuffer_InsertMult(pRB, p8, bytes);\n+   Chip_UART_TXIntHandlerRB(pUART, pRB);\n+\n+   /* Add additional data to transmit ring buffer if possible */\n+   ret += RingBuffer_InsertMult(pRB, (p8 + ret), (bytes - ret));\n+\n+   /* Enable UART transmit interrupt */\n+   Chip_UART_IntEnable(pUART, UART_IER_THREINT);\n+\n+   return ret;\n+}\n+\n+/* Copy data from a receive ring buffer */\n+int Chip_UART_ReadRB(LPC_USART_T *pUART, RINGBUFF_T *pRB, void *data, int bytes)\n+{\n+   (void) pUART;\n+\n+   return RingBuffer_PopMult(pRB, (uint8_t *) data, bytes);\n+}\n+\n+/* UART receive/transmit interrupt handler for ring buffers */\n+void Chip_UART_IRQRBHandler(LPC_USART_T *pUART, RINGBUFF_T *pRXRB, RINGBUFF_T *pTXRB)\n+{\n+   /* Handle transmit interrupt if enabled */\n+   if (pUART->IER & UART_IER_THREINT) {\n+       Chip_UART_TXIntHandlerRB(pUART, pTXRB);\n+\n+       /* Disable transmit interrupt if the ring buffer is empty */\n+       if (RingBuffer_IsEmpty(pTXRB)) {\n+           Chip_UART_IntDisable(pUART, UART_IER_THREINT);\n+       }\n+   }\n+\n+   /* Handle receive interrupt */\n+   Chip_UART_RXIntHandlerRB(pUART, pRXRB);\n+\n+    /* Handle Autobaud interrupts */\n+    Chip_UART_ABIntHandler(pUART);\n+}\n+\n+/* Determines and sets best dividers to get a target baud rate */\n+uint32_t Chip_UART_SetBaudFDR(LPC_USART_T *pUART, uint32_t baud)\n+{\n+   uint32_t sdiv = 0, sm = 1, sd = 0;\n+   uint32_t pclk, m, d;\n+   uint32_t odiff = -1UL; /* old best diff */\n+\n+   /* Get base clock for the corresponding UART */\n+   pclk = Chip_Clock_GetRate(UART_BClock[Chip_UART_GetIndex(pUART)]);\n+\n+   /* Loop through all possible fractional divider values */\n+   for (m = 1; odiff && m < 16; m++) {\n+       for (d = 0; d < m; d++) {\n+           uint32_t diff, div;\n+           uint64_t dval = (((uint64_t) pclk << 28) * m) / (baud * (m + d));\n+\n+           /* Lower 32-bit of dval has diff */\n+           diff = (uint32_t) dval;\n+           /* Upper 32-bit of dval has div */\n+           div = (uint32_t) (dval >> 32);\n+\n+           /* Closer to next div */\n+           if ((int)diff < 0) {\n+               diff = -diff;\n+               div ++;\n+           }\n+\n+           /* Check if new value is worse than old or out of range */\n+           if (odiff < diff || !div || (div >> 16) || (div < 3 && d)) {\n+               continue;\n+           }\n+\n+           /* Store the new better values */\n+           sdiv = div;\n+           sd = d;\n+           sm = m;\n+           odiff = diff;\n+\n+           /* On perfect match, break loop */\n+           if(!diff) {\n+               break;\n+           }\n+       }\n+   }\n+\n+   /* Return 0 if a vaild divisor is not possible */\n+   if (!sdiv) {\n+       return 0;\n+   }\n+\n+   /* Update UART registers */\n+   Chip_UART_EnableDivisorAccess(pUART);\n+   Chip_UART_SetDivisorLatches(pUART, UART_LOAD_DLL(sdiv), UART_LOAD_DLM(sdiv));\n+   Chip_UART_DisableDivisorAccess(pUART);\n+\n+   /* Set best fractional divider */\n+   pUART->FDR = (UART_FDR_MULVAL(sm) | UART_FDR_DIVADDVAL(sd));\n+\n+   /* Return actual baud rate */\n+   return (pclk >> 4) * sm / (sdiv * (sm + sd));\n+}\n+\n+/* UART interrupt service routine */\n+FlagStatus Chip_UART_GetABEOStatus(LPC_USART_T *pUART)\n+{\n+   (void) pUART;\n+   return ABsyncSts;\n+}\n+\n+/* Start/Stop Auto Baudrate activity */\n+void Chip_UART_ABCmd(LPC_USART_T *pUART, uint32_t mode, bool autorestart, FunctionalState NewState)\n+{\n+    uint32_t tmp = 0;\n+\n+   if (NewState == ENABLE) {\n+       /* Clear DLL and DLM value */\n+       pUART->LCR |= UART_LCR_DLAB_EN;\n+       pUART->DLL = 0;\n+       pUART->DLM = 0;\n+       pUART->LCR &= ~UART_LCR_DLAB_EN;\n+\n+       /* FDR value must be reset to default value */\n+       pUART->FDR = 0x10;\n+\n+       if (mode == UART_ACR_MODE1) {\n+           tmp = UART_ACR_START | UART_ACR_MODE;\n+       }\n+       else {\n+           tmp = UART_ACR_START;\n+       }\n+\n+       if (autorestart == true) {\n+           tmp |= UART_ACR_AUTO_RESTART;\n+       }\n+       pUART->ACR = tmp;\n+   }\n+   else {\n+       pUART->ACR = 0;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/src/wwdt_18xx_43xx.c ./lpc_chip_43xx/src/wwdt_18xx_43xx.c\n--- a_OkB2vL/lpc_chip_43xx/src/wwdt_18xx_43xx.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/src/wwdt_18xx_43xx.c\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,78 @@\n+/*\n+ * @brief LPC18xx/43xx WWDT driver\n+ *\n+ * @note\n+ * Copyright(C) NXP Semiconductors, 2012\n+ * All rights reserved.\n+ *\n+ * @par\n+ * Software that is described herein is for illustrative purposes only\n+ * which provides customers with programming information regarding the\n+ * LPC products.  This software is supplied \"AS IS\" without any warranties of\n+ * any kind, and NXP Semiconductors and its licensor disclaim any and\n+ * all warranties, express or implied, including all implied warranties of\n+ * merchantability, fitness for a particular purpose and non-infringement of\n+ * intellectual property rights.  NXP Semiconductors assumes no responsibility\n+ * or liability for the use of the software, conveys no license or rights under any\n+ * patent, copyright, mask work right, or any other intellectual property rights in\n+ * or to any products. NXP Semiconductors reserves the right to make changes\n+ * in the software without notification. NXP Semiconductors also makes no\n+ * representation or warranty that such application will be suitable for the\n+ * specified use without further testing or modification.\n+ *\n+ * @par\n+ * Permission to use, copy, modify, and distribute this software and its\n+ * documentation is hereby granted, under NXP Semiconductors' and its\n+ * licensor's relevant copyrights in the software, without fee, provided that it\n+ * is used in conjunction with NXP Semiconductors microcontrollers.  This\n+ * copyright, permission, and disclaimer notice must appear in all copies of\n+ * this code.\n+ */\n+\n+#include \"chip.h\"\n+\n+/*****************************************************************************\n+ * Private types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public types/enumerations/variables\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Private functions\n+ ****************************************************************************/\n+\n+/*****************************************************************************\n+ * Public functions\n+ ****************************************************************************/\n+\n+/* Initialize the Watchdog timer */\n+void Chip_WWDT_Init(LPC_WWDT_T *pWWDT)\n+{\n+   /* Disable watchdog */\n+   pWWDT->MOD       = 0;\n+   pWWDT->TC        = 0xFF;\n+#if defined(WATCHDOG_WINDOW_SUPPORT)\n+   pWWDT->WARNINT   = 0xFFFF;\n+   pWWDT->WINDOW    = 0xFFFFFF;\n+#endif\n+}\n+\n+/* Shutdown the Watchdog timer */\n+void Chip_WWDT_DeInit(LPC_WWDT_T *pWWDT)\n+{\n+}\n+\n+/* Clear WWDT interrupt status flags */\n+void Chip_WWDT_ClearStatusFlag(LPC_WWDT_T *pWWDT, uint32_t status)\n+{\n+   if (status & WWDT_WDMOD_WDTOF) {\n+       pWWDT->MOD &= (~WWDT_WDMOD_WDTOF) & WWDT_WDMOD_BITMASK;\n+   }\n+\n+   if (status & WWDT_WDMOD_WDINT) {\n+       pWWDT->MOD |= WWDT_WDMOD_WDINT;\n+   }\n+}\n+\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/lpc_chip_43xx/version.txt ./lpc_chip_43xx/version.txt\n--- a_OkB2vL/lpc_chip_43xx/version.txt\t1969-12-31 21:00:00.000000000 -0300\n+++ ./lpc_chip_43xx/version.txt\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,3 @@\n+LPCOPEN VERSION: 2_16\n+RELEASE DATE:\n+Fri 02/20/2015\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/Makefile ./Makefile\n--- a_OkB2vL/Makefile\t1969-12-31 21:00:00.000000000 -0300\n+++ ./Makefile\t2017-02-27 21:03:17.056043464 -0300\n@@ -0,0 +1,85 @@\n+include config.mk\n+\n+SRC=$(foreach m, $(MODULES), $(wildcard $(m)/src/*.c))\n+INCLUDES=$(foreach m, $(MODULES), -I$(m)/inc)\n+_DEFINES=$(foreach m, $(DEFINES), -D$(m))\n+OBJECTS=$(SRC:.c=.o)\n+DEPS=$(SRC:.c=.d)\n+LDSCRIPT=ciaa_lpc4337.ld\n+\n+ARCH_FLAGS=-mcpu=cortex-m4 -mthumb\n+\n+TARGET=$(APP).elf\n+TARGET_BIN=$(basename $(TARGET)).bin\n+TARGET_LST=$(basename $(TARGET)).lst\n+TARGET_MAP=$(basename $(TARGET)).map\n+\n+ifeq ($(USE_FPU),y)\n+ARCH_FLAGS+=-mfloat-abi=hard -mfpu=fpv4-sp-d16\n+endif\n+\n+CFLAGS=$(ARCH_FLAGS) $(INCLUDES) $(_DEFINES) -ggdb3 -O$(OPT) -ffunction-sections -fdata-sections\n+LDFLAGS=$(ARCH_FLAGS) -T$(LDSCRIPT) -nostartfiles -Wl,-gc-sections -Wl,-Map=$(TARGET_MAP) -Wl,--cref\n+\n+ifeq ($(USE_NANO),y)\n+LDFLAGS+=--specs=nano.specs\n+endif\n+\n+ifeq ($(SEMIHOST),y)\n+LDFLAGS+=--specs=rdimon.specs\n+endif\n+\n+CROSS=arm-none-eabi-\n+CC=$(CROSS)gcc\n+LD=$(CROSS)gcc\n+SIZE=$(CROSS)size\n+LIST=$(CROSS)objdump -xdS\n+OBJCOPY=$(CROSS)objcopy\n+GDB=$(CROSS)gdb\n+OOCD=openocd\n+\n+OOCD_SCRIPT?=ciaa-nxp.cfg\n+\n+ifeq ($(VERBOSE),y)\n+Q=\n+else\n+Q=@\n+endif\n+\n+all: $(TARGET) $(TARGET_BIN) $(TARGET_LST) size\n+\n+-include $(DEPS)\n+\n+%.o: %.c\n+\t@echo CC $<\n+\t$(Q)$(CC) -MMD $(CFLAGS) -c -o $@ $<\n+\n+$(TARGET): $(OBJECTS)\n+\t@echo LD $@\n+\t$(Q)$(LD) $(LDFLAGS) -o $@ $(OBJECTS)\n+\n+$(TARGET_BIN): $(TARGET)\n+\t@echo BIN\n+\t$(Q)$(OBJCOPY) -v -O binary $< $@\n+\n+$(TARGET_LST): $(TARGET)\n+\t@echo LIST\n+\t$(Q)$(LIST) $< > $@\n+\n+size: $(TARGET)\n+\t$(Q)$(SIZE) $<\n+\n+program: $(TARGET_BIN)\n+\t@echo PROG\n+\t$(Q)$(OOCD) -f $(OOCD_SCRIPT) \\\n+\t\t-c \"init\" \\\n+\t\t-c \"halt 0\" \\\n+\t\t-c \"flash write_image erase unlock $< 0x1A000000 bin\" \\\n+\t\t-c \"reset run\" \\\n+\t\t-c \"shutdown\" 2>&1\n+\n+clean:\n+\t@echo CLEAN\n+\t$(Q)rm -fR $(OBJECTS) $(TARGET) $(TARGET_BIN) $(TARGET_LST) $(DEPS)\n+\n+.PHONY: all size clean program\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_7_segment_display.h ./sapi/inc/sapi_7_segment_display.h\n--- a_OkB2vL/sapi/inc/sapi_7_segment_display.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_7_segment_display.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,87 @@\n+/* Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+#ifndef _SAPI_7_SEGMENT_DISPLAY_H_\n+#define _SAPI_7_SEGMENT_DISPLAY_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[macros]=================================================*/\n+\n+#define DISPLAY_OFF 25\n+\n+/*==================[typedef]================================================*/\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+/* Test 7-segment display connected pins */\n+/*\n+----------------+------------+-----------+------------\n+ Segment ON     | BIN Value  | HEX Value | Output pin\n+----------------+------------+-----------+------------\n+ Segment 'a' ON | 0b00000001 |   0x20    | ..... (to be complete)\n+ Segment 'b' ON | 0b00000010 |   0x80    | .....\n+ Segment 'c' ON | 0b00000100 |   0x40    | .....\n+ Segment 'd' ON | 0b00001000 |   0x02    | .....\n+ Segment 'e' ON | 0b00010000 |   0x04    | .....\n+ Segment 'f' ON | 0b00100000 |   0x10    | .....\n+ Segment 'g' ON | 0b01000000 |   0x08    | .....\n+ Segment 'h' ON | 0b10000000 |   0x80    | .....\n+----------------+------------+-----------+------------\n+\n+                a\n+              -----\n+          f /     / b\n+\t   /  g  /\n+\t   -----\n+       e /     / c\n+\t/  d  /\n+\t-----    O h = dp (decimal pint).\n+\n+*/\n+void display7SegmentTestPins( gpioMap_t* display7SegmentPins, gpioMap_t pin );\n+\n+/* Configure 7-segment display GPIOs as Outputs */\n+void display7SegmentPinConfig( gpioMap_t* display7SegmentPins );\n+\n+/* Write a symbol on 7-segment display */\n+void display7SegmentWrite( gpioMap_t* display7SegmentPins, uint8_t symbolIndex );\n+\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_7_SEGMENT_DISPLAY_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_adc.h ./sapi/inc/sapi_adc.h\n--- a_OkB2vL/sapi/inc/sapi_adc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_adc.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,74 @@\n+/* Copyright 2016, Ian Olivieri\n+ * Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2016-02-20 */\n+\n+#ifndef SAPI_ADC_H_\n+#define SAPI_ADC_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+typedef enum{\n+   ADC_ENABLE, ADC_DISABLE\n+} adcConfig_t;\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+void adcConfig( adcConfig_t config );\n+\n+uint16_t adcRead( adcMap_t analogInput );\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef SAPI_ADC_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_board.h ./sapi/inc/sapi_board.h\n--- a_OkB2vL/sapi/inc/sapi_board.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_board.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,66 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+#ifndef _SAPI_BOARD_H_\n+#define _SAPI_BOARD_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+void boardConfig(void);\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_BOARD_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_dac.h ./sapi/inc/sapi_dac.h\n--- a_OkB2vL/sapi/inc/sapi_dac.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_dac.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,74 @@\n+/* Copyright 2016, Ian Olivieri\n+ * Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2016-02-20 */\n+\n+#ifndef SAPI_DAC_H_\n+#define SAPI_DAC_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+typedef enum{\n+   DAC_ENABLE, DAC_DISABLE\n+} dacConfig_t;\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+void dacConfig( dacConfig_t config );\n+\n+void dacWrite( dacMap_t analogOutput, uint16_t value );\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_DAC_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_datatypes.h ./sapi/inc/sapi_datatypes.h\n--- a_OkB2vL/sapi/inc/sapi_datatypes.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_datatypes.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,116 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+#ifndef _SAPI_DATATYPES_H_\n+#define _SAPI_DATATYPES_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"stdint.h\"\n+#include \"chip.h\"\n+#include \"board.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+/* Functional states */\n+#ifndef ON\n+   #define ON     1\n+#endif\n+#ifndef OFF\n+   #define OFF    0\n+#endif\n+\n+/* Electrical states */\n+#ifndef HIGH\n+   #define HIGH   1\n+#endif\n+#ifndef LOW\n+   #define LOW    0\n+#endif\n+\n+/* Logical states */\n+\n+#ifndef FALSE\n+   #define FALSE  0\n+#endif\n+#ifndef TRUE\n+   #define TRUE   (!FALSE)\n+#endif\n+\n+/*==================[typedef]================================================*/\n+\n+/* Define Boolean Data Type */\n+typedef uint8_t bool_t;\n+\n+/* Define real Data Types (floating point) */\n+//typedef real32_t float;\n+//typedef real64_t double;\n+\n+/* Define Tick Data Type */\n+typedef uint64_t tick_t;\n+\n+/*\n+ * Function Pointer definition\n+ * --------------------------------------\n+ * param:  void * - For passing arguments\n+ * return: bool_t - For Error Reports\n+ */\n+typedef bool_t (*sAPI_FuncPtr_t)(void *);\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+/*\n+ * Null Function Pointer definition\n+ * --------------------------------------\n+ * param:  void * - Not used\n+ * return: bool_t - Return always true\n+ */\n+bool_t sAPI_NullFuncPtr(void *);\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_DATATYPES_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_delay.h ./sapi/inc/sapi_delay.h\n--- a_OkB2vL/sapi/inc/sapi_delay.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_delay.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,86 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+#ifndef _SAPI_DELAY_H_\n+#define _SAPI_DELAY_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/* Define the number of cycles for 1ms */\n+#define INACCURATE_TO_MS       20400\n+#define INACCURATE_TO_US_x10   204\n+\n+/*==================[typedef]================================================*/\n+\n+typedef struct{\n+   tick_t startTime;\n+   tick_t duration;\n+   bool_t running;\n+} delay_t;\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+/* ---- Inaccurate Delay ---- */\n+void delayInaccurate( tick_t delay );\n+void delayInaccurateUs(tick_t delay_us);\n+\n+/* ---- Blocking Delay ---- */\n+void delay ( tick_t delay );\n+\n+/* ---- Non Blocking Delay ---- */\n+void delayConfig( delay_t * delay, tick_t duration );\n+bool_t delayRead( delay_t * delay );\n+void delayWrite( delay_t * delay, tick_t duration );\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_DELAY_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_gpio.h ./sapi/inc/sapi_gpio.h\n--- a_OkB2vL/sapi/inc/sapi_gpio.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_gpio.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,101 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+#ifndef _SAPI_GPIO_H_\n+#define _SAPI_GPIO_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+/* Pin modes */\n+/*\n+ *  INPUT  =  0    (No PULLUP or PULLDOWN)\n+ *  OUTPUT =  1\n+ *  INPUT_PULLUP\n+ *  INPUT_PULLDOWN\n+ *  INPUT_REPEATER (PULLUP and PULLDOWN)\n+ *  INITIALIZE\n+ */\n+typedef enum{\n+   GPIO_INPUT, GPIO_OUTPUT,\n+   GPIO_INPUT_PULLUP, GPIO_INPUT_PULLDOWN,\n+   GPIO_INPUT_PULLUP_PULLDOWN,\n+   GPIO_ENABLE\n+} gpioConfig_t;\n+\n+\n+/* ----- Begin Pin Config Structs NXP LPC4337 ----- */\n+\n+typedef struct{\n+   int8_t port;\n+   int8_t pin;\n+} gpioConfigLpc4337_t;\n+\n+typedef struct{\n+    pinConfigLpc4337_t pinName;\n+                int8_t func;\n+   gpioConfigLpc4337_t gpio;\n+} pinConfigGpioLpc4337_t;\n+\n+/* ------ End Pin Config Structs NXP LPC4337 ------ */\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+bool_t gpioConfig( gpioMap_t pin, gpioConfig_t config );\n+bool_t gpioRead( gpioMap_t pin );\n+bool_t gpioWrite( gpioMap_t pin, bool_t value );\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_GPIO_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi.h ./sapi/inc/sapi.h\n--- a_OkB2vL/sapi/inc/sapi.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,86 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+#ifndef _SAPI_H_\n+#define _SAPI_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+//#include \"sapi_isr_vector.h\"\n+\n+#include \"sapi_board.h\"\n+#include \"sapi_tick.h\"\n+#include \"sapi_gpio.h\"\n+#include \"sapi_uart.h\"\n+#include \"sapi_adc.h\"\n+#include \"sapi_dac.h\"\n+#include \"sapi_i2c.h\"\n+#include \"sapi_rtc.h\"\n+#include \"sapi_sleep.h\"\n+\n+#include \"sapi_delay.h\"             // Use Tick module\n+\n+#include \"sapi_7_segment_display.h\" // Use GPIO and Delay modules\n+#include \"sapi_keypad.h\"            // Use GPIO and Delay modules\n+#include \"sapi_pwm.h\"               // Use SCT and GPIO modules\n+#include \"sapi_servo.h\"             // Use Timer and GPIO modules\n+#include \"sapi_hmc5883l.h\"          // Use I2C module\n+\n+/* External Peripherals */\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_hmc5883l.h ./sapi/inc/sapi_hmc5883l.h\n--- a_OkB2vL/sapi/inc/sapi_hmc5883l.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_hmc5883l.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,154 @@\n+/* Copyright 2016, Alejandro Permingeat\n+ * Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-06-27 */\n+\n+#ifndef _SAPI_HMC5883L_H_\n+#define _SAPI_HMC5883L_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+#define HMC5883L_ADD              0x1E\n+\n+#define HMC5883L_REG_CONFIG_A     0x00\n+#define HMC5883L_REG_CONFIG_B     0x01\n+\n+#define HMC5883L_REG_MODE         0x02\n+\n+#define HMC5883L_REG_X_MSB        0x03\n+#define HMC5883L_REG_X_LSB        0x04\n+\n+#define HMC5883L_REG_Z_MSB        0x05\n+#define HMC5883L_REG_Z_LSB        0x06\n+\n+#define HMC5883L_REG_Y_MSB        0x07\n+#define HMC5883L_REG_Y_LSB        0x08\n+\n+#define HMC5883L_REG_STATUS       0x09\n+\n+#define HMC5883L_REG_ID_REG_A     0x0A\n+#define HMC5883L_REG_ID_REG_B     0x0B\n+#define HMC5883L_REG_ID_REG_C     0x0C\n+\n+#define HMC5883L_VALUE_ID_REG_A   0x48\n+#define HMC5883L_VALUE_ID_REG_B   0x34\n+#define HMC5883L_VALUE_ID_REG_C   0x33\n+\n+/*==================[typedef]================================================*/\n+\n+typedef enum {\n+   HMC5883L_1_sample = 0,\n+   HMC5883L_2_sample = 1,\n+   HMC5883L_4_sample = 2,\n+   HMC5883L_8_sample = 3,\n+   HMC5883L_DEFAULT_sample = HMC5883L_1_sample\n+} HMC5883L_samples_t;\n+\n+typedef enum {\n+   HMC5883L_0_75_Hz = 0,\n+   HMC5883L_1_50_Hz = 1,\n+   HMC5883L_3_Hz    = 2,\n+   HMC5883L_7_50_Hz = 3,\n+   HMC5883L_15_Hz   = 4,\n+   HMC5883L_30_Hz   = 5,\n+   HMC5883L_75_Hz   = 6,\n+   HMC5883L_DEFAULT_rate = HMC5883L_15_Hz\n+} HMC5883L_rate_t;\n+\n+typedef enum {\n+   HMC5883L_normal   = 0,\n+   HMC5883L_positive = 1,\n+   HMC5883L_regative = 2,\n+   HMC5883L_DEFAULT_messurement = HMC5883L_normal\n+} HMC5883L_messurement_t;\n+\n+typedef enum {\n+   HMC5883L_1370 = 0, /* ± 0.88 Ga */\n+   HMC5883L_1090 = 1, /* ± 1.3 Ga  */\n+   HMC5883L_820  = 2, /* ± 1.9 Ga  */\n+   HMC5883L_660  = 3, /* ± 2.5 Ga  */\n+   HMC5883L_440  = 4, /* ± 4.0 Ga  */\n+   HMC5883L_390  = 5, /* ± 4.7 Ga  */\n+   HMC5883L_330  = 6, /* ± 5.6 Ga  */\n+   HMC5883L_230  = 7, /* ± 8.1 Ga  */\n+   HMC5883L_DEFAULT_gain = HMC5883L_1090\n+} HMC5883L_gain_t;\n+\n+typedef enum {\n+   HMC5883L_continuous_measurement = 0,\n+   HMC5883L_single_measurement = 1,\n+   HMC5883L_idle = 2,\n+   HMC5883L_DEFAULT_mode = HMC5883L_single_measurement\n+} HMC5883L_mode_t;\n+\n+typedef struct{\n+   HMC5883L_samples_t samples; /*number of samples averaged (1 to 8) per measurement output.*/\n+   HMC5883L_rate_t    rate;    /* Data Output Rate Bits. These bits set the rate at which data\n+                                * is written to all three data output registers.*/\n+   HMC5883L_messurement_t meassurement; /*Measurement Configuration Bits. These bits define the\n+                                         * measurement flow of the device, specifically whether or not\n+                                         * to incorporate an applied bias into the measurement.*/\n+   HMC5883L_gain_t gain; /* Gain Configuration Bits. These bits configure the gain for\n+                          * the device. The gain configuration is common for all\n+                          * channels.*/\n+   HMC5883L_mode_t mode;\n+} HMC5883L_config_t;\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+bool_t hmc5883lIsAlive(void);\n+bool_t hmc5883lPrepareDefaultConfig( HMC5883L_config_t * config );\n+bool_t hmc5883lConfig( HMC5883L_config_t config );\n+bool_t hmc5883lRead( int16_t * x, int16_t * y, int16_t * z );\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_HMC5883L_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_i2c.h ./sapi/inc/sapi_i2c.h\n--- a_OkB2vL/sapi/inc/sapi_i2c.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_i2c.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,133 @@\n+/* Copyright 2016, Eric Pernia\n+ * Copyright 2016, Alejandro Permingeat.\n+ * Copyright 2016, Eric Pernia\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+ /*\n+  * Date:\n+  * 2016-05-02 Eric Pernia - Only define API\n+  * 2016-06-23 Alejandro Permingeat - First functional version\n+  * 2016-08-07 Eric Pernia - Improve names\n+  * 2016-09-10 Eric Pernia - Add unlimited buffer transfer\n+  * 2016-11-20 Eric Pernia - Software I2C\n+  */\n+\n+#ifndef _SAPI_I2C_H_\n+#define _SAPI_I2C_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+#define I2C_SOFTWARE_SDA_DIR   GPIO7\n+#define I2C_SOFTWARE_SDA_IN    GPIO7\n+#define I2C_SOFTWARE_SDA_OUT   GPIO7\n+\n+#define I2C_SOFTWARE_SCL_DIR   GPIO8\n+#define I2C_SOFTWARE_SCL_IN    GPIO8\n+#define I2C_SOFTWARE_SCL_OUT   GPIO8\n+\n+#define I2C_SOFTWARE           0\n+#define SOFTWARE_I2C_DEBUG     0\n+\n+/*==================[typedef]================================================*/\n+\n+#if( I2C_SOFTWARE == 1 )\n+typedef enum{\n+   I2C_SOFTWARE_WRITE = 0,\n+   I2C_SOFTWARE_READ  = 1\n+} I2C_Software_rw_t;\n+\n+typedef enum{\n+   I2C_SOFTWARE_NACK = 0,\n+   I2C_SOFTWARE_ACK  = 1\n+} I2C_Software_ack_t;\n+#endif\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+bool_t i2cConfig( i2cMap_t i2cNumber, uint32_t clockRateHz );\n+\n+bool_t i2cRead( i2cMap_t  i2cNumber,\n+                uint8_t  i2cSlaveAddress,\n+                uint8_t* dataToReadBuffer,\n+                uint16_t dataToReadBufferSize,\n+                bool_t   sendWriteStop,\n+                uint8_t* receiveDataBuffer,\n+                uint16_t receiveDataBufferSize,\n+                bool_t   sendReadStop );\n+\n+bool_t i2cWrite( i2cMap_t  i2cNumber,\n+                 uint8_t  i2cSlaveAddress,\n+                 uint8_t* transmitDataBuffer,\n+                 uint16_t transmitDataBufferSize,\n+                 bool_t   sendWriteStop );\n+\n+\n+// Software Master I2C\n+\n+#if( SOFTWARE_I2C_DEBUG == 1 )\n+   void i2cSoftwareMasterPinTestConfig( void );\n+   void i2cSoftwareMasterPinTest( void );\n+#endif\n+\n+#if( I2C_SOFTWARE == 1 )\n+   void i2cSoftwareDelay( tick_t duration );\n+\n+   void i2cSoftwareMasterWriteStart( void );\n+\n+   void i2cSoftwareMasterWriteStop( void );\n+\n+   bool_t i2cSoftwareMasterWriteAddress( uint8_t i2cSlaveAddress,\n+                                         I2C_Software_rw_t readOrWrite );\n+\n+   bool_t i2cSoftwareMasterWriteByte( uint8_t dataByte );\n+\n+   uint8_t i2cSoftwareMasterReadByte( bool_t ack );\n+#endif\n+\n+/*==================[ISR external functions declaration]=====================*/\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_I2C_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_keypad.h ./sapi/inc/sapi_keypad.h\n--- a_OkB2vL/sapi/inc/sapi_keypad.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_keypad.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,67 @@\n+/* Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+#ifndef _SAPI_KEYPAD_H_\n+#define _SAPI_KEYPAD_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+typedef struct{\n+   gpioMap_t* keypadRowPins;\n+   uint8_t keypadRowSize;\n+   gpioMap_t* keypadColPins;\n+   uint8_t keypadColSize;\n+} keypad_t;\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+/* Configure keypad pins */\n+bool_t keypadConfig( keypad_t* keypad,\n+                     gpioMap_t* keypadRowPins, uint8_t keypadRowSize,\n+                     gpioMap_t* keypadColPins, uint8_t keypadColSize );\n+\n+/* Return TRUE if any key is pressed or FALSE (0) in other cases.\n+ * If exist key pressed write pressed key on key variable */\n+bool_t keypadRead( keypad_t* keypad, uint16_t* key );\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_KEYPAD_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_peripheral_map.h ./sapi/inc/sapi_peripheral_map.h\n--- a_OkB2vL/sapi/inc/sapi_peripheral_map.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_peripheral_map.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,170 @@\n+/* Copyright 2015, Eric Pernia.\n+ * Copyright 2016, Ian Olivieri.\n+ * Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+#ifndef _SAPI_PERIPHERALMAP_H_\n+#define _SAPI_PERIPHERALMAP_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+/* ----- Begin Pin Config Structs NXP LPC4337 ----- */\n+\n+typedef struct{\n+   int8_t port;\n+   int8_t pin;\n+} pinConfigLpc4337_t;\n+\n+/* ------ End Pin Config Structs NXP LPC4337 ------ */\n+\n+\n+/* ------- Begin EDU-CIAA-NXP Peripheral Map ------ */\n+\n+/* Defined for sapi_gpio.h */\n+typedef enum{\n+   /* EDU-CIAA-NXP */\n+\n+   // P1 header\n+   T_FIL1,    T_COL2,    T_COL0,    T_FIL2,      T_FIL3,  T_FIL0,     T_COL1,\n+   CAN_TD,    CAN_RD,    RS232_TXD, RS232_RXD,\n+\n+   // P2 header\n+   GPIO8,     GPIO7,     GPIO5,     GPIO3,       GPIO1,\n+   LCD1,      LCD2,      LCD3,      LCDRS,       LCD4,\n+   SPI_MISO,\n+   ENET_TXD1, ENET_TXD0, ENET_MDIO, ENET_CRS_DV, ENET_MDC, ENET_TXEN, ENET_RXD1,\n+   GPIO6,     GPIO4,     GPIO2,     GPIO0,\n+   LCDEN,\n+   SPI_MOSI,\n+   ENET_RXD0,\n+\n+   // Switches\n+   // 36     37     38     39\n+   TEC1,  TEC2,  TEC3,  TEC4,\n+\n+   // Leds\n+   // 40     41     42     43     44     45\n+   LED1,  LED2,  LED3,  LEDR,  LEDG,  LEDB,\n+\n+   /* CIAA-NXP */\n+ /* 46     47     48     49     50     51     52     53 */\n+   DI0,   DI1,   DI2,   DI3,   DI4,   DI5,   DI6,   DI7,\n+ /* 54     55     56     57     58     59     60     61 */\n+   DO0,   DO1,   DO2,   DO3,   DO4,   DO5,   DO6,   DO7\n+} gpioMap_t;\n+\n+/* Defined for sapi_adc.h */\n+typedef enum{\n+/* 62         63       64        65       */\n+   AI3 = 62, AI2 = 63, AI1 = 64, AI0 = 65,\n+             CH3 = 63, CH2 = 64, CH1 = 65\n+/*  46        47   48  49 */\n+// AI2 = 46, AI1, AI0, AO\n+} adcMap_t;\n+\n+/* Defined for sapi_dac.h */\n+typedef enum{\n+/* 66 */\n+   AO = 66,\n+   DAC = 66\n+} dacMap_t;\n+\n+/* Defined for sapi_uart.h */\n+typedef enum{\n+   UART_USB, UART_232, UART_485\n+} uartMap_t;\n+\n+/*Defined for sapi_timer.h*/\n+//NOTE: if servo is enable (servoConfig used) the only available timer to use is TIMER0\n+typedef enum{\n+   TIMER0, TIMER1, TIMER2, TIMER3\n+} timerMap_t;\n+typedef enum{\n+   TIMERCOMPAREMATCH0, TIMERCOMPAREMATCH1, TIMERCOMPAREMATCH2, TIMERCOMPAREMATCH3\n+} timerCompareMatch_t;\n+\n+/*Defined for sapi_sct.h*/\n+// NOTE: CTOUT11 has no SCT mode associated, so it can't be used!\n+// NOTE: if pwm is enable (pwmConfig used) there will be no sct channels available\n+typedef enum{\n+   CTOUT0, CTOUT1, CTOUT2, CTOUT3, CTOUT4, CTOUT5, CTOUT6, CTOUT7, CTOUT8,\n+   CTOUT9, CTOUT10, CTOUT11, CTOUT12, CTOUT13\n+} sctMap_t;\n+\n+/*Defined for sapi_pwm.h*/\n+typedef enum{\n+   PWM0, PWM1, PWM2, PWM3, PWM4, PWM5, PWM6, PWM7, PWM8, PWM9, PWM10\n+} pwmMap_t;\n+\n+/*Defined for sapi_servo.h*/\n+typedef enum{\n+   SERVO0, SERVO1, SERVO2, SERVO3, SERVO4, SERVO5, SERVO6, SERVO7, SERVO8\n+} servoMap_t;\n+\n+/*Defined for sapi_i2c.h*/\n+/* Comment because already defined in \"i2c_18xx_43xx.h\"*/\n+/*\n+typedef enum{\n+   I2C0 // TODO: Add support for I2C1\n+} i2cMap_t;\n+*/\n+typedef uint8_t i2cMap_t;\n+\n+/* ------- End EDU-CIAA-NXP Peripheral Map -------- */\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_PERIPHERALMAP_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_pwm.h ./sapi/inc/sapi_pwm.h\n--- a_OkB2vL/sapi/inc/sapi_pwm.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_pwm.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,102 @@\n+/* Copyright 2016, Ian Olivieri\r\n+ * Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-02-10 */\r\n+\r\n+#ifndef PWM_DRIVER_H_\r\n+#define PWM_DRIVER_H_\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_datatypes.h\"\r\n+#include \"sapi_peripheral_map.h\"\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+extern \"C\" {\r\n+#endif\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[typedef]================================================*/\r\n+\r\n+typedef enum{\r\n+   PWM_ENABLE, PWM_DISABLE,\r\n+   PWM_ENABLE_OUTPUT, PWM_DISABLE_OUTPUT\r\n+} pwmConfig_t;\r\n+\r\n+/*==================[external data declaration]==============================*/\r\n+\r\n+/*==================[external functions declaration]=========================*/\r\n+\r\n+/*\r\n+ * @Brief: Initializes the pwm peripheral.\r\n+ * @param  uint8_t pwmNumber\r\n+ * @param  uint8_t config\r\n+ * @return bool_t true (1) if config it is ok\r\n+ */\r\n+bool_t pwmConfig( pwmMap_t pwmNumber, pwmConfig_t config);\r\n+\r\n+/*\r\n+ * @brief:   Tells if the pwm is currently active, and its position\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @return:   position (1 ~ PWM_TOTALNUMBER), 0 if the element was not found.\r\n+ */\r\n+uint8_t pwmIsAttached( pwmMap_t pwmNumber );\r\n+\r\n+/*\r\n+ * @brief:   read the value of the pwm in the pin\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @return:   value of the pwm in the pin (0 ~ 255).\r\n+ *   If an error ocurred, return = EMPTY_POSITION = 255\r\n+ */\r\n+uint8_t pwmRead( pwmMap_t pwmNumber );\r\n+\r\n+/*\r\n+ * @brief:   change the value of the pwm at the selected pin\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @param:   value:   8bit value, from 0 to 255\r\n+ * @return:   True if the value was successfully changed, False if not.\r\n+ */\r\n+bool_t pwmWrite( pwmMap_t pwmNumber, uint8_t percent );\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+}\r\n+#endif\r\n+\r\n+/*==================[end of file]============================================*/\r\n+#endif /* PWM_DRIVER_H_ */\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_rtc.h ./sapi/inc/sapi_rtc.h\n--- a_OkB2vL/sapi/inc/sapi_rtc.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_rtc.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,97 @@\n+/* Copyright 2011, ChaN.\r\n+ * Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-03-07 */\r\n+\r\n+#ifndef _SAPI_RTC_H_\r\n+#define _SAPI_RTC_H_\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_datatypes.h\"\r\n+#include \"sapi_peripheral_map.h\"\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+extern \"C\" {\r\n+#endif\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[typedef]================================================*/\r\n+\r\n+typedef struct {\r\n+   uint16_t year;\t /* 1 to 4095 */\r\n+   uint8_t  month; /* 1 to 12   */\r\n+   uint8_t  mday;\t /* 1 to 31   */\r\n+   uint8_t  wday;\t /* 1 to 7    */\r\n+   uint8_t  hour;\t /* 0 to 23   */\r\n+   uint8_t  min;\t /* 0 to 59   */\r\n+   uint8_t  sec;\t /* 0 to 59   */\r\n+} rtc_t;\r\n+\r\n+/*==================[external data declaration]==============================*/\r\n+\r\n+/*==================[external functions declaration]=========================*/\r\n+\r\n+/*\r\n+ * @Brief: Configure RTC peripheral.\r\n+ * @param  rtc_t rtc: RTC structure\r\n+ * @return bool_t true (1) if config it is ok\r\n+ */\r\n+bool_t rtcConfig( rtc_t * rtc );\r\n+\r\n+/*\r\n+ * @Brief: Get time from RTC peripheral.\r\n+ * @param  rtc_t rtc: RTC structure\r\n+ * @return bool_t true (1) if config it is ok\r\n+ */\r\n+bool_t rtcRead( rtc_t * rtc );\r\n+\r\n+/*\r\n+ * @Brief: Set time on RTC peripheral.\r\n+ * @param  RTC_t rtc: RTC structure\r\n+ * @return bool_t true (1) if config it is ok\r\n+ */\r\n+bool_t rtcWrite( rtc_t * rtc );\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+}\r\n+#endif\r\n+\r\n+/*==================[end of file]============================================*/\r\n+#endif /* _SAPI_RTC_H_ */\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_sct.h ./sapi/inc/sapi_sct.h\n--- a_OkB2vL/sapi/inc/sapi_sct.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_sct.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,108 @@\n+/* Copyright 2016, Ian Olivieri\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-02-10 */\r\n+\r\n+#ifndef SAPI_SCT_H_\r\n+#define SAPI_SCT_H_\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_datatypes.h\"\r\n+#include \"sapi_peripheral_map.h\"\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+extern \"C\" {\r\n+#endif\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[typedef]================================================*/\r\n+\r\n+/*  SCT names are defined in sAPI_PeripheralMap.h:\r\n+ * NOTE: CTOUT11 has no SCT mode associated, so it can't be used!\r\n+\r\n+typedef enum{\r\n+   CTOUT0, CTOUT1, CTOUT2, CTOUT3, CTOUT4, CTOUT5, CTOUT6, CTOUT7, CTOUT8,\r\n+   CTOUT9, CTOUT10, CTOUT11, CTOUT12, CTOUT13\r\n+} SctMap_t;\r\n+*/\r\n+\r\n+/*==================[external data declaration]==============================*/\r\n+\r\n+/*==================[external functions declaration]=========================*/\r\n+/*\r\n+ * @brief:   Initialize the SCT peripheral with the given frequency\r\n+ * @param:   frequency:   value in Hz\r\n+ * @note:   there can only be 1 frequency in all the SCT peripheral.\r\n+ */\r\n+void Sct_Init(uint32_t frequency);\r\n+\r\n+/*\r\n+ * @brief\tEnables pwm function for the given pin\r\n+ * @param\tsctNumber:   pin where the pwm signal will be generated\r\n+ */\r\n+void Sct_EnablePwmFor(uint8_t sctNumber);\r\n+\r\n+/*\r\n+ * @brief   Converts a value in microseconds (uS = 1x10^-6 sec) to ticks\r\n+ * @param   value:   8bit value, from 0 to 255\r\n+ * @return   Equivalent in Ticks for the LPC4337\r\n+ */\r\n+uint32_t Sct_Uint8ToTicks(uint8_t value);\r\n+\r\n+/*\r\n+ * @brief:   Sets the pwm duty cycle\r\n+ * @param:\tsctNumber:   pin where the pwm signal is generated\r\n+ * @param\tvalue:   8bit value, from 0 to 255\r\n+ * @note   For the 'ticks' parameter, see function Sct_Uint8ToTicks\r\n+ */\r\n+void Sct_SetDutyCycle(uint8_t sctNumber, uint8_t value);\r\n+\r\n+/*\r\n+ * @brief:   Gets the pwm duty cycle\r\n+ * @param:\tsctNumber:   pin where the pwm signal is generated\r\n+ * @return:   duty cycle of the channel, from 0 to 255\r\n+ */\r\n+uint8_t Sct_GetDutyCycle(uint8_t sctNumber);\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+}\r\n+#endif\r\n+\r\n+/*==================[end of file]============================================*/\r\n+#endif /* SAPI_SCT_H_ */\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_servo.h ./sapi/inc/sapi_servo.h\n--- a_OkB2vL/sapi/inc/sapi_servo.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_servo.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,105 @@\n+/* Copyright 2016, Ian Olivieri\r\n+ * Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-02-10 */\r\n+\r\n+#ifndef SAPI_SERVO_H_\r\n+#define SAPI_SERVO_H_\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_datatypes.h\"\r\n+#include \"sapi_peripheral_map.h\"\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+extern \"C\" {\r\n+#endif\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[typedef]================================================*/\r\n+\r\n+typedef enum{\r\n+   SERVO_ENABLE, SERVO_DISABLE,\r\n+   SERVO_ENABLE_OUTPUT, SERVO_DISABLE_OUTPUT\r\n+} servoConfig_t;\r\n+\r\n+/*==================[external data declaration]==============================*/\r\n+\r\n+/*==================[external functions declaration]=========================*/\r\n+\r\n+/*\r\n+ * @Brief: Initializes the servo peripheral\r\n+ * @param  uint8_t servoNumber\r\n+ * @param  uint8_t config\r\n+ * @return bool_t true (1) if config it is ok\r\n+ * @IMPORTANT:   this function uses Timer 1, 2 and 3 to generate the servo signals, so\r\n+ *   they won't be available to use.\r\n+ */\r\n+bool_t servoConfig( servoMap_t servoNumber, servoConfig_t config );\r\n+\r\n+/*\r\n+ * @brief:   Tells if the servo is currently active, and its position\r\n+ * @param:   servoNumber:   ID of the servo, from 0 to 8\r\n+ * @param:   value:   value of the servo, from 0 to 180\r\n+ * @return:   position (1 ~ SERVO_TOTALNUMBER), 0 if the element was not found.\r\n+ */\r\n+uint8_t servoIsAttached( servoMap_t servoNumber);\r\n+\r\n+/*\r\n+ * @brief: read the value of the servo\r\n+ * @param:   servoNumber:   ID of the servo, from 0 to 8\r\n+ * @return: value of the servo (0 ~ 180).\r\n+ *   If an error ocurred, return = EMPTY_POSITION = 255\r\n+ */\r\n+uint16_t servoRead( servoMap_t servoNumber);\r\n+\r\n+/*\r\n+ * @brief: change the value of the servo\r\n+ * @param:   servoNumber:   ID of the servo, from 0 to 8\r\n+ * @param:   value:   value of the servo, from 0 to 180\r\n+ * @return: True if the value was successfully changed, False if not.\r\n+ */\r\n+bool_t servoWrite( servoMap_t servoNumber, uint16_t angle );\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+}\r\n+#endif\r\n+\r\n+/*==================[end of file]============================================*/\r\n+#endif /* SAPI_SERVO_H_ */\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_sleep.h ./sapi/inc/sapi_sleep.h\n--- a_OkB2vL/sapi/inc/sapi_sleep.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_sleep.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,72 @@\n+/* Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-08-15 */\r\n+\r\n+#ifndef SAPI_SCT_H_\r\n+#define SAPI_SCT_H_\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_datatypes.h\"\r\n+#include \"sapi_peripheral_map.h\"\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+extern \"C\" {\r\n+#endif\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[typedef]================================================*/\r\n+\r\n+/*==================[external data declaration]==============================*/\r\n+\r\n+/*==================[external functions declaration]=========================*/\r\n+\r\n+/*\r\n+ * @Brief: Sleep mode, sleep until next interrupt occur.\r\n+ * @param  nothing\r\n+ * @return nothing\r\n+ */\r\n+void sleepUntilNextInterrupt( void );\r\n+\r\n+/*==================[cplusplus]==============================================*/\r\n+\r\n+#ifdef __cplusplus\r\n+}\r\n+#endif\r\n+\r\n+/*==================[end of file]============================================*/\r\n+#endif /* SAPI_SCT_H_ */\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_spi.h ./sapi/inc/sapi_spi.h\n--- a_OkB2vL/sapi/inc/sapi_spi.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_spi.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,67 @@\n+/* Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part of CIAA Firmware.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2016-05-02 */\n+\n+#ifndef _SAPI_SPI_H_\n+#define _SAPI_SPI_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[ISR external functions definition]======================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_SPI_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_tick.h ./sapi/inc/sapi_tick.h\n--- a_OkB2vL/sapi/inc/sapi_tick.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_tick.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,77 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+#ifndef _SAPI_TICK_H_\n+#define _SAPI_TICK_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[ISR external functions definition]======================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+bool_t tickConfig( tick_t tickRateMS, sAPI_FuncPtr_t tickHook );\n+\n+tick_t tickRead( void );\n+\n+void tickWrite( tick_t ticks );\n+\n+/*==================[ISR external functions declaration]======================*/\n+\n+/* SysTick Timer ISR Handler */\n+void SysTick_Handler(void);\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* #ifndef _SAPI_TICK_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_timer.h ./sapi/inc/sapi_timer.h\n--- a_OkB2vL/sapi/inc/sapi_timer.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_timer.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,128 @@\n+/* Copyright 2016, Ian Olivieri\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2016-02-10 */\r\n+\r\n+#ifndef SAPI_TIMER_H_\n+#define SAPI_TIMER_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[typedef]================================================*/\n+typedef void (*voidFunctionPointer_t)(void);\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+/*\n+ * @Brief   Initialize Timer peripheral\n+ * @param   timerNumber:   Timer number, 0 to 3\n+ * @param   ticks:   Number of ticks required to finish the cycle.\n+ * @param   voidFunctionPointer:   function to be executed at the end of the timer cycle\n+ * @return   nothing\n+ * @note   For the 'ticks' parameter, see function Timer_microsecondsToTicks\n+ */\n+void Timer_Init(uint8_t timerNumber , uint32_t ticks, voidFunctionPointer_t voidFunctionPointer);\n+\n+/*\n+ * @Brief   Disables timer peripheral\n+ * @param   timerNumber:   Timer number, 0 to 3\n+ * @return   nothing\n+ */\n+void Timer_DeInit(uint8_t timerNumber);\n+\n+/*\n+ * @Brief   Converts a value in microseconds (uS = 1x10^-6 sec) to ticks\n+ * @param   uS:   Value in microseconds\n+ * @return   Equivalent in Ticks for the LPC4337\n+ * @note   Can be used for the second parameter in the Timer_init\n+ */\n+uint32_t Timer_microsecondsToTicks(uint32_t uS);\n+\n+/*\n+ * @Brief   Enables a compare match in a timer\n+ * @param   timerNumber:   Timer number, 0 to 3\n+ * @param   compareMatchNumber:   Compare match number, 1 to 3\n+ * @param   ticks:   Number of ticks required to reach the compare match.\n+ * @param   voidFunctionPointer: function to be executed when the compare match is reached\n+ * @return   None\n+ * @note   For the 'ticks' parameter, see function Timer_microsecondsToTicks\n+ */\n+void Timer_EnableCompareMatch(uint8_t timerNumber, uint8_t compareMatchNumber , uint32_t ticks, voidFunctionPointer_t voidFunctionPointer);\n+\n+/*\n+ * @brief   Disables a compare match of a timer\n+ * @param   timerNumber:   Timer number, 0 to 3\n+ * @param   compareMatchNumber:   Compare match number, 1 to 3\n+ * @return   None\n+ */\n+void Timer_DisableCompareMatch(uint8_t timerNumber, uint8_t compareMatchNumber);\n+\n+/*\n+ * @Purpose:   Allows the user to change the compare value n? 'compareMatchNumber' of timer 'timerNumber'.\n+ *    This is specially useful to generate square waves if used in the function for the TIMERCOMPAREMATCH0 (because\n+ *    that compare match resets the timer counter), which will be passed as a parameter when initializing a timer\n+ * @note:  The selected time (3rd parameter) must be less than TIMERCOMPAREMATCH0's compareMatchTime_uS\n+ *   for the compare match to make the interruption\n+ */\n+void Timer_SetCompareMatch(uint8_t timerNumber, uint8_t compareMatchNumber,uint32_t ticks);\n+\n+/*==================[ISR external functions declaration]=====================*/\n+/*\n+ * @Brief:   Executes the functions passed by parameter in the Timer_init,\n+ *   at the chosen frequencies\n+ */\n+void TIMER0_IRQHandler(void);\n+void TIMER1_IRQHandler(void);\n+void TIMER2_IRQHandler(void);\n+void TIMER3_IRQHandler(void);\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* SAPI_TIMER_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/inc/sapi_uart.h ./sapi/inc/sapi_uart.h\n--- a_OkB2vL/sapi/inc/sapi_uart.h\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/inc/sapi_uart.h\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,104 @@\n+/* Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2016-02-26 */\n+\n+#ifndef _SAPI_UART_H_\n+#define _SAPI_UART_H_\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_delay.h\"\n+#include \"sapi_datatypes.h\"\n+#include \"sapi_peripheral_map.h\"\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+extern \"C\" {\n+#endif\n+\n+/*==================[macros]=================================================*/\n+\n+/*==================[typedef]================================================*/\n+\n+typedef enum{\n+   UART_RECEIVE_STRING_CONFIG,\n+   UART_RECEIVE_STRING_RECEIVING,\n+   UART_RECEIVE_STRING_RECEIVED_OK,\n+   UART_RECEIVE_STRING_TIMEOUT\n+} waitForReceiveStringOrTimeoutState_t;\n+\n+typedef struct{\n+   waitForReceiveStringOrTimeoutState_t state;\n+   char*    string;\n+   uint16_t stringSize;\n+   uint16_t stringIndex;\n+   tick_t   timeout;\n+   delay_t  delay;\n+} waitForReceiveStringOrTimeout_t;\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+waitForReceiveStringOrTimeoutState_t waitForReceiveStringOrTimeout(\n+   uartMap_t uart, waitForReceiveStringOrTimeout_t* instance );\n+\n+bool_t waitForReceiveStringOrTimeoutBlocking(\n+   uartMap_t uart, char* string, uint16_t stringSize, tick_t timeout );\n+\n+void uartConfig( uartMap_t uart, uint32_t baudRate );\n+\n+bool_t uartReadByte( uartMap_t uart, uint8_t* receivedByte );\n+void uartWriteByte( uartMap_t uart, uint8_t byte );\n+\n+void uartWriteString( uartMap_t uart, char* str );\n+\n+/*==================[ISR external functions declaration]======================*/\n+\n+/* 0x28 0x000000A0 - Handler for ISR UART0 (IRQ 24) */\n+void UART0_IRQHandler(void);\n+/* 0x2a 0x000000A8 - Handler for ISR UART2 (IRQ 26) */\n+void UART2_IRQHandler(void);\n+/* 0x2b 0x000000AC - Handler for ISR UART3 (IRQ 27) */\n+void UART3_IRQHandler(void);\n+\n+/*==================[cplusplus]==============================================*/\n+\n+#ifdef __cplusplus\n+}\n+#endif\n+\n+/*==================[end of file]============================================*/\n+#endif /* _SAPI_UART_H_ */\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/LICENSE ./sapi/LICENSE\n--- a_OkB2vL/sapi/LICENSE\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/LICENSE\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,27 @@\n+Copyright (c) 2016, Eric Pernia\n+All rights reserved.\n+\n+Redistribution and use in source and binary forms, with or without\n+modification, are permitted provided that the following conditions are met:\n+\n+* Redistributions of source code must retain the above copyright notice, this\n+  list of conditions and the following disclaimer.\n+\n+* Redistributions in binary form must reproduce the above copyright notice,\n+  this list of conditions and the following disclaimer in the documentation\n+  and/or other materials provided with the distribution.\n+\n+* Neither the name of sAPI nor the names of its\n+  contributors may be used to endorse or promote products derived from\n+  this software without specific prior written permission.\n+\n+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\n+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\n+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\n+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/README.md ./sapi/README.md\n--- a_OkB2vL/sapi/README.md\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/README.md\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,54 @@\n+# sAPI library for microcontrollers\n+\n+This library implements a simple API that acts as a HAL (Hardware Abstraction\n+Layer) for microcontrollers.\n+\n+It takes ideas from *Wiring library*, but use the concept of *peripheral* instead\n+the concept of *pin*, making the API regardless of the number of pins that use\n+certain peripheral.\n+\n+## Documentation\n+\n+**NOTE:** Always use the [released versions](../../releases) because these are tested all examples and the API documentation is consistent. The master branch may contain inconsistencies because this library is currently under development.\n+\n+### Included modules\n+\n+**Internal Peripherals**\n+\n+- Data types.\n+- Peripheral Map.\n+- ISR Vector.\n+- Board.\n+- Tick.\n+- GPIO.\n+- UART.\n+- ADC.\n+- DAC.\n+- I2C.\n+- RTC.\n+- Sleep.\n+- PWM.\n+\n+**Delays**\n+\n+- Delay.\n+\n+**External Peripherals**\n+\n+- 7-segment display.\n+- Keypad.\n+- Angular Servo (0 to 180°).\n+- Magnetometer (compass) sensor HMC5883L.\n+\n+Every module includes an example.\n+\n+### Software layers\n+\n+![ \"sapi-modulos-capas.png\" image not found](docs/assets/img/sapi-modulos-capas.png \"Modules an layers of sAPI library\")\n+\n+### Boards\n+\n+Now available for boards:\n+\n+- EDU-CIAA-NXP (NXP LPC4337 microcontroller). [Download documentation.](docs/assets/pdf/EDU-CIAA-NXP_sAPI_bm_A4_v1r0_ES.pdf)\n+- CIAA-NXP (NXP LPC4337 microcontroller).\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_7_segment_display.c ./sapi/src/sapi_7_segment_display.c\n--- a_OkB2vL/sapi/src/sapi_7_segment_display.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_7_segment_display.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,200 @@\n+/* Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/*\r\n+ * Date: 2016-07-28\r\n+ */\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_7_segment_display.h\"   /* <= own header */\r\n+\r\n+#include \"sapi_delay.h\"               /* <= delay header */\r\n+#include \"sapi_gpio.h\"                /* <= GPIO header */\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+\r\n+// Symbols formed by segmens\r\n+/*\r\n+------------+------+---------\r\n+  Segmentos | HEX  | Simbolo\r\n+------------+------+---------\r\n+   hgfedcba |      |\r\n+ 0b00111111 | 0x0F |   0\r\n+ 0b00000110 | 0x00 |   1\r\n+ 0b01011011 | 0x00 |   2\r\n+ 0b01001111 | 0x00 |   3\r\n+ 0b01100110 | 0x00 |   4\r\n+ 0b01101101 | 0x00 |   5\r\n+ 0b01111101 | 0x00 |   6\r\n+ 0b00000111 | 0x00 |   7\r\n+ 0b01111111 | 0x00 |   8\r\n+ 0b01101111 | 0x00 |   9\r\n+\r\n+ 0b01011111 | 0x00 |   a\r\n+ 0b01111100 | 0x00 |   b\r\n+ 0b01011000 | 0x00 |   c\r\n+ 0b01011110 | 0x00 |   d\r\n+ 0b01111011 | 0x00 |   e\r\n+ 0b01110001 | 0x00 |   F\r\n+\r\n+ 0b01110111 | 0x00 |   A\r\n+ 0b00111001 | 0x00 |   C\r\n+ 0b01111001 | 0x00 |   E\r\n+ 0b01110110 | 0x00 |   H\r\n+ 0b00011110 | 0x00 |   J\r\n+ 0b00111000 | 0x00 |   L\r\n+ 0b01110011 | 0x00 |   P\r\n+ 0b00111110 | 0x00 |   U\r\n+\r\n+ 0b10000000 | 0x00 |   .\r\n+\r\n+             a\r\n+           -----\r\n+       f /     / b\r\n+        /  g  /\r\n+        -----\r\n+    e /     / c\r\n+     /  d  /\r\n+     -----    O h = dp\r\n+\r\n+*/\r\n+uint8_t display7SegmentOutputs[26] = {\r\n+   0b00111111, // 0\r\n+   0b00000110, // 1\r\n+   0b01011011, // 2\r\n+   0b01001111, // 3\r\n+   0b01100110, // 4\r\n+   0b01101101, // 5\r\n+   0b01111101, // 6\r\n+   0b00000111, // 7\r\n+   0b01111111, // 8\r\n+   0b01101111, // 9\r\n+\r\n+   0b01011111, // a\r\n+   0b01111100, // b\r\n+   0b01011000, // c\r\n+   0b01011110, // d\r\n+   0b01111011, // e\r\n+   0b01110001, // f\r\n+\r\n+   0b01110111, // A\r\n+   0b00111001, // C\r\n+   0b01111001, // E\r\n+   0b01110110, // H\r\n+   0b00011110, // J\r\n+   0b00111000, // L\r\n+   0b01110011, // P\r\n+   0b00111110, // U\r\n+\r\n+   0b10000000, // .\r\n+\r\n+   0b00000000  // display off\r\n+};\r\n+\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+\r\n+/* Test 7-segment display connected pins */\r\n+/*\r\n+----------------+------------+-----------+------------\r\n+ Segment ON     | BIN Value  | HEX Value | Output pin\r\n+----------------+------------+-----------+------------\r\n+ Segment 'a' ON | 0b00000001 |   0x20    | ..... (to be complete)\r\n+ Segment 'b' ON | 0b00000010 |   0x80    | .....\r\n+ Segment 'c' ON | 0b00000100 |   0x40    | .....\r\n+ Segment 'd' ON | 0b00001000 |   0x02    | .....\r\n+ Segment 'e' ON | 0b00010000 |   0x04    | .....\r\n+ Segment 'f' ON | 0b00100000 |   0x10    | .....\r\n+ Segment 'g' ON | 0b01000000 |   0x08    | .....\r\n+ Segment 'h' ON | 0b10000000 |   0x80    | .....\r\n+----------------+------------+-----------+------------\r\n+\r\n+                a\r\n+              -----\r\n+\t  f /     / b\r\n+\t   /  g  /\r\n+\t   -----\r\n+       e /     / c\r\n+\t/  d  /\r\n+\t-----    O h = dp (decimal pint).\r\n+\r\n+*/\r\n+void display7SegmentTestPins( gpioMap_t* display7SegmentPins, gpioMap_t pin ){\r\n+\r\n+   uint8_t i = 0;\r\n+\r\n+   for(i=0;i<=7;i++){\r\n+      gpioWrite( display7SegmentPins[i], ON  );\r\n+      if( i == 0 )\r\n+         gpioWrite( pin, ON );\r\n+      delay(1000);\r\n+      gpioWrite( display7SegmentPins[i], OFF );\r\n+      if( i == 0 )\r\n+         gpioWrite( pin, OFF );\r\n+   }\r\n+\r\n+}\r\n+\r\n+\r\n+/* Configure 7-segment display GPIOs as Outputs */\r\n+void display7SegmentPinConfig( gpioMap_t* display7SegmentPins ){\r\n+\r\n+   uint8_t i = 0;\r\n+\r\n+   for( i=0; i<=7; i++ )\r\n+      gpioConfig( display7SegmentPins[i], GPIO_OUTPUT );\r\n+}\r\n+\r\n+\r\n+/* Write a symbol on 7-segment display */\r\n+void display7SegmentWrite( gpioMap_t* display7SegmentPins, uint8_t symbolIndex ){\r\n+\r\n+   uint8_t i = 0;\r\n+\r\n+   for( i=0; i<=7; i++ )\r\n+      gpioWrite( display7SegmentPins[i], display7SegmentOutputs[symbolIndex] & (1<<i) );\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_adc.c ./sapi/src/sapi_adc.c\n--- a_OkB2vL/sapi/src/sapi_adc.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_adc.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,132 @@\n+/* Copyright 2016, Ian Olivieri\n+ * Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2016-02-20 */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_adc.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal data definition]===============================*/\n+\n+/*==================[external data definition]===============================*/\n+\n+/*==================[internal functions definition]==========================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+/*\n+ * @brief:  enable/disable the ADC and DAC peripheral\n+ * @param:  ADC_ENABLE, ADC_DISABLE\n+ * @return: none\n+*/\n+void adcConfig( adcConfig_t config ){\n+\n+   switch(config){\n+\n+      case ADC_ENABLE: {\n+\n+         /* Config ADC0 sample mode */\n+         /*\n+         ADC_CLOCK_SETUP_T ADCSetup = {\n+            400000,   // ADC rate\n+            10,       // ADC bit accuracy\n+            0         // ADC Burt Mode (true or false)\n+         };\n+         */\n+         ADC_CLOCK_SETUP_T ADCSetup;\n+\n+         /* Initialized to default values:\n+\t\t   *   - Sample rate:ADC_MAX_SAMPLE_RATE=400KHz\n+\t\t   *   - resolution: ADC_10BITS\n+\t\t   *   - burst mode: DISABLE */\n+         Chip_ADC_Init( LPC_ADC0, &ADCSetup );\n+         /* Disable burst mode */\n+         Chip_ADC_SetBurstCmd( LPC_ADC0, DISABLE );\n+         /* Set sample rate to 200KHz */\n+         Chip_ADC_SetSampleRate( LPC_ADC0, &ADCSetup, ADC_MAX_SAMPLE_RATE/2 );\n+         /* Disable all channels */\n+         Chip_ADC_EnableChannel( LPC_ADC0,ADC_CH1, DISABLE );\n+         Chip_ADC_Int_SetChannelCmd( LPC_ADC0, ADC_CH1, DISABLE );\n+\n+         Chip_ADC_EnableChannel( LPC_ADC0, ADC_CH2, DISABLE );\n+         Chip_ADC_Int_SetChannelCmd( LPC_ADC0, ADC_CH2, DISABLE );\n+\n+         Chip_ADC_EnableChannel( LPC_ADC0, ADC_CH3, DISABLE );\n+         Chip_ADC_Int_SetChannelCmd( LPC_ADC0, ADC_CH3, DISABLE );\n+\n+         Chip_ADC_EnableChannel( LPC_ADC0, ADC_CH4, DISABLE );\n+         Chip_ADC_Int_SetChannelCmd( LPC_ADC0, ADC_CH4, DISABLE );\n+      }\n+      break;\n+\n+      case ADC_DISABLE:\n+         /* Disable ADC peripheral */\n+         Chip_ADC_DeInit( LPC_ADC0 );\n+      break;\n+   }\n+\n+}\n+\n+\n+/*\n+ * @brief   Get the value of one ADC channel. Mode: BLOCKING\n+ * @param   AI0 ... AIn\n+ * @return  analog value\n+ */\n+uint16_t adcRead( adcMap_t analogInput ){\n+\n+   uint8_t lpcAdcChannel = 66 - analogInput;\n+   uint16_t analogValue = 0;\n+\n+   Chip_ADC_EnableChannel(LPC_ADC0, lpcAdcChannel, ENABLE);\n+   Chip_ADC_SetStartMode(LPC_ADC0, ADC_START_NOW, ADC_TRIGGERMODE_RISING);\n+\n+   while(\n+      (Chip_ADC_ReadStatus(LPC_ADC0, lpcAdcChannel, ADC_DR_DONE_STAT) != SET)\n+   );\n+   Chip_ADC_ReadValue( LPC_ADC0, lpcAdcChannel, &analogValue );\n+\n+   Chip_ADC_EnableChannel( LPC_ADC0, lpcAdcChannel, DISABLE );\n+\n+   return analogValue;\n+}\n+\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_board.c ./sapi/src/sapi_board.c\n--- a_OkB2vL/sapi/src/sapi_board.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_board.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,64 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_board.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal data definition]===============================*/\n+\n+/*==================[external data definition]===============================*/\n+\n+/*==================[internal functions definition]==========================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+/* Set up and initialize board hardware */\n+void boardConfig(void) {\n+\n+   /* Read clock settings and update SystemCoreClock variable */\n+   SystemCoreClockUpdate();\n+\n+   Board_Init(); // From Board module (modules/lpc4337_m4/board)\n+\n+}\n+\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_dac.c ./sapi/src/sapi_dac.c\n--- a_OkB2vL/sapi/src/sapi_dac.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_dac.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,100 @@\n+/* Copyright 2016, Ian Olivieri\n+ * Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2016-02-20 */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_dac.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal data definition]===============================*/\n+\n+/*==================[external data definition]===============================*/\n+\n+/*==================[internal functions definition]==========================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+/*\n+ * @brief:  enable/disable the ADC and DAC peripheral\n+ * @param:  DAC_ENABLE, DAC_DISABLE\n+ * @return: none\n+*/\n+void dacConfig( dacConfig_t config ){\n+\n+   switch(config){\n+\n+      case DAC_ENABLE:\n+         /* Initialize the DAC peripheral */\n+         Chip_DAC_Init(LPC_DAC);\n+\n+         /* Enables the DMA operation and controls DMA timer */\n+         Chip_DAC_ConfigDAConverterControl(LPC_DAC, DAC_DMA_ENA);\n+                                                 /* DCAR DMA access */\n+         /* Update value to DAC buffer*/\n+         Chip_DAC_UpdateValue(LPC_DAC, 0);\n+      break;\n+\n+      case DAC_DISABLE:\n+         /* Disable DAC peripheral */\n+         Chip_DAC_DeInit( LPC_DAC );\n+      break;\n+   }\n+\n+}\n+\n+\n+/*\n+ * @brief   Write a value in the DAC.\n+ * @param   analogOutput: AO0 ... AOn\n+ * @param   value: analog value to be writen in the DAC, from 0 to 1023\n+ * @return  none\n+ */\n+void dacWrite( dacMap_t analogOutput, uint16_t value ){\n+\n+   if( analogOutput == AO ){\n+      if( value > 1023 ){\n+         value = 1023;\n+      }\n+      Chip_DAC_UpdateValue( LPC_DAC, value );\n+   }\n+}\n+\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_datatypes.c ./sapi/src/sapi_datatypes.c\n--- a_OkB2vL/sapi/src/sapi_datatypes.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_datatypes.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,90 @@\n+/* Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+ \n+/* Date: 2016-06-05 */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_datatypes.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal data definition]===============================*/\n+\n+/*==================[external data definition]===============================*/\n+\n+/*==================[internal functions definition]==========================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+/* \n+ * Null Function Pointer definition\n+ * --------------------------------------\n+ * param:  void * - Not used\n+ * return: bool_t - Return always true\n+ */\n+bool_t sAPI_NullFuncPtr(void *ptr){\n+   return 1;\n+}\n+\n+/*==================[ISR external functions definition]======================*/\n+\n+/*\n+// FUNCTION POINTER VECTOR EXAMPLE\n+\n+// Función para no tener NULL pointer\n+   void dummy(void){\n+   }\n+ \n+// Definición de un tipo con typedef.\n+   typedef void (*voidFunctionPointer_t)(void);\n+ \n+// Definición de una variable con el tipo de typedef, incializo en dummy (NULL)\n+   voidFunctionPointer_t voidFunctionPointer[2] = {dummy, dummy};\n+\n+// Ejecuto la funcion\n+   (* voidFunctionPointer[0] )();\n+   (* voidFunctionPointer[1] )();\n+      \n+// Asigno una funcion a cada posición del vector\n+   voidFunctionPointer[0] = ledB;\n+   voidFunctionPointer[1] = led1;\n+*/      \n+\n+\n+/** @} doxygen end group definition */\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_delay.c ./sapi/src/sapi_delay.c\n--- a_OkB2vL/sapi/src/sapi_delay.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_delay.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,116 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_delay.h\"\n+#include \"sapi_tick.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal data definition]===============================*/\n+\n+/*==================[external data definition]===============================*/\n+\n+extern volatile tick_t tickRateMS;\n+\n+/*==================[internal functions definition]==========================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+/* ---- Inaccurate Blocking Delay ---- */\n+\n+void delayInaccurate(tick_t delay_ms) {\n+   volatile tick_t i;\n+   volatile tick_t delay;\n+\n+   delay = INACCURATE_TO_MS * delay_ms;\n+\n+   for( i=delay; i>0; i-- );\n+}\n+\n+void delayInaccurateUs(tick_t delay_us) {\n+   volatile tick_t i;\n+   volatile tick_t delay;\n+\n+   delay = (INACCURATE_TO_US_x10 * delay_us) / 10;\n+\n+   for( i=delay; i>0; i-- );\n+}\n+\n+/* ---- Blocking Delay ---- */\n+\n+// delay( 1, DELAY_US );\n+\n+void delay (tick_t time){\n+    tick_t curTicks = tickRead();\n+    while ( (tickRead() - curTicks) < time/tickRateMS );\n+ }\n+\n+\n+/* ---- Non Blocking Delay ---- */\n+\n+void delayConfig( delay_t * delay, tick_t duration ){\n+   delay->duration = duration/tickRateMS;\n+   delay->running = 0;\n+}\n+\n+bool_t delayRead( delay_t * delay ){\n+\n+   bool_t timeArrived = 0;\n+\n+   if( !delay->running ){\n+      delay->startTime = tickRead();\n+      delay->running = 1;\n+   }\n+   else{\n+      if ( (tickRead() - delay->startTime) >= delay->duration ){\n+         timeArrived = 1;\n+         delay->running = 0;\n+      }\n+   }\n+\n+   return timeArrived;\n+}\n+\n+void delayWrite( delay_t * delay, tick_t duration ){\n+   delay->duration = duration/tickRateMS;\n+}\n+\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_gpio.c ./sapi/src/sapi_gpio.c\n--- a_OkB2vL/sapi/src/sapi_gpio.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_gpio.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,331 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part of CIAA Firmware.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_gpio.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal data definition]===============================*/\n+\n+const pinConfigGpioLpc4337_t gpioPinsConfig[] = {\n+\n+\t/*{ {PinNamePortN ,PinNamePinN}, PinFUNC, {GpioPortN, GpioPinN} }*/\n+\n+   /* --------------------------------------------------------------- */\n+\t/*                           EDU-CIAA-NXP                          */\n+   /* --------------------------------------------------------------- */\n+   /*                             Snap  sAPI   Connector  Serigraphy  */\n+   /* --------------------------------------------------------------- */\n+\n+   // { {1,15}, FUNC0, {0, 2} },   /*  0   DIO0    CON2_09   ENET_RXD0   */\n+\n+   // { {1, 4}, FUNC0, {0,11} },   /*  1   DIO1    CON2_21   SPI_MOSI    */\n+   // { {4, 9}, FUNC4, {5,13} },   /*  2   DIO2    CON2_23   LCD_EN      */\n+\n+   // { {6, 1}, FUNC0, {3, 0} },   /*  3   DIO3    CON2_29   GPIO0       */\n+   // { {6, 5}, FUNC0, {3, 4} },   /*  4   DIO4    CON2_31   GPIO2       */\n+   // { {6, 8}, FUNC4, {5,16} },   /*  5   DIO5    CON2_33   GPIO4       */\n+   // { {6,10}, FUNC0, {3, 6} },   /*  6   DIO6    CON2_35   GPIO6       */\n+\n+   // { {0, 0}, FUNC0, {0, 0} },   /*  7   DIO7    CON2_04   ENET_RXD1   */\n+   // { {0, 1}, FUNC0, {0, 1} },   /*  8   DIO8    CON2_06   ENET_TXEN   */\n+   // { {7, 7}, FUNC0, {3,15} },   /*  9   DIO9    CON2_08   ENET_MDC    */\n+   // { {1,16}, FUNC0, {0, 3} },   /* 10   DIO10   CON2_10   ENET_CRS_DV */\n+   // { {1,17}, FUNC0, {0,12} },   /* 11   DIO11   CON2_12   ENET_MDIO   */\n+   // { {1,18}, FUNC0, {0,13} },   /* 12   DIO12   CON2_14   ENET_TXD0   */\n+   // { {1,20}, FUNC0, {0,15} },   /* 13   DIO13   CON2_16   ENET_TXD1   */\n+   // { {1, 3}, FUNC0, {0,10} },   /* 14   DIO14   CON2_18   SPI_MISO    */\n+\n+   // { {4,10}, FUNC4, {5,14} },   /* 15   DIO15   CON2_22   LCD4        */\n+   // { {4, 8}, FUNC4, {5,12} },   /* 16   DIO16   CON2_24   LCDRS       */\n+   // { {4, 6}, FUNC0, {2, 6} },   /* 17   DIO17   CON2_26   LCD3        */\n+   // { {4, 5}, FUNC0, {2, 5} },   /* 18   DIO18   CON2_28   LCD2        */\n+   // { {4, 4}, FUNC0, {2, 4} },   /* 19   DIO19   CON2_30   LCD1        */\n+\n+   // { {6, 4}, FUNC0, {3, 3} },   /* 20   DIO20   CON2_32   GPIO1       */\n+   // { {6, 7}, FUNC4, {5,15} },   /* 21   DIO21   CON2_34   GPIO3       */\n+   // { {6, 9}, FUNC0, {3, 5} },   /* 22   DIO22   CON2_36   GPIO5       */\n+   // { {6,11}, FUNC0, {3, 7} },   /* 23   DIO23   CON2_38   GPIO7       */\n+   // { {6,12}, FUNC0, {2, 8} },   /* 24   DIO24   CON2_40   GPIO8       */\n+\n+   // { {2, 4}, FUNC4, {5, 4} },   /* 25   DIO25   CON1_23   RS232_RXD   */\n+   // { {2, 3}, FUNC4, {5, 3} },   /* 26   DIO26   CON1_25   RS232_TXD   */\n+   // { {3, 1}, FUNC4, {5, 8} },   /* 27   DIO27   CON1_27   CAN_RD      */\n+   // { {3, 2}, FUNC4, {5, 9} },   /* 28   DIO28   CON1_29   CAN_TD      */\n+   // { {7, 4}, FUNC0, {3,12} },   /* 29   DIO29   CON1_31   T_COL1      */\n+   // { {4, 0}, FUNC0, {2, 0} },   /* 30   DIO30   CON1_33   T_FIL0      */\n+   // { {4, 3}, FUNC0, {2, 3} },   /* 31   DIO31   CON1_35   T_FIL3      */\n+   // { {4, 2}, FUNC0, {2, 2} },   /* 32   DIO32   CON1_37   T_FIL2      */\n+   // { {1, 5}, FUNC0, {1, 8} },   /* 33   DIO33   CON1_39   T_COL0      */\n+\n+   // { {7, 5}, FUNC0, {3,13} },   /* 34   DIO34   CON1_34   T_COL2      */\n+   // { {4, 1}, FUNC0, {2, 1} },   /* 35   DIO35   CON1_36   T_FIL1      */\n+\n+\n+   { {4, 1}, FUNC0, {2, 1} },   /*   0   CON1_36   T_FIL1           */\n+   { {7, 5}, FUNC0, {3,13} },   /*   1   CON1_34   T_COL2           */\n+\n+   { {1, 5}, FUNC0, {1, 8} },   /*   2   CON1_39   T_COL0           */\n+   { {4, 2}, FUNC0, {2, 2} },   /*   3   CON1_37   T_FIL2           */\n+   { {4, 3}, FUNC0, {2, 3} },   /*   4   CON1_35   T_FIL3           */\n+   { {4, 0}, FUNC0, {2, 0} },   /*   5   CON1_33   T_FIL0           */\n+   { {7, 4}, FUNC0, {3,12} },   /*   6   CON1_31   T_COL1           */\n+\n+   { {3, 2}, FUNC4, {5, 9} },   /*   7   CON1_29   CAN_TD           */\n+   { {3, 1}, FUNC4, {5, 8} },   /*   8   CON1_27   CAN_RD           */\n+\n+   { {2, 3}, FUNC4, {5, 3} },   /*   9   CON1_25   RS232_TXD        */\n+   { {2, 4}, FUNC4, {5, 4} },   /*  10   CON1_23   RS232_RXD        */\n+\n+   { {6,12}, FUNC0, {2, 8} },   /*  11   CON2_40   GPIO8            */\n+   { {6,11}, FUNC0, {3, 7} },   /*  12   CON2_38   GPIO7            */\n+   { {6, 9}, FUNC0, {3, 5} },   /*  13   CON2_36   GPIO5            */\n+   { {6, 7}, FUNC4, {5,15} },   /*  14   CON2_34   GPIO3            */\n+   { {6, 4}, FUNC0, {3, 3} },   /*  15   CON2_32   GPIO1            */\n+\n+   { {4, 4}, FUNC0, {2, 4} },   /*  16   CON2_30   LCD1             */\n+   { {4, 5}, FUNC0, {2, 5} },   /*  17   CON2_28   LCD2             */\n+   { {4, 6}, FUNC0, {2, 6} },   /*  18   CON2_26   LCD3             */\n+   { {4, 8}, FUNC4, {5,12} },   /*  19   CON2_24   LCDRS            */\n+   { {4,10}, FUNC4, {5,14} },   /*  20   CON2_22   LCD4             */\n+\n+   { {1, 3}, FUNC0, {0,10} },   /*  21   CON2_18   SPI_MISO         */\n+\n+   { {1,20}, FUNC0, {0,15} },   /*  22   CON2_16   ENET_TXD1        */\n+   { {1,18}, FUNC0, {0,13} },   /*  23   CON2_14   ENET_TXD0        */\n+   { {1,17}, FUNC0, {0,12} },   /*  24   CON2_12   ENET_MDIO        */\n+   { {1,16}, FUNC0, {0, 3} },   /*  25   CON2_10   ENET_CRS_DV      */\n+   { {7, 7}, FUNC0, {3,15} },   /*  26   CON2_08   ENET_MDC         */\n+   { {0, 1}, FUNC0, {0, 1} },   /*  27   CON2_06   ENET_TXEN        */\n+   { {0, 0}, FUNC0, {0, 0} },   /*  28   CON2_04   ENET_RXD1        */\n+\n+   { {6,10}, FUNC0, {3, 6} },   /*  29   CON2_35   GPIO6            */\n+   { {6, 8}, FUNC4, {5,16} },   /*  30   CON2_33   GPIO4            */\n+   { {6, 5}, FUNC0, {3, 4} },   /*  31   CON2_31   GPIO2            */\n+   { {6, 1}, FUNC0, {3, 0} },   /*  32   CON2_29   GPIO0            */\n+\n+   { {4, 9}, FUNC4, {5,13} },   /*  33   CON2_23   LCDEN            */\n+\n+   { {1, 4}, FUNC0, {0,11} },   /*  34   CON2_21   SPI_MOSI         */\n+\n+   { {1,15}, FUNC0, {0, 2} },   /*  35   CON2_09   ENET_RXD0        */\n+\n+\n+   { {1, 0}, FUNC0, {0, 4} },   /* 36   TEC1    TEC_1                 */\n+   { {1, 1}, FUNC0, {0, 8} },   /* 37   TEC2    TEC_2                 */\n+   { {1, 2}, FUNC0, {0, 9} },   /* 38   TEC3    TEC_3                 */\n+   { {1, 6}, FUNC0, {1, 9} },   /* 39   TEC4    TEC_4                 */\n+\n+   { {2,10}, FUNC0, {0,14} },   /* 40   LED1    LED1                  */\n+   { {2,11}, FUNC0, {1,11} },   /* 41   LED2    LED2                  */\n+   { {2,12}, FUNC0, {1,12} },   /* 42   LED3    LED3                  */\n+   { {2, 0}, FUNC4, {5, 0} },   /* 43   LEDR    LED0_R                */\n+   { {2, 1}, FUNC4, {5, 1} },   /* 44   LEDG    LED0_G                */\n+   { {2, 2}, FUNC4, {5, 2} },   /* 45   LEDB    LED0_B                */\n+\n+\n+   /* --------------------------------------------------------------- */\n+\t/*                             CIAA-NXP                            */\n+   /* --------------------------------------------------------------- */\n+   /*                             Snap  sAPI   Connector  Serigraphy  */\n+   /* --------------------------------------------------------------- */\n+\n+   { {4, 0}, FUNC0, {2, 0} },   /* 46   DI0     BORN_24   DIN0        */\n+   { {4, 1}, FUNC0, {2, 1} },   /* 47   DI1     BORN_25   DIN1        */\n+   { {4, 2}, FUNC0, {2, 2} },   /* 48   DI2     BORN_26   DIN2        */\n+   { {4, 3}, FUNC0, {2, 3} },   /* 49   DI3     BORN_27   DIN3        */\n+   { {7, 3}, FUNC0, {3,11} },   /* 50   DI4     BORN_28   DIN4        */\n+   { {7, 4}, FUNC0, {3,12} },   /* 51   DI5     BORN_29   DIN5        */\n+   { {7, 5}, FUNC0, {3,13} },   /* 52   DI6     BORN_30   DIN6        */\n+   { {7, 6}, FUNC0, {3,14} },   /* 53   DI7     BORN_31   DIN7        */\n+\n+   { {2, 1}, FUNC4, {5, 1} },   /* 54   DO0     BORN_14   DOUT0       */\n+   { {4, 6}, FUNC0, {2, 6} },   /* 55   DO1     BORN_06   DOUT1       */\n+   { {4, 5}, FUNC0, {2, 5} },   /* 56   DO2     BORN_08   DOUT2       */\n+   { {4, 4}, FUNC0, {2, 4} },   /* 57   DO3     BORN_10   DOUT3       */\n+   { {4, 8}, FUNC4, {5,12} },   /* 58   DO4     BORN_14   DOUT4       */\n+   { {4, 9}, FUNC4, {5,13} },   /* 59   DO5     BORN_15   DOUT5       */\n+   { {4,10}, FUNC4, {5,14} },   /* 60   DO6     BORN_16   DOUT6       */\n+   { {1, 5}, FUNC0, {1, 8} }    /* 61   DO7     BORN_17   DOUT7       */\n+};\n+\n+/*==================[external data definition]===============================*/\n+\n+/*==================[internal functions definition]==========================*/\n+\n+static void gpioObtainPinConfig( gpioMap_t pin,\n+                                int8_t *pinNamePort, int8_t *pinNamePin,\n+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tint8_t *func, int8_t *gpioPort,\n+\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tint8_t *gpioPin ){\n+\n+   *pinNamePort = gpioPinsConfig[pin].pinName.port;\n+   *pinNamePin  = gpioPinsConfig[pin].pinName.pin;\n+   *func        = gpioPinsConfig[pin].func;\n+   *gpioPort    = gpioPinsConfig[pin].gpio.port;\n+   *gpioPin     = gpioPinsConfig[pin].gpio.pin;\n+}\n+\n+/*==================[external functions definition]==========================*/\n+\n+bool_t gpioConfig( gpioMap_t pin, gpioConfig_t config ){\n+\n+   bool_t ret_val     = 1;\n+\n+   int8_t pinNamePort = 0;\n+   int8_t pinNamePin  = 0;\n+\n+   int8_t func        = 0;\n+\n+   int8_t gpioPort    = 0;\n+   int8_t gpioPin     = 0;\n+\n+   gpioObtainPinConfig( pin, &pinNamePort, &pinNamePin, &func,\n+                           &gpioPort, &gpioPin );\n+\n+   switch(config){\n+\n+      case GPIO_ENABLE:\n+\t\t   /* Initializes GPIO */\n+\t\t   Chip_GPIO_Init(LPC_GPIO_PORT);\n+\t   break;\n+\n+      case GPIO_INPUT:\n+         Chip_SCU_PinMux(\n+            pinNamePort,\n+            pinNamePin,\n+            SCU_MODE_INACT | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS,\n+            func\n+         );\n+         Chip_GPIO_SetDir( LPC_GPIO_PORT, gpioPort, ( 1 << gpioPin ), GPIO_INPUT );\n+      break;\n+\n+      case GPIO_INPUT_PULLUP:\n+         Chip_SCU_PinMux(\n+            pinNamePort,\n+            pinNamePin,\n+            SCU_MODE_PULLUP | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS,\n+            func\n+         );\n+         Chip_GPIO_SetDir( LPC_GPIO_PORT, gpioPort, ( 1 << gpioPin ), GPIO_INPUT );\n+      break;\n+\n+      case GPIO_INPUT_PULLDOWN:\n+         Chip_SCU_PinMux(\n+            pinNamePort,\n+            pinNamePin,\n+            SCU_MODE_PULLDOWN | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS,\n+            func\n+         );\n+         Chip_GPIO_SetDir( LPC_GPIO_PORT, gpioPort, ( 1 << gpioPin ), GPIO_INPUT );\n+      break;\n+      case GPIO_INPUT_PULLUP_PULLDOWN:\n+         Chip_SCU_PinMux(\n+            pinNamePort,\n+            pinNamePin,\n+            SCU_MODE_REPEATER | SCU_MODE_INBUFF_EN | SCU_MODE_ZIF_DIS,\n+            func\n+         );\n+         Chip_GPIO_SetDir( LPC_GPIO_PORT, gpioPort, ( 1 << gpioPin ), GPIO_INPUT );\n+      break;\n+\n+      case GPIO_OUTPUT:\n+         Chip_SCU_PinMux(\n+            pinNamePort,\n+            pinNamePin,\n+            SCU_MODE_INACT | SCU_MODE_ZIF_DIS,\n+            func\n+         );\n+         Chip_GPIO_SetDir( LPC_GPIO_PORT, gpioPort, ( 1 << gpioPin ), GPIO_OUTPUT );\n+         Chip_GPIO_SetPinState( LPC_GPIO_PORT, gpioPort, gpioPin, 0);\n+      break;\n+\n+      default:\n+         ret_val = 0;\n+      break;\n+   }\n+\n+   return ret_val;\n+\n+}\n+\n+\n+bool_t gpioWrite( gpioMap_t pin, bool_t value ){\n+\n+   bool_t ret_val     = 1;\n+\n+   int8_t pinNamePort = 0;\n+   int8_t pinNamePin  = 0;\n+\n+   int8_t func        = 0;\n+\n+   int8_t gpioPort    = 0;\n+   int8_t gpioPin     = 0;\n+\n+   gpioObtainPinConfig( pin, &pinNamePort, &pinNamePin, &func,\n+                           &gpioPort, &gpioPin );\n+\n+   Chip_GPIO_SetPinState( LPC_GPIO_PORT, gpioPort, gpioPin, value);\n+\n+   return ret_val;\n+}\n+\n+\n+bool_t gpioRead( gpioMap_t pin ){\n+\n+   bool_t ret_val     = OFF;\n+\n+   int8_t pinNamePort = 0;\n+   int8_t pinNamePin  = 0;\n+\n+   int8_t func        = 0;\n+\n+   int8_t gpioPort    = 0;\n+   int8_t gpioPin     = 0;\n+\n+   gpioObtainPinConfig( pin, &pinNamePort, &pinNamePin, &func,\n+                           &gpioPort, &gpioPin );\n+\n+   ret_val = (bool_t) Chip_GPIO_ReadPortBit( LPC_GPIO_PORT, gpioPort, gpioPin );\n+\n+   return ret_val;\n+}\n+\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_hmc5883l.c ./sapi/src/sapi_hmc5883l.c\n--- a_OkB2vL/sapi/src/sapi_hmc5883l.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_hmc5883l.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,154 @@\n+/* Copyright 2016, Alejandro Permingeat\n+ * Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-06-27 */\n+\n+#include \"sapi_hmc5883l.h\"         /* <= sAPI HMC5883L header */\n+#include \"sapi_i2c.h\"         \t   /* <= sAPI I2C header */\n+\n+bool_t hmc5883lIsAlive( void ){\n+\n+   uint8_t idRegister[3];\n+\n+   // i2cRead( I2C0, HMC5883L_ADD, HMC5883L_REG_ID_REG_A, &idRegister, 3 );\n+\n+   if( (HMC5883L_VALUE_ID_REG_A == idRegister[0]) &&\n+       (HMC5883L_VALUE_ID_REG_B == idRegister[1]) &&\n+       (HMC5883L_VALUE_ID_REG_C == idRegister[2])\n+     ){\n+      return (TRUE);\n+   }\n+   else{\n+      return (FALSE);\n+   }\n+}\n+\n+bool_t hmc5883lPrepareDefaultConfig( HMC5883L_config_t * config ){\n+\n+   config->gain = HMC5883L_DEFAULT_gain;\n+   config->meassurement = HMC5883L_DEFAULT_messurement;\n+   config->rate = HMC5883L_DEFAULT_rate;\n+   config->samples = HMC5883L_DEFAULT_sample;\n+   config->mode = HMC5883L_DEFAULT_mode;\n+\n+   return (TRUE);\n+}\n+\n+\n+bool_t hmc5883lConfig( HMC5883L_config_t config ){\n+\n+   uint8_t registerA, registerB, registerMode;\n+\n+   uint8_t transmitDataBuffer[2];\n+\n+   registerA = config.samples;\n+   registerA = registerA<<3;\n+   registerA |= config.rate;\n+   registerA = registerA<<2;\n+   registerA |= config.meassurement;\n+\n+   registerB = config.gain;\n+   registerB = registerB << 5;\n+\n+   registerMode = config.mode;\n+\n+   i2cConfig( I2C0, 100000 );\n+\n+   transmitDataBuffer[0] = HMC5883L_REG_CONFIG_A;\n+   transmitDataBuffer[1] = registerA;\n+   i2cWrite( I2C0, HMC5883L_ADD, transmitDataBuffer, 2, TRUE );\n+\n+   transmitDataBuffer[0] = HMC5883L_REG_CONFIG_B;\n+   transmitDataBuffer[1] = registerB;\n+   i2cWrite( I2C0, HMC5883L_ADD, transmitDataBuffer, 2, TRUE );\n+\n+   transmitDataBuffer[0] = HMC5883L_REG_MODE;\n+   transmitDataBuffer[1] = registerMode;\n+   i2cWrite( I2C0, HMC5883L_ADD, transmitDataBuffer, 2, TRUE );\n+\n+   return ( hmc5883lIsAlive() );\n+}\n+\n+\n+bool_t hmc5883lRead( int16_t * x, int16_t * y, int16_t * z ){\n+\n+   bool_t result = TRUE;\n+\n+   uint8_t x_MSB, x_LSB;\n+   uint8_t y_MSB, y_LSB;\n+   uint8_t z_MSB, z_LSB;\n+\n+   uint8_t dataToReadBuffer;\n+\n+   dataToReadBuffer = HMC5883L_REG_X_MSB;\n+   i2cRead( I2C0, HMC5883L_ADD,\n+            &dataToReadBuffer, 1, TRUE,\n+            &x_MSB, 1, TRUE );\n+\n+   dataToReadBuffer = HMC5883L_REG_X_LSB;\n+   i2cRead( I2C0, HMC5883L_ADD,\n+            &dataToReadBuffer, 1, TRUE,\n+            &x_LSB, 1, TRUE );\n+\n+   dataToReadBuffer = HMC5883L_REG_Y_MSB;\n+   i2cRead( I2C0, HMC5883L_ADD,\n+            &dataToReadBuffer, 1, TRUE,\n+            &y_MSB, 1, TRUE );\n+\n+   dataToReadBuffer = HMC5883L_REG_Y_LSB;\n+   i2cRead( I2C0, HMC5883L_ADD,\n+            &dataToReadBuffer, 1, TRUE,\n+            &y_LSB, 1, TRUE );\n+\n+   dataToReadBuffer = HMC5883L_REG_Z_MSB;\n+   i2cRead( I2C0, HMC5883L_ADD,\n+            &dataToReadBuffer, 1, TRUE,\n+            &z_MSB, 1, TRUE );\n+\n+   dataToReadBuffer = HMC5883L_REG_Z_LSB;\n+   i2cRead( I2C0, HMC5883L_ADD,\n+            &dataToReadBuffer, 1, TRUE,\n+            &z_LSB, 1, TRUE );\n+\n+   *x = x_MSB;\n+   *x = (*x << 8)|x_LSB;\n+\n+   *y = y_MSB;\n+   *y = (*y << 8)|y_LSB;\n+\n+   *z = z_MSB;\n+   *z = (*z << 8)|z_LSB;\n+\n+   return(result); /** TODO: return value must reflect the result of the operation */\n+}\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_i2c.c ./sapi/src/sapi_i2c.c\n--- a_OkB2vL/sapi/src/sapi_i2c.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_i2c.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,770 @@\n+/* Copyright 2016, Eric Pernia\n+ * Copyright 2016, Alejandro Permingeat.\n+ * Copyright 2016, Eric Pernia\n+ * All rights reserved.\n+ *\n+ * This file is part sAPI library for microcontrollers.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+ /*\n+  * Date:\n+  * 2016-05-02 Eric Pernia - Only define API\n+  * 2016-06-23 Alejandro Permingeat - First functional version\n+  * 2016-08-07 Eric Pernia - Improve names\n+  * 2016-09-10 Eric Pernia - Add unlimited buffer transfer\n+  * 2016-11-20 Eric Pernia - Software I2C\n+  */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_i2c.h\"\n+#include \"sapi_gpio.h\"\n+#include \"sapi_delay.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+#if( I2C_SOFTWARE == 1 )\n+\n+   static bool_t i2cSoftwareConfig( i2cMap_t i2cNumber, uint32_t clockRateHz );\n+\n+   static bool_t i2cSoftwareRead( i2cMap_t  i2cNumber,\n+                                  uint8_t  i2cSlaveAddress,\n+                                  uint8_t* dataToReadBuffer,\n+                                  uint16_t dataToReadBufferSize,\n+                                  bool_t   sendWriteStop,\n+                                  uint8_t* receiveDataBuffer,\n+                                  uint16_t receiveDataBufferSize,\n+                                  bool_t   sendReadStop );\n+\n+   static bool_t i2cSoftwareWrite( i2cMap_t  i2cNumber,\n+                                   uint8_t  i2cSlaveAddress,\n+                                   uint8_t* transmitDataBuffer,\n+                                   uint16_t transmitDataBufferSize,\n+                                   bool_t   sendWriteStop );\n+\n+   static void i2cSoftwarePinConfig( gpioMap_t pin, uint8_t mode );\n+   static void i2cSoftwarePinWrite( gpioMap_t pin, bool_t value );\n+   static bool_t i2cSoftwarePinRead( gpioMap_t pin );\n+\n+#else\n+\n+   static bool_t i2cHardwareConfig( i2cMap_t i2cNumber, uint32_t clockRateHz );\n+\n+   static bool_t i2cHardwareRead( i2cMap_t  i2cNumber,\n+                                  uint8_t  i2cSlaveAddress,\n+                                  uint8_t* dataToReadBuffer,\n+                                  uint16_t dataToReadBufferSize,\n+                                  bool_t   sendWriteStop,\n+                                  uint8_t* receiveDataBuffer,\n+                                  uint16_t receiveDataBufferSize,\n+                                  bool_t   sendReadStop );\n+\n+   static bool_t i2cHardwareWrite( i2cMap_t  i2cNumber,\n+                                   uint8_t  i2cSlaveAddress,\n+                                   uint8_t* transmitDataBuffer,\n+                                   uint16_t transmitDataBufferSize,\n+                                   bool_t   sendWriteStop );\n+\n+#endif\n+\n+/*==================[internal data definition]===============================*/\n+\n+/*==================[external data definition]===============================*/\n+\n+/*==================[internal functions definition]==========================*/\n+\n+#if( I2C_SOFTWARE == 1 )\n+\n+   static bool_t i2cSoftwareConfig( i2cMap_t i2cNumber, uint32_t clockRateHz ){\n+\n+      bool_t retVal = TRUE;\n+\n+      i2cSoftwarePinConfig( I2C_SOFTWARE_SDA_DIR, GPIO_INPUT_PULLUP );\n+      i2cSoftwarePinConfig( I2C_SOFTWARE_SCL_DIR, GPIO_INPUT_PULLUP );\n+\n+      return retVal;\n+   }\n+\n+   static bool_t i2cSoftwareRead( i2cMap_t  i2cNumber,\n+                                  uint8_t  i2cSlaveAddress,\n+                                  uint8_t* dataToReadBuffer,\n+                                  uint16_t dataToReadBufferSize,\n+                                  bool_t   sendWriteStop,\n+                                  uint8_t* receiveDataBuffer,\n+                                  uint16_t receiveDataBufferSize,\n+                                  bool_t   sendReadStop ){\n+\n+      bool_t retVal = TRUE;\n+      uint16_t i = 0;\n+\n+      // Check Errors\n+      if( (dataToReadBuffer == NULL)  || (dataToReadBufferSize < 0) ||\n+          (receiveDataBuffer == NULL) || (receiveDataBufferSize <= 0) ){\n+         return FALSE;\n+      }\n+\n+      // First Write\n+\n+      if( dataToReadBufferSize > 0 ){\n+         retVal &= i2cSoftwareWrite( i2cNumber,\n+                                     i2cSlaveAddress,\n+                                     dataToReadBuffer,\n+                                     dataToReadBufferSize,\n+                                     sendWriteStop );\n+      }\n+\n+      // Then Read\n+\n+      // Start condition\n+      i2cSoftwareMasterWriteStart();\n+      // 7 bit address + Read = 1\n+      i2cSoftwareMasterWriteAddress( i2cSlaveAddress, I2C_SOFTWARE_READ );\n+      // Write all data buffer\n+      for( i=0; i<receiveDataBufferSize; i++ ){\n+         receiveDataBuffer[i] = i2cSoftwareMasterReadByte( TRUE ); // TRUE send ACK, FALSE not\n+      }\n+      // Send Stop condition\n+      if( sendReadStop ){\n+         i2cSoftwareMasterWriteStop();\n+      }\n+      return retVal;\n+   }\n+\n+   static bool_t i2cSoftwareWrite( i2cMap_t  i2cNumber,\n+                                   uint8_t  i2cSlaveAddress,\n+                                   uint8_t* transmitDataBuffer,\n+                                   uint16_t transmitDataBufferSize,\n+                                   bool_t   sendWriteStop ){\n+\n+      bool_t retVal = TRUE;\n+      uint16_t i = 0;\n+\n+      // Check Errors\n+      if( (transmitDataBuffer == NULL) || (transmitDataBufferSize <= 0) ){\n+         return FALSE;\n+      }\n+      // Start condition\n+      i2cSoftwareMasterWriteStart();\n+      // 7 bit address + Write = 0\n+      i2cSoftwareMasterWriteAddress( i2cSlaveAddress, I2C_SOFTWARE_WRITE );\n+      // Write all data buffer\n+      for( i=0; i<transmitDataBufferSize; i++ ){\n+         i2cSoftwareMasterWriteByte( transmitDataBuffer[i] );\n+      }\n+      // Send Stop condition\n+      if(sendWriteStop){\n+         i2cSoftwareMasterWriteStop();\n+      }\n+\n+      return retVal;\n+   }\n+\n+\n+   // Point of contact with sapi_gpio module\n+\n+   static void i2cSoftwarePinConfig( uint8_t pin, uint8_t mode ){\n+\n+      if( pin == I2C_SOFTWARE_SDA_DIR ){\n+         if( mode == GPIO_OUTPUT ){\n+            //IO_DIR_PORT_PIN( OCM_DATA_PORT, OCM_DATA_PIN, IO_OUT );\n+            gpioConfig( I2C_SOFTWARE_SDA_DIR, GPIO_OUTPUT );\n+         }else if( mode == GPIO_INPUT_PULLUP ){\n+            // Seteo de pines como ENTRADA\n+            //IO_DIR_PORT_PIN( OCM_DATA_PORT, OCM_DATA_PIN, IO_IN );\n+            // Seteo de pines con pull-up\n+            //IO_PUD_PORT( OCM_DATA_PORT, IO_PUP );\n+            gpioConfig( I2C_SOFTWARE_SDA_DIR, GPIO_INPUT );\n+         }\n+      }else if( pin == I2C_SOFTWARE_SCL_DIR ){\n+         if( mode == GPIO_OUTPUT ){\n+            //IO_DIR_PORT_PIN( OCM_CLK_PORT, OCM_CLK_PIN, IO_OUT );\n+            gpioConfig( I2C_SOFTWARE_SCL_DIR, GPIO_OUTPUT );\n+         }else if( mode == GPIO_INPUT_PULLUP ){\n+            // Seteo de pines como ENTRADA\n+            //IO_DIR_PORT_PIN( OCM_CLK_PORT, OCM_CLK_PIN, IO_IN );\n+            // Seteo de pines con pull-up\n+            //IO_PUD_PORT( OCM_CLK_PORT, IO_PUP );\n+            gpioConfig( I2C_SOFTWARE_SCL_DIR, GPIO_INPUT );\n+         }\n+      }\n+\n+   }\n+   static void i2cSoftwarePinWrite( uint8_t pin, bool_t value ){\n+\n+      if( pin == I2C_SOFTWARE_SDA_OUT ){\n+         gpioWrite( I2C_SOFTWARE_SDA_OUT, value );\n+      }else if( pin == I2C_SOFTWARE_SCL_OUT ){\n+         if(value){\n+            //IO_DIR_PORT_PIN( OCM_CLK_PORT, OCM_CLK_PIN, IO_IN );\n+            gpioConfig( I2C_SOFTWARE_SCL_DIR, GPIO_INPUT );\n+            while( !gpioRead( I2C_SOFTWARE_SCL_IN ) );   // Espera hasta que el clock este en alto\n+            i2cSoftwareDelay(1); // 1 clock time delay\n+         }else{\n+            //IO_DIR_PORT_PIN( OCM_CLK_PORT, OCM_CLK_PIN, IO_OUT );\n+            //OCM_SCL = 0;                //Setea el clock a LOW\n+            gpioConfig( I2C_SOFTWARE_SCL_DIR, GPIO_OUTPUT );\n+            gpioWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+         }\n+         // 1 clock time delay\n+         i2cSoftwareDelay(1);\n+      }\n+   }\n+\n+\n+   static bool_t i2cSoftwarePinRead( uint8_t pin ){\n+\n+      bool_t retVal = 0;\n+\n+      retVal = gpioRead( (int8_t)pin );\n+      return retVal;\n+   }\n+#else\n+\n+   static bool_t i2cHardwareConfig( i2cMap_t i2cNumber, uint32_t clockRateHz ){\n+\n+      // Configuracion de las lineas de SDA y SCL de la placa\n+      Chip_SCU_I2C0PinConfig( I2C0_STANDARD_FAST_MODE );\n+\n+      // Inicializacion del periferico\n+      Chip_I2C_Init( i2cNumber );\n+      // Seleccion de velocidad del bus\n+      Chip_I2C_SetClockRate( i2cNumber, clockRateHz );\n+      // Configuracion para que los eventos se resuelvan por polliong\n+      // (la otra opcion es por interrupcion)\n+      Chip_I2C_SetMasterEventHandler( i2cNumber, Chip_I2C_EventHandlerPolling );\n+\n+      return TRUE;\n+   }\n+\n+   static bool_t i2cHardwareRead( i2cMap_t  i2cNumber,\n+                                  uint8_t  i2cSlaveAddress,\n+                                  uint8_t* dataToReadBuffer,\n+                                  uint16_t dataToReadBufferSize,\n+                                  bool_t   sendWriteStop,\n+                                  uint8_t* receiveDataBuffer,\n+                                  uint16_t receiveDataBufferSize,\n+                                  bool_t   sendReadStop ){\n+\n+   //TODO: ver i2cData.options si se puede poner la condicion opcional de stop\n+\n+      I2CM_XFER_T i2cData;\n+\n+      i2cData.slaveAddr = i2cSlaveAddress;\n+      i2cData.options   = 0;\n+      i2cData.status    = 0;\n+      i2cData.txBuff    = dataToReadBuffer;\n+      i2cData.txSz      = dataToReadBufferSize;\n+      i2cData.rxBuff    = receiveDataBuffer;\n+      i2cData.rxSz      = receiveDataBufferSize;\n+\n+      if( Chip_I2CM_XferBlocking( LPC_I2C0, &i2cData ) == 0 ) {\n+         return FALSE;\n+      }\n+\n+      return TRUE;\n+   }\n+\n+   static bool_t i2cHardwareWrite( i2cMap_t  i2cNumber,\n+                                   uint8_t  i2cSlaveAddress,\n+                                   uint8_t* transmitDataBuffer,\n+                                   uint16_t transmitDataBufferSize,\n+                                   bool_t   sendWriteStop ){\n+\n+      //TODO: ver i2cData.options si se puede poner la condicion opcional de stop\n+\n+      I2CM_XFER_T i2cData;\n+\n+      if( i2cNumber != I2C0 ){\n+         return FALSE;\n+      }\n+\n+      // Prepare the i2cData register\n+      i2cData.slaveAddr = i2cSlaveAddress;\n+      i2cData.options   = 0;\n+      i2cData.status    = 0;\n+      i2cData.txBuff    = transmitDataBuffer;\n+      i2cData.txSz      = transmitDataBufferSize;\n+      i2cData.rxBuff    = 0;\n+      i2cData.rxSz      = 0;\n+\n+      /* Send the i2c data */\n+      if( Chip_I2CM_XferBlocking( LPC_I2C0, &i2cData ) == 0 ){\n+         return FALSE;\n+      }\n+\n+      /* *** TEST I2C Response ***\n+\n+      Chip_I2CM_XferBlocking( LPC_I2C0, &i2cData );\n+\n+      if( i2cData.status == I2CM_STATUS_OK){\n+         while(1){\n+            gpioWrite( LEDB, ON );\n+            delay(100);\n+            gpioWrite( LEDB, OFF );\n+            delay(100);\n+         }\n+      }\n+\n+    *** END - TEST I2C Response *** */\n+\n+      return TRUE;\n+   }\n+\n+#endif\n+\n+\n+/*==================[external functions definition]==========================*/\n+\n+bool_t i2cConfig( i2cMap_t i2cNumber, uint32_t clockRateHz ){\n+\n+   bool_t retVal = FALSE;\n+\n+   if( i2cNumber != I2C0 ){\n+      return FALSE;\n+   }\n+\n+   #if( I2C_SOFTWARE == 1 )\n+      retVal = i2cSoftwareConfig( i2cNumber, clockRateHz );\n+   #else\n+      retVal = i2cHardwareConfig( i2cNumber, clockRateHz );\n+   #endif\n+\n+   return retVal;\n+}\n+\n+\n+bool_t i2cRead( i2cMap_t  i2cNumber,\n+                uint8_t  i2cSlaveAddress,\n+                uint8_t* dataToReadBuffer,\n+                uint16_t dataToReadBufferSize,\n+                bool_t   sendWriteStop,\n+                uint8_t* receiveDataBuffer,\n+                uint16_t receiveDataBufferSize,\n+                bool_t   sendReadStop ){\n+\n+   bool_t retVal = FALSE;\n+\n+   if( i2cNumber != I2C0 ){\n+      return FALSE;\n+   }\n+\n+   #if( I2C_SOFTWARE == 1 )\n+      retVal = i2cSoftwareRead( i2cNumber,\n+                                i2cSlaveAddress,\n+                                dataToReadBuffer,\n+                                dataToReadBufferSize,\n+                                sendWriteStop,\n+                                receiveDataBuffer,\n+                                receiveDataBufferSize,\n+                                sendReadStop );\n+   #else\n+      retVal = i2cHardwareRead( i2cNumber,\n+                                i2cSlaveAddress,\n+                                dataToReadBuffer,\n+                                dataToReadBufferSize,\n+                                sendWriteStop,\n+                                receiveDataBuffer,\n+                                receiveDataBufferSize,\n+                                sendReadStop );\n+   #endif\n+\n+   return retVal;\n+}\n+\n+\n+bool_t i2cWrite( i2cMap_t  i2cNumber,\n+                 uint8_t  i2cSlaveAddress,\n+                 uint8_t* transmitDataBuffer,\n+                 uint16_t transmitDataBufferSize,\n+                 bool_t   sendWriteStop ){\n+\n+   bool_t retVal = FALSE;\n+\n+   if( i2cNumber != I2C0 ){\n+      return FALSE;\n+   }\n+\n+   #if( I2C_SOFTWARE == 1 )\n+      retVal = i2cSoftwareWrite( i2cNumber,\n+                                 i2cSlaveAddress,\n+                                 transmitDataBuffer,\n+                                 transmitDataBufferSize,\n+                                 sendWriteStop );\n+   #else\n+      retVal = i2cHardwareWrite( i2cNumber,\n+                                 i2cSlaveAddress,\n+                                 transmitDataBuffer,\n+                                 transmitDataBufferSize,\n+                                 sendWriteStop );\n+   #endif\n+\n+   return retVal;\n+}\n+\n+\n+#if( I2C_SOFTWARE == 1 )\n+   // Software Master I2C\n+\n+   void i2cSoftwareDelay( tick_t duration ){\n+      volatile tick_t i;\n+\n+      duration = 13 * duration;\n+      for( i=duration; i>0; i-- );\n+   }\n+\n+   // Ver!!!\n+   // communication reset: DATA-line=1 and at least 9 SCK cycles followed by transstart\n+   //       _____________________________________________________         ________\n+   // DATA:                                                      |_______|\n+   //          _    _    _    _    _    _    _    _    _        ___     ___\n+   // SCK : __| |__| |__| |__| |__| |__| |__| |__| |__| |______|   |___|   |______\n+\n+\n+   // Generates a transmission start bit sequence\n+   //      ________\n+   // SCL:         |_\n+   //      _____\n+   // SDA:      |____\n+   //\n+   void i2cSoftwareMasterWriteStart( void ){\n+\n+      // Clock (SCL) pin HIGH\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, HIGH );\n+      // Data (SDA) pin HIGH\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, HIGH );\n+      // 1 clock time delay\n+      i2cSoftwareDelay(10);\n+\n+      // Data (SDA) pin LOW\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, LOW );\n+      // 1/2 clock time delay\n+      i2cSoftwareDelay(5);\n+\n+      // Clock (SCL) pin LOW\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+      // 3/10 clock time delay\n+      i2cSoftwareDelay(3);\n+   }\n+\n+   // Generates a transmission stop bit sequence\n+   //        ________\n+   // SCL: _|\n+   //           _____\n+   // SDA: ____|\n+\n+   void i2cSoftwareMasterWriteStop( void ){\n+      // Data (SDA) pin LOW\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, LOW );\n+      // Clock (SCL) pin LOW\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+      // 1/5 clock time delay\n+      i2cSoftwareDelay(2);\n+\n+      // Clock (SCL) pin HIGH\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, HIGH );\n+      // 1/2 clock time delay\n+      i2cSoftwareDelay(5);\n+\n+      // Data (SDA) pin HIGH\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, HIGH );\n+      // 1 clock time delay\n+      i2cSoftwareDelay(10);\n+   }\n+\n+   // Write data byte\n+   //          ___     ___     ___     ___     ___     ___     ___     ___     ___\n+   // SCL: ___| 1 |___| 2 |___| 3 |___| 4 |___| 5 |___| 6 |___| 7 |___| 8 |___| 9 |___\n+   //         _______ _______ _______ _______ _______ _______ _______ _______\n+   // SDA: __|   D7  |   D6  |   D5  |   D4  |   D3  |   D2  |   D1  |   D0  |__ACK?__\n+   //\n+   bool_t i2cSoftwareMasterWriteByte( uint8_t dataByte ){\n+\n+      uint8_t i;\n+      static bool_t ackOrNack;\n+\n+      for( i=8; i>0; i-- ) {\n+\n+         // Clock (SCL) pin LOW\n+         i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+         // Data (SDA) pin with MSB bit value of dataByte\n+         i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, (dataByte & 0x80) );\n+         // 1/5 clock time delay\n+         i2cSoftwareDelay(2);\n+\n+         // Clock (SCL) pin HIGH\n+         i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, HIGH );\n+         // 1/2 clock time delay\n+         i2cSoftwareDelay(5);\n+\n+         // Clock (SCL) pin LOW\n+         i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+         // 3/10 clock time delay\n+         i2cSoftwareDelay(3);\n+\n+         // left shift dataByte\n+         dataByte <<= 1;\n+     }\n+\n+      // Maintain SCL LOW for 1/10 clock time delay\n+      i2cSoftwareDelay(1);\n+      // Configure SDA pin as input\n+      i2cSoftwarePinConfig( I2C_SOFTWARE_SDA_DIR, GPIO_INPUT_PULLUP );\n+      // Maintain SCL LOW for 1/10 clock time delay more\n+      i2cSoftwareDelay(1);\n+\n+      // Clock (SCL) pin HIGH\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, HIGH );\n+      // 1/10 clock time delay\n+      i2cSoftwareDelay(1);\n+      // Read Data (SDA) pin for possible ACK bit\n+      ackOrNack = i2cSoftwarePinRead( I2C_SOFTWARE_SDA_IN );\n+      // 2/5 clock time delay\n+      i2cSoftwareDelay(4);\n+\n+      // Clock (SCL) pin LOW\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+      // 1/5 clock time delay\n+      i2cSoftwareDelay(2);\n+      // Configure SDA pin as output. This prevent that SCL master, the\n+      // microcontroller, and SCL Slave, device, both OUTPUT at the same time.\n+      // This Output-Output condition can damage devices.\n+      i2cSoftwarePinConfig( I2C_SOFTWARE_SDA_DIR, GPIO_OUTPUT );\n+      // 1/10 clock time delay\n+      i2cSoftwareDelay(1);\n+\n+     return ackOrNack;\n+   }\n+\n+   // Read data byte\n+   //          ___     ___     ___     ___     ___     ___     ___     ___     ___\n+   // SCL: ___| 1 |___| 2 |___| 3 |___| 4 |___| 5 |___| 6 |___| 7 |___| 8 |___| 9 |___\n+   //         _______ _______ _______ _______ _______ _______ _______ _______\n+   // SDA: __|   D7  |   D6  |   D5  |   D4  |   D3  |   D2  |   D1  |   D0  |__ACK?__\n+   //\n+   uint8_t i2cSoftwareMasterReadByte( bool_t ack ){\n+\n+      uint8_t i, receivedData = 0;\n+      bool_t receivedBit = 0;\n+\n+      // Configure SDA pin as input\n+      i2cSoftwarePinConfig( I2C_SOFTWARE_SDA_DIR, GPIO_INPUT_PULLUP );\n+\n+      for( i=8; i>0; i-- ) {\n+\n+         // Clock (SCL) pin LOW\n+         i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+         // 1/5 clock time delay\n+         i2cSoftwareDelay(2);\n+\n+         //do{\n+            // Clock (SCL) pin HIGH\n+            i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, HIGH );\n+         //}while( SCL_IN == 0 );    // wait for any SCL clock stretching\n+         // 1/10 clock time delay\n+         i2cSoftwareDelay(1);\n+         // Read Data (SDA) pin\n+         receivedBit = i2cSoftwarePinRead( I2C_SOFTWARE_SDA_IN );\n+         // 2/5 clock time delay\n+         i2cSoftwareDelay(4);\n+\n+         // Shift left receivedData\n+         receivedData <<= 1;\n+\n+         if( receivedBit ){\n+            receivedData |= 0x01;\n+         }\n+\n+         // Clock (SCL) pin LOW\n+         i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+         // 3/10 clock time delay\n+         i2cSoftwareDelay(3);\n+      }\n+\n+      // Maintain SCL LOW for 1/10 clock time delay\n+      i2cSoftwareDelay(1);\n+      // Configure SDA pin as output\n+      i2cSoftwarePinConfig( I2C_SOFTWARE_SDA_DIR, GPIO_OUTPUT );\n+\n+      // send (N)ACK bit (ACK=LOW, NACK=HIGH)\n+      if( ack ){\n+         // Data (SDA) pin LOW\n+         i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, LOW );\n+      }else{\n+         // Data (SDA) pin HIGH\n+         i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, HIGH );\n+      }\n+      // Maintain SCL LOW for 1/10 clock time delay more\n+      i2cSoftwareDelay(1);\n+\n+      // Clock (SCL) pin HIGH\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, HIGH );\n+      // 1/2 clock time delay\n+      i2cSoftwareDelay(5);\n+\n+      // Clock (SCL) pin LOW\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, LOW );\n+      // 1/10 clock time delay\n+      i2cSoftwareDelay(1);\n+      // Data (SDA) pin LOW\n+      i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, LOW );\n+      // 1/5 clock time delay\n+      i2cSoftwareDelay(2);\n+\n+      return receivedData;\n+   }\n+   /* That's almost it for simple I2C communications, but there is one more\n+    * complication. When the master is reading from the slave, its the slave that\n+    * places the data on the SDA line, but its the master that controls the clock.\n+    * What if the slave is not ready to send the data! With devices such as\n+    * EEPROMs this is not a problem, but when the slave device is actually a\n+    * microprocessor with other things to do, it can be a problem. The\n+    * microprocessor on the slave device will need to go to an interrupt routine,\n+    * save its working registers, find out what address the master wants to read\n+    * from, get the data and place it in its transmission register. This can take\n+    * many uS to happen, meanwhile the master is blissfully sending out clock\n+    * pulses on the SCL line that the slave cannot respond to. The I2C protocol\n+    * provides a solution to this: the slave is allowed to hold the SCL line low!\n+    * This is called clock stretching. When the slave gets the read command from\n+    * the master it holds the clock line low. The microprocessor then gets the\n+    * requested data, places it in the transmission register and releases the\n+    * clock line allowing the pull-up resistor to finally pull it high. From the\n+    * masters point of view, it will issue the first clock pulse of the read by\n+    * making SCL high and then check to see if it really has gone high. If its\n+    * still low then its the slave that holding it low and the master should wait\n+    * until it goes high before continuing. Luckily the hardware I2C ports on\n+    * most microprocessors will handle this automatically.\n+    *\n+    * Sometimes however, the master I2C is just a collection of subroutines and\n+    * there are a few implementations out there that completely ignore clock\n+    * stretching. They work with things like EEPROM's but not with microprocessor\n+    * slaves that use clock stretching. The result is that erroneous data is read\n+    * from the slave. Beware!\n+    *\n+    * http://www.robot-electronics.co.uk/i2c-tutorial\n+    */\n+\n+\n+   // Write 7 bit address + R or W bit\n+   //              ___\n+   // SDA: _______|\n+   //          _______\n+   // SCL: ___|\n+   //\n+   bool_t i2cSoftwareMasterWriteAddress( uint8_t i2cSlaveAddress,\n+                                         I2C_Software_rw_t readOrWrite ){\n+\n+      bool_t ackOrNack = FALSE;\n+\n+      if( readOrWrite == I2C_SOFTWARE_WRITE ){\n+         // 7 bit address + Write = 0\n+         i2cSlaveAddress <<= 1;\n+         ackOrNack = i2cSoftwareMasterWriteByte( i2cSlaveAddress );\n+\n+      } else if( readOrWrite == I2C_SOFTWARE_READ ){\n+         // 7 bit address + Read = 1\n+         i2cSlaveAddress <<= 1;\n+         i2cSlaveAddress |= 0x01;\n+         ackOrNack = i2cSoftwareMasterWriteByte( i2cSlaveAddress );\n+      }\n+\n+      return ackOrNack;\n+   }\n+#endif\n+\n+\n+#if( SOFTWARE_I2C_DEBUG == 1 )\n+\n+   /*\n+    * Conexión:\n+    *\n+    * Se debe conectar un led al pin elegido como SCL con una R de 470ohm.\n+    * Otro led al pin elegido como SDA con una R de 470ohm.\n+    * Una R de pull-up de 4K7 entre VDD=+3.3V y SDA.\n+    * Un pulsador entre GND y SDA.\n+    *\n+    * Funcionamiento:\n+    *\n+    * Cada 10 segundos toglea el modo del pin SDA entre Input y Output.\n+    * Mientras SDA es input escribe el valor del pulsador en el pin SCL.\n+    * Cada 500ms se toglea una variable llamada clockStatus.\n+    * Mientras el pin SDA es Output se escribe en el led conectado a SDA\n+    * el valor de la variable clockStatus.\n+    */\n+\n+    //#include \"sapi_delay.h\"\n+\n+    // Test vars\n+    bool_t clockStatus = FALSE;\n+    delay_t clockDelay;\n+    bool_t direction = FALSE;\n+    delay_t delayDir;\n+\n+    void i2cSoftwareMasterPinTestConfig( void ){\n+       delayConfig( &clockDelay, 500 );\n+       delayConfig( &delayDir, 10000 );\n+    }\n+\n+    void i2cSoftwareMasterPinTest( void ){\n+\n+       if( delayRead( &delayDir ) ){\n+          if( direction ){\n+             direction = FALSE;\n+          } else{\n+             direction = TRUE;\n+          }\n+//          I2C_SOFTWARE_SDA_DIR = direction;\n+       }\n+\n+       if( delayRead( &clockDelay ) ){\n+          if( clockStatus ){\n+             clockStatus = FALSE;\n+          } else{\n+             clockStatus = TRUE;\n+          }\n+          //I2C_SOFTWARE_SCL_OUT = clockStatus;\n+       }\n+\n+       if( direction ){ // Input\n+          //I2C_SOFTWARE_SCL_OUT = I2C_SOFTWARE_SDA_IN;\n+          i2cSoftwarePinWrite( I2C_SOFTWARE_SCL_OUT, I2C_SOFTWARE_SDA_IN );\n+       } else{          // Output\n+          //I2C_SOFTWARE_SDA_OUT = clockStatus;\n+          i2cSoftwarePinWrite( I2C_SOFTWARE_SDA_OUT, clockStatus );\n+       }\n+    }\n+#endif\n+\n+/*==================[ISR external functions definition]======================*/\n+\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_keypad.c ./sapi/src/sapi_keypad.c\n--- a_OkB2vL/sapi/src/sapi_keypad.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_keypad.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,158 @@\n+/* Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/*\r\n+ * Date: 2016-07-28\r\n+ */\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_keypad.h\"       /* <= own header */\r\n+\r\n+#include \"sapi_delay.h\"               /* <= delay header */\r\n+#include \"sapi_gpio.h\"                /* <= GPIO header */\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+\r\n+\r\n+/* Configure keypad pins */\r\n+bool_t keypadConfig( keypad_t* keypad,\r\n+                     gpioMap_t* keypadRowPins, uint8_t keypadRowSize,\r\n+                     gpioMap_t* keypadColPins, uint8_t keypadColSize ){\r\n+\r\n+   bool_t retVal = TRUE;\r\n+\r\n+   uint8_t i = 0;\r\n+\r\n+   // Check if values are not invalid\r\n+   if( keypadRowPins == NULL || keypadColPins == NULL ||\r\n+       keypadRowSize <= 0 || keypadColSize <= 0  ){\r\n+      retVal = FALSE;\r\n+   }\r\n+\r\n+   // Configure keypad instance\r\n+   keypad->keypadRowPins = keypadRowPins;\r\n+   keypad->keypadRowSize = keypadRowSize;\r\n+   keypad->keypadColPins = keypadColPins;\r\n+   keypad->keypadColSize = keypadColSize;\r\n+\r\n+   // Configure Rows as Outputs\r\n+   for( i=0; i<keypadRowSize; i++ ){\r\n+      gpioConfig( keypad->keypadRowPins[i], GPIO_OUTPUT );\r\n+   }\r\n+\r\n+   // Configure Columns as Inputs with pull-up resistors enable\r\n+   for( i=0; i<keypadColSize; i++ ){\r\n+      gpioConfig( keypad->keypadColPins[i], GPIO_INPUT_PULLUP );\r\n+   }\r\n+\r\n+   return retVal;\r\n+}\r\n+\r\n+\r\n+/* Return TRUE if any key is pressed or FALSE (0) in other cases.\r\n+ * If exist key pressed write pressed key on key variable */\r\n+bool_t keypadRead( keypad_t* keypad, uint16_t* key ){\r\n+\r\n+   bool_t retVal = FALSE;\r\n+\r\n+   uint8_t r = 0; // Rows\r\n+   uint8_t c = 0; // Columns\r\n+\r\n+   // Put all Rows in LOW state\r\n+   for( r=0; r<keypad->keypadRowSize; r++ ){\r\n+      gpioWrite( keypad->keypadRowPins[r], LOW );\r\n+   }\r\n+\r\n+   // Check all Columns to search if any key is pressed\r\n+   for( c=0; c<keypad->keypadColSize; c++ ){\r\n+\r\n+      // If reads a LOW state in a column then that key may be pressed\r\n+      if( !gpioRead( keypad->keypadColPins[c] ) ){\r\n+\r\n+         delay( 50 ); // Debounce 50 ms\r\n+\r\n+         // Put all Rows in HIGH state except first one\r\n+         for( r=1; r<keypad->keypadRowSize; r++ ){\r\n+            gpioWrite( keypad->keypadRowPins[r], HIGH );\r\n+         }\r\n+\r\n+         // Search what key are pressed\r\n+         for( r=0; r<keypad->keypadRowSize; r++ ){\r\n+\r\n+            // Put the Row[r-1] in HIGH state and the Row[r] in LOW state\r\n+            if( r>0 ){ // Prevents negative index in array\r\n+               gpioWrite( keypad->keypadRowPins[r-1], HIGH );\r\n+            }\r\n+            gpioWrite( keypad->keypadRowPins[r], LOW );\r\n+\r\n+            // Check Columns[c] at Row[r] to search if the key is pressed\r\n+            // if that key is pressed (LOW state) then retuns the key\r\n+            if( !gpioRead( keypad->keypadColPins[c] ) ){\r\n+               *key = (uint16_t)r * (uint16_t)(keypad->keypadColSize) + (uint16_t)c;\r\n+               retVal = TRUE;\r\n+               return retVal;\r\n+            }\r\n+         }\r\n+\r\n+      }\r\n+   }\r\n+\r\n+   /*\r\n+      4 rows * 5 columns Keypad\r\n+\r\n+         c0 c1 c2 c3 c4\r\n+      r0  0  1  2  3  4\r\n+      r1  5  6  7  8  9    Press r[i] c[j] => (i) * amountOfColumns + (j)\r\n+      r2 10 11 12 13 14\r\n+      r3 15 16 17 18 19\r\n+   */\r\n+\r\n+   // if no key are pressed then retun FALSE\r\n+   return retVal;\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_pwm.c ./sapi/src/sapi_pwm.c\n--- a_OkB2vL/sapi/src/sapi_pwm.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_pwm.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,273 @@\n+/* Copyright 2016, Ian Olivieri\r\n+ * Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-02-10 */\r\n+\r\n+/* TODO: hacer una forma de buscar las funciones que tocan el modulo siguiente\r\n+ * All functions relative to the microcontroller */\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_pwm.h\"\r\n+#include \"sapi_sct.h\"\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+#ifndef EMPTY_POSITION\r\n+   #define EMPTY_POSITION 255\r\n+#endif\r\n+\r\n+#define PWM_TOTALNUMBER   11   /* From PWM0 to PWM10 */\r\n+\r\n+#define PWM_FREC          1000 /* 1Khz */\r\n+#define PWM_PERIOD        1000 /* 1000uS = 1ms*/\r\n+\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+/*\r\n+ * @Brief: Initializes the pwm timers.\r\n+ * @param  none\r\n+ * @return nothing\r\n+ */\r\n+static void pwmInitTimers(void);\r\n+\r\n+/*\r\n+ * @brief:   adds pwm to the the list of working pwms\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @return:   True if pwm was successfully attached, False if not.\r\n+ */\r\n+static bool_t pwmAttach( pwmMap_t pwmNumber );\r\n+\r\n+/*\r\n+ * @brief:   removes pwm (attached to pwmNumber) from the list\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @return:    True if pwm was successfully detached, False if not.\r\n+ */\r\n+static bool_t pwmDetach( pwmMap_t pwmNumber );\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+/* Enter a pwm number, get a sct number\r\n+ * Since this module works with pwm numbers, but uses sct channels to generate\r\n+ * the signal, its necessary to connect pwm number with the SctMap_t (sAPI_PeripheralMap.h).\r\n+ * This way the user sets \"pwms\", while using the sct peripheral internally*/\r\n+static const uint8_t pwmMap[PWM_TOTALNUMBER] = {\r\n+   /* PWM0 */  CTOUT1,  /* T_FIL1 */\r\n+   /* PWM1 */  CTOUT12, /* T_COL2 */\r\n+   /* PWM2 */  CTOUT10, /* T_COL0 */\r\n+   /* PWM3 */  CTOUT0,  /* T_FIL2 */\r\n+   /* PWM4 */  CTOUT3,  /* T_FIL3 */\r\n+   /* PWM5 */  CTOUT13, /* T_COL1 */\r\n+   /* PWM6 */  CTOUT7,  /* GPIO8  */\r\n+   /* PWM7 */  CTOUT2,  /* LED1   */\r\n+   /* PWM8 */  CTOUT5,  /* LED2   */\r\n+   /* PWM9 */  CTOUT4,  /* LED3   */\r\n+   /* PWM10 */ CTOUT6   /* GPIO2  */\r\n+};\r\n+\r\n+/*when the user adds a pwm with pwmAttach the list updates with the pin number of the element*/\r\n+static uint8_t AttachedPWMList[PWM_TOTALNUMBER] = {\r\n+/*Position | Pwm Number*/\r\n+   /*0*/  EMPTY_POSITION,\r\n+   /*1*/  EMPTY_POSITION,\r\n+   /*2*/  EMPTY_POSITION,\r\n+   /*3*/  EMPTY_POSITION,\r\n+   /*4*/  EMPTY_POSITION,\r\n+   /*5*/  EMPTY_POSITION,\r\n+   /*6*/  EMPTY_POSITION,\r\n+   /*7*/  EMPTY_POSITION,\r\n+   /*8*/  EMPTY_POSITION,\r\n+   /*9*/\tEMPTY_POSITION,\r\n+   /*10*/ EMPTY_POSITION,\r\n+};\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/*\r\n+ * @Brief:   Initializes the pwm timers.\r\n+ * @param   none\r\n+ * @return   nothing\r\n+ */\r\n+static void pwmInitTimers(void){\r\n+   Sct_Init(PWM_FREC);\r\n+}\r\n+\r\n+/*\r\n+ * @brief:   adds pwm to the the list of working pwms\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @return:   True if pwm was successfully attached, False if not.\r\n+ */\r\n+static bool_t pwmAttach( pwmMap_t pwmNumber){\r\n+\r\n+   bool_t success = FALSE;\r\n+   uint8_t position = 0;\r\n+\r\n+   position = pwmIsAttached(pwmNumber);\r\n+   if(position==0){\r\n+      position = pwmIsAttached(EMPTY_POSITION); /* Searches for the first empty position */\r\n+      if(position){ /* if position==0 => there is no room in the list for another pwm */\r\n+         AttachedPWMList[position-1] = pwmNumber;\r\n+         Sct_EnablePwmFor(pwmMap[pwmNumber]);\r\n+         success = TRUE;\r\n+      }\r\n+   }\r\n+   return success;\r\n+}\r\n+\r\n+/*\r\n+ * @brief:   removes pwm (attached to pwmNumber) from the list\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @return:    True if pwm was successfully detached, False if not.\r\n+ */\r\n+static bool_t pwmDetach( pwmMap_t pwmNumber ){\r\n+\r\n+   bool_t success = FALSE;\r\n+   uint8_t position = 0;\r\n+\r\n+   position = pwmIsAttached(pwmNumber);\r\n+\r\n+   if(position){\r\n+      AttachedPWMList[position-1] = EMPTY_POSITION;\r\n+      success = TRUE;\r\n+   }\r\n+   return success;\r\n+}\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+\r\n+/*\r\n+ * @brief:   change the value of the pwm at the selected pin\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @param:   value:   8bit value, from 0 to 255\r\n+ * @return:   True if the value was successfully changed, False if not.\r\n+ */\r\n+bool_t pwmWrite( pwmMap_t pwmNumber, uint8_t value ){\r\n+\r\n+   bool_t success = FALSE;\r\n+   uint8_t position = 0;\r\n+\r\n+   position = pwmIsAttached(pwmNumber);\r\n+\r\n+   if(position){\r\n+      Sct_SetDutyCycle(pwmMap[pwmNumber], value);\r\n+      success = TRUE;\r\n+   }\r\n+\r\n+   return success;\r\n+}\r\n+\r\n+/*\r\n+ * @brief:   read the value of the pwm in the pin\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @return:   value of the pwm in the pin (0 ~ 255).\r\n+ *   If an error ocurred, return = EMPTY_POSITION = 255\r\n+ */\r\n+uint8_t pwmRead( pwmMap_t pwmNumber ){\r\n+\r\n+   uint8_t position = 0, value = 0;\r\n+   position = pwmIsAttached(pwmNumber);\r\n+\r\n+   if(position){\r\n+      value = Sct_GetDutyCycle(pwmMap[pwmNumber]);\r\n+   }else{\r\n+      value = EMPTY_POSITION;\r\n+   }\r\n+\r\n+   return value;\r\n+}\r\n+\r\n+\r\n+/*\r\n+ * @Brief: Initializes the pwm peripheral.\r\n+ * @param  uint8_t pwmNumber\r\n+ * @param  uint8_t config\r\n+ * @return bool_t true (1) if config it is ok\r\n+ */\r\n+bool_t pwmConfig( pwmMap_t pwmNumber, pwmConfig_t config){\r\n+\r\n+   bool_t ret_val = 1;\r\n+\r\n+   switch(config){\r\n+\r\n+      case PWM_ENABLE:\r\n+         pwmInitTimers();\r\n+      break;\r\n+\r\n+      case PWM_DISABLE:\r\n+         ret_val = 0;\r\n+      break;\r\n+\r\n+      case PWM_ENABLE_OUTPUT:\r\n+         ret_val = pwmAttach( pwmNumber );\r\n+      break;\r\n+\r\n+      case PWM_DISABLE_OUTPUT:\r\n+         ret_val = pwmDetach( pwmNumber );\r\n+      break;\r\n+\r\n+      default:\r\n+         ret_val = 0;\r\n+      break;\r\n+   }\r\n+\r\n+   return ret_val;\r\n+}\r\n+\r\n+/*\r\n+ * @brief:   Tells if the pwm is currently active, and its position\r\n+ * @param:   pwmNumber:   ID of the pwm, from 0 to 10\r\n+ * @return:   position (1 ~ PWM_TOTALNUMBER), 0 if the element was not found.\r\n+ */\r\n+uint8_t pwmIsAttached( pwmMap_t pwmNumber )\r\n+{\r\n+   uint8_t position = 0, positionInList = 0;\r\n+   while ( (position < PWM_TOTALNUMBER) &&\r\n+           (pwmNumber != AttachedPWMList[position]) ) {\r\n+      position++;\r\n+   }\r\n+\r\n+   if (position < PWM_TOTALNUMBER){\r\n+      positionInList = position + 1;\r\n+   } else{\r\n+      positionInList = 0;\r\n+   }\r\n+\r\n+   return positionInList;\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_rtc.c ./sapi/src/sapi_rtc.c\n--- a_OkB2vL/sapi/src/sapi_rtc.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_rtc.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,146 @@\n+/* Copyright 2011, ChaN.\r\n+ * Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-03-07 */\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_rtc.h\"\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+\r\n+/*\r\n+ * @Brief: Configure RTC peripheral.\r\n+ * @param  rtc_t rtc: RTC structure\r\n+ * @return bool_t true (1) if config it is ok\r\n+ */\r\n+bool_t rtcConfig( rtc_t * rtc ){\r\n+\r\n+   bool_t ret_val = 1;\r\n+\r\n+   static bool_t init;\r\n+   RTC_TIME_T rtcTime;\r\n+\r\n+   if( init ){\r\n+      /* Already initialized */\r\n+      ret_val = 0;\r\n+   } else {\r\n+\r\n+      /* RTC Block section ------------------------- */\r\n+      Chip_RTC_Init(LPC_RTC);\r\n+\r\n+      /* Set current time for RTC */\r\n+      /* Current time is 22:00:00 , 2016-07-02 */\r\n+      /*\r\n+      rtcTime.time[RTC_TIMETYPE_SECOND]     = 0;\r\n+      rtcTime.time[RTC_TIMETYPE_MINUTE]     = 0;\r\n+      rtcTime.time[RTC_TIMETYPE_HOUR]       = 22;\r\n+      rtcTime.time[RTC_TIMETYPE_DAYOFMONTH] = 2;\r\n+      rtcTime.time[RTC_TIMETYPE_MONTH]      = 7;\r\n+      rtcTime.time[RTC_TIMETYPE_YEAR]       = 2016;\r\n+      Chip_RTC_SetFullAlarmTime(LPC_RTC, &rtcTime);\r\n+      */\r\n+      rtcWrite( rtc );\r\n+\r\n+      /* Enable rtc (starts increase the tick counter\r\n+         and second counter register) */\r\n+      Chip_RTC_Enable(LPC_RTC, ENABLE);\r\n+\r\n+      init = 1;\r\n+   }\r\n+\r\n+   return ret_val;\r\n+}\r\n+\r\n+/*\r\n+ * @Brief: Get time from RTC peripheral.\r\n+ * @param  rtc_t rtc: RTC structure\r\n+ * @return bool_t true (1) if config it is ok\r\n+ */\r\n+bool_t rtcRead( rtc_t * rtc ){\r\n+\r\n+   bool_t ret_val = 1;\r\n+\r\n+   RTC_TIME_T rtcTime;\r\n+\r\n+   Chip_RTC_GetFullTime(LPC_RTC, &rtcTime);\r\n+\r\n+   rtc->sec = rtcTime.time[RTC_TIMETYPE_SECOND];\r\n+   rtc->min = rtcTime.time[RTC_TIMETYPE_MINUTE];\r\n+   rtc->hour = rtcTime.time[RTC_TIMETYPE_HOUR];\r\n+   rtc->wday = rtcTime.time[RTC_TIMETYPE_DAYOFWEEK];\r\n+   rtc->mday = rtcTime.time[RTC_TIMETYPE_DAYOFMONTH];\r\n+   rtc->month = rtcTime.time[RTC_TIMETYPE_MONTH];\r\n+   rtc->year = rtcTime.time[RTC_TIMETYPE_YEAR];\r\n+\r\n+   return ret_val;\r\n+}\r\n+\r\n+/*\r\n+ * @Brief: Set time on RTC peripheral.\r\n+ * @param  rtc_t rtc: RTC structure\r\n+ * @return bool_t true (1) if config it is ok\r\n+ */\r\n+bool_t rtcWrite( rtc_t * rtc ){\r\n+\r\n+   bool_t ret_val = 1;\r\n+\r\n+   RTC_TIME_T rtcTime;\r\n+\r\n+   rtcTime.time[RTC_TIMETYPE_SECOND]     = rtc->sec;\r\n+   rtcTime.time[RTC_TIMETYPE_MINUTE]     = rtc->min;\r\n+   rtcTime.time[RTC_TIMETYPE_HOUR]       = rtc->hour;\r\n+   rtcTime.time[RTC_TIMETYPE_DAYOFMONTH] = rtc->wday;\r\n+   rtcTime.time[RTC_TIMETYPE_DAYOFMONTH] = rtc->mday;\r\n+   rtcTime.time[RTC_TIMETYPE_MONTH]      = rtc->month;\r\n+   rtcTime.time[RTC_TIMETYPE_YEAR]\t     = rtc->year;\r\n+\r\n+   Chip_RTC_SetFullTime(LPC_RTC, &rtcTime);\r\n+\r\n+   return ret_val;\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_sct.c ./sapi/src/sapi_sct.c\n--- a_OkB2vL/sapi/src/sapi_sct.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_sct.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,167 @@\n+/* Copyright 2016, Ian Olivieri\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-02-10 */\r\n+\r\n+/*The SCT (State Configurable Timer) is a feature included in some of LPC's microcontrollers\r\n+ * that provides a high resolution PWM (or just another timer).\r\n+ * It's like a normal timer but with multiple Compare Match values (16),\r\n+ * and can be therefore used to generate several PWM signals with THE SAME PERIOD\r\n+ * For more information about the STCPWM peripheral, refer to the Chapter 39 of\r\n+ * the LPC43xx user manual\r\n+ */\r\n+\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_sct.h\"\r\n+\r\n+/* Specific modules used:\r\n+   #include \"scu_18xx_43xx.h\" for Chip_SCU funtions\r\n+   #include \"sct_pwm_18xx_43xx.h\" for Chip_SCTPWM funtions\r\n+*/\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/* Because all pins have their CTOUT in the FUNC1 there is no need to\r\n+   save the same number for every pin in this case. */\r\n+#define CTOUT_FUNC   FUNC1\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+/*\r\n+ * List of ports and pins corresponding to the sct channels.\r\n+ * Each channel is asociated with a CTOUT number. Some pins, like\r\n+ * LED 1 and LCD1, have the same channel, so you can only generate 1 signal\r\n+ * for both. Because of that only one of them will be used.\r\n+ */\r\n+static pinConfigLpc4337_t SCTdataList[] =\r\n+{\r\n+/* Sct n° | port | pin | name in board */\r\n+/* CTOUT0 */ { 4 , 2 }, /* T_FIL2 */\r\n+/* CTOUT1 */ { 4 , 1 }, /* T_FIL1 */\r\n+/* CTOUT2 */ { 2 , 10 }, /* LED1 (also for LCD1) */\r\n+/* CTOUT3 */ { 4 , 3 }, /* T_FIL3 */\r\n+/* CTOUT4 */ { 2 , 12 }, /* LED3 (also for LCD3) */\r\n+/* CTOUT5 */ { 2 , 11 }, /* LED2 (also for LCD2) */\r\n+/* CTOUT6 */ { 6 , 5 }, /* GPIO2 */\r\n+/* CTOUT7 */ { 6 , 12 }, /* GPIO8 */\r\n+/* CTOUT8 */ { 1 , 3 }, /* MDC / SPI_MISO */\r\n+/* CTOUT9 */ { 1 , 4 }, /* SPI_MOSI */\r\n+/* CTOUT10 */ { 1 , 5 }, /* T_COL0 */\r\n+/* CTOUT11 */ { 0 , 0 }, /* DO NOT USE */\r\n+/* CTOUT12 */ { 7 , 5 }, /* T_COL2 */\r\n+/* CTOUT13 */ { 7 , 4 } /* T_COL1 */\r\n+};\r\n+\r\n+/*Configuration data for LCD1, LCD2 and LCD3:\r\n+ CTOUT_2 { 4 , 4 }, LCD1\r\n+ CTOUT_5 { 4 , 5 }, LCD2\r\n+ CTOUT_4 { 4 , 6 }, LCD3\r\n+ */\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+/*\r\n+ * @brief:   Initialize the SCT peripheral with the given frequency\r\n+ * @param:   frequency:   value in Hz\r\n+ * @note:   there can only be 1 frequency in all the SCT peripheral.\r\n+ */\r\n+void Sct_Init(uint32_t frequency)\r\n+{\r\n+   /* Source: https://www.lpcware.com/content/faq/how-use-sct-standard-pwm-using-lpcopen */\r\n+   /* Initialize the SCT as PWM and set frequency */\r\n+   Chip_SCTPWM_Init(LPC_SCT);\r\n+   Chip_SCTPWM_SetRate(LPC_SCT, frequency);\r\n+\r\n+   Chip_SCTPWM_Start(LPC_SCT);\r\n+}\r\n+\r\n+/*\r\n+ * @brief\tEnables pwm function for the given pin\r\n+ * @param\tsctNumber:   pin where the pwm signal will be generated\r\n+ */\r\n+void Sct_EnablePwmFor(uint8_t sctNumber)\r\n+{\r\n+   /*Enable SCT function on pin*/\r\n+   Chip_SCU_PinMux(SCTdataList[sctNumber].port , SCTdataList[sctNumber].pin , SCU_MODE_INACT , CTOUT_FUNC);\r\n+   /*Sets pin as PWM output and gives it an index (SCTdataList[sctNumber].mode+1)*/\r\n+   Chip_SCTPWM_SetOutPin(LPC_SCT, sctNumber+1, sctNumber);\r\n+\r\n+   /* Start with 0% duty cycle */\r\n+   Sct_SetDutyCycle(sctNumber, Chip_SCTPWM_PercentageToTicks(LPC_SCT,0));\r\n+}\r\n+\r\n+/*\r\n+ * @brief   Converts a value in microseconds (uS = 1x10^-6 sec) to ticks\r\n+ * @param   value:   8bit value, from 0 to 255\r\n+ * @return   Equivalent in Ticks for the LPC4337\r\n+ */\r\n+uint32_t Sct_Uint8ToTicks(uint8_t value)\r\n+{\r\n+   return ( (Chip_SCTPWM_GetTicksPerCycle(LPC_SCT) * value)/ 255 );\r\n+}\r\n+\r\n+\r\n+/*\r\n+ * @brief:   Sets the pwm duty cycle\r\n+ * @param:\tsctNumber:   pin where the pwm signal is generated\r\n+ * @param\tvalue:   8bit value, from 0 to 255\r\n+ * @note   For the 'ticks' parameter, see function Sct_Uint8ToTicks\r\n+ */\r\n+void Sct_SetDutyCycle(uint8_t sctNumber, uint8_t value)\r\n+{\r\n+   Chip_SCTPWM_SetDutyCycle(LPC_SCT, sctNumber+1, Sct_Uint8ToTicks(value));\r\n+}\r\n+\r\n+/*\r\n+ * @brief:   Gets the pwm duty cycle\r\n+ * @param:\tsctNumber:   pin where the pwm signal is generated\r\n+ * @return:   duty cycle of the channel, from 0 to 255\r\n+ */\r\n+ /* TODO: function not tested */\r\n+uint8_t Sct_GetDutyCycle(uint8_t sctNumber)\r\n+{\r\n+   uint8_t value = 0;\r\n+\r\n+   value = (uint8_t) ((Chip_SCTPWM_GetDutyCycle(LPC_SCT, sctNumber+1)*255)/Chip_SCTPWM_GetTicksPerCycle(LPC_SCT));\r\n+\r\n+   return value;\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_servo.c ./sapi/src/sapi_servo.c\n--- a_OkB2vL/sapi/src/sapi_servo.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_servo.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,421 @@\n+/* Copyright 2016, Ian Olivieri\r\n+ * Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-02-10 */\r\n+\r\n+/*TODO: make a graphic and explanation of the timer ramp and compare match values\r\n+ to make everything clear */\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_gpio.h\"\r\n+#include \"sapi_servo.h\"\r\n+#include \"sapi_timer.h\"\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+#define EMPTY_POSITION   255\r\n+#define SERVO_TOTALNUMBER   9\r\n+#define SERVO_COMPLETECYCLE_PERIOD   20000  /*value in uSec */\r\n+#define SERVO_MAXUPTIME_PERIOD   2000  /*value in uSec */\r\n+#define SERVO_MINUPTIME_PERIOD   500 /*value in uSec */\r\n+\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+typedef struct\r\n+{\r\n+   uint8_t servo; /*Servo number. It's mapped to the DIOMap_t in the servoMap*/\r\n+   uint8_t value; /*Value of the servo*/\r\n+   /*To manage each servo more efficiently, every one of them has a default\r\n+   * timer, match number and function associated depending of their position in the list\r\n+   * This can be done because all timers initialize with the same period (20ms). So,  if\r\n+   * you need different frequencies for different timers you will have to change that since\r\n+   * it won't be the same to attach a servo in one position or another in the list*/\r\n+   uint8_t associatedTimer;\r\n+   uint8_t associatedCompareMatch;\r\n+   voidFunctionPointer_t associatedFunction;\r\n+\r\n+}attachedServo_t;\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+static uint32_t valueToMicroseconds(uint8_t );\r\n+\r\n+static void timer1CompareMatch0func(void);\r\n+static void timer1CompareMatch1func(void);\r\n+static void timer1CompareMatch2func(void);\r\n+static void timer1CompareMatch3func(void);\r\n+\r\n+static void timer2CompareMatch0func(void);\r\n+static void timer2CompareMatch1func(void);\r\n+static void timer2CompareMatch2func(void);\r\n+static void timer2CompareMatch3func(void);\r\n+\r\n+static void timer3CompareMatch0func(void);\r\n+static void timer3CompareMatch1func(void);\r\n+static void timer3CompareMatch2func(void);\r\n+static void timer3CompareMatch3func(void);\r\n+\r\n+static void servoInitTimers( void );\r\n+static bool_t servoAttach( servoMap_t servoNumber );\r\n+static bool_t servoDetach( servoMap_t servoNumber );\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+\r\n+/* Enter a servo number, get a Gpio number\r\n+ * Since this module works with servo numbers, but uses gpio pins to generate\r\n+ * the signal, its necessary to connect servo number with the DIOMap_t (sAPI_PeripheralMap.h).\r\n+ * This way the user sets \"servos\", while using gpio outputs internally so the gpioWrite()\r\n+ * function can be easily used*/\r\n+static const uint8_t servoMap[SERVO_TOTALNUMBER] =\r\n+{\r\n+   /* Servo name | DIOMap name | Name in the board*/\r\n+   /* SERVO0 */ T_FIL1, /* T_FIL1 */\r\n+   /* SERVO1 */ T_COL0, /* T_COL0 */\r\n+   /* SERVO2 */ T_FIL2, /* T_FIL2 */\r\n+   /* SERVO3 */ T_FIL3, /* T_FIL3 */\r\n+   /* SERVO4 */ GPIO8,  /* GPIO8  */\r\n+   /* SERVO5 */ LCD1,   /* LCD1   */\r\n+   /* SERVO6 */ LCD2,   /* LCD2   */\r\n+   /* SERVO7 */ LCD3,   /* LCD3   */\r\n+   /* SERVO8 */ GPIO2   /* GPIO2  */\r\n+};\r\n+\r\n+/*when the user adds a servo with servoAttach the list updates with the servo number*/\r\n+static attachedServo_t AttachedServoList[SERVO_TOTALNUMBER] =\r\n+{\r\n+/*position |Servo number | value | asociatedTimer | associatedCompareMatch | associatedFunction*/\r\n+   /*0*/\t{EMPTY_POSITION , 0,  TIMER1 , TIMERCOMPAREMATCH1 , timer1CompareMatch1func},\r\n+   /*1*/\t{EMPTY_POSITION , 0 , TIMER1 , TIMERCOMPAREMATCH2 , timer1CompareMatch2func},\r\n+   /*2*/\t{EMPTY_POSITION , 0 , TIMER1 , TIMERCOMPAREMATCH3 , timer1CompareMatch3func},\r\n+   /*3*/\t{EMPTY_POSITION , 0 , TIMER2 , TIMERCOMPAREMATCH1 , timer2CompareMatch1func},\r\n+   /*4*/\t{EMPTY_POSITION , 0 , TIMER2 , TIMERCOMPAREMATCH2 , timer2CompareMatch2func},\r\n+   /*5*/\t{EMPTY_POSITION , 0 , TIMER2 , TIMERCOMPAREMATCH3 , timer2CompareMatch3func},\r\n+   /*6*/\t{EMPTY_POSITION , 0 , TIMER3 , TIMERCOMPAREMATCH1 , timer3CompareMatch1func},\r\n+   /*7*/\t{EMPTY_POSITION , 0 , TIMER3 , TIMERCOMPAREMATCH2 , timer3CompareMatch2func},\r\n+   /*8*/\t{EMPTY_POSITION , 0 , TIMER3 , TIMERCOMPAREMATCH3 , timer3CompareMatch3func}\r\n+};\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/*\r\n+ * @brief   Converts a value in value to micro seconds for a specific type of servo (see the defines)\r\n+ * @param   value:   value of the servo, from 0 to 180\r\n+ * @return   Equivalent in microseconds for a specific type of servo (see the defines)\r\n+ * @note   Should be used with Timer_microsecondsToTicks to use some of\r\n+ *   the functions in the sAPI_Timer that requires ticks as a parameter\r\n+*/\r\n+static uint32_t valueToMicroseconds(uint8_t value){\r\n+\r\n+   return (SERVO_MINUPTIME_PERIOD+(value*SERVO_MAXUPTIME_PERIOD)/180);\r\n+}\r\n+\r\n+/*\r\n+ * @brief:\tcompare match 0 function. The one that is executed when the cycle ends\r\n+ * (to visualize it, think about the 'timer ramp')\r\n+ * @note:   this function can't be generalized because sAPI_Timer functions expect void-void function pointers\r\n+ */\r\n+static void timer1CompareMatch0func(void)\r\n+{\r\n+   uint8_t servoListPosition= 0;\r\n+\r\n+   for(servoListPosition=0;servoListPosition<3;servoListPosition++)\r\n+   {\r\n+      if(AttachedServoList[servoListPosition].servo != EMPTY_POSITION)\r\n+      {\r\n+         gpioWrite(servoMap[AttachedServoList[servoListPosition].servo],TRUE);\r\n+         Timer_SetCompareMatch( \tAttachedServoList[servoListPosition].associatedTimer,\r\n+                                    AttachedServoList[servoListPosition].associatedCompareMatch,\r\n+                                    Timer_microsecondsToTicks(valueToMicroseconds(AttachedServoList[servoListPosition].value)));\r\n+      }\r\n+   }\r\n+}\r\n+\r\n+static void timer1CompareMatch1func(void)\r\n+{\r\n+   gpioWrite(servoMap[AttachedServoList[0].servo],FALSE);\r\n+}\r\n+\r\n+static void timer1CompareMatch2func(void)\r\n+{\r\n+   gpioWrite(servoMap[AttachedServoList[1].servo],FALSE);\r\n+}\r\n+\r\n+static void timer1CompareMatch3func(void)\r\n+{\r\n+   gpioWrite(servoMap[AttachedServoList[2].servo],FALSE);\r\n+}\r\n+\r\n+static void timer2CompareMatch0func(void)\r\n+{\r\n+   uint8_t servoListPosition= 3;\r\n+\r\n+   for(servoListPosition=3;servoListPosition<6;servoListPosition++)\r\n+   {\r\n+      if(AttachedServoList[servoListPosition].servo != EMPTY_POSITION)\r\n+      {\r\n+         gpioWrite(servoMap[AttachedServoList[servoListPosition].servo],TRUE);\r\n+         Timer_SetCompareMatch( AttachedServoList[servoListPosition].associatedTimer,\r\n+                                 AttachedServoList[servoListPosition].associatedCompareMatch,\r\n+                                 Timer_microsecondsToTicks(valueToMicroseconds(AttachedServoList[servoListPosition].value)));\r\n+\t\t}\r\n+\t}\r\n+}\r\n+\r\n+static void timer2CompareMatch1func(void){\r\n+   gpioWrite(servoMap[AttachedServoList[3].servo],FALSE);\r\n+}\r\n+\r\n+static void timer2CompareMatch2func(void){\r\n+   gpioWrite(servoMap[AttachedServoList[4].servo],FALSE);\r\n+}\r\n+\r\n+static void timer2CompareMatch3func(void){\r\n+   gpioWrite(servoMap[AttachedServoList[5].servo],FALSE);\r\n+}\r\n+\r\n+static void timer3CompareMatch0func(void){\r\n+\r\n+   uint8_t servoListPosition= 6;\r\n+\r\n+   for(servoListPosition=6;servoListPosition<9;servoListPosition++)\r\n+   {\r\n+      if(AttachedServoList[servoListPosition].servo != EMPTY_POSITION)\r\n+      {\r\n+         gpioWrite(servoMap[AttachedServoList[servoListPosition].servo],TRUE);\r\n+         Timer_SetCompareMatch( AttachedServoList[servoListPosition].associatedTimer,\r\n+                                 AttachedServoList[servoListPosition].associatedCompareMatch,\r\n+                                 Timer_microsecondsToTicks(valueToMicroseconds(AttachedServoList[servoListPosition].value)));\r\n+      }\r\n+   }\r\n+}\r\n+\r\n+static void timer3CompareMatch1func(void){\r\n+   gpioWrite(servoMap[AttachedServoList[6].servo],FALSE);\r\n+}\r\n+\r\n+static void timer3CompareMatch2func(void){\r\n+   gpioWrite(servoMap[AttachedServoList[7].servo],FALSE);\r\n+}\r\n+\r\n+static void timer3CompareMatch3func(void){\r\n+   gpioWrite(servoMap[AttachedServoList[8].servo],FALSE);\r\n+}\r\n+\r\n+\r\n+/*\r\n+ * @Brief: Initializes the servo peripheral\r\n+ * @param   none\r\n+ * @return   nothing\r\n+ * @IMPORTANT:   this function uses Timer 1, 2 and 3 to generate the servo signals, so\r\n+ *   they won't be available to use.\r\n+ */\r\n+static void servoInitTimers(void){\r\n+   Timer_Init( TIMER1,\r\n+               Timer_microsecondsToTicks(SERVO_COMPLETECYCLE_PERIOD),\r\n+               timer1CompareMatch0func\r\n+              );\r\n+   Timer_Init( TIMER2,\r\n+               Timer_microsecondsToTicks(SERVO_COMPLETECYCLE_PERIOD),\r\n+               timer2CompareMatch0func\r\n+             );\r\n+   Timer_Init( TIMER3,\r\n+               Timer_microsecondsToTicks(SERVO_COMPLETECYCLE_PERIOD),\r\n+               timer3CompareMatch0func\r\n+             );\r\n+}\r\n+\r\n+/*\r\n+ * @brief: adds a servo to the active servos list\r\n+ * @param   servoNumber:   ID of the servo, from 0 to 8\r\n+ * @return: True if servo was successfully attached, False if not.\r\n+ */\r\n+static bool_t servoAttach( servoMap_t servoNumber)\r\n+{\r\n+   bool_t success = FALSE;\r\n+   uint8_t position = 0;\r\n+\r\n+   /* Pin must b config as Output */\r\n+   gpioConfig( (gpioMap_t)servoNumber, GPIO_OUTPUT );\r\n+\r\n+   position = servoIsAttached(servoNumber);\r\n+   if(position==0)\r\n+   {\r\n+      position = servoIsAttached(EMPTY_POSITION); /* Searches for the first empty position */\r\n+      if(position) /* if position==0 => there is no room in the list for another servo */\r\n+      {\r\n+         AttachedServoList[position-1].servo = servoNumber;\r\n+         /* Enables the compare match interrupt */\r\n+         Timer_EnableCompareMatch( AttachedServoList[position-1].associatedTimer,\r\n+                                    AttachedServoList[position-1].associatedCompareMatch,\r\n+                                    Timer_microsecondsToTicks(valueToMicroseconds(AttachedServoList[position-1].value)),\r\n+                                    AttachedServoList[position-1].associatedFunction\r\n+                                 );\r\n+         success = TRUE;\r\n+      }\r\n+   }\r\n+\r\n+   return success;\r\n+}\r\n+\r\n+/*\r\n+ * @brief: removes a servo from the active servos list\r\n+ * @param   servoNumber:   ID of the servo, from 0 to 8\r\n+ * @return: True if servo was successfully detached, False if not.\r\n+ */\r\n+static bool_t servoDetach( servoMap_t servoNumber )\r\n+{\r\n+   bool_t success = FALSE;\r\n+   uint8_t position = 0;\r\n+\r\n+   position = servoIsAttached(servoNumber);\r\n+\r\n+   if(position)\r\n+   {\r\n+      AttachedServoList[position-1].servo = EMPTY_POSITION;\r\n+      AttachedServoList[position-1].value = 0;\r\n+      Timer_DisableCompareMatch( AttachedServoList[position-1].associatedTimer,\r\n+                                 AttachedServoList[position-1].associatedCompareMatch);\r\n+      success = TRUE;\r\n+   }\r\n+   return success;\r\n+}\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+\r\n+/*\r\n+ * @Brief: Initializes the servo peripheral\r\n+ * @param  uint8_t servoNumber\r\n+ * @param  uint8_t config\r\n+ * @return   nothing\r\n+ * @IMPORTANT:   this function uses Timer 1, 2 and 3 to generate the servo signals, so\r\n+ *   they won't be available to use.\r\n+ */\r\n+bool_t servoConfig( servoMap_t servoNumber, servoConfig_t config ){\r\n+\r\n+   bool_t ret_val = 1;\r\n+\r\n+   switch(config){\r\n+\r\n+      case SERVO_ENABLE:\r\n+         servoInitTimers();\r\n+      break;\r\n+\r\n+      case SERVO_DISABLE:\r\n+         ret_val = 0;\r\n+      break;\r\n+\r\n+      case SERVO_ENABLE_OUTPUT:\r\n+         ret_val = servoAttach( servoNumber );\r\n+      break;\r\n+\r\n+      case SERVO_DISABLE_OUTPUT:\r\n+         ret_val = servoDetach( servoNumber );\r\n+      break;\r\n+\r\n+      default:\r\n+         ret_val = 0;\r\n+      break;\r\n+   }\r\n+\r\n+   return ret_val;\r\n+}\r\n+\r\n+/*\r\n+ * @brief:   Tells if the servo is currently active, and its position\r\n+ * @param:   servoNumber:   ID of the servo, from 0 to 8\r\n+ * @param:   value:   value of the servo, from 0 to 180\r\n+ * @return:   position (1 ~ SERVO_TOTALNUMBER), 0 if the element was not found.\r\n+ */\r\n+uint8_t servoIsAttached( servoMap_t servoNumber ){\r\n+\r\n+   uint8_t position = 0, positionInList = 0;\r\n+   while ( (position < SERVO_TOTALNUMBER) &&\r\n+           (servoNumber != AttachedServoList[position].servo) ){\r\n+      position++;\r\n+   }\r\n+\r\n+   if (position < SERVO_TOTALNUMBER){\r\n+      positionInList = position + 1;\r\n+   } else{\r\n+      positionInList = 0;\r\n+   }\r\n+\r\n+   return positionInList;\r\n+}\r\n+\r\n+/*\r\n+ * @brief: read the value of the servo\r\n+ * @param:   servoNumber:   ID of the servo, from 0 to 8\r\n+ * @return: value of the servo (0 ~ 180).\r\n+ *   If an error ocurred, return = EMPTY_POSITION = 255\r\n+ */\r\n+uint16_t servoRead( servoMap_t servoNumber){\r\n+\r\n+   uint8_t position = 0, value = 0;\r\n+   position = servoIsAttached(servoNumber);\r\n+\r\n+   if(position){\r\n+      value = AttachedServoList[position-1].value;\r\n+   }\r\n+   else{\r\n+      value = EMPTY_POSITION;\r\n+   }\r\n+   return value;\r\n+}\r\n+\r\n+/*\r\n+ * @brief: change the value of the servo\r\n+ * @param:   servoNumber:   ID of the servo, from 0 to 8\r\n+ * @param:   value:   value of the servo, from 0 to 180\r\n+ * @return: True if the value was successfully changed, False if not.\r\n+ */\r\n+bool_t servoWrite( servoMap_t servoNumber, uint16_t angle ){\r\n+\r\n+   bool_t success = FALSE;\r\n+   uint8_t position = 0;\r\n+\r\n+   position = servoIsAttached(servoNumber);\r\n+\r\n+   if(position && (angle>=0 && angle<=180)){\r\n+      AttachedServoList[position-1].value = angle;\r\n+      success = TRUE;\r\n+   }\r\n+\r\n+   return success;\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_sleep.c ./sapi/src/sapi_sleep.c\n--- a_OkB2vL/sapi/src/sapi_sleep.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_sleep.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,66 @@\n+/* Copyright 2016, Eric Pernia.\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-08-15 */\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_sleep.h\"\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+\r\n+/*\r\n+ * @Brief: Sleep mode, sleep until next interrupt occur.\r\n+ * @param  nothing\r\n+ * @return nothing\r\n+ */\r\n+void sleepUntilNextInterrupt( void ){\r\n+\r\n+   /* Instert an assembly instruction wfi (wait for interrupt) */\r\n+   __asm volatile( \"wfi\" );\r\n+\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_spi.c ./sapi/src/sapi_spi.c\n--- a_OkB2vL/sapi/src/sapi_spi.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_spi.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,79 @@\n+/* Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part of CIAA Firmware.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/** @brief Brief for this file.\n+ **\n+ **/\n+\n+/** \\addtogroup groupName Group Name\n+ ** @{ */\n+\n+/*\n+ * Initials     Name\n+ * ---------------------------\n+ * ENP          Eric Pernia\n+ *\n+ *  */\n+\n+/*\n+ * modification history (new versions first)\n+ * -----------------------------------------------------------\n+ * 2016-05-02   v0.0.1   ENP   First version\n+ */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_spi.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal data definition]===============================*/\n+\n+/*==================[external data definition]===============================*/\n+\n+/*==================[internal functions definition]==========================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+\n+\n+/*==================[ISR external functions definition]======================*/\n+\n+\n+\n+/** @} doxygen end group definition */\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_tick.c ./sapi/src/sapi_tick.c\n--- a_OkB2vL/sapi/src/sapi_tick.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_tick.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,116 @@\n+/* Copyright 2015-2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part of CIAA Firmware.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2015-09-23 */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_tick.h\"\n+\n+/*==================[macros and definitions]=================================*/\n+\n+/*==================[internal data declaration]==============================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal data definition]===============================*/\n+\n+/*==================[external data definition]===============================*/\n+\n+/* This global variable holds the tick count */\n+volatile tick_t tickCounter;\n+volatile tick_t tickRateMS;\n+volatile sAPI_FuncPtr_t tickHookFunction = sAPI_NullFuncPtr;\n+\n+/*==================[internal functions definition]==========================*/\n+\n+/*==================[external functions definition]==========================*/\n+\n+/* Tick rate configuration 1 to 50 ms */\n+bool_t tickConfig(tick_t tickRateMSvalue, sAPI_FuncPtr_t tickHook ) {\n+\n+   bool_t ret_val = 1;\n+   tick_t tickRateHz = 0;\n+\n+   if( tickHook ){\n+      tickHookFunction = tickHook;\n+   }\n+\n+   if( (tickRateMSvalue >= 1) && (tickRateMSvalue <= 50) ){\n+\n+\t\ttickRateMS = tickRateMSvalue;\n+\n+      /*\n+      tickRateHz = 1000 => 1000 ticks per second =>  1 ms tick\n+      tickRateHz =  200 =>  200 ticks per second =>  5 ms tick\n+      tickRateHz =  100 =>  100 ticks per second => 10 ms tick\n+      tickRateHz =   20 =>   20 ticks per second => 50 ms tick\n+      */\n+      tickRateHz = 1000 / tickRateMSvalue;\n+\n+      /* Init SysTick interrupt, tickRateHz ticks per second */\n+      SysTick_Config( SystemCoreClock / tickRateHz);\n+   }\n+   else{\n+      /* Error, tickRateMS variable not in range (1 <= tickRateMS <= 50) */\n+      ret_val = 0;\n+   }\n+\n+   return ret_val;\n+}\n+\n+\n+/* Read Tick Counter */\n+tick_t tickRead( void ) {\n+   return tickCounter;\n+}\n+\n+\n+/* Write Tick Counter */\n+void tickWrite( tick_t ticks ) {\n+   tickCounter = ticks;\n+}\n+\n+/*==================[ISR external functions definition]======================*/\n+\n+//__attribute__ ((section(\".after_vectors\")))\n+\n+/* SysTick Timer ISR Handler */\n+void SysTick_Handler(void) {\n+   tickCounter++;\n+\n+\t/* Execute Tick Hook function */\n+\t(* tickHookFunction )( 0 );\n+}\n+\n+/*==================[end of file]============================================*/\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_timer.c ./sapi/src/sapi_timer.c\n--- a_OkB2vL/sapi/src/sapi_timer.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_timer.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,289 @@\n+/* Copyright 2016, Ian Olivieri\r\n+ * All rights reserved.\r\n+ *\r\n+ * This file is part sAPI library for microcontrollers.\r\n+ *\r\n+ * Redistribution and use in source and binary forms, with or without\r\n+ * modification, are permitted provided that the following conditions are met:\r\n+ *\r\n+ * 1. Redistributions of source code must retain the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer.\r\n+ *\r\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\r\n+ *    this list of conditions and the following disclaimer in the documentation\r\n+ *    and/or other materials provided with the distribution.\r\n+ *\r\n+ * 3. Neither the name of the copyright holder nor the names of its\r\n+ *    contributors may be used to endorse or promote products derived from this\r\n+ *    software without specific prior written permission.\r\n+ *\r\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\r\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\r\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\r\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\r\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\r\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\r\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\r\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r\n+ * POSSIBILITY OF SUCH DAMAGE.\r\n+ *\r\n+ */\r\n+\r\n+/* Date: 2016-02-10 */\r\n+\r\n+/*\r\n+ * For more information about the Timer peripheral, refer to the Chapter 32 of\r\n+ * the LPC43xx user manual\r\n+ */\r\n+\r\n+/*==================[inclusions]=============================================*/\r\n+\r\n+#include \"sapi_timer.h\"\r\n+\r\n+//#include \"chip.h\"\r\n+//#include \"timer_18xx_43xx.h\"\r\n+/* Specific modules used:\r\n+   #include \"timer_18xx_43xx.h\" for Chip_TIMER functions\r\n+   #include \"rgu_18xx_43xx.h\" for Chip_RGU functions\r\n+   #include \"core_cm4.h\" for NVIC functions\r\n+*/\r\n+\r\n+/*==================[macros and definitions]=================================*/\r\n+\r\n+#define LPC4337_MAX_FREC 204000000 /* Microcontroller frequency */\r\n+#define MAX_SYSCALL_INTERRUPT_PRIORITY 5\r\n+\r\n+/*==================[internal data declaration]==============================*/\r\n+\r\n+typedef struct{\r\n+   LPC_TIMER_T *name;\r\n+   uint32_t RGU; /* Reset Generator Unit */\r\n+   uint32_t IRQn;\r\n+} timerStaticData_t;\r\n+\r\n+typedef struct{\r\n+   voidFunctionPointer_t timerCompareMatchFunctionPointer[4];\r\n+} timerDinamicData_t;\r\n+\r\n+/*==================[internal functions declaration]=========================*/\r\n+\r\n+static void errorOcurred(void);\r\n+static void doNothing(void);\r\n+\r\n+/*==================[internal data definition]===============================*/\r\n+\r\n+/*Timers Static Data, given by the uC libraries*/\r\n+static const timerStaticData_t timer_sd[4] = {\r\n+   { LPC_TIMER0, RGU_TIMER0_RST, TIMER0_IRQn },\r\n+   { LPC_TIMER1, RGU_TIMER1_RST, TIMER1_IRQn },\r\n+   { LPC_TIMER2, RGU_TIMER2_RST, TIMER2_IRQn },\r\n+   { LPC_TIMER3, RGU_TIMER3_RST, TIMER3_IRQn }\r\n+};\r\n+\r\n+/*Timers dynamic data. Function pointers and Compare match frequencies, which can vary.\r\n+ * This is the default initialization*/\r\n+static timerDinamicData_t timer_dd[4] = {\r\n+   {doNothing,errorOcurred,errorOcurred,errorOcurred},\r\n+   {doNothing,errorOcurred,errorOcurred,errorOcurred},\r\n+   {doNothing,errorOcurred,errorOcurred,errorOcurred},\r\n+   {doNothing,errorOcurred,errorOcurred,errorOcurred}\r\n+};\r\n+\r\n+/*==================[external data definition]===============================*/\r\n+\r\n+/*==================[internal functions definition]==========================*/\r\n+\r\n+/* Causes:\r\n+ * User forgot to initialize the functions for the compare match interrupt on Timer_init call\r\n+ */\r\n+static void errorOcurred(void){\r\n+   while(1);\r\n+}\r\n+\r\n+static void doNothing(void){\r\n+}\r\n+\r\n+/*==================[external functions definition]==========================*/\r\n+\r\n+/*\r\n+ * @Brief   Initialize Timer peripheral\r\n+ * @param   timerNumber:   Timer number, 0 to 3\r\n+ * @param   ticks:   Number of ticks required to finish the cycle.\r\n+ * @param   voidFunctionPointer:   function to be executed at the end of the timer cycle\r\n+ * @return   nothing\r\n+ * @note   For the 'ticks' parameter, see function Timer_microsecondsToTicks\r\n+ */\r\n+void Timer_Init( uint8_t timerNumber, uint32_t ticks,\r\n+                 voidFunctionPointer_t voidFunctionPointer){\r\n+   /* Source:\r\n+   http://docs.lpcware.com/lpcopen/v1.03/lpc18xx__43xx_2examples_2periph_2periph__blinky_2blinky_8c_source.html */\r\n+\r\n+   /*If timer period = CompareMatch0 Period = 0 => ERROR*/\r\n+   if (ticks==0){\r\n+      errorOcurred();\r\n+   }\r\n+\r\n+   /* Enable timer clock and reset it */\r\n+   Chip_TIMER_Init(timer_sd[timerNumber].name);\r\n+   Chip_RGU_TriggerReset(timer_sd[timerNumber].RGU);\r\n+   while (Chip_RGU_InReset(timer_sd[timerNumber].RGU)) {}\r\n+   Chip_TIMER_Reset(timer_sd[timerNumber].name);\r\n+\r\n+   /* Update the defalut function pointer name of the Compare match 0*/\r\n+   timer_dd[timerNumber].timerCompareMatchFunctionPointer[TIMERCOMPAREMATCH0] = voidFunctionPointer;\r\n+\r\n+   /* Initialize compare match with the specified ticks (number of counts needed to clear the match counter) */\r\n+   Chip_TIMER_MatchEnableInt(timer_sd[timerNumber].name, TIMERCOMPAREMATCH0);\r\n+   Chip_TIMER_SetMatch(timer_sd[timerNumber].name, TIMERCOMPAREMATCH0, ticks);\r\n+\r\n+   /* Makes Timer Match 0 period the timer period*/\r\n+   Chip_TIMER_ResetOnMatchEnable(timer_sd[timerNumber].name, TIMERCOMPAREMATCH0);\r\n+\r\n+   /*Enable timer*/\r\n+   Chip_TIMER_Enable(timer_sd[timerNumber].name);\r\n+\r\n+   /* Enable timer interrupt */\r\n+   NVIC_SetPriority(timer_sd[timerNumber].IRQn, MAX_SYSCALL_INTERRUPT_PRIORITY+1);\r\n+   NVIC_EnableIRQ(timer_sd[timerNumber].IRQn);\r\n+   NVIC_ClearPendingIRQ(timer_sd[timerNumber].IRQn);\r\n+}\r\n+\r\n+/*\r\n+ * @Brief   Disables timer peripheral\r\n+ * @param   timerNumber:   Timer number, 0 to 3\r\n+ * @return   nothing\r\n+ */\r\n+void Timer_DeInit(uint8_t timerNumber){\r\n+   NVIC_DisableIRQ(timer_sd[timerNumber].IRQn);\r\n+   Chip_TIMER_Disable(timer_sd[timerNumber].name);\r\n+   Chip_TIMER_DeInit(timer_sd[timerNumber].name);\r\n+}\r\n+\r\n+/*\r\n+ * @Brief   Converts a value in microseconds (uS = 1x10^-6 sec) to ticks\r\n+ * @param   uS:   Value in microseconds\r\n+ * @return   Equivalent in Ticks for the LPC4337\r\n+ * @note   Can be used for the second parameter in the Timer_init\r\n+ */\r\n+uint32_t Timer_microsecondsToTicks(uint32_t uS){\r\n+   return (uS*(LPC4337_MAX_FREC/1000000));\r\n+}\r\n+\r\n+/*\r\n+ * @Brief   Enables a compare match in a timer\r\n+ * @param   timerNumber:   Timer number, 0 to 3\r\n+ * @param   compareMatchNumber:   Compare match number, 1 to 3\r\n+ * @param   ticks:   Number of ticks required to reach the compare match.\r\n+ * @param   voidFunctionPointer: function to be executed when the compare match is reached\r\n+ * @return   None\r\n+ * @note   For the 'ticks' parameter, see function Timer_microsecondsToTicks\r\n+ */\r\n+void Timer_EnableCompareMatch( uint8_t timerNumber, uint8_t compareMatchNumber,\r\n+                               uint32_t ticks,\r\n+                               voidFunctionPointer_t voidFunctionPointer){\r\n+\r\n+   timer_dd[timerNumber].timerCompareMatchFunctionPointer[compareMatchNumber] = voidFunctionPointer;\r\n+\r\n+   Chip_TIMER_MatchEnableInt(timer_sd[timerNumber].name, compareMatchNumber);\r\n+   Chip_TIMER_SetMatch(timer_sd[timerNumber].name, compareMatchNumber, ticks);\r\n+}\r\n+\r\n+/*\r\n+ * @brief   Disables a compare match of a timer\r\n+ * @param   timerNumber:   Timer number, 0 to 3\r\n+ * @param   compareMatchNumber:   Compare match number, 1 to 3\r\n+ * @return   None\r\n+ */\r\n+void Timer_DisableCompareMatch( uint8_t timerNumber,\r\n+                                uint8_t compareMatchNumber ){\r\n+\r\n+   timer_dd[timerNumber].timerCompareMatchFunctionPointer[compareMatchNumber] = errorOcurred;\r\n+\r\n+   Chip_TIMER_ClearMatch(timer_sd[timerNumber].name, compareMatchNumber);\r\n+   Chip_TIMER_MatchDisableInt(timer_sd[timerNumber].name, compareMatchNumber);\r\n+}\r\n+\r\n+/*\r\n+ * @Purpose:   Allows the user to change the compare value nº\r\n+ *    'compareMatchNumber' of timer 'timerNumber'.  This is specially useful to\r\n+ *    generate square waves if used in the function for the TIMERCOMPAREMATCH0\r\n+ *    (because that compare match resets the timer counter), which will be\r\n+ *    passed as a parameter when initializing a timer\r\n+ * @note:  The selected time (3rd parameter) must be less than\r\n+ *    TIMERCOMPAREMATCH0's compareMatchTime_uS for the compare match to make the\r\n+ *    interruption\r\n+ */\r\n+void Timer_SetCompareMatch( uint8_t timerNumber,\r\n+                            uint8_t compareMatchNumber,\r\n+                            uint32_t ticks){\r\n+   Chip_TIMER_SetMatch(timer_sd[timerNumber].name, compareMatchNumber,ticks);\r\n+}\r\n+\r\n+/*==================[ISR external functions definition]======================*/\r\n+/*\r\n+ * @Brief:   Executes the functions passed by parameter in the Timer_init,\r\n+ *   at the chosen frequencies\r\n+ */\r\n+void TIMER0_IRQHandler(void){\r\n+\r\n+   uint8_t compareMatchNumber = 0;\r\n+\r\n+   for( compareMatchNumber = TIMERCOMPAREMATCH0;\r\n+        compareMatchNumber <= TIMERCOMPAREMATCH3;\r\n+        compareMatchNumber++ ){\r\n+      if( Chip_TIMER_MatchPending(LPC_TIMER0, compareMatchNumber) ){\r\n+         /*Run the functions saved in the timer dynamic data structure*/\r\n+         (*timer_dd[TIMER0].timerCompareMatchFunctionPointer[compareMatchNumber])();\r\n+         Chip_TIMER_ClearMatch(LPC_TIMER0, compareMatchNumber);\r\n+      }\r\n+   }\r\n+}\r\n+\r\n+void TIMER1_IRQHandler( void ){\r\n+\r\n+   uint8_t compareMatchNumber = 0;\r\n+\r\n+   for( compareMatchNumber = TIMERCOMPAREMATCH0;\r\n+        compareMatchNumber <= TIMERCOMPAREMATCH3;\r\n+        compareMatchNumber++ ){\r\n+      if( Chip_TIMER_MatchPending(LPC_TIMER1, compareMatchNumber) ){\r\n+         /*Run the functions saved in the timer dynamic data structure*/\r\n+         (*timer_dd[TIMER1].timerCompareMatchFunctionPointer[compareMatchNumber])();\r\n+         Chip_TIMER_ClearMatch(LPC_TIMER1, compareMatchNumber);\r\n+      }\r\n+   }\r\n+}\r\n+\r\n+void TIMER2_IRQHandler( void ){\r\n+   uint8_t compareMatchNumber = 0;\r\n+\r\n+   for( compareMatchNumber = TIMERCOMPAREMATCH0;\r\n+        compareMatchNumber <= TIMERCOMPAREMATCH3;\r\n+        compareMatchNumber++ ){\r\n+      if( Chip_TIMER_MatchPending(LPC_TIMER2, compareMatchNumber) ){\r\n+         /*Run the functions saved in the timer dynamic data structure*/\r\n+         (*timer_dd[TIMER2].timerCompareMatchFunctionPointer[compareMatchNumber])();\r\n+         Chip_TIMER_ClearMatch(LPC_TIMER2, compareMatchNumber);\r\n+      }\r\n+   }\r\n+}\r\n+\r\n+/*fixme __attribute__ ((section(\".after_vectors\")))*/\r\n+void TIMER3_IRQHandler( void ){\r\n+\r\n+   uint8_t compareMatchNumber = 0;\r\n+\r\n+   for( compareMatchNumber = TIMERCOMPAREMATCH0;\r\n+        compareMatchNumber <= TIMERCOMPAREMATCH3;\r\n+        compareMatchNumber++ ){\r\n+      if (Chip_TIMER_MatchPending(LPC_TIMER3, compareMatchNumber)){\r\n+         /*Run the functions saved in the timer dynamic data structure*/\r\n+         (*timer_dd[TIMER3].timerCompareMatchFunctionPointer[compareMatchNumber])();\r\n+         Chip_TIMER_ClearMatch(LPC_TIMER3, compareMatchNumber);\r\n+      }\r\n+   }\r\n+}\r\n+\r\n+/*==================[end of file]============================================*/\r\ndiff -u -r --unidirectional-new-file -x '.git*' -x '*.o' -x '*.d' -x '*.elf' -x '*.lst' -x '*.map' -x '.config*' -x '*.conf' -x autoconf.h a_OkB2vL/sapi/src/sapi_uart.c ./sapi/src/sapi_uart.c\n--- a_OkB2vL/sapi/src/sapi_uart.c\t1969-12-31 21:00:00.000000000 -0300\n+++ ./sapi/src/sapi_uart.c\t2017-02-22 20:16:07.000000000 -0300\n@@ -0,0 +1,249 @@\n+/* Copyright 2016, Eric Pernia.\n+ * All rights reserved.\n+ *\n+ * This file is part of CIAA Firmware.\n+ *\n+ * Redistribution and use in source and binary forms, with or without\n+ * modification, are permitted provided that the following conditions are met:\n+ *\n+ * 1. Redistributions of source code must retain the above copyright notice,\n+ *    this list of conditions and the following disclaimer.\n+ *\n+ * 2. Redistributions in binary form must reproduce the above copyright notice,\n+ *    this list of conditions and the following disclaimer in the documentation\n+ *    and/or other materials provided with the distribution.\n+ *\n+ * 3. Neither the name of the copyright holder nor the names of its\n+ *    contributors may be used to endorse or promote products derived from this\n+ *    software without specific prior written permission.\n+ *\n+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE\n+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\n+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS\n+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN\n+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\n+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n+ * POSSIBILITY OF SUCH DAMAGE.\n+ *\n+ */\n+\n+/* Date: 2016-02-26 */\n+\n+/*==================[inclusions]=============================================*/\n+\n+#include \"sapi_uart.h\"\n+\n+#include \"string.h\"\n+\n+/*==================[macros]=================================================*/\n+\n+#define UART_485_LPC LPC_USART0  /* UART0 (RS485/Profibus) */\n+#define UART_USB_LPC LPC_USART2  /* UART2 (USB-UART) */\n+#define UART_232_LPC LPC_USART3  /* UART3 (RS232) */\n+\n+/*==================[typedef]================================================*/\n+\n+/*==================[internal functions declaration]=========================*/\n+\n+/*==================[internal functions definition]==========================*/\n+\n+/*==================[external data declaration]==============================*/\n+\n+/*==================[external functions declaration]=========================*/\n+\n+waitForReceiveStringOrTimeoutState_t waitForReceiveStringOrTimeout(\n+   uartMap_t uart, waitForReceiveStringOrTimeout_t* instance ){\n+\n+   uint8_t receiveByte;\n+\n+   switch( instance->state ){\n+\n+      case UART_RECEIVE_STRING_CONFIG:\n+\n+         delayConfig( &(instance->delay), instance->timeout );\n+\n+         instance->stringIndex = 0;\n+\n+         instance->state = UART_RECEIVE_STRING_RECEIVING;\n+\n+      break;\n+\n+      case UART_RECEIVE_STRING_RECEIVING:\n+\n+         if( uartReadByte( uart, &receiveByte ) ){\n+\n+            // TODO: DEBUG\n+            uartWriteByte( UART_USB, receiveByte );\n+\n+            if( (instance->string)[(instance->stringIndex)] == receiveByte ){\n+\n+               (instance->stringIndex)++;\n+\n+               if( (instance->stringIndex) == (instance->stringSize - 1) ){\n+                  instance->state = UART_RECEIVE_STRING_RECEIVED_OK;\n+               }\n+\n+            }\n+\n+         }\n+\n+         if( delayRead( &(instance->delay) ) ){\n+            instance->state = UART_RECEIVE_STRING_TIMEOUT;\n+         }\n+\n+      break;\n+\n+      case UART_RECEIVE_STRING_RECEIVED_OK:\n+         instance->state = UART_RECEIVE_STRING_CONFIG;\n+      break;\n+\n+      case UART_RECEIVE_STRING_TIMEOUT:\n+         instance->state = UART_RECEIVE_STRING_CONFIG;\n+      break;\n+\n+      default:\n+         instance->state = UART_RECEIVE_STRING_CONFIG;\n+      break;\n+   }\n+\n+   return instance->state;\n+}\n+\n+\n+\n+bool_t waitForReceiveStringOrTimeoutBlocking(\n+   uartMap_t uart, char* string, uint16_t stringSize, tick_t timeout ){\n+\n+   bool_t retVal = TRUE; // True if OK\n+\n+   waitForReceiveStringOrTimeout_t waitText;\n+   waitForReceiveStringOrTimeoutState_t waitTextState;\n+\n+   waitTextState = UART_RECEIVE_STRING_CONFIG;\n+\n+   waitText.state = UART_RECEIVE_STRING_CONFIG;\n+   waitText.string =  string;\n+   waitText.stringSize = stringSize;\n+   waitText.timeout = timeout;\n+\n+   while( waitTextState != UART_RECEIVE_STRING_RECEIVED_OK &&\n+          waitTextState != UART_RECEIVE_STRING_TIMEOUT ){\n+      waitTextState = waitForReceiveStringOrTimeout( uart, &waitText );\n+   }\n+\n+   if( waitTextState == UART_RECEIVE_STRING_TIMEOUT ){\n+      retVal = FALSE;\n+   }\n+\n+   return retVal;\n+}\n+\n+\n+void uartConfig( uartMap_t uart, uint32_t baudRate ){\n+   switch(uart){\n+   case UART_USB:\n+      Chip_UART_Init(UART_USB_LPC);\n+      Chip_UART_SetBaud(UART_USB_LPC, baudRate);  /* Set Baud rate */\n+      Chip_UART_SetupFIFOS(UART_USB_LPC, UART_FCR_FIFO_EN | UART_FCR_TRG_LEV0); /* Modify FCR (FIFO Control Register)*/\n+      Chip_UART_TXEnable(UART_USB_LPC); /* Enable UART Transmission */\n+      Chip_SCU_PinMux(7, 1, MD_PDN, FUNC6);              /* P7_1,FUNC6: UART2_TXD */\n+      Chip_SCU_PinMux(7, 2, MD_PLN|MD_EZI|MD_ZI, FUNC6); /* P7_2,FUNC6: UART2_RXD */\n+\n+      //Enable UART Rx Interrupt\n+      //   Chip_UART_IntEnable(UART_USB_LPC,UART_IER_RBRINT );   //Receiver Buffer Register Interrupt\n+      // Enable UART line status interrupt\n+      //   Chip_UART_IntEnable(UART_USB_LPC,UART_IER_RLSINT ); //LPC43xx User manual page 1118\n+      //   NVIC_SetPriority(USART2_IRQn, 6);\n+      // Enable Interrupt for UART channel\n+      //   NVIC_EnableIRQ(USART2_IRQn);\n+   break;\n+   case UART_232:\n+      Chip_UART_Init(UART_232_LPC);\n+      Chip_UART_SetBaud(UART_232_LPC, baudRate);  /* Set Baud rate */\n+      Chip_UART_SetupFIFOS(UART_232_LPC, UART_FCR_FIFO_EN | UART_FCR_TRG_LEV0); /* Modify FCR (FIFO Control Register)*/\n+      Chip_UART_TXEnable(UART_232_LPC); /* Enable UART Transmission */\n+      Chip_SCU_PinMux(2, 3, MD_PDN, FUNC2);              /* P2_3,FUNC2: UART3_TXD */\n+      Chip_SCU_PinMux(2, 4, MD_PLN|MD_EZI|MD_ZI, FUNC2); /* P2_4,FUNC2: UART3_RXD */\n+   break;\n+   case UART_485:\n+\n+   break;\n+   }\n+}\n+\n+\n+bool_t uartReadByte( uartMap_t uart, uint8_t* receivedByte ){\n+\n+   bool_t retVal = TRUE;\n+\n+   switch(uart){\n+   case UART_USB:\n+      if ( Chip_UART_ReadLineStatus(UART_USB_LPC) & UART_LSR_RDR ) {\n+         *receivedByte = Chip_UART_ReadByte(UART_USB_LPC);\n+      } else{\n+         retVal = FALSE;\n+      }\n+   break;\n+   case UART_232:\n+      if ( Chip_UART_ReadLineStatus(UART_232_LPC) & UART_LSR_RDR ) {\n+         *receivedByte = Chip_UART_ReadByte(UART_232_LPC);\n+      } else{\n+         retVal = FALSE;\n+      }\n+   break;\n+   case UART_485:\n+   break;\n+   }\n+\n+   return retVal;\n+}\n+\n+\n+void uartWriteByte( uartMap_t uart, uint8_t byte ){\n+\n+   switch(uart){\n+   case UART_USB:\n+      while ((Chip_UART_ReadLineStatus(UART_USB_LPC) & UART_LSR_THRE) == 0) {}   // Wait for space in FIFO\n+      Chip_UART_SendByte(UART_USB_LPC, byte);\n+   break;\n+   case UART_232:\n+      while ((Chip_UART_ReadLineStatus(UART_232_LPC) & UART_LSR_THRE) == 0) {}   // Wait for space in FIFO\n+      Chip_UART_SendByte(UART_232_LPC, byte);\n+   break;\n+   case UART_485:\n+   break;\n+   }\n+}\n+\n+\n+void uartWriteString( uartMap_t uart, char* str ){\n+   while(*str != 0){\n+\t  uartWriteByte( uart, (uint8_t)*str );\n+\t  str++;\n+   }\n+}\n+\n+/*==================[ISR external functions definition]======================*/\n+\n+__attribute__ ((section(\".after_vectors\")))\n+\n+/* 0x28 0x000000A0 - Handler for ISR UART0 (IRQ 24) */\n+void UART0_IRQHandler(void){\n+}\n+\n+/* 0x2a 0x000000A8 - Handler for ISR UART2 (IRQ 26) */\n+void UART2_IRQHandler(void){\n+}\n+\n+/* 0x2b 0x000000AC - Handler for ISR UART3 (IRQ 27) */\n+void UART3_IRQHandler(void){\n+   //if (Chip_UART_ReadLineStatus(UART_232) & UART_LSR_RDR) {\n+//      receivedByte = Chip_UART_ReadByte(UART_232);\n+   //}\n+}\n+\n+/*==================[end of file]============================================*/\n"
  },
  {
    "path": "old/searchform.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>searchForm</class>\n <widget class=\"QWidget\" name=\"searchForm\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>744</width>\n    <height>43</height>\n   </rect>\n  </property>\n  <property name=\"autoFillBackground\">\n   <bool>false</bool>\n  </property>\n  <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n   <property name=\"margin\">\n    <number>0</number>\n   </property>\n   <item>\n    <widget class=\"QFrame\" name=\"frame\">\n     <property name=\"autoFillBackground\">\n      <bool>true</bool>\n     </property>\n     <property name=\"frameShape\">\n      <enum>QFrame::StyledPanel</enum>\n     </property>\n     <property name=\"frameShadow\">\n      <enum>QFrame::Raised</enum>\n     </property>\n     <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n      <item>\n       <widget class=\"QLabel\" name=\"label\">\n        <property name=\"text\">\n         <string>&amp;Find</string>\n        </property>\n        <property name=\"buddy\">\n         <cstring>searchText</cstring>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QLineEdit\" name=\"searchText\">\n        <property name=\"frame\">\n         <bool>true</bool>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QPushButton\" name=\"previousButton\">\n        <property name=\"cursor\">\n         <cursorShape>PointingHandCursor</cursorShape>\n        </property>\n        <property name=\"toolTip\">\n         <string>Search previous apperence of the text, upwards</string>\n        </property>\n        <property name=\"text\">\n         <string>Previous</string>\n        </property>\n        <property name=\"autoRepeat\">\n         <bool>true</bool>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QPushButton\" name=\"nextButton\">\n        <property name=\"cursor\">\n         <cursorShape>PointingHandCursor</cursorShape>\n        </property>\n        <property name=\"toolTip\">\n         <string>Search next apperence of the text, downwards</string>\n        </property>\n        <property name=\"text\">\n         <string>Next</string>\n        </property>\n        <property name=\"autoRepeat\">\n         <bool>true</bool>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"caseSensitiveCheckBox\">\n        <property name=\"text\">\n         <string>&amp;Case sensitive</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <widget class=\"QCheckBox\" name=\"wholeWorldsCheckbox\">\n        <property name=\"text\">\n         <string>Whole &amp;words</string>\n        </property>\n       </widget>\n      </item>\n      <item>\n       <spacer name=\"horizontalSpacer\">\n        <property name=\"orientation\">\n         <enum>Qt::Horizontal</enum>\n        </property>\n        <property name=\"sizeType\">\n         <enum>QSizePolicy::Maximum</enum>\n        </property>\n        <property name=\"sizeHint\" stdset=\"0\">\n         <size>\n          <width>40</width>\n          <height>20</height>\n         </size>\n        </property>\n       </spacer>\n      </item>\n      <item>\n       <widget class=\"QToolButton\" name=\"closeButton\">\n        <property name=\"cursor\">\n         <cursorShape>PointingHandCursor</cursorShape>\n        </property>\n        <property name=\"toolTip\">\n         <string>Hide the search bar</string>\n        </property>\n        <property name=\"text\">\n         <string>x</string>\n        </property>\n        <property name=\"autoRaise\">\n         <bool>true</bool>\n        </property>\n        <property name=\"arrowType\">\n         <enum>Qt::NoArrow</enum>\n        </property>\n       </widget>\n      </item>\n     </layout>\n    </widget>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "old/skeleton/bin/ftdi_rules.sh",
    "content": "#!/bin/bash\n\n# Note that the following handles 0, 1 or more arguments (file paths)\n# which can include blanks but uses a bashism; can the same be achieved\n# in POSIX-shell? (FIXME)\n# http://stackoverflow.com/questions/3190818\natexit()\n{\n  if [ -z \"$SKIP\" ] ; then\n    if [ $NUMBER_OF_ARGS -eq 0 ] ; then\n      exec \"${BIN}\"\n    else\n      exec \"${BIN}\" \"${args[@]}\"\n    fi\n  fi\n}\n\nerror()\n{\n  if [ -x /usr/bin/zenity ] ; then\n    LD_LIBRARY_PATH=\"\" zenity --error --text \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/kdialog ] ; then\n    LD_LIBRARY_PATH=\"\" kdialog --msgbox \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/Xdialog ] ; then\n    LD_LIBRARY_PATH=\"\" Xdialog --msgbox \"${1}\" 2>/dev/null\n  else\n    echo \"${1}\"\n  fi\n  exit 1\n}\n\nmsg()\n{\n  if [ -x /usr/bin/zenity ] ; then\n    LD_LIBRARY_PATH=\"\" zenity --info --text \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/kdialog ] ; then\n    LD_LIBRARY_PATH=\"\" kdialog --msgbox \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/Xdialog ] ; then\n    LD_LIBRARY_PATH=\"\" Xdialog --msgbox \"${1}\" 2>/dev/null\n  else\n    echo \"${1}\"\n  fi\n}\n\nif [ \"$(id -u)\" -ne \"0\" ]; then\n    echo \"switching to root\"\n    # move outside path because root cannot access fuse mounted dirs\n    NEWFILE=$(tempfile -s .sh)\n    cp $(readlink -f $0) $(NEWFILE)\n    chmod a+x $(NEWFILE)\n    exec pkexec $(NEWFILE) $*\nelse\n    if [ \"$1\" = \"--install\" ]; then\n        echo \"Install FTDI drivers\"\n        OOCD_RULE=$(<<EOF\nACTION!=\"add|change\", GOTO=\"openocd_rules_end\"\nSUBSYSTEM!=\"usb\", GOTO=\"openocd_rules_end\"\nENV{DEVTYPE}!=\"usb_device\", GOTO=\"openocd_rules_end\"\nATTRS{idVendor}==\"0406\", ATTRS{idProduct}==\"6010\", MODE=\"666\", GROUP=\"plugdev\"\nLABEL=\"openocd_rules_end\"\nEOF\n        echo ${OOCD_RULE} > /etc/udev/rules.d/60-openocd.rules &&\n        udevadm control -R &&\n        msg \"Install FTDI driver OK\" ||\n        msg \"Install FTDI driver FAIL\"\n        exit 0\n    elif [ \"$1\" = \"--uninstall\" ]; then\n        echo \"Uninstall FTDI drivers\"\n        rm -f /etc/udev/rules.d/60-openocd.rules &&\n        udevadm control -R &&\n        msg \"Uninstall FTDI driver OK\" ||\n        msg \"Uninstall FTDI driver FAIL\";\n        exit 0\n    fi\nfi\n"
  },
  {
    "path": "old/skeleton/bin/qt.conf",
    "content": "[Paths]\nPrefix=../\nLibraries=lib\nPlugins=plugins\n"
  },
  {
    "path": "old/skeleton/desktop-integration.sh",
    "content": "#!/bin/sh\nset -e\n\nDEBUG=\n# Be verbose if $DEBUG=1 is set\nif [ ! -z \"$DEBUG\" ] ; then\n  env\n  set -x\nfi\n\nTHIS=\"$0\"\nargs=$(echo \"$@\") # http://stackoverflow.com/questions/3190818/\nNUMBER_OF_ARGS=\"$#\"\n\n# Please do not change $VENDORPREFIX as it will allow for desktop files\n# belonging to AppImages to be recognized by future AppImageKit components\n# such as desktop integration daemons\nVENDORPREFIX=appimagekit\n\nif [ -z $APPDIR ] ; then\n    # Find the AppDir. It is the directory that contains AppRun.\n    # This assumes that this script resides inside the AppDir or a subdirectory.\n    # If this script is run inside an AppImage, then the AppImage runtime\n    # likely has already set $APPDIR\n    APPDIR=$(readlink -f $(dirname $(readlink -f $THIS))/../../)\nfi\n\nFILENAME=\"$(readlink -f \"${THIS}\")\"\nDIRNAME=$(dirname $FILENAME)\n\nDESKTOPFILE=$(find \"$APPDIR\" -maxdepth 1 -name \"*.desktop\" | head -n 1)\nDESKTOPFILE_NAME=$(basename \"${DESKTOPFILE}\")\n\nAPP_FULL=$(sed -n -e 's/^Name=//p' \"${DESKTOPFILE}\" | head -n 1)\nAPP=$(echo \"$APP_FULL\" | tr -c -d '[:alnum:]')\nif [ -z \"$APP\" ] || [ -z \"$APP_FULL\" ] ; then\n    APP=$(echo \"$DESKTOPFILE_NAME\" | sed -e 's/.desktop//g')\n    APP_FULL=\"$APP\"\nfi\n\n# Install the icon files for the application; TODO: scalable\nICONS=$(find \"${APPDIR}\" -iwholename \"*/${APP}.png\" 2>/dev/null || true)\nif [ -z $ICONS ]; then\n    ICONS=$(find \"${APPDIR}\" -name $(grep \"^Icon=\" $DESKTOPFILE |head -n 1|cut -f 2 -d '=').png)\nfi\n\ncheck_dep() {\n    DEP=$1\n    if [ -z $(which $DEP) ] ; then\n        echo \"$DEP is missing. Skipping ${THIS}.\"\n        exit 0\n    fi\n}\n\ncheck_dep xdg-icon-resource\ncheck_dep xdg-desktop-menu\n\n# Determine where the desktop file should be installed\nif [ $(id -u) -ne 0 ]; then\n    DESTINATION_DIR_DESKTOP=\"$HOME/.local/share/applications\"\n    STAMP_DIR=\"$HOME/.local/share/$VENDORPREFIX\"\n    SYSTEM_WIDE=\"\"\nelse\n    # TODO: Check $XDG_DATA_DIRS\n    DESTINATION_DIR_DESKTOP=\"/usr/local/share/applications\"\n    STAMP_DIR=\"/etc/$VENDORPREFIX\"\n    SYSTEM_WIDE=\"--mode system\" # for xdg-mime and xdg-icon-resource\nfi\n\nusage() {\n    echo \"Usage: $0 [--install | --uninstall]\"\n    exit 1\n}\n\ncheck_prevent()\n{\n  FILE=$1\n  if [ -e \"$FILE\" ] ; then\n    echo \"Desktop integration disabled. For enable it remove $FILE.\"\n    exit 0\n  fi\n}\n\nif [ $# -eq 0 ]; then\n    usage\nfi\n\nif [ \"x$1\" = \"x--install\" ]; then\n    # Exit immediately if one of these files is present\n    # (e.g., because the desktop environment wants to handle desktop integration itself)\n    check_prevent \"$HOME/.local/share/$VENDORPREFIX/no_desktopintegration\"\n    check_prevent \"/usr/share/$VENDORPREFIX/no_desktopintegration\"\n    check_prevent \"/etc/$VENDORPREFIX/no_desktopintegration\"\n    if [ -z \"$APPIMAGE\" ] ; then\n        APPIMAGE=\"$APPDIR/AppRun\"\n        # Not running from within an AppImage; hence using the AppRun for Exec=\n    fi\n\n    ICONFILE=\"$APPDIR/.DirIcon\"\n\n    # $XDG_DATA_DIRS contains the default paths /usr/local/share:/usr/share\n    # desktop file has to be installed in an applications subdirectory\n    # of one of the $XDG_DATA_DIRS components\n    if [ -z \"$XDG_DATA_DIRS\" ] ; then\n        echo \"\\$XDG_DATA_DIRS is missing. Please run ${THIS} from within an AppImage.\"\n        exit 0\n    fi\n\n    # Check if the desktop file is already there\n    # and if so, whether it points to the same AppImage\n    if [ -e \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" ] ; then\n        # echo \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME already there\"\n        EXEC=$(grep \"^Exec=\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" | head -n 1 | cut -d \" \" -f 1)\n        # echo $EXEC\n        if [ \"Exec=\\\"$APPIMAGE\\\"\" == \"$EXEC\" ] ; then\n            echo \"Already installed. Finished\"\n            exit 0\n        fi\n    fi\n\n    # desktop-file-install is supposed to install .desktop files to the user's\n    # applications directory when run as a non-root user,\n    # and to /usr/share/applications if run as root\n    # but that does not really work for me...\n    #\n    # For Exec we must use quotes\n    # For TryExec quotes is not supported, so, space must be replaced to \\s\n    # https://askubuntu.com/questions/175404/how-to-add-space-to-exec-path-in-a-thumbnailer-descrption/175567\n    echo \"Installing into system...\"\n    RESOURCE_NAME=$(echo \"$VENDORPREFIX-$DESKTOPFILE_NAME\" | sed -e 's/.desktop//g')\n    desktop-file-install --rebuild-mime-info-cache \\\n        --vendor=$VENDORPREFIX --set-key=Exec --set-value=\"\\\"${APPIMAGE}\\\" %U\" \\\n        --set-key=X-AppImage-Comment --set-value=\"Generated by ${THIS}\" \\\n        --set-icon=\"$RESOURCE_NAME\" --set-key=TryExec --set-value=${APPIMAGE// /\\\\s} \"$DESKTOPFILE\" \\\n        --dir \"$DESTINATION_DIR_DESKTOP\"\n    chmod a+x \"$DESTINATION_DIR_DESKTOP/\"*\n    echo $RESOURCE_NAME\n    echo $APP\n    echo \"Icons for ${APP} on ${APPDIR} ${ICONS}\"\n    for ICON in $ICONS ; do\n        ICON_SIZE=256\n        echo \"Installing ${ICON} to size ${ICON_SIZE} on resource ${RESOURCE_NAME}\"\n        xdg-icon-resource install --context apps --size ${ICON_SIZE} \"${ICON}\" \"${RESOURCE_NAME}\"\n    done\n\n    # Install mime type\n    find \"${APPDIR}/usr/share/mime/\" -type f -name *xml -exec xdg-mime install $SYSTEM_WIDE --novendor {} \\; 2>/dev/null || true\n\n    # Install the icon files for the mime type; TODO: scalable\n    ICONS=$(find \"${APPDIR}\" -iwholename \"*/mimetypes/*.png\" 2>/dev/null || true)\n    for ICON in $ICONS ; do\n        ICON_SIZE=$(echo \"${ICON}\" | rev | cut -d \"/\" -f 3 | rev | cut -d \"x\" -f 1)\n        xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} \"${ICON}\" $(basename $ICON | sed -e 's/.png//g')\n    done\n\n    xdg-desktop-menu forceupdate\n    gtk-update-icon-cache # for MIME\n    echo \"Install $APPIMAGE to desktop\"\nelif [ \"x$1\" = \"x--uninstall\" ]; then\n    echo \"Uninstalling from destkop...\"\n    rm -f \"$STAMP_DIR/${APP}_no_desktopintegration\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n    for ICON in $ICONS ; do\n        ICON_SIZE=256\n        echo \"Uninstalling ${ICON} to size ${ICON_SIZE} on resource ${RESOURCE_NAME}\"\n        xdg-icon-resource uninstall --context apps --size ${ICON_SIZE} \"${ICON}\" \"${RESOURCE_NAME}\"\n    done\n    xdg-desktop-menu forceupdate\n    gtk-update-icon-cache\n    echo \"Done.\"\nelse\n    echo \"Unrecognized option $1\"\n    usage\nfi\n"
  },
  {
    "path": "old/skeleton/embedded-ide.hardconf",
    "content": "{\n\t\"tools\" : [\n\t\t{ \"name\": \"Install FTDI drivers\", \"command\": \"bash {{appExecPath}}/ftdi-tools.sh --install\" },\n\t\t{ \"name\": \"Uninstall FTDI drivers\", \"command\": \"bash {{appExecPath}}/ftdi-tools.sh --uninstall\" },\n\t\t{ \"name\": \"Add desktop integration\", \"command\": \"bash {{appExecPath}}/desktop-integration.sh --install\" },\n\t\t{ \"name\": \"Remove desktop integration\", \"command\": \"bash {{appExecPath}}/desktop-integration.sh --uninstall\" }\n\t]\n}\n"
  },
  {
    "path": "old/skeleton/embedded-ide.sh",
    "content": "#!/bin/sh\nAPP_DIR=`dirname $0`\nAPP_DIR=`cd \"${APP_DIR}\";pwd`\nexport PATH=${APP_DIR}/bin:${PATH}\nexport LD_LIBRARY_PATH=\"${APP_DIR}/lib\":\nfor v in $(env | grep QT_ | cut -f 1 -d '=')\ndo\n        export $v=\ndone\nexec \"${APP_DIR}/bin/embedded-ide\" \"$@\"\n"
  },
  {
    "path": "old/skeleton/embedded-ide.sh.wrapper",
    "content": "#!/bin/bash\n\n# The purpose of this script is to provide lightweight desktop integration\n# into the host system without special help from the host system.\n# If you want to use it, then place this in usr/bin/$APPNAME.wrapper\n# and set it as the Exec= line of the .desktop file in the AppImage.\n#\n# For example, to install the appropriate icons for Scribus,\n# put them into the AppDir at the following locations:\n#\n# ./usr/share/icons/default/128x128/apps/scribus.png\n# ./usr/share/icons/default/128x128/mimetypes/application-vnd.scribus.png\n#\n# Note that the filename application-vnd.scribus.png is derived from\n# and must be match MimeType=application/vnd.scribus; in scribus.desktop\n# (with \"/\" characters replaced by \"-\").\n#\n# Then, change Exec=scribus to Exec=scribus.wrapper and place the script\n# below in usr/bin/scribus.wrapper and make it executable.\n# When you run AppRun, then AppRun runs the wrapper script below\n# which in turn will run the main application.\n#\n# TODO:\n# Handle multiple versions of the same AppImage?\n# Handle removed AppImages? Currently we are just setting TryExec=\n# See http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DELETE\n# Possibly move this to the C runtime that is part of every AppImage?\n\n# Exit on errors\nset -e\n\n# Be verbose if $DEBUG=1 is set\nif [ ! -z \"$DEBUG\" ] ; then\n  env\n  set -x\nfi\n\nTHIS=\"$0\"\nargs=(\"$@\") # http://stackoverflow.com/questions/3190818/\nNUMBER_OF_ARGS=\"$#\"\n\n# Please do not change $VENDORPREFIX as it will allow for desktop files\n# belonging to AppImages to be recognized by future AppImageKit components\n# such as desktop integration daemons\nVENDORPREFIX=appimagekit\n\nfind-up () {\n  path=\"$(dirname \"$(readlink -f \"${THIS}\")\")\"\n  while [[ \"$path\" != \"\" && ! -e \"$path/$1\" ]]; do\n    path=${path%/*}\n  done\n  # echo \"$path\"\n}\n\nif [ -z $APPDIR ] ; then\n  # Find the AppDir. It is the directory that contains AppRun.\n  # This assumes that this script resides inside the AppDir or a subdirectory.\n  # If this script is run inside an AppImage, then the AppImage runtime\n  # likely has already set $APPDIR\n  APPDIR=$(find-up \"AppRun\")\nfi\n\nFILENAME=\"$(readlink -f \"${THIS}\")\"\nDIRNAME=$(dirname $FILENAME)\n\nDESKTOPFILE=$(find \"$APPDIR\" -maxdepth 1 -name \"*.desktop\" | head -n 1)\nDESKTOPFILE_NAME=$(basename \"${DESKTOPFILE}\")\n\nAPP_FULL=$(sed -n -e 's/^Name=//p' \"${DESKTOPFILE}\" | head -n 1)\nAPP=$(echo \"$APP_FULL\" | tr -c -d '[:alnum:]')\nif [ -z \"$APP\" ] || [ -z \"$APP_FULL\" ] ; then\n  APP=$(echo \"$DESKTOPFILE_NAME\" | sed -e 's/.desktop//g')\n  APP_FULL=\"$APP\"\nfi\n\nRETURN=\"yes\"\n\nif [[ \"$FILENAME\" != *.wrapper ]] ; then\n  echo \"${THIS} is not named correctly. It should be named \\$Exec.wrapper\"\n  exit 0\nfi\n\nBIN=$(echo \"$FILENAME\" | sed -e 's|.wrapper||g')\nif [[ ! -f \"$BIN\" ]] ; then\n  echo \"$BIN not found\"\n  exit 0\nfi\n\ntrap atexit EXIT\n\n# Note that the following handles 0, 1 or more arguments (file paths)\n# which can include blanks but uses a bashism; can the same be achieved\n# in POSIX-shell? (FIXME)\n# http://stackoverflow.com/questions/3190818\natexit()\n{\n  if [ -z \"$SKIP\" ] ; then\n    if [ $NUMBER_OF_ARGS -eq 0 ] ; then\n      exec \"${BIN}\"\n    else\n      exec \"${BIN}\" \"${args[@]}\"\n    fi\n  fi\n}\n\nerror()\n{\n  if [ -x /usr/bin/zenity ] ; then\n    LD_LIBRARY_PATH=\"\" zenity --error --text \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/kdialog ] ; then\n    LD_LIBRARY_PATH=\"\" kdialog --msgbox \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/Xdialog ] ; then\n    LD_LIBRARY_PATH=\"\" Xdialog --msgbox \"${1}\" 2>/dev/null\n  else\n    echo \"${1}\"\n  fi\n  exit 1\n}\n\nmsg()\n{\n  if [ -x /usr/bin/zenity ] ; then\n    LD_LIBRARY_PATH=\"\" zenity --info --text \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/kdialog ] ; then\n    LD_LIBRARY_PATH=\"\" kdialog --msgbox \"${1}\" 2>/dev/null\n  elif [ -x /usr/bin/Xdialog ] ; then\n    LD_LIBRARY_PATH=\"\" Xdialog --msgbox \"${1}\" 2>/dev/null\n  else\n    echo \"${1}\"\n  fi\n}\n\nexec_as_root()\n{\n    #if [ -x /usr/bin/gksudo ] ; then\n    #    LD_LIBRARY_PATH=\"\" /usr/bin/gksudo \"$@\"\n    if [ -x /usr/bin/kdesudo ] ; then\n        LD_LIBRARY_PATH=\"\" /usr/bin/kdesudo \"$@\"\n    else\n        echo \"Cannot exec <<${@}>> as root\"\n    fi\n}\n\nyesno()\n{\n  TITLE=$1\n  TEXT=$2\n  if [ -x /usr/bin/zenity ] ; then\n    LD_LIBRARY_PATH=\"\" zenity --question --title=\"$TITLE\" --text=\"$TEXT\" 2>/dev/null && RETURN=\"yes\" || RETURN=\"no\"\n  elif [ -x /usr/bin/kdialog ] ; then\n    LD_LIBRARY_PATH=\"\" kdialog --caption \"\" --title \"$TITLE\" -yesno \"$TEXT\" && RETURN=\"yes\" || RETURN=\"no\"\n  elif [ -x /usr/bin/Xdialog ] ; then\n    LD_LIBRARY_PATH=\"\" Xdialog --title \"$TITLE\" --clear --yesno \"$TEXT\" 10 80 && RETURN=\"yes\" || RETURN=\"no\"\n  else\n    echo \"zenity, kdialog, Xdialog missing. Skipping ${THIS}.\"\n    exit 0\n  fi\n}\n\ncheck_prevent()\n{\n  FILE=$1\n  if [ -e \"$FILE\" ] ; then\n    exit 0\n  fi\n}\n\ncheck_dep()\n{\n  DEP=$1\n  if [ -z $(which $DEP) ] ; then\n    echo \"$DEP is missing. Skipping ${THIS}.\"\n    exit 0\n  fi\n}\n\n# Determine where the desktop file should be installed\nif [[ $EUID -ne 0 ]]; then\n   DESTINATION_DIR_DESKTOP=\"$HOME/.local/share/applications\"\n   STAMP_DIR=\"$HOME/.local/share/$VENDORPREFIX\"\n   SYSTEM_WIDE=\"\"\nelse\n   # TODO: Check $XDG_DATA_DIRS\n   DESTINATION_DIR_DESKTOP=\"/usr/local/share/applications\"\n   STAMP_DIR=\"/etc/$VENDORPREFIX\"\n   SYSTEM_WIDE=\"--mode system\" # for xdg-mime and xdg-icon-resource\nfi\n\n# Remove desktop integration for this AppImage\nif [ \"x$1\" = \"x--remove-appimage-desktop-integration\" ] ; then\n  SKIP=\"yes\"\n  rm -f \"$STAMP_DIR/${APP}_no_desktopintegration\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n  check_dep xdg-desktop-menu\n  xdg-desktop-menu forceupdate\n  exit 0\nelif [ \"x$1\" = \"x--install-ftdi\" ] ; then\n  SKIP=\"yes\"\n  echo \"Install FTDI drivers\"\n  OOCD_RULE=$(<<EOF\nACTION!=\"add|change\", GOTO=\"openocd_rules_end\"\nSUBSYSTEM!=\"usb\", GOTO=\"openocd_rules_end\"\nENV{DEVTYPE}!=\"usb_device\", GOTO=\"openocd_rules_end\"\nATTRS{idVendor}==\"0406\", ATTRS{idProduct}==\"6010\", MODE=\"666\", GROUP=\"plugdev\"\nLABEL=\"openocd_rules_end\"\nEOF\n)\n  echo ${OOCD_RULE} > /etc/udev/rules.d/60-openocd.rules &&\n  udevadm control -R &&\n  msg \"Install FTDI driver OK\" ||\n  msg \"Install FTDI driver FAIL\"\n  exit 0\nelif [ \"x$1\" = \"x--uninstall-ftdi\" ] ; then\n  SKIP=\"yes\"\n  echo \"Uninstall FTDI drivers\"\n  rm -f /etc/udev/rules.d/60-openocd.rules &&\n  udevadm control -R &&\n  msg \"Uninstall FTDI driver OK\" ||\n  msg \"Uninstall FTDI driver FAIL\" ||\n  exit 0\nfi\n\n# Exit immediately if one of these files is present\n# (e.g., because the desktop environment wants to handle desktop integration itself)\ncheck_prevent \"$HOME/.local/share/$VENDORPREFIX/no_desktopintegration\"\ncheck_prevent \"/usr/share/$VENDORPREFIX/no_desktopintegration\"\ncheck_prevent \"/etc/$VENDORPREFIX/no_desktopintegration\"\n\n# Exit immediately if appimaged is running\npidof appimaged >/dev/null 2>&1 && exit 0\n\n# Exit immediately if $DESKTOPINTEGRATION is not empty\nif [ ! -z \"$DESKTOPINTEGRATION\" ] ; then\n  exit 0\nfi\n\n# Check whether dependencies are present in base system (we do not bundle these)\n# http://cgit.freedesktop.org/xdg/desktop-file-utils/\ncheck_dep desktop-file-validate\ncheck_dep update-desktop-database\ncheck_dep desktop-file-install\ncheck_dep xdg-icon-resource\ncheck_dep xdg-mime\ncheck_dep xdg-desktop-menu\n\n# Exit immediately if one of these files is present (disabled per app)\ncheck_prevent \"$HOME/.local/share/$VENDORPREFIX/${APP}_no_desktopintegration\"\ncheck_prevent \"/usr/share/$VENDORPREFIX/${APP}_no_desktopintegration\"\ncheck_prevent \"/etc/$VENDORPREFIX/${APP}_no_desktopintegration\"\n\nif [ ! -f \"$DESKTOPFILE\" ] ; then\n  echo \"Desktop file is missing. Please run ${THIS} from within an AppImage.\"\n  exit 0\nfi\n\nif [ -z \"$APPIMAGE\" ] ; then\n  APPIMAGE=\"$APPDIR/AppRun\"\n  # Not running from within an AppImage; hence using the AppRun for Exec=\nfi\n\nICONFILE=\"$APPDIR/.DirIcon\"\n\n# $XDG_DATA_DIRS contains the default paths /usr/local/share:/usr/share\n# desktop file has to be installed in an applications subdirectory\n# of one of the $XDG_DATA_DIRS components\nif [ -z \"$XDG_DATA_DIRS\" ] ; then\n  echo \"\\$XDG_DATA_DIRS is missing. Please run ${THIS} from within an AppImage.\"\n  exit 0\nfi\n\n# Check if the desktop file is already there\n# and if so, whether it points to the same AppImage\nif [ -e \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" ] ; then\n  # echo \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME already there\"\n  EXEC=$(grep \"^Exec=\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" | head -n 1 | cut -d \" \" -f 1)\n  # echo $EXEC\n  if [ \"Exec=\\\"$APPIMAGE\\\"\" == \"$EXEC\" ] ; then\n    exit 0\n  fi\nfi\n\n# We ask the user only if we have found no reason to skip until here\nif [ -z \"$SKIP\" ] ; then\n  yesno \"Install\" \"Would you like to integrate $APPIMAGE with your system?\\n\\nThis will add it to your applications menu and install icons.\\nIf you don't do this you can still launch the application by double-clicking on the AppImage.\"\nfi\n\nif [ \"$RETURN\" = \"no\" ] ; then\n  yesno \"Disable question?\" \"Should this question be permanently disabled for $APP?\\n\\nTo re-enable this question you have to delete\\n\\\"$STAMP_DIR/${APP}_no_desktopintegration\\\"\"\n  if [ \"$RETURN\" = \"yes\" ] ; then\n    mkdir -p \"$STAMP_DIR\"\n    touch \"$STAMP_DIR/${APP}_no_desktopintegration\"\n  fi\n  exit 0\nfi\n\n# If the user has agreed, rewrite and install the desktop file, and the MIME information\nif [ -z \"$SKIP\" ] ; then\n  # desktop-file-install is supposed to install .desktop files to the user's\n  # applications directory when run as a non-root user,\n  # and to /usr/share/applications if run as root\n  # but that does not really work for me...\n  #\n  # For Exec we must use quotes\n  # For TryExec quotes is not supported, so, space must be replaced to \\s\n  # https://askubuntu.com/questions/175404/how-to-add-space-to-exec-path-in-a-thumbnailer-descrption/175567\n  RESOURCE_NAME=$(echo \"$VENDORPREFIX-$DESKTOPFILE_NAME\" | sed -e 's/.desktop//g')\n  desktop-file-install --rebuild-mime-info-cache \\\n    --vendor=$VENDORPREFIX --set-key=Exec --set-value=\"\\\"${APPIMAGE}\\\" %U\" \\\n    --set-key=X-AppImage-Comment --set-value=\"Generated by ${THIS}\" \\\n    --set-icon=\"$RESOURCE_NAME\" --set-key=TryExec --set-value=${APPIMAGE// /\\\\s} \"$DESKTOPFILE\" \\\n    --dir \"$DESTINATION_DIR_DESKTOP\"\n  chmod a+x \"$DESTINATION_DIR_DESKTOP/\"*\n  echo $RESOURCE_NAME\n  echo $APP\n\n  # delete \"Actions\" entry and add an \"Uninstall\" action\n  echo $(date)\n  sed -i -e \"s/XXX_APP_FULL_XXX/$APP_FULL/\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n  sed -i -e \"s!XXX_APPIMAGE_XXX!\\\"$APPIMAGE\\\"!\" \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n  #sed -i -e '/^Actions=/d' \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\"\n  #cat >> \"$DESTINATION_DIR_DESKTOP/$VENDORPREFIX-$DESKTOPFILE_NAME\" << EOF\n  #\n  #\n  #EOF\n\n  # Install the icon files for the application; TODO: scalable\n  ICONS=$(find \"${APPDIR}\" -iwholename \"*/${APP}.png\" 2>/dev/null || true)\n  echo \"Icons for ${APP} on ${APPDIR} ${ICONS}\"\n  for ICON in $ICONS ; do\n    ICON_SIZE=256\n    echo \"Installing ${ICON} to size ${ICON_SIZE} on resource ${RESOURCE_NAME}\"\n    xdg-icon-resource install --context apps --size ${ICON_SIZE} \"${ICON}\" \"${RESOURCE_NAME}\"\n  done\n\n  # Install mime type\n  find \"${APPDIR}/usr/share/mime/\" -type f -name *xml -exec xdg-mime install $SYSTEM_WIDE --novendor {} \\; 2>/dev/null || true\n\n  # Install the icon files for the mime type; TODO: scalable\n  ICONS=$(find \"${APPDIR}\" -iwholename \"*/mimetypes/*.png\" 2>/dev/null || true)\n  for ICON in $ICONS ; do\n    ICON_SIZE=$(echo \"${ICON}\" | rev | cut -d \"/\" -f 3 | rev | cut -d \"x\" -f 1)\n    xdg-icon-resource install --context mimetypes --size ${ICON_SIZE} \"${ICON}\" $(basename $ICON | sed -e 's/.png//g')\n  done\n\n  xdg-desktop-menu forceupdate\n  gtk-update-icon-cache # for MIME\nfi\n"
  },
  {
    "path": "old/skeleton/ftdi-tools.sh",
    "content": "#!/bin/bash\nU=$(id -u)\necho \"Execute as user $U\"\n\n# check for root\nif [ $U -ne 0 ]; then\n    echo \"Re-exec as root...\"\n    tmpFile=$(tempfile -m 0755 -p ftdi-tools_ -s .sh)\n    SELF=$(readlink -f $0)\n    cat $SELF > $tmpFile\n    pkexec $tmpFile $*\n    rm $tmpFile\n    exit 0\nfi\n\nif [ \"x$1\" = \"x--install\" ] ; then\n  echo \"Install FTDI drivers\"\n  UDEV_FILE=/etc/udev/rules.d/60-openocd.rules\n  cat > $UDEV_FILE <<EOF\nACTION!=\"add|change\", GOTO=\"openocd_rules_end\"\nSUBSYSTEM!=\"usb\", GOTO=\"openocd_rules_end\"\nENV{DEVTYPE}!=\"usb_device\", GOTO=\"openocd_rules_end\"\nATTRS{idVendor}==\"0406\", ATTRS{idProduct}==\"6010\", MODE=\"666\", GROUP=\"plugdev\"\nLABEL=\"openocd_rules_end\"\nEOF\n  udevadm control -R &&\n  echo \"Install FTDI driver OK\" ||\n  echo \"Install FTDI driver FAIL\"\n  exit 0\nelif [ \"x$1\" = \"x--uninstall\" ] ; then\n  SKIP=\"yes\"\n  echo \"Uninstall FTDI drivers\"\n  rm -f /etc/udev/rules.d/60-openocd.rules &&\n  udevadm control -R &&\n  echo \"Uninstall FTDI driver OK\" ||\n  echo \"Uninstall FTDI driver FAIL\" ||\n  exit 0\nfi\n"
  },
  {
    "path": "old/taglist.cpp",
    "content": "#include \"taglist.h\"\n\nTagList::TagList(QWidget *parent) : QListWidget (parent)\n{\n    setAlternatingRowColors(true);\n}\n\nvoid TagList::setTagList(const QList<ETags::Tag> &tags)\n{\n    for(const auto& t: tags) {\n        auto item = new QListWidgetItem(this);\n        item->setText(QString(\"%2 (%3):\\n%1\")\n                      .arg(t.decl)\n                      .arg(t.file)\n                      .arg(t.line));\n        item->setData(Qt::UserRole, QVariant::fromValue(t));\n    }\n    setMinimumWidth(sizeHintForColumn(0) + 2 + frameWidth());\n}\n\nETags::Tag TagList::selectedTag() const\n{\n    QList<QListWidgetItem*> sel = selectedItems();\n    if (sel.count() > 0) {\n        return qvariant_cast<ETags::Tag>(sel.at(0)->data(Qt::UserRole));\n    } else {\n        return ETags::Tag();\n    }\n}\n"
  },
  {
    "path": "old/taglist.h",
    "content": "#ifndef TAGLIST_H\n#define TAGLIST_H\n\n#include <QListWidget>\n#include <QList>\n\n#include \"etags.h\"\n\nclass TagList : public QListWidget\n{\npublic:\n    TagList(QWidget *parent = 0l);\n    void setTagList(const QList<ETags::Tag> &tags);\n\n    ETags::Tag selectedTag() const;\n};\n\n#endif // TAGLIST_H\n"
  },
  {
    "path": "old/targetupdatediscover.cpp",
    "content": "#include \"targetupdatediscover.h\"\n\n#include <QRegularExpression>\n#include <QRegularExpressionMatch>\n#include <QProcess>\n#include <QFileInfo>\n#include <QDir>\n#include <QtConcurrent>\n\n#include <QtDebug>\n\nTargetUpdateDiscover::TargetUpdateDiscover(QObject *parent) :\n    QObject(parent), proc(new QProcess(this))\n{\n    connect(proc, SIGNAL(finished(int)), this, SLOT(finish(int)));\n}\n\nvoid TargetUpdateDiscover::start(const QString& project)\n{\n    QFileInfo f(project);\n    if (f.absoluteDir().exists()) {\n        QProcessEnvironment env = proc->processEnvironment();\n        env.insert(\"LANG\", \"C\");\n        proc->setProcessEnvironment(env);\n        proc->setWorkingDirectory(f.absolutePath());\n        proc->start(\"make\", QStringList()\n                    << \"-B\"\n                    << \"-p\"\n                    << \"-r\"\n                    << \"-n\"\n                    << \"-f\"\n                    << f.fileName());\n    }\n}\n\nstatic QHash<QString, QString> findAllTargets(const QString& text) {\n    QHash<QString, QString> map;\n    QRegularExpression re(R\"(^([a-zA-Z0-9 \\t\\\\\\/_\\.\\:\\-]*?):(?!=)\\s*([^#\\r\\n]*?)\\s*$)\",\n                          QRegularExpression::MultilineOption);\n    QRegularExpressionMatchIterator it = re.globalMatch(text);\n    while(it.hasNext()) {\n        QRegularExpressionMatch me = it.next();\n        map.insert(me.captured(1), me.captured(2));\n    }\n    return map;\n}\n\nstatic QStringList filterTargetHeuristic(const QStringList& all)\n{\n    QStringList targets;\n    QRegularExpression re(\"^[a-zA-Z0-9_\\\\-]+$\");\n    for(const auto& target: all) {\n        if (target == QString(\"Makefile\"))\n            continue;\n        QRegularExpressionMatch m = re.match(target);\n        if (m.hasMatch())\n            targets.append(target);\n    }\n    return targets;\n}\n\nstatic QStringList findPosiblePrefixes(const QString& text)\n{\n    QSet<QString> set;\n    QRegularExpression re(R\"(\\s?([a-zA-Z0-9\\-\\_]+\\-)(?:gcc|g\\+\\+|clang|cc|cxx|c\\+\\+)\\s+)\",\n                          QRegularExpression::MultilineOption);\n    QRegularExpressionMatchIterator it = re.globalMatch(text);\n    while(it.hasNext()) {\n        QRegularExpressionMatch me = it.next();\n        set.insert(me.captured(1));\n    }\n    return set.toList();\n}\n\nvoid TargetUpdateDiscover::finish(int ret)\n{\n    Q_UNUSED(ret);\n    MakefileInfo info;\n    QString text = proc->readAllStandardOutput();\n    info.workingDir = proc->workingDirectory();\n    info.prefixs = findPosiblePrefixes(text);\n    info.allTargets = findAllTargets(text);\n    auto it = info.allTargets.cbegin();\n    while (it != info.allTargets.cend()) {\n        // qDebug() << it.key() << ':' << it.value();\n        ++it;\n    }\n    info.targets = filterTargetHeuristic(info.allTargets.keys());\n    emit updateFinish(info);\n}\n\n"
  },
  {
    "path": "old/targetupdatediscover.h",
    "content": "#ifndef TARGETUPDATEDISCOVER_H\n#define TARGETUPDATEDISCOVER_H\n\n#include <QObject>\n#include <QStringList>\n\n#include \"makefileinfo.h\"\n\nclass QProcess;\n\nclass TargetUpdateDiscover : public QObject\n{\n    Q_OBJECT\npublic:\n    explicit TargetUpdateDiscover(QObject *parent);\n\nsignals:\n    void updateFinish(const MakefileInfo& targets);\n\npublic slots:\n    void start(const QString &project);\n\nprivate slots:\n    void finish(int ret);\n\nprivate:\n    QProcess *proc;\n    QString projectName;\n};\n\n#endif // TARGETUPDATEDISCOVER_H\n"
  },
  {
    "path": "old/templatedownloader.cpp",
    "content": "#include \"templatedownloader.h\"\n\n#include <vector>\n\n#include <QDebug>\n#include <QDir>\n#include <QJsonArray>\n#include <QJsonDocument>\n#include <QJsonObject>\n#include <QMainWindow>\n#include <QMessageBox>\n#include <QProgressDialog>\n#include <QProgressDialog>\n#include <QString>\n#include <QString>\n#include <QUrl>\n#include <QUuid>\n\n#include \"appconfig.h\"\n#include \"filedownloader.h\"\n#include \"templatesdownloadselector.h\"\n\nTemplateDownloader::TemplateDownloader() : QObject(), tmpls_{} {}\n\nvoid TemplateDownloader::requestPendantDownloads() {\n    tmpls_.clear();\n    downloadMetadata();\n}\n\nvoid TemplateDownloader::download() {\n    if (!tmpls_.empty()) {\n        TemplatesDownloadSelector(tmpls_).exec();\n    }\n}\n\nvoid TemplateDownloader::downloadMetadata() {\n    AppConfig& config = AppConfig::mutableInstance();\n    QUrl templateUrl = config.buildTemplateUrl();\n    if (!templateUrl.isValid()) templateUrl = QUrl(config.buildTemplateUrl());\n    if (!templateUrl.isValid()) {\n        if (!isSilent())\n            QMessageBox::critical(\n                    nullptr, QMainWindow::tr(\"Error\"),\n                    QMainWindow::tr(\"No valid URL: %1\").arg(templateUrl.toString()));\n        qDebug() << \"No valid URL:\" << templateUrl.toString();\n        emit finished(false);\n        return;\n    }\n    auto  downloader = new FileDownloader(this);\n    connect(downloader, &FileDownloader::downloadError,\n            [downloader, this](const QString& msg) {\n        if (!isSilent())\n            QMessageBox::critical(nullptr, QMainWindow::tr(\"Network error\"), msg);\n        qDebug() << \"Network error\" << msg;\n        downloader->deleteLater();\n        emit finished(false);\n    });\n    connect(downloader, &FileDownloader::downloadDataFinished,\n            [this](const QUrl&, const QByteArray& data) {\n        QJsonDocument contents = QJsonDocument::fromJson(data);\n        if (!contents.isNull() && contents.isArray()) {\n            for (auto entry : contents.array()) {\n                QJsonObject oEntry{entry.toObject()};\n                QString name{oEntry.value(\"name\").toString()};\n                if (QStringList({\"template\", \"jtemplate\"}).contains(QFileInfo(name).suffix())) {\n                    Template tmpl(name, oEntry.value(\"download_url\").toString(),\n                                  oEntry.value(\"git_url\").toString());\n                    if (tmpl.change() != Template::ChangeType::None) {\n                        tmpls_.emplace_back(tmpl);\n                    }\n                }\n            }\n            if (!tmpls_.empty()) {\n                emit newUpdatesAvailables();\n            }\n        }\n        emit finished(true);\n    });\n    downloader->startDownload(templateUrl);\n}\n"
  },
  {
    "path": "old/templatedownloader.h",
    "content": "#ifndef TEMPLATEDOWNLOADER_H\n#define TEMPLATEDOWNLOADER_H\n\n#include <vector>\n\n#include \"templatesdownloadselector.h\"\n\nclass TemplateDownloader : public QObject\n{\n    Q_OBJECT\npublic:\n    TemplateDownloader();\n\n    bool isSilent() const { return silent_; }\n    void setSilent(bool en) { silent_ = en; }\n\npublic slots:\n    void requestPendantDownloads();\n    void download();\n\nsignals:\n    void newUpdatesAvailables();\n    void finished(bool ok);\n\nprivate:\n    void downloadMetadata();\n\n    std::vector<Template> tmpls_;\n    bool silent_;\n};\n\n#endif // TEMPLATEDOWNLOADER_H\n"
  },
  {
    "path": "old/templatesdownloadselector.cpp",
    "content": "#include \"templatesdownloadselector.h\"\n\n#include <QSettings>\n#include <QFileInfo>\n#include <QDir>\n\n#include \"appconfig.h\"\n#include \"filedownloader.h\"\n\nconst QString& Template::name() const { return name_; }\n\nTemplate::ChangeType Template::change() const { return change_; }\n\nconst QString& Template::download_url() const { return download_url_; }\n\nvoid Template::setAsIgnored() {\n    QSettings s;\n    s.setValue(lastIgnoredKey(), uuid());\n}\n\nvoid Template::setAsDownloaded() {\n    QSettings s;\n    s.setValue(lastDownloadedKey(), uuid());\n}\n\nQString Template::uuid() const {\n    QString id{};\n    int lastSlashIndex{git_url_.lastIndexOf(QChar{'/'})};\n    if (lastSlashIndex != -1) {\n        id = git_url_.right((git_url_.size() - 1) - lastSlashIndex);\n    }\n    return id;\n}\n\nbool Template::isNew() const {\n    QFileInfo f{AppConfig::mutableInstance().buildTemplatePath(), name_};\n    return !f.exists() || (!wasIgnored() && lastDownloadedUuid().isEmpty());\n}\n\nbool Template::isUpdated() const {\n    return !isNew() && !wasIgnored() && uuid() != lastDownloadedUuid();\n}\n\nbool Template::wasIgnored() const { return uuid() == lastIgnoredUuid(); }\n\nQString Template::lastDownloadedKey() const {\n    return \"templates/\" + this->name_ + \"/last_downloaded\";\n}\n\nQString Template::lastIgnoredKey() const {\n    return \"templates/\" + this->name_ + \"/last_ignored\";\n}\n\nQString Template::lastDownloadedUuid() const {\n    return QSettings().value(lastDownloadedKey(), \"\").toString();\n}\n\nQString Template::lastIgnoredUuid() const {\n    return QSettings().value(lastIgnoredKey(), \"\").toString();\n}\n\n#include <QDebug>\n#include <QGraphicsOpacityEffect>\n#include <QMessageBox>\n#include <QToolButton>\n#include <QUrl>\n\nclass TemplateWidget : public QWidget {\n    Q_OBJECT\npublic:\n    explicit TemplateWidget(const QString &style, const Template &t,\n                            QListWidgetItem *item2, QWidget *parent = nullptr);\n    virtual ~TemplateWidget(){}\n    QCheckBox* mutable_selected();\n    QToolButton* mutable_download();\n    const Template& tmpl() const { return tmpl_; }\n    bool isSelected() const { return this->select_->isChecked(); }\n\nsignals:\n    void downloadFinished(QListWidgetItem*);\n    void downloadStart(bool);\n\npublic slots:\n    void onDownloadClicked();\n\nprivate:\n    QCheckBox* select_;\n    QLabel* name_;\n    QToolButton* download_;\n    QGraphicsOpacityEffect* download_fade_;\n    QListWidgetItem* list_widget_item_;\n    Template tmpl_;\n};\n\nTemplateWidget::TemplateWidget(const QString &style, const Template &t,\n                               QListWidgetItem* item, QWidget* parent)\n    : QWidget(parent),\n      select_{new QCheckBox{this}},\n      name_{new QLabel{t.name(), this}},\n      download_{new QToolButton{this}},\n      download_fade_{new QGraphicsOpacityEffect(parent)},\n      list_widget_item_(item),\n      tmpl_{t}\n{\n    QIcon dwn(t.change() == Template::ChangeType::New? \":/images/edit-download.svg\" : \":/images/actions/view-refresh.svg\");\n    download_->setIcon(dwn);\n    select_->setChecked(true);\n    download_fade_->setOpacity(1.0);\n    this->setGraphicsEffect(download_fade_);\n    this->setToolTip(name_->text());\n    select_->setText(\"\");\n    select_->setMaximumWidth(15);\n    name_->setMaximumWidth(220);\n    name_->setMinimumWidth(220);\n    name_->setAlignment(Qt::AlignLeft);\n    name_->setStyleSheet(style);\n    this->setLayout(new QHBoxLayout{this});\n    this->layout()->setSpacing(1);\n    this->layout()->addWidget(select_);\n    this->layout()->addWidget(name_);\n    static_cast<QHBoxLayout*>(this->layout())->addSpacing(120);\n    this->layout()->addWidget(download_);\n    connect(download_, SIGNAL(clicked()), this, SLOT(onDownloadClicked()));\n}\n\nQCheckBox* TemplateWidget::mutable_selected() { return select_; }\n\nQToolButton* TemplateWidget::mutable_download() { return download_; }\n\nvoid TemplateWidget::onDownloadClicked() {\n    this->download_->setEnabled(false);\n    this->select_->setEnabled(false);\n    emit this->downloadStart(false);\n    FileDownloader* downloader = new FileDownloader(this);\n    connect(downloader, &FileDownloader::downloadError,\n            [downloader, this](const QString& msg) {\n        QMessageBox::critical(NULL, QObject::tr(\"Network error\"), msg);\n        downloader->deleteLater();\n        this->download_->setEnabled(true);\n    });\n    connect(downloader, &FileDownloader::downloadProgress,\n            [this](const QUrl&, int percent) {\n        download_fade_->setOpacity(1 - percent / 100.0);\n        this->setGraphicsEffect(download_fade_);\n    });\n    connect(downloader, &FileDownloader::downloadFinished,\n            [this](const QUrl&, const QString&) {\n        this->setVisible(false);\n        const_cast<Template&>(this->tmpl()).setAsDownloaded();\n        emit this->downloadFinished(list_widget_item_);\n    });\n    downloader->startDownload(\n                tmpl().download_url(),\n                AppConfig::mutableInstance().buildTemplatePath() + \"/\" + tmpl_.name());\n}\n\nvoid TemplatesDownloadSelector::reenableMultipleOpButtons(QListWidgetItem*) {\n    setDonwloadAllEnabled(false);\n    ui.checkBox->setEnabled(true);\n}\n\n#include \"templatesdownloadselector.moc\"\n\n#include <QCloseEvent>\n#include <QPropertyAnimation>\n#include <QTimer>\n\nTemplatesDownloadSelector::TemplatesDownloadSelector(\n            const std::vector<Template>& tmpls, QWidget* parent)\n    : QDialog(parent), tmpls_{tmpls} {\n    ui.setupUi(this);\n    for (const auto& tmpl : tmpls) {\n        this->addTemplate(tmpl);\n    }\n    connect(ui.pushButton, SIGNAL(clicked()), this, SLOT(onDownloadAllSelectedClicked()));\n    setAmmountLabels();\n    setUpAmmountLabelsBlinking();\n}\n\nvoid TemplatesDownloadSelector::setUpAmmountLabelsBlinking() {\n    QGraphicsOpacityEffect* newAmmountEffect =\n            new QGraphicsOpacityEffect(ui.newAmmount);\n    newAmmountEffect->setOpacity(1.0);\n    ui.newAmmount->setGraphicsEffect(newAmmountEffect);\n    QGraphicsOpacityEffect* updatedAmmountEffect =\n            new QGraphicsOpacityEffect(ui.updatedAmmount);\n    updatedAmmountEffect->setOpacity(1.0);\n    ui.updatedAmmount->setGraphicsEffect(updatedAmmountEffect);\n    QTimer* blink = new QTimer(this);\n    connect(blink, &QTimer::timeout,\n            [this, newAmmountEffect, updatedAmmountEffect]() {\n        QPropertyAnimation* animation =\n                new QPropertyAnimation(newAmmountEffect, \"opacity\");\n        animation->setDuration(350);\n        QPropertyAnimation* animation2 =\n                new QPropertyAnimation(updatedAmmountEffect, \"opacity\");\n        animation2->setDuration(350);\n        double start = 0.0;\n        double end = 1.0;\n        static bool visible = false;\n        if (!visible) {\n            std::swap(start, end);\n        }\n        visible = !visible;\n        animation->setStartValue(start);\n        animation->setEndValue(end);\n        animation->start(QAbstractAnimation::DeleteWhenStopped);\n        animation2->setStartValue(start);\n        animation2->setEndValue(end);\n        animation2->start(QAbstractAnimation::DeleteWhenStopped);\n    });\n    blink->start(1000);\n}\n\nvoid TemplatesDownloadSelector::setAmmountLabels() {\n    int news{0};\n    int updates{0};\n    for (int i{0}; i < ui.listWidget->count(); ++i) {\n        QListWidgetItem* item{ui.listWidget->item(i)};\n        TemplateWidget* tw{\n            static_cast<TemplateWidget*>(ui.listWidget->itemWidget(item))};\n        if (tw->tmpl().change() == Template::ChangeType::New) {\n            ++news;\n        } else if (tw->tmpl().change() == Template::ChangeType::Update) {\n            ++updates;\n        }\n    }\n    if (news > 0) {\n        ui.newAmmount->setText(QString(tr(\"%1 new\")).arg(news));\n    } else {\n        ui.newAmmount->setText(\"\");\n    }\n    if (updates > 0) {\n        ui.updatedAmmount->setText(QString(tr(\"%1 updated\")).arg(updates));\n    } else {\n        ui.updatedAmmount->setText(\"\");\n    }\n}\n\nvoid TemplatesDownloadSelector::setDonwloadAllEnabled(bool) {\n    bool enabled{false};\n    for (int i = 0; i < ui.listWidget->count(); ++i) {\n        QListWidgetItem* item{ui.listWidget->item(i)};\n        TemplateWidget* tw{\n            static_cast<TemplateWidget*>(ui.listWidget->itemWidget(item))};\n        if (tw->mutable_selected()->isChecked()) {\n            enabled = true;\n        }\n    }\n    ui.pushButton->setEnabled(enabled);\n}\n\nvoid TemplatesDownloadSelector::onDownloadAllSelectedClicked() {\n    ui.checkBox->setEnabled(false);\n    ui.pushButton->setEnabled(false);\n    for (int i = 0; i < ui.listWidget->count(); ++i) {\n        QListWidgetItem* item{ui.listWidget->item(i)};\n        TemplateWidget* tw{\n            static_cast<TemplateWidget*>(ui.listWidget->itemWidget(item))};\n        disconnect(ui.checkBox, SIGNAL(toggled(bool)), tw->mutable_selected(),\n                   SLOT(setChecked(bool)));\n        disconnect(tw->mutable_selected(), SIGNAL(toggled(bool)), this,\n                   SLOT(setDonwloadAllEnabled(bool)));\n        disconnect(tw, SIGNAL(downloadStart(bool)), ui.checkBox,\n                   SLOT(setEnabled(bool)));\n        disconnect(tw, SIGNAL(downloadStart(bool)), ui.pushButton,\n                   SLOT(setEnabled(bool)));\n        disconnect(tw, SIGNAL(downloadFinished(QListWidgetItem*)), this,\n                   SLOT(reenableMultipleOpButtons(QListWidgetItem*)));\n        tw->mutable_selected()->setEnabled(false);\n        tw->mutable_download()->setEnabled(false);\n    }\n    QDir templatePath(QDir::tempPath());\n    if (!templatePath.exists()) {\n        if (!QDir::root().mkpath(templatePath.absolutePath())) {\n            QMessageBox::critical(\n                        NULL, QObject::tr(\"Error\"),\n                        QObject::tr(\"Error creating %1\").arg(templatePath.absolutePath()));\n            return;\n        }\n    }\n    this->downloadAllSelected(nullptr);\n}\n\nvoid TemplatesDownloadSelector::downloadAllSelected(TemplateWidget* current) {\n    TemplateWidget *tw{nextSelected(current)};\n    if (tw) {\n        connect(tw, &TemplateWidget::downloadFinished, [this, tw](QListWidgetItem*) {\n            downloadAllSelected(tw);\n        });\n        tw->onDownloadClicked();\n    } else {\n        this->close();\n    }\n}\n\nTemplateWidget* TemplatesDownloadSelector::nextSelected(\n            TemplateWidget* current) {\n    for (int i = 0; i < ui.listWidget->count(); ++i) {\n        QListWidgetItem* item{ui.listWidget->item(i)};\n        TemplateWidget* tw{\n            static_cast<TemplateWidget*>(ui.listWidget->itemWidget(item))};\n        if (current != tw && tw->mutable_selected()->isChecked()) {\n            return tw;\n        }\n    }\n    return nullptr;\n};\n\nvoid TemplatesDownloadSelector::addTemplate(const Template& tmpl) {\n    QListWidgetItem* item{new QListWidgetItem{}};\n    QString style = tmpl.isNew() ? ui.newAmmount->styleSheet()\n                                 : ui.updatedAmmount->styleSheet();\n    TemplateWidget* tw{new TemplateWidget{style, tmpl, item, this}};\n    item->setSizeHint(tw->minimumSizeHint());\n    ui.listWidget->addItem(item);\n    ui.listWidget->setItemWidget(item, tw);\n    QObject::connect(\n                tw, &TemplateWidget::downloadFinished, [this](QListWidgetItem* tn) {\n        ui.listWidget->itemWidget(tn)->deleteLater();\n        delete tn;\n        for (int i = 0; i < ui.listWidget->count(); ++i) {\n            QListWidgetItem* item{ui.listWidget->item(i)};\n            TemplateWidget* tw{\n                static_cast<TemplateWidget*>(ui.listWidget->itemWidget(item))};\n            connect(tw->mutable_selected(), SIGNAL(toggled(bool)), this,\n                    SLOT(setDonwloadAllEnabled(bool)));\n            tw->mutable_download()->setEnabled(true);\n        }\n    });\n    QObject::connect(tw, &TemplateWidget::downloadStart, [this](bool) {\n        for (int i = 0; i < ui.listWidget->count(); ++i) {\n            QListWidgetItem* item{ui.listWidget->item(i)};\n            TemplateWidget* tw{\n                static_cast<TemplateWidget*>(ui.listWidget->itemWidget(item))};\n            disconnect(tw->mutable_selected(), SIGNAL(toggled(bool)), this,\n                       SLOT(setDonwloadAllEnabled(bool)));\n            tw->mutable_download()->setEnabled(false);\n        }\n        ui.pushButton->setEnabled(false);\n        ui.checkBox->setEnabled(false);\n    });\n    connect(ui.checkBox, SIGNAL(toggled(bool)), tw->mutable_selected(),\n            SLOT(setChecked(bool)));\n    connect(tw->mutable_selected(), SIGNAL(toggled(bool)), this,\n            SLOT(setDonwloadAllEnabled(bool)));\n    connect(tw, SIGNAL(downloadStart(bool)), ui.checkBox, SLOT(setEnabled(bool)));\n    connect(tw, SIGNAL(downloadStart(bool)), ui.pushButton,\n            SLOT(setEnabled(bool)));\n    connect(tw, SIGNAL(downloadFinished(QListWidgetItem*)), this,\n            SLOT(reenableMultipleOpButtons(QListWidgetItem*)));\n    connect(tw, &TemplateWidget::downloadFinished, [this](){\n        this->setAmmountLabels();\n    });\n}\n\nint TemplatesDownloadSelector::exec() {\n    QDir templatePath(AppConfig::mutableInstance().buildTemplatePath());\n    if (!templatePath.exists()) {\n        if (!QDir::root().mkpath(templatePath.absolutePath())) {\n            QMessageBox::critical(this, tr(\"Error\"), tr(\"Error creating %1\")\n                                  .arg(templatePath.absolutePath()));\n            return QDialog::Rejected;\n        }\n    }\n    return QDialog::exec();\n}\n\nvoid TemplatesDownloadSelector::closeEvent(QCloseEvent* event) {\n    for (int i = 0; i < ui.listWidget->count(); ++i) {\n        QListWidgetItem* item{ui.listWidget->item(i)};\n        TemplateWidget* tw{\n            static_cast<TemplateWidget*>(ui.listWidget->itemWidget(item))};\n        if (!tw->isSelected()) {\n            const_cast<Template&>(tw->tmpl()).setAsIgnored();\n        }\n    }\n    event->accept();\n}\n"
  },
  {
    "path": "old/templatesdownloadselector.h",
    "content": "#ifndef TEMPLATESDOWNLOADSELECTOR_H\n#define TEMPLATESDOWNLOADSELECTOR_H\n\n#include \"ui_templatesdownloadselector.h\"\n\n#include <vector>\n\nclass TemplateWidget;\n\nclass Template {\n public:\n  enum class ChangeType { None, New, Update };\n\n  Template(const QString &name, const QString &download_url,\n           const QString &git_url)\n      : name_{name},\n        download_url_{download_url},\n        git_url_{git_url},\n        change_{isNew() ? ChangeType::New : isUpdated() ? ChangeType::Update\n                                                        : ChangeType::None} {}\n  const QString &name() const;\n  ChangeType change() const;\n  const QString &download_url() const;\n  void setAsIgnored();\n  void setAsDownloaded();\n  bool isNew() const;\n\n private:\n  bool isUpdated() const;\n  bool wasIgnored() const;\n  QString uuid() const;\n  QString lastDownloadedKey() const;\n  QString lastIgnoredKey() const;\n  QString lastDownloadedUuid() const;\n  QString lastIgnoredUuid() const;\n\n  QString name_;\n  QString download_url_;\n  QString git_url_;\n  ChangeType change_;\n};\n\nclass TemplatesDownloadSelector : public QDialog {\n  Q_OBJECT\n\n public:\n  explicit TemplatesDownloadSelector(const std::vector<Template> &tmpls,\n                                     QWidget *parent = 0);\n  void addTemplate(const Template &tmpl);\n\n public slots:\n  virtual int exec() override;\n\n protected:\n  virtual void closeEvent(QCloseEvent *event) override;\n\n private slots:\n  void setDonwloadAllEnabled(bool);\n  void onDownloadAllSelectedClicked();\n  void reenableMultipleOpButtons(QListWidgetItem *);\n\n private:\n  void checkForTemplatesChanges();\n  TemplateWidget *nextSelected(TemplateWidget *current);\n  void downloadAllSelected(TemplateWidget *current);\n  void setUpAmmountLabelsBlinking();\n  void setAmmountLabels();\n\n  Ui::TemplatesDownloadSelector ui;\n  std::vector<Template> tmpls_;\n};\n\n#endif  // TEMPLATESDOWNLOADSELECTOR_H\n"
  },
  {
    "path": "old/templatesdownloadselector.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>TemplatesDownloadSelector</class>\n <widget class=\"QDialog\" name=\"TemplatesDownloadSelector\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>453</width>\n    <height>262</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Update project templates</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout_2\">\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QCheckBox\" name=\"checkBox\">\n       <property name=\"text\">\n        <string>All</string>\n       </property>\n       <property name=\"checked\">\n        <bool>true</bool>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n       <item>\n        <widget class=\"QLabel\" name=\"label\">\n         <property name=\"text\">\n          <string>Available updates:</string>\n         </property>\n        </widget>\n       </item>\n       <item>\n        <layout class=\"QHBoxLayout\" name=\"horizontalLayout_2\">\n         <item>\n          <widget class=\"QLabel\" name=\"newAmmount\">\n           <property name=\"styleSheet\">\n            <string notr=\"true\">color: rgb(0, 149, 0);</string>\n           </property>\n           <property name=\"text\">\n            <string>xx new</string>\n           </property>\n          </widget>\n         </item>\n         <item>\n          <spacer name=\"horizontalSpacer_3\">\n           <property name=\"orientation\">\n            <enum>Qt::Horizontal</enum>\n           </property>\n           <property name=\"sizeHint\" stdset=\"0\">\n            <size>\n             <width>40</width>\n             <height>20</height>\n            </size>\n           </property>\n          </spacer>\n         </item>\n         <item>\n          <widget class=\"QLabel\" name=\"updatedAmmount\">\n           <property name=\"styleSheet\">\n            <string notr=\"true\">color: rgb(255, 170, 0);</string>\n           </property>\n           <property name=\"text\">\n            <string>xx updated</string>\n           </property>\n           <property name=\"alignment\">\n            <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>\n           </property>\n          </widget>\n         </item>\n        </layout>\n       </item>\n      </layout>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer_2\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QPushButton\" name=\"pushButton\">\n       <property name=\"text\">\n        <string>Download selected</string>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n   <item>\n    <widget class=\"QListWidget\" name=\"listWidget\"/>\n   </item>\n  </layout>\n </widget>\n <resources/>\n <connections/>\n</ui>\n"
  },
  {
    "path": "old/toolmanager.cpp",
    "content": "#include \"appconfig.h\"\n#include \"toolmanager.h\"\n#include \"ui_toolmanager.h\"\n\n#include <QSettings>\n#include <QStandardItemModel>\n#include <QTextBrowser>\n\n#include <functional>\n\n#include <QtDebug>\n\nToolManager::ToolManager(QWidget *parent) :\n    QDialog(parent),\n    ui(new Ui::ToolManager)\n{\n    ui->setupUi(this);\n    model = new QStandardItemModel(this);\n    ui->itemsTableView->setModel(model);\n}\n\nToolManager::~ToolManager()\n{\n    delete ui;\n}\n\nstatic QList<QStandardItem*> makeItem(const QString& name, const QString& command)\n{\n    QList<QStandardItem*> l{ new QStandardItem(name), new QStandardItem(command) };\n    l[1]->setFont(AppConfig::systemMonoFont());\n    return l;\n}\n\nvoid ToolManager::setTools(const ProjectView::EntryList_t &toolList)\n{\n    model->clear();\n    model->setHorizontalHeaderLabels(QStringList{ tr(\"Name\"), tr(\"Command\") });\n    for(const auto& e: toolList) model->appendRow(makeItem(e.first, e.second.toString()));\n    ui->itemsTableView->resizeColumnsToContents();\n}\n\nvoid ToolManager::on_toolButton_add_clicked()\n{\n    model->appendRow(makeItem(\"\", \"\"));\n}\n\nvoid ToolManager::on_toolButton_del_clicked()\n{\n    QModelIndexList m = ui->itemsTableView->selectionModel()->selectedRows();\n    while (!m.isEmpty()){\n        model->removeRow(m.last().row());\n        m.removeLast();\n    }\n}\n\nvoid ToolManager::on_ToolManager_accepted()\n{\n    QSettings sets;\n    sets.beginGroup(\"tools\");\n    sets.remove(\"\"); // Remove keys in group\n    sets.beginWriteArray(\"external\");\n    for(int row=0; row<model->rowCount(); row++) {\n        sets.setArrayIndex(row);\n        QString key = model->item(row, 0)->text();\n        QString val = model->item(row, 1)->text();\n        sets.setValue(\"name\", key);\n        sets.setValue(\"command\", val);\n    }\n    sets.endArray();\n}\n\nvoid ToolManager::on_toolButton_itemUp_clicked()\n{\n    QModelIndexList m = ui->itemsTableView->selectionModel()->selectedRows();\n    QList<int> selectable;\n    while (!m.isEmpty()) {\n        QModelIndex e = m.last();\n        int toRow = e.row() - 1;\n        if (toRow >= 0) {\n            QList<QStandardItem*> items = model->takeRow(e.row());\n            model->insertRow(toRow, items);\n        }\n        selectable.append(toRow);\n        m.removeLast();\n    }\n    for(auto row: selectable)\n        ui->itemsTableView->selectRow(row);\n}\n\nvoid ToolManager::on_toolButton_itemDown_clicked()\n{\n    QModelIndexList m = ui->itemsTableView->selectionModel()->selectedRows();\n    QList<int> selectable;\n    while (!m.isEmpty()){\n        QModelIndex e = m.last();\n        int toRow = e.row() + 1;\n        if (toRow < model->rowCount()) {\n            QList<QStandardItem*> items = model->takeRow(e.row());\n            model->insertRow(toRow, items);\n        }\n        selectable.append(toRow);\n        m.removeLast();\n    }\n    for(auto row: selectable)\n        ui->itemsTableView->selectRow(row);\n}\n\nvoid ToolManager::on_toolButton_fastHelp_clicked()\n{\n    QDialog d(this);\n    QTextBrowser b(&d);\n    QHBoxLayout h(&d);\n    h.addWidget(&b);\n    auto map = AppConfig::mutableInstance().getVariableMap();\n    QString text;\n    for(auto k: map.keys())\n        text += tr(\"<tr><td>%1</td><td>%2</td></tr>\").arg(k).arg(map[k]);\n    b.setText(tr(\"<html><body>\"\n                 \"<h2></h2>\"\n                 \"<p>\"\n                 \"<table>\"\n                 \"<tr><th>Variable</th><th>Value</th></tr>\"\n                 \"%1</table></body></html>\").arg(text));\n    d.exec();\n}\n"
  },
  {
    "path": "old/toolmanager.h",
    "content": "#ifndef TOOLMANAGER_H\n#define TOOLMANAGER_H\n\n#include <QDialog>\n\n#include \"projectview.h\"\n\nnamespace Ui {\nclass ToolManager;\n}\n\nclass QStandardItemModel;\n\nclass ToolManager : public QDialog\n{\n    Q_OBJECT\n\npublic:\n    explicit ToolManager(QWidget *parent = 0);\n    ~ToolManager();\n\n    void setTools(const ProjectView::EntryList_t &toolList);\n\nprivate slots:\n    void on_toolButton_add_clicked();\n\n    void on_toolButton_del_clicked();\n\n    void on_ToolManager_accepted();\n\n    void on_toolButton_itemUp_clicked();\n\n    void on_toolButton_itemDown_clicked();\n\n    void on_toolButton_fastHelp_clicked();\n\nprivate:\n    Ui::ToolManager *ui;\n    QStandardItemModel *model;\n};\n\n#endif // TOOLMANAGER_H\n"
  },
  {
    "path": "old/toolmanager.ui",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ui version=\"4.0\">\n <class>ToolManager</class>\n <widget class=\"QDialog\" name=\"ToolManager\">\n  <property name=\"geometry\">\n   <rect>\n    <x>0</x>\n    <y>0</y>\n    <width>463</width>\n    <height>351</height>\n   </rect>\n  </property>\n  <property name=\"windowTitle\">\n   <string>Tool Manager</string>\n  </property>\n  <layout class=\"QVBoxLayout\" name=\"verticalLayout\">\n   <item>\n    <widget class=\"QTableView\" name=\"itemsTableView\">\n     <property name=\"selectionBehavior\">\n      <enum>QAbstractItemView::SelectRows</enum>\n     </property>\n     <attribute name=\"horizontalHeaderStretchLastSection\">\n      <bool>true</bool>\n     </attribute>\n     <attribute name=\"verticalHeaderVisible\">\n      <bool>false</bool>\n     </attribute>\n    </widget>\n   </item>\n   <item>\n    <layout class=\"QHBoxLayout\" name=\"horizontalLayout\">\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_add\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"../resources/resources.qrc\">\n         <normaloff>:/images/actions/list-add.svg</normaloff>:/images/actions/list-add.svg</iconset>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_del\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"../resources/resources.qrc\">\n         <normaloff>:/images/actions/dialog-cancel.svg</normaloff>:/images/actions/dialog-cancel.svg</iconset>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_itemUp\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n       <property name=\"arrowType\">\n        <enum>Qt::UpArrow</enum>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_itemDown\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n       <property name=\"arrowType\">\n        <enum>Qt::DownArrow</enum>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <widget class=\"QToolButton\" name=\"toolButton_fastHelp\">\n       <property name=\"sizePolicy\">\n        <sizepolicy hsizetype=\"Preferred\" vsizetype=\"Fixed\">\n         <horstretch>0</horstretch>\n         <verstretch>0</verstretch>\n        </sizepolicy>\n       </property>\n       <property name=\"icon\">\n        <iconset resource=\"../resources/resources.qrc\">\n         <normaloff>:/images/help-about.svg</normaloff>:/images/help-about.svg</iconset>\n       </property>\n      </widget>\n     </item>\n     <item>\n      <spacer name=\"horizontalSpacer\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"sizeHint\" stdset=\"0\">\n        <size>\n         <width>40</width>\n         <height>20</height>\n        </size>\n       </property>\n      </spacer>\n     </item>\n     <item>\n      <widget class=\"QDialogButtonBox\" name=\"buttonBox\">\n       <property name=\"orientation\">\n        <enum>Qt::Horizontal</enum>\n       </property>\n       <property name=\"standardButtons\">\n        <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>\n       </property>\n      </widget>\n     </item>\n    </layout>\n   </item>\n  </layout>\n </widget>\n <resources>\n  <include location=\"../resources/resources.qrc\"/>\n </resources>\n <connections>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>accepted()</signal>\n   <receiver>ToolManager</receiver>\n   <slot>accept()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>248</x>\n     <y>254</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>157</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n  <connection>\n   <sender>buttonBox</sender>\n   <signal>rejected()</signal>\n   <receiver>ToolManager</receiver>\n   <slot>reject()</slot>\n   <hints>\n    <hint type=\"sourcelabel\">\n     <x>316</x>\n     <y>260</y>\n    </hint>\n    <hint type=\"destinationlabel\">\n     <x>286</x>\n     <y>274</y>\n    </hint>\n   </hints>\n  </connection>\n </connections>\n</ui>\n"
  },
  {
    "path": "old/version.cpp",
    "content": "#include \"version.h\"\n\nconst char *VERSION = \"v0.6\";\nconst char *BUILD_DATE = __DATE__ \" \" __TIME__;\n"
  },
  {
    "path": "old/version.h",
    "content": "#ifndef VERSION_H\n#define VERSION_H\n\nextern const char *VERSION;\nextern const char *BUILD_DATE;\n\n#endif // VERSION_H\n"
  },
  {
    "path": "qtshdialog/3rdpart/QJsonModel/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2017 sacha schutz\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "qtshdialog/3rdpart/QJsonModel/QJsonModel.pri",
    "content": "SOURCES += $$PWD/qjsonmodel.cpp\nHEADERS += $$PWD/qjsonmodel.h\nINCLUDEPATH += $$PWD\n"
  },
  {
    "path": "qtshdialog/3rdpart/QJsonModel/QJsonModel.pro",
    "content": "#-------------------------------------------------\n#\n# Project created by QtCreator 2015-01-22T08:20:52\n#\n#-------------------------------------------------\n\nQT       += core gui widgets\nCONFIG   += c++11\nlessThan(QT_MAJOR_VERSION, 5): error(\"requires Qt 5\")\n\nTARGET = QJsonModel\nTEMPLATE = app\n\nSOURCES += \\\n    main.cpp \\\n    qjsonmodel.cpp\n\nHEADERS += \\\n    qjsonmodel.h\n\n\n\n\n"
  },
  {
    "path": "qtshdialog/3rdpart/QJsonModel/README.md",
    "content": "# QJsonModel\nQJsonModel is a json tree model class for Qt5/C++11/Python based on QAbstractItemModel.\nQJsonModel is under MIT License. \n\n![QJsonModel](https://raw.githubusercontent.com/dridk/QJsonmodel/master/screen.png)\n\n## Usage C++\n\nAdd `qjsonmodel.cpp` and `qjsonmodel.h` into your project. \n\n```cpp\nQJsonModel * model = new QJsonModel;\nQTreeView * view = new QTreeView;\nview->setModel(model);\nmodel->load(\"example.json\")\n```\n\n## Usage Python\n\nAdd `qjsonmodel.py` to your `PYTHONPATH`.\n\n```bash\n$ pip install Qt.py\n```\n\n```python\t\nimport json\nimport qjsonmodel\n\nmodel = QJsonModel()\nview = QTreeView()\nview.setModel(model)\n\nwith open(\"example.json\") as f:\n\tmodel.load(json.load(f))\n```\n"
  },
  {
    "path": "qtshdialog/3rdpart/QJsonModel/main.cpp",
    "content": "/***********************************************\n    Copyright (C) 2014  Schutz Sacha\n    This file is part of QJsonModel (https://github.com/dridk/QJsonmodel).\n\n    QJsonModel is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    QJsonModel is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with QJsonModel.  If not, see <http://www.gnu.org/licenses/>.\n\n**********************************************/\n\n#include <QApplication>\n#include <QTreeView>\n#include <QFile>\n#include <string>\n#include \"qjsonmodel.h\"\n\nint main(int argc, char *argv[])\n{\n    QApplication a(argc, argv);\n\n    QTreeView * view   = new QTreeView;\n    QJsonModel * model = new QJsonModel;\n\n    view->setModel(model);\n\n    std::string json = R\"({\n                       \"firstName\": \"John\",\n                       \"lastName\": \"Smith\",\n                       \"age\": 25,\n                       \"address\":\n                       {\n                           \"streetAddress\": \"21 2nd Street\",\n                           \"city\": \"New York\",\n                           \"state\": \"NY\",\n                           \"postalCode\": \"10021\"\n                       },\n                       \"phoneNumber\":\n                       [\n                           {\n                             \"type\": \"home\",\n                             \"number\": \"212 555-1234\"\n                           },\n                           {\n                             \"type\": \"fax\",\n                             \"number\": \"646 555-4567\"\n                           }\n                       ]\n                   })\";\n\n\n\n    model->loadJson(QByteArray::fromStdString(json));\n    view->show();\n\n    return a.exec();\n}\n"
  },
  {
    "path": "qtshdialog/3rdpart/QJsonModel/qjsonmodel.cpp",
    "content": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011 SCHUTZ Sacha\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n#include \"qjsonmodel.h\"\n#include <QFile>\n#include <QDebug>\n#include <QFont>\n\n\nQJsonTreeItem::QJsonTreeItem(QJsonTreeItem *parent)\n{\n    mParent = parent;\n}\n\nQJsonTreeItem::~QJsonTreeItem()\n{\n    qDeleteAll(mChilds);\n}\n\nvoid QJsonTreeItem::appendChild(QJsonTreeItem *item)\n{\n    mChilds.append(item);\n}\n\nQJsonTreeItem *QJsonTreeItem::child(int row)\n{\n    return mChilds.value(row);\n}\n\nQJsonTreeItem *QJsonTreeItem::parent()\n{\n    return mParent;\n}\n\nint QJsonTreeItem::childCount() const\n{\n    return mChilds.count();\n}\n\nint QJsonTreeItem::row() const\n{\n    if (mParent)\n        return mParent->mChilds.indexOf(const_cast<QJsonTreeItem*>(this));\n\n    return 0;\n}\n\nvoid QJsonTreeItem::setKey(const QString &key)\n{\n    mKey = key;\n}\n\nvoid QJsonTreeItem::setValue(const QString &value)\n{\n    mValue = value;\n}\n\nvoid QJsonTreeItem::setType(const QJsonValue::Type &type)\n{\n    mType = type;\n}\n\nQString QJsonTreeItem::key() const\n{\n    return mKey;\n}\n\nQString QJsonTreeItem::value() const\n{\n    return mValue;\n}\n\nQJsonValue::Type QJsonTreeItem::type() const\n{\n    return mType;\n}\n\nQJsonTreeItem* QJsonTreeItem::load(const QJsonValue& value, QJsonTreeItem* parent)\n{\n    QJsonTreeItem * rootItem = new QJsonTreeItem(parent);\n    rootItem->setKey(\"root\");\n\n    if ( value.isObject())\n    {\n\n        //Get all QJsonValue childs\n        for (QString key : value.toObject().keys()){\n            QJsonValue v = value.toObject().value(key);\n            QJsonTreeItem * child = load(v,rootItem);\n            child->setKey(key);\n            child->setType(v.type());\n            rootItem->appendChild(child);\n\n        }\n\n    }\n\n    else if ( value.isArray())\n    {\n        //Get all QJsonValue childs\n        int index = 0;\n        for (QJsonValue v : value.toArray()){\n\n            QJsonTreeItem * child = load(v,rootItem);\n            child->setKey({}); // QString::number(index));\n            child->setType(v.type());\n            rootItem->appendChild(child);\n            ++index;\n        }\n    }\n    else\n    {\n        rootItem->setValue(value.toVariant().toString());\n        rootItem->setType(value.type());\n    }\n\n    return rootItem;\n}\n\n//=========================================================================\n\nQJsonModel::QJsonModel(QObject *parent)\n    : QAbstractItemModel(parent)\n    , mRootItem{new QJsonTreeItem}\n{\n    mHeaders.append(\"key\");\n    mHeaders.append(\"value\");\n}\n\nQJsonModel::QJsonModel(const QString& fileName, QObject *parent)\n    : QAbstractItemModel(parent)\n    , mRootItem{new QJsonTreeItem}\n{\n    mHeaders.append(\"key\");\n    mHeaders.append(\"value\");\n    load(fileName);\n}\n\nQJsonModel::QJsonModel(QIODevice * device, QObject *parent)\n    : QAbstractItemModel(parent)\n    , mRootItem{new QJsonTreeItem}\n{\n    mHeaders.append(\"key\");\n    mHeaders.append(\"value\");\n    load(device);\n}\n\nQJsonModel::QJsonModel(const QByteArray& json, QObject *parent)\n    : QAbstractItemModel(parent)\n    , mRootItem{new QJsonTreeItem}\n{\n    mHeaders.append(\"key\");\n    mHeaders.append(\"value\");\n    loadJson(json);\n}\n\nQJsonModel::~QJsonModel()\n{\n    delete mRootItem;\n}\n\nbool QJsonModel::load(const QString &fileName)\n{\n    QFile file(fileName);\n    bool success = false;\n    if (file.open(QIODevice::ReadOnly)) {\n        success = load(&file);\n        file.close();\n    }\n    else success = false;\n\n    return success;\n}\n\nbool QJsonModel::load(QIODevice *device)\n{\n    return loadJson(device->readAll());\n}\n\nbool QJsonModel::loadJson(const QByteArray &json)\n{\n    QJsonParseError err;\n    auto const& jdoc = QJsonDocument::fromJson(json, &err);\n\n    if (!jdoc.isNull())\n    {\n        beginResetModel();\n        delete mRootItem;\n        if (jdoc.isArray()) {\n            mRootItem = QJsonTreeItem::load(QJsonValue(jdoc.array()));\n            mRootItem->setType(QJsonValue::Array);\n\n        } else {\n            mRootItem = QJsonTreeItem::load(QJsonValue(jdoc.object()));\n            mRootItem->setType(QJsonValue::Object);\n        }\n        endResetModel();\n        return true;\n    }\n    QTextStream(stdout) << err.errorString() << \"\\n\";\n\n    qDebug()<<Q_FUNC_INFO<<\"cannot load json\";\n    return false;\n}\n\n\nQVariant QJsonModel::data(const QModelIndex &index, int role) const\n{\n\n    if (!index.isValid())\n        return QVariant();\n\n\n    QJsonTreeItem *item = static_cast<QJsonTreeItem*>(index.internalPointer());\n\n\n    if (role == Qt::DisplayRole) {\n        if (item->key().isEmpty())\n            return QString(\"%1\").arg(item->value());\n\n        if (index.column() == 0)\n            return QString(\"%1\").arg(item->key());\n\n        if (index.column() == 1)\n            return QString(\"%1\").arg(item->value());\n    } else if (Qt::EditRole == role) {\n        if (index.column() == 1) {\n            return QString(\"%1\").arg(item->value());\n        }\n    }\n\n\n\n    return QVariant();\n\n}\n\nbool QJsonModel::setData(const QModelIndex &index, const QVariant &value, int role)\n{\n    int col = index.column();\n    if (Qt::EditRole == role) {\n        if (col == 1) {\n            QJsonTreeItem *item = static_cast<QJsonTreeItem*>(index.internalPointer());\n                item->setValue(value.toString());\n                emit dataChanged(index, index, {Qt::EditRole});\n                return true;\n        }\n    }\n\n    return false;\n}\n\n\n\nQVariant QJsonModel::headerData(int section, Qt::Orientation orientation, int role) const\n{\n    if (role != Qt::DisplayRole)\n        return QVariant();\n\n    if (orientation == Qt::Horizontal) {\n\n        return mHeaders.value(section);\n    }\n    else\n        return QVariant();\n}\n\nQModelIndex QJsonModel::index(int row, int column, const QModelIndex &parent) const\n{\n    if (!hasIndex(row, column, parent))\n        return QModelIndex();\n\n    QJsonTreeItem *parentItem;\n\n    if (!parent.isValid())\n        parentItem = mRootItem;\n    else\n        parentItem = static_cast<QJsonTreeItem*>(parent.internalPointer());\n\n    QJsonTreeItem *childItem = parentItem->child(row);\n    if (childItem)\n        return createIndex(row, column, childItem);\n    else\n        return QModelIndex();\n}\n\nQModelIndex QJsonModel::parent(const QModelIndex &index) const\n{\n    if (!index.isValid())\n        return QModelIndex();\n\n    QJsonTreeItem *childItem = static_cast<QJsonTreeItem*>(index.internalPointer());\n    QJsonTreeItem *parentItem = childItem->parent();\n\n    if (parentItem == mRootItem)\n        return QModelIndex();\n\n    return createIndex(parentItem->row(), 0, parentItem);\n}\n\nint QJsonModel::rowCount(const QModelIndex &parent) const\n{\n    QJsonTreeItem *parentItem;\n    if (parent.column() > 0)\n        return 0;\n\n    if (!parent.isValid())\n        parentItem = mRootItem;\n    else\n        parentItem = static_cast<QJsonTreeItem*>(parent.internalPointer());\n\n    return parentItem->childCount();\n}\n\nint QJsonModel::columnCount(const QModelIndex &parent) const\n{\n    Q_UNUSED(parent)\n    return 2;\n}\n\nQt::ItemFlags QJsonModel::flags(const QModelIndex &index) const\n{\n    int col   = index.column();\n    auto item = static_cast<QJsonTreeItem*>(index.internalPointer());\n\n    auto isArray = QJsonValue::Array == item->type();\n    auto isObject = QJsonValue::Object == item->type();\n\n    if ((col == 1) && !(isArray || isObject)) {\n        return Qt::ItemIsEditable | QAbstractItemModel::flags(index);\n    } else {\n        return QAbstractItemModel::flags(index);\n    }\n}\n\nQJsonDocument QJsonModel::json() const\n{\n\n    auto v = genJson(mRootItem);\n    QJsonDocument doc;\n\n    if (v.isObject()) {\n        doc = QJsonDocument(v.toObject());\n    } else {\n        doc = QJsonDocument(v.toArray());\n    }\n\n    return doc;\n}\n\nQJsonValue  QJsonModel::genJson(QJsonTreeItem * item) const\n{\n    auto type   = item->type();\n    int  nchild = item->childCount();\n\n    if (QJsonValue::Object == type) {\n        QJsonObject jo;\n        for (int i = 0; i < nchild; ++i) {\n            auto ch = item->child(i);\n            auto key = ch->key();\n            jo.insert(key, genJson(ch));\n        }\n        return  jo;\n    } else if (QJsonValue::Array == type) {\n        QJsonArray arr;\n        for (int i = 0; i < nchild; ++i) {\n            auto ch = item->child(i);\n            arr.append(genJson(ch));\n        }\n        return arr;\n    } else {\n        QJsonValue va(item->value());\n        return va;\n    }\n\n}\n"
  },
  {
    "path": "qtshdialog/3rdpart/QJsonModel/qjsonmodel.h",
    "content": "/*\n * The MIT License (MIT)\n *\n * Copyright (c) 2011 SCHUTZ Sacha\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n\n#ifndef QJSONMODEL_H\n#define QJSONMODEL_H\n\n#include <QAbstractItemModel>\n#include <QJsonDocument>\n#include <QJsonValue>\n#include <QJsonArray>\n#include <QJsonObject>\n#include <QIcon>\n\nclass QJsonModel;\nclass QJsonItem;\n\nclass QJsonTreeItem\n{\npublic:\n    QJsonTreeItem(QJsonTreeItem * parent = nullptr);\n    ~QJsonTreeItem();\n    void appendChild(QJsonTreeItem * item);\n    QJsonTreeItem *child(int row);\n    QJsonTreeItem *parent();\n    int childCount() const;\n    int row() const;\n    void setKey(const QString& key);\n    void setValue(const QString& value);\n    void setType(const QJsonValue::Type& type);\n    QString key() const;\n    QString value() const;\n    QJsonValue::Type type() const;\n\n\n    static QJsonTreeItem* load(const QJsonValue& value, QJsonTreeItem * parent = 0);\n\nprotected:\n\n\nprivate:\n    QString mKey;\n    QString mValue;\n    QJsonValue::Type mType;\n    QList<QJsonTreeItem*> mChilds;\n    QJsonTreeItem * mParent;\n\n\n};\n\n//---------------------------------------------------\n\nclass QJsonModel : public QAbstractItemModel\n{\n    Q_OBJECT\npublic:\n    explicit QJsonModel(QObject *parent = nullptr);\n    QJsonModel(const QString& fileName, QObject *parent = nullptr);\n    QJsonModel(QIODevice * device, QObject *parent = nullptr);\n    QJsonModel(const QByteArray& json, QObject *parent = nullptr);\n    ~QJsonModel();\n    bool load(const QString& fileName);\n    bool load(QIODevice * device);\n    bool loadJson(const QByteArray& json);\n    QVariant data(const QModelIndex &index, int role) const Q_DECL_OVERRIDE;\n    bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) Q_DECL_OVERRIDE;\n    QVariant headerData(int section, Qt::Orientation orientation, int role) const Q_DECL_OVERRIDE;\n    QModelIndex index(int row, int column,const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;\n    QModelIndex parent(const QModelIndex &index) const Q_DECL_OVERRIDE;\n    int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;\n    int columnCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE;\n    Qt::ItemFlags flags(const QModelIndex &index) const Q_DECL_OVERRIDE;\n    QJsonDocument json() const;\n\nprivate:\n    QJsonValue genJson(QJsonTreeItem *) const;\n\n    QJsonTreeItem * mRootItem;\n    QStringList mHeaders;\n\n\n};\n\n#endif // QJSONMODEL_H\n"
  },
  {
    "path": "qtshdialog/3rdpart/QJsonModel/qjsonmodel.py",
    "content": "\"\"\"Python adaptation of https://github.com/dridk/QJsonModel\n\nSupports Python 2 and 3 with PySide, PySide2, PyQt4 or PyQt5.\nRequires https://github.com/mottosso/Qt.py\n\nUsage:\n    Use it like you would the C++ version.\n\n    >>> import qjsonmodel\n    >>> model = qjsonmodel.QJsonModel()\n    >>> model.load({\"key\": \"value\"})\n\nTest:\n    Run the provided example to sanity check your Python,\n    dependencies and Qt binding.\n\n    $ python qjsonmodel.py\n\nChanges:\n    This module differs from the C++ version in the following ways.\n\n    1. Setters and getters are replaced by Python properties\n    2. Objects are sorted by default, disabled via load(sort=False)\n    3. load() takes a Python dictionary as opposed to\n       a string or file handle.\n\n        - To load from a string, use built-in `json.loads()`\n            >>> import json\n            >>> document = json.loads(\"{'key': 'value'}\")\n            >>> model.load(document)\n\n        - To load from a file, use `with open(fname)`\n              >>> import json\n              >>> with open(\"file.json\") as f:\n              ...    document = json.load(f)\n              ...    model.load(document)\n\n\"\"\"\n\nimport json\n\nfrom Qt import QtWidgets, QtCore, __binding__\n\n\nclass QJsonTreeItem(object):\n    def __init__(self, parent=None):\n        self._parent = parent\n\n        self._key = \"\"\n        self._value = \"\"\n        self._type = None\n        self._children = list()\n\n    def appendChild(self, item):\n        self._children.append(item)\n\n    def child(self, row):\n        return self._children[row]\n\n    def parent(self):\n        return self._parent\n\n    def childCount(self):\n        return len(self._children)\n\n    def row(self):\n        return (\n            self._parent._children.index(self)\n            if self._parent else 0\n        )\n\n    @property\n    def key(self):\n        return self._key\n\n    @key.setter\n    def key(self, key):\n        self._key = key\n\n    @property\n    def value(self):\n        return self._value\n\n    @value.setter\n    def value(self, value):\n        self._value = value\n\n    @property\n    def type(self):\n        return self._type\n\n    @type.setter\n    def type(self, typ):\n        self._type = typ\n\n    @classmethod\n    def load(self, value, parent=None, sort=True):\n        rootItem = QJsonTreeItem(parent)\n        rootItem.key = \"root\"\n\n        if isinstance(value, dict):\n            items = (\n                sorted(value.items())\n                if sort else value.items()\n            )\n\n            for key, value in items:\n                child = self.load(value, rootItem)\n                child.key = key\n                child.type = type(value)\n                rootItem.appendChild(child)\n\n        elif isinstance(value, list):\n            for index, value in enumerate(value):\n                child = self.load(value, rootItem)\n                child.key = str(index)\n                child.type = type(value)\n                rootItem.appendChild(child)\n\n        else:\n            rootItem.value = value\n            rootItem.type = type(value)\n\n        return rootItem\n\n\nclass QJsonModel(QtCore.QAbstractItemModel):\n    def __init__(self, parent=None):\n        super(QJsonModel, self).__init__(parent)\n\n        self._rootItem = QJsonTreeItem()\n        self._headers = (\"key\", \"value\")\n\n    def load(self, document):\n        \"\"\"Load from dictionary\n\n        Arguments:\n            document (dict): JSON-compatible dictionary\n\n        \"\"\"\n\n        assert isinstance(document, (dict, list, tuple)), (\n            \"`document` must be of dict, list or tuple, \"\n            \"not %s\" % type(document)\n        )\n\n        self.beginResetModel()\n\n        self._rootItem = QJsonTreeItem.load(document)\n        self._rootItem.type = type(document)\n\n        self.endResetModel()\n\n        return True\n\n    def json(self, root=None):\n        \"\"\"Serialise model as JSON-compliant dictionary\n\n        Arguments:\n            root (QJsonTreeItem, optional): Serialise from here\n                defaults to the the top-level item\n\n        Returns:\n            model as dict\n\n        \"\"\"\n\n        root = root or self._rootItem\n        return self.genJson(root)\n\n    def data(self, index, role):\n        if not index.isValid():\n            return None\n\n        item = index.internalPointer()\n\n        if role == QtCore.Qt.DisplayRole:\n            if index.column() == 0:\n                return item.key\n\n            if index.column() == 1:\n                return item.value\n\n        elif role == QtCore.Qt.EditRole:\n            if index.column() == 1:\n                return item.value\n\n    def setData(self, index, value, role):\n        if role == QtCore.Qt.EditRole:\n            if index.column() == 1:\n                item = index.internalPointer()\n                item.value = str(value)\n\n                if __binding__ in (\"PySide\", \"PyQt4\"):\n                    self.dataChanged.emit(index, index)\n                else:\n                    self.dataChanged.emit(index, index, [QtCore.Qt.EditRole])\n\n                return True\n\n        return False\n\n    def headerData(self, section, orientation, role):\n        if role != QtCore.Qt.DisplayRole:\n            return None\n\n        if orientation == QtCore.Qt.Horizontal:\n            return self._headers[section]\n\n    def index(self, row, column, parent=QtCore.QModelIndex()):\n        if not self.hasIndex(row, column, parent):\n            return QtCore.QModelIndex()\n\n        if not parent.isValid():\n            parentItem = self._rootItem\n        else:\n            parentItem = parent.internalPointer()\n\n        childItem = parentItem.child(row)\n        if childItem:\n            return self.createIndex(row, column, childItem)\n        else:\n            return QtCore.QModelIndex()\n\n    def parent(self, index):\n        if not index.isValid():\n            return QtCore.QModelIndex()\n\n        childItem = index.internalPointer()\n        parentItem = childItem.parent()\n\n        if parentItem == self._rootItem:\n            return QtCore.QModelIndex()\n\n        return self.createIndex(parentItem.row(), 0, parentItem)\n\n    def rowCount(self, parent=QtCore.QModelIndex()):\n        if parent.column() > 0:\n            return 0\n\n        if not parent.isValid():\n            parentItem = self._rootItem\n        else:\n            parentItem = parent.internalPointer()\n\n        return parentItem.childCount()\n\n    def columnCount(self, parent=QtCore.QModelIndex()):\n        return 2\n\n    def flags(self, index):\n        flags = super(QJsonModel, self).flags(index)\n\n        if index.column() == 1:\n            return QtCore.Qt.ItemIsEditable | flags\n        else:\n            return flags\n\n    def genJson(self, item):\n        nchild = item.childCount()\n\n        if item.type is dict:\n            document = {}\n            for i in range(nchild):\n                ch = item.child(i)\n                document[ch.key] = self.genJson(ch)\n            return document\n\n        elif item.type == list:\n            document = []\n            for i in range(nchild):\n                ch = item.child(i)\n                document.append(self.genJson(ch))\n            return document\n\n        else:\n            return item.value\n\n\nif __name__ == '__main__':\n    import sys\n\n    app = QtWidgets.QApplication(sys.argv)\n    view = QtWidgets.QTreeView()\n    model = QJsonModel()\n\n    view.setModel(model)\n\n    document = json.loads(\"\"\"\\\n    {\n        \"firstName\": \"John\",\n        \"lastName\": \"Smith\",\n        \"age\": 25,\n        \"address\": {\n            \"streetAddress\": \"21 2nd Street\",\n            \"city\": \"New York\",\n            \"state\": \"NY\",\n            \"postalCode\": \"10021\"\n        },\n        \"phoneNumber\": [\n            {\n                \"type\": \"home\",\n                \"number\": \"212 555-1234\"\n            },\n            {\n                \"type\": \"fax\",\n                \"number\": \"646 555-4567\"\n            }\n        ]\n    }\n    \"\"\")\n\n    model.load(document)\n    model.clear()\n    model.load(document)\n\n    # Sanity check\n    assert (\n        json.dumps(model.json(), sort_keys=True) ==\n        json.dumps(document, sort_keys=True)\n    )\n\n    view.show()\n    view.resize(500, 300)\n    app.exec_()\n"
  },
  {
    "path": "qtshdialog/main.cpp",
    "content": "/*\n * This file is part of qtshdialog, utility of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include <QAbstractItemView>\n#include <QApplication>\n#include <QDialog>\n#include <QFile>\n#include <QFileDialog>\n#include <QFileInfo>\n#include <QJSEngine>\n#include <QJsonObject>\n#include <QLabel>\n#include <QLayout>\n#include <QMetaProperty>\n#include <QRegularExpression>\n#include <QStandardItemModel>\n#include <QStringListModel>\n#include <QTextStream>\n#include <QTimer>\n#include <QUiLoader>\n#include <QWidget>\n\n#include <cstdio>\n\n#include <qjsonmodel.h>\n\nstatic bool noEmpty = false;\nstatic bool noInternal = false;\nstatic bool noLayout = false;\nstatic bool noLabel = false;\nstatic bool noAll = false;\n\nstatic QStringList propertyList;\n\nstatic QTextStream& out() {\n    static QTextStream sout(stdout);\n    return sout;\n}\n\nQStringList parentsOf(QObject *obj) {\n    QStringList parentList;\n    while (obj) {\n        auto parent = obj->objectName();\n        if (parent.isEmpty())\n            parent = \"<noname>\";\n        parentList.push_front(parent);\n        obj = obj->parent();\n    }\n    return parentList;\n}\n\nvoid printProperty(QObject *obj, const QString& name, const QString& type, const QVariant& value) {\n    if (noInternal && name.startsWith(\"_q_\"))\n        return;\n    auto fullName = (parentsOf(obj) << name).join(\".\");\n    if (noAll && !propertyList.contains(fullName))\n        return;\n\n    endl(out() << \"property:\" << fullName << \"[\" << type << \"]:\" << value.toString());\n}\n\nvoid printProperty(QObject *obj, const QMetaProperty& prop) {\n    auto name = QString{ prop.name() };\n    auto type = QString{ prop.typeName() };\n    auto value = prop.read(obj);\n    printProperty(obj, name, type, value);\n}\n\nvoid dump(QObject *obj) {\n    auto objectName = obj->objectName();\n    if (noEmpty && objectName.isEmpty())\n        return;\n    if (noInternal && objectName.startsWith(\"_q_\"))\n        return;\n    if (noLayout && qobject_cast<QLayout*>(obj))\n        return;\n    if (noLabel && qobject_cast<QLabel*>(obj))\n        return;\n    auto meta = obj->metaObject();\n    for(int i=meta->propertyOffset(); i<meta->propertyCount(); i++) {\n        printProperty(obj, meta->property(i));\n    }\n    for(auto& n: obj->dynamicPropertyNames()) {\n        auto v = obj->property(n.data());\n        auto t = QString(v.typeName());\n        printProperty(obj, n, t, v);\n    }\n    for(auto *c: obj->findChildren<QObject*>())\n        dump(c);\n}\n\nvoid publishToJs(QJSEngine& js, QObject *obj, QJSValue parent) {\n    auto jsObj = js.newQObject(obj);\n    auto name = obj->objectName();\n    if (name.isEmpty())\n        return;\n    parent.setProperty(name, jsObj);\n    for(auto *child: obj->children())\n        publishToJs(js, child, jsObj);\n}\n\nstatic constexpr auto USAGE_HELP = R\"(usage:\n   %1 [options] filename.ui [filename.js]\nOptions:\n  --no-label             Not show QLabel and derived\n  --no-empty             Not show unnamed objects\n  --no-layout            Not show QLayout and derived\n  --no-internal          Not show internal properties\n  --no-all               Not show any properties except specified with --show\n  --show=object.property With --no-all, show sepcified property\n  --exec=expression      Execute script before show ui\nFiles:\n    filename.ui:         Required ui file for gui\n    filename.js:         Optional javascript, execured after all --exec=\n)\";\n\nvoid usage() {\n    auto name = QFileInfo(QApplication::instance()->applicationFilePath()).fileName();\n    flush(out() << QString(USAGE_HELP).arg(name));\n}\n\nstatic QString readAll(const QString& path, bool *ok=nullptr) {\n    QFile f{path};\n    if (!f.open(QFile::ReadOnly)) {\n        if (ok)\n            *ok = false;\n        return f.errorString();\n    }\n    if (ok)\n        *ok = true;\n    return QTextStream{&f}.readAll();\n}\n\nclass Services: public QObject {\n    Q_OBJECT\n\npublic slots:\n\n    void setData(QAbstractItemView *v, const QJsonValue& val)\n    {\n        auto model = new QJsonModel(v);\n        auto str = val.toString();\n        bool loaded = QFileInfo(str).isFile()? model->load(str) : model->loadJson(str.toLocal8Bit());\n        if (!loaded) {\n            out() << \"Error loading json\\n\";\n        } else {\n            v->setModel(model);\n        }\n    }\n\n    QString getOpenFileName(QWidget *parent = nullptr,\n                                   const QString &caption = QString(),\n                                   const QString &dir = QString(),\n                                   const QString &filter = QString())\n    {\n        return QFileDialog::getOpenFileName(parent, caption, dir, filter);\n    }\n\n    QString getSaveFileName(QWidget *parent = nullptr,\n                                   const QString &caption = QString(),\n                                   const QString &dir = QString(),\n                                   const QString &filter = QString())\n    {\n        return QFileDialog::getSaveFileName(parent, caption, dir, filter);\n    }\n\n    QString getExistingDirectory(QWidget *parent = nullptr,\n                                        const QString &caption = QString(),\n                                        const QString &dir = QString())\n    {\n        return QFileDialog::getExistingDirectory(parent, caption, dir);\n    }\n\n    QStringList getOpenFileNames(QWidget *parent = nullptr,\n                                        const QString &caption = QString(),\n                                        const QString &dir = QString(),\n                                        const QString &filter = QString())\n    {\n        return QFileDialog::getOpenFileNames(parent, caption, dir, filter);\n    }\n\n};\n\nint main(int argc, char *argv[])\n{\n    QApplication a(argc, argv);\n    QStringList exprList;\n    QString uiFileName;\n    QString jsFileName;\n    QRegularExpression execRe(R\"(^\\-\\-exec\\=(.*)$)\", QRegularExpression::MultilineOption);\n    for (int i=1; i<argc; i++) {\n        auto p = QString{argv[i]};\n        if (p == \"--no-label\") {\n            noLabel = true;\n        } else if (p == \"--no-empty\") {\n            noEmpty = true;\n        } else if (p == \"--no-layout\") {\n            noLayout = true;\n        } else if (p == \"--no-internal\") {\n            noInternal = true;\n        } else if (p == \"--no-all\") {\n            noAll = true;\n        } else if (QFileInfo{p}.suffix() == \"ui\") {\n            uiFileName = p;\n        } else if (QFileInfo{p}.suffix() == \"js\") {\n            jsFileName = p;\n        } else if (p.startsWith(\"--show=\")) {\n            auto name = p.split(\"=\").at(1);\n            propertyList.append(name);\n        } else {\n            auto m = execRe.match(p);\n            if (m.hasMatch()) {\n                auto expr = m.captured(1);\n                exprList.append(expr);\n            }\n        }\n    }\n\n    if (uiFileName.isEmpty()) {\n        usage();\n        return -1;\n    }\n\n    QFile f{uiFileName};\n    if (!f.open(QFile::ReadOnly)) {\n        endl(out() << \"error open file \" << argv[1] << \": \" << f.errorString());\n        return -1;\n    }\n    QUiLoader loader;\n    auto *w = loader.load(&f);\n    f.close();\n    if (!w) {\n        endl(out() << \"error loading ui: \" << argv[1] << \": \" << loader.errorString());\n        return -1;\n    }\n\n    QJSEngine js;\n    js.installExtensions(QJSEngine::ConsoleExtension);\n    publishToJs(js, w, js.globalObject());\n    js.globalObject().setProperty(\"Services\", js.newQObject(new Services));\n\n    QTimer::singleShot(0, [w, &js, &exprList, &jsFileName]() {\n        for(const auto& e: exprList) {\n            auto r = js.evaluate(e);\n            if (r.isError()) {\n                endl(out() << \"Uncaught exception at --exec\"\n                           << r.property(\"lineNumber\").toInt()\n                           << \":\" << r.toString());\n            }\n        }\n        auto script = w->property(\"script\").toString();\n        if (!script.isEmpty()) {\n            auto result = js.evaluate(script, QString(\"%1.script\").arg(w->objectName()));\n            if (result.isError())\n                endl(out() << \"Uncaught exception at line script:\"\n                           << result.property(\"lineNumber\").toInt()\n                           << \":\" << result.toString());\n        }\n        if (!jsFileName.isEmpty()) {\n            bool ok = false;\n            script = readAll(jsFileName, &ok);\n            if (!ok) {\n                endl(out() << \"Error loading file \" << jsFileName << \": \" << script);\n            } else {\n                auto result = js.evaluate(script, jsFileName);\n                if (result.isError())\n                    endl(out() << \"Uncaught exception at \" << jsFileName << \":\"\n                               << result.property(\"lineNumber\").toInt()\n                               << \":\" << result.toString());\n            }\n        }\n    });\n\n    QDialog *d = qobject_cast<QDialog*>(w);\n    if (d) {\n        a.connect(d, &QDialog::finished, [d](int r) {\n            d->setProperty(\"isAccepted\", bool(r == QDialog::Accepted));\n        });\n    }\n    w->show();\n    auto r = a.exec();\n    w->setProperty(\"script\", {});\n    dump(w);\n    return r;\n}\n\n#include <main.moc>\n"
  },
  {
    "path": "qtshdialog/qtshdialog.pro",
    "content": "#-------------------------------------------------\n#\n# Project created by QtCreator 2019-04-20T20:30:42\n#\n#-------------------------------------------------\nDESTDIR  = ../build\n\nQT       += core gui uitools qml\nCONFIG   -= qml_debug\n\ngreaterThan(QT_MAJOR_VERSION, 4): QT += widgets\n\nTARGET = qtshdialog\nTEMPLATE = app\n\n# The following define makes your compiler emit warnings if you use\n# any feature of Qt which has been marked as deprecated (the exact warnings\n# depend on your compiler). Please consult the documentation of the\n# deprecated API in order to know how to port your code away from it.\nDEFINES += QT_DEPRECATED_WARNINGS\n\n# You can also make your code fail to compile if you use deprecated APIs.\n# In order to do so, uncomment the following line.\n# You can also select to disable deprecated APIs only up to a certain version of Qt.\n#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0\n\nCONFIG += c++11\n\ninclude(3rdpart/QJsonModel/QJsonModel.pri)\n\nSOURCES += \\\n        main.cpp\n\nHEADERS +=\n\nINSTALLS += target\n\nDISTFILES +=\nunix {\n    isEmpty(PREFIX) {\n        PREFIX = /usr\n    }\n    target.path = $$PREFIX/bin\n}\n"
  },
  {
    "path": "socketwaiter/.gitignore",
    "content": "# C++ objects and libs\n\n*.slo\n*.lo\n*.o\n*.a\n*.la\n*.lai\n*.so\n*.dll\n*.dylib\n\n# Qt-es\n\nobject_script.*.Release\nobject_script.*.Debug\n*_plugin_import.cpp\n/.qmake.cache\n/.qmake.stash\n*.pro.user\n*.pro.user.*\n*.qbs.user\n*.qbs.user.*\n*.moc\nmoc_*.cpp\nmoc_*.h\nqrc_*.cpp\nui_*.h\n*.qmlc\n*.jsc\nMakefile*\n*build-*\n\n\n# Qt unit tests\ntarget_wrapper.*\n\n\n# QtCreator\n\n*.autosave\n\n# QtCtreator Qml\n*.qmlproject.user\n*.qmlproject.user.*\n\n# QtCtreator CMake\nCMakeLists.txt.user*\n\n"
  },
  {
    "path": "socketwaiter/LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    {one line to give the program's name and a brief idea of what it does.}\n    Copyright (C) {year}  {name of author}\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <http://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    {project}  Copyright (C) {year}  {fullname}\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<http://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n"
  },
  {
    "path": "socketwaiter/README.md",
    "content": "# socketwaiter\n\nExecute while cannot connect to host:port\n\n### Purponse\n\nGDB target remote need to connect to gdb server like openocd but when you start both process simultaneous, need to wait for variable time with gdb server is alive.\n\nFor this, put in your `.gdbinit`\n\n```\nshell socketwaiter localhost:3333\n```\n\nSuposing if openocd gdb server run in localhost, port 3333\n"
  },
  {
    "path": "socketwaiter/main.cpp",
    "content": "/*\n * This file is part of shocketwaiter, utility of Embedded-IDE\n *\n * Copyright 2019 Martin Ribelotta <martinribelotta@gmail.com>\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program.  If not, see <https://www.gnu.org/licenses/>.\n */\n#include <QtCore>\n#include <QtNetwork>\n#include <QtDebug>\n\nint main(int argc, char *argv[])\n{\n    QCoreApplication app(argc, argv);\n    if (app.arguments().count() < 2) {\n        qDebug() << \"usage\" << app.arguments().at(0) << \" host:port\";\n        return -1;\n    }\n\n    QRegularExpression re(R\"((\\S+)?\\:(\\d+))\");\n    auto m = re.match(app.arguments().at(1));\n    if (!m.hasMatch()) {\n        qDebug() << \"cannot parse\" << app.arguments().at(1);\n        return -1;\n    }\n\n    QString host = m.captured(1);\n    int port = m.captured(2).toInt();\n    if (host.isEmpty()) host= \"localhost\";\n\n    QTcpSocket sock;\n    auto connf = [&sock, host, port]() {\n        qDebug() << \"try to connect to\" << host << port;\n        QTimer::singleShot(1000, [&sock, host, port]() { sock.connectToHost(host, port); });\n    };\n\n    QObject::connect(&sock, &QTcpSocket::connected, [](){\n        qDebug() << \"Connected\";\n        QCoreApplication::instance()->exit(0);\n    });\n    QObject::connect(&sock, static_cast<void(QTcpSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error), connf);\n    QTimer::singleShot(0, connf);\n    return app.exec();\n}\n"
  },
  {
    "path": "socketwaiter/socketwaiter.pro",
    "content": "DESTDIR = ../build\n\nQT += core network\nQT -= gui\n\nTARGET = socketwaiter\nTEMPLATE = app\nINSTALLS += target\n\nSOURCES += \\\n    main.cpp\n\nunix {\n    isEmpty(PREFIX) {\n        PREFIX = /usr\n    }\n    target.path = $$PREFIX/bin\n}\n"
  }
]